From dca28296b19e8cb4744dc12c5aadcc5bf77778b4 Mon Sep 17 00:00:00 2001 From: Sinem Akinci <99284450+sinemakinci1@users.noreply.github.com> Date: Fri, 14 Jul 2023 15:32:55 -0700 Subject: [PATCH 0001/2255] Learn Editor: Update cmake-projects-in-visual-studio.md --- docs/build/cmake-projects-in-visual-studio.md | 6 ++++++ .../screenshot-2023-07-14-153155.png | Bin 0 -> 58875 bytes 2 files changed, 6 insertions(+) create mode 100644 docs/build/media/cmake-projects-in-visual-studio/screenshot-2023-07-14-153155.png diff --git a/docs/build/cmake-projects-in-visual-studio.md b/docs/build/cmake-projects-in-visual-studio.md index 5caf892144e..166fa5ed085 100644 --- a/docs/build/cmake-projects-in-visual-studio.md +++ b/docs/build/cmake-projects-in-visual-studio.md @@ -5,6 +5,7 @@ ms.date: 02/14/2022 helpviewer_keywords: ["CMake in Visual C++"] ms.assetid: 444d50df-215e-4d31-933a-b41841f186f8 --- + # CMake projects in Visual Studio [CMake](https://cmake.org) is a cross-platform, open-source tool for defining build processes that run on multiple platforms. This article assumes you're familiar with CMake. For more information about CMake, see the [CMake documentation](https://cmake.org/cmake/help/latest/index.html#). The [CMake tutorial](https://cmake.org/cmake/help/latest/guide/tutorial/index.html#guide:CMake%20Tutorial) is a good starting point to learn more. @@ -45,6 +46,10 @@ Once CMake cache generation has succeeded, you can also view your projects organ :::image type="content" source="media/cmake-targets-view2.png" alt-text="Screenshot of the Solution Explorer Views window with the C Make Targets View highlighted."::: +Additionally, you can simply switch views by right-clicking on any file or folder in your Solution Explorer and selecting **Switch to CMake Targets View**. + +![Context Menu item to Switch to CMake Targets View.](media/cmake-projects-in-visual-studio/screenshot-2023-07-14-153155.png) + Choose the **Show All Files** button at the top of **Solution Explorer** to see all the CMake-generated output in the *`out/build/`* folders. Use the *`CMakeLists.txt`* file in each project folder just as you would in any CMake project. You can specify source files, find libraries, set compiler and linker options, and specify other build system-related information. For more information on CMake language services provided by Visual Studio, see [Editing CMakeLists.txt files](#editing-cmakeliststxt-files). @@ -400,3 +405,4 @@ In Visual Studio 2015, Visual Studio users can use a [CMake generator](https://c [Configure CMake debugging sessions](configure-cmake-debugging-sessions.md)\ [Deploy, run, and debug your Linux project](../linux/deploy-run-and-debug-your-linux-project.md)\ [CMake predefined configuration reference](cmake-predefined-configuration-reference.md) + diff --git a/docs/build/media/cmake-projects-in-visual-studio/screenshot-2023-07-14-153155.png b/docs/build/media/cmake-projects-in-visual-studio/screenshot-2023-07-14-153155.png new file mode 100644 index 0000000000000000000000000000000000000000..781528af193dde831cddd6a35542f447c9bc7bcb GIT binary patch literal 58875 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 Date: Fri, 14 Jul 2023 15:33:10 -0700 Subject: [PATCH 0002/2255] Learn Editor: Update cmake-projects-in-visual-studio.md From ddc20c94d640ecc7a6e5a9316807f00751d8a13c Mon Sep 17 00:00:00 2001 From: Sinem Akinci <99284450+sinemakinci1@users.noreply.github.com> Date: Mon, 17 Jul 2023 09:05:00 -0700 Subject: [PATCH 0003/2255] Update cmake-projects-in-visual-studio.md Improved alt text and improved wording --- docs/build/cmake-projects-in-visual-studio.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build/cmake-projects-in-visual-studio.md b/docs/build/cmake-projects-in-visual-studio.md index 166fa5ed085..d2237ab4c26 100644 --- a/docs/build/cmake-projects-in-visual-studio.md +++ b/docs/build/cmake-projects-in-visual-studio.md @@ -46,9 +46,9 @@ Once CMake cache generation has succeeded, you can also view your projects organ :::image type="content" source="media/cmake-targets-view2.png" alt-text="Screenshot of the Solution Explorer Views window with the C Make Targets View highlighted."::: -Additionally, you can simply switch views by right-clicking on any file or folder in your Solution Explorer and selecting **Switch to CMake Targets View**. +You can also switch views by right-clicking on any file or folder in your Solution Explorer and selecting **Switch to CMake Targets View**. -![Context Menu item to Switch to CMake Targets View.](media/cmake-projects-in-visual-studio/screenshot-2023-07-14-153155.png) +![This is a picture of the right-clicking on any file or folder in the Solution Explorer and seeing the Context Menu item to Switch to CMake Targets View.](media/cmake-projects-in-visual-studio/screenshot-2023-07-14-153155.png) Choose the **Show All Files** button at the top of **Solution Explorer** to see all the CMake-generated output in the *`out/build/`* folders. From 899b1186e2722425d395c8b5fb15c352bacb9f04 Mon Sep 17 00:00:00 2001 From: Sinem Akinci <99284450+sinemakinci1@users.noreply.github.com> Date: Mon, 17 Jul 2023 10:52:17 -0700 Subject: [PATCH 0004/2255] Update cmake-projects-in-visual-studio.md Improving wordiness --- docs/build/cmake-projects-in-visual-studio.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/cmake-projects-in-visual-studio.md b/docs/build/cmake-projects-in-visual-studio.md index d2237ab4c26..4cc7cae49bf 100644 --- a/docs/build/cmake-projects-in-visual-studio.md +++ b/docs/build/cmake-projects-in-visual-studio.md @@ -48,7 +48,7 @@ Once CMake cache generation has succeeded, you can also view your projects organ You can also switch views by right-clicking on any file or folder in your Solution Explorer and selecting **Switch to CMake Targets View**. -![This is a picture of the right-clicking on any file or folder in the Solution Explorer and seeing the Context Menu item to Switch to CMake Targets View.](media/cmake-projects-in-visual-studio/screenshot-2023-07-14-153155.png) +![A screenshot of the right-clicking on any file or folder in the Solution Explorer and seeing the Context Menu item to Switch to CMake Targets View.](media/cmake-projects-in-visual-studio/screenshot-2023-07-14-153155.png) Choose the **Show All Files** button at the top of **Solution Explorer** to see all the CMake-generated output in the *`out/build/`* folders. From 500ba40c4ba7ba43da9a1f035a83c01427f38bda Mon Sep 17 00:00:00 2001 From: Sinem Akinci <99284450+sinemakinci1@users.noreply.github.com> Date: Mon, 17 Jul 2023 17:03:11 -0700 Subject: [PATCH 0005/2255] Update cmake-projects-in-visual-studio.md --- docs/build/cmake-projects-in-visual-studio.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/cmake-projects-in-visual-studio.md b/docs/build/cmake-projects-in-visual-studio.md index 4cc7cae49bf..7d6d7e88dae 100644 --- a/docs/build/cmake-projects-in-visual-studio.md +++ b/docs/build/cmake-projects-in-visual-studio.md @@ -48,7 +48,7 @@ Once CMake cache generation has succeeded, you can also view your projects organ You can also switch views by right-clicking on any file or folder in your Solution Explorer and selecting **Switch to CMake Targets View**. -![A screenshot of the right-clicking on any file or folder in the Solution Explorer and seeing the Context Menu item to Switch to CMake Targets View.](media/cmake-projects-in-visual-studio/screenshot-2023-07-14-153155.png) +![A screenshot of right-clicking a file or folder in the Solution explorer. The context menu item to Switch to CMake Targets View is visible](media/cmake-projects-in-visual-studio/screenshot-2023-07-14-153155.png) Choose the **Show All Files** button at the top of **Solution Explorer** to see all the CMake-generated output in the *`out/build/`* folders. From b9a44880c782782d63bd7f21288f0b1818872c3a Mon Sep 17 00:00:00 2001 From: Amy Wishnousky Date: Mon, 11 Dec 2023 15:19:29 -0800 Subject: [PATCH 0006/2255] Update asan-known-issues.md Update known issues page to, instead of describe MFC as a one-off incompatibility, describe the heart of the problem that means MFC might miss some errors. --- docs/sanitizers/asan-known-issues.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-known-issues.md b/docs/sanitizers/asan-known-issues.md index cbf822f6b87..7ddd07c5124 100644 --- a/docs/sanitizers/asan-known-issues.md +++ b/docs/sanitizers/asan-known-issues.md @@ -23,7 +23,6 @@ These options and functionality are incompatible with [`/fsanitize=address`](../ - [C++ AMP](../parallel/amp/cpp-amp-overview.md) is unsupported, and should be disabled. - [Universal Windows Platform](../cppcx/universal-windows-apps-cpp.md) (UWP) applications are unsupported. - [Special case list](https://clang.llvm.org/docs/SanitizerSpecialCaseList.html) files are unsupported. -- [MFC](../mfc/mfc-concepts.md) using the optional [`alloc_dealloc_mismatch`](error-alloc-dealloc-mismatch.md) runtime option is unsupported. ## Standard library support @@ -55,6 +54,12 @@ int main() { } ``` +## Overriding operator new and delete + +AddressSanitizer has a custom version of `operator new` and `operator delete` that are used to provide additional metadata about the allocations to ASan to find more errors, like [`alloc_dealloc_mismatch`](error-alloc-dealloc-mismatch.md). The linker is modified (via [`/INFERASANLIBS`](../build/reference/inferasanlibs.md)) to ensure that ASan's `new`/`delete` override has low precedence, so that any `operator new` or `operator delete` overrides in other libraries will be chosen by the linker over ASan's. When this happens, ASan may not be able to catch some errors that rely on it's custom `operator new` and `operator delete`. + +[MFC](../mfc/mfc-concepts.md) includes custom overrides for `operator new` and `operator delete` and may miss errors like [`alloc_dealloc_mismatch`](error-alloc-dealloc-mismatch.md). + ## Windows versions As there are dependencies with specific Windows versions, support is focused on Windows 10. MSVC AddressSanitizer was tested on 10.0.14393 (RS1), and 10.0.21323 (prerelease insider build). [Report a bug](https://aka.ms/feedback/report?space=62) if you run into issues. From 6b2fa95a9d3b7114fc8fb071bd6a05600104db27 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 11 Dec 2023 16:04:06 -0800 Subject: [PATCH 0007/2255] Update asan-known-issues.md little edit pass to hopefully save you some ACROLINX noise. Hopefully doesn't cause new noise... --- docs/sanitizers/asan-known-issues.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/sanitizers/asan-known-issues.md b/docs/sanitizers/asan-known-issues.md index 7ddd07c5124..7439476cb1d 100644 --- a/docs/sanitizers/asan-known-issues.md +++ b/docs/sanitizers/asan-known-issues.md @@ -56,9 +56,9 @@ int main() { ## Overriding operator new and delete -AddressSanitizer has a custom version of `operator new` and `operator delete` that are used to provide additional metadata about the allocations to ASan to find more errors, like [`alloc_dealloc_mismatch`](error-alloc-dealloc-mismatch.md). The linker is modified (via [`/INFERASANLIBS`](../build/reference/inferasanlibs.md)) to ensure that ASan's `new`/`delete` override has low precedence, so that any `operator new` or `operator delete` overrides in other libraries will be chosen by the linker over ASan's. When this happens, ASan may not be able to catch some errors that rely on it's custom `operator new` and `operator delete`. +AddressSanitizer (ASAN) has a custom version of `operator new` and `operator delete` that it uses to help ASAN find more allocation errors like [`alloc_dealloc_mismatch`](error-alloc-dealloc-mismatch.md). Running the linker with [`/INFERASANLIBS`](../build/reference/inferasanlibs.md) ensures that ASan's `new`/`delete` override has low precedence, so that any `operator new` or `operator delete` overrides in other libraries are chosen by the linker over ASan's. When this happens, ASAN may not be able to catch some errors that rely on its custom `operator new` and `operator delete`. -[MFC](../mfc/mfc-concepts.md) includes custom overrides for `operator new` and `operator delete` and may miss errors like [`alloc_dealloc_mismatch`](error-alloc-dealloc-mismatch.md). +[MFC](../mfc/mfc-concepts.md) includes custom overrides for `operator new` and `operator delete` and so might miss errors like [`alloc_dealloc_mismatch`](error-alloc-dealloc-mismatch.md). ## Windows versions From 46fee4d31095d8af2d8c2622374a7c0bf4a46ad2 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 11 Dec 2023 16:06:54 -0800 Subject: [PATCH 0008/2255] Update asan-known-issues.md A little more acrolinx --- docs/sanitizers/asan-known-issues.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/sanitizers/asan-known-issues.md b/docs/sanitizers/asan-known-issues.md index 7439476cb1d..162643f22b5 100644 --- a/docs/sanitizers/asan-known-issues.md +++ b/docs/sanitizers/asan-known-issues.md @@ -1,7 +1,7 @@ --- title: "AddressSanitizer known issues" description: "Technical description of the AddressSanitizer for Microsoft C/C++ known issues." -ms.date: 12/1/2023 +ms.date: 12/11/2023 helpviewer_keywords: ["AddressSanitizer known issues"] --- @@ -56,7 +56,7 @@ int main() { ## Overriding operator new and delete -AddressSanitizer (ASAN) has a custom version of `operator new` and `operator delete` that it uses to help ASAN find more allocation errors like [`alloc_dealloc_mismatch`](error-alloc-dealloc-mismatch.md). Running the linker with [`/INFERASANLIBS`](../build/reference/inferasanlibs.md) ensures that ASan's `new`/`delete` override has low precedence, so that any `operator new` or `operator delete` overrides in other libraries are chosen by the linker over ASan's. When this happens, ASAN may not be able to catch some errors that rely on its custom `operator new` and `operator delete`. +AddressSanitizer (ASAN) has a custom version of `operator new` and `operator delete` that it uses to find more allocation errors like [`alloc_dealloc_mismatch`](error-alloc-dealloc-mismatch.md). Running the linker with [`/INFERASANLIBS`](../build/reference/inferasanlibs.md) ensures that ASAN's `new`/`delete` override has low precedence, so that the linker chooses any `operator new` or `operator delete` overrides in other libraries over ASAN's custom versions. When this happens, ASAN may not be able to catch some errors that rely on its custom `operator new` and `operator delete`. [MFC](../mfc/mfc-concepts.md) includes custom overrides for `operator new` and `operator delete` and so might miss errors like [`alloc_dealloc_mismatch`](error-alloc-dealloc-mismatch.md). From a5929b7cff9eaafe3ba17e15770d1a2ea2a6ecf8 Mon Sep 17 00:00:00 2001 From: Raymond Chen Date: Wed, 10 Jan 2024 14:03:00 -0800 Subject: [PATCH 0009/2255] Use the recommended TRUE value for AfxConnectionAdvise/Unadvise In https://github.com/MicrosoftDocs/cpp-docs-pr/pull/4999 we recommended using TRUE but failed to update the sample to follow the recommendation. --- docs/mfc/codesnippet/CPP/connection-maps_3.cpp | 2 +- docs/mfc/codesnippet/CPP/connection-maps_4.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/mfc/codesnippet/CPP/connection-maps_3.cpp b/docs/mfc/codesnippet/CPP/connection-maps_3.cpp index cffe2a236b3..cab527dac6f 100644 --- a/docs/mfc/codesnippet/CPP/connection-maps_3.cpp +++ b/docs/mfc/codesnippet/CPP/connection-maps_3.cpp @@ -10,4 +10,4 @@ IUnknown* pUnkSink = mysink.GetInterface(&iid); //pUnkSrc is IUnknown of server obtained by CoCreateInstance(). //dwCookie is a cookie identifying the connection, and is needed //to terminate this connection. -AfxConnectionAdvise(pUnkSrc, IID_ISampleSink, pUnkSink, FALSE, &dwCookie); \ No newline at end of file +AfxConnectionAdvise(pUnkSrc, IID_ISampleSink, pUnkSink, TRUE, &dwCookie); \ No newline at end of file diff --git a/docs/mfc/codesnippet/CPP/connection-maps_4.cpp b/docs/mfc/codesnippet/CPP/connection-maps_4.cpp index 7fd1ae018ac..8e5eed54a3a 100644 --- a/docs/mfc/codesnippet/CPP/connection-maps_4.cpp +++ b/docs/mfc/codesnippet/CPP/connection-maps_4.cpp @@ -6,4 +6,4 @@ IUnknown* pUnkSink = mysink.GetInterface(&iid); //Terminate a connection between source and sink. //pUnkSrc is IUnknown of server obtained by CoCreateInstance(). //dwCookie is a value obtained through AfxConnectionAdvise(). -AfxConnectionUnadvise(pUnkSrc, IID_ISampleSink, pUnkSink, FALSE, dwCookie); \ No newline at end of file +AfxConnectionUnadvise(pUnkSrc, IID_ISampleSink, pUnkSink, TRUE, dwCookie); \ No newline at end of file From ef2f3a17a8ccfe28c4af445c15f0dd0886ccd962 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Fri, 17 May 2024 10:07:30 -0700 Subject: [PATCH 0010/2255] update warning tables --- .../compiler-warnings-c4000-through-c4199.md | 34 +-- .../compiler-warnings-c4200-through-c4399.md | 2 +- .../compiler-warnings-c4600-through-c4799.md | 246 +++++++++--------- .../compiler-warnings-c4800-through-c4999.md | 88 +++---- .../compiler-warnings-c5000-through-c5199.md | 38 +-- .../compiler-warnings-c5200-through-c5399.md | 56 ++-- 6 files changed, 232 insertions(+), 232 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4000-through-c4199.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4000-through-c4199.md index 676f0a60ce4..f4d86b4ba37 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c4000-through-c4199.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4000-through-c4199.md @@ -16,8 +16,8 @@ The articles in this section describe Microsoft C/C++ compiler warning messages |-------------|-------------| |Compiler warning C4000|UNKNOWN WARNING
Please choose the Technical Support command on the Visual C++
Help menu, or open the Technical Support help file for more information| |[Compiler warning (level 4, no longer emitted) C4001](compiler-warning-level-4-c4001.md)|nonstandard extension 'single line comment' was used| -|[Compiler warning (level 1, Error) C4002](compiler-warning-level-1-c4002.md)|too many arguments for function-like macro invocation '*identifier*'| -|[Compiler warning (level 1, Error) C4003](compiler-warning-level-1-c4003.md)|not enough arguments for function-like macro invocation '*identifier*'| +|[Compiler warning (level 1, error) C4002](compiler-warning-level-1-c4002.md)|too many arguments for function-like macro invocation '*identifier*'| +|[Compiler warning (level 1, error) C4003](compiler-warning-level-1-c4003.md)|not enough arguments for function-like macro invocation '*identifier*'| |[Compiler warning (level 1) C4005](compiler-warning-level-1-c4005.md)|'*identifier*': macro redefinition| |[Compiler warning (level 1) C4006](compiler-warning-level-1-c4006.md)|`#undef` expected an identifier| |[Compiler warning (level 3) C4007](compiler-warning-level-2-c4007.md)|'*function*': must be '*attribute*'| @@ -28,10 +28,10 @@ The articles in this section describe Microsoft C/C++ compiler warning messages |[Compiler warning (level 3) C4018](compiler-warning-level-3-c4018.md)|'*expression*': signed/unsigned mismatch| |[Compiler warning (level 4) C4019](compiler-warning-level-4-c4019.md)|empty statement at global scope| |[Compiler warning (level 1) C4020](compiler-warning-level-1-c4020.md)|'function': too many actual parameters| -|[Compiler warning (level 1) C4022](compiler-warning-level-1-c4022.md)|'*function*': pointer mismatch for actual parameter '*parameter_number*'| -|Compiler warning (level 1) C4023|'*function*': based pointer passed to unprototyped function: parameter '*parameter_number*'| -|[Compiler warning (level 1) C4024](compiler-warning-level-1-c4024.md)|'*function*': different types for formal and actual parameter '*parameter_number*'| -|[Compiler warning (level 1) C4025](compiler-warning-level-1-c4025.md)|'*function*': based pointer passed to function with variable arguments: parameter '*parameter_number*'| +|[Compiler warning (level 1) C4022](compiler-warning-level-1-c4022.md)|'*function*': pointer mismatch for actual parameter *parameter_number*| +|Compiler warning (level 1) C4023|'*function*': based pointer passed to unprototyped function: parameter *parameter_number*| +|[Compiler warning (level 1) C4024](compiler-warning-level-1-c4024.md)|'*function*': different types for formal and actual parameter *parameter_number*| +|[Compiler warning (level 1) C4025](compiler-warning-level-1-c4025.md)|'*function*': based pointer passed to function with variable arguments: parameter *parameter_number*| |[Compiler warning (level 1) C4026](compiler-warning-level-1-c4026.md)|function declared with formal parameter list| |[Compiler warning (level 1) C4027](compiler-warning-level-1-c4027.md)|function declared without formal parameter list| |[Compiler warning (level 1) C4028](compiler-warning-level-1-c4028.md)|formal parameter *parameter_number* different from declaration| @@ -69,7 +69,7 @@ The articles in this section describe Microsoft C/C++ compiler warning messages |[Compiler warning (level 3) C4073](compiler-warning-level-3-c4073.md)|initializers put in library initialization area| |[Compiler warning (level 1) C4074](compiler-warning-level-1-c4074.md)|initializers put in compiler reserved initialization area| |[Compiler warning (level 1) C4075](compiler-warning-level-1-c4075.md)|initializers put in unrecognized initialization area| -|[Compiler warning (level 1) C4076](compiler-warning-level-1-c4076.md)|'*type_modifier*': can't be used with type '*typename*'| +|[Compiler warning (level 1) C4076](compiler-warning-level-1-c4076.md)|'*type_modifier*': cannot be used with type '*typename*'| |[Compiler warning (level 1) C4077](compiler-warning-level-1-c4077.md)|unknown check_stack option| |[Compiler warning (level 1) C4079](compiler-warning-level-1-c4079.md)|unexpected token '*token*'| |[Compiler warning (level 1) C4080](compiler-warning-level-1-c4080.md)|expected identifier for segment name; found '*symbol*'| @@ -78,8 +78,8 @@ The articles in this section describe Microsoft C/C++ compiler warning messages |[Compiler warning (level 1) C4085](compiler-warning-level-1-c4085.md)|expected pragma parameter to be '`on`' or '`off`'| |[Compiler warning (level 1) C4086](compiler-warning-level-1-c4086.md)|expected pragma parameter to be '1', '2', '4', '8', or '16'| |[Compiler warning (level 1) C4087](compiler-warning-level-1-c4087.md)|'function': declared with '`void`' parameter list| -|[Compiler warning (level 1) C4088](compiler-warning-level-1-c4088.md)|'*function*': pointer mismatch in actual parameter '*parameter_number*', formal parameter '*parameter_number*'| -|[Compiler warning (level 1) C4089](compiler-warning-level-1-c4089.md)|'*function*': different types in actual parameter '*parameter_number*', formal parameter '*parameter_number*'| +|[Compiler warning (level 1) C4088](compiler-warning-level-1-c4088.md)|'*function*': pointer mismatch in actual parameter *parameter_number*, formal parameter *parameter_number*| +|[Compiler warning (level 1) C4089](compiler-warning-level-1-c4089.md)|'*function*': different types in actual parameter *parameter_number*, formal parameter *parameter_number*| |[Compiler warning (level 1) C4090](compiler-warning-level-1-c4090.md)|'*operation*': different '*modifier*' qualifiers| |[Compiler warning (level 1 and level 2) C4091](compiler-warning-level-1-c4091.md)|'*keyword*': ignored on left of '*type*' when no variable is declared| |[Compiler warning (level 4) C4092](compiler-warning-level-4-c4092.md)|sizeof returns 'unsigned long'| @@ -93,7 +93,7 @@ The articles in this section describe Microsoft C/C++ compiler warning messages |[Compiler warning (level 3) C4102](compiler-warning-level-3-c4102.md)|'*label*': unreferenced label| |[Compiler warning (level 1) C4103](compiler-warning-level-1-c4103.md)|alignment changed after including header, may be due to missing `#pragma pack(pop)`| |[Compiler warning (level 1) C4109](compiler-warning-level-1-c4109.md)|unexpected identifier '*identifier*'| -|[Compiler warning (level 1 and level 4) C4112](compiler-warning-levels-1-and-4-c4112.md)|`#line` requires an integer between 1 and '*line_count*'| +|[Compiler warning (level 1 and level 4) C4112](compiler-warning-levels-1-and-4-c4112.md)|`#line` requires an integer between 1 and *line_count*| |[Compiler warning (level 1) C4113](compiler-warning-level-1-c4113.md)|'*identifier1*' differs in parameter lists from '*identifier2*'| |[Compiler warning (level 1) C4114](compiler-warning-level-1-c4114.md)|same type qualifier used more than once| |[Compiler warning (level 1 and level 4) C4115](compiler-warning-levels-1-and-4-c4115.md)|'*type*': named type definition in parentheses| @@ -114,7 +114,7 @@ The articles in this section describe Microsoft C/C++ compiler warning messages |[Compiler warning (level 1 and level 3) C4133](compiler-warning-level-3-c4133.md)|'*expression*': incompatible types - from '*type1*' to '*type2*'| |Compiler warning C4137|'function': no return value from floating-point function| |[Compiler warning (level 1) C4138](compiler-warning-level-1-c4138.md)|'`*/`' found outside of comment| -|[Compiler warning (level 1, Error) C4141](compiler-warning-level-1-c4141.md)|'*modifier*': used more than once| +|[Compiler warning (level 1, error) C4141](compiler-warning-level-1-c4141.md)|'*modifier*': used more than once| |[Compiler warning (level 1) C4142](compiler-warning-level-1-c4142.md)|'*identifier*': benign redefinition of type| |[Compiler warning (level 1) C4143](compiler-warning-level-1-c4143.md)|`pragma` 'same_seg' not supported; use `__based` allocation| |[Compiler warning (level 1) C4144](compiler-warning-level-1-c4144.md)|'*expression*': relational expression as switch expression| @@ -127,10 +127,10 @@ The articles in this section describe Microsoft C/C++ compiler warning messages |[Compiler warning (level 1) C4155](compiler-warning-level-1-c4155.md)|deletion of an array expression without using the array form of 'delete'| |[Compiler warning (level 2) C4156](compiler-warning-level-2-c4156.md)|deletion of an array expression without using the array form of 'delete'; array form substituted| |[Compiler warning (level 1) C4157](compiler-warning-level-1-c4157.md)|pragma was ignored by C compiler| -|[Compiler warning (level 1) C4158](compiler-warning-level-1-c4158.md)|assuming `#pragma pointers_to_members(full_generality, `'*inheritance_type*'`)`| -|[Compiler warning (level 3) C4159](compiler-warning-level-3-c4159.md)|`#pragma `'*pragma*'`(pop,...)`: has popped previously pushed identifier '*identifier*'| -|[Compiler warning (level 1) C4160](compiler-warning-level-1-c4160.md)|`#pragma `'*pragma*'`(pop,...)`: did not find previously pushed identifier '*identifier*'| -|[Compiler warning (level 3) C4161](compiler-warning-level-3-c4161.md)|`#pragma `'*pragma*'`(pop...)`: more pops than pushes| +|[Compiler warning (level 1) C4158](compiler-warning-level-1-c4158.md)|assuming `#pragma pointers_to_members(full_generality, `*inheritance_type*`)`| +|[Compiler warning (level 3) C4159](compiler-warning-level-3-c4159.md)|`#pragma `*pragma*`(pop,...)`: has popped previously pushed identifier '*identifier*'| +|[Compiler warning (level 1) C4160](compiler-warning-level-1-c4160.md)|`#pragma `*pragma*`(pop,...)`: did not find previously pushed identifier '*identifier*'| +|[Compiler warning (level 3) C4161](compiler-warning-level-3-c4161.md)|`#pragma `*pragma*`(pop...)`: more pops than pushes| |[Compiler warning (level 1) C4162](compiler-warning-level-1-c4162.md)|'*identifier*': no function with C linkage found| |[Compiler warning (level 1) C4163](compiler-warning-level-1-c4163.md)|'*identifier*': not available as an intrinsic function| |[Compiler warning (level 1) C4164](compiler-warning-level-1-c4164.md)|'*function*': intrinsic function not declared| @@ -149,8 +149,8 @@ The articles in this section describe Microsoft C/C++ compiler warning messages |Compiler warning C4181|qualifier applied to reference type; ignored| |[Compiler warning (level 1) C4182](compiler-warning-level-1-c4182.md)|`#include` nesting level is *nest_count* deep; possible infinite recursion| |[Compiler warning (level 1) C4183](compiler-warning-level-1-c4183.md)|'*identifier*': missing return type; assumed to be a member function returning '`int`'| -|[Compiler warning (level 1) C4185](compiler-warning-level-1-c4185.md)|ignoring unknown `#import` attribute '*attribute*'| -|[Compiler warning (level 1) C4186](compiler-warning-level-1-c4186.md)|`#`*import* attribute '*attribute*' requires '*argument_count*' arguments; ignored| +|[Compiler warning (level 1) C4185](compiler-warning-level-1-c4185.md)|ignoring unknown `#`*import* attribute '*attribute*'| +|[Compiler warning (level 1) C4186](compiler-warning-level-1-c4186.md)|`#`*import* attribute '*attribute*' requires *argument_count* arguments; ignored| |[Compiler warning (level 1) C4187](compiler-warning-level-1-c4187.md)|`#import` attributes '*attribute1*' and '*attribute2*' are incompatible; both ignored| |Compiler warning (level 1) C4188|constant expression is not integral| |[Compiler warning (level 3 and level 4) C4189](compiler-warning-level-4-c4189.md)|'*identifier*': local variable is initialized but not referenced| diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4200-through-c4399.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4200-through-c4399.md index 276cb8c9c9f..e4696b14652 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c4200-through-c4399.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4200-through-c4399.md @@ -125,7 +125,7 @@ The articles in this section describe Microsoft C/C++ compiler warning messages |[Compiler warning (level 4) C4336](compiler-warning-level-4-c4336.md)|import cross-referenced type library '*library1*' before importing '*library2*'| |[Compiler warning (level 4) C4337](compiler-warning-level-4-c4337.md)|cross-referenced type library '*library1*' in '*library2*' is being automatically imported| |Compiler warning (level 4) C4338|#pragma *directive*: standard section '*section*' is used| -|[Compiler warning (level 4, off) C4339](compiler-warning-level-4-c4339.md)|'*type*': use of undefined type detected in 'WinRT\|CLR' meta-data - use of this type may lead to a runtime exception| +|[Compiler warning (level 4, off) C4339](compiler-warning-level-4-c4339.md)|'*type*': use of undefined type detected in *WinRT/CLR* meta-data - use of this type may lead to a runtime exception| |[Compiler warning (level 1) C4340](compiler-warning-level-1-c4340.md)|'*value*': value wrapped from positive to negative value| |[Compiler warning (level 1, off, no longer emitted) C4342](compiler-warning-level-1-c4342.md)|behavior change: '*function*' called, but a member operator was called in previous versions| |[Compiler warning (level 4) C4343](compiler-warning-level-4-c4343.md)|`#pragma optimize("g",off)` overrides `/Og` option| diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4600-through-c4799.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4600-through-c4799.md index 3bdb97c94b3..a4996432c56 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c4600-through-c4799.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4600-through-c4799.md @@ -15,162 +15,162 @@ The articles in this section describe Microsoft C/C++ compiler warning messages |Warning|Message| |-------------|-------------| -|[Compiler warning (level 1) C4600](../../error-messages/compiler-warnings/compiler-warning-level-1-c4600.md)|#pragma 'macro name': expected a valid non-empty string| -|[Compiler warning (level 1) C4602](compiler-warning-level-1-c4602.md)|#pragma pop_macro: 'macro name' no previous #pragma push_macro for this identifier| +|[Compiler warning (level 1) C4600](compiler-warning-level-1-c4600.md)|`#pragma `'*macro name*': expected a valid non-empty string| +|[Compiler warning (level 1) C4602](compiler-warning-level-1-c4602.md)|`#pragma pop_macro: `'*macro name*' no previous `#pragma push_macro` for this identifier| |[Compiler warning (level 1) C4603](compiler-warning-level-1-c4603.md)|'*identifier*': macro is not defined or definition is different after precompiled header use| -|Compiler warning (level 1) C4604|'*type*': passing argument by value across native and managed boundary requires valid copy constructor. Otherwise the runtime behavior is undefined| -|Compiler warning (level 1) C4605|'/D*macro*' specified on current command line, but was not specified when precompiled header was built| -|[Compiler warning (level 1) C4606](../../error-messages/compiler-warnings/compiler-warning-level-1-c4606.md)|#pragma warning: 'warning number' ignored; Code Analysis warnings are not associated with warning levels| -|[Compiler warning (level 3) C4608](../../error-messages/compiler-warnings/compiler-warning-level-3-c4608.md)|'union_member' has already been initialized by another union member in the initializer list, 'union_member'| -|Compiler warning (level 3, Error) C4609|'*type1*' derives from default interface '*interface*' on type '*type2*'. Use a different default interface for '*type1*', or break the base/derived relationship.| -|[Compiler warning (level 4) C4610](../../error-messages/compiler-warnings/compiler-warning-level-4-c4610.md)|object 'class' can never be instantiated - user defined constructor required| -|[Compiler warning (level 4) C4611](../../error-messages/compiler-warnings/compiler-warning-level-4-c4611.md)|interaction between 'function' and C++ object destruction is non-portable| +|Compiler warning (level 1) C4604|'*type*': passing an argument of this type by value across the native/managed boundary requires the type to be move- or copy-constructible. Otherwise, the runtime behavior is undefined| +|Compiler warning (level 1, off) C4605|'`/D`*macro*' specified on current command line, but was not specified when precompiled header was built| +|[Compiler warning (level 1) C4606](compiler-warning-level-1-c4606.md)|`#pragma warning:` '*warning number*' ignored; Code Analysis warnings are not associated with warning levels| +|[Compiler warning (level 3, off) C4608](compiler-warning-level-3-c4608.md)|Initializing multiple members of union: '*member1*' and '*member2*'| +|Compiler warning (level 3, error) C4609|'*type1*' derives from default interface '*interface*' on type '*type2*'. Use a different default interface for '*type1*', or break the base/derived relationship.| +|[Compiler warning (level 4) C4610](compiler-warning-level-4-c4610.md)|*class* '*name*' can never be instantiated - user defined constructor required| +|[Compiler warning (level 4) C4611](compiler-warning-level-4-c4611.md)|interaction between '*function*' and C++ object destruction is non-portable| |[Compiler warning (level 1) C4612](compiler-warning-level-1-c4612.md)|error in include filename| |[Compiler warning (level 1) C4613](compiler-warning-level-1-c4613.md)|'*symbol*': class of segment cannot be changed| -|[Compiler warning (level 1) C4615](../../error-messages/compiler-warnings/compiler-warning-level-1-c4615.md)|#pragma warning: unknown user warning type| -|[Compiler warning (level 1) C4616](../../error-messages/compiler-warnings/compiler-warning-level-1-c4616.md)|#pragma warning: warning number 'number' not a valid compiler warning| -|[Compiler warning (level 1) C4618](../../error-messages/compiler-warnings/compiler-warning-level-1-c4618.md)|pragma parameters included an empty string; pragma ignored| -|[Compiler warning (level 3) C4619](../../error-messages/compiler-warnings/compiler-warning-level-3-c4619.md)|#pragma warning: there is no warning number 'number'| -|[Compiler warning (level 1) C4620](compiler-warning-level-1-c4620.md)|no postfix form of 'operator ++' found for type 'type', using prefix form| -|[Compiler warning (level 1) C4621](../../error-messages/compiler-warnings/compiler-warning-level-1-c4621.md)|no postfix form of 'operator --' found for type 'type', using prefix form| -|[Compiler warning (level 3) C4622](compiler-warning-level-3-c4622.md)|overwriting debug information formed during creation of the precompiled header in object file: 'file'| -|[Compiler warning (level 4) C4623](../../error-messages/compiler-warnings/compiler-warning-level-4-c4623.md)|'derived class': default constructor was implicitly defined as deleted because a base class default constructor is inaccessible or deleted| -|[Compiler warning (level 1) C4624](../../error-messages/compiler-warnings/compiler-warning-level-1-c4624.md)|'derived class': destructor was implicitly defined as deleted because a base class destructor is inaccessible or deleted| -|[Compiler warning (level 4) C4625](../../error-messages/compiler-warnings/compiler-warning-level-4-c4625.md)|'derived class': copy constructor was implicitly defined as deleted because a base class copy constructor is inaccessible or deleted| -|[Compiler warning (level 4) C4626](../../error-messages/compiler-warnings/compiler-warning-level-4-c4626.md)|'derived class': assignment operator was implicitly defined as deleted because a base class assignment operator is inaccessible or deleted| -|[Compiler warning (level 1) C4627](../../error-messages/compiler-warnings/compiler-warning-level-1-c4627.md)|'\': skipped when looking for precompiled header use| -|[Compiler warning (level 1) C4628](../../error-messages/compiler-warnings/compiler-warning-level-1-c4628.md)|digraphs not supported with -Ze. Character sequence 'digraph' not interpreted as alternate token for '%s'| -|[Compiler warning (level 4) C4629](compiler-warning-level-4-c4629.md)|digraph used, character sequence 'digraph' interpreted as token 'char' (insert a space between the two characters if this is not what you intended)| -|[Compiler warning (level 1) C4630](../../error-messages/compiler-warnings/compiler-warning-level-1-c4630.md)|'symbol': 'extern' storage-class specifier illegal on member definition| -|Compiler warning (level 2) C4631|MSXML or XPath unavailable, XML document comments will not be processed. reason| -|[Compiler warning (level 1) C4632](../../error-messages/compiler-warnings/compiler-warning-level-1-c4632.md)|XML document comment: file - access denied: reason| -|[Compiler warning (level 3) C4633](../../error-messages/compiler-warnings/compiler-warning-level-3-c4633.md)|XML document comment target: error: reason| -|[Compiler warning (level 4) C4634](compiler-warning-level-4-c4634.md)|XML document comment target: cannot be applied: reason| -|[Compiler warning (level 3) C4635](compiler-warning-level-3-c4635.md)|XML document comment target: badly-formed XML: reason| -|[Compiler warning (level 3) C4636](compiler-warning-level-3-c4636.md)|XML document comment applied to construct: tag requires non-empty 'attribute' attribute.| -|[Compiler warning (level 3 and level 4) C4637](compiler-warning-level-3-c4637.md)|XML document comment target: \ tag discarded. Reason| -|[Compiler warning (level 3) C4638](compiler-warning-level-3-c4638.md)|XML document comment target: reference to unknown symbol 'symbol'.| -|[Compiler warning (level 4) C4639](../../error-messages/compiler-warnings/compiler-warning-level-4-c4639.md)|MSXML error, XML document comments will not be processed. Reason| -|[Compiler warning (level 3) C4640](../../error-messages/compiler-warnings/compiler-warning-level-3-c4640.md)|'instance': construction of local static object is not thread-safe| -|[Compiler warning (level 3) C4641](../../error-messages/compiler-warnings/compiler-warning-level-3-c4641.md)|XML document comment has an ambiguous cross reference:| +|[Compiler warning (level 1) C4615](compiler-warning-level-1-c4615.md)|`#pragma warning`: unknown user warning type| +|[Compiler warning (level 1) C4616](compiler-warning-level-1-c4616.md)|`#pragma warning`: warning number '*number*' not a valid compiler warning| +|[Compiler warning (level 1) C4618](compiler-warning-level-1-c4618.md)|pragma parameters included an empty string; pragma ignored| +|[Compiler warning (level 3, off) C4619](compiler-warning-level-3-c4619.md)|`#pragma warning`: there is no warning number '*number*'| +|[Compiler warning (level 1) C4620](compiler-warning-level-1-c4620.md)|no postfix form of '`operator ++`' found for type '*type*', using prefix form| +|[Compiler warning (level 1) C4621](compiler-warning-level-1-c4621.md)|no postfix form of '`operator --`' found for type '*type*', using prefix form| +|[Compiler warning (level 3) C4622](compiler-warning-level-3-c4622.md)|overwriting debug information formed during creation of the precompiled header in object file: '*file*'| +|[Compiler warning (level 1 and level 4, off) C4623](compiler-warning-level-4-c4623.md)|'*derived class*': default constructor was implicitly defined as deleted| +|[Compiler warning (level 1 and level 4) C4624](compiler-warning-level-1-c4624.md)|'*derived class*': destructor was implicitly defined as deleted| +|[Compiler warning (level 1 and level 4, off) C4625](compiler-warning-level-4-c4625.md)|'*derived class*': copy constructor was implicitly defined as deleted| +|[Compiler warning (level 1 and level 4, off) C4626](compiler-warning-level-4-c4626.md)|'*derived class*': assignment operator was implicitly defined as deleted| +|[Compiler warning (level 1, no longer emitted) C4627](compiler-warning-level-1-c4627.md)|'`identifier`': skipped when looking for precompiled header use| +|[Compiler warning (level 1, off) C4628](compiler-warning-level-1-c4628.md)|digraphs not supported with `-Ze`. Character sequence '*digraph*' not interpreted as alternate token for '*token*'| +|[Compiler warning (level 4, no longer emitted) C4629](compiler-warning-level-4-c4629.md)|digraph used, character sequence '*digraph*' interpreted as token '*char*' (insert a space between the two characters if this is not what you intended)| +|[Compiler warning (level 1) C4630](compiler-warning-level-1-c4630.md)|'*symbol*': '*extern*' storage-class specifier illegal on member definition| +|Compiler warning (level 2) C4631|`MSXML` or `XPath` unavailable, XML document comments will not be processed. *reason*| +|[Compiler warning (level 1) C4632](compiler-warning-level-1-c4632.md)|XML document comment: *file* - access denied: *reason*| +|[Compiler warning (level 3 and level 4) C4633](compiler-warning-level-3-c4633.md)|XML document comment *target*: error: *reason*| +|[Compiler warning (level 4) C4634](compiler-warning-level-4-c4634.md)|XML document comment *target*: cannot be applied: *reason*| +|[Compiler warning (level 3 and level 4) C4635](compiler-warning-level-3-c4635.md)|XML document comment *target*: badly-formed XML: *reason*| +|[Compiler warning (level 3) C4636](compiler-warning-level-3-c4636.md)|XML document comment *target*: tag requires non-empty '*attribute*' attribute.| +|[Compiler warning (level 3 and level 4) C4637](compiler-warning-level-3-c4637.md)|XML document comment *target*: `` tag discarded. *Reason*| +|[Compiler warning (level 3) C4638](compiler-warning-level-3-c4638.md)|XML document comment *target*: reference to unknown symbol '*symbol*'.| +|[Compiler warning (level 2) C4639](compiler-warning-level-4-c4639.md)|`MSXML` error, XML document comments will not be processed. *Reason*| +|[Compiler warning (level 3, off) C4640](compiler-warning-level-3-c4640.md)|'*instance*': construction of local static object is not thread-safe| +|[Compiler warning (level 3) C4641](compiler-warning-level-3-c4641.md)|XML document comment has an ambiguous cross reference:| |Compiler warning (level 1) C4642|'*class*': could not import the constraints for generic parameter '*name*'| |Compiler warning (level 4, off) C4643|Forward declaring '*identifier*' in namespace std is not permitted by the C++ Standard.| |Compiler warning (level 1) C4644|usage of the macro-based `offsetof` pattern in constant expressions is non-standard; use `offsetof` defined in the C++ standard library instead| -|[Compiler warning (level 3) C4645](compiler-warning-level-3-c4645.md)|function declared with __declspec(noreturn) has a return statement| -|[Compiler warning (level 3) C4646](compiler-warning-level-3-c4646.md)|function declared with __declspec(noreturn) has non-void return type| -|Compiler warning (level 3) C4647|behavior change: __is_pod(*type*) has different value in previous versions| -|Compiler warning (level 3) C4648|standard attribute 'carries_dependency' is ignored| +|[Compiler warning (level 3) C4645](compiler-warning-level-3-c4645.md)|function declared with '`noreturn`' has a return statement| +|[Compiler warning (level 3) C4646](compiler-warning-level-3-c4646.md)|function declared with '`noreturn`' has non-void return type| +|Compiler warning (level 3, off) C4647|behavior change: `__is_pod(`*type*`)` has different value in previous versions| +|Compiler warning (level 3) C4648|standard attribute `[[`*attribute*`]]` is ignored| |Compiler warning (level 3) C4649|attributes are ignored in this context| -|[Compiler warning (level 1) C4650](../../error-messages/compiler-warnings/compiler-warning-level-1-c4650.md)|debugging information not in precompiled header; only global symbols from the header will be available| -|[Compiler warning (level 1) C4651](../../error-messages/compiler-warnings/compiler-warning-level-1-c4651.md)|'definition' specified for precompiled header but not for current compile| -|[Compiler warning (level 1) C4652](../../error-messages/compiler-warnings/compiler-warning-level-1-c4652.md)|compiler option 'option' inconsistent with precompiled header; current command-line option will override that defined in the precompiled header| -|[Compiler warning (level 2) C4653](../../error-messages/compiler-warnings/compiler-warning-level-2-c4653.md)|compiler option 'option' inconsistent with precompiled header; current command-line option ignored| -|Compiler warning (level 4) C4654|Code placed before include of precompiled header line will be ignored. Add code to precompiled header.| -|[Compiler warning (level 1) C4655](compiler-warning-level-1-c4655.md)|'symbol': variable type is new since the latest build, or is defined differently elsewhere| -|[Compiler warning (level 1) C4656](../../error-messages/compiler-warnings/compiler-warning-level-1-c4656.md)|'symbol': data type is new or has changed since the latest build, or is defined differently elsewhere| +|[Compiler warning (level 1) C4650](compiler-warning-level-1-c4650.md)|debugging information not in precompiled header; only global symbols from the header will be available| +|[Compiler warning (level 1) C4651](compiler-warning-level-1-c4651.md)|'`/D`*definition*' specified for precompiled header but not for current compile| +|[Compiler warning (level 1) C4652](compiler-warning-level-1-c4652.md)|compiler option '*option*' inconsistent with precompiled header; current command-line option will override that defined in the precompiled header| +|[Compiler warning (level 1) C4653](compiler-warning-level-2-c4653.md)|compiler option '*option*' inconsistent with precompiled header; current command-line option ignored| +|Compiler warning (level 4, off) C4654|Code placed before include of precompiled header line will be ignored. Add code to precompiled header.| +|[Compiler warning (level 1) C4655](compiler-warning-level-1-c4655.md)|'*symbol*': variable type is new since the latest build, or is defined differently elsewhere| +|[Compiler warning (level 1) C4656](compiler-warning-level-1-c4656.md)|'*symbol*': data type is new or has changed since the latest build, or is defined differently elsewhere| |[Compiler warning (level 1) C4657](compiler-warning-level-1-c4657.md)|expression involves a data type that is new since the latest build| -|Compiler warning (level 1) C4658|'function': function prototype is new since the latest build, or is declared differently elsewhere| -|[Compiler warning (level 1) C4659](../../error-messages/compiler-warnings/compiler-warning-level-1-c4659.md)|#pragma 'pragma': use of reserved segment 'segment' has undefined behavior, use #pragma comment(linker, ...)| -|[Compiler warning (level 1) C4661](../../error-messages/compiler-warnings/compiler-warning-level-1-c4661.md)|'identifier': no suitable definition provided for explicit template instantiation request| -|[Compiler warning (level 1) C4662](compiler-warning-level-1-c4662.md)|explicit instantiation; template-class 'identifier1' has no definition from which to specialize 'identifier2'| -|[Compiler warning (level 1) C4667](../../error-messages/compiler-warnings/compiler-warning-level-1-c4667.md)|'function': no function template defined that matches forced instantiation| -|[Compiler warning (level 4) C4668](../../error-messages/compiler-warnings/compiler-warning-level-4-c4668.md)|'symbol' is not defined as a preprocessor macro, replacing with '0' for 'directive'| -|[Compiler warning (level 1) C4669](../../error-messages/compiler-warnings/compiler-warning-level-1-c4669.md)|'cast': unsafe conversion: 'class' is a managed type object| -|[Compiler warning (level 4) C4670](compiler-warning-level-4-c4670.md)|'identifier': this base class is inaccessible| -|Compiler warning (level 4) C4671|'identifier': the copy constructor is inaccessible| -|[Compiler warning (level 4) C4672](compiler-warning-level-4-c4672.md)|'identifier1': ambiguous. First seen as 'identifier2'| -|[Compiler warning (level 4) C4673](../../error-messages/compiler-warnings/compiler-warning-level-4-c4673.md)|throwing 'identifier' the following types will not be considered at the catch site| -|[Compiler warning (level 1) C4674](compiler-warning-level-1-c4674.md)|'method' should be declared 'static' and have exactly one parameter| -|Compiler warning (level 4) C4676|'%s': the destructor is inaccessible| -|[Compiler warning (level 1) C4677](../../error-messages/compiler-warnings/compiler-warning-level-1-c4677.md)|'function': signature of non-private member contains assembly private type 'private_type'| -|[Compiler warning (level 1) C4678](compiler-warning-level-1-c4678.md)|base class 'base_type' is less accessible than 'derived_type'| -|[Compiler warning (level 1) C4679](../../error-messages/compiler-warnings/compiler-warning-level-1-c4679.md)|'member': could not import member| -|[Compiler warning (level 4) C4680](../../error-messages/compiler-warnings/compiler-warning-level-4-c4680.md)|'class': coclass does not specify a default interface| -|[Compiler warning (level 4) C4681](compiler-warning-level-4-c4681.md)|'class': coclass does not specify a default interface that is an event source| -|[Compiler warning (level 4) C4682](compiler-warning-level-4-c4682.md)|'parameter': no directional parameter attribute specified, defaulting to [in]| -|[Compiler warning (level 1) C4683](../../error-messages/compiler-warnings/compiler-warning-level-1-c4683.md)|'function': event source has an 'out'-parameter; exercise caution when hooking multiple event handlers| -|[Compiler warning (level 1) C4684](../../error-messages/compiler-warnings/compiler-warning-level-1-c4684.md)|'attribute': WARNING!! attribute may cause invalid code generation: use with caution| -|[Compiler warning (level 1) C4685](compiler-warning-level-1-c4685.md)|expecting '> >' found '>>' when parsing template parameters| -|[Compiler warning (level 3) C4686](../../error-messages/compiler-warnings/compiler-warning-level-3-c4686.md)|'user-defined type': possible change in behavior, change in UDT return calling convention| -|[Compiler warning (Error) C4687](../../error-messages/compiler-warnings/compiler-warning-c4687.md)|'class': a sealed abstract class cannot implement an interface 'interface'| -|[Compiler warning (level 1) C4688](../../error-messages/compiler-warnings/compiler-warning-level-1-c4688.md)|'constraint': constraint list contains assembly private type 'type'| -|Compiler warning (level 1) C4689|'%c': unsupported character in #pragma detect_mismatch; #pragma ignored| -|[Compiler warning (level 4) C4690](../../error-messages/compiler-warnings/compiler-warning-level-4-c4690.md)|[ emitidl( pop ) ]: more pops than pushes| -|[Compiler warning (level 1) C4691](../../error-messages/compiler-warnings/compiler-warning-level-1-c4691.md)|'type': type referenced was expected in unreferenced assembly 'file', type defined in current translation unit used instead| -|[Compiler warning (level 1) C4692](../../error-messages/compiler-warnings/compiler-warning-level-1-c4692.md)|'function': signature of non-private member contains assembly private native type 'native_type'| -|[Compiler warning (level 1, Error) C4693](../../error-messages/compiler-warnings/compiler-warning-c4693.md)|'class': a sealed abstract class cannot have any instance members 'instance member'| -|[Compiler warning (level 1, Error) C4694](../../error-messages/compiler-warnings/compiler-warning-c4694.md)|'class': a sealed abstract class cannot have a base-class 'base_class'| -|Compiler warning (level 1) C4695|#pragma execution_character_set: 'character set' is not a supported argument: currently only 'UTF-8' is supported| -|Compiler warning (level 1) C4696|/ZBvalue1 option out of range; assuming 'value2'| -| [Compiler warning (level 3) C4698](../../error-messages/compiler-warnings/c4698.md) | '*feature*' is for evaluation purposes only and is subject to change or removal in future updates. | -|[Compiler warning (level 1 and level 4) C4700](../../error-messages/compiler-warnings/compiler-warning-level-1-and-level-4-c4700.md)|uninitialized local variable 'name' used| -|[Compiler warning (level 4) C4701](../../error-messages/compiler-warnings/compiler-warning-level-4-c4701.md)|potentially uninitialized local variable 'name' used| -|[Compiler warning (level 4) C4702](../../error-messages/compiler-warnings/compiler-warning-level-4-c4702.md)|unreachable code| -|[Compiler warning (level 4) C4703](../../error-messages/compiler-warnings/compiler-warning-level-4-c4703.md)|potentially uninitialized local pointer variable '%s' used| -|[Compiler warning (level 4) C4706](../../error-messages/compiler-warnings/compiler-warning-level-4-c4706.md)|assignment within conditional expression| -|[Compiler warning (level 4) C4709](../../error-messages/compiler-warnings/compiler-warning-level-4-c4709.md)|comma operator within array index expression| -|[Compiler warning (level 4) C4710](../../error-messages/compiler-warnings/compiler-warning-level-4-c4710.md)|'function': function not inlined| -|[Compiler warning (level 1) C4711](../../error-messages/compiler-warnings/compiler-warning-level-1-c4711.md)|function 'function' selected for automatic inline expansion| -|[Compiler warning (level 4) C4714](../../error-messages/compiler-warnings/compiler-warning-level-4-c4714.md)|function 'function' marked as __forceinline not inlined| -|[Compiler warning (level 1) C4715](../../error-messages/compiler-warnings/compiler-warning-level-1-c4715.md)|'function': not all control paths return a value| -|[Compiler warning (level 1, Error) C4716](../../error-messages/compiler-warnings/compiler-warning-level-1-c4716.md)|'function': must return a value| -|[Compiler warning (level 1) C4717](../../error-messages/compiler-warnings/compiler-warning-level-1-c4717.md)|'function': recursive on all control paths, function will cause runtime stack overflow| +|Compiler warning (level 1) C4658|'*function*': function prototype is new since the latest build, or is declared differently elsewhere| +|[Compiler warning (level 1) C4659](compiler-warning-level-1-c4659.md)|`#pragma `'*pragma*': use of reserved segment '*segment*' has undefined behavior, use `#pragma comment(linker, ...)`| +|[Compiler warning (level 1) C4661](compiler-warning-level-1-c4661.md)|'*identifier*': no suitable definition provided for explicit template instantiation request| +|[Compiler warning (level 1) C4662](compiler-warning-level-1-c4662.md)|explicit instantiation; template-class '*identifier1*' has no definition from which to specialize '*identifier2*'| +|[Compiler warning (level 1) C4667](compiler-warning-level-1-c4667.md)|'*function*': cannot find a function template that matches the explicit instantiation| +|[Compiler warning (level 4, off) C4668](compiler-warning-level-4-c4668.md)|'*symbol*' is not defined as a preprocessor macro, replacing with '`0`' for '*directive*'| +|[Compiler warning (level 1) C4669](compiler-warning-level-1-c4669.md)|'*cast*': unsafe conversion: '*class*' is a *managed/WinRT* type object| +|[Compiler warning (level 4) C4670](compiler-warning-level-4-c4670.md)|'*identifier*': this base class is inaccessible| +|Compiler warning (level 4) C4671|'*identifier*': the copy constructor is inaccessible| +|[Compiler warning (level 4) C4672](compiler-warning-level-4-c4672.md)|'*identifier1*': ambiguous. First seen as '*identifier2*'| +|[Compiler warning (level 4) C4673](compiler-warning-level-4-c4673.md)|throwing '*identifier*' the following types will not be considered at the catch site| +|[Compiler warning (level 1) C4674](compiler-warning-level-1-c4674.md)|'*method*' should be declared '`static`' and have exactly one parameter| +|Compiler warning (level 4) C4676|'*class*': the destructor is inaccessible| +|[Compiler warning (level 1) C4677](compiler-warning-level-1-c4677.md)|'*function*': signature of non-private member contains assembly private type '*private_type*'| +|[Compiler warning (level 1) C4678](compiler-warning-level-1-c4678.md)|base class '*base_type*' is less accessible than '*derived_type*'| +|[Compiler warning (level 1 and level 4) C4679](compiler-warning-level-1-c4679.md)|'*member*': could not import item or its associated custom attribute| +|[Compiler warning (level 4) C4680](compiler-warning-level-4-c4680.md)|'*class*': `coclass` does not specify a default interface| +|[Compiler warning (level 4) C4681](compiler-warning-level-4-c4681.md)|'*class*': `coclass` does not specify a default interface that is an event source| +|[Compiler warning (level 4, off) C4682](compiler-warning-level-4-c4682.md)|'*parameter*': no directional parameter attribute specified, defaulting to `[in]`| +|[Compiler warning (level 1) C4683](compiler-warning-level-1-c4683.md)|'*function*': event source has an 'out'-parameter; exercise caution when hooking multiple event handlers| +|[Compiler warning (level 1) C4684](compiler-warning-level-1-c4684.md)|'*attribute*': WARNING!! attribute may cause invalid code generation: use with caution| +|[Compiler warning (level 1, no longer emitted) C4685](compiler-warning-level-1-c4685.md)|expecting '`> >`' found '`>>`' when parsing template parameters| +|[Compiler warning (level 3, off) C4686](compiler-warning-level-3-c4686.md)|'*user-defined type*': possible change in behavior, change in UDT return calling convention| +|[Compiler warning (level 1, error) C4687](compiler-warning-c4687.md)|'*class*': a sealed abstract class cannot implement an interface '*interface*'| +|[Compiler warning (level 1) C4688](compiler-warning-level-1-c4688.md)|'*constraint*': constraint list contains assembly private type '*type*'| +|Compiler warning (level 1) C4689|'*character*': unsupported character in `#pragma detect_mismatch`; `#pragma` ignored| +|[Compiler warning (level 4) C4690](compiler-warning-level-4-c4690.md)|`[ emitidl( pop ) ]`: more pops than pushes| +|[Compiler warning (level 1) C4691](compiler-warning-level-1-c4691.md)|'*type*': type referenced was expected in unreferenced *assembly* '*file*', type defined in current translation unit used instead| +|[Compiler warning (level 1, off) C4692](compiler-warning-level-1-c4692.md)|'*function*': signature of non-private member contains assembly private native type '*native_type*'| +|[Compiler warning (level 1, error) C4693](compiler-warning-c4693.md)|'*class*': a sealed abstract class cannot have any instance members '*instance member*'| +|[Compiler warning (level 1, error) C4694](compiler-warning-c4694.md)|'*class*': a sealed abstract class cannot have a base-class '*base_class*'| +|Compiler warning (level 1) C4695|`#pragma execution_character_set`: '*character set*' is not a supported argument: currently only '`UTF-8`' is supported| +|Compiler warning (level 1) C4696|`/ZBvalue1` option out of range; assuming 'value2'| +| [Compiler warning (level 3) C4698](c4698.md) | '*feature*' is for evaluation purposes only and is subject to change or removal in future updates. | +|[Compiler warning (level 1 and level 4) C4700](compiler-warning-level-1-and-level-4-c4700.md)|uninitialized local variable 'name' used| +|[Compiler warning (level 4) C4701](compiler-warning-level-4-c4701.md)|potentially uninitialized local variable 'name' used| +|[Compiler warning (level 4) C4702](compiler-warning-level-4-c4702.md)|unreachable code| +|[Compiler warning (level 4) C4703](compiler-warning-level-4-c4703.md)|potentially uninitialized local pointer variable '*identifier*' used| +|[Compiler warning (level 4) C4706](compiler-warning-level-4-c4706.md)|assignment used as a condition| +|[Compiler warning (level 4) C4709](compiler-warning-level-4-c4709.md)|comma operator within array index expression| +|[Compiler warning (level 4, off) C4710](compiler-warning-level-4-c4710.md)|'*function*': function not inlined| +|[Compiler warning (level 1) C4711](compiler-warning-level-1-c4711.md)|function 'function' selected for automatic inline expansion| +|[Compiler warning (level 4) C4714](compiler-warning-level-4-c4714.md)|function '*function*' marked as `__forceinline` not inlined| +|[Compiler warning (level 1) C4715](compiler-warning-level-1-c4715.md)|'function': not all control paths return a value| +|[Compiler warning (level 1, error) C4716](compiler-warning-level-1-c4716.md)|'function': must return a value| +|[Compiler warning (level 1) C4717](compiler-warning-level-1-c4717.md)|'function': recursive on all control paths, function will cause runtime stack overflow| |[Compiler warning (level 4) C4718](compiler-warning-level-4-c4718.md)|'function call': recursive call has no side effects, deleting| |Compiler warning (level 1) C4719|Double constant found when Qfast specified - use 'f' as a suffix to indicate single precision| |Compiler warning (level 2) C4720|in-line assembler reports: 'message'| |Compiler warning (level 1) C4721|'function': not available as an intrinsic| |[Compiler warning (level 1) C4722](compiler-warning-level-1-c4722.md)|'function': destructor never returns, potential memory leak| -|[Compiler warning (level 3) C4723](../../error-messages/compiler-warnings/compiler-warning-level-3-c4723.md)|potential divide by 0| +|[Compiler warning (level 3) C4723](compiler-warning-level-3-c4723.md)|potential divide by 0| |[Compiler warning (level 3) C4724](compiler-warning-level-3-c4724.md)|potential mod by 0| |Compiler warning (level 3) C4725|instruction may be inaccurate on some Pentiums| -|Compiler warning C4726|ARM arch4/4T supports only ' or ' with immediate value| -|[Compiler warning (level 1) C4727](../../error-messages/compiler-warnings/compiler-warning-level-1-c4727.md)|PCH named pch_file with same timestamp found in obj_file_1 and obj_file_2. Using first PCH.| -|Compiler warning (level 1) C4728|/Yl- option ignored because PCH reference is required| +|Compiler warning C4726|ARM arch4/4T supports only '`` or ``' with immediate value| +|[Compiler warning (level 1) C4727](compiler-warning-level-1-c4727.md)|PCH named pch_file with same timestamp found in obj_file_1 and obj_file_2. Using first PCH.| +|Compiler warning (level 1) C4728|`/Yl-` option ignored because PCH reference is required| |Compiler warning (level 4) C4729|function too big for flow graph based warnings| -|[Compiler warning (Level 1) C4730](../../error-messages/compiler-warnings/compiler-warning-level-1-c4730.md)|'main': mixing _m64 and floating point expressions may result in incorrect code| -|[Compiler warning (Level 1) C4731](../../error-messages/compiler-warnings/compiler-warning-level-1-c4731.md)|'pointer': frame pointer register 'register' modified by inline assembly code| -|Compiler warning (level 1) C4732|intrinsic '%s' is not supported in this architecture| -|[Compiler warning (Level 1) C4733](../../error-messages/compiler-warnings/compiler-warning-level-1-c4733.md)|Inline asm assigning to 'FS:0': handler not registered as safe handler| +|[Compiler warning (Level 1) C4730](compiler-warning-level-1-c4730.md)|'main': mixing `_m64` and floating point expressions may result in incorrect code| +|[Compiler warning (Level 1) C4731](compiler-warning-level-1-c4731.md)|'pointer': frame pointer register 'register' modified by inline assembly code| +|Compiler warning (level 1) C4732|intrinsic '*identifier*' is not supported in this architecture| +|[Compiler warning (Level 1) C4733](compiler-warning-level-1-c4733.md)|Inline asm assigning to '`FS:0`': handler not registered as safe handler| |Compiler warning C4734|More than 64k line numbers in a COFF debug info section; stop emitting COFF debug line numbers for module 'module'| |Compiler warning C4735|`align_function` attribute argument '*argument*' is not a power of two and is not positive. Ignoring attribute| |Compiler warning C4736|`align_function` attribute ignored because `/Gy` was not specified| -|[Compiler warning (Level 3) C4738](../../error-messages/compiler-warnings/compiler-warning-level-3-c4738.md)|storing 32-bit float result in memory, possible loss of performance| +|[Compiler warning (Level 3) C4738](compiler-warning-level-3-c4738.md)|storing 32-bit float result in memory, possible loss of performance| |[Compiler warning (level 1) C4739](compiler-warning-level-1-c4739.md)|reference to variable 'var' exceeds its storage space| -|[Compiler warning (Level 4) C4740](../../error-messages/compiler-warnings/compiler-warning-level-4-c4740.md)|flow in or out of inline asm code suppresses global optimization| -|[Compiler warning (Level 1) C4742](../../error-messages/compiler-warnings/compiler-warning-level-1-c4742.md)|'var' has different alignment in 'file1' and 'file2': number and number| -|[Compiler warning (Level 1) C4743](../../error-messages/compiler-warnings/compiler-warning-level-1-c4743.md)|'type' has different size in 'file1' and 'file2': number and number bytes| -|[Compiler warning (Level 1) C4744](../../error-messages/compiler-warnings/compiler-warning-level-1-c4744.md)|'var' has different type in 'file1' and 'file2': 'type1' and 'type2'| +|[Compiler warning (Level 4) C4740](compiler-warning-level-4-c4740.md)|flow in or out of inline asm code suppresses global optimization| +|[Compiler warning (Level 1) C4742](compiler-warning-level-1-c4742.md)|'var' has different alignment in 'file1' and 'file2': number and number| +|[Compiler warning (Level 1) C4743](compiler-warning-level-1-c4743.md)|'type' has different size in 'file1' and 'file2': number and number bytes| +|[Compiler warning (Level 1) C4744](compiler-warning-level-1-c4744.md)|'var' has different type in 'file1' and 'file2': 'type1' and 'type2'| |Compiler warning C4745|volatile access of 'name' cannot be honored due to its size| -|[Compiler warning C4746](../../error-messages/compiler-warnings/compiler-warning-c4746.md)|volatile access of '*expression*' is subject to /volatile:\ setting; consider using __iso_volatile_load/store intrinsic functions| -|[Compiler warning (level 1) C4747](../../error-messages/compiler-warnings/compiler-warning-level-1-c4747.md)|Calling managed 'entrypoint': Managed code may not be run under loader lock, including the DLL entrypoint and calls reached from the DLL entrypoint| -|Compiler warning (level 4) C4749|conditionally supported: offsetof applied to non-standard-layout type '*type*'| -|[Compiler warning (level 1) C4750](compiler-warning-level-1-c4750.md)|'identifier': function with _alloca() inlined into a loop| -|Compiler warning (level 4) C4751|/arch:AVX does not apply to Intel(R) Streaming SIMD Extensions that are within inline ASM| -|Compiler warning (level 4) C4752|found Intel(R) Advanced Vector Extensions; consider using /arch:AVX| +|[Compiler warning C4746](compiler-warning-c4746.md)|volatile access of '*expression*' is subject to `/volatile:` setting; consider using `__iso_volatile_load/store intrinsic functions`| +|[Compiler warning (level 1) C4747](compiler-warning-level-1-c4747.md)|Calling managed 'entrypoint': Managed code may not be run under loader lock, including the DLL entrypoint and calls reached from the DLL entrypoint| +|Compiler warning (level 4, off) C4749|conditionally supported: *message*| +|[Compiler warning (level 1) C4750](compiler-warning-level-1-c4750.md)|'identifier': function with `_alloca()` inlined into a loop| +|Compiler warning (level 4) C4751|`/arch:AVX` does not apply to Intel(R) Streaming SIMD Extensions that are within inline ASM| +|Compiler warning (level 4) C4752|found Intel(R) Advanced Vector Extensions; consider using `/arch:AVX`| |Compiler warning C4753|Cannot find bounds for pointer; MPX intrinsic function ignored| |[Compiler warning (level 4) C4754](compiler-warning-level-4-c4754.md)|Conversion rules for arithmetic operations in the comparison at %s(%d) mean that one branch cannot be executed. Cast '%s' to '%s' (or similar type of %d bytes).| |Compiler warning C4755|Conversion rules for arithmetic operations in the comparison at %s(%d) mean that one branch cannot be executed in an inlined function. Cast '%s' to '%s' (or similar type of %d bytes).| -|[Compiler warning (level 2) C4756](../../error-messages/compiler-warnings/compiler-warning-level-2-c4756.md)|overflow in constant arithmetic| +|[Compiler warning (level 2) C4756](compiler-warning-level-2-c4756.md)|overflow in constant arithmetic| |Compiler warning (level 4) C4757|subscript is a large unsigned value, did you intend a negative constant?| |Compiler warning C4761|integral size mismatch in argument; conversion supplied| |[Compiler warning (level 4) C4764](compiler-warning-level-4-c4764.md)|Can not align catch objects to greater than 16 bytes| -|Compiler warning (level 4) C4767|section name '%s' is longer than 8 characters and will be truncated by the linker| -|[Compiler warning (level 3) C4768](c4768.md)|__declspec attributes before linkage specification are ignored| +|Compiler warning (level 4, off) C4767|section name '%s' is longer than 8 characters and will be truncated by the linker| +|[Compiler warning (level 3, off) C4768](c4768.md)|`__declspec` attributes before linkage specification are ignored| | [Compiler warning (level 4) C4770](./c4770.md) | partially validated enum '*name*' used as index | |Compiler warning C4771|Bounds must be created using a simple pointer; MPX intrinsic function ignored| -|[Compiler warning (level 1, Error) C4772](../../error-messages/compiler-warnings/compiler-warning-level-1-c4772.md)|#import referenced a type from a missing type library; 'missing_type' used as a placeholder| -|Compiler warning (level 4) C4774|'*string*' : format string expected in argument *number* is not a string literal| +|[Compiler warning (level 1, error) C4772](compiler-warning-level-1-c4772.md)|`#import` referenced a type from a missing type library; '*missing_type*' used as a placeholder| +|Compiler warning (level 4, off) C4774|'*string*' : format string expected in argument *number* is not a string literal| |Compiler warning (level 3) C4775|nonstandard extension used in format string '*string*' of function '*function*'| -|Compiler warning (level 1) C4776|'%*character*' is not allowed in the format string of function '*function*'| -|Compiler warning (level 4) C4777|'*function*' : format string '*string*' requires an argument of type '*type1*', but variadic argument *number* has type '*type2*'| +|Compiler warning (level 1) C4776|'`%`*character*' is not allowed in the format string of function '*function*'| +|Compiler warning (level 4, off) C4777|'*function*' : format string '*string*' requires an argument of type '*type1*', but variadic argument *number* has type '*type2*'| |Compiler warning (level 3) C4778|'*function*' : unterminated format string '*string*'| -|[Compiler warning (Level 1) C4788](../../error-messages/compiler-warnings/compiler-warning-level-1-c4788.md)|'identifier': identifier was truncated to 'number' characters| -|[Compiler warning (Level 1) C4789](../../error-messages/compiler-warnings/compiler-warning-level-1-c4789.md)|buffer 'identifier' of size N bytes will be overrun; M bytes will be written starting at offset L| -|Compiler warning (level 2) C4792|function '%s' declared using sysimport and referenced from native code; import library required to link| -|[Compiler warning (level 1 and 3) C4793](../../error-messages/compiler-warnings/compiler-warning-level-1-and-3-c4793.md)|'function': function compiled as native: 'reason'| +|[Compiler warning (Level 1) C4788](compiler-warning-level-1-c4788.md)|'identifier': identifier was truncated to 'number' characters| +|[Compiler warning (Level 1) C4789](compiler-warning-level-1-c4789.md)|buffer 'identifier' of size N bytes will be overrun; M bytes will be written starting at offset L| +|Compiler warning (level 2) C4792|function '%s' declared using `sysimport` and referenced from native code; import library required to link| +|[Compiler warning (level 1 and level 3) C4793](compiler-warning-level-1-and-3-c4793.md)|'*function*': function compiled as native:
*reason*| |[Compiler warning (level 1) C4794](compiler-warning-level-1-c4794.md)|segment of thread local storage variable '%s' changed from '%s' to '%s'| |Compiler warning C4798|native code generated for p-code function 'name' with exception handler or unwind semantics| -|[Compiler warning (level 1) C4799](../../error-messages/compiler-warnings/compiler-warning-level-1-c4799.md)|function 'function' has no EMMS instruction| +|[Compiler warning (level 1) C4799](compiler-warning-level-1-c4799.md)|function 'function' has no `EMMS` instruction| ## See also diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4800-through-c4999.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4800-through-c4999.md index 8d8e2533eed..b6b193531b9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c4800-through-c4999.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4800-through-c4999.md @@ -24,124 +24,124 @@ The articles in this section describe Microsoft C/C++ compiler warning messages | [Compiler warning (level 1) C4807](compiler-warning-level-1-c4807.md) | '*operation*': unsafe mix of type '*type1*' and signed bit field of type '*type2*' | | Compiler warning (level 1) C4808 | `case` '*value*' is not a valid value for `switch` condition of type '`bool`' | | Compiler warning (level 1) C4809 | `switch` statement has redundant '`default`' label; all possible '`case`' labels are given | -| [Compiler warning (level 1) C4810](compiler-warning-level-1-c4810.md) | value of `pragma pack(show)` == n | +| [Compiler warning (level 1) C4810](compiler-warning-level-1-c4810.md) | value of `pragma pack(show)` == *number* | | [Compiler warning (level 1) C4811](compiler-warning-level-1-c4811.md) | value of `pragma conform(forScope, show)` == *value* | | [Compiler warning (level 1) C4812](compiler-warning-level-1-c4812.md) | obsolete declaration style: please use '*new_syntax*' instead | | [Compiler warning (level 1) C4813](compiler-warning-level-1-c4813.md) | '*function*': a friend function of a local class must have been previously declared | | Compiler warning (level 4) C4815 | '*object name*': zero-sized array in stack object will have no elements (unless the object is an aggregate that has been aggregate initialized) | | [Compiler warning (level 4) C4816](compiler-warning-level-4-c4816.md) | '*param*': parameter has a zero-sized array which will be truncated (unless the object is passed by reference) | -| [Compiler warning (level 1) C4817](compiler-warning-level-1-c4817.md) | '*member*': illegal use of '.' to access this member; compiler replaced with '->' | -| [Compiler warning (level 1) C4819](compiler-warning-level-1-c4819.md) | The file contains a character that cannot be represented in the current code page (number). Save the file in Unicode format to prevent data loss | -| [Compiler warning (level 4, off) C4820](compiler-warning-level-4-c4820.md) | '*bytes*' bytes padding added after construct '*member_name*' | +| [Compiler warning (level 1) C4817](compiler-warning-level-1-c4817.md) | '*member*': illegal use of '`.`' to access this member; compiler replaced with '`->`' | +| [Compiler warning (level 1) C4819](compiler-warning-level-1-c4819.md) | The file contains a character that cannot be represented in the current code page (*number*). Save the file in Unicode format to prevent data loss | +| [Compiler warning (level 4, off) C4820](compiler-warning-level-4-c4820.md) |'*type*': '*bytes*' bytes padding added after *class* '*member_name*'| | [Compiler warning (level 1) C4821](compiler-warning-level-1-c4821.md) | Unable to determine Unicode encoding type, please save the file with signature (BOM) | -| [Compiler warning (level 1, off) C4822](compiler-warning-level-1-c4822.md) | 'member function': local class member function does not have a body | +| [Compiler warning (level 4, off) C4822](compiler-warning-level-1-c4822.md) | '*member function*': local class member function does not have a body | | [Compiler warning (level 3) C4823](compiler-warning-level-3-c4823.md) | '*function*': uses pinning pointers but unwind semantics are not enabled. Consider using `/EHa` | | Compiler warning (level 2, off) C4826 | Conversion from '*type1*' to '*type2*' is sign-extended. This may cause unexpected runtime behavior. | | Compiler warning (level 3) C4827 | A public '`ToString`' method with 0 parameters should be marked as `virtual` and `override` | -| Compiler warning (level 1) C4828 | The file contains a character starting at offset 0x*HexOffset* that is illegal in the current source character set (codepage *codepage*). | +| Compiler warning (level 1) C4828 | The file contains a character starting at offset `0x`*HexOffset* that is illegal in the current source character set (codepage *codepage*). | | [Compiler warning (level 1) C4829](compiler-warning-level-1-c4829.md) | Possibly incorrect parameters to function `main`. Consider '`int main(Platform::Array^ argv)`' | -| [Compiler warning (level 1) C4834](c4834.md) | discarding return value of function with 'nodiscard' attribute | +| [Compiler warning (level 1) C4834](c4834.md) |discarding return value of function with `[[nodiscard]]` attribute| | [Compiler warning (level 1) C4835](compiler-warning-level-1-c4835.md) | '*variable*': the initializer for exported data will not be run until managed code is first executed in the host assembly | | Compiler warning (level 4, off) C4837 | trigraph detected: '`??`*character*' replaced by '*character*' | | [Compiler warning (level 1) C4838](compiler-warning-level-1-c4838.md) | conversion from '*type_1*' to '*type_2*' requires a narrowing conversion | -| [Compiler warning (level 3) C4839](compiler-warning-level-3-c4839.md) | non-standard use of class '*type*' as an argument to a variadic function | +| [Compiler warning (level 3, error) C4839](compiler-warning-level-3-c4839.md) | non-standard use of class '*type*' as an argument to a variadic function | | [Compiler warning (level 4) C4840](compiler-warning-level-4-c4840.md) | non-portable use of class '*type*' as an argument to a variadic function | -| [Compiler warning (level 4, off) C4841](c4841.md) | non-standard extension used: compound member designator used in `offsetof` | +| [Compiler warning (level 4, off) C4841](c4841.md) | non-standard extension used: *message* | | Compiler warning (level 4, off) C4842 | the result of '`offsetof`' applied to a type using multiple inheritance is not guaranteed to be consistent between compiler releases | | [Compiler warning (level 4) C4843](c4843.md) | '*type1*': An exception handler of reference to array or function type is unreachable, use '*type2*' instead | | Compiler warning (level 1) C4844 | '`export module` *`module_name`*`;`' is now the preferred syntax for declaring a module interface | -| Compiler warning (level 4) C4845 | '`__declspec(no_init_all)`' is ignored if '`/d1initall[0|1|2|3]`' was not specified on the command line | +| Compiler warning (level 4) C4845 |'`__declspec(no_init_all)`' is ignored unless '`/d1initall[0|1|2|3]`' or '`/presetPadding`' is specified on the command line| | Compiler warning (level 4) C4846 | '*value*' is not a valid argument for '`/d1initall`': command-line flag ignored | -| Compiler warning (level 4) C4847 | '`__declspec(no_init_all)`' can only be applied to a function, a class type, or a local variable: ignored | -| Compiler warning (level 1) C4848 | support for standard attribute '`no_unique_address`' in C++17 and earlier is a vendor extension | +| Compiler warning (level 4) C4847 |'*identifier*': '`__declspec(no_init_all)`' can only be applied to a function, a class type, or a local variable: ignored | +| Compiler warning (level 1) C4848 | support for attribute `[[`*attribute*`]]` in C++17 and earlier is a vendor extension | | Compiler warning (level 1) C4849 | OpenMP '*clause*' clause ignored in '*directive*' directive | | Compiler warning (Level 1, error) C4854 | binding dereferenced null pointer to reference has undefined behavior | -| Compiler warning (level 1, off) C4855 | implicit capture of '`this`' via '`[=]`' is deprecated in 'version' | -| Compiler warning (level 4) C4856 | '*value*' is not a valid argument for '`/d1initAll:FillPattern`' (value must be between 0 and 255). Command-line flag ignored | -| Compiler warning (level 1) C4857 | C++/CLI mode does not support C++ versions newer than C++17; setting language to `/std:c++17` | +| Compiler warning (level 1, off) C4855 | implicit capture of '`this`' via '`[=]`' is deprecated in '*version*' | +| Compiler warning (level 4) C4856 | '*value*' is not a valid argument for '`/d1initAll:FillPattern`' (value must be between `0` and `255`). Command-line flag ignored | +| Compiler warning (level 1) C4857 | C++/CLI mode does not support C++ versions newer than C++*ver*; setting language to `/std:c++`*ver* | | Compiler warning (level 1) C4858 | discarding return value: *function name* | | Compiler warning (level 4) C4859 | '*value*' is not a valid argument for '`/presetWarn`': it must be a decimal value > 0. Command-line flag ignored | | Compiler warning (level 4) C4860 | '*object name*': compiler zero initialized '*number*' bytes of storage | | Compiler warning (level 4) C4861 | compiler zero initialized '*number*' bytes of storage | | [Compiler warning (level 4) C4866](c4866.md) | compiler may not enforce left-to-right evaluation order for call to *operator_name* | -| [Compiler warning (level 1, error) C4867](compiler-warning-c4867.md) | '*function*': function call missing argument list; use '*call*' to create a pointer to member | +| [Compiler warning (level 1, error) C4867](compiler-warning-c4867.md) |'*function name*': non-standard syntax; use '`&`' to create a pointer to member| | [Compiler warning (level 4) C4868](compiler-warning-c4868.md) | '*file*(*line_number*)' compiler may not enforce left-to-right evaluation order in braced initialization list | | Compiler warning (level 3) C4869 | '`nodiscard`' may only be applied to classes, enumerations, and functions | | Compiler warning (level 2) C4872 | floating point division by zero detected when compiling the call graph for the `concurrency::parallel_for_each` at: '*location*' | -| Compiler warning (level 1) C4880 | casting from 'const *type_1*' to '*type_2*': casting away constness from a pointer or reference may result in undefined behavior in an amp restricted function | +| Compiler warning (level 1) C4880 | casting from '*const type_1*' to '*type_2*': casting away constness from a pointer or reference may result in undefined behavior in an `amp` restricted function | | Compiler warning (level 4) C4881 | the constructor and/or the destructor will not be invoked for `tile_static` variable '*variable-name*' | | Compiler warning (level 1) C4882 | passing functors with non-const call operators to `concurrency::parallel_for_each` is deprecated | | Compiler warning C4883 | '*function name*': function size suppresses optimizations | | [Compiler warning C4900](compiler-warning-level-1-c4900.md) | Il mismatch between '*tool1*' version '*version1*' and '*tool2*' version '*version2*' | -| [Compiler warning (level 1, off) C4905](compiler-warning-level-1-c4905.md) | wide string literal cast to '`LPSTR`' | -| [Compiler warning (level 1, off) C4906](compiler-warning-level-1-c4906.md) | string literal cast to '`LPWSTR`' | -| Compiler warning (Error) C4907 | multiple calling conventions cannot be specified; last given will be used | -| [Compiler warning (level 1) C4910](compiler-warning-level-1-c4910.md) | '\: '__declspec(dllexport)' and 'extern' are incompatible on an explicit instantiation | +| [Compiler warning (level 1, off) C4905](compiler-warning-level-1-c4905.md) | wide string literal cast to '*type*' | +| [Compiler warning (level 1, off) C4906](compiler-warning-level-1-c4906.md) | string literal cast to '*type*' | +| Compiler warning (error) C4907 | multiple calling conventions cannot be specified; last given will be used | +| [Compiler warning (level 1) C4910](compiler-warning-level-1-c4910.md) |'*identifier*': '`__declspec(dllexport)`' and '`extern`' are incompatible on an explicit instantiation| | [Compiler warning (level 1) C4912](compiler-warning-level-1-c4912.md) | '*attribute*': attribute has undefined behavior on a nested UDT | | [Compiler warning (level 4) C4913](compiler-warning-level-4-c4913.md) | user defined binary operator '`,`' exists but no overload could convert all operands, default built-in binary operator '`,`' used | | Compiler warning (level 1) C4916 | in order to have a `dispid`, '*description*': must be introduced by an interface | | [Compiler warning (level 1, off) C4917](compiler-warning-level-1-c4917.md) | '*declarator*': a GUID can only be associated with a class, interface or namespace | | [Compiler warning (level 4) C4918](compiler-warning-level-4-c4918.md) | '*character*': invalid character in pragma optimization list | -| [Compiler warning (level 1) C4920](compiler-warning-level-1-c4920.md) | enum *enum-name* member *member_1*=*value_1* already seen in enum *enum-name* as *member_2*=*value_2* | +| [Compiler warning (level 1) C4920](compiler-warning-level-1-c4920.md) | `enum` *enum-name* member *member_1*`=`*value_1* already seen in `enum` *enum-name* as *member_2*`=`*value_2* | | Compiler warning (level 3) C4921 | '*description*': attribute value '*attribute*' should not be multiply specified | -| [Compiler warning (level 1) C4925](compiler-warning-level-1-c4925.md) | '*method*': dispinterface method cannot be called from script | +| [Compiler warning (level 1) C4925](compiler-warning-level-1-c4925.md) | '*method*': `dispinterface` method cannot be called from script | | [Compiler warning (level 1) C4926](compiler-warning-level-1-c4926.md) | '*identifier*': symbol is already defined: attributes ignored | | [Compiler warning (level 1) C4927](compiler-warning-level-1-c4927.md) | illegal conversion; more than one user-defined conversion has been implicitly applied | | [Compiler warning (level 1, off) C4928](compiler-warning-level-1-c4928.md) | illegal copy-initialization; more than one user-defined conversion has been implicitly applied | -| [Compiler warning (level 1) C4929](compiler-warning-level-1-c4929.md) | '*file*': typelibrary contains a union; ignoring the 'embedded_idl' qualifier | +| [Compiler warning (level 1) C4929](compiler-warning-level-1-c4929.md) | '*file*': `typelibrary` contains a union; ignoring the '`embedded_idl`' qualifier | | [Compiler warning (level 1) C4930](compiler-warning-level-1-c4930.md) | '*prototype*': prototyped function not called (was a variable definition intended?) | | [Compiler warning (level 4, off) C4931](compiler-warning-level-4-c4931.md) | we are assuming the type library was built for *number*-bit pointers | | [Compiler warning (level 4) C4932](compiler-warning-level-4-c4932.md) | `__identifier(`*identifier*`)` and `__identifier(`*identifier*`)` are indistinguishable | | Compiler warning (level 1) C4934 | '`__delegate(multicast)`' is deprecated, use '`__delegate`' instead | | [Compiler warning (level 1) C4935](compiler-warning-level-1-c4935.md) | assembly access specifier modified from '*access*' | -| [Compiler warning (level 1, Error) C4936](compiler-warning-c4936.md) | this __declspec is supported only when compiled with `/clr` or `/clr:pure` | +| [Compiler warning (level 1, error) C4936](compiler-warning-c4936.md) | this `__declspec` is supported only when compiled with `/clr` or `/clr:pure` | | [Compiler warning (level 4) C4937](compiler-warning-level-4-c4937.md) | '*text1*' and '*text2*' are indistinguishable as arguments to '*directive*' | | [Compiler warning (level 4) C4938](compiler-warning-level-4-c4938.md) | '*var*': Floating point reduction variable may cause inconsistent results under `/fp:strict` or `#pragma fenv_access` | -| [Compiler warning C4939](compiler-warning-level-1-c4939.md) | #pragma vtordisp is deprecated and will be removed in a future release of Visual C++ | +| [Compiler warning (level 1) C4939](compiler-warning-level-1-c4939.md) | `#pragma vtordisp` is deprecated and will be removed in a future release of Visual C++ | | [Compiler warning (level 1) C4944](compiler-warning-level-1-c4944.md) | '*symbol*': cannot import symbol from '*assembly1*': as '*symbol*' already exists in the current scope | | [Compiler warning (level 1) C4945](compiler-warning-level-1-c4945.md) | '*symbol*': cannot import symbol from '*assembly1*': as '*symbol*' has already been imported from another assembly '*assembly2*' | | [Compiler warning (level 1, off) C4946](compiler-warning-level-1-c4946.md) | `reinterpret_cast` used between related classes: '*class1*' and '*class2*' | | [Compiler warning (level 1) C4947](compiler-warning-level-1-c4947.md) | '*type_or_member*': marked as obsolete | | [Compiler warning (level 2) C4948](compiler-warning-level-2-c4948.md) | return type of '*accessor*' does not match the last parameter type of the corresponding setter | -| [Compiler warning (level 1 and level 4) C4949](compiler-warning-level-1-and-level-4-c4949.md) | pragmas '`managed`' and '`unmanaged`' are meaningful only when compiled with '`/clr[:option]`' | -| [Compiler warning (level 1, Error) C4950](compiler-warning-c4950.md) | '*type_or_member*': marked as obsolete | +| [Compiler warning (level 1 and level 4) C4949](compiler-warning-level-1-and-level-4-c4949.md) | `pragma` '*pragma*' is meaningful only when compiled with '`/clr[:option]`'| +| [Compiler warning (level 1, error) C4950](compiler-warning-c4950.md) | '*type_or_member*': marked as obsolete | | [Compiler warning (level 1) C4951](compiler-warning-level-1-c4951.md) | '*function*' has been edited since profile data was collected, function profile data not used | | [Compiler warning (level 1) C4952](compiler-warning-level-1-c4952.md) | '*function*': no profile data found in program database '*pgd-file*' | | [Compiler warning (level 1) C4953](compiler-warning-level-1-c4953.md) | Inlinee '*function*' has been edited since profile data was collected, profile data not used | | Compiler warning C4954 | '*function*': not profiled (contains `__int64` switch expression) | | Compiler warning C4955 | '*import2*': import ignored; already imported from '*import1*' | -| [Compiler warning (level 1, Error) C4956](compiler-warning-c4956.md) | '*type*': this type is not verifiable | -| [Compiler warning (level 1, Error) C4957](compiler-warning-c4957.md) | '*cast*': explicit cast from '*cast_from*' to '*cast_to*' is not verifiable | -| [Compiler warning (level 1, Error) C4958](compiler-warning-c4958.md) | '*operation*': pointer arithmetic is not verifiable | -| [Compiler warning (level 1, Error) C4959](compiler-warning-c4959.md) | cannot define unmanaged type '*type*' in `/clr:safe` because accessing its members yields unverifiable code | +| [Compiler warning (level 1, error) C4956](compiler-warning-c4956.md) | '*type*': this type is not verifiable | +| [Compiler warning (level 1, error) C4957](compiler-warning-c4957.md) | '*cast*': explicit cast from '*cast_from*' to '*cast_to*' is not verifiable | +| [Compiler warning (level 1, error) C4958](compiler-warning-c4958.md) | '*operation*': pointer arithmetic is not verifiable | +| [Compiler warning (level 1, error) C4959](compiler-warning-c4959.md) | cannot define unmanaged *type* '*identifier*' in `/clr:safe` because accessing its members yields unverifiable code | | [Compiler warning (level 4) C4960](compiler-warning-level-4-c4960.md) | '*function*' is too big to be profiled | | [Compiler warning (level 1) C4961](compiler-warning-c4961.md) | No profile data was merged into '*pgd-file*', profile-guided optimizations disabled | | [Compiler warning (level 4, off) C4962](compiler-warning-c4962.md) | '*function*': Profile-guided optimizations disabled because optimizations caused profile data to become inconsistent | | Compiler warning (level 1) C4963 | '*description*': no profile data found; different compiler options were used in instrumented build | | [Compiler warning (level 1) C4964](compiler-warning-level-1-c4964.md) | No optimization options were specified; profile info will not be collected | -| [Compiler warning (level 1) C4965](compiler-warning-level-1-c4965.md) | implicit box of integer 0; use nullptr or explicit cast | +| [Compiler warning (level 1) C4965](compiler-warning-level-1-c4965.md) | implicit box of integer `0`; use `nullptr` or explicit cast | | Compiler warning (level 1) C4966 | '*function*' has `__code_seg` annotation with unsupported segment name, annotation ignored | | Compiler warning C4970 | delegate constructor: target object ignored since '*type*' is static | -| Compiler warning (level 1) C4971 | Argument order: \, \ for delegate constructor is deprecated, use \, \ | -| [Compiler warning (level 1, Error) C4972](compiler-warning-c4972.md) | Directly modifying or treating the result of an unbox operation as an lvalue is unverifiable | +| Compiler warning (level 1, no longer emitted) C4971 |Argument order: ``, `` for delegate constructor is deprecated, use ``, ``| +| [Compiler warning (level 1, error) C4972](compiler-warning-c4972.md) | Directly modifying or treating the result of an unbox operation as an lvalue is unverifiable | | Compiler warning (level 1) C4973 | '*symbol*': marked as deprecated | | Compiler warning (level 1) C4974 | '*symbol*': marked as deprecated | | Compiler warning (level 1) C4975 | modopt '[*modifier*]' was ignored for formal parameter '*parameter*' | -| Compiler warning (level 1) C4976 | invalid value '*value*' for '`/W`'; assuming '1' | -| Compiler warning (level 3) C4981 | Warbird: function '*function*' marked as __forceinline not inlined because it contains exception semantics | -| Compiler warning (level 3) C4983 | '/analyze:sarif:hashname' ignored because the argument to '/analyze:log' is a single file rather than a directory | -| [Compiler warning C4984](compiler-warning-c4984.md) | '`if constexpr`' is a C++17 language extension | -| [Compiler warning (level 4) C4985](compiler-warning-level-4-c4985.md) | '*symbol_name*': attributes not present on previous declaration. | -| [Compiler warning (level 4, off) C4986](compiler-warning-c4986.md) | '*declaration*': exception specification does not match previous declaration | +| Compiler warning (level 1) C4976 | invalid value '*value*' for '`/W`'; assuming '`1`' | +| Compiler warning (level 3) C4981 | Warbird: function '*function*' marked as `__forceinline` not inlined because it contains exception semantics | +| Compiler warning (level 3) C4983 | '`/analyze:sarif:hashname`' ignored because the argument to '`/analyze:log`' is a single file rather than a directory | +| [Compiler warning (level 1) C4984](compiler-warning-c4984.md) | '`if constexpr`' is a C++17 language extension | +| [Compiler warning (level 3) C4985](compiler-warning-level-4-c4985.md) | '*symbol_name*': attributes not present on previous declaration. | +| [Compiler warning (level 2 and level 4, off) C4986](compiler-warning-c4986.md) | '*declaration*': exception specification does not match previous declaration | | Compiler warning (level 4, off) C4987 | nonstandard extension used: '`throw (...)`' | | Compiler warning (level 4, off) C4988 | '*variable*': variable declared outside class/function scope | | Compiler warning (level 4) C4989 | '*type*': type has conflicting definitions. | | Compiler warning (level 3) C4990 | Warbird: *message* | | Compiler warning (level 3) C4991 | Warbird: function '*function*' marked as `__forceinline` not inlined because protection level of inlinee is greater than the parent | | Compiler warning (level 3) C4992 | Warbird: function '*function-name*' marked as `__forceinline` not inlined because it contains inline assembly which cannot be protected | -| [Compiler warning (level 3) C4995](compiler-warning-level-3-c4995.md) | '*function*': name was marked as #pragma deprecated | -| [Compiler warning (level 3) C4996](compiler-warning-level-3-c4996.md) | '*deprecated-declaration*': *deprecation-message* (or "was declared deprecated") | -| [Compiler warning (level 1) C4997](compiler-warning-level-1-c4997.md) | '*class*': coclass does not implement a COM interface or pseudo-interface | +| [Compiler warning (level 3) C4995](compiler-warning-level-3-c4995.md) | '*function*': name was marked as `#pragma deprecated` | +| [Compiler warning (level 3) C4996](compiler-warning-level-3-c4996.md) | '*deprecated-declaration*': *deprecation-message* | +| [Compiler warning (level 1) C4997](compiler-warning-level-1-c4997.md) | '*class*': `coclass` does not implement a COM interface or pseudo-interface | | Compiler warning (level 1) C4998 | EXPECTATION FAILED: *expectation*(*value*) | | [Compiler warning C4999](compiler-warning-level-1-c4999.md) | UNKNOWN WARNING Please choose the Technical Support command on the Visual C++ Help menu, or open the Technical Support help file for more information | diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c5000-through-c5199.md b/docs/error-messages/compiler-warnings/compiler-warnings-c5000-through-c5199.md index 5fd8d8a5fdb..38f4e448954 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c5000-through-c5199.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c5000-through-c5199.md @@ -23,39 +23,39 @@ The articles in this section describe Microsoft C/C++ compiler warning messages | Compiler warning (level 1 and level 4, off) C5027 | '*type*': move assignment operator was implicitly defined as deleted | | Compiler warning (level 1) C5028 | '*name*': Alignment specified in prior declaration (*number*) not specified in definition | | Compiler warning (level 4, off) C5029 | nonstandard extension used: alignment attributes in C++ apply to variables, data members and tag types only | -| Compiler warning (level 3) C5030 | attribute '*attribute-name*' is not recognized | +| Compiler warning (level 3) C5030 | attribute `[[`*attribute_name*`]]` is not recognized | | Compiler warning (level 4, off) C5031 | `#pragma warning(pop)`: likely mismatch, popping warning state pushed in different file | | Compiler warning (level 4, off) C5032 | detected `#pragma warning(push)` with no corresponding `#pragma warning(pop)` | | [Compiler warning (level 1) C5033](c5033.md) | '*storage-class*' is no longer a supported storage class | -| Compiler warning (level 5, off) C5034 | use of intrinsic '*intrinsic*' causes function *function-name* to be compiled as guest code | -| Compiler warning (level 5, off) C5035 | use of feature '*feature*' causes function *function-name* to be compiled as guest code | -| Compiler warning (level 1) C5036 | varargs function pointer conversion when compiling with `/hybrid:x86arm64` '*type1*' to '*type2*' | -| [Compiler warning (error) C5037](c5037.md) | '*member-function*': an out-of-line definition of a member of a class template cannot have default arguments | -| [Compiler warning (level 4, off) C5038](c5038.md) | data member '*member1*' will be initialized after data member '*member2*' | -| Compiler warning (level 4, off) C5039 | '*function*': pointer or reference to potentially throwing function passed to `extern C` function under `-EHc`. Undefined behavior may occur if this function throws an exception. | +| Compiler warning (level 4, off) C5034 | use of intrinsic '*intrinsic*' causes function *function-name* to be compiled as guest code | +| Compiler warning (level 4, off) C5035 | use of feature '*feature*' causes function *function-name* to be compiled as guest code | +| Compiler warning (level 1) C5036 | `varargs` function pointer conversion when compiling with /hybrid:x86arm64 from type '*type1*' to type '*type2*' | +| [Compiler warning (level 3, error) C5037](c5037.md) | '*member-function*': an out-of-line definition of a member of a class template cannot have default arguments | +| [Compiler warning (level 4, off) C5038](c5038.md) | *data member* '*member1*' will be initialized after *data member* '*member2*' | +| Compiler warning (level 4, off) C5039 | '*function*': pointer or reference to potentially throwing function passed to '`extern "C"`' function under `-EHc`. Undefined behavior may occur if this function throws an exception. | | Compiler warning (level 3) C5040 | dynamic exception specifications are valid only in C++14 and earlier; treating as noexcept(false) | -| Compiler warning (level 1, off) C5041 | '*definition*': out-of-line definition for constexpr static data member is not needed and is deprecated in C++17 | -| Compiler warning (level 3, off) C5042 | '*declaration*': function declarations at block scope cannot be specified 'inline' in standard C++; remove 'inline' specifier | +| Compiler warning (level 4, off) C5041 | '*definition*': out-of-line definition for `constexpr` static data member is not needed and is deprecated in C++17 | +| Compiler warning (level 3, off) C5042 | '*declaration*': function declarations at block scope cannot be specified '`inline`' in standard C++; remove '`inline`' specifier | | Compiler warning (level 2) C5043 | '*specification*': exception specification does not match previous declaration | | Compiler warning (level 4) C5044 | An argument to command-line option *option-name* points to a path '*path-name*' that does not exist | -| [Compiler warning (level 4) C5045](c5045.md) | Compiler will insert Spectre mitigation for memory load if /Qspectre switch specified | +| [Compiler warning (level 4) C5045](c5045.md) | Compiler will insert Spectre mitigation for memory load if `/Qspectre` switch specified | | [Compiler warning (level 2) C5046](c5046.md) | '*function*': Symbol involving type with internal linkage not defined | -| Compiler warning (level 1) C5047 | use of nonstandard `__if_exists` with modules is not supported | +| Compiler warning (level 1, error) C5047 | use of nonstandard '*keyword*' with modules is not supported | | Compiler warning (level 1) C5048 | Use of macro '*macroname*' may result in non-deterministic output | | Compiler warning (level 1) C5049 | '*string*': Embedding a full path may result in machine-dependent output | | [Compiler warning (level 1) C5050](c5050.md) | Possible incompatible environment while importing module '*module_name*': *issue* | -| Compiler warning (level 1) C5051 | attribute 'attribute-name' requires at least 'standard-level'; ignored | -| Compiler warning (level 3, off) C5052 | Keyword 'keyword-name' was introduced in C++\ and requires use of the 'option-name' command-line option | +| Compiler warning (level 1) C5051 | attribute `[[`*attribute-name*`]]` requires at least '*standard_version*'; ignored | +| Compiler warning (level 3, off) C5052 | Keyword '*keyword-name*' was introduced in `C++`*version* and requires use of the '*switch*' command-line option | | Compiler warning (level 1) C5053 | support for '`explicit()`' in C++17 and earlier is a vendor extension | -| [Compiler warning (level 4) C5054](c5054.md) | operator 'operator-name': deprecated between enumerations of different types | -| [Compiler warning (level 1) C5055](c5055.md) | operator 'operator-name': deprecated between enumerations and floating-point types | -| [Compiler warning (level 1) C5056](c5056.md) | operator 'operator-name': deprecated for array types | -| Compiler warning (level 1) C5057 | header unit reference to 'name' already exists. Ignoring header unit 'header-name' | -| Compiler warning (level 1) C5058 | file system error: cannot find header file 'file-name' for header unit 'unit-name' | +| [Compiler warning (level 4) C5054](c5054.md) | operator '*operator-name*': deprecated between enumerations of different types | +| [Compiler warning (level 1) C5055](c5055.md) | operator '*operator-name*': deprecated between enumerations and floating-point types | +| [Compiler warning (level 1) C5056](c5056.md) | operator '*operator-name*': deprecated for array types | +| Compiler warning (level 1) C5057 | header unit reference to '*name*' already exists. Ignoring header unit '*header-name*' | +| Compiler warning (level 1) C5058 | file system error: cannot find header file '*file-name*' for header unit '*unit-name*' | | Compiler warning C5059 | runtime checks and address sanitizer is not currently supported - disabling runtime checks | | Compiler warning (level 4) C5060 | `/Qpar` and address sanitizer not currently supported - disabling auto-parallelization | | Compiler warning (level 4) C5061 | the use of a comma operator as a subscript expression has been deprecated | -| Compiler warning (level 4) C5062 | enum direct list initialization between 'type-1' and 'type-2' is no longer supported | +| Compiler warning (level 4) C5062 | `enum` direct list initialization between '*type-1*' and '*type-2*' is no longer supported | | Compiler warning (level 1) C5063 | '`std::is_constant_evaluated`' always evaluates to true in manifestly constant-evaluated expressions | | [Compiler warning (level 1) C5072](compiler-warning-c5072.md) | ASAN enabled without debug information emission. Enable debug info for better ASAN error reporting | | Compiler warning (level 1) C5081 | Secure hotpatch is not supported with `/GENPROFILE`, `/FASTGENPROFILE` or `/LTCG:PGI`, disabling secure hotpatch. | diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399.md b/docs/error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399.md index 43dea219e00..7b05bf6697b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399.md @@ -15,29 +15,29 @@ The articles in this section describe Microsoft C/C++ compiler warning messages | Warning | Message | |--|--| -| Compiler warning (level 1) C5200 | feature 'feature-name' requires compiler flag 'option-name' | +| Compiler warning (level 1) C5200 | *feature* '*feature-name*' requires compiler flag '*option-name*' | | Compiler warning (level 1) C5201 | a module declaration can appear only at the start of a translation unit unless a global module fragment is used | | Compiler warning (level 1) C5202 | a global module fragment can only contain preprocessor directives | -| Compiler warning (level 1) C5203 | a parenthesized declarator name after 'explicit' will be considered an explicit-specifier in C++20 | -| Compiler warning (level 3, off) C5204 | 'type-name': class has virtual functions, but its trivial destructor is not virtual; instances of objects derived from this class may not be destructed correctly | -| Compiler warning (level 4) C5205 | delete of an abstract class 'type-name' that has a non-virtual destructor results in undefined behavior | +| Compiler warning (level 1) C5203 | a parenthesized declarator name after '`explicit`' will be considered an explicit-specifier in C++20 | +| Compiler warning (level 3, off) C5204 | '*type-name*': class has virtual functions, but its trivial destructor is not virtual; instances of objects derived from this class may not be destructed correctly | +| Compiler warning (level 4) C5205 | delete of an abstract class '*type-name*' that has a non-virtual destructor results in undefined behavior | | Compiler warning (level 3) C5206 | deduced return types for coroutines is a non-standard extension | | Compiler warning (level 1) C5207 | the simple requirement asserts the validity of expression '`e->id`'. Did you mean '`{ e } -> id`'? You can suppress the warning using '`{ e->id }`' | -| [Compiler warning (level 1) C5208](c5208.md) | unnamed class used in `typedef` name cannot declare members other than non-static data members, member enumerations, or member classes | -| Compiler warning (level 1) C5209 | the C++20 syntax for an init-capture has changed to '& ...opt identifier initializer' | +| [Compiler warning (level 1, error) C5208](c5208.md) | unnamed class used in `typedef` name cannot declare members other than non-static data members, member enumerations, or member classes | +| Compiler warning (level 1) C5209 | the C++20 syntax for an init-capture has changed to '`& ...opt identifier initializer`' | | Compiler warning (level 1) C5210 | '*name*' is not a valid header unit reference; ignoring | | Compiler warning (level 1) C5212 | '*name*' is not a valid named reference; treating as reference to file | -| Compiler warning (level 1) C5213 | '*name*' named reference is treated as a named partition but the name is not specified; treating as reference to file | +| Compiler warning (level 1) C5213 | '*name*' named reference is treated as a named partition but the *module* name is not specified; treating as reference to file | | Compiler warning (level 4, off) C5214 | applying '*modifier*' to an operand with a volatile qualified type is deprecated in C++20 | | Compiler warning (level 4, off) C5215 | '*name*' a function parameter with a volatile qualified type is deprecated in C++20 | | Compiler warning (level 4, off) C5216 | '*name*' a volatile qualified return type is deprecated in C++20 | | Compiler warning (level 4, off) C5217 | a structured binding declaration that includes volatile is deprecated in C++20 | | Compiler warning (level 1) C5218 | destroying delete may not behave as intended when non-conforming switches '`/Zc:sizedDealloc-`' or '`/Zc:alignedNew-`' are used | | Compiler warning (level 2, off) C5219 | implicit conversion from '*type-1*' to '*type-2*', possible loss of data | -| Compiler warning (level 4, off) C5220 | '*name*': a non-static data member with a volatile qualified type no longer implies that compiler generated copy/move constructors and copy/move assignment operators are not trivial | -| Compiler warning (level 1) C5221 | xfg::rename is deprecated. | +| Compiler warning (level 4, off) C5220 | '*name*': a non-static data member with a volatile qualified type no longer implies
that compiler generated copy/move constructors and copy/move assignment operators are not trivial | +| Compiler warning (level 1) C5221 | `xfg::rename` is deprecated. | | Compiler warning (level 3) C5222 | '*attribute-name*': all unscoped attribute names are reserved for future standardization | -| Compiler warning (level 3) C5223 | all attribute names in the attribute namespace 'msvc' are reserved for the implementation | +| Compiler warning (level 3) C5223 | all attribute names in the attribute namespace '`msvc`' are reserved for the implementation | | Compiler warning (level 3) C5224 | all attribute names in the attribute namespace '*namespace-name*' are reserved for future standardization | | Compiler warning (level 1) C5225 | '*symbol*': exported inline function defined in a private module fragment is a non-standard extension | | Compiler warning (level 1) C5226 | '*symbol*': exported template defined in private module fragment has no reachable instantiation | @@ -45,7 +45,7 @@ The articles in this section describe Microsoft C/C++ compiler warning messages | Compiler warning (level 4) C5228 | nonstandard extension, '*identifier*' resolved to a member of a dependent base. This lookup is not allowed under `/permissive-`. | | Compiler warning (level 4) C5229 | nonstandard extension, the hidden friend function '*function-name*' was found by name lookup which isn't allowed under `/permissive-`. | | Compiler warning C5230 | nonstandard extension, '*identifier*' was resolved to '*symbol-1*' under `/permissive`. Under `/permissive-` it would resolve to '*symbol-2*'. | -| Compiler warning (level 3) C5231 | the expression '`co_await promise.final_suspend()`' must be non-throwing | +| Compiler warning (level 3, error) C5231 | the expression '`co_await promise.final_suspend()`' must be non-throwing | | Compiler warning (level 1) C5232 | in C++20 this comparison calls '*name*' recursively | | Compiler warning (level 4, off) C5233 | explicit lambda capture '*identifier*' is not used | | Compiler warning (level 1) C5234 | file system error: '*filename*' is not a valid header-name; ignoring | @@ -53,35 +53,35 @@ The articles in this section describe Microsoft C/C++ compiler warning messages | Compiler warning (level 1) C5236 | JSON ill-formed: *message*; ignoring '*filename*' | | Compiler warning (level 1) C5237 | cannot resolve header unit entry '*name*' to a header file in '*filename*'; ignoring entry | | Compiler warning (level 1) C5238 | file system error: cannot open '*filename*' for reading; ignoring | -| Compiler warning (level 4) C5239 | '*symbol*': potentially throwing function called from a function declared `__declspec(nothrow)`. Undefined behavior may occur if an exception is thrown. | -| [Compiler warning (level 4) C5240](c5240.md) | '*attribute-name*': attribute is ignored in this syntactic position | -| Compiler warning (level 1) C5241 | '`/exportHeader`' usage to lookup header-name is deprecated; prefer '/headerName:name value=filename' | +| Compiler warning (level 4) C5239 | '*symbol*': potentially-throwing function called from a function declared `__declspec(nothrow)`. Undefined behavior may occur if an exception is thrown. | +| [Compiler warning (level 4, off) C5240](c5240.md) | '*attribute-name*': attribute is ignored in this syntactic position | +| Compiler warning (level 1) C5241 | '`/exportHeader`' usage to lookup header-name is deprecated; prefer '`/headerName:`*name* *value*`=`*filename*' | | Compiler warning (level 1) C5242 | syntax error in pragma '*identifier*' | -| [Compiler warning (level 1, off) C5243](c5243.md) | '*type-name*': using incomplete class 'class-name' can cause potential one definition rule violation due to ABI limitation | -| Compiler warning (level 1) C5244 | '#include \<*filename*>' in the purview of module '*module-name-1*' appears erroneous. Consider moving that directive before the module declaration, or replace the textual inclusion with 'import \<*module-name-2*>;'. | +| [Compiler warning (level 1, off) C5243](c5243.md) | '*type-name*': using incomplete class '*class-name*' can cause potential one definition rule violation due to ABI limitation | +| Compiler warning (level 1) C5244 | '`#include <`*filename*`>`' in the purview of module '*module-name-1*' appears erroneous. Consider moving that directive before the module declaration, or replace the textual inclusion with '`import <`*module-name-2*`>;`'. | | Compiler warning (level 4, off) C5245 | '*function*': unreferenced function with internal linkage has been removed | | Compiler warning (level 1, off) C5246 | '*member*': the initialization of a subobject should be wrapped in braces | | [Compiler warning (level 1, off) C5247](c5247.md) | section '*section-name*' is reserved for C++ dynamic initialization. Manually creating the section will interfere with C++ dynamic initialization and may lead to undefined behavior | -| [Compiler warning (level 1, off) C5248](c5248.md) | section '*section-name*' is reserved for C++ dynamic initialization. Variables manually put into the section may be optimized out and their order relative to compiler generated dynamic initializers is unspecified. | +| [Compiler warning (level 1, off) C5248](c5248.md) | section '*section-name*' is reserved for C++ dynamic initialization. Variables manually put into the section may be optimized out and their order relative to compiler generated dynamic initializers is unspecified | | Compiler warning (level 1, off) C5249 | '*bitfield*' of type '*enumeration_name*' has named enumerators with values that cannot be represented in the given bit field width of '*bitfield_width*'. | -| Compiler warning (level 3, off) C5250 | '*function_name*': intrinsic function not declared. | +| Compiler warning (level 3, off) C5250 | '*function_name*': intrinsic function not declared | | Compiler warning (level 4, off) C5251 | *segment-name* changed after including header | | Compiler warning (level 4) C5252 | Multiple different types resulted in the same XFG type-hash *hash-value*; the PDB will only record information for one of them | | Compiler warning (level 4) C5253 | a non-local lambda cannot have a capture default | -| Compiler warning (level 4, off) C5254 | language feature 'terse static assert' requires compiler flag '/std:c++17' | -| Compiler warning (level 3) C5255 | unterminated bidirectional character encountered: 'U+XXXX' | +| Compiler warning (level 4, off) C5254 | language feature 'terse static assert' requires compiler flag '*/std:c++17*' | +| Compiler warning (level 3) C5255 | unterminated bidirectional character encountered: '`U+`*XXXX*' | | Compiler warning (level 1, off) C5256 | '*enumeration*': a non-defining declaration of an enumeration with a fixed underlying type is only permitted as a standalone declaration | -| Compiler warning (level 1 or 4) C5257 | '*enumeration*': enumeration was previously declared without a fixed underlying type | +| Compiler warning (level 1 and level 4) C5257 | '*enumeration*': enumeration was previously declared without a fixed underlying type | | Compiler warning (level 4, off) C5258 | explicit capture of '*symbol*' is not required for this use | | Compiler warning (level 4, off) C5259 | '*specialized-type*': explicit specialization requires 'template <>' | | Compiler warning (level 1) C5260 | the constant variable '*variable-name*' has internal linkage in an included header file context, but external linkage in imported header unit context; consider declaring it 'inline' as well if it will be shared across translation units, or 'static' to express intent to use it local to this translation unit | | Compiler warning (level 2) C5261 | no integer type can represent all enumerator values in enumeration '*enum-name*' | -| [Compiler warning (level 1, error, off) C5262](c5262.md) | implicit fall-through occurs here; are you missing a break statement? Use `[[fallthrough]]` when a `break` statement is intentionally omitted between cases | +| [Compiler warning (level 1, off) C5262](c5262.md) | implicit fall-through occurs here; are you missing a break statement? Use `[[fallthrough]]` when a `break` statement is intentionally omitted between cases | | Compiler warning (level 4, off) C5263 | calling '`std::move`' on a temporary object prevents copy elision | | Compiler warning (level 4, off) C5264 | '*variable-name*': 'const' variable is not used | | Compiler warning (level 1) C5265 | cannot open search path '*path*' | -| [Compiler warning (level 4, off) C5266](compiler-warning-level-4-c5266.md) | 'const' qualifier on return type has no effect | -| [Compiler warning C5267](c5267.md) | definition of implicit copy constructor/assignment operator for '*type*' is deprecated because it has a user-provided assignment operator/copy constructor | +| [Compiler warning (level 4, off) C5266](compiler-warning-level-4-c5266.md) | '*const*' qualifier on return type has no effect | +| [Compiler warning (level 4, off) C5267](c5267.md) | definition of implicit *copy constructor/assignment operator* for '*type*' is deprecated because it has a user-provided *assignment operator/copy constructor* | | Compiler warning (level 1) C5268 | Failed to allocate memory at fixed address 0x*address*. Use `/Yb` to specify a specific address base if bit-identical .pch files are required. | | Compiler warning (level 1) C5269 | Failed to allocate PCH memory at fixed address 0x*address*. Use `/Ym` to specify a specific address base if bit-identical .pch files are required. | | Compiler warning (level 3) C5270 | '*value*' is not allowed for option '*switch name*'; allowed values are: *value list* | @@ -89,10 +89,10 @@ The articles in this section describe Microsoft C/C++ compiler warning messages | Compiler warning (level 1) C5272 | throwing an object of non-copyable type '*type*' is non-standard. If a copy is needed at runtime it will be made as if by `memcpy`. | | Compiler warning (level 1) C5273 | behavior change: `_Alignas` on anonymous type no longer ignored (promoted members will align) | | Compiler warning (level 1) C5274 | behavior change: `_Alignas` no longer applies to the type '*type*' (only applies to declared data objects) | -| Compiler warning (Error) C5275 | facade assembly '*name*' being imported under '`/clr`'; missing option '`/clr:netcore`'? | -| Compiler warning (level 1, error) C5300 | '#pragma omp atomic': left operand of '*operator*' must match left hand side of assignment-expression | -| [Compiler warning (level 1) C5301](c5301-c5302.md) | '#pragma omp for': '*loop-index*' increases while loop condition uses '*comparison*'; non-terminating loop? | -| [Compiler warning (level 1) C5302](c5301-c5302.md) | '#pragma omp for': '*loop-index*' decreases while loop condition uses '*comparison*'; non-terminating loop? | +| Compiler warning (error) C5275 | assembly '*name*' being imported under '*/clr*' does not contain the required fundamental types | +| Compiler warning (error) C5300 | '`#pragma omp atomic` *clause*': expression mismatch for lvalue being updated | +| [Compiler warning (level 1) C5301](c5301-c5302.md) | '`#pragma omp for`': '*loop-index*' increases while loop condition uses '*comparison*'; non-terminating loop? | +| [Compiler warning (level 1) C5302](c5301-c5302.md) | '`#pragma omp for`': '*loop-index*' decreases while loop condition uses '*comparison*'; non-terminating loop? | | Compiler warning (level 1) C5303 | function marked with `[[msvc::intrinsic]]` did not result in a no-op cast | | Compiler warning (level 1) C5304 | a declaration designated by the using-declaration '*name1*' exported from this module has internal linkage and using such a name outside the module is ill-formed; consider declaring '*name2*' '`inline`' to use it outside of this module | | Compiler warning (level 1) C5305 | '*name*': an explicit instantiation declaration that follows an explicit instantiation definition is ignored | From abf185a0cc449d22537a26ab5d420ebee402c6c9 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Thu, 22 Aug 2024 15:45:20 -0700 Subject: [PATCH 0011/2255] Learn Editor: Update c26831.md --- docs/code-quality/c26831.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/code-quality/c26831.md b/docs/code-quality/c26831.md index 0fe737b017d..fba6057d2f2 100644 --- a/docs/code-quality/c26831.md +++ b/docs/code-quality/c26831.md @@ -58,4 +58,6 @@ void foo(int i, int j) ## See also [`C26832`](c26832.md)\ -[`C26833`](c26833.md) \ No newline at end of file +[`C26833`](c26833.md)\ +[`C26838`](c26838.md)\ +[`C26839`](c26839.md) \ No newline at end of file From 2fb9dc65f832d74f554862d002aa5cb695b96189 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Thu, 22 Aug 2024 15:48:17 -0700 Subject: [PATCH 0012/2255] Learn Editor: Update c26838.md --- docs/code-quality/c26838.md | 15 +++++++++++++++ docs/code-quality/toc.yml | 2 ++ 2 files changed, 17 insertions(+) create mode 100644 docs/code-quality/c26838.md diff --git a/docs/code-quality/c26838.md b/docs/code-quality/c26838.md new file mode 100644 index 00000000000..46fe9f69efd --- /dev/null +++ b/docs/code-quality/c26838.md @@ -0,0 +1,15 @@ +--- +# Required metadata +# For more information, see https://review.learn.microsoft.com/en-us/help/platform/learn-editor-add-metadata?branch=main +# For valid values of ms.service, ms.prod, and ms.topic, see https://review.learn.microsoft.com/en-us/help/platform/metadata-taxonomies?branch=main + +title: # Add a title for the browser tab +description: # Add a meaningful description for search results +author: Rastaban # GitHub alias +ms.author: philc # Microsoft alias +ms.service: # Add the ms.service or ms.prod value +# ms.prod: # To use ms.prod, uncomment it and delete ms.service +ms.topic: # Add the ms.topic value +ms.date: 08/22/2024 +--- +Warning `C26839` \ No newline at end of file diff --git a/docs/code-quality/toc.yml b/docs/code-quality/toc.yml index 049d6ad6229..86553eebfc9 100644 --- a/docs/code-quality/toc.yml +++ b/docs/code-quality/toc.yml @@ -633,6 +633,8 @@ items: href: ../code-quality/c26830.md - name: Warning C26831 href: ../code-quality/c26831.md + - name: " Warning C26839" + href: c26838.md - name: Warning C26832 href: ../code-quality/c26832.md - name: Warning C26833 From 1344e6dadd9f1a612ee61909306c33b9077b86c5 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Thu, 22 Aug 2024 15:55:43 -0700 Subject: [PATCH 0013/2255] Learn Editor: Update c26838.md --- docs/code-quality/c26838.md | 57 ++++++++++++++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/docs/code-quality/c26838.md b/docs/code-quality/c26838.md index 46fe9f69efd..0e88b4e5e1d 100644 --- a/docs/code-quality/c26838.md +++ b/docs/code-quality/c26838.md @@ -12,4 +12,59 @@ ms.service: # Add the ms.service or ms.prod value ms.topic: # Add the ms.topic value ms.date: 08/22/2024 --- -Warning `C26839` \ No newline at end of file +# Warning `C26839` + +> Allocation size is the result of a signed to unsigned narrowing conversion that could result in overflow if the signed value is negative + +## Remarks + +This warning reports that the size specified for an allocation may be the result of the conversion of a possibly negative signed value to an unsigned value. For example: + +```cpp +void* CustomAlloc(size_t); + +int* CreateIntArray(int numberOfElements) +{ + int* p = (int*)CustomAlloc(numberOfElements * sizeof(int)); // Warning: C26838 + // ... + return p; +} +``` + +In the expression `numberOfElements * sizeof(int)`, `numberOfElements` is signed and `sizeof(int)` is unsigned. On 64 bit machines `numberOfElements` will be promoted to an unsigned value when multiplied +by `sizeof(int)`. When `numberOfElements` is negative, the resulting value may overflow or have unexpected results when passed to `CustomAlloc`. + +This check applies to common allocation functions like `new`, `malloc`, and `VirtualAlloc`. The check also applies to custom allocator functions that have `alloc` (case insensitive) in the function name. + +This check sometimes fails to recognize that certain checks can prevent overflows because the check is conservative. + +This warning is available in Visual Studio 2022 version 17.12 and later versions. + +## Example + +To fix the previous code example in which `numberOfElements * sizeof(int)` might overflow due to a negative signed value, introduce a check to make sure it won't. For example: + +```cpp +void* CustomAlloc(size_t); + +int* CreateIntArray(int numberOfElements) +{ + if (numberOfElements < 0) + return nullptr; + + int* p = (int*)CustomAlloc(numberOfElements * sizeof(int)); + // ... + return p; +} +``` + +In the previous example, checking for a negative value addresses the C26832 warning. Depending on the size of the types involved, this check may result in a different warning such as [`C26831`](c26831.md). +For example, on a 32 bit system, both `int` and `size_t` are 32 bits, so the result of the multiplication can still overflow without negative values. + +## See also + +[`C26831`](c26831.md)\ +[`C26832`](c26832.md)\ +[`C26833`](c26833.md)\ +[`C26833`](c26839.md) + From 40c7f4ad72717621bf9fd90b5a1716b762304905 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Thu, 22 Aug 2024 15:55:48 -0700 Subject: [PATCH 0014/2255] update Metadata --- docs/code-quality/c26838.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/docs/code-quality/c26838.md b/docs/code-quality/c26838.md index 0e88b4e5e1d..ccb107559d9 100644 --- a/docs/code-quality/c26838.md +++ b/docs/code-quality/c26838.md @@ -3,13 +3,12 @@ # For more information, see https://review.learn.microsoft.com/en-us/help/platform/learn-editor-add-metadata?branch=main # For valid values of ms.service, ms.prod, and ms.topic, see https://review.learn.microsoft.com/en-us/help/platform/metadata-taxonomies?branch=main -title: # Add a title for the browser tab -description: # Add a meaningful description for search results +title: Warning C26838 +description: '"Describes the Microsoft C/C++ code analysis warning C26838, its causes, and how to address it."' author: Rastaban # GitHub alias ms.author: philc # Microsoft alias -ms.service: # Add the ms.service or ms.prod value -# ms.prod: # To use ms.prod, uncomment it and delete ms.service -ms.topic: # Add the ms.topic value +ms.service: visual-cpp +ms.topic: reference ms.date: 08/22/2024 --- # Warning `C26839` From 6dd60c0ad00e94f97737dbe376bb8cdba7bd186c Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Thu, 22 Aug 2024 16:13:02 -0700 Subject: [PATCH 0015/2255] change article metadata --- docs/code-quality/c26838.md | 69 ------------------------------------- 1 file changed, 69 deletions(-) delete mode 100644 docs/code-quality/c26838.md diff --git a/docs/code-quality/c26838.md b/docs/code-quality/c26838.md deleted file mode 100644 index ccb107559d9..00000000000 --- a/docs/code-quality/c26838.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -# Required metadata -# For more information, see https://review.learn.microsoft.com/en-us/help/platform/learn-editor-add-metadata?branch=main -# For valid values of ms.service, ms.prod, and ms.topic, see https://review.learn.microsoft.com/en-us/help/platform/metadata-taxonomies?branch=main - -title: Warning C26838 -description: '"Describes the Microsoft C/C++ code analysis warning C26838, its causes, and how to address it."' -author: Rastaban # GitHub alias -ms.author: philc # Microsoft alias -ms.service: visual-cpp -ms.topic: reference -ms.date: 08/22/2024 ---- -# Warning `C26839` - -> Allocation size is the result of a signed to unsigned narrowing conversion that could result in overflow if the signed value is negative - -## Remarks - -This warning reports that the size specified for an allocation may be the result of the conversion of a possibly negative signed value to an unsigned value. For example: - -```cpp -void* CustomAlloc(size_t); - -int* CreateIntArray(int numberOfElements) -{ - int* p = (int*)CustomAlloc(numberOfElements * sizeof(int)); // Warning: C26838 - // ... - return p; -} -``` - -In the expression `numberOfElements * sizeof(int)`, `numberOfElements` is signed and `sizeof(int)` is unsigned. On 64 bit machines `numberOfElements` will be promoted to an unsigned value when multiplied -by `sizeof(int)`. When `numberOfElements` is negative, the resulting value may overflow or have unexpected results when passed to `CustomAlloc`. - -This check applies to common allocation functions like `new`, `malloc`, and `VirtualAlloc`. The check also applies to custom allocator functions that have `alloc` (case insensitive) in the function name. - -This check sometimes fails to recognize that certain checks can prevent overflows because the check is conservative. - -This warning is available in Visual Studio 2022 version 17.12 and later versions. - -## Example - -To fix the previous code example in which `numberOfElements * sizeof(int)` might overflow due to a negative signed value, introduce a check to make sure it won't. For example: - -```cpp -void* CustomAlloc(size_t); - -int* CreateIntArray(int numberOfElements) -{ - if (numberOfElements < 0) - return nullptr; - - int* p = (int*)CustomAlloc(numberOfElements * sizeof(int)); - // ... - return p; -} -``` - -In the previous example, checking for a negative value addresses the C26832 warning. Depending on the size of the types involved, this check may result in a different warning such as [`C26831`](c26831.md). -For example, on a 32 bit system, both `int` and `size_t` are 32 bits, so the result of the multiplication can still overflow without negative values. - -## See also - -[`C26831`](c26831.md)\ -[`C26832`](c26832.md)\ -[`C26833`](c26833.md)\ -[`C26833`](c26839.md) - From 9849a3c78892c1c9bde592eb7f2d4512139d3a2d Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Thu, 22 Aug 2024 16:13:06 -0700 Subject: [PATCH 0016/2255] Learn Editor: Update c26838.md --- docs/code-quality/c26838.md | 70 +++++++++++++++++++++++++++++++++++++ docs/code-quality/toc.yml | 2 +- 2 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 docs/code-quality/c26838.md diff --git a/docs/code-quality/c26838.md b/docs/code-quality/c26838.md new file mode 100644 index 00000000000..0e88b4e5e1d --- /dev/null +++ b/docs/code-quality/c26838.md @@ -0,0 +1,70 @@ +--- +# Required metadata +# For more information, see https://review.learn.microsoft.com/en-us/help/platform/learn-editor-add-metadata?branch=main +# For valid values of ms.service, ms.prod, and ms.topic, see https://review.learn.microsoft.com/en-us/help/platform/metadata-taxonomies?branch=main + +title: # Add a title for the browser tab +description: # Add a meaningful description for search results +author: Rastaban # GitHub alias +ms.author: philc # Microsoft alias +ms.service: # Add the ms.service or ms.prod value +# ms.prod: # To use ms.prod, uncomment it and delete ms.service +ms.topic: # Add the ms.topic value +ms.date: 08/22/2024 +--- +# Warning `C26839` + +> Allocation size is the result of a signed to unsigned narrowing conversion that could result in overflow if the signed value is negative + +## Remarks + +This warning reports that the size specified for an allocation may be the result of the conversion of a possibly negative signed value to an unsigned value. For example: + +```cpp +void* CustomAlloc(size_t); + +int* CreateIntArray(int numberOfElements) +{ + int* p = (int*)CustomAlloc(numberOfElements * sizeof(int)); // Warning: C26838 + // ... + return p; +} +``` + +In the expression `numberOfElements * sizeof(int)`, `numberOfElements` is signed and `sizeof(int)` is unsigned. On 64 bit machines `numberOfElements` will be promoted to an unsigned value when multiplied +by `sizeof(int)`. When `numberOfElements` is negative, the resulting value may overflow or have unexpected results when passed to `CustomAlloc`. + +This check applies to common allocation functions like `new`, `malloc`, and `VirtualAlloc`. The check also applies to custom allocator functions that have `alloc` (case insensitive) in the function name. + +This check sometimes fails to recognize that certain checks can prevent overflows because the check is conservative. + +This warning is available in Visual Studio 2022 version 17.12 and later versions. + +## Example + +To fix the previous code example in which `numberOfElements * sizeof(int)` might overflow due to a negative signed value, introduce a check to make sure it won't. For example: + +```cpp +void* CustomAlloc(size_t); + +int* CreateIntArray(int numberOfElements) +{ + if (numberOfElements < 0) + return nullptr; + + int* p = (int*)CustomAlloc(numberOfElements * sizeof(int)); + // ... + return p; +} +``` + +In the previous example, checking for a negative value addresses the C26832 warning. Depending on the size of the types involved, this check may result in a different warning such as [`C26831`](c26831.md). +For example, on a 32 bit system, both `int` and `size_t` are 32 bits, so the result of the multiplication can still overflow without negative values. + +## See also + +[`C26831`](c26831.md)\ +[`C26832`](c26832.md)\ +[`C26833`](c26833.md)\ +[`C26833`](c26839.md) + diff --git a/docs/code-quality/toc.yml b/docs/code-quality/toc.yml index 86553eebfc9..9e4a1a77dfc 100644 --- a/docs/code-quality/toc.yml +++ b/docs/code-quality/toc.yml @@ -633,7 +633,7 @@ items: href: ../code-quality/c26830.md - name: Warning C26831 href: ../code-quality/c26831.md - - name: " Warning C26839" + - name: " Warning C26838" href: c26838.md - name: Warning C26832 href: ../code-quality/c26832.md From 6a945bce2a9f8b1d7034beacc284cec832e38733 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Thu, 22 Aug 2024 16:13:20 -0700 Subject: [PATCH 0017/2255] Learn Editor: Update c26838.md --- docs/code-quality/c26838.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/code-quality/c26838.md b/docs/code-quality/c26838.md index 0e88b4e5e1d..9aefdd45828 100644 --- a/docs/code-quality/c26838.md +++ b/docs/code-quality/c26838.md @@ -12,7 +12,7 @@ ms.service: # Add the ms.service or ms.prod value ms.topic: # Add the ms.topic value ms.date: 08/22/2024 --- -# Warning `C26839` +# Warning `C26838` > Allocation size is the result of a signed to unsigned narrowing conversion that could result in overflow if the signed value is negative From 869becf570b7dd892087773dab3736eaa5cf308b Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Thu, 22 Aug 2024 16:15:03 -0700 Subject: [PATCH 0018/2255] Learn Editor: Update c26839.md --- docs/code-quality/c26839.md | 15 +++++++++++++++ docs/code-quality/toc.yml | 2 ++ 2 files changed, 17 insertions(+) create mode 100644 docs/code-quality/c26839.md diff --git a/docs/code-quality/c26839.md b/docs/code-quality/c26839.md new file mode 100644 index 00000000000..26a818076aa --- /dev/null +++ b/docs/code-quality/c26839.md @@ -0,0 +1,15 @@ +--- +# Required metadata +# For more information, see https://review.learn.microsoft.com/en-us/help/platform/learn-editor-add-metadata?branch=main +# For valid values of ms.service, ms.prod, and ms.topic, see https://review.learn.microsoft.com/en-us/help/platform/metadata-taxonomies?branch=main + +title: # Add a title for the browser tab +description: # Add a meaningful description for search results +author: Rastaban # GitHub alias +ms.author: philc # Microsoft alias +ms.service: # Add the ms.service or ms.prod value +# ms.prod: # To use ms.prod, uncomment it and delete ms.service +ms.topic: # Add the ms.topic value +ms.date: 08/22/2024 +--- +Warning C26839 \ No newline at end of file diff --git a/docs/code-quality/toc.yml b/docs/code-quality/toc.yml index 9e4a1a77dfc..1dbbec9e89d 100644 --- a/docs/code-quality/toc.yml +++ b/docs/code-quality/toc.yml @@ -635,6 +635,8 @@ items: href: ../code-quality/c26831.md - name: " Warning C26838" href: c26838.md + - name: Warning C26839 + href: c26839.md - name: Warning C26832 href: ../code-quality/c26832.md - name: Warning C26833 From 7e071c1e905ec9a21d322acf80fcaabbaf6b9969 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Thu, 22 Aug 2024 16:18:42 -0700 Subject: [PATCH 0019/2255] Learn Editor: Update c26839.md --- docs/code-quality/c26839.md | 48 ++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/docs/code-quality/c26839.md b/docs/code-quality/c26839.md index 26a818076aa..27e990aa38a 100644 --- a/docs/code-quality/c26839.md +++ b/docs/code-quality/c26839.md @@ -12,4 +12,50 @@ ms.service: # Add the ms.service or ms.prod value ms.topic: # Add the ms.topic value ms.date: 08/22/2024 --- -Warning C26839 \ No newline at end of file +# Warning C26839 + + +> Array new allocation size is the result of a signed to unsigned narrowing conversion that could result in overflow if the signed value is negative + +## Remarks + +This warning reports that the size specified for a array new allocation may be the result of the conversion of a possibly negative signed value to an unsigned value. For example: + +```cpp +int* CreateIntArray(int size) +{ + int* intArray = new int[size]; + return intArray; +} +``` + +In the expression `new int[size]`, `size` is signed. The compiler will convert the signed value to an unsigned value when calculating how many bytes need to be allocated for the array. +When `size` is negative, the result of that calculation may overflow or have unexpected results. + +This check is the same as [`C26838`](c26838.md), but applies only to array new `new T[]`. + +This check sometimes fails to recognize that certain checks can prevent overflows because the check is conservative. + +This warning is available in Visual Studio 2022 version 17.12 and later versions. + +## Example + +To fix the previous code example in which the size calculation might overflow due to a negative signed value, introduce a check to make sure it won't. For example: + +```cpp +int* CreateIntArray(int size) +{ + if (size < 0) + return nullptr; + + int* intArray = new int[size]; + return intArray; +} +``` + +## See also + +[`C26831`](c26831.md)\ +[`C26832`](c26832.md)\ +[`C26838`](c26833.md)\ +[`C26838`](c26838.md) \ No newline at end of file From f3e1548876e414779e07ec7c30f084fab7d532e9 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Thu, 22 Aug 2024 16:18:46 -0700 Subject: [PATCH 0020/2255] update Metadata --- docs/code-quality/c26839.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/docs/code-quality/c26839.md b/docs/code-quality/c26839.md index 27e990aa38a..67958410488 100644 --- a/docs/code-quality/c26839.md +++ b/docs/code-quality/c26839.md @@ -3,13 +3,12 @@ # For more information, see https://review.learn.microsoft.com/en-us/help/platform/learn-editor-add-metadata?branch=main # For valid values of ms.service, ms.prod, and ms.topic, see https://review.learn.microsoft.com/en-us/help/platform/metadata-taxonomies?branch=main -title: # Add a title for the browser tab -description: # Add a meaningful description for search results +title: Warning C26839 +description: '"Describes the Microsoft C/C++ code analysis warning C26839, its causes, and how to address it."' author: Rastaban # GitHub alias ms.author: philc # Microsoft alias -ms.service: # Add the ms.service or ms.prod value -# ms.prod: # To use ms.prod, uncomment it and delete ms.service -ms.topic: # Add the ms.topic value +ms.service: visual-cpp +ms.topic: reference ms.date: 08/22/2024 --- # Warning C26839 From fd37a13a69a6c8baf1439fb738dc33990b9b37fc Mon Sep 17 00:00:00 2001 From: Mahmoud Saleh <12202790+MahmoudGSaleh@users.noreply.github.com> Date: Mon, 2 Dec 2024 13:45:58 -0800 Subject: [PATCH 0021/2255] Add a new guide to audit vcredist installs The new article provides a detailed guide for auditing usage of Visual C++ Runtime versions within an organization --- docs/windows/media/windows-events.png | Bin 0 -> 363204 bytes docs/windows/redist-version-auditing.md | 218 ++++++++++++++++++++++++ docs/windows/toc.yml | 2 + 3 files changed, 220 insertions(+) create mode 100644 docs/windows/media/windows-events.png create mode 100644 docs/windows/redist-version-auditing.md diff --git a/docs/windows/media/windows-events.png b/docs/windows/media/windows-events.png new file mode 100644 index 0000000000000000000000000000000000000000..d8ae9690958433c24c3b0f7c7705c31238d69b69 GIT binary patch literal 363204 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 YJWEn8G&f5Aiw!a`u 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

7q7}RgaP9iR-zuIb&3;o@;v<+W|$&WKSX%C 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%0Ak`zF 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�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 b!I74(YPG^2qsBZ!{F4%s6D<|i`}}_ZZQ|(J literal 0 HcmV?d00001 diff --git a/docs/windows/redist-version-auditing.md b/docs/windows/redist-version-auditing.md new file mode 100644 index 00000000000..7bb2b4edeb9 --- /dev/null +++ b/docs/windows/redist-version-auditing.md @@ -0,0 +1,218 @@ +--- +title: "How To Audit Visual C++ Runtime Version Usage" +description: "This article provides a detailed guide for auditing usage of Visual C++ Runtime versions within your organization." +ms.date: 12/2/2024 +helpviewer_keywords: + [ + "find redist version installed", + "audit redist version installation", + ] +author: MahmoudGSaleh +ms.author: msaleh +--- + +# How To Audit Visual C++ Runtime Version Usage Within Your Organization + +The Microsoft Visual C++ Redistributable and the Visual C++ Studio Runtime (collectively, "VC Runtime") is a critical component to thousands of applications. Across your enterprise network, machines may still be running applications that install and use an out-of-support version of the VC Runtime. NTFS File Auditing can be used to identify such usage as a step towards helping you replace these applications with ones that take a dependency on a supported version of the VC Runtime. This guide will walk you through setting up NTFS File Auditing, provide troubleshooting tips, and highlight the benefits of regular audits. + +For details on the versions of VC Runtime no longer supported, see [Microsoft Visual C++ Redistributable latest supported downloads](https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist). + +## Enabling NTFS File Auditing to determine usage of VC Runtime + +NTFS File Auditing can be used to determine which process is calling VC Runtime files. You can use this information on machines with legacy versions of the VC Runtime already installed to determine which applications are calling the unsupported versions of the VC Runtime. + +This guide will first provide steps to manually enable NTFS File Auditing and review logs. Because there are several component files that can be used by an application, this guide also provides and recommends that you use PowerShell's [Get-Acl](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.security/get-acl?view=powershell-5.1) and [Set-Acl](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.security/set-acl?view=powershell-5.1) cmdlets to update Auditing permissions. For details on how to configure the audit policies on a file, see [Apply a basic audit policy on a file or folder.](https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/apply-a-basic-audit-policy-on-a-file-or-folder) + +### Manually enable object access auditing on the system + +Object access must be enabled before you enable file level auditing. + +1. Open the Group Policy Editor (with gpedit.msc). +2. Navigate to Computer Configuration > Windows Settings > Security Settings > Advanced Audit Policy Configuration > System Audit Policies > Object Access. +3. Double-click on Audit File System. In the Audit File System Properties dialog, select Configure the following audit events, select Success and then select OK. +4. Close the policy editor app + +Alternatively, you may use auditpol.exe to enable object access. + +1. List the current settings with AuditPol.exe /get /category:"Object Access". +2. Enable/Disable with AuditPol.exe /set /category:"Object Access" /subcategory:"File System" /success:enable. + +### Manually enable auditing on a file + +To monitor which process is accessing a VC Runtime file, enable auditing on the file. + +1. Right-click on the file that you want to audit, select Properties, and then select Security tab. + + * See the section below [VC Runtime installed locations](#vcruntime_install_location) to find the VC Runtime files installed on a machine. + +2. Select Advanced. + +3. In the Advanced Security Settings dialog box, select Auditing tab and then select Continue. + +4. To add a new auditing rule, select Add. In the Auditing Entry dialog, select a principal, then type the name of the user or group you want to add (Everyone) and then select OK. + +5. In the Type box, use the default of Success. + +6. Select Show advance permissions, select Clear all and then select Traverse folder / execute file, and select OK. + +7. At this point there should be a new row in the Auditing entries: matching what you have selected. Select OK. + +8. In the Properties Dialog, select OK. + +The audit rule is enabled now. + +### Manually review audit logs + +NTFS File Auditing will generate [_Event 4663: An attempt was made to access an object_](https://learn.microsoft.com/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4663) for each file that includes + audit permission and the+ process accessing process namethe file. + +1. Open Event Viewer: Press Windows + R, type eventvwr.msc, and press Enter. + +2. Navigate to Security Logs: In the Event Viewer, expand Windows Logs and select Security. The results pane lists individual security events. + +3. Filter and Analyze the Logs: Use the Filter Current Log option to narrow down the events to Event ID 4663 (Audit Success for the File System Category). + +For an example of a File Access Auditing Event 4663, see [4663(S): An attempt was made to access an object.](https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4663) + +![Event Viewer showing security logs](media/windows-events.png) + +### Using PowerShell to enable auditing of VC Runtime usage + +The general workflow for updating the File Auditing Permissions with PowerShell is as follows: + +1. Define the [file system audit rule](https://learn.microsoft.com/en-us/dotnet/api/system.security.accesscontrol.filesystemauditrule.-ctor) to be applied to the file(s). + +2. Obtain a file's security descriptor with [Get-Acl](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.security/get-acl?view=powershell-5.1). + +3. [Apply the audit rule](https://learn.microsoft.com/en-us/dotnet/api/system.security.accesscontrol.filesystemsecurity.setaccessrule) to the security descriptor. + +4. Apply the updated security descriptor on the original file with [Set-Acl](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.security/set-acl?view=powershell-5.1). + +5. View File Access Auditing Event 4663 records with [Get-WinEvent](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.diagnostics/get-winevent?view=powershell-5.1). + +### PowerShell: Enable auditing on out-of-support VC Runtime files + +The following PowerShell section of code will enable usage auditing of the currently installed out-of-support VC Runtime files. + +```sh +function Get-AuditRuleForFile { + $auditRuleArguments = 'Everyone' <# identity #>, + 'ExecuteFile, Traverse' <# fileSystemRights #>, + 'Success' <# flags #> + $auditRule = New-Object System.Security.AccessControl.FileSystemAuditRule($auditRuleArguments) + + return $auditRule +} + +function Set-FileAuditRule { + param ( + [Parameter(Mandatory = $true)] + [ValidateNotNullOrEmpty()] + [string]$file, + [Parameter(Mandatory = $true)] + [ValidateNotNullOrEmpty()] + [System.Security.AccessControl.FileSystemAuditRule]$auditRule + ) + + $existingAcl = Get-Acl -Path $file + $existingAcl.AddAuditRule($auditRule) | Out-Null + Set-Acl -Path $file -AclObject $existingAcl +} + +$newAuditRule = Get-AuditRuleForFile + +# Visual Studio Redistributable for 2005 (VC++ 8.0) and 2008 (VC++ 9.0) +Get-ChildItem "$ENV:SystemRoot\WinSxS\Fusion" -filter '*.dll' -ErrorAction SilentlyContinue -Recurse | +Where-Object FullName -IMatch 'microsoft\.vc[89]0' | +ForEach-Object { + Set-FileAuditRule $_.FullName $newAuditRule +} + +# Visual Studio Redistributable for 2010 (VC++ 10.0), 2012 (VC++ 11.0) and 2013 (VC++ 12.0) +$languageCodes = 'chs|cht|deu|enu|esn|fra|ita|jpn|kor|rus' +$versions = '(1[012]0)' +$regex = "^((atl|msvc[pr]|vcamp|vccorlib|vcomp)$versions|mfc$versions(u|$languageCodes)?|mfcm$versions(u)?)\.dll$" +Get-ChildItem "$ENV:SystemRoot\SysWOW64","$ENV:SystemRoot\System32" -filter '*.dll' | +Where-Object Name -imatch $regex | +ForEach-Object { + Set-FileAuditRule $_.FullName $newAuditRule +} +``` + +### PowerShell: Viewing file auditing events + +PowerShell provides Get-WinEvent to obtain event records for various event logs. + +The following PowerShell section of code will list all of the Auditing Event 4663 records over the past 24 hours. + +```sh +function Get-AuditEntries { + param ( + [Parameter(Mandatory = $true)] + [ValidateNotNullOrEmpty()] + [System.DateTime]$oldestTime + ) + Get-WinEvent -FilterHashtable @{LogName='Security';Id=4663;StartTime=(Get-Date $oldestTime)} | + ForEach-Object { + $record = [ordered]@{} + $record['TimeCreated'] = $_.TimeCreated + $accessName = ($_.Message | + Select-String -Pattern "Accesses:[\t\s]+(?.+)").Matches.Groups[1] + ([xml]$_.ToXML()).Event.EventData.ChildNodes | + ForEach-Object -Begin { + $record[$accessName.Name]=$accessName.Value.Trim() + } -Process { + $record[$_.Name] = $_.'#text' + } + [PSCustomObject]$record + } | + Where-Object { $_.ObjectName -imatch '\.dll$'} +} + +Get-AuditEntries -oldestTime (Get-Date).AddHours(-24) +``` + +Example output from the above block of code is as follows: + +``` +TimeCreated : 11/20/2024 5:00:11 AM +Accesses : Execute/Traverse +SubjectUserSid : \*\*\*\*\* +SubjectUserName : \*\*\*\*\* +SubjectDomainName : WORKGROUP +SubjectLogonId : \*\*\*\*\* +ObjectServer : Security +ObjectType : File +ObjectName : C:\\Windows\\WinSxS\\amd64\_microsoft.vc90.crt\_1fc8b3b9a1e18e3b\_9.0.30729.9635\_none\_08e2c157a83ed5da\\msvcr90.dll +HandleId : 0x93c +AccessList : %%4421 +AccessMask : 0x20 +ProcessId : 0x24d4 +ProcessName : C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe +ResourceAttributes : S:AI +``` + +### Next Steps After Auditing VC Runtime Usage + +After you have determined which processes are using the VC Runtime files or installing the VC Redistributable, uninstall those applications or upgrade them to newer versions that do not depend on unsupported VC Runtimes. + +Note that some Microsoft applications do require legacy versions of the VC Runtime. For details, see [Visual C++ Redistributable and runtime libraries FAQ | Microsoft Learn](https://learn.microsoft.com/lifecycle/faq/visual-c-faq). + + + +## VC Runtime installed locations + +The following section lists where each version of the VC Runtime component files are installed. + +| **Visual Studio Version**| **Installed Location(s)**| +| ------------- | ------------- | +| Visual Studio 2013 (VC++ 12.0) | `%SystemRoot%\\System32, %SystemRoot%\\SysWOW64` | +| Visual Studio 2012 (VC++ 11.0) | `%SystemRoot%\\System32, %SystemRoot%\\SysWOW64` | +| Visual Studio 2010 (VC++ 10.0) | `%SystemRoot%\\System32, %SystemRoot%\\SysWOW64` | +| Visual Studio 2008 (VC++ 9.0) | `%SystemRoot%\\WinSxS\\Fusion` | +| Visual Studio 2005 (VC++ 8.0) | `%SystemRoot%\\WinSxS\\Fusion` | + +## See also + +* [Redistributing Visual C++ Files](redistributing-visual-cpp-files.md) +* [The latest supported Visual C++ downloads](latest-supported-vc-redist.md) +* [Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](https://learn.microsoft.com/en-us/lifecycle/faq/visual-c-faq) diff --git a/docs/windows/toc.yml b/docs/windows/toc.yml index 7cd02983e04..563ac2869b4 100644 --- a/docs/windows/toc.yml +++ b/docs/windows/toc.yml @@ -147,6 +147,8 @@ items: href: ../windows/redistributing-an-atl-application.md - name: Latest Supported Visual C++ Redistributable Downloads href: ../windows/latest-supported-vc-redist.md + - name: How To Audit Visual C++ Runtime Version Usage + href: ../windows/redist-version-auditing.md - name: Deployment examples expanded: false items: From f5d57bf6f5fb094423bc0839ed24a5b4ca6e250f Mon Sep 17 00:00:00 2001 From: Mahmoud Saleh <12202790+MahmoudGSaleh@users.noreply.github.com> Date: Mon, 9 Dec 2024 14:50:34 -0800 Subject: [PATCH 0022/2255] Address review feedback --- docs/windows/redist-version-auditing.md | 156 ++++++++++++------------ 1 file changed, 78 insertions(+), 78 deletions(-) diff --git a/docs/windows/redist-version-auditing.md b/docs/windows/redist-version-auditing.md index 7bb2b4edeb9..69c746b75c6 100644 --- a/docs/windows/redist-version-auditing.md +++ b/docs/windows/redist-version-auditing.md @@ -1,5 +1,5 @@ --- -title: "How To Audit Visual C++ Runtime Version Usage" +title: "cpp-redist-version-auditing" description: "This article provides a detailed guide for auditing usage of Visual C++ Runtime versions within your organization." ms.date: 12/2/2024 helpviewer_keywords: @@ -15,13 +15,13 @@ ms.author: msaleh The Microsoft Visual C++ Redistributable and the Visual C++ Studio Runtime (collectively, "VC Runtime") is a critical component to thousands of applications. Across your enterprise network, machines may still be running applications that install and use an out-of-support version of the VC Runtime. NTFS File Auditing can be used to identify such usage as a step towards helping you replace these applications with ones that take a dependency on a supported version of the VC Runtime. This guide will walk you through setting up NTFS File Auditing, provide troubleshooting tips, and highlight the benefits of regular audits. -For details on the versions of VC Runtime no longer supported, see [Microsoft Visual C++ Redistributable latest supported downloads](https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist). +For details on the versions of VC Runtime no longer supported, see [Microsoft Visual C++ Redistributable latest supported downloads](/cpp/windows/latest-supported-vc-redist). ## Enabling NTFS File Auditing to determine usage of VC Runtime NTFS File Auditing can be used to determine which process is calling VC Runtime files. You can use this information on machines with legacy versions of the VC Runtime already installed to determine which applications are calling the unsupported versions of the VC Runtime. -This guide will first provide steps to manually enable NTFS File Auditing and review logs. Because there are several component files that can be used by an application, this guide also provides and recommends that you use PowerShell's [Get-Acl](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.security/get-acl?view=powershell-5.1) and [Set-Acl](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.security/set-acl?view=powershell-5.1) cmdlets to update Auditing permissions. For details on how to configure the audit policies on a file, see [Apply a basic audit policy on a file or folder.](https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/apply-a-basic-audit-policy-on-a-file-or-folder) +This guide will first provide steps to manually enable NTFS File Auditing and review logs. Because there are several component files that can be used by an application, this guide also provides and recommends that you use PowerShell's [Get-Acl](/powershell/module/microsoft.powershell.security/get-acl) and [Set-Acl](/powershell/module/microsoft.powershell.security/set-acl) cmdlets to update Auditing permissions. For details on how to configure the audit policies on a file, see [Apply a basic audit policy on a file or folder.](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/apply-a-basic-audit-policy-on-a-file-or-folder) ### Manually enable object access auditing on the system @@ -34,8 +34,8 @@ Object access must be enabled before you enable file level auditing. Alternatively, you may use auditpol.exe to enable object access. -1. List the current settings with AuditPol.exe /get /category:"Object Access". -2. Enable/Disable with AuditPol.exe /set /category:"Object Access" /subcategory:"File System" /success:enable. +1. List the current settings with `AuditPol.exe /get /category:"Object Access"`. +2. Enable/Disable with `AuditPol.exe /set /category:"Object Access" /subcategory:"File System" /success:enable`. ### Manually enable auditing on a file @@ -63,15 +63,15 @@ The audit rule is enabled now. ### Manually review audit logs -NTFS File Auditing will generate [_Event 4663: An attempt was made to access an object_](https://learn.microsoft.com/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4663) for each file that includes + audit permission and the+ process accessing process namethe file. +NTFS File Auditing will generate ["Event 4663: An attempt was made to access an object"](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4663) for each file that includes + audit permission and the+ process accessing process namethe file. -1. Open Event Viewer: Press Windows + R, type eventvwr.msc, and press Enter. +1. Open Event Viewer: Press Windows + R, type `eventvwr.msc`, and press Enter. 2. Navigate to Security Logs: In the Event Viewer, expand Windows Logs and select Security. The results pane lists individual security events. 3. Filter and Analyze the Logs: Use the Filter Current Log option to narrow down the events to Event ID 4663 (Audit Success for the File System Category). -For an example of a File Access Auditing Event 4663, see [4663(S): An attempt was made to access an object.](https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4663) +For an example of a File Access Auditing Event 4663, see ["4663(S): An attempt was made to access an object."](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4663) ![Event Viewer showing security logs](media/windows-events.png) @@ -79,62 +79,62 @@ For an example of a File Access Auditing Event 4663, see [4663(S): An attempt wa The general workflow for updating the File Auditing Permissions with PowerShell is as follows: -1. Define the [file system audit rule](https://learn.microsoft.com/en-us/dotnet/api/system.security.accesscontrol.filesystemauditrule.-ctor) to be applied to the file(s). +1. Define the [file system audit rule](/dotnet/api/system.security.accesscontrol.filesystemauditrule.-ctor) to be applied to the file(s). -2. Obtain a file's security descriptor with [Get-Acl](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.security/get-acl?view=powershell-5.1). +2. Obtain a file's security descriptor with [Get-Acl](/powershell/module/microsoft.powershell.security/get-acl). -3. [Apply the audit rule](https://learn.microsoft.com/en-us/dotnet/api/system.security.accesscontrol.filesystemsecurity.setaccessrule) to the security descriptor. +3. [Apply the audit rule](/dotnet/api/system.security.accesscontrol.filesystemsecurity.setaccessrule) to the security descriptor. -4. Apply the updated security descriptor on the original file with [Set-Acl](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.security/set-acl?view=powershell-5.1). +4. Apply the updated security descriptor on the original file with [Set-Acl](/powershell/module/microsoft.powershell.security/set-acl). -5. View File Access Auditing Event 4663 records with [Get-WinEvent](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.diagnostics/get-winevent?view=powershell-5.1). +5. View File Access Auditing Event 4663 records with [Get-WinEvent](/powershell/module/microsoft.powershell.diagnostics/get-winevent). ### PowerShell: Enable auditing on out-of-support VC Runtime files The following PowerShell section of code will enable usage auditing of the currently installed out-of-support VC Runtime files. ```sh -function Get-AuditRuleForFile { - $auditRuleArguments = 'Everyone' <# identity #>, - 'ExecuteFile, Traverse' <# fileSystemRights #>, - 'Success' <# flags #> - $auditRule = New-Object System.Security.AccessControl.FileSystemAuditRule($auditRuleArguments) - - return $auditRule -} - -function Set-FileAuditRule { - param ( - [Parameter(Mandatory = $true)] - [ValidateNotNullOrEmpty()] - [string]$file, - [Parameter(Mandatory = $true)] - [ValidateNotNullOrEmpty()] - [System.Security.AccessControl.FileSystemAuditRule]$auditRule - ) - - $existingAcl = Get-Acl -Path $file - $existingAcl.AddAuditRule($auditRule) | Out-Null - Set-Acl -Path $file -AclObject $existingAcl -} - -$newAuditRule = Get-AuditRuleForFile - -# Visual Studio Redistributable for 2005 (VC++ 8.0) and 2008 (VC++ 9.0) -Get-ChildItem "$ENV:SystemRoot\WinSxS\Fusion" -filter '*.dll' -ErrorAction SilentlyContinue -Recurse | -Where-Object FullName -IMatch 'microsoft\.vc[89]0' | -ForEach-Object { - Set-FileAuditRule $_.FullName $newAuditRule -} - -# Visual Studio Redistributable for 2010 (VC++ 10.0), 2012 (VC++ 11.0) and 2013 (VC++ 12.0) -$languageCodes = 'chs|cht|deu|enu|esn|fra|ita|jpn|kor|rus' -$versions = '(1[012]0)' -$regex = "^((atl|msvc[pr]|vcamp|vccorlib|vcomp)$versions|mfc$versions(u|$languageCodes)?|mfcm$versions(u)?)\.dll$" -Get-ChildItem "$ENV:SystemRoot\SysWOW64","$ENV:SystemRoot\System32" -filter '*.dll' | -Where-Object Name -imatch $regex | -ForEach-Object { - Set-FileAuditRule $_.FullName $newAuditRule +function Get-AuditRuleForFile { + $auditRuleArguments = 'Everyone' <# identity #>, + 'ExecuteFile, Traverse' <# fileSystemRights #>, + 'Success' <# flags #> + $auditRule = New-Object System.Security.AccessControl.FileSystemAuditRule($auditRuleArguments) + + return $auditRule +} + +function Set-FileAuditRule { + param ( + [Parameter(Mandatory = $true)] + [ValidateNotNullOrEmpty()] + [string]$file, + [Parameter(Mandatory = $true)] + [ValidateNotNullOrEmpty()] + [System.Security.AccessControl.FileSystemAuditRule]$auditRule + ) + + $existingAcl = Get-Acl -Path $file + $existingAcl.AddAuditRule($auditRule) | Out-Null + Set-Acl -Path $file -AclObject $existingAcl +} + +$newAuditRule = Get-AuditRuleForFile + +# Visual Studio Redistributable for 2005 (VC++ 8.0) and 2008 (VC++ 9.0) +Get-ChildItem "$ENV:SystemRoot\WinSxS\Fusion" -filter '*.dll' -ErrorAction SilentlyContinue -Recurse | +Where-Object FullName -IMatch 'microsoft\.vc[89]0' | +ForEach-Object { + Set-FileAuditRule $_.FullName $newAuditRule +} + +# Visual Studio Redistributable for 2010 (VC++ 10.0), 2012 (VC++ 11.0) and 2013 (VC++ 12.0) +$languageCodes = 'chs|cht|deu|enu|esn|fra|ita|jpn|kor|rus' +$versions = '(1[012]0)' +$regex = "^((atl|msvc[pr]|vcamp|vccorlib|vcomp)$versions|mfc$versions(u|$languageCodes)?|mfcm$versions(u)?)\.dll$" +Get-ChildItem "$ENV:SystemRoot\SysWOW64","$ENV:SystemRoot\System32" -filter '*.dll' | +Where-Object Name -imatch $regex | +ForEach-Object { + Set-FileAuditRule $_.FullName $newAuditRule } ``` @@ -145,30 +145,30 @@ PowerShell provides Get-WinEvent to obtain event records for various event logs. The following PowerShell section of code will list all of the Auditing Event 4663 records over the past 24 hours. ```sh -function Get-AuditEntries { - param ( - [Parameter(Mandatory = $true)] - [ValidateNotNullOrEmpty()] - [System.DateTime]$oldestTime - ) - Get-WinEvent -FilterHashtable @{LogName='Security';Id=4663;StartTime=(Get-Date $oldestTime)} | - ForEach-Object { - $record = [ordered]@{} - $record['TimeCreated'] = $_.TimeCreated - $accessName = ($_.Message | - Select-String -Pattern "Accesses:[\t\s]+(?.+)").Matches.Groups[1] - ([xml]$_.ToXML()).Event.EventData.ChildNodes | - ForEach-Object -Begin { - $record[$accessName.Name]=$accessName.Value.Trim() - } -Process { - $record[$_.Name] = $_.'#text' - } - [PSCustomObject]$record - } | - Where-Object { $_.ObjectName -imatch '\.dll$'} +function Get-AuditEntries { + param ( + [Parameter(Mandatory = $true)] + [ValidateNotNullOrEmpty()] + [System.DateTime]$oldestTime + ) + Get-WinEvent -FilterHashtable @{LogName='Security';Id=4663;StartTime=(Get-Date $oldestTime)} | + ForEach-Object { + $record = [ordered]@{} + $record['TimeCreated'] = $_.TimeCreated + $accessName = ($_.Message | + Select-String -Pattern "Accesses:[\t\s]+(?.+)").Matches.Groups[1] + ([xml]$_.ToXML()).Event.EventData.ChildNodes | + ForEach-Object -Begin { + $record[$accessName.Name]=$accessName.Value.Trim() + } -Process { + $record[$_.Name] = $_.'#text' + } + [PSCustomObject]$record + } | + Where-Object { $_.ObjectName -imatch '\.dll$'} } -Get-AuditEntries -oldestTime (Get-Date).AddHours(-24) +Get-AuditEntries -oldestTime (Get-Date).AddHours(-24) ``` Example output from the above block of code is as follows: @@ -195,7 +195,7 @@ ResourceAttributes : S:AI After you have determined which processes are using the VC Runtime files or installing the VC Redistributable, uninstall those applications or upgrade them to newer versions that do not depend on unsupported VC Runtimes. -Note that some Microsoft applications do require legacy versions of the VC Runtime. For details, see [Visual C++ Redistributable and runtime libraries FAQ | Microsoft Learn](https://learn.microsoft.com/lifecycle/faq/visual-c-faq). +Note that some Microsoft applications do require legacy versions of the VC Runtime. For details, see [Visual C++ Redistributable and runtime libraries FAQ | Microsoft Learn](/lifecycle/faq/visual-c-faq). @@ -215,4 +215,4 @@ The following section lists where each version of the VC Runtime component files * [Redistributing Visual C++ Files](redistributing-visual-cpp-files.md) * [The latest supported Visual C++ downloads](latest-supported-vc-redist.md) -* [Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](https://learn.microsoft.com/en-us/lifecycle/faq/visual-c-faq) +* [Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq) From beaa2f229ca4c86d118b1ad0fbe18a8c1f0f8c63 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 20 Dec 2024 22:39:38 +0800 Subject: [PATCH 0023/2255] Elide extraneous periods --- docs/cppcx/fundamental-types-c-cx.md | 5 ++--- docs/mfc/reference/cdockablepane-class.md | 4 ++-- .../concrt/reference/concurrent-unordered-map-class.md | 9 ++++----- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/docs/cppcx/fundamental-types-c-cx.md b/docs/cppcx/fundamental-types-c-cx.md index 4f1bd6c1d8b..47155e3cdb7 100644 --- a/docs/cppcx/fundamental-types-c-cx.md +++ b/docs/cppcx/fundamental-types-c-cx.md @@ -1,12 +1,11 @@ --- -description: "Learn more about: Fundamental types (C++/CX)" title: "Fundamental types (C++/CX)" +description: "Learn more about: Fundamental types (C++/CX)" ms.date: "01/22/2017" -ms.assetid: c9f82907-25f2-440b-91d6-afb8dbd46ea6 --- # Fundamental types (C++/CX) -In addition to the standard C++ built-in types, C++/CX supports the type system that's defined by the Windows Runtime architecture by providing typedefs for the Windows Runtime fundamental types that map to standard C++ types.. C++/CX implements Boolean, character, and numeric fundamental types. These typedefs are defined in the `default` namespace, which never needs to be specified explicitly. In addition, C++/CX provides wrappers and concrete implementations for certain Windows Runtime types and interfaces. +In addition to the standard C++ built-in types, C++/CX supports the type system that's defined by the Windows Runtime architecture by providing typedefs for the Windows Runtime fundamental types that map to standard C++ types. C++/CX implements Boolean, character, and numeric fundamental types. These typedefs are defined in the `default` namespace, which never needs to be specified explicitly. In addition, C++/CX provides wrappers and concrete implementations for certain Windows Runtime types and interfaces. ## Boolean and Character Types diff --git a/docs/mfc/reference/cdockablepane-class.md b/docs/mfc/reference/cdockablepane-class.md index 159c429e7f6..de861c46d4c 100644 --- a/docs/mfc/reference/cdockablepane-class.md +++ b/docs/mfc/reference/cdockablepane-class.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: CDockablePane Class" title: "CDockablePane Class" +description: "Learn more about: CDockablePane Class" ms.date: "07/02/2019" f1_keywords: ["CDockablePane", "AFXDOCKABLEPANE/CDockablePane", "AFXDOCKABLEPANE/CDockablePane::CDockablePane", "AFXDOCKABLEPANE/CDockablePane::AttachToTabWnd", "AFXDOCKABLEPANE/CDockablePane::CalcFixedLayout", "AFXDOCKABLEPANE/CDockablePane::CanAcceptMiniFrame", "AFXDOCKABLEPANE/CDockablePane::CanAcceptPane", "AFXDOCKABLEPANE/CDockablePane::CanAutoHide", "AFXDOCKABLEPANE/CDockablePane::CanBeAttached", "AFXDOCKABLEPANE/CDockablePane::ConvertToTabbedDocument", "AFXDOCKABLEPANE/CDockablePane::CopyState", "AFXDOCKABLEPANE/CDockablePane::Create", "AFXDOCKABLEPANE/CDockablePane::CreateDefaultPaneDivider", "AFXDOCKABLEPANE/CDockablePane::CreateEx", "AFXDOCKABLEPANE/CDockablePane::CreateTabbedPane", "AFXDOCKABLEPANE/CDockablePane::DockPaneContainer", "AFXDOCKABLEPANE/CDockablePane::DockPaneStandard", "AFXDOCKABLEPANE/CDockablePane::DockToRecentPos", "AFXDOCKABLEPANE/CDockablePane::DockToWindow", "AFXDOCKABLEPANE/CDockablePane::EnableAutohideAll", "AFXDOCKABLEPANE/CDockablePane::EnableGripper", "AFXDOCKABLEPANE/CDockablePane::GetAHRestoredRect", "AFXDOCKABLEPANE/CDockablePane::GetAHSlideMode", "AFXDOCKABLEPANE/CDockablePane::GetCaptionHeight", "AFXDOCKABLEPANE/CDockablePane::GetDefaultPaneDivider", "AFXDOCKABLEPANE/CDockablePane::GetDockingStatus", "AFXDOCKABLEPANE/CDockablePane::GetDragSensitivity", "AFXDOCKABLEPANE/CDockablePane::GetLastPercentInPaneContainer", "AFXDOCKABLEPANE/CDockablePane::GetTabArea", "AFXDOCKABLEPANE/CDockablePane::GetTabbedPaneRTC", "AFXDOCKABLEPANE/CDockablePane::HasAutoHideMode", "AFXDOCKABLEPANE/CDockablePane::HitTest", "AFXDOCKABLEPANE/CDockablePane::IsAutohideAllEnabled", "AFXDOCKABLEPANE/CDockablePane::IsAutoHideMode", "AFXDOCKABLEPANE/CDockablePane::IsDocked", "AFXDOCKABLEPANE/CDockablePane::IsHideInAutoHideMode", "AFXDOCKABLEPANE/CDockablePane::IsInFloatingMultiPaneFrameWnd", "AFXDOCKABLEPANE/CDockablePane::IsResizable", "AFXDOCKABLEPANE/CDockablePane::IsTabLocationBottom", "AFXDOCKABLEPANE/CDockablePane::IsTracked", "AFXDOCKABLEPANE/CDockablePane::IsVisible", "AFXDOCKABLEPANE/CDockablePane::OnAfterChangeParent", "AFXDOCKABLEPANE/CDockablePane::OnAfterDockFromMiniFrame", "AFXDOCKABLEPANE/CDockablePane::OnBeforeChangeParent", "AFXDOCKABLEPANE/CDockablePane::OnBeforeFloat", "AFXDOCKABLEPANE/CDockablePane::RemoveFromDefaultPaneDividier", "AFXDOCKABLEPANE/CDockablePane::ReplacePane", "AFXDOCKABLEPANE/CDockablePane::RestoreDefaultPaneDivider", "AFXDOCKABLEPANE/CDockablePane::SetAutoHideMode", "AFXDOCKABLEPANE/CDockablePane::SetAutoHideParents", "AFXDOCKABLEPANE/CDockablePane::SetLastPercentInPaneContainer", "AFXDOCKABLEPANE/CDockablePane::SetRestoredDefaultPaneDivider", "AFXDOCKABLEPANE/CDockablePane::SetTabbedPaneRTC", "AFXDOCKABLEPANE/CDockablePane::ShowPane", "AFXDOCKABLEPANE/CDockablePane::Slide", "AFXDOCKABLEPANE/CDockablePane::ToggleAutoHide", "AFXDOCKABLEPANE/CDockablePane::UndockPane", "AFXDOCKABLEPANE/CDockablePane::CheckAutoHideCondition", "AFXDOCKABLEPANE/CDockablePane::CheckStopSlideCondition", "AFXDOCKABLEPANE/CDockablePane::DrawCaption", "AFXDOCKABLEPANE/CDockablePane::OnPressButtons", "AFXDOCKABLEPANE/CDockablePane::OnSlide", "AFXDOCKABLEPANE/CDockablePane::m_bDisableAnimation", "AFXDOCKABLEPANE/CDockablePane::m_bHideInAutoHideMode", "AFXDOCKABLEPANE/CDockablePane::m_nSlideSteps"] helpviewer_keywords: ["CDockablePane [MFC], CDockablePane", "CDockablePane [MFC], AttachToTabWnd", "CDockablePane [MFC], CalcFixedLayout", "CDockablePane [MFC], CanAcceptMiniFrame", "CDockablePane [MFC], CanAcceptPane", "CDockablePane [MFC], CanAutoHide", "CDockablePane [MFC], CanBeAttached", "CDockablePane [MFC], ConvertToTabbedDocument", "CDockablePane [MFC], CopyState", "CDockablePane [MFC], Create", "CDockablePane [MFC], CreateDefaultPaneDivider", "CDockablePane [MFC], CreateEx", "CDockablePane [MFC], CreateTabbedPane", "CDockablePane [MFC], DockPaneContainer", "CDockablePane [MFC], DockPaneStandard", "CDockablePane [MFC], DockToRecentPos", "CDockablePane [MFC], DockToWindow", "CDockablePane [MFC], EnableAutohideAll", "CDockablePane [MFC], EnableGripper", "CDockablePane [MFC], GetAHRestoredRect", "CDockablePane [MFC], GetAHSlideMode", "CDockablePane [MFC], GetCaptionHeight", "CDockablePane [MFC], GetDefaultPaneDivider", "CDockablePane [MFC], GetDockingStatus", "CDockablePane [MFC], GetDragSensitivity", "CDockablePane [MFC], GetLastPercentInPaneContainer", "CDockablePane [MFC], GetTabArea", "CDockablePane [MFC], GetTabbedPaneRTC", "CDockablePane [MFC], HasAutoHideMode", "CDockablePane [MFC], HitTest", "CDockablePane [MFC], IsAutohideAllEnabled", "CDockablePane [MFC], IsAutoHideMode", "CDockablePane [MFC], IsDocked", "CDockablePane [MFC], IsHideInAutoHideMode", "CDockablePane [MFC], IsInFloatingMultiPaneFrameWnd", "CDockablePane [MFC], IsResizable", "CDockablePane [MFC], IsTabLocationBottom", "CDockablePane [MFC], IsTracked", "CDockablePane [MFC], IsVisible", "CDockablePane [MFC], OnAfterChangeParent", "CDockablePane [MFC], OnAfterDockFromMiniFrame", "CDockablePane [MFC], OnBeforeChangeParent", "CDockablePane [MFC], OnBeforeFloat", "CDockablePane [MFC], RemoveFromDefaultPaneDividier", "CDockablePane [MFC], ReplacePane", "CDockablePane [MFC], RestoreDefaultPaneDivider", "CDockablePane [MFC], SetAutoHideMode", "CDockablePane [MFC], SetAutoHideParents", "CDockablePane [MFC], SetLastPercentInPaneContainer", "CDockablePane [MFC], SetRestoredDefaultPaneDivider", "CDockablePane [MFC], SetTabbedPaneRTC", "CDockablePane [MFC], ShowPane", "CDockablePane [MFC], Slide", "CDockablePane [MFC], ToggleAutoHide", "CDockablePane [MFC], UndockPane", "CDockablePane [MFC], CheckAutoHideCondition", "CDockablePane [MFC], CheckStopSlideCondition", "CDockablePane [MFC], DrawCaption", "CDockablePane [MFC], OnPressButtons", "CDockablePane [MFC], OnSlide", "CDockablePane [MFC], m_bDisableAnimation", "CDockablePane [MFC], m_bHideInAutoHideMode", "CDockablePane [MFC], m_nSlideSteps"] @@ -874,7 +874,7 @@ One of the following status values: The framework calls this method to handle docking of a floating pane. -For floating toolbars or docking panes that use the `DT_IMMEDIATE` docking mode, the framework delays the dock command to enable the user to move the window out of the client area of the parent frame before docking occurs. The length of the delay is measured in milliseconds and is controlled by the [`CDockingManager::m_nTimeOutBeforeToolBarDock`](../../mfc/reference/cdockingmanager-class.md#m_ntimeoutbeforetoolbardock) data member.. The default value of [`CDockingManager::m_nTimeOutBeforeToolBarDock`](../../mfc/reference/cdockingmanager-class.md#m_ntimeoutbeforetoolbardock) is 200. This behavior emulates the docking behavior of Microsoft Word 2007. +For floating toolbars or docking panes that use the `DT_IMMEDIATE` docking mode, the framework delays the dock command to enable the user to move the window out of the client area of the parent frame before docking occurs. The length of the delay is measured in milliseconds and is controlled by the [`CDockingManager::m_nTimeOutBeforeToolBarDock`](../../mfc/reference/cdockingmanager-class.md#m_ntimeoutbeforetoolbardock) data member. The default value of [`CDockingManager::m_nTimeOutBeforeToolBarDock`](../../mfc/reference/cdockingmanager-class.md#m_ntimeoutbeforetoolbardock) is 200. This behavior emulates the docking behavior of Microsoft Word 2007. For delayed docking states (`CS_DELAY_DOCK` and `CS_DELAY_DOCK_TO_TAB`), the framework doesn't perform docking until the user releases the mouse button. If a pane uses the `DT_STANDARD` docking mode, the framework displays a rectangle at the projected docking location. If a pane uses the `DT_SMART` docking mode, the framework displays smart docking markers and semi-transparent rectangles at the projected docking location. To specify the docking mode for your pane, call the [`CBasePane::SetDockingMode`](../../mfc/reference/cbasepane-class.md#setdockingmode) method. For more information about smart docking, see [`CDockingManager::GetSmartDockingParams`](../../mfc/reference/cdockingmanager-class.md#getsmartdockingparams). diff --git a/docs/parallel/concrt/reference/concurrent-unordered-map-class.md b/docs/parallel/concrt/reference/concurrent-unordered-map-class.md index c9e47fc292c..e3db26f763b 100644 --- a/docs/parallel/concrt/reference/concurrent-unordered-map-class.md +++ b/docs/parallel/concrt/reference/concurrent-unordered-map-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: concurrent_unordered_map Class" title: "concurrent_unordered_map Class" +description: "Learn more about: concurrent_unordered_map Class" ms.date: "11/04/2016" f1_keywords: ["concurrent_unordered_map", "CONCURRENT_UNORDERED_MAP/concurrency::concurrent_unordered_map", "CONCURRENT_UNORDERED_MAP/concurrency::concurrent_unordered_map::concurrent_unordered_map", "CONCURRENT_UNORDERED_MAP/concurrency::concurrent_unordered_map::at", "CONCURRENT_UNORDERED_MAP/concurrency::concurrent_unordered_map::hash_function", "CONCURRENT_UNORDERED_MAP/concurrency::concurrent_unordered_map::insert", "CONCURRENT_UNORDERED_MAP/concurrency::concurrent_unordered_map::key_eq", "CONCURRENT_UNORDERED_MAP/concurrency::concurrent_unordered_map::swap", "CONCURRENT_UNORDERED_MAP/concurrency::concurrent_unordered_map::unsafe_erase"] helpviewer_keywords: ["concurrent_unordered_map class"] -ms.assetid: b2d879dd-87ef-4af9-a266-a5443fd538b8 --- # concurrent_unordered_map Class @@ -81,7 +80,7 @@ The type that represents the stored allocator object that encapsulates details a |Name|Description| |----------|-----------------| -|[at](#at)|Overloaded. Finds an element in a `concurrent_unordered_map` with a specified key value.. This method is concurrency-safe.| +|[at](#at)|Overloaded. Finds an element in a `concurrent_unordered_map` with a specified key value. This method is concurrency-safe.| |[hash_function](#hash_function)|Gets the stored hash function object.| |[insert](#insert)|Overloaded. Adds elements to the `concurrent_unordered_map` object.| |[key_eq](#key_eq)|Gets the stored equality comparison function object.| @@ -115,7 +114,7 @@ For detailed information on the `concurrent_unordered_map` class, see [Parallel ## at -Finds an element in a `concurrent_unordered_map` with a specified key value.. This method is concurrency-safe. +Finds an element in a `concurrent_unordered_map` with a specified key value. This method is concurrency-safe. ```cpp mapped_type& at(const key_type& KVal); @@ -766,5 +765,5 @@ The maximum number of buckets in this container. ## See also -[concurrency Namespace](concurrency-namespace.md)
+[concurrency Namespace](concurrency-namespace.md)\ [Parallel Containers and Objects](../../../parallel/concrt/parallel-containers-and-objects.md) From e0caee444a7a886e958ea306a669a22b021cdaad Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 22 Dec 2024 21:52:30 +0800 Subject: [PATCH 0024/2255] Replace all single quotation marks with apostrophes --- .../tutorials/build-insights-function-view.md | 2 +- .../build-insights-included-files-view.md | 2 +- docs/code-quality/c6394.md | 4 ++-- docs/ide/include-cleanup-config.md | 2 +- docs/ide/lnt-make-member-function-const.md | 14 +++++++------- .../what-s-new-for-visual-cpp-in-visual-studio.md | 12 ++++++------ docs/sanitizers/asan-continue-on-error.md | 2 +- docs/standard-library/iota-view-class.md | 2 +- 8 files changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/build-insights/tutorials/build-insights-function-view.md b/docs/build-insights/tutorials/build-insights-function-view.md index 3e311500dc5..dda90485e92 100644 --- a/docs/build-insights/tutorials/build-insights-function-view.md +++ b/docs/build-insights/tutorials/build-insights-function-view.md @@ -66,7 +66,7 @@ In the window for the ETL file, choose the **Functions** tab. It shows the funct In the Function Name column, performPhysicsCalculations() is highlighted and marked with a fire icon.::: :::image-end::: -The **Time [sec, %]** column shows how long it took to compile each function in [wall clock responsibility time (WCTR)](https://devblogs.microsoft.com/cppblog/faster-cpp-builds-simplified-a-new-metric-for-time/#:~:text=Today%2C%20we%E2%80%99d%20like%20to%20teach%20you%20about%20a,your%20build%2C%20even%20in%20the%20presence%20of%20parallelism). This metric distributes the wall clock time among functions based on their use of parallel compiler threads. For example, if two different threads are compiling two different functions simultaneously within a one-second period, each function’s WCTR is recorded as 0.5 seconds. This reflects each function’s proportional share of the total compilation time, taking into account the resources each consumed during parallel execution. Thus, WCTR provides a better measure of the impact each function has on the overall build time in environments where multiple compilation activities occur simultaneously. +The **Time [sec, %]** column shows how long it took to compile each function in [wall clock responsibility time (WCTR)](https://devblogs.microsoft.com/cppblog/faster-cpp-builds-simplified-a-new-metric-for-time/#:~:text=Today%2C%20we%E2%80%99d%20like%20to%20teach%20you%20about%20a,your%20build%2C%20even%20in%20the%20presence%20of%20parallelism). This metric distributes the wall clock time among functions based on their use of parallel compiler threads. For example, if two different threads are compiling two different functions simultaneously within a one-second period, each function's WCTR is recorded as 0.5 seconds. This reflects each function's proportional share of the total compilation time, taking into account the resources each consumed during parallel execution. Thus, WCTR provides a better measure of the impact each function has on the overall build time in environments where multiple compilation activities occur simultaneously. The **Forceinline Size** column shows roughly how many instructions were generated for the function. Click the chevron before the function name to see the individual inlined functions that were expanded in that function how roughly how many instructions were generated for each. diff --git a/docs/build-insights/tutorials/build-insights-included-files-view.md b/docs/build-insights/tutorials/build-insights-included-files-view.md index 94dbf1ccde9..3563f96d718 100644 --- a/docs/build-insights/tutorials/build-insights-included-files-view.md +++ b/docs/build-insights/tutorials/build-insights-included-files-view.md @@ -171,7 +171,7 @@ Or, you can right-click a file in the **Include Tree** view to jump to it in the - The **Included Files** and **Include Tree** views provide a filter box to find a header file that you're interested in. It does partial matches on the name you provide. - Sometimes the parse time reported for a header file is different depending on which file includes it. This can be due to the interplay of different `#define`s that affect which parts of the header are expanded, file caching, and other system factors. - If you forget what the **Included Files** or **Include Tree** view is trying to show you, hover over the tab to see a tooltip that describes the view. For example, if you hover over the **Include Tree** tab, the tooltip says: "View that shows include statistics for every file where the children nodes are the files included by the parent node." -- You may see cases (like `Windows.h`) where the aggregated duration of all the times for a header file is longer than the duration of the entire build. What’s happening is that headers are being parsed on multiple threads at the same time. If two threads simultaneously spend one second parsing a header file, that's 2 seconds of build time even though only one second of wall clock time has gone by. For more information, see [wall clock responsibility time (WCTR)](https://devblogs.microsoft.com/cppblog/faster-cpp-builds-simplified-a-new-metric-for-time/#:~:text=Today%2C%20we%E2%80%99d%20like%20to%20teach%20you%20about%20a,your%20build%2C%20even%20in%20the%20presence%20of%20parallelism). +- You may see cases (like `Windows.h`) where the aggregated duration of all the times for a header file is longer than the duration of the entire build. What's happening is that headers are being parsed on multiple threads at the same time. If two threads simultaneously spend one second parsing a header file, that's 2 seconds of build time even though only one second of wall clock time has gone by. For more information, see [wall clock responsibility time (WCTR)](https://devblogs.microsoft.com/cppblog/faster-cpp-builds-simplified-a-new-metric-for-time/#:~:text=Today%2C%20we%E2%80%99d%20like%20to%20teach%20you%20about%20a,your%20build%2C%20even%20in%20the%20presence%20of%20parallelism). ## Troubleshooting diff --git a/docs/code-quality/c6394.md b/docs/code-quality/c6394.md index 7d5c7b4db2a..d4a4fe66689 100644 --- a/docs/code-quality/c6394.md +++ b/docs/code-quality/c6394.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Warning C6394" title: Warning C6394 +description: "Learn more about: Warning C6394" ms.date: 11/29/2023 f1_keywords: ["C6394", "LEAP_YEAR_INVALID_DATE_KEYED_LOOKUP_MUTABLE", "__WARNING_LEAP_YEAR_INVALID_DATE_KEYED_LOOKUP_MUTABLE"] helpviewer_keywords: ["C6394"] @@ -52,7 +52,7 @@ void foo(int year) ## Heuristics -This rule is enforced by checking if a lookup table has an initial size of 365 elements, but can be expanded to 366. However, it doesn't check if the table’s size is adjusted through proper leap year check or not, and so is a low confidence warning. +This rule is enforced by checking if a lookup table has an initial size of 365 elements, but can be expanded to 366. However, it doesn't check if the table's size is adjusted through proper leap year check or not, and so is a low confidence warning. ## See also diff --git a/docs/ide/include-cleanup-config.md b/docs/ide/include-cleanup-config.md index 477149438f8..5d4e2813902 100644 --- a/docs/ide/include-cleanup-config.md +++ b/docs/ide/include-cleanup-config.md @@ -56,7 +56,7 @@ The `.editorconfig` settings that you can use with Include Cleanup are: |--|--|--|--| | `cpp_include_cleanup_add_missing_error_tag_type`

Sets the error level of add transitive include messages. | `none`
`suggestion`
`warning`
`error` | `cpp_include_cleanup_add_missing_error_tag_type = suggestion` | | `cpp_include_cleanup_remove_unused_error_tag_type`

Sets the error level of remove unused include messages. | `none`
`suggestion`
`warning`
`error`
`dimmed` | `cpp_include_cleanup_remove_unused_error_tag_type = dimmed` | -| `cpp_include_cleanup_excluded_files`

Excludes the specified files from Include Cleanup messages. You won’t get a suggestion related to the header at all, whether to add it or that it's unused. | *filename* | `cpp_include_cleanup_excluded_files = vcruntime.h, vcruntime_string.h` | +| `cpp_include_cleanup_excluded_files`

Excludes the specified files from Include Cleanup messages. You won't get a suggestion related to the header at all, whether to add it or that it's unused. | *filename* | `cpp_include_cleanup_excluded_files = vcruntime.h, vcruntime_string.h` | | `cpp_include_cleanup_required_files`

Specify that usage of *file1* requires *file2*. For example, specify that if you use `atlwin.h` that `altbase.h` must also be included. | *file1*:*file2* | `cpp_include_cleanup_required_files = atlwin.h:altbase.h, atlcom.h:altbase.h` | | `cpp_include_cleanup_replacement_files`

Replaces *file1* with *file2* during Include Cleanup processing. For example, you may prefer using `cstdio` over `stdio.h`. If you have a file with both `#include ` and `#include ` and you consume content only from `stdio.h`, with this setting Include Cleanup will tell you to remove `stdio.h` because it replaced the usage of `cstdio` with `stdio.h` during processing. If you don't use the contents from either, Include Cleanup will tell you to remove both.| *file1*:*file2* | `cpp_include_cleanup_replacement_files = stdio.h:cstdio,stdint.h:cstdint` | | `cpp_include_cleanup_alternate_files`

Don't generate a message for indirect include *file2* if *file1* is included. For example, if you `#include ` and are only using something from its indirectly included header `winerror.h`, Include Cleanup won't prompt to add `winerror.h`. Useful when you prefer to include a facade header file instead of the indirect includes it contains. | *file1*:*file2* | `cpp_include_cleanup_alternate_files = windows.h:winerror.h, windows.h:minwindef.h` | diff --git a/docs/ide/lnt-make-member-function-const.md b/docs/ide/lnt-make-member-function-const.md index 9e419bf9193..f8af826955e 100644 --- a/docs/ide/lnt-make-member-function-const.md +++ b/docs/ide/lnt-make-member-function-const.md @@ -8,7 +8,7 @@ monikerRange: ">=msvc-170" --- # `lnt-make-member-function-const` -When a member function doesn’t modify the object's state, annotate it with the `const` keyword. This guidance comes from the [C++ Core Guideline Con.2](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#con2-by-default-make-member-functions-const). +When a member function doesn't modify the object's state, annotate it with the `const` keyword. This guidance comes from the [C++ Core Guideline Con.2](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#con2-by-default-make-member-functions-const). ## Example @@ -19,8 +19,8 @@ class MyClass { public: - int getValue() { return value; } // Flagged: ‘getValue’ doesn't modify the object's state. - void setValue(int newValue) { value = newValue; } // OK: ‘setValue’ modifies the object's state. + int getValue() { return value; } // Flagged: 'getValue' doesn't modify the object's state. + void setValue(int newValue) { value = newValue; } // OK: 'setValue' modifies the object's state. private: @@ -28,7 +28,7 @@ private: }; double getRadius() -{ // Flagged: ‘getRadius’ doesn't modify the object's state. +{ // Flagged: 'getRadius' doesn't modify the object's state. return radius; } ``` @@ -45,7 +45,7 @@ class MyClass public: int getValue() const { return value; } // Added const - void setValue(int newValue) { value = newValue; } // OK: ‘setValue’ modifies the object's state. + void setValue(int newValue) { value = newValue; } // OK: 'setValue' modifies the object's state. private: @@ -54,7 +54,7 @@ private: }; double getRadius() const // added const -{ // ‘getRadius’ doesn't modify the object's state. +{ // 'getRadius' doesn't modify the object's state. return radius; } ``` @@ -75,4 +75,4 @@ The current implementation of this check allows you to add `const` to member fun ## See also -[IntelliSense code linter for C++ overview](cpp-linter-overview.md) \ No newline at end of file +[IntelliSense code linter for C++ overview](cpp-linter-overview.md) 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 a24cc6cb366..ff5fced41b7 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 @@ -202,14 +202,14 @@ A partial list of new features: - C++ structured diagnostics in the Output window and a new problem details window that provides more information about the error. For more information, see [Structured SARIF Output](../build/reference/sarif-output.md) and [Problem Details Window](/visualstudio/ide/reference/problem-details-window). - A feature that lets you visualize the size and alignment of your classes, structs, unions, base types, or enums even before the code is compiled. Hover over the identifier and a Quick Info displays the size and alignment information. -- A feature that suggests when to mark member functions `const` because they don’t modify the object’s state. Hover over a member function and click the light bulb icon to mark the function as `const`. +- A feature that suggests when to mark member functions `const` because they don't modify the object's state. Hover over a member function and click the light bulb icon to mark the function as `const`. - Visual Studio now prompts you to mark global functions as static via a screwdriver icon that appears by the function name. Click the screwdriver icon to mark the function as static. - Unused #include directives are dimmed in the editor. You can hover over a dimmed include and use the light bulb menu to either remove that include or all unused includes. You can also add `#include` directives for entities that are indirectly included via other headers. For more information, see [Clean up C/C++ includes in Visual Studio](../ide/include-cleanup-overview.md). - More Unreal Engine support: - Unreal Engine Test Adapter lets you discover, run, manage, and debug your Unreal Engine tests without leaving the Visual Studio IDE. - With Unreal Engine Code Snippets, you can find common Unreal Engine constructs as snippets in your member list. - Build Insights is now integrated with Visual Studio 2022 and works with MSBuild and CMake projects using MSVC. You can now see additional information about the compilation of a function such as how long it took to compile and the number of ForceInlines, and the impact of header files on build time. For more information, see [Tutorial: Troubleshoot function inlining on build time](../build-insights/tutorials/build-insights-function-view.md) and [Tutorial: Troubleshoot header file impact on build time](../build-insights/tutorials/build-insights-included-files-view.md). -- Remote Linux unit test support now lets you run your CTest and GTest tests on your remote Linux machines from Visual Studio’s Test Explorer, just like your local tests. +- Remote Linux unit test support now lets you run your CTest and GTest tests on your remote Linux machines from Visual Studio's Test Explorer, just like your local tests. ## What's new for C++ in Visual Studio version 17.7 @@ -217,7 +217,7 @@ A partial list of new features: | For more information about | See | |---|---| -| What's new for C++ developers | [What’s new for C++ Developers in Visual Studio 2022 17.7](https://devblogs.microsoft.com/cppblog/whats-new-for-c-developers-in-visual-studio-2022-17-7/) | +| What's new for C++ developers | [What's new for C++ Developers in Visual Studio 2022 17.7](https://devblogs.microsoft.com/cppblog/whats-new-for-c-developers-in-visual-studio-2022-17-7/) | | New C++ features specific to game development | [Unleashing the Power of Visual Studio 2022 for C++ Game Development](https://devblogs.microsoft.com/visualstudio/unleashing-the-power-of-visual-studio-2022-for-c-game-development/) | | Standard Library (STL) merged C++23 features, LWG issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.7](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-177) | | New features in the Visual Studio 17.7 IDE |[Visual Studio 2022 version 17.7 Release Notes](/visualstudio/releases/2022/release-notes-v17.7) | @@ -239,7 +239,7 @@ A partial list of new features: | For more information about | See | |---|---| -| What's new for C++ developers | [What’s New for C++ Developers in Visual Studio 2022 17.6](https://devblogs.microsoft.com/cppblog/visual-studio-17-6-for-cpp-devs/) | +| What's new for C++ developers | [What's New for C++ Developers in Visual Studio 2022 17.6](https://devblogs.microsoft.com/cppblog/visual-studio-17-6-for-cpp-devs/) | | Standard Library (STL) merged C++23 features, LWG issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.6](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-176) | | New features in the Visual Studio 17.6 IDE | [Visual Studio 2022 version 17.6 Release Notes](/visualstudio/releases/2022/release-notes-v17.6) | | C++ language conformance improvements in Visual Studio 2022 17.6 | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022](cpp-conformance-improvements.md#improvements_176) | @@ -257,7 +257,7 @@ A partial list of new features includes: | For more information about | See | |---|---| -| What's new for C++ developers | [What’s New for C++ Developers in Visual Studio 2022 17.5](https://devblogs.microsoft.com/cppblog/visual-studio-17-5-for-cpp-devs/) | +| What's new for C++ developers | [What's New for C++ Developers in Visual Studio 2022 17.5](https://devblogs.microsoft.com/cppblog/visual-studio-17-5-for-cpp-devs/) | | Standard Library (STL) merged C++23 features, LWG issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.5](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-175) | | New features in the Visual Studio 17.5 IDE | [Visual Studio 2022 version 17.5 Release Notes](/visualstudio/releases/2022/release-notes-v17.5) | @@ -296,7 +296,7 @@ A partial list of new features includes: | For more information about | See | |---|---| -| What's new for C++ developers | [What’s New for C++ Developers in Visual Studio 2022 17.4](https://devblogs.microsoft.com/cppblog/whats-new-for-cpp-developers-in-visual-studio-2022-17-4/) | +| What's new for C++ developers | [What's New for C++ Developers in Visual Studio 2022 17.4](https://devblogs.microsoft.com/cppblog/whats-new-for-cpp-developers-in-visual-studio-2022-17-4/) | | Standard Library (STL) merged C++23 features, LWG issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.4](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-174) | | New features in the Visual Studio 17.4 IDE | [Visual Studio 2022 version 17.4 Release Notes](/visualstudio/releases/2022/release-notes-v17.4) | | C++ language conformance improvements in Visual Studio 2022 17.4 | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022](cpp-conformance-improvements.md#improvements_174) | diff --git a/docs/sanitizers/asan-continue-on-error.md b/docs/sanitizers/asan-continue-on-error.md index 0e5694dfc73..ecd6332e8e3 100644 --- a/docs/sanitizers/asan-continue-on-error.md +++ b/docs/sanitizers/asan-continue-on-error.md @@ -20,7 +20,7 @@ It's a good practice to create a checked build of your C or C++ app with ASAN tu When your app finishes, you get a summary of the memory issues. With COE, you can compile and deploy an existing application into limited production to find memory safety issues. You can run the checked build for days to fully exercise the code, although the app will run slower due to the ASAN instrumentation. -You can use this feature to create a new shipping gate. If all your existing tests pass, but COE reports a memory safety error or a leak, don’t ship the new code or integrate it into a parent branch. +You can use this feature to create a new shipping gate. If all your existing tests pass, but COE reports a memory safety error or a leak, don't ship the new code or integrate it into a parent branch. Don't deploy a build with COE enabled into production! COE is intended to be used in testing and development environments only. You shouldn't use an ASAN enabled build in production because of the performance impact of the instrumentation added to detect memory errors, the risk of exposing the internal implementation if errors are reported, and to avoid increasing the surface area of possible security exploits by shipping the library functions that ASAN substitutes for memory allocation, freeing, and so on. diff --git a/docs/standard-library/iota-view-class.md b/docs/standard-library/iota-view-class.md index c54f71c12d0..ecc936307ca 100644 --- a/docs/standard-library/iota-view-class.md +++ b/docs/standard-library/iota-view-class.md @@ -67,7 +67,7 @@ This view is typically used to iterate over a series of values. For example: ```cpp for (int i : iota_view{1, 10}) // iterate over a view of the integers 1 through 9 { - std::cout << i << ’ ’; // 1 2 3 4 5 6 7 8 9 + std::cout << i << ' '; // 1 2 3 4 5 6 7 8 9 } ``` From 022b681440e5b88789ee9d494783239b0a6946b9 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 23 Dec 2024 23:39:58 +0800 Subject: [PATCH 0025/2255] Prefer standard main function signatures --- .../find-memory-leaks-using-the-crt-library.md | 4 ++-- docs/code-quality/c6387.md | 7 +++---- docs/sanitizers/asan-continue-on-error.md | 6 +++--- docs/sanitizers/error-stack-use-after-scope.md | 4 ++-- docs/standard-library/span-functions.md | 6 +++--- 5 files changed, 13 insertions(+), 14 deletions(-) diff --git a/docs/c-runtime-library/find-memory-leaks-using-the-crt-library.md b/docs/c-runtime-library/find-memory-leaks-using-the-crt-library.md index dea101aead3..5859bd08c47 100644 --- a/docs/c-runtime-library/find-memory-leaks-using-the-crt-library.md +++ b/docs/c-runtime-library/find-memory-leaks-using-the-crt-library.md @@ -2,7 +2,7 @@ title: Find memory leaks with the CRT library description: Learn how the C/C++ debugger and C Run-time Library (CRT) can help find memory leaks. The techniques include memory-leak reports and comparing memory snapshots. ms.date: 02/03/2023 -helpviewer_keywords: +helpviewer_keywords: - breakpoints, on memory allocation - _CrtMemState - _CrtMemCheckpoint @@ -165,7 +165,7 @@ struct Pod { int x; }; -void main() { +int main() { Pod* pPod = DBG_NEW Pod; pPod = DBG_NEW Pod; // Oops, leaked the original pPod! delete pPod; diff --git a/docs/code-quality/c6387.md b/docs/code-quality/c6387.md index d96f377b6d6..a925d0b3977 100644 --- a/docs/code-quality/c6387.md +++ b/docs/code-quality/c6387.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Warning C6387" title: Warning C6387 +description: "Learn more about: Warning C6387" ms.date: 11/04/2016 f1_keywords: ["C6387", "INVALID_PARAM_VALUE_1", "__WARNING_INVALID_PARAM_VALUE_1"] helpviewer_keywords: ["C6387"] -ms.assetid: 3ea2fc4d-ffc3-4c3c-bfae-d42aa56235d8 --- # Warning C6387 @@ -27,7 +26,7 @@ _Post_ _Null_ char * g(); void f(_In_ char *pch); -void main() +int main() { char *pCh = g(); f(pCh); // Warning C6387 @@ -43,7 +42,7 @@ _Post_ _Notnull_ char * g(); void f(_In_ char *pch); -void main() +int main() { char *pCh = g(); f(pCh); diff --git a/docs/sanitizers/asan-continue-on-error.md b/docs/sanitizers/asan-continue-on-error.md index 0e5694dfc73..6824c8bde64 100644 --- a/docs/sanitizers/asan-continue-on-error.md +++ b/docs/sanitizers/asan-continue-on-error.md @@ -196,7 +196,7 @@ Create the example: char buffer[10] = {0,1,2,3,4,5,6,7,8,9}; - void main() + int main() { char* inverted_buf= func(buffer, 10); } @@ -317,7 +317,7 @@ int foo_redundant(unsigned long arg_var) return ret; } -void main() +int main() { int cnt = 0; @@ -351,4 +351,4 @@ With the new ASAN runtime, no extra binaries need to be deployed with your app. [Example memory safety errors](asan.md#error-types)\ [-Zi compiler flag](../build/reference/z7-zi-zi-debug-information-format.md#zi)\ [-fsanitize=address compiler flag](../build/reference/fsanitize.md)\ -[Top 25 most dangerous software weaknesses](https://cwe.mitre.org/top25/archive/2021/2021_cwe_top25.html) \ No newline at end of file +[Top 25 most dangerous software weaknesses](https://cwe.mitre.org/top25/archive/2021/2021_cwe_top25.html) diff --git a/docs/sanitizers/error-stack-use-after-scope.md b/docs/sanitizers/error-stack-use-after-scope.md index fa5a88daa94..3acd81ed70b 100644 --- a/docs/sanitizers/error-stack-use-after-scope.md +++ b/docs/sanitizers/error-stack-use-after-scope.md @@ -80,7 +80,7 @@ devenv /debugexe example2.exe struct IntHolder { explicit IntHolder(int* val = 0) : val_(val) { } ~IntHolder() { - printf("Value: %d\n", *val_); // Bom! + printf("Value: %d\n", *val_); // Boom! } void set(int* val) { val_ = val; } int* get() { return val_; } @@ -138,7 +138,7 @@ void temp_from_conversion() { a.print(); } -void main() { +int main() { explicit_temp(); temp_from_conversion(); } diff --git a/docs/standard-library/span-functions.md b/docs/standard-library/span-functions.md index 456d5c7133e..4c92144c44f 100644 --- a/docs/standard-library/span-functions.md +++ b/docs/standard-library/span-functions.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: functions" title: " functions" +description: "Learn more about: functions" ms.date: "05/28/2020" f1_keywords: ["span/std::span::as_bytes", "span/std::as_writable_bytes"] helpviewer_keywords: ["std::span [C++], as_writable_bytes", "std::as_bytes [C++]"] @@ -47,7 +47,7 @@ A `span` to the first item stored in the span where `S` is `{rein using namespace std; -void main() +int main() { int a[] = { 0,1,2 }; span mySpan(a); @@ -87,7 +87,7 @@ A `span` to the first item stored in the span where `S` is `{reinterpre using namespace std; -void main() +int main() { int a[] = { 0,1,2 }; span mySpan(a); From 2b20c4cc7ecad807ad20bc2c3b5f4a4f28c30807 Mon Sep 17 00:00:00 2001 From: Winston Liu Date: Tue, 7 Jan 2025 09:39:08 -0800 Subject: [PATCH 0026/2255] C26135: Update comments to use correct annotation --- docs/code-quality/c26135.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/code-quality/c26135.md b/docs/code-quality/c26135.md index bbd4c04054a..96db147d013 100644 --- a/docs/code-quality/c26135.md +++ b/docs/code-quality/c26135.md @@ -25,14 +25,14 @@ typedef struct _DATA void MyEnter(DATA* p) { // Warning C26135: - // Missing side effect annotation _Acquires_lock_(&p->cs) + // Missing side effect annotation _Acquires_lock_(p->cs) EnterCriticalSection(&p->cs); } void MyLeave(DATA* p) { // warning C26135: - // Missing side effect annotation _Releases_lock_(&p->cs) + // Missing side effect annotation _Releases_lock_(p->cs) LeaveCriticalSection(&p->cs); } ``` From cb1448599c058f502e8c65584bc12e953885afee Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 8 Jan 2025 11:25:59 -0800 Subject: [PATCH 0027/2255] point out using forward slash --- docs/build-insights/tutorials/build-insights-tips.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/build-insights/tutorials/build-insights-tips.md b/docs/build-insights/tutorials/build-insights-tips.md index c46fd438338..0ae9f0de961 100644 --- a/docs/build-insights/tutorials/build-insights-tips.md +++ b/docs/build-insights/tutorials/build-insights-tips.md @@ -1,7 +1,7 @@ --- title: "Build Insights tips and tricks" description: "Learn time-saving tips for using Build Insights." -ms.date: 11/11/2024 +ms.date: 1/8/2025 author: tylermsft ms.author: twhitney ms.topic: article @@ -33,11 +33,11 @@ To try it, click the filter button on the filter column header and select the pr The filter button is selected and a list of projects appears. Checkboxes next to two projects are checked."::: :::image-end::: -You can also use file wildcards to filter results. The search is case-insensitive: +You can also use file wildcards to filter results. The search is case-insensitive and you should use forward slashes (`/`) as path separators: :::image type="content" source="./media/build-insights-glob-filter.png" alt-text="A screenshot of the build insights filter dialog. There's a files to include text box and a files to exclude text box."::: -This allows you to exclude files from a specific folder or only include files from a specific folder. For example, if your source is located at `C:\src\`, you could include files only from the renderer directory and its subdirectories by putting `C:/src/dev/renderer/**` into the **files to include** text box. +This allows you to exclude files from a specific folder or only include files from a specific folder. For example, if your source is located at `C:\src\`, you could include files only from the renderer directory and its subdirectories by putting `C:/src/dev/renderer/**` into the **files to include** text box. Use forward slashes (`/`) as path separators. Here are some other examples: From 0eb4774ee413a26a831db2e10102641ad9790f8b Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 8 Jan 2025 12:29:30 -0800 Subject: [PATCH 0028/2255] fix image syntax --- docs/build-insights/tutorials/build-insights-tips.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/build-insights/tutorials/build-insights-tips.md b/docs/build-insights/tutorials/build-insights-tips.md index 0ae9f0de961..1e0b6c57387 100644 --- a/docs/build-insights/tutorials/build-insights-tips.md +++ b/docs/build-insights/tutorials/build-insights-tips.md @@ -30,7 +30,7 @@ If you have a large solution with many projects, you can filter the Build Insigh To try it, click the filter button on the filter column header and select the projects you want to see results for: :::image type="complex" source="./media/build-insights-filter-by-project.png" alt-text="A screenshot of the Build Insights window with the Included Files tab open."::: - The filter button is selected and a list of projects appears. Checkboxes next to two projects are checked."::: + The filter button is selected and a list of projects appears. Checkboxes next to two projects are checked. :::image-end::: You can also use file wildcards to filter results. The search is case-insensitive and you should use forward slashes (`/`) as path separators: @@ -55,10 +55,10 @@ This feature requires Visual Studio 2022 17.12 or later. Now you can designate a folder to automatically save Build Insight reports to so you can easily access them. -To set the designated folder, go to **Tools** > **Options** > **C++ Build Insights** > **Trace Collection**. Set a path in the **Store Build Insights reports in this directory** field: +To set the designated folder, go to **Tools** > **Options** > **C++ Build Insights** > **Trace Collection**. Set a path in **Store Build Insights reports in this directory**: :::image type="complex" source="./media/build-insights-reports-directory.png" alt-text="A screenshot of the options window."::: - tools > Options. Build Insights > Trace Collection is selected in the left pane. Collection Settings appears on the right. The Store Build Insights reports in this directory checkbox is selected, and the text box contains the path c:\users\contoso\workspace as an example."::: + Tools > Options. Build Insights > Trace Collection is selected in the left pane. Collection Settings appears on the right. The Store Build Insights reports in this directory checkbox is selected, and the text box contains the path c:\users\contoso\workspace as an example." :::image-end::: Reports are automatically saved to this folder when you run Build Insights. If a path isn't set, the `TEMP` folder is used. From 9d2f18acc7ea01c1f0d849c4c027b7bec688463f Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 8 Jan 2025 13:30:20 -0800 Subject: [PATCH 0029/2255] fix image syntax --- docs/build-insights/tutorials/build-insights-tips.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build-insights/tutorials/build-insights-tips.md b/docs/build-insights/tutorials/build-insights-tips.md index 1e0b6c57387..d071aadddaf 100644 --- a/docs/build-insights/tutorials/build-insights-tips.md +++ b/docs/build-insights/tutorials/build-insights-tips.md @@ -55,10 +55,10 @@ This feature requires Visual Studio 2022 17.12 or later. Now you can designate a folder to automatically save Build Insight reports to so you can easily access them. -To set the designated folder, go to **Tools** > **Options** > **C++ Build Insights** > **Trace Collection**. Set a path in **Store Build Insights reports in this directory**: +To set the designated folder, go to **Tools** > **Options** > **C++ Build Insights** > **Trace Collection**. Set a path in the **Store Build Insights reports in this directory** textbox: :::image type="complex" source="./media/build-insights-reports-directory.png" alt-text="A screenshot of the options window."::: - Tools > Options. Build Insights > Trace Collection is selected in the left pane. Collection Settings appears on the right. The Store Build Insights reports in this directory checkbox is selected, and the text box contains the path c:\users\contoso\workspace as an example." + In the left pane, Build Insights > Trace Collection is selected. In the collection settings, the checkbox for Store Build Insights reports in this directory is selected, and the directory text box contains the path c:\users\contoso\workspace as an example. :::image-end::: Reports are automatically saved to this folder when you run Build Insights. If a path isn't set, the `TEMP` folder is used. From 6c2230c480c864553a9da5b662932d6045cbf057 Mon Sep 17 00:00:00 2001 From: Amy Wishnousky Date: Fri, 10 Jan 2025 11:53:36 -0800 Subject: [PATCH 0030/2255] Update link-options.md Include direct instructions for how to add a link option via the Visual Studio UI. --- docs/c-runtime-library/link-options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/c-runtime-library/link-options.md b/docs/c-runtime-library/link-options.md index 33a73b92deb..193a918f16a 100644 --- a/docs/c-runtime-library/link-options.md +++ b/docs/c-runtime-library/link-options.md @@ -7,7 +7,7 @@ ms.assetid: 05b5a77b-9dd1-494b-ae46-314598c770bb --- # Link options -The CRT lib directory includes several small object files that enable specific CRT features without any code change. These object files are called "link options" since you only have to add them to the linker command line to use them. +The CRT lib directory includes several small object files that enable specific CRT features without any code change. These object files are called "link options" since you only have to add them to the linker command line to use them. To do this from Visual Studio, right click on your project, go to Properties, and then add the name of the link option under Linker > Input > Additional Dependencies. CLR pure mode versions of these objects are deprecated in Visual Studio 2015 and unsupported in Visual Studio 2017. Use the regular versions for native and /clr code. From d41e016910be15ba18b2f7a5bc81db5353acb54b Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 10 Jan 2025 12:17:51 -0800 Subject: [PATCH 0031/2255] Update link options documentation for clarity Applied style guidelines for UI --- docs/c-runtime-library/link-options.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/c-runtime-library/link-options.md b/docs/c-runtime-library/link-options.md index 193a918f16a..62d606dfacc 100644 --- a/docs/c-runtime-library/link-options.md +++ b/docs/c-runtime-library/link-options.md @@ -7,9 +7,9 @@ ms.assetid: 05b5a77b-9dd1-494b-ae46-314598c770bb --- # Link options -The CRT lib directory includes several small object files that enable specific CRT features without any code change. These object files are called "link options" since you only have to add them to the linker command line to use them. To do this from Visual Studio, right click on your project, go to Properties, and then add the name of the link option under Linker > Input > Additional Dependencies. +The CRT lib directory includes several small object files that enable specific CRT features without code changes. These object files are called "link options" because you only have to add them to the linker command line to use them. To do this from Visual Studio, right-click your project and choose **Properties**. Under **Configuration Properties**, choose **Linker** > **Input** > **Additional Dependencies** and specify the additional items to add to the link command line. -CLR pure mode versions of these objects are deprecated in Visual Studio 2015 and unsupported in Visual Studio 2017. Use the regular versions for native and /clr code. +CLR pure mode versions of these objects are deprecated in Visual Studio 2015 and unsupported in Visual Studio 2017. Use the regular versions for native and `/clr` code. | Native and /clr | Pure mode | Description | |---|---|---| From b95edf2d58c984086470da36820b81b4f37bba5f Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 10 Jan 2025 12:19:55 -0800 Subject: [PATCH 0032/2255] Update link options documentation in CRT library clarify where to right-click the project --- docs/c-runtime-library/link-options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/c-runtime-library/link-options.md b/docs/c-runtime-library/link-options.md index 62d606dfacc..8197f0b67d2 100644 --- a/docs/c-runtime-library/link-options.md +++ b/docs/c-runtime-library/link-options.md @@ -7,7 +7,7 @@ ms.assetid: 05b5a77b-9dd1-494b-ae46-314598c770bb --- # Link options -The CRT lib directory includes several small object files that enable specific CRT features without code changes. These object files are called "link options" because you only have to add them to the linker command line to use them. To do this from Visual Studio, right-click your project and choose **Properties**. Under **Configuration Properties**, choose **Linker** > **Input** > **Additional Dependencies** and specify the additional items to add to the link command line. +The CRT lib directory includes several small object files that enable specific CRT features without code changes. These object files are called "link options" because you only have to add them to the linker command line to use them. To do this from Visual Studio, in the Solution Explorer right-click your project and choose **Properties**. Under **Configuration Properties**, choose **Linker** > **Input** > **Additional Dependencies** and specify the additional items to add to the link command line. CLR pure mode versions of these objects are deprecated in Visual Studio 2015 and unsupported in Visual Studio 2017. Use the regular versions for native and `/clr` code. From 803b212bebbca050ba861ebe83b1c7fe41c9fd68 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 10 Jan 2025 15:06:47 -0800 Subject: [PATCH 0033/2255] update metadata --- docs/code-quality/c26838.md | 18 ++++++++---------- docs/code-quality/c26839.md | 10 ++++------ 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/docs/code-quality/c26838.md b/docs/code-quality/c26838.md index 9aefdd45828..6c671ea7dd0 100644 --- a/docs/code-quality/c26838.md +++ b/docs/code-quality/c26838.md @@ -3,16 +3,14 @@ # For more information, see https://review.learn.microsoft.com/en-us/help/platform/learn-editor-add-metadata?branch=main # For valid values of ms.service, ms.prod, and ms.topic, see https://review.learn.microsoft.com/en-us/help/platform/metadata-taxonomies?branch=main -title: # Add a title for the browser tab -description: # Add a meaningful description for search results -author: Rastaban # GitHub alias -ms.author: philc # Microsoft alias -ms.service: # Add the ms.service or ms.prod value -# ms.prod: # To use ms.prod, uncomment it and delete ms.service -ms.topic: # Add the ms.topic value -ms.date: 08/22/2024 +title: Warning C26838 +description: Learn about Microsoft C++ code analysis warning. C26838 +author: Rastaban +ms.author: philc +ms.topic: reference +ms.date: 1/10/2025 --- -# Warning `C26838` +# Warning C26838 > Allocation size is the result of a signed to unsigned narrowing conversion that could result in overflow if the signed value is negative @@ -38,7 +36,7 @@ This check applies to common allocation functions like `new`, `malloc`, and `Vir This check sometimes fails to recognize that certain checks can prevent overflows because the check is conservative. -This warning is available in Visual Studio 2022 version 17.12 and later versions. +This warning is available in Visual Studio 2022 version 17.13 and later versions. ## Example diff --git a/docs/code-quality/c26839.md b/docs/code-quality/c26839.md index 67958410488..afc2e7a9cea 100644 --- a/docs/code-quality/c26839.md +++ b/docs/code-quality/c26839.md @@ -4,16 +4,14 @@ # For valid values of ms.service, ms.prod, and ms.topic, see https://review.learn.microsoft.com/en-us/help/platform/metadata-taxonomies?branch=main title: Warning C26839 -description: '"Describes the Microsoft C/C++ code analysis warning C26839, its causes, and how to address it."' -author: Rastaban # GitHub alias -ms.author: philc # Microsoft alias -ms.service: visual-cpp +description: Learn about Microsoft C++ code analysis warning C26839. +author: Rastaban +ms.author: philc ms.topic: reference -ms.date: 08/22/2024 +ms.date: 1/10/2025 --- # Warning C26839 - > Array new allocation size is the result of a signed to unsigned narrowing conversion that could result in overflow if the signed value is negative ## Remarks From 75b7f06d085e317bf74064f56d386edb510e0dfb Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 10 Jan 2025 15:19:52 -0800 Subject: [PATCH 0034/2255] acrolinx --- docs/code-quality/c26838.md | 6 +++--- docs/code-quality/c26839.md | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/code-quality/c26838.md b/docs/code-quality/c26838.md index 6c671ea7dd0..af3a61375a5 100644 --- a/docs/code-quality/c26838.md +++ b/docs/code-quality/c26838.md @@ -4,7 +4,7 @@ # For valid values of ms.service, ms.prod, and ms.topic, see https://review.learn.microsoft.com/en-us/help/platform/metadata-taxonomies?branch=main title: Warning C26838 -description: Learn about Microsoft C++ code analysis warning. C26838 +description: Learn about Microsoft C++ code analysis warning C26838. author: Rastaban ms.author: philc ms.topic: reference @@ -29,7 +29,7 @@ int* CreateIntArray(int numberOfElements) } ``` -In the expression `numberOfElements * sizeof(int)`, `numberOfElements` is signed and `sizeof(int)` is unsigned. On 64 bit machines `numberOfElements` will be promoted to an unsigned value when multiplied +In the expression `numberOfElements * sizeof(int)`, `numberOfElements` is signed and `sizeof(int)` is unsigned. On 64-bit machines, `numberOfElements` is promoted to an unsigned value when multiplied by `sizeof(int)`. When `numberOfElements` is negative, the resulting value may overflow or have unexpected results when passed to `CustomAlloc`. This check applies to common allocation functions like `new`, `malloc`, and `VirtualAlloc`. The check also applies to custom allocator functions that have `alloc` (case insensitive) in the function name. @@ -57,7 +57,7 @@ int* CreateIntArray(int numberOfElements) ``` In the previous example, checking for a negative value addresses the C26832 warning. Depending on the size of the types involved, this check may result in a different warning such as [`C26831`](c26831.md). -For example, on a 32 bit system, both `int` and `size_t` are 32 bits, so the result of the multiplication can still overflow without negative values. +For example, on a 32-bit system, both `int` and `size_t` are 32 bits, so the result of the multiplication can still overflow without negative values. ## See also diff --git a/docs/code-quality/c26839.md b/docs/code-quality/c26839.md index afc2e7a9cea..fcd81a5cde7 100644 --- a/docs/code-quality/c26839.md +++ b/docs/code-quality/c26839.md @@ -16,7 +16,7 @@ ms.date: 1/10/2025 ## Remarks -This warning reports that the size specified for a array new allocation may be the result of the conversion of a possibly negative signed value to an unsigned value. For example: +This warning reports that the size specified for an array new allocation may be the result of the conversion of a possibly negative signed value to an unsigned value. For example: ```cpp int* CreateIntArray(int size) @@ -26,7 +26,7 @@ int* CreateIntArray(int size) } ``` -In the expression `new int[size]`, `size` is signed. The compiler will convert the signed value to an unsigned value when calculating how many bytes need to be allocated for the array. +In the expression `new int[size]`, `size` is signed. The compiler converts the signed value to an unsigned value to calculate how many bytes need to be allocated for the array. When `size` is negative, the result of that calculation may overflow or have unexpected results. This check is the same as [`C26838`](c26838.md), but applies only to array new `new T[]`. From 6e27d70b6dda55b969a531b38fb7f8d699c6413f Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 10 Jan 2025 15:35:55 -0800 Subject: [PATCH 0035/2255] edits --- docs/code-quality/c26838.md | 24 +++++++++--------------- docs/code-quality/c26839.md | 19 +++++++------------ docs/code-quality/toc.yml | 2 +- 3 files changed, 17 insertions(+), 28 deletions(-) diff --git a/docs/code-quality/c26838.md b/docs/code-quality/c26838.md index af3a61375a5..652ec704cde 100644 --- a/docs/code-quality/c26838.md +++ b/docs/code-quality/c26838.md @@ -1,8 +1,4 @@ --- -# Required metadata -# For more information, see https://review.learn.microsoft.com/en-us/help/platform/learn-editor-add-metadata?branch=main -# For valid values of ms.service, ms.prod, and ms.topic, see https://review.learn.microsoft.com/en-us/help/platform/metadata-taxonomies?branch=main - title: Warning C26838 description: Learn about Microsoft C++ code analysis warning C26838. author: Rastaban @@ -12,11 +8,13 @@ ms.date: 1/10/2025 --- # Warning C26838 -> Allocation size is the result of a signed to unsigned narrowing conversion that could result in overflow if the signed value is negative +> Allocation size is the result of a signed to unsigned narrowing conversion that could result in overflow if the signed value is negative. + +This warning was added in Visual Studio 2022 version 17.13. ## Remarks -This warning reports that the size specified for an allocation may be the result of the conversion of a possibly negative signed value to an unsigned value. For example: +Reports that the size specified for an allocation may be the result of the conversion of a possibly negative signed value to an unsigned value. For example: ```cpp void* CustomAlloc(size_t); @@ -24,23 +22,21 @@ void* CustomAlloc(size_t); int* CreateIntArray(int numberOfElements) { int* p = (int*)CustomAlloc(numberOfElements * sizeof(int)); // Warning: C26838 - // ... + return p; } ``` -In the expression `numberOfElements * sizeof(int)`, `numberOfElements` is signed and `sizeof(int)` is unsigned. On 64-bit machines, `numberOfElements` is promoted to an unsigned value when multiplied +The expression `numberOfElements * sizeof(int)`, `numberOfElements` is signed and `sizeof(int)` is unsigned. On 64-bit machines, `numberOfElements` is promoted to an unsigned value when multiplied by `sizeof(int)`. When `numberOfElements` is negative, the resulting value may overflow or have unexpected results when passed to `CustomAlloc`. This check applies to common allocation functions like `new`, `malloc`, and `VirtualAlloc`. The check also applies to custom allocator functions that have `alloc` (case insensitive) in the function name. This check sometimes fails to recognize that certain checks can prevent overflows because the check is conservative. -This warning is available in Visual Studio 2022 version 17.13 and later versions. - ## Example -To fix the previous code example in which `numberOfElements * sizeof(int)` might overflow due to a negative signed value, introduce a check to make sure it won't. For example: +To fix the previous code example in which `numberOfElements * sizeof(int)` might overflow due to a negative signed value, introduce a check to ensure it won't. For example: ```cpp void* CustomAlloc(size_t); @@ -56,13 +52,11 @@ int* CreateIntArray(int numberOfElements) } ``` -In the previous example, checking for a negative value addresses the C26832 warning. Depending on the size of the types involved, this check may result in a different warning such as [`C26831`](c26831.md). -For example, on a 32-bit system, both `int` and `size_t` are 32 bits, so the result of the multiplication can still overflow without negative values. +In the previous example, checking for a negative value addresses the `C26832` warning. Depending on the size of the types involved, this check may result in a different warning such as [`C26831`](c26831.md). For example, on a 32-bit system, both `int` and `size_t` are 32 bits, so the result of the multiplication can still overflow without negative values. ## See also [`C26831`](c26831.md)\ [`C26832`](c26832.md)\ [`C26833`](c26833.md)\ -[`C26833`](c26839.md) - +[`C26833`](c26839.md) \ No newline at end of file diff --git a/docs/code-quality/c26839.md b/docs/code-quality/c26839.md index fcd81a5cde7..99510307b9a 100644 --- a/docs/code-quality/c26839.md +++ b/docs/code-quality/c26839.md @@ -1,8 +1,4 @@ --- -# Required metadata -# For more information, see https://review.learn.microsoft.com/en-us/help/platform/learn-editor-add-metadata?branch=main -# For valid values of ms.service, ms.prod, and ms.topic, see https://review.learn.microsoft.com/en-us/help/platform/metadata-taxonomies?branch=main - title: Warning C26839 description: Learn about Microsoft C++ code analysis warning C26839. author: Rastaban @@ -12,11 +8,13 @@ ms.date: 1/10/2025 --- # Warning C26839 -> Array new allocation size is the result of a signed to unsigned narrowing conversion that could result in overflow if the signed value is negative +> Array new allocation size is the result of a signed to unsigned narrowing conversion that could result in overflow if the signed value is negative. + +This warning was added in Visual Studio 2022 version 17.13. ## Remarks -This warning reports that the size specified for an array new allocation may be the result of the conversion of a possibly negative signed value to an unsigned value. For example: +Reports that the size specified for an array `new` allocation may be the result of the conversion of a possibly negative signed value to an unsigned value. For example: ```cpp int* CreateIntArray(int size) @@ -26,18 +24,15 @@ int* CreateIntArray(int size) } ``` -In the expression `new int[size]`, `size` is signed. The compiler converts the signed value to an unsigned value to calculate how many bytes need to be allocated for the array. -When `size` is negative, the result of that calculation may overflow or have unexpected results. +The expression `new int[size]`, `size` is signed. The compiler converts the signed value to an unsigned value to calculate how many bytes to be allocate for the array. When `size` is negative, the result of that calculation may overflow or have unexpected results when passed to `new`. -This check is the same as [`C26838`](c26838.md), but applies only to array new `new T[]`. +This check is the same as [`C26838`](c26838.md), but applies only to `new T[]`. This check sometimes fails to recognize that certain checks can prevent overflows because the check is conservative. -This warning is available in Visual Studio 2022 version 17.12 and later versions. - ## Example -To fix the previous code example in which the size calculation might overflow due to a negative signed value, introduce a check to make sure it won't. For example: +To fix the previous code example in which the size calculation might overflow due to a negative signed value, introduce a check to ensure it won't. For example: ```cpp int* CreateIntArray(int size) diff --git a/docs/code-quality/toc.yml b/docs/code-quality/toc.yml index 1dbbec9e89d..b22549c06f7 100644 --- a/docs/code-quality/toc.yml +++ b/docs/code-quality/toc.yml @@ -633,7 +633,7 @@ items: href: ../code-quality/c26830.md - name: Warning C26831 href: ../code-quality/c26831.md - - name: " Warning C26838" + - name: Warning C26838 href: c26838.md - name: Warning C26839 href: c26839.md From 0818d9b6c49bf5b76bfa259583d586c21679c442 Mon Sep 17 00:00:00 2001 From: Jill Grant Date: Fri, 10 Jan 2025 17:28:06 -0700 Subject: [PATCH 0036/2255] Update docs/code-quality/c26839.md Acrolinx fix --- docs/code-quality/c26839.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/code-quality/c26839.md b/docs/code-quality/c26839.md index 99510307b9a..96d47c6df22 100644 --- a/docs/code-quality/c26839.md +++ b/docs/code-quality/c26839.md @@ -24,7 +24,7 @@ int* CreateIntArray(int size) } ``` -The expression `new int[size]`, `size` is signed. The compiler converts the signed value to an unsigned value to calculate how many bytes to be allocate for the array. When `size` is negative, the result of that calculation may overflow or have unexpected results when passed to `new`. +The expression `new int[size]`, `size` is signed. The compiler converts the signed value to an unsigned value to calculate how many bytes to be allocated for the array. When `size` is negative, the result of that calculation may overflow or have unexpected results when passed to `new`. This check is the same as [`C26838`](c26838.md), but applies only to `new T[]`. From cfb2e430c5fc1535fc60efec4927a4fa8c22003f Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 10 Jan 2025 16:42:50 -0800 Subject: [PATCH 0037/2255] add link and code escape --- docs/assembler/masm/extern-masm.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/docs/assembler/masm/extern-masm.md b/docs/assembler/masm/extern-masm.md index 910e02df031..d261390d68c 100644 --- a/docs/assembler/masm/extern-masm.md +++ b/docs/assembler/masm/extern-masm.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: EXTERN" +description: "Learn more about the MASM directive: EXTERN" title: "EXTERN (MASM)" -ms.date: "12/06/2019" +ms.date: 1/10/2025 helpviewer_keywords: ["EXTERN directive"] -ms.assetid: 667d703d-3aaf-4139-a586-29bc5dab1aff --- # EXTERN @@ -17,9 +16,9 @@ Defines one or more external variables, labels, or symbols called *name* whose t The *language-type* argument is valid in 32-bit MASM only. -The *type* can be [ABS](operator-abs.md), which imports *name* as a constant. Same as [EXTRN](extrn.md). +The *type* can be [`ABS`](operator-abs.md), which imports *name* as a constant. Same as [`EXTRN`](extrn.md). -The *type* can also be PROC, in which case *name* is treated as an external procedure. +The *type* can also be [`PROC`](proc.md), in which case *name* is treated as an external procedure. ## See also From 738650f601b3b73890435134ea6bbca7402e23b0 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Mon, 13 Jan 2025 16:26:22 -0800 Subject: [PATCH 0038/2255] clean up wording --- .../md-mt-ld-use-run-time-library.md | 36 +++++++++---------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/docs/build/reference/md-mt-ld-use-run-time-library.md b/docs/build/reference/md-mt-ld-use-run-time-library.md index ccbfe48d71f..a20e1a160e7 100644 --- a/docs/build/reference/md-mt-ld-use-run-time-library.md +++ b/docs/build/reference/md-mt-ld-use-run-time-library.md @@ -1,14 +1,13 @@ --- -description: "Learn more about: /MD, /MT, /LD (Use Run-Time Library)" -title: "/MD, -MT, -LD (Use Run-Time Library)" -ms.date: "07/17/2019" +description: "Learn more about: /MD, /MT, /LD (Use runtime Library)" +title: "/MD, -MT, -LD (Use runtime Library)" +ms.date: "01/13/2025" f1_keywords: ["/ld", "/mt", "VC.Project.VCCLWCECompilerTool.RuntimeLibrary", "VC.Project.VCCLCompilerTool.RuntimeLibrary", "/md", "/ml"] helpviewer_keywords: ["/MT compiler option [C++]", "-MD compiler option [C++]", "threading [C++], multithread compiler option", "MSVCRTD.lib", "MSVCRT.lib", "LIBCMT.lib", "MD compiler option [C++]", "/MD compiler option [C++]", "MT compiler option [C++]", "LD compiler option [C++]", "MDd compiler option [C++]", "-MDd compiler option [C++]", "LIBCD.lib", "-MTd compiler option [C++]", "MTd compiler option [C++]", "/MTd compiler option [C++]", "-LD compiler option [C++]", "/MDd compiler option [C++]", "multithread compiler option", "_STATIC_CPPLIB symbol", "LIBC.lib", "/LD compiler option [C++]", "DLLs [C++], compiler options", "LIBCMTD.lib", "-MT compiler option [C++]"] -ms.assetid: cf7ed652-dc3a-49b3-aab9-ad60e5395579 --- -# /MD, /MT, /LD (Use Run-Time Library) +# /MD, /MT, /LD (Use runtime Library) -Indicates whether a multithreaded module is a DLL and specifies retail or debug versions of the run-time library. +Indicates whether a multithreaded module is a DLL and specifies retail or debug versions of the runtime library. ## Syntax @@ -22,27 +21,25 @@ Indicates whether a multithreaded module is a DLL and specifies retail or debug |Option|Description| |------------|-----------------| -|**/MD**|Causes the application to use the multithread-specific and DLL-specific version of the run-time library. Defines `_MT` and `_DLL` and causes the compiler to place the library name MSVCRT.lib into the .obj file.| -|**/MDd**|Defines `_DEBUG`, `_MT`, and `_DLL` and causes the application to use the debug multithread-specific and DLL-specific version of the run-time library. It also causes the compiler to place the library name MSVCRTD.lib into the .obj file.| -|**/MT**|Causes the application to use the multithread, static version of the run-time library. Defines `_MT` and causes the compiler to place the library name LIBCMT.lib into the .obj file so that the linker will use LIBCMT.lib to resolve external symbols.| -|**/MTd**|Defines `_DEBUG` and `_MT`. This option also causes the compiler to place the library name LIBCMTD.lib into the .obj file so that the linker will use LIBCMTD.lib to resolve external symbols.| -|**/LD**|Creates a DLL.

Passes the **/DLL** option to the linker. The linker looks for, but does not require, a `DllMain` function. If you do not write a `DllMain` function, the linker inserts a `DllMain` function that returns TRUE.

Links the DLL startup code.

Creates an import library (.lib), if an export (.exp) file is not specified on the command line. You link the import library to applications that call your DLL.

Interprets [/Fe (Name EXE File)](fe-name-exe-file.md) as naming a DLL rather than an .exe file. By default, the program name becomes *basename*.dll instead of *basename*.exe.

Implies **/MT** unless you explicitly specify **/MD**.| -|**/LDd**|Creates a debug DLL. Defines `_MT` and `_DEBUG`.| +|**/MD**|Link with the multithread-specific and DLL-specific version of the runtime library. Defines `_MT` and `_DLL`. The linker uses the `MSVCRT.lib` import library to resolve runtime symbols.| +|**/MDd**|Link with the debug multithread-specific and DLL-specific version of the runtime library. Defines `_DEBUG`, `_MT`, and `_DLL`. The linker uses the `MSVCRTD.lib` import library to resolve runtime symbols.| +|**/MT**| Link with the multithread, static version of the runtime library. Defines `_MT`. The linker uses `LIBCMT.lib` to resolve runtime symbols.| +|**/MTd**| Link with the debug multithread, static version of the runtime library. Defines `_DEBUG` and `_MT`. The linker uses `LIBCMTD.lib` to resolve runtime symbols.| +|**/LD**|Create a DLL.

Passes the **/DLL** option to the linker. The linker looks for, but does not require, a `DllMain` function. If you don't write a `DllMain` function, the linker inserts a `DllMain` function that returns TRUE.

Links the DLL startup code.

Creates an import library (`.lib`), if an export (`.exp`) file is not specified on the command line. You link the import library to applications that call your DLL.

Interprets [/Fe (Name EXE File)](fe-name-exe-file.md) as naming a DLL rather than an `.exe` file. By default, the program name becomes *basename*.dll instead of *basename*.exe.

Implies **/MT** unless you explicitly specify **/MD**.| +|**/LDd**|Create a debug DLL. Defines `_MT` and `_DEBUG`.| -For more information about C run-time libraries and which libraries are used when you compile with [/clr (Common Language Runtime Compilation)](clr-common-language-runtime-compilation.md), see [CRT Library Features](../../c-runtime-library/crt-library-features.md). +For more information about C runtime libraries and which libraries are used when you compile with [/clr (Common Language Runtime Compilation)](clr-common-language-runtime-compilation.md), see [CRT Library Features](../../c-runtime-library/crt-library-features.md). -All modules passed to a given invocation of the linker must have been compiled with the same run-time library compiler option (**/MD**, **/MT**, **/LD**). +All modules passed to a given invocation of the linker must have been compiled with the same runtime library compiler option (**/MD**, **/MT**, **/LD**). -For more information about how to use the debug versions of the run-time libraries, see [C Run-Time Library Reference](../../c-runtime-library/c-run-time-library-reference.md). +For more information about how to use the debug versions of the runtime libraries, see [C runtime Library Reference](../../c-runtime-library/c-runtime-library-reference.md). For more about DLLs, see [Create C/C++ DLLs in Visual Studio](../dlls-in-visual-cpp.md). ### To set this compiler option in the Visual Studio development environment 1. Open the project's **Property Pages** dialog box. For details, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md). - 1. Select the **Configuration Properties** > **C/C++** > **Code Generation** property page. - 1. Modify the **Runtime Library** property. ### To set this compiler option programmatically @@ -51,5 +48,6 @@ For more about DLLs, see [Create C/C++ DLLs in Visual Studio](../dlls-in-visual- ## See also -[MSVC Compiler Options](compiler-options.md)
-[MSVC Compiler Command-Line Syntax](compiler-command-line-syntax.md) +[MSVC Compiler Options](compiler-options.md)\ +[MSVC Compiler Command-Line Syntax](compiler-command-line-syntax.md)\ +[The Great C Runtime (CRT) Refactoring](https://devblogs.microsoft.com/cppblog/the-great-c-runtime-crt-refactoring/) \ No newline at end of file From 0f3a64bda87f9d74e9818756b8b2bda21ce12e29 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Mon, 13 Jan 2025 16:35:28 -0800 Subject: [PATCH 0039/2255] fix link --- .../reference/md-mt-ld-use-run-time-library.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/build/reference/md-mt-ld-use-run-time-library.md b/docs/build/reference/md-mt-ld-use-run-time-library.md index a20e1a160e7..733713b6a75 100644 --- a/docs/build/reference/md-mt-ld-use-run-time-library.md +++ b/docs/build/reference/md-mt-ld-use-run-time-library.md @@ -1,11 +1,11 @@ --- -description: "Learn more about: /MD, /MT, /LD (Use runtime Library)" -title: "/MD, -MT, -LD (Use runtime Library)" +description: "Learn more about: /MD, /MT, /LD (Use runtime library)" +title: "/MD, -MT, -LD (Use runtime library)" ms.date: "01/13/2025" f1_keywords: ["/ld", "/mt", "VC.Project.VCCLWCECompilerTool.RuntimeLibrary", "VC.Project.VCCLCompilerTool.RuntimeLibrary", "/md", "/ml"] helpviewer_keywords: ["/MT compiler option [C++]", "-MD compiler option [C++]", "threading [C++], multithread compiler option", "MSVCRTD.lib", "MSVCRT.lib", "LIBCMT.lib", "MD compiler option [C++]", "/MD compiler option [C++]", "MT compiler option [C++]", "LD compiler option [C++]", "MDd compiler option [C++]", "-MDd compiler option [C++]", "LIBCD.lib", "-MTd compiler option [C++]", "MTd compiler option [C++]", "/MTd compiler option [C++]", "-LD compiler option [C++]", "/MDd compiler option [C++]", "multithread compiler option", "_STATIC_CPPLIB symbol", "LIBC.lib", "/LD compiler option [C++]", "DLLs [C++], compiler options", "LIBCMTD.lib", "-MT compiler option [C++]"] --- -# /MD, /MT, /LD (Use runtime Library) +# /MD, /MT, /LD (Use runtime library) Indicates whether a multithreaded module is a DLL and specifies retail or debug versions of the runtime library. @@ -21,10 +21,10 @@ Indicates whether a multithreaded module is a DLL and specifies retail or debug |Option|Description| |------------|-----------------| -|**/MD**|Link with the multithread-specific and DLL-specific version of the runtime library. Defines `_MT` and `_DLL`. The linker uses the `MSVCRT.lib` import library to resolve runtime symbols.| -|**/MDd**|Link with the debug multithread-specific and DLL-specific version of the runtime library. Defines `_DEBUG`, `_MT`, and `_DLL`. The linker uses the `MSVCRTD.lib` import library to resolve runtime symbols.| -|**/MT**| Link with the multithread, static version of the runtime library. Defines `_MT`. The linker uses `LIBCMT.lib` to resolve runtime symbols.| -|**/MTd**| Link with the debug multithread, static version of the runtime library. Defines `_DEBUG` and `_MT`. The linker uses `LIBCMTD.lib` to resolve runtime symbols.| +|**/MD**|Use the multithread-specific and DLL-specific version of the runtime library. Defines `_MT` and `_DLL`. The linker uses the `MSVCRT.lib` import library to resolve runtime symbols.| +|**/MDd**|Use the debug multithread-specific and DLL-specific version of the runtime library. Defines `_DEBUG`, `_MT`, and `_DLL`. The linker uses the `MSVCRTD.lib` import library to resolve runtime symbols.| +|**/MT**| Use the multithread, static version of the runtime library. Defines `_MT`. The linker uses `LIBCMT.lib` to resolve runtime symbols.| +|**/MTd**| Use the debug multithread, static version of the runtime library. Defines `_DEBUG` and `_MT`. The linker uses `LIBCMTD.lib` to resolve runtime symbols.| |**/LD**|Create a DLL.

Passes the **/DLL** option to the linker. The linker looks for, but does not require, a `DllMain` function. If you don't write a `DllMain` function, the linker inserts a `DllMain` function that returns TRUE.

Links the DLL startup code.

Creates an import library (`.lib`), if an export (`.exp`) file is not specified on the command line. You link the import library to applications that call your DLL.

Interprets [/Fe (Name EXE File)](fe-name-exe-file.md) as naming a DLL rather than an `.exe` file. By default, the program name becomes *basename*.dll instead of *basename*.exe.

Implies **/MT** unless you explicitly specify **/MD**.| |**/LDd**|Create a debug DLL. Defines `_MT` and `_DEBUG`.| @@ -32,7 +32,7 @@ For more information about C runtime libraries and which libraries are used when All modules passed to a given invocation of the linker must have been compiled with the same runtime library compiler option (**/MD**, **/MT**, **/LD**). -For more information about how to use the debug versions of the runtime libraries, see [C runtime Library Reference](../../c-runtime-library/c-runtime-library-reference.md). +For more information about how to use the debug versions of the runtime libraries, see [C runtime Library Reference](../../c-runtime-library/c-run-time-library-reference.md). For more about DLLs, see [Create C/C++ DLLs in Visual Studio](../dlls-in-visual-cpp.md). From 848b1e4eb4cc5da5f9055643e078887c6bee5bef Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Tue, 14 Jan 2025 11:18:47 -0800 Subject: [PATCH 0040/2255] Update c33001.md (#5574) * Learn Editor: Update c33001.md * Learn Editor: Update c33001.md * Fix typos --------- Co-authored-by: Tyler Whitney --- docs/code-quality/c33001.md | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/docs/code-quality/c33001.md b/docs/code-quality/c33001.md index d3208941b45..679ffc1e04c 100644 --- a/docs/code-quality/c33001.md +++ b/docs/code-quality/c33001.md @@ -13,14 +13,23 @@ helpviewer_keywords: ["C33001"] ## Remarks -This warning is triggered when an uninitialized `VARIANT` is passed to an API such as `VariantClear` -that expects an initialized `VARIANT`. +This warning is triggered when an uninitialized `VARIANT` is passed to an API, such as `VariantClear`, that clears the object. Initialize the `VARIANT` before passing it to these functions so it can be properly cleared. + +This warning applies to these functions: + +* `VariantClear` +* `PropVariantClear` +* `VariantCopy` +* `VariantCopyInd` +* `VariantChangeType` +* `VariantChangeTypeEx` +* `DestroyPropVariant` Code analysis name: `VARIANTCLEAR_UNINITIALIZED` ## Example -The following sample code causes warning C33001: +The following code causes warning C33001: ```cpp #include @@ -36,11 +45,11 @@ HRESULT foo(bool some_condition) //... } - VariantClear(&var); // C33001 + VariantClear(&var); // C33001 } ``` -These warnings are corrected by ensuring `VariantClear` is called only for a properly initialized `VARIANT`: +In this example, the warning is corrected by calling `VariantClear` only after `var` has been initialized: ```cpp #include @@ -54,12 +63,12 @@ HRESULT foo(bool some_condition) //... VariantInit(&var); //... - VariantClear(&var); // C33001 + VariantClear(&var); // OK } } ``` ## See also -[C33004](./c33004.md) +[C33004](./c33004.md)\ [C33005](./c33005.md) From ac770c7357dc3f34c9bffab50cc3b36f84c2b267 Mon Sep 17 00:00:00 2001 From: Mahmoud Saleh <12202790+MahmoudGSaleh@users.noreply.github.com> Date: Tue, 14 Jan 2025 14:00:18 -0800 Subject: [PATCH 0041/2255] Update headings sentence casings in redist-version-auditing.md --- docs/windows/redist-version-auditing.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/windows/redist-version-auditing.md b/docs/windows/redist-version-auditing.md index 69c746b75c6..7536de22db2 100644 --- a/docs/windows/redist-version-auditing.md +++ b/docs/windows/redist-version-auditing.md @@ -11,7 +11,7 @@ author: MahmoudGSaleh ms.author: msaleh --- -# How To Audit Visual C++ Runtime Version Usage Within Your Organization +# How to audit Visual C++ Runtime version usage within your organization The Microsoft Visual C++ Redistributable and the Visual C++ Studio Runtime (collectively, "VC Runtime") is a critical component to thousands of applications. Across your enterprise network, machines may still be running applications that install and use an out-of-support version of the VC Runtime. NTFS File Auditing can be used to identify such usage as a step towards helping you replace these applications with ones that take a dependency on a supported version of the VC Runtime. This guide will walk you through setting up NTFS File Auditing, provide troubleshooting tips, and highlight the benefits of regular audits. @@ -191,7 +191,7 @@ ProcessName : C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe ResourceAttributes : S:AI ``` -### Next Steps After Auditing VC Runtime Usage +### Next steps after auditing VC Runtime usage After you have determined which processes are using the VC Runtime files or installing the VC Redistributable, uninstall those applications or upgrade them to newer versions that do not depend on unsupported VC Runtimes. From 0d17dd3e188515322cf30526c6b5d3671191e634 Mon Sep 17 00:00:00 2001 From: Mahmoud Saleh <12202790+MahmoudGSaleh@users.noreply.github.com> Date: Tue, 14 Jan 2025 14:02:20 -0800 Subject: [PATCH 0042/2255] Fix capitalization in TOC entry. --- docs/windows/toc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/windows/toc.yml b/docs/windows/toc.yml index 563ac2869b4..a8a74ff2d76 100644 --- a/docs/windows/toc.yml +++ b/docs/windows/toc.yml @@ -147,7 +147,7 @@ items: href: ../windows/redistributing-an-atl-application.md - name: Latest Supported Visual C++ Redistributable Downloads href: ../windows/latest-supported-vc-redist.md - - name: How To Audit Visual C++ Runtime Version Usage + - name: How to audit Visual C++ Runtime version usage href: ../windows/redist-version-auditing.md - name: Deployment examples expanded: false From 70f19b48da73c0953f1ca21a3d685b78f055af6f Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 15 Jan 2025 10:15:17 -0800 Subject: [PATCH 0043/2255] draft --- docs/cpp/declspec.md | 5 ++-- docs/cpp/hybrid-patchable.md | 56 ++++++++++++++++++++++++++++++++++++ docs/cpp/toc.yml | 2 ++ 3 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 docs/cpp/hybrid-patchable.md diff --git a/docs/cpp/declspec.md b/docs/cpp/declspec.md index 253de9e94dd..99695ff790b 100644 --- a/docs/cpp/declspec.md +++ b/docs/cpp/declspec.md @@ -1,7 +1,7 @@ --- description: "Learn more about: `__declspec`" title: "__declspec" -ms.date: 03/01/2022 +ms.date: 1/14/2025 f1_keywords: ["__declspec_cpp", "__declspec", "_declspec"] helpviewer_keywords: ["__declspec keyword [C++]"] --- @@ -9,7 +9,7 @@ helpviewer_keywords: ["__declspec keyword [C++]"] **Microsoft Specific** -The extended attribute syntax for specifying storage-class information uses the **`__declspec`** keyword, which specifies that an instance of a given type is to be stored with a Microsoft-specific storage-class attribute listed below. Examples of other storage-class modifiers include the **`static`** and **`extern`** keywords. However, these keywords are part of the ANSI specification of the C and C++ languages, and as such aren't covered by extended attribute syntax. The extended attribute syntax simplifies and standardizes Microsoft-specific extensions to the C and C++ languages. +The extended attribute syntax for specifying storage-class information uses the `__declspec` keyword, which specifies that an instance of a given type is to be stored with a Microsoft-specific storage-class attribute listed below. Examples of other storage-class modifiers include the `static` and `extern` keywords. However, these keywords are part of the ANSI specification of the C and C++ languages, and as such aren't covered by extended attribute syntax. The extended attribute syntax simplifies and standardizes Microsoft-specific extensions to the C and C++ languages. ## Grammar @@ -30,6 +30,7 @@ The extended attribute syntax for specifying storage-class information uses the  **`dllimport`**\  **`dllexport`**\  **`empty_bases`**\ + **`hybrid_patchable`**\  **`jitintrinsic`**\  **`naked`**\  **`noalias`**\ diff --git a/docs/cpp/hybrid-patchable.md b/docs/cpp/hybrid-patchable.md new file mode 100644 index 00000000000..74dc357f837 --- /dev/null +++ b/docs/cpp/hybrid-patchable.md @@ -0,0 +1,56 @@ +--- +description: "Learn more about: hybrid_patchable (C++)" +title: "hybrid_patchable (C++)" +ms.date: 1/15/2025 +f1_keywords: ["hybrid_patchable"] +helpviewer_keywords: ["__declspec keyword [C++], hybrid_patchable", "hybrid_patchable __declspec keyword"] +--- +# `hybrid_patchable` (C++) + +**Microsoft Specific** + +Use **`__declspec(hybrid_patchable)`** extended attribute which can be used in the declaration of functions. + +## Syntax + +> `__declspec(hybrid_patchable)` + +## Remarks + +We recommend that all new code use the [`noexcept`](noexcept-cpp.md) operator rather than `__declspec(nothrow)`. + +This attribute tells the compiler that the declared function and the functions it calls never throw an exception. However, it does not enforce the directive. In other words, it never causes [`std::terminate`](../standard-library/exception-functions.md#terminate) to be invoked, unlike **`noexcept`**, or in **`std:c++17`** mode (Visual Studio 2017 version 15.5 and later), `throw()`. + +With the synchronous exception handling model, now the default, the compiler can eliminate the mechanics of tracking the lifetime of certain unwindable objects in such a function, and significantly reduce the code size. Given the following preprocessor directive, the three function declarations below are equivalent in **`/std:c++14`** mode: + +```cpp +__declspec(hybrid_patchable) int Example() { + return 1; +} +``` + +Generates the following fast-forward sequence: + +``` +EXP+#Example: + 00000001400CE000: 48 8B C4 mov rax,rsp + 00000001400CE003: 48 89 58 20 mov qword ptr [rax+20h],rbx + 00000001400CE007: 55 push rbp + 00000001400CE008: 5D pop rbp + 00000001400CE009: E9 BA 7A F3 FF jmp #Example + 00000001400CE00E: CC int 3 + 00000001400CE00F: CC int 3 +``` + + +In **`/std:c++17`** mode, `throw()` is not equivalent to the others that use `__declspec(nothrow)` because it causes `std::terminate` to be invoked if an exception is thrown from the function. + +The `void __stdcall f3() throw();` declaration uses the syntax defined by the C++ standard. In C++17 the `throw()` keyword was deprecated. + +**END Microsoft Specific** + +## See also + +[`__declspec`](../cpp/declspec.md)\ +[`noexcept`](noexcept-cpp.md)\ +[Keywords](../cpp/keywords-cpp.md) diff --git a/docs/cpp/toc.yml b/docs/cpp/toc.yml index 03a00af04cb..35e1c6921a8 100644 --- a/docs/cpp/toc.yml +++ b/docs/cpp/toc.yml @@ -696,6 +696,8 @@ items: href: ../cpp/using-dllimport-and-dllexport-in-cpp-classes.md - name: empty_bases href: ../cpp/empty-bases.md + - name: hybrid_patchable + href: ../cpp/hybrid-patchable.md - name: jitintrinsic href: ../cpp/jitintrinsic.md - name: naked From 37cd356bba4b0b564969fae4fbc94b5df5aff2d2 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 15 Jan 2025 10:20:18 -0800 Subject: [PATCH 0044/2255] license update --- docs/windows/latest-supported-vc-redist.md | 4 +++- docs/windows/redistributing-visual-cpp-files.md | 5 +++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index 840af6a36c9..0dc800208b1 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -1,7 +1,7 @@ --- title: "Latest supported Visual C++ Redistributable downloads" description: "This article lists the download links for the latest versions of Visual C++ Redistributable packages." -ms.date: 11/15/2024 +ms.date: 1/15/2025 helpviewer_keywords: [ "redist", @@ -19,6 +19,8 @@ ms.author: msaleh The Visual C++ Redistributable installs Microsoft C and C++ (MSVC) runtime libraries. Many applications built using Microsoft C and C++ tools require these libraries. If your app uses those libraries, a Microsoft Visual C++ Redistributable package must be installed on the target system before you install your app. The Redistributable package architecture must match your app's target architecture. The Redistributable version must be at least as recent as the MSVC build toolset used to build your app. We recommend you use the latest Redistributable available for your version of Visual Studio, with some exceptions noted later in this article. +Distribution of the Visual C++ Runtime Redistributable package, merge modules, and individual binaries is limited to licensed Visual Studio users and is subject to such License Terms. + For details on how to install and redistribute Visual Studio components, see [Redistributing Visual C++ Files](redistributing-visual-cpp-files.md). ## Visual Studio 2015, 2017, 2019, and 2022 diff --git a/docs/windows/redistributing-visual-cpp-files.md b/docs/windows/redistributing-visual-cpp-files.md index aece8877cf0..36e7350dce3 100644 --- a/docs/windows/redistributing-visual-cpp-files.md +++ b/docs/windows/redistributing-visual-cpp-files.md @@ -1,9 +1,8 @@ --- title: "Redistributing Visual C++ Files" description: "Visual Studio includes Redistributable libraries and components you can deploy with your app." -ms.date: 01/13/2023 +ms.date: 01/15/2025 helpviewer_keywords: ["application deployment [C++], file redistributing", "redistributing applications [C++]", "deploying applications [C++], file redistributing", "file redistribution [C++]", "redistributing applications [C++], about redistributing applications"] -ms.assetid: d201b2ce-36f1-44e5-a96c-0db81a1ba652 --- # Redistributing Visual C++ Files @@ -12,6 +11,8 @@ ms.assetid: d201b2ce-36f1-44e5-a96c-0db81a1ba652 ## Redistributable files and licensing +Distribution of the Visual C++ Runtime Redistributable package, merge modules, and individual binaries is limited to licensed Visual Studio users and is subject to such License Terms. + When you deploy an application, you must also deploy the files that are required to support it. If any of these files are provided by Microsoft, check whether you're permitted to redistribute them. You'll find a link to the Visual Studio license terms in the IDE. Use the License terms link in the About Microsoft Visual Studio dialog box. Or, download the relevant EULAs and licenses from the Visual Studio [License Directory](https://visualstudio.microsoft.com/license-terms/). ::: moniker range="msvc-170" From c50772e7e88520b224d25c460f69c8c9e30fbeec Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 15 Jan 2025 14:46:31 -0800 Subject: [PATCH 0045/2255] first draft --- docs/cpp/hybrid-patchable.md | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/docs/cpp/hybrid-patchable.md b/docs/cpp/hybrid-patchable.md index 74dc357f837..f3d03f77602 100644 --- a/docs/cpp/hybrid-patchable.md +++ b/docs/cpp/hybrid-patchable.md @@ -9,7 +9,7 @@ helpviewer_keywords: ["__declspec keyword [C++], hybrid_patchable", "hybrid_patc **Microsoft Specific** -Use **`__declspec(hybrid_patchable)`** extended attribute which can be used in the declaration of functions. +Use `__declspec(hybrid_patchable)` to mark a function as a hybrid patchable function. This attribute is used to generate a fast-forward sequence of instructions that are executed before the function is called. ## Syntax @@ -17,14 +17,13 @@ Use **`__declspec(hybrid_patchable)`** extended attribute which can be used in t ## Remarks -We recommend that all new code use the [`noexcept`](noexcept-cpp.md) operator rather than `__declspec(nothrow)`. +This is an ARM64EC-only feature. -This attribute tells the compiler that the declared function and the functions it calls never throw an exception. However, it does not enforce the directive. In other words, it never causes [`std::terminate`](../standard-library/exception-functions.md#terminate) to be invoked, unlike **`noexcept`**, or in **`std:c++17`** mode (Visual Studio 2017 version 15.5 and later), `throw()`. - -With the synchronous exception handling model, now the default, the compiler can eliminate the mechanics of tracking the lifetime of certain unwindable objects in such a function, and significantly reduce the code size. Given the following preprocessor directive, the three function declarations below are equivalent in **`/std:c++14`** mode: +**Example:** ```cpp -__declspec(hybrid_patchable) int Example() { +__declspec(hybrid_patchable) int Example() +{ return 1; } ``` @@ -42,15 +41,9 @@ EXP+#Example: 00000001400CE00F: CC int 3 ``` - -In **`/std:c++17`** mode, `throw()` is not equivalent to the others that use `__declspec(nothrow)` because it causes `std::terminate` to be invoked if an exception is thrown from the function. - -The `void __stdcall f3() throw();` declaration uses the syntax defined by the C++ standard. In C++17 the `throw()` keyword was deprecated. - **END Microsoft Specific** ## See also [`__declspec`](../cpp/declspec.md)\ -[`noexcept`](noexcept-cpp.md)\ -[Keywords](../cpp/keywords-cpp.md) +[Fast-Forward sequences](/windows/arm/arm64ec-abi) \ No newline at end of file From 7c8fdaf0ca2ab857b8fc895eca5ac574a0f027bb Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 15 Jan 2025 15:04:52 -0800 Subject: [PATCH 0046/2255] ready for review --- docs/cpp/hybrid-patchable.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/cpp/hybrid-patchable.md b/docs/cpp/hybrid-patchable.md index f3d03f77602..789f5227c5e 100644 --- a/docs/cpp/hybrid-patchable.md +++ b/docs/cpp/hybrid-patchable.md @@ -9,7 +9,7 @@ helpviewer_keywords: ["__declspec keyword [C++], hybrid_patchable", "hybrid_patc **Microsoft Specific** -Use `__declspec(hybrid_patchable)` to mark a function as a hybrid patchable function. This attribute is used to generate a fast-forward sequence of instructions that are executed before the function is called. +Use `__declspec(hybrid_patchable)` to mark a function as a hybrid patchable function. This attribute generates a fast-forward sequence of instructions that are executed before the function is called. ## Syntax @@ -17,7 +17,7 @@ Use `__declspec(hybrid_patchable)` to mark a function as a hybrid patchable func ## Remarks -This is an ARM64EC-only feature. +`__declspec(hybrid_patchable)` is an ARM64EC-only feature. **Example:** From 3a6fd83c92668223fccb656efd39ec1795984d09 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 15 Jan 2025 16:24:23 -0800 Subject: [PATCH 0047/2255] add note that behavior changed in 17.10 --- docs/build/reference/zc-static-assert.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/build/reference/zc-static-assert.md b/docs/build/reference/zc-static-assert.md index 78276252a83..edcce9976b3 100644 --- a/docs/build/reference/zc-static-assert.md +++ b/docs/build/reference/zc-static-assert.md @@ -1,7 +1,7 @@ --- description: "Learn more about: /Zc:static_assert (Strict static_assert handling)" title: "/Zc:static_assert (Strict static_assert handling)" -ms.date: 12/15/2021 +ms.date: 1/15/2025 f1_keywords: ["/Zc:static_assert"] helpviewer_keywords: ["/Zc:static_assert compiler option (C++)"] --- @@ -16,6 +16,8 @@ The **`/Zc:static_assert`** compiler option tells the compiler to evaluate `stat ## Remarks +Starting with Visual Studio 17.10, `/Zc:static_assert` and `/Zc:static_assert-` have no effect. Both options are ignored to avoid breaking builds that use them. `static_assert` is now always evaluated when parsing class or function templates. + The **`/Zc:static_assert`** compiler option tells the compiler to evaluate a `static_assert` in the body of a function template or in the body of a class template member function when first parsed, if the test expression isn't dependent. If the non-dependent test expression isn't `false`, the compiler emits an error immediately. When the test expression is dependent, the `static_assert` isn't evaluated until the template is instantiated. The **`/Zc:static_assert`** option is available starting in Visual Studio 2022 version 17.1. In earlier versions of Visual Studio, or if **`/Zc:static_assert-`** is specified, Visual Studio doesn't do dependent analysis if the `static_assert` is within the body of a function template or within the body of a member function of a class template. Instead, it only evaluates the `static_assert` when a template is instantiated. From 3797e97f59b254baba3acf346b86b68b6f41eec5 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 15 Jan 2025 16:31:01 -0800 Subject: [PATCH 0048/2255] tech review --- docs/cpp/hybrid-patchable.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/cpp/hybrid-patchable.md b/docs/cpp/hybrid-patchable.md index 789f5227c5e..49dc470455b 100644 --- a/docs/cpp/hybrid-patchable.md +++ b/docs/cpp/hybrid-patchable.md @@ -9,7 +9,7 @@ helpviewer_keywords: ["__declspec keyword [C++], hybrid_patchable", "hybrid_patc **Microsoft Specific** -Use `__declspec(hybrid_patchable)` to mark a function as a hybrid patchable function. This attribute generates a fast-forward sequence of instructions that are executed before the function is called. +Use `__declspec(hybrid_patchable)` to mark a function as a hybrid patchable function. This attribute generates a fast-forward sequence. Fast-forward sequences are small x64 functions which contain no real logic, and tail-call the real Arm64EC function. Because fast-forward sequences are primarily used for hooking, if they are unaltered, execution is transferred directly to the Arm64EC function. ## Syntax @@ -46,4 +46,4 @@ EXP+#Example: ## See also [`__declspec`](../cpp/declspec.md)\ -[Fast-Forward sequences](/windows/arm/arm64ec-abi) \ No newline at end of file +[Fast-Forward sequences](/windows/arm/arm64ec-abi#fast-forward-sequences) \ No newline at end of file From 264ec5a188d3f72adb6fdd826aa4fabdbd14370e Mon Sep 17 00:00:00 2001 From: "Omotola Akeredolu (from Dev Box)" Date: Wed, 15 Jan 2025 18:04:47 -0800 Subject: [PATCH 0049/2255] Added F1 keywords --- docs/ide/refactoring/change-signature.md | 1 + docs/ide/refactoring/extract-function.md | 1 + docs/ide/refactoring/rename.md | 1 + 3 files changed, 3 insertions(+) diff --git a/docs/ide/refactoring/change-signature.md b/docs/ide/refactoring/change-signature.md index df104d59767..e8b15f90056 100644 --- a/docs/ide/refactoring/change-signature.md +++ b/docs/ide/refactoring/change-signature.md @@ -2,6 +2,7 @@ description: "Learn more about: Change Signature" title: "Change Signature" ms.date: "09/18/2022" +f1_keywords: ["vc.pkg.refactoring.changesignaturedlg"] --- # Change Signature diff --git a/docs/ide/refactoring/extract-function.md b/docs/ide/refactoring/extract-function.md index 634dc9f291b..91a9fc7d797 100644 --- a/docs/ide/refactoring/extract-function.md +++ b/docs/ide/refactoring/extract-function.md @@ -2,6 +2,7 @@ description: "Learn more about: Extract Function" title: "Extract Function" ms.date: "09/18/2022" +f1_keywords: ["vc.pkg.refactoring.extractfuncdlg"] --- # Extract Function diff --git a/docs/ide/refactoring/rename.md b/docs/ide/refactoring/rename.md index 512ae624ea8..69bf660156c 100644 --- a/docs/ide/refactoring/rename.md +++ b/docs/ide/refactoring/rename.md @@ -2,6 +2,7 @@ description: "Learn more about: Rename" title: "Rename" ms.date: "09/19/2022" +f1_keywords: ["vc.pkg.refactoring.renamedlg"] --- # Rename From e7b16540d62ebbf0a3fe80732d945c7ca1bc1d0b Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Thu, 16 Jan 2025 10:13:18 -0800 Subject: [PATCH 0050/2255] Update docs/build/reference/zc-static-assert.md Co-authored-by: Casey Carter --- docs/build/reference/zc-static-assert.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/zc-static-assert.md b/docs/build/reference/zc-static-assert.md index edcce9976b3..f9cefbc47f8 100644 --- a/docs/build/reference/zc-static-assert.md +++ b/docs/build/reference/zc-static-assert.md @@ -16,7 +16,7 @@ The **`/Zc:static_assert`** compiler option tells the compiler to evaluate `stat ## Remarks -Starting with Visual Studio 17.10, `/Zc:static_assert` and `/Zc:static_assert-` have no effect. Both options are ignored to avoid breaking builds that use them. `static_assert` is now always evaluated when parsing class or function templates. +Starting with Visual Studio 17.10, `/Zc:static_assert` and `/Zc:static_assert-` have no effect. Both options are ignored to avoid breaking builds that use them. `static_assert` is now never evaluated when parsing class or function templates. The **`/Zc:static_assert`** compiler option tells the compiler to evaluate a `static_assert` in the body of a function template or in the body of a class template member function when first parsed, if the test expression isn't dependent. If the non-dependent test expression isn't `false`, the compiler emits an error immediately. When the test expression is dependent, the `static_assert` isn't evaluated until the template is instantiated. From d0fce2bda611fcee1df97f0ba140b0961858edb9 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Thu, 16 Jan 2025 10:13:34 -0800 Subject: [PATCH 0051/2255] Update docs/build/reference/zc-static-assert.md Co-authored-by: Casey Carter --- docs/build/reference/zc-static-assert.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/zc-static-assert.md b/docs/build/reference/zc-static-assert.md index f9cefbc47f8..9eb98b94a5f 100644 --- a/docs/build/reference/zc-static-assert.md +++ b/docs/build/reference/zc-static-assert.md @@ -18,7 +18,7 @@ The **`/Zc:static_assert`** compiler option tells the compiler to evaluate `stat Starting with Visual Studio 17.10, `/Zc:static_assert` and `/Zc:static_assert-` have no effect. Both options are ignored to avoid breaking builds that use them. `static_assert` is now never evaluated when parsing class or function templates. -The **`/Zc:static_assert`** compiler option tells the compiler to evaluate a `static_assert` in the body of a function template or in the body of a class template member function when first parsed, if the test expression isn't dependent. If the non-dependent test expression isn't `false`, the compiler emits an error immediately. When the test expression is dependent, the `static_assert` isn't evaluated until the template is instantiated. +The **`/Zc:static_assert`** compiler option tells the compiler to evaluate a `static_assert` in the body of a function template or in the body of a class template member function when first parsed, if the test expression isn't dependent. If the non-dependent test expression is `false`, the compiler emits an error immediately. When the test expression is dependent, the `static_assert` isn't evaluated until the template is instantiated. The **`/Zc:static_assert`** option is available starting in Visual Studio 2022 version 17.1. In earlier versions of Visual Studio, or if **`/Zc:static_assert-`** is specified, Visual Studio doesn't do dependent analysis if the `static_assert` is within the body of a function template or within the body of a member function of a class template. Instead, it only evaluates the `static_assert` when a template is instantiated. From 79fe7d275ad7ad6bfc13e5ab1e9f8e38202a27ca Mon Sep 17 00:00:00 2001 From: Mahmoud Saleh <12202790+MahmoudGSaleh@users.noreply.github.com> Date: Thu, 16 Jan 2025 14:32:24 -0800 Subject: [PATCH 0052/2255] Address feedback review --- docs/windows/redist-version-auditing.md | 50 ++++++++++++------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/docs/windows/redist-version-auditing.md b/docs/windows/redist-version-auditing.md index 7536de22db2..a6a5ccec363 100644 --- a/docs/windows/redist-version-auditing.md +++ b/docs/windows/redist-version-auditing.md @@ -13,7 +13,7 @@ ms.author: msaleh # How to audit Visual C++ Runtime version usage within your organization -The Microsoft Visual C++ Redistributable and the Visual C++ Studio Runtime (collectively, "VC Runtime") is a critical component to thousands of applications. Across your enterprise network, machines may still be running applications that install and use an out-of-support version of the VC Runtime. NTFS File Auditing can be used to identify such usage as a step towards helping you replace these applications with ones that take a dependency on a supported version of the VC Runtime. This guide will walk you through setting up NTFS File Auditing, provide troubleshooting tips, and highlight the benefits of regular audits. +The Microsoft Visual C++ Redistributable and the Visual Studio C++ Runtime (collectively, "VC Runtime") are critical components to thousands of applications. Across your enterprise network, machines may still be running applications that install and use an out-of-support version of the VC Runtime. NTFS File Auditing can be used to identify such usage as a step towards helping you replace these applications with ones that take a dependency on a supported version of the VC Runtime. This guide will walk you through setting up NTFS File Auditing, provide troubleshooting tips, and highlight the benefits of regular audits. For details on the versions of VC Runtime no longer supported, see [Microsoft Visual C++ Redistributable latest supported downloads](/cpp/windows/latest-supported-vc-redist). @@ -21,16 +21,16 @@ For details on the versions of VC Runtime no longer supported, see [Microsoft Vi NTFS File Auditing can be used to determine which process is calling VC Runtime files. You can use this information on machines with legacy versions of the VC Runtime already installed to determine which applications are calling the unsupported versions of the VC Runtime. -This guide will first provide steps to manually enable NTFS File Auditing and review logs. Because there are several component files that can be used by an application, this guide also provides and recommends that you use PowerShell's [Get-Acl](/powershell/module/microsoft.powershell.security/get-acl) and [Set-Acl](/powershell/module/microsoft.powershell.security/set-acl) cmdlets to update Auditing permissions. For details on how to configure the audit policies on a file, see [Apply a basic audit policy on a file or folder.](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/apply-a-basic-audit-policy-on-a-file-or-folder) +This guide will first provide steps to manually enable NTFS File Auditing and review logs. Because there are several component files that can be used by an application, this guide also shows how to use PowerShell's [Get-Acl](/powershell/module/microsoft.powershell.security/get-acl) and [Set-Acl](/powershell/module/microsoft.powershell.security/set-acl) cmdlets to update Auditing permissions. For details on how to configure the audit policies on a file, see [Apply a basic audit policy on a file or folder.](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/apply-a-basic-audit-policy-on-a-file-or-folder) ### Manually enable object access auditing on the system Object access must be enabled before you enable file level auditing. -1. Open the Group Policy Editor (with gpedit.msc). -2. Navigate to Computer Configuration > Windows Settings > Security Settings > Advanced Audit Policy Configuration > System Audit Policies > Object Access. -3. Double-click on Audit File System. In the Audit File System Properties dialog, select Configure the following audit events, select Success and then select OK. -4. Close the policy editor app +1. Open Group Policy: Press Windows + R to open the **Run** dialog , type `gpedit.msc`, and press Enter. +2. Navigate to **Computer Configuration** > **Windows Settings** > **Security Settings** > **Advanced Audit Policy Configuration** > **System Audit Policies** > **Object Access**. +3. Double-click on **Audit File System**. In the **Audit File System Properties** dialog, select **Configure the following audit events**, select **Success** and then select **OK**. +4. Close the Group Policy Editor app Alternatively, you may use auditpol.exe to enable object access. @@ -41,23 +41,23 @@ Alternatively, you may use auditpol.exe to enable object access. To monitor which process is accessing a VC Runtime file, enable auditing on the file. -1. Right-click on the file that you want to audit, select Properties, and then select Security tab. +1. Right-click on the file that you want to audit, select **Properties**, and then select **Security** tab. * See the section below [VC Runtime installed locations](#vcruntime_install_location) to find the VC Runtime files installed on a machine. -2. Select Advanced. +2. Select **Advanced**. -3. In the Advanced Security Settings dialog box, select Auditing tab and then select Continue. +3. In the **Advanced Security Settings** dialog box, select **Auditing** tab and then select **Continue**. -4. To add a new auditing rule, select Add. In the Auditing Entry dialog, select a principal, then type the name of the user or group you want to add (Everyone) and then select OK. +4. To add a new auditing rule, select **Add**. In the **Auditing Entry** dialog, select a principal, then type the name of the user or group you want to add (Everyone) and then select OK. -5. In the Type box, use the default of Success. +5. In the Type box, use the default of **Success**. -6. Select Show advance permissions, select Clear all and then select Traverse folder / execute file, and select OK. +6. Select **Show advance permissions**, select **Clear all** and then select **Traverse folder / execute file**, and select **OK**. -7. At this point there should be a new row in the Auditing entries: matching what you have selected. Select OK. +7. At this point there should be a new row in the **Auditing** entries matching what you have selected. Select **OK**. -8. In the Properties Dialog, select OK. +8. In the **Properties** Dialog, select **OK**. The audit rule is enabled now. @@ -65,11 +65,11 @@ The audit rule is enabled now. NTFS File Auditing will generate ["Event 4663: An attempt was made to access an object"](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4663) for each file that includes + audit permission and the+ process accessing process namethe file. -1. Open Event Viewer: Press Windows + R, type `eventvwr.msc`, and press Enter. +1. Open Event Viewer: Press Windows + R to open the **Run** dialog , type `eventvwr.msc`, and press Enter. -2. Navigate to Security Logs: In the Event Viewer, expand Windows Logs and select Security. The results pane lists individual security events. +2. Navigate to Security Logs: In the Event Viewer, expand Windows Logs and select **Security**. The results pane lists individual security events. -3. Filter and Analyze the Logs: Use the Filter Current Log option to narrow down the events to Event ID 4663 (Audit Success for the File System Category). +3. Filter and Analyze the Logs: Use the **Filter Current Log** option to narrow down the events to Event ID 4663 (Audit Success for the File System Category). For an example of a File Access Auditing Event 4663, see ["4663(S): An attempt was made to access an object."](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4663) @@ -140,7 +140,7 @@ ForEach-Object { ### PowerShell: Viewing file auditing events -PowerShell provides Get-WinEvent to obtain event records for various event logs. +PowerShell provides `Get-WinEvent` to obtain event records for various event logs. The following PowerShell section of code will list all of the Auditing Event 4663 records over the past 24 hours. @@ -193,15 +193,15 @@ ResourceAttributes : S:AI ### Next steps after auditing VC Runtime usage -After you have determined which processes are using the VC Runtime files or installing the VC Redistributable, uninstall those applications or upgrade them to newer versions that do not depend on unsupported VC Runtimes. +After you have determined which processes are using the VC Runtime files or which applications have installed the VC Redistributable, uninstall those applications or upgrade them to newer versions that don't depend on unsupported VC Runtimes. -Note that some Microsoft applications do require legacy versions of the VC Runtime. For details, see [Visual C++ Redistributable and runtime libraries FAQ | Microsoft Learn](/lifecycle/faq/visual-c-faq). +Some Microsoft applications require legacy versions of the VC Runtime. For details, see [Visual C++ Redistributable and runtime libraries FAQ | Microsoft Learn](/lifecycle/faq/visual-c-faq). -## VC Runtime installed locations +## VC Runtime installation locations -The following section lists where each version of the VC Runtime component files are installed. +The following is where each version of the VC Runtime is installed. | **Visual Studio Version**| **Installed Location(s)**| | ------------- | ------------- | @@ -213,6 +213,6 @@ The following section lists where each version of the VC Runtime component files ## See also -* [Redistributing Visual C++ Files](redistributing-visual-cpp-files.md) -* [The latest supported Visual C++ downloads](latest-supported-vc-redist.md) -* [Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq) +[Redistributing Visual C++ Files](redistributing-visual-cpp-files.md)
+[The latest supported Visual C++ downloads](latest-supported-vc-redist.md)
+[Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq) From 0572c071b79a235c1d8be913086100286a9785ef Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Thu, 16 Jan 2025 17:49:26 -0800 Subject: [PATCH 0053/2255] Update Visual C++ Runtime auditing guide --- docs/windows/redist-version-auditing.md | 103 ++++++++++-------------- 1 file changed, 44 insertions(+), 59 deletions(-) diff --git a/docs/windows/redist-version-auditing.md b/docs/windows/redist-version-auditing.md index a6a5ccec363..74de2c81779 100644 --- a/docs/windows/redist-version-auditing.md +++ b/docs/windows/redist-version-auditing.md @@ -1,6 +1,6 @@ --- -title: "cpp-redist-version-auditing" -description: "This article provides a detailed guide for auditing usage of Visual C++ Runtime versions within your organization." +title: "How to audit Visual C++ Runtime version usage" +description: "A detailed guide for auditing Visual C++ Runtime file usage." ms.date: 12/2/2024 helpviewer_keywords: [ @@ -11,89 +11,74 @@ author: MahmoudGSaleh ms.author: msaleh --- -# How to audit Visual C++ Runtime version usage within your organization +# How to audit Visual C++ Runtime version usage -The Microsoft Visual C++ Redistributable and the Visual Studio C++ Runtime (collectively, "VC Runtime") are critical components to thousands of applications. Across your enterprise network, machines may still be running applications that install and use an out-of-support version of the VC Runtime. NTFS File Auditing can be used to identify such usage as a step towards helping you replace these applications with ones that take a dependency on a supported version of the VC Runtime. This guide will walk you through setting up NTFS File Auditing, provide troubleshooting tips, and highlight the benefits of regular audits. +The Microsoft Visual C++ Redistributable and the Visual Studio C++ Runtime (collectively, "VC Runtime") are critical components of many applications. Across your network, machines may still be running applications that install and use an out-of-support version of the VC Runtime. You can use NTFS File Auditing to identify such usage as a step towards helping you replace these applications with ones that take a dependency on a supported version of the VC Runtime. This guide walks you through setting up NTFS File Auditing, provided troubleshooting tips, and highlights the benefits of regular audits. -For details on the versions of VC Runtime no longer supported, see [Microsoft Visual C++ Redistributable latest supported downloads](/cpp/windows/latest-supported-vc-redist). +For more information about the versions of VC Runtime that are no longer supported, see [Microsoft Visual C++ Redistributable latest supported downloads](/cpp/windows/latest-supported-vc-redist). -## Enabling NTFS File Auditing to determine usage of VC Runtime +## Enable NTFS file auditing to determine VC Runtime usage -NTFS File Auditing can be used to determine which process is calling VC Runtime files. You can use this information on machines with legacy versions of the VC Runtime already installed to determine which applications are calling the unsupported versions of the VC Runtime. +You can use NTFS file auditing to determine which applications are calling the unsupported versions of the VC Runtime. -This guide will first provide steps to manually enable NTFS File Auditing and review logs. Because there are several component files that can be used by an application, this guide also shows how to use PowerShell's [Get-Acl](/powershell/module/microsoft.powershell.security/get-acl) and [Set-Acl](/powershell/module/microsoft.powershell.security/set-acl) cmdlets to update Auditing permissions. For details on how to configure the audit policies on a file, see [Apply a basic audit policy on a file or folder.](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/apply-a-basic-audit-policy-on-a-file-or-folder) +This guide provides the steps to manually enable NTFS file auditing and review audit events. Because there are several files that can be used by an application, this guide also shows how to use PowerShell's [`Get-Acl`](/powershell/module/microsoft.powershell.security/get-acl) and [`Set-Acl`](/powershell/module/microsoft.powershell.security/set-acl) cmdlets to update auditing permissions. For more information about how to configure audit policies for a file, see [Apply a basic audit policy on a file or folder.](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/apply-a-basic-audit-policy-on-a-file-or-folder) ### Manually enable object access auditing on the system -Object access must be enabled before you enable file level auditing. +Object access must be enabled before you enable file level auditing: -1. Open Group Policy: Press Windows + R to open the **Run** dialog , type `gpedit.msc`, and press Enter. -2. Navigate to **Computer Configuration** > **Windows Settings** > **Security Settings** > **Advanced Audit Policy Configuration** > **System Audit Policies** > **Object Access**. -3. Double-click on **Audit File System**. In the **Audit File System Properties** dialog, select **Configure the following audit events**, select **Success** and then select **OK**. -4. Close the Group Policy Editor app +1. Open Group Policy by pressing Windows + R to open the **Run** dialog, then type `gpedit.msc`, and press Enter. +1. Navigate to **Computer Configuration** > **Windows Settings** > **Security Settings** > **Advanced Audit Policy Configuration** > **System Audit Policies** > **Object Access**. +1. Double-click **Audit File System**. In the **Audit File System Properties** dialog, select **Configure the following audit events** > **Success** > **OK**. +1. Close the Group Policy Editor. -Alternatively, you may use auditpol.exe to enable object access. +Alternatively, you may use `auditpol.exe` to enable object access: 1. List the current settings with `AuditPol.exe /get /category:"Object Access"`. -2. Enable/Disable with `AuditPol.exe /set /category:"Object Access" /subcategory:"File System" /success:enable`. +1. Enable access with `AuditPol.exe /set /category:"Object Access" /subcategory:"File System" /success:enable`. ### Manually enable auditing on a file -To monitor which process is accessing a VC Runtime file, enable auditing on the file. +To monitor which process accesses a VC Runtime file, enable auditing on the file: -1. Right-click on the file that you want to audit, select **Properties**, and then select **Security** tab. +1. Right-click on the file that you want to audit, select **Properties**, and then select the **Security** tab. For more information about finding installed VC Runtime files, see [VC Runtime installed locations](#vcruntime_install_location). +1. Select **Advanced**. +1. In the **Advanced Security Settings** dialog box, select the **Auditing** tab and then select **Continue**. +1. To add a new auditing rule, select **Add**. In the **Auditing Entry** dialog, select a principal, then type the name of the user or group you want to add such as **(Everyone)**, and then select **OK**. +1. In **Type**, select ensure that **Success** is selected. +1. Select **Show advance permissions** > **Clear all** > **Traverse folder / execute file** > **OK**. +1. There should now be a new row in the **Auditing** entries matching what you have selected. Select **OK**. +1. In the **Properties** Dialog, select **OK**. - * See the section below [VC Runtime installed locations](#vcruntime_install_location) to find the VC Runtime files installed on a machine. - -2. Select **Advanced**. - -3. In the **Advanced Security Settings** dialog box, select **Auditing** tab and then select **Continue**. - -4. To add a new auditing rule, select **Add**. In the **Auditing Entry** dialog, select a principal, then type the name of the user or group you want to add (Everyone) and then select OK. - -5. In the Type box, use the default of **Success**. - -6. Select **Show advance permissions**, select **Clear all** and then select **Traverse folder / execute file**, and select **OK**. - -7. At this point there should be a new row in the **Auditing** entries matching what you have selected. Select **OK**. - -8. In the **Properties** Dialog, select **OK**. - -The audit rule is enabled now. +The audit rule is now enabled. ### Manually review audit logs -NTFS File Auditing will generate ["Event 4663: An attempt was made to access an object"](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4663) for each file that includes + audit permission and the+ process accessing process namethe file. +NTFS file auditing generates ["Event 4663: An attempt was made to access an object"](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4663) for each file that includes the audit permission and that is accessed by a process. -1. Open Event Viewer: Press Windows + R to open the **Run** dialog , type `eventvwr.msc`, and press Enter. - -2. Navigate to Security Logs: In the Event Viewer, expand Windows Logs and select **Security**. The results pane lists individual security events. - -3. Filter and Analyze the Logs: Use the **Filter Current Log** option to narrow down the events to Event ID 4663 (Audit Success for the File System Category). +1. Open the Event Viewer by pressing `Windows` + `R` to open the **Run** dialog. Then type `eventvwr.msc`, and press Enter. +1. Navigate to the **Security** logs in the Event Viewer by expanding **Windows Logs** > **Security**. The results pane lists security events. +1. Filter and Analyze the logs by choosing **Filter Current Log...** in the **Actions** pane. Narrow down the events to **Event ID 4663 (Audit Success for the File System Category)** by entering **4663 into the Includes/Excludes Event IDs** text box. For an example of a File Access Auditing Event 4663, see ["4663(S): An attempt was made to access an object."](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4663) ![Event Viewer showing security logs](media/windows-events.png) -### Using PowerShell to enable auditing of VC Runtime usage - -The general workflow for updating the File Auditing Permissions with PowerShell is as follows: - -1. Define the [file system audit rule](/dotnet/api/system.security.accesscontrol.filesystemauditrule.-ctor) to be applied to the file(s). +### Use PowerShell to audit VC Runtime usage -2. Obtain a file's security descriptor with [Get-Acl](/powershell/module/microsoft.powershell.security/get-acl). +To update File Auditing Permissions with PowerShell: -3. [Apply the audit rule](/dotnet/api/system.security.accesscontrol.filesystemsecurity.setaccessrule) to the security descriptor. +1. Define the [file system audit rule](/dotnet/api/system.security.accesscontrol.filesystemauditrule.-ctor) to apply to the file(s). +1. Obtain a file's security descriptor with [`Get-Acl`](/powershell/module/microsoft.powershell.security/get-acl). +1. [Apply the audit rule](/dotnet/api/system.security.accesscontrol.filesystemsecurity.setaccessrule) to the security descriptor. +1. Apply the updated security descriptor on the original file with [`Set-Acl`](/powershell/module/microsoft.powershell.security/set-acl). +1. View File Access Auditing Event 4663 records with [`Get-WinEvent`](/powershell/module/microsoft.powershell.diagnostics/get-winevent). -4. Apply the updated security descriptor on the original file with [Set-Acl](/powershell/module/microsoft.powershell.security/set-acl). +### PowerShell: Audit out-of-support VC Runtime files -5. View File Access Auditing Event 4663 records with [Get-WinEvent](/powershell/module/microsoft.powershell.diagnostics/get-winevent). +The following PowerShell code enables you to audit installed VC Runtime files that are no longer supported. -### PowerShell: Enable auditing on out-of-support VC Runtime files - -The following PowerShell section of code will enable usage auditing of the currently installed out-of-support VC Runtime files. - -```sh +```powershell function Get-AuditRuleForFile { $auditRuleArguments = 'Everyone' <# identity #>, 'ExecuteFile, Traverse' <# fileSystemRights #>, @@ -138,13 +123,13 @@ ForEach-Object { } ``` -### PowerShell: Viewing file auditing events +### PowerShell: View file audit events PowerShell provides `Get-WinEvent` to obtain event records for various event logs. -The following PowerShell section of code will list all of the Auditing Event 4663 records over the past 24 hours. +The following PowerShell code lists all of the Auditing Event 4663 records over the past 24 hours: -```sh +```powershell function Get-AuditEntries { param ( [Parameter(Mandatory = $true)] @@ -171,9 +156,9 @@ function Get-AuditEntries { Get-AuditEntries -oldestTime (Get-Date).AddHours(-24) ``` -Example output from the above block of code is as follows: +Example output from the previous code: -``` +```output TimeCreated : 11/20/2024 5:00:11 AM Accesses : Execute/Traverse SubjectUserSid : \*\*\*\*\* From 8b617f4f5442307d88dc47214051160eef41a98f Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 17 Jan 2025 10:41:59 -0800 Subject: [PATCH 0054/2255] edit pass --- docs/windows/redist-version-auditing.md | 28 +++++++++++-------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/docs/windows/redist-version-auditing.md b/docs/windows/redist-version-auditing.md index 74de2c81779..561d155ecf0 100644 --- a/docs/windows/redist-version-auditing.md +++ b/docs/windows/redist-version-auditing.md @@ -13,7 +13,7 @@ ms.author: msaleh # How to audit Visual C++ Runtime version usage -The Microsoft Visual C++ Redistributable and the Visual Studio C++ Runtime (collectively, "VC Runtime") are critical components of many applications. Across your network, machines may still be running applications that install and use an out-of-support version of the VC Runtime. You can use NTFS File Auditing to identify such usage as a step towards helping you replace these applications with ones that take a dependency on a supported version of the VC Runtime. This guide walks you through setting up NTFS File Auditing, provided troubleshooting tips, and highlights the benefits of regular audits. +The Microsoft Visual C++ Redistributable and the Visual Studio C++ Runtime (collectively, "VC Runtime") are critical components of many applications. Across your network, machines may still be running applications that install and use an out-of-support version of the VC Runtime. You can use NTFS file auditing to identify such usage as a step towards replacing those applications with ones that use a supported version of the VC Runtime. This guide walks you through setting up NTFS file auditing, provides troubleshooting tips, and highlights the benefits of regular audits. For more information about the versions of VC Runtime that are no longer supported, see [Microsoft Visual C++ Redistributable latest supported downloads](/cpp/windows/latest-supported-vc-redist). @@ -21,27 +21,27 @@ For more information about the versions of VC Runtime that are no longer support You can use NTFS file auditing to determine which applications are calling the unsupported versions of the VC Runtime. -This guide provides the steps to manually enable NTFS file auditing and review audit events. Because there are several files that can be used by an application, this guide also shows how to use PowerShell's [`Get-Acl`](/powershell/module/microsoft.powershell.security/get-acl) and [`Set-Acl`](/powershell/module/microsoft.powershell.security/set-acl) cmdlets to update auditing permissions. For more information about how to configure audit policies for a file, see [Apply a basic audit policy on a file or folder.](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/apply-a-basic-audit-policy-on-a-file-or-folder) +This guide provides the steps to manually enable NTFS file auditing and review audit events. Because there are several files that can be used by an application, this guide also shows how to use PowerShell's [`Get-Acl`](/powershell/module/microsoft.powershell.security/get-acl) and [`Set-Acl`](/powershell/module/microsoft.powershell.security/set-acl) cmdlets to update auditing permissions. For more information about how to configure audit policies for a file, see [Apply a basic audit policy on a file or folder](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/apply-a-basic-audit-policy-on-a-file-or-folder). ### Manually enable object access auditing on the system Object access must be enabled before you enable file level auditing: -1. Open Group Policy by pressing Windows + R to open the **Run** dialog, then type `gpedit.msc`, and press Enter. +1. Open the Local Group Policy Editor by pressing Windows + R to open the **Run** dialog, then type `gpedit.msc`, and press Enter. 1. Navigate to **Computer Configuration** > **Windows Settings** > **Security Settings** > **Advanced Audit Policy Configuration** > **System Audit Policies** > **Object Access**. 1. Double-click **Audit File System**. In the **Audit File System Properties** dialog, select **Configure the following audit events** > **Success** > **OK**. 1. Close the Group Policy Editor. Alternatively, you may use `auditpol.exe` to enable object access: -1. List the current settings with `AuditPol.exe /get /category:"Object Access"`. -1. Enable access with `AuditPol.exe /set /category:"Object Access" /subcategory:"File System" /success:enable`. +1. List the current settings from the command line with `AuditPol.exe /get /category:"Object Access"`. +1. Enable object access with `AuditPol.exe /set /category:"Object Access" /subcategory:"File System" /success:enable`. ### Manually enable auditing on a file To monitor which process accesses a VC Runtime file, enable auditing on the file: -1. Right-click on the file that you want to audit, select **Properties**, and then select the **Security** tab. For more information about finding installed VC Runtime files, see [VC Runtime installed locations](#vcruntime_install_location). +1. Right-click the file that you want to audit, select **Properties**, and then select the **Security** tab. For more information about finding installed VC Runtime files, see [VC Runtime installed locations](#vcruntime_install_location). 1. Select **Advanced**. 1. In the **Advanced Security Settings** dialog box, select the **Auditing** tab and then select **Continue**. 1. To add a new auditing rule, select **Add**. In the **Auditing Entry** dialog, select a principal, then type the name of the user or group you want to add such as **(Everyone)**, and then select **OK**. @@ -50,7 +50,7 @@ To monitor which process accesses a VC Runtime file, enable auditing on the file 1. There should now be a new row in the **Auditing** entries matching what you have selected. Select **OK**. 1. In the **Properties** Dialog, select **OK**. -The audit rule is now enabled. +The audit rule is now enabled for the file. ### Manually review audit logs @@ -58,7 +58,7 @@ NTFS file auditing generates ["Event 4663: An attempt was made to access an obje 1. Open the Event Viewer by pressing `Windows` + `R` to open the **Run** dialog. Then type `eventvwr.msc`, and press Enter. 1. Navigate to the **Security** logs in the Event Viewer by expanding **Windows Logs** > **Security**. The results pane lists security events. -1. Filter and Analyze the logs by choosing **Filter Current Log...** in the **Actions** pane. Narrow down the events to **Event ID 4663 (Audit Success for the File System Category)** by entering **4663 into the Includes/Excludes Event IDs** text box. +1. Find the audit events by choosing **Filter Current Log...** in the **Actions** pane. Narrow down the events to **Event ID 4663 (Audit Success for the File System Category)** by entering **4663 into the Includes/Excludes Event IDs** text box. For an example of a File Access Auditing Event 4663, see ["4663(S): An attempt was made to access an object."](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4663) @@ -125,9 +125,7 @@ ForEach-Object { ### PowerShell: View file audit events -PowerShell provides `Get-WinEvent` to obtain event records for various event logs. - -The following PowerShell code lists all of the Auditing Event 4663 records over the past 24 hours: +PowerShell provides `Get-WinEvent` to obtain event records for various event logs as shown in the following PowerShell code which lists all of the Auditing Event 4663 records over the past 24 hours: ```powershell function Get-AuditEntries { @@ -156,8 +154,6 @@ function Get-AuditEntries { Get-AuditEntries -oldestTime (Get-Date).AddHours(-24) ``` -Example output from the previous code: - ```output TimeCreated : 11/20/2024 5:00:11 AM Accesses : Execute/Traverse @@ -178,7 +174,7 @@ ResourceAttributes : S:AI ### Next steps after auditing VC Runtime usage -After you have determined which processes are using the VC Runtime files or which applications have installed the VC Redistributable, uninstall those applications or upgrade them to newer versions that don't depend on unsupported VC Runtimes. +After you have determined which processes are using the VC Runtime files, or which applications have installed the VC Redistributable, uninstall those applications or upgrade them to newer versions that don't depend on unsupported VC Runtimes. Some Microsoft applications require legacy versions of the VC Runtime. For details, see [Visual C++ Redistributable and runtime libraries FAQ | Microsoft Learn](/lifecycle/faq/visual-c-faq). @@ -198,6 +194,6 @@ The following is where each version of the VC Runtime is installed. ## See also -[Redistributing Visual C++ Files](redistributing-visual-cpp-files.md)
-[The latest supported Visual C++ downloads](latest-supported-vc-redist.md)
+[Redistributing Visual C++ Files](redistributing-visual-cpp-files.md)\ +[The latest supported Visual C++ downloads](latest-supported-vc-redist.md)\ [Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq) From 5c039fa660af4e8df6299452aee5ecc97cb24476 Mon Sep 17 00:00:00 2001 From: Ziqi Zhao Date: Sun, 19 Jan 2025 13:44:40 +0800 Subject: [PATCH 0055/2255] Fix wrong link in class-member-overview.md --- docs/cpp/class-member-overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cpp/class-member-overview.md b/docs/cpp/class-member-overview.md index 54f6191224d..3d97b74bea9 100644 --- a/docs/cpp/class-member-overview.md +++ b/docs/cpp/class-member-overview.md @@ -17,7 +17,7 @@ The full list of member categories is as follows: - [Overview of member functions](overview-of-member-functions.md). -- [Mutable](static-members-cpp.md) and [static](static-members-cpp.md) data members, including built-in types and other user defined types. +- [Mutable](mutable-data-members-cpp.md) and [static](static-members-cpp.md) data members, including built-in types and other user defined types. - Operators From 78237e8fa059fbcf17c8a5f421dbf3f084709526 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Thu, 23 Jan 2025 12:36:39 -0800 Subject: [PATCH 0056/2255] Update compiler-warnings-c4400-through-c4599.md (#5566) * Learn Editor: Update compiler-warnings-c4400-through-c4599.md * Update warning error level docs * Acrolynx updates * Acrolynx changes * more updates * Update formatting * Update function name placeholder in C4439 doc * going back to previous style I think {} is a better style for placeholders, but that would go against how these docs have been documented using italic. So reverting my change. * Update example function names in C4430 warning Changed function example to not suggest a constructor. * Edit compiler warning C4430 documentation * Update formatting and wording in C4436 doc going back to old style * Fix capitalization in compiler warning title * Update compiler warning C4412 documentation minor edits * Update compiler warning C4400 documentation * Update ms.date in compiler warning C4430 doc * Update date and punctuation in C4439 doc * Fix punctuation in compiler warning example * Update date and improve warning description * Update compiler warning C4412 documentation * Update compiler warning documentation date and format * Update compiler warning C4437 documentation * Update date in compiler warnings documentation * Update compiler warnings to use contractions Improve acrolinx score --------- Co-authored-by: Tyler Whitney Co-authored-by: Shilpa Sharma --- .../compiler-warning-c4430.md | 43 ++- .../compiler-warning-c4439.md | 15 +- .../compiler-warning-level-1-c4436.md | 34 +- .../compiler-warning-level-2-c4412.md | 34 +- .../compiler-warning-level-4-c4400.md | 13 +- .../compiler-warning-level-4-c4435.md | 19 +- .../compiler-warning-level-4-c4437.md | 32 +- .../compiler-warnings-c4400-through-c4599.md | 325 +++++++++--------- docs/error-messages/toc.yml | 54 +-- 9 files changed, 285 insertions(+), 284 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4430.md b/docs/error-messages/compiler-warnings/compiler-warning-c4430.md index 15c04e3b0fd..3a463980edf 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4430.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4430.md @@ -1,36 +1,51 @@ --- -description: "Learn more about: Compiler Warning C4430" -title: "Compiler Warning C4430" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1, error) C4430" +title: "Compiler warning (level 1, error) C4430" +ms.date: "1/25/2025" f1_keywords: ["C4430"] helpviewer_keywords: ["C4430"] -ms.assetid: 12efbfff-aa58-4a86-a7d6-2c6a12d01dd3 --- -# Compiler Warning C4430 +# Compiler Warning (level 1, Error) C4430 -missing type specifier - int assumed. Note: C++ does not support default-int +> missing type specifier - int assumed. Note: C++ does not support default-int -This error can be generated as a result of compiler conformance work that was done for Visual Studio 2005: all declarations must explicitly specify the type; int is no longer assumed. +This error might be generated due to compiler conformance work done for Visual Studio 2005: all declarations must explicitly specify the type; `int` is no longer assumed. -C4430 is always issued as an error. You can turn off this warning with the `#pragma warning` or **/wd**; see [warning](../../preprocessor/warning.md) or [/w, /W0, /W1, /W2, /W3, /W4, /w1, /w2, /w3, /w4, /Wall, /wd, /we, /wo, /Wv, /WX (Warning Level)](../../build/reference/compiler-option-warning-level.md) for more information. +C4430 is always issued as an error. You can turn off this warning with the `#pragma warning` or `/wd`. For more information, see [`warning`](../../preprocessor/warning.md) or [`/w`, `/W0`, `/W1`, `/W2`, `/W3`, `/W4`, `/w1`, `/w2`, `/w3`, `/w4`, `/Wall`, `/wd`, `/we`, `/wo`, `/Wv`, `/WX` (Warning Level)](../../build/reference/compiler-option-warning-level.md). ## Example -The following sample generates C4430. +The following sample generates C4430: ```cpp -// C4430.cpp // compile with: /c struct CMyClass { CUndeclared m_myClass; // C4430 - int m_myClass; // OK + int m_myClass; }; typedef struct { - POINT(); // C4430 - // try the following line instead - // int POINT(); + someFunction(); // C4430 unsigned x; unsigned y; } POINT; ``` + +The following addresses C4430: + +```cpp +// compile with: /c + +#include "CUndeclared.h" // for `CUndeclared` + +struct CMyClass { + CUndeclared m_myClass; + int m_myClass; +}; + +typedef struct { + int someFunction(); + unsigned x; + unsigned y; +} POINT; +``` \ No newline at end of file diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4439.md b/docs/error-messages/compiler-warnings/compiler-warning-c4439.md index f8d402b8386..9608a6c02cc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4439.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4439.md @@ -1,22 +1,21 @@ --- -description: "Learn more about: Compiler Warning C4439" -title: "Compiler Warning C4439" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1, error) C4439" +title: "Compiler warning (level 1, error) C4439" +ms.date: "1/22/2025" f1_keywords: ["C4439"] helpviewer_keywords: ["C4439"] -ms.assetid: 9449958f-f407-4824-829b-9e092f2af97d --- -# Compiler Warning C4439 +# Compiler warning C4439 -'function' : function definition with a managed type in the signature must have a __clrcall calling convention +> '*function name*': function definition with a managed type in the signature must have a `__clrcall` calling convention The compiler implicitly replaced a calling convention with [`__clrcall`](../../cpp/clrcall.md). To resolve this warning, remove the **`__cdecl`** or **`__stdcall`** calling convention. -C4439 is always issued as an error. You can turn off this warning with the `#pragma warning` or **`/wd`**; see [warning](../../preprocessor/warning.md) or [/w, /W0, /W1, /W2, /W3, /W4, /w1, /w2, /w3, /w4, /Wall, /wd, /we, /wo, /Wv, /WX (Warning Level)](../../build/reference/compiler-option-warning-level.md) for more information. +C4439 is always issued as an error. You can turn off this warning with the `#pragma warning` or **`/wd`**. For more information, see [`warning`](../../preprocessor/warning.md) or [`/w`, `/W0`, `/W1`, `/W2`, `/W3`, `/W4`, `/w1`, `/w2`, `/w3`, `/w4`, `/Wall`, `/wd`, `/we`, `/wo`, `/Wv`, `/WX` (Warning Level)](../../build/reference/compiler-option-warning-level.md). ## Example -The following sample generates C4439. +The following sample generates C4439: ```cpp // C4439.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4436.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4436.md index 2e6e126eadc..9b3e694ede6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4436.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4436.md @@ -1,35 +1,31 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4436" -title: "Compiler Warning (level 1) C4436" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1 and level 4) C4436" +title: "Compiler warning (level 1 and level 4) C4436" +ms.date: "1/22/2025" f1_keywords: ["C4436"] helpviewer_keywords: ["C4436"] -ms.assetid: 2b54a1fc-c9c6-4cc9-90be-faa44fc715d5 --- -# Compiler Warning (level 1) C4436 +# Compiler warning (level 1) C4436 -dynamic_cast from virtual base 'class1' to 'class2' in constructor or destructor could fail with partially-constructed object Compile with /vd2 or define 'class2' with #pragma vtordisp(2) in effect +> `dynamic_cast` from virtual base '*base_class*' to '*derived_class*' in constructor or destructor could fail with partially-constructed object -The compiler has encountered a **`dynamic_cast`** operation with the following characteristics. +A `dynamic_cast` operation is used when: - The cast is from a base class pointer to a derived class pointer. - - The derived class virtually inherits the base class. +- The derived class doesn't have a `vtordisp` field for the virtual base. +- The cast is found in a constructor or destructor of the derived class, or a class that inherits from the derived class. -- The derived class does not have a `vtordisp` field for the virtual base. - -- The cast is found in a constructor or destructor of the derived class, or some class which further inherits from the derived class. - -The warning indicates the **`dynamic_cast`** might not perform correctly, if it is operating on a partially-constructed object. That happens if the derived constructor/destructor is operating on a sub-object of some further derived object. If the derived class named in the warning is never further derived, the warning can be ignored. +This warning indicates that the `dynamic_cast` might not perform correctly if it is applied to a partially constructed object. Which happens if the derived constructor/destructor is operating on a subobject of some further derived object. If the derived class named in the warning isn't further derived, you can ignore the warning. ## Example -The following sample generates C4436 and demonstrates the code generation issue that arises from the missing `vtordisp` field. +The following sample generates C4436 and demonstrates the code generation issue due to the missing `vtordisp` field: ```cpp // C4436.cpp // To see the warning and runtime assert, compile with: /W1 -// To eliminate the warning and assert, compile with: /W1 /vd2 +// To eliminate the warning and assert, compile with: /W1 /vd2 // or compile with: /W1 /DFIX #include @@ -48,7 +44,7 @@ struct B : virtual A { A* a = static_cast(this); B* b = dynamic_cast(a); // C4436 - assert(this == b); // assert unless compiled with /vd2 + assert(this == b); // asserts unless compiled with /vd2 } }; #if defined(FIX) @@ -68,6 +64,6 @@ int main() ## See also -[dynamic_cast Operator](../../cpp/dynamic-cast-operator.md)
-[vtordisp](../../preprocessor/vtordisp.md)
-[Compiler Warning (level 4) C4437](../../error-messages/compiler-warnings/compiler-warning-level-4-c4437.md) +[`dynamic_cast` Operator](../../cpp/dynamic-cast-operator.md)\ +[`vtordisp`](../../preprocessor/vtordisp.md)\ +[Compiler Warning (level 1 and level 4, off) C4437](compiler-warning-level-4-c4437.md) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4412.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4412.md index 2c6d5bb4fa7..3ef99e97094 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4412.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4412.md @@ -1,35 +1,33 @@ --- -description: "Learn more about: Compiler Warning (level 2) C4412" -title: "Compiler Warning (level 2) C4412" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 2, off) C4412" +title: "Compiler warning (level 2, off) C4412" +ms.date: "1/22/2025" f1_keywords: ["C4412"] helpviewer_keywords: ["C4412"] -ms.assetid: f28dc531-1a98-497b-a366-0a13e1bc81c7 --- -# Compiler Warning (level 2) C4412 +# Compiler warning (level 2, off) C4412 -> '*function*' : function signature contains type '*type*'; C++ objects are unsafe to pass between pure code and mixed or native. +> '*function*': function signature contains type '*type*'; C++ objects are unsafe to pass between pure code and mixed or native. ## Remarks -The **/clr:pure** compiler option is deprecated in Visual Studio 2015 and unsupported in Visual Studio 2017. If you have code that needs to be pure, we recommend that you port it to C#. +The `/clr:pure` compiler option is deprecated in Visual Studio 2015, and unsupported starting in Visual Studio 2017. If you have code that needs to be CLR pure, we recommend that you port it to C#. -The compiler detected a potentially unsafe situation that could result in a runtime error: a call is being made from a **/clr:pure** compiland to a function that was imported via dllimport and the function signature contains an unsafe type. A type is unsafe if it contains a member function or has a data member that is an unsafe type or an indirection to an unsafe type. +The compiler detected a potentially unsafe situation that could result in a runtime error: a call is being made from code compiled with `/clr:pure` to a function imported via `dllimport`, and the function signature contains an unsafe type. A type is unsafe if it contains a member function or has a data member that is an unsafe type or an indirection to an unsafe type. -This is unsafe because of the difference in the default calling conventions between pure and native code (or mixed native and managed). When importing (via `dllimport`) a function into a **/clr:pure** compiland, ensure that the declarations of each type in the signature are identical to those in the compiland that exports the function (being especially careful about differences in implicit calling conventions). +This pattern is unsafe because of the difference in the default calling conventions between pure and native code (or mixed native and managed). When importing a function via `dllimport` into code compiled with `/clr:pure`, ensure that the declarations of each type in the signature are identical to the signature in the compiland that exports the function (being especially careful about differences in implicit calling conventions). -A virtual member function is especially prone to give unexpected results. However, even a non-virtual function should be tested to ensure that you get the correct results. If you are sure that you are getting the correct results, you can ignore this warning. +A virtual member function is especially prone to give unexpected results. However, even a nonvirtual function should be tested to ensure that you get the correct results. This warning can be ignored once you ensure the result is correct. -C4412 is off by default. See [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md) and [dllexport, dllimport](../../cpp/dllexport-dllimport.md) for more information. +C4412 is off by default. For more information, see [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md) and [`dllexport`, `dllimport`](../../cpp/dllexport-dllimport.md). To resolve this warning, remove all functions from the type. -## Examples +## Example -The following sample generates C4412. +The following sample generates C4412: ```cpp -// C4412.cpp // compile with: /c /W2 /clr:pure #pragma warning (default : 4412) @@ -52,7 +50,7 @@ int main() { } ``` -The following sample is a header file that declares two types. The `Unsafe` type is unsafe because it has a member function. +The following sample is a header file that declares two types. The `Unsafe` type is unsafe because it has a member function: ```cpp // C4412.h @@ -70,7 +68,7 @@ struct Safe { }; ``` -This sample exports functions with the types defined in the header file. +This sample exports functions with the types defined in the header file: ```cpp // C4412_2.cpp @@ -85,9 +83,9 @@ __declspec(dllexport) Unsafe * __cdecl func() { return new Unsafe; } __declspec(dllexport) Safe * __cdecl func2() { return new Safe; } ``` -The default calling convention in a **/clr:pure** compilation is different from a native compilation. When C4412.h is included, `Test` defaults to `__clrcall`. If you compile and run this program (do not use **/c**), the program will throw an exception. +The default calling convention in a `/clr:pure` compilation is different from a native compilation. When `C4412.h` is included, `Test` defaults to `__clrcall`. -The following sample generates C4412. +The following sample generates C4412 and throws an exception at runtime: ```cpp // C4412_3.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4400.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4400.md index 071fc9c192d..a97330018c7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4400.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4400.md @@ -1,16 +1,15 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4400" -title: "Compiler Warning (level 4) C4400" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4, error) C4400" +title: "Compiler warning (level 4, error) C4400" +ms.date: "1/22/2025" f1_keywords: ["C4400"] helpviewer_keywords: ["C4400"] -ms.assetid: f135fe98-4f92-4e07-9d71-2621b36ee755 --- -# Compiler Warning (level 4) C4400 +# Compiler warning (level 4, error) C4400 -'type' : const/volatile qualifiers on this type are not supported +> '*type*': `const`/`volatile` qualifiers on this type are not supported -The [const](../../cpp/const-cpp.md)and [volatile](../../cpp/volatile-cpp.md)qualifiers will not work with variables of common language runtime types. +The [`const`](../../cpp/const-cpp.md) and [`volatile`](../../cpp/volatile-cpp.md) qualifiers don't work with common language runtime typed variables. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4435.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4435.md index c60d859b888..8b30d0111b7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4435.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4435.md @@ -1,18 +1,17 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4435" -title: "Compiler Warning (level 4) C4435" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4, off) C4435" +title: "Compiler Warning (level 4, off) C4435" +ms.date: "1/22/2025" f1_keywords: ["C4435"] helpviewer_keywords: ["C4435"] -ms.assetid: a04524af-2b71-4ff9-9729-d9d1d1904ed7 --- -# Compiler Warning (level 4) C4435 +# Compiler warning (level 4, off) C4435 -'class1' : Object layout under /vd2 will change due to virtual base 'class2' +> '*derived_class*': Object layout under `/vd2` will change due to virtual base '*base_class*' -This warning is off by default. See [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md) for more information. +This warning is off by default. For more information, see [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). -Under the default compile option of /vd1, the derived class does not have a `vtordisp` field for the indicated virtual base. If /vd2 or `#pragma vtordisp(2)` is in effect, a `vtordisp` field will be present, changing the object layout. This can lead to binary compatibility problems if interacting modules are compiled with different `vtordisp` settings. +Under the default compile option of `/vd1`, the derived class doesn't have a `vtordisp` field for the indicated virtual base. If `/vd2` or `#pragma vtordisp(2)` is in effect, a `vtordisp` field is present, changing the object layout. This difference can lead to binary compatibility problems if interacting modules are compiled with different `vtordisp` settings. ## Example @@ -34,5 +33,5 @@ class B : public virtual A // C4435 ## See also -[vtordisp](../../preprocessor/vtordisp.md)
-[/vd (Disable Construction Displacements)](../../build/reference/vd-disable-construction-displacements.md) +[`vtordisp`](../../preprocessor/vtordisp.md)\ +[`/vd` (Disable Construction Displacements)](../../build/reference/vd-disable-construction-displacements.md) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4437.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4437.md index a2207a1ad8e..6a5a36565b7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4437.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4437.md @@ -1,32 +1,28 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4437" -title: "Compiler Warning (level 4) C4437" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1 and level 4, off) C4437" +title: "Compiler warning (level 1 and level 4, off) C4437" +ms.date: "1/22/2025" f1_keywords: ["C4437"] helpviewer_keywords: ["C4437"] -ms.assetid: dc07e350-20eb-474c-a7ad-f841ae7ec339 --- -# Compiler Warning (level 4) C4437 +# Compiler warning (level 1 and level 4, off) C4437 -dynamic_cast from virtual base 'class1' to 'class2' could fail in some contexts Compile with /vd2 or define 'class2' with #pragma vtordisp(2) in effect +> `dynamic_cast` from virtual base '*base_class*' to '*derived_class*' could fail in some contexts -This warning is off by default. See [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md) for more information. +This warning is off by default. For more information, see [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). -The compiler has encountered a **`dynamic_cast`** operation with the following characteristics. +A `dynamic_cast` operation is used when: - The cast is from a base class pointer to a derived class pointer. - - The derived class virtually inherits the base class. +- The derived class doesn't have a `vtordisp` field for the virtual base. +- The cast is found in a constructor or destructor of the derived class, or a class that inherits from the derived class. Otherwise, compiler warning [C4436](compiler-warning-level-1-c4436.md) is emitted issued of C4435. -- The derived class does not have a `vtordisp` field for the virtual base. - -- The cast is not found in a constructor or destructor of the derived class, or some class which further inherits from the derived class (otherwise, compiler warning C4436 will be issued). - -The warning indicates that the **`dynamic_cast`** might not perform correctly if it is operating on a partially-constructed object. This situation occurs when the enclosing function is called from a constructor or destructor of a class that inherits the derived class that is named in the warning. If the derived class that is named in the warning is never further derived, or the enclosing function is not called during object construction or destruction, the warning can be ignored. +This warning indicates that the `dynamic_cast` might not perform correctly when applied to a partially constructed object. This situation occurs when the enclosing function is called from a constructor or destructor of a class that inherits from *derived_class*. You can ignore the error if *derived_class* is never further derived, or the enclosing function isn't called during object construction or destruction. ## Example -The following sample generates C4437 and demonstrates the code generation issue that arises from the missing `vtordisp` field. +The following sample generates C4437 and demonstrates the code generation issue that arises from the missing `vtordisp` field: ```cpp // C4437.cpp @@ -76,6 +72,6 @@ int main() ## See also -[dynamic_cast Operator](../../cpp/dynamic-cast-operator.md)
-[vtordisp](../../preprocessor/vtordisp.md)
-[Compiler Warning (level 1) C4436](../../error-messages/compiler-warnings/compiler-warning-level-1-c4436.md) +[`dynamic_cast` Operator](../../cpp/dynamic-cast-operator.md)\ +[`vtordisp`](../../preprocessor/vtordisp.md)\ +[Compiler Warning (level 1) C4436](compiler-warning-level-1-c4436.md) diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md index 01f55ec3569..58e16a4db16 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md @@ -1,7 +1,7 @@ --- title: "Microsoft C/C++ compiler (MSVC) warnings C4400 through C4599" description: "Table of Microsoft C/C++ compiler (MSVC) warnings C4400 through C4599" -ms.date: "04/21/2019" +ms.date: "1/22/2025" f1_keywords: ["C4413", "C4415", "C4416", "C4417", "C4418", "C4419", "C4421", "C4423", "C4424", "C4425", "C4426", "C4427", "C4438", "C4442", "C4443", "C4444", "C4446", "C4447", "C4448", "C4449", "C4450", "C4451", "C4452", "C4453", "C4454", "C4455", "C4466", "C4467", "C4468", "C4472", "C4474", "C4475", "C4476", "C4478", "C4480", "C4482", "C4483", "C4491", "C4492", "C4493", "C4494", "C4495", "C4496", "C4497", "C4498", "C4499", "C4509", "C4519", "C4531", "C4542", "C4562", "C4568", "C4569", "C4573", "C4574", "C4575", "C4576", "C4578", "C4582", "C4583", "C4585", "C4586", "C4587", "C4588", "C4589", "C4591", "C4592", "C4593", "C4594", "C4595", "C4598", "C4599"] helpviewer_keywords: ["C4413", "C4415", "C4416", "C4417", "C4418", "C4419", "C4421", "C4423", "C4424", "C4425", "C4426", "C4427", "C4438", "C4442", "C4443", "C4444", "C4446", "C4447", "C4448", "C4449", "C4450", "C4451", "C4452", "C4453", "C4454", "C4455", "C4466", "C4467", "C4468", "C4472", "C4474", "C4475", "C4476", "C4478", "C4480", "C4482", "C4483", "C4491", "C4492", "C4493", "C4494", "C4495", "C4496", "C4497", "C4498", "C4499", "C4509", "C4519", "C4531", "C4542", "C4562", "C4568", "C4569", "C4573", "C4574", "C4575", "C4576", "C4578", "C4582", "C4583", "C4585", "C4586", "C4587", "C4588", "C4589", "C4591", "C4592", "C4593", "C4594", "C4595", "C4598", "C4599"] --- @@ -15,186 +15,185 @@ The articles in this section describe Microsoft C/C++ compiler warning messages |Warning|Message| |-------------|-------------| -|[Compiler warning (level 1) C4600](compiler-warning-level-1-c4600.md)|#pragma '*macro name*': expected a valid non-empty string| -|[Compiler warning (level 4) C4400](../../error-messages/compiler-warnings/compiler-warning-level-4-c4400.md)|'*type*': const/volatile qualifiers on this type are not supported| -|[Compiler warning (level 1) C4401](../../error-messages/compiler-warnings/compiler-warning-level-1-c4401.md)|'*bitfield*': member is bit field| -|[Compiler warning (level 1) C4402](../../error-messages/compiler-warnings/compiler-warning-level-1-c4402.md)|must use PTR operator| -|[Compiler warning (level 1) C4403](../../error-messages/compiler-warnings/compiler-warning-level-1-c4403.md)|illegal PTR operator| -|[Compiler warning (level 3) C4404](../../error-messages/compiler-warnings/compiler-warning-level-3-c4404.md)|period on directive ignored| -|[Compiler warning (level 1) C4405](../../error-messages/compiler-warnings/compiler-warning-level-1-c4405.md)|'*identifier*': identifier is reserved word| -|[Compiler warning (level 1) C4406](../../error-messages/compiler-warnings/compiler-warning-level-1-c4406.md)|operand on directive ignored| -|[Compiler warning (level 1) C4407](../../error-messages/compiler-warnings/compiler-warning-level-1-c4407.md)|cast between different pointer to member representations, compiler may generate incorrect code| -|[Compiler warning (level 4) C4408](../../error-messages/compiler-warnings/compiler-warning-level-4-c4408.md)|anonymous 'struct\|union' did not declare any data members| -|[Compiler warning (level 1) C4409](../../error-messages/compiler-warnings/compiler-warning-level-1-c4409.md)|illegal instruction size| -|[Compiler warning (level 1) C4410](../../error-messages/compiler-warnings/compiler-warning-level-1-c4410.md)|illegal size for operand| -|[Compiler warning (level 1) C4411](../../error-messages/compiler-warnings/compiler-warning-level-1-c4411.md)|'*identifier*': symbol resolves to displacement register| -|[Compiler warning (level 2) C4412](../../error-messages/compiler-warnings/compiler-warning-level-2-c4412.md)|'*function*': function signature contains type '*type*'; C++ objects are unsafe to pass between pure code and mixed or native.| -|Compiler warning C4413|'classname::member': reference member is initialized to a temporary that doesn't persist after the constructor exits| -|[Compiler warning (level 3) C4414](../../error-messages/compiler-warnings/compiler-warning-level-3-c4414.md)|'*function*': short jump to function converted to near| -|Compiler warning (level 1) C4415|duplicate __declspec(code_seg('*name*'))| -|Compiler warning (level 1) C4416|__declspec(code_seg(...)) contains empty string: ignored| -|Compiler warning (level 1) C4417|an explicit template instantiation cannot have __declspec(code_seg(...)): ignored| -|Compiler warning (level 1) C4418|__declspec(code_seg(...)) ignored on an enum| -|Compiler warning (level 3) C4419|'*symbol*' has no effect when applied to private ref class '*class*'.| -|[Compiler warning (level 1) C4420](../../error-messages/compiler-warnings/compiler-warning-level-1-c4420.md)|'*checked_operator*': operator not available, using '*operator*' instead; run-time checking may be compromised| +|[Compiler warning (level 4, Error) C4400](compiler-warning-level-4-c4400.md)|'*type*': `const`/`volatile` qualifiers on this type are not supported| +|[Compiler warning (level 1) C4401](compiler-warning-level-1-c4401.md)|'*bitfield*': member is bit field| +|[Compiler warning (level 1) C4402](compiler-warning-level-1-c4402.md)|must use `PTR` operator| +|[Compiler warning (level 1) C4403](compiler-warning-level-1-c4403.md)|illegal `PTR` operator| +|[Compiler warning (level 3) C4404](compiler-warning-level-3-c4404.md)|period on directive ignored| +|[Compiler warning (level 1) C4405](compiler-warning-level-1-c4405.md)|'*identifier*': identifier is reserved word| +|[Compiler warning (level 1) C4406](compiler-warning-level-1-c4406.md)|operand on directive ignored| +|[Compiler warning (level 1) C4407](compiler-warning-level-1-c4407.md)|cast between different pointer to member representations, compiler may generate incorrect code| +|[Compiler warning (level 4) C4408](compiler-warning-level-4-c4408.md)|anonymous *struct/union* did not declare any data members| +|[Compiler warning (level 1) C4409](compiler-warning-level-1-c4409.md)|illegal instruction size| +|[Compiler warning (level 1) C4410](compiler-warning-level-1-c4410.md)|illegal size for operand| +|[Compiler warning (level 1) C4411](compiler-warning-level-1-c4411.md)|'*identifier*': symbol resolves to displacement register| +|[Compiler warning (level 2, off) C4412](compiler-warning-level-2-c4412.md)|'*function*': function signature contains type '*type*'; C++ objects are unsafe to pass between pure code and mixed or native.| +|Compiler warning (no longer emitted) C4413|'`classname::member`': reference member is initialized to a temporary that doesn't persist after the constructor exits| +|[Compiler warning (level 3) C4414](compiler-warning-level-3-c4414.md)|'*function*': short jump to function converted to near| +|Compiler warning (level 1) C4415|duplicate `__declspec(code_seg(`'*name*'`))`| +|Compiler warning (level 1) C4416|`__declspec(code_seg(...))` contains empty string: ignored| +|Compiler warning (level 1) C4417|an explicit template instantiation can't have `__declspec(code_seg(...))`: ignored| +|Compiler warning (level 1) C4418|`__declspec(code_seg(...))` ignored on an `enum`| +|Compiler warning (level 3) C4419|'*symbol*' has no effect when applied to `private ref class` '*class*'.| +|[Compiler warning (level 1) C4420](compiler-warning-level-1-c4420.md)|'*checked_operator*': operator not available, using '*operator*' instead; run-time checking may be compromised| |Compiler warning (level 3) C4421|'*parameter*': a reference parameter on a resumable function is potentially unsafe| -|Compiler warning (level 3) C4423|'std::bad_alloc': will be caught by class ('*type*') on line *number*| -|Compiler warning (level 3) C4424|catch for '*type1*' preceded by '*type2*' on line *number*; unpredictable behavior may result if 'std::bad_alloc' is thrown| -|Compiler warning (level 1) C4425|A SAL annotation cannot be applied to '...'| -|Compiler warning (level 1) C4426|optimization flags changed after including header, may be due to #pragma optimize()| +|Compiler warning (level 3) C4423|'`std::bad_alloc`': will be caught by class ('*type*') on line *number*| +|Compiler warning (level 3) C4424|catch for '*type1*' preceded by '*type2*' on line *number*; unpredictable behavior may result if '`std::bad_alloc`' is thrown| +|Compiler warning (level 1) C4425|A SAL annotation can't be applied to '`...`'| +|Compiler warning (level 1, off) C4426|optimization flags changed after including header, may be due to `#pragma optimize()`| |Compiler warning (level 1) C4427|'*operator*': overflow in constant division, undefined behavior| -|[Compiler warning (level 4) C4429](../../error-messages/compiler-warnings/compiler-warning-level-4-c4429.md)|possible incomplete or improperly formed universal-character-name| -|[Compiler warning (Error) C4430](../../error-messages/compiler-warnings/compiler-warning-c4430.md)|missing type specifier - int assumed. Note: C++ does not support default-int| -|[Compiler warning (level 4) C4431](../../error-messages/compiler-warnings/compiler-warning-level-4-c4431.md)|missing type specifier - int assumed. Note: C no longer supports default-int| -|[Compiler warning (level 4) C4434](../../error-messages/compiler-warnings/compiler-warning-level-4-c4434.md)|a static constructor must have private accessibility; changing to private access| -|[Compiler warning (level 4) C4435](../../error-messages/compiler-warnings/compiler-warning-level-4-c4435.md)|'*derived_class*': Object layout under /vd2 will change due to virtual base '*base_class*'| -|[Compiler warning (level 1) C4436](../../error-messages/compiler-warnings/compiler-warning-level-1-c4436.md)|dynamic\_cast from virtual base '*base_class*' to '*derived_class*' in constructor or destructor could fail with partially-constructed object| -|[Compiler warning (level 4) C4437](../../error-messages/compiler-warnings/compiler-warning-level-4-c4437.md)|dynamic\_cast from virtual base '*base_class*' to '*derived_class*' could fail in some contexts| -|Compiler warning C4438|'*function*': cannot be called safely in /await:clrcompat mode. If '*function*' calls into the CLR it may result in CLR head corruption| -|[Compiler warning (Error) C4439](../../error-messages/compiler-warnings/compiler-warning-c4439.md)|'*function*': function definition with a managed type in the signature must have a __clrcall calling convention| -|[Compiler warning (level 1) C4440](../../error-messages/compiler-warnings/compiler-warning-level-1-c4440.md)|calling convention redefinition from '*calling_convention1*' to '*calling_convenction2*' ignored| -|[Compiler warning (level 1) C4441](../../error-messages/compiler-warnings/compiler-warning-level-1-c4441.md)|calling convention of '*calling_convention1*' ignored; '*calling_convention2*' used instead| -|Compiler warning (level 1) C4442|embedded null terminator in __annotation argument. Value will be truncated.| -|Compiler warning (level 1) C4443|expected pragma parameter to be '0', '1', or '2'| -|Compiler warning (level 3) C4444|'*identifier*': top level '__unaligned' is not implemented in this context| -|[Compiler warning (level 1) C4445](../../error-messages/compiler-warnings/compiler-warning-level-1-c4445.md)|'*function*': in a 'WinRT\|managed' type a virtual method cannot be private| -|Compiler warning (level 1) C4446|'*type*': cannot map member '*name1*' into this type, due to conflict with the type name. The method was renamed to '*name2*'| -|Compiler warning (level 1) C4447|'main' signature found without threading model. Consider using 'int main(Platform::Array\^ args)'.| -|Compiler warning C4448|'*type*1' does not have a default interface specified in metadata. Picking: '*type2*', which may fail at runtime.| -|Compiler warning C4449|'*type*' an unsealed type should be marked as '[WebHostHidden]'| -|Compiler warning C4450|'*type1*' should be marked as '[WebHostHidden]' because it derives from '*type2*'| -|Compiler warning (level 4) C4451|'classname1::member': Usage of ref class 'classname2::member' inside this context can lead to invalid marshaling of object across contexts| -|Compiler warning (level 1) C4452|'*identifier*': public type cannot be at global scope. It must be in a namespace that is a child of the name of the output .winmd file.| -|Compiler warning (level 1) C4453|'*type*': A '[WebHostHidden]' type should not be used on the published surface of a public type that is not '[WebHostHidden]'| -|Compiler warning (level 1) C4454|'*function*' is overloaded by more than the number of input parameters without having [DefaultOverload] specified. Picking '*declaration*' as the default overload| +|[Compiler warning (level 4) C4429](compiler-warning-level-4-c4429.md)|possible incomplete or improperly formed universal-character-name| +|[Compiler warning (level 1, Error) C4430](compiler-warning-c4430.md)|missing type specifier - int assumed. Note: C++ doesn't support default-int| +|[Compiler warning (level 4) C4431](compiler-warning-level-4-c4431.md)|missing type specifier - int assumed. Note: C no longer supports default-int| +|[Compiler warning (level 4) C4434](compiler-warning-level-4-c4434.md)|a static constructor must have private accessibility; changing to private access| +|[Compiler warning (level 4, off) C4435](compiler-warning-level-4-c4435.md)|'*derived_class*': Object layout under `/vd2` will change due to virtual base '*base_class*'| +|[Compiler warning (level 1 and level 4) C4436](compiler-warning-level-1-c4436.md)|`dynamic_cast` from virtual base '*base_class*' to '*derived_class*' in constructor or destructor could fail with partially-constructed object| +|[Compiler warning (level 1 and level 4, off) C4437](compiler-warning-level-4-c4437.md)|`dynamic_cast` from virtual base '*base_class*' to '*derived_class*' could fail in some contexts| +|Compiler warning C4438|'*function*': can't be called safely in `/await:clrcompat` mode. If '*function*' calls into the CLR it may result in CLR head corruption| +|[Compiler warning (level 1, Error) C4439](compiler-warning-c4439.md)|'*function*': function definition with a managed type in the signature must have a `__clrcall` calling convention| +|[Compiler warning (level 1) C4440](compiler-warning-level-1-c4440.md)|calling convention redefinition from '*calling_convention1*' to '*calling_convenction2*' ignored| +|[Compiler warning (level 1) C4441](compiler-warning-level-1-c4441.md)|calling convention of '*calling_convention1*' ignored; '*calling_convention2*' used instead| +|Compiler warning (level 1) C4442|embedded null terminator in `__annotation` argument. Value will be truncated.| +|Compiler warning (level 1) C4443|expected pragma parameter to be '`0`', '`1`', or '`2`'| +|Compiler warning (level 3, off) C4444|'*identifier*': top level '`__unaligned`' isn't implemented in this context| +|[Compiler warning (level 1) C4445](compiler-warning-level-1-c4445.md)|'*function*': in a *WinRT/managed* type a virtual method can't be private| +|Compiler warning (level 1) C4446|'*type*': can't map member '*name1*' into this type, due to conflict with the type name. The method was renamed to '*name2*'| +|Compiler warning (level 1) C4447|'`main`' signature found without threading model. Consider using '`int main(Platform::Array^ args)`'.| +|Compiler warning (level 1) C4448|'*type1*' doesn't have a default interface specified in metadata. Picking: '*type2*', which may fail at runtime.| +|Compiler warning C4449|'*type*' an unsealed type should be marked as '`[WebHostHidden]`'| +|Compiler warning C4450|'*type1*' should be marked as '`[WebHostHidden]`' because it derives from '*type2*'| +|Compiler warning (level 3 and level 4) C4451|'*classname1::member*': Usage of ref class '*classname2::member*' inside this context can lead to invalid marshaling of object across contexts| +|Compiler warning (level 1, Error) C4452|'*identifier*': public type can't be at global scope. It must be in a namespace that is a child of the name of the output `.winmd` file.| +|Compiler warning (level 1) C4453|'*type*': A '`[WebHostHidden]`' type should not be used on the published surface of a public type that isn't '`[WebHostHidden]`'| +|Compiler warning (level 1) C4454|'*function*' is overloaded by more than the number of input parameters without having `[DefaultOverload]` specified. Picking '*declaration*' as the default overload| |Compiler warning (level 1) C4455|'operator *operator*': literal suffix identifiers that do not start with an underscore are reserved| -|[Compiler warning (level 4) C4456](compiler-warning-level-4-c4456.md)|declaration of '*identifier*' hides previous local declaration| -|[Compiler warning (level 4) C4457](compiler-warning-level-4-c4457.md)|declaration of '*identifier*' hides function parameter| -|[Compiler warning (level 4) C4458](compiler-warning-level-4-c4458.md)|declaration of '*identifier*' hides class member| -|[Compiler warning (level 4) C4459](compiler-warning-level-4-c4459.md)|declaration of '*identifier*' hides global declaration| -|[Compiler warning (level 4) C4460](../../error-messages/compiler-warnings/compiler-warning-level-4-c4460.md)|'WinRT\|managed' operator '*operator*', has parameter passed by reference. 'WinRT\|managed' operator '*operator*' has different semantics from C++ operator '*cpp_operator*', did you intend to pass by value?| -|[Compiler warning (level 1) C4461](../../error-messages/compiler-warnings/compiler-warning-level-1-c4461.md)|'*classname*': this class has a finalizer '!*finalizer*' but no destructor '~*dtor*'| -|[Compiler warning (level 1, Error) C4462](../../error-messages/compiler-warnings/compiler-warning-level-1-c4462.md)|'*type*' : cannot determine the GUID of the type. Program may fail at runtime.| -|[Compiler warning (level 4) C4463](compiler-warning-level-4-c4463.md)|overflow; assigning '*value*' to bit-field that can only hold values from '*min_value*' to '*max_value*'| -|[Compiler warning (level 4) C4464](../../error-messages/compiler-warnings/compiler-warning-level-4-c4464.md)|relative include path contains '..'| +|[Compiler warning (level 1 and level 4) C4456](compiler-warning-level-4-c4456.md)|declaration of '*identifier*' hides previous local declaration| +|[Compiler warning (level 1 and level 4) C4457](compiler-warning-level-4-c4457.md)|declaration of '*identifier*' hides function parameter| +|[Compiler warning (level 1 and level 4) C4458](compiler-warning-level-4-c4458.md)|declaration of '*identifier*' hides class member| +|[Compiler warning (level 1 and level 4) C4459](compiler-warning-level-4-c4459.md)|declaration of '*identifier*' hides global declaration| +|[Compiler warning (level 4) C4460](compiler-warning-level-4-c4460.md)|*WinRT/managed* operator '*operator*', has parameter passed by reference. *WinRT/managed* operator '*operator*' has different semantics from C++ operator '*cpp_operator*', did you intend to pass by value?| +|[Compiler warning (level 1) C4461](compiler-warning-level-1-c4461.md)|'*classname*': this class has a finalizer '`!`*finalizer*' but no destructor '`~`*dtor*'| +|[Compiler warning (level 1, Error) C4462](compiler-warning-level-1-c4462.md)|'*type*' : can't determine the GUID of the type. Program may fail at runtime.| +|[Compiler warning (level 4) C4463](compiler-warning-level-4-c4463.md)|overflow; assigning *value* to bit-field that can only hold values from *min_value* to *max_value*| +|[Compiler warning (level 4, off) C4464](compiler-warning-level-4-c4464.md)|relative include path contains '`..`'| |Compiler warning C4466|Could not perform coroutine heap elision| |Compiler warning (level 1) C4467|Usage of ATL attributes is deprecated| -|Compiler warning (level 1) C4468|The [[fallthrough]] attribute must be followed by a `case` label or a `default` label| -|[Compiler warning (level 1) C4470](../../error-messages/compiler-warnings/compiler-warning-level-1-c4470.md)|floating-point control pragmas ignored under /clr| -|[Compiler warning (level 4) C4471](compiler-warning-level-4-c4471.md)|'*enumeration*': a forward declaration of an unscoped enumeration must have an underlying type (int assumed)| -|Compiler warning (level 1) C4472|'*identifier*' is a native enum: add an access specifier (private/public) to declare a 'WinRT\|managed' enum| +|Compiler warning (level 1) C4468|The `[[fallthrough]]` attribute must be followed by a `case` label or a `default` label| +|[Compiler warning (level 1) C4470](compiler-warning-level-1-c4470.md)|floating-point control pragmas ignored under `/clr`| +|[Compiler warning (level 4, off) C4471](compiler-warning-level-4-c4471.md)|'*enumeration*': a forward declaration of an unscoped enumeration must have an underlying type| +|Compiler warning (level 1) C4472|'*identifier*' is a native enum: add an access specifier (private/public) to declare a 'WinRT/managed' enum| |[Compiler warning (level 1) C4473](c4473.md)|'*function*' : not enough arguments passed for format string| |Compiler warning (level 3) C4474|'*function*' : too many arguments passed for format string| -|Compiler warning (level 3) C4475|'*function*' : length modifier '*modifier*' cannot be used with type field character '*character*' in format specifier| +|Compiler warning (level 3) C4475|'*function*' : length modifier '*modifier*' can't be used with type field character '*character*' in format specifier| |Compiler warning (level 3) C4476|'*function*' : unknown type field character '*character*' in format specifier| |[Compiler warning (level 1) C4477](c4477.md)|'*function*' : format string '*string*' requires an argument of type '*type*', but variadic argument *number* has type '*type*'| -|Compiler warning (level 1) C4478|'*function*' : positional and non-positional placeholders cannot be mixed in the same format string| -|Compiler warning (Error) C4480|nonstandard extension used: specifying underlying type for enum '*enumeration*'| -|[Compiler warning (level 4) C4481](../../error-messages/compiler-warnings/compiler-warning-level-4-c4481.md)|nonstandard extension used: override specifier '*keyword*'| -|Compiler warning C4482|nonstandard extension used: enum '*enumeration*' used in qualified name| +|Compiler warning (level 1) C4478|'*function*' : positional and non-positional placeholders can't be mixed in the same format string| +|Compiler warning (Error) C4480|nonstandard extension used: specifying underlying type for `enum` '*enumeration*'| +|[Compiler warning (level 4, Error) C4481](compiler-warning-level-4-c4481.md)|nonstandard extension used: override specifier '*keyword*'| +|Compiler warning C4482|nonstandard extension used: `enum` '*enumeration*' used in qualified name| |Compiler warning (level 1, Error) C4483|syntax error: expected C++ keyword| -|[Compiler warning (Error) C4484](../../error-messages/compiler-warnings/compiler-warning-c4484.md)|'*override_function*': matches base ref class method '*base_class_function*', but is not marked 'virtual', 'new' or 'override'; 'new' (and not 'virtual') is assumed| -|[Compiler warning (Error) C4485](../../error-messages/compiler-warnings/compiler-warning-c4485.md)|'*override_function*': matches base ref class method '*base_class_function*', but is not marked 'new' or 'override'; 'new' (and 'virtual') is assumed| -|[Compiler warning (level 1) C4486](../../error-messages/compiler-warnings/compiler-warning-level-1-c4486.md)|'*function*': a private virtual method of a ref class or value class should be marked 'sealed'| -|[Compiler warning (level 4) C4487](../../error-messages/compiler-warnings/compiler-warning-level-4-c4487.md)|'*derived_class_function*': matches inherited non-virtual method '*base_class_function*' but is not explicitly marked 'new'| -|[Compiler warning (level 1) C4488](../../error-messages/compiler-warnings/compiler-warning-level-1-c4488.md)|'*function*': requires '*keyword*' keyword to implement the interface method '*interface_method*'| -|[Compiler warning (level 1) C4489](../../error-messages/compiler-warnings/compiler-warning-level-1-c4489.md)|'*specifier*': not allowed on interface method '*method*'; override specifiers are only allowed on ref class and value class methods| -|[Compiler warning (level 1) C4490](../../error-messages/compiler-warnings/compiler-warning-level-1-c4490.md)|'override': incorrect use of override specifier; '*function*' does not match a base ref class method| +|[Compiler warning (level 1, Error) C4484](compiler-warning-c4484.md)|'*override_function*': matches base `ref class` method '*base_class_function*', but isn't marked '`virtual`', '`new`' or '`override`'; '`new`' (and not '`virtual`') is assumed| +|[Compiler warning (level 1, Error) C4485](compiler-warning-c4485.md)|'*override_function*': matches base `ref class` method '*base_class_function*', but isn't marked '`new`' or '`override`'; '`new`' (and '`virtual`') is assumed| +|[Compiler warning (level 1) C4486](compiler-warning-level-1-c4486.md)|'*function*': a private virtual method of a `ref class` or value class should be marked '`sealed`'| +|[Compiler warning (level 4) C4487](compiler-warning-level-4-c4487.md)|'*derived_class_function*': matches inherited non-virtual method '*base_class_function*' but isn't explicitly marked '`new`'| +|[Compiler warning (level 1) C4488](compiler-warning-level-1-c4488.md)|'*function*': requires '*keyword*' keyword to implement the interface method '*interface_method*'| +|[Compiler warning (level 1) C4489](compiler-warning-level-1-c4489.md)|'*specifier*': not allowed on interface method '*method*'; override specifiers are only allowed on ref class and value class methods| +|[Compiler warning (level 1) C4490](compiler-warning-level-1-c4490.md)|'*override*': incorrect use of override specifier; '*function*' doesn't match a base ref class method| |Compiler warning (level 1) C4491|'*name*': has an illegal IDL version format| -|Compiler warning (level 1, Error) C4492|'*function1*': matches base ref class method '*function2*', but is not marked 'override'| -|Compiler warning (level 3, Error) C4493|delete expression has no effect as the destructor of '*type*' does not have 'public' accessibility| -|Compiler warning (level 1) C4494|'*function*' : Ignoring __declspec(allocator) because the function return type is not a pointer or reference| -|Compiler warning C4495|nonstandard extension '__super' used: replace with explicit base class name| -|Compiler warning C4496|nonstandard extension 'for each' used: replace with ranged-for statement| -|Compiler warning C4497|nonstandard extension 'sealed' used: replace with 'final'| -|Compiler warning C4498|nonstandard extension used: '*extension*'| -|Compiler warning (level 4) C4499|'*function*' : an explicit specialization cannot have a storage class (ignored)"| -|[Compiler warning (level 1) C4502](../../error-messages/compiler-warnings/compiler-warning-level-1-c4502.md)|'*linkage specification*' requires use of keyword 'extern' and must precede all other specifiers| -|[Compiler warning (level 1) C4503](../../error-messages/compiler-warnings/compiler-warning-level-1-c4503.md)|'*identifier*': decorated name length exceeded, name was truncated| -|[Compiler warning (level 4) C4505](../../error-messages/compiler-warnings/compiler-warning-level-4-c4505.md)|'*function*': unreferenced local function has been removed| -|[Compiler warning (level 1) C4506](../../error-messages/compiler-warnings/compiler-warning-level-1-c4506.md)|no definition for inline function '*function*'| -|[Compiler warning (level 1) C4508](../../error-messages/compiler-warnings/compiler-warning-level-1-c4508.md)|'*function*': function should return a value; 'void' return type assumed| +|Compiler warning (level 1, Error) C4492|'*function1*': matches base `ref class` method '*function2*', but isn't marked '`override`'| +|Compiler warning (level 3, Error) C4493|delete expression has no effect as the destructor of '*type*' doesn't have '`public`' accessibility| +|Compiler warning (level 1) C4494|'*function*' : Ignoring `__declspec(allocator)` because the function return type isn't a pointer or reference| +|Compiler warning (level 4, off) C4495|nonstandard extension '`__super`' used: replace with explicit base class name| +|Compiler warning (level 4, Error, off) C4496|nonstandard extension '`for each`' used: replace with ranged-for statement| +|Compiler warning (level 4, off) C4497|nonstandard extension '`sealed`' used: replace with '`final`'| +|Compiler warning (level 4, off) C4498|nonstandard extension used: '*extension*'| +|Compiler warning (level 4) C4499|'*function*': an explicit specialization can't have a storage class (ignored)| +|[Compiler warning (level 1) C4502](compiler-warning-level-1-c4502.md)|'linkage specification' requires use of keyword '`extern`' and must precede all other specifiers| +|[Compiler warning (level 1) C4503](compiler-warning-level-1-c4503.md)|'*identifier*': decorated name length exceeded, name was truncated| +|[Compiler warning (level 4) C4505](compiler-warning-level-4-c4505.md)|'*function*': unreferenced function with internal linkage has been removed| +|[Compiler warning (level 1) C4506](compiler-warning-level-1-c4506.md)|no definition for inline function '*function*'| +|[Compiler warning (level 1) C4508](compiler-warning-level-1-c4508.md)|'*function*': function should return a value; '`void`' return type assumed| |Compiler warning C4509|nonstandard extension used: '*function*' uses SEH and '*object*' has destructor| -|[Compiler warning (level 4) C4510](../../error-messages/compiler-warnings/compiler-warning-level-4-c4510.md)|'*class*': default constructor was implicitly defined as deleted| -|[Compiler warning (level 3) C4511](../../error-messages/compiler-warnings/compiler-warning-level-3-c4511.md)|'*class*': copy constructor was implicitly defined as deleted| -|[Compiler warning (level 4) C4512](../../error-messages/compiler-warnings/compiler-warning-level-4-c4512.md)|'*class*': assignment operator was implicitly defined as deleted| -|[Compiler warning (level 4) C4513](../../error-messages/compiler-warnings/compiler-warning-level-4-c4513.md)|'*class*': destructor was implicitly defined as deleted| -|[Compiler warning (level 4) C4514](../../error-messages/compiler-warnings/compiler-warning-level-4-c4514.md)|'*function*': unreferenced inline function has been removed| -|[Compiler warning (level 4) C4515](../../error-messages/compiler-warnings/compiler-warning-level-4-c4515.md)|'*namespace*': namespace uses itself| -|[Compiler warning (level 4) C4516](../../error-messages/compiler-warnings/compiler-warning-level-4-c4516.md)|'class::symbol': access-declarations are deprecated; member using-declarations provide a better alternative| -|[Compiler warning (level 4) C4517](../../error-messages/compiler-warnings/compiler-warning-level-4-c4517.md)|access-declarations are deprecated; member using-declarations provide a better alternative| -|[Compiler warning (level 1) C4518](../../error-messages/compiler-warnings/compiler-warning-level-1-c4518.md)|'*specifier*': storage-class or type specifier(s) unexpected here; ignored| -|Compiler warning (Error) C4519|default template arguments are only allowed on a class template| -|[Compiler warning (level 3) C4521](../../error-messages/compiler-warnings/compiler-warning-level-3-c4521.md)|'*class*': multiple copy constructors specified| -|[Compiler warning (level 3) C4522](../../error-messages/compiler-warnings/compiler-warning-level-3-c4522.md)|'*class*': multiple assignment operators specified| -|[Compiler warning (level 3) C4523](../../error-messages/compiler-warnings/compiler-warning-level-3-c4523.md)|'*class*': multiple destructors specified| -|[Compiler warning (level 1) C4526](../../error-messages/compiler-warnings/compiler-warning-level-1-c4526.md)|'*function*': static member function cannot override virtual function '*virtual function*' override ignored, virtual function will be hidden| -|[Compiler warning (level 1) C4530](../../error-messages/compiler-warnings/compiler-warning-level-1-c4530.md)|C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc| +|[Compiler warning (level 4) C4510](compiler-warning-level-4-c4510.md)|'*class*': default constructor was implicitly defined as deleted| +|[Compiler warning (level 4) C4511](compiler-warning-level-3-c4511.md)|'*class*': copy constructor was implicitly defined as deleted| +|[Compiler warning (level 4) C4512](compiler-warning-level-4-c4512.md)|'*class*': assignment operator was implicitly defined as deleted| +|[Compiler warning (level 4) C4513](compiler-warning-level-4-c4513.md)|'*class*': destructor was implicitly defined as deleted| +|[Compiler warning (level 4, off) C4514](compiler-warning-level-4-c4514.md)|'*function*': unreferenced inline function has been removed| +|[Compiler warning (level 4) C4515](compiler-warning-level-4-c4515.md)|'*namespace*': namespace uses itself| +|[Compiler warning (level 4) C4516](compiler-warning-level-4-c4516.md)|'*class*::*symbol*': access-declarations are deprecated; member using-declarations provide a better alternative| +|[Compiler warning (level 4) C4517](compiler-warning-level-4-c4517.md)|access-declarations are deprecated; member using-declarations provide a better alternative| +|[Compiler warning (level 1) C4518](compiler-warning-level-1-c4518.md)|'*specifier*': storage-class or type specifier(s) unexpected here; ignored| +|Compiler warning (level1, Error, no longer emitted) C4519|default template arguments are only allowed on a class template| +|[Compiler warning (level 3) C4521](compiler-warning-level-3-c4521.md)|'*class*': multiple copy constructors specified| +|[Compiler warning (level 3) C4522](compiler-warning-level-3-c4522.md)|'*class*': multiple assignment operators specified| +|[Compiler warning (level 3) C4523](compiler-warning-level-3-c4523.md)|'*class*': multiple destructors specified| +|[Compiler warning (level 1) C4526](compiler-warning-level-1-c4526.md)|'*function*': static member function can't override virtual function '*virtual function*'
override ignored, virtual function will be hidden| +|[Compiler warning (level 1) C4530](compiler-warning-level-1-c4530.md)|C++ exception handler used, but unwind semantics are not enabled. Specify `/EHsc`| |Compiler warning (level 1) C4531|C++ exception handling not available on Windows CE. Use Structured Exception Handling| -|[Compiler warning (level 1) C4532](../../error-messages/compiler-warnings/compiler-warning-level-1-c4532.md)|'continue': jump out of '__finally/finally' block has undefined behavior during termination handling| -|[Compiler warning (level 1) C4533](../../error-messages/compiler-warnings/compiler-warning-level-1-c4533.md)|initialization of '*variable*' is skipped by '*goto label*'| -|[Compiler warning (level 3) C4534](../../error-messages/compiler-warnings/compiler-warning-level-3-c4534.md)|'*constructor*' will not be a default constructor for 'class/struct' '*identifier*' due to the default argument| -|[Compiler warning (level 3) C4535](../../error-messages/compiler-warnings/compiler-warning-level-3-c4535.md)|calling _set_se_translator() requires /EHa| -|[Compiler warning (level 4) C4536](../../error-messages/compiler-warnings/compiler-warning-level-4-c4536.md)|'*typename*': type-name exceeds meta-data limit of '*character_limit*' characters| -|[Compiler warning (level 1) C4537](../../error-messages/compiler-warnings/compiler-warning-level-1-c4537.md)|'*object*': '.' applied to non-UDT type| -|[Compiler warning (level 3) C4538](../../error-messages/compiler-warnings/compiler-warning-level-3-c4538.md)|'*type*': const/volatile qualifiers on this type are not supported| -|[Compiler warning (level 1) C4540](../../error-messages/compiler-warnings/compiler-warning-level-1-c4540.md)|dynamic_cast used to convert to inaccessible or ambiguous base; run-time test will fail ('*type1*' to '*type2*')| -|[Compiler warning (level 1) C4541](../../error-messages/compiler-warnings/compiler-warning-level-1-c4541.md)|'*identifier*' used on polymorphic type '*type*' with /GR-; unpredictable behavior may result| -|Compiler warning (level 1) C4542|Skipping generation of merged injected text file, cannot write *filetype* file: '*issue*': *message*| -|[Compiler warning (level 3) C4543](../../error-messages/compiler-warnings/compiler-warning-level-3-c4543.md)|Injected text suppressed by attribute 'no\_injected_text'| -|[Compiler warning (level 1) C4544](../../error-messages/compiler-warnings/compiler-warning-level-1-c4544.md)|'*declaration*': default template argument ignored on this template declaration| -|[Compiler warning (level 1) C4545](../../error-messages/compiler-warnings/compiler-warning-level-1-c4545.md)|expression before comma evaluates to a function which is missing an argument list| -|[Compiler warning (level 1) C4546](../../error-messages/compiler-warnings/compiler-warning-level-1-c4546.md)|function call before comma missing argument list| -|[Compiler warning (level 1) C4547](../../error-messages/compiler-warnings/compiler-warning-level-1-c4547.md)|'*operator*': operator before comma has no effect; expected operator with side-effect| -|[Compiler warning (level 1) C4548](../../error-messages/compiler-warnings/compiler-warning-level-1-c4548.md)|expression before comma has no effect; expected expression with side-effect| -|[Compiler warning (level 1) C4549](../../error-messages/compiler-warnings/compiler-warning-level-1-c4549.md)|'*operator*': operator before comma has no effect; did you intend '*operator*'?| -|[Compiler warning (level 1) C4550](../../error-messages/compiler-warnings/compiler-warning-level-1-c4550.md)|expression evaluates to a function which is missing an argument list| -|[Compiler warning (level 1) C4551](../../error-messages/compiler-warnings/compiler-warning-level-1-c4551.md)|function call missing argument list| -|[Compiler warning (level 1) C4552](../../error-messages/compiler-warnings/compiler-warning-level-1-c4552.md)|'*operator*': operator has no effect; expected operator with side-effect| -|[Compiler warning (level 1) C4553](../../error-messages/compiler-warnings/compiler-warning-level-1-c4553.md)|'*operator*': operator has no effect; did you intend 'operator'?| -|[Compiler warning (level 3) C4554](../../error-messages/compiler-warnings/compiler-warning-level-3-c4554.md) C4554|'*operator*': check operator precedence for possible error; use parentheses to clarify precedence| -|[Compiler warning (level 1) C4555](../../error-messages/compiler-warnings/compiler-warning-level-1-c4555.md)|expression has no effect; expected expression with side-effect| -|[Compiler warning (level 1) C4556](../../error-messages/compiler-warnings/compiler-warning-level-1-c4556.md)|value of intrinsic immediate argument '*value*' is out of range '*lower_bound* - *upper_bound*'| -|[Compiler warning (level 3) C4557](../../error-messages/compiler-warnings/compiler-warning-level-3-c4557.md)|'__assume' contains effect '*effect*'| -|[Compiler warning (level 1) C4558](../../error-messages/compiler-warnings/compiler-warning-level-1-c4558.md)|value of operand '*value*' is out of range '*lower_bound* - *upper_bound*'| -|[Compiler warning (level 4) C4559](../../error-messages/compiler-warnings/compiler-warning-level-4-c4559.md)|'*function*': redefinition; the function gains __declspec(modifier)| -|[Compiler warning (level 1) C4561](../../error-messages/compiler-warnings/compiler-warning-level-1-c4561.md)|'__fastcall' incompatible with the '/clr' option: converting to '__stdcall'| -|Compiler warning (level 4) C4562|fully prototyped functions are required with the '/clr' option: converting '()' to '(void)'| -|[Compiler warning (level 4) C4564](../../error-messages/compiler-warnings/compiler-warning-level-4-c4564.md)|method '*method*' of 'class' '*classname*' defines unsupported default parameter '*parameter*'| -|[Compiler warning (level 4) C4565](../../error-messages/compiler-warnings/compiler-warning-level-4-c4565.md)|'*function*': redefinition; the symbol was previously declared with __declspec(modifier)| -|[Compiler warning (level 1) C4566](../../error-messages/compiler-warnings/compiler-warning-level-1-c4566.md)|character represented by universal-character-name '*char*' cannot be represented in the current code page (*number*)| +|[Compiler warning (level 1) C4532](compiler-warning-level-1-c4532.md)|'*continue*': jump out of *__finally/finally* block has undefined behavior during termination handling| +|[Compiler warning (level 1) C4533](compiler-warning-level-1-c4533.md)|initialization of '*variable*' is skipped by '`goto` *label*'| +|[Compiler warning (level 3) C4534](compiler-warning-level-3-c4534.md)|'*constructor*' will not be a default constructor for *class/struct* '*identifier*' due to the default argument| +|[Compiler warning (level 3) C4535](compiler-warning-level-3-c4535.md)|calling `_set_se_translator()` requires `/EHa`| +|[Compiler warning (level 4, off) C4536](compiler-warning-level-4-c4536.md)|'*typename*': type-name exceeds meta-data limit of '*character_limit*' characters| +|[Compiler warning (level 1) C4537](compiler-warning-level-1-c4537.md)|'*object*': '`.`' applied to non-UDT type| +|[Compiler warning (level 3) C4538](compiler-warning-level-3-c4538.md)|'*type*': `const`/`volatile` qualifiers on this type are not supported| +|[Compiler warning (level 1) C4540](compiler-warning-level-1-c4540.md)|`dynamic_cast` used to convert to inaccessible or ambiguous base; run-time test will fail ('*type1*' to '*type2*')| +|[Compiler warning (level 1) C4541](compiler-warning-level-1-c4541.md)|'*identifier*' used on polymorphic type '*type*' with `/GR-`; unpredictable behavior may result| +|Compiler warning (level 1) C4542|Skipping generation of merged injected text file, can't write *filetype* file: '*issue*': *message*| +|[Compiler warning (level 3) C4543](compiler-warning-level-3-c4543.md)|Injected text suppressed by attribute '`no_injected_text`'| +|[Compiler warning (level 1) C4544](compiler-warning-level-1-c4544.md)|the default template argument for '*declaration*' is ignored on this template declaration| +|[Compiler warning (level 1, off) C4545](compiler-warning-level-1-c4545.md)|expression before comma evaluates to a function which is missing an argument list| +|[Compiler warning (level 1, off) C4546](compiler-warning-level-1-c4546.md)|function call before comma missing argument list| +|[Compiler warning (level 1, off) C4547](compiler-warning-level-1-c4547.md)|'*operator*': operator before comma has no effect; expected operator with side-effect| +|[Compiler warning (level 1, off) C4548](compiler-warning-level-1-c4548.md)|expression before comma has no effect; expected expression with side-effect| +|[Compiler warning (level 1, off) C4549](compiler-warning-level-1-c4549.md)|'*operator*': operator before comma has no effect; did you intend '*operator*'?| +|[Compiler warning (level 1) C4550](compiler-warning-level-1-c4550.md)|expression evaluates to a function which is missing an argument list| +|[Compiler warning (level 1) C4551](compiler-warning-level-1-c4551.md)|function call missing argument list| +|[Compiler warning (level 1) C4552](compiler-warning-level-1-c4552.md)|'*operator*': result of expression not used| +|[Compiler warning (level 1) C4553](compiler-warning-level-1-c4553.md)|'*operator*': result of expression not used; did you intend '*operator*'?| +|[Compiler warning (level 3) C4554](compiler-warning-level-3-c4554.md) C4554|'*operator*': check operator precedence for possible error; use parentheses to clarify precedence| +|[Compiler warning (level 1, off) C4555](compiler-warning-level-1-c4555.md)|result of expression not used| +|[Compiler warning (level 1) C4556](compiler-warning-level-1-c4556.md)|value of intrinsic immediate argument '*value*' is out of range '*lower_bound* - *upper_bound*'| +|[Compiler warning (level 3, off) C4557](compiler-warning-level-3-c4557.md)|'`__assume`' contains effect '*effect*'| +|[Compiler warning (level 1) C4558](compiler-warning-level-1-c4558.md)|value of operand '*value*' is out of range '*lower_bound* - *upper_bound*'| +|[Compiler warning (level 4) C4559](compiler-warning-level-4-c4559.md)|''*function*': redefinition; the function gains `__declspec(`*modifier*`)`| +|[Compiler warning (level 1) C4561](compiler-warning-level-1-c4561.md)|'`__fastcall`' incompatible with the '`/clr`' option: converting to '`__stdcall`'| +|Compiler warning (level 4) C4562|fully prototyped functions are required with the '`/clr`' option: converting '`()`' to '`(void)`'| +|[Compiler warning (level 4) C4564](compiler-warning-level-4-c4564.md)|method '*method*' of *class* '*classname*' defines unsupported default parameter '*parameter*'| +|[Compiler warning (level 4) C4565](compiler-warning-level-4-c4565.md)|'*function*': redefinition; the symbol was previously declared with `__declspec(`*modifier*`)`| +|[Compiler warning (level 1) C4566](compiler-warning-level-1-c4566.md)|character represented by universal-character-name '*char*' can't be represented in the current code page (*number*)| |Compiler warning (level 1) C4568|'*function*': no members match the signature of the explicit override| |Compiler warning (level 3) C4569|'*function*': no members match the signature of the explicit override| -|[Compiler warning (level 3) C4570](../../error-messages/compiler-warnings/compiler-warning-level-3-c4570.md)|'*type*': is not explicitly declared as abstract but has abstract functions| -|[Compiler warning (level 4) C4571](../../error-messages/compiler-warnings/compiler-warning-level-4-c4571.md)|Informational: catch(...) semantics changed since Visual C++ 7.1; structured exceptions (SEH) are no longer caught| -|[Compiler warning (level 1) C4572](../../error-messages/compiler-warnings/compiler-warning-level-1-c4572.md)|[ParamArray] attribute is deprecated under /clr, use '...' instead| -|Compiler warning (level 1) C4573|the usage of '*lambda function*' requires the compiler to capture 'this' but the current default capture mode does not allow it| -|Compiler warning (level 4) C4574|'*Identifier*' is defined to be '0': did you mean to use '#if identifier'?| -|Compiler warning (level 1) C4575|'__vectorcall' incompatible with the '/clr' option: converting to '__stdcall'| +|[Compiler warning (level 3) C4570](compiler-warning-level-3-c4570.md)|'*type*': isn't explicitly declared as abstract but has abstract functions| +|[Compiler warning (level 4) C4571](compiler-warning-level-4-c4571.md)|Informational: `catch(...)` semantics changed since Visual C++ 7.1; structured exceptions (SEH) are no longer caught| +|[Compiler warning (level 1) C4572](compiler-warning-level-1-c4572.md)|`[ParamArray]` attribute is deprecated under `/clr`, use '`...`' instead| +|Compiler warning (level 1, Error) C4573|the usage of '*lambda function*' requires the compiler to capture '`this`' but the current default capture mode doesn't allow it| +|Compiler warning (level 4, off) C4574|'*Identifier*' is defined to be '`0`': did you mean to use '`#if` *identifier*'?| +|Compiler warning (level 1) C4575|'`__vectorcall`' incompatible with the '`/clr`' option: converting to '`__stdcall`'| |Compiler warning (level 1, Error) C4576|a parenthesized type followed by an initializer list is a non-standard explicit type conversion syntax| -|[Compiler warning (level 1, Off) C4577](../../error-messages/compiler-warnings/compiler-warning-level-1-c4577.md)|'noexcept' used with no exception handling mode specified; termination on exception is not guaranteed. Specify /EHsc| -|Compiler warning (level 1, Error) C4578|'abs': conversion from '*type1*' to '*type2*', possible loss of data (Did you mean to call '*function*' or to #include \?)| -|[Compiler warning (level 3) C4580](../../error-messages/compiler-warnings/compiler-warning-level-3-c4580.md)|[attribute] is deprecated; instead specify System::Attribute or Platform::Metadata as a base class| -|[Compiler warning (level 1) C4581](../../error-messages/compiler-warnings/compiler-warning-level-1-c4581.md)|deprecated behavior: '"*string*"' replaced with '*string*' to process attribute| -|Compiler warning (level 4) C4582|'*type*': constructor is not implicitly called| -|Compiler warning (level 4) C4583|'*type*': destructor is not implicitly called| -|[Compiler warning (level 1) C4584](../../error-messages/compiler-warnings/compiler-warning-level-1-c4584.md)|'*class1*': base-class '*class2*' is already a base-class of '*class3*'| -|Compiler warning (level 1, Error) C4585|'*class*': A WinRT 'public ref class' must either be sealed or derive from an existing unsealed class| -|Compiler warning (level 1, Error) C4586|'*type*': A public type cannot be declared in a top-level namespace called 'Windows'| -|Compiler warning (level 1) C4587|'*anonymous_structure*': behavior change: constructor is no longer implicitly called| -|Compiler warning (level 1) C4588|'*anonymous_structure*': behavior change: destructor is no longer implicitly called| +|[Compiler warning (level 1, Off) C4577](compiler-warning-level-1-c4577.md)|'`noexcept`' used with no exception handling mode specified; termination on exception isn't guaranteed. Specify `/EHsc`| +|Compiler warning (level 1, Error) C4578|'`abs`': conversion from '*type1*' to '*type2*', possible loss of data (Did you mean to call '*function*' or to `#include `?)| +|[Compiler warning (level 3) C4580](compiler-warning-level-3-c4580.md)|`[attribute]` is deprecated; instead specify *namespace::*Attribute as a base class| +|[Compiler warning (level 1) C4581](compiler-warning-level-1-c4581.md)|deprecated behavior: '"*string*"' replaced with '*string*' to process attribute| +|Compiler warning (level 4, off) C4582|'*type*': constructor isn't implicitly called| +|Compiler warning (level 4, off) C4583|'*type*': destructor isn't implicitly called| +|[Compiler warning (level 1) C4584](compiler-warning-level-1-c4584.md)|'*class1*': base-class '*class2*' is already a base-class of '*class3*'| +|Compiler warning (level 1, Error) C4585|'*class*': A WinRT '`public ref class`' must either be sealed or derive from an existing unsealed class| +|Compiler warning (level 1, Error) C4586|'*type*': A public type can't be declared in a top-level namespace called '`Windows`'| +|Compiler warning (level 1, off) C4587|'*anonymous_structure*': behavior change: constructor is no longer implicitly called| +|Compiler warning (level 1, off) C4588|'*anonymous_structure*': behavior change: destructor is no longer implicitly called| |Compiler warning (level 4) C4589|Constructor of abstract class '*class1*' ignores initializer for virtual base class '*class2*'| -|Compiler warning (level 1) C4591|'constexpr' call-depth limit of *number* exceeded (/constexpr:depth\)| -|Compiler warning (level 3) C4592|'*function*': 'constexpr' call evaluation failed; function will be called at run-time| -|Compiler warning (level 1) C4593|'*function*': 'constexpr' call evaluation step limit of '*limit*' exceeded; use /constexpr:steps\ to increase the limit| -|Compiler warning (level 3) C4594|'*type*': destructor will not be implicitly called if an exception is thrown| -|Compiler warning (level 1) C4595|'*type*': behavior change: destructor will no longer be implicitly called if an exception is thrown| -|[Compiler warning (level 4) C4596](../../error-messages/compiler-warnings/c4596.md)|'*identifier*': illegal qualified name in member declaration| -|[Compiler warning (error) C4597](c4597.md)|undefined behavior: offsetof applied to a member of a virtual base| -|Compiler warning (level 1 and level 3) C4598|'#include "*header*"': header number *number* in the precompiled header does not match current compilation at that position| -|Compiler warning (level 3) C4599|'*flag* *path*': command line argument number *number* does not match precompiled header| +|Compiler warning (level 1, no longer emitted) C4591|'`constexpr`' call-depth limit of *number* exceeded (`/constexpr:depth`)| +|Compiler warning (level 1, Error) C4592|'*name*': symbol will be dynamically initialized (implementation limitation)| +|Compiler warning (level 1, no longer emitted) C4593|'*function*': '`constexpr`' call evaluation step limit of '*limit*' exceeded; use `/constexpr:steps` to increase the limit| +|Compiler warning (level 1) C4594|class '*name*' can never be instantiated - indirect virtual base class '*name*' is inaccessible| +|Compiler warning (level 3) C4595|'*name*': non-member operator new or delete functions may not be declared inline| +|[Compiler warning (level 4, Error, off) C4596](c4596.md)|'*identifier*': illegal qualified name in member declaration| +|[Compiler warning (error) C4597](c4597.md)|undefined behavior: *message*| +|Compiler warning (level 1 and level 3) C4598|'`#include "`*header*`"`': header number *number* in the precompiled header doesn't match current compilation at that position| +|Compiler warning (level 3, off) C4599|'*flag* *path*': command line argument number *number* doesn't match precompiled header| ## See also -[C/C++ Compiler and build tools errors and warnings](../compiler-errors-1/c-cpp-build-errors.md) \ +[C/C++ Compiler and build tools errors and warnings](../compiler-errors-1/c-cpp-build-errors.md)\ [Compiler warnings C4000 - C5999](compiler-warnings-c4000-c5999.md) diff --git a/docs/error-messages/toc.yml b/docs/error-messages/toc.yml index ad851c5bbbd..ba1b06ea851 100644 --- a/docs/error-messages/toc.yml +++ b/docs/error-messages/toc.yml @@ -3725,7 +3725,7 @@ items: items: - name: Compiler warnings C4400 through C4599 href: compiler-warnings/compiler-warnings-c4400-through-c4599.md - - name: Compiler warning (level 4) C4400 + - name: Compiler warning (level 4, Error) C4400 href: compiler-warnings/compiler-warning-level-4-c4400.md - name: Compiler warning (level 1) C4401 href: compiler-warnings/compiler-warning-level-1-c4401.md @@ -3749,7 +3749,7 @@ items: href: compiler-warnings/compiler-warning-level-1-c4410.md - name: Compiler warning (level 1) C4411 href: compiler-warnings/compiler-warning-level-1-c4411.md - - name: Compiler warning (level 2) C4412 + - name: Compiler warning (level 2, off) C4412 href: compiler-warnings/compiler-warning-level-2-c4412.md - name: Compiler warning (level 3) C4414 href: compiler-warnings/compiler-warning-level-3-c4414.md @@ -3757,19 +3757,19 @@ items: href: compiler-warnings/compiler-warning-level-1-c4420.md - name: Compiler warning (level 4) C4429 href: compiler-warnings/compiler-warning-level-4-c4429.md - - name: Compiler warning C4430 + - name: Compiler warning (level 1, Error) C4430 href: compiler-warnings/compiler-warning-c4430.md - name: Compiler warning (level 4) C4431 href: compiler-warnings/compiler-warning-level-4-c4431.md - name: Compiler warning (level 4) C4434 href: compiler-warnings/compiler-warning-level-4-c4434.md - - name: Compiler warning (level 4) C4435 + - name: Compiler warning (level 4, off) C4435 href: compiler-warnings/compiler-warning-level-4-c4435.md - - name: Compiler warning (level 1) C4436 + - name: Compiler warning (level 1 and level 4) C4436 href: compiler-warnings/compiler-warning-level-1-c4436.md - - name: Compiler warning (level 4) C4437 + - name: Compiler warning (level 1 and level 4, off) C4437 href: compiler-warnings/compiler-warning-level-4-c4437.md - - name: Compiler warning C4439 + - name: Compiler warning (level 1, Error) C4439 href: compiler-warnings/compiler-warning-c4439.md - name: Compiler warning (level 1) C4440 href: compiler-warnings/compiler-warning-level-1-c4440.md @@ -3777,13 +3777,13 @@ items: href: compiler-warnings/compiler-warning-level-1-c4441.md - name: Compiler warning (level 1) C4445 href: compiler-warnings/compiler-warning-level-1-c4445.md - - name: Compiler warning (level 4) C4456 + - name: Compiler warning (level 1 and level 4) C4456 href: compiler-warnings/compiler-warning-level-4-c4456.md - - name: Compiler warning (level 4) C4457 + - name: Compiler warning (level 1 and level 4) C4457 href: compiler-warnings/compiler-warning-level-4-c4457.md - - name: Compiler warning (level 4) C4458 + - name: Compiler warning (level 1 and level 4) C4458 href: compiler-warnings/compiler-warning-level-4-c4458.md - - name: Compiler warning (level 4) C4459 + - name: Compiler warning (level 1 and level 4) C4459 href: compiler-warnings/compiler-warning-level-4-c4459.md - name: Compiler warning (level 4) C4460 href: compiler-warnings/compiler-warning-level-4-c4460.md @@ -3793,21 +3793,21 @@ items: href: compiler-warnings/compiler-warning-level-1-c4462.md - name: Compiler warning (level 4) C4463 href: compiler-warnings/compiler-warning-level-4-c4463.md - - name: Compiler warning (level 4) C4464 + - name: Compiler warning (level 4, off) C4464 href: compiler-warnings/compiler-warning-level-4-c4464.md - name: Compiler warning (level 1) C4470 href: compiler-warnings/compiler-warning-level-1-c4470.md - - name: Compiler warning (level 4) C4471 + - name: Compiler warning (level 4, off) C4471 href: compiler-warnings/compiler-warning-level-4-c4471.md - name: Compiler warning (level 1) C4473 href: compiler-warnings/c4473.md - name: Compiler warning (level 1) C4477 href: compiler-warnings/c4477.md - - name: Compiler warning (level 4) C4481 + - name: Compiler warning (level 4, Error) C4481 href: compiler-warnings/compiler-warning-level-4-c4481.md - - name: Compiler warning C4484 + - name: Compiler warning (level 1, Error) C4484 href: compiler-warnings/compiler-warning-c4484.md - - name: Compiler warning C4485 + - name: Compiler warning (level 1, Error) C4485 href: compiler-warnings/compiler-warning-c4485.md - name: Compiler warning (level 1) C4486 href: compiler-warnings/compiler-warning-level-1-c4486.md @@ -3831,13 +3831,13 @@ items: href: compiler-warnings/compiler-warning-level-1-c4508.md - name: Compiler warning (level 4) C4510 href: compiler-warnings/compiler-warning-level-4-c4510.md - - name: Compiler warning (level 3) C4511 + - name: Compiler warning (level 4) C4511 href: compiler-warnings/compiler-warning-level-3-c4511.md - name: Compiler warning (level 4) C4512 href: compiler-warnings/compiler-warning-level-4-c4512.md - name: Compiler warning (level 4) C4513 href: compiler-warnings/compiler-warning-level-4-c4513.md - - name: Compiler warning (level 4) C4514 + - name: Compiler warning (level 4, off) C4514 href: compiler-warnings/compiler-warning-level-4-c4514.md - name: Compiler warning (level 4) C4515 href: compiler-warnings/compiler-warning-level-4-c4515.md @@ -3865,7 +3865,7 @@ items: href: compiler-warnings/compiler-warning-level-3-c4534.md - name: Compiler warning (level 3) C4535 href: compiler-warnings/compiler-warning-level-3-c4535.md - - name: Compiler warning (level 4) C4536 + - name: Compiler warning (level 4, off) C4536 href: compiler-warnings/compiler-warning-level-4-c4536.md - name: Compiler warning (level 1) C4537 href: compiler-warnings/compiler-warning-level-1-c4537.md @@ -3879,15 +3879,15 @@ items: href: compiler-warnings/compiler-warning-level-3-c4543.md - name: Compiler warning (level 1) C4544 href: compiler-warnings/compiler-warning-level-1-c4544.md - - name: Compiler warning (level 1) C4545 + - name: Compiler warning (level 1, off) C4545 href: compiler-warnings/compiler-warning-level-1-c4545.md - - name: Compiler warning (level 1) C4546 + - name: Compiler warning (level 1, off) C4546 href: compiler-warnings/compiler-warning-level-1-c4546.md - - name: Compiler warning (level 1) C4547 + - name: Compiler warning (level 1, off) C4547 href: compiler-warnings/compiler-warning-level-1-c4547.md - - name: Compiler warning (level 1) C4548 + - name: Compiler warning (level 1, off) C4548 href: compiler-warnings/compiler-warning-level-1-c4548.md - - name: Compiler warning (level 1) C4549 + - name: Compiler warning (level 1, off) C4549 href: compiler-warnings/compiler-warning-level-1-c4549.md - name: Compiler warning (level 1) C4550 href: compiler-warnings/compiler-warning-level-1-c4550.md @@ -3899,11 +3899,11 @@ items: href: compiler-warnings/compiler-warning-level-1-c4553.md - name: Compiler warning (level 3) C4554 href: compiler-warnings/compiler-warning-level-3-c4554.md - - name: Compiler warning (level 1) C4555 + - name: Compiler warning (level 1, off) C4555 href: compiler-warnings/compiler-warning-level-1-c4555.md - name: Compiler warning (level 1) C4556 href: compiler-warnings/compiler-warning-level-1-c4556.md - - name: Compiler warning (level 3) C4557 + - name: Compiler warning (level 3, off) C4557 href: compiler-warnings/compiler-warning-level-3-c4557.md - name: Compiler warning (level 1) C4558 href: compiler-warnings/compiler-warning-level-1-c4558.md @@ -3931,7 +3931,7 @@ items: href: compiler-warnings/compiler-warning-level-1-c4581.md - name: Compiler warning (level 1) C4584 href: compiler-warnings/compiler-warning-level-1-c4584.md - - name: Compiler warning (level 4) C4596 + - name: Compiler warning (level 4, Error, off) C4596 href: compiler-warnings/c4596.md - name: Compiler warning (level 4) C4597 href: compiler-warnings/c4597.md From b1c7e64d169d5011e0d01296246e8f9ab7754fc7 Mon Sep 17 00:00:00 2001 From: rmca14 <10053959+rmca14@users.noreply.github.com> Date: Thu, 23 Jan 2025 15:03:50 -0800 Subject: [PATCH 0057/2255] Revert Acrolinx --- .../compiler-warnings-c4400-through-c4599.md | 66 +++++++++---------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md index 58e16a4db16..7fe43b95596 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md @@ -28,43 +28,43 @@ The articles in this section describe Microsoft C/C++ compiler warning messages |[Compiler warning (level 1) C4410](compiler-warning-level-1-c4410.md)|illegal size for operand| |[Compiler warning (level 1) C4411](compiler-warning-level-1-c4411.md)|'*identifier*': symbol resolves to displacement register| |[Compiler warning (level 2, off) C4412](compiler-warning-level-2-c4412.md)|'*function*': function signature contains type '*type*'; C++ objects are unsafe to pass between pure code and mixed or native.| -|Compiler warning (no longer emitted) C4413|'`classname::member`': reference member is initialized to a temporary that doesn't persist after the constructor exits| +|Compiler warning (no longer emitted) C4413|'`classname::member`': reference member is initialized to a temporary that does not persist after the constructor exits| |[Compiler warning (level 3) C4414](compiler-warning-level-3-c4414.md)|'*function*': short jump to function converted to near| |Compiler warning (level 1) C4415|duplicate `__declspec(code_seg(`'*name*'`))`| |Compiler warning (level 1) C4416|`__declspec(code_seg(...))` contains empty string: ignored| -|Compiler warning (level 1) C4417|an explicit template instantiation can't have `__declspec(code_seg(...))`: ignored| +|Compiler warning (level 1) C4417|an explicit template instantiation cannot have `__declspec(code_seg(...))`: ignored| |Compiler warning (level 1) C4418|`__declspec(code_seg(...))` ignored on an `enum`| |Compiler warning (level 3) C4419|'*symbol*' has no effect when applied to `private ref class` '*class*'.| |[Compiler warning (level 1) C4420](compiler-warning-level-1-c4420.md)|'*checked_operator*': operator not available, using '*operator*' instead; run-time checking may be compromised| |Compiler warning (level 3) C4421|'*parameter*': a reference parameter on a resumable function is potentially unsafe| |Compiler warning (level 3) C4423|'`std::bad_alloc`': will be caught by class ('*type*') on line *number*| |Compiler warning (level 3) C4424|catch for '*type1*' preceded by '*type2*' on line *number*; unpredictable behavior may result if '`std::bad_alloc`' is thrown| -|Compiler warning (level 1) C4425|A SAL annotation can't be applied to '`...`'| +|Compiler warning (level 1) C4425|A SAL annotation cannot be applied to '`...`'| |Compiler warning (level 1, off) C4426|optimization flags changed after including header, may be due to `#pragma optimize()`| |Compiler warning (level 1) C4427|'*operator*': overflow in constant division, undefined behavior| |[Compiler warning (level 4) C4429](compiler-warning-level-4-c4429.md)|possible incomplete or improperly formed universal-character-name| -|[Compiler warning (level 1, Error) C4430](compiler-warning-c4430.md)|missing type specifier - int assumed. Note: C++ doesn't support default-int| +|[Compiler warning (level 1, Error) C4430](compiler-warning-c4430.md)|missing type specifier - int assumed. Note: C++ does not support default-int| |[Compiler warning (level 4) C4431](compiler-warning-level-4-c4431.md)|missing type specifier - int assumed. Note: C no longer supports default-int| |[Compiler warning (level 4) C4434](compiler-warning-level-4-c4434.md)|a static constructor must have private accessibility; changing to private access| |[Compiler warning (level 4, off) C4435](compiler-warning-level-4-c4435.md)|'*derived_class*': Object layout under `/vd2` will change due to virtual base '*base_class*'| |[Compiler warning (level 1 and level 4) C4436](compiler-warning-level-1-c4436.md)|`dynamic_cast` from virtual base '*base_class*' to '*derived_class*' in constructor or destructor could fail with partially-constructed object| |[Compiler warning (level 1 and level 4, off) C4437](compiler-warning-level-4-c4437.md)|`dynamic_cast` from virtual base '*base_class*' to '*derived_class*' could fail in some contexts| -|Compiler warning C4438|'*function*': can't be called safely in `/await:clrcompat` mode. If '*function*' calls into the CLR it may result in CLR head corruption| +|Compiler warning C4438|'*function*': cannot be called safely in `/await:clrcompat` mode. If '*function*' calls into the CLR it may result in CLR head corruption| |[Compiler warning (level 1, Error) C4439](compiler-warning-c4439.md)|'*function*': function definition with a managed type in the signature must have a `__clrcall` calling convention| |[Compiler warning (level 1) C4440](compiler-warning-level-1-c4440.md)|calling convention redefinition from '*calling_convention1*' to '*calling_convenction2*' ignored| |[Compiler warning (level 1) C4441](compiler-warning-level-1-c4441.md)|calling convention of '*calling_convention1*' ignored; '*calling_convention2*' used instead| |Compiler warning (level 1) C4442|embedded null terminator in `__annotation` argument. Value will be truncated.| |Compiler warning (level 1) C4443|expected pragma parameter to be '`0`', '`1`', or '`2`'| -|Compiler warning (level 3, off) C4444|'*identifier*': top level '`__unaligned`' isn't implemented in this context| -|[Compiler warning (level 1) C4445](compiler-warning-level-1-c4445.md)|'*function*': in a *WinRT/managed* type a virtual method can't be private| -|Compiler warning (level 1) C4446|'*type*': can't map member '*name1*' into this type, due to conflict with the type name. The method was renamed to '*name2*'| +|Compiler warning (level 3, off) C4444|'*identifier*': top level '`__unaligned`' is not implemented in this context| +|[Compiler warning (level 1) C4445](compiler-warning-level-1-c4445.md)|'*function*': in a *WinRT/managed* type a virtual method cannot be private| +|Compiler warning (level 1) C4446|'*type*': cannot map member '*name1*' into this type, due to conflict with the type name. The method was renamed to '*name2*'| |Compiler warning (level 1) C4447|'`main`' signature found without threading model. Consider using '`int main(Platform::Array^ args)`'.| -|Compiler warning (level 1) C4448|'*type1*' doesn't have a default interface specified in metadata. Picking: '*type2*', which may fail at runtime.| +|Compiler warning (level 1) C4448|'*type1*' does not have a default interface specified in metadata. Picking: '*type2*', which may fail at runtime.| |Compiler warning C4449|'*type*' an unsealed type should be marked as '`[WebHostHidden]`'| |Compiler warning C4450|'*type1*' should be marked as '`[WebHostHidden]`' because it derives from '*type2*'| |Compiler warning (level 3 and level 4) C4451|'*classname1::member*': Usage of ref class '*classname2::member*' inside this context can lead to invalid marshaling of object across contexts| -|Compiler warning (level 1, Error) C4452|'*identifier*': public type can't be at global scope. It must be in a namespace that is a child of the name of the output `.winmd` file.| -|Compiler warning (level 1) C4453|'*type*': A '`[WebHostHidden]`' type should not be used on the published surface of a public type that isn't '`[WebHostHidden]`'| +|Compiler warning (level 1, Error) C4452|'*identifier*': public type cannot be at global scope. It must be in a namespace that is a child of the name of the output `.winmd` file.| +|Compiler warning (level 1) C4453|'*type*': A '`[WebHostHidden]`' type should not be used on the published surface of a public type that is not '`[WebHostHidden]`'| |Compiler warning (level 1) C4454|'*function*' is overloaded by more than the number of input parameters without having `[DefaultOverload]` specified. Picking '*declaration*' as the default overload| |Compiler warning (level 1) C4455|'operator *operator*': literal suffix identifiers that do not start with an underscore are reserved| |[Compiler warning (level 1 and level 4) C4456](compiler-warning-level-4-c4456.md)|declaration of '*identifier*' hides previous local declaration| @@ -73,7 +73,7 @@ The articles in this section describe Microsoft C/C++ compiler warning messages |[Compiler warning (level 1 and level 4) C4459](compiler-warning-level-4-c4459.md)|declaration of '*identifier*' hides global declaration| |[Compiler warning (level 4) C4460](compiler-warning-level-4-c4460.md)|*WinRT/managed* operator '*operator*', has parameter passed by reference. *WinRT/managed* operator '*operator*' has different semantics from C++ operator '*cpp_operator*', did you intend to pass by value?| |[Compiler warning (level 1) C4461](compiler-warning-level-1-c4461.md)|'*classname*': this class has a finalizer '`!`*finalizer*' but no destructor '`~`*dtor*'| -|[Compiler warning (level 1, Error) C4462](compiler-warning-level-1-c4462.md)|'*type*' : can't determine the GUID of the type. Program may fail at runtime.| +|[Compiler warning (level 1, Error) C4462](compiler-warning-level-1-c4462.md)|'*type*' : cannot determine the GUID of the type. Program may fail at runtime.| |[Compiler warning (level 4) C4463](compiler-warning-level-4-c4463.md)|overflow; assigning *value* to bit-field that can only hold values from *min_value* to *max_value*| |[Compiler warning (level 4, off) C4464](compiler-warning-level-4-c4464.md)|relative include path contains '`..`'| |Compiler warning C4466|Could not perform coroutine heap elision| @@ -84,30 +84,30 @@ The articles in this section describe Microsoft C/C++ compiler warning messages |Compiler warning (level 1) C4472|'*identifier*' is a native enum: add an access specifier (private/public) to declare a 'WinRT/managed' enum| |[Compiler warning (level 1) C4473](c4473.md)|'*function*' : not enough arguments passed for format string| |Compiler warning (level 3) C4474|'*function*' : too many arguments passed for format string| -|Compiler warning (level 3) C4475|'*function*' : length modifier '*modifier*' can't be used with type field character '*character*' in format specifier| +|Compiler warning (level 3) C4475|'*function*' : length modifier '*modifier*' cannot be used with type field character '*character*' in format specifier| |Compiler warning (level 3) C4476|'*function*' : unknown type field character '*character*' in format specifier| |[Compiler warning (level 1) C4477](c4477.md)|'*function*' : format string '*string*' requires an argument of type '*type*', but variadic argument *number* has type '*type*'| -|Compiler warning (level 1) C4478|'*function*' : positional and non-positional placeholders can't be mixed in the same format string| +|Compiler warning (level 1) C4478|'*function*' : positional and non-positional placeholders cannot be mixed in the same format string| |Compiler warning (Error) C4480|nonstandard extension used: specifying underlying type for `enum` '*enumeration*'| |[Compiler warning (level 4, Error) C4481](compiler-warning-level-4-c4481.md)|nonstandard extension used: override specifier '*keyword*'| |Compiler warning C4482|nonstandard extension used: `enum` '*enumeration*' used in qualified name| |Compiler warning (level 1, Error) C4483|syntax error: expected C++ keyword| -|[Compiler warning (level 1, Error) C4484](compiler-warning-c4484.md)|'*override_function*': matches base `ref class` method '*base_class_function*', but isn't marked '`virtual`', '`new`' or '`override`'; '`new`' (and not '`virtual`') is assumed| -|[Compiler warning (level 1, Error) C4485](compiler-warning-c4485.md)|'*override_function*': matches base `ref class` method '*base_class_function*', but isn't marked '`new`' or '`override`'; '`new`' (and '`virtual`') is assumed| +|[Compiler warning (level 1, Error) C4484](compiler-warning-c4484.md)|'*override_function*': matches base `ref class` method '*base_class_function*', but is not marked '`virtual`', '`new`' or '`override`'; '`new`' (and not '`virtual`') is assumed| +|[Compiler warning (level 1, Error) C4485](compiler-warning-c4485.md)|'*override_function*': matches base `ref class` method '*base_class_function*', but is not marked '`new`' or '`override`'; '`new`' (and '`virtual`') is assumed| |[Compiler warning (level 1) C4486](compiler-warning-level-1-c4486.md)|'*function*': a private virtual method of a `ref class` or value class should be marked '`sealed`'| -|[Compiler warning (level 4) C4487](compiler-warning-level-4-c4487.md)|'*derived_class_function*': matches inherited non-virtual method '*base_class_function*' but isn't explicitly marked '`new`'| +|[Compiler warning (level 4) C4487](compiler-warning-level-4-c4487.md)|'*derived_class_function*': matches inherited non-virtual method '*base_class_function*' but is not explicitly marked '`new`'| |[Compiler warning (level 1) C4488](compiler-warning-level-1-c4488.md)|'*function*': requires '*keyword*' keyword to implement the interface method '*interface_method*'| |[Compiler warning (level 1) C4489](compiler-warning-level-1-c4489.md)|'*specifier*': not allowed on interface method '*method*'; override specifiers are only allowed on ref class and value class methods| -|[Compiler warning (level 1) C4490](compiler-warning-level-1-c4490.md)|'*override*': incorrect use of override specifier; '*function*' doesn't match a base ref class method| +|[Compiler warning (level 1) C4490](compiler-warning-level-1-c4490.md)|'*override*': incorrect use of override specifier; '*function*' does not match a base ref class method| |Compiler warning (level 1) C4491|'*name*': has an illegal IDL version format| -|Compiler warning (level 1, Error) C4492|'*function1*': matches base `ref class` method '*function2*', but isn't marked '`override`'| -|Compiler warning (level 3, Error) C4493|delete expression has no effect as the destructor of '*type*' doesn't have '`public`' accessibility| -|Compiler warning (level 1) C4494|'*function*' : Ignoring `__declspec(allocator)` because the function return type isn't a pointer or reference| +|Compiler warning (level 1, Error) C4492|'*function1*': matches base `ref class` method '*function2*', but is not marked '`override`'| +|Compiler warning (level 3, Error) C4493|delete expression has no effect as the destructor of '*type*' does not have '`public`' accessibility| +|Compiler warning (level 1) C4494|'*function*' : Ignoring `__declspec(allocator)` because the function return type is not a pointer or reference| |Compiler warning (level 4, off) C4495|nonstandard extension '`__super`' used: replace with explicit base class name| |Compiler warning (level 4, Error, off) C4496|nonstandard extension '`for each`' used: replace with ranged-for statement| |Compiler warning (level 4, off) C4497|nonstandard extension '`sealed`' used: replace with '`final`'| |Compiler warning (level 4, off) C4498|nonstandard extension used: '*extension*'| -|Compiler warning (level 4) C4499|'*function*': an explicit specialization can't have a storage class (ignored)| +|Compiler warning (level 4) C4499|'*function*': an explicit specialization cannot have a storage class (ignored)| |[Compiler warning (level 1) C4502](compiler-warning-level-1-c4502.md)|'linkage specification' requires use of keyword '`extern`' and must precede all other specifiers| |[Compiler warning (level 1) C4503](compiler-warning-level-1-c4503.md)|'*identifier*': decorated name length exceeded, name was truncated| |[Compiler warning (level 4) C4505](compiler-warning-level-4-c4505.md)|'*function*': unreferenced function with internal linkage has been removed| @@ -127,7 +127,7 @@ The articles in this section describe Microsoft C/C++ compiler warning messages |[Compiler warning (level 3) C4521](compiler-warning-level-3-c4521.md)|'*class*': multiple copy constructors specified| |[Compiler warning (level 3) C4522](compiler-warning-level-3-c4522.md)|'*class*': multiple assignment operators specified| |[Compiler warning (level 3) C4523](compiler-warning-level-3-c4523.md)|'*class*': multiple destructors specified| -|[Compiler warning (level 1) C4526](compiler-warning-level-1-c4526.md)|'*function*': static member function can't override virtual function '*virtual function*'
override ignored, virtual function will be hidden| +|[Compiler warning (level 1) C4526](compiler-warning-level-1-c4526.md)|'*function*': static member function cannot override virtual function '*virtual function*'
override ignored, virtual function will be hidden| |[Compiler warning (level 1) C4530](compiler-warning-level-1-c4530.md)|C++ exception handler used, but unwind semantics are not enabled. Specify `/EHsc`| |Compiler warning (level 1) C4531|C++ exception handling not available on Windows CE. Use Structured Exception Handling| |[Compiler warning (level 1) C4532](compiler-warning-level-1-c4532.md)|'*continue*': jump out of *__finally/finally* block has undefined behavior during termination handling| @@ -139,7 +139,7 @@ The articles in this section describe Microsoft C/C++ compiler warning messages |[Compiler warning (level 3) C4538](compiler-warning-level-3-c4538.md)|'*type*': `const`/`volatile` qualifiers on this type are not supported| |[Compiler warning (level 1) C4540](compiler-warning-level-1-c4540.md)|`dynamic_cast` used to convert to inaccessible or ambiguous base; run-time test will fail ('*type1*' to '*type2*')| |[Compiler warning (level 1) C4541](compiler-warning-level-1-c4541.md)|'*identifier*' used on polymorphic type '*type*' with `/GR-`; unpredictable behavior may result| -|Compiler warning (level 1) C4542|Skipping generation of merged injected text file, can't write *filetype* file: '*issue*': *message*| +|Compiler warning (level 1) C4542|Skipping generation of merged injected text file, cannot write *filetype* file: '*issue*': *message*| |[Compiler warning (level 3) C4543](compiler-warning-level-3-c4543.md)|Injected text suppressed by attribute '`no_injected_text`'| |[Compiler warning (level 1) C4544](compiler-warning-level-1-c4544.md)|the default template argument for '*declaration*' is ignored on this template declaration| |[Compiler warning (level 1, off) C4545](compiler-warning-level-1-c4545.md)|expression before comma evaluates to a function which is missing an argument list| @@ -161,25 +161,25 @@ The articles in this section describe Microsoft C/C++ compiler warning messages |Compiler warning (level 4) C4562|fully prototyped functions are required with the '`/clr`' option: converting '`()`' to '`(void)`'| |[Compiler warning (level 4) C4564](compiler-warning-level-4-c4564.md)|method '*method*' of *class* '*classname*' defines unsupported default parameter '*parameter*'| |[Compiler warning (level 4) C4565](compiler-warning-level-4-c4565.md)|'*function*': redefinition; the symbol was previously declared with `__declspec(`*modifier*`)`| -|[Compiler warning (level 1) C4566](compiler-warning-level-1-c4566.md)|character represented by universal-character-name '*char*' can't be represented in the current code page (*number*)| +|[Compiler warning (level 1) C4566](compiler-warning-level-1-c4566.md)|character represented by universal-character-name '*char*' cannot be represented in the current code page (*number*)| |Compiler warning (level 1) C4568|'*function*': no members match the signature of the explicit override| |Compiler warning (level 3) C4569|'*function*': no members match the signature of the explicit override| -|[Compiler warning (level 3) C4570](compiler-warning-level-3-c4570.md)|'*type*': isn't explicitly declared as abstract but has abstract functions| +|[Compiler warning (level 3) C4570](compiler-warning-level-3-c4570.md)|'*type*': is not explicitly declared as abstract but has abstract functions| |[Compiler warning (level 4) C4571](compiler-warning-level-4-c4571.md)|Informational: `catch(...)` semantics changed since Visual C++ 7.1; structured exceptions (SEH) are no longer caught| |[Compiler warning (level 1) C4572](compiler-warning-level-1-c4572.md)|`[ParamArray]` attribute is deprecated under `/clr`, use '`...`' instead| -|Compiler warning (level 1, Error) C4573|the usage of '*lambda function*' requires the compiler to capture '`this`' but the current default capture mode doesn't allow it| +|Compiler warning (level 1, Error) C4573|the usage of '*lambda function*' requires the compiler to capture '`this`' but the current default capture mode does not allow it| |Compiler warning (level 4, off) C4574|'*Identifier*' is defined to be '`0`': did you mean to use '`#if` *identifier*'?| |Compiler warning (level 1) C4575|'`__vectorcall`' incompatible with the '`/clr`' option: converting to '`__stdcall`'| |Compiler warning (level 1, Error) C4576|a parenthesized type followed by an initializer list is a non-standard explicit type conversion syntax| -|[Compiler warning (level 1, Off) C4577](compiler-warning-level-1-c4577.md)|'`noexcept`' used with no exception handling mode specified; termination on exception isn't guaranteed. Specify `/EHsc`| +|[Compiler warning (level 1, Off) C4577](compiler-warning-level-1-c4577.md)|'`noexcept`' used with no exception handling mode specified; termination on exception is not guaranteed. Specify `/EHsc`| |Compiler warning (level 1, Error) C4578|'`abs`': conversion from '*type1*' to '*type2*', possible loss of data (Did you mean to call '*function*' or to `#include `?)| |[Compiler warning (level 3) C4580](compiler-warning-level-3-c4580.md)|`[attribute]` is deprecated; instead specify *namespace::*Attribute as a base class| |[Compiler warning (level 1) C4581](compiler-warning-level-1-c4581.md)|deprecated behavior: '"*string*"' replaced with '*string*' to process attribute| -|Compiler warning (level 4, off) C4582|'*type*': constructor isn't implicitly called| -|Compiler warning (level 4, off) C4583|'*type*': destructor isn't implicitly called| +|Compiler warning (level 4, off) C4582|'*type*': constructor is not implicitly called| +|Compiler warning (level 4, off) C4583|'*type*': destructor is not implicitly called| |[Compiler warning (level 1) C4584](compiler-warning-level-1-c4584.md)|'*class1*': base-class '*class2*' is already a base-class of '*class3*'| |Compiler warning (level 1, Error) C4585|'*class*': A WinRT '`public ref class`' must either be sealed or derive from an existing unsealed class| -|Compiler warning (level 1, Error) C4586|'*type*': A public type can't be declared in a top-level namespace called '`Windows`'| +|Compiler warning (level 1, Error) C4586|'*type*': A public type cannot be declared in a top-level namespace called '`Windows`'| |Compiler warning (level 1, off) C4587|'*anonymous_structure*': behavior change: constructor is no longer implicitly called| |Compiler warning (level 1, off) C4588|'*anonymous_structure*': behavior change: destructor is no longer implicitly called| |Compiler warning (level 4) C4589|Constructor of abstract class '*class1*' ignores initializer for virtual base class '*class2*'| @@ -190,8 +190,8 @@ The articles in this section describe Microsoft C/C++ compiler warning messages |Compiler warning (level 3) C4595|'*name*': non-member operator new or delete functions may not be declared inline| |[Compiler warning (level 4, Error, off) C4596](c4596.md)|'*identifier*': illegal qualified name in member declaration| |[Compiler warning (error) C4597](c4597.md)|undefined behavior: *message*| -|Compiler warning (level 1 and level 3) C4598|'`#include "`*header*`"`': header number *number* in the precompiled header doesn't match current compilation at that position| -|Compiler warning (level 3, off) C4599|'*flag* *path*': command line argument number *number* doesn't match precompiled header| +|Compiler warning (level 1 and level 3) C4598|'`#include "`*header*`"`': header number *number* in the precompiled header does not match current compilation at that position| +|Compiler warning (level 3, off) C4599|'*flag* *path*': command line argument number *number* does not match precompiled header| ## See also From 22957d0a2e1cd21a8ec010411672866fcd7b57c5 Mon Sep 17 00:00:00 2001 From: rmca14 <10053959+rmca14@users.noreply.github.com> Date: Thu, 23 Jan 2025 15:11:31 -0800 Subject: [PATCH 0058/2255] Revert Acrolinx 2 --- .../compiler-warnings/compiler-warnings-c4400-through-c4599.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md index 7fe43b95596..f44b3030bab 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md @@ -28,7 +28,7 @@ The articles in this section describe Microsoft C/C++ compiler warning messages |[Compiler warning (level 1) C4410](compiler-warning-level-1-c4410.md)|illegal size for operand| |[Compiler warning (level 1) C4411](compiler-warning-level-1-c4411.md)|'*identifier*': symbol resolves to displacement register| |[Compiler warning (level 2, off) C4412](compiler-warning-level-2-c4412.md)|'*function*': function signature contains type '*type*'; C++ objects are unsafe to pass between pure code and mixed or native.| -|Compiler warning (no longer emitted) C4413|'`classname::member`': reference member is initialized to a temporary that does not persist after the constructor exits| +|Compiler warning (no longer emitted) C4413|'`classname::member`': reference member is initialized to a temporary that doesn't persist after the constructor exits| |[Compiler warning (level 3) C4414](compiler-warning-level-3-c4414.md)|'*function*': short jump to function converted to near| |Compiler warning (level 1) C4415|duplicate `__declspec(code_seg(`'*name*'`))`| |Compiler warning (level 1) C4416|`__declspec(code_seg(...))` contains empty string: ignored| From 474de89ce7cc7994039209c81b1b6c88530eb1fa Mon Sep 17 00:00:00 2001 From: rmca14 <10053959+rmca14@users.noreply.github.com> Date: Thu, 23 Jan 2025 16:23:06 -0800 Subject: [PATCH 0059/2255] Revert Acrolinx 3 --- docs/error-messages/toc.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/error-messages/toc.yml b/docs/error-messages/toc.yml index ba1b06ea851..b07a1fa0eec 100644 --- a/docs/error-messages/toc.yml +++ b/docs/error-messages/toc.yml @@ -88,6 +88,10 @@ items: items: - name: Compiler fatal errors C999 through C1999 href: compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md + - name: Fatal error C999 + href: compiler-errors-1/fatal-error-c999.md + - name: Fatal error C1000, C1999 + href: compiler-errors-1/fatal-error-c1000-c1999.md - name: Fatal error C1001 href: compiler-errors-1/fatal-error-c1001.md - name: Fatal error C1002 @@ -4327,6 +4331,8 @@ items: href: compiler-warnings/compiler-warning-level-3-c4996.md - name: Compiler warning (level 1) C4997 href: compiler-warnings/compiler-warning-level-1-c4997.md + - name: Compiler warning (level 1) C4999 + href: compiler-warnings/compiler-warning-level-1-c4999.md - name: Compiler warnings C5000 through C5199 expanded: false items: From c682470b1da758a771dbc9992ee3916caa832dc0 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 23 Jan 2025 17:05:28 -0800 Subject: [PATCH 0060/2255] start --- .../build/reference/std-specify-language-standard-version.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/build/reference/std-specify-language-standard-version.md b/docs/build/reference/std-specify-language-standard-version.md index d2fa1a11cd4..2c73b2f8e7e 100644 --- a/docs/build/reference/std-specify-language-standard-version.md +++ b/docs/build/reference/std-specify-language-standard-version.md @@ -1,8 +1,8 @@ --- title: "/std (Specify Language Standard Version)" description: "The MSVC compiler option /std specifies the C or C++ language standard supported by the compiler." -ms.date: 4/9/2023 -f1_keywords: ["/std", "-std", "/std:c++14", "/std:c++17", "/std:c++20", "/std:c11", "/std:c17", "/std:clatest", "VC.Project.VCCLCompilerTool.CppLanguageStandard"] +ms.date: 1/16/2025 +f1_keywords: ["/std", "-std", "/std:c++14", "/std:c++17", "/std:c++20", "/std:c++23preview", "/std:c11", "/std:c17", "/std:clatest", "VC.Project.VCCLCompilerTool.CppLanguageStandard"] --- # `/std` (Specify Language Standard Version) @@ -13,6 +13,7 @@ Enable supported C and C++ language features from the specified version of the C > **`/std:c++14`**\ > **`/std:c++17`**\ > **`/std:c++20`**\ +> **`/std:c++23preview`**\ > **`/std:c++latest`**\ > **`/std:c11`**\ > **`/std:c17`**\ From c7e5294196fa6bd07e03789f3ffc43ce1fe18caf Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 24 Jan 2025 11:56:28 -0800 Subject: [PATCH 0061/2255] fix toc and add F1 keywords --- .../compiler-fatal-errors-c999-through-c1999.md | 13 ++++++------- docs/error-messages/toc.yml | 8 +------- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md b/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md index 47a7d928d59..23e7c7abff2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md +++ b/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md @@ -1,12 +1,11 @@ --- -description: "Learn more about: Compiler fatal errors C999 through C1999" -title: "Compiler fatal errors C999 through C1999" -ms.date: 08/17/2022 -f1_keywords: ["C1006", "C1024", "C1027", "C1030", "C1032", "C1034", "C1036", "C1039", "C1040", "C1041", "C1042", "C1043", "C1044", "C1048", "C1056", "C1058", "C1059", "C1063", "C1069", "C1101", "C1102", "C1105", "C1110", "C1111", "C1112", "C1114", "C1118", "C1119", "C1127", "C1193", "C1194", "C1195", "C1198", "C1199", "C1203", "C1204", "C1212", "C1213", "C1214", "C1300", "C1301", "C1302", "C1303", "C1304", "C1306", "C1354", "C1355", "C1356", "C1357", "C1358", "C1384", "C1385", "C1451", "C1505", "C1507", "C1511", "C1604", "C1605", "C1901", "C1906", "C1907"] -helpviewer_keywords: ["C1006", "C1024", "C1027", "C1030", "C1032", "C1034", "C1036", "C1039", "C1040", "C1041", "C1042", "C1043", "C1044", "C1048", "C1056", "C1058", "C1059", "C1063", "C1069", "C1101", "C1102", "C1105", "C1110", "C1111", "C1112", "C1114", "C1118", "C1119", "C1127", "C1193", "C1194", "C1195", "C1198", "C1199", "C1203", "C1204", "C1212", "C1213", "C1214", "C1300", "C1301", "C1302", "C1303", "C1304", "C1306", "C1354", "C1355", "C1356", "C1357", "C1358", "C1384", "C1385", "C1451", "C1505", "C1507", "C1511", "C1604", "C1605", "C1901", "C1906", "C1907"] -ms.assetid: 6c8df109-7594-48ed-987a-97d9fe2b04af +description: "Learn more about: Compiler fatal errors C1001 through C1907" +title: "Compiler fatal errors C1001 through C1907" +ms.date: 01/24/2025 +f1_keywords: ["C1001", "C1002", "C1003", "C1004", "C1005", "C1006", "C1007", "C1008", "C1009", "C1010", "C1011", "C1012", "C1013", "C1014", "C1015", "C1016", "C1017", "C1018", "C1019", "C1020", "C1021", "C1022", "C1023", "C1024", "C1025", "C1026", "C1027", "C1030", "C1032", "C1033", "C1034", "C1035", "C1036", "C1037", "C1038", "C1039", "C1040", "C1041", "C1042", "C1043", "C1044", "C1045", "C1046", "C1047", "C1048", "C1049", "C1051", "C1052", "C1053", "C1054", "C1055", "C1056", "C1057", "C1058", "C1059", "C1060", "C1061", "C1063", "C1064", "C1065", "C1067", "C1068", "C1069", "C1070", "C1071", "C1073", "C1074", "C1075", "C1076", "C1077", "C1079", "C1080", "C1081", "C1082", "C1083", "C1084", "C1085", "C1086", "C1087", "C1088", "C1089", "C1090", "C1091", "C1092", "C1093", "C1094", "C1098", "C1099", "C1100", "C1101", "C1102", "C1103", "C1104", "C1105", "C1107", "C1108", "C1109", "C1110", "C1111", "C1112", "C1113", "C1114", "C1116", "C1117", "C1118", "C1119", "C1120", "C1121", "C1126", "C1127", "C1128", "C1189", "C1190", "C1191", "C1192", "C1193", "C1194", "C1195", "C1196", "C1197", "C1198", "C1199", "C1201", "C1202", "C1203", "C1204", "C1205", "C1206", "C1207", "C1208", "C1209", "C1210", "C1211", "C1212", "C1213", "C1214", "C1300", "C1301", "C1302", "C1303", "C1304", "C1305", "C1306", "C1307", "C1308", "C1309", "C1310", "C1311", "C1312", "C1313", "C1350", "C1351", "C1352", "C1353", "C1354", "C1355", "C1356", "C1357", "C1358", "C1382", "C1383", "C1384", "C1385", "C1451", "C1505", "C1506", "C1507", "C1508", "C1509", "C1510", "C1511", "C1601", "C1602", "C1603", "C1604", "C1605", "C1852", "C1853", "C1854", "C1859", "C1900", "C1901", "C1902", "C1903", "C1904", "C1905", "C1906", "C1907"] +helpviewer_keywords: ["C1001", "C1002", "C1003", "C1004", "C1005", "C1006", "C1007", "C1008", "C1009", "C1010", "C1011", "C1012", "C1013", "C1014", "C1015", "C1016", "C1017", "C1018", "C1019", "C1020", "C1021", "C1022", "C1023", "C1024", "C1025", "C1026", "C1027", "C1030", "C1032", "C1033", "C1034", "C1035", "C1036", "C1037", "C1038", "C1039", "C1040", "C1041", "C1042", "C1043", "C1044", "C1045", "C1046", "C1047", "C1048", "C1049", "C1051", "C1052", "C1053", "C1054", "C1055", "C1056", "C1057", "C1058", "C1059", "C1060", "C1061", "C1063", "C1064", "C1065", "C1067", "C1068", "C1069", "C1070", "C1071", "C1073", "C1074", "C1075", "C1076", "C1077", "C1079", "C1080", "C1081", "C1082", "C1083", "C1084", "C1085", "C1086", "C1087", "C1088", "C1089", "C1090", "C1091", "C1092", "C1093", "C1094", "C1098", "C1099", "C1100", "C1101", "C1102", "C1103", "C1104", "C1105", "C1107", "C1108", "C1109", "C1110", "C1111", "C1112", "C1113", "C1114", "C1116", "C1117", "C1118", "C1119", "C1120", "C1121", "C1126", "C1127", "C1128", "C1189", "C1190", "C1191", "C1192", "C1193", "C1194", "C1195", "C1196", "C1197", "C1198", "C1199", "C1201", "C1202", "C1203", "C1204", "C1205", "C1206", "C1207", "C1208", "C1209", "C1210", "C1211", "C1212", "C1213", "C1214", "C1300", "C1301", "C1302", "C1303", "C1304", "C1305", "C1306", "C1307", "C1308", "C1309", "C1310", "C1311", "C1312", "C1313", "C1350", "C1351", "C1352", "C1353", "C1354", "C1355", "C1356", "C1357", "C1358", "C1382", "C1383", "C1384", "C1385", "C1451", "C1505", "C1506", "C1507", "C1508", "C1509", "C1510", "C1511", "C1601", "C1602", "C1603", "C1604", "C1605", "C1852", "C1853", "C1854", "C1859", "C1900", "C1901", "C1902", "C1903", "C1904", "C1905", "C1906", "C1907"] --- -# Compiler fatal errors C999 through C1999 +# Compiler fatal errors C1001 through C1907 The articles in this section of the documentation explain a subset of the error messages that are generated by the Microsoft C/C++ compiler. diff --git a/docs/error-messages/toc.yml b/docs/error-messages/toc.yml index b07a1fa0eec..ab1f8ac040f 100644 --- a/docs/error-messages/toc.yml +++ b/docs/error-messages/toc.yml @@ -86,12 +86,8 @@ items: - name: Compiler fatal errors expanded: false items: - - name: Compiler fatal errors C999 through C1999 + - name: Compiler fatal errors C1001 through C1999 href: compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md - - name: Fatal error C999 - href: compiler-errors-1/fatal-error-c999.md - - name: Fatal error C1000, C1999 - href: compiler-errors-1/fatal-error-c1000-c1999.md - name: Fatal error C1001 href: compiler-errors-1/fatal-error-c1001.md - name: Fatal error C1002 @@ -4331,8 +4327,6 @@ items: href: compiler-warnings/compiler-warning-level-3-c4996.md - name: Compiler warning (level 1) C4997 href: compiler-warnings/compiler-warning-level-1-c4997.md - - name: Compiler warning (level 1) C4999 - href: compiler-warnings/compiler-warning-level-1-c4999.md - name: Compiler warnings C5000 through C5199 expanded: false items: From c6c8d0393c6ceb2c86ae4ef2ca6134aee5bc52e8 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 24 Jan 2025 12:49:32 -0800 Subject: [PATCH 0062/2255] fix toc and add F1 keywords (#5746) --- .../compiler-fatal-errors-c999-through-c1999.md | 13 ++++++------- docs/error-messages/toc.yml | 8 +------- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md b/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md index 47a7d928d59..23e7c7abff2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md +++ b/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md @@ -1,12 +1,11 @@ --- -description: "Learn more about: Compiler fatal errors C999 through C1999" -title: "Compiler fatal errors C999 through C1999" -ms.date: 08/17/2022 -f1_keywords: ["C1006", "C1024", "C1027", "C1030", "C1032", "C1034", "C1036", "C1039", "C1040", "C1041", "C1042", "C1043", "C1044", "C1048", "C1056", "C1058", "C1059", "C1063", "C1069", "C1101", "C1102", "C1105", "C1110", "C1111", "C1112", "C1114", "C1118", "C1119", "C1127", "C1193", "C1194", "C1195", "C1198", "C1199", "C1203", "C1204", "C1212", "C1213", "C1214", "C1300", "C1301", "C1302", "C1303", "C1304", "C1306", "C1354", "C1355", "C1356", "C1357", "C1358", "C1384", "C1385", "C1451", "C1505", "C1507", "C1511", "C1604", "C1605", "C1901", "C1906", "C1907"] -helpviewer_keywords: ["C1006", "C1024", "C1027", "C1030", "C1032", "C1034", "C1036", "C1039", "C1040", "C1041", "C1042", "C1043", "C1044", "C1048", "C1056", "C1058", "C1059", "C1063", "C1069", "C1101", "C1102", "C1105", "C1110", "C1111", "C1112", "C1114", "C1118", "C1119", "C1127", "C1193", "C1194", "C1195", "C1198", "C1199", "C1203", "C1204", "C1212", "C1213", "C1214", "C1300", "C1301", "C1302", "C1303", "C1304", "C1306", "C1354", "C1355", "C1356", "C1357", "C1358", "C1384", "C1385", "C1451", "C1505", "C1507", "C1511", "C1604", "C1605", "C1901", "C1906", "C1907"] -ms.assetid: 6c8df109-7594-48ed-987a-97d9fe2b04af +description: "Learn more about: Compiler fatal errors C1001 through C1907" +title: "Compiler fatal errors C1001 through C1907" +ms.date: 01/24/2025 +f1_keywords: ["C1001", "C1002", "C1003", "C1004", "C1005", "C1006", "C1007", "C1008", "C1009", "C1010", "C1011", "C1012", "C1013", "C1014", "C1015", "C1016", "C1017", "C1018", "C1019", "C1020", "C1021", "C1022", "C1023", "C1024", "C1025", "C1026", "C1027", "C1030", "C1032", "C1033", "C1034", "C1035", "C1036", "C1037", "C1038", "C1039", "C1040", "C1041", "C1042", "C1043", "C1044", "C1045", "C1046", "C1047", "C1048", "C1049", "C1051", "C1052", "C1053", "C1054", "C1055", "C1056", "C1057", "C1058", "C1059", "C1060", "C1061", "C1063", "C1064", "C1065", "C1067", "C1068", "C1069", "C1070", "C1071", "C1073", "C1074", "C1075", "C1076", "C1077", "C1079", "C1080", "C1081", "C1082", "C1083", "C1084", "C1085", "C1086", "C1087", "C1088", "C1089", "C1090", "C1091", "C1092", "C1093", "C1094", "C1098", "C1099", "C1100", "C1101", "C1102", "C1103", "C1104", "C1105", "C1107", "C1108", "C1109", "C1110", "C1111", "C1112", "C1113", "C1114", "C1116", "C1117", "C1118", "C1119", "C1120", "C1121", "C1126", "C1127", "C1128", "C1189", "C1190", "C1191", "C1192", "C1193", "C1194", "C1195", "C1196", "C1197", "C1198", "C1199", "C1201", "C1202", "C1203", "C1204", "C1205", "C1206", "C1207", "C1208", "C1209", "C1210", "C1211", "C1212", "C1213", "C1214", "C1300", "C1301", "C1302", "C1303", "C1304", "C1305", "C1306", "C1307", "C1308", "C1309", "C1310", "C1311", "C1312", "C1313", "C1350", "C1351", "C1352", "C1353", "C1354", "C1355", "C1356", "C1357", "C1358", "C1382", "C1383", "C1384", "C1385", "C1451", "C1505", "C1506", "C1507", "C1508", "C1509", "C1510", "C1511", "C1601", "C1602", "C1603", "C1604", "C1605", "C1852", "C1853", "C1854", "C1859", "C1900", "C1901", "C1902", "C1903", "C1904", "C1905", "C1906", "C1907"] +helpviewer_keywords: ["C1001", "C1002", "C1003", "C1004", "C1005", "C1006", "C1007", "C1008", "C1009", "C1010", "C1011", "C1012", "C1013", "C1014", "C1015", "C1016", "C1017", "C1018", "C1019", "C1020", "C1021", "C1022", "C1023", "C1024", "C1025", "C1026", "C1027", "C1030", "C1032", "C1033", "C1034", "C1035", "C1036", "C1037", "C1038", "C1039", "C1040", "C1041", "C1042", "C1043", "C1044", "C1045", "C1046", "C1047", "C1048", "C1049", "C1051", "C1052", "C1053", "C1054", "C1055", "C1056", "C1057", "C1058", "C1059", "C1060", "C1061", "C1063", "C1064", "C1065", "C1067", "C1068", "C1069", "C1070", "C1071", "C1073", "C1074", "C1075", "C1076", "C1077", "C1079", "C1080", "C1081", "C1082", "C1083", "C1084", "C1085", "C1086", "C1087", "C1088", "C1089", "C1090", "C1091", "C1092", "C1093", "C1094", "C1098", "C1099", "C1100", "C1101", "C1102", "C1103", "C1104", "C1105", "C1107", "C1108", "C1109", "C1110", "C1111", "C1112", "C1113", "C1114", "C1116", "C1117", "C1118", "C1119", "C1120", "C1121", "C1126", "C1127", "C1128", "C1189", "C1190", "C1191", "C1192", "C1193", "C1194", "C1195", "C1196", "C1197", "C1198", "C1199", "C1201", "C1202", "C1203", "C1204", "C1205", "C1206", "C1207", "C1208", "C1209", "C1210", "C1211", "C1212", "C1213", "C1214", "C1300", "C1301", "C1302", "C1303", "C1304", "C1305", "C1306", "C1307", "C1308", "C1309", "C1310", "C1311", "C1312", "C1313", "C1350", "C1351", "C1352", "C1353", "C1354", "C1355", "C1356", "C1357", "C1358", "C1382", "C1383", "C1384", "C1385", "C1451", "C1505", "C1506", "C1507", "C1508", "C1509", "C1510", "C1511", "C1601", "C1602", "C1603", "C1604", "C1605", "C1852", "C1853", "C1854", "C1859", "C1900", "C1901", "C1902", "C1903", "C1904", "C1905", "C1906", "C1907"] --- -# Compiler fatal errors C999 through C1999 +# Compiler fatal errors C1001 through C1907 The articles in this section of the documentation explain a subset of the error messages that are generated by the Microsoft C/C++ compiler. diff --git a/docs/error-messages/toc.yml b/docs/error-messages/toc.yml index b07a1fa0eec..ab1f8ac040f 100644 --- a/docs/error-messages/toc.yml +++ b/docs/error-messages/toc.yml @@ -86,12 +86,8 @@ items: - name: Compiler fatal errors expanded: false items: - - name: Compiler fatal errors C999 through C1999 + - name: Compiler fatal errors C1001 through C1999 href: compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md - - name: Fatal error C999 - href: compiler-errors-1/fatal-error-c999.md - - name: Fatal error C1000, C1999 - href: compiler-errors-1/fatal-error-c1000-c1999.md - name: Fatal error C1001 href: compiler-errors-1/fatal-error-c1001.md - name: Fatal error C1002 @@ -4331,8 +4327,6 @@ items: href: compiler-warnings/compiler-warning-level-3-c4996.md - name: Compiler warning (level 1) C4997 href: compiler-warnings/compiler-warning-level-1-c4997.md - - name: Compiler warning (level 1) C4999 - href: compiler-warnings/compiler-warning-level-1-c4999.md - name: Compiler warnings C5000 through C5199 expanded: false items: From 21f796f132c70415bc3cd3f8359927dcbee5154f Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 24 Jan 2025 14:10:28 -0800 Subject: [PATCH 0063/2255] match topic title --- docs/error-messages/toc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/toc.yml b/docs/error-messages/toc.yml index ab1f8ac040f..7ca0ace65f7 100644 --- a/docs/error-messages/toc.yml +++ b/docs/error-messages/toc.yml @@ -86,7 +86,7 @@ items: - name: Compiler fatal errors expanded: false items: - - name: Compiler fatal errors C1001 through C1999 + - name: Compiler fatal errors C1001 through C1907 href: compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md - name: Fatal error C1001 href: compiler-errors-1/fatal-error-c1001.md From 16a6cb539e646939ae8d2f91611accf14258069c Mon Sep 17 00:00:00 2001 From: Nir Lichtman Date: Mon, 27 Jan 2025 08:05:32 +0200 Subject: [PATCH 0064/2255] MSBuild: Add PlatformToolset of VS2022 to guide --- ...alkthrough-using-msbuild-to-create-a-visual-cpp-project.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build/walkthrough-using-msbuild-to-create-a-visual-cpp-project.md b/docs/build/walkthrough-using-msbuild-to-create-a-visual-cpp-project.md index 9543859eee4..7fa76df0955 100644 --- a/docs/build/walkthrough-using-msbuild-to-create-a-visual-cpp-project.md +++ b/docs/build/walkthrough-using-msbuild-to-create-a-visual-cpp-project.md @@ -113,12 +113,12 @@ An MSBuild project file is an XML file that contains a project root element (`

``` -1. Add a property group element (``) that specifies two project properties, `` and ``. (Use `v140` as the `` value if you're using Visual Studio 2015, `v141` if you're using Visual Studio 2017, or `v142` if you're using Visual Studio 2019.) +1. Add a property group element (``) that specifies two project properties, `` and ``. (Use `v140` as the `` value if you're using Visual Studio 2015, `v141` if you're using Visual Studio 2017, `v142` if you're using Visual Studio 2019 or `v143` if you're using Visual Studio 2022.) ```xml Application - v142 + v143 ``` From 3287cfbeb5055655b5430cced9a6c60513f19e04 Mon Sep 17 00:00:00 2001 From: Taojunshen Date: Tue, 28 Jan 2025 02:28:13 +0800 Subject: [PATCH 0065/2255] 1/27/2025 AM Publish (#5748) * fix toc and add F1 keywords * fix toc and add F1 keywords (#5746) * match topic title --------- Co-authored-by: TylerMSFT Co-authored-by: James Barnett --- .../compiler-fatal-errors-c999-through-c1999.md | 13 ++++++------- docs/error-messages/toc.yml | 8 +------- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md b/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md index 47a7d928d59..23e7c7abff2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md +++ b/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md @@ -1,12 +1,11 @@ --- -description: "Learn more about: Compiler fatal errors C999 through C1999" -title: "Compiler fatal errors C999 through C1999" -ms.date: 08/17/2022 -f1_keywords: ["C1006", "C1024", "C1027", "C1030", "C1032", "C1034", "C1036", "C1039", "C1040", "C1041", "C1042", "C1043", "C1044", "C1048", "C1056", "C1058", "C1059", "C1063", "C1069", "C1101", "C1102", "C1105", "C1110", "C1111", "C1112", "C1114", "C1118", "C1119", "C1127", "C1193", "C1194", "C1195", "C1198", "C1199", "C1203", "C1204", "C1212", "C1213", "C1214", "C1300", "C1301", "C1302", "C1303", "C1304", "C1306", "C1354", "C1355", "C1356", "C1357", "C1358", "C1384", "C1385", "C1451", "C1505", "C1507", "C1511", "C1604", "C1605", "C1901", "C1906", "C1907"] -helpviewer_keywords: ["C1006", "C1024", "C1027", "C1030", "C1032", "C1034", "C1036", "C1039", "C1040", "C1041", "C1042", "C1043", "C1044", "C1048", "C1056", "C1058", "C1059", "C1063", "C1069", "C1101", "C1102", "C1105", "C1110", "C1111", "C1112", "C1114", "C1118", "C1119", "C1127", "C1193", "C1194", "C1195", "C1198", "C1199", "C1203", "C1204", "C1212", "C1213", "C1214", "C1300", "C1301", "C1302", "C1303", "C1304", "C1306", "C1354", "C1355", "C1356", "C1357", "C1358", "C1384", "C1385", "C1451", "C1505", "C1507", "C1511", "C1604", "C1605", "C1901", "C1906", "C1907"] -ms.assetid: 6c8df109-7594-48ed-987a-97d9fe2b04af +description: "Learn more about: Compiler fatal errors C1001 through C1907" +title: "Compiler fatal errors C1001 through C1907" +ms.date: 01/24/2025 +f1_keywords: ["C1001", "C1002", "C1003", "C1004", "C1005", "C1006", "C1007", "C1008", "C1009", "C1010", "C1011", "C1012", "C1013", "C1014", "C1015", "C1016", "C1017", "C1018", "C1019", "C1020", "C1021", "C1022", "C1023", "C1024", "C1025", "C1026", "C1027", "C1030", "C1032", "C1033", "C1034", "C1035", "C1036", "C1037", "C1038", "C1039", "C1040", "C1041", "C1042", "C1043", "C1044", "C1045", "C1046", "C1047", "C1048", "C1049", "C1051", "C1052", "C1053", "C1054", "C1055", "C1056", "C1057", "C1058", "C1059", "C1060", "C1061", "C1063", "C1064", "C1065", "C1067", "C1068", "C1069", "C1070", "C1071", "C1073", "C1074", "C1075", "C1076", "C1077", "C1079", "C1080", "C1081", "C1082", "C1083", "C1084", "C1085", "C1086", "C1087", "C1088", "C1089", "C1090", "C1091", "C1092", "C1093", "C1094", "C1098", "C1099", "C1100", "C1101", "C1102", "C1103", "C1104", "C1105", "C1107", "C1108", "C1109", "C1110", "C1111", "C1112", "C1113", "C1114", "C1116", "C1117", "C1118", "C1119", "C1120", "C1121", "C1126", "C1127", "C1128", "C1189", "C1190", "C1191", "C1192", "C1193", "C1194", "C1195", "C1196", "C1197", "C1198", "C1199", "C1201", "C1202", "C1203", "C1204", "C1205", "C1206", "C1207", "C1208", "C1209", "C1210", "C1211", "C1212", "C1213", "C1214", "C1300", "C1301", "C1302", "C1303", "C1304", "C1305", "C1306", "C1307", "C1308", "C1309", "C1310", "C1311", "C1312", "C1313", "C1350", "C1351", "C1352", "C1353", "C1354", "C1355", "C1356", "C1357", "C1358", "C1382", "C1383", "C1384", "C1385", "C1451", "C1505", "C1506", "C1507", "C1508", "C1509", "C1510", "C1511", "C1601", "C1602", "C1603", "C1604", "C1605", "C1852", "C1853", "C1854", "C1859", "C1900", "C1901", "C1902", "C1903", "C1904", "C1905", "C1906", "C1907"] +helpviewer_keywords: ["C1001", "C1002", "C1003", "C1004", "C1005", "C1006", "C1007", "C1008", "C1009", "C1010", "C1011", "C1012", "C1013", "C1014", "C1015", "C1016", "C1017", "C1018", "C1019", "C1020", "C1021", "C1022", "C1023", "C1024", "C1025", "C1026", "C1027", "C1030", "C1032", "C1033", "C1034", "C1035", "C1036", "C1037", "C1038", "C1039", "C1040", "C1041", "C1042", "C1043", "C1044", "C1045", "C1046", "C1047", "C1048", "C1049", "C1051", "C1052", "C1053", "C1054", "C1055", "C1056", "C1057", "C1058", "C1059", "C1060", "C1061", "C1063", "C1064", "C1065", "C1067", "C1068", "C1069", "C1070", "C1071", "C1073", "C1074", "C1075", "C1076", "C1077", "C1079", "C1080", "C1081", "C1082", "C1083", "C1084", "C1085", "C1086", "C1087", "C1088", "C1089", "C1090", "C1091", "C1092", "C1093", "C1094", "C1098", "C1099", "C1100", "C1101", "C1102", "C1103", "C1104", "C1105", "C1107", "C1108", "C1109", "C1110", "C1111", "C1112", "C1113", "C1114", "C1116", "C1117", "C1118", "C1119", "C1120", "C1121", "C1126", "C1127", "C1128", "C1189", "C1190", "C1191", "C1192", "C1193", "C1194", "C1195", "C1196", "C1197", "C1198", "C1199", "C1201", "C1202", "C1203", "C1204", "C1205", "C1206", "C1207", "C1208", "C1209", "C1210", "C1211", "C1212", "C1213", "C1214", "C1300", "C1301", "C1302", "C1303", "C1304", "C1305", "C1306", "C1307", "C1308", "C1309", "C1310", "C1311", "C1312", "C1313", "C1350", "C1351", "C1352", "C1353", "C1354", "C1355", "C1356", "C1357", "C1358", "C1382", "C1383", "C1384", "C1385", "C1451", "C1505", "C1506", "C1507", "C1508", "C1509", "C1510", "C1511", "C1601", "C1602", "C1603", "C1604", "C1605", "C1852", "C1853", "C1854", "C1859", "C1900", "C1901", "C1902", "C1903", "C1904", "C1905", "C1906", "C1907"] --- -# Compiler fatal errors C999 through C1999 +# Compiler fatal errors C1001 through C1907 The articles in this section of the documentation explain a subset of the error messages that are generated by the Microsoft C/C++ compiler. diff --git a/docs/error-messages/toc.yml b/docs/error-messages/toc.yml index b07a1fa0eec..7ca0ace65f7 100644 --- a/docs/error-messages/toc.yml +++ b/docs/error-messages/toc.yml @@ -86,12 +86,8 @@ items: - name: Compiler fatal errors expanded: false items: - - name: Compiler fatal errors C999 through C1999 + - name: Compiler fatal errors C1001 through C1907 href: compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md - - name: Fatal error C999 - href: compiler-errors-1/fatal-error-c999.md - - name: Fatal error C1000, C1999 - href: compiler-errors-1/fatal-error-c1000-c1999.md - name: Fatal error C1001 href: compiler-errors-1/fatal-error-c1001.md - name: Fatal error C1002 @@ -4331,8 +4327,6 @@ items: href: compiler-warnings/compiler-warning-level-3-c4996.md - name: Compiler warning (level 1) C4997 href: compiler-warnings/compiler-warning-level-1-c4997.md - - name: Compiler warning (level 1) C4999 - href: compiler-warnings/compiler-warning-level-1-c4999.md - name: Compiler warnings C5000 through C5199 expanded: false items: From ad49542707034f884173bb355900890158ce4075 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Mon, 27 Jan 2025 14:40:20 -0800 Subject: [PATCH 0066/2255] remove image that has security issues, some minor edits --- docs/windows/media/windows-events.png | Bin 363204 -> 0 bytes docs/windows/redist-version-auditing.md | 26 ++++++++++-------------- 2 files changed, 11 insertions(+), 15 deletions(-) delete mode 100644 docs/windows/media/windows-events.png diff --git a/docs/windows/media/windows-events.png b/docs/windows/media/windows-events.png deleted file mode 100644 index d8ae9690958433c24c3b0f7c7705c31238d69b69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 363204 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 YJWEn8G&f5Aiw!a`u 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

7q7}RgaP9iR-zuIb&3;o@;v<+W|$&WKSX%C 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%0Ak`zF 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�O{T8bXfy;@lA}ALre)~GlB~SE__jMqcyW9kNg@kznmM`P%tsaV zr{c8IMpB++O#R3wNyU2kNf3p|UYd-yXODGR@HZ*@AOG_SJHnPwv64Y)}5lAGyUab=CHt=kw4x~Tl&C2s6PPt_#V zb%8&=v z$??FHQ+w=Kcq~&V?d?zZ;kx{)2+B=XfozA_nW+6c>WJG!W|_O3F}fGpQTdqgoto6y zfsqG4VaZR=$rlmTV)xz-!zvM#?o5v62K=LQu>~`U^HXpPs>0XPI%#~D_?#vm74-&) zD#PZR(;DH)Y#CYn4*{TY193h!q%m;%$hB`j!Ww%3tA1u0*Cjv3oK2y^hC@!)YCr!# znW|%!Z27tE$g>qve=Qetp%>Jhyq)ngkN4c`%D3%eNUI{b2=0?TWdUQNtJ7uHi{&M1 zfy2)k61_`Z&;S7a6KYzSA%(9Bo;E_J{3_U=#P}pra&?a{ZNU)w&Qkql1LU{cE`csCRw58PMZ} zqk?#IfJ5Oyc9vs>gWv~!L zwG;rw!Uh&r3=YOhDgq)3<9P=^rHWRvMbY5;y@D)6LjN)$e)ph3l${>7S6%gAUr>%J zt&BaZ+|y*}MCZi}D2__h8_-O=v^RJi`SM&_ zraG(vpAJ^d0hJig^ZRmPb`n_+y9DB3XazR~EzvIrq3o7wnIgH4JC3pMue96_aUR`n zN^Eb@sVtBZY^^41CFqy!B#f=*gY!Pm%=_O3$vNG2Nzujs5>s1f_Am+MqKAz|Vwruw zY3a*g7I7}O^h?!hHpI|yQr#IAHc+0ucJ^!?6kN~w32Fa0MO0E@ReQ4D6j6WoGO29o z$pfIfxB-)(`_)AyFR%R4EB|GkE=i-^4$xBoa zr%6FB2+Vf33|F`h%=Nc!$Fa6~7Ox(p@3YgCP3Q_|yHMIMsgN;T(gtT66c2kjz1{|Q z?BAXT3H~~nk)h6lAhzFGQ2t0BN!*|qz1rK(3ck56OJNDfep5#=+i<=L(ae?cTz0*k zyzx}75vWGeAV1FcIQm1SJ_~f5rkfl+_il+C6S$DAr+SkiZC;lSsSmSoD1Qw zUTAP<(#Kr^ai-)NB!TE=;@)M$Z{lHx`Mr8wTk8d)W58{BFlMx=H-}$*rW|Zxe8035 z?`2Kbnd1%A8Z^HKmnwf$)BB#)_WQJf2mel`-iOymw%woaMQ*JumnC3c49wHc%-xzj zYf*mhXGT{yhHpB5`*A@bOM*@9TtIODT`}it@8)pn3=wBy|KxJo+le|90j`nmuN;k$q(6$dswurb6&IU*E}Th&OaJd0G@TTK zE_rdh7ZTKAvBE)u#S#1g<|VtAc+4WESUNe_?voXHOgp&^>w&I?J=pDzVeQ@V%i@C; z$0V2KUT`{z%Nkcq=p!6-Yqrr|B*s31CQx+bh&09P2y&R0;R-)ks%h_Vca1ttr>iR% z%r0MU1VB)6OWNX_CfX6if4S;hveOvP60~Z0@(fSFo~Pq)Hz-Xm4l=&yna%smqa1;B z^?N_?EG>^KUFH3yBLuG$d2;3z&$$5?$9t-qwU!VDL2GG86&KO^-k+aX#-bS=pYOU) z)p1#D-ix-Zwhe}HPit5R`pRnQI!CHJ#faMM2uw=D`Vw>MvFS_ z<^B9?Ot@L!sAFxDxhCqPsusn z{_<4$A7Drg_2~83vELi)3?>m;y*RGg8<=ghH_A$po~p@i0?}Xw79^q3CAdu3ubc^- zoB>VQOM_!kDF|zqiIKE?BcTyGu-4}UfKQUB+it1Dr+xc;>+e>NAns+U=$}WA`b8rS z!UO%liY@;i4GlHEZ={c%t^jZ+Z}uNw_zS${h+_)UW3mp$Bg^-kPnjbXK^1Cnv=|er z=^6}z3Fny~7q(3RmeZ!jq$@ntN7O~_m~1T-IjEoRSj@ZMG1GjR&-Lr?62tI7@*3F* z6PEcExxLuj-ZYyzfA?$>|SqT0gfHrSLJE78$5vrf|}S z=v9dwI(_tiVXJ2X2&~#(^e}*CmFo2x$t#szbRLDY7UrwA;|}j4I8yB9PoX>7ttMFj zo}OeX7k=N>gd|H<*7&W#087wn*r_}V3(;=XK@#6KX62~(Ow-z3?G*%7V=|Qo9#UwCm-{BD`14ovCAI%E#?Aa zhK$Rl$$XrWn&mSxG&wAvaprm-dx9_zhK%+G$TOFfD& zi#=V^l1tq1*{^iF?Ja{k1tFzEiVAF@B{^-4GN&0tW`Bqu`U%f7W|vaCuCC8}KcHnx zMsR72IcyMlUkN2OVog>}D2f_iLk~s)9{KX3S$t2#(>OGKSth`jk@iWuM)VpDjI*;L?4{F633>PX<$&(RrlB|vIQ*FF<&0sS zI)A=~Akn0_W!qW*xC6L7FA)`Q9xW_32J`N)VaLLIJGwC3VscdLBR^h~wpy$d?Qa{+ zyf7qd%zpQBi^zsVr@0(*CB?M<0$LvKS%MJN?UI+=-I0U!R`%K&(u)c$eos9iG6Ie~W7*C<7%TY&x0VIZFa4)`%?AH&7&gTc5^f&OSjyrr{5 z#j$YpzTp_d(Qu_kG_$2(g4$~2`SXS#W$bGHD~>2fvV2#J$S zr_(S4qZfB78up`s>myiKfqUo=d(p+!4^)p0akhVv{@-L|#Ppf^#Q%u}fI!;aDmfcF z2rW!c3s3tO%)S2yI)Svksm+819ud>{IOkoGXC{X-Dy*kZyq>kj_hl0@fuztIrMemN zd>{K-*EQ3c>qUk2PF|?Xf`xEw8tA_R zbIk7q<}>jxK)>!I5PxX&B>XP`ect?syE$Lohb>ozYZ3t=xi%0-h6R8)fVpz`ID;+f zy#fcZQ+%ZdBu&po;eu;7K`Qu;!)-KU;9(}?I_I9D-k=Dp;{qLr6;e?CQ~P*MX`*8! zSS;6||2Od`^-vEHOpN~lu3yZFiAmMX&%29_f*^-dD3KY~|59E4bHPgS2Z9&s2+9;d z*gEwpr3C!DzvRk)H0gWpKWyFc{=lS4`Ct6YxZrOr_FtkOn*`B_h)TCu^A<^s%|wdB zrT_Dyzh<5oS`Y&QHGFAvM(%yX!;>!rk>UT>?f+c(phB|;szLGqmh{>Ett!NOAIWty zX*fwp)r%a0uu1-2P2zuF{NDOQ_Xo~;M%vy(23G6d%lUr{2N{Y8QaH0(kkrCAxF|CG z289ni)(k!xzj#Ous5H`gk@t_)SG`@DCqd33{6`I-b+}USSBJ_tN7Mfpo4yV4fKWb z%*hXHj`;wCV=g7}?tWn&Ku$>?Z1@I^5Vbp?$rsY}%g`rT0nG_3Urhf+uC9yROb7N= zzZx5pNsRDB&U8sAEg=h8wyF{D-I6#>=J+{5v^d>AuP*#W5KPY*0!AK|w#|DKtEkv|@;k-bEP!F&YNYP*`YY1SOB zGtpw;A2Qq#zh(re+<}-sV*if}ckI1o?RxjV!j0W$Cgoo=-q4&k>S!3xKa_J8?yIY~*AqsR=4JuOB(`Q7`BMxkJ>#GA>Ws?EUmL};Da!-6J%89Ud zE!~m1l8&Tju$<2mnA85KIj>HH6oCSQzrb$tNvn*neoMeg)i zFp+OvwbyCy_m9Oa#Kz)>yLCmbb^n+>ILSSm?Sx#8nEso*$P54W4)C2H+%u!GTBcAS z={RE5-3)~suKaEpD1Ee*omS0Wod62__5M)58C{%ZH6NX zS<2{**Jg0WgBUoNIY;o8a^I6)db_(tQ{N^3*(0x983_M50%?DK(r8&#&gDW-?#htIb z=~3bHBXK#wXRhBAzICX;>(h!kQyKK?$zl5cAPaK+Z} z<;tiG<46V@Fvp{?^qK?6`T22eMcKeJ)|jCQLHBOsLr?fG%DvjZh4V;mU|W6T&lB43 z57eO5W%!jyIy^j}FQEvoozqP$%lo2!D%NNv5i=|^v!sMi5Vv(JGqZ$K>DU4MQJF|Z zV6P*3CK~?fU)+iSMiO(Y#|G|di-kR2+&g~DK&x|&siL<@^&59iW-OUnN4>5=&CQDH zrjYxEx;t!g_s^y?IqJdI&_#2sD*2pE22RMv(?a$)&50q)Z)O3c*d?m1R4g#)Oi5wU zZRYtUp)4AhvCaj6Ho;f=ikW9kjnE5N^$pa1LckMo`Lq;^OIQAy!NOJ$F?-~SFGr) zf>60CKo?zb&j?0O>5a~sQKZ*f*oH3?dVAeIgKPOK<9SCxg{*ajinRR9kG%CBKA0Nw z`Tp((sD~J3X{FL0zlzGodR2e%OFYn1!HYxdUisRC)?ksDaCIanHhJIgJvS`-o5gqz z9k-DvwO$D!82|ZJeidIW)m-sv8T7c4s=EjCl;;1O0k8q%(SJOw={;{-C+4gubQ%97 zr_}lsqRspC%%oD$SpoM0PYOQkj!gm?PcoDyWunrqoN?T~guxKtDN$U|;%N}>M!J{a z+DqT$z2Bdt=c9V6lu@9fKN+kW6;?f2$T_WtCrb~pe+q7AG~U@7>)pv}CX$P@vZOdJOc;Q~w zgBeBG7(Zz*h#dnDb70{JvBI59s$q&`|B*r;y;O9zCM4WhXtZ!Sr#F2*|3yP|e|aLb ziY{}p&GP*K5yY6qcdOf9h&~+T(&Dm)pJzV^cIBIF)Bu1PbG8#=BS#*q>G}c{s!V1P zZw=sxrRi{cL|nhF*)rRf4LG_^;vy1w%6Xu?e?D6!5mXS*xFPK48ih}|vUME1zY~Lm zgWHcVliap+0q_N1mk6X{?+ErWS- zORmHffG@GDdU}oaqK$*%=1Fz+@tC}(L%^#g`GBj2y9+P1)-d(s;w7H3m8Ixh*&w?X zR|M<3r!+QO9>R#n?JT7PWK+pzYwfP0tJ#v;c3<63zgPfGvKZ&mD{N zB0LP^VQjWM!aF1+=Eft(p)(!fR38?rV_|c5r@WPb9hYA_eK+Os_ns%B$_&oNmIi^r z1b*E3+G0JyK_fP`VS#kssGR0dcpUXLv}%Pe1CzAvPikpu{PFLKwKxq?Vy$mC%33&O zTxers@+b-Jk*5i64bN)g2{~nSZv{r`9{H+;S|aQ`bFa3S{N~axb`D>SpoT@`O4fo`#&icRW=VfpB#fy3~+eM2}H|+o#n7uKg>guQ7Ge1 z>BgMcxn;oxQ8^2(Q3G6TSp4{2hT4kiW7r2n+|S4_yn!P`a(TWWZ+LrBOf)}~e) zXZ>L+Y2}@;dWhNNwXf zl63@zks!;X=4{=BA{h_*%Cr8Q(yL}9wKjT8>iPKSOSFLJIWMo<1Hpvy3}J2}>>CP<0U0 zMzEHcntPykk@+!~ri4IuItps`ZpteEBwFnDQ$DbI?J>eri0i8uxc>R_2Gs{NS7;V1 z?Xx%&x{|?Ml=S5ke`%yf>yDcB(Hdmt9k?v2af$=!guKR}?yYXTv2P`|E;Jaw>OE=8 zj?PvoK>xX<2Q(JCvL+D5b2mz@+Rjx_7Ut}Ar@k_T_+9Uk1oO=&Y)E!~vfvA|-2i8; z$EbNl$i6CmEVL z{&+_^_i9i|R2x*6$lI1AccAV$UDlxKn{12X9;*jz$Yuz|4a@|_8vL5VMZwea zu?uil%HA4`~{?*e}7K&BALM>EHXeQ5qxy9i(!%-~aoO(M*$eo!j5MxHLn;XTn z97xhi|LJxjU2*2VnePFSv@qqsCG!sQW><7p>wqx1Dw3Dxf}KDIO}7_8d&UnGr@%f( zIjc0hv6U1u9#|JqviC{Eny0juRE$ynqvXuNlNwQgHk}>%(@5Esw$O4*m(z}+i5b{) zCO@4)m{Q?Km-XD7wUX%hLR7iMu1*@sbsTnDsP#HA>eT~@XmPu-TV+qk?QH)~M@1BN ziuUG6-nBh^KjXNiUnEOi0FWcT+@1`FA(I^A%;2m9C41ULl!f~eifGD4338Jxl~a>c zsY~vWAeLl^ZP3r^hUXp?p!y~eF%_T_X+>Sb)S$J6Ol~CquejdSd&>+30}IPR;wx48dmWp;#$&9^Ax1_4MNPx6csP z!FyCjO;fBnD~1Sz%W{*Gr-j9tVwQ%22Wd;amD!2msf!w7s?DlcmP6co%{6Sk-5d@a z2jT;)unh(+%mMg8fWI$kx~y!Qb{Y(*2i4aV=U^sd8OzihE}Dt9X6`ka{BUvjp(6fD zjm{3mP;JBDW~X#x{Tu==`%tkY+T~&X4MFOAn4+w=Xa-$;e=5u9c~C}Hk*4~S-j3tG z1y%q1ypaVWXUG9ne_HKSB}y-dKkY;Vj?!UEpQi*>5mhUf5SwNjKS+Br?;`jghPd64vOq|+`q z;SQjq(&Vx4)WO*;6*4u^)$d=BHPPj9`(+#Bwucu>uMm(fpNl2uCW1k?>&z)PAJM2_ z+z@UCME+fK)JSI9aU!3kP4-Q-H9L56IWTW1kRgpuhEJ;qWGHm zh%H+Th5x{2A;S0i1K)YM;oW8T5uh%xyJ-DagEgVE3Qrb%-*9ifAtBA1uz>gu5}ZKw z>DJT*Y9zsVGqMko+W&Y^|Glak@R;4*okw5zJJlAKoDuApdM5%r(uTR}*8NMVSntJj zmvm&?ZI5^mqQqTNKQ8IKUQva=5W7-7rsg~Nq%q;e zV6MwARi8ABq3B66>Lj*U)9ERe+~wE!P3GjP(v^h@Z^glAN-DN=2?1Lm0E;hrTvhMd z0{>@q1~nzUdEyqv;%B8_G_PBRSatwqIo+q$sPGf~p|q{BZ55)D4Ls3><({7zN#;9i zl3Qx`G?0h$Gh4^F8a&_J0bA$VvCNqGfVT^-;YL3@9OF~mRK#4izqf#i4+;A|UFXxV zZS$NeXR`mrrFJDla1o96ag9siA76xmBl#E=zTltB7{okvNXE^HR^iU4yzjbT<|Txv zX1nQ}e~!Va;e>5OHX<(S_pEafBq-_e7K{P z7%hLTM&!Z|W%&8NJCFRJ%1FXk4DQOBpWCqg8P0kW1vp&$QsYfDcg_r(s&d7y@W5H^ zY0qAesmW3SK0P?#3yJcfXz*GNzOuHot0w|wW$@cm$NYFop_Mz0=sClgzq!YY73SXQ zqO9obU7GGC-2{Bib5YxIuZB^vG?0CwL*)+a(%?+-SlIe;F==&4*V88Sn&p(gz2Ti4 zU)e1MKl`e~oX1ALX0$Fe(2dP(q0BnWD$-}mV~`CWF>-s5S-rTiiA5#-W|B< zy>(Q4D%*hfy7zR@!e=q7_orYmc)$$e@mZIbiE=(F&fHu#pz>M=$0Z7O9pP<-$|x*$ zN^X$ZxZY%g=fR)EQfctM(f4gv%Bx5(b;S^{tLw>nlU)$;;ztRQgh)Q)w{k%uZ^tHt zaa^W5n#|rAw^llj)e^GaCE9Y_&nmZCo6E+Il$Vb`V^k&SPBy`X&>k3ZF@!e@z2#E& zdx*aRXEYRVcul4Z7UA|f19dx4GKkcNXDuAnXS5c{{*solg6LWqd@eV$k;g?IE%YH# zT7jT7nn;Zp^K9&=7qHb3oODB5xJpT9TH1Y`ho=CUR_0mFX({=xN*yRuWLm*l&dtwT z{mo-_VcRvRpsIS-65zEMCpqMNU3zz=BK55%gQCgFdk6QzaDUWJda{U)qhjeO>uR0Z zcDS@o6nr48ysg(`sN%FtCWBGvS_)F|CK)bsShKevEp(<4KXN&T@}!q*s3BQ#Y%9f- z5^B`?4I$a0e`~Q(wONik&?ZnEY)cB;O>;Zz2r68}&(+q|I2`n!@iL$8o;=@-kgyA@ z%(1wn+?fMu^RDBXOC=C<{BW?xBH-FvwXnblO@=5GXi(5{S&Nqv=iQ5OaD}h5J&+i$IL+nK zU^mZ;m(XI7Te^%4SvV8K3T`_clZxDb-R+~STUZ!+fB|B(*W1NEfSj4gMty#kwtz^) z=;RwOHa3yjL=#D#n@dEmHMG*;_vbant0+vhZlE|8;^X#?-j~2MJL-I7@eAqrXi%sI z&^@lV@X^9-OnlwnUX3OYYC^P9Agx$MyV{ntj-kMDgF=eH4F?G{TQ?zPgyL8SQdU*rLRJD}-!~1j#i8?8#-*1NJQ6>__wGPZcz!jt* z?pAMnuCV*GMCq$S3b7Y<0qbxr%8w4&9Gm5sDbt>X!d3*g?X}FhO)S8Mj2Zl3gWux zE?A;bafIy_o;9l)sxRlGl8a(Ed9d)CWPVBm^r@F{qSbz*UgM6Tgdy*2{D9Km7*Ou0 zIJ|{rZPpE)F{Db$Chr{b_^%i0_O>M_3fin%dOCY-W^3OaE%FeXPmShaalUJR)p+W3 zbDg~NQ+(t*#X8qz&e3(CQ<{(Rc|n}wYvtwP2U<$tU$grg5j6(8+I@ZAw!-fbMFw0f zz@C3Vgr(Sz(tIto+T2b*L$qiyzmLnj-eoY2S^W#!hWMk248bNZVWcfwAR54Sd63Dn zN+K$-2Z8ScuYSqjEtEQJCi1>nqhoQibIxJ(gQc&`(zAJ)$#~wv#&rYcsZi5mK!0*3!3 z5Ya^QIKnJ0KE5lgu5MX0X=5YFVA%58xb3&Gfspa@+^X_y_L!~9p~H9&tV@ zHP9ySOs;Vis|PEXY@s*m(=V&Hni_gG-%rPKxIcJ_#7{f*8S97J)Tk|DTnT{Q zYs!()>qJI`9d!z_`lX4xS1@}x`}Q2l(qFxOnS)M3B;GcjAJ9eP3Ek>?A4T!J#4+of zB{{R5lahjh?s(_<=qL+0Ii*QCN9MzchQ@54rA-F0KINZHRVK~v2#r!NTw;FsJ;pBO z058M3`>BA_4mj|x0kXJcAeLk-%DyeuE2lyeJw?T^j?8DUe3f$NLFpGn7IX?+ugtMj z`j79o6yi|N?ky#{yfAQgx|*zFCbw*nSV#v+y@jzZcOy08ioBgDX7?z2Ru;aT298ca z&gsG;f^|nI$q_F3d@9Q72QN0oe}_NsyyeQ45AqQwr?F>9)62yBg;PW7N~t^%t5P_B z`u#im;cT`EY8(?pedkCZ?%*+dBWfnEan-@}GMUaUP3h zVbP#LLd1MozO=yi5e$X%9aN^AiwMKn9?P5#^cTT(aJWHqpE5X_ zAKe^s)C=$x2u{Oqj_C5rzRs4V6d(hf$k)zV4H$R-qX1H(5XU)X1d$mkmZIEM`0>Dw z=}tKNp{)7#QBma`ocjS*{`}o%Ps>tv$HQhj&|rz6L|#Ekc9r$ch$0&Sgst{4hp%n=4~I`R5YfN)FEh6q8lDUTE*+Q4wnEMv7ncu3+}PcWm?Vb>GwOPt zJ8pI$;-4Ku86^sME6q@u5bg`-AX^Ic*l1%lt|S36Gf};onLbpuK?gAZeSo15n6b{IKQ+jd6bYU z+EAA=Hv43w1wNPXasg$dXJEAEc88OTX}O)$k)2AF(deNHitTI54a^u8Ssj!MK+@g1 zt0xFZHIPudq~D;~3+r5bUz+)vd~QfsG=Qx|oqpk!W40dgp%Gn3RUkKMmg`G2Rdm!KWZ&Y3>(&Vb|Gq&MdhjA)Hj z`;CZZ*_pjrGqGoPkV`hDDJ|X9Rxjd*#NzbLcy&ymttZeVlOtZ&AawMbDmfjvIYw9`M)!D9LK%?kdV($Cu#%2j7LDNzz&B4K1PDAr!cC{%ha%LqoX^tK7 ztRh{g-l;m4h4E&}#UV?nCoZG4c1M*yL51x-YSOgLTA`<^bd5(U#^Q;cj1CDs24UQ$ zI0`l|=>b01LGPwBa)?^-(!>e6;ZsheIs!8^AQs_+{Z@ zN+vaOqXXfVH+>RA86$R{H)^ftT@L(RCn3DZM+{PNIx1^$2V(EZcudGAQcl~~JT?78 zvt_XIO%HMDYu6lAxrF(g!E-O+VGERssZ#ypB`s9^`Ogc!X)b%tXeFtg;ZY!kJ2RkPNv<25y{cWnu zy~`>*Cv+%XAz!M+)b1?BDh@hR_FPLo>87*tX%@c(7`U+2z$L8e&;y#)f&y669Ma#- zHa^N1XC(b9j&#SXn*FIphvL{eg}ci_rXYGq_6qji#oZy+`SS5F?;L((ZQfBmj+Z+* z?($fKnfk&-usf8^a-7}7rZGtKIEbAZ5)(~UlzcBj9k_F;XBK8a-6OpwlaLq`R@c?C z8Kz!N8Cf%qq;wtyTR8(j{tCfCq@$DT2IPx{BbTu_%)s(_j_ z5&yeh2qb)1$g&49Md6#rD-dsyHYyV3VA;iv)5WD#yBrgvKA$FV}c`;-& zsYNV9niHGmBvc>d=vRigK#JdNsWc{OKG!O|THuIqr5ao@>2^h=orP4}mUJ(*5)sWS zzpu4+RlT$Sq^_L@$3^r41CXFcG}a5QzfY%EXYjjQ>f&z zexXX{wy8M2!!I}q6mgAHOF>24DY2Z{wU>K~JY;0~%$E0CJ;5)rT*i^pwKiOArO@+3 zCJ=;(^fTRUtN!eQalnLc)RObbx+O}bEJ?AXB{$*kI(PBm;I{=H`RGiafj=K2&e-C?NO&u)>_QWiUNRzK_4#Q@V3p+?a9I zWielPj(=xQl{mr?X>%2eoEb1?(`U)fd|!{ih6Xm zqDy9>qsY+{bTrBwD(0D^6ygjFcROQ&F;yaxc=#o%_gK;zz5G`iV<>;zd zB?%DsuFa49EEfYxZ!r6+|42pIgz&AKpMsu z$5bDb3f45kk1Q4a^HFJ1$jP8Z+G;;Gb9q)+0KX-Ml%}j;?NO0 zGu0lmFk9Irm@fb258aO`dHCd2#n>%Tbki=V0)1c)YOocrAggsUZF)!O3ASh){XNvmNJu8usXj*S+_@UjE2nb>|Pmn7TS zKwS~9GykPiLXmKoAah^o%~J#tSNdv!cehq+LP1FSMeX?d!19W3Jh?Q%;bC{y{1ZDP zx_zKO0UonY2R`FmB7{XSHNM#i8k%+rIc` zjCI0&t~W}HUcNpfCR2m0aBt?VOUU7t&RPlvQJ;$&KnbaovMGZ~;xfJWvVgUUfG1`v zbk=4j?5@h=6%%Owxq!eGHjPO7dspdjj}%r6K`0FBC(9p`X`1Po0MamK@vdmmJNuEF z1|6DImAlf?)uFSGGtNxb&NB>>pWl4-rIs<`FywscCr{rL*1#0XuF1#uHALz)ofk;R zo?(I9r_QpnviPm$u|DpcwJX$LuBenBj?2$GPEO9+7J=1!QcPtS6#ul{m~NQQu?_e` z)b{&Q9A5>2L1?iiH=rkY*FN1W#qUlO3xq~Jc}vMD{iwv=N5^SmU3PgW!tO^-tDdXW z`is;#UfRroe;VqDtqHo_j~7@!PHfbCfn`vDH)Yr&%9H-bE-3*2MhGq3=6V*0&C(_| zfr$Wf5;&5nq=_X)%zPdFC11Z@#R?~&3+&tS%{~y3=%mETBDxNx4GJC{*c?+pc>aZGe!tC!>GzvN z|MVuw_kqt14A;vw$bzLNg82Y>XWtoytc6sMN-pQG)M@k~t#2V4I#t>#a{^ovA&GzfePaOSA_hv0H7 z{BE;U*X(v5hKrQ>?SXRtmO_r=Z<~MCkrQK1(qUVMhW@3n^ceC^d&_G3y-F*-6Ne9t!Uu?>t zPU(!`_Q3SrABW(NA+PxTJ`BtWOII(S(BK)&J}EA7bhCzu%juxCk75GzLesbBs~M`p zOz)S4RGp}~7)cBV7R>1veZpm2hjtt%axMo(#tRi6^AQm%ucM!O3~yM>CRQD2qzWIr zxv4)pX^AWLvgDs;O=>&L<=MEMHE0XinNH2OJ?YyKgRR-kv$3o zHz3Ct4jvb z`Sk7IH_H2xmx$v=r^f1BN@grv{L7L4-2<&e#(~VOsx$SP_Zuobl*86K zw@!;#co_c_uWKEFP4^O=r*M7N=7)hLuLzOnaFKaVA3kf8@&`B3<<*`9f@g~%ZK~$K zV5wpBDSUR-6o#y=ib^(M4~ zA{%MxVEBzfVKNWXP3I7;eXvS`?6fTw#ycrDD{R+8@s;G!FZ3d!RepUJB}ezK_h?lm-$255f%9 zjti7B!UdllD>o8X?P{b9ZcVYAXEV(>U191gfL6Jh1mQGppIJ`J6f4!~9+YaCw~N-8 z?Sm6i{cT6|E-QAm>}nkjR`lruHOGo{*&K+pI!v(=?O&Q^SS%&^HS@|3*)yR~GU@eQ zKm*h}`gB@|(mk3a*A+AB3e{CL?!3QoNd5JoUd4T4m~n7&B1iN`bG-~`Rp{-SsY$&% z#~>gGo3!Yjo=*Do=~1OopD?1M)Lm+4M+dmt0;l!v1SMNMBG!cmOR^r_^2}V?)hb9g z;Vwj&R5N%oli%HAyha7r<+Yo?yPxqdxDN?r6VMwk#P+guGOm=P1I)ZlE~d$mXFrtx zu;5B_15aM^X3x)b&nV?5Q2MOxb<&Uegw{FBQIn~KgfkHu*f3V$iB*|-6R)8KRS^=~Bai9)C^@vo|$p>>7Fd`YsjJesF zGy29;cZJ@^%w}^r(5O-HyeS3wux*W7idQ^*qYETJ%k|qw`m@dahvIlYgn~FQr%6{8 z49v#D^iQsQ79Odtf>P0dG@0}7JY|trM#9{ECjg-rmY^^mefnMQ5V}d8@hr#JuZ+vj z+wpB~^qjf8%lqvuhu^D;P38C$ZGBf|CS$zx&|VC2>Y#B#BDv5Fi}U53tEK_TDaqA2 z?jRh~>Ky$*)Z*0oBzg{l@rANy#2AgqORmJVw5gYzfeD?{n2TSZ6Y;2$mc>!53WIGO zDX4i`s1lP>m3R(9jOnPn+Rz7VNKVDeHi|)FJg7F(7`Jw4jQ5`yxSHK-#C$C_J*+P4 z<-csPs=uOJ}YvYg8T7;gq z>|wUp-6P9U4(`BJy&&0*x|X0U6x;7qQ!;Nb4BWMi=5wOdT?fO~O6C*=)>$|i1f-lQ zcB=N(pBsbC_qak5$^JUgm48}xNm{>nlnN_4W}&I*W0V>D4UIbw+H*+TBe(@04!o)( z6Bx{qz8=|5h|(a`c8*SaPADM=hhVqB**g$7Tyr|m()n#Yf(T6p49BWoQLL$%c@iS7ogBa!7 zvYwcKvt0i=&J&D?6|dIKqB8ZNAuzblRuT?AM|iMQNGfaze|r`o!}mfTNfQqOaxf9_ zMmZK=;(tI-g2>ceW55{YCk5PHJj1bSxEPA{0G|lym~oDR#A5ru+hT-LcGE(*T*OIE zbAljRw2Co-7FFuMF4u3^w)@*HyTS4C+EofZzbba7{5!CV{@8#(bO{HH?v)H+Qq{^) z3%&n((jj|`( z{y?YyhJKHc&8QL&{QjRL^r|9OT5MzY6oc3Yuq+Hjm1TE zyUf6RWAmQtNvHkMN&EaFj)aV2>9X{X>c*7=@fWV9gb(IsmM^EDetsEY&vJU!L*|bq z#gp(wT~!uwQHgM{gH!ML!0UW$$dB}oC_+Md&0MZ{QQWNVy)o^_`nadR4x2p@6!}}b z0qidWhqkE_B<#mj*?VAD$1F{by)@TZ$;guj$|@n|#oN4gvxeXC^-^ zSjtwbZtT12e(i$-?5Y|CS?Ek#e8L{DUnrF?QwLR*$+n>&8i2Yrn7MG#O7r0D3PI^+kw_6* zHO)pwJmnjnME>Qb{lN`)G_8x!&e>;F6cEkrak|)k0EtsL{Jw=5>%;8lLe!eCJFfca zfv?xoW*pgYTc^niR__PUsdiL!nh)r|z4(|crEBy?tUCz|Zs9Ht3 zQ{ADVjwqCLa3isW&s(ANR<98er>Ye6c@of$y94hA16~xVN)pq!XZdsLJAs}U({XZO_Xja52R_x(t$lwqY zDUM_0s#E^{^nRY}s{<)$FND;pm;DCrmT?rgMKkV;Zf#AP==iqQX5j-n-&j*;JjmU& zySH;su97R)Z(1ZcJmLf2Tzh=7J7kfS<=Ha(;cIB~G)`G@%8`>Jr{S_7=3y6Y-~4^_hTGh=7*&%fwNn)tO~thsR6jql!El&{Fuxh0H#%|Z zoo(NnV{ObU9*sFZ{jsw7*;|y{9+&sq2eOxMYS%VW-o43xdl2x#aoUQ_!D%EQDhcVG zthU}p`Xie~G!{o@{|2{MKpdTm>&0nz`E}Z`qMyg2rXo!gT_W$Q=xihT-e4#S6*qJ6 zyz7Uxt+ln)u-bPclY^UbdejP|qXE6582Yf)UodOw2iaN5)n`HC2KM%Blu?TK*VDi0 z1%^S{j>*ON;o1IILy>u!S?F6v(#Kl+b%rjgDVrG9I{juYYVIl8S_&{z)uQX(JNm)+ zE`Sm9A&0Tsg+5xb*GPj0ybg2k0*jB5J@9h_KI$U9Y*#bkm4)?Snt)@XYo0{w7 z>4Sxuw}$g#Y-K6C`(`_m*2ccAiR3+V6_+xmoP_?B%^%F-50~ySEvEQpW8f%Zx%a#= z8;yn%ZprnfCSPW>l@cuIxX#$u-5?Bxtp{DKq^jyjrvi@r){T8@2avL%t#5-sv)k}y znT~}u8SJ5j0|;xEW>2RwNo>1nhI#)BUz7o2<}TJO_2haqzr2Mp&PdB1ZZFpPW2JBD zU=^)F=LW+@Mp!c}tzy{TE&1AA@MD3I#@%NA-(Y@}1mdi$+snN%l^R8-tCJE#Tmc z<+Ia9poy>Oqh1k28?uB*_F@OT&^b(!{3(o?bmP zw{OuF8U}OMsq70DqPTQRMQ8AouB?_!h5?NV#rLUA=U!OSqE@i+%Ppu0T&!cigL>wd z%FVeIX!7$Gc*2&pu}o)8c|z&xoF>Bf{>?LP9xSI@yvY4qK|Xx69A^bO&lb(jQjyjb ztx~+QriCzAt`~Q!2{ws$OPcl;@KHh|a_5VwZqqHryg_iUl&6v$xCn{th4Oowb{;v? zB7GMVj`xS>uVvwSj03Kjo2A;^*Si<%*E)*@N@sYguQS^pWNNw1T~pbRB3HBu*_dAM z$!JFHHvzV|4{#u?Usa^|5FLd8&Y^m^x<#kk`}|ZFWN$Ex?gk z*46xxn+8AhZ)7(6ae>fUvH~L*iSI&<>2ZD}VQ5&^{JaA8-DFSXQ<*_6kcbo%mfS68 z#k{UH^c2Z8<@lBO=z|#DJ$~Dp%K>Bw#I4){&`l~O4YQU=O;{Hs_d<*55t56B-5{Pn zJPZTX>aENk4wCAKgTao0r%iXaLW4OuQwxsNtge4<0HUM25+-BvZe6;tK%xk^&1Ke<;qWTH_G8G8>#$)7|s`BFRZ75qW0BSNdxk}Sodn6ZVyA00TEZ^y> zGkHdm?w5?`RtcR5&oR?0;e)(oAfqT-&n4nJlAT%Wl}WCe^`Ad8TNVprd2i4jo21H1 z&ag~H>a>^Sr>-pX3VvCZ(vouv@AfyP3ILC6t^fQ{vFBJ41^-m4>@Yj9bqJYun8@}% z%m?tpT4ez#UrNi)^DSZU^>mD7`&vbmn^Zl+<4`suYV|LruS4y0H`)&?12VvI2bW!y z$r&If^=*}b$mfWQq6>san`XF!l<2f)T=*j~eMX<9JTg(!qgU}1SK#{*W1PSCLy;DD zIYQ2>fi047%T89{SV7uaty4+h!Y4l!R=(ZJVgifvE@_fc-CS-+% zJc!fZ@a6qj2$0IaoO@6@kXeEiOtGC9QL(IeDuDN!Ni zTgqb$lUmL8LRhn5ww=aSSLLJ$UJ6Zn@muSW$j%F`J_50Qg2)iWuzDgZqN`gIMzsw9 zRxaiYH;*B3uFo%KN$wbb^8Sr@;tNMW<}agTo^Yx6-6F+X7K{4r`4ZG~#hmZZynn~@+)+0E?%d|=?$S(ZOcbI zaphz_>3#$D`Nhg|Df5!vS?#EJ|a8yCEP(snuvbOGfm$r@Uv| zF6yuAH>8QJNU6*7vZ54N8t290Hf%}jGC`FB-(MONsBZP-J94k8q?p`m9)ZW%3ncmg}?QKW(#cL61AB#tAf30?4dDPW4LW*nnzztH5iZH zBiL5%hJAmNyeO|pG~+uRAZOyLppL~;LSXp0Nd7cM&9Khgg`Hm+L=O$yL2-OoFJ*D^ zrVGsQ$5{`v_Q_ zH_@R>dj}ZxTe-~*b~iM$`P|uKq8;LDP@;oUO-ae_-g=ikD^%M}oRqif#F(WU|2J$L zi?H{qCv|zf3Q7W97Mhu1Xu@jyC76>*^fs z-hN8%SEeJySzd?AUw9%y9rn^CP%9vS3XeS(`fB{qED;+tP;w9Qa_Gc4{0n+fI@f$p zF=?H$_ne?^>YWS5-C6g%RfHR)A4q5KzP20yW}2YN?>_5drHGZ9#Tv--yoIMF-)9rq z=jq04_kd5-!oC?Zdcqb74pODKt6cCsTTEQ=B196)NC46vb$iH#a4I5s_n7AD;+*ZS%*?ZW6J%p z`zt3~5oiNO@m?%-mjmxG=4n-@@hZ;HaB)yP%g|5z^ABOQNH)WlnvH@6!J9s@IGqv| z>G%`o+EMuop4SHb?^tWiga=?3Ry()Bq^c#7FeaW)mdE{7UYy}7B*h=9oGcs8=m+~) zl&)v5%?q7ugfy^~6kn^eniE!H=HZJP*U*_4C<9kZx%_ORcW7us8fQ-;Evw_}W`m53S zdgt&Q1$(6rrjQU%&lEjaXDdpD>@TC9>!m#}+WB5~mk~?IS9obfBisCNk75N#`L2{z z)6kj8R_Vm_MyQ0fF+DW(RGEvnu|?a+L&P{FtF!GbBhb~Po+g!UYI2IV-|u>pZe-9G&MMKu!CPVhsqDKj-kX8MlTIa5FSIzXot80d z?CIrZZ>t#dT&%B}Ln<4W;m^+=kxpGvH`Va6I7S8znxvH`402QY4VYyRyPFuVWq^le zQ*DHKpoxru`!moUzf7By6Dg(0@2GU%cOBETe>Mrxn7@5NVSeijHbf9eNsem;McDFs zyw0A+p<&5rw`)>#vQT<;*TobA(y zf4p4g+bfK7!crck(K;L0c}cN%WHmx?U$k1| zgM{ZbH2#V=g;-m`GlkcO^>pe%_C26r+LXDOcRIKH_T5x#YrG?IZozoB>YQ8RYr`Zv zN<;G<)d=Iw9t4b8ybBc&2GJ{pa*d{JI}&lbAGUtk;~?9H3zGvgf-><^#)PnNRjjb2 z-Z++Ck()!C{ojXU~*$sN}&v-R2d3kqv z@smTiPtQv`VV0W9bhcqMASa`(cF$$rxzltSg*&^@r%BfN)Y0;CS0>*aI__l%XIrL= z&6BrXom(-QQwBf-M6)&XcME6jg&S5Gkyi=Z>E{JcTW5M$HUk)BvF@krFRZQwB13IO z4Q*X?yw3~FnRT%v?~F*J%zc&}&7LvD>*WqDA7~`}S<@+oAW)C81L;^ByCNcr@YG@3 z4p~UZ?iWh|*OdTs>17YS_z=4IT3`JbNHS&!h&OvJF@#AS@duuVhS6MuoZj|C5mw!!h+k(V-Tk^@1qjeV0L*% zz%sul+%@)T9L`|iqA{lUz~ejffZ11N?!sAr=jQrI5!@$0d3-Aw;bv?(gCvSLUk|DQ zSSHUZZypM*XJG{ad8TTuPSq#_H3tFd;M7`3I@lImuof3-^O!;9FO;yP0)lF#>CeoQ zD@CURYRfT*|K;o7aq8#>gek}^-908B5htCB^EzjD{To?`8U2wK4?*qrGyTM3=MMyf zes+&3|5=s%GxY-mL5Lc`j^{32({@QWPm8m~{TG4FcZ^Uv8CNpN7PyE>PHMdZivIV2 zE`ATF*%G2ihsYvOJmD$(^Md{}Bt-N(hKhuD&BCC7NI3XBW&Yo^_O=3Ii9DKi`k*F( z;J)=jh5sHgCNp9*P6Xr$h=J$CPH_Kik$?Z@ofLv_w+a2f(8&k^Hz36#5+D9I%DV~+ zK_)9ASb1q$sffP?LVkOeZJEDW@x1>VD~`yN@O(duc#MLe b!I74(YPG^2qsBZ!{F4%s6D<|i`}}_ZZQ|(J diff --git a/docs/windows/redist-version-auditing.md b/docs/windows/redist-version-auditing.md index 561d155ecf0..ce37cee07e6 100644 --- a/docs/windows/redist-version-auditing.md +++ b/docs/windows/redist-version-auditing.md @@ -1,7 +1,7 @@ --- title: "How to audit Visual C++ Runtime version usage" description: "A detailed guide for auditing Visual C++ Runtime file usage." -ms.date: 12/2/2024 +ms.date: 1/27/2025 helpviewer_keywords: [ "find redist version installed", @@ -19,18 +19,16 @@ For more information about the versions of VC Runtime that are no longer support ## Enable NTFS file auditing to determine VC Runtime usage -You can use NTFS file auditing to determine which applications are calling the unsupported versions of the VC Runtime. - -This guide provides the steps to manually enable NTFS file auditing and review audit events. Because there are several files that can be used by an application, this guide also shows how to use PowerShell's [`Get-Acl`](/powershell/module/microsoft.powershell.security/get-acl) and [`Set-Acl`](/powershell/module/microsoft.powershell.security/set-acl) cmdlets to update auditing permissions. For more information about how to configure audit policies for a file, see [Apply a basic audit policy on a file or folder](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/apply-a-basic-audit-policy-on-a-file-or-folder). +This guide provides the steps to manually enable NTFS file auditing and review audit events to determine which applications are calling the unsupported versions of the VC Runtime. Because there are several files that can be used by an application, this guide also shows how to use PowerShell's [`Get-Acl`](/powershell/module/microsoft.powershell.security/get-acl) and [`Set-Acl`](/powershell/module/microsoft.powershell.security/set-acl) cmdlets to update auditing permissions. For more information about how to configure audit policies for a file, see [Apply a basic audit policy on a file or folder](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/apply-a-basic-audit-policy-on-a-file-or-folder). ### Manually enable object access auditing on the system Object access must be enabled before you enable file level auditing: -1. Open the Local Group Policy Editor by pressing Windows + R to open the **Run** dialog, then type `gpedit.msc`, and press Enter. +1. Open the **Local Group Policy Editor** by pressing `Windows` + `R` to open the **Run** dialog. Then type `gpedit.msc` and press **Enter**. 1. Navigate to **Computer Configuration** > **Windows Settings** > **Security Settings** > **Advanced Audit Policy Configuration** > **System Audit Policies** > **Object Access**. 1. Double-click **Audit File System**. In the **Audit File System Properties** dialog, select **Configure the following audit events** > **Success** > **OK**. -1. Close the Group Policy Editor. +1. Close the **Local Group Policy Editor**. Alternatively, you may use `auditpol.exe` to enable object access: @@ -39,7 +37,7 @@ Alternatively, you may use `auditpol.exe` to enable object access: ### Manually enable auditing on a file -To monitor which process accesses a VC Runtime file, enable auditing on the file: +To monitor which process accesses a VC Runtime file, enable auditing on the VC Runtime file: 1. Right-click the file that you want to audit, select **Properties**, and then select the **Security** tab. For more information about finding installed VC Runtime files, see [VC Runtime installed locations](#vcruntime_install_location). 1. Select **Advanced**. @@ -54,19 +52,17 @@ The audit rule is now enabled for the file. ### Manually review audit logs -NTFS file auditing generates ["Event 4663: An attempt was made to access an object"](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4663) for each file that includes the audit permission and that is accessed by a process. +NTFS file auditing generates ["Event 4663: An attempt was made to access an object"](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4663) for each file that includes the audit permission and is accessed by a process. -1. Open the Event Viewer by pressing `Windows` + `R` to open the **Run** dialog. Then type `eventvwr.msc`, and press Enter. -1. Navigate to the **Security** logs in the Event Viewer by expanding **Windows Logs** > **Security**. The results pane lists security events. +1. Open the **Event Viewer** by pressing `Windows` + `R` to open the **Run** dialog. Then type `eventvwr.msc`, and press **Enter**. +1. Navigate to the **Security** logs in the **Event Viewer** by expanding **Windows Logs** > **Security**. The results pane lists security events. 1. Find the audit events by choosing **Filter Current Log...** in the **Actions** pane. Narrow down the events to **Event ID 4663 (Audit Success for the File System Category)** by entering **4663 into the Includes/Excludes Event IDs** text box. For an example of a File Access Auditing Event 4663, see ["4663(S): An attempt was made to access an object."](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4663) -![Event Viewer showing security logs](media/windows-events.png) - ### Use PowerShell to audit VC Runtime usage -To update File Auditing Permissions with PowerShell: +As an overview, updating File Auditing Permissions with PowerShell follows these steps: 1. Define the [file system audit rule](/dotnet/api/system.security.accesscontrol.filesystemauditrule.-ctor) to apply to the file(s). 1. Obtain a file's security descriptor with [`Get-Acl`](/powershell/module/microsoft.powershell.security/get-acl). @@ -125,7 +121,7 @@ ForEach-Object { ### PowerShell: View file audit events -PowerShell provides `Get-WinEvent` to obtain event records for various event logs as shown in the following PowerShell code which lists all of the Auditing Event 4663 records over the past 24 hours: +PowerShell provides `Get-WinEvent` to get event records for various event logs as shown in the following PowerShell code that lists all of the Auditing Event 4663 records over the past 24 hours: ```powershell function Get-AuditEntries { @@ -182,7 +178,7 @@ Some Microsoft applications require legacy versions of the VC Runtime. For detai ## VC Runtime installation locations -The following is where each version of the VC Runtime is installed. +Here is where each version of the VC Runtime is installed: | **Visual Studio Version**| **Installed Location(s)**| | ------------- | ------------- | From 313d3027866dba29a8590781949350d82ffe70d9 Mon Sep 17 00:00:00 2001 From: Sahil Khan <31702986+mskhan001@users.noreply.github.com> Date: Tue, 28 Jan 2025 06:41:24 +0530 Subject: [PATCH 0067/2255] correction in variable declartion (#5160) `int i;` is a definition of the object, since it will allocate storage. --- docs/cpp/program-and-linkage-cpp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cpp/program-and-linkage-cpp.md b/docs/cpp/program-and-linkage-cpp.md index 85a25f80160..720e33de0fc 100644 --- a/docs/cpp/program-and-linkage-cpp.md +++ b/docs/cpp/program-and-linkage-cpp.md @@ -11,7 +11,7 @@ In a C++ program, a *symbol*, for example a variable or function name, can be de The following example shows some declarations: ```cpp -int i; +extern int i; int f(int x); class C; ``` From b21e5a015ef21a03d46e32b9a5049d5026491d9e Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 28 Jan 2025 18:08:52 +0800 Subject: [PATCH 0068/2255] Update C2006 --- .../compiler-errors-1/compiler-error-c2006.md | 20 +++++++------------ 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2006.md b/docs/error-messages/compiler-errors-1/compiler-error-c2006.md index a1a28744008..531f672d9b5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2006.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2006.md @@ -1,28 +1,22 @@ --- -description: "Learn more about: Compiler Error C2006" title: "Compiler Error C2006" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2006" +ms.date: "01/28/2025" f1_keywords: ["C2006"] helpviewer_keywords: ["C2006"] -ms.assetid: caaed6f7-ceb9-4742-8820-d66657c0b04d --- # Compiler Error C2006 -'directive' expected a filename, found 'token' +'directive': expected "FILENAME" or \ -Directives such as [#include](../../preprocessor/hash-include-directive-c-cpp.md) or [#import](../../preprocessor/hash-import-directive-cpp.md) require a filename. To resolve the error, make sure *token* is a valid filename. Also, put the filename in double quotes or angle brackets. +Directives such as [#include](../../preprocessor/hash-include-directive-c-cpp.md) or [#import](../../preprocessor/hash-import-directive-cpp.md) require a filename. To resolve the error, ensure the filename is valid and enclosed in either double quotes or angle brackets. The following sample generates C2006: ```cpp // C2006.cpp -#include stdio.h // C2006 -``` - -Possible resolution: - -```cpp -// C2006b.cpp // compile with: /c -#include +#include iostream // C2006 +#include 'iostream' // C2006 +#include // OK ``` From 34058cc3aa90c67f1f190975fefad579881e9628 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 28 Jan 2025 18:46:33 +0800 Subject: [PATCH 0069/2255] Standardize include directive formatting --- .../creating-precompiled-header-files.md | 20 +++++++++---------- docs/c-runtime-library/reference/abort.md | 6 +++--- .../reference/access-waccess.md | 8 ++++---- .../reference/dupenv-s-dbg-wdupenv-s-dbg.md | 5 ++--- .../reference/dupenv-s-wdupenv-s.md | 5 ++--- ...mbsnbcnt-mbsnbcnt-l-mbsnccnt-mbsnccnt-l.md | 7 +++---- docs/code-quality/c6506.md | 7 +++---- ...to-access-characters-in-a-system-string.md | 5 ++--- ...and-consume-classes-and-structs-cpp-cli.md | 3 +-- .../compiler-errors-2/compiler-error-c2893.md | 5 ++--- .../compiler-errors-2/compiler-error-c3867.md | 5 ++--- docs/standard-library/bad-alloc-class.md | 7 +++---- docs/standard-library/hash-map-class.md | 14 ++++++------- docs/standard-library/hash-multimap-class.md | 11 +++++----- docs/standard-library/new-functions.md | 7 +++---- docs/standard-library/new-operators.md | 7 +++---- 16 files changed, 55 insertions(+), 67 deletions(-) diff --git a/docs/build/creating-precompiled-header-files.md b/docs/build/creating-precompiled-header-files.md index 1c8cb52ddcc..7343f0b3d98 100644 --- a/docs/build/creating-precompiled-header-files.md +++ b/docs/build/creating-precompiled-header-files.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Precompiled header files" title: "Precompiled Header Files" +description: "Learn more about: Precompiled header files" ms.date: 06/29/2022 helpviewer_keywords: ["precompiled header files, creating", "PCH files, creating", "cl.exe compiler, precompiling code", ".pch files, creating"] --- @@ -259,7 +259,7 @@ Source file `ANOTHER.H`: // #ifndef __ANOTHER_H #define __ANOTHER_H -#include +#include void savemoretime( void ); #endif // __ANOTHER_H ``` @@ -273,7 +273,7 @@ Source file `STABLE.H`: // #ifndef __STABLE_H #define __STABLE_H -#include +#include void savetime( void ); #endif // __STABLE_H ``` @@ -289,7 +289,7 @@ Source file `UNSTABLE.H`: // #ifndef __UNSTABLE_H #define __UNSTABLE_H -#include +#include void notstable( void ); #endif // __UNSTABLE_H ``` @@ -301,9 +301,9 @@ Source file `APPLIB.CPP`: // the interface code declared in the header // files STABLE.H, ANOTHER.H, and UNSTABLE.H. // -#include"another.h" -#include"stable.h" -#include"unstable.h" +#include "another.h" +#include "stable.h" +#include "unstable.h" using namespace std; // The following code represents code that is deemed stable and // not likely to change. The associated interface code is @@ -331,9 +331,9 @@ Source file `MYAPP.CPP`: // listed in the BOUNDRY macro. Unstable code must // be included after the precompiled code. // -#include"another.h" -#include"stable.h" -#include"unstable.h" +#include "another.h" +#include "stable.h" +#include "unstable.h" int main( void ) { savetime(); diff --git a/docs/c-runtime-library/reference/abort.md b/docs/c-runtime-library/reference/abort.md index 991f4640497..2260dd9645b 100644 --- a/docs/c-runtime-library/reference/abort.md +++ b/docs/c-runtime-library/reference/abort.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: abort" title: "abort" +description: "Learn more about: abort" ms.date: 07/07/2022 api_name: ["abort", "_o_abort"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"] @@ -71,8 +71,8 @@ The following program tries to open a file and aborts if the attempt fails. // the abort function by attempting to open a file // and aborts if the attempt fails. -#include -#include +#include +#include int main( void ) { diff --git a/docs/c-runtime-library/reference/access-waccess.md b/docs/c-runtime-library/reference/access-waccess.md index 87fadbc2ba6..87cf212ca0b 100644 --- a/docs/c-runtime-library/reference/access-waccess.md +++ b/docs/c-runtime-library/reference/access-waccess.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: _access, _waccess" title: "_access, _waccess" +description: "Learn more about: _access, _waccess" ms.date: "4/2/2020" api_name: ["_access", "_waccess", "t_access", "_o__access", "_o__waccess"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"] @@ -90,9 +90,9 @@ The following example uses **`_access`** to check the file named *`crt_ACCESS.C` // This example uses _access to check the file named // crt_ACCESS.C to see if it exists and if writing is allowed. -#include -#include -#include +#include +#include +#include int main( void ) { diff --git a/docs/c-runtime-library/reference/dupenv-s-dbg-wdupenv-s-dbg.md b/docs/c-runtime-library/reference/dupenv-s-dbg-wdupenv-s-dbg.md index cfc0b250e27..047aba34af6 100644 --- a/docs/c-runtime-library/reference/dupenv-s-dbg-wdupenv-s-dbg.md +++ b/docs/c-runtime-library/reference/dupenv-s-dbg-wdupenv-s-dbg.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: _dupenv_s_dbg, _wdupenv_s_dbg" title: "_dupenv_s_dbg, _wdupenv_s_dbg" +description: "Learn more about: _dupenv_s_dbg, _wdupenv_s_dbg" ms.date: "11/04/2016" api_name: ["_dupenv_s_dbg", "_wdupenv_s_dbg"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"] @@ -8,7 +8,6 @@ api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["_tdupenv_s_dbg", "_dupenv_s_dbg", "_wdupenv_s_dbg"] helpviewer_keywords: ["_tdupenv_s_dbg function", "dupenv_s_dbg function", "_wdupenv_s_dbg function", "environment variables", "tdupenv_s_dbg function", "wdupenv_s_dbg function", "_dupenv_s_dbg function"] -ms.assetid: e3d81148-e24e-46d0-a21d-fd87b5e6256c --- # `_dupenv_s_dbg`, `_wdupenv_s_dbg` @@ -88,7 +87,7 @@ For more compatibility information, see [Compatibility](../compatibility.md). ```C // crt_dupenv_s_dbg.c -#include +#include #include int main( void ) diff --git a/docs/c-runtime-library/reference/dupenv-s-wdupenv-s.md b/docs/c-runtime-library/reference/dupenv-s-wdupenv-s.md index e0d4242db21..da9fb11032a 100644 --- a/docs/c-runtime-library/reference/dupenv-s-wdupenv-s.md +++ b/docs/c-runtime-library/reference/dupenv-s-wdupenv-s.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: _dupenv_s, _wdupenv_s" title: "_dupenv_s, _wdupenv_s" +description: "Learn more about: _dupenv_s, _wdupenv_s" ms.date: "4/2/2020" api_name: ["_dupenv_s", "_wdupenv_s", "_o__dupenv_s", "_o__wdupenv_s"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-environment-l1-1-0.dll"] @@ -8,7 +8,6 @@ api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["tdupenv_s", "_dupenv_s", "wdupenv_s", "dupenv_s", "_tdupenv_s", "_wdupenv_s"] helpviewer_keywords: ["_dupenv_s function", "_tdupenv_s function", "_wdupenv_s function", "environment variables", "wdupenv_s function", "dupenv_s function", "tdupenv_s function"] -ms.assetid: b729ecc2-a31d-4ccf-92a7-5accedb8f8c8 --- # `_dupenv_s`, `_wdupenv_s` @@ -89,7 +88,7 @@ For more compatibility information, see [Compatibility](../compatibility.md). ```C // crt_dupenv_s.c -#include +#include int main( void ) { diff --git a/docs/c-runtime-library/reference/strncnt-wcsncnt-mbsnbcnt-mbsnbcnt-l-mbsnccnt-mbsnccnt-l.md b/docs/c-runtime-library/reference/strncnt-wcsncnt-mbsnbcnt-mbsnbcnt-l-mbsnccnt-mbsnccnt-l.md index 4ca437d019f..2c9cdcfed2f 100644 --- a/docs/c-runtime-library/reference/strncnt-wcsncnt-mbsnbcnt-mbsnbcnt-l-mbsnccnt-mbsnccnt-l.md +++ b/docs/c-runtime-library/reference/strncnt-wcsncnt-mbsnbcnt-mbsnbcnt-l-mbsnccnt-mbsnccnt-l.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: _strncnt, _wcsncnt, _mbsnbcnt, _mbsnbcnt_l, _mbsnccnt, _mbsnccnt_l" title: "_strncnt, _wcsncnt, _mbsnbcnt, _mbsnbcnt_l, _mbsnccnt, _mbsnccnt_l" +description: "Learn more about: _strncnt, _wcsncnt, _mbsnbcnt, _mbsnbcnt_l, _mbsnccnt, _mbsnccnt_l" ms.date: "4/2/2020" api_name: ["_mbsnbcnt_l", "_mbsnccnt", "_wcsncnt", "_strncnt", "_mbsnccnt_l", "_mbsnbcnt", "_o__mbsnbcnt", "_o__mbsnbcnt_l", "_o__mbsnccnt", "_o__mbsnccnt_l"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"] @@ -8,7 +8,6 @@ api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["_mbsnbcnt", "wcsncnt", "_tcsnbcnt", "_mbsnccnt", "_ftcsnbcnt", "mbsnbcnt", "strncnt", "mbsnbcnt_l", "mbsnccnt_l", "mbsnccnt", "_strncnt", "_wcsncnt"] helpviewer_keywords: ["_strncnt function", "_mbsnbcnt function", "_mbsnbcnt_l function", "_mbsnccnt_l function", "mbsnbcnt_l function", "mbsnbcnt function", "tcsnbcnt function", "mbsnccnt_l function", "strncnt function", "_tcsnbcnt function", "mbsnccnt function", "wcsncnt function", "_mbsnccnt function", "_wcsncnt function"] -ms.assetid: 2a022e9e-a307-4acb-a66b-e56e5357f848 --- # `_strncnt`, `_wcsncnt`, `_mbsnbcnt`, `_mbsnbcnt_l`, `_mbsnccnt`, `_mbsnccnt_l` @@ -105,8 +104,8 @@ For more compatibility information, see [Compatibility](../compatibility.md). ```C // crt_mbsnbcnt.c -#include -#include +#include +#include int main( void ) { diff --git a/docs/code-quality/c6506.md b/docs/code-quality/c6506.md index df143e3c842..377aef78138 100644 --- a/docs/code-quality/c6506.md +++ b/docs/code-quality/c6506.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Warning C6506" title: Warning C6506 +description: "Learn more about: Warning C6506" ms.date: 11/04/2016 f1_keywords: ["C6506", "BUFFER_SIZE_ON_NON_POINTER_OR_ARRAY", "__WARNING_BUFFER_SIZE_ON_NON_POINTER_OR_ARRAY"] helpviewer_keywords: ["C6506"] -ms.assetid: 20b87ee8-13ea-4d71-95a1-2b2d144d196a --- # Warning C6506 @@ -21,7 +20,7 @@ Code analysis name: `BUFFER_SIZE_ON_NON_POINTER_OR_ARRAY` The following code generates this warning: ```cpp -#include +#include void f(_Out_ char c) { c = 'd'; @@ -31,7 +30,7 @@ void f(_Out_ char c) To correct this warning, use a pointer or an array type, as shown in the following sample code: ```cpp -#include +#include void f(_Out_ char *c) { *c = 'd'; diff --git a/docs/dotnet/how-to-access-characters-in-a-system-string.md b/docs/dotnet/how-to-access-characters-in-a-system-string.md index 1dab0f2a63f..0c9ee2d912e 100644 --- a/docs/dotnet/how-to-access-characters-in-a-system-string.md +++ b/docs/dotnet/how-to-access-characters-in-a-system-string.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: How to: Access Characters in a System::String" title: "How to: Access Characters in a System::String" +description: "Learn more about: How to: Access Characters in a System::String" ms.custom: "get-started-article" ms.date: "11/04/2016" helpviewer_keywords: ["characters [C++], accessing in System::String", "examples [C++], strings", "strings [C++], accessing characters"] -ms.assetid: cfc89756-aef3-4988-907e-fb236dcb7087 --- # How to: Access Characters in a System::String @@ -21,7 +20,7 @@ If you pass `ppchar` to a native function, then it must be a pinning pointer; th ```cpp // PtrToStringChars.cpp // compile with: /clr -#include +#include using namespace System; int main() { diff --git a/docs/dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md b/docs/dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md index 0850717e4cd..155dcd7fff8 100644 --- a/docs/dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md +++ b/docs/dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md @@ -3,7 +3,6 @@ title: "How to: Define and consume classes and structs (C++/CLI)" description: "How to create and use user-defined class and struct types in C++/CLI code." ms.date: 09/25/2020 helpviewer_keywords: ["structs [C++]", "classes [C++], instantiating"] -ms.assetid: 1c03cb0d-1459-4b5e-af65-97d6b3094fd7 --- # How to: Define and consume classes and structs (C++/CLI) @@ -636,7 +635,7 @@ The following sample demonstrates when a copy constructor isn't generated. ```cpp // compile with: /clr -#include +#include struct S { int i; diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2893.md b/docs/error-messages/compiler-errors-2/compiler-error-c2893.md index 7e1fab4903a..01cb21c042a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2893.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2893.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2893" title: "Compiler Error C2893" +description: "Learn more about: Compiler Error C2893" ms.date: "11/04/2016" f1_keywords: ["C2893"] helpviewer_keywords: ["C2893"] -ms.assetid: ec0cbe43-005d-45da-8742-aaeb9b81d28e --- # Compiler Error C2893 @@ -21,7 +20,7 @@ C2893 occurs because `f`'s template parameter `T` is deduced to be `std::map +#include using namespace std; class MyClass {}; diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3867.md b/docs/error-messages/compiler-errors-2/compiler-error-c3867.md index 8a22a876fe6..db31e6aef73 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3867.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3867.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3867" title: "Compiler Error C3867" +description: "Learn more about: Compiler Error C3867" ms.date: "11/04/2016" f1_keywords: ["C3867"] helpviewer_keywords: ["C3867"] -ms.assetid: bc5de03f-e01a-4407-88c3-2c63f0016a1e --- # Compiler Error C3867 @@ -42,7 +41,7 @@ The following sample generates C3867 and shows how to fix it. ```cpp // C3867_2.cpp -#include +#include struct S { char *func() { diff --git a/docs/standard-library/bad-alloc-class.md b/docs/standard-library/bad-alloc-class.md index 9cd3cc8bd87..f18b4ca87ec 100644 --- a/docs/standard-library/bad-alloc-class.md +++ b/docs/standard-library/bad-alloc-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: bad_alloc Class" title: "bad_alloc Class" +description: "Learn more about: bad_alloc Class" ms.date: "11/04/2016" f1_keywords: ["new/std::bad_alloc"] helpviewer_keywords: ["bad_alloc class"] -ms.assetid: 6429a8e6-5a49-4907-8d56-f4a4ec8131d0 --- # bad_alloc Class @@ -31,8 +30,8 @@ The value returned by `what` is an implementation-defined C string. None of the ```cpp // bad_alloc.cpp // compile with: /EHsc -#include -#include +#include +#include using namespace std; int main() { diff --git a/docs/standard-library/hash-map-class.md b/docs/standard-library/hash-map-class.md index adb3a1e83e3..6a7b5c8388c 100644 --- a/docs/standard-library/hash-map-class.md +++ b/docs/standard-library/hash-map-class.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: hash_map Class" title: "hash_map Class" +description: "Learn more about: hash_map Class" ms.date: "11/04/2016" f1_keywords: ["hash_map/stdext::hash_map", "hash_map/stdext::hash_map::allocator_type", "hash_map/stdext::hash_map::const_iterator", "hash_map/stdext::hash_map::const_pointer", "hash_map/stdext::hash_map::const_reference", "hash_map/stdext::hash_map::const_reverse_iterator", "hash_map/stdext::hash_map::difference_type", "hash_map/stdext::hash_map::iterator", "hash_map/stdext::hash_map::key_compare", "hash_map/stdext::hash_map::key_type", "hash_map/stdext::hash_map::mapped_type", "hash_map/stdext::hash_map::pointer", "hash_map/stdext::hash_map::reference", "hash_map/stdext::hash_map::reverse_iterator", "hash_map/stdext::hash_map::size_type", "hash_map/stdext::hash_map::value_type", "hash_map/stdext::hash_map::at", "hash_map/stdext::hash_map::begin", "hash_map/stdext::hash_map::cbegin", "hash_map/stdext::hash_map::cend", "hash_map/stdext::hash_map::clear", "hash_map/stdext::hash_map::count", "hash_map/stdext::hash_map::crbegin", "hash_map/stdext::hash_map::crend", "hash_map/stdext::hash_map::emplace", "hash_map/stdext::hash_map::emplace_hint", "hash_map/stdext::hash_map::empty", "hash_map/stdext::hash_map::end", "hash_map/stdext::hash_map::equal_range", "hash_map/stdext::hash_map::erase", "hash_map/stdext::hash_map::find", "hash_map/stdext::hash_map::get_allocator", "hash_map/stdext::hash_map::insert", "hash_map/stdext::hash_map::key_comp", "hash_map/stdext::hash_map::lower_bound", "hash_map/stdext::hash_map::max_size", "hash_map/stdext::hash_map::rbegin", "hash_map/stdext::hash_map::rend", "hash_map/stdext::hash_map::size", "hash_map/stdext::hash_map::swap", "hash_map/stdext::hash_map::upper_bound", "hash_map/stdext::hash_map::value_comp"] helpviewer_keywords: ["stdext::hash_map", "stdext::hash_map::allocator_type", "stdext::hash_map::const_iterator", "stdext::hash_map::const_pointer", "stdext::hash_map::const_reference", "stdext::hash_map::const_reverse_iterator", "stdext::hash_map::difference_type", "stdext::hash_map::iterator", "stdext::hash_map::key_compare", "stdext::hash_map::key_type", "stdext::hash_map::mapped_type", "stdext::hash_map::pointer", "stdext::hash_map::reference", "stdext::hash_map::reverse_iterator", "stdext::hash_map::size_type", "stdext::hash_map::value_type", "stdext::hash_map::at", "stdext::hash_map::begin", "stdext::hash_map::cbegin", "stdext::hash_map::cend", "stdext::hash_map::clear", "stdext::hash_map::count", "stdext::hash_map::crbegin", "stdext::hash_map::crend", "stdext::hash_map::emplace", "stdext::hash_map::emplace_hint", "stdext::hash_map::empty", "stdext::hash_map::end", "stdext::hash_map::equal_range", "stdext::hash_map::erase", "stdext::hash_map::find", "stdext::hash_map::get_allocator", "stdext::hash_map::insert", "stdext::hash_map::key_comp", "stdext::hash_map::lower_bound", "stdext::hash_map::max_size", "stdext::hash_map::rbegin", "stdext::hash_map::rend", "stdext::hash_map::size", "stdext::hash_map::swap", "stdext::hash_map::upper_bound", "stdext::hash_map::value_comp"] @@ -817,8 +817,8 @@ The [`hash_map::value_type`](#value_type) of an element is a pair, so that the v ```cpp // hash_map_emplace.cpp // compile with: /EHsc -#include -#include +#include +#include #include int main() @@ -878,8 +878,8 @@ Insertion can occur in amortized constant time, instead of logarithmic time, if ```cpp // hash_map_emplace_hint.cpp // compile with: /EHsc -#include -#include +#include +#include #include int main() @@ -1545,8 +1545,8 @@ The third member function inserts the sequence of element values into a `hash_ma ```cpp // hash_map_insert.cpp // compile with: /EHsc -#include -#include +#include +#include #include int main() diff --git a/docs/standard-library/hash-multimap-class.md b/docs/standard-library/hash-multimap-class.md index ca2f5e5b1f1..c8616e44b46 100644 --- a/docs/standard-library/hash-multimap-class.md +++ b/docs/standard-library/hash-multimap-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: hash_multimap Class" title: "hash_multimap Class" +description: "Learn more about: hash_multimap Class" ms.date: "10/18/2018" f1_keywords: ["hash_map/stdext::hash_multimap", "hash_map/stdext::hash_multimap::allocator_type", "hash_map/stdext::hash_multimap::const_iterator", "hash_map/stdext::hash_multimap::const_pointer", "hash_map/stdext::hash_multimap::const_reference", "hash_map/stdext::hash_multimap::const_reverse_iterator", "hash_map/stdext::hash_multimap::difference_type", "hash_map/stdext::hash_multimap::iterator", "hash_map/stdext::hash_multimap::key_compare", "hash_map/stdext::hash_multimap::key_type", "hash_map/stdext::hash_multimap::mapped_type", "hash_map/stdext::hash_multimap::pointer", "hash_map/stdext::hash_multimap::reference", "hash_map/stdext::hash_multimap::reverse_iterator", "hash_map/stdext::hash_multimap::size_type", "hash_map/stdext::hash_multimap::value_type", "hash_map/stdext::hash_multimap::begin", "hash_map/stdext::hash_multimap::cbegin", "hash_map/stdext::hash_multimap::cend", "hash_map/stdext::hash_multimap::clear", "hash_map/stdext::hash_multimap::count", "hash_map/stdext::hash_multimap::crbegin", "hash_map/stdext::hash_multimap::crend", "hash_map/stdext::hash_multimap::emplace", "hash_map/stdext::hash_multimap::emplace_hint", "hash_map/stdext::hash_multimap::empty", "hash_map/stdext::hash_multimap::end", "hash_map/stdext::hash_multimap::equal_range", "hash_map/stdext::hash_multimap::erase", "hash_map/stdext::hash_multimap::find", "hash_map/stdext::hash_multimap::get_allocator", "hash_map/stdext::hash_multimap::insert", "hash_map/stdext::hash_multimap::key_comp", "hash_map/stdext::hash_multimap::lower_bound", "hash_map/stdext::hash_multimap::max_size", "hash_map/stdext::hash_multimap::rbegin", "hash_map/stdext::hash_multimap::rend", "hash_map/stdext::hash_multimap::size", "hash_map/stdext::hash_multimap::swap", "hash_map/stdext::hash_multimap::upper_bound", "hash_map/stdext::hash_multimap::value_comp"] helpviewer_keywords: ["stdext::hash_multimap", "stdext::hash_multimap::allocator_type", "stdext::hash_multimap::const_iterator", "stdext::hash_multimap::const_pointer", "stdext::hash_multimap::const_reference", "stdext::hash_multimap::const_reverse_iterator", "stdext::hash_multimap::difference_type", "stdext::hash_multimap::iterator", "stdext::hash_multimap::key_compare", "stdext::hash_multimap::key_type", "stdext::hash_multimap::mapped_type", "stdext::hash_multimap::pointer", "stdext::hash_multimap::reference", "stdext::hash_multimap::reverse_iterator", "stdext::hash_multimap::size_type", "stdext::hash_multimap::value_type", "stdext::hash_multimap::begin", "stdext::hash_multimap::cbegin", "stdext::hash_multimap::cend", "stdext::hash_multimap::clear", "stdext::hash_multimap::count", "stdext::hash_multimap::crbegin", "stdext::hash_multimap::crend", "stdext::hash_multimap::emplace", "stdext::hash_multimap::emplace_hint", "stdext::hash_multimap::empty", "stdext::hash_multimap::end", "stdext::hash_multimap::equal_range", "stdext::hash_multimap::erase", "stdext::hash_multimap::find", "stdext::hash_multimap::get_allocator", "stdext::hash_multimap::insert", "stdext::hash_multimap::key_comp", "stdext::hash_multimap::lower_bound", "stdext::hash_multimap::max_size", "stdext::hash_multimap::rbegin", "stdext::hash_multimap::rend", "stdext::hash_multimap::size", "stdext::hash_multimap::swap", "stdext::hash_multimap::upper_bound", "stdext::hash_multimap::value_comp"] -ms.assetid: f41a6db9-67aa-43a3-a3c5-dbfe9ec3ae7d --- # hash_multimap Class @@ -776,8 +775,8 @@ The [hash_multimap::value_type](#value_type) of an element is a pair, so that th ```cpp // hash_multimap_emplace.cpp // compile with: /EHsc -#include -#include +#include +#include #include int main() @@ -837,8 +836,8 @@ Insertion can occur in amortized constant time, instead of logarithmic time, if ```cpp // hash_multimap_emplace_hint.cpp // compile with: /EHsc -#include -#include +#include +#include #include int main() diff --git a/docs/standard-library/new-functions.md b/docs/standard-library/new-functions.md index 7bcc74e8889..4a7901ce9db 100644 --- a/docs/standard-library/new-functions.md +++ b/docs/standard-library/new-functions.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: functions" title: " functions" +description: "Learn more about: functions" ms.date: "11/04/2016" f1_keywords: ["new/std::get_new_handler", "new/std::nothrow", "new/std::set_new_handler"] -ms.assetid: e250f06a-b025-4509-ae7a-5356d56aad7d --- # `` functions @@ -93,8 +92,8 @@ The function stores *`Pnew`* in a static [`new` handler](../standard-library/new ```cpp // new_set_new_handler.cpp // compile with: /EHsc -#include -#include +#include +#include using namespace std; void __cdecl newhandler( ) diff --git a/docs/standard-library/new-operators.md b/docs/standard-library/new-operators.md index 0df7cbc0715..49e1184de86 100644 --- a/docs/standard-library/new-operators.md +++ b/docs/standard-library/new-operators.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: operators and enums" title: " operators and enums" +description: "Learn more about: operators and enums" ms.date: 05/21/2022 f1_keywords: ["new/std::operator delete", "new/std::operator new"] -ms.assetid: d1af4b56-9a95-4c65-ab01-bf43e982c7bd --- # `` operators and enums @@ -130,8 +129,8 @@ For information on throwing or non-throwing behavior of `new`, see [The `new` an ```cpp // new_op_new.cpp // compile with: /EHsc -#include -#include +#include +#include using namespace std; From 0aa0ce96641097db182abcc0f8d75e098b956ff1 Mon Sep 17 00:00:00 2001 From: David Justo Date: Tue, 28 Jan 2025 15:57:43 -0800 Subject: [PATCH 0070/2255] Document that `_CrtDumpMemoryLeaks` is incompatible with ASan --- docs/sanitizers/asan-known-issues.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/sanitizers/asan-known-issues.md b/docs/sanitizers/asan-known-issues.md index cbf822f6b87..73eddba934a 100644 --- a/docs/sanitizers/asan-known-issues.md +++ b/docs/sanitizers/asan-known-issues.md @@ -24,6 +24,7 @@ These options and functionality are incompatible with [`/fsanitize=address`](../ - [Universal Windows Platform](../cppcx/universal-windows-apps-cpp.md) (UWP) applications are unsupported. - [Special case list](https://clang.llvm.org/docs/SanitizerSpecialCaseList.html) files are unsupported. - [MFC](../mfc/mfc-concepts.md) using the optional [`alloc_dealloc_mismatch`](error-alloc-dealloc-mismatch.md) runtime option is unsupported. +- [_CrtDumpMemoryLeaks](../c-runtime-library/reference/crtdumpmemoryleaks.md) is unsupported, and should be disabled. ## Standard library support From a2c22dec37f68e337dbd867bda377d7a54a5c49e Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Tue, 28 Jan 2025 16:58:49 -0800 Subject: [PATCH 0071/2255] Update ASan known issues documentation added code escape and updated doc date --- docs/sanitizers/asan-known-issues.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/sanitizers/asan-known-issues.md b/docs/sanitizers/asan-known-issues.md index 73eddba934a..192fd05d583 100644 --- a/docs/sanitizers/asan-known-issues.md +++ b/docs/sanitizers/asan-known-issues.md @@ -1,7 +1,7 @@ --- title: "AddressSanitizer known issues" description: "Technical description of the AddressSanitizer for Microsoft C/C++ known issues." -ms.date: 12/1/2023 +ms.date: 1/28/2025 helpviewer_keywords: ["AddressSanitizer known issues"] --- @@ -24,7 +24,7 @@ These options and functionality are incompatible with [`/fsanitize=address`](../ - [Universal Windows Platform](../cppcx/universal-windows-apps-cpp.md) (UWP) applications are unsupported. - [Special case list](https://clang.llvm.org/docs/SanitizerSpecialCaseList.html) files are unsupported. - [MFC](../mfc/mfc-concepts.md) using the optional [`alloc_dealloc_mismatch`](error-alloc-dealloc-mismatch.md) runtime option is unsupported. -- [_CrtDumpMemoryLeaks](../c-runtime-library/reference/crtdumpmemoryleaks.md) is unsupported, and should be disabled. +- [`_CrtDumpMemoryLeaks`](../c-runtime-library/reference/crtdumpmemoryleaks.md) is unsupported, and should be disabled. ## Standard library support From ea29a83497f79299172b922ac37d9c64e8606daf Mon Sep 17 00:00:00 2001 From: Pedro Miguel Justo <40605312+pmsjt@users.noreply.github.com> Date: Wed, 29 Jan 2025 09:11:31 -0800 Subject: [PATCH 0072/2255] Update the ABI to be in concordance, with the introduction of the first officially supported CPU with FP exceptions. While the original rule was a good intention, it was at odds with the Arm ABI, which is also adopted by Linux and macOS, making code harder to port. It was also at odds with the Arm Architecture in the sense that if offers a direct way to convey to software when FP exceptions are supported and when they are enabled, and this rule was negating such contract. --- docs/build/arm64-windows-abi-conventions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/arm64-windows-abi-conventions.md b/docs/build/arm64-windows-abi-conventions.md index 7d65ba7985e..c1ba7cc30a8 100644 --- a/docs/build/arm64-windows-abi-conventions.md +++ b/docs/build/arm64-windows-abi-conventions.md @@ -118,7 +118,7 @@ Like AArch32, the AArch64 specification provides three system-controlled "thread ## Floating-point exceptions -Support for IEEE floating-point exceptions is optional on AArch64 systems. For processor variants that do have hardware floating-point exceptions, the Windows kernel silently catches the exceptions and implicitly disables them in the FPCR register. This trap ensures normalized behavior across processor variants. Otherwise, code developed on a platform without exception support may find itself taking unexpected exceptions when running on a platform with support. +Support for IEEE floating-point exceptions on AArch64 systems is optional. This can be verified by writing a value that enables exceptions to the `FPCR` register and then reading it back. The bits corresponding to supported exceptions will remain set, while the bits corresponding to unsupported exceptions will be reset by the CPU. ## Parameter passing From a00c37eaa8838d09c24db2ba15de8667506dfbd2 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 29 Jan 2025 11:15:10 -0800 Subject: [PATCH 0073/2255] draft new switch --- .../std-specify-language-standard-version.md | 60 +++++++++++-------- 1 file changed, 34 insertions(+), 26 deletions(-) diff --git a/docs/build/reference/std-specify-language-standard-version.md b/docs/build/reference/std-specify-language-standard-version.md index 2c73b2f8e7e..9e70ed4a866 100644 --- a/docs/build/reference/std-specify-language-standard-version.md +++ b/docs/build/reference/std-specify-language-standard-version.md @@ -1,7 +1,7 @@ --- title: "/std (Specify Language Standard Version)" description: "The MSVC compiler option /std specifies the C or C++ language standard supported by the compiler." -ms.date: 1/16/2025 +ms.date: 1/29/2025 f1_keywords: ["/std", "-std", "/std:c++14", "/std:c++17", "/std:c++20", "/std:c++23preview", "/std:c11", "/std:c17", "/std:clatest", "VC.Project.VCCLCompilerTool.CppLanguageStandard"] --- # `/std` (Specify Language Standard Version) @@ -25,15 +25,16 @@ The **`/std`** options are available in Visual Studio 2017 and later. They're us The Microsoft C++ compiler in Visual Studio 2017 and later versions doesn't support C++ standards modes earlier than C++14 (**`/std:c++14`**). Such support isn't planned. As an imperfect workaround, it's possible to use older Visual C++ compiler toolsets that didn't implement features from later standards. For more information on how to install and use older compiler toolsets in Visual Studio, see [Use native multi-targeting in Visual Studio to build old projects](../../porting/use-native-multi-targeting.md). -### C++ standards support +## C++ standards support The **`/std`** option in effect during a C++ compilation can be detected by use of the [`_MSVC_LANG`](../../preprocessor/predefined-macros.md) preprocessor macro. For more information, see [Preprocessor Macros](../../preprocessor/predefined-macros.md). > [!IMPORTANT] > Because some existing code depends on the value of the macro `__cplusplus` being `199711L`, the MSVC compiler doesn't change the value of this macro unless you explicitly opt in by setting [`/Zc:__cplusplus`](zc-cplusplus.md). Specify `/Zc:__cplusplus` and the **`/std`** option to set `__cplusplus` to the appropriate value. -**`/std:c++14`**\ -The **`/std:c++14`** option enables C++14 standard-specific features implemented by the MSVC compiler. This option is the default for code compiled as C++. It's available starting in Visual Studio 2015 Update 3. +### **`/std:c++14`** + +Enables C++14 standard-specific features implemented by the MSVC compiler. This option is the default for code compiled as C++. It's available starting in Visual Studio 2015 Update 3. This option disables compiler and standard library support for features that are changed or new in more recent versions of the language standard. However, it doesn't disable some C++17 features already implemented in previous releases of the MSVC compiler. For more information, see [Microsoft C/C++ language conformance](../../overview/visual-cpp-language-conformance.md). The tables indicate which C++17 features are enabled when you specify **`/std:c++14`**. @@ -45,22 +46,33 @@ The following features remain enabled when the **`/std:c++14`** option is specif - [Attributes for namespaces and enumerators](https://wg21.link/n4266) - [u8 character literals](https://wg21.link/n4267) -**`/std:c++17`**\ -The **`/std:c++17`** option enables C++17 standard-specific features and behavior. It enables the full set of C++17 features implemented by the MSVC compiler. This option disables compiler and standard library support for features that are new or changed after C++17. It specifically disables post-C++17 changes in the C++ Standard and versions of the Working Draft. It doesn't disable retroactive defect updates of the C++ Standard. This option is available starting in Visual Studio 2017 version 15.3. +### **`/std:c++17`** + +Enables C++17 standard-specific features and behavior. It enables the full set of C++17 features implemented by the MSVC compiler. This option disables compiler and standard library support for features that are new or changed after C++17. It specifically disables post-C++17 changes in the C++ Standard and versions of the Working Draft. It doesn't disable retroactive defect updates of the C++ Standard. This option is available starting in Visual Studio 2017 version 15.3. Depending on the MSVC compiler version or update level, C++17 features may not be fully implemented or fully conforming when you specify the **`/std:c++17`** option. For an overview of C++ language conformance in Visual C++ by release version, see [Microsoft C/C++ language conformance](../../overview/visual-cpp-language-conformance.md). -**`/std:c++20`**\ -The **`/std:c++20`** option enables C++20 standard-specific features and behavior. Available starting in Visual Studio 2019 version 16.11, it enables the full set of C++20 features implemented by the MSVC compiler. Note that Visual Studio 2022 version 17.0 does not support `std::format`, the C++20 `` formatting extensions, and the range factories and range adaptors from `` under **`/std:c++20`** due to late-breaking changes in those features immediately after publication of the Standard. +### **`/std:c++20`** + +- Enables C++20 standard-specific features and behavior. Available starting in Visual Studio 2019 version 16.11, it enables the full set of C++20 features implemented by the MSVC compiler. Note that Visual Studio 2022 version 17.0 does not support `std::format`, the C++20 `` formatting extensions, and the range factories and range adaptors from `` under **`/std:c++20`** due to late-breaking changes in those features immediately after publication of the Standard. +- Enables the standard conformance mode provided by [**`/permissive-`**](./permissive-standards-conformance.md) unless explicitly overriden with **`/permissive`**. +- Disables compiler and standard library support for features that are new or changed after C++20. It specifically disables post-C++20 changes in the C++ Standard and versions of the Working Draft. It doesn't disable retroactive defect updates of the C++ Standard. + +### **`/std:c++23preview`** -The **`/std:c++20`** option disables compiler and standard library support for features that are new or changed after C++20. It specifically disables post-C++20 changes in the C++ Standard and versions of the Working Draft. It doesn't disable retroactive defect updates of the C++ Standard. +- Enables preview C++23 standard-specific features and behavior. Available starting in Visual Studio 2022 version 17.13. Preview features may change and may not be ABI compatible across releases. +- This switch will eventually be removed when the `/std:c++23` switch is implemented. -The **`/std:c++20`** option enables the standard conformance mode provided by [**`/permissive-`**](./permissive-standards-conformance.md) unless explicitly overriden with **`/permissive`**. +This switch differs from `/std:c++latest` in the following ways: +- Only features in the published [N4950 ISO C++23 final working draft](https://wg21.link/n4950) are enabled. No features in the latest [N5001 working draft (tenatively named C++26)](https://wg21.link/n5001) are enabled. +- This switch will be removed in a release following the completion of the C++23 features. +- ??? Note that Visual Studio 2022 version 17.0 does not support the C++23 `` formatting extensions under **`/std:c++23preview`** due to late-breaking changes in those features immediately after publication of the Standard. -**`/std:c++latest`**\ -The **`/std:c++latest`** option enables all currently implemented compiler and standard library features proposed for the next draft standard, as well as some in-progress and experimental features. This option is available starting in Visual Studio 2015 Update 3. +### `/std:c++latest` -Depending on the MSVC compiler version or update level, C++17, C++20, or proposed C++23 features may not be fully implemented or fully conforming when you specify the **`/std:c++latest`** option. We recommend you use the latest version of Visual Studio for maximum standards conformance. For an overview of C++ language and library conformance in Visual C++ by release version, see [Microsoft C/C++ language conformance](../../overview/visual-cpp-language-conformance.md). +Enables all currently implemented compiler and standard library features proposed for the next ISO C++ working draft, as well as some in-progress and experimental features. This option is available starting in Visual Studio 2015 Update 3. + +Depending on the MSVC compiler version or update level, C++17, C++20, C++23, or proposed C++26 features may not be fully implemented or fully conforming when you specify the **`/std:c++latest`** option. We recommend you use the latest version of Visual Studio for maximum standards conformance. For an overview of C++ language and library conformance in Visual C++ by release version, see [Microsoft C/C++ language conformance](../../overview/visual-cpp-language-conformance.md). In versions of Visual Studio 2019 before version 16.11, **`/std:c++latest`** is required to enable all the compiler and standard library features of C++20. @@ -73,15 +85,17 @@ The **`/std:c++latest`** option doesn't enable features guarded by the **`/exper > [!NOTE] > The compiler and library features enabled by **`/std:c++latest`** may appear in a future C++ standard. Features that have not been approved are subject to breaking changes or removal without notice and are provided on an as-is basis. -### C standards support +## C standards support You can invoke the Microsoft C compiler by using the [`/TC` or `/Tc`](tc-tp-tc-tp-specify-source-file-type.md) compiler option. It's used by default for code that has a *`.c`* file extension, unless overridden by a **`/TP`** or **`/Tp`** option. The default C compiler (that is, the compiler when **`/std:c11`** or **`/std:c17`** isn't specified) implements ANSI C89, but includes several Microsoft extensions, some of which are part of ISO C99. Some Microsoft extensions to C89 can be disabled by using the [`/Za`](za-ze-disable-language-extensions.md) compiler option, but others remain in effect. It isn't possible to specify strict C89 conformance. The compiler doesn't implement several required features of C99, so it isn't possible to specify C99 conformance, either. -**`/std:c11`**\ -The **`/std:c11`** option enables ISO C11 conformance. It's available starting in Visual Studio 2019 version 16.8. +### **`/std:c11`** + +- Enables ISO C11 conformance. It's available starting in Visual Studio 2019 version 16.8. -**`/std:c17`**\ -The **`/std:c17`** option enables ISO C17 conformance. It's available starting in Visual Studio 2019 version 16.8. +### **`/std:c17`** + +Enables ISO C17 conformance. It's available starting in Visual Studio 2019 version 16.8. Because the new preprocessor is needed to support these standards, the **`/std:c11`** and **`/std:c17`** compiler options set the [`/Zc:preprocessor`](zc-preprocessor.md) option automatically. If you want to use the traditional (legacy) preprocessor for C11 or C17, you must set the **`/Zc:preprocessor-`** compiler option explicitly. Setting the **`/Zc:preprocessor-`** option may lead to unexpected behavior, and isn't recommended. @@ -91,15 +105,10 @@ Because the new preprocessor is needed to support these standards, the **`/std:c When you specify **`/std:c11`** or **`/std:c17`**, MSVC supports all the features of C11 and C17 required by the standards. The **`/std:c11`** and **`/std:c17`** compiler options enable support for these functionalities: - [`_Pragma`](../../preprocessor/pragma-directives-and-the-pragma-keyword.md#the-pragma-preprocessing-operator) - - [`restrict`](../../c-language/type-qualifiers.md#restrict) - - [`_Noreturn`](../../c-language/noreturn.md) and \ - - [`_Alignas`, `_Alignof`](../../c-language/alignment-c.md) and \ - - [`_Generic`](../../c-language/generic-selection.md) and \ - - [`_Static_assert`](../../c-language/static-assert-c.md) The IDE uses C settings for IntelliSense and code highlighting when your source files have a *`.c`* file extension, or when you specify the [`/TC` or `/Tc`](tc-tp-tc-tp-specify-source-file-type.md) compiler option. Currently, IntelliSense in C highlights keywords `_Alignas`, `_Alignof`, `_Noreturn`, and `_Static_assert`, but not the equivalent macros defined in the standard headers: `alignas`, `alignof`, `noreturn`, and `static_assert`. @@ -116,7 +125,8 @@ The compiler doesn't support most optional features of ISO C11. Several of these - Variable length array (VLA) support isn't planned. VLAs provide attack vectors comparable to [`gets`](../../c-runtime-library/gets-getws.md), which is deprecated and planned for removal. -**`/std:clatest`**\ +### **`/std:clatest`** + The **`/std:clatest`** option behaves like the `/std:c++latest` switch for the C++ compiler. The switch enables all currently implemented compiler and standard library features proposed for the next draft C standard, as well as some in-progress and experimental features. For more information, see the C Standard library features section of [Microsoft C/C++ language conformance](../../overview/visual-cpp-language-conformance.md). @@ -124,9 +134,7 @@ For more information, see the C Standard library features section of [Microsoft ### To set this compiler option in the Visual Studio development environment 1. Open the project's **Property Pages** dialog box. For more information, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md). - 1. Select the **Configuration Properties** > **C/C++** > **Language** property page. - 1. In **C++ Language Standard** (or for C, **C Language Standard**), choose the language standard to support from the dropdown control, then choose **OK** or **Apply** to save your changes. ## See also From 65f3f978bd38a9cd2be86ccbfd9c3f3045ce95ca Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 29 Jan 2025 11:18:52 -0800 Subject: [PATCH 0074/2255] formatting --- .../std-specify-language-standard-version.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/build/reference/std-specify-language-standard-version.md b/docs/build/reference/std-specify-language-standard-version.md index 9e70ed4a866..fb22bfeb6ae 100644 --- a/docs/build/reference/std-specify-language-standard-version.md +++ b/docs/build/reference/std-specify-language-standard-version.md @@ -2,7 +2,7 @@ title: "/std (Specify Language Standard Version)" description: "The MSVC compiler option /std specifies the C or C++ language standard supported by the compiler." ms.date: 1/29/2025 -f1_keywords: ["/std", "-std", "/std:c++14", "/std:c++17", "/std:c++20", "/std:c++23preview", "/std:c11", "/std:c17", "/std:clatest", "VC.Project.VCCLCompilerTool.CppLanguageStandard"] +f1_keywords: ["/std", "-std", "/std:c++14", "/std:c++17", "/std:c++20", "/std:c++23preview", "/std:c++latest", "/std:c11", "/std:c17", "/std:clatest", "VC.Project.VCCLCompilerTool.CppLanguageStandard"] --- # `/std` (Specify Language Standard Version) @@ -32,7 +32,7 @@ The **`/std`** option in effect during a C++ compilation can be detected by use > [!IMPORTANT] > Because some existing code depends on the value of the macro `__cplusplus` being `199711L`, the MSVC compiler doesn't change the value of this macro unless you explicitly opt in by setting [`/Zc:__cplusplus`](zc-cplusplus.md). Specify `/Zc:__cplusplus` and the **`/std`** option to set `__cplusplus` to the appropriate value. -### **`/std:c++14`** +### `/std:c++14` Enables C++14 standard-specific features implemented by the MSVC compiler. This option is the default for code compiled as C++. It's available starting in Visual Studio 2015 Update 3. @@ -46,19 +46,19 @@ The following features remain enabled when the **`/std:c++14`** option is specif - [Attributes for namespaces and enumerators](https://wg21.link/n4266) - [u8 character literals](https://wg21.link/n4267) -### **`/std:c++17`** +### `/std:c++17` Enables C++17 standard-specific features and behavior. It enables the full set of C++17 features implemented by the MSVC compiler. This option disables compiler and standard library support for features that are new or changed after C++17. It specifically disables post-C++17 changes in the C++ Standard and versions of the Working Draft. It doesn't disable retroactive defect updates of the C++ Standard. This option is available starting in Visual Studio 2017 version 15.3. Depending on the MSVC compiler version or update level, C++17 features may not be fully implemented or fully conforming when you specify the **`/std:c++17`** option. For an overview of C++ language conformance in Visual C++ by release version, see [Microsoft C/C++ language conformance](../../overview/visual-cpp-language-conformance.md). -### **`/std:c++20`** +### `/std:c++20` - Enables C++20 standard-specific features and behavior. Available starting in Visual Studio 2019 version 16.11, it enables the full set of C++20 features implemented by the MSVC compiler. Note that Visual Studio 2022 version 17.0 does not support `std::format`, the C++20 `` formatting extensions, and the range factories and range adaptors from `` under **`/std:c++20`** due to late-breaking changes in those features immediately after publication of the Standard. - Enables the standard conformance mode provided by [**`/permissive-`**](./permissive-standards-conformance.md) unless explicitly overriden with **`/permissive`**. - Disables compiler and standard library support for features that are new or changed after C++20. It specifically disables post-C++20 changes in the C++ Standard and versions of the Working Draft. It doesn't disable retroactive defect updates of the C++ Standard. -### **`/std:c++23preview`** +### `/std:c++23preview` - Enables preview C++23 standard-specific features and behavior. Available starting in Visual Studio 2022 version 17.13. Preview features may change and may not be ABI compatible across releases. - This switch will eventually be removed when the `/std:c++23` switch is implemented. @@ -89,11 +89,11 @@ The **`/std:c++latest`** option doesn't enable features guarded by the **`/exper You can invoke the Microsoft C compiler by using the [`/TC` or `/Tc`](tc-tp-tc-tp-specify-source-file-type.md) compiler option. It's used by default for code that has a *`.c`* file extension, unless overridden by a **`/TP`** or **`/Tp`** option. The default C compiler (that is, the compiler when **`/std:c11`** or **`/std:c17`** isn't specified) implements ANSI C89, but includes several Microsoft extensions, some of which are part of ISO C99. Some Microsoft extensions to C89 can be disabled by using the [`/Za`](za-ze-disable-language-extensions.md) compiler option, but others remain in effect. It isn't possible to specify strict C89 conformance. The compiler doesn't implement several required features of C99, so it isn't possible to specify C99 conformance, either. -### **`/std:c11`** +### `/std:c11` - Enables ISO C11 conformance. It's available starting in Visual Studio 2019 version 16.8. -### **`/std:c17`** +### `/std:c17` Enables ISO C17 conformance. It's available starting in Visual Studio 2019 version 16.8. @@ -125,7 +125,7 @@ The compiler doesn't support most optional features of ISO C11. Several of these - Variable length array (VLA) support isn't planned. VLAs provide attack vectors comparable to [`gets`](../../c-runtime-library/gets-getws.md), which is deprecated and planned for removal. -### **`/std:clatest`** +### `/std:clatest` The **`/std:clatest`** option behaves like the `/std:c++latest` switch for the C++ compiler. The switch enables all currently implemented compiler and standard library features proposed for the next draft C standard, as well as some in-progress and experimental features. From ef045db96e0c79587f64678ca966862ed843543a Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 29 Jan 2025 14:11:42 -0800 Subject: [PATCH 0075/2255] feedback --- .../std-specify-language-standard-version.md | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/build/reference/std-specify-language-standard-version.md b/docs/build/reference/std-specify-language-standard-version.md index fb22bfeb6ae..93513ebafde 100644 --- a/docs/build/reference/std-specify-language-standard-version.md +++ b/docs/build/reference/std-specify-language-standard-version.md @@ -27,7 +27,7 @@ The Microsoft C++ compiler in Visual Studio 2017 and later versions doesn't supp ## C++ standards support -The **`/std`** option in effect during a C++ compilation can be detected by use of the [`_MSVC_LANG`](../../preprocessor/predefined-macros.md) preprocessor macro. For more information, see [Preprocessor Macros](../../preprocessor/predefined-macros.md). +Detect whether the **`/std`** option is in effect during a C++ compilation with the [`_MSVC_LANG`](../../preprocessor/predefined-macros.md) preprocessor macro. For more information, see [Preprocessor Macros](../../preprocessor/predefined-macros.md). > [!IMPORTANT] > Because some existing code depends on the value of the macro `__cplusplus` being `199711L`, the MSVC compiler doesn't change the value of this macro unless you explicitly opt in by setting [`/Zc:__cplusplus`](zc-cplusplus.md). Specify `/Zc:__cplusplus` and the **`/std`** option to set `__cplusplus` to the appropriate value. @@ -38,7 +38,7 @@ Enables C++14 standard-specific features implemented by the MSVC compiler. This This option disables compiler and standard library support for features that are changed or new in more recent versions of the language standard. However, it doesn't disable some C++17 features already implemented in previous releases of the MSVC compiler. For more information, see [Microsoft C/C++ language conformance](../../overview/visual-cpp-language-conformance.md). The tables indicate which C++17 features are enabled when you specify **`/std:c++14`**. -The following features remain enabled when the **`/std:c++14`** option is specified to avoid breaking changes for users who have already taken dependencies on the features available in or before Visual Studio 2015 Update 2: +The following features remain enabled when the **`/std:c++14`** option is specified to avoid breaking changes for users who took dependencies on features available in or before Visual Studio 2015 Update 2: - [Rules for `auto` with braced-init-lists](https://wg21.link/n3922) - [`typename` in template template-parameters](https://wg21.link/n4051) @@ -54,19 +54,19 @@ Depending on the MSVC compiler version or update level, C++17 features may not b ### `/std:c++20` -- Enables C++20 standard-specific features and behavior. Available starting in Visual Studio 2019 version 16.11, it enables the full set of C++20 features implemented by the MSVC compiler. Note that Visual Studio 2022 version 17.0 does not support `std::format`, the C++20 `` formatting extensions, and the range factories and range adaptors from `` under **`/std:c++20`** due to late-breaking changes in those features immediately after publication of the Standard. -- Enables the standard conformance mode provided by [**`/permissive-`**](./permissive-standards-conformance.md) unless explicitly overriden with **`/permissive`**. -- Disables compiler and standard library support for features that are new or changed after C++20. It specifically disables post-C++20 changes in the C++ Standard and versions of the Working Draft. It doesn't disable retroactive defect updates of the C++ Standard. +Enables C++20 standard-specific features and behavior. Available starting in Visual Studio 2019 version 16.11, it enables the full set of C++20 features implemented by the MSVC compiler. Visual Studio 2022 version 17.0 doesn't support `std::format`, the C++20 `` formatting extensions, and the range factories and range adaptors from `` under **`/std:c++20`** due to late-breaking changes in those features immediately after publication of the Standard. + +Enables the standard conformance mode provided by [**`/permissive-`**](./permissive-standards-conformance.md) unless explicitly overridden with **`/permissive`**. + +Disables compiler and standard library support for features that are new or changed after C++20. It specifically disables post-C++20 changes in the C++ Standard and versions of the Working Draft. It doesn't disable retroactive defect updates of the C++ Standard. ### `/std:c++23preview` -- Enables preview C++23 standard-specific features and behavior. Available starting in Visual Studio 2022 version 17.13. Preview features may change and may not be ABI compatible across releases. -- This switch will eventually be removed when the `/std:c++23` switch is implemented. +Enables preview C++23 standard-specific features and behavior. Available starting in Visual Studio 2022 version 17.13. Preview features may change and may not be ABI compatible across releases. + +This switch will be removed when the `/std:c++23` switch is implemented--at which point all of the C++23 features will be implemented and ABI stable. -This switch differs from `/std:c++latest` in the following ways: -- Only features in the published [N4950 ISO C++23 final working draft](https://wg21.link/n4950) are enabled. No features in the latest [N5001 working draft (tenatively named C++26)](https://wg21.link/n5001) are enabled. -- This switch will be removed in a release following the completion of the C++23 features. -- ??? Note that Visual Studio 2022 version 17.0 does not support the C++23 `` formatting extensions under **`/std:c++23preview`** due to late-breaking changes in those features immediately after publication of the Standard. +This switch differs from `/std:c++latest` in that it only enables features that are part of the C++23 standard. It does not enable experimental or in-progress features. ### `/std:c++latest` @@ -76,14 +76,14 @@ Depending on the MSVC compiler version or update level, C++17, C++20, C++23, or In versions of Visual Studio 2019 before version 16.11, **`/std:c++latest`** is required to enable all the compiler and standard library features of C++20. -Since Visual Studio 2019 version 16.8, the **`/std:c++latest`** option has enabled the standard conformance mode provided by [**`/permissive-`**](./permissive-standards-conformance.md) unless explicitly overriden with **`/permissive`**. +Since Visual Studio 2019 version 16.8, the **`/std:c++latest`** option has enabled the standard conformance mode provided by [**`/permissive-`**](./permissive-standards-conformance.md) unless explicitly overridden with **`/permissive`**. For a list of supported language and library features, see [What's New for C++ in Visual Studio](../../overview/what-s-new-for-visual-cpp-in-visual-studio.md). The **`/std:c++latest`** option doesn't enable features guarded by the **`/experimental`** switch, but may be required to enable them. > [!NOTE] -> The compiler and library features enabled by **`/std:c++latest`** may appear in a future C++ standard. Features that have not been approved are subject to breaking changes or removal without notice and are provided on an as-is basis. +> The compiler and library features enabled by **`/std:c++latest`** may appear in a future C++ standard. Features that haven't been approved are subject to breaking changes or removal without notice and are provided on an as-is basis. ## C standards support @@ -91,7 +91,7 @@ You can invoke the Microsoft C compiler by using the [`/TC` or `/Tc`](tc-tp-tc-t ### `/std:c11` -- Enables ISO C11 conformance. It's available starting in Visual Studio 2019 version 16.8. +Enables ISO C11 conformance. It's available starting in Visual Studio 2019 version 16.8. ### `/std:c17` From 4130577795335ed3bd79ca9f356b445966da0229 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 29 Jan 2025 14:12:44 -0800 Subject: [PATCH 0076/2255] Update docs/build/reference/std-specify-language-standard-version.md Co-authored-by: Michael B. Price --- docs/build/reference/std-specify-language-standard-version.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/std-specify-language-standard-version.md b/docs/build/reference/std-specify-language-standard-version.md index fb22bfeb6ae..2f7aab38236 100644 --- a/docs/build/reference/std-specify-language-standard-version.md +++ b/docs/build/reference/std-specify-language-standard-version.md @@ -72,7 +72,7 @@ This switch differs from `/std:c++latest` in the following ways: Enables all currently implemented compiler and standard library features proposed for the next ISO C++ working draft, as well as some in-progress and experimental features. This option is available starting in Visual Studio 2015 Update 3. -Depending on the MSVC compiler version or update level, C++17, C++20, C++23, or proposed C++26 features may not be fully implemented or fully conforming when you specify the **`/std:c++latest`** option. We recommend you use the latest version of Visual Studio for maximum standards conformance. For an overview of C++ language and library conformance in Visual C++ by release version, see [Microsoft C/C++ language conformance](../../overview/visual-cpp-language-conformance.md). +Depending on the MSVC compiler version or update level, features from published C++ standards or proposed features in the current C++ working draft, may not be fully implemented or fully conforming when you specify the **`/std:c++latest`** option. We recommend you use the latest version of Visual Studio for maximum standards conformance. For an overview of C++ language and library conformance in Visual C++ by release version, see [Microsoft C/C++ language conformance](../../overview/visual-cpp-language-conformance.md). In versions of Visual Studio 2019 before version 16.11, **`/std:c++latest`** is required to enable all the compiler and standard library features of C++20. From 9e5efac87676bc1b766ff36b7e32fa90d97fd7aa Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 29 Jan 2025 14:14:41 -0800 Subject: [PATCH 0077/2255] Update docs/build/reference/std-specify-language-standard-version.md Co-authored-by: Michael B. Price --- docs/build/reference/std-specify-language-standard-version.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/std-specify-language-standard-version.md b/docs/build/reference/std-specify-language-standard-version.md index 2f7aab38236..a6c233b0a1c 100644 --- a/docs/build/reference/std-specify-language-standard-version.md +++ b/docs/build/reference/std-specify-language-standard-version.md @@ -127,7 +127,7 @@ The compiler doesn't support most optional features of ISO C11. Several of these ### `/std:clatest` -The **`/std:clatest`** option behaves like the `/std:c++latest` switch for the C++ compiler. The switch enables all currently implemented compiler and standard library features proposed for the next draft C standard, as well as some in-progress and experimental features. +The **`/std:clatest`** option behaves like the `/std:c++latest` switch for the C++ compiler. The switch enables all currently implemented compiler and standard library features proposed in the next draft C standard, as well as some in-progress and experimental features. For more information, see the C Standard library features section of [Microsoft C/C++ language conformance](../../overview/visual-cpp-language-conformance.md). From 8b1e86c740332b536f03382cf71850130d32bfe8 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 29 Jan 2025 14:43:54 -0800 Subject: [PATCH 0078/2255] feedback --- .../reference/std-specify-language-standard-version.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/docs/build/reference/std-specify-language-standard-version.md b/docs/build/reference/std-specify-language-standard-version.md index 95d34bc4dd8..91cedb7884b 100644 --- a/docs/build/reference/std-specify-language-standard-version.md +++ b/docs/build/reference/std-specify-language-standard-version.md @@ -54,12 +54,10 @@ Depending on the MSVC compiler version or update level, C++17 features may not b ### `/std:c++20` -Enables C++20 standard-specific features and behavior. Available starting in Visual Studio 2019 version 16.11, it enables the full set of C++20 features implemented by the MSVC compiler. Visual Studio 2022 version 17.0 doesn't support `std::format`, the C++20 `` formatting extensions, and the range factories and range adaptors from `` under **`/std:c++20`** due to late-breaking changes in those features immediately after publication of the Standard. +Enables C++20 standard-specific features and behavior. Enables the standard conformance mode provided by [**`/permissive-`**](./permissive-standards-conformance.md) unless explicitly overridden with **`/permissive`**. -Disables compiler and standard library support for features that are new or changed after C++20. It specifically disables post-C++20 changes in the C++ Standard and versions of the Working Draft. It doesn't disable retroactive defect updates of the C++ Standard. - ### `/std:c++23preview` Enables preview C++23 standard-specific features and behavior. Available starting in Visual Studio 2022 version 17.13. Preview features may change and may not be ABI compatible across releases. @@ -70,12 +68,10 @@ This switch differs from `/std:c++latest` in that it only enables features that ### `/std:c++latest` -Enables all currently implemented compiler and standard library features proposed for the next ISO C++ working draft, as well as some in-progress and experimental features. This option is available starting in Visual Studio 2015 Update 3. +Enables all currently implemented compiler and standard library features proposed in the next ISO C++ working draft, as well as some in-progress and experimental features. This option is available starting with Visual Studio 2015 Update 3. Depending on the MSVC compiler version or update level, features from published C++ standards or proposed features in the current C++ working draft, may not be fully implemented or fully conforming when you specify the **`/std:c++latest`** option. We recommend you use the latest version of Visual Studio for maximum standards conformance. For an overview of C++ language and library conformance in Visual C++ by release version, see [Microsoft C/C++ language conformance](../../overview/visual-cpp-language-conformance.md). -In versions of Visual Studio 2019 before version 16.11, **`/std:c++latest`** is required to enable all the compiler and standard library features of C++20. - Since Visual Studio 2019 version 16.8, the **`/std:c++latest`** option has enabled the standard conformance mode provided by [**`/permissive-`**](./permissive-standards-conformance.md) unless explicitly overridden with **`/permissive`**. For a list of supported language and library features, see [What's New for C++ in Visual Studio](../../overview/what-s-new-for-visual-cpp-in-visual-studio.md). From a427fd31bc9a57c4f9535478b637350c561bb6c8 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 29 Jan 2025 14:55:37 -0800 Subject: [PATCH 0079/2255] feedback --- docs/build/reference/std-specify-language-standard-version.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build/reference/std-specify-language-standard-version.md b/docs/build/reference/std-specify-language-standard-version.md index 91cedb7884b..b239737a477 100644 --- a/docs/build/reference/std-specify-language-standard-version.md +++ b/docs/build/reference/std-specify-language-standard-version.md @@ -62,9 +62,9 @@ Enables the standard conformance mode provided by [**`/permissive-`**](./permiss Enables preview C++23 standard-specific features and behavior. Available starting in Visual Studio 2022 version 17.13. Preview features may change and may not be ABI compatible across releases. -This switch will be removed when the `/std:c++23` switch is implemented--at which point all of the C++23 features will be implemented and ABI stable. +This switch will be removed when the `/std:c++23` switch is implemented--at which point C++23 features will be fully implemented and ABI stable. If in project properties **C/C++** > **Language** you specify **Preview - ISO C++ 23 Standard (/std:c++preview)**, it will automatically change to mean `/std:c++23` once the new switch is implemented. -This switch differs from `/std:c++latest` in that it only enables features that are part of the C++23 standard. It does not enable experimental or in-progress features. +This switch differs from `/std:c++latest` in that it only enables features that are part of the C++23 standard. It doesn't enable experimental or in-progress features. ### `/std:c++latest` From 318e7ded006aea1a095ab9c8ec270289dbe018e3 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 29 Jan 2025 14:58:05 -0800 Subject: [PATCH 0080/2255] add more version info --- docs/build/reference/std-specify-language-standard-version.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/std-specify-language-standard-version.md b/docs/build/reference/std-specify-language-standard-version.md index b239737a477..51c32be2201 100644 --- a/docs/build/reference/std-specify-language-standard-version.md +++ b/docs/build/reference/std-specify-language-standard-version.md @@ -60,7 +60,7 @@ Enables the standard conformance mode provided by [**`/permissive-`**](./permiss ### `/std:c++23preview` -Enables preview C++23 standard-specific features and behavior. Available starting in Visual Studio 2022 version 17.13. Preview features may change and may not be ABI compatible across releases. +Enables preview C++23 standard-specific features and behavior. Available starting in Visual Studio 2022 version 17.13 Preview 3. Preview features may change and may not be ABI compatible across releases. This switch will be removed when the `/std:c++23` switch is implemented--at which point C++23 features will be fully implemented and ABI stable. If in project properties **C/C++** > **Language** you specify **Preview - ISO C++ 23 Standard (/std:c++preview)**, it will automatically change to mean `/std:c++23` once the new switch is implemented. From bdfb3a6563b230b6c9020e51ac3b86d06b7aac07 Mon Sep 17 00:00:00 2001 From: Paul Chapman Date: Wed, 29 Jan 2025 15:04:54 -0800 Subject: [PATCH 0081/2255] Update binary-compat-2015-2017.md added links to new C++ support docs --- docs/porting/binary-compat-2015-2017.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/porting/binary-compat-2015-2017.md b/docs/porting/binary-compat-2015-2017.md index 112a736a149..ecfc775e745 100644 --- a/docs/porting/binary-compat-2015-2017.md +++ b/docs/porting/binary-compat-2015-2017.md @@ -38,5 +38,7 @@ This error is by design. We recommend you keep the newest version installed. Mak ## See also -[Visual C++ change history](../porting/visual-cpp-change-history-2003-2015.md)\ +[Visual C++ change history](../porting/visual-cpp-change-history-2003-2015.md) [The latest supported Visual C++ Redistributable downloads](../windows/latest-supported-vc-redist.md) +[How to audit Visual C++ Runtime version usage](../windows/redist-version-auditing.md) +[Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](../lifecycle/faq/visual-c-faq) From 0845f08c4bced8bbcf67fe78c29193551a88f2d9 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 29 Jan 2025 15:06:23 -0800 Subject: [PATCH 0082/2255] change version --- docs/build/reference/std-specify-language-standard-version.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/std-specify-language-standard-version.md b/docs/build/reference/std-specify-language-standard-version.md index 51c32be2201..c9eeb3f5443 100644 --- a/docs/build/reference/std-specify-language-standard-version.md +++ b/docs/build/reference/std-specify-language-standard-version.md @@ -60,7 +60,7 @@ Enables the standard conformance mode provided by [**`/permissive-`**](./permiss ### `/std:c++23preview` -Enables preview C++23 standard-specific features and behavior. Available starting in Visual Studio 2022 version 17.13 Preview 3. Preview features may change and may not be ABI compatible across releases. +Enables preview C++23 standard-specific features and behavior. Available starting in Visual Studio 2022 version 17.13 Preview 4. Preview features may change and may not be ABI compatible across releases. This switch will be removed when the `/std:c++23` switch is implemented--at which point C++23 features will be fully implemented and ABI stable. If in project properties **C/C++** > **Language** you specify **Preview - ISO C++ 23 Standard (/std:c++preview)**, it will automatically change to mean `/std:c++23` once the new switch is implemented. From 661e35fc4e53afa87cecd47e16c9930eb4a1382f Mon Sep 17 00:00:00 2001 From: Paul Chapman Date: Wed, 29 Jan 2025 15:10:15 -0800 Subject: [PATCH 0083/2255] Update latest-supported-vc-redist.md added links to new C++ support docs --- docs/windows/latest-supported-vc-redist.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index 840af6a36c9..1aa940706b7 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -115,7 +115,13 @@ Download Redistributable files for other languages and architectures from: - Redistributable files for X86, X64, and IA64 architectures are available from [Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package MFC Security Update](https://www.microsoft.com/download/details.aspx?id=26347). -## Release notes +## See Also + +- [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md) +- [How to audit Visual C++ Runtime version usage](../windows/redist-version-auditing) +- [Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](../lifecycle/faq/visual-c-faq) + +**Release notes** - [Visual Studio 2022 release notes](/visualstudio/releases/2022/release-notes) - [What's new for C++ in Visual Studio](../overview//what-s-new-for-visual-cpp-in-visual-studio.md) @@ -125,7 +131,7 @@ Download Redistributable files for other languages and architectures from: - [A year of C++ improvements](https://devblogs.microsoft.com/cppblog/a-year-of-cpp-improvements-in-visual-studio-vs-code-and-vcpkg) - [Microsoft Visual C++ compiler versioning](../overview/compiler-versions.md) -## C++ conformance notes +**C++ conformance notes** - [C++ conformance improvements in Visual Studio](../overview/cpp-conformance-improvements.md) - [C++ conformance improvements in Visual Studio 2019](../overview/cpp-conformance-improvements-2019.md) From 1fa94eef99b0eff3eb9d694754edb3d77bc4db6b Mon Sep 17 00:00:00 2001 From: Paul Chapman Date: Wed, 29 Jan 2025 15:14:15 -0800 Subject: [PATCH 0084/2255] Update redist-version-auditing.md add links to support docs --- docs/windows/redist-version-auditing.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/windows/redist-version-auditing.md b/docs/windows/redist-version-auditing.md index ce37cee07e6..3daecca78ff 100644 --- a/docs/windows/redist-version-auditing.md +++ b/docs/windows/redist-version-auditing.md @@ -193,3 +193,4 @@ Here is where each version of the VC Runtime is installed: [Redistributing Visual C++ Files](redistributing-visual-cpp-files.md)\ [The latest supported Visual C++ downloads](latest-supported-vc-redist.md)\ [Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq) +[C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md) From 8e99339b3afc949ef83592d2ad79d41c5b3c536d Mon Sep 17 00:00:00 2001 From: Paul Chapman Date: Wed, 29 Jan 2025 15:54:12 -0800 Subject: [PATCH 0085/2255] fix see also link section --- docs/porting/binary-compat-2015-2017.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/porting/binary-compat-2015-2017.md b/docs/porting/binary-compat-2015-2017.md index ecfc775e745..c374051f010 100644 --- a/docs/porting/binary-compat-2015-2017.md +++ b/docs/porting/binary-compat-2015-2017.md @@ -38,7 +38,7 @@ This error is by design. We recommend you keep the newest version installed. Mak ## See also -[Visual C++ change history](../porting/visual-cpp-change-history-2003-2015.md) -[The latest supported Visual C++ Redistributable downloads](../windows/latest-supported-vc-redist.md) -[How to audit Visual C++ Runtime version usage](../windows/redist-version-auditing.md) -[Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](../lifecycle/faq/visual-c-faq) +[Visual C++ change history](../porting/visual-cpp-change-history-2003-2015.md)\ +[The latest supported Visual C++ Redistributable downloads](../windows/latest-supported-vc-redist.md)\ +[How to audit Visual C++ Runtime version usage](../windows/redist-version-auditing.md)\ +[Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](../lifecycle/faq/visual-c-faq)\ From 1fbd0341bf9b61226f2be49ddabc0ac8a0ef6143 Mon Sep 17 00:00:00 2001 From: Paul Chapman Date: Wed, 29 Jan 2025 15:55:44 -0800 Subject: [PATCH 0086/2255] Fix broken links in redist-version-auditing.md --- docs/windows/redist-version-auditing.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/windows/redist-version-auditing.md b/docs/windows/redist-version-auditing.md index 3daecca78ff..e66847313fa 100644 --- a/docs/windows/redist-version-auditing.md +++ b/docs/windows/redist-version-auditing.md @@ -192,5 +192,5 @@ Here is where each version of the VC Runtime is installed: [Redistributing Visual C++ Files](redistributing-visual-cpp-files.md)\ [The latest supported Visual C++ downloads](latest-supported-vc-redist.md)\ -[Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq) -[C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md) +[Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq)\ +[C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md)\ From 9989e16fcb8cf1db66341f327010bc9c8c56a9ba Mon Sep 17 00:00:00 2001 From: Paul Chapman Date: Wed, 29 Jan 2025 15:59:48 -0800 Subject: [PATCH 0087/2255] Remove trailing backslash in markdown link --- docs/porting/binary-compat-2015-2017.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/porting/binary-compat-2015-2017.md b/docs/porting/binary-compat-2015-2017.md index c374051f010..b7faad6bd6f 100644 --- a/docs/porting/binary-compat-2015-2017.md +++ b/docs/porting/binary-compat-2015-2017.md @@ -41,4 +41,4 @@ This error is by design. We recommend you keep the newest version installed. Mak [Visual C++ change history](../porting/visual-cpp-change-history-2003-2015.md)\ [The latest supported Visual C++ Redistributable downloads](../windows/latest-supported-vc-redist.md)\ [How to audit Visual C++ Runtime version usage](../windows/redist-version-auditing.md)\ -[Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](../lifecycle/faq/visual-c-faq)\ +[Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](../lifecycle/faq/visual-c-faq) From f5b0e57971b5c725d5d04e286732b8563c8e2753 Mon Sep 17 00:00:00 2001 From: Paul Chapman Date: Wed, 29 Jan 2025 16:00:17 -0800 Subject: [PATCH 0088/2255] Remove trailing backslash in markdown link --- docs/windows/redist-version-auditing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/windows/redist-version-auditing.md b/docs/windows/redist-version-auditing.md index e66847313fa..12b325c5ac7 100644 --- a/docs/windows/redist-version-auditing.md +++ b/docs/windows/redist-version-auditing.md @@ -193,4 +193,4 @@ Here is where each version of the VC Runtime is installed: [Redistributing Visual C++ Files](redistributing-visual-cpp-files.md)\ [The latest supported Visual C++ downloads](latest-supported-vc-redist.md)\ [Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq)\ -[C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md)\ +[C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md) From 71be91a55f9ab9ee6ddf70f553a07b98b3411a69 Mon Sep 17 00:00:00 2001 From: Paul Chapman Date: Wed, 29 Jan 2025 17:11:58 -0800 Subject: [PATCH 0089/2255] Fix broken link in binary compatibility doc --- docs/porting/binary-compat-2015-2017.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/porting/binary-compat-2015-2017.md b/docs/porting/binary-compat-2015-2017.md index b7faad6bd6f..86ad8957757 100644 --- a/docs/porting/binary-compat-2015-2017.md +++ b/docs/porting/binary-compat-2015-2017.md @@ -41,4 +41,4 @@ This error is by design. We recommend you keep the newest version installed. Mak [Visual C++ change history](../porting/visual-cpp-change-history-2003-2015.md)\ [The latest supported Visual C++ Redistributable downloads](../windows/latest-supported-vc-redist.md)\ [How to audit Visual C++ Runtime version usage](../windows/redist-version-auditing.md)\ -[Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](../lifecycle/faq/visual-c-faq) +[Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq) From a3e98e76381e404bc9f4005c9cec511773468963 Mon Sep 17 00:00:00 2001 From: Paul Chapman Date: Wed, 29 Jan 2025 17:13:50 -0800 Subject: [PATCH 0090/2255] Fix broken links in documentation --- docs/windows/latest-supported-vc-redist.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index 1aa940706b7..300e26b7dd8 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -118,8 +118,8 @@ Download Redistributable files for other languages and architectures from: ## See Also - [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md) -- [How to audit Visual C++ Runtime version usage](../windows/redist-version-auditing) -- [Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](../lifecycle/faq/visual-c-faq) +- [How to audit Visual C++ Runtime version usage](redist-version-auditing) +- [Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq) **Release notes** From 24fe3138df19964212da2cf6d770ca341ebc576d Mon Sep 17 00:00:00 2001 From: Paul Chapman Date: Wed, 29 Jan 2025 17:17:46 -0800 Subject: [PATCH 0091/2255] Fix link extension in documentation --- docs/windows/latest-supported-vc-redist.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index 300e26b7dd8..38c47b23de4 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -118,7 +118,7 @@ Download Redistributable files for other languages and architectures from: ## See Also - [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md) -- [How to audit Visual C++ Runtime version usage](redist-version-auditing) +- [How to audit Visual C++ Runtime version usage](redist-version-auditing.md) - [Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq) **Release notes** From 5c4462d68d18602a40b040d5eae4667a639b1a31 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Thu, 30 Jan 2025 11:30:23 -0800 Subject: [PATCH 0092/2255] remove identifying info (#5758) * remove identifying info * remove identifying info --- docs/linux/media/vs2019-debugger-settings.png | Bin 47121 -> 48253 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/linux/media/vs2019-debugger-settings.png b/docs/linux/media/vs2019-debugger-settings.png index 43d7f8787be49b4e0c7cc3652d51dced703ba664..676aa732cbdcd19a196a9b33ef9517702d5d0ed8 100644 GIT binary patch literal 48253 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 YVNfHaw5*OdE_y0Nkw}yA!NE_Bxe5+# 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 iEzms Date: Sat, 1 Feb 2025 00:16:32 +0800 Subject: [PATCH 0093/2255] Update C2153 --- .../compiler-errors-1/compiler-error-c2153.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2153.md b/docs/error-messages/compiler-errors-1/compiler-error-c2153.md index 893455edab7..2090da157a4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2153.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2153.md @@ -1,23 +1,26 @@ --- -description: "Learn more about: Compiler Error C2153" title: "Compiler Error C2153" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2153" +ms.date: "01/31/2025" f1_keywords: ["C2153"] helpviewer_keywords: ["C2153"] -ms.assetid: cfc50cb7-9a0f-4b5b-879a-d419c99f7be1 --- # Compiler Error C2153 -hex constants must have at least one hex digit +integer literals must have at least one digit -Hexadecimal constants 0x, 0X, and \x are not valid. At least one hex digit must follow x or X. +Hexadecimal and binary literals must contain at least one digit after the leading sequence (`0x`, `0X`, `0b`, or `0B`), otherwise the trailing character may be incorrectly interpreted as a suffix or literal operator. See [Integer literals](../../cpp/numeric-boolean-and-pointer-literals-cpp.md#integer-literals) for more information. The following sample generates C2153: ```cpp // C2153.cpp -int main() { - int a= 0x; // C2153 - int b= 0xA; // OK +int main() +{ + int a = 0x; // C2153 + int b = 0x0; // OK + + int c = 0b; // C2153 + int d = 0b0; // OK } ``` From 4f1cde12c898dd042bf3854eb69f381e50374f24 Mon Sep 17 00:00:00 2001 From: BIBlical33 <76949665+BIBlical33@users.noreply.github.com> Date: Fri, 31 Jan 2025 22:48:06 +0300 Subject: [PATCH 0094/2255] Update basic-string-class.md Fix typo in insert functio --- docs/standard-library/basic-string-class.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/standard-library/basic-string-class.md b/docs/standard-library/basic-string-class.md index 43c1e29f5c4..4cdacb5cc68 100644 --- a/docs/standard-library/basic-string-class.md +++ b/docs/standard-library/basic-string-class.md @@ -2964,7 +2964,8 @@ iterator insert( iterator insert( iterator iter, - value_type char_value)l + value_type char_value); + template void insert( iterator iter, From 02370d1448d711a2f56012c77dc4a3e657e57f4c Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 31 Jan 2025 14:34:58 -0800 Subject: [PATCH 0095/2255] update f1 values --- .../compiler-errors-1/compiler-errors-c2001-through-c2099.md | 4 ++-- .../compiler-errors-1/compiler-errors-c2100-through-c2199.md | 3 +-- .../compiler-errors-1/compiler-errors-c2200-through-c2299.md | 5 ++--- .../compiler-errors-1/compiler-errors-c2400-through-c2499.md | 1 - .../compiler-fatal-errors-c999-through-c1999.md | 4 ++-- .../compiler-errors-2/compiler-errors-c2500-through-c2599.md | 1 - .../compiler-errors-2/compiler-errors-c2600-through-c2699.md | 1 - .../compiler-errors-2/compiler-errors-c2700-through-c2799.md | 1 - .../compiler-errors-2/compiler-errors-c2800-through-c2899.md | 1 - .../compiler-errors-2/compiler-errors-c2900-through-c3499.md | 5 ++--- .../compiler-errors-2/compiler-errors-c3000-through-c3099.md | 5 ++--- .../compiler-errors-2/compiler-errors-c3100-through-c3199.md | 5 ++--- .../compiler-errors-2/compiler-errors-c3200-through-c3299.md | 1 - .../compiler-errors-2/compiler-errors-c3400-through-c3499.md | 3 +-- .../compiler-errors-2/compiler-errors-c3500-through-c3999.md | 3 ++- .../compiler-errors-2/compiler-errors-c7500-through-c7999.md | 4 ++-- .../compiler-warnings-c4000-through-c4199.md | 3 ++- .../compiler-warnings-c4200-through-c4399.md | 1 + .../compiler-warnings-c4600-through-c4799.md | 2 +- .../compiler-warnings-c4800-through-c4999.md | 4 ++-- .../compiler-warnings-c5200-through-c5399.md | 4 ++-- docs/error-messages/toc.yml | 2 +- .../tool-errors/math-errors-m6101-through-m6205.md | 5 ++--- 23 files changed, 29 insertions(+), 39 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-errors-c2001-through-c2099.md b/docs/error-messages/compiler-errors-1/compiler-errors-c2001-through-c2099.md index eff111136ba..fc33aed7db9 100644 --- a/docs/error-messages/compiler-errors-1/compiler-errors-c2001-through-c2099.md +++ b/docs/error-messages/compiler-errors-1/compiler-errors-c2001-through-c2099.md @@ -2,8 +2,8 @@ description: "Learn more about: Compiler errors C2001 through C2099" title: "Compiler errors C2001 through C2099" ms.date: 08/24/2022 -f1_keywords: ["C2000", "C2029"] -helpviewer_keywords: ["C2000", "C2029"] +f1_keywords: ["C2029"] +helpviewer_keywords: ["C2029"] --- # Compiler errors C2001 through C2099 diff --git a/docs/error-messages/compiler-errors-1/compiler-errors-c2100-through-c2199.md b/docs/error-messages/compiler-errors-1/compiler-errors-c2100-through-c2199.md index f6bbfd99175..6d59a9e2d6d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-errors-c2100-through-c2199.md +++ b/docs/error-messages/compiler-errors-1/compiler-errors-c2100-through-c2199.md @@ -3,8 +3,7 @@ description: "Learn more about: Compiler errors C2100 through C2199" title: "Compiler errors C2100 through C2199" ms.date: "04/21/2019" f1_keywords: ["C2119", "C2123", "C2125", "C2126", "C2127", "C2136", "C2176", "C2187", "C2189"] -helpviewer_keywords: ["C2119", "C2123", "C2125", "C2126", "C2127", "C2131", "C2136", "C2176", "C2187", "C2189"] -ms.assetid: 1ccab076-0954-4386-b959-d3112a6793ae +helpviewer_keywords: ["C2119", "C2123", "C2125", "C2126", "C2127", "C2136", "C2176", "C2187", "C2189"] --- # Compiler errors C2100 through C2199 diff --git a/docs/error-messages/compiler-errors-1/compiler-errors-c2200-through-c2299.md b/docs/error-messages/compiler-errors-1/compiler-errors-c2200-through-c2299.md index aeb9e58f334..8dd0d16314e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-errors-c2200-through-c2299.md +++ b/docs/error-messages/compiler-errors-1/compiler-errors-c2200-through-c2299.md @@ -2,9 +2,8 @@ description: "Learn more about: Compiler errors C2200 through C2299" title: "Compiler errors C2200 through C2299" ms.date: "04/21/2019" -f1_keywords: ["C2202", "C2209", "C2210", "C2211", "C2214", "C2215", "C2221", "C2225", "C2230", "C2235", "C2237", "C2239", "C2240", "C2257", "C2260", "C2263", "C2265", "C2269", "C2278", "C2281", "C2282", "C2288", "C2291", "C2294"] -helpviewer_keywords: ["C2202", "C2209", "C2210", "C2211", "C2214", "C2215", "C2221", "C2225", "C2230", "C2235", "C2237", "C2239", "C2240", "C2257", "C2260", "C2263", "C2265", "C2269", "C2278", "C2281", "C2282", "C2288", "C2291", "C2294"] -ms.assetid: 9b36d11b-9510-4390-96f1-0c9235124d14 +f1_keywords: ["C2202", "C2209", "C2210", "C2211", "C2214", "C2215", "C2221", "C2225", "C2230", "C2235", "C2237", "C2239", "C2240", "C2257", "C2260", "C2263", "C2265", "C2269", "C2278", "C2281", "C2282", "C2284", "C2288", "C2291", "C2294"] +helpviewer_keywords: ["C2202", "C2209", "C2210", "C2211", "C2214", "C2215", "C2221", "C2225", "C2230", "C2235", "C2237", "C2239", "C2240", "C2257", "C2260", "C2263", "C2265", "C2269", "C2278", "C2281", "C2282", "C2284", "C2288", "C2291", "C2294"] --- # Compiler errors C2200 through C2299 diff --git a/docs/error-messages/compiler-errors-1/compiler-errors-c2400-through-c2499.md b/docs/error-messages/compiler-errors-1/compiler-errors-c2400-through-c2499.md index 31902125890..a7ffbaba5f1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-errors-c2400-through-c2499.md +++ b/docs/error-messages/compiler-errors-1/compiler-errors-c2400-through-c2499.md @@ -4,7 +4,6 @@ title: "Compiler errors C2400 Through C2499" ms.date: "04/21/2019" f1_keywords: ["C2416", "C2442", "C2453", "C2454", "C2455", "C2456", "C2468", "C2475", "C2478", "C2481", "C2497"] helpviewer_keywords: ["C2416", "C2442", "C2453", "C2454", "C2455", "C2456", "C2468", "C2475", "C2478", "C2481", "C2497"] -ms.assetid: f1f05572-af0b-497b-bde4-4c81ec01af3b --- # Compiler errors C2400 Through C2499 diff --git a/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md b/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md index 23e7c7abff2..0bb402090b1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md +++ b/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md @@ -2,8 +2,8 @@ description: "Learn more about: Compiler fatal errors C1001 through C1907" title: "Compiler fatal errors C1001 through C1907" ms.date: 01/24/2025 -f1_keywords: ["C1001", "C1002", "C1003", "C1004", "C1005", "C1006", "C1007", "C1008", "C1009", "C1010", "C1011", "C1012", "C1013", "C1014", "C1015", "C1016", "C1017", "C1018", "C1019", "C1020", "C1021", "C1022", "C1023", "C1024", "C1025", "C1026", "C1027", "C1030", "C1032", "C1033", "C1034", "C1035", "C1036", "C1037", "C1038", "C1039", "C1040", "C1041", "C1042", "C1043", "C1044", "C1045", "C1046", "C1047", "C1048", "C1049", "C1051", "C1052", "C1053", "C1054", "C1055", "C1056", "C1057", "C1058", "C1059", "C1060", "C1061", "C1063", "C1064", "C1065", "C1067", "C1068", "C1069", "C1070", "C1071", "C1073", "C1074", "C1075", "C1076", "C1077", "C1079", "C1080", "C1081", "C1082", "C1083", "C1084", "C1085", "C1086", "C1087", "C1088", "C1089", "C1090", "C1091", "C1092", "C1093", "C1094", "C1098", "C1099", "C1100", "C1101", "C1102", "C1103", "C1104", "C1105", "C1107", "C1108", "C1109", "C1110", "C1111", "C1112", "C1113", "C1114", "C1116", "C1117", "C1118", "C1119", "C1120", "C1121", "C1126", "C1127", "C1128", "C1189", "C1190", "C1191", "C1192", "C1193", "C1194", "C1195", "C1196", "C1197", "C1198", "C1199", "C1201", "C1202", "C1203", "C1204", "C1205", "C1206", "C1207", "C1208", "C1209", "C1210", "C1211", "C1212", "C1213", "C1214", "C1300", "C1301", "C1302", "C1303", "C1304", "C1305", "C1306", "C1307", "C1308", "C1309", "C1310", "C1311", "C1312", "C1313", "C1350", "C1351", "C1352", "C1353", "C1354", "C1355", "C1356", "C1357", "C1358", "C1382", "C1383", "C1384", "C1385", "C1451", "C1505", "C1506", "C1507", "C1508", "C1509", "C1510", "C1511", "C1601", "C1602", "C1603", "C1604", "C1605", "C1852", "C1853", "C1854", "C1859", "C1900", "C1901", "C1902", "C1903", "C1904", "C1905", "C1906", "C1907"] -helpviewer_keywords: ["C1001", "C1002", "C1003", "C1004", "C1005", "C1006", "C1007", "C1008", "C1009", "C1010", "C1011", "C1012", "C1013", "C1014", "C1015", "C1016", "C1017", "C1018", "C1019", "C1020", "C1021", "C1022", "C1023", "C1024", "C1025", "C1026", "C1027", "C1030", "C1032", "C1033", "C1034", "C1035", "C1036", "C1037", "C1038", "C1039", "C1040", "C1041", "C1042", "C1043", "C1044", "C1045", "C1046", "C1047", "C1048", "C1049", "C1051", "C1052", "C1053", "C1054", "C1055", "C1056", "C1057", "C1058", "C1059", "C1060", "C1061", "C1063", "C1064", "C1065", "C1067", "C1068", "C1069", "C1070", "C1071", "C1073", "C1074", "C1075", "C1076", "C1077", "C1079", "C1080", "C1081", "C1082", "C1083", "C1084", "C1085", "C1086", "C1087", "C1088", "C1089", "C1090", "C1091", "C1092", "C1093", "C1094", "C1098", "C1099", "C1100", "C1101", "C1102", "C1103", "C1104", "C1105", "C1107", "C1108", "C1109", "C1110", "C1111", "C1112", "C1113", "C1114", "C1116", "C1117", "C1118", "C1119", "C1120", "C1121", "C1126", "C1127", "C1128", "C1189", "C1190", "C1191", "C1192", "C1193", "C1194", "C1195", "C1196", "C1197", "C1198", "C1199", "C1201", "C1202", "C1203", "C1204", "C1205", "C1206", "C1207", "C1208", "C1209", "C1210", "C1211", "C1212", "C1213", "C1214", "C1300", "C1301", "C1302", "C1303", "C1304", "C1305", "C1306", "C1307", "C1308", "C1309", "C1310", "C1311", "C1312", "C1313", "C1350", "C1351", "C1352", "C1353", "C1354", "C1355", "C1356", "C1357", "C1358", "C1382", "C1383", "C1384", "C1385", "C1451", "C1505", "C1506", "C1507", "C1508", "C1509", "C1510", "C1511", "C1601", "C1602", "C1603", "C1604", "C1605", "C1852", "C1853", "C1854", "C1859", "C1900", "C1901", "C1902", "C1903", "C1904", "C1905", "C1906", "C1907"] +f1_keywords: ["C1006", "C1024", "C1027", "C1030", "C1032", "C1034", "C1036", "C1039", "C1040", "C1041", "C1042", "C1043", "C1044", "C1048", "C1056", "C1058", "C1059", "C1063", "C1069", "C1101", "C1102", "C1105", "C1110", "C1111", "C1112", "C1114", "C1118", "C1119", "C1127", "C1193", "C1194", "C1195", "C1198", "C1199", "C1203", "C1204", "C1212", "C1213", "C1214", "C1300", "C1301", "C1302", "C1303", "C1304", "C1306", "C1354", "C1355", "C1356", "C1357", "C1358", "C1384", "C1385", "C1451", "C1505", "C1507", "C1511", "C1604", "C1605", "C1859", "C1901", "C1906", "C1907"] +helpviewer_keywords: ["C1006", "C1024", "C1027", "C1030", "C1032", "C1034", "C1036", "C1039", "C1040", "C1041", "C1042", "C1043", "C1044", "C1048", "C1056", "C1058", "C1059", "C1063", "C1069", "C1101", "C1102", "C1105", "C1110", "C1111", "C1112", "C1114", "C1118", "C1119", "C1127", "C1193", "C1194", "C1195", "C1198", "C1199", "C1203", "C1204", "C1212", "C1213", "C1214", "C1300", "C1301", "C1302", "C1303", "C1304", "C1306", "C1354", "C1355", "C1356", "C1357", "C1358", "C1384", "C1385", "C1451", "C1505", "C1507", "C1511", "C1604", "C1605", "C1859", "C1901", "C1906", "C1907"] --- # Compiler fatal errors C1001 through C1907 diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c2500-through-c2599.md b/docs/error-messages/compiler-errors-2/compiler-errors-c2500-through-c2599.md index dc47e09a5b9..e8f3ea5bb0c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c2500-through-c2599.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c2500-through-c2599.md @@ -4,7 +4,6 @@ title: "Compiler errors C2500 Through C2599" ms.date: "04/21/2019" f1_keywords: ["C2501", "C2508", "C2515", "C2519", "C2520", "C2522", "C2525", "C2527", "C2536", "C2538", "C2539", "C2546", "C2547", "C2559", "C2560", "C2564", "C2565", "C2576", "C2578", "C2580", "C2590", "C2591", "C2595", "C2596"] helpviewer_keywords: ["C2501", "C2508", "C2515", "C2519", "C2520", "C2522", "C2525", "C2527", "C2536", "C2538", "C2539", "C2546", "C2547", "C2559", "C2560", "C2564", "C2565", "C2576", "C2578", "C2580", "C2590", "C2591", "C2595", "C2596"] -ms.assetid: a869aaed-e9f6-49e3-b273-00ea7f45bed7 --- # Compiler errors C2500 Through C2599 diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c2600-through-c2699.md b/docs/error-messages/compiler-errors-2/compiler-errors-c2600-through-c2699.md index 4c6182230c5..bc35a9c19aa 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c2600-through-c2699.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c2600-through-c2699.md @@ -4,7 +4,6 @@ title: "Compiler errors C2600 Through C2699" ms.date: "04/21/2019" f1_keywords: ["C2604", "C2606", "C2607", "C2608", "C2609", "C2610", "C2615", "C2618", "C2620", "C2621", "C2622", "C2623", "C2625", "C2629", "C2631", "C2639", "C2641", "C2642", "C2643", "C2644", "C2684", "C2685", "C2686", "C2697"] helpviewer_keywords: ["C2604", "C2606", "C2607", "C2608", "C2609", "C2610", "C2615", "C2618", "C2620", "C2621", "C2622", "C2623", "C2625", "C2629", "C2631", "C2639", "C2641", "C2642", "C2643", "C2644", "C2684", "C2685", "C2686", "C2697"] -ms.assetid: 73c6319f-cbea-4a2f-913b-90dc1af61f64 --- # Compiler errors C2600 Through C2699 diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c2700-through-c2799.md b/docs/error-messages/compiler-errors-2/compiler-errors-c2700-through-c2799.md index 9d44ce11f4c..b373634b2c6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c2700-through-c2799.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c2700-through-c2799.md @@ -4,7 +4,6 @@ title: "Compiler errors C2700 Through C2799" ms.date: "04/21/2019" f1_keywords: ["C2716", "C2717", "C2727", "C2729", "C2737", "C2740", "C2741", "C2742", "C2744", "C2746", "C2747", "C2759", "C2763", "C2769", "C2772", "C2789", "C2796", "C2799"] helpviewer_keywords: ["C2716", "C2717", "C2727", "C2729", "C2737", "C2740", "C2741", "C2742", "C2744", "C2746", "C2747", "C2759", "C2763", "C2769", "C2772", "C2789", "C2796", "C2799"] -ms.assetid: 6ee257bb-94bc-42b9-af2c-3c73926afba4 --- # Compiler errors C2700 Through C2799 diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c2800-through-c2899.md b/docs/error-messages/compiler-errors-2/compiler-errors-c2800-through-c2899.md index 3b351c5ffe7..79059f69f5e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c2800-through-c2899.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c2800-through-c2899.md @@ -4,7 +4,6 @@ title: "Compiler errors C2800 Through C2899" ms.date: 06/01/2022 f1_keywords: ["C2816", "C2820", "C2822", "C2826", "C2832", "C2836", "C2837", "C2840", "C2841", "C2848", "C2851", "C2852", "C2853", "C2866", "C2880", "C2887", "C2889", "C2895", "C2899"] helpviewer_keywords: ["C2816", "C2820", "C2822", "C2826", "C2832", "C2836", "C2837", "C2840", "C2841", "C2848", "C2851", "C2852", "C2853", "C2866", "C2880", "C2887", "C2889", "C2895", "C2899"] -ms.assetid: e5de1e92-746a-4315-a331-c5d9efb76dbb --- # Compiler errors C2800 Through C2899 diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c2900-through-c3499.md b/docs/error-messages/compiler-errors-2/compiler-errors-c2900-through-c3499.md index 9bb91a7e7cd..0d79a669828 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c2900-through-c3499.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c2900-through-c3499.md @@ -2,9 +2,8 @@ description: "Learn more about: Compiler errors C2900 Through C2999" title: "Compiler errors C2900 Through C2999" ms.date: 06/01/2022 -f1_keywords: ["C2900", "C2901", "C2905", "C2907", "C2915", "C2916", "C2922", "C2924", "C2925", "C2926", "C2938", "C2949", "C2950", "C2954", "C2956", "C2960", "C2961", "C2963", "C2964", "C2965", "C2966", "C2967", "C2968", "C2972", "C2980", "C2981", "C2982", "C2983", "C2984", "C2985", "C2986", "C2987", "C2997", "C2999"] -helpviewer_keywords: ["C2900", "C2901", "C2905", "C2907", "C2915", "C2916", "C2922", "C2924", "C2925", "C2926", "C2938", "C2949", "C2950", "C2954", "C2956", "C2960", "C2961", "C2963", "C2964", "C2965", "C2966", "C2967", "C2968", "C2972", "C2980", "C2981", "C2982", "C2983", "C2984", "C2985", "C2986", "C2987", "C2997", "C2999"] -ms.assetid: e3440738-e11b-4878-9ae3-6bc6c53ba461 +f1_keywords: [""C2900", "C2901", "C2905", "C2907", "C2915", "C2916", "C2922", "C2924", "C2925", "C2926", "C2938", "C2949", "C2950", "C2954", "C2960", "C2961", "C2963", "C2964", "C2965", "C2966", "C2967", "C2968", "C2972", "C2980", "C2981", "C2982", "C2983", "C2984", "C2985", "C2986", "C2987", "C2997"] +helpviewer_keywords: ["C2900", "C2901", "C2905", "C2907", "C2915", "C2916", "C2922", "C2924", "C2925", "C2926", "C2938", "C2949", "C2950", "C2954", "C2960", "C2961", "C2963", "C2964", "C2965", "C2966", "C2967", "C2968", "C2972", "C2980", "C2981", "C2982", "C2983", "C2984", "C2985", "C2986", "C2987", "C2997"] --- # Compiler errors C2900 Through C2999 diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c3000-through-c3099.md b/docs/error-messages/compiler-errors-2/compiler-errors-c3000-through-c3099.md index a4abebdc6d7..49844105dce 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c3000-through-c3099.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c3000-through-c3099.md @@ -2,9 +2,8 @@ description: "Learn more about: Compiler errors C3000 Through C3099" title: "Compiler errors C3000 Through C3099" ms.date: 06/01/2022 -f1_keywords: ["C3051", "C3061", "C3064", "C3067", "C3074", "C3078", "C3079", "C3081", "C3082", "C3086", "C3088", "C3089", "C3090", "C3091", "C3092", "C3093", "C3098"] -helpviewer_keywords: ["C3051", "C3061", "C3064", "C3067", "C3074", "C3078", "C3079", "C3081", "C3082", "C3086", "C3088", "C3089", "C3090", "C3091", "C3092", "C3093", "C3098"] -ms.assetid: 01b7b9cb-b351-4b5a-8cb0-1fcddb08d2ab +f1_keywords: ["C3000", "C3051", "C3061", "C3064", "C3067", "C3074", "C3078", "C3079", "C3081", "C3082", "C3086", "C3088", "C3089", "C3090", "C3091", "C3092", "C3093", "C3098"] +helpviewer_keywords: ["C3000", "C3051", "C3061", "C3064", "C3067", "C3074", "C3078", "C3079", "C3081", "C3082", "C3086", "C3088", "C3089", "C3090", "C3091", "C3092", "C3093", "C3098"] --- # Compiler errors C3000 Through C3099 diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c3100-through-c3199.md b/docs/error-messages/compiler-errors-2/compiler-errors-c3100-through-c3199.md index 9bec78ffec9..cc67e3b7272 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c3100-through-c3199.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c3100-through-c3199.md @@ -2,9 +2,8 @@ description: "Learn more about: Compiler errors C3100 Through C3199" title: "Compiler errors C3100 Through C3199" ms.date: 06/01/2022 -f1_keywords: ["C3102", "C3105", "C3107", "C3108", "C3109", "C3111", "C3112", "C3119", "C3122", "C3123", "C3124", "C3125", "C3127", "C3128", "C3129", "C3143", "C3144", "C3146", "C3147", "C3148", "C3151", "C3158", "C3164", "C3165", "C3169", "C3177", "C3178", "C3184", "C3188", "C3191", "C3193"] -helpviewer_keywords: ["C3102", "C3105", "C3107", "C3108", "C3109", "C3111", "C3112", "C3119", "C3122", "C3123", "C3124", "C3125", "C3127", "C3128", "C3129", "C3143", "C3144", "C3146", "C3147", "C3148", "C3151", "C3158", "C3164", "C3165", "C3169", "C3177", "C3178", "C3184", "C3188", "C3191", "C3193"] -ms.assetid: 7bc40c2f-6a8d-488a-b665-f39375afee77 +f1_keywords: ["C3102", "C3105", "C3107", "C3108", "C3109", "C3111", "C3112", "C3119", "C3122", "C3123", "C3124", "C3125", "C3127", "C3128", "C3129", "C3143", "C3144", "C3146", "C3147", "C3148", "C3151", "C3158", "C3164", "C3165", "C3169", "C3177", "C3178", "C3184", "C3186", "C3188", "C3191", "C3193"] +helpviewer_keywords: ["C3102", "C3105", "C3107", "C3108", "C3109", "C3111", "C3112", "C3119", "C3122", "C3123", "C3124", "C3125", "C3127", "C3128", "C3129", "C3143", "C3144", "C3146", "C3147", "C3148", "C3151", "C3158", "C3164", "C3165", "C3169", "C3177", "C3178", "C3184", "C3186", "C3188", "C3191", "C3193"] --- # Compiler errors C3100 Through C3199 diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c3200-through-c3299.md b/docs/error-messages/compiler-errors-2/compiler-errors-c3200-through-c3299.md index e835858c672..98f2ab9a34d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c3200-through-c3299.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c3200-through-c3299.md @@ -4,7 +4,6 @@ title: "Compiler errors C3200 Through C3299" ms.date: 06/01/2022 f1_keywords: ["C3220", "C3221", "C3245", "C3249", "C3250", "C3256", "C3257", "C3258", "C3259", "C3260", "C3261", "C3263", "C3267", "C3281", "C3294"] helpviewer_keywords: ["C3220", "C3221", "C3245", "C3249", "C3250", "C3256", "C3257", "C3258", "C3259", "C3260", "C3261", "C3263", "C3267", "C3281", "C3294"] -ms.assetid: 6b3104f6-63bc-4823-b6f3-b8a16be4b87f --- # Compiler errors C3200 Through C3299 diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c3400-through-c3499.md b/docs/error-messages/compiler-errors-2/compiler-errors-c3400-through-c3499.md index ce25161b6d6..0df258c1f62 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c3400-through-c3499.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c3400-through-c3499.md @@ -3,8 +3,7 @@ description: "Learn more about: Compiler errors C3400 Through C3499" title: "Compiler errors C3400 Through C3499" ms.date: 06/01/2022 f1_keywords: ["C3401", "C3402", "C3403", "C3404", "C3405", "C3406", "C3407", "C3410", "C3411", "C3416", "C3419", "C3422", "C3423", "C3424", "C3425", "C3426", "C3427", "C3428", "C3429", "C3430", "C3431", "C3432", "C3433", "C3434", "C3435", "C3436", "C3437", "C3438", "C3439", "C3440", "C3441", "C3442", "C3443", "C3444", "C3447", "C3448", "C3449", "C3471", "C3472", "C3473", "C3474", "C3475", "C3476", "C3477", "C3478", "C3479", "C3486", "C3494", "C3497"] -helpviewer_keywords: ["C3401", "C3402", "C3403", "C3404", "C3405", "C3406", "C3407", "C3410", "C3411", "C3416", "C3419", "C3422", "C3424", "C3425", "C3426", "C3427", "C3428", "C3429", "C3430", "C3431", "C3432", "C3433", "C3434", "C3435", "C3436", "C3437", "C3438", "C3439", "C3440", "C3441", "C3442", "C3443", "C3444", "C3471", "C3472", "C3473", "C3474", "C3475", "C3476", "C3477", "C3478", "C3479", "C3486", "C3494", "C3497"] -ms.assetid: a5651dfb-c402-4e01-b3ae-28f371e51d6a +helpviewer_keywords: ["C3401", "C3402", "C3403", "C3404", "C3405", "C3406", "C3407", "C3410", "C3411", "C3416", "C3419", "C3422", "C3423", "C3424", "C3425", "C3426", "C3427", "C3428", "C3429", "C3430", "C3431", "C3432", "C3433", "C3434", "C3435", "C3436", "C3437", "C3438", "C3439", "C3440", "C3441", "C3442", "C3443", "C3444", "C3447", "C3448", "C3449", "C3471", "C3472", "C3473", "C3474", "C3475", "C3476", "C3477", "C3478", "C3479", "C3486", "C3494", "C3497"] --- # Compiler errors C3400 Through C3499 diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c3500-through-c3999.md b/docs/error-messages/compiler-errors-2/compiler-errors-c3500-through-c3999.md index 1d3dffd1797..7b016501226 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c3500-through-c3999.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c3500-through-c3999.md @@ -2,7 +2,8 @@ description: "Learn more about: Compiler errors C3500 through C3999" title: "Compiler errors C3500 through C3999" ms.date: 05/25/2022 -f1_keywords: ["C3502", "C3503", "C3504", "C3511", "C3512", "C3513", "C3514", "C3515", "C3516", "C3517", "C3518", "C3520", "C3521", "C3522", "C3523", "C3524", "C3525", "C3526", "C3527", "C3528", "C3529", "C3534", "C3542", "C3543", "C3544", "C3545", "C3546", "C3547", "C3548", "C3549", "C3557", "C3558", "C3559", "C3560", "C3561", "C3562", "C3563", "C3564", "C3565", "C3566", "C3567", "C3568", "C3569", "C3570", "C3571", "C3572", "C3573", "C3574", "C3575", "C3576", "C3577", "C3578", "C3579", "C3580", "C3581", "C3582", "C3583", "C3584", "C3585", "C3586", "C3587", "C3588", "C3589", "C3590", "C3591", "C3592", "C3593", "C3594", "C3595", "C3596", "C3597", "C3598", "C3599", "C3600", "C3601", "C3602", "C3604", "C3605", "C3606", "C3613", "C3614", "C3616", "C3617", "C3620", "C3621", "C3635", "C3636", "C3639", "C3643", "C3649", "C3658", "C3659", "C3660", "C3663", "C3664", "C3667", "C3674", "C3676", "C3677", "C3678", "C3679", "C3680", "C3681", "C3682", "C3683", "C3684", "C3685", "C3686", "C3687", "C3688", "C3689", "C3690", "C3691", "C3692", "C3693", "C3694", "C3695", "C3696", "C3700", "C3716", "C3720", "C3725", "C3726", "C3729", "C3730", "C3735", "C3742", "C3746", "C3750", "C3751", "C3756", "C3757", "C3758", "C3759", "C3760", "C3770", "C3773", "C3774", "C3775", "C3776", "C3777", "C3778", "C3780", "C3781", "C3782", "C3783", "C3784", "C3785", "C3786", "C3787", "C3788", "C3789", "C3790", "C3791", "C3792", "C3793", "C3794", "C3795", "C3796", "C3801", "C3802", "C3806", "C3810", "C3811", "C3814", "C3819", "C3822", "C3823", "C3826", "C3827", "C3829", "C3837", "C3840", "C3841", "C3843", "C3844", "C3845", "C3847", "C3863", "C3870", "C3871", "C3875", "C3876", "C3877", "C3878", "C3879", "C3881", "C3882", "C3884", "C3885", "C3897", "C3905", "C3906", "C3907", "C3916", "C3921", "C3924", "C3925", "C3926", "C3927", "C3928", "C3930", "C3931", "C3932", "C3933", "C3934", "C3935", "C3936", "C3937", "C3938", "C3939", "C3940", "C3941", "C3945", "C3946", "C3947", "C3948", "C3949", "C3950", "C3951", "C3952", "C3953", "C3954", "C3955", "C3956", "C3957", "C3958", "C3959", "C3960", "C3961", "C3962", "C3963", "C3964", "C3965", "C3966", "C3967", "C3968", "C3969", "C3970", "C3971", "C3972", "C3973", "C3974", "C3975", "C3976", "C3977", "C3978", "C3979", "C3980", "C3981", "C3982", "C3983", "C3984", "C3985", "C3986", "C3987", "C3988", "C3989", "C3990", "C3991", "C3992", "C3993", "C3994", "C3995", "C3996", "C3997", "C3998", "C3999"] +f1_keywords: ["C3502", "C3503", "C3504", "C3511", "C3512", "C3513", "C3514", "C3515", "C3516", "C3517", "C3518", "C3520", "C3521", "C3522", "C3523", "C3524", "C3525", "C3526", "C3527", "C3528", "C3529", "C3534", "C3542", "C3543", "C3544", "C3545", "C3546", "C3547", "C3548", "C3549", "C3557", "C3558", "C3559", "C3560", "C3561", "C3562", "C3563", "C3564", "C3565", "C3566", "C3567", "C3568", "C3569", "C3570", "C3571", "C3572", "C3573", "C3574", "C3575", "C3576", "C3577", "C3578", "C3579", "C3580", "C3581", "C3582", "C3583", "C3584", "C3585", "C3586", "C3587", "C3588", "C3589", "C3590", "C3591", "C3592", "C3593", "C3594", "C3595", "C3596", "C3597", "C3598", "C3599", "C3600", "C3601", "C3602", "C3604", "C3605", "C3606", "C3613", "C3614", "C3616", "C3617", "C3620", "C3621", "C3629", "C3635", "C3636", "C3639", "C3643", "C3647", "C3649", "C3658", "C3659", "C3660", "C3663", "C3664", "C3667", "C3674", "C3676", "C3677", "C3678", "C3679", "C3680", "C3681", "C3682", "C3683", "C3684", "C3685", "C3686", "C3687", "C3688", "C3689", "C3690", "C3691", "C3692", "C3693", "C3694", "C3695", "C3696", "C3700", "C3716", "C3720", "C3725", "C3726", "C3729", "C3730", "C3735", "C3742", "C3746", "C3750", "C3751", "C3756", "C3757", "C3758", "C3759", "C3760", "C3770", "C3773", "C3774", "C3775", "C3776", "C3777", "C3778", "C3780", "C3781", "C3782", "C3783", "C3784", "C3785", "C3786", "C3787", "C3788", "C3789", "C3790", "C3791", "C3792", "C3793", "C3794", "C3795", "C3796", "C3801", "C3802", "C3806", "C3810", "C3811", "C3814", "C3819", "C3822", "C3823", "C3826", "C3827", "C3829", "C3835", "C3837", "C3840", "C3841", "C3843", "C3844", "C3845", "C3847", "C3863", "C3864", "C3870", "C3871", "C3875", "C3876", "C3877", "C3878", "C3879", "C3881", "C3882", "C3883", "C3884", "C3885", "C3897", "C3905", "C3906", "C3907", "C3916", "C3921", "C3924", "C3925", "C3926", "C3927", "C3928", "C3930", "C3931", "C3932", "C3933", "C3934", "C3935", "C3936", "C3937", "C3938", "C3939", "C3940", "C3941", "C3945", "C3946", "C3947", "C3948", "C3949", "C3950", "C3951", "C3952", "C3953", "C3954", "C3955", "C3956", "C3957", "C3958", "C3959", "C3960", "C3961", "C3962", "C3963", "C3964", "C3965", "C3966", "C3967", "C3968", "C3969", "C3970", "C3971", "C3972", "C3973", "C3974", "C3975", "C3976", "C3977", "C3978", "C3979", "C3980", "C3981", "C3982", "C3983", "C3984", "C3985", "C3986", "C3987", "C3988", "C3989", "C3990", "C3991", "C3992", "C3993", "C3994", "C3995", "C3996", "C3997", "C3998"] +helpviewer_keywords: ["C3502", "C3503", "C3504", "C3511", "C3512", "C3513", "C3514", "C3515", "C3516", "C3517", "C3518", "C3520", "C3521", "C3522", "C3523", "C3524", "C3525", "C3526", "C3527", "C3528", "C3529", "C3534", "C3542", "C3543", "C3544", "C3545", "C3546", "C3547", "C3548", "C3549", "C3557", "C3558", "C3559", "C3560", "C3561", "C3562", "C3563", "C3564", "C3565", "C3566", "C3567", "C3568", "C3569", "C3570", "C3571", "C3572", "C3573", "C3574", "C3575", "C3576", "C3577", "C3578", "C3579", "C3580", "C3581", "C3582", "C3583", "C3584", "C3585", "C3586", "C3587", "C3588", "C3589", "C3590", "C3591", "C3592", "C3593", "C3594", "C3595", "C3596", "C3597", "C3598", "C3599", "C3600", "C3601", "C3602", "C3604", "C3605", "C3606", "C3613", "C3614", "C3616", "C3617", "C3620", "C3621", "C3629", "C3635", "C3636", "C3639", "C3643", "C3647", "C3649", "C3658", "C3659", "C3660", "C3663", "C3664", "C3667", "C3674", "C3676", "C3677", "C3678", "C3679", "C3680", "C3681", "C3682", "C3683", "C3684", "C3685", "C3686", "C3687", "C3688", "C3689", "C3690", "C3691", "C3692", "C3693", "C3694", "C3695", "C3696", "C3700", "C3716", "C3720", "C3725", "C3726", "C3729", "C3730", "C3735", "C3742", "C3746", "C3750", "C3751", "C3756", "C3757", "C3758", "C3759", "C3760", "C3770", "C3773", "C3774", "C3775", "C3776", "C3777", "C3778", "C3780", "C3781", "C3782", "C3783", "C3784", "C3785", "C3786", "C3787", "C3788", "C3789", "C3790", "C3791", "C3792", "C3793", "C3794", "C3795", "C3796", "C3801", "C3802", "C3806", "C3810", "C3811", "C3814", "C3819", "C3822", "C3823", "C3826", "C3827", "C3829", "C3835", "C3837", "C3840", "C3841", "C3843", "C3844", "C3845", "C3847", "C3863", "C3864", "C3870", "C3871", "C3875", "C3876", "C3877", "C3878", "C3879", "C3881", "C3882", "C3883", "C3884", "C3885", "C3897", "C3905", "C3906", "C3907", "C3916", "C3921", "C3924", "C3925", "C3926", "C3927", "C3928", "C3930", "C3931", "C3932", "C3933", "C3934", "C3935", "C3936", "C3937", "C3938", "C3939", "C3940", "C3941", "C3945", "C3946", "C3947", "C3948", "C3949", "C3950", "C3951", "C3952", "C3953", "C3954", "C3955", "C3956", "C3957", "C3958", "C3959", "C3960", "C3961", "C3962", "C3963", "C3964", "C3965", "C3966", "C3967", "C3968", "C3969", "C3970", "C3971", "C3972", "C3973", "C3974", "C3975", "C3976", "C3977", "C3978", "C3979", "C3980", "C3981", "C3982", "C3983", "C3984", "C3985", "C3986", "C3987", "C3988", "C3989", "C3990", "C3991", "C3992", "C3993", "C3994", "C3995", "C3996", "C3997", "C3998"] --- # Compiler errors C3500 through C3999 diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md b/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md index 9bd380066b3..7d152ae26fd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md @@ -2,8 +2,8 @@ description: "Learn more about: Compiler errors C7500 through C7999" title: "Compiler errors C7500 through C7999" ms.date: 10/13/2023 -f1_keywords: ["C7500", "C7501", "C7502", "C7503", "C7504", "C7505", "C7506", "C7507", "C7508", "C7509", "C7511", "C7512", "C7513", "C7514", "C7515", "C7516", "C7517", "C7518", "C7519", "C7520", "C7521", "C7522", "C7523", "C7524", "C7525", "C7526", "C7527", "C7528", "C7529", "C7530", "C7531", "C7532", "C7533", "C7534", "C7535", "C7537", "C7538", "C7539", "C7540", "C7541", "C7542", "C7543", "C7544", "C7545", "C7546", "C7547", "C7548", "C7549", "C7550", "C7551", "C7552", "C7554", "C7555", "C7556", "C7557", "C7558", "C7559", "C7560", "C7561", "C7562", "C7563", "C7564", "C7565", "C7566", "C7567", "C7568", "C7569", "C7570", "C7571", "C7572", "C7573", "C7574", "C7575", "C7576", "C7577", "C7578", "C7579", "C7580", "C7581", "C7582", "C7583", "C7584", "C7585", "C7586", "C7587", "C7588", "C7589", "C7590", "C7591", "C7592", "C7593", "C7594", "C7595", "C7596", "C7597", "C7599", "C7600", "C7601", "C7602", "C7603", "C7604", "C7605", "C7606", "C7607", "C7608", "C7609", "C7610", "C7611", "C7612", "C7613", "C7614", "C7615", "C7616", "C7617", "C7618", "C7619", "C7620", "C7621", "C7622", "C7623", "C7624", "C7625", "C7627", "C7628", "C7629", "C7630", "C7631", "C7632", "C7633", "C7634", "C7635", "C7636", "C7637", "C7638", "C7639", "C7640", "C7641", "C7642", "C7643", "C7644", "C7645", "C7646", "C7647", "C7648", "C7649", "C7650", "C7651", "C7652", "C7653", "C7654", "C7655", "C7656", "C7657", "C7658", "C7659", "C7660", "C7661", "C7662", "C7696", "C7700", "C7701", "C7702", "C7703", "C7704"] -helpviewer_keywords: ["C7500", "C7501", "C7502", "C7503", "C7504", "C7505", "C7506", "C7507", "C7508", "C7509", "C7511", "C7512", "C7513", "C7514", "C7515", "C7516", "C7517", "C7518", "C7519", "C7520", "C7521", "C7522", "C7523", "C7524", "C7525", "C7526", "C7527", "C7528", "C7529", "C7530", "C7531", "C7532", "C7533", "C7534", "C7535", "C7537", "C7538", "C7539", "C7540", "C7541", "C7542", "C7543", "C7544", "C7545", "C7546", "C7547", "C7548", "C7549", "C7550", "C7551", "C7552", "C7554", "C7555", "C7556", "C7557", "C7558", "C7559", "C7560", "C7561", "C7562", "C7563", "C7564", "C7565", "C7566", "C7567", "C7568", "C7569", "C7570", "C7571", "C7572", "C7573", "C7574", "C7575", "C7576", "C7577", "C7578", "C7579", "C7580", "C7581", "C7582", "C7583", "C7584", "C7585", "C7586", "C7587", "C7588", "C7589", "C7590", "C7591", "C7592", "C7593", "C7594", "C7595", "C7596", "C7597", "C7599", "C7600", "C7601", "C7602", "C7603", "C7604", "C7605", "C7606", "C7607", "C7608", "C7609", "C7610", "C7611", "C7612", "C7613", "C7614", "C7615", "C7616", "C7617", "C7618", "C7619", "C7620", "C7621", "C7622", "C7623", "C7624", "C7625", "C7627", "C7628", "C7629", "C7630", "C7631", "C7632", "C7633", "C7634", "C7635", "C7636", "C7637", "C7638", "C7639", "C7640", "C7641", "C7642", "C7643", "C7644", "C7645", "C7646", "C7647", "C7648", "C7649", "C7650", "C7651", "C7652", "C7653", "C7654", "C7655", "C7656", "C7657", "C7658", "C7659", "C7660", "C7661", "C7662", "C7696", "C7700", "C7701", "C7702", "C7703", "C7704"] +f1_keywords: ["C7500", "C7501", "C7502", "C7503", "C7504", "C7505", "C7506", "C7507", "C7508", "C7509", "C7511", "C7512", "C7513", "C7514", "C7515", "C7516", "C7517", "C7518", "C7519", "C7520", "C7521", "C7522", "C7523", "C7524", "C7525", "C7526", "C7527", "C7528", "C7529", "C7530", "C7531", "C7532", "C7533", "C7534", "C7535", "C7537", "C7538", "C7539", "C7540", "C7541", "C7542", "C7543", "C7544", "C7545", "C7546", "C7547", "C7548", "C7549", "C7550", "C7551", "C7552", "C7554", "C7555", "C7556", "C7557", "C7558", "C7559", "C7560", "C7561", "C7562", "C7563", "C7564", "C7565", "C7566", "C7567", "C7568", "C7569", "C7570", "C7571", "C7572", "C7573", "C7574", "C7575", "C7576", "C7577", "C7578", "C7579", "C7580", "C7581", "C7582", "C7583", "C7584", "C7585", "C7586", "C7587", "C7588", "C7589", "C7590", "C7591", "C7592", "C7593", "C7594", "C7595", "C7596", "C7597", "C7599", "C7600", "C7601", "C7602", "C7603", "C7604", "C7605", "C7606", "C7607", "C7608", "C7609", "C7610", "C7611", "C7612", "C7613", "C7614", "C7615", "C7616", "C7617", "C7618", "C7619", "C7620", "C7621", "C7622", "C7623", "C7624", "C7625", "C7627", "C7628", "C7629", "C7630", "C7631", "C7632", "C7633", "C7634", "C7635", "C7636", "C7637", "C7638", "C7639", "C7640", "C7641", "C7642", "C7643", "C7644", "C7645", "C7646", "C7647", "C7648", "C7649", "C7650", "C7651", "C7652", "C7653", "C7654", "C7655", "C7656", "C7657", "C7658", "C7659", "C7660", "C7661", "C7662", "C7686", "C7700", "C7701", "C7702", "C7703", "C7704"] +helpviewer_keywords: ["C7500", "C7501", "C7502", "C7503", "C7504", "C7505", "C7506", "C7507", "C7508", "C7509", "C7511", "C7512", "C7513", "C7514", "C7515", "C7516", "C7517", "C7518", "C7519", "C7520", "C7521", "C7522", "C7523", "C7524", "C7525", "C7526", "C7527", "C7528", "C7529", "C7530", "C7531", "C7532", "C7533", "C7534", "C7535", "C7537", "C7538", "C7539", "C7540", "C7541", "C7542", "C7543", "C7544", "C7545", "C7546", "C7547", "C7548", "C7549", "C7550", "C7551", "C7552", "C7554", "C7555", "C7556", "C7557", "C7558", "C7559", "C7560", "C7561", "C7562", "C7563", "C7564", "C7565", "C7566", "C7567", "C7568", "C7569", "C7570", "C7571", "C7572", "C7573", "C7574", "C7575", "C7576", "C7577", "C7578", "C7579", "C7580", "C7581", "C7582", "C7583", "C7584", "C7585", "C7586", "C7587", "C7588", "C7589", "C7590", "C7591", "C7592", "C7593", "C7594", "C7595", "C7596", "C7597", "C7599", "C7600", "C7601", "C7602", "C7603", "C7604", "C7605", "C7606", "C7607", "C7608", "C7609", "C7610", "C7611", "C7612", "C7613", "C7614", "C7615", "C7616", "C7617", "C7618", "C7619", "C7620", "C7621", "C7622", "C7623", "C7624", "C7625", "C7627", "C7628", "C7629", "C7630", "C7631", "C7632", "C7633", "C7634", "C7635", "C7636", "C7637", "C7638", "C7639", "C7640", "C7641", "C7642", "C7643", "C7644", "C7645", "C7646", "C7647", "C7648", "C7649", "C7650", "C7651", "C7652", "C7653", "C7654", "C7655", "C7656", "C7657", "C7658", "C7659", "C7660", "C7661", "C7662", "C7686", "C7700", "C7701", "C7702", "C7703", "C7704"] --- # Compiler errors C7500 through C7999 diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4000-through-c4199.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4000-through-c4199.md index 25f1e7dde54..04e0b8c4acc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c4000-through-c4199.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4000-through-c4199.md @@ -2,7 +2,8 @@ description: "Table of Microsoft C/C++ compiler (MSVC) warning messages C4000 through C4199" title: "Microsoft C/C++ compiler (MSVC) warnings C4000 through C4199" ms.date: "04/21/2019" -f1_keywords: ["C4000", "C4035", "C4060", "C4063", "C4064", "C4065", "C4069", "C4123", "C4137", "C4181", "C4188", "C4193", "C4194", "C4195", "C4196", "C4199"] +f1_keywords: ["C4023", "C4035", "C4051", "C4060", "C4063", "C4064", "C4065", "C4069", "C4123", "C4137", "C4181", "C4188", "C4193", "C4194", "C4195", "C4196", "C4199"] +helpviewer_keywords: ["C4023", "C4035", "C4051", "C4060", "C4063", "C4064", "C4065", "C4069", "C4123", "C4137", "C4181", "C4188", "C4193", "C4194", "C4195", "C4196", "C4199"] --- # Microsoft C/C++ compiler warnings C4000 through C4199 diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4200-through-c4399.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4200-through-c4399.md index e4696b14652..176640a48ba 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c4200-through-c4399.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4200-through-c4399.md @@ -3,6 +3,7 @@ title: "Microsoft C/C++ compiler (MSVC) warnings C4200 through C4399" description: "Table of Microsoft C/C++ compiler (MSVC) warnings C4200 through C4399." ms.date: 10/18/2020 f1_keywords: ["C4203", "C4277", "C4279", "C4298", "C4299", "C4301", "C4303", "C4314", "C4315", "C4317", "C4318", "C4321", "C4322", "C4323", "C4327", "C4328", "C4330", "C4338", "C4352", "C4362", "C4367", "C4370", "C4380", "C4387"] +helpviewer_keywords: ["C4203", "C4277", "C4279", "C4298", "C4299", "C4301", "C4303", "C4314", "C4315", "C4317", "C4318", "C4321", "C4322", "C4323", "C4327", "C4328", "C4330", "C4338", "C4352", "C4362", "C4367", "C4370", "C4380", "C4387"] --- # Microsoft C/C++ compiler warnings C4200 through C4399 diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4600-through-c4799.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4600-through-c4799.md index a4996432c56..ce4026602ab 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c4600-through-c4799.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4600-through-c4799.md @@ -2,7 +2,7 @@ title: "Microsoft C/C++ compiler (MSVC) warnings C4600 through C4799" description: "Table of Microsoft C/C++ compiler (MSVC) warnings C4600 through C4799" ms.date: 05/03/2021 -f1_keywords: ["C4604", "C4605", "C4609", "C4631", "C4642", "C4643", "C4644", "C4647", "C4648", "C4649", "C4654", "C4658", "C4671", "C4676", "C4689", "C4695", "C4696", "C4719", "C4720", "C4721", "C4725", "C4726", "C4728", "C4729", "C4732", "C4734", "C4735", "C4736", "C4745", "C4749", "C4751", "C4752", "C4753", "C4755", "C4757", "C4761", "C4767", "C4771", "C4774", "C4775", "C4776", "C4777", "C4778", "C4792", "C4798"] +f1_keywords: [""C4604", "C4605", "C4609", "C4631", "C4642", "C4643", "C4644", "C4647", "C4648", "C4649", "C4654", "C4658", "C4671", "C4676", "C4689", "C4695", "C4696", "C4719", "C4720", "C4721", "C4725", "C4726", "C4728", "C4729", "C4732", "C4734", "C4735", "C4736", "C4745", "C4749", "C4751", "C4752", "C4753", "C4755", "C4757", "C4761", "C4767", "C4771", "C4774", "C4775", "C4776", "C4777", "C4778", "C4792", "C4798"] helpviewer_keywords: ["C4604", "C4605", "C4609", "C4631", "C4642", "C4643", "C4644", "C4647", "C4648", "C4649", "C4654", "C4658", "C4671", "C4676", "C4689", "C4695", "C4696", "C4719", "C4720", "C4721", "C4725", "C4726", "C4728", "C4729", "C4732", "C4734", "C4735", "C4736", "C4745", "C4749", "C4751", "C4752", "C4753", "C4755", "C4757", "C4761", "C4767", "C4771", "C4774", "C4775", "C4776", "C4777", "C4778", "C4792", "C4798"] --- # Microsoft C/C++ compiler warnings C4600 through C4799 diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4800-through-c4999.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4800-through-c4999.md index 9b946a58012..604fdbc580c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c4800-through-c4999.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4800-through-c4999.md @@ -2,8 +2,8 @@ title: "Microsoft C/C++ compiler (MSVC) warnings C4800 through C4999" description: "Table of Microsoft C/C++ compiler (MSVC) warnings C4800 through C4999." ms.date: 04/17/2024 -f1_keywords: ["C4801", "C4808", "C4809", "C4815", "C4827", "C4828", "C4837", "C4842", "C4844", "C4845", "C4846", "C4847", "C4848", "C4849", "C4854", "C4855", "C4856", "C4857", "C4858", "C4859", "C4860", "C4861", "C4869", "C4872", "C4880", "C4881", "C4882", "C4883", "C4907", "C4916", "C4921", "C4934", "C4954", "C4955", "C4963", "C4966", "C4970", "C4971", "C4973", "C4974", "C4975", "C4976", "C4981", "C4983", "C4987", "C4988", "C4989", "C4990", "C4991", "C4992", "C4998"] -helpviewer_keywords: ["C4801", "C4808", "C4809", "C4815", "C4827", "C4828", "C4837", "C4842", "C4844", "C4845", "C4846", "C4847", "C4848", "C4849", "C4854", "C4855", "C4856", "C4857", "C4858", "C4859", "C4860", "C4861", "C4869", "C4872", "C4880", "C4881", "C4882", "C4883", "C4907", "C4916", "C4921", "C4934", "C4954", "C4955", "C4963", "C4966", "C4970", "C4971", "C4973", "C4974", "C4975", "C4976", "C4981", "C4983", "C4987", "C4988", "C4989", "C4990", "C4991", "C4992", "C4998"] +f1_keywords: ["C4801", "C4808", "C4809", "C4815", "C4826", "C4827", "C4828", "C4837", "C4842", "C4844", "C4845", "C4846", "C4847", "C4848", "C4849", "C4854", "C4855", "C4856", "C4857", "C4858", "C4859", "C4860", "C4861", "C4869", "C4872", "C4880", "C4881", "C4882", "C4883", "C4907", "C4916", "C4921", "C4934", "C4954", "C4955", "C4963", "C4966", "C4970", "C4971", "C4973", "C4974", "C4975", "C4976", "C4981", "C4983", "C4987", "C4988", "C4989", "C4990", "C4991", "C4992", "C4998"] +helpviewer_keywords: ["C4801", "C4808", "C4809", "C4815", "C4826", "C4827", "C4828", "C4837", "C4842", "C4844", "C4845", "C4846", "C4847", "C4848", "C4849", "C4854", "C4855", "C4856", "C4857", "C4858", "C4859", "C4860", "C4861", "C4869", "C4872", "C4880", "C4881", "C4882", "C4883", "C4907", "C4916", "C4921", "C4934", "C4954", "C4955", "C4963", "C4966", "C4970", "C4971", "C4973", "C4974", "C4975", "C4976", "C4981", "C4983", "C4987", "C4988", "C4989", "C4990", "C4991", "C4992", "C4998"] --- # Microsoft C/C++ compiler warnings C4800 through C4999 diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399.md b/docs/error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399.md index 7b05bf6697b..6b91bd2aba2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399.md @@ -2,8 +2,8 @@ title: "Microsoft C/C++ compiler (MSVC) compiler warnings C5200 through C5399" description: "Table of Microsoft C/C++ compiler (MSVC) warnings C5200 through C5399." ms.date: 04/19/2024 -f1_keywords: ["C5200", "C5201", "C5202", "C5203", "C5204", "C5205", "C5206", "C5207", "C5209", "C5210", "C5211", "C5212", "C5213", "C5214", "C5215", "C5216", "C5217", "C5218", "C5219", "C5220", "C5221", "C5222", "C5223", "C5224", "C5225", "C5226", "C5227", "C5228", "C5229", "C5230", "C5231", "C5232", "C5233", "C5234", "C5235", "C5236", "C5237", "C5238", "C5239", "C5241", "C5242", "C5244", "C5245", "C5246", "C5249", "C5250", "C5251", "C5252", "C5253", "C5254", "C5255", "C5256", "C5257", "C5258", "C5259", "C5260", "C5261", "C5263", "C5264", "C5265", "C5268", "C5269", "C5270", "C5271", "C5272", "C5273", "C5274", "C5275", "C5300", "C5303", "C5304", "C5305"] -helpviewer_keywords: ["C5200", "C5201", "C5202", "C5203", "C5204", "C5205", "C5206", "C5207", "C5209", "C5210", "C5211", "C5212", "C5213", "C5214", "C5215", "C5216", "C5217", "C5218", "C5219", "C5220", "C5221", "C5222", "C5223", "C5224", "C5225", "C5226", "C5227", "C5228", "C5229", "C5230", "C5231", "C5232", "C5233", "C5234", "C5235", "C5236", "C5237", "C5238", "C5239", "C5241", "C5242", "C5244", "C5245", "C5246", "C5249", "C5250", "C5251", "C5252", "C5253", "C5254", "C5255", "C5256", "C5257", "C5258", "C5259", "C5260", "C5261", "C5263", "C5264", "C5265", "C5268", "C5269", "C5270", "C5271", "C5272", "C5273", "C5274", "C5275", "C5300", "C5303", "C5304", "C5305"] +f1_keywords: ["C5200", "C5201", "C5202", "C5203", "C5204", "C5205", "C5206", "C5207", "C5209", "C5210", "C5212", "C5213", "C5214", "C5215", "C5216", "C5217", "C5218", "C5219", "C5220", "C5221", "C5222", "C5223", "C5224", "C5225", "C5226", "C5227", "C5228", "C5229", "C5230", "C5231", "C5232", "C5233", "C5234", "C5235", "C5236", "C5237", "C5238", "C5239", "C5241", "C5242", "C5244", "C5245", "C5246", "C5249", "C5250", "C5251", "C5252", "C5253", "C5254", "C5255", "C5256", "C5257", "C5258", "C5259", "C5260", "C5261", "C5263", "C5264", "C5265", "C5268", "C5269", "C5270", "C5271", "C5272", "C5273", "C5274", "C5275", "C5300", "C5303", "C5304", "C5305"] +helpviewer_keywords: ["C5200", "C5201", "C5202", "C5203", "C5204", "C5205", "C5206", "C5207", "C5209", "C5210", "C5212", "C5213", "C5214", "C5215", "C5216", "C5217", "C5218", "C5219", "C5220", "C5221", "C5222", "C5223", "C5224", "C5225", "C5226", "C5227", "C5228", "C5229", "C5230", "C5231", "C5232", "C5233", "C5234", "C5235", "C5236", "C5237", "C5238", "C5239", "C5241", "C5242", "C5244", "C5245", "C5246", "C5249", "C5250", "C5251", "C5252", "C5253", "C5254", "C5255", "C5256", "C5257", "C5258", "C5259", "C5260", "C5261", "C5263", "C5264", "C5265", "C5268", "C5269", "C5270", "C5271", "C5272", "C5273", "C5274", "C5275", "C5300", "C5303", "C5304", "C5305"] --- # Microsoft C/C++ compiler warnings C5200 through C5399 diff --git a/docs/error-messages/toc.yml b/docs/error-messages/toc.yml index 7ca0ace65f7..55a5b4609b2 100644 --- a/docs/error-messages/toc.yml +++ b/docs/error-messages/toc.yml @@ -4844,7 +4844,7 @@ items: - name: Math errors expanded: false items: - - name: Math errors (Mxxxx) + - name: Math errors (M6101 through M6205) href: tool-errors/math-errors-m6101-through-m6205.md - name: Math error M6101 href: tool-errors/math-error-m6101.md diff --git a/docs/error-messages/tool-errors/math-errors-m6101-through-m6205.md b/docs/error-messages/tool-errors/math-errors-m6101-through-m6205.md index 5c934acfb5a..497e291e5fb 100644 --- a/docs/error-messages/tool-errors/math-errors-m6101-through-m6205.md +++ b/docs/error-messages/tool-errors/math-errors-m6101-through-m6205.md @@ -1,10 +1,9 @@ --- description: "Learn more about: Math errors (Mxxxx)" -title: "Math errors" +title: "Learn about math errors M6101 through M6205" ms.date: "04/16/2019" -ms.assetid: bdf3dc2a-d993-4f53-b0f2-9604e4914127 --- -# Math errors (Mxxxx) +# Math errors (M6101 through M6205) This section is a reference to the errors generated by the runtime floating-point math library. Math runtime errors and warnings have the form M*xxxx*, where *xxxx* is a four-digit number. From a8e0f97ff9131f4f59b14981983d38af0fc8b379 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 31 Jan 2025 14:59:49 -0800 Subject: [PATCH 0096/2255] fixes --- .../compiler-errors-2/compiler-errors-c2900-through-c3499.md | 2 +- .../compiler-warnings/compiler-warnings-c4600-through-c4799.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c2900-through-c3499.md b/docs/error-messages/compiler-errors-2/compiler-errors-c2900-through-c3499.md index 0d79a669828..b637df086fe 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c2900-through-c3499.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c2900-through-c3499.md @@ -2,7 +2,7 @@ description: "Learn more about: Compiler errors C2900 Through C2999" title: "Compiler errors C2900 Through C2999" ms.date: 06/01/2022 -f1_keywords: [""C2900", "C2901", "C2905", "C2907", "C2915", "C2916", "C2922", "C2924", "C2925", "C2926", "C2938", "C2949", "C2950", "C2954", "C2960", "C2961", "C2963", "C2964", "C2965", "C2966", "C2967", "C2968", "C2972", "C2980", "C2981", "C2982", "C2983", "C2984", "C2985", "C2986", "C2987", "C2997"] +f1_keywords: ["C2900", "C2901", "C2905", "C2907", "C2915", "C2916", "C2922", "C2924", "C2925", "C2926", "C2938", "C2949", "C2950", "C2954", "C2960", "C2961", "C2963", "C2964", "C2965", "C2966", "C2967", "C2968", "C2972", "C2980", "C2981", "C2982", "C2983", "C2984", "C2985", "C2986", "C2987", "C2997"] helpviewer_keywords: ["C2900", "C2901", "C2905", "C2907", "C2915", "C2916", "C2922", "C2924", "C2925", "C2926", "C2938", "C2949", "C2950", "C2954", "C2960", "C2961", "C2963", "C2964", "C2965", "C2966", "C2967", "C2968", "C2972", "C2980", "C2981", "C2982", "C2983", "C2984", "C2985", "C2986", "C2987", "C2997"] --- # Compiler errors C2900 Through C2999 diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4600-through-c4799.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4600-through-c4799.md index ce4026602ab..a4996432c56 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c4600-through-c4799.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4600-through-c4799.md @@ -2,7 +2,7 @@ title: "Microsoft C/C++ compiler (MSVC) warnings C4600 through C4799" description: "Table of Microsoft C/C++ compiler (MSVC) warnings C4600 through C4799" ms.date: 05/03/2021 -f1_keywords: [""C4604", "C4605", "C4609", "C4631", "C4642", "C4643", "C4644", "C4647", "C4648", "C4649", "C4654", "C4658", "C4671", "C4676", "C4689", "C4695", "C4696", "C4719", "C4720", "C4721", "C4725", "C4726", "C4728", "C4729", "C4732", "C4734", "C4735", "C4736", "C4745", "C4749", "C4751", "C4752", "C4753", "C4755", "C4757", "C4761", "C4767", "C4771", "C4774", "C4775", "C4776", "C4777", "C4778", "C4792", "C4798"] +f1_keywords: ["C4604", "C4605", "C4609", "C4631", "C4642", "C4643", "C4644", "C4647", "C4648", "C4649", "C4654", "C4658", "C4671", "C4676", "C4689", "C4695", "C4696", "C4719", "C4720", "C4721", "C4725", "C4726", "C4728", "C4729", "C4732", "C4734", "C4735", "C4736", "C4745", "C4749", "C4751", "C4752", "C4753", "C4755", "C4757", "C4761", "C4767", "C4771", "C4774", "C4775", "C4776", "C4777", "C4778", "C4792", "C4798"] helpviewer_keywords: ["C4604", "C4605", "C4609", "C4631", "C4642", "C4643", "C4644", "C4647", "C4648", "C4649", "C4654", "C4658", "C4671", "C4676", "C4689", "C4695", "C4696", "C4719", "C4720", "C4721", "C4725", "C4726", "C4728", "C4729", "C4732", "C4734", "C4735", "C4736", "C4745", "C4749", "C4751", "C4752", "C4753", "C4755", "C4757", "C4761", "C4767", "C4771", "C4774", "C4775", "C4776", "C4777", "C4778", "C4792", "C4798"] --- # Microsoft C/C++ compiler warnings C4600 through C4799 From c03caf4786fa76f375d99d9a9bcb75cfc6eb2ada Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 2 Feb 2025 21:33:16 +0800 Subject: [PATCH 0097/2255] Elide more extraneous periods --- docs/atl/reference/cw2wex-class.md | 15 +++++++-------- docs/cpp/compiler-limits.md | 4 ++-- docs/cppcx/collections-c-cx.md | 2 +- .../platform-metadata-runtimeclassname.md | 5 ++--- docs/cppcx/value-classes-and-structs-c-cx.md | 11 +++++------ docs/dotnet/deque-stl-clr.md | 5 ++--- ...ddx-ddv-data-binding-with-windows-forms.md | 9 ++++----- docs/dotnet/list-stl-clr.md | 5 ++--- docs/dotnet/vector-stl-clr.md | 5 ++--- docs/mfc/reference/cd2dbitmap-class.md | 5 ++--- docs/mfc/reference/cmfcmenubar-class.md | 9 ++++----- .../reference/cmfcribbonfontcombobox-class.md | 9 ++++----- docs/mfc/reference/cmousemanager-class.md | 11 +++++------ docs/mfc/reference/coledocument-class.md | 17 ++++++++--------- docs/mfc/reference/coleserverdoc-class.md | 19 +++++++++---------- docs/mfc/reference/colestreamfile-class.md | 7 +++---- docs/mfc/reference/cspinbuttonctrl-class.md | 11 +++++------ .../concurrency-namespace-functions.md | 5 ++--- .../concurrent-unordered-map-class.md | 2 +- .../concurrent-unordered-multimap-class.md | 7 +++---- .../concurrent-unordered-multiset-class.md | 7 +++---- .../concurrent-unordered-set-class.md | 7 +++---- 22 files changed, 79 insertions(+), 98 deletions(-) diff --git a/docs/atl/reference/cw2wex-class.md b/docs/atl/reference/cw2wex-class.md index 3c0cfb09467..d5c15f69f2e 100644 --- a/docs/atl/reference/cw2wex-class.md +++ b/docs/atl/reference/cw2wex-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: CW2WEX Class" title: "CW2WEX Class" +description: "Learn more about: CW2WEX Class" ms.date: "11/04/2016" f1_keywords: ["CW2WEX", "ATLCONV/ATL::CW2WEX", "ATLCONV/ATL::CW2WEX::CW2WEX", "ATLCONV/ATL::CW2WEX::m_psz", "ATLCONV/ATL::CW2WEX::m_szBuffer"] helpviewer_keywords: ["CW2WEX class"] -ms.assetid: 46262e56-e0d2-41fe-855b-0b67ecc8fcd7 --- # CW2WEX Class @@ -100,7 +99,7 @@ Creates the buffer required for the translation. ## CW2WEX::~CW2WEX -The destructor.. +The destructor. ``` ~CW2WEX() throw(); @@ -140,9 +139,9 @@ Returns the text string as type LPWSTR. ## See also -[CA2AEX Class](../../atl/reference/ca2aex-class.md)
-[CA2CAEX Class](../../atl/reference/ca2caex-class.md)
-[CA2WEX Class](../../atl/reference/ca2wex-class.md)
-[CW2AEX Class](../../atl/reference/cw2aex-class.md)
-[CW2CWEX Class](../../atl/reference/cw2cwex-class.md)
+[CA2AEX Class](../../atl/reference/ca2aex-class.md)\ +[CA2CAEX Class](../../atl/reference/ca2caex-class.md)\ +[CA2WEX Class](../../atl/reference/ca2wex-class.md)\ +[CW2AEX Class](../../atl/reference/cw2aex-class.md)\ +[CW2CWEX Class](../../atl/reference/cw2cwex-class.md)\ [Class Overview](../../atl/atl-class-overview.md) diff --git a/docs/cpp/compiler-limits.md b/docs/cpp/compiler-limits.md index c1926cd2744..4fcdd08cfc9 100644 --- a/docs/cpp/compiler-limits.md +++ b/docs/cpp/compiler-limits.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler Limits" title: "Compiler Limits" +description: "Learn more about: Compiler Limits" ms.date: "06/05/2023" helpviewer_keywords: ["cl.exe compiler, limits for language constructs"] --- @@ -22,7 +22,7 @@ The C++ standard recommends limits for various language constructs. The followin - Scope qualifications of one identifier - C++ standard: 256, Microsoft C++ compiler: 127. -- Nested **`extern`** specifications - C++ standard: 1024, Microsoft C++ compiler: 9 (not counting the implicit **`extern`** specification in global scope, or 10, if you count the implicit **`extern`** specification in global scope.. +- Nested **`extern`** specifications - C++ standard: 1024, Microsoft C++ compiler: 9 (not counting the implicit **`extern`** specification in global scope, or 10, if you count the implicit **`extern`** specification in global scope. - Template arguments in a template declaration - C++ standard: 1024, Microsoft C++ compiler: 2046. diff --git a/docs/cppcx/collections-c-cx.md b/docs/cppcx/collections-c-cx.md index 9785f9056ed..d5bfe0f43a6 100644 --- a/docs/cppcx/collections-c-cx.md +++ b/docs/cppcx/collections-c-cx.md @@ -103,7 +103,7 @@ A modifiable, associative collection. Map elements are key-value pairs. Looking A read-only version of a `Map`. [Platform::Collections::Vector class](../cppcx/platform-collections-vector-class.md)
-A modifiable sequence collection. `Vector` supports constant-time random access and amortized-constant-time [Append](../cppcx/platform-collections-vector-class.md#append) operations.. +A modifiable sequence collection. `Vector` supports constant-time random access and amortized-constant-time [Append](../cppcx/platform-collections-vector-class.md#append) operations. [Platform::Collections::VectorView class](../cppcx/platform-collections-vectorview-class.md)
A read-only version of a `Vector`. diff --git a/docs/cppcx/platform-metadata-runtimeclassname.md b/docs/cppcx/platform-metadata-runtimeclassname.md index d40541dd80c..e7e5d3a0568 100644 --- a/docs/cppcx/platform-metadata-runtimeclassname.md +++ b/docs/cppcx/platform-metadata-runtimeclassname.md @@ -1,15 +1,14 @@ --- -description: "Learn more about: Platform::Metadata::RuntimeClassName" title: "Platform::Metadata::RuntimeClassName" +description: "Learn more about: Platform::Metadata::RuntimeClassName" ms.date: "12/30/2016" ms.topic: "reference" f1_keywords: ["VCCORLIB/Platform::Metadata::RuntimeClassName"] helpviewer_keywords: ["RuntimeClassName", "Platform::Metadata::RuntimeClassName"] -ms.assetid: fdef8f85-ab94-4edd-ba50-ee0da9358ff6 --- # Platform::Metadata::RuntimeClassName -When applied to a class definition, ensures that a private class returns a valid name from the GetRuntimeClassName function.. +When applied to a class definition, ensures that a private class returns a valid name from the GetRuntimeClassName function. ## Syntax diff --git a/docs/cppcx/value-classes-and-structs-c-cx.md b/docs/cppcx/value-classes-and-structs-c-cx.md index 4c4cd2cdc80..55d96917543 100644 --- a/docs/cppcx/value-classes-and-structs-c-cx.md +++ b/docs/cppcx/value-classes-and-structs-c-cx.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Value classes and structs (C++/CX)" title: "Value classes and structs (C++/CX)" +description: "Learn more about: Value classes and structs (C++/CX)" ms.date: "12/30/2016" helpviewer_keywords: ["value struct", "value class"] -ms.assetid: 262a0992-9721-4c02-8297-efc07d90e5a4 --- # Value classes and structs (C++/CX) @@ -48,7 +47,7 @@ A value struct or value class can contain as fields only fundamental numeric typ A value class or value struct that contains a `Platform::String^` or `IBox^` type as a member is not `memcpy`-able. -Because all members of a **`value class`** or **`value struct`** are public and are emitted into metadata, standard C++ types are not allowed as members. This is different from ref classes, which may contain **`private`** or **`internal`** standard C++ types.. +Because all members of a **`value class`** or **`value struct`** are public and are emitted into metadata, standard C++ types are not allowed as members. This is different from ref classes, which may contain **`private`** or **`internal`** standard C++ types. The following code fragment declares the `Coordinates` and `City` types as value structs. Notice that one of the `City` data members is a `GeoCoordinates` type. A **`value struct`** can contain other value structs as members. @@ -140,7 +139,7 @@ public: ## See also -[Type System (C++/CX)](../cppcx/type-system-c-cx.md)
-[C++/CX Language Reference](../cppcx/visual-c-language-reference-c-cx.md)
-[Namespaces Reference](../cppcx/namespaces-reference-c-cx.md)
+[Type System (C++/CX)](../cppcx/type-system-c-cx.md)\ +[C++/CX Language Reference](../cppcx/visual-c-language-reference-c-cx.md)\ +[Namespaces Reference](../cppcx/namespaces-reference-c-cx.md)\ [Ref classes and structs (C++/CX)](../cppcx/ref-classes-and-structs-c-cx.md) diff --git a/docs/dotnet/deque-stl-clr.md b/docs/dotnet/deque-stl-clr.md index b7e7be166a5..9961dd1c212 100644 --- a/docs/dotnet/deque-stl-clr.md +++ b/docs/dotnet/deque-stl-clr.md @@ -1,11 +1,10 @@ --- -description: "Learn more about: deque (STL/CLR)" title: "deque (STL/CLR)" +description: "Learn more about: deque (STL/CLR)" ms.date: "11/04/2016" ms.topic: "reference" f1_keywords: ["cliext::deque", "cliext::deque::assign", "cliext::deque::at", "cliext::deque::back", "cliext::deque::back_item", "cliext::deque::begin", "cliext::deque::clear", "cliext::deque::const_iterator", "cliext::deque::const_reference", "cliext::deque::const_reverse_iterator", "cliext::deque::deque", "cliext::deque::difference_type", "cliext::deque::empty", "cliext::deque::end", "cliext::deque::erase", "cliext::deque::front", "cliext::deque::front_item", "cliext::deque::generic_container", "cliext::deque::generic_iterator", "cliext::deque::generic_reverse_iterator", "cliext::deque::generic_value", "cliext::deque::insert", "cliext::deque::iterator", "cliext::deque::operator!=", "cliext::deque::operator[]", "cliext::deque::pop_back", "cliext::deque::pop_front", "cliext::deque::push_back", "cliext::deque::push_front", "cliext::deque::rbegin", "cliext::deque::reference", "cliext::deque::rend", "cliext::deque::resize", "cliext::deque::reverse_iterator", "cliext::deque::size", "cliext::deque::size_type", "cliext::deque::swap", "cliext::deque::to_array", "cliext::deque::value_type", "cliext::deque::operator<", "cliext::deque::operator<=", "cliext::deque::operator=", "cliext::deque::operator==", "cliext::deque::operator>", "cliext::deque::operator>="] helpviewer_keywords: ["deque class [STL/CLR]", " header [STL/CLR]", " header [STL/CLR]", "assign member [STL/CLR]", "assign member [STL/CLR]", "at member [STL/CLR]", "back member [STL/CLR]", "back_item member [STL/CLR]", "begin member [STL/CLR]", "clear member [STL/CLR]", "const_iterator member [STL/CLR]", "const_reference member [STL/CLR]", "const_reverse_iterator member [STL/CLR]", "deque member [STL/CLR]", "difference_type member [STL/CLR]", "empty member [STL/CLR]", "end member [STL/CLR]", "erase member [STL/CLR]", "front member [STL/CLR]", "front_item member [STL/CLR]", "generic_container member [STL/CLR]", "generic_iterator member [STL/CLR]", "generic_reverse_iterator member [STL/CLR]", "generic_value member [STL/CLR]", "insert member [STL/CLR]", "iterator member [STL/CLR]", "operator!= member [STL/CLR]", "operator member [] [STL/CLR]", "pop_back member [STL/CLR]", "pop_front member [STL/CLR]", "push_back member [STL/CLR]", "push_front member [STL/CLR]", "rbegin member [STL/CLR]", "reference member [STL/CLR]", "rend member [STL/CLR]", "resize member [STL/CLR]", "reverse_iterator member [STL/CLR]", "size member [STL/CLR]", "size_type member [STL/CLR]", "swap member [STL/CLR]", "to_array member [STL/CLR]", "value_type member [STL/CLR]", "operator< member [STL/CLR]", "operator<= member [STL/CLR]", "operator= member [STL/CLR]", "operator== member [STL/CLR]", "operator> member [STL/CLR]", "operator>= member [STL/CLR]"] -ms.assetid: dd669da3-3c0e-45e9-8596-f6b483720941 --- # deque (STL/CLR) @@ -561,7 +560,7 @@ a b c ## deque::const_reverse_iterator (STL/CLR) -The type of a constant reverse iterator for the controlled sequence.. +The type of a constant reverse iterator for the controlled sequence. ### Syntax diff --git a/docs/dotnet/how-to-do-ddx-ddv-data-binding-with-windows-forms.md b/docs/dotnet/how-to-do-ddx-ddv-data-binding-with-windows-forms.md index 7d77830650e..098179c4ef5 100644 --- a/docs/dotnet/how-to-do-ddx-ddv-data-binding-with-windows-forms.md +++ b/docs/dotnet/how-to-do-ddx-ddv-data-binding-with-windows-forms.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: How to: Do DDX/DDV Data Binding with Windows Forms" title: "How to: Do DDX-DDV Data Binding with Windows Forms" +description: "Learn more about: How to: Do DDX/DDV Data Binding with Windows Forms" ms.custom: "get-started-article" ms.date: "11/04/2016" helpviewer_keywords: ["MFC [C++], hosting a Windows Forms Control", "Windows Forms [C++], MFC support"] -ms.assetid: b2957370-cf1f-4779-94ac-228cd393686c --- # How to: Do DDX/DDV Data Binding with Windows Forms @@ -53,7 +52,7 @@ void CMFC01Dlg::DoDataExchange(CDataExchange* pDX) ## Example: Add handler method -Now we will add the handler method for a click on the OK button. Click the **Resource View** tab. In Resource View, double-click on `IDD_MFC01_DIALOG`. The dialog resource appears in Resource Editor. Then double click the OK button.. +Now we will add the handler method for a click on the OK button. Click the **Resource View** tab. In Resource View, double-click on `IDD_MFC01_DIALOG`. The dialog resource appears in Resource Editor. Then double click the OK button. Define the handler as follows. @@ -77,6 +76,6 @@ You can now build and run the application. Notice that any text in the text box ## See also -[CWinFormsControl Class](../mfc/reference/cwinformscontrol-class.md)
-[DDX_ManagedControl](../mfc/reference/standard-dialog-data-exchange-routines.md#ddx_managedcontrol)
+[CWinFormsControl Class](../mfc/reference/cwinformscontrol-class.md)\ +[DDX_ManagedControl](../mfc/reference/standard-dialog-data-exchange-routines.md#ddx_managedcontrol)\ [CWnd::DoDataExchange](../mfc/reference/cwnd-class.md#dodataexchange) diff --git a/docs/dotnet/list-stl-clr.md b/docs/dotnet/list-stl-clr.md index 7069b4797ca..fff82c19fd8 100644 --- a/docs/dotnet/list-stl-clr.md +++ b/docs/dotnet/list-stl-clr.md @@ -1,11 +1,10 @@ --- -description: "Learn more about: list (STL/CLR)" title: "list (STL/CLR)" +description: "Learn more about: list (STL/CLR)" ms.date: "11/04/2016" ms.topic: "reference" f1_keywords: ["cliext::list", "cliext::list::assign", "cliext::list::back", "cliext::list::back_item", "cliext::list::begin", "cliext::list::clear", "cliext::list::const_iterator", "cliext::list::const_reference", "cliext::list::const_reverse_iterator", "cliext::list::difference_type", "cliext::list::empty", "cliext::list::end", "cliext::list::erase", "cliext::list::front", "cliext::list::front_item", "cliext::list::generic_container", "cliext::list::generic_iterator", "cliext::list::generic_reverse_iterator", "cliext::list::generic_value", "cliext::list::insert", "cliext::list::iterator", "cliext::list::list", "cliext::list::merge", "cliext::list::operator=", "cliext::list::pop_back", "cliext::list::pop_front", "cliext::list::push_back", "cliext::list::push_front", "cliext::list::rbegin", "cliext::list::reference", "cliext::list::remove", "cliext::list::remove_if", "cliext::list::rend", "cliext::list::resize", "cliext::list::reverse", "cliext::list::reverse_iterator", "cliext::list::size", "cliext::list::size_type", "cliext::list::sort", "cliext::list::splice", "cliext::list::swap", "cliext::list::to_array", "cliext::list::unique", "cliext::list::value_type", "cliext::operator!=(list)", "cliext::operator<(list)", "cliext::operator<=(list)", "cliext::operator==(list)", "cliext::operator>(list)", "cliext::operator>=(list)"] helpviewer_keywords: [" header [STL/CLR]", "list class [STL/CLR]", " header [STL/CLR]", "assign member [STL/CLR]", "assign member [STL/CLR]", "back member [STL/CLR]", "back_item member [STL/CLR]", "begin member [STL/CLR]", "clear member [STL/CLR]", "const_iterator member [STL/CLR]", "const_reference member [STL/CLR]", "const_reverse_iterator member [STL/CLR]", "difference_type member [STL/CLR]", "empty member [STL/CLR]", "end member [STL/CLR]", "erase member [STL/CLR]", "front member [STL/CLR]", "front_item member [STL/CLR]", "generic_container member [STL/CLR]", "generic_iterator member [STL/CLR]", "generic_reverse_iterator member [STL/CLR]", "generic_value member [STL/CLR]", "insert member [STL/CLR]", "iterator member [STL/CLR]", "list member [STL/CLR]", "merge member [STL/CLR]", "operator= member [STL/CLR]", "pop_back member [STL/CLR]", "pop_front member [STL/CLR]", "push_back member [STL/CLR]", "push_front member [STL/CLR]", "rbegin member [STL/CLR]", "reference member [STL/CLR]", "remove member [STL/CLR]", "remove_if member [STL/CLR]", "rend member [STL/CLR]", "resize member [STL/CLR]", "reverse member [STL/CLR]", "reverse_iterator member [STL/CLR]", "size member [STL/CLR]", "size_type member [STL/CLR]", "sort member [STL/CLR]", "splice member [STL/CLR]", "swap member [STL/CLR]", "to_array member [STL/CLR]", "unique member [STL/CLR]", "value_type member [STL/CLR]", "operator!=(list) member [STL/CLR]", "operator<(list) member [STL/CLR]", "operator<=(list) member [STL/CLR]", "operator==(list) member [STL/CLR]", "operator>(list) member [STL/CLR]", "operator>=(list) member [STL/CLR]"] -ms.assetid: a70c45c8-a257-4f6b-8434-b27ff6685bac --- # list (STL/CLR) @@ -510,7 +509,7 @@ a b c ## list::const_reverse_iterator (STL/CLR) -The type of a constant reverse iterator for the controlled sequence.. +The type of a constant reverse iterator for the controlled sequence. ### Syntax diff --git a/docs/dotnet/vector-stl-clr.md b/docs/dotnet/vector-stl-clr.md index d325c773972..c6c3fd953cd 100644 --- a/docs/dotnet/vector-stl-clr.md +++ b/docs/dotnet/vector-stl-clr.md @@ -1,11 +1,10 @@ --- -description: "Learn more about: vector (STL/CLR)" title: "vector (STL/CLR)" +description: "Learn more about: vector (STL/CLR)" ms.date: "11/04/2016" ms.topic: "reference" f1_keywords: ["cliext::vector", "cliext::vector::assign", "cliext::vector::at", "cliext::vector::back", "cliext::vector::back_item", "cliext::vector::begin", "cliext::vector::capacity", "cliext::vector::clear", "cliext::vector::const_iterator", "cliext::vector::const_reference", "cliext::vector::const_reverse_iterator", "cliext::vector::difference_type", "cliext::vector::empty", "cliext::vector::end", "cliext::vector::erase", "cliext::vector::front", "cliext::vector::front_item", "cliext::vector::generic_container", "cliext::vector::generic_iterator", "cliext::vector::generic_reverse_iterator", "cliext::vector::generic_value", "cliext::vector::insert", "cliext::vector::iterator", "cliext::vector::operator=", "cliext::vector::operator", "cliext::vector::pop_back", "cliext::vector::push_back", "cliext::vector::rbegin", "cliext::vector::reference", "cliext::vector::rend", "cliext::vector::reserve", "cliext::vector::resize", "cliext::vector::reverse_iterator", "cliext::vector::size", "cliext::vector::size_type", "cliext::vector::swap", "cliext::vector::to_array", "cliext::vector::value_type", "cliext::vector::vector"] helpviewer_keywords: ["vector class [STL/CLR]", " header [STL/CLR]", " header [STL/CLR]", "operator!= member [STL/CLR]", "operator< member [STL/CLR]", "operator<= member [STL/CLR]", "operator== member [STL/CLR]", "operator> (vector) member [STL/CLR]", "operator>= member [STL/CLR]", "assign member [STL/CLR]", "at member [STL/CLR]", "back member [STL/CLR]", "back_item member [STL/CLR]", "begin member [STL/CLR]", "capacity member [STL/CLR]", "clear member [STL/CLR]", "const_iterator member [STL/CLR]", "const_reference member [STL/CLR]", "const_reverse_iterator member [STL/CLR]", "difference_type member [STL/CLR]", "empty member [STL/CLR]", "end member [STL/CLR]", "erase member [STL/CLR]", "front member [STL/CLR]", "front_item member [STL/CLR]", "generic_container member [STL/CLR]", "generic_iterator member [STL/CLR]", "generic_reverse_iterator member [STL/CLR]", "generic_value member [STL/CLR]", "insert member [STL/CLR]", "iterator member [STL/CLR]", "operator= member [STL/CLR]", "operator member [STL/CLR]", "pop_back member [STL/CLR]", "push_back member [STL/CLR]", "rbegin member [STL/CLR]", "reference member [STL/CLR]", "rend member [STL/CLR]", "reserve member [STL/CLR]", "resize member [STL/CLR]", "reverse_iterator member [STL/CLR]", "size member [STL/CLR]", "size_type member [STL/CLR]", "swap member [STL/CLR]", "to_array member [STL/CLR]", "value_type member [STL/CLR]", "vector member [STL/CLR]"] -ms.assetid: f90060d5-097a-4e9d-9a26-a634b5b9c6c2 --- # vector (STL/CLR) @@ -608,7 +607,7 @@ a b c ## vector::const_reverse_iterator (STL/CLR) -The type of a constant reverse iterator for the controlled sequence.. +The type of a constant reverse iterator for the controlled sequence. ### Syntax diff --git a/docs/mfc/reference/cd2dbitmap-class.md b/docs/mfc/reference/cd2dbitmap-class.md index 47d1045b096..9527c8a6532 100644 --- a/docs/mfc/reference/cd2dbitmap-class.md +++ b/docs/mfc/reference/cd2dbitmap-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: CD2DBitmap Class" title: "CD2DBitmap Class" +description: "Learn more about: CD2DBitmap Class" ms.date: "11/04/2016" f1_keywords: ["CD2DBitmap", "AFXRENDERTARGET/CD2DBitmap", "AFXRENDERTARGET/CD2DBitmap::CD2DBitmap", "AFXRENDERTARGET/CD2DBitmap::Attach", "AFXRENDERTARGET/CD2DBitmap::CopyFromBitmap", "AFXRENDERTARGET/CD2DBitmap::CopyFromMemory", "AFXRENDERTARGET/CD2DBitmap::CopyFromRenderTarget", "AFXRENDERTARGET/CD2DBitmap::Create", "AFXRENDERTARGET/CD2DBitmap::Destroy", "AFXRENDERTARGET/CD2DBitmap::Detach", "AFXRENDERTARGET/CD2DBitmap::Get", "AFXRENDERTARGET/CD2DBitmap::GetDPI", "AFXRENDERTARGET/CD2DBitmap::GetPixelFormat", "AFXRENDERTARGET/CD2DBitmap::GetPixelSize", "AFXRENDERTARGET/CD2DBitmap::GetSize", "AFXRENDERTARGET/CD2DBitmap::IsValid", "AFXRENDERTARGET/CD2DBitmap::CommonInit", "AFXRENDERTARGET/CD2DBitmap::m_bAutoDestroyHBMP", "AFXRENDERTARGET/CD2DBitmap::m_hBmpSrc", "AFXRENDERTARGET/CD2DBitmap::m_lpszType", "AFXRENDERTARGET/CD2DBitmap::m_pBitmap", "AFXRENDERTARGET/CD2DBitmap::m_sizeDest", "AFXRENDERTARGET/CD2DBitmap::m_strPath", "AFXRENDERTARGET/CD2DBitmap::m_uiResID"] helpviewer_keywords: ["CD2DBitmap [MFC], CD2DBitmap", "CD2DBitmap [MFC], CD2DBitmap", "CD2DBitmap [MFC], Attach", "CD2DBitmap [MFC], CopyFromBitmap", "CD2DBitmap [MFC], CopyFromMemory", "CD2DBitmap [MFC], CopyFromRenderTarget", "CD2DBitmap [MFC], Create", "CD2DBitmap [MFC], Destroy", "CD2DBitmap [MFC], Detach", "CD2DBitmap [MFC], Get", "CD2DBitmap [MFC], GetDPI", "CD2DBitmap [MFC], GetPixelFormat", "CD2DBitmap [MFC], GetPixelSize", "CD2DBitmap [MFC], GetSize", "CD2DBitmap [MFC], IsValid", "CD2DBitmap [MFC], CommonInit", "CD2DBitmap [MFC], m_bAutoDestroyHBMP", "CD2DBitmap [MFC], m_hBmpSrc", "CD2DBitmap [MFC], m_lpszType", "CD2DBitmap [MFC], m_pBitmap", "CD2DBitmap [MFC], m_sizeDest", "CD2DBitmap [MFC], m_strPath", "CD2DBitmap [MFC], m_uiResID"] -ms.assetid: 2b3686f1-812c-462b-b449-9f0cb6949bf6 --- # CD2DBitmap Class @@ -327,7 +326,7 @@ CD2DSizeU GetPixelSize() const; ### Return Value -The size, in pixels, of the bitmap.. +The size, in pixels, of the bitmap. ## CD2DBitmap::GetSize diff --git a/docs/mfc/reference/cmfcmenubar-class.md b/docs/mfc/reference/cmfcmenubar-class.md index b541ec3c640..8b8174252b0 100644 --- a/docs/mfc/reference/cmfcmenubar-class.md +++ b/docs/mfc/reference/cmfcmenubar-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: CMFCMenuBar Class" title: "CMFCMenuBar Class" +description: "Learn more about: CMFCMenuBar Class" ms.date: "10/18/2018" f1_keywords: ["CMFCMenuBar", "AFXMENUBAR/CMFCMenuBar", "AFXMENUBAR/CMFCMenuBar::AdjustLocations", "AFXMENUBAR/CMFCMenuBar::AllowChangeTextLabels", "AFXMENUBAR/CMFCMenuBar::AllowShowOnPaneMenu", "AFXMENUBAR/CMFCMenuBar::CalcFixedLayout", "AFXMENUBAR/CMFCMenuBar::CalcLayout", "AFXMENUBAR/CMFCMenuBar::CalcMaxButtonHeight", "AFXMENUBAR/CMFCMenuBar::CanBeClosed", "AFXMENUBAR/CMFCMenuBar::CanBeRestored", "AFXMENUBAR/CMFCMenuBar::Create", "AFXMENUBAR/CMFCMenuBar::CreateEx", "AFXMENUBAR/CMFCMenuBar::CreateFromMenu", "AFXMENUBAR/CMFCMenuBar::EnableHelpCombobox", "AFXMENUBAR/CMFCMenuBar::EnableMenuShadows", "AFXMENUBAR/CMFCMenuBar::GetAvailableExpandSize", "AFXMENUBAR/CMFCMenuBar::GetColumnWidth", "AFXMENUBAR/CMFCMenuBar::GetDefaultMenu", "AFXMENUBAR/CMFCMenuBar::GetDefaultMenuResId", "AFXMENUBAR/CMFCMenuBar::GetFloatPopupDirection", "AFXMENUBAR/CMFCMenuBar::GetForceDownArrows", "AFXMENUBAR/CMFCMenuBar::GetHelpCombobox", "AFXMENUBAR/CMFCMenuBar::GetHMenu", "AFXMENUBAR/CMFCMenuBar::GetMenuFont", "AFXMENUBAR/CMFCMenuBar::GetMenuItem", "AFXMENUBAR/CMFCMenuBar::GetRowHeight", "AFXMENUBAR/CMFCMenuBar::GetSystemButton", "AFXMENUBAR/CMFCMenuBar::GetSystemButtonsCount", "AFXMENUBAR/CMFCMenuBar::GetSystemMenu", "AFXMENUBAR/CMFCMenuBar::HighlightDisabledItems", "AFXMENUBAR/CMFCMenuBar::IsButtonExtraSizeAvailable", "AFXMENUBAR/CMFCMenuBar::IsHighlightDisabledItems", "AFXMENUBAR/CMFCMenuBar::IsMenuShadows", "AFXMENUBAR/CMFCMenuBar::IsRecentlyUsedMenus", "AFXMENUBAR/CMFCMenuBar::IsShowAllCommands", "AFXMENUBAR/CMFCMenuBar::IsShowAllCommandsDelay", "AFXMENUBAR/CMFCMenuBar::LoadState", "AFXMENUBAR/CMFCMenuBar::OnChangeHot", "AFXMENUBAR/CMFCMenuBar::OnDefaultMenuLoaded", "AFXMENUBAR/CMFCMenuBar::OnSendCommand", "AFXMENUBAR/CMFCMenuBar::OnSetDefaultButtonText", "AFXMENUBAR/CMFCMenuBar::OnToolHitTest", "AFXMENUBAR/CMFCMenuBar::PreTranslateMessage", "AFXMENUBAR/CMFCMenuBar::RestoreOriginalstate", "AFXMENUBAR/CMFCMenuBar::SaveState", "AFXMENUBAR/CMFCMenuBar::SetDefaultMenuResId", "AFXMENUBAR/CMFCMenuBar::SetForceDownArrows", "AFXMENUBAR/CMFCMenuBar::SetMaximizeMode", "AFXMENUBAR/CMFCMenuBar::SetMenuButtonRTC", "AFXMENUBAR/CMFCMenuBar::SetMenuFont", "AFXMENUBAR/CMFCMenuBar::SetRecentlyUsedMenus", "AFXMENUBAR/CMFCMenuBar::SetShowAllCommands"] helpviewer_keywords: ["CMFCMenuBar [MFC], AdjustLocations", "CMFCMenuBar [MFC], AllowChangeTextLabels", "CMFCMenuBar [MFC], AllowShowOnPaneMenu", "CMFCMenuBar [MFC], CalcFixedLayout", "CMFCMenuBar [MFC], CalcLayout", "CMFCMenuBar [MFC], CalcMaxButtonHeight", "CMFCMenuBar [MFC], CanBeClosed", "CMFCMenuBar [MFC], CanBeRestored", "CMFCMenuBar [MFC], Create", "CMFCMenuBar [MFC], CreateEx", "CMFCMenuBar [MFC], CreateFromMenu", "CMFCMenuBar [MFC], EnableHelpCombobox", "CMFCMenuBar [MFC], EnableMenuShadows", "CMFCMenuBar [MFC], GetAvailableExpandSize", "CMFCMenuBar [MFC], GetColumnWidth", "CMFCMenuBar [MFC], GetDefaultMenu", "CMFCMenuBar [MFC], GetDefaultMenuResId", "CMFCMenuBar [MFC], GetFloatPopupDirection", "CMFCMenuBar [MFC], GetForceDownArrows", "CMFCMenuBar [MFC], GetHelpCombobox", "CMFCMenuBar [MFC], GetHMenu", "CMFCMenuBar [MFC], GetMenuFont", "CMFCMenuBar [MFC], GetMenuItem", "CMFCMenuBar [MFC], GetRowHeight", "CMFCMenuBar [MFC], GetSystemButton", "CMFCMenuBar [MFC], GetSystemButtonsCount", "CMFCMenuBar [MFC], GetSystemMenu", "CMFCMenuBar [MFC], HighlightDisabledItems", "CMFCMenuBar [MFC], IsButtonExtraSizeAvailable", "CMFCMenuBar [MFC], IsHighlightDisabledItems", "CMFCMenuBar [MFC], IsMenuShadows", "CMFCMenuBar [MFC], IsRecentlyUsedMenus", "CMFCMenuBar [MFC], IsShowAllCommands", "CMFCMenuBar [MFC], IsShowAllCommandsDelay", "CMFCMenuBar [MFC], LoadState", "CMFCMenuBar [MFC], OnChangeHot", "CMFCMenuBar [MFC], OnDefaultMenuLoaded", "CMFCMenuBar [MFC], OnSendCommand", "CMFCMenuBar [MFC], OnSetDefaultButtonText", "CMFCMenuBar [MFC], OnToolHitTest", "CMFCMenuBar [MFC], PreTranslateMessage", "CMFCMenuBar [MFC], RestoreOriginalstate", "CMFCMenuBar [MFC], SaveState", "CMFCMenuBar [MFC], SetDefaultMenuResId", "CMFCMenuBar [MFC], SetForceDownArrows", "CMFCMenuBar [MFC], SetMaximizeMode", "CMFCMenuBar [MFC], SetMenuButtonRTC", "CMFCMenuBar [MFC], SetMenuFont", "CMFCMenuBar [MFC], SetRecentlyUsedMenus", "CMFCMenuBar [MFC], SetShowAllCommands"] -ms.assetid: 8a3ce4c7-b012-4dc0-b4f8-53c10b4b86b8 --- # CMFCMenuBar Class @@ -663,7 +662,7 @@ When you configure a menu bar to display recently used items, the menu bar displ - Display the full menu after the user clicks the arrow at the bottom of the menu. -By default, all `CMFCMenuBar` objects use the option to display the full menu after a short delay. This option cannot be changed programmatically in the `CMFCMenuBar` class. However, a user can change the behavior during toolbar customization by using the **Customize** dialog box.. +By default, all `CMFCMenuBar` objects use the option to display the full menu after a short delay. This option cannot be changed programmatically in the `CMFCMenuBar` class. However, a user can change the behavior during toolbar customization by using the **Customize** dialog box. ## CMFCMenuBar::LoadState @@ -977,6 +976,6 @@ If a menu does not display all the menu commands, it hides the commands that are ## See also -[Hierarchy Chart](../../mfc/hierarchy-chart.md)
-[Classes](../../mfc/reference/mfc-classes.md)
+[Hierarchy Chart](../../mfc/hierarchy-chart.md)\ +[Classes](../../mfc/reference/mfc-classes.md)\ [CMFCToolBar Class](../../mfc/reference/cmfctoolbar-class.md) diff --git a/docs/mfc/reference/cmfcribbonfontcombobox-class.md b/docs/mfc/reference/cmfcribbonfontcombobox-class.md index 3582dbb7f95..e37df6dfc0c 100644 --- a/docs/mfc/reference/cmfcribbonfontcombobox-class.md +++ b/docs/mfc/reference/cmfcribbonfontcombobox-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: CMFCRibbonFontComboBox Class" title: "CMFCRibbonFontComboBox Class" +description: "Learn more about: CMFCRibbonFontComboBox Class" ms.date: "11/04/2016" f1_keywords: ["CMFCRibbonFontComboBox", "AFXRIBBONCOMBOBOX/CMFCRibbonFontComboBox", "AFXRIBBONCOMBOBOX/CMFCRibbonFontComboBox::CMFCRibbonFontComboBox", "AFXRIBBONCOMBOBOX/CMFCRibbonFontComboBox::BuildFonts", "AFXRIBBONCOMBOBOX/CMFCRibbonFontComboBox::GetCharSet", "AFXRIBBONCOMBOBOX/CMFCRibbonFontComboBox::GetFontDesc", "AFXRIBBONCOMBOBOX/CMFCRibbonFontComboBox::GetFontType", "AFXRIBBONCOMBOBOX/CMFCRibbonFontComboBox::GetPitchAndFamily", "AFXRIBBONCOMBOBOX/CMFCRibbonFontComboBox::RebuildFonts", "AFXRIBBONCOMBOBOX/CMFCRibbonFontComboBox::SetFont"] helpviewer_keywords: ["CMFCRibbonFontComboBox [MFC], CMFCRibbonFontComboBox", "CMFCRibbonFontComboBox [MFC], BuildFonts", "CMFCRibbonFontComboBox [MFC], GetCharSet", "CMFCRibbonFontComboBox [MFC], GetFontDesc", "CMFCRibbonFontComboBox [MFC], GetFontType", "CMFCRibbonFontComboBox [MFC], GetPitchAndFamily", "CMFCRibbonFontComboBox [MFC], RebuildFonts", "CMFCRibbonFontComboBox [MFC], SetFont"] -ms.assetid: 33b4db50-df4f-45fa-8f05-2e6e73c31435 --- # CMFCRibbonFontComboBox Class @@ -110,7 +109,7 @@ CMFCRibbonFontComboBox( [in] Specifies which font types to display in the combo box. Valid options are DEVICE_FONTTYPE, RASTER_FONTTYPE, and TRUETYPE_FONTTYPE, or any bitwise combination thereof. *nCharSet*
-[in] Filters the fonts in the combo box to those that belong to the specified character set.. +[in] Filters the fonts in the combo box to those that belong to the specified character set. *nPitchAndFamily*
[in] Specifies the pitch and the family of the fonts that are displayed in the combo box. @@ -224,6 +223,6 @@ Pitch and the family (see LOGFONT in the Windows SDK documentation). ## See also -[Hierarchy Chart](../../mfc/hierarchy-chart.md)
-[Classes](../../mfc/reference/mfc-classes.md)
+[Hierarchy Chart](../../mfc/hierarchy-chart.md)\ +[Classes](../../mfc/reference/mfc-classes.md)\ [CMFCRibbonComboBox Class](../../mfc/reference/cmfcribboncombobox-class.md) diff --git a/docs/mfc/reference/cmousemanager-class.md b/docs/mfc/reference/cmousemanager-class.md index 10ca342ab29..92e14a9af3f 100644 --- a/docs/mfc/reference/cmousemanager-class.md +++ b/docs/mfc/reference/cmousemanager-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: CMouseManager Class" title: "CMouseManager Class" +description: "Learn more about: CMouseManager Class" ms.date: "11/04/2016" f1_keywords: ["CMouseManager", "AFXMOUSEMANAGER/CMouseManager", "AFXMOUSEMANAGER/CMouseManager::AddView", "AFXMOUSEMANAGER/CMouseManager::GetViewDblClickCommand", "AFXMOUSEMANAGER/CMouseManager::GetViewIconId", "AFXMOUSEMANAGER/CMouseManager::GetViewIdByName", "AFXMOUSEMANAGER/CMouseManager::GetViewNames", "AFXMOUSEMANAGER/CMouseManager::LoadState", "AFXMOUSEMANAGER/CMouseManager::SaveState", "AFXMOUSEMANAGER/CMouseManager::SetCommandForDblClk"] helpviewer_keywords: ["CMouseManager [MFC], AddView", "CMouseManager [MFC], GetViewDblClickCommand", "CMouseManager [MFC], GetViewIconId", "CMouseManager [MFC], GetViewIdByName", "CMouseManager [MFC], GetViewNames", "CMouseManager [MFC], LoadState", "CMouseManager [MFC], SaveState", "CMouseManager [MFC], SetCommandForDblClk"] -ms.assetid: a4d05017-4e44-4a40-8b57-4ece0de20481 --- # CMouseManager Class @@ -33,7 +32,7 @@ class CMouseManager : public CObject ## Remarks -The `CMouseManager` class maintains a collection of `CView` objects. Each view is identified by a name and by an ID. These views are shown in the **Customization** dialog box. The user can change the command that is associated with any view through the **Customization** dialog box. The associated command is executed when the user double-clicks in that view. To support this from a coding perspective, you must process the WM_LBUTTONDBLCLK message and call the [CWinAppEx::OnViewDoubleClick](../../mfc/reference/cwinappex-class.md#onviewdoubleclick) function in the code for that `CView` object.. +The `CMouseManager` class maintains a collection of `CView` objects. Each view is identified by a name and by an ID. These views are shown in the **Customization** dialog box. The user can change the command that is associated with any view through the **Customization** dialog box. The associated command is executed when the user double-clicks in that view. To support this from a coding perspective, you must process the WM_LBUTTONDBLCLK message and call the [CWinAppEx::OnViewDoubleClick](../../mfc/reference/cwinappex-class.md#onviewdoubleclick) function in the code for that `CView` object. You should not create a `CMouseManager` object manually. It will be created by the framework of your application. It will also be destroyed automatically when the user exits the application. To get a pointer to the mouse manager for your application, call [CWinAppEx::GetMouseManager](../../mfc/reference/cwinappex-class.md#getmousemanager). @@ -246,7 +245,7 @@ If *uiCmd* is set to 0, the specified view is no longer associated with a comman ## See also -[Hierarchy Chart](../../mfc/hierarchy-chart.md)
-[Classes](../../mfc/reference/mfc-classes.md)
-[CWinAppEx Class](../../mfc/reference/cwinappex-class.md)
+[Hierarchy Chart](../../mfc/hierarchy-chart.md)\ +[Classes](../../mfc/reference/mfc-classes.md)\ +[CWinAppEx Class](../../mfc/reference/cwinappex-class.md)\ [Keyboard and Mouse Customization](../../mfc/keyboard-and-mouse-customization.md) diff --git a/docs/mfc/reference/coledocument-class.md b/docs/mfc/reference/coledocument-class.md index c8ad83bdfbe..fe1959bf1aa 100644 --- a/docs/mfc/reference/coledocument-class.md +++ b/docs/mfc/reference/coledocument-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: COleDocument Class" title: "COleDocument Class" +description: "Learn more about: COleDocument Class" ms.date: "11/04/2016" f1_keywords: ["COleDocument", "AFXOLE/COleDocument", "AFXOLE/COleDocument::COleDocument", "AFXOLE/COleDocument::AddItem", "AFXOLE/COleDocument::ApplyPrintDevice", "AFXOLE/COleDocument::EnableCompoundFile", "AFXOLE/COleDocument::GetInPlaceActiveItem", "AFXOLE/COleDocument::GetNextClientItem", "AFXOLE/COleDocument::GetNextItem", "AFXOLE/COleDocument::GetNextServerItem", "AFXOLE/COleDocument::GetPrimarySelectedItem", "AFXOLE/COleDocument::GetStartPosition", "AFXOLE/COleDocument::HasBlankItems", "AFXOLE/COleDocument::OnShowViews", "AFXOLE/COleDocument::RemoveItem", "AFXOLE/COleDocument::UpdateModifiedFlag", "AFXOLE/COleDocument::OnEditChangeIcon", "AFXOLE/COleDocument::OnEditConvert", "AFXOLE/COleDocument::OnEditLinks", "AFXOLE/COleDocument::OnFileSendMail", "AFXOLE/COleDocument::OnUpdateEditChangeIcon", "AFXOLE/COleDocument::OnUpdateEditLinksMenu", "AFXOLE/COleDocument::OnUpdateObjectVerbMenu", "AFXOLE/COleDocument::OnUpdatePasteLinkMenu", "AFXOLE/COleDocument::OnUpdatePasteMenu"] helpviewer_keywords: ["COleDocument [MFC], COleDocument", "COleDocument [MFC], AddItem", "COleDocument [MFC], ApplyPrintDevice", "COleDocument [MFC], EnableCompoundFile", "COleDocument [MFC], GetInPlaceActiveItem", "COleDocument [MFC], GetNextClientItem", "COleDocument [MFC], GetNextItem", "COleDocument [MFC], GetNextServerItem", "COleDocument [MFC], GetPrimarySelectedItem", "COleDocument [MFC], GetStartPosition", "COleDocument [MFC], HasBlankItems", "COleDocument [MFC], OnShowViews", "COleDocument [MFC], RemoveItem", "COleDocument [MFC], UpdateModifiedFlag", "COleDocument [MFC], OnEditChangeIcon", "COleDocument [MFC], OnEditConvert", "COleDocument [MFC], OnEditLinks", "COleDocument [MFC], OnFileSendMail", "COleDocument [MFC], OnUpdateEditChangeIcon", "COleDocument [MFC], OnUpdateEditLinksMenu", "COleDocument [MFC], OnUpdateObjectVerbMenu", "COleDocument [MFC], OnUpdatePasteLinkMenu", "COleDocument [MFC], OnUpdatePasteMenu"] -ms.assetid: dc2ecb99-03e1-44c7-bb69-48056dd1b672 --- # COleDocument Class @@ -64,9 +63,9 @@ class COleDocument : public CDocument If you are writing a simple container application, derive your document class from `COleDocument`. If you are writing a container application that supports linking to the embedded items contained by its documents, derive your document class from [COleLinkingDoc](../../mfc/reference/colelinkingdoc-class.md). If you are writing a server application or combination container/server, derive your document class from [COleServerDoc](../../mfc/reference/coleserverdoc-class.md). `COleLinkingDoc` and `COleServerDoc` are derived from `COleDocument`, so these classes inherit all the services available in `COleDocument` and `CDocument`. -To use `COleDocument`, derive a class from it and add functionality to manage the application's non-OLE data as well as embedded or linked items. If you define `CDocItem`-derived classes to store the application's native data, you can use the default implementation defined by `COleDocument` to store both your OLE and non-OLE data. You can also design your own data structures for storing your non-OLE data separately from the OLE items. For more information, see the article [Containers: Compound Files](../../mfc/containers-compound-files.md).. +To use `COleDocument`, derive a class from it and add functionality to manage the application's non-OLE data as well as embedded or linked items. If you define `CDocItem`-derived classes to store the application's native data, you can use the default implementation defined by `COleDocument` to store both your OLE and non-OLE data. You can also design your own data structures for storing your non-OLE data separately from the OLE items. For more information, see the article [Containers: Compound Files](../../mfc/containers-compound-files.md). -`CDocument` supports sending your document via mail if mail support (MAPI) is present. `COleDocument` has updated [OnFileSendMail](#onfilesendmail) to handle compound documents correctly. For more information, see the articles [MAPI](../../mfc/mapi.md) and [MAPI Support in MFC](../../mfc/mapi-support-in-mfc.md).. +`CDocument` supports sending your document via mail if mail support (MAPI) is present. `COleDocument` has updated [OnFileSendMail](#onfilesendmail) to handle compound documents correctly. For more information, see the articles [MAPI](../../mfc/mapi.md) and [MAPI Support in MFC](../../mfc/mapi-support-in-mfc.md). ## Inheritance Hierarchy @@ -153,7 +152,7 @@ Specifies whether compound file support is enabled or disabled. ### Remarks -This is also called structured storage. You typically call this function from the constructor of your `COleDocument`-derived class. For more information about compound documents, see the article [Containers: Compound Files](../../mfc/containers-compound-files.md).. +This is also called structured storage. You typically call this function from the constructor of your `COleDocument`-derived class. For more information about compound documents, see the article [Containers: Compound Files](../../mfc/containers-compound-files.md). If you do not call this member function, documents will be stored in a nonstructured ("flat") file format. @@ -356,7 +355,7 @@ afx_msg void OnFileSendMail(); Unlike the implementation of `OnFileSendMail` for `CDocument`, this function handles compound files correctly. -For more information, see the [MAPI Topics](../../mfc/mapi.md) and [MAPI Support in MFC](../../mfc/mapi-support-in-mfc.md) articles.. +For more information, see the [MAPI Topics](../../mfc/mapi.md) and [MAPI Support in MFC](../../mfc/mapi-support-in-mfc.md) articles. ## COleDocument::OnShowViews @@ -491,7 +490,7 @@ This allows the framework to prompt the user to save the document before closing ## See also -[MFC Sample CONTAINER](../../overview/visual-cpp-samples.md)
-[MFC Sample MFCBIND](../../overview/visual-cpp-samples.md)
-[CDocument Class](../../mfc/reference/cdocument-class.md)
+[MFC Sample CONTAINER](../../overview/visual-cpp-samples.md)\ +[MFC Sample MFCBIND](../../overview/visual-cpp-samples.md)\ +[CDocument Class](../../mfc/reference/cdocument-class.md)\ [Hierarchy Chart](../../mfc/hierarchy-chart.md) diff --git a/docs/mfc/reference/coleserverdoc-class.md b/docs/mfc/reference/coleserverdoc-class.md index 59f7a9c34b2..b81a4ff6fdf 100644 --- a/docs/mfc/reference/coleserverdoc-class.md +++ b/docs/mfc/reference/coleserverdoc-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: COleServerDoc Class" title: "COleServerDoc Class" +description: "Learn more about: COleServerDoc Class" ms.date: "11/04/2016" f1_keywords: ["COleServerDoc", "AFXOLE/COleServerDoc", "AFXOLE/COleServerDoc::COleServerDoc", "AFXOLE/COleServerDoc::ActivateDocObject", "AFXOLE/COleServerDoc::ActivateInPlace", "AFXOLE/COleServerDoc::DeactivateAndUndo", "AFXOLE/COleServerDoc::DiscardUndoState", "AFXOLE/COleServerDoc::GetClientSite", "AFXOLE/COleServerDoc::GetEmbeddedItem", "AFXOLE/COleServerDoc::GetItemClipRect", "AFXOLE/COleServerDoc::GetItemPosition", "AFXOLE/COleServerDoc::GetZoomFactor", "AFXOLE/COleServerDoc::IsDocObject", "AFXOLE/COleServerDoc::IsEmbedded", "AFXOLE/COleServerDoc::IsInPlaceActive", "AFXOLE/COleServerDoc::NotifyChanged", "AFXOLE/COleServerDoc::NotifyClosed", "AFXOLE/COleServerDoc::NotifyRename", "AFXOLE/COleServerDoc::NotifySaved", "AFXOLE/COleServerDoc::OnDeactivate", "AFXOLE/COleServerDoc::OnDeactivateUI", "AFXOLE/COleServerDoc::OnDocWindowActivate", "AFXOLE/COleServerDoc::OnResizeBorder", "AFXOLE/COleServerDoc::OnShowControlBars", "AFXOLE/COleServerDoc::OnUpdateDocument", "AFXOLE/COleServerDoc::RequestPositionChange", "AFXOLE/COleServerDoc::SaveEmbedding", "AFXOLE/COleServerDoc::ScrollContainerBy", "AFXOLE/COleServerDoc::UpdateAllItems", "AFXOLE/COleServerDoc::CreateInPlaceFrame", "AFXOLE/COleServerDoc::DestroyInPlaceFrame", "AFXOLE/COleServerDoc::GetDocObjectServer", "AFXOLE/COleServerDoc::OnClose", "AFXOLE/COleServerDoc::OnExecOleCmd", "AFXOLE/COleServerDoc::OnFrameWindowActivate", "AFXOLE/COleServerDoc::OnGetEmbeddedItem", "AFXOLE/COleServerDoc::OnReactivateAndUndo", "AFXOLE/COleServerDoc::OnSetHostNames", "AFXOLE/COleServerDoc::OnSetItemRects", "AFXOLE/COleServerDoc::OnShowDocument"] helpviewer_keywords: ["COleServerDoc [MFC], COleServerDoc", "COleServerDoc [MFC], ActivateDocObject", "COleServerDoc [MFC], ActivateInPlace", "COleServerDoc [MFC], DeactivateAndUndo", "COleServerDoc [MFC], DiscardUndoState", "COleServerDoc [MFC], GetClientSite", "COleServerDoc [MFC], GetEmbeddedItem", "COleServerDoc [MFC], GetItemClipRect", "COleServerDoc [MFC], GetItemPosition", "COleServerDoc [MFC], GetZoomFactor", "COleServerDoc [MFC], IsDocObject", "COleServerDoc [MFC], IsEmbedded", "COleServerDoc [MFC], IsInPlaceActive", "COleServerDoc [MFC], NotifyChanged", "COleServerDoc [MFC], NotifyClosed", "COleServerDoc [MFC], NotifyRename", "COleServerDoc [MFC], NotifySaved", "COleServerDoc [MFC], OnDeactivate", "COleServerDoc [MFC], OnDeactivateUI", "COleServerDoc [MFC], OnDocWindowActivate", "COleServerDoc [MFC], OnResizeBorder", "COleServerDoc [MFC], OnShowControlBars", "COleServerDoc [MFC], OnUpdateDocument", "COleServerDoc [MFC], RequestPositionChange", "COleServerDoc [MFC], SaveEmbedding", "COleServerDoc [MFC], ScrollContainerBy", "COleServerDoc [MFC], UpdateAllItems", "COleServerDoc [MFC], CreateInPlaceFrame", "COleServerDoc [MFC], DestroyInPlaceFrame", "COleServerDoc [MFC], GetDocObjectServer", "COleServerDoc [MFC], OnClose", "COleServerDoc [MFC], OnExecOleCmd", "COleServerDoc [MFC], OnFrameWindowActivate", "COleServerDoc [MFC], OnGetEmbeddedItem", "COleServerDoc [MFC], OnReactivateAndUndo", "COleServerDoc [MFC], OnSetHostNames", "COleServerDoc [MFC], OnSetItemRects", "COleServerDoc [MFC], OnShowDocument"] -ms.assetid: a9cdd96a-e0ac-43bb-9203-2c29237e965c --- # COleServerDoc Class @@ -477,7 +476,7 @@ This function restores the container application's user interface to its origina The undo state information should be unconditionally released at this point. -For more information, see the article [Activation](../../mfc/activation-cpp.md).. +For more information, see the article [Activation](../../mfc/activation-cpp.md). ## COleServerDoc::OnDeactivateUI @@ -515,7 +514,7 @@ Specifies whether the document window is to be activated or deactivated. The default implementation removes or adds the frame-level user interface elements as appropriate. Override this function if you want to perform additional actions when the document containing your item is activated or deactivated. -For more information, see the article [Activation](../../mfc/activation-cpp.md).. +For more information, see the article [Activation](../../mfc/activation-cpp.md). ## COleServerDoc::OnExecOleCmd @@ -599,7 +598,7 @@ Specifies whether the frame window is to be activated or deactivated. The default implementation cancels any help modes the frame window might be in. Override this function if you want to perform special processing when the frame window is activated or deactivated. -For more information, see the article [Activation](../../mfc/activation-cpp.md).. +For more information, see the article [Activation](../../mfc/activation-cpp.md). ## COleServerDoc::OnGetEmbeddedItem @@ -860,9 +859,9 @@ This function calls the `OnUpdate` member function for each of the document's it ## See also -[MFC Sample HIERSVR](../../overview/visual-cpp-samples.md)
-[COleLinkingDoc Class](../../mfc/reference/colelinkingdoc-class.md)
-[Hierarchy Chart](../../mfc/hierarchy-chart.md)
-[COleDocument Class](../../mfc/reference/coledocument-class.md)
-[COleLinkingDoc Class](../../mfc/reference/colelinkingdoc-class.md)
+[MFC Sample HIERSVR](../../overview/visual-cpp-samples.md)\ +[COleLinkingDoc Class](../../mfc/reference/colelinkingdoc-class.md)\ +[Hierarchy Chart](../../mfc/hierarchy-chart.md)\ +[COleDocument Class](../../mfc/reference/coledocument-class.md)\ +[COleLinkingDoc Class](../../mfc/reference/colelinkingdoc-class.md)\ [COleTemplateServer Class](../../mfc/reference/coletemplateserver-class.md) diff --git a/docs/mfc/reference/colestreamfile-class.md b/docs/mfc/reference/colestreamfile-class.md index 053820436c5..964fe4e4dd8 100644 --- a/docs/mfc/reference/colestreamfile-class.md +++ b/docs/mfc/reference/colestreamfile-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: COleStreamFile Class" title: "COleStreamFile Class" +description: "Learn more about: COleStreamFile Class" ms.date: "11/04/2016" f1_keywords: ["COleStreamFile", "AFXOLE/COleStreamFile", "AFXOLE/COleStreamFile::COleStreamFile", "AFXOLE/COleStreamFile::Attach", "AFXOLE/COleStreamFile::CreateMemoryStream", "AFXOLE/COleStreamFile::CreateStream", "AFXOLE/COleStreamFile::Detach", "AFXOLE/COleStreamFile::GetStream", "AFXOLE/COleStreamFile::OpenStream"] helpviewer_keywords: ["COleStreamFile [MFC], COleStreamFile", "COleStreamFile [MFC], Attach", "COleStreamFile [MFC], CreateMemoryStream", "COleStreamFile [MFC], CreateStream", "COleStreamFile [MFC], Detach", "COleStreamFile [MFC], GetStream", "COleStreamFile [MFC], OpenStream"] -ms.assetid: e4f93698-e17c-4a18-a7c0-4b4df8eb4d93 --- # COleStreamFile Class @@ -41,7 +40,7 @@ An `IStorage` object must exist before the stream can be opened or created unles `COleStreamFile` objects are manipulated exactly like [CFile](../../mfc/reference/cfile-class.md) objects. -For more information about manipulating streams and storages, see the article [Containers: Compound Files](../../mfc/containers-compound-files.md).. +For more information about manipulating streams and storages, see the article [Containers: Compound Files](../../mfc/containers-compound-files.md). For more information, see [IStream](/windows/win32/api/objidl/nn-objidl-istream) and [IStorage](/windows/win32/api/objidl/nn-objidl-istorage) in the Windows SDK. @@ -222,5 +221,5 @@ For more information, see [IStorage::OpenStream](/windows/win32/api/objidl/nf-ob ## See also -[CFile Class](../../mfc/reference/cfile-class.md)
+[CFile Class](../../mfc/reference/cfile-class.md)\ [Hierarchy Chart](../../mfc/hierarchy-chart.md) diff --git a/docs/mfc/reference/cspinbuttonctrl-class.md b/docs/mfc/reference/cspinbuttonctrl-class.md index b9e1628b644..ccd132b2396 100644 --- a/docs/mfc/reference/cspinbuttonctrl-class.md +++ b/docs/mfc/reference/cspinbuttonctrl-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: CSpinButtonCtrl Class" title: "CSpinButtonCtrl Class" +description: "Learn more about: CSpinButtonCtrl Class" ms.date: "11/04/2016" f1_keywords: ["CSpinButtonCtrl", "AFXCMN/CSpinButtonCtrl", "AFXCMN/CSpinButtonCtrl::CSpinButtonCtrl", "AFXCMN/CSpinButtonCtrl::Create", "AFXCMN/CSpinButtonCtrl::CreateEx", "AFXCMN/CSpinButtonCtrl::GetAccel", "AFXCMN/CSpinButtonCtrl::GetBase", "AFXCMN/CSpinButtonCtrl::GetBuddy", "AFXCMN/CSpinButtonCtrl::GetPos", "AFXCMN/CSpinButtonCtrl::GetRange", "AFXCMN/CSpinButtonCtrl::SetAccel", "AFXCMN/CSpinButtonCtrl::SetBase", "AFXCMN/CSpinButtonCtrl::SetBuddy", "AFXCMN/CSpinButtonCtrl::SetPos", "AFXCMN/CSpinButtonCtrl::SetRange"] helpviewer_keywords: ["CSpinButtonCtrl [MFC], CSpinButtonCtrl", "CSpinButtonCtrl [MFC], Create", "CSpinButtonCtrl [MFC], CreateEx", "CSpinButtonCtrl [MFC], GetAccel", "CSpinButtonCtrl [MFC], GetBase", "CSpinButtonCtrl [MFC], GetBuddy", "CSpinButtonCtrl [MFC], GetPos", "CSpinButtonCtrl [MFC], GetRange", "CSpinButtonCtrl [MFC], SetAccel", "CSpinButtonCtrl [MFC], SetBase", "CSpinButtonCtrl [MFC], SetBuddy", "CSpinButtonCtrl [MFC], SetPos", "CSpinButtonCtrl [MFC], SetRange"] -ms.assetid: 509bfd76-1c5a-4af6-973f-e133c0b87734 --- # CSpinButtonCtrl Class @@ -71,7 +70,7 @@ For more information on using `CSpinButtonCtrl`, see [Controls](../../mfc/contro ## CSpinButtonCtrl::Create -Creates a spin button control and attaches it to a `CSpinButtonCtrl` object.. +Creates a spin button control and attaches it to a `CSpinButtonCtrl` object. ``` virtual BOOL Create( @@ -366,7 +365,7 @@ The member function `SetRange32` sets the 32-bit range for the spin button contr ## See also -[MFC Sample CMNCTRL2](../../overview/visual-cpp-samples.md)
-[CWnd Class](../../mfc/reference/cwnd-class.md)
-[Hierarchy Chart](../../mfc/hierarchy-chart.md)
+[MFC Sample CMNCTRL2](../../overview/visual-cpp-samples.md)\ +[CWnd Class](../../mfc/reference/cwnd-class.md)\ +[Hierarchy Chart](../../mfc/hierarchy-chart.md)\ [CSliderCtrl Class](../../mfc/reference/csliderctrl-class.md) diff --git a/docs/parallel/concrt/reference/concurrency-namespace-functions.md b/docs/parallel/concrt/reference/concurrency-namespace-functions.md index f1aea9adb84..3f7841296b5 100644 --- a/docs/parallel/concrt/reference/concurrency-namespace-functions.md +++ b/docs/parallel/concrt/reference/concurrency-namespace-functions.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: concurrency namespace functions" title: "concurrency namespace functions" +description: "Learn more about: concurrency namespace functions" ms.date: "11/04/2016" f1_keywords: ["concrt/concurrency::Alloc", "concrt/concurrency::DisableTracing", "concrt/concurrency::EnableTracing", "concrtrm/concurrency::GetExecutionContextId", "concrtrm/concurrency::GetOSVersion", "concrtrm/concurrency::GetProcessorNodeCount", "concrtrm/concurrency::GetSchedulerId", "agents/concurrency::asend", "ppltasks/concurrency::cancel_current_task", "ppltasks/concurrency::create_async", "ppltasks/concurrency::create_task", "concurrent_vector/concurrency::internal_assign_iterators", "ppl/concurrency::interruption_point", "agents/concurrency::make_choice", "agents/concurrency::make_greedy_join", "ppl/concurrency::make_task", "ppl/concurrency::parallel_buffered_sort", "ppl/concurrency::parallel_for_each", "ppl/concurrency::parallel_invoke", "ppl/concurrency::parallel_reduce", "ppl/concurrency::parallel_sort", "agents/concurrency::receive", "ppl/concurrency::run_with_cancellation_token", "pplconcrt/concurrency::set_ambient_scheduler", "concrt/concurrency::set_task_execution_resources", "ppltasks/concurrency::task_from_exception", "ppltasks/concurrency::task_from_result", "concrt/concurrency::wait", "ppltasks/concurrency::when_all", "ppltasks/concurrency::when_any"] -ms.assetid: 520a6dff-9324-4df2-990d-302e3050af6a --- # concurrency namespace functions @@ -175,7 +174,7 @@ The lambda may take either zero, one or two arguments. The valid arguments are ` If the body of the lambda or function object returns a result (and not a task\), the lamdba will be executed asynchronously within the process MTA in the context of a task the Runtime implicitly creates for it. The `IAsyncInfo::Cancel` method will cause cancellation of the implicit task. -If the body of the lambda returns a task, the lamba executes inline, and by declaring the lambda to take an argument of type `cancellation_token` you can trigger cancellation of any tasks you create within the lambda by passing that token in when you create them. You may also use the `register_callback` method on the token to cause the Runtime to invoke a callback when you call `IAsyncInfo::Cancel` on the async operation or action produced.. +If the body of the lambda returns a task, the lamba executes inline, and by declaring the lambda to take an argument of type `cancellation_token` you can trigger cancellation of any tasks you create within the lambda by passing that token in when you create them. You may also use the `register_callback` method on the token to cause the Runtime to invoke a callback when you call `IAsyncInfo::Cancel` on the async operation or action produced. This function is only available to Windows Runtime apps. diff --git a/docs/parallel/concrt/reference/concurrent-unordered-map-class.md b/docs/parallel/concrt/reference/concurrent-unordered-map-class.md index e3db26f763b..97ef6e0c74b 100644 --- a/docs/parallel/concrt/reference/concurrent-unordered-map-class.md +++ b/docs/parallel/concrt/reference/concurrent-unordered-map-class.md @@ -475,7 +475,7 @@ void max_load_factor(float _Newmax); ### Return Value -The first member function returns the stored maximum load factor. The second member function does not return a value but throws an [out_of_range](../../../standard-library/out-of-range-class.md) exception if the supplied load factor is invalid.. +The first member function returns the stored maximum load factor. The second member function does not return a value but throws an [out_of_range](../../../standard-library/out-of-range-class.md) exception if the supplied load factor is invalid. ## max_size diff --git a/docs/parallel/concrt/reference/concurrent-unordered-multimap-class.md b/docs/parallel/concrt/reference/concurrent-unordered-multimap-class.md index 9ede5be1d2e..80dd506e527 100644 --- a/docs/parallel/concrt/reference/concurrent-unordered-multimap-class.md +++ b/docs/parallel/concrt/reference/concurrent-unordered-multimap-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: concurrent_unordered_multimap Class" title: "concurrent_unordered_multimap Class" +description: "Learn more about: concurrent_unordered_multimap Class" ms.date: "11/04/2016" f1_keywords: ["concurrent_unordered_multimap", "CONCURRENT_UNORDERED_MAP/concurrency::concurrent_unordered_multimap", "CONCURRENT_UNORDERED_MAP/concurrency::concurrent_unordered_multimap::concurrent_unordered_multimap", "CONCURRENT_UNORDERED_MAP/concurrency::concurrent_unordered_multimap::hash_function", "CONCURRENT_UNORDERED_MAP/concurrency::concurrent_unordered_multimap::insert", "CONCURRENT_UNORDERED_MAP/concurrency::concurrent_unordered_multimap::key_eq", "CONCURRENT_UNORDERED_MAP/concurrency::concurrent_unordered_multimap::swap", "CONCURRENT_UNORDERED_MAP/concurrency::concurrent_unordered_multimap::unsafe_erase"] helpviewer_keywords: ["concurrent_unordered_multimap class"] -ms.assetid: 4dada5d7-15df-4382-b9c9-348e75b2f3c1 --- # concurrent_unordered_multimap Class @@ -449,7 +448,7 @@ void max_load_factor(float _Newmax); ### Return Value -The first member function returns the stored maximum load factor. The second member function does not return a value but throws an [out_of_range](../../../standard-library/out-of-range-class.md) exception if the supplied load factor is invalid.. +The first member function returns the stored maximum load factor. The second member function does not return a value but throws an [out_of_range](../../../standard-library/out-of-range-class.md) exception if the supplied load factor is invalid. ## max_size @@ -708,5 +707,5 @@ The maximum number of buckets in this container. ## See also -[concurrency Namespace](concurrency-namespace.md)
+[concurrency Namespace](concurrency-namespace.md)\ [Parallel Containers and Objects](../../../parallel/concrt/parallel-containers-and-objects.md) diff --git a/docs/parallel/concrt/reference/concurrent-unordered-multiset-class.md b/docs/parallel/concrt/reference/concurrent-unordered-multiset-class.md index 3684631591c..a001180d2f7 100644 --- a/docs/parallel/concrt/reference/concurrent-unordered-multiset-class.md +++ b/docs/parallel/concrt/reference/concurrent-unordered-multiset-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: concurrent_unordered_multiset Class" title: "concurrent_unordered_multiset Class" +description: "Learn more about: concurrent_unordered_multiset Class" ms.date: "11/04/2016" f1_keywords: ["concurrent_unordered_multiset", "CONCURRENT_UNORDERED_SET/concurrency::concurrent_unordered_multiset", "CONCURRENT_UNORDERED_SET/concurrency::concurrent_unordered_multiset::concurrent_unordered_multiset", "CONCURRENT_UNORDERED_SET/concurrency::concurrent_unordered_multiset::hash_function", "CONCURRENT_UNORDERED_SET/concurrency::concurrent_unordered_multiset::insert", "CONCURRENT_UNORDERED_SET/concurrency::concurrent_unordered_multiset::key_eq", "CONCURRENT_UNORDERED_SET/concurrency::concurrent_unordered_multiset::swap", "CONCURRENT_UNORDERED_SET/concurrency::concurrent_unordered_multiset::unsafe_erase"] helpviewer_keywords: ["concurrent_unordered_multiset class"] -ms.assetid: 219d7d67-1ff0-45f4-9400-e9cc272991a4 --- # concurrent_unordered_multiset Class @@ -437,7 +436,7 @@ void max_load_factor(float _Newmax); ### Return Value -The first member function returns the stored maximum load factor. The second member function does not return a value but throws an [out_of_range](../../../standard-library/out-of-range-class.md) exception if the supplied load factor is invalid.. +The first member function returns the stored maximum load factor. The second member function does not return a value but throws an [out_of_range](../../../standard-library/out-of-range-class.md) exception if the supplied load factor is invalid. ## max_size @@ -694,5 +693,5 @@ The maximum number of buckets in this container. ## See also -[concurrency Namespace](concurrency-namespace.md)
+[concurrency Namespace](concurrency-namespace.md)\ [Parallel Containers and Objects](../../../parallel/concrt/parallel-containers-and-objects.md) diff --git a/docs/parallel/concrt/reference/concurrent-unordered-set-class.md b/docs/parallel/concrt/reference/concurrent-unordered-set-class.md index 52f91b4cfab..095a14a818b 100644 --- a/docs/parallel/concrt/reference/concurrent-unordered-set-class.md +++ b/docs/parallel/concrt/reference/concurrent-unordered-set-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: concurrent_unordered_set Class" title: "concurrent_unordered_set Class" +description: "Learn more about: concurrent_unordered_set Class" ms.date: "11/04/2016" f1_keywords: ["concurrent_unordered_set", "CONCURRENT_UNORDERED_SET/concurrency::concurrent_unordered_set", "CONCURRENT_UNORDERED_SET/concurrency::concurrent_unordered_set::concurrent_unordered_set", "CONCURRENT_UNORDERED_SET/concurrency::concurrent_unordered_set::hash_function", "CONCURRENT_UNORDERED_SET/concurrency::concurrent_unordered_set::insert", "CONCURRENT_UNORDERED_SET/concurrency::concurrent_unordered_set::key_eq", "CONCURRENT_UNORDERED_SET/concurrency::concurrent_unordered_set::swap", "CONCURRENT_UNORDERED_SET/concurrency::concurrent_unordered_set::unsafe_erase"] helpviewer_keywords: ["concurrent_unordered_set class"] -ms.assetid: c61f9a9a-4fd9-491a-9251-e300737ecf4b --- # concurrent_unordered_set Class @@ -439,7 +438,7 @@ void max_load_factor(float _Newmax); ### Return Value -The first member function returns the stored maximum load factor. The second member function does not return a value but throws an [out_of_range](../../../standard-library/out-of-range-class.md) exception if the supplied load factor is invalid.. +The first member function returns the stored maximum load factor. The second member function does not return a value but throws an [out_of_range](../../../standard-library/out-of-range-class.md) exception if the supplied load factor is invalid. ## max_size @@ -698,5 +697,5 @@ The maximum number of buckets in this container. ## See also -[concurrency Namespace](concurrency-namespace.md)
+[concurrency Namespace](concurrency-namespace.md)\ [Parallel Containers and Objects](../../../parallel/concrt/parallel-containers-and-objects.md) From 055ce7b633e82a328508bf1459911b99d69eb586 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Mon, 3 Feb 2025 10:54:40 -0800 Subject: [PATCH 0098/2255] remove xamarin --- docs/index.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.yml b/docs/index.yml index ef1c16e4cf9..5974cb3bcdf 100644 --- a/docs/index.yml +++ b/docs/index.yml @@ -1,7 +1,7 @@ ### YamlMime:Hub title: Microsoft C++, C, and Assembler documentation summary: Learn how to use C++, C, and assembly language to develop applications, services, and tools for your platforms and devices. -# brand: aspnet | azure | dotnet | dynamics | m365 | ms-graph | office | power-platform | sql | sql-server | vs | visual-studio | windows | xamarin +# brand: aspnet | azure | dotnet | dynamics | m365 | ms-graph | office | power-platform | sql | sql-server | vs | visual-studio | windows brand: visual-studio metadata: title: Microsoft C/C++ Documentation From 44748e1d91c9834b2e13b7bd628aa97f5b2beb51 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 3 Feb 2025 13:37:51 -0800 Subject: [PATCH 0099/2255] Remove duplicate insert function declaration Remove extraneous insert signature --- docs/standard-library/basic-string-class.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/docs/standard-library/basic-string-class.md b/docs/standard-library/basic-string-class.md index 4cdacb5cc68..5bb4754fac5 100644 --- a/docs/standard-library/basic-string-class.md +++ b/docs/standard-library/basic-string-class.md @@ -2959,9 +2959,6 @@ basic_string& insert( size_type count, value_type char_value); -iterator insert( - iterator iter); - iterator insert( iterator iter, value_type char_value); From 637550aa2ca4bd7aacb528df198ed179b495c526 Mon Sep 17 00:00:00 2001 From: Roope Virtanen <60770128+roopekv@users.noreply.github.com> Date: Fri, 7 Feb 2025 04:12:31 +0200 Subject: [PATCH 0100/2255] Update stdcall.md Clarify where to place the calling convention in trailing return type function declarations. --- docs/cpp/stdcall.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/cpp/stdcall.md b/docs/cpp/stdcall.md index a6e9a503516..61ad524d75c 100644 --- a/docs/cpp/stdcall.md +++ b/docs/cpp/stdcall.md @@ -13,6 +13,8 @@ The **`__stdcall`** calling convention is used to call Win32 API functions. The ## Syntax > *return-type* **`__stdcall`** *function-name*[**`(`** *argument-list* **`)`**] +> +> **`auto`** **`__stdcall`** *function-name*[**`(`** *argument-list* **`)`**] [ **`->`** *return-type* ] ## Remarks From 629fc83a09ba3bd05fd8203eb225f9258359032b Mon Sep 17 00:00:00 2001 From: Josh Harmon Date: Fri, 7 Feb 2025 10:35:59 -0800 Subject: [PATCH 0101/2255] Correct return value of `CTaskDialog::OnHelp()` It returns `S_FALSE`, not `S_OK`, according to `afxtaskdialog.cpp` in 14.42.34433. In testing, returning `S_OK` from an overridden implementation may result in another window (e.g., a main frame window) also presenting help. --- docs/mfc/reference/ctaskdialog-class.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/mfc/reference/ctaskdialog-class.md b/docs/mfc/reference/ctaskdialog-class.md index 9c685c35608..2f1d87a8197 100644 --- a/docs/mfc/reference/ctaskdialog-class.md +++ b/docs/mfc/reference/ctaskdialog-class.md @@ -685,7 +685,7 @@ virtual HRESULT OnHelp(); ### Return Value -The default implementation returns S_OK. +The default implementation returns S_FALSE. ### Remarks From f3375cd25858bda0c6c8db28e56cacdb474eec4e Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 7 Feb 2025 10:39:47 -0800 Subject: [PATCH 0102/2255] draft --- .../compiler-options-listed-alphabetically.md | 3 +- .../compiler-options-listed-by-category.md | 3 +- docs/build/reference/dynamic-deopt.md | 42 +++++++++++++++++++ 3 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 docs/build/reference/dynamic-deopt.md diff --git a/docs/build/reference/compiler-options-listed-alphabetically.md b/docs/build/reference/compiler-options-listed-alphabetically.md index 82a2bf89c2d..927f74a595d 100644 --- a/docs/build/reference/compiler-options-listed-alphabetically.md +++ b/docs/build/reference/compiler-options-listed-alphabetically.md @@ -1,7 +1,7 @@ --- title: "Compiler options listed alphabetically" description: "Reference listing in alphabetical order of the Microsoft C/C++ compiler command-line options." -ms.date: 11/13/2023 +ms.date: 2/5/2025 helpviewer_keywords: ["compiler options, C++"] --- # Compiler options listed alphabetically @@ -37,6 +37,7 @@ This table contains an alphabetical list of compiler options. For a list of comp | [`/constexpr:depth`](constexpr-control-constexpr-evaluation.md) | Recursion depth limit for `constexpr` evaluation (default: 512). | | [`/constexpr:steps`](constexpr-control-constexpr-evaluation.md) | Terminate `constexpr` evaluation after N steps (default: 100000) | | [`/D{=|#}`](d-preprocessor-definitions.md) | Defines constants and macros. | +| [`/dynamicdeopt`](dynamic-deopt.md) | Enable C++ Dynamic Debugging. Debug optimized code using dynamic deoptimization. | | [`/diagnostics`](diagnostics-compiler-diagnostic-options.md) | Diagnostics format: prints column information. | | [`/diagnostics:caret[-]`](diagnostics-compiler-diagnostic-options.md) | Diagnostics format: prints column and the indicated line of source. | | [`/diagnostics:classic`](diagnostics-compiler-diagnostic-options.md) | Use legacy diagnostics format. | diff --git a/docs/build/reference/compiler-options-listed-by-category.md b/docs/build/reference/compiler-options-listed-by-category.md index 7153251edf8..98078392a49 100644 --- a/docs/build/reference/compiler-options-listed-by-category.md +++ b/docs/build/reference/compiler-options-listed-by-category.md @@ -1,7 +1,7 @@ --- title: "Compiler Options Listed by Category" description: "Reference listing by category of the Microsoft C/C++ compiler command-line options." -ms.date: 11/13/2023 +ms.date: 2/5/2025 helpviewer_keywords: ["compiler options, C++"] --- # Compiler options listed by category @@ -12,6 +12,7 @@ This article contains a categorical list of compiler options. For an alphabetica | Option | Purpose | |--|--| +| [`/dynamicdeopt`](dynamic-deopt.md) | Enable C++ Dynamic Debugging. Debug optimized code using dynamic deoptimization. | | [`/favor:`](favor-optimize-for-architecture-specifics.md) | Produces code that is optimized for a specified architecture, or for a range of architectures. | | [`/O1`](o1-o2-minimize-size-maximize-speed.md) | Creates small code. | | [`/O2`](o1-o2-minimize-size-maximize-speed.md) | Creates fast code. | diff --git a/docs/build/reference/dynamic-deopt.md b/docs/build/reference/dynamic-deopt.md new file mode 100644 index 00000000000..c07e34258a0 --- /dev/null +++ b/docs/build/reference/dynamic-deopt.md @@ -0,0 +1,42 @@ +--- +title: "/clr (Common Language Runtime compilation)" +description: "Use the Microsoft C++ compiler option /clr to compile C++/CLI and C++ code as managed code." +ms.date: 10/27/2020 +f1_keywords: ["/dynamicdeopt", "VC.Project.VCNMakeTool.CompileAsManaged", "VC.Project.VCCLCompilerTool.CompileAsManaged"] +helpviewer_keywords: ["cl.exe compiler, common language runtime option", "-dynamicdeopt compiler option [C++]", "dynamicdeopt compiler option [C++]", "/clr compiler option [C++]", "Managed Extensions for C++, compiling", "common language runtime, /clr compiler option"] +--- +# `/dynamicdeopt` (Enable dynamic debugging) + +Place breakpoints in optimized code and step in with on-demand function deoptimization. + +## Syntax + +> **`/dynamicdeopt`** +> **`/dynamicdeopt:suffix `** +> **`/dynamicdeopt:sync`** + +## Arguments + +*suffix*\ +Specify the file extension for the deoptimized output. One or more of the following comma-separated arguments. + + +• /dynamicdeopt:suffix lets you change that new suffix from .alt to something else. We don't expect folks to use this. The gotcha here is that it needs to get set for EVERY file, and it also needs to match the same thing you pass to the linker. If you get it wrong in just a single place the feature can get really weird. But, if folks happen to already have files named blah.alt.cpp and they would prefer a different suffix, we allow that. + +- **`pure`** + + **`/clr:pure` is deprecated**. The option is removed in Visual Studio 2017 and later. We recommend that you port code that must be pure MSIL to C#. + + +## Remarks + +With no options, given `test.cpp` as input your output will include `test.obj`, `test.exe`, and `test.pdb`, as well as `test.alt.obj`, `test.alt.exe`, and ``test.alt.pdb`. + +### To set this compiler option programmatically + +- See . + +## See also + +[MSVC Compiler Options](compiler-options.md)\ +[MSVC Compiler Command-Line Syntax](compiler-command-line-syntax.md) From 24d1c10e1c7ebf88645e83b074af4cfda9985c24 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 7 Feb 2025 10:56:44 -0800 Subject: [PATCH 0103/2255] update per behavior verified Feb 2025 --- docs/preprocessor/check-stack.md | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/docs/preprocessor/check-stack.md b/docs/preprocessor/check-stack.md index 33cf7b507fd..aec8d7d9020 100644 --- a/docs/preprocessor/check-stack.md +++ b/docs/preprocessor/check-stack.md @@ -3,7 +3,7 @@ description: "Learn more about the check_stack pragma directive in Microsoft C/C title: "check_stack pragma" ms.date: 01/22/2021 f1_keywords: ["vc-pragma.check_stack", "check_stack_CPP"] -helpviewer_keywords: ["check_stack pragma", "pragma, check_stack", "pragma, check_stack usage table"] +helpviewer_keywords: ["check_stack pragma", "pragma, check_stack"] no-loc: ["pragma"] --- # `check_stack` pragma @@ -17,19 +17,17 @@ Instructs the compiler to turn off stack probes if **`off`** (or **`-`**) is spe ## Remarks +This pragma only applies to 32-bit platforms (x86, ARM32). It has no effect on 64-bit platforms. + This pragma takes effect at the first function defined after the pragma is seen. Stack probes are neither a part of macros nor of functions that are generated inline. -If you don't give an argument for the **`check_stack`** pragma, stack checking reverts to the behavior specified on the command line. For more information, see [Compiler options](../build/reference/compiler-options.md). The interaction of the `#pragma check_stack` and the [`/Gs`](../build/reference/gs-control-stack-checking-calls.md) option is summarized in the following table. +`#pragma check_stack(off)` / `#pragma Check_stack-` is ignored if the size of the function locals is larger than 4096 or the value specified by `/Gs`. -### Using the check_stack Pragma +The default behavior on is to insert stack probes at the beginning of each function if the size of the locals exceeds 4096 (or the value specified by `/Gs`) to ensure that the stack is large enough to accommodate the function's requirements. -| Syntax | Compiled with

`/Gs` option? | Action | -|--|--|--| -| `#pragma check_stack( )` or

`#pragma check_stack` | Yes | Turns off stack checking for functions that follow | -| `#pragma check_stack( )` or

`#pragma check_stack` | No | Turns on stack checking for functions that follow | -| `#pragma check_stack(on)`

or `#pragma check_stack +` | Yes or No | Turns on stack checking for functions that follow | -| `#pragma check_stack(off)`

or `#pragma check_stack -` | Yes or No | Turns off stack checking for functions that follow | +Use [/Gs (Control stack checking calls)](../build/reference/gs-control-stack-checking-calls.md) to change the threshold of the locals that trigger stack probes. Use with caution. ## See also +[Compiler options](../build/reference/compiler-options.md)\ [Pragma directives and the `__pragma` and `_Pragma` keywords](./pragma-directives-and-the-pragma-keyword.md) From 853bf88ceebc0867210ddf1aab34a20ff0c00f40 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 7 Feb 2025 11:14:19 -0800 Subject: [PATCH 0104/2255] edit --- docs/preprocessor/check-stack.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/preprocessor/check-stack.md b/docs/preprocessor/check-stack.md index aec8d7d9020..a1957d445c0 100644 --- a/docs/preprocessor/check-stack.md +++ b/docs/preprocessor/check-stack.md @@ -12,7 +12,7 @@ Instructs the compiler to turn off stack probes if **`off`** (or **`-`**) is spe ## Syntax -> **`#pragma check_stack(`** [{ **`on`** | **`off`** }] **`)`**\ +> **`#pragma check_stack(`** { **`on`** | **`off`** } **`)`**\ > **`#pragma check_stack`** { **`+`** | **`-`** } ## Remarks @@ -23,10 +23,12 @@ This pragma takes effect at the first function defined after the pragma is seen. `#pragma check_stack(off)` / `#pragma Check_stack-` is ignored if the size of the function locals is larger than 4096 or the value specified by `/Gs`. -The default behavior on is to insert stack probes at the beginning of each function if the size of the locals exceeds 4096 (or the value specified by `/Gs`) to ensure that the stack is large enough to accommodate the function's requirements. +The default behavior of the compiler is to insert stack probes at the beginning of each function if the size of the locals exceeds 4096 or the value specified by `/Gs`. Use [/Gs (Control stack checking calls)](../build/reference/gs-control-stack-checking-calls.md) to change the threshold of the locals that trigger stack probes. Use with caution. +Using `#pragma check_stack()` without arguments is deprecated. + ## See also [Compiler options](../build/reference/compiler-options.md)\ From 9f81de3e2bd0d6d40765c8d506afe024bebc0852 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 7 Feb 2025 11:15:03 -0800 Subject: [PATCH 0105/2255] update freshness date --- docs/preprocessor/check-stack.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/preprocessor/check-stack.md b/docs/preprocessor/check-stack.md index a1957d445c0..8705bd00a30 100644 --- a/docs/preprocessor/check-stack.md +++ b/docs/preprocessor/check-stack.md @@ -1,7 +1,7 @@ --- description: "Learn more about the check_stack pragma directive in Microsoft C/C++" title: "check_stack pragma" -ms.date: 01/22/2021 +ms.date: 2/7/2025 f1_keywords: ["vc-pragma.check_stack", "check_stack_CPP"] helpviewer_keywords: ["check_stack pragma", "pragma, check_stack"] no-loc: ["pragma"] From 88524336f39d07d72e4292e72b5859cf0e1c7cbf Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 7 Feb 2025 11:17:36 -0800 Subject: [PATCH 0106/2255] acrolinx --- docs/preprocessor/check-stack.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/preprocessor/check-stack.md b/docs/preprocessor/check-stack.md index 8705bd00a30..546130842ed 100644 --- a/docs/preprocessor/check-stack.md +++ b/docs/preprocessor/check-stack.md @@ -19,7 +19,7 @@ Instructs the compiler to turn off stack probes if **`off`** (or **`-`**) is spe This pragma only applies to 32-bit platforms (x86, ARM32). It has no effect on 64-bit platforms. -This pragma takes effect at the first function defined after the pragma is seen. Stack probes are neither a part of macros nor of functions that are generated inline. +This pragma takes effect at the first function defined after the pragma is seen. Stack probes are not inserted for macros or functions that are generated inline. `#pragma check_stack(off)` / `#pragma Check_stack-` is ignored if the size of the function locals is larger than 4096 or the value specified by `/Gs`. From d7c307afd1a489f854a4bfa482fb0619057a97dc Mon Sep 17 00:00:00 2001 From: Zack Johnson Date: Fri, 7 Feb 2025 14:54:19 -0500 Subject: [PATCH 0107/2255] Update asan.md to remove PGO from supported optimization levels --- docs/sanitizers/asan.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/sanitizers/asan.md b/docs/sanitizers/asan.md index 3de64921d48..607b3c0ebe9 100644 --- a/docs/sanitizers/asan.md +++ b/docs/sanitizers/asan.md @@ -84,7 +84,10 @@ This article covers the information you require to enable the three workflows li ## Use AddressSanitizer from a developer command prompt -Use the **`/fsanitize=address`** compiler option in a [developer command prompt](../build/building-on-the-command-line.md#developer_command_prompt_shortcuts) to enable compiling for the AddressSanitizer runtime. The **`/fsanitize=address`** option is compatible with all existing C++ or C optimization levels (for example, `/Od`, `/O1`, `/O2`, `/O2 /GL`, and `PGO`). The option works with static and dynamic CRTs (for example, `/MD`, `/MDd`, `/MT`, and `/MTd`). It works whether you create an EXE or a DLL. Debug information is required for optimal formatting of call stacks. In the following example, `cl /fsanitize=address /Zi` is passed on the command line. +Use the **`/fsanitize=address`** compiler option in a [developer command prompt](../build/building-on-the-command-line.md#developer_command_prompt_shortcuts) to enable compiling for the AddressSanitizer runtime. The **`/fsanitize=address`** option is compatible with existing C++ or C optimization levels (for example, `/Od`, `/O1`, `/O2`, and `/O2 /GL`). The option works with static and dynamic CRTs (for example, `/MD`, `/MDd`, `/MT`, and `/MTd`). It works whether you create an EXE or a DLL. Debug information is required for optimal formatting of call stacks. In the following example, `cl /fsanitize=address /Zi` is passed on the command line. + +> [!NOTE] +Profile-guided optimization (PGO) is not supported alongside the AddressSanitizer as the AddressSanitizer should not be used in production. The AddressSanitizer libraries (.lib files) are linked for you automatically. For more information, see [AddressSanitizer language, build, and debugging reference](asan-building.md). From e03381a794e8f1472bc33aa55709a9fb64e00995 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 7 Feb 2025 13:31:20 -0800 Subject: [PATCH 0108/2255] Reword AddressSanitizer PGO note --- docs/sanitizers/asan.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan.md b/docs/sanitizers/asan.md index 607b3c0ebe9..28681863418 100644 --- a/docs/sanitizers/asan.md +++ b/docs/sanitizers/asan.md @@ -87,7 +87,7 @@ This article covers the information you require to enable the three workflows li Use the **`/fsanitize=address`** compiler option in a [developer command prompt](../build/building-on-the-command-line.md#developer_command_prompt_shortcuts) to enable compiling for the AddressSanitizer runtime. The **`/fsanitize=address`** option is compatible with existing C++ or C optimization levels (for example, `/Od`, `/O1`, `/O2`, and `/O2 /GL`). The option works with static and dynamic CRTs (for example, `/MD`, `/MDd`, `/MT`, and `/MTd`). It works whether you create an EXE or a DLL. Debug information is required for optimal formatting of call stacks. In the following example, `cl /fsanitize=address /Zi` is passed on the command line. > [!NOTE] -Profile-guided optimization (PGO) is not supported alongside the AddressSanitizer as the AddressSanitizer should not be used in production. +> AddressSanitizer doesn't support Profile-guided optimization (PGO). AddressSanitizer shouldn't be used in production. The AddressSanitizer libraries (.lib files) are linked for you automatically. For more information, see [AddressSanitizer language, build, and debugging reference](asan-building.md). From d1738e65b3a68843f18b30c7170895fe50150a65 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 7 Feb 2025 14:02:41 -0800 Subject: [PATCH 0109/2255] cleanup --- ...-adding-a-ctaskdialog-to-an-application.md | 144 ++++++------------ 1 file changed, 47 insertions(+), 97 deletions(-) diff --git a/docs/mfc/walkthrough-adding-a-ctaskdialog-to-an-application.md b/docs/mfc/walkthrough-adding-a-ctaskdialog-to-an-application.md index 962e3caae73..c08d6d7ab55 100644 --- a/docs/mfc/walkthrough-adding-a-ctaskdialog-to-an-application.md +++ b/docs/mfc/walkthrough-adding-a-ctaskdialog-to-an-application.md @@ -1,15 +1,14 @@ --- -description: "Learn more about: Walkthrough: Adding a CTaskDialog to an Application" +description: "Learn how to add a CTaskDialog to a MFC application" title: "Walkthrough: Adding a CTaskDialog to an Application" -ms.date: "04/25/2019" +ms.date: "2/7/2025" helpviewer_keywords: ["CTaskDialog, adding", "walkthroughs [MFC], dialogs"] -ms.assetid: 3a62abb8-2d86-4bec-bdb8-5784d5f9a9f8 --- -# Walkthrough: Adding a CTaskDialog to an Application +# Walkthrough: Adding a CTaskDialog to an application -This walkthrough introduces the [CTaskDialog Class](../mfc/reference/ctaskdialog-class.md) and shows you how to add one to your application. +This walkthrough introduces the [`CTaskDialog` class](../mfc/reference/ctaskdialog-class.md) and shows how to add it to your application. -The `CTaskDialog` is a task dialog box that replaces the Windows message box in Windows Vista or later. The `CTaskDialog` improves the original message box and adds functionality. The Windows message box is still supported in Visual Studio. +The `CTaskDialog` is a task dialog box that replaces the Windows message box in Windows Vista or later. The `CTaskDialog` improves on the original message box and adds functionality. The Windows message box is still supported in Visual Studio. > [!NOTE] > Versions of Windows earlier than Windows Vista do not support the `CTaskDialog`. You must program an alternative dialog box option if you want to show a message to a user who runs your application on an earlier version of Windows. You can use the static method [CTaskDialog::IsSupported](../mfc/reference/ctaskdialog-class.md#issupported) to determine at run time whether a user's computer can display a `CTaskDialog`. In addition, the `CTaskDialog` is only available when your application is built with the Unicode library. @@ -21,37 +20,30 @@ The `CTaskDialog` supports several optional elements to gather and display infor You need the following components to complete this walkthrough: - Visual Studio 2010 or later - - Windows Vista or later -## Replacing a Windows Message Box with a CTaskDialog - -The following procedure demonstrates the most basic use of the `CTaskDialog`, which is to replace the Windows message box. This example also changes the icon associated with the task dialog box. Changing the icon makes the `CTaskDialog` appear same to the Windows message box. +## Replace the Windows message box with a CTaskDialog -### To Replace a Windows Message Box with a CTaskDialog +The following demonstrates the most basic use of the `CTaskDialog`, which is to replace the Windows message box. This example also changes the icon associated with the task dialog box. Changing the icon makes the `CTaskDialog` appear similar to the Windows message box. 1. Use the **MFC Application Wizard** to create an MFC application with all the default settings. See [Walkthrough: Using the New MFC Shell Controls](walkthrough-using-the-new-mfc-shell-controls.md) for instructions on how to open the wizard for your version of Visual Studio. - 1. Call it *MyProject*. - -1. Use the **Solution Explorer** to open the file MyProject.cpp. - +1. Use the **Solution Explorer** to open `MyProject.cpp`. 1. Add `#include "afxtaskdialog.h"` after the list of includes. - 1. Find the method `CMyProjectApp::InitInstance`. Insert the following lines of code before the `return TRUE;` statement. This code creates the strings that we use in either the Windows message box or in the `CTaskDialog`. ```cpp CString message("My message to the user"); CString dialogTitle("My Task Dialog title"); CString emptyString; - ``` - -1. Add the following code after the code from step 4. This code guarantees that the user's computer supports the `CTaskDialog`. If the dialog isn't supported, the application displays a Windows message box instead. - ```cpp + // Check whether the user's computer supports `CTaskDialog`. + // If not, display a Windows message box instead. if (CTaskDialog::IsSupported()) { - + CTaskDialog taskDialog(message, emptyString, dialogTitle, TDCBF_OK_BUTTON); + taskDialog.SetMainIcon(TD_WARNING_ICON); // Set the icon to be the same as the Windows message box + taskDialog.DoModal(); } else { @@ -59,45 +51,18 @@ The following procedure demonstrates the most basic use of the `CTaskDialog`, wh } ``` -1. Insert the following code between the brackets after the **`if`** statement from step 5. This code creates the `CTaskDialog`. - - ```cpp - CTaskDialog taskDialog(message, emptyString, dialogTitle, TDCBF_OK_BUTTON); - ``` - -1. On the next line, add the following code. This code sets the warning icon. - - ```cpp - taskDialog.SetMainIcon(TD_WARNING_ICON); - ``` - -1. On the next line, add the following code. This code displays the task dialog box. - - ```cpp - taskDialog.DoModal(); - ``` - -You can avoid step 7 if you don't want the `CTaskDialog` to display the same icon as the Windows message box. If you avoid that step, the `CTaskDialog` has no icon when the application displays it. - Compile and run the application. The application displays the task dialog box after it starts. -## Adding Functionality to the CTaskDialog - -The following procedure shows you how to add functionality to the `CTaskDialog` that you created in the previous procedure. The example code shows you how to execute specific instructions based on the user's selections. - -### To Add Functionality to the CTaskDialog +## Add functionality to the CTaskDialog -1. Navigate to the **Resource View**. If you can't see the **Resource View**, you can open it from the **View** menu. - -1. Expand the **Resource View** until you can select the **String Table** folder. Expand it and double-click the **String Table** entry. +The following shows you how to add functionality to the `CTaskDialog` that you created in the previous procedure. The example code shows you how to execute specific instructions based on the user's selections. +1. Navigate to the **Resource View** via **View** > **Other Windows** > **Resource View**. +1. Expand the **Resource View** to the **String Table** folder. Expand it and double-click **String Table**. 1. Scroll to the bottom of the string table and add a new entry. Change the ID to `TEMP_LINE1`. Set the caption to **Command Line 1**. - 1. Add another new entry. Change the ID to `TEMP_LINE2`. Set the caption to **Command Line 2**. - -1. Navigate back to MyProject.cpp. - -1. After `CString emptyString;`, add the following code: +1. Navigate back to `MyProject.cpp`. +1. In the `CMyProjectApp::InitInstance()` function, after `CString emptyString;`, add the following code: ```cpp CString expandedLabel("Hide extra information"); @@ -109,67 +74,52 @@ The following procedure shows you how to add functionality to the `CTaskDialog` ```cpp taskDialog.SetMainInstruction(L"Warning"); - taskDialog.SetCommonButtons( - TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON); + taskDialog.SetCommonButtons(TDCBF_YES_BUTTON | TDCBF_NO_BUTTON | TDCBF_CANCEL_BUTTON); taskDialog.LoadCommandControls(TEMP_LINE1, TEMP_LINE2); - taskDialog.SetExpansionArea( - expansionInfo, collapsedLabel, expandedLabel); + taskDialog.SetExpansionArea(expansionInfo, collapsedLabel, expandedLabel); taskDialog.SetFooterText(L"This is a small footnote to the user"); taskDialog.SetVerificationCheckboxText(L"Remember your selection"); - ``` - -1. Add the following line of code that displays the task dialog box to the user and retrieves the user's selection: - - ```cpp INT_PTR result = taskDialog.DoModal(); - ``` - -1. Insert the following code after the call to `taskDialog.DoModal()`. This section of code processes the user's input: - ```cpp if (taskDialog.GetVerificationCheckboxState()) { - // PROCESS IF the user selects the verification checkbox + // Your code if the user selects the verification checkbox } switch (result) { - case TEMP_LINE1: - // PROCESS IF the first command line - break; - case TEMP_LINE2: - // PROCESS IF the second command line - break; - case IDYES: - // PROCESS IF the user clicks yes - break; - case IDNO: - // PROCESS IF the user clicks no - break; - case IDCANCEL: - // PROCESS IF the user clicks cancel - break; - default: - // This case should not be hit because closing - // the dialog box results in IDCANCEL - break; + case TEMP_LINE1: + // PROCESS IF the first command line + break; + case TEMP_LINE2: + // PROCESS IF the second command line + break; + case IDYES: + // PROCESS IF the user clicks yes + break; + case IDNO: + // PROCESS IF the user clicks no + break; + case IDCANCEL: + // PROCESS IF the user clicks cancel + break; + default: + // This case should not be hit because closing + // the dialog box results in IDCANCEL + break; } ``` -In the code in step 9, replace the comments that start with `PROCESS IF` with the code that you want to execute under the specified conditions. - Compile and run the application. The application displays the task dialog box that uses the new controls and additional information. ## Displaying a CTaskDialog Without Creating a CTaskDialog Object -The following procedure shows you how to display a `CTaskDialog` without first creating a `CTaskDialog` object. This example continues the previous procedures. +The following shows you how to display a `CTaskDialog` without first creating a `CTaskDialog` object. This example continues the previous procedures. ### To Display a CTaskDialog Without Creating a CTaskDialog Object -1. Open the MyProject.cpp file if it isn't already open. - -1. Navigate to the closing bracket for the `if (CTaskDialog::IsSupported())` statement. - +1. Open the `MyProject.cpp` file. +1. In the `CMyProjectApp::InitInstance()` function, navigate to the closing bracket for the `if (CTaskDialog::IsSupported())` statement. 1. Insert the following code immediately before the closing bracket of the **`if`** statement (before the **`else`** block): ```cpp @@ -180,12 +130,12 @@ The following procedure shows you how to display a `CTaskDialog` without first c TEMP_LINE2); ``` -Compile and run the application. The application displays two task dialog boxes. The first dialog box is from the **To Add Functionality to the CTaskDialog** procedure; the second dialog box is from the last procedure. +Compile and run the application. The application displays two task dialog boxes. The first dialog box is from the **To Add Functionality to the CTaskDialog** procedure; the second dialog box is from the previous procedure. These examples don't demonstrate all the available options for a `CTaskDialog`, but should help you get started. See [CTaskDialog Class](../mfc/reference/ctaskdialog-class.md) for a full description of the class. ## See also -[Dialog Boxes](../mfc/dialog-boxes.md)
-[CTaskDialog Class](../mfc/reference/ctaskdialog-class.md)
+[Dialog Boxes](../mfc/dialog-boxes.md)\ +[CTaskDialog Class](../mfc/reference/ctaskdialog-class.md)\ [CTaskDialog::CTaskDialog](../mfc/reference/ctaskdialog-class.md#ctaskdialog) From 8ca6ab8e17bf4dd56a3a609a4a4d6a0b81bc591e Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 7 Feb 2025 14:20:51 -0800 Subject: [PATCH 0110/2255] acrolinx --- ...lkthrough-adding-a-ctaskdialog-to-an-application.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/mfc/walkthrough-adding-a-ctaskdialog-to-an-application.md b/docs/mfc/walkthrough-adding-a-ctaskdialog-to-an-application.md index c08d6d7ab55..1174ea2988d 100644 --- a/docs/mfc/walkthrough-adding-a-ctaskdialog-to-an-application.md +++ b/docs/mfc/walkthrough-adding-a-ctaskdialog-to-an-application.md @@ -11,7 +11,7 @@ This walkthrough introduces the [`CTaskDialog` class](../mfc/reference/ctaskdial The `CTaskDialog` is a task dialog box that replaces the Windows message box in Windows Vista or later. The `CTaskDialog` improves on the original message box and adds functionality. The Windows message box is still supported in Visual Studio. > [!NOTE] -> Versions of Windows earlier than Windows Vista do not support the `CTaskDialog`. You must program an alternative dialog box option if you want to show a message to a user who runs your application on an earlier version of Windows. You can use the static method [CTaskDialog::IsSupported](../mfc/reference/ctaskdialog-class.md#issupported) to determine at run time whether a user's computer can display a `CTaskDialog`. In addition, the `CTaskDialog` is only available when your application is built with the Unicode library. +> Versions of Windows earlier than Windows Vista don't support the `CTaskDialog`. You must program an alternative dialog box option if you want to show a message to a user who runs your application on an earlier version of Windows. You can use the static method [CTaskDialog::IsSupported](../mfc/reference/ctaskdialog-class.md#issupported) to determine at run time whether a user's computer can display a `CTaskDialog`. In addition, the `CTaskDialog` is only available when your application is built with the Unicode library. The `CTaskDialog` supports several optional elements to gather and display information. For example, a `CTaskDialog` can display command links, customized buttons, customized icons, and a footer. The `CTaskDialog` also has several methods that enable you to query the state of the task dialog box to determine what optional elements the user selected. @@ -26,7 +26,7 @@ You need the following components to complete this walkthrough: The following demonstrates the most basic use of the `CTaskDialog`, which is to replace the Windows message box. This example also changes the icon associated with the task dialog box. Changing the icon makes the `CTaskDialog` appear similar to the Windows message box. -1. Use the **MFC Application Wizard** to create an MFC application with all the default settings. See [Walkthrough: Using the New MFC Shell Controls](walkthrough-using-the-new-mfc-shell-controls.md) for instructions on how to open the wizard for your version of Visual Studio. +1. Use the **MFC Application Wizard** to create a Microsoft Foundation Classes (MFC) application with all the default settings. See [Walkthrough: Using the New MFC Shell Controls](walkthrough-using-the-new-mfc-shell-controls.md) for instructions on how to open the wizard for your version of Visual Studio. 1. Call it *MyProject*. 1. Use the **Solution Explorer** to open `MyProject.cpp`. 1. Add `#include "afxtaskdialog.h"` after the list of includes. @@ -59,10 +59,10 @@ The following shows you how to add functionality to the `CTaskDialog` that you c 1. Navigate to the **Resource View** via **View** > **Other Windows** > **Resource View**. 1. Expand the **Resource View** to the **String Table** folder. Expand it and double-click **String Table**. -1. Scroll to the bottom of the string table and add a new entry. Change the ID to `TEMP_LINE1`. Set the caption to **Command Line 1**. -1. Add another new entry. Change the ID to `TEMP_LINE2`. Set the caption to **Command Line 2**. +1. Scroll to the bottom of the string table and add a new entry. Change the ID to `TEMP_LINE1`. Set the caption to `Command Line 1`. +1. Add another new entry. Change the ID to `TEMP_LINE2`. Set the caption to `Command Line 2`. 1. Navigate back to `MyProject.cpp`. -1. In the `CMyProjectApp::InitInstance()` function, after `CString emptyString;`, add the following code: +1. In the `CMyProjectApp::InitInstance()` function, after `CString emptyString;` add the following code: ```cpp CString expandedLabel("Hide extra information"); From 990ccc2973789982cc79039f1b01cc165a4dbb8d Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 10 Feb 2025 17:49:08 -0800 Subject: [PATCH 0111/2255] What's new for 17.13 * start * small edit * updates * draft new updates * edits * fix links * fix link --- docs/overview/cpp-conformance-improvements.md | 46 +++++++- .../media/vs2022-copilot-comment-example.png | Bin 0 -> 67681 bytes .../vs2022-copilot-edit-session-example.png | Bin 0 -> 129973 bytes .../media/vs2022-copilot-edit-session.png | Bin 0 -> 33991 bytes .../vs2022-copilot-git-changes-review.png | Bin 0 -> 23597 bytes ...t-s-new-for-visual-cpp-in-visual-studio.md | 107 +++++++++++++++++- 6 files changed, 148 insertions(+), 5 deletions(-) create mode 100644 docs/overview/media/vs2022-copilot-comment-example.png create mode 100644 docs/overview/media/vs2022-copilot-edit-session-example.png create mode 100644 docs/overview/media/vs2022-copilot-edit-session.png create mode 100644 docs/overview/media/vs2022-copilot-git-changes-review.png diff --git a/docs/overview/cpp-conformance-improvements.md b/docs/overview/cpp-conformance-improvements.md index a1f9c469fbf..7de36922bba 100644 --- a/docs/overview/cpp-conformance-improvements.md +++ b/docs/overview/cpp-conformance-improvements.md @@ -1,7 +1,7 @@ --- title: "C++ conformance improvements in Visual Studio 2022" description: "Microsoft C++ in Visual Studio is improving standards conformance and fixing bugs regularly." -ms.date: 11/12/2024 +ms.date: 2/11/2025 ms.service: "visual-cpp" ms.subservice: "cpp-lang" --- @@ -19,6 +19,50 @@ For changes in earlier versions of Visual Studio: | 2017 | [C++ conformance improvements in Visual Studio 2017](cpp-conformance-improvements-2017.md) | | 2003-2015 | [Visual C++ What's New 2003 through 2015](../porting/visual-cpp-what-s-new-2003-through-2015.md) | +## Conformance improvements in Visual Studio 2022 version 17.13 + +Visual Studio 2022 version 17.13 includes the following conformance improvements, bug fixes, and behavior changes in the Microsoft C/C++ compiler. + +For an in-depth summary of changes made to the Standard Template Library, including conformance changes, bug fixes, and performance improvements, see [STL Changelog VS 2022 17.13](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-1713). + +### Argument-dependent lookup (ADL) change + +Language constructs such as range-for and structured bindings have special argument-dependent lookup rules for certain identifiers such as `begin`, `end`, or `get`. Previously, this lookup included candidates from the `std` namespace, even when namespace `std` is not part of the ordinary set of associated namespaces for argument-dependent lookup. + +Programs that introduced declarations to `std` for these constructs no longer compile. Instead, the declarations should be in a normal associated namespace for the types involved (possibly including the global namespace). + +```cpp +template +struct Foo {}; + +namespace std +{ + // To correct the program, move these declarations from std to the global namespace + template + T* begin(Foo& f); + template + T* end(Foo& f); +} + +void f(Foo foo) +{ + for (auto x : foo) // Previously compiled. Now emits error C3312: no callable 'begin' function found for type 'Foo' + { + ... + } +} +``` + +### Can't modify implementation-reserved macros + +Previously, the compiler permitted changing or undefining certain implementation-provided macros such as `_MSC_EXTENSIONS`. Altering the definition of certain macros can result in undefined behavior. + +Attempting to alter or undefine certain reserved macro names now results in the level-1 warning `C5308`. In `/permissive-` mode, this warning is treated as an error. + +```cpp +#undef _MSC_EXTENSIONS // Warning C5308: Modifying reserved macro name `_MSC_EXTENSIONS` may cause undefined behavior +``` + ## Conformance improvements in Visual Studio 2022 version 17.12 Visual Studio 2022 version 17.12 includes the following conformance improvements, bug fixes, and behavior changes in the Microsoft C/C++ compiler. diff --git a/docs/overview/media/vs2022-copilot-comment-example.png b/docs/overview/media/vs2022-copilot-comment-example.png new file mode 100644 index 0000000000000000000000000000000000000000..523959124d4e4f1703816909db32bdcece167dc6 GIT binary patch literal 67681 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

6t52Nb{_VH9H4$e8Ay-5QH)q&!dM(-`TIh8A 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 P8Gyjk)z4*}Q$iB}>aOZW literal 0 HcmV?d00001 diff --git a/docs/overview/media/vs2022-copilot-edit-session-example.png b/docs/overview/media/vs2022-copilot-edit-session-example.png new file mode 100644 index 0000000000000000000000000000000000000000..4d154f0bd08bf60aef6c6309edfa12bd79c30049 GIT binary patch literal 129973 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

CQWS0Q@&mCHD<_nJIsSr=6aq#$~VA5J!lT6cy| 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 KMNUMnLSTX_G089h literal 0 HcmV?d00001 diff --git a/docs/overview/media/vs2022-copilot-git-changes-review.png b/docs/overview/media/vs2022-copilot-git-changes-review.png new file mode 100644 index 0000000000000000000000000000000000000000..b42accbd5fdd30577fc3bf7e8ddfbb4efaa140e4 GIT binary patch literal 23597 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 Z{{x*`p3dBY8Vmpc002ovPDHLkV1gl1pxpof literal 0 HcmV?d00001 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 ff5fced41b7..860b09c8ca4 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: 11/12/2024 +ms.date: 2/10/2025 ms.service: "visual-cpp" ms.subservice: "ide" ms.custom: intro-whats-new @@ -12,10 +12,109 @@ ai-usage: ai-assisted Visual Studio 2022 brings many updates and fixes to the Microsoft C++ compiler and tools. The Visual Studio IDE also offers significant improvements in performance and productivity, and now runs natively as a 64-bit application. -- For more information on what's new in all of Visual Studio, see [What's new in Visual Studio 2022](/visualstudio/ide/whats-new-visual-studio-2022?view=vs-2022&preserve-view=true). +- For more information on what's new in all of Visual Studio, see [What's new in Visual Studio 2022](/visualstudio/ide/whats-new-visual-studio-2022). - For information about what's new in the C++ docs, see [Microsoft C++ docs: What's new](./whats-new-cpp-docs.md). - For information about version build dates, see [Visual Studio 2022 Release History](/visualstudio/releases/2022/release-history). +## What's new for C++ in Visual Studio version 17.13 + +*Released February 2025* + +| For more information about | See | +|---|---| +| What's new for C++ developers | [What's New for C++ Developers in Visual Studio 2022 17.13](https://devblogs.microsoft.com/cppblog/whats-new-for-c-developers-in-visual-studio-2022-17-13/) | +| Standard Library (STL) merged C++26 and C++23 features, LWG issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.13](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-1713) | +| New features in the IDE |[Visual Studio 2022 version 17.13 Release Notes](/visualstudio/releases/2022/release-notes) | +| C++ language updates | [MSVC Compiler updates in Visual Studio 2022 17.13](https://devblogs.microsoft.com/cppblog/msvc-compiler-language-updates-in-visual-studio-2022-version-17-13/) | +| C++ language conformance improvements | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022 17.13](cpp-conformance-improvements.md#improvements_1713) | + +A quick highlight of some of the new features: + +- **C++ language enhancements** + + - Try out C++23 preview features by setting the C++ Language Standard to `/std:c++23preview`. This setting enables the latest C++23 features and bug fixes. For more information, see [/std (Specify Language Standard Version)](../build/reference/std-specify-language-standard-version.md#stdc23preview). + - Support add for C++23’s `size_t` literal suffix which helps avoid truncations or signed comparison mismatches--especially when writing loops. For example: + ```cpp + // Infinite loop if v.size > max unsigned int + for (auto i = 0u; i < v.size(); ++i) + { + ... + } + + // Fixed because of uz literal + for (auto i = 0uz; i < v.size(); ++i) + { + ... + } + ``` + + - Support for vector lengths for code generation on x86 and x64. For more information, see [/vlen](../build/reference/vlen.md). + - Support for Intel Advanced Vector Extensions 10 version 1. For more information about `/arch:AVX10.1`, see [/arch (x64)](../build/reference/arch-x64.md). + +- **Standard Library enhancements** + + - Standard library support for couroutines. In this example from [P2502R2](https://wg21.link/p2502r2), the `fib` function is a coroutine. When the `co_yield` statement is executed, `fib` is suspended and the value is returned to the caller. You can resume the `fib` coroutine later to produce more values without requiring any manual state handling: + + ```cpp + std::generator fib() + { + auto a = 0, b = 1; + + while (true) + { + co_yield std::exchange(a, std::exchange(b, a + b)); + } + } + + int answer_to_the_universe() + { + auto rng = fib() | std::views::drop(6) | std::views::take(3); + return std::ranges::fold_left(std::move(range), 0, std::plus{}); + } + ``` + + - Moved `system_clock`, `high_resolution_clock`, and `chrono_literals` from a commonly included internal header to ``. If you see compiler errors that types like `system_clock` or user-defined literals like `1729ms` aren't recognized, include ``. + - Improved the vectorized implementations of `bitset` constructors from strings, `basic_string::find_last_of()`, `remove()`, `ranges::remove`, and the `minmax_element()` and `minmax()` algorithm families. + - Added vectorized implementations of: + - `find_end()` and `ranges::find_end` for 1-byte and 2-byte elements. + - `basic_string::find()` and `basic_string::rfind()` for a substring. + - `basic_string::rfind()` for a single character. + - Merged C++23 Defect Reports: + - [P3107R5](https://wg21.link/P3107R5) Permit an efficient implementation of ``. + - [P3235R3](https://wg21.link/P3235R3) `std::print` More types faster with less memory. + +- **GitHub Copilot** + + - GitHub Copilot Free is now available. Get 2,000 code completions and 50 chat requests per month at no cost. + - GitHub Copilot code completions provide autocomplete suggestions inline as you code. To enhance the experience of C++ developers, GitHub Copilot includes other relevant files as context. This reduces hallucinations while offering more relevant and accurate suggestions. + - You can now request a code review from GitHub Copilot from the Git Changes window: + :::image type="complex" source="./media/vs2022-copilot-git-changes-review.png" alt-text="A screenshot of the Git Changes window with the GitHub Copilot Review button highlighted."::: + The Git Changes window is open with the GitHub Copilot Review button highlighted. + :::image-end::: + + GitHub Copilot looks for potential issues and creates comments for them: + + :::image type="complex" source="./media/vs2022-copilot-comment-example.png" alt-text="A screenshot of the GitHub Copilot explaining an issue."::: + GitHub Copilot found an issue with the line if ( is_enabled_) new_site.disable(). It says it may be a mistake and should likely be if ( is_enabled_) new_site.enable() because the intention seem to be enabling the new site if the breakpoint is enabled. + :::image-end::: + + To use this feature, ensure you have the following turned on: + - **Tools**>**Options**> **Preview Features** > **Pull Request Comments** + - **Tools** >**Options** > **GitHub** > **Copilot** > **Source Control Integration** > **Enable Git preview features**. + + - GitHub Copilot Edits is a new feature that can make changes across multiple files in your project. To start a new Edits session, click **Create new edit session** at the top of the GitHub Copilot Chat window: + + :::image type="content" source="./media/vs2022-copilot-edit-session.png" alt-text="A screenshot of the GitHub Copilot Chat window. The Create new edit session button is highlighted."::: + + Describe the changes you want to make and Copilot will suggest the relevant edits. You can preview the edits one-by-one and accept the ones you want or make corrections: + + :::image type="complex" source="./media/vs2022-copilot-edit-session-example.png" alt-text="A screenshot of the GitHub Copilot Chat window displaying the files it edited."::: + GitHub Copilot is displaying a summary of the changes it made, such as 1. Create a new subclass range_breakpoint in include/libsdb/breakpoint.hpp" and 2. Implement the range_breakpoint class in src/breakpoint.cpp. An option to accept the changes is displayed. + :::image-end::: + +- **CMake** + - Now supports CMake Presets v9. New macro expansions in a preset's include field. For more information, see [Macro expansion](https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html#macro-expansion) in the official CMake documentation. + ## What's new for C++ in Visual Studio version 17.12 *Released November 2024* @@ -48,7 +147,7 @@ A quick highlight of some of the new features: :::image type="complex" source="./media/copilot-smart-variable-inspection.png" alt-text="A screenshot of the Autos window. The variable named it is NULL. The Ask Copilot icon next to it is highlighted."::: The code that caused this problem is: for (auto it = h.animals_.begin(); it <= h.animals_.end(); it++). :::image-end::: - If you click Ask Copilot icon for the `it` variable, it will tell you why it is ``: + If you click Ask Copilot icon for the `it` variable, it tells you why it is ``: :::image type="complex" source="./media/copilot-smart-variable-explanation.png" alt-text="A screenshot of a GitHub Copilot window."::: This error is inside a function defined as int calculate_number_of_cats(const house& h). The GitHub Copilot message says: "The value of the expression it is NULL, which means that the iterator is not pointing to any valid element in the vector animals_. In the context of your program, it is supposed to iterate over the animals_ vector in the house object to count the number of cat objects. Why it is null. Based on the locals and call stack context: the house object h has an empty animals_ vector (size=0). The loop condition it <= h.animals_.end() is incorrect. It should be it != h.animals_.end()." :::image-end::: @@ -90,7 +189,7 @@ A partial list of new features: :::image type="complex" source="./media/include-diagnostics-improved.png" alt-text="A screenshot of the improved Included Files diagnostics results."::: The Included Files view has a new column for the project. The Project column is selected and projects such as (Select All), CompilerIdC, OpenAL, common, and so on, are selected. The included files are listed by relative path and file name and grouped together. :::image-end::: -- CMake debugging +- **CMake debugging** - You can now debug your CMake scripts and `CMakeLists.txt` files in the Visual Studio debugger for CMake projects that target Linux via Windows Subsystem for Linux (WSL) or SSH. To start a CMake debugging session in Visual Studio, set a breakpoint in your `CMakeLists.txt` file and then navigate to **Project** > **Configure Cache with CMake Debugging**. - **GitHub Copilot** - When you hover over symbols in the code editor, click the Copilot **Tell me more** button in the Quick Info dialog to learn more about a given symbol: From 3d118ba896a9ead96cf7a89c7f1d989678eda20e Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 11 Feb 2025 23:01:52 +0800 Subject: [PATCH 0112/2255] Remove trailing comma in function prototypes --- .../reference/cstringt-class.md | 14 ++++++------ docs/atl/reference/cstockpropimpl-class.md | 7 +++--- .../reference/sopen-s-wsopen-s.md | 5 ++--- docs/intrinsics/arm-intrinsics.md | 5 ++--- docs/intrinsics/x86-intrinsics-list.md | 2 +- docs/mfc/reference/cgopherconnection-class.md | 22 +++++++++---------- docs/mfc/reference/cmfcdynamiclayout-class.md | 7 +++--- docs/standard-library/atomic-functions.md | 6 ++--- docs/standard-library/basic-string-class.md | 2 +- docs/standard-library/codecvt-class.md | 5 ++--- docs/standard-library/deque-functions.md | 5 ++--- .../standard-library/insert-iterator-class.md | 5 ++--- docs/standard-library/queue-operators.md | 15 ++++++------- docs/standard-library/stack-operators.md | 5 ++--- 14 files changed, 48 insertions(+), 57 deletions(-) diff --git a/docs/atl-mfc-shared/reference/cstringt-class.md b/docs/atl-mfc-shared/reference/cstringt-class.md index ffff1211a42..40b42daf448 100644 --- a/docs/atl-mfc-shared/reference/cstringt-class.md +++ b/docs/atl-mfc-shared/reference/cstringt-class.md @@ -998,11 +998,11 @@ Concatenates two strings or a character and a string. ```cpp friend CStringT operator+(const CStringT& str1, const CStringT& str2); friend CStringT operator+(const CStringT& str1, PCXSTR psz2); -friend CStringT operator+(PCXSTR psz1, const CStringT& str2,); -friend CStringT operator+(char ch1, const CStringT& str2,); +friend CStringT operator+(PCXSTR psz1, const CStringT& str2); +friend CStringT operator+(char ch1, const CStringT& str2); friend CStringT operator+(const CStringT& str1, char ch2); friend CStringT operator+(const CStringT& str1, wchar_t ch2); -friend CStringT operator+(wchar_t ch1, const CStringT& str2,); +friend CStringT operator+(wchar_t ch1, const CStringT& str2); ``` ### Parameters @@ -1102,8 +1102,8 @@ friend bool operator==(const CStringT& str1, PCXSTR psz2) throw(); friend bool operator==(const CStringT& str1, PCYSTR psz2) throw(); friend bool operator==(const CStringT& str1, XCHAR ch2) throw(); friend bool operator==(PCXSTR psz1, const CStringT& str2) throw(); -friend bool operator==(PCYSTR psz1, const CStringT& str2,) throw(); -friend bool operator==(XCHAR ch1, const CStringT& str2,) throw(); +friend bool operator==(PCYSTR psz1, const CStringT& str2) throw(); +friend bool operator==(XCHAR ch1, const CStringT& str2) throw(); ``` ### Parameters @@ -1144,8 +1144,8 @@ friend bool operator!=(const CStringT& str1, PCXSTR psz2) throw(); friend bool operator!=(const CStringT& str1, PCYSTR psz2) throw(); friend bool operator!=(const CStringT& str1, XCHAR ch2) throw(); friend bool operator!=(PCXSTR psz1, const CStringT& str2) throw(); -friend bool operator!=(PCYSTR psz1, const CStringT& str2,) throw(); -friend bool operator!=(XCHAR ch1, const CStringT& str2,) throw(); +friend bool operator!=(PCYSTR psz1, const CStringT& str2) throw(); +friend bool operator!=(XCHAR ch1, const CStringT& str2) throw(); ``` ### Parameters diff --git a/docs/atl/reference/cstockpropimpl-class.md b/docs/atl/reference/cstockpropimpl-class.md index 29b1619156d..1f4959941f7 100644 --- a/docs/atl/reference/cstockpropimpl-class.md +++ b/docs/atl/reference/cstockpropimpl-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: CStockPropImpl Class" title: "CStockPropImpl Class" +description: "Learn more about: CStockPropImpl Class" ms.date: "05/06/2019" f1_keywords: ["CStockPropImpl", "ATLCTL/ATL::CStockPropImpl", "ATLCTL/ATL::get_Appearance", "ATLCTL/ATL::get_AutoSize", "ATLCTL/ATL::get_BackColor", "ATLCTL/ATL::get_BackStyle", "ATLCTL/ATL::get_BorderColor", "ATLCTL/ATL::get_BorderStyle", "ATLCTL/ATL::get_BorderVisible", "ATLCTL/ATL::get_BorderWidth", "ATLCTL/ATL::get_Caption", "ATLCTL/ATL::get_DrawMode", "ATLCTL/ATL::get_DrawStyle", "ATLCTL/ATL::get_DrawWidth", "ATLCTL/ATL::get_Enabled", "ATLCTL/ATL::get_FillColor", "ATLCTL/ATL::get_FillStyle", "ATLCTL/ATL::get_Font", "ATLCTL/ATL::get_ForeColor", "ATLCTL/ATL::get_HWND", "ATLCTL/ATL::get_MouseIcon", "ATLCTL/ATL::get_MousePointer", "ATLCTL/ATL::get_Picture", "ATLCTL/ATL::get_ReadyState", "ATLCTL/ATL::get_TabStop", "ATLCTL/ATL::get_Text", "ATLCTL/ATL::getvalid", "ATLCTL/ATL::get_Window", "ATLCTL/ATL::put_Appearance", "ATLCTL/ATL::put_AutoSize", "ATLCTL/ATL::put_BackColor", "ATLCTL/ATL::put_BackStyle", "ATLCTL/ATL::put_BorderColor", "ATLCTL/ATL::put_BorderStyle", "ATLCTL/ATL::put_BorderVisible", "ATLCTL/ATL::put_BorderWidth", "ATLCTL/ATL::put_Caption", "ATLCTL/ATL::put_DrawMode", "ATLCTL/ATL::put_DrawStyle", "ATLCTL/ATL::put_DrawWidth", "ATLCTL/ATL::put_Enabled", "ATLCTL/ATL::put_FillColor", "ATLCTL/ATL::put_FillStyle", "ATLCTL/ATL::put_Font", "ATLCTL/ATL::put_ForeColor", "ATLCTL/ATL::put_HWND", "ATLCTL/ATL::put_MouseIcon", "ATLCTL/ATL::put_MousePointer", "ATLCTL/ATL::put_Picture", "ATLCTL/ATL::put_ReadyState", "ATLCTL/ATL::put_TabStop", "ATLCTL/ATL::put_Text", "ATLCTL/ATL::putvalid", "ATLCTL/ATL::put_Window", "ATLCTL/ATL::putref_Font", "ATLCTL/ATL::putref_MouseIcon", "ATLCTL/ATL::putref_Picture"] helpviewer_keywords: ["CStockPropImpl class", "controls [ATL], stock properties", "stock properties, ATL controls"] -ms.assetid: 45f11d7d-6580-4a0e-872d-3bc8b836cfda --- # CStockPropImpl Class @@ -607,7 +606,7 @@ Returns S_OK on success, or an error HRESULT on failure. Call this method to set the value of flag that indicates if the control cannot be any other size. ``` -HRESULT STDMETHODCALLTYPE put_AutoSize(VARIANT_BOOL bAutoSize,); +HRESULT STDMETHODCALLTYPE put_AutoSize(VARIANT_BOOL bAutoSize); ``` ### Parameters @@ -1100,5 +1099,5 @@ The same as [CStockPropImpl::put_Picture](#put_picture), but with a reference co ## See also -[Class Overview](../../atl/atl-class-overview.md)
+[Class Overview](../../atl/atl-class-overview.md)\ [IDispatchImpl Class](../../atl/reference/idispatchimpl-class.md) diff --git a/docs/c-runtime-library/reference/sopen-s-wsopen-s.md b/docs/c-runtime-library/reference/sopen-s-wsopen-s.md index 3b1480c69a7..04f2bd984a7 100644 --- a/docs/c-runtime-library/reference/sopen-s-wsopen-s.md +++ b/docs/c-runtime-library/reference/sopen-s-wsopen-s.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: _sopen_s, _wsopen_s" title: "_sopen_s, _wsopen_s" +description: "Learn more about: _sopen_s, _wsopen_s" ms.date: 05/18/2022 api_name: ["_sopen_s", "_wsopen_s", "_o__sopen_s", "_o__wsopen_s"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"] @@ -8,7 +8,6 @@ api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["CORECRT_IO/_sopen_s", "CORECRT_WIO/_wsopen_s", "TCHAR/_tsopen_s", "_sopen_s", "_wsopen_s", "_tsopen_s", "sopen_s", "wsopen_s"] helpviewer_keywords: ["sopen_s function", "_wsopen_s function", "wsopen_s function", "opening files, for sharing", "files [C++], opening", "_sopen_s function", "files [C++], sharing"] -ms.assetid: 059a0084-d08c-4973-9174-55e391b72aa2 --- # `_sopen_s`, `_wsopen_s` @@ -29,7 +28,7 @@ errno_t _wsopen_s( const wchar_t *filename, int oflag, int shflag, - int pmode, + int pmode ); ``` diff --git a/docs/intrinsics/arm-intrinsics.md b/docs/intrinsics/arm-intrinsics.md index 58a6eb6738b..f2a248f9a97 100644 --- a/docs/intrinsics/arm-intrinsics.md +++ b/docs/intrinsics/arm-intrinsics.md @@ -4,7 +4,6 @@ description: "Reference list of ARM intrinsics supported by the Microsoft C++ co ms.date: "09/02/2019" f1_keywords: ["arm_neon/vsetq_lane_p8", "armintr/_arm_uxtb", "arm_neon/vld4_lane_p8", "arm_neon/vrshrn_n_s64", "arm_neon/vsli_n_u32", "arm_neon/vsraq_n_u16", "arm_neon/vcgt_f32", "armintr/__iso_volatile_store32", "arm_neon/vceqq_f32", "armintr/_arm_smlal", "arm_neon/vmull_n_s32", "arm_neon/vmax_s8", "arm_neon/vmvn_u32", "arm_neon/vrshl_u32", "arm_neon/int32x2_t", "arm_neon/vdupq_n_p8", "arm_neon/vpmax_u16", "arm_neon/vtrnq_s32", "arm_neon/vset_lane_f32", "arm_neon/vrev64_s8", "arm_neon/vtrnq_p8", "arm_neon/vqshlq_u64", "arm_neon/vld1q_dup_s64", "arm_neon/vmovq_n_u64", "arm_neon/vqshrn_n_u16", "arm_neon/vhadd_s32", "arm_neon/vrhaddq_u32", "arm_neon/vst1q_p8", "arm_neon/vshrn_n_s16", "arm_neon/vget_high_f32", "arm_neon/vuzpq_s16", "arm_neon/vand_u16", "arm_neon/vmulq_s32", "arm_neon/vrsraq_n_s64", "arm_neon/vceqq_s8", "arm_neon/uint64x1x3_t", "arm_neon/veor_u32", "armintr/_arm_pkhtb", "arm_neon/vorrq_u16", "arm_neon/vpaddl_s8", "arm_neon/vmla_n_s16", "arm_neon/vqdmlal_lane_s32", "arm_neon/vshlq_n_u8", "arm_neon/vst2_lane_p8", "arm_neon/vld3q_u16", "arm_neon/vandq_u8", "arm_neon/vst1_u64", "arm_neon/vaddq_s64", "arm_neon/vuzpq_u32", "arm_neon/vld3_lane_p8", "arm_neon/vminq_s32", "arm_neon/vabd_u16", "arm_neon/vdup_n_u32", "arm_neon/vmul_p8", "arm_neon/vsra_n_u16", "arm_neon/vst3q_u16", "arm_neon/int32x2x3_t", "arm_neon/vld2_dup_u16", "arm_neon/vrhaddq_u8", "arm_neon/vhadd_u8", "arm_neon/vgetq_lane_s32", "arm_neon/vcleq_u16", "arm_neon/vabdq_s8", "arm_neon/vrev16q_u8", "arm_neon/vqshlu_n_s64", "arm_neon/vcvt_n_s32_f32", "arm_neon/vqrshrn_n_s64", "arm_neon/vst1q_p16", "arm_neon/vgetq_lane_s16", "arm_neon/vtstq_u32", "arm_neon/vmlsl_n_s16", "arm_neon/vcge_s8", "arm_neon/vshr_n_s16", "armintr/_arm_rbit", "arm_neon/vmls_u32", "arm_neon/vmls_lane_u32", "arm_neon/vcvtq_n_s32_f32", "arm_neon/vqshl_n_s8", "arm_neon/vst1q_s16", "armintr/__emit", "arm_neon/vshlq_s64", "arm_neon/vuzp_s8", "arm_neon/vld1q_lane_s64", "arm_neon/veorq_s32", "arm_neon/vaddq_u64", "arm_neon/vceq_s32", "arm_neon/vmovn_u16", "arm_neon/vabal_s8", "arm_neon/vabsq_f32", "armintr/_arm_smuad", "arm_neon/veor_u8", "arm_neon/int16x4_t", "arm_neon/vsraq_n_s16", "arm_neon/vshlq_s8", "arm_neon/vcreate_u32", "arm_neon/vzipq_s8", "arm_neon/vst3q_u8", "arm_neon/int64x1x4_t", "armintr/__iso_volatile_store16", "arm_neon/vst4_lane_p16", "arm_neon/vld1_dup_p16", "arm_neon/vhadd_s16", "arm_neon/vtbl2_s8", "arm_neon/veorq_u32", "arm_neon/vqdmlal_lane_s16", "arm_neon/vrsra_n_u8", "arm_neon/vbslq_u16", "arm_neon/vget_low_s64", "arm_neon/vceq_u16", "arm_neon/vdupq_lane_u32", "arm_neon/vabdl_u32", "arm_neon/vmlal_s32", "arm_neon/vst1_lane_u8", "arm_neon/vld4q_f16", "arm_neon/vqdmlsl_s32", "arm_neon/vqrdmulh_s32", "arm_neon/vqrshl_u8", "arm_neon/uint32x4x4_t", "arm_neon/vabaq_u16", "arm_neon/vcnt_p8", "arm_neon/vld3q_s16", "arm_neon/vshl_n_u32", "arm_neon/vrev64q_u16", "arm_neon/vextq_s64", "arm_neon/vhsubq_s8", "arm_neon/vld2_dup_u8", "arm_neon/vst3_s16", "arm_neon/vorn_u16", "arm_neon/vst4_f16", "arm_neon/vpadalq_u8", "armintr/__iso_volatile_load8", "arm_neon/vmovl_u16", "arm_neon/vld4q_u32", "arm_neon/vcgt_u32", "arm_neon/vmlaq_n_u32", "arm_neon/vrsra_n_u64", "arm_neon/vst4_s8", "arm_neon/vcvtq_n_f32_u32", "arm_neon/vst2q_u16", "arm_neon/vqshrn_n_s16", "arm_neon/vld4_s16", "arm_neon/uint16x8x4_t", "arm_neon/vrsqrte_u32", "arm_neon/vcltq_s8", "arm_neon/vst3_u16", "arm_neon/vst2_f32", "arm_neon/vld2_u64", "arm_neon/vst1_u16", "arm_neon/vmls_s16", "arm_neon/vqrshlq_s32", "arm_neon/vqdmull_s16", "arm_neon/vld2_lane_p16", "arm_neon/vpaddlq_u8", "arm_neon/vcvt_n_f32_u32", "arm_neon/vcgtq_u8", "arm_neon/vshl_s32", "arm_neon/vtbx3_p8", "arm_neon/vld3_dup_s32", "arm_neon/int16x4x3_t", "arm_neon/vcale_f32", "arm_neon/vqabsq_s32", "arm_neon/vmulq_u16", "arm_neon/vst1_s8", "arm_neon/vclt_u8", "armintr/_arm_sxtb16", "arm_neon/vshr_n_s8", "arm_neon/vst1_lane_f16", "arm_neon/vorn_s64", "armintr/_arm_usub8", "arm_neon/vst4_lane_f32", "arm_neon/vmls_lane_u16", "arm_neon/vpaddl_u32", "arm_neon/vdup_lane_u64", "arm_neon/vsri_n_p16", "arm_neon/vqrshlq_u64", "arm_neon/vclz_s16", "arm_neon/vsra_n_u32", "arm_neon/vabaq_s8", "arm_neon/vst2_lane_s8", "arm_neon/vcvt_n_u32_f32", "arm_neon/vst3_u32", "arm_neon/vcvtq_f32_u32", "arm_neon/vraddhn_s64", "armintr/_arm_uqsax", "arm_neon/vshl_u8", "armintr/_arm_uqadd16", "arm_neon/vrsra_n_u16", "arm_neon/vrshl_u64", "arm_neon/int32x4x3_t", "arm_neon/vmull_u8", "arm_neon/vcombine_u64", "arm_neon/vmull_u16", "arm_neon/vld1_dup_s8", "armintr/_CountLeadingSigns64", "arm_neon/vqshlq_n_s32", "arm_neon/vrecpe_f32", "arm_neon/vsri_n_u32", "arm_neon/vrsraq_n_s8", "arm_neon/vsetq_lane_s16", "arm_neon/vget_high_u32", "arm_neon/vmlal_u32", "arm_neon/vdupq_lane_s16", "arm_neon/vsubq_u64", "arm_neon/vext_p8", "arm_neon/vshl_u16", "arm_neon/vmls_n_u16", "arm_neon/vmull_s16", "arm_neon/vmovq_n_s64", "arm_neon/vaddq_f32", "arm_neon/vshl_n_s16", "arm_neon/vext_p16", "arm_neon/vextq_u32", "arm_neon/vld1_p8", "arm_neon/veor_s32", "arm_neon/int16x8x4_t", "arm_neon/vst1q_u16", "arm_neon/vzipq_p8", "arm_neon/int32x4x4_t", "arm_neon/vqdmulhq_lane_s32", "arm_neon/vst3_lane_u32", "arm_neon/vhsubq_s32", "armintr/__static_assert", "arm_neon/vst3q_lane_u16", "arm_neon/vpmin_u32", "arm_neon/vrev64q_p16", "arm_neon/vcleq_f32", "arm_neon/vhsub_u16", "arm_neon/vld2_lane_s32", "arm_neon/vmlsl_s32", "armintr/_arm_rev", "arm_neon/vcgeq_s16", "arm_neon/vmulq_s8", "arm_neon/vsri_n_s8", "arm_neon/vpadd_f32", "arm_neon/vld1q_lane_f16", "arm_neon/vmls_u16", "arm_neon/vld1_lane_f32", "arm_neon/vmlaq_lane_s16", "arm_neon/vqadd_u32", "arm_neon/vmul_n_s32", "arm_neon/vld1q_dup_p8", "arm_neon/vtrnq_s8", "arm_neon/vbslq_p8", "arm_neon/vget_lane_s8", "arm_neon/vext_u16", "arm_neon/vsubq_s16", "arm_neon/vld4_lane_s8", "arm_neon/uint32x2x2_t", "arm_neon/vdup_n_s8", "arm_neon/vld4_lane_u16", "arm_neon/vmovq_n_s16", "arm_neon/vst4q_s32", "arm_neon/vst2q_f16", "arm_neon/vbslq_s16", "arm_neon/vand_u64", "arm_neon/poly16_t", "arm_neon/vaba_u16", "arm_neon/vqshlq_s64", "armintr/_arm_uxth", "arm_neon/vst2_lane_s16", "arm_neon/vand_u8", "arm_neon/int8x16x3_t", "arm_neon/vrev64_u16", "arm_neon/vld2_lane_s16", "arm_neon/vabaq_s16", "arm_neon/vsli_n_u8", "arm_neon/vsraq_n_u64", "arm_neon/vmlsl_s16", "arm_neon/vmovn_u64", "arm_neon/vld4_f32", "arm_neon/vst2q_f32", "arm_neon/vtbx3_u8", "arm_neon/vcombine_s8", "arm_neon/vqdmulhq_s32", "arm_neon/vgetq_lane_p8", "armintr/_arm_smusd", "arm_neon/vpmax_u32", "arm_neon/vceq_f32", "arm_neon/vsri_n_p8", "arm_neon/vhsubq_u8", "arm_neon/vuzp_s16", "arm_neon/uint32x2x4_t", "arm_neon/vst4_lane_s32", "arm_neon/vsli_n_p8", "arm_neon/vld3_lane_f16", "arm_neon/vbic_u64", "arm_neon/vmlal_u16", "arm_neon/vmvn_s8", "arm_neon/vtstq_s8", "arm_neon/vmaxq_s32", "arm_neon/vqmovn_u64", "armintr/_arm_ssax", "arm_neon/vext_u32", "arm_neon/vld1_dup_u64", "arm_neon/vmlal_n_s16", "armintr/_arm_smulbb", "arm_neon/vqrdmulhq_lane_s16", "arm_neon/vdup_n_p8", "arm_neon/vaba_s8", "arm_neon/vrshrq_n_s32", "arm_neon/vmvnq_s32", "arm_neon/vpadal_s32", "arm_neon/vqshl_s16", "arm_neon/vtrn_p8", "arm_neon/vzip_s16", "arm_neon/vcge_f32", "armintr/_arm_sxtab16", "arm_neon/vst1q_lane_u64", "arm_neon/vqrshlq_u16", "arm_neon/int8x8_t", "arm_neon/vorr_u8", "arm_neon/vrev64_f32", "arm_neon/vpaddlq_s16", "arm_neon/vdupq_lane_u64", "arm_neon/vcltq_u16", "arm_neon/vst3_lane_f32", "arm_neon/vld2_dup_f32", "armintr/_arm_smmul", "arm_neon/vbsl_s16", "arm_neon/vld1_lane_u8", "arm_neon/vld2q_lane_u16", "arm_neon/vqshlu_n_s32", "armintr/_arm_smlalbt", "arm_neon/vmla_s8", "arm_neon/vsli_n_p16", "arm_neon/vmla_u8", "arm_neon/vqaddq_s16", "arm_neon/vld3_p16", "arm_neon/uint64x2x4_t", "arm_neon/vcnt_u8", "arm_neon/vcltq_u8", "arm_neon/vtbx1_p8", "arm_neon/vrev32q_u16", "arm_neon/vld1_lane_u16", "arm_neon/vqadd_s16", "arm_neon/vcnt_s8", "armintr/_MulUnsignedHigh", "arm_neon/vsliq_n_u8", "arm_neon/vpmin_s16", "armintr/__iso_volatile_load16", "arm_neon/vst2_lane_f32", "arm_neon/vqsubq_s32", "arm_neon/vqshl_s32", "arm_neon/vsraq_n_u32", "arm_neon/vcreate_s32", "arm_neon/vld3q_lane_u32", "arm_neon/vaddq_u16", "arm_neon/vand_s32", "arm_neon/vbicq_s32", "armintr/_arm_smulbt", "arm_neon/vrsra_n_s8", "arm_neon/vshrq_n_u32", "arm_neon/vld4_f16", "arm_neon/vcagtq_f32", "arm_neon/vaddw_u32", "armintr/_arm_uxtah", "arm_neon/vtstq_u8", "arm_neon/vld1_dup_u16", "arm_neon/int16x4x4_t", "arm_neon/vqshluq_n_s8", "arm_neon/vqdmulhq_n_s32", "arm_neon/vst1_s64", "arm_neon/vrsubhn_u16", "arm_neon/vld4_dup_p16", "arm_neon/vmlaq_s32", "arm_neon/vnegq_s32", "arm_neon/vst2q_u8", "arm_neon/vget_low_s32", "arm_neon/vorn_u32", "arm_neon/vld1q_s8", "arm_neon/vandq_s64", "arm_neon/vmvn_p8", "arm_neon/vabdl_s16", "arm_neon/vqshl_u32", "arm_neon/vld3_dup_u16", "arm_neon/vmov_n_f32", "arm_neon/vcvt_f32_u32", "arm_neon/vrhadd_s8", "arm_neon/vpadal_u32", "armintr/_arm_ubfx", "arm_neon/vcgt_s8", "arm_neon/vget_lane_f32", "arm_neon/vcge_s16", "arm_neon/vmov_n_s64", "arm_neon/vmulq_n_f32", "arm_neon/vpadalq_u32", "armintr/_arm_smlaldx", "arm_neon/vtst_u16", "arm_neon/vmls_n_s16", "arm_neon/vcombine_f32", "arm_neon/vld1q_p16", "armintr/_arm_ssat", "arm_neon/vextq_s8", "arm_neon/vmax_u32", "arm_neon/vqsubq_s64", "arm_neon/vcltq_s16", "arm_neon/vst2q_s8", "arm_neon/vpmax_u8", "arm_neon/vld4_dup_p8", "arm_neon/vrshr_n_u64", "arm_neon/vqrshrun_n_s16", "arm_neon/vget_low_u64", "arm_neon/vst2q_s32", "arm_neon/vst4_s32", "arm_neon/vrshrq_n_u8", "arm_neon/vdupq_n_u64", "arm_neon/vsriq_n_u8", "arm_neon/vdupq_lane_u8", "arm_neon/vsriq_n_s64", "arm_neon/vget_low_u8", "arm_neon/vst1_lane_p16", "arm_neon/vld1q_lane_u8", "arm_neon/vcgt_s32", "arm_neon/vst1_lane_u32", "arm_neon/vzipq_p16", "arm_neon/vmvn_u16", "arm_neon/vld1q_lane_u16", "armintr/_MoveToCoprocessor64", "arm_neon/vdup_n_u16", "arm_neon/vzipq_f32", "arm_neon/vshl_s16", "arm_neon/vmlaq_n_s16", "arm_neon/vget_lane_s64", "arm_neon/vld1q_lane_f32", "arm_neon/vnegq_s16", "armintr/_arm_usax", "arm_neon/vabd_s16", "arm_neon/vmovq_n_u32", "arm_neon/vshlq_n_u16", "armintr/_CountLeadingSigns", "arm_neon/vld3q_f16", "arm_neon/vceqq_u32", "arm_neon/int8x8x2_t", "arm_neon/vst2_s64", "arm_neon/vst4q_lane_s16", "arm_neon/vorn_s32", "arm_neon/vcle_f32", "arm_neon/vld1_p16", "arm_neon/vtrn_u32", "arm_neon/vbsl_s32", "arm_neon/float32x2_t", "arm_neon/vmvn_s32", "arm_neon/vqdmlsl_lane_s16", "arm_neon/vtbl3_s8", "arm_neon/vsra_n_u8", "arm_neon/vcvtq_u32_f32", "arm_neon/vst1_p8", "arm_neon/vrev64_p16", "armintr/__ldrexd", "arm_neon/vcgeq_u8", "arm_neon/vmlal_n_s32", "arm_neon/vst1q_lane_p8", "arm_neon/vpadalq_s32", "arm_neon/vtstq_p8", "arm_neon/vld4_lane_u8", "armintr/_arm_ssub16", "arm_neon/vpaddlq_u16", "armintr/_arm_udiv", "arm_neon/vld1_lane_p8", "arm_neon/vst1q_u32", "arm_neon/vld1_f32", "arm_neon/uint64x2x2_t", "arm_neon/vqsubq_u64", "arm_neon/vld4q_s32", "arm_neon/vceq_s16", "arm_neon/vst3_s64", "arm_neon/vext_s8", "armintr/_arm_smlsd", "arm_neon/vpadal_s16", "arm_neon/vbic_s32", "arm_neon/vld1_dup_u8", "arm_neon/vclt_f32", "arm_neon/vrev64_s16", "arm_neon/vrshlq_s64", "arm_neon/vdupq_n_s64", "arm_neon/vuzp_p16", "arm_neon/vld3_dup_p16", "arm_neon/vcreate_s8", "armintr/_arm_smlatt", "arm_neon/vtst_s32", "arm_neon/vshrq_n_s64", "arm_neon/vqshlq_n_s64", "arm_neon/vqshlu_n_s16", "arm_neon/vcleq_s16", "arm_neon/vmull_lane_s16", "arm_neon/int32x4_t", "arm_neon/vqadd_s8", "arm_neon/vld2q_f16", "arm_neon/vld2q_lane_p16", "arm_neon/vadd_u32", "arm_neon/vcntq_u8", "arm_neon/vst1_f32", "arm_neon/vmaxq_u32", "arm_neon/vsub_u64", "arm_neon/vsubl_s32", "arm_neon/poly16x4_t", "arm_neon/vgetq_lane_u16", "arm_neon/vdup_lane_s32", "arm_neon/vrhadd_s32", "arm_neon/veorq_u8", "arm_neon/vclzq_s8", "arm_neon/vsliq_n_s64", "arm_neon/vpadalq_s16", "arm_neon/vmla_n_f32", "arm_neon/vcgt_u16", "armintr/_arm_usada8", "arm_neon/vabd_u32", "arm_neon/vgetq_lane_s8", "arm_neon/vqshlq_n_u64", "arm_neon/vabaq_u32", "armintr/_arm_uhsax", "arm_neon/vmulq_f32", "arm_neon/vld3_dup_s16", "arm_neon/vst3_f16", "arm_neon/vrshrq_n_s64", "armintr/__rdpmccntr64", "arm_neon/vclsq_s32", "arm_neon/vmax_u16", "arm_neon/vmvnq_p8", "arm_neon/veor_u16", "arm_neon/vqshrn_n_u32", "arm_neon/vextq_u64", "arm_neon/vld1q_f32", "arm_neon/vget_low_u32", "arm_neon/vhaddq_s32", "arm_neon/vminq_u16", "arm_neon/vqrdmulhq_lane_s32", "arm_neon/vmla_s16", "arm_neon/vadd_s16", "arm_neon/vbsl_u16", "arm_neon/vhsub_s8", "arm_neon/vld4q_lane_p16", "arm_neon/vld1_s16", "arm_neon/vst2q_lane_p16", "arm_neon/vld2_dup_s8", "arm_neon/vst3q_s16", "arm_neon/vcgeq_u32", "arm_neon/vabdq_s16", "arm_neon/vrhadd_u16", "arm_neon/vqshlq_n_u32", "arm_neon/vst4q_lane_u32", "arm_neon/vrsraq_n_u64", "arm_neon/vmlsq_n_s32", "arm_neon/vld4_u8", "arm_neon/vld2_f16", "arm_neon/vqshlq_u8", "arm_neon/vorrq_u64", "arm_neon/vmin_u16", "arm_neon/vext_u8", "arm_neon/vpaddl_s32", "arm_neon/vshlq_u64", "arm_neon/vst2q_lane_f16", "armintr/_arm_sbfx", "arm_neon/vld3_dup_f16", "armintr/_arm_uhasx", "arm_neon/vst2_lane_u8", "armintr/_arm_smultb", "arm_neon/vdup_n_p16", "arm_neon/vtrnq_u32", "arm_neon/vrshlq_u8", "arm_neon/vld4_lane_p16", "arm_neon/vsraq_n_s32", "arm_neon/vclt_s16", "arm_neon/vzip_u8", "arm_neon/vld3_lane_s16", "arm_neon/vceqq_s32", "arm_neon/vld3_dup_f32", "arm_neon/vld4q_lane_s32", "arm_neon/poly8x16x4_t", "arm_neon/uint64x1x2_t", "arm_neon/vqdmlal_n_s16", "arm_neon/vld2_dup_f16", "arm_neon/vshrq_n_s32", "arm_neon/vcleq_s8", "arm_neon/vld3_s32", "arm_neon/vqrshlq_s64", "arm_neon/vbsl_f32", "arm_neon/vext_s64", "arm_neon/vabaq_s32", "arm_neon/vmulq_s16", "arm_neon/vld3_lane_u16", "arm_neon/vld3q_lane_u16", "armintr/_arm_smlaltt", "arm_neon/poly8x8x2_t", "arm_neon/vst3q_u32", "armintr/_arm_smlsdx", "arm_neon/vqrshl_s64", "arm_neon/vextq_p8", "armintr/_arm_uhsub16", "arm_neon/vld3q_p8", "armintr/_arm_smlawt", "armintr/_arm_smlawb", "arm_neon/vdupq_lane_s8", "arm_neon/vaddl_s16", "arm_neon/vcombine_p16", "arm_neon/vzipq_u32", "arm_neon/poly16x8_t", "arm_neon/vshlq_n_s32", "arm_neon/vrshl_s8", "arm_neon/vst2_u64", "arm_neon/vrev64q_s8", "arm_neon/vst2q_lane_s32", "arm_neon/vld2_dup_s16", "arm_neon/vclt_u16", "arm_neon/vuzp_p8", "arm_neon/vshrq_n_s16", "arm_neon/vst3_u64", "arm_neon/vpmin_u16", "arm_neon/vld3q_lane_s32", "arm_neon/vmlal_s16", "arm_neon/poly16x4x4_t", "arm_neon/vorr_u16", "arm_neon/vsliq_n_s16", "arm_neon/vaddl_u8", "arm_neon/vld4_dup_s32", "arm_neon/vld2_f32", "arm_neon/vclt_u32", "arm_neon/vmull_lane_u16", "arm_neon/vsubw_u32", "arm_neon/vld2_dup_s32", "arm_neon/vuzp_s32", "arm_neon/vcge_s32", "arm_neon/vdup_lane_p16", "arm_neon/vpmin_s8", "arm_neon/vpaddlq_u32", "arm_neon/vmlaq_n_s32", "arm_neon/vshrn_n_u64", "arm_neon/vrshr_n_u16", "arm_neon/vld1_s64", "arm_neon/vbsl_u64", "armintr/_arm_smlad", "arm_neon/vqsub_s16", "arm_neon/vld4_p8", "arm_neon/vqdmulh_lane_s32", "arm_neon/vld3_dup_s64", "arm_neon/vornq_s32", "arm_neon/vpadd_u8", "arm_neon/vld3_lane_p16", "arm_neon/uint64x1x4_t", "arm_neon/vld3_u16", "armintr/_arm_shsax", "arm_neon/vabdq_u16", "arm_neon/vcgtq_f32", "arm_neon/vsubq_s8", "arm_neon/vget_low_f16", "arm_neon/vld4_dup_u64", "arm_neon/vst3_lane_s8", "armintr/_arm_ssat16", "arm_neon/vmlaq_f32", "arm_neon/vsri_n_s32", "arm_neon/vmax_u8", "arm_neon/vqadd_u8", "armintr/_arm_uqsub8", "armintr/_arm_clz", "arm_neon/vcgtq_s32", "arm_neon/vraddhn_s32", "arm_neon/vzip_s8", "arm_neon/veorq_s16", "arm_neon/vsetq_lane_s32", "arm_neon/vmul_n_u16", "armintr/_ReadBankedReg", "arm_neon/vld1q_u8", "arm_neon/vld4_p16", "arm_neon/int64x2x2_t", "arm_neon/vmaxq_s8", "arm_neon/vpmax_s16", "arm_neon/vshlq_u16", "arm_neon/vtrnq_p16", "arm_neon/vabal_u16", "arm_neon/vld2_lane_u16", "arm_neon/vrev32_u8", "arm_neon/vrshl_s32", "arm_neon/vget_low_f32", "arm_neon/vld2_s8", "arm_neon/vclzq_s16", "arm_neon/vqdmulhq_n_s16", "arm_neon/vset_lane_u64", "arm_neon/vld2_dup_p16", "arm_neon/vpaddlq_s32", "arm_neon/vld2q_p8", "arm_neon/vst3_lane_u8", "arm_neon/vld4_dup_f32", "arm_neon/vld2_s64", "arm_neon/vmls_u8", "arm_neon/vtbx4_u8", "arm_neon/vsetq_lane_f32", "arm_neon/vcvt_s32_f32", "arm_neon/vst3q_s32", "arm_neon/vmlsq_s8", "arm_neon/vmlaq_n_u16", "armintr/__iso_volatile_load64", "arm_neon/vcgt_u8", "arm_neon/vld2_dup_p8", "arm_neon/vmov_n_u8", "armintr/_arm_sasx", "arm_neon/vmovq_n_p16", "arm_neon/vmlaq_u32", "arm_neon/vst3_f32", "arm_neon/int32x2x4_t", "arm_neon/vld1q_lane_u64", "arm_neon/vclz_u16", "arm_neon/uint8x8_t", "arm_neon/vsub_u32", "arm_neon/vorn_u8", "armintr/__wfe", "arm_neon/vget_high_s16", "arm_neon/vzip_p8", "arm_neon/vmlal_lane_s16", "arm_neon/vmulq_u8", "armintr/_isunordered", "arm_neon/vld1_dup_f32", "arm_neon/vld4_lane_s16", "arm_neon/vdupq_n_s16", "arm_neon/vst3q_p16", "arm_neon/vst1_lane_f32", "arm_neon/float32x4x3_t", "arm_neon/vand_s8", "arm_neon/float32x2x4_t", "arm_neon/vld3_p8", "arm_neon/vmlaq_lane_u16", "armintr/_arm_uqsub16", "arm_neon/vget_high_s32", "arm_neon/vshl_n_s32", "arm_neon/vornq_s8", "arm_neon/vmlsl_n_u32", "arm_neon/vqshlq_n_s8", "arm_neon/int32x2x2_t", "arm_neon/int16x4x2_t", "arm_neon/vceqq_u8", "arm_neon/vcreate_f16", "arm_neon/vorn_s16", "arm_neon/vqmovn_s32", "arm_neon/vextq_u8", "arm_neon/vld4_s32", "armintr/_WriteStatusReg", "arm_neon/uint8x16_t", "arm_neon/vshrn_n_s64", "arm_neon/vmul_n_u32", "arm_neon/vabdl_u8", "arm_neon/vtbx3_s8", "arm_neon/vaddhn_s16", "arm_neon/vld3q_s8", "arm_neon/vmlsl_n_u16", "arm_neon/vrev64q_s32", "arm_neon/int16x8_t", "arm_neon/vext_s32", "arm_neon/vdupq_n_f32", "arm_neon/vld1q_lane_s32", "arm_neon/vqrshlq_u32", "arm_neon/vtbl2_u8", "arm_neon/vgetq_lane_u8", "arm_neon/veorq_u64", "arm_neon/vcntq_s8", "arm_neon/vbslq_p16", "arm_neon/vqnegq_s32", "arm_neon/vaddw_s32", "arm_neon/vmov_n_p8", "arm_neon/vmull_p8", "arm_neon/vld1_lane_u32", "arm_neon/vcombine_s16", "arm_neon/vqshrn_n_s64", "arm_neon/vceqq_s16", "arm_neon/vld4q_p16", "armintr/_ReadStatusReg", "armintr/_arm_qdadd", "arm_neon/uint32x4x2_t", "arm_neon/vcleq_u8", "armintr/_arm_sxtah", "arm_neon/vrhaddq_s32", "arm_neon/vset_lane_s64", "arm_neon/vld4_s64", "armintr/_DAddSatInt", "arm_neon/vorr_s8", "arm_neon/vst2_u32", "arm_neon/vshll_n_u16", "arm_neon/vld2_dup_u32", "arm_neon/vst3q_lane_s32", "arm_neon/vst3q_p8", "armintr/_MoveFromCoprocessor", "arm_neon/uint32x4_t", "arm_neon/vuzpq_s8", "arm_neon/vrecps_f32", "arm_neon/vst1_lane_s8", "arm_neon/vtbx1_s8", "arm_neon/uint16x8x3_t", "arm_neon/vpaddl_s16", "arm_neon/vsubq_s64", "arm_neon/vrsraq_n_u8", "arm_neon/vqadd_s64", "arm_neon/vst4_lane_s16", "arm_neon/vqadd_u16", "arm_neon/vset_lane_u32", "arm_neon/vand_u32", "arm_neon/vrsqrtsq_f32", "arm_neon/vqaddq_u32", "arm_neon/vsra_n_s64", "armintr/_arm_umlal", "arm_neon/vcvt_f32_f16", "arm_neon/vget_lane_u32", "arm_neon/vbsl_s8", "arm_neon/vrshlq_u32", "arm_neon/vqdmull_lane_s16", "arm_neon/vabsq_s32", "arm_neon/vld3_s8", "arm_neon/vst3q_lane_s16", "arm_neon/vld2q_lane_s16", "arm_neon/vst1_lane_s64", "arm_neon/vmov_n_u16", "arm_neon/vst4_lane_u8", "arm_neon/vshll_n_u32", "arm_neon/vqabs_s8", "arm_neon/vmvnq_u8", "arm_neon/vpadalq_u16", "arm_neon/vbsl_p16", "arm_neon/vqrshrn_n_u16", "arm_neon/vld3q_u32", "arm_neon/vcgeq_f32", "armintr/__iso_volatile_load32", "arm_neon/vrecpe_u32", "arm_neon/vld2_dup_u64", "arm_neon/vld3q_f32", "armintr/_arm_shsub8", "arm_neon/vdup_lane_s64", "arm_neon/vqrshl_s8", "arm_neon/vsliq_n_u16", "arm_neon/vld1q_u16", "arm_neon/vorr_u32", "arm_neon/vqrshl_s32", "armintr/__dmb", "arm_neon/veorq_s8", "arm_neon/vld1_u16", "arm_neon/vmov_n_u32", "arm_neon/vhsub_s16", "arm_neon/vst4q_lane_u16", "arm_neon/vbsl_u8", "armintr/_arm_uxtab", "arm_neon/vld2q_lane_f32", "arm_neon/vst2_p8", "armintr/_arm_smmla", "arm_neon/vaddw_u16", "arm_neon/vmlal_s8", "arm_neon/vtst_u32", "arm_neon/vtbl4_u8", "arm_neon/vcvt_n_f32_s32", "arm_neon/vcageq_f32", "arm_neon/vget_low_s16", "arm_neon/vdupq_n_u8", "arm_neon/vorn_s8", "arm_neon/uint8x16x3_t", "arm_neon/vabdq_u32", "arm_neon/vrev64_p8", "arm_neon/vqsubq_s8", "armintr/_arm_smlabb", "arm_neon/vbicq_s64", "arm_neon/vmaxq_u16", "arm_neon/vdup_n_u8", "arm_neon/veor_s8", "arm_neon/int16x8x2_t", "arm_neon/vcvtq_s32_f32", "arm_neon/vtrn_u16", "arm_neon/vbslq_s32", "arm_neon/vld1q_dup_u32", "arm_neon/vmul_n_f32", "arm_neon/vqrshl_u32", "arm_neon/vqsubq_s16", "arm_neon/vst2_lane_f16", "armintr/_arm_smulwt", "arm_neon/vrshrn_n_u32", "arm_neon/vget_high_p16", "arm_neon/vqadd_u64", "arm_neon/vsli_n_s32", "arm_neon/vhadd_u32", "arm_neon/vmlsl_lane_u16", "arm_neon/vclzq_u32", "arm_neon/vqshrun_n_s64", "arm_neon/vrev64q_u32", "arm_neon/vqshrun_n_s16", "arm_neon/vrev32q_s8", "armintr/_arm_shasx", "arm_neon/vaddl_s8", "armintr/_arm_smull", "arm_neon/vabaq_u8", "armintr/_arm_revsh", "arm_neon/vsubq_f32", "arm_neon/poly16x4x2_t", "arm_neon/poly8x8x3_t", "arm_neon/vsubhn_s64", "arm_neon/vcle_u16", "arm_neon/poly8x16x3_t", "arm_neon/vqdmlsl_n_s16", "arm_neon/vqshl_u64", "arm_neon/vcge_u16", "armintr/_arm_uasx", "arm_neon/vmovl_s32", "arm_neon/vst1q_lane_u16", "arm_neon/vbic_u32", "arm_neon/vld2_s16", "armintr/_arm_qasx", "arm_neon/vorrq_u8", "arm_neon/vst2_s32", "armintr/_WriteBankedReg", "arm_neon/veorq_s64", "arm_neon/vld4_lane_f32", "arm_neon/vcreate_u8", "arm_neon/vset_lane_u8", "arm_neon/vandq_u16", "arm_neon/vrsubhn_s64", "arm_neon/vst1q_lane_p16", "arm_neon/uint8x8x2_t", "arm_neon/vmlsl_s8", "arm_neon/vmax_s32", "arm_neon/uint32x4x3_t", "arm_neon/vld4_dup_u16", "arm_neon/vabs_s32", "arm_neon/vld3_dup_u32", "arm_neon/vrshl_u16", "arm_neon/vcle_u8", "arm_neon/vqshl_n_u16", "arm_neon/vbic_s8", "arm_neon/float32x4x2_t", "arm_neon/vmls_f32", "arm_neon/vshll_n_u8", "arm_neon/vminq_s8", "arm_neon/vmlsq_lane_f32", "arm_neon/vst1q_f16", "arm_neon/vst1_lane_u64", "arm_neon/vrhadd_u8", "arm_neon/vclt_s32", "arm_neon/vst2_p16", "arm_neon/vrshrq_n_u16", "arm_neon/vneg_s32", "arm_neon/vmovl_s16", "arm_neon/vqshlq_s8", "arm_neon/vld1_s8", "arm_neon/vqdmulh_s32", "arm_neon/vcls_s8", "armintr/__trap", "arm_neon/vuzp_u32", "armintr/_CopyInt64FromDouble", "arm_neon/int8x16x2_t", "arm_neon/vmovn_s32", "arm_neon/vget_high_s8", "arm_neon/veor_s64", "armintr/_arm_uadd8", "arm_neon/vrev16_u8", "arm_neon/vbicq_u64", "arm_neon/vst4_lane_f16", "arm_neon/vst3_s32", "arm_neon/poly8x8_t", "arm_neon/vtstq_u16", "arm_neon/vld1_lane_s8", "arm_neon/float32x4x4_t", "arm_neon/vst2_s16", "arm_neon/vqrdmulhq_s32", "arm_neon/vqdmulhq_s16", "arm_neon/vrshrq_n_s8", "arm_neon/vcle_s32", "arm_neon/vtbl3_p8", "arm_neon/vbslq_u8", "arm_neon/vst4_u64", "armintr/_arm_umaal", "arm_neon/vshll_n_s8", "arm_neon/vcvt_u32_f32", "arm_neon/vld4q_p8", "arm_neon/vsetq_lane_u16", "arm_neon/vabd_u8", "arm_neon/vclz_u8", "arm_neon/vsubq_u32", "arm_neon/vld1q_lane_p16", "arm_neon/vcgtq_s16", "arm_neon/vmla_lane_s32", "arm_neon/vshlq_n_s64", "arm_neon/vbsl_u32", "arm_neon/vqshlq_s16", "armintr/_arm_qadd8", "arm_neon/vrshr_n_s32", "armintr/_CountOneBits64", "arm_neon/vceq_u32", "arm_neon/vbsl_p8", "arm_neon/uint16x8x2_t", "arm_neon/vsli_n_s16", "arm_neon/vmla_n_s32", "arm_neon/vld4_dup_u32", "arm_neon/vshrq_n_s8", "arm_neon/vqaddq_s8", "arm_neon/vshl_n_u64", "arm_neon/vtbl2_p8", "arm_neon/vcleq_u32", "arm_neon/vqsub_u32", "arm_neon/vmovl_u8", "arm_neon/vmlal_u8", "arm_neon/vmul_s8", "armintr/_MoveFromCoprocessor64", "arm_neon/vrsraq_n_s16", "arm_neon/vdupq_n_u32", "arm_neon/vmov_n_s16", "arm_neon/vst4_lane_p8", "arm_neon/vld1_s32", "arm_neon/vst4_p8", "arm_neon/vsriq_n_u32", "arm_neon/vqdmull_n_s16", "arm_neon/vshlq_u32", "arm_neon/vld3_u8", "armintr/_arm_usub16", "arm_neon/vmlsq_lane_s16", "arm_neon/vmovq_n_s8", "arm_neon/int32x4x2_t", "arm_neon/vld4q_u8", "arm_neon/poly16x8x2_t", "arm_neon/vld1q_u64", "arm_neon/vld3q_lane_s16", "arm_neon/int64x1x2_t", "arm_neon/vshlq_n_s8", "arm_neon/vrshl_s64", "arm_neon/vqshl_n_u8", "armintr/_arm_qadd", "armintr/_DSubSatInt", "armintr/_arm_usat16", "arm_neon/vmull_s8", "arm_neon/vsub_s8", "arm_neon/vmovq_n_u16", "arm_neon/vst4_u16", "arm_neon/vmlsl_lane_u32", "arm_neon/vsliq_n_p16", "arm_neon/vmovn_u32", "arm_neon/vbic_u16", "arm_neon/vtbx2_p8", "arm_neon/vrsubhn_s32", "armintr/_SubSatInt", "arm_neon/vst3_u8", "arm_neon/vdupq_n_s32", "arm_neon/vcntq_p8", "arm_neon/vst4_f32", "arm_neon/vbic_s64", "arm_neon/vld3_s64", "arm_neon/vrsra_n_s64", "arm_neon/vqabsq_s16", "arm_neon/vsriq_n_p8", "arm_neon/vst2_lane_p16", "arm_neon/vabsq_s16", "arm_neon/vcombine_u8", "arm_neon/vld2q_p16", "armintr/_CountOneBits", "armintr/__prefetch", "arm_neon/vld3_dup_u64", "arm_neon/vld2q_s16", "arm_neon/vget_low_p16", "arm_neon/vuzpq_u8", "arm_neon/vrev32q_s16", "armintr/_AddSatInt", "arm_neon/uint16x4x2_t", "arm_neon/vmov_n_s32", "arm_neon/vaddl_u16", "arm_neon/vqaddq_s64", "arm_neon/vmlaq_u16", "arm_neon/vsli_n_s8", "armintr/_arm_sxth", "arm_neon/vorr_s32", "arm_neon/vsra_n_u64", "arm_neon/vst2_f16", "arm_neon/vcombine_u16", "arm_neon/vabs_s16", "arm_neon/vsubhn_s32", "arm_neon/vst1q_lane_u32", "arm_neon/vst3_p8", "arm_neon/vqshrun_n_s32", "arm_neon/vcreate_s64", "arm_neon/vld4q_lane_s16", "arm_neon/vzipq_u16", "arm_neon/vmin_s32", "armintr/_CopyInt32FromFloat", "arm_neon/vcgtq_u32", "arm_neon/vabdl_s32", "arm_neon/vqshlq_n_u16", "arm_neon/int8x16x4_t", "arm_neon/vqrdmulh_n_s32", "arm_neon/vqaddq_u64", "arm_neon/vhaddq_s8", "arm_neon/vshll_n_s16", "arm_neon/vuzp_u8", "arm_neon/vaddl_u32", "arm_neon/vld4q_s16", "arm_neon/vqmovun_s16", "arm_neon/vld1q_lane_s8", "arm_neon/vld2_lane_u32", "arm_neon/vrshr_n_s8", "arm_neon/vmlaq_s16", "armintr/_CopyFloatFromInt32", "arm_neon/vmul_f32", "arm_neon/vmlaq_n_f32", "arm_neon/vst4_s16", "arm_neon/vld1_dup_s32", "arm_neon/vmul_u16", "arm_neon/vhaddq_s16", "arm_neon/vst1q_lane_f32", "arm_neon/vrhaddq_u16", "arm_neon/vbicq_u32", "arm_neon/vrev32_s8", "arm_neon/vmlaq_s8", "arm_neon/vmin_s16", "arm_neon/vst3_lane_p16", "arm_neon/vst2q_lane_f32", "arm_neon/vld4q_lane_f32", "arm_neon/vget_low_u16", "arm_neon/vqsub_s32", "arm_neon/vtbl1_s8", "arm_neon/vmovn_s64", "arm_neon/vpmax_s8", "arm_neon/int8x16_t", "arm_neon/vpmin_u8", "arm_neon/vdup_lane_p8", "arm_neon/vsetq_lane_u64", "arm_neon/vuzpq_u16", "arm_neon/vcgeq_u16", "arm_neon/uint8x16x2_t", "armintr/_arm_rev16", "armintr/_arm_sxtb", "arm_neon/vsliq_n_u64", "arm_neon/vmovq_n_u8", "arm_neon/vshlq_n_u32", "arm_neon/vcombine_s64", "armintr/_arm_qsax", "arm_neon/vmin_f32", "armintr/_arm_sadd16", "arm_neon/vmlsq_n_s16", "arm_neon/vorr_u64", "arm_neon/vqrshrun_n_s64", "arm_neon/vld2q_lane_s32", "arm_neon/vgetq_lane_p16", "arm_neon/vrev32_s16", "arm_neon/vqshl_u16", "arm_neon/vtrn_s8", "arm_neon/vst1q_lane_s64", "arm_neon/vtbl4_p8", "arm_neon/vst1_p16", "arm_neon/vmvn_u8", "arm_neon/vld2_lane_u8", "arm_neon/vld2q_u16", "arm_neon/vmovl_s8", "arm_neon/vbslq_u64", "arm_neon/vmls_s8", "arm_neon/vld3q_p16", "arm_neon/vtbl3_u8", "arm_neon/vabs_f32", "arm_neon/vsraq_n_s8", "arm_neon/vqadd_s32", "arm_neon/vmulq_n_s16", "arm_neon/vst3q_s8", "arm_neon/vaddhn_s64", "arm_neon/vmul_n_s16", "arm_neon/vtbl1_p8", "arm_neon/uint64x2x3_t", "arm_neon/vmlsq_s32", "arm_neon/vld2q_lane_u32", "arm_neon/vaddq_u8", "arm_neon/vcombine_f16", "arm_neon/vandq_s16", "arm_neon/vst4q_lane_p16", "arm_neon/vsri_n_u8", "arm_neon/vst3_lane_p8", "arm_neon/vst3_lane_s16", "arm_neon/vdup_n_s16", "arm_neon/vbicq_s8", "arm_neon/vdup_lane_u8", "arm_neon/vst4q_lane_s32", "arm_neon/vqrshl_u16", "arm_neon/vrsra_n_u32", "arm_neon/vdupq_lane_p8", "arm_neon/vld3_lane_u8", "arm_neon/vqrdmulh_n_s16", "arm_neon/vpmin_s32", "armintr/__cps", "arm_neon/vshl_u32", "armintr/_arm_uadd16", "arm_neon/vld3_s16", "arm_neon/vcvt_f32_s32", "arm_neon/vshlq_n_u64", "arm_neon/vrev64q_u8", "arm_neon/vextq_u16", "arm_neon/vsubl_s16", "arm_neon/vget_lane_p8", "arm_neon/vabal_s16", "arm_neon/vrecpeq_u32", "arm_neon/vminq_u8", "arm_neon/veor_s16", "arm_neon/vmull_n_u16", "arm_neon/vshl_n_u8", "arm_neon/vrev32q_u8", "arm_neon/vandq_s8", "arm_neon/vrshlq_s16", "arm_neon/vst4q_p16", "arm_neon/vandq_s32", "armintr/_MoveToCoprocessor2", "arm_neon/vqdmlsl_lane_s32", "arm_neon/vld1q_s64", "arm_neon/vmull_n_s16", "arm_neon/vneg_s16", "arm_neon/vqshluq_n_s64", "arm_neon/vst2_lane_s32", "arm_neon/vmvnq_u16", "arm_neon/vshll_n_s32", "arm_neon/vld3_dup_s8", "arm_neon/vtstq_s32", "arm_neon/vmlsl_u32", "arm_neon/vqdmulhq_lane_s16", "arm_neon/vaddl_s32", "armintr/_CountLeadingZeros", "arm_neon/vqrshrn_n_s16", "arm_neon/vmla_lane_u32", "arm_neon/vst1_u8", "arm_neon/vshl_u64", "arm_neon/vshr_n_u8", "arm_neon/vmull_lane_s32", "arm_neon/vmlal_lane_u32", "arm_neon/vsubl_s8", "arm_neon/float32x2x2_t", "armintr/_arm_bfc", "arm_neon/vaddq_s16", "arm_neon/vmlal_lane_s32", "arm_neon/vpadd_u16", "arm_neon/vst2q_lane_u16", "arm_neon/vld4_s8", "arm_neon/vst1q_s8", "arm_neon/vshrq_n_u64", "arm_neon/vsli_n_u16", "arm_neon/vqrdmulh_lane_s32", "arm_neon/vst4_lane_u16", "arm_neon/vabdq_f32", "arm_neon/vld2_lane_f16", "arm_neon/vqsub_u64", "arm_neon/vsub_f32", "arm_neon/vld1q_s16", "arm_neon/vmaxq_s16", "arm_neon/vcombine_u32", "arm_neon/vrsraq_n_u32", "armintr/_arm_smusdx", "arm_neon/vrev16_s8", "arm_neon/vqdmulh_n_s32", "arm_neon/vmul_s32", "arm_neon/vabdq_s32", "arm_neon/veor_u64", "arm_neon/vmlsl_n_s32", "arm_neon/vsub_s16", "arm_neon/vadd_u16", "arm_neon/vsriq_n_u16", "arm_neon/vmla_u32", "arm_neon/vuzpq_s32", "arm_neon/vst4q_s8", "arm_neon/vaddhn_u32", "arm_neon/vmlaq_lane_f32", "arm_neon/vld3_lane_s8", "arm_neon/vsliq_n_u32", "arm_neon/vqrshlq_s8", "arm_neon/vqdmlal_n_s32", "arm_neon/uint8x16x4_t", "arm_neon/vcgtq_u16", "arm_neon/vandq_u32", "arm_neon/vld4q_lane_u32", "arm_neon/vzip_p16", "arm_neon/vget_low_p8", "armintr/_arm_shadd8", "arm_neon/vmovn_s16", "arm_neon/vcge_u8", "arm_neon/vld2q_f32", "arm_neon/vaba_u32", "armintr/__iso_volatile_store8", "arm_neon/vst2q_p16", "arm_neon/vmul_s16", "arm_neon/vand_s16", "arm_neon/vtbx4_p8", "arm_neon/vceq_u8", "arm_neon/vrhaddq_s16", "arm_neon/vgetq_lane_f32", "arm_neon/vqshl_s8", "arm_neon/vbslq_f32", "arm_neon/vrsqrts_f32", "arm_neon/vld2q_s8", "arm_neon/vtbl1_u8", "arm_neon/vtst_u8", "arm_neon/vrev64q_f32", "arm_neon/vcle_s8", "arm_neon/vsetq_lane_p16", "arm_neon/vcreate_p16", "arm_neon/vabal_s32", "armintr/_arm_smlald", "arm_neon/vmla_f32", "arm_neon/vtbx2_s8", "arm_neon/int64x1x3_t", "arm_neon/vclz_s8", "arm_neon/vorr_s16", "arm_neon/vornq_s64", "arm_neon/vst1q_u64", "arm_neon/vdupq_n_s8", "armintr/_arm_sadd8", "arm_neon/vextq_s32", "armintr/_arm_smuadx", "armintr/_arm_qsub", "arm_neon/vadd_f32", "arm_neon/vrshrq_n_s16", "arm_neon/vqsub_s8", "arm_neon/vld3_f32", "arm_neon/vhadd_s8", "arm_neon/vmull_n_u32", "arm_neon/vdup_n_u64", "arm_neon/vsubw_s32", "armintr/_arm_sxtab", "armintr/_arm_uxtb16", "arm_neon/vmvn_s16", "arm_neon/vst1_lane_s16", "arm_neon/vqrdmulhq_n_s32", "arm_neon/vsriq_n_s32", "arm_neon/poly8x16x2_t", "arm_neon/vadd_u8", "arm_neon/vuzpq_p8", "arm_neon/vst2q_p8", "armintr/__wfi", "arm_neon/vget_high_u16", "arm_neon/vqrshl_u64", "arm_neon/vld1_dup_s64", "arm_neon/vqrshrn_n_s32", "arm_neon/vrshr_n_s64", "arm_neon/vst3_s8", "arm_neon/poly16x4x3_t", "arm_neon/vqrdmulh_lane_s16", "arm_neon/vmvnq_u32", "arm_neon/vqsubq_u32", "arm_neon/vmovq_n_p8", "arm_neon/vtrn_s16", "arm_neon/vld2q_u32", "arm_neon/vqsubq_u16", "arm_neon/vrsqrteq_u32", "arm_neon/vadd_u64", "armintr/_arm_usat", "arm_neon/vcvtq_n_u32_f32", "arm_neon/vaddq_s8", "arm_neon/vrsraq_n_u16", "arm_neon/vqabs_s16", "arm_neon/vsra_n_s8", "arm_neon/vsra_n_s16", "arm_neon/vqshlq_n_u8", "arm_neon/vpadal_s8", "arm_neon/vmlal_n_u16", "armintr/_CopyDoubleFromInt64", "arm_neon/vaddw_u8", "arm_neon/vmulq_n_s32", "arm_neon/vqaddq_s32", "arm_neon/vmla_lane_f32", "arm_neon/vmlaq_lane_s32", "arm_neon/vld1q_dup_u64", "arm_neon/uint16x8_t", "arm_neon/vld2_s32", "arm_neon/vcltq_f32", "arm_neon/vst4q_f32", "arm_neon/vsri_n_u16", "arm_neon/vshlq_s32", "arm_neon/vgetq_lane_u32", "arm_neon/vld1q_dup_f16", "arm_neon/vrev64q_s16", "arm_neon/vrshrq_n_u32", "arm_neon/vld2q_s32", "arm_neon/vcgtq_s8", "arm_neon/vsubhn_u64", "arm_neon/vmls_n_s32", "armintr/_arm_smmlar", "arm_neon/vld3_dup_u8", "arm_neon/vld3q_lane_p16", "arm_neon/vld2_dup_s64", "arm_neon/vqabs_s32", "arm_neon/vqaddq_u8", "arm_neon/vminq_u32", "arm_neon/vpaddl_u16", "arm_neon/vaba_s16", "arm_neon/vmul_u32", "arm_neon/vst1_lane_u16", "arm_neon/vcreate_f32", "arm_neon/vcvt_f16_f32", "arm_neon/vset_lane_s32", "arm_neon/vshl_s8", "arm_neon/vcgt_s16", "arm_neon/vtrn_f32", "arm_neon/vget_high_s64", "arm_neon/vld3_dup_p8", "arm_neon/vcreate_u64", "arm_neon/vext_u64", "arm_neon/vld1q_dup_s16", "arm_neon/vget_lane_s16", "arm_neon/vqdmlal_s16", "arm_neon/vld2_p16", "arm_neon/vld4_u16", "armintr/_arm_smlalbb", "arm_neon/vrev64_u8", "arm_neon/vbslq_s64", "arm_neon/vsubw_u16", "arm_neon/vrsubhn_u32", "arm_neon/vabdq_u8", "arm_neon/vmls_n_u32", "arm_neon/vshr_n_s32", "arm_neon/vmulq_n_u32", "arm_neon/vst3_p16", "arm_neon/vrev32_u16", "arm_neon/int8x8x3_t", "arm_neon/vst2q_lane_u32", "arm_neon/vextq_p16", "arm_neon/vtrnq_f32", "armintr/_arm_smultt", "arm_neon/vqneg_s8", "arm_neon/vmlsq_lane_s32", "arm_neon/vmov_n_p16", "arm_neon/vraddhn_u64", "arm_neon/vrhadd_u32", "arm_neon/vrev64_u32", "arm_neon/vrshrn_n_s32", "arm_neon/vld4q_f32", "arm_neon/vst2_s8", "arm_neon/vrsqrteq_f32", "arm_neon/uint16x4_t", "arm_neon/vget_low_s8", "arm_neon/vst2_lane_u32", "arm_neon/vhsub_s32", "arm_neon/vqdmull_lane_s32", "armintr/_arm_smulwb", "arm_neon/vmlsl_u8", "arm_neon/vdup_lane_s16", "arm_neon/vtbx4_s8", "arm_neon/vld4q_lane_u16", "arm_neon/vget_high_u8", "arm_neon/vclzq_s32", "arm_neon/vld1q_dup_f32", "arm_neon/vtrn_u8", "arm_neon/vqabsq_s8", "arm_neon/vdup_lane_f32", "arm_neon/vqrdmulh_s16", "arm_neon/vst4_u32", "arm_neon/vdup_lane_u32", "arm_neon/vst4_u8", "arm_neon/vmovq_n_s32", "arm_neon/vld2_lane_s8", "arm_neon/vld3_u32", "arm_neon/vsubl_u16", "arm_neon/vqshlu_n_s8", "arm_neon/float32x4_t", "arm_neon/vqshl_n_s32", "arm_neon/float32x2x3_t", "armintr/__hvc", "arm_neon/vst1q_lane_f16", "arm_neon/vmvnq_s16", "arm_neon/vst3q_lane_f32", "arm_neon/vld1q_dup_u8", "arm_neon/vmlsq_s16", "arm_neon/vget_lane_u8", "arm_neon/vld1_lane_s32", "arm_neon/vst4q_s16", "armintr/_arm_qsub8", "arm_neon/vorrq_s32", "arm_neon/vsriq_n_s8", "arm_neon/vqshrn_n_u64", "arm_neon/vdup_n_s32", "armintr/_arm_uhsub8", "arm_neon/vld3_lane_s32", "arm_neon/vbsl_s64", "arm_neon/vld1_dup_f16", "arm_neon/vsli_n_u64", "arm_neon/vraddhn_u32", "arm_neon/vsub_u16", "arm_neon/vcltq_u32", "arm_neon/vminq_f32", "arm_neon/vshl_n_s64", "arm_neon/vld4_u32", "arm_neon/vld1_u32", "arm_neon/vaddhn_u16", "arm_neon/vcvtq_n_f32_s32", "arm_neon/vorn_u64", "arm_neon/vsubhn_u16", "arm_neon/int64x1_t", "arm_neon/vst1q_lane_s8", "arm_neon/vld1q_dup_s32", "arm_neon/vrev32_p8", "arm_neon/vst3q_lane_p16", "arm_neon/vrecpeq_f32", "arm_neon/int8x8x4_t", "arm_neon/vshr_n_u32", "arm_neon/vdupq_lane_s64", "arm_neon/vpaddlq_s8", "arm_neon/vqshl_n_u32", "arm_neon/vmul_u8", "arm_neon/vtbx2_u8", "arm_neon/vshr_n_u64", "arm_neon/vqrshlq_s16", "arm_neon/vst3_lane_u16", "arm_neon/vqsub_u8", "arm_neon/vrsra_n_s16", "arm_neon/vaba_s32", "arm_neon/vsri_n_u64", "arm_neon/vst3q_lane_u32", "arm_neon/vmlsq_n_u32", "arm_neon/poly8x16_t", "arm_neon/vld2_u8", "armintr/_arm_smmulr", "arm_neon/vtst_s16", "armintr/_arm_smmls", "arm_neon/vqdmulh_s16", "arm_neon/vtrnq_u8", "arm_neon/vset_lane_p8", "arm_neon/vmlsl_u16", "arm_neon/vshrn_n_u16", "arm_neon/vld1_dup_p8", "arm_neon/vrev16q_s8", "arm_neon/vmov_n_s8", "arm_neon/vld1_u64", "arm_neon/vpmin_f32", "arm_neon/vmla_n_u16", "arm_neon/vst1_f16", "arm_neon/vqdmlsl_s16", "arm_neon/vmin_u32", "armintr/_arm_qsub16", "arm_neon/vcage_f32", "arm_neon/vornq_u32", "arm_neon/vpadd_s16", "arm_neon/vld1_u8", "arm_neon/vhsubq_s16", "arm_neon/vld1_dup_u32", "arm_neon/vld4_u64", "armintr/_MulHigh", "arm_neon/vmaxq_u8", "arm_neon/vget_lane_u16", "arm_neon/vld2q_u8", "arm_neon/vld1q_dup_p16", "arm_neon/vsraq_n_u8", "arm_neon/vqdmlsl_n_s32", "arm_neon/vst1_s16", "arm_neon/vst1q_s32", "arm_neon/vmaxq_f32", "arm_neon/vqdmulh_lane_s16", "armintr/__isb", "arm_neon/vuzpq_p16", "arm_neon/vmls_lane_s16", "arm_neon/vtbl4_s8", "arm_neon/vst1_lane_p8", "arm_neon/vsubw_s8", "arm_neon/vmin_u8", "arm_neon/vzip_u16", "arm_neon/vld4q_u16", "arm_neon/vshrn_n_s32", "arm_neon/vpadal_u16", "arm_neon/vorrq_s8", "arm_neon/vrshlq_u64", "arm_neon/vst3_lane_s32", "arm_neon/vqshluq_n_s32", "armintr/_arm_shsub16", "arm_neon/vst1_u32", "arm_neon/vrhadd_s16", "arm_neon/vzipq_s32", "arm_neon/vshrq_n_u16", "arm_neon/vcls_s32", "arm_neon/vceq_s8", "arm_neon/vld2q_lane_f16", "arm_neon/vst4q_u8", "arm_neon/vraddhn_u16", "arm_neon/vget_lane_u64", "armintr/_arm_smlsld", "arm_neon/vld3_u64", "arm_neon/vld1_lane_s16", "arm_neon/vabd_f32", "arm_neon/vdupq_n_u16", "armintr/__iso_volatile_store64", "arm_neon/vqsubq_u8", "arm_neon/poly16x8x3_t", "arm_neon/vcltq_s32", "arm_neon/vqnegq_s16", "arm_neon/vqsub_u16", "arm_neon/vaddq_s32", "arm_neon/vqshl_n_s64", "arm_neon/vabdl_s8", "arm_neon/vclsq_s16", "arm_neon/vpaddl_u8", "arm_neon/vmlsq_n_u16", "armintr/_arm_uqadd8", "arm_neon/vhsub_u32", "arm_neon/vset_lane_s16", "arm_neon/vsubl_u32", "arm_neon/vld3_lane_f32", "arm_neon/vcle_s16", "arm_neon/vmovl_u32", "arm_neon/vst3_lane_f16", "arm_neon/vcaltq_f32", "arm_neon/vsubq_s32", "arm_neon/vand_s64", "arm_neon/vst2_u8", "arm_neon/vcombine_p8", "arm_neon/vqdmlal_s32", "arm_neon/vsub_s32", "armintr/_arm_uxtab16", "arm_neon/vmlsq_n_f32", "armintr/_arm_qdsub", "arm_neon/vhaddq_u32", "arm_neon/vhsubq_u16", "arm_neon/vmlsq_lane_u16", "arm_neon/vst4_s64", "armintr/_CountLeadingOnes", "armintr/_arm_smlabt", "arm_neon/vcombine_s32", "arm_neon/vld4_lane_f16", "arm_neon/vadd_s64", "arm_neon/vorrq_u32", "armintr/__sev", "arm_neon/vdupq_lane_s32", "arm_neon/vrecpsq_f32", "arm_neon/vbicq_u16", "arm_neon/vld1_lane_p16", "arm_neon/vrshr_n_u32", "arm_neon/vcgeq_s32", "arm_neon/vld4_dup_s16", "arm_neon/vld1q_p8", "arm_neon/vrshlq_u16", "arm_neon/vmlaq_lane_u32", "arm_neon/vsub_s64", "arm_neon/vcreate_u16", "arm_neon/vget_lane_s32", "arm_neon/vuzp_f32", "arm_neon/vld2_lane_p8", "arm_neon/vuzp_u16", "arm_neon/vorrq_s16", "armintr/_arm_smlaltb", "arm_neon/vrshrn_n_s16", "arm_neon/vabd_s8", "arm_neon/vnegq_s8", "arm_neon/vst4q_u16", "arm_neon/vst1q_lane_s32", "arm_neon/vst1_lane_s32", "arm_neon/vmla_u16", "arm_neon/vmls_lane_s32", "arm_neon/vtst_s8", "arm_neon/vcgeq_s8", "arm_neon/poly8x8x4_t", "arm_neon/vqsub_s64", "armintr/_arm_uqasx", "arm_neon/vld1_lane_u64", "arm_neon/vminq_s16", "arm_neon/vmulq_u32", "arm_neon/vqrshlq_u8", "arm_neon/vdupq_n_p16", "arm_neon/vld4_dup_f16", "arm_neon/vcls_s16", "arm_neon/vmov_n_u64", "arm_neon/vmla_s32", "arm_neon/vrshl_s16", "arm_neon/vcalt_f32", "arm_neon/int64x2x3_t", "arm_neon/vsub_u8", "arm_neon/vzipq_u8", "arm_neon/vrshrn_n_u64", "arm_neon/vrshlq_s32", "arm_neon/vorr_s64", "arm_neon/vqrshl_s16", "arm_neon/vceqq_u16", "arm_neon/vmulq_n_u16", "arm_neon/vmlaq_u8", "arm_neon/vsri_n_s64", "arm_neon/vld3q_u8", "arm_neon/vld1_dup_s16", "arm_neon/vld1q_s32", "arm_neon/vsri_n_s16", "arm_neon/vshlq_u8", "arm_neon/vsli_n_s64", "arm_neon/vmull_lane_u32", "arm_neon/vshl_s64", "arm_neon/vcreate_s16", "arm_neon/uint8x8x4_t", "arm_neon/vqshrn_n_s32", "arm_neon/vqshlq_u32", "arm_neon/vmlal_n_u32", "arm_neon/vtrnq_s16", "arm_neon/vshr_n_s64", "arm_neon/vst2_u16", "arm_neon/vtrn_s32", "arm_neon/vsubhn_u32", "arm_neon/vbicq_s16", "arm_neon/vsetq_lane_s8", "arm_neon/vrsubhn_s16", "arm_neon/vhsub_u8", "arm_neon/vcleq_s32", "arm_neon/vld4_dup_s8", "arm_neon/vmull_u32", "arm_neon/vrshr_n_s16", "arm_neon/vst1q_lane_s16", "arm_neon/vmlsq_lane_u32", "arm_neon/vnegq_f32", "arm_neon/vmin_s8", "arm_neon/vrev16_p8", "arm_neon/vbic_u8", "arm_neon/vclzq_u16", "arm_neon/vcge_u32", "arm_neon/vget_high_u64", "arm_neon/vabsq_s8", "arm_neon/vhaddq_u16", "arm_neon/vsraq_n_s64", "arm_neon/vld2_u32", "arm_neon/vld2_lane_f32", "arm_neon/vqrshrn_n_u32", "arm_neon/vbslq_s8", "armintr/_CountLeadingZeros64", "arm_neon/vbicq_u8", "arm_neon/vdup_lane_s8", "arm_neon/vpadd_s32", "arm_neon/vld3q_lane_f16", "arm_neon/vaba_u8", "arm_neon/vqshlq_u16", "arm_neon/vst1q_u8", "arm_neon/vst4q_lane_f16", "arm_neon/vshl_n_u16", "armintr/_arm_smladx", "arm_neon/vmla_lane_s16", "arm_neon/vornq_u8", "arm_neon/vqneg_s32", "arm_neon/vadd_s8", "arm_neon/vcle_u32", "arm_neon/vclzq_u8", "arm_neon/vtbx1_u8", "armintr/_CountLeadingOnes64", "armintr/__dsb", "arm_neon/vaddq_u32", "arm_neon/vclsq_s8", "arm_neon/vdup_n_s64", "arm_neon/vmax_s16", "arm_neon/vst2q_u32", "arm_neon/vsetq_lane_s64", "arm_neon/vtst_p8", "arm_neon/vabs_s8", "arm_neon/vqshl_n_s16", "arm_neon/vqrshrn_n_u64", "arm_neon/vaddw_s8", "armintr/_arm_uhadd16", "arm_neon/vsriq_n_p16", "arm_neon/vld4_lane_u32", "arm_neon/vneg_f32", "armintr/_MoveToCoprocessor", "arm_neon/vmvnq_s8", "arm_neon/vld1q_lane_p8", "arm_neon/uint32x2x3_t", "arm_neon/vrshrn_n_u16", "arm_neon/vld3_f16", "arm_neon/vsriq_n_s16", "arm_neon/vshlq_n_s16", "arm_neon/vabal_u8", "arm_neon/vqshluq_n_s16", "arm_neon/vst2_lane_u16", "arm_neon/vbic_s16", "arm_neon/vqshl_n_u64", "arm_neon/vcagt_f32", "arm_neon/vpadalq_s8", "arm_neon/vclz_s32", "arm_neon/vld1_lane_s64", "arm_neon/vget_high_p8", "arm_neon/uint64x1_t", "arm_neon/vextq_s16", "arm_neon/vpadd_s8", "arm_neon/vrsubhn_u64", "arm_neon/vst3q_f16", "arm_neon/vdupq_lane_u16", "arm_neon/vrshrq_n_u64", "arm_neon/vmovq_n_f32", "arm_neon/vld1q_dup_u16", "arm_neon/vshr_n_u16", "arm_neon/uint32x2_t", "armintr/_arm_umull", "arm_neon/vtrnq_u16", "arm_neon/vsetq_lane_u32", "arm_neon/vneg_s8", "arm_neon/vsetq_lane_u8", "arm_neon/vst2q_lane_s16", "arm_neon/vqmovun_s32", "armintr/_arm_usad8", "armintr/_arm_pkhbt", "arm_neon/uint16x4x3_t", "arm_neon/vsra_n_s32", "arm_neon/vqmovun_s64", "arm_neon/vld1q_dup_s8", "arm_neon/vaddhn_s32", "arm_neon/vpmax_f32", "arm_neon/vpadd_u32", "arm_neon/vhsubq_u32", "arm_neon/vqrshrun_n_s32", "arm_neon/vadd_s32", "arm_neon/vclt_s8", "arm_neon/vorrq_s64", "arm_neon/vst4q_f16", "arm_neon/vst1_s32", "arm_neon/vceq_p8", "arm_neon/vsubw_s16", "arm_neon/vgetq_lane_u64", "arm_neon/vmla_n_u32", "arm_neon/vcvtq_f32_s32", "arm_neon/vld1q_u32", "arm_neon/vmax_f32", "armintr/_isunorderedf", "arm_neon/vrshl_u8", "arm_neon/vld4_dup_s64", "arm_neon/vqaddq_u16", "arm_neon/vld4q_lane_f16", "arm_neon/vceqq_p8", "arm_neon/vsubw_u8", "arm_neon/vqmovn_u16", "armintr/_arm_smlsldx", "arm_neon/vcreate_p8", "arm_neon/vqdmull_n_s32", "arm_neon/uint64x2_t", "arm_neon/vmls_s32", "arm_neon/vst3q_f32", "armintr/_arm_bfi", "armintr/_arm_qadd16", "arm_neon/vrshlq_s8", "arm_neon/vget_lane_p16", "arm_neon/vld2_p8", "arm_neon/vld3_lane_u32", "armintr/_MoveFromCoprocessor2", "arm_neon/vqshl_u8", "arm_neon/poly8_t", "arm_neon/vhadd_u16", "arm_neon/vmla_lane_u16", "arm_neon/vshrq_n_u8", "arm_neon/vuzpq_f32", "arm_neon/vmls_lane_f32", "arm_neon/vqneg_s16", "arm_neon/vtrn_p16", "arm_neon/vshrn_n_u32", "arm_neon/vaddhn_u64", "arm_neon/vabal_u32", "arm_neon/vld1q_lane_u32", "arm_neon/vrsraq_n_s32", "arm_neon/vandq_u64", "arm_neon/vqdmull_s32", "arm_neon/vext_s16", "arm_neon/vaddw_s16", "arm_neon/vrev64q_p8", "arm_neon/uint8x8x3_t", "arm_neon/vzip_f32", "armintr/_arm_ssub8", "arm_neon/uint16x4x4_t", "armintr/__swi", "armintr/_arm_smlatb", "arm_neon/vrhaddq_s8", "arm_neon/vpmax_s32", "arm_neon/vqshl_s64", "arm_neon/vrev16q_p8", "arm_neon/vqmovn_u32", "arm_neon/vld1q_f16", "arm_neon/vornq_u64", "arm_neon/vqshlq_n_s16", "arm_neon/vld1_f16", "armintr/_arm_smmlsr", "arm_neon/vshlq_s16", "arm_neon/vsubhn_s16", "arm_neon/vmulq_p8", "arm_neon/vdupq_lane_f32", "armintr/_arm_shadd16", "arm_neon/vornq_s16", "arm_neon/vst1q_lane_u8", "arm_neon/vcaleq_f32", "arm_neon/vst3q_lane_f16", "armintr/_arm_sdiv", "arm_neon/vld2_u16", "arm_neon/vdup_lane_u16", "arm_neon/vst4q_lane_f32", "arm_neon/vdup_n_f32", "arm_neon/vsubq_u8", "arm_neon/vset_lane_p16", "arm_neon/vrsqrte_f32", "arm_neon/vsubl_u8", "arm_neon/vld3q_lane_f32", "arm_neon/vqnegq_s8", "arm_neon/vqmovn_s16", "arm_neon/int16x8x3_t", "arm_neon/veorq_u16", "arm_neon/vqdmulh_n_s16", "arm_neon/vhaddq_u8", "arm_neon/vpadal_u8", "arm_neon/vst2q_s16", "arm_neon/poly16x8x4_t", "arm_neon/int64x2_t", "arm_neon/vmull_s32", "arm_neon/vld4_lane_s32", "arm_neon/vst4q_p8", "arm_neon/vmlal_lane_u16", "arm_neon/vclz_u32", "arm_neon/vsliq_n_s8", "arm_neon/vmls_n_f32", "arm_neon/vmlsl_lane_s16", "arm_neon/vst4q_u32", "arm_neon/vld1q_lane_s16", "arm_neon/vst1q_f32", "arm_neon/vrshr_n_u8", "arm_neon/vst1q_s64", "arm_neon/vbslq_u32", "arm_neon/vset_lane_s8", "arm_neon/vdupq_lane_p16", "arm_neon/vtstq_s16", "arm_neon/vshl_n_s8", "arm_neon/vqrdmulhq_n_s16", "arm_neon/vget_high_f16", "arm_neon/vst4_lane_u32", "arm_neon/vraddhn_s16", "arm_neon/vmlsl_lane_s32", "arm_neon/vld3q_s32", "arm_neon/vsriq_n_u64", "arm_neon/vld4_dup_u8", "arm_neon/vld4q_s8", "arm_neon/vqmovn_s64", "arm_neon/vrev32q_p8", "arm_neon/vsliq_n_p8", "arm_neon/vzipq_s16", "arm_neon/vgetq_lane_s64", "arm_neon/vst4_p16", "arm_neon/vsubq_u16", "arm_neon/vrev64_s32", "armintr/_arm_uhadd8", "arm_neon/vornq_u16", "arm_neon/vst4_lane_s8", "arm_neon/vabd_s32", "arm_neon/vqrdmulhq_s16", "arm_neon/vqshlq_s32", "arm_neon/int64x2x4_t", "arm_neon/vset_lane_u16", "arm_neon/vrsra_n_s32", "arm_neon/vabdl_u16", "arm_neon/vsliq_n_s32"] helpviewer_keywords: ["cl.exe compiler, ARM intrinsics", "intrinsics, ARM", "__cps ARM intrinsic", "__dmb ARM intrinsic", "__dsb ARM intrinsic", "__emit ARM intrinsic", "__hvc ARM intrinsic", "__isb ARM intrinsic", "__iso_volatile_load16 ARM intrinsic", "__iso_volatile_load32 ARM intrinsic", "__iso_volatile_load64 ARM intrinsic", "__iso_volatile_load8 ARM intrinsic", "__iso_volatile_store16 ARM intrinsic", "__iso_volatile_store32 ARM intrinsic", "__iso_volatile_store64 ARM intrinsic", "__iso_volatile_store8 ARM intrinsic", "__ldrexd ARM intrinsic", "__prefetch ARM intrinsic", "__rdpmccntr64 ARM intrinsic", "__sev ARM intrinsic", "__static_assert ARM intrinsic", "__swi ARM intrinsic", "__trap ARM intrinsic", "__wfe ARM intrinsic", "__wfi ARM intrinsic", "_AddSatInt ARM intrinsic", "_arm_bfc ARM intrinsic", "_arm_bfi ARM intrinsic", "_arm_clz ARM intrinsic", "_arm_pkhbt ARM intrinsic", "_arm_pkhtb ARM intrinsic", "_arm_qadd ARM intrinsic", "_arm_qadd16 ARM intrinsic", "_arm_qadd8 ARM intrinsic", "_arm_qasx ARM intrinsic", "_arm_qdadd ARM intrinsic", "_arm_qdsub ARM intrinsic", "_arm_qsax ARM intrinsic", "_arm_qsub ARM intrinsic", "_arm_qsub16 ARM intrinsic", "_arm_qsub8 ARM intrinsic", "_arm_rbit ARM intrinsic", "_arm_rev ARM intrinsic", "_arm_rev16 ARM intrinsic", "_arm_revsh ARM intrinsic", "_arm_sadd16 ARM intrinsic", "_arm_sadd8 ARM intrinsic", "_arm_sasx ARM intrinsic", "_arm_sbfx ARM intrinsic", "_arm_sdiv ARM intrinsic", "_arm_shadd16 ARM intrinsic", "_arm_shadd8 ARM intrinsic", "_arm_shasx ARM intrinsic", "_arm_shsax ARM intrinsic", "_arm_shsub16 ARM intrinsic", "_arm_shsub8 ARM intrinsic", "_arm_smlabb ARM intrinsic", "_arm_smlabt ARM intrinsic", "_arm_smlad ARM intrinsic", "_arm_smladx ARM intrinsic", "_arm_smlal ARM intrinsic", "_arm_smlalbb ARM intrinsic", "_arm_smlalbt ARM intrinsic", "_arm_smlald ARM intrinsic", "_arm_smlaldx ARM intrinsic", "_arm_smlaltb ARM intrinsic", "_arm_smlaltt ARM intrinsic", "_arm_smlatb ARM intrinsic", "_arm_smlatt ARM intrinsic", "_arm_smlawb ARM intrinsic", "_arm_smlawt ARM intrinsic", "_arm_smlsd ARM intrinsic", "_arm_smlsdx ARM intrinsic", "_arm_smlsld ARM intrinsic", "_arm_smlsldx ARM intrinsic", "_arm_smmla ARM intrinsic", "_arm_smmlar ARM intrinsic", "_arm_smmls ARM intrinsic", "_arm_smmlsr ARM intrinsic", "_arm_smmul ARM intrinsic", "_arm_smmulr ARM intrinsic", "_arm_smuad ARM intrinsic", "_arm_smuadx ARM intrinsic", "_arm_smulbb ARM intrinsic", "_arm_smulbt ARM intrinsic", "_arm_smull ARM intrinsic", "_arm_smultb ARM intrinsic", "_arm_smultt ARM intrinsic", "_arm_smulwb ARM intrinsic", "_arm_smulwt ARM intrinsic", "_arm_smusd ARM intrinsic", "_arm_smusdx ARM intrinsic", "_arm_ssat ARM intrinsic", "_arm_ssat16 ARM intrinsic", "_arm_ssax ARM intrinsic", "_arm_ssub16 ARM intrinsic", "_arm_ssub8 ARM intrinsic", "_arm_sxtab ARM intrinsic", "_arm_sxtab16 ARM intrinsic", "_arm_sxtah ARM intrinsic", "_arm_sxtb ARM intrinsic", "_arm_sxtb16 ARM intrinsic", "_arm_sxth ARM intrinsic", "_arm_uadd16 ARM intrinsic", "_arm_uadd8 ARM intrinsic", "_arm_uasx ARM intrinsic", "_arm_ubfx ARM intrinsic", "_arm_udiv ARM intrinsic", "_arm_uhadd16 ARM intrinsic", "_arm_uhadd8 ARM intrinsic", "_arm_uhasx ARM intrinsic", "_arm_uhsax ARM intrinsic", "_arm_uhsub16 ARM intrinsic", "_arm_uhsub8 ARM intrinsic", "_arm_umaal ARM intrinsic", "_arm_umlal ARM intrinsic", "_arm_umull ARM intrinsic", "_arm_uqadd16 ARM intrinsic", "_arm_uqadd8 ARM intrinsic", "_arm_uqasx ARM intrinsic", "_arm_uqsax ARM intrinsic", "_arm_uqsub16 ARM intrinsic", "_arm_uqsub8 ARM intrinsic", "_arm_usad8 ARM intrinsic", "_arm_usada8 ARM intrinsic", "_arm_usat ARM intrinsic", "_arm_usat16 ARM intrinsic", "_arm_usax ARM intrinsic", "_arm_usub16 ARM intrinsic", "_arm_usub8 ARM intrinsic", "_arm_uxtab ARM intrinsic", "_arm_uxtab16 ARM intrinsic", "_arm_uxtah ARM intrinsic", "_arm_uxtb ARM intrinsic", "_arm_uxtb16 ARM intrinsic", "_arm_uxth ARM intrinsic", "_CopyDoubleFromInt64 ARM intrinsic", "_CopyFloatFromInt32 ARM intrinsic", "_CopyInt32FromFloat ARM intrinsic", "_CopyInt64FromDouble ARM intrinsic", "_CountLeadingOnes ARM intrinsic", "_CountLeadingOnes64 ARM intrinsic", "_CountLeadingSigns ARM intrinsic", "_CountLeadingSigns64 ARM intrinsic", "_CountLeadingZeros ARM intrinsic", "_CountLeadingZeros64 ARM intrinsic", "_CountOneBits ARM intrinsic", "_CountOneBits64 ARM intrinsic", "_DAddSatInt ARM intrinsic", "_DSubSatInt ARM intrinsic", "_isunordered ARM intrinsic", "_isunorderedf ARM intrinsic", "_MoveFromCoprocessor ARM intrinsic", "_MoveFromCoprocessor2 ARM intrinsic", "_MoveFromCoprocessor64 ARM intrinsic", "_MoveToCoprocessor ARM intrinsic", "_MoveToCoprocessor2 ARM intrinsic", "_MoveToCoprocessor64 ARM intrinsic", "_MulHigh ARM intrinsic", "_MulUnsignedHigh ARM intrinsic", "_ReadBankedReg ARM intrinsic", "_ReadStatusReg ARM intrinsic", "_SubSatInt ARM intrinsic", "_WriteBankedReg ARM intrinsic", "_WriteStatusReg ARM intrinsic", "float32x2_t ARM intrinsic", "float32x2x2_t ARM intrinsic", "float32x2x3_t ARM intrinsic", "float32x2x4_t ARM intrinsic", "float32x4_t ARM intrinsic", "float32x4x2_t ARM intrinsic", "float32x4x3_t ARM intrinsic", "float32x4x4_t ARM intrinsic", "int16x4_t ARM intrinsic", "int16x4x2_t ARM intrinsic", "int16x4x3_t ARM intrinsic", "int16x4x4_t ARM intrinsic", "int16x8_t ARM intrinsic", "int16x8x2_t ARM intrinsic", "int16x8x3_t ARM intrinsic", "int16x8x4_t ARM intrinsic", "int32x2_t ARM intrinsic", "int32x2x2_t ARM intrinsic", "int32x2x3_t ARM intrinsic", "int32x2x4_t ARM intrinsic", "int32x4_t ARM intrinsic", "int32x4x2_t ARM intrinsic", "int32x4x3_t ARM intrinsic", "int32x4x4_t ARM intrinsic", "int64x1_t ARM intrinsic", "int64x1x2_t ARM intrinsic", "int64x1x3_t ARM intrinsic", "int64x1x4_t ARM intrinsic", "int64x2_t ARM intrinsic", "int64x2x2_t ARM intrinsic", "int64x2x3_t ARM intrinsic", "int64x2x4_t ARM intrinsic", "int8x16_t ARM intrinsic", "int8x16x2_t ARM intrinsic", "int8x16x3_t ARM intrinsic", "int8x16x4_t ARM intrinsic", "int8x8_t ARM intrinsic", "int8x8x2_t ARM intrinsic", "int8x8x3_t ARM intrinsic", "int8x8x4_t ARM intrinsic", "poly16_t ARM intrinsic", "poly16x4_t ARM intrinsic", "poly16x4x2_t ARM intrinsic", "poly16x4x3_t ARM intrinsic", "poly16x4x4_t ARM intrinsic", "poly16x8_t ARM intrinsic", "poly16x8x2_t ARM intrinsic", "poly16x8x3_t ARM intrinsic", "poly16x8x4_t ARM intrinsic", "poly8_t ARM intrinsic", "poly8x16_t ARM intrinsic", "poly8x16x2_t ARM intrinsic", "poly8x16x3_t ARM intrinsic", "poly8x16x4_t ARM intrinsic", "poly8x8_t ARM intrinsic", "poly8x8x2_t ARM intrinsic", "poly8x8x3_t ARM intrinsic", "poly8x8x4_t ARM intrinsic", "uint16x4_t ARM intrinsic", "uint16x4x2_t ARM intrinsic", "uint16x4x3_t ARM intrinsic", "uint16x4x4_t ARM intrinsic", "uint16x8_t ARM intrinsic", "uint16x8x2_t ARM intrinsic", "uint16x8x3_t ARM intrinsic", "uint16x8x4_t ARM intrinsic", "uint32x2_t ARM intrinsic", "uint32x2x2_t ARM intrinsic", "uint32x2x3_t ARM intrinsic", "uint32x2x4_t ARM intrinsic", "uint32x4_t ARM intrinsic", "uint32x4x2_t ARM intrinsic", "uint32x4x3_t ARM intrinsic", "uint32x4x4_t ARM intrinsic", "uint64x1_t ARM intrinsic", "uint64x1x2_t ARM intrinsic", "uint64x1x3_t ARM intrinsic", "uint64x1x4_t ARM intrinsic", "uint64x2_t ARM intrinsic", "uint64x2x2_t ARM intrinsic", "uint64x2x3_t ARM intrinsic", "uint64x2x4_t ARM intrinsic", "uint8x16_t ARM intrinsic", "uint8x16x2_t ARM intrinsic", "uint8x16x3_t ARM intrinsic", "uint8x16x4_t ARM intrinsic", "uint8x8_t ARM intrinsic", "uint8x8x2_t ARM intrinsic", "uint8x8x3_t ARM intrinsic", "uint8x8x4_t ARM intrinsic", "vaba_s16 ARM intrinsic", "vaba_s32 ARM intrinsic", "vaba_s8 ARM intrinsic", "vaba_u16 ARM intrinsic", "vaba_u32 ARM intrinsic", "vaba_u8 ARM intrinsic", "vabal_s16 ARM intrinsic", "vabal_s32 ARM intrinsic", "vabal_s8 ARM intrinsic", "vabal_u16 ARM intrinsic", "vabal_u32 ARM intrinsic", "vabal_u8 ARM intrinsic", "vabaq_s16 ARM intrinsic", "vabaq_s32 ARM intrinsic", "vabaq_s8 ARM intrinsic", "vabaq_u16 ARM intrinsic", "vabaq_u32 ARM intrinsic", "vabaq_u8 ARM intrinsic", "vabd_f32 ARM intrinsic", "vabd_s16 ARM intrinsic", "vabd_s32 ARM intrinsic", "vabd_s8 ARM intrinsic", "vabd_u16 ARM intrinsic", "vabd_u32 ARM intrinsic", "vabd_u8 ARM intrinsic", "vabdl_s16 ARM intrinsic", "vabdl_s32 ARM intrinsic", "vabdl_s8 ARM intrinsic", "vabdl_u16 ARM intrinsic", "vabdl_u32 ARM intrinsic", "vabdl_u8 ARM intrinsic", "vabdq_f32 ARM intrinsic", "vabdq_s16 ARM intrinsic", "vabdq_s32 ARM intrinsic", "vabdq_s8 ARM intrinsic", "vabdq_u16 ARM intrinsic", "vabdq_u32 ARM intrinsic", "vabdq_u8 ARM intrinsic", "vabs_f32 ARM intrinsic", "vabs_s16 ARM intrinsic", "vabs_s32 ARM intrinsic", "vabs_s8 ARM intrinsic", "vabsq_f32 ARM intrinsic", "vabsq_s16 ARM intrinsic", "vabsq_s32 ARM intrinsic", "vabsq_s8 ARM intrinsic", "vadd_f32 ARM intrinsic", "vadd_s16 ARM intrinsic", "vadd_s32 ARM intrinsic", "vadd_s64 ARM intrinsic", "vadd_s8 ARM intrinsic", "vadd_u16 ARM intrinsic", "vadd_u32 ARM intrinsic", "vadd_u64 ARM intrinsic", "vadd_u8 ARM intrinsic", "vaddhn_s16 ARM intrinsic", "vaddhn_s32 ARM intrinsic", "vaddhn_s64 ARM intrinsic", "vaddhn_u16 ARM intrinsic", "vaddhn_u32 ARM intrinsic", "vaddhn_u64 ARM intrinsic", "vaddl_s16 ARM intrinsic", "vaddl_s32 ARM intrinsic", "vaddl_s8 ARM intrinsic", "vaddl_u16 ARM intrinsic", "vaddl_u32 ARM intrinsic", "vaddl_u8 ARM intrinsic", "vaddq_f32 ARM intrinsic", "vaddq_s16 ARM intrinsic", "vaddq_s32 ARM intrinsic", "vaddq_s64 ARM intrinsic", "vaddq_s8 ARM intrinsic", "vaddq_u16 ARM intrinsic", "vaddq_u32 ARM intrinsic", "vaddq_u64 ARM intrinsic", "vaddq_u8 ARM intrinsic", "vaddw_s16 ARM intrinsic", "vaddw_s32 ARM intrinsic", "vaddw_s8 ARM intrinsic", "vaddw_u16 ARM intrinsic", "vaddw_u32 ARM intrinsic", "vaddw_u8 ARM intrinsic", "vand_s16 ARM intrinsic", "vand_s32 ARM intrinsic", "vand_s64 ARM intrinsic", "vand_s8 ARM intrinsic", "vand_u16 ARM intrinsic", "vand_u32 ARM intrinsic", "vand_u64 ARM intrinsic", "vand_u8 ARM intrinsic", "vandq_s16 ARM intrinsic", "vandq_s32 ARM intrinsic", "vandq_s64 ARM intrinsic", "vandq_s8 ARM intrinsic", "vandq_u16 ARM intrinsic", "vandq_u32 ARM intrinsic", "vandq_u64 ARM intrinsic", "vandq_u8 ARM intrinsic", "vbic_s16 ARM intrinsic", "vbic_s32 ARM intrinsic", "vbic_s64 ARM intrinsic", "vbic_s8 ARM intrinsic", "vbic_u16 ARM intrinsic", "vbic_u32 ARM intrinsic", "vbic_u64 ARM intrinsic", "vbic_u8 ARM intrinsic", "vbicq_s16 ARM intrinsic", "vbicq_s32 ARM intrinsic", "vbicq_s64 ARM intrinsic", "vbicq_s8 ARM intrinsic", "vbicq_u16 ARM intrinsic", "vbicq_u32 ARM intrinsic", "vbicq_u64 ARM intrinsic", "vbicq_u8 ARM intrinsic", "vbsl_f32 ARM intrinsic", "vbsl_p16 ARM intrinsic", "vbsl_p8 ARM intrinsic", "vbsl_s16 ARM intrinsic", "vbsl_s32 ARM intrinsic", "vbsl_s64 ARM intrinsic", "vbsl_s8 ARM intrinsic", "vbsl_u16 ARM intrinsic", "vbsl_u32 ARM intrinsic", "vbsl_u64 ARM intrinsic", "vbsl_u8 ARM intrinsic", "vbslq_f32 ARM intrinsic", "vbslq_p16 ARM intrinsic", "vbslq_p8 ARM intrinsic", "vbslq_s16 ARM intrinsic", "vbslq_s32 ARM intrinsic", "vbslq_s64 ARM intrinsic", "vbslq_s8 ARM intrinsic", "vbslq_u16 ARM intrinsic", "vbslq_u32 ARM intrinsic", "vbslq_u64 ARM intrinsic", "vbslq_u8 ARM intrinsic", "vcage_f32 ARM intrinsic", "vcageq_f32 ARM intrinsic", "vcagt_f32 ARM intrinsic", "vcagtq_f32 ARM intrinsic", "vcale_f32 ARM intrinsic", "vcaleq_f32 ARM intrinsic", "vcalt_f32 ARM intrinsic", "vcaltq_f32 ARM intrinsic", "vceq_f32 ARM intrinsic", "vceq_p8 ARM intrinsic", "vceq_s16 ARM intrinsic", "vceq_s32 ARM intrinsic", "vceq_s8 ARM intrinsic", "vceq_u16 ARM intrinsic", "vceq_u32 ARM intrinsic", "vceq_u8 ARM intrinsic", "vceqq_f32 ARM intrinsic", "vceqq_p8 ARM intrinsic", "vceqq_s16 ARM intrinsic", "vceqq_s32 ARM intrinsic", "vceqq_s8 ARM intrinsic", "vceqq_u16 ARM intrinsic", "vceqq_u32 ARM intrinsic", "vceqq_u8 ARM intrinsic", "vcge_f32 ARM intrinsic", "vcge_s16 ARM intrinsic", "vcge_s32 ARM intrinsic", "vcge_s8 ARM intrinsic", "vcge_u16 ARM intrinsic", "vcge_u32 ARM intrinsic", "vcge_u8 ARM intrinsic", "vcgeq_f32 ARM intrinsic", "vcgeq_s16 ARM intrinsic", "vcgeq_s32 ARM intrinsic", "vcgeq_s8 ARM intrinsic", "vcgeq_u16 ARM intrinsic", "vcgeq_u32 ARM intrinsic", "vcgeq_u8 ARM intrinsic", "vcgt_f32 ARM intrinsic", "vcgt_s16 ARM intrinsic", "vcgt_s32 ARM intrinsic", "vcgt_s8 ARM intrinsic", "vcgt_u16 ARM intrinsic", "vcgt_u32 ARM intrinsic", "vcgt_u8 ARM intrinsic", "vcgtq_f32 ARM intrinsic", "vcgtq_s16 ARM intrinsic", "vcgtq_s32 ARM intrinsic", "vcgtq_s8 ARM intrinsic", "vcgtq_u16 ARM intrinsic", "vcgtq_u32 ARM intrinsic", "vcgtq_u8 ARM intrinsic", "vcle_f32 ARM intrinsic", "vcle_s16 ARM intrinsic", "vcle_s32 ARM intrinsic", "vcle_s8 ARM intrinsic", "vcle_u16 ARM intrinsic", "vcle_u32 ARM intrinsic", "vcle_u8 ARM intrinsic", "vcleq_f32 ARM intrinsic", "vcleq_s16 ARM intrinsic", "vcleq_s32 ARM intrinsic", "vcleq_s8 ARM intrinsic", "vcleq_u16 ARM intrinsic", "vcleq_u32 ARM intrinsic", "vcleq_u8 ARM intrinsic", "vcls_s16 ARM intrinsic", "vcls_s32 ARM intrinsic", "vcls_s8 ARM intrinsic", "vclsq_s16 ARM intrinsic", "vclsq_s32 ARM intrinsic", "vclsq_s8 ARM intrinsic", "vclt_f32 ARM intrinsic", "vclt_s16 ARM intrinsic", "vclt_s32 ARM intrinsic", "vclt_s8 ARM intrinsic", "vclt_u16 ARM intrinsic", "vclt_u32 ARM intrinsic", "vclt_u8 ARM intrinsic", "vcltq_f32 ARM intrinsic", "vcltq_s16 ARM intrinsic", "vcltq_s32 ARM intrinsic", "vcltq_s8 ARM intrinsic", "vcltq_u16 ARM intrinsic", "vcltq_u32 ARM intrinsic", "vcltq_u8 ARM intrinsic", "vclz_s16 ARM intrinsic", "vclz_s32 ARM intrinsic", "vclz_s8 ARM intrinsic", "vclz_u16 ARM intrinsic", "vclz_u32 ARM intrinsic", "vclz_u8 ARM intrinsic", "vclzq_s16 ARM intrinsic", "vclzq_s32 ARM intrinsic", "vclzq_s8 ARM intrinsic", "vclzq_u16 ARM intrinsic", "vclzq_u32 ARM intrinsic", "vclzq_u8 ARM intrinsic", "vcnt_p8 ARM intrinsic", "vcnt_s8 ARM intrinsic", "vcnt_u8 ARM intrinsic", "vcntq_p8 ARM intrinsic", "vcntq_s8 ARM intrinsic", "vcntq_u8 ARM intrinsic", "vcombine_f16 ARM intrinsic", "vcombine_f32 ARM intrinsic", "vcombine_p16 ARM intrinsic", "vcombine_p8 ARM intrinsic", "vcombine_s16 ARM intrinsic", "vcombine_s32 ARM intrinsic", "vcombine_s64 ARM intrinsic", "vcombine_s8 ARM intrinsic", "vcombine_u16 ARM intrinsic", "vcombine_u32 ARM intrinsic", "vcombine_u64 ARM intrinsic", "vcombine_u8 ARM intrinsic", "vcreate_f16 ARM intrinsic", "vcreate_f32 ARM intrinsic", "vcreate_p16 ARM intrinsic", "vcreate_p8 ARM intrinsic", "vcreate_s16 ARM intrinsic", "vcreate_s32 ARM intrinsic", "vcreate_s64 ARM intrinsic", "vcreate_s8 ARM intrinsic", "vcreate_u16 ARM intrinsic", "vcreate_u32 ARM intrinsic", "vcreate_u64 ARM intrinsic", "vcreate_u8 ARM intrinsic", "vcvt_f16_f32 ARM intrinsic", "vcvt_f32_f16 ARM intrinsic", "vcvt_f32_s32 ARM intrinsic", "vcvt_f32_u32 ARM intrinsic", "vcvt_n_f32_s32 ARM intrinsic", "vcvt_n_f32_u32 ARM intrinsic", "vcvt_n_s32_f32 ARM intrinsic", "vcvt_n_u32_f32 ARM intrinsic", "vcvt_s32_f32 ARM intrinsic", "vcvt_u32_f32 ARM intrinsic", "vcvtq_f32_s32 ARM intrinsic", "vcvtq_f32_u32 ARM intrinsic", "vcvtq_n_f32_s32 ARM intrinsic", "vcvtq_n_f32_u32 ARM intrinsic", "vcvtq_n_s32_f32 ARM intrinsic", "vcvtq_n_u32_f32 ARM intrinsic", "vcvtq_s32_f32 ARM intrinsic", "vcvtq_u32_f32 ARM intrinsic", "vdup_lane_f32 ARM intrinsic", "vdup_lane_p16 ARM intrinsic", "vdup_lane_p8 ARM intrinsic", "vdup_lane_s16 ARM intrinsic", "vdup_lane_s32 ARM intrinsic", "vdup_lane_s64 ARM intrinsic", "vdup_lane_s8 ARM intrinsic", "vdup_lane_u16 ARM intrinsic", "vdup_lane_u32 ARM intrinsic", "vdup_lane_u64 ARM intrinsic", "vdup_lane_u8 ARM intrinsic", "vdup_n_f32 ARM intrinsic", "vdup_n_p16 ARM intrinsic", "vdup_n_p8 ARM intrinsic", "vdup_n_s16 ARM intrinsic", "vdup_n_s32 ARM intrinsic", "vdup_n_s64 ARM intrinsic", "vdup_n_s8 ARM intrinsic", "vdup_n_u16 ARM intrinsic", "vdup_n_u32 ARM intrinsic", "vdup_n_u64 ARM intrinsic", "vdup_n_u8 ARM intrinsic", "vdupq_lane_f32 ARM intrinsic", "vdupq_lane_p16 ARM intrinsic", "vdupq_lane_p8 ARM intrinsic", "vdupq_lane_s16 ARM intrinsic", "vdupq_lane_s32 ARM intrinsic", "vdupq_lane_s64 ARM intrinsic", "vdupq_lane_s8 ARM intrinsic", "vdupq_lane_u16 ARM intrinsic", "vdupq_lane_u32 ARM intrinsic", "vdupq_lane_u64 ARM intrinsic", "vdupq_lane_u8 ARM intrinsic", "vdupq_n_f32 ARM intrinsic", "vdupq_n_p16 ARM intrinsic", "vdupq_n_p8 ARM intrinsic", "vdupq_n_s16 ARM intrinsic", "vdupq_n_s32 ARM intrinsic", "vdupq_n_s64 ARM intrinsic", "vdupq_n_s8 ARM intrinsic", "vdupq_n_u16 ARM intrinsic", "vdupq_n_u32 ARM intrinsic", "vdupq_n_u64 ARM intrinsic", "vdupq_n_u8 ARM intrinsic", "veor_s16 ARM intrinsic", "veor_s32 ARM intrinsic", "veor_s64 ARM intrinsic", "veor_s8 ARM intrinsic", "veor_u16 ARM intrinsic", "veor_u32 ARM intrinsic", "veor_u64 ARM intrinsic", "veor_u8 ARM intrinsic", "veorq_s16 ARM intrinsic", "veorq_s32 ARM intrinsic", "veorq_s64 ARM intrinsic", "veorq_s8 ARM intrinsic", "veorq_u16 ARM intrinsic", "veorq_u32 ARM intrinsic", "veorq_u64 ARM intrinsic", "veorq_u8 ARM intrinsic", "vext_p16 ARM intrinsic", "vext_p8 ARM intrinsic", "vext_s16 ARM intrinsic", "vext_s32 ARM intrinsic", "vext_s64 ARM intrinsic", "vext_s8 ARM intrinsic", "vext_u16 ARM intrinsic", "vext_u32 ARM intrinsic", "vext_u64 ARM intrinsic", "vext_u8 ARM intrinsic", "vextq_p16 ARM intrinsic", "vextq_p8 ARM intrinsic", "vextq_s16 ARM intrinsic", "vextq_s32 ARM intrinsic", "vextq_s64 ARM intrinsic", "vextq_s8 ARM intrinsic", "vextq_u16 ARM intrinsic", "vextq_u32 ARM intrinsic", "vextq_u64 ARM intrinsic", "vextq_u8 ARM intrinsic", "vget_high_f16 ARM intrinsic", "vget_high_f32 ARM intrinsic", "vget_high_p16 ARM intrinsic", "vget_high_p8 ARM intrinsic", "vget_high_s16 ARM intrinsic", "vget_high_s32 ARM intrinsic", "vget_high_s64 ARM intrinsic", "vget_high_s8 ARM intrinsic", "vget_high_u16 ARM intrinsic", "vget_high_u32 ARM intrinsic", "vget_high_u64 ARM intrinsic", "vget_high_u8 ARM intrinsic", "vget_lane_f32 ARM intrinsic", "vget_lane_p16 ARM intrinsic", "vget_lane_p8 ARM intrinsic", "vget_lane_s16 ARM intrinsic", "vget_lane_s32 ARM intrinsic", "vget_lane_s64 ARM intrinsic", "vget_lane_s8 ARM intrinsic", "vget_lane_u16 ARM intrinsic", "vget_lane_u32 ARM intrinsic", "vget_lane_u64 ARM intrinsic", "vget_lane_u8 ARM intrinsic", "vget_low_f16 ARM intrinsic", "vget_low_f32 ARM intrinsic", "vget_low_p16 ARM intrinsic", "vget_low_p8 ARM intrinsic", "vget_low_s16 ARM intrinsic", "vget_low_s32 ARM intrinsic", "vget_low_s64 ARM intrinsic", "vget_low_s8 ARM intrinsic", "vget_low_u16 ARM intrinsic", "vget_low_u32 ARM intrinsic", "vget_low_u64 ARM intrinsic", "vget_low_u8 ARM intrinsic", "vgetq_lane_f32 ARM intrinsic", "vgetq_lane_p16 ARM intrinsic", "vgetq_lane_p8 ARM intrinsic", "vgetq_lane_s16 ARM intrinsic", "vgetq_lane_s32 ARM intrinsic", "vgetq_lane_s64 ARM intrinsic", "vgetq_lane_s8 ARM intrinsic", "vgetq_lane_u16 ARM intrinsic", "vgetq_lane_u32 ARM intrinsic", "vgetq_lane_u64 ARM intrinsic", "vgetq_lane_u8 ARM intrinsic", "vhadd_s16 ARM intrinsic", "vhadd_s32 ARM intrinsic", "vhadd_s8 ARM intrinsic", "vhadd_u16 ARM intrinsic", "vhadd_u32 ARM intrinsic", "vhadd_u8 ARM intrinsic", "vhaddq_s16 ARM intrinsic", "vhaddq_s32 ARM intrinsic", "vhaddq_s8 ARM intrinsic", "vhaddq_u16 ARM intrinsic", "vhaddq_u32 ARM intrinsic", "vhaddq_u8 ARM intrinsic", "vhsub_s16 ARM intrinsic", "vhsub_s32 ARM intrinsic", "vhsub_s8 ARM intrinsic", "vhsub_u16 ARM intrinsic", "vhsub_u32 ARM intrinsic", "vhsub_u8 ARM intrinsic", "vhsubq_s16 ARM intrinsic", "vhsubq_s32 ARM intrinsic", "vhsubq_s8 ARM intrinsic", "vhsubq_u16 ARM intrinsic", "vhsubq_u32 ARM intrinsic", "vhsubq_u8 ARM intrinsic", "vld1_dup_f16 ARM intrinsic", "vld1_dup_f32 ARM intrinsic", "vld1_dup_p16 ARM intrinsic", "vld1_dup_p8 ARM intrinsic", "vld1_dup_s16 ARM intrinsic", "vld1_dup_s32 ARM intrinsic", "vld1_dup_s64 ARM intrinsic", "vld1_dup_s8 ARM intrinsic", "vld1_dup_u16 ARM intrinsic", "vld1_dup_u32 ARM intrinsic", "vld1_dup_u64 ARM intrinsic", "vld1_dup_u8 ARM intrinsic", "vld1_f16 ARM intrinsic", "vld1_f32 ARM intrinsic", "vld1_lane_f32 ARM intrinsic", "vld1_lane_p16 ARM intrinsic", "vld1_lane_p8 ARM intrinsic", "vld1_lane_s16 ARM intrinsic", "vld1_lane_s32 ARM intrinsic", "vld1_lane_s64 ARM intrinsic", "vld1_lane_s8 ARM intrinsic", "vld1_lane_u16 ARM intrinsic", "vld1_lane_u32 ARM intrinsic", "vld1_lane_u64 ARM intrinsic", "vld1_lane_u8 ARM intrinsic", "vld1_p16 ARM intrinsic", "vld1_p8 ARM intrinsic", "vld1_s16 ARM intrinsic", "vld1_s32 ARM intrinsic", "vld1_s64 ARM intrinsic", "vld1_s8 ARM intrinsic", "vld1_u16 ARM intrinsic", "vld1_u32 ARM intrinsic", "vld1_u64 ARM intrinsic", "vld1_u8 ARM intrinsic", "vld1q_dup_f16 ARM intrinsic", "vld1q_dup_f32 ARM intrinsic", "vld1q_dup_p16 ARM intrinsic", "vld1q_dup_p8 ARM intrinsic", "vld1q_dup_s16 ARM intrinsic", "vld1q_dup_s32 ARM intrinsic", "vld1q_dup_s64 ARM intrinsic", "vld1q_dup_s8 ARM intrinsic", "vld1q_dup_u16 ARM intrinsic", "vld1q_dup_u32 ARM intrinsic", "vld1q_dup_u64 ARM intrinsic", "vld1q_dup_u8 ARM intrinsic", "vld1q_f16 ARM intrinsic", "vld1q_f32 ARM intrinsic", "vld1q_lane_f16 ARM intrinsic", "vld1q_lane_f32 ARM intrinsic", "vld1q_lane_p16 ARM intrinsic", "vld1q_lane_p8 ARM intrinsic", "vld1q_lane_s16 ARM intrinsic", "vld1q_lane_s32 ARM intrinsic", "vld1q_lane_s64 ARM intrinsic", "vld1q_lane_s8 ARM intrinsic", "vld1q_lane_u16 ARM intrinsic", "vld1q_lane_u32 ARM intrinsic", "vld1q_lane_u64 ARM intrinsic", "vld1q_lane_u8 ARM intrinsic", "vld1q_p16 ARM intrinsic", "vld1q_p8 ARM intrinsic", "vld1q_s16 ARM intrinsic", "vld1q_s32 ARM intrinsic", "vld1q_s64 ARM intrinsic", "vld1q_s8 ARM intrinsic", "vld1q_u16 ARM intrinsic", "vld1q_u32 ARM intrinsic", "vld1q_u64 ARM intrinsic", "vld1q_u8 ARM intrinsic", "vld2_dup_f16 ARM intrinsic", "vld2_dup_f32 ARM intrinsic", "vld2_dup_p16 ARM intrinsic", "vld2_dup_p8 ARM intrinsic", "vld2_dup_s16 ARM intrinsic", "vld2_dup_s32 ARM intrinsic", "vld2_dup_s64 ARM intrinsic", "vld2_dup_s8 ARM intrinsic", "vld2_dup_u16 ARM intrinsic", "vld2_dup_u32 ARM intrinsic", "vld2_dup_u64 ARM intrinsic", "vld2_dup_u8 ARM intrinsic", "vld2_f16 ARM intrinsic", "vld2_f32 ARM intrinsic", "vld2_lane_f16 ARM intrinsic", "vld2_lane_f32 ARM intrinsic", "vld2_lane_p16 ARM intrinsic", "vld2_lane_p8 ARM intrinsic", "vld2_lane_s16 ARM intrinsic", "vld2_lane_s32 ARM intrinsic", "vld2_lane_s8 ARM intrinsic", "vld2_lane_u16 ARM intrinsic", "vld2_lane_u32 ARM intrinsic", "vld2_lane_u8 ARM intrinsic", "vld2_p16 ARM intrinsic", "vld2_p8 ARM intrinsic", "vld2_s16 ARM intrinsic", "vld2_s32 ARM intrinsic", "vld2_s64 ARM intrinsic", "vld2_s8 ARM intrinsic", "vld2_u16 ARM intrinsic", "vld2_u32 ARM intrinsic", "vld2_u64 ARM intrinsic", "vld2_u8 ARM intrinsic", "vld2q_f16 ARM intrinsic", "vld2q_f32 ARM intrinsic", "vld2q_lane_f16 ARM intrinsic", "vld2q_lane_f32 ARM intrinsic", "vld2q_lane_p16 ARM intrinsic", "vld2q_lane_s16 ARM intrinsic", "vld2q_lane_s32 ARM intrinsic", "vld2q_lane_u16 ARM intrinsic", "vld2q_lane_u32 ARM intrinsic", "vld2q_p16 ARM intrinsic", "vld2q_p8 ARM intrinsic", "vld2q_s16 ARM intrinsic", "vld2q_s32 ARM intrinsic", "vld2q_s8 ARM intrinsic", "vld2q_u16 ARM intrinsic", "vld2q_u32 ARM intrinsic", "vld2q_u8 ARM intrinsic", "vld3_dup_f16 ARM intrinsic", "vld3_dup_f32 ARM intrinsic", "vld3_dup_p16 ARM intrinsic", "vld3_dup_p8 ARM intrinsic", "vld3_dup_s16 ARM intrinsic", "vld3_dup_s32 ARM intrinsic", "vld3_dup_s64 ARM intrinsic", "vld3_dup_s8 ARM intrinsic", "vld3_dup_u16 ARM intrinsic", "vld3_dup_u32 ARM intrinsic", "vld3_dup_u64 ARM intrinsic", "vld3_dup_u8 ARM intrinsic", "vld3_f16 ARM intrinsic", "vld3_f32 ARM intrinsic", "vld3_lane_f16 ARM intrinsic", "vld3_lane_f32 ARM intrinsic", "vld3_lane_p16 ARM intrinsic", "vld3_lane_p8 ARM intrinsic", "vld3_lane_s16 ARM intrinsic", "vld3_lane_s32 ARM intrinsic", "vld3_lane_s8 ARM intrinsic", "vld3_lane_u16 ARM intrinsic", "vld3_lane_u32 ARM intrinsic", "vld3_lane_u8 ARM intrinsic", "vld3_p16 ARM intrinsic", "vld3_p8 ARM intrinsic", "vld3_s16 ARM intrinsic", "vld3_s32 ARM intrinsic", "vld3_s64 ARM intrinsic", "vld3_s8 ARM intrinsic", "vld3_u16 ARM intrinsic", "vld3_u32 ARM intrinsic", "vld3_u64 ARM intrinsic", "vld3_u8 ARM intrinsic", "vld3q_f16 ARM intrinsic", "vld3q_f32 ARM intrinsic", "vld3q_lane_f16 ARM intrinsic", "vld3q_lane_f32 ARM intrinsic", "vld3q_lane_p16 ARM intrinsic", "vld3q_lane_s16 ARM intrinsic", "vld3q_lane_s32 ARM intrinsic", "vld3q_lane_u16 ARM intrinsic", "vld3q_lane_u32 ARM intrinsic", "vld3q_p16 ARM intrinsic", "vld3q_p8 ARM intrinsic", "vld3q_s16 ARM intrinsic", "vld3q_s32 ARM intrinsic", "vld3q_s8 ARM intrinsic", "vld3q_u16 ARM intrinsic", "vld3q_u32 ARM intrinsic", "vld3q_u8 ARM intrinsic", "vld4_dup_f16 ARM intrinsic", "vld4_dup_f32 ARM intrinsic", "vld4_dup_p16 ARM intrinsic", "vld4_dup_p8 ARM intrinsic", "vld4_dup_s16 ARM intrinsic", "vld4_dup_s32 ARM intrinsic", "vld4_dup_s64 ARM intrinsic", "vld4_dup_s8 ARM intrinsic", "vld4_dup_u16 ARM intrinsic", "vld4_dup_u32 ARM intrinsic", "vld4_dup_u64 ARM intrinsic", "vld4_dup_u8 ARM intrinsic", "vld4_f16 ARM intrinsic", "vld4_f32 ARM intrinsic", "vld4_lane_f16 ARM intrinsic", "vld4_lane_f32 ARM intrinsic", "vld4_lane_p16 ARM intrinsic", "vld4_lane_p8 ARM intrinsic", "vld4_lane_s16 ARM intrinsic", "vld4_lane_s32 ARM intrinsic", "vld4_lane_s8 ARM intrinsic", "vld4_lane_u16 ARM intrinsic", "vld4_lane_u32 ARM intrinsic", "vld4_lane_u8 ARM intrinsic", "vld4_p16 ARM intrinsic", "vld4_p8 ARM intrinsic", "vld4_s16 ARM intrinsic", "vld4_s32 ARM intrinsic", "vld4_s64 ARM intrinsic", "vld4_s8 ARM intrinsic", "vld4_u16 ARM intrinsic", "vld4_u32 ARM intrinsic", "vld4_u64 ARM intrinsic", "vld4_u8 ARM intrinsic", "vld4q_f16 ARM intrinsic", "vld4q_f32 ARM intrinsic", "vld4q_lane_f16 ARM intrinsic", "vld4q_lane_f32 ARM intrinsic", "vld4q_lane_p16 ARM intrinsic", "vld4q_lane_s16 ARM intrinsic", "vld4q_lane_s32 ARM intrinsic", "vld4q_lane_u16 ARM intrinsic", "vld4q_lane_u32 ARM intrinsic", "vld4q_p16 ARM intrinsic", "vld4q_p8 ARM intrinsic", "vld4q_s16 ARM intrinsic", "vld4q_s32 ARM intrinsic", "vld4q_s8 ARM intrinsic", "vld4q_u16 ARM intrinsic", "vld4q_u32 ARM intrinsic", "vld4q_u8 ARM intrinsic", "vmax_f32 ARM intrinsic", "vmax_s16 ARM intrinsic", "vmax_s32 ARM intrinsic", "vmax_s8 ARM intrinsic", "vmax_u16 ARM intrinsic", "vmax_u32 ARM intrinsic", "vmax_u8 ARM intrinsic", "vmaxq_f32 ARM intrinsic", "vmaxq_s16 ARM intrinsic", "vmaxq_s32 ARM intrinsic", "vmaxq_s8 ARM intrinsic", "vmaxq_u16 ARM intrinsic", "vmaxq_u32 ARM intrinsic", "vmaxq_u8 ARM intrinsic", "vmin_f32 ARM intrinsic", "vmin_s16 ARM intrinsic", "vmin_s32 ARM intrinsic", "vmin_s8 ARM intrinsic", "vmin_u16 ARM intrinsic", "vmin_u32 ARM intrinsic", "vmin_u8 ARM intrinsic", "vminq_f32 ARM intrinsic", "vminq_s16 ARM intrinsic", "vminq_s32 ARM intrinsic", "vminq_s8 ARM intrinsic", "vminq_u16 ARM intrinsic", "vminq_u32 ARM intrinsic", "vminq_u8 ARM intrinsic", "vmla_f32 ARM intrinsic", "vmla_lane_f32 ARM intrinsic", "vmla_lane_s16 ARM intrinsic", "vmla_lane_s32 ARM intrinsic", "vmla_lane_u16 ARM intrinsic", "vmla_lane_u32 ARM intrinsic", "vmla_n_f32 ARM intrinsic", "vmla_n_s16 ARM intrinsic", "vmla_n_s32 ARM intrinsic", "vmla_n_u16 ARM intrinsic", "vmla_n_u32 ARM intrinsic", "vmla_s16 ARM intrinsic", "vmla_s32 ARM intrinsic", "vmla_s8 ARM intrinsic", "vmla_u16 ARM intrinsic", "vmla_u32 ARM intrinsic", "vmla_u8 ARM intrinsic", "vmlal_lane_s16 ARM intrinsic", "vmlal_lane_s32 ARM intrinsic", "vmlal_lane_u16 ARM intrinsic", "vmlal_lane_u32 ARM intrinsic", "vmlal_n_s16 ARM intrinsic", "vmlal_n_s32 ARM intrinsic", "vmlal_n_u16 ARM intrinsic", "vmlal_n_u32 ARM intrinsic", "vmlal_s16 ARM intrinsic", "vmlal_s32 ARM intrinsic", "vmlal_s8 ARM intrinsic", "vmlal_u16 ARM intrinsic", "vmlal_u32 ARM intrinsic", "vmlal_u8 ARM intrinsic", "vmlaq_f32 ARM intrinsic", "vmlaq_lane_f32 ARM intrinsic", "vmlaq_lane_s16 ARM intrinsic", "vmlaq_lane_s32 ARM intrinsic", "vmlaq_lane_u16 ARM intrinsic", "vmlaq_lane_u32 ARM intrinsic", "vmlaq_n_f32 ARM intrinsic", "vmlaq_n_s16 ARM intrinsic", "vmlaq_n_s32 ARM intrinsic", "vmlaq_n_u16 ARM intrinsic", "vmlaq_n_u32 ARM intrinsic", "vmlaq_s16 ARM intrinsic", "vmlaq_s32 ARM intrinsic", "vmlaq_s8 ARM intrinsic", "vmlaq_u16 ARM intrinsic", "vmlaq_u32 ARM intrinsic", "vmlaq_u8 ARM intrinsic", "vmls_f32 ARM intrinsic", "vmls_lane_f32 ARM intrinsic", "vmls_lane_s16 ARM intrinsic", "vmls_lane_s32 ARM intrinsic", "vmls_lane_u16 ARM intrinsic", "vmls_lane_u32 ARM intrinsic", "vmls_n_f32 ARM intrinsic", "vmls_n_s16 ARM intrinsic", "vmls_n_s32 ARM intrinsic", "vmls_n_u16 ARM intrinsic", "vmls_n_u32 ARM intrinsic", "vmls_s16 ARM intrinsic", "vmls_s32 ARM intrinsic", "vmls_s8 ARM intrinsic", "vmls_u16 ARM intrinsic", "vmls_u32 ARM intrinsic", "vmls_u8 ARM intrinsic", "vmlsl_lane_s16 ARM intrinsic", "vmlsl_lane_s32 ARM intrinsic", "vmlsl_lane_u16 ARM intrinsic", "vmlsl_lane_u32 ARM intrinsic", "vmlsl_n_s16 ARM intrinsic", "vmlsl_n_s32 ARM intrinsic", "vmlsl_n_u16 ARM intrinsic", "vmlsl_n_u32 ARM intrinsic", "vmlsl_s16 ARM intrinsic", "vmlsl_s32 ARM intrinsic", "vmlsl_s8 ARM intrinsic", "vmlsl_u16 ARM intrinsic", "vmlsl_u32 ARM intrinsic", "vmlsl_u8 ARM intrinsic", "vmlsq_lane_f32 ARM intrinsic", "vmlsq_lane_s16 ARM intrinsic", "vmlsq_lane_s32 ARM intrinsic", "vmlsq_lane_u16 ARM intrinsic", "vmlsq_lane_u32 ARM intrinsic", "vmlsq_n_f32 ARM intrinsic", "vmlsq_n_s16 ARM intrinsic", "vmlsq_n_s32 ARM intrinsic", "vmlsq_n_u16 ARM intrinsic", "vmlsq_n_u32 ARM intrinsic", "vmlsq_s16 ARM intrinsic", "vmlsq_s32 ARM intrinsic", "vmlsq_s8 ARM intrinsic", "vmov_n_f32 ARM intrinsic", "vmov_n_p16 ARM intrinsic", "vmov_n_p8 ARM intrinsic", "vmov_n_s16 ARM intrinsic", "vmov_n_s32 ARM intrinsic", "vmov_n_s64 ARM intrinsic", "vmov_n_s8 ARM intrinsic", "vmov_n_u16 ARM intrinsic", "vmov_n_u32 ARM intrinsic", "vmov_n_u64 ARM intrinsic", "vmov_n_u8 ARM intrinsic", "vmovl_s16 ARM intrinsic", "vmovl_s32 ARM intrinsic", "vmovl_s8 ARM intrinsic", "vmovl_u16 ARM intrinsic", "vmovl_u32 ARM intrinsic", "vmovl_u8 ARM intrinsic", "vmovn_s16 ARM intrinsic", "vmovn_s32 ARM intrinsic", "vmovn_s64 ARM intrinsic", "vmovn_u16 ARM intrinsic", "vmovn_u32 ARM intrinsic", "vmovn_u64 ARM intrinsic", "vmovq_n_f32 ARM intrinsic", "vmovq_n_p16 ARM intrinsic", "vmovq_n_p8 ARM intrinsic", "vmovq_n_s16 ARM intrinsic", "vmovq_n_s32 ARM intrinsic", "vmovq_n_s64 ARM intrinsic", "vmovq_n_s8 ARM intrinsic", "vmovq_n_u16 ARM intrinsic", "vmovq_n_u32 ARM intrinsic", "vmovq_n_u64 ARM intrinsic", "vmovq_n_u8 ARM intrinsic", "vmul_f32 ARM intrinsic", "vmul_n_f32 ARM intrinsic", "vmul_n_s16 ARM intrinsic", "vmul_n_s32 ARM intrinsic", "vmul_n_u16 ARM intrinsic", "vmul_n_u32 ARM intrinsic", "vmul_p8 ARM intrinsic", "vmul_s16 ARM intrinsic", "vmul_s32 ARM intrinsic", "vmul_s8 ARM intrinsic", "vmul_u16 ARM intrinsic", "vmul_u32 ARM intrinsic", "vmul_u8 ARM intrinsic", "vmull_lane_s16 ARM intrinsic", "vmull_lane_s32 ARM intrinsic", "vmull_lane_u16 ARM intrinsic", "vmull_lane_u32 ARM intrinsic", "vmull_n_s16 ARM intrinsic", "vmull_n_s32 ARM intrinsic", "vmull_n_u16 ARM intrinsic", "vmull_n_u32 ARM intrinsic", "vmull_p8 ARM intrinsic", "vmull_s16 ARM intrinsic", "vmull_s32 ARM intrinsic", "vmull_s8 ARM intrinsic", "vmull_u16 ARM intrinsic", "vmull_u32 ARM intrinsic", "vmull_u8 ARM intrinsic", "vmulq_f32 ARM intrinsic", "vmulq_n_f32 ARM intrinsic", "vmulq_n_s16 ARM intrinsic", "vmulq_n_s32 ARM intrinsic", "vmulq_n_u16 ARM intrinsic", "vmulq_n_u32 ARM intrinsic", "vmulq_p8 ARM intrinsic", "vmulq_s16 ARM intrinsic", "vmulq_s32 ARM intrinsic", "vmulq_s8 ARM intrinsic", "vmulq_u16 ARM intrinsic", "vmulq_u32 ARM intrinsic", "vmulq_u8 ARM intrinsic", "vmvn_p8 ARM intrinsic", "vmvn_s16 ARM intrinsic", "vmvn_s32 ARM intrinsic", "vmvn_s8 ARM intrinsic", "vmvn_u16 ARM intrinsic", "vmvn_u32 ARM intrinsic", "vmvn_u8 ARM intrinsic", "vmvnq_p8 ARM intrinsic", "vmvnq_s16 ARM intrinsic", "vmvnq_s32 ARM intrinsic", "vmvnq_s8 ARM intrinsic", "vmvnq_u16 ARM intrinsic", "vmvnq_u32 ARM intrinsic", "vmvnq_u8 ARM intrinsic", "vneg_f32 ARM intrinsic", "vneg_s16 ARM intrinsic", "vneg_s32 ARM intrinsic", "vneg_s8 ARM intrinsic", "vnegq_f32 ARM intrinsic", "vnegq_s16 ARM intrinsic", "vnegq_s32 ARM intrinsic", "vnegq_s8 ARM intrinsic", "vorn_s16 ARM intrinsic", "vorn_s32 ARM intrinsic", "vorn_s64 ARM intrinsic", "vorn_s8 ARM intrinsic", "vorn_u16 ARM intrinsic", "vorn_u32 ARM intrinsic", "vorn_u64 ARM intrinsic", "vorn_u8 ARM intrinsic", "vornq_s16 ARM intrinsic", "vornq_s32 ARM intrinsic", "vornq_s64 ARM intrinsic", "vornq_s8 ARM intrinsic", "vornq_u16 ARM intrinsic", "vornq_u32 ARM intrinsic", "vornq_u64 ARM intrinsic", "vornq_u8 ARM intrinsic", "vorr_s16 ARM intrinsic", "vorr_s32 ARM intrinsic", "vorr_s64 ARM intrinsic", "vorr_s8 ARM intrinsic", "vorr_u16 ARM intrinsic", "vorr_u32 ARM intrinsic", "vorr_u64 ARM intrinsic", "vorr_u8 ARM intrinsic", "vorrq_s16 ARM intrinsic", "vorrq_s32 ARM intrinsic", "vorrq_s64 ARM intrinsic", "vorrq_s8 ARM intrinsic", "vorrq_u16 ARM intrinsic", "vorrq_u32 ARM intrinsic", "vorrq_u64 ARM intrinsic", "vorrq_u8 ARM intrinsic", "vpadal_s16 ARM intrinsic", "vpadal_s32 ARM intrinsic", "vpadal_s8 ARM intrinsic", "vpadal_u16 ARM intrinsic", "vpadal_u32 ARM intrinsic", "vpadal_u8 ARM intrinsic", "vpadalq_s16 ARM intrinsic", "vpadalq_s32 ARM intrinsic", "vpadalq_s8 ARM intrinsic", "vpadalq_u16 ARM intrinsic", "vpadalq_u32 ARM intrinsic", "vpadalq_u8 ARM intrinsic", "vpadd_f32 ARM intrinsic", "vpadd_s16 ARM intrinsic", "vpadd_s32 ARM intrinsic", "vpadd_s8 ARM intrinsic", "vpadd_u16 ARM intrinsic", "vpadd_u32 ARM intrinsic", "vpadd_u8 ARM intrinsic", "vpaddl_s16 ARM intrinsic", "vpaddl_s32 ARM intrinsic", "vpaddl_s8 ARM intrinsic", "vpaddl_u16 ARM intrinsic", "vpaddl_u32 ARM intrinsic", "vpaddl_u8 ARM intrinsic", "vpaddlq_s16 ARM intrinsic", "vpaddlq_s32 ARM intrinsic", "vpaddlq_s8 ARM intrinsic", "vpaddlq_u16 ARM intrinsic", "vpaddlq_u32 ARM intrinsic", "vpaddlq_u8 ARM intrinsic", "vpmax_f32 ARM intrinsic", "vpmax_s16 ARM intrinsic", "vpmax_s32 ARM intrinsic", "vpmax_s8 ARM intrinsic", "vpmax_u16 ARM intrinsic", "vpmax_u32 ARM intrinsic", "vpmax_u8 ARM intrinsic", "vpmin_f32 ARM intrinsic", "vpmin_s16 ARM intrinsic", "vpmin_s32 ARM intrinsic", "vpmin_s8 ARM intrinsic", "vpmin_u16 ARM intrinsic", "vpmin_u32 ARM intrinsic", "vpmin_u8 ARM intrinsic", "vqabs_s16 ARM intrinsic", "vqabs_s32 ARM intrinsic", "vqabs_s8 ARM intrinsic", "vqabsq_s16 ARM intrinsic", "vqabsq_s32 ARM intrinsic", "vqabsq_s8 ARM intrinsic", "vqadd_s16 ARM intrinsic", "vqadd_s32 ARM intrinsic", "vqadd_s64 ARM intrinsic", "vqadd_s8 ARM intrinsic", "vqadd_u16 ARM intrinsic", "vqadd_u32 ARM intrinsic", "vqadd_u64 ARM intrinsic", "vqadd_u8 ARM intrinsic", "vqaddq_s16 ARM intrinsic", "vqaddq_s32 ARM intrinsic", "vqaddq_s64 ARM intrinsic", "vqaddq_s8 ARM intrinsic", "vqaddq_u16 ARM intrinsic", "vqaddq_u32 ARM intrinsic", "vqaddq_u64 ARM intrinsic", "vqaddq_u8 ARM intrinsic", "vqdmlal_lane_s16 ARM intrinsic", "vqdmlal_lane_s32 ARM intrinsic", "vqdmlal_n_s16 ARM intrinsic", "vqdmlal_n_s32 ARM intrinsic", "vqdmlal_s16 ARM intrinsic", "vqdmlal_s32 ARM intrinsic", "vqdmlsl_lane_s16 ARM intrinsic", "vqdmlsl_lane_s32 ARM intrinsic", "vqdmlsl_n_s16 ARM intrinsic", "vqdmlsl_n_s32 ARM intrinsic", "vqdmlsl_s16 ARM intrinsic", "vqdmlsl_s32 ARM intrinsic", "vqdmulh_lane_s16 ARM intrinsic", "vqdmulh_lane_s32 ARM intrinsic", "vqdmulh_n_s16 ARM intrinsic", "vqdmulh_n_s32 ARM intrinsic", "vqdmulh_s16 ARM intrinsic", "vqdmulh_s32 ARM intrinsic", "vqdmulhq_lane_s16 ARM intrinsic", "vqdmulhq_lane_s32 ARM intrinsic", "vqdmulhq_n_s16 ARM intrinsic", "vqdmulhq_n_s32 ARM intrinsic", "vqdmulhq_s16 ARM intrinsic", "vqdmulhq_s32 ARM intrinsic", "vqdmull_lane_s16 ARM intrinsic", "vqdmull_lane_s32 ARM intrinsic", "vqdmull_n_s16 ARM intrinsic", "vqdmull_n_s32 ARM intrinsic", "vqdmull_s16 ARM intrinsic", "vqdmull_s32 ARM intrinsic", "vqmovn_s16 ARM intrinsic", "vqmovn_s32 ARM intrinsic", "vqmovn_s64 ARM intrinsic", "vqmovn_u16 ARM intrinsic", "vqmovn_u32 ARM intrinsic", "vqmovn_u64 ARM intrinsic", "vqmovun_s16 ARM intrinsic", "vqmovun_s32 ARM intrinsic", "vqmovun_s64 ARM intrinsic", "vqneg_s16 ARM intrinsic", "vqneg_s32 ARM intrinsic", "vqneg_s8 ARM intrinsic", "vqnegq_s16 ARM intrinsic", "vqnegq_s32 ARM intrinsic", "vqnegq_s8 ARM intrinsic", "vqrdmulh_lane_s16 ARM intrinsic", "vqrdmulh_lane_s32 ARM intrinsic", "vqrdmulh_n_s16 ARM intrinsic", "vqrdmulh_n_s32 ARM intrinsic", "vqrdmulh_s16 ARM intrinsic", "vqrdmulh_s32 ARM intrinsic", "vqrdmulhq_lane_s16 ARM intrinsic", "vqrdmulhq_lane_s32 ARM intrinsic", "vqrdmulhq_n_s16 ARM intrinsic", "vqrdmulhq_n_s32 ARM intrinsic", "vqrdmulhq_s16 ARM intrinsic", "vqrdmulhq_s32 ARM intrinsic", "vqrshl_s16 ARM intrinsic", "vqrshl_s32 ARM intrinsic", "vqrshl_s64 ARM intrinsic", "vqrshl_s8 ARM intrinsic", "vqrshl_u16 ARM intrinsic", "vqrshl_u32 ARM intrinsic", "vqrshl_u64 ARM intrinsic", "vqrshl_u8 ARM intrinsic", "vqrshlq_s16 ARM intrinsic", "vqrshlq_s32 ARM intrinsic", "vqrshlq_s64 ARM intrinsic", "vqrshlq_s8 ARM intrinsic", "vqrshlq_u16 ARM intrinsic", "vqrshlq_u32 ARM intrinsic", "vqrshlq_u64 ARM intrinsic", "vqrshlq_u8 ARM intrinsic", "vqrshrn_n_s16 ARM intrinsic", "vqrshrn_n_s32 ARM intrinsic", "vqrshrn_n_s64 ARM intrinsic", "vqrshrn_n_u16 ARM intrinsic", "vqrshrn_n_u32 ARM intrinsic", "vqrshrn_n_u64 ARM intrinsic", "vqrshrun_n_s16 ARM intrinsic", "vqrshrun_n_s32 ARM intrinsic", "vqrshrun_n_s64 ARM intrinsic", "vqshl_n_s16 ARM intrinsic", "vqshl_n_s32 ARM intrinsic", "vqshl_n_s64 ARM intrinsic", "vqshl_n_s8 ARM intrinsic", "vqshl_n_u16 ARM intrinsic", "vqshl_n_u32 ARM intrinsic", "vqshl_n_u64 ARM intrinsic", "vqshl_n_u8 ARM intrinsic", "vqshl_s16 ARM intrinsic", "vqshl_s32 ARM intrinsic", "vqshl_s64 ARM intrinsic", "vqshl_s8 ARM intrinsic", "vqshl_u16 ARM intrinsic", "vqshl_u32 ARM intrinsic", "vqshl_u64 ARM intrinsic", "vqshl_u8 ARM intrinsic", "vqshlq_n_s16 ARM intrinsic", "vqshlq_n_s32 ARM intrinsic", "vqshlq_n_s64 ARM intrinsic", "vqshlq_n_s8 ARM intrinsic", "vqshlq_n_u16 ARM intrinsic", "vqshlq_n_u32 ARM intrinsic", "vqshlq_n_u64 ARM intrinsic", "vqshlq_n_u8 ARM intrinsic", "vqshlq_s16 ARM intrinsic", "vqshlq_s32 ARM intrinsic", "vqshlq_s64 ARM intrinsic", "vqshlq_s8 ARM intrinsic", "vqshlq_u16 ARM intrinsic", "vqshlq_u32 ARM intrinsic", "vqshlq_u64 ARM intrinsic", "vqshlq_u8 ARM intrinsic", "vqshlu_n_s16 ARM intrinsic", "vqshlu_n_s32 ARM intrinsic", "vqshlu_n_s64 ARM intrinsic", "vqshlu_n_s8 ARM intrinsic", "vqshluq_n_s16 ARM intrinsic", "vqshluq_n_s32 ARM intrinsic", "vqshluq_n_s64 ARM intrinsic", "vqshluq_n_s8 ARM intrinsic", "vqshrn_n_s16 ARM intrinsic", "vqshrn_n_s32 ARM intrinsic", "vqshrn_n_s64 ARM intrinsic", "vqshrn_n_u16 ARM intrinsic", "vqshrn_n_u32 ARM intrinsic", "vqshrn_n_u64 ARM intrinsic", "vqshrun_n_s16 ARM intrinsic", "vqshrun_n_s32 ARM intrinsic", "vqshrun_n_s64 ARM intrinsic", "vqsub_s16 ARM intrinsic", "vqsub_s32 ARM intrinsic", "vqsub_s64 ARM intrinsic", "vqsub_s8 ARM intrinsic", "vqsub_u16 ARM intrinsic", "vqsub_u32 ARM intrinsic", "vqsub_u64 ARM intrinsic", "vqsub_u8 ARM intrinsic", "vqsubq_s16 ARM intrinsic", "vqsubq_s32 ARM intrinsic", "vqsubq_s64 ARM intrinsic", "vqsubq_s8 ARM intrinsic", "vqsubq_u16 ARM intrinsic", "vqsubq_u32 ARM intrinsic", "vqsubq_u64 ARM intrinsic", "vqsubq_u8 ARM intrinsic", "vraddhn_s16 ARM intrinsic", "vraddhn_s32 ARM intrinsic", "vraddhn_s64 ARM intrinsic", "vraddhn_u16 ARM intrinsic", "vraddhn_u32 ARM intrinsic", "vraddhn_u64 ARM intrinsic", "vrecpe_f32 ARM intrinsic", "vrecpe_u32 ARM intrinsic", "vrecpeq_f32 ARM intrinsic", "vrecpeq_u32 ARM intrinsic", "vrecps_f32 ARM intrinsic", "vrecpsq_f32 ARM intrinsic", "vrev16_p8 ARM intrinsic", "vrev16_s8 ARM intrinsic", "vrev16_u8 ARM intrinsic", "vrev16q_p8 ARM intrinsic", "vrev16q_s8 ARM intrinsic", "vrev16q_u8 ARM intrinsic", "vrev32_p8 ARM intrinsic", "vrev32_s16 ARM intrinsic", "vrev32_s8 ARM intrinsic", "vrev32_u16 ARM intrinsic", "vrev32_u8 ARM intrinsic", "vrev32q_p8 ARM intrinsic", "vrev32q_s16 ARM intrinsic", "vrev32q_s8 ARM intrinsic", "vrev32q_u16 ARM intrinsic", "vrev32q_u8 ARM intrinsic", "vrev64_f32 ARM intrinsic", "vrev64_p16 ARM intrinsic", "vrev64_p8 ARM intrinsic", "vrev64_s16 ARM intrinsic", "vrev64_s32 ARM intrinsic", "vrev64_s8 ARM intrinsic", "vrev64_u16 ARM intrinsic", "vrev64_u32 ARM intrinsic", "vrev64_u8 ARM intrinsic", "vrev64q_f32 ARM intrinsic", "vrev64q_p16 ARM intrinsic", "vrev64q_p8 ARM intrinsic", "vrev64q_s16 ARM intrinsic", "vrev64q_s32 ARM intrinsic", "vrev64q_s8 ARM intrinsic", "vrev64q_u16 ARM intrinsic", "vrev64q_u32 ARM intrinsic", "vrev64q_u8 ARM intrinsic", "vrhadd_s16 ARM intrinsic", "vrhadd_s32 ARM intrinsic", "vrhadd_s8 ARM intrinsic", "vrhadd_u16 ARM intrinsic", "vrhadd_u32 ARM intrinsic", "vrhadd_u8 ARM intrinsic", "vrhaddq_s16 ARM intrinsic", "vrhaddq_s32 ARM intrinsic", "vrhaddq_s8 ARM intrinsic", "vrhaddq_u16 ARM intrinsic", "vrhaddq_u32 ARM intrinsic", "vrhaddq_u8 ARM intrinsic", "vrshl_s16 ARM intrinsic", "vrshl_s32 ARM intrinsic", "vrshl_s64 ARM intrinsic", "vrshl_s8 ARM intrinsic", "vrshl_u16 ARM intrinsic", "vrshl_u32 ARM intrinsic", "vrshl_u64 ARM intrinsic", "vrshl_u8 ARM intrinsic", "vrshlq_s16 ARM intrinsic", "vrshlq_s32 ARM intrinsic", "vrshlq_s64 ARM intrinsic", "vrshlq_s8 ARM intrinsic", "vrshlq_u16 ARM intrinsic", "vrshlq_u32 ARM intrinsic", "vrshlq_u64 ARM intrinsic", "vrshlq_u8 ARM intrinsic", "vrshr_n_s16 ARM intrinsic", "vrshr_n_s32 ARM intrinsic", "vrshr_n_s64 ARM intrinsic", "vrshr_n_s8 ARM intrinsic", "vrshr_n_u16 ARM intrinsic", "vrshr_n_u32 ARM intrinsic", "vrshr_n_u64 ARM intrinsic", "vrshr_n_u8 ARM intrinsic", "vrshrn_n_s16 ARM intrinsic", "vrshrn_n_s32 ARM intrinsic", "vrshrn_n_s64 ARM intrinsic", "vrshrn_n_u16 ARM intrinsic", "vrshrn_n_u32 ARM intrinsic", "vrshrn_n_u64 ARM intrinsic", "vrshrq_n_s16 ARM intrinsic", "vrshrq_n_s32 ARM intrinsic", "vrshrq_n_s64 ARM intrinsic", "vrshrq_n_s8 ARM intrinsic", "vrshrq_n_u16 ARM intrinsic", "vrshrq_n_u32 ARM intrinsic", "vrshrq_n_u64 ARM intrinsic", "vrshrq_n_u8 ARM intrinsic", "vrsqrte_f32 ARM intrinsic", "vrsqrte_u32 ARM intrinsic", "vrsqrteq_f32 ARM intrinsic", "vrsqrteq_u32 ARM intrinsic", "vrsqrts_f32 ARM intrinsic", "vrsqrtsq_f32 ARM intrinsic", "vrsra_n_s16 ARM intrinsic", "vrsra_n_s32 ARM intrinsic", "vrsra_n_s64 ARM intrinsic", "vrsra_n_s8 ARM intrinsic", "vrsra_n_u16 ARM intrinsic", "vrsra_n_u32 ARM intrinsic", "vrsra_n_u64 ARM intrinsic", "vrsra_n_u8 ARM intrinsic", "vrsraq_n_s16 ARM intrinsic", "vrsraq_n_s32 ARM intrinsic", "vrsraq_n_s64 ARM intrinsic", "vrsraq_n_s8 ARM intrinsic", "vrsraq_n_u16 ARM intrinsic", "vrsraq_n_u32 ARM intrinsic", "vrsraq_n_u64 ARM intrinsic", "vrsraq_n_u8 ARM intrinsic", "vrsubhn_s16 ARM intrinsic", "vrsubhn_s32 ARM intrinsic", "vrsubhn_s64 ARM intrinsic", "vrsubhn_u16 ARM intrinsic", "vrsubhn_u32 ARM intrinsic", "vrsubhn_u64 ARM intrinsic", "vset_lane_f32 ARM intrinsic", "vset_lane_p16 ARM intrinsic", "vset_lane_p8 ARM intrinsic", "vset_lane_s16 ARM intrinsic", "vset_lane_s32 ARM intrinsic", "vset_lane_s64 ARM intrinsic", "vset_lane_s8 ARM intrinsic", "vset_lane_u16 ARM intrinsic", "vset_lane_u32 ARM intrinsic", "vset_lane_u64 ARM intrinsic", "vset_lane_u8 ARM intrinsic", "vsetq_lane_f32 ARM intrinsic", "vsetq_lane_p16 ARM intrinsic", "vsetq_lane_p8 ARM intrinsic", "vsetq_lane_s16 ARM intrinsic", "vsetq_lane_s32 ARM intrinsic", "vsetq_lane_s64 ARM intrinsic", "vsetq_lane_s8 ARM intrinsic", "vsetq_lane_u16 ARM intrinsic", "vsetq_lane_u32 ARM intrinsic", "vsetq_lane_u64 ARM intrinsic", "vsetq_lane_u8 ARM intrinsic", "vshl_n_s16 ARM intrinsic", "vshl_n_s32 ARM intrinsic", "vshl_n_s64 ARM intrinsic", "vshl_n_s8 ARM intrinsic", "vshl_n_u16 ARM intrinsic", "vshl_n_u32 ARM intrinsic", "vshl_n_u64 ARM intrinsic", "vshl_n_u8 ARM intrinsic", "vshl_s16 ARM intrinsic", "vshl_s32 ARM intrinsic", "vshl_s64 ARM intrinsic", "vshl_s8 ARM intrinsic", "vshl_u16 ARM intrinsic", "vshl_u32 ARM intrinsic", "vshl_u64 ARM intrinsic", "vshl_u8 ARM intrinsic", "vshll_n_s16 ARM intrinsic", "vshll_n_s32 ARM intrinsic", "vshll_n_s8 ARM intrinsic", "vshll_n_u16 ARM intrinsic", "vshll_n_u32 ARM intrinsic", "vshll_n_u8 ARM intrinsic", "vshlq_n_s16 ARM intrinsic", "vshlq_n_s32 ARM intrinsic", "vshlq_n_s64 ARM intrinsic", "vshlq_n_s8 ARM intrinsic", "vshlq_n_u16 ARM intrinsic", "vshlq_n_u32 ARM intrinsic", "vshlq_n_u64 ARM intrinsic", "vshlq_n_u8 ARM intrinsic", "vshlq_s16 ARM intrinsic", "vshlq_s32 ARM intrinsic", "vshlq_s64 ARM intrinsic", "vshlq_s8 ARM intrinsic", "vshlq_u16 ARM intrinsic", "vshlq_u32 ARM intrinsic", "vshlq_u64 ARM intrinsic", "vshlq_u8 ARM intrinsic", "vshr_n_s16 ARM intrinsic", "vshr_n_s32 ARM intrinsic", "vshr_n_s64 ARM intrinsic", "vshr_n_s8 ARM intrinsic", "vshr_n_u16 ARM intrinsic", "vshr_n_u32 ARM intrinsic", "vshr_n_u64 ARM intrinsic", "vshr_n_u8 ARM intrinsic", "vshrn_n_s16 ARM intrinsic", "vshrn_n_s32 ARM intrinsic", "vshrn_n_s64 ARM intrinsic", "vshrn_n_u16 ARM intrinsic", "vshrn_n_u32 ARM intrinsic", "vshrn_n_u64 ARM intrinsic", "vshrq_n_s16 ARM intrinsic", "vshrq_n_s32 ARM intrinsic", "vshrq_n_s64 ARM intrinsic", "vshrq_n_s8 ARM intrinsic", "vshrq_n_u16 ARM intrinsic", "vshrq_n_u32 ARM intrinsic", "vshrq_n_u64 ARM intrinsic", "vshrq_n_u8 ARM intrinsic", "vsli_n_p16 ARM intrinsic", "vsli_n_p8 ARM intrinsic", "vsli_n_s16 ARM intrinsic", "vsli_n_s32 ARM intrinsic", "vsli_n_s64 ARM intrinsic", "vsli_n_s8 ARM intrinsic", "vsli_n_u16 ARM intrinsic", "vsli_n_u32 ARM intrinsic", "vsli_n_u64 ARM intrinsic", "vsli_n_u8 ARM intrinsic", "vsliq_n_p16 ARM intrinsic", "vsliq_n_p8 ARM intrinsic", "vsliq_n_s16 ARM intrinsic", "vsliq_n_s32 ARM intrinsic", "vsliq_n_s64 ARM intrinsic", "vsliq_n_s8 ARM intrinsic", "vsliq_n_u16 ARM intrinsic", "vsliq_n_u32 ARM intrinsic", "vsliq_n_u64 ARM intrinsic", "vsliq_n_u8 ARM intrinsic", "vsra_n_s16 ARM intrinsic", "vsra_n_s32 ARM intrinsic", "vsra_n_s64 ARM intrinsic", "vsra_n_s8 ARM intrinsic", "vsra_n_u16 ARM intrinsic", "vsra_n_u32 ARM intrinsic", "vsra_n_u64 ARM intrinsic", "vsra_n_u8 ARM intrinsic", "vsraq_n_s16 ARM intrinsic", "vsraq_n_s32 ARM intrinsic", "vsraq_n_s64 ARM intrinsic", "vsraq_n_s8 ARM intrinsic", "vsraq_n_u16 ARM intrinsic", "vsraq_n_u32 ARM intrinsic", "vsraq_n_u64 ARM intrinsic", "vsraq_n_u8 ARM intrinsic", "vsri_n_p16 ARM intrinsic", "vsri_n_p8 ARM intrinsic", "vsri_n_s16 ARM intrinsic", "vsri_n_s32 ARM intrinsic", "vsri_n_s64 ARM intrinsic", "vsri_n_s8 ARM intrinsic", "vsri_n_u16 ARM intrinsic", "vsri_n_u32 ARM intrinsic", "vsri_n_u64 ARM intrinsic", "vsri_n_u8 ARM intrinsic", "vsriq_n_p16 ARM intrinsic", "vsriq_n_p8 ARM intrinsic", "vsriq_n_s16 ARM intrinsic", "vsriq_n_s32 ARM intrinsic", "vsriq_n_s64 ARM intrinsic", "vsriq_n_s8 ARM intrinsic", "vsriq_n_u16 ARM intrinsic", "vsriq_n_u32 ARM intrinsic", "vsriq_n_u64 ARM intrinsic", "vsriq_n_u8 ARM intrinsic", "vst1_f16 ARM intrinsic", "vst1_f32 ARM intrinsic", "vst1_lane_f16 ARM intrinsic", "vst1_lane_f32 ARM intrinsic", "vst1_lane_p16 ARM intrinsic", "vst1_lane_p8 ARM intrinsic", "vst1_lane_s16 ARM intrinsic", "vst1_lane_s32 ARM intrinsic", "vst1_lane_s64 ARM intrinsic", "vst1_lane_s8 ARM intrinsic", "vst1_lane_u16 ARM intrinsic", "vst1_lane_u32 ARM intrinsic", "vst1_lane_u64 ARM intrinsic", "vst1_lane_u8 ARM intrinsic", "vst1_p16 ARM intrinsic", "vst1_p8 ARM intrinsic", "vst1_s16 ARM intrinsic", "vst1_s32 ARM intrinsic", "vst1_s64 ARM intrinsic", "vst1_s8 ARM intrinsic", "vst1_u16 ARM intrinsic", "vst1_u32 ARM intrinsic", "vst1_u64 ARM intrinsic", "vst1_u8 ARM intrinsic", "vst1q_f16 ARM intrinsic", "vst1q_f32 ARM intrinsic", "vst1q_lane_f16 ARM intrinsic", "vst1q_lane_f32 ARM intrinsic", "vst1q_lane_p16 ARM intrinsic", "vst1q_lane_p8 ARM intrinsic", "vst1q_lane_s16 ARM intrinsic", "vst1q_lane_s32 ARM intrinsic", "vst1q_lane_s64 ARM intrinsic", "vst1q_lane_s8 ARM intrinsic", "vst1q_lane_u16 ARM intrinsic", "vst1q_lane_u32 ARM intrinsic", "vst1q_lane_u64 ARM intrinsic", "vst1q_lane_u8 ARM intrinsic", "vst1q_p16 ARM intrinsic", "vst1q_p8 ARM intrinsic", "vst1q_s16 ARM intrinsic", "vst1q_s32 ARM intrinsic", "vst1q_s64 ARM intrinsic", "vst1q_s8 ARM intrinsic", "vst1q_u16 ARM intrinsic", "vst1q_u32 ARM intrinsic", "vst1q_u64 ARM intrinsic", "vst1q_u8 ARM intrinsic", "vst2_f16 ARM intrinsic", "vst2_f32 ARM intrinsic", "vst2_lane_f16 ARM intrinsic", "vst2_lane_f32 ARM intrinsic", "vst2_lane_p16 ARM intrinsic", "vst2_lane_p8 ARM intrinsic", "vst2_lane_s16 ARM intrinsic", "vst2_lane_s32 ARM intrinsic", "vst2_lane_s8 ARM intrinsic", "vst2_lane_u16 ARM intrinsic", "vst2_lane_u32 ARM intrinsic", "vst2_lane_u8 ARM intrinsic", "vst2_p16 ARM intrinsic", "vst2_p8 ARM intrinsic", "vst2_s16 ARM intrinsic", "vst2_s32 ARM intrinsic", "vst2_s64 ARM intrinsic", "vst2_s8 ARM intrinsic", "vst2_u16 ARM intrinsic", "vst2_u32 ARM intrinsic", "vst2_u64 ARM intrinsic", "vst2_u8 ARM intrinsic", "vst2q_f16 ARM intrinsic", "vst2q_f32 ARM intrinsic", "vst2q_lane_f16 ARM intrinsic", "vst2q_lane_f32 ARM intrinsic", "vst2q_lane_p16 ARM intrinsic", "vst2q_lane_s16 ARM intrinsic", "vst2q_lane_s32 ARM intrinsic", "vst2q_lane_u16 ARM intrinsic", "vst2q_lane_u32 ARM intrinsic", "vst2q_p16 ARM intrinsic", "vst2q_p8 ARM intrinsic", "vst2q_s16 ARM intrinsic", "vst2q_s32 ARM intrinsic", "vst2q_s8 ARM intrinsic", "vst2q_u16 ARM intrinsic", "vst2q_u32 ARM intrinsic", "vst2q_u8 ARM intrinsic", "vst3_f16 ARM intrinsic", "vst3_f32 ARM intrinsic", "vst3_lane_f16 ARM intrinsic", "vst3_lane_f32 ARM intrinsic", "vst3_lane_p16 ARM intrinsic", "vst3_lane_p8 ARM intrinsic", "vst3_lane_s16 ARM intrinsic", "vst3_lane_s32 ARM intrinsic", "vst3_lane_s8 ARM intrinsic", "vst3_lane_u16 ARM intrinsic", "vst3_lane_u32 ARM intrinsic", "vst3_lane_u8 ARM intrinsic", "vst3_p16 ARM intrinsic", "vst3_p8 ARM intrinsic", "vst3_s16 ARM intrinsic", "vst3_s32 ARM intrinsic", "vst3_s64 ARM intrinsic", "vst3_s8 ARM intrinsic", "vst3_u16 ARM intrinsic", "vst3_u32 ARM intrinsic", "vst3_u64 ARM intrinsic", "vst3_u8 ARM intrinsic", "vst3q_f16 ARM intrinsic", "vst3q_f32 ARM intrinsic", "vst3q_lane_f16 ARM intrinsic", "vst3q_lane_f32 ARM intrinsic", "vst3q_lane_p16 ARM intrinsic", "vst3q_lane_s16 ARM intrinsic", "vst3q_lane_s32 ARM intrinsic", "vst3q_lane_u16 ARM intrinsic", "vst3q_lane_u32 ARM intrinsic", "vst3q_p16 ARM intrinsic", "vst3q_p8 ARM intrinsic", "vst3q_s16 ARM intrinsic", "vst3q_s32 ARM intrinsic", "vst3q_s8 ARM intrinsic", "vst3q_u16 ARM intrinsic", "vst3q_u32 ARM intrinsic", "vst3q_u8 ARM intrinsic", "vst4_f16 ARM intrinsic", "vst4_f32 ARM intrinsic", "vst4_lane_f16 ARM intrinsic", "vst4_lane_f32 ARM intrinsic", "vst4_lane_p16 ARM intrinsic", "vst4_lane_p8 ARM intrinsic", "vst4_lane_s16 ARM intrinsic", "vst4_lane_s32 ARM intrinsic", "vst4_lane_s8 ARM intrinsic", "vst4_lane_u16 ARM intrinsic", "vst4_lane_u32 ARM intrinsic", "vst4_lane_u8 ARM intrinsic", "vst4_p16 ARM intrinsic", "vst4_p8 ARM intrinsic", "vst4_s16 ARM intrinsic", "vst4_s32 ARM intrinsic", "vst4_s64 ARM intrinsic", "vst4_s8 ARM intrinsic", "vst4_u16 ARM intrinsic", "vst4_u32 ARM intrinsic", "vst4_u64 ARM intrinsic", "vst4_u8 ARM intrinsic", "vst4q_f16 ARM intrinsic", "vst4q_f32 ARM intrinsic", "vst4q_lane_f16 ARM intrinsic", "vst4q_lane_f32 ARM intrinsic", "vst4q_lane_p16 ARM intrinsic", "vst4q_lane_s16 ARM intrinsic", "vst4q_lane_s32 ARM intrinsic", "vst4q_lane_u16 ARM intrinsic", "vst4q_lane_u32 ARM intrinsic", "vst4q_p16 ARM intrinsic", "vst4q_p8 ARM intrinsic", "vst4q_s16 ARM intrinsic", "vst4q_s32 ARM intrinsic", "vst4q_s8 ARM intrinsic", "vst4q_u16 ARM intrinsic", "vst4q_u32 ARM intrinsic", "vst4q_u8 ARM intrinsic", "vsub_f32 ARM intrinsic", "vsub_s16 ARM intrinsic", "vsub_s32 ARM intrinsic", "vsub_s64 ARM intrinsic", "vsub_s8 ARM intrinsic", "vsub_u16 ARM intrinsic", "vsub_u32 ARM intrinsic", "vsub_u64 ARM intrinsic", "vsub_u8 ARM intrinsic", "vsubhn_s16 ARM intrinsic", "vsubhn_s32 ARM intrinsic", "vsubhn_s64 ARM intrinsic", "vsubhn_u16 ARM intrinsic", "vsubhn_u32 ARM intrinsic", "vsubhn_u64 ARM intrinsic", "vsubl_s16 ARM intrinsic", "vsubl_s32 ARM intrinsic", "vsubl_s8 ARM intrinsic", "vsubl_u16 ARM intrinsic", "vsubl_u32 ARM intrinsic", "vsubl_u8 ARM intrinsic", "vsubq_f32 ARM intrinsic", "vsubq_s16 ARM intrinsic", "vsubq_s32 ARM intrinsic", "vsubq_s64 ARM intrinsic", "vsubq_s8 ARM intrinsic", "vsubq_u16 ARM intrinsic", "vsubq_u32 ARM intrinsic", "vsubq_u64 ARM intrinsic", "vsubq_u8 ARM intrinsic", "vsubw_s16 ARM intrinsic", "vsubw_s32 ARM intrinsic", "vsubw_s8 ARM intrinsic", "vsubw_u16 ARM intrinsic", "vsubw_u32 ARM intrinsic", "vsubw_u8 ARM intrinsic", "vtbl1_p8 ARM intrinsic", "vtbl1_s8 ARM intrinsic", "vtbl1_u8 ARM intrinsic", "vtbl2_p8 ARM intrinsic", "vtbl2_s8 ARM intrinsic", "vtbl2_u8 ARM intrinsic", "vtbl3_p8 ARM intrinsic", "vtbl3_s8 ARM intrinsic", "vtbl3_u8 ARM intrinsic", "vtbl4_p8 ARM intrinsic", "vtbl4_s8 ARM intrinsic", "vtbl4_u8 ARM intrinsic", "vtbx1_p8 ARM intrinsic", "vtbx1_s8 ARM intrinsic", "vtbx1_u8 ARM intrinsic", "vtbx2_p8 ARM intrinsic", "vtbx2_s8 ARM intrinsic", "vtbx2_u8 ARM intrinsic", "vtbx3_p8 ARM intrinsic", "vtbx3_s8 ARM intrinsic", "vtbx3_u8 ARM intrinsic", "vtbx4_p8 ARM intrinsic", "vtbx4_s8 ARM intrinsic", "vtbx4_u8 ARM intrinsic", "vtrn_f32 ARM intrinsic", "vtrn_p16 ARM intrinsic", "vtrn_p8 ARM intrinsic", "vtrn_s16 ARM intrinsic", "vtrn_s32 ARM intrinsic", "vtrn_s8 ARM intrinsic", "vtrn_u16 ARM intrinsic", "vtrn_u32 ARM intrinsic", "vtrn_u8 ARM intrinsic", "vtrnq_f32 ARM intrinsic", "vtrnq_p16 ARM intrinsic", "vtrnq_p8 ARM intrinsic", "vtrnq_s16 ARM intrinsic", "vtrnq_s32 ARM intrinsic", "vtrnq_s8 ARM intrinsic", "vtrnq_u16 ARM intrinsic", "vtrnq_u32 ARM intrinsic", "vtrnq_u8 ARM intrinsic", "vtst_p8 ARM intrinsic", "vtst_s16 ARM intrinsic", "vtst_s32 ARM intrinsic", "vtst_s8 ARM intrinsic", "vtst_u16 ARM intrinsic", "vtst_u32 ARM intrinsic", "vtst_u8 ARM intrinsic", "vtstq_p8 ARM intrinsic", "vtstq_s16 ARM intrinsic", "vtstq_s32 ARM intrinsic", "vtstq_s8 ARM intrinsic", "vtstq_u16 ARM intrinsic", "vtstq_u32 ARM intrinsic", "vtstq_u8 ARM intrinsic", "vuzp_f32 ARM intrinsic", "vuzp_p16 ARM intrinsic", "vuzp_p8 ARM intrinsic", "vuzp_s16 ARM intrinsic", "vuzp_s32 ARM intrinsic", "vuzp_s8 ARM intrinsic", "vuzp_u16 ARM intrinsic", "vuzp_u32 ARM intrinsic", "vuzp_u8 ARM intrinsic", "vuzpq_f32 ARM intrinsic", "vuzpq_p16 ARM intrinsic", "vuzpq_p8 ARM intrinsic", "vuzpq_s16 ARM intrinsic", "vuzpq_s32 ARM intrinsic", "vuzpq_s8 ARM intrinsic", "vuzpq_u16 ARM intrinsic", "vuzpq_u32 ARM intrinsic", "vuzpq_u8 ARM intrinsic", "vzip_f32 ARM intrinsic", "vzip_p16 ARM intrinsic", "vzip_p8 ARM intrinsic", "vzip_s16 ARM intrinsic", "vzip_s8 ARM intrinsic", "vzip_u16 ARM intrinsic", "vzip_u8 ARM intrinsic", "vzipq_f32 ARM intrinsic", "vzipq_p16 ARM intrinsic", "vzipq_p8 ARM intrinsic", "vzipq_s16 ARM intrinsic", "vzipq_s32 ARM intrinsic", "vzipq_s8 ARM intrinsic", "vzipq_u16 ARM intrinsic", "vzipq_u32 ARM intrinsic", "vzipq_u8 ARM intrinsic"] -ms.assetid: d3d7dadd-7bd5-4508-8bff-371a66913e20 --- # ARM intrinsics @@ -305,7 +304,7 @@ Reads data from ARM coprocessors by using the coprocessor data transfer instruct unsigned __int64 _MoveFromCoprocessor64( unsigned int coproc, unsigned int opcode1, - unsigned int crm, + unsigned int crm ); ``` @@ -393,7 +392,7 @@ void _MoveFromCoprocessor64( unsigned __int64 value, unsigned int coproc, unsigned int opcode1, - unsigned int crm, + unsigned int crm ); ``` diff --git a/docs/intrinsics/x86-intrinsics-list.md b/docs/intrinsics/x86-intrinsics-list.md index 4c494efabcb..502e7552b82 100644 --- a/docs/intrinsics/x86-intrinsics-list.md +++ b/docs/intrinsics/x86-intrinsics-list.md @@ -1139,7 +1139,7 @@ The following table lists the intrinsics available on x86 processors. The Techno | [`_mm256_set1_ps`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_set1_ps) | AVX | immintrin.h | `__m256 _mm256_set1_ps(float);` | | [`_mm256_setr_epi16`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_setr_epi16) | AVX | immintrin.h | `(__m256i _mm256_setr_epi16(short, short, short, short, short, short, short, short, short, short, short, short, short, short, short, short);` | | [`_mm256_setr_epi32`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_setr_epi32) | AVX | immintrin.h | `__m256i _mm256_setr_epi32(int, int, int, int, int, int, int, int);` | -| [`_mm256_setr_epi8`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_setr_epi8) | AVX | immintrin.h | `(__m256i _mm256_setr_epi8(char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char,);` | +| [`_mm256_setr_epi8`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_setr_epi8) | AVX | immintrin.h | `(__m256i _mm256_setr_epi8(char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char, char);` | | [`_mm256_setr_pd`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_setr_pd) | AVX | immintrin.h | `__m256d _mm256_setr_pd(double, double, double, double);` | | [`_mm256_setr_ps`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_setr_ps) | AVX | immintrin.h | `__m256 _mm256_setr_ps(float, float, float, float, float, float, float, float);` | | [`_mm256_setzero_pd`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_setzero_pd) | AVX | immintrin.h | `__m256d _mm256_setzero_pd(void);` | diff --git a/docs/mfc/reference/cgopherconnection-class.md b/docs/mfc/reference/cgopherconnection-class.md index 585855bbfe9..d05ead9a3a2 100644 --- a/docs/mfc/reference/cgopherconnection-class.md +++ b/docs/mfc/reference/cgopherconnection-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: CGopherConnection Class" title: "CGopherConnection Class" +description: "Learn more about: CGopherConnection Class" ms.date: "11/04/2016" f1_keywords: ["CGopherConnection", "AFXINET/CGopherConnection", "AFXINET/CGopherConnection::CGopherConnection", "AFXINET/CGopherConnection::CreateLocator", "AFXINET/CGopherConnection::GetAttribute", "AFXINET/CGopherConnection::OpenFile"] helpviewer_keywords: ["CGopherConnection [MFC], CGopherConnection", "CGopherConnection [MFC], CreateLocator", "CGopherConnection [MFC], GetAttribute", "CGopherConnection [MFC], OpenFile"] -ms.assetid: b5b96aea-ac99-430e-bd84-d1372b43f78f --- # CGopherConnection Class @@ -167,8 +166,9 @@ Call this member function to retrieve specific attribute information about an it ``` BOOL GetAttribute( - CGopherLocator& refLocator CString strRequestedAttributes, - CString& strResult,); + CGopherLocator& refLocator, + CString strRequestedAttributes, + CString& strResult); ``` ### Parameters @@ -222,11 +222,11 @@ Override the *dwContext* default to set the context identifier to a value of you ## See also -[CInternetConnection Class](../../mfc/reference/cinternetconnection-class.md)
-[Hierarchy Chart](../../mfc/hierarchy-chart.md)
-[CFtpConnection Class](../../mfc/reference/cftpconnection-class.md)
-[CHttpConnection Class](../../mfc/reference/chttpconnection-class.md)
-[CInternetConnection Class](../../mfc/reference/cinternetconnection-class.md)
-[CGopherLocator Class](../../mfc/reference/cgopherlocator-class.md)
-[CGopherFile Class](../../mfc/reference/cgopherfile-class.md)
+[CInternetConnection Class](../../mfc/reference/cinternetconnection-class.md)\ +[Hierarchy Chart](../../mfc/hierarchy-chart.md)\ +[CFtpConnection Class](../../mfc/reference/cftpconnection-class.md)\ +[CHttpConnection Class](../../mfc/reference/chttpconnection-class.md)\ +[CInternetConnection Class](../../mfc/reference/cinternetconnection-class.md)\ +[CGopherLocator Class](../../mfc/reference/cgopherlocator-class.md)\ +[CGopherFile Class](../../mfc/reference/cgopherfile-class.md)\ [CInternetSession Class](../../mfc/reference/cinternetsession-class.md) diff --git a/docs/mfc/reference/cmfcdynamiclayout-class.md b/docs/mfc/reference/cmfcdynamiclayout-class.md index 0c8f47f3f09..c41f1893c72 100644 --- a/docs/mfc/reference/cmfcdynamiclayout-class.md +++ b/docs/mfc/reference/cmfcdynamiclayout-class.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: CMFCDynamicLayout Class" title: "CMFCDynamicLayout Class" +description: "Learn more about: CMFCDynamicLayout Class" ms.date: "08/29/2019" f1_keywords: ["CMFCDynamicLayout", "AFXLAYOUT/CMFCDynamicLayout", "AFXLAYOUT/CMFCDynamicLayout::AddItem", "AFXLAYOUT/CMFCDynamicLayout::Adjust", "AFXLAYOUT/CMFCDynamicLayout::Create", "AFXLAYOUT/CMFCDynamicLayout::GetHostWnd", "AFXLAYOUT/CMFCDynamicLayout::GetMinSize", "AFXLAYOUT/CMFCDynamicLayout::GetWindowRect", "AFXLAYOUT/CMFCDynamicLayout::HasItem", "AFXLAYOUT/CMFCDynamicLayout::IsEmpty", "AFXLAYOUT/CMFCDynamicLayout::LoadResource", "AFXLAYOUT/CMFCDynamicLayout::SetMinSize"] -ms.assetid: c2df2976-f049-47fc-9cf0-abe3e01948bc --- # CMFCDynamicLayout Class @@ -170,7 +169,7 @@ The position and size of a child control is changed dynamically when a hosting w Retrieves the rectangle for the window's current client area. ```cpp -void GetHostWndRect(CRect& rect,); +void GetHostWndRect(CRect& rect); ``` ### Parameters @@ -503,5 +502,5 @@ A [SizeSettings](#sizesettings_structure) value that encapsulates the requested ## See also -[Hierarchy Chart](../../mfc/hierarchy-chart.md)
+[Hierarchy Chart](../../mfc/hierarchy-chart.md)\ [Classes](../../mfc/reference/mfc-classes.md) diff --git a/docs/standard-library/atomic-functions.md b/docs/standard-library/atomic-functions.md index a8a8db35d41..b467ad654d8 100644 --- a/docs/standard-library/atomic-functions.md +++ b/docs/standard-library/atomic-functions.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: functions" title: " functions" +description: "Learn more about: functions" ms.date: "07/11/2018" f1_keywords: ["atomic/std::atomic_compare_exchange_strong", "atomic/std::atomic_compare_exchange_strong_explicit", "atomic/std::atomic_compare_exchange_weak", "atomic/std::atomic_compare_exchange_weak_explicit", "atomic/std::atomic_exchange", "atomic/std::atomic_exchange_explicit", "atomic/std::atomic_fetch_add", "atomic/std::atomic_fetch_add_explicit", "atomic/std::atomic_fetch_and", "atomic/std::atomic_fetch_and_explicit", "atomic/std::atomic_fetch_or", "atomic/std::atomic_fetch_or_explicit", "atomic/std::atomic_fetch_sub", "atomic/std::atomic_fetch_sub_explicit", "atomic/std::atomic_fetch_xor", "atomic/std::atomic_fetch_xor_explicit", "atomic/std::atomic_flag_clear", "atomic/std::atomic_flag_clear_explicit", "atomic/std::atomic_flag_test_and_set", "atomic/std::atomic_flag_test_and_set_explicit", "atomic/std::atomic_init", "atomic/std::atomic_is_lock_free", "atomic/std::atomic_load", "atomic/std::atomic_load_explicit", "atomic/std::atomic_signal_fence", "atomic/std::atomic_store", "atomic/std::atomic_store_explicit", "atomic/std::atomic_thread_fence", "atomic/std::kill_dependency"] helpviewer_keywords: ["std::atomic_compare_exchange_strong [C++]", "std::atomic_compare_exchange_strong_explicit [C++]", "std::atomic_compare_exchange_weak [C++]", "std::atomic_compare_exchange_weak_explicit [C++]", "std::atomic_exchange [C++]", "std::atomic_exchange_explicit [C++]", "std::atomic_fetch_add [C++]", "std::atomic_fetch_add_explicit [C++]", "std::atomic_fetch_and [C++]", "std::atomic_fetch_and_explicit [C++]", "std::atomic_fetch_or [C++]", "std::atomic_fetch_or_explicit [C++]", "std::atomic_fetch_sub [C++]", "std::atomic_fetch_sub_explicit [C++]", "std::atomic_fetch_xor [C++]", "std::atomic_fetch_xor_explicit [C++]", "std::atomic_flag_clear [C++]", "std::atomic_flag_clear_explicit [C++]", "std::atomic_flag_test_and_set [C++]", "std::atomic_flag_test_and_set_explicit [C++]", "std::atomic_init [C++]", "std::atomic_is_lock_free [C++]", "std::atomic_load [C++]", "std::atomic_load_explicit [C++]", "std::atomic_signal_fence [C++]", "std::atomic_store [C++]", "std::atomic_store_explicit [C++]", "std::atomic_thread_fence [C++]", "std::kill_dependency [C++]"] @@ -676,8 +676,8 @@ A [`memory_order`](../standard-library/atomic-enums.md#memory_order_enum). Sets the **`bool`** flag in an [`atomic_flag`](../standard-library/atomic-flag-structure.md) object to **`true`**, within the constraints of the [`memory_order.memory_order_seq_cst`](../standard-library/atomic-enums.md#memory_order_enum). ```cpp -inline bool atomic_flag_test_and_set(volatile atomic_flag* Flag,) noexcept; -inline bool atomic_flag_test_and_set(atomic_flag* Flag,) noexcept; +inline bool atomic_flag_test_and_set(volatile atomic_flag* Flag) noexcept; +inline bool atomic_flag_test_and_set(atomic_flag* Flag) noexcept; ``` ### Parameters diff --git a/docs/standard-library/basic-string-class.md b/docs/standard-library/basic-string-class.md index 5bb4754fac5..a107e680cef 100644 --- a/docs/standard-library/basic-string-class.md +++ b/docs/standard-library/basic-string-class.md @@ -4201,7 +4201,7 @@ Specifies a new size for a string, appending or erasing elements as required. ```cpp void resize( - size_type count,); + size_type count); void resize( size_type count, diff --git a/docs/standard-library/codecvt-class.md b/docs/standard-library/codecvt-class.md index 72eeb2d1cb4..43d007c8bbd 100644 --- a/docs/standard-library/codecvt-class.md +++ b/docs/standard-library/codecvt-class.md @@ -4,7 +4,6 @@ description: "describes the Microsoft C runtime `codecvt` class API" ms.date: "11/09/2020" f1_keywords: ["xlocale/std::codecvt", "xlocale/std::codecvt::extern_type", "xlocale/std::codecvt::intern_type", "xlocale/std::codecvt::state_type", "xlocale/std::codecvt::always_noconv", "xlocale/std::codecvt::do_always_noconv", "xlocale/std::codecvt::do_encoding", "xlocale/std::codecvt::do_in", "xlocale/std::codecvt::do_length", "xlocale/std::codecvt::do_max_length", "xlocale/std::codecvt::do_out", "xlocale/std::codecvt::do_unshift", "xlocale/std::codecvt::encoding", "xlocale/std::codecvt::in", "xlocale/std::codecvt::length", "xlocale/std::codecvt::max_length", "xlocale/std::codecvt::out", "xlocale/std::codecvt::unshift"] helpviewer_keywords: ["std::codecvt [C++]", "std::codecvt [C++], extern_type", "std::codecvt [C++], intern_type", "std::codecvt [C++], state_type", "std::codecvt [C++], always_noconv", "std::codecvt [C++], do_always_noconv", "std::codecvt [C++], do_encoding", "std::codecvt [C++], do_in", "std::codecvt [C++], do_length", "std::codecvt [C++], do_max_length", "std::codecvt [C++], do_out", "std::codecvt [C++], do_unshift", "std::codecvt [C++], encoding", "std::codecvt [C++], in", "std::codecvt [C++], length", "std::codecvt [C++], max_length", "std::codecvt [C++], out", "std::codecvt [C++], unshift"] -ms.assetid: 37d3efa1-2b7f-42b6-b04f-7a972c8c2c86 --- # `codecvt` Class @@ -228,7 +227,7 @@ virtual result do_in( const Byte*& next1, CharType* first2, CharType* last2, - CharType*& next2,) const; + CharType*& next2) const; ``` ### Parameters @@ -517,7 +516,7 @@ result in( const Byte*& next1, CharType* first2, CharType* last2, - CharType*& next2,) const; + CharType*& next2) const; ``` ### Parameters diff --git a/docs/standard-library/deque-functions.md b/docs/standard-library/deque-functions.md index db96fab9930..ed6244dc98f 100644 --- a/docs/standard-library/deque-functions.md +++ b/docs/standard-library/deque-functions.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: functions" title: " functions" +description: "Learn more about: functions" ms.date: "11/04/2016" f1_keywords: ["deque/std::swap"] -ms.assetid: 1d14be53-b0b7-4f66-90cc-65bdeac563fd --- # `` functions @@ -14,7 +13,7 @@ Exchanges the elements of two deques. ```cpp void swap( deque& left, - deque& right,); + deque& right); ``` ### Parameters diff --git a/docs/standard-library/insert-iterator-class.md b/docs/standard-library/insert-iterator-class.md index 73196c26377..6932e17a30f 100644 --- a/docs/standard-library/insert-iterator-class.md +++ b/docs/standard-library/insert-iterator-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: insert_iterator Class" title: "insert_iterator Class" +description: "Learn more about: insert_iterator Class" ms.date: 06/15/2022 f1_keywords: ["iterator/std::insert_iterator", "iterator/std::insert_iterator::container_type", "iterator/std::insert_iterator::reference"] helpviewer_keywords: ["std::insert_iterator [C++]", "std::insert_iterator [C++], container_type", "std::insert_iterator [C++], reference"] -ms.assetid: d5d86405-872e-4e3b-9e68-c69a2b7e8221 ms.custom: devdivchpfy22 --- @@ -293,7 +292,7 @@ Inserts a value into the container and returns the iterator updated to point to ```cpp insert_iterator& operator=( - typename Container::const_reference val,); + typename Container::const_reference val); insert_iterator& operator=( typename Container::value_type&& val); diff --git a/docs/standard-library/queue-operators.md b/docs/standard-library/queue-operators.md index 51f688e8766..9f4929c4a97 100644 --- a/docs/standard-library/queue-operators.md +++ b/docs/standard-library/queue-operators.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: operators" title: " operators" +description: "Learn more about: operators" ms.date: "11/04/2016" f1_keywords: ["queue/std::operator!=", "queue/std::operator>", "queue/std::operator>=", "queue/std::operator<", "queue/std::operator<=", "queue/std::operator=="] -ms.assetid: 7c435b48-175c-45b0-88eb-24561044019c helpviewer_keywords: ["std::operator!= (queue)", "std::operator> (queue)", "std::operator>= (queue)", "std::operator< (queue)", "std::operator<= (queue)", "std::operator== (queue)"] --- # `` operators @@ -13,7 +12,7 @@ helpviewer_keywords: ["std::operator!= (queue)", "std::operator> (queue)", "std: Tests if the queue object on the left side of the operator is not equal to the queue object on the right side. ```cpp -bool operator!=(const queue & left, const queue & right,); +bool operator!=(const queue & left, const queue & right); ``` ### Parameters @@ -80,7 +79,7 @@ The queues q1 and q3 are equal. Tests if the queue object on the left side of the operator is less than the queue object on the right side. ```cpp -bool operator<(const queue & left, const queue & right,); +bool operator<(const queue & left, const queue & right); ``` ### Parameters @@ -143,7 +142,7 @@ The queue q1 is not less than the queue q3. Tests if the queue object on the left side of the operator is less than or equal to the queue object on the right side. ```cpp -bool operator<=(const queue & left, const queue & right,); +bool operator<=(const queue & left, const queue & right); ``` ### Parameters @@ -208,7 +207,7 @@ The queue q1 is less than or equal to the queue q3. Tests if the queue object on the left side of the operator is equal to queue object on the right side. ```cpp -bool operator==(const queue & left, const queue & right,); +bool operator==(const queue & left, const queue & right); ``` ### Parameters @@ -274,7 +273,7 @@ The queues q1 and q3 are equal. Tests if the queue object on the left side of the operator is greater than the queue object on the right side. ```cpp -bool operator>(const queue & left, const queue & right,); +bool operator>(const queue & left, const queue & right); ``` ### Parameters @@ -340,7 +339,7 @@ The queue q1 is greater than the queue q3. Tests if the queue object on the left side of the operator is greater than or equal to the queue object on the right side. ```cpp -bool operator>=(const queue & left, const queue & right,); +bool operator>=(const queue & left, const queue & right); ``` ### Parameters diff --git a/docs/standard-library/stack-operators.md b/docs/standard-library/stack-operators.md index a8b308ae8a7..9722dbc4eac 100644 --- a/docs/standard-library/stack-operators.md +++ b/docs/standard-library/stack-operators.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: operators" title: " operators" +description: "Learn more about: operators" ms.date: "11/04/2016" f1_keywords: ["stack/std::operator!=", "stack/std::operator>", "stack/std::operator>=", "stack/std::operator<", "stack/std::operator<=", "stack/std::operator=="] -ms.assetid: 9c1fc282-2f61-4727-9e80-84ea5d4934a2 helpviewer_keywords: ["std::operator!= (stack)", "std::operator> (stack)", "std::operator>= (stack)", "std::operator< (stack)", "std::operator<= (stack)", "std::operator== (stack)"] --- # `` operators @@ -13,7 +12,7 @@ helpviewer_keywords: ["std::operator!= (stack)", "std::operator> (stack)", "std: Tests if the stack object on the left side of the operator is not equal to stack object on the right side. ```cpp -bool operator!=(const stack & left, const stack & right,); +bool operator!=(const stack & left, const stack & right); ``` ### Parameters From e23ed973651b143865dc16d064fcf830030befe0 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 11 Feb 2025 10:53:53 -0800 Subject: [PATCH 0113/2255] typo --- docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 860b09c8ca4..8761ce1298d 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 @@ -33,7 +33,7 @@ A quick highlight of some of the new features: - **C++ language enhancements** - Try out C++23 preview features by setting the C++ Language Standard to `/std:c++23preview`. This setting enables the latest C++23 features and bug fixes. For more information, see [/std (Specify Language Standard Version)](../build/reference/std-specify-language-standard-version.md#stdc23preview). - - Support add for C++23’s `size_t` literal suffix which helps avoid truncations or signed comparison mismatches--especially when writing loops. For example: + - Support for C++23’s `size_t` literal suffix which helps avoid truncations or signed comparison mismatches--especially when writing loops. For example: ```cpp // Infinite loop if v.size > max unsigned int for (auto i = 0u; i < v.size(); ++i) From 60879657aaf240b04be2c3e76b92f02dd77340d7 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 11 Feb 2025 10:54:55 -0800 Subject: [PATCH 0114/2255] comma --- docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 8761ce1298d..8243c6bf02f 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 @@ -33,7 +33,7 @@ A quick highlight of some of the new features: - **C++ language enhancements** - Try out C++23 preview features by setting the C++ Language Standard to `/std:c++23preview`. This setting enables the latest C++23 features and bug fixes. For more information, see [/std (Specify Language Standard Version)](../build/reference/std-specify-language-standard-version.md#stdc23preview). - - Support for C++23’s `size_t` literal suffix which helps avoid truncations or signed comparison mismatches--especially when writing loops. For example: + - Support for C++23’s `size_t` literal suffix, which helps avoid truncations or signed comparison mismatches--especially when writing loops. For example: ```cpp // Infinite loop if v.size > max unsigned int for (auto i = 0u; i < v.size(); ++i) From d5644bdf13caa13d4dbe655d8d2b4c23bf936208 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 11 Feb 2025 11:01:54 -0800 Subject: [PATCH 0115/2255] add a more info link --- docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md | 2 ++ 1 file changed, 2 insertions(+) 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 8243c6bf02f..694bc1922e1 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 @@ -112,6 +112,8 @@ A quick highlight of some of the new features: GitHub Copilot is displaying a summary of the changes it made, such as 1. Create a new subclass range_breakpoint in include/libsdb/breakpoint.hpp" and 2. Implement the range_breakpoint class in src/breakpoint.cpp. An option to accept the changes is displayed. :::image-end::: + For more information, see [Iterate across multiple files more efficiently with GitHub Copilot Edits](https://devblogs.microsoft.com/visualstudio/iterate-across-multiple-files-more-efficiently-with-github-copilot-edits-preview/). + - **CMake** - Now supports CMake Presets v9. New macro expansions in a preset's include field. For more information, see [Macro expansion](https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html#macro-expansion) in the official CMake documentation. From bd83875d495c33c8cdd8d3c11f6bfeba65ede6ce Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 11 Feb 2025 11:18:29 -0800 Subject: [PATCH 0116/2255] fix link --- docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 694bc1922e1..1f4d4992e3f 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 @@ -25,7 +25,8 @@ Visual Studio 2022 brings many updates and fixes to the Microsoft C++ compiler a | What's new for C++ developers | [What's New for C++ Developers in Visual Studio 2022 17.13](https://devblogs.microsoft.com/cppblog/whats-new-for-c-developers-in-visual-studio-2022-17-13/) | | Standard Library (STL) merged C++26 and C++23 features, LWG issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.13](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-1713) | | New features in the IDE |[Visual Studio 2022 version 17.13 Release Notes](/visualstudio/releases/2022/release-notes) | -| C++ language updates | [MSVC Compiler updates in Visual Studio 2022 17.13](https://devblogs.microsoft.com/cppblog/msvc-compiler-language-updates-in-visual-studio-2022-version-17-13/) | +| C++ language updates | [MSVC compiler updates in Visual Studio 2022 17.13](https://devblogs.microsoft.com/cppblog/msvc-compiler-updates-in-visual-studio-2022-version-17-13/) + | | C++ language conformance improvements | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022 17.13](cpp-conformance-improvements.md#improvements_1713) | A quick highlight of some of the new features: From 8854eee224bf457f920c42e4b3223cb91c884f54 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Tue, 11 Feb 2025 11:53:44 -0800 Subject: [PATCH 0117/2255] Learn Editor: Update c26132.md --- docs/code-quality/c26132.md | 15 +++++++++++++++ docs/code-quality/toc.yml | 3 +++ 2 files changed, 18 insertions(+) create mode 100644 docs/code-quality/c26132.md diff --git a/docs/code-quality/c26132.md b/docs/code-quality/c26132.md new file mode 100644 index 00000000000..5f452351b83 --- /dev/null +++ b/docs/code-quality/c26132.md @@ -0,0 +1,15 @@ +--- +# Required metadata +# For more information, see https://review.learn.microsoft.com/en-us/help/platform/learn-editor-add-metadata?branch=main +# For valid values of ms.service, ms.prod, and ms.topic, see https://review.learn.microsoft.com/en-us/help/platform/metadata-taxonomies?branch=main + +title: # Add a title for the browser tab +description: # Add a meaningful description for search results +author: Rastaban # GitHub alias +ms.author: philc # Microsoft alias +ms.service: # Add the ms.service or ms.prod value +# ms.prod: # To use ms.prod, uncomment it and delete ms.service +ms.topic: # Add the ms.topic value +ms.date: 02/11/2025 +--- +Warning C26132 \ No newline at end of file diff --git a/docs/code-quality/toc.yml b/docs/code-quality/toc.yml index b22549c06f7..015c145a85c 100644 --- a/docs/code-quality/toc.yml +++ b/docs/code-quality/toc.yml @@ -591,6 +591,9 @@ items: href: ../code-quality/c26117.md - name: Warning C26130 href: ../code-quality/c26130.md + - name: Warning C26132 + href: c26132.md + displayName: C26132 - name: Warning C26135 href: ../code-quality/c26135.md - name: Warning C26138 From 10e9567bd3c2c6b732d9916b2dfb8276652e6b83 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Tue, 11 Feb 2025 12:28:05 -0800 Subject: [PATCH 0118/2255] Learn Editor: Update c26132.md --- docs/code-quality/c26132.md | 63 ++++++++++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/docs/code-quality/c26132.md b/docs/code-quality/c26132.md index 5f452351b83..db0a47e07c1 100644 --- a/docs/code-quality/c26132.md +++ b/docs/code-quality/c26132.md @@ -12,4 +12,65 @@ ms.service: # Add the ms.service or ms.prod value ms.topic: # Add the ms.topic value ms.date: 02/11/2025 --- -Warning C26132 \ No newline at end of file +# Warning C26132 + +> Variable '*variable name*' should be protected by '*lock 1*', but '*lock 2*' is held instead. Possible annotation mismatch. + +Warning C26132 is issued when the analyzer detects that the lock that is annotated to protect a value is not held when the value is accessed. However, another lock that appears to be related is held. It is possible the code is thread safe, and the annotations need to be updated. + +## Examples + +In the following example, C26132 is emitted when `data` is used. + +> warning C26132: Variable 'data' should be protected by 'customLock01', but '(&customLock01)->cs' is held instead. Possible annotation mismatch. + + The variable `data` is annotated to be protected by `customLock01`, but the locking function `CustomLockAcquire` is annotated to acquire the related lock `customLock01->cs`. + +```cpp +#include +struct CustomLock { + int cs; // "Critical Section" lock +}; + +_Acquires_exclusive_lock_(criticalSection->cs) // notice the `->` indirection +void CustomLockAcquire(CustomLock* criticalSection); + +_Releases_lock_(criticalSection->cs) // notice the `->` indirection +void CustomLockRelease(CustomLock* criticalSection); + +// global lock +CustomLock customLock01; + +void Initialize(_Guarded_by_(customLock01) int* data) +{ + CustomLockAcquire(&customLock01); + *data = 1; // C26132 + CustomLockRelease(&customLock01); +} +``` + +In this example the `Initialize` function is thread safe and behaves as designed, but that design is not correctly reflected in the concurrency SAL annotations. This is fixed by adjusting the annotations on the custom locking functions to use `criticalSection` rather than `criticalSection->cs`. This could also be fixed by changing the `_Guarded_by_` annotation from `customLock01` to `customLock01.cs`. + +```cpp +#include +struct CustomLock { + int cs; // "Critical Section" lock +}; + +_Acquires_exclusive_lock_(criticalSection) +void CustomLockAcquire(CustomLock* criticalSection); + +_Releases_lock_(criticalSection) +void CustomLockRelease(CustomLock* criticalSection); + +// global lock +CustomLock customLock01; + +void Initialize(_Guarded_by_(customLock01) int* data) +{ + CustomLockAcquire(&customLock01); + *data = 1; + CustomLockRelease(&customLock01); +} +``` + From 45df304bf9365d38eeff826c2257e0903225f85e Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Tue, 11 Feb 2025 12:28:14 -0800 Subject: [PATCH 0119/2255] update Metadata --- docs/code-quality/c26132.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/docs/code-quality/c26132.md b/docs/code-quality/c26132.md index db0a47e07c1..9baac40db65 100644 --- a/docs/code-quality/c26132.md +++ b/docs/code-quality/c26132.md @@ -3,13 +3,12 @@ # For more information, see https://review.learn.microsoft.com/en-us/help/platform/learn-editor-add-metadata?branch=main # For valid values of ms.service, ms.prod, and ms.topic, see https://review.learn.microsoft.com/en-us/help/platform/metadata-taxonomies?branch=main -title: # Add a title for the browser tab -description: # Add a meaningful description for search results +title: Warning C26132 +description: Documentation on static analysis warning C26132 author: Rastaban # GitHub alias ms.author: philc # Microsoft alias -ms.service: # Add the ms.service or ms.prod value -# ms.prod: # To use ms.prod, uncomment it and delete ms.service -ms.topic: # Add the ms.topic value +ms.service: visual-cpp +ms.topic: article ms.date: 02/11/2025 --- # Warning C26132 From 304b8cb5068b876f0ecc88fb1ded7b77ad3bbc75 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Tue, 11 Feb 2025 12:31:52 -0800 Subject: [PATCH 0120/2255] Learn Editor: Update c26133.md --- docs/code-quality/c26133.md | 15 +++++++++++++++ docs/code-quality/toc.yml | 3 +++ 2 files changed, 18 insertions(+) create mode 100644 docs/code-quality/c26133.md diff --git a/docs/code-quality/c26133.md b/docs/code-quality/c26133.md new file mode 100644 index 00000000000..a924afd7f29 --- /dev/null +++ b/docs/code-quality/c26133.md @@ -0,0 +1,15 @@ +--- +# Required metadata +# For more information, see https://review.learn.microsoft.com/en-us/help/platform/learn-editor-add-metadata?branch=main +# For valid values of ms.service, ms.prod, and ms.topic, see https://review.learn.microsoft.com/en-us/help/platform/metadata-taxonomies?branch=main + +title: # Add a title for the browser tab +description: # Add a meaningful description for search results +author: Rastaban # GitHub alias +ms.author: philc # Microsoft alias +ms.service: # Add the ms.service or ms.prod value +# ms.prod: # To use ms.prod, uncomment it and delete ms.service +ms.topic: # Add the ms.topic value +ms.date: 02/11/2025 +--- +Warning C26133 \ No newline at end of file diff --git a/docs/code-quality/toc.yml b/docs/code-quality/toc.yml index 015c145a85c..823bf4e3a75 100644 --- a/docs/code-quality/toc.yml +++ b/docs/code-quality/toc.yml @@ -594,6 +594,9 @@ items: - name: Warning C26132 href: c26132.md displayName: C26132 + - name: Warning C26133 + href: c26133.md + displayName: C26133 - name: Warning C26135 href: ../code-quality/c26135.md - name: Warning C26138 From c1896596f8a146e720e704deb8459b817753f967 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 12 Feb 2025 05:10:56 +0800 Subject: [PATCH 0121/2255] Clean up superfluous semicolons (#5181) --- docs/standard-library/ctype-class.md | 5 ++--- docs/standard-library/raw-storage-iterator-class.md | 7 +++---- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/docs/standard-library/ctype-class.md b/docs/standard-library/ctype-class.md index 3a43c74acff..6e162612ccb 100644 --- a/docs/standard-library/ctype-class.md +++ b/docs/standard-library/ctype-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: ctype Class" title: "ctype Class" +description: "Learn more about: ctype Class" ms.date: "11/04/2016" f1_keywords: ["xlocale/std::ctype", "xlocale/std::ctype::char_type", "xlocale/std::ctype::do_is", "xlocale/std::ctype::do_narrow", "xlocale/std::ctype::do_scan_is", "xlocale/std::ctype::do_scan_not", "xlocale/std::ctype::do_tolower", "xlocale/std::ctype::do_toupper", "xlocale/std::ctype::do_widen", "xlocale/std::ctype::is", "xlocale/std::ctype::narrow", "xlocale/std::ctype::scan_is", "xlocale/std::ctype::scan_not", "xlocale/std::ctype::tolower", "xlocale/std::ctype::toupper", "xlocale/std::ctype::widen"] helpviewer_keywords: ["std::ctype [C++]", "std::ctype [C++], char_type", "std::ctype [C++], do_is", "std::ctype [C++], do_narrow", "std::ctype [C++], do_scan_is", "std::ctype [C++], do_scan_not", "std::ctype [C++], do_tolower", "std::ctype [C++], do_toupper", "std::ctype [C++], do_widen", "std::ctype [C++], is", "std::ctype [C++], narrow", "std::ctype [C++], scan_is", "std::ctype [C++], scan_not", "std::ctype [C++], tolower", "std::ctype [C++], toupper", "std::ctype [C++], widen"] -ms.assetid: 3627154c-49d9-47b5-b28f-5bbedee38e3b --- # ctype Class @@ -466,7 +465,7 @@ int main() { cout << string[i] << ": " << (maskarray[i] & ctype_base::alpha "alpha" : "not alpha") - << endl;; + << endl; }; } ``` diff --git a/docs/standard-library/raw-storage-iterator-class.md b/docs/standard-library/raw-storage-iterator-class.md index 3e8ce704732..85424ab6e0b 100644 --- a/docs/standard-library/raw-storage-iterator-class.md +++ b/docs/standard-library/raw-storage-iterator-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: raw_storage_iterator Class" title: "raw_storage_iterator Class" +description: "Learn more about: raw_storage_iterator Class" ms.date: 06/17/2022 f1_keywords: ["memory/std::raw_storage_iterator", "memory/std::raw_storage_iterator::element_type", "memory/std::raw_storage_iterator::iter_type"] helpviewer_keywords: ["std::raw_storage_iterator [C++]", "std::raw_storage_iterator [C++], element_type", "std::raw_storage_iterator [C++], iter_type"] -ms.assetid: 6f033f15-f48e-452a-a326-647ea2cf346f ms.custom: devdivchpfy22 --- # raw_storage_iterator Class @@ -264,7 +263,7 @@ int main( void ) *it = 2 * i; }; - for ( int i = 0; i < 5; i++ ) cout << "array " << i << " = " << pInt[i] << endl;; + for ( int i = 0; i < 5; i++ ) cout << "array " << i << " = " << pInt[i] << endl; delete[] pInt; } @@ -335,7 +334,7 @@ int main( void ) std::copy( l.begin( ), l.end( ), pInt ); // C4996 for (unsigned int i = 0; i < l.size( ); i++) - cout << "array " << i << " = " << pInt[i].x << endl;; + cout << "array " << i << " = " << pInt[i].x << endl; memset (pInt, 0, sizeof(Int)*l.size( )); // hack: make sure bIsConstructed is false From a09989541da1dc5543e2f111e5a9119cb098f6d2 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 12 Feb 2025 05:11:39 +0800 Subject: [PATCH 0122/2255] Fix "the" typos (#5179) --- docs/build/vscpp-step-2-build.md | 2 +- docs/mfc/reference/cd2dpathgeometry-class.md | 5 ++--- docs/mfc/reference/cmfcribbonbaseelement-class.md | 7 +++---- docs/overview/what-s-new-for-cpp-2017.md | 2 +- 4 files changed, 7 insertions(+), 9 deletions(-) diff --git a/docs/build/vscpp-step-2-build.md b/docs/build/vscpp-step-2-build.md index d2ce5e0b517..e708ea80e02 100644 --- a/docs/build/vscpp-step-2-build.md +++ b/docs/build/vscpp-step-2-build.md @@ -88,7 +88,7 @@ If red squiggles appear under anything in the source code editor, the build may ::: moniker range="
CD2DPathGeometry::GetFigureCount -Retrieves tthe number of figures in the path geometry. +Retrieves the number of figures in the path geometry. ``` int GetFigureCount() const; diff --git a/docs/mfc/reference/cmfcribbonbaseelement-class.md b/docs/mfc/reference/cmfcribbonbaseelement-class.md index 27c7ee698a3..7f320909b9d 100644 --- a/docs/mfc/reference/cmfcribbonbaseelement-class.md +++ b/docs/mfc/reference/cmfcribbonbaseelement-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: CMFCRibbonBaseElement Class" title: "CMFCRibbonBaseElement Class" +description: "Learn more about: CMFCRibbonBaseElement Class" ms.date: "11/04/2016" f1_keywords: ["CMFCRibbonBaseElement", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::AddToKeyList", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::AddToListBox", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::CanBeAddedToQuickAccessToolBar", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::CanBeCompacted", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::CanBeStretched", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::CanBeStretchedHorizontally", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::CleanUpSizes", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::ClosePopupMenu", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::CopyFrom", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::DestroyCtrl", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::DrawImage", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::Find", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::FindByData", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::FindByID", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::FindByOriginal", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetCompactSize", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetData", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetDescription", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetDroppedDown", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetElements", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetElementsByID", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetHighlighted", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetID", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetImageSize", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetIntermediateSize", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetKeys", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetKeyTipRect", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetKeyTipSize", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetLocationInGroup", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetMenuKeys", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetNotifyID", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetOriginal", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetParentCategory", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetParentPanel", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetParentRibbonBar", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetParentWnd", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetPressed", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetQuickAccessToolBarID", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetRect", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetRegularSize", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetSize", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetText", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetToolTipText", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::GetTopLevelRibbonBar", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::HasCompactMode", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::HasFocus", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::HasIntermediateMode", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::HasLargeMode", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::HasMenu", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::HitTest", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsAlignByColumn", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsAlwaysLargeImage", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsAutoRepeatMode", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsChecked", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsCompactMode", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsDefaultMenuLook", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsDisabled", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsDroppedDown", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsFocused", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsGalleryIcon", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsHighlighted", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsIntermediateMode", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsLargeMode", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsMenuMode", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsPressed", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsQATMode", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsSeparator", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsShowGroupBorder", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsShowTooltipOnBottom", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsTabStop", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsTextAlwaysOnRight", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsVisible", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::IsWholeRowHeight", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::NotifyCommand", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::NotifyHighlightListItem", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::OnAddToQAToolbar", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::OnAfterChangeRect", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::OnAutoRepeat", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::OnCalcTextSize", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::OnChangeMenuHighlight", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::OnDraw", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::OnDrawKeyTip", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::OnDrawMenuImage", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::OnDrawOnList", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::OnKey", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::OnMenuKey", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::OnRTLChanged", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::OnShow", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::OnShowPopupMenu", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::PostMenuCommand", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::Redraw", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetACCData", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetCompactMode", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetData", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetDefaultMenuLook", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetDescription", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetID", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetInitialMode", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetKeys", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetOriginal", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetParentCategory", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetParentMenu", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetParentRibbonBar", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetRect", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetText", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetTextAlwaysOnRight", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetToolTipText", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::SetVisible", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::StretchHorizontally", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::StretchToWholeRow", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::UpdateTooltipInfo", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::OnProcessKey", "AFXBASERIBBONELEMENT/CMFCRibbonBaseElement::OnSetFocus"] helpviewer_keywords: ["CMFCRibbonBaseElement [MFC], AddToKeyList", "CMFCRibbonBaseElement [MFC], AddToListBox", "CMFCRibbonBaseElement [MFC], CanBeAddedToQuickAccessToolBar", "CMFCRibbonBaseElement [MFC], CanBeCompacted", "CMFCRibbonBaseElement [MFC], CanBeStretched", "CMFCRibbonBaseElement [MFC], CanBeStretchedHorizontally", "CMFCRibbonBaseElement [MFC], CleanUpSizes", "CMFCRibbonBaseElement [MFC], ClosePopupMenu", "CMFCRibbonBaseElement [MFC], CopyFrom", "CMFCRibbonBaseElement [MFC], DestroyCtrl", "CMFCRibbonBaseElement [MFC], DrawImage", "CMFCRibbonBaseElement [MFC], Find", "CMFCRibbonBaseElement [MFC], FindByData", "CMFCRibbonBaseElement [MFC], FindByID", "CMFCRibbonBaseElement [MFC], FindByOriginal", "CMFCRibbonBaseElement [MFC], GetCompactSize", "CMFCRibbonBaseElement [MFC], GetData", "CMFCRibbonBaseElement [MFC], GetDescription", "CMFCRibbonBaseElement [MFC], GetDroppedDown", "CMFCRibbonBaseElement [MFC], GetElements", "CMFCRibbonBaseElement [MFC], GetElementsByID", "CMFCRibbonBaseElement [MFC], GetHighlighted", "CMFCRibbonBaseElement [MFC], GetID", "CMFCRibbonBaseElement [MFC], GetImageSize", "CMFCRibbonBaseElement [MFC], GetIntermediateSize", "CMFCRibbonBaseElement [MFC], GetKeys", "CMFCRibbonBaseElement [MFC], GetKeyTipRect", "CMFCRibbonBaseElement [MFC], GetKeyTipSize", "CMFCRibbonBaseElement [MFC], GetLocationInGroup", "CMFCRibbonBaseElement [MFC], GetMenuKeys", "CMFCRibbonBaseElement [MFC], GetNotifyID", "CMFCRibbonBaseElement [MFC], GetOriginal", "CMFCRibbonBaseElement [MFC], GetParentCategory", "CMFCRibbonBaseElement [MFC], GetParentPanel", "CMFCRibbonBaseElement [MFC], GetParentRibbonBar", "CMFCRibbonBaseElement [MFC], GetParentWnd", "CMFCRibbonBaseElement [MFC], GetPressed", "CMFCRibbonBaseElement [MFC], GetQuickAccessToolBarID", "CMFCRibbonBaseElement [MFC], GetRect", "CMFCRibbonBaseElement [MFC], GetRegularSize", "CMFCRibbonBaseElement [MFC], GetSize", "CMFCRibbonBaseElement [MFC], GetText", "CMFCRibbonBaseElement [MFC], GetToolTipText", "CMFCRibbonBaseElement [MFC], GetTopLevelRibbonBar", "CMFCRibbonBaseElement [MFC], HasCompactMode", "CMFCRibbonBaseElement [MFC], HasFocus", "CMFCRibbonBaseElement [MFC], HasIntermediateMode", "CMFCRibbonBaseElement [MFC], HasLargeMode", "CMFCRibbonBaseElement [MFC], HasMenu", "CMFCRibbonBaseElement [MFC], HitTest", "CMFCRibbonBaseElement [MFC], IsAlignByColumn", "CMFCRibbonBaseElement [MFC], IsAlwaysLargeImage", "CMFCRibbonBaseElement [MFC], IsAutoRepeatMode", "CMFCRibbonBaseElement [MFC], IsChecked", "CMFCRibbonBaseElement [MFC], IsCompactMode", "CMFCRibbonBaseElement [MFC], IsDefaultMenuLook", "CMFCRibbonBaseElement [MFC], IsDisabled", "CMFCRibbonBaseElement [MFC], IsDroppedDown", "CMFCRibbonBaseElement [MFC], IsFocused", "CMFCRibbonBaseElement [MFC], IsGalleryIcon", "CMFCRibbonBaseElement [MFC], IsHighlighted", "CMFCRibbonBaseElement [MFC], IsIntermediateMode", "CMFCRibbonBaseElement [MFC], IsLargeMode", "CMFCRibbonBaseElement [MFC], IsMenuMode", "CMFCRibbonBaseElement [MFC], IsPressed", "CMFCRibbonBaseElement [MFC], IsQATMode", "CMFCRibbonBaseElement [MFC], IsSeparator", "CMFCRibbonBaseElement [MFC], IsShowGroupBorder", "CMFCRibbonBaseElement [MFC], IsShowTooltipOnBottom", "CMFCRibbonBaseElement [MFC], IsTabStop", "CMFCRibbonBaseElement [MFC], IsTextAlwaysOnRight", "CMFCRibbonBaseElement [MFC], IsVisible", "CMFCRibbonBaseElement [MFC], IsWholeRowHeight", "CMFCRibbonBaseElement [MFC], NotifyCommand", "CMFCRibbonBaseElement [MFC], NotifyHighlightListItem", "CMFCRibbonBaseElement [MFC], OnAddToQAToolbar", "CMFCRibbonBaseElement [MFC], OnAfterChangeRect", "CMFCRibbonBaseElement [MFC], OnAutoRepeat", "CMFCRibbonBaseElement [MFC], OnCalcTextSize", "CMFCRibbonBaseElement [MFC], OnChangeMenuHighlight", "CMFCRibbonBaseElement [MFC], OnDraw", "CMFCRibbonBaseElement [MFC], OnDrawKeyTip", "CMFCRibbonBaseElement [MFC], OnDrawMenuImage", "CMFCRibbonBaseElement [MFC], OnDrawOnList", "CMFCRibbonBaseElement [MFC], OnKey", "CMFCRibbonBaseElement [MFC], OnMenuKey", "CMFCRibbonBaseElement [MFC], OnRTLChanged", "CMFCRibbonBaseElement [MFC], OnShow", "CMFCRibbonBaseElement [MFC], OnShowPopupMenu", "CMFCRibbonBaseElement [MFC], PostMenuCommand", "CMFCRibbonBaseElement [MFC], Redraw", "CMFCRibbonBaseElement [MFC], SetACCData", "CMFCRibbonBaseElement [MFC], SetCompactMode", "CMFCRibbonBaseElement [MFC], SetData", "CMFCRibbonBaseElement [MFC], SetDefaultMenuLook", "CMFCRibbonBaseElement [MFC], SetDescription", "CMFCRibbonBaseElement [MFC], SetID", "CMFCRibbonBaseElement [MFC], SetInitialMode", "CMFCRibbonBaseElement [MFC], SetKeys", "CMFCRibbonBaseElement [MFC], SetOriginal", "CMFCRibbonBaseElement [MFC], SetParentCategory", "CMFCRibbonBaseElement [MFC], SetParentMenu", "CMFCRibbonBaseElement [MFC], SetParentRibbonBar", "CMFCRibbonBaseElement [MFC], SetRect", "CMFCRibbonBaseElement [MFC], SetText", "CMFCRibbonBaseElement [MFC], SetTextAlwaysOnRight", "CMFCRibbonBaseElement [MFC], SetToolTipText", "CMFCRibbonBaseElement [MFC], SetVisible", "CMFCRibbonBaseElement [MFC], StretchHorizontally", "CMFCRibbonBaseElement [MFC], StretchToWholeRow", "CMFCRibbonBaseElement [MFC], UpdateTooltipInfo", "CMFCRibbonBaseElement [MFC], OnProcessKey", "CMFCRibbonBaseElement [MFC], OnSetFocus"] -ms.assetid: 419ea91b-5062-44cc-b0a3-f87d29566f62 --- # CMFCRibbonBaseElement Class @@ -131,7 +130,7 @@ class CMFCRibbonBaseElement : public CObject |[CMFCRibbonBaseElement::SetParentCategory](#setparentcategory)|Sets the parent category for the ribbon element.| |[CMFCRibbonBaseElement::SetParentMenu](#setparentmenu)|Sets the parent menu container for the ribbon element.| |[CMFCRibbonBaseElement::SetParentRibbonBar](#setparentribbonbar)|Sets the parent ribbon bar for the ribbon element.| -|[CMFCRibbonBaseElement::SetRect](#setrect)|Sets the dimensions fot he display rectangle for the ribbon element.| +|[CMFCRibbonBaseElement::SetRect](#setrect)|Sets the dimensions of the display rectangle for the ribbon element.| |[CMFCRibbonBaseElement::SetText](#settext)|Sets the text for the ribbon element.| |[CMFCRibbonBaseElement::SetTextAlwaysOnRight](#settextalwaysonright)|Sets the text for the ribbon element to display on the right.| |[CMFCRibbonBaseElement::SetToolTipText](#settooltiptext)|Sets the tooltip text for the ribbon element.| @@ -2042,5 +2041,5 @@ TRUE if the ribbon element is focused; otherwise FALSE. ## See also -[Hierarchy Chart](../../mfc/hierarchy-chart.md)
+[Hierarchy Chart](../../mfc/hierarchy-chart.md)\ [Classes](../../mfc/reference/mfc-classes.md) diff --git a/docs/overview/what-s-new-for-cpp-2017.md b/docs/overview/what-s-new-for-cpp-2017.md index d6cf9b9e02b..ada04edf007 100644 --- a/docs/overview/what-s-new-for-cpp-2017.md +++ b/docs/overview/what-s-new-for-cpp-2017.md @@ -420,7 +420,7 @@ The Clang/C2 toolset that ships with Visual Studio 2017 now supports the **`/big The C++ Core Checkers for enforcing the [C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines) are now distributed with Visual Studio. Enable the checkers in the **Code Analysis Extensions** page in the project's property pages. The extensions are then included when you run code analysis. For more information, see [Using the C++ Core Guidelines checkers](../code-quality/using-the-cpp-core-guidelines-checkers.md). -![Screenshot of the Property Pages dialog box showing Configuration Properties > Code Analysis > General selected and a number of Core Checks listed in teh Run this rule set section.](media/CppCoreCheck.png "CppCoreCheck properties page") +![Screenshot of the Property Pages dialog box showing Configuration Properties > Code Analysis > General selected and a number of Core Checks listed in the Run this rule set section.](media/CppCoreCheck.png "CppCoreCheck properties page") ##### Visual Studio 2017 version 15.3 From 51ebfe10d56ae8e42c5870cb05214cbc1a9fc608 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Tue, 11 Feb 2025 13:35:33 -0800 Subject: [PATCH 0123/2255] Learn Editor: Update c26133.md --- docs/code-quality/c26133.md | 64 ++++++++++++++++++++++++++++++++++++- 1 file changed, 63 insertions(+), 1 deletion(-) diff --git a/docs/code-quality/c26133.md b/docs/code-quality/c26133.md index a924afd7f29..3c7661b4ab9 100644 --- a/docs/code-quality/c26133.md +++ b/docs/code-quality/c26133.md @@ -12,4 +12,66 @@ ms.service: # Add the ms.service or ms.prod value ms.topic: # Add the ms.topic value ms.date: 02/11/2025 --- -Warning C26133 \ No newline at end of file +# Warning C26133 + +> Caller failing to hold lock '*lock 1*' before calling function '*function name*', but '*lock 2*' is held instead. Possible annotation mismatch. + +Warning C26133is issued when the analyzer detects that the lock that is required to call a function, is not held when the function is called. However, another lock that appears to be related is held. It is possible the code is thread safe, and the annotations need to be updated. + +## Examples + +In the following example, C26133 is emitted when `DoTaskWithCustomLock` is called. + +> warning C26133: Caller failing to hold lock 'customLock01' before calling function 'DoTaskWithCustomLock', but '(&customLock01)->cs' is held instead. Possible annotation mismatch. + +```cpp +#include + +struct CustomLock { + int cs; // "Critical Section" +}; + +_Acquires_exclusive_lock_(criticalSection->cs) // notice the `->` indirection +void CustomLockAcquire(CustomLock* criticalSection); + +_Releases_lock_(criticalSection->cs) // notice the `->` indirection +void CustomLockRelease(CustomLock* criticalSection); + +CustomLock customLock01; + +_Requires_lock_held_(customLock01) void DoTaskWithCustomLock(); + +void DoTask() +{ + CustomLockAcquire(&customLock01); + DoTaskWithCustomLock(); // C26133 + CustomLockRelease(&customLock01); +} +``` + +In this example the `DoTask` function is thread safe and behaves as designed, but that design is not correctly reflected in the concurrency SAL annotations. This is fixed by adjusting the annotations on the custom locking functions to use `criticalSection` rather than `criticalSection->cs`. This could also be fixed by changing the `_Requires_lock_held_` annotation from `customLock01` to `customLock01.cs`. + +```cpp +#include + +struct CustomLock { + int cs; // "Critical Section" +}; + +_Acquires_exclusive_lock_(criticalSection) +void CustomLockAcquire(CustomLock* criticalSection); + +_Releases_lock_(criticalSection) +void CustomLockRelease(CustomLock* criticalSection); + +CustomLock customLock01; + +_Requires_lock_held_(customLock01) void DoTaskWithCustomLock(); + +void DoTask() +{ + CustomLockAcquire(&customLock01); + DoTaskWithCustomLock(); + CustomLockRelease(&customLock01); +} +``` \ No newline at end of file From dd93484b68362aaafc87f9835243ab1d0e45af9e Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Tue, 11 Feb 2025 13:35:41 -0800 Subject: [PATCH 0124/2255] update Metadata --- docs/code-quality/c26133.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/docs/code-quality/c26133.md b/docs/code-quality/c26133.md index 3c7661b4ab9..bdd658d37df 100644 --- a/docs/code-quality/c26133.md +++ b/docs/code-quality/c26133.md @@ -3,13 +3,12 @@ # For more information, see https://review.learn.microsoft.com/en-us/help/platform/learn-editor-add-metadata?branch=main # For valid values of ms.service, ms.prod, and ms.topic, see https://review.learn.microsoft.com/en-us/help/platform/metadata-taxonomies?branch=main -title: # Add a title for the browser tab -description: # Add a meaningful description for search results +title: Warning C26133 +description: Documentation on static analysis warning C26133 author: Rastaban # GitHub alias ms.author: philc # Microsoft alias -ms.service: # Add the ms.service or ms.prod value -# ms.prod: # To use ms.prod, uncomment it and delete ms.service -ms.topic: # Add the ms.topic value +ms.service: visual-cpp +ms.topic: article ms.date: 02/11/2025 --- # Warning C26133 From 8ddf2159d19807e32dc49d4b82a408c8c3b954e7 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 11 Feb 2025 14:25:12 -0800 Subject: [PATCH 0125/2255] update to 11.14 (preview) --- docs/overview/compiler-versions.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/overview/compiler-versions.md b/docs/overview/compiler-versions.md index e35858c1467..d2caee51830 100644 --- a/docs/overview/compiler-versions.md +++ b/docs/overview/compiler-versions.md @@ -1,7 +1,7 @@ --- description: "Learn more about Microsoft Visual C++ compiler versioning." title: "Microsoft Visual C++ compiler versioning (Visual C++)" -ms.date: 02/13/2024 +ms.date: 02/11/2025 ms.service: "visual-cpp" ms.subservice: "tools" helpviewer_keywords: ["Visual C++, platforms supported", "platforms [C++]"] @@ -120,6 +120,10 @@ The following table lists the Visual C++ compiler `_MSC_VER` for each Visual Stu | Visual Studio 2022 version 17.8 | 1938 | | Visual Studio 2022 version 17.9 | 1939 | | Visual Studio 2022 version 17.10 | 1940 | +| Visual Studio 2022 version 17.11 | 1941 | +| Visual Studio 2022 version 17.12 | 1942 | +| Visual Studio 2022 version 17.13 | 1943 | +| Visual Studio 2022 version 17.14 (Preview) | 1944 | a Visual Studio 2019 16.8 and 16.9 share the same major and minor versions (and so have the same value for `_MSC_VER`). To distinguish them, use `_MSC_FULL_VER`. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 16.8 is 192829333. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 16.9 is 192829910. From f43a40da29936a2d5cfe2c9906021339f64f28d3 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 11 Feb 2025 14:36:59 -0800 Subject: [PATCH 0126/2255] acrolinx --- docs/overview/compiler-versions.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/overview/compiler-versions.md b/docs/overview/compiler-versions.md index d2caee51830..4b7fa412b13 100644 --- a/docs/overview/compiler-versions.md +++ b/docs/overview/compiler-versions.md @@ -52,7 +52,7 @@ The macros reflect these values like this: ### Service releases starting with Visual Studio 2017 -Servicing releases can be distinguished by `_MSC_FULL_VER`. The build field (the BBBBB in the MMNNBBBBB version number) typically increases by 1. +Servicing releases are distinguished by `_MSC_FULL_VER`. The build field (the BBBBB in the MMNNBBBBB version number) typically increases by 1. For example, two cases where `_MSC_FULL_VER` is useful is to distinguish Visual Studio 2019 16.8 from 16.9, and Visual Studio 2019 16.10 from 16.11. That's because those versions share the same major and minor versions, and so have the same value for `_MSC_VER`. @@ -71,7 +71,7 @@ R - revision version **[`_MSC_VER`](../preprocessor/predefined-macros.md)** distinguishes between major and minor releases. It has the form: MMNN. -**[`_MSC_FULL_VER`](../preprocessor/predefined-macros.md)** represents the major, minor, and build version of the compiler. It has the form: MMNNBBBBB. Use it to distinguish between different versions of the compiler, including servicing releases. See [Service releases starting with Visual Studio 2017](#service-releases-starting-with-visual-studio-2017) for more information about Visual Studio 2019 16.8, 16.9, 16.10 and 16.11. +**[`_MSC_FULL_VER`](../preprocessor/predefined-macros.md)** represents the major, minor, and build version of the compiler. It has the form: MMNNBBBBB. Use it to distinguish between different versions of the compiler, including servicing releases. For more information about Visual Studio 2019 16.8, 16.9, 16.10 and 16.11, see [Service releases starting with Visual Studio 2017](#service-releases-starting-with-visual-studio-2017). **[`_MSC_BUILD`](../preprocessor/predefined-macros.md)** represents the build version of the compiler. It has the form: R. Use it to distinguish between servicing releases. From b78a34641b4995fbee8527168078a0a318ae1e80 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 11 Feb 2025 16:30:51 -0800 Subject: [PATCH 0127/2255] deemphasize experimental modules --- docs/build/reference/experimental-module.md | 30 ++++++++--- docs/cpp/import-export-module.md | 4 +- docs/cpp/modules-cpp.md | 56 ++++++-------------- docs/cpp/tutorial-import-stl-named-module.md | 4 +- 4 files changed, 40 insertions(+), 54 deletions(-) diff --git a/docs/build/reference/experimental-module.md b/docs/build/reference/experimental-module.md index bd1c16ed79e..7525b47d2a2 100644 --- a/docs/build/reference/experimental-module.md +++ b/docs/build/reference/experimental-module.md @@ -5,9 +5,9 @@ ms.date: 01/27/2022 f1_keywords: ["module", "/experimental:module"] helpviewer_keywords: ["module", "/experimental:module", "Enable module support"] --- -# `/experimental:module` (Enable module support) +# `/experimental:module` (Enable experimental module support) -Enables experimental compiler support for C++ Standard modules. This option is obsolete for C++20 standard modules in Visual Studio version 16.11 and later. It's still required (along with [`/std:c++latest`](std-specify-language-standard-version.md)) for the experimental Standard library modules. +Enables experimental compiler support for C++ Standard modules. This option is obsolete for C++20 standard modules in Visual Studio version 16.11 and later. This switch is only used (along with [`/std:c++latest`](std-specify-language-standard-version.md)) if you are still using the older experimental Standard library modules. We recommend that you use the new Standard Library modules provided by Microsoft without using this switch. ## Syntax @@ -15,20 +15,34 @@ Enables experimental compiler support for C++ Standard modules. This option is o ## Remarks -In versions of Visual Studio before Visual Studio 2019 version 16.11, you can enable experimental modules support by use of the **`/experimental:module`** compiler option along with the [`/std:c++latest`](std-specify-language-standard-version.md) option. In Visual Studio 2019 version 16.11, module support is enabled automatically by either **`/std:c++20`** or **`/std:c++latest`**. Use **`/experimental:module-`** to disable module support explicitly. +In versions of Visual Studio before Visual Studio 2019 version 16.11, you can enable experimental modules support using the **`/experimental:module`** compiler option along with the [`/std:c++latest`](std-specify-language-standard-version.md) option. In Visual Studio 2019 version 16.11, module support is enabled automatically by either **`/std:c++20`** or **`/std:c++latest`**. Use **`/experimental:module-`** to disable experimental module support. -This option is available starting in Visual Studio 2015 Update 1. As of Visual Studio 2019 version 16.2, C++20 Standard modules aren't fully implemented in the Microsoft C++ compiler. Modules support is feature complete in Visual Studio 2019 version 16.10. You can use the modules feature import the Standard Library modules provided by Microsoft. A module and the code that consumes it must be compiled with the same compiler options. +This compiler switch is available starting in Visual Studio 2015 Update 1. Modules support is feature complete in Visual Studio 2019 version 16.10. You can use the modules feature import the Standard Library modules provided by Microsoft. The new, standardized, way of consuming the C++ Standard Library as modules is described in [Import the C++ standard library using modules](tutorial-import-stl-named-module.md). -For more information on modules and how to use and create them, see [Overview of modules in C++](../../cpp/modules-cpp.md). +For more information about how to use and create modules, see [Overview of modules in C++](../../cpp/modules-cpp.md). + +The experimental library consists of the following named modules: + +- `std.regex` provides the content of header `` +- `std.filesystem` provides the content of header `` +- `std.memory` provides the content of header `` +- `std.threading` provides the contents of headers ``, ``, ``, ``, ``, and `` +- `std.core` provides everything else in the C++ Standard Library + +To consume these modules, add an import declaration to the top of the source code file. For example: + +```cpp +import std.core; +import std.regex; +``` + +To consume the experimental Microsoft Standard Library modules, compile your program with the [`/EHsc`](../build/reference/eh-exception-handling-model.md) and [`/MD`](../build/reference/md-mt-ld-use-run-time-library.md) options. ### To set this compiler option in the Visual Studio development environment 1. Open the project's **Property Pages** dialog box. For details, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md). - 1. Set the **Configuration** drop-down to **All Configurations**. - 1. Select the **Configuration Properties** > **C/C++** > **Language** property page. - 1. Modify the **Enable C++ Modules (experimental)** property, and then choose **OK**. ## See also diff --git a/docs/cpp/import-export-module.md b/docs/cpp/import-export-module.md index 349708fa551..876aed188a3 100644 --- a/docs/cpp/import-export-module.md +++ b/docs/cpp/import-export-module.md @@ -1,13 +1,13 @@ --- title: "module, import, export" -ms.date: 02/14/2022 +ms.date: 02/11/2025 f1_keywords: ["module_cpp", "import_cpp", "export_cpp"] helpviewer_keywords: ["modules [C++]", "modules [C++], import", "modules [C++], export"] description: Use import and export declarations to access and to publish types and functions defined in the specified module. --- # `module`, `import`, `export` -The **`module`**, **`import`**, and **`export`** declarations are available in C++20 and require the [`/experimental:module`](../build/reference/experimental-module.md) compiler switch along with [`/std:c++20`](../build/reference/std-specify-language-standard-version.md) or later (such as **`/std:c++latest`**). For more information, see [Overview of modules in C++](modules-cpp.md). +The **`module`**, **`import`**, and **`export`** declarations are available in C++20 and require the compiler switch [`/std:c++20`](../build/reference/std-specify-language-standard-version.md) or later (such as **`/std:c++latest`**). For more information, see [Overview of modules in C++](modules-cpp.md). ## `module` diff --git a/docs/cpp/modules-cpp.md b/docs/cpp/modules-cpp.md index bfdbfb73467..5e54689e96d 100644 --- a/docs/cpp/modules-cpp.md +++ b/docs/cpp/modules-cpp.md @@ -1,6 +1,6 @@ --- title: "Overview of modules in C++" -ms.date: 01/29/2024 +ms.date: 02/11/2025 helpviewer_keywords: ["modules [C++]", "modules [C++], overview"] description: Modules in C++20 provide a modern alternative to header files. --- @@ -14,44 +14,15 @@ You can use modules side by side with header files. A C++ source file can `impor To contrast modules with other ways to import the standard library, see [Compare header units, modules, and precompiled headers](../build/compare-inclusion-methods.md). -## Enable modules in the Microsoft C++ compiler +Starting with Visual Studio 2022 version 17.5, importing the Standard Library as a module is both standardized and fully implemented in the Microsoft C++ compiler. To learn how to import the Standard Library using modules, see [Import the C++ standard library using modules](tutorial-import-stl-named-module.md). -As of Visual Studio 2022 version 17.1, C++20 standard modules are fully implemented in the Microsoft C++ compiler. +## Single-partition modules -Before it was specified by the C++20 standard, Microsoft had experimental support for modules. The compiler also supported importing prebuilt Standard Library modules, described below. +A single-partition module is a module that consists of a single source file. The module interface and implementation are in the same file. -Starting with Visual Studio 2022 version 17.5, importing the Standard Library as a module is both standardized and fully implemented in the Microsoft C++ compiler. This section describes the older, experimental method, which is still supported. For information about the new standardized way to import the Standard Library using modules, see [Import the C++ standard library using modules](tutorial-import-stl-named-module.md). +The following single-partition module example shows a simple module definition in a source file called *`Example.ixx`*. The *`.ixx`* extension is required for module interface files in Visual Studio. In this example, the interface file contains both the function definition and the declaration. You can also place the definitions in one or more separate module implementation files, as shown in a later example, but this is an example of a single-partition module. -You can use the modules feature to create single-partition modules and to import the Standard Library modules provided by Microsoft. To enable support for Standard Library modules, compile with [`/experimental:module`](../build/reference/experimental-module.md) and [`/std:c++latest`](../build/reference/std-specify-language-standard-version.md). In a Visual Studio project, right-click the project node in **Solution Explorer** and choose **Properties**. Set the **Configuration** drop-down to **All Configurations**, then choose **Configuration Properties** > **C/C++** > **Language** > **Enable C++ Modules (experimental)**. - -A module and the code that consumes it must be compiled with the same compiler options. - -## Consume C++ Standard Library as modules (experimental) - -This section describes the experimental implementation, which is still supported. The new standardized way of consuming the C++ Standard Library as modules is described in [Import the C++ standard library using modules](tutorial-import-stl-named-module.md). - -By importing the C++ Standard Library as modules rather than including it through header files, you can potentially speed up compilation times depending on the size of your project. The experimental library is split into the following named modules: - -- `std.regex` provides the content of header `` -- `std.filesystem` provides the content of header `` -- `std.memory` provides the content of header `` -- `std.threading` provides the contents of headers ``, ``, ``, ``, ``, and `` -- `std.core` provides everything else in the C++ Standard Library - -To consume these modules, add an import declaration to the top of the source code file. For example: - -```cpp -import std.core; -import std.regex; -``` - -To consume the Microsoft Standard Library modules, compile your program with the [`/EHsc`](../build/reference/eh-exception-handling-model.md) and [`/MD`](../build/reference/md-mt-ld-use-run-time-library.md) options. - -## Example - -The following example shows a simple module definition in a source file called *`Example.ixx`*. The *`.ixx`* extension is required for module interface files in Visual Studio. In this example, the interface file contains both the function definition and the declaration. However, you can also place the definitions in one or more separate module implementation files, as shown in a later example. - -The `export module Example;` statement indicates that this file is the primary interface for a module called `Example`. The **`export`** modifier on `f()` indicates that this function is visible when another program or module imports `Example`. +The `export module Example;` statement indicates that this file is the primary interface for a module called `Example`. The **`export`** modifier before `int f()` indicates that this function is visible when another program or module imports `Example`: ```cpp // Example.ixx @@ -61,12 +32,14 @@ export module Example; namespace Example_NS { - int f_internal() { - return ANSWER; - } + int f_internal() + { + return ANSWER; + } - export int f() { - return f_internal(); + export int f() + { + return f_internal(); } } ``` @@ -88,7 +61,7 @@ int main() } ``` -The `import` declaration can appear only at global scope. +The `import` declaration can appear only at global scope. A module and the code that consumes it must be compiled with the same compiler options. ## Module grammar @@ -138,6 +111,7 @@ When the compiler does argument-dependent lookup for overload resolutions in the ### Module partitions A module partition is similar to a module, except: + - It shares ownership of all declarations in the entire module. - All names exported by partition interface files are imported and exported by the primary interface file. - A partition's name must begin with the module name followed by a colon (`:`). diff --git a/docs/cpp/tutorial-import-stl-named-module.md b/docs/cpp/tutorial-import-stl-named-module.md index de5eec7bcf4..8640f0c5287 100644 --- a/docs/cpp/tutorial-import-stl-named-module.md +++ b/docs/cpp/tutorial-import-stl-named-module.md @@ -24,7 +24,7 @@ This tutorial requires Visual Studio 2022 17.5 or later. ## Introduction to standard library modules -Header files suffer from semantics that can change depending on macro definitions, the order in which you include them, and they slow compilation. Modules solve these problems. +Header file semantics can change depending on macro definitions, the order in which you include them, and they slow compilation. Modules solve these problems. It's now possible to import the standard library as a module instead of as a tangle of header files. This is much faster and more robust than including header files or header units or precompiled headers (PCH). @@ -45,8 +45,6 @@ C++20 introduces a modern alternative called *modules*. In C++23, we were able t Like header files, modules allow you to share declarations and definitions across source files. But unlike header files, modules aren't fragile and are easier to compose because their semantics don't change due to macro definitions or the order in which you import them. The compiler can process modules much faster than it can process `#include` files, and uses less memory at compile time as well. Named modules don't expose macro definitions or private implementation details. -For in depth information about modules, see [Overview of modules in C++](modules-cpp.md) That article also discusses consuming the C++ standard library as modules, but uses an older and experimental way of doing it. - This article demonstrates the new and best way to consume the standard library. For more information about alternative ways to consume the standard library, see [Compare header units, modules, and precompiled headers](../build/compare-inclusion-methods.md). ## Import the standard library with `std` From 74447142d79c7529f834e193432f4945c8553f4b Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 12 Feb 2025 10:08:26 -0800 Subject: [PATCH 0128/2255] remove preview --- docs/overview/compiler-versions.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/overview/compiler-versions.md b/docs/overview/compiler-versions.md index 4b7fa412b13..60666e3f291 100644 --- a/docs/overview/compiler-versions.md +++ b/docs/overview/compiler-versions.md @@ -1,7 +1,7 @@ --- description: "Learn more about Microsoft Visual C++ compiler versioning." title: "Microsoft Visual C++ compiler versioning (Visual C++)" -ms.date: 02/11/2025 +ms.date: 02/12/2025 ms.service: "visual-cpp" ms.subservice: "tools" helpviewer_keywords: ["Visual C++, platforms supported", "platforms [C++]"] @@ -123,7 +123,7 @@ The following table lists the Visual C++ compiler `_MSC_VER` for each Visual Stu | Visual Studio 2022 version 17.11 | 1941 | | Visual Studio 2022 version 17.12 | 1942 | | Visual Studio 2022 version 17.13 | 1943 | -| Visual Studio 2022 version 17.14 (Preview) | 1944 | +| Visual Studio 2022 version 17.14 | 1944 | a Visual Studio 2019 16.8 and 16.9 share the same major and minor versions (and so have the same value for `_MSC_VER`). To distinguish them, use `_MSC_FULL_VER`. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 16.8 is 192829333. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 16.9 is 192829910. From 92fc56d9fb9d215d69047d75671c4b1bb4f96641 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 12 Feb 2025 10:59:32 -0800 Subject: [PATCH 0129/2255] review edits --- docs/build/reference/experimental-module.md | 12 ++++++++---- docs/cpp/tutorial-named-modules-cpp.md | 9 +++++---- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/docs/build/reference/experimental-module.md b/docs/build/reference/experimental-module.md index 7525b47d2a2..5f53625ea07 100644 --- a/docs/build/reference/experimental-module.md +++ b/docs/build/reference/experimental-module.md @@ -1,13 +1,13 @@ --- title: "/experimental:module (Enable module support)" description: "Use the /experimental:module compiler option to enable experimental compiler support for named modules." -ms.date: 01/27/2022 +ms.date: 02/12/2025 f1_keywords: ["module", "/experimental:module"] helpviewer_keywords: ["module", "/experimental:module", "Enable module support"] --- # `/experimental:module` (Enable experimental module support) -Enables experimental compiler support for C++ Standard modules. This option is obsolete for C++20 standard modules in Visual Studio version 16.11 and later. This switch is only used (along with [`/std:c++latest`](std-specify-language-standard-version.md)) if you are still using the older experimental Standard library modules. We recommend that you use the new Standard Library modules provided by Microsoft without using this switch. +Enables experimental compiler support for C++ Standard modules. This option is obsolete for C++20 standard modules in Visual Studio 2019 version 16.11 and later. This switch is only used (along with [`/std:c++latest`](std-specify-language-standard-version.md)) if you are still using the older experimental Standard library modules. We recommend that you use the new Standard Library modules provided by Microsoft without using this switch. ## Syntax @@ -15,9 +15,13 @@ Enables experimental compiler support for C++ Standard modules. This option is o ## Remarks +Although you can use this switch to use the older experimental named modules listed below, we recommend that you use the the new, standardized, way of consuming the C++ Standard Library as modules described in [Import the C++ standard library using modules](../../cpp/tutorial-import-stl-named-module.md). + +Before you can use the experimental modules, ensure that **C++ Modules for v143 build tools (x64/x86 - experimental)** in selected the VS Installer. It's available in the **Individual components** tab of the installer. Search for **experimental** to see the option. For more information, see [Install C++ support in Visual Studio](../install/install-visual-cpp.md). + In versions of Visual Studio before Visual Studio 2019 version 16.11, you can enable experimental modules support using the **`/experimental:module`** compiler option along with the [`/std:c++latest`](std-specify-language-standard-version.md) option. In Visual Studio 2019 version 16.11, module support is enabled automatically by either **`/std:c++20`** or **`/std:c++latest`**. Use **`/experimental:module-`** to disable experimental module support. -This compiler switch is available starting in Visual Studio 2015 Update 1. Modules support is feature complete in Visual Studio 2019 version 16.10. You can use the modules feature import the Standard Library modules provided by Microsoft. The new, standardized, way of consuming the C++ Standard Library as modules is described in [Import the C++ standard library using modules](tutorial-import-stl-named-module.md). +This compiler switch is available starting in Visual Studio 2015 Update 1. Modules support is feature complete in Visual Studio 2019 version 16.10. For more information about how to use and create modules, see [Overview of modules in C++](../../cpp/modules-cpp.md). @@ -36,7 +40,7 @@ import std.core; import std.regex; ``` -To consume the experimental Microsoft Standard Library modules, compile your program with the [`/EHsc`](../build/reference/eh-exception-handling-model.md) and [`/MD`](../build/reference/md-mt-ld-use-run-time-library.md) options. +To consume the experimental Microsoft Standard Library modules, compile your program with the [`/EHsc`](eh-exception-handling-model.md) and [`/MD`](md-mt-ld-use-run-time-library.md) options. ### To set this compiler option in the Visual Studio development environment diff --git a/docs/cpp/tutorial-named-modules-cpp.md b/docs/cpp/tutorial-named-modules-cpp.md index 89830e77642..a9f9924a0db 100644 --- a/docs/cpp/tutorial-named-modules-cpp.md +++ b/docs/cpp/tutorial-named-modules-cpp.md @@ -1,6 +1,6 @@ --- title: "Named modules tutorial in C++" -ms.date: 08/08/2022 +ms.date: 02/12/2025 ms.topic: "tutorial" author: "tylermsft" ms.author: "twhitney" @@ -237,7 +237,7 @@ int main() } ``` -The statement `import BasicPlane.Figures;` makes all the exported functions and types from the `BasicPlane.Figures` module visible to this file. It can come before or after any `#include` directives. +The statement `import BasicPlane.Figures;` makes all the exported functions and types from the `BasicPlane.Figures` module visible to this file. It should come after any `#include` directives. The app then uses the types and functions from the module to output the area and width of the defined rectangle: @@ -265,7 +265,7 @@ module; // optional. Defines the beginning of the global module fragment // #include directives go here but only apply to this file and // aren't shared with other module implementation files. -// Macro definitions aren't visible outside this file, or to importers. +// Macro definitions aren't visible outside this file or to importers. // import statements aren't allowed here. They go in the module preamble, below. export module [module-name]; // Required. Marks the beginning of the module preamble @@ -305,7 +305,8 @@ Module implementation units are useful for breaking up a large module into small Module implementation unit files have a *`.cpp`* extension. The basic outline of a module implementation unit file is: ```cpp -// optional #include or import statements. These only apply to this file +// optional #include statements. These only apply to this file +// optional import statements. These only apply to this file // imports in the associated module's interface are automatically available to this file module [module-name]; // required. Identifies which named module this implementation unit belongs to From 36e5b5b100bbe26296b113ec47cf12c0da3c9b1c Mon Sep 17 00:00:00 2001 From: snehara99 <113148726+snehara99@users.noreply.github.com> Date: Wed, 12 Feb 2025 14:20:42 -0500 Subject: [PATCH 0130/2255] Learn Editor: Update connect-to-your-remote-linux-computer.md --- .../connect-to-your-remote-linux-computer.md | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/docs/linux/connect-to-your-remote-linux-computer.md b/docs/linux/connect-to-your-remote-linux-computer.md index ff7c061c283..6ab3c48d6c8 100644 --- a/docs/linux/connect-to-your-remote-linux-computer.md +++ b/docs/linux/connect-to-your-remote-linux-computer.md @@ -76,24 +76,25 @@ If `ssh` isn't already set up and running on your Linux system, follow these ste 1. Enter the following information: - | Entry | Description | - |--|--| - | **Host Name** | Name or IP address of your target device | - | **Port** | Port that the SSH service is running on, typically 22 | - | **User name** | User to authenticate as | - | **Authentication type** | Password and Private Key are both supported | - | **Password** | Password for the entered user name | - | **Private key file** | Private key file created for ssh connection | - | **Passphrase** | Passphrase used with private key selected above | +| Entry | Description | +|--|--| +| **Host Name** | Name or IP address of your target device | +| **Port** | Port that the SSH service is running on, typically 22 | +| **User name** | User to authenticate as | +| **Authentication type** | Password and Private Key are both supported | +| **Password** | Password for the entered user name | +| **Private key file** | Private key file created for ssh connection | +| **Passphrase** | Passphrase used with private key selected above | You can't click the **Connect** button until all the required fields are completed and the port is set to an integer between 1 and 65535. You can use either a password or a key file and passphrase for authentication. Key files are more secure than username/password. If you already have a key pair, it's possible to reuse it. - Versions of Visual Studio before 17.10 support Elliptic Curve (EC), Rivert-Shamir-Adleman (RSA), and Digital signature algorithm (DSA) keys for remote connections. Because of security concerns, DSA keys are no longer supported in VS 17.10 and later. RSA keys were also not supported in VS 17.10 and VS 17.11 but are supported again in VS 17.12 and later. To create a key pair compatible with the connection manager you can use the command: - `ssh-keygen -m pem -t ecdsa -f ` + Versions of Visual Studio before 17.10 support Elliptic Curve (EC), Rivert-Shamir-Adleman (RSA), and Digital signature algorithm (DSA) keys for remote connections. Because of security concerns, DSA keys are no longer supported in VS 17.10 and later. RSA keys were also not supported in VS 17.10 and VS 17.11 but some are supported again in VS 17.12 and later. To create a key pair compatible with the connection manager you can use the command: + + `ssh-keygen -m pem -t ecdsa -f ` - > [!NOTE] + > [!NOTE] > If using `ssh-keygen` to create the private key, you must specify the switch `-m pem`, or the key will not be accepted by Visual Studio. If your private key begins with `-----BEGIN OPENSSH PRIVATE KEY-----`, you must convert it with `ssh-keygen -p -f -m pem`. 1. Choose the **Connect** button to attempt a connection to the remote computer. @@ -131,7 +132,7 @@ Starting in Visual Studio version 16.9, support for older, insecure SSH algorith | Encryption | `aes128-cbc`
`aes128-ctr`
`aes192-cbc`
`aes192-ctr`
`aes256-cbc`
`aes256-ctr` | | HMAC | `hmac-sha2-256`
`hmac-sha2-512` | | Key exchange | `diffie-hellman-group14-sha256`
`diffie-hellman-group16-sha512`
`diffie-hellman-group-exchange-sha256`
`ecdh-sha2-nistp256`
`ecdh-sha2-nistp384`
`ecdh-sha2-nistp521` | -| Host key | `ecdsa-sha2-nistp256`
`ecdsa-sha2-nistp384`
`ecdsa-sha2-nistp521`
`rsa-sha2-512`
`rsa-sha2-256`
`ssh-rsa` | +| Host key | `ecdsa-sha2-nistp256`
`ecdsa-sha2-nistp384`
`ecdsa-sha2-nistp521`
`rsa-sha2-512`
`rsa-sha2-256` | ### Configure the SSH server From 5b8e24fe3a38c0add65fae2dfd5d1bb3f101cdc8 Mon Sep 17 00:00:00 2001 From: snehara99 <113148726+snehara99@users.noreply.github.com> Date: Wed, 12 Feb 2025 14:22:38 -0500 Subject: [PATCH 0131/2255] Learn Editor: Update connect-to-your-remote-linux-computer.md --- docs/linux/connect-to-your-remote-linux-computer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/linux/connect-to-your-remote-linux-computer.md b/docs/linux/connect-to-your-remote-linux-computer.md index 6ab3c48d6c8..980b3064f3a 100644 --- a/docs/linux/connect-to-your-remote-linux-computer.md +++ b/docs/linux/connect-to-your-remote-linux-computer.md @@ -90,7 +90,7 @@ If `ssh` isn't already set up and running on your Linux system, follow these ste You can use either a password or a key file and passphrase for authentication. Key files are more secure than username/password. If you already have a key pair, it's possible to reuse it. - Versions of Visual Studio before 17.10 support Elliptic Curve (EC), Rivert-Shamir-Adleman (RSA), and Digital signature algorithm (DSA) keys for remote connections. Because of security concerns, DSA keys are no longer supported in VS 17.10 and later. RSA keys were also not supported in VS 17.10 and VS 17.11 but some are supported again in VS 17.12 and later. To create a key pair compatible with the connection manager you can use the command: + Versions of Visual Studio before 17.10 support Elliptic Curve (EC), Rivert-Shamir-Adleman (RSA), and Digital signature algorithm (DSA) keys for remote connections. Because of security concerns, DSA keys are no longer supported in VS 17.10 and later. RSA keys were also not supported in VS 17.10 and VS 17.11 but some types are supported again in VS 17.12 and later. To create a key pair compatible with the connection manager you can use the command: `ssh-keygen -m pem -t ecdsa -f ` From a40d9a3b75dfc9a86995f859d0d7be6335008968 Mon Sep 17 00:00:00 2001 From: snehara99 <113148726+snehara99@users.noreply.github.com> Date: Wed, 12 Feb 2025 14:23:51 -0500 Subject: [PATCH 0132/2255] Learn Editor: Update connect-to-your-remote-linux-computer.md --- .../connect-to-your-remote-linux-computer.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/linux/connect-to-your-remote-linux-computer.md b/docs/linux/connect-to-your-remote-linux-computer.md index 980b3064f3a..49f2765f756 100644 --- a/docs/linux/connect-to-your-remote-linux-computer.md +++ b/docs/linux/connect-to-your-remote-linux-computer.md @@ -76,15 +76,15 @@ If `ssh` isn't already set up and running on your Linux system, follow these ste 1. Enter the following information: -| Entry | Description | -|--|--| -| **Host Name** | Name or IP address of your target device | -| **Port** | Port that the SSH service is running on, typically 22 | -| **User name** | User to authenticate as | -| **Authentication type** | Password and Private Key are both supported | -| **Password** | Password for the entered user name | -| **Private key file** | Private key file created for ssh connection | -| **Passphrase** | Passphrase used with private key selected above | + | Entry | Description | + |--|--| + | **Host Name** | Name or IP address of your target device | + | **Port** | Port that the SSH service is running on, typically 22 | + | **User name** | User to authenticate as | + | **Authentication type** | Password and Private Key are both supported | + | **Password** | Password for the entered user name | + | **Private key file** | Private key file created for ssh connection | + | **Passphrase** | Passphrase used with private key selected above | You can't click the **Connect** button until all the required fields are completed and the port is set to an integer between 1 and 65535. @@ -94,7 +94,7 @@ If `ssh` isn't already set up and running on your Linux system, follow these ste `ssh-keygen -m pem -t ecdsa -f ` - > [!NOTE] + > [!NOTE] > If using `ssh-keygen` to create the private key, you must specify the switch `-m pem`, or the key will not be accepted by Visual Studio. If your private key begins with `-----BEGIN OPENSSH PRIVATE KEY-----`, you must convert it with `ssh-keygen -p -f -m pem`. 1. Choose the **Connect** button to attempt a connection to the remote computer. From b1be292e07189ac092cd4a42469a538636eaa643 Mon Sep 17 00:00:00 2001 From: snehara99 <113148726+snehara99@users.noreply.github.com> Date: Wed, 12 Feb 2025 14:24:54 -0500 Subject: [PATCH 0133/2255] Learn Editor: Update connect-to-your-remote-linux-computer.md --- docs/linux/connect-to-your-remote-linux-computer.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/linux/connect-to-your-remote-linux-computer.md b/docs/linux/connect-to-your-remote-linux-computer.md index 49f2765f756..9a02e0cfe9e 100644 --- a/docs/linux/connect-to-your-remote-linux-computer.md +++ b/docs/linux/connect-to-your-remote-linux-computer.md @@ -91,7 +91,6 @@ If `ssh` isn't already set up and running on your Linux system, follow these ste You can use either a password or a key file and passphrase for authentication. Key files are more secure than username/password. If you already have a key pair, it's possible to reuse it. Versions of Visual Studio before 17.10 support Elliptic Curve (EC), Rivert-Shamir-Adleman (RSA), and Digital signature algorithm (DSA) keys for remote connections. Because of security concerns, DSA keys are no longer supported in VS 17.10 and later. RSA keys were also not supported in VS 17.10 and VS 17.11 but some types are supported again in VS 17.12 and later. To create a key pair compatible with the connection manager you can use the command: - `ssh-keygen -m pem -t ecdsa -f ` > [!NOTE] From 7e464a1fb3f823ba5927cc950156c68d3bc028ca Mon Sep 17 00:00:00 2001 From: snehara99 <113148726+snehara99@users.noreply.github.com> Date: Wed, 12 Feb 2025 14:25:14 -0500 Subject: [PATCH 0134/2255] Learn Editor: Update connect-to-your-remote-linux-computer.md --- docs/linux/connect-to-your-remote-linux-computer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/linux/connect-to-your-remote-linux-computer.md b/docs/linux/connect-to-your-remote-linux-computer.md index 9a02e0cfe9e..abb09042bb1 100644 --- a/docs/linux/connect-to-your-remote-linux-computer.md +++ b/docs/linux/connect-to-your-remote-linux-computer.md @@ -91,7 +91,7 @@ If `ssh` isn't already set up and running on your Linux system, follow these ste You can use either a password or a key file and passphrase for authentication. Key files are more secure than username/password. If you already have a key pair, it's possible to reuse it. Versions of Visual Studio before 17.10 support Elliptic Curve (EC), Rivert-Shamir-Adleman (RSA), and Digital signature algorithm (DSA) keys for remote connections. Because of security concerns, DSA keys are no longer supported in VS 17.10 and later. RSA keys were also not supported in VS 17.10 and VS 17.11 but some types are supported again in VS 17.12 and later. To create a key pair compatible with the connection manager you can use the command: - `ssh-keygen -m pem -t ecdsa -f ` + `ssh-keygen -m pem -t ecdsa -f ` > [!NOTE] > If using `ssh-keygen` to create the private key, you must specify the switch `-m pem`, or the key will not be accepted by Visual Studio. If your private key begins with `-----BEGIN OPENSSH PRIVATE KEY-----`, you must convert it with `ssh-keygen -p -f -m pem`. From 4898b22008fa3bf459974ea90116f01c8715a6b1 Mon Sep 17 00:00:00 2001 From: snehara99 <113148726+snehara99@users.noreply.github.com> Date: Wed, 12 Feb 2025 14:25:47 -0500 Subject: [PATCH 0135/2255] Learn Editor: Update connect-to-your-remote-linux-computer.md From 5bfd63f272628193be3b642065ede4042ee3f0a5 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 12 Feb 2025 13:39:43 -0800 Subject: [PATCH 0136/2255] edits --- docs/build/reference/experimental-module.md | 19 +++++++++++-------- docs/cpp/import-export-module.md | 4 ++-- docs/cpp/tutorial-named-modules-cpp.md | 8 +++----- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/docs/build/reference/experimental-module.md b/docs/build/reference/experimental-module.md index 5f53625ea07..a3a4ea0a5d2 100644 --- a/docs/build/reference/experimental-module.md +++ b/docs/build/reference/experimental-module.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["module", "/experimental:module", "Enable module support"] --- # `/experimental:module` (Enable experimental module support) -Enables experimental compiler support for C++ Standard modules. This option is obsolete for C++20 standard modules in Visual Studio 2019 version 16.11 and later. This switch is only used (along with [`/std:c++latest`](std-specify-language-standard-version.md)) if you are still using the older experimental Standard library modules. We recommend that you use the new Standard Library modules provided by Microsoft without using this switch. +Enables compiler support for an experimental form of C++ Standard modules. This option is obsolete in Visual Studio 2019 version 16.11 and later. ## Syntax @@ -15,15 +15,16 @@ Enables experimental compiler support for C++ Standard modules. This option is o ## Remarks -Although you can use this switch to use the older experimental named modules listed below, we recommend that you use the the new, standardized, way of consuming the C++ Standard Library as modules described in [Import the C++ standard library using modules](../../cpp/tutorial-import-stl-named-module.md). +Although you can use this switch to use the older experimental named modules, we recommend that you use the the new, standardized, way of consuming the C++ Standard Library as modules described in [Import the C++ standard library using modules](../../cpp/tutorial-import-stl-named-module.md). -Before you can use the experimental modules, ensure that **C++ Modules for v143 build tools (x64/x86 - experimental)** in selected the VS Installer. It's available in the **Individual components** tab of the installer. Search for **experimental** to see the option. For more information, see [Install C++ support in Visual Studio](../install/install-visual-cpp.md). +This compiler switch is available starting in Visual Studio 2015 Update 1. Ensure that **C++ Modules for v143 build tools (x64/x86 - experimental)** in selected the VS Installer. It's available in the **Individual components** tab of the installer. Search for **experimental** to see the option. For more information, see [Install C++ support in Visual Studio](../install/install-visual-cpp.md). -In versions of Visual Studio before Visual Studio 2019 version 16.11, you can enable experimental modules support using the **`/experimental:module`** compiler option along with the [`/std:c++latest`](std-specify-language-standard-version.md) option. In Visual Studio 2019 version 16.11, module support is enabled automatically by either **`/std:c++20`** or **`/std:c++latest`**. Use **`/experimental:module-`** to disable experimental module support. - -This compiler switch is available starting in Visual Studio 2015 Update 1. Modules support is feature complete in Visual Studio 2019 version 16.10. - -For more information about how to use and create modules, see [Overview of modules in C++](../../cpp/modules-cpp.md). +| Version | Status | +|---|---| +| Visual Studio 2015 Update 1 | `/experimental:module` is available. | +| Visual Studio 2019 version 16.10 | C++20 modules support is feature complete. | +| Visual Studio 2019 16.11 and earlier | Enable experimental modules support using **`/experimental:module`** along with [`/std:c++latest`](std-specify-language-standard-version.md). | +| Visual Studio 2019 version 16.11 and later | Modules support is enabled automatically with **`/std:c++20`** or later, or **`/std:c++latest`**. Use **`/experimental:module-`** to disable experimental module support. | The experimental library consists of the following named modules: @@ -49,6 +50,8 @@ To consume the experimental Microsoft Standard Library modules, compile your pro 1. Select the **Configuration Properties** > **C/C++** > **Language** property page. 1. Modify the **Enable C++ Modules (experimental)** property, and then choose **OK**. +For more information about how to use and create modules, see [Overview of modules in C++](../../cpp/modules-cpp.md). + ## See also [`/headerUnit` (Use header unit IFC)](headerunit.md)\ diff --git a/docs/cpp/import-export-module.md b/docs/cpp/import-export-module.md index 876aed188a3..fa085680f74 100644 --- a/docs/cpp/import-export-module.md +++ b/docs/cpp/import-export-module.md @@ -1,6 +1,6 @@ --- title: "module, import, export" -ms.date: 02/11/2025 +ms.date: 02/12/2025 f1_keywords: ["module_cpp", "import_cpp", "export_cpp"] helpviewer_keywords: ["modules [C++]", "modules [C++], import", "modules [C++], export"] description: Use import and export declarations to access and to publish types and functions defined in the specified module. @@ -19,7 +19,7 @@ module ModuleA; ## `export` -Use an **`export module`** declaration for the module's primary interface file, which must have extension *`.ixx`*: +Use an **`export module`** declaration for the module's primary interface file, which should have an extension *`.ixx`* by default. If you want to use a different extension, you'll need to use the [/interface](../build/reference/interface.md) switch to compile it as a module interface. ```cpp export module ModuleA; diff --git a/docs/cpp/tutorial-named-modules-cpp.md b/docs/cpp/tutorial-named-modules-cpp.md index a9f9924a0db..24ec86cfd67 100644 --- a/docs/cpp/tutorial-named-modules-cpp.md +++ b/docs/cpp/tutorial-named-modules-cpp.md @@ -9,7 +9,7 @@ description: Named modules in C++20 provide a modern alternative to header files --- # Named modules tutorial (C++) -This tutorial is about creating C++20 modules. Modules replace header files. You'll learn how modules are an improvement on header files. +This tutorial is about creating C++20 modules. Modules are a significant improvement on header files. In this tutorial, learn how to: @@ -22,13 +22,11 @@ In this tutorial, learn how to: This tutorial requires Visual Studio 2022 17.1.0 or later. -You might get IntelliSense errors while working on the code example in this tutorial. Work on the IntelliSense engine is catching up with the compiler. IntelliSense errors can be ignored and won't prevent the code example from building. To track progress on the IntelliSense work, see this [issue](https://developercommunity.visualstudio.com/t/When-importing-a-C20-module-or-header-/1550846). - ## What are C++ modules -Header files are how declarations and definitions are shared between source files in C++. Header files are fragile and difficult to compose. They may compile differently depending on the order you include them in, or on the macros that are or aren't defined. They can slow compilation time because they're reprocessed for each source file that includes them. +Header files are how declarations and definitions are shared between source files in C++. Header files are fragile and difficult to compose. They may compile differently depending on the order you include them in or on the macros that are or aren't defined. They can slow compilation time because they're reprocessed for each source file that includes them. -C++20 introduces a modern approach to componentizing C++ programs: *modules*. +C++20 introduces *modules* as a modern approach to componentizing C++ programs. Like header files, modules allow you to share declarations and definitions across source files. But unlike header files, modules don't leak macro definitions or private implementation details. From 6d4bf752b3bc8e726c0d84f17d1e79d1c274a832 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Wed, 12 Feb 2025 13:58:35 -0800 Subject: [PATCH 0137/2255] Remove displayName fields from toc.yml --- docs/code-quality/toc.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/code-quality/toc.yml b/docs/code-quality/toc.yml index 823bf4e3a75..fecfcb69813 100644 --- a/docs/code-quality/toc.yml +++ b/docs/code-quality/toc.yml @@ -593,10 +593,8 @@ items: href: ../code-quality/c26130.md - name: Warning C26132 href: c26132.md - displayName: C26132 - name: Warning C26133 href: c26133.md - displayName: C26133 - name: Warning C26135 href: ../code-quality/c26135.md - name: Warning C26138 From 780f6007ba8e64df2c9fcfd834e9bf01d3b2f6e6 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Wed, 12 Feb 2025 13:59:39 -0800 Subject: [PATCH 0138/2255] Fix relative links in toc.yml file --- docs/code-quality/toc.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/code-quality/toc.yml b/docs/code-quality/toc.yml index fecfcb69813..61bafc57ca1 100644 --- a/docs/code-quality/toc.yml +++ b/docs/code-quality/toc.yml @@ -638,9 +638,9 @@ items: - name: Warning C26831 href: ../code-quality/c26831.md - name: Warning C26838 - href: c26838.md + href: ../code-quality/c26838.md - name: Warning C26839 - href: c26839.md + href: ../code-quality/c26839.md - name: Warning C26832 href: ../code-quality/c26832.md - name: Warning C26833 From bf4e2bc9e1d867de0161790706adc30d1bfa23e3 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 12 Feb 2025 14:38:37 -0800 Subject: [PATCH 0139/2255] fix link, acrolinx --- docs/build/reference/experimental-module.md | 2 +- docs/cpp/import-export-module.md | 2 +- docs/cpp/tutorial-import-stl-named-module.md | 4 +-- docs/cpp/tutorial-named-modules-cpp.md | 28 ++++++++++---------- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/build/reference/experimental-module.md b/docs/build/reference/experimental-module.md index a3a4ea0a5d2..963d9a06cc3 100644 --- a/docs/build/reference/experimental-module.md +++ b/docs/build/reference/experimental-module.md @@ -17,7 +17,7 @@ Enables compiler support for an experimental form of C++ Standard modules. This Although you can use this switch to use the older experimental named modules, we recommend that you use the the new, standardized, way of consuming the C++ Standard Library as modules described in [Import the C++ standard library using modules](../../cpp/tutorial-import-stl-named-module.md). -This compiler switch is available starting in Visual Studio 2015 Update 1. Ensure that **C++ Modules for v143 build tools (x64/x86 - experimental)** in selected the VS Installer. It's available in the **Individual components** tab of the installer. Search for **experimental** to see the option. For more information, see [Install C++ support in Visual Studio](../install/install-visual-cpp.md). +This compiler switch is available starting in Visual Studio 2015 Update 1. Ensure that **C++ Modules for v143 build tools (x64/x86 - experimental)** in selected the VS Installer. It's available in the **Individual components** tab of the installer. Search for **experimental** to see the option. For more information, see [Install C and C++ support in Visual Studio](../vscpp-step-0-installation.md). | Version | Status | |---|---| diff --git a/docs/cpp/import-export-module.md b/docs/cpp/import-export-module.md index fa085680f74..6275e350060 100644 --- a/docs/cpp/import-export-module.md +++ b/docs/cpp/import-export-module.md @@ -19,7 +19,7 @@ module ModuleA; ## `export` -Use an **`export module`** declaration for the module's primary interface file, which should have an extension *`.ixx`* by default. If you want to use a different extension, you'll need to use the [/interface](../build/reference/interface.md) switch to compile it as a module interface. +Use an **`export module`** declaration for the module's primary interface file, which should have an extension *`.ixx`* by default. If you want to use a different extension, use the [/interface](../build/reference/interface.md) switch to compile it as a module interface. ```cpp export module ModuleA; diff --git a/docs/cpp/tutorial-import-stl-named-module.md b/docs/cpp/tutorial-import-stl-named-module.md index 8640f0c5287..b2c961353f2 100644 --- a/docs/cpp/tutorial-import-stl-named-module.md +++ b/docs/cpp/tutorial-import-stl-named-module.md @@ -39,7 +39,7 @@ Because named modules don't expose macros, macros like `assert`, `errno`, `offse ## About C++ modules -Header files are how declarations and definitions have been shared between source files in C++. Prior to standard library modules, you'd include the part of the standard library you needed with a directive like `#include `. Header files are fragile and difficult to compose because their semantics may change depending on the order you include them, or whether certain macros are defined. They also slow compilation because they're reprocessed by every source file that includes them. +Header files are how declarations and definitions have been shared between source files in C++. Before standard library modules, you'd include the part of the standard library you needed with a directive like `#include `. Header files are fragile and difficult to compose because their semantics may change depending on the order you include them, or whether certain macros are defined. They also slow compilation because they're reprocessed by every source file that includes them. C++20 introduces a modern alternative called *modules*. In C++23, we were able to capitalize on module support to introduce named modules to represent the standard library. @@ -55,7 +55,7 @@ The statement `import std;` or `import std.compat;` imports the standard library ### Example: How to build and import `std` -1. Open a x86 Native Tools Command Prompt for VS: from the Windows **Start** menu, type *x86 native* and the prompt should appear in the list of apps. Ensure that the prompt is for Visual Studio 2022 version 17.5 or above. You'll get errors if you use the wrong version of the prompt. The examples used in this tutorial are for the CMD shell. +1. Open a x86 Native Tools Command Prompt for VS: from the Windows **Start** menu, type *x86 native* and the prompt should appear in the list of apps. Ensure that the prompt is for Visual Studio 2022 version 17.5 or above. You get errors if you use the wrong version of the prompt. The examples used in this tutorial are for the CMD shell. 1. Create a directory, such as `%USERPROFILE%\source\repos\STLModules`, and make it the current directory. If you choose a directory that you don't have write access to, you'll get errors during compilation. 1. Compile the `std` named module with the following command: diff --git a/docs/cpp/tutorial-named-modules-cpp.md b/docs/cpp/tutorial-named-modules-cpp.md index 24ec86cfd67..e1b3fe1d0a5 100644 --- a/docs/cpp/tutorial-named-modules-cpp.md +++ b/docs/cpp/tutorial-named-modules-cpp.md @@ -48,7 +48,7 @@ Your code can consume modules in the same project, or any referenced projects, a ## Create the project -As we build a simple project, we'll look at various aspects of modules. The project will implement an API using a module instead of a header file. +As we build a simple project, we look at various aspects of modules. The project implements an API using a module instead of a header file. In Visual Studio 2022 or later, choose **Create a new project** and then the **Console App** (for C++) project type. If this project type isn't available, you may not have selected the **Desktop development with C++** workload when you installed Visual Studio. You can use the Visual Studio Installer to add the C++ workload. @@ -60,7 +60,7 @@ Because modules are a C++20 feature, use the [`/std:c++20` or `/std:c++latest`]( ## Create the primary module interface unit -A module consists of one or more files. One of these files must be what is called the *primary module interface unit*. It defines what the module exports; that is, what importers of the module will see. There can only be one primary module interface unit per module. +A module consists of one or more files. One of these files must be what is called the *primary module interface unit*. It defines what the module exports; that is, what importers of the module see. There can only be one primary module interface unit per module. To add a primary module interface unit, in **Solution Explorer**, right-click **Source Files** then select **Add** > **Module**. @@ -86,13 +86,13 @@ Replace the contents of *`BasicPlane.Figures.ixx`* file with: export module BasicPlane.Figures; // the export module keywords mark this file as a primary module interface unit ``` -This line identifies this file as the primary module interface and gives the module a name: `BasicPlane.Figures`. The period in the module name has no special meaning to the compiler. A period can be used to convey how your module is organized. If you have multiple module files that work together, you can use periods to indicate a separation of concerns. In this tutorial, we'll use periods to indicate different functional areas of the API. +This line identifies this file as the primary module interface and gives the module a name: `BasicPlane.Figures`. The period in the module name has no special meaning to the compiler. A period can be used to convey how your module is organized. If you have multiple module files that work together, you can use periods to indicate a separation of concerns. In this tutorial, periods indicate different functional areas of the API. This name is also where the "named" in "named module" comes from. The files that are part of this module use this name to identify themselves as part of the named module. A named module is the collection of module units with the same module name. We should talk about the API we'll implement for a moment before going further. It impacts the choices we make next. The API represents different shapes. We're only going to provide a couple shapes in this example: `Point` and `Rectangle`. `Point` is meant to be used as part of more complex shapes such as `Rectangle`. -To illustrate some features of modules, we'll factor this API into pieces. One piece will be the `Point` API. The other part will be `Rectangle`. Imagine that this API will grow into something more complex. The division is useful for separating concerns or easing code maintenance. +To illustrate some features of modules, we factor this API into pieces. One piece is the `Point` API. The other part is `Rectangle`. Imagine that this API will grow into something more complex. The division is useful for separating concerns or easing code maintenance. So far, we've created the primary module interface that will expose this API. Let's now build the `Point` API. We want it to be part of this module. For reasons of logical organization, and potential build efficiency, we want to make the code for this part of the API a *module partition* file. @@ -106,7 +106,7 @@ When you import a partition into the primary module, all its declarations become To create a module partition file, in the **Solution Explorer** right-click **Source Files**, then select **Add** > **Module**. Name the file *`BasicPlane.Figures-Point.ixx`* and choose **Add**. -Because it's a module partition file, we've added a hyphen and the name of the partition to the module name. This convention aids the compiler in the command-line case because the compiler uses name lookup rules based on the module name to find the compiled *`.ifc`* file for the partition. This way you don't have to provide explicit `/reference` command-line arguments to find the partitions that belong to the module. It's also helpful for organizing the files that belong to a module by name because you can easily see which files belong to which modules. +Because it's a module partition file, we add a hyphen and the name of the partition to the module name. This convention aids the compiler in the command-line case because the compiler uses name lookup rules based on the module name to find the compiled *`.ifc`* file for the partition. This way you don't have to provide explicit `/reference` command-line arguments to find the partitions that belong to the module. It's also helpful for organizing the files that belong to a module by name because you can easily see which files belong to which modules. Replace the contents of *`BasicPlane.Figures-Point.ixx`* with: @@ -127,7 +127,7 @@ In this file, the `export` keyword makes `struct Point` visible to consumers. ### `Rectangle` module partition example -The next partition we'll define is `Rectangle`. Create another module file using the same steps as before: In **Solution Explorer**, right-click on **Source Files**, then select **Add** > **Module**. Name the file *`BasicPlane.Figures-Rectangle.ixx`* and select **Add**. +The next partition we define is `Rectangle`. Create another module file using the same steps as before: In **Solution Explorer**, right-click on **Source Files**, then select **Add** > **Module**. Name the file *`BasicPlane.Figures-Rectangle.ixx`* and select **Add**. Replace the contents of *`BasicPlane.Figures-Rectangle.ixx`* with: @@ -154,13 +154,13 @@ Next, `import :Point;` shows how to import a module partition. The `import` stat Next, the code exports the definition of `struct Rectangle` and declarations for some functions that return various properties of the rectangle. The `export` keyword indicates whether to make what it precedes visible to consumers of the module. It's used to make the functions `area`, `height`, and `width` visible outside of the module. -All definitions and declarations in a module partition are visible to the importing module unit whether they have the `export` keyword or not. The `export` keyword governs whether the definition, declaration, or typedef will be visible outside of the module when you export the partition in the primary module interface. +All definitions and declarations in a module partition are visible to the importing module unit whether they have the `export` keyword or not. The `export` keyword governs whether the definition, declaration, or typedef is visible outside of the module when you export the partition in the primary module interface. Names are made visible to consumers of a module in several ways: - Put the keyword `export` in front of each type, function, and so on, that you want to export. - If you put `export` in front of a namespace, for example `export namespace N { ... }`, everything defined within the braces is exported. But if elsewhere in the module you define `namespace N { struct S {...};}`, then `struct S` isn't available to consumers of the module. It's not available because that namespace declaration isn't prefaced by `export`, even though there's another namespace with the same name that is. -- If a type, function, and so on, shouldn't be exported, omit the `export` keyword. It will be visible to other files that are part of the module, but not to importers of the module. +- If a type, function, and so on, shouldn't be exported, omit the `export` keyword. It is visible to other files that are part of the module, but not to importers of the module. - Use `module :private;` to mark the beginning of the private module partition. The private module partition is a section of the module where declarations are only visible to that file. They aren't visible to files that import this module or to other files that are part of this module. Think of it as a section that is static local to the file. This section is visible only within the file. - To make an imported module or module partition visible, use `export import`. An example is shown in the next section. @@ -177,11 +177,11 @@ export import :Point; // bring in the Point partition, and export it to consumer export import :Rectangle; // bring in the Rectangle partition, and export it to consumers of this module ``` -The two lines that begin with `export import` are new here. When combined like this, these two keywords instruct the compiler to import the specified module and make it visible to consumers of this module. In this case, the colon (`:`) in the module name indicates that we are importing a module partition. +The two lines that begin with `export import` are new here. When combined like this, these two keywords instruct the compiler to import the specified module and make it visible to consumers of this module. In this case, the colon (`:`) in the module name indicates that we're importing a module partition. The imported names don't include the full module name. For example, the `:Point` partition was declared as `export module BasicPlane.Figures:Point`. Yet here we're importing `:Point`. Because we're in the primary module interface file for the module `BasicPlane.Figures`, the module name is implied, and only the partition name is specified. -So far, we've defined the primary module interface, which exposes the API surface we want to make available. But we've only declared, not defined, `area()`, `height()`, or `width()`. We'll do that next by creating a module implementation file. +So far, we've defined the primary module interface, which exposes the API surface we want to make available. But we've only declared, not defined, `area()`, `height()`, or `width()`. We do that next by creating a module implementation file. ## Create a module unit implementation file @@ -217,7 +217,7 @@ Anything you declare within an implementation unit is only visible to the module ## Import the module -Now we'll make use of the module we've defined. Open the *`ModulesTutorial.cpp`* file. It was created automatically as part of the project. It currently contains the function `main()`. Replace its contents with: +Now we make use of the module we've defined. Open the *`ModulesTutorial.cpp`* file. It was created automatically as part of the project. It currently contains the function `main()`. Replace its contents with: ```cpp #include @@ -250,7 +250,7 @@ Let's now look in more detail at the various module files. ### Primary module interface -A module consists of one or more files. One of them defines the interface that importers will see. This file contains the *Primary module interface*. There can only be one primary module interface per module. As pointed out earlier, the exported module interface unit doesn't specify a module partition. +A module consists of one or more files. One of them defines the interface that importers see. This file contains the *Primary module interface*. There can only be one primary module interface per module. As pointed out earlier, the exported module interface unit doesn't specify a module partition. It has an *`.ixx`* extension by default. However, you can treat a source file with any extension as a module interface file. To do so, set the **Compile As** property in the **Advanced** tab for the source file's properties page to **Compile As Module (/interface)**: @@ -357,7 +357,7 @@ A module and the code that imports it must be compiled with the same compiler op - The name of the file that contains the module primary interface is generally the name of the module. For example, given the module name `BasicPlane.Figures`, the name of the file containing the primary interface would be named *`BasicPlane.Figures.ixx`*. - The name of a module partition file is generally `-` where the name of the module is followed by a hyphen ('-') and then the name of the partition. For example, *`BasicPlane.Figures-Rectangle.ixx`* -If you're building from the command line and you use this naming convention for module partitions, then you won't have to explicitly add `/reference` for each module partition file. The compiler will look for them automatically based on the name of the module. The name of the compiled partition file (ending with an *`.ifc`* extension) is generated from the module name. Consider the module name `BasicPlane.Figures:Rectangle`: the compiler will anticipate that the corresponding compiled partition file for `Rectangle` is named `BasicPlane.Figures-Rectangle.ifc`. The compiler uses this naming scheme to make it easier to use module partitions by automatically finding the interface unit files for partitions. +If you're building from the command line and you use this naming convention for module partitions, then you won't have to explicitly add `/reference` for each module partition file. The compiler looks for them automatically based on the name of the module. The name of the compiled partition file (ending with an *`.ifc`* extension) is generated from the module name. Consider the module name `BasicPlane.Figures:Rectangle`: the compiler anticipates that the corresponding compiled partition file for `Rectangle` is named `BasicPlane.Figures-Rectangle.ifc`. The compiler uses this naming scheme to make it easier to use module partitions by automatically finding the interface unit files for partitions. You can name them using your own convention. But then you'll need to specify corresponding [`/reference`](../build/reference/module-reference.md) arguments to the command-line compiler. @@ -371,7 +371,7 @@ Module partitions make it easier to logically factor a large module. They can be ## Summary -In this tutorial, you've been introduced to the basics of C++20 modules. You've created a primary module interface, defined a module partition, and built a module implementation file. +In this tutorial, you were introduced to the basics of C++20 modules. You've created a primary module interface, defined a module partition, and built a module implementation file. ## See also From 44757c73d8ade3b500b51e679c02098adb6e0106 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 12 Feb 2025 14:49:06 -0800 Subject: [PATCH 0140/2255] one more .ixx spot --- docs/cpp/modules-cpp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cpp/modules-cpp.md b/docs/cpp/modules-cpp.md index 5e54689e96d..42d238f49a2 100644 --- a/docs/cpp/modules-cpp.md +++ b/docs/cpp/modules-cpp.md @@ -20,7 +20,7 @@ Starting with Visual Studio 2022 version 17.5, importing the Standard Library as A single-partition module is a module that consists of a single source file. The module interface and implementation are in the same file. -The following single-partition module example shows a simple module definition in a source file called *`Example.ixx`*. The *`.ixx`* extension is required for module interface files in Visual Studio. In this example, the interface file contains both the function definition and the declaration. You can also place the definitions in one or more separate module implementation files, as shown in a later example, but this is an example of a single-partition module. +The following single-partition module example shows a simple module definition in a source file called *`Example.ixx`*. The *`.ixx`* extension is the default extension for module interface files in Visual Studio. If you want to use a different extension, use the [/interface](../build/reference/interface.md) switch to compile it as a module interface. In this example, the interface file contains both the function definition and the declaration. You can also place the definitions in one or more separate module implementation files, as shown in a later example, but this is an example of a single-partition module. The `export module Example;` statement indicates that this file is the primary interface for a module called `Example`. The **`export`** modifier before `int f()` indicates that this function is visible when another program or module imports `Example`: From 12730210831657cecd6a06fa65d024251cf9a428 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 13 Feb 2025 10:37:34 -0800 Subject: [PATCH 0141/2255] typo --- docs/build/reference/experimental-module.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/build/reference/experimental-module.md b/docs/build/reference/experimental-module.md index 963d9a06cc3..6f0cb7d231c 100644 --- a/docs/build/reference/experimental-module.md +++ b/docs/build/reference/experimental-module.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["module", "/experimental:module", "Enable module support"] --- # `/experimental:module` (Enable experimental module support) -Enables compiler support for an experimental form of C++ Standard modules. This option is obsolete in Visual Studio 2019 version 16.11 and later. +Enables compiler support for Microsoft's experimental form of C++ Standard modules. This option is obsolete in Visual Studio 2019 version 16.11 and later. ## Syntax @@ -15,13 +15,13 @@ Enables compiler support for an experimental form of C++ Standard modules. This ## Remarks -Although you can use this switch to use the older experimental named modules, we recommend that you use the the new, standardized, way of consuming the C++ Standard Library as modules described in [Import the C++ standard library using modules](../../cpp/tutorial-import-stl-named-module.md). + This switch was for the time before the new, standardized, way of consuming the C++ Standard Library as modules described in [Import the C++ standard library using modules](../../cpp/tutorial-import-stl-named-module.md) was available. Although you can use this switch to use the older experimental named modules, we recommend that you use the new, standardized, way of consuming the C++ Standard Library as modules described in [Import the C++ standard library using modules](../../cpp/tutorial-import-stl-named-module.md). -This compiler switch is available starting in Visual Studio 2015 Update 1. Ensure that **C++ Modules for v143 build tools (x64/x86 - experimental)** in selected the VS Installer. It's available in the **Individual components** tab of the installer. Search for **experimental** to see the option. For more information, see [Install C and C++ support in Visual Studio](../vscpp-step-0-installation.md). +This compiler became available starting in Visual Studio 2015 Update 1. Ensure that **C++ Modules for v143 build tools (x64/x86 - experimental)** in selected the VS Installer. It's available in the **Individual components** tab of the installer. Search for **experimental** to see the option. For more information, see [Install C and C++ support in Visual Studio](../vscpp-step-0-installation.md). | Version | Status | |---|---| -| Visual Studio 2015 Update 1 | `/experimental:module` is available. | +| Visual Studio 2015 Update 1 | `/experimental:module` introduced. | | Visual Studio 2019 version 16.10 | C++20 modules support is feature complete. | | Visual Studio 2019 16.11 and earlier | Enable experimental modules support using **`/experimental:module`** along with [`/std:c++latest`](std-specify-language-standard-version.md). | | Visual Studio 2019 version 16.11 and later | Modules support is enabled automatically with **`/std:c++20`** or later, or **`/std:c++latest`**. Use **`/experimental:module-`** to disable experimental module support. | From d014854ebf0d2f684003294d463dae570f77d17a Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 13 Feb 2025 10:50:23 -0800 Subject: [PATCH 0142/2255] edits --- docs/cpp/import-export-module.md | 4 ++-- docs/cpp/tutorial-named-modules-cpp.md | 22 +++++++++++----------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/cpp/import-export-module.md b/docs/cpp/import-export-module.md index 6275e350060..d04fc5f6d31 100644 --- a/docs/cpp/import-export-module.md +++ b/docs/cpp/import-export-module.md @@ -1,6 +1,6 @@ --- title: "module, import, export" -ms.date: 02/12/2025 +ms.date: 02/13/2025 f1_keywords: ["module_cpp", "import_cpp", "export_cpp"] helpviewer_keywords: ["modules [C++]", "modules [C++], import", "modules [C++], export"] description: Use import and export declarations to access and to publish types and functions defined in the specified module. @@ -19,7 +19,7 @@ module ModuleA; ## `export` -Use an **`export module`** declaration for the module's primary interface file, which should have an extension *`.ixx`* by default. If you want to use a different extension, use the [/interface](../build/reference/interface.md) switch to compile it as a module interface. +Use an **`export module`** declaration for the module's primary interface file, which has an extension *`.ixx`* by default. If you want to use a different extension, use the [/interface](../build/reference/interface.md) switch to compile it as a module interface. ```cpp export module ModuleA; diff --git a/docs/cpp/tutorial-named-modules-cpp.md b/docs/cpp/tutorial-named-modules-cpp.md index e1b3fe1d0a5..776ac6f114f 100644 --- a/docs/cpp/tutorial-named-modules-cpp.md +++ b/docs/cpp/tutorial-named-modules-cpp.md @@ -1,6 +1,6 @@ --- title: "Named modules tutorial in C++" -ms.date: 02/12/2025 +ms.date: 02/13/2025 ms.topic: "tutorial" author: "tylermsft" ms.author: "twhitney" @@ -24,7 +24,7 @@ This tutorial requires Visual Studio 2022 17.1.0 or later. ## What are C++ modules -Header files are how declarations and definitions are shared between source files in C++. Header files are fragile and difficult to compose. They may compile differently depending on the order you include them in or on the macros that are or aren't defined. They can slow compilation time because they're reprocessed for each source file that includes them. +Header files are how declarations and definitions are shared between source files in C++. Header files are fragile and may compile differently depending on the order you include them in or on the macros that are or aren't defined. They can slow compilation time because they're reprocessed for each source file that includes them. C++20 introduces *modules* as a modern approach to componentizing C++ programs. @@ -48,7 +48,7 @@ Your code can consume modules in the same project, or any referenced projects, a ## Create the project -As we build a simple project, we look at various aspects of modules. The project implements an API using a module instead of a header file. +The following project implements an API using a module instead of a header file. In Visual Studio 2022 or later, choose **Create a new project** and then the **Console App** (for C++) project type. If this project type isn't available, you may not have selected the **Desktop development with C++** workload when you installed Visual Studio. You can use the Visual Studio Installer to add the C++ workload. @@ -92,11 +92,11 @@ This name is also where the "named" in "named module" comes from. The files that We should talk about the API we'll implement for a moment before going further. It impacts the choices we make next. The API represents different shapes. We're only going to provide a couple shapes in this example: `Point` and `Rectangle`. `Point` is meant to be used as part of more complex shapes such as `Rectangle`. -To illustrate some features of modules, we factor this API into pieces. One piece is the `Point` API. The other part is `Rectangle`. Imagine that this API will grow into something more complex. The division is useful for separating concerns or easing code maintenance. +To illustrate some features of modules, we factor this API into parts. One part is the `Point` API. The other part is `Rectangle`. Imagine that this API could grow into something more complex. The division is useful for separating concerns or easing code maintenance. So far, we've created the primary module interface that will expose this API. Let's now build the `Point` API. We want it to be part of this module. For reasons of logical organization, and potential build efficiency, we want to make the code for this part of the API a *module partition* file. -Module partitions are useful for dividing the module implementation into manageable pieces. A module partition file is a piece, or component, of a module. What makes it unique is that it can be treated as an individual piece of the module--but only within the module. Module partitions can't be consumed outside of a module. +Module partitions are useful for dividing the module implementation into manageable parts. A module partition file is part of a module. What makes it unique is that it can be treated as an individual parts of the module--but only within the module. Module partitions can't be consumed outside of a module. When you import a partition into the primary module, all its declarations become visible to the primary module regardless of whether they're exported. Partitions can be imported into any partition interface, primary module interface, or module unit that belongs to the named module. @@ -160,7 +160,7 @@ Names are made visible to consumers of a module in several ways: - Put the keyword `export` in front of each type, function, and so on, that you want to export. - If you put `export` in front of a namespace, for example `export namespace N { ... }`, everything defined within the braces is exported. But if elsewhere in the module you define `namespace N { struct S {...};}`, then `struct S` isn't available to consumers of the module. It's not available because that namespace declaration isn't prefaced by `export`, even though there's another namespace with the same name that is. -- If a type, function, and so on, shouldn't be exported, omit the `export` keyword. It is visible to other files that are part of the module, but not to importers of the module. +- If a type, function, and so on, shouldn't be exported, omit the `export` keyword. It's visible to other files that are part of the module, but not to importers of the module. - Use `module :private;` to mark the beginning of the private module partition. The private module partition is a section of the module where declarations are only visible to that file. They aren't visible to files that import this module or to other files that are part of this module. Think of it as a section that is static local to the file. This section is visible only within the file. - To make an imported module or module partition visible, use `export import`. An example is shown in the next section. @@ -235,7 +235,7 @@ int main() } ``` -The statement `import BasicPlane.Figures;` makes all the exported functions and types from the `BasicPlane.Figures` module visible to this file. It should come after any `#include` directives. +The statement `import BasicPlane.Figures;` makes all the exported functions and types from the `BasicPlane.Figures` module visible to this file. It comes after any `#include` directives. The app then uses the types and functions from the module to output the area and width of the defined rectangle: @@ -298,7 +298,7 @@ For a more in-depth look at module syntax, see [Modules](modules-cpp.md). Module implementation units belong to a named module. The named module they belong to is indicated by the `module [module-name]` statement in the file. Module implementation units provide implementation details that, for code hygiene or other reasons, you don't want to put in the primary module interface or in a module partition file. -Module implementation units are useful for breaking up a large module into smaller pieces, which can result in faster build times. This technique is covered briefly in the [Best practices](#module-best-practices) section. +Module implementation units are useful for breaking up a large module into smaller parts, which can result in faster build times. This technique is covered briefly in the [Best practices](#module-best-practices) section. Module implementation unit files have a *`.cpp`* extension. The basic outline of a module implementation unit file is: @@ -314,7 +314,7 @@ module [module-name]; // required. Identifies which named module this implementa ### Module partition files -Module partitions provide a way to componentize a module into different pieces, or *partitions*. Module partitions are meant to be imported only in files that are part of the named module. They can't be imported outside of the named module. +Module partitions provide a way to componentize a module into different parts, or *partitions*. Module partitions are meant to be imported only in files that are part of the named module. They can't be imported outside of the named module. A partition has an interface file, and zero or more implementation files. A module partition shares ownership of all the declarations in the entire module. @@ -357,7 +357,7 @@ A module and the code that imports it must be compiled with the same compiler op - The name of the file that contains the module primary interface is generally the name of the module. For example, given the module name `BasicPlane.Figures`, the name of the file containing the primary interface would be named *`BasicPlane.Figures.ixx`*. - The name of a module partition file is generally `-` where the name of the module is followed by a hyphen ('-') and then the name of the partition. For example, *`BasicPlane.Figures-Rectangle.ixx`* -If you're building from the command line and you use this naming convention for module partitions, then you won't have to explicitly add `/reference` for each module partition file. The compiler looks for them automatically based on the name of the module. The name of the compiled partition file (ending with an *`.ifc`* extension) is generated from the module name. Consider the module name `BasicPlane.Figures:Rectangle`: the compiler anticipates that the corresponding compiled partition file for `Rectangle` is named `BasicPlane.Figures-Rectangle.ifc`. The compiler uses this naming scheme to make it easier to use module partitions by automatically finding the interface unit files for partitions. +If you're building from the command line and you use this naming convention for module partitions, then you won't have to explicitly add `/reference` for each module partition file. The compiler looks for them automatically based on the name of the module. The name of the compiled partition file is generated from the module name and ends in *`.ifc`*. Consider the module name `BasicPlane.Figures:Rectangle`: the compiler anticipates that the corresponding compiled partition file for `Rectangle` is named `BasicPlane.Figures-Rectangle.ifc`. The compiler uses this naming scheme to make it easier to use module partitions by automatically finding the interface unit files for partitions. You can name them using your own convention. But then you'll need to specify corresponding [`/reference`](../build/reference/module-reference.md) arguments to the command-line compiler. @@ -371,7 +371,7 @@ Module partitions make it easier to logically factor a large module. They can be ## Summary -In this tutorial, you were introduced to the basics of C++20 modules. You've created a primary module interface, defined a module partition, and built a module implementation file. +In this tutorial, you were introduced to the basics of C++20 modules by creating a primary module interface, defined a module partition, and built a module implementation file. ## See also From 91e2050c1ec294c84a6ef3bebf2f2cee5df95770 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 14 Feb 2025 05:11:15 +0800 Subject: [PATCH 0143/2255] Address mistakes with italic inline code (#5186) --- docs/c-runtime-library/reference/remquo-remquof-remquol.md | 3 +-- docs/mfc/reference/cdc-class.md | 4 ++-- docs/mfc/reference/clistctrl-class.md | 4 ++-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/docs/c-runtime-library/reference/remquo-remquof-remquol.md b/docs/c-runtime-library/reference/remquo-remquof-remquol.md index 9aa96137021..f6236f96797 100644 --- a/docs/c-runtime-library/reference/remquo-remquof-remquol.md +++ b/docs/c-runtime-library/reference/remquo-remquof-remquol.md @@ -8,7 +8,6 @@ api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["remquof", "remquol", "remquo"] helpviewer_keywords: ["remquol function", "remquof function", "remquo function"] -ms.assetid: a1d3cb8b-8027-4cd3-8deb-04eb17f299fc --- # `remquo`, `remquof`, `remquol` @@ -43,7 +42,7 @@ A pointer to an integer to store a value that has the sign and approximate magni ## Remarks -The **`remquo`** function calculates the floating-point remainder `f` of *`x`* / *`y`* such that *`x`* = `n` \* *`y`* + `f`*, where `n` is an integer, `f` has the same sign as *`x`*, and the absolute value of `f` is less than the absolute value of *`y`*. +The **`remquo`** function calculates the floating-point remainder `f` of *`x`* / *`y`* such that *`x`* = `n` \* *`y`* + *`f`*, where `n` is an integer, `f` has the same sign as *`x`*, and the absolute value of `f` is less than the absolute value of *`y`*. C++ allows overloading, so you can call overloads of **`remquo`** that take and return **`float`** or **`long double`** values. In a C program, unless you're using the \ macro to call this function, **`remquo`** always takes two **`double`** arguments and returns a **`double`**. diff --git a/docs/mfc/reference/cdc-class.md b/docs/mfc/reference/cdc-class.md index 5c2e0f08479..f40795d15ee 100644 --- a/docs/mfc/reference/cdc-class.md +++ b/docs/mfc/reference/cdc-class.md @@ -764,7 +764,7 @@ Specifies the bounding rectangle (in logical units). You can pass either a `LPRE *`ptStart`*\ Specifies the x- and y-coordinates of the point that defines the chord's starting point (in logical units). This point doesn't have to lie exactly on the chord. You can pass either a `POINT` structure or a `CPoint` object for this parameter. -*`ptEnd*`\ +*`ptEnd`*\ Specifies the x- and y-coordinates of the point that defines the chord's ending point (in logical units). This point doesn't have to lie exactly on the chord. You can pass either a [`POINT`](/windows/win32/api/windef/ns-windef-point) structure or a [`CPoint`](../../atl-mfc-shared/reference/cpoint-class.md) object for this parameter. ### Return Value @@ -3145,7 +3145,7 @@ The device context must contain a closed path. The points of the path are return ## `CDC::GetPixel` -Retrieves the RGB color value of the pixel at the point specified by *`x`* and *`y*`. +Retrieves the RGB color value of the pixel at the point specified by *`x`* and *`y`*. ``` COLORREF GetPixel( diff --git a/docs/mfc/reference/clistctrl-class.md b/docs/mfc/reference/clistctrl-class.md index 8ddf3770801..a9e92a75d11 100644 --- a/docs/mfc/reference/clistctrl-class.md +++ b/docs/mfc/reference/clistctrl-class.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: CListCtrl Class" title: "CListCtrl Class" +description: "Learn more about: CListCtrl Class" ms.date: 06/29/2022 f1_keywords: ["CListCtrl", "AFXCMN/CListCtrl", "AFXCMN/CListCtrl::CListCtrl", "AFXCMN/CListCtrl::ApproximateViewRect", "AFXCMN/CListCtrl::Arrange", "AFXCMN/CListCtrl::CancelEditLabel", "AFXCMN/CListCtrl::Create", "AFXCMN/CListCtrl::CreateDragImage", "AFXCMN/CListCtrl::CreateEx", "AFXCMN/CListCtrl::DeleteAllItems", "AFXCMN/CListCtrl::DeleteColumn", "AFXCMN/CListCtrl::DeleteItem", "AFXCMN/CListCtrl::DrawItem", "AFXCMN/CListCtrl::EditLabel", "AFXCMN/CListCtrl::EnableGroupView", "AFXCMN/CListCtrl::EnsureVisible", "AFXCMN/CListCtrl::FindItem", "AFXCMN/CListCtrl::GetBkColor", "AFXCMN/CListCtrl::GetBkImage", "AFXCMN/CListCtrl::GetCallbackMask", "AFXCMN/CListCtrl::GetCheck", "AFXCMN/CListCtrl::GetColumn", "AFXCMN/CListCtrl::GetColumnOrderArray", "AFXCMN/CListCtrl::GetColumnWidth", "AFXCMN/CListCtrl::GetCountPerPage", "AFXCMN/CListCtrl::GetEditControl", "AFXCMN/CListCtrl::GetEmptyText", "AFXCMN/CListCtrl::GetExtendedStyle", "AFXCMN/CListCtrl::GetFirstSelectedItemPosition", "AFXCMN/CListCtrl::GetFocusedGroup", "AFXCMN/CListCtrl::GetGroupCount", "AFXCMN/CListCtrl::GetGroupInfo", "AFXCMN/CListCtrl::GetGroupInfoByIndex", "AFXCMN/CListCtrl::GetGroupMetrics", "AFXCMN/CListCtrl::GetGroupRect", "AFXCMN/CListCtrl::GetGroupState", "AFXCMN/CListCtrl::GetHeaderCtrl", "AFXCMN/CListCtrl::GetHotCursor", "AFXCMN/CListCtrl::GetHotItem", "AFXCMN/CListCtrl::GetHoverTime", "AFXCMN/CListCtrl::GetImageList", "AFXCMN/CListCtrl::GetInsertMark", "AFXCMN/CListCtrl::GetInsertMarkColor", "AFXCMN/CListCtrl::GetInsertMarkRect", "AFXCMN/CListCtrl::GetItem", "AFXCMN/CListCtrl::GetItemCount", "AFXCMN/CListCtrl::GetItemData", "AFXCMN/CListCtrl::GetItemIndexRect", "AFXCMN/CListCtrl::GetItemPosition", "AFXCMN/CListCtrl::GetItemRect", "AFXCMN/CListCtrl::GetItemSpacing", "AFXCMN/CListCtrl::GetItemState", "AFXCMN/CListCtrl::GetItemText", "AFXCMN/CListCtrl::GetNextItem", "AFXCMN/CListCtrl::GetNextItemIndex", "AFXCMN/CListCtrl::GetNextSelectedItem", "AFXCMN/CListCtrl::GetNumberOfWorkAreas", "AFXCMN/CListCtrl::GetOrigin", "AFXCMN/CListCtrl::GetOutlineColor", "AFXCMN/CListCtrl::GetSelectedColumn", "AFXCMN/CListCtrl::GetSelectedCount", "AFXCMN/CListCtrl::GetSelectionMark", "AFXCMN/CListCtrl::GetStringWidth", "AFXCMN/CListCtrl::GetSubItemRect", "AFXCMN/CListCtrl::GetTextBkColor", "AFXCMN/CListCtrl::GetTextColor", "AFXCMN/CListCtrl::GetTileInfo", "AFXCMN/CListCtrl::GetTileViewInfo", "AFXCMN/CListCtrl::GetToolTips", "AFXCMN/CListCtrl::GetTopIndex", "AFXCMN/CListCtrl::GetView", "AFXCMN/CListCtrl::GetViewRect", "AFXCMN/CListCtrl::GetWorkAreas", "AFXCMN/CListCtrl::HasGroup", "AFXCMN/CListCtrl::HitTest", "AFXCMN/CListCtrl::InsertColumn", "AFXCMN/CListCtrl::InsertGroup", "AFXCMN/CListCtrl::InsertGroupSorted", "AFXCMN/CListCtrl::InsertItem", "AFXCMN/CListCtrl::InsertMarkHitTest", "AFXCMN/CListCtrl::IsGroupViewEnabled", "AFXCMN/CListCtrl::IsItemVisible", "AFXCMN/CListCtrl::MapIDToIndex", "AFXCMN/CListCtrl::MapIndexToID", "AFXCMN/CListCtrl::MoveGroup", "AFXCMN/CListCtrl::MoveItemToGroup", "AFXCMN/CListCtrl::RedrawItems", "AFXCMN/CListCtrl::RemoveAllGroups", "AFXCMN/CListCtrl::RemoveGroup", "AFXCMN/CListCtrl::Scroll", "AFXCMN/CListCtrl::SetBkColor", "AFXCMN/CListCtrl::SetBkImage", "AFXCMN/CListCtrl::SetCallbackMask", "AFXCMN/CListCtrl::SetCheck", "AFXCMN/CListCtrl::SetColumn", "AFXCMN/CListCtrl::SetColumnOrderArray", "AFXCMN/CListCtrl::SetColumnWidth", "AFXCMN/CListCtrl::SetExtendedStyle", "AFXCMN/CListCtrl::SetGroupInfo", "AFXCMN/CListCtrl::SetGroupMetrics", "AFXCMN/CListCtrl::SetHotCursor", "AFXCMN/CListCtrl::SetHotItem", "AFXCMN/CListCtrl::SetHoverTime", "AFXCMN/CListCtrl::SetIconSpacing", "AFXCMN/CListCtrl::SetImageList", "AFXCMN/CListCtrl::SetInfoTip", "AFXCMN/CListCtrl::SetInsertMark", "AFXCMN/CListCtrl::SetInsertMarkColor", "AFXCMN/CListCtrl::SetItem", "AFXCMN/CListCtrl::SetItemCount", "AFXCMN/CListCtrl::SetItemCountEx", "AFXCMN/CListCtrl::SetItemData", "AFXCMN/CListCtrl::SetItemIndexState", "AFXCMN/CListCtrl::SetItemPosition", "AFXCMN/CListCtrl::SetItemState", "AFXCMN/CListCtrl::SetItemText", "AFXCMN/CListCtrl::SetOutlineColor", "AFXCMN/CListCtrl::SetSelectedColumn", "AFXCMN/CListCtrl::SetSelectionMark", "AFXCMN/CListCtrl::SetTextBkColor", "AFXCMN/CListCtrl::SetTextColor", "AFXCMN/CListCtrl::SetTileInfo", "AFXCMN/CListCtrl::SetTileViewInfo", "AFXCMN/CListCtrl::SetToolTips", "AFXCMN/CListCtrl::SetView", "AFXCMN/CListCtrl::SetWorkAreas", "AFXCMN/CListCtrl::SortGroups", "AFXCMN/CListCtrl::SortItems", "AFXCMN/CListCtrl::SortItemsEx", "AFXCMN/CListCtrl::SubItemHitTest", "AFXCMN/CListCtrl::Update"] helpviewer_keywords: ["CListCtrl [MFC], CListCtrl", "CListCtrl [MFC], ApproximateViewRect", "CListCtrl [MFC], Arrange", "CListCtrl [MFC], CancelEditLabel", "CListCtrl [MFC], Create", "CListCtrl [MFC], CreateDragImage", "CListCtrl [MFC], CreateEx", "CListCtrl [MFC], DeleteAllItems", "CListCtrl [MFC], DeleteColumn", "CListCtrl [MFC], DeleteItem", "CListCtrl [MFC], DrawItem", "CListCtrl [MFC], EditLabel", "CListCtrl [MFC], EnableGroupView", "CListCtrl [MFC], EnsureVisible", "CListCtrl [MFC], FindItem", "CListCtrl [MFC], GetBkColor", "CListCtrl [MFC], GetBkImage", "CListCtrl [MFC], GetCallbackMask", "CListCtrl [MFC], GetCheck", "CListCtrl [MFC], GetColumn", "CListCtrl [MFC], GetColumnOrderArray", "CListCtrl [MFC], GetColumnWidth", "CListCtrl [MFC], GetCountPerPage", "CListCtrl [MFC], GetEditControl", "CListCtrl [MFC], GetEmptyText", "CListCtrl [MFC], GetExtendedStyle", "CListCtrl [MFC], GetFirstSelectedItemPosition", "CListCtrl [MFC], GetFocusedGroup", "CListCtrl [MFC], GetGroupCount", "CListCtrl [MFC], GetGroupInfo", "CListCtrl [MFC], GetGroupInfoByIndex", "CListCtrl [MFC], GetGroupMetrics", "CListCtrl [MFC], GetGroupRect", "CListCtrl [MFC], GetGroupState", "CListCtrl [MFC], GetHeaderCtrl", "CListCtrl [MFC], GetHotCursor", "CListCtrl [MFC], GetHotItem", "CListCtrl [MFC], GetHoverTime", "CListCtrl [MFC], GetImageList", "CListCtrl [MFC], GetInsertMark", "CListCtrl [MFC], GetInsertMarkColor", "CListCtrl [MFC], GetInsertMarkRect", "CListCtrl [MFC], GetItem", "CListCtrl [MFC], GetItemCount", "CListCtrl [MFC], GetItemData", "CListCtrl [MFC], GetItemIndexRect", "CListCtrl [MFC], GetItemPosition", "CListCtrl [MFC], GetItemRect", "CListCtrl [MFC], GetItemSpacing", "CListCtrl [MFC], GetItemState", "CListCtrl [MFC], GetItemText", "CListCtrl [MFC], GetNextItem", "CListCtrl [MFC], GetNextItemIndex", "CListCtrl [MFC], GetNextSelectedItem", "CListCtrl [MFC], GetNumberOfWorkAreas", "CListCtrl [MFC], GetOrigin", "CListCtrl [MFC], GetOutlineColor", "CListCtrl [MFC], GetSelectedColumn", "CListCtrl [MFC], GetSelectedCount", "CListCtrl [MFC], GetSelectionMark", "CListCtrl [MFC], GetStringWidth", "CListCtrl [MFC], GetSubItemRect", "CListCtrl [MFC], GetTextBkColor", "CListCtrl [MFC], GetTextColor", "CListCtrl [MFC], GetTileInfo", "CListCtrl [MFC], GetTileViewInfo", "CListCtrl [MFC], GetToolTips", "CListCtrl [MFC], GetTopIndex", "CListCtrl [MFC], GetView", "CListCtrl [MFC], GetViewRect", "CListCtrl [MFC], GetWorkAreas", "CListCtrl [MFC], HasGroup", "CListCtrl [MFC], HitTest", "CListCtrl [MFC], InsertColumn", "CListCtrl [MFC], InsertGroup", "CListCtrl [MFC], InsertGroupSorted", "CListCtrl [MFC], InsertItem", "CListCtrl [MFC], InsertMarkHitTest", "CListCtrl [MFC], IsGroupViewEnabled", "CListCtrl [MFC], IsItemVisible", "CListCtrl [MFC], MapIDToIndex", "CListCtrl [MFC], MapIndexToID", "CListCtrl [MFC], MoveGroup", "CListCtrl [MFC], MoveItemToGroup", "CListCtrl [MFC], RedrawItems", "CListCtrl [MFC], RemoveAllGroups", "CListCtrl [MFC], RemoveGroup", "CListCtrl [MFC], Scroll", "CListCtrl [MFC], SetBkColor", "CListCtrl [MFC], SetBkImage", "CListCtrl [MFC], SetCallbackMask", "CListCtrl [MFC], SetCheck", "CListCtrl [MFC], SetColumn", "CListCtrl [MFC], SetColumnOrderArray", "CListCtrl [MFC], SetColumnWidth", "CListCtrl [MFC], SetExtendedStyle", "CListCtrl [MFC], SetGroupInfo", "CListCtrl [MFC], SetGroupMetrics", "CListCtrl [MFC], SetHotCursor", "CListCtrl [MFC], SetHotItem", "CListCtrl [MFC], SetHoverTime", "CListCtrl [MFC], SetIconSpacing", "CListCtrl [MFC], SetImageList", "CListCtrl [MFC], SetInfoTip", "CListCtrl [MFC], SetInsertMark", "CListCtrl [MFC], SetInsertMarkColor", "CListCtrl [MFC], SetItem", "CListCtrl [MFC], SetItemCount", "CListCtrl [MFC], SetItemCountEx", "CListCtrl [MFC], SetItemData", "CListCtrl [MFC], SetItemIndexState", "CListCtrl [MFC], SetItemPosition", "CListCtrl [MFC], SetItemState", "CListCtrl [MFC], SetItemText", "CListCtrl [MFC], SetOutlineColor", "CListCtrl [MFC], SetSelectedColumn", "CListCtrl [MFC], SetSelectionMark", "CListCtrl [MFC], SetTextBkColor", "CListCtrl [MFC], SetTextColor", "CListCtrl [MFC], SetTileInfo", "CListCtrl [MFC], SetTileViewInfo", "CListCtrl [MFC], SetToolTips", "CListCtrl [MFC], SetView", "CListCtrl [MFC], SetWorkAreas", "CListCtrl [MFC], SortGroups", "CListCtrl [MFC], SortItems", "CListCtrl [MFC], SortItemsEx", "CListCtrl [MFC], SubItemHitTest", "CListCtrl [MFC], Update"] @@ -427,7 +427,7 @@ CImageList* CreateDragImage( ### Parameters -*`nItem*`\ +*`nItem`*\ Index of the item whose drag image list is to be created. *`lpPoint`*\ From e9ab516181b8d50cb0691562c4b9a6ca315cb4f2 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 16 Feb 2025 00:52:12 +0800 Subject: [PATCH 0144/2255] Add example and augment C2200 page --- .../compiler-errors-1/compiler-error-c2200.md | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2200.md b/docs/error-messages/compiler-errors-1/compiler-error-c2200.md index bc39dfceb86..c01937be6cf 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2200.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2200.md @@ -1,13 +1,21 @@ --- -description: "Learn more about: Compiler Error C2200" title: "Compiler Error C2200" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2200" +ms.date: "02/15/2025" f1_keywords: ["C2200"] helpviewer_keywords: ["C2200"] -ms.assetid: a04139a6-ce18-404b-9bfd-2369fc0af3cb --- # Compiler Error C2200 -'function' : function has already been defined +'function': function has already been defined + +An [`alloc_text`](../../preprocessor/alloc-text.md) pragma uses a function name already defined. Ensure the `alloc_text` pragma appears after the function declaration but before its definition. + +The following sample generates C2200: -An `alloc_text` pragma uses a function name already defined. +```cpp +// C2200.cpp +// compile with: /c +extern "C" void func() {} +#pragma alloc_text("section", func) // C2200 +``` From c70db49e40d14e62404048f3c347bd9aa935745b Mon Sep 17 00:00:00 2001 From: "S. B. Tam" Date: Wed, 19 Feb 2025 04:08:37 +0800 Subject: [PATCH 0145/2255] Remove inadvertent newline in zc-lambda.md (#5190) --- docs/build/reference/zc-lambda.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/build/reference/zc-lambda.md b/docs/build/reference/zc-lambda.md index be3feb313d1..6081969b7cc 100644 --- a/docs/build/reference/zc-lambda.md +++ b/docs/build/reference/zc-lambda.md @@ -17,8 +17,7 @@ The **`/Zc:lambda`** compiler option enables conforming lambda grammar and proce The **`/Zc:lambda`** compiler option enables the conforming lambda processor. It parses and implements lambda code according to the C++ standard. This option is off by default, which uses the legacy lambda processor. Use this option to enable conformance-mode syntax checks of generic lambdas when you use the default [`/std:c++14`](std-specify-language-standard-version.md) or the [`/std:c++17`](std-specify-language-standard-version.md) compiler options. -**`/Zc:lambda`** is automatically enabled by the [`/std:c++20`](std-specify-language-standard-version.md), [`/std:c++latest`] -(std-specify-language-standard-version.md), [`/permissive-`](permissive-standards-conformance.md), and [`/experimental:module`](experimental-module.md) options. You can disable it explicitly by using **`/Zc:lambda-`**. +**`/Zc:lambda`** is automatically enabled by the [`/std:c++20`](std-specify-language-standard-version.md), [`/std:c++latest`](std-specify-language-standard-version.md), [`/permissive-`](permissive-standards-conformance.md), and [`/experimental:module`](experimental-module.md) options. You can disable it explicitly by using **`/Zc:lambda-`**. The **`/Zc:lambda`** option is available starting in Visual Studio 2019 version 16.8. It's available as **`/experimental:newLambdaProcessor`** starting in Visual Studio 2019 version 16.3, but this spelling is now deprecated. From 96ac849e9dbfcd792f4da01d35a18a94e4c3e937 Mon Sep 17 00:00:00 2001 From: Amy Wishnousky Date: Tue, 18 Feb 2025 14:00:07 -0800 Subject: [PATCH 0146/2255] Add documentation for kernel-address and asan compatibility libraries. --- docs/build/reference/fsanitize.md | 7 ++++++- docs/sanitizers/asan-building.md | 8 ++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/docs/build/reference/fsanitize.md b/docs/build/reference/fsanitize.md index 7fd5128bb78..d3dea8d891f 100644 --- a/docs/build/reference/fsanitize.md +++ b/docs/build/reference/fsanitize.md @@ -12,19 +12,24 @@ Use the **`/fsanitize`** compiler options to enable sanitizers. ## Syntax > **`/fsanitize=address`**\ +> **`/fsanitize=kernel-address`**\ > **`/fsanitize=fuzzer`**\ > **`/fsanitize-address-use-after-return`**\ > **`/fno-sanitize-address-vcasan-lib`** +> **`/fsanitize-address-asan-compat-lib`** +> **`/fno-sanitize-address-asan-compat-lib`** ## Remarks The **`/fsanitize=address`** compiler option enables [AddressSanitizer](../../sanitizers/asan.md), a powerful compiler and runtime technology to uncover [hard-to-find bugs](../../sanitizers/asan.md#error-types). Support for the **`/fsanitize=address`** option is available starting in Visual Studio 2019 version 16.9. +The **`/fsanitize=kernel-address`** compiler option enables [Kernel AddressSanitizer (KASan)](https://learn.microsoft.com/en-us/windows-hardware/drivers/devtest/kasan). KASan is the kernel-mode variant of AddressSanitizer, available starting in Visual Studio 2022 version 17.11. KASan is only supported on Windows 11 24H2 or Windows Server 2025 and higher, and requires building using a Windows SDK 10.0.26100.2161 and higher. Building with KASan also implies the **`/fsanitize-address-asan-compat-lib`** compiler option. + The **`/fsanitize=fuzzer`** compiler option enables experimental support for [LibFuzzer](https://llvm.org/docs/LibFuzzer.html). LibFuzzer is a coverage-guided fuzzing library that can be used to find bugs and crashes caused by user-provided input. We recommended you use **`/fsanitize=address`** with LibFuzzer. This option is useful for fuzzing tools such as OneFuzz. For more information, see the [OneFuzz documentation](https://www.microsoft.com/research/project/project-onefuzz/) and [OneFuzz GitHub project](https://github.com/microsoft/onefuzz). Support for the **`/fsanitize=fuzzer`** option is available starting in Visual Studio 2022 version 17.0. The **`/fsanitize`** option doesn't allow comma-separated syntax, for example: **`/fsanitize=address,fuzzer`**. These options must be specified individually. -The **`/fsanitize-address-use-after-return`** and **`/fno-sanitize-address-vcasan-lib`** compiler options, and the [`/INFERASANLIBS` (Use inferred sanitizer libs)](./inferasanlibs.md) and **`/INFERASANLIBS:NO`** linker options offer support for advanced users. For more information, see [AddressSanitizer build and language reference](../../sanitizers/asan-building.md). +The **`/fsanitize-address-use-after-return`**, **`/fno-sanitize-address-vcasan-lib`**, **`/fsanitize-address-asan-compat-lib`**, and **`/fno-sanitize-address-asan-compat-lib`** compiler options, and the [`/INFERASANLIBS` (Use inferred sanitizer libs)](./inferasanlibs.md) and **`/INFERASANLIBS:NO`** linker options offer support for advanced users. For more information, see [AddressSanitizer build and language reference](../../sanitizers/asan-building.md). ### To set the **`/fsanitize=address`** compiler option in the Visual Studio development environment diff --git a/docs/sanitizers/asan-building.md b/docs/sanitizers/asan-building.md index e1255cb13f7..eb650221193 100644 --- a/docs/sanitizers/asan-building.md +++ b/docs/sanitizers/asan-building.md @@ -106,6 +106,14 @@ The dual stack frame in the heap remains after the return from the function that Stack frames are allocated in the heap and remain after functions return. The runtime uses garbage collection to asynchronously free these fake call-frame objects, after a certain time interval. Addresses of locals get transferred to persistent frames in the heap. It's how the system can detect when any locals get used after the defining function returns. For more information, see the [algorithm for stack use after return](https://github.com/google/sanitizers/wiki/AddressSanitizerUseAfterReturn) as documented by Google. +### ASan intrinsic compatibility library + +When building with ASan, the compiler replaces intrinsic functions (like, `memset`) with function calls provided by the ASan runtime library (like, `__asan_memset`) that will complete the same operation while also providing the memory safety checks characteristic of ASan. For user-mode ASan, the compiler and runtime are updated in lock-step as both are provided by Visual Studio. [Kernel-mode ASan (KASan)](https://learn.microsoft.com/en-us/windows-hardware/drivers/devtest/kasan) is part of the Windows OS, so will update on a different cadence than the compiler. To avoid any issues with new compilers using new intrinsics that the installed version of KASan does not support, there is a compatibility library (`asan_compat.lib`) that can be linked to in order to avoid link-time issues. When using `asan_compat.lib`, the program will behave as though the unsupported ASan intrinsics are not in use. Linking with a newer runtime library that supports the new ASan intrinsics will supercede the versions provided by `asan_compat.lib`. This decision is made at link time, so it is imperative to link with the KASan library provided by the Windows SDK that matches the OS version you are targeting. + +To include this compatibility library as a default library, use the **`/fsanitize-address-asan-compat-lib`** compiler option. This option is automatically enabled when using **`/fsanitize=kernel-address`**. To opt-out of this compatibility library, use the **`/fno-sanitize-address-asan-compat-lib`** compiler option. + +While this option can be used to link a newer compiler with an older user-mode ASan runtime, this configuration is not currently supported. + ## Linker ### `/INFERASANLIBS[:NO]` linker option From ec9514eb65ce0d6bdac2023ac1deec6ac5803abc Mon Sep 17 00:00:00 2001 From: Amy Wishnousky Date: Tue, 18 Feb 2025 14:09:57 -0800 Subject: [PATCH 0147/2255] Add version info for fsanitize-address-asan-compat-lib option. --- docs/sanitizers/asan-building.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-building.md b/docs/sanitizers/asan-building.md index eb650221193..c401e03db9e 100644 --- a/docs/sanitizers/asan-building.md +++ b/docs/sanitizers/asan-building.md @@ -110,7 +110,7 @@ Stack frames are allocated in the heap and remain after functions return. The ru When building with ASan, the compiler replaces intrinsic functions (like, `memset`) with function calls provided by the ASan runtime library (like, `__asan_memset`) that will complete the same operation while also providing the memory safety checks characteristic of ASan. For user-mode ASan, the compiler and runtime are updated in lock-step as both are provided by Visual Studio. [Kernel-mode ASan (KASan)](https://learn.microsoft.com/en-us/windows-hardware/drivers/devtest/kasan) is part of the Windows OS, so will update on a different cadence than the compiler. To avoid any issues with new compilers using new intrinsics that the installed version of KASan does not support, there is a compatibility library (`asan_compat.lib`) that can be linked to in order to avoid link-time issues. When using `asan_compat.lib`, the program will behave as though the unsupported ASan intrinsics are not in use. Linking with a newer runtime library that supports the new ASan intrinsics will supercede the versions provided by `asan_compat.lib`. This decision is made at link time, so it is imperative to link with the KASan library provided by the Windows SDK that matches the OS version you are targeting. -To include this compatibility library as a default library, use the **`/fsanitize-address-asan-compat-lib`** compiler option. This option is automatically enabled when using **`/fsanitize=kernel-address`**. To opt-out of this compatibility library, use the **`/fno-sanitize-address-asan-compat-lib`** compiler option. +To include this compatibility library as a default library, use the **`/fsanitize-address-asan-compat-lib`** compiler option. This option is automatically enabled when using **`/fsanitize=kernel-address`**. To opt-out of this compatibility library, use the **`/fno-sanitize-address-asan-compat-lib`** compiler option. These options are supported in Visual Studio 2022 17.14 Preview 2 and later. While this option can be used to link a newer compiler with an older user-mode ASan runtime, this configuration is not currently supported. From 9950b38528d2790134501ad2823e0861c09f1174 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Tue, 18 Feb 2025 14:36:16 -0800 Subject: [PATCH 0148/2255] Update ASan building documentation for clarity I addressed some things (not all) that will generate acrolinx warnings. I made one change because what it was referring to wasn't clear to me, so I guessed. Did I get this right: Using **`/fsanitize-address-asan-compat-lib`** to link a newer compiler with an older user-mode ASan runtime isn't currently supported. --- docs/sanitizers/asan-building.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/sanitizers/asan-building.md b/docs/sanitizers/asan-building.md index c401e03db9e..3199bf376ed 100644 --- a/docs/sanitizers/asan-building.md +++ b/docs/sanitizers/asan-building.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["ASan reference", "AddressSanitizer reference", "Address S --- # AddressSanitizer language, build, and debugging reference -The sections in this article describe the AddressSanitizer language specification, compiler options, and linker options. They also describe the options that control Visual Studio debugger integration specific to the AddressSanitizer. +This article describe the AddressSanitizer language specification, compiler options, linker options, and the options that control Visual Studio debugger integration specific to the AddressSanitizer. For more information on the AddressSanitizer runtime, see the [runtime reference](./asan-runtime.md). It includes information on intercepted functions and how to hook custom allocators. For more information on saving crash dumps from AddressSanitizer failures, see the [crash dump reference](./asan-offline-crash-dumps.md). @@ -108,11 +108,13 @@ Stack frames are allocated in the heap and remain after functions return. The ru ### ASan intrinsic compatibility library -When building with ASan, the compiler replaces intrinsic functions (like, `memset`) with function calls provided by the ASan runtime library (like, `__asan_memset`) that will complete the same operation while also providing the memory safety checks characteristic of ASan. For user-mode ASan, the compiler and runtime are updated in lock-step as both are provided by Visual Studio. [Kernel-mode ASan (KASan)](https://learn.microsoft.com/en-us/windows-hardware/drivers/devtest/kasan) is part of the Windows OS, so will update on a different cadence than the compiler. To avoid any issues with new compilers using new intrinsics that the installed version of KASan does not support, there is a compatibility library (`asan_compat.lib`) that can be linked to in order to avoid link-time issues. When using `asan_compat.lib`, the program will behave as though the unsupported ASan intrinsics are not in use. Linking with a newer runtime library that supports the new ASan intrinsics will supercede the versions provided by `asan_compat.lib`. This decision is made at link time, so it is imperative to link with the KASan library provided by the Windows SDK that matches the OS version you are targeting. +When building with ASan, the compiler replaces intrinsic functions (like `memset`) with function calls provided by the ASan runtime library (like `__asan_memset`) that complete the same operation but also provide memory safety checks. For user-mode ASan, the compiler and runtime are updated together because Visual Studio provides both. [Kernel-mode ASan (KASan)](https://learn.microsoft.com/en-us/windows-hardware/drivers/devtest/kasan) is part of the Windows OS, so it updates on a different cadence than the compiler. To avoid issues with a new compiler using new intrinsics that the installed version of KASan doesn't support, link the compatibility library (`asan_compat.lib`) to avoid link-time issues. When using `asan_compat.lib`, the program will behave as though the unsupported ASan intrinsics aren't used. Linking with a newer runtime library that supports the new ASan intrinsics supercedes the versions provided by `asan_compat.lib`. This decision is made at link time, so it is imperative to link with the KASan library provided by the Windows SDK that matches the OS version you are targeting. -To include this compatibility library as a default library, use the **`/fsanitize-address-asan-compat-lib`** compiler option. This option is automatically enabled when using **`/fsanitize=kernel-address`**. To opt-out of this compatibility library, use the **`/fno-sanitize-address-asan-compat-lib`** compiler option. These options are supported in Visual Studio 2022 17.14 Preview 2 and later. +The following options are supported in Visual Studio 2022 17.14 Preview 2 and later: +- To include this compatibility library as a default library, use the **`/fsanitize-address-asan-compat-lib`** compiler option. This option is automatically enabled when using **`/fsanitize=kernel-address`**.\ +- To opt-out of this compatibility library, use the **`/fno-sanitize-address-asan-compat-lib`** compiler option. -While this option can be used to link a newer compiler with an older user-mode ASan runtime, this configuration is not currently supported. +Using **`/fsanitize-address-asan-compat-lib`** to link a newer compiler with an older user-mode ASan runtime isn't currently supported. ## Linker From 91f601877e83a23acfd799c4722dcc1b0735fe2c Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Tue, 18 Feb 2025 14:41:17 -0800 Subject: [PATCH 0149/2255] Fix broken link in fsanitize documentation --- docs/build/reference/fsanitize.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/fsanitize.md b/docs/build/reference/fsanitize.md index d3dea8d891f..6e9e8c94395 100644 --- a/docs/build/reference/fsanitize.md +++ b/docs/build/reference/fsanitize.md @@ -23,7 +23,7 @@ Use the **`/fsanitize`** compiler options to enable sanitizers. The **`/fsanitize=address`** compiler option enables [AddressSanitizer](../../sanitizers/asan.md), a powerful compiler and runtime technology to uncover [hard-to-find bugs](../../sanitizers/asan.md#error-types). Support for the **`/fsanitize=address`** option is available starting in Visual Studio 2019 version 16.9. -The **`/fsanitize=kernel-address`** compiler option enables [Kernel AddressSanitizer (KASan)](https://learn.microsoft.com/en-us/windows-hardware/drivers/devtest/kasan). KASan is the kernel-mode variant of AddressSanitizer, available starting in Visual Studio 2022 version 17.11. KASan is only supported on Windows 11 24H2 or Windows Server 2025 and higher, and requires building using a Windows SDK 10.0.26100.2161 and higher. Building with KASan also implies the **`/fsanitize-address-asan-compat-lib`** compiler option. +The **`/fsanitize=kernel-address`** compiler option enables [Kernel AddressSanitizer (KASan)](/windows-hardware/drivers/devtest/kasan). KASan is the kernel-mode variant of AddressSanitizer, available starting in Visual Studio 2022 version 17.11. KASan is only supported on Windows 11 24H2 or Windows Server 2025 and higher, and requires building using a Windows SDK 10.0.26100.2161 and higher. Building with KASan also implies the **`/fsanitize-address-asan-compat-lib`** compiler option. The **`/fsanitize=fuzzer`** compiler option enables experimental support for [LibFuzzer](https://llvm.org/docs/LibFuzzer.html). LibFuzzer is a coverage-guided fuzzing library that can be used to find bugs and crashes caused by user-provided input. We recommended you use **`/fsanitize=address`** with LibFuzzer. This option is useful for fuzzing tools such as OneFuzz. For more information, see the [OneFuzz documentation](https://www.microsoft.com/research/project/project-onefuzz/) and [OneFuzz GitHub project](https://github.com/microsoft/onefuzz). Support for the **`/fsanitize=fuzzer`** option is available starting in Visual Studio 2022 version 17.0. From 55a91b986ec61d6a6ae9f46867fb1702dbe9a2b3 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Tue, 18 Feb 2025 14:43:31 -0800 Subject: [PATCH 0150/2255] Fix broken link in ASan documentation --- docs/sanitizers/asan-building.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-building.md b/docs/sanitizers/asan-building.md index 3199bf376ed..ac0de8bdae9 100644 --- a/docs/sanitizers/asan-building.md +++ b/docs/sanitizers/asan-building.md @@ -108,7 +108,7 @@ Stack frames are allocated in the heap and remain after functions return. The ru ### ASan intrinsic compatibility library -When building with ASan, the compiler replaces intrinsic functions (like `memset`) with function calls provided by the ASan runtime library (like `__asan_memset`) that complete the same operation but also provide memory safety checks. For user-mode ASan, the compiler and runtime are updated together because Visual Studio provides both. [Kernel-mode ASan (KASan)](https://learn.microsoft.com/en-us/windows-hardware/drivers/devtest/kasan) is part of the Windows OS, so it updates on a different cadence than the compiler. To avoid issues with a new compiler using new intrinsics that the installed version of KASan doesn't support, link the compatibility library (`asan_compat.lib`) to avoid link-time issues. When using `asan_compat.lib`, the program will behave as though the unsupported ASan intrinsics aren't used. Linking with a newer runtime library that supports the new ASan intrinsics supercedes the versions provided by `asan_compat.lib`. This decision is made at link time, so it is imperative to link with the KASan library provided by the Windows SDK that matches the OS version you are targeting. +When building with ASan, the compiler replaces intrinsic functions (like `memset`) with function calls provided by the ASan runtime library (like `__asan_memset`) that complete the same operation but also provide memory safety checks. For user-mode ASan, the compiler and runtime are updated together because Visual Studio provides both. [Kernel-mode ASan (KASan)](windows-hardware/drivers/devtest/kasan) is part of the Windows OS, so it updates on a different cadence than the compiler. To avoid issues with a new compiler using new intrinsics that the installed version of KASan doesn't support, link the compatibility library (`asan_compat.lib`) to avoid link-time issues. When using `asan_compat.lib`, the program will behave as though the unsupported ASan intrinsics aren't used. Linking with a newer runtime library that supports the new ASan intrinsics supercedes the versions provided by `asan_compat.lib`. This decision is made at link time, so it is imperative to link with the KASan library provided by the Windows SDK that matches the OS version you are targeting. The following options are supported in Visual Studio 2022 17.14 Preview 2 and later: - To include this compatibility library as a default library, use the **`/fsanitize-address-asan-compat-lib`** compiler option. This option is automatically enabled when using **`/fsanitize=kernel-address`**.\ From cad10fca478824bfcebf49e3640e51c26b79eedb Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Tue, 18 Feb 2025 14:49:58 -0800 Subject: [PATCH 0151/2255] Fix typos and improve clarity in ASan docs acrolinx --- docs/sanitizers/asan-building.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/sanitizers/asan-building.md b/docs/sanitizers/asan-building.md index ac0de8bdae9..bdab75809d2 100644 --- a/docs/sanitizers/asan-building.md +++ b/docs/sanitizers/asan-building.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["ASan reference", "AddressSanitizer reference", "Address S --- # AddressSanitizer language, build, and debugging reference -This article describe the AddressSanitizer language specification, compiler options, linker options, and the options that control Visual Studio debugger integration specific to the AddressSanitizer. +This article describes the AddressSanitizer language specification, compiler options, linker options, and the options that control Visual Studio debugger integration specific to the AddressSanitizer. For more information on the AddressSanitizer runtime, see the [runtime reference](./asan-runtime.md). It includes information on intercepted functions and how to hook custom allocators. For more information on saving crash dumps from AddressSanitizer failures, see the [crash dump reference](./asan-offline-crash-dumps.md). @@ -58,7 +58,7 @@ void test3() { The [**`/fsanitize=address`**](../build/reference/fsanitize.md) compiler option instruments memory references in your code to catch memory safety errors at runtime. The instrumentation hooks loads, stores, scopes, `alloca`, and CRT functions. It can detect hidden bugs such as out-of-bounds, use-after-free, use-after-scope, and so on. For a nonexhaustive list of errors detected at runtime, see [AddressSanitizer error examples](./asan-error-examples.md). -**`/fsanitize=address`** is compatible with all existing C++ or C optimization levels (for example, **`/Od`**, **`/O1`**, **`/O2`**, and **`/O2 /GL`**). The code produced with this option works with static and dynamic CRTs (for example, **`/MD`**, **`/MDd`**, **`/MT`**, and **`/MTd`**). This compiler option can be used to create an .EXE or .DLL targeting x86 or x64. Debug information is required for optimal formatting of call stacks. This compiler option is not supported with profile guided optimization. +**`/fsanitize=address`** is compatible with all existing C++ or C optimization levels (for example, **`/Od`**, **`/O1`**, **`/O2`**, and **`/O2 /GL`**). The code produced with this option works with static and dynamic CRTs (for example, **`/MD`**, **`/MDd`**, **`/MT`**, and **`/MTd`**). This compiler option can be used to create an .EXE or .DLL targeting x86 or x64. Debug information is required for optimal formatting of call stacks. This compiler option isn't supported with profile guided optimization. For examples of code that demonstrates several kinds of error detection, see [AddressSanitizer error examples](asan-error-examples.md). @@ -108,7 +108,7 @@ Stack frames are allocated in the heap and remain after functions return. The ru ### ASan intrinsic compatibility library -When building with ASan, the compiler replaces intrinsic functions (like `memset`) with function calls provided by the ASan runtime library (like `__asan_memset`) that complete the same operation but also provide memory safety checks. For user-mode ASan, the compiler and runtime are updated together because Visual Studio provides both. [Kernel-mode ASan (KASan)](windows-hardware/drivers/devtest/kasan) is part of the Windows OS, so it updates on a different cadence than the compiler. To avoid issues with a new compiler using new intrinsics that the installed version of KASan doesn't support, link the compatibility library (`asan_compat.lib`) to avoid link-time issues. When using `asan_compat.lib`, the program will behave as though the unsupported ASan intrinsics aren't used. Linking with a newer runtime library that supports the new ASan intrinsics supercedes the versions provided by `asan_compat.lib`. This decision is made at link time, so it is imperative to link with the KASan library provided by the Windows SDK that matches the OS version you are targeting. +When building with ASan, the compiler replaces intrinsic functions (like `memset`) with function calls provided by the ASan runtime library (like `__asan_memset`) that complete the same operation but also provide memory safety checks. For user-mode ASan, the compiler and runtime are updated together because Visual Studio provides both. [Kernel-mode ASan (KASan)](windows-hardware/drivers/devtest/kasan) is part of the Windows OS, so it updates on a different cadence than the compiler. To avoid issues with a new compiler using new intrinsics that the installed version of KASan doesn't support, link the compatibility library (`asan_compat.lib`) to avoid link-time issues. When using `asan_compat.lib`, the program behaves as though the unsupported ASan intrinsics aren't used. Linking with a newer runtime library that supports the new ASan intrinsics supersedes the versions provided by `asan_compat.lib`. This decision is made at link time, so it's imperative to link with the KASan library provided by the Windows SDK that matches the OS version you're targeting. The following options are supported in Visual Studio 2022 17.14 Preview 2 and later: - To include this compatibility library as a default library, use the **`/fsanitize-address-asan-compat-lib`** compiler option. This option is automatically enabled when using **`/fsanitize=kernel-address`**.\ @@ -162,7 +162,7 @@ The library chosen depends on the compiler options, and is automatically linked | **`/MTd`** | *`libvcasand.lib`* | | **`/MDd`** | *`vcasand.lib`* | -However, if you compile using **`/Zl`** (Omit default library name), you must manually specify the library. If you don't, you'll get an unresolved external symbol link error. Here are some typical examples: +However, if you compile using **`/Zl`** (Omit default library name), you must manually specify the library. If you don't, you get an unresolved external symbol link error. Here are some typical examples: ```Output error LNK2001: unresolved external symbol __you_must_link_with_VCAsan_lib From b2fcee471180f21b9d1c87c11cd6341ca6993bf9 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Tue, 18 Feb 2025 14:51:19 -0800 Subject: [PATCH 0152/2255] Fix broken link in ASan documentation --- docs/sanitizers/asan-building.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-building.md b/docs/sanitizers/asan-building.md index bdab75809d2..765cb85caa8 100644 --- a/docs/sanitizers/asan-building.md +++ b/docs/sanitizers/asan-building.md @@ -108,7 +108,7 @@ Stack frames are allocated in the heap and remain after functions return. The ru ### ASan intrinsic compatibility library -When building with ASan, the compiler replaces intrinsic functions (like `memset`) with function calls provided by the ASan runtime library (like `__asan_memset`) that complete the same operation but also provide memory safety checks. For user-mode ASan, the compiler and runtime are updated together because Visual Studio provides both. [Kernel-mode ASan (KASan)](windows-hardware/drivers/devtest/kasan) is part of the Windows OS, so it updates on a different cadence than the compiler. To avoid issues with a new compiler using new intrinsics that the installed version of KASan doesn't support, link the compatibility library (`asan_compat.lib`) to avoid link-time issues. When using `asan_compat.lib`, the program behaves as though the unsupported ASan intrinsics aren't used. Linking with a newer runtime library that supports the new ASan intrinsics supersedes the versions provided by `asan_compat.lib`. This decision is made at link time, so it's imperative to link with the KASan library provided by the Windows SDK that matches the OS version you're targeting. +When building with ASan, the compiler replaces intrinsic functions (like `memset`) with function calls provided by the ASan runtime library (like `__asan_memset`) that complete the same operation but also provide memory safety checks. For user-mode ASan, the compiler and runtime are updated together because Visual Studio provides both. [Kernel-mode ASan (KASan)](/windows-hardware/drivers/devtest/kasan) is part of the Windows OS, so it updates on a different cadence than the compiler. To avoid issues with a new compiler using new intrinsics that the installed version of KASan doesn't support, link the compatibility library (`asan_compat.lib`) to avoid link-time issues. When using `asan_compat.lib`, the program behaves as though the unsupported ASan intrinsics aren't used. Linking with a newer runtime library that supports the new ASan intrinsics supersedes the versions provided by `asan_compat.lib`. This decision is made at link time, so it's imperative to link with the KASan library provided by the Windows SDK that matches the OS version you're targeting. The following options are supported in Visual Studio 2022 17.14 Preview 2 and later: - To include this compatibility library as a default library, use the **`/fsanitize-address-asan-compat-lib`** compiler option. This option is automatically enabled when using **`/fsanitize=kernel-address`**.\ From 41d118f18d19fc1982c3a8475458b65a804470d5 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Wed, 19 Feb 2025 11:33:35 -0800 Subject: [PATCH 0153/2255] Remove metadata comments and fix formatting in docs --- docs/code-quality/c26132.md | 18 +++++++----------- docs/code-quality/c26133.md | 16 +++++++--------- 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/docs/code-quality/c26132.md b/docs/code-quality/c26132.md index 9baac40db65..95dfdb1f1fd 100644 --- a/docs/code-quality/c26132.md +++ b/docs/code-quality/c26132.md @@ -1,12 +1,8 @@ --- -# Required metadata -# For more information, see https://review.learn.microsoft.com/en-us/help/platform/learn-editor-add-metadata?branch=main -# For valid values of ms.service, ms.prod, and ms.topic, see https://review.learn.microsoft.com/en-us/help/platform/metadata-taxonomies?branch=main - title: Warning C26132 description: Documentation on static analysis warning C26132 -author: Rastaban # GitHub alias -ms.author: philc # Microsoft alias +author: Rastaban +ms.author: philc ms.service: visual-cpp ms.topic: article ms.date: 02/11/2025 @@ -21,13 +17,12 @@ Warning C26132 is issued when the analyzer detects that the lock that is annotat In the following example, C26132 is emitted when `data` is used. -> warning C26132: Variable 'data' should be protected by 'customLock01', but '(&customLock01)->cs' is held instead. Possible annotation mismatch. - The variable `data` is annotated to be protected by `customLock01`, but the locking function `CustomLockAcquire` is annotated to acquire the related lock `customLock01->cs`. ```cpp #include -struct CustomLock { +struct CustomLock +{ int cs; // "Critical Section" lock }; @@ -48,11 +43,12 @@ void Initialize(_Guarded_by_(customLock01) int* data) } ``` -In this example the `Initialize` function is thread safe and behaves as designed, but that design is not correctly reflected in the concurrency SAL annotations. This is fixed by adjusting the annotations on the custom locking functions to use `criticalSection` rather than `criticalSection->cs`. This could also be fixed by changing the `_Guarded_by_` annotation from `customLock01` to `customLock01.cs`. +In this example, the `Initialize` function is thread-safe and behaves as designed, but that design is not correctly reflected in the concurrency SAL annotations. This is fixed by adjusting the annotations on the custom locking functions to use `criticalSection` rather than `criticalSection->cs`. This could also be fixed by changing the `_Guarded_by_` annotation from `customLock01` to `customLock01.cs`. ```cpp #include -struct CustomLock { +struct CustomLock +{ int cs; // "Critical Section" lock }; diff --git a/docs/code-quality/c26133.md b/docs/code-quality/c26133.md index bdd658d37df..f6a7bc90a9d 100644 --- a/docs/code-quality/c26133.md +++ b/docs/code-quality/c26133.md @@ -1,12 +1,8 @@ --- -# Required metadata -# For more information, see https://review.learn.microsoft.com/en-us/help/platform/learn-editor-add-metadata?branch=main -# For valid values of ms.service, ms.prod, and ms.topic, see https://review.learn.microsoft.com/en-us/help/platform/metadata-taxonomies?branch=main - title: Warning C26133 description: Documentation on static analysis warning C26133 -author: Rastaban # GitHub alias -ms.author: philc # Microsoft alias +author: Rastaban +ms.author: philc ms.service: visual-cpp ms.topic: article ms.date: 02/11/2025 @@ -26,7 +22,8 @@ In the following example, C26133 is emitted when `DoTaskWithCustomLock` is calle ```cpp #include -struct CustomLock { +struct CustomLock +{ int cs; // "Critical Section" }; @@ -48,12 +45,13 @@ void DoTask() } ``` -In this example the `DoTask` function is thread safe and behaves as designed, but that design is not correctly reflected in the concurrency SAL annotations. This is fixed by adjusting the annotations on the custom locking functions to use `criticalSection` rather than `criticalSection->cs`. This could also be fixed by changing the `_Requires_lock_held_` annotation from `customLock01` to `customLock01.cs`. +In this example, the `DoTask` function is thread-safe and behaves as designed, but that design is not correctly reflected in the concurrency SAL annotations. This is fixed by adjusting the annotations on the custom locking functions to use `criticalSection` rather than `criticalSection->cs`. This could also be fixed by changing the `_Requires_lock_held_` annotation from `customLock01` to `customLock01.cs`. ```cpp #include -struct CustomLock { +struct CustomLock +{ int cs; // "Critical Section" }; From 40e13d2a28e210fbdca4d52bb2c152348e0c7dfd Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 19 Feb 2025 13:52:46 -0800 Subject: [PATCH 0154/2255] Fix typo and update ms.date in c26133.md --- docs/code-quality/c26133.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/code-quality/c26133.md b/docs/code-quality/c26133.md index f6a7bc90a9d..0e760a8154f 100644 --- a/docs/code-quality/c26133.md +++ b/docs/code-quality/c26133.md @@ -5,13 +5,13 @@ author: Rastaban ms.author: philc ms.service: visual-cpp ms.topic: article -ms.date: 02/11/2025 +ms.date: 02/19/2025 --- # Warning C26133 > Caller failing to hold lock '*lock 1*' before calling function '*function name*', but '*lock 2*' is held instead. Possible annotation mismatch. -Warning C26133is issued when the analyzer detects that the lock that is required to call a function, is not held when the function is called. However, another lock that appears to be related is held. It is possible the code is thread safe, and the annotations need to be updated. +Warning C26133 is issued when the analyzer detects that the lock that is required to call a function isn't held when the function is called. However, another lock that appears to be related is held. It is possible the code is thread safe, and the annotations need to be updated. ## Examples From 66c3e692b320094a3331b41bf963b815412c264a Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 19 Feb 2025 16:36:46 -0800 Subject: [PATCH 0155/2255] fix acrolinx errors by rewriting in active voice --- docs/code-quality/c26132.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/code-quality/c26132.md b/docs/code-quality/c26132.md index 95dfdb1f1fd..969f5847b76 100644 --- a/docs/code-quality/c26132.md +++ b/docs/code-quality/c26132.md @@ -11,13 +11,13 @@ ms.date: 02/11/2025 > Variable '*variable name*' should be protected by '*lock 1*', but '*lock 2*' is held instead. Possible annotation mismatch. -Warning C26132 is issued when the analyzer detects that the lock that is annotated to protect a value is not held when the value is accessed. However, another lock that appears to be related is held. It is possible the code is thread safe, and the annotations need to be updated. +The analyzer issues Warning C26132 when it detects that a lock, which is annotated to protect a value, isn't held while accessing the value. However, a related lock is held. The code may be thread-safe, so you might need to update the annotations. ## Examples In the following example, C26132 is emitted when `data` is used. - The variable `data` is annotated to be protected by `customLock01`, but the locking function `CustomLockAcquire` is annotated to acquire the related lock `customLock01->cs`. + The annotation specifies that `customLock01` should protect the variable `data`, but `CustomLockAcquire` is responsible for acquiring the related lock `customLock01->cs`. ```cpp #include @@ -43,7 +43,7 @@ void Initialize(_Guarded_by_(customLock01) int* data) } ``` -In this example, the `Initialize` function is thread-safe and behaves as designed, but that design is not correctly reflected in the concurrency SAL annotations. This is fixed by adjusting the annotations on the custom locking functions to use `criticalSection` rather than `criticalSection->cs`. This could also be fixed by changing the `_Guarded_by_` annotation from `customLock01` to `customLock01.cs`. +In this example, the `Initialize` function is thread-safe and behaves as designed, but that design isn't correctly reflected in the concurrency SAL annotations. Fix by adjusting the annotations on the custom locking functions to use `criticalSection` rather than `criticalSection->cs`. This could also be fixed by changing the `_Guarded_by_` annotation from `customLock01` to `customLock01.cs`. ```cpp #include From e848088c34b623bf12b550fba073e734e6bd7579 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 19 Feb 2025 16:39:10 -0800 Subject: [PATCH 0156/2255] acrolinx --- docs/code-quality/c26133.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/code-quality/c26133.md b/docs/code-quality/c26133.md index 0e760a8154f..cdc18a407ee 100644 --- a/docs/code-quality/c26133.md +++ b/docs/code-quality/c26133.md @@ -11,7 +11,7 @@ ms.date: 02/19/2025 > Caller failing to hold lock '*lock 1*' before calling function '*function name*', but '*lock 2*' is held instead. Possible annotation mismatch. -Warning C26133 is issued when the analyzer detects that the lock that is required to call a function isn't held when the function is called. However, another lock that appears to be related is held. It is possible the code is thread safe, and the annotations need to be updated. +Warning C26133 is issued when the analyzer detects that the lock required to call a function isn't held when the function is called. However, another lock that appears to be related is held. It's possible the code is thread-safe, and the annotations need to be updated. ## Examples @@ -45,7 +45,7 @@ void DoTask() } ``` -In this example, the `DoTask` function is thread-safe and behaves as designed, but that design is not correctly reflected in the concurrency SAL annotations. This is fixed by adjusting the annotations on the custom locking functions to use `criticalSection` rather than `criticalSection->cs`. This could also be fixed by changing the `_Requires_lock_held_` annotation from `customLock01` to `customLock01.cs`. +In this example, the `DoTask` function is thread-safe and behaves as designed, but that design isn't correctly reflected in the concurrency SAL annotations. Fix by adjusting the annotations on the custom locking functions to use `criticalSection` rather than `criticalSection->cs`. This could also be fixed by changing the `_Requires_lock_held_` annotation from `customLock01` to `customLock01.cs`. ```cpp #include From 8b280e86b1b8ebfd7dc493e131234aab24b3f59d Mon Sep 17 00:00:00 2001 From: Takashi Takebayashi Date: Thu, 20 Feb 2025 22:52:57 +0900 Subject: [PATCH 0157/2255] Fix typo Github -> GitHub --- docs/code-quality/build-reliable-secure-programs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/code-quality/build-reliable-secure-programs.md b/docs/code-quality/build-reliable-secure-programs.md index 13341b30945..e7b8ef8aafb 100644 --- a/docs/code-quality/build-reliable-secure-programs.md +++ b/docs/code-quality/build-reliable-secure-programs.md @@ -182,7 +182,7 @@ Remove the now-invalidated secrets from your source code, and replace them with **Azure DevOps (AzDO)** -AzDO users can scan their code through GitHub Advanced Security for Azure DevOps (GHAzDO). GHAzDO also allows users to prevent secret exposures by enabling Push Protection on their repositories, catching potential exposures before they're ever leaked. For more information on how to detect hardcoded secrets in code in Azure DevOps, see *Secret Scanning for Github Advanced Security for Azure DevOps* in each of the following links: +AzDO users can scan their code through GitHub Advanced Security for Azure DevOps (GHAzDO). GHAzDO also allows users to prevent secret exposures by enabling Push Protection on their repositories, catching potential exposures before they're ever leaked. For more information on how to detect hardcoded secrets in code in Azure DevOps, see *Secret Scanning for GitHub Advanced Security for Azure DevOps* in each of the following links: - [GitHub advanced security for Azure DevOps](https://azure.microsoft.com/products/devops/github-advanced-security) - [Secret Scanning for GitHub Advanced Security for Azure DevOps](/azure/devops/repos/security/github-advanced-security-secret-scanning) From 484770e6ed5d6f6c1ac8c07226730912f5fd151a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 20 Feb 2025 23:05:58 +0800 Subject: [PATCH 0158/2255] Add example for fatal error C1012 --- .../compiler-errors-1/fatal-error-c1012.md | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1012.md b/docs/error-messages/compiler-errors-1/fatal-error-c1012.md index 3de04be3d2c..21849c9d15b 100644 --- a/docs/error-messages/compiler-errors-1/fatal-error-c1012.md +++ b/docs/error-messages/compiler-errors-1/fatal-error-c1012.md @@ -1,13 +1,21 @@ --- -description: "Learn more about: Fatal Error C1012" title: "Fatal Error C1012" -ms.date: "11/04/2016" +description: "Learn more about: Fatal Error C1012" +ms.date: "02/20/2025" f1_keywords: ["C1012"] helpviewer_keywords: ["C1012"] -ms.assetid: 92cc83a7-b5b8-4da8-a128-9b7ccb510496 --- # Fatal Error C1012 -unmatched parenthesis : missing character +unmatched parenthesis: missing 'character' The parentheses in a preprocessor directive do not match. + +The following sample generates C1012: + +```cpp +// C1012.cpp +// compile with: /c +#if (0 // C1012 +#endif +``` From 3483734b77a6efa8699438920d4cfaca3e056938 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 20 Feb 2025 23:29:14 +0800 Subject: [PATCH 0159/2255] Correct mismatched quotes --- docs/assembler/masm/option-avxencoding-masm.md | 4 ++-- .../reference/codesnippet/CPP/cfiledialog-class_3.cpp | 2 +- .../error-messages/compiler-errors-1/compiler-error-c2394.md | 5 ++--- .../compiler-fatal-errors-c999-through-c1999.md | 4 ++-- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/docs/assembler/masm/option-avxencoding-masm.md b/docs/assembler/masm/option-avxencoding-masm.md index c019dc5f8cb..806b205a3bf 100644 --- a/docs/assembler/masm/option-avxencoding-masm.md +++ b/docs/assembler/masm/option-avxencoding-masm.md @@ -1,9 +1,9 @@ --- title: "OPTION AVXENCODING" +description: Describes how to select the preferred encoding of AVX instructions when more than one possibility will work ms.date: "10/06/2020" f1_keywords: ["avxencoding"] helpviewer_keywords: ["OPTION AVXENCODING directive"] -description: Describes how to select the preferred encoding of AVX instructions when more than one possibility will work --- # OPTION AVXENCODING @@ -47,7 +47,7 @@ The **`OPTION AVXENCODING`** directive is available in Visual Studio 2019 versio ### Example -This example uses `VPDPBUSD` and `VPMADDWD` instructions to illustrate how the **`AVXENCODING`** option works. `VPDPBUSD` was first defined to be encoded only with `EVEX`, and was later extended with a VEX-encoded form for platforms without AVX-512 support, while `VPMADDWD` was AVX and extended to AVX-512. The listing output from assembling the example shows how changing the **`AVXENCODING`** mode affects the object code generated for each instruction. The prefix for each instruction ends at the '/". +This example uses `VPDPBUSD` and `VPMADDWD` instructions to illustrate how the **`AVXENCODING`** option works. `VPDPBUSD` was first defined to be encoded only with `EVEX`, and was later extended with a VEX-encoded form for platforms without AVX-512 support, while `VPMADDWD` was AVX and extended to AVX-512. The listing output from assembling the example shows how changing the **`AVXENCODING`** mode affects the object code generated for each instruction. The prefix for each instruction ends at the "/". ```asm 00000000 62 F2 6D 08/ 50 vpdpbusd xmm1, xmm2, xmm3 diff --git a/docs/atl-mfc-shared/reference/codesnippet/CPP/cfiledialog-class_3.cpp b/docs/atl-mfc-shared/reference/codesnippet/CPP/cfiledialog-class_3.cpp index 69b8fc155de..9c7f028ed78 100644 --- a/docs/atl-mfc-shared/reference/codesnippet/CPP/cfiledialog-class_3.cpp +++ b/docs/atl-mfc-shared/reference/codesnippet/CPP/cfiledialog-class_3.cpp @@ -1,7 +1,7 @@ void CMyClass::OnFileOpen() { // szFilters is a text string that includes two file name filters: - // "*.my" for "MyType Files" and "*.*' for "All Files." + // "*.my" for "MyType Files" and "*.*" for "All Files." TCHAR szFilters[]= _T("MyType Files (*.my)|*.my|All Files (*.*)|*.*||"); // Create an Open dialog; the default file name extension is ".my". diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2394.md b/docs/error-messages/compiler-errors-1/compiler-error-c2394.md index 14b86fb0447..b65d5c3ea26 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2394.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2394.md @@ -1,14 +1,13 @@ --- -description: "Learn more about: Compiler Error C2394" title: "Compiler Error C2394" +description: "Learn more about: Compiler Error C2394" ms.date: "11/04/2016" f1_keywords: ["C2394"] helpviewer_keywords: ["C2394"] -ms.assetid: 653fa9a0-29b3-48aa-bc01-82f98f717a2b --- # Compiler Error C2394 -'your_type::operator'op'" : CLR or WinRToperator not valid. At least one parameter must be of the following types: 'T^', 'T^%', 'T^&', where T = 'your_type' +"type::operator 'operator'": CLR/WinRT operator not valid. At least one parameter must be of the following types: 'T^', 'T^%', 'T^&', where T = 'type' An operator in a Windows Runtime or managed type did not have at least one parameter whose type is the same as the type of the operator return value. diff --git a/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md b/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md index 0bb402090b1..04c6031405a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md +++ b/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler fatal errors C1001 through C1907" title: "Compiler fatal errors C1001 through C1907" +description: "Learn more about: Compiler fatal errors C1001 through C1907" ms.date: 01/24/2025 f1_keywords: ["C1006", "C1024", "C1027", "C1030", "C1032", "C1034", "C1036", "C1039", "C1040", "C1041", "C1042", "C1043", "C1044", "C1048", "C1056", "C1058", "C1059", "C1063", "C1069", "C1101", "C1102", "C1105", "C1110", "C1111", "C1112", "C1114", "C1118", "C1119", "C1127", "C1193", "C1194", "C1195", "C1198", "C1199", "C1203", "C1204", "C1212", "C1213", "C1214", "C1300", "C1301", "C1302", "C1303", "C1304", "C1306", "C1354", "C1355", "C1356", "C1357", "C1358", "C1384", "C1385", "C1451", "C1505", "C1507", "C1511", "C1604", "C1605", "C1859", "C1901", "C1906", "C1907"] helpviewer_keywords: ["C1006", "C1024", "C1027", "C1030", "C1032", "C1034", "C1036", "C1039", "C1040", "C1041", "C1042", "C1043", "C1044", "C1048", "C1056", "C1058", "C1059", "C1063", "C1069", "C1101", "C1102", "C1105", "C1110", "C1111", "C1112", "C1114", "C1118", "C1119", "C1127", "C1193", "C1194", "C1195", "C1198", "C1199", "C1203", "C1204", "C1212", "C1213", "C1214", "C1300", "C1301", "C1302", "C1303", "C1304", "C1306", "C1354", "C1355", "C1356", "C1357", "C1358", "C1384", "C1385", "C1451", "C1505", "C1507", "C1511", "C1604", "C1605", "C1859", "C1901", "C1906", "C1907"] @@ -26,7 +26,7 @@ The articles in this section of the documentation explain a subset of the error | [Fatal error C1009](fatal-error-c1009.md) | compiler limit: macros nested too deeply | | [Fatal error C1010](fatal-error-c1010.md) | unexpected end of file while looking for precompiled header. Did you forget to add '`#include <`*file*`>`' to your source? | | [Fatal error C1011](fatal-error-c1011.md) | cannot locate standard module interface. Did you install the library part of the C++ modules feature in VS setup? | -| [Fatal error C1012](fatal-error-c1012.md) | unmatched parenthesis: missing '*character*" | +| [Fatal error C1012](fatal-error-c1012.md) | unmatched parenthesis: missing '*character*' | | [Fatal error C1013](fatal-error-c1013.md) | compiler limit: too many open parentheses | | [Fatal error C1014](fatal-error-c1014.md) | too many include files: depth = *number* | | [Fatal error C1015](fatal-error-c1015.md) | header-names '*header-name*' and '*header-name*' identify the same header and cannot be used as both `/headerUnit:quoted` and `/headerUnit:angle` arguments; please provide this header-name only once | From 43968a773d828f75bd34c59e1d044e0ca576c638 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 21 Feb 2025 00:21:41 +0800 Subject: [PATCH 0160/2255] Add escapes to prevent multiple links on the same line --- docs/assembler/masm/dot-nolistif.md | 5 ++-- docs/assembler/masm/purge.md | 5 ++-- docs/assembler/masm/subttl.md | 5 ++-- .../environment-variable.md | 2 +- .../sdk/cpp-event-data-types/event-group.md | 10 ++++---- .../sdk/cpp-event-data-types/event-stack.md | 4 ++-- .../sdk/cpp-event-data-types/event.md | 2 +- .../sdk/cpp-event-data-types/file-input.md | 2 +- .../sdk/cpp-event-data-types/file-output.md | 2 +- .../sdk/cpp-event-data-types/force-inlinee.md | 2 +- .../sdk/cpp-event-data-types/invocation.md | 8 +++---- .../sdk/cpp-event-data-types/raw-event.md | 4 ++-- .../sdk/cpp-event-data-types/symbol-name.md | 2 +- .../template-instantiation.md | 4 ++-- .../sdk/cpp-event-data-types/trace-info.md | 8 +++---- .../creating-precompiled-header-files.md | 2 +- docs/c-language/c-primary-expressions.md | 2 +- docs/c-language/static-assert-c.md | 2 +- docs/c-runtime-library/is-isw-routines.md | 4 ++-- .../reference/exp2-exp2f-exp2l.md | 3 +-- docs/c-runtime-library/reference/longjmp.md | 5 ++-- docs/c-runtime-library/vprintf-functions.md | 5 ++-- docs/code-quality/c26479.md | 4 ++-- docs/code-quality/c33004.md | 2 +- docs/code-quality/c33005.md | 2 +- docs/cpp/const-and-volatile-pointers.md | 5 ++-- docs/cpp/keywords-cpp.md | 5 ++-- docs/cpp/raw-pointers.md | 6 ++--- ...transporting-exceptions-between-threads.md | 4 ++-- docs/data/oledb/cdbpropset-class.md | 11 ++++----- docs/data/oledb/irowsetlocateimpl-class.md | 11 ++++----- docs/data/oledb/irowsetnotifyimpl-class.md | 7 +++--- ...e-compiler-errors-rc1000-through-rc4413.md | 5 ++-- docs/mfc/dynamic-object-creation.md | 5 ++-- docs/standard-library/charconv-functions.md | 4 ++-- .../standard-library/lazy-split-view-class.md | 2 +- docs/standard-library/month-day-last-class.md | 6 ++--- .../unordered-map-functions.md | 5 ++-- .../year-month-weekday-class.md | 6 ++--- .../adding-editing-or-deleting-controls.md | 23 +++++++++---------- docs/windows/string-editor.md | 9 ++++---- 41 files changed, 97 insertions(+), 113 deletions(-) diff --git a/docs/assembler/masm/dot-nolistif.md b/docs/assembler/masm/dot-nolistif.md index bb4996f2add..37703a53fb2 100644 --- a/docs/assembler/masm/dot-nolistif.md +++ b/docs/assembler/masm/dot-nolistif.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: .NOLISTIF" title: ".NOLISTIF" +description: "Learn more about: .NOLISTIF" ms.date: "12/16/2019" f1_keywords: [".NOLISTIF"] helpviewer_keywords: [".NOLISTIF directive"] -ms.assetid: 9243af7a-7221-4531-bbc3-281b6b292bfd --- # .NOLISTIF @@ -20,5 +19,5 @@ This is the default. Same as [.SFCOND](dot-sfcond.md). ## See also -[Directives reference](directives-reference.md) +[Directives reference](directives-reference.md)\ [MASM BNF Grammar](masm-bnf-grammar.md) diff --git a/docs/assembler/masm/purge.md b/docs/assembler/masm/purge.md index 2e19584edd1..9051b7fae9b 100644 --- a/docs/assembler/masm/purge.md +++ b/docs/assembler/masm/purge.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: PURGE" title: "PURGE" +description: "Learn more about: PURGE" ms.date: "12/16/2019" f1_keywords: ["PURGE"] helpviewer_keywords: ["PURGE directive"] -ms.assetid: 1e7ec2bf-f123-4ff9-97de-28b512ade2f9 --- # PURGE @@ -16,5 +15,5 @@ Deletes the specified macros from memory. ## See also -[Directives reference](directives-reference.md) +[Directives reference](directives-reference.md)\ [MASM BNF Grammar](masm-bnf-grammar.md) diff --git a/docs/assembler/masm/subttl.md b/docs/assembler/masm/subttl.md index b59e41f2247..a119b8eb142 100644 --- a/docs/assembler/masm/subttl.md +++ b/docs/assembler/masm/subttl.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: SUBTTL" title: "SUBTTL" +description: "Learn more about: SUBTTL" ms.date: "12/16/2019" f1_keywords: ["SUBTTL"] helpviewer_keywords: ["SUBTTL directive"] -ms.assetid: 927efadd-ec99-4de9-b64d-229bb2df3bf4 --- # SUBTTL @@ -16,5 +15,5 @@ See [SUBTITLE](subtitle.md). ## See also -[Directives reference](directives-reference.md) +[Directives reference](directives-reference.md)\ [MASM BNF Grammar](masm-bnf-grammar.md) diff --git a/docs/build-insights/reference/sdk/cpp-event-data-types/environment-variable.md b/docs/build-insights/reference/sdk/cpp-event-data-types/environment-variable.md index 7265d140e1f..133484cb32b 100644 --- a/docs/build-insights/reference/sdk/cpp-event-data-types/environment-variable.md +++ b/docs/build-insights/reference/sdk/cpp-event-data-types/environment-variable.md @@ -38,7 +38,7 @@ Along with the inherited members from its [SimpleEvent](simple-event.md) base cl ### Functions -[Name](#name) +[Name](#name)\ [Value](#value) ## EnvironmentVariable diff --git a/docs/build-insights/reference/sdk/cpp-event-data-types/event-group.md b/docs/build-insights/reference/sdk/cpp-event-data-types/event-group.md index 0329689f4c0..6eeabda6f45 100644 --- a/docs/build-insights/reference/sdk/cpp-event-data-types/event-group.md +++ b/docs/build-insights/reference/sdk/cpp-event-data-types/event-group.md @@ -42,11 +42,11 @@ The activity type contained in the group. ### Functions -[Back](#back) -[begin](#begin) -[end](#end) -[Front](#front) -[operator[]](#subscript-operator) +[Back](#back)\ +[begin](#begin)\ +[end](#end)\ +[Front](#front)\ +[operator[]](#subscript-operator)\ [Size](#size) ## Back diff --git a/docs/build-insights/reference/sdk/cpp-event-data-types/event-stack.md b/docs/build-insights/reference/sdk/cpp-event-data-types/event-stack.md index 7b642755497..e206d537cfb 100644 --- a/docs/build-insights/reference/sdk/cpp-event-data-types/event-stack.md +++ b/docs/build-insights/reference/sdk/cpp-event-data-types/event-stack.md @@ -37,8 +37,8 @@ public: ### Functions -[Back](#back) -[operator[]](#subscript-operator) +[Back](#back)\ +[operator[]](#subscript-operator)\ [Size](#size) ## Back diff --git a/docs/build-insights/reference/sdk/cpp-event-data-types/event.md b/docs/build-insights/reference/sdk/cpp-event-data-types/event.md index f8f89269172..e4518cef9e0 100644 --- a/docs/build-insights/reference/sdk/cpp-event-data-types/event.md +++ b/docs/build-insights/reference/sdk/cpp-event-data-types/event.md @@ -43,7 +43,7 @@ public: ### Functions -[Data](#data) +[Data](#data)\ [EventId](#event-id)\ [EventInstanceId](#event-instance-id)\ [EventName](#event-name)\ diff --git a/docs/build-insights/reference/sdk/cpp-event-data-types/file-input.md b/docs/build-insights/reference/sdk/cpp-event-data-types/file-input.md index 74ba8fc4ce6..16078024104 100644 --- a/docs/build-insights/reference/sdk/cpp-event-data-types/file-input.md +++ b/docs/build-insights/reference/sdk/cpp-event-data-types/file-input.md @@ -48,7 +48,7 @@ Along with the inherited members from its [SimpleEvent](simple-event.md) base cl ### Functions -[Path](#path) +[Path](#path)\ [Type](#type) ## FileInput diff --git a/docs/build-insights/reference/sdk/cpp-event-data-types/file-output.md b/docs/build-insights/reference/sdk/cpp-event-data-types/file-output.md index 6772fe813e9..f339588c6e5 100644 --- a/docs/build-insights/reference/sdk/cpp-event-data-types/file-output.md +++ b/docs/build-insights/reference/sdk/cpp-event-data-types/file-output.md @@ -48,7 +48,7 @@ Along with the inherited members from its [SimpleEvent](simple-event.md) base cl ### Functions -[Path](#path) +[Path](#path)\ [Type](#type) ## FileOutput diff --git a/docs/build-insights/reference/sdk/cpp-event-data-types/force-inlinee.md b/docs/build-insights/reference/sdk/cpp-event-data-types/force-inlinee.md index edd2ae4ddf3..ee9bac8bc6f 100644 --- a/docs/build-insights/reference/sdk/cpp-event-data-types/force-inlinee.md +++ b/docs/build-insights/reference/sdk/cpp-event-data-types/force-inlinee.md @@ -38,7 +38,7 @@ Along with the inherited members from its [SimpleEvent](simple-event.md) base cl ### Functions -[Name](#name) +[Name](#name)\ [Size](#size) ## ForceInlinee diff --git a/docs/build-insights/reference/sdk/cpp-event-data-types/invocation.md b/docs/build-insights/reference/sdk/cpp-event-data-types/invocation.md index 0006c06a835..3dc40659f7b 100644 --- a/docs/build-insights/reference/sdk/cpp-event-data-types/invocation.md +++ b/docs/build-insights/reference/sdk/cpp-event-data-types/invocation.md @@ -50,10 +50,10 @@ Along with the inherited members from its [Activity](activity.md) base class, th ### Functions -[ToolPath](#tool-path) -[ToolVersion](#tool-version) -[ToolVersionString](#tool-version-string) -[Type](#type) +[ToolPath](#tool-path)\ +[ToolVersion](#tool-version)\ +[ToolVersionString](#tool-version-string)\ +[Type](#type)\ [WorkingDirectory](#working-directory) ## Invocation diff --git a/docs/build-insights/reference/sdk/cpp-event-data-types/raw-event.md b/docs/build-insights/reference/sdk/cpp-event-data-types/raw-event.md index 2d767ed2805..ef78df1ffc9 100644 --- a/docs/build-insights/reference/sdk/cpp-event-data-types/raw-event.md +++ b/docs/build-insights/reference/sdk/cpp-event-data-types/raw-event.md @@ -67,8 +67,8 @@ If you don't want to convert ticks yourself, the `RawEvent` class provides membe [CPUTime](#cpu-time)\ [Data](#data)\ [Duration](#duration)\ -[EventId](#event-id) -[EventInstanceId](#event-instance-id) +[EventId](#event-id)\ +[EventInstanceId](#event-instance-id)\ [EventName](#event-name)\ [EventWideName](#event-wide-name)\ [ExclusiveCPUTicks](#exclusive-cpu-ticks)\ diff --git a/docs/build-insights/reference/sdk/cpp-event-data-types/symbol-name.md b/docs/build-insights/reference/sdk/cpp-event-data-types/symbol-name.md index 98b10ece5b7..a172bccaea6 100644 --- a/docs/build-insights/reference/sdk/cpp-event-data-types/symbol-name.md +++ b/docs/build-insights/reference/sdk/cpp-event-data-types/symbol-name.md @@ -38,7 +38,7 @@ Along with the inherited members from its [SimpleEvent](simple-event.md) base cl ### Functions -[Key](#key) +[Key](#key)\ [Name](#name) ## Key diff --git a/docs/build-insights/reference/sdk/cpp-event-data-types/template-instantiation.md b/docs/build-insights/reference/sdk/cpp-event-data-types/template-instantiation.md index 3729c2bebd0..b73bc7f4fbb 100644 --- a/docs/build-insights/reference/sdk/cpp-event-data-types/template-instantiation.md +++ b/docs/build-insights/reference/sdk/cpp-event-data-types/template-instantiation.md @@ -48,8 +48,8 @@ Along with the inherited members from its [Activity](activity.md) base class, th ### Functions -[Kind](#kind) -[PrimaryTemplateSymbolKey](#primary-template-symbol-key) +[Kind](#kind)\ +[PrimaryTemplateSymbolKey](#primary-template-symbol-key)\ [SpecializationSymbolKey](#specialization-symbol-key) ## Kind diff --git a/docs/build-insights/reference/sdk/cpp-event-data-types/trace-info.md b/docs/build-insights/reference/sdk/cpp-event-data-types/trace-info.md index 918f0ecba93..0d7d0284f48 100644 --- a/docs/build-insights/reference/sdk/cpp-event-data-types/trace-info.md +++ b/docs/build-insights/reference/sdk/cpp-event-data-types/trace-info.md @@ -47,10 +47,10 @@ If you don't want to convert ticks yourself, the `TraceInfo` class provides a me ### Functions -[Duration](#duration) -[LogicalProcessorCount](#logical-processor-count) -[StartTimestamp](#start-timestamp) -[StopTimestamp](#stop-timestamp) +[Duration](#duration)\ +[LogicalProcessorCount](#logical-processor-count)\ +[StartTimestamp](#start-timestamp)\ +[StopTimestamp](#stop-timestamp)\ [TickFrequency](#tick-frequency) ## Duration diff --git a/docs/build/creating-precompiled-header-files.md b/docs/build/creating-precompiled-header-files.md index 7343f0b3d98..95a909136ab 100644 --- a/docs/build/creating-precompiled-header-files.md +++ b/docs/build/creating-precompiled-header-files.md @@ -346,7 +346,7 @@ int main( void ) [Compare header units, modules, and precompiled headers](compare-inclusion-methods.md)\ [C/C++ building reference](reference/c-cpp-building-reference.md)\ -[MSVC compiler options](reference/compiler-options.md) +[MSVC compiler options](reference/compiler-options.md)\ [Overview of modules in C++](../cpp/modules-cpp.md)\ [Tutorial: Import the C++ standard library using modules](../cpp/tutorial-import-stl-named-module.md)\ [Walkthrough: Build and import header units in your Visual C++ projects](walkthrough-header-units.md)\ diff --git a/docs/c-language/c-primary-expressions.md b/docs/c-language/c-primary-expressions.md index 1b57eecbf0d..b2939192a28 100644 --- a/docs/c-language/c-primary-expressions.md +++ b/docs/c-language/c-primary-expressions.md @@ -23,5 +23,5 @@ Primary expressions are the building blocks of more complex expressions. They ma ## See also -[Generic selection](generic-selection.md) +[Generic selection](generic-selection.md)\ [Operands and Expressions](../c-language/operands-and-expressions.md) diff --git a/docs/c-language/static-assert-c.md b/docs/c-language/static-assert-c.md index dc8ab22981c..0890f6594bc 100644 --- a/docs/c-language/static-assert-c.md +++ b/docs/c-language/static-assert-c.md @@ -78,5 +78,5 @@ Windows SDK 10.0.20348.0 (version 2104) or later. For more information on instal ## See also [`_STATIC_ASSERT` Macro](../c-runtime-library/reference/static-assert-macro.md)\ -[`assert` macro and `_assert` and `_wassert` functions](../c-runtime-library/reference/assert-macro-assert-wassert.md) +[`assert` macro and `_assert` and `_wassert` functions](../c-runtime-library/reference/assert-macro-assert-wassert.md)\ [`/std` (Specify language standard version)](../build/reference/std-specify-language-standard-version.md) diff --git a/docs/c-runtime-library/is-isw-routines.md b/docs/c-runtime-library/is-isw-routines.md index ed954731123..749a96439bf 100644 --- a/docs/c-runtime-library/is-isw-routines.md +++ b/docs/c-runtime-library/is-isw-routines.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: is, isw Routines" title: "is, isw Routines" +description: "Learn more about: is, isw Routines" ms.date: 01/11/2022 helpviewer_keywords: ["is routines", "isw routines"] --- @@ -15,7 +15,7 @@ helpviewer_keywords: ["is routines", "isw routines"] [`iscntrl`, `iswcntrl`, `_iscntrl_l`, `_iswcntrl_l`](./reference/iscntrl-iswcntrl-iscntrl-l-iswcntrl-l.md)\ [`iscsym`, `iscsymf`, `__iscsym`, `__iswcsym`, `__iscsymf`, `__iswcsymf`, `_iscsym_l`, `_iswcsym_l`, `_iscsymf_l`, `_iswcsymf_l`](./reference/iscsym-functions.md)\ [`_isctype`, `iswctype`, `_isctype_l`, `_iswctype_l`](./reference/isctype-iswctype-isctype-l-iswctype-l.md)\ - [`isdigit`, `iswdigit`, `_isdigit_l`, `_iswdigit_l`](./reference/isdigit-iswdigit-isdigit-l-iswdigit-l.md) + [`isdigit`, `iswdigit`, `_isdigit_l`, `_iswdigit_l`](./reference/isdigit-iswdigit-isdigit-l-iswdigit-l.md)\ [`isgraph`, `iswgraph`, `_isgraph_l`, `_iswgraph_l`](./reference/isgraph-iswgraph-isgraph-l-iswgraph-l.md)\ [`isleadbyte`, `_isleadbyte_l`](./reference/isleadbyte-isleadbyte-l.md)\ [`islower`, `iswlower`, `_islower_l`, `_iswlower_l`](./reference/islower-iswlower-islower-l-iswlower-l.md)\ diff --git a/docs/c-runtime-library/reference/exp2-exp2f-exp2l.md b/docs/c-runtime-library/reference/exp2-exp2f-exp2l.md index b2d84ff6084..bf7a2e28937 100644 --- a/docs/c-runtime-library/reference/exp2-exp2f-exp2l.md +++ b/docs/c-runtime-library/reference/exp2-exp2f-exp2l.md @@ -8,7 +8,6 @@ api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["exp2", "math/exp2", "exp2f", "math/exp2f", "exp2l", "math/exp2l"] helpviewer_keywords: ["exp2 function", "exp2f function", "exp2l function"] -ms.assetid: 526e3e10-201a-4610-a886-533f44ece344 --- # `exp2`, `exp2f`, `exp2l` @@ -79,5 +78,5 @@ For more compatibility information, see [Compatibility](../compatibility.md). ## See also [Alphabetical function reference](crt-alphabetical-function-reference.md)\ -[`exp`, `expf`, `expl`](exp-expf.md) +[`exp`, `expf`, `expl`](exp-expf.md)\ [`log2`, `log2f`, `log2l`](log2-log2f-log2l.md) diff --git a/docs/c-runtime-library/reference/longjmp.md b/docs/c-runtime-library/reference/longjmp.md index e94b1110c17..da78b65d11e 100644 --- a/docs/c-runtime-library/reference/longjmp.md +++ b/docs/c-runtime-library/reference/longjmp.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: longjmp" title: "longjmp" +description: "Learn more about: longjmp" ms.date: "1/14/2021" api_name: ["longjmp"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "ntoskrnl.exe"] @@ -8,7 +8,6 @@ api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["longjmp"] helpviewer_keywords: ["restoring stack environment and execution locale", "longjmp function"] -ms.assetid: 0e13670a-5130-45c1-ad69-6862505b7a2f --- # `longjmp` @@ -75,5 +74,5 @@ See the example for [`_fpreset`](fpreset.md). ## See also -[Process and environment control](../process-and-environment-control.md) +[Process and environment control](../process-and-environment-control.md)\ [`setjmp`](setjmp.md) diff --git a/docs/c-runtime-library/vprintf-functions.md b/docs/c-runtime-library/vprintf-functions.md index bc1cb41d243..6119ea74286 100644 --- a/docs/c-runtime-library/vprintf-functions.md +++ b/docs/c-runtime-library/vprintf-functions.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: vprintf Functions" title: "vprintf Functions" +description: "Learn more about: vprintf Functions" ms.date: "11/04/2016" helpviewer_keywords: ["vprintf functions", "formatted text [C++]"] -ms.assetid: 02ac7c51-eab1-4bf0-bf4c-77065e3fa744 --- # `vprintf` functions @@ -17,7 +16,7 @@ Each of the `vprintf` functions takes a pointer to an argument list, then format [`_vprintf_p`, `_vprintf_p_l`, `_vwprintf_p`, `_vwprintf_p_l`](./reference/vprintf-p-vprintf-p-l-vwprintf-p-vwprintf-p-l.md)\ [`vprintf_s`, `_vprintf_s_l`, `vwprintf_s`, `_vwprintf_s_l`](./reference/vprintf-s-vprintf-s-l-vwprintf-s-vwprintf-s-l.md)\ [`_vscprintf`, `_vscprintf_l`, `_vscwprintf`, `_vscwprintf_l`](./reference/vscprintf-vscprintf-l-vscwprintf-vscwprintf-l.md)\ -[`_vsnprintf`, `_vsnwprintf`](./reference/vsnprintf-vsnprintf-vsnprintf-l-vsnwprintf-vsnwprintf-l.md) +[`_vsnprintf`, `_vsnwprintf`](./reference/vsnprintf-vsnprintf-vsnprintf-l-vsnwprintf-vsnwprintf-l.md)\ [`vsprintf`, `vswprintf`](./reference/vsprintf-vsprintf-l-vswprintf-vswprintf-l-vswprintf-l.md)\ [`_vsprintf_p`, `_vsprintf_p_l`, `_vswprintf_p`, `_vswprintf_p_l`](./reference/vsprintf-p-vsprintf-p-l-vswprintf-p-vswprintf-p-l.md)\ [`vsprintf_s`, `_vsprintf_s_l`, `vswprintf_s`, `_vswprintf_s_l`](./reference/vsprintf-s-vsprintf-s-l-vswprintf-s-vswprintf-s-l.md) diff --git a/docs/code-quality/c26479.md b/docs/code-quality/c26479.md index 336a12c33b4..1a0535171e0 100644 --- a/docs/code-quality/c26479.md +++ b/docs/code-quality/c26479.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Warning C26479: Don't use std::move to return a local variable. (f.48)" title: Warning C26479 +description: "Learn more about: Warning C26479: Don't use std::move to return a local variable. (f.48)" ms.date: 10/12/2023 f1_keywords: ["C26479", "NO_MOVE_RET_ON_LOCALS"] helpviewer_keywords: ["C26479"] @@ -38,5 +38,5 @@ S foo() ## See also -[F.48 - Don't return `std::move(local)`](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-return-move-local) +[F.48 - Don't return `std::move(local)`](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-return-move-local)\ [ES.56 - Write `std::move()` only when you need to explicitly move an object to another scope](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-move) diff --git a/docs/code-quality/c33004.md b/docs/code-quality/c33004.md index 752103c945e..44486d8ffc6 100644 --- a/docs/code-quality/c33004.md +++ b/docs/code-quality/c33004.md @@ -49,5 +49,5 @@ void t2(_Out_ VARIANT* pv) ## See also -[C33001](./c33001.md) +[C33001](./c33001.md)\ [C33005](./c33005.md) diff --git a/docs/code-quality/c33005.md b/docs/code-quality/c33005.md index 8c056ba671c..41509513e3c 100644 --- a/docs/code-quality/c33005.md +++ b/docs/code-quality/c33005.md @@ -55,5 +55,5 @@ void foo() ## See also -[C33001](./c33001.md) +[C33001](./c33001.md)\ [C33004](./c33004.md) diff --git a/docs/cpp/const-and-volatile-pointers.md b/docs/cpp/const-and-volatile-pointers.md index cca4371b50a..b786fcb6b4d 100644 --- a/docs/cpp/const-and-volatile-pointers.md +++ b/docs/cpp/const-and-volatile-pointers.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: const and volatile pointers" title: "const and volatile pointers" +description: "Learn more about: const and volatile pointers" ms.date: "11/19/2019" helpviewer_keywords: ["volatile keyword [C++], and pointers", "pointers, and const", "pointers, and volatile", "const keyword [C++], volatile pointers"] -ms.assetid: 0c92dc6c-400e-4342-b345-63ddfe649d7e --- # const and volatile pointers @@ -117,5 +116,5 @@ int main() { ## See also -[Pointers](pointers-cpp.md) +[Pointers](pointers-cpp.md)\ [Raw pointers](raw-pointers.md) diff --git a/docs/cpp/keywords-cpp.md b/docs/cpp/keywords-cpp.md index 5c0b32ebdac..0bb5fff6c04 100644 --- a/docs/cpp/keywords-cpp.md +++ b/docs/cpp/keywords-cpp.md @@ -4,7 +4,6 @@ description: "Lists the C++ standard language keywords, Microsoft-specific keywo ms.custom: "index-page" ms.date: 07/25/2020 helpviewer_keywords: ["keywords [C++]"] -ms.assetid: d7ca94a8-f785-41ce-9f73-d3c4fd508489 --- # Keywords (C++) @@ -79,7 +78,7 @@ Keywords are predefined reserved identifiers that have special meanings. They ca [`private`](private-cpp.md)\ [`protected`](protected-cpp.md)\ [`public`](public-cpp.md)\ - [`register`](storage-classes-cpp.md#register) + [`register`](storage-classes-cpp.md#register)\ [`reinterpret_cast`](reinterpret-cast-operator.md)\ **`requires`** c\ [`return`](return-statement-cpp.md)\ @@ -287,5 +286,5 @@ These identifiers are extended attributes for the **`__declspec`** modifier. The ## See also -[Lexical conventions](lexical-conventions.md)
+[Lexical conventions](lexical-conventions.md)\ [C++ built-in operators, precedence, and associativity](cpp-built-in-operators-precedence-and-associativity.md) diff --git a/docs/cpp/raw-pointers.md b/docs/cpp/raw-pointers.md index 6b65cb30b14..c12c7051c64 100644 --- a/docs/cpp/raw-pointers.md +++ b/docs/cpp/raw-pointers.md @@ -334,7 +334,7 @@ int main() ## See also -[Smart pointers](smart-pointers-modern-cpp.md) -[Indirection Operator: *](indirection-operator-star.md)
-[Address-of Operator: &](address-of-operator-amp.md)
+[Smart pointers](smart-pointers-modern-cpp.md)\ +[Indirection Operator: *](indirection-operator-star.md)\ +[Address-of Operator: &](address-of-operator-amp.md)\ [Welcome back to C++](welcome-back-to-cpp-modern-cpp.md) diff --git a/docs/cpp/transporting-exceptions-between-threads.md b/docs/cpp/transporting-exceptions-between-threads.md index 343b25f91f4..bddcb01e69c 100644 --- a/docs/cpp/transporting-exceptions-between-threads.md +++ b/docs/cpp/transporting-exceptions-between-threads.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Transporting exceptions between threads" title: "Transporting exceptions between threads" +description: "Learn more about: Transporting exceptions between threads" ms.date: 05/02/2023 helpviewer_keywords: ["std::current_exception", "transporting exceptions between threads", "std::copy_exception", "exception_ptr", "std::exception_ptr", "std::rethrow_exception", "current_exception", "transport exceptions between threads", "copy_exception", "rethrow_exception", "move exceptions between threads"] --- @@ -244,6 +244,6 @@ exception_ptr 1: Caught a myException exception. ## See also -[Exception Handling](../cpp/exception-handling-in-visual-cpp.md) +[Exception Handling](../cpp/exception-handling-in-visual-cpp.md)\ [`/EH` (Exception Handling Model)](../build/reference/eh-exception-handling-model.md)\ [`/clr` (Common Language Runtime Compilation)](../build/reference/clr-common-language-runtime-compilation.md) diff --git a/docs/data/oledb/cdbpropset-class.md b/docs/data/oledb/cdbpropset-class.md index 9086c09dde7..858162faf33 100644 --- a/docs/data/oledb/cdbpropset-class.md +++ b/docs/data/oledb/cdbpropset-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: CDBPropSet Class" title: "CDBPropSet Class" +description: "Learn more about: CDBPropSet Class" ms.date: "11/04/2016" f1_keywords: ["CDBPropSet", "ATL.CDBPropSet", "ATL::CDBPropSet", "CDBPropSet::AddProperty", "CDBPropSet.AddProperty", "AddProperty", "ATL::CDBPropSet::AddProperty", "ATL.CDBPropSet.AddProperty", "CDBPropSet.CDBPropSet", "CDBPropSet::CDBPropSet", "ATL::CDBPropSet::CDBPropSet", "ATL.CDBPropSet.CDBPropSet", "CDBPropSet.operator=", "ATL::CDBPropSet::operator=", "ATL.CDBPropSet.operator=", "CDBPropSet::operator=", "ATL.CDBPropSet.SetGUID", "CDBPropSet.SetGUID", "ATL::CDBPropSet::SetGUID", "CDBPropSet::SetGUID"] helpviewer_keywords: ["CDBPropSet class", "AddProperty method", "CDBPropSet class, constructor", "operator =, property sets", "= operator, with OLE DB templates", "operator=, property sets", "SetGUID method", "AddProperty method"] -ms.assetid: 54190149-c277-4679-b81a-ef484d4d1c00 --- # CDBPropSet Class @@ -144,8 +143,8 @@ CDBPropSet& operator =(CDBPropSet& propset) throw(); ## See also -[OLE DB Consumer Templates](../../data/oledb/ole-db-consumer-templates-cpp.md)
-[OLE DB Consumer Templates Reference](../../data/oledb/ole-db-consumer-templates-reference.md)
-[CDBPropIDSet Class](../../data/oledb/cdbpropidset-class.md)
-[DBPROPSET Structure](/previous-versions/windows/desktop/ms714367(v=vs.85)) +[OLE DB Consumer Templates](../../data/oledb/ole-db-consumer-templates-cpp.md)\ +[OLE DB Consumer Templates Reference](../../data/oledb/ole-db-consumer-templates-reference.md)\ +[CDBPropIDSet Class](../../data/oledb/cdbpropidset-class.md)\ +[DBPROPSET Structure](/previous-versions/windows/desktop/ms714367(v=vs.85))\ [DBPROP Structure](/previous-versions/windows/desktop/ms717970(v=vs.85)) diff --git a/docs/data/oledb/irowsetlocateimpl-class.md b/docs/data/oledb/irowsetlocateimpl-class.md index 082de1f7b90..16872cbd1a0 100644 --- a/docs/data/oledb/irowsetlocateimpl-class.md +++ b/docs/data/oledb/irowsetlocateimpl-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: IRowsetLocateImpl Class" title: "IRowsetLocateImpl Class" +description: "Learn more about: IRowsetLocateImpl Class" ms.date: "11/04/2016" f1_keywords: ["IRowsetLocateImpl", "ATL.IRowsetLocateImpl.Compare", "IRowsetLocateImpl::Compare", "IRowsetLocateImpl.Compare", "ATL::IRowsetLocateImpl::Compare", "GetRowsAt", "IRowsetLocateImpl.GetRowsAt", "ATL::IRowsetLocateImpl::GetRowsAt", "IRowsetLocateImpl::GetRowsAt", "ATL.IRowsetLocateImpl.GetRowsAt", "IRowsetLocateImpl::GetRowsByBookmark", "IRowsetLocateImpl.GetRowsByBookmark", "GetRowsByBookmark", "IRowsetLocateImpl::Hash", "IRowsetLocateImpl.Hash", "m_rgBookmarks", "IRowsetLocateImpl::m_rgBookmarks", "ATL.IRowsetLocateImpl.m_rgBookmarks", "ATL::IRowsetLocateImpl::m_rgBookmarks", "IRowsetLocateImpl.m_rgBookmarks"] helpviewer_keywords: ["providers, bookmarks", "IRowsetLocateImpl class", "bookmarks, OLE DB", "Compare method", "GetRowsAt method", "GetRowsByBookmark method", "Hash method", "m_rgbookmarks"] -ms.assetid: a8aa3149-7ce8-4976-a680-2da193fd3234 --- # IRowsetLocateImpl Class @@ -202,8 +201,8 @@ CAtlArray m_rgBookmarks; ## See also -[OLE DB Provider Templates](../../data/oledb/ole-db-provider-templates-cpp.md)
-[OLE DB Provider Template Architecture](../../data/oledb/ole-db-provider-template-architecture.md)
-[IRowsetLocate:IRowset](/previous-versions/windows/desktop/ms721190(v=vs.85)) -[Provider Support for Bookmarks](../../data/oledb/provider-support-for-bookmarks.md)
+[OLE DB Provider Templates](../../data/oledb/ole-db-provider-templates-cpp.md)\ +[OLE DB Provider Template Architecture](../../data/oledb/ole-db-provider-template-architecture.md)\ +[IRowsetLocate:IRowset](/previous-versions/windows/desktop/ms721190(v=vs.85))\ +[Provider Support for Bookmarks](../../data/oledb/provider-support-for-bookmarks.md)\ [Bookmarks](/previous-versions/windows/desktop/ms709728(v=vs.85)) diff --git a/docs/data/oledb/irowsetnotifyimpl-class.md b/docs/data/oledb/irowsetnotifyimpl-class.md index 314202ddd9b..8737941bcd0 100644 --- a/docs/data/oledb/irowsetnotifyimpl-class.md +++ b/docs/data/oledb/irowsetnotifyimpl-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: IRowsetNotifyImpl Class" title: "IRowsetNotifyImpl Class" +description: "Learn more about: IRowsetNotifyImpl Class" ms.date: "11/04/2016" f1_keywords: ["ATL.IRowsetNotifyImpl", "ATL::IRowsetNotifyImpl", "IRowsetNotifyImpl", "IRowsetNotifyImpl.OnFieldChange", "IRowsetNotifyImpl::OnFieldChange", "OnFieldChange", "IRowsetNotifyImpl::OnRowChange", "IRowsetNotifyImpl.OnRowChange", "OnRowChange", "OnRowsetChange", "IRowsetNotifyImpl::OnRowsetChange", "IRowsetNotifyImpl.OnRowsetChange"] helpviewer_keywords: ["IRowsetNotifyImpl class", "OnFieldChange method", "OnRowChange method", "OnRowsetChange method"] -ms.assetid: fbfd0cb2-38ff-4b42-899a-8de902f834b8 --- # IRowsetNotifyImpl Class @@ -121,6 +120,6 @@ This method wraps the [IRowsetNotify::OnRowsetChange](/previous-versions/windows ## See also -[OLE DB Consumer Templates](../../data/oledb/ole-db-consumer-templates-cpp.md)
-[IRowsetNotify](/previous-versions/windows/desktop/ms712959(v=vs.85)) +[OLE DB Consumer Templates](../../data/oledb/ole-db-consumer-templates-cpp.md)\ +[IRowsetNotify](/previous-versions/windows/desktop/ms712959(v=vs.85))\ [IRowsetNotifyCP Class](../../data/oledb/irowsetnotifycp-class.md) diff --git a/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md b/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md index 86313c39160..bc1f2f17fe6 100644 --- a/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md +++ b/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md @@ -1,8 +1,7 @@ --- -description: "Learn more about: Resource compiler errors and warnings (RCxxxx, RWxxxx)" title: "Resource compiler errors and warnings" +description: "Learn more about: Resource compiler errors and warnings (RCxxxx, RWxxxx)" ms.date: "04/17/2019" -ms.assetid: 0819f955-0561-491d-af3d-2453f4e2d035 --- # Resource compiler errors and warnings (RCxxxx, RWxxxx) @@ -94,5 +93,5 @@ This section is a reference to the errors generated by the resource compiler. Re ## See also -[C/C++ Compiler and build tools errors and warnings](../compiler-errors-1/c-cpp-build-errors.md) +[C/C++ Compiler and build tools errors and warnings](../compiler-errors-1/c-cpp-build-errors.md)\ [Resource compiler](/windows/win32/menurc/resource-compiler) diff --git a/docs/mfc/dynamic-object-creation.md b/docs/mfc/dynamic-object-creation.md index 508a2012a9e..a7e77c3fe66 100644 --- a/docs/mfc/dynamic-object-creation.md +++ b/docs/mfc/dynamic-object-creation.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Dynamic Object Creation" title: "Dynamic Object Creation" +description: "Learn more about: Dynamic Object Creation" ms.date: "03/27/2020" helpviewer_keywords: ["object creation [MFC], dynamically at run time", "CObject class [MFC], dynamic object creation", "objects [MFC], creating dynamically at run time", "dynamic object creation [MFC]"] -ms.assetid: 3e0f51cb-3e24-4231-817f-1c0ce9f2d5df --- # Dynamic Object Creation @@ -17,5 +16,5 @@ This article explains how to create an object dynamically at run time. The proce ## See also -[Destroying Window Objects](tn017-destroying-window-objects.md) +[Destroying Window Objects](tn017-destroying-window-objects.md)\ [Using CObject](using-cobject.md) diff --git a/docs/standard-library/charconv-functions.md b/docs/standard-library/charconv-functions.md index 296364799d2..8f601eef05e 100644 --- a/docs/standard-library/charconv-functions.md +++ b/docs/standard-library/charconv-functions.md @@ -236,6 +236,6 @@ int main() ## See also -[\](charconv.md) -[The shortest decimal string that round-trips](https://www.exploringbinary.com/the-shortest-decimal-string-that-round-trips-examples/) +[\](charconv.md)\ +[The shortest decimal string that round-trips](https://www.exploringbinary.com/the-shortest-decimal-string-that-round-trips-examples/)\ [printf() format specifiers](..\c-runtime-library\format-specification-syntax-printf-and-wprintf-functions.md) diff --git a/docs/standard-library/lazy-split-view-class.md b/docs/standard-library/lazy-split-view-class.md index c910a9bb5ee..1736de4824c 100644 --- a/docs/standard-library/lazy-split-view-class.md +++ b/docs/standard-library/lazy-split-view-class.md @@ -236,6 +236,6 @@ The sentinel that follows the last element in the view: ## See also [``](ranges.md)\ -[`lazy_split` range adaptor](range-adaptors.md#lazy_split) +[`lazy_split` range adaptor](range-adaptors.md#lazy_split)\ [`split_view` class](split-view-class.md)\ [view classes](view-classes.md) diff --git a/docs/standard-library/month-day-last-class.md b/docs/standard-library/month-day-last-class.md index bf074911f60..7b7780dfbe2 100644 --- a/docs/standard-library/month-day-last-class.md +++ b/docs/standard-library/month-day-last-class.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: month_day_last Class" title: "month_day_last class" +description: "Learn more about: month_day_last Class" ms.date: "06/28/2021" f1_keywords: ["chrono/std::chrono::month_day_last", "chrono/std::chrono::month_day_last::month", "chrono/std::chrono::month_day_last::ok"] helpviewer_keywords: ["std::chrono [C++], month_day_last"] @@ -111,5 +111,5 @@ constexpr bool ok() const noexcept; [`month_day_last` class](month-day-last-class.md)\ [`month_weekday` class](month-weekday-class.md)\ [`month_weekday_last` class](month-weekday-last-class.md)\ -[`operator/`](chrono-operators.md#op_/) -[Header Files Reference](cpp-standard-library-header-files.md) \ No newline at end of file +[`operator/`](chrono-operators.md#op_/)\ +[Header Files Reference](cpp-standard-library-header-files.md) diff --git a/docs/standard-library/unordered-map-functions.md b/docs/standard-library/unordered-map-functions.md index 36f731bacf1..bc5c9b2cf80 100644 --- a/docs/standard-library/unordered-map-functions.md +++ b/docs/standard-library/unordered-map-functions.md @@ -1,14 +1,13 @@ --- -description: "Learn more about: functions" title: " functions" +description: "Learn more about: functions" ms.date: "11/04/2016" f1_keywords: ["unordered_map/std::swap", "unordered_map/std::swap (unordered_map)", "unordered_map/std::swap (unordered_multimap)"] -ms.assetid: cf2e4115-f205-4a0e-90be-a143ffcc1f44 helpviewer_keywords: ["std::swap (unordered_map/multimap)"] --- # `` functions -[swap (unordered_map)](#swap) +[swap (unordered_map)](#swap)\ [swap (unordered_multimap)](#swap_function_multimap) ## swap (unordered_map) diff --git a/docs/standard-library/year-month-weekday-class.md b/docs/standard-library/year-month-weekday-class.md index f88f88c341c..58e77234861 100644 --- a/docs/standard-library/year-month-weekday-class.md +++ b/docs/standard-library/year-month-weekday-class.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: year_month_weekday class" title: "year_month_weekday class" +description: "Learn more about: year_month_weekday class" ms.date: "06/30/2021" f1_keywords: ["chrono/std::chrono::year_month_weekday", "chrono/std::chrono::year_month_weekday::weekday", "chrono/std::chrono::year_month_weekday::month", "chrono/std::chrono::year_month_weekday::index", "chrono/std::chrono::year_month_weekday::year", "chrono/std::chrono::year_month_weekday::weekday", "chrono/std::chrono::year_month_weekday::weekday_indexed", "chrono/std::chrono::year_month_weekday::sys_days", "chrono/std::chrono::year_month_weekday::local_days", "chrono/std::chrono::year_month_weekday::ok", "chrono/std::chrono::year_month_weekday::operator+=", "chrono/std::chrono::year_month_weekday::operator-=", "chrono/std::chrono::year_month_weekday::operator local_days", "chrono/std::chrono::year_month_weekday::operator sys_days"] helpviewer_keywords: ["std::chrono [C++], year_month_weekday"] @@ -325,5 +325,5 @@ The [`year`](year-class.md) value. [`year_month_day`](year-month-day-class.md)\ [`year_month_day_last`](year-month-day-last-class.md)\ [`year_month_weekday_last`](year-month-weekday-last-class.md)\ -[`operator/`](chrono-operators.md#op_/) -[Header Files Reference](cpp-standard-library-header-files.md) \ No newline at end of file +[`operator/`](chrono-operators.md#op_/)\ +[Header Files Reference](cpp-standard-library-header-files.md) diff --git a/docs/windows/adding-editing-or-deleting-controls.md b/docs/windows/adding-editing-or-deleting-controls.md index e068e19ef64..92993bd1f9e 100644 --- a/docs/windows/adding-editing-or-deleting-controls.md +++ b/docs/windows/adding-editing-or-deleting-controls.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: How To: Add, Edit, or Delete Controls (C++)" title: "How To: Add, Edit, or Delete Controls (C++)" +description: "Learn more about: How To: Add, Edit, or Delete Controls (C++)" ms.date: "02/15/2019" f1_keywords: ["vc.controls.activex", "vc.editors.dialog.insertActiveXControls"] helpviewer_keywords: ["Dialog Editor [C++], creating controls", "dialog boxes [C++], adding controls to", "Toolbox [C++], Dialog Editor tab", "controls [C++], types", "syslink controls in dialog boxes", "custom controls [C++], dialog boxes", "controls [C++], standard", "Dialog Editor [C++], creating controls", "controls [C++], adding to dialog boxes", "controls [C++], adding multiple", "dialog box controls [C++], size", "controls [C++], sizing", "dialog boxes [C++], adding ActiveX controls", "ActiveX controls [C++], adding to dialog boxes", "Insert ActiveX Control dialog box [C++]", "controls [C++], editing properties", "ActiveX controls [C++], properties", "controls [C++], undoing changes", "controls [C++], editing properties", "dialog box controls [C++], editing properties", "dialog box controls [C++], deleting", "controls [C++], deleting", "Dialog Editor [C++], default control events", "controls [C++], default control events", "events [C++], controls", "dialog box controls [C++], events", "member variables, defining for controls", "variables, dialog box control member variables", "controls [C++], member variables", "Dialog Editor [C++], defining member variables for controls", "controls [C++], troubleshooting", "Dialog Editor [C++], troubleshooting", "dialog boxes [C++], troubleshooting", "InitCommonControls", "RichEdit 1.0 control", "rich edit controls [C++], RichEdit 1.0"] -ms.assetid: 73cef03f-5c8c-456a-87d1-1458dff185cf --- # How To: Add, Edit, or Delete Controls (C++) @@ -204,17 +203,17 @@ Win32 ## See also -[Manage Dialog Box Controls](controls-in-dialog-boxes.md)
-[How To: Layout Controls](arrangement-of-controls-on-dialog-boxes.md)
+[Manage Dialog Box Controls](controls-in-dialog-boxes.md)\ +[How To: Layout Controls](arrangement-of-controls-on-dialog-boxes.md)\ [How to: Define Control Access and Values](defining-mnemonics-access-keys.md) diff --git a/docs/windows/string-editor.md b/docs/windows/string-editor.md index 7420162cb20..dc8745b0fad 100644 --- a/docs/windows/string-editor.md +++ b/docs/windows/string-editor.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: String Editor (C++)" title: "String Editor (C++)" +description: "Learn more about: String Editor (C++)" ms.date: "02/14/2019" f1_keywords: ["vc.editors.string.F1", "vc.editors.string"] helpviewer_keywords: ["String editor", "string tables", "string tables [C++], String editor", "string editing", "string editing, string tables", "resource editors [C++], String editor", "strings [C++], editing", "strings [C++], searching", "strings [C++]", "strings [C++], adding to string tables", "string tables [C++], deleting strings", "strings [C++], deleting in string tables", "string tables [C++], adding strings", "strings [C++], moving between files", "resource script files [C++], moving strings", "string editing, moving strings between resources", "String editor [C++], moving strings between files", "resource identifiers, string properties", "string tables [C++], changing strings", "strings [C++], properties", "String editor [C++], changing properties of multiple strings", "string tables [C++], changing caption of multiple strings", "special characters, adding to strings", "ASCII characters, adding to strings", "strings [C++], formatting", "strings [C++], special characters"] -ms.assetid: f71ab8de-3068-4e29-8e28-5a33d18dd416 --- # String Editor (C++) @@ -137,7 +136,7 @@ Win32 ## See also -[Resource Editors](../windows/resource-editors.md) -[Strings](/windows/win32/menurc/strings)
-[About Strings](/windows/win32/menurc/about-strings)
+[Resource Editors](../windows/resource-editors.md)\ +[Strings](/windows/win32/menurc/strings)\ +[About Strings](/windows/win32/menurc/about-strings)\ [Customizing window layouts](/visualstudio/ide/customizing-window-layouts-in-visual-studio) From 70cf715d7dfcf2c9beafbf13d5220cad28d4404c Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Thu, 20 Feb 2025 11:20:01 -0800 Subject: [PATCH 0161/2255] Add clarification on why this should be fixed by developers --- docs/code-quality/c26132.md | 2 ++ docs/code-quality/c26133.md | 2 ++ 2 files changed, 4 insertions(+) diff --git a/docs/code-quality/c26132.md b/docs/code-quality/c26132.md index 969f5847b76..54dcf037bfc 100644 --- a/docs/code-quality/c26132.md +++ b/docs/code-quality/c26132.md @@ -13,6 +13,8 @@ ms.date: 02/11/2025 The analyzer issues Warning C26132 when it detects that a lock, which is annotated to protect a value, isn't held while accessing the value. However, a related lock is held. The code may be thread-safe, so you might need to update the annotations. +This diagnostic usually does not indicate a bug in the code, but rather a mismatch between the annotations and the actual locking behavior. If this is the case, the diagnostic should be resolved as there may be other static analysis issues that are not being reported due to the inconsistant annotations. + ## Examples In the following example, C26132 is emitted when `data` is used. diff --git a/docs/code-quality/c26133.md b/docs/code-quality/c26133.md index cdc18a407ee..9e4f9ef7465 100644 --- a/docs/code-quality/c26133.md +++ b/docs/code-quality/c26133.md @@ -13,6 +13,8 @@ ms.date: 02/19/2025 Warning C26133 is issued when the analyzer detects that the lock required to call a function isn't held when the function is called. However, another lock that appears to be related is held. It's possible the code is thread-safe, and the annotations need to be updated. +This diagnostic usually does not indicate a bug in the code, but rather a mismatch between the annotations and the actual locking behavior. If this is the case, the diagnostic should be resolved as there may be other static analysis issues that are not being reported due to the inconsistant annotations. + ## Examples In the following example, C26133 is emitted when `DoTaskWithCustomLock` is called. From da1ffe0f3828088c598d751041daf9d42835f476 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Thu, 20 Feb 2025 11:27:36 -0800 Subject: [PATCH 0162/2255] Fix typos and improve clarity in docs --- docs/code-quality/c26132.md | 4 ++-- docs/code-quality/c26133.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/code-quality/c26132.md b/docs/code-quality/c26132.md index 54dcf037bfc..390903a6059 100644 --- a/docs/code-quality/c26132.md +++ b/docs/code-quality/c26132.md @@ -13,7 +13,7 @@ ms.date: 02/11/2025 The analyzer issues Warning C26132 when it detects that a lock, which is annotated to protect a value, isn't held while accessing the value. However, a related lock is held. The code may be thread-safe, so you might need to update the annotations. -This diagnostic usually does not indicate a bug in the code, but rather a mismatch between the annotations and the actual locking behavior. If this is the case, the diagnostic should be resolved as there may be other static analysis issues that are not being reported due to the inconsistant annotations. +This diagnostic usually doesn't indicate a bug in the code, but rather a mismatch between the annotations and the actual locking behavior. If so, the diagnostic should be resolved as there may be other static analysis issues that aren't being reported due to the inconsistent annotations. ## Examples @@ -45,7 +45,7 @@ void Initialize(_Guarded_by_(customLock01) int* data) } ``` -In this example, the `Initialize` function is thread-safe and behaves as designed, but that design isn't correctly reflected in the concurrency SAL annotations. Fix by adjusting the annotations on the custom locking functions to use `criticalSection` rather than `criticalSection->cs`. This could also be fixed by changing the `_Guarded_by_` annotation from `customLock01` to `customLock01.cs`. +In this example, the `Initialize` function is thread-safe and behaves as designed, but that design isn't correctly reflected in the concurrency SAL annotations. Fix by adjusting the annotations on the custom locking functions to use `criticalSection` rather than `criticalSection->cs`. The warning could also be fixed by changing the `_Guarded_by_` annotation from `customLock01` to `customLock01.cs`. ```cpp #include diff --git a/docs/code-quality/c26133.md b/docs/code-quality/c26133.md index 9e4f9ef7465..0074674044e 100644 --- a/docs/code-quality/c26133.md +++ b/docs/code-quality/c26133.md @@ -13,7 +13,7 @@ ms.date: 02/19/2025 Warning C26133 is issued when the analyzer detects that the lock required to call a function isn't held when the function is called. However, another lock that appears to be related is held. It's possible the code is thread-safe, and the annotations need to be updated. -This diagnostic usually does not indicate a bug in the code, but rather a mismatch between the annotations and the actual locking behavior. If this is the case, the diagnostic should be resolved as there may be other static analysis issues that are not being reported due to the inconsistant annotations. +This diagnostic usually doesn't indicate a bug in the code, but rather a mismatch between the annotations and the actual locking behavior. If so, the diagnostic should be resolved as there may be other static analysis issues that aren't being reported due to the inconsistent annotations. ## Examples @@ -47,7 +47,7 @@ void DoTask() } ``` -In this example, the `DoTask` function is thread-safe and behaves as designed, but that design isn't correctly reflected in the concurrency SAL annotations. Fix by adjusting the annotations on the custom locking functions to use `criticalSection` rather than `criticalSection->cs`. This could also be fixed by changing the `_Requires_lock_held_` annotation from `customLock01` to `customLock01.cs`. +In this example, the `DoTask` function is thread-safe and behaves as designed, but that design isn't correctly reflected in the concurrency SAL annotations. Fix by adjusting the annotations on the custom locking functions to use `criticalSection` rather than `criticalSection->cs`. The warning could also be fixed by changing the `_Requires_lock_held_` annotation from `customLock01` to `customLock01.cs`. ```cpp #include From 8fcae9a0a59aff0e81a8fbbe5de90a405388a60d Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Thu, 20 Feb 2025 14:22:29 -0800 Subject: [PATCH 0163/2255] Fix formatting in compiler error C2394 documentation Matched what's in the compiler-errors-c2300-through-c2399.md doc, which also matches what I get when I compile this error. --- docs/error-messages/compiler-errors-1/compiler-error-c2394.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2394.md b/docs/error-messages/compiler-errors-1/compiler-error-c2394.md index b65d5c3ea26..7e5ede5979e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2394.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2394.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2394"] --- # Compiler Error C2394 -"type::operator 'operator'": CLR/WinRT operator not valid. At least one parameter must be of the following types: 'T^', 'T^%', 'T^&', where T = 'type' +'*type*::operator *operator*': CLR/WinRT operator not valid. At least one parameter must be of the following types: 'T^', 'T^%', 'T^&', where T = 'type' An operator in a Windows Runtime or managed type did not have at least one parameter whose type is the same as the type of the operator return value. From 1f8b8be00541cd8df3e6b5277426067ef4c10051 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 21 Feb 2025 16:16:28 +0800 Subject: [PATCH 0164/2255] Prepend "C" to warning link texts --- docs/code-quality/c26450.md | 8 ++++---- docs/code-quality/c26451.md | 8 ++++---- docs/code-quality/c26452.md | 8 ++++---- docs/code-quality/c26453.md | 8 ++++---- docs/code-quality/c26454.md | 10 +++++----- 5 files changed, 21 insertions(+), 21 deletions(-) diff --git a/docs/code-quality/c26450.md b/docs/code-quality/c26450.md index ec01abc830e..2f4d1f351da 100644 --- a/docs/code-quality/c26450.md +++ b/docs/code-quality/c26450.md @@ -43,8 +43,8 @@ long long multiply() ## See also -[26451](c26451.md)\ -[26452](c26452.md)\ -[26453](c26453.md)\ -[26454](c26454.md)\ +[C26451](c26451.md)\ +[C26452](c26452.md)\ +[C26453](c26453.md)\ +[C26454](c26454.md)\ [ES.103: Don't overflow](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-overflow) diff --git a/docs/code-quality/c26451.md b/docs/code-quality/c26451.md index 725ce91a6c6..0067e427188 100644 --- a/docs/code-quality/c26451.md +++ b/docs/code-quality/c26451.md @@ -45,8 +45,8 @@ void leftshift(int i) noexcept ## See also -[26450](c26450.md)\ -[26452](c26452.md)\ -[26453](c26453.md)\ -[26454](c26454.md)\ +[C26450](c26450.md)\ +[C26452](c26452.md)\ +[C26453](c26453.md)\ +[C26454](c26454.md)\ [ES.103: Don't overflow](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Res-overflow) diff --git a/docs/code-quality/c26452.md b/docs/code-quality/c26452.md index d6f004eaa57..14a7f7d7279 100644 --- a/docs/code-quality/c26452.md +++ b/docs/code-quality/c26452.md @@ -37,9 +37,9 @@ unsigned long long combine(unsigned lo, unsigned hi) ## See also -[26450](c26450.md)\ -[26451](c26451.md)\ -[26453](c26453.md)\ -[26454](c26454.md)\ +[C26450](c26450.md)\ +[C26451](c26451.md)\ +[C26453](c26453.md)\ +[C26454](c26454.md)\ [ES.101: Use unsigned types for bit manipulation](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-unsigned)\ [ES.102: Use signed types for arithmetic](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-signed) diff --git a/docs/code-quality/c26453.md b/docs/code-quality/c26453.md index 7012f697ae8..f7a44f29ab0 100644 --- a/docs/code-quality/c26453.md +++ b/docs/code-quality/c26453.md @@ -39,9 +39,9 @@ void leftshift(int shiftCount) ## See also -[26450](c26450.md)\ -[26451](c26451.md)\ -[26452](c26452.md)\ -[26454](c26454.md)\ +[C26450](c26450.md)\ +[C26451](c26451.md)\ +[C26452](c26452.md)\ +[C26454](c26454.md)\ [ES.101: Use unsigned types for bit manipulation](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-unsigned)\ [ES.102: Use signed types for arithmetic](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-signed) diff --git a/docs/code-quality/c26454.md b/docs/code-quality/c26454.md index 15940afe9ec..3192bead3bd 100644 --- a/docs/code-quality/c26454.md +++ b/docs/code-quality/c26454.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Arithmetic overflow: 'operator' operation produces a negative unsigned result at compile time" title: Warning C26454 +description: "Learn more about: Arithmetic overflow: 'operator' operation produces a negative unsigned result at compile time" ms.date: 01/08/2017 f1_keywords: ["C26454", "RESULT_OF_ARITHMETIC_OPERATION_NEGATIVE_UNSIGNED"] helpviewer_keywords: ["C26454"] @@ -37,8 +37,8 @@ unsigned int negativeunsigned() ## See also -[26450](c26450.md)\ -[26451](c26451.md)\ -[26452](c26452.md)\ -[26453](c26453.md)\ +[C26450](c26450.md)\ +[C26451](c26451.md)\ +[C26452](c26452.md)\ +[C26453](c26453.md)\ [ES.106: Don't try to avoid negative values by using unsigned](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-nonnegative) From 575f69c03f02c90a1ac64c4bec976518491437cd Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 21 Feb 2025 16:39:41 +0800 Subject: [PATCH 0165/2255] Convert all right parenthesis in ordered lists to period --- docs/code-quality/c26488.md | 9 ++++----- docs/code-quality/c26489.md | 9 ++++----- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/docs/code-quality/c26488.md b/docs/code-quality/c26488.md index b3ae0ce8885..a54608facb9 100644 --- a/docs/code-quality/c26488.md +++ b/docs/code-quality/c26488.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Warning C26488 LIFETIMES_DEREF_NULL_POINTER" title: Warning C26488 +description: "Learn more about: Warning C26488 LIFETIMES_DEREF_NULL_POINTER" ms.date: 12/14/2018 f1_keywords: ["C26488", "LIFETIMES_DEREF_NULL_POINTER"] helpviewer_keywords: ["C26488"] -ms.assetid: 2ade0d31-f259-49de-8676-cce6092fabfc author: kylereedmsft ms.author: kylereed --- @@ -28,9 +27,9 @@ void ex1() The Lifetime guidelines from the C++ core guidelines outline a contract that code can follow which will enable more thorough static memory leak and dangling pointer detection. The basic ideas behind the guidelines are: -1) Never dereference an invalid (dangling) or known-null pointer -2) Never return (either formal return or out parameter) any pointer from a function. -3) Never pass an invalid (dangling) pointer to any function. +1. Never dereference an invalid (dangling) or known-null pointer. +1. Never return (either formal return or out parameter) any pointer from a function. +1. Never pass an invalid (dangling) pointer to any function. ## See also diff --git a/docs/code-quality/c26489.md b/docs/code-quality/c26489.md index 2f252dc7665..85df9e569a0 100644 --- a/docs/code-quality/c26489.md +++ b/docs/code-quality/c26489.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Warning C26489 LIFETIMES_DEREF_INVALID_POINTER" title: Warning C26489 +description: "Learn more about: Warning C26489 LIFETIMES_DEREF_INVALID_POINTER" ms.date: 12/14/2018 f1_keywords: ["C26489", "LIFETIMES_DEREF_INVALID_POINTER"] helpviewer_keywords: ["C26489"] -ms.assetid: 15983d4f-f615-42e7-8521-ee094b87d066 author: kylereedmsft ms.author: kylereed --- @@ -30,9 +29,9 @@ int ex1() The Lifetime guidelines from the C++ core guidelines outline a contract that code can follow which will enable more thorough static memory leak and dangling pointer detection. The basic ideas behind the guidelines are: -1) Never dereference an invalid (dangling) or known-null pointer -2) Never return (either formal return or out parameter) any pointer from a function. -3) Never pass an invalid (dangling) pointer to any function. +1. Never dereference an invalid (dangling) or known-null pointer. +1. Never return (either formal return or out parameter) any pointer from a function. +1. Never pass an invalid (dangling) pointer to any function. ## See also From aa7d7bf220d985e4dca858acd5da56e24db7e4c6 Mon Sep 17 00:00:00 2001 From: Takashi Takebayashi Date: Sat, 22 Feb 2025 02:42:58 +0900 Subject: [PATCH 0166/2255] Fix typo (#5197) Visual studio -> Visual Studio --- docs/build/vscpp-step-0-installation.md | 2 +- docs/build/vscpp-step-1-create.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build/vscpp-step-0-installation.md b/docs/build/vscpp-step-0-installation.md index 59fc3131c8d..8c4a303bb89 100644 --- a/docs/build/vscpp-step-0-installation.md +++ b/docs/build/vscpp-step-0-installation.md @@ -64,7 +64,7 @@ After the installer is installed, you can use it to customize your installation 1. Find the workload you want in the **Installing Visual Studio** screen. - :::image type="content" source="../get-started/media/vs2022-installer-workloads.png" alt-text="Visual studio installer with the Desktop development with C++ workload selected." lightbox="../get-started/media/vs2022-installer-workloads.png"::: + :::image type="content" source="../get-started/media/vs2022-installer-workloads.png" alt-text="Visual Studio installer with the Desktop development with C++ workload selected." lightbox="../get-started/media/vs2022-installer-workloads.png"::: For core C and C++ support, choose the "Desktop development with C++" workload. It comes with the default core editor, which includes basic code editing support for over 20 languages, the ability to open and edit code from any folder without requiring a project, and integrated source code control. diff --git a/docs/build/vscpp-step-1-create.md b/docs/build/vscpp-step-1-create.md index f3a3546d390..e4830eee922 100644 --- a/docs/build/vscpp-step-1-create.md +++ b/docs/build/vscpp-step-1-create.md @@ -81,7 +81,7 @@ Visual Studio now knows to build your project to run in a console window. Next, ![View of the process to add a source file for HelloWorld.cpp.](media/vscpp-add-new-item.gif "Add a source file for HelloWorld.cpp") -Visual studio creates a new, empty source code file and opens it in an editor window, ready to enter your source code. +Visual Studio creates a new, empty source code file and opens it in an editor window, ready to enter your source code. [I ran into a problem.](#add-a-source-code-file-issues) From 06284c66cbd5e31156e1769feb8a6d6b46c09ad0 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Fri, 21 Feb 2025 10:09:00 -0800 Subject: [PATCH 0167/2255] Learn Editor: Update compiler-fatal-errors-c999-through-c1999.md --- .../compiler-fatal-errors-c999-through-c1999.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md b/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md index 0bb402090b1..21a3fa6c80d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md +++ b/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md @@ -42,6 +42,7 @@ The articles in this section of the documentation explain a subset of the error | [Fatal error C1025](fatal-error-c1025-c1115.md) | too many nested lambdas | | [Fatal error C1026](fatal-error-c1026.md) | parser stack overflow, program too complex | | Fatal error C1027 | **(Obsolete)** Inconsistent values for /Ym between creation and use of precompiled header | +| Fatal error C1028 | missing IFC for analysis. Please rebuild *module* '*ifc filename*' with `/analyze`. | | Fatal error C1030 | WMMX types not allowed in the function signature by the calling convention | | Fatal error C1032 | `__eabi` requires VFP code generation (`/QRfpe-`) | | [Fatal error C1033](fatal-error-c1033.md) | cannot open program database '*file*' | @@ -101,6 +102,7 @@ The articles in this section of the documentation explain a subset of the error | [Fatal error C1092](fatal-error-c1092.md) | Edit and Continue does not support changes to data types; build required | | [Fatal error C1093](fatal-error-c1093.md) | API call '*function*' failed '*HRESULT*': '*description*' | | [Fatal error C1094](fatal-error-c1094.md) | '`-Zm`*number*': command line option is inconsistent with value used to build precompiled header ('`-Zm`*number*') | +| Fatal error C1095 | Failed to locate a free memory range. Use `/Yb` to specify a base address. | | [Fatal error C1098](fatal-error-c1098.md) | Version mismatch with Edit and Continue engine | | [Fatal error C1099](fatal-error-c1099.md) | Edit and Continue engine terminating compile | | [Fatal error C1100](fatal-error-c1100.md) | unable to initialize OLE: *error* | From 150c71b03c5538c97689c276ef9f5dcc08027307 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Fri, 21 Feb 2025 10:11:16 -0800 Subject: [PATCH 0168/2255] Learn Editor: Update compiler-fatal-errors-c999-through-c1999.md --- .../compiler-fatal-errors-c999-through-c1999.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md b/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md index 21a3fa6c80d..32e6fabed04 100644 --- a/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md +++ b/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md @@ -111,6 +111,7 @@ The articles in this section of the documentation explain a subset of the error | [Fatal error C1103](fatal-error-c1103.md) | fatal error importing progid: '*message*' | | [Fatal error C1104](fatal-error-c1104.md) | fatal error importing libid: '*message*' | | Fatal error C1105 | *message*: *HRESULT error* | +| Fatal error C1106 | compiler limit: only *number* function parameters are allowed | | [Fatal error C1107](fatal-error-c1107.md) | could not find assembly '*assembly*': please specify the assembly search path using `/AI` or by setting the `LIBPATH` environment variable | | [Fatal error C1108](fatal-error-c1108.md) | unable to find DLL: '*file*' | | [Fatal error C1109](fatal-error-c1109.md) | unable to find '*symbol*' in DLL '*file*' | @@ -154,6 +155,7 @@ The articles in this section of the documentation explain a subset of the error | Fatal error C1212 | Input file was modified by another process while building: '*filename*' | | Fatal error C1213 | Header units are unsupported without `/Zc:preprocessor` | | Fatal error C1214 | Modules conflict with non-standard behavior requested via '*option*' | +| Fatal error C1215 | Cannot open file '*filename*' corresponding to warning set '`-W`*warning set*' | | Fatal error C1300 | error accessing program database *file* (*message*) | | Fatal error C1301 | error accessing program database *file*, invalid format, please delete and rebuild | | Fatal error C1302 | no profile data for module '*module*' in profile database '*file*' | From 8bad331b049b6d44089f07ef121b1b87033604b3 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Fri, 21 Feb 2025 10:17:22 -0800 Subject: [PATCH 0169/2255] Learn Editor: Update compiler-fatal-errors-c999-through-c1999.md --- .../compiler-fatal-errors-c999-through-c1999.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md b/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md index 32e6fabed04..8bdd8d835c0 100644 --- a/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md +++ b/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md @@ -26,7 +26,7 @@ The articles in this section of the documentation explain a subset of the error | [Fatal error C1009](fatal-error-c1009.md) | compiler limit: macros nested too deeply | | [Fatal error C1010](fatal-error-c1010.md) | unexpected end of file while looking for precompiled header. Did you forget to add '`#include <`*file*`>`' to your source? | | [Fatal error C1011](fatal-error-c1011.md) | cannot locate standard module interface. Did you install the library part of the C++ modules feature in VS setup? | -| [Fatal error C1012](fatal-error-c1012.md) | unmatched parenthesis: missing '*character*" | +| [Fatal error C1012](fatal-error-c1012.md) | unmatched parenthesis: missing '*character* | | [Fatal error C1013](fatal-error-c1013.md) | compiler limit: too many open parentheses | | [Fatal error C1014](fatal-error-c1014.md) | too many include files: depth = *number* | | [Fatal error C1015](fatal-error-c1015.md) | header-names '*header-name*' and '*header-name*' identify the same header and cannot be used as both `/headerUnit:quoted` and `/headerUnit:angle` arguments; please provide this header-name only once | @@ -117,7 +117,7 @@ The articles in this section of the documentation explain a subset of the error | [Fatal error C1109](fatal-error-c1109.md) | unable to find '*symbol*' in DLL '*file*' | | Fatal error C1110 | too many nested template/generic definitions | | Fatal error C1111 | too many template/generic parameters | -| Fatal error C1112 | compiler limit: '*number*' too many macro arguments, only *number* allowed | +| Fatal error C1112 | compiler limit: '*number*' too many macro arguments, only '*number*' allowed | | [Fatal error C1113](fatal-error-c1113.md) | `#using` failed on '*file*' | | Fatal error C1114 | '*file*': WinRT does not support `#using` of a managed assembly | | [Fatal error C1115](fatal-error-c1025-c1115.md) | too many nested lambdas | @@ -131,7 +131,7 @@ The articles in this section of the documentation explain a subset of the error | Fatal error C1127 | *Operation* requires *option* | | [Fatal error C1128](fatal-error-c1128.md) | number of sections exceeded object file format limit: compile with `/bigobj` | | [Fatal error C1189](fatal-error-c1189.md) | `#error`: *message* | -| [Fatal error C1190](fatal-error-c1190.md) | managed targeted code requires a '`/clr`' option | +| [Fatal error C1190](fatal-error-c1190.md) | `System::Object` not found, missing `/clr` option or missing import of standard assemblies? | | [Fatal error C1191](fatal-error-c1191.md) | '*file*' can only be imported at global scope | | [Fatal error C1192](fatal-error-c1192.md) | `#using` failed on '*file*' | | Fatal error C1193 | an error expected in *file*(*line*) not reached | From 0fbf2e49e45e358ed9f866dfc1060ad0c486fd7d Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 21 Feb 2025 10:33:15 -0800 Subject: [PATCH 0170/2255] draft --- docs/build/how-to-debug-a-release-build.md | 20 ++++---- .../compiler-options-listed-alphabetically.md | 2 +- .../compiler-options-listed-by-category.md | 4 +- .../reference/debugdeopt-dynamic-debugging.md | 36 ++++++++++++++ docs/build/reference/dynamic-deopt.md | 48 ++++++++++++++++--- docs/build/reference/linker-options.md | 7 +-- 6 files changed, 92 insertions(+), 25 deletions(-) create mode 100644 docs/build/reference/debugdeopt-dynamic-debugging.md diff --git a/docs/build/how-to-debug-a-release-build.md b/docs/build/how-to-debug-a-release-build.md index bb260ccf93e..211080ac04c 100644 --- a/docs/build/how-to-debug-a-release-build.md +++ b/docs/build/how-to-debug-a-release-build.md @@ -1,31 +1,27 @@ --- description: "Learn more about: How to: Debug a Release Build" title: "How to: Debug a Release Build" -ms.date: "11/04/2016" +ms.date: 2/19/2025 helpviewer_keywords: ["debugging [C++], release builds", "release builds, debugging"] -ms.assetid: d333e4d1-4e6c-4384-84a9-cb549702da25 --- # How to: Debug a Release Build -You can debug a release build of an application. +This article explains which compiler and linker switches to set to enable you to debug a release build of an application. -### To debug a release build +A much better experience is available starting in Visual Studio 2022 version 17.14 that allows you to debug optimized code as if it were compiled unoptimized, while retaining the speed of optimized code. For more information, see [C++ Dynamic Debugging](/visualstudio/debugger/dynamic-deopt.md). -1. Open the **Property Pages** dialog box for the project. For details, see [Set C++ compiler and build properties in Visual Studio](working-with-project-properties.md). +## To debug a release build +1. Open the **Property Pages** dialog box for the project. For details, see [Set C++ compiler and build properties in Visual Studio](working-with-project-properties.md). 1. Click the **C/C++** node. Set **Debug Information Format** to [C7 compatible (/Z7)](reference/z7-zi-zi-debug-information-format.md) or **Program Database (/Zi)**. - 1. Expand **Linker** and click the **General** node. Set **Enable Incremental Linking** to [No (/INCREMENTAL:NO)](reference/incremental-link-incrementally.md). - -1. Select the **Debugging** node. Set **Generate Debug Info** to [Yes (/DEBUG)](reference/debug-generate-debug-info.md). - -1. Select the **Optimization** node. Set **References** to [/OPT:REF](reference/opt-optimizations.md) and **Enable COMDAT Folding** to [/OPT:ICF](reference/opt-optimizations.md). - +1. Under **Linker**, select the **Debugging** node. Set **Generate Debug Info** to [Yes (/DEBUG)](reference/debug-generate-debug-info.md). +1. Under **Linker**, select the **Optimization** node. Set **References** to [Yes (/OPT:REF)](reference/opt-optimizations.md) and **Enable COMDAT Folding** to [Yes (/OPT:ICF)](reference/opt-optimizations.md). 1. You can now debug your release build application. To find a problem, step through the code (or use Just-In-Time debugging) until you find where the failure occurs, and then determine the incorrect parameters or code. If an application works in a debug build, but fails in a release build, one of the compiler optimizations may be exposing a defect in the source code. To isolate the problem, disable selected optimizations for each source code file until you locate the file and the optimization that is causing the problem. (To expedite the process, you can divide the files into two groups, disable optimization on one group, and when you find a problem in a group, continue dividing until you isolate the problem file.) - You can use [/RTC](reference/rtc-run-time-error-checks.md) to try to expose such bugs in your debug builds. + Use [/RTC](reference/rtc-run-time-error-checks.md) to try to expose such bugs in your debug builds. For more information, see [Optimizing Your Code](optimizing-your-code.md). diff --git a/docs/build/reference/compiler-options-listed-alphabetically.md b/docs/build/reference/compiler-options-listed-alphabetically.md index 927f74a595d..01159f65cb5 100644 --- a/docs/build/reference/compiler-options-listed-alphabetically.md +++ b/docs/build/reference/compiler-options-listed-alphabetically.md @@ -37,7 +37,7 @@ This table contains an alphabetical list of compiler options. For a list of comp | [`/constexpr:depth`](constexpr-control-constexpr-evaluation.md) | Recursion depth limit for `constexpr` evaluation (default: 512). | | [`/constexpr:steps`](constexpr-control-constexpr-evaluation.md) | Terminate `constexpr` evaluation after N steps (default: 100000) | | [`/D{=|#}`](d-preprocessor-definitions.md) | Defines constants and macros. | -| [`/dynamicdeopt`](dynamic-deopt.md) | Enable C++ Dynamic Debugging. Debug optimized code using dynamic deoptimization. | +| [`/dynamicdeopt`](dynamic-deopt.md) | Enable C++ Dynamic Debugging to debug optimized code as if it were deoptimized. | | [`/diagnostics`](diagnostics-compiler-diagnostic-options.md) | Diagnostics format: prints column information. | | [`/diagnostics:caret[-]`](diagnostics-compiler-diagnostic-options.md) | Diagnostics format: prints column and the indicated line of source. | | [`/diagnostics:classic`](diagnostics-compiler-diagnostic-options.md) | Use legacy diagnostics format. | diff --git a/docs/build/reference/compiler-options-listed-by-category.md b/docs/build/reference/compiler-options-listed-by-category.md index 98078392a49..a3b0c97ad5e 100644 --- a/docs/build/reference/compiler-options-listed-by-category.md +++ b/docs/build/reference/compiler-options-listed-by-category.md @@ -12,7 +12,7 @@ This article contains a categorical list of compiler options. For an alphabetica | Option | Purpose | |--|--| -| [`/dynamicdeopt`](dynamic-deopt.md) | Enable C++ Dynamic Debugging. Debug optimized code using dynamic deoptimization. | +| [`/dynamicdeopt`](dynamic-deopt.md) | Enable C++ Dynamic Debugging to debug optimized code as if it were deoptimized. | | [`/favor:`](favor-optimize-for-architecture-specifics.md) | Produces code that is optimized for a specified architecture, or for a range of architectures. | | [`/O1`](o1-o2-minimize-size-maximize-speed.md) | Creates small code. | | [`/O2`](o1-o2-minimize-size-maximize-speed.md) | Creates fast code. | @@ -209,7 +209,7 @@ This article contains a categorical list of compiler options. For an alphabetica | [`/Zc:zeroSizeArrayNew[-]`](zc-zerosizearraynew.md) | Call member `new`/`delete` for 0-size arrays of objects (on by default). | | [`/Ze`](za-ze-disable-language-extensions.md) | Deprecated. Enables C89 language extensions. | | [`/Zf`](zf.md) | Improves PDB generation time in parallel builds. | -| [`/ZH:[MD5|SHA1|SHA_256]`](zh.md) | Specifies MD5, SHA-1, or SHA-256 for checksums in debug info. | +| [`/ZH`:[MD5|SHA1|SHA_256]](zh.md) | Specifies MD5, SHA-1, or SHA-256 for checksums in debug info. | | [`/ZI`](z7-zi-zi-debug-information-format.md) | Includes debug information in a program database compatible with Edit and Continue. (x86 only) | | [`/Zi`](z7-zi-zi-debug-information-format.md) | Generates complete debugging information. | | [`/Zl`](zl-omit-default-library-name.md) | Removes the default library name from the *`.obj`* file. | diff --git a/docs/build/reference/debugdeopt-dynamic-debugging.md b/docs/build/reference/debugdeopt-dynamic-debugging.md new file mode 100644 index 00000000000..6b25838461b --- /dev/null +++ b/docs/build/reference/debugdeopt-dynamic-debugging.md @@ -0,0 +1,36 @@ +--- +description: "Learn more about: /DEBUGDEOPT (Support C++ Dynamic Debugging)" +title: "| [`/DEBUGDEOPT`](debugdeopt-dynamic-debugging.md) | Creates debugging information for retail builds to support C++ Dynamic Debugging. |" +ms.date: 2/20/2025 +f1_keywords: ["VC.Project.VCLinkerTool.GenerateDebugDeoptInformation", "/debugdeopt"] +helpviewer_keywords: ["DEBUGDEOPT linker option", "/DEBUGDEOPT linker option", "-DEBUGDEOPT linker option", "c++ dynanmic debugging", "generate dynamic debug info linker option"] +--- +# | `/DEBUGDEOPT` (Support C++ Dynamic Debugging) + +The **`/DEBUGDEOPT`** linker options enables C++ Dynamic Debugging which allows you to debug optimized code as if it were deoptimized. This option is only available in Visual Studio 2022 Version 17.14 Preview 2 and later. + +## Syntax + +> **`/DEBUGDEOPT`** + +## Remarks + +This flag is only available for x64 builds. + +The **`/DEBUGDEOPT`** option creates puts the debugging information from linked object and library files into a program database (PDB) file. It updates the PDB during subsequent builds of the program. + +### To set this linker option in the Visual Studio development environment + +1. Open the project's **Property Pages** dialog box. For details, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md). +1. Select the **Linker** > **Debugging** property page. +1. Modify the **Generate Debug Info** property to enable or disable PDB generation. This property enables **`/DEBUG:FASTLINK`** by default in Visual Studio 2017 and later. +1. Modify the **Generate Full Program Database File** property to enable **`/DEBUG:FULL`** for full PDB generation for every incremental build. + +### To set this linker option programmatically + +1. See . + +## See also + +[MSVC linker reference](linking.md)\ +[MSVC linker options](linker-options.md) diff --git a/docs/build/reference/dynamic-deopt.md b/docs/build/reference/dynamic-deopt.md index c07e34258a0..a3a0dbe5358 100644 --- a/docs/build/reference/dynamic-deopt.md +++ b/docs/build/reference/dynamic-deopt.md @@ -1,13 +1,13 @@ --- -title: "/clr (Common Language Runtime compilation)" +title: "/dynamicdeopt (Enable C++ Dynamic Debugging)" description: "Use the Microsoft C++ compiler option /clr to compile C++/CLI and C++ code as managed code." ms.date: 10/27/2020 f1_keywords: ["/dynamicdeopt", "VC.Project.VCNMakeTool.CompileAsManaged", "VC.Project.VCCLCompilerTool.CompileAsManaged"] helpviewer_keywords: ["cl.exe compiler, common language runtime option", "-dynamicdeopt compiler option [C++]", "dynamicdeopt compiler option [C++]", "/clr compiler option [C++]", "Managed Extensions for C++, compiling", "common language runtime, /clr compiler option"] --- -# `/dynamicdeopt` (Enable dynamic debugging) +# `/dynamicdeopt` (Enable C++ Dynamic Debugging) -Place breakpoints in optimized code and step in with on-demand function deoptimization. +Debug optimized code as if it were compiled unoptimized. ## Syntax @@ -17,21 +17,55 @@ Place breakpoints in optimized code and step in with on-demand function deoptimi ## Arguments -*suffix*\ +*`suffix`*\ Specify the file extension for the deoptimized output. One or more of the following comma-separated arguments. - -• /dynamicdeopt:suffix lets you change that new suffix from .alt to something else. We don't expect folks to use this. The gotcha here is that it needs to get set for EVERY file, and it also needs to match the same thing you pass to the linker. If you get it wrong in just a single place the feature can get really weird. But, if folks happen to already have files named blah.alt.cpp and they would prefer a different suffix, we allow that. +• `/dynamicdeopt:suffix` lets you change that new suffix from .alt to something else. We don't expect folks to use this. The gotcha here is that it needs to get set for EVERY file, and it also needs to match the same thing you pass to the linker. If you get it wrong in just a single place the feature can get really weird. But, if folks happen to already have files named blah.alt.cpp and they would prefer a different suffix, we allow that. - **`pure`** **`/clr:pure` is deprecated**. The option is removed in Visual Studio 2017 and later. We recommend that you port code that must be pure MSIL to C#. - ## Remarks +This flag is only available for x64 builds. The linker must also be passed [`/DEBUGDEOPT`](debugdeopt-dynamic-debugging.md) to enable C++ Dynamic Debugging. + +Compiling with `/dynamicdeopt` generates additional binaries that are used for debugging. When you debug an optimized file and step into an optimized function, the debugger steps into the alternate binary. This allows you to debug as if you are building unoptimized code while still getting the performance advantages of building optimized code. + +Place breakpoints in optimized code and step in anywhere with on-demand function deoptimization + + +You must also add `/dynamicdeopt` to the linker command line. + With no options, given `test.cpp` as input your output will include `test.obj`, `test.exe`, and `test.pdb`, as well as `test.alt.obj`, `test.alt.exe`, and ``test.alt.pdb`. +`/dynamicdeopt` requires: + +`/DEBUG` or `/DEBUG:FULL`. If you don't specify `/DEBUG`, or `/DEBUG:FASTLINK` the linker will give a fatal error. +If you specify `/INCREMENTAL`, the compiler generates a warning and automatically turns off `/INCREMENTAL`. +If you specify `/OPT:ICF`, the compiler generates a warning that the debug experience isn't as good. This is because ICF can cause functions to be removed from the alt file, which means you can't step into them. + +`/dynamicdeopt1` is incompatible with the following compiler switches, which also means that edit-and-continue is incompatible with C++ Dynamic Debugging: + + `/GL` + `/ZI` + `/RTC1` + `/RTCs` + `/RTCc` + `/RTCu` + `/GH` + `/Gh` + `/fastcap` + `/callcap` + ALL_CLR_FLAGS AND_ALSO + `/ZW` + `fsanitize=address` + `fsanitize=kernel-address` + + +Turn /GL off via Project properties C/C++ > Optimization > Whole Program Optimization. Set it to **No**. +TUrn /OPT:ICF off in Project properties Linker > Optimization > Enable COMDAT Folding. Set it to **No**. + ### To set this compiler option programmatically - See . diff --git a/docs/build/reference/linker-options.md b/docs/build/reference/linker-options.md index 968094a0b51..17ef77e5200 100644 --- a/docs/build/reference/linker-options.md +++ b/docs/build/reference/linker-options.md @@ -1,7 +1,7 @@ --- title: "MSVC Linker options" description: "A list of the options supported by the Microsoft LINK linker." -ms.date: 06/10/2024 +ms.date: 02/18/2025 f1_keywords: ["link"] helpviewer_keywords: ["linker [C++]", "linker [C++], options listed", "libraries [C++], linking to COFF", "LINK tool [C++], linker options"] --- @@ -9,14 +9,14 @@ helpviewer_keywords: ["linker [C++]", "linker [C++], options listed", "libraries LINK.exe links Common Object File Format (COFF) object files and libraries to create an executable (EXE) file or a dynamic-link library (DLL). -The following table lists options for LINK.exe. For more information about LINK, see: +The following table lists options for `LINK.exe`. For more information about LINK, see: - [Compiler-controlled LINK options](compiler-controlled-link-options.md) - [LINK input files](link-input-files.md) - [LINK output](link-output.md) - [Reserved words](reserved-words.md) -On the command line, linker options aren't case-sensitive; for example, `/base` and `/BASE` mean the same thing. For details on how to specify each option on the command line or in Visual Studio, see the documentation for that option. +Linker options aren't case-sensitive; for example, `/base` and `/BASE` mean the same thing. For details on how to specify each option on the command line or in Visual Studio, see the documentation for that option. You can use the [`comment`](../../preprocessor/comment-c-cpp.md) pragma to specify some linker options. @@ -42,6 +42,7 @@ You can use the [`comment`](../../preprocessor/comment-c-cpp.md) pragma to speci | [`/CLRTHREADATTRIBUTE`](clrthreadattribute-set-clr-thread-attribute.md) | Specifies the threading attribute to apply to the entry point of your CLR program. | | [`/CLRUNMANAGEDCODECHECK`](clrunmanagedcodecheck-add-suppressunmanagedcodesecurityattribute.md) | Specifies whether the linker applies the `SuppressUnmanagedCodeSecurity` attribute to linker-generated P/Invoke stubs that call from managed code into native DLLs. | | [`/DEBUG`](debug-generate-debug-info.md) | Creates debugging information. | +| [`/DEBUGDEOPT`](debugdeopt-dynamic-debugging.md) | Enable C++ Dynamic Debugging to debug optimized code as if it were deoptimized. | | [`/DEBUGTYPE`](debugtype-debug-info-options.md) | Specifies which data to include in debugging information. | | [`/DEF`](def-specify-module-definition-file.md) | Passes a module-definition (.def) file to the linker. | | [`/DEFAULTLIB`](defaultlib-specify-default-library.md) | Searches the specified library when external references are resolved. | From 80455fcf20e38ace8ab9405c2d9ce734e742ee4a Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Fri, 21 Feb 2025 10:40:08 -0800 Subject: [PATCH 0171/2255] Learn Editor: Update compiler-errors-c2001-through-c2099.md --- .../compiler-errors-c2001-through-c2099.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-errors-c2001-through-c2099.md b/docs/error-messages/compiler-errors-1/compiler-errors-c2001-through-c2099.md index fc33aed7db9..d12d6a6217b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-errors-c2001-through-c2099.md +++ b/docs/error-messages/compiler-errors-1/compiler-errors-c2001-through-c2099.md @@ -20,14 +20,14 @@ The articles in this section of the documentation explain a subset of the error | [Compiler error C2003](compiler-error-c2003.md) | expected 'defined id' | | [Compiler error C2004](compiler-error-c2004.md) | expected 'defined(id)' | | [Compiler error C2005](compiler-error-c2005.md) | #line expected a line number, found '*token*' | -| [Compiler error C2006](compiler-error-c2006.md) | '*directive*': expected a filename, found '*token*' | +| [Compiler error C2006](compiler-error-c2006.md) | '*directive*': expected `"FILENAME"` or `` | | [Compiler error C2007](compiler-error-c2007.md) | #define syntax | | [Compiler error C2008](compiler-error-c2008.md) | '*character*': unexpected in macro definition | -| [Compiler error C2009](compiler-error-c2009.md) | reuse of macro formal '*identifier*' | +| [Compiler error C2009](compiler-error-c2009.md) | cannot reuse macro parameter name '*identifier*' | | [Compiler error C2010](compiler-error-c2010.md) | '*character*': unexpected in macro formal parameter list | | [Compiler error C2011](compiler-error-c2011.md) | '*identifier*': '*type*' type redefinition | | [Compiler error C2012](compiler-error-c2012.md) | missing name following '<' | -| [Compiler error C2013](compiler-error-c2013.md) | missing '>' | +| [Compiler error C2013](compiler-error-c2013.md) | expected a '*token*' | | [Compiler error C2014](compiler-error-c2014.md) | preprocessor command must start as first nonwhite space | | [Compiler error C2015](compiler-error-c2015.md) | too many characters in constant | | [Compiler error C2016](compiler-error-c2016.md) | C requires that a struct or union has at least one member | @@ -89,7 +89,7 @@ The articles in this section of the documentation explain a subset of the error | [Compiler error C2072](compiler-error-c2072.md) | '*identifier*': initialization of a function | | [Compiler error C2073](compiler-error-c2073.md) | **(Obsolete)** '*identifier*': elements of partially initialized array must have a default constructor | | [Compiler error C2074](compiler-error-c2074.md) | '*identifier*': '*type*' initialization requires a brace-enclosed initializer list | -| [Compiler error C2075](compiler-error-c2075.md) | '*identifier*': array initialization requires a brace-enclosed initializer list | +| [Compiler error C2075](compiler-error-c2075.md) | '*identifier*': initialization requires a brace-enclosed initializer list | | [Compiler error C2076](compiler-error-c2076.md) | a brace-enclosed initializer list cannot be used in a new-expression whose type contains '*type*' | | [Compiler error C2077](compiler-error-c2077.md) | non-scalar field initializer '*identifier*' | | [Compiler error C2078](compiler-error-c2078.md) | too many initializers | @@ -102,11 +102,11 @@ The articles in this section of the documentation explain a subset of the error | [Compiler error C2085](compiler-error-c2085.md) | '*identifier*': not in formal parameter list | | [Compiler error C2086](compiler-error-c2086.md) | '*identifier*': redefinition | | [Compiler error C2087](compiler-error-c2087.md) | '*identifier*': missing subscript | -| [Compiler error C2088](compiler-error-c2088.md) | '*operator*': illegal for struct/class/union | +| [Compiler error C2088](compiler-error-c2088.md) | built-in operator '*operator*' cannot be applied to an operand of type '*class type*' | | [Compiler error C2089](compiler-error-c2089.md) | '*identifier*': '*type*' too large | | [Compiler error C2090](compiler-error-c2090.md) | function returns array | | [Compiler error C2091](compiler-error-c2091.md) | function returns function | -| [Compiler error C2092](compiler-error-c2092.md) | '*identifier*' array element type cannot be function | +| [Compiler error C2092](compiler-error-c2092.md) | '*identifier*' array element type cannot be function or abstract class type | | [Compiler error C2093](compiler-error-c2093.md) | '*identifier1*': cannot be initialized using address of automatic variable '*identifier2*' | | [Compiler error C2094](compiler-error-c2094.md) | label '*identifier*' was undefined | | [Compiler error C2095](compiler-error-c2095.md) | '*function*': actual parameter has type 'void': parameter *number* | From 6f08668ded2648857dc7925661709e90d4620ff0 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 21 Feb 2025 10:49:31 -0800 Subject: [PATCH 0172/2255] remove SFI images --- .../media/desktop-app-project-run-150.gif | Bin 139526 -> 0 bytes .../build/media/vscpp-quickstart-first-run.gif | Bin 170720 -> 0 bytes docs/build/vscpp-step-0-installation.md | 6 +----- 3 files changed, 1 insertion(+), 5 deletions(-) delete mode 100644 docs/build/media/desktop-app-project-run-150.gif delete mode 100644 docs/build/media/vscpp-quickstart-first-run.gif diff --git a/docs/build/media/desktop-app-project-run-150.gif b/docs/build/media/desktop-app-project-run-150.gif deleted file mode 100644 index a46faeb9477ae07d4ae5498c48389ea3de2d36db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 139526 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 z

l?vFimA1Z^~N)Y}-?dpPipH2O*gTvnbcI_J%YS4nm$F}}XW9MP20`7Tsg1jD6B zhc|B4(v+~r$*6PGHaHb%P>_a8oBWs=X)$UjQU*8|hgW8xt9NlhkiG11NZ$0Rf8Pac zkXWyJ3_p)n+GV2A3uM2K96X_s(MyL_J#&CHoo83SgfX=i)aWYz{8sw*(S*>0Sx0oI zKhL?T6Prljf+aQF;zLEAVe38m^--L4Zzs`Rfq}BtFU=0IiU>P4&TAtsQpDcZ>>ND; z)u9+pVIE^>25Igs-5m1^)H7yOIk##a2QlApe2^4K(TMn4ivC&KV;+zOM4>fASzzik zGcyBWMIgHf%%R;l+`__Q%FAkg9`4>aw3nILUT^He+#>ed-qFst1RXxZw|!x ze;$0_J3BLT{CqN#|MkbNUc$gsuG2G7{!}wQAf%u7c~M11bH&b&D@Zq|isj|ymF9yJ zHqDryGhJq`6}9>8rlv7xr%T<ueO_$Z-F{2P8QG;!P4XHOmge%)Xh@bl+S zZ4KL!^@A=P4kO9Gy}d0eEO>f^x49{}xw&Q_Zv6fS|H(>EbKH}|v$KJZ7W@1APKrh>th~7H*6!{OS2Ht1o#5{7 zc0S*%zQg@E9l?VEZ0+9R&(qUizkcyJ)SaDe=s&bdHsTWwe`llh=xS6{k}+@D=KlY# ziSz$|&VL#K5ZM9w&yhu!0a7{6(87+QwD#BRGOt*b{)sGln-WMQa?Tz2_9e6DgV@v6 ziO%AzzK_C>$TlD)+5bQm(JiZ_NQYfVH@G|=$ki);JlXYZMl1W;xg3q6uk1t@gzOb< zu6=9v3qZD|3XRibA}`#pTAl0$uPk07IXjX)wgvR65$dcRcH3MAEgX~dB^*RKulxe} zzF&ac*qi=+WueO-;~>=>GR+Kg!DKgHCYH^?0Kh7@`;a{3vSHlho~rDi&K z{Rc){{Hv;Hwc8D?00UPTm5(;fm9iJbhvX_j3mJFzB=q(ZqC4kVI0!x?*2Go6R zgcgk>X%HK*aj~TVB1dgOggWVTjnjy$Twrpe*k{+K38W#xM3(gM#t;j5Ap2j{F7OU& zL8as;BX7Ro1uGaRJen*fgWC_o$CmymX5fzX$8b@)A``Uzm?Cv#rE10~>7*YqhU_8R zC;!MtE8JJCh>ffQBIQtesgFZ78I~Orbv}Vt7Ma@Cv3C(KFKd&2_LdSeMR8E09CsFiw38TEfoP0(3`+}cf@OS2q z@&(yBS-JFq_-N;x>^bxDqN=6%I6ee7AV7OE{A!q{ML(?ecL_seOv;x>*q^zs)H`)7facGS<}R^!JS zgc@{Vsz>raAKBdpzUFt3d}S(V7;zcrsfUWLMwgWkGjP^(CC08$uzI-V#wPi=Ve|l7Z zCDt;YcvO;fAP;sO_@L26I#?0jMXpndyckzjh1U=={CP0(d}v~pRMk?%JMbldHgHqx zaIj*WEeD?>nanbjvhMMnIsS4D8F&1&cFQ-L>AUVBLa`yk>)drXh%91Ye7kim!jC#U z8OCy50;0C<&xmE0zxftK7HtQxQ>2h6C^pe1YzOk9Qpg^5G|^XW2Z@BIP*^KAGk@O> z7Q>}bJ@05{JJ}9FQlwH7LKIsrGw*~dqEcz&I$F5JcV23Qr_yC9w(=Y7ywby^(wBF% z3VZB?p()ZB+ZEfcC+vjVpwgH}I@(05b|Rd@(^!`j+r_`{M7rbB*bY0|@15+t#!#fQ z6DxH{Gw())qS7xjbau##@4kr&Pv_)O>Qpw^eH)KU=f2(9sphd8olKFztDw~NAYnHq z8%$)9^z@jHCdl&MYfcRsSnpZP?S$ zY?{wV%`gwwl*=U9@_xLSYhL^5^cRU_6}n`Qu5=k9mb~nGIWm!L`FCo0h5Xt%HcKQSN2X0 zW{kguc)Tt3@B`T}T`wey0v(`V)PNABZpwQMK-F%1*FFDgD9u?e7e>eL_hlEIFY?aV z^nU12{0Tb(g0z<=S|h^xJS)1y+MvpWfnQl3N<}WOTbqdkxL4bs>AeNdtDTH?wP_b+ zCZgG$zJHGk3bDf$n?GK!<99OI-KFqWEEDe?)<6mdfO+ z!C}>CPk~!`_vEI>VKq_Is;b>j&E2*^1U_h!Y@mDUpz5%8JL0p~lFIaQ!hU9XYqOHy z8U!2ZSGSh`8AFW1Ls^a*NZ5eKLS18c5AAdE4gMCI{7@iQq>-_=F!(lZ21?j3((9Lz zOVk*im>O*2TQ7X|5I0L-?OsWK!0Qx&54g)tM{=)0nqphTj4X{Y=qlBhs1Vfrp+QRa z>sz@r;ZC~erw7UI-!prYg<9Y@d|!Fk`sw_<$FOj5W81ycEiWRkh3g-Vajb{{b?*iX z=_4cos^;Vm>tH5g{z*rnDaw)X8v;M@uxBp+sjm<}%%qVarZdk(*V@|5_eMq&?wcx_W&|AuAT zmuF>8@|IYA*b*6+nSUA925{aE`d;O>b~~+hTpuI-JO4kVv!uw=&xGn z5w=r3G+O>(RaShXeoIGSVmg0VwCscMvygMY#+coo&E`vbD&6*(U@3etdMVj~+Y9{z z#&eMV!Q^02;dYzHXpy>KwPTp>=q6vA=Tv~&z8?>Ef0oK`{`uz(-H+dwqJ$3#(45-m zjpJTRcdrs$ew-ff+)h57U-D^MLAsv^eAp-NXoe%sxwH{H@tZj1O;GeGl$;pEF0Q87p2!@%!un8{&G?=uTFE(nNX60r=n$=1-|M(@)5kKgi_ z3UP>A^y$vn#$m6nS4XiPHpOI5bqzPkGcs zb=j%=;DzRBsLtqP*#_wJb63Nomp>PSMi_!I9Y!UhI;aJ|OT3m&qsDJYg3_}6Q{;nQ zfHZux|4e(({r2bjHlbY?Ui$IAT(I`$4E0V{d@30Cc)H!U)#j<+QsCK05F!*)pzGPF z=l71-&m-%l`LdCI=BwLWR*vq^KW7`4Dm=|a5D%BxlZD#Wg@hQnzswzeEZh+$qW8Kc z&M8bGR3J1!lF<_@?=epNQflex&XQ4E*3)@nuhB)1;M^xIli&AR!(XmcRud(eSEsFJrVfvN&3g{Egv1`KaRqZ?KqQ%Ws_|!k_Q8mt<#ffZ$i%D zq4F)s7W2uxdbSGvQdDFqa-1oT=94+uA?(blA^^>kLI{KST_)xfmzY#~8knF{YH)L^ zY)gtcXByp1s)&J@D8KAYX8F7PG-Aqk?<+qLI7ueG79=eK5l6#FkT6Xo1nT_m9XE`K z1Ku!{t|^iVeUoy&5Mm5KuQ*XFCP1AUp2=XK+8WePG%{m{0ZS2TGc-b@AFlTu0o5cD za6-h$!=#ZAtA4mLl3I%d0^5O_QbUNYLF_?x5rLmtY?as}Cj~%fT*GACL8r4Aq`!Sk ztz|=Eh=I~>!!j138U|3>1{eu7oc$G%=687V2@KT$3qa;`TJn=^X`fy*+Z ziBa2d86Zt~HP?+DVknXah+vs8fC`X`DkL&vMv#iYa`++Qg)j$^Y$6VDX-|Y(Rh|G6 zMk#_7UQMUPAd1MKz9LuvpL%Z_KJq=MZ53h-Kn)8&L8Y*?jh}f2)6h55q1S?pF_0%@ zz+jgH5luRg8N?I=aTcKteg!c+0fxyk6mlSNmLkLNxn^VlJv)(xIQBsy{34KXKI*e2 z68o_53so3w^81%tg^)?*d_4jZW(R0OqX0ZVz$bvXqKv(b23c(dg49HJRtwX`sRKl8 zsaHRrkYW7uSYRE`7RI?1gC(A~`$*%=*Cg;M; z5b{xJ-O5-p#!M~6qD_NxVP@#hs&Wv0p)G>tV}bS{G|%G^9xN4<8s!3|P)t>xu*VmR z?gIF=Aoc2Utu^WoccpdKj-AF$*60WHmM7Zn07K=jQj|ayqG@ zT~+6*zIc8}nI{~VYpGNZSC>z|s-8DY3f!wS<}4(lDU;5H_*PeSiwDIZfD6h6wsz^8 z26dhSF!8klK5^_V4JaxZ2x&;KCkLMN6E_DVGVCCR7=X7Qa4vknR|xUfC?Q4WFl|>~ zV$CGNV(~uN&f*nLEulvCRop)c5SGRVg&>*NYADRf50T z;&ZUP1d5hf0ibKG_#99&$=|jl08mmuUu~D0bAF3QIdWt=X`p8Q5;;!xfTz@Dy?CxUdG*SZhJyN=sQP zY`>Sot`(ElwEKvZd9LT5d?<4SATEWC*5eTG+tAIf3SkLPdAlxwTgAnzpM?`Dox`i2 z8g;tlweMrw#RQwhn!63=>lFFxPVGy&?^64c6x|`$UKP3T45GT zMl*e;2^#JxQ0})1m#hBlN8Z-V! zD=7MA3_IN>PxGwNRG9z9$iFiGpvcP-Vk%W|aX0M-lWld~u! zvCiUI*W-xky>L4<9nu=9uF5cKjgpoXxC;N%3nI{%b$FOEOc7J`gnFC=16Oux+%c?$ zp@#2#z*hI9*Lp**2y{I9fOS8C$1IKu8gyT)8R(oC4Z%)s<+UGq-H0J1%1x`%o?nUaM^ zsu0)7k~*r8C&^N(shsnXr4d#+pY&-;d*+70N9MX2)~Ok`vl(`_*~@1$)B3aAKC`?@ zv;1|lf>X1?!m2Rpx$F1lZko*f_mD-sb5CV~>6Uqy`T0rMf)nS$xa@+X#ll$Nf_?hJ zNXx?G`Gq0aq7CQbfb62x{K5^Ss+FVs!X2V3XNyj3OD^}8Tuqklcz>KgS}js;T87wxnV;ERzOADLFm1 z4mK+YFrim$Ry)YhD~f1{$~L6=6H(J z)K*G_0dag4mlJegvx?klgB}UjO;~y01XWI0QTEs%XJ2P>+E8AtQm$I>P}?FyZZ6er zQ(T>`O~TekZXndLge2Gnb*!#-C?OCsV%f8K_qz&8GN2#B8HSS{{+~4ilJZwtZ=vCW~RXfa1I==pTJx*;cv2Qb$ z3Q{q(|5V~c&GZDCyi|ApSId*7hO56?x0XdC20HuJR_?9#Tsr+Wz1w$nZNT?*^wP(M zkEcNd6Y7cSm2tx9?ESL^A%%J0vt{3<#gAvcQ$N>VFV7Ipu9!@2KEdu@UE1*_oNWC( zK1U6OQE}?^wTS-3#W(J&yRkcQ;6b_i{#Y*Hm?-Jr&C}t z_H98W{+eZPy8ghT>c5ahyf>)+B8!yX30uArS=IuPMFsW-L#sM@`lXITV!x3^>XngP zhQsUnC8W&-mg8<#1{KZ=y%{WDH;ijuC=4%*k8Dlnd%(}tk&kYhwY=n_wVH6xG4FW8 zb;-?W%%!jM{jDdWo@0B~30S$;+=+Diwu7H^K3h$G|6w;;WZ9Q#JbplMn5cZVwKzF` z_ype=bdJYl;^+^u$a-qx`04W345F(VlPAyC$4Z|pO-=rMzCF|Wnuj3C3E5v6`fNQt zb?SMvv(T4iI(_DSJdhQ)G(8OhV~7N|Bz}?I+(yFAYj58>O+UXaMRFy^NgB#f@*7#y zQrNi6y}vC(Ez?pUO{sEoN0#pE9JM%&q3e#^nIg(rp4l$%N$V1N&{=^kKl-aYdjO19 zVaem>t|GNBor@CpEzU1@IMZUTBe_15>?#v|v~W}wuBQ8}EZ9tU{+>|W-Y)89G0{_$ z=(wO(<;^+Sr#+%;ExSGQ^MlbU;v4%KA$Z!Yx&jTEfFBC+Gh;CXZi4@$nxY(?dTEDSRm@I&O-}XO8No=1&&*X zRXjICZyB!hTKdmEmQ-Uv08_^0Cf@gTUZD3cCo|Q?-BBbkNmA`g4ld%IbPq3-(_{gPC>ZX$Pd^5YWtj4tVbYWb*-ghrSw~=Ku*}2(sbJ(6b32pYnfaAGn*d@gR z7CSQS;lqPBI|ry`#F2B}!{WYnvJjG25*cYxBw=pYb0$?=C7nyW^i=5l=)V6Wr~s{#0j;^%!Yg zHz}s(cdqK=N3p2DKDjU{lEEIR(9uW4u&ouXEHzxfoghX1mM6fB`GNv}dn5FP$ZZY_ zGk5t=X~rsrpbA?v%Idu)#zhgy8#NJ>-ZlcOD;lAsvndWf?k%f$r%(|=bB8E*SuWu> z0jlXe=Y1LF_~gT06&IzRD~gvha?lhtE}3Cy)Vp!5DLDMr%{iv-IC-%)&B&+ek1lSw zD@ZJAzV@7dbm{a+0f~4J6~Jl1LHR;amixh*Fbj(-7mpPc^m7Rxa!4(0;_y<0C$9IQ|ACByLSoT0Xi!M~av{KpVm251l(gJT{lZwB6 zdR!w#rqCmOlp)z3dzZEq-v@n_M{LotEqMzvm>1nf1gqjJ)hMf5wJ%j2eTqK}{<0FN z?8Mnbg11#+i((o2z0aGT#^WurL^t&NUWaPMF4b_~JtXbXP93cNw*?9GWOu5 z+F;tKSEc~DxYoNm*DG9jK+>6C-71MLqY@=`{+kw@EM6;tF@uj^MI?x3IU1|#V0G8B zYS7l?X7_K##dIZ0k9oZYNlj3-?v1KFTZ#o%^r7;NO zRlS#wbzgU29$z6Dqmw{lr~zbQ=q-pD52iLMgP35-atA^jZV<$26bpUr(4h9F>rI!i zXb~XRh=yxu?{n%}#5>rV-8F=g*wcSWFBPPe-yVIN0~^J|>$4AJdz6OaHku<$=*3-sqwf#sEhJ8#*h#6FF7Zb< zk~oSuofjmU?@ES1r)=$Ma5GU~N9wNJ>wIztir)=RuBSqX1l;~+zRc!cP9pCZCWl3L z6$naJUs!hxyK4;P;UJR^Mq^gU@#h9cS~&?;*OgGe%+CXH_5DAt8cI=tmhU~bff+q7i>Y;OVNxZ*1KTj4{p>>3Gd0{`^URGWh z_|7@*ez+em1!Dib)$@h+0TMRGqpOS^F;}1Tv4dS&7=9 zRin8Ws>TKiaOP&Z(e1k@S6nmQ%4<&@oI(sI=D43%_INwGW*JVdSv{|wJau$$H=Nqb zd|tcZ{lsg@aQf%s^ZL`%Cm3QQJQ0sOp^?(ZDUio#hTPh{`Qn*VsDjb#`7HNVAs^>( zYoj@qCHHp8Gv}xfqxma5FFI9yTw=0}76hzcbQ_@~n;543|7cYR{e(h8V9u z;_)2o@o_83GTyMW_8gx)bE{}K-h7(nIl1BUyk^OG%X7(d`tI(*MgAm3!Jsd-iIZxB}u}I{t%P>G#>92RbP+6ER!F(*4}Hz z1dq{nlLH(_d=fsl9VfB*tmNx;svq@}v)Xd|v6XEMM&trPrZSAv{Nbp)#Fg+Q_ z^7)bP>%DGm`g45A=dhOGy&YouYmUeFxX0ILKg;xV&D!_pB*EvX-SliP%lCA{*Z0?w zDdFdmFX0rd11OLXRwPsqNhE=Up^%{E1YwUP_Ck_`BT2DHvOFYt4Uz(fq?|xfts~F< zLQ+#m(XdL<3QC=qkfK9LT`-cOx0hn@l41;(V!}!>=Si{DNU`D?lUV?^^+t$@)FldO zHdZMP!6s@!X-=3F=S}HzMopaSNNyO0cLK?=AIcxt#9q=Q*dl#tut|8n>1s@qz&w%% zE6p$1%%&}UlU4ebpbX)%t28^S%tfq>c%IDN8W{*%UzhsaUvQn(F(t@%w z60))=SvezFd3#v}FImNKStYEja-OV8jVuZ$t2!a8wl1swOICwIPLoycfuNk0gq$`? zPRB@2*Iw?Smz-X>oIY00AWzP)M$QN)XFMTivMy)(OAbvTZ^kNbE-3#C2tchZ;O?GoF{KrBX5tBcbJfOT$g|HOWuh>!I@RTMNr|Xgn}zd;hB+wo4vww zF9r8-g%?-_k30p>8U-($g7<`i&$@!|F9i&Rq93cGzo24(gkm5{F~~?U*j_QjOEEND z@g-LARi0v4jUpi&rx-Dz7`d+a`j;XID0;)H^j1(QT0$uXrS#57Db`*o&PypiTnk3a;l(mnuKyXN;$(wIn!P_%S$;sT=^4LIVVp! zw?;V+r<_00g+MhAZ!5==G-p$*WIvL*_Dd=nP+8VcdB@(J<)o6er(7&ZS{Bp5fokS& zQ4yPvjy!4-S(mQeSE-u_6|!jNkx*$gk|{QlZV8mRDuJuh#x=okoH%Lj5>y4YvXc{c zi2~PAqtd@lQaGq`4Fp(FsP_HB6$`2kc%eFDnnx^9UtOE~Cb~y!RQuCav1zCh@UfJe zxT#+~1U#!6p0lSd95*K0J8PkG+o*X=R%O5fwK%9cwXeET(!1)48_H8jhz6I-Q5_2J zU8+$Xp6{-t>)i@e>upgjl5PHhQ|rv@SvBfgu0bt@OW(-5v&E^lovuDi_p(u2We$t_ z@vCQ-6?a0XF~-_=gjL(HSI0^80IGe^o}PNFO5(VB?}XaSeqR)(hfK2Pa9#a`0(HZ_ z|GZ`2kVQXVP2VW%*R}9IEK3i0zUHw-KaFZX5r}2Z=w}P+J8@N|iqITEY3>ecwhVq< zx9@3~>uu{mB{_W?ivCv9(f2X=TU@ioyf)PxuLm$nGQnq+RTNqj+8RITq$njDg@vRD zymDIC;W9$c24?8OZ>y>$gbu{St99MbO4b{Aojo9QswFYhMCnZ``L5>L#lZwcEkI}R zoaDeZCn-MgrA&l`#53*pcs1B9>AjL(mPC#Ai9r&}Z!DJIu5#7NQugjhsP*0a#=)gc z6`^ytRD;%7b9-NVa8L7`<=|YNs?>$A(v#n|CUlG`bqyo>2PGt#jfb~yYLWzL>l=TS z{_&NH^1&lHbpuJAuZFtvlYM4CbguqVr$`($In`mj)o&%IYtu8dU!!a7t@BWI*mgnP z=11@F{J=NY;b%I!(2Eb(je5N#`<@GZqvcY8at*NtJ#<*;k{|;@y!ArCwHXriUV-;N z!)o=y!F6dT^&&U)UZ3hkQR=_BsQ*?-KUz{hMpYk#48=O=$9e1jzCE9)pOCNrp;jN; zqn|jbpR}R>@l-#V(jeucL8_2JnxsLxszHXaL8gO2mbXE6gu$mogPeSW+**UY9)tWz zgMtl%&!+~3l!iqY4ZjE(7E2nIs2Y|U8PjYqN;qu>Q+C$4opZsCY=_j zr3C6Eh2ZXbo=g)Y?4itxnA!{s9HU2v@oS3!h#8Gyyp8HFj5S;grAs!7E1jr+r{8@6 z(-JXCrU-479BaM+kc;V)#7~3-0ax)x)rrPA3*&vQenXTP5{-#(s+jhnaRNfmxbBBP zYn1V1k8wyoAnaru5&;O?7{x|lCLDleO8wPD{gqOEx(c8*$aqe5jEr|`L(=%I!{k7&H#+%jztnwl@24!LL=N@Ss?~7WjLR23a7@yr|=^i_>)t=35UtG3+S2);5C;i zyW&KDqKTj0B;&BLpCW|4VrFkhkH~SlhZ10Qg0^LtFrsG$hsGN&PPSeM?HDo((Lry* z&AAa1=?~0b2bmu{0~mR8SZ$yK&-7S3FbB00kR&r!j7jIaNka2QW7613PTh$?omsKX zsm_Rec=B}d1LI>M^Xql!`N~Q;4j5mT!&GiWxnMN909ZU`XFc)`YMD=1U&K}thk5Ozc zP^g)Z9T`&VS~w=*e`YKqV&~x|^P*H%#O_8T#@43tR_bi}P&H$}_z5#Mv`XZx>E;|- zerjFSN>F|Qy=mBZI@*6~cH)3HZL_%8Ykj;hWnzLS;Ehc~^DU3OM@4#VMCcz0YnbmD zn{k)T*$dky8c!d1n;I`p1hq|@L}Jtr@Y|<;ZSO1`%S_!fr$@h`7f%;n2%~Ru&v@0D zoaUoh3(ZM@Wo@>3J>B`{+D9((HgZ-=jSlz?Z;MvR`R&%np+UCsQ>MSXjcC=ZA`!C` zylW!C7-qbGJ>`nL@Laj5ZKa$3_|Wo7gz3Y~d6(hk@+o|pu8|VLe0~zIikMxUeB7}x z|IoxzBiN*r+qBqCFLiN=R1{z3wqSQ}zTL-|*v9_}+n8(QQcl@42^wGyhSUm8AmY)a zNvo3ba{*SCO*%H#nGW#K#XiyLp|dHwB)gJnNBuW-#{M=FF^fj3ZX2~~k2^Q#C9TY9 zdW~i_3^_N)CobSePt2ljp*U9{hj`qo?^dO;!p0}J6|w$rhnqh;Oorz+L`I&P7dY2 znM6P*Xf;F{2n87bc&dzq-ryR>{7gP&MK#5^m98wV58F{8 z34}^F%lC3LM4u}Y8FJmoLrsIs#>mT`%g+V@efJ0kEz>T0-2p%;EoOl(ppBap8m>qD zz4p5^-~f|+s>g{SG3^TN*uiL0!5@c95FsO4{Q$CG3x!n9HD)duJlGWL9; z?KguY;qnNAHY+mKT;R3*D+RlpJUTGDHQwulx3fq&ah9uo_<;TQB{ z4`qD$<$@;k5)u8ynQzMq@Dtjz_j}~){K|J&S75d-nKTTHPrGu>BQ{#3ydo* zzJ9Y>*L$09$>bEvB4|y$PcCsr zI=#FN=jHvr0c?~7#cywuc!7=vYLY@a5yyhX&}-!EQC0y@CoE$Df4(Syja-h;k|LR% zk3*R_sHhdl#Ky`zT4M!X(FkqE6WK)5(y;&}7R;E)$V6Bxw044h!H0^}>9yuK9Z?k0 z$onhN1#gJ9+OH9gk8?>cJ zLGjC=d4q+BjNe_LpoHVEA^VTD(F`I8kp$>~RPcFn&{hC?sKI&k+lLK0vO$}(7dKG~ zV`0sJNSD&ugWa*7yO9Pwkv+sg7G3WtbLzC%`{K!`fruVVM7?-$-k|{E>X*iA*>elQ zHC)9^yd(v%AlhSXR2tf#ygHya@1Y?kVNNcUTv>@-nOMcW zD$bfZG17mzB_4xk!}^c2`FkqhIsHG*Mn|l0;!KTKQ6NgR{nM>YHe%gr#aD}3nK=(& zB42BED2R7&^*`?&!CX>%UeQPqmP$jaF%?C-bj_ARBtti`|KS3&C8LQWM;YW{9zwiU zuXxf{Oa*jGa2&%R)L`TUgTNk~2YZkP#`B*&0FCLtUF?6N3fkO3Hb%^ zU??YyQf{L3l9*9BvpLlEMH>b&(|%s3B{?ZO&`b)Eo95)BW2dcHhHQt=X6mdB zk`6tn{`UD+;YAVOrHoSB8)t*c$(|%>npOv%lCS%G4?x__pOF3O;g|n9WdAQcRQ%6F zWt zHZA`*b%qrx45bD9|Kv!}<^hi7`$%O5hAVaTP5b+YWMm8qiXa8y`pnGS@bKuToX`CH zqRY#x#U(XH#@5Zv?II!)O--Fg$3F!H#kRNi#>U2xQY!!cU;NM4@MbVa%3e!aR-&+4 zg$6d%*$S4I*i2Un|EihTyq!k*vVxgfk&i#_ewY>MLR{A&_khW0})0?z*y zH)$DFMn=w#P8=9Ca&kr$)Wg3K1H;10d-F?i1sE|fZVL-bV64E1-MDeTxAz+uF&SAk zVPSDIbNhb=>OZ`I_x!0Xr~*F~EV8HDPe4E0e>C@QZ_eJzNjirRBn^>ETZxm1WJe`G zm3=vtc_ll``5`8RR#?-M@!kNZM%AP{UvXF@kFzPInq*KaQdhm=M}k>AH}PflIO&j`-V z^DmCgt&W6EZgvA-hdVCsz3=VWarzrUM(`X3iJ*Fr3?K~1{O!;+&ICsuEgd&tJVe-< zS2xa7?>PuD&IF1#353nXo+iM!sc4JPTbx<+I+K7O0$$Je5)MM};6VqMF5kF^R6jmG zX>4p~U>4Zf*(FkoM9OHodj!tSE&BO~GqDOkb@f%(Fj-kyqhsJ(TwG2~%TZF%KR!Or z$^AlpRp)^gx~{$jwA%Fb54`XQw6t<@eBu!opL|ym<>?)AaBzrC%7}TF==R)?hK`3^ zNGl^VzjtdMF6&9br^7EK`SMjX1Czkv;UP-Ru(_p+NHuJK|3_I_O~~u{qSr(H{evRc zr4v4+4GoQk;5XOSHim}BdW(k^37bM!?+1szX>aeASJVXzQ%UaFkcitB6qFQ~R8ev( zw0Gcci78yaB|ADg9$3`4NH|b0-h6=4p=P;pj`bFiTKIn$DF4fEi3u3U|5vAQ9Wl@f zN5BB;SQ>!5so{LPzZyyZNNgw7=tLX^WnbX*OlPYm?KucB{81Ys=sSdzOtF=0c=8Kr z*DM~=Im4}?s9?{8bO*{d?jAVk-_u`ciqN{faY_8yA?%`)7_W)HpFgd(7h^7yjPH3d z+KP(Ji*j-P5>_#{qb&p-&hrEoD;AooNMGOSX|_H;e4F^ZFCvsZGfO4o+WBvE2E{h~ zPzfWd#8Lb4+fm9XXVKy}Ep&3T>MjsPInRDGrz5;A+`r?J*Yw`<>*_1^plp*|$%-SA z=AF+yR+mLsIUXH7iKJ(^Ze$zoh5;Z%ybtTJ`cE~xyA)IVKaQkEZws1PQXB zKGMe~6jPtG64YzBepk-{azTuRPc!p&;dGsmG2LwCQrussut7PLoY@uGi%V zCi#}}pi_7`k^X+TMtI1H?Qf$nJy8oOgZpzSYOb>7%K=vd@rlG*HK0*=w-qh@oUZ`` z8ihTUpd@G~Yq<+j+@I13&ro`36F1S0iuo8NpTa=eky0d_R8?bzD~cP_FU6pNb|NAc zlh|2E5F2K1CcP1g3?R4vzriV-pAz@N^F1*6mSwYS9_r*+wvscxS-MqVw^6-muJWXI z&-}Jy-ANbAMs4f*U7-fZd7ORqO61yBF=>M{Et zg{S$gPl`|nkRrtTN1y&poHGB44X8Ar-hfI2>J2z?LB07aHh+}{)E-J6#lK<$3d~=z z0aXW7nt#d+C@r9ti4?&qB6*UJH2rlOhO3ObLg_2ti6q~L)sGMr!zd^3Sh|va@+8<>2sp)oHa5ShgsGeCwyg z&W`NfMAAg1{(%6p8h{~@B$4U61P!S;8P*@NmiV29iG5^sI+yamtp(%|~_%H-ari3kL_fO6Xgb?>n*7cwC2n3(dS1cYWD()jbV4fXr(F5@nU~ctD zQ4S1d08?uHR>=DVexEl&U@rCz=l-34i#K-{tYc!i!5p`{>*=1Y+t+WDI^wgt;0z|{ zx?wAyNTGxe0$y=qm=M;VKLfrEn1Cr8%;2*_y1#w}o}LCBAN%_STo@g-AQ1dR@CV7+ zx3{-FBBBI6u~Ji0w*QBQ&j0q0{qN<z-WqexQRDqh6#G53JAR1=oCo(u zau~yymz|xzO6M!431{G4dO7}*_!VVyxZn$|7kZ79XQwwxCj3l?i-VJ0OQ$P0E@t~` zCSA+)-CcIpMU&jh4IO^$YEKGg@i@2Q+) zQd_EykB14X9a8V|LjfE)j4%8t%1HP;F42e&5FTl>V{+uj;!$a1(B3by(OBFy9*)$I z1|U=dkJvE>0;8e~B@NB43?;-8@QlcZQ~5s5#^QP|=2+aBm1xCbl>#uHIP|ftz$J_- z<^sZx!9I%PFr_W=3YY*g>ja&FU5mbSx;DAz^KvU=?~0lSOA@=mlh7=YSv05NH~*m9KNG& zQG6Jbwm3FjW70A*KS$WgNk&I^z=Jvc-OC&pwQ)PqbrDXk!i;3$!pPX-V&$wPvT22A z*jV4!Y|3OuI8t)WbE&AgFNL+@)B0L*!1O*e8>x+&E2y?F*p(y|!B$8Xy{DAt%KKQH zx>a04`^k>);cS6oYt#y0u0(1AJ^nySa(28DY=k`L_r(n#q@YmQFXOgJc!= z8dN%Vw+)x3=z&x7VJ3N28W}7ykdS4BUxJv%w1Twz*(gy&Hvsd7k==}(iy4fC{3P(D z;|qhdik;ayMJSS!8;&CA8NT0@Ak_Lk@>QIu{TUYpzu|k40DUFGRq=uLXB%N#X;VG! z#G@a4+h(4B_M9<4nsHw(J(~4C+H#xaF4;et3!<`jpZ!~m{5{8qK(!z*0gm4oi(k+E z?I7DDa3=Ryyfj>CX2fJf%5&#Yrz^)(c zf62&M!NCAHzz4_vU?&UCHo)E%?0msNJ=hC_o${Yv7;HF*vB3TViR(AYkIp3bh9ulfw|U?T`P z4l#Lej|l}C(O~yL-=#4<9>Py6CN(pU8tTSLd{*|>J==rdRgfZyN}wk{pySyeD$wFU z08}`K3~!MH14VE%6RB2Y)7;U+$I*thc3p18x!|(oI3A#_@iF?0-^+2;@J&Q3&e=Ej zSbz!!CstnyFj}O#c#bdQDvwsC8PK27T_;y z84OPoT;5xw)Ot|2a$;2fgnooVHYYfS(ZX)U4B@=>q4Y~jw07^u+*&s_18~J4H;1X` zzMr68UR;-}!6F6Ti?gLxaXvX~TRDAflC> zry?-ujlj~nCUZPxD-8w*@>jYsgujSCkN9+}EfEBEb-#%}9B@3FUZcfmML6X5VD)#7 zRRJ8VqQF-je}i6v;{Wvs(A)$Ro&xyvU{V4AhyVy2OiBO%F__5#AVdJ10zh&C#7tmn zf|8sO%uaxL2{1tc<}Sd80!&j#NGgJ94N(7JW+TGsDKFd2KPd|^%K@e@00<#KbBm0U z1$=O--*o{Jo&W@gj2I23GQf<-ucQBOeQ=5}SXB;ex>84;x;v+ta6gApE`d9Nx)~V~ zZB*3`gb7Y>>?Z&S9DP5v5l`D%`(`YV zaC&_9v2U?7vDfrgqA36v^2b|=rh<3veb2)F&f)j{B)d&u)Xa z4+@xKAHF<4pBn9)n;u;So0a5IU-PSdfVpt8y;Me&05H@#>!n#R_i6oI!}RR<+MC>= zCyFl$qB?4_2Af`vbyj_U`kF`1oaK;&wm4^FcV?^ z0;asq?@!`4=}VWd`g>psCXj%^Qyu*`V9IY4W3Iw;Yv+GQF+M2KeES!Qv76}Czo8h@ zo?ZQgVg!LHw+d%kurNYKrR2>o?Y~is6MWe2UxU-8WB%VLMuXE&*X4(=n2`(!Pvwbc z!*9JZP_93)7>4k~Jl#5W8XGUS`jTFHr^x1GYv7Zz)5bEpgf5?>*|0mVk29NMZusyv zHGI!3eAq`qC;H;+$WY_u3qDbGk(2RdhNriRTUfROHZFJEB0X>T`9mnJ3T`LX;=TP1 za{L9mJxPi7+`S}c_++%JFxzjQrY9SV%uHnPr8cjlbdi>4e-Vt!HDP2=Cd~dQ0Qa17 zG;p;hna<1Ae^obvpSdXOsnCjhPDposLT1#RMCy5uFCUHGJmr2&9VoPZ_kZA zEz+el}AIbk+-&w7h`34PnHrM*q3=?`(v~Ell_may4A8D+f7H?KXzJi`ObDbsT|JsdfCg* z_6Kh5faVNYzMlu<4;+4epRg$Z2?A4gejd$*@SPtoB{`g*tQD4@pKi+PZT$$7C%!lf ze0T5Sr}t#c#kt$p;fo8$y~_Y@G9?7Hi+vhK3#HPggk9hD&r?Ig*^4gWs_zDI9(GnC0|k3Rh5be18+2SM_uc+ zXM0$4kwxHrQTIhmvT-U@;%j^5K1Tp7Q zF6V8JK7xjK&vPi4txey_N}hhbCr+>w{8T>QU_qTT+4g-vrlgWYyC!*VA>ReXU>dzH6a-R@=mHMiqM*G}Z{0F^NxVi^(vdnlYET5C*#=3ft ztJMo!7xQ%F^8IDGadrv@>uid3`2;Zv&F7t54=E-!R7Ee{k(e=k@G5@b%BB0oCT2@K zZOr$Jp4L3GA}$gtSJ!eNQ7CaD=8|5U`q*@x`%1#*D?`{~+&y2H3Lgl*#(MZfX{c0b zh#ikX#dGmCg+$&dYXTEK#pia*sG{`2EQ`g->XGoohk0hHR!0k^AD89DyCqaF5+Vm2oquzjB);|HJ%n_Hn_bATp zryez}DVKYG`VYXA)2XAD$!#R8Q`=g}%pdU1`UXVkxD6Ry z5yY-EPw?=#{cpe&60hS9G)ZNstkME1?YNUe#VPzY8xX}Kq)ltJ*KHa}R-ZiAl{|Syas zT!C{s!@yis)`iFlEqSU2?(OOvI_9-d%?8mJ%1aWvpDjZ4PK~q7#qp40Y7BCM(0s36F)T=a)*T|dr7+0IpYZva(_|d3KgU@VSsm}9TLg=HfY#XK@ zOKYcRjCtI$zY^JtTJPT*gV*X$>g+TQ{mAML%BvbKatOr;ihWrYN{DZY-Wd2&Z6 zZ*j|t&fI6WZW^B4r>8tiGB#XSiAq)TyyvoHwzEI^;@jgIT+tOzXRp4hS&*b2|24k4 zaWEtE=;qE(byT5nSH0&3-Il!OfWX;JDnIqOTN(3FJBN!d>IYfV-n&^xX0rA6Ijl22 z68a7nPDXbR?LuZh=avt~oRJLr*3vIK{50PzEgmTDp!;Ir-O%A0?cHMdbDK^2{xTu$ zSwIN=USz=ew9UQk>7D7R{Dt$2BC8y4^HoOvMaB!IzG42AC(rr6KJWt_sOJG645x-K zy*)E-KM$TUyznIR`w`+oz2^u0=GXDmZ~c=WK_C_;#7>mVPjZYM)xy4BF{RM@gZ^ZWu&Gj3*{#l3ZPXFzOCtCaQ990mJxqowkwTz{aoREcdT~Pb=AYqHZs|g09nq)ZC{1`k<)lj7ea%4Jq z{0~DJ^xf$Ug~*JL`AqN_%-oeNILNHl_-uOV?SxbvsL7lr_@2mlx+HVC;gNat@_DUM z`N%2w9V7kg_yUtJ2PaE}T!dQ73)wuK2rb$Rt)vX2UJFSOQcLVbh86Ke)X|wUK|y%4 z4wf>{G8_ZPF0luz9tEWrp;$)X{Mbt*`~b`d!UuugbcC`S!TFGv-Xuq`wZUWosO)%H z(@Ic_Ik`PHLY-fhl?hR|27~NES@{74Y^2t;$cA2&aV)G(C>n;wk=v!1)kaBSBXnaU zJ!|}vC;V^D!|Qq>V{)iR*oZqwfR{h|y5psu@Nke>@4EYIu3X*9+X}c>Sz>EcO1p(kEqjzDmud19pOsYXSg~j-Z>Z# zmV(dcX6hFXi1l6;k)4c6YPvzFtmLSBElp~(Bf*Wz85?*%< zcOe7PZv)agD3Uoq%?QcX3RB*NBaPs>;!rS6!@&&A=Y;y95O-qX%5zXYBVaJ0hB5Yd zz*meR2>EE-`mCQc497ZGZnh#2FX1;UVmm^ioDdv{Zmj(rfHY0{wi>^DVtz*rUS|pK zg(PY_qIPd1-T0$f9phlJSuxjM>_A>M@DhZCn`_oam7`zFcm*3MkzKFZz-fs z_Clw_P@47ectPcS^MSa%fFL24jW!KSReis|Ln9uv)?QXbq36nFQ{j&l->~gfLjb5c z79saA)M+8K-QQNEWDj9-O7|>L$Q@PW^ z-d4#!Qp;)F)SH%c1w@@k$fP_(rYZ7ecqJXsz;EG{d{b<=ZG%!XLWoVJJmG$M&F0Og zJB1&uP-=vgSD9esJUJ|6tqXSm<%&u%Zm8eaI-R~^2=?V;FVs0Z_NWWCkxVbx7VR8LAQn-ik-RT*p-hm$OQbEEC5Q@YehBZqN~T`FqhAqu|<#mN1- z=OM}(lv^sgk|-G^luciY zV{Bh+_&Y--ls(VOCy^+@SG`c8W+RT~z!mb{ss5A()Tvh$n{iDp9dJ+-HM-fixYm<1 z-Fs8FcUuv41?Xq31Y;@=Tin2mH|n!@JDWIEuD?YsHi{ejs`RvAAhHRPjrc&_v3!O& z5^ja7wSIft`dThp0?T>I4bf~(W0>ye#?+x(2X7no>t`n>)5dE(gx)hs_&V#U-i+1969!@TOVxG@nB0QRsI$}`u=w%5b$h`8W@vZJGm zHoEYLVHnz1Rl2Y0lA)?6O@chNw|K%tuT`pIN2k(~Wv80iY*EYU&u;cX#zWiG6{F=E zq3k1VFX;g#;b?C3FdLB98QzA*zFdij0BK3i+)!isf<<>6ea8`YWB60iiA8O=2~po& z){izyA4RTxN+>~IBLEaJ`6TjioOx(m_=GMd97_N&0|?uUOc4MWPA!E&AbX0@+(wY= zj!2Q+;>9`yj0sAh9IY@1t=%d_#K8;np`||Abk<0aZeDP;NU=5995xDL8r{E;7{xF_ zrAFWn9N{TZC}u1i*_vutisA!3jsVWMEjeE+Ol24Tuobrb67>=vB302(O8CX70@hW6 zl0hSs=HNf{$*<2nyA|bzvT{wW4=c+lKgX@2i1wwN#ZqU^7v^`PRN@#jv1Da#y1`w(mVj%%i(S&-E4)RKvU#y+FAU?-<)KNYp>COI zYTj4DcUqRLN0%NQFX?p(8ei=*$q17f7kuD5m@Cq(Z;#Pq>@&z*-mja~SX9&|UvUf_ zeA2ZdA+Ta;u#!=_{DgN!OJ&7!Z6b(v*V1+l=!yTEKFXzeTLctH~CJ&XLzAP{1| z<{KRn!E607a`j>STBy)hn@ek&-_|l1zlNVLPZF&|^OZwY)?+PKOe5A?%+_OlSM7M$ z9fsCBme;dLHlFcr_(X3Enmu^OvTQB4eE(>@>kV($Hh*&Fx{L2hdge-x>}GKEQefHA zpqOCh_GVM&*M_0B=Pi7sSO6#XDyb?2fkl2{+`jCzMI8ssMeE8gZ}fNazVi($R_VJL z2VqhL*xRp1K8KBKZ+CB+e0%7z_eF+W>N13N zZzp~i@{<>N=khM}-mZKMM3EFwy*RMmIRHlXUn9P4*nbxc{JvDbl@Lu%YKS7m!U9?W z!a4dgF(eHJ2=#-=-rEj&dk~U!Ot5zh=ZDxD9X%^Qc8UQ)V~%llx6U>|LB)U5?>YK1?+v!+Mo49-gP)l zxqAkvo&%2OeQyu#NP*YoCu`AXN->c2of9M}5`aTTu*T3}e^MlpAI&cr3WbuRE%7i+ zk|9V0<+!DjaaRZ#1f7FyU3v$<_Ga}XRN0lnC=gt5+9xYZ?Y?AGcIilQvlPstC){W9 zk$F0`{-LPN^K!$+h^VLCwnEn~x`#+i?up7@YK;UG2T9n^1-JI9yC4agATULHr6cY# zyB=Ua4^&%~vk5men)-hZ47i+p=dtA8>av8v4t49=I;=j;?_Orn$?-f*#nYIE<@3W9 zo1*L)ctc;~!8)D7+m^MBdn|7<75iA`S*leVzFsd;s9)nf*zH(Oc(3|u1bWPk?Ou2m z22eiy%)@b^&-WJImpspg*eq5I%=@59|PSQjBo+}Bo_~DNhRqmy4a#_k>Q-*Hm5e!q*)Ck6N z^A4)r|4HznLZP&nS3!(_jwOY;4J$|&_xiqS5&z)#dqxf-gB6PSi18xHFl7o6-iT!l z?YHRgga^4}Ph9!-O|N5mSH%#|IW?tSK4>gx6CZsp7!b7At3$S4DUa8?9u(I{;br|v z31Y*=o`I}-bMJ8AzJ`eJvS+2p-H?1&BMCy@H6ujfpj)lHp<>CEK%FTK)FI2k;X~&R zFk^IG^5!I`OFivmKD(kYCk)D;Xmu+sy8TT7sb$McT^!dyn#z>##kWV8iA|_KWqv>P zXv;}cQJ*l!cX?;QKv#FcVi@N1@#L-|jl0I(V#B7Q>x6f4PD}}9hl)+Brx`iSW@Vn9 zloqqCC!0|cZVui3sXOk~OUZ{B*=T}zQCD{OJfa+BC1uAr{s4M7tj{SQ)H)GCV+eN= zA-xSd?c!fBNE3z-@1mFAzYD!mo#9onE17U*u&c`t@Ug3|7k%KS>2YhMSi{d{XtP*1 zOMh_smdN+xTAQ8g9&@9O{3O_o+Fv)Nv z6GcC6e@};6l&Tji%OkQV_fA1b9CvFy6L4Szu7a!@=Jf3gX(2Tm6Eh<0;nE|jH|||U z)!AV{oj9A4IzGQxdHAxz6-wzP>3;{N+(Fjv-PRH5WB4~mFmuHvw#CE)f|nAcjDvpC8YAmDv_LtF zaRD2fu!z}xl|Wt$u4J|vMsscqaBs~c(s>D8H%bBqC|+C>3I)k0s>!DmMWR=~%EMyE z5Yz_>fMBt{cKG}3v4ld+C_uLPRNBthnTyHggOsLYEHzI}AtKZY7^C%f(S3wh72XCd z3m6Yv8PCMYPm^B{SBFtMYkfE67B?;qXem1=p+IlSKeNv0Y0$jL;HuboXfgEw+l{U? zTrN2k;nMPttvVx_t6aB_`Y z9(gW}{Ave@6xQr`{T|jR_|8dlN@uOCGCrF)!t#^UR1NPfsPM6*^(Sjpk%{jtc5_x3 z{9^stkFHHrmK_gA?o2P7CuU20;B{;MF?3WW*f=oA>6iQCi|y;UhFANmNfkd-a<03U zzf;~KMNJ#@(B3Scswu){6vypV5vrAN;dc7)O8cn$W?N7c-=ixfQ~kmpJ6D?7vHF|& z!vP-~E=ug2EEKR9BcYbf^sjKVS{?bVPkCeQYowiN@0s3ws}8={-3s}n6OuYB)bml? zLSwk`KKCoFNJXP!4sJ)R&e!6H)~t1AKPyPv&Q|!kv`cQN7^E6otiEz@ zCF5s|8t6urb>koCaf<-3;S79?QEN!}e_NYcbYTHJZbgVSd_2O-e{TE#mk>s9! z@BN2#b9)7@we05(uD2TJidNo~Wehq6^U)6xuda6VxY%p|xU(3`d)#Hh;bdS#wuJYo zu1$K|=2`svr4b?z)TP;PX}B{XGl#Bs2WjL)vb<*}DLvnJFl^@R(3i;beMm{!b}o_R zTb)ku{Mfv`P^wt9VaV=f(GfjRnWVo(C)&vOzQwgJq-v|$+w1d|?_ho5>utAHuN&Xa z-!&iU@3x=)V1eCr@9cTK8zSPp!0<)2$g6QLrtpl7s=Vjj1A}jgP2O}j-g=DOc>T@l z%zI5a=Af6b@u1M6nL(Dc`@|pWL502b*^TG?o_p?lJV;uwN7Zn)YT=g? z=jWrY`1a?wkmGOjZ+%az-u}RJ`kfEH^Z6 zFU)xu2A@ZaK;SZAQ|p)h*4;@A$$%)SDIe9cHXNe%_;=#W&LUStvY3=4E*`eWic7H5i*QI$ai+Jo zylQ_^FTvAv=PD5u?`C`5k9NRX;+n|a>q^i0MI>t!J1)>*2g=fVKvyLg*-`#Pk}N>- zPM(;ENWAc8$&wAp8z+(&TVZkM+)eJz!#h$)CMoHr+cIZJS?|u^2r1GODTU8B6`PPs z1D%G`QUarr_bA$K(^sg_cin?Yp#F032%)8pI^X~Uax9dKMD|- z0>Vw@-bnrirfA4DJOP0zy?#M*&AGpTDZN3PvQZ!~h2?JanH&gA$sm+}1_Dz$MdFn} zV9Gm$o_rDrOxY9U8$QOFs09JiR}dlOkt_W68Qy8+02!VFjXkp z>@5^%Dk@RPPgm%!QYfWRDA9OVde)b*sW1#vd|fSH$8!7qP&E_}h zigA(s^SO#m<8qA$Elr#KVV@PxzbUqv%C(mCw22I0d6ZyMO5LAjyS(3ZM=BML%fBlb zD9TmpA5aqRR2tk=vQknQCK@z_E06Lhmn|y2S5hudSNdQ(7{Q|aDN?yUNO`hkuq#h_ zdSH-LN_l2enW%Int%{1N%4+10p_Izkk|9T>mY(XN z*?}Q~ah07Q>Gd;}y-0%X@zy<&dpV}c2YSPm0V;>y!~35HkJ9fg-@kX-G`vQ5?+gT^ zu(bU=8%B=a13nC$E44wohM_KPu;yWSMjIl37^kZZH)9wt{~f;mFu~73Lg`^5(RSi4 z)uXeKrOlCf3bj3!Q4RsMb0W1%#3~en? za)H-E1B>|Y3j`Bf2r9q7p|1|<8s&?+f4fwfL3BviW$2D(he*_rs85HO-O$~^4vglI z`1cM8K@EOojZu;DWz+EmXAP+!4Jv&Ng%3*dcAbi)8p1QXy~{TdBzQKbjp-|5(C>NIPyhA~ zNyd;V@t_$)pZQ>q#nm25<$kN?A#3RY8~q;JngP4u9{bV(2jyYM=L1fq`H#W({K}t7 zMLw-RdhkU5fqSWf+s}Lty8%z>KCgUDkC{*T1D{OyANV4){PREgUY*E+PaH~3v}jCN zJ(_58*4_`A2o=@72w#>D3l5KLo(N{qj#k!=_^Dk*q!afX1ZNCCW9^R@Y)H`5d1j}R zsHYj$S(K0j=Ul7IViI*~}POgRY7y-o)CF8$BBT@QPfWqPCZHq-U` znw8R;^{}>jgZXkpTY6z(Z7rU8hVuJyM!Gg=ctmteBy}`2P+a)`LYEy%?(yrBv*~SEejh{-3 zgR@bc2HRKVcYYeo5*zOQoGHI*XjN)(Ab4+I->}%$@JN5~Ta=-Pp8jd@%t^E1yI{kg z&9hruhU?3Qz|DaR2BWP(LztH6cV(kWX(OCjC5W%l36BxJOe3Pq2$OF_+m0WC|LfQCIff~}@xW&|%dgVS%rm=*NG2K%o`l0#l5@W`X8kf(F zHHaTE)oSAMF09QMv$(1<8$2=>eZ(GZ%o_cOBJ&ZKfiZW>BdVv5u0Cxg++GMCe8fLw z#LH-MVf*OD$4?j6RZQ3@O>W{my5+mb6m4?*<^oySBEEr%NcSVr*~P0ZCU@-@#YjwP z3rr-sKQ4$aaWR@o`)Wwqn>tII$VKbQWG>wFd>+>CP_e%^Di|evlxy^53g6I*uj{HG$&%0E3ifc(|K@7I>|)^Ia`5c( z)9&SvvgOdk<%=-i<#6-m2(jfzw&f_2<>-~An4zWE+NHSjrJ(M`XIjhgWs3=7E6)=b z6U|qWd>4}sS6wOBQp^`qaV!HUfUI+?Y!d4ijMh24*12NVc`DZV2G#}k)`h;-MbXwT zGp&outY5WQmke2#7+92TTbG|(SCH6LGTOZ6wW$)bsaCP6F|et%w|V1hQx|PhpJ~%j zX4BYW(==q$JZsakZS(frrj^9DjnTH9*S14TkzB~O%fPnV-nPfrwl~`LU8ZecnQeay zh{&=XoV6X=wjDmV9U-wBWwaaPwRqzieQ?VsF3dYrht4|25Noz07{2#eQ?herwi# zd)t2J+IRLwkoKUx(vphm%Z)(=vx2Ee>Zx4nJod&bJ*d z&K&?!N62MID4!$jt|R=O<1b)}gCnlrZ(vH6BSHCZV9Kx~@t1!IOlhDO^7DEVDoIEE zfQAY;j^+p%*s(`v;Y2>;1RZt?n!aUURkxbFr>l5d@&0WU$$bs7$Ctl2xorrb?>%N+ z-78+s<2{L`HKcMn*o$r3_xk=gm*R;R%af6t-vmosoKz&9@Pdn)yn2j3`55)A{($M0 z(5F3jy6hB_ec!Zwk)tQvq|V}(ohA63CGR>*UF2c^_?$=q&~rBmxemPtzEJx`5&(;7 z9k{X08J%EpX@G1TRw@Rp1ucF02K?TC{=jeY%VBIp%_gqGTBo#J4B4W|-PKv-%5a!U zGN^_vh(8OwTNRt!5I~}}0QJ3zZ#;1dSDasi7TRA_h2Is_GvJ|B!9(Z$IW&0CF!iLl zv871OlmhRHET`hd4=a;Bvp>&%f|aGY?qwtOAHXWsF0YQJ~44Vg=?fD;?4K`_ebr-y1UZN4-w!cT~q_2KnZ%A$bQ%U<* z%fV)YCkVD2Y&O{V|J=@h*n&_2n+*#@Vu}kMVN%zMYj-$@b2nATeBQTYJ5uvx==uj^ zvhkRoD_Iau9Wa@ZK}<1CsJBKmmpnMAQR-?Z=_DniTG`h7mfp+rB6|$bf4}m};3>HN zhf@HHfx(hsupSt^!eHCLmd6`q|0x3=YyJe@4(IDZ;HiPx7xDy#?_nGA)|GoWRAvTZ!kfZar+Iz72`VR^Kln{6?z(#_%1FXOY zYwy8(@#m(1cLywW2J7&_8fLI)xh}Ew4<%r*_C0u-U@1O$`k?l}%6w3MV5##jrTyjx zfc5#Q)&-}>KftpF@14i(FtAn`#0Y?;%V2RnSe6f#--B0dymj(d{qz6g2j>Fw_r?=k zc%k!e<4H-PFjDHxZ{rC&%pcNf11>e~cuTkWyc=9WR&J_OLZw{>Gc+DKU~?)wOlPn9VPss zl+gn4xdor6+e`g*Au(b;eN>1|Xe)$BXaw+;pvDB?(?%vCY2dUIUjo^m&x!xh@^7}x zHpB$d1C0GME&l`A0+cqWTrh-ywf3NR!MFlS6;%2kI>?{s2*wyt@1WShhqcJB>JKRd zlrZ=lfB|)OXaSTk_oBIfT!URuAyO(v5^pn zX*9s_I4(6PKH*U!z>$)c=avwkB}bl{UuvIOq?av$4=sCBE?KGTkK+Vwt*z@Y%amxu zO5os90PG~4qg~RyT9*BAA^?ACY*w$kVO|q90pQWEj(pjCun1&mLvfAZpdE#C>xah9 z?gwoo2T&1^)y8&y&YHI{FHU#~_X?X1o@!3lwQeI9UH8f>lu?C3p7d6%EXCn0_q8UE z%k%q^SWPl0@T*py#ov5V7Fh_cIePKmN6UY~5dO)s=^zZ@@0U$C#8*TTC-altdl(8x zB2+6(-$VJl(c*M;$|wm4!j>PcpuyuP4k2cdL!*_ht7=1o$hwjKge-b;@#IMD)_@Rd z&pdG)>PXC^zYE~|py;#yiRk|*9t`7u;avWR{*U58t%IWfd%1%u|08!$_kXkw3LTXD zpMLgFFZ>tv1&q~T&<6GWr~d^d{$CgOzj_A#QS?0+>}@ore4@m)UsIv5&%br*YTB^n zng%US@8pR+y zpdb4OCm)X3L#1Gugo0uP0$=^_z8(Z6a(7z@z!Gd;lb6pPI^JA=lyb zfT}8Uwj}#e0$LToc6LM<;4sh6wMyYd{>O!O|7if9`)?)sD4V7QNLP?&7bCA+<-C8o z<>+gkR>$m)_ybl=dLdvz#8XifttteWH4P@D^ft<(5dXWOGCtGn-yboU5U_V#(=A08nS?D_{{6~pFMKU?L1!YFX*@`6qWm|F7uUM)DK(=)Z zMM-2gDf9vO(BVm0)3M%Hl8993;>6U-=uA>9fWRRG7>HNDt#z*}d2hi9Kb{?2NcOoa z7Ld036W}aE&fEsV0N4{eejt0Uqdh{Kgaep^`~%4X1LeO`+aLO-RiX8a=$ms%5Iu_@&{yCQ1491Ls+v;k%=&KK|Z*4+5UL zXsL(bJXLoP^+rjt4qvMm)A7?+$ zF8~+;yU246ZxAx7bSO_Z^1`pL4uF67>l>i$6?D^r z|6bVG{Ic5)ObJvSfCf=;Ul(O%pgk8z+o(zFGd1fIFq;xE>pMR`n5r5RFdMtLaU%-b z2by#RunPcq(DUgi>{yh5DQGFZn40?KIyIZRAR+=?wig)8ul->cK*uTwz6AZIHBq1u z6+EYd3mO{Gjtcr#L04`a`#qt>!(gSusjui#>^hos$Dk!?4>;5S91?sy zU0b187Kz|XI^pyj-|{Y^VZ+ga8hYYQ<;}=2J!BW5%-DtD(pNMEF&e#wSY4ZL&yhQ4AV7P!hLu zq18b5Z7Xh(+uXG&^QT9~*3AC%6L0tT2~Epd<4%%y+RE4GW#T1l+GOUer*!h3LIIIm zst>v2cDvkU?BK={$0st$@@ge!0et?)Jj>#$gFS_=sLJ|J~tM4{PIDReZf~UMRgo)8l^L73$<(_)blKphP_*P z((1JNX|{Z>oEV=@A2#zWcSMa=D)-dKq7)a8amMGlV4Z5ll9NDjhQqo?oV{4>#mx~n zeBwG}0fZnW|AmIAjB)9q;CB<7YJ0rgJm+R}&N$}Un`VgA?anqgs35J4%dIe4s-&D| z9mb3)g5F|9USS0z6JaI~8@&4~1V*w&c8D!kM&Ubb3NMt+z@-6miZb$f003R^&0cs* z_u~ScRrJ##E6R+=vmBLmC+ix#MPI(B@M`gpH9YTOm@j5b)XP8S^!gTV^`hP9YAcR$ zlvY2lt7RO8tn5cwRpZ-oAl`& z61Fo(NL*4vUeb5Y?@*+ zvs~y$s>P>c15cX`Y2l+U3tC)O)S|2Rwc6riT25(Fy2Yfo-#Vxw?ApJSp3N+hs)0-- z7r%?UG;o>Ykh{>9VJsk^4;5FhL=+dg;M-=y#Ba2XIXd_+rx@XIhqfFz?FOQWUf{{f zwWCsZgE*945IpE@r)<~_=8t?qWFgl23&yC%1L#?=R)O_ za!^UVoosBCp{gR`X_vGLZh-N(59rYf}7&!;!`!gfyRuqy#8c zxygYMSTQVHh}Rxk>O{z>e+7xV6o-CdOFV~B$HI8znS(`^pp(75fT_9He85ANx2*E= z_DfK@V}AnInmAk*AU<_K9da|JSB(}ON5KIHQ22mSZGSY4F)KIc^?v-D&!XZ*Voc@= zL_d@gcu(KRUk57Qh2uSe-rr}res$rUzg{-3#2yP9u2B#ieIxOyo*785SAIDAEHX}@ zfC&-XYjr3EQ0%q>E$Y4O7%VAng#_c(g`NTYPW*K#4EjmZ#gNOkLNZ-SYgli+JVbyT z=sn1jF5^VrH^AcJSQfyLyQ&ojRX1LXV5kJcOpF}zF<|Y$@eYuGQ=$&jW3W=a#IF(5LU@Ib z!GzZ$T!D1=eg*>ryJ1hg>_w2v9iRLtyW|E+f`oaQc4uoi3pcj*rU2ODN;iVmS;mcC4w?wH-);M@O=dg;7Y|H-s zD-HkM!@8Hv#28`)CKJl>f}~sI4w6dFhd#s)ASD z1_OjQEEXeFx6Y`_R-Zct;G;F;bZcKwi#hr>%99;gt1)|>i7TgBsI|%%H7|c|1wu!H zB+HI+?q4^PL^LhlK`ElW^yJVNct(K-l$(BKtP>3wg#ngNsJ@kSUMfKk zJt1)xPt^{*!yPv)3&)ZIjzKJ^G$R4g0xyVvN{Oy|5c$b0P{wTdJ;2Inf=D7>0j?uQfe0DlT zYJ7yz+l3&l_0aS^VeN=92sJhz7IZ=FA*B(WjMJ382s5syO>>7|j%@@zV+Wlv95{g9 z*=JJD+uF2P1W2`A1JDhlcXRg1Dg4EuaVO$=zLbgg^~3MeL(@WbcUcN_!o)cs>9>i= zXeP23X&<=bK5BJ<1?g?sAVVjOx1A9sK3^Cf2(|9`1pD^?+yvzAvk#YLy39Z&w5(5Z;=k*ANOUZ;IA6LyPD&314gZ)Axp)i= zpmB*NyuKqCzfpuKmb)RZSHMo){J$OfkGz4|BXJb5I8Kg!a5Ar^B!31u|LaKs+;!g2 zYp{G-e~F}k)g$ljPf%h!N6I>HrQ`p>-djb*^>%B%RfT)uE&)RDKmrMx;O_1a+$CrT zgu>n3-QC^Y0t9yp2^u`X>#YBm?yq~F-uvS8IDM`T7mQ+!RmC&k^^O`tZc75T6go>hSiBRJ1;eqNq@9r&$>Sej_H;^2Hoa1f>UkVW*39<;m*INpN z_Ie9Rd4>;rr$|BBYdq+O-IiWJk&?kGMqiM9LqVEhUo^vtM?e86s5VPpagu%^l73ZM zpYPp1NrnXF-FSHgy9@1ylX8STlZt4P3QY`gy1@_p=;lh%5HWG{PM*hNT1)sFs>`v7 zTRw^9;=cTHi^Woq_;!lru2j^XN7Oz^)S-v?9%IxAN%RFz^p#fhZ;$Akl<2#b=!d1~ zr<-UHX$*un22nc(`BMyPY7Ba74CZnS_H7K5G!~CHmOwj}=u<37YAji6EX8sx)om;d zX&fzY9KCiN!>2gL)HvqWxaZ$N{s{z>=1_Jt*B4iym&eUA>Y*a?yt)!+?9xo}n$qvoQxh$e z6BQ3cOszx&O6B#ZbtiD8uDGFZLJ>`nlf&jD{SpvoJ|zF(GBFY&@81Tg(yIF+@?1B7 zJf-8kNmJ0EQm3>j-g7B_V)4PLDW*tTFL{$)m&s^8D!Z$v`i}BjX$vd28oJbgnLcO> z-6qOdDb^2CRPgG8;uI!o(>^vN&wx|w2PFmOCF>8ssj2B5+A7{$DgC@D-Mkd?yeN{| zhE-PSMzz|52kC4KYNvIHG;@YARtc8#hLsH(Navta_)aE)hCT^HBDzr47H?83Z_0^r zf^KS(`E6F?LDt98jGx+u5A*8KXIbI-SwB_PZmklin+zvMh3yJIxHU-5J0+@*=Cp`H z4XqNOcaq0wu5AbL7@nFJspBe$Ae7Al6NlklZT>J*86%9bcAs2?nnIV|#5E84%+ zv1HCY-N|;dF2EEQskqKHVMsS}0?SNiXdeJy{ryTLL#1o1@`6@mLajC3uToslO%1`N zn0}HkQxnM0X{5_ak$Xx}&GHBwk%fqo8CMD-(@IQMj0%~}F#8~JVM<~kWFs;WY#~E> zvlLviB2m%`#19Jb&og|kG8y>fb4gP_T31+&R-i-6q|!>0$|@RrGhu^el`93kIw?}q zC9jeyXFiloyh$tYt;)}>y14w%`=ja@q56=n8bq(_m!y3?SZV27jgwPt(OdnrQdMGQ zBT7_wDwO}I;$6HGOJW1sG7BxBCIMc(<}YFsVg9C$>7!T{0yorEY>_w zUKQ7UBO#;y+(6OBWR**~ScW$wT}zWi<+rDD)u?U2Q7b;OJh6rW%#^Z8yjACi^yENW zAmERGPH--+SM*uy_nrP~qQMDI+g)RJI*UdSeF92j)3e{&)UseVB@>506@28Z%jfMh zNqD7ZIhL*;?4RrW(lLF*V$o$IH7hA*(#x+CBa<9BW}t;!-}Wgr4a2lD*Z5nxyyBV3 z_IQWv4`p^_6OAC1TiJT5&{oNrPSSf^0womMaCt4h9%^4{aCi?9>EC-iWWZN+ptm#w zjt9$t|LHBwuO2Y+sy|(1mRHsTb8EkTow2dLJUu;|n3x1k1-e5h#_BAwHRa_MPmc|e zE03qAr$2uDI5{~vK0e;x-#<7wFa~iS9UZ~G`046sqj=8N86(u6-TeId^VhFmdwY8z zgSxxLa1d|QRjt|K(-RJ=!D&W69Nt*y3qFZ%0q`FVv+Onmie`&naw??r<= zzp`IaRB_SeoW5~2G&Ee=vF73KTBHHV&o0x~)NX2Si-$ElJw4tXrriR)vel&W@^V5# z+LPEvh&7V!r02cMjrJ!8-w-#M9EI~W?6;b484y?qt2^jN76W@UZ( z#oH&-h~n2uA}cG$!peSmMHO3gtN+LBVB2~|K6UoUepXga108km@%#T19hCq7HUFy> z_;+vVpYAf=caFROVQeM>bUh)?+z?`PEh%~}rw{!|6e6gm`;Pge@l>)3$07gIZ3}sS z0%^vjQknrjUjiR0Q>OUu{ULb%v|c$PCbD@TDL(?z#_h>u315-UvBvVnYNP%%M5{di z9uyc+#!ZXsUQZ+Qhd#GY4;MH&2yrWSYRgE8w<&-EVeZft~RW{*HbI z%;1q2o`hVkH~+y*^D0)KUJY%?bcNV8Q|X^38fEx6mHycB|8Ov%@yT|uhswkHnrr5R zaI6uzD$1)uT*u#uXZR@SVgm%~GTI(H?iXw|q~h!f+$v!h9D%zwo3Z=5?nE2v*&jDQ zAjhdwxdj`e^OkL?#u0>uJd1t68rThGg4FCpGMB|XkEVNOwH~L#r@iF^Eh=Tutm-w_ z51o8O+(Sc5A~8v2Wfkf}b>m=yV4KHkr7F5l?j>g+j=jy-kk&Ax)n1oIHjGXfO2PM? z!D>hqs@{_}4y}IHSRCs2%3V1NVn?=_ifuLs_I0#_qYD-1bebhv+59Lgmz~T_DK^=| zG9?cV`dy}vo}VR@m}4t^6`$qcR$!R-_2l_ngD=qm2`JzACf{p`XpW*;;C!H<9w3WQ z$E(&M?J3eq1QIlxAiFJ<@Fk`fnnAe3j;cT?5lYT3Zd)X(#%bae4wNUO{ut1QWnT;h zPF=k2=`=!uK5Xu`ZxIw0m^voZPW)CLZ-S0%TMn#|@Y-n|7&ymzx>mo3T)t^5D|o)0 zzAyCft(+qbLTuMiD9wjlXu8059HWn;CnPRfz3vE}-c)bu6^nGUB%d|+wmoS_ik8a_ zWk@e!9pm?3gZqguVa74O3Olgp%p*D5yYigOJmF>)r;+UW=Ua+kL-Xa(wlJR&nWlI8k;b+ss_sX zQg0ho9q28kaVQvvs$z8J_0MHY2mQC+(f}>l`M-NheCMG`5qShaZ;4swJWOi>=q-&5 zvU{F~8)4>?3`-5YN^|1idw6E*#zVk878Ci}2}bc#YM5{3Jj!DtpX$%Z@VmS7Xc%Sz z4T`jsaM$^(j=mgn;`)&!9uPPtqJaK|^r(!^MO?~60mIwTQ3cP7_#DhaM!^G^=*9t4 zSjM&$StuTg*j8dqL?Nq%^tjH-MN-Q|A-ntNxWU~;au25YOW9VLsjX?1q%tY8;lv5^ zotVHWHFL5{iwQHC*|a&^A|XAd3471W^exO{o?&SP<1pkjkAv-3dkD=I`tcm|Uc~~s zJo46U&U!PZKQgs;;4qw<%WM!(}34yt^K2=Ul-5Z_fU)U1S;RD04}p*|~G z8J%x&Nz{T0KlWI!n49}$vs?>AJrH-BvI|pV= zTs}|3_#4wetHSh!?DCilQ3cSTGJiY1{MGY!eGXQorKIf27~h9lJW!wMA~Q+n*NPhd zc^ko0Yt1A$xUf<$eOhCQPB-_?t*j=HMI4Vs8?$8#x$u$IJbrxb2j8F8>BuVMVMiS_ z)2)U$vr4TnPr=BEB31%fBebqn@UM50bjtY<2{n4|h#Dh)sb>yzuX?%<%o8Ap@ljv(077|W~SOz zjNv!^oS9-7VtLGhrjB7amH22Z|O90Xf0MpC*O} zj>#3`7ta9=!s_Pz%G`72$0@r*dVf0w!*0ky!7^dU01q>4aB6uzq=iHdck3`#?`G|8 zZc5wIixs^>c{Q2Lrh7N@?2HT1Q!hqUnU5=vs1db7WiEVT{5iIeZ-v>q(aRCCdOU1S zb7h!~(kU6z2c_tA8)$$w`Tf#}LQ`Gx*Av4N3H>>7RHMgkBoB1=^ti#OQi`gcvnOQ9CD;r>4*KGczh`yUoRo7kjj}Cqq z6kG5rS0pbeqTlKLHZ;0r;Dy3@nC`<4$yCeG+pp(QCVHy|%dg_j%b8fYdRgh=)b1Vh zL54}g_j~yoy&c~(4Z8xE_YR(3PV6F?f0aVk4pj|7pjCMBQVX{AYUHx#(c8u6MJBQ= z+?}LlMJxF8!=ctx+d}i#>ni^amU#rj8>o2l-nKU46hdmxWW$mjY688!%l>;XeffuXm+ zFqdEeoefIji^t;&(AkJQd`YByAv~}!Whtr~Um6lWS{^@oEkEZ0U&a(a<`zGI&c=S@ z$3f!%ipQTz%m0msKTnE3UyHxMlK;CKe<6|p5uN}stpEv+0I8G!nU(;#r2vJS040(@ z6`nvftw0TrK&_NOot8kL4P`Mq9j4?!*fEg7&L%nuRB!EkH_rY!V zoEmw@872&MRt{aiCQ|bykClSn8o$Th4o%mhiMM3AaS|K`hla+5E(*IL81vPQgycPA z!HIpYi${plz}g-10uqZ*8OKo|MRQ&!VD{6*+5c@^?z3NRG?V!eG4;%I`;c7JNF-&_ z4oik8S}xDU=Z1cfAHH#}2Z#IRh9lL!uBCmOR!1BV&wSQGd@CM3p=HKS!(6u=b%6?Q zP@&27h&s<>dPp(-LWg&58Dr!O_4gB~6Je=>u+)8shKEFj8iwG4aA zdx;q!fb~6AUOD#b&C3~+IJ$3U6t`x=!>?U(V+$<>j~RKe;L7n}^Vs*#ouh9ASV!Z8 z@}JF^K)q3-ES%!Dkz!EQpe(m>Y@rE#H!oi;3q7h3iEFdSAG|K=k1uqJ(qQ63V|tBL z8f6;lfC9!fW-xNDCyh!8gU7{e&n8`wP@70ctF?w`E`vX&hN<)NARQ!zos$_i2T$#W zPl!f^v_{Z6B0PSinM>hE7KRwsB!r{!n&so?lElY`QuLN2F1DoN1|%R8FgDYr9+N;u zXPJw6)BJ7;xl09tZzK3i!}xD0jGKjgQH7j@g)|`Kg0XR&(&?B5)Lby`IIVOw?RSNr z==eXymmg%%-KNQ3CCz=xL;-(ZYRz0|&0LkH-yqG}f%9g4*UtL!DQiD9>##NJcsc9W zZPpoS_JuS)qEhznPuVxA*>|nk56jt4x7i@F90*?yqD~I7XAWvw4tiS-fKj`-r9tG# z<{`<&7Rkl4mdHi~5v7pow&;y}>)f|5M^RMK;Co2%uDR@l8-TjR>W?aBsOVhth z=!HteGnR{@j3{LU6^KC)PjiFidGqWS8Zj41NEhwR+rOx_er{Bxd{^|ar1|1mu`F0C zGKeHe3|RpRPAJHIp#%MZ4pNFikncfy4?+ULr;!YGpj^ZLfu7K)wj#&iVpJ!{abc*= zk0NyCST^6%q?MO0C4~uM$Z|c1K77)CZFxw-NCY4duM$#&4iYH{q>)pUIYw;rDd9)q z2mMjMnlNZ9Us>lJ|AB--H>vx(-=_W?RF*#x%xd4~=4O6$HzP7PbtmTjwgR3zG~stb za3|*1^du}UD=TR$i=8XuwT8Z@K>|%9HtHZb(?Dg65+2PcyTU58+(H;{s?eOOW74V_ zhpUrUs>^Y$%>FGej(Luf()$T^s`D3QY<@PynWPi4BD5Sj{xwSf~Da<0brm7fUa>eA9)@|j$ zE?vS|qMRx!h#&%)la60n3RDs!hAa?MN7qL3Ob1cy4&l( zRL-XSFndcIE9-JIk)t9p^1>fTjGym9Zws4b+nqUx`8`=0r$(%V$tw(N3rleGgn%$i z8YB-66!#oN4G>6b3-NWiDH4%E0EzQcnO|f$G&#LBzp0gMrj@C=!ny1@4!PCA8=l`J zaSAh}qJx}~FmOPYRL;)ixK}@~Qf}zcDIlnKm6-p&1W5<9^N4amu zm*$R1S+~um8vbpR+mY8^#l5=z;5bNi& z?GO9V$D=3CC)Y2a*N3p3BjGh5l`(+m36)tJP>q|4DTY4^3=!}Rvgr*5It@B^4128&e-RkA zc^LK+7zxlDakU-hKJNE}=MD$1jYK_+SW=9{2#hA^je;FVLXP{wScxJ43*5u#7uL}n zfw6+)p_GhKkB$*>y|Ie5F;mvDDvI$suThnZ(KLY)GQRP)=;q2Y{)af-$n>-2HOpwKi#F=tZo43UlI+iJ%kGbM<_dq|WL#F>Mj(}5sEIfO|$ z8@o24modvFq@Kh@Ll?Cs2Qeq-q~sAq91(QnXH4Yh-a5`PJVIo!*1{g=RXGr%*B9kG5eFVubZwVg zDpxxM7j@tdt1^N!{rYR#UTgi8YdZ65+jeWwm2*HAyJ6+ZV&uB^!&F`5ftYfJxl3;J#cPhlIPuyLioSxY%kpSjt%K4|Zabi1~lnYq||GK~|3WPP@= z>%D;)HD|YlIEnTB^l=^udvjiJ^U7{Y*K3zIYhGJ#QQ+O2T%@@$`?{$8jvfVqWY%~6 zjScYhcYMmtg~uHZY*3Tecvaf?A527KyH)Mub;9+z9m*;sY|4sBe50tj!&(Ru`;zF^ z&j9$B{Wmozvz04VlRp}4p|%}^f(`QZ z*M8*JZ}F6SoL&7l>x9;9DAJBdYiqN1o!c>86Wek}O<#~&vJl(4j=F6(Ur`w;+W8JfvJpTH0Jk35ngniT^aA1Tv<>ZYdsPuF3-T1ev!Hutz+wXqOJROQe z9BbwtAKHK2qdNVTadOgia`koQGV65A_Ehco*IV%E1J&gHyR-J=Q+Ld>H_y(H4UbjU z&o(2@SOs?L40fTLr#L?6h*Q7dQKw{vr=;+6?9(3(3g@E+1CW>t=I#sD%?oz;1qb!z zEBO0MF2l<=K9@YF7d9D}0-Klb;Fm(wS6na8Lpx4He6FOjuVh|c@poS-z^{~WuEnbR z7~sDcsjs!NuXUm?<-4y9;MYd)uN^n4Ai^LcpWl|$*ZSGNZ8v|vfB73t=^E^FZEyI; z&G6F3=Z|OiA7-3CAG^<7sxJ^YZUPK%f_wn-+D%yZP1w{Qo$No5o}0M$w+V{3QQ6mD zs?WHc2H6a6v*5Q`KDSyp0Cw%JDEcO^`Zq=PnZ(pZG5oGL`%YzQAQR`liTbYY^eT1p zj>YG`>-}wO^?k$XUAN&wDD{JE_q~(-?*YIxt9Ua~eN_N|n4^A_u6{7B&TUkD{0et? zlzRWT=J2rLbG6i6x3c-L4Zq)=y6WG&KQMeaqQ2Tw>^AFuJoULh$GO__fj8kmA&A)Y zTGLy?0ceEmrXw*xYZZ-Np+HNS78VTUw*S5~vnv?`eQnIe)ALv;{7s=VUpAdi=1i2aGJiBy z{$UU=(&MURw#aHeYE9HIrt`r~GewEN}9c>)qzDpGJtv3rJq(Z6v$ z4zR$H+uV5ke3RZ=A8ok#^iUBn7lD%)oX_)E1W%P9Rg-Zc2!YT=Nd$xYN=Xcf5`He%$mMvY zEJc^-q9Vi6c%>ruT%U{QO+P)}*GW7=S2Yz`HWyWVtQ}TW4PDpkc^PH1OWL=w9T+`I z^7F2m1_c5-<#b$iv7F4=Kf~oc%#w8NZ%vGF)-cV| zo@KR|WH>Kq|BSYWRuJz-YHl6K-fCGw*z(Dutb7CBYGE(_+*`eb;o*?jvb^Gzt)N*R@$4>{TE>CNB z-zvX&ZX9hqjUJgyy}LUNEa>v0?ti~wb(Jj8?M?bx#OTZ2QM1pNpj#o1P(S zim>Z(YOmjax^HfAe1BkUfl#!17-AiK={+|Qx#{1dphNv`V{?#RmcWH@7@#21xtyD; z#a^gNi62t}6j@qI2%iiZ$U1YZw1e52@kH8)1ZS3V znAP_!vhAB3)(t09J=Q$pPy`9VD2Iqn4EmopDWdPKOM?RojAu7Sq=d&fW0z~`=&=qY zUg@Yr#ud=vh>L)fg8nkvsI#4 z3D2^J-kf8KNBWjPHFXdF2Q>M1;yd?c=ybu4mIB^f1Gt82I#ZiDdGoD2yK8;W7X6E) zfz%w^B-Knrz86%Bw+hsam%(QR#bMu>hCF|$iv4LweD^5*?8~niI)R)%oG(g#Jz7h>^!16gs=xIDzl6FQMJ@#CopE4+eL)F_BM?W{1OAMaSn!U+ zS2pl&qN$6!itLlMy!aUe36@(xUkEW)J)7wuQh`_ct&QLmfbgD25YoCdma7t%Lt@(+ zs-_!Q&AE@XQN8A>UepL%t8@6_#q=Ojo>}Wer+$6!_8mougH6LwMl(LH$Dp#3NxGg! z<=e$?y3}j7535rwl~#J;85u(()?rxF&yPRI$M;1O<>(vV54 z&e&ta4?eLRN+l09=jk7wG>mZ0-1A!fu%bOxo9b-;=fUFZm3D0Q zgjp_@x24!mm84K}mwd{{eSKQIX8)lPFsrwfoQ2M8`VW_4!AC2lV4b;q2G`QJCnN|3 zI`ie`uI2iV)>^|l3-v{=m3H1XdhIKLSF%En%smJsv|s1?8Qf|ky=_f{$>v+l-Rd(R zZ7n4~FSKV-<9kMeFs{I;y>1NPxJNt3VBNJ*gQkW_Z+n+w@|8IW5KaY~?>mf6`l82#WKt~^#UE4rH)79Rc5lMXORy&e4O#-3HXGk=WL zZStQU!#E(PuwcFK1kEi7v87a%5jqG8)39Ovr;ldtLknI~5Ne4p&Ka9+-*Ln|UWvat zW?u9eLkM2 zus?16!oQGtTY5p}4#E_S-G?O8&*nXEL`m$8jwrnh<~c1z@WoypO?-ZLLLYsFvD%f? zY|@5C0_r2HfCXf3=+mW8brh1q6%RN5cw;3i^q&cK{uy$h`0ixsiIbM)KW1n!F9Gd5 zbfEN9KNW(OE%?uxWZupPd!3NFGvrKmYY@KEc|5Z4xnGBWxf%9J{8{Ytc;e&p@Y4`} z|I-Kl2=@VD3ITLB2&)i+004XzLedig=xiunLZ}f!Xcc49gr|uz^kn^D4uOJ0c+GPZ8=T>J31XEwq7qnM-OHJl+3i3WFU&@IGRc>nsiMV zF@T+lq_V$`xcyETS5$;zytaM}^jVrCq=)5&Kn*=2Gwzu`119*ZA1atdgkcVqTNOlP z#5$bTH$uzA7{Qq$!U`XJRZ3@CpL16O)FF`mUsv>Q1eJHBFxp8b&7i`IG!gxIF zARb>te(|dv5K)V8)Qwo5XXVnJXgA&g-=3K3D zLM{I1p>EnC1HHio5eZ3`0V=McXoxt3fL(a4jEPm0B!h{uzh^s+qdKqFFaUIe2Vo}h zrNyjr_5!ixR5CF7_Cp3gcGMbY3_Ar>{}HJexvL@)=<668e$zorDLNuOQBGA+Wq~M_ zY&>G4CW-cX1Wqw7{PddDv4h3QOCoYf@|?EX33IfPRvHyl#jxeenc@fLmnP<5(l8Z| z!PL3|Q~*jKWteWI)!ENO`2HUfiSx^brf zjvYuPd`z}WZEW~XHri;=u4267O4cx=v^9afSxmB5O$5wZM)x2?CW=r`D@LSLk9Rbh z`b~};Ul{jlB6$aNl~*e}FhN8xY1@$e)>aB@pq!6Y+8+}<`@L+LOH!sm-j{-TX`puL z`vk~j5*}A3FG(Q3=^{T;A%yEIjwn6G?xe8iLJXsi;S7JtRr+<`l&bA+?1`jbb^z~` zb?lfz@q$(HQb6%aPVrh#@wctwA1}q52*ukB#k&f{`wqp23B|`X#iwIM_=6${O9@P= z1YuJ`5L7~xS3=TPLbg*v@m4~OR6@&CLa&@QTLEECDq*cFVV@}BJSsu4lyNDQ@z|8{ zv6L}RLa-P?M0U!=-pVAA%A}dfWR=R~oyruG%9NQiSW?PSS~HYbD$giYXxUWgTxY1R zl_Npl=d!%F)I`PA_#2g_Csl+Rm4varkr?^EvYe5NoRKS>gT#Q@lxCkL&M9K46H%(G zbk4n8pF=;Hqf7)7TF$CI)=20>K3mQ4?LoY()QI+cpTXwd3aaySYkY3?6_ZypR0kO) z&g;*s>pjj}bk6a}v+~Q&*{Or1>{N6Lm2}sY%>(D;)>ZZFW|ay3-gv8->HC^`&&wvN zxfU)!cosd@HC@%gQiKrl8a1)&Md?IUr$Utw#zmS)Rf|M*E+kIhbxmS!;H}9I{w!ry zFjCc~a#7ZM2^OdxG^r8Ms2YYf|9Nj##7x;k@S9VnQXsI*(_jZSHIv9CWo`|D9!Pwm z`ZJJbY~fs5;5;NmJ2rALE)pOCEFl)8yqC!%eR;Vx$fV{pPGPg~D%y!>w5;YPNHO#&JSwofz2UkP6 zmpr_+@ReqR#r@4FAxK-g-Rtv)ldBSfYf)yC_VXG8=vpsaS5W1_oF{rygDR7ON+pka z-`Mo23Rh>ifdyQj_MV1n=`TgDli2B_$m=h6>a!KDBMT~Toak>p>LYJqZD3=e{x^ON z5MPRnfDFL};era8lP`hkxa;d{k=%>t6L4U{4VZR2J3G6%xdDdXfbq88g`Y`7zp_RS zbt=y9?(Ujq_MI9}xzjJ02A_avWQN|y7qz#^Bgal77gh6z+`ab7?aFm9C5Re0EugM?~Oy3?-CTs!}bX+|war)2r=s2P{=&sljpAny- z$f02BAtA?85okfvkO)81B*~_vp^=djQHMuHt4b5=;rc-Q0#t%*Tpd5U=pnevW8j(V zTUvYQj5-?0DJbcwX~>C+OCm|j{r9NYe~lsDg5trnkfOhoDIXsnpxVC{SHRy2SXuv? zTLBX*;CKbht$?i+aDM_;R^SovH{fIa#{>J1r}UpWLEsl~0Pu(ce$KzX&VO=HO#!p$ zKR{Hmb2|wkGk^^s@zDoB1pu6Y6+mGm7eFBr5)uOZr+`fru#5Wmc)ogN z^}l`n{=a-83LFLkm_>m>Kv;Gdz$}Ua!m{Jy6B3h>Q&Q8?qrh1KS>TNPg2JNWlG3vB zio#sK>dOCa@(#(ZZR_g($K+kvF)%zbIyT-vG%+j({Ez=+WS5zu|cPvx3x$3`Vr8ZY@{-0+S{XgKmbaw;hZ)CILB|(J~cA@ZE*v`k0Z06(pixz!0%$`d|nt zBw>utf12KvFlG}d^&;lU(b|+$*|%96;R@9VRia={3o$mQg)y_XOYF#3?$M{0Frq67 z2|b@tU>OBRGW1)iV8XV_Uv#n?9n-A3eT=NH{&*qXI48r8)|5u2YOj=^gf0X|4ln|N zvwFyTz#vS=-i8IEbTFt30K4pNe1zC!3{ zM?VMNCyvk%5HMqepvzQu4&yX%mXMm7kc=9dUi2N7(QGBmi(xcd8t^1D3I}s#Fcn9| zaC}>YP&XTnZRA9!USuP;-itj4L~+?I*f(R8EvuGVMBR(LNMu-3zhu6(+p6`rS5tL9 zHplNZ)o~-X>DTW&Ek{|S*^Xv0y;!U!j@sHS`>x+aIzOY5ZNHec{`|3=ky-BKWu5H! zu?uJrd75`MDzB4!VWbcJ;HdE{xmu%nGP*TmW*t10W4}oL!@>za8TrEQeD=6<|9F~oM0MY))9qLC zu#bIx1~_JGgj#TOyy`csY{)@(lJ!X^llVCPgFm)h86iZ|U^Ib*Ya)%;$U#%KCisYO z`Zt{N-1a&Sbn6v-QoLvLzdTiSQ{iGSdM>4n+~LfL%LNSRDBq5?DptuB_5KJha*o@e zf&8Atc)&S<;jZ9}6_9&VKMH6|ON>5u74LUgFs_Y8-PpqAid(PhytO|iUGBsZipZvT ztZ$A`77ggg8z_M=+ILZBIK+~kyEtB30C zgz*YqXxl^~j(h8?ax~iTA=6Z_^OA%zBLQq8K?psnsZagOPHqX=yqL1YNT9M@dTxxt zia%&-LOzKcH>}=$#R1~V~bsP*VQnr3L_NRr9O0`s(U_5V>4V$QLY7z`aYzC-)2i= zI=|~uCV@FTS*-z`quL7435^&A+P5*|x`&+#Yt8YMg*J`)EOlEHhQP9>Brdf-uX=2m z8f#3L8o;^aMop%!s#!Y~mBHlCM^MjKXEcm*lkc<(cgjGt5gN_$X+jRpvLLT@qg zqihfA- zMrAvvmJnDDT0Mm4XmoS&{4(ziFIE>xFExG=F!%(cb%7y}PxmP3POM|S<*g+TBAX=3 zF~-xq9n%Uru~KFUBYOKr3tng&e(7%ToCVVurKswOD#ujYx5vP=h$3~lg|T8H`W-2yeqvvOU#Gf$%gnm7W9juNapM{iIb^92M&{L1 ziEgjfxZ=qythUv&h1a;-!qTU}eB6s(FPw(<_+7;LtqX2XZHnS#BdYt&Ob>QbBHg5! zoI?t1}#LK;%h}m*;&fLt3t)xU)okK!h zO$?jK82bJCnZnCj-xaBx9rfTy0RjZ0eaxPx%Oqcor)V~}@ zhFos?o?}ayJaFb{9<3;uB@g+3e%QTGXzAe(cZihk$sz7`U&QRygy{(EimDThSSVah zekI?cq-OkjUU?pRpRm)eq(=Ms>7(a(#}6sRJ0pjz5voIhO)=`bA@8gquT#!Fp{cYy zlH9AR&z*Z{i=MOOU!7BM2#!eLw~Dh0S3%VsxQ5Z~YrO1OZR6!%5VPAi;uWyl@%vAO zH`}+YHr(MIaKRrHWF0&2vl0gRH?|^uI=%-|-j3>a%~(x#{CNAH%;9w&YEIoP^pBjK z!a7@J>O}>2M1MP?e79(@zyG}T1QjO4D*n=qy_0cv(>ON`mz+^iEY)o?Piv0toEnUp(32=td#2E{OIYS&82nR)&5Ioz~=2u^Ovi6 z_*C=#<~}7cOf&h*xx3e#h3l_k@1aGaKgB-SJg_Nu?5lXu`C%Ujk2gr%_xi0jr10bW zw;wl$VPnZY{KY^{=NIumFwZ&3`#->A-?L)BB@`cB6q0^PKf)F`vjedQ=*EZS#(`l( z)L7CNvgF%x4R+;Z^buR~QSoq-3i%?lQF7rkSzp}X~-t7WB3SqXba?pBSc_}GA<+}qzCf)3?X*kA-)AYpCru3l`$hF zsE`Doe;+TMQQK}QY`qyq1h!(eaEs$`oT3e`stHRy3u{&iY|{)sI( z2KCaD^x}|0@3F+_PjQ_`bz$K2YYvHQ>x+256w!d{@ihdFKC6W>kLtR}BViZpL6{qf zJo066G2pUUlX%2CGf{Jc2YpWp<7dmqMaw{=6x{2}=(C%TBJ-MJJON-5*B2u}wD+`Xh5tF}KTTA+DzLPJWpDrtn>h$L@r{JYR3hfnTKyl5{z>4esJ z@%bh*@Fq|8Bs(t0<9(uX9Su3)Oi3uA3X%>BNllt-fu|JjC#S)Df<`=6c~W1a_%XkT zP11I*ZAnE5PL(Q6%|iQ_$(weLoJRH{t>`v2u{Evuz%5levF0ExN+YcS&9)@fsq9nw zsd;)w=%@PBw7T2$vmfaLp=PaCPVJvE8kf^1MlDB~-jCmAXq#uuF&WRGG0lF;M0HPG z`((C^#qQ`y8Ix)*UzSY?d4eP(nqW_U~HL7!tmfBt7^QY9{_i}bd zV)iatPUUqrVwyIDFB|1B`$ua|d18(=X%@DQ7BXM%FT#wr(j20&Y^=6i)Ue#K(p)OC z97?{tB&6I(rd)?wF&w1QPJS}D@^%sJaac%^NG{4N^7#-d1|ro z6|kZgd>_e{AafLNE4T{D-zm*k@C=jZD?|t`U??rnKz9>tD|{PP_`bBzU@TUjuc!&N zsEVe@oH<;HuZYn)%DSzngRxk0EXA=bPgf`39=-5_G}rF1&=bAHt1P<|uh@k-BG|LY zZ7e!Srr0;F*q<*aR3;+cvoJg?&cnJex~w#oxiB%TBs(o0c2JtwR;qee6p>b1tW)?g ztSsfOI7X)^`>@Qdv`oReta+vM3t5@xa!F-bITLz$26K5KdWAc4MY&8xyi9pOXhmyT zMd(;XuvNKiSoyqlMd@M1B6_9Mu!C1{W%U@m+?Kg2FDxd&6D>{}KSw5kGS`vKy(+XX z`%owC61}QX$KiUV@H(vM8)NnB+A0e)yk9cWXFAwV%=jSP8VFNm7?b1eiWm4E7XiZx zT{anIJnZVO8nZl$7y}=zy*k;my7LZ?y1e%HN(J3f7-@J7Ie7tPIZN0g7RzTB{}=Ty z_$zN@lEW?P@5<^qk1+7tV^>o>-j`!MzfbnFsDCJnewpqrjnVM>o|zk?@$G62?|9u0 zw7O{C28Pvot@eh)Zw+HD26HP}foYBJWSf9nxBDw~(uXxx<2ePNnha#?Kgy=s={8be zG)s|xbWU$}WodLja=I^VW*={MJ8JeIhgVy!HlMXN9jmt(wWA%7HHXQzxM0+JX&c9s zH+|x7jb&<@B5BPW&w-V6pp3Ws}!2ju)Bmw^V#; z%loWp&eC47)1)2NLPg$4Z`1K1tYciZeblDK;l6E#yk%;&%_Y5#&8dNerE^%ebIPWZ z`KWUeqidI?YjwQC>agQycpF1_C#<}awYPHyqdUT;>j0y3vAms!rJF^#`@X%A@2;k| z98Z`$y?w0xvb6BdYoc4@s2h2r=k};)aJ=g_ybHIYmuS2f_qZ2c-u1}b z_nfttRIc|kMlX|GAF*85(NP~KCcK}?sVA4WNB^kHaJ(;Ax9yE}rG#~#oNmfHflj|q z1DojskmF)GfieYKDw>S&D73-eyMZ5MDJm5Md*OqpWrKU1gJUX#+N|jYay3SBRK|K( z?#pp+a(muR48E>tecKXo9TMB-;p?gw{?V)Nxmx0>rN^-jbXY4k|MM_CdixniY=thWS`1ayU)cS$roqK5F&3UuL)-9hkVIzQnA5DLAjg5TfBdua!Bk(>brV zK5y_iZ$!E9DOPrlq;^ay%)Aqr-Iy2V{3@KbaM6*h_#)A{Gkn#Suu*Nn_A#dPqhF`i zqK)^WI(YImQ{3o&B54cU%k#EiULailAbQ<4`sH0gZiL$g=2W{JOm8&8{J_hWchciv zj2X>WiZ{SienmfYf^{EOc1%E5y6ln>ljo5S|2=lj9yLOtkEHWDTd?{a2dJ-)ptsjf9NpO9~Hb7B3#xT@3X?^urYkgyRsHk%NCC}U* z)>7bw*W`Nql6*XUsy7{RMy}q+sP$0`EjI#-Rg08$J7Q8ttokj-<>Y5uPLo)O??~M+ zW6`=WZ&(+wf8pSrZQ%jg76#iyU$%jeRI;vZij8fmr)?Ul9olz0^aeW&R15@>q)hL& zh%!l8>`7l5ka8+;lD>}GVyoJD`*r7Y*e-w7uHV@1`(L}Y%-?0Pc6r%}P-d|t*>`0X zcIEAN1?|6^kp1l#|BDi>0TA2s{{yl8FR33umIL5&fCCL6p8-_vUs5^1C?-bU zpAe){r@91^ABzh9A7pktKxg%T&jQ&ATT5r|;qq7ow$!PqSEI#ST4lR`4O-ktH zs4br=O7C{)A(C|xZJ<&rO^E=thnxl}6>?qUkR=cLvw!I(0A8H+AKmr;cin$k*??$( z;R-Zw0mVS`77z`{1$wrCbU-vv8$ciiaPmNh_Ak=)FHs)Q{lAI^jvz?@M0}xtp)+ld zy3W!BhzZhny>XVdqQElZV9;UINI~3lTvXQKwU1^{k}q@t^+p*0lU4QEj+U7CHomWL zPZ)M28V%yVr2i|yAq$Z1@*kuFih)%JHU&Tc{~M$5mxl~czX1X`0QLTh^an};$^eQ1 zqywAfuloN=_dn7_Xq<5WCA|okEO+$MSfI-!g64lF3Jtia*|s(_XK zyP!Ztz;-^~{ROB!KfL%)7xzCsh$O!S<3KUW+9$2BI_h#{m4p)X+CamOWKfEcw4WvD&HudJ{}u;a9N=mICH^}p;y;xS97Iz7_nxUh z*T2V~{|BJi33W_6q*abf@xI?fI+}%Au1{mDk-QC?KID`ZZ?(QMD z4DJ@(T>}JnnC1U{wR`q#ZPnRxyElE&H!aoG@;?3kp8r0Iqhld?+XM(XF)LumEnuv% zeTque0ZAJd1!Z#>M33Y?cA&;!DwwZflgMum!a-m}79}(u+UE+k$FCjx@BMzC!T?|< z155xefn~7&;UyMUj~N8ittot_7WR*hPG4SL-bo1sqtM>Ik^6^-_{@&^wWFKc+rQ`k z(8ySJ_72{YG|1q{?85T9NU^&4_wDuf>+4C}>Z_UWbo~CS8G!SB1I;h50RQRE{+T}+ zY_IFzdBPT7Ut1-0{3{9@)7D>utkPUaV@KB^rdzE#Nw9`>^c~n+Mj0U79U?6TOPE{%fnKedmuv@ZYd-m zRUcno#%DK0xut#Z38&^ZIeDXVwq6@;Fa>$!zI7aabN9cW?(ME`?|FEYL?BuiomL|E zjIXJ2vNSeZ65s{0_g&gsGiPH=FlSYhDtAvr7)!Q_2(&j-?J$gDnJv6njE5sP2 z%P5aY%VwUc+&g*3sDFE4;(*9lDn4Mpu6V$zX4?Q0rtBo<~`89TS4;~&bF0o*G zdxwRGIa{6|=2j1<=C*qJN9>ygc6Rq0?k}HSJ4DsK{=Z(1|G!!JU%Ujacb>5*@c$cL z{D0+IgWTHAc?tjo0-O~Y`p~KWrCt0#?y4R% z5`+$UH#XtnCrwaKP*=y}_0epl(NtIG^Z%p2;Q!3Eg5mJ3w?dF;%eF$%cw3C^JY2j0 zqFW4*3}6bbGKdz-{b)OqJc52FiaOPLCz`&bY$t}f>1ZdGeUN@Pj(fp+H=h5XY&SvZ z?r8TL2!UZQ5sYs`o%qvQI~rKUz`hc``E?Nx@l#(lgi2d6Z$I^aKi2XyJ(h+~GjA{l zDpKBP!r^Pe_D~l%<3z)yTUH#GWO<$(m*zzgIQdo*jIgrqMNdE05z-}Cm1L8gBlHw$+EIv)-y|8>3G$(>REWM>%BMHF2D z(WFIPfdFWHrx$%#Qp}hAxLWp?1B6ypmxIJ!rRJvSlN`Z` z9upkhfY3$#G5^~o^E8LMIZS6&QJ7IiYUKA{2ezcC<#HYF*S!y`?>GGKp=WMO`cCNl zNQ^ckMd&ydkkNfd*36BR^Z0BBMnBX007>q@%(SiYct?t-bucL3X6TY3`SKD&;wT;`S0!dVu%fTv$%+PeYbH~+by>>^@Zc| z13g)xq#65d{gls}TpldJFa%*o-ZB)}gU%1?LD5YNbwbJRnuoe#9I?!sTW2&Rz}MInblgoV3|vz9L;Dnw{O#>Wl|`=w1d zj>JJLJ07j_&P$+UAu~!A01EO<3H2YuS(_#RM*Z8v{lmjNf>+<)d5K|wR6idnw)2Ni z{bX$yk)q)71nfRDF;is;QlWlWqa%R0=LM_=Yj{cx8Zt8(4p5C~3zjX95)*DaQRh!X zGSW;4!JTz5!yGvdvI`i!3nX3E`8`yTiy9r6>yW7AiO-4Zo}hAImg^KQ1q&7F;I2 zC!+*Bf+V-ZS>Sdnhsn~1$4vOIa0!q%d~qfZN3VoIT+`vO@vYC`18)s9j11$jk7qIv zmcH{6YGfESKk&eGv{d*pn4Te-7(kkSuuTXq_f0BFG13?Gy14}Ic>o6?Eh}QiR1xJ~ zxrDGS7@Zu>PjV)`KpF`y^`}aygS$B?e7UrYt|~HIT`Uinfskb(ii9%`;CxXc*M2;a z@n5kP+4*?+Y_?=vb`~0lK=wj3aYKc|z#xj<3VBRt=SPfQ*(t$kxf03Ik8-5yQ&fA< zfC(kuuc}isbotoCYD=D6+-ew1?Z;4VD4}RR!ElcXRV9`Q5hS-`d>6Od85sx)F5soN zo8?F0IPknFv>Qm5*=_4+)nu-<=&vNa&Is-7y)hNcBgd1!sK>(!3C&Oz9UX5Ej~t=s zI(v58DhlonZam=1Odmk5VYd#xPx_Q*na*- z`oo-*d0J!&bw*(FCM?TWmuA^Lh97OhNo_G_VcNZbtuUOgU^@?vw&>8QndBNkUhc7k zrwI2s@J6|Ta}?7k-!*ySY?dOakBUdz6Os*yp)1?r{FJ9(BCu$ph4E8LDx>~b^;g?s zRyr?*=pYAg0k-LlqY)E6kUEhMiohuCJg~RME-=>9MUU!C@MgDhQ!(BViv-C2IJgE(hEC4w7+=+**GWQd`svb3iNkwTttui7gX4T zc8>udc``4h6N`(%^&_UOs_O7?h`Gihq4^b_N{fCOY=H$-QRo$ z9Wu#sun$I9H<56HgTlmNMB^0c9Bo<6x^I{`tnlZ|f)5(ChX zna4YW7!u68Xrjwbht0*uF|`Lvr4}$VXo3DK0CzUP z70(i97S_UDOL9^5=w5+v*Tap#2|m>jL)$9Q%NQ=g5GBG2+0sjYk=?8`5|Iwbl6wE(9x@yglAfNRX`I9tZ**v-{PQOob;@nn z7p=#i+B(w0UeX&@94qb_G{!&{XG`~+2o4V(&hnoP0+~~NKXcMJHIOsfMuc^azv$T* z;C?`f2Ov5ishJNNOiA-NL7WBKC7(898n~ z=HP!ov6Z%@na%*N?Y%5^a<)vRKU?(c%6fDFH1M>P7@@EtZ5OJ`{7K%I-f>!bc1&hQ-3kwAlia!>~ zwiU^*kyTg3YPq6Dpp!47D+2|^Fahn zm&i_Ay70oKX&c(FlyGgaGm)1%Gjc}f!G#XP`HgZiDVIvKmtuV=3)L+JZIvEEX-fr? zkQ|80z#k7_AG4fWf+DZnPDlqZL0`Mb&-=2S*-))pT{8Zw>8km7f=U91&7dTg9m? z=h##AwqPZ73v7gPI&_qS2^8#sUnd_1?1(7@ijYylr(56b|8-(x;Oe0B_Bs zZUu>1lpeWt=0!b!QZ-?$F^yc+^?v=CZ!O)gTEX3h_|XR1u?F^7jvJ_KEmthpv9D1G z1o$L@_&4JR-6zgR!BU>FTA0IH0MoBgTO=*z3fWa|q}597%1SYEIBw@coKIEif>mzE z6|PSe9M13{V?;`(x&gr^5CqZWGn}Pz>1qatomc53W0SdE(==m~3sWQBQj?W&lPxNo zmu<7fbG_YSi3*@Onzq92Q|;HxQcF-%plri;sV4ieMx)FIujl#{lpsgBCN3-_N7=?w z*{0C;w35#)uD&g$ay1!xEmfH<4sFeZz(y3w>JnXG;U_@0T?OMbVsS=IR)vwRT@$HU zJID@!q8)Z@wW-aoJi)Iu!LQBdZ`nmmlfPwWW@dRJQ>%2Qj|!B@8UfWf0t>$7Q{Nq|Cv#=V`3di@mqvsZ++TP8QXRbqm)0GXg6JUd|rL zihOAQuC|1|6~+$50WD}Bbtr#zFpdc5Y(Ip3-QjSe%>&J-)3y8k`=pK^(2c29zqZor zYug6O>$_u&I?U|;BE)elh$Na>9+Elo`5E3a51}Bd*JGiZjHyZDv_FlwJXp7%siTFo zqo#QLdjaEEfM5F>f8)>3oj*IgOyVF+FC%@#eMO_=_kJUWah?5WWmmTSRj2G2#7Jr# zy&TTtYwaB^W9{y-BN^kC!4*b)pIZs!N3+)=DObmpvqmf9#@5=#faB~kaf3hbyJRbY z@Pu`OSiRcHwX%BCyL!{w5CoSzAnR7CAo-BWr|A#Z9Wfol>Yqju;_7smMli%j7VJmP z<=e!UCm+V@Ns>Cwi2H245U%ur<@(j1g^cT7Ca0jpf6&B%O;zKJXu*1Ue`=q4gsMu< z;;I(x#z^hjll{hSPRA#SD+}!Y{Hgkbc0DIpU1faQEqXR7eO7kdk@mxSjEt(oeGIX% zV^WM{oL8ZOUKoj$Wb%*wgh)V7eC5=0)gV-MI1FtlAg*ht((sLV#sLk^1;0+EvN3#Z zkTq{a9n8Ux1=Lv`=C7;dUFk}P%%Jbi$O=PnnEzCxK}_}Mv8dYOWCw4Fko1X>g0Lq1 z?dtKo`?MYUk}7&q1F=`wHC8kyY+de#c3{Y2AQ zdnU`g`-Jg)OPU3FL&(-3hw~;p(<}_Cmx}Y^y+Qm}g(cX)Ch{<#AYkM-5%8lyrI_(D zTG+CLT+6@7BujriJ$HKb^B7t4RR>xRva=yor@ER5+`uCWabg2b2Y;_1$&-7S^|IoY~T)@v(0I z7SWBd^TBc|pYMxW^Xz#()=uf12I|1U!R*eI&+QL-yVajJzgwc9kN`>m6*q!) zpM<&sI@8R^mjv^s%|0*TS#P=UPE$e63ON7(v3Gtt4+S%!4u@3y>bY27Aagu+%ZF-{ zEMqExd(Ra^(f$U$M|qwg}>Q40%j8t32@PYm?u|-wK#O?LVDhEu1ne zy8K++BXYJGcz%>~?)l+dkm&3S-RTMGzblb{N`2>_1}A^=p{MX73G&JYNIRK zpey>^E5@KpB+PsiCBXm8OXOY)cK;7vLhQ>8*yu*`zj=x78~M%u@Dl7wmn_gcHq7^T z$N%Cbx^KBQVgJKRklmSnxidGqvvj)S4!X1L{tqwV2)(nNx^>08RsC{{u6yeibfba= z@Y%cvb>9b0-2`vmqAC9mULtPuA$Aki=HGwu5=M`yL67m6k0DdHVNN$5PWQ07xBghy zh24)rn~x>APh8)gD!$xQ1?8rbJvZb&WUyVcus^rtKDT{){Jr_441E%VKIU!adjESa zow^^~e1a$eqMYHRK!8cI*QubJC}qSyMu^kjUTeO+G(o$cH`pFKF|V7UuX{#stz>T_ z-8W;HH@#n8u5@0CYp)l`URS=|T>pEY;CuZS^IHGCVdB4eiJnmTC6H*;#jto3HU%&D za6~*F6TwH)IGinVN+uIh3>38jaJr}zmWnw8mP$6hiFt&L3f)+qAj>CD?xoNkrFUKe zgGP7mXr_S0m(pTo?pUo%4s-r~7IhtKW#{_5gCBS;85qBpq-EF2;_E|}ezJTw#mgIqrGV#@)(%A-n}!ACVF zg-QqA_Q0NV{BRnnnRHJq&*Lv^efu1iL)~|1Z@l2Qbms2^%_Gb-MM71!*t-K?iG_)T zR5|6WHt5tA0~u)AWEgy9x2igQ^OVZB2T+S;v0l7yj_1W$zFjC4rTpHXvO4ahh$kex zjij+&fEojUxXvJ0RPKv+UV^x;t`A4As(y$vv#MbXZpSPSl?3IuEvaf)ri+TVgB1-^ zL+?C~utk{zA%s09zG-D#xsQ^_r_7dbEATIR`>{5s;+NRu&qza)MO)z?{x<#P_=T@X z1V{Blk<&(|@|0?;g7c9m= zzohJ@80me@(n33EUM}Qa{mwKirxHl@4^N~rcSi$F^;b!ciQh0 zpns7|WPGhJCY*cdQ-ED^pViH-3z#KmLd-~-dpo5@RdyZYxz~4}omW#vM2*K%K_Q@_ z7Y{#?ZV1P0cpw*K5E&oc(7D~O-qglct>+2lJ`)q+?I0(gi@)iM`l90|gg1{9C>$l3 zV6uM)4s~t}kpg3FgXdQ=m_k%x0SSt`si6w^#p9ljGcne!#k+2i-qZ~?lTy^y;{qA4Aw!#)s z|01HNu+N|%=cR3gI*;F*k_55jBb?aLQ(SE15v0377{t;61Xk^Dc|?+AuR5U}>Gcxr z{|0mV(y*UY3cEhD@|#C%itQok@#J(pUGlJL&DM{Uzi0{n^_UV$b{i!x;6loiP6+v6 zzXhZk#u-0Ddnb*E4{PS3CAJ~Xi{V*<~BON_XhZ$My4=E(WM9Po$ zn#_Tgy`ZvaYs$Hvqr@!%`~<9UDLZ8RDd|MAacOkRI+NMnTW+%d;w6fMgUf#J4vg7d z7Yr}=^HQe&ETXX5ogi;29 zh&(w}VboZQ8=fuH@Q-#N+$cFL!!W$7T9())tq*&Yzyt-g`vDLZmEgF9ux>i+(tdlI zmO+fbQYB)NIErY&_$yCY2*wuC@a&+fY&flYKB~hQLp)+_P5r(di_6EZrbrS2!{P#b zl1yh#-_L<4;c0MN#q0h*Q`U}yF$U0ZiloC< z7qCT?adNtjp{3yUKdSV8I%CM@R`uxsIUEzQ5b7U*a`E-!ckR^1V9Z_Nx2>j5nMRfK zZ7z%hvd)q~TUd@pbNhaE>mNq2hOBy_8_kSVBq~W;>TnIEfwo~Ke=c5;I#Te!s_{O7 zT6MTOIR#24_pgR-!>^*4gPo)1Y?aJoIbLNyX+S?G%|AcHNZRB#L=h1W;?&=1c0cd` z3kl2|jjFLI7_VHk6m%onpN!;2d_(iOU&c9XixT0MX7JeblJ7O;vs_s>BDI;H9dx8m zxZ$YvjeX+(08HtWj(3W!>{p61py_@sc8PZo66!;%@U|t{VT9sgBgR^4VIg0I=}>;6 z{)fk803FFjC!xfq|9}`5IL1o!ID|ad#1CG~Qi@h%p2NNW-pNXP9g7M3bxr*%GnMcICd!`7Lf2RE90>oy~TZkdNXH~Amat(A9mrZhQFZ_mLt+Cyzssps|1YVnO4 zo4Si0Ydkd)4kx+EL`#X{9<|ReHawry7sf1k8Ei=OVLs`t%$9imuKojSZ>6`odf?gI z`FiFM1Xx=+A8C2#B^+ZvuN_S`wJpCoI_c?c;Qn;^br#^XCHxs;`}3&d_0=gDQGW|a z=MC-I)^qZw)89V%b8pfAY-^I>1k2=)60~0#G<%vMg#!`bbJ1f7{^*7I!A%kYU6;vUKmIs`aK7A(6A{6XTP;W!~6EbfPVo{sNWW% z(L&+MtW;ztVE<{-R%VXace0xy>+^)A+(T`c8HP2trIz)-bMM>5~Nl!(|UPQ@pLFnVH zS6p9ixI%>haP**F9PUs&e^L54F@hpd#wsx;bHPt&?--sK>!}#qix_({grdKd(p?z) zCKS02M$|imNm&d^wte1UFT;x>z%ZoUO8N$)g%8AyK1q`Rx z{>qjpyp$x&pCv9G*T3E;E?Wg=n(G6NgB8}mil_Yu#NbROFwT|$NIG-{RdBr!24f2# zbODDi1V^bYp}-E5$?6921Br%(iTJ}n)53Bu62@y^|3-v)%IEngQ zNR2zTpTKz2b4uz^YOGpa=_4)@^ zR|gDl28=tT{F#O2)kE!*L)hpcH2xuQ_F+8!5W8_nz%&dznzXsSbR-&B7yz>52Juga z(PKfN^wU6oa*!47097LlFMBAivDj*#Fp;&?nwpdw_0an=C997sY9t-4ORosVcdyfb zTqb)>NZ1}21P)z#sl%D8UjU(nH#N!PI#GHSK}l#6w)#63y~5sp>;b>SI0~Fc?R0sYNiI z_7dA+L#rR;x7sBPPdl^aWa+}~G=$5`z zvi#5{HLNaNh>p4x5x?AKl1wl4_~xpFPyfh3hvI2+`=Gyk?rfi391M&-kZ@S?E1GnK zelIaZ5`YC8fva={4yLgWv4>L{=N<*D!Cqv^*N2C_<9>Iqd;zjGB9W+T)B$6cL9wO5UY?i3(M64WO)d|Spw$m3U}j5r4|7+_Ja4T z#&9LZG~nd%QY5(eWweB(x|7F#qlp|PPi_Lw`~AJsEsF`gy8rZ1lFSQ-A-Rx&9{`Y~tHOL$W#Exjfd{DyD?Q)*(SipBGEZqaXlR_N z>fuS>k4xUg&GWy`%ZCF|c_1@F3b2i%F&)yPRtg_jo0dM-mnzf8gRoJS`r$Jo%1Rz z^XkH*#aZ)e@DP@ZMS{9TefUvU5^ZCLrIM^^pt=H_^n%5JGE~@O!6sZYi%CMVY@EI> zl z`U)Gtyu{K82oToD$D8-BRtm;bE6|wD7oIIoQ7!*EU+At~Ei4(u0*ZzQ#gIUR95gY< zwW)4ev2k^>vge%i^$7QLTH;sBuN80S{wTo%ib&pH$%1L?l+d)Np#7@>B>Lm(Q@8z7 zKI<^`_Tl$vYaKMB250kC>$;<7{WZmq`ZJJ?JT68+C$DyhZ2-9WR#=UGa)w5vRpFhN z5cHYvpRCefik}^u09nrK*Muv?uP^C7z=&#xNT{zuXBDK@%_XGK4d3JAJ%x>2yLEa0 z^`!vABL&F#`sm`R{#|C697r^u%kaGV%l@n3#e~2CI`}Z&@LJdiE`38dVBy!9GWVRJ z`l;b#w$W3y(Q~KK%Y@PEy3yOM;iZHT0K>RM-6(GVy_sl<%o$F?9o%qggcxXylwgdU zV~kQ`j5^s3#WP0V*ixk4YT((ryVajI*sx(S`54q3LrfYSKRX% z+#`Q8^{X*W;1KV$(}$6Av{Ge#S!`1%aw2?S zZL7Is6liK3Xj_(WLV9;3d3WfAu}4p9BW8JGm1A2WV)O0Iwusb@y~&10(%NB?C&$pP z$q_l1S1+$i025vXn??nP)~;jHjzIII7{k&i@K~(Nw#Lx1C(x1&-#)d(wjbkk;QX+r z%eFJY{v+u=E}=zZQ`47cu5^{ZP3QJg_)*OW+bxQ1v8nd6srFqtmT8`QLkEWgjt;dE z$KUb)E<~Jt@^t9uJzXX}ojrGe;^Ob)BAsXA8^yqK#&bGWN*8V~#ZO2!O$9nOVK@jz z9N{EuhBr>M-#MI#oXjoQZET#G;U5_oo-H@odfxr*l>B#g=fH#EcrRj?|!QY9L8yKhD?Al#VCa>6` zZp3%4AToEce`g#}mmSg{b**LAu1FM8Zu&$~)RCk(Qw>Fr+|-3ROVe(O_k1E`4n?z9 zVq~}Ev>s|-JkCUJxHc}%I4RFW@#1^FYeg1N)MM~>r_1KLg|&oI{|yyBayPDRQsM(I zNO+j>?U*TfT9n#o80~U8F~t7Kp$@&%$-O&kNYGl$+@AIbZMinY^mI;ZGN~QJ_amXmxsS9}-Z@j3S)0DKL0-9-PkCfdnR&o z!lIsAyI+JW{aQ)4arRz15&eLu!(J;2VSgw3nW+#Xgvp<=Irm% zy`63bdMLfs8{JwdSxlw|UZr84ybpmx195XB6!%+x0?T;=f`lE2@RNrqIlqdv~{gr}@8m)1L+Nvar{R8_> ze+&VX%keb*&^T11)^dI2)^4fZVy1*<>77muvB$h)ad_e$Xe-nD<#_gVd)yst)fOk@ z+_SsZ=5>93_Uxs$3QKD?KRVB(U2i_&N~^+-Oa*5r`w~LAJ&-a}Wa9QONA>sp#m-RD zJ*%H5Y!9Cc(COcs@XNzh2nwCyBfsT-X6B~48MqN2YICUR15b2><&DVLLLP>0>%L)s z^09xzA5YhtBH|;ZMy|$yPK3VY7|&srC`=#)fLs}gpC|;Q4M{JQZIquXen*s0+u`qb z0<(DGrw9DV7bFnu&E`o?{vz&CyxLm^cknpB+#_dX2XXW~&@yO5NBOt=jgPruF#=)vj&E)c0>U{5LqK zvaSl93hX6@j~QJEQ%kk|ctE0y9Ki-Vjv+#dHM@)`PPDC<3eQu@0lLaKnn4~LW~kvP z6ZDxQBl3rAVl;gPeZ~mq>aCaz$Fopl9Lu!~`;5qJ)maC8u{GRBmf>K7ei^5=Ef^iT zt{yeHTZ|3Ed(dVOX2D{J3tHAL1=K~gfg0OoQbPM}E z;=J00Ntc=o1Net5nV4M*gt=;tZ6Xl6%GX1!_M$fYpU;BDQil{;3Nw^MY~)hJGV6EP zb2lCo?m|!+Ce~8DPdbG@JqyOAWClKhf1*x25~LlW`yO?Fb8J28XijZutoiIzw@a}p zl-S%$iS-rTOIKg9pa`3tz^_%O_g=my9p64XAws0gLhgE^_u zT)prjxQ_@7iflz-qh7sZ#OP(~d9*11$ zKds_Jk8Z1n;p@U(D7Lba={gdSltS=2jKyE@qbFI4A^_96h!b8Stu}S68JXLdPV`{% zA5&j3u(v&>kHB`>bvAJ2i=9^k1q|o#5#&F&;PBGHM64=tX8yy67$6}e*r{MCbINT0 zB_XnenJ5cxDgw9nIJ(N_@$Q+sr{SxDlG2wB>!9*GGF;ZS=T5GbPFs7Bn1w9 zH6*ntF)9dEShg=knLga{D|m(B2Pvm(0$ApQd4>YNbUt<(bl4i1*%y}7TZ2sktCvSj zITU|56wQQQ6y<1z5dcungK*Q5I#|m_P$E^t3p0v+&mf26RV#4f-obE%03CVvWa!xK zNqZP2>Ju~)#db6%l)XQwu@q(hU>Y%~eGHSiK+53-R7jUCtHf{dz`K<(0b&xP;dk-LBVG=VAUQIT3Lhi#u2%CF!2JL78)WA{gj zkob#lMI_}m6S%cQDcpWD+d21Z$a)m!ZWw#vNQ5Qi+Hu3ig>S#5L-=CTQ1{5u-@lZV zMKcM$E~q3ZS67**=z^mX{*?XMXV-Y|W1xoslC~9kplp|I@c2<))ma+S*qY>vxK$Ko z#(5mE*Sfo*(F>jbSXeX=1ls3xRaoBKY@~fxW1z6w5J)yskV~xbM3*-!n&*Wps$K@Z zx=e~XN*w`p=pqj_T5LjQu-pZt$;r9Jy*epu_Efj+Ag+~4JNbb*+Q><<% zP1A{%n-71Kc3^y+;{IvOKCG7SQu)0e9Y$wwL0<2ao6;i`*E;EHv@=bYU>X()6pZnC;zg{;(VD*{6oiN^>flF zfC+pe5Ec4F)88WiSNIBggV|KPgup~Bq5_P?m9q_5)*rI9w?hV@KI#L-q?zSJ!4_mA z#p|uZMEh}@*~z(&zZHK>%ulGm6)I#tJ0zdkqc?l{nnmi&d^X}F2~tKZ(j5l!Q}!78 z&!#NntpIRx_0~S}5=;px_QE=vEf^cipiDUC)dWn`X7Vf=j+H@x`La=gOz6w9DG9TK zc}ehrF}J)p7|04Ye`eBXF&j3JT9}=VK? zFJEfyQ#QXz%0R9Z+>#PJIfY2R1cb5-#srHfb4Aot9G4JF_7j8zvW2X-NfOK~DN1Ob ztb3*nJx<{b2*ynY&7hk$jm*LN2OHt-Am$j*`EJwwiP^~Csrqi3oxZ~mnw#E9F+j8a z2d0n$)+lTnBYPlUN*S7zFuzJ-7|zs|za{}DLop81*b+ZYHZjmaqm=fhp+r7dlebCY z5!uBbHVv9j5wF2>@F>LhG->tUwu{OYa77f%$QP6hXB31xaLJKnC1J%cf@><0sw3oG zHf8yE6V(k~fF%}v~nH0$R}mqoxT) zKv7ohnlOk!)+wI0&YF84tI(I&18dVPn5+-?P)iFHz;=-@GNRO5 zTez;&xK}&N*-#79x4EWes?a41qnKrt6AS(tMf!wQ`V!id7mK}zA!En>w&NWW)^$Zq zI5U(Sd6Il>SIbfzb(D))=M!ozSZeED3Ip9Nn@M!rQQCoO+P700J7yY>R0IcF+2A!= z^aBX0cZoQ;C4SAeTPS!!!NRq|$nnJ3uZ_Y7#azjgMq}krnRe4tl1$Xl$}U1p`iw5# zy;O9%P^@TFC%WHvgU~@G+OBWgWcjYL_VcLjCyn1piF!iLJc}l;ss*^Fu;VmVzf5x6h-1fGPuD< zrRODecrZLUhgaATtEU2lgYuu}#}yHko`1fw<0W}$5VVQRN}8{DdW=^_7*&nh=39;} z=Rs#d+~asc)8AOCn~w*L?`l@F(#iyw8&ib&C1v zmYLoGkP=7wWEUn1e1lIL^SDLX%x!sZ1}T9Ui7gRKT?zHdv`Quz0atIWWlAqFffTB=yCd`wjW>;N!N+2+6B%K z%UE`Gl3_|tS*uSg&ZEo*PTgs+J-?Spq}$o5A9r=w*({w-R)D97dZLBmr+aDbRiM3+ zCI-0uFpv@I>G<=c2@{1!YvzS(vy+Uy|1l9mWe^Wf& zQQ>vL-Sg-6osC$E9fwT0$D_^HpEDL5tZjz)79NW#kH-iG|7c8{zWQL5Dmxl!pYIod zrz)i9hCwLik%8slUIu;mHM;JJBs^{ic-)De-P*Yx)crdJXfG=w6M_e-GQV5x^_gks z34Ij=1IE;-UjDt_eRBQb6hZSZne`vF0^5Dy;+UaRlnmajCBd#Q`#mq)b>P2y+L|3f z*7k+y2MqN`PU)$W@s+KUJk<*`oeOv`Z3MO%&S)G|E;bT@R7|5Z&f<&6d?%|p!n;20m`tO9p{-u2z~`y3cXWaCs3*8)M+{^C2zACxtM{tDpfFQb zXK;BR@xn4v{xnrzBwcTaNBkt!L>va!BS44a$l|NG1w2;{eqz@d=C(Y}FbFR23 z+&%zhk>Wy7TY`xQOQhofDCr>ZbTD6-TY5NzH1U@VHy5=q*W;NB#ToRQZeH!2vchx5 z6^E89f)UpZXN=&lYgG1f{$IZ&ak;^90DPeyZ*uOPxl22IH~ZdSUfT65#`WZ-B|KCv zR9ae8P_DdT$R~DpF#nC{H#f1uM(=cY@0M#bz)>3>IuOM(T2<``A3a5JIKBK0wYg17+wJXq-fu~{fcqw?meQ&f*GT#W8k zFwN7_$2?s^o@i?2&9BJkCcV#}rTl(>`z;m)} zO4gcFN}kQ5)qlFo`M0_M%<795qJQl($DRJo_`u1O*{?K>AHLnL?!Oxt-8u=ny)6tl zrMm0eYM57cV`eM+2gL)#wCf92>O>-Q7xZ4tG(3IX0(@Ru^A7pPzPx-rho5e;x8<6|$Wt~lLTgsIa3Vr;T%f5{&NaJ;L5axU{df7W9yBdVJ zC)G7~U$47W*+ul?Y1z3@+i;lsD)zH$Owsk|ulu2u)4{4rS!@?(P~#)L$i{E$-R`54 z!>{a!)u(E7XJ*&RjB1Rcn&(t+{|5ktKzhHj53wz?s`jHWkZ&+=6MrLz|Mnuk>HuhW zH~(FDJm*ILAY1f!1P20eh*06eh6W`b zfXI;IM28zWcJ%lWWJr-CNtQJEu|UcK30Sslsj|QV0W)bXIC&H2%>y}k_VoD^Xi%X; zi54v?ljh6^5+*=!&_F>10|p`}Xy5?C1PKpFboH8)|0Wb8WLn60aRqEzn?~8Tb^8`B z&Yf{hGPHXaZ(hA~LGm4{k#0{JZ(O)|0wBbg!iN!lDXe4!mcmRBo}tnq@nQfM9S$z6 z;>}?IG}OQ#?81y>7fcWfGYZQcHr{58BDM=94l}<-;aGTJp)g%G zhlw=lTIE6gPPcv?dv@(d(=KiLH0so*Q`ZcWpKu~J@Nw0Q$eEIWzR^PrCe}23o z?f)!DAEd#CdkBleLfFHE$XKJnI1@I*Vz|f*M3A%5SaXPm3*~qs!;K)y%|RL`A#dNDk?DRWRzmXbRb0;r7eH@pZULTwCmpg|LAGchH08ljL5Mo44EF&wq%P{k(ukW(9p^V1(IPbuW8*1l++YYE!4&jxi$5P4>_XkFddXocO!JgEfvIg%|)!# zQ@cg=!@*L8msMI{^-)%^pdGVXZ4Ewn|4d$e1ux3+s5I}&_q6C>hb^6b7U7IKzbz&H=%xC40PUhhYKNzJX!@nT~1qk2xSN7UD?l;d6u+AmT#8VQ&&}j zm8F2A%a!AhoqpOng`H$ryeZ4G^1SqpO%{f;E*==_u2H7D>mN>v zkbxd-5;~*_9#CP5N@7A0o{%FMTwzCw@B>x)(XvQ_R(T8v32_79{D?W|{kADQD9*amw zC?0Y?N|c@evN$9FA`+5t|7qavG}pZ=`mT{Csh}7900RIB@*{#w<0mt~!kiEhgr4-G zAwdF40Fc3h4ymCTG04h6!f=PS_GX0~ZXZ2WSa^Spr~;Caj?feV{`f z+Te!dtmQc~a6@~(F`PlrAUH)p&ky2oBcqIA2E0(vSgw;d^JJ$9GkC#-7L=X(G+{r} z$q|YA-~j8iqeBN;QZK0Rp(G_CI(zU>4RBPQ80}&P+u#8syb+%rm8T6eO2&L<@T49{ zsZfde#C}ODnIu`J|MRT#%=gVsn$?tQe6E>4D{518+$^aEDEh`G1YwL#5P=6_S<4M( zu!}<6NLj~e!ZEJ$tc2_;4Cgu1H@Xz9uk-*{OPW?7vY?Z64D3R2n8FU|@T)b9B{_f4 z&b+=5uZC1?E&a;ZE|OudUA>@T^NQIMx|E#%tZW87NW{6mHIyaYtOpL8fy?f7szhrh zu97;ErOsA4PK^mv2^L%5Moo&Bb0F`wf>mc_vLxMvXG=A>&U6BHS)7Ey4?YV}5u|9G z3GF0x$tgm9#&v@!R3Tq+34l6+)`fwct3t<#T8Ajqtlh=vbFW*=v37*L^}Op==~&E1hP$ZJ4eR2CL8fdh`d<)u&z=EZ+`* zxs7CCZi5RvU=5u4Bkx?Oh5c*ZK4(w_7QN_#BMU?L=J&!|b!nojOK1M(chT2{vmP-^ z%QQ~f!s;!m*gB*l7_q2CCu-1*Y*wNMDQGmWDVYw^=V=KhLYL@Ptk z$T|Y9|5m+-)ht4>31(d`8;NK+jf2%9wLG6`N*UTBscIFAi{&h9m4xBs>tbJdUoy;q z+oJU|lQH|CQosV z=(aph&TCxXDjK9DMX8vVJlD=UdA;^!O1rfU=FIbTt|K)mB~K>VDM8v2pNc^0MH}ke z0n5UuNL))=+v!44u0uTQ=X?rLtv-$Ecs-(4w?3FR;_ZP3=h=fc9DJ4e1OPr)n@+Ey z|Mbxq&32zJdczzd*y}pwD1&Q=(EpO%!FHEpM{7yXkm`NkM7=lQ#Vb%4(mnBOU;Nl% z>(aKr{p>T8r48MFaKz#r2Vz0GCpV*QPE?s}fTK2S2~ zgY1bT^p(d;UAl)?(pTa*Xim?GQJ20?rfqes^LF|Odv<@BoPDCytkyjXT*`*ldX}>a z*sXq$fyBSK-o#92;qSnVX#n)zvxxokf5U)AQ)3FveAVo4abTtfcq20SueM6U$*?a> zw$J;Zt@dNd4gasqvDD}1;R3dIBs`S6JDu-cw*4iV819T5_ph7h683nNkb z6!Gfv5J@nMB*HF|4$%@r5j!Ta5u;BOr3@1pkrIc56NjP|O9vEBQ5NHZ6w5F^VsRF) zClyuE76aoIgW?w{2N!dZ7>S}5>9825Y8M%?7xRp#x+teE2&f9m2QW*h|46B!u92Wb z4;vkdlxnI2M9R!CDx#hdratO_l2ILp>HBl&7K+w#pqF^9}JczR_2nO2i z;J&JsaH!o%%j5hJvCu8v;>*3lXBgknAx)wkP4OY2C>|%U89l-hBrNeNOr!W~?ikFu z1dWHvNWm}=B-|#?Rpw=B3}|E;4pTYt_zb8CMlB2w1?U<(ISna(k_j<(2Kuj z>4&;+-WsbUKe8wXExx#}r&{tRqY^G6vJ$0ofhzL)E)pbQsp3qp<2-2MN{S^(2`sNm z;>=Pk0WKloiX$)%DyQc0>zb2W1@H5>3Y>xVP3%rgrq^@1rl`wO;eb2pDuByv+pY!f-7 zXzHeDxL%VPn-eIQQxr9Wj-n5rjCgbja7Ipv2s!>2cm>o;%HIxR6VL?Z;eKs#N8 zJ8etnN(S1(6G_r@JddP2vFbcm6F(hs#^6&BLE=3H)IjTVF5PFhkWe-Ab9nYsoBH!K z{}U0hu)|J_I9!7_daO{efHiE4Zb*zk9s|cPW5+JkFlggM|Grav?DI${)IsS3LN7@| zH4{el&<#n()J`Tulz`Vj1j%#_2x$;!;x9sKEk;6ZI8cN%RH=Mi)JSeLMyaYbqtgke zb4qpM3;)AExb!9vg&|l4Mz5$wEmKPSNF%t^ zOLyr`b7D{Z6fkfiKnX%j;e|}GU=J>YO^2=q2axB?FM!^3NBT5Qf$KSii;}KX9xGK% z&M;3uwMYV0b^dgGOoTn%^VaxJK;{A> zb5}{HSNUgLJJs1H0%Ry6BkV&?*0omlqh0BwBGy$-=2czq6<_%jBj8nE^8!z=C0_X= zUooOxr!QB}@LVaUT)*d6zwPOQySmPvM zKcZw$R%A_WJi?o(nc2;7uC2D(CWk;51y;=Qi4|_7=T1Y`Aut|M<36CbeG&*H%ilOy0I?rFK8mHg3-r zWUGU5S$1g~w_+3bXN$FIj}_|lc5DFGY5ewUJhzVomu=~mS}gZ;9~Wvb_g*6xX&v`+ zGgo!t)?>@oZAtc1Cl_xK)?1lwL2I%>MHgW}_qdFrF`YChJn^E26F^c(1G58|cqnV< z)?h0_dX?5o3Ab+PReS5zXB&54ch_)NcWgs;Z6)`1>%?qhHnuodJF-@Ifr5CmiYU~| z28_~>f)Q8pN|4FEWhlzRnLUT!ieT^c9wRVHe#Dj;oN;7o~ zdvYi;visKQrsR&LXo|I>alnF#Ao&W356|+5voIM7r50+51Fr+x3ZVE2rHHtSe~O`~ z(He)Ui0!JJ$}%wr)237l9XsNlxOj>KiokG6?%cSX$T5vO!ia$?ioLFh0TqB|_%B`< zaBKK3Z}?z9_}Y3nu&nVP1_-eHl?&Aoq-6}aCCHWx3%G(mok@xH# z^O2Li3amEklksia7^{mGvV;#nvr3ua01vJ@izC0vmEDMvW%-i%xF`Jhmr>V)1=(5% znSpZH%J7hfg~Es7DkO~vv^H|`{{%BI8I38Gl9oI2&QKD%Y(ToWi!FJG!U9vi9xQ}9 z$(y%pn+a{dB+R>nQ<@h|)5v+887(B=86?J8o(&8%C75^snL6N=kcoLZR@j(L!jKuT zC$?@W*)qNq4ATm2pVw^MOfs6a8NR?w%zl8(oD{TxlAIeF-ok9mItkL+xgIM`mqB`> z8?Gq9%%1s<&B{*Ff)c^3`JhRMpgSg~r6r*m^d~TjH@XUxVFu%I>Idvsvoo3 z;d;5JC1K<|yGS)VG;kQP&$AKJRU?yrCd zvNs4Yg>sH1dye;x>^$!WdO#G=jyB=yvMCSsGLP*@@9h$=i5pWgM;qP_o1RZwuhHhN z=_0Rd+arD&c*REF0w}vs)+Bzr6J^>Xf?K!WQ0bfxTvsu8lUqr6J6yvi1CiH%Ml&Ru zrn+%ryYq-Nl`stU;0mtb3mV`iTvgVXfJSn{2Mgm5mCE&wDI|WZFp@(kI`B*7TP~M- z+3FG*p*u;W+qs>F3cve_Y^A_8iKnV?7GdEGE0_H%aJ+-qy zYcD9cr9Bg=cbVPi`q#(j0T*fD04+?-JxP|64yl8HtVj!pG_3wv7kH!$iPaoNr&;`x>AIuAmZToXTsU1W1DZoHZdh^lg4j%YW@=anh1bcm&&sLX(QV)irhp{ag>@hT!&{J1JA*KOLtE4D{E)PnP7ndfPf1hFlstpe zNv%bS4I+N@Lqr6_jS$eAo5`Ph(063XA2yF#SeJ*JvVAL9#nyJM1)$XgnCqh0L*fb? zo!Kkl3Ua(O|Aue&Eak^vy)b0eHpT$w#MJm$?&i`was1}zhSdF3FjX`~aWa28!6MZPQj)YlwOG$Uwar;=0-JkCRFqWO!9sLimybsKv z+a1DPawhnOFPU^;3Cxf7eC^u}6!`o^_{bf^+eN+k#Z!`R*gl@g&_&kyI}T}G*Jaq= z@0}*{U5AyK-?a`jU-5*Eb7u$McnUt*U06!Jw9ywn!fl}8C*8j1MO|WbTW93|S|tV? zL_mV@FzOHgXhr~k2HX!&*8ET8=cVdpZ2!Ri#}Ok53J^qG9oHmY&OzeH;bPH~JJ*R~ z4J3Pp|2}FOwGoQ1G4RAV@R>O8R;Z4VXnG6Qfg#vlTQ^P~e_jt3W0N*~-NbP(IDsEu zBA|S{JKyuK;13+3B-R^5@cRdMum=GU>8y1$3L^!7kj&MuQ8RQhP=D-I-)|D91kL_J zY-Vkm6~F)7APbV?W_giw`G^w#ZqYVrCAaZo z7homg;5D{;8J~MIAM;_>;MH;N-=gkyTlsZ9vu_B#3eC+d+RIFm(SFFB0fL2yAOH#) zJcux%!i5YQI(!H*BEtg`D_S&oAY;Ld6ghg-c#tCikt9EU#0b))$dM;eu4LI!rAn7D z|6!W6sqv;viWhtO{0TIu(4htk7%h+>sZym!3oH--HR=MQR2}lHiZ!d&tz5f$rTR1~ z)CUqKKyc7NK?DN^A}DC!0Kxky-eG(Ri_A5rYqs@!;dD=+PrdKU`VT<3^A*Q|o-$dgtn^E?=gu-7l*_`Ov90zOQzV38l` zGiPS3_;6^!@iWZlEFZvU&6?XAB;y}-0xI+zbg1Q&8*8`8rW#EamO)rlyy)s2Vz16rpRK8E;eVP0N9>`771vyKjmM*1C<!t*L3Jo`%`yh=BT7Xr`Z@it2QVmPO-sH+rX|q>&2hsSQ0~mg;n-<~rxD zy#5L-R-qzSVxXl4i)^x9t(skp+~N4$jeF^n&xY+4Q>l=|F}I3yVR)5 z9V>3S>O#b9tBpb%>$KFaORrGf){AexxspqwQ88AFslEb>+b*Ne!V0Op;Q>5w!=*V4 zam1JMo0Pdyp(}C5o)+xvtB*>na9#{+Oz*uUpNz6-6#rQ)se787a?H?i?5d;DhP<%M z`ogSp&punUvc)H2{BzOK(flsLAmi+^(c<##bkt4<-SW9FOO3T@NFV$$(;{cRE!1F- zeKOVl8hbU_YGbvv$2WV8_S(FPEqC4en(b8FVbX24-EG?(FWgr5eJbCC9}X_w{}PRO z;|u)_Z^D8P?YO3fSB^QVitGL2<(WGTxzdvl{yF2NpT6zpP4A65|K_20Jv!yBvp#$6 z!KzMr=e8sM`rEOOyt{Os2T%NTxL=%h@pAVb_~^hZKiu%pPjA}sveQoe*vv~l`SaP2 zCjIx~Yi0eUdWJtfzS}P?xcBLEh5q~U|5U#Fy3P;!U5j=MIQQ*ibuA&`%2NWVl4%(8 zl`Gw9BGM@!{=`>5(>*X|>x

gd&j81O@{YK_I0(C=?KGB|i;`A6G;;LB~ZfdGK>n z3Mo}V3);^i>(O9OP*^A&`b39S;o(O1 z`y@$>YIIVOvgO4nc3_HVR3jhvSdcmrWJ;l7<6vr75IMqtk?yIFAQSmTLpqX@Tl(W8 ze~_dMU=fKbJc^$xRyE`maVu@&6e(S#MCUQ_GEdCF8WGckGiqr`xD1ecFgc_vb$~Is zl%tgfq90w}s(|Rpj4>f&LngT=mw0547w@B)(Cmkpy1XS|a(S3#iXfXrG9Y~HQ%>|; z<(ZMm4>Nh$pM!*RlH+WqJL|d2Zw6sKx-{S`2}eZiVWpM7`Dcn^**zvYQJ#LpRxq)} zA0j#QAYP)97o#*KAz20nHt@n_eqc_-K=YiM8D<+W|5MS3X0(e$0uyC?u+hw{^r8~Q zA_6P3P%>gtN;y@M2Ci}#lhU&@?Sv-?Z|c*Q7Nn>eSgECgXwa+$RCih-s4JuDA%y;~ zFL10SPhHBH^{8~A2N8@|X*wCQiuI&FFaj-i3V<4tG?@TusaQLyEk1&ks4%5vTJu^) zvNEQIFQw^A6+;^U)%CDO6)9Zh>PNo*l`w*JELP<<)j?I&s#m?Ns`SSygSoAF38l)F zG{^!BoU=WWd}ot<+1hcUb(j7j12V}l1OGIWKJX+`8wL~Gh&B@;{JdsM^RrD`CSJar0GKPN)c`Dai#m+|9Gm$nsD_jW=(lYp_xyhR5??f%=;m& z!fl2R;SvlG$faxb0K1T};~!b7U;e_ilcRK?0|U9oxvr;+0R~KvviM(y?r}<0@=}&~ zI?D2LiH)E+q(y03(zK(f0&TNu7CH9KcVI~lQ3(v$DIm<~vym?8`3VvsK3XVW0^4N&c+dnh%}k zHlx>1>IHIhpv;ole9OIbuCiVBhh@>p|FF_OF=6@;jc7$1<&-Qt+v=zq6rSLzm7JcL zokiO}E&sUHJ@NGTuAqQi>w4F@z5+yO;DTT)VJIWOLa>2gf`^1)56S)s4VZ8cV7q_{ zOCA9Vn$3`9W1Bc`1`(uJQzs13nm9gYnxi>wYw_Wl*X;JSLui0(0Lb7C!w!nIldS_a z4A9=!PKXTpfb9^JVK5=^fZ z&5(IN!5{)(azzl1aAGU`AR&OZL1>`whNK)JGnWp-J>>9*KM3Q)DL2l}UFmdxFAN6Y z_!Le+^j(8|Atg7+zfE9mGmOCn|Md>R)TwRlF9`b}D8II~&p>Uf2YciQ7dy4({f1zh z!PqWvxj}R=a)T7R-USi63&`&Ee&3tzOep)*?+$>hZ=EYQA5hM9PHCQ##^)geI-P}{ zy(vtAEmIhP!SEyv`f&#fCkz@7;B%>)q?G2SDhtV0zS(Z_%Pk zry2VjHCXTBj#?>xX$E{7-Bz3su5JKN7*_JJ29{r6r!6Ura>l^106Odo^#2Z95Dc_R1_r#Bd_*Lo$_dMs#wLx62HhjPW|g~Ug9 zwI_G_*K!FF1Ibol zwt>*&eU%q}R=8%r7Hoi*e`hdub@z9Dw}WfAZ7C;q@#c5I25rTbiE_|(Zx?r5$9J0O z0;1S&(#8kX;Q)7jGH!j>1ETB@t=!s5SLCTK=62}31m|BO$FK?`INO_>#4W|qHHl@1X^XxUp=nUxEXmR`A&Lf9{Pb81FNmwF(7@~9}JC#S6RA7H(Lx*%>HRVPb z7FVDI8k9LCT+|pVmYH87QJuL|jpQUjFqt-$Nrp*WqM1~j)LT!&nxQ#ip2S8X5J$Iy z7?(Lkm${dk!j;i;oQ2YtlA@8k>6-e)O!gNm>U`$PLTm57u{q#(c*_s!1RDbcE zvxQB@m0Z$kS>HLH@ibT9giiZm5ZSq%(lk%PR89SKog{@^fySP_)J*K;Q^f^W#l%v} zIWcyL|4I+2O6-N8EYh5_k`)=`RDV>Nm9!arwNV}QQ3fQ4w{riRs1 zgkhu6C6#81S9g`0WEE2$P=#rS8Xb#h4Q4q z5v7lsC}8P?KV6{Tkp|ZdP-ivs$E^hUA&4A0J5thbzOs@7zEm>36Z9h3MvX( zYIq5OI7Y1pWvSwbk3!)W8O9|rwxuD)M?6(%`2|Y*g`Fw6R0rxFG`3R}r7bi@VF+Pi z4Rs{)Y9;RaU=4Ot{xwSZ>Q4qHTa58wbLB-zLSP@}B|U&kSmIdp3S$VgU;{>(dL$$i zyR9!0se{IJfecoEKy6i8wKS`cHk*$Tw*-wqxoKMvycPpl7;kFGZ_vnfEhxHA>$T0tpwFkRrb~}9duItL zYv$&VkefM@yBh3PyDFj)C0KU=NFgPp5&XCjWZ1j;Lb~unyv19!Gi#5ltGs|qYmG3t zv&(J@5WT%Z5%~9XQ8#r}cXb^gcvL46HD`BEZ~&t?i??{cU#EQH^1ZAS|Gw2RvgZ49 z%e#H;>%J2hznq75IfwIlOn2&Xz*UvNRExUg zi@X`>z!4V%5UgwO%XHQ|zY3Rr_P2t%IEOEogV(lsm{EU!$9~j1eH0uDjFL5zZL@PA*?+=JGuy-WPN4v4J{ifT^`#l{P3 zCV7ln8*yN8#a1i?xrW0Fp@ptDY+ZPQSYUgd2!`$ldwWR2CTz%_*tJLjh{0Qg!z;&g zJif<^ktf-@<7NqaY{iri!C6>|arbqZXndPE#%wrsusD0c7Qm@Y|B7p@EGwK9%p0>v*Knj5-wCbPDWKfMso<%d zqw1Yq6dC1-vFBN!x9UdJ^({{?GM7me4Iie@EQZS069;Kt-1X0CJ zPbnH%D_T=Wa$14)qVPnh{xqZ5EujK#HN=MMg9A-GMq$uKm~Dh1(z^(e2gV z{LI&!46Z0m*<}hEj2fPb&>PkRccW<{p_{U1vm|5$uQS=v(FD*D~oo#4PNQ{4@y z3QMQaJyOA%V$YPa;~l7gh1zfNe7?aIh-`&~4^{JU{K+w8ffu^kB#al1NBteBqo{HhL>P7dR zA0dw7MDgB4LDAGY)7k11;c8;eS72X1OH`B zWH3ic&DNDIu}Kc+!WFTGd7>FR=MdYjs%hs?BGy%|7*!-d<67rdbf=(s(h!B2RK4Z2 zUCeih*Q?a&JrU+`94;rDGG9LG?p@n74b!Wh|KhrRwKaRb>4LK|qw26eAYHzVx?T~b z{?frx1SOyZTi`Rf?(4?W>SF$8$<8h+{>;dT?9L7yydHhj?hwFU$%i=Y*ghQAE`i?O z5ZaE+2G#B2UOmfh>bH&V2tn>M-0lMd?nfB!3i0l|%yZ{1GxOeQ^_~#--pLVn00wZk zB8f!&?i2ccoB)rS8xWucDwW@6g02|npkf-kisf2 zbHfZQ2w!U$e-Jevj0(RtuN%8e00ELv{|Q%M16NQ26xhZ1=M!kG15p5NG)Qwy55(c( z^v(hG1|jv_e)Bvq2?lWnYqkfPr^Dxm0#bMKW{1Bhpmis2ekSmAxhIVTH^6;gzi2mh zdq;}0T)^0f5_7I7D4rN8TU{a{B?tCqOSm?ulHcG!_C&iNNkI1|7^97 z^hhtuv&_TlHwN{lg92QMEKm8LzMvIf?zfEj05JSYSo~|V2cVYs4H5QxSiv%wizKH8 zfdG4a0B}JJ$p9ha%@Y6sbhvmj{{n>xg(d)mDAS?fM2ZzHUc{JD<3^4d3w$h)K;+1g zAPX!IkW%G>jxAljw0HpKOqw-q-o%+x=T4qIH=KdUd1YarBAM1y?zA?Q)XDQWzC+&c%Z};8&@h-Vtb{;fw35AP?0zSixL2O`9kdA zcVff73n>Z&;!rQ%zIz8d20T%Rl7@r@qs2_oBuUODfd<{0xn^C_rA?nkox0*@l|zdj zO}ez{)2LIk-o~v}^={t1E0XpdTsYS=SN?qY^5@E#mNZ;ECs_Cl^nxMAJZECrFhw0| zU=)iYxXg0e}lTA}m7_Jp#$T`#vI2!v97*F-93D zB+x+E5}b`e+aTmow;6v75Jn(}Jc~3TIVzFJ4C_8lMT1oL){fH-g)4ZC6-+ z!_;?RgEg&pTp#m2xZ#}q_4V3-ZFP9af-A?%TsdZnM1~aAlF5}B!<2L8dC6s)Sdsdm|b#FGAXaILsx@k0jRx@av8Fo5j zqX9;G>Z*rhdTXy$Yq?f@Vg9<|t0m5Q*s@FOdTqDS3cJN}-;4O#64HpXV1KMv4khSCfye%yZBIlPh0t(Zg>9i z{6Eb{AN--wAD{3mOO5#M^4XuMd-}gt|MmOh zB>(jNU9#W*oR+`j3Ght)n;7-(7eE6Njew$S;Fu5?Fa^?&ff3Bv19^u*3A&F?)vB54 z63D@fT#$q+(_oZNNTmt3tAgw^;R-*N!uiBdhG=OawqA%n8{W`iG~}8Om6XF^?a+KZ z6r#a^|0oKsAdhn}W)4n?OlOvj znW#x-HwyyI2T7Bf7b$`bPVfUjhUuI#3a2;)_07}7vzz3cR4KI?%!>%&1UzUbnBIvp z|9NhWo~E&2sSI@h3Yk(u6$n@dSQ^(FMXVNuQoz4Zsm9QTYgmVpas0 zMF4|R_XvlN`m?AnI6)e)X`+_OluR%cO;>G6)2uY~rWjGD7l2a)A*5iPjer0I=#a-0 z9Q7hBpeq~*5LYtTUZGsQ={WH23Mx6qJCll(2zY0Sf>yl)$o(go9-* z>q@SARcT<&j95KMR)N_xv4_b)D=pI2C}5N#Y=tCeQF{WarZN+Cxj-Jh@KMFC|MR1! zltK!A(A0_G)u_N(X=gp#Gtgp2w3#IBRm^(Yf~3>86^W{9`}xz4=JvQ8vF>g!g2xoZ z0ktXkD{l+ZRvvr@wP%Ira+wP?L%B?H8)N%N4u$Xu)S3}>uED7|o{@(&JR=ULZpftpap?M+#~Kth1#ocfYIQ6mFg!TH z9Wk&*a!cU}R~RGy^s$Axd1MsQw^LF>9t6pZE>Obna3ZAOFH@UY%}z23{}(Po3ADNq z2Dh`vE$Q<{Y_MktOPC^84y>UuyylY?*(^eCW0GB`lXqSKz|{3_6g0bOPN!g-Ti!xT z7|Ur=mtc}%R;;4e``|*mxI&O-bcGyU7FdT-(z_EekgJohM}!aJD4j3+YemvFly%Wg@sS3TKOyE=T%R-&0{CAamV zyDZe6ZYp_Q5pTDo-WvfomUS&=i1QW<*h$=>=GESd?VIW|2Rh|&gybE`{Vo) zIOA>}7K57>BQ3_Rr`-!^Pn)|S-feie_g#^SFI~Ai-&fARLU1Scd?(5FuFHj;147$7 zk2c2lPlv8=RU??@7H_xt{27I@Z(EyfH&Il{{ZftF%f3ohA=JBKbxJ$EAYdpu(|_vX zB5>lPfRFijzYZf7OhU{KCilGwNDmTJ>RzEb>|XH1kc04Oz&p5$ zy$kk*|1`=IF{w5`%GO85!9Of$L|vk4RP|aS3@J$Z%;(-?X@_1~ZOwM5>5cgxr9#0p z$?e?zR(FMUeBgTb3g2@w^8i~~j|+fnVGmnZ-WCDIKW#x=|1S}SJd%6&jV0_Q=n&b# zKmN-!r);+2z<~Li_vz?sD+!3W#LBJq5|!wCzTo&g+rhrQD?N3=n&$C2mAa->5(25x zqbI{NFzBfhXtM8ny@Fr?bt)=9;w|ATzqZ<=@?xp`X{#+zx$a^uQyAvC{tDy$uiXB{`988uM1ORI~s{$OlsEUF?{~&{*QY|o?#B7r-z(X~rOM#(U zfI)zT$eOV=j4UY#gGT7BQM|-c8w)xNtS9>bDOkLMIDiXmEKZOD8-N1`sHhx>f{JQ^ zAOsugJRxa37Dp7e$nrmIBtv2w zN6G@e%Y%a)&?zu{z8HM1$l@$@1iLQeEo;&#d5kL7!!{o)zzeHE&qKz$n>01^$D061 z5)w#aA;?E`C~VZkpu;9S>c}aG0~;{Fki@An|6DDg1b{U>u$bI7p8O7ZTu9VnCpsLF zk^~Tbe4druiI(J`m(&%bj6s_0z@qZ8blN5%xU+>^%6<|`itxmA)Hb4w35%4;I#fqs zW2dyl2&nuIspJW)%N58?!P7c~xww{ zy2mf90NgAAzyiDyC_Bbt$F@Q>-lRfzEJ*E=$K293lWHe_>b&Ix#JhY?cGI8voQe7r zp!*b+>Flj5tj1mJ#VM%6zng-t^RD(J!xV#qS}cKe8anKBqy_kZR|LLT49+t3+NbfjYD2Fvirt%bftx|MAfOiBe4w(fk9%1K>cnLcb%tJRV?2bxJz3 z+=AVEq&fH~>=d>;OhX^-(L2h*N0O!2GSi<5063K_#_WwJ&Z?%bd^&X5pB8{aKjvWn=od}SfB9m1VlBEfc-5!+vB9*09 zgpC@7tyhK>S(sfTnN?Jp|E(|hTv#TOS)IKemkpE;K-#2L+NEXMrghqDsxUAVPfzTMD?ja=oK+&D>H0}z7aO#>$|+#Ps<4oF-J z_yX@G-nHdk@g?3!|2W=AC;(A7-Y}Tk=JnY#vsr)zz1(e$UKP~RCEL?wpVYO06wqD^ zh=c9zUg9m^v^`+NO<)8r;LV+a8i)k6b%YxDg7@9q_+2+fwO5UeTrS{%5B^{guz(G~ zfUXFE8z^D37~vGoh!bXEvRGk?paBlh0=SFeiMZj7NTwWqi52GIP)S`OAg07!;NUId zA}(AcHUK5I+%KqsN=Vz|wcy5e-U8xav6WQc?TH)yVa({_nfT%_hG7!MVIr6TjNoB0 z{*C!iV~y}(GJciR-GMLgg0!^&?A2Z!I9?uD;um;WW1AqW0{^eah z-ils|U>-!#>|2A4UI1WbGq?c`5P|9#X~rms5f*8Z2I&nr1H3rl4?g17C|)C7|h%F6t5ff)Jjjpg!Y?@ZhCx>8NJu zhZt!-fMW|#>XIhvnI_|y_UaO@=?)m-mo@^bZX`FTY8t5Fu{P?u9uKD`>y<8PuI2!| zfNH76;j+f-xBls?UIL?DVYn^`xzpfn1F5v&w-hTGp1x{ccAmqyi z;HB{F@|A2(#_WAIUsb+i4{T+H-t6w}?9cXI%B}&+rsQ7cfjcH=yp@7pM&2)I0JgOO zjLzr_7Ur5IX8L8oV;0>|iqvG*p=JJRBBV^Rq2J4ar>!C*BH!k7q z|GsJMj$s-&Y`a+R?H2E&=4LV`Z^SlZu0CoaIBe@y?~L$a{7w(Qu5S>)0~SW=`u1*a zuJ0EZ@bng8A}HzoCXM|D04|t;@V0NHZe|NV;T8aE?>O-CZt(m@Y5IQe^R@``USSER z@JwlewvB<@4(+AD>_E0{SdMX3=IjCvWZAay%pUFTJ#87k@goN9%*JuoKHwcEZ2+e6 z0}gVuEoEB1+ulxIC;kE(2<|EN+$vT{zeQ$ImF^VAa10=7tWIe-rf`}@f(lD>5-#&4 z2!S;ZY_z@s?XHLu-s?DL^9qme5}xlB*7JgBb3b?UI=6@!=70s4Z#S=DyRPd%|DSL^ zC-X)Jbf;eGrWOIxumDg{>rLoxIgj))9}iF;bU~kiHy8CYCv#Fibx>dI4_0*eK59<4 z08h`9)CB|YMdx{53L%E)@J;d;NN3khWIFEg1D@l024F>&XJcOqeb#IS-fU+-^4D(m zI>zks_4R|E_T65J81QzvrE*^`T#Z)F`L$Si{b*(;^i}t=IiG4te+X6wbXSLTM+bqT zzKDEp^*#UdJ~wJeFZCPd_fhWv8OQ@!4|qz?@Uo_NM*og__p%%=_=(7F5D@E!Z+C+? z^%%bCeusBzc5_z0cRiPZK9Kbo#(0d^6gmE68Ao0oz+@hP?FM$`Sw?n*|Mp`^PGHHl zc36&iPnKjo?qt#CWT4;UoVRvI=K1cO`2r?-q~~PHZfCk3cjCTVb0206wPNV~a&q0` zuU_=~w)2#B@Oi&(KR56-?{DokaaE@Xmd6N;*KoEc;g3&`SSN9`Pjvv0`}COW@g92% z7jOcX@3l{R!e8*Shx>{6`-cF8J5c+fUUR&sfdMaL%2(^N*YocV`G&u5&3}8q?{2|Y z_z;Nv7p9czHDZ2_TWmA()=%y6{(4~L33h*Ur*7}H{^=WzY0PhG zp5E@lUTQ?g3&yti4`z(x-*`mt1TywurWWi(-}n@lelPRsQILF5|3~z*hIhV3eiTlR z5BBO7;Ok4r?(eS%E@*G+e{~MH{uj1?;@5Y82yuf0hb0y^U;uD1ApnI40SM%PhoJ=` z1ZT)_!(r4N3=0=F1nGqB;Z~$R~ga>pFBTlSX0NA)`LB6yAszX{XGaO^ieAcW<%WffS z4(mBIY0NR7wVhQ^oK3i`2Z!M9?(Xgu90L3hT!TA<4HDdafZ!IK;66A65ALqP-92+S zwQu+B?)q-K`sS;y>h-Smte=acjpgAa{7Iz=0ek}ItHMPB^D&;Six3aebg0)KVWI2Y zp+s7Ri?v_Ioxaa62y7X3JA;e0a2n1y9x5aTW(8@g`l6ub-=q;w|DMf3cPDGV1wpF< z?=KIRd#&-LK^GhP6&y=CUf1;=6v0R|83iGh2uxBy(D_0-Odx`Qp81k_`Et;{TNzji zmz~JM@V6EGt}j~hSDF|a8bQzXPUsckegM9n$nvg+w960 zgR0tE0uVFUf7U*?ntIpX(XK<;u(~-2HWt59RY2*yd22SBDEY@hv>kXtMAWKjduX4% zGY>jRQWudCAUEI*3o7PC6AP6K z{f%)i)+8e_hvha+^I!4RELZw}JoDPx8{o0n#kKN3IzY9&acF(kpQ?%9{qk_qxYE}8 ztGsgmaRIDV{$l$PNj801LkRYGRQyk6qj^imw5vL3;GeONohd8o)pGO(sV=gj2bC

Gs8amjX!hUPgi&$DNYOe^H34M5T9}?Z%~d-J;6_ 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 diff --git a/docs/build/media/vscpp-quickstart-first-run.gif b/docs/build/media/vscpp-quickstart-first-run.gif deleted file mode 100644 index 10d887cbcb4c529c94ceaac0a6eec0d5f6bcd134..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 170720 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 Z|?^g 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 (y14q< zymEc(9$;c>H#9Wb-#_T+jRjth{zvd2P_U2oCPYS7`YmLKggj60qy{pez!jqZ7U*O{CY_;7>@6z4AwwKqJ)bS%c@ew;2RWBDy zt`1P@)j4+qpXpplnzUb6@9$2*Tt*2$vUgZ#ZKMQ;yX@_yUhOMBdhA+1H@5g~-Iu|? z+GAaq?_0~&gbOomvzpkBf*c_t_g=)&kAj* z&Ol<@Oi7yz_aeI<>zt~{Za3HE+k4J%9|p7Xfyqe0buO-Q*{u z6KfpMR$%s15hQ0ZTE{WRgg^|cIEXK1s2E9L==wKBkeWnNI`ii`r%b=7jR*cMYwfw0FLh0ZOp>lRg0Pvv#ArE3^0+ zRQ-Rj_Z~n|Zd~#qkz&NNo{h@K@db#vPu+0L}&q#EFvIDvScI&$w@K@ zNX|JYQ4mvem%9Ib&VTQzci*de_tpv9Dyx7FeBWy3m}AYk<`~rx1SA-p%`-*le5z&& zBTEqiQgNLR+tpPII**BELeYMtTmKBI*5yqMo)1%@tItmzj#wg`+(+#4rVoc53-26E zI^5K}H|=^;(p_lAv-{M+wBq&!vAIVyeRn7Ao^F4BAM~W|Xx2g6q3V6`=nsiS8}+{O z#RM`fm*4#jY7m5iD)2kNijn14{`j3dKo$Y{03-vD2|zvo&w58$4bo|l4Ki$e7B??mE%`w>V3AQ=D}vTABGAF(QqpX@!d0K8-JQ^tZKu=8qEu+4f&9Y>rEc^G zbNKnP5KEAf7geN>kTa6Y1g6kKrZsmi!Fg|FEc$ZXL#)!NWV8`fJQ?M0Q$L5JASA*P zN}yZr;Fy>>&l3+i-ytPpM%;$xjpmS~a@>TBsAdNnNQIcuf)OXbQh`XgyO+}M`<$4a zxSnth*NmXirWeU^Vh?H_gzNHN7x7gHB5BdKX7Ikpc6WR74T))m;C-*pkN!CH_iL+Z z1mgsjDaOCR;kVbEM~?9?miZ)Y+4uPKeP2J?v>ao=9RZaDgmQV*7%)pfwg3Sg`TXQ~ z*LnH)iARp}@v(P9j=%Bg~9X5Ey)K{;uCFDu#Q1{{f(eUN0oRee?VB#rHv??EbQ|cla4V zaMMP;kB@!pN30+D(f#=GcwyLRX2x!8%rYhWyhpYX?g`7@o+n_yfDJ#HI}D2u{Qlkl zU-=LAuWSFmw*vnga`}JGZjMle%m|vSbb>{M2@Ic^uDP+g;AVfXa5mrbn0;HIN@S=p zAPA+^bHuyQc9B6oY3t)ztCx|&x9aWgi}v;;$=7TNGIOsDW@|@k_3mRfN70vCl-4~D zZ;w}~kM#92pLcv#uJWw7=j<8qLGm$6mQ<>uJsK-226<;w_-L#~jU=3;gX;!~9!Y$$FS++gXkj=)HEfc90Ie+$6^OOf#+{>T4ntdr zG!oMpV|f$VQqfpa+cW%WSyHfII5DMDt1RLLeK12dx+It;1y3s2ubcbA`)+p16VK(` zCp9w)I6`(TgpDU;iD-lv6m+mKi~`QS_`Kk)d}XA_9u9$Q&6O=Y?_85wd43#=ENY(~n47>M_*Z z>!BU@lom?ms7Cn?eFpV&twwo?2VH_E$KA9iXR;ki8{4Zx8cT>(PVG&8HYdaN%h_1n zeH_w$cYT%sjpj?rn>lr3F?^Lo60Q`Bg_E4jHn~6To=lfj^9)fBCj);CF!GbPix^f= zgOtx#a0pgEDp`-Y7u!_uV^mUtZ~|=Z+;@ljdEGR0HXjIBPXD;pOlJIJ&rZ&~x#SG3 zh|R}Z-)po~HgY@7CAWfi)4wX;KQVrQZ<>Ai{p+;t@sFd`!ejjR&$~W&VdKtYpnwc# z7V-HbiTye%0D~LBavB1JpD?Wdm^A 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 MQ@59~G=mcOU#VT-KmY&$ diff --git a/docs/build/vscpp-step-0-installation.md b/docs/build/vscpp-step-0-installation.md index 8c4a303bb89..350f29fbc2c 100644 --- a/docs/build/vscpp-step-0-installation.md +++ b/docs/build/vscpp-step-0-installation.md @@ -261,11 +261,7 @@ For details on the disk space and operating system requirements, see [Visual Stu The first time you run Visual Studio, you're asked to sign in with a Microsoft Account. If you don't have one, you can create one for free. You must also choose a theme. Don't worry, you can change it later if you want to. - It might take Visual Studio several minutes to get ready for use the first time you run it. Here's what it looks like in a quick time-lapse: - - ![Visual Studio sign in dialog.](media/vscpp-quickstart-first-run.gif "Visual Studio 2017 sign in") - - Visual Studio starts faster when you run it again. + It might take Visual Studio several minutes to get ready for use the first time you run it. 1. When Visual Studio opens, check to see if the flag icon in the title bar is highlighted: From 39d4a4800523431ad6bea29f09d34d1673e26bbb Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Fri, 21 Feb 2025 10:51:03 -0800 Subject: [PATCH 0173/2255] Learn Editor: Update compiler-errors-c2100-through-c2199.md --- .../compiler-errors-c2100-through-c2199.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-errors-c2100-through-c2199.md b/docs/error-messages/compiler-errors-1/compiler-errors-c2100-through-c2199.md index 6d59a9e2d6d..1089919e6d4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-errors-c2100-through-c2199.md +++ b/docs/error-messages/compiler-errors-1/compiler-errors-c2100-through-c2199.md @@ -15,7 +15,7 @@ The articles in this section of the documentation explain a subset of the error |Error|Message| |-----------|-------------| -|[Compiler error C2100](compiler-error-c2100.md)|illegal indirection| +|[Compiler error C2100](compiler-error-c2100.md)|you cannot dereference an operand of type '*type*'| |[Compiler error C2101](compiler-error-c2101.md)|'&' on constant| |[Compiler error C2102](compiler-error-c2102.md)|'&' requires l-value| |[Compiler error C2103](compiler-error-c2103.md)|'&' on register variable| @@ -31,11 +31,11 @@ The articles in this section of the documentation explain a subset of the error |[Compiler error C2113](compiler-error-c2113.md)|'-': pointer can only be subtracted from another pointer| |[Compiler error C2114](compiler-error-c2114.md)|'*operator*': pointer on left; needs integral value on right| |[Compiler error C2115](compiler-error-c2115.md)|'*operator*': incompatible types| -|[Compiler error C2116](compiler-error-c2116.md)|function parameter lists differed| +|[Compiler error C2116](compiler-error-c2116.md)|'*name*': function parameter lists do not match between declarations| |[Compiler error C2117](compiler-error-c2117.md)|'*identifier*': array bounds overflow| |[Compiler error C2118](compiler-error-c2118.md)|negative subscript| |Compiler error C2119|'*identifier*': the type for '*type*' cannot be deduced from an empty initializer| -|[Compiler error C2120](compiler-error-c2120.md)|'void' illegal with all types| +|[Compiler error C2120](compiler-error-c2120.md)|'`void`' cannot be combined with any other type specifier| |[Compiler error C2121](compiler-error-c2121.md)|'#': invalid character: possibly the result of a macro expansion| |[Compiler error C2122](compiler-error-c2122.md)|'*identifier*': prototype parameter in name list illegal| |Compiler error C2123|'*identifier*': alias templates cannot be explicitly or partially specialized| @@ -50,7 +50,7 @@ The articles in this section of the documentation explain a subset of the error |[Compiler error C2132](compiler-error-c2132.md)|syntax error: unexpected identifier| |[Compiler error C2133](compiler-error-c2133.md)|'*identifier*': unknown size| |[Compiler error C2134](compiler-error-c2134.md)|'*function*': call does not result in a constant expression| -|[Compiler error C2135](compiler-error-c2135.md)|'*operator*': illegal bit field operation| +|[Compiler error C2135](compiler-error-c2135.md)|'*identifier*': you cannot apply '*operator*' to a bit-field| |Compiler error C2136|authoring API contract not allowed| |[Compiler error C2137](compiler-error-c2137.md)|empty character constant| |[Compiler error C2138](compiler-error-c2138.md)|illegal to define an enumeration without any members| @@ -86,7 +86,7 @@ The articles in this section of the documentation explain a subset of the error |[Compiler error C2168](compiler-error-c2168.md)|'*function*': too few actual parameters for intrinsic function| |[Compiler error C2169](compiler-error-c2169.md)|'*function*': intrinsic function, cannot be defined| |[Compiler error C2170](compiler-error-c2170.md)|'*identifier*': not declared as a function, cannot be intrinsic| -|[Compiler error C2171](compiler-error-c2171.md)|'*operator*': illegal on operands of type '*type*'| +|[Compiler error C2171](compiler-error-c2171.md)|operator '*operator*' cannot be applied to an operand of type '*type*'| |[Compiler error C2172](compiler-error-c2172.md)|'*function*': actual parameter is not a pointer: parameter *number*| |[Compiler error C2173](compiler-error-c2173.md)|'*function*': actual parameter is not a pointer: parameter *number*, parameter list *number*| |[Compiler error C2174](compiler-error-c2174.md)|'*function*': actual parameter has type 'void': parameter *number*, parameter list *number*| From e66dddcb0403cf22d831072adf285e3528364e16 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Fri, 21 Feb 2025 12:40:14 -0800 Subject: [PATCH 0174/2255] Add new warnings to the warning tables (#5795) * Learn Editor: Update compiler-warnings-c4400-through-c4599.md * Learn Editor: Update compiler-warnings-c4000-through-c4199.md * Learn Editor: Update compiler-warnings-c5200-through-c5399.md * Learn Editor: Update compiler-warnings-by-compiler-version.md --- .../compiler-warnings-by-compiler-version.md | 29 +++++++++++++++++++ .../compiler-warnings-c4000-through-c4199.md | 4 +-- .../compiler-warnings-c4400-through-c4599.md | 3 +- .../compiler-warnings-c5200-through-c5399.md | 18 +++++++++++- 4 files changed, 50 insertions(+), 4 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md b/docs/error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md index 87f1ff8efc4..c3b078c75ea 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md @@ -53,6 +53,9 @@ These versions of the compiler introduced new warnings: | Visual Studio 2022 version 17.8 | 19.38 | | Visual Studio 2022 version 17.9 | 19.39 | | Visual Studio 2022 version 17.10 | 19.40 | +| Visual Studio 2022 version 17.11 | 19.41 | +| Visual Studio 2022 version 17.12 | 19.42 | +| Visual Studio 2022 version 17.13 | 19.43 | You can specify only the major number, the major and minor numbers, or the major, minor, and build numbers to the **`/Wv`** option. The compiler reports all warnings that match versions that begin with the specified number. It suppresses all warnings for versions greater than the specified number. For example, **`/Wv:17`** reports warnings introduced in or before any version of Visual Studio 2012, and suppresses warnings introduced by any compiler from Visual Studio 2013 (version 18) or later. To suppress warnings introduced in Visual Studio 2015 update 2 and later, you can use **`/Wv:19.00.23506`**. Use **`/Wv:19.11`** to report the warnings introduced in any version of Visual Studio before Visual Studio 2017 version 15.5, but suppress warnings introduced in Visual Studio 2017 version 15.5 and later. @@ -61,6 +64,32 @@ The following sections list the warnings introduced by each version of Visual C+ ::: moniker range=">= msvc-170" +## Warnings introduced in Visual Studio 2022 version 17.13 (compiler version 19.43) + +These warnings, and all warnings in later versions, are suppressed by using the compiler option **`/Wv:19.43`**. + +| Warning | Message | +|--|--| +|C5277| type trait optimization for '*class name*' is disabled +|C5308| Modifying reserved macro name '*macro name*' may cause undefined behavior +|C5309| literal suffix '*name*' requires at least '*language version*' + +## Warnings introduced in Visual Studio 2022 version 17.12 (compiler version 19.42) + +These warnings, and all warnings in later versions, are suppressed by using the compiler option **`/Wv:19.42`**. + +| Warning | Message | +|--|--| +|C5086| Arch setting *arch* and vector length *number* are not allowed. Using the default vector length - *number*. +|C5276| `/experimental:ifcDebugRecords` currently requires `/Z7` to be enabled. Please recompile with `/Z7` enabled. +|C5306| parameter array behavior change: overload '*identifier 1*' resolved to '*identifier 2*'; previously, it would have resolved to '*identifier 3*'. Use `/clr:ECMAParamArray` to revert to old behavior +|C5307| '*function*': argument (*argument number*) converted from '*type 1*' to '*type 2*'. Missing '`L`' encoding-prefix for character literal? + + +## Warnings introduced in Visual Studio 2022 version 17.11 (compiler version 19.41) + +There were no new warnings introduced in 17.11 + ## Warnings introduced in Visual Studio 2022 version 17.10 (compiler version 19.40) These warnings, and all warnings in later versions, are suppressed by using the compiler option **`/Wv:19.40`**. diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4000-through-c4199.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4000-through-c4199.md index 04e0b8c4acc..7e21f69e2c6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c4000-through-c4199.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4000-through-c4199.md @@ -88,7 +88,7 @@ The articles in this section describe Microsoft C/C++ compiler warning messages |[Compiler warning (level 1) C4097](compiler-warning-level-1-c4097.md)|expected pragma parameter to be '`restore`' or '`off`'| |[Compiler warning (level 1) C4098](compiler-warning-level-1-c4098.md)|'*function*': '`void`' function returning a value| |[Compiler warning (level 2) C4099](compiler-warning-level-2-c4099.md)|'*identifier*': type name first seen using '*object_type1*' now seen using '*object_type2*'| -|[Compiler warning (level 4) C4100](compiler-warning-level-4-c4100.md)|'*identifier*': unreferenced formal parameter| +|[Compiler warning (level 4) C4100](compiler-warning-level-4-c4100.md)|'*identifier*': unreferenced parameter| |[Compiler warning (level 3 and level 4) C4101](compiler-warning-level-3-c4101.md)|'*identifier*': unreferenced local variable| |[Compiler warning (level 3) C4102](compiler-warning-level-3-c4102.md)|'*label*': unreferenced label| |[Compiler warning (level 1) C4103](compiler-warning-level-1-c4103.md)|alignment changed after including header, may be due to missing `#pragma pack(pop)`| @@ -154,7 +154,7 @@ The articles in this section describe Microsoft C/C++ compiler warning messages |[Compiler warning (level 1) C4187](compiler-warning-level-1-c4187.md)|`#import` attributes '*attribute1*' and '*attribute2*' are incompatible; both ignored| |Compiler warning (level 1) C4188|constant expression is not integral| |[Compiler warning (level 3 and level 4) C4189](compiler-warning-level-4-c4189.md)|'*identifier*': local variable is initialized but not referenced| -|[Compiler warning (level 1) C4190](compiler-warning-level-1-c4190.md)|'*identifier1*' has C-linkage specified, but returns UDT '*identifier2*' which is incompatible with C| +|[Compiler warning (level 1) C4190](compiler-warning-level-1-c4190.md)|'*identifier1*' has C-linkage specified, but returns '*identifier2*' which is incompatible with C| |[Compiler warning (level 3, off) C4191](compiler-warning-level-3-c4191.md)|'*operation*': unsafe conversion from '*type_of_expression*' to '*type_required*'
Making a function call using the resulting pointer may cause your program to fail| |[Compiler warning (level 3) C4192](compiler-warning-level-3-c4192.md)|automatically excluding '*identifier*' while importing type library '*library*'| |Compiler warning (level 3) C4193|`#pragma warning(pop)`: no matching '`#pragma warning(push)`'| diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md index f44b3030bab..03b421b60ea 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md @@ -77,6 +77,7 @@ The articles in this section describe Microsoft C/C++ compiler warning messages |[Compiler warning (level 4) C4463](compiler-warning-level-4-c4463.md)|overflow; assigning *value* to bit-field that can only hold values from *min_value* to *max_value*| |[Compiler warning (level 4, off) C4464](compiler-warning-level-4-c4464.md)|relative include path contains '`..`'| |Compiler warning C4466|Could not perform coroutine heap elision| +|Compiler warning (level 1) C4465|'*identifier*': use of dependent template requires `::template`| |Compiler warning (level 1) C4467|Usage of ATL attributes is deprecated| |Compiler warning (level 1) C4468|The `[[fallthrough]]` attribute must be followed by a `case` label or a `default` label| |[Compiler warning (level 1) C4470](compiler-warning-level-1-c4470.md)|floating-point control pragmas ignored under `/clr`| @@ -156,7 +157,7 @@ The articles in this section describe Microsoft C/C++ compiler warning messages |[Compiler warning (level 1) C4556](compiler-warning-level-1-c4556.md)|value of intrinsic immediate argument '*value*' is out of range '*lower_bound* - *upper_bound*'| |[Compiler warning (level 3, off) C4557](compiler-warning-level-3-c4557.md)|'`__assume`' contains effect '*effect*'| |[Compiler warning (level 1) C4558](compiler-warning-level-1-c4558.md)|value of operand '*value*' is out of range '*lower_bound* - *upper_bound*'| -|[Compiler warning (level 4) C4559](compiler-warning-level-4-c4559.md)|''*function*': redefinition; the function gains `__declspec(`*modifier*`)`| +|[Compiler warning (level 4) C4559](compiler-warning-level-4-c4559.md)|'*function*': redefinition; the function gains `__declspec(`*modifier*`)`| |[Compiler warning (level 1) C4561](compiler-warning-level-1-c4561.md)|'`__fastcall`' incompatible with the '`/clr`' option: converting to '`__stdcall`'| |Compiler warning (level 4) C4562|fully prototyped functions are required with the '`/clr`' option: converting '`()`' to '`(void)`'| |[Compiler warning (level 4) C4564](compiler-warning-level-4-c4564.md)|method '*method*' of *class* '*classname*' defines unsupported default parameter '*parameter*'| diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399.md b/docs/error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399.md index 6b91bd2aba2..1b66790fb1e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399.md @@ -65,7 +65,7 @@ The articles in this section describe Microsoft C/C++ compiler warning messages | [Compiler warning (level 1, off) C5248](c5248.md) | section '*section-name*' is reserved for C++ dynamic initialization. Variables manually put into the section may be optimized out and their order relative to compiler generated dynamic initializers is unspecified | | Compiler warning (level 1, off) C5249 | '*bitfield*' of type '*enumeration_name*' has named enumerators with values that cannot be represented in the given bit field width of '*bitfield_width*'. | | Compiler warning (level 3, off) C5250 | '*function_name*': intrinsic function not declared | -| Compiler warning (level 4, off) C5251 | *segment-name* changed after including header | +| Compiler warning (level 4, off) C5251 | the value of `#pragma` *pragma name* changed after `#include`; `#pragma `*pragma name*`(pop)` missing in this header? | | Compiler warning (level 4) C5252 | Multiple different types resulted in the same XFG type-hash *hash-value*; the PDB will only record information for one of them | | Compiler warning (level 4) C5253 | a non-local lambda cannot have a capture default | | Compiler warning (level 4, off) C5254 | language feature 'terse static assert' requires compiler flag '*/std:c++17*' | @@ -90,12 +90,28 @@ The articles in this section describe Microsoft C/C++ compiler warning messages | Compiler warning (level 1) C5273 | behavior change: `_Alignas` on anonymous type no longer ignored (promoted members will align) | | Compiler warning (level 1) C5274 | behavior change: `_Alignas` no longer applies to the type '*type*' (only applies to declared data objects) | | Compiler warning (error) C5275 | assembly '*name*' being imported under '*/clr*' does not contain the required fundamental types | +| Compiler warning (level 1) C5276 | `/experimental:ifcDebugRecords` currently requires `/Z7` to be enabled. Please recompile with `/Z7` enabled.| +| Compiler warning (level 1) C5277 | type trait optimization for '*class name*' is disabled | +| Compiler warning (level 1) C5278 | adding a specialization for '*type*' has undefined behavior | +| Compiler warning (level 1) C5279 | a lambda declarator without a parameter list requires at least '*language version*' | +| Compiler warning (level 1) C5280 | a static operator '*operator name*' requires at least '*language version*'| +| Compiler warning (level 1) C5281 | a static lambda requires at least '*language version*' | +| Compiler warning (level 1) C5282 | '`if consteval`' requires at least '*language version*' | +| Compiler warning (level 1) C5283 | an attribute in this position requires at least '*language version*' | +| Compiler warning (level 4) C5284 | conversion from value '*value*' of type '*type 1*' to '*type 2*' requires a narrowing conversion | +| Compiler warning (level 1) C5285 | cannot declare a specialization for '*template name*': *template argument* | +| Compiler warning (level 1) C5286 | implicit conversion from `enum` type '*type 1*' to `enum` type '*type 2*'; use an explicit cast to silence this warning | +| Compiler warning (level 1) C5287 | operands are different `enum` types '*type 1*' and '*type 2*'; use an explicit cast to silence this warning | | Compiler warning (error) C5300 | '`#pragma omp atomic` *clause*': expression mismatch for lvalue being updated | | [Compiler warning (level 1) C5301](c5301-c5302.md) | '`#pragma omp for`': '*loop-index*' increases while loop condition uses '*comparison*'; non-terminating loop? | | [Compiler warning (level 1) C5302](c5301-c5302.md) | '`#pragma omp for`': '*loop-index*' decreases while loop condition uses '*comparison*'; non-terminating loop? | | Compiler warning (level 1) C5303 | function marked with `[[msvc::intrinsic]]` did not result in a no-op cast | | Compiler warning (level 1) C5304 | a declaration designated by the using-declaration '*name1*' exported from this module has internal linkage and using such a name outside the module is ill-formed; consider declaring '*name2*' '`inline`' to use it outside of this module | | Compiler warning (level 1) C5305 | '*name*': an explicit instantiation declaration that follows an explicit instantiation definition is ignored | +| Compiler warning (level 1) C5306 | parameter array behavior change: overload '*identifier 1*' resolved to '*identifier 2*'; previously, it would have resolved to '*identifier 3*'. Use `/clr:ECMAParamArray` to revert to old behavior | +| Compiler warning (level 3) C5307 | '*function*': argument (*argument number*) converted from '*type 1*' to '*type 2*'. Missing '`L`' encoding-prefix for character literal? | +| Compiler warning (level 1, error) C5308 | Modifying reserved macro name '*macro name*' may cause undefined behavior | +| Compiler warning (level 1, error) C5309 | literal suffix '*name*' requires at least '*language version*'| ## See also From 85a3c63e5b83303146be6543e131fe13b3e5d21d Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 21 Feb 2025 16:47:02 -0800 Subject: [PATCH 0175/2255] draft --- docs/build/how-to-debug-a-release-build.md | 2 +- ...ic-debugging.md => dynamic-deopt-linker.md} | 10 +++++----- docs/build/reference/dynamic-deopt.md | 18 +++++------------- docs/build/reference/linker-options.md | 4 ++-- 4 files changed, 13 insertions(+), 21 deletions(-) rename docs/build/reference/{debugdeopt-dynamic-debugging.md => dynamic-deopt-linker.md} (66%) diff --git a/docs/build/how-to-debug-a-release-build.md b/docs/build/how-to-debug-a-release-build.md index 211080ac04c..4d27f9e885d 100644 --- a/docs/build/how-to-debug-a-release-build.md +++ b/docs/build/how-to-debug-a-release-build.md @@ -1,7 +1,7 @@ --- description: "Learn more about: How to: Debug a Release Build" title: "How to: Debug a Release Build" -ms.date: 2/19/2025 +ms.date: 3/11/2025 helpviewer_keywords: ["debugging [C++], release builds", "release builds, debugging"] --- # How to: Debug a Release Build diff --git a/docs/build/reference/debugdeopt-dynamic-debugging.md b/docs/build/reference/dynamic-deopt-linker.md similarity index 66% rename from docs/build/reference/debugdeopt-dynamic-debugging.md rename to docs/build/reference/dynamic-deopt-linker.md index 6b25838461b..763d9ab7150 100644 --- a/docs/build/reference/debugdeopt-dynamic-debugging.md +++ b/docs/build/reference/dynamic-deopt-linker.md @@ -1,13 +1,13 @@ --- description: "Learn more about: /DEBUGDEOPT (Support C++ Dynamic Debugging)" -title: "| [`/DEBUGDEOPT`](debugdeopt-dynamic-debugging.md) | Creates debugging information for retail builds to support C++ Dynamic Debugging. |" -ms.date: 2/20/2025 -f1_keywords: ["VC.Project.VCLinkerTool.GenerateDebugDeoptInformation", "/debugdeopt"] -helpviewer_keywords: ["DEBUGDEOPT linker option", "/DEBUGDEOPT linker option", "-DEBUGDEOPT linker option", "c++ dynanmic debugging", "generate dynamic debug info linker option"] +title: "/DEBUGDEOPT (Support C++ Dynamic Debugging)" +ms.date: 3/11/2025 +f1_keywords: ["VC.Project.VCLinkerTool.GenerateDynamicDeoptInformation", "/dynamicdeopt"] +helpviewer_keywords: ["DYNAMICDEOPT linker option", "/DYNAMICDEOPT linker option", "-DYNAMICDEOPT linker option", "c++ dynanmic debugging"] --- # | `/DEBUGDEOPT` (Support C++ Dynamic Debugging) -The **`/DEBUGDEOPT`** linker options enables C++ Dynamic Debugging which allows you to debug optimized code as if it were deoptimized. This option is only available in Visual Studio 2022 Version 17.14 Preview 2 and later. +The **`/DEBUGDEOPT`** linker option enables C++ Dynamic Debugging which allows you to debug optimized code as if it were deoptimized. This option is only available in Visual Studio 2022 Version 17.14 Preview 2 and later, and only for x64 code. ## Syntax diff --git a/docs/build/reference/dynamic-deopt.md b/docs/build/reference/dynamic-deopt.md index a3a0dbe5358..c0d4b05b526 100644 --- a/docs/build/reference/dynamic-deopt.md +++ b/docs/build/reference/dynamic-deopt.md @@ -1,7 +1,7 @@ --- title: "/dynamicdeopt (Enable C++ Dynamic Debugging)" description: "Use the Microsoft C++ compiler option /clr to compile C++/CLI and C++ code as managed code." -ms.date: 10/27/2020 +ms.date: 3/11/2025 f1_keywords: ["/dynamicdeopt", "VC.Project.VCNMakeTool.CompileAsManaged", "VC.Project.VCCLCompilerTool.CompileAsManaged"] helpviewer_keywords: ["cl.exe compiler, common language runtime option", "-dynamicdeopt compiler option [C++]", "dynamicdeopt compiler option [C++]", "/clr compiler option [C++]", "Managed Extensions for C++, compiling", "common language runtime, /clr compiler option"] --- @@ -20,23 +20,16 @@ Debug optimized code as if it were compiled unoptimized. *`suffix`*\ Specify the file extension for the deoptimized output. One or more of the following comma-separated arguments. -• `/dynamicdeopt:suffix` lets you change that new suffix from .alt to something else. We don't expect folks to use this. The gotcha here is that it needs to get set for EVERY file, and it also needs to match the same thing you pass to the linker. If you get it wrong in just a single place the feature can get really weird. But, if folks happen to already have files named blah.alt.cpp and they would prefer a different suffix, we allow that. - -- **`pure`** - - **`/clr:pure` is deprecated**. The option is removed in Visual Studio 2017 and later. We recommend that you port code that must be pure MSIL to C#. +• `/dynamicdeopt:suffix` lets you change that new suffix from `.alt` to something else. Be aware that if you change the suffix, that the suffix must be changed for every file, and it also needs to match the same name passed to the linker. You typically won't use this switch unless you already have files named filename.alt.cpp and you would prefer a different suffix. ## Remarks -This flag is only available for x64 builds. The linker must also be passed [`/DEBUGDEOPT`](debugdeopt-dynamic-debugging.md) to enable C++ Dynamic Debugging. +This flag is only available for x64 builds. The linker must also be passed [`/DYNAMICDEOPT`](dynamic-deopt-linker.md) to enable C++ Dynamic Debugging. Compiling with `/dynamicdeopt` generates additional binaries that are used for debugging. When you debug an optimized file and step into an optimized function, the debugger steps into the alternate binary. This allows you to debug as if you are building unoptimized code while still getting the performance advantages of building optimized code. Place breakpoints in optimized code and step in anywhere with on-demand function deoptimization - -You must also add `/dynamicdeopt` to the linker command line. - With no options, given `test.cpp` as input your output will include `test.obj`, `test.exe`, and `test.pdb`, as well as `test.alt.obj`, `test.alt.exe`, and ``test.alt.pdb`. `/dynamicdeopt` requires: @@ -62,9 +55,8 @@ If you specify `/OPT:ICF`, the compiler generates a warning that the debug exper `fsanitize=address` `fsanitize=kernel-address` - -Turn /GL off via Project properties C/C++ > Optimization > Whole Program Optimization. Set it to **No**. -TUrn /OPT:ICF off in Project properties Linker > Optimization > Enable COMDAT Folding. Set it to **No**. +Turn `/GL `off via Project properties C/C++ > Optimization > Whole Program Optimization. Set it to **No**. +TUrn `/OPT:ICF` off in Project properties Linker > Optimization > Enable COMDAT Folding. Set it to **No**. ### To set this compiler option programmatically diff --git a/docs/build/reference/linker-options.md b/docs/build/reference/linker-options.md index 17ef77e5200..a126111e98f 100644 --- a/docs/build/reference/linker-options.md +++ b/docs/build/reference/linker-options.md @@ -1,7 +1,7 @@ --- title: "MSVC Linker options" description: "A list of the options supported by the Microsoft LINK linker." -ms.date: 02/18/2025 +ms.date: 3/11/2025 f1_keywords: ["link"] helpviewer_keywords: ["linker [C++]", "linker [C++], options listed", "libraries [C++], linking to COFF", "LINK tool [C++], linker options"] --- @@ -42,7 +42,7 @@ You can use the [`comment`](../../preprocessor/comment-c-cpp.md) pragma to speci | [`/CLRTHREADATTRIBUTE`](clrthreadattribute-set-clr-thread-attribute.md) | Specifies the threading attribute to apply to the entry point of your CLR program. | | [`/CLRUNMANAGEDCODECHECK`](clrunmanagedcodecheck-add-suppressunmanagedcodesecurityattribute.md) | Specifies whether the linker applies the `SuppressUnmanagedCodeSecurity` attribute to linker-generated P/Invoke stubs that call from managed code into native DLLs. | | [`/DEBUG`](debug-generate-debug-info.md) | Creates debugging information. | -| [`/DEBUGDEOPT`](debugdeopt-dynamic-debugging.md) | Enable C++ Dynamic Debugging to debug optimized code as if it were deoptimized. | +| [`/DYNAMICDEOPT`](dyanmic-deopt-linkder.md) | Enable C++ Dynamic Debugging to debug optimized code as if it were deoptimized. | | [`/DEBUGTYPE`](debugtype-debug-info-options.md) | Specifies which data to include in debugging information. | | [`/DEF`](def-specify-module-definition-file.md) | Passes a module-definition (.def) file to the linker. | | [`/DEFAULTLIB`](defaultlib-specify-default-library.md) | Searches the specified library when external references are resolved. | From 414e000756bdee11d60cdadfe004d937fda20910 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 24 Feb 2025 23:05:04 +0800 Subject: [PATCH 0176/2255] Add missing space between asterisk and open parenthesis --- docs/c-runtime-library/heapset.md | 5 ++--- docs/c-runtime-library/reference/heapchk.md | 5 ++--- docs/c-runtime-library/reference/heapmin.md | 5 ++--- docs/cpp/unhook.md | 2 +- 4 files changed, 7 insertions(+), 10 deletions(-) diff --git a/docs/c-runtime-library/heapset.md b/docs/c-runtime-library/heapset.md index 98b435fbb4d..71dcd097259 100644 --- a/docs/c-runtime-library/heapset.md +++ b/docs/c-runtime-library/heapset.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: _heapset" title: "_heapset" +description: "Learn more about: _heapset" ms.date: "11/04/2016" api_name: ["_heapset"] api_location: ["msvcr90.dll", "msvcr80.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcrt.dll", "msvcr120.dll", "msvcr100.dll"] @@ -8,7 +8,6 @@ api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["_heapset", "heapset"] helpviewer_keywords: ["checking heap", "heapset function", "heaps, checking", "debugging [CRT], heap-related problems", "_heapset function"] -ms.assetid: 9667eeb0-55bc-4c19-af5f-d1fd0a142b3c --- # `_heapset` @@ -47,7 +46,7 @@ In addition, if an error occurs, **`_heapset`** sets `errno` to `ENOSYS`. The **`_heapset`** function shows free memory locations or nodes that have been unintentionally overwritten. -**`_heapset`** checks for minimal consistency on the heap and then sets each byte of the heap's free entries to the `fill` value. This known value shows which memory locations of the heap contain free nodes and which contain data that were unintentionally written to freed memory. If the operating system doesn't support **`_heapset`**(for example, Windows 98), the function returns `_HEAPOK` and sets `errno` to `ENOSYS`. +**`_heapset`** checks for minimal consistency on the heap and then sets each byte of the heap's free entries to the `fill` value. This known value shows which memory locations of the heap contain free nodes and which contain data that were unintentionally written to freed memory. If the operating system doesn't support **`_heapset`** (for example, Windows 98), the function returns `_HEAPOK` and sets `errno` to `ENOSYS`. ## Requirements diff --git a/docs/c-runtime-library/reference/heapchk.md b/docs/c-runtime-library/reference/heapchk.md index 589d119aef5..4e77c836904 100644 --- a/docs/c-runtime-library/reference/heapchk.md +++ b/docs/c-runtime-library/reference/heapchk.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: _heapchk" title: "_heapchk" +description: "Learn more about: _heapchk" ms.date: "4/2/2020" api_name: ["_heapchk", "_o__heapchk"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-heap-l1-1-0.dll"] @@ -8,7 +8,6 @@ api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["_heapchk", "heapchk"] helpviewer_keywords: ["debugging [CRT], heap-related problems", "consistency checking of heaps", "heapchk function", "heaps, checking consistency", "_heapchk function"] -ms.assetid: 859619a5-1e35-4f02-9e09-11d9fa266ec0 --- # `_heapchk` @@ -36,7 +35,7 @@ In addition, if an error occurs, **`_heapchk`** sets `errno` to `ENOSYS`. ## Remarks -The **`_heapchk`** function helps debug heap-related problems by checking for minimal consistency of the heap. If the operating system doesn't support **`_heapchk`**(for example, Windows 98), the function returns `_HEAPOK` and sets `errno` to `ENOSYS`. +The **`_heapchk`** function helps debug heap-related problems by checking for minimal consistency of the heap. If the operating system doesn't support **`_heapchk`** (for example, Windows 98), the function returns `_HEAPOK` and sets `errno` to `ENOSYS`. By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). diff --git a/docs/c-runtime-library/reference/heapmin.md b/docs/c-runtime-library/reference/heapmin.md index ffee2908c13..f5f5e5671a9 100644 --- a/docs/c-runtime-library/reference/heapmin.md +++ b/docs/c-runtime-library/reference/heapmin.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: _heapmin" title: "_heapmin" +description: "Learn more about: _heapmin" ms.date: "4/2/2020" api_name: ["_heapmin", "_o__heapmin"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-heap-l1-1-0.dll"] @@ -8,7 +8,6 @@ api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["_heapmin", "heapmin"] helpviewer_keywords: ["heap memory", "minimizing heaps", "memory, releasing", "heaps, releasing unused memory", "_heapmin function", "heapmin function"] -ms.assetid: c0bccdf6-2d14-4d7b-a7ff-d6a17bdb410f --- # `_heapmin` @@ -28,7 +27,7 @@ For more information about this and other return codes, see [`errno`, `_doserrno ## Remarks -The **`_heapmin`** function minimizes the heap by releasing unused heap memory to the operating system. If the operating system doesn't support **`_heapmin`**(for example, Windows 98), the function returns -1 and sets `errno` to `ENOSYS`. +The **`_heapmin`** function minimizes the heap by releasing unused heap memory to the operating system. If the operating system doesn't support **`_heapmin`** (for example, Windows 98), the function returns -1 and sets `errno` to `ENOSYS`. By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). diff --git a/docs/cpp/unhook.md b/docs/cpp/unhook.md index c281450fafc..146b6502e07 100644 --- a/docs/cpp/unhook.md +++ b/docs/cpp/unhook.md @@ -64,7 +64,7 @@ A pointer to the event handler method to be unhooked from an event. The handler - Managed events: *`ReceiverClass`* is the event receiver class and *`HandlerMethod`* is the handler. -*`receiver`*(optional) +*`receiver`* (optional) A pointer to an instance of the event receiver class. If you don't specify a receiver, the default is the receiver class or structure in which **`__unhook`** is called. ## Usage From 423c0f33e68a574314503c317e111910d62f0799 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 24 Feb 2025 23:27:54 +0800 Subject: [PATCH 0177/2255] Tweaks for C6030 warning page --- docs/code-quality/c6030.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/docs/code-quality/c6030.md b/docs/code-quality/c6030.md index 41d536acb35..d839858cfaf 100644 --- a/docs/code-quality/c6030.md +++ b/docs/code-quality/c6030.md @@ -6,17 +6,18 @@ f1_keywords: ["C6030", "USE_ATTRIBUTE_NORETURN", "__WARNING_USE_ATTRIBUTE_NORETU helpviewer_keywords: ["C6030"] --- -# Warning C6030 +# Warning C6030 > Use attribute [[noreturn]] over __declspec(noreturn) in function '*function-name*' ## Remarks -This warning suggests using the C++11 standard attribute `[[noreturn]]` in place of the declspec variant `__declspec(noreturn)`. The standard attribute provides better cross-platform support because it doesn't rely on language extensions. +This warning suggests using the C++11 standard attribute [`[[noreturn]]`](../cpp/attributes.md#noreturn) in place of the declspec variant [`__declspec(noreturn)`](../cpp/noreturn.md). The standard attribute provides better cross-platform support because it doesn't rely on language extensions. This warning is off by default and isn't part of the `All Rules` rule set. To enable this warning, it must be added to the rule set file being used. This check is available in Visual Studio 2022 version 17.0 and later versions. + Code analysis name: `USE_ATTRIBUTE_NORETURN` ## Example @@ -24,15 +25,13 @@ Code analysis name: `USE_ATTRIBUTE_NORETURN` The following code generates C6030: ```cpp -__declspec(noreturn) void TerminateApplication(); - +__declspec(noreturn) void terminate_application(); ``` Fix the issue by using the `[[noreturn]]` attribute: ```cpp -[[ noreturn ]] void TerminateApplication(); - +[[noreturn]] void terminate_application(); ``` ## See also From e866fd95f6dc430c47ebb37bf1521b020e8f0228 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 25 Feb 2025 02:30:25 +0800 Subject: [PATCH 0178/2255] Clean up unneeded space between code block backticks and language (#5201) --- docs/build/cmake-remote-debugging.md | 4 ++-- docs/build/how-to-use-build-events-in-msbuild-projects.md | 7 +++---- docs/dotnet/data-access-using-adonet-cpp-cli.md | 5 ++--- ...ler-support-for-type-traits-cpp-component-extensions.md | 5 ++--- docs/mfc/reference/buffercommand-enumeration.md | 2 +- 5 files changed, 10 insertions(+), 13 deletions(-) diff --git a/docs/build/cmake-remote-debugging.md b/docs/build/cmake-remote-debugging.md index da1c2c77745..41645840b36 100644 --- a/docs/build/cmake-remote-debugging.md +++ b/docs/build/cmake-remote-debugging.md @@ -1,8 +1,8 @@ --- title: "Tutorial: Debug a CMake project on a remote Windows machine" +description: "How to use Visual Studio C++ on Windows to create and build a CMake project. You'll then deploy and debug it on a remote Windows machine." ms.date: "12/4/2020" ms.topic: tutorial -description: "How to use Visual Studio C++ on Windows to create and build a CMake project. You'll then deploy and debug it on a remote Windows machine." --- # Tutorial: Debug a CMake project on a remote Windows machine @@ -115,7 +115,7 @@ For example, on the remote machine, from the Visual Studio Remote Debugger menu Then, in Visual Studio on the host machine, update the *`launch.vs.json`* file to match. For example, if you choose **No Authentication** on the remote debugger, update the *`launch.vs.json`* file in your project by adding `"authenticationType": "none"` to the `configurations` section *`launch.vs.json`*. Otherwise, `"authenticationType"` defaults to `"windows"` and doesn't need to be explicitly stated. This example shows a *`launch.vs.json`* file configured for no authentication: -``` XAML +```XAML { "version": "0.2.1", "defaults": {}, diff --git a/docs/build/how-to-use-build-events-in-msbuild-projects.md b/docs/build/how-to-use-build-events-in-msbuild-projects.md index c747397334d..72aea3d96ac 100644 --- a/docs/build/how-to-use-build-events-in-msbuild-projects.md +++ b/docs/build/how-to-use-build-events-in-msbuild-projects.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: How to: Use Build Events in MSBuild Projects" title: "How to: Use Build Events in MSBuild Projects" +description: "Learn more about: How to: Use Build Events in MSBuild Projects" ms.date: "11/04/2016" helpviewer_keywords: ["msbuild (c++), howto: use build events in projects"] -ms.assetid: 2a58dc9d-3d50-4e49-97c1-86c5a05ce218 --- # How to: Use Build Events in MSBuild Projects @@ -33,7 +32,7 @@ The following table lists each *use-in-build* element: The following example can be added inside of the Project element of the myproject.vcxproj file created in [Walkthrough: Using MSBuild to Create a C++ Project](walkthrough-using-msbuild-to-create-a-visual-cpp-project.md). A *pre-build* event makes a copy of main.cpp; a *pre-link* event makes a copy of main.obj; and a *post-build* event makes a copy of myproject.exe. If the project is built using a release configuration, the build events are executed. If the project is built using a debug configuration, the build events are not executed. -``` xml +```xml copy $(ProjectDir)main.cpp $(ProjectDir)copyOfMain.cpp @@ -64,5 +63,5 @@ The following example can be added inside of the Project element of the myprojec ## See also -[MSBuild on the command line - C++](msbuild-visual-cpp.md)
+[MSBuild on the command line - C++](msbuild-visual-cpp.md)\ [Walkthrough: Using MSBuild to Create a C++ Project](walkthrough-using-msbuild-to-create-a-visual-cpp-project.md) diff --git a/docs/dotnet/data-access-using-adonet-cpp-cli.md b/docs/dotnet/data-access-using-adonet-cpp-cli.md index 73c3d4e6c82..69724de4d57 100644 --- a/docs/dotnet/data-access-using-adonet-cpp-cli.md +++ b/docs/dotnet/data-access-using-adonet-cpp-cli.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Data Access Using ADO.NET (C++/CLI)" title: "Data Access Using ADO.NET (C++/CLI)" +description: "Learn more about: Data Access Using ADO.NET (C++/CLI)" ms.date: "11/04/2016" helpviewer_keywords: ["ADO.NET [C++]", ".NET Framework [C++], data access", "databases [C++], accessing in C++", "data access [C++], ADO.NET", "data [C++], ADO.NET", "native strings [C++]", "ADO.NET [C++], marshaling ANSI strings", "strings [C++], ADO.NET", "BSTRs, strings", "ADO.NET [C++], marshaling BSTR strings", "strings [C++], marshaling BSTR strings", "ADO.NET [C++], marshaling Unicode strings", "Unicode [C++], strings", "strings [C++], Unicode", "VARIANT, marshaling", "ADO.NET [C++], marshaling VARIANT types", "VARIANT", "SAFEARRAY, marshaling", "ADO.NET [C++], marshaling SAFEARRAY types"] -ms.assetid: b0cd987d-1ea7-4f76-ba01-cbd52503d06d --- # Data Access Using ADO.NET (C++/CLI) @@ -152,7 +151,7 @@ The rest of the code in this example is native C++ code, as is indicated by the > [!NOTE] > The memory allocated by must be deallocated by calling either or `SysFreeString`. -``` cpp +```cpp // adonet_marshal_string_bstr.cpp // compile with: /clr /FU System.dll /FU System.Data.dll /FU System.Xml.dll #include diff --git a/docs/extensions/compiler-support-for-type-traits-cpp-component-extensions.md b/docs/extensions/compiler-support-for-type-traits-cpp-component-extensions.md index df9bc0d8cf9..c88366385c7 100644 --- a/docs/extensions/compiler-support-for-type-traits-cpp-component-extensions.md +++ b/docs/extensions/compiler-support-for-type-traits-cpp-component-extensions.md @@ -1,11 +1,10 @@ --- -description: "Learn more about: Compiler Support for Type Traits (C++/CLI and C++/CX)" title: "Compiler Support for Type Traits (C++/CLI and C++/CX)" +description: "Learn more about: Compiler Support for Type Traits (C++/CLI and C++/CX)" ms.date: "10/12/2018" ms.topic: "reference" f1_keywords: ["__is_simple_value_class", "__has_trivial_destructor", "__has_assign", "__is_union", "__is_class", "__is_abstract", "__has_trivial_assign", "__has_virtual_destructor", "__is_ref_array", "__is_base_of", "__has_copy", "__is_polymorphic", "__has_nothrow_constructor", "__is_ref_class", "__is_delegate", "__is_convertible_to", "__is_value_class", "__is_interface_class", "__has_nothrow_copy", "__is_sealed", "__has_trivial_constructor", "__has_trivial_copy", "__is_enum", "__has_nothrow_assign", "__has_finalizer", "__is_empty", "__is_pod", "__has_user_destructor"] helpviewer_keywords: ["__is_class keyword [C++]", "__is_pod keyword [C++]", "__is_delegate keyword [C++]", "__is_value_class keyword [C++]", "__has_copy keyword [C++]", "__has_nothrow_copy keyword [C++]", "__is_interface_class keyword [C++]", "__is_sealed keyword [C++]", "__is_convertible_to keyword [C++]", "__is_ref_class keyword [C++]", "__has_trivial_copy keyword [C++]", "__has_user_destructor keyword [C++]", "__is_abstract keyword [C++]", "__is_empty keyword [C++]", "__has_trivial_assign keyword [C++]", "__has_nothrow_constructor keyword [C++]", "__is_ref_array keyword [C++]", "__is_base_of keyword [C++]", "__has_nothrow_assign keyword [C++]", "__has_virtual_destructor keyword [C++]", "__has_finalizer keyword [C++]", "__is_union keyword [C++]", "__has_assign keyword [C++]", "__has_trivial_destructor keyword [C++]", "__is_polymorphic keyword [C++]", "__is_enum keyword [C++]", "__is_simple_value_class keyword [C++]", "__has_trivial_constructor keyword [C++]"] -ms.assetid: cd440630-0394-48c0-a16b-1580b6ef5844 --- # Compiler Support for Type Traits (C++/CLI and C++/CX) @@ -160,7 +159,7 @@ The following list contains the type traits that are supported by the compiler. Returns **`true`** if the type has a trivial, compiler-generated destructor. - ``` cpp + ```cpp // has_trivial_destructor.cpp #include struct S {}; diff --git a/docs/mfc/reference/buffercommand-enumeration.md b/docs/mfc/reference/buffercommand-enumeration.md index 347d457d898..23d430be1aa 100644 --- a/docs/mfc/reference/buffercommand-enumeration.md +++ b/docs/mfc/reference/buffercommand-enumeration.md @@ -11,7 +11,7 @@ Used by [CMemFile::GetBufferPtr](cmemfile-class.md#getbufferptr) to determine wh ## Syntax -``` cpp +```cpp public enum BufferCommand { bufferRead, From 4f8564f0d93a308fd6c75fefcf1ee05ebf6d6980 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Mon, 24 Feb 2025 11:28:19 -0800 Subject: [PATCH 0179/2255] Learn Editor: Update compiler-errors-c2200-through-c2299.md --- .../compiler-errors-c2200-through-c2299.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-errors-c2200-through-c2299.md b/docs/error-messages/compiler-errors-1/compiler-errors-c2200-through-c2299.md index 8dd0d16314e..73e6b83618c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-errors-c2200-through-c2299.md +++ b/docs/error-messages/compiler-errors-1/compiler-errors-c2200-through-c2299.md @@ -35,7 +35,7 @@ The articles in this section of the documentation explain a subset of the error |[Compiler error C2217](compiler-error-c2217.md)|'*attribute1*' requires '*attribute2*'| |[Compiler error C2218](compiler-error-c2218.md)|'*calltype*' cannot be used with '/arch:IA32'| |[Compiler error C2219](compiler-error-c2219.md)|syntax error: type qualifier must be after '*'| -|[Compiler error C2220](compiler-error-c2220.md)|warning treated as error - no '*filetype*' file generated| +|[Compiler error C2220](compiler-error-c2220.md)|the following warning is treated as an error| |Compiler error C2221|Obsolete.| |[Compiler error C2222](compiler-error-c2222.md)|unexpected type '*type*': a base-class or member was expected| |[Compiler error C2223](compiler-error-c2223.md)|left of '->*identifier*' must point to struct/union| @@ -50,7 +50,7 @@ The articles in this section of the documentation explain a subset of the error |[Compiler error C2232](compiler-error-c2232.md)|'->*identifier*': left operand has 'class/struct/union' type, use '.'| |[Compiler error C2233](compiler-error-c2233.md)|'*identifier*': arrays of objects containing zero-size arrays are illegal| |[Compiler error C2234](compiler-error-c2234.md)|*identifier*': arrays of references are illegal| -|Compiler error C2235|Obsolete.| +|Compiler error C2235|mismatching target architecture for compiled module interface for '*architecture 1*' from '*architecture 2*'| |[Compiler error C2236](compiler-error-c2236.md)|unexpected token '*token*'. Did you forget a ';'?| |Compiler error C2237|multiple module declaration| |[Compiler error C2238](compiler-error-c2238.md)|unexpected token(s) preceding '*token*'| @@ -78,7 +78,7 @@ The articles in this section of the documentation explain a subset of the error |Compiler error C2260|'*specifier*': invalid InternalsVisibleToAttribute friend assembly specifier| |[Compiler error C2261](compiler-error-c2261.md)|'*string*': assembly reference is invalid and cannot be resolved| |[Compiler error C2262](compiler-error-c2262.md)|'*specifier*': InternalsVisibleTo declarations cannot have a version, culture, or processor architecture specified| -|Compiler error C2263|Obsolete.| +|Compiler error C2263|'*module name*': a translation unit cannot be imported into itself| |[Compiler error C2264](compiler-error-c2264.md)|'*function*': error in function definition or declaration; function not called| |Compiler error C2265|Obsolete.| |[Compiler error C2266](compiler-error-c2266.md)|'*identifier*': reference to a non-constant bounded array is illegal| @@ -90,10 +90,10 @@ The articles in this section of the documentation explain a subset of the error |[Compiler error C2272](compiler-error-c2272.md)|'*function*': modifiers not allowed on static member functions| |[Compiler error C2273](compiler-error-c2273.md)|'*type*': illegal as right side of '->' operator| |[Compiler error C2274](compiler-error-c2274.md)|'*type*': illegal as right side of '.' operator| -|[Compiler error C2275](compiler-error-c2275.md)|'*type*': illegal use of this type as an expression| +|[Compiler error C2275](compiler-error-c2275.md)|'*type*': expected an expression instead of a type| |[Compiler error C2276](compiler-error-c2276.md)|'*operator*': illegal operation on bound member function expression| |[Compiler error C2277](compiler-error-c2277.md)|'*function*': cannot take address of this member function| -|Compiler error C2278|Obsolete.| +|Compiler error C2278|'*token*': unexpected token. Format is '*__has_cpp_attribute*`( identifier )`'| |[Compiler error C2279](compiler-error-c2279.md)|exception specification cannot appear in a typedef declaration| |[Compiler error C2280](compiler-error-c2280.md)|'*class*::*function*': attempting to reference a deleted function| |Compiler error C2281|'*class*::*function*': a function can only be deleted on the first declaration| @@ -103,7 +103,7 @@ The articles in this section of the documentation explain a subset of the error |[Compiler error C2285](compiler-error-c2285.md)|pointers to members representation has already been determined - pragma ignored| |[Compiler error C2286](compiler-error-c2286.md)|pointers to members of '*identifier*' representation is already set to *inheritance* - declaration ignored| |[Compiler error C2287](compiler-error-c2287.md)|'*identifier*': inheritance representation: '*inheritiance*' is less general than the required '*inheritance*'| -|Compiler error C2288|Obsolete.| +|Compiler error C2288|preprocessing number '*number*' is not a valid integer or floating literal| |[Compiler error C2289](compiler-error-c2289.md)|same type qualifier used more than once| |[Compiler error C2290](compiler-error-c2290.md)|C++ 'asm' syntax ignored. Use __asm.| |Compiler error C2291|An anonymous namespace cannot be exported.| From 85ffce63421b08cc0782de369999eadb0c2008b1 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Mon, 24 Feb 2025 11:42:17 -0800 Subject: [PATCH 0180/2255] Learn Editor: Update compiler-errors-c2300-through-c2399.md --- .../compiler-errors-c2300-through-c2399.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-errors-c2300-through-c2399.md b/docs/error-messages/compiler-errors-1/compiler-errors-c2300-through-c2399.md index d64bb155bed..3abd7f9ea41 100644 --- a/docs/error-messages/compiler-errors-1/compiler-errors-c2300-through-c2399.md +++ b/docs/error-messages/compiler-errors-1/compiler-errors-c2300-through-c2399.md @@ -53,7 +53,7 @@ The articles in this section of the documentation explain a subset of the error |Compiler error C2335|'*identifier*': a type cannot be introduced in a function parameter list| |Compiler error C2336|'*type*': illegal type| |[Compiler error C2337](compiler-error-c2337.md)|'*attribute*': attribute not found| -|[Compiler error C2338](compiler-error-c2338.md)|*(error message from external provider)*| +|[Compiler error C2338](compiler-error-c2338.md)|static_assert failed: '*(error message from external provider)*'| |Compiler error C2339|'*identifier*': illegal type in embedded-IDL| |Compiler error C2340|'*identifier*': 'static' can only be used within a class definition| |[Compiler error C2341](compiler-error-c2341.md)|'*section*': segment must be defined using #pragma data_seg, code_seg or section prior to use| @@ -67,7 +67,7 @@ The articles in this section of the documentation explain a subset of the error |[Compiler error C2349](compiler-error-c2349.md)|'*function*' cannot be compiled as managed: '*explanation*'; use #pragma unmanaged| |[Compiler error C2350](compiler-error-c2350.md)|'*identifier*' is not a static member| |[Compiler error C2351](compiler-error-c2351.md)|obsolete C++ constructor initialization syntax| -|[Compiler error C2352](compiler-error-c2352.md)|'*identifier*': illegal call of non-static member function| +|[Compiler error C2352](compiler-error-c2352.md)|'*identifier*': a call of a non-static member function requires an object| |[Compiler error C2353](compiler-error-c2353.md)|exception specification is not allowed| |Compiler error C2354|Obsolete.| |[Compiler error C2355](compiler-error-c2355.md)|'this': can only be referenced inside non-static member functions or non-static data member initializers| @@ -96,7 +96,7 @@ The articles in this section of the documentation explain a subset of the error |[Compiler error C2378](compiler-error-c2378.md)|'*identifier*': redefinition; symbol cannot be overloaded with a typedef| |[Compiler error C2379](compiler-error-c2379.md)|formal parameter *number* has different type when promoted| |[Compiler error C2380](compiler-error-c2380.md)|type(s) preceding '*identifier*' (constructor with return type, or illegal redefinition of current class-name?)| -|[Compiler error C2381](compiler-error-c2381.md)|'*identifier*': redefinition; '__declspec(noreturn)' or '[[noreturn]]' differs| +|[Compiler error C2381](compiler-error-c2381.md)|'*identifier*': redefinition; '`noreturn`' differs| |[Compiler error C2382](compiler-error-c2382.md)|'*identifier*': redefinition; different exception specifications| |[Compiler error C2383](compiler-error-c2383.md)|'*identifier*': default-arguments are not allowed on this symbol| |[Compiler error C2384](compiler-error-c2384.md)|'*member*': cannot apply thread_local or __declspec(thread) to a member of a managed/WinRT class| From e8396cb1383108c32c19abd1acab9848a8546570 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Mon, 24 Feb 2025 11:55:41 -0800 Subject: [PATCH 0181/2255] Learn Editor: Update compiler-errors-c2400-through-c2499.md --- .../compiler-errors-1/compiler-errors-c2400-through-c2499.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-errors-c2400-through-c2499.md b/docs/error-messages/compiler-errors-1/compiler-errors-c2400-through-c2499.md index a7ffbaba5f1..5e9c92e0493 100644 --- a/docs/error-messages/compiler-errors-1/compiler-errors-c2400-through-c2499.md +++ b/docs/error-messages/compiler-errors-1/compiler-errors-c2400-through-c2499.md @@ -50,7 +50,7 @@ The articles in this section of the documentation explain a subset of the error |[Compiler error C2432](compiler-error-c2432.md)|illegal reference to 16-bit data in '*context*'| |[Compiler error C2433](compiler-error-c2433.md)|'*identifier*': '*modifier*' not permitted on data declarations| |[Compiler error C2434](compiler-error-c2434.md)|'*symbol*': a symbol declared with `__declspec(process)` cannot be dynamically initialized in `/clr:pure` mode| -|[Compiler error C2435](compiler-error-c2435.md)|'var': dynamic initialization requires managed CRT, cannot compile with `/clr:safe`| +|[Compiler error C2435](compiler-error-c2435.md)|'*var*': dynamic initialization requires managed CRT, cannot compile with `/clr:safe`| |[Compiler error C2436](compiler-error-c2436.md)|'*identifier*': member function or nested class in constructor initializer list| |[Compiler error C2437](compiler-error-c2437.md)|'*identifier*': has already been initialized| |[Compiler error C2438](compiler-error-c2438.md)|'*identifier*': cannot initialize static class data via constructor| @@ -60,11 +60,12 @@ The articles in this section of the documentation explain a subset of the error |Compiler error C2442|'*identifier*': nested-namespace-definition cannot be inline or have attributes| |[Compiler error C2443](compiler-error-c2443.md)|operand size conflict| |[Compiler error C2444](compiler-error-c2444.md)|'*identifier*': used ANSI prototype, found 'type', expected '{' or ';'| +|Compiler error C2445|result type of conditional expression is ambiguous: types '*type 1*' and '*type 2*' can be converted to multiple common types| |[Compiler error C2446](compiler-error-c2446.md)|'*operator*': no conversion from '*type_1*' to '*type_2*'| |[Compiler error C2447](compiler-error-c2447.md)|'{': missing function header (old-style formal list?)| |[Compiler error C2448](compiler-error-c2448.md)|'*identifier*': function-style initializer appears to be a function definition| |[Compiler error C2449](compiler-error-c2449.md)|found '{' at file scope (missing function header?)| -|[Compiler error C2450](compiler-error-c2450.md)|switch expression of type '*type*' is illegal| +|[Compiler error C2450](compiler-error-c2450.md)|a `switch` expression of type '*type*' is illegal| |[Compiler error C2451](compiler-error-c2451.md)|conditional expression of type '*type*' is illegal| |[Compiler error C2452](compiler-error-c2452.md)|'*type*': invalid source type for `safe_cast`| |Compiler error C2453|'*type*': invalid target type for safe_cast| From 6ec0265a1f3fed286da8ba3a283811ce202c91c5 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Mon, 24 Feb 2025 12:03:49 -0800 Subject: [PATCH 0182/2255] Learn Editor: Update compiler-errors-c2500-through-c2599.md --- .../compiler-errors-2/compiler-errors-c2500-through-c2599.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c2500-through-c2599.md b/docs/error-messages/compiler-errors-2/compiler-errors-c2500-through-c2599.md index e8f3ea5bb0c..e7f0eca9dad 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c2500-through-c2599.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c2500-through-c2599.md @@ -33,7 +33,7 @@ The articles in this section of the documentation explain a subset of the error |Compiler error C2515|'*identifier*': 'vtguard' can only be applied to class declarations or definitions| |[Compiler error C2516](compiler-error-C2516.md)|'*class*': is not a legal base class| |[Compiler error C2517](compiler-error-C2517.md)|'*identifier*': right of '::' is undefined| -|[Compiler error C2518](compiler-error-C2518.md)|keyword '*keyword*' illegal in base class list; ignored| +|[Compiler error C2518](compiler-error-C2518.md)|keyword '*keyword*' is invalid in a base class list; expected a `class` name| |Compiler error C2519|'*identifier*': WinRT attributes may only contain public fields| |Compiler error C2520|'*class*': no non-explicit constructor available for implicit conversion| |[Compiler error C2521](compiler-error-C2521.md)|a destructor/finalizer does not take any arguments| @@ -63,12 +63,13 @@ The articles in this section of the documentation explain a subset of the error |[Compiler error C2545](compiler-error-C2545.md)|'*operator*': unable to find overloaded operator| |Compiler error C2546|'*identifier*': when a type is defined in both a PIA and a no-PIA the PIA must be referenced first| |Compiler error C2547|'*identifier*': All parameters of a published method must be explicitly named on the declaration| -|[Compiler error C2548](compiler-error-C2548.md)|'*function*': missing default parameter for parameter *parameter*| +|[Compiler error C2548](compiler-error-C2548.md)|'*function*': missing default argument for parameter *parameter*| |[Compiler error C2549](compiler-error-C2549.md)|user-defined conversion cannot specify a return type| |[Compiler error C2550](compiler-error-C2550.md)|'*identifier*': constructor initializer lists are only allowed on constructor definitions| |[Compiler error C2551](compiler-error-C2551.md)|'void *' type needs explicit cast| |[Compiler error C2552](compiler-error-C2552.md)|'*identifier*': non-aggregates cannot be initialized with an initializer list| |[Compiler error C2553](compiler-error-C2553.md)|'*type* *derived_class*::*function*': overriding virtual function return type differs from '*type* *base_class*::*function*'| +|Compiler error C2554|'*variable*': 'constinit' only allowed on a variable declaration with static or thread storage duration| |[Compiler error C2555](compiler-error-C2555.md)|'*derived_class*::*function*': overriding virtual function return type differs and is not covariant from '*base_class*::*function*'| |[Compiler error C2556](compiler-error-C2556.md)|'*type1* *class*::*function*': overloaded function differs only by return type from '*type2* *class*::*function*'| |[Compiler error C2557](compiler-error-C2557.md)|'*identifier*': private and protected members cannot be initialized without a constructor| From 1e20b8a46d5f0e6da3bdaacd876b49587b564ee8 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Mon, 24 Feb 2025 12:18:54 -0800 Subject: [PATCH 0183/2255] Learn Editor: Update compiler-errors-c2600-through-c2699.md --- .../compiler-errors-c2600-through-c2699.md | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c2600-through-c2699.md b/docs/error-messages/compiler-errors-2/compiler-errors-c2600-through-c2699.md index bc35a9c19aa..b4876ccc6ab 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c2600-through-c2699.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c2600-through-c2699.md @@ -23,17 +23,17 @@ The articles in this section of the documentation explain a subset of the error |[Compiler error C2605](compiler-error-c2605.md)|'*identifier*': this method is reserved within a managed/WinRT class| |Compiler error C2606|'*class1*': cannot re-implement '*member*', as it is inherited from runtime base '*class2*'| |Compiler error C2607|static assertion failed| -|Compiler error C2608|Obsolete.| -|Compiler error C2609|Obsolete.| +|Compiler error C2608|invalid token '*token*' in macro parameter list| +|Compiler error C2609|missing ')' in macro parameter list| |Compiler error C2610|'*class*::*member*': is not a special member function which can be defaulted| |[Compiler error C2611](compiler-error-c2611.md)|'*token*': illegal following '~' (expected identifier)| |[Compiler error C2612](compiler-error-c2612.md)|trailing '*character*' illegal in base/member initializer list| |[Compiler error C2613](compiler-error-c2613.md)|trailing '*character*' illegal in base class list| |[Compiler error C2614](compiler-error-c2614.md)|'*class*': illegal member initialization: '*identifier*' is not a base or member| -|Compiler error C2615|Obsolete.| +|Compiler error C2615|'`offsetof`' cannot be applied to non-class type '*type*'| |[Compiler error C2616](compiler-error-c2616.md)|'*conversion*': cannot implicitly convert a non-lvalue '*type1*' to a '*type2*' that is not const| |[Compiler error C2617](compiler-error-c2617.md)|'*function*': inconsistent return statement| -|Compiler error C2618|Obsolete.| +|Compiler error C2618|illegal member designator in `offsetof`| |[Compiler error C2619](compiler-error-c2619.md)|'*identifier*': a static data member is not allowed in an anonymous struct/union| |Compiler error C2620|Obsolete.| |Compiler error C2621|Obsolete.| @@ -54,12 +54,12 @@ The articles in this section of the documentation explain a subset of the error |[Compiler error C2636](compiler-error-c2636.md)|'*identifier*': pointer to reference member is illegal| |[Compiler error C2637](compiler-error-c2637.md)|'*identifier*': cannot modify pointers to data members| |[Compiler error C2638](compiler-error-c2638.md)|'*identifier*': __based modifier illegal on pointer to member| -|Compiler error C2639|Obsolete.| +|Compiler error C2639|trailing return type '*type*' of deduction guide should be a specialization of '*class template*'| |[Compiler error C2640](compiler-error-c2640.md)|'*identifier*': __based modifier illegal on reference| -|Compiler error C2641|Obsolete.| -|Compiler error C2642|Obsolete.| -|Compiler error C2643|Obsolete.| -|Compiler error C2644|Obsolete.| +|Compiler error C2641|cannot deduce template arguments for '*template name*'| +|Compiler error C2642|two deduction guide declarations for the same class template cannot have equivalent parameter list and template head| +|Compiler error C2643|deduction guide should be declared in the same scope as the corresponding class template '*template name*'| +|Compiler error C2644|deduction guide should have the same access as the corresponding class template '*template name*'| |[Compiler error C2645](compiler-error-c2645.md)|no qualified name for pointer to member (found ':: *')| |[Compiler error C2646](compiler-error-c2646.md)|an anonymous struct/union at global or namespace scope must be declared static| |[Compiler error C2647](compiler-error-c2647.md)|'*operator*': cannot dereference a '*type1*' on a '*type2*'| @@ -78,11 +78,11 @@ The articles in this section of the documentation explain a subset of the error |[Compiler error C2660](compiler-error-c2660.md)|'*function*': function does not take *number* arguments| |[Compiler error C2661](compiler-error-c2661.md)|'*function*': no overloaded function takes *number* arguments| |[Compiler error C2662](compiler-error-c2662.md)|'*function*': cannot convert 'this' pointer from '*type1*' to '*type2*'| -|[Compiler error C2663](compiler-error-c2663.md)|'*function*': *number* overloads have no legal conversion for 'this' pointer| +|[Compiler error C2663](compiler-error-c2663.md)|'*function*': no overloaded function has valid conversion for '`this`' pointer| |[Compiler error C2664](compiler-error-c2664.md)|'*function*': cannot convert argument *number* from '*type1*' to '*type2*'| -|[Compiler error C2665](compiler-error-c2665.md)|'*function*': none of the *number* overloads could convert all the argument types| -|[Compiler error C2666](compiler-error-c2666.md)|'*function*': *number* overloads have similar conversions| -|[Compiler error C2667](compiler-error-c2667.md)|'*function*': none of *number* overloads have a best conversion| +|[Compiler error C2665](compiler-error-c2665.md)|'*function*': no overloaded function could convert all the argument types| +|[Compiler error C2666](compiler-error-c2666.md)|'*function*': overloaded functions have similar conversions| +|[Compiler error C2667](compiler-error-c2667.md)|'*function*': no overloaded function has a best conversion| |[Compiler error C2668](compiler-error-c2668.md)|'*function*': ambiguous call to overloaded function| |[Compiler error C2669](compiler-error-c2669.md)|member function not allowed in anonymous union| |[Compiler error C2670](compiler-error-c2670.md)|'*function*': the function template cannot convert parameter *number* from type '*type*'| From 5f070364a570b37e4133f78ebb0a45557aab9d53 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Mon, 24 Feb 2025 12:28:11 -0800 Subject: [PATCH 0184/2255] Learn Editor: Update compiler-errors-c2700-through-c2799.md --- .../compiler-errors-c2700-through-c2799.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c2700-through-c2799.md b/docs/error-messages/compiler-errors-2/compiler-errors-c2700-through-c2799.md index b373634b2c6..1a597951d4d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c2700-through-c2799.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c2700-through-c2799.md @@ -48,7 +48,7 @@ The articles in this section of the documentation explain a subset of the error |[Compiler error C2730](compiler-error-c2730.md)|'*class*': cannot be a base class of itself| |[Compiler error C2731](compiler-error-c2731.md)|'*function*': function cannot be overloaded| |[Compiler error C2732](compiler-error-c2732.md)|linkage specification contradicts earlier specification for '*function*'| -|[Compiler error C2733](compiler-error-c2733.md)|'*function*': second C linkage of overloaded function not allowed| +|[Compiler error C2733](compiler-error-c2733.md)|'*function*': you cannot overload a function with '`extern "C"`' linkage| |[Compiler error C2734](compiler-error-c2734.md)|'*identifier*': 'const' object must be initialized if not 'extern'| |[Compiler error C2735](compiler-error-c2735.md)|'*keyword*' keyword is not permitted in formal parameter type specifier| |[Compiler error C2736](compiler-error-c2736.md)|'*keyword*' keyword is not permitted in cast| @@ -80,7 +80,7 @@ The articles in this section of the documentation explain a subset of the error |[Compiler error C2762](compiler-error-c2762.md)|'*template*': invalid expression as a template argument for '*parameter*'| |Compiler error C2763|'*template*': invalid use of a string literal as a template argument for '*parameter*'| |[Compiler error C2764](compiler-error-c2764.md)|'*parameter*': template parameter not used or deducible in partial specialization '*specialization*'| -|[Compiler error C2765](compiler-error-c2765.md)|'*function*': an explicit specialization of a function template cannot have any default arguments| +|[Compiler error C2765](compiler-error-c2765.md)|'*function*': an explicit specialization or instantiation of a function template cannot have any default arguments| |[Compiler error C2766](compiler-error-c2766.md)|explicit specialization; '*specialization*' has already been defined| |[Compiler error C2767](compiler-error-c2767.md)|managed/WinRT array dimension mismatch: expected *number* argument(s) - *number* provided| |[Compiler error C2768](compiler-error-c2768.md)|'*function*': illegal use of explicit template arguments| @@ -112,7 +112,7 @@ The articles in this section of the documentation explain a subset of the error |[Compiler error C2794](compiler-error-c2794.md)|'*identifier*': is not a member of any direct or indirect base class of '*class*'| |[Compiler error C2795](compiler-error-c2795.md)|'super::*identifier*' is not a member function| |Compiler error C2796|'ref new' may only be used to create an instance of a WinRT type| -|[Compiler error C2797](compiler-error-c2797.md)|(Obsolete) '*identifier*': list initialization inside member initializer list or non-static data member initializer is not implemented| +|[Compiler error C2797](compiler-error-c2797.md)|'*identifier*': list initialization inside member initializer list or non-static data member initializer is not implemented| |[Compiler error C2798](compiler-error-c2798.md)|'super::*identifier*' is ambiguous| |Compiler error C2799|'*identifier*': an object of const-qualified class type without a user-provided default constructor must be initialized| From a88efe203804eb1a05546da6f6bbc5edd660f9cd Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Mon, 24 Feb 2025 13:55:30 -0800 Subject: [PATCH 0185/2255] Learn Editor: Update compiler-errors-c2800-through-c2899.md --- .../compiler-errors-2/compiler-errors-c2800-through-c2899.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c2800-through-c2899.md b/docs/error-messages/compiler-errors-2/compiler-errors-c2800-through-c2899.md index 79059f69f5e..6ad3bb045bf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c2800-through-c2899.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c2800-through-c2899.md @@ -107,7 +107,7 @@ The articles in this section of the documentation explain a subset of the error | Compiler error C2889 | '*class*': a managed/WinRT class type cannot be a virtual base class | | [Compiler error C2890](compiler-error-c2890.md) | '*class*': a ref class can only have one non-interface base class | | [Compiler error C2891](compiler-error-c2891.md) | '*parameter*': cannot take the address of a template parameter | -| [Compiler error C2892](compiler-error-c2892.md) | local class shall not have member templates | +| [Compiler error C2892](compiler-error-c2892.md) | a template cannot be a member of a local class | | [Compiler error C2893](compiler-error-c2893.md) | Failed to specialize function template '*template*' | | [Compiler error C2894](compiler-error-c2894.md) | templates cannot be declared to have 'C' linkage | | Compiler error C2895 | '*declaration*': cannot explicitly instantiate a function template that has been declared with dllimport | From 4f6b00710035715f3043a953896c103d71958969 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Mon, 24 Feb 2025 13:59:51 -0800 Subject: [PATCH 0186/2255] Learn Editor: Update compiler-errors-c2900-through-c3499.md --- .../compiler-errors-2/compiler-errors-c2900-through-c3499.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c2900-through-c3499.md b/docs/error-messages/compiler-errors-2/compiler-errors-c2900-through-c3499.md index b637df086fe..2b2fb659592 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c2900-through-c3499.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c2900-through-c3499.md @@ -98,10 +98,10 @@ The articles in this section of the documentation explain a subset of the error | Compiler error C2980 | C++ exception handling is not supported with /kernel | | Compiler error C2981 | the dynamic form of '*keyword*' is not supported with /kernel | | Compiler error C2982 | '*declaration*': different __declspec(code_seg(...)) used: was '*identifier1*' now '*identifier2*' | -| Compiler error C2983 | '*declaration*': all declarations must have an identical __declspec(code_seg(...)) | +| Compiler error C2983 | '*name*': a definition must have the same `__declspec(code_seg(...))` as the prior declaration | | Compiler error C2984 | Obsolete. | | Compiler error C2985 | '*argument*': the argument to __declspec(code_seg(...)) must be a text section | -| Compiler error C2986 | '*identifier*': __declspec(code_seg(...)) can only be applied to a class or a function | +| Compiler error C2986 | '`__declspec(code_seg(...))`' can only be applied to a class or a function | | Compiler error C2987 | a declaration cannot have both __declspec(code_seg('*identifier*')) and __declspec(code_seg('*value*')) | | [Compiler error C2988](compiler-error-c2988.md) | unrecognizable template declaration/definition | | [Compiler error C2989](compiler-error-c2989.md) | '*class*': class template/generic has already been declared as a non-class template/generic | From 0ade68db708ba8cd73a0f3d92f28fea690448069 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Mon, 24 Feb 2025 14:08:04 -0800 Subject: [PATCH 0187/2255] Learn Editor: Update compiler-errors-c3000-through-c3099.md --- .../compiler-errors-c3000-through-c3099.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c3000-through-c3099.md b/docs/error-messages/compiler-errors-2/compiler-errors-c3000-through-c3099.md index 49844105dce..bcdc2b953e2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c3000-through-c3099.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c3000-through-c3099.md @@ -63,11 +63,11 @@ The articles in this section of the documentation explain a subset of the error | [Compiler error C3045](compiler-error-c3045.md) | Expected a compound statement following OpenMP 'sections' directive. Missing '{' | | [Compiler error C3046](compiler-error-c3046.md) | Missing structured block in an OpenMP '#pragma omp sections' region | | [Compiler error C3047](compiler-error-c3047.md) | Structured block in an OpenMP 'sections' region must be preceded by '#pragma omp section' (Obsolete in Visual Studio 2022.) | -| [Compiler error C3048](compiler-error-c3048.md) | Expression following '#pragma omp atomic' has improper form | +| [Compiler error C3048](compiler-error-c3048.md) | '`#pragma omp atomic`*statement*': expression or block-statement following pragma does not conform to the OpenMP specification | | [Compiler error C3049](compiler-error-c3049.md) | '*argument*': invalid argument in OpenMP 'default' clause | | [Compiler error C3050](compiler-error-c3050.md) | '*class*': a ref class cannot inherit from '*identifier*' | | Compiler error C3051 | Obsolete. | -| [Compiler error C3052](compiler-error-c3052.md) | '*identifier*': variable doesn't appear in a data-sharing clause under a default(none) clause | +| [Compiler error C3052](compiler-error-c3052.md) | '*identifier*': variable reference occurs under a `default(none)` clause and must have explicitly specified data sharing attributes | | [Compiler error C3053](compiler-error-c3053.md) | '*identifier*': 'threadprivate' is only valid for global or static data items | | [Compiler error C3054](compiler-error-c3054.md) | '#pragma omp parallel' is currently not supported in a generic class or function (Obsolete in Visual Studio 2022.) | | [Compiler error C3055](compiler-error-c3055.md) | '*identifier*': symbol cannot be referenced before it is used in 'threadprivate' directive | @@ -80,8 +80,8 @@ The articles in this section of the documentation explain a subset of the error | [Compiler error C3062](compiler-error-c3062.md) | '*identifier*': enumerator requires value since the underlying type is '*type*' | | [Compiler error C3063](compiler-error-c3063.md) | operator '*operator*': all operands must have the same enumeration type | | Compiler error C3064 | '*identifier*': must be a simple type or resolve to one | -| [Compiler error C3065](compiler-error-c3065.md) | property declaration at non-class scope is not allowed | -| [Compiler error C3066](compiler-error-c3066.md) | there are multiple ways that an object of this type can be called with these arguments | +| [Compiler error C3065](compiler-error-c3065.md) | '`__declspec(`*specifier*`)`' at non-class scope is not allowed | +| [Compiler error C3066](compiler-error-c3066.md) | call to an object of this type is ambiguous | | Compiler error C3067 | an initializer list cannot be used with the built-in operator[] | | [Compiler error C3068](compiler-error-c3068.md) | '*identifier*': a 'naked' function cannot contain objects that would require unwinding if a C++ exception occurred | | [Compiler error C3069](compiler-error-c3069.md) | operator '*operator*': not allowed for enumeration type | @@ -93,7 +93,7 @@ The articles in this section of the documentation explain a subset of the error | [Compiler error C3075](compiler-error-c3075.md) | '*identifier*': you cannot embed an instance of a reference type, '*type*', in a value-type | | [Compiler error C3076](compiler-error-c3076.md) | '*identifier*': you cannot embed an instance of a reference type, '*type*', in a native type | | [Compiler error C3077](compiler-error-c3077.md) | '*identifier*': a finalizer can only be a member of a reference type | -| Compiler error C3078 | array size must be specified in new expressions | +| Compiler error C3078 | array size must be specified in new expressions without an initializer | | Compiler error C3079 | an initializer list cannot be used as the right operand of this assignment operator | | [Compiler error C3080](compiler-error-c3080.md) | '*finalizer*': a finalizer cannot have a storage-class-specifier | | Compiler error C3081 | Obsolete. | From 7d530d5a9e5d3a197231fd9e311bfe30ea3aead8 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Mon, 24 Feb 2025 14:09:57 -0800 Subject: [PATCH 0188/2255] Learn Editor: Update compiler-errors-c3100-through-c3199.md --- .../compiler-errors-2/compiler-errors-c3100-through-c3199.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c3100-through-c3199.md b/docs/error-messages/compiler-errors-2/compiler-errors-c3100-through-c3199.md index cc67e3b7272..338e4eceb9f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c3100-through-c3199.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c3100-through-c3199.md @@ -81,7 +81,7 @@ The articles in this section of the documentation explain a subset of the error | [Compiler error C3163](compiler-error-c3163.md) | '*class*': attributes inconsistent with previous declaration | | Compiler error C3164 | Obsolete. | | Compiler error C3165 | '*value*': cannot convert to an integral or floating point value | -| [Compiler error C3166](compiler-error-c3166.md) | Obsolete. '*type*': a data member of a managed/WinRT class cannot have type '*pointer_type* to interior *managed_pointer_type*' | +| [Compiler error C3166](compiler-error-c3166.md) | '*type*': a data member of a managed/WinRT class cannot have type '*pointer_type* to interior *managed_pointer_type*' | | [Compiler error C3167](compiler-error-c3167.md) | Unable to initialize .NET Framework: make sure it is installed | | [Compiler error C3168](compiler-error-c3168.md) | '*type*': illegal underlying type for enum | | Compiler error C3169 | '*type*': cannot deduce type for 'auto' from '*type*' | From 8c9489e3d4f46b0cc08788466aedbdf200301017 Mon Sep 17 00:00:00 2001 From: anporumb Date: Mon, 24 Feb 2025 15:01:23 -0800 Subject: [PATCH 0189/2255] Update guard-enable-control-flow-guard.md PR clarifies the options that need to be passed to both the linker and compiler in order to enable/disable CFG. --- docs/build/reference/guard-enable-control-flow-guard.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/build/reference/guard-enable-control-flow-guard.md b/docs/build/reference/guard-enable-control-flow-guard.md index 91144792528..4d13d42d992 100644 --- a/docs/build/reference/guard-enable-control-flow-guard.md +++ b/docs/build/reference/guard-enable-control-flow-guard.md @@ -24,7 +24,9 @@ When the **`/guard:cf`** Control Flow Guard (CFG) option is specified, the compi A common attack on software takes advantage of bugs in handling extreme or unexpected inputs. Carefully crafted input to the application may overwrite a location that contains a pointer to executable code. This technique can be used to redirect control flow to code controlled by the attacker. The CFG runtime checks don't fix the data corruption bugs in your executable. They instead make it more difficult for an attacker to use them to execute arbitrary code. CFG is a mitigation tool that prevents calls to locations other than function entry points in your code. It's similar to how Data Execution Prevention (DEP), [/GS](gs-buffer-security-check.md) stack checks, and [`/DYNAMICBASE`](dynamicbase-use-address-space-layout-randomization.md) and [/HIGHENTROPYVA](highentropyva-support-64-bit-aslr.md) address space layout randomization (ASLR) lower the chances that your code becomes an exploit vector. -The **`/guard:cf`** option must be passed to both the compiler and linker to build code that uses the CFG exploit mitigation technique. If your binary is built by using a single `cl` command, the compiler passes the option to the linker. If you compile and link separately, the option must be set on both the compiler and linker commands. The /DYNAMICBASE linker option is also required. To verify that your binary has CFG data, use the `dumpbin /headers /loadconfig` command. CFG-enabled binaries have `Guard` in the list of EXE or DLL characteristics, and Guard Flags include `CF Instrumented` and `FID table present`. +To use CFG exploit mitigation technique the **`/guard:cf`** option must be passed to the compiler and correspondigly the option **`/GUARD:CF`** must be passed to the linker. To disable CFG exploit mitigation technique the **`/guard:cf-`** option must be passed to the compiler and correspondingly the option **`/GUARD:NO`** must be passed to the linker. + +If your binary is built by using a single `cl` command, the compiler passes the option to the linker. If you compile and link separately, the option must be set on both the compiler and linker commands. The /DYNAMICBASE linker option is also required. To verify that your binary has CFG data, use the `dumpbin /headers /loadconfig` command. CFG-enabled binaries have `Guard` in the list of EXE or DLL characteristics, and Guard Flags include `CF Instrumented` and `FID table present`. The **`/guard:cf`** option is incompatible with [`/ZI`](z7-zi-zi-debug-information-format.md) (Edit and Continue debug information) or [`/clr`](clr-common-language-runtime-compilation.md) (Common Language Runtime Compilation). From 8a08963b6457f86805d57c0a698dc1ea88dc5eda Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Mon, 24 Feb 2025 15:13:10 -0800 Subject: [PATCH 0190/2255] Learn Editor: Update compiler-errors-c3200-through-c3299.md --- .../compiler-errors-c3200-through-c3299.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c3200-through-c3299.md b/docs/error-messages/compiler-errors-2/compiler-errors-c3200-through-c3299.md index 98f2ab9a34d..87483c7cfe9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c3200-through-c3299.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c3200-through-c3299.md @@ -63,7 +63,7 @@ The articles in this section of the documentation explain a subset of the error | Compiler error C3245 | '*function*': use of a variable template requires template argument list | | [Compiler error C3246](compiler-error-c3246.md) | '*class*': cannot inherit from '*base_class*' as it has been declared as '*inheritance*' | | [Compiler error C3247](compiler-error-c3247.md) | '*coclass*': a coclass cannot inherit from another coclass '*base_class*' | -| [Compiler error C3248](compiler-error-c3248.md) | Obsolete. '*function*': function declared as 'sealed' cannot be overridden by '*function*' | +| [Compiler error C3248](compiler-error-c3248.md) | '*function*': function declared as '`sealed`' cannot be overridden by '*function*' | | Compiler error C3249 | illegal statement or sub-expression for '`constexpr`' function (Obsolete in Visual Studio 2022.) | | Compiler error C3250 | '*declaration*': declaration is not allowed in '`constexpr`' function body (Obsolete in Visual Studio 2022.) | | [Compiler error C3251](compiler-error-c3251.md) | cannot invoke base class method on a value type instance (Obsolete in Visual Studio 2022.) | @@ -76,7 +76,7 @@ The articles in this section of the documentation explain a subset of the error | Compiler error C3258 | Obsolete. | | Compiler error C3259 | '`constexpr`' functions can only have one `return` statement (Obsolete in Visual Studio 2022.) | | Compiler error C3260 | '*token*': skipping unexpected token(s) before lambda body | -| Compiler error C3261 | a function returning a managed/WinRT array must have array brackets at the end of the declaration: '*identifier*(...) \[]' | +| Compiler error C3261 | a function returning a managed/WinRT array must have array brackets at the end of the declaration: '*identifier*(...) []' | | [Compiler error C3262](compiler-error-c3262.md) | invalid array indexing: *number* dimension(s) specified for *number*-dimensional '*type*' | | Compiler error C3263 | Obsolete. | | [Compiler error C3264](compiler-error-c3264.md) | '*identifier*': a class-constructor cannot have a return type | @@ -101,7 +101,7 @@ The articles in this section of the documentation explain a subset of the error | [Compiler error C3283](compiler-error-c3283.md) | '*interface*': an interface cannot have an instance constructor | | [Compiler error C3284](compiler-error-c3284.md) | the constraints for generic parameter '*parameter*' of function '*declarator*' must match the constraints for generic parameter '*parameter*' of function '*declarator*' | | [Compiler error C3285](compiler-error-c3285.md) | for each statement cannot operate on variables of type '*type*' | -| [Compiler error C3286](compiler-error-c3286.md) | '*specifier*': an iteration variable cannot have any storage-class specifiers | +| [Compiler error C3286](compiler-error-c3286.md) | A for-range-declaration cannot have a storage class other than '`constexpr`' | | [Compiler error C3287](compiler-error-c3287.md) | the type '*type*' (return type of `GetEnumerator`) must have a suitable public `MoveNext` member function and public `Current` property | | [Compiler error C3288](compiler-error-c3288.md) | '*type*': illegal dereference of a handle type | | [Compiler error C3289](compiler-error-c3289.md) | '*identifier*': a trivial property cannot be indexed | From 25aa1d2b86c2a17fcc2d95860969d3bba0a1d8a8 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Mon, 24 Feb 2025 15:20:32 -0800 Subject: [PATCH 0191/2255] Learn Editor: Update compiler-errors-c3400-through-c3499.md --- .../compiler-errors-c3400-through-c3499.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c3400-through-c3499.md b/docs/error-messages/compiler-errors-2/compiler-errors-c3400-through-c3499.md index 0df258c1f62..688a5b80ca1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c3400-through-c3499.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c3400-through-c3499.md @@ -43,7 +43,7 @@ The articles in this section of the documentation explain a subset of the error | Compiler error C3425 | cannot throw pointer to object of incomplete type '*type*' | | Compiler error C3426 | cannot throw object of incomplete type '*type*' | | Compiler error C3427 | '*context*': '*keyword*' cannot be used with layout_version(*number*) | -| Compiler error C3428 | '*context*': '*keyword*' can only be applied to class declarations or definitions | +| Compiler error C3428 | '`__declspec(`*keyword*`)`' can only be applied to class declarations or definitions | | Compiler error C3429 | '*context*': '*keyword*' cannot be applied to a union | | Compiler error C3430 | a scoped enumeration must have a name | | Compiler error C3431 | '*identifier*': *type1* cannot be redeclared as *type2* | @@ -92,8 +92,8 @@ The articles in this section of the documentation explain a subset of the error | Compiler error C3474 | could not open output file '*filename*' | | Compiler error C3475 | syntax error in input file '*filename*' | | Compiler error C3476 | could not open file '*filename*' for input | -| Compiler error C3477 | a lambda cannot appear in an unevaluated context | -| Compiler error C3478 | '*identifier*': an array cannot be captured by copy | +| Compiler error C3477 | a lambda can only appear in an unevaluated context with '*C++ version*' or later | +| Compiler error C3478 | '*identifier*': an array of unknown bounds cannot be captured by copy | | Compiler error C3479 | SAL annotations on lambdas are not supported | | [Compiler error C3480](compiler-error-c3480.md) | '*variable*': a lambda capture variable must be from an enclosing function scope | | [Compiler error C3481](compiler-error-c3481.md) | '*identifier*': lambda capture variable not found | @@ -103,16 +103,16 @@ The articles in this section of the documentation explain a subset of the error | [Compiler error C3485](compiler-error-c3485.md) | a lambda definition cannot have any cv-qualifiers (Obsolete in Visual Studio 2022.) | | Compiler error C3486 | a parameter for a lambda cannot have a default argument (Obsolete in Visual Studio 2022.) | | [Compiler error C3487](compiler-error-c3487.md) | '*type*': all return expressions must deduce to the same type: previously it was '*type*' | -| [Compiler error C3488](compiler-error-c3488.md) | '&*identifier*' is not allowed when the default capture mode is by-reference | -| [Compiler error C3489](compiler-error-c3489.md) | '&*identifier*' is required when the default capture mode is by copy | +| [Compiler error C3488](compiler-error-c3488.md) | '`&`*identifier*' cannot be explicitly captured when the default capture mode is by reference (`&`) | +| [Compiler error C3489](compiler-error-c3489.md) | '`&`*identifier*' is required when the default capture mode is by copy (`=`) | | [Compiler error C3490](compiler-error-c3490.md) | '*identifier*' cannot be modified because it is being accessed through a const object | | [Compiler error C3491](compiler-error-c3491.md) | '*identifier*': a by copy capture cannot be modified in a non-mutable lambda | | [Compiler error C3492](compiler-error-c3492.md) | '*identifier*': you cannot capture a member of an anonymous union | | [Compiler error C3493](compiler-error-c3493.md) | '*identifier*' cannot be implicitly captured because no default capture mode has been specified | | Compiler error C3494 | 'this' cannot be explicitly captured because an enclosing capture mode does not allow it | -| [Compiler error C3495](compiler-error-c3495.md) | '*identifier*': identifier in capture must be a variable with automatic storage duration declared in the reaching scope of the lambda | -| [Compiler error C3496](compiler-error-c3496.md) | 'this' is always captured by value: '&' ignored | -| Compiler error C3497 | you cannot construct an instance of a lambda | +| [Compiler error C3495](compiler-error-c3495.md) | '*identifier*': a simple capture must be a variable with automatic storage duration declared in the reaching scope of the lambda | +| [Compiler error C3496](compiler-error-c3496.md) | '`this`' is always captured by copy: '`&`' ignored | +| Compiler error C3497 | cannot construct an instance of this lambda | | [Compiler error C3498](compiler-error-c3498.md) | '*identifier*': you cannot capture a variable that has a managed/WinRT type | | [Compiler error C3499](compiler-error-c3499.md) | a lambda that has been specified to have a void return type cannot return a value | From 1c01727da7fe7661b29ed41ae84cb5ce39cd9c07 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 24 Feb 2025 15:27:16 -0800 Subject: [PATCH 0192/2255] Update Control Flow Guard documentation --- .../reference/guard-enable-control-flow-guard.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/build/reference/guard-enable-control-flow-guard.md b/docs/build/reference/guard-enable-control-flow-guard.md index 4d13d42d992..61a24b9f5aa 100644 --- a/docs/build/reference/guard-enable-control-flow-guard.md +++ b/docs/build/reference/guard-enable-control-flow-guard.md @@ -1,9 +1,8 @@ --- description: "Learn more about: /guard (Enable Control Flow Guard)" title: "/guard (Enable Control Flow Guard)" -ms.date: 09/19/2022 +ms.date: 2/24/2025 f1_keywords: ["/guard", "VC.Project.VCCLCompilerTool.ControlFlowGuard"] -ms.assetid: be495323-f59f-4cf3-a6b6-8ee69e6a19dd --- # `/guard` (Enable Control Flow Guard) @@ -16,7 +15,7 @@ Enable compiler generation of Control Flow Guard security checks. ## Remarks -The **`/guard:cf`** option causes the compiler to analyze control flow for indirect call targets at compile time, and then to insert code to verify the targets at runtime. By default, **`/guard:cf`** is off and must be explicitly enabled. To explicitly disable this option, use **`/guard:cf-`**. +The **`/guard:cf`** option causes the compiler to analyze control flow for indirect call targets at compile time, and inserts code at runtime to verify the targets. By default, **`/guard:cf`** is off and must be explicitly enabled. To explicitly disable this option, use **`/guard:cf-`**. **Visual Studio 2017 and later**: This option adds guards for **`switch`** statements that generate jump tables. @@ -24,9 +23,13 @@ When the **`/guard:cf`** Control Flow Guard (CFG) option is specified, the compi A common attack on software takes advantage of bugs in handling extreme or unexpected inputs. Carefully crafted input to the application may overwrite a location that contains a pointer to executable code. This technique can be used to redirect control flow to code controlled by the attacker. The CFG runtime checks don't fix the data corruption bugs in your executable. They instead make it more difficult for an attacker to use them to execute arbitrary code. CFG is a mitigation tool that prevents calls to locations other than function entry points in your code. It's similar to how Data Execution Prevention (DEP), [/GS](gs-buffer-security-check.md) stack checks, and [`/DYNAMICBASE`](dynamicbase-use-address-space-layout-randomization.md) and [/HIGHENTROPYVA](highentropyva-support-64-bit-aslr.md) address space layout randomization (ASLR) lower the chances that your code becomes an exploit vector. -To use CFG exploit mitigation technique the **`/guard:cf`** option must be passed to the compiler and correspondigly the option **`/GUARD:CF`** must be passed to the linker. To disable CFG exploit mitigation technique the **`/guard:cf-`** option must be passed to the compiler and correspondingly the option **`/GUARD:NO`** must be passed to the linker. +To use the CFG exploit mitigation technique, pass **`/guard:cf`** to the compiler and **`/GUARD:CF`** to the linker. -If your binary is built by using a single `cl` command, the compiler passes the option to the linker. If you compile and link separately, the option must be set on both the compiler and linker commands. The /DYNAMICBASE linker option is also required. To verify that your binary has CFG data, use the `dumpbin /headers /loadconfig` command. CFG-enabled binaries have `Guard` in the list of EXE or DLL characteristics, and Guard Flags include `CF Instrumented` and `FID table present`. +To disable the CFG exploit mitigation technique, pass **`/guard:cf-`** to the compiler **`/GUARD:NO`** to the linker. + +If you build using a single `cl` command, the compiler passes the option to the linker. If you compile and link separately, set the option for both the compiler and linker commands. The `/DYNAMICBASE` linker option is also required. + +To verify that your binary has CFG data, use the `dumpbin /headers /loadconfig` command. CFG-enabled binaries have `Guard` in the list of EXE or DLL characteristics, and Guard Flags include `CF Instrumented` and `FID table present`. The **`/guard:cf`** option is incompatible with [`/ZI`](z7-zi-zi-debug-information-format.md) (Edit and Continue debug information) or [`/clr`](clr-common-language-runtime-compilation.md) (Common Language Runtime Compilation). @@ -35,11 +38,8 @@ Code compiled by using **`/guard:cf`** can be linked to libraries and object fil ### To set this compiler option in the Visual Studio development environment 1. Open the **Property Pages** dialog box for the project. For more information, see [Set compiler and build properties](../working-with-project-properties.md). - 1. Select the **Configuration Properties** > **C/C++** > **Code Generation** property page. - 1. Select the **Control Flow Guard** property. - 1. In the dropdown control, choose **Yes** to enable Control Flow Guard, or **No** to disable it. ## See also From 190335991bf23990f6d6e4245b66c62ab64780c1 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Mon, 24 Feb 2025 15:30:17 -0800 Subject: [PATCH 0193/2255] Learn Editor: Update compiler-errors-c3300-through-c3399.md --- .../compiler-errors-2/compiler-errors-c3300-through-c3399.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c3300-through-c3399.md b/docs/error-messages/compiler-errors-2/compiler-errors-c3300-through-c3399.md index fa4967f5009..b5eee7e9d1b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c3300-through-c3399.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c3300-through-c3399.md @@ -54,7 +54,7 @@ The articles in this section of the documentation explain a subset of the error | Compiler error C3336 | This operation must be performed at class scope | | Compiler error C3337 | '*identifier*': defaultvtable must be an event source for a coclass '*class*' | | Compiler error C3338 | '*identifier*': There can be at most one default interface that is also an event source for a coclass '*class*' | -| Compiler error C3339 | template parameter requires either 'class' or 'typename' after the parameter list | +| Compiler error C3339 | `template` `template` parameter requires either '`class`' or '`typename`' after the parameter list | | [Compiler error C3340](compiler-error-c3340.md) | '*identifier*': interface cannot be both 'restricted' and 'default' in coclass '*class*' | | Compiler error C3341 | '*interface*': a defaultvtable interface must be either 'dual' or 'custom' | | [Compiler error C3342](compiler-error-c3342.md) | '*identifier*': ambiguous attribute | From 6cb2fc3b0532e47eaeedbff242069840be57aad7 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Mon, 24 Feb 2025 15:40:11 -0800 Subject: [PATCH 0194/2255] Learn Editor: Update compiler-errors-c3500-through-c3999.md --- .../compiler-errors-c3500-through-c3999.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c3500-through-c3999.md b/docs/error-messages/compiler-errors-2/compiler-errors-c3500-through-c3999.md index 7b016501226..a177eb0449c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c3500-through-c3999.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c3500-through-c3999.md @@ -105,7 +105,7 @@ The articles in this section explain a subset of the error messages generated by |Compiler error C3587|dynamic_cast is unsupported in amp restricted code| |Compiler error C3588|casting from '*type1*' to '*type2*' is unsupported in amp restricted code| |Compiler error C3589|'*string*': unsupported usage of string literals in amp restricted code| -|Compiler error C3590|'*token*': by-reference capture or 'this' capture is unsupported if the lambda is amp restricted| +|Compiler error C3590|capture of '*value*' is unsupported if the lambda is amp restricted| |Compiler error C3591|typeid operator is unsupported in amp restricted code| |Compiler error C3592|Inline native assembly ('__asm') is unsupported in amp restricted code| |Compiler error C3593|'goto' is unsupported in amp restricted code| @@ -263,7 +263,7 @@ The articles in this section explain a subset of the error messages generated by |[Compiler error C3747](compiler-error-c3747.md)|missing default template/generic parameter: parameter *number*| |[Compiler error C3748](compiler-error-c3748.md)|'*interface*': unmanaged interfaces may not fire events| |[Compiler error C3749](compiler-error-c3749.md)|'*attribute*': a custom attribute may not be used inside a function| -|Compiler error C3750|'*token*': unexpected token in attribute list| +|Compiler error C3750|'*token*': unexpected token in attribute specifier| |Compiler error C3751|'*identifier*': unexpected identifier in attribute list| |[Compiler error C3752](compiler-error-c3752.md)|'*attribute*': cannot classify attribute; '*keyword*' should not be used in this context| |[Compiler error C3753](compiler-error-c3753.md)|a generic property is not allowed| @@ -286,7 +286,7 @@ The articles in this section explain a subset of the error messages generated by |Compiler error C3770|'*type*': is not a valid base class| |[Compiler error C3771](compiler-error-c3771.md)|'*identifier*': friend declaration cannot be found in the nearest namespace scope| |[Compiler error C3772](compiler-error-c3772.md)|'*identifier*': invalid friend template declaration| -|Compiler error C3773|please use /await compiler switch to enable coroutines| +|Compiler error C3773|Use of '*feature*' in this context is a non-conforming extension in `C++`*version*| |Compiler error C3774|cannot find '*scope*::*identifier*': Please include *header_name* header| |Compiler error C3775|return type of '*function*' should not be '*type*'| |Compiler error C3776|cannot return an expression of type void in a coroutine with non-void eventual return type| @@ -297,7 +297,7 @@ The articles in this section explain a subset of the error messages generated by |Compiler error C3781|'*keyword*': cannot be a used in a coroutine of type '*type*'. Either *keyword* or *keyword* must be present in associated promise_type| |Compiler error C3782|*type*: a coroutine's promise cannot contain both *keyword* and *keyword*| |Compiler error C3783|'*identifier*': cannot be a coroutine| -|Compiler error C3784|*keyword* expression cannot appear in this context| +|Compiler error C3784|*keyword* cannot appear in this context| |Compiler error C3785|the first template argument to 'std::integer_sequence' must be an integer type| |Compiler error C3786|the second template argument to 'std::make_integer_sequence' must be an integer constant greater than or equal to zero| |Compiler error C3787|cannot deduce the return type of this coroutine| @@ -342,7 +342,7 @@ The articles in this section explain a subset of the error messages generated by |Compiler error C3826|Obsolete.| |Compiler error C3827|standard attribute 'deprecated' may have either no arguments or one string literal describing the reason| |[Compiler error C3828](compiler-error-c3828.md)|placement arguments cannot be specified for a '*keyword*' expression for type '*type*'| -|Compiler error C3829|standard attribute 'noreturn' may only be applied to functions| +|Compiler error C3829|attribute `[[`*attribute name*`]]` may only be applied to a function declaration| |[Compiler error C3830](compiler-error-c3830.md)|'*type1*': cannot inherit from '*type2*', value types can only inherit from interface classes| |[Compiler error C3831](compiler-error-c3831.md)|'*identifier*': '*type*' cannot have a pinned data member or a member function returning a pinning pointer| |[Compiler error C3832](compiler-error-c3832.md)|'*typelib*': type library looks as if it was built for 32-bit pointers; please change the 'ptrsize' qualifier| @@ -377,7 +377,7 @@ The articles in this section explain a subset of the error messages generated by |[Compiler error C3861](compiler-error-c3861.md)|'*identifier*': identifier not found| |[Compiler error C3862](compiler-error-c3862.md)|'*function*': cannot compile an unmanaged function with `/clr:pure` or `/clr:safe`| |Compiler error C3863|array type '*type*' is not assignable| -|Compiler error C3864|Obsolete.| +|Compiler error C3864|'*context*': requires clause is incompatible with the declaration| |[Compiler error C3865](compiler-error-c3865.md)|'*keyword*': can only be used on native member functions| |[Compiler error C3866](compiler-error-c3866.md)|destructor/finalizer call missing argument list| |[Compiler error C3867](compiler-error-c3867.md)|'*function*': non-standard syntax; use '&' to create a pointer to member| @@ -391,7 +391,7 @@ The articles in this section explain a subset of the error messages generated by |Compiler error C3875|call of non-static member function missing argument list| | Compiler error C3876 | hexadecimal floating literal requires an exponent | | Compiler error C3877 | invalid type argument to the TypeForwardedTo attribute | -| Compiler error C3878 | syntax error: unexpected token '%1$L' following '%2s' | +| Compiler error C3878 | syntax error: unexpected token '*name*' following '*context*' | |Compiler error C3879|'*member*': cannot be an initonly data member| |[Compiler error C3880](compiler-error-c3880.md)|'*member*': cannot be a literal data member| |Compiler error C3881|can only inherit constructor from direct base| From d787655192ff95319f1aaccf276f5a667d66d975 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Mon, 24 Feb 2025 15:44:00 -0800 Subject: [PATCH 0195/2255] Learn Editor: Update compiler-errors-c3500-through-c3999.md --- .../compiler-errors-c3500-through-c3999.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c3500-through-c3999.md b/docs/error-messages/compiler-errors-2/compiler-errors-c3500-through-c3999.md index a177eb0449c..1247a310c7a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c3500-through-c3999.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c3500-through-c3999.md @@ -402,6 +402,7 @@ The articles in this section explain a subset of the error messages generated by |[Compiler error C3886](compiler-error-c3886.md)|'*member*': a literal data member must be initialized| |[Compiler error C3887](compiler-error-c3887.md)|'*member*': the initializer for a literal data member must be a constant expression| |[Compiler error C3888](compiler-error-c3888.md)|'*member*': the const expression associated with this literal data member is not supported by C++/CLI| +|Compiler error C3889|call to object of class type '*type*': no matching call operator found| |[Compiler error C3890](compiler-error-c3890.md)|'*member*': you cannot take the address of a literal data member| |[Compiler error C3891](compiler-error-c3891.md)|'*member*': a literal data member cannot be used as a l-value| |[Compiler error C3892](compiler-error-c3892.md)|'*variable*': you cannot assign to a variable that is const| @@ -434,12 +435,14 @@ The articles in this section explain a subset of the error messages generated by |[Compiler error C3919](compiler-error-c3919.md)|'*function*': function must have type '*return_type* (*type*)'| |[Compiler error C3920](compiler-error-c3920.md)|'*operator*': cannot define a postfix increment/decrement CLR/WinRT operator Calling the postfix CLR/WinRT operator will call the corresponding prefix CLR/WinRT operator (op_Increment/op_Decrement), but with postfix semantics| |Compiler error C3921|Obsolete.| +|Compiler error C3922|'*name*': argument must be a constant expression| |[Compiler error C3923](compiler-error-c3923.md)|'*member*': local class, struct or union definitions are not allowed in a member function of a managed/WinRT class| |Compiler error C3924|error in argument #*number* of delegate constructor call '*constructor*':| |Compiler error C3925|expected a loop (`for`, `while`, or `do`) following '*directive_name*' directive| |Compiler error C3926|invalid constant in 'parallel' directive| |Compiler error C3927|'->': trailing return type is not allowed after a non-function declarator| |Compiler error C3928|'->': trailing return type is not allowed after a parenthesized declarator| +|Compiler error C3929|'`collapse(`*count*`)`' specified but found only *value* loops following '`#pragma omp for`'| |Compiler error C3930|'*function*': no overloaded function has restriction specifiers that are compatible with the ambient context '*context*'| |Compiler error C3931|'*type*': cannot call a function that has restriction specifiers that are incompatible with the ambient context| |Compiler error C3932|Obsolete.| @@ -452,6 +455,9 @@ The articles in this section explain a subset of the error messages generated by |Compiler error C3939|'*identifier*': pointer to member functions, function pointers, references to functions with 'amp' restriction specifier are not allowed| |Compiler error C3940|'*identifier*': identifier not found - possible mismatch between compiler and library versions. Please ensure vccorlib.h/.lib, vccorlib120.dll and c1xx.dll match| |Compiler error C3941|'*condition*': requires '/clr' command line option| +|Compiler error C3942|'`#pragma omp atomic capture`': expression on right of '`=`' must be an lvalue-expression of scalar type| +|Compiler error C3943|'`#pragma omp atomic`': operator '*operator*' is overloaded; only built-in operators are allowed| +|Compiler error C3944|'`#pragma omp atomic`': lvalue expression required as left operand of '*operator*'| |Compiler error C3945|'*type*': unable to throw or catch a winrt object which doesn't derive from Platform::Exception| |Compiler error C3946|'*type*': typeid cannot be applied to this type| |Compiler error C3947|'*typeid*': typeid cannot be applied to a pack expansion| From 82a27885175edb23e820741cf9750317c0ca2077 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Mon, 24 Feb 2025 15:55:26 -0800 Subject: [PATCH 0196/2255] Learn Editor: Update compiler-errors-c7500-through-c7999.md --- .../compiler-errors-c7500-through-c7999.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md b/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md index 7d152ae26fd..5bd2e404ba0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md @@ -42,7 +42,7 @@ The articles in this section of the documentation explain a subset of the error | Compiler error C7524 | 'inline' specifier cannot appear on a block-scope declaration or non-static data member | | Compiler error C7525 | inline variables require at least '%1$M' | | Compiler error C7526 | '%$I': inline variable is undefined | -| Compiler error C7527 | '%$I': template parameter name cannot be redeclared | +| Compiler error C7527 | '*identifier*': a template parameter name cannot be reused within its scope | | Compiler error C7528 | '%1$S': A default constructor or its exception specification cannot be used within a data member initializer of the same class | | Compiler error C7529 | multiple using-declarators require at least '%1$M' | | Compiler error C7530 | applying a pack-expansion to a using-declaration requires at least '%1$M' | @@ -58,7 +58,7 @@ The articles in this section of the documentation explain a subset of the error | Compiler error C7540 | '%1$I': member cannot have the same name as the enclosing class | | Compiler error C7541 | '%1$I': C++17 inline static data members are not compatible with managed types | | Compiler error C7542 | '%1$S': expected a type | -| Compiler error C7543 | likelihood attributes can only be applied to statements and labels | +| Compiler error C7543 | attribute `[[`*attribute*`]]` can only be applied to statements and labels | | Compiler error C7544 | standard attributes '%1$s' and '%2$s' are mutually exclusive | | Compiler error C7545 | attribute '%sno_unique_address' can only be applied to a non-static data member that is not a bitfield | | Compiler error C7546 | binary operator '<=>': unsupported operand types '%$T' and '%$T' | @@ -113,6 +113,7 @@ The articles in this section of the documentation explain a subset of the error | Compiler error C7595 | '%1$S': call to immediate function is not a constant expression | | Compiler error C7596 | '%1$S': cannot take address of immediate function outside of an immediate invocation | | Compiler error C7597 | '%1$D': 'consteval': overriding function must match overridden function | +| Compiler error C7598 | the constraint expression cannot use the concept name '*identifier*'| | Compiler error C7599 | '%1$S': a trailing requires clause is only allowed on a templated function | | Compiler error C7600 | '%1$S': the concept designated by a type constraint shall be a type concept | | Compiler error C7601 | the associated constraints are not satisfied | @@ -123,7 +124,7 @@ The articles in this section of the documentation explain a subset of the error | Compiler error C7606 | '%1$S': concept cannot be explicitly instantiated, explicitly specialized or partially specialized | | Compiler error C7607 | atomic constraint should be a constant expression of type 'bool', not '%1$T' | | Compiler error C7608 | atomic constraint should be a constant expression | -| Compiler error C7609 | '%1$S': type constraint expects a concept name | +| Compiler error C7609 | '*identifier*': expected a concept name for type constraint | | Compiler error C7610 | operator '%$L': not allowed between enumeration types and floating-point types | | Compiler error C7611 | operator '%$L': not allowed for array types | | Compiler error C7612 | could not find header unit for '%s' | @@ -163,8 +164,8 @@ The articles in this section of the documentation explain a subset of the error | Compiler error C7646 | destroying operator delete functions cannot be array delete operators 'operator delete[]' | | Compiler error C7647 | destroying operator delete functions must be usual deallocation functions | | Compiler error C7648 | a conversion function cannot have a trailing return type | -| Compiler error C7649 | attribute 'xfg::rename' may only be applied to structs, classes and virtual methods | -| Compiler error C7650 | attribute 'xfg::rename' must be passed a string argument | +| Compiler error C7649 | attribute '`[[xfg::rename]]`' may only be applied to structs, classes and virtual methods | +| Compiler error C7650 | attribute '`[[xfg::rename]]`' must be passed a string argument | | Compiler error C7651 | %1$I cannot be used with /await. Use '%2$M' or later for standard coroutine support | | Compiler error C7652 | if a member function has a trailing requires clause then another member function with the same signature, ignoring any trailing requires clause, cannot be virtual | | Compiler error C7653 | '%1$S': failed to select a destructor for the class | @@ -173,12 +174,12 @@ The articles in this section of the documentation explain a subset of the error | Compiler error C7656 | private module fragment cannot be redeclared | | Compiler error C7657 | private module fragment cannot be declared before a module declaration | | Compiler error C7658 | '%1$S': the initializer must be the address of a variable | -| Compiler error C7659 | attribute 'xfg::rename' may not be applied to nested class hierarchies | +| Compiler error C7659 | attribute '`[[xfg::rename]]`' may not be applied to nested class hierarchies | | Compiler error C7660 | '%s': requires '%s' command line option(s) | | Compiler error C7661 | header-name '%s' has an ambiguous resolution to header '%s' | | Compiler error C7662 | '%$S': a coroutine cannot be constexpr or consteval | | [Compiler error C7688](compiler-error-c7688.md) | '`#pragma omp atomic`': expected an expression of scalar type | -| Compiler error C7686 | TOML parse error | +| Compiler error C7686 | attribute `[[msvc::constexpr]]` cannot be applied to a '`constexpr`' or '`consteval`' function | | Compiler error C7700 | type '%$T' in _Generic association compatible with previous association type '%$T' | | Compiler error C7701 | default _Generic association previously specified | | Compiler error C7702 | no compatible type for '%$T' in _Generic association list | From 5e13c40626cc4dc8a56fd842a2f9e1b5f6c62ff8 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Mon, 24 Feb 2025 16:31:08 -0800 Subject: [PATCH 0197/2255] Learn Editor: Update compiler-errors-c7500-through-c7999.md --- .../compiler-errors-c7500-through-c7999.md | 64 ++++++++++++++++++- 1 file changed, 63 insertions(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md b/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md index 5bd2e404ba0..0ed99e5e5ff 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md @@ -178,13 +178,75 @@ The articles in this section of the documentation explain a subset of the error | Compiler error C7660 | '%s': requires '%s' command line option(s) | | Compiler error C7661 | header-name '%s' has an ambiguous resolution to header '%s' | | Compiler error C7662 | '%$S': a coroutine cannot be constexpr or consteval | -| [Compiler error C7688](compiler-error-c7688.md) | '`#pragma omp atomic`': expected an expression of scalar type | +| Compiler error C7665 | '*operator*': you cannot assign to '`this`' as it is not an lvalue | +| Compiler error C7666 | you cannot apply '*operator*' to '`this`' as it is not an lvalue | +| Compiler error C7667 | no global `operator delete` function found | +| Compiler error C7668 | a function with an explicit object parameter must be a member function | +| Compiler error C7669 | a function with an explicit object parameter cannot be declared '`static`' | +| Compiler error C7670 | only the first parameter may be an explicit object parameter | +| Compiler error C7671 | a member function with an explicit object parameter may only have one such parameter | +| Compiler error C7672 | a member function with an explicit object parameter may not have trailing implicit object parameter specifiers | +| Compiler error C7673 | explicit object member functions requires at least '*C++ language version*' | +| Compiler error C7674 | member function '*function 1*' with explicit object parameter of type '*type 1*' cannot overload member function '*function 2*' with implicit object parameter of type '*type 2*' | +| Compiler error C7675 | cannot overload static member function with member function declaring the same non-object parameter types | +| Compiler error C7676 | member functions with an explicit object parameter cannot be defaulted | +| Compiler error C7677 | constructors cannot contain an explicit object parameter | +| Compiler error C7678 | member functions with an explicit object parameter cannot be virtual | +| Compiler error C7679 | an explicit object parameter cannot be a parameter pack | +| Compiler error C7680 | only function parameters may be explicit object parameters | +| Compiler error C7682 | '*declaration*': a non-defining declaration of an enumeration with a fixed underlying type is only permitted as a standalone declaration | +| Compiler error C7683 | you cannot create a reference to '`void`' | +| Compiler error C7684 | module name '*name*' has an ambiguous resolution to IFC | +| Compiler error C7685 | there is no type named '*identifier*' in '*type*' | | Compiler error C7686 | attribute `[[msvc::constexpr]]` cannot be applied to a '`constexpr`' or '`consteval`' function | +| Compiler error C7687 | attribute `[[`*attribute*`]]` may only be applied to statements and functions | +| [Compiler error C7688](compiler-error-c7688.md) | '`#pragma omp atomic`': expected an expression of scalar type | +| Compiler error C7689 | attribute `[[msvc::intrinsic]]` cannot be applied to explicit specializations | +| Compiler error C7690 | attribute `[[msvc::intrinsic]]` cannot be applied to a recursive function | +| Compiler error C7691 | '`__super`' is not supported as '`/allowSuper-`' was specified | +| Compiler error C7692 | '*name*': rewritten candidate function was excluded from overload resolution because a corresponding `operator!=` declared in the same scope | +| Compiler error C7693 | constraints are not supported for managed types and constructs | +| Compiler error C7694 | managed type '*type*' used in a constraint definition or evaluation or in an entity that uses constraints | +| Compiler error C7695 | coroutine promise type '*type*' cannot be abstract | +| Compiler error C7696 | TOML parse error: *error name*; see '*TOML filename*' | +| Compiler error C7697 | '*header unit*' is not a recognized header-name lookup | +| Compiler error C7698 | '`__declspec(`*name*`(...))`' requires a single string argument | +| Compiler error C7699 | file mapping must be unique. Both '*name 1*' and '*name 2*' map to '*filename*' | | Compiler error C7700 | type '%$T' in _Generic association compatible with previous association type '%$T' | | Compiler error C7701 | default _Generic association previously specified | | Compiler error C7702 | no compatible type for '%$T' in _Generic association list | | Compiler error C7703 | inline nested namespaces requires at least '%1$M' | | Compiler error C7704 | '_Alignas' specifier can be used on variables and structure fields only | +| Compiler error C7705 | '`_Atomic`' type '*typename*' cannot be an array or function | +| Compiler error C7706 | '`_Atomic`' type '*typename*' cannot be atomic or CVR qualified | +| Compiler error C7707 | call to '*function*': argument type '*type*' must be a pointer to an atomic type | +| Compiler error C7708 | '*variable*': '`thread_local`' is only valid on variables at file or block scope | +| Compiler error C7709 | '*variable*': '`thread_local`' variables at block scope must be marked `static` | +| Compiler error C7710 | '*variable*': bit-fields cannot be atomic | +| Compiler error C7711 | '`_Atomic`' cannot be applied to incomplete type '*type*' | +| Compiler error C7712 | address argument to atomic operation must be a pointer to an atomic integer, '*type*' is not valid | +| Compiler error C7713 | a statement-expression may only appear inside a function body | +| Compiler error C7714 | the syntax for a 'statement-expression' is '`__extension__ ({ S1; ... ; Sn; })`' | +| Compiler error C7720 | bound for nested loop to be collapsed does not conform to the OpenMP specification | +| Compiler error C7730 | '`#`*directive*' directive requires '*language version*' or later | +| Compiler error C7731 | '*name*' is not allowed on a constructor declaration | +| Compiler error C7732 | expected an expression before '`]`' | +| Compiler error C7733 | the built-in subscript operator expects a single expression | +| Compiler error C7734 | '`size_t`' literal is out of range of possible '`size_t`' values | +| Compiler error C7735 | a lambda cannot be both '`static`' and '`mutable`' | +| Compiler error C7736 | a static lambda must have an empty capture-clause | +| Compiler error C7737 | a lambda with an explicit object parameter shall be neither '`mutable`' nor '`static`' | +| Compiler error C7738 | '`if consteval`' requires a compound statement | +| Compiler error C7739 | cannot jump from this `goto` statement to its label | +| Compiler error C7740 | cannot jump to case label | +| Compiler error C7741 | ABI inconsistency: '*function*' was originally assumed to use '`C`' return semantics but now it requires '`C++`' return semantics | +| Compiler error C7800 | duplicate explicit instantiation definition of '*name*' | +| Compiler error C7801 | '*function*': if one declaration of '*identifier*' has the '`[[msvc::disptach]]`' attribute then all functions must have the attribute | +| Compiler error C7802 | '*identifier*': a capability must resolve to an enumerator | +| Compiler error C7803 | '*identifier*': a capability must be associated with a non-overloaded, non-virtual function | +| Compiler error C7804 | '*identifier*': cannot find a matching default dispatch function | +| Compiler error C7806 | support for the '`msvc::dispatch`' attribute requires '`/experimental:loadTimeSelection`' | +| Compiler error C7807 | expecting a narrow string literal | ## See also From 871dffd55e7285122b78ac3cdf7961670794478c Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Mon, 24 Feb 2025 16:32:56 -0800 Subject: [PATCH 0198/2255] Learn Editor: Update compiler-errors-c7500-through-c7999.md From 6d35c2a472c98a2f5b57ed54d1c6d53faa9de112 Mon Sep 17 00:00:00 2001 From: Takashi Takebayashi Date: Tue, 25 Feb 2025 13:33:59 +0900 Subject: [PATCH 0199/2255] Fix typo VIsual Studio -> Visual Studio --- docs/porting/build-system-changes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/porting/build-system-changes.md b/docs/porting/build-system-changes.md index 257ad65325a..bcd58b4a3d7 100644 --- a/docs/porting/build-system-changes.md +++ b/docs/porting/build-system-changes.md @@ -1,6 +1,6 @@ --- title: "VCBuild vs. MSBuild" -description: "The VIsual Studio C++ build system changed from VCBuild to MSBuild in Visual Studio 2010." +description: "The Visual Studio C++ build system changed from VCBuild to MSBuild in Visual Studio 2010." ms.date: "10/25/2019" helpviewer_keywords: ["Build system changes, project file (.vcxprog)", "Build system changes, custom build rules", "Build system changes, MSBuild", "MSBuild, build system changes", "Build system changes, .vsprops", "Build system changes, $(Inherit)", "Build system changes, $(NoInherit)"] ms.assetid: e564d95f-a6cc-4d97-b57e-1a71daf66f4a From e6efe331440ed07729aac8e0b77f3b3bbd425644 Mon Sep 17 00:00:00 2001 From: Takashi Takebayashi Date: Tue, 25 Feb 2025 13:36:45 +0900 Subject: [PATCH 0200/2255] Fix typo Javascript -> JavaScript --- docs/cppcx/delegates-c-cx.md | 2 +- docs/cppcx/platform-collections-namespace.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/cppcx/delegates-c-cx.md b/docs/cppcx/delegates-c-cx.md index af0f96e6d68..3ea53942eb7 100644 --- a/docs/cppcx/delegates-c-cx.md +++ b/docs/cppcx/delegates-c-cx.md @@ -18,7 +18,7 @@ Delegates are most commonly used in conjunction with events. An event has a dele event PrimeFoundHandler^ primeFoundEvent; ``` -When declaring delegates that will be exposed to clients across the Windows Runtime application binary interface, use [Windows::Foundation::TypedEventHandler\](/uwp/api/windows.foundation.typedeventhandler-2). This delegate has predefined proxy and stub binaries that enable it to be consumed by Javascript clients. +When declaring delegates that will be exposed to clients across the Windows Runtime application binary interface, use [Windows::Foundation::TypedEventHandler\](/uwp/api/windows.foundation.typedeventhandler-2). This delegate has predefined proxy and stub binaries that enable it to be consumed by JavaScript clients. ## Consuming delegates diff --git a/docs/cppcx/platform-collections-namespace.md b/docs/cppcx/platform-collections-namespace.md index f079c117af1..1cffd685219 100644 --- a/docs/cppcx/platform-collections-namespace.md +++ b/docs/cppcx/platform-collections-namespace.md @@ -9,7 +9,7 @@ ms.assetid: b5042864-5f22-40b7-b7a5-c0691f65cc47 --- # Platform::Collections Namespace -The Platform::Collections namespace contains the `Map`, `MapView`, `Vector`, and `VectorView` classes. These classes are concrete implementations of the corresponding interfaces that are defined in the [Windows::Foundation::Collections](/uwp/api/windows.foundation.collections) namespace. The concrete collection types are not portable across the ABI (for example when a Javascript or C# program calls into a C++ component), but they are implicitly convertible to their corresponding interface types. For example, if you implement a public method that populates and returns a collection, then use [Platform::Collections::Vector](../cppcx/platform-collections-vector-class.md) to implement the collection internally and use [Windows::Foundation::Collections::IVector](/uwp/api/windows.foundation.collections.ivector-1) as the return type. For more information, see [Collections](../cppcx/collections-c-cx.md) and [Creating Windows Runtime Components in C++](/windows/uwp/winrt-components/creating-windows-runtime-components-in-cpp). +The Platform::Collections namespace contains the `Map`, `MapView`, `Vector`, and `VectorView` classes. These classes are concrete implementations of the corresponding interfaces that are defined in the [Windows::Foundation::Collections](/uwp/api/windows.foundation.collections) namespace. The concrete collection types are not portable across the ABI (for example when a JavaScript or C# program calls into a C++ component), but they are implicitly convertible to their corresponding interface types. For example, if you implement a public method that populates and returns a collection, then use [Platform::Collections::Vector](../cppcx/platform-collections-vector-class.md) to implement the collection internally and use [Windows::Foundation::Collections::IVector](/uwp/api/windows.foundation.collections.ivector-1) as the return type. For more information, see [Collections](../cppcx/collections-c-cx.md) and [Creating Windows Runtime Components in C++](/windows/uwp/winrt-components/creating-windows-runtime-components-in-cpp). You can construct a Platform::Collections::Vector from a [std::vector](../standard-library/vector-class.md) and a [Platform::Collections::Map](../cppcx/platform-collections-map-class.md) from a [std::map](../standard-library/map-class.md). From f01eacdce3854c96f69956d462467167ca50fa64 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Tue, 25 Feb 2025 14:20:08 -0800 Subject: [PATCH 0201/2255] Fix formatting of compiler error C2278 description --- .../compiler-errors-1/compiler-errors-c2200-through-c2299.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-errors-c2200-through-c2299.md b/docs/error-messages/compiler-errors-1/compiler-errors-c2200-through-c2299.md index 73e6b83618c..1355b9fdc70 100644 --- a/docs/error-messages/compiler-errors-1/compiler-errors-c2200-through-c2299.md +++ b/docs/error-messages/compiler-errors-1/compiler-errors-c2200-through-c2299.md @@ -93,7 +93,7 @@ The articles in this section of the documentation explain a subset of the error |[Compiler error C2275](compiler-error-c2275.md)|'*type*': expected an expression instead of a type| |[Compiler error C2276](compiler-error-c2276.md)|'*operator*': illegal operation on bound member function expression| |[Compiler error C2277](compiler-error-c2277.md)|'*function*': cannot take address of this member function| -|Compiler error C2278|'*token*': unexpected token. Format is '*__has_cpp_attribute*`( identifier )`'| +|Compiler error C2278|'*token*': unexpected token. Format is '`__has_cpp_attribute( identifier )`'| |[Compiler error C2279](compiler-error-c2279.md)|exception specification cannot appear in a typedef declaration| |[Compiler error C2280](compiler-error-c2280.md)|'*class*::*function*': attempting to reference a deleted function| |Compiler error C2281|'*class*::*function*': a function can only be deleted on the first declaration| From 5d58c429a98565af4d9ee64613980ef0c72e36d6 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Tue, 25 Feb 2025 14:43:49 -0800 Subject: [PATCH 0202/2255] Fix formatting for compiler error C3339 description --- .../compiler-errors-2/compiler-errors-c3300-through-c3399.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c3300-through-c3399.md b/docs/error-messages/compiler-errors-2/compiler-errors-c3300-through-c3399.md index b5eee7e9d1b..691f9c0e369 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c3300-through-c3399.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c3300-through-c3399.md @@ -54,7 +54,7 @@ The articles in this section of the documentation explain a subset of the error | Compiler error C3336 | This operation must be performed at class scope | | Compiler error C3337 | '*identifier*': defaultvtable must be an event source for a coclass '*class*' | | Compiler error C3338 | '*identifier*': There can be at most one default interface that is also an event source for a coclass '*class*' | -| Compiler error C3339 | `template` `template` parameter requires either '`class`' or '`typename`' after the parameter list | +| Compiler error C3339 | template template parameter requires either '`class`' or '`typename`' after the parameter list | | [Compiler error C3340](compiler-error-c3340.md) | '*identifier*': interface cannot be both 'restricted' and 'default' in coclass '*class*' | | Compiler error C3341 | '*interface*': a defaultvtable interface must be either 'dual' or 'custom' | | [Compiler error C3342](compiler-error-c3342.md) | '*identifier*': ambiguous attribute | From caac8fd2f073cc7e9fe9f6d9210eb296053465b1 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 25 Feb 2025 16:37:18 -0800 Subject: [PATCH 0203/2255] fix UUF issue --- docs/code-quality/c6993.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/code-quality/c6993.md b/docs/code-quality/c6993.md index e4df96bfabb..7e2adb2d789 100644 --- a/docs/code-quality/c6993.md +++ b/docs/code-quality/c6993.md @@ -1,12 +1,13 @@ --- description: "Learn more about: Warning C6993" title: Warning C6993 -ms.date: 11/04/2016 +ms.date: 2/25/2025 f1_keywords: ["C6993"] -ms.assetid: 7ea93bc6-b934-4b6b-b71a-a56e765fb4cd --- # Warning C6993 > Code analysis ignores OpenMP constructs; analyzing single-threaded code -This warning indicates that the Code Analyzer has encountered Open MP pragmas that it can't analyze. +This warning indicates that the static analysis tools don't support Open MP pragmas. The static analysis tools could generate incorrect results because they assume the code is single-threaded, not multi-threaded. + +Your code doesn't necessarily need to be 'fixed' to resolve this diagnostic because this warning indicates what our toolset supports and not an issue with your code. \ No newline at end of file From ce45e573a2c8b87a08ba3a17ba27fa3057f7cdf4 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 25 Feb 2025 16:38:32 -0800 Subject: [PATCH 0204/2255] fix uuf bug --- docs/code-quality/c6993.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/code-quality/c6993.md b/docs/code-quality/c6993.md index e4df96bfabb..7e2adb2d789 100644 --- a/docs/code-quality/c6993.md +++ b/docs/code-quality/c6993.md @@ -1,12 +1,13 @@ --- description: "Learn more about: Warning C6993" title: Warning C6993 -ms.date: 11/04/2016 +ms.date: 2/25/2025 f1_keywords: ["C6993"] -ms.assetid: 7ea93bc6-b934-4b6b-b71a-a56e765fb4cd --- # Warning C6993 > Code analysis ignores OpenMP constructs; analyzing single-threaded code -This warning indicates that the Code Analyzer has encountered Open MP pragmas that it can't analyze. +This warning indicates that the static analysis tools don't support Open MP pragmas. The static analysis tools could generate incorrect results because they assume the code is single-threaded, not multi-threaded. + +Your code doesn't necessarily need to be 'fixed' to resolve this diagnostic because this warning indicates what our toolset supports and not an issue with your code. \ No newline at end of file From b79a67b071381bba938816201d733ad39a3c8d4e Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 25 Feb 2025 16:39:55 -0800 Subject: [PATCH 0205/2255] wording --- docs/code-quality/c6993.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/code-quality/c6993.md b/docs/code-quality/c6993.md index 7e2adb2d789..8adc14a6bd0 100644 --- a/docs/code-quality/c6993.md +++ b/docs/code-quality/c6993.md @@ -10,4 +10,4 @@ f1_keywords: ["C6993"] This warning indicates that the static analysis tools don't support Open MP pragmas. The static analysis tools could generate incorrect results because they assume the code is single-threaded, not multi-threaded. -Your code doesn't necessarily need to be 'fixed' to resolve this diagnostic because this warning indicates what our toolset supports and not an issue with your code. \ No newline at end of file +Your code doesn't necessarily need to be 'fixed' to resolve this diagnostic because this warning indicates what the toolset supports and not an issue with your code. \ No newline at end of file From b3bbdb6a108837251f240bec33a465398d62b4e7 Mon Sep 17 00:00:00 2001 From: Justin Piesco <107575186+JustPies@users.noreply.github.com> Date: Wed, 26 Feb 2025 12:41:29 -0500 Subject: [PATCH 0206/2255] updated links --- docs/build/reference/subsystem-specify-subsystem.md | 2 +- docs/c-runtime-library/crt-debugging-techniques.md | 4 ++-- .../find-memory-leaks-using-the-crt-library.md | 6 +++--- docs/c-runtime-library/reference/abort.md | 2 +- docs/c-runtime-library/reference/exit-exit-exit.md | 2 +- docs/c-runtime-library/reference/raise.md | 2 +- docs/c-runtime-library/reference/set-abort-behavior.md | 2 +- docs/c-runtime-library/reference/signal.md | 2 +- docs/code-quality/build-reliable-secure-programs.md | 7 +++---- docs/data/odbc/odbc-and-mfc.md | 2 +- docs/intrinsics/x64-amd64-intrinsics-list.md | 2 +- .../overview/what-s-new-for-visual-cpp-in-visual-studio.md | 2 +- 12 files changed, 17 insertions(+), 18 deletions(-) diff --git a/docs/build/reference/subsystem-specify-subsystem.md b/docs/build/reference/subsystem-specify-subsystem.md index 4371a12db04..5669fa0e8bf 100644 --- a/docs/build/reference/subsystem-specify-subsystem.md +++ b/docs/build/reference/subsystem-specify-subsystem.md @@ -29,7 +29,7 @@ Win32 character-mode application. The operating system provides a console for co **`EFI_BOOT_SERVICE_DRIVER`**\ **`EFI_ROM`**\ **`EFI_RUNTIME_DRIVER`**\ -The Extensible Firmware Interface subsystems. For more information, see the [UEFI specification](https://uefi.org/specifications). For examples, see the Intel [UEFI Driver and Application Tool Resources](https://www.intel.com/content/www/us/en/architecture-and-technology/unified-extensible-firmware-interface/uefi-driver-and-application-tool-resources.html). The minimum version and default version is 1.0. +The Extensible Firmware Interface subsystems. For more information, see the [UEFI specification](https://uefi.org/specifications). The minimum version and default version is 1.0. **`NATIVE`**\ Kernel mode drivers for Windows NT. This option is normally reserved for Windows system components. If [`/DRIVER:WDM`](driver-windows-nt-kernel-mode-driver.md) is specified, `NATIVE` is the default. diff --git a/docs/c-runtime-library/crt-debugging-techniques.md b/docs/c-runtime-library/crt-debugging-techniques.md index a2379c0484d..f84d68a3c0d 100644 --- a/docs/c-runtime-library/crt-debugging-techniques.md +++ b/docs/c-runtime-library/crt-debugging-techniques.md @@ -169,5 +169,5 @@ If the hook handles the message in question completely, so that no further repor ## See also -- [Debugging Native Code](/visualstudio/debugger/debugging-native-code.md) -- [Debugger Security](/visualstudio/debugger/debugger-security.md) +- [Debugging Native Code](/visualstudio/debugger/debugging-native-code?view=vs-2022) +- [Debugger Security](/visualstudio/debugger/debugger-security?view=vs-2022) diff --git a/docs/c-runtime-library/find-memory-leaks-using-the-crt-library.md b/docs/c-runtime-library/find-memory-leaks-using-the-crt-library.md index 5859bd08c47..9b8c5c1bb45 100644 --- a/docs/c-runtime-library/find-memory-leaks-using-the-crt-library.md +++ b/docs/c-runtime-library/find-memory-leaks-using-the-crt-library.md @@ -216,7 +216,7 @@ You can use the allocation number to set a breakpoint on the memory allocation. After you set a breakpoint on a memory-allocation number, continue to debug. Make sure to run under the same conditions, so the memory-allocation number doesn't change. When your program breaks at the specified memory allocation, use the **Call Stack** window and other debugger windows to determine the conditions under which the memory was allocated. Then, you can continue execution to observe what happens to the object and determine why it isn't correctly deallocated. -Setting a data breakpoint on the object might also be helpful. For more information, see [Using breakpoints](/visualstudio/debugger/using-breakpoints.md). +Setting a data breakpoint on the object might also be helpful. For more information, see [Using breakpoints](/visualstudio/debugger/using-breakpoints?view=vs-2022). You can also set memory-allocation breakpoints in code. You can set: @@ -281,5 +281,5 @@ One technique for finding memory leaks begins by placing `_CrtMemCheckpoint` cal ## See also - [CRT debug heap details](./crt-debug-heap-details.md) -- [Debugger security](/visualstudio/debugger/debugger-security.md) -- [Debugging native code](/visualstudio/debugger/debugging-native-code.md) +- [Debugger security](/visualstudio/debugger/debugger-security?view=vs-2022) +- [Debugging native code](/visualstudio/debugger/debugging-native-code?view=vs-2022) diff --git a/docs/c-runtime-library/reference/abort.md b/docs/c-runtime-library/reference/abort.md index 2260dd9645b..436a39de910 100644 --- a/docs/c-runtime-library/reference/abort.md +++ b/docs/c-runtime-library/reference/abort.md @@ -14,7 +14,7 @@ helpviewer_keywords: ["aborting current process", "abort function", "processes, Aborts the current process and returns an error code. > [!NOTE] -> Do not use this method to shut down a Microsoft Store app or Universal Windows Platform (UWP) app, except in testing or debugging scenarios. Programmatic or UI ways to close a Store app are not permitted according to the [Microsoft Store policies](/legal/windows/agreements/store-policies). For more information, see [UWP app lifecycle](/windows/uwp/launch-resume/app-lifecycle). +> Do not use this method to shut down a Microsoft Store app or Universal Windows Platform (UWP) app, except in testing or debugging scenarios. Programmatic or UI ways to close a Store app are not permitted according to the [Microsoft Store policies](/windows/apps/publish/store-policies). For more information, see [UWP app lifecycle](/windows/uwp/launch-resume/app-lifecycle). ## Syntax diff --git a/docs/c-runtime-library/reference/exit-exit-exit.md b/docs/c-runtime-library/reference/exit-exit-exit.md index 1ad98c4dc50..bcec154714b 100644 --- a/docs/c-runtime-library/reference/exit-exit-exit.md +++ b/docs/c-runtime-library/reference/exit-exit-exit.md @@ -14,7 +14,7 @@ helpviewer_keywords: ["exit function", "_exit function", "processes, terminating Terminates the calling process. The **`exit`** function terminates it after cleanup; **`_exit`** and **`_Exit`** terminate it immediately. > [!NOTE] -> Do not use this method to shut down a Universal Windows Platform (UWP) app, except in testing or debugging scenarios. Programmatic or UI ways to close a Store app are not permitted according to the [Microsoft Store policies](/legal/windows/agreements/store-policies). For more information, see [UWP app lifecycle](/windows/uwp/launch-resume/app-lifecycle). For more information about UWP apps, see [Universal Windows Platform documentation](https://developer.microsoft.com/windows/apps). +> Do not use this method to shut down a Universal Windows Platform (UWP) app, except in testing or debugging scenarios. Programmatic or UI ways to close a Store app are not permitted according to the [Microsoft Store policies](/windows/apps/publish/store-policies). For more information, see [UWP app lifecycle](/windows/uwp/launch-resume/app-lifecycle). For more information about UWP apps, see [Universal Windows Platform documentation](https://developer.microsoft.com/windows/apps). ## Syntax diff --git a/docs/c-runtime-library/reference/raise.md b/docs/c-runtime-library/reference/raise.md index 2b33716eae2..e3fe3e05b62 100644 --- a/docs/c-runtime-library/reference/raise.md +++ b/docs/c-runtime-library/reference/raise.md @@ -14,7 +14,7 @@ helpviewer_keywords: ["signals, sending to executing programs", "raise function" Sends a signal to the executing program. > [!NOTE] -> Do not use this method to shut down a Microsoft Store app, except in testing or debugging scenarios. Programmatic or UI ways to close a Store app are not permitted according to the [Microsoft Store policies](/legal/windows/agreements/store-policies). For more information, see [UWP app lifecycle](/windows/uwp/launch-resume/app-lifecycle). +> Do not use this method to shut down a Microsoft Store app, except in testing or debugging scenarios. Programmatic or UI ways to close a Store app are not permitted according to the [Microsoft Store policies](/windows/apps/publish/store-policies). For more information, see [UWP app lifecycle](/windows/uwp/launch-resume/app-lifecycle). ## Syntax diff --git a/docs/c-runtime-library/reference/set-abort-behavior.md b/docs/c-runtime-library/reference/set-abort-behavior.md index 1abfb48f289..957edb74302 100644 --- a/docs/c-runtime-library/reference/set-abort-behavior.md +++ b/docs/c-runtime-library/reference/set-abort-behavior.md @@ -14,7 +14,7 @@ helpviewer_keywords: ["aborting programs", "_set_abort_behavior function", "set_ Specifies the action to be taken when a program is abnormally terminated. > [!NOTE] -> Do not use the [`abort`](abort.md) function to shut down a Microsoft Store app, except in testing or debugging scenarios. Programmatic or UI ways to close a Store app are not permitted according to the [Microsoft Store policies](/legal/windows/agreements/store-policies). For more information, see [UWP app lifecycle](/windows/uwp/launch-resume/app-lifecycle). +> Do not use the [`abort`](abort.md) function to shut down a Microsoft Store app, except in testing or debugging scenarios. Programmatic or UI ways to close a Store app are not permitted according to the [Microsoft Store policies](/windows/apps/publish/store-policies). For more information, see [UWP app lifecycle](/windows/uwp/launch-resume/app-lifecycle). ## Syntax diff --git a/docs/c-runtime-library/reference/signal.md b/docs/c-runtime-library/reference/signal.md index a9c623188ff..ad4bd650a1d 100644 --- a/docs/c-runtime-library/reference/signal.md +++ b/docs/c-runtime-library/reference/signal.md @@ -14,7 +14,7 @@ helpviewer_keywords: ["signal function"] Sets interrupt signal handling. > [!IMPORTANT] -> Do not use this method to shut down a Microsoft Store app, except in testing or debugging scenarios. Programmatic or UI ways to close a Store app are not permitted according to the [Microsoft Store policies](/legal/windows/agreements/store-policies). For more information, see [UWP app lifecycle](/windows/uwp/launch-resume/app-lifecycle). +> Do not use this method to shut down a Microsoft Store app, except in testing or debugging scenarios. Programmatic or UI ways to close a Store app are not permitted according to the [Microsoft Store policies](/windows/apps/publish/store-policies). For more information, see [UWP app lifecycle](/windows/uwp/launch-resume/app-lifecycle). ## Syntax diff --git a/docs/code-quality/build-reliable-secure-programs.md b/docs/code-quality/build-reliable-secure-programs.md index e7b8ef8aafb..2b9437d5743 100644 --- a/docs/code-quality/build-reliable-secure-programs.md +++ b/docs/code-quality/build-reliable-secure-programs.md @@ -205,11 +205,10 @@ GitHub provides known patterns of secrets for partners and users that can be con **Additional resources** -- [Credential Scanning | Microsoft Code With Engineering Playbook](https://microsoft.github.io/code-with-engineering-playbook/continuous-integration/dev-sec-ops/secret-management/credential_scanning/). -- [detect-secrets: Credential scanning tool | GitHub](https://microsoft.github.io/code-with-engineering-playbook/continuous-integration/dev-sec-ops/secret-management/recipes/detect-secrets/) - an aptly named module for detecting secrets within a code base. -- [Running detect-secrets in Azure Pipelines](https://microsoft.github.io/code-with-engineering-playbook/continuous-integration/dev-sec-ops/secret-management/recipes/detect-secrets-ado/). +- [Credential Scanning | Microsoft Code With Engineering Playbook](https://microsoft.github.io/code-with-engineering-playbook/CI-CD/dev-sec-ops/secrets-management/credential_scanning/). +- [detect-secrets: Credential scanning tool | GitHub](https://microsoft.github.io/code-with-engineering-playbook/CI-CD/dev-sec-ops/secrets-management/recipes/detect-secrets-ado/) - an aptly named module for detecting secrets within a code base. - [Git-secrets | GitHub awslabs](https://github.com/awslabs/git-secrets) - prevents you from committing passwords and other sensitive information to a git repository. -- [Secrets Management | Microsoft Code with Engineering Playbook](https://microsoft.github.io/code-with-engineering-playbook/continuous-delivery/secrets-management/) - provides general guidelines on how secrets should be managed. +- [Secrets Management | Microsoft Code with Engineering Playbook](https://microsoft.github.io/code-with-engineering-playbook/CI-CD/dev-sec-ops/secrets-management/) - provides general guidelines on how secrets should be managed. ## 2.5 Run with language- and OS-provided checks and protection diff --git a/docs/data/odbc/odbc-and-mfc.md b/docs/data/odbc/odbc-and-mfc.md index 5f25751635a..4b00a1915be 100644 --- a/docs/data/odbc/odbc-and-mfc.md +++ b/docs/data/odbc/odbc-and-mfc.md @@ -8,7 +8,7 @@ ms.assetid: 98f02fd7-1235-437b-89a9-edfd0fc797f7 # ODBC and MFC > [!NOTE] -> To use the MFC database classes, you must have the appropriate ODBC driver for your data source. The lastest Microsoft ODBC driver for SQL Server is [Microsoft ODBC Driver 13 for SQL Server](https://www.microsoft.com/download/details.aspx?id=50420). Most database vendors provide an ODBC driver for Windows. +> To use the MFC database classes, you must have the appropriate ODBC driver for your data source. The lastest Microsoft ODBC driver for SQL Server is [Microsoft ODBC Driver 18 for SQL Server](/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-ver16). Most database vendors provide an ODBC driver for Windows. This topic introduces the main concepts of the Microsoft Foundation Classes (MFC) library's ODBC-based database classes and provides an overview of how the classes work together. For more information about ODBC and MFC, see the following topics: diff --git a/docs/intrinsics/x64-amd64-intrinsics-list.md b/docs/intrinsics/x64-amd64-intrinsics-list.md index 555087d4d50..967215bfa08 100644 --- a/docs/intrinsics/x64-amd64-intrinsics-list.md +++ b/docs/intrinsics/x64-amd64-intrinsics-list.md @@ -13,7 +13,7 @@ For information about individual intrinsics, see these resources, as appropriate - The header file. Many intrinsics are documented in comments in the header file. -- [Intel Intrinsics Guide](https://software.intel.com/sites/landingpage/IntrinsicsGuide). Use the search box to find specific intrinsics. +- [Intel Intrinsics Guide](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html). Use the search box to find specific intrinsics. - [Intel 64 and IA-32 Architectures Software Developer Manuals](https://software.intel.com/articles/intel-sdm) 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 1f4d4992e3f..c94d758d41d 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 @@ -491,7 +491,7 @@ A partial list of new features in 17.2: - When you select the start and end values for the stack pointer in the RTOS tool window, it opens in the memory window. - Added thread awareness for device targets to the call stack window. - Users can now select a pin icon next to peripherals, registers, or fields to pin them the top of the Peripheral View. -- Added implementations of the remaining C++20 defect reports (also known as *backports*). All C++20 features are now available under the **`/std:c++20`** option. For more information about the implemented backports, see the [C++20 Defect Reports project](https://github.com/microsoft/STL/projects/9) in the Microsoft/STL GitHub repository and the [MSVC's STL Completes `/std:c++20`](https://devblogs.microsoft.com/cppblog/msvcs-stl-completes-stdc20/) blog post. +- Added implementations of the remaining C++20 defect reports (also known as *backports*). All C++20 features are now available under the **`/std:c++20`** option. For more information about the implemented backports, see the [MSVC's STL Completes `/std:c++20`](https://devblogs.microsoft.com/cppblog/msvcs-stl-completes-stdc20/) blog post. - We added various C++23 Library features, available under the **`/std:c++latest`** option. For more information about the new features, see the [STL Repo changelog](https://github.com/microsoft/STL/wiki/Changelog). - Improved performance of the initial C++ indexing by up to 20%, depending on the depth of the include graph. From 853eca8e03018c7014998dca96bb4c1d8fa7156a Mon Sep 17 00:00:00 2001 From: Justin Piesco <107575186+JustPies@users.noreply.github.com> Date: Wed, 26 Feb 2025 13:12:03 -0500 Subject: [PATCH 0207/2255] updated link --- docs/build/customize-cmake-settings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/customize-cmake-settings.md b/docs/build/customize-cmake-settings.md index 078c550ff55..3ccdd13da63 100644 --- a/docs/build/customize-cmake-settings.md +++ b/docs/build/customize-cmake-settings.md @@ -72,7 +72,7 @@ For configurations such as Linux that use remote builds, the following settings ### `rsync` command arguments -Extra command-line options passed to [`rsync`](https://download.samba.org/pub/rsync/rsync.html), a fast, versatile file-copying tool. +Extra command-line options passed to [`rsync`](https://download.samba.org/pub/rsync/), a fast, versatile file-copying tool. ## CMake variables and cache From a3a76029d1778a6ceb3223aa6d2a4ea8b591feb1 Mon Sep 17 00:00:00 2001 From: Justin Piesco <107575186+JustPies@users.noreply.github.com> Date: Wed, 26 Feb 2025 13:45:43 -0500 Subject: [PATCH 0208/2255] fixed view --- docs/c-runtime-library/crt-debugging-techniques.md | 4 ++-- .../find-memory-leaks-using-the-crt-library.md | 6 +++--- docs/data/odbc/odbc-and-mfc.md | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/c-runtime-library/crt-debugging-techniques.md b/docs/c-runtime-library/crt-debugging-techniques.md index f84d68a3c0d..39d625f0e13 100644 --- a/docs/c-runtime-library/crt-debugging-techniques.md +++ b/docs/c-runtime-library/crt-debugging-techniques.md @@ -169,5 +169,5 @@ If the hook handles the message in question completely, so that no further repor ## See also -- [Debugging Native Code](/visualstudio/debugger/debugging-native-code?view=vs-2022) -- [Debugger Security](/visualstudio/debugger/debugger-security?view=vs-2022) +- [Debugging Native Code](/visualstudio/debugger/debugging-native-code) +- [Debugger Security](/visualstudio/debugger/debugger-security) diff --git a/docs/c-runtime-library/find-memory-leaks-using-the-crt-library.md b/docs/c-runtime-library/find-memory-leaks-using-the-crt-library.md index 9b8c5c1bb45..0c522131f92 100644 --- a/docs/c-runtime-library/find-memory-leaks-using-the-crt-library.md +++ b/docs/c-runtime-library/find-memory-leaks-using-the-crt-library.md @@ -216,7 +216,7 @@ You can use the allocation number to set a breakpoint on the memory allocation. After you set a breakpoint on a memory-allocation number, continue to debug. Make sure to run under the same conditions, so the memory-allocation number doesn't change. When your program breaks at the specified memory allocation, use the **Call Stack** window and other debugger windows to determine the conditions under which the memory was allocated. Then, you can continue execution to observe what happens to the object and determine why it isn't correctly deallocated. -Setting a data breakpoint on the object might also be helpful. For more information, see [Using breakpoints](/visualstudio/debugger/using-breakpoints?view=vs-2022). +Setting a data breakpoint on the object might also be helpful. For more information, see [Using breakpoints](/visualstudio/debugger/using-breakpoints). You can also set memory-allocation breakpoints in code. You can set: @@ -281,5 +281,5 @@ One technique for finding memory leaks begins by placing `_CrtMemCheckpoint` cal ## See also - [CRT debug heap details](./crt-debug-heap-details.md) -- [Debugger security](/visualstudio/debugger/debugger-security?view=vs-2022) -- [Debugging native code](/visualstudio/debugger/debugging-native-code?view=vs-2022) +- [Debugger security](/visualstudio/debugger/debugger-security) +- [Debugging native code](/visualstudio/debugger/debugging-native-code) diff --git a/docs/data/odbc/odbc-and-mfc.md b/docs/data/odbc/odbc-and-mfc.md index 4b00a1915be..2a38869720d 100644 --- a/docs/data/odbc/odbc-and-mfc.md +++ b/docs/data/odbc/odbc-and-mfc.md @@ -8,7 +8,7 @@ ms.assetid: 98f02fd7-1235-437b-89a9-edfd0fc797f7 # ODBC and MFC > [!NOTE] -> To use the MFC database classes, you must have the appropriate ODBC driver for your data source. The lastest Microsoft ODBC driver for SQL Server is [Microsoft ODBC Driver 18 for SQL Server](/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-ver16). Most database vendors provide an ODBC driver for Windows. +> To use the MFC database classes, you must have the appropriate ODBC driver for your data source. The lastest Microsoft ODBC driver for SQL Server is [Microsoft ODBC Driver 18 for SQL Server](/sql/connect/odbc/download-odbc-driver-for-sql-server. Most database vendors provide an ODBC driver for Windows. This topic introduces the main concepts of the Microsoft Foundation Classes (MFC) library's ODBC-based database classes and provides an overview of how the classes work together. For more information about ODBC and MFC, see the following topics: From 9fc342adc27e17d49bcef2336a1925d7f2402c8a Mon Sep 17 00:00:00 2001 From: Justin Piesco <107575186+JustPies@users.noreply.github.com> Date: Wed, 26 Feb 2025 14:42:18 -0500 Subject: [PATCH 0209/2255] added found alternative --- docs/code-quality/build-reliable-secure-programs.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/code-quality/build-reliable-secure-programs.md b/docs/code-quality/build-reliable-secure-programs.md index 2b9437d5743..fb06216c8ff 100644 --- a/docs/code-quality/build-reliable-secure-programs.md +++ b/docs/code-quality/build-reliable-secure-programs.md @@ -206,7 +206,8 @@ GitHub provides known patterns of secrets for partners and users that can be con **Additional resources** - [Credential Scanning | Microsoft Code With Engineering Playbook](https://microsoft.github.io/code-with-engineering-playbook/CI-CD/dev-sec-ops/secrets-management/credential_scanning/). -- [detect-secrets: Credential scanning tool | GitHub](https://microsoft.github.io/code-with-engineering-playbook/CI-CD/dev-sec-ops/secrets-management/recipes/detect-secrets-ado/) - an aptly named module for detecting secrets within a code base. +- [detect-secrets: Credential scanning tool | GitHub](https://microsoft.github.io/code-with-engineering-playbook/CI-CD/dev-sec-ops/secrets-management/recipes/detect-secrets/) - an aptly named module for detecting secrets within a code base. +- [Running detect-secrets in Azure Pipelines](https://microsoft.github.io/code-with-engineering-playbook/CI-CD/dev-sec-ops/secrets-management/recipes/detect-secrets-ado/). - [Git-secrets | GitHub awslabs](https://github.com/awslabs/git-secrets) - prevents you from committing passwords and other sensitive information to a git repository. - [Secrets Management | Microsoft Code with Engineering Playbook](https://microsoft.github.io/code-with-engineering-playbook/CI-CD/dev-sec-ops/secrets-management/) - provides general guidelines on how secrets should be managed. From 2e933b5f967259fb54b35e27394350efb6d6c8f2 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 26 Feb 2025 15:39:08 -0800 Subject: [PATCH 0210/2255] draft --- docs/build/how-to-debug-a-release-build.md | 2 +- docs/build/reference/dynamic-deopt-linker.md | 17 +++---- docs/build/reference/dynamic-deopt.md | 52 ++++++++++---------- docs/build/reference/linker-options.md | 2 +- 4 files changed, 35 insertions(+), 38 deletions(-) diff --git a/docs/build/how-to-debug-a-release-build.md b/docs/build/how-to-debug-a-release-build.md index 4d27f9e885d..d35055e4b04 100644 --- a/docs/build/how-to-debug-a-release-build.md +++ b/docs/build/how-to-debug-a-release-build.md @@ -8,7 +8,7 @@ helpviewer_keywords: ["debugging [C++], release builds", "release builds, debugg This article explains which compiler and linker switches to set to enable you to debug a release build of an application. -A much better experience is available starting in Visual Studio 2022 version 17.14 that allows you to debug optimized code as if it were compiled unoptimized, while retaining the speed of optimized code. For more information, see [C++ Dynamic Debugging](/visualstudio/debugger/dynamic-deopt.md). +A better experience is available starting in Visual Studio 2022 version 17.14 that allows you to debug optimized code as if it were compiled unoptimized, while retaining the speed of optimized code. For more information, see [C++ Dynamic Debugging](/visualstudio/debugger/dynamic-deopt.md). ## To debug a release build diff --git a/docs/build/reference/dynamic-deopt-linker.md b/docs/build/reference/dynamic-deopt-linker.md index 763d9ab7150..6006ea55898 100644 --- a/docs/build/reference/dynamic-deopt-linker.md +++ b/docs/build/reference/dynamic-deopt-linker.md @@ -1,23 +1,21 @@ --- -description: "Learn more about: /DEBUGDEOPT (Support C++ Dynamic Debugging)" -title: "/DEBUGDEOPT (Support C++ Dynamic Debugging)" +description: "Learn more about: /DYNAMICDEOPT (Support C++ Dynamic Debugging)" +title: "/DYNAMICDEOPT (Support C++ Dynamic Debugging)" ms.date: 3/11/2025 f1_keywords: ["VC.Project.VCLinkerTool.GenerateDynamicDeoptInformation", "/dynamicdeopt"] -helpviewer_keywords: ["DYNAMICDEOPT linker option", "/DYNAMICDEOPT linker option", "-DYNAMICDEOPT linker option", "c++ dynanmic debugging"] +helpviewer_keywords: ["DYNAMICDEOPT linker option", "/DYNAMICDEOPT linker option", "-DYNAMICDEOPT linker option", "c++ dynamic debugging"] --- -# | `/DEBUGDEOPT` (Support C++ Dynamic Debugging) +# | `/DYNAMICDEOPT` (Support C++ Dynamic Debugging) -The **`/DEBUGDEOPT`** linker option enables C++ Dynamic Debugging which allows you to debug optimized code as if it were deoptimized. This option is only available in Visual Studio 2022 Version 17.14 Preview 2 and later, and only for x64 code. +The **`/DYNAMICDEOPT`** linker option enables [C++ Dynamic Debugging](/visualstudio/debugger/cpp-dynamic-debugging.md), which allows you to debug optimized code as if it were compiled deoptimized. ## Syntax -> **`/DEBUGDEOPT`** +> **`/DYNAMICDEOPT`** ## Remarks -This flag is only available for x64 builds. - -The **`/DEBUGDEOPT`** option creates puts the debugging information from linked object and library files into a program database (PDB) file. It updates the PDB during subsequent builds of the program. +This flag, available starting with Visual Studio 2022 Version 17.14 Preview 2, applies only to x64 projects. ### To set this linker option in the Visual Studio development environment @@ -32,5 +30,6 @@ The **`/DEBUGDEOPT`** option creates puts the debugging information from linked ## See also +[C++ Dynamic Debugging](/visualstudio/debugger/cpp-dynamic-debugging.md)\ [MSVC linker reference](linking.md)\ [MSVC linker options](linker-options.md) diff --git a/docs/build/reference/dynamic-deopt.md b/docs/build/reference/dynamic-deopt.md index c0d4b05b526..6ea96da00c9 100644 --- a/docs/build/reference/dynamic-deopt.md +++ b/docs/build/reference/dynamic-deopt.md @@ -1,36 +1,31 @@ --- title: "/dynamicdeopt (Enable C++ Dynamic Debugging)" -description: "Use the Microsoft C++ compiler option /clr to compile C++/CLI and C++ code as managed code." +description: "Use the Microsoft C++ compiler option /dynamicdeopt to use C++ Dynamic Debugging." ms.date: 3/11/2025 f1_keywords: ["/dynamicdeopt", "VC.Project.VCNMakeTool.CompileAsManaged", "VC.Project.VCCLCompilerTool.CompileAsManaged"] helpviewer_keywords: ["cl.exe compiler, common language runtime option", "-dynamicdeopt compiler option [C++]", "dynamicdeopt compiler option [C++]", "/clr compiler option [C++]", "Managed Extensions for C++, compiling", "common language runtime, /clr compiler option"] --- # `/dynamicdeopt` (Enable C++ Dynamic Debugging) -Debug optimized code as if it were compiled unoptimized. +Enable [C++ Dynamic Debugging](/visualstudio/debugger/cpp-dynamic-debugging.md) so you can debug optimized code as if it were compiled deoptimized. ## Syntax > **`/dynamicdeopt`** > **`/dynamicdeopt:suffix `** -> **`/dynamicdeopt:sync`** ## Arguments *`suffix`*\ -Specify the file extension for the deoptimized output. One or more of the following comma-separated arguments. +Specify the file extension for the deoptimized output. -• `/dynamicdeopt:suffix` lets you change that new suffix from `.alt` to something else. Be aware that if you change the suffix, that the suffix must be changed for every file, and it also needs to match the same name passed to the linker. You typically won't use this switch unless you already have files named filename.alt.cpp and you would prefer a different suffix. +With no options and given `test.cpp` as input, your output will include `test.obj`, `test.exe`, and `test.pdb`, as well as `test.alt.obj`, `test.alt.exe`, and ``test.alt.pdb`. This switch allows you to change the suffix of the unoptimized binary build artifacts from `.alt` to something else. If you change the suffix, all files must use the new suffix, and it needs to match the name passed to the linker. You typically won't use this switch unless you need to avoid filename collisions with other files that you have. ## Remarks -This flag is only available for x64 builds. The linker must also be passed [`/DYNAMICDEOPT`](dynamic-deopt-linker.md) to enable C++ Dynamic Debugging. +This flag, available starting with Visual Studio 2022 Version 17.14 Preview 2, applies only to x64 projects. -Compiling with `/dynamicdeopt` generates additional binaries that are used for debugging. When you debug an optimized file and step into an optimized function, the debugger steps into the alternate binary. This allows you to debug as if you are building unoptimized code while still getting the performance advantages of building optimized code. - -Place breakpoints in optimized code and step in anywhere with on-demand function deoptimization - -With no options, given `test.cpp` as input your output will include `test.obj`, `test.exe`, and `test.pdb`, as well as `test.alt.obj`, `test.alt.exe`, and ``test.alt.pdb`. +Compiling with `/dynamicdeopt` generates additional binaries that are used for debugging. When you debug an optimized file and debug into an optimized function, the debugger steps into the alternate binary instead. This allows you to debug as if you are debugging unoptimized code while still getting the performance advantages of optimized code. `/dynamicdeopt` requires: @@ -38,22 +33,24 @@ With no options, given `test.cpp` as input your output will include `test.obj`, If you specify `/INCREMENTAL`, the compiler generates a warning and automatically turns off `/INCREMENTAL`. If you specify `/OPT:ICF`, the compiler generates a warning that the debug experience isn't as good. This is because ICF can cause functions to be removed from the alt file, which means you can't step into them. -`/dynamicdeopt1` is incompatible with the following compiler switches, which also means that edit-and-continue is incompatible with C++ Dynamic Debugging: - - `/GL` - `/ZI` - `/RTC1` - `/RTCs` - `/RTCc` - `/RTCu` - `/GH` - `/Gh` - `/fastcap` - `/callcap` - ALL_CLR_FLAGS AND_ALSO - `/ZW` - `fsanitize=address` - `fsanitize=kernel-address` +`/dynamicdeopt1` is incompatible with edit-and-continue and the following compiler switches: + +```cpp +/GL +/ZI +/RTC1 +/RTCs +/RTCc +/RTCu +/GH +/Gh +/fastcap +/callcap +/ZW +fsanitize=address +fsanitize=kernel-address +All of the CLR flags +``` Turn `/GL `off via Project properties C/C++ > Optimization > Whole Program Optimization. Set it to **No**. TUrn `/OPT:ICF` off in Project properties Linker > Optimization > Enable COMDAT Folding. Set it to **No**. @@ -64,5 +61,6 @@ TUrn `/OPT:ICF` off in Project properties Linker > Optimization > Enable COMDAT ## See also +[C++ Dynamic Debugging](/visualstudio/debugger/cpp-dynamic-debugging.md)\ [MSVC Compiler Options](compiler-options.md)\ [MSVC Compiler Command-Line Syntax](compiler-command-line-syntax.md) diff --git a/docs/build/reference/linker-options.md b/docs/build/reference/linker-options.md index a126111e98f..44a4e4020ae 100644 --- a/docs/build/reference/linker-options.md +++ b/docs/build/reference/linker-options.md @@ -42,7 +42,7 @@ You can use the [`comment`](../../preprocessor/comment-c-cpp.md) pragma to speci | [`/CLRTHREADATTRIBUTE`](clrthreadattribute-set-clr-thread-attribute.md) | Specifies the threading attribute to apply to the entry point of your CLR program. | | [`/CLRUNMANAGEDCODECHECK`](clrunmanagedcodecheck-add-suppressunmanagedcodesecurityattribute.md) | Specifies whether the linker applies the `SuppressUnmanagedCodeSecurity` attribute to linker-generated P/Invoke stubs that call from managed code into native DLLs. | | [`/DEBUG`](debug-generate-debug-info.md) | Creates debugging information. | -| [`/DYNAMICDEOPT`](dyanmic-deopt-linkder.md) | Enable C++ Dynamic Debugging to debug optimized code as if it were deoptimized. | +| [`/DYNAMICDEOPT`](dynamic-deopt-linker.md) | Enable [C++ Dynamic Debugging](/visualstudio/debugger/cpp-dynamic-debugging.md) so you can debug optimized code as if it were copmiled deoptimized. | | [`/DEBUGTYPE`](debugtype-debug-info-options.md) | Specifies which data to include in debugging information. | | [`/DEF`](def-specify-module-definition-file.md) | Passes a module-definition (.def) file to the linker. | | [`/DEFAULTLIB`](defaultlib-specify-default-library.md) | Searches the specified library when external references are resolved. | From 2e241c6e89bd102ee3bd0c42bbeda5e030625c9f Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 26 Feb 2025 16:25:20 -0800 Subject: [PATCH 0211/2255] draft --- docs/build/reference/compiler-options-listed-alphabetically.md | 2 +- docs/build/reference/compiler-options-listed-by-category.md | 2 +- docs/build/reference/dynamic-deopt-linker.md | 2 +- docs/build/reference/dynamic-deopt.md | 2 +- docs/build/reference/linker-options.md | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/build/reference/compiler-options-listed-alphabetically.md b/docs/build/reference/compiler-options-listed-alphabetically.md index 01159f65cb5..82b9c94c7e2 100644 --- a/docs/build/reference/compiler-options-listed-alphabetically.md +++ b/docs/build/reference/compiler-options-listed-alphabetically.md @@ -37,7 +37,7 @@ This table contains an alphabetical list of compiler options. For a list of comp | [`/constexpr:depth`](constexpr-control-constexpr-evaluation.md) | Recursion depth limit for `constexpr` evaluation (default: 512). | | [`/constexpr:steps`](constexpr-control-constexpr-evaluation.md) | Terminate `constexpr` evaluation after N steps (default: 100000) | | [`/D{=|#}`](d-preprocessor-definitions.md) | Defines constants and macros. | -| [`/dynamicdeopt`](dynamic-deopt.md) | Enable C++ Dynamic Debugging to debug optimized code as if it were deoptimized. | +| [`/dynamicdeopt`](dynamic-deopt.md) | Enable [C++ Dynamic Debugging](/visualstudio/debugger/cpp-dynamic-debugging.md) to debug optimized code as if it had been compiled deoptimized. | | [`/diagnostics`](diagnostics-compiler-diagnostic-options.md) | Diagnostics format: prints column information. | | [`/diagnostics:caret[-]`](diagnostics-compiler-diagnostic-options.md) | Diagnostics format: prints column and the indicated line of source. | | [`/diagnostics:classic`](diagnostics-compiler-diagnostic-options.md) | Use legacy diagnostics format. | diff --git a/docs/build/reference/compiler-options-listed-by-category.md b/docs/build/reference/compiler-options-listed-by-category.md index a3b0c97ad5e..359c9f178b6 100644 --- a/docs/build/reference/compiler-options-listed-by-category.md +++ b/docs/build/reference/compiler-options-listed-by-category.md @@ -12,7 +12,7 @@ This article contains a categorical list of compiler options. For an alphabetica | Option | Purpose | |--|--| -| [`/dynamicdeopt`](dynamic-deopt.md) | Enable C++ Dynamic Debugging to debug optimized code as if it were deoptimized. | +| [`/dynamicdeopt`](dynamic-deopt.md) | Enable [C++ Dynamic Debugging](/visualstudio/debugger/cpp-dynamic-debugging.md) to debug optimized code as if it had been compiled deoptimized. | | [`/favor:`](favor-optimize-for-architecture-specifics.md) | Produces code that is optimized for a specified architecture, or for a range of architectures. | | [`/O1`](o1-o2-minimize-size-maximize-speed.md) | Creates small code. | | [`/O2`](o1-o2-minimize-size-maximize-speed.md) | Creates fast code. | diff --git a/docs/build/reference/dynamic-deopt-linker.md b/docs/build/reference/dynamic-deopt-linker.md index 6006ea55898..f5c387bff89 100644 --- a/docs/build/reference/dynamic-deopt-linker.md +++ b/docs/build/reference/dynamic-deopt-linker.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["DYNAMICDEOPT linker option", "/DYNAMICDEOPT linker option --- # | `/DYNAMICDEOPT` (Support C++ Dynamic Debugging) -The **`/DYNAMICDEOPT`** linker option enables [C++ Dynamic Debugging](/visualstudio/debugger/cpp-dynamic-debugging.md), which allows you to debug optimized code as if it were compiled deoptimized. +The **`/DYNAMICDEOPT`** linker option enables [C++ Dynamic Debugging](/visualstudio/debugger/cpp-dynamic-debugging.md), which allows you to debug optimized code as if it had been compiled deoptimized. ## Syntax diff --git a/docs/build/reference/dynamic-deopt.md b/docs/build/reference/dynamic-deopt.md index 6ea96da00c9..283dc2e3d4a 100644 --- a/docs/build/reference/dynamic-deopt.md +++ b/docs/build/reference/dynamic-deopt.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["cl.exe compiler, common language runtime option", "-dynam --- # `/dynamicdeopt` (Enable C++ Dynamic Debugging) -Enable [C++ Dynamic Debugging](/visualstudio/debugger/cpp-dynamic-debugging.md) so you can debug optimized code as if it were compiled deoptimized. +Enable [C++ Dynamic Debugging](/visualstudio/debugger/cpp-dynamic-debugging.md) so you can debug optimized code as if it had been compiled deoptimized. ## Syntax diff --git a/docs/build/reference/linker-options.md b/docs/build/reference/linker-options.md index 44a4e4020ae..9a86902b308 100644 --- a/docs/build/reference/linker-options.md +++ b/docs/build/reference/linker-options.md @@ -42,7 +42,7 @@ You can use the [`comment`](../../preprocessor/comment-c-cpp.md) pragma to speci | [`/CLRTHREADATTRIBUTE`](clrthreadattribute-set-clr-thread-attribute.md) | Specifies the threading attribute to apply to the entry point of your CLR program. | | [`/CLRUNMANAGEDCODECHECK`](clrunmanagedcodecheck-add-suppressunmanagedcodesecurityattribute.md) | Specifies whether the linker applies the `SuppressUnmanagedCodeSecurity` attribute to linker-generated P/Invoke stubs that call from managed code into native DLLs. | | [`/DEBUG`](debug-generate-debug-info.md) | Creates debugging information. | -| [`/DYNAMICDEOPT`](dynamic-deopt-linker.md) | Enable [C++ Dynamic Debugging](/visualstudio/debugger/cpp-dynamic-debugging.md) so you can debug optimized code as if it were copmiled deoptimized. | +| [`/DYNAMICDEOPT`](dynamic-deopt-linker.md) | Enable [C++ Dynamic Debugging](/visualstudio/debugger/cpp-dynamic-debugging.md) to debug optimized code as if it had been compiled deoptimized. | | [`/DEBUGTYPE`](debugtype-debug-info-options.md) | Specifies which data to include in debugging information. | | [`/DEF`](def-specify-module-definition-file.md) | Passes a module-definition (.def) file to the linker. | | [`/DEFAULTLIB`](defaultlib-specify-default-library.md) | Searches the specified library when external references are resolved. | From ec16428a654e2550af662dcd81b8d2184f522c5e Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 26 Feb 2025 16:38:39 -0800 Subject: [PATCH 0212/2255] acrolinx --- .../reference/compiler-options-listed-alphabetically.md | 2 +- docs/build/reference/dynamic-deopt.md | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/build/reference/compiler-options-listed-alphabetically.md b/docs/build/reference/compiler-options-listed-alphabetically.md index 82b9c94c7e2..a684465018f 100644 --- a/docs/build/reference/compiler-options-listed-alphabetically.md +++ b/docs/build/reference/compiler-options-listed-alphabetically.md @@ -84,7 +84,7 @@ This table contains an alphabetical list of compiler options. For a list of comp | [`/fsanitize`](fsanitize.md) | Enables compilation of sanitizer instrumentation such as AddressSanitizer. | | [`/fsanitize-coverage`](fsanitize-coverage.md) | Enables compilation of code coverage instrumentation for libraries such as LibFuzzer. | | `/Ft

` | Location of the header files generated for `#import`. | -| [`/FU`](fu-name-forced-hash-using-file.md) | Forces the use of a file name, as if it had been passed to the [`#using`](../../preprocessor/hash-using-directive-cpp.md) directive. | +| [`/FU`](fu-name-forced-hash-using-file.md) | Forces the use of a file name, as if it were passed to the [`#using`](../../preprocessor/hash-using-directive-cpp.md) directive. | | [`/Fx`](fx-merge-injected-code.md) | Merges injected code with the source file. | | [`/GA`](ga-optimize-for-windows-application.md) | Optimizes for Windows applications. | | [`/Gd`](gd-gr-gv-gz-calling-convention.md) | Uses the **`__cdecl`** calling convention. (x86 only) | diff --git a/docs/build/reference/dynamic-deopt.md b/docs/build/reference/dynamic-deopt.md index 283dc2e3d4a..5776c653936 100644 --- a/docs/build/reference/dynamic-deopt.md +++ b/docs/build/reference/dynamic-deopt.md @@ -19,13 +19,13 @@ Enable [C++ Dynamic Debugging](/visualstudio/debugger/cpp-dynamic-debugging.md) *`suffix`*\ Specify the file extension for the deoptimized output. -With no options and given `test.cpp` as input, your output will include `test.obj`, `test.exe`, and `test.pdb`, as well as `test.alt.obj`, `test.alt.exe`, and ``test.alt.pdb`. This switch allows you to change the suffix of the unoptimized binary build artifacts from `.alt` to something else. If you change the suffix, all files must use the new suffix, and it needs to match the name passed to the linker. You typically won't use this switch unless you need to avoid filename collisions with other files that you have. +With no options and given `test.cpp` as input, your output includes `test.obj`, `test.exe`, and `test.pdb`, as well as `test.alt.obj`, `test.alt.exe`, and ``test.alt.pdb`. This switch allows you to change the suffix of the unoptimized binary build artifacts from `.alt` to something else. If you change the suffix, all files must use the new suffix, and it needs to match the name passed to the linker. You typically won't use this switch unless you need to avoid filename collisions with other files that you have. ## Remarks This flag, available starting with Visual Studio 2022 Version 17.14 Preview 2, applies only to x64 projects. -Compiling with `/dynamicdeopt` generates additional binaries that are used for debugging. When you debug an optimized file and debug into an optimized function, the debugger steps into the alternate binary instead. This allows you to debug as if you are debugging unoptimized code while still getting the performance advantages of optimized code. +Compiling with `/dynamicdeopt` generates other binaries that are used for debugging. When you debug an optimized file and debug into an optimized function, the debugger steps into the alternate binary instead. This allows you to debug as if you're debugging unoptimized code while still getting the performance advantages of optimized code. `/dynamicdeopt` requires: @@ -53,7 +53,7 @@ All of the CLR flags ``` Turn `/GL `off via Project properties C/C++ > Optimization > Whole Program Optimization. Set it to **No**. -TUrn `/OPT:ICF` off in Project properties Linker > Optimization > Enable COMDAT Folding. Set it to **No**. +Turn `/OPT:ICF` off in Project properties Linker > Optimization > Enable COMDAT Folding. Set it to **No**. ### To set this compiler option programmatically From 4f491340378d72dac3c7f280093ced1c0e6d0225 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 26 Feb 2025 16:55:03 -0800 Subject: [PATCH 0213/2255] acrolinx --- docs/build/reference/dynamic-deopt.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build/reference/dynamic-deopt.md b/docs/build/reference/dynamic-deopt.md index 5776c653936..7b08a72926c 100644 --- a/docs/build/reference/dynamic-deopt.md +++ b/docs/build/reference/dynamic-deopt.md @@ -19,7 +19,7 @@ Enable [C++ Dynamic Debugging](/visualstudio/debugger/cpp-dynamic-debugging.md) *`suffix`*\ Specify the file extension for the deoptimized output. -With no options and given `test.cpp` as input, your output includes `test.obj`, `test.exe`, and `test.pdb`, as well as `test.alt.obj`, `test.alt.exe`, and ``test.alt.pdb`. This switch allows you to change the suffix of the unoptimized binary build artifacts from `.alt` to something else. If you change the suffix, all files must use the new suffix, and it needs to match the name passed to the linker. You typically won't use this switch unless you need to avoid filename collisions with other files that you have. +With no options and given `test.cpp` as input, your output includes `test.obj`, `test.exe`, and `test.pdb`, as well as `test.alt.obj`, `test.alt.exe`, and ``test.alt.pdb`. This switch allows you to change the suffix of the unoptimized binary build artifacts from `.alt` to something else. If you change the suffix, all files must use the new suffix, and it needs to match the name passed to the linker. You typically don't use this switch unless you need to avoid filename collisions with other files that you have. ## Remarks @@ -29,7 +29,7 @@ Compiling with `/dynamicdeopt` generates other binaries that are used for debugg `/dynamicdeopt` requires: -`/DEBUG` or `/DEBUG:FULL`. If you don't specify `/DEBUG`, or `/DEBUG:FASTLINK` the linker will give a fatal error. +`/DEBUG` or `/DEBUG:FULL`. If you don't specify `/DEBUG`, or `/DEBUG:FASTLINK` the linker gives a fatal error. If you specify `/INCREMENTAL`, the compiler generates a warning and automatically turns off `/INCREMENTAL`. If you specify `/OPT:ICF`, the compiler generates a warning that the debug experience isn't as good. This is because ICF can cause functions to be removed from the alt file, which means you can't step into them. From f4f9d1f13bfdcb01f2346128a24572fd900ae27e Mon Sep 17 00:00:00 2001 From: Mahmoud Saleh <12202790+MahmoudGSaleh@users.noreply.github.com> Date: Wed, 26 Feb 2025 22:13:14 -0800 Subject: [PATCH 0214/2255] Update latest redist version --- docs/windows/latest-supported-vc-redist.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index 6bdd20c2899..095b3eef4af 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -31,7 +31,7 @@ Unlike older versions of Visual Studio, which have infrequent redist updates, th ## Latest Microsoft Visual C++ Redistributable Version -The latest version is `14.42.34433.0` +The latest version is `14.42.34438.0` Use the following links to download this version for each supported architecture: From 622643a3146c04c2a0308d21291768de1e7b2323 Mon Sep 17 00:00:00 2001 From: Justin Piesco <107575186+JustPies@users.noreply.github.com> Date: Thu, 27 Feb 2025 09:33:07 -0500 Subject: [PATCH 0215/2255] applied requested revision --- docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 c94d758d41d..49f969d6121 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 @@ -491,7 +491,7 @@ A partial list of new features in 17.2: - When you select the start and end values for the stack pointer in the RTOS tool window, it opens in the memory window. - Added thread awareness for device targets to the call stack window. - Users can now select a pin icon next to peripherals, registers, or fields to pin them the top of the Peripheral View. -- Added implementations of the remaining C++20 defect reports (also known as *backports*). All C++20 features are now available under the **`/std:c++20`** option. For more information about the implemented backports, see the [MSVC's STL Completes `/std:c++20`](https://devblogs.microsoft.com/cppblog/msvcs-stl-completes-stdc20/) blog post. +- Added implementations of the remaining C++20 defect reports (also known as *backports*). All C++20 features are now available under the **`/std:c++20`** option. For more information about the implemented backports, see the [C++20 Defect Reports project](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-172) in the Microsoft/STL GitHub repository and the [MSVC's STL Completes `/std:c++20`](https://devblogs.microsoft.com/cppblog/msvcs-stl-completes-stdc20/) blog post. - We added various C++23 Library features, available under the **`/std:c++latest`** option. For more information about the new features, see the [STL Repo changelog](https://github.com/microsoft/STL/wiki/Changelog). - Improved performance of the initial C++ indexing by up to 20%, depending on the depth of the include graph. From 0a3e533208388a6daa71084c62b73db064a983f4 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 27 Feb 2025 16:51:39 -0800 Subject: [PATCH 0216/2255] incorp feedback --- docs/build/how-to-debug-a-release-build.md | 6 ++--- .../compiler-options-listed-alphabetically.md | 2 +- .../compiler-options-listed-by-category.md | 2 +- docs/build/reference/dynamic-deopt-linker.md | 25 +++++++++++++------ docs/build/reference/dynamic-deopt.md | 22 +++++++++------- docs/build/reference/linker-options.md | 2 +- 6 files changed, 37 insertions(+), 22 deletions(-) diff --git a/docs/build/how-to-debug-a-release-build.md b/docs/build/how-to-debug-a-release-build.md index d35055e4b04..b35dbba5d33 100644 --- a/docs/build/how-to-debug-a-release-build.md +++ b/docs/build/how-to-debug-a-release-build.md @@ -1,14 +1,14 @@ --- description: "Learn more about: How to: Debug a Release Build" title: "How to: Debug a Release Build" -ms.date: 3/11/2025 +ms.date: 2/27/2025 helpviewer_keywords: ["debugging [C++], release builds", "release builds, debugging"] --- # How to: Debug a Release Build This article explains which compiler and linker switches to set to enable you to debug a release build of an application. -A better experience is available starting in Visual Studio 2022 version 17.14 that allows you to debug optimized code as if it were compiled unoptimized, while retaining the speed of optimized code. For more information, see [C++ Dynamic Debugging](/visualstudio/debugger/dynamic-deopt.md). +A better experience is available starting in Visual Studio 2022 version 17.14 that allows you to debug optimized code as if it were compiled unoptimized, while retaining the speed of optimized code. For more information, see [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/dynamic-deopt.md). ## To debug a release build @@ -16,7 +16,7 @@ A better experience is available starting in Visual Studio 2022 version 17.14 th 1. Click the **C/C++** node. Set **Debug Information Format** to [C7 compatible (/Z7)](reference/z7-zi-zi-debug-information-format.md) or **Program Database (/Zi)**. 1. Expand **Linker** and click the **General** node. Set **Enable Incremental Linking** to [No (/INCREMENTAL:NO)](reference/incremental-link-incrementally.md). 1. Under **Linker**, select the **Debugging** node. Set **Generate Debug Info** to [Yes (/DEBUG)](reference/debug-generate-debug-info.md). -1. Under **Linker**, select the **Optimization** node. Set **References** to [Yes (/OPT:REF)](reference/opt-optimizations.md) and **Enable COMDAT Folding** to [Yes (/OPT:ICF)](reference/opt-optimizations.md). +1. Under **Linker**, select the **Optimization** node. Set **References** to [No (/OPT:NOREF)](reference/opt-optimizations.md) and **Enable COMDAT Folding** to [No (/OPT:NOICF)](reference/opt-optimizations.md). 1. You can now debug your release build application. To find a problem, step through the code (or use Just-In-Time debugging) until you find where the failure occurs, and then determine the incorrect parameters or code. If an application works in a debug build, but fails in a release build, one of the compiler optimizations may be exposing a defect in the source code. To isolate the problem, disable selected optimizations for each source code file until you locate the file and the optimization that is causing the problem. (To expedite the process, you can divide the files into two groups, disable optimization on one group, and when you find a problem in a group, continue dividing until you isolate the problem file.) diff --git a/docs/build/reference/compiler-options-listed-alphabetically.md b/docs/build/reference/compiler-options-listed-alphabetically.md index a684465018f..ce4dfeea848 100644 --- a/docs/build/reference/compiler-options-listed-alphabetically.md +++ b/docs/build/reference/compiler-options-listed-alphabetically.md @@ -37,7 +37,7 @@ This table contains an alphabetical list of compiler options. For a list of comp | [`/constexpr:depth`](constexpr-control-constexpr-evaluation.md) | Recursion depth limit for `constexpr` evaluation (default: 512). | | [`/constexpr:steps`](constexpr-control-constexpr-evaluation.md) | Terminate `constexpr` evaluation after N steps (default: 100000) | | [`/D{=|#}`](d-preprocessor-definitions.md) | Defines constants and macros. | -| [`/dynamicdeopt`](dynamic-deopt.md) | Enable [C++ Dynamic Debugging](/visualstudio/debugger/cpp-dynamic-debugging.md) to debug optimized code as if it had been compiled deoptimized. | +| [`/dynamicdeopt` (Preview)](dynamic-deopt.md) | Enable [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging.md) and step in anywhere with on-demand function deoptimization. | | [`/diagnostics`](diagnostics-compiler-diagnostic-options.md) | Diagnostics format: prints column information. | | [`/diagnostics:caret[-]`](diagnostics-compiler-diagnostic-options.md) | Diagnostics format: prints column and the indicated line of source. | | [`/diagnostics:classic`](diagnostics-compiler-diagnostic-options.md) | Use legacy diagnostics format. | diff --git a/docs/build/reference/compiler-options-listed-by-category.md b/docs/build/reference/compiler-options-listed-by-category.md index 359c9f178b6..cf3a024e2fa 100644 --- a/docs/build/reference/compiler-options-listed-by-category.md +++ b/docs/build/reference/compiler-options-listed-by-category.md @@ -12,7 +12,7 @@ This article contains a categorical list of compiler options. For an alphabetica | Option | Purpose | |--|--| -| [`/dynamicdeopt`](dynamic-deopt.md) | Enable [C++ Dynamic Debugging](/visualstudio/debugger/cpp-dynamic-debugging.md) to debug optimized code as if it had been compiled deoptimized. | +| [`/dynamicdeopt` (Preview)](dynamic-deopt.md) | Enable [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging.md) to debug optimized code as if it had been compiled deoptimized. | | [`/favor:`](favor-optimize-for-architecture-specifics.md) | Produces code that is optimized for a specified architecture, or for a range of architectures. | | [`/O1`](o1-o2-minimize-size-maximize-speed.md) | Creates small code. | | [`/O2`](o1-o2-minimize-size-maximize-speed.md) | Creates fast code. | diff --git a/docs/build/reference/dynamic-deopt-linker.md b/docs/build/reference/dynamic-deopt-linker.md index f5c387bff89..3ada7bb26ab 100644 --- a/docs/build/reference/dynamic-deopt-linker.md +++ b/docs/build/reference/dynamic-deopt-linker.md @@ -1,28 +1,38 @@ --- description: "Learn more about: /DYNAMICDEOPT (Support C++ Dynamic Debugging)" -title: "/DYNAMICDEOPT (Support C++ Dynamic Debugging)" +title: "/DYNAMICDEOPT (Support C++ Dynamic Debugging (Preview))" ms.date: 3/11/2025 f1_keywords: ["VC.Project.VCLinkerTool.GenerateDynamicDeoptInformation", "/dynamicdeopt"] helpviewer_keywords: ["DYNAMICDEOPT linker option", "/DYNAMICDEOPT linker option", "-DYNAMICDEOPT linker option", "c++ dynamic debugging"] --- -# | `/DYNAMICDEOPT` (Support C++ Dynamic Debugging) +# | `/DYNAMICDEOPT` (Support C++ Dynamic Debugging (Preview)) -The **`/DYNAMICDEOPT`** linker option enables [C++ Dynamic Debugging](/visualstudio/debugger/cpp-dynamic-debugging.md), which allows you to debug optimized code as if it had been compiled deoptimized. +The **`/DYNAMICDEOPT`** linker option enables [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging.md), which allows you to debug optimized code as if it had been compiled deoptimized and step in anywhere with on-demand function deoptimization. ## Syntax > **`/DYNAMICDEOPT`** +> **`/DYNAMICDEOPT:SUFFIX `** +> **`/DYNAMICDEOPT:SYNC`** + +## Arguments + +*`suffix`*\ +Specify the file extension for the deoptimized output. + +With no options and given `test.cpp` as input, the compiler output includes `test.obj`, `test.exe`, and `test.pdb`, as well as `test.alt.obj`, `test.alt.exe`, and ``test.alt.pdb`. This switch allows you to recognize a different suffix for the unoptimized binary build artifacts from `.alt` to something else. If you change the suffix, all files must use the new suffix, and it needs to match the name passed to the compiler using [`/dynamicdeopt:suffix` (Preview)](dynamic-deopt.md). You typically don't use this switch unless you need to avoid filename collisions with other files that you have. + +*`SYNC`*\ +Builds the deoptimized output after building the optimized output instead of in parallel. By default, the compiler spawns a parallel linker to link the unoptimized binary. This switch makes the second link run serially after the first one. This switch is provided in case this better suits your build environment. ## Remarks -This flag, available starting with Visual Studio 2022 Version 17.14 Preview 2, applies only to x64 projects. +This preview flag, available starting with Visual Studio 2022 Version 17.14 Preview 2, applies only to x64 projects. ### To set this linker option in the Visual Studio development environment 1. Open the project's **Property Pages** dialog box. For details, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md). 1. Select the **Linker** > **Debugging** property page. -1. Modify the **Generate Debug Info** property to enable or disable PDB generation. This property enables **`/DEBUG:FASTLINK`** by default in Visual Studio 2017 and later. -1. Modify the **Generate Full Program Database File** property to enable **`/DEBUG:FULL`** for full PDB generation for every incremental build. ### To set this linker option programmatically @@ -30,6 +40,7 @@ This flag, available starting with Visual Studio 2022 Version 17.14 Preview 2, a ## See also -[C++ Dynamic Debugging](/visualstudio/debugger/cpp-dynamic-debugging.md)\ +[`/dynamicdeopt` (Enable C++ Dynamic Debugging (Preview))](dynamic-deopt.md)\ +[C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging.md)\ [MSVC linker reference](linking.md)\ [MSVC linker options](linker-options.md) diff --git a/docs/build/reference/dynamic-deopt.md b/docs/build/reference/dynamic-deopt.md index 7b08a72926c..ff54649d871 100644 --- a/docs/build/reference/dynamic-deopt.md +++ b/docs/build/reference/dynamic-deopt.md @@ -1,39 +1,43 @@ --- -title: "/dynamicdeopt (Enable C++ Dynamic Debugging)" +title: "/dynamicdeopt (Enable C++ Dynamic Debugging (Preview))" description: "Use the Microsoft C++ compiler option /dynamicdeopt to use C++ Dynamic Debugging." ms.date: 3/11/2025 f1_keywords: ["/dynamicdeopt", "VC.Project.VCNMakeTool.CompileAsManaged", "VC.Project.VCCLCompilerTool.CompileAsManaged"] helpviewer_keywords: ["cl.exe compiler, common language runtime option", "-dynamicdeopt compiler option [C++]", "dynamicdeopt compiler option [C++]", "/clr compiler option [C++]", "Managed Extensions for C++, compiling", "common language runtime, /clr compiler option"] --- -# `/dynamicdeopt` (Enable C++ Dynamic Debugging) +# `/dynamicdeopt` (Enable C++ Dynamic Debugging (Preview)) -Enable [C++ Dynamic Debugging](/visualstudio/debugger/cpp-dynamic-debugging.md) so you can debug optimized code as if it had been compiled deoptimized. +Enable [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging.md) so you can debug optimized code as if it had been compiled deoptimized and step in anywhere with on-demand function deoptimization. ## Syntax > **`/dynamicdeopt`** > **`/dynamicdeopt:suffix `** +> **`/dynamicdeopt:sync`** ## Arguments *`suffix`*\ Specify the file extension for the deoptimized output. -With no options and given `test.cpp` as input, your output includes `test.obj`, `test.exe`, and `test.pdb`, as well as `test.alt.obj`, `test.alt.exe`, and ``test.alt.pdb`. This switch allows you to change the suffix of the unoptimized binary build artifacts from `.alt` to something else. If you change the suffix, all files must use the new suffix, and it needs to match the name passed to the linker. You typically don't use this switch unless you need to avoid filename collisions with other files that you have. +With no options and given `test.cpp` as input, your output includes `test.obj`, `test.exe`, and `test.pdb`, as well as `test.alt.obj`, `test.alt.exe`, and ``test.alt.pdb`. This switch allows you to change the suffix of the unoptimized binary build artifacts from `.alt` to something else. If you change the suffix, all files must use the new suffix, and it needs to match the name passed to the linker using [`/dynamicdeopt:suffix` (Preview)](dynamic-deopt-linker.md). You typically don't use this switch unless you need to avoid filename collisions with other files that you have. + +*`sync`*\ +Builds the deoptimized output after building the optimized output instead of in parallel. By default, the compiler spawns a parallel instance of the linker to link the unoptimized binary. This switch makes the second link run serially after the first one. This switch is provided in case this better suits your build environment. ## Remarks -This flag, available starting with Visual Studio 2022 Version 17.14 Preview 2, applies only to x64 projects. +This preview flag, available starting with Visual Studio 2022 Version 17.14 Preview 2, applies only to x64 projects. -Compiling with `/dynamicdeopt` generates other binaries that are used for debugging. When you debug an optimized file and debug into an optimized function, the debugger steps into the alternate binary instead. This allows you to debug as if you're debugging unoptimized code while still getting the performance advantages of optimized code. +Compiling with `/dynamicdeopt` generates other binaries that are used for debugging. When you debug an optimized file and debug into an optimized function, the debugger steps into the alternate binary instead. This allows you to debug as if you're debugging unoptimized code while still getting the performance advantages of optimized code. `/dynamicdeopt` requires: -`/DEBUG` or `/DEBUG:FULL`. If you don't specify `/DEBUG`, or `/DEBUG:FASTLINK` the linker gives a fatal error. +`/DEBUG` or `/DEBUG:FULL`. If you don't specify `/DEBUG`, or if you specify `/DEBUG:FASTLINK`, the linker gives a fatal error. If you specify `/INCREMENTAL`, the compiler generates a warning and automatically turns off `/INCREMENTAL`. If you specify `/OPT:ICF`, the compiler generates a warning that the debug experience isn't as good. This is because ICF can cause functions to be removed from the alt file, which means you can't step into them. -`/dynamicdeopt1` is incompatible with edit-and-continue and the following compiler switches: +`/dynamicdeopt` is incompatible with edit-and-continue and the following compiler switches: ```cpp /GL @@ -61,6 +65,6 @@ Turn `/OPT:ICF` off in Project properties Linker > Optimization > Enable COMDAT ## See also -[C++ Dynamic Debugging](/visualstudio/debugger/cpp-dynamic-debugging.md)\ +[C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging.md)\ [MSVC Compiler Options](compiler-options.md)\ [MSVC Compiler Command-Line Syntax](compiler-command-line-syntax.md) diff --git a/docs/build/reference/linker-options.md b/docs/build/reference/linker-options.md index 9a86902b308..f2a91fc158b 100644 --- a/docs/build/reference/linker-options.md +++ b/docs/build/reference/linker-options.md @@ -42,7 +42,7 @@ You can use the [`comment`](../../preprocessor/comment-c-cpp.md) pragma to speci | [`/CLRTHREADATTRIBUTE`](clrthreadattribute-set-clr-thread-attribute.md) | Specifies the threading attribute to apply to the entry point of your CLR program. | | [`/CLRUNMANAGEDCODECHECK`](clrunmanagedcodecheck-add-suppressunmanagedcodesecurityattribute.md) | Specifies whether the linker applies the `SuppressUnmanagedCodeSecurity` attribute to linker-generated P/Invoke stubs that call from managed code into native DLLs. | | [`/DEBUG`](debug-generate-debug-info.md) | Creates debugging information. | -| [`/DYNAMICDEOPT`](dynamic-deopt-linker.md) | Enable [C++ Dynamic Debugging](/visualstudio/debugger/cpp-dynamic-debugging.md) to debug optimized code as if it had been compiled deoptimized. | +| [`/DYNAMICDEOPT`(Preview)](dynamic-deopt-linker.md) | Enable [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging.md) and step in anywhere with on-demand function deoptimization. | | [`/DEBUGTYPE`](debugtype-debug-info-options.md) | Specifies which data to include in debugging information. | | [`/DEF`](def-specify-module-definition-file.md) | Passes a module-definition (.def) file to the linker. | | [`/DEFAULTLIB`](defaultlib-specify-default-library.md) | Searches the specified library when external references are resolved. | From 72050b3d71045251b77d538cae29b9f1e988201b Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 28 Feb 2025 14:50:01 +0800 Subject: [PATCH 0217/2255] Update `CComCoClass` reference page --- docs/atl/reference/ccomcoclass-class.md | 57 ++++++++++++------------- 1 file changed, 28 insertions(+), 29 deletions(-) diff --git a/docs/atl/reference/ccomcoclass-class.md b/docs/atl/reference/ccomcoclass-class.md index 58e766c1204..2101a31f892 100644 --- a/docs/atl/reference/ccomcoclass-class.md +++ b/docs/atl/reference/ccomcoclass-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: CComCoClass Class" title: "CComCoClass Class" +description: "Learn more about: CComCoClass Class" ms.date: "11/04/2016" f1_keywords: ["CComCoClass", "ATLCOM/ATL::CComCoClass", "ATLCOM/ATL::CComCoClass::CreateInstance", "ATLCOM/ATL::CComCoClass::Error", "ATLCOM/ATL::CComCoClass::GetObjectCLSID", "ATLCOM/ATL::CComCoClass::GetObjectDescription"] helpviewer_keywords: ["CComCoClass class", "aggregation [C++], aggregation models"] -ms.assetid: 67cfefa4-8df9-47fa-ad58-2d1a1ae25762 --- # CComCoClass Class @@ -12,29 +11,29 @@ This class provides methods for creating instances of a class, and obtaining its ## Syntax -``` +```cpp template class CComCoClass ``` #### Parameters -*T*
+*T*\ Your class, derived from `CComCoClass`. -*pclsid*
+*pclsid*\ A pointer to the CLSID of the object. ## Members ### Public Methods -|Name|Description| -|----------|-----------------| -|[CComCoClass::CreateInstance](#createinstance)|(Static) Creates an instance of the class and queries for an interface.| -|[CComCoClass::Error](#error)|(Static) Returns rich error information to the client.| -|[CComCoClass::GetObjectCLSID](#getobjectclsid)|(Static) Returns the object's class identifier.| -|[CComCoClass::GetObjectDescription](#getobjectdescription)|(Static) Override to return the object's description.| +| Name | Description | +| ---------------------------------------------------------- | ----------------------------------------------------------------------- | +| [CComCoClass::CreateInstance](#createinstance) | (Static) Creates an instance of the class and queries for an interface. | +| [CComCoClass::Error](#error) | (Static) Returns rich error information to the client. | +| [CComCoClass::GetObjectCLSID](#getobjectclsid) | (Static) Returns the object's class identifier. | +| [CComCoClass::GetObjectDescription](#getobjectdescription) | (Static) Override to return the object's description. | ## Remarks @@ -58,23 +57,23 @@ You can override either of these defaults by specifying another macro in your cl Use these `CreateInstance` functions to create an instance of a COM object and retrieve an interface pointer without using the COM API. -``` -template -static HRESULT CreateInstance( Q** pp); +```cpp +template +static HRESULT CreateInstance(Q** pp); -template +template static HRESULT CreateInstance(IUnknown* punkOuter, Q** pp); ``` ### Parameters -*Q*
+*Q*\ The COM interface that should be returned via *pp*. -*punkOuter*
+*punkOuter*\ [in] The outer unknown or controlling unknown of the aggregate. -*pp*
+*pp*\ [out] The address of a pointer variable that receives the requested interface pointer if creation succeeds. ### Return Value @@ -101,7 +100,7 @@ In the following example, `CDocument` is a wizard-generated ATL class derived fr This static function sets up the `IErrorInfo` interface to provide error information to the client. -``` +```cpp static HRESULT WINAPI Error( LPCOLESTR lpszDesc, const IID& iid = GUID_NULL, @@ -130,7 +129,7 @@ static HRESULT WINAPI Error( UINT nID, const IID& iid = GUID_NULL, HRESULT hRes = 0, - HINSTANCE hInst = _AtlBaseModule.GetResourceInstance ()); + HINSTANCE hInst = _AtlBaseModule.GetResourceInstance()); static HRESULT Error( UINT nID, @@ -143,25 +142,25 @@ static HRESULT Error( ### Parameters -*lpszDesc*
+*lpszDesc*\ [in] The string describing the error. The Unicode version of `Error` specifies that *lpszDesc* is of type LPCOLESTR; the ANSI version specifies a type of LPCSTR. -*iid*
+*iid*\ [in] The IID of the interface defining the error or GUID_NULL (the default value) if the error is defined by the operating system. -*hRes*
+*hRes*\ [in] The HRESULT you want returned to the caller. The default value is 0. For more details about *hRes*, see Remarks. -*nID*
+*nID*\ [in] The resource identifier where the error description string is stored. This value should lie between 0x0200 and 0xFFFF, inclusively. In debug builds, an **ASSERT** will result if *nID* does not index a valid string. In release builds, the error description string will be set to "Unknown Error." -*dwHelpID*
+*dwHelpID*\ [in] The help context identifier for the error. -*lpszHelpFile*
+*lpszHelpFile*\ [in] The path and name of the help file describing the error. -*hInst*
+*hInst*\ [in] The handle to the resource. By default, this parameter is `_AtlModule::GetResourceInstance`, where `_AtlModule` is the global instance of [CAtlModule](../../atl/reference/catlmodule-class.md). ### Return Value @@ -178,7 +177,7 @@ If the *hRes* parameter is nonzero, then `Error` returns the value of *hRes*. If Provides a consistent way of retrieving the object's CLSID. -``` +```cpp static const CLSID& WINAPI GetObjectCLSID(); ``` @@ -190,7 +189,7 @@ The object's class identifier. This static function retrieves the text description for your class object. -``` +```cpp static LPCTSTR WINAPI GetObjectDescription(); ``` From e80b3f225e42c8512273f4854b05d73e2572caa7 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 28 Feb 2025 17:19:42 +0800 Subject: [PATCH 0218/2255] Update error boilerplate include --- docs/error-messages/includes/error-boilerplate.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/error-messages/includes/error-boilerplate.md b/docs/error-messages/includes/error-boilerplate.md index a344d4e6b57..8c910e2f0dc 100644 --- a/docs/error-messages/includes/error-boilerplate.md +++ b/docs/error-messages/includes/error-boilerplate.md @@ -1,11 +1,11 @@ > [!IMPORTANT] -> The Visual Studio compilers and build tools can report many kinds of errors and warnings. After an error or warning is found, the build tools may make assumptions about code intent and attempt to continue, so that more issues can be reported at the same time. If the tools make the wrong assumption, later errors or warnings may not apply to your project. When you correct issues in your project, always start with the first error or warning that's reported, and rebuild often. One fix may make many subsequent errors go away. +> The Visual Studio compilers and build tools can report many kinds of errors and warnings. After an error or warning is found, the build tools may make assumptions about code intent and attempt to continue, so that more issues can be reported at the same time. If the tools make the wrong assumption, later errors or warnings may not apply to your project. When you correct issues in your project, always start with the first error or warning that's reported, and rebuild often. One fix may resolve multiple subsequent errors. To get help on a particular diagnostic message in Visual Studio, select it in the **Output** window and press the **F1** key. Visual Studio opens the documentation page for that error, if one exists. You can also use the search tool at the top of the page to find articles about specific errors or warnings. Or, browse the list of errors and warnings by tool and type in the table of contents on this page. > [!NOTE] -> Not every Visual Studio error or warning is documented. In many cases, the diagnostic message provides all of the information that's available. If you landed on this page when you used **F1** and you think the error or warning message needs additional explanation, let us know. You can use the feedback buttons on this page to raise a documentation issue on [GitHub](https://github.com/MicrosoftDocs/cpp-docs/issues). If you think the error or warning is wrong, or you've found another problem with the toolset, report a product issue on the [Developer Community](https://aka.ms/feedback/report?space=62) site. You can also send feedback and enter bugs within the IDE. In Visual Studio, go to the menu bar and choose **Help > Send Feedback > Report a Problem**, or submit a suggestion by using **Help > Send Feedback > Send a Suggestion**. Some compiler error topics were created that are not emitted by the compiler and now redirect to this page instead. +> Not every Visual Studio error or warning is documented. In many cases, the diagnostic message provides all of the information that's available. If you landed on this page and think the error or warning message needs additional explanation, let us know by using the feedback buttons on this page. If you think the error or warning is wrong, or you've found another problem with the toolset, report a product issue on the [Developer Community](https://aka.ms/feedback/report?space=62) site. You can also send feedback and enter bugs within the IDE. In Visual Studio, go to the menu bar and choose **Help > Send Feedback > Report a Problem**, or submit a suggestion by using **Help > Send Feedback > Suggest a Feature**. Some compiler error topics were created that are not emitted by the compiler and now redirect to this page instead. -You may find additional assistance for errors and warnings in [Microsoft Learn Q&A](/answers/topics/c%2B%2B.html) forums. Or, search for the error or warning number on the Visual Studio C++ [Developer Community](https://aka.ms/vsfeedback/browsecpp) site. You can also search [Stack Overflow](https://stackoverflow.com/) to find solutions. +You may find additional assistance for errors and warnings in [Microsoft Q&A C++](https://learn.microsoft.com/en-us/answers/tags/314/cpp) forums. Or, search for the error or warning number on the Visual Studio C++ [Developer Community](https://aka.ms/vsfeedback/browsecpp) site. You can also search [Stack Overflow](https://stackoverflow.com/) to find solutions. For links to additional help and community resources, see [Visual C++ Help and Community](../../overview/visual-cpp-help-and-community.md). From d1cd2c23eae723282c3ffbc1f15bd4516d70a95b Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 28 Feb 2025 17:34:26 +0800 Subject: [PATCH 0219/2255] Change Microsoft Q&A C++ link from absolute to relative --- docs/error-messages/includes/error-boilerplate.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/includes/error-boilerplate.md b/docs/error-messages/includes/error-boilerplate.md index 8c910e2f0dc..d7eba2d5c8c 100644 --- a/docs/error-messages/includes/error-boilerplate.md +++ b/docs/error-messages/includes/error-boilerplate.md @@ -6,6 +6,6 @@ To get help on a particular diagnostic message in Visual Studio, select it in th > [!NOTE] > Not every Visual Studio error or warning is documented. In many cases, the diagnostic message provides all of the information that's available. If you landed on this page and think the error or warning message needs additional explanation, let us know by using the feedback buttons on this page. If you think the error or warning is wrong, or you've found another problem with the toolset, report a product issue on the [Developer Community](https://aka.ms/feedback/report?space=62) site. You can also send feedback and enter bugs within the IDE. In Visual Studio, go to the menu bar and choose **Help > Send Feedback > Report a Problem**, or submit a suggestion by using **Help > Send Feedback > Suggest a Feature**. Some compiler error topics were created that are not emitted by the compiler and now redirect to this page instead. -You may find additional assistance for errors and warnings in [Microsoft Q&A C++](https://learn.microsoft.com/en-us/answers/tags/314/cpp) forums. Or, search for the error or warning number on the Visual Studio C++ [Developer Community](https://aka.ms/vsfeedback/browsecpp) site. You can also search [Stack Overflow](https://stackoverflow.com/) to find solutions. +You may find additional assistance for errors and warnings in [Microsoft Q&A C++](/answers/tags/314/cpp) forums. Or, search for the error or warning number on the Visual Studio C++ [Developer Community](https://aka.ms/vsfeedback/browsecpp) site. You can also search [Stack Overflow](https://stackoverflow.com/) to find solutions. For links to additional help and community resources, see [Visual C++ Help and Community](../../overview/visual-cpp-help-and-community.md). From 8cf1218af0652f39c4244727405e12b2b127af5f Mon Sep 17 00:00:00 2001 From: Justin Piesco <107575186+JustPies@users.noreply.github.com> Date: Fri, 28 Feb 2025 10:00:14 -0500 Subject: [PATCH 0220/2255] updated link text --- docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 49f969d6121..3ae34b23c80 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 @@ -491,7 +491,7 @@ A partial list of new features in 17.2: - When you select the start and end values for the stack pointer in the RTOS tool window, it opens in the memory window. - Added thread awareness for device targets to the call stack window. - Users can now select a pin icon next to peripherals, registers, or fields to pin them the top of the Peripheral View. -- Added implementations of the remaining C++20 defect reports (also known as *backports*). All C++20 features are now available under the **`/std:c++20`** option. For more information about the implemented backports, see the [C++20 Defect Reports project](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-172) in the Microsoft/STL GitHub repository and the [MSVC's STL Completes `/std:c++20`](https://devblogs.microsoft.com/cppblog/msvcs-stl-completes-stdc20/) blog post. +- Added implementations of the remaining C++20 defect reports (also known as *backports*). All C++20 features are now available under the **`/std:c++20`** option. For more information about the implemented backports, see the [VS 2022 Changelog](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-172) in the Microsoft/STL GitHub repository and the [MSVC's STL Completes `/std:c++20`](https://devblogs.microsoft.com/cppblog/msvcs-stl-completes-stdc20/) blog post. - We added various C++23 Library features, available under the **`/std:c++latest`** option. For more information about the new features, see the [STL Repo changelog](https://github.com/microsoft/STL/wiki/Changelog). - Improved performance of the initial C++ indexing by up to 20%, depending on the depth of the include graph. From d5476cac704bd07af8a376b6f918141a9f190d98 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 28 Feb 2025 11:41:43 -0800 Subject: [PATCH 0221/2255] incorp feedback --- docs/build/reference/dynamic-deopt-linker.md | 6 +++--- docs/build/reference/dynamic-deopt.md | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/build/reference/dynamic-deopt-linker.md b/docs/build/reference/dynamic-deopt-linker.md index 3ada7bb26ab..5baf62190f3 100644 --- a/docs/build/reference/dynamic-deopt-linker.md +++ b/docs/build/reference/dynamic-deopt-linker.md @@ -7,12 +7,12 @@ helpviewer_keywords: ["DYNAMICDEOPT linker option", "/DYNAMICDEOPT linker option --- # | `/DYNAMICDEOPT` (Support C++ Dynamic Debugging (Preview)) -The **`/DYNAMICDEOPT`** linker option enables [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging.md), which allows you to debug optimized code as if it had been compiled deoptimized and step in anywhere with on-demand function deoptimization. +The **`/DYNAMICDEOPT`** linker option, when used with the compiler switch [`/dynamicdeopt`](dynamic-deopt.md), enables [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging.md), which allows you to debug optimized code as if it had been compiled deoptimized and step in anywhere with on-demand function deoptimization. ## Syntax > **`/DYNAMICDEOPT`** -> **`/DYNAMICDEOPT:SUFFIX `** +> **`/DYNAMICDEOPT:SUFFIX=`** > **`/DYNAMICDEOPT:SYNC`** ## Arguments @@ -20,7 +20,7 @@ The **`/DYNAMICDEOPT`** linker option enables [C++ Dynamic Debugging (Preview)]( *`suffix`*\ Specify the file extension for the deoptimized output. -With no options and given `test.cpp` as input, the compiler output includes `test.obj`, `test.exe`, and `test.pdb`, as well as `test.alt.obj`, `test.alt.exe`, and ``test.alt.pdb`. This switch allows you to recognize a different suffix for the unoptimized binary build artifacts from `.alt` to something else. If you change the suffix, all files must use the new suffix, and it needs to match the name passed to the compiler using [`/dynamicdeopt:suffix` (Preview)](dynamic-deopt.md). You typically don't use this switch unless you need to avoid filename collisions with other files that you have. +With no options and given `test.cpp` as input, the compiler output includes `test.obj`, `test.exe`, and `test.pdb`, as well as `test.alt.obj`, `test.alt.exe`, and ``test.alt.pdb`. This switch allows you to change the suffix for the unoptimized binary build artifacts from `.alt` to something else. If you change the suffix, all files must use the new suffix, and it needs to match the name passed to the compiler using [`/dynamicdeopt:suffix` (Preview)](dynamic-deopt.md). You typically don't use this switch unless you need to avoid filename collisions with other files that you have. *`SYNC`*\ Builds the deoptimized output after building the optimized output instead of in parallel. By default, the compiler spawns a parallel linker to link the unoptimized binary. This switch makes the second link run serially after the first one. This switch is provided in case this better suits your build environment. diff --git a/docs/build/reference/dynamic-deopt.md b/docs/build/reference/dynamic-deopt.md index ff54649d871..530735725ee 100644 --- a/docs/build/reference/dynamic-deopt.md +++ b/docs/build/reference/dynamic-deopt.md @@ -23,11 +23,11 @@ Specify the file extension for the deoptimized output. With no options and given `test.cpp` as input, your output includes `test.obj`, `test.exe`, and `test.pdb`, as well as `test.alt.obj`, `test.alt.exe`, and ``test.alt.pdb`. This switch allows you to change the suffix of the unoptimized binary build artifacts from `.alt` to something else. If you change the suffix, all files must use the new suffix, and it needs to match the name passed to the linker using [`/dynamicdeopt:suffix` (Preview)](dynamic-deopt-linker.md). You typically don't use this switch unless you need to avoid filename collisions with other files that you have. *`sync`*\ -Builds the deoptimized output after building the optimized output instead of in parallel. By default, the compiler spawns a parallel instance of the linker to link the unoptimized binary. This switch makes the second link run serially after the first one. This switch is provided in case this better suits your build environment. +Builds the deoptimized output after building the optimized output instead of in parallel. By default, the compiler spawns a parallel instance of the code generator. This switch makes the them run serially, instead. This switch is provided in case this better suits your build environment. ## Remarks -This preview flag, available starting with Visual Studio 2022 Version 17.14 Preview 2, applies only to x64 projects. +This preview flag, available starting with Visual Studio 2022 Version 17.14 Preview 2, applies only to x64 projects and must be used with the corresponding linker flag, [`/DYNAMICDEOPT`](dynamic-deopt-linker.md). Compiling with `/dynamicdeopt` generates other binaries that are used for debugging. When you debug an optimized file and debug into an optimized function, the debugger steps into the alternate binary instead. This allows you to debug as if you're debugging unoptimized code while still getting the performance advantages of optimized code. @@ -56,6 +56,7 @@ fsanitize=kernel-address All of the CLR flags ``` +JTW - when I get a build with the property pages, push them to that section that sets the global property that does all of this for you and remove the next two lines. Possibly mention that it turns these things off for you. Turn `/GL `off via Project properties C/C++ > Optimization > Whole Program Optimization. Set it to **No**. Turn `/OPT:ICF` off in Project properties Linker > Optimization > Enable COMDAT Folding. Set it to **No**. From becaef47561a9a9b15709abe679056b3ba2cf2be Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 28 Feb 2025 13:32:04 -0800 Subject: [PATCH 0222/2255] feedback / acrolinx --- docs/build/how-to-debug-a-release-build.md | 2 +- .../build/reference/compiler-options-listed-alphabetically.md | 2 +- docs/build/reference/compiler-options-listed-by-category.md | 2 +- docs/build/reference/dynamic-deopt-linker.md | 4 ++-- docs/build/reference/dynamic-deopt.md | 4 ++-- docs/build/reference/linker-options.md | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/build/how-to-debug-a-release-build.md b/docs/build/how-to-debug-a-release-build.md index b35dbba5d33..0dbd505fc59 100644 --- a/docs/build/how-to-debug-a-release-build.md +++ b/docs/build/how-to-debug-a-release-build.md @@ -8,7 +8,7 @@ helpviewer_keywords: ["debugging [C++], release builds", "release builds, debugg This article explains which compiler and linker switches to set to enable you to debug a release build of an application. -A better experience is available starting in Visual Studio 2022 version 17.14 that allows you to debug optimized code as if it were compiled unoptimized, while retaining the speed of optimized code. For more information, see [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/dynamic-deopt.md). +A better experience is available starting in Visual Studio 2022 version 17.14 that allows you to debug optimized code as if it were compiled unoptimized, while retaining the speed of optimized code. For more information, see [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging). ## To debug a release build diff --git a/docs/build/reference/compiler-options-listed-alphabetically.md b/docs/build/reference/compiler-options-listed-alphabetically.md index ce4dfeea848..2b8ad1fc5ef 100644 --- a/docs/build/reference/compiler-options-listed-alphabetically.md +++ b/docs/build/reference/compiler-options-listed-alphabetically.md @@ -37,7 +37,7 @@ This table contains an alphabetical list of compiler options. For a list of comp | [`/constexpr:depth`](constexpr-control-constexpr-evaluation.md) | Recursion depth limit for `constexpr` evaluation (default: 512). | | [`/constexpr:steps`](constexpr-control-constexpr-evaluation.md) | Terminate `constexpr` evaluation after N steps (default: 100000) | | [`/D{=|#}`](d-preprocessor-definitions.md) | Defines constants and macros. | -| [`/dynamicdeopt` (Preview)](dynamic-deopt.md) | Enable [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging.md) and step in anywhere with on-demand function deoptimization. | +| [`/dynamicdeopt` (Preview)](dynamic-deopt.md) | Enable [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging) and step in anywhere with on-demand function deoptimization. | | [`/diagnostics`](diagnostics-compiler-diagnostic-options.md) | Diagnostics format: prints column information. | | [`/diagnostics:caret[-]`](diagnostics-compiler-diagnostic-options.md) | Diagnostics format: prints column and the indicated line of source. | | [`/diagnostics:classic`](diagnostics-compiler-diagnostic-options.md) | Use legacy diagnostics format. | diff --git a/docs/build/reference/compiler-options-listed-by-category.md b/docs/build/reference/compiler-options-listed-by-category.md index cf3a024e2fa..aa281127518 100644 --- a/docs/build/reference/compiler-options-listed-by-category.md +++ b/docs/build/reference/compiler-options-listed-by-category.md @@ -12,7 +12,7 @@ This article contains a categorical list of compiler options. For an alphabetica | Option | Purpose | |--|--| -| [`/dynamicdeopt` (Preview)](dynamic-deopt.md) | Enable [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging.md) to debug optimized code as if it had been compiled deoptimized. | +| [`/dynamicdeopt` (Preview)](dynamic-deopt.md) | Enable [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging) to debug optimized code as if it had been compiled deoptimized. | | [`/favor:`](favor-optimize-for-architecture-specifics.md) | Produces code that is optimized for a specified architecture, or for a range of architectures. | | [`/O1`](o1-o2-minimize-size-maximize-speed.md) | Creates small code. | | [`/O2`](o1-o2-minimize-size-maximize-speed.md) | Creates fast code. | diff --git a/docs/build/reference/dynamic-deopt-linker.md b/docs/build/reference/dynamic-deopt-linker.md index 5baf62190f3..36b4401ac84 100644 --- a/docs/build/reference/dynamic-deopt-linker.md +++ b/docs/build/reference/dynamic-deopt-linker.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["DYNAMICDEOPT linker option", "/DYNAMICDEOPT linker option --- # | `/DYNAMICDEOPT` (Support C++ Dynamic Debugging (Preview)) -The **`/DYNAMICDEOPT`** linker option, when used with the compiler switch [`/dynamicdeopt`](dynamic-deopt.md), enables [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging.md), which allows you to debug optimized code as if it had been compiled deoptimized and step in anywhere with on-demand function deoptimization. +The **`/DYNAMICDEOPT`** linker option, when used with the compiler switch [`/dynamicdeopt`](dynamic-deopt.md), enables [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging), which allows you to debug optimized code as if it had been compiled deoptimized and step in anywhere with on-demand function deoptimization. ## Syntax @@ -41,6 +41,6 @@ This preview flag, available starting with Visual Studio 2022 Version 17.14 Prev ## See also [`/dynamicdeopt` (Enable C++ Dynamic Debugging (Preview))](dynamic-deopt.md)\ -[C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging.md)\ +[C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging)\ [MSVC linker reference](linking.md)\ [MSVC linker options](linker-options.md) diff --git a/docs/build/reference/dynamic-deopt.md b/docs/build/reference/dynamic-deopt.md index 530735725ee..ced3dd6fac6 100644 --- a/docs/build/reference/dynamic-deopt.md +++ b/docs/build/reference/dynamic-deopt.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["cl.exe compiler, common language runtime option", "-dynam --- # `/dynamicdeopt` (Enable C++ Dynamic Debugging (Preview)) -Enable [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging.md) so you can debug optimized code as if it had been compiled deoptimized and step in anywhere with on-demand function deoptimization. +Enable [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging) so you can debug optimized code as if it had been compiled deoptimized and step in anywhere with on-demand function deoptimization. ## Syntax @@ -66,6 +66,6 @@ Turn `/OPT:ICF` off in Project properties Linker > Optimization > Enable COMDAT ## See also -[C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging.md)\ +[C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging)\ [MSVC Compiler Options](compiler-options.md)\ [MSVC Compiler Command-Line Syntax](compiler-command-line-syntax.md) diff --git a/docs/build/reference/linker-options.md b/docs/build/reference/linker-options.md index f2a91fc158b..2fb7455eba4 100644 --- a/docs/build/reference/linker-options.md +++ b/docs/build/reference/linker-options.md @@ -42,7 +42,7 @@ You can use the [`comment`](../../preprocessor/comment-c-cpp.md) pragma to speci | [`/CLRTHREADATTRIBUTE`](clrthreadattribute-set-clr-thread-attribute.md) | Specifies the threading attribute to apply to the entry point of your CLR program. | | [`/CLRUNMANAGEDCODECHECK`](clrunmanagedcodecheck-add-suppressunmanagedcodesecurityattribute.md) | Specifies whether the linker applies the `SuppressUnmanagedCodeSecurity` attribute to linker-generated P/Invoke stubs that call from managed code into native DLLs. | | [`/DEBUG`](debug-generate-debug-info.md) | Creates debugging information. | -| [`/DYNAMICDEOPT`(Preview)](dynamic-deopt-linker.md) | Enable [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging.md) and step in anywhere with on-demand function deoptimization. | +| [`/DYNAMICDEOPT`(Preview)](dynamic-deopt-linker.md) | Enable [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging) and step in anywhere with on-demand function deoptimization. | | [`/DEBUGTYPE`](debugtype-debug-info-options.md) | Specifies which data to include in debugging information. | | [`/DEF`](def-specify-module-definition-file.md) | Passes a module-definition (.def) file to the linker. | | [`/DEFAULTLIB`](defaultlib-specify-default-library.md) | Searches the specified library when external references are resolved. | From d68e93fc089bc8795f220fc6b91c2c1302cc9a9b Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 28 Feb 2025 13:40:02 -0800 Subject: [PATCH 0223/2255] try prerelease tag --- docs/build/reference/dynamic-deopt-linker.md | 1 + docs/build/reference/dynamic-deopt.md | 1 + 2 files changed, 2 insertions(+) diff --git a/docs/build/reference/dynamic-deopt-linker.md b/docs/build/reference/dynamic-deopt-linker.md index 36b4401ac84..0565ba7f842 100644 --- a/docs/build/reference/dynamic-deopt-linker.md +++ b/docs/build/reference/dynamic-deopt-linker.md @@ -4,6 +4,7 @@ title: "/DYNAMICDEOPT (Support C++ Dynamic Debugging (Preview))" ms.date: 3/11/2025 f1_keywords: ["VC.Project.VCLinkerTool.GenerateDynamicDeoptInformation", "/dynamicdeopt"] helpviewer_keywords: ["DYNAMICDEOPT linker option", "/DYNAMICDEOPT linker option", "-DYNAMICDEOPT linker option", "c++ dynamic debugging"] +prerelease: true --- # | `/DYNAMICDEOPT` (Support C++ Dynamic Debugging (Preview)) diff --git a/docs/build/reference/dynamic-deopt.md b/docs/build/reference/dynamic-deopt.md index ced3dd6fac6..49fe9346c55 100644 --- a/docs/build/reference/dynamic-deopt.md +++ b/docs/build/reference/dynamic-deopt.md @@ -4,6 +4,7 @@ description: "Use the Microsoft C++ compiler option /dynamicdeopt to use C++ Dyn ms.date: 3/11/2025 f1_keywords: ["/dynamicdeopt", "VC.Project.VCNMakeTool.CompileAsManaged", "VC.Project.VCCLCompilerTool.CompileAsManaged"] helpviewer_keywords: ["cl.exe compiler, common language runtime option", "-dynamicdeopt compiler option [C++]", "dynamicdeopt compiler option [C++]", "/clr compiler option [C++]", "Managed Extensions for C++, compiling", "common language runtime, /clr compiler option"] +prerelease: true --- # `/dynamicdeopt` (Enable C++ Dynamic Debugging (Preview)) From 124f5adb614b48c5c08e54c58d93a7437ec634e1 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 28 Feb 2025 14:23:04 -0800 Subject: [PATCH 0224/2255] preview notice --- .../reference/compiler-options-listed-alphabetically.md | 2 +- .../reference/compiler-options-listed-by-category.md | 2 +- docs/build/reference/dynamic-deopt-linker.md | 8 +++++--- docs/build/reference/dynamic-deopt.md | 6 ++++-- docs/build/reference/linker-options.md | 2 +- 5 files changed, 12 insertions(+), 8 deletions(-) diff --git a/docs/build/reference/compiler-options-listed-alphabetically.md b/docs/build/reference/compiler-options-listed-alphabetically.md index 2b8ad1fc5ef..55fb9991c47 100644 --- a/docs/build/reference/compiler-options-listed-alphabetically.md +++ b/docs/build/reference/compiler-options-listed-alphabetically.md @@ -37,7 +37,7 @@ This table contains an alphabetical list of compiler options. For a list of comp | [`/constexpr:depth`](constexpr-control-constexpr-evaluation.md) | Recursion depth limit for `constexpr` evaluation (default: 512). | | [`/constexpr:steps`](constexpr-control-constexpr-evaluation.md) | Terminate `constexpr` evaluation after N steps (default: 100000) | | [`/D{=|#}`](d-preprocessor-definitions.md) | Defines constants and macros. | -| [`/dynamicdeopt` (Preview)](dynamic-deopt.md) | Enable [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging) and step in anywhere with on-demand function deoptimization. | +| [`/dynamicdeopt`](dynamic-deopt.md) | Enable [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging) and step in anywhere with on-demand function deoptimization. | | [`/diagnostics`](diagnostics-compiler-diagnostic-options.md) | Diagnostics format: prints column information. | | [`/diagnostics:caret[-]`](diagnostics-compiler-diagnostic-options.md) | Diagnostics format: prints column and the indicated line of source. | | [`/diagnostics:classic`](diagnostics-compiler-diagnostic-options.md) | Use legacy diagnostics format. | diff --git a/docs/build/reference/compiler-options-listed-by-category.md b/docs/build/reference/compiler-options-listed-by-category.md index aa281127518..000f54cc77f 100644 --- a/docs/build/reference/compiler-options-listed-by-category.md +++ b/docs/build/reference/compiler-options-listed-by-category.md @@ -12,7 +12,7 @@ This article contains a categorical list of compiler options. For an alphabetica | Option | Purpose | |--|--| -| [`/dynamicdeopt` (Preview)](dynamic-deopt.md) | Enable [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging) to debug optimized code as if it had been compiled deoptimized. | +| [`/dynamicdeopt`](dynamic-deopt.md) | Enable [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging) to debug optimized code as if it had been compiled deoptimized. | | [`/favor:`](favor-optimize-for-architecture-specifics.md) | Produces code that is optimized for a specified architecture, or for a range of architectures. | | [`/O1`](o1-o2-minimize-size-maximize-speed.md) | Creates small code. | | [`/O2`](o1-o2-minimize-size-maximize-speed.md) | Creates fast code. | diff --git a/docs/build/reference/dynamic-deopt-linker.md b/docs/build/reference/dynamic-deopt-linker.md index 0565ba7f842..7efe49f2dab 100644 --- a/docs/build/reference/dynamic-deopt-linker.md +++ b/docs/build/reference/dynamic-deopt-linker.md @@ -1,12 +1,14 @@ --- description: "Learn more about: /DYNAMICDEOPT (Support C++ Dynamic Debugging)" -title: "/DYNAMICDEOPT (Support C++ Dynamic Debugging (Preview))" +title: "/DYNAMICDEOPT (Support C++ Dynamic Debugging) (Preview)" ms.date: 3/11/2025 f1_keywords: ["VC.Project.VCLinkerTool.GenerateDynamicDeoptInformation", "/dynamicdeopt"] helpviewer_keywords: ["DYNAMICDEOPT linker option", "/DYNAMICDEOPT linker option", "-DYNAMICDEOPT linker option", "c++ dynamic debugging"] -prerelease: true --- -# | `/DYNAMICDEOPT` (Support C++ Dynamic Debugging (Preview)) +# | `/DYNAMICDEOPT` (Support C++ Dynamic Debugging) (Preview) +> [!IMPORTANT] +> The `/DYNAMICDEOPT` linker switch is currently in PREVIEW. +> This information relates to a prerelease feature that might be substantially modified before release. Microsoft makes no warranties, expressed or implied, with respect to the information provided here. The **`/DYNAMICDEOPT`** linker option, when used with the compiler switch [`/dynamicdeopt`](dynamic-deopt.md), enables [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging), which allows you to debug optimized code as if it had been compiled deoptimized and step in anywhere with on-demand function deoptimization. diff --git a/docs/build/reference/dynamic-deopt.md b/docs/build/reference/dynamic-deopt.md index 49fe9346c55..b094fe231c5 100644 --- a/docs/build/reference/dynamic-deopt.md +++ b/docs/build/reference/dynamic-deopt.md @@ -4,9 +4,11 @@ description: "Use the Microsoft C++ compiler option /dynamicdeopt to use C++ Dyn ms.date: 3/11/2025 f1_keywords: ["/dynamicdeopt", "VC.Project.VCNMakeTool.CompileAsManaged", "VC.Project.VCCLCompilerTool.CompileAsManaged"] helpviewer_keywords: ["cl.exe compiler, common language runtime option", "-dynamicdeopt compiler option [C++]", "dynamicdeopt compiler option [C++]", "/clr compiler option [C++]", "Managed Extensions for C++, compiling", "common language runtime, /clr compiler option"] -prerelease: true --- -# `/dynamicdeopt` (Enable C++ Dynamic Debugging (Preview)) +# `/dynamicdeopt` (Enable C++ Dynamic Debugging) (Preview) +> [!IMPORTANT] +> The `/dynamicdeopt` compiler switch is currently in PREVIEW. +> This information relates to a prerelease feature that might be substantially modified before release. Microsoft makes no warranties, expressed or implied, with respect to the information provided here. Enable [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging) so you can debug optimized code as if it had been compiled deoptimized and step in anywhere with on-demand function deoptimization. diff --git a/docs/build/reference/linker-options.md b/docs/build/reference/linker-options.md index 2fb7455eba4..34411fb166d 100644 --- a/docs/build/reference/linker-options.md +++ b/docs/build/reference/linker-options.md @@ -42,7 +42,7 @@ You can use the [`comment`](../../preprocessor/comment-c-cpp.md) pragma to speci | [`/CLRTHREADATTRIBUTE`](clrthreadattribute-set-clr-thread-attribute.md) | Specifies the threading attribute to apply to the entry point of your CLR program. | | [`/CLRUNMANAGEDCODECHECK`](clrunmanagedcodecheck-add-suppressunmanagedcodesecurityattribute.md) | Specifies whether the linker applies the `SuppressUnmanagedCodeSecurity` attribute to linker-generated P/Invoke stubs that call from managed code into native DLLs. | | [`/DEBUG`](debug-generate-debug-info.md) | Creates debugging information. | -| [`/DYNAMICDEOPT`(Preview)](dynamic-deopt-linker.md) | Enable [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging) and step in anywhere with on-demand function deoptimization. | +| [`/DYNAMICDEOPT`](dynamic-deopt-linker.md) | Enable [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging) and step in anywhere with on-demand function deoptimization. | | [`/DEBUGTYPE`](debugtype-debug-info-options.md) | Specifies which data to include in debugging information. | | [`/DEF`](def-specify-module-definition-file.md) | Passes a module-definition (.def) file to the linker. | | [`/DEFAULTLIB`](defaultlib-specify-default-library.md) | Searches the specified library when external references are resolved. | From 21d51bcd96a41470e493ff7db8ffec113b27eb00 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 28 Feb 2025 14:59:49 -0800 Subject: [PATCH 0225/2255] fix alpha order --- docs/build/reference/linker-options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/linker-options.md b/docs/build/reference/linker-options.md index 34411fb166d..b78c835fdf0 100644 --- a/docs/build/reference/linker-options.md +++ b/docs/build/reference/linker-options.md @@ -42,7 +42,6 @@ You can use the [`comment`](../../preprocessor/comment-c-cpp.md) pragma to speci | [`/CLRTHREADATTRIBUTE`](clrthreadattribute-set-clr-thread-attribute.md) | Specifies the threading attribute to apply to the entry point of your CLR program. | | [`/CLRUNMANAGEDCODECHECK`](clrunmanagedcodecheck-add-suppressunmanagedcodesecurityattribute.md) | Specifies whether the linker applies the `SuppressUnmanagedCodeSecurity` attribute to linker-generated P/Invoke stubs that call from managed code into native DLLs. | | [`/DEBUG`](debug-generate-debug-info.md) | Creates debugging information. | -| [`/DYNAMICDEOPT`](dynamic-deopt-linker.md) | Enable [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging) and step in anywhere with on-demand function deoptimization. | | [`/DEBUGTYPE`](debugtype-debug-info-options.md) | Specifies which data to include in debugging information. | | [`/DEF`](def-specify-module-definition-file.md) | Passes a module-definition (.def) file to the linker. | | [`/DEFAULTLIB`](defaultlib-specify-default-library.md) | Searches the specified library when external references are resolved. | @@ -53,6 +52,7 @@ You can use the [`comment`](../../preprocessor/comment-c-cpp.md) pragma to speci | [`/DLL`](dll-build-a-dll.md) | Builds a DLL. | | [`/DRIVER`](driver-windows-nt-kernel-mode-driver.md) | Creates a kernel mode driver. | | [`/DYNAMICBASE`](dynamicbase-use-address-space-layout-randomization.md) | Specifies whether to generate an executable image that's rebased at load time by using the address space layout randomization (ASLR) feature. | +| [`/DYNAMICDEOPT`](dynamic-deopt-linker.md) | Enable [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging) and step in anywhere with on-demand function deoptimization. | | [`/ENTRY`](entry-entry-point-symbol.md) | Sets the starting address. | | [`/ERRORREPORT`](errorreport-report-internal-linker-errors.md) | Deprecated. Error reporting is controlled by [Windows Error Reporting (WER)](/windows/win32/wer/windows-error-reporting) settings. | | [`/EXPORT`](export-exports-a-function.md) | Exports a function. | From b12f0614f5d92f5ab8b5e72989ebf71e73e500d6 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 1 Mar 2025 17:38:24 +0800 Subject: [PATCH 0226/2255] Flip Compiler Warnings by compiler version table --- .../compiler-warnings-by-compiler-version.md | 87 +++++++++---------- 1 file changed, 43 insertions(+), 44 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md b/docs/error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md index c3b078c75ea..d36408ba98c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md @@ -12,51 +12,50 @@ These versions of the compiler introduced new warnings: | Product | Compiler version number | |--|--| -| Visual Studio 2002 | 13.00.9466 | -| Visual Studio 2003 | 13.10.3077 | -| Visual Studio 2005 | 14.00.50727.762 | -| Visual Studio 2008 | 15.00.21022.08 | -| Visual Studio 2010 | 16.00.40219.01 | -| Visual Studio 2012 | 17.00.51106.1 | -| Visual Studio 2013 | 18.00.21005.1 | -| Visual Studio 2015 RTM | 19.00.23026.0 | -| Visual Studio 2015 Update 1 | 19.00.23506.0 | -| Visual Studio 2015 Update 2 | 19.00.23918.0 | -| Visual Studio 2015 Update 3 | 19.00.24215.1 | -| Visual Studio 2017 RTM | 19.10.25017.0 | -| Visual Studio 2017 version 15.3 | 19.11.25506.0 | -| Visual Studio 2017 version 15.5 | 19.12.25830.0 | -| Visual Studio 2017 version 15.6 | 19.13.26128.0 | -| Visual Studio 2017 version 15.7 | 19.14.26428.0 | -| Visual Studio 2017 version 15.8 | 19.15.26726.0 | -| Visual Studio 2017 version 15.9 | 19.16.26926.0 | -| Visual Studio 2019 RTM | 19.20.27004.0 | -| Visual Studio 2019 version 16.1 | 19.21.27702.0 | -| Visual Studio 2019 version 16.2 | 19.22.27905.0 | -| Visual Studio 2019 version 16.3 | 19.23.28105.0 | -| Visual Studio 2019 version 16.4 | 19.24.28314.0 | -| Visual Studio 2019 version 16.5 | 19.25.28610.0 | -| Visual Studio 2019 version 16.6 | 19.26.28805.0 | -| Visual Studio 2019 version 16.7 | 19.27.29112.0 | -| Visual Studio 2019 version 16.8 | 19.28.29333.0 | -| Visual Studio 2019 version 16.9 | 19.28.29700.0 | -| Visual Studio 2019 version 16.10 | 19.29.30000.0 | -| Visual Studio 2019 version 16.11 | 19.29.30100.0 | -| Visual Studio 2022 version 17.0 RTW | 19.30 | -| Visual Studio 2022 version 17.1 | 19.31 | -| Visual Studio 2022 version 17.2 | 19.32 | -| Visual Studio 2022 version 17.3 | 19.33 | -| Visual Studio 2022 version 17.4 | 19.34 | -| Visual Studio 2022 version 17.5 | 19.35 | -| Visual Studio 2022 version 17.6 | 19.36 | -| Visual Studio 2022 version 17.7 | 19.37 | -| Visual Studio 2022 version 17.8 | 19.38 | -| Visual Studio 2022 version 17.9 | 19.39 | -| Visual Studio 2022 version 17.10 | 19.40 | -| Visual Studio 2022 version 17.11 | 19.41 | -| Visual Studio 2022 version 17.12 | 19.42 | | Visual Studio 2022 version 17.13 | 19.43 | - +| Visual Studio 2022 version 17.12 | 19.42 | +| Visual Studio 2022 version 17.11 | 19.41 | +| Visual Studio 2022 version 17.10 | 19.40 | +| Visual Studio 2022 version 17.9 | 19.39 | +| Visual Studio 2022 version 17.8 | 19.38 | +| Visual Studio 2022 version 17.7 | 19.37 | +| Visual Studio 2022 version 17.6 | 19.36 | +| Visual Studio 2022 version 17.5 | 19.35 | +| Visual Studio 2022 version 17.4 | 19.34 | +| Visual Studio 2022 version 17.3 | 19.33 | +| Visual Studio 2022 version 17.2 | 19.32 | +| Visual Studio 2022 version 17.1 | 19.31 | +| Visual Studio 2022 version 17.0 RTW | 19.30 | +| Visual Studio 2019 version 16.11 | 19.29.30100.0 | +| Visual Studio 2019 version 16.10 | 19.29.30000.0 | +| Visual Studio 2019 version 16.9 | 19.28.29700.0 | +| Visual Studio 2019 version 16.8 | 19.28.29333.0 | +| Visual Studio 2019 version 16.7 | 19.27.29112.0 | +| Visual Studio 2019 version 16.6 | 19.26.28805.0 | +| Visual Studio 2019 version 16.5 | 19.25.28610.0 | +| Visual Studio 2019 version 16.4 | 19.24.28314.0 | +| Visual Studio 2019 version 16.3 | 19.23.28105.0 | +| Visual Studio 2019 version 16.2 | 19.22.27905.0 | +| Visual Studio 2019 version 16.1 | 19.21.27702.0 | +| Visual Studio 2019 RTM | 19.20.27004.0 | +| Visual Studio 2017 version 15.9 | 19.16.26926.0 | +| Visual Studio 2017 version 15.8 | 19.15.26726.0 | +| Visual Studio 2017 version 15.7 | 19.14.26428.0 | +| Visual Studio 2017 version 15.6 | 19.13.26128.0 | +| Visual Studio 2017 version 15.5 | 19.12.25830.0 | +| Visual Studio 2017 version 15.3 | 19.11.25506.0 | +| Visual Studio 2017 RTM | 19.10.25017.0 | +| Visual Studio 2015 Update 3 | 19.00.24215.1 | +| Visual Studio 2015 Update 2 | 19.00.23918.0 | +| Visual Studio 2015 Update 1 | 19.00.23506.0 | +| Visual Studio 2015 RTM | 19.00.23026.0 | +| Visual Studio 2013 | 18.00.21005.1 | +| Visual Studio 2012 | 17.00.51106.1 | +| Visual Studio 2010 | 16.00.40219.01 | +| Visual Studio 2008 | 15.00.21022.08 | +| Visual Studio 2005 | 14.00.50727.762 | +| Visual Studio 2003 | 13.10.3077 | +| Visual Studio 2002 | 13.00.9466 | You can specify only the major number, the major and minor numbers, or the major, minor, and build numbers to the **`/Wv`** option. The compiler reports all warnings that match versions that begin with the specified number. It suppresses all warnings for versions greater than the specified number. For example, **`/Wv:17`** reports warnings introduced in or before any version of Visual Studio 2012, and suppresses warnings introduced by any compiler from Visual Studio 2013 (version 18) or later. To suppress warnings introduced in Visual Studio 2015 update 2 and later, you can use **`/Wv:19.00.23506`**. Use **`/Wv:19.11`** to report the warnings introduced in any version of Visual Studio before Visual Studio 2017 version 15.5, but suppress warnings introduced in Visual Studio 2017 version 15.5 and later. From 11a2beafcf39e58fe12a027bfd57efe3bbc246b1 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 1 Mar 2025 17:51:43 +0800 Subject: [PATCH 0227/2255] Fix off-by-one error in Compiler Warnings by compiler version --- .../compiler-warnings-by-compiler-version.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md b/docs/error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md index c3b078c75ea..147af261309 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md @@ -66,7 +66,7 @@ The following sections list the warnings introduced by each version of Visual C+ ## Warnings introduced in Visual Studio 2022 version 17.13 (compiler version 19.43) -These warnings, and all warnings in later versions, are suppressed by using the compiler option **`/Wv:19.43`**. +These warnings, and all warnings in later versions, are suppressed by using the compiler option **`/Wv:19.42`**. | Warning | Message | |--|--| @@ -76,7 +76,7 @@ These warnings, and all warnings in later versions, are suppressed by using the ## Warnings introduced in Visual Studio 2022 version 17.12 (compiler version 19.42) -These warnings, and all warnings in later versions, are suppressed by using the compiler option **`/Wv:19.42`**. +These warnings, and all warnings in later versions, are suppressed by using the compiler option **`/Wv:19.41`**. | Warning | Message | |--|--| @@ -92,7 +92,7 @@ There were no new warnings introduced in 17.11 ## Warnings introduced in Visual Studio 2022 version 17.10 (compiler version 19.40) -These warnings, and all warnings in later versions, are suppressed by using the compiler option **`/Wv:19.40`**. +These warnings, and all warnings in later versions, are suppressed by using the compiler option **`/Wv:19.39`**. | Warning | Message | |--|--| @@ -107,7 +107,7 @@ These warnings, and all warnings in later versions, are suppressed by using the ## Warnings introduced in Visual Studio 2022 version 17.9 (compiler version 19.39) -These warnings, and all warnings in later versions, are suppressed by using the compiler option **`/Wv:19.39`**. +These warnings, and all warnings in later versions, are suppressed by using the compiler option **`/Wv:19.38`**. | Warning | Message | |--|--| @@ -116,7 +116,7 @@ These warnings, and all warnings in later versions, are suppressed by using the ## Warnings introduced in Visual Studio 2022 version 17.8 (compiler version 19.38) -These warnings, and all warnings in later versions, are suppressed by using the compiler option **`/Wv:19.38`**. +These warnings, and all warnings in later versions, are suppressed by using the compiler option **`/Wv:19.37`**. | Warning | Message | |--|--| From 6243a21e6b40b5eca3f7d760d7e2a0d7f44c753f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 2 Mar 2025 18:25:25 +0800 Subject: [PATCH 0228/2255] Elide extraneous leading empty lines in code snippets --- docs/c-language/extern-storage-class-specifier.md | 6 ++---- docs/c-runtime-library/reference/and.md | 4 +--- docs/c-runtime-library/reference/bitand.md | 4 +--- docs/c-runtime-library/reference/bitor.md | 4 +--- docs/c-runtime-library/reference/crtcheckmemory.md | 4 +--- docs/c-runtime-library/reference/crtdumpmemoryleaks.md | 3 +-- docs/c-runtime-library/reference/kbhit.md | 4 +--- docs/c-runtime-library/reference/mkdir-wmkdir.md | 4 +--- docs/c-runtime-library/reference/not.md | 4 +--- docs/c-runtime-library/reference/or-eq.md | 4 +--- docs/c-runtime-library/reference/rmtmp.md | 4 +--- docs/c-runtime-library/reference/rotl-rotl64-rotr-rotr64.md | 2 -- docs/c-runtime-library/reference/rtc-numerrors.md | 4 +--- docs/code-quality/annotating-structs-and-classes.md | 5 +---- .../CPP/how-to-create-and-use-shared-ptr-instances_1.cpp | 1 - .../CPP/how-to-create-and-use-shared-ptr-instances_6.cpp | 1 - .../CPP/how-to-create-and-use-unique-ptr-instances_3.cpp | 1 - docs/cpp/codesnippet/CPP/smart-pointers-modern-cpp_2.cpp | 1 - docs/linux/deploy-run-and-debug-your-linux-project.md | 3 +-- .../CPP/accessing-the-embedded-month-calendar-control_2.cpp | 1 - docs/mfc/codesnippet/CPP/cbitmapbutton-class_3.cpp | 1 - docs/mfc/reference/codesnippet/CPP/cpagerctrl-class_5.cpp | 1 - 22 files changed, 15 insertions(+), 51 deletions(-) diff --git a/docs/c-language/extern-storage-class-specifier.md b/docs/c-language/extern-storage-class-specifier.md index cfcf2a0c38e..fc532686093 100644 --- a/docs/c-language/extern-storage-class-specifier.md +++ b/docs/c-language/extern-storage-class-specifier.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: extern Storage-Class Specifier" title: "extern Storage-Class Specifier" +description: "Learn more about: extern Storage-Class Specifier" ms.date: "07/10/2018" helpviewer_keywords: ["extern keyword [C]", "storage class specifiers, extern", "extern keyword [C], storage class specifier", "external linkage, storage-class specifiers", "external linkage, extern modifier"] -ms.assetid: 6e16d927-291f-49e4-986c-9d91a482a441 --- # extern Storage-Class Specifier @@ -14,12 +13,11 @@ A variable declared with the **`extern`** storage-class specifier is a reference This example illustrates internal- and external-level declarations: ```c - // Source1.c int i = 1; -// Source2. c +// Source2.c #include diff --git a/docs/c-runtime-library/reference/and.md b/docs/c-runtime-library/reference/and.md index 2a5a4412c11..efa2cca2861 100644 --- a/docs/c-runtime-library/reference/and.md +++ b/docs/c-runtime-library/reference/and.md @@ -1,13 +1,12 @@ --- -description: "Learn more about: and" title: "and" +description: "Learn more about: and" ms.date: "11/04/2016" api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"] api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["ISO646/and", "and", "std.and", "std::and"] helpviewer_keywords: ["and macro"] -ms.assetid: 2644ab57-8e1b-48f0-9021-cafe3e26bdc4 --- # `and` @@ -16,7 +15,6 @@ An alternative to the && operator. ## Syntax ```C - #define and && ``` diff --git a/docs/c-runtime-library/reference/bitand.md b/docs/c-runtime-library/reference/bitand.md index cc4b84b0bd6..0701824a21c 100644 --- a/docs/c-runtime-library/reference/bitand.md +++ b/docs/c-runtime-library/reference/bitand.md @@ -1,13 +1,12 @@ --- -description: "Learn more about: bitand" title: "bitand" +description: "Learn more about: bitand" ms.date: "11/04/2016" api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"] api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["std::bitand", "std.bitand", "ISO646/bitand", "bitand"] helpviewer_keywords: ["bitand function"] -ms.assetid: 279cf9b5-fac1-49de-b329-f1a31b3481fe --- # `bitand` @@ -16,7 +15,6 @@ An alternative to the & operator. ## Syntax ```C - #define bitand & ``` diff --git a/docs/c-runtime-library/reference/bitor.md b/docs/c-runtime-library/reference/bitor.md index 4451365a0e0..8f2aaf236df 100644 --- a/docs/c-runtime-library/reference/bitor.md +++ b/docs/c-runtime-library/reference/bitor.md @@ -1,13 +1,12 @@ --- -description: "Learn more about: bitor" title: "bitor" +description: "Learn more about: bitor" ms.date: "11/04/2016" api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"] api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["ISO646/bitor", "bitor", "std.bitor", "std::bitor"] helpviewer_keywords: ["bitor function"] -ms.assetid: 3c0a3711-9c74-41f2-b400-2f7797da30d1 --- # `bitor` @@ -16,7 +15,6 @@ An alternative to the `|` operator. ## Syntax ```C - #define bitor | ``` diff --git a/docs/c-runtime-library/reference/crtcheckmemory.md b/docs/c-runtime-library/reference/crtcheckmemory.md index de0f6e98cec..5c9ca5d58ed 100644 --- a/docs/c-runtime-library/reference/crtcheckmemory.md +++ b/docs/c-runtime-library/reference/crtcheckmemory.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: _CrtCheckMemory" title: "_CrtCheckMemory" +description: "Learn more about: _CrtCheckMemory" ms.date: "11/04/2016" api_name: ["_CrtCheckMemory"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"] @@ -8,7 +8,6 @@ api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["CrtCheckMemory", "_CrtCheckMemory"] helpviewer_keywords: ["_CrtCheckMemory function", "CrtCheckMemory function"] -ms.assetid: 457cc72e-60fd-4177-ab5c-6ae26a420765 --- # `_CrtCheckMemory` @@ -17,7 +16,6 @@ Confirms the integrity of the memory blocks allocated in the debug heap (debug v ## Syntax ```C - int _CrtCheckMemory( void ); ``` diff --git a/docs/c-runtime-library/reference/crtdumpmemoryleaks.md b/docs/c-runtime-library/reference/crtdumpmemoryleaks.md index 5e934bfd26a..28291b7a9ce 100644 --- a/docs/c-runtime-library/reference/crtdumpmemoryleaks.md +++ b/docs/c-runtime-library/reference/crtdumpmemoryleaks.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: _CrtDumpMemoryLeaks" title: "_CrtDumpMemoryLeaks" +description: "Learn more about: _CrtDumpMemoryLeaks" ms.date: "11/04/2016" api_name: ["_CrtDumpMemoryLeaks"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"] @@ -16,7 +16,6 @@ Dumps all the memory blocks in the debug heap when a memory leak has occurred (d ## Syntax ```C - int _CrtDumpMemoryLeaks( void ); ``` diff --git a/docs/c-runtime-library/reference/kbhit.md b/docs/c-runtime-library/reference/kbhit.md index e4f1f9cfb7f..3d89e65caa9 100644 --- a/docs/c-runtime-library/reference/kbhit.md +++ b/docs/c-runtime-library/reference/kbhit.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: _kbhit" title: "_kbhit" +description: "Learn more about: _kbhit" ms.date: "4/2/2020" api_name: ["_kbhit", "_o__kbhit"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"] @@ -8,7 +8,6 @@ api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["_kbhit", "conio/_kbhit"] helpviewer_keywords: ["keyboard input", "user input, checking for keyboard", "kbhit function", "console", "console, checking", "keyboards, keyboard input", "_kbhit function", "keyboards, checking input"] -ms.assetid: e82a1cc9-bbec-4150-b678-a7e433220fe4 --- # `_kbhit` @@ -20,7 +19,6 @@ Checks the console for keyboard input. ## Syntax ```C - int _kbhit( void ); ``` diff --git a/docs/c-runtime-library/reference/mkdir-wmkdir.md b/docs/c-runtime-library/reference/mkdir-wmkdir.md index 43a9a54ba69..f01bf458e61 100644 --- a/docs/c-runtime-library/reference/mkdir-wmkdir.md +++ b/docs/c-runtime-library/reference/mkdir-wmkdir.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: _mkdir, _wmkdir" title: "_mkdir, _wmkdir" +description: "Learn more about: _mkdir, _wmkdir" ms.date: "4/2/2020" api_name: ["_wmkdir", "_mkdir", "_o__mkdir", "_o__wmkdir"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"] @@ -8,7 +8,6 @@ api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["_mkdir", "tmkdir", "_tmkdir", "wmkdir", "_wmkdir"] helpviewer_keywords: ["_wmkdir function", "folders [C++], creating", "wmkdir function", "directories [C++], creating", "mkdir function", "tmkdir function", "_mkdir function", "_tmkdir function"] -ms.assetid: 7f22d01d-63a5-4712-a6e7-d34878b2d840 --- # `_mkdir`, `_wmkdir` @@ -17,7 +16,6 @@ Creates a new directory. ## Syntax ```C - int _mkdir( const char *dirname ); diff --git a/docs/c-runtime-library/reference/not.md b/docs/c-runtime-library/reference/not.md index 54b1235ef3b..a878828337e 100644 --- a/docs/c-runtime-library/reference/not.md +++ b/docs/c-runtime-library/reference/not.md @@ -1,13 +1,12 @@ --- -description: "Learn more about: not" title: "not" +description: "Learn more about: not" ms.date: "11/04/2016" api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"] api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["std::not", "std.not", "ISO646/not", "not"] helpviewer_keywords: ["not function"] -ms.assetid: d2ddbd5c-33c0-4aff-8961-feac155b4ba1 --- # `not` @@ -16,7 +15,6 @@ An alternative to the **`!`** operator. ## Syntax ```C - #define not ! ``` diff --git a/docs/c-runtime-library/reference/or-eq.md b/docs/c-runtime-library/reference/or-eq.md index f9861186e4e..86d34f9fb7c 100644 --- a/docs/c-runtime-library/reference/or-eq.md +++ b/docs/c-runtime-library/reference/or-eq.md @@ -1,13 +1,12 @@ --- -description: "Learn more about: or_eq" title: "or_eq" +description: "Learn more about: or_eq" ms.date: "11/04/2016" api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"] api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["std::or_eq", "ISO646/or_eq", "or_eq", "std.or_eq"] helpviewer_keywords: ["or_eq function"] -ms.assetid: 1eb92464-ed58-40d8-a30e-f0a6aa2f4318 --- # `or_eq` @@ -16,7 +15,6 @@ An alternative to the `|=` operator. ## Syntax ```C - #define or_eq |= ``` diff --git a/docs/c-runtime-library/reference/rmtmp.md b/docs/c-runtime-library/reference/rmtmp.md index 857dc4c0355..7fac6abd1a6 100644 --- a/docs/c-runtime-library/reference/rmtmp.md +++ b/docs/c-runtime-library/reference/rmtmp.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: _rmtmp" title: "_rmtmp" +description: "Learn more about: _rmtmp" ms.date: "4/2/2020" api_name: ["_rmtmp", "_o__rmtmp"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"] @@ -8,7 +8,6 @@ api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["_rmtmp"] helpviewer_keywords: ["removing temporary files", "_rmtmp function", "files [C++], temporary", "rmtmp function", "files [C++], removing", "temporary files [C++], removing"] -ms.assetid: 7419501e-2587-4f2a-b469-0dca07f84736 --- # `_rmtmp` @@ -17,7 +16,6 @@ Removes temporary files. ## Syntax ```C - int _rmtmp( void ); ``` diff --git a/docs/c-runtime-library/reference/rotl-rotl64-rotr-rotr64.md b/docs/c-runtime-library/reference/rotl-rotl64-rotr-rotr64.md index dfdbaae96f2..c095e8cadae 100644 --- a/docs/c-runtime-library/reference/rotl-rotl64-rotr-rotr64.md +++ b/docs/c-runtime-library/reference/rotl-rotl64-rotr-rotr64.md @@ -8,7 +8,6 @@ api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["_rotr64", "rotl64", "_rotl64", "rotr64", "rotr", "_rotr", "_rotl", "rotl"] helpviewer_keywords: ["rotl64 function", "_rotl function", "rotr function", "rotr64 function", "_rotr function", "rotl function", "_rotl64 function", "rotating bits", "_rotr64 function", "bits, rotating"] -ms.assetid: cfce439b-366f-4584-8ab1-d527b13fcfc6 --- # `_rotl`, `_rotl64`, `_rotr`, `_rotr64` @@ -17,7 +16,6 @@ Rotates bits to the left (**`_rotl`**) or right (**`_rotr`**). ## Syntax ```C - unsigned int _rotl( unsigned int value, int shift diff --git a/docs/c-runtime-library/reference/rtc-numerrors.md b/docs/c-runtime-library/reference/rtc-numerrors.md index d512c8f4027..f2428d8e7a7 100644 --- a/docs/c-runtime-library/reference/rtc-numerrors.md +++ b/docs/c-runtime-library/reference/rtc-numerrors.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: _RTC_NumErrors" title: "_RTC_NumErrors" +description: "Learn more about: _RTC_NumErrors" ms.date: "11/04/2016" api_name: ["_RTC_NumErrors"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"] @@ -8,7 +8,6 @@ api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["_RTC_NumErrors", "RTC_NumErrors"] helpviewer_keywords: ["run-time errors", "_RTC_NumErrors function", "RTC_NumErrors function"] -ms.assetid: 7e82adae-38e2-4f8b-bc0b-37bda8109fd1 --- # `_RTC_NumErrors` @@ -17,7 +16,6 @@ Returns the total number of errors that can be detected by run-time error checks ## Syntax ```C - int _RTC_NumErrors( void ); ``` diff --git a/docs/code-quality/annotating-structs-and-classes.md b/docs/code-quality/annotating-structs-and-classes.md index 32669912be8..1c19f33cdd2 100644 --- a/docs/code-quality/annotating-structs-and-classes.md +++ b/docs/code-quality/annotating-structs-and-classes.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Annotating Structs and Classes" title: Annotating Structs and Classes +description: "Learn more about: Annotating Structs and Classes" ms.date: 06/28/2019 ms.topic: "conceptual" f1_keywords: @@ -19,7 +19,6 @@ f1_keywords: - "_Field_size_full_" - "_Field_size_full_opt_" - "_Field_z_" -ms.assetid: b8278a4a-c86e-4845-aa2a-70da21a1dd52 --- # Annotating Structs and Classes @@ -52,13 +51,11 @@ You can annotate struct and class members by using annotations that act like inv Applies to struct or class declaration. Indicates that a valid object of that type may be larger than the declared type, with the number of bytes being specified by `size`. For example: ```cpp - typedef _Struct_size_bytes_(nSize) struct MyStruct { size_t nSize; ... }; - ``` The buffer size in bytes of a parameter `pM` of type `MyStruct *` is then taken to be: diff --git a/docs/cpp/codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_1.cpp b/docs/cpp/codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_1.cpp index af736b0495e..753367555e0 100644 --- a/docs/cpp/codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_1.cpp +++ b/docs/cpp/codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_1.cpp @@ -1,4 +1,3 @@ - // Use make_shared function when possible. auto sp1 = make_shared(L"The Beatles", L"Im Happy Just to Dance With You"); diff --git a/docs/cpp/codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_6.cpp b/docs/cpp/codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_6.cpp index 551c3f2f5b7..2c02d593fbd 100644 --- a/docs/cpp/codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_6.cpp +++ b/docs/cpp/codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_6.cpp @@ -1,4 +1,3 @@ - // Initialize two separate raw pointers. // Note that they contain the same values. auto song1 = new Song(L"Village People", L"YMCA"); diff --git a/docs/cpp/codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_3.cpp b/docs/cpp/codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_3.cpp index e7ad81c8d5a..29baefa191f 100644 --- a/docs/cpp/codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_3.cpp +++ b/docs/cpp/codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_3.cpp @@ -1,4 +1,3 @@ - class MyClass { private: diff --git a/docs/cpp/codesnippet/CPP/smart-pointers-modern-cpp_2.cpp b/docs/cpp/codesnippet/CPP/smart-pointers-modern-cpp_2.cpp index 10ac9aab95d..2c7e2716ed6 100644 --- a/docs/cpp/codesnippet/CPP/smart-pointers-modern-cpp_2.cpp +++ b/docs/cpp/codesnippet/CPP/smart-pointers-modern-cpp_2.cpp @@ -1,4 +1,3 @@ - class LargeObject { public: diff --git a/docs/linux/deploy-run-and-debug-your-linux-project.md b/docs/linux/deploy-run-and-debug-your-linux-project.md index ab59ede9d1d..e52bfcd132d 100644 --- a/docs/linux/deploy-run-and-debug-your-linux-project.md +++ b/docs/linux/deploy-run-and-debug-your-linux-project.md @@ -135,7 +135,6 @@ The **Content** property specifies whether the file will be deployed to the remo In some cases, you may require more control over your project's deployment. For example, some files that you want to deploy might be outside of your solution or you want to customize your remote deploy directory per file or directory. In these cases, append the following code block(s) to your .vcxproj file and replace "example.cpp" with the actual file names: ```xml - @@ -183,4 +182,4 @@ If you want complete control over your deployment, you can append the following ## See also -[C++ Debugging Properties (Linux C++)](prop-pages/debugging-linux.md) \ No newline at end of file +[C++ Debugging Properties (Linux C++)](prop-pages/debugging-linux.md) diff --git a/docs/mfc/codesnippet/CPP/accessing-the-embedded-month-calendar-control_2.cpp b/docs/mfc/codesnippet/CPP/accessing-the-embedded-month-calendar-control_2.cpp index 240dd065e73..fbc30334bf0 100644 --- a/docs/mfc/codesnippet/CPP/accessing-the-embedded-month-calendar-control_2.cpp +++ b/docs/mfc/codesnippet/CPP/accessing-the-embedded-month-calendar-control_2.cpp @@ -1,4 +1,3 @@ - //create and initialize the font to be used LOGFONT logFont = {0}; logFont.lfHeight = -12; diff --git a/docs/mfc/codesnippet/CPP/cbitmapbutton-class_3.cpp b/docs/mfc/codesnippet/CPP/cbitmapbutton-class_3.cpp index 5bb7063b2af..a54aeb90492 100644 --- a/docs/mfc/codesnippet/CPP/cbitmapbutton-class_3.cpp +++ b/docs/mfc/codesnippet/CPP/cbitmapbutton-class_3.cpp @@ -1,4 +1,3 @@ - // Create the bitmap button (must include the BS_OWNERDRAW style). pmyButton->Create(NULL, WS_CHILD | WS_VISIBLE | BS_OWNERDRAW, CRect(10, 10, 100, 100), pParentWnd, 1); diff --git a/docs/mfc/reference/codesnippet/CPP/cpagerctrl-class_5.cpp b/docs/mfc/reference/codesnippet/CPP/cpagerctrl-class_5.cpp index 8d26f622010..faf40bf8581 100644 --- a/docs/mfc/reference/codesnippet/CPP/cpagerctrl-class_5.cpp +++ b/docs/mfc/reference/codesnippet/CPP/cpagerctrl-class_5.cpp @@ -1,4 +1,3 @@ - void CCSplitButton_s2Dlg::OnXIsbuttoninvisible() { BOOL bLeft = m_pager.IsButtonInvisible(PGB_TOPORLEFT); From da9d25515bd119b70ab78743728823f973bc246c Mon Sep 17 00:00:00 2001 From: Masashi Jobara Date: Tue, 4 Mar 2025 18:01:51 +0900 Subject: [PATCH 0229/2255] Update Remarks of vscprintf functions about Return Value --- .../reference/vscprintf-vscprintf-l-vscwprintf-vscwprintf-l.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/c-runtime-library/reference/vscprintf-vscprintf-l-vscwprintf-vscwprintf-l.md b/docs/c-runtime-library/reference/vscprintf-vscprintf-l-vscwprintf-vscwprintf-l.md index 080aed3268b..ac02613e06b 100644 --- a/docs/c-runtime-library/reference/vscprintf-vscprintf-l-vscwprintf-vscwprintf-l.md +++ b/docs/c-runtime-library/reference/vscprintf-vscprintf-l-vscwprintf-vscwprintf-l.md @@ -59,6 +59,9 @@ If *`format`* is a null pointer, the invalid parameter handler is invoked, as de ## Remarks +Return Value is the size of the formatted data. If the function takes a `char` buffer, the size is in bytes. If the function takes a `wchar_t` buffer, the size specifies the number of 16-bit words. +Characters refer to `char` characters for functions that take a `char` buffer, and to `wchar_t` characters for functions that take a `wchar_t` buffer. + Each *`argument`* (if any) is converted according to the corresponding format specification in *`format`*. The format consists of ordinary characters and has the same form and function as the *`format`* argument for [`printf`](printf-printf-l-wprintf-wprintf-l.md). > [!IMPORTANT] From a6be8eb42580274ac9532836f67339c11fb63fd5 Mon Sep 17 00:00:00 2001 From: Masashi Jobara Date: Tue, 4 Mar 2025 18:22:23 +0900 Subject: [PATCH 0230/2255] Update vscprintf_p and vscwprintf_p --- .../vscprintf-p-vscprintf-p-l-vscwprintf-p-vscwprintf-p-l.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/c-runtime-library/reference/vscprintf-p-vscprintf-p-l-vscwprintf-p-vscwprintf-p-l.md b/docs/c-runtime-library/reference/vscprintf-p-vscprintf-p-l-vscwprintf-p-vscwprintf-p-l.md index c2185baab27..6f6910fcf6b 100644 --- a/docs/c-runtime-library/reference/vscprintf-p-vscprintf-p-l-vscwprintf-p-vscwprintf-p-l.md +++ b/docs/c-runtime-library/reference/vscprintf-p-vscprintf-p-l-vscwprintf-p-vscwprintf-p-l.md @@ -59,6 +59,9 @@ These functions differ from **`_vscprintf`** and **`_vscwprintf`** only in that The versions of these functions with the **`_l`** suffix are identical except that they use the locale parameter passed in instead of the current thread locale. +Return Value is the size of the formatted data. If the function takes a `char` buffer, the size is in bytes. If the function takes a `wchar_t` buffer, the size specifies the number of 16-bit words. +Characters refer to `char` characters for functions that take a `char` buffer, and to `wchar_t` characters for functions that take a `wchar_t` buffer. + If *`format`* is a null pointer, the invalid parameter handler is invoked, as described in [Parameter validation](../parameter-validation.md). If execution is allowed to continue, the functions return -1 and set `errno` to `EINVAL`. > [!IMPORTANT] From 4a1769cb1371efc2084f4131099ede7382742cef Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 4 Mar 2025 14:05:14 -0800 Subject: [PATCH 0231/2255] edit --- docs/build/reference/dynamic-deopt-linker.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/dynamic-deopt-linker.md b/docs/build/reference/dynamic-deopt-linker.md index 7efe49f2dab..29ac42b4042 100644 --- a/docs/build/reference/dynamic-deopt-linker.md +++ b/docs/build/reference/dynamic-deopt-linker.md @@ -43,7 +43,7 @@ This preview flag, available starting with Visual Studio 2022 Version 17.14 Prev ## See also -[`/dynamicdeopt` (Enable C++ Dynamic Debugging (Preview))](dynamic-deopt.md)\ +[`/dynamicdeopt` (Enable C++ Dynamic Debugging) (Preview)](dynamic-deopt.md)\ [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging)\ [MSVC linker reference](linking.md)\ [MSVC linker options](linker-options.md) From b91165c5c6a2f6bf962f556a0e62e8370b9d3cd9 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 4 Mar 2025 15:16:35 -0800 Subject: [PATCH 0232/2255] fix customer reported issue --- .../compiler-warning-level-4-c4706.md | 30 ++++--------------- 1 file changed, 6 insertions(+), 24 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4706.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4706.md index 6fa2feebb00..67dc6d520f6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4706.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4706.md @@ -1,23 +1,21 @@ --- description: "Learn more about: Compiler Warning (level 4) C4706" title: "Compiler Warning (level 4) C4706" -ms.date: "11/04/2016" +ms.date: "3/4/2025" f1_keywords: ["C4706"] helpviewer_keywords: ["C4706"] -ms.assetid: 89cd3f4f-812c-4a4b-9426-65a5a6d1b99c --- # Compiler Warning (level 4) C4706 -assignment within conditional expression +> assignment used as a condition -The test value in a conditional expression was the result of an assignment. +The test value in a conditional expression is the result of an assignment. An assignment has a value (the value on the left side of the assignment) that can be used legally in another expression, including a test expression. The following sample generates C4706: ```cpp -// C4706a.cpp // compile with: /W4 int main() { @@ -28,24 +26,9 @@ int main() } ``` -The warning will occur even if you double the parentheses around the test condition: +If your intention is to test a relation, not to make an assignment, use the `==` operator. For example, the following tests whether a and b are equal: ```cpp -// C4706b.cpp -// compile with: /W4 -int main() -{ - int a = 0, b = 0; - if ( ( a = b ) ) // C4706 - { - } -} -``` - -If your intention is to test a relation and not to make an assignment, use the `==` operator. For example, the following line tests whether a and b are equal: - -```cpp -// C4706c.cpp // compile with: /W4 int main() { @@ -56,15 +39,14 @@ int main() } ``` -If you intend to make your test value the result of an assignment, test to ensure that the assignment is non-zero or not null. For example, the following code will not generate this warning: +If you intend to make your test value the result of an assignment, test to ensure that the assignment is non-zero or non-null. For example, the following code doesn't generate this warning: ```cpp -// C4706d.cpp // compile with: /W4 int main() { int a = 0, b = 0; - if ( ( a = b ) != 0 ) + if (( a = b ) != 0 ) { } } From c633916e6c74a8ef5bb612982cd148188100080d Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 5 Mar 2025 15:46:06 +0800 Subject: [PATCH 0233/2255] Delete GitHub issue templates --- ...ew-c---2017-stl-library-documentation-topic-.md | 13 ------------- ...ew-c---2020-stl-library-documentation-topic-.md | 13 ------------- ...new-c---2023-stl-library-documentation-topic.md | 13 ------------- .../new-c---stl-library-doc-topic-.md | 13 ------------- .../ISSUE_TEMPLATE/new-c--20-compiler-doc-topic.md | 14 -------------- .../ISSUE_TEMPLATE/new-c--23-compiler-doc-topic.md | 14 -------------- 6 files changed, 80 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/new-c---2017-stl-library-documentation-topic-.md delete mode 100644 .github/ISSUE_TEMPLATE/new-c---2020-stl-library-documentation-topic-.md delete mode 100644 .github/ISSUE_TEMPLATE/new-c---2023-stl-library-documentation-topic.md delete mode 100644 .github/ISSUE_TEMPLATE/new-c---stl-library-doc-topic-.md delete mode 100644 .github/ISSUE_TEMPLATE/new-c--20-compiler-doc-topic.md delete mode 100644 .github/ISSUE_TEMPLATE/new-c--23-compiler-doc-topic.md diff --git a/.github/ISSUE_TEMPLATE/new-c---2017-stl-library-documentation-topic-.md b/.github/ISSUE_TEMPLATE/new-c---2017-stl-library-documentation-topic-.md deleted file mode 100644 index d6a22e7b7ef..00000000000 --- a/.github/ISSUE_TEMPLATE/new-c---2017-stl-library-documentation-topic-.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -name: 'New C++ 2017 STL library documentation topic' -about: Create a C++ 2017 doc tracking work item -title: '' -labels: C++17, STL doc work -assignees: '' ---- -{Use this template to request **new** documentation to cover a feature area in the ISO C++17 standard library. Replace this text in curly braces with a description of the feature area to cover. Include a link to the proposal paper that introduced the issue (for example, `[N4086 Removing Trigraphs??!](https://wg21.link/n4086)`), or cite the chapter and section number or \[short.name] in the C++ standard that describes the feature. Add the Visual Studio version that first implements this feature. If you don't know or don't have these values, then this issue template probably isn't the right one to use. - -If documentation already exists on docs.microsoft.com for this feature area, and you're requesting an update, bug fix, or clarification, don't use this template. Go to the article on docs.microsoft.com and use the **This page** button in the **Feedback** section at the bottom of the document to create a GitHub issue. Include a citation for the ISO standard feature area in your description.} - -ISO paper or location in the standard for this feature: {insert link or section here} -First implemented in: {VS 20YY major.minor} diff --git a/.github/ISSUE_TEMPLATE/new-c---2020-stl-library-documentation-topic-.md b/.github/ISSUE_TEMPLATE/new-c---2020-stl-library-documentation-topic-.md deleted file mode 100644 index 189349bd9ab..00000000000 --- a/.github/ISSUE_TEMPLATE/new-c---2020-stl-library-documentation-topic-.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -name: 'New C++ 2020 STL library documentation topic' -about: Create a C++ 2020 doc tracking work item -title: '' -labels: C++20, STL doc work -assignees: '' ---- -{Use this template to request **new** documentation to cover a feature area in the ISO C++20 standard library. Replace this text in curly braces with a description of the feature area to cover. Include a link to the proposal paper that introduced the issue (for example, `[N4086 Removing Trigraphs??!](https://wg21.link/n4086)`), or cite the chapter and section number or \[short.name] in the C++ standard that describes the feature. Add the Visual Studio version that first implements this feature. If you don't know or don't have these values, then this issue template probably isn't the right one to use. - -If documentation already exists on docs.microsoft.com for this feature area, and you're requesting an update, bug fix, or clarification, don't use this template. Go to the article on docs.microsoft.com and use the **This page** button in the **Feedback** section at the bottom of the document to create a GitHub issue. Include a citation for the ISO standard feature area in your description.} - -ISO paper or location in the standard for this feature: {insert link or section here} -First implemented in: {VS 20YY major.minor} diff --git a/.github/ISSUE_TEMPLATE/new-c---2023-stl-library-documentation-topic.md b/.github/ISSUE_TEMPLATE/new-c---2023-stl-library-documentation-topic.md deleted file mode 100644 index 7231cf6266e..00000000000 --- a/.github/ISSUE_TEMPLATE/new-c---2023-stl-library-documentation-topic.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -name: 'New C++ 2023 STL library documentation topic' -about: Create an issue to track C++ 2023 STL doc work -title: '' -labels: C++23, STL doc work -assignees: '' ---- -{Use this template to request **new** documentation to cover a feature area proposed for the ISO C++23 standard library. Replace this text in curly braces with a description of the feature area to cover. Include a link to the proposal paper that introduced the issue (for example, `[N4086 Removing Trigraphs??!](https://wg21.link/n4086)`), or cite the chapter and section number or \[short.name] in the C++ standard that describes the feature. Add the Visual Studio version that first implements this feature. If you don't know or don't have these values, then this issue template probably isn't the right one to use. - -If documentation already exists on docs.microsoft.com for this feature area, and you're requesting an update, bug fix, or clarification, don't use this template. Go to the article on docs.microsoft.com and use the **This page** button in the **Feedback** section at the bottom of the document to create a GitHub issue. Include a citation for the ISO standard feature area in your description.} - -ISO paper or location in the standard for this feature: {insert link or section here} -First implemented in: {VS 20YY major.minor} diff --git a/.github/ISSUE_TEMPLATE/new-c---stl-library-doc-topic-.md b/.github/ISSUE_TEMPLATE/new-c---stl-library-doc-topic-.md deleted file mode 100644 index 35de11091d9..00000000000 --- a/.github/ISSUE_TEMPLATE/new-c---stl-library-doc-topic-.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -name: 'New C++ STL library documentation topic' -about: Create a C++ doc tracking work item -title: '' -labels: STL doc work -assignees: '' ---- -{Use this template to request **new** documentation to cover a feature area in the ISO C++ standard library. Replace this text in curly braces with a description of the feature area to cover. Include a link to the tracking issue or PR in the [Microsoft/STL](https://github.com/microsoft/STL/pulls) repo that implements the feature area. If relevant, include a link to the proposal paper that introduced the issue (for example, `[N4086 Removing Trigraphs??!](https://wg21.link/n4086)`), or cite the chapter and section number or \[short.name] in the C++ standard that describes the feature. Add the Visual Studio version that first implements this feature. If you don't know or don't have these values, then this issue template probably isn't the right one to use. - -If documentation already exists on docs.microsoft.com for this feature area, and you're requesting an update, bug fix, or clarification, don't use this template. Go to the article on docs.microsoft.com and use the **This page** button in the **Feedback** section at the bottom of the document to create a GitHub issue. If possible, include a citation for the ISO standard feature area in your description.} - -[Microsoft/STL](https://github.com/microsoft/STL/pulls) PR, ISO paper or location in the standard for this feature: {insert link or section here} -First implemented in: {VS 20YY major.minor} diff --git a/.github/ISSUE_TEMPLATE/new-c--20-compiler-doc-topic.md b/.github/ISSUE_TEMPLATE/new-c--20-compiler-doc-topic.md deleted file mode 100644 index b27ff51d563..00000000000 --- a/.github/ISSUE_TEMPLATE/new-c--20-compiler-doc-topic.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -name: 'New C++20 compiler documentation topic' -about: Create a C++ doc tracking work item -title: '' -labels: C++20, Standard doc work -assignees: '' ---- -{Use this template to request **new** documentation to cover a compiler feature area in the ISO C++20 standard. Replace this text in curly braces with a description of the feature area to cover. Include a link to the proposal paper that introduced the issue (for example, `[N4086 Removing Trigraphs??!](https://wg21.link/n4086)`), or cite the chapter and section number or \[short.name] in the C++ standard that describes the feature. Add the Visual Studio version that first implements this feature. If you don't know or don't have these values, then this issue template probably isn't the right one to use. - -If documentation already exists on docs.microsoft.com for this feature area, and you're requesting an update, bug fix, or clarification, don't use this template. Go to the article on docs.microsoft.com and use the **This page** button in the **Feedback** section at the bottom of the document to create a GitHub issue. If possible, include a citation for the ISO standard feature area in your description.} - -ISO paper or location in the standard for this feature: {insert link or section here} - -First implemented in: {VS 20YY major.minor} diff --git a/.github/ISSUE_TEMPLATE/new-c--23-compiler-doc-topic.md b/.github/ISSUE_TEMPLATE/new-c--23-compiler-doc-topic.md deleted file mode 100644 index 7f86f82da5e..00000000000 --- a/.github/ISSUE_TEMPLATE/new-c--23-compiler-doc-topic.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -name: 'New C++23 compiler documentation topic' -about: Create a C++ doc tracking work item -title: '' -labels: C++23, Standard doc work -assignees: '' ---- -{Use this template to request **new** documentation to cover a compiler feature area in the ISO C++23 standard. Replace this text in curly braces with a description of the feature area to cover. Include a link to the proposal paper that introduced the issue (for example, `[N4086 Removing Trigraphs??!](https://wg21.link/n4086)`), or cite the chapter and section number or \[short.name] in the C++ standard that describes the feature. Add the Visual Studio version that first implements this feature. If you don't know or don't have these values, then this issue template probably isn't the right one to use. - -If documentation already exists on docs.microsoft.com for this feature area, and you're requesting an update, bug fix, or clarification, don't use this template. Go to the article on docs.microsoft.com and use the **This page** button in the **Feedback** section at the bottom of the document to create a GitHub issue. If possible, include a citation for the ISO standard feature area in your description.} - -ISO paper or location in the standard for this feature: {insert link or section here} - -First implemented in: {VS 20YY major.minor} From bf45ae8d73113506508a8617708a98da7793330a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 5 Mar 2025 16:31:18 +0800 Subject: [PATCH 0234/2255] Improve `CMFCButton` class reference --- docs/mfc/reference/cmfcbutton-class.md | 218 +++++++++++-------------- 1 file changed, 95 insertions(+), 123 deletions(-) diff --git a/docs/mfc/reference/cmfcbutton-class.md b/docs/mfc/reference/cmfcbutton-class.md index 5e3103d3174..a244e55d07e 100644 --- a/docs/mfc/reference/cmfcbutton-class.md +++ b/docs/mfc/reference/cmfcbutton-class.md @@ -11,7 +11,7 @@ The `CMFCButton` class adds functionality to the [`CButton`](../../mfc/reference ## Syntax -``` +```cpp class CMFCButton : public CButton ``` @@ -45,7 +45,7 @@ class CMFCButton : public CButton |[`CMFCButton::IsPushed`](#ispushed)|Indicates whether a button is pushed.| |[`CMFCButton::IsRadioButton`](#isradiobutton)|Indicates whether a button is a radio button.| |[`CMFCButton::IsWindowsThemingEnabled`](#iswindowsthemingenabled)|Indicates whether the style of the button border corresponds to the current Windows theme.| -|`CMFCButton::OnDrawParentBackground`|Draws the background of a button's parent in the specified area. (Overrides [`AFX_GLOBAL_DATA::DrawParentBackground`](../../mfc/reference/afx-global-data-structure.md)| +|`CMFCButton::OnDrawParentBackground`|Draws the background of a button's parent in the specified area. (Overrides [`AFX_GLOBAL_DATA::DrawParentBackground`](../../mfc/reference/afx-global-data-structure.md).)| |`CMFCButton::PreTranslateMessage`|Translates window messages before they are dispatched to the [`TranslateMessage`](/windows/win32/api/winuser/nf-winuser-translatemessage) and [`DispatchMessage`](/windows/win32/api/winuser/nf-winuser-dispatchmessage) Windows functions. (Overrides [`CWnd::PreTranslateMessage`](../../mfc/reference/cwnd-class.md#pretranslatemessage).)| |[`CMFCButton::SetAutorepeatMode`](#setautorepeatmode)|Sets a button to auto-repeat mode.| |[`CMFCButton::SetCheckedImage`](#setcheckedimage)|Sets the image for a checked button.| @@ -78,8 +78,8 @@ class CMFCButton : public CButton |[`CMFCButton::m_bDontUseWinXPTheme`](#m_bDontUseWinXPTheme)|Specifies whether to use Windows XP themes.| |[`CMFCButton::m_bDrawFocus`](#m_bdrawfocus)|Indicates whether to draw a focus rectangle around a button.| |[`CMFCButton::m_nFlatStyle`](#m_nflatstyle)|Specifies the style of the button, such as borderless, flat, semi-flat, or 3D.| -|[`CMFCButton::m_bGrayDisabled`](#m_bGrayDisabled)|When TRUE, enables a disabled button to be drawn as grayed-out.| -|[`CMFCButton::m_bHighlightChecked`](#m_bhighlightchecked)|Indicates whether to highlight a BS_CHECKBOX-style button when the cursor hovers over it.| +|[`CMFCButton::m_bGrayDisabled`](#m_bGrayDisabled)|When `TRUE`, enables a disabled button to be drawn as grayed-out.| +|[`CMFCButton::m_bHighlightChecked`](#m_bhighlightchecked)|Indicates whether to highlight a `BS_CHECKBOX`-style button when the cursor hovers over it.| |[`CMFCButton::m_bResponseOnButtonDown`](#m_bResponseOnButtonDown)|Indicates whether to respond to button down events.| |[`CMFCButton::m_bRightImage`](#m_brightimage)|Indicates whether to display an image on the right side of the button.| |[`CMFCButton::m_bTopImage`](#m_bTopImage)| Indicates whether the image is on top of the button.| @@ -125,7 +125,7 @@ The following example demonstrates how to configure the properties of the button Resets internal variables and frees allocated resources such as images, bitmaps, and icons. -``` +```cpp virtual void CleanUp(); ``` @@ -139,11 +139,9 @@ void EnableFullTextTooltip(BOOL bOn=TRUE); ### Parameters -*`bOn`*
+*`bOn`*\ [in] `TRUE` to display all of the text; `FALSE` to display truncated text. -### Remarks - ##
`CMFCButton::EnableMenuFont` Specifies whether the button text font is the same as the application menu font. @@ -156,10 +154,10 @@ void EnableMenuFont( ### Parameters -*`bOn`*
+*`bOn`*\ [in] `TRUE` to use the application menu font as the button text font; `FALSE` to use the system font. The default is `TRUE`. -*`bRedraw`*
+*`bRedraw`*\ [in] `TRUE` to immediately redraw the screen; otherwise, `FALSE`. The default is `TRUE`. ### Remarks @@ -170,13 +168,13 @@ If you do not use this method to specify the button text font, you can specify t Specifies whether the style of the button border corresponds to the current Windows theme. -``` +```cpp static void EnableWindowsTheming(BOOL bEnable = TRUE); ``` ### Parameters -*`bEnable`*
+*`bEnable`*\ [in] `TRUE` to use the current Windows theme to draw button borders; `FALSE` to not use the Windows theme. The default is `TRUE`. ### Remarks @@ -187,7 +185,7 @@ This method affects all buttons in your application that are derived from the `C Returns a reference to the underlying tooltip control. -``` +```cpp CToolTipCtrl& GetToolTipCtrl(); ``` @@ -195,13 +193,11 @@ CToolTipCtrl& GetToolTipCtrl(); A reference to the underlying tooltip control. -### Remarks - ## `CMFCButton::IsAutoCheck` Indicates whether a check box or radio button is an automatic button. -``` +```cpp BOOL IsAutoCheck() const; ``` @@ -209,13 +205,11 @@ BOOL IsAutoCheck() const; `TRUE` if the button has style `BS_AUTOCHECKBOX` or `BS_AUTORADIOBUTTON`; otherwise, `FALSE`. -### Remarks - ## `CMFCButton::IsAutorepeatCommandMode` Indicates whether a button is set to auto-repeat mode. -``` +```cpp BOOL IsAutorepeatCommandMode() const; ``` @@ -231,7 +225,7 @@ Use the [`CMFCButton::SetAutorepeatMode`](#setautorepeatmode) method to set a bu Indicates whether a button is a check box button. -``` +```cpp BOOL IsCheckBox() const; ``` @@ -239,13 +233,11 @@ BOOL IsCheckBox() const; `TRUE` if the button has either `BS_CHECKBOX` or `BS_AUTOCHECKBOX` style; otherwise, `FALSE`. -### Remarks - ## `CMFCButton::IsChecked` Indicates whether the current button is checked. -``` +```cpp BOOL IsChecked() const; ``` @@ -261,7 +253,7 @@ The framework uses different ways to indicate that different kinds of buttons ar Indicates whether a button is highlighted. -``` +```cpp BOOL IsHighlighted() const; ``` @@ -277,7 +269,7 @@ A button becomes highlighted when the mouse hovers over the button. Indicates whether a button is pushed and highlighted. -``` +```cpp BOOL IsPressed() const; ``` @@ -285,13 +277,11 @@ BOOL IsPressed() const; `TRUE` if the button is pressed; otherwise, `FALSE`. -### Remarks - ## `CMFCButton::IsPushed` Indicates whether a button is pushed. -``` +```cpp BOOL IsPushed() const; ``` @@ -299,13 +289,11 @@ BOOL IsPushed() const; `TRUE` if the button is pushed; otherwise, `FALSE`. -### Remarks - ## `CMFCButton::IsRadioButton` Indicates whether a button is a radio button. -``` +```cpp BOOL IsRadioButton() const; ``` @@ -313,13 +301,11 @@ BOOL IsRadioButton() const; `TRUE` if the button style is `BS_RADIOBUTTON` or `BS_AUTORADIOBUTTON`; otherwise, `FALSE`. -### Remarks - ## `CMFCButton::IsWindowsThemingEnabled` Indicates whether the style of the button border corresponds to the current Windows theme. -``` +```cpp static BOOL IsWindowsThemingEnabled(); ``` @@ -331,7 +317,7 @@ static BOOL IsWindowsThemingEnabled(); Specifies whether to use Windows XP themes when drawing the button. -``` +```cpp BOOL m_bDontUseWinXPTheme; ``` @@ -339,7 +325,7 @@ BOOL m_bDontUseWinXPTheme; Indicates whether to draw a focus rectangle around a button. -``` +```cpp BOOL m_bDrawFocus; ``` @@ -353,7 +339,7 @@ The `CMFCButton` constructor initializes this member to `TRUE`. When `TRUE`, enables a disabled button to be drawn as grayed-out. -``` +```cpp BOOL m_bGrayDisabled; ``` @@ -361,7 +347,7 @@ BOOL m_bGrayDisabled; Indicates whether to highlight a `BS_CHECKBOX`-style button when the cursor hovers over it. -``` +```cpp BOOL m_bHighlightChecked; ``` @@ -373,7 +359,7 @@ Set the `m_bHighlightChecked` member to `TRUE` to specify that the framework wil Indicates whether to respond to button down events. -``` +```cpp BOOL m_bResponseOnButtonDown; ``` @@ -381,15 +367,15 @@ BOOL m_bResponseOnButtonDown; Indicates whether to display an image on the right side of the button. -``` +```cpp BOOL m_bRightImage; ``` -## `CMFCButton::m_bTopImage](#m_bTopImage)` +## `CMFCButton::m_bTopImage` Indicates whether the image is on top of the button. -``` +```cpp BOOL m_bTopImage; ``` @@ -401,7 +387,7 @@ Set the `m_bRightImage` member to `TRUE` to specify that the framework will disp Indicates whether the button is transparent. -``` +```cpp BOOL m_bTransparent; ``` @@ -413,7 +399,7 @@ Set the `m_bTransparent` member to `TRUE` to specify that the framework will mak Specifies the alignment of the button text. -``` +```cpp AlignStyle m_nAlignStyle; ``` @@ -429,11 +415,11 @@ Use one of the following `CMFCButton::AlignStyle` enumeration values to specify The `CMFCButton` constructor initializes this member to `ALIGN_CENTER`. -## `CMFCButton::m_bWasDblClk`](#m_bWasDblClk)| +## `CMFCButton::m_bWasDblClk` -Indicates whether the last click event was a double-click.| +Indicates whether the last click event was a double-click. -``` +```cpp BOOL m_bWasDblClk; ``` @@ -441,8 +427,8 @@ BOOL m_bWasDblClk; Specifies the style of the button, such as borderless, flat, semi-flat, or 3D. -``` -FlatStyle m_nFlatStyle; +```cpp +FlatStyle m_nFlatStyle; ``` ### Remarks @@ -469,7 +455,7 @@ The following example demonstrates how to set the values of the `m_nFlatStyle` m Called by the framework to draw a button. -``` +```cpp virtual void OnDraw( CDC* pDC, const CRect& rect, @@ -478,13 +464,13 @@ virtual void OnDraw( ### Parameters -*`pDC`*
+*`pDC`*\ [in] A pointer to a device context. -*`rect`*
+*`rect`*\ [in] A reference to a rectangle that bounds the button. -*`uiState`*
+*`uiState`*\ [in] The current button state. For more information, see the `itemState` member of the [`DRAWITEMSTRUCT` Structure](/windows/win32/api/winuser/ns-winuser-drawitemstruct) topic. ### Remarks @@ -495,7 +481,7 @@ Override this method to use your own code to draw a button. Called by the framework to draw the border of a button. -``` +```cpp virtual void OnDrawBorder( CDC* pDC, CRect& rectClient, @@ -504,13 +490,13 @@ virtual void OnDrawBorder( ### Parameters -*`pDC`*
+*`pDC`*\ [in] A pointer to a device context. -*`rectClient`*
+*`rectClient`*\ [in] A reference to a rectangle that bounds the button. -*`uiState`*
+*`uiState`*\ [in] The current button state. For more information, see the `itemState` member of the [`DRAWITEMSTRUCT` Structure](/windows/win32/api/winuser/ns-winuser-drawitemstruct) topic. ### Remarks @@ -521,7 +507,7 @@ Override this method to use your own code to draw the border. Called by the framework to draw the focus rectangle for a button. -``` +```cpp virtual void OnDrawFocusRect( CDC* pDC, const CRect& rectClient); @@ -529,10 +515,10 @@ virtual void OnDrawFocusRect( ### Parameters -*`pDC`*
+*`pDC`*\ [in] A pointer to a device context. -*`rectClient`*
+*`rectClient`*\ [in] A reference to a rectangle that bounds the button. ### Remarks @@ -543,7 +529,7 @@ Override this method to use your own code to draw the focus rectangle. Called by the framework to draw the button text. -``` +```cpp virtual void OnDrawText( CDC* pDC, const CRect& rect, @@ -554,19 +540,19 @@ virtual void OnDrawText( ### Parameters -*`pDC`*
+*`pDC`*\ [in] A pointer to a device context. -*`rect`*
+*`rect`*\ [in] A reference to a rectangle that bounds the button. -*`strText`*
+*`strText`*\ [in] The text to draw. -*`uiDTFlags`*
+*`uiDTFlags`*\ [in] Flags that specify how to format the text. For more information, see the *`nFormat`* parameter of the [`CDC::DrawText`](../../mfc/reference/cdc-class.md#drawtext) method. -*`uiState`*
+*`uiState`*\ [in] Reserved. ### Remarks @@ -577,7 +563,7 @@ Override this method to use your own code to draw the button text. Called by the framework to draw the background of the button text. -``` +```cpp virtual void OnFillBackground( CDC* pDC, const CRect& rectClient); @@ -585,10 +571,10 @@ virtual void OnFillBackground( ### Parameters -*`pDC`*
+*`pDC`*\ [in] A pointer to a device context. -*`rectClient`*
+*`rectClient`*\ [in] A reference to a rectangle that bounds the button. ### Remarks @@ -599,21 +585,19 @@ Override this method to use your own code to draw the background of a button. Retrieves the font that is associated with the specified device context. -``` +```cpp virtual CFont* SelectFont(CDC* pDC); ``` ### Parameters -*`pDC`*
+*`pDC`*\ [in] A pointer to a device context. ### Return Value Override this method to use your own code to retrieve the font. -### Remarks - ## `CMFCButton::SetAutorepeatMode` Sets a button to auto-repeat mode. @@ -624,7 +608,7 @@ void SetAutorepeatMode(int nTimeDelay=500); ### Parameters -*`nTimeDelay`*
+*`nTimeDelay`*\ [in] A nonnegative number that specifies the interval between messages that are sent to the parent window. The interval is measured in milliseconds and its default value is 500 milliseconds. Specify zero to disable auto-repeat message mode. ### Remarks @@ -658,44 +642,42 @@ void SetCheckedImage( ### Parameters -*`hIcon`*
+*`hIcon`*\ [in] Handle to the icon that contains the bitmap and mask for the new image. -*`bAutoDestroy`*
+*`bAutoDestroy`*\ [in] `TRUE` to specify that bitmap resources be destroyed automatically; otherwise, `FALSE`. The default is `TRUE`. -*`hIconHot`*
+*`hIconHot`*\ [in] Handle to the icon that contains the image for the selected state. -*`hBitmap`*
+*`hBitmap`*\ [in] Handle to the bitmap that contains the image for the non-selected state. -*`hBitmapHot`*
+*`hBitmapHot`*\ [in] Handle to the bitmap that contains the image for the selected state. -*`bMap3dColors`*
+*`bMap3dColors`*\ [in] Specifies a transparent color for the button background; that is, the face of the button. `TRUE` to use the color value RGB(192, 192, 192); `FALSE` to use the color value defined by `AFX_GLOBAL_DATA::clrBtnFace`. -*`uiBmpResId`*
+*`uiBmpResId`*\ [in] Resource ID for the non-selected image. -*`uiBmpHotResId`*
+*`uiBmpHotResId`*\ [in] Resource ID for the selected image. -*`hIconDisabled`*
+*`hIconDisabled`*\ [in] Handle to the icon for the disabled image. -*`hBitmapDisabled`*
+*`hBitmapDisabled`*\ [in] Handle to the bitmap that contains the disabled image. -*`uiBmpDsblResID`*
+*`uiBmpDsblResID`*\ [in] Resource ID of the disabled bitmap. -*`bAlphaBlend`*
+*`bAlphaBlend`*\ [in] `TRUE` to use only 32-bit images that use the alpha channel; `FALSE`, to not use only alpha channel images. The default is `FALSE`. -### Remarks - ## `CMFCButton::SetFaceColor` Sets the background color for the button text. @@ -708,17 +690,17 @@ void SetFaceColor( ### Parameters -*`crFace`*
+*`crFace`*\ [in] An RGB color value. -*`bRedraw`*
+*`bRedraw`*\ [in] `TRUE` to redraw the screen immediately; otherwise, `FALSE`. ### Remarks Use this method to define a new fill color for the button background (face). Note that the background is not filled when the [`CMFCButton::m_bTransparent`](#m_btransparent) member variable is `TRUE`. -## CMFCButton::SetImage +## `CMFCButton::SetImage` Sets the image for a button. @@ -745,44 +727,42 @@ void SetImage( ### Parameters -*`hIcon`*
+*`hIcon`*\ [in] Handle to the icon that contains the bitmap and mask for the new image. -*`bAutoDestroy`*
+*`bAutoDestroy`*\ [in] `TRUE` to specify that bitmap resources be destroyed automatically; otherwise, `FALSE`. The default is `TRUE`. -*`hIconHot`*
+*`hIconHot`*\ [in] Handle to the icon that contains the image for the selected state. -*`hBitmap`*
+*`hBitmap`*\ [in] Handle to the bitmap that contains the image for the non-selected state. -*`hBitmapHot`*
+*`hBitmapHot`*\ [in] Handle to the bitmap that contains the image for the selected state. -*`uiBmpResId`*
+*`uiBmpResId`*\ [in] Resource ID for the non-selected image. -*`uiBmpHotResId`*
+*`uiBmpHotResId`*\ [in] Resource ID for the selected image. -*`bMap3dColors`*
+*`bMap3dColors`*\ [in] Specifies a transparent color for the button background; that is, the face of the button. `TRUE` to use the color value RGB(192, 192, 192); `FALSE` to use the color value defined by `AFX_GLOBAL_DATA::clrBtnFace`. -*`hIconDisabled`*
+*`hIconDisabled`*\ [in] Handle to the icon for the disabled image. -*`hBitmapDisabled`*
+*`hBitmapDisabled`*\ [in] Handle to the bitmap that contains the disabled image. -*`uiBmpDsblResID`*
+*`uiBmpDsblResID`*\ [in] Resource ID of the disabled bitmap. -*`bAlphaBlend`*
+*`bAlphaBlend`*\ [in] `TRUE` to use only 32-bit images that use the alpha channel; `FALSE`, to not use only alpha channel images. The default is `FALSE`. -### Remarks - ### Example The following example demonstrates how to use various versions of the `SetImage` method in the `CMFCButton` class. The example is part of the [New Controls sample](../../overview/visual-cpp-samples.md). @@ -800,7 +780,7 @@ void SetMouseCursor(HCURSOR hcursor); ### Parameters -*`hcursor`*
+*`hcursor`*\ [in] The handle of a cursor. ### Remarks @@ -839,16 +819,14 @@ void SetStdImage( ### Parameters -*`id`*
+*`id`*\ [in] One of the button image identifiers that is defined in the `CMenuImage::IMAGES_IDS` enumeration. The image values specify images such as arrows, pins, and radio buttons. -*`state`*
+*`state`*\ [in] One of the button image state identifiers that is defined in the `CMenuImages::IMAGE_STATE` enumeration. The image states specify button colors such as black, gray, light gray, white, and dark gray. The default value is `CMenuImages::ImageBlack`. -*`idDisabled`*
-[in] One of the button image identifiers that is defined in the `CMenuImage::IMAGES_IDS` enumeration. The image indicates that the button is disabled. The default value is the first button image ( `CMenuImages::IdArrowDown`). - -### Remarks +*`idDisabled`*\ +[in] One of the button image identifiers that is defined in the `CMenuImage::IMAGES_IDS` enumeration. The image indicates that the button is disabled. The default value is the first button image (`CMenuImages::IdArrowDown`). ## `CMFCButton::SetTextColor` @@ -860,11 +838,9 @@ void SetTextColor(COLORREF clrText); ### Parameters -*`clrText`*
+*`clrText`*\ [in] An RGB color value. -### Remarks - ## `CMFCButton::SetTextHotColor` Sets the color of the button text for a button that is selected. @@ -875,11 +851,9 @@ void SetTextHotColor(COLORREF clrTextHot); ### Parameters -*`clrTextHot`*
+*`clrTextHot`*\ [in] An RGB color value. -### Remarks - ## `CMFCButton::SetTooltip` Associates a tooltip with a button. @@ -890,22 +864,20 @@ void SetTooltip(LPCTSTR lpszToolTipText); ### Parameters -*`lpszToolTipText`*
+*`lpszToolTipText`*\ [in] Pointer to the text for the tooltip. Specify `NULL` to disable the tooltip. -### Remarks - ## `CMFCButton::SizeToContent` Resizes a button to contain its button text and image. -``` +```cpp virtual CSize SizeToContent(BOOL bCalcOnly=FALSE); ``` ### Parameters -*`bCalcOnly`*
+*`bCalcOnly`*\ [in] `TRUE` to calculate, but not change, the new size of the button; `FALSE` to change the size of the button. The default is `FALSE`. ### Return Value From 40fce4d70c3f0bd62def41f59c51b18d62567ebf Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 5 Mar 2025 17:55:54 +0800 Subject: [PATCH 0235/2255] Fix some unclosed links --- docs/atl/atl-utilities-reference.md | 6 ++---- docs/atl/reference/ccommultithreadmodel-class.md | 5 ++--- docs/cppcx/platform-guid-value-class.md | 5 ++--- docs/data/odbc/odbc-and-mfc.md | 5 ++--- docs/mfc/reference/diagnostic-services.md | 5 ++--- .../invalid-scheduler-policy-thread-specification-class.md | 5 ++--- .../reference/invalid-scheduler-policy-value-class.md | 5 ++--- .../standard-library/output-file-stream-member-functions.md | 4 ++-- 8 files changed, 16 insertions(+), 24 deletions(-) diff --git a/docs/atl/atl-utilities-reference.md b/docs/atl/atl-utilities-reference.md index 1fe2da43038..c66230825ca 100644 --- a/docs/atl/atl-utilities-reference.md +++ b/docs/atl/atl-utilities-reference.md @@ -1,8 +1,7 @@ --- -description: "Learn more about: ATL utilities reference" title: "ATL utilities reference" +description: "Learn more about: ATL utilities reference" ms.date: "11/04/2016" -ms.assetid: dd8a2888-34f4-461e-9bf4-834218f9b95b --- # ATL utilities reference @@ -47,8 +46,7 @@ ATL provides code for manipulating paths and URLs in the form of [CPathT](../atl | [AtlIsUnsafeUrlChar](../atl/reference/atl-http-utility-functions.md#atlisunsafeurlchar) | Call this function to find out whether a character is safe for use in a URL. | | [AtlUnescapeUrl](../atl/reference/atl-http-utility-functions.md#atlunescapeurl) | Call this function to convert escaped characters back to their original values. | | [SystemTimeToHttpDate](../atl/reference/atl-http-utility-functions.md#systemtimetohttpdate) | Call this function to convert a system time to a string in a format suitable for using in HTTP headers. | -| [ATLPath::AddBackslash](../atl/reference/atl-path-functions.md#addbackslash) | This function is an overloaded wrapper for [PathAddBackslash](/windows/desktop/api/shlwapi/nf-shlwapi-pathaddbackslasha | -| ). | +| [ATLPath::AddBackslash](../atl/reference/atl-path-functions.md#addbackslash) | This function is an overloaded wrapper for [PathAddBackslash](/windows/win32/api/shlwapi/nf-shlwapi-pathaddbackslasha). | | [ATLPath::AddExtension](../atl/reference/atl-path-functions.md#addextension) | This function is an overloaded wrapper for [PathAddExtension](/windows/win32/api/shlwapi/nf-shlwapi-pathaddextensionw). | | [ATLPath::Append](../atl/reference/atl-path-functions.md#append) | This function is an overloaded wrapper for [PathAppend](/windows/win32/api/shlwapi/nf-shlwapi-pathappendw). | | [ATLPath::BuildRoot](../atl/reference/atl-path-functions.md#buildroot) | This function is an overloaded wrapper for [PathBuildRoot](/windows/win32/api/shlwapi/nf-shlwapi-pathbuildrootw). | diff --git a/docs/atl/reference/ccommultithreadmodel-class.md b/docs/atl/reference/ccommultithreadmodel-class.md index 167fe9c3c73..aee8c24d0c0 100644 --- a/docs/atl/reference/ccommultithreadmodel-class.md +++ b/docs/atl/reference/ccommultithreadmodel-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: CComMultiThreadModel Class" title: "CComMultiThreadModel Class" +description: "Learn more about: CComMultiThreadModel Class" ms.date: "11/04/2016" f1_keywords: ["CComMultiThreadModel", "ATLBASE/ATL::CComMultiThreadModel", "ATLBASE/ATL::CComMultiThreadModel::AutoCriticalSection", "ATLBASE/ATL::CComMultiThreadModel::CriticalSection", "ATLBASE/ATL::CComMultiThreadModel::ThreadModelNoCS", "ATLBASE/ATL::CComMultiThreadModel::Decrement", "ATLBASE/ATL::CComMultiThreadModel::Increment"] helpviewer_keywords: ["ATL, multithreading", "CComMultiThreadModel class", "threading [ATL]"] -ms.assetid: db8f1662-2f7a-44b3-b341-ffbfb6e422a3 --- # CComMultiThreadModel Class @@ -35,7 +34,7 @@ class CComMultiThreadModel ## Remarks -Typically, you use `CComMultiThreadModel` through one of two **`typedef`** names, either [CComObjectThreadModel](atl-typedefs.md#ccomobjectthreadmodel or [CComGlobalsThreadModel](atl-typedefs.md#ccomglobalsthreadmodel. The class referenced by each **`typedef`** depends on the threading model used, as shown in the following table: +Typically, you use `CComMultiThreadModel` through one of two **`typedef`** names, either [CComObjectThreadModel](atl-typedefs.md#ccomobjectthreadmodel) or [CComGlobalsThreadModel](atl-typedefs.md#ccomglobalsthreadmodel). The class referenced by each **`typedef`** depends on the threading model used, as shown in the following table: |typedef|Single threading|Apartment threading|Free threading| |-------------|----------------------|-------------------------|--------------------| diff --git a/docs/cppcx/platform-guid-value-class.md b/docs/cppcx/platform-guid-value-class.md index 952645712cc..85a6cc2afef 100644 --- a/docs/cppcx/platform-guid-value-class.md +++ b/docs/cppcx/platform-guid-value-class.md @@ -1,15 +1,14 @@ --- -description: "Learn more about: Platform::Guid value class" title: "Platform::Guid value class" +description: "Learn more about: Platform::Guid value class" ms.date: "01/15/2019" ms.topic: "reference" f1_keywords: ["VCCORLIB/Platform::Guid"] helpviewer_keywords: ["Platform::Guid Struct"] -ms.assetid: 25c0bfb2-7f93-44d8-bdf4-ef4fbac3424a --- # Platform::Guid value class -Represents a [GUID](/windows/win32/api/guiddef/ns-guiddef-guid type in the Windows Runtime type system. +Represents a [GUID](/windows/win32/api/guiddef/ns-guiddef-guid) type in the Windows Runtime type system. ## Syntax diff --git a/docs/data/odbc/odbc-and-mfc.md b/docs/data/odbc/odbc-and-mfc.md index 2a38869720d..8a647cef023 100644 --- a/docs/data/odbc/odbc-and-mfc.md +++ b/docs/data/odbc/odbc-and-mfc.md @@ -1,14 +1,13 @@ --- -description: "Learn more about: ODBC and MFC" title: "ODBC and MFC" +description: "Learn more about: ODBC and MFC" ms.date: "11/04/2016" helpviewer_keywords: ["ODBC [C++], MFC", "connections [C++], databases", "connections [C++], data source", "databases [C++], connecting to", "data sources [C++], connecting to", "MFC [C++], ODBC and", "database connections [C++], MFC ODBC classes"] -ms.assetid: 98f02fd7-1235-437b-89a9-edfd0fc797f7 --- # ODBC and MFC > [!NOTE] -> To use the MFC database classes, you must have the appropriate ODBC driver for your data source. The lastest Microsoft ODBC driver for SQL Server is [Microsoft ODBC Driver 18 for SQL Server](/sql/connect/odbc/download-odbc-driver-for-sql-server. Most database vendors provide an ODBC driver for Windows. +> To use the MFC database classes, you must have the appropriate ODBC driver for your data source. The lastest Microsoft ODBC driver for SQL Server is [Microsoft ODBC Driver 18 for SQL Server](/sql/connect/odbc/download-odbc-driver-for-sql-server). Most database vendors provide an ODBC driver for Windows. This topic introduces the main concepts of the Microsoft Foundation Classes (MFC) library's ODBC-based database classes and provides an overview of how the classes work together. For more information about ODBC and MFC, see the following topics: diff --git a/docs/mfc/reference/diagnostic-services.md b/docs/mfc/reference/diagnostic-services.md index 7bd4aab5395..72ff005c98b 100644 --- a/docs/mfc/reference/diagnostic-services.md +++ b/docs/mfc/reference/diagnostic-services.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Diagnostic Services" title: "Diagnostic Services" +description: "Learn more about: Diagnostic Services" ms.date: 06/29/2022 helpviewer_keywords: ["diagnosi [MFC]s, diagnostic services", "diagnostic macros [MFC], list of general MFC", "services [MFC], diagnostic", "MFC, diagnostic services", "general diagnostic functions and variables [MFC]", "diagnostics [MFC], diagnostic functions and variables", "diagnostics [MFC], list of general MFC", "diagnosis [MFC], diagnostic functions and variables", "diagnosis [MFC], list of general MFC", "general diagnostic macros in MFC", "diagnostic macros [MFC]", "diagnostic services [MFC]", "object diagnostic functions in MFC", "diagnostics [MFC], diagnostic services", "diagnostic functions and variables [MFC]"] -ms.assetid: 8d78454f-9fae-49c2-88c9-d3fabd5393e8 --- # Diagnostic Services @@ -178,7 +177,7 @@ Using the `ASSERT_KINDOF` macro is exactly the same as coding: [!code-cpp[NVC_MFCDocView#195](../../mfc/codesnippet/cpp/diagnostic-services_4.cpp)] -This function works only for classes declared with the [DECLARE_DYNAMIC](run-time-object-model-services.md#declare_dynamic or [DECLARE_SERIAL](run-time-object-model-services.md#declare_serial) macro. +This function works only for classes declared with the [DECLARE_DYNAMIC](run-time-object-model-services.md#declare_dynamic) or [DECLARE_SERIAL](run-time-object-model-services.md#declare_serial) macro. > [!NOTE] > This function is available only in the Debug version of MFC. diff --git a/docs/parallel/concrt/reference/invalid-scheduler-policy-thread-specification-class.md b/docs/parallel/concrt/reference/invalid-scheduler-policy-thread-specification-class.md index b88cbe2494f..6cdc8c69fc0 100644 --- a/docs/parallel/concrt/reference/invalid-scheduler-policy-thread-specification-class.md +++ b/docs/parallel/concrt/reference/invalid-scheduler-policy-thread-specification-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: invalid_scheduler_policy_thread_specification Class" title: "invalid_scheduler_policy_thread_specification Class" +description: "Learn more about: invalid_scheduler_policy_thread_specification Class" ms.date: "11/04/2016" f1_keywords: ["concrt/concurrency::invalid_scheduler_policy_thread_specification"] helpviewer_keywords: ["invalid_scheduler_policy_thread_specification class"] -ms.assetid: 2d0fafb2-18f8-4284-8040-3db640d33303 --- # invalid_scheduler_policy_thread_specification Class @@ -22,7 +21,7 @@ class invalid_scheduler_policy_thread_specification : public std::exception; |Name|Description| |----------|-----------------| -|[invalid_scheduler_policy_thread_specification](invalid-scheduler-policy-value-class.md#ctor|Overloaded. Constructs an `invalid_scheduler_policy_value` object.| +|[invalid_scheduler_policy_thread_specification](#ctor)|Overloaded. Constructs an `invalid_scheduler_policy_thread_specification` object.| ## Inheritance Hierarchy diff --git a/docs/parallel/concrt/reference/invalid-scheduler-policy-value-class.md b/docs/parallel/concrt/reference/invalid-scheduler-policy-value-class.md index 111cc7fea26..78f02b340fe 100644 --- a/docs/parallel/concrt/reference/invalid-scheduler-policy-value-class.md +++ b/docs/parallel/concrt/reference/invalid-scheduler-policy-value-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: invalid_scheduler_policy_value Class" title: "invalid_scheduler_policy_value Class" +description: "Learn more about: invalid_scheduler_policy_value Class" ms.date: "11/04/2016" f1_keywords: ["concrt/concurrency::invalid_scheduler_policy_value"] helpviewer_keywords: ["invalid_scheduler_policy_value class"] -ms.assetid: 8c533e3f-2774-4192-8616-b2313b859bf7 --- # invalid_scheduler_policy_value Class @@ -22,7 +21,7 @@ class invalid_scheduler_policy_value : public std::exception; |Name|Description| |----------|-----------------| -|[invalid_scheduler_policy_value](invalid-scheduler-policy-thread-specification-class.md#ctor|Overloaded. Constructs an `invalid_scheduler_policy_value` object.| +|[invalid_scheduler_policy_value](#ctor)|Overloaded. Constructs an `invalid_scheduler_policy_value` object.| ## Inheritance Hierarchy diff --git a/docs/standard-library/output-file-stream-member-functions.md b/docs/standard-library/output-file-stream-member-functions.md index f01b65202bf..20e60accf97 100644 --- a/docs/standard-library/output-file-stream-member-functions.md +++ b/docs/standard-library/output-file-stream-member-functions.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Output File Stream Member Functions" title: "Output File Stream Member Functions" +description: "Learn more about: Output File Stream Member Functions" ms.date: "08/25/2021" helpviewer_keywords: ["output streams [C++], member functions"] --- @@ -102,7 +102,7 @@ Use these member functions to test for errors while writing to a stream: |[`good`](basic-ios-class.md#good)|Returns **`true`** if there's no error condition (unrecoverable or otherwise) and the end-of-file flag isn't set.| |[`eof`](basic-ios-class.md#eof)|Returns **`true`** on the end-of-file condition.| |[`clear`](basic-ios-class.md#clear)|Sets the internal error state. If called with the default arguments, it clears all error bits.| -|[`rdstate`](basic-ios-class.md#rdstate|Returns the current error state.| +|[`rdstate`](basic-ios-class.md#rdstate)|Returns the current error state.| The **`!`** operator is overloaded to perform the same function as the `fail` function. Thus the expression: From 42b011b0b9176e9164042861c36be4f4f7f1173f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 5 Mar 2025 17:59:47 +0800 Subject: [PATCH 0236/2255] Perform some cleanup --- docs/atl/atl-utilities-reference.md | 2 +- .../invalid-scheduler-policy-thread-specification-class.md | 4 ++-- .../concrt/reference/invalid-scheduler-policy-value-class.md | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/atl/atl-utilities-reference.md b/docs/atl/atl-utilities-reference.md index c66230825ca..b332716189e 100644 --- a/docs/atl/atl-utilities-reference.md +++ b/docs/atl/atl-utilities-reference.md @@ -85,5 +85,5 @@ ATL provides code for manipulating paths and URLs in the form of [CPathT](../atl ## See also -[Concepts](../atl/active-template-library-atl-concepts.md)
+[Concepts](../atl/active-template-library-atl-concepts.md)\ [ATL COM desktop components](../atl/atl-com-desktop-components.md) diff --git a/docs/parallel/concrt/reference/invalid-scheduler-policy-thread-specification-class.md b/docs/parallel/concrt/reference/invalid-scheduler-policy-thread-specification-class.md index 6cdc8c69fc0..eb5b16e0959 100644 --- a/docs/parallel/concrt/reference/invalid-scheduler-policy-thread-specification-class.md +++ b/docs/parallel/concrt/reference/invalid-scheduler-policy-thread-specification-class.md @@ -47,10 +47,10 @@ invalid_scheduler_policy_thread_specification() throw(); ### Parameters -*_Message*
+*_Message*\ A descriptive message of the error. ## See also -[concurrency Namespace](concurrency-namespace.md)
+[concurrency Namespace](concurrency-namespace.md)\ [SchedulerPolicy Class](schedulerpolicy-class.md) diff --git a/docs/parallel/concrt/reference/invalid-scheduler-policy-value-class.md b/docs/parallel/concrt/reference/invalid-scheduler-policy-value-class.md index 78f02b340fe..8fbbc42ddfb 100644 --- a/docs/parallel/concrt/reference/invalid-scheduler-policy-value-class.md +++ b/docs/parallel/concrt/reference/invalid-scheduler-policy-value-class.md @@ -47,10 +47,10 @@ invalid_scheduler_policy_value() throw(); ### Parameters -*_Message*
+*_Message*\ A descriptive message of the error. ## See also -[concurrency Namespace](concurrency-namespace.md)
+[concurrency Namespace](concurrency-namespace.md)\ [SchedulerPolicy Class](schedulerpolicy-class.md) From 7bbc129bcb8545a87dfe7aa52caae08ade99d107 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 5 Mar 2025 18:02:28 +0800 Subject: [PATCH 0237/2255] Update `Platform::Guid` value class page --- docs/cppcx/platform-guid-value-class.md | 38 ++++++++++++------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/cppcx/platform-guid-value-class.md b/docs/cppcx/platform-guid-value-class.md index 85a6cc2afef..825700de854 100644 --- a/docs/cppcx/platform-guid-value-class.md +++ b/docs/cppcx/platform-guid-value-class.md @@ -73,43 +73,43 @@ Guid( ### Parameters -*a*
+*a*\ The first 4 bytes of the `GUID`. -*b*
+*b*\ The next 2 bytes of the `GUID`. -*c*
+*c*\ The next 2 bytes of the `GUID`. -*d*
+*d*\ The next byte of the `GUID`. -*e*
+*e*\ The next byte of the `GUID`. -*f*
+*f*\ The next byte of the `GUID`. -*g*
+*g*\ The next byte of the `GUID`. -*h*
+*h*\ The next byte of the `GUID`. -*i*
+*i*\ The next byte of the `GUID`. -*j*
+*j*\ The next byte of the `GUID`. -*k*
+*k*\ The next byte of the `GUID`. -*m*
+*m*\ A `GUID` in the form a [GUID structure](/windows/win32/api/guiddef/ns-guiddef-guid). -*n*
+*n*\ The remaining 8 bytes of the `GUID`. ## Guid::operator== Operator @@ -124,10 +124,10 @@ static bool Platform::Guid::operator==(Platform::Guid guid1, Platform::Guid guid ### Parameters -*guid1*
+*guid1*\ The first `Platform::Guid` to compare. -*guid2*
+*guid2*\ The second `Platform::Guid` to compare. ### Return Value @@ -151,10 +151,10 @@ static bool Platform::Guid::operator!=(Platform::Guid guid1, Platform::Guid guid ### Parameters -*guid1*
+*guid1*\ The first `Platform::Guid` to compare. -*guid2*
+*guid2*\ The second `Platform::Guid` to compare. ### Return Value @@ -173,10 +173,10 @@ static bool Platform::Guid::operator<(Platform::Guid guid1, Platform::Guid guid2 ### Parameters -*guid1*
+*guid1*\ The first `Platform::Guid` to compare. -*guid2*
+*guid2*\ The second `Platform::Guid` to compare. ### Return Value From f5f7c05f1a55de91d73c457f50e4facd68ba2bd1 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 5 Mar 2025 18:04:32 +0800 Subject: [PATCH 0238/2255] Update `CComMultiThreadModel` class reference --- .../reference/ccommultithreadmodel-class.md | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/atl/reference/ccommultithreadmodel-class.md b/docs/atl/reference/ccommultithreadmodel-class.md index aee8c24d0c0..651aa91f662 100644 --- a/docs/atl/reference/ccommultithreadmodel-class.md +++ b/docs/atl/reference/ccommultithreadmodel-class.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["ATL, multithreading", "CComMultiThreadModel class", "thre ## Syntax -``` +```cpp class CComMultiThreadModel ``` @@ -53,7 +53,7 @@ S= `CComSingleThreadModel`; M= `CComMultiThreadModel` When using `CComMultiThreadModel`, the **`typedef`** name `AutoCriticalSection` references class [CComAutoCriticalSection](ccomautocriticalsection-class.md), which provides methods for obtaining and releasing ownership of a critical section object. -``` +```cpp typedef CComAutoCriticalSection AutoCriticalSection; ``` @@ -119,7 +119,7 @@ The following tables show the results of the `InternalAddRef` and `Lock` methods When using `CComMultiThreadModel`, the **`typedef`** name `CriticalSection` references class [CComCriticalSection](ccomcriticalsection-class.md), which provides methods for obtaining and releasing ownership of a critical section object. -``` +```cpp typedef CComCriticalSection CriticalSection; ``` @@ -143,13 +143,13 @@ See [CComMultiThreadModel::AutoCriticalSection](#autocriticalsection). This static function calls the Win32 function [InterlockedDecrement](/windows/win32/api/winnt/nf-winnt-interlockeddecrement), which decrements the value of the variable pointed to by *p*. -``` +```cpp static ULONG WINAPI Decrement(LPLONG p) throw (); ``` ### Parameters -*p*
+*p*\ [in] Pointer to the variable to be decremented. ### Return Value @@ -164,13 +164,13 @@ If the result of the decrement is 0, then `Decrement` returns 0. If the result o This static function calls the Win32 function [InterlockedIncrement](/windows/win32/api/winnt/nf-winnt-interlockedincrement), which increments the value of the variable pointed to by *p*. -``` +```cpp static ULONG WINAPI Increment(LPLONG p) throw (); ``` ### Parameters -*p*
+*p*\ [in] Pointer to the variable to be incremented. ### Return Value @@ -185,7 +185,7 @@ If the result of the increment is 0, then `Increment` returns 0. If the result o When using `CComMultiThreadModel`, the **`typedef`** name `ThreadModelNoCS` references class [CComMultiThreadModelNoCS](ccommultithreadmodelnocs-class.md). -``` +```cpp typedef CComMultiThreadModelNoCS ThreadModelNoCS; ``` @@ -207,7 +207,7 @@ See [CComMultiThreadModel::AutoCriticalSection](#autocriticalsection). ## See also -[CComSingleThreadModel Class](ccomsinglethreadmodel-class.md)
-[CComAutoCriticalSection Class](ccomautocriticalsection-class.md)
-[CComCriticalSection Class](ccomcriticalsection-class.md)
+[CComSingleThreadModel Class](ccomsinglethreadmodel-class.md)\ +[CComAutoCriticalSection Class](ccomautocriticalsection-class.md)\ +[CComCriticalSection Class](ccomcriticalsection-class.md)\ [Class Overview](../atl-class-overview.md) From a664524db34da37a37f62393a1ec340c0d486f2a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 5 Mar 2025 18:16:55 +0800 Subject: [PATCH 0239/2255] Update MFC Diagnostic Services --- docs/mfc/reference/diagnostic-services.md | 112 +++++++++++----------- 1 file changed, 56 insertions(+), 56 deletions(-) diff --git a/docs/mfc/reference/diagnostic-services.md b/docs/mfc/reference/diagnostic-services.md index 72ff005c98b..18c273ec9e0 100644 --- a/docs/mfc/reference/diagnostic-services.md +++ b/docs/mfc/reference/diagnostic-services.md @@ -76,7 +76,7 @@ Suppresses compiler warnings for the use of deprecated MFC functions. ### Syntax -``` +```cpp _AFX_SECURE_NO_WARNINGS ``` @@ -104,7 +104,7 @@ Call this function to cause a break (at the location of the call to `AfxDebugBre ### Syntax ```cpp -void AfxDebugBreak( ); +void AfxDebugBreak(); ``` ### Remarks @@ -119,13 +119,13 @@ void AfxDebugBreak( ); Evaluates its argument. -``` +```cpp ASSERT(booleanExpression) ``` ### Parameters -*booleanExpression*
+*booleanExpression*\ Specifies an expression (including pointer values) that evaluates to nonzero or 0. ### Remarks @@ -155,16 +155,16 @@ In the Release version of MFC, ASSERT does not evaluate the expression and thus This macro asserts that the object pointed to is an object of the specified class, or is an object of a class derived from the specified class. -``` +```cpp ASSERT_KINDOF(classname, pobject) ``` ### Parameters -*classname*
+*classname*\ The name of a `CObject`-derived class. -*pobject*
+*pobject*\ A pointer to a class object. ### Remarks @@ -190,13 +190,13 @@ This function works only for classes declared with the [DECLARE_DYNAMIC](run-tim Use to test your assumptions about the validity of an object's internal state. -``` +```cpp ASSERT_VALID(pObject) ``` ### Parameters -*pObject*
+*pObject*\ Specifies an object of a class derived from `CObject` that has an overriding version of the `AssertValid` member function. ### Remarks @@ -222,8 +222,8 @@ For more information and examples, see [Debugging MFC Applications](/visualstudi Assists in finding memory leaks. -``` -#define new DEBUG_NEW +```cpp +#define new DEBUG_NEW ``` ### Remarks @@ -249,7 +249,7 @@ Once you insert this directive, the preprocessor will insert DEBUG_NEW wherever In debug mode (when the **_DEBUG** symbol is defined), DEBUG_ONLY evaluates its argument. -``` +```cpp DEBUG_ONLY(expression) ``` @@ -273,14 +273,14 @@ Use to validate data correctness. ### Syntax -``` -ENSURE( booleanExpression ) -ENSURE_VALID( booleanExpression ) +```cpp +ENSURE(booleanExpression) +ENSURE_VALID(booleanExpression) ``` ### Parameters -*booleanExpression*
+*booleanExpression*\ Specifies a boolean expression to be tested. ### Remarks @@ -305,7 +305,7 @@ Expands to the name of the file that is being compiled. ### Syntax -``` +```cpp THIS_FILE ``` @@ -333,9 +333,9 @@ static char THIS_FILE[] = __FILE__; Sends the specified string to the debugger of the current application. -``` +```cpp TRACE(exp) -TRACE(DWORD category, UINT level, LPCSTR lpszFormat, ...) +TRACE(DWORD category, UINT level, LPCSTR lpszFormat, ...) ``` ### Remarks @@ -354,13 +354,13 @@ For more information, see [Debugging MFC Applications](/visualstudio/debugger/mf In the Debug version of MFC, evaluates its argument. -``` +```cpp VERIFY(booleanExpression) ``` ### Parameters -*booleanExpression*
+*booleanExpression*\ Specifies an expression (including pointer values) that evaluates to nonzero or 0. ### Remarks @@ -387,8 +387,8 @@ In the Release version of MFC, VERIFY evaluates the expression but does not prin Provides basic object-dumping capability in your application. -``` -CDumpContext afxDump; +```cpp +CDumpContext afxDump; ``` ### Remarks @@ -419,7 +419,7 @@ void AfxDump(const CObject* pOb); ### Parameters -*pOb*
+*pOb*\ A pointer to an object of a class derived from `CObject`. ### Remarks @@ -436,8 +436,8 @@ Your program code should not call `AfxDump`, but should instead call the `Dump` This variable is accessible from a debugger or your program and allows you to tune allocation diagnostics. -``` -int afxMemDF; +```cpp +int afxMemDF; ``` ### Remarks @@ -489,8 +489,8 @@ This function can be used to check the return values of calls to OLE functions i This function validates the free memory pool and prints error messages as required. -``` -BOOL AfxCheckMemory(); +```cpp +BOOL AfxCheckMemory(); ``` ### Return Value @@ -532,7 +532,7 @@ void AfxDump(const CObject* pOb); ### Parameters -*pOb*
+*pOb*\ A pointer to an object of a class derived from `CObject`. ### Remarks @@ -555,7 +555,7 @@ void AFXAPI AfxDumpStack(DWORD dwTarget = AFX_STACK_DUMP_TARGET_DEFAULT); ### Parameters -*dwTarget*
+*dwTarget*\ Indicates the target of the dump output. Possible values, which can be combined using the bitwise-OR (**`|`**) operator, are as follows: - AFX_STACK_DUMP_TARGET_TRACE Sends output by means of the [TRACE](#trace) macro. The TRACE macro generates output in debug builds only; it generates no output in release builds. Also, TRACE can be redirected to other targets besides the debugger. @@ -625,13 +625,13 @@ To use this function successfully: Enables and disables the memory leak dump in the AFX_DEBUG_STATE destructor. -``` +```cpp BOOL AFXAPI AfxEnableMemoryLeakDump(BOOL bDump); ``` ### Parameters -*bDump*
+*bDump*\ [in] TRUE indicates the memory leak dump is enabled; FALSE indicates the memory leak dump is disabled. ### Return Value @@ -655,13 +655,13 @@ If your application loads another library before the MFC library, some memory al Diagnostic memory tracking is normally enabled in the Debug version of MFC. -``` +```cpp BOOL AfxEnableMemoryTracking(BOOL bTrack); ``` ### Parameters -*bTrack*
+*bTrack*\ Setting this value to TRUE turns on memory tracking; FALSE turns it off. ### Return Value @@ -689,7 +689,7 @@ For more information on `AfxEnableMemoryTracking`, see [Debugging MFC Applicatio Tests a memory address to make sure it represents a currently active memory block that was allocated by the diagnostic version of **`new`**. -``` +```cpp BOOL AfxIsMemoryBlock( const void* p, UINT nBytes, @@ -698,13 +698,13 @@ BOOL AfxIsMemoryBlock( ### Parameters -*p*
+*p*\ Points to the block of memory to be tested. -*nBytes*
+*nBytes*\ Contains the length of the memory block in bytes. -*plRequestNumber*
+*plRequestNumber*\ Points to a **`long`** integer that will be filled in with the memory block's allocation sequence number, or zero if it does not represent a currently active memory block. ### Return Value @@ -727,7 +727,7 @@ It also checks the specified size against the original allocated size. If the fu Tests any memory address to ensure that it is contained entirely within the program's memory space. -``` +```cpp BOOL AfxIsValidAddress( const void* lp, UINT nBytes, @@ -736,13 +736,13 @@ BOOL AfxIsValidAddress( ### Parameters -*lp*
+*lp*\ Points to the memory address to be tested. -*nBytes*
+*nBytes*\ Contains the number of bytes of memory to be tested. -*bReadWrite*
+*bReadWrite*\ Specifies whether the memory is both for reading and writing (TRUE) or just reading (FALSE). ### Return Value @@ -767,18 +767,18 @@ The address is not restricted to blocks allocated by **`new`**. Use this function to determine whether a pointer to a string is valid. -``` -BOOL AfxIsValidString( +```cpp +BOOL AfxIsValidString( LPCSTR lpsz, int nLength = -1); ``` ### Parameters -*lpsz*
+*lpsz*\ The pointer to test. -*nLength*
+*nLength*\ Specifies the length of the string to be tested, in bytes. A value of -1 indicates that the string will be null-terminated. ### Return Value @@ -799,13 +799,13 @@ In non-debug builds, nonzero if *lpsz* is not NULL; otherwise 0. Sets a hook that enables calling of the specified function before each memory block is allocated. -``` +```cpp AFX_ALLOC_HOOK AfxSetAllocHook(AFX_ALLOC_HOOK pfnAllocHook); ``` ### Parameters -*pfnAllocHook*
+*pfnAllocHook*\ Specifies the name of the function to call. See the Remarks for the prototype of an allocation function. ### Return Value @@ -818,13 +818,13 @@ The Microsoft Foundation Class Library debug-memory allocator can call a user-de **BOOL AFXAPI AllocHook( size_t** `nSize`**, BOOL** `bObject`**, LONG** `lRequestNumber` **);** -*nSize*
+*nSize*\ The size of the proposed memory allocation. -*bObject*
+*bObject*\ TRUE if the allocation is for a `CObject`-derived object; otherwise FALSE. -*lRequestNumber*
+*lRequestNumber*\ The memory allocation's sequence number. Note that the AFXAPI calling convention implies that the callee must remove the parameters from the stack. @@ -846,10 +846,10 @@ AFXAPI AfxDoForAllClasses( ### Parameters -*pfn*
+*pfn*\ Points to an iteration function to be called for each class. The function arguments are a pointer to a `CRuntimeClass` object and a void pointer to extra data that the caller supplies to the function. -*pContext*
+*pContext*\ Points to optional data that the caller can supply to the iteration function. This pointer can be NULL. ### Remarks @@ -881,10 +881,10 @@ void AfxDoForAllObjects( ### Parameters -*pfn*
+*pfn*\ Points to an iteration function to execute for each object. The function arguments are a pointer to a `CObject` and a void pointer to extra data that the caller supplies to the function. -*pContext*
+*pContext*\ Points to optional data that the caller can supply to the iteration function. This pointer can be NULL. ### Remarks @@ -902,5 +902,5 @@ Stack, global, or embedded objects are not enumerated. The pointer passed to `Af ## See also -[Macros and Globals](mfc-macros-and-globals.md)
+[Macros and Globals](mfc-macros-and-globals.md)\ [CObject::Dump](cobject-class.md#dump) From edc5e7f73900d35bf74a2d585945ad571e340fb2 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 5 Mar 2025 10:12:48 -0800 Subject: [PATCH 0240/2255] put back (()) example --- .../compiler-warning-level-4-c4706.md | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4706.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4706.md index 67dc6d520f6..5c478a5fd94 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4706.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4706.md @@ -1,7 +1,7 @@ --- description: "Learn more about: Compiler Warning (level 4) C4706" title: "Compiler Warning (level 4) C4706" -ms.date: "3/4/2025" +ms.date: "3/5/2025" f1_keywords: ["C4706"] helpviewer_keywords: ["C4706"] --- @@ -20,7 +20,20 @@ The following sample generates C4706: int main() { int a = 0, b = 0; - if ( a = b ) // C4706 + if (a = b) // C4706 + { + } +} +``` + +Suppress the warning with `((expression))`. For example: + +```cpp +// compile with: /W4 +int main() +{ + int a = 0, b = 0; + if ((a = b)) // No warning { } } @@ -33,7 +46,7 @@ If your intention is to test a relation, not to make an assignment, use the `==` int main() { int a = 0, b = 0; - if ( a == b ) + if (a == b) { } } @@ -46,7 +59,7 @@ If you intend to make your test value the result of an assignment, test to ensur int main() { int a = 0, b = 0; - if (( a = b ) != 0 ) + if ((a = b) != 0) { } } From 0f54a528d5d99f8e32cd0dbdb09b50bdf9e5febd Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 5 Mar 2025 10:17:57 -0800 Subject: [PATCH 0241/2255] nit --- .../compiler-warnings/compiler-warning-level-4-c4706.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4706.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4706.md index 5c478a5fd94..d31d01fd410 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4706.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4706.md @@ -26,7 +26,7 @@ int main() } ``` -Suppress the warning with `((expression))`. For example: +Suppress the warning with `((`*expression*`))`. For example: ```cpp // compile with: /W4 From 22e57f6fd1a0ff2a8c71a8338d67d8f6a71baa75 Mon Sep 17 00:00:00 2001 From: Garrett Campbell <86264750+gcampbell-msft@users.noreply.github.com> Date: Wed, 5 Mar 2025 16:49:07 -0500 Subject: [PATCH 0242/2255] Learn Editor: Update cmake-projects-in-visual-studio.md --- docs/build/cmake-projects-in-visual-studio.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/build/cmake-projects-in-visual-studio.md b/docs/build/cmake-projects-in-visual-studio.md index 40b56f6bb8f..aba7db1983f 100644 --- a/docs/build/cmake-projects-in-visual-studio.md +++ b/docs/build/cmake-projects-in-visual-studio.md @@ -88,6 +88,12 @@ By default, most configuration messages are suppressed unless there's an error. You can also disable all CMake cache notifications (gold bars) by deselecting **Show CMake cache notification**. +### Customize Targets View Source Groups + +By default, the CMake Targets View ignores the following source groups: **Source Files**, **Header Files**, **Resources**, **Object Files**. This is because they are included by default in most CMake projects and it would unnecessarily increase the number of clicks required to navigate the Targets View. + +However, you can enable the use of these source groups by enabling **Tools** > **Options** > **CMake** > **Enable the use of ignored source groups in CMake Targets View**. + ### Troubleshooting CMake cache errors If you need more information about the state of the CMake cache to diagnose a problem, open the **Project** main menu or the *`CMakeLists.txt`* context menu in **Solution Explorer** to run one of these commands: From 6e887a5fb930ca64d5d0f0c6c855fce0c5ac0a6b Mon Sep 17 00:00:00 2001 From: Garrett Campbell <86264750+gcampbell-msft@users.noreply.github.com> Date: Wed, 5 Mar 2025 16:49:15 -0500 Subject: [PATCH 0243/2255] Learn Editor: Update cmake-projects-in-visual-studio.md From ebacb400c769b0865695129394cae1059ee868ac Mon Sep 17 00:00:00 2001 From: Alcaro Date: Thu, 6 Mar 2025 00:25:17 +0100 Subject: [PATCH 0244/2255] demotion-of-integers.md: Fix example --- docs/c-language/demotion-of-integers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/c-language/demotion-of-integers.md b/docs/c-language/demotion-of-integers.md index f64f4104f9a..5cc14b16953 100644 --- a/docs/c-language/demotion-of-integers.md +++ b/docs/c-language/demotion-of-integers.md @@ -25,7 +25,7 @@ char y = (char)0x1234; assigns the value 0x34 to `y`. -When **`signed`** variables are converted to **`unsigned`** and vice-versa, the bit patterns remain the same. For example, casting -2 (0xFE) to an **`unsigned`** value yields 254 (also 0xFE). +When **`signed`** variables are converted to **`unsigned`** and vice-versa, the bit patterns remain the same. For example, casting -2 (0xFFFFFFFE) to an **`unsigned int`** value yields 4294967294 (also 0xFFFFFFFE). ## See also From eb7e3ac49f4c8dd529d2478c40ee6d70f4fad8f9 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 5 Mar 2025 17:28:47 -0800 Subject: [PATCH 0245/2255] edit --- docs/build/reference/dynamic-deopt-linker.md | 2 +- docs/build/reference/dynamic-deopt.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build/reference/dynamic-deopt-linker.md b/docs/build/reference/dynamic-deopt-linker.md index 29ac42b4042..20eff8492a5 100644 --- a/docs/build/reference/dynamic-deopt-linker.md +++ b/docs/build/reference/dynamic-deopt-linker.md @@ -23,7 +23,7 @@ The **`/DYNAMICDEOPT`** linker option, when used with the compiler switch [`/dyn *`suffix`*\ Specify the file extension for the deoptimized output. -With no options and given `test.cpp` as input, the compiler output includes `test.obj`, `test.exe`, and `test.pdb`, as well as `test.alt.obj`, `test.alt.exe`, and ``test.alt.pdb`. This switch allows you to change the suffix for the unoptimized binary build artifacts from `.alt` to something else. If you change the suffix, all files must use the new suffix, and it needs to match the name passed to the compiler using [`/dynamicdeopt:suffix` (Preview)](dynamic-deopt.md). You typically don't use this switch unless you need to avoid filename collisions with other files that you have. +With no options and given `test.cpp` as input, the compiler output includes `test.obj`, `test.exe`, and `test.pdb`, as well as `test.alt.obj`, `test.alt.exe`, and `test.alt.pdb`. This switch allows you to change the suffix for the unoptimized binary build artifacts from `.alt` to something else. If you change the suffix, all files must use the new suffix, and it needs to match the name passed to the compiler using [`/dynamicdeopt:suffix` (Preview)](dynamic-deopt.md). You typically don't use this switch unless you need to avoid filename collisions with other files that you have. *`SYNC`*\ Builds the deoptimized output after building the optimized output instead of in parallel. By default, the compiler spawns a parallel linker to link the unoptimized binary. This switch makes the second link run serially after the first one. This switch is provided in case this better suits your build environment. diff --git a/docs/build/reference/dynamic-deopt.md b/docs/build/reference/dynamic-deopt.md index b094fe231c5..63539fb5ce7 100644 --- a/docs/build/reference/dynamic-deopt.md +++ b/docs/build/reference/dynamic-deopt.md @@ -23,7 +23,7 @@ Enable [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debu *`suffix`*\ Specify the file extension for the deoptimized output. -With no options and given `test.cpp` as input, your output includes `test.obj`, `test.exe`, and `test.pdb`, as well as `test.alt.obj`, `test.alt.exe`, and ``test.alt.pdb`. This switch allows you to change the suffix of the unoptimized binary build artifacts from `.alt` to something else. If you change the suffix, all files must use the new suffix, and it needs to match the name passed to the linker using [`/dynamicdeopt:suffix` (Preview)](dynamic-deopt-linker.md). You typically don't use this switch unless you need to avoid filename collisions with other files that you have. +With no options and given `test.cpp` as input, your output includes `test.obj`, `test.exe`, and `test.pdb`, as well as `test.alt.obj`, `test.alt.exe`, and `test.alt.pdb`. This switch allows you to change the suffix of the unoptimized binary build artifacts from `.alt` to something else. If you change the suffix, all files must use the new suffix, and it needs to match the name passed to the linker using [`/dynamicdeopt:suffix` (Preview)](dynamic-deopt-linker.md). You typically don't use this switch unless you need to avoid filename collisions with other files that you have. *`sync`*\ Builds the deoptimized output after building the optimized output instead of in parallel. By default, the compiler spawns a parallel instance of the code generator. This switch makes the them run serially, instead. This switch is provided in case this better suits your build environment. From 3b5dbc7ff7981ce7f3008114f1a31a11b663646b Mon Sep 17 00:00:00 2001 From: Garrett Campbell <86264750+gcampbell-msft@users.noreply.github.com> Date: Thu, 6 Mar 2025 10:56:16 -0500 Subject: [PATCH 0246/2255] Update quotation marks in CMake documentation --- docs/build/cmake-projects-in-visual-studio.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/cmake-projects-in-visual-studio.md b/docs/build/cmake-projects-in-visual-studio.md index aba7db1983f..ef292a85a9c 100644 --- a/docs/build/cmake-projects-in-visual-studio.md +++ b/docs/build/cmake-projects-in-visual-studio.md @@ -90,7 +90,7 @@ You can also disable all CMake cache notifications (gold bars) by deselecting ** ### Customize Targets View Source Groups -By default, the CMake Targets View ignores the following source groups: **Source Files**, **Header Files**, **Resources**, **Object Files**. This is because they are included by default in most CMake projects and it would unnecessarily increase the number of clicks required to navigate the Targets View. +By default, the CMake Targets View ignores the following source groups: "Source Files", "Header Files", "Resources", "Object Files". This is because they are included by default in most CMake projects and it would unnecessarily increase the number of clicks required to navigate the Targets View. However, you can enable the use of these source groups by enabling **Tools** > **Options** > **CMake** > **Enable the use of ignored source groups in CMake Targets View**. From 3a6ea66b3e1bad9612dfdbbd71f73fe48d6e37fb Mon Sep 17 00:00:00 2001 From: Garrett Campbell <86264750+gcampbell-msft@users.noreply.github.com> Date: Thu, 6 Mar 2025 10:56:50 -0500 Subject: [PATCH 0247/2255] Fix capitalization in section title --- docs/build/cmake-projects-in-visual-studio.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/cmake-projects-in-visual-studio.md b/docs/build/cmake-projects-in-visual-studio.md index ef292a85a9c..765ea1c32c0 100644 --- a/docs/build/cmake-projects-in-visual-studio.md +++ b/docs/build/cmake-projects-in-visual-studio.md @@ -88,7 +88,7 @@ By default, most configuration messages are suppressed unless there's an error. You can also disable all CMake cache notifications (gold bars) by deselecting **Show CMake cache notification**. -### Customize Targets View Source Groups +### Customize Targets View source groups By default, the CMake Targets View ignores the following source groups: "Source Files", "Header Files", "Resources", "Object Files". This is because they are included by default in most CMake projects and it would unnecessarily increase the number of clicks required to navigate the Targets View. From a778bfe6c5da655656f2b39bc75d5feb22bb89e8 Mon Sep 17 00:00:00 2001 From: Garrett Campbell <86264750+gcampbell-msft@users.noreply.github.com> Date: Thu, 6 Mar 2025 10:57:16 -0500 Subject: [PATCH 0248/2255] Edit CMake source groups instructions --- docs/build/cmake-projects-in-visual-studio.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/cmake-projects-in-visual-studio.md b/docs/build/cmake-projects-in-visual-studio.md index 765ea1c32c0..98b7d5d177d 100644 --- a/docs/build/cmake-projects-in-visual-studio.md +++ b/docs/build/cmake-projects-in-visual-studio.md @@ -92,7 +92,7 @@ You can also disable all CMake cache notifications (gold bars) by deselecting ** By default, the CMake Targets View ignores the following source groups: "Source Files", "Header Files", "Resources", "Object Files". This is because they are included by default in most CMake projects and it would unnecessarily increase the number of clicks required to navigate the Targets View. -However, you can enable the use of these source groups by enabling **Tools** > **Options** > **CMake** > **Enable the use of ignored source groups in CMake Targets View**. +Enable the use of these source groups by enabling **Tools** > **Options** > **CMake** > **Enable the use of ignored source groups in CMake Targets View**. ### Troubleshooting CMake cache errors From 4a0fa2a1183230323a623dc8fbc75d7ef1bbdb69 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 7 Mar 2025 16:49:19 +0800 Subject: [PATCH 0249/2255] Resolve broken comments in code --- docs/c-runtime-library/reference/calloc-dbg.md | 2 +- docs/dotnet/queue-stl-clr.md | 4 ++-- docs/standard-library/deque-class.md | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/c-runtime-library/reference/calloc-dbg.md b/docs/c-runtime-library/reference/calloc-dbg.md index bde434d3d86..fbff456b61b 100644 --- a/docs/c-runtime-library/reference/calloc-dbg.md +++ b/docs/c-runtime-library/reference/calloc-dbg.md @@ -99,7 +99,7 @@ int main( void ) else printf( "Problem allocating memory\n" ); - / _free_dbg must be called to free CLIENT type blocks + // _free_dbg must be called to free CLIENT type blocks free( bufferN ); _free_dbg( bufferC, _CLIENT_BLOCK ); } diff --git a/docs/dotnet/queue-stl-clr.md b/docs/dotnet/queue-stl-clr.md index 4bd7aaf67ec..d3bc7430b5a 100644 --- a/docs/dotnet/queue-stl-clr.md +++ b/docs/dotnet/queue-stl-clr.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: queue (STL/CLR)" title: "queue (STL/CLR)" +description: "Learn more about: queue (STL/CLR)" ms.date: "4/20/2023" ms.topic: "reference" f1_keywords: ["cliext::queue", "cliext::queue::assign", "cliext::queue::back", "cliext::queue::back_item", "cliext::queue::const_reference", "cliext::queue::container_type", "cliext::queue::difference_type", "cliext::queue::empty", "cliext::queue::front", "cliext::queue::front_item", "cliext::queue::generic_container", "cliext::queue::generic_value", "cliext::queue::get_container", "cliext::queue::operator=", "cliext::queue::pop", "cliext::queue::push", "cliext::queue::queue", "cliext::queue::reference", "cliext::queue::size", "cliext::queue::size_type", "cliext::queue::to_array", "cliext::queue::value_type"] @@ -1417,7 +1417,7 @@ int main() c2.push(L'b'); c2.push(L'd'); -/ / display contents "a b d" + // display contents "a b d" for each (wchar_t elem in c2.get_container()) System::Console::Write("{0} ", elem); System::Console::WriteLine(); diff --git a/docs/standard-library/deque-class.md b/docs/standard-library/deque-class.md index ab5e723a027..25d66ae9576 100644 --- a/docs/standard-library/deque-class.md +++ b/docs/standard-library/deque-class.md @@ -720,7 +720,7 @@ None of the constructors perform any interim reallocations. ### Example ```cpp -/ compile with: /EHsc +// compile with: /EHsc #include #include #include From ae2a27ada343f9c4b06dbe3a4e9d15e5b33e6367 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 7 Mar 2025 16:59:48 +0800 Subject: [PATCH 0250/2255] Remove use of code block language `unstlib` --- docs/standard-library/deque-class.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/standard-library/deque-class.md b/docs/standard-library/deque-class.md index ab5e723a027..a2be989679c 100644 --- a/docs/standard-library/deque-class.md +++ b/docs/standard-library/deque-class.md @@ -11,9 +11,9 @@ Arranges elements of a given type in a linear arrangement and, like a vector, en ## Syntax -```unstlib -template > -class deque +```cpp +template > +class deque; ``` ### Parameters @@ -1634,7 +1634,7 @@ int main( ) Provides a pointer to an element in a [`deque`](../standard-library/deque-class.md). -```unstlib +```cpp typedef typename Allocator::pointer pointer; ``` From 33deb7e91f3d430e768dbbae495f18ee3adcc90a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 7 Mar 2025 17:34:41 +0800 Subject: [PATCH 0251/2255] Clean up huge spacing in `base-clause` of C++/CX exception references --- docs/cppcx/platform-accessdeniedexception-class.md | 5 ++--- docs/cppcx/platform-changedstateexception-class.md | 5 ++--- .../platform-classnotregisteredexception-class.md | 5 ++--- docs/cppcx/platform-comexception-class.md | 14 +++++++------- docs/cppcx/platform-disconnectedexception-class.md | 9 ++++----- docs/cppcx/platform-exception-class.md | 13 +++++++------ docs/cppcx/platform-failureexception-class.md | 5 ++--- .../platform-invalidargumentexception-class.md | 5 ++--- docs/cppcx/platform-invalidcastexception-class.md | 5 ++--- .../platform-notimplementedexception-class.md | 5 ++--- .../cppcx/platform-nullreferenceexception-class.md | 5 ++--- .../platform-objectdisposedexception-class.md | 5 ++--- .../platform-operationcanceledexception-class.md | 5 ++--- docs/cppcx/platform-outofboundsexception-class.md | 5 ++--- docs/cppcx/platform-outofmemoryexception-class.md | 5 ++--- docs/cppcx/platform-wrongthreadexception-class.md | 5 ++--- 16 files changed, 44 insertions(+), 57 deletions(-) diff --git a/docs/cppcx/platform-accessdeniedexception-class.md b/docs/cppcx/platform-accessdeniedexception-class.md index bf6cbaed0b4..cc50d74596c 100644 --- a/docs/cppcx/platform-accessdeniedexception-class.md +++ b/docs/cppcx/platform-accessdeniedexception-class.md @@ -1,11 +1,10 @@ --- -description: "Learn more about: Platform::AccessDeniedException Class" title: "Platform::AccessDeniedException Class" +description: "Learn more about: Platform::AccessDeniedException Class" ms.date: "12/30/2016" ms.topic: "reference" f1_keywords: ["VCCORLIB/Platform::AccessDeniedException", "VCCORLIB/Platform::AccessDeniedException::AccessDeniedException"] helpviewer_keywords: ["Platform::AccessDeniedException"] -ms.assetid: 6ae2155b-7b16-4587-8d2d-da05eab4c7e9 --- # Platform::AccessDeniedException Class @@ -14,7 +13,7 @@ Thrown when access to a resource or feature is denied. ## Syntax ```cpp -public ref class AccessDeniedException : COMException, IException, IPrintable, IEquatable +public ref class AccessDeniedException : COMException, IException, IPrintable, IEquatable ``` ### Remarks diff --git a/docs/cppcx/platform-changedstateexception-class.md b/docs/cppcx/platform-changedstateexception-class.md index b123e94431b..6fc12015009 100644 --- a/docs/cppcx/platform-changedstateexception-class.md +++ b/docs/cppcx/platform-changedstateexception-class.md @@ -1,11 +1,10 @@ --- -description: "Learn more about: Platform::ChangedStateException Class" title: "Platform::ChangedStateException Class" +description: "Learn more about: Platform::ChangedStateException Class" ms.date: "12/30/2016" ms.topic: "reference" f1_keywords: ["VCCORLIB/Platform::ChangedStateException", "VCCORLIB/Platform::ChangedStateException::ChangedStateException"] helpviewer_keywords: ["Platform::ChangedStateException"] -ms.assetid: f894beac-9e80-4fac-ac25-89f1dbc0a6a4 --- # Platform::ChangedStateException Class @@ -14,7 +13,7 @@ Thrown when the internal state of an object has changed, thereby invalidating th ## Syntax ```cpp -public ref class ChangedStateException : COMException, IException, IPrintable, IEquatable +public ref class ChangedStateException : COMException, IException, IPrintable, IEquatable ``` ### Remarks diff --git a/docs/cppcx/platform-classnotregisteredexception-class.md b/docs/cppcx/platform-classnotregisteredexception-class.md index 9fa2b993972..0108e2bff66 100644 --- a/docs/cppcx/platform-classnotregisteredexception-class.md +++ b/docs/cppcx/platform-classnotregisteredexception-class.md @@ -1,11 +1,10 @@ --- -description: "Learn more about: Platform::ClassNotRegisteredException Class" title: "Platform::ClassNotRegisteredException Class" +description: "Learn more about: Platform::ClassNotRegisteredException Class" ms.date: "12/30/2016" ms.topic: "reference" f1_keywords: ["VCCORLIB/Platform::ClassNotRegisteredException::ClassNotRegisteredException", "VCCORLIB/Platform::ClassNotRegisteredException"] helpviewer_keywords: ["Platform::ClassNotRegisteredException"] -ms.assetid: 8f8871d8-51b9-46e8-902e-ae023c9f1de9 --- # Platform::ClassNotRegisteredException Class @@ -14,7 +13,7 @@ Thrown when a COM class has not been registered. ## Syntax ```cpp -public ref class ClassNotRegisteredException : COMException, IException, IPrintable, IEquatable +public ref class ClassNotRegisteredException : COMException, IException, IPrintable, IEquatable ``` ### Remarks diff --git a/docs/cppcx/platform-comexception-class.md b/docs/cppcx/platform-comexception-class.md index 5c8363381cc..e76f69daed7 100644 --- a/docs/cppcx/platform-comexception-class.md +++ b/docs/cppcx/platform-comexception-class.md @@ -1,11 +1,10 @@ --- -description: "Learn more about: Platform::COMException Class" title: "Platform::COMException Class" +description: "Learn more about: Platform::COMException Class" ms.date: "12/30/2016" ms.topic: "reference" f1_keywords: ["VCCORLIB/Platform::COMException", "VCCORLIB/Platform::COMException::HResult", "VCCORLIB/Platform::COMException::Message"] helpviewer_keywords: ["Platform::COMException Class"] -ms.assetid: 44fda4e5-574f-4d12-ab5f-4ff3f277448d --- # Platform::COMException Class @@ -14,7 +13,7 @@ Represents COM errors that occur during application execution. COMException is t ## Syntax ```cpp -public ref class COMException : Exception, IException, IPrintable, IEquatable +public ref class COMException : Exception, IException, IPrintable, IEquatable ``` ### Members @@ -79,12 +78,12 @@ Intializes a new instance of the COMException class. ### Syntax ```cpp -COMException( int hresult ) +COMException(int hresult); ``` ### Parameters -*hresult*
+*hresult*\ The error HRESULT that is represented by the exception. ## COMException::HResult Property @@ -95,7 +94,7 @@ The HRESULT that corresponds to the exception. ```cpp public: - property int HResult { int get();} + property int HResult { int get(); } ``` ## Property Value @@ -113,7 +112,8 @@ Message that describes the exception. ### Syntax ```cpp -public:property String^ Message { String^ get();} +public: + property String^ Message { String^ get(); } ``` ### Property Value diff --git a/docs/cppcx/platform-disconnectedexception-class.md b/docs/cppcx/platform-disconnectedexception-class.md index 332d47be884..5721f44c9aa 100644 --- a/docs/cppcx/platform-disconnectedexception-class.md +++ b/docs/cppcx/platform-disconnectedexception-class.md @@ -1,20 +1,19 @@ --- -description: "Learn more about: Platform::DisconnectedException Class" title: "Platform::DisconnectedException Class" +description: "Learn more about: Platform::DisconnectedException Class" ms.date: "12/30/2016" ms.topic: "reference" f1_keywords: ["VCCORLIB/Platform::DisconnectedException", "VCCORLIB/Platform::DisconnectedException::DisconnectedException"] helpviewer_keywords: ["Platform::DisconnectedException"] -ms.assetid: c25e0d64-5bff-4c21-88e5-c4ec2776fa7f --- # Platform::DisconnectedException Class -Thrown when a COM proxy object attempts to reference a COM server that no longer exists +Thrown when a COM proxy object attempts to reference a COM server that no longer exists. ## Syntax -``` -public ref class DisconnectedException : COMException, IException, IPrintable, IEquatable +```cpp +public ref class DisconnectedException : COMException, IException, IPrintable, IEquatable ``` ### Remarks diff --git a/docs/cppcx/platform-exception-class.md b/docs/cppcx/platform-exception-class.md index ea48d339c26..4eb7e70d3dd 100644 --- a/docs/cppcx/platform-exception-class.md +++ b/docs/cppcx/platform-exception-class.md @@ -13,7 +13,7 @@ Represents errors that occur during application execution. Custom exception clas ## Syntax ```cpp -public ref class Exception : Object, IException, IPrintable, IEquatable +public ref class Exception : Object, IException, IPrintable, IEquatable ``` ### Members @@ -68,10 +68,10 @@ Exception^ CreateException(int32 hr, Platform::String^ message); ### Parameters -*hr*
+*hr*\ An HRESULT value that you typically get from a call to a COM method. If the value is 0, which is equal to S_OK, this method throws [Platform::InvalidArgumentException](../cppcx/platform-invalidargumentexception-class.md) because COM methods that succeed should not throw exceptions. -*message*
+*message*\ A string that describes the error. ### Return Value @@ -97,10 +97,10 @@ Exception(int32 hresult, ::Platform::String^ message); ### Parameters -*hresult*
+*hresult*\ The error HRESULT that is represented by the exception. -*message*
+*message*\ A user-specified message, such as prescriptive text, that is associated with the exception. In general you should prefer the second overload in order to provide a descriptive message that is as specific as possible about how and why the error has occurred. ## Exception::HResult Property @@ -129,7 +129,8 @@ Message that describes the error. ### Syntax ```cpp -public:property String^ Message; +public: + property String^ Message; ``` ### Property Value diff --git a/docs/cppcx/platform-failureexception-class.md b/docs/cppcx/platform-failureexception-class.md index 02f7ca1cfb6..24268a74b33 100644 --- a/docs/cppcx/platform-failureexception-class.md +++ b/docs/cppcx/platform-failureexception-class.md @@ -1,11 +1,10 @@ --- -description: "Learn more about: Platform::FailureException Class" title: "Platform::FailureException Class" +description: "Learn more about: Platform::FailureException Class" ms.date: "12/30/2016" ms.topic: "reference" f1_keywords: ["VCCORLIB/Platform::FailureException::FailureException", "VCCORLIB/Platform::FailureException"] helpviewer_keywords: ["Platform::FailureException"] -ms.assetid: 1729cd07-bfc2-448e-9db5-185d5cbf5b81 --- # Platform::FailureException Class @@ -14,7 +13,7 @@ Thrown when the operation has failed. It is the equivalent of the E_FAIL HRESULT ## Syntax ```cpp -public ref class FailureException : COMException, IException, IPrintable, IEquatable +public ref class FailureException : COMException, IException, IPrintable, IEquatable ``` ### Remarks diff --git a/docs/cppcx/platform-invalidargumentexception-class.md b/docs/cppcx/platform-invalidargumentexception-class.md index 120bdd9d5c6..040d608c66d 100644 --- a/docs/cppcx/platform-invalidargumentexception-class.md +++ b/docs/cppcx/platform-invalidargumentexception-class.md @@ -1,11 +1,10 @@ --- -description: "Learn more about: Platform::InvalidArgumentException Class" title: "Platform::InvalidArgumentException Class" +description: "Learn more about: Platform::InvalidArgumentException Class" ms.date: "12/30/2016" ms.topic: "reference" f1_keywords: ["VCCORLIB/Platform::InvalidArgumentException", "VCCORLIB/Platform::InvalidArgumentException::InvalidArgumentException"] helpviewer_keywords: ["Platform::InvalidArgumentException"] -ms.assetid: 1a8d860b-3bcb-41a9-9346-6610616a0b46 --- # Platform::InvalidArgumentException Class @@ -14,7 +13,7 @@ Thrown when one of the arguments provided to a method is not valid. ## Syntax ```cpp -public ref class InvalidArgumentException : COMException, IException, IPrintable, IEquatable +public ref class InvalidArgumentException : COMException, IException, IPrintable, IEquatable ``` ### Remarks diff --git a/docs/cppcx/platform-invalidcastexception-class.md b/docs/cppcx/platform-invalidcastexception-class.md index 4f9b3c4ba71..9e664b598be 100644 --- a/docs/cppcx/platform-invalidcastexception-class.md +++ b/docs/cppcx/platform-invalidcastexception-class.md @@ -1,11 +1,10 @@ --- -description: "Learn more about: Platform::InvalidCastException Class" title: "Platform::InvalidCastException Class" +description: "Learn more about: Platform::InvalidCastException Class" ms.date: "12/30/2016" ms.topic: "reference" f1_keywords: ["VCCORLIB/Platform::InvalidCastException::InvalidCastException", "VCCORLIB/Platform::InvalidCastException"] helpviewer_keywords: ["Platform::InvalidCastException"] -ms.assetid: 0215131d-1251-4913-9561-824410e045b6 --- # Platform::InvalidCastException Class @@ -14,7 +13,7 @@ Thrown when a cast or explicit conversion is invalid. ## Syntax ```cpp -public ref class InvalidCastException : COMException, IException, IPrintable, IEquatable +public ref class InvalidCastException : COMException, IException, IPrintable, IEquatable ``` ### Remarks diff --git a/docs/cppcx/platform-notimplementedexception-class.md b/docs/cppcx/platform-notimplementedexception-class.md index 55e18d0b577..94f1c289d83 100644 --- a/docs/cppcx/platform-notimplementedexception-class.md +++ b/docs/cppcx/platform-notimplementedexception-class.md @@ -1,11 +1,10 @@ --- -description: "Learn more about: Platform::NotImplementedException Class" title: "Platform::NotImplementedException Class" +description: "Learn more about: Platform::NotImplementedException Class" ms.date: "12/30/2016" ms.topic: "reference" f1_keywords: ["VCCORLIB/Platform::NotImplementedException", "VCCORLIB/Platform::NotImplementedException::NotImplementedException"] helpviewer_keywords: ["Platform::NotImplementedException"] -ms.assetid: 6da26cc2-dde8-4aea-aa85-67aac55cf97b --- # Platform::NotImplementedException Class @@ -14,7 +13,7 @@ Thrown when an interface member is not been implemented in a derived type. ## Syntax ```cpp -public ref class NotImplementedException : COMException, IException, IPrintable, IEquatable +public ref class NotImplementedException : COMException, IException, IPrintable, IEquatable ``` ### Remarks diff --git a/docs/cppcx/platform-nullreferenceexception-class.md b/docs/cppcx/platform-nullreferenceexception-class.md index c5924402c21..4fd31538544 100644 --- a/docs/cppcx/platform-nullreferenceexception-class.md +++ b/docs/cppcx/platform-nullreferenceexception-class.md @@ -1,11 +1,10 @@ --- -description: "Learn more about: Platform::NullReferenceException Class" title: "Platform::NullReferenceException Class" +description: "Learn more about: Platform::NullReferenceException Class" ms.date: "12/30/2016" ms.topic: "reference" f1_keywords: ["VCCORLIB/Platform::NullReferenceException", "VCCORLIB/Platform::NullReferenceException::NullReferenceException"] helpviewer_keywords: ["Platform::NullReferenceException"] -ms.assetid: be202577-d898-4716-83cd-e3556fe8a241 --- # Platform::NullReferenceException Class @@ -14,7 +13,7 @@ Thrown when there is an attempt to dereference a null object reference. ## Syntax ```cpp -public ref class NullReferenceException : COMException, IException, IPrintable, IEquatable +public ref class NullReferenceException : COMException, IException, IPrintable, IEquatable ``` ### Remarks diff --git a/docs/cppcx/platform-objectdisposedexception-class.md b/docs/cppcx/platform-objectdisposedexception-class.md index 36f7004267f..0d9a9055519 100644 --- a/docs/cppcx/platform-objectdisposedexception-class.md +++ b/docs/cppcx/platform-objectdisposedexception-class.md @@ -1,11 +1,10 @@ --- -description: "Learn more about: Platform::ObjectDisposedException Class" title: "Platform::ObjectDisposedException Class" +description: "Learn more about: Platform::ObjectDisposedException Class" ms.date: "12/30/2016" ms.topic: "reference" f1_keywords: ["VCCORLIB/Platform::ObjectDisposedException", "VCCORLIB/Platform::ObjectDisposedException::ObjectDisposedException"] helpviewer_keywords: ["Platform::ObjectDisposedException"] -ms.assetid: 68506fe4-d09c-4407-999f-1e3edb261d41 --- # Platform::ObjectDisposedException Class @@ -14,7 +13,7 @@ Thrown when an operation is performed on a disposed object. ## Syntax ```cpp -public ref class ObjectDisposedException : COMException, IException, IPrintable, IEquatable +public ref class ObjectDisposedException : COMException, IException, IPrintable, IEquatable ``` ### Remarks diff --git a/docs/cppcx/platform-operationcanceledexception-class.md b/docs/cppcx/platform-operationcanceledexception-class.md index 0ada6f44964..99ce0bc5589 100644 --- a/docs/cppcx/platform-operationcanceledexception-class.md +++ b/docs/cppcx/platform-operationcanceledexception-class.md @@ -1,11 +1,10 @@ --- -description: "Learn more about: Platform::OperationCanceledException Class" title: "Platform::OperationCanceledException Class" +description: "Learn more about: Platform::OperationCanceledException Class" ms.date: "12/30/2016" ms.topic: "reference" f1_keywords: ["VCCORLIB/Platform::OperationCanceledException::OperationCanceledException", "VCCORLIB/Platform::OperationCanceledException"] helpviewer_keywords: ["Platform::OperationCanceledException"] -ms.assetid: 5351bc20-5408-423a-8169-f09acc8a3fbb --- # Platform::OperationCanceledException Class @@ -14,7 +13,7 @@ Thrown when an operation is aborted. ## Syntax ```cpp -public ref class OperationCanceledException : COMException, IException, IPrintable, IEquatable +public ref class OperationCanceledException : COMException, IException, IPrintable, IEquatable ``` ### Remarks diff --git a/docs/cppcx/platform-outofboundsexception-class.md b/docs/cppcx/platform-outofboundsexception-class.md index d8a878c8913..2bca3dbbac7 100644 --- a/docs/cppcx/platform-outofboundsexception-class.md +++ b/docs/cppcx/platform-outofboundsexception-class.md @@ -1,11 +1,10 @@ --- -description: "Learn more about: Platform::OutOfBoundsException Class" title: "Platform::OutOfBoundsException Class" +description: "Learn more about: Platform::OutOfBoundsException Class" ms.date: "12/30/2016" ms.topic: "reference" f1_keywords: ["VCCORLIB/Platform::OutOfBoundsException", "VCCORLIB/Platform::OutOfBoundsException::OutOfBoundsException"] helpviewer_keywords: ["Platform::OutOfBoundsException"] -ms.assetid: 96f8bf75-1207-4049-964b-7771822cadf3 --- # Platform::OutOfBoundsException Class @@ -14,7 +13,7 @@ Thrown when an operation attempts to access data outside the valid range. ## Syntax ```cpp -public ref class OutOfBoundsException : COMException, IException, IPrintable, IEquatable +public ref class OutOfBoundsException : COMException, IException, IPrintable, IEquatable ``` ### Remarks diff --git a/docs/cppcx/platform-outofmemoryexception-class.md b/docs/cppcx/platform-outofmemoryexception-class.md index bf36a9f7911..486396cf6ac 100644 --- a/docs/cppcx/platform-outofmemoryexception-class.md +++ b/docs/cppcx/platform-outofmemoryexception-class.md @@ -1,11 +1,10 @@ --- -description: "Learn more about: Platform::OutOfMemoryException Class" title: "Platform::OutOfMemoryException Class" +description: "Learn more about: Platform::OutOfMemoryException Class" ms.date: "12/30/2016" ms.topic: "reference" f1_keywords: ["VCCORLIB/Platform::OutOfMemoryException", "VCCORLIB/Platform::OutOfMemoryException::OutOfMemoryException"] helpviewer_keywords: ["Platform::OutOfMemoryException"] -ms.assetid: 49c19f6b-f66c-4448-b861-91dcbf32de2c --- # Platform::OutOfMemoryException Class @@ -14,7 +13,7 @@ Thrown when there's insufficient memory to complete the operation. ## Syntax ```cpp -public ref class OutOfMemoryException : COMException, IException, IPrintable, IEquatable +public ref class OutOfMemoryException : COMException, IException, IPrintable, IEquatable ``` ### Remarks diff --git a/docs/cppcx/platform-wrongthreadexception-class.md b/docs/cppcx/platform-wrongthreadexception-class.md index 79320770d50..33c50399148 100644 --- a/docs/cppcx/platform-wrongthreadexception-class.md +++ b/docs/cppcx/platform-wrongthreadexception-class.md @@ -1,11 +1,10 @@ --- -description: "Learn more about: Platform::WrongThreadException Class" title: "Platform::WrongThreadException Class" +description: "Learn more about: Platform::WrongThreadException Class" ms.date: "12/30/2016" ms.topic: "reference" f1_keywords: ["VCCORLIB/Platform::WrongThreadException", "VCCORLIB/Platform::WrongThreadException::WrongThreadException"] helpviewer_keywords: ["Platform::WrongThreadException"] -ms.assetid: c193f97e-0392-4535-a4c4-0711e4e4a836 --- # Platform::WrongThreadException Class @@ -14,7 +13,7 @@ Thrown when a thread calls by way of an interface pointer for a proxy object tha ## Syntax ```cpp -public ref class WrongThreadException : COMException, IException, IPrintable, IEquatable +public ref class WrongThreadException : COMException, IException, IPrintable, IEquatable ``` ### Remarks From 70ce14af61c27239ee82b47674475e7b4eb65c7b Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 7 Mar 2025 19:06:46 +0800 Subject: [PATCH 0252/2255] Updates for `vector` class template reference --- docs/standard-library/vector-class.md | 886 +++++++++++++++----------- 1 file changed, 504 insertions(+), 382 deletions(-) diff --git a/docs/standard-library/vector-class.md b/docs/standard-library/vector-class.md index 85cb05379ba..e715fe2ee42 100644 --- a/docs/standard-library/vector-class.md +++ b/docs/standard-library/vector-class.md @@ -13,13 +13,13 @@ The C++ Standard Library vector class is a class template for sequence container ```cpp template > -class vector +class vector; ``` ### Parameters *`Type`*\ -The element data type to be stored in the vector +The element data type to be stored in the vector. *`Allocator`*\ The type that represents the stored allocator object that encapsulates details about the vector's allocation and deallocation of memory. This argument is optional and the default value is `allocator`. @@ -46,7 +46,7 @@ The [`vector` reference class](../standard-library/vector-bool-class.md#re |Name|Description| |-|-| -|`[allocator_type]`(#allocator_type)|A type that represents the `allocator` class for the vector object.| +|[`allocator_type`](#allocator_type)|A type that represents the `allocator` class for the vector object.| |[`const_iterator`](#const_iterator)|A type that provides a random-access iterator that can read a **`const`** element in a vector.| |[`const_pointer`](#const_pointer)|A type that provides a pointer to a **`const`** element in a vector.| |[`const_reference`](#const_reference)|A type that provides a reference to a **`const`** element stored in a vector. It's used for reading and doing **`const`** operations.| @@ -152,7 +152,7 @@ First, `assign` erases any existing elements in a vector. Then, `assign` either ### Example ```cpp -/ vector_assign.cpp +// vector_assign.cpp // compile with: /EHsc #include #include @@ -169,33 +169,45 @@ int main() v1.push_back(50); cout << "v1 = "; - for (auto& v : v1){ + for (auto& v : v1) + { cout << v << " "; } cout << endl; v2.assign(v1.begin(), v1.end()); cout << "v2 = "; - for (auto& v : v2){ + for (auto& v : v2) + { cout << v << " "; } cout << endl; v3.assign(7, 4); cout << "v3 = "; - for (auto& v : v3){ + for (auto& v : v3) + { cout << v << " "; } cout << endl; v3.assign({ 5, 6, 7 }); - for (auto& v : v3){ + cout << "v3 = "; + for (auto& v : v3) + { cout << v << " "; } cout << endl; } ``` +```Output +v1 = 10 20 30 40 50 +v2 = 10 20 30 40 50 +v3 = 4 4 4 4 4 4 4 +v3 = 5 6 7 +``` + ## `at` Returns a reference to the element at a specified location in the vector. @@ -227,18 +239,18 @@ If the return value of `at` is assigned to a `const_reference`, the vector objec #include #include -int main( ) +int main() { - using namespace std; - vector v1; + using namespace std; + vector v1; - v1.push_back( 10 ); - v1.push_back( 20 ); + v1.push_back(10); + v1.push_back(20); - const int &i = v1.at( 0 ); - int &j = v1.at( 1 ); - cout << "The first element is " << i << endl; - cout << "The second element is " << j << endl; + const int &i = v1.at(0); + int &j = v1.at(1); + cout << "The first element is " << i << endl; + cout << "The second element is " << j << endl; } ``` @@ -275,22 +287,28 @@ When compiled by using [`_ITERATOR_DEBUG_LEVEL`](../standard-library/iterator-de #include #include -int main() { - using namespace std; - vector v1; +int main() +{ + using namespace std; + vector v1; - v1.push_back( 10 ); - v1.push_back( 11 ); + v1.push_back(10); + v1.push_back(11); - int& i = v1.back( ); - const int& ii = v1.front( ); + int& i = v1.back(); + const int& ii = v1.front(); - cout << "The last integer of v1 is " << i << endl; - i--; - cout << "The next-to-last integer of v1 is "<< ii << endl; + cout << "The last integer of v1 is " << i << endl; + i--; + cout << "The next-to-last integer of v1 is " << ii << endl; } ``` +```Output +The last integer of v1 is 11 +The next-to-last integer of v1 is 10 +``` + ## `begin` Returns a random-access iterator to the first element in the vector. @@ -378,18 +396,18 @@ The member function [`resize`](#resize) will be more efficient if sufficient mem #include #include -int main( ) +int main() { - using namespace std; - vector v1; + using namespace std; + vector v1; - v1.push_back( 1 ); - cout << "The length of storage allocated is " - << v1.capacity( ) << "." << endl; + v1.push_back(1); + cout << "The length of storage allocated is " + << v1.capacity() << "." << endl; - v1.push_back( 2 ); - cout << "The length of storage allocated is now " - << v1.capacity( ) << "." << endl; + v1.push_back(2); + cout << "The length of storage allocated is now " + << v1.capacity() << "." << endl; } ``` @@ -419,8 +437,8 @@ You can use this member function in place of the `begin()` member function to gu ```cpp auto i1 = Container.begin(); // i1 is Container::iterator -auto i2 = Container.cbegin(); +auto i2 = Container.cbegin(); // i2 is Container::const_iterator ``` @@ -445,8 +463,8 @@ You can use this member function in place of the `end()` member function to guar ```cpp auto i1 = Container.end(); // i1 is Container::iterator -auto i2 = Container.cend(); +auto i2 = Container.cend(); // i2 is Container::const_iterator ``` @@ -468,18 +486,18 @@ void clear(); #include #include -int main( ) +int main() { - using namespace std; - vector v1; + using namespace std; + vector v1; - v1.push_back( 10 ); - v1.push_back( 20 ); - v1.push_back( 30 ); + v1.push_back(10); + v1.push_back(20); + v1.push_back(30); - cout << "The size of v1 is " << v1.size( ) << endl; - v1.clear( ); - cout << "The size of v1 after clearing is " << v1.size( ) << endl; + cout << "The size of v1 is " << v1.size() << endl; + v1.clear(); + cout << "The size of v1 after clearing is " << v1.size() << endl; } ``` @@ -538,22 +556,22 @@ A type `const_reference` can't be used to modify the value of an element. #include #include -int main( ) +int main() { - using namespace std; - vector v1; + using namespace std; + vector v1; - v1.push_back( 10 ); - v1.push_back( 20 ); + v1.push_back(10); + v1.push_back(20); - const vector v2 = v1; - const int &i = v2.front( ); - const int &j = v2.back( ); - cout << "The first element is " << i << endl; - cout << "The second element is " << j << endl; + const vector v2 = v1; + const int& i = v2.front(); + const int& j = v2.back(); + cout << "The first element is " << i << endl; + cout << "The second element is " << j << endl; - // The following line would cause an error as v2 is const - // v2.push_back( 30 ); + // The following line would cause an error as v2 is const + // v2.push_back(30); } ``` @@ -602,22 +620,22 @@ With the return value of `crbegin`, the `vector` object can't be modified. #include #include -int main( ) +int main() { - using namespace std; - vector v1; - vector ::iterator v1_Iter; - vector ::const_reverse_iterator v1_rIter; + using namespace std; + vector v1; + vector::iterator v1_Iter; + vector::const_reverse_iterator v1_rIter; - v1.push_back( 1 ); - v1.push_back( 2 ); + v1.push_back(1); + v1.push_back(2); - v1_Iter = v1.begin( ); - cout << "The first element of vector is " + v1_Iter = v1.begin(); + cout << "The first element of vector is " << *v1_Iter << "." << endl; - v1_rIter = v1.crbegin( ); - cout << "The first element of the reversed vector is " + v1_rIter = v1.crbegin(); + cout << "The first element of the reversed vector is " << *v1_rIter << "." << endl; } ``` @@ -657,17 +675,17 @@ The value returned by `crend` shouldn't be dereferenced. Only use it for compari #include #include -int main( ) +int main() { - using namespace std; - vector v1; - vector ::const_reverse_iterator v1_rIter; + using namespace std; + vector v1; + vector::const_reverse_iterator v1_rIter; - v1.push_back( 1 ); - v1.push_back( 2 ); + v1.push_back(1); + v1.push_back(2); - for ( v1_rIter = v1.rbegin( ) ; v1_rIter != v1.rend( ) ; v1_rIter++ ) - cout << *v1_rIter << endl; + for (v1_rIter = v1.rbegin(); v1_rIter != v1.rend(); v1_rIter++) + cout << *v1_rIter << endl; } ``` @@ -755,31 +773,31 @@ An [iterator](#iterator) is more commonly used to access a vector element. #include #include -int main( ) +int main() { - using namespace std; + using namespace std; - vector c1; - vector ::iterator c1_Iter, c2_Iter; + vector c1; + vector::iterator c1_Iter, c2_Iter; - c1.push_back( 30 ); - c1.push_back( 20 ); - c1.push_back( 30 ); - c1.push_back( 10 ); - c1.push_back( 30 ); - c1.push_back( 20 ); + c1.push_back(30); + c1.push_back(20); + c1.push_back(30); + c1.push_back(10); + c1.push_back(30); + c1.push_back(20); - c1_Iter = c1.begin( ); - c2_Iter = c1.end( ); + c1_Iter = c1.begin(); + c2_Iter = c1.end(); - vector ::difference_type df_typ1, df_typ2, df_typ3; + vector::difference_type df_typ1, df_typ2, df_typ3; - df_typ1 = count( c1_Iter, c2_Iter, 10 ); - df_typ2 = count( c1_Iter, c2_Iter, 20 ); - df_typ3 = count( c1_Iter, c2_Iter, 30 ); - cout << "The number '10' is in c1 collection " << df_typ1 << " times.\n"; - cout << "The number '20' is in c1 collection " << df_typ2 << " times.\n"; - cout << "The number '30' is in c1 collection " << df_typ3 << " times.\n"; + df_typ1 = count(c1_Iter, c2_Iter, 10); + df_typ2 = count(c1_Iter, c2_Iter, 20); + df_typ3 = count(c1_Iter, c2_Iter, 30); + cout << "The number '10' is in c1 collection " << df_typ1 << " times.\n"; + cout << "The number '20' is in c1 collection " << df_typ2 << " times.\n"; + cout << "The number '30' is in c1 collection " << df_typ3 << " times.\n"; } ``` @@ -824,32 +842,32 @@ Any insertion operation can be expensive, see [`vector` class](../standard-libra #include #include -int main( ) +int main() { - using namespace std; - vector v1; - vector ::iterator Iter; - - v1.push_back( 10 ); - v1.push_back( 20 ); - v1.push_back( 30 ); - - cout << "v1 =" ; - for ( Iter = v1.begin( ) ; Iter != v1.end( ) ; Iter++ ) - cout << " " << *Iter; - cout << endl; - -// initialize a vector of vectors by moving v1 - vector < vector > vv1; - - vv1.emplace( vv1.begin(), move( v1 ) ); - if ( vv1.size( ) != 0 && vv1[0].size( ) != 0 ) - { - cout << "vv1[0] ="; - for (Iter = vv1[0].begin( ); Iter != vv1[0].end( ); Iter++ ) - cout << " " << *Iter; - cout << endl; - } + using namespace std; + vector v1; + vector::iterator Iter; + + v1.push_back(10); + v1.push_back(20); + v1.push_back(30); + + cout << "v1 ="; + for (Iter = v1.begin(); Iter != v1.end(); Iter++) + cout << " " << *Iter; + cout << endl; + + // initialize a vector of vectors by moving v1 + vector> vv1; + + vv1.emplace(vv1.begin(), move(v1)); + if (vv1.size() != 0 && vv1[0].size() != 0) + { + cout << "vv1[0] ="; + for (Iter = vv1[0].begin(); Iter != vv1[0].end(); Iter++) + cout << " " << *Iter; + cout << endl; + } } ``` @@ -876,15 +894,16 @@ Constructor arguments. The function infers which constructor overload to invoke ```cpp #include + struct obj { - obj(int, double) {} + obj(int, double) {} }; int main() { - std::vector v; - v.emplace_back(1, 3.14); // obj in created in place in the vector + std::vector v; + v.emplace_back(1, 3.14); // obj in created in place in the vector } ``` @@ -908,17 +927,17 @@ bool empty() const; #include #include -int main( ) +int main() { - using namespace std; - vector v1; + using namespace std; + vector v1; - v1.push_back( 10 ); + v1.push_back(10); - if ( v1.empty( ) ) - cout << "The vector is empty." << endl; - else - cout << "The vector is not empty." << endl; + if (v1.empty()) + cout << "The vector is empty." << endl; + else + cout << "The vector is not empty." << endl; } ``` @@ -951,17 +970,18 @@ If the return value of `end` is assigned to a variable of type `const_iterator`, // compile with: /EHsc #include #include -int main( ) + +int main() { - using namespace std; - vector v1; - vector ::iterator v1_Iter; + using namespace std; + vector v1; + vector::iterator v1_Iter; - v1.push_back( 1 ); - v1.push_back( 2 ); + v1.push_back(1); + v1.push_back(2); - for ( v1_Iter = v1.begin( ) ; v1_Iter != v1.end( ) ; v1_Iter++ ) - cout << *v1_Iter << endl; + for (v1_Iter = v1.begin(); v1_Iter != v1.end(); v1_Iter++) + cout << *v1_Iter << endl; } ``` @@ -1006,34 +1026,34 @@ An iterator that designates the first element remaining beyond any elements remo #include #include -int main( ) +int main() { - using namespace std; - vector v1; - vector ::iterator Iter; - - v1.push_back( 10 ); - v1.push_back( 20 ); - v1.push_back( 30 ); - v1.push_back( 40 ); - v1.push_back( 50 ); - - cout << "v1 =" ; - for ( Iter = v1.begin( ) ; Iter != v1.end( ) ; Iter++ ) - cout << " " << *Iter; - cout << endl; - - v1.erase( v1.begin( ) ); - cout << "v1 ="; - for ( Iter = v1.begin( ) ; Iter != v1.end( ) ; Iter++ ) - cout << " " << *Iter; - cout << endl; - - v1.erase( v1.begin( ) + 1, v1.begin( ) + 3 ); - cout << "v1 ="; - for ( Iter = v1.begin( ) ; Iter != v1.end( ) ; Iter++ ) - cout << " " << *Iter; - cout << endl; + using namespace std; + vector v1; + vector::iterator Iter; + + v1.push_back(10); + v1.push_back(20); + v1.push_back(30); + v1.push_back(40); + v1.push_back(50); + + cout << "v1 ="; + for (Iter = v1.begin(); Iter != v1.end(); Iter++) + cout << " " << *Iter; + cout << endl; + + v1.erase(v1.begin()); + cout << "v1 ="; + for (Iter = v1.begin(); Iter != v1.end(); Iter++) + cout << " " << *Iter; + cout << endl; + + v1.erase(v1.begin() + 1, v1.begin() + 3); + cout << "v1 ="; + for (Iter = v1.begin(); Iter != v1.end(); Iter++) + cout << " " << *Iter; + cout << endl; } ``` @@ -1071,24 +1091,28 @@ When compiled by using [`_ITERATOR_DEBUG_LEVEL`](../standard-library/iterator-de #include #include -int main( ) +int main() { - using namespace std; - vector v1; + using namespace std; + vector v1; - v1.push_back( 10 ); - v1.push_back( 11 ); + v1.push_back(10); + v1.push_back(11); - int& i = v1.front( ); - const int& ii = v1.front( ); + int& i = v1.front(); - cout << "The first integer of v1 is "<< i << endl; - // by incrementing i, we move the front reference to the second element - i++; - cout << "Now, the first integer of v1 is "<< i << endl; + cout << "The first integer of v1 is " << i << endl; + // by incrementing i, we move the front reference to the second element + i++; + cout << "Now, the first integer of v1 is " << i << endl; } ``` +```Output +The first integer of v1 is 10 +Now, the first integer of v1 is 11 +``` + ## `get_allocator` Returns a copy of the allocator object used to construct the vector. @@ -1111,20 +1135,19 @@ Allocators for the vector class specify how the class manages storage. The defau // vector_get_allocator.cpp // compile with: /EHsc #include -#include -int main( ) +int main() { - using namespace std; - // The following lines declare objects that use the default allocator. - vector v1; - vector > v2 = vector >(allocator( )) ; + using namespace std; + // The following lines declare objects that use the default allocator. + vector v1; + vector> v2 = vector>(allocator()); - // v3 will use the same allocator class as v1 - vector v3( v1.get_allocator( ) ); + // v3 will use the same allocator class as v1 + vector v3(v1.get_allocator()); - vector::allocator_type xvec = v3.get_allocator( ); - // You can now call functions on the allocator class used by vec + vector::allocator_type xvec = v3.get_allocator(); + // You can now call functions on the allocator class used by vec } ``` @@ -1186,51 +1209,51 @@ As a precondition, *`first`* and *`last`* must not be iterators into the vector, #include #include -int main( ) +int main() { - using namespace std; - vector v1; - vector ::iterator Iter; - - v1.push_back( 10 ); - v1.push_back( 20 ); - v1.push_back( 30 ); - - cout << "v1 =" ; - for ( Iter = v1.begin( ) ; Iter != v1.end( ) ; Iter++ ) - cout << " " << *Iter; - cout << endl; - - v1.insert( v1.begin( ) + 1, 40 ); - cout << "v1 ="; - for ( Iter = v1.begin( ) ; Iter != v1.end( ) ; Iter++ ) - cout << " " << *Iter; - cout << endl; - v1.insert( v1.begin( ) + 2, 4, 50 ); - - cout << "v1 ="; - for ( Iter = v1.begin( ) ; Iter != v1.end( ) ; Iter++ ) - cout << " " << *Iter; - cout << endl; - - const auto v2 = v1; - v1.insert( v1.begin( )+1, v2.begin( )+2, v2.begin( )+4 ); - cout << "v1 ="; - for (Iter = v1.begin( ); Iter != v1.end( ); Iter++ ) - cout << " " << *Iter; - cout << endl; - -// initialize a vector of vectors by moving v1 - vector < vector > vv1; - - vv1.insert( vv1.begin(), move( v1 ) ); - if ( vv1.size( ) != 0 && vv1[0].size( ) != 0 ) - { - cout << "vv1[0] ="; - for (Iter = vv1[0].begin( ); Iter != vv1[0].end( ); Iter++ ) - cout << " " << *Iter; - cout << endl; - } + using namespace std; + vector v1; + vector::iterator Iter; + + v1.push_back(10); + v1.push_back(20); + v1.push_back(30); + + cout << "v1 ="; + for (Iter = v1.begin(); Iter != v1.end(); Iter++) + cout << " " << *Iter; + cout << endl; + + v1.insert(v1.begin() + 1, 40); + cout << "v1 ="; + for (Iter = v1.begin(); Iter != v1.end(); Iter++) + cout << " " << *Iter; + cout << endl; + v1.insert(v1.begin() + 2, 4, 50); + + cout << "v1 ="; + for (Iter = v1.begin(); Iter != v1.end(); Iter++) + cout << " " << *Iter; + cout << endl; + + const auto v2 = v1; + v1.insert(v1.begin() + 1, v2.begin() + 2, v2.begin() + 4); + cout << "v1 ="; + for (Iter = v1.begin(); Iter != v1.end(); Iter++) + cout << " " << *Iter; + cout << endl; + + // initialize a vector of vectors by moving v1 + vector> vv1; + + vv1.insert(vv1.begin(), move(v1)); + if (vv1.size() != 0 && vv1[0].size() != 0) + { + cout << "vv1[0] ="; + for (Iter = vv1[0].begin(); Iter != vv1[0].end(); Iter++) + cout << " " << *Iter; + cout << endl; + } } ``` @@ -1278,17 +1301,21 @@ The maximum possible length of the vector. #include #include -int main( ) +int main() { - using namespace std; - vector v1; - vector ::size_type i; + using namespace std; + vector v1; + vector::size_type i; - i = v1.max_size( ); - cout << "The maximum possible length of the vector is " << i << "." << endl; + i = v1.max_size(); + cout << "The maximum possible length of the vector is " << i << "." << endl; } ``` +```Output +The maximum possible length of the vector is 4611686018427387903. +``` + ## `operator[]` Returns a reference to the vector element at a specified position. @@ -1322,19 +1349,23 @@ When compiled by using [`_ITERATOR_DEBUG_LEVEL`](../standard-library/iterator-de #include #include -int main( ) +int main() { - using namespace std; - vector v1; + using namespace std; + vector v1; - v1.push_back( 10 ); - v1.push_back( 20 ); + v1.push_back(10); + v1.push_back(20); - int& i = v1[1]; - cout << "The second integer of v1 is " << i << endl; + int& i = v1[1]; + cout << "The second integer of v1 is " << i << endl; } ``` +```Output +The second integer of v1 is 20 +``` + ## `operator=` Replaces the elements of the vector with a copy of another vector. @@ -1362,39 +1393,45 @@ After erasing any existing elements in a `vector`, `operator=` either copies or #include #include -int main( ) +int main() { - using namespace std; - vector v1, v2, v3; - vector::iterator iter; - - v1.push_back(10); - v1.push_back(20); - v1.push_back(30); - v1.push_back(40); - v1.push_back(50); - - cout << "v1 = " ; - for (iter = v1.begin(); iter != v1.end(); iter++) - cout << *iter << " "; - cout << endl; - - v2 = v1; - cout << "v2 = "; - for (iter = v2.begin(); iter != v2.end(); iter++) - cout << *iter << " "; - cout << endl; - -// move v1 into v2 - v2.clear(); - v2 = move(v1); - cout << "v2 = "; - for (iter = v2.begin(); iter != v2.end(); iter++) - cout << *iter << " "; - cout << endl; + using namespace std; + vector v1, v2, v3; + vector::iterator iter; + + v1.push_back(10); + v1.push_back(20); + v1.push_back(30); + v1.push_back(40); + v1.push_back(50); + + cout << "v1 = "; + for (iter = v1.begin(); iter != v1.end(); iter++) + cout << *iter << " "; + cout << endl; + + v2 = v1; + cout << "v2 = "; + for (iter = v2.begin(); iter != v2.end(); iter++) + cout << *iter << " "; + cout << endl; + + // move v1 into v2 + v2.clear(); + v2 = move(v1); + cout << "v2 = "; + for (iter = v2.begin(); iter != v2.end(); iter++) + cout << *iter << " "; + cout << endl; } ``` +```Output +v1 = 10 20 30 40 50 +v2 = 10 20 30 40 50 +v2 = 10 20 30 40 50 +``` + ## `pointer` A type that provides a pointer to an element in a vector. @@ -1415,12 +1452,12 @@ A type **`pointer`** can be used to modify the value of an element. #include #include -int main( ) +int main() { using namespace std; vector v; - v.push_back( 11 ); - v.push_back( 22 ); + v.push_back(11); + v.push_back(22); vector::pointer ptr = &v[0]; cout << *ptr << endl; @@ -1473,14 +1510,19 @@ The value to assign to the element added to the end of the vector. using namespace std; -template void print_elem(const T& t) { +template +void print_elem(const T& t) +{ cout << "(" << t << ") "; } -template void print_collection(const T& t) { +template +void print_collection(const T& t) +{ cout << " " << t.size() << " elements: "; - for (const auto& p : t) { + for (const auto& p : t) + { print_elem(p); } cout << endl; @@ -1489,7 +1531,8 @@ template void print_collection(const T& t) { int main() { vector v; - for (int i = 0; i < 10; ++i) { + for (int i = 0; i < 10; ++i) + { v.push_back(10 + i); } @@ -1497,13 +1540,31 @@ int main() print_collection(v); // pop_back() until it's empty, printing the last element as we go - while (v.begin() != v.end()) { - cout << "v.back(): "; print_elem(v.back()); cout << endl; + while (v.begin() != v.end()) + { + cout << "v.back(): "; + print_elem(v.back()); + cout << endl; v.pop_back(); } } ``` +```Output +vector data: + 10 elements: (10) (11) (12) (13) (14) (15) (16) (17) (18) (19) +v.back(): (19) +v.back(): (18) +v.back(): (17) +v.back(): (16) +v.back(): (15) +v.back(): (14) +v.back(): (13) +v.back(): (12) +v.back(): (11) +v.back(): (10) +``` + ## `rbegin` Returns an iterator to the first element in a reversed vector. @@ -1529,22 +1590,22 @@ If the return value of `rbegin` is assigned to a `const_reverse_iterator`, the v #include #include -int main( ) +int main() { - using namespace std; - vector v1; - vector ::iterator v1_Iter; - vector ::reverse_iterator v1_rIter; + using namespace std; + vector v1; + vector::iterator v1_Iter; + vector::reverse_iterator v1_rIter; - v1.push_back( 1 ); - v1.push_back( 2 ); + v1.push_back(1); + v1.push_back(2); - v1_Iter = v1.begin( ); - cout << "The first element of vector is " + v1_Iter = v1.begin(); + cout << "The first element of vector is " << *v1_Iter << "." << endl; - v1_rIter = v1.rbegin( ); - cout << "The first element of the reversed vector is " + v1_rIter = v1.rbegin(); + cout << "The first element of the reversed vector is " << *v1_rIter << "." << endl; } ``` @@ -1597,17 +1658,17 @@ The value returned by `rend` shouldn't be dereferenced. Only use it for comparis #include #include -int main( ) +int main() { - using namespace std; - vector v1; - vector ::reverse_iterator v1_rIter; + using namespace std; + vector v1; + vector::reverse_iterator v1_rIter; - v1.push_back( 1 ); - v1.push_back( 2 ); + v1.push_back(1); + v1.push_back(2); - for ( v1_rIter = v1.rbegin( ) ; v1_rIter != v1.rend( ) ; v1_rIter++ ) - cout << *v1_rIter << endl; + for (v1_rIter = v1.rbegin(); v1_rIter != v1.rend(); v1_rIter++) + cout << *v1_rIter << endl; } ``` @@ -1637,18 +1698,17 @@ The minimum length of storage to be allocated for the vector. #include #include -int main( ) +int main() { - using namespace std; - vector v1; - //vector ::iterator Iter; - - v1.push_back( 1 ); - cout << "Current capacity of v1 = " - << v1.capacity( ) << endl; - v1.reserve( 20 ); - cout << "Current capacity of v1 = " - << v1.capacity( ) << endl; + using namespace std; + vector v1; + + v1.push_back(1); + cout << "Current capacity of v1 = " + << v1.capacity() << endl; + v1.reserve(20); + cout << "Current capacity of v1 = " + << v1.capacity() << endl; } ``` @@ -1721,16 +1781,20 @@ If the container's size is less than the requested size, *`new_size`*, `resize` using namespace std; -template void print(const string& s, const C& c) { +template +void print(const string& s, const C& c) +{ cout << s; - for (const auto& e : c) { + for (const auto& e : c) + { cout << e << " "; } cout << endl; } -void printvstats(const vector& v) { +void printvstats(const vector& v) +{ cout << " the vector's size is: " << v.size() << endl; cout << " the vector's capacity is: " << v.capacity() << endl; cout << " the vector's maximum size is: " << v.max_size() << endl; @@ -1742,7 +1806,7 @@ int main() vector v; // Show statistics about vector. - cout << endl << "After declaring an empty vector:" << endl; + cout << "After declaring an empty vector:" << endl; printvstats(v); print(" the vector's contents: ", v); @@ -1752,7 +1816,8 @@ int main() printvstats(v); print(" the vector's contents: ", v); - for (int i = 1; i < 10; ++i) { + for (int i = 1; i < 10; ++i) + { v.push_back(i); } cout << endl << "After adding 10 elements:" << endl; @@ -1786,6 +1851,54 @@ int main() } ``` +```Output +After declaring an empty vector: + the vector's size is: 0 + the vector's capacity is: 0 + the vector's maximum size is: 4611686018427387903 + the vector's contents: + +After adding an element: + the vector's size is: 1 + the vector's capacity is: 1 + the vector's maximum size is: 4611686018427387903 + the vector's contents: -1 + +After adding 10 elements: + the vector's size is: 10 + the vector's capacity is: 13 + the vector's maximum size is: 4611686018427387903 + the vector's contents: -1 1 2 3 4 5 6 7 8 9 + +After resizing to 6 elements without an initialization value: + the vector's size is: 6 + the vector's capacity is: 13 + the vector's maximum size is: 4611686018427387903 + the vector's contents: -1 1 2 3 4 5 + +After resizing to 9 elements with an initialization value of 999: + the vector's size is: 9 + the vector's capacity is: 13 + the vector's maximum size is: 4611686018427387903 + the vector's contents: -1 1 2 3 4 5 999 999 999 + +After resizing to 12 elements without an initialization value: + the vector's size is: 12 + the vector's capacity is: 13 + the vector's maximum size is: 4611686018427387903 + the vector's contents: -1 1 2 3 4 5 999 999 999 0 0 0 + +After vector::reserve(1000): + the vector's size is: 12 + the vector's capacity is: 1000 + the vector's maximum size is: 4611686018427387903 + +After vector::resize(2000): + the vector's size is: 2000 + the vector's capacity is: 2000 + the vector's maximum size is: 4611686018427387903 +``` + ## `reverse_iterator` A type that provides a random-access iterator that can read or modify any element in a reversed vector. @@ -1818,21 +1931,20 @@ void shrink_to_fit(); #include #include -int main( ) +int main() { - using namespace std; - vector v1; - //vector ::iterator Iter; - - v1.push_back( 1 ); - cout << "Current capacity of v1 = " - << v1.capacity( ) << endl; - v1.reserve( 20 ); - cout << "Current capacity of v1 = " - << v1.capacity( ) << endl; - v1.shrink_to_fit(); - cout << "Current capacity of v1 = " - << v1.capacity( ) << endl; + using namespace std; + vector v1; + + v1.push_back(1); + cout << "Current capacity of v1 = " + << v1.capacity() << endl; + v1.reserve(20); + cout << "Current capacity of v1 = " + << v1.capacity() << endl; + v1.shrink_to_fit(); + cout << "Current capacity of v1 = " + << v1.capacity() << endl; } ``` @@ -1862,19 +1974,19 @@ The current length of the vector. #include #include -int main( ) +int main() { - using namespace std; - vector v1; - vector ::size_type i; + using namespace std; + vector v1; + vector::size_type i; - v1.push_back( 1 ); - i = v1.size( ); - cout << "Vector length is " << i << "." << endl; + v1.push_back(1); + i = v1.size(); + cout << "Vector length is " << i << "." << endl; - v1.push_back( 2 ); - i = v1.size( ); - cout << "Vector length is now " << i << "." << endl; + v1.push_back(2); + i = v1.size(); + cout << "Vector length is now " << i << "." << endl; } ``` @@ -1924,26 +2036,26 @@ A vector whose elements are to be exchanged with the elements in the vector *`ri #include #include -int main( ) +int main() { - using namespace std; - vector v1, v2; + using namespace std; + vector v1, v2; - v1.push_back( 1 ); - v1.push_back( 2 ); - v1.push_back( 3 ); + v1.push_back(1); + v1.push_back(2); + v1.push_back(3); - v2.push_back( 10 ); - v2.push_back( 20 ); + v2.push_back(10); + v2.push_back(20); - cout << "The number of elements in v1 = " << v1.size( ) << endl; - cout << "The number of elements in v2 = " << v2.size( ) << endl; - cout << endl; + cout << "The number of elements in v1 = " << v1.size() << endl; + cout << "The number of elements in v2 = " << v2.size() << endl; + cout << endl; - v1.swap( v2 ); + v1.swap(v2); - cout << "The number of elements in v1 = " << v1.size( ) << endl; - cout << "The number of elements in v2 = " << v2.size( ) << endl; + cout << "The number of elements in v1 = " << v1.size() << endl; + cout << "The number of elements in v2 = " << v2.size() << endl; } ``` @@ -1975,12 +2087,12 @@ typedef typename Allocator::value_type value_type; #include #include -int main( ) +int main() { - using namespace std; - vector::value_type AnInt; - AnInt = 44; - cout << AnInt << endl; + using namespace std; + vector::value_type AnInt; + AnInt = 44; + cout << AnInt << endl; } ``` @@ -2061,82 +2173,92 @@ The ninth and tenth constructors copy the range [`first`, `last`) of a vector. int main() { using namespace std; - vector ::iterator v1_Iter, v2_Iter, v3_Iter, v4_Iter, v5_Iter, v6_Iter; + vector::iterator v1_Iter, v2_Iter, v3_Iter, v4_Iter, v5_Iter, v6_Iter; // Create an empty vector v0 - vector v0; + vector v0; // Create a vector v1 with 3 elements of default value 0 - vector v1(3); + vector v1(3); // Create a vector v2 with 5 elements of value 2 - vector v2(5, 2); + vector v2(5, 2); // Create a vector v3 with 3 elements of value 1 and with the allocator // of vector v2 - vector v3(3, 1, v2.get_allocator()); + vector v3(3, 1, v2.get_allocator()); // Create a copy, vector v4, of vector v2 - vector v4(v2); + vector v4(v2); // Create a new temporary vector for demonstrating copying ranges - vector v5(5); - for (auto i : v5) { + vector v5(5); + for (auto i : v5) + { v5[i] = i; } // Create a vector v6 by copying the range v5[ first, last) - vector v6(v5.begin() + 1, v5.begin() + 3); + vector v6(v5.begin() + 1, v5.begin() + 3); cout << "v1 ="; - for (auto& v : v1){ + for (auto& v : v1) + { cout << " " << v; } cout << endl; cout << "v2 ="; - for (auto& v : v2){ + for (auto& v : v2) + { cout << " " << v; } cout << endl; cout << "v3 ="; - for (auto& v : v3){ + for (auto& v : v3) + { cout << " " << v; } cout << endl; + cout << "v4 ="; - for (auto& v : v4){ + for (auto& v : v4) + { cout << " " << v; } cout << endl; cout << "v5 ="; - for (auto& v : v5){ + for (auto& v : v5) + { cout << " " << v; } cout << endl; cout << "v6 ="; - for (auto& v : v6){ + for (auto& v : v6) + { cout << " " << v; } cout << endl; // Move vector v2 to vector v7 - vector v7(move(v2)); - vector ::iterator v7_Iter; + vector v7(move(v2)); + vector::iterator v7_Iter; cout << "v7 ="; - for (auto& v : v7){ + for (auto& v : v7) + { cout << " " << v; } cout << endl; cout << "v8 ="; vector v8{ { 1, 2, 3, 4 } }; - for (auto& v : v8){ - cout << " " << v ; + for (auto& v : v8) + { + cout << " " << v; } cout << endl; } From cd68e327c5dfab0c824d0ff9122d60d8ed1b339a Mon Sep 17 00:00:00 2001 From: Nikita Leontiev Date: Sat, 8 Mar 2025 08:43:40 +0300 Subject: [PATCH 0253/2255] vswprintf/_vswprintf_l return value description update. --- .../vsprintf-vsprintf-l-vswprintf-vswprintf-l-vswprintf-l.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/c-runtime-library/reference/vsprintf-vsprintf-l-vswprintf-vswprintf-l-vswprintf-l.md b/docs/c-runtime-library/reference/vsprintf-vsprintf-l-vswprintf-vswprintf-l-vswprintf-l.md index 0d197f96190..dd59fa224c7 100644 --- a/docs/c-runtime-library/reference/vsprintf-vsprintf-l-vswprintf-vswprintf-l-vswprintf-l.md +++ b/docs/c-runtime-library/reference/vsprintf-vsprintf-l-vswprintf-vswprintf-l-vswprintf-l.md @@ -95,6 +95,8 @@ The locale to use. **`vsprintf`** and **`vswprintf`** return the number of characters written, not including the terminating `NULL` character, or a negative value if an output error occurs. If *`buffer`* or *`format`* is a `NULL` pointer, these functions invoke the invalid parameter handler, as described in [Parameter validation](../parameter-validation.md). If execution is allowed to continue, these functions return -1 and set `errno` to `EINVAL`. +If *`buffer`* is a `NULL` pointer and *`count`* is zero, **`vswprintf`** and **`_vswprintf_l`** return the number of characters that would have been written not including the terminating NULL. If only *`count`* is zero, behavior is unpredictable. + For information on these and other error codes, see [`errno`, `_doserrno`, `_sys_errlist`, and `_sys_nerr`](../errno-doserrno-sys-errlist-and-sys-nerr.md). ## Remarks From 15f1aa368a3fc4b57e942264c4a601fc003dcdb8 Mon Sep 17 00:00:00 2001 From: Nikita Leontiev Date: Sat, 8 Mar 2025 08:54:55 +0300 Subject: [PATCH 0254/2255] Return value/Remarks sections update. --- .../vsprintf-p-vsprintf-p-l-vswprintf-p-vswprintf-p-l.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/c-runtime-library/reference/vsprintf-p-vsprintf-p-l-vswprintf-p-vswprintf-p-l.md b/docs/c-runtime-library/reference/vsprintf-p-vsprintf-p-l-vswprintf-p-vswprintf-p-l.md index a5ab73d4170..542e7de92f3 100644 --- a/docs/c-runtime-library/reference/vsprintf-p-vsprintf-p-l-vswprintf-p-vswprintf-p-l.md +++ b/docs/c-runtime-library/reference/vsprintf-p-vsprintf-p-l-vswprintf-p-vswprintf-p-l.md @@ -67,6 +67,7 @@ The locale to use. ## Return value **`_vsprintf_p`** and **`_vswprintf_p`** return the number of characters written, not including the terminating null character, or a negative value if an output error occurs. +If the *`buffer`* is a `NULL` pointer and *`sizeInBytes`* or *`count`* are zero, functions return the number of characters that would have been written not including the terminating NULL. ## Remarks @@ -76,7 +77,9 @@ These functions differ from the `vsprintf_s` and `vswprintf_s` only in that they The versions of these functions with the `_l` suffix are identical except that they use the locale parameter passed in instead of the current thread locale. -If the *`buffer`* or *`format`* parameters are `NULL` pointers, if count is zero, or if the format string contains invalid formatting characters, the invalid parameter handler is invoked, as described in [Parameter validation](../parameter-validation.md). If execution is allowed to continue, the functions return -1 and set `errno` to `EINVAL`. +If the *`buffer`* or *`format`* parameters are `NULL` pointers, or if the format string contains invalid formatting characters, the invalid parameter handler is invoked, as described in [Parameter validation](../parameter-validation.md). If execution is allowed to continue, the functions return -1 and set `errno` to `EINVAL`. + +If the *`buffer`* is valid and *`sizeInBytes`* or *`count`* parameters are zero, behavior is unpredictable. > [!IMPORTANT] > Starting in Windows 10 version 2004 (build 19041), the `printf` family of functions prints exactly representable floating point numbers according to the IEEE 754 rules for rounding. In previous versions of Windows, exactly representable floating point numbers ending in '5' would always round up. IEEE 754 states that they must round to the closest even digit (also known as "Banker's Rounding"). For example, both `printf("%1.0f", 1.5)` and `printf("%1.0f", 2.5)` should round to 2. Previously, 1.5 would round to 2 and 2.5 would round to 3. This change only affects exactly representable numbers. For example, 2.35 (which, when represented in memory, is closer to 2.35000000000000008) continues to round up to 2.4. Rounding done by these functions now also respects the floating point rounding mode set by [`fesetround`](fegetround-fesetround2.md). Previously, rounding always chose `FE_TONEAREST` behavior. This change only affects programs built using Visual Studio 2019 version 16.2 and later. To use the legacy floating point rounding behavior, link with ['legacy_stdio_float_rounding.obj`](../link-options.md). From 5fa9b33735c3dd6a316d01cf067908209a3d2121 Mon Sep 17 00:00:00 2001 From: Nikita Leontiev Date: Sat, 8 Mar 2025 09:05:08 +0300 Subject: [PATCH 0255/2255] Behavior summary update. --- .../vsnprintf-vsnprintf-vsnprintf-l-vsnwprintf-vsnwprintf-l.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/c-runtime-library/reference/vsnprintf-vsnprintf-vsnprintf-l-vsnwprintf-vsnwprintf-l.md b/docs/c-runtime-library/reference/vsnprintf-vsnprintf-vsnprintf-l-vsnwprintf-vsnwprintf-l.md index b4a5f312137..1f94c8f59a8 100644 --- a/docs/c-runtime-library/reference/vsnprintf-vsnprintf-vsnprintf-l-vsnwprintf-vsnwprintf-l.md +++ b/docs/c-runtime-library/reference/vsnprintf-vsnprintf-vsnprintf-l-vsnwprintf-vsnwprintf-l.md @@ -155,7 +155,8 @@ For the following table: | Encoding error during formatting | If processing string specifier `s`, `S`, or `Z`, format specification processing stops. | -1 | `EILSEQ` (42) | No | | Encoding error during formatting | If processing character specifier `c` or `C`, the invalid character is skipped. The number of characters written isn't incremented for the skipped character, nor is any data written for it. Processing the format specification continues after skipping the specifier with the encoding error. | The number of characters written, not including the terminating `NULL`. | `EILSEQ` (42) | No | | `buffer == NULL` and `count != 0` | If execution continues after invalid parameter handler executes, sets `errno` and returns a negative value.| -1 | `EINVAL` (22) | Yes | -| `count == 0` | No data is written | The number of characters that would have been written, not including the terminating `NULL`. You can use this result to allocate sufficient buffer space for the string and a terminating `NULL`, and then call the function again to fill the buffer. | N/A | No | +| `buffer == NULL` and `count == 0` | No data is written | The number of characters that would have been written, not including the terminating `NULL`. You can use this result to allocate sufficient buffer space for the string and a terminating `NULL`, and then call the function again to fill the buffer. | N/A | No | +| `count == 0` | No data is written | -1 | `ERANGE` (34) | No | | `count < 0`| Unsafe: the value is treated as unsigned, likely creating a large value that results in overwriting the memory that follows the buffer. | The number of characters written. | N/A | No | | `count < sizeOfBuffer` and `len <= count` | All of the data is written and a terminating `NULL` is appended. | The number of characters written, not including the terminating `NULL`. | N/A | No | | `count < sizeOfBuffer` and `len > count` | The first *`count-1`* characters are written followed by a null-terminator. | The number of characters that would have been written had `count` matched the number of characters to output, not including the null-terminator. | N/A | No | From 38e139ce3431111fdbdba371f6307d2e2f4faa03 Mon Sep 17 00:00:00 2001 From: Nikita Leontiev Date: Sat, 8 Mar 2025 09:10:28 +0300 Subject: [PATCH 0256/2255] Behavior summary update. --- ...-s-vsnprintf-s-vsnprintf-s-l-vsnwprintf-s-vsnwprintf-s-l.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/c-runtime-library/reference/vsnprintf-s-vsnprintf-s-vsnprintf-s-l-vsnwprintf-s-vsnwprintf-s-l.md b/docs/c-runtime-library/reference/vsnprintf-s-vsnprintf-s-vsnprintf-s-l-vsnwprintf-s-vsnwprintf-s-l.md index 690566a0fc2..b15c7b4a3b3 100644 --- a/docs/c-runtime-library/reference/vsnprintf-s-vsnprintf-s-vsnprintf-s-l-vsnwprintf-s-vsnwprintf-s-l.md +++ b/docs/c-runtime-library/reference/vsnprintf-s-vsnprintf-s-vsnprintf-s-l-vsnwprintf-s-vsnwprintf-s-l.md @@ -127,6 +127,7 @@ For the following table: | `buffer == NULL` and `sizeOfBuffer == 0` and `count == 0` | No data is written. | 0 | N/A | No | | `buffer == NULL` and either `sizeOfBuffer != 0` or `count != 0` | If execution continues after invalid parameter handler executes, sets `errno` and returns a negative value.| -1 | `EINVAL` (22) | Yes | | `buffer != NULL` and `sizeOfBuffer == 0` | No data is written. If execution continues after invalid parameter handler executes, sets `errno` and returns a negative value. | -1 | `EINVAL` (22) | Yes | +| `buffer != NULL` and `sizeOfBuffer != 0` and `count == 0` | No data is written. | -1 | N/A | No | | `count == 0`| Doesn't write any data and returns the number of characters that would have been written, not including the terminating `NULL`. | The number of characters that would have been written not including the terminating `NULL`. | N/A | No | | `count < 0` | Unsafe: the value is treated as unsigned, likely creating a large value that results in overwriting the memory that follows the buffer. | The number of characters written, not including the terminating `NULL`. | N/A | No | | `count < sizeOfBuffer` and `len <= count` | All of the data is written and a terminating `NULL` is appended. | The number of characters written. | N/A | No | @@ -209,4 +210,4 @@ nSize: -1, buff: Hi there! [`fprintf`, `_fprintf_l`, `fwprintf`, `_fwprintf_l`](fprintf-fprintf-l-fwprintf-fwprintf-l.md)\ [`printf`, `_printf_l`, `wprintf`, `_wprintf_l`](printf-printf-l-wprintf-wprintf-l.md)\ [`sprintf`, `_sprintf_l`, `swprintf`, `_swprintf_l`, `__swprintf_l`](sprintf-sprintf-l-swprintf-swprintf-l-swprintf-l.md)\ -[`va_arg`, `va_copy`, `va_end`, `va_start`](va-arg-va-copy-va-end-va-start.md) \ No newline at end of file +[`va_arg`, `va_copy`, `va_end`, `va_start`](va-arg-va-copy-va-end-va-start.md) From 705c5431fac4af86c5861aeef1e6595dc844c218 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 9 Mar 2025 18:21:44 +0800 Subject: [PATCH 0257/2255] Update README file --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e2a4e7c444e..816a2293bf9 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,14 @@ -# Visual Studio documentation for Microsoft C++ +# Microsoft C++, C, and Assembler documentation -Welcome! This repository contains source files for the work-in-progress Microsoft C++ (MSVC or Visual C++) technical documentation. The articles are published on the [C++ in Visual Studio documentation site](https://learn.microsoft.com/cpp). +Welcome! This repository contains source files for the technical documentation published on [https://learn.microsoft.com/cpp](https://learn.microsoft.com/cpp). -The documentation for Visual Basic and Visual C# are located in a separate repository at [https://github.com/dotnet/core-docs](https://github.com/dotnet/core-docs), and the Visual Studio documentation is located in the repository located at [https://github.com/Microsoft/visualstudio-docs](https://github.com/Microsoft/visualstudio-docs). +The documentation for [.NET](https://github.com/dotnet/docs) and [Visual Studio](https://github.com/MicrosoftDocs/visualstudio-docs) are located in separate repositories. ## Contributing to the documentation We welcome your contributions to help us improve the MSVC docs. For a comprehensive guide to contributing, see the [Microsoft Docs contributor guide](https://learn.microsoft.com/contribute). For details on how to make a contribution to the MSVC documentation, see our [Contributing guidance](CONTRIBUTING.md). -Several feature areas of MSVC have their own folders in this repository, such as `standard-library` for articles on the C++ Standard Library, `ide` for C++-specific articles on the Visual Studio interactive development environment (IDE), and so forth. The `/media` subfolder in each folder contains art files for the articles. The [Contributing guide](CONTRIBUTING.md) has more information. +Several feature areas of MSVC have their own folders in this repository, such as `standard-library` for articles on the C++ Standard Library, `ide` for C++-specific articles on the Visual Studio integrated development environment (IDE), and so forth. The `/media` subfolder in each folder contains art files for the articles. The [Contributing guide](CONTRIBUTING.md) has more information. ## Microsoft Open Source Code of Conduct From 569d55688225a37eadd1ebb49eea6c3c62b7762d Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 9 Mar 2025 19:13:56 +0800 Subject: [PATCH 0258/2255] Fix missing comma in function prototypes --- .../reference/sdk/functions/stop-tracing-session.md | 2 +- docs/c-runtime-library/reference/cgets-s-cgetws-s.md | 2 +- docs/c-runtime-library/reference/cxxthrowexception.md | 2 +- docs/c-runtime-library/reference/recalloc.md | 2 +- docs/intrinsics/mm-insert-si64-mm-inserti-si64.md | 2 +- docs/mfc/reference/cwinapp-class.md | 2 +- .../reference/concurrency-direct3d-namespace-functions-amp.md | 4 ++-- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/build-insights/reference/sdk/functions/stop-tracing-session.md b/docs/build-insights/reference/sdk/functions/stop-tracing-session.md index ca9bea6c23f..e81b1b8ce42 100644 --- a/docs/build-insights/reference/sdk/functions/stop-tracing-session.md +++ b/docs/build-insights/reference/sdk/functions/stop-tracing-session.md @@ -28,7 +28,7 @@ inline RESULT_CODE StopTracingSession( TRACING_SESSION_STATISTICS* statistics); inline RESULT_CODE StopTracingSession( - const wchar_t* sessionName + const wchar_t* sessionName, const wchar_t* outputLogFile, TRACING_SESSION_STATISTICS* statistics); ``` diff --git a/docs/c-runtime-library/reference/cgets-s-cgetws-s.md b/docs/c-runtime-library/reference/cgets-s-cgetws-s.md index 8709404d4c9..6b31479ab86 100644 --- a/docs/c-runtime-library/reference/cgets-s-cgetws-s.md +++ b/docs/c-runtime-library/reference/cgets-s-cgetws-s.md @@ -26,7 +26,7 @@ errno_t _cgets_s( size_t *pSizeRead ); errno_t _cgetws_s( - wchar_t *buffer + wchar_t *buffer, size_t numberOfElements, size_t *pSizeRead ); diff --git a/docs/c-runtime-library/reference/cxxthrowexception.md b/docs/c-runtime-library/reference/cxxthrowexception.md index 1bad3b4dd00..bb3e3e8b454 100644 --- a/docs/c-runtime-library/reference/cxxthrowexception.md +++ b/docs/c-runtime-library/reference/cxxthrowexception.md @@ -18,7 +18,7 @@ Builds the exception record and calls the runtime environment to start processin ```C extern "C" void __stdcall _CxxThrowException( - void* pExceptionObject + void* pExceptionObject, _ThrowInfo* pThrowInfo ); ``` diff --git a/docs/c-runtime-library/reference/recalloc.md b/docs/c-runtime-library/reference/recalloc.md index 2e10f1ee093..0e3837b9123 100644 --- a/docs/c-runtime-library/reference/recalloc.md +++ b/docs/c-runtime-library/reference/recalloc.md @@ -18,7 +18,7 @@ A combination of `realloc` and `calloc`. Reallocates an array in memory and init ```C void *_recalloc( - void *memblock + void *memblock, size_t num, size_t size ); diff --git a/docs/intrinsics/mm-insert-si64-mm-inserti-si64.md b/docs/intrinsics/mm-insert-si64-mm-inserti-si64.md index 3c6f905373e..76a5f505817 100644 --- a/docs/intrinsics/mm-insert-si64-mm-inserti-si64.md +++ b/docs/intrinsics/mm-insert-si64-mm-inserti-si64.md @@ -21,7 +21,7 @@ __m128i _mm_insert_si64( ); __m128i _mm_inserti_si64( __m128i Source1, - __m128i Source2 + __m128i Source2, int Length, int Index ); diff --git a/docs/mfc/reference/cwinapp-class.md b/docs/mfc/reference/cwinapp-class.md index db9e83c08fb..b84c99b21f5 100644 --- a/docs/mfc/reference/cwinapp-class.md +++ b/docs/mfc/reference/cwinapp-class.md @@ -1535,7 +1535,7 @@ The framework calls this method to open the named [CDocument](../../mfc/referenc ``` virtual CDocument* OpenDocumentFile( - LPCTSTR lpszFileName + LPCTSTR lpszFileName, BOOL bAddToMRU = TRUE); ``` diff --git a/docs/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md b/docs/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md index d928cc4c0d3..9b2c9aa3e6b 100644 --- a/docs/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md +++ b/docs/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md @@ -121,12 +121,12 @@ Creates an [accelerator_view](accelerator-view-class.md) object from a pointer t ```cpp accelerator_view create_accelerator_view( - IUnknown * _D3D_device + IUnknown * _D3D_device, queuing_mode _Qmode = queuing_mode_automatic); accelerator_view create_accelerator_view( accelerator& _Accelerator, - bool _Disable_timeout + bool _Disable_timeout, queuing_mode _Qmode = queuing_mode_automatic); ``` From 87d61ac4626a4d19a4b6276a919e603042bdf566 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 9 Mar 2025 19:17:59 +0800 Subject: [PATCH 0259/2255] Update metadata for a bunch of articles --- docs/c-runtime-library/reference/cgets-s-cgetws-s.md | 3 +-- docs/c-runtime-library/reference/cxxthrowexception.md | 3 +-- docs/c-runtime-library/reference/recalloc.md | 3 +-- docs/intrinsics/mm-insert-si64-mm-inserti-si64.md | 3 +-- docs/mfc/reference/cwinapp-class.md | 3 +-- 5 files changed, 5 insertions(+), 10 deletions(-) diff --git a/docs/c-runtime-library/reference/cgets-s-cgetws-s.md b/docs/c-runtime-library/reference/cgets-s-cgetws-s.md index 6b31479ab86..82de69ea28d 100644 --- a/docs/c-runtime-library/reference/cgets-s-cgetws-s.md +++ b/docs/c-runtime-library/reference/cgets-s-cgetws-s.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: _cgets_s, _cgetws_s" title: "_cgets_s, _cgetws_s" +description: "Learn more about: _cgets_s, _cgetws_s" ms.date: "4/2/2020" api_name: ["_cgetws_s", "_cgets_s", "_o__cgets_s", "_o__cgetws_s"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-conio-l1-1-0.dll"] @@ -8,7 +8,6 @@ api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["_cgets_s", "cgets_s", "cgetws_s", "_cgetws_s"] helpviewer_keywords: ["strings [C++], getting from console", "console, getting strings from", "_cgets_s function", "cget_s function", "_cgetws_s function", "cgetws_s function"] -ms.assetid: 38b74897-afe6-4dd9-a43f-36a3c0d72c5c --- # `_cgets_s`, `_cgetws_s` diff --git a/docs/c-runtime-library/reference/cxxthrowexception.md b/docs/c-runtime-library/reference/cxxthrowexception.md index bb3e3e8b454..2a2a3b87b6f 100644 --- a/docs/c-runtime-library/reference/cxxthrowexception.md +++ b/docs/c-runtime-library/reference/cxxthrowexception.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: _CxxThrowException" title: "_CxxThrowException" +description: "Learn more about: _CxxThrowException" ms.date: "11/04/2016" api_name: ["_CxxThrowException"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"] @@ -8,7 +8,6 @@ api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["CxxThrowException", "_CxxThrowException"] helpviewer_keywords: ["_CxxThrowException function", "CxxThrowException function"] -ms.assetid: 0b90bef5-b7d2-46e0-88e2-59e531e01a4d --- # `_CxxThrowException` diff --git a/docs/c-runtime-library/reference/recalloc.md b/docs/c-runtime-library/reference/recalloc.md index 0e3837b9123..09cd09dea34 100644 --- a/docs/c-runtime-library/reference/recalloc.md +++ b/docs/c-runtime-library/reference/recalloc.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: _recalloc" title: "_recalloc" +description: "Learn more about: _recalloc" ms.date: "4/2/2020" api_name: ["_recalloc", "_o__recalloc"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-heap-l1-1-0.dll"] @@ -8,7 +8,6 @@ api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["_recalloc", "recalloc"] helpviewer_keywords: ["_recalloc function", "recalloc function"] -ms.assetid: 1db8305a-3f03-418c-8844-bf9149f63046 --- # `_recalloc` diff --git a/docs/intrinsics/mm-insert-si64-mm-inserti-si64.md b/docs/intrinsics/mm-insert-si64-mm-inserti-si64.md index 76a5f505817..aad03f0a479 100644 --- a/docs/intrinsics/mm-insert-si64-mm-inserti-si64.md +++ b/docs/intrinsics/mm-insert-si64-mm-inserti-si64.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: _mm_insert_si64, _mm_inserti_si64" title: "_mm_insert_si64, _mm_inserti_si64" +description: "Learn more about: _mm_insert_si64, _mm_inserti_si64" ms.date: "09/02/2019" f1_keywords: ["_mm_inserti_si64", "_mm_insert_si64"] helpviewer_keywords: ["insertq instruction", "_mm_insert_si64 intrinsic", "_mm_inserti_si64 intrinsic"] -ms.assetid: 897a4b36-8b08-4b00-a18f-7850f5732d7d --- # _mm_insert_si64, _mm_inserti_si64 diff --git a/docs/mfc/reference/cwinapp-class.md b/docs/mfc/reference/cwinapp-class.md index b84c99b21f5..f50f041e64d 100644 --- a/docs/mfc/reference/cwinapp-class.md +++ b/docs/mfc/reference/cwinapp-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: CWinApp Class" title: "CWinApp Class" +description: "Learn more about: CWinApp Class" ms.date: "07/15/2019" f1_keywords: ["CWinApp", "AFXWIN/CWinApp", "AFXWIN/CWinApp::CWinApp", "AFXWIN/CWinApp::AddDocTemplate", "AFXWIN/CWinApp::AddToRecentFileList", "AFXWIN/CWinApp::ApplicationRecoveryCallback", "AFXWIN/CWinApp::CloseAllDocuments", "AFXWIN/CWinApp::CreatePrinterDC", "AFXWIN/CWinApp::DelRegTree", "AFXWIN/CWinApp::DoMessageBox", "AFXWIN/CWinApp::DoWaitCursor", "AFXWIN/CWinApp::EnableD2DSupport", "AFXWIN/CWinApp::EnableHtmlHelp", "AFXWIN/CWinApp::EnableTaskbarInteraction", "AFXWIN/CWinApp::ExitInstance", "AFXWIN/CWinApp::GetApplicationRecoveryParameter", "AFXWIN/CWinApp::GetApplicationRecoveryPingInterval", "AFXWIN/CWinApp::GetApplicationRestartFlags", "AFXWIN/CWinApp::GetAppRegistryKey", "AFXWIN/CWinApp::GetDataRecoveryHandler", "AFXWIN/CWinApp::GetFirstDocTemplatePosition", "AFXWIN/CWinApp::GetHelpMode", "AFXWIN/CWinApp::GetNextDocTemplate", "AFXWIN/CWinApp::GetPrinterDeviceDefaults", "AFXWIN/CWinApp::GetProfileBinary", "AFXWIN/CWinApp::GetProfileInt", "AFXWIN/CWinApp::GetProfileString", "AFXWIN/CWinApp::GetSectionKey", "AFXWIN/CWinApp::HideApplication", "AFXWIN/CWinApp::HtmlHelp", "AFXWIN/CWinApp::InitInstance", "AFXWIN/CWinApp::IsTaskbarInteractionEnabled", "AFXWIN/CWinApp::LoadCursor", "AFXWIN/CWinApp::LoadIcon", "AFXWIN/CWinApp::LoadOEMCursor", "AFXWIN/CWinApp::LoadOEMIcon", "AFXWIN/CWinApp::LoadStandardCursor", "AFXWIN/CWinApp::LoadStandardIcon", "AFXWIN/CWinApp::OnDDECommand", "AFXWIN/CWinApp::OnIdle", "AFXWIN/CWinApp::OpenDocumentFile", "AFXWIN/CWinApp::ParseCommandLine", "AFXWIN/CWinApp::PreTranslateMessage", "AFXWIN/CWinApp::ProcessMessageFilter", "AFXWIN/CWinApp::ProcessShellCommand", "AFXWIN/CWinApp::ProcessWndProcException", "AFXWIN/CWinApp::Register", "AFXWIN/CWinApp::RegisterWithRestartManager", "AFXWIN/CWinApp::ReopenPreviousFilesAtRestart", "AFXWIN/CWinApp::RestartInstance", "AFXWIN/CWinApp::RestoreAutosavedFilesAtRestart", "AFXWIN/CWinApp::Run", "AFXWIN/CWinApp::RunAutomated", "AFXWIN/CWinApp::RunEmbedded", "AFXWIN/CWinApp::SaveAllModified", "AFXWIN/CWinApp::SelectPrinter", "AFXWIN/CWinApp::SetHelpMode", "AFXWIN/CWinApp::SupportsApplicationRecovery", "AFXWIN/CWinApp::SupportsAutosaveAtInterval", "AFXWIN/CWinApp::SupportsAutosaveAtRestart", "AFXWIN/CWinApp::SupportsRestartManager", "AFXWIN/CWinApp::Unregister", "AFXWIN/CWinApp::WinHelp", "AFXWIN/CWinApp::WriteProfileBinary", "AFXWIN/CWinApp::WriteProfileInt", "AFXWIN/CWinApp::WriteProfileString", "AFXWIN/CWinApp::EnableShellOpen", "AFXWIN/CWinApp::LoadStdProfileSettings", "AFXWIN/CWinApp::OnContextHelp", "AFXWIN/CWinApp::OnFileNew", "AFXWIN/CWinApp::OnFileOpen", "AFXWIN/CWinApp::OnFilePrintSetup", "AFXWIN/CWinApp::OnHelp", "AFXWIN/CWinApp::OnHelpFinder", "AFXWIN/CWinApp::OnHelpIndex", "AFXWIN/CWinApp::OnHelpUsing", "AFXWIN/CWinApp::RegisterShellFileTypes", "AFXWIN/CWinApp::SetAppID", "AFXWIN/CWinApp::SetRegistryKey", "AFXWIN/CWinApp::UnregisterShellFileTypes", "AFXWIN/CWinApp::m_bHelpMode", "AFXWIN/CWinApp::m_eHelpType", "AFXWIN/CWinApp::m_hInstance", "AFXWIN/CWinApp::m_lpCmdLine", "AFXWIN/CWinApp::m_nCmdShow", "AFXWIN/CWinApp::m_pActiveWnd", "AFXWIN/CWinApp::m_pszAppID", "AFXWIN/CWinApp::m_pszAppName", "AFXWIN/CWinApp::m_pszExeName", "AFXWIN/CWinApp::m_pszHelpFilePath", "AFXWIN/CWinApp::m_pszProfileName", "AFXWIN/CWinApp::m_pszRegistryKey", "AFXWIN/CWinApp::m_dwRestartManagerSupportFlags", "AFXWIN/CWinApp::m_nAutosaveInterval", "AFXWIN/CWinApp::m_pDataRecoveryHandler"] helpviewer_keywords: ["CWinApp [MFC], CWinApp", "CWinApp [MFC], AddDocTemplate", "CWinApp [MFC], AddToRecentFileList", "CWinApp [MFC], ApplicationRecoveryCallback", "CWinApp [MFC], CloseAllDocuments", "CWinApp [MFC], CreatePrinterDC", "CWinApp [MFC], DelRegTree", "CWinApp [MFC], DoMessageBox", "CWinApp [MFC], DoWaitCursor", "CWinApp [MFC], EnableD2DSupport", "CWinApp [MFC], EnableHtmlHelp", "CWinApp [MFC], EnableTaskbarInteraction", "CWinApp [MFC], ExitInstance", "CWinApp [MFC], GetApplicationRecoveryParameter", "CWinApp [MFC], GetApplicationRecoveryPingInterval", "CWinApp [MFC], GetApplicationRestartFlags", "CWinApp [MFC], GetAppRegistryKey", "CWinApp [MFC], GetDataRecoveryHandler", "CWinApp [MFC], GetFirstDocTemplatePosition", "CWinApp [MFC], GetHelpMode", "CWinApp [MFC], GetNextDocTemplate", "CWinApp [MFC], GetPrinterDeviceDefaults", "CWinApp [MFC], GetProfileBinary", "CWinApp [MFC], GetProfileInt", "CWinApp [MFC], GetProfileString", "CWinApp [MFC], GetSectionKey", "CWinApp [MFC], HideApplication", "CWinApp [MFC], HtmlHelp", "CWinApp [MFC], InitInstance", "CWinApp [MFC], IsTaskbarInteractionEnabled", "CWinApp [MFC], LoadCursor", "CWinApp [MFC], LoadIcon", "CWinApp [MFC], LoadOEMCursor", "CWinApp [MFC], LoadOEMIcon", "CWinApp [MFC], LoadStandardCursor", "CWinApp [MFC], LoadStandardIcon", "CWinApp [MFC], OnDDECommand", "CWinApp [MFC], OnIdle", "CWinApp [MFC], OpenDocumentFile", "CWinApp [MFC], ParseCommandLine", "CWinApp [MFC], PreTranslateMessage", "CWinApp [MFC], ProcessMessageFilter", "CWinApp [MFC], ProcessShellCommand", "CWinApp [MFC], ProcessWndProcException", "CWinApp [MFC], Register", "CWinApp [MFC], RegisterWithRestartManager", "CWinApp [MFC], ReopenPreviousFilesAtRestart", "CWinApp [MFC], RestartInstance", "CWinApp [MFC], RestoreAutosavedFilesAtRestart", "CWinApp [MFC], Run", "CWinApp [MFC], RunAutomated", "CWinApp [MFC], RunEmbedded", "CWinApp [MFC], SaveAllModified", "CWinApp [MFC], SelectPrinter", "CWinApp [MFC], SetHelpMode", "CWinApp [MFC], SupportsApplicationRecovery", "CWinApp [MFC], SupportsAutosaveAtInterval", "CWinApp [MFC], SupportsAutosaveAtRestart", "CWinApp [MFC], SupportsRestartManager", "CWinApp [MFC], Unregister", "CWinApp [MFC], WinHelp", "CWinApp [MFC], WriteProfileBinary", "CWinApp [MFC], WriteProfileInt", "CWinApp [MFC], WriteProfileString", "CWinApp [MFC], EnableShellOpen", "CWinApp [MFC], LoadStdProfileSettings", "CWinApp [MFC], OnContextHelp", "CWinApp [MFC], OnFileNew", "CWinApp [MFC], OnFileOpen", "CWinApp [MFC], OnFilePrintSetup", "CWinApp [MFC], OnHelp", "CWinApp [MFC], OnHelpFinder", "CWinApp [MFC], OnHelpIndex", "CWinApp [MFC], OnHelpUsing", "CWinApp [MFC], RegisterShellFileTypes", "CWinApp [MFC], SetAppID", "CWinApp [MFC], SetRegistryKey", "CWinApp [MFC], UnregisterShellFileTypes", "CWinApp [MFC], m_bHelpMode", "CWinApp [MFC], m_eHelpType", "CWinApp [MFC], m_hInstance", "CWinApp [MFC], m_lpCmdLine", "CWinApp [MFC], m_nCmdShow", "CWinApp [MFC], m_pActiveWnd", "CWinApp [MFC], m_pszAppID", "CWinApp [MFC], m_pszAppName", "CWinApp [MFC], m_pszExeName", "CWinApp [MFC], m_pszHelpFilePath", "CWinApp [MFC], m_pszProfileName", "CWinApp [MFC], m_pszRegistryKey", "CWinApp [MFC], m_dwRestartManagerSupportFlags", "CWinApp [MFC], m_nAutosaveInterval", "CWinApp [MFC], m_pDataRecoveryHandler"] -ms.assetid: e426a3cd-0d15-40d6-bd55-beaa5feb2343 --- # CWinApp Class From 5dcf95e6b176262ba27dffca5ecde574bb8d96fd Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 9 Mar 2025 20:57:01 +0800 Subject: [PATCH 0260/2255] Update `Concurrency::direct3d` namespace functions --- ...rrency-direct3d-namespace-functions-amp.md | 155 +++++++++--------- 1 file changed, 78 insertions(+), 77 deletions(-) diff --git a/docs/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md b/docs/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md index 9b2c9aa3e6b..d0a6ddd7c47 100644 --- a/docs/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md +++ b/docs/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md @@ -46,11 +46,12 @@ f1_keywords: ["amp/Concurrency::direct3d::abs", "amp/Concurrency::direct3d::coun ## Requirements **Header:** amp.h + **Namespace:** Concurrency ## abs -Returns the absolute value of the argument +Returns the absolute value of the argument. ```cpp inline int abs(int _X) restrict(amp); @@ -58,7 +59,7 @@ inline int abs(int _X) restrict(amp); ### Parameters -*_X*
+*_X*\ Integer value ### Return Value @@ -83,13 +84,13 @@ inline int clamp( ### Parameters -*_X*
-The value to be clamped +*_X*\ +The value to be clamped. -*_Min*
+*_Min*\ The lower bound of the clamping range. -*_Max*
+*_Max*\ The upper bound of the clamping range. ### Return Value @@ -98,7 +99,7 @@ The clamped value of `_X`. ## countbits -Counts the number of set bits in _X +Counts the number of set bits in `_X`. ```cpp inline unsigned int countbits(unsigned int _X) restrict(amp); @@ -106,12 +107,12 @@ inline unsigned int countbits(unsigned int _X) restrict(amp); ### Parameters -*_X*
+*_X*\ Unsigned integer value ### Return Value -Returns the number of set bits in _X +Returns the number of set bits in `_X`. ## create_accelerator_view @@ -132,16 +133,16 @@ accelerator_view create_accelerator_view( ### Parameters -*_Accelerator*
+*_Accelerator*\ The accelerator on which the new accelerator_view is to be created. -*_D3D_device*
+*_D3D_device*\ The pointer to the Direct3D device interface. -*_Disable_timeout*
+*_Disable_timeout*\ A Boolean parameter that specifies whether timeout should be disabled for the newly created accelerator_view. This corresponds to the D3D11_CREATE_DEVICE_DISABLE_GPU_TIMEOUT flag for Direct3D device creation and is used to indicate if the operating system should allow workloads that take more than 2 seconds to execute without resetting the device per the Windows timeout detection and recovery mechanism. Use of this flag is recommended if you need to perform time consuming tasks on the accelerator_view. -*_Qmode*
+*_Qmode*\ The [queuing_mode](concurrency-namespace-enums-amp.md#queuing_mode) to be used for the newly created accelerator_view. This parameter has a default value of `queuing_mode_automatic`. ## Return Value @@ -166,7 +167,7 @@ void __cdecl d3d_access_lock(accelerator_view& _Av); ### Parameters -*_Av*
+*_Av*\ The accelerator_view to lock. ## d3d_access_try_lock @@ -179,7 +180,7 @@ bool __cdecl d3d_access_try_lock(accelerator_view& _Av); ### Parameters -*_Av*
+*_Av*\ The accelerator_view to lock. ### Return Value @@ -196,12 +197,12 @@ void __cdecl d3d_access_unlock(accelerator_view& _Av); ### Parameters -*_Av*
+*_Av*\ The accelerator_view for which the lock is to be released. ## firstbithigh -Gets the location of the first set bit in _X, beginning with the highest-order bit and moving towards the lowest-order bit. +Gets the location of the first set bit in `_X`, beginning with the highest-order bit and moving towards the lowest-order bit. ```cpp inline int firstbithigh(int _X) restrict(amp); @@ -209,16 +210,16 @@ inline int firstbithigh(int _X) restrict(amp); ### Parameters -*_X*
+*_X*\ Integer value ### Return Value -The location of the first set bit +The location of the first set bit. ## firstbitlow -Gets the location of the first set bit in _X, beginning with the lowest-order bit and working toward the highest-order bit. +Gets the location of the first set bit in `_X`, beginning with the lowest-order bit and working toward the highest-order bit. ```cpp inline int firstbitlow(int _X) restrict(amp); @@ -226,12 +227,12 @@ inline int firstbitlow(int _X) restrict(amp); ### Parameters -*_X*
+*_X*\ Integer value ### Return Value -Returns The location of the first set bit +Returns The location of the first set bit. ## get_buffer @@ -243,18 +244,18 @@ template< int _Rank > IUnknown *get_buffer( - const array& _Array) ; + const array& _Array); ``` ### Parameters -*value_type*
+*value_type*\ The type of elements in the array. -*_Rank*
+*_Rank*\ The rank of the array. -*_Array*
+*_Array*\ An array on a Direct3D accelerator_view for which the underlying Direct3D buffer interface is returned. ### Return Value @@ -271,7 +272,7 @@ IUnknown* get_device(const accelerator_view Av); ### Parameters -*Av*
+*Av*\ The D3D accelerator_view for which the underlying D3D device interface is returned. ### Return value @@ -280,7 +281,7 @@ The `IUnknown` interface pointer of the D3D device underlying the accelerator_vi ## imax -Determine the maximum numeric value of the arguments +Determine the maximum numeric value of the arguments. ```cpp inline int imax( @@ -290,19 +291,19 @@ inline int imax( ### Parameters -*_X*
+*_X*\ Integer value -*_Y*
+*_Y*\ Integer value ### Return Value -Return the maximum numeric value of the arguments +Return the maximum numeric value of the arguments. ## imin -Determine the minimum numeric value of the arguments +Determine the minimum numeric value of the arguments. ```cpp inline int imin( @@ -312,15 +313,15 @@ inline int imin( ### Parameters -*_X*
+*_X*\ Integer value -*_Y*
+*_Y*\ Integer value ### Return Value -Return the minimum numeric value of the arguments +Return the minimum numeric value of the arguments. ## is_timeout_disabled @@ -332,7 +333,7 @@ bool __cdecl is_timeout_disabled(const accelerator_view& _Accelerator_view); ### Parameters -*_Accelerator_view*
+*_Accelerator_view*\ The accelerator_view for which the timeout disabled setting is to be queried. ### Return Value @@ -367,13 +368,13 @@ inline unsigned int mad( ### Parameters -*_X*
+*_X*\ The first specified argument. -*_Y*
+*_Y*\ The second specified argument. -*_Z*
+*_Z*\ The third specified argument. ### Return Value @@ -392,24 +393,24 @@ template< array make_array( const extent<_Rank>& _Extent, const Concurrency::accelerator_view& _Rv, - IUnknown* _D3D_buffer) ; + IUnknown* _D3D_buffer); ``` ### Parameters -*value_type*
+*value_type*\ The element type of the array to be created. -*_Rank*
+*_Rank*\ The rank of the array to be created. -*_Extent*
+*_Extent*\ An extent that describes the shape of the array aggregate. -*_Rv*
+*_Rv*\ A D3D accelerator view on which the array is to be created. -*_D3D_buffer*
+*_D3D_buffer*\ IUnknown interface pointer of the D3D buffer to create the array from. ### Return Value @@ -418,7 +419,7 @@ An array created using the provided Direct3D buffer. ## noise -Generates a random value using the Perlin noise algorithm +Generates a random value using the Perlin noise algorithm. ```cpp inline float noise(float _X) restrict(amp); @@ -426,16 +427,16 @@ inline float noise(float _X) restrict(amp); ### Parameters -*_X*
-Floating-point value from which to generate Perlin noise +*_X*\ +Floating-point value from which to generate Perlin noise. ### Return Value -Returns The Perlin noise value within a range between -1 and 1 +Returns the Perlin noise value within a range between -1 and 1. ## radians -Converts _X from degrees to radians +Converts `_X` from degrees to radians. ```cpp inline float radians(float _X) restrict(amp); @@ -443,12 +444,12 @@ inline float radians(float _X) restrict(amp); ### Parameters -*_X*
+*_X*\ Floating-point value ### Return Value -Returns _X converted from degrees to radians +Returns `_X` converted from degrees to radians. ## rcp @@ -462,7 +463,7 @@ inline double rcp(double _X) restrict(amp); ### Parameters -*_X*
+*_X*\ The value for which to compute the reciprocal. ### Return Value @@ -471,7 +472,7 @@ The reciprocal of the specified argument. ## reversebits -Reverses the order of the bits in _X +Reverses the order of the bits in `_X`. ```cpp inline unsigned int reversebits(unsigned int _X) restrict(amp); @@ -479,16 +480,16 @@ inline unsigned int reversebits(unsigned int _X) restrict(amp); ### Parameters -*_X*
+*_X*\ Unsigned integer value ### Return Value -Returns the value with the bit order reversed in _X +Returns the value with the bit order reversed in `_X`. ## saturate -Clamps _X within the range of 0 to 1 +Clamps `_X` within the range of 0 to 1. ```cpp inline float saturate(float _X) restrict(amp); @@ -496,12 +497,12 @@ inline float saturate(float _X) restrict(amp); ### Parameters -*_X*
+*_X*\ Floating-point value ### Return Value -Returns _X clamped within the range of 0 to 1 +Returns `_X` clamped within the range of 0 to 1. ## sign @@ -513,7 +514,7 @@ inline int sign(int _X) restrict(amp); ### Parameters -*_X*
+*_X*\ Integer value ### Return Value @@ -522,7 +523,7 @@ The sign of the argument. ## smoothstep -Returns a smooth Hermite interpolation between 0 and 1, if _X is in the range [_Min, _Max]. +Returns a smooth Hermite interpolation between 0 and 1, if `_X` is in the range [_Min, _Max]. ```cpp inline float smoothstep( @@ -533,22 +534,22 @@ inline float smoothstep( ### Parameters -*_Min*
+*_Min*\ Floating-point value -*_Max*
+*_Max*\ Floating-point value -*_X*
+*_X*\ Floating-point value ### Return Value -Returns 0 if _X is less than _Min; 1 if _X is greater than _Max; otherwise, a value between 0 and 1 if _X is in the range [_Min, _Max] +Returns 0 if `_X` is less than _Min; 1 if `_X` is greater than _Max; otherwise, a value between 0 and 1 if `_X` is in the range [_Min, _Max]. ## step -Compares two values, returning 0 or 1 based on which value is greater +Compares two values, returning 0 or 1 based on which value is greater. ```cpp inline float step( @@ -558,19 +559,19 @@ inline float step( ### Parameters -*_Y*
+*_Y*\ Floating-point value -*_X*
+*_X*\ Floating-point value ### Return Value -Returns 1 if the _X is greater than or equal to _Y; otherwise, 0 +Returns 1 if the `_X` is greater than or equal to `_Y`; otherwise, 0. ## umax -Determine the maximum numeric value of the arguments +Determine the maximum numeric value of the arguments. ```cpp inline unsigned int umax( @@ -580,19 +581,19 @@ inline unsigned int umax( ### Parameters -*_X*
+*_X*\ Integer value -*_Y*
+*_Y*\ Integer value ### Return Value -Return the maximum numeric value of the arguments +Return the maximum numeric value of the arguments. ## umin -Determine the minimum numeric value of the arguments +Determine the minimum numeric value of the arguments. ```cpp inline unsigned int umin( @@ -602,15 +603,15 @@ inline unsigned int umin( ### Parameters -*_X*
+*_X*\ Integer value -*_Y*
+*_Y*\ Integer value ### Return Value -Return the minimum numeric value of the arguments +Return the minimum numeric value of the arguments. ## See also From 11a7c4248d51d1f6b727f04ae6e7c8c26c61fee8 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 10 Mar 2025 23:56:10 +0800 Subject: [PATCH 0261/2255] Add missing character to multiple `AnalyzeA` function link text --- .../reference/sdk/functions/stop-tracing-session-a.md | 2 +- .../reference/sdk/functions/stop-tracing-session-w.md | 2 +- .../reference/sdk/functions/stop-tracing-session.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/build-insights/reference/sdk/functions/stop-tracing-session-a.md b/docs/build-insights/reference/sdk/functions/stop-tracing-session-a.md index 46dedc00da0..39ac969bab5 100644 --- a/docs/build-insights/reference/sdk/functions/stop-tracing-session-a.md +++ b/docs/build-insights/reference/sdk/functions/stop-tracing-session-a.md @@ -13,7 +13,7 @@ The C++ Build Insights SDK is compatible with Visual Studio 2017 and later. To s ::: moniker-end ::: moniker range=">=msvc-150" -The `StopTracingSessionA` function stops an ongoing tracing session and produces a raw trace file. Raw trace files can be passed to the [Analyze](analyze.md), [AnalzeA](analyze-a.md), and [AnalyzeW](analyze-w.md) functions to start an analysis session. Raw trace files can also be passed to the [Relog](relog.md), [RelogA](relog-a.md), and [RelogW](relog-w.md) functions to start relogging session. Executables calling `StopTracingSessionA` must have administrator privileges. +The `StopTracingSessionA` function stops an ongoing tracing session and produces a raw trace file. Raw trace files can be passed to the [Analyze](analyze.md), [AnalyzeA](analyze-a.md), and [AnalyzeW](analyze-w.md) functions to start an analysis session. Raw trace files can also be passed to the [Relog](relog.md), [RelogA](relog-a.md), and [RelogW](relog-w.md) functions to start relogging session. Executables calling `StopTracingSessionA` must have administrator privileges. ## Syntax diff --git a/docs/build-insights/reference/sdk/functions/stop-tracing-session-w.md b/docs/build-insights/reference/sdk/functions/stop-tracing-session-w.md index a050b60ed3b..32e05f8ce83 100644 --- a/docs/build-insights/reference/sdk/functions/stop-tracing-session-w.md +++ b/docs/build-insights/reference/sdk/functions/stop-tracing-session-w.md @@ -13,7 +13,7 @@ The C++ Build Insights SDK is compatible with Visual Studio 2017 and later. To s ::: moniker-end ::: moniker range=">=msvc-150" -The `StopTracingSessionW` function stops an ongoing tracing session and produces a raw trace file. Raw trace files can be passed to the [Analyze](analyze.md), [AnalzeA](analyze-a.md), and [AnalyzeW](analyze-w.md) functions to start an analysis session. Raw trace files can also be passed to the [Relog](relog.md), [RelogA](relog-a.md), and [RelogW](relog-w.md) functions to start relogging session. Executables calling `StopTracingSessionW` must have administrator privileges. +The `StopTracingSessionW` function stops an ongoing tracing session and produces a raw trace file. Raw trace files can be passed to the [Analyze](analyze.md), [AnalyzeA](analyze-a.md), and [AnalyzeW](analyze-w.md) functions to start an analysis session. Raw trace files can also be passed to the [Relog](relog.md), [RelogA](relog-a.md), and [RelogW](relog-w.md) functions to start relogging session. Executables calling `StopTracingSessionW` must have administrator privileges. ## Syntax diff --git a/docs/build-insights/reference/sdk/functions/stop-tracing-session.md b/docs/build-insights/reference/sdk/functions/stop-tracing-session.md index ca9bea6c23f..d44131f366f 100644 --- a/docs/build-insights/reference/sdk/functions/stop-tracing-session.md +++ b/docs/build-insights/reference/sdk/functions/stop-tracing-session.md @@ -15,7 +15,7 @@ The C++ Build Insights SDK is compatible with Visual Studio 2017 and later. To s ::: moniker-end ::: moniker range=">=msvc-150" -The `StopTracingSession` function stops an ongoing tracing session and produces a raw trace file. You can pass raw trace files to the [Analyze](analyze.md), [AnalzeA](analyze-a.md), and [AnalyzeW](analyze-w.md) functions to start an analysis session. You can pass raw trace files to the [Relog](relog.md), [RelogA](relog-a.md), and [RelogW](relog-w.md) functions to start a relogging session. +The `StopTracingSession` function stops an ongoing tracing session and produces a raw trace file. You can pass raw trace files to the [Analyze](analyze.md), [AnalyzeA](analyze-a.md), and [AnalyzeW](analyze-w.md) functions to start an analysis session. You can pass raw trace files to the [Relog](relog.md), [RelogA](relog-a.md), and [RelogW](relog-w.md) functions to start a relogging session. The caller must have administrator permissions to use `StopTracingSession`. From 4132e72657c823107905a507a8e874ed1048eb3d Mon Sep 17 00:00:00 2001 From: Carson Radtke Date: Tue, 11 Mar 2025 11:28:43 -0500 Subject: [PATCH 0262/2255] docs for justification in pragma warning --- docs/preprocessor/warning.md | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/docs/preprocessor/warning.md b/docs/preprocessor/warning.md index da6d6189840..c57ae9694bb 100644 --- a/docs/preprocessor/warning.md +++ b/docs/preprocessor/warning.md @@ -13,7 +13,7 @@ Enables selective modification of the behavior of compiler warning messages. ## Syntax > **`#pragma warning(`**\ ->  *`warning-specifier`* **`:`** *`warning-number-list`*\ +>  *`warning-specifier`* **`:`** *`warning-number-list`* [ **`,`** **`justification`** **`:`** *`string-literal`*]\ >  [**`;`** *`warning-specifier`* **`:`** *`warning-number-list`* ... ] **`)`**\ > **`#pragma warning( push`** [ **`,`** *n* ] **`)`**\ > **`#pragma warning( pop )`** @@ -26,10 +26,10 @@ The following warning-specifier parameters are available. |--|--| | `1`, `2`, `3`, `4` | Apply the given level to the specified warnings. Also turns on a specified warning that is off by default. | | `default` | Reset warning behavior to its default value. Also turns on a specified warning that is off by default. The warning will be generated at its default, documented, level.

For more information, see [Compiler warnings that are off by default](../preprocessor/compiler-warnings-that-are-off-by-default.md). | -| `disable` | Don't issue the specified warning messages. | +| `disable` | Don't issue the specified warning messages. The optional **`justification`** property is allowed. | | `error` | Report the specified warnings as errors. | | `once` | Display the specified message(s) only one time. | -| `suppress` | Pushes the current state of the pragma on the stack, disables the specified warning for the next line, and then pops the warning stack so that the pragma state is reset. | +| `suppress` | Pushes the current state of the pragma on the stack, disables the specified warning for the next line, and then pops the warning stack so that the pragma state is reset. The optional **`justification`** property is allowed. | The following code statement illustrates that a *`warning-number-list`* parameter can contain multiple warning numbers, and that multiple *`warning-specifier`* parameters can be specified in the same pragma directive. @@ -37,6 +37,15 @@ The following code statement illustrates that a *`warning-number-list`* paramete #pragma warning( disable : 4507 34; once : 4385; error : 164 ) ``` +However, when the **`justification`** field is present, only one warning number can be specified. The following code statement illustrates the use of the **`justification`** field. + +```cpp +#pragma warning( disable : 4507, justification : "This warning is disabled" ) +``` + +The **`justification`** fields allows you to explain why a warning is being disable or +suppressed. The **`justification`** field is only supported for the **`disable`** and **`suppress`** *`warning-specifier`*. This value will appear in the SARIF output when the `/analyze:log:includesuppressed` option is specified. Its value is a UTF-8 encoded narrow string literal. + This directive is functionally equivalent to the following code: ```cpp From ca96f8c767d7f480a767f8679f123f020a06c447 Mon Sep 17 00:00:00 2001 From: Carson Radtke Date: Tue, 11 Mar 2025 11:35:14 -0500 Subject: [PATCH 0263/2255] docs for gsl::suppress --- docs/cpp/attributes.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/cpp/attributes.md b/docs/cpp/attributes.md index 961f2945bb9..b34a559f805 100644 --- a/docs/cpp/attributes.md +++ b/docs/cpp/attributes.md @@ -77,16 +77,18 @@ The `[[noreturn]]` attribute specifies that a function never returns; in other w ## Microsoft-specific attributes -### `[[gsl::suppress(rules)]]` +### `[[gsl::suppress( [, justification: ])]]` -The Microsoft-specific `[[gsl::suppress(rules)]]` attribute is used to suppress warnings from checkers that enforce [Guidelines Support Library (GSL)](https://github.com/Microsoft/GSL) rules in code. For example, consider this code snippet: +`` is a string that specifies the name of the rule to suppress. The optional `justification` field allows you to explain why a warning is being disabled or suppressed. This value will appear in the SARIF output when the `/analyze:log:includesuppressed` option is specified. Its value is a UTF-8 encoded narrow string literal. The `[[gsl::suppress]]` attribute is available in Visual Studio 2022 version 17.14 and later versions. + +The Microsoft-specific `[[gsl::suppress]]` attribute is used to suppress warnings from checkers that enforce [Guidelines Support Library (GSL)](https://github.com/Microsoft/GSL) rules in code. For example, consider this code snippet: ```cpp int main() { int arr[10]; // GSL warning C26494 will be fired int* p = arr; // GSL warning C26485 will be fired - [[gsl::suppress(bounds.1)]] // This attribute suppresses Bounds rule #1 + [[gsl::suppress("bounds.1", justification: "This attribute suppresses Bounds rule #1")]] { int* q = p + 1; // GSL warning C26481 suppressed p = q--; // GSL warning C26481 suppressed @@ -102,7 +104,7 @@ The example raises these warnings: - [C26481](../code-quality/c26481.md) (Bounds Rule 1: Don't use pointer arithmetic. Use span instead.) -The first two warnings fire when you compile this code with the CppCoreCheck code analysis tool installed and activated. But the third warning doesn't fire because of the attribute. You can suppress the entire bounds profile by writing `[[gsl::suppress(bounds)]]` without including a specific rule number. The C++ Core Guidelines are designed to help you write better and safer code. The suppress attribute makes it easy to turn off the warnings when they aren't wanted. +The first two warnings fire when you compile this code with the CppCoreCheck code analysis tool installed and activated. But the third warning doesn't fire because of the attribute. You can suppress the entire bounds profile by writing `[[gsl::suppress("bounds")]]` without including a specific rule number. The C++ Core Guidelines are designed to help you write better and safer code. The suppress attribute makes it easy to turn off the warnings when they aren't wanted. ### `[[msvc::flatten]]` From 7407042f5f915b28d238aade102c7dfec0f96d5b Mon Sep 17 00:00:00 2001 From: Carson Radtke Date: Tue, 11 Mar 2025 11:37:03 -0500 Subject: [PATCH 0264/2255] teach gsl::suppress("rule") instead of gsl::suppress(rule) --- docs/code-quality/c26401.md | 2 +- docs/code-quality/c26409.md | 2 +- .../using-the-cpp-core-guidelines-checkers.md | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/code-quality/c26401.md b/docs/code-quality/c26401.md index ef45225be5a..023338c3780 100644 --- a/docs/code-quality/c26401.md +++ b/docs/code-quality/c26401.md @@ -63,7 +63,7 @@ public: ref_count_--; if (ref_count_ == 0) { - [[gsl::suppress(i.11)]] + [[gsl::suppress("i.11")]] delete this; } } diff --git a/docs/code-quality/c26409.md b/docs/code-quality/c26409.md index 8939a087764..c9686cfee7b 100644 --- a/docs/code-quality/c26409.md +++ b/docs/code-quality/c26409.md @@ -49,7 +49,7 @@ public: ref_count_--; if (ref_count_ == 0) { - [[gsl::suppress(i.11)]] + [[gsl::suppress("i.11")]] delete this; } } diff --git a/docs/code-quality/using-the-cpp-core-guidelines-checkers.md b/docs/code-quality/using-the-cpp-core-guidelines-checkers.md index 3609f413acc..7cb48500713 100644 --- a/docs/code-quality/using-the-cpp-core-guidelines-checkers.md +++ b/docs/code-quality/using-the-cpp-core-guidelines-checkers.md @@ -74,7 +74,7 @@ int main() int arr[10]; // warning C26494 int* p = arr; // warning C26485 - [[gsl::suppress(bounds.1)]] // This attribute suppresses Bounds rule #1 + [[gsl::suppress("bounds.1", justification : "This attribute suppresses Bounds rules #1")]] { int* q = p + 1; // warning C26481 (suppressed) p = q++; // warning C26481 (suppressed) @@ -104,7 +104,7 @@ c:\users\username\documents\visual studio 2015\projects\corecheckexample\coreche ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== ``` -The C++ Core Guidelines are there to help you write better and safer code. However, you might find an instance where a rule or a profile shouldn't be applied. It's easy to suppress it directly in the code. You can use the `[[gsl::suppress]]` attribute to keep C++ Core Check from detecting and reporting any violation of a rule in the following code block. You can mark individual statements to suppress specific rules. You can even suppress the entire bounds profile by writing `[[gsl::suppress(bounds)]]` without including a specific rule number. +The C++ Core Guidelines are there to help you write better and safer code. However, you might find an instance where a rule or a profile shouldn't be applied. It's easy to suppress it directly in the code. You can use the `[[gsl::suppress]]` attribute to keep C++ Core Check from detecting and reporting any violation of a rule in the following code block. You can mark individual statements to suppress specific rules. You can even suppress the entire bounds profile by writing `[[gsl::suppress("bounds")]]` without including a specific rule number. ## Supported rule sets @@ -197,10 +197,10 @@ The Microsoft C++ compiler has limited support for the `[[gsl::suppress]]` attri ```cpp // Suppress only warnings from the 'r.11' rule in expression. -[[gsl::suppress(r.11)]] new int; +[[gsl::suppress("r.11")]] new int; // Suppress all warnings from the 'r' rule group (resource management) in block. -[[gsl::suppress(r)]] +[[gsl::suppress("r")]] { new int; } @@ -209,7 +209,7 @@ The Microsoft C++ compiler has limited support for the `[[gsl::suppress]]` attri // For declarations, you might need to use the surrounding block. // Macros are not expanded inside of attributes. // Use plain numbers instead of macros from the warnings.h. -[[gsl::suppress(26400)]] +[[gsl::suppress("26400")]] { int *p = new int; } From 674751b4b8a34158bc972760ab3e803334d2f52f Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 11 Mar 2025 09:39:08 -0700 Subject: [PATCH 0265/2255] test --- docs/build/reference/dynamic-deopt-linker.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/build/reference/dynamic-deopt-linker.md b/docs/build/reference/dynamic-deopt-linker.md index 20eff8492a5..629f0b7a5f6 100644 --- a/docs/build/reference/dynamic-deopt-linker.md +++ b/docs/build/reference/dynamic-deopt-linker.md @@ -12,6 +12,10 @@ helpviewer_keywords: ["DYNAMICDEOPT linker option", "/DYNAMICDEOPT linker option The **`/DYNAMICDEOPT`** linker option, when used with the compiler switch [`/dynamicdeopt`](dynamic-deopt.md), enables [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging), which allows you to debug optimized code as if it had been compiled deoptimized and step in anywhere with on-demand function deoptimization. +|:---:|:---:|:---:| +| test: `x||y` | test: `x||y` | test: `x||y` | + + ## Syntax > **`/DYNAMICDEOPT`** From 3368faa75845fecd108120b3359a64eb27429791 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 11 Mar 2025 09:43:49 -0700 Subject: [PATCH 0266/2255] test --- docs/build/reference/dynamic-deopt-linker.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/build/reference/dynamic-deopt-linker.md b/docs/build/reference/dynamic-deopt-linker.md index 629f0b7a5f6..d6686ad43b6 100644 --- a/docs/build/reference/dynamic-deopt-linker.md +++ b/docs/build/reference/dynamic-deopt-linker.md @@ -12,8 +12,9 @@ helpviewer_keywords: ["DYNAMICDEOPT linker option", "/DYNAMICDEOPT linker option The **`/DYNAMICDEOPT`** linker option, when used with the compiler switch [`/dynamicdeopt`](dynamic-deopt.md), enables [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging), which allows you to debug optimized code as if it had been compiled deoptimized and step in anywhere with on-demand function deoptimization. -|:---:|:---:|:---:| -| test: `x||y` | test: `x||y` | test: `x||y` | +| | | +|---|---| +| test: `x||y` | test: `x||y` | ## Syntax From 92cf12c5a88855e7c88a96d3723fa7fe67230b1d Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 11 Mar 2025 09:50:16 -0700 Subject: [PATCH 0267/2255] restore --- docs/build/reference/dynamic-deopt-linker.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/docs/build/reference/dynamic-deopt-linker.md b/docs/build/reference/dynamic-deopt-linker.md index d6686ad43b6..20eff8492a5 100644 --- a/docs/build/reference/dynamic-deopt-linker.md +++ b/docs/build/reference/dynamic-deopt-linker.md @@ -12,11 +12,6 @@ helpviewer_keywords: ["DYNAMICDEOPT linker option", "/DYNAMICDEOPT linker option The **`/DYNAMICDEOPT`** linker option, when used with the compiler switch [`/dynamicdeopt`](dynamic-deopt.md), enables [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging), which allows you to debug optimized code as if it had been compiled deoptimized and step in anywhere with on-demand function deoptimization. -| | | -|---|---| -| test: `x||y` | test: `x||y` | - - ## Syntax > **`/DYNAMICDEOPT`** From 84344c1e466d571e5fac8ce286353b150e2b1390 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 11 Mar 2025 11:11:55 -0700 Subject: [PATCH 0268/2255] update --- docs/build/reference/dynamic-deopt-linker.md | 2 +- docs/build/reference/dynamic-deopt.md | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/docs/build/reference/dynamic-deopt-linker.md b/docs/build/reference/dynamic-deopt-linker.md index 20eff8492a5..0f6f6d57097 100644 --- a/docs/build/reference/dynamic-deopt-linker.md +++ b/docs/build/reference/dynamic-deopt-linker.md @@ -10,7 +10,7 @@ helpviewer_keywords: ["DYNAMICDEOPT linker option", "/DYNAMICDEOPT linker option > The `/DYNAMICDEOPT` linker switch is currently in PREVIEW. > This information relates to a prerelease feature that might be substantially modified before release. Microsoft makes no warranties, expressed or implied, with respect to the information provided here. -The **`/DYNAMICDEOPT`** linker option, when used with the compiler switch [`/dynamicdeopt`](dynamic-deopt.md), enables [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging), which allows you to debug optimized code as if it had been compiled deoptimized and step in anywhere with on-demand function deoptimization. +The **`/DYNAMICDEOPT`** linker option, when used with the compiler switch [`/dynamicdeopt`](dynamic-deopt.md), enables [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging), which allows you to debug optimized code as if it were compiled deoptimized and step in anywhere with on-demand function deoptimization. ## Syntax diff --git a/docs/build/reference/dynamic-deopt.md b/docs/build/reference/dynamic-deopt.md index 63539fb5ce7..edf924acc7d 100644 --- a/docs/build/reference/dynamic-deopt.md +++ b/docs/build/reference/dynamic-deopt.md @@ -10,7 +10,7 @@ helpviewer_keywords: ["cl.exe compiler, common language runtime option", "-dynam > The `/dynamicdeopt` compiler switch is currently in PREVIEW. > This information relates to a prerelease feature that might be substantially modified before release. Microsoft makes no warranties, expressed or implied, with respect to the information provided here. -Enable [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging) so you can debug optimized code as if it had been compiled deoptimized and step in anywhere with on-demand function deoptimization. +Enable [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging) so you can debug optimized code as if it were compiled deoptimized and step in anywhere with on-demand function deoptimization. ## Syntax @@ -59,9 +59,7 @@ fsanitize=kernel-address All of the CLR flags ``` -JTW - when I get a build with the property pages, push them to that section that sets the global property that does all of this for you and remove the next two lines. Possibly mention that it turns these things off for you. -Turn `/GL `off via Project properties C/C++ > Optimization > Whole Program Optimization. Set it to **No**. -Turn `/OPT:ICF` off in Project properties Linker > Optimization > Enable COMDAT Folding. Set it to **No**. +You can set this switch inside Visual Studio. For more information, see [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging#build-system-integration). There are advantages to setting the switch in Visual Studio because MSBUILD automatically suppresses some of the incompatible switches such as `/GL` and `/OPT:ICF`. It also sets the corresponding linker option (`/DYNAMICDEOPT`). You can also set the switch in the command line. ### To set this compiler option programmatically From 9a0a2ed3199af172f0017578c9b401d5c1cdbe8e Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 14 Mar 2025 15:10:42 +0800 Subject: [PATCH 0269/2255] Remove extra period characters --- docs/cpp/microsoft-specific-modifiers.md | 5 ++--- docs/mfc/reference/cmdichildwndex-class.md | 5 ++--- docs/mfc/reference/cmfcribbonbar-class.md | 5 ++--- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/docs/cpp/microsoft-specific-modifiers.md b/docs/cpp/microsoft-specific-modifiers.md index 3d8fc865625..fda7e966152 100644 --- a/docs/cpp/microsoft-specific-modifiers.md +++ b/docs/cpp/microsoft-specific-modifiers.md @@ -1,8 +1,7 @@ --- -description: "Learn more about: Microsoft-specific modifiers" title: "Microsoft-specific modifiers" +description: "Learn more about: Microsoft-specific modifiers" ms.date: "08/16/2018" -ms.assetid: 22c7178c-f854-47fa-9de6-07d23fda58e1 --- # Microsoft-specific modifiers @@ -29,7 +28,7 @@ Many of the Microsoft-specific keywords can be used to modify declarators to for |[__restrict](extension-restrict.md)|Similar to __declspec([restrict](restrict.md)), but for use on variables.|No| |[__stdcall](stdcall.md)|The name that follows specifies a function that observes the standard calling convention.|Yes| |[__w64](w64.md)|Marks a data type as being larger on a 64-bit compiler.|No| -|[__unaligned](unaligned.md)|Specifies that a pointer to a type or other data is not aligned..|No| +|[__unaligned](unaligned.md)|Specifies that a pointer to a type or other data is not aligned.|No| |[__vectorcall](vectorcall.md)|The name that follows declares a function that uses registers, including SSE registers, when available, instead of the stack for argument passing.|Yes| ## See also diff --git a/docs/mfc/reference/cmdichildwndex-class.md b/docs/mfc/reference/cmdichildwndex-class.md index 69dede74255..b1f2e320dd5 100644 --- a/docs/mfc/reference/cmdichildwndex-class.md +++ b/docs/mfc/reference/cmdichildwndex-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: CMDIChildWndEx Class" title: "CMDIChildWndEx Class" +description: "Learn more about: CMDIChildWndEx Class" ms.date: "10/18/2018" f1_keywords: ["CMDIChildWndEx", "AFXMDICHILDWNDEX/CMDIChildWndEx", "AFXMDICHILDWNDEX/CMDIChildWndEx::ActivateTopLevelFrame", "AFXMDICHILDWNDEX/CMDIChildWndEx::AddPane", "AFXMDICHILDWNDEX/CMDIChildWndEx::AddTabbedPane", "AFXMDICHILDWNDEX/CMDIChildWndEx::AdjustDockingLayout", "AFXMDICHILDWNDEX/CMDIChildWndEx::CanShowOnMDITabs", "AFXMDICHILDWNDEX/CMDIChildWndEx::CanShowOnTaskBarTabs", "AFXMDICHILDWNDEX/CMDIChildWndEx::CanShowOnWindowsList", "AFXMDICHILDWNDEX/CMDIChildWndEx::DockPane", "AFXMDICHILDWNDEX/CMDIChildWndEx::DockPaneLeftOf", "AFXMDICHILDWNDEX/CMDIChildWndEx::EnableAutoHidePanes", "AFXMDICHILDWNDEX/CMDIChildWndEx::EnableDocking", "AFXMDICHILDWNDEX/CMDIChildWndEx::EnableTaskbarThumbnailClipRect", "AFXMDICHILDWNDEX/CMDIChildWndEx::GetDockingManager", "AFXMDICHILDWNDEX/CMDIChildWndEx::GetDocumentName", "AFXMDICHILDWNDEX/CMDIChildWndEx::GetFrameIcon", "AFXMDICHILDWNDEX/CMDIChildWndEx::GetFrameText", "AFXMDICHILDWNDEX/CMDIChildWndEx::GetPane", "AFXMDICHILDWNDEX/CMDIChildWndEx::GetRelatedTabGroup", "AFXMDICHILDWNDEX/CMDIChildWndEx::GetTabbedPane", "AFXMDICHILDWNDEX/CMDIChildWndEx::GetTabProxyWnd", "AFXMDICHILDWNDEX/CMDIChildWndEx::GetTaskbarPreviewWnd", "AFXMDICHILDWNDEX/CMDIChildWndEx::GetTaskbarThumbnailClipRect", "AFXMDICHILDWNDEX/CMDIChildWndEx::GetToolbarButtonToolTipText", "AFXMDICHILDWNDEX/CMDIChildWndEx::InsertPane", "AFXMDICHILDWNDEX/CMDIChildWndEx::InvalidateIconicBitmaps", "AFXMDICHILDWNDEX/CMDIChildWndEx::IsPointNearDockSite", "AFXMDICHILDWNDEX/CMDIChildWndEx::IsReadOnly", "AFXMDICHILDWNDEX/CMDIChildWndEx::IsRegisteredWithTaskbarTabs", "AFXMDICHILDWNDEX/CMDIChildWndEx::IsTabbedPane", "AFXMDICHILDWNDEX/CMDIChildWndEx::IsTaskbarTabsSupportEnabled", "AFXMDICHILDWNDEX/CMDIChildWndEx::IsTaskbarThumbnailClipRectEnabled", "AFXMDICHILDWNDEX/CMDIChildWndEx::m_dwDefaultTaskbarTabPropertyFlags", "AFXMDICHILDWNDEX/CMDIChildWndEx::OnGetIconicLivePreviewBitmap", "AFXMDICHILDWNDEX/CMDIChildWndEx::OnGetIconicThumbnail", "AFXMDICHILDWNDEX/CMDIChildWndEx::OnMoveMiniFrame", "AFXMDICHILDWNDEX/CMDIChildWndEx::OnPressTaskbarThmbnailCloseButton", "AFXMDICHILDWNDEX/CMDIChildWndEx::OnSetPreviewMode", "AFXMDICHILDWNDEX/CMDIChildWndEx::OnTaskbarTabThumbnailActivate", "AFXMDICHILDWNDEX/CMDIChildWndEx::OnTaskbarTabThumbnailMouseActivate", "AFXMDICHILDWNDEX/CMDIChildWndEx::OnTaskbarTabThumbnailStretch", "AFXMDICHILDWNDEX/CMDIChildWndEx::OnUpdateFrameTitle", "AFXMDICHILDWNDEX/CMDIChildWndEx::PaneFromPoint", "AFXMDICHILDWNDEX/CMDIChildWndEx::RecalcLayout", "AFXMDICHILDWNDEX/CMDIChildWndEx::RegisterTaskbarTab", "AFXMDICHILDWNDEX/CMDIChildWndEx::RemovePaneFromDockManager", "AFXMDICHILDWNDEX/CMDIChildWndEx::SetRelatedTabGroup", "AFXMDICHILDWNDEX/CMDIChildWndEx::SetTaskbarTabActive", "AFXMDICHILDWNDEX/CMDIChildWndEx::SetTaskbarTabOrder", "AFXMDICHILDWNDEX/CMDIChildWndEx::SetTaskbarTabProperties", "AFXMDICHILDWNDEX/CMDIChildWndEx::SetTaskbarThumbnailClipRect", "AFXMDICHILDWNDEX/CMDIChildWndEx::ShowPane", "AFXMDICHILDWNDEX/CMDIChildWndEx::UnregisterTaskbarTab", "AFXMDICHILDWNDEX/CMDIChildWndEx::UpdateTaskbarTabIcon"] helpviewer_keywords: ["CMDIChildWndEx [MFC], ActivateTopLevelFrame", "CMDIChildWndEx [MFC], AddPane", "CMDIChildWndEx [MFC], AddTabbedPane", "CMDIChildWndEx [MFC], AdjustDockingLayout", "CMDIChildWndEx [MFC], CanShowOnMDITabs", "CMDIChildWndEx [MFC], CanShowOnTaskBarTabs", "CMDIChildWndEx [MFC], CanShowOnWindowsList", "CMDIChildWndEx [MFC], DockPane", "CMDIChildWndEx [MFC], DockPaneLeftOf", "CMDIChildWndEx [MFC], EnableAutoHidePanes", "CMDIChildWndEx [MFC], EnableDocking", "CMDIChildWndEx [MFC], EnableTaskbarThumbnailClipRect", "CMDIChildWndEx [MFC], GetDockingManager", "CMDIChildWndEx [MFC], GetDocumentName", "CMDIChildWndEx [MFC], GetFrameIcon", "CMDIChildWndEx [MFC], GetFrameText", "CMDIChildWndEx [MFC], GetPane", "CMDIChildWndEx [MFC], GetRelatedTabGroup", "CMDIChildWndEx [MFC], GetTabbedPane", "CMDIChildWndEx [MFC], GetTabProxyWnd", "CMDIChildWndEx [MFC], GetTaskbarPreviewWnd", "CMDIChildWndEx [MFC], GetTaskbarThumbnailClipRect", "CMDIChildWndEx [MFC], GetToolbarButtonToolTipText", "CMDIChildWndEx [MFC], InsertPane", "CMDIChildWndEx [MFC], InvalidateIconicBitmaps", "CMDIChildWndEx [MFC], IsPointNearDockSite", "CMDIChildWndEx [MFC], IsReadOnly", "CMDIChildWndEx [MFC], IsRegisteredWithTaskbarTabs", "CMDIChildWndEx [MFC], IsTabbedPane", "CMDIChildWndEx [MFC], IsTaskbarTabsSupportEnabled", "CMDIChildWndEx [MFC], IsTaskbarThumbnailClipRectEnabled", "CMDIChildWndEx [MFC], m_dwDefaultTaskbarTabPropertyFlags", "CMDIChildWndEx [MFC], OnGetIconicLivePreviewBitmap", "CMDIChildWndEx [MFC], OnGetIconicThumbnail", "CMDIChildWndEx [MFC], OnMoveMiniFrame", "CMDIChildWndEx [MFC], OnPressTaskbarThmbnailCloseButton", "CMDIChildWndEx [MFC], OnSetPreviewMode", "CMDIChildWndEx [MFC], OnTaskbarTabThumbnailActivate", "CMDIChildWndEx [MFC], OnTaskbarTabThumbnailMouseActivate", "CMDIChildWndEx [MFC], OnTaskbarTabThumbnailStretch", "CMDIChildWndEx [MFC], OnUpdateFrameTitle", "CMDIChildWndEx [MFC], PaneFromPoint", "CMDIChildWndEx [MFC], RecalcLayout", "CMDIChildWndEx [MFC], RegisterTaskbarTab", "CMDIChildWndEx [MFC], RemovePaneFromDockManager", "CMDIChildWndEx [MFC], SetRelatedTabGroup", "CMDIChildWndEx [MFC], SetTaskbarTabActive", "CMDIChildWndEx [MFC], SetTaskbarTabOrder", "CMDIChildWndEx [MFC], SetTaskbarTabProperties", "CMDIChildWndEx [MFC], SetTaskbarThumbnailClipRect", "CMDIChildWndEx [MFC], ShowPane", "CMDIChildWndEx [MFC], UnregisterTaskbarTab", "CMDIChildWndEx [MFC], UpdateTaskbarTabIcon"] -ms.assetid: d39fec06-0bd6-4271-917d-35aae3b24d8e --- # CMDIChildWndEx Class @@ -62,7 +61,7 @@ class CMDIChildWndEx : public CMDIChildWnd |[CMDIChildWndEx::OnGetIconicLivePreviewBitmap](#ongeticoniclivepreviewbitmap)|Called by the framework when it needs to obtain a bitmap for live preview of MDI child.| |[CMDIChildWndEx::OnGetIconicThumbnail](#ongeticonicthumbnail)|Called by the framework when it needs to obtain a bitmap for iconic thumbnail of MDI child.| |[CMDIChildWndEx::OnMoveMiniFrame](#onmoveminiframe)|Called by the framework to move a mini-frame window.| -|[CMDIChildWndEx::OnPressTaskbarThmbnailCloseButton](#onpresstaskbarthmbnailclosebutton)|Called by the framework when the user presses close button on Taskbar tab thumbnail..| +|[CMDIChildWndEx::OnPressTaskbarThmbnailCloseButton](#onpresstaskbarthmbnailclosebutton)|Called by the framework when the user presses close button on Taskbar tab thumbnail.| |[CMDIChildWndEx::OnSetPreviewMode](#onsetpreviewmode)|Called by the framework to enter or exit print preview mode.| |[CMDIChildWndEx::OnTaskbarTabThumbnailActivate](#ontaskbartabthumbnailactivate)|Called by the framework when the Taskbar tab thumbnail should process WM_ACTIVATE message.| |[CMDIChildWndEx::OnTaskbarTabThumbnailMouseActivate](#ontaskbartabthumbnailmouseactivate)|Called by the framework when the Taskbar tab thumbnail should process WM_MOUSEACTIVATE message.| diff --git a/docs/mfc/reference/cmfcribbonbar-class.md b/docs/mfc/reference/cmfcribbonbar-class.md index a0eb85dd1a4..f3a5d7895eb 100644 --- a/docs/mfc/reference/cmfcribbonbar-class.md +++ b/docs/mfc/reference/cmfcribbonbar-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: CMFCRibbonBar Class" title: "CMFCRibbonBar Class" +description: "Learn more about: CMFCRibbonBar Class" ms.date: "11/04/2016" f1_keywords: ["CMFCRibbonBar", "AFXRIBBONBAR/CMFCRibbonBar", "AFXRIBBONBAR/CMFCRibbonBar::ActivateContextCategory", "AFXRIBBONBAR/CMFCRibbonBar::AddCategory", "AFXRIBBONBAR/CMFCRibbonBar::AddContextCategory", "AFXRIBBONBAR/CMFCRibbonBar::AddMainCategory", "AFXRIBBONBAR/CMFCRibbonBar::AddPrintPreviewCategory", "AFXRIBBONBAR/CMFCRibbonBar::AddQATOnlyCategory", "AFXRIBBONBAR/CMFCRibbonBar::AddToTabs", "AFXRIBBONBAR/CMFCRibbonBar::CreateEx", "AFXRIBBONBAR/CMFCRibbonBar::Create", "AFXRIBBONBAR/CMFCRibbonBar::DeactivateKeyboardFocus", "AFXRIBBONBAR/CMFCRibbonBar::DrawMenuImage", "AFXRIBBONBAR/CMFCRibbonBar::DWMCompositionChanged", "AFXRIBBONBAR/CMFCRibbonBar::EnableKeyTips", "AFXRIBBONBAR/CMFCRibbonBar::EnablePrintPreview", "AFXRIBBONBAR/CMFCRibbonBar::EnableToolTips", "AFXRIBBONBAR/CMFCRibbonBar::FindByData", "AFXRIBBONBAR/CMFCRibbonBar::FindByID", "AFXRIBBONBAR/CMFCRibbonBar::FindCategoryIndexByData", "AFXRIBBONBAR/CMFCRibbonBar::ForceRecalcLayout", "AFXRIBBONBAR/CMFCRibbonBar::GetActiveCategory", "AFXRIBBONBAR/CMFCRibbonBar::GetCaptionHeight", "AFXRIBBONBAR/CMFCRibbonBar::GetCategory", "AFXRIBBONBAR/CMFCRibbonBar::GetCategoryCount", "AFXRIBBONBAR/CMFCRibbonBar::GetCategoryHeight", "AFXRIBBONBAR/CMFCRibbonBar::GetCategoryIndex", "AFXRIBBONBAR/CMFCRibbonBar::GetContextName", "AFXRIBBONBAR/CMFCRibbonBar::GetDroppedDown", "AFXRIBBONBAR/CMFCRibbonBar::GetElementsByID", "AFXRIBBONBAR/CMFCRibbonBar::GetApplicationButton", "AFXRIBBONBAR/CMFCRibbonBar::GetFocused", "AFXRIBBONBAR/CMFCRibbonBar::GetHideFlags", "AFXRIBBONBAR/CMFCRibbonBar::GetItemIDsList", "AFXRIBBONBAR/CMFCRibbonBar::GetKeyboardNavigationLevel", "AFXRIBBONBAR/CMFCRibbonBar::GetKeyboardNavLevelCurrent", "AFXRIBBONBAR/CMFCRibbonBar::GetKeyboardNavLevelParent", "AFXRIBBONBAR/CMFCRibbonBar::GetMainCategory", "AFXRIBBONBAR/CMFCRibbonBar::GetQATCommandsLocation", "AFXRIBBONBAR/CMFCRibbonBar::GetQATDroppedDown", "AFXRIBBONBAR/CMFCRibbonBar::GetQuickAccessCommands", "AFXRIBBONBAR/CMFCRibbonBar::GetQuickAccessToolbarLocation", "AFXRIBBONBAR/CMFCRibbonBar::GetTabTrancateRatio", "AFXRIBBONBAR/CMFCRibbonBar::GetTooltipFixedWidthLargeImage", "AFXRIBBONBAR/CMFCRibbonBar::GetTooltipFixedWidthRegular", "AFXRIBBONBAR/CMFCRibbonBar::GetVisibleCategoryCount", "AFXRIBBONBAR/CMFCRibbonBar::HideAllContextCategories", "AFXRIBBONBAR/CMFCRibbonBar::HideKeyTips", "AFXRIBBONBAR/CMFCRibbonBar::HitTest", "AFXRIBBONBAR/CMFCRibbonBar::IsKeyTipEnabled", "AFXRIBBONBAR/CMFCRibbonBar::IsMainRibbonBar", "AFXRIBBONBAR/CMFCRibbonBar::IsPrintPreviewEnabled", "AFXRIBBONBAR/CMFCRibbonBar::IsQATEmpty", "AFXRIBBONBAR/CMFCRibbonBar::IsQuickAccessToolbarOnTop", "AFXRIBBONBAR/CMFCRibbonBar::IsReplaceFrameCaption", "AFXRIBBONBAR/CMFCRibbonBar::IsShowGroupBorder", "AFXRIBBONBAR/CMFCRibbonBar::IsToolTipDescrEnabled", "AFXRIBBONBAR/CMFCRibbonBar::IsToolTipEnabled", "AFXRIBBONBAR/CMFCRibbonBar::IsTransparentCaption", "AFXRIBBONBAR/CMFCRibbonBar::IsWindows7Look", "AFXRIBBONBAR/CMFCRibbonBar::LoadFromResource", "AFXRIBBONBAR/CMFCRibbonBar::OnClickButton", "AFXRIBBONBAR/CMFCRibbonBar::OnEditContextMenu", "AFXRIBBONBAR/CMFCRibbonBar::OnRTLChanged", "AFXRIBBONBAR/CMFCRibbonBar::OnSetAccData", "AFXRIBBONBAR/CMFCRibbonBar::OnShowRibbonContextMenu", "AFXRIBBONBAR/CMFCRibbonBar::OnShowRibbonQATMenu", "AFXRIBBONBAR/CMFCRibbonBar::OnSysKeyDown", "AFXRIBBONBAR/CMFCRibbonBar::OnSysKeyUp", "AFXRIBBONBAR/CMFCRibbonBar::PopTooltip", "AFXRIBBONBAR/CMFCRibbonBar::PreTranslateMessage", "AFXRIBBONBAR/CMFCRibbonBar::RecalcLayout", "AFXRIBBONBAR/CMFCRibbonBar::RemoveAllCategories", "AFXRIBBONBAR/CMFCRibbonBar::RemoveAllFromTabs", "AFXRIBBONBAR/CMFCRibbonBar::RemoveCategory", "AFXRIBBONBAR/CMFCRibbonBar::SaveToXMLBuffer", "AFXRIBBONBAR/CMFCRibbonBar::SaveToXMLFile", "AFXRIBBONBAR/CMFCRibbonBar::SetActiveCategory", "AFXRIBBONBAR/CMFCRibbonBar::SetActiveMDIChild", "AFXRIBBONBAR/CMFCRibbonBar::SetElementKeys", "AFXRIBBONBAR/CMFCRibbonBar::SetApplicationButton", "AFXRIBBONBAR/CMFCRibbonBar::SetKeyboardNavigationLevel", "AFXRIBBONBAR/CMFCRibbonBar::SetMaximizeMode", "AFXRIBBONBAR/CMFCRibbonBar::SetQuickAccessCommands", "AFXRIBBONBAR/CMFCRibbonBar::SetQuickAccessDefaultState", "AFXRIBBONBAR/CMFCRibbonBar::SetQuickAccessToolbarOnTop", "AFXRIBBONBAR/CMFCRibbonBar::SetTooltipFixedWidth", "AFXRIBBONBAR/CMFCRibbonBar::SetWindows7Look", "AFXRIBBONBAR/CMFCRibbonBar::ShowCategory", "AFXRIBBONBAR/CMFCRibbonBar::ShowContextCategories", "AFXRIBBONBAR/CMFCRibbonBar::ShowKeyTips", "AFXRIBBONBAR/CMFCRibbonBar::ToggleMimimizeState", "AFXRIBBONBAR/CMFCRibbonBar::TranslateChar"] helpviewer_keywords: ["CMFCRibbonBar [MFC], ActivateContextCategory", "CMFCRibbonBar [MFC], AddCategory", "CMFCRibbonBar [MFC], AddContextCategory", "CMFCRibbonBar [MFC], AddMainCategory", "CMFCRibbonBar [MFC], AddPrintPreviewCategory", "CMFCRibbonBar [MFC], AddQATOnlyCategory", "CMFCRibbonBar [MFC], AddToTabs", "CMFCRibbonBar [MFC], CreateEx", "CMFCRibbonBar [MFC], Create", "CMFCRibbonBar [MFC], DeactivateKeyboardFocus", "CMFCRibbonBar [MFC], DrawMenuImage", "CMFCRibbonBar [MFC], DWMCompositionChanged", "CMFCRibbonBar [MFC], EnableKeyTips", "CMFCRibbonBar [MFC], EnablePrintPreview", "CMFCRibbonBar [MFC], EnableToolTips", "CMFCRibbonBar [MFC], FindByData", "CMFCRibbonBar [MFC], FindByID", "CMFCRibbonBar [MFC], FindCategoryIndexByData", "CMFCRibbonBar [MFC], ForceRecalcLayout", "CMFCRibbonBar [MFC], GetActiveCategory", "CMFCRibbonBar [MFC], GetCaptionHeight", "CMFCRibbonBar [MFC], GetCategory", "CMFCRibbonBar [MFC], GetCategoryCount", "CMFCRibbonBar [MFC], GetCategoryHeight", "CMFCRibbonBar [MFC], GetCategoryIndex", "CMFCRibbonBar [MFC], GetContextName", "CMFCRibbonBar [MFC], GetDroppedDown", "CMFCRibbonBar [MFC], GetElementsByID", "CMFCRibbonBar [MFC], GetApplicationButton", "CMFCRibbonBar [MFC], GetFocused", "CMFCRibbonBar [MFC], GetHideFlags", "CMFCRibbonBar [MFC], GetItemIDsList", "CMFCRibbonBar [MFC], GetKeyboardNavigationLevel", "CMFCRibbonBar [MFC], GetKeyboardNavLevelCurrent", "CMFCRibbonBar [MFC], GetKeyboardNavLevelParent", "CMFCRibbonBar [MFC], GetMainCategory", "CMFCRibbonBar [MFC], GetQATCommandsLocation", "CMFCRibbonBar [MFC], GetQATDroppedDown", "CMFCRibbonBar [MFC], GetQuickAccessCommands", "CMFCRibbonBar [MFC], GetQuickAccessToolbarLocation", "CMFCRibbonBar [MFC], GetTabTrancateRatio", "CMFCRibbonBar [MFC], GetTooltipFixedWidthLargeImage", "CMFCRibbonBar [MFC], GetTooltipFixedWidthRegular", "CMFCRibbonBar [MFC], GetVisibleCategoryCount", "CMFCRibbonBar [MFC], HideAllContextCategories", "CMFCRibbonBar [MFC], HideKeyTips", "CMFCRibbonBar [MFC], HitTest", "CMFCRibbonBar [MFC], IsKeyTipEnabled", "CMFCRibbonBar [MFC], IsMainRibbonBar", "CMFCRibbonBar [MFC], IsPrintPreviewEnabled", "CMFCRibbonBar [MFC], IsQATEmpty", "CMFCRibbonBar [MFC], IsQuickAccessToolbarOnTop", "CMFCRibbonBar [MFC], IsReplaceFrameCaption", "CMFCRibbonBar [MFC], IsShowGroupBorder", "CMFCRibbonBar [MFC], IsToolTipDescrEnabled", "CMFCRibbonBar [MFC], IsToolTipEnabled", "CMFCRibbonBar [MFC], IsTransparentCaption", "CMFCRibbonBar [MFC], IsWindows7Look", "CMFCRibbonBar [MFC], LoadFromResource", "CMFCRibbonBar [MFC], OnClickButton", "CMFCRibbonBar [MFC], OnEditContextMenu", "CMFCRibbonBar [MFC], OnRTLChanged", "CMFCRibbonBar [MFC], OnSetAccData", "CMFCRibbonBar [MFC], OnShowRibbonContextMenu", "CMFCRibbonBar [MFC], OnShowRibbonQATMenu", "CMFCRibbonBar [MFC], OnSysKeyDown", "CMFCRibbonBar [MFC], OnSysKeyUp", "CMFCRibbonBar [MFC], PopTooltip", "CMFCRibbonBar [MFC], PreTranslateMessage", "CMFCRibbonBar [MFC], RecalcLayout", "CMFCRibbonBar [MFC], RemoveAllCategories", "CMFCRibbonBar [MFC], RemoveAllFromTabs", "CMFCRibbonBar [MFC], RemoveCategory", "CMFCRibbonBar [MFC], SaveToXMLBuffer", "CMFCRibbonBar [MFC], SaveToXMLFile", "CMFCRibbonBar [MFC], SetActiveCategory", "CMFCRibbonBar [MFC], SetActiveMDIChild", "CMFCRibbonBar [MFC], SetElementKeys", "CMFCRibbonBar [MFC], SetApplicationButton", "CMFCRibbonBar [MFC], SetKeyboardNavigationLevel", "CMFCRibbonBar [MFC], SetMaximizeMode", "CMFCRibbonBar [MFC], SetQuickAccessCommands", "CMFCRibbonBar [MFC], SetQuickAccessDefaultState", "CMFCRibbonBar [MFC], SetQuickAccessToolbarOnTop", "CMFCRibbonBar [MFC], SetTooltipFixedWidth", "CMFCRibbonBar [MFC], SetWindows7Look", "CMFCRibbonBar [MFC], ShowCategory", "CMFCRibbonBar [MFC], ShowContextCategories", "CMFCRibbonBar [MFC], ShowKeyTips", "CMFCRibbonBar [MFC], ToggleMimimizeState", "CMFCRibbonBar [MFC], TranslateChar"] -ms.assetid: a65d06fa-1a28-4cc0-8971-bc9d7c9198fe --- # `CMFCRibbonBar` Class @@ -119,7 +118,7 @@ class CMFCRibbonBar : public CPane |[`CMFCRibbonBar::ShowCategory`](#showcategory)|Shows or hides the specified ribbon category.| |[`CMFCRibbonBar::ShowContextCategories`](#showcontextcategories)|Shows or hides the context categories that have the specified ID.| |[`CMFCRibbonBar::ShowKeyTips`](#showkeytips)|| -|[`CMFCRibbonBar::ToggleMimimizeState`](#togglemimimizestate)|Toggles the ribbon bar between the minimized and maximized states..| +|[`CMFCRibbonBar::ToggleMimimizeState`](#togglemimimizestate)|Toggles the ribbon bar between the minimized and maximized states.| |[`CMFCRibbonBar::TranslateChar`](#translatechar)|| ## Remarks From 7f50092fad900e642d6856d810d45b06220b38f0 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 14 Mar 2025 16:46:39 +0800 Subject: [PATCH 0270/2255] Adjust `is_error_code_enum` syntax --- docs/standard-library/is-error-code-enum-class.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/standard-library/is-error-code-enum-class.md b/docs/standard-library/is-error-code-enum-class.md index 320d487d286..68b900c9dd4 100644 --- a/docs/standard-library/is-error-code-enum-class.md +++ b/docs/standard-library/is-error-code-enum-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: is_error_code_enum Class" title: "is_error_code_enum Class" +description: "Learn more about: is_error_code_enum Class" ms.date: "11/04/2016" f1_keywords: ["system_error/std::is_error_code_enum"] helpviewer_keywords: ["is_error_code_enum class"] -ms.assetid: cee5be2d-7c20-4cec-a352-1ab8b7d32601 --- # is_error_code_enum Class @@ -13,8 +12,8 @@ Represents a type predicate that tests for the [error_code](../standard-library/ ## Syntax ```cpp -template <_Enum> - class is_error_code_enum; +template +struct is_error_code_enum; ``` ## Remarks From db3990a02ed41b3170dd8641318aedfddc4ed417 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 14 Mar 2025 16:49:33 +0800 Subject: [PATCH 0271/2255] Adjust `is_error_condition_enum` syntax --- docs/standard-library/is-error-condition-enum-class.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/standard-library/is-error-condition-enum-class.md b/docs/standard-library/is-error-condition-enum-class.md index cf277036fe6..f5599c93e10 100644 --- a/docs/standard-library/is-error-condition-enum-class.md +++ b/docs/standard-library/is-error-condition-enum-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: is_error_condition_enum Class" title: "is_error_condition_enum Class" +description: "Learn more about: is_error_condition_enum Class" ms.date: "11/04/2016" f1_keywords: ["system_error/std::is_error_condition_enum"] helpviewer_keywords: ["is_error_condition_enum class"] -ms.assetid: 752bb87a-c61c-4304-9254-5aaf228b59c0 --- # is_error_condition_enum Class @@ -13,8 +12,8 @@ Represents a type predicate that tests for the [error_condition](../standard-lib ## Syntax ```cpp -template <_Enum> - class is_error_condition_enum; +template +struct is_error_condition_enum; ``` ## Remarks From 421e86a36daaf423b672c703cdf934e2f90ada79 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 14 Mar 2025 17:40:24 +0800 Subject: [PATCH 0272/2255] Improve `` functions page --- docs/standard-library/system-error-functions.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/standard-library/system-error-functions.md b/docs/standard-library/system-error-functions.md index af053fb4cb2..cfb489fbeaf 100644 --- a/docs/standard-library/system-error-functions.md +++ b/docs/standard-library/system-error-functions.md @@ -22,16 +22,20 @@ The `generic_category` object is an implementation of [error_category](../standa ## is_error_code_enum_v +A helper variable template for the [`is_error_code_enum`](is-error-code-enum-class.md) value. + ```cpp template - inline constexpr bool is_error_code_enum_v = is_error_code_enum::value; +constexpr bool is_error_code_enum_v = is_error_code_enum::value; ``` ## is_error_condition_enum_v +A helper variable template for the [`is_error_condition_enum`](is-error-condition-enum-class.md) value. + ```cpp template - inline constexpr bool is_error_condition_enum_v = is_error_condition_enum::value; +constexpr bool is_error_condition_enum_v = is_error_condition_enum::value; ``` ## make_error_code @@ -64,7 +68,7 @@ error_condition make_error_condition(std::errc error) noexcept; ### Parameters *error*\ -The `std::errc` enumeration value to store in the error code object. +The `std::errc` enumeration value to store in the error condition object. ### Return Value @@ -74,7 +78,7 @@ The error condition object. ## system_category -Represents the category for errors caused by low-level system overflows. +Represents the category for operating system errors. ```cpp const error_category& system_category() noexcept; From a7968f27670b1943447a814c45490650c2fb595b Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 14 Mar 2025 17:42:59 +0800 Subject: [PATCH 0273/2255] Clean up `` functions page --- docs/standard-library/system-error-functions.md | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/docs/standard-library/system-error-functions.md b/docs/standard-library/system-error-functions.md index cfb489fbeaf..6de6c2d6a28 100644 --- a/docs/standard-library/system-error-functions.md +++ b/docs/standard-library/system-error-functions.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: functions" title: " functions" +description: "Learn more about: functions" ms.date: "03/15/2019" f1_keywords: ["system_error/std::generic_category", "system_error/std::make_error_code", "system_error/std::make_error_condition", "system_error/std::system_category"] -ms.assetid: 57d6f15f-f0b7-4e2f-80fe-31d3c320ee33 helpviewer_keywords: ["std::generic_category", "std::make_error_code", "std::make_error_condition", "std::system_category"] --- # `` functions @@ -18,7 +17,7 @@ const error_category& generic_category() noexcept; ### Remarks -The `generic_category` object is an implementation of [error_category](../standard-library/error-category-class.md). +The `generic_category` object is an implementation of [error_category](error-category-class.md). ## is_error_code_enum_v @@ -55,8 +54,6 @@ The `std::errc` enumeration value to store in the error code object. The error code object. -### Remarks - ## make_error_condition Creates an error condition object. @@ -74,8 +71,6 @@ The `std::errc` enumeration value to store in the error condition object. The error condition object. -### Remarks - ## system_category Represents the category for operating system errors. @@ -86,4 +81,4 @@ const error_category& system_category() noexcept; ### Remarks -The `system_category` object is an implementation of [error_category](../standard-library/error-category-class.md). +The `system_category` object is an implementation of [error_category](error-category-class.md). From 2850e2e763e18218f4b31d3acc025f5754f9ef56 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 14 Mar 2025 18:25:18 +0800 Subject: [PATCH 0274/2255] Fix more issues around backticks --- docs/cpp/bstr-t-assign.md | 4 ++-- docs/mfc/tn038-mfc-ole-iunknown-implementation.md | 5 ++--- docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md | 2 +- docs/standard-library/chrono-functions.md | 4 ++-- docs/standard-library/month-weekday-last-class.md | 4 ++-- 5 files changed, 9 insertions(+), 10 deletions(-) diff --git a/docs/cpp/bstr-t-assign.md b/docs/cpp/bstr-t-assign.md index 565b248630a..801be55d0ab 100644 --- a/docs/cpp/bstr-t-assign.md +++ b/docs/cpp/bstr-t-assign.md @@ -1,11 +1,11 @@ --- -description: "Learn more about: _bstr_t::Assign" title: "_bstr_t::Assign" +description: "Learn more about: _bstr_t::Assign" ms.date: 02/02/2021 f1_keywords: ["_bstr_t::Assign"] helpviewer_keywords: ["Assign method [C++]"] --- -# _`bstr_t::Assign` +# `_bstr_t::Assign` **Microsoft Specific** diff --git a/docs/mfc/tn038-mfc-ole-iunknown-implementation.md b/docs/mfc/tn038-mfc-ole-iunknown-implementation.md index a7e7375d137..f9dd6560fb7 100644 --- a/docs/mfc/tn038-mfc-ole-iunknown-implementation.md +++ b/docs/mfc/tn038-mfc-ole-iunknown-implementation.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: TN038: MFC/OLE IUnknown Implementation" title: "TN038: MFC-OLE IUnknown Implementation" +description: "Learn more about: TN038: MFC/OLE IUnknown Implementation" ms.date: "06/28/2018" helpviewer_keywords: ["aggregation macros [MFC]", "COM interfaces, base interface", "IUnknown interface", "END_INTERFACE_MAP macro [MFC]", "TN038", "BEGIN_INTERFACE_PART macro [MFC]", "DECLARE_INTERFACE_MAP macro [MFC]", "BEGIN_INTERFACE_MAP macro [MFC]", "OLE [MFC], implementing IUnknown interface", "METHOD_PROLOGUE macro [MFC]", "STDMETHOD macro [MFC]", "END_INTERFACE_PART macro [MFC]", "INTERFACE_PART macro"] -ms.assetid: 19d946ba-beaf-4881-85c6-0b598d7f6f11 --- # TN038: MFC/OLE IUnknown Implementation @@ -518,7 +517,7 @@ END_INTERFACE_PART(MyAdviseSink) would define a local class called XMyAdviseSink derived from IAdviseSink, and a member of the class in which it is declared called m_xMyAdviseSink.Note: > [!NOTE] -> The lines beginning with `STDMETHOD`_ are essentially copied from OLE2.H and modified slightly. Copying them from OLE2.H can reduce errors that are hard to resolve. +> The lines beginning with `STDMETHOD_` are essentially copied from OLE2.H and modified slightly. Copying them from OLE2.H can reduce errors that are hard to resolve. ### BEGIN_INTERFACE_MAP and END_INTERFACE_MAP — Macro Descriptions 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 3ae34b23c80..77712f958c0 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 @@ -560,7 +560,7 @@ Select Standard Library (STL) improvements are highlighted here. For a comprehen - Added debugging visualizers to improve how the following types are displayed: `source_location`, `bind_front()`, `u8string` (and its iterators), `default_sentinel_t`, `unreachable_sentinel_t`, `ranges::empty_view`, `ranges::single_view`, `ranges::iota_view` (and its iterator/sentinel), `ranges::ref_view`, `thread`, `thread::id`, `jthread`, and `filesystem::path` - Added `[[nodiscard]]` to the `stoi()` family of functions in `` and to various functions in `` such as the `collate` member functions, `has_facet()`, and the `isalnum()` and `tolower()` families. - [P0980R1](https://wg21.link/P0980R1) Made `std::string` `constexpr` in VS 2019 16.10. Now supported for Clang. -- [P1004R2](https://wg21.link/P1004R2) Made `std::vector` `constexpr`in VS 2019 16.10. Now supported for Clang. +- [P1004R2](https://wg21.link/P1004R2) Made `std::vector` `constexpr` in VS 2019 16.10. Now supported for Clang. **Highlighted C++23 features** diff --git a/docs/standard-library/chrono-functions.md b/docs/standard-library/chrono-functions.md index 5f4e4a25874..49a164d1935 100644 --- a/docs/standard-library/chrono-functions.md +++ b/docs/standard-library/chrono-functions.md @@ -563,7 +563,7 @@ int main() ### Remarks -**7)** If `%Z` is used and successfully parsed, that value will be assigned to `*abbrev `if `abbrev` is non-null. If `%z` (or a modified variant) is used and successfully parsed, that value will be assigned to `*offset` if `offset` is non-null. +**7)** If `%Z` is used and successfully parsed, that value will be assigned to `*abbrev` if `abbrev` is non-null. If `%z` (or a modified variant) is used and successfully parsed, that value will be assigned to `*offset` if `offset` is non-null. **12)** If `%Z` is used and successfully parsed, that value will be assigned to `*abbrev` if `abbrev` is non-null. If `%z` (or a modified variant) is used and successfully parsed, that value will be assigned to `*offset` if `offset` is non-null. @@ -987,4 +987,4 @@ Unless `ToDuration` is a specialization of [`duration`](../standard-library/dura [`chrono` operators](./chrono-operators.md)\ [`duration` class](./duration-class.md)\ [`time_point` class](./time-point-class.md)\ -[`time_zone` class](./time-zone-class.md) \ No newline at end of file +[`time_zone` class](./time-zone-class.md) diff --git a/docs/standard-library/month-weekday-last-class.md b/docs/standard-library/month-weekday-last-class.md index f217ddc7548..34770527f74 100644 --- a/docs/standard-library/month-weekday-last-class.md +++ b/docs/standard-library/month-weekday-last-class.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: month_weekday_last Class" title: "month_weekday_last class" +description: "Learn more about: month_weekday_last Class" ms.date: "6/28/2021" f1_keywords: ["chrono/std::chrono::month_weekday_last", "chrono/std::chrono::month_weekday_last::ok", "std::chrono::month_weekday_last::month_weekday_last", "chrono/std::chrono::month_weekday_last::ok", "chrono/std::chrono::month_weekday_last::month"] helpviewer_keywords: ["std::chrono [C++], month_weekday_last"] @@ -59,7 +59,7 @@ constexpr month_weekday_last(const month& m, const weekday_last& wdl) noexcept; The `month` value for the created `month_weekday_last` class. *`wdl`*\ -The` weekday_last` value for the created `month_weekday_last` class. +The `weekday_last` value for the created `month_weekday_last` class. ## Remarks: Constructor From 45dc7c4ea5fd8cf8ee32292805b5e70316265c6d Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 14 Mar 2025 21:58:38 +0800 Subject: [PATCH 0275/2255] Clean up empty row in tables --- docs/dotnet/auto-gcroot-class.md | 3 +-- docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/dotnet/auto-gcroot-class.md b/docs/dotnet/auto-gcroot-class.md index 00b3976e160..fedee2dee83 100644 --- a/docs/dotnet/auto-gcroot-class.md +++ b/docs/dotnet/auto-gcroot-class.md @@ -30,8 +30,7 @@ The managed type to be embedded. |Name|Description| |---------|-----------| |[auto_gcroot::auto_gcroot](#auto-gcroot)|The `auto_gcroot` constructor.| -|[auto_gcroot::~auto_gcroot](#tilde-auto-gcroot)|The `auto_gcroot` destructor. -| +|[auto_gcroot::~auto_gcroot](#tilde-auto-gcroot)|The `auto_gcroot` destructor.| ### Public methods 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 3ae34b23c80..bca6f4b9f02 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 @@ -25,8 +25,7 @@ Visual Studio 2022 brings many updates and fixes to the Microsoft C++ compiler a | What's new for C++ developers | [What's New for C++ Developers in Visual Studio 2022 17.13](https://devblogs.microsoft.com/cppblog/whats-new-for-c-developers-in-visual-studio-2022-17-13/) | | Standard Library (STL) merged C++26 and C++23 features, LWG issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.13](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-1713) | | New features in the IDE |[Visual Studio 2022 version 17.13 Release Notes](/visualstudio/releases/2022/release-notes) | -| C++ language updates | [MSVC compiler updates in Visual Studio 2022 17.13](https://devblogs.microsoft.com/cppblog/msvc-compiler-updates-in-visual-studio-2022-version-17-13/) - | +| C++ language updates | [MSVC compiler updates in Visual Studio 2022 17.13](https://devblogs.microsoft.com/cppblog/msvc-compiler-updates-in-visual-studio-2022-version-17-13/) | | C++ language conformance improvements | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022 17.13](cpp-conformance-improvements.md#improvements_1713) | A quick highlight of some of the new features: From 9c874a3a086a6c03d64710d26a6d4fc264c6701f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 14 Mar 2025 22:01:14 +0800 Subject: [PATCH 0276/2255] Minor updates for `auto_gcroot` class reference --- docs/dotnet/auto-gcroot-class.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/docs/dotnet/auto-gcroot-class.md b/docs/dotnet/auto-gcroot-class.md index fedee2dee83..073b6c06ab5 100644 --- a/docs/dotnet/auto-gcroot-class.md +++ b/docs/dotnet/auto-gcroot-class.md @@ -1,11 +1,10 @@ --- -description: "Learn more about: auto_gcroot Class" title: "auto_gcroot Class" +description: "Learn more about: auto_gcroot Class" ms.date: "01/16/2019" ms.topic: "reference" f1_keywords: ["msclr::auto_gcroot::auto_gcroot", "msclr::auto_gcroot::attach", "msclr::auto_gcroot::get", "msclr::auto_gcroot::release", "msclr::auto_gcroot::reset", "msclr::auto_gcroot::swap", "msclr::auto_gcroot::operator=", "msclr::auto_gcroot::operator->", "msclr::auto_gcroot::operator!", "msclr::auto_gcroot::operator auto_gcroot"] helpviewer_keywords: ["msclr::auto_gcroot"] -ms.assetid: b5790912-265d-463e-a486-47302e91042a --- # auto_gcroot Class @@ -20,7 +19,7 @@ class auto_gcroot; ### Parameters -*_element_type*
+*_element_type*\ The managed type to be embedded. ## Members @@ -77,10 +76,10 @@ auto_gcroot( ### Parameters -*_ptr*
+*_ptr*\ The object to own. -*_right*
+*_right*\ An existing `auto_gcroot`. ### Remarks @@ -240,7 +239,7 @@ auto_gcroot<_element_type> & attach( ### Parameters -*_right*
+*_right*\ The object to attach, or an `auto_gcroot` containing the object to attach. ### Return value @@ -451,7 +450,7 @@ void reset( ### Parameters -*_new_ptr*
+*_new_ptr*\ (Optional) The new object. ### Example @@ -516,7 +515,7 @@ void swap( ### Parameters -*_right*
+*_right*\ The `auto_gcroot` with which to swap objects. ### Example @@ -614,7 +613,7 @@ auto_gcroot<_element_type> & operator=( ### Parameters -*_right*
+*_right*\ The object or `auto_gcroot` to be assigned to the current `auto_gcroot`. ### Return value From f66b67eb7212ea0f2ba214ca03aa137dfe442942 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 14 Mar 2025 14:06:53 -0700 Subject: [PATCH 0277/2255] date --- docs/build/how-to-debug-a-release-build.md | 2 +- docs/build/reference/dynamic-deopt-linker.md | 2 +- docs/build/reference/dynamic-deopt.md | 2 +- docs/build/reference/linker-options.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/build/how-to-debug-a-release-build.md b/docs/build/how-to-debug-a-release-build.md index 0dbd505fc59..3063cfc32b2 100644 --- a/docs/build/how-to-debug-a-release-build.md +++ b/docs/build/how-to-debug-a-release-build.md @@ -1,7 +1,7 @@ --- description: "Learn more about: How to: Debug a Release Build" title: "How to: Debug a Release Build" -ms.date: 2/27/2025 +ms.date: 03/14/2025 helpviewer_keywords: ["debugging [C++], release builds", "release builds, debugging"] --- # How to: Debug a Release Build diff --git a/docs/build/reference/dynamic-deopt-linker.md b/docs/build/reference/dynamic-deopt-linker.md index 0f6f6d57097..21ad9d8744c 100644 --- a/docs/build/reference/dynamic-deopt-linker.md +++ b/docs/build/reference/dynamic-deopt-linker.md @@ -1,7 +1,7 @@ --- description: "Learn more about: /DYNAMICDEOPT (Support C++ Dynamic Debugging)" title: "/DYNAMICDEOPT (Support C++ Dynamic Debugging) (Preview)" -ms.date: 3/11/2025 +ms.date: 03/14/2025 f1_keywords: ["VC.Project.VCLinkerTool.GenerateDynamicDeoptInformation", "/dynamicdeopt"] helpviewer_keywords: ["DYNAMICDEOPT linker option", "/DYNAMICDEOPT linker option", "-DYNAMICDEOPT linker option", "c++ dynamic debugging"] --- diff --git a/docs/build/reference/dynamic-deopt.md b/docs/build/reference/dynamic-deopt.md index edf924acc7d..3b1d44b7662 100644 --- a/docs/build/reference/dynamic-deopt.md +++ b/docs/build/reference/dynamic-deopt.md @@ -1,7 +1,7 @@ --- title: "/dynamicdeopt (Enable C++ Dynamic Debugging (Preview))" description: "Use the Microsoft C++ compiler option /dynamicdeopt to use C++ Dynamic Debugging." -ms.date: 3/11/2025 +ms.date: 03/14/2025 f1_keywords: ["/dynamicdeopt", "VC.Project.VCNMakeTool.CompileAsManaged", "VC.Project.VCCLCompilerTool.CompileAsManaged"] helpviewer_keywords: ["cl.exe compiler, common language runtime option", "-dynamicdeopt compiler option [C++]", "dynamicdeopt compiler option [C++]", "/clr compiler option [C++]", "Managed Extensions for C++, compiling", "common language runtime, /clr compiler option"] --- diff --git a/docs/build/reference/linker-options.md b/docs/build/reference/linker-options.md index b78c835fdf0..5749d0c2364 100644 --- a/docs/build/reference/linker-options.md +++ b/docs/build/reference/linker-options.md @@ -1,7 +1,7 @@ --- title: "MSVC Linker options" description: "A list of the options supported by the Microsoft LINK linker." -ms.date: 3/11/2025 +ms.date: 03/14/2025 f1_keywords: ["link"] helpviewer_keywords: ["linker [C++]", "linker [C++], options listed", "libraries [C++], linking to COFF", "LINK tool [C++], linker options"] --- From d0aba4414d80849fa48220eaa48bb5aa7a5aa18c Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 14 Mar 2025 15:41:18 -0700 Subject: [PATCH 0278/2255] pr feedback --- docs/build/reference/dynamic-deopt-linker.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/build/reference/dynamic-deopt-linker.md b/docs/build/reference/dynamic-deopt-linker.md index 21ad9d8744c..21289559b78 100644 --- a/docs/build/reference/dynamic-deopt-linker.md +++ b/docs/build/reference/dynamic-deopt-linker.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: /DYNAMICDEOPT (Support C++ Dynamic Debugging)" title: "/DYNAMICDEOPT (Support C++ Dynamic Debugging) (Preview)" +description: "Learn more about: /DYNAMICDEOPT (Support C++ Dynamic Debugging)." ms.date: 03/14/2025 f1_keywords: ["VC.Project.VCLinkerTool.GenerateDynamicDeoptInformation", "/dynamicdeopt"] helpviewer_keywords: ["DYNAMICDEOPT linker option", "/DYNAMICDEOPT linker option", "-DYNAMICDEOPT linker option", "c++ dynamic debugging"] @@ -32,14 +32,14 @@ Builds the deoptimized output after building the optimized output instead of in This preview flag, available starting with Visual Studio 2022 Version 17.14 Preview 2, applies only to x64 projects. -### To set this linker option in the Visual Studio development environment +### Set this linker option in the Visual Studio development environment 1. Open the project's **Property Pages** dialog box. For details, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md). 1. Select the **Linker** > **Debugging** property page. -### To set this linker option programmatically +### Set this linker option programmatically -1. See . +- See . ## See also From a59d3ff01d2cb5f54adc738415aadb2027d8f5c0 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Fri, 14 Mar 2025 16:45:14 -0700 Subject: [PATCH 0279/2255] Learn Editor: Update string-and-character-literals-cpp.md --- docs/cpp/string-and-character-literals-cpp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cpp/string-and-character-literals-cpp.md b/docs/cpp/string-and-character-literals-cpp.md index 70addb2b9b1..ffc4f939dc9 100644 --- a/docs/cpp/string-and-character-literals-cpp.md +++ b/docs/cpp/string-and-character-literals-cpp.md @@ -331,7 +331,7 @@ const size_t byteSize = (wcslen(str) + 1) * sizeof(wchar_t); Notice that `strlen()` and `wcslen()` don't include the size of the terminating null character, whose size is equal to the element size of the string type: one byte on a `char*` or `char8_t*` string, two bytes on `wchar_t*` or `char16_t*` strings, and four bytes on `char32_t*` strings. -In versions of Visual Studio before Visual Studio 2022 version 17.0, the maximum length of a string literal is 65,535 bytes. This limit applies to both narrow string literals and wide string literals. In Visual Studio 2022 version 17.0 and later, this restriction is lifted and string length is limited by available resources. +In versions of Visual Studio before Visual Studio 2022 version 17.0, the maximum length of a string literal is 65,535 bytes after string concatenation. This limit applies to both narrow string literals and wide string literals. In Visual Studio 2022 version 17.0 and later, the length restriction after string concatenation is lifted, and is limited by available resources. The size limit before string concatenation remains at 16,384 bytes. ### Modifying string literals From e2848e1119d47acd7e01de5105cb77ca833bcb0f Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Fri, 14 Mar 2025 16:54:56 -0700 Subject: [PATCH 0280/2255] Refresh articles --- docs/build/cmake-projects-in-visual-studio.md | 125 ++++++++------- docs/build/media/cmake-build-errors.png | Bin 29212 -> 26094 bytes docs/build/media/cmake-cmakelists-error.png | Bin 35282 -> 30931 bytes docs/build/media/cmake-cmakelists.png | Bin 9670 -> 9294 bytes docs/build/media/cmake-install-2022.png | Bin 0 -> 16274 bytes docs/build/media/cmake-targets-view2.png | Bin 13659 -> 7627 bytes docs/build/vscpp-step-0-installation.md | 149 ++++++++---------- 7 files changed, 132 insertions(+), 142 deletions(-) create mode 100644 docs/build/media/cmake-install-2022.png diff --git a/docs/build/cmake-projects-in-visual-studio.md b/docs/build/cmake-projects-in-visual-studio.md index 98b7d5d177d..e6e26829562 100644 --- a/docs/build/cmake-projects-in-visual-studio.md +++ b/docs/build/cmake-projects-in-visual-studio.md @@ -1,7 +1,8 @@ --- title: "CMake projects in Visual Studio" -description: "How to create and build C++ projects using CMake in Visual Studio." -ms.date: 02/14/2022 +description: "Learn how to create and build C++ projects using CMake in Visual Studio." +ms.date: 03/14/2025 +ms.topic: concept-article f1_keywords: ["VS.ToolsOptionsPages.CMake.General", "VS.ToolsOptionsPages.CMake.LanguageServices"] --- # CMake projects in Visual Studio @@ -9,17 +10,17 @@ f1_keywords: ["VS.ToolsOptionsPages.CMake.General", "VS.ToolsOptionsPages.CMake. [CMake](https://cmake.org) is a cross-platform, open-source tool for defining build processes that run on multiple platforms. This article assumes you're familiar with CMake. For more information about CMake, see the [CMake documentation](https://cmake.org/cmake/help/latest/index.html#). The [CMake tutorial](https://cmake.org/cmake/help/latest/guide/tutorial/index.html#guide:CMake%20Tutorial) is a good starting point to learn more. > [!NOTE] -> CMake has become more and more integrated with Visual Studio over the past few releases. To see the documentation for your preferred version of Visual Studio, use the **Version** selector control. It's found at the top of the table of contents on this page. +> CMake has become more and more integrated with Visual Studio over the past few releases. To see the documentation for your preferred version of Visual Studio, use the **Version** selector located at the top of the table of contents on this page. ::: moniker range=">=msvc-160" -Visual Studio's native support for CMake enables you to edit, build, and debug CMake projects on Windows, the Windows Subsystem for Linux (WSL), and remote systems from the same instance of Visual Studio. CMake project files (such as *`CMakeLists.txt`*) are consumed directly by Visual Studio for the purposes of IntelliSense and browsing. `cmake.exe` is invoked directly by Visual Studio for CMake configuration and build. +Visual Studio's native support for CMake allows you to edit, build, and debug CMake projects on Windows, the Windows Subsystem for Linux (WSL), and remote systems from the same instance of Visual Studio. CMake project files (such as *`CMakeLists.txt`*) are consumed directly by Visual Studio for the purposes of IntelliSense and browsing. Visual Studio invokes `cmake.exe` directly for CMake configuration and build. ## Installation **C++ CMake tools for Windows** is installed as part of the **Desktop development with C++** and **Linux Development with C++** workloads. Both **C++ CMake tools for Windows** and **Linux Development with C++** are required for cross-platform CMake development. -:::image type="complex" source="media/cmake-install-2019.png" alt-text="Screenshot of the Visual Studio installer."::: +:::image type="complex" source="media/cmake-install-2022.png" alt-text="Screenshot of the Visual Studio installer."::: In the installer, the Desktop development with C plus plus dropdown is selected and C plus plus C Make tools for Windows is selected." :::image-end::: @@ -42,7 +43,7 @@ The dialog offers these options: clone a repository, open a project or solution, - In the background, Visual Studio starts to index the source files to enable IntelliSense, browsing information, refactoring, and so on. As you work, Visual Studio monitors changes in the editor and also on disk to keep its index in sync with the sources. > [!NOTE] -> Starting in Visual Studio 2022 version 17.1 Preview 2, if your top-level `CMakeLists.txt` exists in a subfolder and not at the root of the workspace, you'll be prompted whether you'd like to enable CMake integration or not. For more information, see [CMake partial activation](#cmake-partial-activation). +> Starting in Visual Studio 2022 version 17.1 Preview 2, if your top-level `CMakeLists.txt` exists in a subfolder and not at the root of the workspace, you're prompted whether you'd like to enable CMake integration or not. For more information, see [CMake partial activation](#cmake-partial-activation). Once CMake cache generation has succeeded, you can also view your projects organized logically by targets. Choose the **Select View** button on the **Solution Explorer** toolbar. From the list in **Solution Explorer - Views**, select **CMake Targets View** and press **Enter** to open the targets view: @@ -64,18 +65,18 @@ Most Visual Studio and C++ language features are supported by CMake projects in - [Clang/LLVM support](https://devblogs.microsoft.com/cppblog/clang-llvm-support-in-visual-studio/) > [!NOTE] -> For other kinds of Open Folder projects, an additional JSON file *`CppProperties.json`* is used. This file is not relevant for CMake projects. +> For other kinds of Open Folder projects, an additional JSON file *`CppProperties.json`* is used. This file isn't relevant for CMake projects. ## Configuring CMake projects The CMake configure step generates the project build system. It's equivalent to invoking `cmake.exe` from the command line. For more information on the CMake configure step, see the [CMake documentation](https://cmake.org/cmake/help/latest/manual/cmake.1.html#generate-a-project-buildsystem). -Visual Studio uses a CMake configuration file to drive CMake generation and build. *`CMakePresets.json`* is supported by Visual Studio 2019 version 16.10 or later and is the recommended CMake configuration file. *`CMakePresets.json`* is supported directly by CMake and can be used to drive CMake generation and build from Visual Studio, from VS Code, in a Continuous Integration pipeline, and from the command line on Windows, Linux, and Mac. For more information on *`CMakePresets.json`*, see [Configure and build with CMake Presets](cmake-presets-vs.md). *`CMakeSettings.json`* is available for customers using an earlier version of Visual Studio. For more information on *`CMakeSettings.json`*, see [Customize CMake build settings](customize-cmake-settings.md). +Visual Studio uses a CMake configuration file to drive CMake generation and build. *`CMakePresets.json`* is supported by Visual Studio 2019 version 16.10 or later and is the recommended CMake configuration file. *`CMakePresets.json`* is supported directly by CMake and can be used to drive CMake generation and build from Visual Studio, from VS Code, in a continuous integration pipeline, and from the command line on Windows, Linux, and Mac. For more information on *`CMakePresets.json`*, see [Configure and build with CMake Presets](cmake-presets-vs.md). *`CMakeSettings.json`* is available for customers using an earlier version of Visual Studio. For more information on *`CMakeSettings.json`*, see [Customize CMake build settings](customize-cmake-settings.md). -When you make significant changes to your CMake configuration file or a *`CMakeLists.txt`* file, Visual Studio will automatically run the CMake configure step. You can invoke the configure step manually: Select **Project > Configure Cache** from the toolbar. You can also change your configuration preferences in **Tools** > **Options** > **CMake** > **General**. +When you make significant changes to your CMake configuration file or a *`CMakeLists.txt`* file, Visual Studio automatically runs the CMake configure step. You can invoke the configure step manually: Select **Project > Configure Cache** from the toolbar. You can also change your configuration preferences in **Tools** > **Options** > **CMake** > **General**. -:::image type="complex" source="media/cmake-configure-options.png" alt-text="Screenshot of the CMake configuration options in the Visual Studio settings window."::: -The CMake configure settings are called out. Show C Make cache notifications is selected. Under 'When cache is out of date:', the option 'Never run configure step automatically' is selected. +:::image type="complex" source="media/cmake-configure-options.png" alt-text="Screenshot of the C Make configuration options in the Visual Studio settings window."::: +The C Make configure settings are called out. Show C Make cache notifications is selected. Under 'When cache is out of date', the option 'Never run configure step automatically' is selected. :::image-end::: If the configure step finishes without errors, then the information that's available drives C++ IntelliSense and language services. It's also used in build and debug operations. @@ -90,9 +91,9 @@ You can also disable all CMake cache notifications (gold bars) by deselecting ** ### Customize Targets View source groups -By default, the CMake Targets View ignores the following source groups: "Source Files", "Header Files", "Resources", "Object Files". This is because they are included by default in most CMake projects and it would unnecessarily increase the number of clicks required to navigate the Targets View. +By default, the CMake Targets View ignores the following source groups: *Source Files*, *Header Files*, *Resources*, *Object Files*. These groups are included by default in most CMake projects and would unnecessarily increase the number of clicks required to navigate the Targets View. -Enable the use of these source groups by enabling **Tools** > **Options** > **CMake** > **Enable the use of ignored source groups in CMake Targets View**. +You can enable the use of these source groups by selecting **Tools** > **Options** > **CMake** > **Enable the use of ignored source groups in CMake Targets View**. ### Troubleshooting CMake cache errors @@ -118,8 +119,8 @@ To build a CMake project, you have these choices: As you would expect, build results are shown in the **Output Window** and **Error List**. -:::image type="content" source="media/cmake-build-errors.png" alt-text="Screenshot of the Visual Studio Error List window"::: -CMake build warnings about conversions that may result in data loss such as converting from a float to an integer, are visible. +:::image type="complex" source="media/cmake-build-errors.png" alt-text="Screenshot of the Visual Studio Error List window"::: +C Make build warnings about conversions that might result in data loss such as converting from a float to an integer, are visible. :::image-end::: ### Edit build settings @@ -128,7 +129,7 @@ Visual Studio uses a CMake configuration file to drive CMake builds. CMake confi ## Debugging CMake projects -All executable CMake targets are shown in the **Startup Item** dropdown in the toolbar. To start debugging, select one and press the **Debug > Start Debugging** button in the toolbar. In a CMake project, the "Current document" option is only valid for .cpp files. +All executable CMake targets are shown in the **Startup Item** dropdown in the toolbar. To start debugging, select one and press the **Debug > Start Debugging** button in the toolbar. In a CMake project, the **Current document** option is only valid for .cpp files. :::image type="complex" source="media/debug-target.png" alt-text="Screenshot of the Visual Studio debug dropdown."::: The dropdown has these options: Show / Hide debug targets, current document, samples (which is highlighted), box2d_tests, and samples-noGUI. @@ -136,7 +137,7 @@ The dropdown has these options: Show / Hide debug targets, current document, sam The **Debug** or **F5** commands first build the project if changes have been made since the previous build. Changes to the CMake configuration file (*`CMakePresets.json`* or *`CMakeSettings.json`*) or a *`CMakeLists.txt`* causes the CMake cache to be regenerated. -You can customize a CMake debugging session by setting properties in the *`launch.vs.json`* file. To customize debug settings for a specific target, select the target in the **Startup Item** dropdown and press **Debug > Debug and Launch Settings for \**. For more information on CMake debugging sessions, see [Configure CMake debugging sessions](configure-cmake-debugging-sessions.md). +You can customize a CMake debugging session by setting properties in the *`launch.vs.json`* file. To customize debug settings for a specific target, select the target in the **Startup Item** dropdown and choose **Debug > Debug and Launch Settings for \**. For more information on CMake debugging sessions, see [Configure CMake debugging sessions](configure-cmake-debugging-sessions.md). ### Just My Code for CMake projects @@ -144,7 +145,7 @@ When you build for Windows using the MSVC compiler, CMake projects have support ### Edit and Continue for CMake projects -When you build for Windows with the MSVC compiler, CMake projects have support for Edit and Continue. Add the following code to your *`CMakeLists.txt`* file to enable Edit and Continue. For more information on Edit and Continue, see [Configure Edit and Continue (C#, VB, C++)](/visualstudio/debugger/how-to-enable-and-disable-edit-and-continue). +When you build for Windows with the MSVC compiler, CMake projects have support for Edit and Continue. Add the following code to your *`CMakeLists.txt`* file to enable Edit and Continue. ``` if(MSVC) @@ -153,6 +154,8 @@ if(MSVC) endif() ``` +For more information on Edit and Continue, see [Configure Edit and Continue (C#, VB, C++)](/visualstudio/debugger/how-to-enable-and-disable-edit-and-continue). + ### Attach to a CMake project running on Linux Visual Studio allows you to debug a process running on a remote Linux system or WSL and debug it with the GDB debugger. To get started, select **Debug** > **Attach to Process...**, set the **Connection type** to **SSH**, and select your **Connection target** from the list of connections in the Connection Manager. Select a process from the list of available processes and press **Attach**. GDB must be installed on your Linux machine. For more information on SSH connections, see the [Connection Manager](../linux/connect-to-your-remote-linux-computer.md) @@ -163,14 +166,14 @@ The following options are available on the dialog: Connection type (set to SSH), ## CMake partial activation -In Visual Studio 2022 version 17.1 and later, CMake functionality won't be enabled automatically if your root folder doesn't contain a `CMakeLists.txt` file. Instead, a dialog will prompt you on whether you'd like to enable CMake functionality for your project. If you decline, CMake cache generation won't start and CMake configurations (from `CMakeSettings.json` or `CMakePresets.json`) won't appear in the configuration dropdown. If you accept, you'll be taken to a workspace-level configuration file, `CMakeWorkspaceSettings.json` (stored in the `.vs` directory), to specify the folders you'd like to enable CMake for. (These folders contain your root `CMakeLists.txt` files). +In Visual Studio 2022 version 17.1 and later, CMake functionality isn't enabled automatically if your root folder doesn't contain a `CMakeLists.txt` file. Instead, a dialog prompts you on whether you'd like to enable CMake functionality for your project. If you decline, CMake cache generation doesn't start and CMake configurations (from `CMakeSettings.json` or `CMakePresets.json`) doesn't appear in the configuration dropdown. If you accept, you're taken to a workspace-level configuration file, `CMakeWorkspaceSettings.json` (stored in the `.vs` directory), to specify the folders you'd like to enable CMake for. (These folders contain your root `CMakeLists.txt` files). The accepted properties are: | Property | Description | |--|--| | `enableCMake` | Enable Visual Studio's integration for this workspace. | -| `sourceDirectory` | A string or array of strings specifying the directory or directories with `CMakeLists.txt`. Macros (such as `${workspaceRoot}`) are allowed. Relative paths are based on the workspace root. Directories outside of the current workspace will be ignored. | +| `sourceDirectory` | A string or array of strings specifying the directory or directories with `CMakeLists.txt`. Macros (such as `${workspaceRoot}`) are allowed. Relative paths are based on the workspace root. Directories outside of the current workspace are ignored. | You can reach `CMakeWorkspaceSettings.json` through the **Project** > **CMake Workspace Settings** menu command at any time, even if CMake functionality is currently disabled. @@ -199,11 +202,11 @@ Before generating the CMake cache, your custom or preferred tools might need to When your custom or preferred tools generate your cache, CMake places files under *`.cmake/api/v1/response`* that Visual Studio uses to populate the editor with information specific to your project structure. -## Editing *`CMakeLists.txt`* files +## Editing *CMakeLists.txt* files To edit a *`CMakeLists.txt`* file, right-click on the file in **Solution Explorer** and choose **Open**. If you make changes to the file, a yellow status bar appears and informs you that IntelliSense will update. It gives you a chance to cancel the update operation. For information about *`CMakeLists.txt`*, see the [CMake documentation](https://cmake.org/documentation/). -:::image type="complex" source="media/cmake-cmakelists.png" alt-text="Screenshot of a C Make Lists .txt file being edited in Visual Studio." +:::image type="complex" source="media/cmake-cmakelists.png" alt-text="Screenshot of a C Make Lists TXT file being edited in Visual Studio." It contains the lines project (hello-cmake), add_subdirectory (tests), add_executable (hello hello.cpp), and install (TARGETS hello DESTINATION hello/bin). A message at the top of the window says that c plus plus IntelliSense info will refresh after C Make finishes generating the cache. :::image-end::: @@ -215,7 +218,7 @@ A C Make error message on line 3 of CMakeLists.txt is highlighted. The details a ### Language services for CMake -Language services for CMake are available in Visual Studio 2019 version 16.5 or later. It supports code navigation features like Go To Definition, Peek Definition, and Find All References for CMake variables, functions, and targets in CMake script files. For more information, see [Code Navigation for CMake Scripts](https://devblogs.microsoft.com/cppblog/code-navigation-for-cmake-scripts/). +Language services for CMake are available in Visual Studio 2019 version 16.5 or later. Language services support code navigation features like *Go To Definition*, *Peek Definition*, and *Find All References* for CMake variables, functions, and targets in CMake script files. For more information, see [Code Navigation for CMake Scripts](https://devblogs.microsoft.com/cppblog/code-navigation-for-cmake-scripts/). :::image type="complex" source="media/cmake-find-all-refs.png" alt-text="Screenshot of the Visual Studio Find All References window."::: Results of where SUPERTUX_SOURCES_CXX are found are shown. For example, in list(SORT SSUPERTUX_SOURCES_CXX), file(GLOB SUPERTUX_SOURCES_CXX) and so on. @@ -223,10 +226,10 @@ Results of where SUPERTUX_SOURCES_CXX are found are shown. For example, in list( ### CMake project manipulation -CMake project manipulation is available in Visual Studio 2019 version 16.5 or later. Project manipulation enables you to add, remove, and rename source files and targets in your CMake project without manually editing your CMake scripts. When you add or remove files from the Solution Explorer, Visual Studio automatically edits your CMake project. There could be more than one place where it makes sense to add or remove a reference to a CMake script. If so, Visual Studio asks you where you want to make the change and displays a preview of the proposed changes. For step-by-step instructions, see [Add, Remove, and Rename Files and Targets in CMake Projects](https://devblogs.microsoft.com/cppblog/easily-add-remove-and-rename-files-and-targets-in-cmake-projects/). +CMake project manipulation is available in Visual Studio 2019 version 16.5 or later. Project manipulation lets you add, remove, and rename source files and targets in your CMake project without manually editing your CMake scripts. When you add or remove files from the Solution Explorer, Visual Studio automatically edits your CMake project. There could be more than one place where it makes sense to add or remove a reference to a CMake script. If so, Visual Studio asks you where you want to make the change and displays a preview of the proposed changes. For step-by-step instructions, see [Add, Remove, and Rename Files and Targets in CMake Projects](https://devblogs.microsoft.com/cppblog/easily-add-remove-and-rename-files-and-targets-in-cmake-projects/). :::image type="complex" source="media/cmake-project-manipulation.png" alt-text="Screenshot of the Visual Studio Preview Changes dialog box."::: -A tree view shows CMakeLists.txt, under which are two items: add_executable and set. Set is checked. The preview window shows where changes will be made. The line set (PROJECT_SRC "CmakeProject4.cpp" "CMakeProject4.h" shows "Demo.cpp" highlighted before the closing parenthesis. The apply button accepts the change, or you can press cancel. +A tree view shows CMakeLists.txt, under which are two items: add_executable and set. Set is checked. The preview window shows where changes will be made. The line set PROJECT_SRC "CmakeProject4.cpp" "CMakeProject4.h" shows "Demo.cpp" highlighted before the closing parenthesis. The apply button accepts the change, or you can press cancel. :::image-end::: ## IntelliSense for CMake projects @@ -250,15 +253,15 @@ CMake projects opened in Visual Studio integrate with vcpkg, a cross-platform C/ If *`CMakeSettings.json`* is your active configuration file, Visual Studio automatically passes the vcpkg toolchain file (`vcpkg.cmake`) to CMake. This behavior is disabled automatically when you specify any other toolchain in your CMake Settings configuration. -If *`CMakePresets.json`* is your active configuration file, you'll need to set the path to `vcpkg.cmake` in *`CMakePresets.json`*. We recommend using the `VCPKG_ROOT` environment variable instead of an absolute path to keep the file shareable. For more information, see [Enable vcpkg integration with CMake Presets](cmake-presets-vs.md#enable-vcpkg-integration). *`CMakePresets.json`* is available in Visual Studio 2019 version 16.10 or later and is the recommended CMake configuration file. +If *`CMakePresets.json`* is your active configuration file, you need to set the path to `vcpkg.cmake` in *`CMakePresets.json`*. We recommend using the `VCPKG_ROOT` environment variable instead of an absolute path to keep the file shareable. For more information, see [Enable vcpkg integration with CMake Presets](cmake-presets-vs.md#enable-vcpkg-integration). *`CMakePresets.json`* is available in Visual Studio 2019 version 16.10 or later and is the recommended CMake configuration file. ## Run CMake from the command line If *`CMakePresets.json`* is your active CMake configuration file, then you can easily reproduce your local builds outside of Visual Studio. For more information, see [Run CMake from the command line or a CI pipeline](cmake-presets-vs.md#run-cmake-from-the-command-line-or-a-ci-pipeline). *`CMakePresets.json`* is supported in Visual Studio 2019 version 16.10 or later and is the recommended CMake configuration file. -If *`CMakeSettings.json`* is your active CMake configuration file, then you'll need to manually pass the arguments that are encoded in your *`CMakeSettings.json`* file to CMake. If you have installed CMake from the Visual Studio Installer, you can run it from the command line by following these steps: +If *`CMakeSettings.json`* is your active CMake configuration file, then you need to manually pass the arguments that are encoded in your *`CMakeSettings.json`* file to CMake. If you installed CMake from the Visual Studio Installer, you can run it from the command line by following these steps: -1. Run the appropriate *`vsdevcmd.bat`* file (x86/x64). For more information, see [Building on the command line](building-on-the-command-line.md) . +1. Run the appropriate *`vsdevcmd.bat`* file (x86/x64). For more information, see [Use the Microsoft C++ toolset from the command line](building-on-the-command-line.md) . 1. Switch to your output folder. @@ -274,7 +277,7 @@ Visual Studio 2017 has rich support for CMake, including [cross-platform CMake p **Visual C++ Tools for CMake** is installed as part of the **Desktop development with C++** and **Linux Development with C++** workloads. -:::image type="content" source="media/cmake-install.png" alt-text="Screenshot of the Visual Studio Installer. The Individual components tab is selected on which Visual C plus plus tools for CMake is selected."::: +:::image type="content" source="media/cmake-install.png" alt-text="Screenshot of the Visual Studio Installer. The Individual components tab is selected on which Visual C plus plus tools for C Make is selected."::: For more information, see [Install the C++ Linux workload in Visual Studio](../linux/download-install-and-setup-the-linux-development-workload.md). @@ -290,17 +293,17 @@ When you choose **File > Open > Folder** to open a folder containing a *`CMakeLi - In the background, Visual Studio starts to index the source files to enable IntelliSense, browsing information, refactoring, and so on. As you work, Visual Studio monitors changes in the editor and also on disk to keep its index in sync with the sources. -You can open folders containing any number of CMake projects. Visual Studio detects and configures all the "root" *`CMakeLists.txt`* files in your workspace. CMake operations (configure, build, debug), C++ IntelliSense, and browsing are available to all CMake projects in your workspace. +You can open folders containing any number of CMake projects. Visual Studio detects and configures all the *root* *`CMakeLists.txt`* files in your workspace. CMake operations (configure, build, debug), C++ IntelliSense, and browsing are available to all CMake projects in your workspace. :::image type="complex" source="media/cmake-multiple-roots.png" alt-text="Screenshot of the Visual Studio Solution Explorer."::: -The files and folders of a CMake project are visible. There's a tests subdirectory, CMakeLists.txt, and hello.cpp. There's a hello-cmake-vcpkg folder that contains CMakeLists.txt, CMakeSettings.json, and hello.cpp. +The files and folders of a C Make project are visible. There's a tests subdirectory, CMakeLists.txt, and hello.cpp. There's a hello-cmake-vcpkg folder that contains CMakeLists.txt, CMakeSettings.json, and hello.cpp. :::image-end::: You can also view your projects organized logically by targets. Choose **Targets view** from the dropdown in the **Solution Explorer** toolbar: :::image type="content" source="media/cmake-targets-view.png" alt-text="Screenshot of the dropdown button in the Visual Studio Solution Explorer that offers the CMake targets view option. Which is selected."::: -Visual Studio uses a file called *`CMakeSettings.json`* to store environment variables or command-line options for CMake. *`CMakeSettings.json`* also enables you to define and store multiple CMake build configurations. You can conveniently switch between them in the IDE. +Visual Studio uses a file called *`CMakeSettings.json`* to store environment variables or command-line options for CMake. *`CMakeSettings.json`* also lets you define and store multiple CMake build configurations. You can conveniently switch between them in the IDE. Otherwise, use the *`CMakeLists.txt`* just as you would in any CMake project to specify source files, find libraries, set compiler and linker options, and specify other build system-related information. @@ -311,7 +314,7 @@ If you need to pass arguments to an executable at debug time, you can use anothe ## Import an existing cache -When you import an existing *`CMakeCache.txt`* file, Visual Studio automatically extracts customized variables and creates a pre-populated *`CMakeSettings.json`* file based on them. The original cache isn't modified in any way. It can still be used from the command line, or with whatever tool or IDE used to generate it. The new *`CMakeSettings.json`* file is placed alongside the project's root *`CMakeLists.txt`*. Visual Studio generates a new cache based the settings file. You can override automatic cache generation in the **Tools > Options > CMake > General** dialog. +When you import an existing *`CMakeCache.txt`* file, Visual Studio automatically extracts customized variables and creates a prepopulated *`CMakeSettings.json`* file based on them. The original cache isn't modified in any way. It can still be used from the command line, or with whatever tool or IDE used to generate it. The new *`CMakeSettings.json`* file is placed alongside the project's root *`CMakeLists.txt`*. Visual Studio generates a new cache based the settings file. You can override automatic cache generation in the **Tools > Options > CMake > General** dialog. Not everything in the cache is imported. Properties such as the generator and the location of the compilers are replaced with defaults that are known to work well with the IDE. @@ -319,13 +322,13 @@ Not everything in the cache is imported. Properties such as the generator and th 1. From the main menu, choose **File > Open > CMake**: - :::image type="content" source="media/cmake-file-open.png" alt-text="Screenshot of the Visual Studio main menu. File > Open > C Make is selected."::: + :::image type="content" source="media/cmake-file-open.png" alt-text="Screenshot of the Visual Studio main menu with C Make selected."::: This command brings up the **Import CMake from Cache** wizard. 2. Navigate to the *`CMakeCache.txt`* file that you want to import, and then choose **OK**. The **Import CMake Project from Cache** wizard appears: - :::image type="content" source="media/cmake-import-wizard.png" alt-text="Screenshot of the Import CMake Project from Cache wizard. The directory path of the CMake project to import goes in the `folder` textbox."::: + :::image type="content" source="media/cmake-import-wizard.png" alt-text="Screenshot of the Import C Make Project from Cache wizard. The directory path of the C Make project to import goes in the folder textbox."::: When the wizard completes, you can see the new *`CMakeCache.txt`* file in **Solution Explorer** next to the root *`CMakeLists.txt`* file in your project. @@ -333,22 +336,22 @@ Not everything in the cache is imported. Properties such as the generator and th To build a CMake project, you have these choices: -1. In the General toolbar, find the **Configurations** dropdown. It's probably showing "Linux-Debug" or "x64-Debug" by default. Select the preferred configuration and press **F5**, or choose the **Run** (green triangle) button on the toolbar. The project automatically builds first, just like a Visual Studio solution. +1. In the General toolbar, find the **Configurations** dropdown. It's probably showing *Linux-Debug* or *x64-Debug* by default. Select the preferred configuration and press **F5**, or choose the **Run** (green triangle) button on the toolbar. The project automatically builds first, just like a Visual Studio solution. 1. Right-click on *`CMakeLists.txt`* in **Solution Explorer** and select **Build** from the context menu. If you have multiple targets in your folder structure, you can choose to build all or only one specific target. 1. From the main menu, select **Build > Build Solution** (**F7** or **Ctrl+Shift+B**). Make sure that a CMake target is already selected in the **Startup Item** dropdown in the **General** toolbar. -:::image type="complex" source="media/cmake-build-menu.png" alt-text="Screenshot of the Visual Studio Solution Explorer after right-clicking CMakeLists.txt."::: +:::image type="complex" source="media/cmake-build-menu.png" alt-text="Screenshot of the Visual Studio Solution Explorer after right-clicking C Make Lists."::: The menu has options such as Add, Open, Configure tasks, Build, Clean all, and so on. :::image-end::: -You can customize build configurations, environment variables, command-line arguments, and other settings in the *`CMakeSettings.json`* file. It lets you make changes without modifying the *`CMakeLists.txt`* file. For more information, see [Customize CMake settings](customize-cmake-settings.md). +You can customize build configurations, environment variables, command-line arguments, and other settings in the *`CMakeSettings.json`* file. It lets you make changes without modifying the *`CMakeLists.txt`* file. For more information, see [Customize CMake build settings](customize-cmake-settings.md). As you would expect, build results are shown in the **Output Window** and **Error List**. :::image type="complex" source="media/cmake-build-errors.png" alt-text="Screenshot of the Visual Studio Error List window."::: -CMake build warnings about conversions that may result in data loss such as converting from a float to an integer are visible. +C Make build warnings about conversions that might result in data loss such as converting from a float to an integer are visible. :::image-end::: In a folder with multiple build targets, you can specify which CMake target to build: Choose the **Build** item on the **CMake** menu or the *`CMakeLists.txt`* context menu to specify the target. If you enter **Ctrl+Shift+B** in a CMake project, it builds the current active document. @@ -357,7 +360,7 @@ In a folder with multiple build targets, you can specify which CMake target to b To debug a CMake project, choose the preferred configuration and press **F5**. Or, press the **Run** button in the toolbar. If the **Run** button says "Select Startup Item", select the dropdown arrow and choose the target that you want to run. (In a CMake project, the "Current document" option is only valid for .cpp files.) -:::image type="content" source="media/cmake-run-button.png" alt-text="Screenshot of the Select Startup Item dropdown for a CMake project. You can select current document or hello-cmake.exe"::: +:::image type="content" source="media/cmake-run-button.png" alt-text="Screenshot of the Select Startup Item dropdown for a C Make project. You can select current document or hello-cmake."::: The **Run** or **F5** commands first build the project if changes have been made since the previous build. @@ -367,8 +370,8 @@ You can customize a CMake debugging session by setting properties in the *`launc To edit a *`CMakeLists.txt`* file, right-click on the file in **Solution Explorer** and choose **Open**. If you make changes to the file, a yellow status bar appears and informs you that IntelliSense will update. It gives you a chance to cancel the update operation. For information about *`CMakeLists.txt`*, see the [CMake documentation](https://cmake.org/documentation/). - :::image type="complex" source="media/cmake-cmakelists.png" alt-text="Screenshot of a C Make Lists .txt file being edited in Visual Studio."::: - The file contains: project (hello-cmake), add_subdirectory (tests), add_executable (hello hello.cpp), and install (TARGETS hello DESTINATION hello/bin). A message at the top of the window says that c plus plus IntelliSense info will refresh after C Make finishes generating the cache. + :::image type="complex" source="media/cmake-cmakelists.png" alt-text="Screenshot of a C Make Lists file being edited in Visual Studio."::: + The file contains project (hello-cmake), add_subdirectory (tests), add_executable (hello hello.cpp), and install (TARGETS hello DESTINATION hello/bin). A message at the top of the window says that c plus plus IntelliSense info will refresh after C Make finishes generating the cache. :::image-end::: As soon as you save the file, the configuration step automatically runs again and displays information in the **Output** window. Errors and warnings are shown in the **Error List** or **Output** window. Double-click on an error in the **Error List** to navigate to the offending line in *`CMakeLists.txt`*. @@ -379,12 +382,12 @@ As soon as you save the file, the configuration step automatically runs again an ## CMake configure step -When significant changes are made to the *`CMakeSettings.json`* or to *`CMakeLists.txt`* files, Visual Studio automatically reruns the CMake configure step. If the configure step finishes without errors, the information that's collected is available in C++ IntelliSense and language services. It's also used in build and debug operations. +When significant changes are made to the *`CMakeSettings.json`* or to *`CMakeLists.txt`* files, Visual Studio automatically reruns the CMake configure step. If the configure step finishes without errors, the information that's collected is available in C++ IntelliSense and language services. It's also used in build and debug operations. -Multiple CMake projects might use the same CMake configuration name (for example, x86-Debug). All of them are configured and built (in their own build root folder) when that configuration is selected. You can debug the targets from all of the CMake projects that participate in that CMake configuration. +Multiple CMake projects might use the same CMake configuration name (for example, *x86-Debug*). All of them are configured and built (in their own build root folder) when that configuration is selected. You can debug the targets from all of the CMake projects that participate in that CMake configuration. - :::image type="complex" source="media/cmake-build-only.png" alt-text="Screenshot of Visual Studio's main menu, open to CMake > Build Only."::: - The context menu shows what can be built--in this case hello-cmake-a \ hello-cmake.exe (Project hello-cmake) and hello-cmake-b\hello-cmake.exe (Project hello-cmake). The latter is highlighted. + :::image type="complex" source="media/cmake-build-only.png" alt-text="Screenshot of Visual Studio's main menu, open to C Make Build Only."::: + The context menu shows what can be built. In this case hello-cmake-a \ hello-cmake.exe (Project hello-cmake) and hello-cmake-b\hello-cmake.exe (Project hello-cmake). The latter is highlighted. :::image-end::: You can limit builds and debug sessions to a subset of the projects in the workspace. Create a new configuration with a unique name in the *`CMakeSettings.json`* file. Then, apply the configuration to those projects only. When that configuration is selected, IntelliSense and the build and debug commands only apply to those specified projects. @@ -393,7 +396,7 @@ You can limit builds and debug sessions to a subset of the projects in the works If you need more information about the state of the CMake cache to diagnose a problem, open the **CMake** main menu or the *`CMakeLists.txt`* context menu in **Solution Explorer** to run one of these commands: -- **View Cache** opens the *`CMakeCache.txt`* file from the build root folder in the editor. (Any edits you make here to *`CMakeCache.txt`* are wiped out if you clean the cache. To make changes that persist after the cache is cleaned, see [Customize CMake settings](customize-cmake-settings.md).) +- **View Cache** opens the *`CMakeCache.txt`* file from the build root folder in the editor. Any edits you make here to *`CMakeCache.txt`* are wiped out if you clean the cache. To make changes that persist after the cache is cleaned, see [Customize CMake settings](customize-cmake-settings.md). - **Open Cache Folder** opens an Explorer window to the build root folder. @@ -407,11 +410,11 @@ Automatic cache generation can be disabled in the **Tools > Options > CMake > Ge To build a single file in a CMake project, right-click on the file in **Solution Explorer**. Choose **Compile** from the pop-up menu. You can also build the currently open file in the editor by using the main **CMake** menu: -:::image type="content" source="media/cmake-single-file-compile.png" alt-text="Screenshot of the CMake > Compile context menu. It contains one entry: Bullet3Collision."::: +:::image type="content" source="media/cmake-single-file-compile.png" alt-text="Screenshot of the C Make Compile context menu. It contains one entry, Bullet 3 Collision."::: ## Run CMake from the command line -If you have installed CMake from the Visual Studio Installer, you can run it from the command line by following these steps: +If you installed CMake from the Visual Studio Installer, you can run it from the command line by following these steps: 1. Run the appropriate *`vsdevcmd.bat`* file (x86/x64). For more information, see [Building on the Command Line](building-on-the-command-line.md). @@ -427,15 +430,15 @@ In Visual Studio 2015, Visual Studio users can use a [CMake generator](https://c ::: moniker-end -## See also - -[Tutorial: Create C++ cross-platform projects in Visual Studio](get-started-linux-cmake.md)\ -[Configure a Linux CMake project](../linux/cmake-linux-project.md)\ -[Connect to your remote Linux computer](../linux/connect-to-your-remote-linux-computer.md)\ -[Customize CMake build settings](customize-cmake-settings.md)\ -[`CMakeSettings.json` schema reference](cmakesettings-reference.md)\ -[Configure CMake debugging sessions](configure-cmake-debugging-sessions.md)\ -[Deploy, run, and debug your Linux project](../linux/deploy-run-and-debug-your-linux-project.md)\ -[CMake predefined configuration reference](cmake-predefined-configuration-reference.md)\ -[vcpkg in CMake projects](/vcpkg/users/buildsystems/cmake-integration)\ -[Install and use packages with CMake in Visual Studio](/vcpkg/get_started/get-started-vs) +## Related content + +- [Tutorial: Create C++ cross-platform projects in Visual Studio](get-started-linux-cmake.md) +- [Configure a Linux CMake project](../linux/cmake-linux-project.md) +- [Connect to your remote Linux computer](../linux/connect-to-your-remote-linux-computer.md) +- [Customize CMake build settings](customize-cmake-settings.md) +- [*CMakeSettings.json* schema reference](cmakesettings-reference.md) +- [Configure CMake debugging sessions](configure-cmake-debugging-sessions.md) +- [Deploy, run, and debug your Linux project](../linux/deploy-run-and-debug-your-linux-project.md) +- [CMake predefined configuration reference](cmake-predefined-configuration-reference.md) +- [vcpkg in CMake projects](/vcpkg/users/buildsystems/cmake-integration) +- [Install and use packages with CMake in Visual Studio](/vcpkg/get_started/get-started-vs) diff --git a/docs/build/media/cmake-build-errors.png b/docs/build/media/cmake-build-errors.png index 089db013a3aebc319e26f1c4e3f4c162ee8e0092..80127fdebdbdfbf4aaff339926357f3215f01b2e 100644 GIT binary patch literal 26094 zcmdp;WmFx{zNR;Uput^&1PB(~9X9Un?(V@YA-F?u4el1)U4py2ySvUN`Ja2PoOABn zHS=YL)ik|(wN(Aeo_gQf1j$N^z{BFe0ssJbF;PKz0N~9T==cQs4QPLfjrSS!2h2fU z1PCY{#@hpZfH2{g;s*dKBH$kN-hw{E*ovw-000P`ufJfuHu;7CfYCQGL4HLS?W1OI z55?~K+n1D6if*@s`>1`9=(cULXg{|x!G#42lsBp!5%TRi`KmA|vcNLZU)4G&Jo>jJ zm($VNHAtkq0EtIJ%5_#W=tzj@OShuO$Pd;rmMn9T5EfJFWqlF8jOo1FhjR|b+bP_0 zhOEh_O*(f57lVTrgItUbPQwnyBckcv&!mLVKA`QLL-q!lh8p(kF=3yrKnENA??d7* zbjn|TU&8RNo%yeGV44$uPNB5@*HgOFOedCZwrk(gTBT0*QJ*$br4Y9d_oks6oOwG% zks$a%8zdw_UXWMa<Gg z{TP~l#^}{Ea*NHoVe-s)G2HCT!hNeQSill^KAa1s^9{|^JSp;F9&zQ$%j>@Mcxj~A zD+e3^kheFJ6-mA`lZg>2X3VT|;TN1qGkLZ$ftos%n7uvtn3Q%tFr)m$Hx%~!h3lw1 z(i1HX%u6yCJ|>(}?j~LPGcnA;_jjpMMLLO*58D=H&3Ed1S*f^FCc^WBEiTSC!!WIv zTs!yeg)?4>z;us0^-*XQli$hwljfE} z^;{0U8^$7?uL0gSk3OQ`Qht{PVchBl6F{&5ycDuW85Rxn1pm zQfYmn&Dq8^efPQL;SGA}GW*)|+b95U9aWC!&b}X_wVQ|r)@xxQb&*M?K>j{5RPE?B z`%{Ge1a-N8&XIhv!1-OO!f*cfPThJXS;V+&zpzl@SmSxEwyGhw^_kA|(b>c4M}3VT zID7+vP1$9EqtdIRhRjeL7<8{wEIPtn=IySk<0`dp6V0?Z%(&KRH_%D`?`Fv2 zj?6uKkGuo*eeLQi2iRZMXm1GiA0FZEir`*moy)D(^fjjmMajQ`f(QUW@7?jXnx)>1 zV!n7E#a`3golmv2dYwl!L#5vEEOVnp1Fp^@kEN|PrWtorbtYK6Q~E5jU- z^i&R`!krT}8unYHJ9BphWIz=wI#S}&I-&4nRgX#a5c~b%B$Upv?8LOR=XHM4G$Kb0 zckvXe%lS=h{L_x>{ax}3^uX;5%nDYHCOqZKqunykMj=yaj^{m{#!}XZbZQ4{>&6yT z9%QZAw{E}M6|gTSkGnJr4kNQ^?%SNa4RC-Kw};daOxk6yhnqy+8af|Bfv>U5Qd*@$ z64vjNKebgGm0BHRU{bMkT6A>*wMvDmy%bk*whwOJr?)gQS`M4eK0PT{DgXt~6;&e4}KrJjI`u%>o2eIbwzOp}XV zUOp&oJZ`>OHhG@)cxpR;JMFH9stw}@blA6-f=|j!y6_m)cBIxCK{hk>-i z-3)RBH#A@azlqi9qHLtKPO9ZIHh^cT;yX1Y0O{&>m@#h}H#}&Rzh!>mOy?!zd0|xSzgqy*owOlJ*EA)9~=qO!l za=XB7$Ka?HHq4Rv!X)<%KvJUtXRe~6AUf2riYQ+Z#78wr3$u0M)v$fVP}64qmU;q#?to{Ho7vqq7;G^z{|8 zHZ1mWzyKWc>K}!Lz&v?!xSSQzy34J+?~Jx#!tdWnB(u_ZL( zH72pCt#nP`Q&gPn!Z4!WA$8j8za1BsiFa&z9G{z#V7{1J7^~9Y)b>(cI2mkh!i9fa z6(~s$b>Cij?hRx0cpeT4AIIbr*Li$QMa^n?NY(JVgJW4CL_tjkP+LvMBWJ*9k3?m3 zw!StAtK&Fo@y~Xk=D?>_dK5IXHt5fUV=?JR>fo?Li7Yx3SKskvbMO*s*z%U$L1cAk zFo3q273s24?yaxe?L8u|xrId~^W^mOPxep5-g}pTE84D4-qfzQHf2rAl@<|{ zt@k%0lOu6|9k3_9F}4I8RtAnf}F6B!I;qtl(fzpjPU_V$y`Zp(eg& zi0idYVjf$al>!uR70W`r-a?trK0a*|V0zlzKOY`wD;oxxF>bdi$s|wOWn&mytSgJ8 zH{bAac;el?X}YwBVp5Llu{q~SHGD>|liP*TF@M@hmP6HFDSkd)RLgqaf!CYyK4{!y zTwiuGT4?tKTNG1JdAJ8JQt5)GwS)YMI&uYyCyS>~u*HDpF>HT_4oV_b;n~zeNS+%{ z=}r}!ja+09CPWy2Q`?93uJxpCP_T`4Q|CsLj-48pln_(qWR;;9SsRM*e;_Mf?@cDg z-L5n);hF%otks7+aP&)j&H9|y`++?=b~zezWUR?*7o)xLyRm~tUbMb-bYax z85t=hn%RPag1x;xON0Sm&xiEMku^l>y1g-|=LXLmsR*7QOBxqpr*``$1NjeTla4`J z7p6TI^;ym6$Eo}df<|2I=`@%LgW#D5&HYq5j*J~tm?Jk$wXw+Rf^+f{sw$`i@89Z% z_|5kqEE(e%5g$oyPNBXv$^y(A}Sydfh!AxF>HHiH(Er zNS8MEhlrcfF1qVOY_$@1^rgzyJLLKGk!Z_B=_=}Sf1>%s&f7K)Dgyl+gp6=xg0ZNF=ULN`I_;)ww;ApA-EtCzpy*wE?VV$chlYFBs&?S zQ34n5lc4m9Zpe`QT^HGOWlQ&h9@I)~lHvC&9$Vuplis}Ms%2is&9`&)8?=Ql*WW;0 zCAn7vn!eTL%ItXFNu3wvM1sZ!MaQQcZ9S{Nvn&ff%bq^r{HA zdfNSrt#Y=n{O)!}mWD(ai=YVi^Jdq0UI-DlR6HK~dqkV&ECkZuvD zgCYJln!g^@R!IUak`iViT(t0bix<|B8xdww5>W^Q7^xiEt8*?LWr~G}K5D1lIaV7Z zs}Q&$0lwHQosF>4>U_{?@UXvcp66!bZoE!O@hbD!JHLs0I&7feIgSwmHN9KsMAO8Y z=aQ7^ygW$|IPEt>jj!PN!ZT5N#=qDd&wecF@)W-TFLmhE*=@XZF6qLNE7)@qm1PZ) zOr|Gjt4xHHk1z3Gch8efY{;cvMy!QNsCo8tw@6E4aNLh!rgL8%NjpwCJxX7BpAjoc zg=qFNbU$PFf@jyPoQV`$aq-s0Z9k?!L8Tq8hnGi2tA=B3nQU&;>|mw;>$vN(Rco5c z(xL{(*{|NLS?{;jX!q^$^ZcZ;oMz-{2kBE1nv#}2J9G6G5(RoSUk&W9w(0BAG(O>1 z>aRpKQBYfzdc^{ff@2v!?HSYifym>!#CB_5d?R912YtFAJ=OzJv7XgOWLN4f4xH42 ztv{vP5An+5=>*xWED9^1g?@7eS2+Sp=VJAtMG3#D5i{tLEXT@$dtMDkrZuch;l`@W?>gg#) z3Say=-Y?*{)E{T^>4%-EGBmME3iXNk3xe53p)jjVCN54TxAs}^CTNb- zOH`SU<-}c}8A$kbQ5XE4M<`D-_0b8iZ53k2oDa?;kmDmeGXXA3K+}UR+m1 z@Sc|}d}N#hf_=9^U@o}n$a_(8#jP~hPH%BOP)Ya7j`e+tuz51=-m~#IFfO4pH1lxk zpD1CsIhs6dp3+^%AnN6Kc|h#tF>~@f+uAB()x6<-Cf#2c@Ivx(&n5?=>L)y8=wO8r zyp)f>b@}>!8XD9Y1|oHt$cXk`lyE+~KH5x^J?^ys^1hqM&VAYl2?09r8$`W4U%qR7 zo1iud__BC&<^4k4wc>c-xz<0yeA7aQrL!5sN#^lzbJLx6eGlHk?2j&pUERO z3|5bsDrjzZ>WWL>mOMt(oBjMzj5y7r{^(mbz|%B`O;zQ~L>Gfcmy%%KprynmA?_B#CFir@X2oz@W{18KCI`huUj z&-7|NqmNS$!1Zja;W0AQs6ew;s#WyCz#pz3P5n#xPv=noXdeGk-}ncT2bQq~4v>Qi zKNUSa0Uxy8>=w}gXYufSo0_-7W6|HYINXB~*_71_6v%k!-#0IC&f$6Sb7(iusHc|f z2qHn~t(NKTlal^W86FL=@mi&+$v$K4kDq_vT2OnMgTV$l+aqh*XRAID8Lom!V%!in zQ4sj)AnU+C#owx+0E;E_N{cPEB!myF%o-B33D?gc8D;;MfEN1xzz&JPP z@B!NA7Fh37otE!u@e86U8w;6m_*85m5YD4s>7QRv9Cz=^%`rPMtAdE**M`A*Sr@H(p=#?eu#ZDE{;IV;wX zf>&sig`v>Y&H* zO&lzzNI9$&|BgCr>r7|{zld&;*-Y8S%oyOLOr8`}{Fo-kjd{RW0Dw+WR2 zv47r63xSl(eB@aBP3uF1_)V)NTg9;#%EjO@`0$QbwlT^*KgIG{SqbQpxIwmyMlEn` zDo~3OoKI`DVR4Yj7qVp*s5>ZJ(T)a%oK24Y#x^(Vg?YCHu1UouYV<Swu1<5Q3H#Dibg(*34ZffiQMnK=p4Oo) zNL%L`5<|mW06>tpcKfaaawStNx zY`bC@kWg@_%OO_;Z~qSGH3fpbv%9<;8ow(x{->`m<>gqI0-||EvFM<>4Uq=WVHbf0 zKaWPM&fi?o*Wm?)=1st9BOf`0u0^*8D*R(ekjN~OBh=a4##XE3Xm0+yK6lDaV<}=W z)Hv$&JK<}~qwvIF;WsrfFsn-)=MPDVj0yltR220ZB_=RHRjX!6F{~9T$`5NoergA< z_J&35XhTCPW3jpR^xmqf^ehP`o^OFQo+2Y(_rgD%R)t@IgOpSNeO(d}$Kw@>na5P6 zV{YZM?Lthx=$F0(2pP@nJzi!x_%-LRvb*g+l$UKjjJ2-LU!qC<_a_eojha*YE?#KMc6KxDf!et~!{L$_YgSLHF zj0zWGRKdM6dBRG=T@_%K&ubikCckMsOCihkCLg zjVT#@nU#34Fj=C6mO=2@9HjHzBYHC%IE1P;afU(2m|WhTT49FNiJ*N{!OC=nA%+G} z5|n~2cWLF&KWcVyBuZ^U(-Hiify3p?NZN0y6B`D?QHqi5+Wf)*Gnt@~jqI8-+5gWS z0H20jHG7SdglS*;5*P{V1EYyQ>L?`N=`@prewpy~QKZ|Fd>Q9Y8z}$Rh=RIGL7&>+ zH?ck|3-Wqz*a%@2{&^!3%y^P8{P?K%19~Bmpw~VB-K{-a3*NG)Y?^2j?_|;~xLRza z3+c!)L7!wnv`Y^3cavFu>lkO+@98aLBk6@>+l)MTguZ>GDL~+6wAZwPsv!C0M>{8K zhRB~!LK_a9HMbLE~*6Yc5? zeesSqd!+NY=$-qTgLimr-jEFk@Ys#|uy`}VAF0<63=P6}x|-)jG+7rcql4dskeD(X zD;FL+cPbacBoGpNTSI_cuf;Pm@&lFy&PP#!3KUQnp1UP&S;gl{`cvY05Z&7^?xqRe zG$HQn@*1>Xlj7aJBcUkHK(#dBkM4LDb?|}=)}t9=4t!u#_JP2;WcPUocWVQ$4IJ|X zXKmemrsm0NBK>xwa$VsWW+}(FR^G=jA|TSrqx)*Ny%f0I~8@ zwkCGe>BDHAH|HS%fc@+hFJW=U41NXQu7TdnwNe2+-#%g2dpM=5S$I9b=x1NUTJfsF z8oDswzMRBWF9Q6B9Xf#Ri;(uM$!)g)D4c4UQ7(70N98W@mt(5Hf&QOOEx>uWY$ntn zsK;r511dsg1Jf%t`6QTQ)*MWpTEnvz=NM)xDRG#KX+Z!V}>kyA-1!^ROP%osG60PS4#G9 zF$!FjOlwA7<)R}(leK8~)euGIuiyY-E{+&KbS`(se?dgki}cqgRRq`RP*cwCvPlYe z7l|hEd#XW@$B0Iy>i8j-$cyStNT7qT&xf{s2F^jIu*gRcKoOtjw`zUqPd?>xn6=^u zs(f4@B3^hNA+lFmpqxdh#CU`Jd7H^RA+kRcF*Q?=#&)KLMV<+ePF*9`6){+z2)bOt zl@VFJFIH6~&WT2=X?T-l=-P`b*vvux@e5XA!~1DP(IAn{7^XcHLfIlAjT~lxvjb4L z9;tgBmtmIxL7uxQUa<;Zv4w(q_NtL;2l-7y>6lvHogWYD*)IY_Khju%b&NY1)KyFa zQf;D$8mQ`Fs0$8(_3SPZ`lkCcvibbe za!RIT`a=`Cn!L|!l~mx<{CiOq9LF%3caoz^U1Z9>YC1lq?y@_0dOE6YvKe*;Lq$Uz zLxipRpz!SGjI1ug(?vz53kpoQ16UG7H|JQi>|iZG0RqQ{%wWnY(XVf|G{IKVW-|sP zq~*-1P5^{ab;#c_4T5^Lwbs{;q}&3BM^qr33NekG2gsbxKM_x-)taA?Txt1&=j6ej zQpY>!B%pdFut|0Xu>L{McQS+r0Em|89dNd@U|2H`qcV|D9Om2*Z3Jvi6Zi}%U;|vN z;WAih2Bp}SfOU`%jmIK%zI_#}(gc$jYs%$ve@LyDkl#1=oao|7h<`|&%6D`&_V zJZKy}Z=2k`O9B{2kWScq0XNBj(Op*+1!JT8%o!(q8oJFnV6qjaZiT$og$WBDc3;vi z2K{pMjn@;F;t|_*dhHw2{z;mmB#=28?Rw#ckW}jY8S6p#4ih!!u%C{@0c9m}NvAKw zS(%bwEfTsUWNsaD>P0*X)tF_KJyq;}YnQ*mu4@ICk%qt#Rj@hq?O)Py zE5$^0M0~S50pZ4&SLFYec8{)nfT6q;%{ffQ_hV0o%YB05r)-Y^>NW6X_Kp@hCr-FB zB)-MjXXOPquc&xXP`}{H8;?&3%!08>%A7CfC+MvrF*_1=5^fq-$$YAr`B4cGdoyKz zLYwXKSE-VN#ws#okB3`)FHt0z)g*t!acFwPDNtcu-qCmpv{fY9@-fxrOqX|C-?ma^ zZw#!deR)`h`8GmG{C%{If=Qg#g9hgO)(_OjIAPYcBJNATkx*D(CG%0aT7tR?vj(*t zM$Pqi{srx4fZ)%<@P5X5VqO;4V!Xl$TzSlu$eM8zrt5`~- zw5MQx^bK(1{B;>ne}$Vi*qps>w(Hw_9KZZj@u_M614~tfK`X0z*m#PV#STLo>@{r$ zjO|hVd`w6B~esA<~Dx-|bIh5sFV~Hn+kOtTRdo&0q_iwNA1sHB=E!Sg4^$7e_pIV{ANgkG|4tJRisj;S^ox*B@%(p zY>t-vhsV}w`NJkIudl<+q_8HEMi;2O>_A2z2nPebA#9`^uJ)(OTTlMb)!_+esrJBBPq0%+_8Hl$ z303R9piR-XRH+i$;%VbSF>~mjw5m*G7bJ_ES91b@-Exbd+c_xoSFy5*bmu|5NX}(tR+U&-8`F{IqxepDWz4c1k{ba?>kt2 zbx;T>p*|Pw*uSEpveQ&#nuBwRZPlQ}2Mv^8af0lq*J+m|Q8MXe^_#z3?8ci&ev-;* zJ6{w~4?p=Lo$sAfm!ITtZpK?GSZI=RLjcryTdFMY-Wy7MpomCkT*V9$9}59Zmpv)f zi$$cSylN9MGqASkqaOl(u^tnSuhii3i#k|Ow+FDiKU!{Pb835!=>w6+8H%JnbI&FG z3UWY0UwRbxdPbU}ih(f~Yn@zTi%vbDAj%IbS}LcXIZ;T2f2X-kpjmgXf(nTe38jvK z{Ozsfh{;aN1>H*=31xf>Ye0Xm7HjOs^hftCtrv%I60z}{v_wQs883JMzyPIZ%+PQa z8546TI1=!UN2HX9gyJr34+X#%Gh|JeQCC>QKYYHxghC<+-SbM(bhijoDK8!-H}G)B zy4_4(7k#}O{dXiI@;$E4^5fJqa%zip^u4?-qJ4gdjkH^6DU&>5=ip-EG@x86pF`@# zAjS$Y39>him(&ND4Oj1+M9&9rONaDXOfS#j4J!bXkX?t=pUl&0`g54ThYYL{VgfiR zqOK?BVyBq$Y760o=IJPieAKr#sl!CcIf@H1Y(g}3l^4h}(1j}V3X`zPW+4<7=3=cq zt@g4wq6#5}(k51~vXx6}sH&Bc6msaTvNcZ#NSz<3@LwuT#){lbQ>&fsj*;e-#-~QqRCLJc_{wghbK3zrUxsiTS?4_kxy{=1qGOb8~f7VZ_z9lqxpjm=t~ zwh@h5T=Gvc(tt9v559d@erw-h5q~M>=NiY<8(JZQlUjPoKx$` zA|ErDqTcK^?cUShO)dY)p50MsA8v@-c#^yZK-Bc&_tq~w_5iLxP$9CqL+RHjnFn$P zkVLSY&Hl0gl*CHCPDJ~{@7PDexk3&B=;l`t2qr?pg23RK#8AOF&VG#7)Xr5CYkA8F z0l$9fH4F7&LR-m5I+iFYhE93VJg_Ch@6By{mU%EKFaliF z%yQLdW2$04RWSjg#US)58FlyX_an!6%g(uoV2d%7ieV=6zIA`pOeOE5l&?@@(+fPD zeRx>SQVrQk`hpHPYTW&M801e8cr_YQ{$VbW4l3x&OjtwjGw4>kXcp$TOb?Uh(AHqu z8BkP|_=gT1pO4@KefV@|m>#8Ztg0YAjtjA!H#(7Z4$mxMb4N?sdvCnROW2T=Pk)`I z$$Tt5k@tQ_O4@VMcpyLEy5)+BZk{esAo>1=S{OxA)cq>u)9iKom;=G1Udc6k3I4cj z6-03G9{5sZuYQ&=i*H>jK?U%O+5!*TYeMXqoNPpmQNM+wHQ(|{Onf9?O}DxOyM74t zJyF)_H2(2Tlg-(;gO6BhWTjL`)Rn}WlFF$?=e$zXegC!|{iIegd+`PK`H~_V`tX$< z@>|{I>0zcs$FGWZmSoku#vd*Y(;RZhdX-~V3Lf8?FAa&Uv8H>nFdT21T-MI{dNk}T z(Zg&2dcwrqZcZ+tWJhM&I-Olq=(2YfIg(7E&79L~7W89qF3%Y-fyC?0J(PGQs37H{F z^I5*xBQ6XJNbo-8$06Fzz@ebm{yli~?ztOvP_B|aw&((|ob8r^H^zfe^<*0Kx?>J) z#b60uj$soXHpP^HeR+uk5o5cpWKN#yFta^sNB(p z?&o12+|LY_J^eJZe3eNkTsNM#!iy(CfGf&dKZZbhHJp(iItKG>i#J%RA>BauGp^lP;*4#z8ft@g3}G)(Zn zqXj@cqN&Im@3ktg-!Cu~Bjg7r16o8>AJ%mpPOCe5H!_B7OBpWo2FdabZZfwJf(fRxgX)#)GQd#(;C20dz_IR}z z;||BA=;3j$V*UJ!iRCxhWI-PH9z&$e3jwucQPe@_5;XLFwf=#1a(%73vVj?PzY+QX?kRy3jB6rzdXBjz@_xE~UWwtV>wV zjh``@>Po;!Na z)MCYt4ZhGyUuhzuAh4}L?YAeF4=|!;irus+N@bYkMJpKE zT>M}~lC-rVGh3YxKXd4BWHy;Ii@}Cw-6H4MQB1`8bHf2fpJB6P{jjMeDRWw|I6ds0kO=c)i~PHa=jvD|@rvSWk9m`=-2%DiPcC(96@J75IX7r zu9FNMKe|9xYKYw7*Zc=a@!7|;cTK>I`prYPM5OiNK4_ETNlbs*#kEN$wO0)Jn5XjD zltdf;r-evEP{}=zlE@cN{d&`o|_O9wdj?_g@aU$VH9nVvMRk^ruiB|-lu^p zKV%q+<@?;p-h(p4JtIBsP^AmNw*gxD<#NG!3Mm=*lFQW+Vr;Kwf7WvWH1=%t1`_m z2bQF@wGR@j9g}M$$Zba(&4hoxM&ZzeYU}&BYKN0W2;c3TpZg$BMfGNfXJ)u7;m~&J zJ=v0Y(=oCG(boi{lL#O6V<8I<4wYDB+&NN^ z62pUXQ7>P8H$Ix~k5M!No*>XbJ1{oOTuA{8`-*%Ma+4F&b;wpe*t3oCgRNhKK#w%B zlxbfLi9!)M0)rd80u;9{-RXpzV%L4Tw(~_34f9RgPM#}C85@>iCM&73+)rDQ!boV$3cpZS> zrsJL58Lr=#D%)p#ZiZv{zUw0#volCsoIP-o&I6A(uFXvbSL11Wxd`R0YSFaxl?jdd zYo@-DfnYwN*e@!FdGSIHEu{s#%J19~IsbvIrne$MJz|a-D%$A?v_CC|J6)gX#6>Nw zEyu!Fq#KDF%(fn33pgCwKU9XEOI31N{1wA{nXZEGNd4a;vwP5zL?H4^#P9( zsQ2S+FpD=9opXiuPA!|;@o_QuMuSrR*xS$5$0kB=+N2K&b(R^PAX^S3TAyj*v7SYK*y{;F(vez% zPX*(PhJtg4w&mB*qXTNc@V8o|LX3#@b)Q0P|5S(aw)I6;(}K3Omix)Zv0zqsVF4lXcb^uy8XD_zf=b7Sj|LvS zfW{NJ5pJx%s#W4g>-~LE{t=orn!KV}=KGf6i}=+94c7qpo8Y7jKY#MM<`lD#8KCR_ zrdd?Ibz}RIwwBj3&7N$}rrBi<4h@S|012thBA3NXp&4kZszjISdfi1V2AT_y|HS0Y zwVwW-y&3ip&-qiH_^2St0cZPUhrq=wP&^G0N~c+APFQ5XM+CR=pq_tjF-iVV4IC^# zr&yiI2o#^dSO;$MW79AcW~Jit^xZ+BMv23MOL{QNQa4I<`}+Cp+G+XPN{y1cw=@90 zlqDs;6Op6ji{mJgzgkZQkh$HX%JkyaL`zjUZ|R#0C}N-DIS$J?ZtCM05OxBpT+?Bt zz<)QNHrtE9p&!K~@?7YsJN*8U|BTSEmGOop3R36tJ%5OaI+S{9EP6HZ5w{DoUHbwd zDu93uCOtj9X4b7rd1TN&!0&DO#~B<)^eypGEdEQRaZQW!Paw!LWJ7I>?b;p7(mUM1 zJkoi1{8kYWfzO>p9dQYDq(KmOm{_fKv53j9NJ3GMrQ;P$*auDeH|LPwM;P>$-xx>8 z5B~RsDpJ3{-O?vY2wERjs@?3i)sNob=`xuwXUXtK;A(|nmY!Hx;LK&#leF*|3;Blp z8|og3T`X{}synu65rlsu;n}xUZujvPWvstwu5T43n+@LKTA>xl?5jym!Iqn{rD!Yd zp5Syqu%bfxKo!e1s3$YeB^>Pql68hXr>uM9$m;a)_c%1-o^^RY#cgOsdl z;sEJVXgs@Jm6cA?!B(^(1-}GN@v?G88VPpp*{JF@I->06dG^Xzo$B}-(A|!|_3%E- z)h{6KYbYM?{js_(NrPXih@!ZtgIa~c&}TN<91>%Z_^b*}MUjVUNxEsK4)BH&-&ZVF zKRcU57ef!~uZ!yFHF4+Ryh#nXt0k#8KS24Q__l#d7{##ew^jui%XdKF0g|fl-98${ zgr%WV3(tSI}CL|C~O_gn%6={kyj&f~p^94QT3C=5+s3=dQEElq%oe??nj24=oinD1{#o#0; zF&7yTqXZ+M=0vl*O1vH&z?-G&c4y{xXqya|em;&TYBw^+*l#Axr!zN6^6^^x0x!65*->A=P2f_f@me@Wl%?ddhb zOps3n85$(|5Z8yJsUl5mToco1YsYxGT3bvd!(Ae<+_JJ0dl`0igi9Iv{kt1`8CM-0 z0*#(;i%W@@nmcN0##`qq-6N?q$8mS>9w?Wk<{x6|5NXFKj(C4A#&A<)4U!JnD_m!9 zo-#}MBGtFhdC0F3CBjZkhBCw#Q|tfm9Xk2dMunCnF2%vE=-42xQ|DDcC>gu@iIkdk zxon`-|2fBOBpB^ycxG0&s6cD6`&P%#%;m9dv_Tv>zdOYeTUA}V;{yeu=b3BbnLI@@ z#_LeY5Pw*z$$c2SL9Xbn@SlFKnjJ`FyU`Szw9_}TC*uFV2XEhE*d5+m2YBA~GXcIN zkTGEFIY>-g%vnLaA7Tzyo12F=4_E-J9H02YQ{Sh(`nhHTVpv(dKa*SPQn~m#Yl~{a zRLx{;@pZWRM*vr8^gjSNv87s3n?MPDCp=YS0|z)+yseUm@@PpFoU2cPXoZ0yA!%P# zG2_tn=`04_r@0)lbX|`tshRET^wQmO^H_0Ba6JKuv28r6UK zjbG99NoK;~$fYrY(m>Pdea~e39~H4PC#XMySZo+_h7Sp8*`OI!!Tx6@D~Cbp>rb)9 zRu8MDpuP!&rp-iZ@w{$lU*mG6WZQU&v079Q+X-KFuojR|2nAfEUD5&I;+9aGHX*G$ zd3AxBSZURGB_u4oNC=FV>J9is8neuMu~X`+EnDw<#Sq(kXuq#Lj1kX@%7-4Un4RJug9PIarI(wt!RMT@>HH;)>=cjN zl_SDEsfWLUu=09zN%q_|(m2eA&iMpR(RQz-{LQ=TZ=^~|$)V)Q?-8c)!Q9xX=CT%RVS*Cr-y zEH?fU#WI>p_9BD`-epqaXV}AWn+D3R0SMuTJ`cPh8me|*U(W;!SHxT{T$EDp{3EaJ z{old19+1{MUwPE+1Ppx08G^zbs&eua_7MWiFnL4@2fF49i-*R~EP0p@*xer|mc!l# znFf?yJd(0)D=+JHHfI`}MrChazLj>OHJM+pmQCYuRW~eMu(qvLiBE5p;E17j#aRk9 z_VNaiJTB|Ve6_hch^x^hP13l}M5B*>u?8P@M-(Jq{a2j~N*gCLdZ)8p1+>t9Z0zUi zSkJMWwJb|*E}Hu^AHbZV2tx{6P>D-_OA|4eQ$0&i3Z3eZjKg8<7{#5^QxcF|lolMP zS<13kQayQesBGc&6%K%8;*37}AosA{{*%<+IdH0wVVe8xw)^@OSj0S&q$tS;Wm^qdG_5~*~Oyo?O4=*i*n5v zsN*RXD;Tvp9>^k*ZA5tPzwO2^c1h*s<;%(EY6XFyeP_oT)$bNz4Z-%LrlEvxAX;a3 z#Q-rELki5Qxc=qt7~S<*$aR_LbNg&B$Z{Nt6S@C(U4kfaJvjf|lhwf*ML5G29izDz z9RbD#!7oe#=5g)&d%+h9)0@AHO9&X8fAD2j{w0}LUy@3tbo8h*OE^sb`(NNjns1l1 zyu1urBxazF8mj#_?Tw&aV88*#vJyJx&tON%{~V|sYfDmlt>f=qhGAAG_AjH)K&kREh!&9 zIqcg^#x1rvv136~Fvrux9b_pMqw`a$#4h&I#Xsxgf2KLm%D#V0b7z4baz6=l61Sfx zsSZO2a7#bLTRMG=ESS9ApJ_E63uNT?H~AD7NSZVC*_CV)g)Ezz=c!(g{b` zoM!W0*u>eBm*x;k?;-otBoRw>62Y0TQbSP;O=13#Df!=_Tn-K4o|x5t*5Bw~0-KCW zyqIM`VrbIW-wK@Qe^lTia{jKsReeskqDWf_0e4wH*kKSY?4h*=R+p18rhD7)2LhtB!u;5_2lQKk*j60O{?pA}D?l!`+I zv@<%Qa#b+1cV#^Hf2(nyOLcW0e<5;(IV9k-;sHhpoaqZNgw5pO6x68 z38QkMt$KDeM%nnZpe<-mP<@#>(ma8NjFrVwoPh(opsN=|-&UyZ$mm{QoXHEuD>@=9t<0A;mc>rQ2m@2jpF(B3h4}!2Od0WT zQBk?ajZ`&DjYwI-eP&AeO;#iZgL@tF+5)H+=`~2NsY>nBD9qO=Af% z7TIwo4&)th0-3m5De|Zd&Z|V-zg|qU)o?LP{-0}dL&BB3#mvjSd^o{zd~y{(H;5EL zy-6&)6{%7xXx0}#_bV-Dyx58W@91|*8d*sW&P8Z>M#rmQU~gAnp#70*FNl>**K>3~ z{3E8rs*?V?XGaCz#+Si+eBRkWkRYRXF{uZ(0-=)z`VRnA(7j(|u}mjn)(dR_Bc#^b zgKA~dPhwg(pKC3ppz^r=)zXOsBtecY2vMGvz6Xot3rCmgaG&`1pMOszi@6hU8;(uG z(~$GZJ7>&yWF_-k@wlGrtNYH)j=V966-we6F~GQmMHLik@{NE$d&zU&Iz-M|b5;k>4ig)4&b zQAuYOka*KbMni+MD(bjag8g&{gEGUhAPq7ol`KnfbcC{*DApAf7(>Cy5e5bUO3iKw z!;mgy!(y;#%Np+{<2Ejr81>LkQO6K;cJ3r>2TPhd{oRFzMuDt@mB~yK|K15*sQbGU zy1?*HoX}`XnHD)iS})0^Vloiz-OxH4<_OO#5brPzu8i=Wjw69ON`w}-qMsu%ac?77 zoMtL_91$qG)0mOIsP`8NDL_iZj)noZKo%;4#4l_$D4c-aIjy&UNdE9Xz<*m?{vtn1 z$TXgM6>jM?#3_DOVQ&IrR`W`+YSX@2%%&vgO3&Hw;y@RvN*Y9Wywh+u?ImB`~M z0;~!q?bodM=*PJt|3bJ6`kQcf{FiX|T=?AOh}89N?FR}hau+OE=!CDI-_>%=h`7+@ zatr|mMq84m#iUXU6~6(*8QkL*r4M0e6rhwuI07HufS}d%WqyYs)YAh*ewMD;yrwJn z<%T1l-UWXE=Lab#8t3%G0fc?0AO1g+?Xm(NMRv(g+TG*+ZQYqFUVwTPt+C>W5>HB= z=&qg&ctNz#BrF^^F&cyFuMO61@J~N-qcVip_$L)gCnrW-VE(zw8a4kfT-FiW$xZs` z+pyQQ8UxB%sA7|fM?#}b(B0$_Q697Ok^V^IDanqfuZE~IEq)ZO`1Jw0a824H|R$4kl zL>dX{Zec*=0MZ;vLPBYf?gj}Jl~8o>PdN~-u=KH*ua z{((e)DPVndhEc4r7qxd}q-g*M2k4Vcics*a()=FMK{vjIbY-r;LOOmfr9T7dc%;ln zG$vVl3x|^VHB}8-rk_?nTiiIu5AXFXD{JTLYDp^xUBt7b@e{q8+{@IY+4l}{y9>Xfpv@!U$Lvoqy-mf5TKZ&osQ zo0`O{Bd}2Qyc?*#it?V9E2UvsB1Y33?=S7?G^ADTvzb!gc%(JyYk^|%)|5?AN<`Pq zUM$$Ao}+UHpBG7?%VlLc#_~*o(Fohvip`Jq$ScaF>)B@t@7dogd6CGzYdM0=22&k{4`R%=&~ah@m1ca_*4-#o>!kJ@Hi~aK|RwunB@`gsGe*zy?PnejOwrA<%WqE z)`aF8JQ$lXli+`I2RtgC$Ipv<8z>;O9F~NYLL%c9)OCY)N6S^E(<`tEc`*Wai# zeRPQ!0(oR#v;Bf}+U{D7RcL46gC~(u9g0MGKZss6OXz{w1UbO9Ij@#6cd_ina(}5% zdbdyq_IXf^Fyc+4Z;*n06S6i}{j>u?0Ho7*8k0ogbYl}f#5UF%7jg^PK)HlJKlc;dye;?l}bzHOcLuWjtD! zTu{zQyBqc9i~4mZdgOfEl313q;oOKKXMBl=)J-CzfzaJ_ufPP?!!N@Hez_BO_Cl&U zK7*RbAQ3aGuDfU;c5HkDPeF0slVP2zUT%?z3hmUY?SNeH4&#(F-w(Dh`ijmiQu(DY zXpU%FP5_)r!v*EMjl(HY!HjK5fQmljn3(5Qorxq37-iuSbFhSvF@NYZI!1FWcA3KL z^J(+labH~%NfyWmfEyqz^-4$8qkGiVanc+HE{(9xLeSAk{~JcQ8Ixy!Vu1Tzm^$N* z4pX0MLuZ(E#p(KXP(GqVc}}%j6a3?YhD!r_ZT?BFq1&I%gM?Lt;+upu;_DIS1KSKI zrW9&YTnIW@T`cj_7vSusrvyhMunerq1o!b$Y2W6R_U-OuFRBC#q90VaiN9xDSmHpk zYvne-T6`UnY+UjJnCKl<+OVtxlS6Fso_l)D^cGZ87QD%X7TwPZbw3d9H}*GoSfS#d zX0r(bz&i_Ei>LpHj_oJ>Q z1r-Mlwf$Dft^Q3)%`h=rT1ZvAPIx|UB5Mvs&`YKldlreYyyf_C{HTh0Y*3Y3TGJi> zcpk48cm^7B;RBoo&7^e;q{p?j0_bsV?Zt{s-0XFw&9@s|>)nqbTqo=#2GI z{ZTb1d(rTYlpyN?3(|!ziCkDerX2$ zPxPI@Ri-V^4u)A4%*aGqvuvJzUMhM)=AYA-Qx@tjoKN55+Ww_2m)w?F30Tq>|KG?1 z8!dM9frZjJvCBfMy)HJF?6tT{$d$(3L}kJNiE^Ff1#`VY)DQ`btbR{ePO$*`UGPRMJM* zq+>E*Z`ajs9uPp zaYr-FWgEN`fAFbi0S5**TKqYT)!a>rZE+N1?jxHmqB2t6PdSvw=0IkSBJ4 zTOqIm)PA-D(yRSZruM$=!-QKoA0m<}-BZpEX|zn~l=0wu{oIq2=qnuF2#pLMLizi> zyDae*-e-De+7Tk@JKg?s#M&GvRFx|&66B>vq4HM!{yy}LY!md8rk%G+Dda|tOCtlB zHYmsuDic^FOa55gXMkbr3&^DJu2bt*Li2w`ja6L0{eP52=^SV_s8wM)0=B0nu{ z+H4B@J$mC8AiDE6ptsR~1bTZ^;#_A?ogXkv-G=Olj%GNvQggrVD6}(bGboIeW_lnj z4`1{UzdQn+7)7;*#mvvN4lli`ON(p0E&kcgV){j9dZ?2Pu54^m=SqrmM8egMik2wa zp&fDins#OZPCNP_(1Bqezu_v7M$7o}rbm1d6$Zpn$KKol@62awko`@aPt>;F@yWGw z7u5I0Twg(2L^;pF7;kpC3aT5q)9RvD!pbM4N+TKECq_HA^h5R>>Lo~gxb&X{I$U7O z0?xv;IJNbV;Pi1^YM^Pv$L^^RGG6jybnwl(3cu*pNiipp?-xwTqk`Y@NT z#E;EN2<_dwf(NgQU-AoIClQ?-H|ozM70vriU<$+o0qg`N5WKQ86?_fJaB|m^I_^1Q z*MH5)K_$HseQiZJX^C?nEpYT`hG|dx6C8tIPwXNG%Fuquz}DJloND4om<+R+SQk91 zTnt+6$1r`@q`A=`OSeg}b8=@Sg4{}0H4#`vE?KsxmK5$GQ#}#~;P;P5TU-GtkeKHf z6jYderijAc?_;2ofy^-=eVm>O9b8{%2?8l#%2J;@=BD)hh^zQ(KfLO*dnLZlm?t#W z#NptpD}`(30K_dlfehe(Yer`Wkr81nz5YAa#6 zz2=PXC|J;Ck7C)&v5yNU!?V2z!!)QF4xgIS;?d;^32e?I(jL0Mxgkn#9KY46myeS8 zh;|mp(VD`ZrEobvB@AT5BDeTK>e26`ZgquoJ;~@9cj?;!o@k6!xj8&rSsQPtH7A?< zlPs4ClPN5@5hxHH*4CNqy#7sSE#FDUJ|KOiX3+N`ys?fpC{yAY50=eq5u=ZI(G~h^ zrrit(MbN&pi4Jb@c)WVFCQ^S}-w}%~-!DZ@oLY}lzHWR-?B&`i8!(waW0 zk(1HdP!tLCWN!W(=)o|D>BCap2n>eODby?>E^7{#AZT&wlte`G#`_wT01XW`(9g|X zR$x@?5A~A2zp=SlKdq(u@bnk0h&x{!r?qCs#yS(<(Rz5m#KydI6R)9;bl$lXgx6b& zw>5=%#O>W<0>g-_;^!!|y6_U13de;wp}Q)?bXQBR;AUxi%I8b-@qvb%Z8#aT>3eUU zx7b0efSp-NhgQ%tq?c(LlQlVpXboE&djaV;26JLO`MOG|Hel7SaS8(ooUK%V{n-@x zF=*o=RVD36X>UK@M665`^15j|phW=Em9vkL$};A8ZszJ0jrG?J>I+R33x^x3&MG0j zG)`Ztx5JpNGcobR5oY6|C(^8(krJwu6(9>Ft9e+=IJK02S~71Sq@E1#OZiR$PWS7X z_O%PjoF{EKG%NU6NZ)BA61vF_3{Y)gfSTV&8=&WYV=;U{|AsAOm%6P|T4~DPoTw7V z{$VHXmqeAhh86;$`pIdK|G%7u3>lXK0313?g_luj5B>?6s$ctw)^MnL#rn=YEmZ^1 zJCE5rwN~t8$MfHkq@G(Jo!?iwhxTeEY8JmFhQ)t2#^`+y`zUmwk$c@?A{Ae?e(l8t zB6{@nie>$3POLCF(1vm2)5v>=$Lta*UeYNNd25CnFUl^ic(6(YT=#I%Jm|fZ6&WEi z5l76e8rdR0v|lT#^{_0q%ai|r@ap7D!FDy-N=J}N-T=q`RQS$K;y_?9Jlrj3kle53 zt_k-40{>Yh-EY$17okLoo%-OcTP}yXO-#gVE=>8DQ-q*s+F52|D|@Vi5Txkl?ns1p z%?wSrINCE62un~4t?+iBiGo{G?r2xzxx>cd`1o3E>5Z?R!_vahnz!nJ!D4l(>#ruP0OK#-M$1Sf6gksq( zJk0FGa+|^U7ELDCTy+${d_9`ZvZH<-3t;}kXdJ27q#;lBR_M)rNRnezegBGU+m%Tp zGqoSoh)rBZv<73lM_`RriK8JiF})(@eOB;R+wC>Ctvm;f;;|fL4axhSdoap^smcWeGM)HDKX5M3XzK>Z-*UU*x`Sm zq`m}iY-|MGxsFO0S>uVRO7L7F4~JBGJ)yp90NjB;mtL*IL2>Fw;aCPQXqwsnn|t)B zDqJh_H(D3G{WTi>mW)rwNHT1Z0u~u<+VkUS$o+PVOT%(w;2SLv1sT<=CDJDT{{m;* BkxBpn literal 29212 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ÐRzmPrQ!E z7E8H)Wyb;$9Ng%eh+jPtMV@E?_igN=9nE7SL+oy+HQSF-y7H33GX5TN9C_qgtg3nfvTn9u@~o+G`oCF@5h8)lR0mEw+qqY|^ps5=Q{O*ynA@ysG}_-U+8r*| zWM1V#T_o4TUZHg%6=CK}rv`R}NkzHZdV4)YEijzA^Xu)OP1L3lmvDmc;eC^EY(>pF z#!U=8y*j=MNse#c`%`1f1017j@h<)B>`!c%n3yh`yBIti3zn9~9}IF$>z2Ada)M>G z#^RYp^ag^qXp(}?m5G`B@yjlKcrIF*r_0wa0H|TtC9ArMWCr8)mH~v8%dIMw-2mbf zR~T$R+qE%gLqQ}kpCtQK(0a-ILN6~r|I-&vvZT1)dFIBy^m0#n7x@Lj=#Te7jv4Ew zFEgr+tel1MSGeJyLviyH)bX!Jd3Ea6xJ;3IkXR(Gr^x1FI^4*1>= zk$rA5G=AiJBoxPbIJ=mK7tGeR?RUtOpQt~2U*Gh?#rknA9-hH&Z?FX+K~TC4Gg}c{ zvcur%!*8S%-jxg6z7=XCKi_i_IWE~~Iqy_2u8wla`GW4CY&Lf5B@xYmOu3hQ38g;! zfb33xHS&?$%*}&{;p^@UX%L^2_e!(p?xy!Xz@AryzeQf5#rhk$(q}ZPCYwRfmV=<3 z206$cz9sv2t=&Ip$(n^N)w1@VF_{b(Pk~0?Yi9JjI@#5f_#b0t)E){y!&r0+j#& diff --git a/docs/build/media/cmake-cmakelists-error.png b/docs/build/media/cmake-cmakelists-error.png index 6601ecbed3432f79a11921ba63949fcca8264c0d..5c0877845bb281861084952bae7f6e7bfd650de3 100644 GIT binary patch literal 30931 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 literal 35282 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 diff --git a/docs/build/media/cmake-cmakelists.png b/docs/build/media/cmake-cmakelists.png index f957bb6c1d56e6ac22048a43c88c0ad09b5d17ae..58f472977917f3f524099758f646ba04ea3a2931 100644 GIT binary patch literal 9294 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 ZBX{@uSt7_?;eC39f{ZHilaxuo{{U7ocDDck literal 0 HcmV?d00001 diff --git a/docs/build/media/cmake-targets-view2.png b/docs/build/media/cmake-targets-view2.png index 04ae1e2a13ec85b73fee4a01705fc7eed4a1051f..673ddd555bf96c802da67432d0d7b13403624bbe 100644 GIT binary patch literal 7627 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 VCT=0-88~DEWF-|Ps>BQf{s%zSi|YUY literal 13659 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 fZgP1bb;U+dC{ [!NOTE] -> This topic applies to installation of Visual Studio on Windows. [Visual Studio Code](https://code.visualstudio.com/) is a lightweight, cross-platform development environment that runs on Windows, Mac, and Linux systems. The Microsoft [C/C++ for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) extension supports IntelliSense, debugging, code formatting, auto-completion. Visual Studio for Mac doesn't support Microsoft C++, but does support .NET languages and cross-platform development. For installation instructions, see [Install Visual Studio for Mac](/visualstudio/mac/installation/). +> This article applies to installation of Visual Studio on Windows. [Visual Studio Code](https://code.visualstudio.com) is a lightweight, cross-platform development environment that runs on Windows, Mac, and Linux systems. The Microsoft [C/C++ for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) extension supports IntelliSense, debugging, code formatting, autocompletion. Visual Studio for Mac doesn't support Microsoft C++, but does support .NET languages and cross-platform development. For installation instructions, see [Install Visual Studio for Mac](/visualstudio/mac/installation/). -Want to know more about what else is new in this version? See the Visual Studio [release notes](/visualstudio/releases/2022/release-notes/). +To learn about what else is new in this version, see the Visual Studio [release notes](/visualstudio/releases/2022/release-notes/). -Ready to install? We walk you through it, step-by-step. +Ready to install? Use the following step-by-step guide. -### Step 1 - Make sure your computer is ready for Visual Studio +### Step 1 - Prepare your computer for Visual Studio Before you begin installing Visual Studio: @@ -31,28 +31,24 @@ Before you begin installing Visual Studio: 1. Apply the latest Windows updates. These updates ensure that your computer has both the latest security updates and the required system components for Visual Studio. -1. Reboot. The reboot ensures that any pending installs or updates don't hinder the Visual Studio install. +1. Reboot your computer. The reboot ensures that any pending installs or updates don't hinder the Visual Studio install. -1. Free up space. Remove unneeded files and applications from your %SystemDrive% by, for example, running the Disk Cleanup app. +1. Free up disk space. Remove unneeded files and applications from your %SystemDrive% by, for example, running the Disk Cleanup app. For questions about running previous versions of Visual Studio side by side with Visual Studio 2022, see the [Visual Studio 2022 Platform Targeting and Compatibility](/visualstudio/releases/2022/compatibility/) page. ### Step 2 - Download Visual Studio -Next, download the Visual Studio bootstrapper file. To do so, choose the following button to go to the Visual Studio download page. Select the edition of Visual Studio that you want and choose the **Free trial** or **Free download** button. +Select the following button to go to the Visual Studio download page, and download the Visual Studio bootstrapper file. Select the edition of Visual Studio that you want and choose the **Free trial** or **Free download** button. > [!div class="button"] > [Download Visual Studio](https://visualstudio.microsoft.com/downloads/) -### Step 3 - Install the Visual Studio installer +### Step 3 - Install the Visual Studio Installer Run the bootstrapper file you downloaded to install the Visual Studio Installer. This new lightweight installer includes everything you need to both install and customize Visual Studio. -1. From your **Downloads** folder, double-click the bootstrapper that matches or is similar to one of the following files: - - - **vs_community.exe** for Visual Studio Community - - **vs_professional.exe** for Visual Studio Professional - - **vs_enterprise.exe** for Visual Studio Enterprise +1. From your *Downloads* folder, double-click the bootstrapper file called *VisualStudioSetup.exe*. If you receive a User Account Control notice, choose **Yes** to allow the bootstrapper to run. @@ -60,40 +56,40 @@ Run the bootstrapper file you downloaded to install the Visual Studio Installer. ### Step 4 - Choose workloads -After the installer is installed, you can use it to customize your installation by selecting the *workloads*, or feature sets, that you want. Here's how. +You can use the installer to customize your installation by selecting the *workloads*, or feature sets, that you want. 1. Find the workload you want in the **Installing Visual Studio** screen. - :::image type="content" source="../get-started/media/vs2022-installer-workloads.png" alt-text="Visual Studio installer with the Desktop development with C++ workload selected." lightbox="../get-started/media/vs2022-installer-workloads.png"::: - - For core C and C++ support, choose the "Desktop development with C++" workload. It comes with the default core editor, which includes basic code editing support for over 20 languages, the ability to open and edit code from any folder without requiring a project, and integrated source code control. + :::image type="content" source="../get-started/media/vs2022-installer-workloads.png" alt-text="Screenshot of the Visual Studio 2022 installer with the Desktop development with C plus plus workload selected." lightbox="../get-started/media/vs2022-installer-workloads.png"::: - Other workloads support more kinds of development. For example, choose the "Universal Windows Platform development" workload to create apps that use the Windows Runtime for the Microsoft Store. Choose "Game development with C++" to create games that use DirectX, Unreal, and Cocos2d. Choose "Linux development with C++" to target Linux platforms, including IoT development. + For core C and C++ support, choose the **Desktop development with C++** workload. It comes with the default core editor, which includes basic code editing support for more than 20 languages, the ability to open and edit code from any folder without requiring a project, and integrated source code control. The **Installation details** pane lists the included and optional components installed by each workload. You can select or deselect optional components in this list. For example, to support development by using the Visual Studio 2017 or 2015 compiler toolsets, choose the MSVC v141 or MSVC v140 optional components. You can add support for MFC, the experimental Modules language extension, IncrediBuild, and more. -1. After you choose the workload(s) and optional components you want, choose **Install**. + Other workloads support more kinds of development. For example, choose the **Universal Windows Platform development** workload to create apps that use the Windows Runtime for the Microsoft Store. Choose **Game development with C++** to create games that use DirectX, Unreal, or Cocos2d. Choose **Linux development with C++** to target Linux platforms, including IoT development. + +1. After you choose the workloads and optional components you want, choose **Install**. Next, status screens appear that show the progress of your Visual Studio installation. > [!TIP] > At any time after installation, you can install workloads or components that you didn't install initially. If you have Visual Studio open, go to **Tools** > **Get Tools and Features...** which opens the Visual Studio Installer. Or, open **Visual Studio Installer** from the Start menu. From there, you can choose the workloads or components that you wish to install. Then, choose **Modify**. -### Step 5 - Choose individual components (Optional) +### Step 5 - Choose individual components (optional) If you don't want to use the Workloads feature to customize your Visual Studio installation, or you want to add more components than a workload installs, you can do so by installing or adding individual components from the **Individual components** tab. Choose what you want, and then follow the prompts. -### Step 6 - Install language packs (Optional) +### Step 6 - Install language packs (optional) By default, the installer program tries to match the language of the operating system when it runs for the first time. To install Visual Studio in a language of your choosing, choose the **Language packs** tab from the Visual Studio Installer, and then follow the prompts. - :::image type="content" source="../get-started/media/vs-installer-language-packs.png" alt-text="Screenshot of the Visual Studio Installer, showing the Install language packs tab view and the languages you can choose from like English, Spanish, Chinese (simplified or traditional), and more." lightbox="../get-started/media/vs-installer-language-packs.png"::: + :::image type="content" source="../get-started/media/vs-installer-language-packs.png" alt-text="Screenshot of the Visual Studio Installer, showing the Install language packs tab view and the languages you can choose from like English, Spanish, Chinese (simplified or traditional)." lightbox="../get-started/media/vs-installer-language-packs.png"::: #### Change the installer language from the command line -Another way that you can change the default language is by running the installer from the command line. For example, you can force the installer to run in English by using the following command: `vs_installer.exe --locale en-US`. The installer will remember this setting when it's run the next time. The installer supports the following language tokens: zh-cn, zh-tw, cs-cz, en-us, es-es, fr-fr, de-de, it-it, ja-jp, ko-kr, pl-pl, pt-br, ru-ru, and tr-tr. +Another way that you can change the default language is by running the installer from the command line. For example, you can force the installer to run in English by using the following command: `vs_installer.exe --locale en-US`. The installer remembers this setting when it's run the next time. The installer supports the following language tokens: zh-cn, zh-tw, cs-cz, en-us, es-es, fr-fr, de-de, it-it, ja-jp, ko-kr, pl-pl, pt-br, ru-ru, and tr-tr. -### Step 7 - Change the installation location (Optional) +### Step 7 - Change the installation location (optional) You can reduce the installation footprint of Visual Studio on your system drive. You can choose to move the download cache, shared components, SDKs, and tools to different drives, and keep Visual Studio on the drive that runs it the fastest. @@ -106,9 +102,9 @@ You can reduce the installation footprint of Visual Studio on your system drive. 1. On the start window, choose **Create a new project**. -1. In the search box, enter the type of app you want to create to see a list of available templates. The list of templates depends on the workload(s) that you chose during installation. To see different templates, choose different workloads. +1. In the search box, enter the type of app you want to create to see a list of available templates. The list of templates depends on the workloads that you chose during installation. To see different templates, choose different workloads. - You can also filter your search for a specific programming language by using the **Language** drop-down list. You can filter by using the **Platform** list and the **Project type** list, too. + You can also filter your search for a specific programming language by using the **Language** dropdown list. You can filter by using the **Platform** list and the **Project type** list, too. 1. Visual Studio opens your new project, and you're ready to code! @@ -116,18 +112,18 @@ You can reduce the installation footprint of Visual Studio on your system drive. ::: moniker range="msvc-160" -## Visual Studio 2019 Installation +## Visual Studio 2019 installation -Welcome to Visual Studio 2019! In this version, it's easy to choose and install just the features you need. And because of its reduced minimum footprint, it installs quickly and with less system impact. +Welcome to Visual Studio 2019! In this version, it's easy to choose and install just the features you need. Because of its reduced minimum footprint, Visual Studio installs quickly and with less system impact. > [!NOTE] -> This topic applies to installation of Visual Studio on Windows. [Visual Studio Code](https://code.visualstudio.com/) is a lightweight, cross-platform development environment that runs on Windows, Mac, and Linux systems. The Microsoft [C/C++ for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) extension supports IntelliSense, debugging, code formatting, auto-completion. Visual Studio for Mac doesn't support Microsoft C++, but does support .NET languages and cross-platform development. For installation instructions, see [Install Visual Studio for Mac](/visualstudio/mac/installation/). +> This article applies to installation of Visual Studio on Windows. [Visual Studio Code](https://code.visualstudio.com) is a lightweight, cross-platform development environment that runs on Windows, Mac, and Linux systems. The Microsoft [C/C++ for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) extension supports IntelliSense, debugging, code formatting, autocompletion. Visual Studio for Mac doesn't support Microsoft C++, but does support .NET languages and cross-platform development. For installation instructions, see [Install Visual Studio for Mac](/visualstudio/mac/installation/). -Want to know more about what else is new in this version? See the Visual Studio [release notes](/visualstudio/releases/2019/release-notes/). +To learn about what else is new in this version, see the Visual Studio [release notes](/visualstudio/releases/2019/release-notes/). -Ready to install? We walk you through it, step-by-step. +Ready to install? Use the following step-by-step guide. -### Step 1 - Make sure your computer is ready for Visual Studio +### Step 1 - Prepare your computer for Visual Studio Before you begin installing Visual Studio: @@ -135,28 +131,24 @@ Before you begin installing Visual Studio: 1. Apply the latest Windows updates. These updates ensure that your computer has both the latest security updates and the required system components for Visual Studio. -1. Reboot. The reboot ensures that any pending installs or updates don't hinder the Visual Studio install. +1. Reboot your computer. The reboot ensures that any pending installs or updates don't hinder the Visual Studio install. -1. Free up space. Remove unneeded files and applications from your %SystemDrive% by, for example, running the Disk Cleanup app. +1. Free up disk space. Remove unneeded files and applications from your %SystemDrive% by, for example, running the Disk Cleanup app. For questions about running previous versions of Visual Studio side by side with Visual Studio 2019, see the [Visual Studio 2019 Platform Targeting and Compatibility](/visualstudio/releases/2019/compatibility/) page. ### Step 2 - Download Visual Studio -Next, download the Visual Studio bootstrapper file. To do so, choose the following button to go to the Visual Studio download page. Choose the Download button, then you can select the edition of Visual Studio that you want. +Select the following button to go to the Visual Studio older downloads page, and download the Visual Studio 2019 bootstrapper file. > [!div class="button"] > [Download Visual Studio 2019](https://visualstudio.microsoft.com/vs/older-downloads/#visual-studio-2019-and-other-products) -### Step 3 - Install the Visual Studio installer +### Step 3 - Install the Visual Studio Installer Run the bootstrapper file you downloaded to install the Visual Studio Installer. This new lightweight installer includes everything you need to both install and customize Visual Studio. -1. From your **Downloads** folder, double-click the bootstrapper that matches or is similar to one of the following files: - - - **vs_community.exe** for Visual Studio Community - - **vs_professional.exe** for Visual Studio Professional - - **vs_enterprise.exe** for Visual Studio Enterprise +1. From your *Downloads* folder, double-click the bootstrapper file. If you receive a User Account Control notice, choose **Yes** to allow the bootstrapper to run. @@ -164,46 +156,46 @@ Run the bootstrapper file you downloaded to install the Visual Studio Installer. ### Step 4 - Choose workloads -After the installer is installed, you can use it to customize your installation by selecting the *workloads*, or feature sets, that you want. Here's how. +You can use the installer to customize your installation by selecting the *workloads*, or feature sets, that you want. 1. Find the workload you want in the **Installing Visual Studio** screen. - ![Visual Studio 2019: Install a workload.](../get-started/media/vs-installer-workloads.png) + :::image type="content" source="../get-started/media/vs-installer-workloads.png" alt-text="Screenshot of the Visual Studio 2019 installer." lightbox="../get-started/media/vs-installer-workloads.png"::: - For core C and C++ support, choose the "Desktop development with C++" workload. It comes with the default core editor, which includes basic code editing support for over 20 languages, the ability to open and edit code from any folder without requiring a project, and integrated source code control. - - Other workloads support more kinds of development. For example, choose the "Universal Windows Platform development" workload to create apps that use the Windows Runtime for the Microsoft Store. Choose "Game development with C++" to create games that use DirectX, Unreal, and Cocos2d. Choose "Linux development with C++" to target Linux platforms, including IoT development. + For core C and C++ support, choose the **Desktop development with C++** workload. It comes with the default core editor, which includes basic code editing support for over 20 languages, the ability to open and edit code from any folder without requiring a project, and integrated source code control. The **Installation details** pane lists the included and optional components installed by each workload. You can select or deselect optional components in this list. For example, to support development by using the Visual Studio 2017 or 2015 compiler toolsets, choose the MSVC v141 or MSVC v140 optional components. You can add support for MFC, the experimental Modules language extension, IncrediBuild, and more. -1. After you choose the workload(s) and optional components you want, choose **Install**. + Other workloads support more kinds of development. For example, choose the **Universal Windows Platform development** workload to create apps that use the Windows Runtime for the Microsoft Store. Choose **Game development with C++** to create games that use DirectX, Unreal, and Cocos2d. Choose **Linux development with C++** to target Linux platforms, including IoT development. + +1. After you choose the workloads and optional components you want, choose **Install**. Next, status screens appear that show the progress of your Visual Studio installation. > [!TIP] > At any time after installation, you can install workloads or components that you didn't install initially. If you have Visual Studio open, go to **Tools** > **Get Tools and Features...** which opens the Visual Studio Installer. Or, open **Visual Studio Installer** from the Start menu. From there, you can choose the workloads or components that you wish to install. Then, choose **Modify**. -### Step 5 - Choose individual components (Optional) +### Step 5 - Choose individual components (optional) -If you don't want to use the Workloads feature to customize your Visual Studio installation, or you want to add more components than a workload installs, you can do so by installing or adding individual components from the **Individual components** tab. Choose what you want, and then follow the prompts. +If you don't want to use the Workloads feature to customize your Visual Studio installation, or if you want to add more components than a workload installs, you can do so by installing or adding individual components from the **Individual components** tab. Choose what you want, and then follow the prompts. - ![Screenshot of the Visual Studio Installer, showing the Install individual components tab view.](../get-started/media/vs-installer-individual-components.png "Install Visual Studio individual components") +:::image type="content" source="../get-started/media/vs-installer-individual-components.png" alt-text="Screenshot of the Visual Studio Installer, showing the Install individual components tab view." lightbox="../get-started/media/vs-installer-individual-components.png"::: -### Step 6 - Install language packs (Optional) +### Step 6 - Install language packs (optional) By default, the installer program tries to match the language of the operating system when it runs for the first time. To install Visual Studio in a language of your choosing, choose the **Language packs** tab from the Visual Studio Installer, and then follow the prompts. - ![Screenshot of the Visual Studio Installer, showing the Install language packs tab view.](../get-started/media/vs-installer-language-packs.png "Install Visual Studio language packs") +:::image type="content" source="../get-started/media/vs-installer-language-packs.png" alt-text="Screenshot of the Visual Studio Installer, showing the Install language packs tab view." lightbox="../get-started/media/vs-installer-language-packs.png"::: #### Change the installer language from the command line Another way that you can change the default language is by running the installer from the command line. For example, you can force the installer to run in English by using the following command: `vs_installer.exe --locale en-US`. The installer will remember this setting when it's run the next time. The installer supports the following language tokens: zh-cn, zh-tw, cs-cz, en-us, es-es, fr-fr, de-de, it-it, ja-jp, ko-kr, pl-pl, pt-br, ru-ru, and tr-tr. -### Step 7 - Change the installation location (Optional) +### Step 7 - Change the installation location (optional) You can reduce the installation footprint of Visual Studio on your system drive. You can choose to move the download cache, shared components, SDKs, and tools to different drives, and keep Visual Studio on the drive that runs it the fastest. - ![Screenshot of the Visual Studio Installer, showing the installation locations tab view.](../get-started/media/vs-installer-installation-locations.png "Change the installation location") +:::image type="content" source="../get-started/media/vs-installer-installation-locations.png" alt-text="Screenshot of the Visual Studio Installer, showing the installation locations tab view." lightbox="../get-started/media/vs-installer-installation-locations.png"::: > [!IMPORTANT] > You can select a different drive only when you first install Visual Studio. If you've already installed it and want to change drives, you must uninstall Visual Studio and then reinstall it. @@ -214,9 +206,9 @@ You can reduce the installation footprint of Visual Studio on your system drive. 1. On the start window, choose **Create a new project**. -1. In the search box, enter the type of app you want to create to see a list of available templates. The list of templates depends on the workload(s) that you chose during installation. To see different templates, choose different workloads. +1. In the search box, enter the type of app you want to create to see a list of available templates. The list of templates depends on the workloads that you chose during installation. To see different templates, choose different workloads. - You can also filter your search for a specific programming language by using the **Language** drop-down list. You can filter by using the **Platform** list and the **Project type** list, too. + You can also filter your search for a specific programming language by using the **Language** dropdown list. You can filter by using the **Platform** list and the **Project type** list, too. 1. Visual Studio opens your new project, and you're ready to code! @@ -224,14 +216,12 @@ You can reduce the installation footprint of Visual Studio on your system drive. ::: moniker range="msvc-150" -## Visual Studio 2017 Installation +## Visual Studio 2017 installation -In Visual Studio 2017, it's easy to choose and install just the features you need. And because of its reduced minimum footprint, it installs quickly and with less system impact. +In Visual Studio 2017, it's easy to choose and install just the features you need. Because of its reduced minimum footprint, it installs quickly and with less system impact. ### Prerequisites -- A broadband internet connection. The Visual Studio installer can download several gigabytes of data. - - A computer that runs Microsoft Windows 7 or later versions. We recommend the latest version of Windows for the best development experience. Make sure that the latest updates are applied to your system before you install Visual Studio. - Enough free disk space. Visual Studio requires at least 7 GB of disk space, and can take 50 GB or more if many common options are installed. We recommend you install it on your C: drive. @@ -240,22 +230,19 @@ For details on the disk space and operating system requirements, see [Visual Stu ### Download and install -1. To download the latest Visual Studio 2017 installer for Windows, go to the Microsoft Visual Studio [Older downloads](https://visualstudio.microsoft.com/vs/older-downloads/#visual-studio-2017-and-other-products) page. Expand the **2017** section, and choose the **Download** button. - - >[!Tip] - > The Community edition is for individual developers, classroom learning, academic research, and open source development. For other uses, install Visual Studio 2017 Professional or Visual Studio 2017 Enterprise. +1. To download the Visual Studio 2017 installer for Windows, go to the Visual Studio [older downloads](https://visualstudio.microsoft.com/vs/older-downloads/#visual-studio-2017-and-other-products) page. Expand the **2017** section, and choose the **Download** button. -1. Find the installer file you downloaded and run it. The downloaded file might be displayed in your browser, or you might find it in your Downloads folder. The installer needs Administrator privileges to run. You might see a **User Account Control** dialog asking you to give permission to let the installer make changes to your system; choose **Yes**. If you're having trouble, find the downloaded file in File Explorer, right-click on the installer icon, and choose **Run as Administrator** from the context menu. +1. Find the installer file you downloaded and run it. The downloaded file might be displayed in your browser, or you might find it in your *Downloads* folder. The installer needs Administrator privileges to run. You might see a **User Account Control** dialog asking you to give permission to let the installer make changes to your system; choose **Yes**. If you're having trouble, find the downloaded file in File Explorer, right-click on the installer icon, and choose **Run as Administrator** from the context menu. - ![What you see when you download and install the Visual Studio Installer.](media/vscpp-concierge-run-installer.gif "Download and install the Visual Studio Installer") + :::image type="content" source="media/vscpp-concierge-run-installer.gif" alt-text="Animation that shows the Visual Studio Installer."::: 1. The installer presents you with a list of workloads, which are groups of related options for specific development areas. Support for C++ is now part of optional workloads that aren't installed by default. - ![Detail showing the Desktop development with C++ workload.](media/desktop-development-with-cpp.png "Desktop development with C++") + :::image type="content" source="media/desktop-development-with-cpp.png" alt-text="Screenshot showing the Desktop development with C plus plus workload."::: For C and C++, select the **Desktop development with C++** workload and then choose **Install**. - ![What you see when you select the Desktop development with C++ workload then choose the Install button.](media/vscpp-concierge-choose-workload.gif "Install the Desktop development with C++ workload") + :::image type="content" source="media/vscpp-concierge-choose-workload.gif" alt-text="Animation that shows the Desktop development with C plus plus workload then choose the Install button."::: 1. When the installation completes, choose the **Launch** button to start Visual Studio. @@ -265,7 +252,7 @@ For details on the disk space and operating system requirements, see [Visual Stu 1. When Visual Studio opens, check to see if the flag icon in the title bar is highlighted: - ![Visual Studio notification flag.](media/vscpp-first-start-page-flag.png "Visual Studio 2017 notification flag") + :::image type="content" source="media/vscpp-first-start-page-flag.png" alt-text="Screenshot of the Visual Studio notification flag."::: If it's highlighted, select it to open the **Notifications** window. If there are any updates available for Visual Studio, we recommend you install them now. Once the installation is complete, restart Visual Studio. @@ -273,9 +260,9 @@ For details on the disk space and operating system requirements, see [Visual Stu ::: moniker range=" [!div class="nextstepaction"] -> [Create a C++ project](vscpp-step-1-create.md) +> [Create a C++ console app project](vscpp-step-1-create.md) From e2e1bbd5745033b36b44c5871e16bee7b2f4cd22 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 16 Mar 2025 18:25:06 +0800 Subject: [PATCH 0281/2255] Remove more stray trailing escapes --- docs/assembler/masm/dot-code.md | 2 +- docs/build/reference/arch-arm64.md | 2 +- ...le-generate-profiling-instrumented-build.md | 2 +- docs/build/reference/zc-tlsguards.md | 2 +- .../reference/log-logf-log10-log10f.md | 2 +- .../strrchr-wcsrchr-mbsrchr-mbsrchr-l.md | 2 +- docs/code-quality/c28196.md | 2 +- docs/mfc/reference/cdockablepane-class.md | 2 +- .../reference/cmfcpropertygridctrl-class.md | 16 ++++++++-------- .../cmfcpropertygridproperty-class.md | 6 +++--- docs/mfc/reference/cmfcribbonbar-class.md | 6 +++--- docs/mfc/reference/cmfctoolbar-class.md | 18 +++++++++--------- docs/mfc/reference/cwinappex-class.md | 2 +- docs/standard-library/unordered-map-class.md | 2 +- 14 files changed, 33 insertions(+), 33 deletions(-) diff --git a/docs/assembler/masm/dot-code.md b/docs/assembler/masm/dot-code.md index 0a87ecdd4ce..00d75a8d7c8 100644 --- a/docs/assembler/masm/dot-code.md +++ b/docs/assembler/masm/dot-code.md @@ -16,7 +16,7 @@ When using 32-bit MASM, this should be used along with [.MODEL](dot-model.md). > **.CODE** ⟦*name*⟧\ > ⟦ *segmentItem* ⟧...\ -> ⟦ *codesegmentnameId* **ENDS**;;⟧\ +> ⟦ *codesegmentnameId* **ENDS**;;⟧ ### Parameters diff --git a/docs/build/reference/arch-arm64.md b/docs/build/reference/arch-arm64.md index dd54dee205e..d3eef64f574 100644 --- a/docs/build/reference/arch-arm64.md +++ b/docs/build/reference/arch-arm64.md @@ -27,7 +27,7 @@ You can specify an ARM64 extension from Armv8.0-A through Armv8.9-A, and Armv9.0 > [!NOTE] > Depending on your version of Visual Studio, the compiler may not yet generate instructions from all feature sets required by the extension level you specify. For example, **`/arch:armv8.1`** allows the `*Interlocked*` intrinsic functions to use the appropriate atomic instruction introduced with the Armv8.1-A extension feature `FEAT_LSE`, but compiler support requires Visual Studio 2022 version 17.2 or later. -The `_M_ARM64` macro is defined by default when compiling for an ARM64 target. For more information, see [Predefined macros](../../preprocessor/predefined-macros.md)\ +The `_M_ARM64` macro is defined by default when compiling for an ARM64 target. For more information, see [Predefined macros](../../preprocessor/predefined-macros.md). The `__ARM_ARCH` macro is defined for `/arch:ARMv8.0` and higher. It indicates the ARM architecture extension level that the compiler is targeting. For more information, see [Predefined macros](../../preprocessor/predefined-macros.md). diff --git a/docs/build/reference/genprofile-fastgenprofile-generate-profiling-instrumented-build.md b/docs/build/reference/genprofile-fastgenprofile-generate-profiling-instrumented-build.md index e77bc2bfd9c..0f0c9175a75 100644 --- a/docs/build/reference/genprofile-fastgenprofile-generate-profiling-instrumented-build.md +++ b/docs/build/reference/genprofile-fastgenprofile-generate-profiling-instrumented-build.md @@ -12,7 +12,7 @@ Specifies generation of a *`.pgd`* file by the linker to support profile-guided ## Syntax > **`/GENPROFILE`**\[**`:`**_`profile-argument`_\[**`,`**_`profile-argument`_ ...]]\ -> **`/FASTGENPROFILE`**\[**`:`**_`profile-argument`_\[**`,`**_`profile-argument`_ ...]]\ +> **`/FASTGENPROFILE`**\[**`:`**_`profile-argument`_\[**`,`**_`profile-argument`_ ...]] > *`profile-argument`*\ >  { **`COUNTER32`** | **`COUNTER64`** }\ diff --git a/docs/build/reference/zc-tlsguards.md b/docs/build/reference/zc-tlsguards.md index dfaf7ff2d06..60d7174224f 100644 --- a/docs/build/reference/zc-tlsguards.md +++ b/docs/build/reference/zc-tlsguards.md @@ -29,4 +29,4 @@ The **`/Zc:tlsGuards`** option is new in Visual Studio 2019 version 16.5. This o ## See also -[`/Zc` (Conformance)](zc-conformance.md)\ +[`/Zc` (Conformance)](zc-conformance.md) diff --git a/docs/c-runtime-library/reference/log-logf-log10-log10f.md b/docs/c-runtime-library/reference/log-logf-log10-log10f.md index 475f4668707..812a0c3f58a 100644 --- a/docs/c-runtime-library/reference/log-logf-log10-log10f.md +++ b/docs/c-runtime-library/reference/log-logf-log10-log10f.md @@ -127,4 +127,4 @@ Log base 2 of 65536.000000 is 16.000000 [`_matherr`](matherr.md) \ [`pow`, `powf`, `powl`](pow-powf-powl.md) \ [`_CIlog`](../cilog.md) \ -[`_CIlog10`](../cilog10.md)\ +[`_CIlog10`](../cilog10.md) diff --git a/docs/c-runtime-library/reference/strrchr-wcsrchr-mbsrchr-mbsrchr-l.md b/docs/c-runtime-library/reference/strrchr-wcsrchr-mbsrchr-mbsrchr-l.md index 90ada776505..1909542e816 100644 --- a/docs/c-runtime-library/reference/strrchr-wcsrchr-mbsrchr-mbsrchr-l.md +++ b/docs/c-runtime-library/reference/strrchr-wcsrchr-mbsrchr-mbsrchr-l.md @@ -131,4 +131,4 @@ For an example of using **`strrchr`**, see [`strchr`](strchr-wcschr-mbschr-mbsch [`strcspn`, `wcscspn`, `_mbscspn`, `_mbscspn_l`](strcspn-wcscspn-mbscspn-mbscspn-l.md)\ [`_strnicmp`, `_wcsnicmp`, `_mbsnicmp`, `_strnicmp_l`, `_wcsnicmp_l`, `_mbsnicmp_l`](strnicmp-wcsnicmp-mbsnicmp-strnicmp-l-wcsnicmp-l-mbsnicmp-l.md)\ [`strpbrk`, `wcspbrk`, `_mbspbrk`, `_mbspbrk_l`](strpbrk-wcspbrk-mbspbrk-mbspbrk-l.md)\ -[`strspn`, `wcsspn`, `_mbsspn`, `_mbsspn_l`](strspn-wcsspn-mbsspn-mbsspn-l.md)\ +[`strspn`, `wcsspn`, `_mbsspn`, `_mbsspn_l`](strspn-wcsspn-mbsspn-mbsspn-l.md) diff --git a/docs/code-quality/c28196.md b/docs/code-quality/c28196.md index 4bd26b41621..cfe6b8789d5 100644 --- a/docs/code-quality/c28196.md +++ b/docs/code-quality/c28196.md @@ -51,4 +51,4 @@ Item *get_item(_In_reads_(len) Item *items, size_t len, size_t index) { ## See also [Annotating function parameters and return values](./annotating-function-parameters-and-return-values.md)\ -[Specifying When and Where an Annotation Applies](./specifying-when-and-where-an-annotation-applies.md)\ +[Specifying When and Where an Annotation Applies](./specifying-when-and-where-an-annotation-applies.md) diff --git a/docs/mfc/reference/cdockablepane-class.md b/docs/mfc/reference/cdockablepane-class.md index de861c46d4c..7b65d85589f 100644 --- a/docs/mfc/reference/cdockablepane-class.md +++ b/docs/mfc/reference/cdockablepane-class.md @@ -1201,7 +1201,7 @@ virtual void OnAfterChangeParent(CWnd* pWndOldParent); ### Parameters -[in] *`pWndOldParent`*\ +[in] *`pWndOldParent`* ### Remarks diff --git a/docs/mfc/reference/cmfcpropertygridctrl-class.md b/docs/mfc/reference/cmfcpropertygridctrl-class.md index 319ba89f9d9..26f2a30642b 100644 --- a/docs/mfc/reference/cmfcpropertygridctrl-class.md +++ b/docs/mfc/reference/cmfcpropertygridctrl-class.md @@ -179,7 +179,7 @@ virtual HRESULT accSelect( ### Parameters [in] *`flagsSelect`*\ -[in] *`varChild`*\ +[in] *`varChild`* ### Return Value @@ -235,7 +235,7 @@ void AlwaysShowUserToolTip(BOOL bShow = TRUE); ### Parameters -[in] *`bShow`*\ +[in] *`bShow`* ### Remarks @@ -524,7 +524,7 @@ virtual HRESULT get_accChildCount(long* pcountChildren); ### Parameters -[in] *`pcountChildren`*\ +[in] *`pcountChildren`* ### Return Value @@ -538,7 +538,7 @@ virtual HRESULT get_accFocus(VARIANT* pvarChild); ### Parameters -[in] *`pvarChild`*\ +[in] *`pvarChild`* ### Return Value @@ -555,7 +555,7 @@ virtual HRESULT get_accHelp( ### Parameters [in] *`varChild`*\ -[in] *`pszHelp`*\ +[in] *`pszHelp`* ### Return Value @@ -574,7 +574,7 @@ virtual HRESULT get_accHelpTopic( [in] *`pszHelpFile`*\ [in] *`varChild`*\ -[in] *`pidTopic`*\ +[in] *`pidTopic`* ### Return Value @@ -591,7 +591,7 @@ virtual HRESULT get_accKeyboardShortcut( ### Parameters [in] *`varChild`*\ -[in] *`pszKeyboardShortcut`*\ +[in] *`pszKeyboardShortcut`* ### Return Value @@ -605,7 +605,7 @@ virtual HRESULT get_accSelection(VARIANT* pvarChildren); ### Parameters -[in] *`pvarChildren`*\ +[in] *`pvarChildren`* ### Return Value diff --git a/docs/mfc/reference/cmfcpropertygridproperty-class.md b/docs/mfc/reference/cmfcpropertygridproperty-class.md index 31a00e36f8f..e5f8a837edd 100644 --- a/docs/mfc/reference/cmfcpropertygridproperty-class.md +++ b/docs/mfc/reference/cmfcpropertygridproperty-class.md @@ -1169,7 +1169,7 @@ virtual void OnKillSelection(CMFCPropertyGridProperty*); ### Parameters -[in] *`CMFCPropertyGridProperty*`*\ +[in] *`CMFCPropertyGridProperty*`* ### Remarks @@ -1183,7 +1183,7 @@ virtual void OnPosSizeChanged(CRect); ### Parameters -[in] *`CRect`*\ +[in] *`CRect`* ### Remarks @@ -1264,7 +1264,7 @@ virtual void OnSetSelection CMFCPropertyGridProperty*); ### Parameters -[in] *`CMFCPropertyGridProperty*`*\ +[in] *`CMFCPropertyGridProperty*`* ### Remarks diff --git a/docs/mfc/reference/cmfcribbonbar-class.md b/docs/mfc/reference/cmfcribbonbar-class.md index f3a5d7895eb..b3ec1757ee4 100644 --- a/docs/mfc/reference/cmfcribbonbar-class.md +++ b/docs/mfc/reference/cmfcribbonbar-class.md @@ -1304,7 +1304,7 @@ virtual void OnEditContextMenu( ### Parameters [in] *`pEdit`*\ -[in] *`point`*\ +[in] *`point`* ### Remarks @@ -1359,7 +1359,7 @@ virtual BOOL OnShowRibbonContextMenu( [in] *`pWnd`*\ [in] *`x`*\ [in] *`y`*\ -[in] *`pHit`*\ +[in] *`pHit`* ### Return Value @@ -1380,7 +1380,7 @@ virtual BOOL OnShowRibbonQATMenu( [in] *`pWnd`*\ [in] *`x`*\ [in] *`y`*\ -[in] *`pHit`*\ +[in] *`pHit`* ### Return Value diff --git a/docs/mfc/reference/cmfctoolbar-class.md b/docs/mfc/reference/cmfctoolbar-class.md index 236254137a2..bfba798f1dc 100644 --- a/docs/mfc/reference/cmfctoolbar-class.md +++ b/docs/mfc/reference/cmfctoolbar-class.md @@ -2303,7 +2303,7 @@ virtual BOOL LoadBitmapEx( ### Parameters [in] *`params`*\ -[in] *`bLocked`*\ +[in] *`bLocked`* ### Return Value @@ -2317,7 +2317,7 @@ static BOOL __stdcall LoadLargeIconsState(LPCTSTR lpszProfileName = NULL); ### Parameters -[in] *`lpszProfileName`*\ +[in] *`lpszProfileName`* ### Return Value @@ -2577,7 +2577,7 @@ virtual BOOL OnSetAccData(long lVal); ### Parameters -[in] *`lVal`*\ +[in] *`lVal`* ### Return Value @@ -2837,7 +2837,7 @@ static BOOL __stdcall SaveParameters(LPCTSTR lpszProfileName = NULL); ### Parameters -[in] *`lpszProfileName`*\ +[in] *`lpszProfileName`* ### Return Value @@ -3099,7 +3099,7 @@ static void __stdcall SetHelpMode(BOOL bOn = TRUE); ### Parameters -[in] *`bOn`*\ +[in] *`bOn`* ### Remarks @@ -3111,7 +3111,7 @@ BOOL SetHot(CMFCToolBarButton* pMenuButton); ### Parameters -[in] *`pMenuButton`*\ +[in] *`pMenuButton`* ### Return Value @@ -3161,7 +3161,7 @@ void SetIgnoreSetText(BOOL bValue); ### Parameters -[in] *`bValue`*\ +[in] *`bValue`* ### Remarks @@ -3222,7 +3222,7 @@ void SetMaskMode(BOOL bMasked); ### Parameters -[in] *`bMasked`*\ +[in] *`bMasked`* ### Remarks @@ -3295,7 +3295,7 @@ void SetOrigButtons(const CObList& lstOrigButtons); ### Parameters -[in] *`lstOrigButtons`*\ +[in] *`lstOrigButtons`* ### Remarks diff --git a/docs/mfc/reference/cwinappex-class.md b/docs/mfc/reference/cwinappex-class.md index d9c7ac4fade..85b09877183 100644 --- a/docs/mfc/reference/cwinappex-class.md +++ b/docs/mfc/reference/cwinappex-class.md @@ -970,7 +970,7 @@ virtual BOOL OnWorkspaceIdle(CWnd*); ### Parameters -[in] *`CWnd*`*\ +[in] *`CWnd*`* ### Return Value diff --git a/docs/standard-library/unordered-map-class.md b/docs/standard-library/unordered-map-class.md index 90f5e8ac492..09b5dab2fee 100644 --- a/docs/standard-library/unordered-map-class.md +++ b/docs/standard-library/unordered-map-class.md @@ -2781,4 +2781,4 @@ int main() ## See also [``](../standard-library/unordered-map.md)\ -[Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md)\ +[Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) From 15002b6ca1cdcede241d19d3bf267b6523ee4c82 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 16 Mar 2025 18:28:57 +0800 Subject: [PATCH 0282/2255] Clean up a bunch of articles --- docs/assembler/masm/dot-code.md | 3 +-- docs/build/reference/arch-arm64.md | 2 +- ...genprofile-generate-profiling-instrumented-build.md | 2 +- docs/build/reference/zc-tlsguards.md | 2 +- .../reference/log-logf-log10-log10f.md | 10 +++++----- .../reference/strrchr-wcsrchr-mbsrchr-mbsrchr-l.md | 2 +- docs/code-quality/c28196.md | 3 +-- docs/mfc/reference/cmfcpropertygridctrl-class.md | 3 +-- docs/mfc/reference/cmfcpropertygridproperty-class.md | 2 +- docs/mfc/reference/cmfctoolbar-class.md | 2 +- docs/standard-library/unordered-map-class.md | 1 - 11 files changed, 14 insertions(+), 18 deletions(-) diff --git a/docs/assembler/masm/dot-code.md b/docs/assembler/masm/dot-code.md index 00d75a8d7c8..9bf447e91b3 100644 --- a/docs/assembler/masm/dot-code.md +++ b/docs/assembler/masm/dot-code.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: .CODE" title: ".CODE" +description: "Learn more about: .CODE" ms.date: "12/17/2019" f1_keywords: [".CODE"] helpviewer_keywords: [".CODE directive"] -ms.assetid: 2b8c882c-c0d2-4fa3-8335-e6b12717a4f4 --- # .CODE diff --git a/docs/build/reference/arch-arm64.md b/docs/build/reference/arch-arm64.md index d3eef64f574..fa55e9e7aa0 100644 --- a/docs/build/reference/arch-arm64.md +++ b/docs/build/reference/arch-arm64.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: /arch (ARM64)" title: "/arch (ARM64)" +description: "Learn more about: /arch (ARM64)" ms.date: 05/24/2024 --- # `/arch` (ARM64) diff --git a/docs/build/reference/genprofile-fastgenprofile-generate-profiling-instrumented-build.md b/docs/build/reference/genprofile-fastgenprofile-generate-profiling-instrumented-build.md index 0f0c9175a75..de78ee85a78 100644 --- a/docs/build/reference/genprofile-fastgenprofile-generate-profiling-instrumented-build.md +++ b/docs/build/reference/genprofile-fastgenprofile-generate-profiling-instrumented-build.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: /GENPROFILE, /FASTGENPROFILE (Generate Profiling Instrumented Build)" title: "/GENPROFILE, /FASTGENPROFILE (Generate Profiling Instrumented Build)" +description: "Learn more about: /GENPROFILE, /FASTGENPROFILE (Generate Profiling Instrumented Build)" ms.date: 04/14/2021 f1_keywords: ["GENPROFILE", "FASTGENPROFILE", "/GENPROFILE", "/FASTGENPROFILE"] helpviewer_keywords: ["GENPROFILE", "FASTGENPROFILE"] diff --git a/docs/build/reference/zc-tlsguards.md b/docs/build/reference/zc-tlsguards.md index 60d7174224f..15c36abf138 100644 --- a/docs/build/reference/zc-tlsguards.md +++ b/docs/build/reference/zc-tlsguards.md @@ -1,6 +1,6 @@ --- -description: "Learn more about the /Zc:tlsGuards (Check TLS initialization) compiler option." title: "/Zc:tlsGuards (Check TLS initialization)" +description: "Learn more about the /Zc:tlsGuards (Check TLS initialization) compiler option." ms.date: 11/08/2022 f1_keywords: ["/Zc:tlsGuards"] helpviewer_keywords: ["-Zc:tlsGuards compiler option (C++)", "/Zc:tlsGuards compiler option (C++)"] diff --git a/docs/c-runtime-library/reference/log-logf-log10-log10f.md b/docs/c-runtime-library/reference/log-logf-log10-log10f.md index 812a0c3f58a..4ff277f7b00 100644 --- a/docs/c-runtime-library/reference/log-logf-log10-log10f.md +++ b/docs/c-runtime-library/reference/log-logf-log10-log10f.md @@ -122,9 +122,9 @@ Log base 2 of 65536.000000 is 16.000000 ## See also -[Math and floating-point support](../floating-point-support.md) \ -[`exp`, `expf`, `expl`](exp-expf.md) \ -[`_matherr`](matherr.md) \ -[`pow`, `powf`, `powl`](pow-powf-powl.md) \ -[`_CIlog`](../cilog.md) \ +[Math and floating-point support](../floating-point-support.md)\ +[`exp`, `expf`, `expl`](exp-expf.md)\ +[`_matherr`](matherr.md)\ +[`pow`, `powf`, `powl`](pow-powf-powl.md)\ +[`_CIlog`](../cilog.md)\ [`_CIlog10`](../cilog10.md) diff --git a/docs/c-runtime-library/reference/strrchr-wcsrchr-mbsrchr-mbsrchr-l.md b/docs/c-runtime-library/reference/strrchr-wcsrchr-mbsrchr-mbsrchr-l.md index 1909542e816..9c8d760c683 100644 --- a/docs/c-runtime-library/reference/strrchr-wcsrchr-mbsrchr-mbsrchr-l.md +++ b/docs/c-runtime-library/reference/strrchr-wcsrchr-mbsrchr-mbsrchr-l.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: strrchr, wcsrchr, _mbsrchr, _mbsrchr_l" title: "strrchr, wcsrchr, _mbsrchr, _mbsrchr_l" +description: "Learn more about: strrchr, wcsrchr, _mbsrchr, _mbsrchr_l" ms.date: "4/2/2020" api_name: ["strrchr", "wcsrchr", "_mbsrchr", "_mbsrchr_l", "_o__mbsrchr", "_o__mbsrchr_l"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntdll.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "ntoskrnl.exe"] diff --git a/docs/code-quality/c28196.md b/docs/code-quality/c28196.md index cfe6b8789d5..388766230a3 100644 --- a/docs/code-quality/c28196.md +++ b/docs/code-quality/c28196.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Warning C28196" title: Warning C28196 +description: "Learn more about: Warning C28196" ms.date: 11/04/2016 f1_keywords: ["C28196", "RETURNING_BAD_RESULT", "__WARNING_RETURNING_BAD_RESULT"] helpviewer_keywords: ["C28196"] -ms.assetid: 5ee89e96-2796-4316-a64c-702463ca1374 --- # Warning C28196 diff --git a/docs/mfc/reference/cmfcpropertygridctrl-class.md b/docs/mfc/reference/cmfcpropertygridctrl-class.md index 26f2a30642b..585e3e775f2 100644 --- a/docs/mfc/reference/cmfcpropertygridctrl-class.md +++ b/docs/mfc/reference/cmfcpropertygridctrl-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: CMFCPropertyGridCtrl Class" title: "CMFCPropertyGridCtrl Class" +description: "Learn more about: CMFCPropertyGridCtrl Class" ms.date: "11/19/2018" f1_keywords: ["CMFCPropertyGridCtrl", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::CMFCPropertyGridCtrl", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::accSelect", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::AddProperty", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::AlwaysShowUserToolTip", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::CloseColorPopup", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::Create", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::DeleteProperty", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::DrawControlBarColors", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::EnableDescriptionArea", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::EnableHeaderCtrl", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::EnsureVisible", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::ExpandAll", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::FindItemByData", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::get_accChildCount", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::get_accFocus", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::get_accHelp", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::get_accHelpTopic", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::get_accKeyboardShortcut", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::get_accSelection", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::GetBkColor", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::GetBoldFont", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::GetCurSel", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::GetCustomColors", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::GetDescriptionHeight", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::GetDescriptionRows", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::GetHeaderCtrl", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::GetHeaderHeight", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::GetLeftColumnWidth", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::GetListRect", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::GetProperty", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::GetPropertyColumnWidth", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::GetPropertyCount", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::GetRowHeight", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::GetScrollBarCtrl", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::GetTextColor", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::HitTest", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::InitHeader", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::IsAlphabeticMode", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::IsAlwaysShowUserToolTip", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::IsDescriptionArea", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::IsGroupNameFullWidth", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::IsHeaderCtrl", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::IsMarkModifiedProperties", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::IsShowDragContext", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::IsVSDotNetLook", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::MarkModifiedProperties", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::RemoveAll", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::ResetOriginalValues", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::SetAlphabeticMode", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::SetBoolLabels", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::SetCurSel", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::SetCustomColors", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::SetDescriptionRows", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::SetGroupNameFullWidth", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::SetListDelimiter", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::SetShowDragContext", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::SetVSDotNetLook", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::UpdateColor", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::AdjustLayout", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::CompareProps", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::EditItem", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::EndEditItem", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::Init", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::OnChangeSelection", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::OnClickButton", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::OnDrawBorder", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::OnDrawDescription", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::OnDrawList", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::OnDrawProperty", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::OnPropertyChanged", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::OnSelectCombo", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridCtrl::ValidateItemData"] helpviewer_keywords: ["CMFCPropertyGridCtrl [MFC], CMFCPropertyGridCtrl", "CMFCPropertyGridCtrl [MFC], accSelect", "CMFCPropertyGridCtrl [MFC], AddProperty", "CMFCPropertyGridCtrl [MFC], AlwaysShowUserToolTip", "CMFCPropertyGridCtrl [MFC], CloseColorPopup", "CMFCPropertyGridCtrl [MFC], Create", "CMFCPropertyGridCtrl [MFC], DeleteProperty", "CMFCPropertyGridCtrl [MFC], DrawControlBarColors", "CMFCPropertyGridCtrl [MFC], EnableDescriptionArea", "CMFCPropertyGridCtrl [MFC], EnableHeaderCtrl", "CMFCPropertyGridCtrl [MFC], EnsureVisible", "CMFCPropertyGridCtrl [MFC], ExpandAll", "CMFCPropertyGridCtrl [MFC], FindItemByData", "CMFCPropertyGridCtrl [MFC], get_accChildCount", "CMFCPropertyGridCtrl [MFC], get_accFocus", "CMFCPropertyGridCtrl [MFC], get_accHelp", "CMFCPropertyGridCtrl [MFC], get_accHelpTopic", "CMFCPropertyGridCtrl [MFC], get_accKeyboardShortcut", "CMFCPropertyGridCtrl [MFC], get_accSelection", "CMFCPropertyGridCtrl [MFC], GetBkColor", "CMFCPropertyGridCtrl [MFC], GetBoldFont", "CMFCPropertyGridCtrl [MFC], GetCurSel", "CMFCPropertyGridCtrl [MFC], GetCustomColors", "CMFCPropertyGridCtrl [MFC], GetDescriptionHeight", "CMFCPropertyGridCtrl [MFC], GetDescriptionRows", "CMFCPropertyGridCtrl [MFC], GetHeaderCtrl", "CMFCPropertyGridCtrl [MFC], GetHeaderHeight", "CMFCPropertyGridCtrl [MFC], GetLeftColumnWidth", "CMFCPropertyGridCtrl [MFC], GetListRect", "CMFCPropertyGridCtrl [MFC], GetProperty", "CMFCPropertyGridCtrl [MFC], GetPropertyColumnWidth", "CMFCPropertyGridCtrl [MFC], GetPropertyCount", "CMFCPropertyGridCtrl [MFC], GetRowHeight", "CMFCPropertyGridCtrl [MFC], GetScrollBarCtrl", "CMFCPropertyGridCtrl [MFC], GetTextColor", "CMFCPropertyGridCtrl [MFC], HitTest", "CMFCPropertyGridCtrl [MFC], InitHeader", "CMFCPropertyGridCtrl [MFC], IsAlphabeticMode", "CMFCPropertyGridCtrl [MFC], IsAlwaysShowUserToolTip", "CMFCPropertyGridCtrl [MFC], IsDescriptionArea", "CMFCPropertyGridCtrl [MFC], IsGroupNameFullWidth", "CMFCPropertyGridCtrl [MFC], IsHeaderCtrl", "CMFCPropertyGridCtrl [MFC], IsMarkModifiedProperties", "CMFCPropertyGridCtrl [MFC], IsShowDragContext", "CMFCPropertyGridCtrl [MFC], IsVSDotNetLook", "CMFCPropertyGridCtrl [MFC], MarkModifiedProperties", "CMFCPropertyGridCtrl [MFC], RemoveAll", "CMFCPropertyGridCtrl [MFC], ResetOriginalValues", "CMFCPropertyGridCtrl [MFC], SetAlphabeticMode", "CMFCPropertyGridCtrl [MFC], SetBoolLabels", "CMFCPropertyGridCtrl [MFC], SetCurSel", "CMFCPropertyGridCtrl [MFC], SetCustomColors", "CMFCPropertyGridCtrl [MFC], SetDescriptionRows", "CMFCPropertyGridCtrl [MFC], SetGroupNameFullWidth", "CMFCPropertyGridCtrl [MFC], SetListDelimiter", "CMFCPropertyGridCtrl [MFC], SetShowDragContext", "CMFCPropertyGridCtrl [MFC], SetVSDotNetLook", "CMFCPropertyGridCtrl [MFC], UpdateColor", "CMFCPropertyGridCtrl [MFC], AdjustLayout", "CMFCPropertyGridCtrl [MFC], CompareProps", "CMFCPropertyGridCtrl [MFC], EditItem", "CMFCPropertyGridCtrl [MFC], EndEditItem", "CMFCPropertyGridCtrl [MFC], Init", "CMFCPropertyGridCtrl [MFC], OnChangeSelection", "CMFCPropertyGridCtrl [MFC], OnClickButton", "CMFCPropertyGridCtrl [MFC], OnDrawBorder", "CMFCPropertyGridCtrl [MFC], OnDrawDescription", "CMFCPropertyGridCtrl [MFC], OnDrawList", "CMFCPropertyGridCtrl [MFC], OnDrawProperty", "CMFCPropertyGridCtrl [MFC], OnPropertyChanged", "CMFCPropertyGridCtrl [MFC], OnSelectCombo", "CMFCPropertyGridCtrl [MFC], ValidateItemData"] -ms.assetid: 95877cae-2311-4a2a-9031-0c8c3cf0a5f9 --- # CMFCPropertyGridCtrl Class diff --git a/docs/mfc/reference/cmfcpropertygridproperty-class.md b/docs/mfc/reference/cmfcpropertygridproperty-class.md index e5f8a837edd..968b051e6db 100644 --- a/docs/mfc/reference/cmfcpropertygridproperty-class.md +++ b/docs/mfc/reference/cmfcpropertygridproperty-class.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: CMFCPropertyGridProperty class" title: "CMFCPropertyGridProperty class" +description: "Learn more about: CMFCPropertyGridProperty class" ms.date: "10/12/2022" f1_keywords: ["CMFCPropertyGridProperty", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::CMFCPropertyGridProperty", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::AddOption", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::AddSubItem", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::AdjustButtonRect", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::AdjustInPlaceEditRect", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::AllowEdit", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::CreateInPlaceEdit", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::CreateSpinControl", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::Enable", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::EnableSpinControl", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::Expand", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::FormatProperty", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::GetData", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::GetDescription", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::GetExpandedSubItems", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::GetHierarchyLevel", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::GetName", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::GetNameTooltip", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::GetOption", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::GetOptionCount", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::GetOriginalValue", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::GetParent", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::GetRect", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::GetSubItem", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::GetSubItemsCount", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::GetValue", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::GetValueTooltip", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::HitTest", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::IsAllowEdit", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::IsEnabled", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::IsExpanded", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::IsGroup", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::IsInPlaceEditing", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::IsModified", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::IsParentExpanded", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::IsSelected", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::IsVisible", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnClickButton", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnClickName", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnClickValue", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnCloseCombo", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnDblClk", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnDrawButton", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnDrawDescription", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnDrawExpandBox", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnDrawName", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnDrawValue", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnEdit", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnEndEdit", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnKillSelection", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnPosSizeChanged", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnRClickName", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnRClickValue", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnSelectCombo", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnSetCursor", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnSetSelection", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnUpdateValue", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::PushChar", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::Redraw", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::RemoveAllOptions", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::RemoveSubItem", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::ResetOriginalValue", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::SetData", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::SetDescription", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::SetName", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::SetOriginalValue", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::SetValue", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::Show", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::CreateCombo", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::HasButton", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::Init", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::IsSubItem", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::IsValueChanged", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnCtlColor", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnDestroyWindow", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::OnKillFocus", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::m_strFormatDouble", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::m_strFormatFloat", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::m_strFormatLong", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridProperty::m_strFormatShort"] helpviewer_keywords: ["CMFCPropertyGridProperty [MFC], CMFCPropertyGridProperty", "CMFCPropertyGridProperty [MFC], AddOption", "CMFCPropertyGridProperty [MFC], AddSubItem", "CMFCPropertyGridProperty [MFC], AdjustButtonRect", "CMFCPropertyGridProperty [MFC], AdjustInPlaceEditRect", "CMFCPropertyGridProperty [MFC], AllowEdit", "CMFCPropertyGridProperty [MFC], CreateInPlaceEdit", "CMFCPropertyGridProperty [MFC], CreateSpinControl", "CMFCPropertyGridProperty [MFC], Enable", "CMFCPropertyGridProperty [MFC], EnableSpinControl", "CMFCPropertyGridProperty [MFC], Expand", "CMFCPropertyGridProperty [MFC], FormatProperty", "CMFCPropertyGridProperty [MFC], GetData", "CMFCPropertyGridProperty [MFC], GetDescription", "CMFCPropertyGridProperty [MFC], GetExpandedSubItems", "CMFCPropertyGridProperty [MFC], GetHierarchyLevel", "CMFCPropertyGridProperty [MFC], GetName", "CMFCPropertyGridProperty [MFC], GetNameTooltip", "CMFCPropertyGridProperty [MFC], GetOption", "CMFCPropertyGridProperty [MFC], GetOptionCount", "CMFCPropertyGridProperty [MFC], GetOriginalValue", "CMFCPropertyGridProperty [MFC], GetParent", "CMFCPropertyGridProperty [MFC], GetRect", "CMFCPropertyGridProperty [MFC], GetSubItem", "CMFCPropertyGridProperty [MFC], GetSubItemsCount", "CMFCPropertyGridProperty [MFC], GetValue", "CMFCPropertyGridProperty [MFC], GetValueTooltip", "CMFCPropertyGridProperty [MFC], HitTest", "CMFCPropertyGridProperty [MFC], IsAllowEdit", "CMFCPropertyGridProperty [MFC], IsEnabled", "CMFCPropertyGridProperty [MFC], IsExpanded", "CMFCPropertyGridProperty [MFC], IsGroup", "CMFCPropertyGridProperty [MFC], IsInPlaceEditing", "CMFCPropertyGridProperty [MFC], IsModified", "CMFCPropertyGridProperty [MFC], IsParentExpanded", "CMFCPropertyGridProperty [MFC], IsSelected", "CMFCPropertyGridProperty [MFC], IsVisible", "CMFCPropertyGridProperty [MFC], OnClickButton", "CMFCPropertyGridProperty [MFC], OnClickName", "CMFCPropertyGridProperty [MFC], OnClickValue", "CMFCPropertyGridProperty [MFC], OnCloseCombo", "CMFCPropertyGridProperty [MFC], OnDblClk", "CMFCPropertyGridProperty [MFC], OnDrawButton", "CMFCPropertyGridProperty [MFC], OnDrawDescription", "CMFCPropertyGridProperty [MFC], OnDrawExpandBox", "CMFCPropertyGridProperty [MFC], OnDrawName", "CMFCPropertyGridProperty [MFC], OnDrawValue", "CMFCPropertyGridProperty [MFC], OnEdit", "CMFCPropertyGridProperty [MFC], OnEndEdit", "CMFCPropertyGridProperty [MFC], OnKillSelection", "CMFCPropertyGridProperty [MFC], OnPosSizeChanged", "CMFCPropertyGridProperty [MFC], OnRClickName", "CMFCPropertyGridProperty [MFC], OnRClickValue", "CMFCPropertyGridProperty [MFC], OnSelectCombo", "CMFCPropertyGridProperty [MFC], OnSetCursor", "CMFCPropertyGridProperty [MFC], OnSetSelection", "CMFCPropertyGridProperty [MFC], OnUpdateValue", "CMFCPropertyGridProperty [MFC], PushChar", "CMFCPropertyGridProperty [MFC], Redraw", "CMFCPropertyGridProperty [MFC], RemoveAllOptions", "CMFCPropertyGridProperty [MFC], RemoveSubItem", "CMFCPropertyGridProperty [MFC], ResetOriginalValue", "CMFCPropertyGridProperty [MFC], SetData", "CMFCPropertyGridProperty [MFC], SetDescription", "CMFCPropertyGridProperty [MFC], SetName", "CMFCPropertyGridProperty [MFC], SetOriginalValue", "CMFCPropertyGridProperty [MFC], SetValue", "CMFCPropertyGridProperty [MFC], Show", "CMFCPropertyGridProperty [MFC], CreateCombo", "CMFCPropertyGridProperty [MFC], HasButton", "CMFCPropertyGridProperty [MFC], Init", "CMFCPropertyGridProperty [MFC], IsSubItem", "CMFCPropertyGridProperty [MFC], IsValueChanged", "CMFCPropertyGridProperty [MFC], OnCtlColor", "CMFCPropertyGridProperty [MFC], OnDestroyWindow", "CMFCPropertyGridProperty [MFC], OnKillFocus", "CMFCPropertyGridProperty [MFC], m_strFormatDouble", "CMFCPropertyGridProperty [MFC], m_strFormatFloat", "CMFCPropertyGridProperty [MFC], m_strFormatLong", "CMFCPropertyGridProperty [MFC], m_strFormatShort"] diff --git a/docs/mfc/reference/cmfctoolbar-class.md b/docs/mfc/reference/cmfctoolbar-class.md index bfba798f1dc..5890fdd11ca 100644 --- a/docs/mfc/reference/cmfctoolbar-class.md +++ b/docs/mfc/reference/cmfctoolbar-class.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: CMFCToolBar Class" title: "CMFCToolBar Class" +description: "Learn more about: CMFCToolBar Class" ms.date: "11/04/2016" f1_keywords: ["CMFCToolBar", "AFXTOOLBAR/CMFCToolBar", "AFXTOOLBAR/CMFCToolBar::AddBasicCommand", "AFXTOOLBAR/CMFCToolBar::AddCommandUsage", "AFXTOOLBAR/CMFCToolBar::AddToolBarForImageCollection", "AFXTOOLBAR/CMFCToolBar::AdjustLayout", "AFXTOOLBAR/CMFCToolBar::AdjustSize", "AFXTOOLBAR/CMFCToolBar::AllowChangeTextLabels", "AFXTOOLBAR/CMFCToolBar::AreTextLabels", "AFXTOOLBAR/CMFCToolBar::AutoGrayInactiveImages", "AFXTOOLBAR/CMFCToolBar::ButtonToIndex", "AFXTOOLBAR/CMFCToolBar::CalcFixedLayout", "AFXTOOLBAR/CMFCToolBar::CalcSize", "AFXTOOLBAR/CMFCToolBar::CanHandleSiblings", "AFXTOOLBAR/CMFCToolBar::CleanUpImages", "AFXTOOLBAR/CMFCToolBar::CleanUpLockedImages", "AFXTOOLBAR/CMFCToolBar::CanBeClosed", "AFXTOOLBAR/CMFCToolBar::CanBeRestored", "AFXTOOLBAR/CMFCToolBar::CanFocus", "AFXTOOLBAR/CMFCToolBar::CommandToIndex", "AFXTOOLBAR/CMFCToolBar::Create", "AFXTOOLBAR/CMFCToolBar::CreateEx", "AFXTOOLBAR/CMFCToolBar::Deactivate", "AFXTOOLBAR/CMFCToolBar::EnableCustomizeButton", "AFXTOOLBAR/CMFCToolBar::EnableDocking", "AFXTOOLBAR/CMFCToolBar::EnableLargeIcons", "AFXTOOLBAR/CMFCToolBar::EnableQuickCustomization", "AFXTOOLBAR/CMFCToolBar::EnableReflections", "AFXTOOLBAR/CMFCToolBar::EnableTextLabels", "AFXTOOLBAR/CMFCToolBar::FromHandlePermanent", "AFXTOOLBAR/CMFCToolBar::GetAllButtons", "AFXTOOLBAR/CMFCToolBar::GetAllToolbars", "AFXTOOLBAR/CMFCToolBar::GetBasicCommands", "AFXTOOLBAR/CMFCToolBar::GetButton", "AFXTOOLBAR/CMFCToolBar::GetButtonInfo", "AFXTOOLBAR/CMFCToolBar::GetButtonSize", "AFXTOOLBAR/CMFCToolBar::GetButtonStyle", "AFXTOOLBAR/CMFCToolBar::GetButtonText", "AFXTOOLBAR/CMFCToolBar::GetColdImages", "AFXTOOLBAR/CMFCToolBar::GetColumnWidth", "AFXTOOLBAR/CMFCToolBar::GetCommandButtons", "AFXTOOLBAR/CMFCToolBar::GetCount", "AFXTOOLBAR/CMFCToolBar::GetCustomizeButton", "AFXTOOLBAR/CMFCToolBar::GetDefaultImage", "AFXTOOLBAR/CMFCToolBar::GetDisabledImages", "AFXTOOLBAR/CMFCToolBar::GetDisabledMenuImages", "AFXTOOLBAR/CMFCToolBar::GetDroppedDownMenu", "AFXTOOLBAR/CMFCToolBar::GetGrayDisabledButtons", "AFXTOOLBAR/CMFCToolBar::GetHighlightedButton", "AFXTOOLBAR/CMFCToolBar::GetHotBorder", "AFXTOOLBAR/CMFCToolBar::GetHotTextColor", "AFXTOOLBAR/CMFCToolBar::GetHwndLastFocus", "AFXTOOLBAR/CMFCToolBar::GetOVERWRITESetText", "AFXTOOLBAR/CMFCToolBar::GetImageSize", "AFXTOOLBAR/CMFCToolBar::GetImages", "AFXTOOLBAR/CMFCToolBar::GetImagesOffset", "AFXTOOLBAR/CMFCToolBar::GetInvalidateItemRect", "AFXTOOLBAR/CMFCToolBar::GetItemID", "AFXTOOLBAR/CMFCToolBar::GetItemRect", "AFXTOOLBAR/CMFCToolBar::GetLargeColdImages", "AFXTOOLBAR/CMFCToolBar::GetLargeDisabledImages", "AFXTOOLBAR/CMFCToolBar::GetLargeImages", "AFXTOOLBAR/CMFCToolBar::GetLockedColdImages", "AFXTOOLBAR/CMFCToolBar::GetLockedDisabledImages", "AFXTOOLBAR/CMFCToolBar::GetLockedImages", "AFXTOOLBAR/CMFCToolBar::GetLockedImageSize", "AFXTOOLBAR/CMFCToolBar::GetLockedMenuImages", "AFXTOOLBAR/CMFCToolBar::GetMenuButtonSize", "AFXTOOLBAR/CMFCToolBar::GetMenuImageSize", "AFXTOOLBAR/CMFCToolBar::GetMenuImages", "AFXTOOLBAR/CMFCToolBar::GetOrigButtons", "AFXTOOLBAR/CMFCToolBar::GetOrigResetButtons", "AFXTOOLBAR/CMFCToolBar::GetResourceID", "AFXTOOLBAR/CMFCToolBar::GetRouteCommandsViaFrame", "AFXTOOLBAR/CMFCToolBar::GetRowHeight", "AFXTOOLBAR/CMFCToolBar::GetShowTooltips", "AFXTOOLBAR/CMFCToolBar::GetSiblingToolBar", "AFXTOOLBAR/CMFCToolBar::GetUserImages", "AFXTOOLBAR/CMFCToolBar::HitTest", "AFXTOOLBAR/CMFCToolBar::InsertButton", "AFXTOOLBAR/CMFCToolBar::InsertSeparator", "AFXTOOLBAR/CMFCToolBar::InvalidateButton", "AFXTOOLBAR/CMFCToolBar::IsAddRemoveQuickCustomize", "AFXTOOLBAR/CMFCToolBar::IsAltCustomizeMode", "AFXTOOLBAR/CMFCToolBar::IsAutoGrayInactiveImages", "AFXTOOLBAR/CMFCToolBar::IsBasicCommand", "AFXTOOLBAR/CMFCToolBar::IsButtonExtraSizeAvailable", "AFXTOOLBAR/CMFCToolBar::IsButtonHighlighted", "AFXTOOLBAR/CMFCToolBar::IsCommandPermitted", "AFXTOOLBAR/CMFCToolBar::IsCommandRarelyUsed", "AFXTOOLBAR/CMFCToolBar::IsCustomizeMode", "AFXTOOLBAR/CMFCToolBar::IsDragButton", "AFXTOOLBAR/CMFCToolBar::IsExistCustomizeButton", "AFXTOOLBAR/CMFCToolBar::IsFloating", "AFXTOOLBAR/CMFCToolBar::IsLargeIcons", "AFXTOOLBAR/CMFCToolBar::IsLastCommandFromButton", "AFXTOOLBAR/CMFCToolBar::IsLocked", "AFXTOOLBAR/CMFCToolBar::IsOneRowWithSibling", "AFXTOOLBAR/CMFCToolBar::IsUserDefined", "AFXTOOLBAR/CMFCToolBar::LoadBitmap", "AFXTOOLBAR/CMFCToolBar::LoadBitmapEx", "AFXTOOLBAR/CMFCToolBar::LoadParameters", "AFXTOOLBAR/CMFCToolBar::LoadState", "AFXTOOLBAR/CMFCToolBar::LoadToolBar", "AFXTOOLBAR/CMFCToolBar::LoadToolBarEx", "AFXTOOLBAR/CMFCToolBar::OnChangeHot", "AFXTOOLBAR/CMFCToolBar::OnFillBackground", "AFXTOOLBAR/CMFCToolBar::OnReset", "AFXTOOLBAR/CMFCToolBar::OnSetAccData", "AFXTOOLBAR/CMFCToolBar::OnSetDefaultButtonText", "AFXTOOLBAR/CMFCToolBar::RemoveAllButtons", "AFXTOOLBAR/CMFCToolBar::RemoveButton", "AFXTOOLBAR/CMFCToolBar::RemoveStateFromRegistry", "AFXTOOLBAR/CMFCToolBar::ReplaceButton", "AFXTOOLBAR/CMFCToolBar::ResetAll", "AFXTOOLBAR/CMFCToolBar::ResetAllImages", "AFXTOOLBAR/CMFCToolBar::RestoreOriginalState", "AFXTOOLBAR/CMFCToolBar::SaveState", "AFXTOOLBAR/CMFCToolBar::SetBasicCommands", "AFXTOOLBAR/CMFCToolBar::SetButtonInfo", "AFXTOOLBAR/CMFCToolBar::SetButtonStyle", "AFXTOOLBAR/CMFCToolBar::SetButtonText", "AFXTOOLBAR/CMFCToolBar::SetButtons", "AFXTOOLBAR/CMFCToolBar::SetCommandUsageOptions", "AFXTOOLBAR/CMFCToolBar::SetCustomizeMode", "AFXTOOLBAR/CMFCToolBar::SetGrayDisabledButtons", "AFXTOOLBAR/CMFCToolBar::SetHeight", "AFXTOOLBAR/CMFCToolBar::SetHotBorder", "AFXTOOLBAR/CMFCToolBar::SetHotTextColor", "AFXTOOLBAR/CMFCToolBar::SetLargeIcons", "AFXTOOLBAR/CMFCToolBar::SetLockedSizes", "AFXTOOLBAR/CMFCToolBar::SetMenuSizes", "AFXTOOLBAR/CMFCToolBar::SetNonPermittedCommands", "AFXTOOLBAR/CMFCToolBar::SetOneRowWithSibling", "AFXTOOLBAR/CMFCToolBar::SetPermament", "AFXTOOLBAR/CMFCToolBar::SetRouteCommandsViaFrame", "AFXTOOLBAR/CMFCToolBar::SetShowTooltips", "AFXTOOLBAR/CMFCToolBar::SetSiblingToolBar", "AFXTOOLBAR/CMFCToolBar::SetSizes", "AFXTOOLBAR/CMFCToolBar::SetToolBarBtnText", "AFXTOOLBAR/CMFCToolBar::SetTwoRowsWithSibling", "AFXTOOLBAR/CMFCToolBar::SetUserImages", "AFXTOOLBAR/CMFCToolBar::StretchPane", "AFXTOOLBAR/CMFCToolBar::TranslateChar", "AFXTOOLBAR/CMFCToolBar::UpdateButton", "AFXTOOLBAR/CMFCToolBar::WrapToolBar", "AFXTOOLBAR/CMFCToolBar::AllowShowOnList", "AFXTOOLBAR/CMFCToolBar::CalcMaxButtonHeight", "AFXTOOLBAR/CMFCToolBar::DoPaint", "AFXTOOLBAR/CMFCToolBar::DrawButton", "AFXTOOLBAR/CMFCToolBar::DrawSeparator", "AFXTOOLBAR/CMFCToolBar::OnUserToolTip", "AFXTOOLBAR/CMFCToolBar::m_bDontScaleImages", "AFXTOOLBAR/CMFCToolBar::m_dblLargeImageRatio"] helpviewer_keywords: ["CMFCToolBar [MFC], AddBasicCommand", "CMFCToolBar [MFC], AddCommandUsage", "CMFCToolBar [MFC], AddToolBarForImageCollection", "CMFCToolBar [MFC], AdjustLayout", "CMFCToolBar [MFC], AdjustSize", "CMFCToolBar [MFC], AllowChangeTextLabels", "CMFCToolBar [MFC], AreTextLabels", "CMFCToolBar [MFC], AutoGrayInactiveImages", "CMFCToolBar [MFC], ButtonToIndex", "CMFCToolBar [MFC], CalcFixedLayout", "CMFCToolBar [MFC], CalcSize", "CMFCToolBar [MFC], CanHandleSiblings", "CMFCToolBar [MFC], CleanUpImages", "CMFCToolBar [MFC], CleanUpLockedImages", "CMFCToolBar [MFC], CanBeClosed", "CMFCToolBar [MFC], CanBeRestored", "CMFCToolBar [MFC], CanFocus", "CMFCToolBar [MFC], CanHandleSiblings", "CMFCToolBar [MFC], CommandToIndex", "CMFCToolBar [MFC], Create", "CMFCToolBar [MFC], CreateEx", "CMFCToolBar [MFC], Deactivate", "CMFCToolBar [MFC], EnableCustomizeButton", "CMFCToolBar [MFC], EnableDocking", "CMFCToolBar [MFC], EnableLargeIcons", "CMFCToolBar [MFC], EnableQuickCustomization", "CMFCToolBar [MFC], EnableReflections", "CMFCToolBar [MFC], EnableTextLabels", "CMFCToolBar [MFC], FromHandlePermanent", "CMFCToolBar [MFC], GetAllButtons", "CMFCToolBar [MFC], GetAllToolbars", "CMFCToolBar [MFC], GetBasicCommands", "CMFCToolBar [MFC], GetButton", "CMFCToolBar [MFC], GetButtonInfo", "CMFCToolBar [MFC], GetButtonSize", "CMFCToolBar [MFC], GetButtonStyle", "CMFCToolBar [MFC], GetButtonText", "CMFCToolBar [MFC], GetColdImages", "CMFCToolBar [MFC], GetColumnWidth", "CMFCToolBar [MFC], GetCommandButtons", "CMFCToolBar [MFC], GetCount", "CMFCToolBar [MFC], GetCustomizeButton", "CMFCToolBar [MFC], GetDefaultImage", "CMFCToolBar [MFC], GetDisabledImages", "CMFCToolBar [MFC], GetDisabledMenuImages", "CMFCToolBar [MFC], GetDroppedDownMenu", "CMFCToolBar [MFC], GetGrayDisabledButtons", "CMFCToolBar [MFC], GetHighlightedButton", "CMFCToolBar [MFC], GetHotBorder", "CMFCToolBar [MFC], GetHotTextColor", "CMFCToolBar [MFC], GetHwndLastFocus", "CMFCToolBar [MFC], GetIgnoreSetText", "CMFCToolBar [MFC], GetImageSize", "CMFCToolBar [MFC], GetImages", "CMFCToolBar [MFC], GetImagesOffset", "CMFCToolBar [MFC], GetInvalidateItemRect", "CMFCToolBar [MFC], GetItemID", "CMFCToolBar [MFC], GetItemRect", "CMFCToolBar [MFC], GetLargeColdImages", "CMFCToolBar [MFC], GetLargeDisabledImages", "CMFCToolBar [MFC], GetLargeImages", "CMFCToolBar [MFC], GetLockedColdImages", "CMFCToolBar [MFC], GetLockedDisabledImages", "CMFCToolBar [MFC], GetLockedImages", "CMFCToolBar [MFC], GetLockedImageSize", "CMFCToolBar [MFC], GetLockedMenuImages", "CMFCToolBar [MFC], GetMenuButtonSize", "CMFCToolBar [MFC], GetMenuImageSize", "CMFCToolBar [MFC], GetMenuImages", "CMFCToolBar [MFC], GetOrigButtons", "CMFCToolBar [MFC], GetOrigResetButtons", "CMFCToolBar [MFC], GetResourceID", "CMFCToolBar [MFC], GetRouteCommandsViaFrame", "CMFCToolBar [MFC], GetRowHeight", "CMFCToolBar [MFC], GetShowTooltips", "CMFCToolBar [MFC], GetSiblingToolBar", "CMFCToolBar [MFC], GetUserImages", "CMFCToolBar [MFC], HitTest", "CMFCToolBar [MFC], InsertButton", "CMFCToolBar [MFC], InsertSeparator", "CMFCToolBar [MFC], InvalidateButton", "CMFCToolBar [MFC], IsAddRemoveQuickCustomize", "CMFCToolBar [MFC], IsAltCustomizeMode", "CMFCToolBar [MFC], IsAutoGrayInactiveImages", "CMFCToolBar [MFC], IsBasicCommand", "CMFCToolBar [MFC], IsButtonExtraSizeAvailable", "CMFCToolBar [MFC], IsButtonHighlighted", "CMFCToolBar [MFC], IsCommandPermitted", "CMFCToolBar [MFC], IsCommandRarelyUsed", "CMFCToolBar [MFC], IsCustomizeMode", "CMFCToolBar [MFC], IsDragButton", "CMFCToolBar [MFC], IsExistCustomizeButton", "CMFCToolBar [MFC], IsFloating", "CMFCToolBar [MFC], IsLargeIcons", "CMFCToolBar [MFC], IsLastCommandFromButton", "CMFCToolBar [MFC], IsLocked", "CMFCToolBar [MFC], IsOneRowWithSibling", "CMFCToolBar [MFC], IsUserDefined", "CMFCToolBar [MFC], LoadBitmap", "CMFCToolBar [MFC], LoadBitmapEx", "CMFCToolBar [MFC], LoadParameters", "CMFCToolBar [MFC], LoadState", "CMFCToolBar [MFC], LoadToolBar", "CMFCToolBar [MFC], LoadToolBarEx", "CMFCToolBar [MFC], OnChangeHot", "CMFCToolBar [MFC], OnFillBackground", "CMFCToolBar [MFC], OnReset", "CMFCToolBar [MFC], OnSetAccData", "CMFCToolBar [MFC], OnSetDefaultButtonText", "CMFCToolBar [MFC], RemoveAllButtons", "CMFCToolBar [MFC], RemoveButton", "CMFCToolBar [MFC], RemoveStateFromRegistry", "CMFCToolBar [MFC], ReplaceButton", "CMFCToolBar [MFC], ResetAll", "CMFCToolBar [MFC], ResetAllImages", "CMFCToolBar [MFC], RestoreOriginalState", "CMFCToolBar [MFC], SaveState", "CMFCToolBar [MFC], SetBasicCommands", "CMFCToolBar [MFC], SetButtonInfo", "CMFCToolBar [MFC], SetButtonStyle", "CMFCToolBar [MFC], SetButtonText", "CMFCToolBar [MFC], SetButtons", "CMFCToolBar [MFC], SetCommandUsageOptions", "CMFCToolBar [MFC], SetCustomizeMode", "CMFCToolBar [MFC], SetGrayDisabledButtons", "CMFCToolBar [MFC], SetHeight", "CMFCToolBar [MFC], SetHotBorder", "CMFCToolBar [MFC], SetHotTextColor", "CMFCToolBar [MFC], SetLargeIcons", "CMFCToolBar [MFC], SetLockedSizes", "CMFCToolBar [MFC], SetMenuSizes", "CMFCToolBar [MFC], SetNonPermittedCommands", "CMFCToolBar [MFC], SetOneRowWithSibling", "CMFCToolBar [MFC], SetPermament", "CMFCToolBar [MFC], SetRouteCommandsViaFrame", "CMFCToolBar [MFC], SetShowTooltips", "CMFCToolBar [MFC], SetSiblingToolBar", "CMFCToolBar [MFC], SetSizes", "CMFCToolBar [MFC], SetToolBarBtnText", "CMFCToolBar [MFC], SetTwoRowsWithSibling", "CMFCToolBar [MFC], SetUserImages", "CMFCToolBar [MFC], StretchPane", "CMFCToolBar [MFC], TranslateChar", "CMFCToolBar [MFC], UpdateButton", "CMFCToolBar [MFC], WrapToolBar", "CMFCToolBar [MFC], AllowShowOnList", "CMFCToolBar [MFC], CalcMaxButtonHeight", "CMFCToolBar [MFC], DoPaint", "CMFCToolBar [MFC], DrawButton", "CMFCToolBar [MFC], DrawSeparator", "CMFCToolBar [MFC], OnUserToolTip", "CMFCToolBar [MFC], m_bDontScaleImages", "CMFCToolBar [MFC], m_dblLargeImageRatio"] diff --git a/docs/standard-library/unordered-map-class.md b/docs/standard-library/unordered-map-class.md index 09b5dab2fee..efdd7659ce7 100644 --- a/docs/standard-library/unordered-map-class.md +++ b/docs/standard-library/unordered-map-class.md @@ -4,7 +4,6 @@ description: "API reference for the C++ Standard Library container class `unorde ms.date: 06/20/2022 f1_keywords: ["unordered_map/std::unordered_map", "unordered_map/std::unordered_map::allocator_type", "unordered_map/std::unordered_map::const_iterator", "unordered_map/std::unordered_map::const_local_iterator", "unordered_map/std::unordered_map::const_pointer", "unordered_map/std::unordered_map::const_reference", "unordered_map/std::unordered_map::difference_type", "unordered_map/std::unordered_map::hasher", "unordered_map/std::unordered_map::iterator", "unordered_map/std::unordered_map::key_equal", "unordered_map/std::unordered_map::key_type", "unordered_map/std::unordered_map::local_iterator", "unordered_map/std::unordered_map::mapped_type", "unordered_map/std::unordered_map::pointer", "unordered_map/std::unordered_map::reference", "unordered_map/std::unordered_map::size_type", "unordered_map/std::unordered_map::value_type", "unordered_map/std::unordered_map::at", "unordered_map/std::unordered_map::begin", "unordered_map/std::unordered_map::bucket", "unordered_map/std::unordered_map::bucket_count", "unordered_map/std::unordered_map::bucket_size", "unordered_map/std::unordered_map::cbegin", "unordered_map/std::unordered_map::cend", "unordered_map/std::unordered_map::clear", "unordered_map/std::unordered_map::contains", "unordered_map/std::unordered_map::count", "unordered_map/std::unordered_map::emplace", "unordered_map/std::unordered_map::emplace_hint", "unordered_map/std::unordered_map::empty", "unordered_map/std::unordered_map::end", "unordered_map/std::unordered_map::equal_range", "unordered_map/std::unordered_map::erase", "unordered_map/std::unordered_map::find", "unordered_map/std::unordered_map::get_allocator", "unordered_map/std::unordered_map::hash", "unordered_map/std::unordered_map::insert", "unordered_map/std::unordered_map::key_eq", "unordered_map/std::unordered_map::load_factor", "unordered_map/std::unordered_map::max_bucket_count", "unordered_map/std::unordered_map::max_load_factor", "unordered_map/std::unordered_map::max_size", "unordered_map/std::unordered_map::rehash", "unordered_map/std::unordered_map::size", "unordered_map/std::unordered_map::swap", "unordered_map/std::unordered_map::unordered_map", "unordered_map/std::unordered_map::hash_function"] helpviewer_keywords: ["std::unordered_map", "std::unordered_map::allocator_type", "std::unordered_map::const_iterator", "std::unordered_map::const_local_iterator", "std::unordered_map::const_pointer", "std::unordered_map::const_reference", "std::unordered_map::difference_type", "std::unordered_map::hasher", "std::unordered_map::iterator", "std::unordered_map::key_equal", "std::unordered_map::key_type", "std::unordered_map::local_iterator", "std::unordered_map::mapped_type", "std::unordered_map::pointer", "std::unordered_map::reference", "std::unordered_map::size_type", "std::unordered_map::value_type", "std::unordered_map::at", "std::unordered_map::begin", "std::unordered_map::bucket", "std::unordered_map::bucket_count", "std::unordered_map::bucket_size", "std::unordered_map::cbegin", "std::unordered_map::cend", "std::unordered_map::clear", "std::unordered_map::contains", "std::unordered_map::count", "std::unordered_map::emplace", "std::unordered_map::emplace_hint", "std::unordered_map::empty", "std::unordered_map::end", "std::unordered_map::equal_range", "std::unordered_map::erase", "std::unordered_map::find", "std::unordered_map::get_allocator", "std::unordered_map::hash", "std::unordered_map::insert", "std::unordered_map::key_eq", "std::unordered_map::load_factor", "std::unordered_map::max_bucket_count", "std::unordered_map::max_load_factor", "std::unordered_map::max_size", "std::unordered_map::rehash", "std::unordered_map::size", "std::unordered_map::swap", "std::unordered_map::unordered_map", "std::unordered_map::allocator_type", "std::unordered_map::const_iterator", "std::unordered_map::const_local_iterator", "std::unordered_map::const_pointer", "std::unordered_map::const_reference", "std::unordered_map::difference_type", "std::unordered_map::hasher", "std::unordered_map::iterator", "std::unordered_map::key_equal", "std::unordered_map::key_type", "std::unordered_map::local_iterator", "std::unordered_map::mapped_type", "std::unordered_map::pointer", "std::unordered_map::reference", "std::unordered_map::size_type", "std::unordered_map::value_type", "std::unordered_map::at", "std::unordered_map::begin", "std::unordered_map::bucket", "std::unordered_map::bucket_count", "std::unordered_map::bucket_size", "std::unordered_map::cbegin", "std::unordered_map::cend", "std::unordered_map::clear", "std::unordered_map::count", "std::unordered_map::emplace", "std::unordered_map::emplace_hint", "std::unordered_map::empty", "std::unordered_map::end", "std::unordered_map::equal_range", "std::unordered_map::erase", "std::unordered_map::find", "std::unordered_map::get_allocator", "std::unordered_map::hash_function", "std::unordered_map::insert", "std::unordered_map::key_eq", "std::unordered_map::load_factor", "std::unordered_map::max_bucket_count", "std::unordered_map::max_load_factor", "std::unordered_map::max_size", "std::unordered_map::rehash", "std::unordered_map::size", "std::unordered_map::swap"] -ms.assetid: 7cf7cfa1-16e7-461c-a9b2-3b8d8ec24e0d ms.custom: devdivchpfy22 --- From 8ac274f1a7c94f5af15311987e5ed73562cfd28f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 16 Mar 2025 19:13:39 +0800 Subject: [PATCH 0283/2255] Improve `` operators reference --- .../system-error-operators.md | 44 ++++++++++++++++--- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/docs/standard-library/system-error-operators.md b/docs/standard-library/system-error-operators.md index ad43985bc57..78db2a7c4a0 100644 --- a/docs/standard-library/system-error-operators.md +++ b/docs/standard-library/system-error-operators.md @@ -1,13 +1,12 @@ --- -description: "Learn more about: operators" title: " operators" +description: "Learn more about: operators" ms.date: "11/04/2016" f1_keywords: ["system_error/std::operator!=", "system_error/std::operator=="] -ms.assetid: c14edefb-bd8a-4e90-88d3-c59c98e6f73c --- # `` operators -## operator== +## `operator==` Tests if the object on the left side of the operator is equal to the object on the right side. @@ -38,7 +37,7 @@ The object to be tested for equality. This function returns `left.category() == right.category() && left.value() == right.value()`. -## operator!= +## `operator!=` Tests if the object on the left side of the operator is not equal to the object on the right side. @@ -111,7 +110,42 @@ This function tests the error order. ## `operator<<` +Inserts an [`error_code`](error-code-class.md) object into the output stream. + ```cpp template - basic_ostream& operator<<(basic_ostream& os, const error_code& ec); +basic_ostream& operator<<(basic_ostream& os, const error_code& ec); +``` + +### Parameters + +*os*\ +The target output stream. + +*ec*\ +The `error_code` object to be output. + +### Return Value + +A reference to the modified output stream. + +### Remarks + +This operator does the equivalent of `os << ec.category().name() << ':' << ec.value()`. + +### Example + +```cpp +#include +#include + +int main() +{ + std::error_code ec(1234, std::generic_category()); + std::cout << ec; +} +``` + +```Output +generic:1234 ``` From 7986cd2f95d65daa861b32bd740988bd6b44fa8f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 17 Mar 2025 23:47:24 +0800 Subject: [PATCH 0284/2255] Normalize C++ code block language to `cpp` --- docs/c-runtime-library/reference/floating-point-ordering.md | 4 ++-- docs/cpp/com-ptr-t-extractors.md | 3 +-- docs/overview/cpp-conformance-improvements.md | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/docs/c-runtime-library/reference/floating-point-ordering.md b/docs/c-runtime-library/reference/floating-point-ordering.md index ece44b97be9..acdf45961dc 100644 --- a/docs/c-runtime-library/reference/floating-point-ordering.md +++ b/docs/c-runtime-library/reference/floating-point-ordering.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: isgreater, isgreaterequal, isless, islessequal, islessgreater, isunordered" title: "isgreater, isgreaterequal, isless, islessequal, islessgreater, isunordered" +description: "Learn more about: isgreater, isgreaterequal, isless, islessequal, islessgreater, isunordered" ms.date: "01/31/2019" f1_keywords: ["isgreater", "math/isgreater", "isgreaterequal", "math/isgreaterequal", "isless", "math/isless", "islessequal", "math/islessequal", "islessgreater", "math/islessgreater", "isunordered", "math/isunordered"] helpviewer_keywords: ["isgreater function", "isgreaterequal function", "isless function", "islessequal function", "islessgreater function", "isunordered function"] @@ -43,7 +43,7 @@ int isunordered( ); /* C-only macro */ ``` -```C++ +```cpp template inline bool isgreater( FloatingType1 x, diff --git a/docs/cpp/com-ptr-t-extractors.md b/docs/cpp/com-ptr-t-extractors.md index 416c3967124..305a593e877 100644 --- a/docs/cpp/com-ptr-t-extractors.md +++ b/docs/cpp/com-ptr-t-extractors.md @@ -4,7 +4,6 @@ description: "Describes the extraction operators for the _com_ptr_t class." ms.date: 07/07/2020 f1_keywords: ["_com_ptr_t::operatorInterface&", "_com_ptr_t::operatorbool", "_com_ptr_t::operator->", "_com_ptr_t::operator*"] helpviewer_keywords: ["operator Interface& [C++]", "* operator [C++], with specific objects", "operator& [C++]", "operator* [C++]", "-> operator [C++], with specific objects", "& operator [C++], with specific objects", "operator Interface* [C++]", "operator * [C++]", "operator->", "operator bool", "extractors, _com_ptr_t class", "extractors [C++]"] -ms.assetid: 194b9e0e-123c-49ff-a187-0a7fcd68145a --- # `_com_ptr_t` Extractors @@ -14,7 +13,7 @@ Extract the encapsulated COM interface pointer. ## Syntax -```c++ +```cpp operator Interface*( ) const throw( ); operator Interface&( ) const; Interface& operator*( ) const; diff --git a/docs/overview/cpp-conformance-improvements.md b/docs/overview/cpp-conformance-improvements.md index 7de36922bba..76bbefd6f6c 100644 --- a/docs/overview/cpp-conformance-improvements.md +++ b/docs/overview/cpp-conformance-improvements.md @@ -525,7 +525,7 @@ bool b = S{} != S{}; The compiler accepts this code, which means that the compiler is more strict with code such as: -```c++ +```cpp struct S { operator bool() const; From dba96f97ffd26e0de9a680c7ec8dab6951bccb2e Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 18 Mar 2025 00:53:08 +0800 Subject: [PATCH 0285/2255] Update C2640 error reference --- .../compiler-errors-2/compiler-error-c2640.md | 18 ++++++++++-------- .../compiler-errors-c2600-through-c2699.md | 4 ++-- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2640.md b/docs/error-messages/compiler-errors-2/compiler-error-c2640.md index c1467898ef6..5014adb77d0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2640.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2640.md @@ -1,23 +1,25 @@ --- -description: "Learn more about: Compiler Error C2640" title: "Compiler Error C2640" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2640" +ms.date: "03/17/2025" f1_keywords: ["C2640"] helpviewer_keywords: ["C2640"] -ms.assetid: e4d137ab-ed1d-457c-9eec-b70d97f1b0b4 --- # Compiler Error C2640 -'identifier' : __based modifier illegal on reference +> 'abstract declarator': __based modifier illegal on reference -The **`__based`** modifier can be used on pointers only. +The [**`__based`**](../../cpp/based-pointers-cpp.md) modifier can be used on pointers only. The following sample generates C2640: ```cpp // C2640.cpp -void f(int i) { - void *vp; - int _based(vp) &vr = I; // C2640 +int* ptr; + +int main() +{ + int __based(ptr)& based_ref; // C2640 + int __based(ptr)* based_ptr; // OK } ``` diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c2600-through-c2699.md b/docs/error-messages/compiler-errors-2/compiler-errors-c2600-through-c2699.md index b4876ccc6ab..e8cbf106a75 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c2600-through-c2699.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c2600-through-c2699.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler errors C2600 Through C2699" title: "Compiler errors C2600 Through C2699" +description: "Learn more about: Compiler errors C2600 Through C2699" ms.date: "04/21/2019" f1_keywords: ["C2604", "C2606", "C2607", "C2608", "C2609", "C2610", "C2615", "C2618", "C2620", "C2621", "C2622", "C2623", "C2625", "C2629", "C2631", "C2639", "C2641", "C2642", "C2643", "C2644", "C2684", "C2685", "C2686", "C2697"] helpviewer_keywords: ["C2604", "C2606", "C2607", "C2608", "C2609", "C2610", "C2615", "C2618", "C2620", "C2621", "C2622", "C2623", "C2625", "C2629", "C2631", "C2639", "C2641", "C2642", "C2643", "C2644", "C2684", "C2685", "C2686", "C2697"] @@ -55,7 +55,7 @@ The articles in this section of the documentation explain a subset of the error |[Compiler error C2637](compiler-error-c2637.md)|'*identifier*': cannot modify pointers to data members| |[Compiler error C2638](compiler-error-c2638.md)|'*identifier*': __based modifier illegal on pointer to member| |Compiler error C2639|trailing return type '*type*' of deduction guide should be a specialization of '*class template*'| -|[Compiler error C2640](compiler-error-c2640.md)|'*identifier*': __based modifier illegal on reference| +|[Compiler error C2640](compiler-error-c2640.md)|'abstract declarator': __based modifier illegal on reference| |Compiler error C2641|cannot deduce template arguments for '*template name*'| |Compiler error C2642|two deduction guide declarations for the same class template cannot have equivalent parameter list and template head| |Compiler error C2643|deduction guide should be declared in the same scope as the corresponding class template '*template name*'| From 469ab7cbb56da7630b89fee006b23cf257461fb5 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 17 Mar 2025 10:21:53 -0700 Subject: [PATCH 0286/2255] code escape params to avoid machine translation --- .../system-error-operators.md | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/standard-library/system-error-operators.md b/docs/standard-library/system-error-operators.md index 78db2a7c4a0..58a4e804c31 100644 --- a/docs/standard-library/system-error-operators.md +++ b/docs/standard-library/system-error-operators.md @@ -1,7 +1,7 @@ --- title: " operators" description: "Learn more about: operators" -ms.date: "11/04/2016" +ms.date: "3/17/2025" f1_keywords: ["system_error/std::operator!=", "system_error/std::operator=="] --- # `` operators @@ -23,11 +23,11 @@ bool operator==(const error_condition& left, ### Parameters -*left*\ -The object to be tested for equality. +*`left`*\ +The object to test for equality. -*right*\ -The object to be tested for equality. +*`right`*\ +The object to test for equality. ### Return Value @@ -50,15 +50,15 @@ bool operator!=(const error_condition& left, const error_condition& right); ### Parameters -*left*\ -The object to be tested for inequality. +*`left`*\ +The object to test for inequality. -*right*\ -The object to be tested for inequality. +*`right`*\ +The object to test for inequality. ### Return Value -**`true`** if the object passed in *left* is not equal to the object passed in *right*; otherwise **`false`**. +**`true`** if the object passed in *left* is not equal to the object passed in *`right`*; otherwise **`false`**. ### Remarks @@ -94,15 +94,15 @@ inline bool operator<( ### Parameters -*left*\ -The object to be compared. +*`left`*\ +The object to compare. -*right*\ -The object to be compared. +*`right`*\ +The object to compare. ### Return Value -**`true`** if the object passed in *left* is less than the object passed in *right*; Otherwise, **`false`**. +**`true`** if the object passed in *`left`* is less than the object passed in *`right`*; Otherwise, **`false`**. ### Remarks @@ -119,11 +119,11 @@ basic_ostream& operator<<(basic_ostream& os, const ### Parameters -*os*\ +*`os`*\ The target output stream. -*ec*\ -The `error_code` object to be output. +*`ec`*\ +The `error_code` object to output. ### Return Value From b3e24884b83a58b9bd401c77792b64603d14b769 Mon Sep 17 00:00:00 2001 From: Pedro Miguel Justo <40605312+pmsjt@users.noreply.github.com> Date: Mon, 17 Mar 2025 12:04:17 -0700 Subject: [PATCH 0287/2255] sve_uwop_part1 --- docs/build/arm64-exception-handling.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/build/arm64-exception-handling.md b/docs/build/arm64-exception-handling.md index 0b2ebe6c680..8c7bcc7bbb4 100644 --- a/docs/build/arm64-exception-handling.md +++ b/docs/build/arm64-exception-handling.md @@ -299,6 +299,7 @@ The unwind codes are encoded according to the table below. All unwind codes are | `save_fregp_x` | 1101101x'xxzzzzzz: save pair `d(8+#X)` at `[sp-(#Z+1)*8]!`, pre-indexed offset >= -512 | | `save_freg` | 1101110x'xxzzzzzz: save reg `d(8+#X)` at `[sp+#Z*8]`, offset \<= 504 | | `save_freg_x` | 11011110'xxxzzzzz: save reg `d(8+#X)` at `[sp-(#Z+1)*8]!`, pre-indexed offset >= -256 | +| `alloc_z` | 11011111'zzzzzzzz: allocate stack with size `z * SVE-VL` | | `alloc_l` | 11100000'xxxxxxxx'xxxxxxxx'xxxxxxxx: allocate large stack with size \< 256M (2^24 * 16) | | `set_fp` | 11100001: set up `x29` with `mov x29,sp` | | `add_fp` | 11100010'xxxxxxxx: set up `x29` with `add x29,sp,#x*8` | @@ -306,6 +307,11 @@ The unwind codes are encoded according to the table below. All unwind codes are | `end` | 11100100: end of unwind code. Implies `ret` in epilog. | | `end_c` | 11100101: end of unwind code in current chained scope. | | `save_next` | 11100110: save next non-volatile Int or FP register pair. | +| `save_any_xreg` | 11100111'0pxrrrrr'00oooooo: `p` = 0/1 => single/pair, `x` = 0/1 => positive / negative pre-indexed, offset = `o` * 16 for x=1 or p=1 / else offset * 8 | +| `save_any_dreg` | 11100111'0pxrrrrr'01oooooo: `p` = 0/1 => single/pair, `x` = 0/1 => positive / negative pre-indexed, offset = `o` * 16 for x=1 or p=1 / else offset * 8 | +| `save_any_qreg` | 11100111'0pxrrrrr'10oooooo: `p` = 0/1 => single/pair, `x` = 0/1 => positive / negative pre-indexed, offset = `o` * 16 | +| `save_zreg` | 11100111'0oo0rrrr'11oooooo +| `save_preg` | 11100111'0oo1rrrr'11oooooo | | 11100111: reserved | | | 11101xxx: reserved for custom stack cases below only generated for asm routines | | | 11101000: Custom stack for `MSFT_OP_TRAP_FRAME` | From 91031acfc5adb7b3de4434da251166905764e359 Mon Sep 17 00:00:00 2001 From: Pedro Miguel Justo <40605312+pmsjt@users.noreply.github.com> Date: Mon, 17 Mar 2025 13:41:31 -0700 Subject: [PATCH 0288/2255] Update arm64-exception-handling.md --- docs/build/arm64-exception-handling.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/build/arm64-exception-handling.md b/docs/build/arm64-exception-handling.md index 8c7bcc7bbb4..7b7ef7b07dc 100644 --- a/docs/build/arm64-exception-handling.md +++ b/docs/build/arm64-exception-handling.md @@ -307,12 +307,12 @@ The unwind codes are encoded according to the table below. All unwind codes are | `end` | 11100100: end of unwind code. Implies `ret` in epilog. | | `end_c` | 11100101: end of unwind code in current chained scope. | | `save_next` | 11100110: save next non-volatile Int or FP register pair. | -| `save_any_xreg` | 11100111'0pxrrrrr'00oooooo: `p` = 0/1 => single/pair, `x` = 0/1 => positive / negative pre-indexed, offset = `o` * 16 for x=1 or p=1 / else offset * 8 | -| `save_any_dreg` | 11100111'0pxrrrrr'01oooooo: `p` = 0/1 => single/pair, `x` = 0/1 => positive / negative pre-indexed, offset = `o` * 16 for x=1 or p=1 / else offset * 8 | -| `save_any_qreg` | 11100111'0pxrrrrr'10oooooo: `p` = 0/1 => single/pair, `x` = 0/1 => positive / negative pre-indexed, offset = `o` * 16 | -| `save_zreg` | 11100111'0oo0rrrr'11oooooo -| `save_preg` | 11100111'0oo1rrrr'11oooooo -| | 11100111: reserved | +| `save_any_xreg` | 11100111'0pxrrrrr'00oooooo: save register(s)
  • `p`: 0/1 => single `X(#r)` vs pair `X(#r)` + `X(#r+1)`
  • `x`: 0/1 => positive vs negative pre-indexed stack offset
  • `o`: offset = `o` * 16, if x=1 or p=1, else `o` * 8

| +| `save_any_dreg` | 11100111'0pxrrrrr'01oooooo: save register(s)
  • `p`: 0/1 => single `D(#r)` vs pair `D(#r)` + `D(#r+1)`
  • `x`: 0/1 => positive vs negative pre-indexed stack offset
  • `o`: offset = `o` * 16, if x=1 or p=1, else `o` * 8

| +| `save_any_qreg` | 11100111'0pxrrrrr'10oooooo: save register(s)
  • `p`: 0/1 => single `Q(#r)` vs pair `Q(#r)` + `Q(#r+1)`
  • `x`: 0/1 => positive vs negative pre-indexed stack offset
  • `o`: offset = `o` * 16

| +| `save_zreg` | 11100111'0oo0rrrr'11oooooo: save reg `Z(#r+8)` at `[sp + #o * VL]`, (`Z8` through `Z23`) +| `save_preg` | 11100111'0oo1rrrr'11oooooo: save reg `P(#r+8)` at `[sp + #o * VL]`, (`P4` through `P15`; `r` values `[0, 3]` are reserved) +| | 11100111'1yyyyyyy': reserved | | | 11101xxx: reserved for custom stack cases below only generated for asm routines | | | 11101000: Custom stack for `MSFT_OP_TRAP_FRAME` | | | 11101001: Custom stack for `MSFT_OP_MACHINE_FRAME` | From e79b1aa0b74e96c97b349bba7072de72296b0c8c Mon Sep 17 00:00:00 2001 From: Pedro Miguel Justo <40605312+pmsjt@users.noreply.github.com> Date: Mon, 17 Mar 2025 13:59:42 -0700 Subject: [PATCH 0289/2255] Update arm64-exception-handling.md --- docs/build/arm64-exception-handling.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/build/arm64-exception-handling.md b/docs/build/arm64-exception-handling.md index 7b7ef7b07dc..d626cc2b09a 100644 --- a/docs/build/arm64-exception-handling.md +++ b/docs/build/arm64-exception-handling.md @@ -306,10 +306,10 @@ The unwind codes are encoded according to the table below. All unwind codes are | `nop` | 11100011: no unwind operation is required. | | `end` | 11100100: end of unwind code. Implies `ret` in epilog. | | `end_c` | 11100101: end of unwind code in current chained scope. | -| `save_next` | 11100110: save next non-volatile Int or FP register pair. | -| `save_any_xreg` | 11100111'0pxrrrrr'00oooooo: save register(s)
  • `p`: 0/1 => single `X(#r)` vs pair `X(#r)` + `X(#r+1)`
  • `x`: 0/1 => positive vs negative pre-indexed stack offset
  • `o`: offset = `o` * 16, if x=1 or p=1, else `o` * 8

| -| `save_any_dreg` | 11100111'0pxrrrrr'01oooooo: save register(s)
  • `p`: 0/1 => single `D(#r)` vs pair `D(#r)` + `D(#r+1)`
  • `x`: 0/1 => positive vs negative pre-indexed stack offset
  • `o`: offset = `o` * 16, if x=1 or p=1, else `o` * 8

| -| `save_any_qreg` | 11100111'0pxrrrrr'10oooooo: save register(s)
  • `p`: 0/1 => single `Q(#r)` vs pair `Q(#r)` + `Q(#r+1)`
  • `x`: 0/1 => positive vs negative pre-indexed stack offset
  • `o`: offset = `o` * 16

| +| `save_next` | 11100110: save next register pair. | +| `save_any_xreg` | 11100111'0pxrrrrr'00oooooo: save register(s)
  • `p`: 0/1 => single `X(#r)` vs pair `X(#r)` + `X(#r+1)`
  • `x`: 0/1 => positive vs negative pre-indexed stack offset
  • `o`: offset = `o` * 16, if x=1 or p=1, else `o` * 8
(Windows >= 11 required) | +| `save_any_dreg` | 11100111'0pxrrrrr'01oooooo: save register(s)
  • `p`: 0/1 => single `D(#r)` vs pair `D(#r)` + `D(#r+1)`
  • `x`: 0/1 => positive vs negative pre-indexed stack offset
  • `o`: offset = `o` * 16, if x=1 or p=1, else `o` * 8
(Windows >= 11 required) | +| `save_any_qreg` | 11100111'0pxrrrrr'10oooooo: save register(s)
  • `p`: 0/1 => single `Q(#r)` vs pair `Q(#r)` + `Q(#r+1)`
  • `x`: 0/1 => positive vs negative pre-indexed stack offset
  • `o`: offset = `o` * 16
(Windows >= 11 required) | | `save_zreg` | 11100111'0oo0rrrr'11oooooo: save reg `Z(#r+8)` at `[sp + #o * VL]`, (`Z8` through `Z23`) | `save_preg` | 11100111'0oo1rrrr'11oooooo: save reg `P(#r+8)` at `[sp + #o * VL]`, (`P4` through `P15`; `r` values `[0, 3]` are reserved) | | 11100111'1yyyyyyy': reserved | @@ -336,7 +336,7 @@ In instructions with large values covering multiple bytes, the most significant Post-indexed offset addressing isn't allowed in a prolog. All offset ranges (#Z) match the encoding of `stp`/`str` addressing except `save_r19r20_x`, in which 248 is sufficient for all save areas (10 Int registers + 8 FP registers + 8 input registers). -`save_next` must follow a save for Int or FP volatile register pair: `save_regp`, `save_regp_x`, `save_fregp`, `save_fregp_x`, `save_r19r20_x`, or another `save_next`. It saves the next register pair at the next 16-byte slot in "growing up" order. A `save_next` refers to the first FP register pair when it follows the `save-next` that denotes the last Int register pair. +`save_next` must follow a save for a register pair: `save_regp`, `save_regp_x`, `save_fregp`, `save_fregp_x`, `save_r19r20_x`, or another `save_next`. It can also be used in conjunction with `save_any_xreg`, `save_any_dreg` or `save_any_qreg` but only when `p = 1`. It saves the next register pair in numerically increasing order to the next stack space. `save_next` must not be used beyond the last register of the same kind. Since the sizes of regular return and jump instructions are the same, there's no need for a separated `end` unwind code in tail-call scenarios. From 2ea6c3d10a22d2e2b564f88e579186cf025a1c2c Mon Sep 17 00:00:00 2001 From: Pedro Miguel Justo <40605312+pmsjt@users.noreply.github.com> Date: Mon, 17 Mar 2025 14:07:34 -0700 Subject: [PATCH 0290/2255] Update arm64-exception-handling.md --- docs/build/arm64-exception-handling.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/arm64-exception-handling.md b/docs/build/arm64-exception-handling.md index d626cc2b09a..26cabebc7d9 100644 --- a/docs/build/arm64-exception-handling.md +++ b/docs/build/arm64-exception-handling.md @@ -311,7 +311,7 @@ The unwind codes are encoded according to the table below. All unwind codes are | `save_any_dreg` | 11100111'0pxrrrrr'01oooooo: save register(s)
  • `p`: 0/1 => single `D(#r)` vs pair `D(#r)` + `D(#r+1)`
  • `x`: 0/1 => positive vs negative pre-indexed stack offset
  • `o`: offset = `o` * 16, if x=1 or p=1, else `o` * 8
(Windows >= 11 required) | | `save_any_qreg` | 11100111'0pxrrrrr'10oooooo: save register(s)
  • `p`: 0/1 => single `Q(#r)` vs pair `Q(#r)` + `Q(#r+1)`
  • `x`: 0/1 => positive vs negative pre-indexed stack offset
  • `o`: offset = `o` * 16
(Windows >= 11 required) | | `save_zreg` | 11100111'0oo0rrrr'11oooooo: save reg `Z(#r+8)` at `[sp + #o * VL]`, (`Z8` through `Z23`) -| `save_preg` | 11100111'0oo1rrrr'11oooooo: save reg `P(#r+8)` at `[sp + #o * VL]`, (`P4` through `P15`; `r` values `[0, 3]` are reserved) +| `save_preg` | 11100111'0oo1rrrr'11oooooo: save reg `P(#r+8)` at `[sp + #o * (VL / 8)]`, (`P4` through `P15`; `r` values `[0, 3]` are reserved) | | 11100111'1yyyyyyy': reserved | | | 11101xxx: reserved for custom stack cases below only generated for asm routines | | | 11101000: Custom stack for `MSFT_OP_TRAP_FRAME` | From 0c383f241a3b05016c50922ca394aa1fdf7bdaec Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Mon, 17 Mar 2025 17:27:28 -0700 Subject: [PATCH 0291/2255] Refresh articles --- ...compile-a-c-program-on-the-command-line.md | 71 ++++++------ ...ng-and-using-a-dynamic-link-library-cpp.md | 102 +++++++++--------- ...eating-windows-desktop-applications-cpp.md | 63 +++++------ 3 files changed, 116 insertions(+), 120 deletions(-) diff --git a/docs/build/walkthrough-compile-a-c-program-on-the-command-line.md b/docs/build/walkthrough-compile-a-c-program-on-the-command-line.md index 1edfba8ac35..4be70be9795 100644 --- a/docs/build/walkthrough-compile-a-c-program-on-the-command-line.md +++ b/docs/build/walkthrough-compile-a-c-program-on-the-command-line.md @@ -1,8 +1,8 @@ --- -title: "Walkthrough: Compile a C program on the command line" -description: "Walkthrough that shows how to create a Hello World C program." -ms.custom: "conceptual" -ms.date: 05/09/2022 +title: "Compile a C program on the command line" +description: "Learn how to create a basic, C program by using a text editor, and then compile it by using the command line." +ms.custom: tutorial +ms.date: 03/17/2025 helpviewer_keywords: ["command-line applications [C++], C programs", "Visual C, compiling", "compiling programs [C++]", "C program compiling [C++]"] ms.assetid: 7e74cc2d-54b1-49de-b7ad-d3ae6b39ab8d --- @@ -10,28 +10,27 @@ ms.assetid: 7e74cc2d-54b1-49de-b7ad-d3ae6b39ab8d The Visual Studio build tools include a C compiler that you can use to create everything from basic console programs to full Windows Desktop applications, mobile apps, and more. Microsoft C/C++ (MSVC) is a C and C++ compiler that, in its latest versions, conforms to some of the latest C language standards, including C11 and C17. -This walkthrough shows how to create a basic, "Hello, World"-style C program by using a text editor, and then compile it on the command line. If you'd rather work in C++ on the command line, see [Walkthrough: Compiling a Native C++ Program on the Command Line](walkthrough-compiling-a-native-cpp-program-on-the-command-line.md). If you'd like to try the Visual Studio IDE instead of using the command line, see [Walkthrough: Working with Projects and Solutions (C++)](../ide/walkthrough-working-with-projects-and-solutions-cpp.md) or [Using the Visual Studio IDE for C++ Desktop Development](../ide/using-the-visual-studio-ide-for-cpp-desktop-development.md). +This guide shows how to create a basic, *Hello, World*-style C program by using a text editor, and then compile it on the command line. If you'd rather work in C++ on the command line, see [Walkthrough: Compiling a Native C++ Program on the Command Line](walkthrough-compiling-a-native-cpp-program-on-the-command-line.md). If you'd like to try the Visual Studio IDE instead of using the command line, see [Walkthrough: Working with Projects and Solutions (C++)](../ide/walkthrough-working-with-projects-and-solutions-cpp.md) or [Using the Visual Studio IDE for C++ Desktop Development](../ide/using-the-visual-studio-ide-for-cpp-desktop-development.md). ## Prerequisites -To complete this walkthrough, you must have installed either Visual Studio or the Build Tools for Visual Studio and the optional Desktop development with C++ workload. +- Either Visual Studio or the Build Tools for Visual Studio, and the optional Desktop development with C++ workload + - Visual Studio is a powerful integrated development environment that supports a full-featured editor, resource managers, debuggers, and compilers for many languages and platforms. For information on these features and how to download and install Visual Studio, including the free Visual Studio Community edition, see [Install Visual Studio](/visualstudio/install/install-visual-studio). + - The Build Tools for Visual Studio installs only the command-line toolset, the compilers, tools, and libraries you need to build C and C++ programs. It's perfect for build labs or classroom exercises and installs relatively quickly. To install only the command-line toolset, download Build Tools for Visual Studio from the [Visual Studio downloads](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) page and run the installer. In the Visual Studio installer, select the **Desktop development with C++** workload (in older versions of Visual Studio, select the **C++ build tools** workload), and choose **Install**. -Visual Studio is a powerful integrated development environment that supports a full-featured editor, resource managers, debuggers, and compilers for many languages and platforms. For information on these features and how to download and install Visual Studio, including the free Visual Studio Community edition, see [Install Visual Studio](/visualstudio/install/install-visual-studio). - -The Build Tools for Visual Studio version of Visual Studio installs only the command-line toolset, the compilers, tools, and libraries you need to build C and C++ programs. It's perfect for build labs or classroom exercises and installs relatively quickly. To install only the command-line toolset, download Build Tools for Visual Studio from the [Visual Studio downloads](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) page and run the installer. In the Visual Studio installer, select the **Desktop development with C++** workload (in older versions of Visual Studio, select the **C++ build tools** workload), and choose **Install**. - -When you've installed the tools, there's another tool you'll use to build a C or C++ program on the command line. MSVC has complex requirements for the command-line environment to find the tools, headers, and libraries it uses. **You can't use MSVC in a plain command prompt window** without some preparation. You need a *developer command prompt* window, which is a regular command prompt window that has all the required environment variables set. Fortunately, Visual Studio installs shortcuts for you to launch developer command prompts that have the environment set up for command line builds. Unfortunately, the names of the developer command prompt shortcuts and where they're located are different in almost every version of Visual Studio and on different versions of Windows. Your first walkthrough task is to find the right shortcut to use. +- MSVC compiler + - MSVC has complex requirements for the command-line environment to find the tools, headers, and libraries it uses. **You can't use MSVC in a plain command prompt window** without some preparation. You need a *developer command prompt* window, which is a regular command prompt window that has all the required environment variables set. Fortunately, Visual Studio installs shortcuts for you to launch developer command prompts that have the environment set up for command line builds. Unfortunately, the names of the developer command prompt shortcuts and where they're located are different in almost every version of Visual Studio and on different versions of Windows. Your first walkthrough task is to find the right shortcut to use. > [!NOTE] > A developer command prompt shortcut automatically sets the correct paths for the compiler and tools, and for any required headers and libraries. Some of these values are different for each build configuration. You must set these environment values yourself if you don't use one of the shortcuts. For more information, see [Use the MSVC toolset from the command line](./building-on-the-command-line.md). Because the build environment is complex, we strongly recommend you use a developer command prompt shortcut instead of building your own. -These instructions vary depending on which version of Visual Studio you're using. To see the documentation for your preferred version of Visual Studio, use the **Version** selector control. It's found at the top of the table of contents on this page. +These instructions vary depending on which version of Visual Studio you're using. To see the documentation for your preferred version of Visual Studio, use the **Version** selector located at the top of the table of contents on this page. ::: moniker range="msvc-170" ## Open a developer command prompt in Visual Studio 2022 -If you've installed Visual Studio 2022 on Windows 10 or later, open the Start menu, and choose **All apps**. Then, scroll down and open the **Visual Studio 2022** folder (not the Visual Studio 2022 app). Choose **Developer Command Prompt for VS 2022** to open the command prompt window. +If you installed Visual Studio 2022 on Windows 10 or later, open the Start menu, and choose **All apps**. Then, scroll down and open the **Visual Studio 2022** folder (not the Visual Studio 2022 app). Choose **Developer Command Prompt for VS 2022** to open the command prompt window. ::: moniker-end @@ -39,7 +38,7 @@ If you've installed Visual Studio 2022 on Windows 10 or later, open the Start me ## Open a developer command prompt in Visual Studio 2019 -If you've installed Visual Studio 2019 on Windows 10 or later, open the Start menu, and choose **All apps**. Then, scroll down and open the **Visual Studio 2019** folder (not the Visual Studio 2019 app). Choose **Developer Command Prompt for VS 2019** to open the command prompt window. +If you installed Visual Studio 2019 on Windows 10 or later, open the Start menu, and choose **All apps**. Then, scroll down and open the **Visual Studio 2019** folder (not the Visual Studio 2019 app). Choose **Developer Command Prompt for VS 2019** to open the command prompt window. ::: moniker-end @@ -47,7 +46,7 @@ If you've installed Visual Studio 2019 on Windows 10 or later, open the Start me ## Open a developer command prompt in Visual Studio 2017 -If you've installed Visual Studio 2017 on Windows 10 or later, open the Start menu, and choose **All apps**. Then, scroll down and open the **Visual Studio 2017** folder (not the Visual Studio 2017 app). Choose **Developer Command Prompt for VS 2017** to open the command prompt window. +If you installed Visual Studio 2017 on Windows 10 or later, open the Start menu, and choose **All apps**. Then, scroll down and open the **Visual Studio 2017** folder (not the Visual Studio 2017 app). Choose **Developer Command Prompt for VS 2017** to open the command prompt window. ::: moniker-end @@ -55,11 +54,11 @@ If you've installed Visual Studio 2017 on Windows 10 or later, open the Start me ## Open a developer command prompt in Visual Studio 2015 -If you've installed Microsoft Visual C++ Build Tools 2015 on Windows 10 or later, open the Start menu, and choose **All apps**. Then, scroll down and open the **Visual C++ Build Tools** folder. Choose **Visual C++ 2015 x86 Native Tools Command Prompt** to open the command prompt window. +If you installed Microsoft Visual C++ Build Tools 2015 on Windows 10 or later, open the Start menu, and choose **All apps**. Then, scroll down and open the **Visual C++ Build Tools** folder. Choose **Visual C++ 2015 x86 Native Tools Command Prompt** to open the command prompt window. ::: moniker-end -If you're using a different version of Windows, look in your Start menu or Start page for a Visual Studio tools folder that contains a developer command prompt shortcut. You can also use the Windows search function to search for "developer command prompt" and choose one that matches your installed version of Visual Studio. Use the shortcut to open the command prompt window. +If you're using a different version of Windows, look in your Start menu or Start page for a Visual Studio tools folder that contains a developer command prompt shortcut. You can also use the Windows search function to search for *developer command prompt* and choose one that matches your installed version of Visual Studio. Use the shortcut to open the command prompt window. Next, verify that the developer command prompt is set up correctly. In the command prompt window, enter `cl` (or `CL`, case doesn't matter for the compiler name, but it does matter for compiler options). The output should look something like this: @@ -71,19 +70,19 @@ Copyright (C) Microsoft Corporation. All rights reserved. usage: cl [ option... ] filename... [ /link linkoption... ] ``` -There may be differences in the current directory or version numbers, depending on the version of Visual Studio and any updates installed. If the above output is similar to what you see, then you're ready to build C or C++ programs at the command line. +There might be differences in the current directory or version numbers, depending on the version of Visual Studio and any updates installed. If the preceding output is similar to what you see, then you're ready to build C or C++ programs at the command line. > [!NOTE] -> If you get an error such as "'cl' is not recognized as an internal or external command, operable program or batch file," error C1034, or error LNK1104 when you run the **cl** command, then either you are not using a developer command prompt, or something is wrong with your installation of Visual Studio. You must fix this issue before you can continue. +> If you get an error such as **'cl' is not recognized as an internal or external command, operable program or batch file**, error C1034, or error LNK1104 when you run the `cl` command, then either you're not using a developer command prompt, or something is wrong with your installation of Visual Studio. You must fix this issue before you can continue. -If you can't find the developer command prompt shortcut, or if you get an error message when you enter `cl`, then your Visual Studio installation may have a problem. If you're using Visual Studio 2017 or later, try reinstalling the **Desktop development with C++** workload in the Visual Studio installer. For details, see [Install C++ support in Visual Studio](vscpp-step-0-installation.md). Or, reinstall the Build Tools from the [Visual Studio downloads](https://visualstudio.microsoft.com/downloads/) page. Don't go on to the next section until the `cl` command works. For more information about installing and troubleshooting Visual Studio, see [Install Visual Studio](/visualstudio/install/install-visual-studio). +If you can't find the developer command prompt shortcut, or if you get an error message when you enter `cl`, then your Visual Studio installation might have a problem. If you're using Visual Studio 2017 or later, try reinstalling the **Desktop development with C++** workload in the Visual Studio installer. For details, see [Install C++ support in Visual Studio](vscpp-step-0-installation.md). Or, reinstall the Build Tools from the [Visual Studio downloads](https://visualstudio.microsoft.com/downloads/) page. Don't go on to the next section until the `cl` command works. For more information about installing and troubleshooting Visual Studio, see [Install Visual Studio](/visualstudio/install/install-visual-studio). > [!NOTE] -> Depending on the version of Windows on the computer and the system security configuration, you might have to right-click to open the shortcut menu for the developer command prompt shortcut and then choose **Run as Administrator** to successfully build and run the program that you create by following this walkthrough. +> Depending on the version of Windows on the computer and the system security configuration, you might need to right-click to open the shortcut menu for the developer command prompt shortcut and then choose **Run as Administrator** to successfully build and run the program that you create by following this walkthrough. ## Create a C source file and compile it on the command line -1. In the developer command prompt window, enter `cd c:\` to change the current working directory to the root of your C: drive. Next, enter `md c:\hello` to create a directory, and then enter `cd c:\hello` to change to that directory. This directory will hold your source file and the compiled program. +1. In the developer command prompt window, enter `cd c:\` to change the current working directory to the root of your C: drive. Next, enter `md c:\hello` to create a directory, and then enter `cd c:\hello` to change to that directory. This directory holds your source file and the compiled program. 1. Enter `notepad hello.c` at the developer command prompt. In the Notepad alert dialog that pops up, choose **Yes** to create a new *`hello.c`* file in your working directory. @@ -122,7 +121,7 @@ If you can't find the developer command prompt shortcut, or if you get an error 1. To compile your program, enter `cl hello.c` at the developer command prompt. - You can see the executable program name, hello.exe, in the lines of output information that the compiler displays: + You can see the executable program name, *`hello.exe`*, in the lines of output information that the compiler displays: ```Output c:\hello>cl hello.c @@ -138,11 +137,11 @@ If you can't find the developer command prompt shortcut, or if you get an error ``` > [!NOTE] - > If you get an error such as "'cl' is not recognized as an internal or external command, operable program or batch file," error C1034, or error LNK1104, your developer command prompt is not set up correctly. For information on how to fix this issue, go back to the **Open a developer command prompt** section. + > If you get an error such as **'cl' is not recognized as an internal or external command, operable program or batch file,** error C1034, or error LNK1104, your developer command prompt isn't set up correctly. For information on how to fix this issue, go back to the **Open a developer command prompt** section. > > If you get a different compiler or linker error or warning, review your source code to correct any errors, then save it and run the compiler again. For information about specific errors, use the search box at the top of this page to look for the error number. -1. To run your program, enter `hello` at the command prompt. +1. To run your program, enter *hello* at the command prompt. The program displays this text and then exits: @@ -152,9 +151,9 @@ If you can't find the developer command prompt shortcut, or if you get an error Congratulations, you've compiled and run a C program by using the command line. -## Next steps +## Advanced steps -This "Hello, World" example is about as basic as a C program can get. Real world programs have header files and more source files, link in libraries, and do useful work. +This *Hello, World* example is about as basic as a C program can get. Real world programs have header files and more source files, link in libraries, and do useful work. You can use the steps in this walkthrough to build your own C code instead of typing the sample code shown. You can also build many C code sample programs that you find elsewhere. To compile a program that has more source code files, enter them all on the command line: @@ -164,23 +163,23 @@ The compiler outputs a program called *`file1.exe`*. To change the name to *`pro `cl file1.c file2.c file3.c /link /out:program1.exe` -And to catch more programming mistakes automatically, we recommend you compile by using either the [/W3](reference/compiler-option-warning-level.md) or [/W4](reference/compiler-option-warning-level.md) warning level option: +And to catch more programming mistakes automatically, we recommend you compile by using either the [/W3 or /W4](reference/compiler-option-warning-level.md) warning level option: `cl /W4 file1.c file2.c file3.c /link /out:program1.exe` -The compiler, cl.exe, has many more options you can apply to build, optimize, debug, and analyze your code. For a quick list, enter `cl /?` at the developer command prompt. You can also compile and link separately and apply linker options in more complex build scenarios. For more information on compiler and linker options and usage, see [C/C++ Building Reference](reference/c-cpp-building-reference.md). +The compiler, *`cl.exe`*, has many more options you can apply to build, optimize, debug, and analyze your code. For a quick list, enter `cl /?` at the developer command prompt. You can also compile and link separately and apply linker options in more complex build scenarios. For more information on compiler and linker options and usage, see [C/C++ Building Reference](reference/c-cpp-building-reference.md). You can use NMAKE and makefiles, or MSBuild and project files to configure and build more complex projects on the command line. For more information on using these tools, see [NMAKE Reference](reference/nmake-reference.md) and [MSBuild](msbuild-visual-cpp.md). -The C and C++ languages are similar, but not the same. The Microsoft C/C++ compiler (MSVC) uses a basic rule to determine which language to use when it compiles your code. By default, the MSVC compiler treats all files that end in *`.c`* as C source code, and all files that end in *`.cpp`* as C++ source code. To force the compiler to treat all files as C no matter the file name extension, use the [/TC](reference/tc-tp-tc-tp-specify-source-file-type.md) compiler option. +The C and C++ languages are similar, but not the same. The MSVC compiler uses a basic rule to determine which language to use when it compiles your code. By default, the MSVC compiler treats all files that end in *`.c`* as C source code, and all files that end in *`.cpp`* as C++ source code. To force the compiler to treat all files as C no matter the file name extension, use the [/TC](reference/tc-tp-tc-tp-specify-source-file-type.md) compiler option. -By default, MSVC is compatible with the ANSI C89 and ISO C99 standards, but not strictly conforming. In most cases, portable C code will compile and run as expected. The compiler provides optional support for the changes in ISO C11/C17. To compile with C11/C17 support, use the compiler flag **`/std:c11`** or **`/std:c17`**. C11/C17 support requires Windows SDK 10.0.20201.0 or later. Windows SDK 10.0.22000.0 or later is recommended. You can download the latest SDK from the [Windows SDK](https://developer.microsoft.com/windows/downloads/windows-sdk/) page. For more information, and instructions on how to install and use this SDK for C development, see [Install C11 and C17 support in Visual Studio](../overview/install-c17-support.md). +By default, MSVC is compatible with the ANSI C89 and ISO C99 standards, but not strictly conforming. In most cases, portable C code compiles and runs as expected. The compiler provides optional support for the changes in ISO C11/C17. To compile with C11/C17 support, use the compiler flag `/std:c11` or `/std:c17`. C11/C17 support requires Windows SDK 10.0.20201.0 or later. Windows SDK 10.0.22000.0 or later is recommended. You can download the latest SDK from the [Windows SDK](https://developer.microsoft.com/windows/downloads/windows-sdk/) page. For more information, and instructions on how to install and use this SDK for C development, see [Install C11 and C17 support in Visual Studio](../overview/install-c17-support.md). Certain library functions and POSIX function names are deprecated by MSVC. The functions are supported, but the preferred names have changed. For more information, see [Security Features in the CRT](../c-runtime-library/security-features-in-the-crt.md) and [Compiler Warning (level 3) C4996](../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). -## See also +## Related content -[Walkthrough: Creating a Standard C++ Program (C++)](../windows/walkthrough-creating-a-standard-cpp-program-cpp.md)\ -[C Language Reference](../c-language/c-language-reference.md)\ -[Projects and build systems](projects-and-build-systems-cpp.md)\ -[Compatibility](../c-runtime-library/compatibility.md) +- [Walkthrough: Create a Standard C++ Program](../windows/walkthrough-creating-a-standard-cpp-program-cpp.md)\ +- [C Language Reference](../c-language/c-language-reference.md)\ +- [C/C++ projects and build systems](projects-and-build-systems-cpp.md)\ +- [Compatibility](../c-runtime-library/compatibility.md) diff --git a/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md b/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md index ed1941b8809..1602a78fc55 100644 --- a/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md +++ b/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md @@ -1,59 +1,55 @@ --- -title: "Walkthrough: Create and use your own Dynamic Link Library (C++)" -description: "Use C++ to create a Windows dynamic-link library (DLL) in Visual Studio." +title: "Create and use your own dynamic-link library (C++)" +description: "Learn how to use C++ to create a Windows dynamic-link library (DLL) in Visual Studio." ms.topic: tutorial -ms.date: 12/09/2021 +ms.date: 03/17/2025 helpviewer_keywords: ["libraries [C++], DLLs", "DLLs [C++], walkthroughs"] --- -# Walkthrough: Create and use your own Dynamic Link Library (C++) +# Walkthrough: Create and use your own dynamic-link library (C++) -This step-by-step walkthrough shows how to use the Visual Studio IDE to create your own dynamic link library (DLL) written in Microsoft C++ (MSVC). Then it shows how to use the DLL from another C++ app. DLLs (also known as *shared libraries* in UNIX-based operating systems) are one of the most useful kinds of Windows components. You can use them as a way to share code and resources, and to shrink the size of your apps. DLLs can even make it easier to service and extend your apps. +This step-by-step walkthrough explains how to use the Visual Studio IDE to create your own dynamic-link library (DLL) written in Microsoft C++ (MSVC), and how to use the DLL from another C++ app. DLLs, also known as *shared libraries* in UNIX-based operating systems, are one of the most useful kinds of Windows components. You can use them to share code and resources, and to shrink the size of your apps. DLLs can even make it easier to service and extend your apps. -In this walkthrough, you'll create a DLL that implements some math functions. Then you'll create a console app that uses the functions from the DLL. You'll also get an introduction to some of the programming techniques and conventions used in Windows DLLs. +In this walkthrough, you create a DLL that implements some math functions. Then you create a console app that uses the functions from the DLL. You also get an introduction to some of the programming techniques and conventions used in Windows DLLs. -This walkthrough covers these tasks: +This guide covers the following steps: - Create a DLL project in Visual Studio. - - Add exported functions and variables to the DLL. - - Create a console app project in Visual Studio. - - Use the functions and variables imported from the DLL in the console app. - - Run the completed app. Like a statically linked library, a DLL _exports_ variables, functions, and resources by name. A client app _imports_ the names to use those variables, functions, and resources. Unlike a statically linked library, Windows connects the imports in your app to the exports in a DLL at load time or at run time, instead of connecting them at link time. Windows requires extra information that isn't part of the standard C++ compilation model to make these connections. The MSVC compiler implements some Microsoft-specific extensions to C++ to provide this extra information. We explain these extensions as we go. -This walkthrough creates two Visual Studio solutions; one that builds the DLL, and one that builds the client app. The DLL uses the C calling convention. It can be called from apps written in other programming languages, as long as the platform, calling conventions, and linking conventions match. The client app uses _implicit linking_, where Windows links the app to the DLL at load-time. This linking lets the app call the DLL-supplied functions just like the functions in a statically linked library. +This walkthrough creates two Visual Studio solutions: one that builds the DLL, and one that builds the client app. The DLL uses the C calling convention. It can be called from apps written in other programming languages, as long as the platform, calling conventions, and linking conventions match. The client app uses _implicit linking_, where Windows links the app to the DLL at load time. This linking lets the app call the DLL-supplied functions just like the functions in a statically linked library. -This walkthrough doesn't cover some common situations. The code doesn't show the use of C++ DLLs by other programming languages. It doesn't show how to [create a resource-only DLL](creating-a-resource-only-dll.md), or how to use [explicit linking](linking-an-executable-to-a-dll.md#linking-explicitly) to load DLLs at run-time rather than at load-time. Rest assured, you can use MSVC and Visual Studio to do all these things. +This walkthrough doesn't cover some common situations. The code doesn't show the use of C++ DLLs by other programming languages. It doesn't show how to [create a resource-only DLL](creating-a-resource-only-dll.md), or how to use [explicit linking](linking-an-executable-to-a-dll.md#linking-explicitly) to load DLLs at run time rather than at load time. Rest assured, you can use MSVC and Visual Studio to do all these things. -Even though the code of the DLL is written in C++, we've used C-style interfaces for the exported functions. There are two main reasons for this: First, many other languages support imports of C-style functions. The client app doesn't have to be written in C++. Second, it avoids some common pitfalls related to exported classes and member functions. It's easy to make hard-to-diagnose errors when exporting classes, since everything referred to within a class declaration has to have an instantiation that's also exported. This restriction applies to DLLs, but not static libraries. If your classes are plain-old-data style, you shouldn't run into this issue. +Even though the code of the DLL is written in C++, we use C-style interfaces for the exported functions. There are two main reasons for this: First, many other languages support imports of C-style functions. The client app doesn't have to be written in C++. Second, it avoids some common pitfalls related to exported classes and member functions. It's easy to make hard-to-diagnose errors when exporting classes, since everything referred to within a class declaration has to have an instantiation that's also exported. This restriction applies to DLLs, but not static libraries. If your classes are plain-old-data style, you shouldn't run into this issue. For links to more information about DLLs, see [Create C/C++ DLLs in Visual Studio](dlls-in-visual-cpp.md). For more information about implicit linking and explicit linking, see [Determine which linking method to use](linking-an-executable-to-a-dll.md#determining-which-linking-method-to-use). For information about creating C++ DLLs for use with programming languages that use C-language linkage conventions, see [Exporting C++ functions for use in C-language executables](exporting-cpp-functions-for-use-in-c-language-executables.md). For information about how to create DLLs for use with .NET languages, see [Calling DLL Functions from Visual Basic Applications](calling-dll-functions-from-visual-basic-applications.md). ## Prerequisites -- A computer that runs Microsoft Windows 7 or later versions. We recommend the latest version of Windows for the best development experience. +- Microsoft Windows 7 or later. We recommend the latest version of Windows for the best development experience. ::: moniker range=">=msvc-150" -- A copy of Visual Studio. For information on how to download and install Visual Studio, see [Install Visual Studio](/visualstudio/install/install-visual-studio). When you run the installer, make sure that the **Desktop development with C++** workload is checked. Don't worry if you didn't install this workload when you installed Visual Studio. You can run the installer again and install it now. +- Visual Studio. To learn how to download and install Visual Studio, see [Install Visual Studio](/visualstudio/install/install-visual-studio). When you run the installer, make sure that the **Desktop development with C++** workload is checked. Don't worry if you didn't install this workload when you installed Visual Studio. You can run the installer again and install it now. - ![Visual Studio Installer, Desktop development with C++ workload.](media/desktop-development-with-cpp.png "Desktop development with C++") + :::image type="content" source="media/desktop-development-with-cpp.png" alt-text="Screenshot of the Visual Studio Installer, Desktop development with C++ workload."::: ::: moniker-end ::: moniker range="msvc-140" -- A copy of Visual Studio. For information on how to download and install Visual Studio 2015, see [Install Visual Studio 2015](/visualstudio/install/install-visual-studio-2015?view=vs-2015&preserve-view=true). Use a **Custom** installation to install the C++ compiler and tools, since they're not installed by default. +- Visual Studio. For information on how to download and install Visual Studio 2015, see [Install Visual Studio 2015](/visualstudio/install/install-visual-studio-2015?view=vs-2015&preserve-view=true). Use a **Custom** installation to install the C++ compiler and tools, since they're not installed by default. ::: moniker-end - An understanding of the basics of using the Visual Studio IDE. If you've used Windows desktop apps before, you can probably keep up. For an introduction, see [Visual Studio IDE feature tour](/visualstudio/ide/visual-studio-ide). -- An understanding of enough of the fundamentals of the C++ language to follow along. Don't worry, we don't do anything too complicated. +- Some familiarity with the C++ language. Don't worry, we don't do anything too complicated. ::: moniker range="msvc-150" @@ -64,15 +60,15 @@ For links to more information about DLLs, see [Create C/C++ DLLs in Visual Studi ## Create the DLL project -In this set of tasks, you create a project for your DLL, add code, and build it. To begin, start the Visual Studio IDE, and sign in if you need to. The instructions vary slightly depending on which version of Visual Studio you're using. Make sure you have the correct version selected in the control in the upper left of this page. +In the following steps, you create a project for your DLL, add code, and build it. To begin, start the Visual Studio IDE, and sign in if you need to. The instructions vary slightly depending on which version of Visual Studio you're using. To see the steps for your preferred version of Visual Studio, use the **Version** selector located at the top of the table of contents on this page. ::: moniker range=">=msvc-160" -### To create a DLL project in Visual Studio 2019 +### To create a DLL project in Visual Studio 1. On the menu bar, choose **File** > **New** > **Project** to open the **Create a New Project** dialog box. - ![Screenshot of the Create a new project dialog with the Dynamic Link Library template highlighted.](media/create-new-dll-project-2019.png "Create the MathLibrary project") + :::image type="content" source="media/create-new-dll-project-2019.png" alt-text="Screenshot of the Create a new project dialog box with the dynamic-link library template highlighted."::: 1. At the top of the dialog, set **Language** to **C++**, set **Platform** to **Windows**, and set **Project type** to **Library**. @@ -84,7 +80,7 @@ In this set of tasks, you create a project for your DLL, add code, and build it. When the solution is created, you can see the generated project and source files in the **Solution Explorer** window in Visual Studio. -![Screenshot of the Solution Explorer window with the Math Library project highlighted.](media/mathlibrary-solution-explorer-162.png "Generated solution in Visual Studio") + :::image type="content" source="media/mathlibrary-solution-explorer-162.png" alt-text="Screenshot of the Solution Explorer window with the MathLibrary project highlighted."::: ::: moniker-end @@ -96,13 +92,13 @@ When the solution is created, you can see the generated project and source files 1. In the left pane of the **New Project** dialog box, select **Installed** > **Visual C++** > **Windows Desktop**. In the center pane, select **Dynamic-Link Library (DLL)**. Enter *MathLibrary* in the **Name** box to specify a name for the project. Leave the default **Location** and **Solution name** values. Set **Solution** to **Create new solution**. Check **Create directory for solution** if it's unchecked. - ![Screenshot of the New Project dialog box showing Math Library in the Name text box.](media/mathlibrary-new-project-name-159.png "Name the MathLibrary project") + :::image type="content" source="media/mathlibrary-new-project-name-159.png" alt-text="Screenshot of the New Project dialog box in Visual Studio 2017 showing Math Library in the Name text box."::: 1. Choose the **OK** button to create the project. When the solution is created, you can see the generated project and source files in the **Solution Explorer** window in Visual Studio. -![Screenshot of the Solution Explorer window with the Math Library highlighted.](media/mathlibrary-solution-explorer-159.png "Generated solution in Visual Studio") +:::image type="content" source="media/mathlibrary-solution-explorer-159.png" alt-text="Screenshot of the Solution Explorer window in Visual Studio 2017 with the Math Library highlighted."::: ::: moniker-end @@ -114,21 +110,21 @@ When the solution is created, you can see the generated project and source files 1. In the left pane of the **New Project** dialog box, expand **Installed** > **Templates**, and select **Visual C++**, and then in the center pane, select **Win32 Console Application**. Enter *MathLibrary* in the **Name** edit box to specify a name for the project. Leave the default **Location** and **Solution name** values. Set **Solution** to **Create new solution**. Check **Create directory for solution** if it's unchecked. - ![Screenshot of the New Project dialog box showing Math Library in the Name text box.](media/mathlibrary-project-name.png "Name the MathLibrary project") + :::image type="content" source="media/mathlibrary-project-name.png" alt-text="Screenshot of the New Project dialog box in Visual Studio 2015 showing MathLibrary in the Name text box."::: 1. Choose the **OK** button to dismiss the **New Project** dialog and start the **Win32 Application Wizard**. - ![Screenshot of the Win32 Application Wizard Overview page.](media/mathlibrary-project-wizard-1.png "Win32 Application Wizard Overview") + :::image type="content" source="media/mathlibrary-project-wizard-1.png" alt-text="Screenshot of the Win32 Application Wizard Overview page."::: 1. Choose the **Next** button. On the **Application Settings** page, under **Application type**, select **DLL**. - ![Screenshot of the Win32 Application Wizard Application Settings Page.](media/mathlibrary-project-wizard-2.png "Create DLL in Win32 Application Wizard") + :::image type="content" source="media/mathlibrary-project-wizard-2.png" alt-text="Screenshot of the Win32 Application Wizard Application Settings Page."::: 1. Choose the **Finish** button to create the project. When the wizard completes the solution, you can see the generated project and source files in the **Solution Explorer** window in Visual Studio. -![Screenshot of the Solution Explorer window with the Math Library highlighted.](media/mathlibrary-solution-explorer-153.png "Generated solution in Visual Studio") +:::image type="content" source="media/mathlibrary-solution-explorer-153.png" alt-text="Screenshot of the Solution Explorer window in Visual Studio 2015 with the MathLibrary highlighted."::: ::: moniker-end @@ -140,11 +136,11 @@ Right now, this DLL doesn't do very much. Next, you'll create a header file to d 1. In the **Add New Item** dialog box, in the left pane, select **Visual C++**. In the center pane, select **Header File (.h)**. Specify *MathLibrary.h* as the name for the header file. - ![Screenshot of the Add New Item dialog with the C plus plus Header File template selected, and MathLibrary.h entered in the Name textbox.](media/mathlibrary-add-new-item-header-file.png "Add header file in Add New Item dialog") + :::image type="content" source="media/mathlibrary-add-new-item-header-file.png" alt-text="Screenshot of the Add New Item dialog with the C plus plus Header File template selected, and MathLibrary.h entered in the Name textbox."::: 1. Choose the **Add** button to generate a blank header file, which is displayed in a new editor window. - ![Screenshot of the empty MathLibrary.h file in the editor.](media/edit-empty-mathlibrary-header.png "Empty MathLibrary.h file in editor") + :::image type="content" source="media/edit-empty-mathlibrary-header.png" alt-text="Screenshot of the empty MathLibrary.h file in the editor."::: 1. Replace the contents of the header file with this code: @@ -329,7 +325,7 @@ When the `MATHLIBRARY_EXPORTS` macro is defined, the `MATHLIBRARY_API` macro set ::: moniker-end -To verify that everything works so far, compile the dynamic link library. To compile, choose **Build** > **Build Solution** on the menu bar. The DLL and related compiler output are placed in a folder called *Debug* directly below the solution folder. If you create a Release build, the output is placed in a folder called *Release*. The output should look something like this: +To verify that everything works so far, compile the DLL. To compile, choose **Build** > **Build Solution** on the menu bar. The DLL and related compiler output are placed in a folder called *Debug* directly below the solution folder. If you create a Release build, the output is placed in a folder called *Release*. The output should look something like this: ::: moniker range=">=msvc-160" @@ -380,9 +376,9 @@ Congratulations, you've created a DLL using Visual Studio! Next, you'll create a ## Create a client app that uses the DLL -When you create a DLL, think about how client apps may use it. To call the functions or access the data exported by a DLL, client source code must have the declarations available at compile time. At link time, the linker requires information to resolve the function calls or data accesses. A DLL supplies this information in an *import library*, a file that contains information about how to find the functions and data, instead of the actual code. And at run time, the DLL must be available to the client, in a location that the operating system can find. +When you create a DLL, think about how client apps might use it. To call the functions or access the data exported by a DLL, client source code must have the declarations available at compile time. At link time, the linker requires information to resolve the function calls or data accesses. A DLL supplies this information in an *import library*, a file that contains information about how to find the functions and data, instead of the actual code. And at run time, the DLL must be available to the client, in a location that the operating system can find. -Whether it's your own or from a third-party, your client app project needs several pieces of information to use a DLL. It needs to find the headers that declare the DLL exports, the import libraries for the linker, and the DLL itself. One solution is to copy all of these files into your client project. For third-party DLLs that are unlikely to change while your client is in development, this method may be the best way to use them. However, when you also build the DLL, it's better to avoid duplication. If you make a local copy of DLL files that are under development, you may accidentally change a header file in one copy but not the other, or use an out-of-date library. +Whether it's your own or from a third-party, your client app project needs several pieces of information to use a DLL. It needs to find the headers that declare the DLL exports, the import libraries for the linker, and the DLL itself. One solution is to copy all of these files into your client project. For third-party DLLs that are unlikely to change while your client is in development, this method might be the best way to use them. However, when you also build the DLL, it's better to avoid duplication. If you make a local copy of DLL files that are under development, you might accidentally change a header file in one copy but not the other, or use an out-of-date library. To avoid out-of-sync code, we recommend you set the include path in your client project to include the DLL header files directly from your DLL project. Also, set the library path in your client project to include the DLL import libraries from the DLL project. And finally, copy the built DLL from the DLL project into your client build output directory. This step allows your client app to use the same DLL code you build. @@ -412,7 +408,7 @@ A minimal console application project is created for you. The name for the main 1. To create a C++ app that uses the DLL that you created, on the menu bar, choose **File** > **New** > **Project**. -1. In the left pane of the **New Project** dialog, select **Windows Desktop** under **Installed** > **Visual C++**. In the center pane, select **Windows Console Application**. Specify the name for the project, *MathClient*, in the **Name** edit box. Leave the default **Location** and **Solution name** values. Set **Solution** to **Create new solution**. Check **Create directory for solution** if it's unchecked. +1. In the left pane of the **New Project** dialog, select **Windows Desktop** under **Installed** > **Visual C++**. In the center pane, select **Windows Console Application**. Specify the name for the project, *MathClient*, in the **Name** edit box. Leave the default **Location** and **Solution name** values. Set **Solution** to **Create new solution**. Check **Create directory for solution** if it's unchecked. ![Screenshot of the New Project dialog box with Installed > Visual C plus plus > Windows Desktop selected, Windows Console Application highlighted, and Math Client typed in the Name text box.](media/mathclient-new-project-name-159.png "Name the client project") @@ -448,13 +444,13 @@ Next, to call the MathLibrary functions in your source code, your project must i 1. Right-click on the **MathClient** node in **Solution Explorer** to open the **Property Pages** dialog. -1. In the **Configuration** drop-down box, select **All Configurations** if it's not already selected. +1. In the **Configuration** dropdown box, select **All Configurations** if it's not already selected. 1. In the left pane, select **Configuration Properties** > **C/C++** > **General**. -1. In the property pane, select the drop-down control next to the **Additional Include Directories** edit box, and then choose **Edit**. +1. In the property pane, select the dropdown control next to the **Additional Include Directories** edit box, and then choose **Edit**. - ![Screenshot of the Property Pages dialog showing the Edit command in the Additional Include Directories property drop-down.](media/mathclient-additional-include-directories-property.png "Edit the Additional Include Directories property") + ![Screenshot of the Property Pages dialog showing the Edit command in the Additional Include Directories property dropdown.](media/mathclient-additional-include-directories-property.png "Edit the Additional Include Directories property") 1. Double-click in the top pane of the **Additional Include Directories** dialog box to enable an edit control. Or, choose the folder icon to create a new entry. @@ -506,43 +502,43 @@ To fix this issue, you could copy the library file directly into your client app 1. Right-click on the **MathClient** node in **Solution Explorer** and choose **Properties** to open the **Property Pages** dialog. -1. In the **Configuration** drop-down box, select **All Configurations** if it's not already selected. It ensures that any property changes apply to both Debug and Release builds. +1. In the **Configuration** dropdown box, select **All Configurations** if it's not already selected. It ensures that any property changes apply to both Debug and Release builds. -1. In the left pane, select **Configuration Properties** > **Linker** > **Input**. In the property pane, select the drop-down control next to the **Additional Dependencies** edit box, and then choose **Edit**. +1. In the left pane, select **Configuration Properties** > **Linker** > **Input**. In the property pane, select the dropdown control next to the **Additional Dependencies** edit box, and then choose **Edit**. - ![Screenshot of the Property Pages dialog showing the Edit command in the Linker > Input > Additional Dependencies property drop-down.](media/mathclient-additional-dependencies-property.png "Edit the Additional Dependencies property") + :::image type="content" source="media/mathclient-additional-dependencies-property.png" alt-text="Screenshot of the Property Pages dialog box under Input that shows the Edit command in the Additional Dependencies property dropdown."::: 1. In the **Additional Dependencies** dialog, add *MathLibrary.lib* to the list in the top edit control. - ![Screenshot of the Additional Dependencies dialog showing the MathLibrary.lib file.](media/mathclient-additional-dependencies.png "Add the library dependency") + :::image type="content" source="media/mathclient-additional-dependencies.png" alt-text="Screenshot of the Additional Dependencies dialog box showing the MathLibrary.lib file."::: 1. Choose **OK** to go back to the **Property Pages** dialog box. -1. In the left pane, select **Configuration Properties** > **Linker** > **General**. In the property pane, select the drop-down control next to the **Additional Library Directories** edit box, and then choose **Edit**. +1. In the left pane, select **Configuration Properties** > **Linker** > **General**. In the property pane, select the dropdown control next to the **Additional Library Directories** edit box, and then choose **Edit**. - ![Screenshot of the Property Pages dialog showing the Edit command in the Linker > General > Additional Library Directories property drop-down.](media/mathclient-additional-library-directories-property.png "Edit the Additional Library Directories property") + :::image type="content" source="media/mathclient-additional-library-directories-property.png" alt-text="Screenshot of the Property Pages dialog box under General that shows the Edit command in the Additional Library Directories property dropdown."::: -1. Double-click in the top pane of the **Additional Library Directories** dialog box to enable an edit control. In the edit control, specify the path to the location of the **MathLibrary.lib** file. By default, it's in a folder called *Debug* directly under the DLL solution folder. If you create a release build, the file is placed in a folder called *Release*. You can use the `$(IntDir)` macro so that the linker can find your DLL, no matter which kind of build you create. If you followed the directions to put your client project in a separate solution from the DLL project, the relative path should look like this: +1. Double-click in the top pane of the **Additional Library Directories** dialog box to enable an edit control. In the edit control, specify the path to the location of the *MathLibrary.lib* file. By default, it's in a folder called *Debug* directly under the DLL solution folder. If you create a release build, the file is placed in a folder called *Release*. You can use the `$(IntDir)` macro so that the linker can find your DLL, no matter which kind of build you create. If you followed the directions to put your client project in a separate solution from the DLL project, the relative path should look like this: `..\..\MathLibrary\$(IntDir)` If your DLL and client projects are in other locations, adjust the relative path to match. - ![Screenshot of the Additional Library Directories dialog.](media/mathclient-additional-library-directories.png "Add the library directory") + :::image type="content" source="media/mathclient-additional-library-directories.png" alt-text="Screenshot of the Additional Library Directories dialog."::: 1. Once you've entered the path to the library file in the **Additional Library Directories** dialog box, choose the **OK** button to go back to the **Property Pages** dialog box. Choose **OK** to save the property changes. Your client app can now compile and link successfully, but it still doesn't have everything it needs to run. When the operating system loads your app, it looks for the MathLibrary DLL. If it can't find the DLL in certain system directories, the environment path, or the local app directory, the load fails. Depending on the operating system, you'll see an error message like this: -![Screenshot of the error dialog, MathLibrary DLL not found.](media/mathclient-system-error-mathlibrary-dll-not-found.png "MathLibrary DLL not found error") +:::image type="content" source="media/mathclient-system-error-mathlibrary-dll-not-found.png" alt-text="Screenshot of the error dialog, MathLibrary DLL not found."::: -One way to avoid this issue is to copy the DLL to the directory that contains your client executable as part of the build process. You can add a **Post-Build Event** to your project, to add a command that copies the DLL to your build output directory. The command specified here copies the DLL only if it's missing or has changed. It uses macros to copy to and from the Debug or Release locations, based on your build configuration. +One way to avoid this issue is to copy the DLL to the directory that contains your client executable as part of the build process. You can add a *post-build event* to your project, to add a command that copies the DLL to your build output directory. The command specified here copies the DLL only if it's missing or has changed. It uses macros to copy to and from the Debug or Release locations, based on your build configuration. ### To copy the DLL in a post-build event 1. Right-click on the **MathClient** node in **Solution Explorer** and choose **Properties** to open the **Property Pages** dialog. -1. In the **Configuration** drop-down box, select **All Configurations** if it isn't already selected. +1. In the **Configuration** dropdown box, select **All Configurations** if it isn't already selected. 1. In the left pane, select **Configuration Properties** > **Build Events** > **Post-Build Event**. @@ -552,7 +548,7 @@ One way to avoid this issue is to copy the DLL to the directory that contains yo If your DLL and client projects are in other directories, change the relative path to the DLL to match. - ![Screenshot of the Property Pages dialog showing the post build event command line property.](media/mathclient-post-build-command-line.png "Add the post-build command") + :::image type="content" source="media/mathclient-post-build-command-line.png" alt-text="Screenshot of the Property Pages dialog showing the post build event command line property."::: 1. Choose the **OK** button to save your changes to the project properties. @@ -568,7 +564,7 @@ Now your client app has everything it needs to build and run. Build the applicat Congratulations, you've created an application that calls functions in your DLL. Now run your application to see what it does. On the menu bar, choose **Debug** > **Start Without Debugging**. Visual Studio opens a command window for the program to run in. The last part of the output should look like: -![Screenshot of the command window output when you start the client app without debugging.](media/mathclient-run-without-debugging.png "Start the client app without debugging") +:::image type="content" source="media/mathclient-run-without-debugging.png" alt-text="Screenshot of the command window output when you start the client app without debugging."::: Press any key to dismiss the command window. @@ -576,6 +572,6 @@ Now that you've created a DLL and a client application, you can experiment. Try When you deploy your app, you must also deploy the DLLs it uses. The simplest way to make the DLLs that you build, or that you include from third parties, available is to put them in the same directory as your app. It's known as *app-local deployment*. For more information about deployment, see [Deployment in Visual C++](../windows/deployment-in-visual-cpp.md). -## See also +## Related content -[Calling DLL Functions from Visual Basic Applications](calling-dll-functions-from-visual-basic-applications.md) +- [Calling DLL Functions from Visual Basic Applications](calling-dll-functions-from-visual-basic-applications.md) diff --git a/docs/windows/walkthrough-creating-windows-desktop-applications-cpp.md b/docs/windows/walkthrough-creating-windows-desktop-applications-cpp.md index 1b2da84b17f..2f6cbc0a5f9 100644 --- a/docs/windows/walkthrough-creating-windows-desktop-applications-cpp.md +++ b/docs/windows/walkthrough-creating-windows-desktop-applications-cpp.md @@ -1,36 +1,37 @@ --- -title: "Walkthrough: Create a traditional Windows Desktop application (C++)" -description: "How to create a minimal, traditional Windows Desktop application using Visual Studio, C++, and the Win32 API" +title: "Create a traditional Windows Desktop application (C++)" +description: "Learn how to create a minimal, traditional Windows Desktop application using Visual Studio, C++, and the Win32 API." ms.custom: "get-started-article" -ms.date: 10/10/2023 +ms.topic: tutorial +ms.date: 03/17/2025 helpviewer_keywords: ["Windows applications [C++], Win32", "Windows Desktop applications [C++]", "Windows API [C++]"] --- # Walkthrough: Create a traditional Windows Desktop application (C++) -This walkthrough shows how to create a traditional Windows desktop application in Visual Studio. The application you create uses the Windows API to display "Hello, Windows desktop!" in a window. You can use the code that you develop in this walkthrough as a pattern to create Windows desktop applications. +This walkthrough shows how to create a traditional Windows desktop application in Visual Studio. The application you create uses the Windows API to display *Hello, Windows desktop!* in a window. You can use the code that you develop in this walkthrough as a pattern to create Windows desktop applications. -The Windows API (also known as the Win32 API, Windows Desktop API, and Windows Classic API) is a C-language-based framework for creating Windows applications. It has been used to create Windows applications for decades. More advanced and easier-to-program frameworks have been built on top of the Windows API. For example, MFC, ATL, the .NET frameworks. Even the most modern Windows Runtime code for UWP and Store apps written in C++/WinRT uses the Windows API underneath. For more information about the Windows API, see [Windows API Index](/windows/win32/apiindex/windows-api-list). +The Windows API (also known as the Win32 API, Windows Desktop API, and Windows Classic API) is a C-language-based framework for creating Windows applications. It has been used to create Windows applications for decades. More advanced and easier-to-program frameworks have been built on top of the Windows API, for example, the MFC, ATL, and .NET frameworks. Even the most modern Windows Runtime code for UWP and Store apps written in C++/WinRT uses the Windows API underneath. For more information about the Windows API, see [Windows API Index](/windows/win32/apiindex/windows-api-list). > [!IMPORTANT] -> The [Build the code](#build-the-code) section at the end of this document shows the complete code. This walkthrough covers the various pieces of code that go into a Windows app, but you won't code as you go because some details are omitted in the code snippets to focus on the most important parts. You can copy the complete code and paste it into your project at the end. +> The [Build the code](#build-the-code) section at the end of this article shows the complete code. This walkthrough covers the various pieces of code that go into a Windows app, but some details are omitted in the code snippets to focus on the most important parts. You can copy the complete code and paste it into your project at the end. ## Prerequisites -- A computer that runs Microsoft Windows 7 or later versions. We recommend Windows 11 or later for the best development experience. +- Microsoft Windows 7 or later versions. We recommend Windows 11 or later for the best development experience. -- A copy of Visual Studio. For information on how to download and install Visual Studio, see [Install Visual Studio](/visualstudio/install/install-visual-studio). When you run the installer, make sure that the **Desktop development with C++** workload is checked. Don't worry if you didn't install this workload when you installed Visual Studio. You can run the installer again and install it now. +- Visual Studio. For information on how to download and install Visual Studio, see [Install Visual Studio](/visualstudio/install/install-visual-studio). When you run the installer, make sure that the **Desktop development with C++** workload is checked. Don't worry if you didn't install this workload when you installed Visual Studio. You can run the installer again and install it now. - ![Screenshot of the Desktop development with C++ workload in the Visual Studio Installer which says: build classic Windows-based apps using the power of the Visual C++ toolset](../build/media/desktop-development-with-cpp.png) + :::image type="content" source="../build/media/desktop-development-with-cpp.png" alt-text="Screenshot of the Desktop development with C plus plus workload in the Visual Studio Installer."::: -- A basic understanding of using the Visual Studio IDE. If you've used Windows desktop apps before, you can probably keep up. For an introduction, see [Visual Studio IDE feature tour](/visualstudio/ide/visual-studio-ide). +- A basic understanding of how to use the Visual Studio IDE. If you've used Windows desktop apps before, you can probably keep up. For an introduction, see [Visual Studio IDE feature tour](/visualstudio/ide/visual-studio-ide). -- An understanding of enough of the fundamentals of the C++ language to follow along. Don't worry, we don't do anything too complicated. +- Some familiarity with the C++ language. Don't worry, we don't do anything too complicated. ## Create a Windows desktop project -Follow these steps to create your first Windows desktop project. Per the note at the beginning of this walkthrough, the completed code is available in the [Build the code](#build-the-code) section at the end of the walkthrough. Go ahead and follow the steps to create the project, but hold off pasting the following sections of code until the end, when the complete application code is presented. Some details are omitted in the code snippets to focus on the most important parts. You can copy the complete code and paste it into your project at the end. +Follow these steps to create your first Windows desktop project. As noted at the beginning of this article, the completed code is available in the [Build the code](#build-the-code) section at the end of the walkthrough. Go ahead and follow the steps to create the project, but hold off pasting the following sections of code until the end, when the complete application code is presented. Some details are omitted in the code snippets to focus on the most important parts. You can copy the complete code and paste it into your project at the end. -To simplify the explanation. To see the documentation for your preferred version of Visual Studio, use the **Version** selector control. It's located at the top of the table of contents on this page. +To see the steps for your preferred version of Visual Studio, use the **Version** selector located at the top of the table of contents on this page. ::: moniker range=">=msvc-160" @@ -48,13 +49,13 @@ To simplify the explanation. To see the documentation for your preferred version 1. In **Solution Explorer**, right-click the **DesktopApp** project, choose **Add**, and then choose **New Item**. - :::image type="complex" source="../build/media/desktop-app-project-add-new-item-153.gif" alt-text="An animation showing adding a new item to DesktopApp Project in Visual Studio 2019."::: + :::image type="complex" source="../build/media/desktop-app-project-add-new-item-153.gif" alt-text="Animation showing adding a new item to DesktopApp Project in Visual Studio 2019."::: The animation shows right-clicking on the project name in Solution Explorer, choosing Add in the menu that appears, and then choosing New Item. :::image-end::: - + 1. In the **Add New Item** dialog box, select **C++ File (.cpp)**. In the **Name** box, type a name for the file, for example, *HelloWindowsDesktop.cpp*. Choose **Add**. - ![Screenshot of the Add New Item dialog box in Visual Studio 2019. The C plus plus File (.cpp) option is selected. The name field is set to Hello Windows Desktop.cpp.](../build/media/desktop-app-add-cpp-file-153.png) + :::image type="content" source="../build/media/desktop-app-add-cpp-file-153.png" alt-text="Screenshot of the Add New Item dialog box in Visual Studio 2019. The C plus plus File (.cpp) option is selected. The name field is set to Hello Windows Desktop.cpp."::: Your project is now created and your source file is opened in the editor. @@ -70,7 +71,7 @@ Your project is now created and your source file is opened in the editor. In the **Name** box, type a name for the project, for example, *DesktopApp*. Choose **OK**. - ![Screenshot of the New Project dialog box in Visual Studio 2017. The item Windows Desktop Wizard is selected. The name textbox says DesktopApp.](../build/media/desktop-app-new-project-name-153.png "Name the DesktopApp project") + :::image type="content" source="../build/media/desktop-app-new-project-name-153.png" alt-text="Screenshot of the New Project dialog box in Visual Studio 2017. The item Windows Desktop Wizard is selected. The name textbox says DesktopApp."::: 1. In the **Windows Desktop Project** dialog, under **Application type**, select **Windows application (.exe)**. Under **Additional options**, select **Empty project**. Make sure **Precompiled Header** isn't selected. Choose **OK** to create the project. @@ -82,7 +83,7 @@ Your project is now created and your source file is opened in the editor. 1. In the **Add New Item** dialog box, select **C++ File (.cpp)**. In the **Name** box, type a name for the file, for example, *HelloWindowsDesktop.cpp*. Choose **Add**. - ![Screenshot of the Add New Item dialog box in Visual Studio 2017. Installed > Visual C plus plus is selected on the left and the C plus plus File option is highlighted.](../build/media/desktop-app-add-cpp-file-153.png "Add .cpp file to DesktopApp Project") + :::image type="content" source="../build/media/desktop-app-add-cpp-file-153.png" alt-text="Screenshot of the Add New Item dialog box in Visual Studio 2017. Visual C plus plus is selected on the left and the C plus plus File option is highlighted."::: Your project is now created and your source file is opened in the editor. @@ -98,23 +99,23 @@ Your project is now created and your source file is opened in the editor. In the **Name** box, type a name for the project, for example, *DesktopApp*. Choose **OK**. - ![Screenshot of the New Project dialog box in Visual Studio 2015 with Installed > Templates > Visual C plus plus > Win32 selected, the Win32 Project option highlighted, and DesktopApp typed in the Name text box.](../build/media/desktop-app-new-project-name-150.png "Name the DesktopApp project") + :::image type="content" source="../build/media/desktop-app-new-project-name-150.png" alt-text="Screenshot of the New Project dialog box in Visual Studio 2015 with the Win32 Project option highlighted, and DesktopApp typed in the Name text box."::: 1. On the **Overview** page of the **Win32 Application Wizard**, choose **Next**. - ![Create DesktopApp in Win32 Application Wizard Overview page.](../build/media/desktop-app-win32-wizard-overview-150.png "Create DesktopApp in Win32 Application Wizard Overview") + :::image type="content" source="../build/media/desktop-app-win32-wizard-overview-150.png" alt-text="Screenshot of the dialog box in Visual Studio 2015 that shows Win32 Application Wizard Overview page."::: 1. On the **Application Settings** page, under **Application type**, select **Windows application**. Under **Additional options**, uncheck **Precompiled header**, then select **Empty project**. Choose **Finish** to create the project. 1. In **Solution Explorer**, right-click the DesktopApp project, choose **Add**, and then choose **New Item**. - :::image type="complex" source="../build/media/desktop-app-project-add-new-item-150.gif" alt-text="An animation showing adding a new item to DesktopApp Project in Visual Studio 2015."::: + :::image type="complex" source="../build/media/desktop-app-project-add-new-item-150.gif" alt-text="Animation showing adding a new item to DesktopApp Project in Visual Studio 2015."::: The animation shows right-clicking on the project name in Solution Explorer, choosing Add in the menu that appears, and then choosing New Item. :::image-end::: 1. In the **Add New Item** dialog box, select **C++ File (.cpp)**. In the **Name** box, type a name for the file, for example, *HelloWindowsDesktop.cpp*. Choose **Add**. - ![Screenshot of the Add New Item dialog box in Visual Studio 2015 with Installed > Visual C plus plus selected and the C plus plus File option highlighted.](../build/media/desktop-app-add-cpp-file-150.png "Add .cpp file to DesktopApp Project") + :::image type="content" source="../build/media/desktop-app-add-cpp-file-150.png" alt-text="Screenshot of the Add New Item dialog box in Visual Studio 2015 with Visual C plus plus selected and the C plus plus File option highlighted."::: Your project is now created and your source file is opened in the editor. @@ -142,7 +143,7 @@ Next, learn how to create the code for a Windows desktop application in Visual S > [!NOTE] > What are all those extra words, such as `WINAPI`, or `CALLBACK`, or `HINSTANCE`, or `_In_`? The traditional Windows API uses typedefs and preprocessor macros extensively to abstract away some of the details of types and platform-specific code, such as calling conventions, **`__declspec`** declarations, and compiler pragmas. In Visual Studio, you can use the IntelliSense [Quick Info](/visualstudio/ide/using-intellisense#quick-info) feature to see what these typedefs and macros define. Hover your mouse over the word of interest, or select it and press **Ctrl**+**K**, **Ctrl**+**I** for a small pop-up window that contains the definition. For more information, see [Using IntelliSense](/visualstudio/ide/using-intellisense). Parameters and return types often use *SAL Annotations* to help you catch programming errors. For more information, see [Using SAL Annotations to Reduce C/C++ Code Defects](../code-quality/using-sal-annotations-to-reduce-c-cpp-code-defects.md). -1. Windows desktop programs require ``. You'll also frequently see `#include `. That's to make it easier to write an app that can work with either **`char`** or **`wchar_t`**. The way it works is that you instead use the `TCHAR` macro in your code, which resolves ultimately to **`wchar_t`** if the `UNICODE` symbol is defined in your project, otherwise it resolves to **`char`**. If you always build with UNICODE enabled, you don't need `TCHAR` and can just use **`wchar_t`** directly. For more information, see [Using generic-text mappings](../c-runtime-library/using-generic-text-mappings.md). The following code shows theses two `#include` statements at the top of the file. +1. Windows desktop programs require ``. You also frequently see `#include `. That's to make it easier to write an app that can work with either **`char`** or **`wchar_t`**. The way it works is that you instead use the `TCHAR` macro in your code, which resolves ultimately to **`wchar_t`** if the `UNICODE` symbol is defined in your project, otherwise it resolves to **`char`**. If you always build with UNICODE enabled, you don't need `TCHAR` and can just use **`wchar_t`** directly. For more information, see [Using generic-text mappings](../c-runtime-library/using-generic-text-mappings.md). The following code shows theses two `#include` statements at the top of the file. ```cpp #include @@ -166,7 +167,7 @@ Next, learn how to create the code for a Windows desktop application in Visual S ### Add functionality to the `WinMain` function -1. In the `WinMain` function, you need to capture some basic information about your main window. You do that by filling out a structure of type [`WNDCLASSEX`](/windows/win32/api/winuser/ns-winuser-wndclassexw). The structure contains information about the window such as the application icon, the background color of the window, the name to display in the title bar, among other things. Importantly, it contains a function pointer to your window procedure that handles the messages that Windows sends to your app. The following example shows a typical `WNDCLASSEX` structure: +1. In the `WinMain` function, you need to capture some basic information about your main window. You do that by filling out a structure of type [`WNDCLASSEX`](/windows/win32/api/winuser/ns-winuser-wndclassexw). The structure contains information about the window, such as the application icon, the background color of the window, the name to display in the title bar, among other things. Importantly, it contains a function pointer to your window procedure that handles the messages that Windows sends to your app. The following example shows a typical `WNDCLASSEX` structure: ```cpp WNDCLASSEX wcex; @@ -185,9 +186,9 @@ Next, learn how to create the code for a Windows desktop application in Visual S wcex.hIconSm = LoadIcon(wcex.hInstance, IDI_APPLICATION); ``` - For information about the fields of the structure above, see [`WNDCLASSEX`](/windows/win32/api/winuser/ns-winuser-wndclassexw). + For information about the fields of this structure, see [`WNDCLASSEX`](/windows/win32/api/winuser/ns-winuser-wndclassexw). -1. Once you have the `WNDCLASSEX` structure filled out, you register it with Windows so that it knows about your window and how to send messages to it. Use the [`RegisterClassEx`](/windows/win32/api/winuser/nf-winuser-registerclassexw) function and pass the window class structure as an argument. The `_T` macro is used because we use the `TCHAR` type per the discussion about Unicode above. The following code shows how to register the window class. +1. Once you have the `WNDCLASSEX` structure filled out, you register it with Windows so that it knows about your window and how to send messages to it. Use the [`RegisterClassEx`](/windows/win32/api/winuser/nf-winuser-registerclassexw) function and pass the window class structure as an argument. The `_T` macro is used because we use the `TCHAR` type per the preceding discussion about Unicode. The following code shows how to register the window class. ```cpp if (!RegisterClassEx(&wcex)) @@ -201,7 +202,7 @@ Next, learn how to create the code for a Windows desktop application in Visual S } ``` -1. Next you create a window using the [`CreateWindowEx`](/windows/win32/api/winuser/nf-winuser-createwindowexw) function. +1. Create a window using the [`CreateWindowEx`](/windows/win32/api/winuser/nf-winuser-createwindowexw) function. ```cpp static TCHAR szWindowClass[] = _T("DesktopApp"); @@ -591,12 +592,12 @@ As promised, the complete code for the working application follows. The animation shows clicking the save all button, then choosing Build > Build Solution from the main menu. :::image-end::: -1. To run the application, press **F5**. A window with the text "Hello, Windows desktop!" should appear. +1. To run the application, press **F5**. A window with the text *Hello, Windows desktop!* should appear. - ![Screenshot of the running project. It shows a window with the title Windows Desktop Guided Tour Application. The contents of the window are Hello, Windows desktop!.](../build/media/desktop-app-project-run-157.PNG "Run the DesktopApp Project") + :::image type="content" source="../build/media/desktop-app-project-run-157.png" alt-text="Screenshot of a window with the title Windows Desktop Guided Tour Application. The contents of the window are Hello, Windows desktop!."::: Congratulations! You've built a traditional Windows desktop application. -## See also +## Related content -[Windows C++ desktop application types](overview-of-windows-programming-in-cpp.md) +- [Windows C++ desktop application types](overview-of-windows-programming-in-cpp.md) From e5bffc264226d7572130d046f815fe59eeab4245 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Mon, 17 Mar 2025 17:42:13 -0700 Subject: [PATCH 0292/2255] pr feedback --- docs/build/reference/dynamic-deopt.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/build/reference/dynamic-deopt.md b/docs/build/reference/dynamic-deopt.md index 3b1d44b7662..2237d19057e 100644 --- a/docs/build/reference/dynamic-deopt.md +++ b/docs/build/reference/dynamic-deopt.md @@ -59,9 +59,11 @@ fsanitize=kernel-address All of the CLR flags ``` -You can set this switch inside Visual Studio. For more information, see [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging#build-system-integration). There are advantages to setting the switch in Visual Studio because MSBUILD automatically suppresses some of the incompatible switches such as `/GL` and `/OPT:ICF`. It also sets the corresponding linker option (`/DYNAMICDEOPT`). You can also set the switch in the command line. +### Set this linker option in the Visual Studio development environment -### To set this compiler option programmatically +You can set this switch inside Visual Studio. For more information, see [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debugging#build-system-integration). There are advantages to setting the switch in Visual Studio because MSBuild automatically suppresses some of the incompatible switches such as `/GL` and `/OPT:ICF`. It also sets the corresponding linker option (`/DYNAMICDEOPT`). You can also set the switch in the command line. + +### Set this compiler option programmatically - See . From ac04647175c5ea365e3fdfa2903bc82874080649 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 18 Mar 2025 22:08:20 +0800 Subject: [PATCH 0293/2255] Fix "identifier" typos --- .../compiler-errors-1/compiler-error-c2283.md | 5 ++--- .../compiler-errors-c2200-through-c2299.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4251.md | 4 ++-- .../compiler-warnings/compiler-warning-level-2-c4099.md | 7 +++---- .../compiler-warnings-c4000-through-c4199.md | 2 +- .../compiler-warnings-c4200-through-c4399.md | 2 +- 6 files changed, 11 insertions(+), 13 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2283.md b/docs/error-messages/compiler-errors-1/compiler-error-c2283.md index 2c01122914a..52b1375800b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2283.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2283.md @@ -1,14 +1,13 @@ --- -description: "Learn more about: Compiler Error C2283" title: "Compiler Error C2283" +description: "Learn more about: Compiler Error C2283" ms.date: "11/04/2016" f1_keywords: ["C2283"] helpviewer_keywords: ["C2283"] -ms.assetid: 8a5b3175-b480-4598-a1f7-0b50504c5caa --- # Compiler Error C2283 -'identifier' : pure specifier or abstract override specifier not allowed on unnamed struct +> '*identifier*': pure specifier or abstract override specifier not allowed on unnamed struct A member function of an unnamed class or structure is declared with a pure specifier, which is not permitted. diff --git a/docs/error-messages/compiler-errors-1/compiler-errors-c2200-through-c2299.md b/docs/error-messages/compiler-errors-1/compiler-errors-c2200-through-c2299.md index 1355b9fdc70..061b94f1696 100644 --- a/docs/error-messages/compiler-errors-1/compiler-errors-c2200-through-c2299.md +++ b/docs/error-messages/compiler-errors-1/compiler-errors-c2200-through-c2299.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler errors C2200 through C2299" title: "Compiler errors C2200 through C2299" +description: "Learn more about: Compiler errors C2200 through C2299" ms.date: "04/21/2019" f1_keywords: ["C2202", "C2209", "C2210", "C2211", "C2214", "C2215", "C2221", "C2225", "C2230", "C2235", "C2237", "C2239", "C2240", "C2257", "C2260", "C2263", "C2265", "C2269", "C2278", "C2281", "C2282", "C2284", "C2288", "C2291", "C2294"] helpviewer_keywords: ["C2202", "C2209", "C2210", "C2211", "C2214", "C2215", "C2221", "C2225", "C2230", "C2235", "C2237", "C2239", "C2240", "C2257", "C2260", "C2263", "C2265", "C2269", "C2278", "C2281", "C2282", "C2284", "C2288", "C2291", "C2294"] @@ -98,7 +98,7 @@ The articles in this section of the documentation explain a subset of the error |[Compiler error C2280](compiler-error-c2280.md)|'*class*::*function*': attempting to reference a deleted function| |Compiler error C2281|'*class*::*function*': a function can only be deleted on the first declaration| |Compiler error C2282|'*function1*' cannot override '*function2*'| -|[Compiler error C2283](compiler-error-c2283.md)|'*identifer*': pure specifier or abstract override specifier not allowed on unnamed class/struct| +|[Compiler error C2283](compiler-error-c2283.md)|'*identifier*': pure specifier or abstract override specifier not allowed on unnamed struct| |Compiler error C2284|'*function*': illegal argument to intrinsic function, parameter *number*| |[Compiler error C2285](compiler-error-c2285.md)|pointers to members representation has already been determined - pragma ignored| |[Compiler error C2286](compiler-error-c2286.md)|pointers to members of '*identifier*' representation is already set to *inheritance* - declaration ignored| diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4251.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4251.md index 5045a15a4cc..1056b7868cf 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4251.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4251.md @@ -1,13 +1,13 @@ --- -description: "Learn more about: Compiler Warning (level 2) C4251" title: "Compiler Warning (level 2) C4251" +description: "Learn more about: Compiler Warning (level 2) C4251" ms.date: 12/01/2023 f1_keywords: ["C4251"] helpviewer_keywords: ["C4251"] --- # Compiler Warning (level 2) C4251 -> '*type*' : class '*type1*' needs to have dll-interface to be used by clients of class '*type2*' +> '*type*': '*type1*' needs to have dll-interface to be used by clients of '*type2*' ## Remarks diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4099.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4099.md index 40fd5f19018..813ec5943a9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4099.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4099.md @@ -1,14 +1,13 @@ --- -description: "Learn more about: Compiler Warning (level 2) C4099" title: "Compiler Warning (level 2) C4099" +description: "Learn more about: Compiler Warning (level 2) C4099" ms.date: "11/04/2016" f1_keywords: ["C4099"] helpviewer_keywords: ["C4099"] -ms.assetid: 00bb803d-cae7-4ab8-8969-b46f54139ac8 --- # Compiler Warning (level 2) C4099 -'identifier' : type name first seen using 'objecttype1' now seen using 'objecttype2' +> '*identifier*': type name first seen using '*object_type1*' now seen using '*object_type2*' An object declared as a structure is defined as a class, or an object declared as a class is defined as a structure. The compiler uses the type given in the definition. @@ -20,5 +19,5 @@ The following sample generates C4099. // C4099.cpp // compile with: /W2 /c struct A; -class A {}; // C4099, use different identifer or use same object type +class A {}; // C4099, use different identifier or use same object type ``` diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4000-through-c4199.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4000-through-c4199.md index 7e21f69e2c6..675357263c1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c4000-through-c4199.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4000-through-c4199.md @@ -1,6 +1,6 @@ --- -description: "Table of Microsoft C/C++ compiler (MSVC) warning messages C4000 through C4199" title: "Microsoft C/C++ compiler (MSVC) warnings C4000 through C4199" +description: "Table of Microsoft C/C++ compiler (MSVC) warning messages C4000 through C4199" ms.date: "04/21/2019" f1_keywords: ["C4023", "C4035", "C4051", "C4060", "C4063", "C4064", "C4065", "C4069", "C4123", "C4137", "C4181", "C4188", "C4193", "C4194", "C4195", "C4196", "C4199"] helpviewer_keywords: ["C4023", "C4035", "C4051", "C4060", "C4063", "C4064", "C4065", "C4069", "C4123", "C4137", "C4181", "C4188", "C4193", "C4194", "C4195", "C4196", "C4199"] diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4200-through-c4399.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4200-through-c4399.md index 176640a48ba..31a5da3ff66 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c4200-through-c4399.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4200-through-c4399.md @@ -55,7 +55,7 @@ The articles in this section describe Microsoft C/C++ compiler warning messages |[Compiler warning (level 2 and level 3 and level 4) C4244](compiler-warning-levels-3-and-4-c4244.md)|'*conversion_type*': conversion from '*type1*' to '*type2*', possible loss of data| |[Compiler warning (level 4) C4245](compiler-warning-level-4-c4245.md)|'*conversion_type*': conversion from '*type1*' to '*type2*', signed/unsigned mismatch| |[Compiler warning (level 2) C4250](compiler-warning-level-2-c4250.md)|'*classname*': inherits '*base_classname*::*member*' via dominance| -|[Compiler warning (level 2) C4251](compiler-warning-level-1-c4251.md)|'*object_type1*': '*identifier1*' needs to have dll-interface to be used by clients of '*identfier2*'| +|[Compiler warning (level 2) C4251](compiler-warning-level-1-c4251.md)|'*type*': '*type1*' needs to have dll-interface to be used by clients of '*type2*'| |[Compiler warning (level 4, off) C4254](compiler-warning-level-4-c4254.md)|'*operator*': conversion from '*type1*':'*field_bits*' to '*type2*':'*field_bits*', possible loss of data| |[Compiler warning (level 4, off) C4255](compiler-warning-level-4-c4255.md)|'*function*': no function prototype given: converting '()' to '(void)'| |[Compiler warning (level 4) C4256](compiler-warning-level-4-c4256.md)|'*function*': constructor for class with virtual bases has '`...`'; calls may not be compatible with older versions of Visual C++| From 5a1fc82ac2b4ddfc2ab9d561b21f278ca22b0cd1 Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Tue, 18 Mar 2025 10:13:09 -0700 Subject: [PATCH 0294/2255] Add edits --- ...compile-a-c-program-on-the-command-line.md | 16 ++++++------ ...ng-and-using-a-dynamic-link-library-cpp.md | 26 +++++++++---------- ...eating-windows-desktop-applications-cpp.md | 8 +++--- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/docs/build/walkthrough-compile-a-c-program-on-the-command-line.md b/docs/build/walkthrough-compile-a-c-program-on-the-command-line.md index 4be70be9795..4340086b01d 100644 --- a/docs/build/walkthrough-compile-a-c-program-on-the-command-line.md +++ b/docs/build/walkthrough-compile-a-c-program-on-the-command-line.md @@ -8,17 +8,17 @@ ms.assetid: 7e74cc2d-54b1-49de-b7ad-d3ae6b39ab8d --- # Walkthrough: Compile a C program on the command line -The Visual Studio build tools include a C compiler that you can use to create everything from basic console programs to full Windows Desktop applications, mobile apps, and more. Microsoft C/C++ (MSVC) is a C and C++ compiler that, in its latest versions, conforms to some of the latest C language standards, including C11 and C17. +The Visual Studio build tools include a C compiler that you can use to create everything from basic console programs to full Windows desktop applications and mobile apps. Microsoft C/C++ (MSVC) is a C and C++ compiler that, in its latest versions, conforms to some of the latest C language standards, including C11 and C17. -This guide shows how to create a basic, *Hello, World*-style C program by using a text editor, and then compile it on the command line. If you'd rather work in C++ on the command line, see [Walkthrough: Compiling a Native C++ Program on the Command Line](walkthrough-compiling-a-native-cpp-program-on-the-command-line.md). If you'd like to try the Visual Studio IDE instead of using the command line, see [Walkthrough: Working with Projects and Solutions (C++)](../ide/walkthrough-working-with-projects-and-solutions-cpp.md) or [Using the Visual Studio IDE for C++ Desktop Development](../ide/using-the-visual-studio-ide-for-cpp-desktop-development.md). +This guide explains how to create a basic *Hello, World*-style C program by using a text editor, and then compile it on the command line. If you'd rather work in C++ on the command line, see [Walkthrough: Compiling a Native C++ Program on the Command Line](walkthrough-compiling-a-native-cpp-program-on-the-command-line.md). If you'd like to try the Visual Studio IDE instead of using the command line, see [Walkthrough: Working with Projects and Solutions (C++)](../ide/walkthrough-working-with-projects-and-solutions-cpp.md) or [Using the Visual Studio IDE for C++ Desktop Development](../ide/using-the-visual-studio-ide-for-cpp-desktop-development.md). ## Prerequisites -- Either Visual Studio or the Build Tools for Visual Studio, and the optional Desktop development with C++ workload +- Either **Visual Studio** or the **build tools for Visual Studio**, and the optional **Desktop development with C++** workload - Visual Studio is a powerful integrated development environment that supports a full-featured editor, resource managers, debuggers, and compilers for many languages and platforms. For information on these features and how to download and install Visual Studio, including the free Visual Studio Community edition, see [Install Visual Studio](/visualstudio/install/install-visual-studio). - - The Build Tools for Visual Studio installs only the command-line toolset, the compilers, tools, and libraries you need to build C and C++ programs. It's perfect for build labs or classroom exercises and installs relatively quickly. To install only the command-line toolset, download Build Tools for Visual Studio from the [Visual Studio downloads](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) page and run the installer. In the Visual Studio installer, select the **Desktop development with C++** workload (in older versions of Visual Studio, select the **C++ build tools** workload), and choose **Install**. + - The build tools for Visual Studio install only the command-line toolset, the compilers, tools, and libraries you need to build C and C++ programs. It's perfect for build labs or classroom exercises and installs relatively quickly. To install only the command-line toolset, download build tools for Visual Studio from the [Visual Studio downloads](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) page and run the installer. In the Visual Studio installer, select the **Desktop development with C++** workload (in older versions of Visual Studio, select the **C++ build tools** workload), and choose **Install**. -- MSVC compiler +- **MSVC compiler** - MSVC has complex requirements for the command-line environment to find the tools, headers, and libraries it uses. **You can't use MSVC in a plain command prompt window** without some preparation. You need a *developer command prompt* window, which is a regular command prompt window that has all the required environment variables set. Fortunately, Visual Studio installs shortcuts for you to launch developer command prompts that have the environment set up for command line builds. Unfortunately, the names of the developer command prompt shortcuts and where they're located are different in almost every version of Visual Studio and on different versions of Windows. Your first walkthrough task is to find the right shortcut to use. > [!NOTE] @@ -75,7 +75,7 @@ There might be differences in the current directory or version numbers, dependin > [!NOTE] > If you get an error such as **'cl' is not recognized as an internal or external command, operable program or batch file**, error C1034, or error LNK1104 when you run the `cl` command, then either you're not using a developer command prompt, or something is wrong with your installation of Visual Studio. You must fix this issue before you can continue. -If you can't find the developer command prompt shortcut, or if you get an error message when you enter `cl`, then your Visual Studio installation might have a problem. If you're using Visual Studio 2017 or later, try reinstalling the **Desktop development with C++** workload in the Visual Studio installer. For details, see [Install C++ support in Visual Studio](vscpp-step-0-installation.md). Or, reinstall the Build Tools from the [Visual Studio downloads](https://visualstudio.microsoft.com/downloads/) page. Don't go on to the next section until the `cl` command works. For more information about installing and troubleshooting Visual Studio, see [Install Visual Studio](/visualstudio/install/install-visual-studio). +If you can't find the developer command prompt shortcut, or if you get an error message when you enter `cl`, then your Visual Studio installation might have a problem. If you're using Visual Studio 2017 or later, try reinstalling the **Desktop development with C++** workload in the Visual Studio installer. For details, see [Install C++ support in Visual Studio](vscpp-step-0-installation.md). Or, reinstall the build tools from the [Visual Studio downloads](https://visualstudio.microsoft.com/downloads/) page. Don't go on to the next section until the `cl` command works. For more information about installing and troubleshooting Visual Studio, see [Install Visual Studio](/visualstudio/install/install-visual-studio). > [!NOTE] > Depending on the version of Windows on the computer and the system security configuration, you might need to right-click to open the shortcut menu for the developer command prompt shortcut and then choose **Run as Administrator** to successfully build and run the program that you create by following this walkthrough. @@ -153,7 +153,7 @@ If you can't find the developer command prompt shortcut, or if you get an error ## Advanced steps -This *Hello, World* example is about as basic as a C program can get. Real world programs have header files and more source files, link in libraries, and do useful work. +This *Hello, World* example is about as basic as a C program can get. Real-world programs have header files and more source files, link in libraries, and do useful work. You can use the steps in this walkthrough to build your own C code instead of typing the sample code shown. You can also build many C code sample programs that you find elsewhere. To compile a program that has more source code files, enter them all on the command line: @@ -173,7 +173,7 @@ You can use NMAKE and makefiles, or MSBuild and project files to configure and b The C and C++ languages are similar, but not the same. The MSVC compiler uses a basic rule to determine which language to use when it compiles your code. By default, the MSVC compiler treats all files that end in *`.c`* as C source code, and all files that end in *`.cpp`* as C++ source code. To force the compiler to treat all files as C no matter the file name extension, use the [/TC](reference/tc-tp-tc-tp-specify-source-file-type.md) compiler option. -By default, MSVC is compatible with the ANSI C89 and ISO C99 standards, but not strictly conforming. In most cases, portable C code compiles and runs as expected. The compiler provides optional support for the changes in ISO C11/C17. To compile with C11/C17 support, use the compiler flag `/std:c11` or `/std:c17`. C11/C17 support requires Windows SDK 10.0.20201.0 or later. Windows SDK 10.0.22000.0 or later is recommended. You can download the latest SDK from the [Windows SDK](https://developer.microsoft.com/windows/downloads/windows-sdk/) page. For more information, and instructions on how to install and use this SDK for C development, see [Install C11 and C17 support in Visual Studio](../overview/install-c17-support.md). +By default, MSVC is compatible with the ANSI C89 and ISO C99 standards, but not strictly conforming. In most cases, portable C code compiles and runs as expected. The compiler provides optional support for the changes in ISO C11 and C17. To compile with C11 and C17 support, use the compiler flag `/std:c11` or `/std:c17`. C11 and C17 support requires Windows SDK 10.0.20201.0 or later. Windows SDK 10.0.22000.0 or later is recommended. You can download the latest SDK from the [Windows SDK](https://developer.microsoft.com/windows/downloads/windows-sdk/) page. For more information, and instructions on how to install and use this SDK for C development, see [Install C11 and C17 support in Visual Studio](../overview/install-c17-support.md). Certain library functions and POSIX function names are deprecated by MSVC. The functions are supported, but the preferred names have changed. For more information, see [Security Features in the CRT](../c-runtime-library/security-features-in-the-crt.md) and [Compiler Warning (level 3) C4996](../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). diff --git a/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md b/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md index 1602a78fc55..ad186eb36c0 100644 --- a/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md +++ b/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md @@ -193,9 +193,9 @@ When the `MATHLIBRARY_EXPORTS` macro is defined, the `MATHLIBRARY_API` macro set 1. In **Solution Explorer**, right-click on the **Source Files** node and choose **Add** > **New Item**. Create a new .cpp file called *MathLibrary.cpp*, in the same way that you added a new header file in the previous step. -1. In the editor window, select the tab for **MathLibrary.cpp** if it's already open. If not, in **Solution Explorer**, double-click **MathLibrary.cpp** in the **Source Files** folder of the **MathLibrary** project to open it. +1. In the editor window, select the **MathLibrary.cpp** tab if it's already open. If not, in **Solution Explorer**, double-click **MathLibrary.cpp** in the **Source Files** folder of the **MathLibrary** project to open it. -1. In the editor, replace the contents of the MathLibrary.cpp file with the following code: +1. In the editor, replace the contents of the *MathLibrary.cpp* file with the following code: ```cpp // MathLibrary.cpp : Defines the exported functions for the DLL. @@ -262,7 +262,7 @@ When the `MATHLIBRARY_EXPORTS` macro is defined, the `MATHLIBRARY_API` macro set 1. In the editor window, select the tab for **MathLibrary.cpp** if it's already open. If not, in **Solution Explorer**, double-click **MathLibrary.cpp** in the **Source Files** folder of the **MathLibrary** project to open it. -1. In the editor, replace the contents of the MathLibrary.cpp file with the following code: +1. In the editor, replace the contents of the *MathLibrary.cpp* file with the following code: ```cpp // MathLibrary.cpp : Defines the exported functions for the DLL. @@ -394,11 +394,11 @@ To avoid out-of-sync code, we recommend you set the include path in your client 1. In the **Configure your new project** page, enter *MathClient* in the **Project name** box to specify a name for the project. Leave the default **Location** and **Solution name** values. Set **Solution** to **Create new solution**. Uncheck **Place solution and project in the same directory** if it's checked. - ![Screenshot of the Create a new project dialog box with the Console App option highlighted.](media/mathclient-project-name-2019.png "Name the client project") + :::image type="content" source="media/mathclient-project-name-2019.png" alt-text="Screenshot of the Create a new project dialog box with the Console App option highlighted."::: 1. Choose the **Create** button to create the client project. -A minimal console application project is created for you. The name for the main source file is the same as the project name that you entered earlier. In this example, it's named **MathClient.cpp**. You can build it, but it doesn't use your DLL yet. +A minimal console application project is created for you. The name for the main source file is the same as the project name that you entered earlier. In this example, it's named *MathClient.cpp*. You can build it, but it doesn't use your DLL yet. ::: moniker-end @@ -410,11 +410,11 @@ A minimal console application project is created for you. The name for the main 1. In the left pane of the **New Project** dialog, select **Windows Desktop** under **Installed** > **Visual C++**. In the center pane, select **Windows Console Application**. Specify the name for the project, *MathClient*, in the **Name** edit box. Leave the default **Location** and **Solution name** values. Set **Solution** to **Create new solution**. Check **Create directory for solution** if it's unchecked. - ![Screenshot of the New Project dialog box with Installed > Visual C plus plus > Windows Desktop selected, Windows Console Application highlighted, and Math Client typed in the Name text box.](media/mathclient-new-project-name-159.png "Name the client project") + :::image type="content" source="media/mathclient-new-project-name-159.png" alt-text="Screenshot of the New Project dialog box with Windows Console Application highlighted, and Math Client typed in the Name text box."::: 1. Choose **OK** to create the client app project. -A minimal console application project is created for you. The name for the main source file is the same as the project name that you entered earlier. In this example, it's named **MathClient.cpp**. You can build it, but it doesn't use your DLL yet. +A minimal console application project is created for you. The name for the main source file is the same as the project name that you entered earlier. In this example, it's named *MathClient.cpp*. You can build it, but it doesn't use your DLL yet. ::: moniker-end @@ -426,7 +426,7 @@ A minimal console application project is created for you. The name for the main 1. In the left pane of the **New Project** dialog, select **Win32** under **Installed** > **Templates** > **Visual C++**. In the center pane, select **Win32 Console Application**. Specify the name for the project, *MathClient*, in the **Name** edit box. Leave the default **Location** and **Solution name** values. Set **Solution** to **Create new solution**. Check **Create directory for solution** if it's unchecked. - ![Screenshot of the New Project dialog box with Installed > Templates > Visual C plus plus > Win32 selected, Win32 Console Application Visual C plus plus highlighted, and Math Client typed in the Name text box.](media/mathclient-project-name.png "Name the client project") + :::image type="content" source="media/mathclient-project-name.png" alt-text="Screenshot of the New Project dialog box with Win32 Console Application Visual C plus plus highlighted, and Math Client typed in the Name text box."::: 1. Choose the **OK** button to dismiss the **New Project** dialog and start the **Win32 Application Wizard**. On the **Overview** page of the **Win32 Application Wizard** dialog box, choose the **Next** button. @@ -434,7 +434,7 @@ A minimal console application project is created for you. The name for the main 1. Choose the **Finish** button to create the project. -When the wizard finishes, a minimal console application project is created for you. The name for the main source file is the same as the project name that you entered earlier. In this example, it's named **MathClient.cpp**. You can build it, but it doesn't use your DLL yet. +When the wizard finishes, a minimal console application project is created for you. The name for the main source file is the same as the project name that you entered earlier. In this example, it's named *MathClient.cpp*. You can build it, but it doesn't use your DLL yet. ::: moniker-end @@ -450,11 +450,11 @@ Next, to call the MathLibrary functions in your source code, your project must i 1. In the property pane, select the dropdown control next to the **Additional Include Directories** edit box, and then choose **Edit**. - ![Screenshot of the Property Pages dialog showing the Edit command in the Additional Include Directories property dropdown.](media/mathclient-additional-include-directories-property.png "Edit the Additional Include Directories property") + :::image type="content" source="media/mathclient-additional-include-directories-property.png" alt-text="Screenshot of the Property Pages dialog showing the Edit command in the Additional Include Directories property dropdown."::: 1. Double-click in the top pane of the **Additional Include Directories** dialog box to enable an edit control. Or, choose the folder icon to create a new entry. -1. In the edit control, specify the path to the location of the **MathLibrary.h** header file. You can choose the ellipsis (**...**) control to browse to the correct folder. +1. In the edit control, specify the path to the location of the *MathLibrary.h* header file. You can choose the ellipsis (**...**) control to browse to the correct folder. You can also enter a relative path from your client source files to the folder that contains the DLL header files. If you followed the directions to put your client project in a separate solution from the DLL, the relative path should look like this: @@ -466,11 +466,11 @@ Next, to call the MathLibrary functions in your source code, your project must i When the DLL and client projects are in other folders, adjust the relative path to match. Or, use the ellipsis control to browse for the folder. - ![Screenshot of the Additional Include Directories dialog showing the relative path to the MathLibrary directory.](media/mathclient-additional-include-directories.png "Add the header location to the Additional Include Directories property") + :::image type="content" source="media/mathclient-additional-include-directories.png" alt-text="Screenshot of the Additional Include Directories dialog showing the relative path to the MathLibrary directory."::: 1. After you've entered the path to the header file in the **Additional Include Directories** dialog box, choose the **OK** button. In the **Property Pages** dialog box, choose the **OK** button to save your changes. -You can now include the **MathLibrary.h** file and use the functions it declares in your client application. Replace the contents of **MathClient.cpp** by using this code: +You can now include the *MathLibrary.h* file and use the functions it declares in your client application. Replace the contents of *MathClient.cpp* by using this code: ```cpp // MathClient.cpp : Client app for MathLibrary DLL. diff --git a/docs/windows/walkthrough-creating-windows-desktop-applications-cpp.md b/docs/windows/walkthrough-creating-windows-desktop-applications-cpp.md index 2f6cbc0a5f9..1bafcda7b40 100644 --- a/docs/windows/walkthrough-creating-windows-desktop-applications-cpp.md +++ b/docs/windows/walkthrough-creating-windows-desktop-applications-cpp.md @@ -1,14 +1,14 @@ --- -title: "Create a traditional Windows Desktop application (C++)" -description: "Learn how to create a minimal, traditional Windows Desktop application using Visual Studio, C++, and the Win32 API." +title: "Create a traditional Windows desktop application (C++)" +description: "Learn how to create a minimal, traditional Windows desktop application using Visual Studio, C++, and the Win32 API." ms.custom: "get-started-article" ms.topic: tutorial ms.date: 03/17/2025 helpviewer_keywords: ["Windows applications [C++], Win32", "Windows Desktop applications [C++]", "Windows API [C++]"] --- -# Walkthrough: Create a traditional Windows Desktop application (C++) +# Walkthrough: Create a traditional Windows desktop application (C++) -This walkthrough shows how to create a traditional Windows desktop application in Visual Studio. The application you create uses the Windows API to display *Hello, Windows desktop!* in a window. You can use the code that you develop in this walkthrough as a pattern to create Windows desktop applications. +This walkthrough explains how to create a traditional Windows desktop application in Visual Studio. The application you create uses the Windows API to display *Hello, Windows desktop!* in a window. You can use the code that you develop in this walkthrough as a pattern to create Windows desktop applications. The Windows API (also known as the Win32 API, Windows Desktop API, and Windows Classic API) is a C-language-based framework for creating Windows applications. It has been used to create Windows applications for decades. More advanced and easier-to-program frameworks have been built on top of the Windows API, for example, the MFC, ATL, and .NET frameworks. Even the most modern Windows Runtime code for UWP and Store apps written in C++/WinRT uses the Windows API underneath. For more information about the Windows API, see [Windows API Index](/windows/win32/apiindex/windows-api-list). From fe83d02c054ebafcbcec0c8e3fd3eee4f3dd05ce Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Tue, 18 Mar 2025 10:56:01 -0700 Subject: [PATCH 0295/2255] Add minor edits --- docs/build/cmake-projects-in-visual-studio.md | 110 +++++++++--------- docs/build/vscpp-step-0-installation.md | 10 +- 2 files changed, 60 insertions(+), 60 deletions(-) diff --git a/docs/build/cmake-projects-in-visual-studio.md b/docs/build/cmake-projects-in-visual-studio.md index e6e26829562..d136d227d14 100644 --- a/docs/build/cmake-projects-in-visual-studio.md +++ b/docs/build/cmake-projects-in-visual-studio.md @@ -1,7 +1,7 @@ --- title: "CMake projects in Visual Studio" description: "Learn how to create and build C++ projects using CMake in Visual Studio." -ms.date: 03/14/2025 +ms.date: 03/18/2025 ms.topic: concept-article f1_keywords: ["VS.ToolsOptionsPages.CMake.General", "VS.ToolsOptionsPages.CMake.LanguageServices"] --- @@ -14,7 +14,7 @@ f1_keywords: ["VS.ToolsOptionsPages.CMake.General", "VS.ToolsOptionsPages.CMake. ::: moniker range=">=msvc-160" -Visual Studio's native support for CMake allows you to edit, build, and debug CMake projects on Windows, the Windows Subsystem for Linux (WSL), and remote systems from the same instance of Visual Studio. CMake project files (such as *`CMakeLists.txt`*) are consumed directly by Visual Studio for the purposes of IntelliSense and browsing. Visual Studio invokes `cmake.exe` directly for CMake configuration and build. +Visual Studio's native support for CMake allows you to edit, build, and debug CMake projects on Windows, the Windows Subsystem for Linux (WSL), and remote systems from the same instance of Visual Studio. CMake project files (such as *CMakeLists.txt*) are consumed directly by Visual Studio for the purposes of IntelliSense and browsing. Visual Studio invokes *cmake.exe* directly for CMake configuration and build. ## Installation @@ -28,7 +28,7 @@ For more information, see [Install the C++ Linux workload in Visual Studio](../l ## IDE integration -When you **open a folder** containing a *`CMakeLists.txt`* file, the following things happen. +When you **open a folder** containing a *CMakeLists.txt* file, the following things happen. :::image type="complex" source="media/start-window.png" alt-text="Screenshot of the first dialog that opens when Visual Studio is started."::: The dialog offers these options: clone a repository, open a project or solution, open a local folder, or create a new project. Open a local folder is called out in the screenshot. @@ -38,12 +38,12 @@ The dialog offers these options: clone a repository, open a project or solution, - The **Solution Explorer** displays the folder structure and files. -- Visual Studio runs CMake and generates the CMake cache file (*`CMakeCache.txt`*) for the default configuration. The CMake command line is displayed in the **Output Window**, along with other output from CMake. +- Visual Studio runs CMake and generates the CMake cache file (*CMakeCache.txt*) for the default configuration. The CMake command line is displayed in the **Output Window**, along with other output from CMake. - In the background, Visual Studio starts to index the source files to enable IntelliSense, browsing information, refactoring, and so on. As you work, Visual Studio monitors changes in the editor and also on disk to keep its index in sync with the sources. > [!NOTE] -> Starting in Visual Studio 2022 version 17.1 Preview 2, if your top-level `CMakeLists.txt` exists in a subfolder and not at the root of the workspace, you're prompted whether you'd like to enable CMake integration or not. For more information, see [CMake partial activation](#cmake-partial-activation). +> Starting in Visual Studio 2022 version 17.1 Preview 2, if your top-level *CMakeLists.txt* exists in a subfolder and not at the root of the workspace, you're prompted whether you'd like to enable CMake integration or not. For more information, see [CMake partial activation](#cmake-partial-activation). Once CMake cache generation has succeeded, you can also view your projects organized logically by targets. Choose the **Select View** button on the **Solution Explorer** toolbar. From the list in **Solution Explorer - Views**, select **CMake Targets View** and press **Enter** to open the targets view: @@ -51,11 +51,11 @@ Once CMake cache generation has succeeded, you can also view your projects organ Choose the **Show All Files** button at the top of **Solution Explorer** to see all the CMake-generated output in the *`out/build/`* folders. -Use the *`CMakeLists.txt`* file in each project folder just as you would in any CMake project. You can specify source files, find libraries, set compiler and linker options, and specify other build system-related information. For more information on CMake language services provided by Visual Studio, see [Editing CMakeLists.txt files](#editing-cmakeliststxt-files). +Use the *CMakeLists.txt* file in each project folder just as you would in any CMake project. You can specify source files, find libraries, set compiler and linker options, and specify other build system-related information. For more information on CMake language services provided by Visual Studio, see [Editing CMakeLists.txt files](#editing-cmakeliststxt-files). Visual Studio uses a CMake configuration file to drive CMake cache generation and build. For more information, see [Configuring CMake projects](#configuring-cmake-projects) and [Building CMake projects](#building-cmake-projects). -To pass arguments to an executable at debug time, you can use another file called *`launch.vs.json`*. For more information on debugging cross-platform CMake projects in Visual Studio, see [Debugging CMake projects](#debugging-cmake-projects). +To pass arguments to an executable at debug time, you can use another file called *launch.vs.json*. For more information on debugging cross-platform CMake projects in Visual Studio, see [Debugging CMake projects](#debugging-cmake-projects). Most Visual Studio and C++ language features are supported by CMake projects in Visual Studio. Examples include: @@ -65,15 +65,15 @@ Most Visual Studio and C++ language features are supported by CMake projects in - [Clang/LLVM support](https://devblogs.microsoft.com/cppblog/clang-llvm-support-in-visual-studio/) > [!NOTE] -> For other kinds of Open Folder projects, an additional JSON file *`CppProperties.json`* is used. This file isn't relevant for CMake projects. +> For other kinds of Open Folder projects, an additional JSON file *CppProperties.json* is used. This file isn't relevant for CMake projects. ## Configuring CMake projects -The CMake configure step generates the project build system. It's equivalent to invoking `cmake.exe` from the command line. For more information on the CMake configure step, see the [CMake documentation](https://cmake.org/cmake/help/latest/manual/cmake.1.html#generate-a-project-buildsystem). +The CMake configure step generates the project build system. It's equivalent to invoking *cmake.exe* from the command line. For more information on the CMake configure step, see the [CMake documentation](https://cmake.org/cmake/help/latest/manual/cmake.1.html#generate-a-project-buildsystem). -Visual Studio uses a CMake configuration file to drive CMake generation and build. *`CMakePresets.json`* is supported by Visual Studio 2019 version 16.10 or later and is the recommended CMake configuration file. *`CMakePresets.json`* is supported directly by CMake and can be used to drive CMake generation and build from Visual Studio, from VS Code, in a continuous integration pipeline, and from the command line on Windows, Linux, and Mac. For more information on *`CMakePresets.json`*, see [Configure and build with CMake Presets](cmake-presets-vs.md). *`CMakeSettings.json`* is available for customers using an earlier version of Visual Studio. For more information on *`CMakeSettings.json`*, see [Customize CMake build settings](customize-cmake-settings.md). +Visual Studio uses a CMake configuration file to drive CMake generation and build. *CMakePresets.json* is supported by Visual Studio 2019 version 16.10 or later and is the recommended CMake configuration file. *CMakePresets.json* is supported directly by CMake and can be used to drive CMake generation and build from Visual Studio, from VS Code, in a continuous integration pipeline, and from the command line on Windows, Linux, and Mac. For more information on *CMakePresets.json*, see [Configure and build with CMake Presets](cmake-presets-vs.md). *CMakeSettings.json* is available for customers using an earlier version of Visual Studio. For more information on *CMakeSettings.json*, see [Customize CMake build settings](customize-cmake-settings.md). -When you make significant changes to your CMake configuration file or a *`CMakeLists.txt`* file, Visual Studio automatically runs the CMake configure step. You can invoke the configure step manually: Select **Project > Configure Cache** from the toolbar. You can also change your configuration preferences in **Tools** > **Options** > **CMake** > **General**. +When you make significant changes to your CMake configuration file or a *CMakeLists.txt* file, Visual Studio automatically runs the CMake configure step. You can invoke the configure step manually: Select **Project > Configure Cache** from the toolbar. You can also change your configuration preferences in **Tools** > **Options** > **CMake** > **General**. :::image type="complex" source="media/cmake-configure-options.png" alt-text="Screenshot of the C Make configuration options in the Visual Studio settings window."::: The C Make configure settings are called out. Show C Make cache notifications is selected. Under 'When cache is out of date', the option 'Never run configure step automatically' is selected. @@ -97,9 +97,9 @@ You can enable the use of these source groups by selecting **Tools** > **Options ### Troubleshooting CMake cache errors -If you need more information about the state of the CMake cache to diagnose a problem, open the **Project** main menu or the *`CMakeLists.txt`* context menu in **Solution Explorer** to run one of these commands: +If you need more information about the state of the CMake cache to diagnose a problem, open the **Project** main menu or the *CMakeLists.txt* context menu in **Solution Explorer** to run one of these commands: -- **View CMakeCache.txt** opens the *`CMakeCache.txt`* file from the build directory in the editor. Any edits you make here to *`CMakeCache.txt`* are wiped out if you clean the cache. To make changes that persist after you clean the cache, see [Customize CMake settings](customize-cmake-settings.md) or [Configure and build with CMake Presets](cmake-presets-vs.md). +- **View CMakeCache.txt** opens the *CMakeCache.txt* file from the build directory in the editor. Any edits you make here to *CMakeCache.txt* are wiped out if you clean the cache. To make changes that persist after you clean the cache, see [Customize CMake settings](customize-cmake-settings.md) or [Configure and build with CMake Presets](cmake-presets-vs.md). - **Delete Cache and Reconfigure** deletes the build directory and reconfigures from a clean cache. @@ -125,7 +125,7 @@ C Make build warnings about conversions that might result in data loss such as c ### Edit build settings -Visual Studio uses a CMake configuration file to drive CMake builds. CMake configuration files encapsulate build options like native build tool switches and environment variables. If *`CMakePresets.json`* is your active configuration file, see [Configure and build with CMake Presets](cmake-presets-vs.md#configure-and-build). If *`CMakeSettings.json`* is your active configuration file, see [Customize CMake build settings](customize-cmake-settings.md). *`CMakePresets.json`* is available in Visual Studio 2019 version 16.10 or later and is the recommended CMake configuration file. +Visual Studio uses a CMake configuration file to drive CMake builds. CMake configuration files encapsulate build options like native build tool switches and environment variables. If *CMakePresets.json* is your active configuration file, see [Configure and build with CMake Presets](cmake-presets-vs.md#configure-and-build). If *CMakeSettings.json* is your active configuration file, see [Customize CMake build settings](customize-cmake-settings.md). *CMakePresets.json* is available in Visual Studio 2019 version 16.10 or later and is the recommended CMake configuration file. ## Debugging CMake projects @@ -135,9 +135,9 @@ All executable CMake targets are shown in the **Startup Item** dropdown in the t The dropdown has these options: Show / Hide debug targets, current document, samples (which is highlighted), box2d_tests, and samples-noGUI. :::image-end::: -The **Debug** or **F5** commands first build the project if changes have been made since the previous build. Changes to the CMake configuration file (*`CMakePresets.json`* or *`CMakeSettings.json`*) or a *`CMakeLists.txt`* causes the CMake cache to be regenerated. +The **Debug** or **F5** commands first build the project if changes have been made since the previous build. Changes to the CMake configuration file (*CMakePresets.json* or *CMakeSettings.json*) or a *CMakeLists.txt* causes the CMake cache to be regenerated. -You can customize a CMake debugging session by setting properties in the *`launch.vs.json`* file. To customize debug settings for a specific target, select the target in the **Startup Item** dropdown and choose **Debug > Debug and Launch Settings for \**. For more information on CMake debugging sessions, see [Configure CMake debugging sessions](configure-cmake-debugging-sessions.md). +You can customize a CMake debugging session by setting properties in the *launch.vs.json* file. To customize debug settings for a specific target, select the target in the **Startup Item** dropdown and choose **Debug > Debug and Launch Settings for \**. For more information on CMake debugging sessions, see [Configure CMake debugging sessions](configure-cmake-debugging-sessions.md). ### Just My Code for CMake projects @@ -145,7 +145,7 @@ When you build for Windows using the MSVC compiler, CMake projects have support ### Edit and Continue for CMake projects -When you build for Windows with the MSVC compiler, CMake projects have support for Edit and Continue. Add the following code to your *`CMakeLists.txt`* file to enable Edit and Continue. +When you build for Windows with the MSVC compiler, CMake projects have support for Edit and Continue. Add the following code to your *CMakeLists.txt* file to enable Edit and Continue. ``` if(MSVC) @@ -166,20 +166,20 @@ The following options are available on the dialog: Connection type (set to SSH), ## CMake partial activation -In Visual Studio 2022 version 17.1 and later, CMake functionality isn't enabled automatically if your root folder doesn't contain a `CMakeLists.txt` file. Instead, a dialog prompts you on whether you'd like to enable CMake functionality for your project. If you decline, CMake cache generation doesn't start and CMake configurations (from `CMakeSettings.json` or `CMakePresets.json`) doesn't appear in the configuration dropdown. If you accept, you're taken to a workspace-level configuration file, `CMakeWorkspaceSettings.json` (stored in the `.vs` directory), to specify the folders you'd like to enable CMake for. (These folders contain your root `CMakeLists.txt` files). +In Visual Studio 2022 version 17.1 and later, CMake functionality isn't enabled automatically if your root folder doesn't contain a *CMakeLists.txt* file. Instead, a dialog prompts you on whether you'd like to enable CMake functionality for your project. If you decline, CMake cache generation doesn't start and CMake configurations (from *CMakeSettings.json* or *CMakePresets.json*) doesn't appear in the configuration dropdown. If you accept, you're taken to a workspace-level configuration file, *CMakeWorkspaceSettings.json* (stored in the *.vs* directory), to specify the folders you'd like to enable CMake for. (These folders contain your root *CMakeLists.txt* files). The accepted properties are: | Property | Description | |--|--| | `enableCMake` | Enable Visual Studio's integration for this workspace. | -| `sourceDirectory` | A string or array of strings specifying the directory or directories with `CMakeLists.txt`. Macros (such as `${workspaceRoot}`) are allowed. Relative paths are based on the workspace root. Directories outside of the current workspace are ignored. | +| `sourceDirectory` | A string or array of strings specifying the directory or directories with *CMakeLists.txt*. Macros (such as `${workspaceRoot}`) are allowed. Relative paths are based on the workspace root. Directories outside of the current workspace are ignored. | -You can reach `CMakeWorkspaceSettings.json` through the **Project** > **CMake Workspace Settings** menu command at any time, even if CMake functionality is currently disabled. +You can reach *CMakeWorkspaceSettings.json* through the **Project** > **CMake Workspace Settings** menu command at any time, even if CMake functionality is currently disabled. ## Open an existing cache -When you open an existing CMake cache file (*`CMakeCache.txt`*), Visual Studio doesn't try to manage your cache and build tree for you. Your custom or preferred tools have complete control over how CMake configures your project. +When you open an existing CMake cache file (*CMakeCache.txt*), Visual Studio doesn't try to manage your cache and build tree for you. Your custom or preferred tools have complete control over how CMake configures your project. You can add an existing CMake cache to an open project. It's done the same way you'd add a new configuration. For more information, see our blog post on [opening an existing cache in Visual Studio](https://devblogs.microsoft.com/cppblog/open-existing-cmake-caches-in-visual-studio/). @@ -194,23 +194,23 @@ You can add an existing CMake cache to an open project. It's done the same way y Visual Studio uses the CMake [file-based API](https://cmake.org/cmake/help/latest/manual/cmake-file-api.7.html) (in versions 3.14 and later) to populate the editor with information specific to your project structure. For more information, see the C++ team blog post on [multi-root workspaces and file-based API](https://devblogs.microsoft.com/cppblog/visual-studio-code-cmake-tools-extension-multi-root-workspaces-and-file-based-api/). -Before generating the CMake cache, your custom or preferred tools might need to create a query file named *`.cmake/api/v1/query/client-MicrosoftVS/query.json`* in your build output folder (the folder that contains *`CMakeCache.txt`*). The query file should contain this content: +Before generating the CMake cache, your custom or preferred tools might need to create a query file named *.cmake/api/v1/query/client-MicrosoftVS/query.json* in your build output folder (the folder that contains *CMakeCache.txt*). The query file should contain this content: ```json {"requests":[{"kind":"cache","version":2},{"kind":"cmakeFiles","version":1},{"kind":"codemodel","version":2}]} ``` -When your custom or preferred tools generate your cache, CMake places files under *`.cmake/api/v1/response`* that Visual Studio uses to populate the editor with information specific to your project structure. +When your custom or preferred tools generate your cache, CMake places files under *.cmake/api/v1/response* that Visual Studio uses to populate the editor with information specific to your project structure. ## Editing *CMakeLists.txt* files -To edit a *`CMakeLists.txt`* file, right-click on the file in **Solution Explorer** and choose **Open**. If you make changes to the file, a yellow status bar appears and informs you that IntelliSense will update. It gives you a chance to cancel the update operation. For information about *`CMakeLists.txt`*, see the [CMake documentation](https://cmake.org/documentation/). +To edit a *CMakeLists.txt* file, right-click on the file in **Solution Explorer** and choose **Open**. If you make changes to the file, a yellow status bar appears and informs you that IntelliSense will update. It gives you a chance to cancel the update operation. For information about *CMakeLists.txt*, see the [CMake documentation](https://cmake.org/documentation/). :::image type="complex" source="media/cmake-cmakelists.png" alt-text="Screenshot of a C Make Lists TXT file being edited in Visual Studio." It contains the lines project (hello-cmake), add_subdirectory (tests), add_executable (hello hello.cpp), and install (TARGETS hello DESTINATION hello/bin). A message at the top of the window says that c plus plus IntelliSense info will refresh after C Make finishes generating the cache. :::image-end::: -As soon as you save the file, the configuration step automatically runs again and displays information in the **Output** window. Errors and warnings are shown in the **Error List** or **Output** window. Double-click on an error in the **Error List** to navigate to the offending line in *`CMakeLists.txt`*. +As soon as you save the file, the configuration step automatically runs again and displays information in the **Output** window. Errors and warnings are shown in the **Error List** or **Output** window. Double-click on an error in the **Error List** to navigate to the offending line in *CMakeLists.txt*. :::image type="complex" source="media/cmake-cmakelists-error.png" alt-text="Screenshot of a C Make error in the Visual Studio error list."::: A C Make error message on line 3 of CMakeLists.txt is highlighted. The details are that C Make couldn't find a package configuration file provided by sqlite3. C Make looked for it in CMAKE_MODULE_PATH but couldn't find it. The suggestion is to add the installation prefix 'sqlite3' to CMAKE_PREFIX_PATH or set sqlite3_DIR to a directory containing sqlite3Config.cmake and/or sqlitet3-config.cmake. @@ -236,9 +236,9 @@ A tree view shows CMakeLists.txt, under which are two items: add_executable and By default, Visual Studio uses the IntelliSense mode that matches the compiler and target architecture specified by the active CMake configuration. -If *`CMakePresets.json`* is your active CMake configuration file, then you can specify IntelliSense options using `intelliSenseMode` and `intelliSenseOptions` in the Visual Studio Settings vendor map. For more information, see the [Visual Studio Settings vendor map reference](cmake-presets-json-reference.md#visual-studio-settings-vendor-map). +If *CMakePresets.json* is your active CMake configuration file, then you can specify IntelliSense options using `intelliSenseMode` and `intelliSenseOptions` in the Visual Studio Settings vendor map. For more information, see the [Visual Studio Settings vendor map reference](cmake-presets-json-reference.md#visual-studio-settings-vendor-map). -If *`CMakeSettings.json`* is your active CMake configuration file, then you can specify IntelliSense options using `intelliSenseMode` in *`CMakeSettings.json`*. For more information, see the [`CMakeSettings.json` reference](cmakesettings-reference.md). +If *CMakeSettings.json* is your active CMake configuration file, then you can specify IntelliSense options using `intelliSenseMode` in *CMakeSettings.json*. For more information, see the [CMakeSettings.json reference](cmakesettings-reference.md). ### Configure IntelliSense with CMake toolchain files @@ -251,17 +251,17 @@ CMake projects opened in Visual Studio integrate with vcpkg, a cross-platform C/ - [Install and use packages with CMake in Visual Studio](/vcpkg/get_started/get-started-vs) - [vcpkg in CMake projects](/vcpkg/users/buildsystems/cmake-integration) -If *`CMakeSettings.json`* is your active configuration file, Visual Studio automatically passes the vcpkg toolchain file (`vcpkg.cmake`) to CMake. This behavior is disabled automatically when you specify any other toolchain in your CMake Settings configuration. +If *CMakeSettings.json* is your active configuration file, Visual Studio automatically passes the vcpkg toolchain file (`vcpkg.cmake`) to CMake. This behavior is disabled automatically when you specify any other toolchain in your CMake Settings configuration. -If *`CMakePresets.json`* is your active configuration file, you need to set the path to `vcpkg.cmake` in *`CMakePresets.json`*. We recommend using the `VCPKG_ROOT` environment variable instead of an absolute path to keep the file shareable. For more information, see [Enable vcpkg integration with CMake Presets](cmake-presets-vs.md#enable-vcpkg-integration). *`CMakePresets.json`* is available in Visual Studio 2019 version 16.10 or later and is the recommended CMake configuration file. +If *CMakePresets.json* is your active configuration file, you need to set the path to `vcpkg.cmake` in *CMakePresets.json*. We recommend using the `VCPKG_ROOT` environment variable instead of an absolute path to keep the file shareable. For more information, see [Enable vcpkg integration with CMake Presets](cmake-presets-vs.md#enable-vcpkg-integration). *CMakePresets.json* is available in Visual Studio 2019 version 16.10 or later and is the recommended CMake configuration file. ## Run CMake from the command line -If *`CMakePresets.json`* is your active CMake configuration file, then you can easily reproduce your local builds outside of Visual Studio. For more information, see [Run CMake from the command line or a CI pipeline](cmake-presets-vs.md#run-cmake-from-the-command-line-or-a-ci-pipeline). *`CMakePresets.json`* is supported in Visual Studio 2019 version 16.10 or later and is the recommended CMake configuration file. +If *CMakePresets.json* is your active CMake configuration file, then you can easily reproduce your local builds outside of Visual Studio. For more information, see [Run CMake from the command line or a CI pipeline](cmake-presets-vs.md#run-cmake-from-the-command-line-or-a-ci-pipeline). *CMakePresets.json* is supported in Visual Studio 2019 version 16.10 or later and is the recommended CMake configuration file. -If *`CMakeSettings.json`* is your active CMake configuration file, then you need to manually pass the arguments that are encoded in your *`CMakeSettings.json`* file to CMake. If you installed CMake from the Visual Studio Installer, you can run it from the command line by following these steps: +If *CMakeSettings.json* is your active CMake configuration file, then you need to manually pass the arguments that are encoded in your *CMakeSettings.json* file to CMake. If you installed CMake from the Visual Studio Installer, you can run it from the command line by following these steps: -1. Run the appropriate *`vsdevcmd.bat`* file (x86/x64). For more information, see [Use the Microsoft C++ toolset from the command line](building-on-the-command-line.md) . +1. Run the appropriate *vsdevcmd.bat* file (x86/x64). For more information, see [Use the Microsoft C++ toolset from the command line](building-on-the-command-line.md) . 1. Switch to your output folder. @@ -271,7 +271,7 @@ If *`CMakeSettings.json`* is your active CMake configuration file, then you need ::: moniker range="msvc-150" -Visual Studio 2017 has rich support for CMake, including [cross-platform CMake projects](../linux/cmake-linux-project.md). The **Visual C++ Tools for CMake** component uses the **Open Folder** feature to enable the IDE to consume CMake project files (such as *`CMakeLists.txt`*) directly for the purposes of IntelliSense and browsing. Both Ninja and Visual Studio generators are supported. If you use a Visual Studio generator, it generates a temporary project file and passes it to MSBuild. However, the project is never loaded for IntelliSense or browsing purposes. You also can import an existing CMake cache. +Visual Studio 2017 has rich support for CMake, including [cross-platform CMake projects](../linux/cmake-linux-project.md). The **Visual C++ Tools for CMake** component uses the **Open Folder** feature to enable the IDE to consume CMake project files (such as *CMakeLists.txt*) directly for the purposes of IntelliSense and browsing. Both Ninja and Visual Studio generators are supported. If you use a Visual Studio generator, it generates a temporary project file and passes it to MSBuild. However, the project is never loaded for IntelliSense or browsing purposes. You also can import an existing CMake cache. ## Installation @@ -283,7 +283,7 @@ For more information, see [Install the C++ Linux workload in Visual Studio](../l ## IDE integration -When you choose **File > Open > Folder** to open a folder containing a *`CMakeLists.txt`* file, the following happens: +When you choose **File > Open > Folder** to open a folder containing a *CMakeLists.txt* file, the following happens: - Visual Studio adds a **CMake** menu item to the main menu, with commands for viewing and editing CMake scripts. @@ -293,7 +293,7 @@ When you choose **File > Open > Folder** to open a folder containing a *`CMakeLi - In the background, Visual Studio starts to index the source files to enable IntelliSense, browsing information, refactoring, and so on. As you work, Visual Studio monitors changes in the editor and also on disk to keep its index in sync with the sources. -You can open folders containing any number of CMake projects. Visual Studio detects and configures all the *root* *`CMakeLists.txt`* files in your workspace. CMake operations (configure, build, debug), C++ IntelliSense, and browsing are available to all CMake projects in your workspace. +You can open folders containing any number of CMake projects. Visual Studio detects and configures all the *root* *CMakeLists.txt* files in your workspace. CMake operations (configure, build, debug), C++ IntelliSense, and browsing are available to all CMake projects in your workspace. :::image type="complex" source="media/cmake-multiple-roots.png" alt-text="Screenshot of the Visual Studio Solution Explorer."::: The files and folders of a C Make project are visible. There's a tests subdirectory, CMakeLists.txt, and hello.cpp. There's a hello-cmake-vcpkg folder that contains CMakeLists.txt, CMakeSettings.json, and hello.cpp. @@ -303,18 +303,18 @@ You can also view your projects organized logically by targets. Choose **Targets :::image type="content" source="media/cmake-targets-view.png" alt-text="Screenshot of the dropdown button in the Visual Studio Solution Explorer that offers the CMake targets view option. Which is selected."::: -Visual Studio uses a file called *`CMakeSettings.json`* to store environment variables or command-line options for CMake. *`CMakeSettings.json`* also lets you define and store multiple CMake build configurations. You can conveniently switch between them in the IDE. +Visual Studio uses a file called *CMakeSettings.json* to store environment variables or command-line options for CMake. *CMakeSettings.json* also lets you define and store multiple CMake build configurations. You can conveniently switch between them in the IDE. -Otherwise, use the *`CMakeLists.txt`* just as you would in any CMake project to specify source files, find libraries, set compiler and linker options, and specify other build system-related information. +Otherwise, use the *CMakeLists.txt* just as you would in any CMake project to specify source files, find libraries, set compiler and linker options, and specify other build system-related information. -If you need to pass arguments to an executable at debug time, you can use another file called *`launch.vs.json`*. In some scenarios, Visual Studio automatically generates these files. You can edit them manually, or even create the file yourself. +If you need to pass arguments to an executable at debug time, you can use another file called *launch.vs.json*. In some scenarios, Visual Studio automatically generates these files. You can edit them manually, or even create the file yourself. > [!NOTE] -> For other kinds of Open Folder projects, two additional JSON files are used: *`CppProperties.json`* and *`tasks.vs.json`*. Neither of these are relevant for CMake projects. +> For other kinds of Open Folder projects, two additional JSON files are used: *CppProperties.json* and *tasks.vs.json*. Neither of these are relevant for CMake projects. ## Import an existing cache -When you import an existing *`CMakeCache.txt`* file, Visual Studio automatically extracts customized variables and creates a prepopulated *`CMakeSettings.json`* file based on them. The original cache isn't modified in any way. It can still be used from the command line, or with whatever tool or IDE used to generate it. The new *`CMakeSettings.json`* file is placed alongside the project's root *`CMakeLists.txt`*. Visual Studio generates a new cache based the settings file. You can override automatic cache generation in the **Tools > Options > CMake > General** dialog. +When you import an existing *CMakeCache.txt* file, Visual Studio automatically extracts customized variables and creates a prepopulated *CMakeSettings.json* file based on them. The original cache isn't modified in any way. It can still be used from the command line, or with whatever tool or IDE used to generate it. The new *CMakeSettings.json* file is placed alongside the project's root *CMakeLists.txt*. Visual Studio generates a new cache based the settings file. You can override automatic cache generation in the **Tools > Options > CMake > General** dialog. Not everything in the cache is imported. Properties such as the generator and the location of the compilers are replaced with defaults that are known to work well with the IDE. @@ -326,11 +326,11 @@ Not everything in the cache is imported. Properties such as the generator and th This command brings up the **Import CMake from Cache** wizard. -2. Navigate to the *`CMakeCache.txt`* file that you want to import, and then choose **OK**. The **Import CMake Project from Cache** wizard appears: +2. Navigate to the *CMakeCache.txt* file that you want to import, and then choose **OK**. The **Import CMake Project from Cache** wizard appears: :::image type="content" source="media/cmake-import-wizard.png" alt-text="Screenshot of the Import C Make Project from Cache wizard. The directory path of the C Make project to import goes in the folder textbox."::: - When the wizard completes, you can see the new *`CMakeCache.txt`* file in **Solution Explorer** next to the root *`CMakeLists.txt`* file in your project. + When the wizard completes, you can see the new *CMakeCache.txt* file in **Solution Explorer** next to the root *CMakeLists.txt* file in your project. ## Building CMake projects @@ -338,7 +338,7 @@ To build a CMake project, you have these choices: 1. In the General toolbar, find the **Configurations** dropdown. It's probably showing *Linux-Debug* or *x64-Debug* by default. Select the preferred configuration and press **F5**, or choose the **Run** (green triangle) button on the toolbar. The project automatically builds first, just like a Visual Studio solution. -1. Right-click on *`CMakeLists.txt`* in **Solution Explorer** and select **Build** from the context menu. If you have multiple targets in your folder structure, you can choose to build all or only one specific target. +1. Right-click on *CMakeLists.txt* in **Solution Explorer** and select **Build** from the context menu. If you have multiple targets in your folder structure, you can choose to build all or only one specific target. 1. From the main menu, select **Build > Build Solution** (**F7** or **Ctrl+Shift+B**). Make sure that a CMake target is already selected in the **Startup Item** dropdown in the **General** toolbar. @@ -346,7 +346,7 @@ To build a CMake project, you have these choices: The menu has options such as Add, Open, Configure tasks, Build, Clean all, and so on. :::image-end::: -You can customize build configurations, environment variables, command-line arguments, and other settings in the *`CMakeSettings.json`* file. It lets you make changes without modifying the *`CMakeLists.txt`* file. For more information, see [Customize CMake build settings](customize-cmake-settings.md). +You can customize build configurations, environment variables, command-line arguments, and other settings in the *CMakeSettings.json* file. It lets you make changes without modifying the *CMakeLists.txt* file. For more information, see [Customize CMake build settings](customize-cmake-settings.md). As you would expect, build results are shown in the **Output Window** and **Error List**. @@ -354,27 +354,27 @@ As you would expect, build results are shown in the **Output Window** and **Erro C Make build warnings about conversions that might result in data loss such as converting from a float to an integer are visible. :::image-end::: -In a folder with multiple build targets, you can specify which CMake target to build: Choose the **Build** item on the **CMake** menu or the *`CMakeLists.txt`* context menu to specify the target. If you enter **Ctrl+Shift+B** in a CMake project, it builds the current active document. +In a folder with multiple build targets, you can specify which CMake target to build: Choose the **Build** item on the **CMake** menu or the *CMakeLists.txt* context menu to specify the target. If you enter **Ctrl+Shift+B** in a CMake project, it builds the current active document. ## Debugging CMake projects -To debug a CMake project, choose the preferred configuration and press **F5**. Or, press the **Run** button in the toolbar. If the **Run** button says "Select Startup Item", select the dropdown arrow and choose the target that you want to run. (In a CMake project, the "Current document" option is only valid for .cpp files.) +To debug a CMake project, choose the preferred configuration and press **F5**. Or, press the **Run** button in the toolbar. If the **Run** button says **Select Startup Item**, select the dropdown arrow and choose the target that you want to run. (In a CMake project, the **Current document** option is only valid for .cpp files.) :::image type="content" source="media/cmake-run-button.png" alt-text="Screenshot of the Select Startup Item dropdown for a C Make project. You can select current document or hello-cmake."::: The **Run** or **F5** commands first build the project if changes have been made since the previous build. -You can customize a CMake debugging session by setting properties in the *`launch.vs.json`* file. For more information, see [Configure CMake debugging sessions](configure-cmake-debugging-sessions.md). +You can customize a CMake debugging session by setting properties in the *launch.vs.json* file. For more information, see [Configure CMake debugging sessions](configure-cmake-debugging-sessions.md). -## Editing *`CMakeLists.txt`* files +## Editing *CMakeLists.txt* files -To edit a *`CMakeLists.txt`* file, right-click on the file in **Solution Explorer** and choose **Open**. If you make changes to the file, a yellow status bar appears and informs you that IntelliSense will update. It gives you a chance to cancel the update operation. For information about *`CMakeLists.txt`*, see the [CMake documentation](https://cmake.org/documentation/). +To edit a *CMakeLists.txt* file, right-click on the file in **Solution Explorer** and choose **Open**. If you make changes to the file, a yellow status bar appears and informs you that IntelliSense will update. It gives you a chance to cancel the update operation. For information about *CMakeLists.txt*, see the [CMake documentation](https://cmake.org/documentation/). :::image type="complex" source="media/cmake-cmakelists.png" alt-text="Screenshot of a C Make Lists file being edited in Visual Studio."::: The file contains project (hello-cmake), add_subdirectory (tests), add_executable (hello hello.cpp), and install (TARGETS hello DESTINATION hello/bin). A message at the top of the window says that c plus plus IntelliSense info will refresh after C Make finishes generating the cache. :::image-end::: -As soon as you save the file, the configuration step automatically runs again and displays information in the **Output** window. Errors and warnings are shown in the **Error List** or **Output** window. Double-click on an error in the **Error List** to navigate to the offending line in *`CMakeLists.txt`*. +As soon as you save the file, the configuration step automatically runs again and displays information in the **Output** window. Errors and warnings are shown in the **Error List** or **Output** window. Double-click on an error in the **Error List** to navigate to the offending line in *CMakeLists.txt*. :::image type="complex" source="media/cmake-cmakelists-error.png" alt-text="Screenshot of a C Make error in the Visual Studio error list."::: A C Make error message on line 3 of CMakeLists.txt is highlighted. The details are that C Make can't find a package configuration file provided by sqlite3. C Make looked for it in CMAKE_MODULE_PATH but couldn't find it. The suggestion is to add the installation prefix 'sqlite3' to CMAKE_PREFIX_PATH or set sqlite3_DIR to a directory containing sqlite3Config.cmake and/or sqlitet3-config.cmake. @@ -382,7 +382,7 @@ As soon as you save the file, the configuration step automatically runs again an ## CMake configure step -When significant changes are made to the *`CMakeSettings.json`* or to *`CMakeLists.txt`* files, Visual Studio automatically reruns the CMake configure step. If the configure step finishes without errors, the information that's collected is available in C++ IntelliSense and language services. It's also used in build and debug operations. +When significant changes are made to the *CMakeSettings.json* or to *CMakeLists.txt* files, Visual Studio automatically reruns the CMake configure step. If the configure step finishes without errors, the information that's collected is available in C++ IntelliSense and language services. It's also used in build and debug operations. Multiple CMake projects might use the same CMake configuration name (for example, *x86-Debug*). All of them are configured and built (in their own build root folder) when that configuration is selected. You can debug the targets from all of the CMake projects that participate in that CMake configuration. @@ -390,13 +390,13 @@ Multiple CMake projects might use the same CMake configuration name (for example The context menu shows what can be built. In this case hello-cmake-a \ hello-cmake.exe (Project hello-cmake) and hello-cmake-b\hello-cmake.exe (Project hello-cmake). The latter is highlighted. :::image-end::: -You can limit builds and debug sessions to a subset of the projects in the workspace. Create a new configuration with a unique name in the *`CMakeSettings.json`* file. Then, apply the configuration to those projects only. When that configuration is selected, IntelliSense and the build and debug commands only apply to those specified projects. +You can limit builds and debug sessions to a subset of the projects in the workspace. Create a new configuration with a unique name in the *CMakeSettings.json* file. Then, apply the configuration to those projects only. When that configuration is selected, IntelliSense and the build and debug commands only apply to those specified projects. ## Troubleshooting CMake cache errors -If you need more information about the state of the CMake cache to diagnose a problem, open the **CMake** main menu or the *`CMakeLists.txt`* context menu in **Solution Explorer** to run one of these commands: +If you need more information about the state of the CMake cache to diagnose a problem, open the **CMake** main menu or the *CMakeLists.txt* context menu in **Solution Explorer** to run one of these commands: -- **View Cache** opens the *`CMakeCache.txt`* file from the build root folder in the editor. Any edits you make here to *`CMakeCache.txt`* are wiped out if you clean the cache. To make changes that persist after the cache is cleaned, see [Customize CMake settings](customize-cmake-settings.md). +- **View Cache** opens the *CMakeCache.txt* file from the build root folder in the editor. Any edits you make here to *CMakeCache.txt* are wiped out if you clean the cache. To make changes that persist after the cache is cleaned, see [Customize CMake settings](customize-cmake-settings.md). - **Open Cache Folder** opens an Explorer window to the build root folder. @@ -416,7 +416,7 @@ To build a single file in a CMake project, right-click on the file in **Solution If you installed CMake from the Visual Studio Installer, you can run it from the command line by following these steps: -1. Run the appropriate *`vsdevcmd.bat`* file (x86/x64). For more information, see [Building on the Command Line](building-on-the-command-line.md). +1. Run the appropriate *vsdevcmd.bat* file (x86/x64). For more information, see [Building on the Command Line](building-on-the-command-line.md). 1. Switch to your output folder. diff --git a/docs/build/vscpp-step-0-installation.md b/docs/build/vscpp-step-0-installation.md index c2b192a02f8..95784617362 100644 --- a/docs/build/vscpp-step-0-installation.md +++ b/docs/build/vscpp-step-0-installation.md @@ -1,12 +1,12 @@ --- -title: Install Visual Studio with C and C++ support +title: Install C and C++ support in Visual Studio description: "Learn how to install Visual Studio with support for Microsoft C and C++ and related workloads." ms.custom: vs-acquisition, intro-installation -ms.date: 03/14/2025 +ms.date: 03/18/2025 ms.topic: tutorial ms.devlang: "cpp" --- -# Install Visual Studio with C and C++ support +# Install C and C++ support in Visual Studio If you haven't installed Visual Studio and the Microsoft C and C++ tools yet, here's how to get started. @@ -19,7 +19,7 @@ Welcome to Visual Studio 2022! In this version, it's easy to choose and install > [!NOTE] > This article applies to installation of Visual Studio on Windows. [Visual Studio Code](https://code.visualstudio.com) is a lightweight, cross-platform development environment that runs on Windows, Mac, and Linux systems. The Microsoft [C/C++ for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) extension supports IntelliSense, debugging, code formatting, autocompletion. Visual Studio for Mac doesn't support Microsoft C++, but does support .NET languages and cross-platform development. For installation instructions, see [Install Visual Studio for Mac](/visualstudio/mac/installation/). -To learn about what else is new in this version, see the Visual Studio [release notes](/visualstudio/releases/2022/release-notes/). +To learn what else is new in this version, see the Visual Studio [release notes](/visualstudio/releases/2022/release-notes/). Ready to install? Use the following step-by-step guide. @@ -119,7 +119,7 @@ Welcome to Visual Studio 2019! In this version, it's easy to choose and install > [!NOTE] > This article applies to installation of Visual Studio on Windows. [Visual Studio Code](https://code.visualstudio.com) is a lightweight, cross-platform development environment that runs on Windows, Mac, and Linux systems. The Microsoft [C/C++ for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) extension supports IntelliSense, debugging, code formatting, autocompletion. Visual Studio for Mac doesn't support Microsoft C++, but does support .NET languages and cross-platform development. For installation instructions, see [Install Visual Studio for Mac](/visualstudio/mac/installation/). -To learn about what else is new in this version, see the Visual Studio [release notes](/visualstudio/releases/2019/release-notes/). +To learn what else is new in this version, see the Visual Studio [release notes](/visualstudio/releases/2019/release-notes/). Ready to install? Use the following step-by-step guide. From b07f30c21181ef7a6565b3e3bd0f08dbb965f002 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 19 Mar 2025 18:51:47 +0800 Subject: [PATCH 0296/2255] Update MSVC STL Changelog GitHub wiki links --- docs/overview/cpp-conformance-improvements.md | 6 +++--- docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/overview/cpp-conformance-improvements.md b/docs/overview/cpp-conformance-improvements.md index 76bbefd6f6c..008eb481d49 100644 --- a/docs/overview/cpp-conformance-improvements.md +++ b/docs/overview/cpp-conformance-improvements.md @@ -300,7 +300,7 @@ To fix this warning, either use an equality operator, `value == 9`, if this is w Visual Studio 2022 version 17.9 contains the following conformance improvements, bug fixes, and behavior changes in the Microsoft C/C++ compiler. -For a broader summary of changes made to the Standard Template Library, see [STL Changelog VS 2022 17.9](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-179). +For a broader summary of changes made to the Standard Template Library, see [STL Changelog VS 2022 17.9](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-179). ### Application of `_Alignas` on a structured type in C @@ -389,7 +389,7 @@ The C compiler used to accept the `/FU` option, even though it hasn't support ma The C++23 named modules `std` and `std.compat` are now available when compiling with `/std:c++20`. -For a broader summary of changes made to the C++ Standard Library, see [STL Changelog VS 2022 17.8](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-178). +For a broader summary of changes made to the C++ Standard Library, see [STL Changelog VS 2022 17.8](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-178). ## Conformance improvements in Visual Studio 2022 version 17.7 @@ -405,7 +405,7 @@ The `` library is now supported. See [P2093R14 Formatted output](https:// Implemented `views::cartesian_product`. -For a broader summary of changes made to the Standard Template Library, see [STL Changelog VS 2022 17.7](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-177). +For a broader summary of changes made to the Standard Template Library, see [STL Changelog VS 2022 17.7](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-177). ### `using` conformance 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 b20f03e8fcb..909ac8084e0 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 @@ -261,7 +261,7 @@ A partial list of new features: | For more information about | See | |---|---| | What's new for C++ developers | [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/) | -| Standard Library (STL) merged C++23 features, performance improvements, enhanced behavior, LWG issue resolutions, and fixed bugs | [STL Changelog 17.9](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-179) | +| Standard Library (STL) merged C++23 features, performance improvements, enhanced behavior, LWG issue resolutions, and fixed bugs | [STL Changelog 17.9](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-179) | | New features in the Visual Studio 17.9 IDE |[Visual Studio 2022 version 17.9 Release Notes](/visualstudio/releases/2022/release-notes-v17.9) | | C++ language conformance improvements in Visual Studio 2022 17.9 | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022](cpp-conformance-improvements.md#improvements_179) | | Summary of C++ backend updates | [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/) | @@ -294,7 +294,7 @@ A partial list of new features: | For more information about | See | |---|---| | What's new for C++ developers | [What's new for C++ Developers in Visual Studio 2022 17.8](https://devblogs.microsoft.com/cppblog/whats-new-for-cpp-developers-in-visual-studio-2022-17-8/) | -| Standard Library (STL) merged C++26, C++23 features, C++20 extensions, LWG issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.8](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-178) | +| Standard Library (STL) merged C++26, C++23 features, C++20 extensions, LWG issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.8](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-178) | | New features in the Visual Studio 17.8 IDE |[Visual Studio 2022 version 17.8 Release Notes](/visualstudio/releases/2022/release-notes-v17.8) | | C++ language conformance improvements in Visual Studio 2022 17.8 | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022](cpp-conformance-improvements.md#improvements_178) | | An overview of C++ improvements in Visual Studio, VS Code, and vcpkg during 2023 | [A year of C++ improvements](https://devblogs.microsoft.com/cppblog/a-year-of-cpp-improvements-in-visual-studio-vs-code-and-vcpkg) | @@ -554,7 +554,7 @@ In Visual Studio 2022, when you start your app in the debugger, you can use the ### Standard Library improvements -Select Standard Library (STL) improvements are highlighted here. For a comprehensive list of new functionality, changes, bug fixes, and performance improvements, see the STL team's [Changelog](https://github.com/microsoft/STL/wiki/Changelog#vs-2022). +Select Standard Library (STL) improvements are highlighted here. For a comprehensive list of new functionality, changes, bug fixes, and performance improvements, see the STL team's [Changelog](https://github.com/microsoft/STL/wiki/Changelog). - Added debugging visualizers to improve how the following types are displayed: `source_location`, `bind_front()`, `u8string` (and its iterators), `default_sentinel_t`, `unreachable_sentinel_t`, `ranges::empty_view`, `ranges::single_view`, `ranges::iota_view` (and its iterator/sentinel), `ranges::ref_view`, `thread`, `thread::id`, `jthread`, and `filesystem::path` - Added `[[nodiscard]]` to the `stoi()` family of functions in `` and to various functions in `` such as the `collate` member functions, `has_facet()`, and the `isalnum()` and `tolower()` families. From 7f04da3a759622dec4732613b32b730468763373 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 19 Mar 2025 19:34:30 +0800 Subject: [PATCH 0297/2255] Tweak error C2466 --- .../compiler-errors-1/compiler-error-c2466.md | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2466.md b/docs/error-messages/compiler-errors-1/compiler-error-c2466.md index ae382ccd5fd..34e0cca5945 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2466.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2466.md @@ -1,14 +1,13 @@ --- -description: "Learn more about: Compiler Error C2466" title: "Compiler Error C2466" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2466" +ms.date: "03/19/2025" f1_keywords: ["C2466"] helpviewer_keywords: ["C2466"] -ms.assetid: 75b251d1-7d0b-4a86-afca-26adedf74486 --- # Compiler Error C2466 -cannot allocate an array of constant size 0 +> cannot allocate an array of constant size 0 An array is allocated or declared with size zero. The constant expression for the array size must be an integer greater than zero. An array declaration with a zero subscript is legal only for a class, structure, or union member and only with Microsoft extensions ([/Ze](../../build/reference/za-ze-disable-language-extensions.md)). @@ -17,7 +16,6 @@ The following sample generates C2466: ```cpp // C2466.cpp // compile with: /c -int i[0]; // C2466 -int j[1]; // OK -char *p; +int arr1[0]; // C2466 +int arr2[1]; // OK ``` From c97639619356670575c0f6fce9a101a84ed5ec3a Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Wed, 19 Mar 2025 16:51:12 -0700 Subject: [PATCH 0298/2255] Refresh articles --- .../media/visual-c---project-defaults.png | Bin 31285 -> 33151 bytes ...rty-pages-showing-active-configuration.png | Bin 61573 -> 25804 bytes ...-property-pages-showing-release-config.png | Bin 65483 -> 18877 bytes docs/build/toc.yml | 2 +- docs/build/working-with-project-properties.md | 50 ++++++++---------- docs/build/x64-calling-convention.md | 35 ++++++------ 6 files changed, 40 insertions(+), 47 deletions(-) diff --git a/docs/build/media/visual-c---project-defaults.png b/docs/build/media/visual-c---project-defaults.png index 3b3db949ce532abfea351c416917d1f6b1f71b70..02ee1b1b204a075188b04b0d9886b4bc786af99c 100644 GIT binary patch literal 33151 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

Kl> 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 literal 31285 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

VCHIy$*i1&hYL%<~n>^|MYLBW=6i-65=U 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 diff --git a/docs/build/media/visual-c---property-pages-showing-release-config.png b/docs/build/media/visual-c---property-pages-showing-release-config.png index 763a22945ab1ac409800081b8f951fb2645c75d8..39ff39170dc943b8e75f916c24b32282f2263ccf 100644 GIT binary patch literal 18877 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 FFD< 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 azCk(v&EO7B7~})}EC~@=;c7wsfd2 **_project-name_ Properties** from the main menu, or right-click on the project node in **Solution Explorer** and choose **Properties**. +In the Visual Studio IDE, you can view and edit the properties needed to compile and build a project. This information includes the application name, extension (such as DLL, LIB, EXE), compiler options, linker options, debugger settings, and custom build steps. + +You can view and modify these properties by using *property pages*. To access the property pages, choose **Project** > **_project-name_ Properties** from the main menu, or right-click on the project node in **Solution Explorer** and choose **Properties**. ## Default properties -When you create a project, the system assigns values for various properties. The defaults vary somewhat depending on the kind of project and what options you choose in the app wizard. For example, an ATL project has properties related to MIDL files, but these properties are absent in a basic console application. The default properties are shown in the General pane in the Property Pages: +When you create a project, the system assigns values for various properties. The defaults vary somewhat depending on the kind of project and what options you choose in the app wizard. For example, an active template library (ATL) project has properties related to Microsoft Interface Definition Language (MIDL) files, but these properties are absent in a basic console application. The default properties are shown in the General pane in the **Property Pages** window: :::image type="complex" source="media/visual-c---project-defaults.png" alt-text="Screenshot of the Visual Studio project properties dialog."::: The General page is open. The Project Defaults section is highlighted, which includes Configuration Type set to Application (.exe), use of MFC set to Use standard Windows libraries, Character set is Unicode, Common Language Runtime Support is set to No Common Language Runtime Support, Whole Program optimization is set to No Whole Program Optimization, and Windows Store APP support is set to No. :::image-end::: -## Applying properties to build configurations and target platforms +## Apply properties to build configurations and target platforms -Some properties, such as the application name, apply to all build variations and target platforms, whether it's a debug or release build. But most properties are configuration-dependent. To generate the correct code, the compiler has to know both the specific platform the program runs on and which specific compiler options to use. So when you set a property, it's important to pay attention to which configuration and platform the new value should apply to. Should it apply only to Debug Win32 builds, or should it also apply to Debug ARM64 and Debug x64? For example, the **Optimization** property, by default, is set to **Maximize Speed (/O2)** in a Release configuration, but is disabled in the Debug configuration. +Some properties, such as the application name, apply to all build variations and target platforms, whether it's a debug or release build. But most properties are configuration-dependent. To generate the correct code, the compiler has to know both the specific platform the program runs on and which specific compiler options to use. So when you set a property, it's important to pay attention to which configuration and platform the new value should apply to. Should it apply only to Debug Win32 builds, or should it also apply to Debug Arm64 and Debug x64? For example, the **Optimization** property, by default, is set to **Maximize Speed (/O2)** in a Release configuration, but is disabled in the Debug configuration. You can always see and change the configuration and platform a property value should apply to. The following illustration shows the property pages with the configuration and platform information controls at the top. When the **Optimization** property is set here, it only applies to Debug Win32 builds, the currently active configuration, as shown by the red arrows. @@ -28,11 +31,11 @@ The page is open to C/C++, Optimization. The Optimization setting is set to Disa The following illustration shows the same project property page, but the configuration has been changed to Release. Note the different value for the Optimization property. Also note that the active configuration is still Debug. You can set properties for any configuration here; it doesn't have to be the active one. -:::image type="content" source="media/visual-c---property-pages-showing-release-config.png" alt-text="Screenshot of the Visual Studio project Property Pages dialog. The Configuration dropdown is called out and is set to Release. The C/C++ > Optimization > Optimization setting is set to Maximize Speed (/O2)."::: +:::image type="content" source="media/visual-c---property-pages-showing-release-config.png" alt-text="Screenshot of the Visual Studio project Property Pages dialog. The Configuration dropdown is called out and is set to Release. The optimization setting is set to Maximize Speed slash O2."::: ## Target platforms -*Target platform* refers to the kind of device and operating system that the executable will run on. You can build a project for more than one platform. The available target platforms for C++ projects depend on the kind of project. They include but aren't limited to Win32, x64, ARM, ARM64, Android, and iOS. The **x86** target platform that you might see in **Configuration Manager** is identical to **Win32** in native C++ projects. Win32 means 32-bit Windows and **x64** means 64-bit Windows. For more information about these two platforms, see [Running 32-bit applications](/windows/win32/WinProg64/running-32-bit-applications). +*Target platform* refers to the kind of device and operating system that the executable runs on. You can build a project for more than one platform. The available target platforms for C++ projects depend on the kind of project. They include but aren't limited to Win32, x64, ARM, Arm64, Android, and iOS. The **x86** target platform that you might see in **Configuration Manager** is identical to **Win32** in native C++ projects. Win32 means 32-bit Windows and **x64** means 64-bit Windows. For more information about these two platforms, see [Running 32-bit applications](/windows/win32/WinProg64/running-32-bit-applications). The **Any CPU** target platform value that you might see in **Configuration Manager** has no effect on native C++ projects. It's only relevant for C++/CLI and other .NET project types. For more information, see [`/CLRIMAGETYPE` (Specify Type of CLR Image)](reference/clrimagetype-specify-type-of-clr-image.md). @@ -51,7 +54,7 @@ The **Property Pages** dialog box shows only the property pages that are relevan ## Directory and path values -MSBuild supports the use of compile-time constants for certain string values, such as include directories and paths, called *macros*. A macro can refer to a value that's defined by Visual Studio or the MSBuild system, or to a user-defined value. Macros look like `$(macro-name)` or `%(item-macro-name)`. They're exposed in the property pages, where you can refer to and modify them by using the [Property Editor](#property_editor). Use macros instead of hard-coded values such as directory paths. Macros make it easier to share property settings between machines and between versions of Visual Studio. And, you can better ensure that your project settings participate correctly in [property inheritance](project-property-inheritance.md). +MSBuild supports the use of compile-time constants for certain string values, such as include directories and paths, called *macros*. A macro can refer to a value that's defined by Visual Studio or the MSBuild system, or to a user-defined value. Macros look like `$(macro-name)` or `%(item-macro-name)`. They're exposed in the property pages, where you can refer to and modify them by using the [Property Editor](#property_editor). Use macros instead of hard-coded values such as directory paths. Macros make it easier to share property settings between machines and between versions of Visual Studio. You can also better ensure that your project settings participate correctly in [property inheritance](project-property-inheritance.md). The following illustration shows the property pages for a Visual Studio C++ project. In the left pane, the **VC++ Directories** *rule* is selected, and the right pane lists the properties that are associated with that rule. The property values are often macros, such as `$(VC_SourcePath)`: @@ -63,21 +66,21 @@ You can use the [Property Editor](#property_editor) to view the values of all av ### Predefined macros -- **Global macros**:\ +- **Global macros**\ Global macros apply to all items in a project configuration. A global macro has the syntax `$(name)`. An example of a global macro is `$(VCInstallDir)`, which stores the root directory of your Visual Studio installation. A global macro corresponds to a `PropertyGroup` in MSBuild. - **Item macros**\ - Item macros have the syntax `%(name)`. For a file, an item macro applies only to that file—for example, you can use `%(AdditionalIncludeDirectories)` to specify include directories that apply only to a particular file. This kind of item macro corresponds to an `ItemGroup` metadata in MSBuild. When used in the context of a project configuration, an item macro applies to all files of a certain type. For example, the C/C++ **Preprocessor Definitions** configuration property can take a `%(PreprocessorDefinitions)` item macro that applies to all .cpp files in the project. This kind of item macro corresponds to an `ItemDefinitionGroup` metadata in MSBuild. For more information, see [Item Definitions](/visualstudio/msbuild/item-definitions). + Item macros have the syntax `%(name)`. For a file, an item macro applies only to that file. For example, you can use `%(AdditionalIncludeDirectories)` to specify include directories that apply only to a particular file. This kind of item macro corresponds to an `ItemGroup` metadata in MSBuild. When used in the context of a project configuration, an item macro applies to all files of a certain type. For example, the C/C++ **Preprocessor Definitions** configuration property can take a `%(PreprocessorDefinitions)` item macro that applies to all .cpp files in the project. This kind of item macro corresponds to an `ItemDefinitionGroup` metadata in MSBuild. For more information, see [Item definitions](/visualstudio/msbuild/item-definitions). ### User-defined macros -You can create *user-defined macros* to use as variables in project builds. For example, you could create a user-defined macro that provides a value to a custom build step or a custom build tool. A user-defined macro is a name/value pair. In a project file, use the `$(name)` notation to access the value. +You can create *user-defined macros* to use as variables in project builds. For example, you could create a user-defined macro that provides a value to a custom build step or a custom build tool. A user-defined macro is a name-value pair. In a project file, use the `$(name)` notation to access the value. A user-defined macro is stored in a property sheet. If your project doesn't already contain a property sheet, you can create one by following the steps under [Share or reuse Visual Studio project settings](create-reusable-property-configurations.md). #### To create a user-defined macro -1. Open the **Property Manager** window. (On the menu bar, choose **View** > **Property Manager** or **View** > **Other Windows** > **Property Manager**.) Open the shortcut menu for a property sheet (its name ends in *`.user`*) and then choose **Properties**. The **Property Pages** dialog box for that property sheet opens. +1. Open the **Property Manager** window. On the menu bar, select **View** > **Other Windows** > **Property Manager**. Open the shortcut menu for a property sheet (its name ends in *`.user`*) and then choose **Properties**. The **Property Pages** dialog box for that property sheet opens. 1. In the left pane of the dialog box, select **User Macros**. In the right pane, choose the **Add Macro** button to open the **Add User Macro** dialog box. @@ -99,7 +102,7 @@ The property editor for Include Directories is open. The evaluated value is disp ## Add an include directory to the set of default directories -When you add an include directory to a project, it's important not to override all the default directories. The correct way to add a directory is to append the new path, for example "`C:\MyNewIncludeDir\`", and then to Append the **`$(IncludePath)`** macro to the property value. +When you add an include directory to a project, it's important not to override all the default directories. The correct way to add a directory is to append the new path, for example `C:\MyNewIncludeDir\`, and then to append the `$(IncludePath)` macro to the property value. ## Quickly browse and search all properties @@ -109,7 +112,7 @@ No prefix:\ Search in property names only (case-insensitive substring). '`/`' or '`-`':\ -Search only in compiler switches (case-insensitive prefix) +Search only in compiler switches (case-insensitive prefix). `v`:\ Search only in values (case-insensitive substring). @@ -124,19 +127,8 @@ In the left pane of the project's **Property Pages** dialog box, expand **Config In the right pane, modify the **Environment** or **Merge Environment** project settings and then choose the **OK** button. -## In this section - -[Share or reuse Visual Studio project settings](create-reusable-property-configurations.md)\ -How to create a *`.props`* file with custom build settings that can be shared or reused. - -[Project property inheritance](project-property-inheritance.md)\ -Describes the order of evaluation for the *`.props`*, *`.targets`*, *`.vcxproj`* files, and environment variables in the build process. - -[Modify properties and targets without changing the project file](modify-project-properties-without-changing-project-file.md)\ -How to create temporary build settings without having to modify a project file. - -## See also +## Related content -[Visual Studio Projects - C++](creating-and-managing-visual-cpp-projects.md)\ -[`.vcxproj` and `.props` file structure](reference/vcxproj-file-structure.md)\ -[Property page XML files](reference/property-page-xml-files.md) +- [Share or reuse Visual Studio project settings](create-reusable-property-configurations.md) +- [Property inheritance in Visual Studio projects](project-property-inheritance.md) +- [Modify C++ project properties and targets without changing the project file](modify-project-properties-without-changing-project-file.md) diff --git a/docs/build/x64-calling-convention.md b/docs/build/x64-calling-convention.md index 54418166c49..fb434a6b5b1 100644 --- a/docs/build/x64-calling-convention.md +++ b/docs/build/x64-calling-convention.md @@ -1,21 +1,22 @@ --- title: "x64 calling convention" -description: "Learn about the details of the default x64 calling convention." -ms.date: 05/17/2022 +description: "Learn about the default x64 calling convention that one function uses to make calls into another function." +ms.date: 03/19/2025 +ms.topic: concept-article --- # x64 calling convention -This section describes the standard processes and conventions that one function (the caller) uses to make calls into another function (the callee) in x64 code. +This article describes the standard processes and conventions that one function (the caller) uses to make calls into another function (the callee) in x64 code. -For more information on the `__vectorcall` calling convention, see [__vectorcall](../cpp/vectorcall.md). +For more information about the `__vectorcall` calling convention, see [__vectorcall](../cpp/vectorcall.md). ## Calling convention defaults -The x64 Application Binary Interface (ABI) uses a four-register fast-call calling convention by default. Space is allocated on the call stack as a shadow store for callees to save those registers. +The x64 Application Binary Interface (ABI) uses a four-register, fast-call calling convention by default. Space is allocated on the call stack as a shadow store for callees to save those registers. There's a strict one-to-one correspondence between a function call's arguments and the registers used for those arguments. Any argument that doesn't fit in 8 bytes, or isn't 1, 2, 4, or 8 bytes, must be passed by reference. A single argument is never spread across multiple registers. -The x87 register stack is unused. It may be used by the callee, but consider it volatile across function calls. All floating point operations are done using the 16 XMM registers. +The x87 register stack is unused. It might be used by the callee, but consider it volatile across function calls. All floating point operations are done using the 16 XMM registers. Integer arguments are passed in registers RCX, RDX, R8, and R9. Floating point arguments are passed in XMM0L, XMM1L, XMM2L, and XMM3L. 16-byte arguments are passed by reference. Parameter passing is described in detail in [Parameter passing](#parameter-passing). These registers, and RAX, R10, R11, XMM4, and XMM5, are considered *volatile*, or potentially changed by a callee on return. Register usage is documented in detail in [x64 register usage](x64-software-conventions.md#x64-register-usage) and [Caller/callee saved registers](#callercallee-saved-registers). @@ -27,7 +28,7 @@ Most structures are aligned to their natural alignment. The primary exceptions a ## Unwindability -Leaf functions are functions that don't change any non-volatile registers. A non-leaf function may change non-volatile RSP, for example, by calling a function. Or, it could change RSP by allocating additional stack space for local variables. To recover non-volatile registers when an exception is handled, non-leaf functions are annotated with static data. The data describes how to properly unwind the function at an arbitrary instruction. This data is stored as *pdata*, or procedure data, which in turn refers to *xdata*, the exception handling data. The xdata contains the unwinding information, and can point to additional pdata or an exception handler function. +Leaf functions are functions that don't change any nonvolatile registers. A nonleaf function might change nonvolatile RSP, for example, by calling a function. Or, it could change RSP by allocating more stack space for local variables. To recover nonvolatile registers when an exception is handled, nonleaf functions are annotated with static data. The data describes how to properly unwind the function at an arbitrary instruction. This data is stored as *pdata*, or procedure data, which in turn refers to *xdata*, the exception handling data. The xdata contains the unwinding information, and can point to additional pdata or an exception handler function. Prologs and epilogs are highly restricted so that they can be properly described in xdata. The stack pointer must remain 16-byte aligned in any region of code that isn't part of an epilog or prolog, except within leaf functions. Leaf functions can be unwound simply by simulating a return, so pdata and xdata aren't required. For details about the proper structure of function prologs and epilogs, see [x64 prolog and epilog](../build/prolog-and-epilog.md). For more information about exception handling, and the exception handling and unwinding of pdata and xdata, see [x64 exception handling](../build/exception-handling-x64.md). @@ -101,9 +102,9 @@ func2() { // RCX = 2, RDX = XMM1 = 1.0, and R8 = 7 ## Return values -A scalar return value that can fit into 64 bits, including the **`__m64`** type, is returned through RAX. Non-scalar types including floats, doubles, and vector types such as [`__m128`](../cpp/m128.md), [`__m128i`](../cpp/m128i.md), [`__m128d`](../cpp/m128d.md) are returned in XMM0. The state of unused bits in the value returned in RAX or XMM0 is undefined. +A scalar return value that can fit into 64 bits, including the `__m64` type, is returned through RAX. Nonscalar types including floats, doubles, and vector types such as [`__m128`](../cpp/m128.md), [`__m128i`](../cpp/m128i.md), [`__m128d`](../cpp/m128d.md) are returned in XMM0. The state of unused bits in the value returned in RAX or XMM0 is undefined. -User-defined types can be returned by value from global functions and static member functions. To return a user-defined type by value in RAX, it must have a length of 1, 2, 4, 8, 16, 32, or 64 bits. It must also have no user-defined constructor, destructor, or copy assignment operator. It can have no private or protected non-static data members, and no non-static data members of reference type. It can't have base classes or virtual functions. And, it can only have data members that also meet these requirements. (This definition is essentially the same as a C++03 POD type. Because the definition has changed in the C++11 standard, we don't recommend using `std::is_pod` for this test.) Otherwise, the caller must allocate memory for the return value and pass a pointer to it as the first argument. The remaining arguments are then shifted one argument to the right. The same pointer must be returned by the callee in RAX. +User-defined types can be returned by value from global functions and static member functions. To return a user-defined type by value in RAX, it must have a length of 1, 2, 4, 8, 16, 32, or 64 bits. It must also have no user-defined constructor, destructor, or copy assignment operator. It can have no private or protected nonstatic data members, and no nonstatic data members of reference type. It can't have base classes or virtual functions. And, it can only have data members that also meet these requirements. This definition is essentially the same as a C++03 POD type. Because the definition has changed in the C++11 standard, we don't recommend using `std::is_pod` for this test. Otherwise, the caller must allocate memory for the return value and pass a pointer to it as the first argument. The remaining arguments are then shifted one argument to the right. The same pointer must be returned by the callee in RAX. These examples show how parameters and return values are passed for functions with the specified declarations: @@ -168,7 +169,7 @@ The x87 FPU control word register gets set using the following standard values a | Register\[bits] | Setting | |-|-| -| FPCSR\[0:6] | Exception masks all 1's (all exceptions masked) | +| FPCSR\[0:6] | Exception masks all 1s (all exceptions masked) | | FPCSR\[7] | Reserved - 0 | | FPCSR\[8:9] | Precision Control - 10B (double precision) | | FPCSR\[10:11] | Rounding control - 0 (round to nearest) | @@ -176,7 +177,7 @@ The x87 FPU control word register gets set using the following standard values a A callee that modifies any of the fields within FPCSR must restore them before returning to its caller. Furthermore, a caller that has modified any of these fields must restore them to their standard values before invoking a callee, unless by agreement the callee expects the modified values. -There are two exceptions to the rules about the non-volatility of the control flags: +There are two exceptions to the rules about the nonvolatility of the control flags: - In functions where the documented purpose of the given function is to modify the nonvolatile FPCSR flags. @@ -191,13 +192,13 @@ The nonvolatile portion is set to the following standard values at the start of | Register\[bits] | Setting | |-|-| | MXCSR\[6] | Denormals are zeros - 0 | -| MXCSR\[7:12] | Exception masks all 1's (all exceptions masked) | +| MXCSR\[7:12] | Exception masks all 1s (all exceptions masked) | | MXCSR\[13:14] | Rounding control - 0 (round to nearest) | | MXCSR\[15] | Flush to zero for masked underflow - 0 (off) | A callee that modifies any of the nonvolatile fields within MXCSR must restore them before returning to its caller. Furthermore, a caller that has modified any of these fields must restore them to their standard values before invoking a callee, unless by agreement the callee expects the modified values. -There are two exceptions to the rules about the non-volatility of the control flags: +There are two exceptions to the rules about the nonvolatility of the control flags: - In functions where the documented purpose of the given function is to modify the nonvolatile MXCSR flags. @@ -207,10 +208,10 @@ Make no assumptions about the MXCSR register's volatile portion state across a f ## setjmp/longjmp -When you include setjmpex.h or setjmp.h, all calls to [`setjmp`](../c-runtime-library/reference/setjmp.md) or [`longjmp`](../c-runtime-library/reference/longjmp.md) result in an unwind that invokes destructors and **`__finally`** calls. This behavior differs from x86, where including setjmp.h results in **`__finally`** clauses and destructors not being invoked. +When you include `setjmpex.h` or `setjmp.h`, all calls to [`setjmp`](../c-runtime-library/reference/setjmp.md) or [`longjmp`](../c-runtime-library/reference/longjmp.md) result in an unwind that invokes destructors and `__finally` calls. This behavior differs from x86, where including `setjmp.h` results in `__finally` clauses and destructors not being invoked. -A call to `setjmp` preserves the current stack pointer, non-volatile registers, and MXCSR registers. Calls to `longjmp` return to the most recent `setjmp` call site and resets the stack pointer, non-volatile registers, and MXCSR registers, back to the state as preserved by the most recent `setjmp` call. +A call to `setjmp` preserves the current stack pointer, nonvolatile registers, and MXCSR registers. Calls to `longjmp` return to the most recent `setjmp` call site and resets the stack pointer, nonvolatile registers, and MXCSR registers, back to the state as preserved by the most recent `setjmp` call. -## See also +## Related content -[x64 software conventions](../build/x64-software-conventions.md) +- [Overview of x64 ABI conventions](../build/x64-software-conventions.md) From 39b18f9d470d6e5c435faeecb3a92201e762ee42 Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Wed, 19 Mar 2025 22:44:07 -0700 Subject: [PATCH 0299/2255] Revert code style for files --- docs/build/cmake-projects-in-visual-studio.md | 112 +++++++++--------- docs/build/vscpp-step-0-installation.md | 7 +- 2 files changed, 61 insertions(+), 58 deletions(-) diff --git a/docs/build/cmake-projects-in-visual-studio.md b/docs/build/cmake-projects-in-visual-studio.md index d136d227d14..c8d8af1d316 100644 --- a/docs/build/cmake-projects-in-visual-studio.md +++ b/docs/build/cmake-projects-in-visual-studio.md @@ -14,7 +14,7 @@ f1_keywords: ["VS.ToolsOptionsPages.CMake.General", "VS.ToolsOptionsPages.CMake. ::: moniker range=">=msvc-160" -Visual Studio's native support for CMake allows you to edit, build, and debug CMake projects on Windows, the Windows Subsystem for Linux (WSL), and remote systems from the same instance of Visual Studio. CMake project files (such as *CMakeLists.txt*) are consumed directly by Visual Studio for the purposes of IntelliSense and browsing. Visual Studio invokes *cmake.exe* directly for CMake configuration and build. +Visual Studio's native support for CMake allows you to edit, build, and debug CMake projects on Windows, the Windows Subsystem for Linux (WSL), and remote systems from the same instance of Visual Studio. CMake project files (such as *`CMakeLists.txt`*) are consumed directly by Visual Studio for the purposes of IntelliSense and browsing. Visual Studio invokes `cmake.exe` directly for CMake configuration and build. ## Installation @@ -28,7 +28,7 @@ For more information, see [Install the C++ Linux workload in Visual Studio](../l ## IDE integration -When you **open a folder** containing a *CMakeLists.txt* file, the following things happen. +When you **open a folder** containing a *`CMakeLists.txt`* file, the following things happen. :::image type="complex" source="media/start-window.png" alt-text="Screenshot of the first dialog that opens when Visual Studio is started."::: The dialog offers these options: clone a repository, open a project or solution, open a local folder, or create a new project. Open a local folder is called out in the screenshot. @@ -38,12 +38,12 @@ The dialog offers these options: clone a repository, open a project or solution, - The **Solution Explorer** displays the folder structure and files. -- Visual Studio runs CMake and generates the CMake cache file (*CMakeCache.txt*) for the default configuration. The CMake command line is displayed in the **Output Window**, along with other output from CMake. +- Visual Studio runs CMake and generates the CMake cache file (*`CMakeCache.txt`*) for the default configuration. The CMake command line is displayed in the **Output Window**, along with other output from CMake. - In the background, Visual Studio starts to index the source files to enable IntelliSense, browsing information, refactoring, and so on. As you work, Visual Studio monitors changes in the editor and also on disk to keep its index in sync with the sources. > [!NOTE] -> Starting in Visual Studio 2022 version 17.1 Preview 2, if your top-level *CMakeLists.txt* exists in a subfolder and not at the root of the workspace, you're prompted whether you'd like to enable CMake integration or not. For more information, see [CMake partial activation](#cmake-partial-activation). +> Starting in Visual Studio 2022 version 17.1 Preview 2, if your top-level *`CMakeLists.txt`* exists in a subfolder and not at the root of the workspace, you're prompted whether you'd like to enable CMake integration or not. For more information, see [CMake partial activation](#cmake-partial-activation). Once CMake cache generation has succeeded, you can also view your projects organized logically by targets. Choose the **Select View** button on the **Solution Explorer** toolbar. From the list in **Solution Explorer - Views**, select **CMake Targets View** and press **Enter** to open the targets view: @@ -51,11 +51,11 @@ Once CMake cache generation has succeeded, you can also view your projects organ Choose the **Show All Files** button at the top of **Solution Explorer** to see all the CMake-generated output in the *`out/build/`* folders. -Use the *CMakeLists.txt* file in each project folder just as you would in any CMake project. You can specify source files, find libraries, set compiler and linker options, and specify other build system-related information. For more information on CMake language services provided by Visual Studio, see [Editing CMakeLists.txt files](#editing-cmakeliststxt-files). +Use the *`CMakeLists.txt`* file in each project folder just as you would in any CMake project. You can specify source files, find libraries, set compiler and linker options, and specify other build system-related information. For more information on CMake language services provided by Visual Studio, see [Editing CMakeLists.txt files](#editing-cmakeliststxt-files). Visual Studio uses a CMake configuration file to drive CMake cache generation and build. For more information, see [Configuring CMake projects](#configuring-cmake-projects) and [Building CMake projects](#building-cmake-projects). -To pass arguments to an executable at debug time, you can use another file called *launch.vs.json*. For more information on debugging cross-platform CMake projects in Visual Studio, see [Debugging CMake projects](#debugging-cmake-projects). +To pass arguments to an executable at debug time, you can use another file called *`launch.vs.json`*. For more information on debugging cross-platform CMake projects in Visual Studio, see [Debugging CMake projects](#debugging-cmake-projects). Most Visual Studio and C++ language features are supported by CMake projects in Visual Studio. Examples include: @@ -65,15 +65,15 @@ Most Visual Studio and C++ language features are supported by CMake projects in - [Clang/LLVM support](https://devblogs.microsoft.com/cppblog/clang-llvm-support-in-visual-studio/) > [!NOTE] -> For other kinds of Open Folder projects, an additional JSON file *CppProperties.json* is used. This file isn't relevant for CMake projects. +> For other kinds of Open Folder projects, an additional JSON file *`CppProperties.json`* is used. This file isn't relevant for CMake projects. ## Configuring CMake projects -The CMake configure step generates the project build system. It's equivalent to invoking *cmake.exe* from the command line. For more information on the CMake configure step, see the [CMake documentation](https://cmake.org/cmake/help/latest/manual/cmake.1.html#generate-a-project-buildsystem). +The CMake configure step generates the project build system. It's equivalent to invoking *`cmake.exe`* from the command line. For more information on the CMake configure step, see the [CMake documentation](https://cmake.org/cmake/help/latest/manual/cmake.1.html#generate-a-project-buildsystem). -Visual Studio uses a CMake configuration file to drive CMake generation and build. *CMakePresets.json* is supported by Visual Studio 2019 version 16.10 or later and is the recommended CMake configuration file. *CMakePresets.json* is supported directly by CMake and can be used to drive CMake generation and build from Visual Studio, from VS Code, in a continuous integration pipeline, and from the command line on Windows, Linux, and Mac. For more information on *CMakePresets.json*, see [Configure and build with CMake Presets](cmake-presets-vs.md). *CMakeSettings.json* is available for customers using an earlier version of Visual Studio. For more information on *CMakeSettings.json*, see [Customize CMake build settings](customize-cmake-settings.md). +Visual Studio uses a CMake configuration file to drive CMake generation and build. *`CMakePresets.json`* is supported by Visual Studio 2019 version 16.10 or later and is the recommended CMake configuration file. *`CMakePresets.json`* is supported directly by CMake and can be used to drive CMake generation and build from Visual Studio, from VS Code, in a continuous integration pipeline, and from the command line on Windows, Linux, and Mac. For more information on *`CMakePresets.json`*, see [Configure and build with CMake Presets](cmake-presets-vs.md). *`CMakeSettings.json`* is available for customers using an earlier version of Visual Studio. For more information on *`CMakeSettings.json`*, see [Customize CMake build settings](customize-cmake-settings.md). -When you make significant changes to your CMake configuration file or a *CMakeLists.txt* file, Visual Studio automatically runs the CMake configure step. You can invoke the configure step manually: Select **Project > Configure Cache** from the toolbar. You can also change your configuration preferences in **Tools** > **Options** > **CMake** > **General**. +When you make significant changes to your CMake configuration file or a *`CMakeLists.txt`* file, Visual Studio automatically runs the CMake configure step. You can invoke the configure step manually: Select **Project > Configure Cache** from the toolbar. You can also change your configuration preferences in **Tools** > **Options** > **CMake** > **General**. :::image type="complex" source="media/cmake-configure-options.png" alt-text="Screenshot of the C Make configuration options in the Visual Studio settings window."::: The C Make configure settings are called out. Show C Make cache notifications is selected. Under 'When cache is out of date', the option 'Never run configure step automatically' is selected. @@ -97,9 +97,9 @@ You can enable the use of these source groups by selecting **Tools** > **Options ### Troubleshooting CMake cache errors -If you need more information about the state of the CMake cache to diagnose a problem, open the **Project** main menu or the *CMakeLists.txt* context menu in **Solution Explorer** to run one of these commands: +If you need more information about the state of the CMake cache to diagnose a problem, open the **Project** main menu or the *`CMakeLists.txt`* context menu in **Solution Explorer** to run one of these commands: -- **View CMakeCache.txt** opens the *CMakeCache.txt* file from the build directory in the editor. Any edits you make here to *CMakeCache.txt* are wiped out if you clean the cache. To make changes that persist after you clean the cache, see [Customize CMake settings](customize-cmake-settings.md) or [Configure and build with CMake Presets](cmake-presets-vs.md). +- **View CMakeCache.txt** opens the *`CMakeCache.txt`* file from the build directory in the editor. Any edits you make here to *`CMakeCache.txt`* are wiped out if you clean the cache. To make changes that persist after you clean the cache, see [Customize CMake settings](customize-cmake-settings.md) or [Configure and build with CMake Presets](cmake-presets-vs.md). - **Delete Cache and Reconfigure** deletes the build directory and reconfigures from a clean cache. @@ -125,7 +125,7 @@ C Make build warnings about conversions that might result in data loss such as c ### Edit build settings -Visual Studio uses a CMake configuration file to drive CMake builds. CMake configuration files encapsulate build options like native build tool switches and environment variables. If *CMakePresets.json* is your active configuration file, see [Configure and build with CMake Presets](cmake-presets-vs.md#configure-and-build). If *CMakeSettings.json* is your active configuration file, see [Customize CMake build settings](customize-cmake-settings.md). *CMakePresets.json* is available in Visual Studio 2019 version 16.10 or later and is the recommended CMake configuration file. +Visual Studio uses a CMake configuration file to drive CMake builds. CMake configuration files encapsulate build options like native build tool switches and environment variables. If *`CMakePresets.json`* is your active configuration file, see [Configure and build with CMake Presets](cmake-presets-vs.md#configure-and-build). If *`CMakeSettings.json`* is your active configuration file, see [Customize CMake build settings](customize-cmake-settings.md). *`CMakePresets.json`* is available in Visual Studio 2019 version 16.10 or later and is the recommended CMake configuration file. ## Debugging CMake projects @@ -135,9 +135,9 @@ All executable CMake targets are shown in the **Startup Item** dropdown in the t The dropdown has these options: Show / Hide debug targets, current document, samples (which is highlighted), box2d_tests, and samples-noGUI. :::image-end::: -The **Debug** or **F5** commands first build the project if changes have been made since the previous build. Changes to the CMake configuration file (*CMakePresets.json* or *CMakeSettings.json*) or a *CMakeLists.txt* causes the CMake cache to be regenerated. +The **Debug** or **F5** commands first build the project if changes have been made since the previous build. Changes to the CMake configuration file (*`CMakePresets.json`* or *`CMakeSettings.json`*) or a *`CMakeLists.txt`* causes the CMake cache to be regenerated. -You can customize a CMake debugging session by setting properties in the *launch.vs.json* file. To customize debug settings for a specific target, select the target in the **Startup Item** dropdown and choose **Debug > Debug and Launch Settings for \**. For more information on CMake debugging sessions, see [Configure CMake debugging sessions](configure-cmake-debugging-sessions.md). +You can customize a CMake debugging session by setting properties in the *`launch.vs.json`* file. To customize debug settings for a specific target, select the target in the **Startup Item** dropdown and choose **Debug > Debug and Launch Settings for \**. For more information on CMake debugging sessions, see [Configure CMake debugging sessions](configure-cmake-debugging-sessions.md). ### Just My Code for CMake projects @@ -145,7 +145,7 @@ When you build for Windows using the MSVC compiler, CMake projects have support ### Edit and Continue for CMake projects -When you build for Windows with the MSVC compiler, CMake projects have support for Edit and Continue. Add the following code to your *CMakeLists.txt* file to enable Edit and Continue. +When you build for Windows with the MSVC compiler, CMake projects have support for Edit and Continue. Add the following code to your *`CMakeLists.txt`* file to enable Edit and Continue. ``` if(MSVC) @@ -166,20 +166,20 @@ The following options are available on the dialog: Connection type (set to SSH), ## CMake partial activation -In Visual Studio 2022 version 17.1 and later, CMake functionality isn't enabled automatically if your root folder doesn't contain a *CMakeLists.txt* file. Instead, a dialog prompts you on whether you'd like to enable CMake functionality for your project. If you decline, CMake cache generation doesn't start and CMake configurations (from *CMakeSettings.json* or *CMakePresets.json*) doesn't appear in the configuration dropdown. If you accept, you're taken to a workspace-level configuration file, *CMakeWorkspaceSettings.json* (stored in the *.vs* directory), to specify the folders you'd like to enable CMake for. (These folders contain your root *CMakeLists.txt* files). +In Visual Studio 2022 version 17.1 and later, CMake functionality isn't enabled automatically if your root folder doesn't contain a *`CMakeLists.txt`* file. Instead, a dialog prompts you on whether you'd like to enable CMake functionality for your project. If you decline, CMake cache generation doesn't start and CMake configurations (from *`CMakeSettings.json`* or *`CMakePresets.json`*) doesn't appear in the configuration dropdown. If you accept, you're taken to a workspace-level configuration file, *`CMakeWorkspaceSettings.json`* (stored in the *`.vs`* directory), to specify the folders you'd like to enable CMake for. (These folders contain your root *`CMakeLists.txt`* files). The accepted properties are: | Property | Description | |--|--| | `enableCMake` | Enable Visual Studio's integration for this workspace. | -| `sourceDirectory` | A string or array of strings specifying the directory or directories with *CMakeLists.txt*. Macros (such as `${workspaceRoot}`) are allowed. Relative paths are based on the workspace root. Directories outside of the current workspace are ignored. | +| `sourceDirectory` | A string or array of strings specifying the directory or directories with *`CMakeLists.txt`*. Macros (such as `${workspaceRoot}`) are allowed. Relative paths are based on the workspace root. Directories outside of the current workspace are ignored. | -You can reach *CMakeWorkspaceSettings.json* through the **Project** > **CMake Workspace Settings** menu command at any time, even if CMake functionality is currently disabled. +You can reach *`CMakeWorkspaceSettings.json`* through the **Project** > **CMake Workspace Settings** menu command at any time, even if CMake functionality is currently disabled. ## Open an existing cache -When you open an existing CMake cache file (*CMakeCache.txt*), Visual Studio doesn't try to manage your cache and build tree for you. Your custom or preferred tools have complete control over how CMake configures your project. +When you open an existing CMake cache file (*`CMakeCache.txt`*), Visual Studio doesn't try to manage your cache and build tree for you. Your custom or preferred tools have complete control over how CMake configures your project. You can add an existing CMake cache to an open project. It's done the same way you'd add a new configuration. For more information, see our blog post on [opening an existing cache in Visual Studio](https://devblogs.microsoft.com/cppblog/open-existing-cmake-caches-in-visual-studio/). @@ -194,23 +194,23 @@ You can add an existing CMake cache to an open project. It's done the same way y Visual Studio uses the CMake [file-based API](https://cmake.org/cmake/help/latest/manual/cmake-file-api.7.html) (in versions 3.14 and later) to populate the editor with information specific to your project structure. For more information, see the C++ team blog post on [multi-root workspaces and file-based API](https://devblogs.microsoft.com/cppblog/visual-studio-code-cmake-tools-extension-multi-root-workspaces-and-file-based-api/). -Before generating the CMake cache, your custom or preferred tools might need to create a query file named *.cmake/api/v1/query/client-MicrosoftVS/query.json* in your build output folder (the folder that contains *CMakeCache.txt*). The query file should contain this content: +Before generating the CMake cache, your custom or preferred tools might need to create a query file named *`.cmake/api/v1/query/client-MicrosoftVS/query.json`* in your build output folder (the folder that contains *`CMakeCache.txt`*). The query file should contain this content: ```json {"requests":[{"kind":"cache","version":2},{"kind":"cmakeFiles","version":1},{"kind":"codemodel","version":2}]} ``` -When your custom or preferred tools generate your cache, CMake places files under *.cmake/api/v1/response* that Visual Studio uses to populate the editor with information specific to your project structure. +When your custom or preferred tools generate your cache, CMake places files under *`.cmake/api/v1/response`* that Visual Studio uses to populate the editor with information specific to your project structure. -## Editing *CMakeLists.txt* files +## Editing *`CMakeLists.txt`* files -To edit a *CMakeLists.txt* file, right-click on the file in **Solution Explorer** and choose **Open**. If you make changes to the file, a yellow status bar appears and informs you that IntelliSense will update. It gives you a chance to cancel the update operation. For information about *CMakeLists.txt*, see the [CMake documentation](https://cmake.org/documentation/). +To edit a *`CMakeLists.txt`* file, right-click on the file in **Solution Explorer** and choose **Open**. If you make changes to the file, a yellow status bar appears and informs you that IntelliSense will update. It gives you a chance to cancel the update operation. For information about *`CMakeLists.txt`*, see the [CMake documentation](https://cmake.org/documentation/). :::image type="complex" source="media/cmake-cmakelists.png" alt-text="Screenshot of a C Make Lists TXT file being edited in Visual Studio." It contains the lines project (hello-cmake), add_subdirectory (tests), add_executable (hello hello.cpp), and install (TARGETS hello DESTINATION hello/bin). A message at the top of the window says that c plus plus IntelliSense info will refresh after C Make finishes generating the cache. :::image-end::: -As soon as you save the file, the configuration step automatically runs again and displays information in the **Output** window. Errors and warnings are shown in the **Error List** or **Output** window. Double-click on an error in the **Error List** to navigate to the offending line in *CMakeLists.txt*. +As soon as you save the file, the configuration step automatically runs again and displays information in the **Output** window. Errors and warnings are shown in the **Error List** or **Output** window. Double-click on an error in the **Error List** to navigate to the offending line in *`CMakeLists.txt`*. :::image type="complex" source="media/cmake-cmakelists-error.png" alt-text="Screenshot of a C Make error in the Visual Studio error list."::: A C Make error message on line 3 of CMakeLists.txt is highlighted. The details are that C Make couldn't find a package configuration file provided by sqlite3. C Make looked for it in CMAKE_MODULE_PATH but couldn't find it. The suggestion is to add the installation prefix 'sqlite3' to CMAKE_PREFIX_PATH or set sqlite3_DIR to a directory containing sqlite3Config.cmake and/or sqlitet3-config.cmake. @@ -236,9 +236,9 @@ A tree view shows CMakeLists.txt, under which are two items: add_executable and By default, Visual Studio uses the IntelliSense mode that matches the compiler and target architecture specified by the active CMake configuration. -If *CMakePresets.json* is your active CMake configuration file, then you can specify IntelliSense options using `intelliSenseMode` and `intelliSenseOptions` in the Visual Studio Settings vendor map. For more information, see the [Visual Studio Settings vendor map reference](cmake-presets-json-reference.md#visual-studio-settings-vendor-map). +If *`CMakePresets.json`* is your active CMake configuration file, then you can specify IntelliSense options using `intelliSenseMode` and `intelliSenseOptions` in the Visual Studio Settings vendor map. For more information, see the [Visual Studio Settings vendor map reference](cmake-presets-json-reference.md#visual-studio-settings-vendor-map). -If *CMakeSettings.json* is your active CMake configuration file, then you can specify IntelliSense options using `intelliSenseMode` in *CMakeSettings.json*. For more information, see the [CMakeSettings.json reference](cmakesettings-reference.md). +If *`CMakeSettings.json`* is your active CMake configuration file, then you can specify IntelliSense options using `intelliSenseMode` in *`CMakeSettings.json`*. For more information, see the [`CMakeSettings.json` reference](cmakesettings-reference.md). ### Configure IntelliSense with CMake toolchain files @@ -251,17 +251,17 @@ CMake projects opened in Visual Studio integrate with vcpkg, a cross-platform C/ - [Install and use packages with CMake in Visual Studio](/vcpkg/get_started/get-started-vs) - [vcpkg in CMake projects](/vcpkg/users/buildsystems/cmake-integration) -If *CMakeSettings.json* is your active configuration file, Visual Studio automatically passes the vcpkg toolchain file (`vcpkg.cmake`) to CMake. This behavior is disabled automatically when you specify any other toolchain in your CMake Settings configuration. +If *`CMakeSettings.json`* is your active configuration file, Visual Studio automatically passes the vcpkg toolchain file (`vcpkg.cmake`) to CMake. This behavior is disabled automatically when you specify any other toolchain in your CMake Settings configuration. -If *CMakePresets.json* is your active configuration file, you need to set the path to `vcpkg.cmake` in *CMakePresets.json*. We recommend using the `VCPKG_ROOT` environment variable instead of an absolute path to keep the file shareable. For more information, see [Enable vcpkg integration with CMake Presets](cmake-presets-vs.md#enable-vcpkg-integration). *CMakePresets.json* is available in Visual Studio 2019 version 16.10 or later and is the recommended CMake configuration file. +If *`CMakePresets.json`* is your active configuration file, you need to set the path to `vcpkg.cmake` in *`CMakePresets.json`*. We recommend using the `VCPKG_ROOT` environment variable instead of an absolute path to keep the file shareable. For more information, see [Enable vcpkg integration with CMake Presets](cmake-presets-vs.md#enable-vcpkg-integration). *`CMakePresets.json`* is available in Visual Studio 2019 version 16.10 or later and is the recommended CMake configuration file. ## Run CMake from the command line -If *CMakePresets.json* is your active CMake configuration file, then you can easily reproduce your local builds outside of Visual Studio. For more information, see [Run CMake from the command line or a CI pipeline](cmake-presets-vs.md#run-cmake-from-the-command-line-or-a-ci-pipeline). *CMakePresets.json* is supported in Visual Studio 2019 version 16.10 or later and is the recommended CMake configuration file. +If *`CMakePresets.json`* is your active CMake configuration file, then you can easily reproduce your local builds outside of Visual Studio. For more information, see [Run CMake from the command line or a CI pipeline](cmake-presets-vs.md#run-cmake-from-the-command-line-or-a-ci-pipeline). *`CMakePresets.json`* is supported in Visual Studio 2019 version 16.10 or later and is the recommended CMake configuration file. -If *CMakeSettings.json* is your active CMake configuration file, then you need to manually pass the arguments that are encoded in your *CMakeSettings.json* file to CMake. If you installed CMake from the Visual Studio Installer, you can run it from the command line by following these steps: +If *`CMakeSettings.json`* is your active CMake configuration file, then you need to manually pass the arguments that are encoded in your *`CMakeSettings.json`* file to CMake. If you installed CMake from the Visual Studio Installer, you can run it from the command line by following these steps: -1. Run the appropriate *vsdevcmd.bat* file (x86/x64). For more information, see [Use the Microsoft C++ toolset from the command line](building-on-the-command-line.md) . +1. Run the appropriate *`vsdevcmd.bat`* file (x86/x64). For more information, see [Use the Microsoft C++ toolset from the command line](building-on-the-command-line.md) . 1. Switch to your output folder. @@ -271,7 +271,7 @@ If *CMakeSettings.json* is your active CMake configuration file, then you need t ::: moniker range="msvc-150" -Visual Studio 2017 has rich support for CMake, including [cross-platform CMake projects](../linux/cmake-linux-project.md). The **Visual C++ Tools for CMake** component uses the **Open Folder** feature to enable the IDE to consume CMake project files (such as *CMakeLists.txt*) directly for the purposes of IntelliSense and browsing. Both Ninja and Visual Studio generators are supported. If you use a Visual Studio generator, it generates a temporary project file and passes it to MSBuild. However, the project is never loaded for IntelliSense or browsing purposes. You also can import an existing CMake cache. +Visual Studio 2017 has rich support for CMake, including [cross-platform CMake projects](../linux/cmake-linux-project.md). The **Visual C++ Tools for CMake** component uses the **Open Folder** feature to enable the IDE to consume CMake project files (such as *`CMakeLists.txt`*) directly for the purposes of IntelliSense and browsing. Both Ninja and Visual Studio generators are supported. If you use a Visual Studio generator, it generates a temporary project file and passes it to MSBuild. However, the project is never loaded for IntelliSense or browsing purposes. You also can import an existing CMake cache. ## Installation @@ -283,7 +283,7 @@ For more information, see [Install the C++ Linux workload in Visual Studio](../l ## IDE integration -When you choose **File > Open > Folder** to open a folder containing a *CMakeLists.txt* file, the following happens: +When you choose **File > Open > Folder** to open a folder containing a *`CMakeLists.txt`* file, the following happens: - Visual Studio adds a **CMake** menu item to the main menu, with commands for viewing and editing CMake scripts. @@ -293,7 +293,7 @@ When you choose **File > Open > Folder** to open a folder containing a *CMakeLis - In the background, Visual Studio starts to index the source files to enable IntelliSense, browsing information, refactoring, and so on. As you work, Visual Studio monitors changes in the editor and also on disk to keep its index in sync with the sources. -You can open folders containing any number of CMake projects. Visual Studio detects and configures all the *root* *CMakeLists.txt* files in your workspace. CMake operations (configure, build, debug), C++ IntelliSense, and browsing are available to all CMake projects in your workspace. +You can open folders containing any number of CMake projects. Visual Studio detects and configures all the *root* *`CMakeLists.txt`* files in your workspace. CMake operations (configure, build, debug), C++ IntelliSense, and browsing are available to all CMake projects in your workspace. :::image type="complex" source="media/cmake-multiple-roots.png" alt-text="Screenshot of the Visual Studio Solution Explorer."::: The files and folders of a C Make project are visible. There's a tests subdirectory, CMakeLists.txt, and hello.cpp. There's a hello-cmake-vcpkg folder that contains CMakeLists.txt, CMakeSettings.json, and hello.cpp. @@ -303,18 +303,18 @@ You can also view your projects organized logically by targets. Choose **Targets :::image type="content" source="media/cmake-targets-view.png" alt-text="Screenshot of the dropdown button in the Visual Studio Solution Explorer that offers the CMake targets view option. Which is selected."::: -Visual Studio uses a file called *CMakeSettings.json* to store environment variables or command-line options for CMake. *CMakeSettings.json* also lets you define and store multiple CMake build configurations. You can conveniently switch between them in the IDE. +Visual Studio uses a file called *`CMakeSettings.json`* to store environment variables or command-line options for CMake. *`CMakeSettings.json`* also lets you define and store multiple CMake build configurations. You can conveniently switch between them in the IDE. -Otherwise, use the *CMakeLists.txt* just as you would in any CMake project to specify source files, find libraries, set compiler and linker options, and specify other build system-related information. +Otherwise, use the *`CMakeLists.txt`* just as you would in any CMake project to specify source files, find libraries, set compiler and linker options, and specify other build system-related information. -If you need to pass arguments to an executable at debug time, you can use another file called *launch.vs.json*. In some scenarios, Visual Studio automatically generates these files. You can edit them manually, or even create the file yourself. +If you need to pass arguments to an executable at debug time, you can use another file called *`launch.vs.json`*. In some scenarios, Visual Studio automatically generates these files. You can edit them manually, or even create the file yourself. > [!NOTE] -> For other kinds of Open Folder projects, two additional JSON files are used: *CppProperties.json* and *tasks.vs.json*. Neither of these are relevant for CMake projects. +> For other kinds of Open Folder projects, two additional JSON files are used: *`CppProperties.json`* and *`tasks.vs.json`*. Neither of these are relevant for CMake projects. ## Import an existing cache -When you import an existing *CMakeCache.txt* file, Visual Studio automatically extracts customized variables and creates a prepopulated *CMakeSettings.json* file based on them. The original cache isn't modified in any way. It can still be used from the command line, or with whatever tool or IDE used to generate it. The new *CMakeSettings.json* file is placed alongside the project's root *CMakeLists.txt*. Visual Studio generates a new cache based the settings file. You can override automatic cache generation in the **Tools > Options > CMake > General** dialog. +When you import an existing *`CMakeCache.txt`* file, Visual Studio automatically extracts customized variables and creates a prepopulated *`CMakeSettings.json`* file based on them. The original cache isn't modified in any way. It can still be used from the command line, or with whatever tool or IDE used to generate it. The new *`CMakeSettings.json`* file is placed alongside the project's root *`CMakeLists.txt`*. Visual Studio generates a new cache based the settings file. You can override automatic cache generation in the **Tools > Options > CMake > General** dialog. Not everything in the cache is imported. Properties such as the generator and the location of the compilers are replaced with defaults that are known to work well with the IDE. @@ -326,11 +326,11 @@ Not everything in the cache is imported. Properties such as the generator and th This command brings up the **Import CMake from Cache** wizard. -2. Navigate to the *CMakeCache.txt* file that you want to import, and then choose **OK**. The **Import CMake Project from Cache** wizard appears: +2. Navigate to the *`CMakeCache.txt`* file that you want to import, and then choose **OK**. The **Import CMake Project from Cache** wizard appears: :::image type="content" source="media/cmake-import-wizard.png" alt-text="Screenshot of the Import C Make Project from Cache wizard. The directory path of the C Make project to import goes in the folder textbox."::: - When the wizard completes, you can see the new *CMakeCache.txt* file in **Solution Explorer** next to the root *CMakeLists.txt* file in your project. + When the wizard completes, you can see the new *`CMakeCache.txt`* file in **Solution Explorer** next to the root *`CMakeLists.txt*` file in your project. ## Building CMake projects @@ -338,15 +338,15 @@ To build a CMake project, you have these choices: 1. In the General toolbar, find the **Configurations** dropdown. It's probably showing *Linux-Debug* or *x64-Debug* by default. Select the preferred configuration and press **F5**, or choose the **Run** (green triangle) button on the toolbar. The project automatically builds first, just like a Visual Studio solution. -1. Right-click on *CMakeLists.txt* in **Solution Explorer** and select **Build** from the context menu. If you have multiple targets in your folder structure, you can choose to build all or only one specific target. +1. Right-click on *`CMakeLists.txt`* in **Solution Explorer** and select **Build** from the context menu. If you have multiple targets in your folder structure, you can choose to build all or only one specific target. 1. From the main menu, select **Build > Build Solution** (**F7** or **Ctrl+Shift+B**). Make sure that a CMake target is already selected in the **Startup Item** dropdown in the **General** toolbar. -:::image type="complex" source="media/cmake-build-menu.png" alt-text="Screenshot of the Visual Studio Solution Explorer after right-clicking C Make Lists."::: +:::image type="complex" source="media/cmake-build-menu.png" alt-text="Screenshot of the Visual Studio Solution Explorer after right-clicking C Make Lists dot t x t."::: The menu has options such as Add, Open, Configure tasks, Build, Clean all, and so on. :::image-end::: -You can customize build configurations, environment variables, command-line arguments, and other settings in the *CMakeSettings.json* file. It lets you make changes without modifying the *CMakeLists.txt* file. For more information, see [Customize CMake build settings](customize-cmake-settings.md). +You can customize build configurations, environment variables, command-line arguments, and other settings in the *`CMakeSettings.json`* file. It lets you make changes without modifying the *`CMakeLists.txt`* file. For more information, see [Customize CMake build settings](customize-cmake-settings.md). As you would expect, build results are shown in the **Output Window** and **Error List**. @@ -354,7 +354,7 @@ As you would expect, build results are shown in the **Output Window** and **Erro C Make build warnings about conversions that might result in data loss such as converting from a float to an integer are visible. :::image-end::: -In a folder with multiple build targets, you can specify which CMake target to build: Choose the **Build** item on the **CMake** menu or the *CMakeLists.txt* context menu to specify the target. If you enter **Ctrl+Shift+B** in a CMake project, it builds the current active document. +In a folder with multiple build targets, you can specify which CMake target to build: Choose the **Build** item on the **CMake** menu or the *`CMakeLists.txt`* context menu to specify the target. If you enter **Ctrl+Shift+B** in a CMake project, it builds the current active document. ## Debugging CMake projects @@ -364,17 +364,17 @@ To debug a CMake project, choose the preferred configuration and press **F5**. O The **Run** or **F5** commands first build the project if changes have been made since the previous build. -You can customize a CMake debugging session by setting properties in the *launch.vs.json* file. For more information, see [Configure CMake debugging sessions](configure-cmake-debugging-sessions.md). +You can customize a CMake debugging session by setting properties in the *`launch.vs.json`* file. For more information, see [Configure CMake debugging sessions](configure-cmake-debugging-sessions.md). -## Editing *CMakeLists.txt* files +## Editing *`CMakeLists.txt`* files -To edit a *CMakeLists.txt* file, right-click on the file in **Solution Explorer** and choose **Open**. If you make changes to the file, a yellow status bar appears and informs you that IntelliSense will update. It gives you a chance to cancel the update operation. For information about *CMakeLists.txt*, see the [CMake documentation](https://cmake.org/documentation/). +To edit a *`CMakeLists.txt`* file, right-click on the file in **Solution Explorer** and choose **Open**. If you make changes to the file, a yellow status bar appears and informs you that IntelliSense will update. It gives you a chance to cancel the update operation. For information about *`CMakeLists.txt`*, see the [CMake documentation](https://cmake.org/documentation/). :::image type="complex" source="media/cmake-cmakelists.png" alt-text="Screenshot of a C Make Lists file being edited in Visual Studio."::: The file contains project (hello-cmake), add_subdirectory (tests), add_executable (hello hello.cpp), and install (TARGETS hello DESTINATION hello/bin). A message at the top of the window says that c plus plus IntelliSense info will refresh after C Make finishes generating the cache. :::image-end::: -As soon as you save the file, the configuration step automatically runs again and displays information in the **Output** window. Errors and warnings are shown in the **Error List** or **Output** window. Double-click on an error in the **Error List** to navigate to the offending line in *CMakeLists.txt*. +As soon as you save the file, the configuration step automatically runs again and displays information in the **Output** window. Errors and warnings are shown in the **Error List** or **Output** window. Double-click on an error in the **Error List** to navigate to the offending line in *`CMakeLists.txt`*. :::image type="complex" source="media/cmake-cmakelists-error.png" alt-text="Screenshot of a C Make error in the Visual Studio error list."::: A C Make error message on line 3 of CMakeLists.txt is highlighted. The details are that C Make can't find a package configuration file provided by sqlite3. C Make looked for it in CMAKE_MODULE_PATH but couldn't find it. The suggestion is to add the installation prefix 'sqlite3' to CMAKE_PREFIX_PATH or set sqlite3_DIR to a directory containing sqlite3Config.cmake and/or sqlitet3-config.cmake. @@ -382,7 +382,7 @@ As soon as you save the file, the configuration step automatically runs again an ## CMake configure step -When significant changes are made to the *CMakeSettings.json* or to *CMakeLists.txt* files, Visual Studio automatically reruns the CMake configure step. If the configure step finishes without errors, the information that's collected is available in C++ IntelliSense and language services. It's also used in build and debug operations. +When significant changes are made to the *`CMakeSettings.json`* or to *`CMakeLists.txt`* files, Visual Studio automatically reruns the CMake configure step. If the configure step finishes without errors, the information that's collected is available in C++ IntelliSense and language services. It's also used in build and debug operations. Multiple CMake projects might use the same CMake configuration name (for example, *x86-Debug*). All of them are configured and built (in their own build root folder) when that configuration is selected. You can debug the targets from all of the CMake projects that participate in that CMake configuration. @@ -390,13 +390,13 @@ Multiple CMake projects might use the same CMake configuration name (for example The context menu shows what can be built. In this case hello-cmake-a \ hello-cmake.exe (Project hello-cmake) and hello-cmake-b\hello-cmake.exe (Project hello-cmake). The latter is highlighted. :::image-end::: -You can limit builds and debug sessions to a subset of the projects in the workspace. Create a new configuration with a unique name in the *CMakeSettings.json* file. Then, apply the configuration to those projects only. When that configuration is selected, IntelliSense and the build and debug commands only apply to those specified projects. +You can limit builds and debug sessions to a subset of the projects in the workspace. Create a new configuration with a unique name in the *`CMakeSettings.json`* file. Then, apply the configuration to those projects only. When that configuration is selected, IntelliSense and the build and debug commands only apply to those specified projects. ## Troubleshooting CMake cache errors -If you need more information about the state of the CMake cache to diagnose a problem, open the **CMake** main menu or the *CMakeLists.txt* context menu in **Solution Explorer** to run one of these commands: +If you need more information about the state of the CMake cache to diagnose a problem, open the **CMake** main menu or the *`CMakeLists.txt`* context menu in **Solution Explorer** to run one of these commands: -- **View Cache** opens the *CMakeCache.txt* file from the build root folder in the editor. Any edits you make here to *CMakeCache.txt* are wiped out if you clean the cache. To make changes that persist after the cache is cleaned, see [Customize CMake settings](customize-cmake-settings.md). +- **View Cache** opens the *`CMakeCache.txt`* file from the build root folder in the editor. Any edits you make here to *`CMakeCache.txt`* are wiped out if you clean the cache. To make changes that persist after the cache is cleaned, see [Customize CMake settings](customize-cmake-settings.md). - **Open Cache Folder** opens an Explorer window to the build root folder. @@ -416,7 +416,7 @@ To build a single file in a CMake project, right-click on the file in **Solution If you installed CMake from the Visual Studio Installer, you can run it from the command line by following these steps: -1. Run the appropriate *vsdevcmd.bat* file (x86/x64). For more information, see [Building on the Command Line](building-on-the-command-line.md). +1. Run the appropriate *`vsdevcmd.bat`* file (x86/x64). For more information, see [Building on the Command Line](building-on-the-command-line.md). 1. Switch to your output folder. @@ -436,7 +436,7 @@ In Visual Studio 2015, Visual Studio users can use a [CMake generator](https://c - [Configure a Linux CMake project](../linux/cmake-linux-project.md) - [Connect to your remote Linux computer](../linux/connect-to-your-remote-linux-computer.md) - [Customize CMake build settings](customize-cmake-settings.md) -- [*CMakeSettings.json* schema reference](cmakesettings-reference.md) +- [*`CMakeSettings.json`* schema reference](cmakesettings-reference.md) - [Configure CMake debugging sessions](configure-cmake-debugging-sessions.md) - [Deploy, run, and debug your Linux project](../linux/deploy-run-and-debug-your-linux-project.md) - [CMake predefined configuration reference](cmake-predefined-configuration-reference.md) diff --git a/docs/build/vscpp-step-0-installation.md b/docs/build/vscpp-step-0-installation.md index 95784617362..f6e9b8cea02 100644 --- a/docs/build/vscpp-step-0-installation.md +++ b/docs/build/vscpp-step-0-installation.md @@ -41,8 +41,11 @@ For questions about running previous versions of Visual Studio side by side with Select the following button to go to the Visual Studio download page, and download the Visual Studio bootstrapper file. Select the edition of Visual Studio that you want and choose the **Free trial** or **Free download** button. - > [!div class="button"] - > [Download Visual Studio](https://visualstudio.microsoft.com/downloads/) +> [!div class="button"] +> [Download Visual Studio](https://visualstudio.microsoft.com/downloads/) + +>[!TIP] +> The Community edition is for individual developers, classroom learning, academic research, and open source development. For other uses, install Visual Studio 2022 Professional or Visual Studio 2022 Enterprise. ### Step 3 - Install the Visual Studio Installer From 1a2a71149694f609d3c414a78515a5dcb6c5dd48 Mon Sep 17 00:00:00 2001 From: lb90 Date: Thu, 20 Mar 2025 14:52:39 +0100 Subject: [PATCH 0300/2255] Update fopen-wfopen.md Document mapping of modifier N to _O_NOINHERIT --- docs/c-runtime-library/reference/fopen-wfopen.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/c-runtime-library/reference/fopen-wfopen.md b/docs/c-runtime-library/reference/fopen-wfopen.md index 3756a268d04..d2a45d02fbe 100644 --- a/docs/c-runtime-library/reference/fopen-wfopen.md +++ b/docs/c-runtime-library/reference/fopen-wfopen.md @@ -146,6 +146,7 @@ Valid characters for the *`mode`* string that is used in **`fopen`** and **`_fdo | **`x`** | `_O_EXCL` | | **`c`** | None | | **`n`** | None | +| **`N`** | `_O_NOINHERIT` | | **`S`** | `_O_SEQUENTIAL` | | **`R`** | `_O_RANDOM` | | **`T`** | `_O_SHORTLIVED` | From 0840e017e3c68034279962f2b27d02133ba1353c Mon Sep 17 00:00:00 2001 From: lb90 Date: Thu, 20 Mar 2025 15:06:32 +0100 Subject: [PATCH 0301/2255] Update fopen-s-wfopen-s.md Document mapping of modifier N to _O_NOINHERIT --- docs/c-runtime-library/reference/fopen-s-wfopen-s.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/c-runtime-library/reference/fopen-s-wfopen-s.md b/docs/c-runtime-library/reference/fopen-s-wfopen-s.md index 1efd939eec4..1dd8534816d 100644 --- a/docs/c-runtime-library/reference/fopen-s-wfopen-s.md +++ b/docs/c-runtime-library/reference/fopen-s-wfopen-s.md @@ -153,6 +153,7 @@ Valid characters for the *`mode`* string used in **`fopen_s`** and [`_fdopen`](f | **`t`** | `_O_TEXT` (translated) | | **`c`** | None | | **`n`** | None | +| **`N`** | `_O_NOINHERIT` | | **`D`** | `_O_TEMPORARY` | | **`R`** | `_O_RANDOM` | | **`S`** | `_O_SEQUENTIAL` | From cc41959aa88b09854a795077bb63366ba3f22a79 Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Thu, 20 Mar 2025 09:56:39 -0700 Subject: [PATCH 0302/2255] Add minor changes --- ...compile-a-c-program-on-the-command-line.md | 6 ++-- ...ng-and-using-a-dynamic-link-library-cpp.md | 28 +++++++++---------- ...eating-windows-desktop-applications-cpp.md | 8 +++--- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/docs/build/walkthrough-compile-a-c-program-on-the-command-line.md b/docs/build/walkthrough-compile-a-c-program-on-the-command-line.md index 4340086b01d..849ed1f1e82 100644 --- a/docs/build/walkthrough-compile-a-c-program-on-the-command-line.md +++ b/docs/build/walkthrough-compile-a-c-program-on-the-command-line.md @@ -179,7 +179,7 @@ Certain library functions and POSIX function names are deprecated by MSVC. The f ## Related content -- [Walkthrough: Create a Standard C++ Program](../windows/walkthrough-creating-a-standard-cpp-program-cpp.md)\ -- [C Language Reference](../c-language/c-language-reference.md)\ -- [C/C++ projects and build systems](projects-and-build-systems-cpp.md)\ +- [Walkthrough: Create a Standard C++ Program](../windows/walkthrough-creating-a-standard-cpp-program-cpp.md) +- [C Language Reference](../c-language/c-language-reference.md) +- [C/C++ projects and build systems](projects-and-build-systems-cpp.md) - [Compatibility](../c-runtime-library/compatibility.md) diff --git a/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md b/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md index ad186eb36c0..cae6b725cff 100644 --- a/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md +++ b/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md @@ -134,7 +134,7 @@ Right now, this DLL doesn't do very much. Next, you'll create a header file to d 1. To create a header file for your functions, on the menu bar, choose **Project** > **Add New Item**. -1. In the **Add New Item** dialog box, in the left pane, select **Visual C++**. In the center pane, select **Header File (.h)**. Specify *MathLibrary.h* as the name for the header file. +1. In the **Add New Item** dialog box, in the left pane, select **Visual C++**. In the center pane, select **Header File (.h)**. Specify *`MathLibrary.h`* as the name for the header file. :::image type="content" source="media/mathlibrary-add-new-item-header-file.png" alt-text="Screenshot of the Add New Item dialog with the C plus plus Header File template selected, and MathLibrary.h entered in the Name textbox."::: @@ -191,11 +191,11 @@ When the `MATHLIBRARY_EXPORTS` macro is defined, the `MATHLIBRARY_API` macro set ::: moniker range=">=msvc-160" -1. In **Solution Explorer**, right-click on the **Source Files** node and choose **Add** > **New Item**. Create a new .cpp file called *MathLibrary.cpp*, in the same way that you added a new header file in the previous step. +1. In **Solution Explorer**, right-click on the **Source Files** node and choose **Add** > **New Item**. Create a new *`.cpp`* file called *`MathLibrary.cpp`*, in the same way that you added a new header file in the previous step. 1. In the editor window, select the **MathLibrary.cpp** tab if it's already open. If not, in **Solution Explorer**, double-click **MathLibrary.cpp** in the **Source Files** folder of the **MathLibrary** project to open it. -1. In the editor, replace the contents of the *MathLibrary.cpp* file with the following code: +1. In the editor, replace the contents of the *`MathLibrary.cpp`* file with the following code: ```cpp // MathLibrary.cpp : Defines the exported functions for the DLL. @@ -262,7 +262,7 @@ When the `MATHLIBRARY_EXPORTS` macro is defined, the `MATHLIBRARY_API` macro set 1. In the editor window, select the tab for **MathLibrary.cpp** if it's already open. If not, in **Solution Explorer**, double-click **MathLibrary.cpp** in the **Source Files** folder of the **MathLibrary** project to open it. -1. In the editor, replace the contents of the *MathLibrary.cpp* file with the following code: +1. In the editor, replace the contents of the *`MathLibrary.cpp`* file with the following code: ```cpp // MathLibrary.cpp : Defines the exported functions for the DLL. @@ -398,7 +398,7 @@ To avoid out-of-sync code, we recommend you set the include path in your client 1. Choose the **Create** button to create the client project. -A minimal console application project is created for you. The name for the main source file is the same as the project name that you entered earlier. In this example, it's named *MathClient.cpp*. You can build it, but it doesn't use your DLL yet. +A minimal console application project is created for you. The name for the main source file is the same as the project name that you entered earlier. In this example, it's named *`MathClient.cpp`*. You can build it, but it doesn't use your DLL yet. ::: moniker-end @@ -414,7 +414,7 @@ A minimal console application project is created for you. The name for the main 1. Choose **OK** to create the client app project. -A minimal console application project is created for you. The name for the main source file is the same as the project name that you entered earlier. In this example, it's named *MathClient.cpp*. You can build it, but it doesn't use your DLL yet. +A minimal console application project is created for you. The name for the main source file is the same as the project name that you entered earlier. In this example, it's named *`MathClient.cpp`*. You can build it, but it doesn't use your DLL yet. ::: moniker-end @@ -434,11 +434,11 @@ A minimal console application project is created for you. The name for the main 1. Choose the **Finish** button to create the project. -When the wizard finishes, a minimal console application project is created for you. The name for the main source file is the same as the project name that you entered earlier. In this example, it's named *MathClient.cpp*. You can build it, but it doesn't use your DLL yet. +When the wizard finishes, a minimal console application project is created for you. The name for the main source file is the same as the project name that you entered earlier. In this example, it's named *`MathClient.cpp`*. You can build it, but it doesn't use your DLL yet. ::: moniker-end -Next, to call the MathLibrary functions in your source code, your project must include the *MathLibrary.h* file. You could copy this header file into your client app project, then add it to the project as an existing item. This method can be a good choice for third-party libraries. However, if you're working on the code for your DLL and your client at the same time, the header files could get out of sync. To avoid this issue, set the **Additional Include Directories** path in your project to include the path to the original header. +Next, to call the MathLibrary functions in your source code, your project must include the *`MathLibrary.h`* file. You could copy this header file into your client app project, then add it to the project as an existing item. This method can be a good choice for third-party libraries. However, if you're working on the code for your DLL and your client at the same time, the header files could get out of sync. To avoid this issue, set the **Additional Include Directories** path in your project to include the path to the original header. ### To add the DLL header to your include path @@ -454,7 +454,7 @@ Next, to call the MathLibrary functions in your source code, your project must i 1. Double-click in the top pane of the **Additional Include Directories** dialog box to enable an edit control. Or, choose the folder icon to create a new entry. -1. In the edit control, specify the path to the location of the *MathLibrary.h* header file. You can choose the ellipsis (**...**) control to browse to the correct folder. +1. In the edit control, specify the path to the location of the *`MathLibrary.h`* header file. You can choose the ellipsis (**...**) control to browse to the correct folder. You can also enter a relative path from your client source files to the folder that contains the DLL header files. If you followed the directions to put your client project in a separate solution from the DLL, the relative path should look like this: @@ -470,7 +470,7 @@ Next, to call the MathLibrary functions in your source code, your project must i 1. After you've entered the path to the header file in the **Additional Include Directories** dialog box, choose the **OK** button. In the **Property Pages** dialog box, choose the **OK** button to save your changes. -You can now include the *MathLibrary.h* file and use the functions it declares in your client application. Replace the contents of *MathClient.cpp* by using this code: +You can now include the *`MathLibrary.h`* file and use the functions it declares in your client application. Replace the contents of *`MathClient.cpp`* by using this code: ```cpp // MathClient.cpp : Client app for MathLibrary DLL. @@ -494,9 +494,9 @@ int main() } ``` -This code can be compiled, but not linked. If you build the client app now, the error list shows several LNK2019 errors. That's because your project is missing some information: You haven't specified that your project has a dependency on the *MathLibrary.lib* library yet. And, you haven't told the linker how to find the *MathLibrary.lib* file. +This code can be compiled, but not linked. If you build the client app now, the error list shows several LNK2019 errors. That's because your project is missing some information: You haven't specified that your project has a dependency on the *`MathLibrary.lib`* library yet. And, you haven't told the linker how to find the *`MathLibrary.lib`* file. -To fix this issue, you could copy the library file directly into your client app project. The linker would find and use it automatically. However, if both the library and the client app are under development, that might lead to changes in one copy that aren't shown in the other. To avoid this issue, you can set the **Additional Dependencies** property to tell the build system that your project depends on *MathLibrary.lib*. And, you can set an **Additional Library Directories** path in your project to include the path to the original library when you link. +To fix this issue, you could copy the library file directly into your client app project. The linker would find and use it automatically. However, if both the library and the client app are under development, that might lead to changes in one copy that aren't shown in the other. To avoid this issue, you can set the **Additional Dependencies** property to tell the build system that your project depends on *`MathLibrary.lib`*. And, you can set an **Additional Library Directories** path in your project to include the path to the original library when you link. ### To add the DLL import library to your project @@ -508,7 +508,7 @@ To fix this issue, you could copy the library file directly into your client app :::image type="content" source="media/mathclient-additional-dependencies-property.png" alt-text="Screenshot of the Property Pages dialog box under Input that shows the Edit command in the Additional Dependencies property dropdown."::: -1. In the **Additional Dependencies** dialog, add *MathLibrary.lib* to the list in the top edit control. +1. In the **Additional Dependencies** dialog, add *`MathLibrary.lib`* to the list in the top edit control. :::image type="content" source="media/mathclient-additional-dependencies.png" alt-text="Screenshot of the Additional Dependencies dialog box showing the MathLibrary.lib file."::: @@ -518,7 +518,7 @@ To fix this issue, you could copy the library file directly into your client app :::image type="content" source="media/mathclient-additional-library-directories-property.png" alt-text="Screenshot of the Property Pages dialog box under General that shows the Edit command in the Additional Library Directories property dropdown."::: -1. Double-click in the top pane of the **Additional Library Directories** dialog box to enable an edit control. In the edit control, specify the path to the location of the *MathLibrary.lib* file. By default, it's in a folder called *Debug* directly under the DLL solution folder. If you create a release build, the file is placed in a folder called *Release*. You can use the `$(IntDir)` macro so that the linker can find your DLL, no matter which kind of build you create. If you followed the directions to put your client project in a separate solution from the DLL project, the relative path should look like this: +1. Double-click in the top pane of the **Additional Library Directories** dialog box to enable an edit control. In the edit control, specify the path to the location of the *`MathLibrary.lib`* file. By default, it's in a folder called *Debug* directly under the DLL solution folder. If you create a release build, the file is placed in a folder called *Release*. You can use the `$(IntDir)` macro so that the linker can find your DLL, no matter which kind of build you create. If you followed the directions to put your client project in a separate solution from the DLL project, the relative path should look like this: `..\..\MathLibrary\$(IntDir)` diff --git a/docs/windows/walkthrough-creating-windows-desktop-applications-cpp.md b/docs/windows/walkthrough-creating-windows-desktop-applications-cpp.md index 1bafcda7b40..28a9be5d24b 100644 --- a/docs/windows/walkthrough-creating-windows-desktop-applications-cpp.md +++ b/docs/windows/walkthrough-creating-windows-desktop-applications-cpp.md @@ -53,7 +53,7 @@ To see the steps for your preferred version of Visual Studio, use the **Version* The animation shows right-clicking on the project name in Solution Explorer, choosing Add in the menu that appears, and then choosing New Item. :::image-end::: -1. In the **Add New Item** dialog box, select **C++ File (.cpp)**. In the **Name** box, type a name for the file, for example, *HelloWindowsDesktop.cpp*. Choose **Add**. +1. In the **Add New Item** dialog box, select **C++ File (.cpp)**. In the **Name** box, type a name for the file, for example, *`HelloWindowsDesktop.cpp`*. Choose **Add**. :::image type="content" source="../build/media/desktop-app-add-cpp-file-153.png" alt-text="Screenshot of the Add New Item dialog box in Visual Studio 2019. The C plus plus File (.cpp) option is selected. The name field is set to Hello Windows Desktop.cpp."::: @@ -81,7 +81,7 @@ Your project is now created and your source file is opened in the editor. The animation shows right-clicking on the project name in Solution Explorer, choosing Add in the menu that appeared, and then choosing New Item. :::image-end::: -1. In the **Add New Item** dialog box, select **C++ File (.cpp)**. In the **Name** box, type a name for the file, for example, *HelloWindowsDesktop.cpp*. Choose **Add**. +1. In the **Add New Item** dialog box, select **C++ File (.cpp)**. In the **Name** box, type a name for the file, for example, *`HelloWindowsDesktop.cpp`*. Choose **Add**. :::image type="content" source="../build/media/desktop-app-add-cpp-file-153.png" alt-text="Screenshot of the Add New Item dialog box in Visual Studio 2017. Visual C plus plus is selected on the left and the C plus plus File option is highlighted."::: @@ -113,7 +113,7 @@ Your project is now created and your source file is opened in the editor. The animation shows right-clicking on the project name in Solution Explorer, choosing Add in the menu that appears, and then choosing New Item. :::image-end::: -1. In the **Add New Item** dialog box, select **C++ File (.cpp)**. In the **Name** box, type a name for the file, for example, *HelloWindowsDesktop.cpp*. Choose **Add**. +1. In the **Add New Item** dialog box, select **C++ File (.cpp)**. In the **Name** box, type a name for the file, for example, *`HelloWindowsDesktop.cpp`*. Choose **Add**. :::image type="content" source="../build/media/desktop-app-add-cpp-file-150.png" alt-text="Screenshot of the Add New Item dialog box in Visual Studio 2015 with Visual C plus plus selected and the C plus plus File option highlighted."::: @@ -435,7 +435,7 @@ As promised, the complete code for the working application follows. ### To build this example -1. Delete all the code in *HelloWindowsDesktop.cpp* in the editor. Copy this example code and paste it into *HelloWindowsDesktop.cpp*: +1. Delete all the code in *`HelloWindowsDesktop.cpp`* in the editor. Copy this example code and paste it into *`HelloWindowsDesktop.cpp`*: ```cpp // HelloWindowsDesktop.cpp From 3a0334f5fa54bd3ca0c3d4d17a95fbe266a08189 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 21 Mar 2025 01:00:53 +0800 Subject: [PATCH 0303/2255] Improve `/dynamicdeopt` compiler switch reference page --- docs/build/reference/dynamic-deopt.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/docs/build/reference/dynamic-deopt.md b/docs/build/reference/dynamic-deopt.md index 2237d19057e..286e2509252 100644 --- a/docs/build/reference/dynamic-deopt.md +++ b/docs/build/reference/dynamic-deopt.md @@ -1,11 +1,12 @@ --- title: "/dynamicdeopt (Enable C++ Dynamic Debugging (Preview))" -description: "Use the Microsoft C++ compiler option /dynamicdeopt to use C++ Dynamic Debugging." +description: "Enable the Microsoft C++ compiler option /dynamicdeopt to use C++ Dynamic Debugging." ms.date: 03/14/2025 f1_keywords: ["/dynamicdeopt", "VC.Project.VCNMakeTool.CompileAsManaged", "VC.Project.VCCLCompilerTool.CompileAsManaged"] helpviewer_keywords: ["cl.exe compiler, common language runtime option", "-dynamicdeopt compiler option [C++]", "dynamicdeopt compiler option [C++]", "/clr compiler option [C++]", "Managed Extensions for C++, compiling", "common language runtime, /clr compiler option"] --- # `/dynamicdeopt` (Enable C++ Dynamic Debugging) (Preview) + > [!IMPORTANT] > The `/dynamicdeopt` compiler switch is currently in PREVIEW. > This information relates to a prerelease feature that might be substantially modified before release. Microsoft makes no warranties, expressed or implied, with respect to the information provided here. @@ -14,8 +15,8 @@ Enable [C++ Dynamic Debugging (Preview)](/visualstudio/debugger/cpp-dynamic-debu ## Syntax -> **`/dynamicdeopt`** -> **`/dynamicdeopt:suffix `** +> **`/dynamicdeopt`**\ +> **`/dynamicdeopt:suffix `**\ > **`/dynamicdeopt:sync`** ## Arguments @@ -26,13 +27,13 @@ Specify the file extension for the deoptimized output. With no options and given `test.cpp` as input, your output includes `test.obj`, `test.exe`, and `test.pdb`, as well as `test.alt.obj`, `test.alt.exe`, and `test.alt.pdb`. This switch allows you to change the suffix of the unoptimized binary build artifacts from `.alt` to something else. If you change the suffix, all files must use the new suffix, and it needs to match the name passed to the linker using [`/dynamicdeopt:suffix` (Preview)](dynamic-deopt-linker.md). You typically don't use this switch unless you need to avoid filename collisions with other files that you have. *`sync`*\ -Builds the deoptimized output after building the optimized output instead of in parallel. By default, the compiler spawns a parallel instance of the code generator. This switch makes the them run serially, instead. This switch is provided in case this better suits your build environment. +Builds the deoptimized output after building the optimized output instead of in parallel. By default, the compiler spawns a parallel instance of the code generator. This switch makes them run serially instead. This switch is provided in case this better suits your build environment. ## Remarks This preview flag, available starting with Visual Studio 2022 Version 17.14 Preview 2, applies only to x64 projects and must be used with the corresponding linker flag, [`/DYNAMICDEOPT`](dynamic-deopt-linker.md). -Compiling with `/dynamicdeopt` generates other binaries that are used for debugging. When you debug an optimized file and debug into an optimized function, the debugger steps into the alternate binary instead. This allows you to debug as if you're debugging unoptimized code while still getting the performance advantages of optimized code. +Compiling with `/dynamicdeopt` generates other binaries that are used for debugging. When you debug an optimized function in an optimized file, the debugger steps into the alternate binary instead. This allows you to debug as if you're debugging unoptimized code while still getting the performance advantages of optimized code. `/dynamicdeopt` requires: @@ -54,8 +55,8 @@ If you specify `/OPT:ICF`, the compiler generates a warning that the debug exper /fastcap /callcap /ZW -fsanitize=address -fsanitize=kernel-address +/fsanitize=address +/fsanitize=kernel-address All of the CLR flags ``` From e8d02e42767278485c314bc6a09cb0c8a78b9696 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 21 Mar 2025 01:28:12 +0800 Subject: [PATCH 0304/2255] Improve `/DYNAMICDEOPT` linker option reference page --- docs/build/reference/dynamic-deopt-linker.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/build/reference/dynamic-deopt-linker.md b/docs/build/reference/dynamic-deopt-linker.md index 21289559b78..f23f3708b49 100644 --- a/docs/build/reference/dynamic-deopt-linker.md +++ b/docs/build/reference/dynamic-deopt-linker.md @@ -5,7 +5,8 @@ ms.date: 03/14/2025 f1_keywords: ["VC.Project.VCLinkerTool.GenerateDynamicDeoptInformation", "/dynamicdeopt"] helpviewer_keywords: ["DYNAMICDEOPT linker option", "/DYNAMICDEOPT linker option", "-DYNAMICDEOPT linker option", "c++ dynamic debugging"] --- -# | `/DYNAMICDEOPT` (Support C++ Dynamic Debugging) (Preview) +# `/DYNAMICDEOPT` (Support C++ Dynamic Debugging) (Preview) + > [!IMPORTANT] > The `/DYNAMICDEOPT` linker switch is currently in PREVIEW. > This information relates to a prerelease feature that might be substantially modified before release. Microsoft makes no warranties, expressed or implied, with respect to the information provided here. @@ -14,8 +15,8 @@ The **`/DYNAMICDEOPT`** linker option, when used with the compiler switch [`/dyn ## Syntax -> **`/DYNAMICDEOPT`** -> **`/DYNAMICDEOPT:SUFFIX=`** +> **`/DYNAMICDEOPT`**\ +> **`/DYNAMICDEOPT:SUFFIX=`**\ > **`/DYNAMICDEOPT:SYNC`** ## Arguments From 21562c65cfa059802315bc163d0247ec9daea4f3 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Thu, 20 Mar 2025 11:26:30 -0700 Subject: [PATCH 0305/2255] Update metadata in dynamic-deopt documentation --- docs/build/reference/dynamic-deopt.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/build/reference/dynamic-deopt.md b/docs/build/reference/dynamic-deopt.md index 286e2509252..4bbfcd757ff 100644 --- a/docs/build/reference/dynamic-deopt.md +++ b/docs/build/reference/dynamic-deopt.md @@ -1,9 +1,9 @@ --- title: "/dynamicdeopt (Enable C++ Dynamic Debugging (Preview))" description: "Enable the Microsoft C++ compiler option /dynamicdeopt to use C++ Dynamic Debugging." -ms.date: 03/14/2025 -f1_keywords: ["/dynamicdeopt", "VC.Project.VCNMakeTool.CompileAsManaged", "VC.Project.VCCLCompilerTool.CompileAsManaged"] -helpviewer_keywords: ["cl.exe compiler, common language runtime option", "-dynamicdeopt compiler option [C++]", "dynamicdeopt compiler option [C++]", "/clr compiler option [C++]", "Managed Extensions for C++, compiling", "common language runtime, /clr compiler option"] +ms.date: 03/20/2025 +f1_keywords: ["/dynamicdeopt"] +helpviewer_keywords: ["-dynamicdeopt compiler option [C++]", "dynamicdeopt compiler option [C++]"] --- # `/dynamicdeopt` (Enable C++ Dynamic Debugging) (Preview) From 122944be267ba45b9ed1ec9d95b064c3ed16ea11 Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Thu, 20 Mar 2025 15:31:48 -0700 Subject: [PATCH 0306/2255] Final changes --- docs/build/cmake-projects-in-visual-studio.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build/cmake-projects-in-visual-studio.md b/docs/build/cmake-projects-in-visual-studio.md index c8d8af1d316..a164d943fe8 100644 --- a/docs/build/cmake-projects-in-visual-studio.md +++ b/docs/build/cmake-projects-in-visual-studio.md @@ -293,7 +293,7 @@ When you choose **File > Open > Folder** to open a folder containing a *`CMakeLi - In the background, Visual Studio starts to index the source files to enable IntelliSense, browsing information, refactoring, and so on. As you work, Visual Studio monitors changes in the editor and also on disk to keep its index in sync with the sources. -You can open folders containing any number of CMake projects. Visual Studio detects and configures all the *root* *`CMakeLists.txt`* files in your workspace. CMake operations (configure, build, debug), C++ IntelliSense, and browsing are available to all CMake projects in your workspace. +You can open folders containing any number of CMake projects. Visual Studio detects and configures all the top-level *`CMakeLists.txt`* files in your workspace. CMake operations (configure, build, debug), C++ IntelliSense, and browsing are available to all CMake projects in your workspace. :::image type="complex" source="media/cmake-multiple-roots.png" alt-text="Screenshot of the Visual Studio Solution Explorer."::: The files and folders of a C Make project are visible. There's a tests subdirectory, CMakeLists.txt, and hello.cpp. There's a hello-cmake-vcpkg folder that contains CMakeLists.txt, CMakeSettings.json, and hello.cpp. @@ -336,7 +336,7 @@ Not everything in the cache is imported. Properties such as the generator and th To build a CMake project, you have these choices: -1. In the General toolbar, find the **Configurations** dropdown. It's probably showing *Linux-Debug* or *x64-Debug* by default. Select the preferred configuration and press **F5**, or choose the **Run** (green triangle) button on the toolbar. The project automatically builds first, just like a Visual Studio solution. +1. In the General toolbar, find the **Configurations** dropdown. It's probably showing **Linux-Debug** or **x64-Debug** by default. Select the preferred configuration and press **F5**, or choose the **Run** (green triangle) button on the toolbar. The project automatically builds first, just like a Visual Studio solution. 1. Right-click on *`CMakeLists.txt`* in **Solution Explorer** and select **Build** from the context menu. If you have multiple targets in your folder structure, you can choose to build all or only one specific target. From 60d491320eee0a16aa26aa8e77a651ff528f02e9 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Fri, 21 Mar 2025 12:21:22 -0700 Subject: [PATCH 0307/2255] Clarify string literal length limits in docs --- docs/cpp/string-and-character-literals-cpp.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/cpp/string-and-character-literals-cpp.md b/docs/cpp/string-and-character-literals-cpp.md index ffc4f939dc9..643fd31daea 100644 --- a/docs/cpp/string-and-character-literals-cpp.md +++ b/docs/cpp/string-and-character-literals-cpp.md @@ -331,7 +331,10 @@ const size_t byteSize = (wcslen(str) + 1) * sizeof(wchar_t); Notice that `strlen()` and `wcslen()` don't include the size of the terminating null character, whose size is equal to the element size of the string type: one byte on a `char*` or `char8_t*` string, two bytes on `wchar_t*` or `char16_t*` strings, and four bytes on `char32_t*` strings. -In versions of Visual Studio before Visual Studio 2022 version 17.0, the maximum length of a string literal is 65,535 bytes after string concatenation. This limit applies to both narrow string literals and wide string literals. In Visual Studio 2022 version 17.0 and later, the length restriction after string concatenation is lifted, and is limited by available resources. The size limit before string concatenation remains at 16,384 bytes. +Maximum length of a string literal after concatenation: + +* Visual Studio prior to 2022 version 17.0: the maximum length of a string literal after concatenation is 65,535 bytes. This applies to both narrow and wide string literals. +* From Visual Studio 2022 version 17.0 onwards: the maximum length of a string literal after concatenation is only limited by available memory. However, the size limit before concatenation is still 16,384 bytes ### Modifying string literals From f81af68128f4ac9feded08dd9827e82484c05f72 Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Fri, 21 Mar 2025 16:09:45 -0700 Subject: [PATCH 0308/2255] Refresh articles --- .../connect-to-your-remote-linux-computer.md | 72 ++++++------ ...n-or-other-image-image-editor-for-icons.md | 109 +++++++++--------- ...-using-the-vcpp-redistributable-package.md | 81 ++++++------- 3 files changed, 135 insertions(+), 127 deletions(-) diff --git a/docs/linux/connect-to-your-remote-linux-computer.md b/docs/linux/connect-to-your-remote-linux-computer.md index abb09042bb1..6c4c3d3d4ee 100644 --- a/docs/linux/connect-to-your-remote-linux-computer.md +++ b/docs/linux/connect-to-your-remote-linux-computer.md @@ -1,9 +1,10 @@ --- -title: "Connect to your target Linux system in Visual Studio" -description: "How to connect to a remote Linux machine or Windows Subsystem for Linux from inside a Visual Studio C++ project." -ms.date: 03/14/2022 +title: "Connect to a target Linux system by using Visual Studio" +description: "Learn how to connect to a remote Linux machine or Windows Subsystem for Linux from inside a Visual Studio C++ project." +ms.topic: tutorial +ms.date: 03/21/2025 --- -# Connect to your target Linux system in Visual Studio +# Connect to your remote Linux system by using Visual Studio ::: moniker range="msvc-140" @@ -26,6 +27,7 @@ You can configure a Linux project to target a remote machine or the Windows Subs ::: moniker range=">=msvc-150" When using a remote connection, Visual Studio builds C++ Linux projects on the remote machine. It doesn't matter if it's a physical machine, a virtual machine in the cloud, or WSL. + To build the project, Visual Studio copies the source code to your remote Linux computer. Then, the code gets compiled based on Visual Studio settings. ::: moniker-end @@ -39,7 +41,7 @@ To build the project, Visual Studio copies the source code to your remote Linux ::: moniker range=">=msvc-150" -## Set up the SSH server on the remote system +## Set up the SSH server on the remote Linux system If `ssh` isn't already set up and running on your Linux system, follow these steps to install it. The examples in this article use Ubuntu 18.04 LTS with OpenSSH server version 7.6. However, the instructions should be the same for any distro using a moderately recent version of OpenSSH. @@ -56,9 +58,9 @@ If `ssh` isn't already set up and running on your Linux system, follow these ste sudo systemctl enable ssh ``` -## Set up the remote connection +## Set up the remote connection from your local machine -1. In Visual Studio, choose **Tools > Options** on the menu bar to open the **Options** dialog. Then select **Cross Platform > Connection Manager** to open the Connection Manager dialog. +1. In Visual Studio on your Windows system, choose **Tools > Options** on the menu bar to open the **Options** dialog. Then select **Cross Platform > Connection Manager** to open the Connection Manager dialog. If you haven't set up a connection in Visual Studio before, when you build your project for the first time, Visual Studio opens the Connection Manager dialog for you. @@ -69,11 +71,11 @@ If `ssh` isn't already set up and running on your Linux system, follow these ste :::image-end::: To edit an existing connection, choose **Edit**. In either scenario, the **Connect to Remote System** window is displayed. - + :::image type="complex" source="media/connect-to-your-remote-linux-computer/connect-updated.png" alt-text="Screenshot of the Visual Studio Connect to Remote System window."::: In the Connect to Remote System window, there are fields for host name, port, user name, authentication type, and password. Port is set to 22. Authentication type is set to 'Password'. :::image-end::: - + 1. Enter the following information: | Entry | Description | @@ -84,23 +86,23 @@ If `ssh` isn't already set up and running on your Linux system, follow these ste | **Authentication type** | Password and Private Key are both supported | | **Password** | Password for the entered user name | | **Private key file** | Private key file created for ssh connection | - | **Passphrase** | Passphrase used with private key selected above | + | **Passphrase** | Passphrase used with private key selected previously | - You can't click the **Connect** button until all the required fields are completed and the port is set to an integer between 1 and 65535. + You can't select the **Connect** button until all the required fields are completed and the port is set to an integer between 1 and 65535. You can use either a password or a key file and passphrase for authentication. Key files are more secure than username/password. If you already have a key pair, it's possible to reuse it. - Versions of Visual Studio before 17.10 support Elliptic Curve (EC), Rivert-Shamir-Adleman (RSA), and Digital signature algorithm (DSA) keys for remote connections. Because of security concerns, DSA keys are no longer supported in VS 17.10 and later. RSA keys were also not supported in VS 17.10 and VS 17.11 but some types are supported again in VS 17.12 and later. To create a key pair compatible with the connection manager you can use the command: + Versions of Visual Studio before 17.10 support Elliptic Curve (EC), Rivert-Shamir-Adleman (RSA), and Digital signature algorithm (DSA) keys for remote connections. Because of security concerns, DSA keys are no longer supported in VS 17.10 and later. RSA keys were also not supported in VS 17.10 and VS 17.11 but some types are supported again in VS 17.12 and later. To create a key pair compatible with the connection manager, you can use the command: `ssh-keygen -m pem -t ecdsa -f ` > [!NOTE] - > If using `ssh-keygen` to create the private key, you must specify the switch `-m pem`, or the key will not be accepted by Visual Studio. If your private key begins with `-----BEGIN OPENSSH PRIVATE KEY-----`, you must convert it with `ssh-keygen -p -f -m pem`. + > If using `ssh-keygen` to create the private key, you must specify the switch `-m pem`, or the key isn't accepted by Visual Studio. If your private key begins with `-----BEGIN OPENSSH PRIVATE KEY-----`, you must convert it with `ssh-keygen -p -f -m pem`. 1. Choose the **Connect** button to attempt a connection to the remote computer. If the connection succeeds, Visual Studio configures IntelliSense to use the remote headers. For more information, see [IntelliSense for headers on remote systems](configure-a-linux-project.md#remote_intellisense). - If the connection fails, an info bar with error information appears and the fields that you may need to change are outlined in red. + If the connection fails, an info bar with error information appears and the fields that you might need to change are outlined in red. :::image type="content" source="media/connect-to-your-remote-linux-computer/settings-connection-manager-error-updated.png" alt-text="Screenshot of the Visual Studio Connect to Remote System window. The host name and port fields are outlined in red to indicate incorrect entries."::: @@ -114,13 +116,13 @@ If `ssh` isn't already set up and running on your Linux system, follow these ste ## Host key verification -In Visual Studio version 16.10 or later, you're asked to verify the server's host key fingerprint whenever Visual Studio connects to a remote system for the first time. You may be familiar with this process if you've used the OpenSSH command-line client or PuTTY before. The fingerprint identifies the server. Visual Studio uses the fingerprint to ensure it's connecting to the intended and trusted server. +In Visual Studio version 16.10 or later, you're asked to verify the server's host key fingerprint whenever Visual Studio connects to a remote system for the first time. You might be familiar with this process if you've used the OpenSSH command-line client or PuTTY before. The fingerprint identifies the server. Visual Studio uses the fingerprint to ensure it connects to the intended and trusted server. The first time Visual Studio establishes a new remote connection, you're asked to accept or deny the host key fingerprint presented by the server. Or, anytime there are changes to a cached fingerprint. You can also verify a fingerprint on demand: select a connection in the Connection Manager and choose **Verify**. If you upgrade to Visual Studio 16.10 or later from an older version, it treats any existing remote connections as new connections. You're prompted to accept the host key fingerprint first. Then, Visual Studio establishes a connection and caches the accepted fingerprint. -You can also update remote connections from `ConnectionManager.exe` using the `update` argument. +You can also update remote connections from *`ConnectionManager.exe`* using the `update` argument. ## Supported SSH algorithms @@ -137,13 +139,13 @@ Starting in Visual Studio version 16.9, support for older, insecure SSH algorith First, a little background. You can't select the SSH algorithm to use from Visual Studio. Instead, the algorithm is determined during the initial handshake with the SSH server. Each side (client and server) provides a list of algorithms it supports, and then the first algorithm common to both is selected. The connection succeeds as long as there's at least one algorithm in common between Visual Studio and the server for encryption, HMAC, key exchange, and so on. -The Open SSH configuration file (*`sshd_config`*) doesn't configure which algorithm to use by default. The SSH server should use secure defaults when no algorithms are specified. Those defaults depend on the version and vendor of the SSH server. If Visual Studio doesn't support those defaults, you'll likely see an error like: "Could not connect to the remote system. No common client to server HMAC algorithm was found." The error may also appear if the SSH server is configured to use algorithms that Visual Studio doesn't support. +The Open SSH configuration file (*`sshd_config`*) doesn't configure which algorithm to use by default. The SSH server should use secure defaults when no algorithms are specified. Those defaults depend on the version and vendor of the SSH server. If Visual Studio doesn't support those defaults, you'll likely see an error like: *Could not connect to the remote system. No common client to server HMAC algorithm was found.* The error might also appear if the SSH server is configured to use algorithms that Visual Studio doesn't support. -The default SSH server on most modern Linux distributions should work with Visual Studio. However, you may be running an older SSH server that's configured to use older, insecure algorithms. The following example explains how to update to more secure versions. +The default SSH server on most modern Linux distributions should work with Visual Studio. However, you might be running an older SSH server that's configured to use older, insecure algorithms. The following example explains how to update to more secure versions. -In the following example, the SSH server uses the insecure `hmac-sha1` algorithm, which Visual Studio 16.9 doesn't support. If the SSH server uses OpenSSH, you can edit the `/etc/ssh/sshd_config` file as shown below to enable more secure algorithms. For other SSH servers, refer to the server's documentation for how to configure them. +In this example, the SSH server uses the insecure `hmac-sha1` algorithm, which Visual Studio 16.9 doesn't support. If the SSH server uses OpenSSH, you can edit the command `/etc/ssh/sshd_config` to enable more secure algorithms. For other SSH servers, refer to the server's documentation for how to configure them. -First, verify that the set of algorithms your server is using includes algorithms supported by Visual Studio. Run the following command on the remote machine to list the algorithms supported by the server: +First, verify that the set of algorithms your server is using includes algorithms supported by Visual Studio. Run the following command on the remote machine to list the algorithms supported by the server: ```bash ssh -Q cipher; ssh -Q mac; ssh -Q kex; ssh -Q key @@ -169,7 +171,7 @@ These examples can be added anywhere in `/etc/ssh/sshd_config`. Ensure that they After editing the file, restart the SSH server (`sudo service ssh restart` on Ubuntu) and attempt to connect again from Visual Studio. -#### Cipher example +#### Cipher example Add: `Ciphers ` For example: `Ciphers aes128-cbc,aes256-cbc` @@ -191,19 +193,19 @@ For example: `HostKeyAlgorithms ecdsa-sha2-nistp256,ecdsa-sha2-nistp384` ## Logging for remote connections - You can enable logging to help troubleshoot connection problems. On the menu bar, select **Tools > Options**. In the **Options** dialog, select **Cross Platform > Logging**: +You can enable logging to help troubleshoot connection problems. On the menu bar, select **Tools > Options**. In the **Options** dialog, select **Cross Platform > Logging**: - :::image type="complex" source="media/remote-logging-vs2019.png" alt-text="Screenshot of the Visual Studio options screen."::: - The options are open to Cross Platform > Connection Manager > Logging. Enable logging is checked, log to a file is checked, the logfile directory is set the documents folder, and log to the 'Cross Platform Logging' pane in the output window is checked. - :::image-end::: +:::image type="complex" source="media/remote-logging-vs2019.png" alt-text="Screenshot of the Visual Studio options screen."::: +The options are open to Cross Platform > Connection Manager > Logging. Enable logging is checked, log to a file is checked, the logfile directory is set the documents folder, and log to the 'Cross Platform Logging' pane in the output window is checked. +:::image-end::: - Logs include connections, all commands sent to the remote machine (their text, exit code and execution time), and all output from Visual Studio to the shell. Logging works for any cross-platform CMake project or MSBuild-based Linux project in Visual Studio. +Logs include connections, all commands sent to the remote machine (their text, exit code and execution time), and all output from Visual Studio to the shell. Logging works for any cross-platform CMake project or MSBuild-based Linux project in Visual Studio. - You can configure the output to go to a file or to the **Cross Platform Logging** pane in the Output window. For MSBuild-based Linux projects, MSBuild commands sent to the remote machine aren't routed to the **Output Window** because they're emitted out-of-process. Instead, they're logged to a file, with a prefix of "msbuild_". +You can configure the output to go to a file or to the **Cross Platform Logging** pane in the Output window. For MSBuild-based Linux projects, MSBuild commands sent to the remote machine aren't routed to the **Output Window** because they're emitted out-of-process. Instead, they're logged to a file, with a prefix of `msbuild_`. ## Command-line utility for the Connection Manager -**Visual Studio 2019 version 16.5 or later**: `ConnectionManager.exe` is a command-line utility to manage remote development connections outside of Visual Studio. It's useful for tasks such as provisioning a new development machine. Or, you can use it to set up Visual Studio for continuous integration. For examples and a complete reference to the ConnectionManager command, see [ConnectionManager reference](connectionmanager-reference.md). +**Visual Studio 2019 version 16.5 or later**: *`ConnectionManager.exe`* is a command-line utility to manage remote development connections outside of Visual Studio. It's useful for tasks such as provisioning a new development machine. Or, you can use it to set up Visual Studio for continuous integration. For examples and a complete reference to the ConnectionManager command, see [ConnectionManager reference](connectionmanager-reference.md). ::: moniker-end @@ -231,7 +233,7 @@ Visual Studio's Linux support has a dependency on TCP port forwarding. Both `rsy ::: moniker range="msvc-150" -In Visual Studio 2017, you use the same steps to connect to WSL as you use for a remote Linux machine. Use `localhost` for the **Host Name**. +In Visual Studio 2017, you use the same steps to connect to Windows Subsystem for Linux (WSL) as you use for a remote Linux machine. Use `localhost` for the **Host Name**. ::: moniker-end @@ -247,7 +249,7 @@ sudo apt install g++ gdb make ninja-build rsync zip ### Fix WSL `localhost` connection problems -When connecting to Windows Subsystem for Linux (WSL) on `localhost`, you may run into a conflict with the Windows `ssh` client on port 22. In WSL, change the port that `ssh` expects requests from to 23 in `/etc/ssh/sshd_config`: +When connecting to WSL on `localhost`, you might run into a conflict with the Windows `ssh` client on port 22. In WSL, change the port that `ssh` expects requests from to 23 in `/etc/ssh/sshd_config`: ```bash Port 23 @@ -270,9 +272,9 @@ To configure an MSBuild project for WSL, see [Configure a Linux project](configu ::: moniker-end -## See Also +## Related content -[Configure a Linux project](configure-a-linux-project.md)\ -[Configure a Linux CMake project](cmake-linux-project.md)\ -[Deploy, run, and debug your Linux project](deploy-run-and-debug-your-linux-project.md)\ -[Configure CMake debugging sessions](../build/configure-cmake-debugging-sessions.md) \ No newline at end of file +- [Configure a Linux MSBuild C++ project in Visual Studio](configure-a-linux-project.md) +- [Create a CMake Linux project in Visual Studio](cmake-linux-project.md) +- [Deploy, run, and debug your Linux MSBuild project](deploy-run-and-debug-your-linux-project.md) +- [Configure CMake debugging sessions](../build/configure-cmake-debugging-sessions.md) \ No newline at end of file diff --git a/docs/windows/creating-an-icon-or-other-image-image-editor-for-icons.md b/docs/windows/creating-an-icon-or-other-image-image-editor-for-icons.md index 004896d77c5..c98a034b30a 100644 --- a/docs/windows/creating-an-icon-or-other-image-image-editor-for-icons.md +++ b/docs/windows/creating-an-icon-or-other-image-image-editor-for-icons.md @@ -1,24 +1,25 @@ --- -description: "Learn more about: How To: Create an Icon or Other Image" -title: "How To: Create an Icon or Other Image" -ms.date: "02/15/2019" +description: "Create an icon or other image" +title: "Learn how to create a new image, bitmap, icon, cursor, or toolbar, and then use the Image Editor to customize its appearance." +ms.date: 03/21/2025 +ms.topic: how-to helpviewer_keywords: ["bitmaps [C++]", "images [C++], creating", "resources [C++], creating images", "bitmaps [C++], creating", "graphics [C++], creating", "Image editor [C++], creating images", "cursors [C++], creating", "image resources [C++], display devices", "icons [C++], creating", "cursors [C++], types", "icons [C++]", "Image editor [C++], icons and cursors", "cursors [C++]", "display devices [C++], creating icons for", "cursors [C++], hot spots", "icons [C++], types", "icons [C++], creating", "display devices [C++], creating image", "images [C++], creating for display devices", "icons [C++], inserting", "New Image Type dialog box [C++]", "Custom Image dialog box [C++]", "Open Image dialog box [C++]", "New Device Image command", "display devices [C++], adding images", "cursors [C++], adding", "icons, adding", "display devices [C++], copying images", "cursors [C++], copying", "icons, copying", "cursors [C++], deleting", "display devices [C++], deleting device image", "icons, erasing", "icons, deleting", "cursors [C++], undoing changes", "icons, undoing changes", "cursors [C++], screen regions", "inverse colors [C++], device images", "transparent regions, device images", "transparency, device images", "Image editor [C++], device images", "inverse regions, device images", "cursors [C++], transparent regions", "screen colors", "regions, transparent", "icons [C++], transparent regions", "display devices [C++], transparent and screen regions", "transparent regions in devices", "regions, inverse", "colors [C++], Image editor", "device projects [C++], transparent images", "icons [C++], screen regions", "256-color palette", "cursors [C++], color", "colors [C++], icons", "colors [C++], cursors", "icons, color", "colors [C++], icons and cursors", "color palettes, 256-color", "palettes, 256-color", "cursors [C++], hot spots", "hot spots", ".gif files [C++], saving bitmaps as", "jpg files [C++], saving bitmaps as", "jpeg files [C++], saving bitmaps as", ".jpg files [C++], saving bitmaps as", "Image editor [C++], converting image formats", "gif files [C++], saving bitmaps as", "bitmaps [C++], converting formats", ".jpeg files [C++], saving bitmaps as", "graphics [C++], converting formats", "images [C++], converting formats", "images [C++], stand-alone editing", "Image editor [C++], converting image formats", "graphics [C++], converting formats", "images [C++], converting formats"] ms.assetid: 66db3fb2-cfc1-48a2-9bdd-53f61eb7ee30 --- -# How To: Create an Icon or Other Image +# Create an icon or other image You can create a new image, bitmap, icon, cursor, or toolbar, and then use the **Image Editor** to customize its appearance. You can also create a new bitmap patterned after a [resource template](./how-to-create-a-resource-script-file.md). -## Icons and Cursors: Image Resources for Display Devices +## Image resources for display devices -Icons and cursors are graphical resources that can contain multiple images in different sizes and color schemes for different types of display devices. A cursor also has a hot spot, the location Windows uses to track its position. Both icons and cursors are created and edited using the **Image Editor**, as are bitmaps and other images. +Icons and cursors are graphical resources that can contain multiple images in different sizes and color schemes for different types of display devices. A cursor also has a hot spot, which is the location that Windows uses to track its position. Both icons and cursors are created and edited using the **Image Editor**, as are bitmaps and other images. When you create a new icon or cursor, the **Image Editor** first creates an image of a standard type. The image is initially filled with the screen (transparent) color. If the image is a cursor, the hot spot is initially the upper-left corner with coordinates `0,0`. -By default, the **Image Editor** supports the creation of additional images for the devices shown in the following table. You can create images for other devices by typing width, height, and color-count parameters into the **Custom Image** dialog box. +By default, the **Image Editor** supports the creation of new images for the devices shown in the following table. You can create images for other devices by typing width, height, and color-count parameters into the **Custom Image** dialog box. -|Color|Width (pixels)|Height (pixels)| -|-----------|----------------------|-----------------------| +|Color count|Width (pixels)|Height (pixels)| +|-----|--------------|---------------| |Monochrome|16|16| |Monochrome|32|32| |Monochrome|48|48| @@ -37,12 +38,12 @@ By default, the **Image Editor** supports the creation of additional images for ### Create a device image (icon or cursor) -When you create a new icon or cursor resource, the **Image Editor** first creates an image in a specific style (32 × 32, 16 colors for icons and 32 × 32, Monochrome for cursors). You can then add images in different sizes and styles to the initial icon or cursor and edit each additional image, as needed, for the different display devices. You can also edit an image by using a cut-and-paste operation from an existing image type or from a bitmap created in a graphics program. +When you create a new icon or cursor resource, the **Image Editor** first creates an image in a specific style: 32 × 32 pixels and 16 colors for icons; 32 × 32 pixels and monochrome for cursors. You can then add images in different sizes and styles to the initial icon or cursor, and edit each additional image, as needed, for the different display devices. You can also edit an image by using a cut-and-paste operation from an existing image type or from a bitmap created in a graphics program. When you open the icon or cursor resource in the [Image Editor](../windows/image-editor-for-icons.md), the image most closely matching the current display device is opened by default. > [!NOTE] -> If your project doesn't already contain an .rc file, see [Creating a New Resource Script File](../windows/how-to-create-a-resource-script-file.md). +> If your project doesn't already contain an *`.rc`* file, see [Create Resources (C++)](../windows/how-to-create-a-resource-script-file.md). The **New \ Image Type** dialog box enables you to create a new device image of a specified type. To open the **New \ Image** dialog box, go to menu **Image** > **New Image Type**. The following properties included are **Target Image Type** and **Custom**. @@ -50,40 +51,46 @@ The **Target Image Type** property lists the available image types where you sel :::row::: :::column span=""::: - 16 x 16, 16 colors\ - 32 x 32, 16 colors\ - 48 x 48, 16 colors\ - 64 x 64, 16 colors\ - 96 x 96, 16 colors + 16 x 16, 1 bit\ + 16 x 16, 24 bit\ + 16 x 16, 4 bit\ + 128 x 128, 1 bit\ + 128 x 128, 24 bit\ + 128 x 128, 4 bit\ + 128 x 128, 8 bit :::column-end::: :::column span=""::: - 16 x 16, 256 colors\ - 32 x 32, 256 colors\ - 48 x 48, 256 colors\ - 64 x 64, 256 colors\ - 96 x 96, 256 colors + 256 x 256, 1 bit\ + 256 x 256, 24 bit\ + 256 x 256, 4 bit\ + 256 x 256, 8 bit\ + 32 x 32, 1 bit\ + 32 x 32, 24 bit\ + 32 x 32, 4 bit :::column-end::: :::column span=""::: - 16 x 16, Monochrome\ - 32 x 32, Monochrome\ - 48 x 48, Monochrome\ - 64 x 64, Monochrome\ - 96 x 96, Monochrome + 48 x 48, 1 bit\ + 48 x 48, 24 bit\ + 48 x 48, 4 bit\ + 64 x 64, 1 bit\ + 64 x 64, 24 bit\ + 64 x 64, 4 bit\ + 64 x 64, 8 bit :::column-end::: :::row-end::: > [!NOTE] -> Any existing images will not be displayed in this list. +> Any existing images are not displayed in this list. The **Custom** property opens the **Custom Image** dialog box in which you can create a new image with a custom size and number of colors. -The **Custom Image** dialog box enables you to create a new image with a custom size and number of colors. The following properties included are: +The **Custom Image** dialog box allows you to create a new image with a custom size and number of colors. The following properties included are: |Property|Description| |---|---| -|**Width**|Provides a space for you to enter the width of the custom image in pixels (1 - 512, limit of 2048).| -|**Height**|Provides a space for you to enter the height for the custom image in pixels (1 - 512, limit of 2048).| -|**Colors**|Provides a space for you to choose the number of colors for the custom image: 2, 16, or 256.| +|**Width**|Provides a space for you to enter the width of the custom image in pixels (1 - 512, limit of 2048)| +|**Height**|Provides a space for you to enter the height for the custom image in pixels (1 - 512, limit of 2048)| +|**Colors**|Provides a space for you to choose the number of bits for the custom image: 1, 4, 8, 24| Use the **Open \ Image** dialog box to open device images in C++ projects. It lists existing device images in the current resource (images that are part of the current resource). The following property included is: @@ -93,9 +100,9 @@ Use the **Open \ Image** dialog box to open device images in C++ project #### To create a new icon or cursor -1. In [Resource View](how-to-create-a-resource-script-file.md#create-resources), right-click your *.rc* file, then choose **Insert Resource**. If you already have an existing image resource in your *.rc* file, such as a cursor, you can right-click the **Cursor** folder and select **Insert Cursor**. +1. In [Resource View](how-to-create-a-resource-script-file.md#create-resources), right-click your *`.rc`* file, then choose **Add Resource**. If you already have an existing image resource in your *`.rc`* file, such as a cursor, you can right-click the **Cursor** folder and select **Insert Cursor**. -1. In the [Insert Resource dialog box](./how-to-create-a-resource-script-file.md), select **Icon** or **Cursor** and choose **New**. For icons, this action creates an icon resource with a 32 × 32, 16-color icon. For cursors, a 32 × 32, Monochrome (2-color) image is created. +1. In the [Add Resource dialog box](./how-to-create-a-resource-script-file.md), select **Icon** or **Cursor** and choose **New**. For icons, this action creates an icon resource with a 32 × 32, 16-color icon. For cursors, a 32 × 32, monochrome (two-color) image is created. If a plus sign (**+**) appears next to the image resource type in the **Insert Resource** dialog box, it means that toolbar templates are available. Select the plus sign to expand the list of templates, select a template, and choose **New**. @@ -120,11 +127,11 @@ Use the **Open \ Image** dialog box to open device images in C++ project While the icon image is displayed in the **Image Editor**, go to menu **Image** > **Delete Device Image**. When you delete the last icon image in the resource, the resource is also deleted. > [!NOTE] -> When you press the **Del** key, the images and colors you have drawn on an icon are deleted but the icon remains and you can now redesign it. If you press **Del** by mistake, press **Ctrl**+**Z** to undo the action. +> When you press the **Del** key, the images and colors you drew on an icon are deleted but the icon remains and you can now redesign it. If you press **Del** by mistake, press **Ctrl**+**Z** to undo the action. ### To create transparent or inverse regions in device images -In the [Image Editor](../windows/image-editor-for-icons.md), the initial icon or cursor image has a transparent attribute. Although icon and cursor images are rectangular, many don't appear so because parts of the image are transparent and the underlying image on the screen shows through the icon or cursor. When you drag an icon, parts of the image may appear in an inverted color. You create this effect by setting the screen color and inverse color in the [Colors window](./image-editor-for-icons.md). +In the [Image Editor](../windows/image-editor-for-icons.md), the initial icon or cursor image has a transparent attribute. Although icon and cursor images are rectangular, many don't appear so because parts of the image are transparent and the underlying image on the screen shows through the icon or cursor. When you drag an icon, parts of the image might appear in an inverted color. You create this effect by setting the screen color and inverse color in the [Colors window](./image-editor-for-icons.md). The screen and inverse colors you apply to icons and cursors either shape and color the derived image or assign inverse regions. The colors indicate parts of the image that have those attributes. You can change the colors that represent the screen-color and inverse-color attributes in editing. These changes don't affect the appearance of the icon or cursor in your application. @@ -154,9 +161,9 @@ Using the **Image Editor**, icons and cursors can be sized large (64 × 64) with #### To create a 256-color icon or cursor -1. In [Resource View](how-to-create-a-resource-script-file.md#create-resources), right-click your *.rc* file, then choose **Insert Resource**. If you already have an existing image resource in your *.rc* file, such as a cursor, you can right-click the **Cursor** folder and select **Insert Cursor**. +1. In [Resource View](how-to-create-a-resource-script-file.md#create-resources), right-click your *`.rc`* file, then choose **Add Resource**. If you already have an existing image resource in your *`.rc`* file, such as a cursor, you can right-click the **Cursor** folder and select **Insert Cursor**. -1. In the [Insert Resource dialog box](./how-to-create-a-resource-script-file.md), select **Icon** or **Cursor** and choose **New**. +1. In the [Add Resource dialog box](./how-to-create-a-resource-script-file.md), select **Icon** or **Cursor** and choose **New**. 1. Go to menu **Image** > **New Device Image** and select the 256-color image style you want. @@ -168,7 +175,7 @@ To draw with a selection from the 256-color palette, you need to select the colo 1. Choose a color from the 256 colors displayed in the **Colors** palette in the **Colors** window. - The color selected will become the current color in the **Colors** palette in the **Colors** window. + The color selected becomes the current color in the **Colors** palette in the **Colors** window. > [!NOTE] > The initial palette used for 256-color images matches the palette returned by the `CreateHalftonePalette` Windows API. All icons intended for the Windows shell should use this palette to prevent flicker during palette realization. @@ -185,7 +192,7 @@ The hot spot of a cursor is the point to which Windows refers in tracking the cu ### To create and save a bitmap as a .gif or .jpeg -When you create a bitmap, the image is created in bitmap format (.bmp). You can, however, save the image as a GIF or JPEG or in other graphic formats. +When you create a bitmap, the image is created in bitmap format (*`.bmp`*). You can, however, save the image as a GIF or JPEG or in other graphic formats. > [!NOTE] > This process doesn't apply to icons and cursors. @@ -203,7 +210,7 @@ When you create a bitmap, the image is created in bitmap format (.bmp). You can, 1. In the **Save File As** dialog box, type the name you want to give the file and the extension that denotes the file format you want in the **File Name** box. For example, *myfile.gif*. > [!NOTE] - > You must create or open the bitmap outside of your project in order to save it as another file format. If you create or open it within your project, the **Save As** command will be unavailable. For more information, see [Viewing Resources in a Resource Script File Outside of a Project (Standalone)](./how-to-create-a-resource-script-file.md). + > You must create or open the bitmap outside of your project in order to save it as another file format. If you create or open it within your project, the **Save As** command is unavailable. For more information, see [Viewing Resources in a Resource Script File Outside of a Project (Standalone)](./how-to-create-a-resource-script-file.md). 1. Select **Save**. @@ -221,11 +228,11 @@ You can open GIF or JPEG images in the **Image Editor** and save them as bitmaps ### To add a new image resource to an unmanaged C++ project -1. In [Resource View](how-to-create-a-resource-script-file.md#create-resources), right-click your *.rc* file, then choose **Insert Resource**. If you already have an existing image resource in your *.rc* file, such as a cursor, you can simply right-click the **Cursor** folder and select **Insert Cursor**. +1. In [Resource View](how-to-create-a-resource-script-file.md#create-resources), right-click your *`.rc`* file, then choose **Add Resource**. If you already have an existing image resource in your *`.rc`* file, such as a cursor, you can right-click the **Cursor** folder and select **Insert Cursor**. -1. In the [Insert Resource dialog box](./how-to-create-a-resource-script-file.md), select the type of image resource you'd like to create (**Bitmap**, for example) then choose **New**. +1. In the [Add Resource dialog box](./how-to-create-a-resource-script-file.md), select the type of image resource you'd like to create (**Bitmap**, for example) then choose **New**. - If a plus sign (**+**) appears next to the image resource type in the **Insert Resource** dialog box, it means that toolbar templates are available. Select the plus sign to expand the list of templates, select a template, and choose **New**. + If a plus sign (**+**) appears next to the image resource type in the **Add Resource** dialog box, it means that toolbar templates are available. Select the plus sign to expand the list of templates, select a template, and choose **New**. ### To add a new image resource to a project in a .NET programming language @@ -239,17 +246,13 @@ You can open GIF or JPEG images in the **Image Editor** and save them as bitmaps The resource is added to your project in **Solution Explorer** and the resource opens in the [Image Editor](../windows/image-editor-for-icons.md). You can now use all the tools available in the **Image Editor** to modify your image. For more information on adding images to a managed project, see [Loading a Picture at Design Time](/dotnet/framework/winforms/controls/how-to-load-a-picture-using-the-designer-windows-forms). -## Requirements - -None - -## See also +## Related content -[Image Editor for Icons](../windows/image-editor-for-icons.md)
-[How to: Edit an Image](../windows/selecting-an-area-of-an-image-image-editor-for-icons.md)
-[How to: Use a Drawing Tool](../windows/using-a-drawing-tool-image-editor-for-icons.md)
-[How to: Work with Color](../windows/working-with-color-image-editor-for-icons.md)
-[Accelerator Keys](../windows/accelerator-keys-image-editor-for-icons.md)
+- [Image Editor for Icons](../windows/image-editor-for-icons.md) +- [How to: Edit an Image](../windows/selecting-an-area-of-an-image-image-editor-for-icons.md) +- [How to: Use a Drawing Tool](../windows/using-a-drawing-tool-image-editor-for-icons.md) +- [How to: Work with Color](../windows/working-with-color-image-editor-for-icons.md) +- [Accelerator Keys](../windows/accelerator-keys-image-editor-for-icons.md) 6!AlGr!u|z2&IgMC diff --git a/docs/build-insights/tutorials/media/templates-view-before-fix.png b/docs/build-insights/tutorials/media/templates-view-before-fix.png new file mode 100644 index 0000000000000000000000000000000000000000..5c52be969024c2a7510a1846efa2157f038a8717 GIT binary patch literal 66563 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 Date: Sat, 12 Jul 2025 22:12:29 +0800 Subject: [PATCH 1033/2255] Fix typos in "What's new for C++ in Visual Studio 2022" topic --- ...what-s-new-for-visual-cpp-in-visual-studio.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 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 c603b8f9169..51b810c8aa6 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 @@ -91,7 +91,7 @@ A quick highlight of some new features: - **Standard Library enhancements** - - Standard library support for couroutines. In this example from [P2502R2](https://wg21.link/p2502r2), the `fib` function is a coroutine. When the `co_yield` statement is executed, `fib` is suspended and the value is returned to the caller. You can resume the `fib` coroutine later to produce more values without requiring any manual state handling: + - Standard library support for coroutines. In this example from [P2502R2](https://wg21.link/p2502r2), the `fib` function is a coroutine. When the `co_yield` statement is executed, `fib` is suspended and the value is returned to the caller. You can resume the `fib` coroutine later to produce more values without requiring any manual state handling: ```cpp std::generator fib() @@ -137,8 +137,8 @@ A quick highlight of some new features: :::image-end::: To use this feature, ensure the following are turned on: - - **Tools**>**Options**> **Preview Features** > **Pull Request Comments** - - **Tools** >**Options** > **GitHub** > **Copilot** > **Source Control Integration** > **Enable Git preview features**. + - **Tools** > **Options** > **Preview Features** > **Pull Request Comments** + - **Tools** > **Options** > **GitHub** > **Copilot** > **Source Control Integration** > **Enable Git preview features**. - GitHub Copilot Edits is a new feature that can make changes across multiple files in your project. To start a new Edits session, click **Create new edit session** at the top of the GitHub Copilot Chat window: @@ -283,7 +283,7 @@ A partial list of new features: :::image-end::: - **Breakpoint/Tracepoint Creation**: You can now create conditional breakpoints or tracepoints directly from expressions in the source code from the right-click menu. This works on property or field names and values from autos, locals, watch windows, or DataTips. - **Attach to Process Dialog**: The functionality provided by the Attach to Process dialog is more user-friendly. You can now easily switch between tree and list views, organize processes better with collapsible sections, and select code types with a simplified combobox. Also, the "Select/Track Window" feature is now easier to use, allowing two-way tracking: selecting a process highlights its window, and clicking on a window selects its process. -- **GitHub Copilot Integration**: GitHub Copilot and Copilot Chat extensions are now unified and now ship directly in Visual Studio. To install it, install the **GitHub Copilot** component in the **Visual Studio Installer**: +- **GitHub Copilot Integration**: GitHub Copilot and Copilot Chat extensions are now unified and ship directly in Visual Studio. To install it, install the **GitHub Copilot** component in the **Visual Studio Installer**: :::image type="complex" source="media/github-copilot-install-option.png" alt-text="Screenshot of the Visual Studio Installer GitHub Copilot installation option." lightbox="media/github-copilot-install-option-expanded.png"::: The Visual Studio installer is open to the Workloads tab. In the installation details pane, GitHub Copilot is shown as selected. :::image-end::: @@ -347,7 +347,7 @@ A partial list of new features: - More Unreal Engine support: - Unreal Engine Test Adapter lets you discover, run, manage, and debug your Unreal Engine tests without leaving the Visual Studio IDE. - With Unreal Engine Code Snippets, you can find common Unreal Engine constructs as snippets in your member list. - - Build Insights is now integrated with Visual Studio 2022 and works with MSBuild and CMake projects using MSVC. You can now see additional information about the compilation of a function such as how long it took to compile and the number of ForceInlines, and the impact of header files on build time. For more information, see [Tutorial: Troubleshoot function inlining on build time](../build-insights/tutorials/build-insights-function-view.md) and [Tutorial: Troubleshoot header file impact on build time](../build-insights/tutorials/build-insights-included-files-view.md). + - Build Insights is now integrated with Visual Studio 2022 and works with MSBuild and CMake projects using MSVC. You can now see additional information about the compilation of a function such as how long it took to compile, the number of ForceInlines, and the impact of header files on build time. For more information, see [Tutorial: Troubleshoot function inlining on build time](../build-insights/tutorials/build-insights-function-view.md) and [Tutorial: Troubleshoot header file impact on build time](../build-insights/tutorials/build-insights-included-files-view.md). - Remote Linux unit test support now lets you run your CTest and GTest tests on your remote Linux machines from Visual Studio's Test Explorer, just like your local tests. ## What's new for C++ in Visual Studio version 17.7 @@ -402,7 +402,7 @@ A partial list of new features includes: A partial list of new features includes: -- `std::move`, `std::forward`, `std::move_if_noexcept`, and `std::forward_like` now don't produce function calls in generated code, even in debug mode. This change avoids named casts causing unnecessary overhead in debug builds. `/permissive-` (or an option that implies it, such as `/std:c++20` or `std:c++latest`) is required. +- `std::move`, `std::forward`, `std::move_if_noexcept`, and `std::forward_like` now don't produce function calls in generated code, even in debug mode. This change avoids named casts causing unnecessary overhead in debug builds. `/permissive-` (or an option that implies it, such as `/std:c++20` or `/std:c++latest`) is required. - Added [`[[msvc::intrinsic]]`](../cpp/attributes.md#msvcintrinsic). You can apply this attribute to nonrecursive functions consisting of a single cast, which take only one parameter. - Added support for Linux Console in the Integrated Terminal, which allows for terminal I/O. - Added initial experimental support for C11 atomic primitives (``). You can enable this experimental feature with the `/experimental:c11atomics` option in `/std:c11` mode or later. @@ -468,7 +468,7 @@ A partial list of new features in 17.4: (The compiler part isn't implemented yet. The library part was implemented in C++20 mode when Ranges support was initially implemented.) - [P0881R7](https://wg21.link/p0881r7) `` - - [P2301R1](https://wg21.link/p2301r1) Add A `pmr` Alias For `std::stacktrace` + - [P2301R1](https://wg21.link/p2301r1) Add a `pmr` alias for `std::stacktrace` - [P1328R1](https://wg21.link/p1328r1) `constexpr type_info::operator==()` - [P2440R1](https://wg21.link/p2440r1) `ranges::iota`, `ranges::shift_left`, `ranges::shift_right` - [P2441R2](https://wg21.link/p2441r2) `views::join_with` @@ -527,7 +527,7 @@ A partial list of new features in 17.2: - When you double-click an RTOS object in the tool window, it adds a watch for the object. - When you select the start and end values for the stack pointer in the RTOS tool window, it opens in the memory window. - Added thread awareness for device targets to the call stack window. - - Users can now select a pin icon next to peripherals, registers, or fields to pin them the top of the Peripheral View. + - Users can now select a pin icon next to peripherals, registers, or fields to pin them to the top of the Peripheral View. - Added implementations of the remaining C++20 defect reports (also known as *backports*). All C++20 features are now available under the **`/std:c++20`** option. For more information about the implemented backports, see the [VS 2022 Changelog](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-172) in the Microsoft/STL GitHub repository and the [MSVC's STL Completes `/std:c++20`](https://devblogs.microsoft.com/cppblog/msvcs-stl-completes-stdc20/) blog post. - We added various C++23 Library features, available under the **`/std:c++latest`** option. For more information about the new features, see the [STL Repo changelog](https://github.com/microsoft/STL/wiki/Changelog). - Improved performance of the initial C++ indexing by up to 20%, depending on the depth of the include graph. From 613a5b6ac56cbb12001d9ff69c038f1344fbf90c Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 12 Jul 2025 22:20:06 +0800 Subject: [PATCH 1034/2255] Fix undeclared identifier error in "What's new for C++ in Visual Studio 2022" topic --- docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 51b810c8aa6..222147dd0b4 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 @@ -107,7 +107,7 @@ A quick highlight of some new features: int answer_to_the_universe() { auto rng = fib() | std::views::drop(6) | std::views::take(3); - return std::ranges::fold_left(std::move(range), 0, std::plus{}); + return std::ranges::fold_left(std::move(rng), 0, std::plus{}); } ``` From 154f2c11a642291a3b1a1c73985003e2c0b687d2 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 12 Jul 2025 22:39:32 +0800 Subject: [PATCH 1035/2255] Update links for "For more information" tables in "What's new for C++ in Visual Studio 2022" topic --- ...what-s-new-for-visual-cpp-in-visual-studio.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 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 222147dd0b4..8d0e875857f 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 @@ -62,7 +62,7 @@ A quick highlight of some of the new features: |---|---| | What's new for C++ developers | [What's New for C++ Developers in Visual Studio 2022 17.13](https://devblogs.microsoft.com/cppblog/whats-new-for-c-developers-in-visual-studio-2022-17-13/) | | Standard Library (STL) C++26 and C++23 features, Language Working Group (LWG) issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.13](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-1713) | -| New features in the IDE |[Visual Studio 2022 version 17.13 Release Notes](/visualstudio/releases/2022/release-notes) | +| New features in the IDE |[Visual Studio 2022 version 17.13 Release Notes](/visualstudio/releases/2022/release-notes-v17.13) | | C++ language updates | [MSVC compiler updates in Visual Studio 2022 17.13](https://devblogs.microsoft.com/cppblog/msvc-compiler-updates-in-visual-studio-2022-version-17-13/) | | C++ language conformance improvements | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022 17.13](cpp-conformance-improvements.md#improvements_1713) | @@ -163,7 +163,7 @@ A quick highlight of some new features: |---|---| | What's new for C++ developers | [What's New for C++ Developers in Visual Studio 2022 17.12](https://devblogs.microsoft.com/cppblog/whats-new-for-c-developers-in-visual-studio-2022-17-12/) | | Standard Library (STL) merged C++26 and C++23 features, Language Working Group (LWG) issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.12](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-1712) | -| New features in the Visual Studio 17.12 IDE |[Visual Studio 2022 version 17.12 Release Notes](/visualstudio/releases/2022/release-notes) | +| New features in the Visual Studio 17.12 IDE |[Visual Studio 2022 version 17.12 Release Notes](/visualstudio/releases/2022/release-notes-v17.12) | | C++ language conformance improvements in Visual Studio 2022 17.12 | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022 17.12](cpp-conformance-improvements.md#improvements_1712) | A quick highlight of some of the new features: @@ -211,8 +211,8 @@ A quick highlight of some of the new features: | For more information about | See | |---|---| | What's new for C++ developers | [What's New for C++ Developers in Visual Studio 2022 17.11](https://devblogs.microsoft.com/cppblog/whats-new-for-c-developers-in-visual-studio-2022-17-11/) | -| Standard Library (STL) merged C++26 and C++23 features, C++20 defect reports, Language Working Group (LWG) issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.11](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-1711) | -| New features in the Visual Studio 17.11 IDE |[Visual Studio 2022 version 17.11 Release Notes](/visualstudio/releases/2022/release-notes) | +| Standard Library (STL) merged C++26 and C++23 features, C++20 defect reports, Language Working Group (LWG) issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.11](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-1711) | +| New features in the Visual Studio 17.11 IDE |[Visual Studio 2022 version 17.11 Release Notes](/visualstudio/releases/2022/release-notes-v17.11) | | C++ language conformance improvements in Visual Studio 2022 17.11 | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022 17.11](cpp-conformance-improvements.md#improvements_1711) | A partial list of new features: @@ -262,8 +262,8 @@ A partial list of new features: | For more information about | See | |---|---| | What's new for C++ developers | [What's new for C++ Developers in Visual Studio 2022 17.10](https://devblogs.microsoft.com/cppblog/whats-new-for-c-developers-in-visual-studio-2022-17-10/) | -| Standard Library (STL) merged C++26 and C++23 features, C++20 defect reports, Language Working Group (LWG) issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.10](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-1710) | -| New features in the Visual Studio 17.10 IDE |[Visual Studio 2022 version 17.10 Release Notes](/visualstudio/releases/2022/release-notes) | +| Standard Library (STL) merged C++26 and C++23 features, C++20 defect reports, Language Working Group (LWG) issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.10](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-1710) | +| New features in the Visual Studio 17.10 IDE |[Visual Studio 2022 version 17.10 Release Notes](/visualstudio/releases/2022/release-notes-v17.10) | | C++ language conformance improvements in Visual Studio 2022 17.10 | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022 17.10](cpp-conformance-improvements.md#improvements_1710) | A partial list of new features: @@ -484,7 +484,7 @@ A partial list of new features in 17.4: | For more information about | See | |---|---| -| What's new for C++ developers | [C++ improvements in 17.3](https://devblogs.microsoft.com/visualstudio/visual-studio-2022-17-3-is-now-available/#c-improvements) | +| What's new for C++ developers | [C++ improvements in 17.3](https://devblogs.microsoft.com/visualstudio/visual-studio-2022-17-3-is-now-available/#c++-improvements) | | Standard Library (STL) merged C++23 features, Language Working Group (LWG) issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.3](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-173) | | New features in the Visual Studio 17.3 IDE | [Visual Studio 2022 version 17.3 Release Notes](/visualstudio/releases/2022/release-notes-v17.3) | | C++ language conformance improvements in Visual Studio 2022 17.3 | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022](cpp-conformance-improvements.md#improvements_173) | @@ -559,7 +559,7 @@ A partial list of new features in 17.1: | For more information about | See | |---|---| | New features in the Visual Studio 17.0 IDE | [Visual Studio 2022 version 17.0 Release Notes](/visualstudio/releases/2022/release-notes-v17.0) | -| Standard Library (STL) merged C++23 and C++26 features, C++20 defect reports, Language Working Group (LWG) issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.0](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-1710) | +| Standard Library (STL) merged C++23 and C++26 features, C++20 defect reports, Language Working Group (LWG) issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.0](https://github.com/microsoft/STL/wiki/VS-2022-Changelog#vs-2022-170) | | C++ language conformance improvements in Visual Studio 2022 17.0 | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022 17.10](cpp-conformance-improvements.md#improvements_170) | An overview of some of the new features in Visual Studio 2022 version 17.0: From 36d9758a419c2da3f27da6fa8148d08d370a8875 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 12 Jul 2025 23:00:48 +0800 Subject: [PATCH 1036/2255] Convert C Runtime errors list into a table --- .../c-runtime-errors-r6002-through-r6035.md | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/docs/error-messages/tool-errors/c-runtime-errors-r6002-through-r6035.md b/docs/error-messages/tool-errors/c-runtime-errors-r6002-through-r6035.md index 97bc308ef10..d9c118743eb 100644 --- a/docs/error-messages/tool-errors/c-runtime-errors-r6002-through-r6035.md +++ b/docs/error-messages/tool-errors/c-runtime-errors-r6002-through-r6035.md @@ -13,21 +13,23 @@ The C Runtime library (CRT) may report a runtime error when your app is loaded o ## C Runtime errors -[C Runtime Error R6002](../../error-messages/tool-errors/c-runtime-error-r6002.md) \ -[C Runtime Error R6008](../../error-messages/tool-errors/c-runtime-error-r6008.md) \ -[C Runtime Error R6009](../../error-messages/tool-errors/c-runtime-error-r6009.md) \ -[C Runtime Error R6016](../../error-messages/tool-errors/c-runtime-error-r6016.md) \ -[C Runtime Error R6017](../../error-messages/tool-errors/c-runtime-error-r6017.md) \ -[C Runtime Error R6018](../../error-messages/tool-errors/c-runtime-error-r6018.md) \ -[C Runtime Error R6019](../../error-messages/tool-errors/c-runtime-error-r6019.md) \ -[C Runtime Error R6024](../../error-messages/tool-errors/c-runtime-error-r6024.md) \ -[C Runtime Error R6025](../../error-messages/tool-errors/c-runtime-error-r6025.md) \ -[C Runtime Error R6028](../../error-messages/tool-errors/c-runtime-error-r6028.md) \ -[C Runtime Error R6030](../../error-messages/tool-errors/c-runtime-error-r6030.md) \ -[C Runtime Error R6031](../../error-messages/tool-errors/c-runtime-error-r6031.md) \ -[C Runtime Error R6032](../../error-messages/tool-errors/c-runtime-error-r6032.md) \ -[C Runtime Error R6033](../../error-messages/tool-errors/c-runtime-error-r6033.md) \ -[C Runtime Error R6035](../../error-messages/tool-errors/c-runtime-error-r6035.md) +| Error | Message | +|--|--| +| [C Runtime Error R6002](../../error-messages/tool-errors/c-runtime-error-r6002.md) | floating-point support not loaded | +| [C Runtime Error R6008](../../error-messages/tool-errors/c-runtime-error-r6008.md) | not enough space for arguments | +| [C Runtime Error R6009](../../error-messages/tool-errors/c-runtime-error-r6009.md) | not enough space for environment | +| [C Runtime Error R6016](../../error-messages/tool-errors/c-runtime-error-r6016.md) | not enough space for thread data | +| [C Runtime Error R6017](../../error-messages/tool-errors/c-runtime-error-r6017.md) | unexpected multithread lock error | +| [C Runtime Error R6018](../../error-messages/tool-errors/c-runtime-error-r6018.md) | unexpected heap error | +| [C Runtime Error R6019](../../error-messages/tool-errors/c-runtime-error-r6019.md) | unable to open console device | +| [C Runtime Error R6024](../../error-messages/tool-errors/c-runtime-error-r6024.md) | not enough space for _onexit/atexit table | +| [C Runtime Error R6025](../../error-messages/tool-errors/c-runtime-error-r6025.md) | pure virtual function call | +| [C Runtime Error R6028](../../error-messages/tool-errors/c-runtime-error-r6028.md) | unable to initialize heap | +| [C Runtime Error R6030](../../error-messages/tool-errors/c-runtime-error-r6030.md) | CRT not initialized | +| [C Runtime Error R6031](../../error-messages/tool-errors/c-runtime-error-r6031.md) | Attempt to initialize the CRT more than once. This indicates a bug in your application. | +| [C Runtime Error R6032](../../error-messages/tool-errors/c-runtime-error-r6032.md) | Not enough space for locale information | +| [C Runtime Error R6033](../../error-messages/tool-errors/c-runtime-error-r6033.md) | Attempt to use MSIL code from this assembly during native code initialization. This indicates a bug in your application. It is most likely the result of calling an MSIL-compiled (/clr) function from a native constructor or from DllMain. | +| [C Runtime Error R6035](../../error-messages/tool-errors/c-runtime-error-r6035.md) | A module in this application is initializing the module's global security cookie while a function relying on that security cookie is active. Call __security_init_cookie earlier. | ## See also From 48ade32f35fce006898badc9e1ce92d08cb7072c Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 12 Jul 2025 23:02:19 +0800 Subject: [PATCH 1037/2255] Simplify superfluous relative links in "C Runtime errors (Rxxxx)" --- .../c-runtime-errors-r6002-through-r6035.md | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/error-messages/tool-errors/c-runtime-errors-r6002-through-r6035.md b/docs/error-messages/tool-errors/c-runtime-errors-r6002-through-r6035.md index d9c118743eb..1199507c3bf 100644 --- a/docs/error-messages/tool-errors/c-runtime-errors-r6002-through-r6035.md +++ b/docs/error-messages/tool-errors/c-runtime-errors-r6002-through-r6035.md @@ -9,27 +9,27 @@ ms.assetid: 78019050-9a30-4b61-8250-a5702e0e2393 The C Runtime library (CRT) may report a runtime error when your app is loaded or running. Even though each message refers to the Microsoft Visual C++ runtime library, it doesn't mean there's a bug in the library. These errors indicate either a bug in your app's code, or a condition that the runtime library can't handle, such as low memory. End users of your app may see these errors unless your write your app to prevent them, or to capture the errors and present a friendly error message to your users instead. -[!INCLUDE[error-boilerplate](../../error-messages/includes/error-boilerplate.md)] +[!INCLUDE[error-boilerplate](../includes/error-boilerplate.md)] ## C Runtime errors | Error | Message | |--|--| -| [C Runtime Error R6002](../../error-messages/tool-errors/c-runtime-error-r6002.md) | floating-point support not loaded | -| [C Runtime Error R6008](../../error-messages/tool-errors/c-runtime-error-r6008.md) | not enough space for arguments | -| [C Runtime Error R6009](../../error-messages/tool-errors/c-runtime-error-r6009.md) | not enough space for environment | -| [C Runtime Error R6016](../../error-messages/tool-errors/c-runtime-error-r6016.md) | not enough space for thread data | -| [C Runtime Error R6017](../../error-messages/tool-errors/c-runtime-error-r6017.md) | unexpected multithread lock error | -| [C Runtime Error R6018](../../error-messages/tool-errors/c-runtime-error-r6018.md) | unexpected heap error | -| [C Runtime Error R6019](../../error-messages/tool-errors/c-runtime-error-r6019.md) | unable to open console device | -| [C Runtime Error R6024](../../error-messages/tool-errors/c-runtime-error-r6024.md) | not enough space for _onexit/atexit table | -| [C Runtime Error R6025](../../error-messages/tool-errors/c-runtime-error-r6025.md) | pure virtual function call | -| [C Runtime Error R6028](../../error-messages/tool-errors/c-runtime-error-r6028.md) | unable to initialize heap | -| [C Runtime Error R6030](../../error-messages/tool-errors/c-runtime-error-r6030.md) | CRT not initialized | -| [C Runtime Error R6031](../../error-messages/tool-errors/c-runtime-error-r6031.md) | Attempt to initialize the CRT more than once. This indicates a bug in your application. | -| [C Runtime Error R6032](../../error-messages/tool-errors/c-runtime-error-r6032.md) | Not enough space for locale information | -| [C Runtime Error R6033](../../error-messages/tool-errors/c-runtime-error-r6033.md) | Attempt to use MSIL code from this assembly during native code initialization. This indicates a bug in your application. It is most likely the result of calling an MSIL-compiled (/clr) function from a native constructor or from DllMain. | -| [C Runtime Error R6035](../../error-messages/tool-errors/c-runtime-error-r6035.md) | A module in this application is initializing the module's global security cookie while a function relying on that security cookie is active. Call __security_init_cookie earlier. | +| [C Runtime Error R6002](c-runtime-error-r6002.md) | floating-point support not loaded | +| [C Runtime Error R6008](c-runtime-error-r6008.md) | not enough space for arguments | +| [C Runtime Error R6009](c-runtime-error-r6009.md) | not enough space for environment | +| [C Runtime Error R6016](c-runtime-error-r6016.md) | not enough space for thread data | +| [C Runtime Error R6017](c-runtime-error-r6017.md) | unexpected multithread lock error | +| [C Runtime Error R6018](c-runtime-error-r6018.md) | unexpected heap error | +| [C Runtime Error R6019](c-runtime-error-r6019.md) | unable to open console device | +| [C Runtime Error R6024](c-runtime-error-r6024.md) | not enough space for _onexit/atexit table | +| [C Runtime Error R6025](c-runtime-error-r6025.md) | pure virtual function call | +| [C Runtime Error R6028](c-runtime-error-r6028.md) | unable to initialize heap | +| [C Runtime Error R6030](c-runtime-error-r6030.md) | CRT not initialized | +| [C Runtime Error R6031](c-runtime-error-r6031.md) | Attempt to initialize the CRT more than once. This indicates a bug in your application. | +| [C Runtime Error R6032](c-runtime-error-r6032.md) | Not enough space for locale information | +| [C Runtime Error R6033](c-runtime-error-r6033.md) | Attempt to use MSIL code from this assembly during native code initialization. This indicates a bug in your application. It is most likely the result of calling an MSIL-compiled (/clr) function from a native constructor or from DllMain. | +| [C Runtime Error R6035](c-runtime-error-r6035.md) | A module in this application is initializing the module's global security cookie while a function relying on that security cookie is active. Call __security_init_cookie earlier. | ## See also From 580bc08b839a30eea1fada8403128644c42e7b97 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 12 Jul 2025 23:02:52 +0800 Subject: [PATCH 1038/2255] Update metadata in "C Runtime errors (Rxxxx)" --- .../tool-errors/c-runtime-errors-r6002-through-r6035.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/error-messages/tool-errors/c-runtime-errors-r6002-through-r6035.md b/docs/error-messages/tool-errors/c-runtime-errors-r6002-through-r6035.md index 1199507c3bf..cbac9569743 100644 --- a/docs/error-messages/tool-errors/c-runtime-errors-r6002-through-r6035.md +++ b/docs/error-messages/tool-errors/c-runtime-errors-r6002-through-r6035.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: C Runtime errors (Rxxxx)" title: "C Runtime errors" -ms.date: "04/16/2019" +description: "Learn more about: C Runtime errors (Rxxxx)" +ms.date: 04/16/2019 f1_keywords: ["c.errors", "R6000", "R6003", "R6010", "R6022", "R6023", "R6034"] -ms.assetid: 78019050-9a30-4b61-8250-a5702e0e2393 --- # C Runtime errors (Rxxxx) From e6f7b5c2f8f9ccb24884ec9c2917aee8112be4b8 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 12 Jul 2025 23:09:57 +0800 Subject: [PATCH 1039/2255] Add blockquotes for error messages in range [C2061, C2080] --- docs/error-messages/compiler-errors-1/compiler-error-c2061.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2062.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2063.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2064.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2066.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2067.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2069.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2070.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2071.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2072.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2074.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2075.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2077.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2078.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2079.md | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2061.md b/docs/error-messages/compiler-errors-1/compiler-error-c2061.md index 2af16ddaeec..da3e1dc6838 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2061.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2061.md @@ -8,7 +8,7 @@ ms.assetid: b0e61c0c-a205-4820-b9aa-301d6c6fe6eb --- # Compiler Error C2061 -syntax error : identifier 'identifier' +> syntax error : identifier 'identifier' The compiler found an identifier where it wasn't expected. Make sure that `identifier` is declared before you use it. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2062.md b/docs/error-messages/compiler-errors-1/compiler-error-c2062.md index 331da15078f..4df2f57d7ba 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2062.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2062.md @@ -8,7 +8,7 @@ ms.assetid: 6cc98353-2ddf-43ab-88a2-9cc91cdd6033 --- # Compiler Error C2062 -type 'type' unexpected +> type 'type' unexpected The compiler did not expect a type name. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2063.md b/docs/error-messages/compiler-errors-1/compiler-error-c2063.md index 6bb9d67d1c7..c265fc916cd 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2063.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2063.md @@ -8,7 +8,7 @@ ms.assetid: 0a90c18f-4029-416a-9128-e8713b53e6f1 --- # Compiler Error C2063 -'identifier' : not a function +> 'identifier' : not a function The identifier is used as a function but not declared as a function. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2064.md b/docs/error-messages/compiler-errors-1/compiler-error-c2064.md index 6d92b1ba307..e69a7d0431d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2064.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2064.md @@ -8,7 +8,7 @@ ms.assetid: 6cda05da-f437-4f50-9813-ae69538713a3 --- # Compiler Error C2064 -term does not evaluate to a function taking N arguments +> term does not evaluate to a function taking N arguments A call is made to a function through an expression. The expression does not evaluate to a pointer to a function that takes the specified number of arguments. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2066.md b/docs/error-messages/compiler-errors-1/compiler-error-c2066.md index 8a0b42ca727..b9256caf49d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2066.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2066.md @@ -8,6 +8,6 @@ ms.assetid: f1efc63f-948a-410b-bf6e-ba250d52cd38 --- # Compiler Error C2066 -cast to function type is illegal +> cast to function type is illegal In ANSI C, it is not legal to cast between a function pointer and a data pointer. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2067.md b/docs/error-messages/compiler-errors-1/compiler-error-c2067.md index e5e1e4ab588..29b4d9a264e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2067.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2067.md @@ -8,6 +8,6 @@ ms.assetid: 97cab473-a713-489f-8536-ca2cc5792b8c --- # Compiler Error C2067 -cast to array type is illegal +> cast to array type is illegal An object was cast to an array type. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2069.md b/docs/error-messages/compiler-errors-1/compiler-error-c2069.md index f0170cb6ac3..51e78b2e09e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2069.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2069.md @@ -8,6 +8,6 @@ ms.assetid: 0c87445a-9eed-4917-a733-f08217f2d64d --- # Compiler Error C2069 -cast of 'void' term to non-'void' +> cast of 'void' term to non-'void' Type **`void`** cannot be cast to any other type. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2070.md b/docs/error-messages/compiler-errors-1/compiler-error-c2070.md index 76cac0d4b89..81c88a5552f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2070.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2070.md @@ -8,7 +8,7 @@ ms.assetid: 4c8dea63-1227-4aba-be26-2462537f86fb --- # Compiler Error C2070 -'type': illegal sizeof operand +> 'type': illegal sizeof operand The [sizeof](../../cpp/sizeof-operator.md) operator requires an expression or type name. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2071.md b/docs/error-messages/compiler-errors-1/compiler-error-c2071.md index 1bfd7926e5f..c1465d1e597 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2071.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2071.md @@ -8,7 +8,7 @@ ms.assetid: f8c09255-a5c4-47e3-8089-3d875ae43cc5 --- # Compiler Error C2071 -'identifier' : illegal storage class +> 'identifier' : illegal storage class `identifier` was declared with an invalid [storage class](../../c-language/c-storage-classes.md). This error can be caused when more than one storage class is specified for an identifier, or when the definition is incompatible with the storage class declaration. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2072.md b/docs/error-messages/compiler-errors-1/compiler-error-c2072.md index 027a73b4a2f..4aa64774708 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2072.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2072.md @@ -8,6 +8,6 @@ ms.assetid: 0b19a847-61dd-4bc3-b54d-108a637a4424 --- # Compiler Error C2072 -'identifier' : initialization of a function +> 'identifier' : initialization of a function A function initializer was specified incorrectly. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2074.md b/docs/error-messages/compiler-errors-1/compiler-error-c2074.md index 0e2f7f6326e..214adb052ac 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2074.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2074.md @@ -8,6 +8,6 @@ ms.assetid: 1abe5934-61db-4374-8c48-1fa7281317f4 --- # Compiler Error C2074 -'identifier' : 'class-key' initialization needs curly braces +> 'identifier' : 'class-key' initialization needs curly braces There were no curly braces around the specified class, structure, or union initializer. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2075.md b/docs/error-messages/compiler-errors-1/compiler-error-c2075.md index b83c31b4f74..9551f4a6492 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2075.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2075.md @@ -8,7 +8,7 @@ ms.assetid: 8b1865d2-540b-4117-b982-e7a58a0b6cf7 --- # Compiler Error C2075 -'identifier' : array initialization needs curly braces +> 'identifier' : array initialization needs curly braces There were no curly braces around the specified array initializer. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2077.md b/docs/error-messages/compiler-errors-1/compiler-error-c2077.md index 824efd91f1f..f7b4168667c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2077.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2077.md @@ -8,6 +8,6 @@ ms.assetid: f046f0e3-1987-477a-a0af-fe543a9f5fcb --- # Compiler Error C2077 -non-scalar field initializer 'identifier' +> non-scalar field initializer 'identifier' You tried to initialize a bit field with a nonscalar (struct, union, array, or class). Use an integer or floating-point value. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2078.md b/docs/error-messages/compiler-errors-1/compiler-error-c2078.md index 6cc3e1e1fe2..5d8aa70cdb6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2078.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2078.md @@ -8,7 +8,7 @@ ms.assetid: 9bead850-4123-46cf-a634-5c77ba974b2b --- # Compiler Error C2078 -too many initializers +> too many initializers The number of initializers exceeds the number of objects to be initialized. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2079.md b/docs/error-messages/compiler-errors-1/compiler-error-c2079.md index c096d8ffb12..bf2561c7b0c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2079.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2079.md @@ -8,7 +8,7 @@ ms.assetid: ca58d6d5-eccd-40b7-ba14-c003223c5bc7 --- # Compiler Error C2079 -'identifier' uses undefined class/struct/union 'name' +> 'identifier' uses undefined class/struct/union 'name' The specified identifier is an undefined class, structure, or union. From 4db7a0b0c5f940ad40a1eb0ee1969929bf84e466 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 12 Jul 2025 23:16:44 +0800 Subject: [PATCH 1040/2255] Add "Remarks" and "Example" headings for error references in range [C2061, C2080] --- docs/error-messages/compiler-errors-1/compiler-error-c2061.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2062.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2063.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2064.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2065.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2066.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2067.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2068.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2069.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2070.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2071.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2072.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2074.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2075.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2076.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2077.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2078.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2079.md | 4 ++++ 18 files changed, 54 insertions(+) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2061.md b/docs/error-messages/compiler-errors-1/compiler-error-c2061.md index da3e1dc6838..8d3996f1a3e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2061.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2061.md @@ -10,12 +10,16 @@ ms.assetid: b0e61c0c-a205-4820-b9aa-301d6c6fe6eb > syntax error : identifier 'identifier' +## Remarks + The compiler found an identifier where it wasn't expected. Make sure that `identifier` is declared before you use it. An initializer may be enclosed by parentheses. To avoid this problem, enclose the declarator in parentheses or make it a **`typedef`**. This error could also be caused when the compiler detects an expression as a class template argument; use [typename](../../cpp/typename.md) to tell the compiler it is a type, as shown in the following example: +## Examples + The following sample generates C2061: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2062.md b/docs/error-messages/compiler-errors-1/compiler-error-c2062.md index 4df2f57d7ba..1d85906eeb9 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2062.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2062.md @@ -10,8 +10,12 @@ ms.assetid: 6cc98353-2ddf-43ab-88a2-9cc91cdd6033 > type 'type' unexpected +## Remarks + The compiler did not expect a type name. +## Example + The following sample generates C2062: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2063.md b/docs/error-messages/compiler-errors-1/compiler-error-c2063.md index c265fc916cd..8c84de598a6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2063.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2063.md @@ -10,8 +10,12 @@ ms.assetid: 0a90c18f-4029-416a-9128-e8713b53e6f1 > 'identifier' : not a function +## Remarks + The identifier is used as a function but not declared as a function. +## Example + The following sample generates C2063: ```c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2064.md b/docs/error-messages/compiler-errors-1/compiler-error-c2064.md index e69a7d0431d..3b941557e75 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2064.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2064.md @@ -10,8 +10,12 @@ ms.assetid: 6cda05da-f437-4f50-9813-ae69538713a3 > term does not evaluate to a function taking N arguments +## Remarks + A call is made to a function through an expression. The expression does not evaluate to a pointer to a function that takes the specified number of arguments. +## Examples + In this example, the code attempts to call non-functions as functions. The following sample generates C2064: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2065.md b/docs/error-messages/compiler-errors-1/compiler-error-c2065.md index e18d5004506..e510f2cd94c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2065.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2065.md @@ -10,6 +10,8 @@ ms.assetid: 78093376-acb7-45f5-9323-5ed7e0aab1dc > '*identifier*' : undeclared identifier +## Remarks + The compiler can't find the declaration for an identifier. There are many possible causes for this error. The most common causes of C2065 are that the identifier hasn't been declared, the identifier is misspelled, the header where the identifier is declared isn't included in the file, or the identifier is missing a scope qualifier, for example, `cout` instead of `std::cout`. For more information on declarations in C++, see [Declarations and Definitions (C++)](../../cpp/declarations-and-definitions-cpp.md). Here are some common issues and solutions in greater detail. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2066.md b/docs/error-messages/compiler-errors-1/compiler-error-c2066.md index b9256caf49d..46793964985 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2066.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2066.md @@ -10,4 +10,6 @@ ms.assetid: f1efc63f-948a-410b-bf6e-ba250d52cd38 > cast to function type is illegal +## Remarks + In ANSI C, it is not legal to cast between a function pointer and a data pointer. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2067.md b/docs/error-messages/compiler-errors-1/compiler-error-c2067.md index 29b4d9a264e..77cadeb055b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2067.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2067.md @@ -10,4 +10,6 @@ ms.assetid: 97cab473-a713-489f-8536-ca2cc5792b8c > cast to array type is illegal +## Remarks + An object was cast to an array type. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2068.md b/docs/error-messages/compiler-errors-1/compiler-error-c2068.md index 71ed5cd042d..f5d7793cbf9 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2068.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2068.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C2068"] > illegal use of overloaded function. Missing argument list? +## Remarks + The compiler detected the invalid use of an overloaded function with no arguments. +## Example + For example: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2069.md b/docs/error-messages/compiler-errors-1/compiler-error-c2069.md index 51e78b2e09e..2398c11a473 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2069.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2069.md @@ -10,4 +10,6 @@ ms.assetid: 0c87445a-9eed-4917-a733-f08217f2d64d > cast of 'void' term to non-'void' +## Remarks + Type **`void`** cannot be cast to any other type. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2070.md b/docs/error-messages/compiler-errors-1/compiler-error-c2070.md index 81c88a5552f..3f61df7ec5b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2070.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2070.md @@ -10,8 +10,12 @@ ms.assetid: 4c8dea63-1227-4aba-be26-2462537f86fb > 'type': illegal sizeof operand +## Remarks + The [sizeof](../../cpp/sizeof-operator.md) operator requires an expression or type name. +## Example + The following sample generates C2070: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2071.md b/docs/error-messages/compiler-errors-1/compiler-error-c2071.md index c1465d1e597..3186928324a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2071.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2071.md @@ -10,6 +10,8 @@ ms.assetid: f8c09255-a5c4-47e3-8089-3d875ae43cc5 > 'identifier' : illegal storage class +## Remarks + `identifier` was declared with an invalid [storage class](../../c-language/c-storage-classes.md). This error can be caused when more than one storage class is specified for an identifier, or when the definition is incompatible with the storage class declaration. To fix this issue, understand the intended storage class of the identifier—for example, **`static`** or **`extern`**—and correct the declaration to match. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2072.md b/docs/error-messages/compiler-errors-1/compiler-error-c2072.md index 4aa64774708..a0da9ce18ab 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2072.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2072.md @@ -10,4 +10,6 @@ ms.assetid: 0b19a847-61dd-4bc3-b54d-108a637a4424 > 'identifier' : initialization of a function +## Remarks + A function initializer was specified incorrectly. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2074.md b/docs/error-messages/compiler-errors-1/compiler-error-c2074.md index 214adb052ac..145db7511d7 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2074.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2074.md @@ -10,4 +10,6 @@ ms.assetid: 1abe5934-61db-4374-8c48-1fa7281317f4 > 'identifier' : 'class-key' initialization needs curly braces +## Remarks + There were no curly braces around the specified class, structure, or union initializer. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2075.md b/docs/error-messages/compiler-errors-1/compiler-error-c2075.md index 9551f4a6492..89725acb6ab 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2075.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2075.md @@ -10,8 +10,12 @@ ms.assetid: 8b1865d2-540b-4117-b982-e7a58a0b6cf7 > 'identifier' : array initialization needs curly braces +## Remarks + There were no curly braces around the specified array initializer. +## Example + The following sample generates C2075: ```c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2076.md b/docs/error-messages/compiler-errors-1/compiler-error-c2076.md index bd3b76f5c71..c785a44d745 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2076.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2076.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C2076"] > a brace-enclosed initializer list cannot be used in a new-expression whose type contains 'auto/decltype(auto)' +## Remarks + If an **`auto`** type-specifier appears in the specifier sequence of a new type-identifier or the type-identifier of a **`new`** expression, the expression must contain an initializer of the form `( assignment-expression )`. The compiler deduces the type-identifier from the `assignment-expression` in the initializer. For example, ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2077.md b/docs/error-messages/compiler-errors-1/compiler-error-c2077.md index f7b4168667c..cda32c1a01d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2077.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2077.md @@ -10,4 +10,6 @@ ms.assetid: f046f0e3-1987-477a-a0af-fe543a9f5fcb > non-scalar field initializer 'identifier' +## Remarks + You tried to initialize a bit field with a nonscalar (struct, union, array, or class). Use an integer or floating-point value. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2078.md b/docs/error-messages/compiler-errors-1/compiler-error-c2078.md index 5d8aa70cdb6..570f8b72b1e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2078.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2078.md @@ -10,10 +10,14 @@ ms.assetid: 9bead850-4123-46cf-a634-5c77ba974b2b > too many initializers +## Remarks + The number of initializers exceeds the number of objects to be initialized. The compiler can deduce the correct assignment of initializers to objects and inner objects when inner braces are elided from the initializer list. Complete bracing also eliminates ambiguity and results in correct assignment. Partial bracing can cause C2078 because of ambiguity in the assignment of initializers to objects. +## Example + The following sample generates C2078 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2079.md b/docs/error-messages/compiler-errors-1/compiler-error-c2079.md index bf2561c7b0c..d9b681d38c8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2079.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2079.md @@ -10,10 +10,14 @@ ms.assetid: ca58d6d5-eccd-40b7-ba14-c003223c5bc7 > 'identifier' uses undefined class/struct/union 'name' +## Remarks + The specified identifier is an undefined class, structure, or union. This error can be caused by initializing an anonymous union. +## Examples + The following sample generates C2079: ```cpp From 30a737903a55bf2e55ea12fedc0ff349ff542102 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 12 Jul 2025 23:18:28 +0800 Subject: [PATCH 1041/2255] Replace term "sample" with "example" for error references in range [C2061, C2080] --- .../compiler-errors-1/compiler-error-c2061.md | 2 +- .../compiler-errors-1/compiler-error-c2062.md | 2 +- .../compiler-errors-1/compiler-error-c2063.md | 2 +- .../compiler-errors-1/compiler-error-c2064.md | 6 +++--- .../compiler-errors-1/compiler-error-c2070.md | 2 +- .../compiler-errors-1/compiler-error-c2071.md | 4 ++-- .../compiler-errors-1/compiler-error-c2073.md | 2 +- .../compiler-errors-1/compiler-error-c2075.md | 2 +- .../compiler-errors-1/compiler-error-c2078.md | 2 +- .../compiler-errors-1/compiler-error-c2079.md | 2 +- .../compiler-errors-1/compiler-error-c2080.md | 2 +- 11 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2061.md b/docs/error-messages/compiler-errors-1/compiler-error-c2061.md index 8d3996f1a3e..5b3a75516d1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2061.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2061.md @@ -20,7 +20,7 @@ This error could also be caused when the compiler detects an expression as a cla ## Examples -The following sample generates C2061: +The following example generates C2061: ```cpp // C2061.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2062.md b/docs/error-messages/compiler-errors-1/compiler-error-c2062.md index 1d85906eeb9..513b160064c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2062.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2062.md @@ -16,7 +16,7 @@ The compiler did not expect a type name. ## Example -The following sample generates C2062: +The following example generates C2062: ```cpp // C2062.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2063.md b/docs/error-messages/compiler-errors-1/compiler-error-c2063.md index 8c84de598a6..bd327ccf21f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2063.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2063.md @@ -16,7 +16,7 @@ The identifier is used as a function but not declared as a function. ## Example -The following sample generates C2063: +The following example generates C2063: ```c // C2063.c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2064.md b/docs/error-messages/compiler-errors-1/compiler-error-c2064.md index 3b941557e75..df6f3a3149f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2064.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2064.md @@ -16,7 +16,7 @@ A call is made to a function through an expression. The expression does not eval ## Examples -In this example, the code attempts to call non-functions as functions. The following sample generates C2064: +In this example, the code attempts to call non-functions as functions. The following example generates C2064: ```cpp // C2064.cpp @@ -28,7 +28,7 @@ void func() { } ``` -You must call pointers to non-static member functions from the context of an object instance. The following sample generates C2064, and shows how to fix it: +You must call pointers to non-static member functions from the context of an object instance. The following example generates C2064, and shows how to fix it: ```cpp // C2064b.cpp @@ -47,7 +47,7 @@ int main() { } ``` -Within a class, member function pointers must also indicate the calling object context. The following sample generates C2064 and shows how to fix it: +Within a class, member function pointers must also indicate the calling object context. The following example generates C2064 and shows how to fix it: ```cpp // C2064d.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2070.md b/docs/error-messages/compiler-errors-1/compiler-error-c2070.md index 3f61df7ec5b..c681538d43e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2070.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2070.md @@ -16,7 +16,7 @@ The [sizeof](../../cpp/sizeof-operator.md) operator requires an expression or ty ## Example -The following sample generates C2070: +The following example generates C2070: ```cpp // C2070.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2071.md b/docs/error-messages/compiler-errors-1/compiler-error-c2071.md index 3186928324a..d7cf7d7a45c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2071.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2071.md @@ -18,7 +18,7 @@ To fix this issue, understand the intended storage class of the identifier—for ## Examples -The following sample generates C2071. +The following example generates C2071. ```cpp // C2071.cpp @@ -31,7 +31,7 @@ struct D { }; ``` -The following sample generates C2071. +The following example generates C2071. ```cpp // C2071_b.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2073.md b/docs/error-messages/compiler-errors-1/compiler-error-c2073.md index c790ea0ffbe..2e9414742b5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2073.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2073.md @@ -18,7 +18,7 @@ This compiler error is obsolete in Visual Studio 2022. ## Example -The following sample generates C2073. Source file `C2073.cpp`: +The following example generates C2073. Source file `C2073.cpp`: ```cpp // C2073.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2075.md b/docs/error-messages/compiler-errors-1/compiler-error-c2075.md index 89725acb6ab..c8bb463e1ff 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2075.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2075.md @@ -16,7 +16,7 @@ There were no curly braces around the specified array initializer. ## Example -The following sample generates C2075: +The following example generates C2075: ```c // C2075.c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2078.md b/docs/error-messages/compiler-errors-1/compiler-error-c2078.md index 570f8b72b1e..70c56eb65bd 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2078.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2078.md @@ -18,7 +18,7 @@ The compiler can deduce the correct assignment of initializers to objects and in ## Example -The following sample generates C2078 and shows how to fix it: +The following example generates C2078 and shows how to fix it: ```cpp // C2078.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2079.md b/docs/error-messages/compiler-errors-1/compiler-error-c2079.md index d9b681d38c8..b440694afd4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2079.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2079.md @@ -18,7 +18,7 @@ This error can be caused by initializing an anonymous union. ## Examples -The following sample generates C2079: +The following example generates C2079: ```cpp // C2079.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2080.md b/docs/error-messages/compiler-errors-1/compiler-error-c2080.md index 26fa529539c..49d72787bdc 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2080.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2080.md @@ -15,7 +15,7 @@ The compiler can only deduce the type for `auto` or `decltype(auto)` if the decl ## Example -The following sample shows some declarations that cause C2080: +The following example shows some declarations that cause C2080: ```cpp auto x1(1, 2); // C2080 From 53915d54bcd2010de2df5f2f634fb6f3c8ce01d1 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 12 Jul 2025 23:22:41 +0800 Subject: [PATCH 1042/2255] Update metadata for error references in range [C2061, C2080] --- .../error-messages/compiler-errors-1/compiler-error-c2061.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2062.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2063.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2064.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2065.md | 3 +-- .../error-messages/compiler-errors-1/compiler-error-c2066.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2067.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2068.md | 2 +- .../error-messages/compiler-errors-1/compiler-error-c2069.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2070.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2071.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2072.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2073.md | 3 +-- .../error-messages/compiler-errors-1/compiler-error-c2074.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2075.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2076.md | 2 +- .../error-messages/compiler-errors-1/compiler-error-c2077.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2078.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2079.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2080.md | 2 +- 20 files changed, 35 insertions(+), 52 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2061.md b/docs/error-messages/compiler-errors-1/compiler-error-c2061.md index 5b3a75516d1..83394157a63 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2061.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2061.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2061" title: "Compiler Error C2061" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2061" +ms.date: 11/04/2016 f1_keywords: ["C2061"] helpviewer_keywords: ["C2061"] -ms.assetid: b0e61c0c-a205-4820-b9aa-301d6c6fe6eb --- # Compiler Error C2061 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2062.md b/docs/error-messages/compiler-errors-1/compiler-error-c2062.md index 513b160064c..b7cd52a817f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2062.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2062.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2062" title: "Compiler Error C2062" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2062" +ms.date: 11/04/2016 f1_keywords: ["C2062"] helpviewer_keywords: ["C2062"] -ms.assetid: 6cc98353-2ddf-43ab-88a2-9cc91cdd6033 --- # Compiler Error C2062 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2063.md b/docs/error-messages/compiler-errors-1/compiler-error-c2063.md index bd327ccf21f..474aaa30fc7 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2063.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2063.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2063" title: "Compiler Error C2063" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2063" +ms.date: 11/04/2016 f1_keywords: ["C2063"] helpviewer_keywords: ["C2063"] -ms.assetid: 0a90c18f-4029-416a-9128-e8713b53e6f1 --- # Compiler Error C2063 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2064.md b/docs/error-messages/compiler-errors-1/compiler-error-c2064.md index df6f3a3149f..2714aee760d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2064.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2064.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2064" title: "Compiler Error C2064" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2064" +ms.date: 11/04/2016 f1_keywords: ["C2064"] helpviewer_keywords: ["C2064"] -ms.assetid: 6cda05da-f437-4f50-9813-ae69538713a3 --- # Compiler Error C2064 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2065.md b/docs/error-messages/compiler-errors-1/compiler-error-c2065.md index e510f2cd94c..9081a6fe978 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2065.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2065.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2065" title: "Compiler Error C2065" +description: "Learn more about: Compiler Error C2065" ms.date: 06/29/2022 f1_keywords: ["C2065"] helpviewer_keywords: ["C2065"] -ms.assetid: 78093376-acb7-45f5-9323-5ed7e0aab1dc --- # Compiler Error C2065 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2066.md b/docs/error-messages/compiler-errors-1/compiler-error-c2066.md index 46793964985..a55f64b22f2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2066.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2066.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2066" title: "Compiler Error C2066" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2066" +ms.date: 11/04/2016 f1_keywords: ["C2066"] helpviewer_keywords: ["C2066"] -ms.assetid: f1efc63f-948a-410b-bf6e-ba250d52cd38 --- # Compiler Error C2066 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2067.md b/docs/error-messages/compiler-errors-1/compiler-error-c2067.md index 77cadeb055b..892535c0560 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2067.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2067.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2067" title: "Compiler Error C2067" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2067" +ms.date: 11/04/2016 f1_keywords: ["C2067"] helpviewer_keywords: ["C2067"] -ms.assetid: 97cab473-a713-489f-8536-ca2cc5792b8c --- # Compiler Error C2067 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2068.md b/docs/error-messages/compiler-errors-1/compiler-error-c2068.md index f5d7793cbf9..9f31bb8a1d3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2068.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2068.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler Error C2068" title: "Compiler Error C2068" +description: "Learn more about: Compiler Error C2068" ms.date: 08/18/2022 f1_keywords: ["C2068"] helpviewer_keywords: ["C2068"] diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2069.md b/docs/error-messages/compiler-errors-1/compiler-error-c2069.md index 2398c11a473..ba2b9bea9a2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2069.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2069.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2069" title: "Compiler Error C2069" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2069" +ms.date: 11/04/2016 f1_keywords: ["C2069"] helpviewer_keywords: ["C2069"] -ms.assetid: 0c87445a-9eed-4917-a733-f08217f2d64d --- # Compiler Error C2069 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2070.md b/docs/error-messages/compiler-errors-1/compiler-error-c2070.md index c681538d43e..2d2828762f2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2070.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2070.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2070" title: "Compiler Error C2070" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2070" +ms.date: 11/04/2016 f1_keywords: ["C2070"] helpviewer_keywords: ["C2070"] -ms.assetid: 4c8dea63-1227-4aba-be26-2462537f86fb --- # Compiler Error C2070 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2071.md b/docs/error-messages/compiler-errors-1/compiler-error-c2071.md index d7cf7d7a45c..40faec7cb70 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2071.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2071.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2071" title: "Compiler Error C2071" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2071" +ms.date: 11/04/2016 f1_keywords: ["C2071"] helpviewer_keywords: ["C2071"] -ms.assetid: f8c09255-a5c4-47e3-8089-3d875ae43cc5 --- # Compiler Error C2071 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2072.md b/docs/error-messages/compiler-errors-1/compiler-error-c2072.md index a0da9ce18ab..479dfaf4317 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2072.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2072.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2072" title: "Compiler Error C2072" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2072" +ms.date: 11/04/2016 f1_keywords: ["C2072"] helpviewer_keywords: ["C2072"] -ms.assetid: 0b19a847-61dd-4bc3-b54d-108a637a4424 --- # Compiler Error C2072 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2073.md b/docs/error-messages/compiler-errors-1/compiler-error-c2073.md index 2e9414742b5..3db2c03db5e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2073.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2073.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2073" title: "Compiler Error C2073" +description: "Learn more about: Compiler Error C2073" ms.date: 06/29/2022 f1_keywords: ["C2073"] helpviewer_keywords: ["C2073"] -ms.assetid: 57908234-be7a-4ce9-b0a7-8b1ad621865e --- # Compiler Error C2073 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2074.md b/docs/error-messages/compiler-errors-1/compiler-error-c2074.md index 145db7511d7..8221fccd282 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2074.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2074.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2074" title: "Compiler Error C2074" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2074" +ms.date: 11/04/2016 f1_keywords: ["C2074"] helpviewer_keywords: ["C2074"] -ms.assetid: 1abe5934-61db-4374-8c48-1fa7281317f4 --- # Compiler Error C2074 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2075.md b/docs/error-messages/compiler-errors-1/compiler-error-c2075.md index c8bb463e1ff..8e47b3cd00e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2075.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2075.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2075" title: "Compiler Error C2075" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2075" +ms.date: 11/04/2016 f1_keywords: ["C2075"] helpviewer_keywords: ["C2075"] -ms.assetid: 8b1865d2-540b-4117-b982-e7a58a0b6cf7 --- # Compiler Error C2075 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2076.md b/docs/error-messages/compiler-errors-1/compiler-error-c2076.md index c785a44d745..e20e53b4fa6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2076.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2076.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler Error C2076" title: "Compiler Error C2076" +description: "Learn more about: Compiler Error C2076" ms.date: 08/18/2022 f1_keywords: ["C2076"] helpviewer_keywords: ["C2076"] diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2077.md b/docs/error-messages/compiler-errors-1/compiler-error-c2077.md index cda32c1a01d..720cf2cbf39 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2077.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2077.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2077" title: "Compiler Error C2077" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2077" +ms.date: 11/04/2016 f1_keywords: ["C2077"] helpviewer_keywords: ["C2077"] -ms.assetid: f046f0e3-1987-477a-a0af-fe543a9f5fcb --- # Compiler Error C2077 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2078.md b/docs/error-messages/compiler-errors-1/compiler-error-c2078.md index 70c56eb65bd..f2c6dfa626d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2078.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2078.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2078" title: "Compiler Error C2078" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2078" +ms.date: 11/04/2016 f1_keywords: ["C2078"] helpviewer_keywords: ["C2078"] -ms.assetid: 9bead850-4123-46cf-a634-5c77ba974b2b --- # Compiler Error C2078 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2079.md b/docs/error-messages/compiler-errors-1/compiler-error-c2079.md index b440694afd4..b4b8022579d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2079.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2079.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2079" title: "Compiler Error C2079" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2079" +ms.date: 11/04/2016 f1_keywords: ["C2079"] helpviewer_keywords: ["C2079"] -ms.assetid: ca58d6d5-eccd-40b7-ba14-c003223c5bc7 --- # Compiler Error C2079 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2080.md b/docs/error-messages/compiler-errors-1/compiler-error-c2080.md index 49d72787bdc..43be41f7b5d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2080.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2080.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler Error C2080" title: "Compiler Error C2080" +description: "Learn more about: Compiler Error C2080" ms.date: 08/18/2022 f1_keywords: ["C2080"] helpviewer_keywords: ["C2080"] From b4163d3ba8b59cba190674dfb6130895fea59953 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 13 Jul 2025 18:27:28 +0800 Subject: [PATCH 1043/2255] Standardize capitalization of "See also" sections --- docs/assembler/masm/mmword.md | 2 +- docs/assembler/masm/xmmword.md | 2 +- docs/build/reference/profile-performance-tools-profiler.md | 2 +- docs/code-quality/c28112.md | 2 +- docs/code-quality/c6504.md | 2 +- .../using-sal-annotations-to-reduce-c-cpp-code-defects.md | 2 +- docs/cpp/import-export-module.md | 2 +- docs/ide/adding-a-property-visual-cpp.md | 2 +- docs/ide/live-share-cpp.md | 2 +- docs/ide/read-and-understand-code-cpp.md | 2 +- docs/ide/writing-and-refactoring-code-cpp.md | 2 +- .../set-up-fips-compliant-secure-remote-linux-development.md | 2 +- .../add-interface-definition-library-mfc-property-wizard.md | 2 +- docs/windows/latest-supported-vc-redist.md | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/assembler/masm/mmword.md b/docs/assembler/masm/mmword.md index 563ae8e444f..a4ced88dbb6 100644 --- a/docs/assembler/masm/mmword.md +++ b/docs/assembler/masm/mmword.md @@ -32,6 +32,6 @@ While both instructions work on 64-bit operands, **QWORD** is the type for 64-bi movq mm0, mmword ptr [ebx] ``` -## See Also +## See also [MASM BNF Grammar](masm-bnf-grammar.md) diff --git a/docs/assembler/masm/xmmword.md b/docs/assembler/masm/xmmword.md index 3722fd23f48..11010769213 100644 --- a/docs/assembler/masm/xmmword.md +++ b/docs/assembler/masm/xmmword.md @@ -24,6 +24,6 @@ Used for 128-bit multimedia operands with MMX and SSE (XMM) instructions. movdqa xmm0, xmmword ptr [ebx] ``` -## See Also +## See also [MASM BNF Grammar](masm-bnf-grammar.md) diff --git a/docs/build/reference/profile-performance-tools-profiler.md b/docs/build/reference/profile-performance-tools-profiler.md index d1273f084d1..a2b50606bc2 100644 --- a/docs/build/reference/profile-performance-tools-profiler.md +++ b/docs/build/reference/profile-performance-tools-profiler.md @@ -57,7 +57,7 @@ Because a **CMake** project doesn't have the usual **Property Pages** support, t 1. Rebuild your solution. -## See Also +## See also [MSVC linker reference](linking.md)\ [MSVC linker options](linker-options.md) diff --git a/docs/code-quality/c28112.md b/docs/code-quality/c28112.md index 530ab51bc01..61e0a5588ee 100644 --- a/docs/code-quality/c28112.md +++ b/docs/code-quality/c28112.md @@ -35,7 +35,7 @@ InterlockedDecrement(&inter_var); InterlockedIncrement(&inter_var); ``` -## See Also +## See also [InterlockedIncrement function (wdm.h)](/windows-hardware/drivers/ddi/wdm/nf-wdm-interlockedincrement)\ [InterlockedDecrement function (wdm.h)](/windows-hardware/drivers/ddi/wdm/nf-wdm-interlockeddecrement) diff --git a/docs/code-quality/c6504.md b/docs/code-quality/c6504.md index e77e99df282..1fc3a179ee8 100644 --- a/docs/code-quality/c6504.md +++ b/docs/code-quality/c6504.md @@ -60,6 +60,6 @@ void g(Point& pt) } ``` -## See Also +## See also [Annotation Properties](using-sal-annotations-to-reduce-c-cpp-code-defects.md) diff --git a/docs/code-quality/using-sal-annotations-to-reduce-c-cpp-code-defects.md b/docs/code-quality/using-sal-annotations-to-reduce-c-cpp-code-defects.md index 381e526ebcc..af73328a594 100644 --- a/docs/code-quality/using-sal-annotations-to-reduce-c-cpp-code-defects.md +++ b/docs/code-quality/using-sal-annotations-to-reduce-c-cpp-code-defects.md @@ -47,6 +47,6 @@ The articles in this section of the documentation discuss aspects of SAL, provid Provides examples that show how to use SAL annotations. Also explains common pitfalls. -## See Also +## See also [SAL 2.0 Annotations for Windows Drivers](/windows-hardware/drivers/devtest/sal-2-annotations-for-windows-drivers) diff --git a/docs/cpp/import-export-module.md b/docs/cpp/import-export-module.md index ae7d37a4fe7..498af52c780 100644 --- a/docs/cpp/import-export-module.md +++ b/docs/cpp/import-export-module.md @@ -109,7 +109,7 @@ import // Always an identifier, never a keyword **End Microsoft Specific** -## See Also +## See also [Overview of modules in C++](modules-cpp.md)\ [Import the C++ standard library using modules](tutorial-import-stl-named-module.md) \ No newline at end of file diff --git a/docs/ide/adding-a-property-visual-cpp.md b/docs/ide/adding-a-property-visual-cpp.md index 9feff5ef6ec..8fe7391a5cb 100644 --- a/docs/ide/adding-a-property-visual-cpp.md +++ b/docs/ide/adding-a-property-visual-cpp.md @@ -53,7 +53,7 @@ The following section describes the UI that you'll use to add a property: For ATL interfaces **Put function** makes the property writable; that is, it creates the `Put` method for setting, or "putting," this property of the object. Select **Get**, **Put**, or both. -## See Also +## See also [Add IDL Property](add-interface-definition-library-property-wizard.md) diff --git a/docs/ide/live-share-cpp.md b/docs/ide/live-share-cpp.md index 4a5fecdd502..9099be1d6cc 100644 --- a/docs/ide/live-share-cpp.md +++ b/docs/ide/live-share-cpp.md @@ -44,7 +44,7 @@ To end a session, select **End Collaboration Session** from the **Sharing** drop For more information about **Live Share** in Visual Studio, see [What is Visual Studio Live Share?](/visualstudio/liveshare/). For more information about Live Share in Visual Studio Code, see [ Live Share](https://marketplace.visualstudio.com/items?itemName=ms-vsliveshare.vsliveshare). -## See Also +## See also [Edit and refactor code (C++)](writing-and-refactoring-code-cpp.md)
[Navigate your C++ code base in Visual Studio](navigate-code-cpp.md)
diff --git a/docs/ide/read-and-understand-code-cpp.md b/docs/ide/read-and-understand-code-cpp.md index 119efc1076e..ff4d5bdb93a 100644 --- a/docs/ide/read-and-understand-code-cpp.md +++ b/docs/ide/read-and-understand-code-cpp.md @@ -106,7 +106,7 @@ Right click on any function call and view a recursive list of all the functions ![Screenshot of the Call Hierarchy window which shows calls to and from Floating_to_wstring(). For example, to_wstring() calls Floating_to_wstring().](../ide/media/vs2015_cpp_call_hierarchy.png) -## See Also +## See also [Edit and refactor code (C++)](writing-and-refactoring-code-cpp.md)
[Navigate your C++ code base in Visual Studio](navigate-code-cpp.md)
diff --git a/docs/ide/writing-and-refactoring-code-cpp.md b/docs/ide/writing-and-refactoring-code-cpp.md index 7c3edfb3dae..96428ae971c 100644 --- a/docs/ide/writing-and-refactoring-code-cpp.md +++ b/docs/ide/writing-and-refactoring-code-cpp.md @@ -178,7 +178,7 @@ Options for enabling and configuring C++-specific editing features are located u Experimental features, which may or may not be included in a future version of Visual Studio, are found in the [Text Editor C++ Experimental](/visualstudio/ide/reference/options-text-editor-c-cpp-experimental) dialog. In Visual Studio 2017 and later you can enable **Predictive IntelliSense** in this dialog. -## See Also +## See also [Read and understand C++ code](read-and-understand-code-cpp.md)
[Navigate your C++ code base in Visual Studio](navigate-code-cpp.md)
diff --git a/docs/linux/set-up-fips-compliant-secure-remote-linux-development.md b/docs/linux/set-up-fips-compliant-secure-remote-linux-development.md index b3581863766..180ceb8cd63 100644 --- a/docs/linux/set-up-fips-compliant-secure-remote-linux-development.md +++ b/docs/linux/set-up-fips-compliant-secure-remote-linux-development.md @@ -160,7 +160,7 @@ Microsoft blog post on [Why We're Not Recommending "FIPS mode" Anymore](https:// [SSH Server Configuration](https://www.ssh.com/ssh/sshd_config) -## See Also +## See also [Configure a Linux project](configure-a-linux-project.md)\ [Configure a Linux CMake project](cmake-linux-project.md)\ diff --git a/docs/mfc/reference/add-interface-definition-library-mfc-property-wizard.md b/docs/mfc/reference/add-interface-definition-library-mfc-property-wizard.md index 5ac27990ea7..2c86901f626 100644 --- a/docs/mfc/reference/add-interface-definition-library-mfc-property-wizard.md +++ b/docs/mfc/reference/add-interface-definition-library-mfc-property-wizard.md @@ -167,7 +167,7 @@ If you're adding a property to an MFC dispinterface, you can choose one of the f |`ReadyState`|Returns or sets the control's `ReadyState` property.
A control can be uninitialized, initialized, loading, interactive, or complete.
For more information, see [READYSTATE](/previous-versions/aa768362\(v=vs.85\)) in the *Internet SDK*.| |`Text`|Returns or sets the text contained in a control.
Has no **Member variable** implementation type.| -## See Also +## See also [Add Property](../../ide/adding-a-property-visual-cpp.md) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index fdcd8646049..974db314854 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -117,7 +117,7 @@ Download Redistributable files for other languages and architectures from: - Redistributable files for X86, X64, and IA64 architectures are available from [Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package MFC Security Update](https://www.microsoft.com/download/details.aspx?id=26347). -## See Also +## See also - [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md) - [How to audit Visual C++ Runtime version usage](redist-version-auditing.md) From 3de4bf0a5d36388304dddcc49afe56378b84310f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 13 Jul 2025 18:30:02 +0800 Subject: [PATCH 1044/2255] Update metadata in 10 topics --- docs/assembler/masm/mmword.md | 5 ++--- docs/assembler/masm/xmmword.md | 5 ++--- docs/build/reference/profile-performance-tools-profiler.md | 2 +- docs/code-quality/c6504.md | 3 +-- .../using-sal-annotations-to-reduce-c-cpp-code-defects.md | 3 +-- docs/cpp/import-export-module.md | 2 +- docs/ide/adding-a-property-visual-cpp.md | 2 +- docs/ide/live-share-cpp.md | 2 +- docs/ide/writing-and-refactoring-code-cpp.md | 2 +- .../add-interface-definition-library-mfc-property-wizard.md | 4 ++-- 10 files changed, 13 insertions(+), 17 deletions(-) diff --git a/docs/assembler/masm/mmword.md b/docs/assembler/masm/mmword.md index a4ced88dbb6..98ca8629498 100644 --- a/docs/assembler/masm/mmword.md +++ b/docs/assembler/masm/mmword.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: MMWORD" title: "MMWORD" -ms.date: "12/17/2019" +description: "Learn more about: MMWORD" +ms.date: 12/17/2019 f1_keywords: ["MMWORD"] helpviewer_keywords: ["MMWORD directive"] -ms.assetid: b4c5a104-9078-4fb4-afc3-d1e63abe562a --- # MMWORD diff --git a/docs/assembler/masm/xmmword.md b/docs/assembler/masm/xmmword.md index 11010769213..9e4ef7c064e 100644 --- a/docs/assembler/masm/xmmword.md +++ b/docs/assembler/masm/xmmword.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: XMMWORD" title: "XMMWORD" -ms.date: "12/17/2019" +description: "Learn more about: XMMWORD" +ms.date: 12/17/2019 f1_keywords: ["XMMWORD"] helpviewer_keywords: ["XMMWORD directive"] -ms.assetid: 18026d32-5cab-403e-ad7e-382fb41aa9b8 --- # XMMWORD diff --git a/docs/build/reference/profile-performance-tools-profiler.md b/docs/build/reference/profile-performance-tools-profiler.md index a2b50606bc2..bff93bcfd78 100644 --- a/docs/build/reference/profile-performance-tools-profiler.md +++ b/docs/build/reference/profile-performance-tools-profiler.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: /PROFILE (Performance Tools Profiler)" title: "/PROFILE (Performance Tools Profiler)" +description: "Learn more about: /PROFILE (Performance Tools Profiler)" ms.date: 10/13/2021 f1_keywords: ["VC.Project.VCLinkerTool.Profile"] helpviewer_keywords: ["-PROFILE linker option", "/PROFILE linker option"] diff --git a/docs/code-quality/c6504.md b/docs/code-quality/c6504.md index 1fc3a179ee8..d7683b709d0 100644 --- a/docs/code-quality/c6504.md +++ b/docs/code-quality/c6504.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Warning C6504" title: Warning C6504 +description: "Learn more about: Warning C6504" ms.date: 10/03/2022 f1_keywords: ["C6504", "NULL_ON_NON_POINTER", "__WARNING_NULL_ON_NON_POINTER"] helpviewer_keywords: ["C6504"] -ms.assetid: 6baeed46-e73d-4974-af16-7487c55b3473 --- # Warning C6504 diff --git a/docs/code-quality/using-sal-annotations-to-reduce-c-cpp-code-defects.md b/docs/code-quality/using-sal-annotations-to-reduce-c-cpp-code-defects.md index af73328a594..3426d695a2a 100644 --- a/docs/code-quality/using-sal-annotations-to-reduce-c-cpp-code-defects.md +++ b/docs/code-quality/using-sal-annotations-to-reduce-c-cpp-code-defects.md @@ -1,13 +1,12 @@ --- -description: "Learn more about: Using SAL Annotations to Reduce C/C++ Code Defects" title: Using SAL Annotations to Reduce C/C++ Code Defects +description: "Learn more about: Using SAL Annotations to Reduce C/C++ Code Defects" ms.date: 11/04/2016 ms.topic: "concept-article" helpviewer_keywords: - "annotations" - "SAL annotations" - "code analysis, annotation" -ms.assetid: a16e47d0-6f3e-4ed6-8883-459b2874e9a4 --- # Using SAL Annotations to Reduce C/C++ Code Defects diff --git a/docs/cpp/import-export-module.md b/docs/cpp/import-export-module.md index 498af52c780..360717d20f8 100644 --- a/docs/cpp/import-export-module.md +++ b/docs/cpp/import-export-module.md @@ -1,9 +1,9 @@ --- title: "module, import, export" +description: Use import and export declarations to access and to publish types and functions defined in the specified module. ms.date: 02/13/2025 f1_keywords: ["module_cpp", "import_cpp", "export_cpp"] helpviewer_keywords: ["modules [C++]", "modules [C++], import", "modules [C++], export"] -description: Use import and export declarations to access and to publish types and functions defined in the specified module. --- # `module`, `import`, `export` diff --git a/docs/ide/adding-a-property-visual-cpp.md b/docs/ide/adding-a-property-visual-cpp.md index 8fe7391a5cb..4ec27fc8d6f 100644 --- a/docs/ide/adding-a-property-visual-cpp.md +++ b/docs/ide/adding-a-property-visual-cpp.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Add a property to an interface in a Microsoft Visual Studio C++ project" title: "Add a property" +description: "Learn more about: Add a property to an interface in a Microsoft Visual Studio C++ project" ms.date: 04/12/2022 f1_keywords: ["vc.codewiz.prop.overview"] helpviewer_keywords: ["interfaces, adding properties", "properties [C++], adding to interfaces", "names, add property wizard", "add property wizard", "stock properties, about stock properties", "stock properties"] diff --git a/docs/ide/live-share-cpp.md b/docs/ide/live-share-cpp.md index 9099be1d6cc..6825a02fc28 100644 --- a/docs/ide/live-share-cpp.md +++ b/docs/ide/live-share-cpp.md @@ -1,7 +1,7 @@ --- title: "Collaborate with Live Share for C++ in Visual Studio" description: "Use Live Share for C++ in Visual Studio to collaborate and share code in real time." -ms.date: "05/24/2019" +ms.date: 05/24/2019 --- # Collaborate using Live Share for C++ diff --git a/docs/ide/writing-and-refactoring-code-cpp.md b/docs/ide/writing-and-refactoring-code-cpp.md index 96428ae971c..72dc71d8b4f 100644 --- a/docs/ide/writing-and-refactoring-code-cpp.md +++ b/docs/ide/writing-and-refactoring-code-cpp.md @@ -1,7 +1,7 @@ --- title: "Edit and refactor C++ code in Visual Studio" description: "Use the C++ code editor in Visual Studio to format, navigate, understand and refactor your code." -ms.date: "09/20/2022" +ms.date: 09/20/2022 ms.topic: "overview" ms.custom: intro-overview --- diff --git a/docs/mfc/reference/add-interface-definition-library-mfc-property-wizard.md b/docs/mfc/reference/add-interface-definition-library-mfc-property-wizard.md index 2c86901f626..91fc8ecb27e 100644 --- a/docs/mfc/reference/add-interface-definition-library-mfc-property-wizard.md +++ b/docs/mfc/reference/add-interface-definition-library-mfc-property-wizard.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Use the Microsoft Visual Studio Add IDL MFC property wizard to add a property to an IDL interface in your MFC or ATL project" title: "Add an IDL MFC property" -ms.date: "04/14/2022" +description: "Learn more about: Use the Microsoft Visual Studio Add IDL MFC property wizard to add a property to an IDL interface in your MFC or ATL project" +ms.date: 04/14/2022 f1_keywords: ["vc.codewiz.prop.overview"] helpviewer_keywords: ["interfaces, adding properties", "properties [C++], adding to interfaces", "names, add property wizard", "add property wizard", "stock properties, about stock properties", "stock properties"] ms.custom: devdivchpfy22 From 6879c9e3128a4e910af476b2f6687a61891bab81 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 13 Jul 2025 19:07:22 +0800 Subject: [PATCH 1045/2255] Change "-" to "/" in title of "Output-File (/F) Options" topic --- docs/build/reference/output-file-f-options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/output-file-f-options.md b/docs/build/reference/output-file-f-options.md index 601eba50f41..4b43905105c 100644 --- a/docs/build/reference/output-file-f-options.md +++ b/docs/build/reference/output-file-f-options.md @@ -1,6 +1,6 @@ --- description: "Learn more about: Output-File (/F) Options" -title: "Output-File (-F) Options" +title: "Output-File (/F) Options" ms.date: "11/04/2016" helpviewer_keywords: ["output files", "output files, compiler options [C++]", "cl.exe compiler, output files"] ms.assetid: f6367f30-2710-4178-b43a-639eed824acb From 3bd79cc59f2cadebd9cc76dd2263e4351446f040 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 13 Jul 2025 19:08:41 +0800 Subject: [PATCH 1046/2255] Replace `br` element with escapes in "Output-File (/F) Options" topic --- docs/build/reference/output-file-f-options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/output-file-f-options.md b/docs/build/reference/output-file-f-options.md index 4b43905105c..100c79acc5f 100644 --- a/docs/build/reference/output-file-f-options.md +++ b/docs/build/reference/output-file-f-options.md @@ -33,5 +33,5 @@ The output-file options create or rename output files. They affect all C or C++ ## See also -[MSVC Compiler Options](compiler-options.md)
+[MSVC Compiler Options](compiler-options.md)\ [MSVC Compiler Command-Line Syntax](compiler-command-line-syntax.md) From eb4e1fa57f90a78cbf13bb362f05c4e0edcc8381 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 13 Jul 2025 19:11:10 +0800 Subject: [PATCH 1047/2255] Add backticks in "Output-File (/F) Options" topic --- docs/build/reference/output-file-f-options.md | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/build/reference/output-file-f-options.md b/docs/build/reference/output-file-f-options.md index 100c79acc5f..013491a0374 100644 --- a/docs/build/reference/output-file-f-options.md +++ b/docs/build/reference/output-file-f-options.md @@ -5,31 +5,31 @@ ms.date: "11/04/2016" helpviewer_keywords: ["output files", "output files, compiler options [C++]", "cl.exe compiler, output files"] ms.assetid: f6367f30-2710-4178-b43a-639eed824acb --- -# Output-File (/F) Options +# Output-File (`/F`) Options The output-file options create or rename output files. They affect all C or C++ source files specified in the CL environment variable, on the command line, or in any command file. -- [/FA, /Fa (Listing File)](fa-fa-listing-file.md) +- [`/FA`, `/Fa` (Listing File)](fa-fa-listing-file.md) - [Specifying the Pathname](specifying-the-pathname.md) -- [/Fd (Name PDB File)](fd-program-database-file-name.md) +- [`/Fd` (Name PDB File)](fd-program-database-file-name.md) -- [/Fe (Name EXE File)](fe-name-exe-file.md) +- [`/Fe` (Name EXE File)](fe-name-exe-file.md) -- [/FI (Name Forced Include File)](fi-name-forced-include-file.md) +- [`/FI` (Name Forced Include File)](fi-name-forced-include-file.md) -- [/Fm (Name Mapfile)](fm-name-mapfile.md) +- [`/Fm` (Name Mapfile)](fm-name-mapfile.md) -- [/Fo (Name Object File)](fo-object-file-name.md) +- [`/Fo` (Name Object File)](fo-object-file-name.md) -- [/Fp (Name .pch File)](fp-name-dot-pch-file.md) +- [`/Fp` (Name .pch File)](fp-name-dot-pch-file.md) -- [/FR, /Fr (Create .sbr File)](fr-fr-create-dot-sbr-file.md) +- [`/FR`, `/Fr` (Create .sbr File)](fr-fr-create-dot-sbr-file.md) -- [/FU (Name Forced #using File)](fu-name-forced-hash-using-file.md) +- [`/FU` (Name Forced #using File)](fu-name-forced-hash-using-file.md) -- [/Fx (Merge Injected Code)](fx-merge-injected-code.md) +- [`/Fx` (Merge Injected Code)](fx-merge-injected-code.md) ## See also From 5fd83e4f0392af3cae940121c16a8fe969e8f77b Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 13 Jul 2025 19:18:59 +0800 Subject: [PATCH 1048/2255] Add 2 missing entries in "Output-File (/F) Options" topic --- docs/build/reference/output-file-f-options.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/build/reference/output-file-f-options.md b/docs/build/reference/output-file-f-options.md index 013491a0374..a39a8eacf86 100644 --- a/docs/build/reference/output-file-f-options.md +++ b/docs/build/reference/output-file-f-options.md @@ -13,10 +13,14 @@ The output-file options create or rename output files. They affect all C or C++ - [Specifying the Pathname](specifying-the-pathname.md) +- [`/FD` (IDE Minimal Rebuild)](fd-ide-minimal-rebuild.md) + - [`/Fd` (Name PDB File)](fd-program-database-file-name.md) - [`/Fe` (Name EXE File)](fe-name-exe-file.md) +- [`/Fi` (Preprocess output file name)](fi-preprocess-output-file-name.md) + - [`/FI` (Name Forced Include File)](fi-name-forced-include-file.md) - [`/Fm` (Name Mapfile)](fm-name-mapfile.md) From e748730f4d83bdbed68632b5d1f1891c67fd49a3 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 13 Jul 2025 19:20:38 +0800 Subject: [PATCH 1049/2255] Update metadata in "Output-File (/F) Options" topic --- docs/build/reference/output-file-f-options.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/build/reference/output-file-f-options.md b/docs/build/reference/output-file-f-options.md index a39a8eacf86..da20a94a487 100644 --- a/docs/build/reference/output-file-f-options.md +++ b/docs/build/reference/output-file-f-options.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Output-File (/F) Options" title: "Output-File (/F) Options" -ms.date: "11/04/2016" +description: "Learn more about: Output-File (/F) Options" +ms.date: 11/04/2016 helpviewer_keywords: ["output files", "output files, compiler options [C++]", "cl.exe compiler, output files"] -ms.assetid: f6367f30-2710-4178-b43a-639eed824acb --- # Output-File (`/F`) Options From 12da1a406604aa9a44b07ba80a6adfb7df7982e7 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 13 Jul 2025 22:16:34 +0800 Subject: [PATCH 1050/2255] Resolve cut off name for `/FU` in `toc.yml` --- docs/build/toc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/toc.yml b/docs/build/toc.yml index 444ec54501b..9fced4f681a 100644 --- a/docs/build/toc.yml +++ b/docs/build/toc.yml @@ -552,7 +552,7 @@ items: href: ../build/reference/fp-name-dot-pch-file.md - name: /FR, /Fr (Create .Sbr file) href: ../build/reference/fr-fr-create-dot-sbr-file.md - - name: /FU (Name forced + - name: "/FU (Name forced #using file)" href: ../build/reference/fu-name-forced-hash-using-file.md - name: /Fx (Merge injected code) href: ../build/reference/fx-merge-injected-code.md From c21763a259e42b1da474c1256d706750962e5632 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 13 Jul 2025 22:28:37 +0800 Subject: [PATCH 1051/2255] Convert BSCMAKE errors and warnings list into a table --- .../bscmake-errors-bk1500-through-bk4505.md | 38 ++++++++++--------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/docs/error-messages/tool-errors/bscmake-errors-bk1500-through-bk4505.md b/docs/error-messages/tool-errors/bscmake-errors-bk1500-through-bk4505.md index cf53a0fd929..567c9895c3e 100644 --- a/docs/error-messages/tool-errors/bscmake-errors-bk1500-through-bk4505.md +++ b/docs/error-messages/tool-errors/bscmake-errors-bk1500-through-bk4505.md @@ -12,26 +12,30 @@ This section is a reference to the errors and warnings generated by the BSCMAKE ## Error messages -[BSCMAKE error BK1503](bscmake-error-bk1503.md) \ -[BSCMAKE error BK1504](bscmake-error-bk1504.md) \ -[BSCMAKE error BK1505](bscmake-error-bk1505.md) \ -[BSCMAKE error BK1506](bscmake-error-bk1506.md) \ -[BSCMAKE error BK1507](bscmake-error-bk1507.md) \ -[BSCMAKE error BK1508](bscmake-error-bk1508.md) \ -[BSCMAKE error BK1509](bscmake-error-bk1509.md) \ -[BSCMAKE error BK1510](bscmake-error-bk1510.md) \ -[BSCMAKE error BK1512](bscmake-error-bk1512.md) \ -[BSCMAKE error BK1513](bscmake-error-bk1513.md) \ -[BSCMAKE error BK1514](bscmake-error-bk1514.md) \ -[BSCMAKE error BK1515](bscmake-error-bk1515.md) \ -[BSCMAKE error BK1516](bscmake-error-bk1516.md) \ -[BSCMAKE error BK1517](bscmake-error-bk1517.md) +| Error | Message | +|--|--| +| [BSCMAKE error BK1503](bscmake-error-bk1503.md) | cannot write to file 'filename' [: reason] | +| [BSCMAKE error BK1504](bscmake-error-bk1504.md) | cannot position in file 'filename' [: reason] | +| [BSCMAKE error BK1505](bscmake-error-bk1505.md) | cannot read from file 'filename' [: reason] | +| [BSCMAKE error BK1506](bscmake-error-bk1506.md) | cannot open file 'filename' [: reason] | +| [BSCMAKE error BK1507](bscmake-error-bk1507.md) | cannot open temporary file 'filename' [: reason] | +| [BSCMAKE error BK1508](bscmake-error-bk1508.md) | cannot delete temporary file 'filename' [: reason] | +| [BSCMAKE error BK1509](bscmake-error-bk1509.md) | out of heap space | +| [BSCMAKE error BK1510](bscmake-error-bk1510.md) | corrupt .SBR file filename | +| [BSCMAKE error BK1512](bscmake-error-bk1512.md) | filename: capacity exceeded | +| [BSCMAKE error BK1513](bscmake-error-bk1513.md) | nonincremental update requires all .SBR files | +| [BSCMAKE error BK1514](bscmake-error-bk1514.md) | all .SBR files truncated, none found in filename | +| [BSCMAKE error BK1515](bscmake-error-bk1515.md) | bscfile: incompatible version: cannot incrementally update | +| [BSCMAKE error BK1516](bscmake-error-bk1516.md) | bscfile corrupt; cannot incrementally update | +| [BSCMAKE error BK1517](bscmake-error-bk1517.md) | source file for sbrfile compiled with both /Yc and /Yu | ## Warning messages -[BSCMAKE warning BK4502](bscmake-warning-bk4502.md) \ -[BSCMAKE warning BK4503](bscmake-warning-bk4503.md) \ -[BSCMAKE warning BK4504](bscmake-warning-bk4504.md) +| Warning | Message | +|--|--| +| [BSCMAKE warning BK4502](bscmake-warning-bk4502.md) | truncated .SBR file 'filename' not in filename | +| [BSCMAKE warning BK4503](bscmake-warning-bk4503.md) | minor error in .SBR file filename ignored | +| [BSCMAKE warning BK4504](bscmake-warning-bk4504.md) | file contains too many references; ignoring further references from this source | ## See also From 11598355b4f9f61c784a07d5e0dc14f0864fde43 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 13 Jul 2025 22:29:30 +0800 Subject: [PATCH 1052/2255] Simplify superfluous relative links in "BSCMAKE errors and warnings (BKxxxx)" --- .../tool-errors/bscmake-errors-bk1500-through-bk4505.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/tool-errors/bscmake-errors-bk1500-through-bk4505.md b/docs/error-messages/tool-errors/bscmake-errors-bk1500-through-bk4505.md index 567c9895c3e..68d2fef9447 100644 --- a/docs/error-messages/tool-errors/bscmake-errors-bk1500-through-bk4505.md +++ b/docs/error-messages/tool-errors/bscmake-errors-bk1500-through-bk4505.md @@ -8,7 +8,7 @@ ms.assetid: 3767baa6-e639-472e-99fd-7543fd945cd3 This section is a reference to the errors and warnings generated by the BSCMAKE build tool. BSCMAKE errors and warnings have the form BK*xxxx*, where *xxxx* is a four-digit number. -[!INCLUDE[error-boilerplate](../../error-messages/includes/error-boilerplate.md)] +[!INCLUDE[error-boilerplate](../includes/error-boilerplate.md)] ## Error messages From 2e76b3f360b57cde51f94e73a70f2296fd224f6c Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 13 Jul 2025 22:30:10 +0800 Subject: [PATCH 1053/2255] Remove space before escape in "BSCMAKE errors and warnings (BKxxxx)" --- .../tool-errors/bscmake-errors-bk1500-through-bk4505.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/tool-errors/bscmake-errors-bk1500-through-bk4505.md b/docs/error-messages/tool-errors/bscmake-errors-bk1500-through-bk4505.md index 68d2fef9447..022c3ee6cc6 100644 --- a/docs/error-messages/tool-errors/bscmake-errors-bk1500-through-bk4505.md +++ b/docs/error-messages/tool-errors/bscmake-errors-bk1500-through-bk4505.md @@ -39,5 +39,5 @@ This section is a reference to the errors and warnings generated by the BSCMAKE ## See also -[C/C++ Compiler and build tools errors and warnings](../compiler-errors-1/c-cpp-build-errors.md) \ +[C/C++ Compiler and build tools errors and warnings](../compiler-errors-1/c-cpp-build-errors.md)\ [BSCMake reference](../../build/reference/bscmake-reference.md) From b4dcc163b93d6f7df09e3c0793901cd7bda47d28 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 13 Jul 2025 22:30:47 +0800 Subject: [PATCH 1054/2255] Update metadata in "BSCMAKE errors and warnings (BKxxxx)" --- .../tool-errors/bscmake-errors-bk1500-through-bk4505.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/error-messages/tool-errors/bscmake-errors-bk1500-through-bk4505.md b/docs/error-messages/tool-errors/bscmake-errors-bk1500-through-bk4505.md index 022c3ee6cc6..59030414a39 100644 --- a/docs/error-messages/tool-errors/bscmake-errors-bk1500-through-bk4505.md +++ b/docs/error-messages/tool-errors/bscmake-errors-bk1500-through-bk4505.md @@ -1,8 +1,7 @@ --- -description: "Learn more about: BSCMAKE errors and warnings (BKxxxx)" title: "BSCMAKE errors and warnings" -ms.date: "04/16/2019" -ms.assetid: 3767baa6-e639-472e-99fd-7543fd945cd3 +description: "Learn more about: BSCMAKE errors and warnings (BKxxxx)" +ms.date: 04/16/2019 --- # BSCMAKE errors and warnings (BKxxxx) From 887af19916c94aa34dde5abe30cdc8d029bb62ee Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 13 Jul 2025 22:38:36 +0800 Subject: [PATCH 1055/2255] Add blockquotes for error messages in range [C2081, C2100] --- docs/error-messages/compiler-errors-1/compiler-error-c2081.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2082.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2083.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2084.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2085.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2086.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2087.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2088.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2089.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2090.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2091.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2092.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2093.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2094.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2095.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2097.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2099.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2100.md | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2081.md b/docs/error-messages/compiler-errors-1/compiler-error-c2081.md index 39c5c3f2863..3aa277b93e7 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2081.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2081.md @@ -8,7 +8,7 @@ ms.assetid: 7db9892d-364d-4178-a49d-f8398ece09a0 --- # Compiler Error C2081 -'identifier' : name in formal parameter list illegal +> 'identifier' : name in formal parameter list illegal The identifier caused a syntax error. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2082.md b/docs/error-messages/compiler-errors-1/compiler-error-c2082.md index e5a420137b4..a4eed106948 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2082.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2082.md @@ -8,7 +8,7 @@ ms.assetid: 87a6d442-157c-46e8-9bff-8388f8338ae0 --- # Compiler Error C2082 -redefinition of formal parameter 'identifier' +> redefinition of formal parameter 'identifier' A formal parameter to a function is redeclared within the function body. To resolve the error, remove the redefinition. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2083.md b/docs/error-messages/compiler-errors-1/compiler-error-c2083.md index a3e24730c9d..07848867ad3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2083.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2083.md @@ -8,6 +8,6 @@ ms.assetid: 5fc4f931-eab6-4d8d-a3ee-3b8e11e64b18 --- # Compiler Error C2083 -struct/union comparison illegal +> struct/union comparison illegal A structure or union is compared directly with another user-defined type. This is not allowed unless a comparison operator has been defined or a conversion to a scalar type exists. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2084.md b/docs/error-messages/compiler-errors-1/compiler-error-c2084.md index 19f1c11e732..0c24168b04a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2084.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2084.md @@ -8,7 +8,7 @@ ms.assetid: 990b107f-3721-4851-ae8b-4b69a8c149ed --- # Compiler Error C2084 -function '*function*' already has a body +> function '*function*' already has a body The function has already been defined. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2085.md b/docs/error-messages/compiler-errors-1/compiler-error-c2085.md index fcd890fb8ec..d83a22832b8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2085.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2085.md @@ -8,7 +8,7 @@ ms.assetid: 0a86785c-8e6f-481b-8c7b-412220c1950d --- # Compiler Error C2085 -'identifier' : not in formal parameter list +> 'identifier' : not in formal parameter list The identifier was declared in a function definition but not in the formal parameter list. (ANSI C only) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2086.md b/docs/error-messages/compiler-errors-1/compiler-error-c2086.md index 25867e1a3e7..f2961de2385 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2086.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2086.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2086"] --- # Compiler Error C2086 -'identifier' : redefinition +> 'identifier' : redefinition The identifier is defined more than once, or a subsequent declaration differs from a previous one. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2087.md b/docs/error-messages/compiler-errors-1/compiler-error-c2087.md index 990afe20506..647a8f1e196 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2087.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2087.md @@ -8,7 +8,7 @@ ms.assetid: 89761e83-415a-4468-a4c6-b6dedfd1dd6a --- # Compiler Error C2087 -'identifier' : missing subscript +> 'identifier' : missing subscript The definition of an array with multiple subscripts is missing a subscript value for a dimension higher than one. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2088.md b/docs/error-messages/compiler-errors-1/compiler-error-c2088.md index d25127ed208..160c9004fb7 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2088.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2088.md @@ -8,7 +8,7 @@ ms.assetid: b93f7094-185b-423d-8bb9-507cd757dbf5 --- # Compiler Error C2088 -'operator' : illegal for 'class-key' +> 'operator' : illegal for 'class-key' The operator was not defined for the structure or union. This error is only valid for C code. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2089.md b/docs/error-messages/compiler-errors-1/compiler-error-c2089.md index 1bcf00bbc33..2726a2958f8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2089.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2089.md @@ -8,6 +8,6 @@ ms.assetid: 7c777775-5535-4eea-b6a2-340b71af9560 --- # Compiler Error C2089 -'identifier' : 'class-key' too large +> 'identifier' : 'class-key' too large The specified structure or union exceeds the 4GB limit. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2090.md b/docs/error-messages/compiler-errors-1/compiler-error-c2090.md index 715aaff8d3c..71dd098f56a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2090.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2090.md @@ -8,7 +8,7 @@ ms.assetid: e8176e55-382b-453d-aa27-6597f0274afd --- # Compiler Error C2090 -function returns array +> function returns array A function cannot return an array. Return a pointer to an array instead. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2091.md b/docs/error-messages/compiler-errors-1/compiler-error-c2091.md index 9b354713a20..20b6b06af2b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2091.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2091.md @@ -8,6 +8,6 @@ ms.assetid: 247c3b57-f123-4420-b68e-d65a364b63cb --- # Compiler Error C2091 -function returns function +> function returns function A function cannot return a function. Return a pointer to a function instead. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2092.md b/docs/error-messages/compiler-errors-1/compiler-error-c2092.md index ed654b5ab5e..53809f0f36b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2092.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2092.md @@ -8,7 +8,7 @@ ms.assetid: 037e44ae-16c8-489a-a512-dcdf7f7795a6 --- # Compiler Error C2092 -'array name' array element type cannot be function +> 'array name' array element type cannot be function Arrays of functions are not allowed. Use an array of pointers to functions. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2093.md b/docs/error-messages/compiler-errors-1/compiler-error-c2093.md index 4cf2f9332a5..a46206ce7f5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2093.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2093.md @@ -8,7 +8,7 @@ ms.assetid: 17529a70-9169-46b5-9fc6-57a5ce224e6a --- # Compiler Error C2093 -'variable1' : cannot be initialized using address of automatic variable 'variable2' +> 'variable1' : cannot be initialized using address of automatic variable 'variable2' When compiling with [/Za](../../build/reference/za-ze-disable-language-extensions.md), the program tried to use the address of an automatic variable as an initializer. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2094.md b/docs/error-messages/compiler-errors-1/compiler-error-c2094.md index 2fd470d2dd6..f65c55fa5e5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2094.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2094.md @@ -8,7 +8,7 @@ ms.assetid: 9e4f8f88-f189-46e7-91c9-481bacc7af87 --- # Compiler Error C2094 -label 'identifier' was undefined +> label 'identifier' was undefined The label used by a [goto](../../cpp/goto-statement-cpp.md) statement does not exist in the function. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2095.md b/docs/error-messages/compiler-errors-1/compiler-error-c2095.md index 0c20af59dd8..2e5f20a5293 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2095.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2095.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2095"] --- # Compiler Error C2095 -'function' : actual parameter has type 'void' : parameter 'number' +> 'function' : actual parameter has type 'void' : parameter 'number' The parameter passed to the function is type **`void`**, which is not allowed. Use a pointer to void (`void *`) instead. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2097.md b/docs/error-messages/compiler-errors-1/compiler-error-c2097.md index b17f2535fbd..27f83766934 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2097.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2097.md @@ -8,7 +8,7 @@ ms.assetid: 7e5b2fd4-f61c-4b8a-b265-93e987a04bd3 --- # Compiler Error C2097 -illegal initialization +> illegal initialization ### To fix by checking the following possible causes diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2099.md b/docs/error-messages/compiler-errors-1/compiler-error-c2099.md index 05dd905b4a8..11a2d50b4fa 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2099.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2099.md @@ -8,7 +8,7 @@ ms.assetid: 30e151ee-d458-4901-b0c0-d45054a913f5 --- # Compiler Error C2099 -initializer is not a constant +> initializer is not a constant This error is issued only by the C compiler and occurs only for non-automatic variables. The compiler initializes non-automatic variables at the start of the program and the values they are initialized with must be constant. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2100.md b/docs/error-messages/compiler-errors-1/compiler-error-c2100.md index c2ec8521884..93756d145e4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2100.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2100.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2100"] --- # Compiler Error C2100 -illegal indirection +> illegal indirection Indirection operator (`*`) is applied to a nonpointer value. From b93175aaea0112de8da317e3e85ff54db6f669af Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 13 Jul 2025 22:42:45 +0800 Subject: [PATCH 1056/2255] Add "Remarks" and "Example" headings for error references in range [C2081, C2100] --- docs/error-messages/compiler-errors-1/compiler-error-c2081.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2082.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2083.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2084.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2085.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2086.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2087.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2088.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2089.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2090.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2091.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2092.md | 4 +++- docs/error-messages/compiler-errors-1/compiler-error-c2093.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2094.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2095.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2096.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2098.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2099.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2100.md | 4 ++++ 19 files changed, 57 insertions(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2081.md b/docs/error-messages/compiler-errors-1/compiler-error-c2081.md index 3aa277b93e7..add9dcb7761 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2081.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2081.md @@ -10,10 +10,14 @@ ms.assetid: 7db9892d-364d-4178-a49d-f8398ece09a0 > 'identifier' : name in formal parameter list illegal +## Remarks + The identifier caused a syntax error. This error can be caused by using the old style for the formal parameter list. You must specify the type of formal parameters in the formal parameter list. +## Example + The following sample generates C2081: ```c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2082.md b/docs/error-messages/compiler-errors-1/compiler-error-c2082.md index a4eed106948..2885a6a0fca 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2082.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2082.md @@ -10,8 +10,12 @@ ms.assetid: 87a6d442-157c-46e8-9bff-8388f8338ae0 > redefinition of formal parameter 'identifier' +## Remarks + A formal parameter to a function is redeclared within the function body. To resolve the error, remove the redefinition. +## Example + The following sample generates C2082: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2083.md b/docs/error-messages/compiler-errors-1/compiler-error-c2083.md index 07848867ad3..77f147de875 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2083.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2083.md @@ -10,4 +10,6 @@ ms.assetid: 5fc4f931-eab6-4d8d-a3ee-3b8e11e64b18 > struct/union comparison illegal +## Remarks + A structure or union is compared directly with another user-defined type. This is not allowed unless a comparison operator has been defined or a conversion to a scalar type exists. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2084.md b/docs/error-messages/compiler-errors-1/compiler-error-c2084.md index 0c24168b04a..473f692d64c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2084.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2084.md @@ -10,6 +10,8 @@ ms.assetid: 990b107f-3721-4851-ae8b-4b69a8c149ed > function '*function*' already has a body +## Remarks + The function has already been defined. Before Visual Studio 2002, diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2085.md b/docs/error-messages/compiler-errors-1/compiler-error-c2085.md index d83a22832b8..1012b01ebc1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2085.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2085.md @@ -10,8 +10,12 @@ ms.assetid: 0a86785c-8e6f-481b-8c7b-412220c1950d > 'identifier' : not in formal parameter list +## Remarks + The identifier was declared in a function definition but not in the formal parameter list. (ANSI C only) +## Example + The following sample generates C2085: ```c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2086.md b/docs/error-messages/compiler-errors-1/compiler-error-c2086.md index f2961de2385..668839b2e5b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2086.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2086.md @@ -9,10 +9,14 @@ helpviewer_keywords: ["C2086"] > 'identifier' : redefinition +## Remarks + The identifier is defined more than once, or a subsequent declaration differs from a previous one. C2086 can also be the result of incremental building for a referenced C# assembly. Rebuild the C# assembly to resolve this error. +## Example + The following sample generates C2086: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2087.md b/docs/error-messages/compiler-errors-1/compiler-error-c2087.md index 647a8f1e196..9412f12a422 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2087.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2087.md @@ -10,8 +10,12 @@ ms.assetid: 89761e83-415a-4468-a4c6-b6dedfd1dd6a > 'identifier' : missing subscript +## Remarks + The definition of an array with multiple subscripts is missing a subscript value for a dimension higher than one. +## Example + The following sample generates C2087: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2088.md b/docs/error-messages/compiler-errors-1/compiler-error-c2088.md index 160c9004fb7..8b9187f5dda 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2088.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2088.md @@ -10,8 +10,12 @@ ms.assetid: b93f7094-185b-423d-8bb9-507cd757dbf5 > 'operator' : illegal for 'class-key' +## Remarks + The operator was not defined for the structure or union. This error is only valid for C code. +## Example + The following sample generates C2088 three times: ```c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2089.md b/docs/error-messages/compiler-errors-1/compiler-error-c2089.md index 2726a2958f8..afbce2d8e94 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2089.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2089.md @@ -10,4 +10,6 @@ ms.assetid: 7c777775-5535-4eea-b6a2-340b71af9560 > 'identifier' : 'class-key' too large +## Remarks + The specified structure or union exceeds the 4GB limit. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2090.md b/docs/error-messages/compiler-errors-1/compiler-error-c2090.md index 71dd098f56a..7a11fd61544 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2090.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2090.md @@ -10,8 +10,12 @@ ms.assetid: e8176e55-382b-453d-aa27-6597f0274afd > function returns array +## Remarks + A function cannot return an array. Return a pointer to an array instead. +## Example + The following sample generates C2090: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2091.md b/docs/error-messages/compiler-errors-1/compiler-error-c2091.md index 20b6b06af2b..f2b03ebf1ec 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2091.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2091.md @@ -10,4 +10,6 @@ ms.assetid: 247c3b57-f123-4420-b68e-d65a364b63cb > function returns function +## Remarks + A function cannot return a function. Return a pointer to a function instead. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2092.md b/docs/error-messages/compiler-errors-1/compiler-error-c2092.md index 53809f0f36b..3a534d968ec 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2092.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2092.md @@ -10,9 +10,11 @@ ms.assetid: 037e44ae-16c8-489a-a512-dcdf7f7795a6 > 'array name' array element type cannot be function +## Remarks + Arrays of functions are not allowed. Use an array of pointers to functions. -## Examples +## Example The following sample generates C2092: diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2093.md b/docs/error-messages/compiler-errors-1/compiler-error-c2093.md index a46206ce7f5..9f07719a2d2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2093.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2093.md @@ -10,8 +10,12 @@ ms.assetid: 17529a70-9169-46b5-9fc6-57a5ce224e6a > 'variable1' : cannot be initialized using address of automatic variable 'variable2' +## Remarks + When compiling with [/Za](../../build/reference/za-ze-disable-language-extensions.md), the program tried to use the address of an automatic variable as an initializer. +## Example + The following sample generates C2093: ```c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2094.md b/docs/error-messages/compiler-errors-1/compiler-error-c2094.md index f65c55fa5e5..ab6848d084b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2094.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2094.md @@ -10,6 +10,8 @@ ms.assetid: 9e4f8f88-f189-46e7-91c9-481bacc7af87 > label 'identifier' was undefined +## Remarks + The label used by a [goto](../../cpp/goto-statement-cpp.md) statement does not exist in the function. ## Example diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2095.md b/docs/error-messages/compiler-errors-1/compiler-error-c2095.md index 2e5f20a5293..8a998415a2c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2095.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2095.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C2095"] > 'function' : actual parameter has type 'void' : parameter 'number' +## Remarks + The parameter passed to the function is type **`void`**, which is not allowed. Use a pointer to void (`void *`) instead. The `number` indicates which parameter is **`void`**. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2096.md b/docs/error-messages/compiler-errors-1/compiler-error-c2096.md index 429150aba63..f5346648025 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2096.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2096.md @@ -9,4 +9,6 @@ helpviewer_keywords: ["C2096"] > '*identifier*': A data member cannot be initialized with a parenthesized initializer +## Remarks + The compiler expected a braced initializer or an equal expression initializer. To resolve the issue, replace the parenthesized initializer with a braced initializer. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2098.md b/docs/error-messages/compiler-errors-1/compiler-error-c2098.md index b8c19fd652d..274e2d244da 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2098.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2098.md @@ -9,4 +9,6 @@ helpviewer_keywords: ["C2098"] > unexpected token after data member '*identifier*' +## Remarks + The compiler expected a semicolon, a braced initializer or an equal expression initializer. To resolve the issue, insert a semicolon or an initializer. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2099.md b/docs/error-messages/compiler-errors-1/compiler-error-c2099.md index 11a2d50b4fa..095134017eb 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2099.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2099.md @@ -10,6 +10,8 @@ ms.assetid: 30e151ee-d458-4901-b0c0-d45054a913f5 > initializer is not a constant +## Remarks + This error is issued only by the C compiler and occurs only for non-automatic variables. The compiler initializes non-automatic variables at the start of the program and the values they are initialized with must be constant. ## Examples diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2100.md b/docs/error-messages/compiler-errors-1/compiler-error-c2100.md index 93756d145e4..c50f0e06a45 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2100.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2100.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C2100"] > illegal indirection +## Remarks + Indirection operator (`*`) is applied to a nonpointer value. +## Example + The following sample generates C2100: ```cpp From cc8b5f3a396e1f89611790406ce8456148331cf5 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 13 Jul 2025 22:44:00 +0800 Subject: [PATCH 1057/2255] Replace term "sample" with "example" for error references in range [C2081, C2100] --- docs/error-messages/compiler-errors-1/compiler-error-c2081.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2082.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2084.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2085.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2086.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2087.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2088.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2090.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2092.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2093.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2094.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2099.md | 4 ++-- docs/error-messages/compiler-errors-1/compiler-error-c2100.md | 2 +- 13 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2081.md b/docs/error-messages/compiler-errors-1/compiler-error-c2081.md index add9dcb7761..846e5fe0261 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2081.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2081.md @@ -18,7 +18,7 @@ This error can be caused by using the old style for the formal parameter list. Y ## Example -The following sample generates C2081: +The following example generates C2081: ```c // C2081.c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2082.md b/docs/error-messages/compiler-errors-1/compiler-error-c2082.md index 2885a6a0fca..8ddb86ec2db 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2082.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2082.md @@ -16,7 +16,7 @@ A formal parameter to a function is redeclared within the function body. To reso ## Example -The following sample generates C2082: +The following example generates C2082: ```cpp // C2082.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2084.md b/docs/error-messages/compiler-errors-1/compiler-error-c2084.md index 473f692d64c..67555e8f275 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2084.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2084.md @@ -22,7 +22,7 @@ Before Visual Studio 2002, ## Example -The following sample generates C2084: +The following example generates C2084: ```cpp // C2084.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2085.md b/docs/error-messages/compiler-errors-1/compiler-error-c2085.md index 1012b01ebc1..7568fbf36b9 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2085.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2085.md @@ -16,7 +16,7 @@ The identifier was declared in a function definition but not in the formal param ## Example -The following sample generates C2085: +The following example generates C2085: ```c // C2085.c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2086.md b/docs/error-messages/compiler-errors-1/compiler-error-c2086.md index 668839b2e5b..a3cf0c60f0a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2086.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2086.md @@ -17,7 +17,7 @@ C2086 can also be the result of incremental building for a referenced C# assembl ## Example -The following sample generates C2086: +The following example generates C2086: ```cpp // C2086.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2087.md b/docs/error-messages/compiler-errors-1/compiler-error-c2087.md index 9412f12a422..fe75c63c446 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2087.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2087.md @@ -16,7 +16,7 @@ The definition of an array with multiple subscripts is missing a subscript value ## Example -The following sample generates C2087: +The following example generates C2087: ```cpp // C2087.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2088.md b/docs/error-messages/compiler-errors-1/compiler-error-c2088.md index 8b9187f5dda..04c4366cd29 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2088.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2088.md @@ -16,7 +16,7 @@ The operator was not defined for the structure or union. This error is only vali ## Example -The following sample generates C2088 three times: +The following example generates C2088 three times: ```c // C2088.c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2090.md b/docs/error-messages/compiler-errors-1/compiler-error-c2090.md index 7a11fd61544..a0f79bc0a7b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2090.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2090.md @@ -16,7 +16,7 @@ A function cannot return an array. Return a pointer to an array instead. ## Example -The following sample generates C2090: +The following example generates C2090: ```cpp // C2090.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2092.md b/docs/error-messages/compiler-errors-1/compiler-error-c2092.md index 3a534d968ec..5ecdffac942 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2092.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2092.md @@ -16,7 +16,7 @@ Arrays of functions are not allowed. Use an array of pointers to functions. ## Example -The following sample generates C2092: +The following example generates C2092: ```cpp // C2092.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2093.md b/docs/error-messages/compiler-errors-1/compiler-error-c2093.md index 9f07719a2d2..b44c3257f09 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2093.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2093.md @@ -16,7 +16,7 @@ When compiling with [/Za](../../build/reference/za-ze-disable-language-extension ## Example -The following sample generates C2093: +The following example generates C2093: ```c // C2093.c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2094.md b/docs/error-messages/compiler-errors-1/compiler-error-c2094.md index ab6848d084b..c25afc62131 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2094.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2094.md @@ -16,7 +16,7 @@ The label used by a [goto](../../cpp/goto-statement-cpp.md) statement does not e ## Example -The following sample generates C2094: +The following example generates C2094: ```cpp // C2094.c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2099.md b/docs/error-messages/compiler-errors-1/compiler-error-c2099.md index 095134017eb..012ffe9ad36 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2099.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2099.md @@ -16,7 +16,7 @@ This error is issued only by the C compiler and occurs only for non-automatic va ## Examples -The following sample generates C2099. +The following example generates C2099. ```c // C2099.c @@ -33,7 +33,7 @@ To resolve this error, compile the module as a .cpp file or simplify the express For more information, see [/fp (Specify Floating-Point Behavior)](../../build/reference/fp-specify-floating-point-behavior.md). -The following sample generates C2099. +The following example generates C2099. ```c // C2099_2.c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2100.md b/docs/error-messages/compiler-errors-1/compiler-error-c2100.md index c50f0e06a45..e89c4bde438 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2100.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2100.md @@ -15,7 +15,7 @@ Indirection operator (`*`) is applied to a nonpointer value. ## Example -The following sample generates C2100: +The following example generates C2100: ```cpp // C2100.cpp From cd98b414fa1e2bdb6b44cc347179ac8c4a78de40 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 13 Jul 2025 22:48:15 +0800 Subject: [PATCH 1058/2255] Update metadata for error references in range [C2081, C2100] --- .../error-messages/compiler-errors-1/compiler-error-c2081.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2082.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2083.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2084.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2085.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2087.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2088.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2089.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2090.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2091.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2092.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2093.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2094.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2096.md | 2 +- .../error-messages/compiler-errors-1/compiler-error-c2097.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2098.md | 2 +- .../error-messages/compiler-errors-1/compiler-error-c2099.md | 5 ++--- 17 files changed, 32 insertions(+), 47 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2081.md b/docs/error-messages/compiler-errors-1/compiler-error-c2081.md index 846e5fe0261..91f785dfd40 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2081.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2081.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2081" title: "Compiler Error C2081" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2081" +ms.date: 11/04/2016 f1_keywords: ["C2081"] helpviewer_keywords: ["C2081"] -ms.assetid: 7db9892d-364d-4178-a49d-f8398ece09a0 --- # Compiler Error C2081 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2082.md b/docs/error-messages/compiler-errors-1/compiler-error-c2082.md index 8ddb86ec2db..205cdfdc0e3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2082.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2082.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2082" title: "Compiler Error C2082" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2082" +ms.date: 11/04/2016 f1_keywords: ["C2082"] helpviewer_keywords: ["C2082"] -ms.assetid: 87a6d442-157c-46e8-9bff-8388f8338ae0 --- # Compiler Error C2082 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2083.md b/docs/error-messages/compiler-errors-1/compiler-error-c2083.md index 77f147de875..c47d0828db9 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2083.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2083.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2083" title: "Compiler Error C2083" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2083" +ms.date: 11/04/2016 f1_keywords: ["C2083"] helpviewer_keywords: ["C2083"] -ms.assetid: 5fc4f931-eab6-4d8d-a3ee-3b8e11e64b18 --- # Compiler Error C2083 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2084.md b/docs/error-messages/compiler-errors-1/compiler-error-c2084.md index 67555e8f275..8133c53ace2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2084.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2084.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2084" title: "Compiler Error C2084" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2084" +ms.date: 11/04/2016 f1_keywords: ["C2084"] helpviewer_keywords: ["C2084"] -ms.assetid: 990b107f-3721-4851-ae8b-4b69a8c149ed --- # Compiler Error C2084 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2085.md b/docs/error-messages/compiler-errors-1/compiler-error-c2085.md index 7568fbf36b9..ab918561c43 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2085.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2085.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2085" title: "Compiler Error C2085" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2085" +ms.date: 11/04/2016 f1_keywords: ["C2085"] helpviewer_keywords: ["C2085"] -ms.assetid: 0a86785c-8e6f-481b-8c7b-412220c1950d --- # Compiler Error C2085 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2087.md b/docs/error-messages/compiler-errors-1/compiler-error-c2087.md index fe75c63c446..bbda0677224 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2087.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2087.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2087" title: "Compiler Error C2087" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2087" +ms.date: 11/04/2016 f1_keywords: ["C2087"] helpviewer_keywords: ["C2087"] -ms.assetid: 89761e83-415a-4468-a4c6-b6dedfd1dd6a --- # Compiler Error C2087 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2088.md b/docs/error-messages/compiler-errors-1/compiler-error-c2088.md index 04c4366cd29..372c228b7e0 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2088.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2088.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2088" title: "Compiler Error C2088" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2088" +ms.date: 11/04/2016 f1_keywords: ["C2088"] helpviewer_keywords: ["C2088"] -ms.assetid: b93f7094-185b-423d-8bb9-507cd757dbf5 --- # Compiler Error C2088 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2089.md b/docs/error-messages/compiler-errors-1/compiler-error-c2089.md index afbce2d8e94..caf451167e6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2089.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2089.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2089" title: "Compiler Error C2089" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2089" +ms.date: 11/04/2016 f1_keywords: ["C2089"] helpviewer_keywords: ["C2089"] -ms.assetid: 7c777775-5535-4eea-b6a2-340b71af9560 --- # Compiler Error C2089 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2090.md b/docs/error-messages/compiler-errors-1/compiler-error-c2090.md index a0f79bc0a7b..384319cefd7 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2090.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2090.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2090" title: "Compiler Error C2090" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2090" +ms.date: 11/04/2016 f1_keywords: ["C2090"] helpviewer_keywords: ["C2090"] -ms.assetid: e8176e55-382b-453d-aa27-6597f0274afd --- # Compiler Error C2090 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2091.md b/docs/error-messages/compiler-errors-1/compiler-error-c2091.md index f2b03ebf1ec..e873a8864ef 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2091.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2091.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2091" title: "Compiler Error C2091" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2091" +ms.date: 11/04/2016 f1_keywords: ["C2091"] helpviewer_keywords: ["C2091"] -ms.assetid: 247c3b57-f123-4420-b68e-d65a364b63cb --- # Compiler Error C2091 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2092.md b/docs/error-messages/compiler-errors-1/compiler-error-c2092.md index 5ecdffac942..3b07baae29f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2092.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2092.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2092" title: "Compiler Error C2092" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2092" +ms.date: 11/04/2016 f1_keywords: ["C2092"] helpviewer_keywords: ["C2092"] -ms.assetid: 037e44ae-16c8-489a-a512-dcdf7f7795a6 --- # Compiler Error C2092 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2093.md b/docs/error-messages/compiler-errors-1/compiler-error-c2093.md index b44c3257f09..ea575c36681 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2093.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2093.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2093" title: "Compiler Error C2093" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2093" +ms.date: 11/04/2016 f1_keywords: ["C2093"] helpviewer_keywords: ["C2093"] -ms.assetid: 17529a70-9169-46b5-9fc6-57a5ce224e6a --- # Compiler Error C2093 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2094.md b/docs/error-messages/compiler-errors-1/compiler-error-c2094.md index c25afc62131..3c06cae2fe6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2094.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2094.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2094" title: "Compiler Error C2094" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2094" +ms.date: 11/04/2016 f1_keywords: ["C2094"] helpviewer_keywords: ["C2094"] -ms.assetid: 9e4f8f88-f189-46e7-91c9-481bacc7af87 --- # Compiler Error C2094 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2096.md b/docs/error-messages/compiler-errors-1/compiler-error-c2096.md index f5346648025..9121807028e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2096.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2096.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler Error C2096" title: "Compiler Error C2096" +description: "Learn more about: Compiler Error C2096" ms.date: 08/23/2022 f1_keywords: ["C2096"] helpviewer_keywords: ["C2096"] diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2097.md b/docs/error-messages/compiler-errors-1/compiler-error-c2097.md index 27f83766934..0c01d1f89aa 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2097.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2097.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2097" title: "Compiler Error C2097" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2097" +ms.date: 11/04/2016 f1_keywords: ["C2097"] helpviewer_keywords: ["C2097"] -ms.assetid: 7e5b2fd4-f61c-4b8a-b265-93e987a04bd3 --- # Compiler Error C2097 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2098.md b/docs/error-messages/compiler-errors-1/compiler-error-c2098.md index 274e2d244da..886f3d8f80a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2098.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2098.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler Error C2098" title: "Compiler Error C2098" +description: "Learn more about: Compiler Error C2098" ms.date: 08/23/2022 f1_keywords: ["C2098"] helpviewer_keywords: ["C2098"] diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2099.md b/docs/error-messages/compiler-errors-1/compiler-error-c2099.md index 012ffe9ad36..1547eff225b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2099.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2099.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2099" title: "Compiler Error C2099" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2099" +ms.date: 11/04/2016 f1_keywords: ["C2099"] helpviewer_keywords: ["C2099"] -ms.assetid: 30e151ee-d458-4901-b0c0-d45054a913f5 --- # Compiler Error C2099 From 221669395c9c88fed7349545d845c42912242d26 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 14 Jul 2025 22:37:34 +0800 Subject: [PATCH 1059/2255] Standardize paragraph about ASCII, SBCS, and MBCS --- .../single-byte-and-multibyte-character-sets.md | 2 +- docs/text/text-and-strings-in-visual-cpp.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/c-runtime-library/single-byte-and-multibyte-character-sets.md b/docs/c-runtime-library/single-byte-and-multibyte-character-sets.md index 7d409c365c4..b045b2d565d 100644 --- a/docs/c-runtime-library/single-byte-and-multibyte-character-sets.md +++ b/docs/c-runtime-library/single-byte-and-multibyte-character-sets.md @@ -8,7 +8,7 @@ ms.assetid: 2cbc78ea-33c0-4cfb-b0df-7ce2458431ce --- # Single-byte and multibyte character sets -The ASCII character set defines characters in the range 0x00 - 0x7F. There are many other character sets, primarily European, that define the characters within the range 0x00 - 0x7F identically to the ASCII character set and also define an extended character set from 0x80 - 0xFF. An 8-bit, single-byte-character set (SBCS) is sufficient to represent the ASCII character set and the character sets for many European languages. However, some non-European character sets, such as Japanese Kanji, include many more characters than can be represented in a single-byte coding scheme, and so require multibyte-character set (MBCS) encoding. +The ASCII character set defines characters in the range 0x00 - 0x7F. There are other character sets, primarily European, that define the characters within the range 0x00 - 0x7F identically to the ASCII character set and also define an extended character set from 0x80 - 0xFF. Thus, an 8-bit, single-byte-character set (SBCS) is sufficient to represent the ASCII character set and the character sets for many European languages. However, some non-European character sets, such as Japanese Kanji, include many more characters than a single-byte coding scheme can represent, and therefore require multibyte-character set (MBCS) encoding. > [!NOTE] > Many Microsoft run-time library SBCS routines handle multibyte bytes, characters, and strings as appropriate. Many multibyte-character sets define the ASCII character set as a subset. In many multibyte character sets, each character in the range 0x00 - 0x7F is identical to the character that has the same value in the ASCII character set. For example, in both ASCII and MBCS character strings, the one-byte null character ('\0') has value 0x00 and indicates the terminating null character. diff --git a/docs/text/text-and-strings-in-visual-cpp.md b/docs/text/text-and-strings-in-visual-cpp.md index f7802b98794..feed7da2b4d 100644 --- a/docs/text/text-and-strings-in-visual-cpp.md +++ b/docs/text/text-and-strings-in-visual-cpp.md @@ -7,7 +7,7 @@ ms.assetid: a1bb27ac-abe5-4c6b-867d-f761d4b93205 --- # Text and Strings in Visual C++ -An important aspect of developing applications for international markets is the adequate representation of local character sets. The ASCII character set defines characters in the range 0x00 to 0x7F. There are other character sets, primarily European, that define the characters within the range 0x00 to 0x7F identically to the ASCII character set and also define an extended character set from 0x80 to 0xFF. Thus, an 8-bit, single-byte-character set (SBCS) is sufficient to represent the ASCII character set, as well as the character sets for many European languages. However, some non-European character sets, such as Japanese Kanji, include many more characters than a single-byte coding scheme can represent, and therefore require multibyte-character set (MBCS) encoding. +An important aspect of developing applications for international markets is the adequate representation of local character sets. The ASCII character set defines characters in the range 0x00 - 0x7F. There are other character sets, primarily European, that define the characters within the range 0x00 - 0x7F identically to the ASCII character set and also define an extended character set from 0x80 - 0xFF. Thus, an 8-bit, single-byte-character set (SBCS) is sufficient to represent the ASCII character set and the character sets for many European languages. However, some non-European character sets, such as Japanese Kanji, include many more characters than a single-byte coding scheme can represent, and therefore require multibyte-character set (MBCS) encoding. ## In This Section From df6a32bbc87052d41b93f233d9b56b1e55ad1748 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 14 Jul 2025 22:38:24 +0800 Subject: [PATCH 1060/2255] Update metadata in 2 topics --- .../single-byte-and-multibyte-character-sets.md | 3 +-- docs/text/text-and-strings-in-visual-cpp.md | 5 ++--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/docs/c-runtime-library/single-byte-and-multibyte-character-sets.md b/docs/c-runtime-library/single-byte-and-multibyte-character-sets.md index b045b2d565d..cbebeccee27 100644 --- a/docs/c-runtime-library/single-byte-and-multibyte-character-sets.md +++ b/docs/c-runtime-library/single-byte-and-multibyte-character-sets.md @@ -1,10 +1,9 @@ --- title: "Single-Byte and Multibyte Character Sets" description: "An introduction to single and multi-byte character sets in the Microsoft runtime library." +ms.date: 11/04/2016 ms.topic: "concept-article" -ms.date: "11/04/2016" helpviewer_keywords: ["SBCS (single byte character set)", "MBCS [C++], about MBCS", "character sets [C++], multibyte", "character sets [C++], single byte"] -ms.assetid: 2cbc78ea-33c0-4cfb-b0df-7ce2458431ce --- # Single-byte and multibyte character sets diff --git a/docs/text/text-and-strings-in-visual-cpp.md b/docs/text/text-and-strings-in-visual-cpp.md index feed7da2b4d..2334f6557ec 100644 --- a/docs/text/text-and-strings-in-visual-cpp.md +++ b/docs/text/text-and-strings-in-visual-cpp.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Text and Strings in Visual C++" title: "Text and Strings in Visual C++" -ms.date: "11/04/2016" +description: "Learn more about: Text and Strings in Visual C++" +ms.date: 11/04/2016 helpviewer_keywords: ["globalization [C++], character sets", "programming [C++], international", "multiple language support [C++]", "Unicode [C++]", "international applications [C++], about international applications", "portability [C++]", "translation [C++], character sets", "non-European characters [C++]", "character sets [C++]", "globalization [C++]", "Japanese characters [C++]", "Kanji character support [C++]", "local character sets [C++]", "ASCII characters [C++]", "character sets [C++], about character sets", "localization [C++], character sets", "translating code [C++]", "localization [C++]", "character sets [C++], non-European", "portability [C++], character sets", "MBCS [C++], international programming"] -ms.assetid: a1bb27ac-abe5-4c6b-867d-f761d4b93205 --- # Text and Strings in Visual C++ From dcd44803548566b76d1f18ced6a0276db65147fe Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 14 Jul 2025 22:58:25 +0800 Subject: [PATCH 1061/2255] Add blockquotes for error messages in range [C2101, C2120] --- docs/error-messages/compiler-errors-1/compiler-error-c2101.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2102.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2103.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2104.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2105.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2106.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2107.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2109.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2110.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2111.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2112.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2113.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2114.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2115.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2117.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2118.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2120.md | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2101.md b/docs/error-messages/compiler-errors-1/compiler-error-c2101.md index a01fe6598c8..1109b661fb5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2101.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2101.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2101"] --- # Compiler Error C2101 -'&' on constant +> '&' on constant The [address-of operator (**`&`**)](../../cpp/address-of-operator-amp.md) must have an l-value as operand. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2102.md b/docs/error-messages/compiler-errors-1/compiler-error-c2102.md index 292bbccacca..cbacfcf1fe7 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2102.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2102.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2102"] --- # Compiler Error C2102 -'&' requires l-value +> '&' requires l-value The [address-of operator (**`&`**)](../../cpp/address-of-operator-amp.md) must have an l-value as operand. Address of temporary values cannot be taken. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2103.md b/docs/error-messages/compiler-errors-1/compiler-error-c2103.md index 3809ebf9833..3239ca1c655 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2103.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2103.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2103"] --- # Compiler Error C2103 -'&' on register variable +> '&' on register variable You cannot take the address of a register. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2104.md b/docs/error-messages/compiler-errors-1/compiler-error-c2104.md index b2640fdd2d0..db3b70032a4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2104.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2104.md @@ -8,7 +8,7 @@ ms.assetid: 2ea78896-72a6-4901-a1fa-f33ea88ad61b --- # Compiler Error C2104 -'&' on bit field ignored +> '&' on bit field ignored You cannot take the address of a bit field. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2105.md b/docs/error-messages/compiler-errors-1/compiler-error-c2105.md index 68cf1a2ad6c..581dc71d052 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2105.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2105.md @@ -8,7 +8,7 @@ ms.assetid: 19b7f7bc-a9da-4d23-8193-005b6d09274f --- # Compiler Error C2105 -'operator' needs l-value +> 'operator' needs l-value The operator must have an l-value as operand. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2106.md b/docs/error-messages/compiler-errors-1/compiler-error-c2106.md index 58fec648a53..9686f9988cb 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2106.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2106.md @@ -8,7 +8,7 @@ ms.assetid: d5c91a2e-04e4-4770-8478-788b98c52a53 --- # Compiler Error C2106 -'operator' : left operand must be l-value +> 'operator' : left operand must be l-value The operator must have an l-value as its left operand. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2107.md b/docs/error-messages/compiler-errors-1/compiler-error-c2107.md index 1644f153374..6367dfbfe19 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2107.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2107.md @@ -8,7 +8,7 @@ ms.assetid: 2866a121-884e-4bb5-8613-36de5817000e --- # Compiler Error C2107 -illegal index, indirection not allowed +> illegal index, indirection not allowed A subscript is applied to an expression that does not evaluate to a pointer. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2109.md b/docs/error-messages/compiler-errors-1/compiler-error-c2109.md index c6bff1af2df..07ba1eaf886 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2109.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2109.md @@ -8,7 +8,7 @@ ms.assetid: 2d1ac79d-a985-4904-a38b-b270578d664d --- # Compiler Error C2109 -subscript requires array or pointer type +> subscript requires array or pointer type The subscript was used on a variable that was not an array. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2110.md b/docs/error-messages/compiler-errors-1/compiler-error-c2110.md index 42bfa8a9398..3c3a0482784 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2110.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2110.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2110"] --- # Compiler Error C2110 -'+' : cannot add two pointers +> '+' : cannot add two pointers An attempt was made to add two pointer values using the plus (`+`) operator. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2111.md b/docs/error-messages/compiler-errors-1/compiler-error-c2111.md index d0d6444cac7..7e91f345216 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2111.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2111.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2111"] --- # Compiler Error C2111 -'+' : pointer addition requires integral operand +> '+' : pointer addition requires integral operand An attempt was made to add a nonintegral value to a pointer using the plus (`+`) operator. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2112.md b/docs/error-messages/compiler-errors-1/compiler-error-c2112.md index 8c4236d97a3..9fac4a75292 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2112.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2112.md @@ -8,6 +8,6 @@ ms.assetid: 527a2fea-f585-4d00-bbb4-477aee17144b --- # Compiler Error C2112 -'-' : pointer subtraction requires integral or pointer operand +> '-' : pointer subtraction requires integral or pointer operand An attempt was made to subtract pointers that point to different types. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2113.md b/docs/error-messages/compiler-errors-1/compiler-error-c2113.md index e22c5d9a149..cda3417c343 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2113.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2113.md @@ -8,6 +8,6 @@ ms.assetid: be85cb5e-b0ed-4fc9-b062-032bf7f59a4e --- # Compiler Error C2113 -'-' : pointer can only be subtracted from another pointer +> '-' : pointer can only be subtracted from another pointer The right operand in a subtraction operation was a pointer, but the left operand was not. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2114.md b/docs/error-messages/compiler-errors-1/compiler-error-c2114.md index ada80748121..0aebc899cd8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2114.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2114.md @@ -8,6 +8,6 @@ ms.assetid: c1b2445f-74eb-4dc8-8d5a-6c8627775ee8 --- # Compiler Error C2114 -'operator' : pointer on left; needs integral value on right +> 'operator' : pointer on left; needs integral value on right The left operand of `operator` was a pointer, so the right operand must be an integer value. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2115.md b/docs/error-messages/compiler-errors-1/compiler-error-c2115.md index 2125c5674c6..f6e011db5f3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2115.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2115.md @@ -8,6 +8,6 @@ ms.assetid: 95d76ab5-ddd7-4e29-8cac-24285dccc490 --- # Compiler Error C2115 -'identifier' : incompatible types +> 'identifier' : incompatible types An expression contained incompatible types. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2117.md b/docs/error-messages/compiler-errors-1/compiler-error-c2117.md index 1b5aeb3f185..636e562d5dd 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2117.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2117.md @@ -8,7 +8,7 @@ ms.assetid: b947379d-5861-42fc-ac26-170318579cbd --- # Compiler Error C2117 -'identifier' : array bounds overflow +> 'identifier' : array bounds overflow An array has too many initializers: diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2118.md b/docs/error-messages/compiler-errors-1/compiler-error-c2118.md index b10252e5e57..0960f36502c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2118.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2118.md @@ -8,7 +8,7 @@ ms.assetid: bf4315d0-f085-4323-b813-96ee61a13bde --- # Compiler Error C2118 -negative subscript +> negative subscript The value defining the array size is larger than the maximum array size or smaller than zero. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2120.md b/docs/error-messages/compiler-errors-1/compiler-error-c2120.md index fe8ca7df9c9..d0b39b784f2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2120.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2120.md @@ -8,7 +8,7 @@ ms.assetid: b0f3f66c-6cd2-4f48-9ea3-c270b53c2b8c --- # Compiler Error C2120 -'void' illegal with all types +> 'void' illegal with all types The **`void`** type is used in a declaration with another type. From 2b194ace9dc9aaaf7592ae1b3ff8cb3badaeb1b2 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 14 Jul 2025 23:02:44 +0800 Subject: [PATCH 1062/2255] Add "Remarks" and "Example" headings for error references in range [C2101, C2120] --- docs/error-messages/compiler-errors-1/compiler-error-c2101.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2102.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2103.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2104.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2105.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2106.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2107.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2109.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2110.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2111.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2112.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2113.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2114.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2115.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2116.md | 4 ++-- docs/error-messages/compiler-errors-1/compiler-error-c2117.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2118.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2120.md | 4 ++++ 18 files changed, 60 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2101.md b/docs/error-messages/compiler-errors-1/compiler-error-c2101.md index 1109b661fb5..6a3e6cabd93 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2101.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2101.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C2101"] > '&' on constant +## Remarks + The [address-of operator (**`&`**)](../../cpp/address-of-operator-amp.md) must have an l-value as operand. +## Example + The following sample generates C2101: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2102.md b/docs/error-messages/compiler-errors-1/compiler-error-c2102.md index cbacfcf1fe7..76e9cd695db 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2102.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2102.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C2102"] > '&' requires l-value +## Remarks + The [address-of operator (**`&`**)](../../cpp/address-of-operator-amp.md) must have an l-value as operand. Address of temporary values cannot be taken. +## Example + The following sample generates C2102: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2103.md b/docs/error-messages/compiler-errors-1/compiler-error-c2103.md index 3239ca1c655..035ccbed3f1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2103.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2103.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C2103"] > '&' on register variable +## Remarks + You cannot take the address of a register. +## Example + The following sample generates C2103: ```c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2104.md b/docs/error-messages/compiler-errors-1/compiler-error-c2104.md index db3b70032a4..0a5de3eadad 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2104.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2104.md @@ -10,8 +10,12 @@ ms.assetid: 2ea78896-72a6-4901-a1fa-f33ea88ad61b > '&' on bit field ignored +## Remarks + You cannot take the address of a bit field. +## Example + The following sample generates C2104: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2105.md b/docs/error-messages/compiler-errors-1/compiler-error-c2105.md index 581dc71d052..9620990629d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2105.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2105.md @@ -10,8 +10,12 @@ ms.assetid: 19b7f7bc-a9da-4d23-8193-005b6d09274f > 'operator' needs l-value +## Remarks + The operator must have an l-value as operand. +## Examples + The following sample generates C2105: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2106.md b/docs/error-messages/compiler-errors-1/compiler-error-c2106.md index 9686f9988cb..feedd96d543 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2106.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2106.md @@ -10,8 +10,12 @@ ms.assetid: d5c91a2e-04e4-4770-8478-788b98c52a53 > 'operator' : left operand must be l-value +## Remarks + The operator must have an l-value as its left operand. +## Example + The following sample generates C2106: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2107.md b/docs/error-messages/compiler-errors-1/compiler-error-c2107.md index 6367dfbfe19..1a112e36046 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2107.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2107.md @@ -10,6 +10,8 @@ ms.assetid: 2866a121-884e-4bb5-8613-36de5817000e > illegal index, indirection not allowed +## Remarks + A subscript is applied to an expression that does not evaluate to a pointer. ## Example diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2109.md b/docs/error-messages/compiler-errors-1/compiler-error-c2109.md index 07ba1eaf886..2baed1bfb76 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2109.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2109.md @@ -10,8 +10,12 @@ ms.assetid: 2d1ac79d-a985-4904-a38b-b270578d664d > subscript requires array or pointer type +## Remarks + The subscript was used on a variable that was not an array. +## Example + The following sample generates C2109: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2110.md b/docs/error-messages/compiler-errors-1/compiler-error-c2110.md index 3c3a0482784..408ca974259 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2110.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2110.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C2110"] > '+' : cannot add two pointers +## Remarks + An attempt was made to add two pointer values using the plus (`+`) operator. +## Example + The following sample generates C2110: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2111.md b/docs/error-messages/compiler-errors-1/compiler-error-c2111.md index 7e91f345216..e6aa6a5f1c9 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2111.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2111.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C2111"] > '+' : pointer addition requires integral operand +## Remarks + An attempt was made to add a nonintegral value to a pointer using the plus (`+`) operator. +## Example + The following sample generates C2111: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2112.md b/docs/error-messages/compiler-errors-1/compiler-error-c2112.md index 9fac4a75292..d871b857be6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2112.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2112.md @@ -10,4 +10,6 @@ ms.assetid: 527a2fea-f585-4d00-bbb4-477aee17144b > '-' : pointer subtraction requires integral or pointer operand +## Remarks + An attempt was made to subtract pointers that point to different types. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2113.md b/docs/error-messages/compiler-errors-1/compiler-error-c2113.md index cda3417c343..24077d5da1b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2113.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2113.md @@ -10,4 +10,6 @@ ms.assetid: be85cb5e-b0ed-4fc9-b062-032bf7f59a4e > '-' : pointer can only be subtracted from another pointer +## Remarks + The right operand in a subtraction operation was a pointer, but the left operand was not. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2114.md b/docs/error-messages/compiler-errors-1/compiler-error-c2114.md index 0aebc899cd8..df955eab594 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2114.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2114.md @@ -10,4 +10,6 @@ ms.assetid: c1b2445f-74eb-4dc8-8d5a-6c8627775ee8 > 'operator' : pointer on left; needs integral value on right +## Remarks + The left operand of `operator` was a pointer, so the right operand must be an integer value. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2115.md b/docs/error-messages/compiler-errors-1/compiler-error-c2115.md index f6e011db5f3..885ddc3e28d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2115.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2115.md @@ -10,4 +10,6 @@ ms.assetid: 95d76ab5-ddd7-4e29-8cac-24285dccc490 > 'identifier' : incompatible types +## Remarks + An expression contained incompatible types. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2116.md b/docs/error-messages/compiler-errors-1/compiler-error-c2116.md index 9dfd0d52b9c..6a9849eb033 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2116.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2116.md @@ -10,10 +10,10 @@ ms.assetid: 0089a23f-e6bd-4956-9b58-3bcca09ab5ad > function parameter lists do not match between declarations -The parameter list of a redeclared function doesn't match the parameter list used in an earlier declaration. - ## Remarks +The parameter list of a redeclared function doesn't match the parameter list used in an earlier declaration. + This error can occur if you use different types for the parameters when you redeclare an `extern "C"` function. This error may occur after an upgrade because of conformance changes in Visual Studio 2019. Starting in Visual Studio 2019 version 16.3, the [`/Zc:externC-`](../../build/reference/zc-externc.md) compiler option relaxes this check. The option must come after any [`/permissive-`](../../build/reference/permissive-standards-conformance.md) option on the command line. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2117.md b/docs/error-messages/compiler-errors-1/compiler-error-c2117.md index 636e562d5dd..586d683a6b6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2117.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2117.md @@ -10,12 +10,16 @@ ms.assetid: b947379d-5861-42fc-ac26-170318579cbd > 'identifier' : array bounds overflow +## Remarks + An array has too many initializers: - Array elements and initializers do not match in size and quantity. - No space for the null terminator in a string. +## Example + The following sample generates C2117: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2118.md b/docs/error-messages/compiler-errors-1/compiler-error-c2118.md index 0960f36502c..0fc8d6d616a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2118.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2118.md @@ -10,8 +10,12 @@ ms.assetid: bf4315d0-f085-4323-b813-96ee61a13bde > negative subscript +## Remarks + The value defining the array size is larger than the maximum array size or smaller than zero. +## Example + The following sample generates C2118: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2120.md b/docs/error-messages/compiler-errors-1/compiler-error-c2120.md index d0b39b784f2..537aa366d1a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2120.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2120.md @@ -10,8 +10,12 @@ ms.assetid: b0f3f66c-6cd2-4f48-9ea3-c270b53c2b8c > 'void' illegal with all types +## Remarks + The **`void`** type is used in a declaration with another type. +## Example + The following sample generates C2120: ```cpp From 0f853979a167c8595d93c77f5f91e07d224cdc33 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 14 Jul 2025 23:04:48 +0800 Subject: [PATCH 1063/2255] Replace term "sample" with "example" for error references in range [C2101, C2120] --- docs/error-messages/compiler-errors-1/compiler-error-c2101.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2102.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2103.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2104.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2105.md | 4 ++-- docs/error-messages/compiler-errors-1/compiler-error-c2106.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2107.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2108.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2109.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2110.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2111.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2117.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2118.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2120.md | 2 +- 14 files changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2101.md b/docs/error-messages/compiler-errors-1/compiler-error-c2101.md index 6a3e6cabd93..51325fe83ca 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2101.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2101.md @@ -15,7 +15,7 @@ The [address-of operator (**`&`**)](../../cpp/address-of-operator-amp.md) must h ## Example -The following sample generates C2101: +The following example generates C2101: ```cpp // C2101.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2102.md b/docs/error-messages/compiler-errors-1/compiler-error-c2102.md index 76e9cd695db..3dad89e5d6f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2102.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2102.md @@ -15,7 +15,7 @@ The [address-of operator (**`&`**)](../../cpp/address-of-operator-amp.md) must h ## Example -The following sample generates C2102: +The following example generates C2102: ```cpp // C2102.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2103.md b/docs/error-messages/compiler-errors-1/compiler-error-c2103.md index 035ccbed3f1..2ffdba8f0a2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2103.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2103.md @@ -15,7 +15,7 @@ You cannot take the address of a register. ## Example -The following sample generates C2103: +The following example generates C2103: ```c // C2103.c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2104.md b/docs/error-messages/compiler-errors-1/compiler-error-c2104.md index 0a5de3eadad..1ceadd9b377 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2104.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2104.md @@ -16,7 +16,7 @@ You cannot take the address of a bit field. ## Example -The following sample generates C2104: +The following example generates C2104: ```cpp // C2104.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2105.md b/docs/error-messages/compiler-errors-1/compiler-error-c2105.md index 9620990629d..ca4104402e6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2105.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2105.md @@ -16,7 +16,7 @@ The operator must have an l-value as operand. ## Examples -The following sample generates C2105: +The following example generates C2105: ```cpp // C2105.cpp @@ -33,7 +33,7 @@ int main() { } ``` -The following sample generates C2105: +The following example generates C2105: ```cpp // C2105b.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2106.md b/docs/error-messages/compiler-errors-1/compiler-error-c2106.md index feedd96d543..04773102b58 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2106.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2106.md @@ -16,7 +16,7 @@ The operator must have an l-value as its left operand. ## Example -The following sample generates C2106: +The following example generates C2106: ```cpp // C2106.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2107.md b/docs/error-messages/compiler-errors-1/compiler-error-c2107.md index 1a112e36046..e1c59745f99 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2107.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2107.md @@ -18,7 +18,7 @@ A subscript is applied to an expression that does not evaluate to a pointer. C2107 can occur if you incorrectly use the **`this`** pointer of a value type to access the type's default indexer. For more information, see [Semantics of the `this` pointer](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Semantics_of_the_this_pointer). -The following sample generates C2107. +The following example generates C2107. ```cpp // C2107.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2108.md b/docs/error-messages/compiler-errors-1/compiler-error-c2108.md index 4560690ae78..01b4a01fba0 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2108.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2108.md @@ -18,7 +18,7 @@ The array subscript is a non-integer expression. C2108 can occur if you incorrectly use the **`this`** pointer of a value type to access the type's default indexer. For more information, see [Semantics of the `this` pointer](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Semantics_of_the_this_pointer). -The following sample generates C2108. +The following example generates C2108. ```cpp // C2108.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2109.md b/docs/error-messages/compiler-errors-1/compiler-error-c2109.md index 2baed1bfb76..a2090f2a2e2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2109.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2109.md @@ -16,7 +16,7 @@ The subscript was used on a variable that was not an array. ## Example -The following sample generates C2109: +The following example generates C2109: ```cpp // C2109.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2110.md b/docs/error-messages/compiler-errors-1/compiler-error-c2110.md index 408ca974259..480293e439d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2110.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2110.md @@ -15,7 +15,7 @@ An attempt was made to add two pointer values using the plus (`+`) operator. ## Example -The following sample generates C2110: +The following example generates C2110: ```cpp // C2110.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2111.md b/docs/error-messages/compiler-errors-1/compiler-error-c2111.md index e6aa6a5f1c9..f8a9305aa9b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2111.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2111.md @@ -15,7 +15,7 @@ An attempt was made to add a nonintegral value to a pointer using the plus (`+`) ## Example -The following sample generates C2111: +The following example generates C2111: ```cpp // C2111.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2117.md b/docs/error-messages/compiler-errors-1/compiler-error-c2117.md index 586d683a6b6..67ce47c2b63 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2117.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2117.md @@ -20,7 +20,7 @@ An array has too many initializers: ## Example -The following sample generates C2117: +The following example generates C2117: ```cpp // C2117.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2118.md b/docs/error-messages/compiler-errors-1/compiler-error-c2118.md index 0fc8d6d616a..1225f230b1b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2118.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2118.md @@ -16,7 +16,7 @@ The value defining the array size is larger than the maximum array size or small ## Example -The following sample generates C2118: +The following example generates C2118: ```cpp // C2118.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2120.md b/docs/error-messages/compiler-errors-1/compiler-error-c2120.md index 537aa366d1a..ed345afb47f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2120.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2120.md @@ -16,7 +16,7 @@ The **`void`** type is used in a declaration with another type. ## Example -The following sample generates C2120: +The following example generates C2120: ```cpp // C2120.cpp From 43e8603c7a20477f323fc269e7d09c3db0a03ecf Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 14 Jul 2025 23:08:00 +0800 Subject: [PATCH 1064/2255] Update metadata for error references in range [C2101, C2120] --- .../error-messages/compiler-errors-1/compiler-error-c2101.md | 4 ++-- .../error-messages/compiler-errors-1/compiler-error-c2102.md | 4 ++-- .../error-messages/compiler-errors-1/compiler-error-c2103.md | 4 ++-- .../error-messages/compiler-errors-1/compiler-error-c2104.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2105.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2106.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2107.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2108.md | 3 +-- .../error-messages/compiler-errors-1/compiler-error-c2109.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2112.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2113.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2114.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2115.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2116.md | 3 +-- .../error-messages/compiler-errors-1/compiler-error-c2117.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2118.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2120.md | 5 ++--- 17 files changed, 32 insertions(+), 46 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2101.md b/docs/error-messages/compiler-errors-1/compiler-error-c2101.md index 51325fe83ca..e2703e5d860 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2101.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2101.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Error C2101" title: "Compiler Error C2101" -ms.date: "03/04/2024" +description: "Learn more about: Compiler Error C2101" +ms.date: 03/04/2024 f1_keywords: ["C2101"] helpviewer_keywords: ["C2101"] --- diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2102.md b/docs/error-messages/compiler-errors-1/compiler-error-c2102.md index 3dad89e5d6f..7db34d038f0 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2102.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2102.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Error C2102" title: "Compiler Error C2102" -ms.date: "03/03/2024" +description: "Learn more about: Compiler Error C2102" +ms.date: 03/03/2024 f1_keywords: ["C2102"] helpviewer_keywords: ["C2102"] --- diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2103.md b/docs/error-messages/compiler-errors-1/compiler-error-c2103.md index 2ffdba8f0a2..af055b688c2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2103.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2103.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Error C2103" title: "Compiler Error C2103" -ms.date: "03/04/2024" +description: "Learn more about: Compiler Error C2103" +ms.date: 03/04/2024 f1_keywords: ["C2103"] helpviewer_keywords: ["C2103"] --- diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2104.md b/docs/error-messages/compiler-errors-1/compiler-error-c2104.md index 1ceadd9b377..957f09c7a3f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2104.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2104.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2104" title: "Compiler Error C2104" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2104" +ms.date: 11/04/2016 f1_keywords: ["C2104"] helpviewer_keywords: ["C2104"] -ms.assetid: 2ea78896-72a6-4901-a1fa-f33ea88ad61b --- # Compiler Error C2104 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2105.md b/docs/error-messages/compiler-errors-1/compiler-error-c2105.md index ca4104402e6..55de44e8302 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2105.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2105.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2105" title: "Compiler Error C2105" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2105" +ms.date: 11/04/2016 f1_keywords: ["C2105"] helpviewer_keywords: ["C2105"] -ms.assetid: 19b7f7bc-a9da-4d23-8193-005b6d09274f --- # Compiler Error C2105 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2106.md b/docs/error-messages/compiler-errors-1/compiler-error-c2106.md index 04773102b58..e22d82019d7 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2106.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2106.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2106" title: "Compiler Error C2106" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2106" +ms.date: 11/04/2016 f1_keywords: ["C2106"] helpviewer_keywords: ["C2106"] -ms.assetid: d5c91a2e-04e4-4770-8478-788b98c52a53 --- # Compiler Error C2106 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2107.md b/docs/error-messages/compiler-errors-1/compiler-error-c2107.md index e1c59745f99..51bcd37722f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2107.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2107.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2107" title: "Compiler Error C2107" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2107" +ms.date: 11/04/2016 f1_keywords: ["C2107"] helpviewer_keywords: ["C2107"] -ms.assetid: 2866a121-884e-4bb5-8613-36de5817000e --- # Compiler Error C2107 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2108.md b/docs/error-messages/compiler-errors-1/compiler-error-c2108.md index 01b4a01fba0..fa7b26db53e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2108.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2108.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2108" title: "Compiler Error C2108" +description: "Learn more about: Compiler Error C2108" ms.date: 06/03/2022 f1_keywords: ["C2108"] helpviewer_keywords: ["C2108"] -ms.assetid: c84f0b47-5e2c-47d2-8edb-427a40e17c36 --- # Compiler Error C2108 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2109.md b/docs/error-messages/compiler-errors-1/compiler-error-c2109.md index a2090f2a2e2..8092ba90016 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2109.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2109.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2109" title: "Compiler Error C2109" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2109" +ms.date: 11/04/2016 f1_keywords: ["C2109"] helpviewer_keywords: ["C2109"] -ms.assetid: 2d1ac79d-a985-4904-a38b-b270578d664d --- # Compiler Error C2109 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2112.md b/docs/error-messages/compiler-errors-1/compiler-error-c2112.md index d871b857be6..1928506edc0 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2112.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2112.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2112" title: "Compiler Error C2112" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2112" +ms.date: 11/04/2016 f1_keywords: ["C2112"] helpviewer_keywords: ["C2112"] -ms.assetid: 527a2fea-f585-4d00-bbb4-477aee17144b --- # Compiler Error C2112 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2113.md b/docs/error-messages/compiler-errors-1/compiler-error-c2113.md index 24077d5da1b..bfeb4b2390c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2113.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2113.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2113" title: "Compiler Error C2113" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2113" +ms.date: 11/04/2016 f1_keywords: ["C2113"] helpviewer_keywords: ["C2113"] -ms.assetid: be85cb5e-b0ed-4fc9-b062-032bf7f59a4e --- # Compiler Error C2113 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2114.md b/docs/error-messages/compiler-errors-1/compiler-error-c2114.md index df955eab594..75831e51f9d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2114.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2114.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2114" title: "Compiler Error C2114" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2114" +ms.date: 11/04/2016 f1_keywords: ["C2114"] helpviewer_keywords: ["C2114"] -ms.assetid: c1b2445f-74eb-4dc8-8d5a-6c8627775ee8 --- # Compiler Error C2114 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2115.md b/docs/error-messages/compiler-errors-1/compiler-error-c2115.md index 885ddc3e28d..52147bca167 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2115.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2115.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2115" title: "Compiler Error C2115" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2115" +ms.date: 11/04/2016 f1_keywords: ["C2115"] helpviewer_keywords: ["C2115"] -ms.assetid: 95d76ab5-ddd7-4e29-8cac-24285dccc490 --- # Compiler Error C2115 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2116.md b/docs/error-messages/compiler-errors-1/compiler-error-c2116.md index 6a9849eb033..f0b37397e6f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2116.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2116.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2116" title: "Compiler Error C2116" +description: "Learn more about: Compiler Error C2116" ms.date: 12/02/2021 f1_keywords: ["C2116"] helpviewer_keywords: ["C2116"] -ms.assetid: 0089a23f-e6bd-4956-9b58-3bcca09ab5ad --- # Compiler Error C2116 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2117.md b/docs/error-messages/compiler-errors-1/compiler-error-c2117.md index 67ce47c2b63..9776f59ce2e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2117.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2117.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2117" title: "Compiler Error C2117" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2117" +ms.date: 11/04/2016 f1_keywords: ["C2117"] helpviewer_keywords: ["C2117"] -ms.assetid: b947379d-5861-42fc-ac26-170318579cbd --- # Compiler Error C2117 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2118.md b/docs/error-messages/compiler-errors-1/compiler-error-c2118.md index 1225f230b1b..b033bb8ddc7 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2118.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2118.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2118" title: "Compiler Error C2118" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2118" +ms.date: 11/04/2016 f1_keywords: ["C2118"] helpviewer_keywords: ["C2118"] -ms.assetid: bf4315d0-f085-4323-b813-96ee61a13bde --- # Compiler Error C2118 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2120.md b/docs/error-messages/compiler-errors-1/compiler-error-c2120.md index ed345afb47f..b3f630d7c1a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2120.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2120.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2120" title: "Compiler Error C2120" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2120" +ms.date: 11/04/2016 f1_keywords: ["C2120"] helpviewer_keywords: ["C2120"] -ms.assetid: b0f3f66c-6cd2-4f48-9ea3-c270b53c2b8c --- # Compiler Error C2120 From 021add5ae944feb1a5c8ff8f2a6394e2acb7a6ac Mon Sep 17 00:00:00 2001 From: David Justo Date: Mon, 14 Jul 2025 12:45:56 -0700 Subject: [PATCH 1065/2255] List corresponding toolset versions for `_MSC_VER` --- docs/overview/compiler-versions.md | 90 +++++++++++++++--------------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/docs/overview/compiler-versions.md b/docs/overview/compiler-versions.md index 60666e3f291..e28beaf6d0f 100644 --- a/docs/overview/compiler-versions.md +++ b/docs/overview/compiler-versions.md @@ -79,51 +79,51 @@ When the major version changed between Visual Studio 2013 and Visual Studio 2015 An example of a minor change is from Visual Studio 2022 17.1 to Visual Studio 2022 17.2. In that case, `_MSC_VER` changed from 1931 to 1932. -The following table lists the Visual C++ compiler `_MSC_VER` for each Visual Studio release: - -| Visual Studio version | `_MSC_VER` | -|--|--| -| Visual Studio 6.0 | 1200 | -| Visual Studio .NET 2002 (7.0) | 1300 | -| Visual Studio .NET 2003 (7.1) | 1310 | -| Visual Studio 2005 (8.0) | 1400 | -| Visual Studio 2008 (9.0) | 1500 | -| Visual Studio 2010 (10.0) | 1600 | -| Visual Studio 2012 (11.0) | 1700 | -| Visual Studio 2013 (12.0) | 1800 | -| Visual Studio 2015 (14.0) | 1900 | -| Visual Studio 2017 RTW (15.0) | 1910 | -| Visual Studio 2017 version 15.3 | 1911 | -| Visual Studio 2017 version 15.5 | 1912 | -| Visual Studio 2017 version 15.6 | 1913 | -| Visual Studio 2017 version 15.7 | 1914 | -| Visual Studio 2017 version 15.8 | 1915 | -| Visual Studio 2017 version 15.9 | 1916 | -| Visual Studio 2019 RTW 16.0 | 1920 | -| Visual Studio 2019 version 16.1 | 1921 | -| Visual Studio 2019 version 16.2 | 1922 | -| Visual Studio 2019 version 16.3 | 1923 | -| Visual Studio 2019 version 16.4 | 1924 | -| Visual Studio 2019 version 16.5 | 1925 | -| Visual Studio 2019 version 16.6 | 1926 | -| Visual Studio 2019 version 16.7 | 1927 | -| Visual Studio 2019 version 16.8, 16.9 a | 1928 | -| Visual Studio 2019 version 16.10, 16.11 b | 1929 | -| Visual Studio 2022 RTW 17.0 | 1930 | -| Visual Studio 2022 version 17.1 | 1931 | -| Visual Studio 2022 version 17.2 | 1932 | -| Visual Studio 2022 version 17.3 | 1933 | -| Visual Studio 2022 version 17.4 | 1934 | -| Visual Studio 2022 version 17.5 | 1935 | -| Visual Studio 2022 version 17.6 | 1936 | -| Visual Studio 2022 version 17.7 | 1937 | -| Visual Studio 2022 version 17.8 | 1938 | -| Visual Studio 2022 version 17.9 | 1939 | -| Visual Studio 2022 version 17.10 | 1940 | -| Visual Studio 2022 version 17.11 | 1941 | -| Visual Studio 2022 version 17.12 | 1942 | -| Visual Studio 2022 version 17.13 | 1943 | -| Visual Studio 2022 version 17.14 | 1944 | +The following table lists the Visual C++ compiler `_MSC_VER` for each corresponding Visual Studio and toolset release: + +| Visual Studio version | `_MSC_VER` | toolset version | +|--|--|--| +| Visual Studio 6.0 | 1200 | 6.0 | +| Visual Studio .NET 2002 (7.0) | 1300 | 7.0 | +| Visual Studio .NET 2003 (7.1) | 1310 | 7.1 | +| Visual Studio 2005 (8.0) | 1400 | 8.00 | +| Visual Studio 2008 (9.0) | 1500 | 9.00 | +| Visual Studio 2010 (10.0) | 1600 | 10.00 | +| Visual Studio 2012 (11.0) | 1700 | 11.00 | +| Visual Studio 2013 (12.0) | 1800 | 12.00 | +| Visual Studio 2015 (14.0) | 1900 | 14.00 | +| Visual Studio 2017 RTW (15.0) | 1910 | 14.10 | +| Visual Studio 2017 version 15.3 | 1911 | 14.11 | +| Visual Studio 2017 version 15.5 | 1912 | 14.12 | +| Visual Studio 2017 version 15.6 | 1913 | 14.13 | +| Visual Studio 2017 version 15.7 | 1914 | 14.14 | +| Visual Studio 2017 version 15.8 | 1915 | 14.15 | +| Visual Studio 2017 version 15.9 | 1916 | 14. 16| +| Visual Studio 2019 RTW 16.0 | 1920 | 14.20 | +| Visual Studio 2019 version 16.1 | 1921 | 14.21 | +| Visual Studio 2019 version 16.2 | 1922 | 14.22 | +| Visual Studio 2019 version 16.3 | 1923 | 14.23 | +| Visual Studio 2019 version 16.4 | 1924 | 14.24 | +| Visual Studio 2019 version 16.5 | 1925 | 14.25 | +| Visual Studio 2019 version 16.6 | 1926 | 14.26 | +| Visual Studio 2019 version 16.7 | 1927 | 14.27 | +| Visual Studio 2019 version 16.8, 16.9 a | 1928 | 14.28 | +| Visual Studio 2019 version 16.10, 16.11 b | 1929 | 14.29 | +| Visual Studio 2022 RTW 17.0 | 1930 | 14.30 | +| Visual Studio 2022 version 17.1 | 1931 | 14.31 | +| Visual Studio 2022 version 17.2 | 1932 | 14.32 | +| Visual Studio 2022 version 17.3 | 1933 | 14.33 | +| Visual Studio 2022 version 17.4 | 1934 | 14.34 | +| Visual Studio 2022 version 17.5 | 1935 | 14.35 | +| Visual Studio 2022 version 17.6 | 1936 | 14.36 | +| Visual Studio 2022 version 17.7 | 1937 | 14.37 | +| Visual Studio 2022 version 17.8 | 1938 | 14.38 | +| Visual Studio 2022 version 17.9 | 1939 | 14.39 | +| Visual Studio 2022 version 17.10 | 1940 | 14.40 | +| Visual Studio 2022 version 17.11 | 1941 | 14.41 | +| Visual Studio 2022 version 17.12 | 1942 | 14.42 | +| Visual Studio 2022 version 17.13 | 1943 | 14.43 | +| Visual Studio 2022 version 17.14 | 1944 | 14.44 | a Visual Studio 2019 16.8 and 16.9 share the same major and minor versions (and so have the same value for `_MSC_VER`). To distinguish them, use `_MSC_FULL_VER`. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 16.8 is 192829333. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 16.9 is 192829910. From 66a78d93cd1a96df9c5302ba4c6f721191af100c Mon Sep 17 00:00:00 2001 From: David Justo Date: Mon, 14 Jul 2025 12:47:10 -0700 Subject: [PATCH 1066/2255] remove extra whitespace --- docs/overview/compiler-versions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/compiler-versions.md b/docs/overview/compiler-versions.md index e28beaf6d0f..25311d76456 100644 --- a/docs/overview/compiler-versions.md +++ b/docs/overview/compiler-versions.md @@ -98,7 +98,7 @@ The following table lists the Visual C++ compiler `_MSC_VER` for each correspond | Visual Studio 2017 version 15.6 | 1913 | 14.13 | | Visual Studio 2017 version 15.7 | 1914 | 14.14 | | Visual Studio 2017 version 15.8 | 1915 | 14.15 | -| Visual Studio 2017 version 15.9 | 1916 | 14. 16| +| Visual Studio 2017 version 15.9 | 1916 | 14.16| | Visual Studio 2019 RTW 16.0 | 1920 | 14.20 | | Visual Studio 2019 version 16.1 | 1921 | 14.21 | | Visual Studio 2019 version 16.2 | 1922 | 14.22 | From f17075b5aca076e57947efcb729d572e4ce9fe00 Mon Sep 17 00:00:00 2001 From: David Justo Date: Mon, 14 Jul 2025 12:47:33 -0700 Subject: [PATCH 1067/2255] have common spacing --- docs/overview/compiler-versions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/compiler-versions.md b/docs/overview/compiler-versions.md index 25311d76456..c2d54fb9683 100644 --- a/docs/overview/compiler-versions.md +++ b/docs/overview/compiler-versions.md @@ -98,7 +98,7 @@ The following table lists the Visual C++ compiler `_MSC_VER` for each correspond | Visual Studio 2017 version 15.6 | 1913 | 14.13 | | Visual Studio 2017 version 15.7 | 1914 | 14.14 | | Visual Studio 2017 version 15.8 | 1915 | 14.15 | -| Visual Studio 2017 version 15.9 | 1916 | 14.16| +| Visual Studio 2017 version 15.9 | 1916 | 14.16 | | Visual Studio 2019 RTW 16.0 | 1920 | 14.20 | | Visual Studio 2019 version 16.1 | 1921 | 14.21 | | Visual Studio 2019 version 16.2 | 1922 | 14.22 | From ac6f3fc99e365b3bcdd7ba9baf2403e798a0883d Mon Sep 17 00:00:00 2001 From: David Justo Date: Mon, 14 Jul 2025 12:58:10 -0700 Subject: [PATCH 1068/2255] Document ASan's `continue_on_error` flag --- docs/sanitizers/asan-runtime.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/sanitizers/asan-runtime.md b/docs/sanitizers/asan-runtime.md index b4894a00b60..3d9c36279a1 100644 --- a/docs/sanitizers/asan-runtime.md +++ b/docs/sanitizers/asan-runtime.md @@ -160,6 +160,8 @@ Boolean (false by default), set to `true` to enable the process to terminate wit >[!NOTE] >When abort_on_error value is set to true, on Windows the program terminates with an exit(3). In order to not change current behavior we decided to introduce this new option instead. If both abort_on_error and windows_fast_fail_on_error are true, the program will exit with the __fastfail. +- [`continue_on_error`](./asan-continue-on-error) Boolean, set to `false` by default. When set to `true`, it allows the program to continue executing after a memory violation is reported, allowing you to collect multiple error reports. + ## AddressSanitizer list of intercepted functions (Windows) The AddressSanitizer runtime hotpatches many functions to enable memory safety checks at runtime. Here's a non-exhaustive list of the functions that the AddressSanitizer runtime monitors. From a105ba5c3c42d201804e50118b5c76040e26d4c4 Mon Sep 17 00:00:00 2001 From: David Justo Date: Mon, 14 Jul 2025 12:59:14 -0700 Subject: [PATCH 1069/2255] capitalize toolset --- docs/overview/compiler-versions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/compiler-versions.md b/docs/overview/compiler-versions.md index c2d54fb9683..818b7df8106 100644 --- a/docs/overview/compiler-versions.md +++ b/docs/overview/compiler-versions.md @@ -81,7 +81,7 @@ An example of a minor change is from Visual Studio 2022 17.1 to Visual Studio 20 The following table lists the Visual C++ compiler `_MSC_VER` for each corresponding Visual Studio and toolset release: -| Visual Studio version | `_MSC_VER` | toolset version | +| Visual Studio version | `_MSC_VER` | Toolset version | |--|--|--| | Visual Studio 6.0 | 1200 | 6.0 | | Visual Studio .NET 2002 (7.0) | 1300 | 7.0 | From 70b7bce1115ecab70a1e72f16716e3d31dcf05e3 Mon Sep 17 00:00:00 2001 From: David Justo Date: Mon, 14 Jul 2025 13:27:11 -0700 Subject: [PATCH 1070/2255] clarify that toolset = MSVC toolset --- docs/overview/compiler-versions.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/overview/compiler-versions.md b/docs/overview/compiler-versions.md index 818b7df8106..57c03deb47b 100644 --- a/docs/overview/compiler-versions.md +++ b/docs/overview/compiler-versions.md @@ -79,9 +79,9 @@ When the major version changed between Visual Studio 2013 and Visual Studio 2015 An example of a minor change is from Visual Studio 2022 17.1 to Visual Studio 2022 17.2. In that case, `_MSC_VER` changed from 1931 to 1932. -The following table lists the Visual C++ compiler `_MSC_VER` for each corresponding Visual Studio and toolset release: +The following table lists the Visual C++ compiler `_MSC_VER` for each corresponding Visual Studio and MSVC toolset release: -| Visual Studio version | `_MSC_VER` | Toolset version | +| Visual Studio version | `_MSC_VER` | MSVC toolset version | |--|--|--| | Visual Studio 6.0 | 1200 | 6.0 | | Visual Studio .NET 2002 (7.0) | 1300 | 7.0 | From 14a493b171f7d37a012c4a95a375ecea343b4c3f Mon Sep 17 00:00:00 2001 From: David Justo Date: Mon, 14 Jul 2025 13:30:48 -0700 Subject: [PATCH 1071/2255] remove `./` from local href --- docs/sanitizers/asan-runtime.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-runtime.md b/docs/sanitizers/asan-runtime.md index 3d9c36279a1..531262c750d 100644 --- a/docs/sanitizers/asan-runtime.md +++ b/docs/sanitizers/asan-runtime.md @@ -160,7 +160,7 @@ Boolean (false by default), set to `true` to enable the process to terminate wit >[!NOTE] >When abort_on_error value is set to true, on Windows the program terminates with an exit(3). In order to not change current behavior we decided to introduce this new option instead. If both abort_on_error and windows_fast_fail_on_error are true, the program will exit with the __fastfail. -- [`continue_on_error`](./asan-continue-on-error) Boolean, set to `false` by default. When set to `true`, it allows the program to continue executing after a memory violation is reported, allowing you to collect multiple error reports. +- [`continue_on_error`](asan-continue-on-error) Boolean, set to `false` by default. When set to `true`, it allows the program to continue executing after a memory violation is reported, allowing you to collect multiple error reports. ## AddressSanitizer list of intercepted functions (Windows) From ec732f1cef8601c2c2efe88d6d744c8606d81cae Mon Sep 17 00:00:00 2001 From: David Justo Date: Mon, 14 Jul 2025 14:05:50 -0700 Subject: [PATCH 1072/2255] add missing `.md` --- docs/sanitizers/asan-runtime.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-runtime.md b/docs/sanitizers/asan-runtime.md index 531262c750d..eefff67b8e0 100644 --- a/docs/sanitizers/asan-runtime.md +++ b/docs/sanitizers/asan-runtime.md @@ -160,7 +160,7 @@ Boolean (false by default), set to `true` to enable the process to terminate wit >[!NOTE] >When abort_on_error value is set to true, on Windows the program terminates with an exit(3). In order to not change current behavior we decided to introduce this new option instead. If both abort_on_error and windows_fast_fail_on_error are true, the program will exit with the __fastfail. -- [`continue_on_error`](asan-continue-on-error) Boolean, set to `false` by default. When set to `true`, it allows the program to continue executing after a memory violation is reported, allowing you to collect multiple error reports. +- [`continue_on_error`](asan-continue-on-error.md) Boolean, set to `false` by default. When set to `true`, it allows the program to continue executing after a memory violation is reported, allowing you to collect multiple error reports. ## AddressSanitizer list of intercepted functions (Windows) From 14011eba1b2195ee04c0b1d4e9c9bcc75dedb7ee Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Mon, 14 Jul 2025 14:34:13 -0700 Subject: [PATCH 1073/2255] draft --- .../tutorials/build-insights-template-view.md | 101 +++++++++--------- 1 file changed, 48 insertions(+), 53 deletions(-) diff --git a/docs/build-insights/tutorials/build-insights-template-view.md b/docs/build-insights/tutorials/build-insights-template-view.md index 1c46be7da1d..cdd12cc4eb2 100644 --- a/docs/build-insights/tutorials/build-insights-template-view.md +++ b/docs/build-insights/tutorials/build-insights-template-view.md @@ -9,7 +9,7 @@ ms.topic: troubleshooting-general Use Build Insights **Templates** view to analyze the impact of template instantiations on C++ build time. This feature is especially useful for projects that make heavy use of templates, such as those using template metaprogramming or large generic libraries. -Templates view is designed to be familiar to users of the [Functions view](build-insights-function-view.md), with similar UI and workflow. +Templates view will seem familiar to users of Build Insight's [Functions view](build-insights-function-view.md) due to similar UI and workflow. ## Prerequisites @@ -23,13 +23,11 @@ Templates view is designed to be familiar to users of the [Functions view](build ## Overview -Build Insights, integrated into Visual Studio, helps you optimize your build times--especially for large projects like AAA games. Build Insights provides analytics such as **Templates** view, which helps diagnose expensive template instantiations during build time. It displays the time it takes to instantiate each template and shows which template instantiations add the most to your build time. +Build Insights, integrated into Visual Studio, helps you optimize your build times--especially for large projects like AAA games. Build Insights provides analytics such as **Templates** view, which displays the time it takes to instantiate each template and shows which template instantiations add the most to your build time. -For optimized builds, the time spent on template instantiation contributes significantly to the total build time. In general, C++ template instantiation happens quickly. In exceptional cases, some template instantiations can noticeably slow down your builds. +In general, C++ template instantiation happens quickly. In exceptional cases, some template instantiations can noticeably slow down your builds. -In this article, learn how to use the Build Insights **Templates** view to find template instantiation bottlenecks in your build. - -Follow along to create a project that demonstrates template instantiation, run Build Insights to gather template instantiation times, and analyze the results. +In this article, follow along to create a project that demonstrates template instantiation impact on build time, run Build Insights to gather template instantiation times, and analyze the results. ## Create a template test project @@ -109,9 +107,9 @@ Template instantiation time collection is off by default to minimize build overh :::image type="content" source="./media/tools-options-build-insights.png" alt-text="Screenshot of the project property pages dialog. The settings are open to Build Insights > Trace Collection. The Collect Template Instantion checkbox is selected."::: > [!Note] -> Collecting template instantiation times may increase build time due to the extra data collected. Only enable it when you want to analyze template instantiation bottlenecks. +> Collecting template instantiation times increases build time due to the extra data collected. Only enable it when you want to analyze template instantiation bottlenecks. -## Run Build Insights to get template instantiation times +## Run Build Insights to get template instantiation data From the main menu, select **Build** > **Run Build Insights on Selection** > **Rebuild**. You can also right-click a project in the solution explorer and choose **Run Build Insights** > **Rebuild**. Choose **Rebuild** instead of **Build** to measure the build time for the entire project. @@ -119,19 +117,23 @@ From the main menu, select **Build** > **Run Build Insights on Selection** > **R When the build finishes, an Event Trace Log (ETL) file opens.The generated name is based on the collection time. -## Use Templates view to optimize build time - -The **Templates** view lists the template instantiations that contributed significantly to build time. Columns provide information about: +## Understanding Templates view results -The **Time [sec, %]** column shows how long it took to instantiate each template in [wall clock responsibility time (WCTR)](https://devblogs.microsoft.com/cppblog/faster-cpp-builds-simplified-a-new-metric-for-time/#:~:text=Today%2C%20we%E2%80%99d%20like%20to%20teach%20you%20about%20a,your%20build%2C%20even%20in%20the%20presence%20of%20parallelism). This metric distributes the wall clock time among template instantiations based on their use of parallel compiler threads. +When interpreting Templates view results, keep these points in mind: -The **Specialization Name** column shows the specific template instantiation, including the template arguments that were used. This helps you identify which template specializations are most expensive. +- **Empty view**: If nothing shows up in the Templates view, it means your build time isn't dominated by template instantiations. This is good news because your templates are not a build bottleneck. +- **Duplicate instantiations**: The same template instantiation appearing multiple times with different translation units indicates that multiple source files are causing the same expensive instantiation. This is often the biggest optimization opportunity. +- **Threshold filtering**: The view only shows instantiations whose contribution exceeds a certain threshold to avoid noise from trivial instantiations. +- **Time aggregation**: The time shown represents the total time spent on that specific template instantiation, including any nested instantiations it triggers. -The **Translation Unit** column shows which source file caused this template instantiation. Multiple files can cause the same template instantiation if they include the same header with the template definition. +## Use Templates view to optimize build time -The **Instantiation File Path** column shows where in your source code the template instantiation happens. This helps you locate the exact line of code responsible for the expensive instantiation. +The **Templates** view lists the template instantiations that contributed significantly to build time. Columns provide information about: -The view only shows instantiations whose contribution exceeds a certain threshold. If you don't see anything in the **Templates** view, it means the build time isn't dominated by template instantiations. +- **Time [sec, %]** shows how long it took to instantiate each template in [wall clock responsibility time (WCTR)](https://devblogs.microsoft.com/cppblog/faster-cpp-builds-simplified-a-new-metric-for-time/#:~:text=Today%2C%20we%E2%80%99d%20like%20to%20teach%20you%20about%20a,your%20build%2C%20even%20in%20the%20presence%20of%20parallelism). This metric distributes the wall clock time among template instantiations based on their use of parallel compiler threads. +- **Specialization Name** shows each template instantiation, including the template arguments that were used. This helps you identify which template specializations are most expensive. +- **Translation Unit** shows which source file each template instantiation happened in. Multiple files can cause the same template instantiation if they include the same header with the template definition. +- **Instantiation File Path** shows where in your source code the template instantiation happens. This helps you locate the exact line of code responsible for the expensive instantiation. :::image type="complex" source="./media/templates-view-before-fix.png" alt-text="Screenshot of the Build Insights Templates view showing expensive template instantiations."::: The Templates view shows two template instantiations of struct S3 taking most (79.4480%) of the build time. The Translation Unit column shows that both LargeValue.cpp and SmallValue.cpp are affected. @@ -143,16 +145,15 @@ The Templates view shows two template instantiations of struct S3 taking most (7 ## Improve build time by optimizing template instantiations -In our example, we can see that two template instantiations of `S3` are taking 83% of the entire build time. The **Translation Unit** column shows that both `SmallValue.cpp` and `LargeValue.cpp` are causing this template instantiation to be included in the build. +In the example, we can see that two template instantiations of `S3` are taking 83% of the entire build time. The **Translation Unit** column shows that both `SmallValue.cpp` and `LargeValue.cpp` are causing this template instantiation to be included in the build. -Since the **Instantiation File Path** and the **Specialization Name** are the same for both entries, we can derive that there's one expensive template instantiation affecting both of our source files. This explains why the time of each of the two template instantiations are about equal. By including `Templates.h` in both source files, we are causing one template instantiation to add significant time to our build. +Since the **Instantiation File Path** and the **Specialization Name** are the same for both entries, we can infer that there's one expensive template instantiation affecting both of our source files. This explains why the time of each of the two template instantiations are about equal. By including `Templates.h` in both source files, we are causing one template instantiation to add significant time to our build. From the **Specialization Name** column, we can see that the expensive instantiation is `S3>`, which corresponds to this code in `Templates.h`: ```cpp inline size_t LargeValue() { - return sizeof(S3>); }; ``` @@ -161,21 +162,10 @@ There are three main ways to decrease the cost of template instantiations: ### Remove unused templates -Review the template in question and determine if it's being used. If it's not being used, the easiest solution is to remove the function or template. In our example, `LargeValue()` is being used by `LargeValue.cpp`, so we cannot remove it. +Review the template in question and determine if it's being used. If it's not being used, the easiest solution is to remove the function or template. In the example, `LargeValue()` is being used by `LargeValue.cpp`, so we can't remove it. You can also consider removing include directives that bring in unnecessary template instantiations. It's easy to forget to remove header files when you're no longer using them, and unused includes can cause significant impact on build time. -### Optimize the template implementation - -Look at the template instantiation and determine if there is a way to optimize the code. Some optimization techniques include: - -- Reducing the complexity of template metaprogramming -- Using simpler template patterns -- Avoiding recursive template instantiation patterns that lead to exponential growth -- Using `if constexpr` instead of SFINAE where possible - -For more advanced template optimization techniques, see [Build Throughput Series: More Efficient Template Metaprogramming](https://devblogs.microsoft.com/cppblog/build-throughput-series-more-efficient-template-metaprogramming/), which provides detailed examples of reducing template instantiation overhead. - ### Move template instantiations to source files For our purposes, let's assume that we need the template instantiation as-is. We can rely on the third approach: moving the definition that causes the expensive template instantiation to a source file. @@ -209,37 +199,42 @@ The build time has significantly decreased. While the template instantiation of This technique scales well to larger projects. If multiple files included `Templates.h`, each of those files would have added the instantiation time of `LargeValue()` to the total build time. By moving the definition of `LargeValue()` to a dedicated source file, we minimize our build time. -## Understanding Templates view results +### Optimize the template implementation -When interpreting Templates view results, keep these points in mind: +Look at the template instantiation and determine if there's a way to optimize the code. Some optimization techniques include: -- **Empty view**: If nothing shows up in the Templates view, it means your build time is not dominated by template instantiations. This is actually good news - your templates are not a build bottleneck. -- **Duplicate instantiations**: The same template instantiation appearing multiple times with different translation units indicates that multiple source files are causing the same expensive instantiation. This is often the biggest optimization opportunity. -- **Threshold filtering**: The view only shows instantiations whose contribution exceeds a certain threshold to avoid noise from trivial instantiations. -- **Time aggregation**: The time shown represents the total time spent on that specific template instantiation, including any nested instantiations it may trigger. +- Using simpler template patterns +- Reducing the complexity of template metaprogramming +- Avoiding recursive template instantiation patterns that lead to exponential growth +- Use `if constexpr` instead of SFINAE where possible + +For more advanced template optimization techniques, see [Build Throughput Series: More Efficient Template Metaprogramming](https://devblogs.microsoft.com/cppblog/build-throughput-series-more-efficient-template-metaprogramming/), which provides detailed examples of reducing template instantiation overhead. -For more strategies on improving build times in template-heavy code, see: -- [Templates View for Build Insights in Visual Studio](https://devblogs.microsoft.com/cppblog/templates-view-for-build-insights-in-visual-studio-2/) -- [Build throughput series: More efficient template metaprogramming](https://devblogs.microsoft.com/cppblog/build-throughput-series-more-efficient-template-metaprogramming/) +## Tips -The first article provides an overview of the Templates view and how to use it. The second article dives deeper into template metaprogramming techniques that can reduce build time, with practical examples. +- You can **File** > **Save As** the ETL file to a more permanent location to keep a record of the build time. You can then compare it to future builds to see if your changes are improving build time. +- If you inadvertently close the Build Insights window, reopen it by finding the `.etl` file in your temporary folder. The `TEMP` Windows environment variable provides the path of your temporary files folder. +- To dig into the Build Insights data with Windows Performance Analyzer (WPA), click the **Open in WPA** button in the bottom right of the ETL window. +- Drag columns to change the order of the columns. For instance, you may prefer moving the **Time** column to be the first column. You can hide columns by right-clicking on the column header and deselecting the columns you don't want to see. +- The **Templates** view provides a filter box to find a specific template instantiation. It does partial matches on the name you provide. +- If you forget how to interpret what the **Templates** view is trying to show you, hover over the tab to see a tooltip that describes the view. ## Troubleshooting -- **Templates view does not appear:** Ensure you are using Visual Studio 2022 17.10 or later and that the C++ Build Insights component is installed. Also, make sure Templates view is enabled in the options. -- **No templates listed:** Your project may not have template instantiations that take significant build time, or you may need to build in Release mode with optimizations enabled. -- **Build is much slower with Templates view enabled:** This is expected due to the extra data collection. Disable Templates view when not needed. +**Templates view is empty**: This could mean: + +- Template data collection is not enabled (check your options settings). +- Your build time is not dominated by template instantiations. +- Do a rebuild instead of a build. The Build Insights window doesn't appear if nothing builds, which may be the case if no files changed since the last build. +- Ensure you are using Visual Studio 2022 17.10 or later and that the C++ Build Insights component is installed. + +**Build is much slower with Templates view enabled:** This is expected due to the extra data collection. Disable **Templates** view when not needed. ## See also - [Build Insights tips and tricks](build-insights-tips.md) +- [#include cleanup in Visual Studio](https://devblogs.microsoft.com/cppblog/include-cleanup-in-visual-studio/) +- [Troubleshoot header file impact on build time](build-insights-included-files-view.md) - [Troubleshoot function inlining on build time](build-insights-function-view.md) -- [Build Insights now available in Visual Studio 2022](build-insights-now-available-in-visual-studio-2022.md) -- [Functions View for Build Insights in Visual Studio 2022 17.8](functions-view-for-build-insights-in-visual-studio-2022-17-8.md) -- [Build throughput series: More efficient template metaprogramming](https://devblogs.microsoft.com/cppblog/build-throughput-series-more-efficient-template-metaprogramming/) - ---- - -**Summary of additional important points from the blog post:** -- The blog post provides more advanced examples, such as using SFINAE and type traits, which can be referenced for deeper dives but are not included in this basic walkthrough. - +- [Build Insights now available in Visual Studio 2022](https://devblogs.microsoft.com/cppblog/build-insights-now-available-in-visual-studio-2022) +- [Build throughput series: More efficient template metaprogramming](https://devblogs.microsoft.com/cppblog/build-throughput-series-more-efficient-template-metaprogramming/) \ No newline at end of file From fa6e3fe2860158ec666e730e0f8bb18681f34e14 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Mon, 14 Jul 2025 15:11:10 -0700 Subject: [PATCH 1074/2255] draft --- .../tutorials/build-insights-template-view.md | 30 +++++++----------- .../media/templates-view-after-fix.png | Bin 0 -> 26143 bytes .../media/templates-view-before-fix.png | Bin 66563 -> 66831 bytes 3 files changed, 12 insertions(+), 18 deletions(-) create mode 100644 docs/build-insights/tutorials/media/templates-view-after-fix.png diff --git a/docs/build-insights/tutorials/build-insights-template-view.md b/docs/build-insights/tutorials/build-insights-template-view.md index cdd12cc4eb2..fdba6806a98 100644 --- a/docs/build-insights/tutorials/build-insights-template-view.md +++ b/docs/build-insights/tutorials/build-insights-template-view.md @@ -136,7 +136,7 @@ The **Templates** view lists the template instantiations that contributed signif - **Instantiation File Path** shows where in your source code the template instantiation happens. This helps you locate the exact line of code responsible for the expensive instantiation. :::image type="complex" source="./media/templates-view-before-fix.png" alt-text="Screenshot of the Build Insights Templates view showing expensive template instantiations."::: -The Templates view shows two template instantiations of struct S3 taking most (79.4480%) of the build time. The Translation Unit column shows that both LargeValue.cpp and SmallValue.cpp are affected. +The Templates view shows two template instantiations of struct S3 taking most (79.448%) of the build time. The Translation Unit column shows that both LargeValue.cpp and SmallValue.cpp are affected. The build time is 4.066 seconds. :::image-end::: - Sort by **Time** to find the templates that take the longest to instantiate. @@ -145,9 +145,9 @@ The Templates view shows two template instantiations of struct S3 taking most (7 ## Improve build time by optimizing template instantiations -In the example, we can see that two template instantiations of `S3` are taking 83% of the entire build time. The **Translation Unit** column shows that both `SmallValue.cpp` and `LargeValue.cpp` are causing this template instantiation to be included in the build. +In the example, we can see that two template instantiations of `S3` are taking 79% of the build time. The **Translation Unit** column shows that both `SmallValue.cpp` and `LargeValue.cpp` are causing this template instantiation to be included in the build. -Since the **Instantiation File Path** and the **Specialization Name** are the same for both entries, we can infer that there's one expensive template instantiation affecting both of our source files. This explains why the time of each of the two template instantiations are about equal. By including `Templates.h` in both source files, we are causing one template instantiation to add significant time to our build. +Since the **Instantiation File Path** and the **Specialization Name** are the same for both entries, we infer that there's one expensive template instantiation affecting both of our source files. This explains why the time of each of the two template instantiations are about equal. By including `Templates.h` in both source files, we are causing one template instantiation to add significant time to the build. From the **Specialization Name** column, we can see that the expensive instantiation is `S3>`, which corresponds to this code in `Templates.h`: @@ -170,15 +170,13 @@ You can also consider removing include directives that bring in unnecessary temp For our purposes, let's assume that we need the template instantiation as-is. We can rely on the third approach: moving the definition that causes the expensive template instantiation to a source file. -Since `LargeValue.cpp` is the only source file that calls `LargeValue()`, we can move the definition to `LargeValue.cpp`. This prevents the template instantiation from happening in every translation unit that includes `Templates.h`. - -To do this, remove the current definition of `LargeValue()` from `Templates.h` and replace it with a declaration: +Since `LargeValue.cpp` is the only source file that calls `LargeValue()`, we can move the definition to `LargeValue.cpp`. This prevents the template instantiation from happening in every translation unit that includes `Templates.h`. Remove the current definition of `LargeValue()` from `Templates.h` and replace it with a declaration: ```cpp size_t LargeValue(); ``` -Then, inside `LargeValue.cpp` add the definition: +Inside `LargeValue.cpp` add the definition: ```cpp size_t LargeValue() @@ -187,16 +185,14 @@ size_t LargeValue() } ``` -Now, when you rebuild the project and run Build Insights again, you should see that the expensive template instantiation is no longer listed in the **Templates** view. The build time should also decrease significantly. - -:::image type="complex" source="./media/templates-view-after-fix.png" alt-text="Screenshot of the Build Insights Templates view after optimization showing reduced template instantiation time."::: +Rebuild the project and run Build Insights again. From the main menu, select **Build** > **Run Build Insights on Selection** > **Rebuild**. -The Templates view now shows only one instantiation of S3 instead of two, and the total build time has been significantly reduced. +The build time has significantly decreased. While the template instantiation of `S3` is still contributing to the build time, we've been able to roughly halve the total time by only including necessary template instantiations. You can see the count of `S3` instantiations is now 1 instead of 2. +:::image type="complex" source="./media/templates-view-after-fix.png" alt-text="Screenshot of the Build Insights Templates view after optimization showing reduced template instantiation time."::: +The Templates view now shows only one instantiation of S3 instead of two, and the total build time is significantly less at 3.152 seconds. :::image-end::: -The build time has significantly decreased. While the template instantiation of `S3` is still contributing to the build time, we've been able to roughly halve the total time by only including necessary template instantiations. You can see the count of `S3` instantiations is now 1 instead of 2. - This technique scales well to larger projects. If multiple files included `Templates.h`, each of those files would have added the instantiation time of `LargeValue()` to the total build time. By moving the definition of `LargeValue()` to a dedicated source file, we minimize our build time. ### Optimize the template implementation @@ -212,12 +208,10 @@ For more advanced template optimization techniques, see [Build Throughput Series ## Tips -- You can **File** > **Save As** the ETL file to a more permanent location to keep a record of the build time. You can then compare it to future builds to see if your changes are improving build time. -- If you inadvertently close the Build Insights window, reopen it by finding the `.etl` file in your temporary folder. The `TEMP` Windows environment variable provides the path of your temporary files folder. -- To dig into the Build Insights data with Windows Performance Analyzer (WPA), click the **Open in WPA** button in the bottom right of the ETL window. -- Drag columns to change the order of the columns. For instance, you may prefer moving the **Time** column to be the first column. You can hide columns by right-clicking on the column header and deselecting the columns you don't want to see. +- You can use **File** > **Save As** to save the ETL file to a more permanent location to keep a record of the build time. You can then compare it to future builds to see if your changes are improving build time. +- If you inadvertently close the Build Insights window, reopen it by finding the `.etl` file either where you specified it should be saved, or in your temporary folder. The `TEMP` Windows environment variable provides the path of your temporary files folder. +- Drag columns to change the order of the columns. For instance, you may prefer moving the **Wall Time Responsibility** column to be the first column. You can add or hide columns by right-clicking on the column header and selecting or deselecting the columns you don't want to add or hide. - The **Templates** view provides a filter box to find a specific template instantiation. It does partial matches on the name you provide. -- If you forget how to interpret what the **Templates** view is trying to show you, hover over the tab to see a tooltip that describes the view. ## Troubleshooting diff --git a/docs/build-insights/tutorials/media/templates-view-after-fix.png b/docs/build-insights/tutorials/media/templates-view-after-fix.png new file mode 100644 index 0000000000000000000000000000000000000000..7acc1cf276c034591d4b1130bb4f0abe29ec9013 GIT binary patch literal 26143 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 y7XZHx9oCa%DCeNxuK@!+5EJGs=1o+DU literal 0 HcmV?d00001 diff --git a/docs/build-insights/tutorials/media/templates-view-before-fix.png b/docs/build-insights/tutorials/media/templates-view-before-fix.png index 5c52be969024c2a7510a1846efa2157f038a8717..22bd3ba5fd4e642d3ac87506d5ede96a7cd12214 100644 GIT binary patch literal 66831 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

NNt1P$r?@4#%z_x8+ON&|tJ*L6JY2V$HFizj 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 literal 66563 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 Date: Mon, 14 Jul 2025 15:58:38 -0700 Subject: [PATCH 1075/2255] draft --- docs/build-insights/toc.yml | 2 +- .../tutorials/build-insights-function-view.md | 8 +- .../tutorials/build-insights-template-view.md | 93 +++++++++---------- 3 files changed, 51 insertions(+), 52 deletions(-) diff --git a/docs/build-insights/toc.yml b/docs/build-insights/toc.yml index 5641215a9c8..d5f07030b96 100644 --- a/docs/build-insights/toc.yml +++ b/docs/build-insights/toc.yml @@ -6,7 +6,7 @@ items: - name: "Tutorials" expanded: true items: - - name: "Troubleshoot function inlining on build time" + - name: "Troubleshoot function inlining impact on build time" href: ../build-insights/tutorials/build-insights-function-view.md - name: "Troubleshoot template instantiation impact on build time" href: ../build-insights/tutorials/build-insights-template-view.md diff --git a/docs/build-insights/tutorials/build-insights-function-view.md b/docs/build-insights/tutorials/build-insights-function-view.md index 6b78c38d12e..35c96d5d196 100644 --- a/docs/build-insights/tutorials/build-insights-function-view.md +++ b/docs/build-insights/tutorials/build-insights-function-view.md @@ -1,11 +1,11 @@ --- -title: "Troubleshoot function inlining on build time" +title: "Troubleshoot function inlining impact on build time" description: "Tutorial for how to use Build Insights function view to troubleshoot the impact of function inlining on build time in your C++ projects." ms.date: 5/30/2024 helpviewer_keywords: ["C++ Build Insights", "inline function analysis", "build time analysis", "__forceinline analysis", "inlines analysis"] ms.topic: troubleshooting-general --- -# Troubleshoot function inlining on build time +# Troubleshoot function inlining impact on build time Use Build Insights **Functions** view to troubleshoot the impact of function inlining on build time in your C++ projects. @@ -128,8 +128,8 @@ Double-click, right-click, or press **Enter** while on a file in the **Functions ## Tips -- You can **File** > **Save As** the ETL file to a more permanent location to keep a record of the build time. You can then compare it to future builds to see if your changes are improving build time. -- If you inadvertently close the Build Insights window, reopen it by finding the `.etl` file in your temporary folder. The `TEMP` Windows environment variable provides the path of your temporary files folder. +- Use **File** > **Save As** to save the ETL file to a more permanent location to keep a record of the build time information. You can then compare it to future builds to see how your changes are improving things. +- If you close the Build Insights window, reopen it by finding the `.etl` file in your temporary folder. The `TEMP` Windows environment variable provides the path of your temporary files folder. - To dig into the Build Insights data with Windows Performance Analyzer (WPA), click the **Open in WPA** button in the bottom right of the ETL window. - Drag columns to change the order of the columns. For instance, you may prefer moving the **Time** column to be the first column. You can hide columns by right-clicking on the column header and deselecting the columns you don't want to see. - The **Functions** view provides a filter box to find a function that you're interested in. It does partial matches on the name you provide. diff --git a/docs/build-insights/tutorials/build-insights-template-view.md b/docs/build-insights/tutorials/build-insights-template-view.md index fdba6806a98..3177e3af3df 100644 --- a/docs/build-insights/tutorials/build-insights-template-view.md +++ b/docs/build-insights/tutorials/build-insights-template-view.md @@ -1,35 +1,35 @@ --- title: "Troubleshoot template instantiation impact on build time" description: "Tutorial for how to use Build Insights template view to analyze and optimize the impact of template instantiations on build time in your C++ projects." -ms.date: 7/9/2025 +ms.date: 07/14/2025 helpviewer_keywords: ["C++ Build Insights", "template instantiation analysis", "build time analysis"] ms.topic: troubleshooting-general --- + # Troubleshoot template instantiation impact on build time -Use Build Insights **Templates** view to analyze the impact of template instantiations on C++ build time. This feature is especially useful for projects that make heavy use of templates, such as those using template metaprogramming or large generic libraries. +Use Build Insights **Templates** view to analyze the impact of template instantiation on C++ build time. This feature is especially useful for projects that make heavy use of templates, such as those using template metaprogramming or large generic libraries. -Templates view will seem familiar to users of Build Insight's [Functions view](build-insights-function-view.md) due to similar UI and workflow. +**Templates** view will seem familiar to users of Build Insight's [Functions view](build-insights-function-view.md) due to similar UI and workflow. ## Prerequisites - Visual Studio 2022 version 17.10 or later. -- The **C++ Build Insights** component must be installed. It's installed as part of either the Desktop development with C++ workload or the Game development with C++ workload. You can ensure that it is installed by following these steps: +- The **C++ Build Insights** component must be installed. It's installed as part of either the Desktop development with C++ workload or the Game development with C++ workload. You can ensure that it's installed by following these steps: 1. Open the Visual Studio Installer. 1. Choose to modify your Visual Studio installation. - 1. Under the **Individual components** tab, search for and then select **C++ Build Insights**. + 1. Under the **Individual components** tab, search for and then select **C++ Build Insights**, then select **Modify** to install the component. :::image type="complex" source="./media/installer-build-insights.png" alt-text="Screenshot of the Visual Studio Installer":::The search box contains C++ build insights. The item C++ Build Insights is visible and selected.":::image-end::: - 1. Click **Modify** to install the component. - + ## Overview Build Insights, integrated into Visual Studio, helps you optimize your build times--especially for large projects like AAA games. Build Insights provides analytics such as **Templates** view, which displays the time it takes to instantiate each template and shows which template instantiations add the most to your build time. In general, C++ template instantiation happens quickly. In exceptional cases, some template instantiations can noticeably slow down your builds. -In this article, follow along to create a project that demonstrates template instantiation impact on build time, run Build Insights to gather template instantiation times, and analyze the results. +In this article, follow along to create a project that demonstrates template instantiation impact on build time, run Build Insights to analyze that impact, and use those insights to make the build faster. -## Create a template test project +## Create a test project 1. Open Visual Studio and create a new **C++ Console App** project and name it `TemplateAnalysis`. 1. Create a header file called `Templates.h` and replace its contents with the following code: @@ -104,7 +104,7 @@ Template instantiation time collection is off by default to minimize build overh 1. You can also choose where to save the report by selecting **Store Build Insights reports in this directory** and specifying a directory. By default, it's saved in the folder pointed to by the Windows `TEMP` environment variable. 1. Select **OK**. -:::image type="content" source="./media/tools-options-build-insights.png" alt-text="Screenshot of the project property pages dialog. The settings are open to Build Insights > Trace Collection. The Collect Template Instantion checkbox is selected."::: +:::image type="content" source="./media/tools-options-build-insights.png" alt-text="Screenshot of the project property pages dialog. The settings are open to Build Insights > Trace Collection. The Collect Template Instantiation checkbox is selected."::: > [!Note] > Collecting template instantiation times increases build time due to the extra data collected. Only enable it when you want to analyze template instantiation bottlenecks. @@ -115,25 +115,16 @@ From the main menu, select **Build** > **Run Build Insights on Selection** > **R :::image type="content" source="./media/build-insights-rebuild-project.png" alt-text="Screenshot of the main menu with Run Build Insights on Selection > Rebuild selected."::: -When the build finishes, an Event Trace Log (ETL) file opens.The generated name is based on the collection time. - -## Understanding Templates view results - -When interpreting Templates view results, keep these points in mind: - -- **Empty view**: If nothing shows up in the Templates view, it means your build time isn't dominated by template instantiations. This is good news because your templates are not a build bottleneck. -- **Duplicate instantiations**: The same template instantiation appearing multiple times with different translation units indicates that multiple source files are causing the same expensive instantiation. This is often the biggest optimization opportunity. -- **Threshold filtering**: The view only shows instantiations whose contribution exceeds a certain threshold to avoid noise from trivial instantiations. -- **Time aggregation**: The time shown represents the total time spent on that specific template instantiation, including any nested instantiations it triggers. +When the build finishes, an Event Trace Log (ETL) file opens. The filename is based on the collection time. ## Use Templates view to optimize build time -The **Templates** view lists the template instantiations that contributed significantly to build time. Columns provide information about: +The **Templates** view lists the template instantiations that contributed significantly to build time. The columns provide information about: - **Time [sec, %]** shows how long it took to instantiate each template in [wall clock responsibility time (WCTR)](https://devblogs.microsoft.com/cppblog/faster-cpp-builds-simplified-a-new-metric-for-time/#:~:text=Today%2C%20we%E2%80%99d%20like%20to%20teach%20you%20about%20a,your%20build%2C%20even%20in%20the%20presence%20of%20parallelism). This metric distributes the wall clock time among template instantiations based on their use of parallel compiler threads. -- **Specialization Name** shows each template instantiation, including the template arguments that were used. This helps you identify which template specializations are most expensive. -- **Translation Unit** shows which source file each template instantiation happened in. Multiple files can cause the same template instantiation if they include the same header with the template definition. -- **Instantiation File Path** shows where in your source code the template instantiation happens. This helps you locate the exact line of code responsible for the expensive instantiation. +- **Specialization Name** shows each template instantiation, including the template arguments used. This helps you identify which template specializations are most expensive. +- **Translation Unit** shows the source files where each template instantiation happens. Multiple files can cause the same template instantiation if they include the same header with the template definition. +- **Instantiation File Name** shows where the template is defined that is being instantiated. :::image type="complex" source="./media/templates-view-before-fix.png" alt-text="Screenshot of the Build Insights Templates view showing expensive template instantiations."::: The Templates view shows two template instantiations of struct S3 taking most (79.448%) of the build time. The Translation Unit column shows that both LargeValue.cpp and SmallValue.cpp are affected. The build time is 4.066 seconds. @@ -143,13 +134,22 @@ The Templates view shows two template instantiations of struct S3 taking most (7 - Expand a template to see its various instantiations and where they happened. - Use the search box to focus on specific templates. +### Understanding Templates view results + +When interpreting Templates view results, keep this in mind: + +- **Empty view**: If nothing shows up in the **Templates** view, it means template instantiations don't dominate your build time. This is good news because your templates aren't a build bottleneck. +- **Duplicate instantiations**: If the same template instantiation appears multiple times across different translation units, that indicates that multiple source files are causing the same expensive instantiation. This is often the biggest optimization opportunity. +- **Threshold filtering**: The view only shows instantiations whose contribution exceeds a certain threshold to avoid noise from trivial instantiations. +- **Time aggregation**: The time shown represents the total time spent on that specific template instantiation, including any nested instantiations. + ## Improve build time by optimizing template instantiations -In the example, we can see that two template instantiations of `S3` are taking 79% of the build time. The **Translation Unit** column shows that both `SmallValue.cpp` and `LargeValue.cpp` are causing this template instantiation to be included in the build. +In this example, we can see that two template instantiations of `S3` are taking 79% of the build time. The **Translation Unit** column shows that both `SmallValue.cpp` and `LargeValue.cpp` are causing this template instantiation. -Since the **Instantiation File Path** and the **Specialization Name** are the same for both entries, we infer that there's one expensive template instantiation affecting both of our source files. This explains why the time of each of the two template instantiations are about equal. By including `Templates.h` in both source files, we are causing one template instantiation to add significant time to the build. +Since the **Instantiation File Name** and the **Specialization Name** are the same for both entries, we infer that there's one expensive template instantiation affecting both of our source files. This explains why the time for each of the two template instantiations are roughly equal. Including `Templates.h` in both source files causes one template instantiation to add significant time to the build. -From the **Specialization Name** column, we can see that the expensive instantiation is `S3>`, which corresponds to this code in `Templates.h`: +From the **Specialization Name** column, we can see that the expensive instantiation is `S3>`, which is instantiated in this code in `Templates.h`: ```cpp inline size_t LargeValue() @@ -158,17 +158,17 @@ inline size_t LargeValue() }; ``` -There are three main ways to decrease the cost of template instantiations: +There are three main ways to decrease the cost of template instantiations. ### Remove unused templates -Review the template in question and determine if it's being used. If it's not being used, the easiest solution is to remove the function or template. In the example, `LargeValue()` is being used by `LargeValue.cpp`, so we can't remove it. +See if the expensive template is being used. If it's not, the easiest solution is to remove the function or template. In the example, `LargeValue()` is being used in `LargeValue.cpp`, so we can't remove it. You can also consider removing include directives that bring in unnecessary template instantiations. It's easy to forget to remove header files when you're no longer using them, and unused includes can cause significant impact on build time. ### Move template instantiations to source files -For our purposes, let's assume that we need the template instantiation as-is. We can rely on the third approach: moving the definition that causes the expensive template instantiation to a source file. +In this example, we can rely on the third approach: move the definition that causes the expensive template instantiation to a source file. Since `LargeValue.cpp` is the only source file that calls `LargeValue()`, we can move the definition to `LargeValue.cpp`. This prevents the template instantiation from happening in every translation unit that includes `Templates.h`. Remove the current definition of `LargeValue()` from `Templates.h` and replace it with a declaration: @@ -185,9 +185,9 @@ size_t LargeValue() } ``` -Rebuild the project and run Build Insights again. From the main menu, select **Build** > **Run Build Insights on Selection** > **Rebuild**. +Rebuild the project and run Build Insights again from the main menu: select **Build** > **Run Build Insights on Selection** > **Rebuild**. -The build time has significantly decreased. While the template instantiation of `S3` is still contributing to the build time, we've been able to roughly halve the total time by only including necessary template instantiations. You can see the count of `S3` instantiations is now 1 instead of 2. +The build time has decreased. While the template instantiation of `S3` is still contributing to the build time, by only including necessary template instantiations the build time is nearly half what it was before. The count of `S3` instantiations is now 1 instead of 2. :::image type="complex" source="./media/templates-view-after-fix.png" alt-text="Screenshot of the Build Insights Templates view after optimization showing reduced template instantiation time."::: The Templates view now shows only one instantiation of S3 instead of two, and the total build time is significantly less at 3.152 seconds. @@ -197,38 +197,37 @@ This technique scales well to larger projects. If multiple files included `Templ ### Optimize the template implementation -Look at the template instantiation and determine if there's a way to optimize the code. Some optimization techniques include: +Some other optimization techniques include: -- Using simpler template patterns -- Reducing the complexity of template metaprogramming -- Avoiding recursive template instantiation patterns that lead to exponential growth -- Use `if constexpr` instead of SFINAE where possible +- Use simpler template patterns +- Use `if constexpr` instead of Substitution Failure Is Not An Error (SFINAE) where possible +- Avoid recursive template instantiation patterns that lead to exponential growth -For more advanced template optimization techniques, see [Build Throughput Series: More Efficient Template Metaprogramming](https://devblogs.microsoft.com/cppblog/build-throughput-series-more-efficient-template-metaprogramming/), which provides detailed examples of reducing template instantiation overhead. +For information about more advanced template optimization techniques, see [Build Throughput Series: More Efficient Template Metaprogramming](https://devblogs.microsoft.com/cppblog/build-throughput-series-more-efficient-template-metaprogramming/) which provides detailed examples of reducing template instantiation overhead. ## Tips -- You can use **File** > **Save As** to save the ETL file to a more permanent location to keep a record of the build time. You can then compare it to future builds to see if your changes are improving build time. -- If you inadvertently close the Build Insights window, reopen it by finding the `.etl` file either where you specified it should be saved, or in your temporary folder. The `TEMP` Windows environment variable provides the path of your temporary files folder. -- Drag columns to change the order of the columns. For instance, you may prefer moving the **Wall Time Responsibility** column to be the first column. You can add or hide columns by right-clicking on the column header and selecting or deselecting the columns you don't want to add or hide. +- Use **File** > **Save As** to save the ETL file to a more permanent location to keep a record of the build time information. You can then compare it to future builds to see how your changes are improving things. +- If you close the Build Insights window, reopen it by finding the `.etl` file either where you specified it should be saved, or in your temporary folder. The `TEMP` Windows environment variable provides the path of your temporary files folder. +- Drag columns to change the order of the columns. For instance, you may prefer moving the **Wall Time Responsibility** column to be the first column. You can add or hide columns by right-clicking on the column header and selecting or deselecting the columns you want. - The **Templates** view provides a filter box to find a specific template instantiation. It does partial matches on the name you provide. ## Troubleshooting **Templates view is empty**: This could mean: -- Template data collection is not enabled (check your options settings). -- Your build time is not dominated by template instantiations. +- Your build time isn't dominated by template instantiations. +- Template data collection isn't enabled. To turn it on, see [Enable build time data collection](#enable-build-time-data-collection). - Do a rebuild instead of a build. The Build Insights window doesn't appear if nothing builds, which may be the case if no files changed since the last build. -- Ensure you are using Visual Studio 2022 17.10 or later and that the C++ Build Insights component is installed. +- Ensure you're using Visual Studio 2022 17.10 or later and that the C++ Build Insights component is installed. -**Build is much slower with Templates view enabled:** This is expected due to the extra data collection. Disable **Templates** view when not needed. +**Build is much slower with Templates view enabled:** This is expected due to the extra data collection. Turn off template instantiation collection when not needed. For more information, see [Enable build time data collection](#enable-build-time-data-collection). ## See also - [Build Insights tips and tricks](build-insights-tips.md) -- [#include cleanup in Visual Studio](https://devblogs.microsoft.com/cppblog/include-cleanup-in-visual-studio/) +- [#include cleanup in Visual Studio](https://devblogs.microsoft.com/cppblog/include-cleanup-in-visual-studio) - [Troubleshoot header file impact on build time](build-insights-included-files-view.md) - [Troubleshoot function inlining on build time](build-insights-function-view.md) - [Build Insights now available in Visual Studio 2022](https://devblogs.microsoft.com/cppblog/build-insights-now-available-in-visual-studio-2022) -- [Build throughput series: More efficient template metaprogramming](https://devblogs.microsoft.com/cppblog/build-throughput-series-more-efficient-template-metaprogramming/) \ No newline at end of file +- [Build throughput series: More efficient template metaprogramming](https://devblogs.microsoft.com/cppblog/build-throughput-series-more-efficient-template-metaprogramming) \ No newline at end of file From 48b34df669624cbc99afdac590374999822c824e Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 15 Jul 2025 21:58:44 +0800 Subject: [PATCH 1076/2255] Adjust some semicolon placements --- ...me-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md | 4 ++-- ...ol-containers-using-controls-in-a-non-dialog-container_3.h | 3 +-- docs/standard-library/auto-ptr-class.md | 3 +-- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md b/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md index efbd48aaa0d..7a13c0f253d 100644 --- a/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md +++ b/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md @@ -30,8 +30,8 @@ errno_t _ctime32_s( errno_t _ctime64_s( char* buffer, size_t numberOfElements, - const __time64_t *sourceTime ) -; + const __time64_t *sourceTime +); errno_t _wctime_s( wchar_t* buffer, size_t numberOfElements, diff --git a/docs/mfc/codesnippet/CPP/activex-control-containers-using-controls-in-a-non-dialog-container_3.h b/docs/mfc/codesnippet/CPP/activex-control-containers-using-controls-in-a-non-dialog-container_3.h index b28bf3a66d0..bdd7ac78c82 100644 --- a/docs/mfc/codesnippet/CPP/activex-control-containers-using-controls-in-a-non-dialog-container_3.h +++ b/docs/mfc/codesnippet/CPP/activex-control-containers-using-controls-in-a-non-dialog-container_3.h @@ -3,5 +3,4 @@ CCirc m_myCtl; public: afx_msg void OnViewCircdlg(); -} -; \ No newline at end of file +}; diff --git a/docs/standard-library/auto-ptr-class.md b/docs/standard-library/auto-ptr-class.md index 69bdeb67bfb..3eda9ff3615 100644 --- a/docs/standard-library/auto-ptr-class.md +++ b/docs/standard-library/auto-ptr-class.md @@ -20,8 +20,7 @@ For more information about `throw()` and exception handling, see [Exception Spec class auto_ptr { typedef Type element_type; explicit auto_ptr(Type* ptr = 0) throw(); - auto_ptr(auto_ptr& right) throw() - ; + auto_ptr(auto_ptr& right) throw(); template operator auto_ptr() throw(); template From 11822859112493acc1af1f8c3860027d0cf4ee50 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 15 Jul 2025 22:00:10 +0800 Subject: [PATCH 1077/2255] Update metadata in `ctime_s` and variants reference --- ...e-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md b/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md index 7a13c0f253d..fcf23eb2ceb 100644 --- a/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md +++ b/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md @@ -1,14 +1,13 @@ --- -description: "Learn more about: ctime_s, _ctime32_s, _ctime64_s, _wctime_s, _wctime32_s, _wctime64_s" title: "ctime_s, _ctime32_s, _ctime64_s, _wctime_s, _wctime32_s, _wctime64_s" -ms.date: "4/2/2020" +description: "Learn more about: ctime_s, _ctime32_s, _ctime64_s, _wctime_s, _wctime32_s, _wctime64_s" +ms.date: 4/2/2020 api_name: ["_ctime64_s", "_wctime32_s", "ctime_s", "_wctime64_s", "_ctime32_s", "_wctime_s", "_o__ctime32_s", "_o__ctime64_s", "_o__wctime32_s", "_o__wctime64_s"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"] api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["ctime64_s", "_ctime32_s", "_tctime32_s", "_ctime64_s", "_wctime_s", "_tctime_s", "_tctime64_s", "ctime_s", "ctime32_s"] helpviewer_keywords: ["_wctime32_s function", "ctime64_s function", "_tctime64_s function", "_wctime_s function", "tctime_s function", "_wctime64_s function", "ctime_s function", "ctime32_s function", "_ctime64_s function", "tctime64_s function", "wctime64_s function", "wctime_s function", "_tctime_s function", "tctime32_s function", "wctime32_s function", "time, converting", "_ctime32_s function", "_tctime32_s function"] -ms.assetid: 36ac419a-8000-4389-9fd8-d78b747a009b --- # `ctime_s`, `_ctime32_s`, `_ctime64_s`, `_wctime_s`, `_wctime32_s`, `_wctime64_s` From 765705ef7da8b041a65527766eb5512abfd59168 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 15 Jul 2025 22:39:36 +0800 Subject: [PATCH 1078/2255] Convert Command-line errors and warnings list into a table --- ...command-line-errors-d8000-through-d9999.md | 42 ++++++++++--------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md b/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md index 5eb48e048e6..ad2391255c6 100644 --- a/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md +++ b/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md @@ -12,28 +12,32 @@ The articles in this section provide a reference to the command-line errors and ## Command-line error messages -[Command-Line Error D8016](../../error-messages/tool-errors/command-line-error-d8016.md) \ -[Command-Line Error D8021](../../error-messages/tool-errors/command-line-error-d8021.md) \ -[Command-Line Error D8022](../../error-messages/tool-errors/command-line-error-d8022.md) \ -[Command-Line Error D8027](../../error-messages/tool-errors/command-line-error-d8027.md) \ -[Command-Line Error D8036](../../error-messages/tool-errors/command-line-error-d8036.md) \ -[Command-Line Error D8037](../../error-messages/tool-errors/command-line-error-d8037.md) \ -[Command-Line Error D8045](../../error-messages/tool-errors/command-line-error-d8045.md) \ -[Command-Line Error D8048](../../error-messages/tool-errors/command-line-error-d8048.md) \ -[Command-Line Error D8049](../../error-messages/tool-errors/command-line-error-d8049.md) +| Error | Message | +|--|--| +| [Command-Line Error D8016](../../error-messages/tool-errors/command-line-error-d8016.md) | 'option1' and 'option2' command-line options are incompatible | +| [Command-Line Error D8021](../../error-messages/tool-errors/command-line-error-d8021.md) | invalid numeric argument 'number' | +| [Command-Line Error D8022](../../error-messages/tool-errors/command-line-error-d8022.md) | cannot open 'messagefile' | +| [Command-Line Error D8027](../../error-messages/tool-errors/command-line-error-d8027.md) | cannot execute 'component' | +| [Command-Line Error D8036](../../error-messages/tool-errors/command-line-error-d8036.md) | '/option' not allowed with multiple source files | +| [Command-Line Error D8037](../../error-messages/tool-errors/command-line-error-d8037.md) | cannot create temporary il file; clean temp directory of old il files | +| [Command-Line Error D8045](../../error-messages/tool-errors/command-line-error-d8045.md) | cannot compile C file 'file' with the /clr option | +| [Command-Line Error D8048](../../error-messages/tool-errors/command-line-error-d8048.md) | cannot compile C file '*file-name*' with /ZW option | +| [Command-Line Error D8049](../../error-messages/tool-errors/command-line-error-d8049.md) | cannot execute '*compiler-component*': command line is too long to fit in debug record | ## Command-line warning messages -[Command-Line Warning D9024](../../error-messages/tool-errors/command-line-warning-d9024.md) \ -[Command-Line Warning D9025](../../error-messages/tool-errors/command-line-warning-d9025.md) \ -[Command-Line Warning D9026](../../error-messages/tool-errors/command-line-warning-d9026.md) \ -[Command-Line Warning D9027](../../error-messages/tool-errors/command-line-warning-d9027.md) \ -[Command-Line Warning D9028](../../error-messages/tool-errors/command-line-warning-d9028.md) \ -[Command-Line Warning D9035](../../error-messages/tool-errors/command-line-warning-d9035.md) \ -[Command-Line Warning D9036](../../error-messages/tool-errors/command-line-warning-d9036.md) \ -[Command-Line Warning D9040](../../error-messages/tool-errors/command-line-warning-d9040.md) \ -[Command-Line Warning D9041](../../error-messages/tool-errors/command-line-warning-d9041.md) \ -[Command-Line Warning D9043](../../error-messages/tool-errors/command-line-warning-d9043.md) +| Warning | Message | +|--|--| +| [Command-Line Warning D9024](../../error-messages/tool-errors/command-line-warning-d9024.md) | unrecognized source file type 'filename', object file assumed | +| [Command-Line Warning D9025](../../error-messages/tool-errors/command-line-warning-d9025.md) | overriding 'option1' with 'option2' | +| [Command-Line Warning D9026](../../error-messages/tool-errors/command-line-warning-d9026.md) | options apply to entire command line | +| [Command-Line Warning D9027](../../error-messages/tool-errors/command-line-warning-d9027.md) | source file '\' ignored | +| [Command-Line Warning D9028](../../error-messages/tool-errors/command-line-warning-d9028.md) | minimal rebuild failure, reverting to normal build | +| [Command-Line Warning D9035](../../error-messages/tool-errors/command-line-warning-d9035.md) | option '*option*' has been deprecated and will be removed in a future release | +| [Command-Line Warning D9036](../../error-messages/tool-errors/command-line-warning-d9036.md) | '*option\_2*' instead of '*option\_1*' | +| [Command-Line Warning D9040](../../error-messages/tool-errors/command-line-warning-d9040.md) | ignoring option '/analyze'; Code Analysis warnings are not available in this edition of the compiler | +| [Command-Line Warning D9041](../../error-messages/tool-errors/command-line-warning-d9041.md) | invalid value '*option-value*' for '/*option-name*'; assuming '*assumed-value*'; add '/analyze' to command-line options when specifying this warning | +| [Command-Line Warning D9043](../../error-messages/tool-errors/command-line-warning-d9043.md) | invalid value 'warning_level' for 'compiler_option'; assuming '4999'; Code Analysis warnings are not associated with warning levels | ## See also From 0652a0a47e6ca9079bbfb2ec0d1aef5d0edc3ec9 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 15 Jul 2025 22:41:04 +0800 Subject: [PATCH 1079/2255] Simplify superfluous relative links in "Command-line errors and warnings" --- ...command-line-errors-d8000-through-d9999.md | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md b/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md index ad2391255c6..ff2098ed1c9 100644 --- a/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md +++ b/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md @@ -8,36 +8,36 @@ ms.assetid: d02ec7df-26a5-4198-ac92-87b29ec9d5c8 The articles in this section provide a reference to the command-line errors and warnings generated by the build tools. These messages have the form `Dxxxx`, where *xxxx* is a four-digit number. -[!INCLUDE[error-boilerplate](../../error-messages/includes/error-boilerplate.md)] +[!INCLUDE[error-boilerplate](../includes/error-boilerplate.md)] ## Command-line error messages | Error | Message | |--|--| -| [Command-Line Error D8016](../../error-messages/tool-errors/command-line-error-d8016.md) | 'option1' and 'option2' command-line options are incompatible | -| [Command-Line Error D8021](../../error-messages/tool-errors/command-line-error-d8021.md) | invalid numeric argument 'number' | -| [Command-Line Error D8022](../../error-messages/tool-errors/command-line-error-d8022.md) | cannot open 'messagefile' | -| [Command-Line Error D8027](../../error-messages/tool-errors/command-line-error-d8027.md) | cannot execute 'component' | -| [Command-Line Error D8036](../../error-messages/tool-errors/command-line-error-d8036.md) | '/option' not allowed with multiple source files | -| [Command-Line Error D8037](../../error-messages/tool-errors/command-line-error-d8037.md) | cannot create temporary il file; clean temp directory of old il files | -| [Command-Line Error D8045](../../error-messages/tool-errors/command-line-error-d8045.md) | cannot compile C file 'file' with the /clr option | -| [Command-Line Error D8048](../../error-messages/tool-errors/command-line-error-d8048.md) | cannot compile C file '*file-name*' with /ZW option | -| [Command-Line Error D8049](../../error-messages/tool-errors/command-line-error-d8049.md) | cannot execute '*compiler-component*': command line is too long to fit in debug record | +| [Command-Line Error D8016](command-line-error-d8016.md) | 'option1' and 'option2' command-line options are incompatible | +| [Command-Line Error D8021](command-line-error-d8021.md) | invalid numeric argument 'number' | +| [Command-Line Error D8022](command-line-error-d8022.md) | cannot open 'messagefile' | +| [Command-Line Error D8027](command-line-error-d8027.md) | cannot execute 'component' | +| [Command-Line Error D8036](command-line-error-d8036.md) | '/option' not allowed with multiple source files | +| [Command-Line Error D8037](command-line-error-d8037.md) | cannot create temporary il file; clean temp directory of old il files | +| [Command-Line Error D8045](command-line-error-d8045.md) | cannot compile C file 'file' with the /clr option | +| [Command-Line Error D8048](command-line-error-d8048.md) | cannot compile C file '*file-name*' with /ZW option | +| [Command-Line Error D8049](command-line-error-d8049.md) | cannot execute '*compiler-component*': command line is too long to fit in debug record | ## Command-line warning messages | Warning | Message | |--|--| -| [Command-Line Warning D9024](../../error-messages/tool-errors/command-line-warning-d9024.md) | unrecognized source file type 'filename', object file assumed | -| [Command-Line Warning D9025](../../error-messages/tool-errors/command-line-warning-d9025.md) | overriding 'option1' with 'option2' | -| [Command-Line Warning D9026](../../error-messages/tool-errors/command-line-warning-d9026.md) | options apply to entire command line | -| [Command-Line Warning D9027](../../error-messages/tool-errors/command-line-warning-d9027.md) | source file '\' ignored | -| [Command-Line Warning D9028](../../error-messages/tool-errors/command-line-warning-d9028.md) | minimal rebuild failure, reverting to normal build | -| [Command-Line Warning D9035](../../error-messages/tool-errors/command-line-warning-d9035.md) | option '*option*' has been deprecated and will be removed in a future release | -| [Command-Line Warning D9036](../../error-messages/tool-errors/command-line-warning-d9036.md) | '*option\_2*' instead of '*option\_1*' | -| [Command-Line Warning D9040](../../error-messages/tool-errors/command-line-warning-d9040.md) | ignoring option '/analyze'; Code Analysis warnings are not available in this edition of the compiler | -| [Command-Line Warning D9041](../../error-messages/tool-errors/command-line-warning-d9041.md) | invalid value '*option-value*' for '/*option-name*'; assuming '*assumed-value*'; add '/analyze' to command-line options when specifying this warning | -| [Command-Line Warning D9043](../../error-messages/tool-errors/command-line-warning-d9043.md) | invalid value 'warning_level' for 'compiler_option'; assuming '4999'; Code Analysis warnings are not associated with warning levels | +| [Command-Line Warning D9024](command-line-warning-d9024.md) | unrecognized source file type 'filename', object file assumed | +| [Command-Line Warning D9025](command-line-warning-d9025.md) | overriding 'option1' with 'option2' | +| [Command-Line Warning D9026](command-line-warning-d9026.md) | options apply to entire command line | +| [Command-Line Warning D9027](command-line-warning-d9027.md) | source file '\' ignored | +| [Command-Line Warning D9028](command-line-warning-d9028.md) | minimal rebuild failure, reverting to normal build | +| [Command-Line Warning D9035](command-line-warning-d9035.md) | option '*option*' has been deprecated and will be removed in a future release | +| [Command-Line Warning D9036](command-line-warning-d9036.md) | '*option\_2*' instead of '*option\_1*' | +| [Command-Line Warning D9040](command-line-warning-d9040.md) | ignoring option '/analyze'; Code Analysis warnings are not available in this edition of the compiler | +| [Command-Line Warning D9041](command-line-warning-d9041.md) | invalid value '*option-value*' for '/*option-name*'; assuming '*assumed-value*'; add '/analyze' to command-line options when specifying this warning | +| [Command-Line Warning D9043](command-line-warning-d9043.md) | invalid value 'warning_level' for 'compiler_option'; assuming '4999'; Code Analysis warnings are not associated with warning levels | ## See also From 043adf56028b2e4f9cef93c1a18341eb9e08a2ef Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 15 Jul 2025 22:41:56 +0800 Subject: [PATCH 1080/2255] Update metadata in "Command-line errors and warnings" --- .../tool-errors/command-line-errors-d8000-through-d9999.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md b/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md index ff2098ed1c9..af66c940222 100644 --- a/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md +++ b/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md @@ -1,8 +1,7 @@ --- -description: "Learn more about: Command-line errors and warnings" title: "Command-line errors and warnings" -ms.date: "04/17/2019" -ms.assetid: d02ec7df-26a5-4198-ac92-87b29ec9d5c8 +description: "Learn more about: Command-line errors and warnings" +ms.date: 04/17/2019 --- # Command-line errors and warnings From fb09af6a2f22c90c1a65f594b64ecf65631f297a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 15 Jul 2025 22:48:21 +0800 Subject: [PATCH 1081/2255] Add blockquotes for error messages in range [C2121, C2140] --- docs/error-messages/compiler-errors-1/compiler-error-c2121.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2122.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2124.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2128.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2129.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2130.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2132.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2133.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2134.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2135.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2137.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2138.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2140.md | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2121.md b/docs/error-messages/compiler-errors-1/compiler-error-c2121.md index bcd354b2fc1..75a1bf4ff4f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2121.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2121.md @@ -8,6 +8,6 @@ ms.assetid: e04f32da-3736-4df3-8a1c-d687afcecf5c --- # Compiler Error C2121 -'#' : invalid character : possibly the result of a macro expansion +> '#' : invalid character : possibly the result of a macro expansion An invalid # character may have been inserted by an incorrect macro that uses the token-pasting operator (##) instead of the stringizing operator (#). diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2122.md b/docs/error-messages/compiler-errors-1/compiler-error-c2122.md index a71d88a415f..ed31a971b0e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2122.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2122.md @@ -8,6 +8,6 @@ ms.assetid: bc060002-cd38-481b-a144-65af035ce851 --- # Compiler Error C2122 -'identifier' : prototype parameter in name list illegal +> 'identifier' : prototype parameter in name list illegal The parameter is not a legal type. ANSI C does not support user-defined types. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2124.md b/docs/error-messages/compiler-errors-1/compiler-error-c2124.md index 66e5e748be4..3fc796a0713 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2124.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2124.md @@ -8,7 +8,7 @@ ms.assetid: 93392aaa-5582-4d68-8cc5-bd9c62a0ae7e --- # Compiler Error C2124 -divide or mod by zero +> divide or mod by zero A constant expression has a zero denominator. To resolve the error, do not divide by zero. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2128.md b/docs/error-messages/compiler-errors-1/compiler-error-c2128.md index 242935dcf88..df54aa05d30 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2128.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2128.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2128"] --- # Compiler Error C2128 -'function' : alloc_text/same_seg applicable only to functions with C linkage +> 'function' : alloc_text/same_seg applicable only to functions with C linkage `#pragma alloc_text` can only be used with functions declared to have C linkage. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2129.md b/docs/error-messages/compiler-errors-1/compiler-error-c2129.md index bc65e651420..d8f050c22af 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2129.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2129.md @@ -8,7 +8,7 @@ ms.assetid: 21a8223e-1d22-4baa-9ca1-922b7f751dd0 --- # Compiler Error C2129 -static function 'function' declared but not defined +> static function 'function' declared but not defined A forward reference is made to a **`static`** function that is never defined. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2130.md b/docs/error-messages/compiler-errors-1/compiler-error-c2130.md index cf56b31a742..89d450172e0 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2130.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2130.md @@ -8,7 +8,7 @@ ms.assetid: c6fd5a7e-8f28-4f67-99d1-95a13b0dff90 --- # Compiler Error C2130 -\#line expected a string containing the filename, found 'token' +> #line expected a string containing the filename, found 'token' The optional file name token following [#line](../../preprocessor/hash-line-directive-c-cpp.md) `linenumber` must be a string. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2132.md b/docs/error-messages/compiler-errors-1/compiler-error-c2132.md index c4c21615336..e76e5f7de44 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2132.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2132.md @@ -8,6 +8,6 @@ ms.assetid: 32902472-49d1-4513-888f-b52d336839d5 --- # Compiler Error C2132 -syntax error : unexpected identifier +> syntax error : unexpected identifier An identifier appears in an unsupported context. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2133.md b/docs/error-messages/compiler-errors-1/compiler-error-c2133.md index bc9e05e319d..f5b4f95f43a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2133.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2133.md @@ -8,7 +8,7 @@ ms.assetid: 8942f9e8-9818-468f-97db-09dbd124fcae --- # Compiler Error C2133 -'identifier' : unknown size +> 'identifier' : unknown size An unsized array is declared as a member of a class, structure, union, or enumeration. The /Za (ANSI C) option does not allow unsized member arrays. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2134.md b/docs/error-messages/compiler-errors-1/compiler-error-c2134.md index 0436d94a766..08e323bc308 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2134.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2134.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2134"] --- # Compiler Error C2134 -'function' : call does not result in a constant expression +> 'function' : call does not result in a constant expression A function declared as constexpr can only call other functions declared as constexpr. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2135.md b/docs/error-messages/compiler-errors-1/compiler-error-c2135.md index d830da92acb..1b4b9d23359 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2135.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2135.md @@ -8,7 +8,7 @@ ms.assetid: aa360d22-4f79-4de1-b384-93cadd10975f --- # Compiler Error C2135 -'bit operator' : illegal bit field operation +> 'bit operator' : illegal bit field operation The address-of operator (`&`) cannot be applied to a bit field. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2137.md b/docs/error-messages/compiler-errors-1/compiler-error-c2137.md index bb5b13eaa61..deaf8d1bef0 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2137.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2137.md @@ -8,7 +8,7 @@ ms.assetid: 984687ee-7766-4f6b-ae15-0c9a010e2366 --- # Compiler Error C2137 -empty character constant +> empty character constant The empty character constant ( ' ' ) is not permitted. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2138.md b/docs/error-messages/compiler-errors-1/compiler-error-c2138.md index 77a93bb632b..d2519e1c573 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2138.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2138.md @@ -8,6 +8,6 @@ ms.assetid: 59fd1a58-3605-45dd-b9c1-0981e8aab26d --- # Compiler Error C2138 -illegal to define an enumeration without any members +> illegal to define an enumeration without any members An enumeration must have at least one member when /Za (disable Microsoft extensions) is selected. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2140.md b/docs/error-messages/compiler-errors-1/compiler-error-c2140.md index 59c8c1212ff..948aeead5fd 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2140.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2140.md @@ -8,7 +8,7 @@ ms.assetid: d44a0500-002c-4632-9e5e-c71c3a473ec4 --- # Compiler Error C2140 -'type' : a type that is dependent on a generic type parameter is not allowed as an argument to compiler intrinsic type trait 'trait' +> 'type' : a type that is dependent on a generic type parameter is not allowed as an argument to compiler intrinsic type trait 'trait' An invalid type specifier was passed to a type trait. From cf0fb9bd2693bdcbff0e1d8e00e3fe14ebf5143f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 15 Jul 2025 22:53:37 +0800 Subject: [PATCH 1082/2255] Add "Remarks" and "Example" headings for error references in range [C2121, C2140] --- docs/error-messages/compiler-errors-1/compiler-error-c2121.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2122.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2124.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2128.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2129.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2130.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2131.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2132.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2133.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2134.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2135.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2137.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2138.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2139.md | 4 ++-- docs/error-messages/compiler-errors-1/compiler-error-c2140.md | 2 ++ 15 files changed, 46 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2121.md b/docs/error-messages/compiler-errors-1/compiler-error-c2121.md index 75a1bf4ff4f..cd01d8c7187 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2121.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2121.md @@ -10,4 +10,6 @@ ms.assetid: e04f32da-3736-4df3-8a1c-d687afcecf5c > '#' : invalid character : possibly the result of a macro expansion +## Remarks + An invalid # character may have been inserted by an incorrect macro that uses the token-pasting operator (##) instead of the stringizing operator (#). diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2122.md b/docs/error-messages/compiler-errors-1/compiler-error-c2122.md index ed31a971b0e..10bb751e345 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2122.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2122.md @@ -10,4 +10,6 @@ ms.assetid: bc060002-cd38-481b-a144-65af035ce851 > 'identifier' : prototype parameter in name list illegal +## Remarks + The parameter is not a legal type. ANSI C does not support user-defined types. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2124.md b/docs/error-messages/compiler-errors-1/compiler-error-c2124.md index 3fc796a0713..396e7e1b5af 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2124.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2124.md @@ -10,8 +10,12 @@ ms.assetid: 93392aaa-5582-4d68-8cc5-bd9c62a0ae7e > divide or mod by zero +## Remarks + A constant expression has a zero denominator. To resolve the error, do not divide by zero. +## Example + The following sample generates C2124: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2128.md b/docs/error-messages/compiler-errors-1/compiler-error-c2128.md index df54aa05d30..f751504c268 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2128.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2128.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C2128"] > 'function' : alloc_text/same_seg applicable only to functions with C linkage +## Remarks + `#pragma alloc_text` can only be used with functions declared to have C linkage. +## Example + The following sample generates C2128: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2129.md b/docs/error-messages/compiler-errors-1/compiler-error-c2129.md index d8f050c22af..67fa66a9007 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2129.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2129.md @@ -10,10 +10,14 @@ ms.assetid: 21a8223e-1d22-4baa-9ca1-922b7f751dd0 > static function 'function' declared but not defined +## Remarks + A forward reference is made to a **`static`** function that is never defined. A **`static`** function must be defined within file scope. If the function is defined in another file, it must be declared **`extern`**. +## Example + The following sample generates C2129: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2130.md b/docs/error-messages/compiler-errors-1/compiler-error-c2130.md index 89d450172e0..475e387324d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2130.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2130.md @@ -10,8 +10,12 @@ ms.assetid: c6fd5a7e-8f28-4f67-99d1-95a13b0dff90 > #line expected a string containing the filename, found 'token' +## Remarks + The optional file name token following [#line](../../preprocessor/hash-line-directive-c-cpp.md) `linenumber` must be a string. +## Example + The following sample generates C2130: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2131.md b/docs/error-messages/compiler-errors-1/compiler-error-c2131.md index 90733559e1d..948814f5e2d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2131.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2131.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C2131"] > expression did not evaluate to a constant +## Remarks + An expression declared as **`const`** or **`constexpr`** didn't evaluate to a constant at compile time. The compiler must be able to determine the value of the expression at the point it's used. ## Example diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2132.md b/docs/error-messages/compiler-errors-1/compiler-error-c2132.md index e76e5f7de44..c06820f9c13 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2132.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2132.md @@ -10,4 +10,6 @@ ms.assetid: 32902472-49d1-4513-888f-b52d336839d5 > syntax error : unexpected identifier +## Remarks + An identifier appears in an unsupported context. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2133.md b/docs/error-messages/compiler-errors-1/compiler-error-c2133.md index f5b4f95f43a..b18736dbd1a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2133.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2133.md @@ -10,8 +10,12 @@ ms.assetid: 8942f9e8-9818-468f-97db-09dbd124fcae > 'identifier' : unknown size +## Remarks + An unsized array is declared as a member of a class, structure, union, or enumeration. The /Za (ANSI C) option does not allow unsized member arrays. +## Example + The following sample generates C2133: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2134.md b/docs/error-messages/compiler-errors-1/compiler-error-c2134.md index 08e323bc308..6ce299e1b1d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2134.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2134.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C2134"] > 'function' : call does not result in a constant expression +## Remarks + A function declared as constexpr can only call other functions declared as constexpr. +## Example + The following sample generates C2134: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2135.md b/docs/error-messages/compiler-errors-1/compiler-error-c2135.md index 1b4b9d23359..00bf1ae4c8e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2135.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2135.md @@ -10,8 +10,12 @@ ms.assetid: aa360d22-4f79-4de1-b384-93cadd10975f > 'bit operator' : illegal bit field operation +## Remarks + The address-of operator (`&`) cannot be applied to a bit field. +## Example + The following sample generates C2135: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2137.md b/docs/error-messages/compiler-errors-1/compiler-error-c2137.md index deaf8d1bef0..5325f43e5a7 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2137.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2137.md @@ -10,8 +10,12 @@ ms.assetid: 984687ee-7766-4f6b-ae15-0c9a010e2366 > empty character constant +## Remarks + The empty character constant ( ' ' ) is not permitted. +## Example + The following sample generates C2137: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2138.md b/docs/error-messages/compiler-errors-1/compiler-error-c2138.md index d2519e1c573..71e8e331da1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2138.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2138.md @@ -10,4 +10,6 @@ ms.assetid: 59fd1a58-3605-45dd-b9c1-0981e8aab26d > illegal to define an enumeration without any members +## Remarks + An enumeration must have at least one member when /Za (disable Microsoft extensions) is selected. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2139.md b/docs/error-messages/compiler-errors-1/compiler-error-c2139.md index e14f1709bf4..77019c0ed30 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2139.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2139.md @@ -9,10 +9,10 @@ helpviewer_keywords: ["C2139"] > '*type*' : an undefined class is not allowed as an argument to compiler intrinsic type trait '*trait*' -An invalid argument was passed to a type trait. - ## Remarks +An invalid argument was passed to a type trait. + For more information, see [Compiler Support for Type Traits](../../extensions/compiler-support-for-type-traits-cpp-component-extensions.md). ## Example diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2140.md b/docs/error-messages/compiler-errors-1/compiler-error-c2140.md index 948aeead5fd..e32ff6b7727 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2140.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2140.md @@ -10,6 +10,8 @@ ms.assetid: d44a0500-002c-4632-9e5e-c71c3a473ec4 > 'type' : a type that is dependent on a generic type parameter is not allowed as an argument to compiler intrinsic type trait 'trait' +## Remarks + An invalid type specifier was passed to a type trait. For more information, see [Compiler Support for Type Traits](../../extensions/compiler-support-for-type-traits-cpp-component-extensions.md). From 1fd9c96db680087bc7f919203a990eb44ced5e47 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 15 Jul 2025 22:54:39 +0800 Subject: [PATCH 1083/2255] Replace term "sample" with "example" for error references in range [C2121, C2140] --- docs/error-messages/compiler-errors-1/compiler-error-c2124.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2128.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2129.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2130.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2133.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2134.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2135.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2137.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2139.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2140.md | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2124.md b/docs/error-messages/compiler-errors-1/compiler-error-c2124.md index 396e7e1b5af..a46e8a8c79d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2124.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2124.md @@ -16,7 +16,7 @@ A constant expression has a zero denominator. To resolve the error, do not divid ## Example -The following sample generates C2124: +The following example generates C2124: ```cpp // C2124.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2128.md b/docs/error-messages/compiler-errors-1/compiler-error-c2128.md index f751504c268..276d6f4de7f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2128.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2128.md @@ -15,7 +15,7 @@ helpviewer_keywords: ["C2128"] ## Example -The following sample generates C2128: +The following example generates C2128: ```cpp // C2128.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2129.md b/docs/error-messages/compiler-errors-1/compiler-error-c2129.md index 67fa66a9007..30689baf018 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2129.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2129.md @@ -18,7 +18,7 @@ A **`static`** function must be defined within file scope. If the function is de ## Example -The following sample generates C2129: +The following example generates C2129: ```cpp // C2129.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2130.md b/docs/error-messages/compiler-errors-1/compiler-error-c2130.md index 475e387324d..37e799f129f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2130.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2130.md @@ -16,7 +16,7 @@ The optional file name token following [#line](../../preprocessor/hash-line-dire ## Example -The following sample generates C2130: +The following example generates C2130: ```cpp // C2130.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2133.md b/docs/error-messages/compiler-errors-1/compiler-error-c2133.md index b18736dbd1a..65a62e03346 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2133.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2133.md @@ -16,7 +16,7 @@ An unsized array is declared as a member of a class, structure, union, or enumer ## Example -The following sample generates C2133: +The following example generates C2133: ```cpp // C2133.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2134.md b/docs/error-messages/compiler-errors-1/compiler-error-c2134.md index 6ce299e1b1d..2e79ffe2bb8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2134.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2134.md @@ -15,7 +15,7 @@ A function declared as constexpr can only call other functions declared as const ## Example -The following sample generates C2134: +The following example generates C2134: ```cpp // C2134.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2135.md b/docs/error-messages/compiler-errors-1/compiler-error-c2135.md index 00bf1ae4c8e..eb6ff4869a7 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2135.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2135.md @@ -16,7 +16,7 @@ The address-of operator (`&`) cannot be applied to a bit field. ## Example -The following sample generates C2135: +The following example generates C2135: ```cpp // C2135.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2137.md b/docs/error-messages/compiler-errors-1/compiler-error-c2137.md index 5325f43e5a7..22ce7ae5778 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2137.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2137.md @@ -16,7 +16,7 @@ The empty character constant ( ' ' ) is not permitted. ## Example -The following sample generates C2137: +The following example generates C2137: ```cpp // C2137.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2139.md b/docs/error-messages/compiler-errors-1/compiler-error-c2139.md index 77019c0ed30..6df0479ed1e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2139.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2139.md @@ -17,7 +17,7 @@ For more information, see [Compiler Support for Type Traits](../../extensions/co ## Example -The following sample generates C2139. +The following example generates C2139. ```cpp // C2139.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2140.md b/docs/error-messages/compiler-errors-1/compiler-error-c2140.md index e32ff6b7727..72316738fd5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2140.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2140.md @@ -18,7 +18,7 @@ For more information, see [Compiler Support for Type Traits](../../extensions/co ## Example -The following sample generates C2140. +The following example generates C2140. ```cpp // C2140.cpp From 51f00f1bb67c243774fc21a95d90f3f09ebaa2ed Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 15 Jul 2025 22:57:14 +0800 Subject: [PATCH 1084/2255] Update metadata for error references in range [C2121, C2140] --- .../error-messages/compiler-errors-1/compiler-error-c2121.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2122.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2124.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2128.md | 4 ++-- .../error-messages/compiler-errors-1/compiler-error-c2129.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2130.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2131.md | 4 ++-- .../error-messages/compiler-errors-1/compiler-error-c2132.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2133.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2135.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2137.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2138.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2139.md | 2 +- .../error-messages/compiler-errors-1/compiler-error-c2140.md | 5 ++--- 14 files changed, 27 insertions(+), 38 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2121.md b/docs/error-messages/compiler-errors-1/compiler-error-c2121.md index cd01d8c7187..3c2b4770564 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2121.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2121.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2121" title: "Compiler Error C2121" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2121" +ms.date: 11/04/2016 f1_keywords: ["C2121"] helpviewer_keywords: ["C2121"] -ms.assetid: e04f32da-3736-4df3-8a1c-d687afcecf5c --- # Compiler Error C2121 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2122.md b/docs/error-messages/compiler-errors-1/compiler-error-c2122.md index 10bb751e345..31ae2f699a5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2122.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2122.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2122" title: "Compiler Error C2122" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2122" +ms.date: 11/04/2016 f1_keywords: ["C2122"] helpviewer_keywords: ["C2122"] -ms.assetid: bc060002-cd38-481b-a144-65af035ce851 --- # Compiler Error C2122 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2124.md b/docs/error-messages/compiler-errors-1/compiler-error-c2124.md index a46e8a8c79d..e20cba89e6a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2124.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2124.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2124" title: "Compiler Error C2124" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2124" +ms.date: 11/04/2016 f1_keywords: ["C2124"] helpviewer_keywords: ["C2124"] -ms.assetid: 93392aaa-5582-4d68-8cc5-bd9c62a0ae7e --- # Compiler Error C2124 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2128.md b/docs/error-messages/compiler-errors-1/compiler-error-c2128.md index 276d6f4de7f..a2d21596f72 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2128.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2128.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Error C2128" title: "Compiler Error C2128" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2128" +ms.date: 11/04/2016 f1_keywords: ["C2128"] helpviewer_keywords: ["C2128"] --- diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2129.md b/docs/error-messages/compiler-errors-1/compiler-error-c2129.md index 30689baf018..161c15cfb96 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2129.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2129.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2129" title: "Compiler Error C2129" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2129" +ms.date: 11/04/2016 f1_keywords: ["C2129"] helpviewer_keywords: ["C2129"] -ms.assetid: 21a8223e-1d22-4baa-9ca1-922b7f751dd0 --- # Compiler Error C2129 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2130.md b/docs/error-messages/compiler-errors-1/compiler-error-c2130.md index 37e799f129f..5f1fd271618 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2130.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2130.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2130" title: "Compiler Error C2130" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2130" +ms.date: 11/04/2016 f1_keywords: ["C2130"] helpviewer_keywords: ["C2130"] -ms.assetid: c6fd5a7e-8f28-4f67-99d1-95a13b0dff90 --- # Compiler Error C2130 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2131.md b/docs/error-messages/compiler-errors-1/compiler-error-c2131.md index 948814f5e2d..32855ce4313 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2131.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2131.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Error C2131" title: "Compiler Error C2131" -ms.date: "02/28/2019" +description: "Learn more about: Compiler Error C2131" +ms.date: 02/28/2019 f1_keywords: ["C2131"] helpviewer_keywords: ["C2131"] --- diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2132.md b/docs/error-messages/compiler-errors-1/compiler-error-c2132.md index c06820f9c13..0bf9a330741 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2132.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2132.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2132" title: "Compiler Error C2132" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2132" +ms.date: 11/04/2016 f1_keywords: ["C2132"] helpviewer_keywords: ["C2132"] -ms.assetid: 32902472-49d1-4513-888f-b52d336839d5 --- # Compiler Error C2132 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2133.md b/docs/error-messages/compiler-errors-1/compiler-error-c2133.md index 65a62e03346..fbeed35e5b4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2133.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2133.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2133" title: "Compiler Error C2133" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2133" +ms.date: 11/04/2016 f1_keywords: ["C2133"] helpviewer_keywords: ["C2133"] -ms.assetid: 8942f9e8-9818-468f-97db-09dbd124fcae --- # Compiler Error C2133 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2135.md b/docs/error-messages/compiler-errors-1/compiler-error-c2135.md index eb6ff4869a7..4af1d4f1b40 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2135.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2135.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2135" title: "Compiler Error C2135" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2135" +ms.date: 11/04/2016 f1_keywords: ["C2135"] helpviewer_keywords: ["C2135"] -ms.assetid: aa360d22-4f79-4de1-b384-93cadd10975f --- # Compiler Error C2135 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2137.md b/docs/error-messages/compiler-errors-1/compiler-error-c2137.md index 22ce7ae5778..283c3c3777a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2137.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2137.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2137" title: "Compiler Error C2137" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2137" +ms.date: 11/04/2016 f1_keywords: ["C2137"] helpviewer_keywords: ["C2137"] -ms.assetid: 984687ee-7766-4f6b-ae15-0c9a010e2366 --- # Compiler Error C2137 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2138.md b/docs/error-messages/compiler-errors-1/compiler-error-c2138.md index 71e8e331da1..3b597d22ad4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2138.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2138.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2138" title: "Compiler Error C2138" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2138" +ms.date: 11/04/2016 f1_keywords: ["C2138"] helpviewer_keywords: ["C2138"] -ms.assetid: 59fd1a58-3605-45dd-b9c1-0981e8aab26d --- # Compiler Error C2138 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2139.md b/docs/error-messages/compiler-errors-1/compiler-error-c2139.md index 6df0479ed1e..3f09eaac25a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2139.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2139.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler Error C2139" title: "Compiler Error C2139" +description: "Learn more about: Compiler Error C2139" ms.date: 05/03/2021 f1_keywords: ["C2139"] helpviewer_keywords: ["C2139"] diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2140.md b/docs/error-messages/compiler-errors-1/compiler-error-c2140.md index 72316738fd5..5d5a0648071 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2140.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2140.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2140" title: "Compiler Error C2140" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2140" +ms.date: 11/04/2016 f1_keywords: ["C2140"] helpviewer_keywords: ["C2140"] -ms.assetid: d44a0500-002c-4632-9e5e-c71c3a473ec4 --- # Compiler Error C2140 From a4dacbd473f7fa5d0b748f341276f7815e1a3473 Mon Sep 17 00:00:00 2001 From: David Justo Date: Tue, 15 Jul 2025 15:34:04 -0700 Subject: [PATCH 1085/2255] alphabetize list --- docs/sanitizers/asan-runtime.md | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/docs/sanitizers/asan-runtime.md b/docs/sanitizers/asan-runtime.md index eefff67b8e0..52fac2efa2a 100644 --- a/docs/sanitizers/asan-runtime.md +++ b/docs/sanitizers/asan-runtime.md @@ -140,13 +140,9 @@ For more information, see the [Differences with Clang 12.0](asan.md#differences) ### MSVC-specific AddressSanitizer runtime options -- `windows_hook_legacy_allocators` - Boolean, set to `false` to disable interception of [`GlobalAlloc`](/windows/win32/api/winbase/nf-winbase-globalalloc) and [`LocalAlloc`](/windows/win32/api/winbase/nf-winbase-localalloc) allocators. +- [`continue_on_error`](asan-continue-on-error.md) Boolean, set to `false` by default. When set to `true`, it allows the program to continue executing after a memory violation is reported, allowing you to collect multiple error reports. + - > [!NOTE] - > The option `windows_hook_legacy_allocators` wasn't available in the public llvm-project runtime when this article was written. The option may eventually be contributed back to the public project; however, it's dependent on code review and community acceptance. - > - > The option `windows_hook_rtl_allocators`, previously an opt-in feature while AddressSanitizer was experimental, is now enabled by default. In versions before Visual Studio 2022 version 17.4.6, the default option value is `false`. In Visual Studio 2022 version 17.4.6 and later versions, the option `windows_hook_rtl_allocators` defaults to `true`. - `iat_overwrite` String, set to `"error"` by default. Other possible values are `"protect"` and `"ignore"`. Some modules may overwrite the [`import address table`](/windows/win32/debug/pe-format#import-address-table) of other modules to customize implementations of certain functions. For example, drivers commonly provide custom implementations for specific hardware. The `iat_overwrite` option manages the AddressSanitizer runtime's protection against overwrites for specific [`memoryapi.h`](/windows/win32/api/memoryapi/) functions. The runtime currently tracks the [`VirtualAlloc`](/windows/win32/api/memoryapi/nf-memoryapi-virtualalloc), [`VirtualProtect`](/windows/win32/api/memoryapi/nf-memoryapi-virtualprotect), and [`VirtualQuery`](/windows/win32/api/memoryapi/nf-memoryapi-virtualquery) functions for protection. This option is available in Visual Studio 2022 version 17.5 Preview 1 and later versions. The following `iat_overwrite` values control how the runtime reacts when protected functions are overwritten: @@ -160,7 +156,14 @@ Boolean (false by default), set to `true` to enable the process to terminate wit >[!NOTE] >When abort_on_error value is set to true, on Windows the program terminates with an exit(3). In order to not change current behavior we decided to introduce this new option instead. If both abort_on_error and windows_fast_fail_on_error are true, the program will exit with the __fastfail. -- [`continue_on_error`](asan-continue-on-error.md) Boolean, set to `false` by default. When set to `true`, it allows the program to continue executing after a memory violation is reported, allowing you to collect multiple error reports. +- `windows_hook_legacy_allocators` + Boolean, set to `false` to disable interception of [`GlobalAlloc`](/windows/win32/api/winbase/nf-winbase-globalalloc) and [`LocalAlloc`](/windows/win32/api/winbase/nf-winbase-localalloc) allocators. + + > [!NOTE] + > The option `windows_hook_legacy_allocators` wasn't available in the public llvm-project runtime when this article was written. The option may eventually be contributed back to the public project; however, it's dependent on code review and community acceptance. + > + > The option `windows_hook_rtl_allocators`, previously an opt-in feature while AddressSanitizer was experimental, is now enabled by default. In versions before Visual Studio 2022 version 17.4.6, the default option value is `false`. In Visual Studio 2022 version 17.4.6 and later versions, the option `windows_hook_rtl_allocators` defaults to `true`. + ## AddressSanitizer list of intercepted functions (Windows) From e1793134bbd30e3629a3033d3ac17ddb9e946cf4 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 15 Jul 2025 16:25:01 -0700 Subject: [PATCH 1086/2255] edit pass --- .../tutorials/build-insights-template-view.md | 94 +++++++++---------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/docs/build-insights/tutorials/build-insights-template-view.md b/docs/build-insights/tutorials/build-insights-template-view.md index 3177e3af3df..f43f2eecf62 100644 --- a/docs/build-insights/tutorials/build-insights-template-view.md +++ b/docs/build-insights/tutorials/build-insights-template-view.md @@ -8,31 +8,31 @@ ms.topic: troubleshooting-general # Troubleshoot template instantiation impact on build time -Use Build Insights **Templates** view to analyze the impact of template instantiation on C++ build time. This feature is especially useful for projects that make heavy use of templates, such as those using template metaprogramming or large generic libraries. +Use the Build Insights **Templates** view to see how template instantiation affects C++ build time. It's especially helpful for projects that use lots of templates, like those with template metaprogramming or large generic libraries. -**Templates** view will seem familiar to users of Build Insight's [Functions view](build-insights-function-view.md) due to similar UI and workflow. +The **Templates** view works like the Build Insights [Functions view](build-insights-function-view.md). ## Prerequisites - Visual Studio 2022 version 17.10 or later. -- The **C++ Build Insights** component must be installed. It's installed as part of either the Desktop development with C++ workload or the Game development with C++ workload. You can ensure that it's installed by following these steps: +- The **C++ Build Insights** component must be installed. It's included in either the Desktop development with C++ workload or the Game development with C++ workload. To check if it's installed, follow these steps: 1. Open the Visual Studio Installer. - 1. Choose to modify your Visual Studio installation. - 1. Under the **Individual components** tab, search for and then select **C++ Build Insights**, then select **Modify** to install the component. - :::image type="complex" source="./media/installer-build-insights.png" alt-text="Screenshot of the Visual Studio Installer":::The search box contains C++ build insights. The item C++ Build Insights is visible and selected.":::image-end::: + 1. Select **Modify** to change your Visual Studio installation. + 1. On the **Individual components** tab, search for and select **C++ Build Insights**, then select **Close** to finish installing the component. + :::image type="content" source="./media/installer-build-insights.png" alt-text="Screenshot of the Visual Studio Installer. The search box contains C++ Build Insights. The item C++ Build Insights is visible and selected."::: ## Overview -Build Insights, integrated into Visual Studio, helps you optimize your build times--especially for large projects like AAA games. Build Insights provides analytics such as **Templates** view, which displays the time it takes to instantiate each template and shows which template instantiations add the most to your build time. +Build Insights, integrated into Visual Studio, helps you optimize your build times--especially for large projects like AAA games. Build Insights provides analytics such as the **Templates** view, which shows the time it takes to instantiate each template and which template instantiations add the most to your build time. -In general, C++ template instantiation happens quickly. In exceptional cases, some template instantiations can noticeably slow down your builds. +In general, C++ template instantiation happens quickly. In rare cases, some template instantiations can noticeably slow down your build. -In this article, follow along to create a project that demonstrates template instantiation impact on build time, run Build Insights to analyze that impact, and use those insights to make the build faster. +In this article, you create a project that shows how template instantiation affects build time, run Build Insights to analyze the impact, and use those insights to make the build faster. ## Create a test project -1. Open Visual Studio and create a new **C++ Console App** project and name it `TemplateAnalysis`. -1. Create a header file called `Templates.h` and replace its contents with the following code: +1. Open Visual Studio and create a new **C++ Console App** project. Name it `TemplateAnalysis`. +1. Create a header file named `Templates.h`, then replace its contents with the following code: ```cpp #pragma once @@ -63,7 +63,7 @@ In this article, follow along to create a project that demonstrates template ins } ``` -1. Create a source file called `LargeValue.cpp` and replace its contents with the following code: +1. Create a source file named `LargeValue.cpp`, then replace its contents with the following code: ```cpp #include "Templates.h" @@ -96,12 +96,12 @@ In this article, follow along to create a project that demonstrates template ins ## Enable build time data collection -Template instantiation time collection is off by default to minimize build overhead. To enable it: +Template instantiation time collection is off by default to minimize build overhead. To turn it on: 1. In Visual Studio, go to **Tools** > **Options**. 1. In the **Options** dialog, expand **Build Insights** in the left navigation. 1. Select **Collect Template Instantiation**. -1. You can also choose where to save the report by selecting **Store Build Insights reports in this directory** and specifying a directory. By default, it's saved in the folder pointed to by the Windows `TEMP` environment variable. +1. To choose where to save the report, select **Store Build Insights reports in this directory** and enter a directory. By default, it's saved in the folder pointed to by the Windows `TEMP` environment variable. 1. Select **OK**. :::image type="content" source="./media/tools-options-build-insights.png" alt-text="Screenshot of the project property pages dialog. The settings are open to Build Insights > Trace Collection. The Collect Template Instantiation checkbox is selected."::: @@ -111,45 +111,45 @@ Template instantiation time collection is off by default to minimize build overh ## Run Build Insights to get template instantiation data -From the main menu, select **Build** > **Run Build Insights on Selection** > **Rebuild**. You can also right-click a project in the solution explorer and choose **Run Build Insights** > **Rebuild**. Choose **Rebuild** instead of **Build** to measure the build time for the entire project. +From the main menu, select **Build** > **Run Build Insights on Selection** > **Rebuild**. You can also right-click a project in Solution Explorer and select **Run Build Insights** > **Rebuild**. Choose **Rebuild** instead of **Build** to measure the build time for the entire project. :::image type="content" source="./media/build-insights-rebuild-project.png" alt-text="Screenshot of the main menu with Run Build Insights on Selection > Rebuild selected."::: -When the build finishes, an Event Trace Log (ETL) file opens. The filename is based on the collection time. +When the build finishes, an Event Trace Log (ETL) file opens. The file name is based on the collection time. ## Use Templates view to optimize build time The **Templates** view lists the template instantiations that contributed significantly to build time. The columns provide information about: -- **Time [sec, %]** shows how long it took to instantiate each template in [wall clock responsibility time (WCTR)](https://devblogs.microsoft.com/cppblog/faster-cpp-builds-simplified-a-new-metric-for-time/#:~:text=Today%2C%20we%E2%80%99d%20like%20to%20teach%20you%20about%20a,your%20build%2C%20even%20in%20the%20presence%20of%20parallelism). This metric distributes the wall clock time among template instantiations based on their use of parallel compiler threads. -- **Specialization Name** shows each template instantiation, including the template arguments used. This helps you identify which template specializations are most expensive. -- **Translation Unit** shows the source files where each template instantiation happens. Multiple files can cause the same template instantiation if they include the same header with the template definition. -- **Instantiation File Name** shows where the template is defined that is being instantiated. +- **Time [sec, %]** shows how long it takes to instantiate each template in [wall clock responsibility time (WCTR)](https://devblogs.microsoft.com/cppblog/faster-cpp-builds-simplified-a-new-metric-for-time/#:~:text=Today%2C%20we%E2%80%99d%20like%20to%20teach%20you%20about%20a,your%20build%2C%20even%20in%20the%20presence%20of%20parallelism). This metric distributes the wall clock time among template instantiations based on their use of parallel compiler threads. +- **Specialization Name** shows each template instantiation, including the template arguments used. This helps you find which template specializations are most expensive. +- **Translation Unit** shows the source files where each template instantiation happens. Different files can cause the same template instantiation if they include the same header with the template definition. +- **Instantiation File Name** shows where the template is defined. :::image type="complex" source="./media/templates-view-before-fix.png" alt-text="Screenshot of the Build Insights Templates view showing expensive template instantiations."::: -The Templates view shows two template instantiations of struct S3 taking most (79.448%) of the build time. The Translation Unit column shows that both LargeValue.cpp and SmallValue.cpp are affected. The build time is 4.066 seconds. +The Templates view shows two template instantiations of struct S3 taking most (79.448 percent) of the build time. The Translation Unit column shows that both LargeValue.cpp and SmallValue.cpp are affected. The build time is 4.066 seconds. :::image-end::: - Sort by **Time** to find the templates that take the longest to instantiate. -- Expand a template to see its various instantiations and where they happened. +- Expand a template to see its instantiations and where they happened. - Use the search box to focus on specific templates. ### Understanding Templates view results When interpreting Templates view results, keep this in mind: -- **Empty view**: If nothing shows up in the **Templates** view, it means template instantiations don't dominate your build time. This is good news because your templates aren't a build bottleneck. -- **Duplicate instantiations**: If the same template instantiation appears multiple times across different translation units, that indicates that multiple source files are causing the same expensive instantiation. This is often the biggest optimization opportunity. -- **Threshold filtering**: The view only shows instantiations whose contribution exceeds a certain threshold to avoid noise from trivial instantiations. -- **Time aggregation**: The time shown represents the total time spent on that specific template instantiation, including any nested instantiations. +- **Empty view**: If nothing shows up in the **Templates** view, template instantiations don't dominate your build time. That's good news because your templates aren't a build bottleneck. +- **Duplicate instantiations**: If the same template instantiation appears multiple times across different translation units, different source files are causing the same expensive instantiation. This is often the biggest optimization opportunity. +- **Threshold filtering**: The view only shows instantiations whose contribution exceeds a certain threshold, so you can focus on the most impactful ones and avoid noise from trivial instantiations. +- **Time aggregation**: The time shown is the total time spent on that specific template instantiation, including any nested instantiations. ## Improve build time by optimizing template instantiations -In this example, we can see that two template instantiations of `S3` are taking 79% of the build time. The **Translation Unit** column shows that both `SmallValue.cpp` and `LargeValue.cpp` are causing this template instantiation. +In this example, two template instantiations of `S3` take 79 percent of the build time. The **Translation Unit** column shows that both `SmallValue.cpp` and `LargeValue.cpp` cause this template instantiation. -Since the **Instantiation File Name** and the **Specialization Name** are the same for both entries, we infer that there's one expensive template instantiation affecting both of our source files. This explains why the time for each of the two template instantiations are roughly equal. Including `Templates.h` in both source files causes one template instantiation to add significant time to the build. +Because the **Instantiation File Name** and the **Specialization Name** are the same for both entries, there's one expensive template instantiation that affects both source files. That's why the time for each of the two template instantiations is roughly equal. Including `Templates.h` in both source files causes one template instantiation to add significant time to the build. -From the **Specialization Name** column, we can see that the expensive instantiation is `S3>`, which is instantiated in this code in `Templates.h`: +From the **Specialization Name** column, the expensive instantiation is `S3>`, which is instantiated in this code in `Templates.h`: ```cpp inline size_t LargeValue() @@ -158,19 +158,19 @@ inline size_t LargeValue() }; ``` -There are three main ways to decrease the cost of template instantiations. +Here are three main ways to decrease the cost of template instantiations. ### Remove unused templates -See if the expensive template is being used. If it's not, the easiest solution is to remove the function or template. In the example, `LargeValue()` is being used in `LargeValue.cpp`, so we can't remove it. +Check if the expensive template is used. If it isn't, the easiest solution is to remove the function or template. In the example, `LargeValue()` is used in `LargeValue.cpp`, so you can't remove it. -You can also consider removing include directives that bring in unnecessary template instantiations. It's easy to forget to remove header files when you're no longer using them, and unused includes can cause significant impact on build time. +Consider removing include directives that bring in unnecessary template instantiations. It's easy to forget to remove header files when you aren't using them, and unused includes can significantly affect build time. ### Move template instantiations to source files -In this example, we can rely on the third approach: move the definition that causes the expensive template instantiation to a source file. +In this example, rely on the third approach: move the definition that causes the expensive template instantiation to a source file. -Since `LargeValue.cpp` is the only source file that calls `LargeValue()`, we can move the definition to `LargeValue.cpp`. This prevents the template instantiation from happening in every translation unit that includes `Templates.h`. Remove the current definition of `LargeValue()` from `Templates.h` and replace it with a declaration: +Because `LargeValue.cpp` is the only source file that calls `LargeValue()`, move the definition to `LargeValue.cpp`. This change prevents the template instantiation from happening in every translation unit that includes `Templates.h`. Remove the current definition of `LargeValue()` from `Templates.h` and replace it with a declaration: ```cpp size_t LargeValue(); @@ -185,43 +185,43 @@ size_t LargeValue() } ``` -Rebuild the project and run Build Insights again from the main menu: select **Build** > **Run Build Insights on Selection** > **Rebuild**. +Rebuild the project and run Build Insights again from the main menu. Select **Build** > **Run Build Insights on Selection** > **Rebuild**. -The build time has decreased. While the template instantiation of `S3` is still contributing to the build time, by only including necessary template instantiations the build time is nearly half what it was before. The count of `S3` instantiations is now 1 instead of 2. +The build time decreases. While the template instantiation of `S3` still contributes to the build time, including only necessary template instantiations cuts the build time nearly in half. The count of `S3` instantiations is now one instead of two. -:::image type="complex" source="./media/templates-view-after-fix.png" alt-text="Screenshot of the Build Insights Templates view after optimization showing reduced template instantiation time."::: +:::image type="complex" source="./media/templates-view-after-fix.png" alt-text="Screenshot of the Build Insights Templates view after optimization. The view shows reduced template instantiation time."::: The Templates view now shows only one instantiation of S3 instead of two, and the total build time is significantly less at 3.152 seconds. :::image-end::: -This technique scales well to larger projects. If multiple files included `Templates.h`, each of those files would have added the instantiation time of `LargeValue()` to the total build time. By moving the definition of `LargeValue()` to a dedicated source file, we minimize our build time. +This technique works well for larger projects. If multiple files include `Templates.h`, each file adds the instantiation time of `LargeValue()` to the total build time. By moving the definition of `LargeValue()` to a dedicated source file, you minimize build time. ### Optimize the template implementation -Some other optimization techniques include: +Other optimization techniques include: - Use simpler template patterns -- Use `if constexpr` instead of Substitution Failure Is Not An Error (SFINAE) where possible +- Use `if constexpr` instead of Substitution Failure Is Not An Error (SFINAE) when possible - Avoid recursive template instantiation patterns that lead to exponential growth -For information about more advanced template optimization techniques, see [Build Throughput Series: More Efficient Template Metaprogramming](https://devblogs.microsoft.com/cppblog/build-throughput-series-more-efficient-template-metaprogramming/) which provides detailed examples of reducing template instantiation overhead. +For more advanced template optimization techniques, see [Build Throughput Series: More Efficient Template Metaprogramming](https://devblogs.microsoft.com/cppblog/build-throughput-series-more-efficient-template-metaprogramming/), which provides detailed examples of reducing template instantiation overhead. ## Tips - Use **File** > **Save As** to save the ETL file to a more permanent location to keep a record of the build time information. You can then compare it to future builds to see how your changes are improving things. - If you close the Build Insights window, reopen it by finding the `.etl` file either where you specified it should be saved, or in your temporary folder. The `TEMP` Windows environment variable provides the path of your temporary files folder. -- Drag columns to change the order of the columns. For instance, you may prefer moving the **Wall Time Responsibility** column to be the first column. You can add or hide columns by right-clicking on the column header and selecting or deselecting the columns you want. -- The **Templates** view provides a filter box to find a specific template instantiation. It does partial matches on the name you provide. +- Drag columns to change the order of the columns. For example, you might want to move the **Wall Time Responsibility** column to the first column. You can add or hide columns by right-clicking the column header and selecting or deselecting the columns you want. +- The **Templates** view has a filter box to help you find a specific template instantiation. It does partial matches on the name you provide. ## Troubleshooting -**Templates view is empty**: This could mean: +**Templates view is empty**: This can mean: - Your build time isn't dominated by template instantiations. - Template data collection isn't enabled. To turn it on, see [Enable build time data collection](#enable-build-time-data-collection). -- Do a rebuild instead of a build. The Build Insights window doesn't appear if nothing builds, which may be the case if no files changed since the last build. -- Ensure you're using Visual Studio 2022 17.10 or later and that the C++ Build Insights component is installed. +- Do a rebuild instead of a build. The Build Insights window doesn't appear if nothing builds, which can be the case if no files changed since the last build. +- Make sure you're using Visual Studio 2022 17.10 or later, and that the C++ Build Insights component is installed. -**Build is much slower with Templates view enabled:** This is expected due to the extra data collection. Turn off template instantiation collection when not needed. For more information, see [Enable build time data collection](#enable-build-time-data-collection). +**Build is much slower with Templates view enabled:** This is expected because of the extra data collection. Turn off template instantiation collection when you don't need it. For more information, see [Enable build time data collection](#enable-build-time-data-collection). ## See also From cc6cfb591e0741e9bdd8e6edad5a6ee4fa5f41ce Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 16 Jul 2025 17:50:29 +0800 Subject: [PATCH 1087/2255] Add missing `#endif` in `_{a,t,w}cmdln` reference --- docs/c-runtime-library/acmdln-tcmdln-wcmdln.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/c-runtime-library/acmdln-tcmdln-wcmdln.md b/docs/c-runtime-library/acmdln-tcmdln-wcmdln.md index 4d60eaa7afd..2e17d1fe582 100644 --- a/docs/c-runtime-library/acmdln-tcmdln-wcmdln.md +++ b/docs/c-runtime-library/acmdln-tcmdln-wcmdln.md @@ -24,6 +24,7 @@ wchar_t * _wcmdln; #define _tcmdln _wcmdln #else #define _tcmdln _acmdln +#endif ``` ## Remarks From 74724236dd81d0a00c491af1525bc4ca8f8fac92 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 16 Jul 2025 17:51:10 +0800 Subject: [PATCH 1088/2255] Remove unneeded `./` link prefix in `_{a,t,w}cmdln` reference --- docs/c-runtime-library/acmdln-tcmdln-wcmdln.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/c-runtime-library/acmdln-tcmdln-wcmdln.md b/docs/c-runtime-library/acmdln-tcmdln-wcmdln.md index 2e17d1fe582..1953dbdc2fa 100644 --- a/docs/c-runtime-library/acmdln-tcmdln-wcmdln.md +++ b/docs/c-runtime-library/acmdln-tcmdln-wcmdln.md @@ -33,4 +33,4 @@ These CRT internal variables store the complete command line. They're exposed in ## See also -[Global variables](./global-variables.md) +[Global variables](global-variables.md) From 9eb48176d422137fcec3ff230bfce494a085397a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 16 Jul 2025 17:52:13 +0800 Subject: [PATCH 1089/2255] Update metadata in `_{a,t,w}cmdln` reference --- docs/c-runtime-library/acmdln-tcmdln-wcmdln.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/c-runtime-library/acmdln-tcmdln-wcmdln.md b/docs/c-runtime-library/acmdln-tcmdln-wcmdln.md index 1953dbdc2fa..45d1630a097 100644 --- a/docs/c-runtime-library/acmdln-tcmdln-wcmdln.md +++ b/docs/c-runtime-library/acmdln-tcmdln-wcmdln.md @@ -1,14 +1,13 @@ --- -description: "Learn more about: _acmdln, _tcmdln, _wcmdln" title: "_acmdln, _tcmdln, _wcmdln" -ms.date: "11/04/2016" +description: "Learn more about: _acmdln, _tcmdln, _wcmdln" +ms.date: 11/04/2016 api_name: ["_wcmdln", "_acmdln"] api_location: ["msvcrt.dll"] api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["_acmdln", "_wcmdln", "_tcmdln"] helpviewer_keywords: ["_wcmdln global variable", "wcmdln global variable", "_acmdln global variable", "_tcmdln global variable", "tcmdln global variable", "acmdln global variable"] -ms.assetid: 4fc0a6a0-3f93-420a-a19f-5276061ba539 --- # `_acmdln`, `_tcmdln`, `_wcmdln` From e67d86870fbf3e906b4a104597af398d0c810555 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 16 Jul 2025 18:17:09 +0800 Subject: [PATCH 1090/2255] Elide duplicate rows in tables --- docs/c-runtime-library/is-isw-routines.md | 1 - docs/c-runtime-library/routine-mappings.md | 1 - docs/mfc/reference/cmfctoolbar-class.md | 1 - docs/mfc/reference/cpane-class.md | 1 - 4 files changed, 4 deletions(-) diff --git a/docs/c-runtime-library/is-isw-routines.md b/docs/c-runtime-library/is-isw-routines.md index 749a96439bf..84eb09729b9 100644 --- a/docs/c-runtime-library/is-isw-routines.md +++ b/docs/c-runtime-library/is-isw-routines.md @@ -126,7 +126,6 @@ Character has property specified by the `desc` argument. For each valid value of | `_LOWER` | `iswlower(c)` | | `_ALPHA | _BLANK | _DIGIT | _PUNCT` | `iswprint(c)` | | `_PUNCT` | `iswpunct(c)` | -| `_BLANK` | `iswblank(c)` | | `_SPACE` | `iswspace(c)` | | `_UPPER` | `iswupper(c)` | | `_HEX` | `iswxdigit(c)` | diff --git a/docs/c-runtime-library/routine-mappings.md b/docs/c-runtime-library/routine-mappings.md index 087515c0cde..a19cd5a3567 100644 --- a/docs/c-runtime-library/routine-mappings.md +++ b/docs/c-runtime-library/routine-mappings.md @@ -127,7 +127,6 @@ For related information, see [Generic-text mappings in tchar.h](../text/generic- | `_tcsnicmp` | `_strnicmp` | `_mbsnbicmp` | `_wcsnicmp` | | `_tcsnicoll` | `_strnicoll` | `_mbsnbicoll` | `_wcsnicoll` | | `_tcsninc` | `_strninc` | `_mbsninc` | `_wcsninc` | -| `_tcsnccnt` | `_strncnt` | `_mbsnccnt` | `_wcsncnt` | | `_tcsnset` | `_strnset` | `_mbsnbset` | `_wcsnset` | | `_tcspbrk` | `strpbrk` | `_mbspbrk` | `wcspbrk` | | `_tcsspnp` | `_strspnp` | `_mbsspnp` | `_wcsspnp` | diff --git a/docs/mfc/reference/cmfctoolbar-class.md b/docs/mfc/reference/cmfctoolbar-class.md index e71eb71307c..9e9384ef1d5 100644 --- a/docs/mfc/reference/cmfctoolbar-class.md +++ b/docs/mfc/reference/cmfctoolbar-class.md @@ -47,7 +47,6 @@ class CMFCToolBar : public CMFCBaseToolBar |[`CMFCToolBar::CanBeClosed`](#canbeclosed)|Specifies whether a user can close the toolbar. (Overrides [`CBasePane::CanBeClosed`](../../mfc/reference/cbasepane-class.md#canbeclosed).)| |[`CMFCToolBar::CanBeRestored`](#canberestored)|Determines whether the system can restore a toolbar to its original state after customization.| |[`CMFCToolBar::CanFocus`](#canfocus)|Specifies whether the pane can receive focus. (Overrides [`CBasePane::CanFocus`](../../mfc/reference/cbasepane-class.md#canfocus).)| -|[`CMFCToolBar::CanHandleSiblings`](#canhandlesiblings)|Determines whether the toolbar and its sibling are positioned on the same pane.| |[`CMFCToolBar::CommandToIndex`](#commandtoindex)|Returns the index of the button in the toolbar with a specified command ID.| |[`CMFCToolBar::Create`](#create)|Creates a `CMFCToolBar` object.| |[`CMFCToolBar::CreateEx`](#createex)|Creates a `CMFCToolBar` object that uses additional style options, such as large icons.| diff --git a/docs/mfc/reference/cpane-class.md b/docs/mfc/reference/cpane-class.md index 9611f4835af..6e1a4609bcf 100644 --- a/docs/mfc/reference/cpane-class.md +++ b/docs/mfc/reference/cpane-class.md @@ -75,7 +75,6 @@ class CPane : public CBasePane |[CPane::OnPressCloseButton](#onpressclosebutton)|Called by the framework when the user chooses the Close button on the caption for the pane.| |`CPane::OnProcessDblClk`|Used internally.| |[CPane::OnShowControlBarMenu](#onshowcontrolbarmenu)|Called by the framework when a special pane menu is about to be displayed.| -|[CPane::OnShowControlBarMenu](#onshowcontrolbarmenu)|Called by the framework when a special pane menu is about to be displayed.| |`CPane::PrepareToDock`|Used internally.| |[CPane::RecalcLayout](#recalclayout)|Recalculates layout information for the pane. (Overrides [CBasePane::RecalcLayout](../../mfc/reference/cbasepane-class.md#recalclayout).)| |[CPane::SaveState](#savestate)|Saves the state of the pane to the registry. (Overrides [CBasePane::SaveState](../../mfc/reference/cbasepane-class.md#savestate).)| From f4cab0c1a6e6f5029b6fdb6baecb2e54a47de31e Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 16 Jul 2025 18:18:53 +0800 Subject: [PATCH 1091/2255] Update metadata in 2 topics --- docs/c-runtime-library/routine-mappings.md | 4 ++-- docs/mfc/reference/cpane-class.md | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/docs/c-runtime-library/routine-mappings.md b/docs/c-runtime-library/routine-mappings.md index a19cd5a3567..8c75157b5c5 100644 --- a/docs/c-runtime-library/routine-mappings.md +++ b/docs/c-runtime-library/routine-mappings.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Microsoft specific generic-text functions and the CRT functions they map to." title: "Generic-text function mappings" -ms.date: "11/04/2016" +description: "Learn more about: Microsoft specific generic-text functions and the CRT functions they map to." +ms.date: 11/04/2016 ms.author: twhitney api_name: ["foo",] f1_keywords: ["_cgetts", "_cgetts_s", "_cputts", "_fgettc", "_fgettchar", "_fgetts", "_fputtc", "_fputtchar", "_fputts", "_ftscanf", "_ftscanf_s", "_gettc", "_gettch", "_gettchar", "_gettche", "_getts", "_getts_s", "_istalnum", "_istalpha", "_istascii", "_istcntrl", "_istdigit", "_istgraph", "_istlead", "_istleadbyte", "_istlegal", "_istlower", "_istprint", "_istpunct", "_istspace", "_istupper", "_istxdigit", "_itot", "_itot_s", "_ltot", "_ltot_s", "_puttc", "_puttch", "_puttchar", "_putts", "_sctprintf", "_sntprintf", "_sntprintf_s", "_sntscanf", "_sntscanf_s", "_stprintf", "_stprintf_s", "_stscanf", "_stscanf_s", "_taccess", "_tasctime", "_tasctime_s", "_tccmp", "_tccpy", "_tccpy_s", "_tchdir", "_tclen", "_tchmod", "_tcprintf", "_tcprintf_s", "_tcreat", "_tcscanf", "_tcscanf_s", "_tcscat", "_tcscat_s", "_tcschr", "_tcsclen", "_tcsclen_s", "_tcscmp", "_tcscoll", "_tcscpy", "_tcscpy_s", "_tcscspn", "_tcsdec", "_tcsdup", "_tcserror", "_tcserror_s", "_tcsftime", "_tcsicmp", "_tcsicoll", "_tcsinc", "_tcslen", "_tcslwr", "_tcslwr_s", "_tcsnbcnt", "_tcsncat", "_tcsncat_s", "_tcsnccat", "_tcsnccmp", "_tcsnccmp_s", "_tcsnccoll", "_tcsncmp", "_tcsnccnt", "_tcsnccpy", "_tcsncicmp", "_tcsncicoll", "_tcsncpy", "_tcsncset", "_tcsnextc", "_tcsnicmp", "_tcsnicoll", "_tcsninc", "_tcsnccnt", "_tcsnset", "_tcspbrk", "_tcsspnp", "_tcsrchr", "_tcsrev", "_tcsset", "_tcsspn", "_tcsstr", "_tcstod", "_tcstoi64", "_tcstok", "_tcstok_s", "_tcstol", "_tcstoui64", "_tcstoul", "_tcsupr", "_tcsupr_s", "_tcsxfrm", "_tctime", "_tctime_s", "_tctime32", "_tctime32_s", "_tctime64", "_tctime64_s", "_texecl", "_texecle", "_texeclp", "_texeclpe", "_texecv", "_texecve", "_texecvp", "_texecvpe", "_tfdopen", "_tfindfirst", "_tfindnext", "_tfindnext32", "_tfindnext64", "_tfindnexti64", "_tfindnexti6432", "_tfindnext32i64", "_tfopen", "_tfopen_s", "_tfreopen", "_tfreopen_s", "_tfsopen", "_tfullpath", "_tgetcwd", "_tgetdcwd", "_tgetenv", "_tgetenv_s", "_tmain", "_tmakepath", "_tmakepath_s", "_tmkdir", "_tmktemp", "_tmktemp_s", "_topen", "_topen_s", "_totlower", "_totupper", "_tperror", "_tpopen", "_tprintf", "_tprintf_s", "_tputenv", "_tremove", "_trename", "_trmdir", "_tsearchenv", "_tsearchenv_s", "_tscanf", "_tscanf_s", "_tsetlocale", "_tsopen", "_tsopen_s", "_tspawnl", "_tspawnle", "_tspawnlp", "_tspawnlpe", "_tspawnv", "_tspawnve", "_tspawnvp", "_tspawnvpe", "_tsplitpath", "_tstat", "_tstat32", "_tstati32", "_tstat64", "_tstati64", "_tstof", "_tstoi", "_tstoi64", "_tstol", "_tstrdate", "_tstrdate_s", "_tstrtime", "_tstrtime_s", "_tsystem", "_ttempnam", "_ttmpnam", "_ttmpnam_s", "_ttoi", "_ttoi64", "_ttol", "_tunlink", "_tutime", "_tutime32", "_tutime64", "_tWinMain", "_ui64tot", "_ui64tot_s", "_ultot", "_ultot_s", "_ungettc", "_ungettch", "_vftprintf", "_vftprintf_s", "_vsctprintf", "_vsctprintf_s", "_vsntprintf", "_vsntprintf_s", "_vstprintf", "_vtprintf", "_vtprintf_s"] diff --git a/docs/mfc/reference/cpane-class.md b/docs/mfc/reference/cpane-class.md index 6e1a4609bcf..72daa26442a 100644 --- a/docs/mfc/reference/cpane-class.md +++ b/docs/mfc/reference/cpane-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: CPane Class" title: "CPane Class" -ms.date: "11/04/2016" +description: "Learn more about: CPane Class" +ms.date: 11/04/2016 f1_keywords: ["CPane", "AFXPANE/CPane", "AFXPANE/CPane::AdjustSizeImmediate", "AFXPANE/CPane::AllocElements", "AFXPANE/CPane::AllowShowOnPaneMenu", "AFXPANE/CPane::CalcAvailableSize", "AFXPANE/CPane::CalcInsideRect", "AFXPANE/CPane::CalcRecentDockedRect", "AFXPANE/CPane::CalcSize", "AFXPANE/CPane::CanBeDocked", "AFXPANE/CPane::CanBeTabbedDocument", "AFXPANE/CPane::ConvertToTabbedDocument", "AFXPANE/CPane::CopyState", "AFXPANE/CPane::Create", "AFXPANE/CPane::CreateDefaultMiniframe", "AFXPANE/CPane::CreateEx", "AFXPANE/CPane::DockByMouse", "AFXPANE/CPane::DockPane", "AFXPANE/CPane::DockPaneStandard", "AFXPANE/CPane::DockToFrameWindow", "AFXPANE/CPane::DoesAllowSiblingBars", "AFXPANE/CPane::FloatPane", "AFXPANE/CPane::GetAvailableExpandSize", "AFXPANE/CPane::GetAvailableStretchSize", "AFXPANE/CPane::GetBorders", "AFXPANE/CPane::GetClientHotSpot", "AFXPANE/CPane::GetDockSiteRow", "AFXPANE/CPane::GetExclusiveRowMode", "AFXPANE/CPane::GetHotSpot", "AFXPANE/CPane::GetMinSize", "AFXPANE/CPane::GetPaneName", "AFXPANE/CPane::GetVirtualRect", "AFXPANE/CPane::IsChangeState", "AFXPANE/CPane::IsDragMode", "AFXPANE/CPane::IsInFloatingMultiPaneFrameWnd", "AFXPANE/CPane::IsLeftOf", "AFXPANE/CPane::IsResizable", "AFXPANE/CPane::IsTabbed", "AFXPANE/CPane::LoadState", "AFXPANE/CPane::MoveByAlignment", "AFXPANE/CPane::MovePane", "AFXPANE/CPane::OnAfterChangeParent", "AFXPANE/CPane::OnBeforeChangeParent", "AFXPANE/CPane::OnPressCloseButton", "AFXPANE/CPane::OnShowControlBarMenu", "AFXPANE/CPane::RecalcLayout", "AFXPANE/CPane::SaveState", "AFXPANE/CPane::SetActiveInGroup", "AFXPANE/CPane::SetBorders", "AFXPANE/CPane::SetClientHotSpot", "AFXPANE/CPane::SetDockState", "AFXPANE/CPane::SetExclusiveRowMode", "AFXPANE/CPane::SetMiniFrameRTC", "AFXPANE/CPane::SetMinSize", "AFXPANE/CPane::SetVirtualRect", "AFXPANE/CPane::StretchPaneDeferWndPos", "AFXPANE/CPane::ToggleAutoHide", "AFXPANE/CPane::UndockPane", "AFXPANE/CPane::UpdateVirtualRect", "AFXPANE/CPane::OnAfterDock", "AFXPANE/CPane::OnAfterFloat", "AFXPANE/CPane::OnBeforeDock", "AFXPANE/CPane::OnBeforeFloat", "AFXPANE/CPane::m_bHandleMinSize", "AFXPANE/CPane::m_recentDockInfo"] helpviewer_keywords: ["CPane [MFC], AdjustSizeImmediate", "CPane [MFC], AllocElements", "CPane [MFC], AllowShowOnPaneMenu", "CPane [MFC], CalcAvailableSize", "CPane [MFC], CalcInsideRect", "CPane [MFC], CalcRecentDockedRect", "CPane [MFC], CalcSize", "CPane [MFC], CanBeDocked", "CPane [MFC], CanBeTabbedDocument", "CPane [MFC], ConvertToTabbedDocument", "CPane [MFC], CopyState", "CPane [MFC], Create", "CPane [MFC], CreateDefaultMiniframe", "CPane [MFC], CreateEx", "CPane [MFC], DockByMouse", "CPane [MFC], DockPane", "CPane [MFC], DockPaneStandard", "CPane [MFC], DockToFrameWindow", "CPane [MFC], DoesAllowSiblingBars", "CPane [MFC], FloatPane", "CPane [MFC], GetAvailableExpandSize", "CPane [MFC], GetAvailableStretchSize", "CPane [MFC], GetBorders", "CPane [MFC], GetClientHotSpot", "CPane [MFC], GetDockSiteRow", "CPane [MFC], GetExclusiveRowMode", "CPane [MFC], GetHotSpot", "CPane [MFC], GetMinSize", "CPane [MFC], GetPaneName", "CPane [MFC], GetVirtualRect", "CPane [MFC], IsChangeState", "CPane [MFC], IsDragMode", "CPane [MFC], IsInFloatingMultiPaneFrameWnd", "CPane [MFC], IsLeftOf", "CPane [MFC], IsResizable", "CPane [MFC], IsTabbed", "CPane [MFC], LoadState", "CPane [MFC], MoveByAlignment", "CPane [MFC], MovePane", "CPane [MFC], OnAfterChangeParent", "CPane [MFC], OnBeforeChangeParent", "CPane [MFC], OnPressCloseButton", "CPane [MFC], OnShowControlBarMenu", "CPane [MFC], OnShowControlBarMenu", "CPane [MFC], RecalcLayout", "CPane [MFC], SaveState", "CPane [MFC], SetActiveInGroup", "CPane [MFC], SetBorders", "CPane [MFC], SetClientHotSpot", "CPane [MFC], SetDockState", "CPane [MFC], SetExclusiveRowMode", "CPane [MFC], SetMiniFrameRTC", "CPane [MFC], SetMinSize", "CPane [MFC], SetVirtualRect", "CPane [MFC], StretchPaneDeferWndPos", "CPane [MFC], ToggleAutoHide", "CPane [MFC], UndockPane", "CPane [MFC], UpdateVirtualRect", "CPane [MFC], OnAfterDock", "CPane [MFC], OnAfterFloat", "CPane [MFC], OnBeforeDock", "CPane [MFC], OnBeforeFloat", "CPane [MFC], m_bHandleMinSize", "CPane [MFC], m_recentDockInfo"] -ms.assetid: 5c651a64-3c79-4d94-9676-45f6402a6bc5 --- # CPane Class From c7f5964231b944a325680f3d278f1c4f6acd206b Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 16 Jul 2025 18:45:50 +0800 Subject: [PATCH 1092/2255] Convert NMAKE errors and warnings list into a table --- .../nmake-errors-u1000-through-u4011.md | 78 ++++++++++--------- 1 file changed, 41 insertions(+), 37 deletions(-) diff --git a/docs/error-messages/tool-errors/nmake-errors-u1000-through-u4011.md b/docs/error-messages/tool-errors/nmake-errors-u1000-through-u4011.md index 6b68d4ece1f..3ec366c0144 100644 --- a/docs/error-messages/tool-errors/nmake-errors-u1000-through-u4011.md +++ b/docs/error-messages/tool-errors/nmake-errors-u1000-through-u4011.md @@ -13,46 +13,50 @@ This section is a reference to the errors and warnings generated by the NMAKE bu ## NMAKE fatal errors -[NMAKE fatal error U1000](nmake-fatal-error-u1000.md) \ -[NMAKE fatal error U1001](nmake-fatal-error-u1001.md) \ -[NMAKE fatal error U1007](nmake-fatal-error-u1007.md) \ -[NMAKE fatal error U1023](nmake-fatal-error-u1023.md) \ -[NMAKE fatal error U1033](nmake-fatal-error-u1033.md) \ -[NMAKE fatal error U1034](nmake-fatal-error-u1034.md) \ -[NMAKE fatal error U1035](nmake-fatal-error-u1035.md) \ -[NMAKE fatal error U1036](nmake-fatal-error-u1036.md) \ -[NMAKE fatal error U1045](nmake-fatal-error-u1045.md) \ -[NMAKE fatal error U1050](nmake-fatal-error-u1050.md) \ -[NMAKE fatal error U1051](nmake-fatal-error-u1051.md) \ -[NMAKE fatal error U1052](nmake-fatal-error-u1052.md) \ -[NMAKE fatal error U1055](nmake-fatal-error-u1055.md) \ -[NMAKE fatal error U1056](nmake-fatal-error-u1056.md) \ -[NMAKE fatal error U1059](nmake-fatal-error-u1059.md) \ -[NMAKE fatal error U1064](nmake-fatal-error-u1064.md) \ -[NMAKE fatal error U1065](nmake-fatal-error-u1065.md) \ -[NMAKE fatal error U1070](nmake-fatal-error-u1070.md) \ -[NMAKE fatal error U1071](nmake-fatal-error-u1071.md) \ -[NMAKE fatal error U1073](nmake-fatal-error-u1073.md) \ -[NMAKE fatal error U1076](nmake-fatal-error-u1076.md) \ -[NMAKE fatal error U1077](nmake-fatal-error-u1077.md) \ -[NMAKE fatal error U1078](nmake-fatal-error-u1078.md) \ -[NMAKE fatal error U1083](nmake-fatal-error-u1083.md) \ -[NMAKE fatal error U1086](nmake-fatal-error-u1086.md) \ -[NMAKE fatal error U1087](nmake-fatal-error-u1087.md) \ -[NMAKE fatal error U1088](nmake-fatal-error-u1088.md) \ -[NMAKE fatal error U1095](nmake-fatal-error-u1095.md) \ -[NMAKE fatal error U1097](nmake-fatal-error-u1097.md) \ -[NMAKE fatal error U1099](nmake-fatal-error-u1099.md) \ -[NMAKE fatal error U1100](nmake-fatal-error-u1100.md) +| Error | Message | +|--|--| +| [NMAKE fatal error U1000](nmake-fatal-error-u1000.md) | syntax error : ')' missing in macro invocation | +| [NMAKE fatal error U1001](nmake-fatal-error-u1001.md) | syntax error : illegal character 'character' in macro | +| [NMAKE fatal error U1007](nmake-fatal-error-u1007.md) | double quotation mark not allowed in name | +| [NMAKE fatal error U1023](nmake-fatal-error-u1023.md) | syntax error in expression | +| [NMAKE fatal error U1033](nmake-fatal-error-u1033.md) | syntax error : 'string' unexpected | +| [NMAKE fatal error U1034](nmake-fatal-error-u1034.md) | syntax error : separator missing | +| [NMAKE fatal error U1035](nmake-fatal-error-u1035.md) | syntax error : expected ':' or '=' separator | +| [NMAKE fatal error U1036](nmake-fatal-error-u1036.md) | syntax error : too many names to left of '=' | +| [NMAKE fatal error U1045](nmake-fatal-error-u1045.md) | spawn failed : *message* | +| [NMAKE fatal error U1050](nmake-fatal-error-u1050.md) | *message* | +| [NMAKE fatal error U1051](nmake-fatal-error-u1051.md) | out of memory | +| [NMAKE fatal error U1052](nmake-fatal-error-u1052.md) | file '*filename*' not found | +| [NMAKE fatal error U1055](nmake-fatal-error-u1055.md) | out of environment space | +| [NMAKE fatal error U1056](nmake-fatal-error-u1056.md) | cannot find command processor | +| [NMAKE fatal error U1059](nmake-fatal-error-u1059.md) | syntax error : '}' missing in dependent | +| [NMAKE fatal error U1064](nmake-fatal-error-u1064.md) | MAKEFILE not found and no target specified | +| [NMAKE fatal error U1065](nmake-fatal-error-u1065.md) | invalid option 'option' | +| [NMAKE fatal error U1070](nmake-fatal-error-u1070.md) | cycle in macro definition 'macroname' | +| [NMAKE fatal error U1071](nmake-fatal-error-u1071.md) | cycle in dependency tree for target 'targetname' | +| [NMAKE fatal error U1073](nmake-fatal-error-u1073.md) | don't know how to make 'targetname' | +| [NMAKE fatal error U1076](nmake-fatal-error-u1076.md) | name too long | +| [NMAKE fatal error U1077](nmake-fatal-error-u1077.md) | 'program' : return code 'value' | +| [NMAKE fatal error U1078](nmake-fatal-error-u1078.md) | constant overflow at 'expression' | +| [NMAKE fatal error U1083](nmake-fatal-error-u1083.md) | target macro 'target' expands to nothing | +| [NMAKE fatal error U1086](nmake-fatal-error-u1086.md) | inference rule cannot have dependents | +| [NMAKE fatal error U1087](nmake-fatal-error-u1087.md) | cannot have : and :: dependents for same target | +| [NMAKE fatal error U1088](nmake-fatal-error-u1088.md) | invalid separator '::' on inference rule | +| [NMAKE fatal error U1095](nmake-fatal-error-u1095.md) | expanded command line 'commandline' too long | +| [NMAKE fatal error U1097](nmake-fatal-error-u1097.md) | filename-parts syntax requires dependent | +| [NMAKE fatal error U1099](nmake-fatal-error-u1099.md) | stack overflow | +| [NMAKE fatal error U1100](nmake-fatal-error-u1100.md) | macro '*macro-name*' is illegal in the context of batch rule '*rule-name*' | ## NMAKE warnings -[NMAKE warning U4001](nmake-warning-u4001.md) \ -[NMAKE warning U4004](nmake-warning-u4004.md) \ -[NMAKE warning U4006](nmake-warning-u4006.md) \ -[NMAKE warning U4007](nmake-warning-u4007.md) \ -[NMAKE warning U4010](nmake-warning-u4010.md) \ -[NMAKE warning U4011](nmake-warning-u4011.md) +| Warning | Message | +|--|--| +| [NMAKE warning U4001](nmake-warning-u4001.md) | command file can be invoked only from command line | +| [NMAKE warning U4004](nmake-warning-u4004.md) | too many rules for target 'targetname' | +| [NMAKE warning U4006](nmake-warning-u4006.md) | special macro undefined : 'macroname' | +| [NMAKE warning U4007](nmake-warning-u4007.md) | filename 'filename' too long; truncating to 8.3 | +| [NMAKE warning U4010](nmake-warning-u4010.md) | 'target' : build failed; /K specified, continuing ... | +| [NMAKE warning U4011](nmake-warning-u4011.md) | 'target' : not all dependents available; target not built | ## See also From d4e04cc9e4b91703564cb88f0eae700385f5f2af Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 16 Jul 2025 18:47:34 +0800 Subject: [PATCH 1093/2255] Simplify superfluous relative links in "NMAKE errors and warnings (Uxxxx)" --- .../tool-errors/nmake-errors-u1000-through-u4011.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/tool-errors/nmake-errors-u1000-through-u4011.md b/docs/error-messages/tool-errors/nmake-errors-u1000-through-u4011.md index 3ec366c0144..2c65ef17c46 100644 --- a/docs/error-messages/tool-errors/nmake-errors-u1000-through-u4011.md +++ b/docs/error-messages/tool-errors/nmake-errors-u1000-through-u4011.md @@ -9,7 +9,7 @@ ms.assetid: 9dbe2e12-88ca-4df4-b935-17756112bb79 This section is a reference to the errors and warnings generated by the NMAKE build tool. NMAKE errors and warnings have the form U*xxxx*, where *xxxx* is a four-digit number. -[!INCLUDE[error-boilerplate](../../error-messages/includes/error-boilerplate.md)] +[!INCLUDE[error-boilerplate](../includes/error-boilerplate.md)] ## NMAKE fatal errors From 8623b1f6d5b355f50240ad7040a5ae9948b24c5f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 16 Jul 2025 18:48:02 +0800 Subject: [PATCH 1094/2255] Remove space before escape in "NMAKE errors and warnings (Uxxxx)" --- .../tool-errors/nmake-errors-u1000-through-u4011.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/tool-errors/nmake-errors-u1000-through-u4011.md b/docs/error-messages/tool-errors/nmake-errors-u1000-through-u4011.md index 2c65ef17c46..237546c7b6a 100644 --- a/docs/error-messages/tool-errors/nmake-errors-u1000-through-u4011.md +++ b/docs/error-messages/tool-errors/nmake-errors-u1000-through-u4011.md @@ -60,5 +60,5 @@ This section is a reference to the errors and warnings generated by the NMAKE bu ## See also -[C/C++ Compiler and build tools errors and warnings](../compiler-errors-1/c-cpp-build-errors.md) \ +[C/C++ Compiler and build tools errors and warnings](../compiler-errors-1/c-cpp-build-errors.md)\ [NMAKE reference](../../build/reference/nmake-reference.md) From 7c30d23b49d66084e29a654605a2046c360bc3e0 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 16 Jul 2025 18:48:42 +0800 Subject: [PATCH 1095/2255] Update metadata in "NMAKE errors and warnings (Uxxxx)" --- .../tool-errors/nmake-errors-u1000-through-u4011.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/error-messages/tool-errors/nmake-errors-u1000-through-u4011.md b/docs/error-messages/tool-errors/nmake-errors-u1000-through-u4011.md index 237546c7b6a..f0d916c427b 100644 --- a/docs/error-messages/tool-errors/nmake-errors-u1000-through-u4011.md +++ b/docs/error-messages/tool-errors/nmake-errors-u1000-through-u4011.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: NMAKE errors and warnings (Uxxxx)" title: "NMAKE errors and warnings" -ms.date: "04/16/2019" +description: "Learn more about: NMAKE errors and warnings (Uxxxx)" +ms.date: 04/16/2019 f1_keywords: ["nmake"] -ms.assetid: 9dbe2e12-88ca-4df4-b935-17756112bb79 --- # NMAKE errors and warnings (Uxxxx) From 3fe826fad144c9f1e268e66db3c8b13d97a0299e Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 16 Jul 2025 23:08:43 +0800 Subject: [PATCH 1096/2255] Add blockquotes for error messages in range [C2141, C2160] --- docs/error-messages/compiler-errors-1/compiler-error-c2141.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2142.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2143.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2145.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2146.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2147.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2148.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2149.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2151.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2152.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2153.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2154.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2155.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2156.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2157.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2158.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2159.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2160.md | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2141.md b/docs/error-messages/compiler-errors-1/compiler-error-c2141.md index 056b2983499..721879f36a4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2141.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2141.md @@ -8,7 +8,7 @@ ms.assetid: 10cf770f-0500-4220-ac90-a863b7ea5fe6 --- # Compiler Error C2141 -array size overflow +> array size overflow An array exceeds the 2GB limit. Reduce the size of the array. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2142.md b/docs/error-messages/compiler-errors-1/compiler-error-c2142.md index 1920a389631..b3430a69a20 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2142.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2142.md @@ -8,7 +8,7 @@ ms.assetid: d0dbe10e-0952-49a4-8b33-e82fb7558b19 --- # Compiler Error C2142 -function declarations differ, variable parameters specified only in one of them +> function declarations differ, variable parameters specified only in one of them One declaration of the function contains a variable parameter list. Another declaration does not. ANSI C ([/Za](../../build/reference/za-ze-disable-language-extensions.md)) only. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2143.md b/docs/error-messages/compiler-errors-1/compiler-error-c2143.md index 66f9011fb60..52cbbb59eab 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2143.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2143.md @@ -8,7 +8,7 @@ ms.assetid: 1d8d1456-e031-4965-9240-09a6e33ba81c --- # Compiler Error C2143 -syntax error : missing 'token1' before 'token2' +> syntax error : missing 'token1' before 'token2' The compiler expected a specific token (that is, a language element other than white space) and found another token instead. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2145.md b/docs/error-messages/compiler-errors-1/compiler-error-c2145.md index d38fac35d8b..87627cf85d6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2145.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2145.md @@ -8,7 +8,7 @@ ms.assetid: 158e5809-8adb-4195-8ca5-684501defbc8 --- # Compiler Error C2145 -syntax error : missing 'token' before identifier +> syntax error : missing 'token' before identifier The compiler expected `token` and found identifier instead. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2146.md b/docs/error-messages/compiler-errors-1/compiler-error-c2146.md index 083cfd7db76..184ceb8e382 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2146.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2146.md @@ -8,7 +8,7 @@ ms.assetid: 6bfb7de6-6723-4486-9350-c66ef88d7a64 --- # Compiler Error C2146 -syntax error : missing 'token' before identifier 'identifier' +> syntax error : missing 'token' before identifier 'identifier' The compiler expected `token` and found `identifier` instead. Possible causes: diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2147.md b/docs/error-messages/compiler-errors-1/compiler-error-c2147.md index 363bd1c2862..50cc42c1a1c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2147.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2147.md @@ -8,7 +8,7 @@ ms.assetid: d1adb3bf-7ece-4815-922c-ad7492fb6670 --- # Compiler Error C2147 -syntax error : 'identifier' is a new keyword +> syntax error : 'identifier' is a new keyword An identifier was used that is now a reserved keyword in the language. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2148.md b/docs/error-messages/compiler-errors-1/compiler-error-c2148.md index f2a12bc67bb..da2b94d3c16 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2148.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2148.md @@ -8,7 +8,7 @@ ms.assetid: e510c2c9-7b57-4ce8-be03-ba363e2cc5d9 --- # Compiler Error C2148 -total size of array must not exceed 0x7fffffff bytes +> total size of array must not exceed 0x7fffffff bytes An array exceeds the limit. Reduce the size of the array. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2149.md b/docs/error-messages/compiler-errors-1/compiler-error-c2149.md index 5eede2573b2..393f9959582 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2149.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2149.md @@ -8,7 +8,7 @@ ms.assetid: 7a106dab-d79f-41b9-85be-f36e86e4d2ab --- # Compiler Error C2149 -'identifier' : named bit field cannot have zero width +> 'identifier' : named bit field cannot have zero width Bit fields can have zero width only if unnamed. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2151.md b/docs/error-messages/compiler-errors-1/compiler-error-c2151.md index 9fffa41bf1f..52005946ac0 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2151.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2151.md @@ -8,6 +8,6 @@ ms.assetid: 7f8dd83a-1f41-46d8-8778-0d1f79ed36c9 --- # Compiler Error C2151 -more than one language attribute +> more than one language attribute A function has more than one keyword ( **`__cdecl`**, **`__stdcall`**, or **`__fastcall`**) specifying a calling convention. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2152.md b/docs/error-messages/compiler-errors-1/compiler-error-c2152.md index 40c3988ecfd..e6ac67fc6ca 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2152.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2152.md @@ -8,6 +8,6 @@ ms.assetid: a9ea2b0c-d55d-41c7-ba9f-dd75592ffc8a --- # Compiler Error C2152 -'identifier' : pointers to functions with different attributes +> 'identifier' : pointers to functions with different attributes A pointer to a function with one calling convention (**`__cdecl`**, **`__stdcall`**, or **`__fastcall`**) is assigned to a pointer to a function with another calling convention. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2153.md b/docs/error-messages/compiler-errors-1/compiler-error-c2153.md index 2090da157a4..561ea17239b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2153.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2153.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2153"] --- # Compiler Error C2153 -integer literals must have at least one digit +> integer literals must have at least one digit Hexadecimal and binary literals must contain at least one digit after the leading sequence (`0x`, `0X`, `0b`, or `0B`), otherwise the trailing character may be incorrectly interpreted as a suffix or literal operator. See [Integer literals](../../cpp/numeric-boolean-and-pointer-literals-cpp.md#integer-literals) for more information. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2154.md b/docs/error-messages/compiler-errors-1/compiler-error-c2154.md index a60157128dc..add7ed02692 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2154.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2154.md @@ -8,7 +8,7 @@ ms.assetid: 98d6b044-5a3a-43ad-95fa-9b916b22468a --- # Compiler Error C2154 -'type' : only enumeration type is allowed as an argument to compiler intrinsic type trait '__underlying_type' +> 'type' : only enumeration type is allowed as an argument to compiler intrinsic type trait '__underlying_type' You can only get the underlying type of an enumeration type. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2155.md b/docs/error-messages/compiler-errors-1/compiler-error-c2155.md index d65e37535c5..6b55e3c87d0 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2155.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2155.md @@ -8,6 +8,6 @@ ms.assetid: 54d408af-fc48-4121-9011-5e75c7072e01 --- # Compiler Error C2155 -'?' : invalid left operand, expected arithmetic or pointer type +> '?' : invalid left operand, expected arithmetic or pointer type An expression on the left hand side of `?` cannot be compared to zero. You must use an arithmetic or pointer expression that can be compared to zero. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2156.md b/docs/error-messages/compiler-errors-1/compiler-error-c2156.md index 3f26c7e32e0..d2ddab0f0db 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2156.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2156.md @@ -8,7 +8,7 @@ ms.assetid: 136f9c67-2c27-4f61-b7e6-ccd202eca697 --- # Compiler Error C2156 -pragma must be outside function +> pragma must be outside function A pragma that must be specified at a global level (outside a function body) is within a function. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2157.md b/docs/error-messages/compiler-errors-1/compiler-error-c2157.md index 5128e4a1b95..3f3fab5b9ae 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2157.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2157.md @@ -8,7 +8,7 @@ ms.assetid: babbca24-16dc-4b69-be14-a675029249c1 --- # Compiler Error C2157 -'function' : must be declared before use in pragma list +> 'function' : must be declared before use in pragma list The function name is not declared before being referenced in the list of functions for an [alloc_text](../../preprocessor/alloc-text.md) pragma. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2158.md b/docs/error-messages/compiler-errors-1/compiler-error-c2158.md index 9701f65a703..f3d214f0f1d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2158.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2158.md @@ -8,7 +8,7 @@ ms.assetid: 39028899-e95c-4809-8e65-6111118641ee --- # Compiler Error C2158 -'type' : #pragma make_public directive is currently supported for native non-template types only +> 'type' : #pragma make_public directive is currently supported for native non-template types only The [make_public](../../preprocessor/make-public.md) pragma can only be applied to a native, non-template type. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2159.md b/docs/error-messages/compiler-errors-1/compiler-error-c2159.md index 70073ebc69e..d3926b7dacc 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2159.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2159.md @@ -8,7 +8,7 @@ ms.assetid: 925a2cbd-43c9-45ee-a373-84004350b380 --- # Compiler Error C2159 -more than one storage class specified +> more than one storage class specified A declaration contains more than one storage class. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2160.md b/docs/error-messages/compiler-errors-1/compiler-error-c2160.md index 6353f84bba8..1fd6bab2d0f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2160.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2160.md @@ -8,7 +8,7 @@ ms.assetid: a1f694a7-fb16-4437-b7f5-a1af6da94bc5 --- # Compiler Error C2160 -'##' cannot occur at the beginning of a macro definition +> '##' cannot occur at the beginning of a macro definition A macro definition began with a token-pasting operator (##). From 06a01ad09b5fbf124bf9d33811a0cd83f35f0ccf Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 16 Jul 2025 23:12:56 +0800 Subject: [PATCH 1097/2255] Add "Remarks" and "Example" headings for error references in range [C2141, C2160] --- docs/error-messages/compiler-errors-1/compiler-error-c2141.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2142.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2143.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2144.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2145.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2146.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2147.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2148.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2149.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2150.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2151.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2152.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2153.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2154.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2155.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2156.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2157.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2158.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2159.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2160.md | 4 ++++ 20 files changed, 58 insertions(+) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2141.md b/docs/error-messages/compiler-errors-1/compiler-error-c2141.md index 721879f36a4..52e9dd2448e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2141.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2141.md @@ -10,6 +10,8 @@ ms.assetid: 10cf770f-0500-4220-ac90-a863b7ea5fe6 > array size overflow +## Remarks + An array exceeds the 2GB limit. Reduce the size of the array. ## Example diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2142.md b/docs/error-messages/compiler-errors-1/compiler-error-c2142.md index b3430a69a20..3f6949e2281 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2142.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2142.md @@ -10,8 +10,12 @@ ms.assetid: d0dbe10e-0952-49a4-8b33-e82fb7558b19 > function declarations differ, variable parameters specified only in one of them +## Remarks + One declaration of the function contains a variable parameter list. Another declaration does not. ANSI C ([/Za](../../build/reference/za-ze-disable-language-extensions.md)) only. +## Example + The following sample generates C2142: ```c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2143.md b/docs/error-messages/compiler-errors-1/compiler-error-c2143.md index 52cbbb59eab..750a7b07d8f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2143.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2143.md @@ -10,12 +10,16 @@ ms.assetid: 1d8d1456-e031-4965-9240-09a6e33ba81c > syntax error : missing 'token1' before 'token2' +## Remarks + The compiler expected a specific token (that is, a language element other than white space) and found another token instead. Check the [C++ Language Reference](../../cpp/cpp-language-reference.md) to determine where code is syntactically incorrect. Because the compiler may report this error after it encounters the line that causes the problem, check several lines of code that precede the error. C2143 can occur in different situations. +## Examples + It can occur when an operator that can qualify a name (`::`, `->`, and `.`) must be followed by the keyword **`template`**, as in this example: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2144.md b/docs/error-messages/compiler-errors-1/compiler-error-c2144.md index b421b7b1e78..78a2a5536c8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2144.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2144.md @@ -10,6 +10,8 @@ ms.assetid: 49f3959b-324f-4c06-9588-c0ecef5dc5b3 > syntax error : '*type*' should be preceded by '*token*' +## Remarks + The compiler expected *token* and found *type* instead. This error may be caused by a missing closing brace, right parenthesis, or semicolon. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2145.md b/docs/error-messages/compiler-errors-1/compiler-error-c2145.md index 87627cf85d6..bd21fc25326 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2145.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2145.md @@ -10,6 +10,8 @@ ms.assetid: 158e5809-8adb-4195-8ca5-684501defbc8 > syntax error : missing 'token' before identifier +## Remarks + The compiler expected `token` and found identifier instead. This error may be caused by a missing semicolon after the last declaration in a block. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2146.md b/docs/error-messages/compiler-errors-1/compiler-error-c2146.md index 184ceb8e382..23161ba2e9e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2146.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2146.md @@ -10,6 +10,8 @@ ms.assetid: 6bfb7de6-6723-4486-9350-c66ef88d7a64 > syntax error : missing 'token' before identifier 'identifier' +## Remarks + The compiler expected `token` and found `identifier` instead. Possible causes: 1. Spelling or capitalization error. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2147.md b/docs/error-messages/compiler-errors-1/compiler-error-c2147.md index 50cc42c1a1c..7a476e6d3ba 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2147.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2147.md @@ -10,8 +10,12 @@ ms.assetid: d1adb3bf-7ece-4815-922c-ad7492fb6670 > syntax error : 'identifier' is a new keyword +## Remarks + An identifier was used that is now a reserved keyword in the language. +## Example + The following sample generates C2147: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2148.md b/docs/error-messages/compiler-errors-1/compiler-error-c2148.md index da2b94d3c16..16028fd4f54 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2148.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2148.md @@ -10,6 +10,8 @@ ms.assetid: e510c2c9-7b57-4ce8-be03-ba363e2cc5d9 > total size of array must not exceed 0x7fffffff bytes +## Remarks + An array exceeds the limit. Reduce the size of the array. ## Example diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2149.md b/docs/error-messages/compiler-errors-1/compiler-error-c2149.md index 393f9959582..1a35e5fd1e4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2149.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2149.md @@ -10,8 +10,12 @@ ms.assetid: 7a106dab-d79f-41b9-85be-f36e86e4d2ab > 'identifier' : named bit field cannot have zero width +## Remarks + Bit fields can have zero width only if unnamed. +## Example + The following sample generates C2149: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2150.md b/docs/error-messages/compiler-errors-1/compiler-error-c2150.md index 3fc67eca0f4..e2c64d9b239 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2150.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2150.md @@ -10,6 +10,8 @@ ms.assetid: 21e82a10-c1d4-4c0d-9dc6-c5d92ea42a31 > '*identifier*' : bit field must have type 'int', 'signed int', or 'unsigned int' +## Remarks + The base type for a bit-field is required to be **`int`**, **`signed int`**, or **`unsigned int`**. ## Example diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2151.md b/docs/error-messages/compiler-errors-1/compiler-error-c2151.md index 52005946ac0..71ac6bdb308 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2151.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2151.md @@ -10,4 +10,6 @@ ms.assetid: 7f8dd83a-1f41-46d8-8778-0d1f79ed36c9 > more than one language attribute +## Remarks + A function has more than one keyword ( **`__cdecl`**, **`__stdcall`**, or **`__fastcall`**) specifying a calling convention. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2152.md b/docs/error-messages/compiler-errors-1/compiler-error-c2152.md index e6ac67fc6ca..527f9f69a07 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2152.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2152.md @@ -10,4 +10,6 @@ ms.assetid: a9ea2b0c-d55d-41c7-ba9f-dd75592ffc8a > 'identifier' : pointers to functions with different attributes +## Remarks + A pointer to a function with one calling convention (**`__cdecl`**, **`__stdcall`**, or **`__fastcall`**) is assigned to a pointer to a function with another calling convention. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2153.md b/docs/error-messages/compiler-errors-1/compiler-error-c2153.md index 561ea17239b..12594a50a85 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2153.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2153.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C2153"] > integer literals must have at least one digit +## Remarks + Hexadecimal and binary literals must contain at least one digit after the leading sequence (`0x`, `0X`, `0b`, or `0B`), otherwise the trailing character may be incorrectly interpreted as a suffix or literal operator. See [Integer literals](../../cpp/numeric-boolean-and-pointer-literals-cpp.md#integer-literals) for more information. +## Example + The following sample generates C2153: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2154.md b/docs/error-messages/compiler-errors-1/compiler-error-c2154.md index add7ed02692..c42c3c4ec8f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2154.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2154.md @@ -10,6 +10,8 @@ ms.assetid: 98d6b044-5a3a-43ad-95fa-9b916b22468a > 'type' : only enumeration type is allowed as an argument to compiler intrinsic type trait '__underlying_type' +## Remarks + You can only get the underlying type of an enumeration type. For more information, see [Compiler Support for Type Traits](../../extensions/compiler-support-for-type-traits-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2155.md b/docs/error-messages/compiler-errors-1/compiler-error-c2155.md index 6b55e3c87d0..9beb9cb8671 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2155.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2155.md @@ -10,4 +10,6 @@ ms.assetid: 54d408af-fc48-4121-9011-5e75c7072e01 > '?' : invalid left operand, expected arithmetic or pointer type +## Remarks + An expression on the left hand side of `?` cannot be compared to zero. You must use an arithmetic or pointer expression that can be compared to zero. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2156.md b/docs/error-messages/compiler-errors-1/compiler-error-c2156.md index d2ddab0f0db..5cc7ebb4452 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2156.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2156.md @@ -10,8 +10,12 @@ ms.assetid: 136f9c67-2c27-4f61-b7e6-ccd202eca697 > pragma must be outside function +## Remarks + A pragma that must be specified at a global level (outside a function body) is within a function. +## Example + The following sample generates C2156: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2157.md b/docs/error-messages/compiler-errors-1/compiler-error-c2157.md index 3f3fab5b9ae..9cd18f3855c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2157.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2157.md @@ -10,8 +10,12 @@ ms.assetid: babbca24-16dc-4b69-be14-a675029249c1 > 'function' : must be declared before use in pragma list +## Remarks + The function name is not declared before being referenced in the list of functions for an [alloc_text](../../preprocessor/alloc-text.md) pragma. +## Example + The following sample generates C2157: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2158.md b/docs/error-messages/compiler-errors-1/compiler-error-c2158.md index f3d214f0f1d..705ee912777 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2158.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2158.md @@ -10,6 +10,8 @@ ms.assetid: 39028899-e95c-4809-8e65-6111118641ee > 'type' : #pragma make_public directive is currently supported for native non-template types only +## Remarks + The [make_public](../../preprocessor/make-public.md) pragma can only be applied to a native, non-template type. ## Example diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2159.md b/docs/error-messages/compiler-errors-1/compiler-error-c2159.md index d3926b7dacc..656e22fc096 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2159.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2159.md @@ -10,8 +10,12 @@ ms.assetid: 925a2cbd-43c9-45ee-a373-84004350b380 > more than one storage class specified +## Remarks + A declaration contains more than one storage class. +## Example + The following sample generates C2159: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2160.md b/docs/error-messages/compiler-errors-1/compiler-error-c2160.md index 1fd6bab2d0f..b8360877ccc 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2160.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2160.md @@ -10,8 +10,12 @@ ms.assetid: a1f694a7-fb16-4437-b7f5-a1af6da94bc5 > '##' cannot occur at the beginning of a macro definition +## Remarks + A macro definition began with a token-pasting operator (##). +## Example + The following sample generates C2160: ```cpp From 837a8f998b53ff37fe8982d13a70bc1a0c1442c4 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 16 Jul 2025 23:14:35 +0800 Subject: [PATCH 1098/2255] Replace term "sample" with "example" for error references in range [C2141, C2160] --- .../compiler-errors-1/compiler-error-c2141.md | 2 +- .../compiler-errors-1/compiler-error-c2142.md | 2 +- .../compiler-errors-1/compiler-error-c2144.md | 4 ++-- .../compiler-errors-1/compiler-error-c2146.md | 6 +++--- .../compiler-errors-1/compiler-error-c2147.md | 2 +- .../compiler-errors-1/compiler-error-c2148.md | 2 +- .../compiler-errors-1/compiler-error-c2149.md | 2 +- .../compiler-errors-1/compiler-error-c2150.md | 2 +- .../compiler-errors-1/compiler-error-c2153.md | 2 +- .../compiler-errors-1/compiler-error-c2156.md | 2 +- .../compiler-errors-1/compiler-error-c2157.md | 2 +- .../compiler-errors-1/compiler-error-c2158.md | 2 +- .../compiler-errors-1/compiler-error-c2159.md | 2 +- .../compiler-errors-1/compiler-error-c2160.md | 2 +- 14 files changed, 17 insertions(+), 17 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2141.md b/docs/error-messages/compiler-errors-1/compiler-error-c2141.md index 52e9dd2448e..91cf4c9fe2b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2141.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2141.md @@ -16,7 +16,7 @@ An array exceeds the 2GB limit. Reduce the size of the array. ## Example -The following sample generates C2141. +The following example generates C2141. ```cpp // C2141.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2142.md b/docs/error-messages/compiler-errors-1/compiler-error-c2142.md index 3f6949e2281..67f29e34c90 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2142.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2142.md @@ -16,7 +16,7 @@ One declaration of the function contains a variable parameter list. Another decl ## Example -The following sample generates C2142: +The following example generates C2142: ```c // C2142.c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2144.md b/docs/error-messages/compiler-errors-1/compiler-error-c2144.md index 78a2a5536c8..3f13bdf80a5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2144.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2144.md @@ -22,7 +22,7 @@ You may also see C2144 if you are trying to do type forwarding. See [Type Forwar ## Examples -The following sample generates C2144, and shows a way to fix it: +The following example generates C2144, and shows a way to fix it: ```cpp // C2144.cpp @@ -35,7 +35,7 @@ REF struct MyStruct0; // C2144 REF1 MyStruct1; ``` -The following sample generates C2144, and shows a way to fix it: +The following example generates C2144, and shows a way to fix it: ```cpp // C2144_2.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2146.md b/docs/error-messages/compiler-errors-1/compiler-error-c2146.md index 23161ba2e9e..8f2cbec0389 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2146.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2146.md @@ -22,7 +22,7 @@ This error may be caused by a typographical error. Error [C2065](../../error-mes ## Examples -The following sample generates C2146. +The following example generates C2146. ```cpp // C2146.cpp @@ -41,7 +41,7 @@ int main() { This error can also be generated as a result of compiler conformance work that was done for Visual Studio .NET 2003: missing **`typename`** keyword. -The following sample compiles in Visual Studio .NET 2002 but will fail in Visual Studio .NET 2003: +The following example compiles in Visual Studio .NET 2002 but will fail in Visual Studio .NET 2003: ```cpp // C2146b.cpp @@ -66,7 +66,7 @@ You will also see this error as a result of compiler conformance work that was d The use of `T` from the primary template is not allowed in the explicit specialization. For code to be valid in the Visual Studio .NET 2003 and Visual Studio .NET, replace all instances of the template parameter in the specialization with the explicitly specialized type. -The following sample compiles in Visual Studio .NET but will fail in Visual Studio .NET 2003: +The following example compiles in Visual Studio .NET but will fail in Visual Studio .NET 2003: ```cpp // C2146_c.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2147.md b/docs/error-messages/compiler-errors-1/compiler-error-c2147.md index 7a476e6d3ba..c465bed9558 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2147.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2147.md @@ -16,7 +16,7 @@ An identifier was used that is now a reserved keyword in the language. ## Example -The following sample generates C2147: +The following example generates C2147: ```cpp // C2147.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2148.md b/docs/error-messages/compiler-errors-1/compiler-error-c2148.md index 16028fd4f54..362a27f79a4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2148.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2148.md @@ -16,7 +16,7 @@ An array exceeds the limit. Reduce the size of the array. ## Example -The following sample generates C2148: +The following example generates C2148: ```cpp // C2148.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2149.md b/docs/error-messages/compiler-errors-1/compiler-error-c2149.md index 1a35e5fd1e4..a758a5a47e4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2149.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2149.md @@ -16,7 +16,7 @@ Bit fields can have zero width only if unnamed. ## Example -The following sample generates C2149: +The following example generates C2149: ```cpp // C2149.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2150.md b/docs/error-messages/compiler-errors-1/compiler-error-c2150.md index e2c64d9b239..de57f08a439 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2150.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2150.md @@ -16,7 +16,7 @@ The base type for a bit-field is required to be **`int`**, **`signed int`**, or ## Example -This sample shows how you might encounter C2150, and how you can fix it: +This example shows how you might encounter C2150, and how you can fix it: ```cpp // C2150.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2153.md b/docs/error-messages/compiler-errors-1/compiler-error-c2153.md index 12594a50a85..3507dbaccba 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2153.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2153.md @@ -15,7 +15,7 @@ Hexadecimal and binary literals must contain at least one digit after the leadin ## Example -The following sample generates C2153: +The following example generates C2153: ```cpp // C2153.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2156.md b/docs/error-messages/compiler-errors-1/compiler-error-c2156.md index 5cc7ebb4452..98658c61ae0 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2156.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2156.md @@ -16,7 +16,7 @@ A pragma that must be specified at a global level (outside a function body) is w ## Example -The following sample generates C2156: +The following example generates C2156: ```cpp // C2156.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2157.md b/docs/error-messages/compiler-errors-1/compiler-error-c2157.md index 9cd18f3855c..cf796efaef2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2157.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2157.md @@ -16,7 +16,7 @@ The function name is not declared before being referenced in the list of functio ## Example -The following sample generates C2157: +The following example generates C2157: ```cpp // C2157.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2158.md b/docs/error-messages/compiler-errors-1/compiler-error-c2158.md index 705ee912777..e3a8801679f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2158.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2158.md @@ -16,7 +16,7 @@ The [make_public](../../preprocessor/make-public.md) pragma can only be applied ## Example -The following sample generates C2158. +The following example generates C2158. ```cpp // C2158.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2159.md b/docs/error-messages/compiler-errors-1/compiler-error-c2159.md index 656e22fc096..af70354f9cb 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2159.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2159.md @@ -16,7 +16,7 @@ A declaration contains more than one storage class. ## Example -The following sample generates C2159: +The following example generates C2159: ```cpp // C2159.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2160.md b/docs/error-messages/compiler-errors-1/compiler-error-c2160.md index b8360877ccc..924fd82c3c3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2160.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2160.md @@ -16,7 +16,7 @@ A macro definition began with a token-pasting operator (##). ## Example -The following sample generates C2160: +The following example generates C2160: ```cpp // C2160.cpp From f63a22c9b4d9a73bbeb217c6f8475a93aca4a613 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 16 Jul 2025 23:17:39 +0800 Subject: [PATCH 1099/2255] Update metadata for error references in range [C2141, C2160] --- .../error-messages/compiler-errors-1/compiler-error-c2141.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2142.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2143.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2144.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2145.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2146.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2147.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2148.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2149.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2150.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2151.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2152.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2153.md | 2 +- .../error-messages/compiler-errors-1/compiler-error-c2154.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2155.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2156.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2157.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2158.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2159.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2160.md | 5 ++--- 20 files changed, 39 insertions(+), 58 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2141.md b/docs/error-messages/compiler-errors-1/compiler-error-c2141.md index 91cf4c9fe2b..18e160df28b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2141.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2141.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2141" title: "Compiler Error C2141" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2141" +ms.date: 11/04/2016 f1_keywords: ["C2141"] helpviewer_keywords: ["C2141"] -ms.assetid: 10cf770f-0500-4220-ac90-a863b7ea5fe6 --- # Compiler Error C2141 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2142.md b/docs/error-messages/compiler-errors-1/compiler-error-c2142.md index 67f29e34c90..63c8eae9446 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2142.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2142.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2142" title: "Compiler Error C2142" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2142" +ms.date: 11/04/2016 f1_keywords: ["C2142"] helpviewer_keywords: ["C2142"] -ms.assetid: d0dbe10e-0952-49a4-8b33-e82fb7558b19 --- # Compiler Error C2142 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2143.md b/docs/error-messages/compiler-errors-1/compiler-error-c2143.md index 750a7b07d8f..244566a6131 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2143.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2143.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2143" title: "Compiler Error C2143" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2143" +ms.date: 11/04/2016 f1_keywords: ["C2143"] helpviewer_keywords: ["C2143"] -ms.assetid: 1d8d1456-e031-4965-9240-09a6e33ba81c --- # Compiler Error C2143 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2144.md b/docs/error-messages/compiler-errors-1/compiler-error-c2144.md index 3f13bdf80a5..c50ffbe8bfc 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2144.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2144.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2144" title: "Compiler Error C2144" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2144" +ms.date: 11/04/2016 f1_keywords: ["C2144"] helpviewer_keywords: ["C2144"] -ms.assetid: 49f3959b-324f-4c06-9588-c0ecef5dc5b3 --- # Compiler Error C2144 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2145.md b/docs/error-messages/compiler-errors-1/compiler-error-c2145.md index bd21fc25326..3f0cb125a01 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2145.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2145.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2145" title: "Compiler Error C2145" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2145" +ms.date: 11/04/2016 f1_keywords: ["C2145"] helpviewer_keywords: ["C2145"] -ms.assetid: 158e5809-8adb-4195-8ca5-684501defbc8 --- # Compiler Error C2145 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2146.md b/docs/error-messages/compiler-errors-1/compiler-error-c2146.md index 8f2cbec0389..075f911dfac 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2146.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2146.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2146" title: "Compiler Error C2146" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2146" +ms.date: 11/04/2016 f1_keywords: ["C2146"] helpviewer_keywords: ["C2146"] -ms.assetid: 6bfb7de6-6723-4486-9350-c66ef88d7a64 --- # Compiler Error C2146 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2147.md b/docs/error-messages/compiler-errors-1/compiler-error-c2147.md index c465bed9558..c282a1e2bdc 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2147.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2147.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2147" title: "Compiler Error C2147" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2147" +ms.date: 11/04/2016 f1_keywords: ["C2147"] helpviewer_keywords: ["C2147"] -ms.assetid: d1adb3bf-7ece-4815-922c-ad7492fb6670 --- # Compiler Error C2147 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2148.md b/docs/error-messages/compiler-errors-1/compiler-error-c2148.md index 362a27f79a4..6caab690512 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2148.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2148.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2148" title: "Compiler Error C2148" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2148" +ms.date: 11/04/2016 f1_keywords: ["C2148"] helpviewer_keywords: ["C2148"] -ms.assetid: e510c2c9-7b57-4ce8-be03-ba363e2cc5d9 --- # Compiler Error C2148 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2149.md b/docs/error-messages/compiler-errors-1/compiler-error-c2149.md index a758a5a47e4..e6e64526d8d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2149.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2149.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2149" title: "Compiler Error C2149" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2149" +ms.date: 11/04/2016 f1_keywords: ["C2149"] helpviewer_keywords: ["C2149"] -ms.assetid: 7a106dab-d79f-41b9-85be-f36e86e4d2ab --- # Compiler Error C2149 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2150.md b/docs/error-messages/compiler-errors-1/compiler-error-c2150.md index de57f08a439..c1595ba5141 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2150.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2150.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2150" title: "Compiler Error C2150" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2150" +ms.date: 11/04/2016 f1_keywords: ["C2150"] helpviewer_keywords: ["C2150"] -ms.assetid: 21e82a10-c1d4-4c0d-9dc6-c5d92ea42a31 --- # Compiler Error C2150 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2151.md b/docs/error-messages/compiler-errors-1/compiler-error-c2151.md index 71ac6bdb308..60f0f9ebea8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2151.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2151.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2151" title: "Compiler Error C2151" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2151" +ms.date: 11/04/2016 f1_keywords: ["C2151"] helpviewer_keywords: ["C2151"] -ms.assetid: 7f8dd83a-1f41-46d8-8778-0d1f79ed36c9 --- # Compiler Error C2151 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2152.md b/docs/error-messages/compiler-errors-1/compiler-error-c2152.md index 527f9f69a07..fa096f9730a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2152.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2152.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2152" title: "Compiler Error C2152" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2152" +ms.date: 11/04/2016 f1_keywords: ["C2152"] helpviewer_keywords: ["C2152"] -ms.assetid: a9ea2b0c-d55d-41c7-ba9f-dd75592ffc8a --- # Compiler Error C2152 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2153.md b/docs/error-messages/compiler-errors-1/compiler-error-c2153.md index 3507dbaccba..8f34dce0ada 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2153.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2153.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C2153" description: "Learn more about: Compiler Error C2153" -ms.date: "01/31/2025" +ms.date: 01/31/2025 f1_keywords: ["C2153"] helpviewer_keywords: ["C2153"] --- diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2154.md b/docs/error-messages/compiler-errors-1/compiler-error-c2154.md index c42c3c4ec8f..021703b64ec 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2154.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2154.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2154" title: "Compiler Error C2154" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2154" +ms.date: 11/04/2016 f1_keywords: ["C2154"] helpviewer_keywords: ["C2154"] -ms.assetid: 98d6b044-5a3a-43ad-95fa-9b916b22468a --- # Compiler Error C2154 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2155.md b/docs/error-messages/compiler-errors-1/compiler-error-c2155.md index 9beb9cb8671..7dfb22df0d8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2155.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2155.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2155" title: "Compiler Error C2155" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2155" +ms.date: 11/04/2016 f1_keywords: ["C2155"] helpviewer_keywords: ["C2155"] -ms.assetid: 54d408af-fc48-4121-9011-5e75c7072e01 --- # Compiler Error C2155 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2156.md b/docs/error-messages/compiler-errors-1/compiler-error-c2156.md index 98658c61ae0..8ba7b0a0ca2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2156.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2156.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2156" title: "Compiler Error C2156" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2156" +ms.date: 11/04/2016 f1_keywords: ["C2156"] helpviewer_keywords: ["C2156"] -ms.assetid: 136f9c67-2c27-4f61-b7e6-ccd202eca697 --- # Compiler Error C2156 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2157.md b/docs/error-messages/compiler-errors-1/compiler-error-c2157.md index cf796efaef2..104d98276b1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2157.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2157.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2157" title: "Compiler Error C2157" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2157" +ms.date: 11/04/2016 f1_keywords: ["C2157"] helpviewer_keywords: ["C2157"] -ms.assetid: babbca24-16dc-4b69-be14-a675029249c1 --- # Compiler Error C2157 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2158.md b/docs/error-messages/compiler-errors-1/compiler-error-c2158.md index e3a8801679f..4372aa71568 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2158.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2158.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2158" title: "Compiler Error C2158" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2158" +ms.date: 11/04/2016 f1_keywords: ["C2158"] helpviewer_keywords: ["C2158"] -ms.assetid: 39028899-e95c-4809-8e65-6111118641ee --- # Compiler Error C2158 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2159.md b/docs/error-messages/compiler-errors-1/compiler-error-c2159.md index af70354f9cb..1463230715d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2159.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2159.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2159" title: "Compiler Error C2159" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2159" +ms.date: 11/04/2016 f1_keywords: ["C2159"] helpviewer_keywords: ["C2159"] -ms.assetid: 925a2cbd-43c9-45ee-a373-84004350b380 --- # Compiler Error C2159 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2160.md b/docs/error-messages/compiler-errors-1/compiler-error-c2160.md index 924fd82c3c3..1b9174fbe60 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2160.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2160.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2160" title: "Compiler Error C2160" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2160" +ms.date: 11/04/2016 f1_keywords: ["C2160"] helpviewer_keywords: ["C2160"] -ms.assetid: a1f694a7-fb16-4437-b7f5-a1af6da94bc5 --- # Compiler Error C2160 From dfce1d47b4fa3010b2c63dab29eb81ce6e95cd87 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 17 Jul 2025 00:18:47 +0800 Subject: [PATCH 1100/2255] Remove "EnterRemarks" in `COleTemplateServer` class reference --- docs/mfc/reference/coletemplateserver-class.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/mfc/reference/coletemplateserver-class.md b/docs/mfc/reference/coletemplateserver-class.md index e497aa5a489..c7fdc19701c 100644 --- a/docs/mfc/reference/coletemplateserver-class.md +++ b/docs/mfc/reference/coletemplateserver-class.md @@ -104,10 +104,6 @@ BOOL Unregister(); TRUE if successful; otherwise FALSE. -### Remarks - -EnterRemarks - ## COleTemplateServer::UpdateRegistry Loads file-type information from the document-template string and places that information in the OLE system registry. From c3e0c753ad5adb74c21a8401b8d31fe26058a9fa Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 17 Jul 2025 00:19:21 +0800 Subject: [PATCH 1101/2255] Update metadata in `COleTemplateServer` class reference --- docs/mfc/reference/coletemplateserver-class.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/mfc/reference/coletemplateserver-class.md b/docs/mfc/reference/coletemplateserver-class.md index c7fdc19701c..79a0b6e661b 100644 --- a/docs/mfc/reference/coletemplateserver-class.md +++ b/docs/mfc/reference/coletemplateserver-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: COleTemplateServer Class" title: "COleTemplateServer Class" -ms.date: "11/04/2016" +description: "Learn more about: COleTemplateServer Class" +ms.date: 11/04/2016 f1_keywords: ["COleTemplateServer", "AFXDISP/COleTemplateServer", "AFXDISP/COleTemplateServer::COleTemplateServer", "AFXDISP/COleTemplateServer::ConnectTemplate", "AFXDISP/COleTemplateServer::Unregister", "AFXDISP/COleTemplateServer::UpdateRegistry"] helpviewer_keywords: ["COleTemplateServer [MFC], COleTemplateServer", "COleTemplateServer [MFC], ConnectTemplate", "COleTemplateServer [MFC], Unregister", "COleTemplateServer [MFC], UpdateRegistry"] -ms.assetid: 47a2887d-8162-4993-a842-a784177c7f5c --- # COleTemplateServer Class From f3b5367ec25169703c78bbcab82ce6d7b1858598 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 16 Jul 2025 17:02:47 -0700 Subject: [PATCH 1102/2255] acrolinx --- .../tutorials/build-insights-function-view.md | 8 ++++---- .../tutorials/build-insights-template-view.md | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/build-insights/tutorials/build-insights-function-view.md b/docs/build-insights/tutorials/build-insights-function-view.md index 35c96d5d196..bd0ccd9e319 100644 --- a/docs/build-insights/tutorials/build-insights-function-view.md +++ b/docs/build-insights/tutorials/build-insights-function-view.md @@ -12,7 +12,7 @@ Use Build Insights **Functions** view to troubleshoot the impact of function inl ## Prerequisites - Visual Studio 2022 17.8 or greater. -- C++ Build insights is enabled by default if you install either the Desktop development with C++ workload or the Game development with C++ workload. +- C++ Build Insights is enabled by default if you install either the Desktop development with C++ workload or the Game development with C++ workload. :::image type="complex" source="./media/installer-desktop-cpp-build-insights.png" alt-text="Screenshot of the Visual Studio Installer with the Desktop development with C++ workload selected."::: The list of installed components is shown. C++ Build Insights is highlighted and is selected which means it's installed. @@ -61,7 +61,7 @@ When the build finishes, an Event Trace Log (ETL) file opens. It's saved in the ## Function view -In the window for the ETL file, choose the **Functions** tab. It shows the functions that were compiled and the time it took to generate the code for each function. If the amount of code generated for a function is negligible, it won't appear in the list to avoid degrading build event collection performance. +In the window for the ETL file, choose the **Functions** tab. It shows the functions that were compiled and the time it took to generate the code for each function. If the amount of code generated for a function is negligible, it doesn't appear in the list to avoid degrading build event collection performance. :::image type="complex" source="./media/functions-view-before-fix.png" alt-text="Screenshot of the Build Insights Functions view file."::: In the Function Name column, performPhysicsCalculations() is highlighted and marked with a fire icon. @@ -83,7 +83,7 @@ In this example, the `performPhysicsCalculations` function is taking the most ti In the Function Name column, performPhysicsCalculations() is highlighted and marked with a fire icon. :::image-end::: -Investigating further, by selecting the chevron before that function, and then sorting the **Forceinline Size** column from highest to lowest, we see the biggest contributors to the problem. +By selecting the chevron before that function, and then sorting the **Forceinline Size** column from highest to lowest, we see the biggest contributors to the problem. :::image type="complex" source="./media/functions-view-expanded.png" alt-text="Screenshot of the Build Insights Functions view with an expanded function."::: performPhysicsCalculations() is expanded and shows a long list of functions that were inlined inside it. There are multiple instances of functions such as complexOperation(), recursiveHelper(), and sin() shown. The Forceinline Size column shows that complexOperation() is the largest inlined function at 315 instructions. recursiveHelper() has 119 instructions. Sin() has 75 instructions, but there are many more instances of it than the other functions. @@ -106,7 +106,7 @@ static __forceinline T factorial(int n) } ``` -Perhaps the overall cost of calling this function is insignificant compared to the cost of the function itself. Making a function inline is most beneficial when the time it takes to call the function (pushing arguments on the stack, jumping to the function, popping return arguments, and returning from the function) is roughly similar to the time it takes to execute the function, and when the function is called a lot. When that's not the case, there may be diminishing returns on making it inline. We can try removing the `__forceinline` directive from it to see if it helps the build time. The code for `power`, `sin()` and `cos()` is similar in that the code consists of a loop that will execute many times. We can try removing the `__forceinline` directive from those functions as well. +Perhaps the overall cost of calling this function is insignificant compared to the cost of the function itself. Making a function inline is most beneficial when the time it takes to call the function (pushing arguments on the stack, jumping to the function, popping return arguments, and returning from the function) is roughly similar to the time it takes to execute the function, and when the function is called a lot. When that's not the case, there may be diminishing returns on making it inline. We can try removing the `__forceinline` directive from it to see if it helps the build time. The code for `power`, `sin()`, and `cos()` is similar in that the code consists of a loop that executes many times. We can try removing the `__forceinline` directive from those functions as well. We rerun Build Insights from the main menu by choosing **Build** > **Run Build Insights on Selection** > **Rebuild**. You can also right-click a project in the solution explorer and choose **Run Build Insights** > **Rebuild**. We choose **Rebuild** instead of **Build** to measure the build time for the entire project, as before, and not for just the few files may be dirty right now. diff --git a/docs/build-insights/tutorials/build-insights-template-view.md b/docs/build-insights/tutorials/build-insights-template-view.md index f43f2eecf62..c9a57fe3234 100644 --- a/docs/build-insights/tutorials/build-insights-template-view.md +++ b/docs/build-insights/tutorials/build-insights-template-view.md @@ -15,7 +15,7 @@ The **Templates** view works like the Build Insights [Functions view](build-insi ## Prerequisites - Visual Studio 2022 version 17.10 or later. -- The **C++ Build Insights** component must be installed. It's included in either the Desktop development with C++ workload or the Game development with C++ workload. To check if it's installed, follow these steps: +- The **C++ Build Insights** component must be installed. Either the Desktop development with C++ workload or the Game development with C++ workload includes it. To check if it's installed, follow these steps: 1. Open the Visual Studio Installer. 1. Select **Modify** to change your Visual Studio installation. 1. On the **Individual components** tab, search for and select **C++ Build Insights**, then select **Close** to finish installing the component. @@ -136,7 +136,7 @@ The Templates view shows two template instantiations of struct S3 taking most (7 ### Understanding Templates view results -When interpreting Templates view results, keep this in mind: +When interpreting Templates view results, consider the following: - **Empty view**: If nothing shows up in the **Templates** view, template instantiations don't dominate your build time. That's good news because your templates aren't a build bottleneck. - **Duplicate instantiations**: If the same template instantiation appears multiple times across different translation units, different source files are causing the same expensive instantiation. This is often the biggest optimization opportunity. From f3e8928a892a18720a1dd4df98cc5d5add113b63 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 17 Jul 2025 22:18:24 +0800 Subject: [PATCH 1103/2255] Add forward slash for `/std` compiler options --- docs/cpp/nothrow-cpp.md | 2 +- docs/standard-library/basic-string-view-class.md | 4 ++-- docs/standard-library/string-view.md | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/cpp/nothrow-cpp.md b/docs/cpp/nothrow-cpp.md index b0749a32f4c..c74b0ddc02b 100644 --- a/docs/cpp/nothrow-cpp.md +++ b/docs/cpp/nothrow-cpp.md @@ -20,7 +20,7 @@ A **`__declspec`** extended attribute which can be used in the declaration of fu We recommend that all new code use the [`noexcept`](noexcept-cpp.md) operator rather than `__declspec(nothrow)`. -This attribute tells the compiler that the declared function and the functions it calls never throw an exception. However, it does not enforce the directive. In other words, it never causes [`std::terminate`](../standard-library/exception-functions.md#terminate) to be invoked, unlike **`noexcept`**, or in **`std:c++17`** mode (Visual Studio 2017 version 15.5 and later), `throw()`. +This attribute tells the compiler that the declared function and the functions it calls never throw an exception. However, it does not enforce the directive. In other words, it never causes [`std::terminate`](../standard-library/exception-functions.md#terminate) to be invoked, unlike **`noexcept`**, or in **`/std:c++17`** mode (Visual Studio 2017 version 15.5 and later), `throw()`. With the synchronous exception handling model, now the default, the compiler can eliminate the mechanics of tracking the lifetime of certain unwindable objects in such a function, and significantly reduce the code size. Given the following preprocessor directive, the three function declarations below are equivalent in **`/std:c++14`** mode: diff --git a/docs/standard-library/basic-string-view-class.md b/docs/standard-library/basic-string-view-class.md index 014c086606c..d1b682c1a90 100644 --- a/docs/standard-library/basic-string-view-class.md +++ b/docs/standard-library/basic-string-view-class.md @@ -138,7 +138,7 @@ If a function is asked to generate a sequence longer than [`max_size`](#max_size ## Requirements -[`std:c++17`](../build/reference/std-specify-language-standard-version.md) or later. +[`/std:c++17`](../build/reference/std-specify-language-standard-version.md) or later. **Header:** `` @@ -1013,7 +1013,7 @@ Null-terminated character string containing the prefix to look for. ### Remarks -`starts_with()` is new in C++20. To use it, specify the [`std:c++20`](../build/reference/std-specify-language-standard-version.md) or later compiler option. +`starts_with()` is new in C++20. To use it, specify the [`/std:c++20`](../build/reference/std-specify-language-standard-version.md) or later compiler option. See [`ends_with`](#ends_with) to see if a string ends with a suffix. diff --git a/docs/standard-library/string-view.md b/docs/standard-library/string-view.md index 7582ab417c5..846721c1956 100644 --- a/docs/standard-library/string-view.md +++ b/docs/standard-library/string-view.md @@ -6,7 +6,7 @@ helpviewer_keywords: ["string_view header"] --- # `` -Defines the class template `basic_string_view` and related types and operators. (Requires compiler option [`std:c++17`](../build/reference/std-specify-language-standard-version.md) or later.) +Defines the class template `basic_string_view` and related types and operators. (Requires compiler option [`/std:c++17`](../build/reference/std-specify-language-standard-version.md) or later.) ## Syntax @@ -60,7 +60,7 @@ The `` operators can compare `string_view` objects to objects of an - **Namespace:** `std` -- **Compiler Option:** [`std:c++17`](../build/reference/std-specify-language-standard-version.md) or later. +- **Compiler Option:** [`/std:c++17`](../build/reference/std-specify-language-standard-version.md) or later. ## See also From 4cf2343a8463864f990db0883212a41c0d18d102 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 17 Jul 2025 22:19:36 +0800 Subject: [PATCH 1104/2255] Update metadata in `nothrow` C++ reference --- docs/cpp/nothrow-cpp.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/cpp/nothrow-cpp.md b/docs/cpp/nothrow-cpp.md index c74b0ddc02b..fd5ebc478b4 100644 --- a/docs/cpp/nothrow-cpp.md +++ b/docs/cpp/nothrow-cpp.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: nothrow (C++)" title: "nothrow (C++)" -ms.date: "01/03/2018" +description: "Learn more about: nothrow (C++)" +ms.date: 01/03/2018 f1_keywords: ["nothrow_cpp"] helpviewer_keywords: ["__declspec keyword [C++], nothrow", "nothrow __declspec keyword"] -ms.assetid: 0a475139-459c-4ec6-99e8-7ecd0d7f44a3 --- # `nothrow` (C++) From 787e2230987333baad360f913407877aa3fcd203 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 17 Jul 2025 22:27:43 +0800 Subject: [PATCH 1105/2255] Add blockquotes for error messages in range [C2161, C2180] --- docs/error-messages/compiler-errors-1/compiler-error-c2161.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2163.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2164.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2165.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2167.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2168.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2169.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2170.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2171.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2172.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2173.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2174.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2175.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2177.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2178.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2179.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2180.md | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2161.md b/docs/error-messages/compiler-errors-1/compiler-error-c2161.md index e552b85448f..39de6b4ad2a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2161.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2161.md @@ -8,7 +8,7 @@ ms.assetid: d6798821-13bb-4e60-924f-85f7bf955387 --- # Compiler Error C2161 -'##' cannot occur at the end of a macro definition +> '##' cannot occur at the end of a macro definition A macro definition ended with a token-pasting operator (##). diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2163.md b/docs/error-messages/compiler-errors-1/compiler-error-c2163.md index 8cf898cc43c..5a13cfaf57a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2163.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2163.md @@ -8,6 +8,6 @@ ms.assetid: 6428d1e9-1ba1-46fc-bbf6-91d6fef2734c --- # Compiler Error C2163 -'function' : not available as an intrinsic function +> 'function' : not available as an intrinsic function An `intrinsic` or `function` pragma lists a function not available in intrinsic form. For example, certain intrinsics are not available when compiling a program that uses /clr programming. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2164.md b/docs/error-messages/compiler-errors-1/compiler-error-c2164.md index 0938243a688..57571d4302b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2164.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2164.md @@ -8,7 +8,7 @@ ms.assetid: 55df5024-68a8-45a8-ae6c-e6dba35318a2 --- # Compiler Error C2164 -'function' : intrinsic function not declared +> 'function' : intrinsic function not declared An `intrinsic` pragma uses an undeclared function (only occurs with **/Oi**). Or, one of the compiler intrinsics was used without including its header file. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2165.md b/docs/error-messages/compiler-errors-1/compiler-error-c2165.md index 6cc12f0dcc2..85fdf065e5e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2165.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2165.md @@ -8,7 +8,7 @@ ms.assetid: b108313b-b8cb-4dce-b2ec-f2b31c9cdc87 --- # Compiler Error C2165 -'keyword' : cannot modify pointers to data +> 'keyword' : cannot modify pointers to data The **`__stdcall`**, **`__cdecl`**, or **`__fastcall`** keyword attempts to modify a pointer to data. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2167.md b/docs/error-messages/compiler-errors-1/compiler-error-c2167.md index 04cfdca5904..bbdb6497069 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2167.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2167.md @@ -8,6 +8,6 @@ ms.assetid: 3de3de96-12cd-47df-b24e-34cc9747ef83 --- # Compiler Error C2167 -'function' : too many actual parameters for intrinsic function +> 'function' : too many actual parameters for intrinsic function A reference to an `intrinsic` function has too many parameters. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2168.md b/docs/error-messages/compiler-errors-1/compiler-error-c2168.md index 26574e9a1be..07b70732f05 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2168.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2168.md @@ -8,6 +8,6 @@ ms.assetid: 625e7dc3-ca74-4980-8268-8d5c0245e376 --- # Compiler Error C2168 -'function' : too few actual parameters for intrinsic function +> 'function' : too few actual parameters for intrinsic function A reference to an `intrinsic` function has too few parameters. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2169.md b/docs/error-messages/compiler-errors-1/compiler-error-c2169.md index a4e58165941..08594947863 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2169.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2169.md @@ -8,6 +8,6 @@ ms.assetid: 97f700bd-1044-46f5-b276-3d7570ee7708 --- # Compiler Error C2169 -'function' : intrinsic function, cannot be defined +> 'function' : intrinsic function, cannot be defined A function definition appears for a function already declared `intrinsic`. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2170.md b/docs/error-messages/compiler-errors-1/compiler-error-c2170.md index 599a5750112..7a4456441f5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2170.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2170.md @@ -8,7 +8,7 @@ ms.assetid: d5c663f0-2459-4e11-a8bf-a52b62f3c71d --- # Compiler Error C2170 -'identifier' : not declared as a function, cannot be intrinsic +> 'identifier' : not declared as a function, cannot be intrinsic ### To fix by checking the following possible causes diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2171.md b/docs/error-messages/compiler-errors-1/compiler-error-c2171.md index f32ebc62e2e..fc1bce5b04c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2171.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2171.md @@ -8,7 +8,7 @@ ms.assetid: a80343b5-ab3f-4413-b6f1-3ce9d7e519e5 --- # Compiler Error C2171 -'operator' : illegal on operands of type 'type' +> 'operator' : illegal on operands of type 'type' A unary operator is used with an invalid operand type. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2172.md b/docs/error-messages/compiler-errors-1/compiler-error-c2172.md index 8e2992bd811..a7aff4fb950 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2172.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2172.md @@ -8,6 +8,6 @@ ms.assetid: 31183ea7-858d-4273-932a-d865af7059b1 --- # Compiler Error C2172 -'function' : actual parameter is not a pointer : parameter number +> 'function' : actual parameter is not a pointer : parameter number Parameter `number` is not a pointer. The function expects a pointer. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2173.md b/docs/error-messages/compiler-errors-1/compiler-error-c2173.md index 45dc2487855..5dfb990cd21 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2173.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2173.md @@ -8,6 +8,6 @@ ms.assetid: 4df592b8-609b-41a5-b4fc-966eb5bb2d1a --- # Compiler Error C2173 -'function' : actual parameter is not a pointer : parameter number1, parameter list number2 +> 'function' : actual parameter is not a pointer : parameter number1, parameter list number2 Parameter `number1` passed to parameter list `number2` is not a pointer. The function expects a pointer. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2174.md b/docs/error-messages/compiler-errors-1/compiler-error-c2174.md index bc685baa294..8f780a82f60 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2174.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2174.md @@ -8,6 +8,6 @@ ms.assetid: 161d563c-76e9-47e9-9142-7812e9ea169e --- # Compiler Error C2174 -'function' : actual parameter has type 'void' : parameter number1, parameter list number2 +> 'function' : actual parameter has type 'void' : parameter number1, parameter list number2 Parameter `number1` passed to parameter list `number2` is a **`void`** parameter. Parameters cannot have type **`void`**. Use **`void*`** instead. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2175.md b/docs/error-messages/compiler-errors-1/compiler-error-c2175.md index 4f210813ce0..95bd5c9e20a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2175.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2175.md @@ -8,6 +8,6 @@ ms.assetid: 3a8fa90b-2b29-414a-bb55-cf27c2bf989a --- # Compiler Error C2175 -'locale' : invalid locale +> 'locale' : invalid locale The specified locale is not valid. See [Language and Country/Region Strings](../../c-runtime-library/locale-names-languages-and-country-region-strings.md) in the *Run-Time Library Reference* for supported locales. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2177.md b/docs/error-messages/compiler-errors-1/compiler-error-c2177.md index a69d0bcd35b..dd462bae296 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2177.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2177.md @@ -8,7 +8,7 @@ ms.assetid: 2a39a880-cddb-4d3e-a572-645a14c4c478 --- # Compiler Error C2177 -constant too big +> constant too big A constant value is too large for the variable type it is assigned. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2178.md b/docs/error-messages/compiler-errors-1/compiler-error-c2178.md index b9aecbda49c..377ea2b6be2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2178.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2178.md @@ -8,7 +8,7 @@ ms.assetid: 79a14158-17f3-4221-bd06-9d675c49cef4 --- # Compiler Error C2178 -'*identifier*' cannot be declared with '*specifier*' specifier +> '*identifier*' cannot be declared with '*specifier*' specifier A **`mutable`** specifier was used in a declaration, but the specifier is not allowed in this context. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2179.md b/docs/error-messages/compiler-errors-1/compiler-error-c2179.md index d1c9b3dc115..ffc0ceaa8bd 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2179.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2179.md @@ -8,7 +8,7 @@ ms.assetid: f929bfc6-3964-4e54-87d6-7529b9b6c0b9 --- # Compiler Error C2179 -'type' : an attribute argument cannot use type parameters +> 'type' : an attribute argument cannot use type parameters A generic type parameter is resolved at runtime. However, an attribute parameter must be resolved at compile time. Therefore, you cannot use a generic type parameter as an argument to an attribute. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2180.md b/docs/error-messages/compiler-errors-1/compiler-error-c2180.md index 30c5e6e220f..d6857d456a5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2180.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2180.md @@ -8,7 +8,7 @@ ms.assetid: ea71b39e-b977-48a7-b7bd-af68ef5e263b --- # Compiler Error C2180 -controlling expression has type 'type' +> controlling expression has type 'type' The controlling expression in an **`if`**, **`while`**, **`for`**, or **`do`** statement is an expression cast to **`void`**. To fix this issue, change the controlling expression to one that produces a **`bool`** or a type that can be converted to **`bool`**. From ee4f1c16609d75f47480cbae1daa722e7491216b Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 17 Jul 2025 22:31:04 +0800 Subject: [PATCH 1106/2255] Add "Remarks" and "Example" headings for error references in range [C2161, C2180] --- docs/error-messages/compiler-errors-1/compiler-error-c2161.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2162.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2163.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2164.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2165.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2167.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2168.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2169.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2171.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2172.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2173.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2174.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2175.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2177.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2178.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2179.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2180.md | 4 ++++ 17 files changed, 44 insertions(+) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2161.md b/docs/error-messages/compiler-errors-1/compiler-error-c2161.md index 39de6b4ad2a..7bb6e958929 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2161.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2161.md @@ -10,8 +10,12 @@ ms.assetid: d6798821-13bb-4e60-924f-85f7bf955387 > '##' cannot occur at the end of a macro definition +## Remarks + A macro definition ended with a token-pasting operator (##). +## Example + The following sample generates C2161: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2162.md b/docs/error-messages/compiler-errors-1/compiler-error-c2162.md index 2cd9768016e..b76cbb2783f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2162.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2162.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C2162"] > expected macro formal parameter +## Remarks + The token following a [stringizing operator (#)](../../preprocessor/stringizing-operator-hash.md) or a [charizing operator (#@)](../../preprocessor/charizing-operator-hash-at.md) is not a formal parameter. ## Example diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2163.md b/docs/error-messages/compiler-errors-1/compiler-error-c2163.md index 5a13cfaf57a..aea0a631902 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2163.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2163.md @@ -10,4 +10,6 @@ ms.assetid: 6428d1e9-1ba1-46fc-bbf6-91d6fef2734c > 'function' : not available as an intrinsic function +## Remarks + An `intrinsic` or `function` pragma lists a function not available in intrinsic form. For example, certain intrinsics are not available when compiling a program that uses /clr programming. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2164.md b/docs/error-messages/compiler-errors-1/compiler-error-c2164.md index 57571d4302b..e8c7e910b22 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2164.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2164.md @@ -10,8 +10,12 @@ ms.assetid: 55df5024-68a8-45a8-ae6c-e6dba35318a2 > 'function' : intrinsic function not declared +## Remarks + An `intrinsic` pragma uses an undeclared function (only occurs with **/Oi**). Or, one of the compiler intrinsics was used without including its header file. +## Example + The following sample generates C2164: ```c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2165.md b/docs/error-messages/compiler-errors-1/compiler-error-c2165.md index 85fdf065e5e..9355bdf3281 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2165.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2165.md @@ -10,8 +10,12 @@ ms.assetid: b108313b-b8cb-4dce-b2ec-f2b31c9cdc87 > 'keyword' : cannot modify pointers to data +## Remarks + The **`__stdcall`**, **`__cdecl`**, or **`__fastcall`** keyword attempts to modify a pointer to data. +## Example + The following sample generates C2165: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2167.md b/docs/error-messages/compiler-errors-1/compiler-error-c2167.md index bbdb6497069..2c5bb406766 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2167.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2167.md @@ -10,4 +10,6 @@ ms.assetid: 3de3de96-12cd-47df-b24e-34cc9747ef83 > 'function' : too many actual parameters for intrinsic function +## Remarks + A reference to an `intrinsic` function has too many parameters. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2168.md b/docs/error-messages/compiler-errors-1/compiler-error-c2168.md index 07b70732f05..a9eae8322df 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2168.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2168.md @@ -10,4 +10,6 @@ ms.assetid: 625e7dc3-ca74-4980-8268-8d5c0245e376 > 'function' : too few actual parameters for intrinsic function +## Remarks + A reference to an `intrinsic` function has too few parameters. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2169.md b/docs/error-messages/compiler-errors-1/compiler-error-c2169.md index 08594947863..031d6a56e9d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2169.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2169.md @@ -10,4 +10,6 @@ ms.assetid: 97f700bd-1044-46f5-b276-3d7570ee7708 > 'function' : intrinsic function, cannot be defined +## Remarks + A function definition appears for a function already declared `intrinsic`. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2171.md b/docs/error-messages/compiler-errors-1/compiler-error-c2171.md index fc1bce5b04c..bdbacd8b325 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2171.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2171.md @@ -10,6 +10,8 @@ ms.assetid: a80343b5-ab3f-4413-b6f1-3ce9d7e519e5 > 'operator' : illegal on operands of type 'type' +## Remarks + A unary operator is used with an invalid operand type. ## Examples diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2172.md b/docs/error-messages/compiler-errors-1/compiler-error-c2172.md index a7aff4fb950..21830a8f6dd 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2172.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2172.md @@ -10,4 +10,6 @@ ms.assetid: 31183ea7-858d-4273-932a-d865af7059b1 > 'function' : actual parameter is not a pointer : parameter number +## Remarks + Parameter `number` is not a pointer. The function expects a pointer. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2173.md b/docs/error-messages/compiler-errors-1/compiler-error-c2173.md index 5dfb990cd21..cc8ed5f830b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2173.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2173.md @@ -10,4 +10,6 @@ ms.assetid: 4df592b8-609b-41a5-b4fc-966eb5bb2d1a > 'function' : actual parameter is not a pointer : parameter number1, parameter list number2 +## Remarks + Parameter `number1` passed to parameter list `number2` is not a pointer. The function expects a pointer. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2174.md b/docs/error-messages/compiler-errors-1/compiler-error-c2174.md index 8f780a82f60..0954a45e3b4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2174.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2174.md @@ -10,4 +10,6 @@ ms.assetid: 161d563c-76e9-47e9-9142-7812e9ea169e > 'function' : actual parameter has type 'void' : parameter number1, parameter list number2 +## Remarks + Parameter `number1` passed to parameter list `number2` is a **`void`** parameter. Parameters cannot have type **`void`**. Use **`void*`** instead. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2175.md b/docs/error-messages/compiler-errors-1/compiler-error-c2175.md index 95bd5c9e20a..0dc3373cd96 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2175.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2175.md @@ -10,4 +10,6 @@ ms.assetid: 3a8fa90b-2b29-414a-bb55-cf27c2bf989a > 'locale' : invalid locale +## Remarks + The specified locale is not valid. See [Language and Country/Region Strings](../../c-runtime-library/locale-names-languages-and-country-region-strings.md) in the *Run-Time Library Reference* for supported locales. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2177.md b/docs/error-messages/compiler-errors-1/compiler-error-c2177.md index dd462bae296..4e4de822295 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2177.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2177.md @@ -10,8 +10,12 @@ ms.assetid: 2a39a880-cddb-4d3e-a572-645a14c4c478 > constant too big +## Remarks + A constant value is too large for the variable type it is assigned. +## Example + The following sample generates C2177: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2178.md b/docs/error-messages/compiler-errors-1/compiler-error-c2178.md index 377ea2b6be2..81d929a240e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2178.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2178.md @@ -10,6 +10,8 @@ ms.assetid: 79a14158-17f3-4221-bd06-9d675c49cef4 > '*identifier*' cannot be declared with '*specifier*' specifier +## Remarks + A **`mutable`** specifier was used in a declaration, but the specifier is not allowed in this context. The **`mutable`** specifier can be applied only to names of class data members, and cannot be applied to names declared **`const`** or **`static`**, and cannot be applied to reference members. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2179.md b/docs/error-messages/compiler-errors-1/compiler-error-c2179.md index ffc0ceaa8bd..0a149450f0f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2179.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2179.md @@ -10,6 +10,8 @@ ms.assetid: f929bfc6-3964-4e54-87d6-7529b9b6c0b9 > 'type' : an attribute argument cannot use type parameters +## Remarks + A generic type parameter is resolved at runtime. However, an attribute parameter must be resolved at compile time. Therefore, you cannot use a generic type parameter as an argument to an attribute. ## Example diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2180.md b/docs/error-messages/compiler-errors-1/compiler-error-c2180.md index d6857d456a5..cd041d4c12e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2180.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2180.md @@ -10,8 +10,12 @@ ms.assetid: ea71b39e-b977-48a7-b7bd-af68ef5e263b > controlling expression has type 'type' +## Remarks + The controlling expression in an **`if`**, **`while`**, **`for`**, or **`do`** statement is an expression cast to **`void`**. To fix this issue, change the controlling expression to one that produces a **`bool`** or a type that can be converted to **`bool`**. +## Example + The following sample generates C2180: ```c From 0c98748bb53cb498b06cb134f423ac73bbe1597b Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 17 Jul 2025 22:32:16 +0800 Subject: [PATCH 1107/2255] Replace term "sample" with "example" for error references in range [C2161, C2180] --- docs/error-messages/compiler-errors-1/compiler-error-c2161.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2164.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2165.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2171.md | 4 ++-- docs/error-messages/compiler-errors-1/compiler-error-c2177.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2178.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2179.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2180.md | 2 +- 8 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2161.md b/docs/error-messages/compiler-errors-1/compiler-error-c2161.md index 7bb6e958929..28d91233055 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2161.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2161.md @@ -16,7 +16,7 @@ A macro definition ended with a token-pasting operator (##). ## Example -The following sample generates C2161: +The following example generates C2161: ```cpp // C2161.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2164.md b/docs/error-messages/compiler-errors-1/compiler-error-c2164.md index e8c7e910b22..723618b412d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2164.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2164.md @@ -16,7 +16,7 @@ An `intrinsic` pragma uses an undeclared function (only occurs with **/Oi**). Or ## Example -The following sample generates C2164: +The following example generates C2164: ```c // C2164.c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2165.md b/docs/error-messages/compiler-errors-1/compiler-error-c2165.md index 9355bdf3281..63c3aace6cf 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2165.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2165.md @@ -16,7 +16,7 @@ The **`__stdcall`**, **`__cdecl`**, or **`__fastcall`** keyword attempts to modi ## Example -The following sample generates C2165: +The following example generates C2165: ```cpp // C2165.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2171.md b/docs/error-messages/compiler-errors-1/compiler-error-c2171.md index bdbacd8b325..621e0324a6a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2171.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2171.md @@ -16,7 +16,7 @@ A unary operator is used with an invalid operand type. ## Examples -The following sample generates C2171. +The following example generates C2171. ```cpp // C2171.cpp @@ -30,7 +30,7 @@ int main() { } ``` -The following sample generates C2171. +The following example generates C2171. ```cpp // C2171_b.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2177.md b/docs/error-messages/compiler-errors-1/compiler-error-c2177.md index 4e4de822295..65da50f11d8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2177.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2177.md @@ -16,7 +16,7 @@ A constant value is too large for the variable type it is assigned. ## Example -The following sample generates C2177: +The following example generates C2177: ```cpp // C2177.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2178.md b/docs/error-messages/compiler-errors-1/compiler-error-c2178.md index 81d929a240e..9d0be77943b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2178.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2178.md @@ -18,7 +18,7 @@ The **`mutable`** specifier can be applied only to names of class data members, ## Example -The following sample shows how C2178 may occur, and how to fix it. +The following example shows how C2178 may occur, and how to fix it. ```cpp // C2178.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2179.md b/docs/error-messages/compiler-errors-1/compiler-error-c2179.md index 0a149450f0f..1c10c0be99f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2179.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2179.md @@ -16,7 +16,7 @@ A generic type parameter is resolved at runtime. However, an attribute parameter ## Example -The following sample generates C2179. +The following example generates C2179. ```cpp // C2179.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2180.md b/docs/error-messages/compiler-errors-1/compiler-error-c2180.md index cd041d4c12e..5e5109b06be 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2180.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2180.md @@ -16,7 +16,7 @@ The controlling expression in an **`if`**, **`while`**, **`for`**, or **`do`** s ## Example -The following sample generates C2180: +The following example generates C2180: ```c // C2180.c From dc59738ff5da2233f017d6b4bb263d6cdc7af46c Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 17 Jul 2025 22:35:24 +0800 Subject: [PATCH 1108/2255] Update metadata for error references in range [C2161, C2180] --- .../error-messages/compiler-errors-1/compiler-error-c2161.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2162.md | 2 +- .../error-messages/compiler-errors-1/compiler-error-c2163.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2164.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2165.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2167.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2168.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2169.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2170.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2171.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2172.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2173.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2174.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2175.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2177.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2178.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2179.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2180.md | 5 ++--- 18 files changed, 35 insertions(+), 52 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2161.md b/docs/error-messages/compiler-errors-1/compiler-error-c2161.md index 28d91233055..cab1ce72319 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2161.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2161.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2161" title: "Compiler Error C2161" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2161" +ms.date: 11/04/2016 f1_keywords: ["C2161"] helpviewer_keywords: ["C2161"] -ms.assetid: d6798821-13bb-4e60-924f-85f7bf955387 --- # Compiler Error C2161 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2162.md b/docs/error-messages/compiler-errors-1/compiler-error-c2162.md index b76cbb2783f..eb2b08aa201 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2162.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2162.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C2162" description: "Learn more about: Compiler Error C2162" -ms.date: "03/30/2025" +ms.date: 03/30/2025 f1_keywords: ["C2162"] helpviewer_keywords: ["C2162"] --- diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2163.md b/docs/error-messages/compiler-errors-1/compiler-error-c2163.md index aea0a631902..1fd73ce8bd0 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2163.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2163.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2163" title: "Compiler Error C2163" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2163" +ms.date: 11/04/2016 f1_keywords: ["C2163"] helpviewer_keywords: ["C2163"] -ms.assetid: 6428d1e9-1ba1-46fc-bbf6-91d6fef2734c --- # Compiler Error C2163 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2164.md b/docs/error-messages/compiler-errors-1/compiler-error-c2164.md index 723618b412d..5110e09126a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2164.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2164.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2164" title: "Compiler Error C2164" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2164" +ms.date: 11/04/2016 f1_keywords: ["C2164"] helpviewer_keywords: ["C2164"] -ms.assetid: 55df5024-68a8-45a8-ae6c-e6dba35318a2 --- # Compiler Error C2164 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2165.md b/docs/error-messages/compiler-errors-1/compiler-error-c2165.md index 63c3aace6cf..c205d3531eb 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2165.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2165.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2165" title: "Compiler Error C2165" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2165" +ms.date: 11/04/2016 f1_keywords: ["C2165"] helpviewer_keywords: ["C2165"] -ms.assetid: b108313b-b8cb-4dce-b2ec-f2b31c9cdc87 --- # Compiler Error C2165 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2167.md b/docs/error-messages/compiler-errors-1/compiler-error-c2167.md index 2c5bb406766..f893c4e0ff5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2167.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2167.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2167" title: "Compiler Error C2167" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2167" +ms.date: 11/04/2016 f1_keywords: ["C2167"] helpviewer_keywords: ["C2167"] -ms.assetid: 3de3de96-12cd-47df-b24e-34cc9747ef83 --- # Compiler Error C2167 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2168.md b/docs/error-messages/compiler-errors-1/compiler-error-c2168.md index a9eae8322df..e2fe0f0550c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2168.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2168.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2168" title: "Compiler Error C2168" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2168" +ms.date: 11/04/2016 f1_keywords: ["C2168"] helpviewer_keywords: ["C2168"] -ms.assetid: 625e7dc3-ca74-4980-8268-8d5c0245e376 --- # Compiler Error C2168 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2169.md b/docs/error-messages/compiler-errors-1/compiler-error-c2169.md index 031d6a56e9d..210ec567bc1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2169.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2169.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2169" title: "Compiler Error C2169" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2169" +ms.date: 11/04/2016 f1_keywords: ["C2169"] helpviewer_keywords: ["C2169"] -ms.assetid: 97f700bd-1044-46f5-b276-3d7570ee7708 --- # Compiler Error C2169 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2170.md b/docs/error-messages/compiler-errors-1/compiler-error-c2170.md index 7a4456441f5..a3e73e406fa 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2170.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2170.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2170" title: "Compiler Error C2170" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2170" +ms.date: 11/04/2016 f1_keywords: ["C2170"] helpviewer_keywords: ["C2170"] -ms.assetid: d5c663f0-2459-4e11-a8bf-a52b62f3c71d --- # Compiler Error C2170 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2171.md b/docs/error-messages/compiler-errors-1/compiler-error-c2171.md index 621e0324a6a..fb4d42de908 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2171.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2171.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2171" title: "Compiler Error C2171" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2171" +ms.date: 11/04/2016 f1_keywords: ["C2171"] helpviewer_keywords: ["C2171"] -ms.assetid: a80343b5-ab3f-4413-b6f1-3ce9d7e519e5 --- # Compiler Error C2171 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2172.md b/docs/error-messages/compiler-errors-1/compiler-error-c2172.md index 21830a8f6dd..55e01b5bb3a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2172.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2172.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2172" title: "Compiler Error C2172" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2172" +ms.date: 11/04/2016 f1_keywords: ["C2172"] helpviewer_keywords: ["C2172"] -ms.assetid: 31183ea7-858d-4273-932a-d865af7059b1 --- # Compiler Error C2172 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2173.md b/docs/error-messages/compiler-errors-1/compiler-error-c2173.md index cc8ed5f830b..fb92234298a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2173.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2173.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2173" title: "Compiler Error C2173" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2173" +ms.date: 11/04/2016 f1_keywords: ["C2173"] helpviewer_keywords: ["C2173"] -ms.assetid: 4df592b8-609b-41a5-b4fc-966eb5bb2d1a --- # Compiler Error C2173 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2174.md b/docs/error-messages/compiler-errors-1/compiler-error-c2174.md index 0954a45e3b4..fe6702545fe 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2174.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2174.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2174" title: "Compiler Error C2174" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2174" +ms.date: 11/04/2016 f1_keywords: ["C2174"] helpviewer_keywords: ["C2174"] -ms.assetid: 161d563c-76e9-47e9-9142-7812e9ea169e --- # Compiler Error C2174 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2175.md b/docs/error-messages/compiler-errors-1/compiler-error-c2175.md index 0dc3373cd96..32d47e23c22 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2175.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2175.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2175" title: "Compiler Error C2175" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2175" +ms.date: 11/04/2016 f1_keywords: ["C2175"] helpviewer_keywords: ["C2175"] -ms.assetid: 3a8fa90b-2b29-414a-bb55-cf27c2bf989a --- # Compiler Error C2175 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2177.md b/docs/error-messages/compiler-errors-1/compiler-error-c2177.md index 65da50f11d8..e448186bf1a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2177.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2177.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2177" title: "Compiler Error C2177" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2177" +ms.date: 11/04/2016 f1_keywords: ["C2177"] helpviewer_keywords: ["C2177"] -ms.assetid: 2a39a880-cddb-4d3e-a572-645a14c4c478 --- # Compiler Error C2177 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2178.md b/docs/error-messages/compiler-errors-1/compiler-error-c2178.md index 9d0be77943b..ce0dfb543fd 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2178.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2178.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2178" title: "Compiler Error C2178" -ms.date: "05/08/2017" +description: "Learn more about: Compiler Error C2178" +ms.date: 05/08/2017 f1_keywords: ["C2178"] helpviewer_keywords: ["C2178"] -ms.assetid: 79a14158-17f3-4221-bd06-9d675c49cef4 --- # Compiler Error C2178 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2179.md b/docs/error-messages/compiler-errors-1/compiler-error-c2179.md index 1c10c0be99f..2f9baef3385 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2179.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2179.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2179" title: "Compiler Error C2179" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2179" +ms.date: 11/04/2016 f1_keywords: ["C2179"] helpviewer_keywords: ["C2179"] -ms.assetid: f929bfc6-3964-4e54-87d6-7529b9b6c0b9 --- # Compiler Error C2179 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2180.md b/docs/error-messages/compiler-errors-1/compiler-error-c2180.md index 5e5109b06be..d9f8803ca2b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2180.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2180.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2180" title: "Compiler Error C2180" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2180" +ms.date: 11/04/2016 f1_keywords: ["C2180"] helpviewer_keywords: ["C2180"] -ms.assetid: ea71b39e-b977-48a7-b7bd-af68ef5e263b --- # Compiler Error C2180 From eccf691d24eac56de752d27c4d701013fe87324d Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 17 Jul 2025 13:27:26 -0700 Subject: [PATCH 1109/2255] small updates --- .../tutorials/build-insights-template-view.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/build-insights/tutorials/build-insights-template-view.md b/docs/build-insights/tutorials/build-insights-template-view.md index c9a57fe3234..659a9f8c91f 100644 --- a/docs/build-insights/tutorials/build-insights-template-view.md +++ b/docs/build-insights/tutorials/build-insights-template-view.md @@ -111,7 +111,7 @@ Template instantiation time collection is off by default to minimize build overh ## Run Build Insights to get template instantiation data -From the main menu, select **Build** > **Run Build Insights on Selection** > **Rebuild**. You can also right-click a project in Solution Explorer and select **Run Build Insights** > **Rebuild**. Choose **Rebuild** instead of **Build** to measure the build time for the entire project. +From the main menu, select **Build** > **Run Build Insights on Solution** > **Rebuild**. You can also right-click a project in Solution Explorer and select **Run Build Insights** > **Rebuild**. Choose **Rebuild** instead of **Build** to measure the build time for the entire project. :::image type="content" source="./media/build-insights-rebuild-project.png" alt-text="Screenshot of the main menu with Run Build Insights on Selection > Rebuild selected."::: @@ -126,7 +126,7 @@ The **Templates** view lists the template instantiations that contributed signif - **Translation Unit** shows the source files where each template instantiation happens. Different files can cause the same template instantiation if they include the same header with the template definition. - **Instantiation File Name** shows where the template is defined. -:::image type="complex" source="./media/templates-view-before-fix.png" alt-text="Screenshot of the Build Insights Templates view showing expensive template instantiations."::: +:::image type="complex" source="./media/templates-view-before-fix.png" alt-text="Screenshot of the Build Insights Templates view showing expensive template instantiations." lightbox="./media/templates-view-before-fix.png"::: The Templates view shows two template instantiations of struct S3 taking most (79.448 percent) of the build time. The Translation Unit column shows that both LargeValue.cpp and SmallValue.cpp are affected. The build time is 4.066 seconds. :::image-end::: @@ -136,7 +136,7 @@ The Templates view shows two template instantiations of struct S3 taking most (7 ### Understanding Templates view results -When interpreting Templates view results, consider the following: +To interpret the **Templates** view results: - **Empty view**: If nothing shows up in the **Templates** view, template instantiations don't dominate your build time. That's good news because your templates aren't a build bottleneck. - **Duplicate instantiations**: If the same template instantiation appears multiple times across different translation units, different source files are causing the same expensive instantiation. This is often the biggest optimization opportunity. @@ -145,9 +145,9 @@ When interpreting Templates view results, consider the following: ## Improve build time by optimizing template instantiations -In this example, two template instantiations of `S3` take 79 percent of the build time. The **Translation Unit** column shows that both `SmallValue.cpp` and `LargeValue.cpp` cause this template instantiation. +In the example, two template instantiations of `S3` take 79 percent of the build time. The **Translation Unit** column shows that both `SmallValue.cpp` and `LargeValue.cpp` cause this template instantiation. -Because the **Instantiation File Name** and the **Specialization Name** are the same for both entries, there's one expensive template instantiation that affects both source files. That's why the time for each of the two template instantiations is roughly equal. Including `Templates.h` in both source files causes one template instantiation to add significant time to the build. +The **Instantiation File Name** and the **Specialization Name** are the same for both entries, which means one expensive template instantiation that affects both source files. That's why the time for each of the two template instantiations is roughly equal. Including `Templates.h` in both source files causes one template instantiation to add significant time to the build. From the **Specialization Name** column, the expensive instantiation is `S3>`, which is instantiated in this code in `Templates.h`: @@ -158,7 +158,7 @@ inline size_t LargeValue() }; ``` -Here are three main ways to decrease the cost of template instantiations. +There are three main ways to decrease the cost of template instantiations. ### Remove unused templates @@ -170,7 +170,7 @@ Consider removing include directives that bring in unnecessary template instanti In this example, rely on the third approach: move the definition that causes the expensive template instantiation to a source file. -Because `LargeValue.cpp` is the only source file that calls `LargeValue()`, move the definition to `LargeValue.cpp`. This change prevents the template instantiation from happening in every translation unit that includes `Templates.h`. Remove the current definition of `LargeValue()` from `Templates.h` and replace it with a declaration: +Because `LargeValue.cpp` is the only source file that calls `LargeValue()`, move the definition to `LargeValue.cpp`. This change prevents the template instantiation from happening in every file that includes `Templates.h`. Remove the current definition of `LargeValue()` from `Templates.h` and replace it with a declaration: ```cpp size_t LargeValue(); @@ -189,7 +189,7 @@ Rebuild the project and run Build Insights again from the main menu. Select **Bu The build time decreases. While the template instantiation of `S3` still contributes to the build time, including only necessary template instantiations cuts the build time nearly in half. The count of `S3` instantiations is now one instead of two. -:::image type="complex" source="./media/templates-view-after-fix.png" alt-text="Screenshot of the Build Insights Templates view after optimization. The view shows reduced template instantiation time."::: +:::image type="complex" source="./media/templates-view-after-fix.png" alt-text="Screenshot of the Build Insights Templates view after optimization. The view shows reduced template instantiation time." lightbox="./media/templates-view-after-fix.png"::: The Templates view now shows only one instantiation of S3 instead of two, and the total build time is significantly less at 3.152 seconds. :::image-end::: @@ -208,7 +208,7 @@ For more advanced template optimization techniques, see [Build Throughput Series ## Tips - Use **File** > **Save As** to save the ETL file to a more permanent location to keep a record of the build time information. You can then compare it to future builds to see how your changes are improving things. -- If you close the Build Insights window, reopen it by finding the `.etl` file either where you specified it should be saved, or in your temporary folder. The `TEMP` Windows environment variable provides the path of your temporary files folder. +- If you close the Build Insights window, reopen it by finding the *dateandtime*.etl file either where you specified it should be saved, or in your temporary folder. The `TEMP` Windows environment variable provides the path of your temporary files folder. - Drag columns to change the order of the columns. For example, you might want to move the **Wall Time Responsibility** column to the first column. You can add or hide columns by right-clicking the column header and selecting or deselecting the columns you want. - The **Templates** view has a filter box to help you find a specific template instantiation. It does partial matches on the name you provide. From 462cb9338103e556a8827c090a27e2c6cc79947b Mon Sep 17 00:00:00 2001 From: Raymond Chen Date: Thu, 17 Jul 2025 14:43:37 -0700 Subject: [PATCH 1110/2255] Simplify Callback overloads by using template parameter packs (#5983) The event.h definition now uses template parameter packs, so update the documentation to match. --- docs/cppcx/wrl/callback-function-wrl.md | 184 +----------------------- 1 file changed, 4 insertions(+), 180 deletions(-) diff --git a/docs/cppcx/wrl/callback-function-wrl.md b/docs/cppcx/wrl/callback-function-wrl.md index 777ea551af4..dd804d4df02 100644 --- a/docs/cppcx/wrl/callback-function-wrl.md +++ b/docs/cppcx/wrl/callback-function-wrl.md @@ -20,166 +20,14 @@ template< ComPtr Callback( TCallback callback ); -template< - typename TDelegateInterface, - typename TCallbackObject -> -ComPtr Callback( - _In_ TCallbackObject *object, - _In_ HRESULT (TCallbackObject::* method)() -); -template< - typename TDelegateInterface, - typename TCallbackObject, - typename TArg1 -> -ComPtr Callback( - _In_ TCallbackObject *object, - _In_ HRESULT (TCallbackObject::* method)(TArg1) -); -template< - typename TDelegateInterface, - typename TCallbackObject, - typename TArg1, - typename TArg2 -> -ComPtr Callback( - _In_ TCallbackObject *object, - _In_ HRESULT (TCallbackObject::* method)(TArg1, - TArg2) -); -template< - typename TDelegateInterface, - typename TCallbackObject, - typename TArg1, - typename TArg2, - typename TArg3 -> -ComPtr Callback( - _In_ TCallbackObject *object, - _In_ HRESULT (TCallbackObject::* method)(TArg1, - TArg2, - TArg3) -); -template< - typename TDelegateInterface, - typename TCallbackObject, - typename TArg1, - typename TArg2, - typename TArg3, - typename TArg4 -> -ComPtr Callback( - _In_ TCallbackObject *object, - _In_ HRESULT (TCallbackObject::* method)(TArg1, - TArg2, - TArg3, - TArg4) -); -template< - typename TDelegateInterface, - typename TCallbackObject, - typename TArg1, - typename TArg2, - typename TArg3, - typename TArg4, - typename TArg5 -> -ComPtr Callback( - _In_ TCallbackObject *object, - _In_ HRESULT (TCallbackObject::* method)(TArg1, - TArg2, - TArg3, - TArg4, - TArg5) -); -template< - typename TDelegateInterface, - typename TCallbackObject, - typename TArg1, - typename TArg2, - typename TArg3, - typename TArg4, - typename TArg5, - typename TArg6 -> -ComPtr Callback( - _In_ TCallbackObject *object, - _In_ HRESULT (TCallbackObject::* method)(TArg1, - TArg2, - TArg3, - TArg4, - TArg5, - TArg6) -); template< typename TDelegateInterface, typename TCallbackObject, - typename TArg1, - typename TArg2, - typename TArg3, - typename TArg4, - typename TArg5, - typename TArg6, - typename TArg7 + typename... TArgs > ComPtr Callback( _In_ TCallbackObject *object, - _In_ HRESULT (TCallbackObject::* method)(TArg1, - TArg2, - TArg3, - TArg4, - TArg5, - TArg6, - TArg7) -); -template< - typename TDelegateInterface, - typename TCallbackObject, - typename TArg1, - typename TArg2, - typename TArg3, - typename TArg4, - typename TArg5, - typename TArg6, - typename TArg7, - typename TArg8 -> -ComPtr Callback( - _In_ TCallbackObject *object, - _In_ HRESULT (TCallbackObject::* method)(TArg1, - TArg2, - TArg3, - TArg4, - TArg5, - TArg6, - TArg7, - TArg8) -); -template< - typename TDelegateInterface, - typename TCallbackObject, - typename TArg1, - typename TArg2, - typename TArg3, - typename TArg4, - typename TArg5, - typename TArg6, - typename TArg7, - typename TArg8, - typename TArg9 -> -ComPtr Callback( - _In_ TCallbackObject *object, - _In_ HRESULT (TCallbackObject::* method)(TArg1, - TArg2, - TArg3, - TArg4, - TArg5, - TArg6, - TArg7, - TArg8, - TArg9) + _In_ HRESULT (TCallbackObject::* method)(TArgs...) ); ``` @@ -194,32 +42,8 @@ A template parameter that specifies the type of an object that represents an obj *TCallbackObject*
A template parameter that specifies the object whose member function is the method to call when an event occurs. -*TArg1*
-A template parameter that specifies the type of the first callback method argument. - -*TArg2*
-A template parameter that specifies the type of the second callback method argument. - -*TArg3*
-A template parameter that specifies the type of the third callback method argument. - -*TArg4*
-A template parameter that specifies the type of the fourth callback method argument. - -*TArg5*
-A template parameter that specifies the type of the fifth callback method argument. - -*TArg6*
-A template parameter that specifies the type of the sixth callback method argument. - -*TArg7*
-A template parameter that specifies the type of the seventh callback method argument. - -*TArg8*
-A template parameter that specifies the type of the eighth callback method argument. - -*TArg9*
-A template parameter that specifies the type of the ninth callback method argument. +*TArgs*
+A template parameter pack that specifies the types of the callback method arguments. *callback*
An object that represents the callback object and its member function. From ac99b48ed08dc36fcb2bd0af5bc28630c6064d85 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 17 Jul 2025 17:46:12 -0700 Subject: [PATCH 1111/2255] add metadata --- docs/build-insights/tutorials/build-insights-template-view.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/build-insights/tutorials/build-insights-template-view.md b/docs/build-insights/tutorials/build-insights-template-view.md index c9a57fe3234..0a4e4850e5f 100644 --- a/docs/build-insights/tutorials/build-insights-template-view.md +++ b/docs/build-insights/tutorials/build-insights-template-view.md @@ -1,9 +1,10 @@ --- title: "Troubleshoot template instantiation impact on build time" description: "Tutorial for how to use Build Insights template view to analyze and optimize the impact of template instantiations on build time in your C++ projects." -ms.date: 07/14/2025 +ms.date: 07/17/2025 helpviewer_keywords: ["C++ Build Insights", "template instantiation analysis", "build time analysis"] ms.topic: troubleshooting-general +ai-usage: ai-assisted --- # Troubleshoot template instantiation impact on build time From 369242ac77590e7de27ff3aac1978e6a64c20db3 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 18 Jul 2025 16:09:49 +0800 Subject: [PATCH 1112/2255] Clean up links to removed "What's new for the Microsoft C++ docs" article --- docs/overview/what-s-new-for-cpp-2017.md | 2 +- docs/overview/what-s-new-for-cpp-2019.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/overview/what-s-new-for-cpp-2017.md b/docs/overview/what-s-new-for-cpp-2017.md index ada04edf007..d30dc9febd5 100644 --- a/docs/overview/what-s-new-for-cpp-2017.md +++ b/docs/overview/what-s-new-for-cpp-2017.md @@ -10,7 +10,7 @@ ms.custom: intro-whats-new Visual Studio 2017 brings many updates and fixes to the C++ environment. We've fixed over 250 bugs and reported issues in the compiler and tools. Many were submitted by customers through the [Report a Problem and Provide a Suggestion](/visualstudio/ide/how-to-report-a-problem-with-visual-studio?view=vs-2017&preserve-view=true) options under **Send Feedback**. Thank you for reporting bugs! -For more information on what's new in all of Visual Studio, see [What's new in Visual Studio 2017](/visualstudio/ide/whats-new-visual-studio-2017?view=vs-2017&preserve-view=true). For information on what's new for C++ in Visual Studio 2019, see [What's new for C++ in Visual Studio 2019](what-s-new-for-visual-cpp-in-visual-studio.md?preserve-view=true&view=msvc-160). For information on what's new for C++ in Visual Studio 2015 and earlier versions, see [Visual C++ What's New 2003 through 2015](../porting/visual-cpp-what-s-new-2003-through-2015.md). For information about what's new in the C++ docs, see [Microsoft C++ docs: What's new](whats-new-cpp-docs.md). +For more information on what's new in all of Visual Studio, see [What's new in Visual Studio 2017](/visualstudio/ide/whats-new-visual-studio-2017?view=vs-2017&preserve-view=true). For information on what's new for C++ in Visual Studio 2019, see [What's new for C++ in Visual Studio 2019](what-s-new-for-visual-cpp-in-visual-studio.md?preserve-view=true&view=msvc-160). For information on what's new for C++ in Visual Studio 2015 and earlier versions, see [Visual C++ What's New 2003 through 2015](../porting/visual-cpp-what-s-new-2003-through-2015.md). ## Visual Studio 2017 C++ compiler diff --git a/docs/overview/what-s-new-for-cpp-2019.md b/docs/overview/what-s-new-for-cpp-2019.md index 78890488068..e79f0e6d590 100644 --- a/docs/overview/what-s-new-for-cpp-2019.md +++ b/docs/overview/what-s-new-for-cpp-2019.md @@ -10,7 +10,7 @@ ms.custom: intro-whats-new Visual Studio 2019 brings many updates and fixes to the Microsoft C++ environment. We've fixed many bugs and issues in the compiler and tools. Many of these issues were submitted by customers through the [Report a Problem](/visualstudio/ide/how-to-report-a-problem-with-visual-studio?view=vs-2019&preserve-view=true) and [Provide a Suggestion](https://aka.ms/feedback/suggest?space=62) options under **Send Feedback**. Thank you for reporting bugs! -For more information on what's new in all of Visual Studio, visit [What's new in Visual Studio 2019](/visualstudio/ide/whats-new-visual-studio-2019). For information on what's new for C++ in Visual Studio 2017, see [What's new for C++ in Visual Studio 2017](what-s-new-for-cpp-2017.md). For information on what's new for C++ in Visual Studio 2015 and earlier versions, see [Visual C++ What's New 2003 through 2015](../porting/visual-cpp-what-s-new-2003-through-2015.md). For more information, see [Microsoft C++ docs: What's new](whats-new-cpp-docs.md). +For more information on what's new in all of Visual Studio, visit [What's new in Visual Studio 2019](/visualstudio/ide/whats-new-visual-studio-2019). For information on what's new for C++ in Visual Studio 2017, see [What's new for C++ in Visual Studio 2017](what-s-new-for-cpp-2017.md). For information on what's new for C++ in Visual Studio 2015 and earlier versions, see [Visual C++ What's New 2003 through 2015](../porting/visual-cpp-what-s-new-2003-through-2015.md). ## What's new for C++ in Visual Studio version 16.11 From 55acdad9fc7495727448a9b9c1e1dba005487418 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 18 Jul 2025 16:52:04 +0800 Subject: [PATCH 1113/2255] Trim all trailing spaces in "Troubleshoot template instantiation impact on build time" topic --- .../tutorials/build-insights-template-view.md | 64 +++++++++---------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/docs/build-insights/tutorials/build-insights-template-view.md b/docs/build-insights/tutorials/build-insights-template-view.md index d4cd01924b6..d9eecb68a1b 100644 --- a/docs/build-insights/tutorials/build-insights-template-view.md +++ b/docs/build-insights/tutorials/build-insights-template-view.md @@ -21,7 +21,7 @@ The **Templates** view works like the Build Insights [Functions view](build-insi 1. Select **Modify** to change your Visual Studio installation. 1. On the **Individual components** tab, search for and select **C++ Build Insights**, then select **Close** to finish installing the component. :::image type="content" source="./media/installer-build-insights.png" alt-text="Screenshot of the Visual Studio Installer. The search box contains C++ Build Insights. The item C++ Build Insights is visible and selected."::: - + ## Overview Build Insights, integrated into Visual Studio, helps you optimize your build times--especially for large projects like AAA games. Build Insights provides analytics such as the **Templates** view, which shows the time it takes to instantiate each template and which template instantiations add the most to your build time. @@ -36,55 +36,55 @@ In this article, you create a project that shows how template instantiation affe 1. Create a header file named `Templates.h`, then replace its contents with the following code: ```cpp - #pragma once - #include - #include - - template struct S1 {}; - template using type = std::vector>; - - template struct S2 {}; - - template struct S3 {}; - - template + #pragma once + #include + #include + + template struct S1 {}; + template using type = std::vector>; + + template struct S2 {}; + + template struct S3 {}; + + template struct S3> - { - using type = S2)...>; - }; - + { + using type = S2)...>; + }; + inline size_t LargeValue() - { - return sizeof(S3>); - }; - + { + return sizeof(S3>); + }; + inline size_t SmallValue() - { - return sizeof(S1<5>); - } + { + return sizeof(S1<5>); + } ``` 1. Create a source file named `LargeValue.cpp`, then replace its contents with the following code: ```cpp - #include "Templates.h" + #include "Templates.h" size_t GetLargeValue() - { - return LargeValue(); - } + { + return LargeValue(); + } ``` 1. Replace the contents of the `TemplateAnalysis.cpp` file with the following code: ```cpp - #include "Templates.h" + #include "Templates.h" extern size_t GetLargeValue(); size_t GetSmallValue() - { - return SmallValue(); + { + return SmallValue(); } int main() @@ -107,7 +107,7 @@ Template instantiation time collection is off by default to minimize build overh :::image type="content" source="./media/tools-options-build-insights.png" alt-text="Screenshot of the project property pages dialog. The settings are open to Build Insights > Trace Collection. The Collect Template Instantiation checkbox is selected."::: -> [!Note] +> [!Note] > Collecting template instantiation times increases build time due to the extra data collected. Only enable it when you want to analyze template instantiation bottlenecks. ## Run Build Insights to get template instantiation data From fdd565c6e39dfc418bac42848afe2464f8f69c3f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 18 Jul 2025 16:56:05 +0800 Subject: [PATCH 1114/2255] Remove superfluous semicolons and format code snippets in "Troubleshoot template instantiation impact on build time" topic --- .../build-insights/tutorials/build-insights-template-view.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/build-insights/tutorials/build-insights-template-view.md b/docs/build-insights/tutorials/build-insights-template-view.md index d9eecb68a1b..c70f5afc50a 100644 --- a/docs/build-insights/tutorials/build-insights-template-view.md +++ b/docs/build-insights/tutorials/build-insights-template-view.md @@ -37,6 +37,7 @@ In this article, you create a project that shows how template instantiation affe ```cpp #pragma once + #include #include @@ -56,7 +57,7 @@ In this article, you create a project that shows how template instantiation affe inline size_t LargeValue() { return sizeof(S3>); - }; + } inline size_t SmallValue() { @@ -156,7 +157,7 @@ From the **Specialization Name** column, the expensive instantiation is `S3>); -}; +} ``` There are three main ways to decrease the cost of template instantiations. From e4f4427a0e5feb2e4aeeb72f7bb15862a59e8e3a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 18 Jul 2025 17:03:49 +0800 Subject: [PATCH 1115/2255] Remove erroneous mentions of `SmallValue.cpp` in "Troubleshoot template instantiation impact on build time" topic --- docs/build-insights/tutorials/build-insights-template-view.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build-insights/tutorials/build-insights-template-view.md b/docs/build-insights/tutorials/build-insights-template-view.md index c70f5afc50a..9eff60080bc 100644 --- a/docs/build-insights/tutorials/build-insights-template-view.md +++ b/docs/build-insights/tutorials/build-insights-template-view.md @@ -129,7 +129,7 @@ The **Templates** view lists the template instantiations that contributed signif - **Instantiation File Name** shows where the template is defined. :::image type="complex" source="./media/templates-view-before-fix.png" alt-text="Screenshot of the Build Insights Templates view showing expensive template instantiations." lightbox="./media/templates-view-before-fix.png"::: -The Templates view shows two template instantiations of struct S3 taking most (79.448 percent) of the build time. The Translation Unit column shows that both LargeValue.cpp and SmallValue.cpp are affected. The build time is 4.066 seconds. +The Templates view shows two template instantiations of struct S3 taking most (79.448 percent) of the build time. The Translation Unit column shows that both LargeValue.cpp and TemplateAnalysis.cpp are affected. The build time is 4.066 seconds. :::image-end::: - Sort by **Time** to find the templates that take the longest to instantiate. @@ -147,7 +147,7 @@ To interpret the **Templates** view results: ## Improve build time by optimizing template instantiations -In the example, two template instantiations of `S3` take 79 percent of the build time. The **Translation Unit** column shows that both `SmallValue.cpp` and `LargeValue.cpp` cause this template instantiation. +In the example, two template instantiations of `S3` take 79 percent of the build time. The **Translation Unit** column shows that both `LargeValue.cpp` and `TemplateAnalysis.cpp` cause this template instantiation. The **Instantiation File Name** and the **Specialization Name** are the same for both entries, which means one expensive template instantiation that affects both source files. That's why the time for each of the two template instantiations is roughly equal. Including `Templates.h` in both source files causes one template instantiation to add significant time to the build. From e22eb527be6983b45e43ae85884aed8b086f5870 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 18 Jul 2025 17:06:33 +0800 Subject: [PATCH 1116/2255] Fix wrong build time value for image in "Troubleshoot template instantiation impact on build time" topic --- docs/build-insights/tutorials/build-insights-template-view.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build-insights/tutorials/build-insights-template-view.md b/docs/build-insights/tutorials/build-insights-template-view.md index 9eff60080bc..e8c26762e61 100644 --- a/docs/build-insights/tutorials/build-insights-template-view.md +++ b/docs/build-insights/tutorials/build-insights-template-view.md @@ -129,7 +129,7 @@ The **Templates** view lists the template instantiations that contributed signif - **Instantiation File Name** shows where the template is defined. :::image type="complex" source="./media/templates-view-before-fix.png" alt-text="Screenshot of the Build Insights Templates view showing expensive template instantiations." lightbox="./media/templates-view-before-fix.png"::: -The Templates view shows two template instantiations of struct S3 taking most (79.448 percent) of the build time. The Translation Unit column shows that both LargeValue.cpp and TemplateAnalysis.cpp are affected. The build time is 4.066 seconds. +The Templates view shows two template instantiations of struct S3 taking most (79.448 percent) of the build time. The Translation Unit column shows that both LargeValue.cpp and TemplateAnalysis.cpp are affected. The build time is 4.966 seconds. :::image-end::: - Sort by **Time** to find the templates that take the longest to instantiate. From ecb27fed0029ca99ab32380d743b048c963e2b50 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 18 Jul 2025 17:11:45 +0800 Subject: [PATCH 1117/2255] Nits for "Troubleshoot template instantiation impact on build time" topic --- docs/build-insights/tutorials/build-insights-template-view.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build-insights/tutorials/build-insights-template-view.md b/docs/build-insights/tutorials/build-insights-template-view.md index e8c26762e61..47382cff0bd 100644 --- a/docs/build-insights/tutorials/build-insights-template-view.md +++ b/docs/build-insights/tutorials/build-insights-template-view.md @@ -108,7 +108,7 @@ Template instantiation time collection is off by default to minimize build overh :::image type="content" source="./media/tools-options-build-insights.png" alt-text="Screenshot of the project property pages dialog. The settings are open to Build Insights > Trace Collection. The Collect Template Instantiation checkbox is selected."::: -> [!Note] +> [!NOTE] > Collecting template instantiation times increases build time due to the extra data collected. Only enable it when you want to analyze template instantiation bottlenecks. ## Run Build Insights to get template instantiation data @@ -232,4 +232,4 @@ For more advanced template optimization techniques, see [Build Throughput Series - [Troubleshoot header file impact on build time](build-insights-included-files-view.md) - [Troubleshoot function inlining on build time](build-insights-function-view.md) - [Build Insights now available in Visual Studio 2022](https://devblogs.microsoft.com/cppblog/build-insights-now-available-in-visual-studio-2022) -- [Build throughput series: More efficient template metaprogramming](https://devblogs.microsoft.com/cppblog/build-throughput-series-more-efficient-template-metaprogramming) \ No newline at end of file +- [Build throughput series: More efficient template metaprogramming](https://devblogs.microsoft.com/cppblog/build-throughput-series-more-efficient-template-metaprogramming) From 0d52b228b7cea0b234dd55d2fe9b0b074cfbed5f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 18 Jul 2025 17:40:07 +0800 Subject: [PATCH 1118/2255] Fix invalid `std::` prefix for `public` keyword in `value_compare` class reference --- docs/standard-library/value-compare-class.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard-library/value-compare-class.md b/docs/standard-library/value-compare-class.md index 9777faa45ae..b4cc44b5dbf 100644 --- a/docs/standard-library/value-compare-class.md +++ b/docs/standard-library/value-compare-class.md @@ -14,7 +14,7 @@ Provides a function object that can compare the elements of a hash_map by compar ```cpp class value_compare - : std::public binary_function + : public binary_function { public: bool operator()( From 0c929e06fb010132c9f2977f399d7ca8d1f782e9 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 18 Jul 2025 17:45:07 +0800 Subject: [PATCH 1119/2255] Add backticks in `value_compare` class reference --- docs/standard-library/value-compare-class.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/standard-library/value-compare-class.md b/docs/standard-library/value-compare-class.md index b4cc44b5dbf..c0878dac103 100644 --- a/docs/standard-library/value-compare-class.md +++ b/docs/standard-library/value-compare-class.md @@ -6,9 +6,9 @@ f1_keywords: ["hash_map/std::value_compare"] helpviewer_keywords: ["value_compare class"] ms.assetid: c306c5b9-3505-4357-aa6b-216451b951ed --- -# value_compare Class +# `value_compare` Class -Provides a function object that can compare the elements of a hash_map by comparing the values of their keys to determine their relative order in the hash_map. +Provides a function object that can compare the elements of a `hash_map` by comparing the values of their keys to determine their relative order in the `hash_map`. ## Syntax @@ -32,22 +32,22 @@ protected: ## Remarks -The comparison criteria provided by value_compare between `value_types` of whole elements contained by a hash_map is induced from a comparison between the keys of the respective elements by the auxiliary class construction. The member function operator uses the object `comp` of type `key_compare` stored in the function object provided by value_compare to compare the sort-key components of two elements. +The comparison criteria provided by `value_compare` between `value_types` of whole elements contained by a `hash_map` is induced from a comparison between the keys of the respective elements by the auxiliary class construction. The member function operator uses the object `comp` of type `key_compare` stored in the function object provided by `value_compare` to compare the sort-key components of two elements. -For hash_sets and hash_multisets, which are simple containers where the key values are identical to the element values, value_compare is equivalent to `key_compare`; for hash_maps and hash_multimaps they are not, because the value of the type `pair` elements is not identical to the value of the element's key. +For `hash_set`s and `hash_multiset`s, which are simple containers where the key values are identical to the element values, `value_compare` is equivalent to `key_compare`; for `hash_map`s and `hash_multimap`s they are not, because the value of the type `pair` elements is not identical to the value of the element's key. ## Example -See the example for [hash_map::value_comp](../standard-library/hash-map-class.md#value_comp) for an example of how to declare and use value_compare. +See the example for [`hash_map::value_comp`](../standard-library/hash-map-class.md#value_comp) for an example of how to declare and use `value_compare`. ## Requirements -**Header:** \ +**Header:** `` -**Namespace:** stdext +**Namespace:** `stdext` ## See also -[binary_function Struct](../standard-library/binary-function-struct.md)\ +[`binary_function` Struct](../standard-library/binary-function-struct.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md)\ [C++ Standard Library Reference](../standard-library/cpp-standard-library-reference.md) From 02037fbae27755372bc332bd89ef1da14a1f44b3 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 18 Jul 2025 17:47:23 +0800 Subject: [PATCH 1120/2255] Simplify redundant relative links in `value_compare` class reference --- docs/standard-library/value-compare-class.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/standard-library/value-compare-class.md b/docs/standard-library/value-compare-class.md index c0878dac103..bf76bbbc0ba 100644 --- a/docs/standard-library/value-compare-class.md +++ b/docs/standard-library/value-compare-class.md @@ -38,7 +38,7 @@ For `hash_set`s and `hash_multiset`s, which are simple containers where the key ## Example -See the example for [`hash_map::value_comp`](../standard-library/hash-map-class.md#value_comp) for an example of how to declare and use `value_compare`. +See the example for [`hash_map::value_comp`](hash-map-class.md#value_comp) for an example of how to declare and use `value_compare`. ## Requirements @@ -48,6 +48,6 @@ See the example for [`hash_map::value_comp`](../standard-library/hash-map-class. ## See also -[`binary_function` Struct](../standard-library/binary-function-struct.md)\ -[Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md)\ -[C++ Standard Library Reference](../standard-library/cpp-standard-library-reference.md) +[`binary_function` Struct](binary-function-struct.md)\ +[Thread Safety in the C++ Standard Library](thread-safety-in-the-cpp-standard-library.md)\ +[C++ Standard Library Reference](cpp-standard-library-reference.md) From 2a713d653de1655f523f468fd3963f5c672dde5b Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 18 Jul 2025 17:48:05 +0800 Subject: [PATCH 1121/2255] Update metadata in `value_compare` class reference --- docs/standard-library/value-compare-class.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/standard-library/value-compare-class.md b/docs/standard-library/value-compare-class.md index bf76bbbc0ba..18f66856546 100644 --- a/docs/standard-library/value-compare-class.md +++ b/docs/standard-library/value-compare-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: value_compare Class" title: "value_compare Class" -ms.date: "11/04/2016" +description: "Learn more about: value_compare Class" +ms.date: 11/04/2016 f1_keywords: ["hash_map/std::value_compare"] helpviewer_keywords: ["value_compare class"] -ms.assetid: c306c5b9-3505-4357-aa6b-216451b951ed --- # `value_compare` Class From 08e76a74a43d04d8a0be03a857d27f9a31e48878 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 18 Jul 2025 18:11:24 +0800 Subject: [PATCH 1122/2255] Convert Project build errors and warnings list into a table --- ...oject-build-errors-and-warnings-prjxxxx.md | 84 ++++++++++--------- 1 file changed, 44 insertions(+), 40 deletions(-) diff --git a/docs/error-messages/tool-errors/project-build-errors-and-warnings-prjxxxx.md b/docs/error-messages/tool-errors/project-build-errors-and-warnings-prjxxxx.md index 8622e006449..5f2b64305df 100644 --- a/docs/error-messages/tool-errors/project-build-errors-and-warnings-prjxxxx.md +++ b/docs/error-messages/tool-errors/project-build-errors-and-warnings-prjxxxx.md @@ -12,49 +12,53 @@ This section is a reference to the errors generated by the Project build tools. ## Project build errors -[Project build error PRJ0002](project-build-error-prj0002.md) \ -[Project build error PRJ0003](project-build-error-prj0003.md) \ -[Project build error PRJ0004](project-build-error-prj0004.md) \ -[Project build error PRJ0005](project-build-error-prj0005.md) \ -[Project build error PRJ0006](project-build-error-prj0006.md) \ -[Project build error PRJ0007](project-build-error-prj0007.md) \ -[Project build error PRJ0008](project-build-error-prj0008.md) \ -[Project build error PRJ0009](project-build-error-prj0009.md) \ -[Project build error PRJ0013](project-build-error-prj0013.md) \ -[Project build error PRJ0014](project-build-error-prj0014.md) \ -[Project build error PRJ0015](project-build-error-prj0015.md) \ -[Project build error PRJ0016](project-build-error-prj0016.md) \ -[Project build error PRJ0017](project-build-error-prj0017.md) \ -[Project build error PRJ0019](project-build-error-prj0019.md) \ -[Project build error PRJ0020](project-build-error-prj0020.md) \ -[Project build error PRJ0021](project-build-error-prj0021.md) \ -[Project build error PRJ0022](project-build-error-prj0022.md) \ -[Project build error PRJ0023](project-build-error-prj0023.md) \ -[Project build error PRJ0024](project-build-error-prj0024.md) \ -[Project build error PRJ0025](project-build-error-prj0025.md) \ -[Project build error PRJ0026](project-build-error-prj0026.md) \ -[Project build error PRJ0027](project-build-error-prj0027.md) \ -[Project build error PRJ0028](project-build-error-prj0028.md) \ -[Project build error PRJ0030](project-build-error-prj0030.md) \ -[Project build error PRJ0031](project-build-error-prj0031.md) \ -[Project build error PRJ0032](project-build-error-prj0032.md) \ -[Project build error PRJ0033](project-build-error-prj0033.md) \ -[Project build error PRJ0034](project-build-error-prj0034.md) \ -[Project build error PRJ0035](project-build-error-prj0035.md) \ -[Project build error PRJ0036](project-build-error-prj0036.md) \ -[Project build error PRJ0040](project-build-error-prj0040.md) \ -[Project build error PRJ0044](project-build-error-prj0044.md) \ -[Project build error PRJ0046](project-build-error-prj0046.md) \ -[Project build error PRJ0047](project-build-error-prj0047.md) \ -[Project build error PRJ0050](project-build-error-prj0050.md) +| Error | Message | +|--|--| +| [Project build error PRJ0002](project-build-error-prj0002.md) | error result returned from '*command line*'. | +| [Project build error PRJ0003](project-build-error-prj0003.md) | Error spawning '*command line*'. | +| [Project build error PRJ0004](project-build-error-prj0004.md) | Could not generate command line for the '*tool*' tool. | +| [Project build error PRJ0005](project-build-error-prj0005.md) | Unable to create a temporary file in directory 'directory'. | +| [Project build error PRJ0006](project-build-error-prj0006.md) | Could not open the temporary file 'file'. Make sure the file exists and that the directory is not write-protected. | +| [Project build error PRJ0007](project-build-error-prj0007.md) | Could not create output directory 'directory'. | +| [Project build error PRJ0008](project-build-error-prj0008.md) | Could not delete file 'file'. | +| [Project build error PRJ0009](project-build-error-prj0009.md) | Build log could not be opened for writing. | +| [Project build error PRJ0013](project-build-error-prj0013.md) | System resource could be critically low. Unable to create a pipe required to launch a build. | +| [Project build error PRJ0014](project-build-error-prj0014.md) | The job object used to control the spawned processes has failed. The build cannot continue. | +| [Project build error PRJ0015](project-build-error-prj0015.md) | The NULL device is missing from your system. We are unable to launch a build. | +| [Project build error PRJ0016](project-build-error-prj0016.md) | The user's security settings prevent the process from being created. These settings are required for building. | +| [Project build error PRJ0017](project-build-error-prj0017.md) | The current working directory is invalid. | +| [Project build error PRJ0019](project-build-error-prj0019.md) | A tool returned an error code from | +| [Project build error PRJ0020](project-build-error-prj0020.md) | Tool '*tool*', Property '*property*' contains invalid file name '*file*'. | +| [Project build error PRJ0021](project-build-error-prj0021.md) | Tool '*tool*', Property '*property*' contains invalid file name. | +| [Project build error PRJ0022](project-build-error-prj0022.md) | Unknown Tool, Property '*property*' contains invalid file name '*file*'. | +| [Project build error PRJ0023](project-build-error-prj0023.md) | Tool '*tool*', Unknown Property contains invalid file name '*file*'. | +| [Project build error PRJ0024](project-build-error-prj0024.md) | Unicode path '*path*' could not be translated to user's ANSI code page. | +| [Project build error PRJ0025](project-build-error-prj0025.md) | Batch file '*file*' contains Unicode contents that could not be translated to user's ANSI code page. | +| [Project build error PRJ0026](project-build-error-prj0026.md) | Response file '*file*' contains Unicode contents that could not be translated to user's ANSI code page. | +| [Project build error PRJ0027](project-build-error-prj0027.md) | Unicode log message 'contents' contains content that could not be translated to the user's ANSI code page. | +| [Project build error PRJ0028](project-build-error-prj0028.md) | Temporary file 'file' contains Unicode contents that could not be translated to user's ANSI code page. | +| [Project build error PRJ0030](project-build-error-prj0030.md) | Macro expansion error. Evaluate recursion exceeded 32 levels for $(macro). | +| [Project build error PRJ0031](project-build-error-prj0031.md) | The 'Outputs' property for the custom build step for file 'file' contained 'macro' which evaluates out to 'macro_expansion'. | +| [Project build error PRJ0032](project-build-error-prj0032.md) | The 'Outputs' property for the project-level custom build step contained 'macro' which evaluates out to 'macro_expansion'. | +| [Project build error PRJ0033](project-build-error-prj0033.md) | The 'Additional Dependencies' property for the custom build step for file 'file' contained 'macro' which evaluates out to 'macro_expansion'. | +| [Project build error PRJ0034](project-build-error-prj0034.md) | The 'Additional Dependencies' property for the project-level custom build step contained 'macro' which evaluates out to 'macro_expansion'. | +| [Project build error PRJ0035](project-build-error-prj0035.md) | XML file '*file*' contains Unicode contents that could not be translated to user's ANSI code page. | +| [Project build error PRJ0036](project-build-error-prj0036.md) | The 'Additional Files' property for the Web Deployment Tool contained an invalid entry. | +| [Project build error PRJ0040](project-build-error-prj0040.md) | Internal error on build. Cannot continue. Please reload project and try again. | +| [Project build error PRJ0044](project-build-error-prj0044.md) | The 'Additional Dependencies' property for custom build rule 'rule' assigned to file 'file' is invalid. The property contained 'string' which evaluates to 'value'. | +| [Project build error PRJ0046](project-build-error-prj0046.md) | Could not spawn command line because the one specified was empty. | +| [Project build error PRJ0047](project-build-error-prj0047.md) | Could not resume the suspended process. The build has failed. | +| [Project build error PRJ0050](project-build-error-prj0050.md) | Failed to register output. Please ensure you have the appropriate permissions to modify the registry. | ## Project build warnings -[Project build warning PRJ0018](project-build-warning-prj0018.md) \ -[Project build warning PRJ0029](project-build-warning-prj0029.md) \ -[Project build warning PRJ0041](project-build-warning-prj0041.md) \ -[Project build warning PRJ0042](project-build-warning-prj0042.md) \ -[Project build warning PRJ0049](project-build-warning-prj0049.md) +| Warning | Message | +|--|--| +| [Project build warning PRJ0018](project-build-warning-prj0018.md) | The following environment variables were not found: | +| [Project build warning PRJ0029](project-build-warning-prj0029.md) | The 'Outputs' property for the project-level custom build step is not set. The custom build step will be skipped. | +| [Project build warning PRJ0041](project-build-warning-prj0041.md) | Cannot find missing dependency 'dependency' for file 'file'. Your project may still build, but may continue to appear out of date until this file is found. | +| [Project build warning PRJ0042](project-build-warning-prj0042.md) | The 'Outputs' property for the custom build step for file '*file*' is not set. The custom build step will be skipped. | +| [Project build warning PRJ0049](project-build-warning-prj0049.md) | Referenced target '\' requires .NET Framework \ and will fail to run on this project's target framework | ## See also From 847110c8aa367b0bd4005e9db942fba7f879e650 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 18 Jul 2025 18:12:16 +0800 Subject: [PATCH 1123/2255] Simplify superfluous relative links in "Project build errors and warnings (PRJxxxx)" --- .../tool-errors/project-build-errors-and-warnings-prjxxxx.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/tool-errors/project-build-errors-and-warnings-prjxxxx.md b/docs/error-messages/tool-errors/project-build-errors-and-warnings-prjxxxx.md index 5f2b64305df..05831c0e46f 100644 --- a/docs/error-messages/tool-errors/project-build-errors-and-warnings-prjxxxx.md +++ b/docs/error-messages/tool-errors/project-build-errors-and-warnings-prjxxxx.md @@ -8,7 +8,7 @@ ms.assetid: 79d223ed-986a-4536-8299-aec8356b449c This section is a reference to the errors generated by the Project build tools. Project build errors and warnings have the form PRJ*xxxx*, where *xxxx* is a four-digit number. -[!INCLUDE[error-boilerplate](../../error-messages/includes/error-boilerplate.md)] +[!INCLUDE[error-boilerplate](../includes/error-boilerplate.md)] ## Project build errors From e7454fcc10b781f7ae74e5d76e827cd56d069939 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 18 Jul 2025 18:12:42 +0800 Subject: [PATCH 1124/2255] Remove space before escape in "Project build errors and warnings (PRJxxxx)" --- .../tool-errors/project-build-errors-and-warnings-prjxxxx.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/tool-errors/project-build-errors-and-warnings-prjxxxx.md b/docs/error-messages/tool-errors/project-build-errors-and-warnings-prjxxxx.md index 05831c0e46f..7a4b89b0e8f 100644 --- a/docs/error-messages/tool-errors/project-build-errors-and-warnings-prjxxxx.md +++ b/docs/error-messages/tool-errors/project-build-errors-and-warnings-prjxxxx.md @@ -62,5 +62,5 @@ This section is a reference to the errors generated by the Project build tools. ## See also -[C/C++ Compiler and build tools errors and warnings](../compiler-errors-1/c-cpp-build-errors.md) \ +[C/C++ Compiler and build tools errors and warnings](../compiler-errors-1/c-cpp-build-errors.md)\ [Visual Studio projects | C++](../../build/creating-and-managing-visual-cpp-projects.md) From 730c53d95648dd84be8a8f8839901131b77e195e Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 18 Jul 2025 18:14:36 +0800 Subject: [PATCH 1125/2255] Update metadata in "Project build errors and warnings (PRJxxxx)" --- .../tool-errors/project-build-errors-and-warnings-prjxxxx.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/error-messages/tool-errors/project-build-errors-and-warnings-prjxxxx.md b/docs/error-messages/tool-errors/project-build-errors-and-warnings-prjxxxx.md index 7a4b89b0e8f..e05ebacd66b 100644 --- a/docs/error-messages/tool-errors/project-build-errors-and-warnings-prjxxxx.md +++ b/docs/error-messages/tool-errors/project-build-errors-and-warnings-prjxxxx.md @@ -1,8 +1,7 @@ --- -description: "Learn more about: Project build errors and warnings (PRJxxxx)" title: "Project build errors and warnings" -ms.date: "04/16/2019" -ms.assetid: 79d223ed-986a-4536-8299-aec8356b449c +description: "Learn more about: Project build errors and warnings (PRJxxxx)" +ms.date: 04/16/2019 --- # Project build errors and warnings (PRJxxxx) From 3726539c99b3c1acf8eabda0a53d01a5a22f3a46 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 18 Jul 2025 18:33:02 +0800 Subject: [PATCH 1126/2255] Wrap multiple function prototypes in a line --- docs/cppcx/platform-intptr-value-class.md | 8 ++++++-- docs/cppcx/platform-sizet-value-class.md | 3 ++- docs/mfc/reference/cmonthcalctrl-class.md | 6 ++++-- docs/mfc/reference/colesafearray-class.md | 9 ++++++--- docs/mfc/reference/cricheditctrl-class.md | 12 ++++++++---- docs/mfc/reference/cspinbuttonctrl-class.md | 3 ++- docs/mfc/reference/cstatusbar-class.md | 3 ++- docs/mfc/reference/cwinapp-class.md | 6 ++++-- docs/mfc/reference/cwnd-class.md | 6 ++++-- 9 files changed, 38 insertions(+), 18 deletions(-) diff --git a/docs/cppcx/platform-intptr-value-class.md b/docs/cppcx/platform-intptr-value-class.md index b08b50209b5..f3d7aecfde8 100644 --- a/docs/cppcx/platform-intptr-value-class.md +++ b/docs/cppcx/platform-intptr-value-class.md @@ -43,7 +43,9 @@ Initializes a new instance of an IntPtr with the specified value. ### Syntax ```cpp -IntPtr( __int64 handle-or-pointer ); IntPtr( void* value ); IntPtr( int 32-bit_value ); +IntPtr( __int64 handle-or-pointer ); +IntPtr( void* value ); +IntPtr( int 32-bit_value ); ``` ### Parameters @@ -58,7 +60,9 @@ Converts the specified parameter to an IntPtr or a pointer to an IntPtr value. ### Syntax ```cpp -static IntPtr::operator IntPtr( void* value1); static IntPtr::operator IntPtr( int value2); static IntPtr::operator void*( IntPtr value3 ); +static IntPtr::operator IntPtr( void* value1); +static IntPtr::operator IntPtr( int value2); +static IntPtr::operator void*( IntPtr value3 ); ``` ### Parameters diff --git a/docs/cppcx/platform-sizet-value-class.md b/docs/cppcx/platform-sizet-value-class.md index fe4da84ea6a..54743ab531c 100644 --- a/docs/cppcx/platform-sizet-value-class.md +++ b/docs/cppcx/platform-sizet-value-class.md @@ -40,7 +40,8 @@ Initializes a new instance of SizeT with the specified value. ### Syntax ```cpp -SizeT( uint32 value1 ); SizeT( void* value2 ); +SizeT( uint32 value1 ); +SizeT( void* value2 ); ``` ### Parameters diff --git a/docs/mfc/reference/cmonthcalctrl-class.md b/docs/mfc/reference/cmonthcalctrl-class.md index 8b9469c32a1..e9ce4d517d5 100644 --- a/docs/mfc/reference/cmonthcalctrl-class.md +++ b/docs/mfc/reference/cmonthcalctrl-class.md @@ -304,7 +304,8 @@ The next code example reports which view the month calendar control currently di Retrieves the system time as indicated by the currently-selected date. ``` -BOOL GetCurSel(COleDateTime& refDateTime) const; BOOL GetCurSel(CTime& refDateTime) const; +BOOL GetCurSel(COleDateTime& refDateTime) const; +BOOL GetCurSel(CTime& refDateTime) const; BOOL GetCurSel(LPSYSTEMTIME pDateTime) const; ``` @@ -595,7 +596,8 @@ In MFC's implementation of `GetSelRange`, you can specify `COleDateTime` usage, Retrieves the date information for the date specified as "today" for a month calendar control. ``` -BOOL GetToday(COleDateTime& refDateTime) const; BOOL GetToday(COleDateTime& refDateTime) const; +BOOL GetToday(COleDateTime& refDateTime) const; +BOOL GetToday(COleDateTime& refDateTime) const; BOOL GetToday(LPSYSTEMTIME pDateTime) const; ``` diff --git a/docs/mfc/reference/colesafearray-class.md b/docs/mfc/reference/colesafearray-class.md index 1efbd04b7f8..e2af72eeba5 100644 --- a/docs/mfc/reference/colesafearray-class.md +++ b/docs/mfc/reference/colesafearray-class.md @@ -554,11 +554,14 @@ A brief description of each operator follows: This operator compares two arrays (`SAFEARRAY`, `VARIANT`, `COleVariant`, or `COleSafeArray` arrays) and returns nonzero if they are equal; otherwise 0. ``` -BOOL operator==(const SAFEARRAY& saSrc) const; BOOL operator==(LPCSAFEARRAY pSrc) const; +BOOL operator==(const SAFEARRAY& saSrc) const; +BOOL operator==(LPCSAFEARRAY pSrc) const; -BOOL operator==(const COleSafeArray& saSrc) const; BOOL operator==(const VARIANT& varSrc) const; +BOOL operator==(const COleSafeArray& saSrc) const; +BOOL operator==(const VARIANT& varSrc) const; -BOOL operator==(LPCVARIANT pSrc) const; BOOL operator==(const COleVariant& varSrc) const; +BOOL operator==(LPCVARIANT pSrc) const; +BOOL operator==(const COleVariant& varSrc) const; ``` ### Remarks diff --git a/docs/mfc/reference/cricheditctrl-class.md b/docs/mfc/reference/cricheditctrl-class.md index 95466b4037c..b4c13c12615 100644 --- a/docs/mfc/reference/cricheditctrl-class.md +++ b/docs/mfc/reference/cricheditctrl-class.md @@ -553,7 +553,8 @@ For more information, see [`EM_POSFROMCHAR`](/windows/win32/Controls/em-posfromc Gets the default character formatting attributes of this `CRichEditCtrl` object. ``` -DWORD GetDefaultCharFormat(CHARFORMAT& cf) const; DWORD GetDefaultCharFormat(CHARFORMAT2& cf) const; +DWORD GetDefaultCharFormat(CHARFORMAT& cf) const; +DWORD GetDefaultCharFormat(CHARFORMAT2& cf) const; ``` ### Parameters @@ -759,7 +760,8 @@ A combination of the current option flag values. For a list of these values, see Gets the paragraph formatting attributes of the current selection. ``` -DWORD GetParaFormat(PARAFORMAT& pf) const; DWORD GetParaFormat(PARAFORMAT2& pf) const; +DWORD GetParaFormat(PARAFORMAT& pf) const; +DWORD GetParaFormat(PARAFORMAT2& pf) const; ``` ### Parameters @@ -892,7 +894,8 @@ For more information, see [`EM_EXGETSEL`](/windows/win32/Controls/em-exgetsel) m Gets the character formatting attributes of the current selection. ``` -DWORD GetSelectionCharFormat(CHARFORMAT& cf) const; DWORD GetSelectionCharFormat(CHARFORMAT2& cf) const; +DWORD GetSelectionCharFormat(CHARFORMAT& cf) const; +DWORD GetSelectionCharFormat(CHARFORMAT2& cf) const; ``` ### Parameters @@ -951,7 +954,8 @@ For more information, see [`EM_SELECTIONTYPE`](/windows/win32/Controls/em-select Retrieves the text from the current selection in this `CRichEditCtrl` object. ``` -long GetSelText(LPSTR lpBuf) const; CString GetSelText() const; +long GetSelText(LPSTR lpBuf) const; +CString GetSelText() const; ``` ### Parameters diff --git a/docs/mfc/reference/cspinbuttonctrl-class.md b/docs/mfc/reference/cspinbuttonctrl-class.md index ccd132b2396..9a67088c71a 100644 --- a/docs/mfc/reference/cspinbuttonctrl-class.md +++ b/docs/mfc/reference/cspinbuttonctrl-class.md @@ -201,7 +201,8 @@ A pointer to the current buddy window. Retrieves the current position of a spin button control. ``` -int GetPos() const; int GetPos32(LPBOOL lpbError = NULL) const; +int GetPos() const; +int GetPos32(LPBOOL lpbError = NULL) const; ``` ### Parameters diff --git a/docs/mfc/reference/cstatusbar-class.md b/docs/mfc/reference/cstatusbar-class.md index ff4116ac648..8cfdfc23d96 100644 --- a/docs/mfc/reference/cstatusbar-class.md +++ b/docs/mfc/reference/cstatusbar-class.md @@ -306,7 +306,8 @@ For a list of styles available for status bars, see [Create](#create). Call this member function to retrieve the text that appears in a status-bar pane. ``` -CString GetPaneText(int nIndex) const; void GetPaneText(int nIndex, CString& rString) const; +CString GetPaneText(int nIndex) const; +void GetPaneText(int nIndex, CString& rString) const; ``` ### Parameters diff --git a/docs/mfc/reference/cwinapp-class.md b/docs/mfc/reference/cwinapp-class.md index ac07d50b58a..7f45102a51a 100644 --- a/docs/mfc/reference/cwinapp-class.md +++ b/docs/mfc/reference/cwinapp-class.md @@ -896,7 +896,8 @@ Taskbar interaction means that MDI application displays the content of MDI child Loads the cursor resource named by *lpszResourceName* or specified by *nIDResource* from the current executable file. ``` -HCURSOR LoadCursor(LPCTSTR lpszResourceName) const; HCURSOR LoadCursor(UINT nIDResource) const; +HCURSOR LoadCursor(LPCTSTR lpszResourceName) const; +HCURSOR LoadCursor(UINT nIDResource) const; ``` ### Parameters @@ -926,7 +927,8 @@ Use the [LoadStandardCursor](#loadstandardcursor) or [LoadOEMCursor](#loadoemcur Loads the icon resource named by *lpszResourceName* or specified by *nIDResource* from the executable file. ``` -HICON LoadIcon(LPCTSTR lpszResourceName) const; HICON LoadIcon(UINT nIDResource) const; +HICON LoadIcon(LPCTSTR lpszResourceName) const; +HICON LoadIcon(UINT nIDResource) const; ``` ### Parameters diff --git a/docs/mfc/reference/cwnd-class.md b/docs/mfc/reference/cwnd-class.md index 7465c5223ed..7747d85ba89 100644 --- a/docs/mfc/reference/cwnd-class.md +++ b/docs/mfc/reference/cwnd-class.md @@ -1024,7 +1024,8 @@ The `CWnd`* that is returned may be temporary and shouldn't be stored for later Converts the client coordinates of a given point or rectangle on the display to screen coordinates. ```cpp -void ClientToScreen(LPPOINT lpPoint) const; void ClientToScreen(LPRECT lpRect) const; +void ClientToScreen(LPPOINT lpPoint) const; +void ClientToScreen(LPRECT lpRect) const; ``` ### Parameters @@ -10174,7 +10175,8 @@ By default, `ContinueModal` returns `FALSE` after `EndModalLoop` is called. Retu Converts the screen coordinates of a given point or rectangle on the display to client coordinates. ```cpp -void ScreenToClient(LPPOINT lpPoint) const; void ScreenToClient(LPRECT lpRect) const; +void ScreenToClient(LPPOINT lpPoint) const; +void ScreenToClient(LPRECT lpRect) const; ``` ### Parameters From 96d5bbab2d71537ed5debf856c615de10cde5c02 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 18 Jul 2025 18:38:19 +0800 Subject: [PATCH 1127/2255] Update metadata in 6 topics --- docs/cppcx/platform-intptr-value-class.md | 2 +- docs/cppcx/platform-sizet-value-class.md | 5 ++--- docs/mfc/reference/colesafearray-class.md | 5 ++--- docs/mfc/reference/cricheditctrl-class.md | 5 ++--- docs/mfc/reference/cspinbuttonctrl-class.md | 2 +- docs/mfc/reference/cstatusbar-class.md | 5 ++--- 6 files changed, 10 insertions(+), 14 deletions(-) diff --git a/docs/cppcx/platform-intptr-value-class.md b/docs/cppcx/platform-intptr-value-class.md index f3d7aecfde8..8abd76f842b 100644 --- a/docs/cppcx/platform-intptr-value-class.md +++ b/docs/cppcx/platform-intptr-value-class.md @@ -1,7 +1,7 @@ --- title: "Platform::IntPtr value class" description: "Learn more about: Platform::IntPtr value class" -ms.date: "12/30/2016" +ms.date: 12/30/2016 ms.topic: "reference" f1_keywords: ["VCCORLIB/PlatformIntPtr::IntPtr", "VCCORLIB/PlatformIntPtr::op_explicit Operator", "VCCORLIB/PlatformIntPtr::ToInt32"] helpviewer_keywords: ["Platform::IntPtr Struct"] diff --git a/docs/cppcx/platform-sizet-value-class.md b/docs/cppcx/platform-sizet-value-class.md index 54743ab531c..3bfbf58eb18 100644 --- a/docs/cppcx/platform-sizet-value-class.md +++ b/docs/cppcx/platform-sizet-value-class.md @@ -1,11 +1,10 @@ --- -description: "Learn more about: Platform::SizeT value class" title: "Platform::SizeT value class" -ms.date: "12/30/2016" +description: "Learn more about: Platform::SizeT value class" +ms.date: 12/30/2016 ms.topic: "reference" f1_keywords: ["VCCORLIB/PlatformSizeT::SizeT constructor"] helpviewer_keywords: ["Platform::SizeT Struct"] -ms.assetid: 0803612c-8ba1-430c-9b7b-1bebae88608d --- # Platform::SizeT value class diff --git a/docs/mfc/reference/colesafearray-class.md b/docs/mfc/reference/colesafearray-class.md index e2af72eeba5..f85c05baf87 100644 --- a/docs/mfc/reference/colesafearray-class.md +++ b/docs/mfc/reference/colesafearray-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: COleSafeArray Class" title: "COleSafeArray Class" -ms.date: "08/29/2019" +description: "Learn more about: COleSafeArray Class" +ms.date: 08/29/2019 f1_keywords: ["COleSafeArray", "AFXDISP/COleSafeArray", "AFXDISP/COleSafeArray::COleSafeArray", "AFXDISP/COleSafeArray::AccessData", "AFXDISP/COleSafeArray::AllocData", "AFXDISP/COleSafeArray::AllocDescriptor", "AFXDISP/COleSafeArray::Attach", "AFXDISP/COleSafeArray::Clear", "AFXDISP/COleSafeArray::Copy", "AFXDISP/COleSafeArray::Create", "AFXDISP/COleSafeArray::CreateOneDim", "AFXDISP/COleSafeArray::Destroy", "AFXDISP/COleSafeArray::DestroyData", "AFXDISP/COleSafeArray::DestroyDescriptor", "AFXDISP/COleSafeArray::Detach", "AFXDISP/COleSafeArray::GetByteArray", "AFXDISP/COleSafeArray::GetDim", "AFXDISP/COleSafeArray::GetElement", "AFXDISP/COleSafeArray::GetElemSize", "AFXDISP/COleSafeArray::GetLBound", "AFXDISP/COleSafeArray::GetOneDimSize", "AFXDISP/COleSafeArray::GetUBound", "AFXDISP/COleSafeArray::Lock", "AFXDISP/COleSafeArray::PtrOfIndex", "AFXDISP/COleSafeArray::PutElement", "AFXDISP/COleSafeArray::Redim", "AFXDISP/COleSafeArray::ResizeOneDim", "AFXDISP/COleSafeArray::UnaccessData", "AFXDISP/COleSafeArray::Unlock"] helpviewer_keywords: ["COleSafeArray [MFC], COleSafeArray", "COleSafeArray [MFC], AccessData", "COleSafeArray [MFC], AllocData", "COleSafeArray [MFC], AllocDescriptor", "COleSafeArray [MFC], Attach", "COleSafeArray [MFC], Clear", "COleSafeArray [MFC], Copy", "COleSafeArray [MFC], Create", "COleSafeArray [MFC], CreateOneDim", "COleSafeArray [MFC], Destroy", "COleSafeArray [MFC], DestroyData", "COleSafeArray [MFC], DestroyDescriptor", "COleSafeArray [MFC], Detach", "COleSafeArray [MFC], GetByteArray", "COleSafeArray [MFC], GetDim", "COleSafeArray [MFC], GetElement", "COleSafeArray [MFC], GetElemSize", "COleSafeArray [MFC], GetLBound", "COleSafeArray [MFC], GetOneDimSize", "COleSafeArray [MFC], GetUBound", "COleSafeArray [MFC], Lock", "COleSafeArray [MFC], PtrOfIndex", "COleSafeArray [MFC], PutElement", "COleSafeArray [MFC], Redim", "COleSafeArray [MFC], ResizeOneDim", "COleSafeArray [MFC], UnaccessData", "COleSafeArray [MFC], Unlock"] -ms.assetid: f45a5224-5f48-40ec-9ddd-287ef9740150 --- # COleSafeArray Class diff --git a/docs/mfc/reference/cricheditctrl-class.md b/docs/mfc/reference/cricheditctrl-class.md index b4c13c12615..146d92aecf4 100644 --- a/docs/mfc/reference/cricheditctrl-class.md +++ b/docs/mfc/reference/cricheditctrl-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: CRichEditCtrl Class" title: "CRichEditCtrl Class" -ms.date: "11/04/2016" +description: "Learn more about: CRichEditCtrl Class" +ms.date: 11/04/2016 f1_keywords: ["CRichEditCtrl", "AFXCMN/CRichEditCtrl", "AFXCMN/CRichEditCtrl::CRichEditCtrl", "AFXCMN/CRichEditCtrl::CanPaste", "AFXCMN/CRichEditCtrl::CanRedo", "AFXCMN/CRichEditCtrl::CanUndo", "AFXCMN/CRichEditCtrl::CharFromPos", "AFXCMN/CRichEditCtrl::Clear", "AFXCMN/CRichEditCtrl::Copy", "AFXCMN/CRichEditCtrl::Create", "AFXCMN/CRichEditCtrl::CreateEx", "AFXCMN/CRichEditCtrl::Cut", "AFXCMN/CRichEditCtrl::DisplayBand", "AFXCMN/CRichEditCtrl::EmptyUndoBuffer", "AFXCMN/CRichEditCtrl::FindText", "AFXCMN/CRichEditCtrl::FindWordBreak", "AFXCMN/CRichEditCtrl::FormatRange", "AFXCMN/CRichEditCtrl::GetCharPos", "AFXCMN/CRichEditCtrl::GetDefaultCharFormat", "AFXCMN/CRichEditCtrl::GetEventMask", "AFXCMN/CRichEditCtrl::GetFirstVisibleLine", "AFXCMN/CRichEditCtrl::GetIRichEditOle", "AFXCMN/CRichEditCtrl::GetLimitText", "AFXCMN/CRichEditCtrl::GetLine", "AFXCMN/CRichEditCtrl::GetLineCount", "AFXCMN/CRichEditCtrl::GetModify", "AFXCMN/CRichEditCtrl::GetOptions", "AFXCMN/CRichEditCtrl::GetParaFormat", "AFXCMN/CRichEditCtrl::GetPunctuation", "AFXCMN/CRichEditCtrl::GetRect", "AFXCMN/CRichEditCtrl::GetRedoName", "AFXCMN/CRichEditCtrl::GetSel", "AFXCMN/CRichEditCtrl::GetSelectionCharFormat", "AFXCMN/CRichEditCtrl::GetSelectionType", "AFXCMN/CRichEditCtrl::GetSelText", "AFXCMN/CRichEditCtrl::GetTextLength", "AFXCMN/CRichEditCtrl::GetTextLengthEx", "AFXCMN/CRichEditCtrl::GetTextMode", "AFXCMN/CRichEditCtrl::GetTextRange", "AFXCMN/CRichEditCtrl::GetUndoName", "AFXCMN/CRichEditCtrl::GetWordWrapMode", "AFXCMN/CRichEditCtrl::HideSelection", "AFXCMN/CRichEditCtrl::LimitText", "AFXCMN/CRichEditCtrl::LineFromChar", "AFXCMN/CRichEditCtrl::LineIndex", "AFXCMN/CRichEditCtrl::LineLength", "AFXCMN/CRichEditCtrl::LineScroll", "AFXCMN/CRichEditCtrl::Paste", "AFXCMN/CRichEditCtrl::PasteSpecial", "AFXCMN/CRichEditCtrl::PosFromChar", "AFXCMN/CRichEditCtrl::Redo", "AFXCMN/CRichEditCtrl::ReplaceSel", "AFXCMN/CRichEditCtrl::RequestResize", "AFXCMN/CRichEditCtrl::SetAutoURLDetect", "AFXCMN/CRichEditCtrl::SetBackgroundColor", "AFXCMN/CRichEditCtrl::SetDefaultCharFormat", "AFXCMN/CRichEditCtrl::SetEventMask", "AFXCMN/CRichEditCtrl::SetModify", "AFXCMN/CRichEditCtrl::SetOLECallback", "AFXCMN/CRichEditCtrl::SetOptions", "AFXCMN/CRichEditCtrl::SetParaFormat", "AFXCMN/CRichEditCtrl::SetPunctuation", "AFXCMN/CRichEditCtrl::SetReadOnly", "AFXCMN/CRichEditCtrl::SetRect", "AFXCMN/CRichEditCtrl::SetSel", "AFXCMN/CRichEditCtrl::SetSelectionCharFormat", "AFXCMN/CRichEditCtrl::SetTargetDevice", "AFXCMN/CRichEditCtrl::SetTextMode", "AFXCMN/CRichEditCtrl::SetUndoLimit", "AFXCMN/CRichEditCtrl::SetWordCharFormat", "AFXCMN/CRichEditCtrl::SetWordWrapMode", "AFXCMN/CRichEditCtrl::StopGroupTyping", "AFXCMN/CRichEditCtrl::StreamIn", "AFXCMN/CRichEditCtrl::StreamOut", "AFXCMN/CRichEditCtrl::Undo"] helpviewer_keywords: ["CRichEditCtrl [MFC], CRichEditCtrl", "CRichEditCtrl [MFC], CanPaste", "CRichEditCtrl [MFC], CanRedo", "CRichEditCtrl [MFC], CanUndo", "CRichEditCtrl [MFC], CharFromPos", "CRichEditCtrl [MFC], Clear", "CRichEditCtrl [MFC], Copy", "CRichEditCtrl [MFC], Create", "CRichEditCtrl [MFC], CreateEx", "CRichEditCtrl [MFC], Cut", "CRichEditCtrl [MFC], DisplayBand", "CRichEditCtrl [MFC], EmptyUndoBuffer", "CRichEditCtrl [MFC], FindText", "CRichEditCtrl [MFC], FindWordBreak", "CRichEditCtrl [MFC], FormatRange", "CRichEditCtrl [MFC], GetCharPos", "CRichEditCtrl [MFC], GetDefaultCharFormat", "CRichEditCtrl [MFC], GetEventMask", "CRichEditCtrl [MFC], GetFirstVisibleLine", "CRichEditCtrl [MFC], GetIRichEditOle", "CRichEditCtrl [MFC], GetLimitText", "CRichEditCtrl [MFC], GetLine", "CRichEditCtrl [MFC], GetLineCount", "CRichEditCtrl [MFC], GetModify", "CRichEditCtrl [MFC], GetOptions", "CRichEditCtrl [MFC], GetParaFormat", "CRichEditCtrl [MFC], GetPunctuation", "CRichEditCtrl [MFC], GetRect", "CRichEditCtrl [MFC], GetRedoName", "CRichEditCtrl [MFC], GetSel", "CRichEditCtrl [MFC], GetSelectionCharFormat", "CRichEditCtrl [MFC], GetSelectionType", "CRichEditCtrl [MFC], GetSelText", "CRichEditCtrl [MFC], GetTextLength", "CRichEditCtrl [MFC], GetTextLengthEx", "CRichEditCtrl [MFC], GetTextMode", "CRichEditCtrl [MFC], GetTextRange", "CRichEditCtrl [MFC], GetUndoName", "CRichEditCtrl [MFC], GetWordWrapMode", "CRichEditCtrl [MFC], HideSelection", "CRichEditCtrl [MFC], LimitText", "CRichEditCtrl [MFC], LineFromChar", "CRichEditCtrl [MFC], LineIndex", "CRichEditCtrl [MFC], LineLength", "CRichEditCtrl [MFC], LineScroll", "CRichEditCtrl [MFC], Paste", "CRichEditCtrl [MFC], PasteSpecial", "CRichEditCtrl [MFC], PosFromChar", "CRichEditCtrl [MFC], Redo", "CRichEditCtrl [MFC], ReplaceSel", "CRichEditCtrl [MFC], RequestResize", "CRichEditCtrl [MFC], SetAutoURLDetect", "CRichEditCtrl [MFC], SetBackgroundColor", "CRichEditCtrl [MFC], SetDefaultCharFormat", "CRichEditCtrl [MFC], SetEventMask", "CRichEditCtrl [MFC], SetModify", "CRichEditCtrl [MFC], SetOLECallback", "CRichEditCtrl [MFC], SetOptions", "CRichEditCtrl [MFC], SetParaFormat", "CRichEditCtrl [MFC], SetPunctuation", "CRichEditCtrl [MFC], SetReadOnly", "CRichEditCtrl [MFC], SetRect", "CRichEditCtrl [MFC], SetSel", "CRichEditCtrl [MFC], SetSelectionCharFormat", "CRichEditCtrl [MFC], SetTargetDevice", "CRichEditCtrl [MFC], SetTextMode", "CRichEditCtrl [MFC], SetUndoLimit", "CRichEditCtrl [MFC], SetWordCharFormat", "CRichEditCtrl [MFC], SetWordWrapMode", "CRichEditCtrl [MFC], StopGroupTyping", "CRichEditCtrl [MFC], StreamIn", "CRichEditCtrl [MFC], StreamOut", "CRichEditCtrl [MFC], Undo"] -ms.assetid: 2be52788-822c-4c27-aafd-2471231e74eb --- # `CRichEditCtrl` Class diff --git a/docs/mfc/reference/cspinbuttonctrl-class.md b/docs/mfc/reference/cspinbuttonctrl-class.md index 9a67088c71a..d5fc72a6e4e 100644 --- a/docs/mfc/reference/cspinbuttonctrl-class.md +++ b/docs/mfc/reference/cspinbuttonctrl-class.md @@ -1,7 +1,7 @@ --- title: "CSpinButtonCtrl Class" description: "Learn more about: CSpinButtonCtrl Class" -ms.date: "11/04/2016" +ms.date: 11/04/2016 f1_keywords: ["CSpinButtonCtrl", "AFXCMN/CSpinButtonCtrl", "AFXCMN/CSpinButtonCtrl::CSpinButtonCtrl", "AFXCMN/CSpinButtonCtrl::Create", "AFXCMN/CSpinButtonCtrl::CreateEx", "AFXCMN/CSpinButtonCtrl::GetAccel", "AFXCMN/CSpinButtonCtrl::GetBase", "AFXCMN/CSpinButtonCtrl::GetBuddy", "AFXCMN/CSpinButtonCtrl::GetPos", "AFXCMN/CSpinButtonCtrl::GetRange", "AFXCMN/CSpinButtonCtrl::SetAccel", "AFXCMN/CSpinButtonCtrl::SetBase", "AFXCMN/CSpinButtonCtrl::SetBuddy", "AFXCMN/CSpinButtonCtrl::SetPos", "AFXCMN/CSpinButtonCtrl::SetRange"] helpviewer_keywords: ["CSpinButtonCtrl [MFC], CSpinButtonCtrl", "CSpinButtonCtrl [MFC], Create", "CSpinButtonCtrl [MFC], CreateEx", "CSpinButtonCtrl [MFC], GetAccel", "CSpinButtonCtrl [MFC], GetBase", "CSpinButtonCtrl [MFC], GetBuddy", "CSpinButtonCtrl [MFC], GetPos", "CSpinButtonCtrl [MFC], GetRange", "CSpinButtonCtrl [MFC], SetAccel", "CSpinButtonCtrl [MFC], SetBase", "CSpinButtonCtrl [MFC], SetBuddy", "CSpinButtonCtrl [MFC], SetPos", "CSpinButtonCtrl [MFC], SetRange"] --- diff --git a/docs/mfc/reference/cstatusbar-class.md b/docs/mfc/reference/cstatusbar-class.md index 8cfdfc23d96..ccbf9e66028 100644 --- a/docs/mfc/reference/cstatusbar-class.md +++ b/docs/mfc/reference/cstatusbar-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: CStatusBar Class" title: "CStatusBar Class" -ms.date: "11/04/2016" +description: "Learn more about: CStatusBar Class" +ms.date: 11/04/2016 f1_keywords: ["CStatusBar", "AFXEXT/CStatusBar", "AFXEXT/CStatusBar::CStatusBar", "AFXEXT/CStatusBar::CommandToIndex", "AFXEXT/CStatusBar::Create", "AFXEXT/CStatusBar::CreateEx", "AFXEXT/CStatusBar::DrawItem", "AFXEXT/CStatusBar::GetItemID", "AFXEXT/CStatusBar::GetItemRect", "AFXEXT/CStatusBar::GetPaneInfo", "AFXEXT/CStatusBar::GetPaneStyle", "AFXEXT/CStatusBar::GetPaneText", "AFXEXT/CStatusBar::GetStatusBarCtrl", "AFXEXT/CStatusBar::SetIndicators", "AFXEXT/CStatusBar::SetPaneInfo", "AFXEXT/CStatusBar::SetPaneStyle", "AFXEXT/CStatusBar::SetPaneText"] helpviewer_keywords: ["CStatusBar [MFC], CStatusBar", "CStatusBar [MFC], CommandToIndex", "CStatusBar [MFC], Create", "CStatusBar [MFC], CreateEx", "CStatusBar [MFC], DrawItem", "CStatusBar [MFC], GetItemID", "CStatusBar [MFC], GetItemRect", "CStatusBar [MFC], GetPaneInfo", "CStatusBar [MFC], GetPaneStyle", "CStatusBar [MFC], GetPaneText", "CStatusBar [MFC], GetStatusBarCtrl", "CStatusBar [MFC], SetIndicators", "CStatusBar [MFC], SetPaneInfo", "CStatusBar [MFC], SetPaneStyle", "CStatusBar [MFC], SetPaneText"] -ms.assetid: a3bde3db-e71c-4881-a3ca-1d5481c345ba --- # CStatusBar Class From ea3a4b5aa934cf8d71fb0d61580e08b874d9aaf3 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 18 Jul 2025 18:55:29 +0800 Subject: [PATCH 1128/2255] Add blockquotes for error messages in range [C2181, C2200] --- docs/error-messages/compiler-errors-1/compiler-error-c2181.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2182.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2183.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2184.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2185.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2186.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2188.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2190.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2191.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2192.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2193.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2194.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2195.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2196.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2197.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2198.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2199.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2200.md | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2181.md b/docs/error-messages/compiler-errors-1/compiler-error-c2181.md index e3ca226ad79..10d987bb555 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2181.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2181.md @@ -8,7 +8,7 @@ ms.assetid: d52b2fe4-566a-40a9-b8e2-8dce1f287668 --- # Compiler Error C2181 -illegal else without matching if +> illegal else without matching if Each **`else`** must have a matching **`if`**. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2182.md b/docs/error-messages/compiler-errors-1/compiler-error-c2182.md index 6aef2bbc657..1453b5a7f99 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2182.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2182.md @@ -8,7 +8,7 @@ ms.assetid: dfd8d47d-9606-496e-bd96-4bf41ba1f857 --- # Compiler Error C2182 -'identifier' : illegal use of type 'void' +> 'identifier' : illegal use of type 'void' A variable is declared type **`void`**. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2183.md b/docs/error-messages/compiler-errors-1/compiler-error-c2183.md index 85d58a53721..a9c73bfc066 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2183.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2183.md @@ -8,6 +8,6 @@ ms.assetid: 03d2d010-a276-4ac3-820c-159abd8b1222 --- # Compiler Error C2183 -syntax error: translation unit is empty +> syntax error: translation unit is empty Preprocessing produced an empty source file. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2184.md b/docs/error-messages/compiler-errors-1/compiler-error-c2184.md index 3d038496347..ec791525869 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2184.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2184.md @@ -8,7 +8,7 @@ ms.assetid: 80fc8bff-7d76-4bde-94d2-01d84bb6824a --- # Compiler Error C2184 -'type' : illegal type for __except expression, must be an integral +> 'type' : illegal type for __except expression, must be an integral A type was used in an [__except](../../c-language/try-except-statement-c.md) statement, but the type is not allowed. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2185.md b/docs/error-messages/compiler-errors-1/compiler-error-c2185.md index b6db0922903..42b513faa42 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2185.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2185.md @@ -8,6 +8,6 @@ ms.assetid: 74bc9f64-7b4c-4735-ba13-67c43f8c47db --- # Compiler Error C2185 -'identifier' : illegal based allocation +> 'identifier' : illegal based allocation A register variable or automatic (local) variable is declared **`__based`**. Only global variables can be declared **`__based`**. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2186.md b/docs/error-messages/compiler-errors-1/compiler-error-c2186.md index 749be6dcbc4..8f4c13691eb 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2186.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2186.md @@ -8,7 +8,7 @@ ms.assetid: 284bfb7e-ab85-4fcb-9864-1ddf7f6c94ae --- # Compiler Error C2186 -'operator' : illegal operand of type 'void' +> 'operator' : illegal operand of type 'void' The operator has a **`void`** operand. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2188.md b/docs/error-messages/compiler-errors-1/compiler-error-c2188.md index 74433b09195..692c261ac2c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2188.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2188.md @@ -8,6 +8,6 @@ ms.assetid: 2223147f-e487-4090-acdf-75ba4e1114f6 --- # Compiler Error C2188 -'number' : too big for wide character +> 'number' : too big for wide character The number exceeds the size limit for the wide-character type. Choose a larger type. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2190.md b/docs/error-messages/compiler-errors-1/compiler-error-c2190.md index a1a2c41a07e..f93d5accb8d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2190.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2190.md @@ -8,7 +8,7 @@ ms.assetid: 34e15f85-d979-4948-80fc-46c414508a70 --- # Compiler Error C2190 -first parameter list longer than second +> first parameter list longer than second A C function was declared a second time with a shorter parameter list. C does not support overloaded functions. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2191.md b/docs/error-messages/compiler-errors-1/compiler-error-c2191.md index d55e9b6fc77..ddb04d0e1d1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2191.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2191.md @@ -8,7 +8,7 @@ ms.assetid: 051b8350-e5de-4f51-ab6e-96d32366bcef --- # Compiler Error C2191 -second parameter list longer than first +> second parameter list longer than first A C function was declared a second time with a longer parameter list. C does not support overloaded functions. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2192.md b/docs/error-messages/compiler-errors-1/compiler-error-c2192.md index 3444f6a2d61..3ccc3fbc0f2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2192.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2192.md @@ -8,7 +8,7 @@ ms.assetid: a147197e-e72d-4620-939b-f9e08d7c7c12 --- # Compiler Error C2192 -parameter 'number' declaration different +> parameter 'number' declaration different A C function was declared a second time with a different parameter list. C does not support overloaded functions. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2193.md b/docs/error-messages/compiler-errors-1/compiler-error-c2193.md index 8175641f502..99b7ab7a3de 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2193.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2193.md @@ -8,7 +8,7 @@ ms.assetid: 9813e853-d581-4f51-bb75-4e242298a844 --- # Compiler Error C2193 -'identifier' : already in a segment +> 'identifier' : already in a segment A function was placed in two different segments using `alloc_text` and `code_seg` pragmas. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2194.md b/docs/error-messages/compiler-errors-1/compiler-error-c2194.md index 97e108884eb..1321ac59fe2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2194.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2194.md @@ -8,7 +8,7 @@ ms.assetid: df6e631c-0062-4844-9088-4cc7a0ff879f --- # Compiler Error C2194 -'identifier' : is a text segment +> 'identifier' : is a text segment The `data_seg` pragma uses a segment name used with `code_seg`. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2195.md b/docs/error-messages/compiler-errors-1/compiler-error-c2195.md index 34f1655447b..98affe245bb 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2195.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2195.md @@ -8,7 +8,7 @@ ms.assetid: 9f9f035c-9c51-4173-a8ea-c6f907fc5c63 --- # Compiler Error C2195 -'identifier' : is a data segment +> 'identifier' : is a data segment The `code_seg` pragma uses a segment name used with the `data_seg` pragma. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2196.md b/docs/error-messages/compiler-errors-1/compiler-error-c2196.md index e3e854bae89..a3f56f0e376 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2196.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2196.md @@ -8,7 +8,7 @@ ms.assetid: fd2f6a58-48ce-4e58-96f8-e37720feb8e7 --- # Compiler Error C2196 -case value 'value' already used. +> case value 'value' already used. A switch statement uses the same case value more than once. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2197.md b/docs/error-messages/compiler-errors-1/compiler-error-c2197.md index d59180593bc..adc216f4441 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2197.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2197.md @@ -8,7 +8,7 @@ ms.assetid: 6dd5a6ec-bc80-41b9-a4ac-46f80eaca42d --- # Compiler Error C2197 -'function' : too many arguments for call +> 'function' : too many arguments for call The compiler detected too many parameters for a call to the function, or an incorrect function declaration. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2198.md b/docs/error-messages/compiler-errors-1/compiler-error-c2198.md index 56e12832c9b..bd7a75460bc 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2198.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2198.md @@ -8,7 +8,7 @@ ms.assetid: 638a845c-9d7f-4115-a9aa-d72455605668 --- # Compiler Error C2198 -'function' : too few arguments for call +> 'function' : too few arguments for call The compiler found too few parameters for a call to the function, or an incorrect function declaration. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2199.md b/docs/error-messages/compiler-errors-1/compiler-error-c2199.md index 74067b233cc..dffb6e88b29 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2199.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2199.md @@ -8,7 +8,7 @@ ms.assetid: 6a92a1b7-7906-49e6-a31f-e8bffbc7706a --- # Compiler Error C2199 -syntax error : found 'identifier (' at global scope (was a declaration intended?) +> syntax error : found 'identifier (' at global scope (was a declaration intended?) The specified context caused a syntax error. There may be incorrect declaration syntax. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2200.md b/docs/error-messages/compiler-errors-1/compiler-error-c2200.md index c01937be6cf..ce3e8f512df 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2200.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2200.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2200"] --- # Compiler Error C2200 -'function': function has already been defined +> 'function': function has already been defined An [`alloc_text`](../../preprocessor/alloc-text.md) pragma uses a function name already defined. Ensure the `alloc_text` pragma appears after the function declaration but before its definition. From cfb1f12b9b6c8481fd51975fb1de8021863ca821 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 18 Jul 2025 19:00:05 +0800 Subject: [PATCH 1129/2255] Add "Remarks" and "Example" headings for error references in range [C2181, C2200] --- docs/error-messages/compiler-errors-1/compiler-error-c2181.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2182.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2183.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2184.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2185.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2186.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2188.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2190.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2191.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2192.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2193.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2194.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2195.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2196.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2197.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2198.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2199.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2200.md | 4 ++++ 18 files changed, 64 insertions(+) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2181.md b/docs/error-messages/compiler-errors-1/compiler-error-c2181.md index 10d987bb555..fe505fa279b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2181.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2181.md @@ -10,8 +10,12 @@ ms.assetid: d52b2fe4-566a-40a9-b8e2-8dce1f287668 > illegal else without matching if +## Remarks + Each **`else`** must have a matching **`if`**. +## Example + The following sample generates C2181: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2182.md b/docs/error-messages/compiler-errors-1/compiler-error-c2182.md index 1453b5a7f99..15559ac946c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2182.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2182.md @@ -10,8 +10,12 @@ ms.assetid: dfd8d47d-9606-496e-bd96-4bf41ba1f857 > 'identifier' : illegal use of type 'void' +## Remarks + A variable is declared type **`void`**. +## Example + The following sample generates C2182: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2183.md b/docs/error-messages/compiler-errors-1/compiler-error-c2183.md index a9c73bfc066..948095c359b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2183.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2183.md @@ -10,4 +10,6 @@ ms.assetid: 03d2d010-a276-4ac3-820c-159abd8b1222 > syntax error: translation unit is empty +## Remarks + Preprocessing produced an empty source file. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2184.md b/docs/error-messages/compiler-errors-1/compiler-error-c2184.md index ec791525869..4c606c8e6ce 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2184.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2184.md @@ -10,8 +10,12 @@ ms.assetid: 80fc8bff-7d76-4bde-94d2-01d84bb6824a > 'type' : illegal type for __except expression, must be an integral +## Remarks + A type was used in an [__except](../../c-language/try-except-statement-c.md) statement, but the type is not allowed. +## Example + The following sample generates C2184: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2185.md b/docs/error-messages/compiler-errors-1/compiler-error-c2185.md index 42b513faa42..26f759d60ad 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2185.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2185.md @@ -10,4 +10,6 @@ ms.assetid: 74bc9f64-7b4c-4735-ba13-67c43f8c47db > 'identifier' : illegal based allocation +## Remarks + A register variable or automatic (local) variable is declared **`__based`**. Only global variables can be declared **`__based`**. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2186.md b/docs/error-messages/compiler-errors-1/compiler-error-c2186.md index 8f4c13691eb..6507cbbe24e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2186.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2186.md @@ -10,8 +10,12 @@ ms.assetid: 284bfb7e-ab85-4fcb-9864-1ddf7f6c94ae > 'operator' : illegal operand of type 'void' +## Remarks + The operator has a **`void`** operand. +## Example + The following sample generates C2186: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2188.md b/docs/error-messages/compiler-errors-1/compiler-error-c2188.md index 692c261ac2c..9d637884590 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2188.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2188.md @@ -10,4 +10,6 @@ ms.assetid: 2223147f-e487-4090-acdf-75ba4e1114f6 > 'number' : too big for wide character +## Remarks + The number exceeds the size limit for the wide-character type. Choose a larger type. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2190.md b/docs/error-messages/compiler-errors-1/compiler-error-c2190.md index f93d5accb8d..a1e46a787bc 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2190.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2190.md @@ -10,8 +10,12 @@ ms.assetid: 34e15f85-d979-4948-80fc-46c414508a70 > first parameter list longer than second +## Remarks + A C function was declared a second time with a shorter parameter list. C does not support overloaded functions. +## Example + The following sample generates C2190: ```c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2191.md b/docs/error-messages/compiler-errors-1/compiler-error-c2191.md index ddb04d0e1d1..f7f15be9a32 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2191.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2191.md @@ -10,6 +10,8 @@ ms.assetid: 051b8350-e5de-4f51-ab6e-96d32366bcef > second parameter list longer than first +## Remarks + A C function was declared a second time with a longer parameter list. C does not support overloaded functions. ## Example diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2192.md b/docs/error-messages/compiler-errors-1/compiler-error-c2192.md index 3ccc3fbc0f2..53d8a43f0a6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2192.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2192.md @@ -10,8 +10,12 @@ ms.assetid: a147197e-e72d-4620-939b-f9e08d7c7c12 > parameter 'number' declaration different +## Remarks + A C function was declared a second time with a different parameter list. C does not support overloaded functions. +## Example + The following sample generates C2192: ```c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2193.md b/docs/error-messages/compiler-errors-1/compiler-error-c2193.md index 99b7ab7a3de..99234f37dc9 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2193.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2193.md @@ -10,8 +10,12 @@ ms.assetid: 9813e853-d581-4f51-bb75-4e242298a844 > 'identifier' : already in a segment +## Remarks + A function was placed in two different segments using `alloc_text` and `code_seg` pragmas. +## Example + The following sample generates C2193: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2194.md b/docs/error-messages/compiler-errors-1/compiler-error-c2194.md index 1321ac59fe2..5e4dd8c40ac 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2194.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2194.md @@ -10,8 +10,12 @@ ms.assetid: df6e631c-0062-4844-9088-4cc7a0ff879f > 'identifier' : is a text segment +## Remarks + The `data_seg` pragma uses a segment name used with `code_seg`. +## Example + The following sample generates C2194: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2195.md b/docs/error-messages/compiler-errors-1/compiler-error-c2195.md index 98affe245bb..08b67f67bc7 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2195.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2195.md @@ -10,8 +10,12 @@ ms.assetid: 9f9f035c-9c51-4173-a8ea-c6f907fc5c63 > 'identifier' : is a data segment +## Remarks + The `code_seg` pragma uses a segment name used with the `data_seg` pragma. +## Example + The following sample generates C2195: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2196.md b/docs/error-messages/compiler-errors-1/compiler-error-c2196.md index a3f56f0e376..d81489b1526 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2196.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2196.md @@ -10,8 +10,12 @@ ms.assetid: fd2f6a58-48ce-4e58-96f8-e37720feb8e7 > case value 'value' already used. +## Remarks + A switch statement uses the same case value more than once. +## Example + The following sample generates C2196: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2197.md b/docs/error-messages/compiler-errors-1/compiler-error-c2197.md index adc216f4441..f2fd57fb540 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2197.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2197.md @@ -10,8 +10,12 @@ ms.assetid: 6dd5a6ec-bc80-41b9-a4ac-46f80eaca42d > 'function' : too many arguments for call +## Remarks + The compiler detected too many parameters for a call to the function, or an incorrect function declaration. +## Example + The following sample generates C2197: ```c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2198.md b/docs/error-messages/compiler-errors-1/compiler-error-c2198.md index bd7a75460bc..87c3106397b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2198.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2198.md @@ -10,8 +10,12 @@ ms.assetid: 638a845c-9d7f-4115-a9aa-d72455605668 > 'function' : too few arguments for call +## Remarks + The compiler found too few parameters for a call to the function, or an incorrect function declaration. +## Example + The following sample generates C2198: ```c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2199.md b/docs/error-messages/compiler-errors-1/compiler-error-c2199.md index dffb6e88b29..1b2aff2d6ff 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2199.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2199.md @@ -10,8 +10,12 @@ ms.assetid: 6a92a1b7-7906-49e6-a31f-e8bffbc7706a > syntax error : found 'identifier (' at global scope (was a declaration intended?) +## Remarks + The specified context caused a syntax error. There may be incorrect declaration syntax. +## Example + The following sample generates C2199: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2200.md b/docs/error-messages/compiler-errors-1/compiler-error-c2200.md index ce3e8f512df..7c5b1dd5cd4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2200.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2200.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C2200"] > 'function': function has already been defined +## Remarks + An [`alloc_text`](../../preprocessor/alloc-text.md) pragma uses a function name already defined. Ensure the `alloc_text` pragma appears after the function declaration but before its definition. +## Example + The following sample generates C2200: ```cpp From 8364bf9271f247a1cee38c0935ce98a46b4821df Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 18 Jul 2025 19:02:07 +0800 Subject: [PATCH 1130/2255] Replace term "sample" with "example" for error references in range [C2181, C2200] --- docs/error-messages/compiler-errors-1/compiler-error-c2181.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2182.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2184.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2186.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2190.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2191.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2192.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2193.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2194.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2195.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2196.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2197.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2198.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2199.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2200.md | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2181.md b/docs/error-messages/compiler-errors-1/compiler-error-c2181.md index fe505fa279b..83538768844 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2181.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2181.md @@ -16,7 +16,7 @@ Each **`else`** must have a matching **`if`**. ## Example -The following sample generates C2181: +The following example generates C2181: ```cpp // C2181.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2182.md b/docs/error-messages/compiler-errors-1/compiler-error-c2182.md index 15559ac946c..1510f62f67e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2182.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2182.md @@ -16,7 +16,7 @@ A variable is declared type **`void`**. ## Example -The following sample generates C2182: +The following example generates C2182: ```cpp // C2182.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2184.md b/docs/error-messages/compiler-errors-1/compiler-error-c2184.md index 4c606c8e6ce..31352df295c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2184.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2184.md @@ -16,7 +16,7 @@ A type was used in an [__except](../../c-language/try-except-statement-c.md) sta ## Example -The following sample generates C2184: +The following example generates C2184: ```cpp // C2184.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2186.md b/docs/error-messages/compiler-errors-1/compiler-error-c2186.md index 6507cbbe24e..f055231f040 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2186.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2186.md @@ -16,7 +16,7 @@ The operator has a **`void`** operand. ## Example -The following sample generates C2186: +The following example generates C2186: ```cpp // C2186.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2190.md b/docs/error-messages/compiler-errors-1/compiler-error-c2190.md index a1e46a787bc..6861e85bc8a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2190.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2190.md @@ -16,7 +16,7 @@ A C function was declared a second time with a shorter parameter list. C does no ## Example -The following sample generates C2190: +The following example generates C2190: ```c // C2190.c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2191.md b/docs/error-messages/compiler-errors-1/compiler-error-c2191.md index f7f15be9a32..dd24446d6be 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2191.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2191.md @@ -16,7 +16,7 @@ A C function was declared a second time with a longer parameter list. C does not ## Example -The following sample generates C2191: +The following example generates C2191: ```c // C2191.c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2192.md b/docs/error-messages/compiler-errors-1/compiler-error-c2192.md index 53d8a43f0a6..b0542a307c5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2192.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2192.md @@ -16,7 +16,7 @@ A C function was declared a second time with a different parameter list. C does ## Example -The following sample generates C2192: +The following example generates C2192: ```c // C2192.c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2193.md b/docs/error-messages/compiler-errors-1/compiler-error-c2193.md index 99234f37dc9..9c95b5c6194 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2193.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2193.md @@ -16,7 +16,7 @@ A function was placed in two different segments using `alloc_text` and `code_seg ## Example -The following sample generates C2193: +The following example generates C2193: ```cpp // C2193.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2194.md b/docs/error-messages/compiler-errors-1/compiler-error-c2194.md index 5e4dd8c40ac..69c6990d735 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2194.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2194.md @@ -16,7 +16,7 @@ The `data_seg` pragma uses a segment name used with `code_seg`. ## Example -The following sample generates C2194: +The following example generates C2194: ```cpp // C2194.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2195.md b/docs/error-messages/compiler-errors-1/compiler-error-c2195.md index 08b67f67bc7..79cc2288251 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2195.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2195.md @@ -16,7 +16,7 @@ The `code_seg` pragma uses a segment name used with the `data_seg` pragma. ## Example -The following sample generates C2195: +The following example generates C2195: ```cpp // C2195.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2196.md b/docs/error-messages/compiler-errors-1/compiler-error-c2196.md index d81489b1526..c6b7500c462 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2196.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2196.md @@ -16,7 +16,7 @@ A switch statement uses the same case value more than once. ## Example -The following sample generates C2196: +The following example generates C2196: ```cpp // C2196.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2197.md b/docs/error-messages/compiler-errors-1/compiler-error-c2197.md index f2fd57fb540..595214a0fdf 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2197.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2197.md @@ -16,7 +16,7 @@ The compiler detected too many parameters for a call to the function, or an inco ## Example -The following sample generates C2197: +The following example generates C2197: ```c // C2197.c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2198.md b/docs/error-messages/compiler-errors-1/compiler-error-c2198.md index 87c3106397b..facb5ccee22 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2198.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2198.md @@ -16,7 +16,7 @@ The compiler found too few parameters for a call to the function, or an incorrec ## Example -The following sample generates C2198: +The following example generates C2198: ```c // C2198.c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2199.md b/docs/error-messages/compiler-errors-1/compiler-error-c2199.md index 1b2aff2d6ff..dd26d25d21a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2199.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2199.md @@ -16,7 +16,7 @@ The specified context caused a syntax error. There may be incorrect declaration ## Example -The following sample generates C2199: +The following example generates C2199: ```cpp // C2199.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2200.md b/docs/error-messages/compiler-errors-1/compiler-error-c2200.md index 7c5b1dd5cd4..0ab3a3dc220 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2200.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2200.md @@ -15,7 +15,7 @@ An [`alloc_text`](../../preprocessor/alloc-text.md) pragma uses a function name ## Example -The following sample generates C2200: +The following example generates C2200: ```cpp // C2200.cpp From 5917d342e5c88ba039af5841bcd33f59feabc3b0 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 18 Jul 2025 19:05:13 +0800 Subject: [PATCH 1131/2255] Update metadata for error references in range [C2181, C2200] --- .../error-messages/compiler-errors-1/compiler-error-c2181.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2182.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2183.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2184.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2185.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2186.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2188.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2190.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2191.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2192.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2193.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2194.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2195.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2196.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2197.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2198.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2199.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2200.md | 2 +- 18 files changed, 35 insertions(+), 52 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2181.md b/docs/error-messages/compiler-errors-1/compiler-error-c2181.md index 83538768844..be880ea0e88 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2181.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2181.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2181" title: "Compiler Error C2181" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2181" +ms.date: 11/04/2016 f1_keywords: ["C2181"] helpviewer_keywords: ["C2181"] -ms.assetid: d52b2fe4-566a-40a9-b8e2-8dce1f287668 --- # Compiler Error C2181 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2182.md b/docs/error-messages/compiler-errors-1/compiler-error-c2182.md index 1510f62f67e..86a4d0259c6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2182.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2182.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2182" title: "Compiler Error C2182" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2182" +ms.date: 11/04/2016 f1_keywords: ["C2182"] helpviewer_keywords: ["C2182"] -ms.assetid: dfd8d47d-9606-496e-bd96-4bf41ba1f857 --- # Compiler Error C2182 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2183.md b/docs/error-messages/compiler-errors-1/compiler-error-c2183.md index 948095c359b..95d0ed0a559 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2183.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2183.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2183" title: "Compiler Error C2183" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2183" +ms.date: 11/04/2016 f1_keywords: ["C2183"] helpviewer_keywords: ["C2183"] -ms.assetid: 03d2d010-a276-4ac3-820c-159abd8b1222 --- # Compiler Error C2183 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2184.md b/docs/error-messages/compiler-errors-1/compiler-error-c2184.md index 31352df295c..bee34695f9b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2184.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2184.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2184" title: "Compiler Error C2184" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2184" +ms.date: 11/04/2016 f1_keywords: ["C2184"] helpviewer_keywords: ["C2184"] -ms.assetid: 80fc8bff-7d76-4bde-94d2-01d84bb6824a --- # Compiler Error C2184 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2185.md b/docs/error-messages/compiler-errors-1/compiler-error-c2185.md index 26f759d60ad..0137134698f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2185.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2185.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2185" title: "Compiler Error C2185" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2185" +ms.date: 11/04/2016 f1_keywords: ["C2185"] helpviewer_keywords: ["C2185"] -ms.assetid: 74bc9f64-7b4c-4735-ba13-67c43f8c47db --- # Compiler Error C2185 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2186.md b/docs/error-messages/compiler-errors-1/compiler-error-c2186.md index f055231f040..e2ad100f3de 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2186.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2186.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2186" title: "Compiler Error C2186" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2186" +ms.date: 11/04/2016 f1_keywords: ["C2186"] helpviewer_keywords: ["C2186"] -ms.assetid: 284bfb7e-ab85-4fcb-9864-1ddf7f6c94ae --- # Compiler Error C2186 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2188.md b/docs/error-messages/compiler-errors-1/compiler-error-c2188.md index 9d637884590..e6bc3822cd9 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2188.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2188.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2188" title: "Compiler Error C2188" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2188" +ms.date: 11/04/2016 f1_keywords: ["C2188"] helpviewer_keywords: ["C2188"] -ms.assetid: 2223147f-e487-4090-acdf-75ba4e1114f6 --- # Compiler Error C2188 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2190.md b/docs/error-messages/compiler-errors-1/compiler-error-c2190.md index 6861e85bc8a..b1b5022b249 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2190.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2190.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2190" title: "Compiler Error C2190" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2190" +ms.date: 11/04/2016 f1_keywords: ["C2190"] helpviewer_keywords: ["C2190"] -ms.assetid: 34e15f85-d979-4948-80fc-46c414508a70 --- # Compiler Error C2190 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2191.md b/docs/error-messages/compiler-errors-1/compiler-error-c2191.md index dd24446d6be..26511d59b3e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2191.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2191.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2191" title: "Compiler Error C2191" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2191" +ms.date: 11/04/2016 f1_keywords: ["C2191"] helpviewer_keywords: ["C2191"] -ms.assetid: 051b8350-e5de-4f51-ab6e-96d32366bcef --- # Compiler Error C2191 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2192.md b/docs/error-messages/compiler-errors-1/compiler-error-c2192.md index b0542a307c5..99ad0f1f3cd 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2192.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2192.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2192" title: "Compiler Error C2192" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2192" +ms.date: 11/04/2016 f1_keywords: ["C2192"] helpviewer_keywords: ["C2192"] -ms.assetid: a147197e-e72d-4620-939b-f9e08d7c7c12 --- # Compiler Error C2192 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2193.md b/docs/error-messages/compiler-errors-1/compiler-error-c2193.md index 9c95b5c6194..3ccc804d025 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2193.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2193.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2193" title: "Compiler Error C2193" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2193" +ms.date: 11/04/2016 f1_keywords: ["C2193"] helpviewer_keywords: ["C2193"] -ms.assetid: 9813e853-d581-4f51-bb75-4e242298a844 --- # Compiler Error C2193 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2194.md b/docs/error-messages/compiler-errors-1/compiler-error-c2194.md index 69c6990d735..371a93bf9f7 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2194.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2194.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2194" title: "Compiler Error C2194" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2194" +ms.date: 11/04/2016 f1_keywords: ["C2194"] helpviewer_keywords: ["C2194"] -ms.assetid: df6e631c-0062-4844-9088-4cc7a0ff879f --- # Compiler Error C2194 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2195.md b/docs/error-messages/compiler-errors-1/compiler-error-c2195.md index 79cc2288251..04352aa63fa 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2195.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2195.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2195" title: "Compiler Error C2195" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2195" +ms.date: 11/04/2016 f1_keywords: ["C2195"] helpviewer_keywords: ["C2195"] -ms.assetid: 9f9f035c-9c51-4173-a8ea-c6f907fc5c63 --- # Compiler Error C2195 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2196.md b/docs/error-messages/compiler-errors-1/compiler-error-c2196.md index c6b7500c462..d36f92c67ec 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2196.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2196.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2196" title: "Compiler Error C2196" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2196" +ms.date: 11/04/2016 f1_keywords: ["C2196"] helpviewer_keywords: ["C2196"] -ms.assetid: fd2f6a58-48ce-4e58-96f8-e37720feb8e7 --- # Compiler Error C2196 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2197.md b/docs/error-messages/compiler-errors-1/compiler-error-c2197.md index 595214a0fdf..ea6795bcdd4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2197.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2197.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2197" title: "Compiler Error C2197" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2197" +ms.date: 11/04/2016 f1_keywords: ["C2197"] helpviewer_keywords: ["C2197"] -ms.assetid: 6dd5a6ec-bc80-41b9-a4ac-46f80eaca42d --- # Compiler Error C2197 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2198.md b/docs/error-messages/compiler-errors-1/compiler-error-c2198.md index facb5ccee22..e200cd44285 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2198.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2198.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2198" title: "Compiler Error C2198" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2198" +ms.date: 11/04/2016 f1_keywords: ["C2198"] helpviewer_keywords: ["C2198"] -ms.assetid: 638a845c-9d7f-4115-a9aa-d72455605668 --- # Compiler Error C2198 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2199.md b/docs/error-messages/compiler-errors-1/compiler-error-c2199.md index dd26d25d21a..91384b33bda 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2199.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2199.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2199" title: "Compiler Error C2199" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2199" +ms.date: 11/04/2016 f1_keywords: ["C2199"] helpviewer_keywords: ["C2199"] -ms.assetid: 6a92a1b7-7906-49e6-a31f-e8bffbc7706a --- # Compiler Error C2199 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2200.md b/docs/error-messages/compiler-errors-1/compiler-error-c2200.md index 0ab3a3dc220..5ef2473a21f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2200.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2200.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C2200" description: "Learn more about: Compiler Error C2200" -ms.date: "02/15/2025" +ms.date: 02/15/2025 f1_keywords: ["C2200"] helpviewer_keywords: ["C2200"] --- From 91e5c224f62274274fcc29cb7a55041e1418d8c5 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 19 Jul 2025 21:59:22 +0800 Subject: [PATCH 1132/2255] Add backticks in "EVEN and ALIGN Directives" topic --- docs/assembler/inline/even-and-align-directives.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/assembler/inline/even-and-align-directives.md b/docs/assembler/inline/even-and-align-directives.md index 648f5367903..b2e9bfd7fb7 100644 --- a/docs/assembler/inline/even-and-align-directives.md +++ b/docs/assembler/inline/even-and-align-directives.md @@ -5,14 +5,14 @@ ms.date: "08/30/2018" helpviewer_keywords: ["EVEN directive", "directives, MASM", "MASM (Microsoft Macro Assembler), directives", "NOP (no operation instruction)", "ALIGN directive"] ms.assetid: 7357ab2d-4a5c-43ca-accb-a5f21cdfcde5 --- -# EVEN and ALIGN Directives +# `EVEN` and `ALIGN` Directives **Microsoft Specific** -Although the inline assembler doesn't support most MASM directives, it does support `EVEN` and **ALIGN**. These directives put **NOP** (no operation) instructions in the assembly code as needed to align labels to specific boundaries. This makes instruction-fetch operations more efficient for some processors. +Although the inline assembler doesn't support most MASM directives, it does support `EVEN` and `ALIGN`. These directives put `NOP` (no operation) instructions in the assembly code as needed to align labels to specific boundaries. This makes instruction-fetch operations more efficient for some processors. **END Microsoft Specific** ## See also -[Using Assembly Language in __asm Blocks](../../assembler/inline/using-assembly-language-in-asm-blocks.md)
+[Using Assembly Language in `__asm` Blocks](../../assembler/inline/using-assembly-language-in-asm-blocks.md)
From d15a34b258b8618cb2e3e216d70e0226152b95f1 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 19 Jul 2025 22:05:20 +0800 Subject: [PATCH 1133/2255] Simplify and add links in "EVEN and ALIGN Directives" topic --- docs/assembler/inline/even-and-align-directives.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/assembler/inline/even-and-align-directives.md b/docs/assembler/inline/even-and-align-directives.md index b2e9bfd7fb7..e68c0ad42a8 100644 --- a/docs/assembler/inline/even-and-align-directives.md +++ b/docs/assembler/inline/even-and-align-directives.md @@ -9,10 +9,10 @@ ms.assetid: 7357ab2d-4a5c-43ca-accb-a5f21cdfcde5 **Microsoft Specific** -Although the inline assembler doesn't support most MASM directives, it does support `EVEN` and `ALIGN`. These directives put `NOP` (no operation) instructions in the assembly code as needed to align labels to specific boundaries. This makes instruction-fetch operations more efficient for some processors. +Although the inline assembler doesn't support most MASM directives, it does support [`EVEN`](../masm/even.md) and [`ALIGN`](../masm/align-masm.md). These directives put `NOP` (no operation) instructions in the assembly code as needed to align labels to specific boundaries. This makes instruction-fetch operations more efficient for some processors. **END Microsoft Specific** ## See also -[Using Assembly Language in `__asm` Blocks](../../assembler/inline/using-assembly-language-in-asm-blocks.md)
+[Using Assembly Language in `__asm` Blocks](using-assembly-language-in-asm-blocks.md)
From 8377f62e9ffb22526ae717771689e7fd3e316646 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 19 Jul 2025 22:08:05 +0800 Subject: [PATCH 1134/2255] Remove unneeded `br` element in "EVEN and ALIGN Directives" topic --- docs/assembler/inline/even-and-align-directives.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/assembler/inline/even-and-align-directives.md b/docs/assembler/inline/even-and-align-directives.md index e68c0ad42a8..b5d7172a9d0 100644 --- a/docs/assembler/inline/even-and-align-directives.md +++ b/docs/assembler/inline/even-and-align-directives.md @@ -15,4 +15,4 @@ Although the inline assembler doesn't support most MASM directives, it does supp ## See also -[Using Assembly Language in `__asm` Blocks](using-assembly-language-in-asm-blocks.md)
+[Using Assembly Language in `__asm` Blocks](using-assembly-language-in-asm-blocks.md) From 6ac88d6d452c50c7e0133922e5ed702911c9147a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 19 Jul 2025 22:08:53 +0800 Subject: [PATCH 1135/2255] Update metadata in "EVEN and ALIGN Directives" topic --- docs/assembler/inline/even-and-align-directives.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/assembler/inline/even-and-align-directives.md b/docs/assembler/inline/even-and-align-directives.md index b5d7172a9d0..d98adc4b440 100644 --- a/docs/assembler/inline/even-and-align-directives.md +++ b/docs/assembler/inline/even-and-align-directives.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: EVEN and ALIGN Directives" title: "EVEN and ALIGN Directives" -ms.date: "08/30/2018" +description: "Learn more about: EVEN and ALIGN Directives" +ms.date: 08/30/2018 helpviewer_keywords: ["EVEN directive", "directives, MASM", "MASM (Microsoft Macro Assembler), directives", "NOP (no operation instruction)", "ALIGN directive"] -ms.assetid: 7357ab2d-4a5c-43ca-accb-a5f21cdfcde5 --- # `EVEN` and `ALIGN` Directives From a62287a31ee5bba300566c665c797e5f28da9e00 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 19 Jul 2025 22:17:39 +0800 Subject: [PATCH 1136/2255] Add backticks for heading in `EVEN` MASM reference --- docs/assembler/masm/even.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/assembler/masm/even.md b/docs/assembler/masm/even.md index a8123b72031..93457f87c58 100644 --- a/docs/assembler/masm/even.md +++ b/docs/assembler/masm/even.md @@ -6,7 +6,7 @@ f1_keywords: ["EVEN"] helpviewer_keywords: ["EVEN directive"] ms.assetid: 68938ba4-8cb9-44d4-914e-9f9fee6bcbf4 --- -# EVEN +# `EVEN` Aligns the next variable or instruction on an even byte. From 14226923196a23e75002240cb1c00c90e1c9dd9f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 19 Jul 2025 22:19:28 +0800 Subject: [PATCH 1137/2255] Add `ALIGN` to "See also" in `EVEN` MASM reference --- docs/assembler/masm/even.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/assembler/masm/even.md b/docs/assembler/masm/even.md index 93457f87c58..4b63d74a76a 100644 --- a/docs/assembler/masm/even.md +++ b/docs/assembler/masm/even.md @@ -16,5 +16,6 @@ Aligns the next variable or instruction on an even byte. ## See also +[`ALIGN`](align-masm.md)\ [Directives reference](directives-reference.md)\ [MASM BNF Grammar](masm-bnf-grammar.md) From b07d18297744e65c6ac525c386545776f822c217 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 19 Jul 2025 22:20:23 +0800 Subject: [PATCH 1138/2255] Update metadata in `EVEN` MASM reference --- docs/assembler/masm/even.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/assembler/masm/even.md b/docs/assembler/masm/even.md index 4b63d74a76a..f7b6a209b92 100644 --- a/docs/assembler/masm/even.md +++ b/docs/assembler/masm/even.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: EVEN" title: "EVEN" -ms.date: "12/17/2019" +description: "Learn more about: EVEN" +ms.date: 12/17/2019 f1_keywords: ["EVEN"] helpviewer_keywords: ["EVEN directive"] -ms.assetid: 68938ba4-8cb9-44d4-914e-9f9fee6bcbf4 --- # `EVEN` From bac4ac1f49921c083246dc37d187feed5737a74a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 19 Jul 2025 22:40:09 +0800 Subject: [PATCH 1139/2255] Merge duplicate sentences about `_asm` synonym in `__asm` reference --- docs/assembler/inline/asm.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/assembler/inline/asm.md b/docs/assembler/inline/asm.md index 0ad5df365a0..e421e86b5b0 100644 --- a/docs/assembler/inline/asm.md +++ b/docs/assembler/inline/asm.md @@ -28,7 +28,7 @@ The **`__asm`** keyword invokes the inline assembler and can appear wherever a C ## Remarks -If used without braces, the **`__asm`** keyword means that the rest of the line is an assembly-language statement. If used with braces, it means that each line between the braces is an assembly-language statement. For compatibility with previous versions, **`_asm`** is a synonym for **`__asm`**. +If used without braces, the **`__asm`** keyword means that the rest of the line is an assembly-language statement. If used with braces, it means that each line between the braces is an assembly-language statement. For compatibility with previous versions, **`_asm`** is a synonym for **`__asm`** unless compiler option [`/Za` (Disable language extensions)](../../build/reference/za-ze-disable-language-extensions.md) is specified. Since the **`__asm`** keyword is a statement separator, you can put assembly instructions on the same line. @@ -42,8 +42,6 @@ didn't cause native code to be generated when compiled with **/clr**; the compil `__asm int 3` now results in native code generation for the function. If you want a function to cause a break point in your code and if you want that function compiled to MSIL, use [__debugbreak](../../intrinsics/debugbreak.md). -For compatibility with previous versions, **`_asm`** is a synonym for **`__asm`** unless compiler option [/Za \(Disable language extensions)](../../build/reference/za-ze-disable-language-extensions.md) is specified. - ## Example The following code fragment is a simple **`__asm`** block enclosed in braces: From e661a57ec9626ffb47df49a79168c4c0072d8ba0 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 19 Jul 2025 22:41:19 +0800 Subject: [PATCH 1140/2255] Update metadata in `__asm` reference --- docs/assembler/inline/asm.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/assembler/inline/asm.md b/docs/assembler/inline/asm.md index e421e86b5b0..a14c0854693 100644 --- a/docs/assembler/inline/asm.md +++ b/docs/assembler/inline/asm.md @@ -1,11 +1,10 @@ --- -description: "Learn more about: `__asm`" title: "__asm" -ms.date: "10/09/2018" +description: "Learn more about: `__asm`" +ms.date: 10/09/2018 +ms.topic: reference f1_keywords: ["__asm", "_asm", "__asm_cpp"] helpviewer_keywords: ["__asm keyword [C++], vs. asm blocks", "__asm keyword [C++]"] -ms.assetid: 77ff3bc9-a492-4b5e-85e1-fa4e414e79cd -ms.topic: reference --- # `__asm` From cbd976c8a737b5900b3696abe315a6df15cc39dc Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 19 Jul 2025 23:01:48 +0800 Subject: [PATCH 1141/2255] Add blockquotes for error messages in range [C2201, C2230] --- docs/error-messages/compiler-errors-1/compiler-error-c2203.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2204.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2205.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2206.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2207.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2208.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2212.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2213.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2216.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2217.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2219.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2220.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2222.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2223.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2224.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2226.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2227.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2228.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2229.md | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2203.md b/docs/error-messages/compiler-errors-1/compiler-error-c2203.md index 6171c53c18a..e1aa384e76d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2203.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2203.md @@ -8,7 +8,7 @@ ms.assetid: 5497df43-86f6-43d5-b6cb-723c4c589b10 --- # Compiler Error C2203 -delete operator cannot specify bounds for an array +> delete operator cannot specify bounds for an array With the **/Za** (ANSI) option, the **`delete`** operator can delete an entire array but not parts or specific members of the array. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2204.md b/docs/error-messages/compiler-errors-1/compiler-error-c2204.md index 001aefd823c..742337669f1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2204.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2204.md @@ -8,6 +8,6 @@ ms.assetid: bbe506d4-7863-44af-8709-161881c4b4ba --- # Compiler Error C2204 -'type' : type definition found within parentheses +> 'type' : type definition found within parentheses The type is defined as an operand or in prototype scope. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2205.md b/docs/error-messages/compiler-errors-1/compiler-error-c2205.md index 933e5828067..c1097d75f0d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2205.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2205.md @@ -8,6 +8,6 @@ ms.assetid: bfc19840-4a48-4da5-8e69-7069989f1d2c --- # Compiler Error C2205 -'identifier' : cannot initialize extern variables with block scope +> 'identifier' : cannot initialize extern variables with block scope An **`extern`** variable cannot be initialized in a function. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2206.md b/docs/error-messages/compiler-errors-1/compiler-error-c2206.md index ecc111e042f..caffc468735 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2206.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2206.md @@ -8,7 +8,7 @@ ms.assetid: d7fba68b-aa28-4885-a9a0-27107358f066 --- # Compiler Error C2206 -'function' : typedef cannot be used for function definition +> 'function' : typedef cannot be used for function definition A **`typedef`** is used to define a function type. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2207.md b/docs/error-messages/compiler-errors-1/compiler-error-c2207.md index 1f1fffd0dd9..351818ac1a8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2207.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2207.md @@ -8,6 +8,6 @@ ms.assetid: d7d7b537-68f1-420a-9835-b5b6f2cb5cfd --- # Compiler Error C2207 -'member': a member of a class template cannot acquire a function type +> 'member': a member of a class template cannot acquire a function type The `member` of the class template was previously parsed as a non-static data member. It cannot be redefined as a member function. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2208.md b/docs/error-messages/compiler-errors-1/compiler-error-c2208.md index b191a057341..d60434b72db 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2208.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2208.md @@ -8,7 +8,7 @@ ms.assetid: 9ae704bc-bf70-45f1-8e47-0470f21edd4e --- # Compiler Error C2208 -'type' : no members defined using this type +> 'type' : no members defined using this type An identifier resolving to a type name is in an aggregate declaration, but the compiler cannot declare a member. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2212.md b/docs/error-messages/compiler-errors-1/compiler-error-c2212.md index db3551919f0..94d1c9e3533 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2212.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2212.md @@ -8,6 +8,6 @@ ms.assetid: 3fdab304-272c-4d07-bfd4-fad75170e536 --- # Compiler Error C2212 -'identifier' : __based not available for pointers to functions +> 'identifier' : __based not available for pointers to functions Pointers to functions cannot be declared **`__based`**. If you need code-based data, use the **`__declspec`** keyword or the `data_seg` pragma. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2213.md b/docs/error-messages/compiler-errors-1/compiler-error-c2213.md index ef1d970869d..f14100ffb1a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2213.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2213.md @@ -8,7 +8,7 @@ ms.assetid: ff012278-7f3b-4d49-aaed-2349756f6225 --- # Compiler Error C2213 -'modifier' : illegal argument to __based +> 'modifier' : illegal argument to __based The argument modifying **`__based`** is invalid. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2216.md b/docs/error-messages/compiler-errors-1/compiler-error-c2216.md index 51d2a53818b..e9f1f1a5e26 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2216.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2216.md @@ -8,7 +8,7 @@ ms.assetid: 250f6bdc-a5e1-495f-a1e8-6e8e7021ad9d --- # Compiler Error C2216 -'keyword1' cannot be used with ' keyword2' +> 'keyword1' cannot be used with ' keyword2' Two keywords that are mutually exclusive were used together. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2217.md b/docs/error-messages/compiler-errors-1/compiler-error-c2217.md index 009e512bf14..ff2a44a80a7 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2217.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2217.md @@ -8,7 +8,7 @@ ms.assetid: 1ce1e3f5-4171-4376-804d-967f7e612935 --- # Compiler Error C2217 -'attribute1' requires 'attribute2' +> 'attribute1' requires 'attribute2' The first function attribute requires the second attribute. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2219.md b/docs/error-messages/compiler-errors-1/compiler-error-c2219.md index eb2fc27f7dd..e6ab2c5f053 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2219.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2219.md @@ -8,6 +8,6 @@ ms.assetid: 2cfe9a75-6890-46a1-a127-79a7def78e94 --- # Compiler Error C2219 -syntax error : type qualifier must be after '*' +> syntax error : type qualifier must be after '*' Type qualifier (**`const`** or **`volatile`**) appears where it is not permitted. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2220.md b/docs/error-messages/compiler-errors-1/compiler-error-c2220.md index edfa71f27b2..d5713a4bb64 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2220.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2220.md @@ -8,7 +8,7 @@ ms.assetid: d610802c-64d7-40ad-a2a6-0ed0b6815a6c --- # Compiler Error C2220 -warning treated as error - no object file generated +> warning treated as error - no object file generated [/WX](../../build/reference/compiler-option-warning-level.md) tells the compiler to treat all warnings as errors. Because an error occurred, no object or executable file was generated. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2222.md b/docs/error-messages/compiler-errors-1/compiler-error-c2222.md index 7d2bc23ae53..2acc13ec3b5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2222.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2222.md @@ -8,6 +8,6 @@ ms.assetid: 1c902054-5c77-41e6-a1cc-018f802460cd --- # Compiler Error C2222 -unexpected type 'type': a base-class or member was expected +> unexpected type 'type': a base-class or member was expected The initializer list can only initialize base classes or members of a type. To fix this error, verify that only base classes or members of the type are initialized in the initializer list. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2223.md b/docs/error-messages/compiler-errors-1/compiler-error-c2223.md index cc9b7306391..ddb52547339 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2223.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2223.md @@ -8,7 +8,7 @@ ms.assetid: e4506f0f-0317-4a96-8a90-877a156d7939 --- # Compiler Error C2223 -left of '->identifier' must point to struct/union +> left of '->identifier' must point to struct/union The operand to the left of `->` is not a pointer to a class, structure, or union. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2224.md b/docs/error-messages/compiler-errors-1/compiler-error-c2224.md index 7bd87633ef8..973fa6b17e7 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2224.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2224.md @@ -8,7 +8,7 @@ ms.assetid: 27b93bbf-4ce7-47a3-a9c4-f4fbed689bdf --- # Compiler Error C2224 -left of '.identifier' must have struct/union type +> left of '.identifier' must have struct/union type The operand to the left of the period (.) is not a class, structure, or union. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2226.md b/docs/error-messages/compiler-errors-1/compiler-error-c2226.md index 5ad3e477754..cb39ac2a2dd 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2226.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2226.md @@ -8,6 +8,6 @@ ms.assetid: b3aaa2a5-254a-46a9-a508-de2371ecffeb --- # Compiler Error C2226 -syntax error : unexpected type 'type' +> syntax error : unexpected type 'type' A syntax error occurs before or in the type specifier. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2227.md b/docs/error-messages/compiler-errors-1/compiler-error-c2227.md index 15613f96e17..770661a8a83 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2227.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2227.md @@ -8,7 +8,7 @@ ms.assetid: d470e8b8-7e15-468b-84fa-37d1a0132271 --- # Compiler Error C2227 -left of '->member' must point to class/struct/union/generic type +> left of '->member' must point to class/struct/union/generic type The operand to the left of `->` is not a pointer to a class, structure, or union. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2228.md b/docs/error-messages/compiler-errors-1/compiler-error-c2228.md index d8cc1b4db97..27e80984ce6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2228.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2228.md @@ -8,7 +8,7 @@ ms.assetid: 901cadb1-ce90-4ae0-a360-547a9ba2ca18 --- # Compiler Error C2228 -left of '.identifier' must have class/struct/union +> left of '.identifier' must have class/struct/union The operand to the left of the period (.) is not a class, structure, or union. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2229.md b/docs/error-messages/compiler-errors-1/compiler-error-c2229.md index 24ce025b2cd..fec73b43b76 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2229.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2229.md @@ -8,7 +8,7 @@ ms.assetid: 933c7cf2-a463-4e74-b0b4-59dedad987fb --- # Compiler Error C2229 -type 'identifier' has an illegal zero-sized array +> type 'identifier' has an illegal zero-sized array A member of a structure or bit field contains a zero-sized array that is not the last member. From 55145200f705ab156f7a4911139aeabbe1304f54 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 19 Jul 2025 23:05:36 +0800 Subject: [PATCH 1142/2255] Add "Remarks" and "Example" headings for error references in range [C2201, C2230] --- docs/error-messages/compiler-errors-1/compiler-error-c2201.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2203.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2204.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2205.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2206.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2207.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2208.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2212.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2213.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2216.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2217.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2218.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2219.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2220.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2222.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2223.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2224.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2226.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2227.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2228.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2229.md | 4 ++++ 21 files changed, 56 insertions(+) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2201.md b/docs/error-messages/compiler-errors-1/compiler-error-c2201.md index aa9d5356317..fa16e96cf04 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2201.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2201.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C2201"] > '*identifier*' : must have external linkage in order to be exported/imported +## Remarks + The exported identifier is **`static`**. ## Example diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2203.md b/docs/error-messages/compiler-errors-1/compiler-error-c2203.md index e1aa384e76d..074ece82aac 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2203.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2203.md @@ -10,8 +10,12 @@ ms.assetid: 5497df43-86f6-43d5-b6cb-723c4c589b10 > delete operator cannot specify bounds for an array +## Remarks + With the **/Za** (ANSI) option, the **`delete`** operator can delete an entire array but not parts or specific members of the array. +## Example + The following sample generates C2203: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2204.md b/docs/error-messages/compiler-errors-1/compiler-error-c2204.md index 742337669f1..ae3a56a6902 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2204.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2204.md @@ -10,4 +10,6 @@ ms.assetid: bbe506d4-7863-44af-8709-161881c4b4ba > 'type' : type definition found within parentheses +## Remarks + The type is defined as an operand or in prototype scope. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2205.md b/docs/error-messages/compiler-errors-1/compiler-error-c2205.md index c1097d75f0d..e1d21362a4b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2205.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2205.md @@ -10,4 +10,6 @@ ms.assetid: bfc19840-4a48-4da5-8e69-7069989f1d2c > 'identifier' : cannot initialize extern variables with block scope +## Remarks + An **`extern`** variable cannot be initialized in a function. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2206.md b/docs/error-messages/compiler-errors-1/compiler-error-c2206.md index caffc468735..657f17fd7a5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2206.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2206.md @@ -10,8 +10,12 @@ ms.assetid: d7fba68b-aa28-4885-a9a0-27107358f066 > 'function' : typedef cannot be used for function definition +## Remarks + A **`typedef`** is used to define a function type. +## Example + The following sample generates C2206: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2207.md b/docs/error-messages/compiler-errors-1/compiler-error-c2207.md index 351818ac1a8..2f3797ebbda 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2207.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2207.md @@ -10,4 +10,6 @@ ms.assetid: d7d7b537-68f1-420a-9835-b5b6f2cb5cfd > 'member': a member of a class template cannot acquire a function type +## Remarks + The `member` of the class template was previously parsed as a non-static data member. It cannot be redefined as a member function. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2208.md b/docs/error-messages/compiler-errors-1/compiler-error-c2208.md index d60434b72db..3298a08661c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2208.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2208.md @@ -10,8 +10,12 @@ ms.assetid: 9ae704bc-bf70-45f1-8e47-0470f21edd4e > 'type' : no members defined using this type +## Remarks + An identifier resolving to a type name is in an aggregate declaration, but the compiler cannot declare a member. +## Example + The following sample generates C2208: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2212.md b/docs/error-messages/compiler-errors-1/compiler-error-c2212.md index 94d1c9e3533..81cb9a15b56 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2212.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2212.md @@ -10,4 +10,6 @@ ms.assetid: 3fdab304-272c-4d07-bfd4-fad75170e536 > 'identifier' : __based not available for pointers to functions +## Remarks + Pointers to functions cannot be declared **`__based`**. If you need code-based data, use the **`__declspec`** keyword or the `data_seg` pragma. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2213.md b/docs/error-messages/compiler-errors-1/compiler-error-c2213.md index f14100ffb1a..3b81efc8df1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2213.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2213.md @@ -10,8 +10,12 @@ ms.assetid: ff012278-7f3b-4d49-aaed-2349756f6225 > 'modifier' : illegal argument to __based +## Remarks + The argument modifying **`__based`** is invalid. +## Example + The following sample generates C2213: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2216.md b/docs/error-messages/compiler-errors-1/compiler-error-c2216.md index e9f1f1a5e26..de2d71f978b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2216.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2216.md @@ -10,6 +10,8 @@ ms.assetid: 250f6bdc-a5e1-495f-a1e8-6e8e7021ad9d > 'keyword1' cannot be used with ' keyword2' +## Remarks + Two keywords that are mutually exclusive were used together. ## Examples diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2217.md b/docs/error-messages/compiler-errors-1/compiler-error-c2217.md index ff2a44a80a7..3c77379f25c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2217.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2217.md @@ -10,6 +10,8 @@ ms.assetid: 1ce1e3f5-4171-4376-804d-967f7e612935 > 'attribute1' requires 'attribute2' +## Remarks + The first function attribute requires the second attribute. ## Example diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2218.md b/docs/error-messages/compiler-errors-1/compiler-error-c2218.md index a5f96212403..2015d2bb815 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2218.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2218.md @@ -10,6 +10,8 @@ ms.assetid: b0f55da4-8edb-4b45-b298-1a091981bd7b > '__vectorcall' cannot be used with '/arch:IA32' +## Remarks + The **`__vectorcall`** calling convention is only supported in native code on x86 and x64 processors that include Streaming SIMD Extensions 2 (SSE2) and above. For more information, see [`__vectorcall`](../../cpp/vectorcall.md). To fix this error, change the compiler options to target SSE2, AVX or AVX2 instruction sets. For more information, see [`/arch` (x86)](../../build/reference/arch-x86.md). diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2219.md b/docs/error-messages/compiler-errors-1/compiler-error-c2219.md index e6ab2c5f053..5a12002bc6e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2219.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2219.md @@ -10,4 +10,6 @@ ms.assetid: 2cfe9a75-6890-46a1-a127-79a7def78e94 > syntax error : type qualifier must be after '*' +## Remarks + Type qualifier (**`const`** or **`volatile`**) appears where it is not permitted. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2220.md b/docs/error-messages/compiler-errors-1/compiler-error-c2220.md index d5713a4bb64..0b5c251ab25 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2220.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2220.md @@ -10,6 +10,8 @@ ms.assetid: d610802c-64d7-40ad-a2a6-0ed0b6815a6c > warning treated as error - no object file generated +## Remarks + [/WX](../../build/reference/compiler-option-warning-level.md) tells the compiler to treat all warnings as errors. Because an error occurred, no object or executable file was generated. This error only appears when the **/WX** flag is set and a warning occurs during compilation. To fix this error, you must eliminate every warning in your project. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2222.md b/docs/error-messages/compiler-errors-1/compiler-error-c2222.md index 2acc13ec3b5..aa3d1675bc0 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2222.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2222.md @@ -10,4 +10,6 @@ ms.assetid: 1c902054-5c77-41e6-a1cc-018f802460cd > unexpected type 'type': a base-class or member was expected +## Remarks + The initializer list can only initialize base classes or members of a type. To fix this error, verify that only base classes or members of the type are initialized in the initializer list. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2223.md b/docs/error-messages/compiler-errors-1/compiler-error-c2223.md index ddb52547339..fba2999c336 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2223.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2223.md @@ -10,6 +10,8 @@ ms.assetid: e4506f0f-0317-4a96-8a90-877a156d7939 > left of '->identifier' must point to struct/union +## Remarks + The operand to the left of `->` is not a pointer to a class, structure, or union. This error can be caused by a left operand that is an undefined variable (therefore type **`int`**). diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2224.md b/docs/error-messages/compiler-errors-1/compiler-error-c2224.md index 973fa6b17e7..e1f675d36f7 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2224.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2224.md @@ -10,6 +10,8 @@ ms.assetid: 27b93bbf-4ce7-47a3-a9c4-f4fbed689bdf > left of '.identifier' must have struct/union type +## Remarks + The operand to the left of the period (.) is not a class, structure, or union. This error can be caused by a left operand that is an undefined variable (therefore type **`int`**). diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2226.md b/docs/error-messages/compiler-errors-1/compiler-error-c2226.md index cb39ac2a2dd..06e332ed40b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2226.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2226.md @@ -10,4 +10,6 @@ ms.assetid: b3aaa2a5-254a-46a9-a508-de2371ecffeb > syntax error : unexpected type 'type' +## Remarks + A syntax error occurs before or in the type specifier. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2227.md b/docs/error-messages/compiler-errors-1/compiler-error-c2227.md index 770661a8a83..39545305f52 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2227.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2227.md @@ -10,8 +10,12 @@ ms.assetid: d470e8b8-7e15-468b-84fa-37d1a0132271 > left of '->member' must point to class/struct/union/generic type +## Remarks + The operand to the left of `->` is not a pointer to a class, structure, or union. +## Example + The following sample generates C2227: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2228.md b/docs/error-messages/compiler-errors-1/compiler-error-c2228.md index 27e80984ce6..11a8a0cdabc 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2228.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2228.md @@ -10,8 +10,12 @@ ms.assetid: 901cadb1-ce90-4ae0-a360-547a9ba2ca18 > left of '.identifier' must have class/struct/union +## Remarks + The operand to the left of the period (.) is not a class, structure, or union. +## Example + The following sample generates C2228: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2229.md b/docs/error-messages/compiler-errors-1/compiler-error-c2229.md index fec73b43b76..42073aac2b4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2229.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2229.md @@ -10,12 +10,16 @@ ms.assetid: 933c7cf2-a463-4e74-b0b4-59dedad987fb > type 'identifier' has an illegal zero-sized array +## Remarks + A member of a structure or bit field contains a zero-sized array that is not the last member. Because you can have a zero sized array as the last member of the struct, you must specify its size when you allocate the struct. If the zero sized array is not the last member of the struct, the compiler can't calculate the offset for the remaining fields. +## Example + The following sample generates C2229: ```cpp From f1c6d3d73e755cebceb6c48555624a136b0c23ca Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 19 Jul 2025 23:06:41 +0800 Subject: [PATCH 1143/2255] Replace term "sample" with "example" for error references in range [C2201, C2230] --- .../compiler-errors-1/compiler-error-c2201.md | 2 +- .../compiler-errors-1/compiler-error-c2203.md | 2 +- .../compiler-errors-1/compiler-error-c2206.md | 2 +- .../compiler-errors-1/compiler-error-c2208.md | 2 +- .../compiler-errors-1/compiler-error-c2213.md | 2 +- .../compiler-errors-1/compiler-error-c2216.md | 6 +++--- .../compiler-errors-1/compiler-error-c2217.md | 2 +- .../compiler-errors-1/compiler-error-c2227.md | 2 +- .../compiler-errors-1/compiler-error-c2228.md | 2 +- .../compiler-errors-1/compiler-error-c2229.md | 2 +- 10 files changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2201.md b/docs/error-messages/compiler-errors-1/compiler-error-c2201.md index fa16e96cf04..13e76c2b4ce 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2201.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2201.md @@ -15,7 +15,7 @@ The exported identifier is **`static`**. ## Example -The following sample generates C2286, and shows how to fix it: +The following example generates C2286, and shows how to fix it: ```cpp // C2201.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2203.md b/docs/error-messages/compiler-errors-1/compiler-error-c2203.md index 074ece82aac..ac7914b2af4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2203.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2203.md @@ -16,7 +16,7 @@ With the **/Za** (ANSI) option, the **`delete`** operator can delete an entire a ## Example -The following sample generates C2203: +The following example generates C2203: ```cpp // C2203.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2206.md b/docs/error-messages/compiler-errors-1/compiler-error-c2206.md index 657f17fd7a5..bbfae4ddc0e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2206.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2206.md @@ -16,7 +16,7 @@ A **`typedef`** is used to define a function type. ## Example -The following sample generates C2206: +The following example generates C2206: ```cpp // C2206.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2208.md b/docs/error-messages/compiler-errors-1/compiler-error-c2208.md index 3298a08661c..d77aaa48c87 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2208.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2208.md @@ -16,7 +16,7 @@ An identifier resolving to a type name is in an aggregate declaration, but the c ## Example -The following sample generates C2208: +The following example generates C2208: ```cpp // C2208.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2213.md b/docs/error-messages/compiler-errors-1/compiler-error-c2213.md index 3b81efc8df1..054648b694b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2213.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2213.md @@ -16,7 +16,7 @@ The argument modifying **`__based`** is invalid. ## Example -The following sample generates C2213: +The following example generates C2213: ```cpp // C2213.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2216.md b/docs/error-messages/compiler-errors-1/compiler-error-c2216.md index de2d71f978b..762d80dc56e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2216.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2216.md @@ -16,7 +16,7 @@ Two keywords that are mutually exclusive were used together. ## Examples -The following sample generates C2216. +The following example generates C2216. ```cpp // C2216.cpp @@ -27,7 +27,7 @@ ref struct Y1 { }; ``` -The following sample generates C2216. +The following example generates C2216. ```cpp // C2216b.cpp @@ -38,7 +38,7 @@ public ref class X { }; ``` -The following sample generates C2216. +The following example generates C2216. ```cpp // C2216c.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2217.md b/docs/error-messages/compiler-errors-1/compiler-error-c2217.md index 3c77379f25c..109b769ac33 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2217.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2217.md @@ -16,7 +16,7 @@ The first function attribute requires the second attribute. ## Example -C2217 can occur if you attempt to bind a delegate to a CLR function that takes a variable number of arguments. If the function also has a param array overload, use that instead. The following sample generates C2217. +C2217 can occur if you attempt to bind a delegate to a CLR function that takes a variable number of arguments. If the function also has a param array overload, use that instead. The following example generates C2217. ```cpp // C2217.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2227.md b/docs/error-messages/compiler-errors-1/compiler-error-c2227.md index 39545305f52..8a72d937044 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2227.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2227.md @@ -16,7 +16,7 @@ The operand to the left of `->` is not a pointer to a class, structure, or union ## Example -The following sample generates C2227: +The following example generates C2227: ```cpp // C2227.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2228.md b/docs/error-messages/compiler-errors-1/compiler-error-c2228.md index 11a8a0cdabc..653d4a5b002 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2228.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2228.md @@ -16,7 +16,7 @@ The operand to the left of the period (.) is not a class, structure, or union. ## Example -The following sample generates C2228: +The following example generates C2228: ```cpp // C2228.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2229.md b/docs/error-messages/compiler-errors-1/compiler-error-c2229.md index 42073aac2b4..899f5f6d093 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2229.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2229.md @@ -20,7 +20,7 @@ If the zero sized array is not the last member of the struct, the compiler can't ## Example -The following sample generates C2229: +The following example generates C2229: ```cpp // C2229.cpp From d8b767255e56f9182283b44257ca5a1db03f0b3d Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 19 Jul 2025 23:10:11 +0800 Subject: [PATCH 1144/2255] Update metadata for error references in range [C2201, C2230] --- .../error-messages/compiler-errors-1/compiler-error-c2201.md | 2 +- .../error-messages/compiler-errors-1/compiler-error-c2203.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2204.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2205.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2206.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2207.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2208.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2212.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2213.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2216.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2217.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2218.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2219.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2220.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2222.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2223.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2224.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2226.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2227.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2228.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2229.md | 5 ++--- 21 files changed, 41 insertions(+), 61 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2201.md b/docs/error-messages/compiler-errors-1/compiler-error-c2201.md index 13e76c2b4ce..01983a4cf4a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2201.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2201.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler Error C2201" title: "Compiler Error C2201" +description: "Learn more about: Compiler Error C2201" ms.date: 05/03/2021 f1_keywords: ["C2201"] helpviewer_keywords: ["C2201"] diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2203.md b/docs/error-messages/compiler-errors-1/compiler-error-c2203.md index ac7914b2af4..1850f52d271 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2203.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2203.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2203" title: "Compiler Error C2203" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2203" +ms.date: 11/04/2016 f1_keywords: ["C2203"] helpviewer_keywords: ["C2203"] -ms.assetid: 5497df43-86f6-43d5-b6cb-723c4c589b10 --- # Compiler Error C2203 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2204.md b/docs/error-messages/compiler-errors-1/compiler-error-c2204.md index ae3a56a6902..b09f6a116a9 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2204.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2204.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2204" title: "Compiler Error C2204" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2204" +ms.date: 11/04/2016 f1_keywords: ["C2204"] helpviewer_keywords: ["C2204"] -ms.assetid: bbe506d4-7863-44af-8709-161881c4b4ba --- # Compiler Error C2204 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2205.md b/docs/error-messages/compiler-errors-1/compiler-error-c2205.md index e1d21362a4b..6b073e8cc7c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2205.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2205.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2205" title: "Compiler Error C2205" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2205" +ms.date: 11/04/2016 f1_keywords: ["C2205"] helpviewer_keywords: ["C2205"] -ms.assetid: bfc19840-4a48-4da5-8e69-7069989f1d2c --- # Compiler Error C2205 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2206.md b/docs/error-messages/compiler-errors-1/compiler-error-c2206.md index bbfae4ddc0e..611865407d5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2206.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2206.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2206" title: "Compiler Error C2206" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2206" +ms.date: 11/04/2016 f1_keywords: ["C2206"] helpviewer_keywords: ["C2206"] -ms.assetid: d7fba68b-aa28-4885-a9a0-27107358f066 --- # Compiler Error C2206 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2207.md b/docs/error-messages/compiler-errors-1/compiler-error-c2207.md index 2f3797ebbda..fab75ec1e1e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2207.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2207.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2207" title: "Compiler Error C2207" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2207" +ms.date: 11/04/2016 f1_keywords: ["C2207"] helpviewer_keywords: ["C2207"] -ms.assetid: d7d7b537-68f1-420a-9835-b5b6f2cb5cfd --- # Compiler Error C2207 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2208.md b/docs/error-messages/compiler-errors-1/compiler-error-c2208.md index d77aaa48c87..6c3ca308787 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2208.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2208.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2208" title: "Compiler Error C2208" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2208" +ms.date: 11/04/2016 f1_keywords: ["C2208"] helpviewer_keywords: ["C2208"] -ms.assetid: 9ae704bc-bf70-45f1-8e47-0470f21edd4e --- # Compiler Error C2208 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2212.md b/docs/error-messages/compiler-errors-1/compiler-error-c2212.md index 81cb9a15b56..16a9f9f198b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2212.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2212.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2212" title: "Compiler Error C2212" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2212" +ms.date: 11/04/2016 f1_keywords: ["C2212"] helpviewer_keywords: ["C2212"] -ms.assetid: 3fdab304-272c-4d07-bfd4-fad75170e536 --- # Compiler Error C2212 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2213.md b/docs/error-messages/compiler-errors-1/compiler-error-c2213.md index 054648b694b..667f53b64db 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2213.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2213.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2213" title: "Compiler Error C2213" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2213" +ms.date: 11/04/2016 f1_keywords: ["C2213"] helpviewer_keywords: ["C2213"] -ms.assetid: ff012278-7f3b-4d49-aaed-2349756f6225 --- # Compiler Error C2213 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2216.md b/docs/error-messages/compiler-errors-1/compiler-error-c2216.md index 762d80dc56e..5d0d49c0e9e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2216.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2216.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2216" title: "Compiler Error C2216" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2216" +ms.date: 11/04/2016 f1_keywords: ["C2216"] helpviewer_keywords: ["C2216"] -ms.assetid: 250f6bdc-a5e1-495f-a1e8-6e8e7021ad9d --- # Compiler Error C2216 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2217.md b/docs/error-messages/compiler-errors-1/compiler-error-c2217.md index 109b769ac33..b13e45b5eec 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2217.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2217.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2217" title: "Compiler Error C2217" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2217" +ms.date: 11/04/2016 f1_keywords: ["C2217"] helpviewer_keywords: ["C2217"] -ms.assetid: 1ce1e3f5-4171-4376-804d-967f7e612935 --- # Compiler Error C2217 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2218.md b/docs/error-messages/compiler-errors-1/compiler-error-c2218.md index 2015d2bb815..07e17522d3b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2218.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2218.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2218" title: "Compiler Error C2218" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2218" +ms.date: 11/04/2016 f1_keywords: ["C2218"] helpviewer_keywords: ["C2218"] -ms.assetid: b0f55da4-8edb-4b45-b298-1a091981bd7b --- # Compiler Error C2218 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2219.md b/docs/error-messages/compiler-errors-1/compiler-error-c2219.md index 5a12002bc6e..499519f546c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2219.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2219.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2219" title: "Compiler Error C2219" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2219" +ms.date: 11/04/2016 f1_keywords: ["C2219"] helpviewer_keywords: ["C2219"] -ms.assetid: 2cfe9a75-6890-46a1-a127-79a7def78e94 --- # Compiler Error C2219 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2220.md b/docs/error-messages/compiler-errors-1/compiler-error-c2220.md index 0b5c251ab25..0660cff0df4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2220.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2220.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2220" title: "Compiler Error C2220" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2220" +ms.date: 11/04/2016 f1_keywords: ["C2220"] helpviewer_keywords: ["C2220"] -ms.assetid: d610802c-64d7-40ad-a2a6-0ed0b6815a6c --- # Compiler Error C2220 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2222.md b/docs/error-messages/compiler-errors-1/compiler-error-c2222.md index aa3d1675bc0..894171131f6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2222.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2222.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2222" title: "Compiler Error C2222" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2222" +ms.date: 11/04/2016 f1_keywords: ["C2222"] helpviewer_keywords: ["C2222"] -ms.assetid: 1c902054-5c77-41e6-a1cc-018f802460cd --- # Compiler Error C2222 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2223.md b/docs/error-messages/compiler-errors-1/compiler-error-c2223.md index fba2999c336..4607f1838a6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2223.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2223.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2223" title: "Compiler Error C2223" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2223" +ms.date: 11/04/2016 f1_keywords: ["C2223"] helpviewer_keywords: ["C2223"] -ms.assetid: e4506f0f-0317-4a96-8a90-877a156d7939 --- # Compiler Error C2223 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2224.md b/docs/error-messages/compiler-errors-1/compiler-error-c2224.md index e1f675d36f7..7d13d46a0e9 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2224.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2224.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2224" title: "Compiler Error C2224" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2224" +ms.date: 11/04/2016 f1_keywords: ["C2224"] helpviewer_keywords: ["C2224"] -ms.assetid: 27b93bbf-4ce7-47a3-a9c4-f4fbed689bdf --- # Compiler Error C2224 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2226.md b/docs/error-messages/compiler-errors-1/compiler-error-c2226.md index 06e332ed40b..7576eab5fea 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2226.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2226.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2226" title: "Compiler Error C2226" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2226" +ms.date: 11/04/2016 f1_keywords: ["C2226"] helpviewer_keywords: ["C2226"] -ms.assetid: b3aaa2a5-254a-46a9-a508-de2371ecffeb --- # Compiler Error C2226 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2227.md b/docs/error-messages/compiler-errors-1/compiler-error-c2227.md index 8a72d937044..4c84efc13a6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2227.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2227.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2227" title: "Compiler Error C2227" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2227" +ms.date: 11/04/2016 f1_keywords: ["C2227"] helpviewer_keywords: ["C2227"] -ms.assetid: d470e8b8-7e15-468b-84fa-37d1a0132271 --- # Compiler Error C2227 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2228.md b/docs/error-messages/compiler-errors-1/compiler-error-c2228.md index 653d4a5b002..f0605e69fc8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2228.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2228.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2228" title: "Compiler Error C2228" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2228" +ms.date: 11/04/2016 f1_keywords: ["C2228"] helpviewer_keywords: ["C2228"] -ms.assetid: 901cadb1-ce90-4ae0-a360-547a9ba2ca18 --- # Compiler Error C2228 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2229.md b/docs/error-messages/compiler-errors-1/compiler-error-c2229.md index 899f5f6d093..a77432e3f15 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2229.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2229.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2229" title: "Compiler Error C2229" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2229" +ms.date: 11/04/2016 f1_keywords: ["C2229"] helpviewer_keywords: ["C2229"] -ms.assetid: 933c7cf2-a463-4e74-b0b4-59dedad987fb --- # Compiler Error C2229 From 6d2ec4ed7685e83b085b7ddda7f6996371a13b5d Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 20 Jul 2025 17:55:57 +0800 Subject: [PATCH 1145/2255] Fix title in C4335 warning reference --- docs/error-messages/compiler-warnings/compiler-warning-c4335.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4335.md b/docs/error-messages/compiler-warnings/compiler-warning-c4335.md index e57e115b0be..cfb45113dd3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4335.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4335.md @@ -1,6 +1,6 @@ --- description: "Learn more about: Compiler Warning (level 1) C4335" -title: "Compiler Warning(level 1) C4335" +title: "Compiler Warning (level 1) C4335" ms.date: "11/04/2016" f1_keywords: ["C4335"] helpviewer_keywords: ["C4335"] From 1244cc2c4945a13114301becc2d7ad9754d8e573 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 20 Jul 2025 17:57:05 +0800 Subject: [PATCH 1146/2255] Add "Remarks" heading in C4335 warning reference --- docs/error-messages/compiler-warnings/compiler-warning-c4335.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4335.md b/docs/error-messages/compiler-warnings/compiler-warning-c4335.md index cfb45113dd3..ba12a44d068 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4335.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4335.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4335"] > Mac file format detected: please convert the source file to either DOS or UNIX format +## Remarks + The line termination character of the first line of a source file is the old Macintosh style ('\r') as opposed to UNIX ('\n') or DOS ('\r\n'). This warning is only issued once per translation unit. Therefore, if there are multiple `#include` directives that specify files in Macintosh format, C4335 is emitted once. From 9b70f50193c8691fbd8f57f1c3bcd1f89c31e62e Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 20 Jul 2025 17:57:30 +0800 Subject: [PATCH 1147/2255] Tweak "Example" text in C4335 warning reference --- docs/error-messages/compiler-warnings/compiler-warning-c4335.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4335.md b/docs/error-messages/compiler-warnings/compiler-warning-c4335.md index ba12a44d068..eee802a7b59 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4335.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4335.md @@ -19,7 +19,7 @@ One way to generate files in Macintosh format is by using the **Advanced Save Op ## Example -The following sample generates C4335. +The following example generates C4335: ```cpp // C4335 expected From 31cd15c287fcc13bbf91cb8d98047d0097ff84b7 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 20 Jul 2025 17:58:07 +0800 Subject: [PATCH 1148/2255] Update metadata in C4335 warning reference --- .../compiler-warnings/compiler-warning-c4335.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4335.md b/docs/error-messages/compiler-warnings/compiler-warning-c4335.md index eee802a7b59..2f17fe0d623 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4335.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4335.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4335" title: "Compiler Warning (level 1) C4335" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4335" +ms.date: 11/04/2016 f1_keywords: ["C4335"] helpviewer_keywords: ["C4335"] --- From ed7f32ddb701af4b62ed70a2834b68fd6f5ffdf4 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 20 Jul 2025 18:12:56 +0800 Subject: [PATCH 1149/2255] Update warning level flag for example in C4373 warning reference --- .../compiler-warnings/compiler-warning-level-3-c4373.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4373.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4373.md index 4bcae673036..07495b2ee5a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4373.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4373.md @@ -21,7 +21,7 @@ The following code example generates warning C4373. To resolve this issue, make ```cpp // c4373.cpp -// compile with: /c /W3 +// compile with: /c /W4 #include struct Base { From 4815abc9048f4cc8e660e21376dcd59b8b691b7d Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 20 Jul 2025 18:14:03 +0800 Subject: [PATCH 1150/2255] Update metadata in C4373 warning reference --- .../compiler-warnings/compiler-warning-level-3-c4373.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4373.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4373.md index 07495b2ee5a..1394a4e481f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4373.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4373.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4373" title: "Compiler Warning (level 4) C4373" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4373" +ms.date: 11/04/2016 f1_keywords: ["C4373"] helpviewer_keywords: ["C4373"] --- From ffe23f283bce68d0b82cf4901951750fa20365d3 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 20 Jul 2025 18:33:26 +0800 Subject: [PATCH 1151/2255] Add missing commas after "For more information" --- docs/build/reference/files-created-for-clr-projects.md | 2 +- docs/build/reference/return-value-of-cl-exe.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2349.md | 2 +- docs/extensions/string-cpp-component-extensions.md | 2 +- docs/mfc/mfc-com.md | 2 +- docs/mfc/reference/ctabview-class.md | 2 +- docs/parallel/amp/graphics-cpp-amp.md | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/build/reference/files-created-for-clr-projects.md b/docs/build/reference/files-created-for-clr-projects.md index 8864195572c..2e3638129fd 100644 --- a/docs/build/reference/files-created-for-clr-projects.md +++ b/docs/build/reference/files-created-for-clr-projects.md @@ -11,7 +11,7 @@ When you use Visual C++ templates to create your projects, several files are cre |File name|File description| |---------------|----------------------| -|AssemblyInfo.cpp|The file that contains information (that is, attributes, files, resources, types, versioning information, signing information, and so on) for modifying the project's assembly metadata. For more information see [Assembly Concepts](/dotnet/framework/app-domains/assembly-contents).| +|AssemblyInfo.cpp|The file that contains information (that is, attributes, files, resources, types, versioning information, signing information, and so on) for modifying the project's assembly metadata. For more information, see [Assembly Concepts](/dotnet/framework/app-domains/assembly-contents).| |*projname*.asmx|A text file that references managed classes that encapsulate the functionality of the XML Web service.| |*projname*.cpp|The main source file and entry point into the application that Visual Studio created for you. Identifies the project .dll file and the project namespace. Provide your own code in this file.| |*projname*.vsdisco|An XML deployment file containing links to other resources that describe the XML Web service.| diff --git a/docs/build/reference/return-value-of-cl-exe.md b/docs/build/reference/return-value-of-cl-exe.md index ceb9ff7972d..2f118400249 100644 --- a/docs/build/reference/return-value-of-cl-exe.md +++ b/docs/build/reference/return-value-of-cl-exe.md @@ -13,7 +13,7 @@ The return value of cl.exe can be useful if you are compiling from a script, pow There are too many possible error exit codes for cl.exe to list them all. You can look up an error code in the winerror.h or ntstatus.h files included in the Windows Software Development Kit in the %ProgramFiles(x86)%\Windows Kits\\version\Include\shared\ directory. Error codes returned in decimal must be converted to hexadecimal for search. For example, an error code of -1073741620 converted to hexadecimal is 0xC00000CC. This error is found in ntstatus.h, where the corresponding message is "The specified share name cannot be found on the remote server." For a downloadable list of Windows error codes, see [`[MS-ERREF]` Windows Error Codes](/openspecs/windows_protocols/MS-ERREF). -You can also use the error lookup utility in Visual Studio to find out what a compiler error message means. In a Visual Studio command shell, enter **errlook.exe** to start the utility; or in the Visual Studio IDE, on the menu bar, choose **Tools**, **Error Lookup**. Enter the error value to find the descriptive text associated with the error. For more information see [ERRLOOK Reference](errlook-reference.md). +You can also use the error lookup utility in Visual Studio to find out what a compiler error message means. In a Visual Studio command shell, enter **errlook.exe** to start the utility; or in the Visual Studio IDE, on the menu bar, choose **Tools**, **Error Lookup**. Enter the error value to find the descriptive text associated with the error. For more information, see [ERRLOOK Reference](errlook-reference.md). ## Remarks diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2349.md b/docs/error-messages/compiler-errors-1/compiler-error-c2349.md index 4b596fc273d..6190f18c57a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2349.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2349.md @@ -10,4 +10,4 @@ ms.assetid: ce9f2e65-fda0-41b6-9c4a-538607136396 'function' cannot be compiled as managed: 'reason'; use #pragma unmanaged -For more information see [Compiler Warning (level 1 and 3) C4793](../../error-messages/compiler-warnings/compiler-warning-level-1-and-3-c4793.md). +For more information, see [Compiler Warning (level 1 and 3) C4793](../../error-messages/compiler-warnings/compiler-warning-level-1-and-3-c4793.md). diff --git a/docs/extensions/string-cpp-component-extensions.md b/docs/extensions/string-cpp-component-extensions.md index de9ff62f36e..972ab5c2329 100644 --- a/docs/extensions/string-cpp-component-extensions.md +++ b/docs/extensions/string-cpp-component-extensions.md @@ -49,7 +49,7 @@ When passed a , the compiler will box, if necessary, and the > [!NOTE] > The caret ("^") indicates that the declared variable is a handle to a C++/CLI managed object. -For more information see [String and Character Literals](../cpp/string-and-character-literals-cpp.md). +For more information, see [String and Character Literals](../cpp/string-and-character-literals-cpp.md). ### Requirements diff --git a/docs/mfc/mfc-com.md b/docs/mfc/mfc-com.md index eb5282b585c..0a46f3cb002 100644 --- a/docs/mfc/mfc-com.md +++ b/docs/mfc/mfc-com.md @@ -10,7 +10,7 @@ ms.assetid: 7646bdcb-3a06-4ed5-9386-9b00f3979dcb A subset of MFC is designed to support COM, while most of the Active Template Library (ATL) is designed for COM programming. This section of topics describes MFC's support for COM. -Active technologies (such as ActiveX controls, Active document containment, OLE, and so on) use the Component Object Model (COM) to enable software components to interact with one another in a networked environment, regardless of the language with which they were created. Active technologies can be used to create applications that run on the desktop or the Internet. For more information see [Introduction to COM](../atl/introduction-to-com.md) or [The Component Object Model](/windows/win32/com/the-component-object-model). +Active technologies (such as ActiveX controls, Active document containment, OLE, and so on) use the Component Object Model (COM) to enable software components to interact with one another in a networked environment, regardless of the language with which they were created. Active technologies can be used to create applications that run on the desktop or the Internet. For more information, see [Introduction to COM](../atl/introduction-to-com.md) or [The Component Object Model](/windows/win32/com/the-component-object-model). Active technologies include both client and server technologies, including the following: diff --git a/docs/mfc/reference/ctabview-class.md b/docs/mfc/reference/ctabview-class.md index b084e0afbd3..9ab3109c806 100644 --- a/docs/mfc/reference/ctabview-class.md +++ b/docs/mfc/reference/ctabview-class.md @@ -208,7 +208,7 @@ TRUE if the specified view was made active, FALSE if the view's index is invalid ### Remarks -For more information see [CMFCTabCtrl::SetActiveTab](../../mfc/reference/cmfctabctrl-class.md#setactivetab). +For more information, see [CMFCTabCtrl::SetActiveTab](../../mfc/reference/cmfctabctrl-class.md#setactivetab). ## See also diff --git a/docs/parallel/amp/graphics-cpp-amp.md b/docs/parallel/amp/graphics-cpp-amp.md index 2de8ab623c9..5368ba8b88e 100644 --- a/docs/parallel/amp/graphics-cpp-amp.md +++ b/docs/parallel/amp/graphics-cpp-amp.md @@ -377,7 +377,7 @@ void write2ComponentTexture() { Texture views whose elements are based on floating-point types—for example, float, float_2, or float_4—can also be read by using texture sampling to take advantage of hardware support for various filtering modes and addressing modes. C++ AMP supports the two filtering modes that are most common in compute scenarios—point-filtering (nearest-neighbor) and linear-filtering (weighted average)—and four addressing modes—wrapped, mirrored, clamped, and border. For more information about addressing modes, see [address_mode Enumeration](reference/concurrency-graphics-namespace-enums.md#address_mode). -In addition to modes that C++ AMP supports directly, you can access other filtering modes and addressing modes of the underlying platform by using the interop APIs to adopt a texture sampler that was created by using the platform APIs directly. For example, Direct3D supports other filtering modes such as anisotropic filtering, and can apply a different addressing mode to each dimension of a texture. You could create a texture sampler whose coordinates are wrapped vertically, mirrored horizontally, and sampled with anisotropic filtering by using the Direct3D APIs, and then leverage the sampler in your C++ AMP code by using the `make_sampler` interop API. For more information see [Texture Sampling in C++ AMP](/archive/blogs/nativeconcurrency/texture-sampling-in-c-amp) on the Parallel Programming in Native Code blog. +In addition to modes that C++ AMP supports directly, you can access other filtering modes and addressing modes of the underlying platform by using the interop APIs to adopt a texture sampler that was created by using the platform APIs directly. For example, Direct3D supports other filtering modes such as anisotropic filtering, and can apply a different addressing mode to each dimension of a texture. You could create a texture sampler whose coordinates are wrapped vertically, mirrored horizontally, and sampled with anisotropic filtering by using the Direct3D APIs, and then leverage the sampler in your C++ AMP code by using the `make_sampler` interop API. For more information, see [Texture Sampling in C++ AMP](/archive/blogs/nativeconcurrency/texture-sampling-in-c-amp) on the Parallel Programming in Native Code blog. Texture views also support the reading of mipmaps. Read-only texture views (those that have a const element type) offer the most flexibility because a range of mip-levels that is determined at instantiation can be dynamically sampled, and because elements that have 1, 2, or 4 components are supported. Read-write texture views that have elements that have one component also support mipmaps, but only of a level that's determined at instantiation. For more information, see [Texture with Mipmaps](/archive/blogs/nativeconcurrency/texture-with-mipmaps) on the Parallel Programming in Native Code blog. From a41a42b152e219eb56adf6e9be927d017ad2242d Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 20 Jul 2025 18:37:06 +0800 Subject: [PATCH 1152/2255] Update metadata in a couple of topics --- docs/build/reference/files-created-for-clr-projects.md | 5 ++--- docs/build/reference/return-value-of-cl-exe.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2349.md | 5 ++--- docs/mfc/mfc-com.md | 5 ++--- docs/mfc/reference/ctabview-class.md | 5 ++--- 5 files changed, 10 insertions(+), 15 deletions(-) diff --git a/docs/build/reference/files-created-for-clr-projects.md b/docs/build/reference/files-created-for-clr-projects.md index 2e3638129fd..1aa648278b1 100644 --- a/docs/build/reference/files-created-for-clr-projects.md +++ b/docs/build/reference/files-created-for-clr-projects.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Files Created for CLR Projects" title: "Files Created for CLR Projects" -ms.date: "11/04/2016" +description: "Learn more about: Files Created for CLR Projects" +ms.date: 11/04/2016 helpviewer_keywords: ["Visual Studio C++ projects, CLR programming", ".NET applications, C++"] -ms.assetid: 59ae9020-5f26-4ad0-bbdd-97c2e2023a20 --- # Files Created for CLR Projects diff --git a/docs/build/reference/return-value-of-cl-exe.md b/docs/build/reference/return-value-of-cl-exe.md index 2f118400249..26806b0ec0c 100644 --- a/docs/build/reference/return-value-of-cl-exe.md +++ b/docs/build/reference/return-value-of-cl-exe.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Return Value of cl.exe" title: "Return Value of cl.exe" -ms.date: "09/05/2018" +description: "Learn more about: Return Value of cl.exe" +ms.date: 09/05/2018 helpviewer_keywords: ["cl.exe compiler, return value"] -ms.assetid: 7c2d7f33-ee0d-4199-8ef4-75fe2b007670 --- # Return Value of cl.exe diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2349.md b/docs/error-messages/compiler-errors-1/compiler-error-c2349.md index 6190f18c57a..3b2cf2a02a2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2349.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2349.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2349" title: "Compiler Error C2349" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2349" +ms.date: 11/04/2016 f1_keywords: ["C2349"] helpviewer_keywords: ["C2349"] -ms.assetid: ce9f2e65-fda0-41b6-9c4a-538607136396 --- # Compiler Error C2349 diff --git a/docs/mfc/mfc-com.md b/docs/mfc/mfc-com.md index 0a46f3cb002..9f5a4136d12 100644 --- a/docs/mfc/mfc-com.md +++ b/docs/mfc/mfc-com.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: MFC COM" title: "MFC COM" -ms.date: "09/12/2018" +description: "Learn more about: MFC COM" +ms.date: 09/12/2018 f1_keywords: ["MFC COM (MFC)"] helpviewer_keywords: ["MFC, COM support", "MFC ActiveX controls [MFC], COM support in MFC", "MFC COM [MFC]", "ActiveX controls [MFC], COM object model", "Active technology [MFC]", "COM [MFC], MFC support"] -ms.assetid: 7646bdcb-3a06-4ed5-9386-9b00f3979dcb --- # MFC COM diff --git a/docs/mfc/reference/ctabview-class.md b/docs/mfc/reference/ctabview-class.md index 9ab3109c806..82983a5e29a 100644 --- a/docs/mfc/reference/ctabview-class.md +++ b/docs/mfc/reference/ctabview-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: CTabView Class" title: "CTabView Class" -ms.date: "11/04/2016" +description: "Learn more about: CTabView Class" +ms.date: 11/04/2016 f1_keywords: ["CTabView", "AFXTABVIEW/CTabView", "AFXTABVIEW/CTabView::AddView", "AFXTABVIEW/CTabView::FindTab", "AFXTABVIEW/CTabView::GetActiveView", "AFXTABVIEW/CTabView::GetTabControl", "AFXTABVIEW/CTabView::RemoveView", "AFXTABVIEW/CTabView::SetActiveView", "AFXTABVIEW/CTabView::IsScrollBar", "AFXTABVIEW/CTabView::OnActivateView"] helpviewer_keywords: ["CTabView [MFC], AddView", "CTabView [MFC], FindTab", "CTabView [MFC], GetActiveView", "CTabView [MFC], GetTabControl", "CTabView [MFC], RemoveView", "CTabView [MFC], SetActiveView", "CTabView [MFC], IsScrollBar", "CTabView [MFC], OnActivateView"] -ms.assetid: 8e6ecd9d-d28d-432b-8ec8-0446f0204d52 --- # CTabView Class From 245c698a5fd18ff26dd83c684346527134c18a9c Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 20 Jul 2025 19:04:40 +0800 Subject: [PATCH 1153/2255] Add blockquotes for error messages in range [C2231, C2260] --- docs/error-messages/compiler-errors-1/compiler-error-c2231.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2232.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2233.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2234.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2236.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2238.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2241.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2242.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2243.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2244.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2245.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2246.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2247.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2249.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2250.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2251.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2252.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2253.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2254.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2255.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2256.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2258.md | 2 +- 22 files changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2231.md b/docs/error-messages/compiler-errors-1/compiler-error-c2231.md index 6f95cb15e9f..fef278a1636 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2231.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2231.md @@ -8,7 +8,7 @@ ms.assetid: 677c5c66-d30f-4c3b-bbb9-760858d56477 --- # Compiler Error C2231 -'.' : left operand points to 'class-key', use '->' +> '.' : left operand points to 'class-key', use '->' The operand to the left of the member-selection operation (.) is a pointer instead of a class, structure, or union. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2232.md b/docs/error-messages/compiler-errors-1/compiler-error-c2232.md index 46af61cbe1f..4a16fb3245d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2232.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2232.md @@ -8,7 +8,7 @@ ms.assetid: 76f302b7-30a7-4a81-9a39-b4edde33b54c --- # Compiler Error C2232 -'->' : left operand has 'class-key' type, use '.' +> '->' : left operand has 'class-key' type, use '.' The operand to the left of the `->` operator is not a pointer. Use the period (.) operator for a class, structure, or union. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2233.md b/docs/error-messages/compiler-errors-1/compiler-error-c2233.md index cb1b6646bc1..3278e951c64 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2233.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2233.md @@ -8,7 +8,7 @@ ms.assetid: 236bdf0b-9607-4f26-a249-d8def0b1333c --- # Compiler Error C2233 -'identifier' : arrays of objects containing zero-size arrays are illegal +> 'identifier' : arrays of objects containing zero-size arrays are illegal Each object in an array must contain at least one element. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2234.md b/docs/error-messages/compiler-errors-1/compiler-error-c2234.md index 2b08baaddf2..31a4eb764e0 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2234.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2234.md @@ -8,7 +8,7 @@ ms.assetid: cfa42458-c803-4717-a017-9eca1c0cbfb0 --- # Compiler Error C2234 -'name' : arrays of references are illegal +> 'name' : arrays of references are illegal Because pointers to references are not allowed, arrays of references are not possible. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2236.md b/docs/error-messages/compiler-errors-1/compiler-error-c2236.md index fee5e16f054..b90dee51aea 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2236.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2236.md @@ -8,7 +8,7 @@ ms.assetid: 0b6771a7-a783-4729-9c3d-7a3339c432cc --- # Compiler Error C2236 -unexpected token 'identifier'. Did you forget a ';'? +> unexpected token 'identifier'. Did you forget a ';'? The identifier is already defined as a type and cannot be overridden by a user-defined type. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2238.md b/docs/error-messages/compiler-errors-1/compiler-error-c2238.md index 26743ab065b..38ae6b4c1ba 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2238.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2238.md @@ -8,7 +8,7 @@ ms.assetid: 3d53060c-d6b7-4603-b9cf-d7c65eb64cd2 --- # Compiler Error C2238 -unexpected token(s) preceding 'token' +> unexpected token(s) preceding 'token' An incorrect token was found. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2241.md b/docs/error-messages/compiler-errors-1/compiler-error-c2241.md index f1793fd8d9b..67b3ae02b22 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2241.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2241.md @@ -8,7 +8,7 @@ ms.assetid: 2f4e2c2c-b95c-4afe-bbe0-4214cd39d140 --- # Compiler Error C2241 -'identifier' : member access is restricted +> 'identifier' : member access is restricted Code attempts to access a private or protected member. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2242.md b/docs/error-messages/compiler-errors-1/compiler-error-c2242.md index ccf78a2612b..1436efd1842 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2242.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2242.md @@ -8,6 +8,6 @@ ms.assetid: e1b687ed-4460-4c26-9f7e-c43e65c6dd65 --- # Compiler Error C2242 -typedef name cannot follow class/struct/union +> typedef name cannot follow class/struct/union A **`typedef`** name appears at the end of a qualified name. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2243.md b/docs/error-messages/compiler-errors-1/compiler-error-c2243.md index e12e7174e74..ec785d8598a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2243.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2243.md @@ -8,7 +8,7 @@ ms.assetid: b90065bb-d251-4ba9-8b4c-280ee13fa9c0 --- # Compiler Error C2243 -'conversion type' conversion from 'type1' to 'type2' exists, but is inaccessible +> 'conversion type' conversion from 'type1' to 'type2' exists, but is inaccessible Access protection (**`protected`** or **`private`**) prevented conversion from a pointer to a derived class to a pointer to the base class. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2244.md b/docs/error-messages/compiler-errors-1/compiler-error-c2244.md index eed68eeec0e..2633ef17f56 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2244.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2244.md @@ -8,7 +8,7 @@ ms.assetid: d9911c12-ceb5-4f93-ac47-b44a485215c2 --- # Compiler Error C2244 -'identifier' : unable to match function definition to an existing declaration +> 'identifier' : unable to match function definition to an existing declaration An unusual use of the unary + operator was used in front of a function call that did not have parenthesis. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2245.md b/docs/error-messages/compiler-errors-1/compiler-error-c2245.md index cf96d1724c4..6314e86a1e1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2245.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2245.md @@ -8,7 +8,7 @@ ms.assetid: 08aaeadf-10ec-485a-b2a6-6e775289082b --- # Compiler Error C2245 -non-existent member function 'function' specified as friend (member function signature does not match any overload) +> non-existent member function 'function' specified as friend (member function signature does not match any overload) A function specified as a friend was not found by the compiler. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2246.md b/docs/error-messages/compiler-errors-1/compiler-error-c2246.md index c2ebd50d80a..47203f5c45c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2246.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2246.md @@ -8,7 +8,7 @@ ms.assetid: 4f3e4f83-21f3-4256-af96-43e0bb060311 --- # Compiler Error C2246 -'identifier' : illegal static data member in locally defined class +> 'identifier' : illegal static data member in locally defined class A member of a class, structure, or union with local scope is declared **`static`**. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2247.md b/docs/error-messages/compiler-errors-1/compiler-error-c2247.md index 6fb7fea7989..7c4394949bd 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2247.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2247.md @@ -8,7 +8,7 @@ ms.assetid: 72efa03e-615e-4ef9-aede-0a98654b20fd --- # Compiler Error C2247 -'identifier' not accessible because 'class' uses 'specifier' to inherit from 'class' +> 'identifier' not accessible because 'class' uses 'specifier' to inherit from 'class' `identifier` is inherited from a class declared with private or protected access. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2249.md b/docs/error-messages/compiler-errors-1/compiler-error-c2249.md index 2b33cb4e285..b225f63e4c9 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2249.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2249.md @@ -8,7 +8,7 @@ ms.assetid: bdd6697c-e04b-49b9-8e40-d9eb6d74f2b6 --- # Compiler Error C2249 -'member' : no accessible path to access member declared in virtual base 'class' +> 'member' : no accessible path to access member declared in virtual base 'class' The `member` is inherited from a nonpublic **`virtual`** base class or structure. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2250.md b/docs/error-messages/compiler-errors-1/compiler-error-c2250.md index c4ac513175e..71524c1f105 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2250.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2250.md @@ -8,7 +8,7 @@ ms.assetid: f990986f-5c7d-4af4-a25c-b35540f1e217 --- # Compiler Error C2250 -'identifier' : ambiguous inheritance of 'class::member' +> 'identifier' : ambiguous inheritance of 'class::member' The derived class inherits more than one override of a virtual function of a virtual base class. These overrides are ambiguous in the derived class. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2251.md b/docs/error-messages/compiler-errors-1/compiler-error-c2251.md index 77ec80c5746..f6f6a324304 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2251.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2251.md @@ -8,7 +8,7 @@ ms.assetid: fefe050c-f8d3-4316-b237-8007dbcdd3bf --- # Compiler Error C2251 -namespace 'namespace' does not have a member 'member' - Did you mean 'member'? +> namespace 'namespace' does not have a member 'member' - Did you mean 'member'? The compiler was not able to find an identifier in the specified namespace. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2252.md b/docs/error-messages/compiler-errors-1/compiler-error-c2252.md index 7eaf55a4a0f..9fb28bcc524 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2252.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2252.md @@ -8,7 +8,7 @@ ms.assetid: fee74ab9-1997-4615-82fe-e6d1fe3aacd9 --- # Compiler Error C2252 -cannot explicitly instantiate template in current scope +> cannot explicitly instantiate template in current scope The compiler detected a problem with an explicit instantiation of a template. For example, you cannot explicitly instantiate a template in a function. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2253.md b/docs/error-messages/compiler-errors-1/compiler-error-c2253.md index 95a67878c5b..555c85cba53 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2253.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2253.md @@ -8,7 +8,7 @@ ms.assetid: bd6445ae-b2c1-4669-9657-a8f4acf80b16 --- # Compiler Error C2253 -'function' : pure specifier or abstract override specifier only allowed on virtual function +> 'function' : pure specifier or abstract override specifier only allowed on virtual function A nonvirtual function is specified as pure **`virtual`**. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2254.md b/docs/error-messages/compiler-errors-1/compiler-error-c2254.md index 0f7436b72b5..30629f0d455 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2254.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2254.md @@ -8,7 +8,7 @@ ms.assetid: 49bb3d7e-3bdf-4af6-937c-fa627be412a9 --- # Compiler Error C2254 -'function' : pure specifier or abstract override specifier not allowed on friend function +> 'function' : pure specifier or abstract override specifier not allowed on friend function A **`friend`** function is specified as pure **`virtual`**. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2255.md b/docs/error-messages/compiler-errors-1/compiler-error-c2255.md index fa25eb214a5..63f0eae7a15 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2255.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2255.md @@ -8,7 +8,7 @@ ms.assetid: 67dc4cb0-de6b-4405-bd64-d47736367a93 --- # Compiler Error C2255 -'element' : not allowed outside of a class definition +> 'element' : not allowed outside of a class definition For example, a nonmember function is declared a **`friend`**. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2256.md b/docs/error-messages/compiler-errors-1/compiler-error-c2256.md index c0c1e5daac7..7ff7ca58371 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2256.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2256.md @@ -8,7 +8,7 @@ ms.assetid: 171fa2bc-8c72-49cd-afe5-d723b7acd3c5 --- # Compiler Error C2256 -illegal use of friend specifier on 'function' +> illegal use of friend specifier on 'function' A destructor or constructor cannot be specified as a [friend](../../cpp/friend-cpp.md). diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2258.md b/docs/error-messages/compiler-errors-1/compiler-error-c2258.md index 1e31e3d7671..6f3adc52755 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2258.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2258.md @@ -8,7 +8,7 @@ ms.assetid: 105eaa87-befb-4ecb-9a3f-e09e14d2f5bf --- # Compiler Error C2258 -illegal pure syntax, must be '= 0' +> illegal pure syntax, must be '= 0' A pure virtual function is declared with incorrect syntax. From 6756cd961b6aa9000983fe031c0c7c4fcb9d228e Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 20 Jul 2025 19:10:34 +0800 Subject: [PATCH 1154/2255] Add "Remarks" and "Example" headings for error references in range [C2231, C2260] --- docs/error-messages/compiler-errors-1/compiler-error-c2231.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2232.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2233.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2234.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2236.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2238.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2241.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2242.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2243.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2244.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2245.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2246.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2247.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2248.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2249.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2250.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2251.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2252.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2253.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2254.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2255.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2256.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2258.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2259.md | 4 ++++ 24 files changed, 87 insertions(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2231.md b/docs/error-messages/compiler-errors-1/compiler-error-c2231.md index fef278a1636..3c7345b2937 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2231.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2231.md @@ -10,8 +10,12 @@ ms.assetid: 677c5c66-d30f-4c3b-bbb9-760858d56477 > '.' : left operand points to 'class-key', use '->' +## Remarks + The operand to the left of the member-selection operation (.) is a pointer instead of a class, structure, or union. +## Example + The following sample generates C2231: ```c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2232.md b/docs/error-messages/compiler-errors-1/compiler-error-c2232.md index 4a16fb3245d..39c0057dbfa 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2232.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2232.md @@ -10,8 +10,12 @@ ms.assetid: 76f302b7-30a7-4a81-9a39-b4edde33b54c > '->' : left operand has 'class-key' type, use '.' +## Remarks + The operand to the left of the `->` operator is not a pointer. Use the period (.) operator for a class, structure, or union. +## Example + The following sample generates C2232: ```c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2233.md b/docs/error-messages/compiler-errors-1/compiler-error-c2233.md index 3278e951c64..8c581360ac1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2233.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2233.md @@ -10,8 +10,12 @@ ms.assetid: 236bdf0b-9607-4f26-a249-d8def0b1333c > 'identifier' : arrays of objects containing zero-size arrays are illegal +## Remarks + Each object in an array must contain at least one element. +## Example + The following sample generates C2233: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2234.md b/docs/error-messages/compiler-errors-1/compiler-error-c2234.md index 31a4eb764e0..9f686d1fd6a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2234.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2234.md @@ -10,8 +10,12 @@ ms.assetid: cfa42458-c803-4717-a017-9eca1c0cbfb0 > 'name' : arrays of references are illegal +## Remarks + Because pointers to references are not allowed, arrays of references are not possible. +## Example + The following sample generates C2234: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2236.md b/docs/error-messages/compiler-errors-1/compiler-error-c2236.md index b90dee51aea..306c49f7d94 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2236.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2236.md @@ -10,8 +10,12 @@ ms.assetid: 0b6771a7-a783-4729-9c3d-7a3339c432cc > unexpected token 'identifier'. Did you forget a ';'? +## Remarks + The identifier is already defined as a type and cannot be overridden by a user-defined type. +## Example + The following sample generates C2236: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2238.md b/docs/error-messages/compiler-errors-1/compiler-error-c2238.md index 38ae6b4c1ba..674669a1aca 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2238.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2238.md @@ -10,8 +10,12 @@ ms.assetid: 3d53060c-d6b7-4603-b9cf-d7c65eb64cd2 > unexpected token(s) preceding 'token' +## Remarks + An incorrect token was found. +## Example + The following sample generates C2238: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2241.md b/docs/error-messages/compiler-errors-1/compiler-error-c2241.md index 67b3ae02b22..7de089058fb 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2241.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2241.md @@ -10,6 +10,8 @@ ms.assetid: 2f4e2c2c-b95c-4afe-bbe0-4214cd39d140 > 'identifier' : member access is restricted +## Remarks + Code attempts to access a private or protected member. ### To fix by using the following possible solutions diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2242.md b/docs/error-messages/compiler-errors-1/compiler-error-c2242.md index 1436efd1842..b7a50c92c2c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2242.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2242.md @@ -10,4 +10,6 @@ ms.assetid: e1b687ed-4460-4c26-9f7e-c43e65c6dd65 > typedef name cannot follow class/struct/union +## Remarks + A **`typedef`** name appears at the end of a qualified name. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2243.md b/docs/error-messages/compiler-errors-1/compiler-error-c2243.md index ec785d8598a..f2a2c48e8d8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2243.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2243.md @@ -10,8 +10,12 @@ ms.assetid: b90065bb-d251-4ba9-8b4c-280ee13fa9c0 > 'conversion type' conversion from 'type1' to 'type2' exists, but is inaccessible +## Remarks + Access protection (**`protected`** or **`private`**) prevented conversion from a pointer to a derived class to a pointer to the base class. +## Example + The following sample generates C2243: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2244.md b/docs/error-messages/compiler-errors-1/compiler-error-c2244.md index 2633ef17f56..fce7ac39bb6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2244.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2244.md @@ -10,10 +10,14 @@ ms.assetid: d9911c12-ceb5-4f93-ac47-b44a485215c2 > 'identifier' : unable to match function definition to an existing declaration +## Remarks + An unusual use of the unary + operator was used in front of a function call that did not have parenthesis. This error only occurs in C++ projects. +## Examples + The following sample generates C2244: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2245.md b/docs/error-messages/compiler-errors-1/compiler-error-c2245.md index 6314e86a1e1..2fb00bc883c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2245.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2245.md @@ -10,8 +10,12 @@ ms.assetid: 08aaeadf-10ec-485a-b2a6-6e775289082b > non-existent member function 'function' specified as friend (member function signature does not match any overload) +## Remarks + A function specified as a friend was not found by the compiler. +## Example + The following sample generates C2245: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2246.md b/docs/error-messages/compiler-errors-1/compiler-error-c2246.md index 47203f5c45c..a85d17f3598 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2246.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2246.md @@ -10,8 +10,12 @@ ms.assetid: 4f3e4f83-21f3-4256-af96-43e0bb060311 > 'identifier' : illegal static data member in locally defined class +## Remarks + A member of a class, structure, or union with local scope is declared **`static`**. +## Example + The following sample generates C2246: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2247.md b/docs/error-messages/compiler-errors-1/compiler-error-c2247.md index 7c4394949bd..f2bb4a14847 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2247.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2247.md @@ -10,8 +10,12 @@ ms.assetid: 72efa03e-615e-4ef9-aede-0a98654b20fd > 'identifier' not accessible because 'class' uses 'specifier' to inherit from 'class' +## Remarks + `identifier` is inherited from a class declared with private or protected access. +## Examples + The following sample generates C2247: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2248.md b/docs/error-messages/compiler-errors-1/compiler-error-c2248.md index 81f0232666f..cd7e67afa48 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2248.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2248.md @@ -14,7 +14,7 @@ ms.assetid: 7a3ba0e8-d3b9-4bb9-95db-81ef17e31d23 Members of a derived class can't access **`private`** members of a base class. You can't access **`private`** or **`protected`** members of class instances. -## Example +## Examples The following sample generates C2248 when `private` or `protected` members of a class are accessed from outside the class. To fix this issue, don't access these members directly outside the class. Use `public` member data and member functions to interact with the class. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2249.md b/docs/error-messages/compiler-errors-1/compiler-error-c2249.md index b225f63e4c9..8a31cd7ff79 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2249.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2249.md @@ -10,6 +10,8 @@ ms.assetid: bdd6697c-e04b-49b9-8e40-d9eb6d74f2b6 > 'member' : no accessible path to access member declared in virtual base 'class' +## Remarks + The `member` is inherited from a nonpublic **`virtual`** base class or structure. ## Examples diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2250.md b/docs/error-messages/compiler-errors-1/compiler-error-c2250.md index 71524c1f105..845fa9125c3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2250.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2250.md @@ -10,8 +10,12 @@ ms.assetid: f990986f-5c7d-4af4-a25c-b35540f1e217 > 'identifier' : ambiguous inheritance of 'class::member' +## Remarks + The derived class inherits more than one override of a virtual function of a virtual base class. These overrides are ambiguous in the derived class. +## Example + The following sample generates C2286: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2251.md b/docs/error-messages/compiler-errors-1/compiler-error-c2251.md index f6f6a324304..132a488f385 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2251.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2251.md @@ -10,8 +10,12 @@ ms.assetid: fefe050c-f8d3-4316-b237-8007dbcdd3bf > namespace 'namespace' does not have a member 'member' - Did you mean 'member'? +## Remarks + The compiler was not able to find an identifier in the specified namespace. +## Example + The following sample generates C2251: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2252.md b/docs/error-messages/compiler-errors-1/compiler-error-c2252.md index 9fb28bcc524..602d3a755f9 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2252.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2252.md @@ -10,8 +10,12 @@ ms.assetid: fee74ab9-1997-4615-82fe-e6d1fe3aacd9 > cannot explicitly instantiate template in current scope +## Remarks + The compiler detected a problem with an explicit instantiation of a template. For example, you cannot explicitly instantiate a template in a function. +## Example + The following sample generates C2252: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2253.md b/docs/error-messages/compiler-errors-1/compiler-error-c2253.md index 555c85cba53..414abda3d3d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2253.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2253.md @@ -10,8 +10,12 @@ ms.assetid: bd6445ae-b2c1-4669-9657-a8f4acf80b16 > 'function' : pure specifier or abstract override specifier only allowed on virtual function +## Remarks + A nonvirtual function is specified as pure **`virtual`**. +## Examples + The following sample generates C2253: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2254.md b/docs/error-messages/compiler-errors-1/compiler-error-c2254.md index 30629f0d455..bc9676e95a3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2254.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2254.md @@ -10,8 +10,12 @@ ms.assetid: 49bb3d7e-3bdf-4af6-937c-fa627be412a9 > 'function' : pure specifier or abstract override specifier not allowed on friend function +## Remarks + A **`friend`** function is specified as pure **`virtual`**. +## Example + The following sample generates C2254: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2255.md b/docs/error-messages/compiler-errors-1/compiler-error-c2255.md index 63f0eae7a15..2d6ea4932db 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2255.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2255.md @@ -10,8 +10,12 @@ ms.assetid: 67dc4cb0-de6b-4405-bd64-d47736367a93 > 'element' : not allowed outside of a class definition +## Remarks + For example, a nonmember function is declared a **`friend`**. +## Example + The following sample generates C2255: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2256.md b/docs/error-messages/compiler-errors-1/compiler-error-c2256.md index 7ff7ca58371..99a1f00550c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2256.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2256.md @@ -10,8 +10,12 @@ ms.assetid: 171fa2bc-8c72-49cd-afe5-d723b7acd3c5 > illegal use of friend specifier on 'function' +## Remarks + A destructor or constructor cannot be specified as a [friend](../../cpp/friend-cpp.md). +## Example + The following sample generates C2256: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2258.md b/docs/error-messages/compiler-errors-1/compiler-error-c2258.md index 6f3adc52755..3c070b3c210 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2258.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2258.md @@ -10,8 +10,12 @@ ms.assetid: 105eaa87-befb-4ecb-9a3f-e09e14d2f5bf > illegal pure syntax, must be '= 0' +## Remarks + A pure virtual function is declared with incorrect syntax. +## Example + The following sample generates C2258: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2259.md b/docs/error-messages/compiler-errors-1/compiler-error-c2259.md index 11c96f2b724..74270c48a80 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2259.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2259.md @@ -10,12 +10,16 @@ ms.assetid: e458236f-bdea-4786-9aa6-a98d8bffa5f4 > '*class*' : cannot instantiate abstract class +## Remarks + Code declares an instance of an abstract class or structure. You can't instantiate a class or structure with one or more pure virtual functions. To instantiate objects of a derived class, the derived class must override each pure virtual function. For more information, see [Implicitly abstract classes](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Implicitly_abstract_classes). +## Examples + The following sample generates C2259: ```cpp From 901cb657cebd007f28d42c4a260b4d9a2778b08c Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 20 Jul 2025 19:16:04 +0800 Subject: [PATCH 1155/2255] Replace term "sample" with "example" for error references in range [C2231, C2260] --- .../compiler-errors-1/compiler-error-c2231.md | 2 +- .../compiler-errors-1/compiler-error-c2232.md | 2 +- .../compiler-errors-1/compiler-error-c2233.md | 2 +- .../compiler-errors-1/compiler-error-c2234.md | 2 +- .../compiler-errors-1/compiler-error-c2236.md | 2 +- .../compiler-errors-1/compiler-error-c2238.md | 2 +- .../compiler-errors-1/compiler-error-c2243.md | 2 +- .../compiler-errors-1/compiler-error-c2244.md | 2 +- .../compiler-errors-1/compiler-error-c2245.md | 2 +- .../compiler-errors-1/compiler-error-c2246.md | 2 +- .../compiler-errors-1/compiler-error-c2247.md | 2 +- .../compiler-errors-1/compiler-error-c2248.md | 2 +- .../compiler-errors-1/compiler-error-c2249.md | 4 ++-- .../compiler-errors-1/compiler-error-c2250.md | 2 +- .../compiler-errors-1/compiler-error-c2251.md | 2 +- .../compiler-errors-1/compiler-error-c2252.md | 2 +- .../compiler-errors-1/compiler-error-c2253.md | 4 ++-- .../compiler-errors-1/compiler-error-c2254.md | 2 +- .../compiler-errors-1/compiler-error-c2255.md | 2 +- .../compiler-errors-1/compiler-error-c2256.md | 2 +- .../compiler-errors-1/compiler-error-c2258.md | 2 +- .../compiler-errors-1/compiler-error-c2259.md | 6 +++--- 22 files changed, 26 insertions(+), 26 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2231.md b/docs/error-messages/compiler-errors-1/compiler-error-c2231.md index 3c7345b2937..2893c93d89b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2231.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2231.md @@ -16,7 +16,7 @@ The operand to the left of the member-selection operation (.) is a pointer inste ## Example -The following sample generates C2231: +The following example generates C2231: ```c // C2231.c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2232.md b/docs/error-messages/compiler-errors-1/compiler-error-c2232.md index 39c0057dbfa..0799d5ac346 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2232.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2232.md @@ -16,7 +16,7 @@ The operand to the left of the `->` operator is not a pointer. Use the period (. ## Example -The following sample generates C2232: +The following example generates C2232: ```c // C2232.c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2233.md b/docs/error-messages/compiler-errors-1/compiler-error-c2233.md index 8c581360ac1..eae29aa23d5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2233.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2233.md @@ -16,7 +16,7 @@ Each object in an array must contain at least one element. ## Example -The following sample generates C2233: +The following example generates C2233: ```cpp // C2233.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2234.md b/docs/error-messages/compiler-errors-1/compiler-error-c2234.md index 9f686d1fd6a..e298f86f356 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2234.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2234.md @@ -16,7 +16,7 @@ Because pointers to references are not allowed, arrays of references are not pos ## Example -The following sample generates C2234: +The following example generates C2234: ```cpp // C2234.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2236.md b/docs/error-messages/compiler-errors-1/compiler-error-c2236.md index 306c49f7d94..521223e6416 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2236.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2236.md @@ -16,7 +16,7 @@ The identifier is already defined as a type and cannot be overridden by a user-d ## Example -The following sample generates C2236: +The following example generates C2236: ```cpp // C2236.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2238.md b/docs/error-messages/compiler-errors-1/compiler-error-c2238.md index 674669a1aca..94325929da9 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2238.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2238.md @@ -16,7 +16,7 @@ An incorrect token was found. ## Example -The following sample generates C2238: +The following example generates C2238: ```cpp // C2238.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2243.md b/docs/error-messages/compiler-errors-1/compiler-error-c2243.md index f2a2c48e8d8..4a73edc6599 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2243.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2243.md @@ -16,7 +16,7 @@ Access protection (**`protected`** or **`private`**) prevented conversion from a ## Example -The following sample generates C2243: +The following example generates C2243: ```cpp // C2243.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2244.md b/docs/error-messages/compiler-errors-1/compiler-error-c2244.md index fce7ac39bb6..24cb988822b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2244.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2244.md @@ -18,7 +18,7 @@ This error only occurs in C++ projects. ## Examples -The following sample generates C2244: +The following example generates C2244: ```cpp // C2244.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2245.md b/docs/error-messages/compiler-errors-1/compiler-error-c2245.md index 2fb00bc883c..65d61426712 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2245.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2245.md @@ -16,7 +16,7 @@ A function specified as a friend was not found by the compiler. ## Example -The following sample generates C2245: +The following example generates C2245: ```cpp // C2245.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2246.md b/docs/error-messages/compiler-errors-1/compiler-error-c2246.md index a85d17f3598..cfc2d824135 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2246.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2246.md @@ -16,7 +16,7 @@ A member of a class, structure, or union with local scope is declared **`static` ## Example -The following sample generates C2246: +The following example generates C2246: ```cpp // C2246.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2247.md b/docs/error-messages/compiler-errors-1/compiler-error-c2247.md index f2bb4a14847..e9343220f11 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2247.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2247.md @@ -16,7 +16,7 @@ ms.assetid: 72efa03e-615e-4ef9-aede-0a98654b20fd ## Examples -The following sample generates C2247: +The following example generates C2247: ```cpp // C2247.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2248.md b/docs/error-messages/compiler-errors-1/compiler-error-c2248.md index cd7e67afa48..a925b2c310e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2248.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2248.md @@ -16,7 +16,7 @@ Members of a derived class can't access **`private`** members of a base class. Y ## Examples -The following sample generates C2248 when `private` or `protected` members of a class are accessed from outside the class. To fix this issue, don't access these members directly outside the class. Use `public` member data and member functions to interact with the class. +The following example generates C2248 when `private` or `protected` members of a class are accessed from outside the class. To fix this issue, don't access these members directly outside the class. Use `public` member data and member functions to interact with the class. ```cpp // C2248_access.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2249.md b/docs/error-messages/compiler-errors-1/compiler-error-c2249.md index 8a31cd7ff79..711bf675bdf 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2249.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2249.md @@ -16,7 +16,7 @@ The `member` is inherited from a nonpublic **`virtual`** base class or structure ## Examples -The following sample generates C2249. +The following example generates C2249. ```cpp // C2249.cpp @@ -35,7 +35,7 @@ int main() { } ``` -C2249 can also occur if you try to assign a stream from the C++ Standard Library to another stream. The following sample generates C2249. +C2249 can also occur if you try to assign a stream from the C++ Standard Library to another stream. The following example generates C2249. ```cpp // C2249_2.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2250.md b/docs/error-messages/compiler-errors-1/compiler-error-c2250.md index 845fa9125c3..b1152ea8b59 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2250.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2250.md @@ -16,7 +16,7 @@ The derived class inherits more than one override of a virtual function of a vir ## Example -The following sample generates C2286: +The following example generates C2286: ```cpp // C2250.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2251.md b/docs/error-messages/compiler-errors-1/compiler-error-c2251.md index 132a488f385..382966e5edd 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2251.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2251.md @@ -16,7 +16,7 @@ The compiler was not able to find an identifier in the specified namespace. ## Example -The following sample generates C2251: +The following example generates C2251: ```cpp // C2251.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2252.md b/docs/error-messages/compiler-errors-1/compiler-error-c2252.md index 602d3a755f9..75c4cdbe26e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2252.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2252.md @@ -16,7 +16,7 @@ The compiler detected a problem with an explicit instantiation of a template. F ## Example -The following sample generates C2252: +The following example generates C2252: ```cpp // C2252.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2253.md b/docs/error-messages/compiler-errors-1/compiler-error-c2253.md index 414abda3d3d..427ffaded09 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2253.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2253.md @@ -16,7 +16,7 @@ A nonvirtual function is specified as pure **`virtual`**. ## Examples -The following sample generates C2253: +The following example generates C2253: ```cpp // C2253.cpp @@ -28,7 +28,7 @@ public: }; ``` -The following sample generates C2253: +The following example generates C2253: ```cpp // C2253_2.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2254.md b/docs/error-messages/compiler-errors-1/compiler-error-c2254.md index bc9676e95a3..a0740739bca 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2254.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2254.md @@ -16,7 +16,7 @@ A **`friend`** function is specified as pure **`virtual`**. ## Example -The following sample generates C2254: +The following example generates C2254: ```cpp // C2254.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2255.md b/docs/error-messages/compiler-errors-1/compiler-error-c2255.md index 2d6ea4932db..d4e19046865 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2255.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2255.md @@ -16,7 +16,7 @@ For example, a nonmember function is declared a **`friend`**. ## Example -The following sample generates C2255: +The following example generates C2255: ```cpp // C2255.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2256.md b/docs/error-messages/compiler-errors-1/compiler-error-c2256.md index 99a1f00550c..281491a512f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2256.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2256.md @@ -16,7 +16,7 @@ A destructor or constructor cannot be specified as a [friend](../../cpp/friend-c ## Example -The following sample generates C2256: +The following example generates C2256: ```cpp // C2256.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2258.md b/docs/error-messages/compiler-errors-1/compiler-error-c2258.md index 3c070b3c210..c6c5b8400d1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2258.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2258.md @@ -16,7 +16,7 @@ A pure virtual function is declared with incorrect syntax. ## Example -The following sample generates C2258: +The following example generates C2258: ```cpp // C2258.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2259.md b/docs/error-messages/compiler-errors-1/compiler-error-c2259.md index 74270c48a80..974025e2370 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2259.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2259.md @@ -20,7 +20,7 @@ For more information, see [Implicitly abstract classes](../../dotnet/how-to-defi ## Examples -The following sample generates C2259: +The following example generates C2259: ```cpp // C2259.cpp @@ -45,7 +45,7 @@ To resolve this issue, don't use more restrictive access permissions for the imp C2259 can also occur because of conformance work that was done in Visual Studio 2005, **`/Zc:wchar_t`** is now on by default. In this situation, C2599 can be resolved either by compiling with **`/Zc:wchar_t-`**, to get the behavior from previous versions, or preferably, by updating your types so they're compatible. For more information, see [`/Zc:wchar_t` (wchar_t Is Native Type)](../../build/reference/zc-wchar-t-wchar-t-is-native-type.md). -The following sample generates C2259: +The following example generates C2259: ```cpp // C2259b.cpp @@ -83,7 +83,7 @@ public: MyClass4 y; ``` -The following sample generates C2259: +The following example generates C2259: ```cpp // C2259c.cpp From c17ce2329dd64b662391d761b6c24ee3e15fe115 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 20 Jul 2025 19:19:42 +0800 Subject: [PATCH 1156/2255] Update metadata for error references in range [C2231, C2260] --- .../error-messages/compiler-errors-1/compiler-error-c2231.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2232.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2233.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2234.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2236.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2238.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2241.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2242.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2243.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2244.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2245.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2246.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2247.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2248.md | 3 +-- .../error-messages/compiler-errors-1/compiler-error-c2249.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2250.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2251.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2252.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2253.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2254.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2255.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2256.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2258.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2259.md | 3 +-- 24 files changed, 46 insertions(+), 70 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2231.md b/docs/error-messages/compiler-errors-1/compiler-error-c2231.md index 2893c93d89b..a3ab0edc007 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2231.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2231.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2231" title: "Compiler Error C2231" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2231" +ms.date: 11/04/2016 f1_keywords: ["C2231"] helpviewer_keywords: ["C2231"] -ms.assetid: 677c5c66-d30f-4c3b-bbb9-760858d56477 --- # Compiler Error C2231 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2232.md b/docs/error-messages/compiler-errors-1/compiler-error-c2232.md index 0799d5ac346..58ab4d67d20 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2232.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2232.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2232" title: "Compiler Error C2232" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2232" +ms.date: 11/04/2016 f1_keywords: ["C2232"] helpviewer_keywords: ["C2232"] -ms.assetid: 76f302b7-30a7-4a81-9a39-b4edde33b54c --- # Compiler Error C2232 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2233.md b/docs/error-messages/compiler-errors-1/compiler-error-c2233.md index eae29aa23d5..941d8ee870c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2233.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2233.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2233" title: "Compiler Error C2233" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2233" +ms.date: 11/04/2016 f1_keywords: ["C2233"] helpviewer_keywords: ["C2233"] -ms.assetid: 236bdf0b-9607-4f26-a249-d8def0b1333c --- # Compiler Error C2233 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2234.md b/docs/error-messages/compiler-errors-1/compiler-error-c2234.md index e298f86f356..df26be2eea1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2234.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2234.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2234" title: "Compiler Error C2234" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2234" +ms.date: 11/04/2016 f1_keywords: ["C2234"] helpviewer_keywords: ["C2234"] -ms.assetid: cfa42458-c803-4717-a017-9eca1c0cbfb0 --- # Compiler Error C2234 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2236.md b/docs/error-messages/compiler-errors-1/compiler-error-c2236.md index 521223e6416..4fc2c582fb4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2236.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2236.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2236" title: "Compiler Error C2236" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2236" +ms.date: 11/04/2016 f1_keywords: ["C2236"] helpviewer_keywords: ["C2236"] -ms.assetid: 0b6771a7-a783-4729-9c3d-7a3339c432cc --- # Compiler Error C2236 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2238.md b/docs/error-messages/compiler-errors-1/compiler-error-c2238.md index 94325929da9..36610cb8a82 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2238.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2238.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2238" title: "Compiler Error C2238" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2238" +ms.date: 11/04/2016 f1_keywords: ["C2238"] helpviewer_keywords: ["C2238"] -ms.assetid: 3d53060c-d6b7-4603-b9cf-d7c65eb64cd2 --- # Compiler Error C2238 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2241.md b/docs/error-messages/compiler-errors-1/compiler-error-c2241.md index 7de089058fb..1b3217d46fa 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2241.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2241.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2241" title: "Compiler Error C2241" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2241" +ms.date: 11/04/2016 f1_keywords: ["C2241"] helpviewer_keywords: ["C2241"] -ms.assetid: 2f4e2c2c-b95c-4afe-bbe0-4214cd39d140 --- # Compiler Error C2241 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2242.md b/docs/error-messages/compiler-errors-1/compiler-error-c2242.md index b7a50c92c2c..d7401ce7584 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2242.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2242.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2242" title: "Compiler Error C2242" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2242" +ms.date: 11/04/2016 f1_keywords: ["C2242"] helpviewer_keywords: ["C2242"] -ms.assetid: e1b687ed-4460-4c26-9f7e-c43e65c6dd65 --- # Compiler Error C2242 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2243.md b/docs/error-messages/compiler-errors-1/compiler-error-c2243.md index 4a73edc6599..036a1ae997d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2243.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2243.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2243" title: "Compiler Error C2243" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2243" +ms.date: 11/04/2016 f1_keywords: ["C2243"] helpviewer_keywords: ["C2243"] -ms.assetid: b90065bb-d251-4ba9-8b4c-280ee13fa9c0 --- # Compiler Error C2243 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2244.md b/docs/error-messages/compiler-errors-1/compiler-error-c2244.md index 24cb988822b..d0ae19f3282 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2244.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2244.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2244" title: "Compiler Error C2244" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2244" +ms.date: 11/04/2016 f1_keywords: ["C2244"] helpviewer_keywords: ["C2244"] -ms.assetid: d9911c12-ceb5-4f93-ac47-b44a485215c2 --- # Compiler Error C2244 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2245.md b/docs/error-messages/compiler-errors-1/compiler-error-c2245.md index 65d61426712..585fe22556b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2245.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2245.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2245" title: "Compiler Error C2245" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2245" +ms.date: 11/04/2016 f1_keywords: ["C2245"] helpviewer_keywords: ["C2245"] -ms.assetid: 08aaeadf-10ec-485a-b2a6-6e775289082b --- # Compiler Error C2245 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2246.md b/docs/error-messages/compiler-errors-1/compiler-error-c2246.md index cfc2d824135..3c6e5d4c2e1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2246.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2246.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2246" title: "Compiler Error C2246" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2246" +ms.date: 11/04/2016 f1_keywords: ["C2246"] helpviewer_keywords: ["C2246"] -ms.assetid: 4f3e4f83-21f3-4256-af96-43e0bb060311 --- # Compiler Error C2246 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2247.md b/docs/error-messages/compiler-errors-1/compiler-error-c2247.md index e9343220f11..e658316482a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2247.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2247.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2247" title: "Compiler Error C2247" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2247" +ms.date: 11/04/2016 f1_keywords: ["C2247"] helpviewer_keywords: ["C2247"] -ms.assetid: 72efa03e-615e-4ef9-aede-0a98654b20fd --- # Compiler Error C2247 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2248.md b/docs/error-messages/compiler-errors-1/compiler-error-c2248.md index a925b2c310e..6a240fa1ff8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2248.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2248.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2248" title: "Compiler Error C2248" +description: "Learn more about: Compiler Error C2248" ms.date: 09/27/2022 f1_keywords: ["C2248"] helpviewer_keywords: ["C2248"] -ms.assetid: 7a3ba0e8-d3b9-4bb9-95db-81ef17e31d23 --- # Compiler Error C2248 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2249.md b/docs/error-messages/compiler-errors-1/compiler-error-c2249.md index 711bf675bdf..08b0242691e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2249.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2249.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2249" title: "Compiler Error C2249" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2249" +ms.date: 11/04/2016 f1_keywords: ["C2249"] helpviewer_keywords: ["C2249"] -ms.assetid: bdd6697c-e04b-49b9-8e40-d9eb6d74f2b6 --- # Compiler Error C2249 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2250.md b/docs/error-messages/compiler-errors-1/compiler-error-c2250.md index b1152ea8b59..90762d9a529 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2250.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2250.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2250" title: "Compiler Error C2250" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2250" +ms.date: 11/04/2016 f1_keywords: ["C2250"] helpviewer_keywords: ["C2250"] -ms.assetid: f990986f-5c7d-4af4-a25c-b35540f1e217 --- # Compiler Error C2250 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2251.md b/docs/error-messages/compiler-errors-1/compiler-error-c2251.md index 382966e5edd..f3be89655fb 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2251.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2251.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2251" title: "Compiler Error C2251" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2251" +ms.date: 11/04/2016 f1_keywords: ["C2251"] helpviewer_keywords: ["C2251"] -ms.assetid: fefe050c-f8d3-4316-b237-8007dbcdd3bf --- # Compiler Error C2251 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2252.md b/docs/error-messages/compiler-errors-1/compiler-error-c2252.md index 75c4cdbe26e..a26bb54ffd5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2252.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2252.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2252" title: "Compiler Error C2252" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2252" +ms.date: 11/04/2016 f1_keywords: ["C2252"] helpviewer_keywords: ["C2252"] -ms.assetid: fee74ab9-1997-4615-82fe-e6d1fe3aacd9 --- # Compiler Error C2252 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2253.md b/docs/error-messages/compiler-errors-1/compiler-error-c2253.md index 427ffaded09..10af621f451 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2253.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2253.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2253" title: "Compiler Error C2253" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2253" +ms.date: 11/04/2016 f1_keywords: ["C2253"] helpviewer_keywords: ["C2253"] -ms.assetid: bd6445ae-b2c1-4669-9657-a8f4acf80b16 --- # Compiler Error C2253 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2254.md b/docs/error-messages/compiler-errors-1/compiler-error-c2254.md index a0740739bca..675b084392c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2254.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2254.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2254" title: "Compiler Error C2254" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2254" +ms.date: 11/04/2016 f1_keywords: ["C2254"] helpviewer_keywords: ["C2254"] -ms.assetid: 49bb3d7e-3bdf-4af6-937c-fa627be412a9 --- # Compiler Error C2254 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2255.md b/docs/error-messages/compiler-errors-1/compiler-error-c2255.md index d4e19046865..99711de628b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2255.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2255.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2255" title: "Compiler Error C2255" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2255" +ms.date: 11/04/2016 f1_keywords: ["C2255"] helpviewer_keywords: ["C2255"] -ms.assetid: 67dc4cb0-de6b-4405-bd64-d47736367a93 --- # Compiler Error C2255 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2256.md b/docs/error-messages/compiler-errors-1/compiler-error-c2256.md index 281491a512f..2c40773e239 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2256.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2256.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2256" title: "Compiler Error C2256" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2256" +ms.date: 11/04/2016 f1_keywords: ["C2256"] helpviewer_keywords: ["C2256"] -ms.assetid: 171fa2bc-8c72-49cd-afe5-d723b7acd3c5 --- # Compiler Error C2256 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2258.md b/docs/error-messages/compiler-errors-1/compiler-error-c2258.md index c6c5b8400d1..8b04f7d245e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2258.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2258.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2258" title: "Compiler Error C2258" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2258" +ms.date: 11/04/2016 f1_keywords: ["C2258"] helpviewer_keywords: ["C2258"] -ms.assetid: 105eaa87-befb-4ecb-9a3f-e09e14d2f5bf --- # Compiler Error C2258 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2259.md b/docs/error-messages/compiler-errors-1/compiler-error-c2259.md index 974025e2370..9bcb2e62f8d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2259.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2259.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2259" title: "Compiler Error C2259" +description: "Learn more about: Compiler Error C2259" ms.date: 07/08/2021 f1_keywords: ["C2259"] helpviewer_keywords: ["C2259"] -ms.assetid: e458236f-bdea-4786-9aa6-a98d8bffa5f4 --- # Compiler Error C2259 From 67a7184c1bacf0288e6a807e5c4221c832fa1f88 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 21 Jul 2025 22:24:55 +0800 Subject: [PATCH 1157/2255] Add blockquotes for error messages in range [C2261, C2290] --- docs/error-messages/compiler-errors-1/compiler-error-c2261.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2262.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2264.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2266.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2267.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2268.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2270.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2271.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2272.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2273.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2274.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2275.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2277.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2279.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2280.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2285.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2286.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2287.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2289.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2290.md | 2 +- 20 files changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2261.md b/docs/error-messages/compiler-errors-1/compiler-error-c2261.md index eb8bd54da28..bf0b5fdb84e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2261.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2261.md @@ -8,7 +8,7 @@ ms.assetid: 60969482-9e83-49b5-9631-a04bc844da12 --- # Compiler Error C2261 -'string' : assembly reference is invalid and cannot be resolved +> 'string' : assembly reference is invalid and cannot be resolved A value was not valid. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2262.md b/docs/error-messages/compiler-errors-1/compiler-error-c2262.md index 8aa445522b1..4e684dc6737 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2262.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2262.md @@ -8,7 +8,7 @@ ms.assetid: 727d1c6e-53e8-40e5-b7b8-6a7ac2011727 --- # Compiler Error C2262 -'attribute_specifiers' : InternalsVisibleTo declarations cannot have a version, culture, or processor architecture specified +> 'attribute_specifiers' : InternalsVisibleTo declarations cannot have a version, culture, or processor architecture specified The attribute was not specified correctly. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2264.md b/docs/error-messages/compiler-errors-1/compiler-error-c2264.md index e2e1dd617ec..b4156cb684f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2264.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2264.md @@ -8,7 +8,7 @@ ms.assetid: 158b72cc-cee9-4a08-bd79-b7a5955345a8 --- # Compiler Error C2264 -'function' : error in function definition or declaration; function not called +> 'function' : error in function definition or declaration; function not called The function cannot be called due to an incorrect definition or declaration. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2266.md b/docs/error-messages/compiler-errors-1/compiler-error-c2266.md index 9fc181b416e..6c01dee7215 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2266.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2266.md @@ -8,6 +8,6 @@ ms.assetid: 5c267a67-d5a1-4ad7-b6f7-a156510aee35 --- # Compiler Error C2266 -'identifier' : reference to a non-constant bounded array is illegal +> 'identifier' : reference to a non-constant bounded array is illegal A reference is declared for an array with a nonconstant bound. The array must have constant bounds. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2267.md b/docs/error-messages/compiler-errors-1/compiler-error-c2267.md index 4018e13c8c5..f1e87ee5467 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2267.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2267.md @@ -8,7 +8,7 @@ ms.assetid: ea63bebb-6208-4367-8440-39be07f9c360 --- # Compiler Error C2267 -'function' : static functions with block scope are illegal +> 'function' : static functions with block scope are illegal A local function is declared **`static`**. Static functions must have global scope. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2268.md b/docs/error-messages/compiler-errors-1/compiler-error-c2268.md index 8be93111970..b9b75aac53e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2268.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2268.md @@ -8,7 +8,7 @@ ms.assetid: 0ed055c9-3c6f-4df2-a5b6-85cf0e01a249 --- # Compiler Error C2268 -'function' is a compiler predefined library helper. Library helpers are not supported with /GL; compile object file 'file' without /GL. +> 'function' is a compiler predefined library helper. Library helpers are not supported with /GL; compile object file 'file' without /GL. A function defined in your source code has the same name as an internal compiler function. Compile the module containing the function without [/GL](../../build/reference/gl-whole-program-optimization.md). diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2270.md b/docs/error-messages/compiler-errors-1/compiler-error-c2270.md index b19c40b8b21..5be147eb530 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2270.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2270.md @@ -8,7 +8,7 @@ ms.assetid: b52c068e-0b61-42e7-b775-4d57b3ddcba0 --- # Compiler Error C2270 -'function' : modifiers not allowed on nonmember functions +> 'function' : modifiers not allowed on nonmember functions A nonmember function is declared with [const](../../cpp/const-cpp.md), [volatile](../../cpp/volatile-cpp.md), or another memory-model modifier. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2271.md b/docs/error-messages/compiler-errors-1/compiler-error-c2271.md index cb79055f4c2..e23a47bd36a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2271.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2271.md @@ -8,7 +8,7 @@ ms.assetid: ea47bf57-f55d-4171-8e98-95a71d62820e --- # Compiler Error C2271 -'operator' : new/delete cannot have formal list modifiers +> 'operator' : new/delete cannot have formal list modifiers The operator (**`new`** or **`delete`**) is declared with a memory-model specifier. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2272.md b/docs/error-messages/compiler-errors-1/compiler-error-c2272.md index a47e01e02a9..a6fe45a7549 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2272.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2272.md @@ -8,7 +8,7 @@ ms.assetid: 1517706a-9c27-452e-9b10-3424b3d232bc --- # Compiler Error C2272 -'function' : modifiers not allowed on static member functions +> 'function' : modifiers not allowed on static member functions A **`static`** member function is declared with a memory-model specifier, such as [const](../../cpp/const-cpp.md) or [volatile](../../cpp/volatile-cpp.md), and such modifiers are not allowed on **`static`** member functions. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2273.md b/docs/error-messages/compiler-errors-1/compiler-error-c2273.md index 2000e990c36..2c78a443879 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2273.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2273.md @@ -8,7 +8,7 @@ ms.assetid: 3c682c66-97bf-4a23-a22c-d9a26a92bf95 --- # Compiler Error C2273 -'type' : illegal as right side of '->' operator +> 'type' : illegal as right side of '->' operator A type appears as the right operand of a `->` operator. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2274.md b/docs/error-messages/compiler-errors-1/compiler-error-c2274.md index 52cd5d4fcaf..b670f403474 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2274.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2274.md @@ -8,7 +8,7 @@ ms.assetid: 8e874903-f499-45ef-8291-f821eee4cc1c --- # Compiler Error C2274 -'type' : illegal as right side of '.' operator +> 'type' : illegal as right side of '.' operator A type appears as the right operand of a member-access (.) operator. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2275.md b/docs/error-messages/compiler-errors-1/compiler-error-c2275.md index 5398ae9154c..0948c93d6a6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2275.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2275.md @@ -8,7 +8,7 @@ ms.assetid: c1eafa71-48de-46e0-82f3-b575538ef205 --- # Compiler Error C2275 -'identifier' : illegal use of this type as an expression +> 'identifier' : illegal use of this type as an expression An expression uses the `->` operator with a **`typedef`** identifier. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2277.md b/docs/error-messages/compiler-errors-1/compiler-error-c2277.md index f1aef2b07ff..7de82b48d48 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2277.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2277.md @@ -8,7 +8,7 @@ ms.assetid: 15a83b07-8731-4524-810b-267f65a7844f --- # Compiler Error C2277 -'identifier' : cannot take address of this member function +> 'identifier' : cannot take address of this member function You cannot take the address of a member function. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2279.md b/docs/error-messages/compiler-errors-1/compiler-error-c2279.md index b7df615fbd6..a2593950f7e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2279.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2279.md @@ -8,7 +8,7 @@ ms.assetid: 1b5c88ef-2336-49b8-9ddb-d61f97c73e14 --- # Compiler Error C2279 -exception specification cannot appear in a typedef declaration +> exception specification cannot appear in a typedef declaration Under **/Za**, [exception specifications](../../cpp/exception-specifications-throw-cpp.md) are not allowed in a typedef declaration. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2280.md b/docs/error-messages/compiler-errors-1/compiler-error-c2280.md index c438dc7138a..0ffdaaac91e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2280.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2280.md @@ -8,7 +8,7 @@ ms.assetid: e6c5b1fb-2b9b-4554-8ff9-775eeb37161b --- # Compiler Error C2280 -'*declaration*': attempting to reference a deleted function +> '*declaration*': attempting to reference a deleted function The compiler detected an attempt to reference a `deleted` function. This error can be caused by a call to a member function that has been explicitly marked as `= deleted` in the source code. This error can also be caused by a call to an implicit special member function of a struct or class that is automatically declared and marked as `deleted` by the compiler. For more information about when the compiler automatically generates **`default`** or `deleted` special member functions, see [Special member functions](../../cpp/special-member-functions.md). diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2285.md b/docs/error-messages/compiler-errors-1/compiler-error-c2285.md index cb7c1d60c9e..dad0f15a6c6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2285.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2285.md @@ -8,6 +8,6 @@ ms.assetid: 7b40a1b0-f477-49fa-b762-c3bccd88514e --- # Compiler Error C2285 -pointers to members representation has already been determined - pragma ignored +> pointers to members representation has already been determined - pragma ignored Two different representations exist for class. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2286.md b/docs/error-messages/compiler-errors-1/compiler-error-c2286.md index 8479291e545..da5d13bb9fb 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2286.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2286.md @@ -8,7 +8,7 @@ ms.assetid: 078e0201-35cc-42e2-8dbc-6f8cf557b098 --- # Compiler Error C2286 -pointers to members of 'identifier' representation is already set to 'inheritance' - declaration ignored +> pointers to members of 'identifier' representation is already set to 'inheritance' - declaration ignored Two different pointer-to-members representations exist for class. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2287.md b/docs/error-messages/compiler-errors-1/compiler-error-c2287.md index 178c7c0076b..6a4c765554f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2287.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2287.md @@ -8,7 +8,7 @@ ms.assetid: 64556299-4e1f-4437-88b7-2464fc0b95bb --- # Compiler Error C2287 -'class': inheritance representation: 'representation1' is less general than the required 'representation2' +> 'class': inheritance representation: 'representation1' is less general than the required 'representation2' A class is declared with a simpler representation than required. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2289.md b/docs/error-messages/compiler-errors-1/compiler-error-c2289.md index 485af601948..2141e920db9 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2289.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2289.md @@ -8,7 +8,7 @@ ms.assetid: cb41a29e-1b06-47dc-bfce-8d73bd63a0df --- # Compiler Error C2289 -same type qualifier used more than once +> same type qualifier used more than once A type declaration or definition uses a type qualifier (**`const`**, **`volatile`**, **`signed`**, or **`unsigned`**) more than once, causing an error under ANSI compatibility (**/Za**). diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2290.md b/docs/error-messages/compiler-errors-1/compiler-error-c2290.md index f69fdf273cf..5b125729998 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2290.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2290.md @@ -8,6 +8,6 @@ ms.assetid: 78c0feec-ccde-401b-8335-5b6ea6be8a13 --- # Compiler Error C2290 -C++ asm syntax ignored. Use __asm. +> C++ asm syntax ignored. Use __asm. The **`asm`** syntax is reserved for future use. From 2720b85acdd7e2862077ace79b2b9f12fe9a4ee9 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 21 Jul 2025 22:30:54 +0800 Subject: [PATCH 1158/2255] Add "Remarks" and "Example" headings for error references in range [C2261, C2290] --- docs/error-messages/compiler-errors-1/compiler-error-c2261.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2262.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2264.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2266.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2267.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2268.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2270.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2271.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2272.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2273.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2274.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2275.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2276.md | 4 ++-- docs/error-messages/compiler-errors-1/compiler-error-c2277.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2279.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2280.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2283.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2285.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2286.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2287.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2289.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2290.md | 2 ++ 22 files changed, 72 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2261.md b/docs/error-messages/compiler-errors-1/compiler-error-c2261.md index bf0b5fdb84e..4de84ccc6e0 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2261.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2261.md @@ -10,6 +10,8 @@ ms.assetid: 60969482-9e83-49b5-9631-a04bc844da12 > 'string' : assembly reference is invalid and cannot be resolved +## Remarks + A value was not valid. is used to specify a friend assembly. For example, if a.dll wants to specify b.dll as a friend assembly, you would specify (in a.dll): InternalsVisibleTo("b"). The runtime then allows b.dll to access everything in a.dll (except private types). diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2262.md b/docs/error-messages/compiler-errors-1/compiler-error-c2262.md index 4e684dc6737..ea89e15d348 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2262.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2262.md @@ -10,6 +10,8 @@ ms.assetid: 727d1c6e-53e8-40e5-b7b8-6a7ac2011727 > 'attribute_specifiers' : InternalsVisibleTo declarations cannot have a version, culture, or processor architecture specified +## Remarks + The attribute was not specified correctly. ## Example diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2264.md b/docs/error-messages/compiler-errors-1/compiler-error-c2264.md index b4156cb684f..03b2a6fc83b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2264.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2264.md @@ -10,8 +10,12 @@ ms.assetid: 158b72cc-cee9-4a08-bd79-b7a5955345a8 > 'function' : error in function definition or declaration; function not called +## Remarks + The function cannot be called due to an incorrect definition or declaration. +## Example + The following sample generates C2264: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2266.md b/docs/error-messages/compiler-errors-1/compiler-error-c2266.md index 6c01dee7215..32e2c9840ba 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2266.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2266.md @@ -10,4 +10,6 @@ ms.assetid: 5c267a67-d5a1-4ad7-b6f7-a156510aee35 > 'identifier' : reference to a non-constant bounded array is illegal +## Remarks + A reference is declared for an array with a nonconstant bound. The array must have constant bounds. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2267.md b/docs/error-messages/compiler-errors-1/compiler-error-c2267.md index f1e87ee5467..b1616b6fba2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2267.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2267.md @@ -10,8 +10,12 @@ ms.assetid: ea63bebb-6208-4367-8440-39be07f9c360 > 'function' : static functions with block scope are illegal +## Remarks + A local function is declared **`static`**. Static functions must have global scope. +## Example + The following sample generates C2267: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2268.md b/docs/error-messages/compiler-errors-1/compiler-error-c2268.md index b9b75aac53e..378638e69e4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2268.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2268.md @@ -10,8 +10,12 @@ ms.assetid: 0ed055c9-3c6f-4df2-a5b6-85cf0e01a249 > 'function' is a compiler predefined library helper. Library helpers are not supported with /GL; compile object file 'file' without /GL. +## Remarks + A function defined in your source code has the same name as an internal compiler function. Compile the module containing the function without [/GL](../../build/reference/gl-whole-program-optimization.md). +## Example + The following sample generates C2268: ```c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2270.md b/docs/error-messages/compiler-errors-1/compiler-error-c2270.md index 5be147eb530..b92e5ca8564 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2270.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2270.md @@ -10,8 +10,12 @@ ms.assetid: b52c068e-0b61-42e7-b775-4d57b3ddcba0 > 'function' : modifiers not allowed on nonmember functions +## Remarks + A nonmember function is declared with [const](../../cpp/const-cpp.md), [volatile](../../cpp/volatile-cpp.md), or another memory-model modifier. +## Example + The following sample generates C2270: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2271.md b/docs/error-messages/compiler-errors-1/compiler-error-c2271.md index e23a47bd36a..f4078a960cd 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2271.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2271.md @@ -10,8 +10,12 @@ ms.assetid: ea47bf57-f55d-4171-8e98-95a71d62820e > 'operator' : new/delete cannot have formal list modifiers +## Remarks + The operator (**`new`** or **`delete`**) is declared with a memory-model specifier. +## Example + The following sample generates C2271: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2272.md b/docs/error-messages/compiler-errors-1/compiler-error-c2272.md index a6fe45a7549..a6d77a74cc6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2272.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2272.md @@ -10,8 +10,12 @@ ms.assetid: 1517706a-9c27-452e-9b10-3424b3d232bc > 'function' : modifiers not allowed on static member functions +## Remarks + A **`static`** member function is declared with a memory-model specifier, such as [const](../../cpp/const-cpp.md) or [volatile](../../cpp/volatile-cpp.md), and such modifiers are not allowed on **`static`** member functions. +## Example + The following sample generates C2272: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2273.md b/docs/error-messages/compiler-errors-1/compiler-error-c2273.md index 2c78a443879..6f7d7222113 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2273.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2273.md @@ -10,10 +10,14 @@ ms.assetid: 3c682c66-97bf-4a23-a22c-d9a26a92bf95 > 'type' : illegal as right side of '->' operator +## Remarks + A type appears as the right operand of a `->` operator. This error can be caused by trying to access a user-defined type conversion. Use the keyword **`operator`** between -> and `type`. +## Example + The following sample generates C2273: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2274.md b/docs/error-messages/compiler-errors-1/compiler-error-c2274.md index b670f403474..e3d3bbf5168 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2274.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2274.md @@ -10,10 +10,14 @@ ms.assetid: 8e874903-f499-45ef-8291-f821eee4cc1c > 'type' : illegal as right side of '.' operator +## Remarks + A type appears as the right operand of a member-access (.) operator. This error can be caused by trying to access a user-defined type conversion. Use the keyword **`operator`** between the period and `type`. +## Example + The following sample generates C2286: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2275.md b/docs/error-messages/compiler-errors-1/compiler-error-c2275.md index 0948c93d6a6..7a482e88734 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2275.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2275.md @@ -10,8 +10,12 @@ ms.assetid: c1eafa71-48de-46e0-82f3-b575538ef205 > 'identifier' : illegal use of this type as an expression +## Remarks + An expression uses the `->` operator with a **`typedef`** identifier. +## Example + The following sample generates C2275: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2276.md b/docs/error-messages/compiler-errors-1/compiler-error-c2276.md index b6fe542bb7f..d564a814292 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2276.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2276.md @@ -9,10 +9,10 @@ helpviewer_keywords: ["C2276"] > '*operator*' : illegal operation on bound member function expression -The compiler found a problem with the syntax used to create a pointer-to-member. - ## Remarks +The compiler found a problem with the syntax used to create a pointer-to-member. + Error `C2276` is often caused when you attempt to create a pointer-to-member by using an instance variable to qualify the member, instead of a class type. You may also see this error if you're trying to call a member function by using the wrong syntax. ## Example diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2277.md b/docs/error-messages/compiler-errors-1/compiler-error-c2277.md index 7de82b48d48..8f613cea955 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2277.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2277.md @@ -10,8 +10,12 @@ ms.assetid: 15a83b07-8731-4524-810b-267f65a7844f > 'identifier' : cannot take address of this member function +## Remarks + You cannot take the address of a member function. +## Example + The following sample generates C2277: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2279.md b/docs/error-messages/compiler-errors-1/compiler-error-c2279.md index a2593950f7e..46fd1de9e7c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2279.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2279.md @@ -10,8 +10,12 @@ ms.assetid: 1b5c88ef-2336-49b8-9ddb-d61f97c73e14 > exception specification cannot appear in a typedef declaration +## Remarks + Under **/Za**, [exception specifications](../../cpp/exception-specifications-throw-cpp.md) are not allowed in a typedef declaration. +## Example + The following sample generates C2279: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2280.md b/docs/error-messages/compiler-errors-1/compiler-error-c2280.md index 0ffdaaac91e..f909de66443 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2280.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2280.md @@ -10,6 +10,8 @@ ms.assetid: e6c5b1fb-2b9b-4554-8ff9-775eeb37161b > '*declaration*': attempting to reference a deleted function +## Remarks + The compiler detected an attempt to reference a `deleted` function. This error can be caused by a call to a member function that has been explicitly marked as `= deleted` in the source code. This error can also be caused by a call to an implicit special member function of a struct or class that is automatically declared and marked as `deleted` by the compiler. For more information about when the compiler automatically generates **`default`** or `deleted` special member functions, see [Special member functions](../../cpp/special-member-functions.md). ## Example: Explicitly deleted functions diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2283.md b/docs/error-messages/compiler-errors-1/compiler-error-c2283.md index 52b1375800b..457c2ac5181 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2283.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2283.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C2283"] > '*identifier*': pure specifier or abstract override specifier not allowed on unnamed struct +## Remarks + A member function of an unnamed class or structure is declared with a pure specifier, which is not permitted. +## Example + The following sample generates C2283: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2285.md b/docs/error-messages/compiler-errors-1/compiler-error-c2285.md index dad0f15a6c6..4b095d4fcae 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2285.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2285.md @@ -10,4 +10,6 @@ ms.assetid: 7b40a1b0-f477-49fa-b762-c3bccd88514e > pointers to members representation has already been determined - pragma ignored +## Remarks + Two different representations exist for class. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2286.md b/docs/error-messages/compiler-errors-1/compiler-error-c2286.md index da5d13bb9fb..38f2682e637 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2286.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2286.md @@ -10,6 +10,8 @@ ms.assetid: 078e0201-35cc-42e2-8dbc-6f8cf557b098 > pointers to members of 'identifier' representation is already set to 'inheritance' - declaration ignored +## Remarks + Two different pointer-to-members representations exist for class. For more information, see [Inheritance Keywords](../../cpp/inheritance-keywords.md). diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2287.md b/docs/error-messages/compiler-errors-1/compiler-error-c2287.md index 6a4c765554f..90eba186ca7 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2287.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2287.md @@ -10,8 +10,12 @@ ms.assetid: 64556299-4e1f-4437-88b7-2464fc0b95bb > 'class': inheritance representation: 'representation1' is less general than the required 'representation2' +## Remarks + A class is declared with a simpler representation than required. +## Example + The following sample generates C2287: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2289.md b/docs/error-messages/compiler-errors-1/compiler-error-c2289.md index 2141e920db9..85b9002aafd 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2289.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2289.md @@ -10,8 +10,12 @@ ms.assetid: cb41a29e-1b06-47dc-bfce-8d73bd63a0df > same type qualifier used more than once +## Remarks + A type declaration or definition uses a type qualifier (**`const`**, **`volatile`**, **`signed`**, or **`unsigned`**) more than once, causing an error under ANSI compatibility (**/Za**). +## Example + The following sample generates C2286: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2290.md b/docs/error-messages/compiler-errors-1/compiler-error-c2290.md index 5b125729998..6d040d3b2a0 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2290.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2290.md @@ -10,4 +10,6 @@ ms.assetid: 78c0feec-ccde-401b-8335-5b6ea6be8a13 > C++ asm syntax ignored. Use __asm. +## Remarks + The **`asm`** syntax is reserved for future use. From 5a2e726a84e599f2dd64adac55120dbef1aae2a6 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 21 Jul 2025 22:32:48 +0800 Subject: [PATCH 1159/2255] Replace term "sample" with "example" for error references in range [C2261, C2290] --- docs/error-messages/compiler-errors-1/compiler-error-c2261.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2262.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2264.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2267.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2268.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2270.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2271.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2272.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2273.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2274.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2275.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2276.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2277.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2279.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2283.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2286.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2287.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2289.md | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2261.md b/docs/error-messages/compiler-errors-1/compiler-error-c2261.md index 4de84ccc6e0..4c31a135302 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2261.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2261.md @@ -20,7 +20,7 @@ For more on the correct syntax when specifying friend assemblies, see [Friend As ## Example -The following sample generates C2261. +The following example generates C2261. ```cpp // C2261.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2262.md b/docs/error-messages/compiler-errors-1/compiler-error-c2262.md index ea89e15d348..759b176be2b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2262.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2262.md @@ -16,7 +16,7 @@ The attribute ## Example -The following sample generates C2262. +The following example generates C2262. ```cpp // C2262.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2264.md b/docs/error-messages/compiler-errors-1/compiler-error-c2264.md index 03b2a6fc83b..a5afdee353c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2264.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2264.md @@ -16,7 +16,7 @@ The function cannot be called due to an incorrect definition or declaration. ## Example -The following sample generates C2264: +The following example generates C2264: ```cpp // C2264.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2267.md b/docs/error-messages/compiler-errors-1/compiler-error-c2267.md index b1616b6fba2..0bce7e93ff1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2267.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2267.md @@ -16,7 +16,7 @@ A local function is declared **`static`**. Static functions must have global sco ## Example -The following sample generates C2267: +The following example generates C2267: ```cpp // C2267.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2268.md b/docs/error-messages/compiler-errors-1/compiler-error-c2268.md index 378638e69e4..e7e8fa4de7a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2268.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2268.md @@ -16,7 +16,7 @@ A function defined in your source code has the same name as an internal compiler ## Example -The following sample generates C2268: +The following example generates C2268: ```c // C2268.c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2270.md b/docs/error-messages/compiler-errors-1/compiler-error-c2270.md index b92e5ca8564..5370292d09b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2270.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2270.md @@ -16,7 +16,7 @@ A nonmember function is declared with [const](../../cpp/const-cpp.md), [volatile ## Example -The following sample generates C2270: +The following example generates C2270: ```cpp // C2270.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2271.md b/docs/error-messages/compiler-errors-1/compiler-error-c2271.md index f4078a960cd..b0d632d3f2a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2271.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2271.md @@ -16,7 +16,7 @@ The operator (**`new`** or **`delete`**) is declared with a memory-model specifi ## Example -The following sample generates C2271: +The following example generates C2271: ```cpp // C2271.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2272.md b/docs/error-messages/compiler-errors-1/compiler-error-c2272.md index a6d77a74cc6..8e8057c8106 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2272.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2272.md @@ -16,7 +16,7 @@ A **`static`** member function is declared with a memory-model specifier, such a ## Example -The following sample generates C2272: +The following example generates C2272: ```cpp // C2272.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2273.md b/docs/error-messages/compiler-errors-1/compiler-error-c2273.md index 6f7d7222113..a52ccb9bf4c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2273.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2273.md @@ -18,7 +18,7 @@ This error can be caused by trying to access a user-defined type conversion. Use ## Example -The following sample generates C2273: +The following example generates C2273: ```cpp // C2273.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2274.md b/docs/error-messages/compiler-errors-1/compiler-error-c2274.md index e3d3bbf5168..fc8d2e9f3de 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2274.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2274.md @@ -18,7 +18,7 @@ This error can be caused by trying to access a user-defined type conversion. Use ## Example -The following sample generates C2286: +The following example generates C2286: ```cpp // C2274.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2275.md b/docs/error-messages/compiler-errors-1/compiler-error-c2275.md index 7a482e88734..57a53d295ae 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2275.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2275.md @@ -16,7 +16,7 @@ An expression uses the `->` operator with a **`typedef`** identifier. ## Example -The following sample generates C2275: +The following example generates C2275: ```cpp // C2275.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2276.md b/docs/error-messages/compiler-errors-1/compiler-error-c2276.md index d564a814292..3c9410edcd3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2276.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2276.md @@ -17,7 +17,7 @@ Error `C2276` is often caused when you attempt to create a pointer-to-member by ## Example -This sample shows several ways C2276 may occur, and how to fix them: +This example shows several ways C2276 may occur, and how to fix them: ```cpp // C2276.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2277.md b/docs/error-messages/compiler-errors-1/compiler-error-c2277.md index 8f613cea955..e04c0ddce2b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2277.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2277.md @@ -16,7 +16,7 @@ You cannot take the address of a member function. ## Example -The following sample generates C2277: +The following example generates C2277: ```cpp // C2277.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2279.md b/docs/error-messages/compiler-errors-1/compiler-error-c2279.md index 46fd1de9e7c..7a4f33b9e58 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2279.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2279.md @@ -16,7 +16,7 @@ Under **/Za**, [exception specifications](../../cpp/exception-specifications-thr ## Example -The following sample generates C2279: +The following example generates C2279: ```cpp // C2279.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2283.md b/docs/error-messages/compiler-errors-1/compiler-error-c2283.md index 457c2ac5181..f399bc8b8a4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2283.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2283.md @@ -15,7 +15,7 @@ A member function of an unnamed class or structure is declared with a pure speci ## Example -The following sample generates C2283: +The following example generates C2283: ```cpp // C2283.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2286.md b/docs/error-messages/compiler-errors-1/compiler-error-c2286.md index 38f2682e637..e8288d18f0a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2286.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2286.md @@ -18,7 +18,7 @@ For more information, see [Inheritance Keywords](../../cpp/inheritance-keywords. ## Example -The following sample generates C2286: +The following example generates C2286: ```cpp // C2286.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2287.md b/docs/error-messages/compiler-errors-1/compiler-error-c2287.md index 90eba186ca7..1fa625d5368 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2287.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2287.md @@ -16,7 +16,7 @@ A class is declared with a simpler representation than required. ## Example -The following sample generates C2287: +The following example generates C2287: ```cpp // C2287.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2289.md b/docs/error-messages/compiler-errors-1/compiler-error-c2289.md index 85b9002aafd..b2db59cb3fb 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2289.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2289.md @@ -16,7 +16,7 @@ A type declaration or definition uses a type qualifier (**`const`**, **`volatile ## Example -The following sample generates C2286: +The following example generates C2286: ```cpp // C2289.cpp From d79e4b198150e52721b5b11ba5257f90bbf8f29f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 21 Jul 2025 22:36:18 +0800 Subject: [PATCH 1160/2255] Update metadata for error references in range [C2261, C2290] --- .../error-messages/compiler-errors-1/compiler-error-c2261.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2262.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2264.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2266.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2267.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2268.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2270.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2271.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2272.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2273.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2274.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2275.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2276.md | 2 +- .../error-messages/compiler-errors-1/compiler-error-c2277.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2279.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2280.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2283.md | 2 +- .../error-messages/compiler-errors-1/compiler-error-c2285.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2286.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2287.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2289.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2290.md | 5 ++--- 22 files changed, 42 insertions(+), 62 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2261.md b/docs/error-messages/compiler-errors-1/compiler-error-c2261.md index 4c31a135302..3c27593063d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2261.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2261.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2261" title: "Compiler Error C2261" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2261" +ms.date: 11/04/2016 f1_keywords: ["C2261"] helpviewer_keywords: ["C2261"] -ms.assetid: 60969482-9e83-49b5-9631-a04bc844da12 --- # Compiler Error C2261 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2262.md b/docs/error-messages/compiler-errors-1/compiler-error-c2262.md index 759b176be2b..752d2409f8f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2262.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2262.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2262" title: "Compiler Error C2262" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2262" +ms.date: 11/04/2016 f1_keywords: ["C2262"] helpviewer_keywords: ["C2262"] -ms.assetid: 727d1c6e-53e8-40e5-b7b8-6a7ac2011727 --- # Compiler Error C2262 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2264.md b/docs/error-messages/compiler-errors-1/compiler-error-c2264.md index a5afdee353c..915f27a906d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2264.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2264.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2264" title: "Compiler Error C2264" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2264" +ms.date: 11/04/2016 f1_keywords: ["C2264"] helpviewer_keywords: ["C2264"] -ms.assetid: 158b72cc-cee9-4a08-bd79-b7a5955345a8 --- # Compiler Error C2264 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2266.md b/docs/error-messages/compiler-errors-1/compiler-error-c2266.md index 32e2c9840ba..ecd97db4e0b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2266.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2266.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2266" title: "Compiler Error C2266" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2266" +ms.date: 11/04/2016 f1_keywords: ["C2266"] helpviewer_keywords: ["C2266"] -ms.assetid: 5c267a67-d5a1-4ad7-b6f7-a156510aee35 --- # Compiler Error C2266 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2267.md b/docs/error-messages/compiler-errors-1/compiler-error-c2267.md index 0bce7e93ff1..2393a3ecdbc 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2267.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2267.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2267" title: "Compiler Error C2267" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2267" +ms.date: 11/04/2016 f1_keywords: ["C2267"] helpviewer_keywords: ["C2267"] -ms.assetid: ea63bebb-6208-4367-8440-39be07f9c360 --- # Compiler Error C2267 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2268.md b/docs/error-messages/compiler-errors-1/compiler-error-c2268.md index e7e8fa4de7a..6c77ca44b41 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2268.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2268.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2268" title: "Compiler Error C2268" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2268" +ms.date: 11/04/2016 f1_keywords: ["C2268"] helpviewer_keywords: ["C2268"] -ms.assetid: 0ed055c9-3c6f-4df2-a5b6-85cf0e01a249 --- # Compiler Error C2268 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2270.md b/docs/error-messages/compiler-errors-1/compiler-error-c2270.md index 5370292d09b..d6400d66435 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2270.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2270.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2270" title: "Compiler Error C2270" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2270" +ms.date: 11/04/2016 f1_keywords: ["C2270"] helpviewer_keywords: ["C2270"] -ms.assetid: b52c068e-0b61-42e7-b775-4d57b3ddcba0 --- # Compiler Error C2270 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2271.md b/docs/error-messages/compiler-errors-1/compiler-error-c2271.md index b0d632d3f2a..5cd706b2936 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2271.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2271.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2271" title: "Compiler Error C2271" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2271" +ms.date: 11/04/2016 f1_keywords: ["C2271"] helpviewer_keywords: ["C2271"] -ms.assetid: ea47bf57-f55d-4171-8e98-95a71d62820e --- # Compiler Error C2271 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2272.md b/docs/error-messages/compiler-errors-1/compiler-error-c2272.md index 8e8057c8106..b8915aeab7b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2272.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2272.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2272" title: "Compiler Error C2272" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2272" +ms.date: 11/04/2016 f1_keywords: ["C2272"] helpviewer_keywords: ["C2272"] -ms.assetid: 1517706a-9c27-452e-9b10-3424b3d232bc --- # Compiler Error C2272 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2273.md b/docs/error-messages/compiler-errors-1/compiler-error-c2273.md index a52ccb9bf4c..c1bc46a2c64 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2273.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2273.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2273" title: "Compiler Error C2273" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2273" +ms.date: 11/04/2016 f1_keywords: ["C2273"] helpviewer_keywords: ["C2273"] -ms.assetid: 3c682c66-97bf-4a23-a22c-d9a26a92bf95 --- # Compiler Error C2273 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2274.md b/docs/error-messages/compiler-errors-1/compiler-error-c2274.md index fc8d2e9f3de..67e054c561d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2274.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2274.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2274" title: "Compiler Error C2274" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2274" +ms.date: 11/04/2016 f1_keywords: ["C2274"] helpviewer_keywords: ["C2274"] -ms.assetid: 8e874903-f499-45ef-8291-f821eee4cc1c --- # Compiler Error C2274 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2275.md b/docs/error-messages/compiler-errors-1/compiler-error-c2275.md index 57a53d295ae..b4a3a21d317 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2275.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2275.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2275" title: "Compiler Error C2275" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2275" +ms.date: 11/04/2016 f1_keywords: ["C2275"] helpviewer_keywords: ["C2275"] -ms.assetid: c1eafa71-48de-46e0-82f3-b575538ef205 --- # Compiler Error C2275 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2276.md b/docs/error-messages/compiler-errors-1/compiler-error-c2276.md index 3c9410edcd3..e583d2541cc 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2276.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2276.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler Error C2276" title: "Compiler Error C2276" +description: "Learn more about: Compiler Error C2276" ms.date: 03/25/2021 f1_keywords: ["C2276"] helpviewer_keywords: ["C2276"] diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2277.md b/docs/error-messages/compiler-errors-1/compiler-error-c2277.md index e04c0ddce2b..1f56b60b30e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2277.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2277.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2277" title: "Compiler Error C2277" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2277" +ms.date: 11/04/2016 f1_keywords: ["C2277"] helpviewer_keywords: ["C2277"] -ms.assetid: 15a83b07-8731-4524-810b-267f65a7844f --- # Compiler Error C2277 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2279.md b/docs/error-messages/compiler-errors-1/compiler-error-c2279.md index 7a4f33b9e58..0591321c482 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2279.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2279.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2279" title: "Compiler Error C2279" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2279" +ms.date: 11/04/2016 f1_keywords: ["C2279"] helpviewer_keywords: ["C2279"] -ms.assetid: 1b5c88ef-2336-49b8-9ddb-d61f97c73e14 --- # Compiler Error C2279 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2280.md b/docs/error-messages/compiler-errors-1/compiler-error-c2280.md index f909de66443..c952f212b5e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2280.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2280.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2280" title: "Compiler Error C2280" -ms.date: "04/25/2017" +description: "Learn more about: Compiler Error C2280" +ms.date: 04/25/2017 f1_keywords: ["C2280"] helpviewer_keywords: ["C2280"] -ms.assetid: e6c5b1fb-2b9b-4554-8ff9-775eeb37161b --- # Compiler Error C2280 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2283.md b/docs/error-messages/compiler-errors-1/compiler-error-c2283.md index f399bc8b8a4..8f402a366e2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2283.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2283.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C2283" description: "Learn more about: Compiler Error C2283" -ms.date: "11/04/2016" +ms.date: 11/04/2016 f1_keywords: ["C2283"] helpviewer_keywords: ["C2283"] --- diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2285.md b/docs/error-messages/compiler-errors-1/compiler-error-c2285.md index 4b095d4fcae..d11de7e744b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2285.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2285.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2285" title: "Compiler Error C2285" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2285" +ms.date: 11/04/2016 f1_keywords: ["C2285"] helpviewer_keywords: ["C2285"] -ms.assetid: 7b40a1b0-f477-49fa-b762-c3bccd88514e --- # Compiler Error C2285 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2286.md b/docs/error-messages/compiler-errors-1/compiler-error-c2286.md index e8288d18f0a..81e52facd85 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2286.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2286.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2286" title: "Compiler Error C2286" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2286" +ms.date: 11/04/2016 f1_keywords: ["C2286"] helpviewer_keywords: ["C2286"] -ms.assetid: 078e0201-35cc-42e2-8dbc-6f8cf557b098 --- # Compiler Error C2286 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2287.md b/docs/error-messages/compiler-errors-1/compiler-error-c2287.md index 1fa625d5368..5028b594ce8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2287.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2287.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2287" title: "Compiler Error C2287" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2287" +ms.date: 11/04/2016 f1_keywords: ["C2287"] helpviewer_keywords: ["C2287"] -ms.assetid: 64556299-4e1f-4437-88b7-2464fc0b95bb --- # Compiler Error C2287 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2289.md b/docs/error-messages/compiler-errors-1/compiler-error-c2289.md index b2db59cb3fb..dd43552c14c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2289.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2289.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2289" title: "Compiler Error C2289" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2289" +ms.date: 11/04/2016 f1_keywords: ["C2289"] helpviewer_keywords: ["C2289"] -ms.assetid: cb41a29e-1b06-47dc-bfce-8d73bd63a0df --- # Compiler Error C2289 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2290.md b/docs/error-messages/compiler-errors-1/compiler-error-c2290.md index 6d040d3b2a0..5742c5e234c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2290.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2290.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2290" title: "Compiler Error C2290" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2290" +ms.date: 11/04/2016 f1_keywords: ["C2290"] helpviewer_keywords: ["C2290"] -ms.assetid: 78c0feec-ccde-401b-8335-5b6ea6be8a13 --- # Compiler Error C2290 From 972ac7e7f03cbbe29abfe1c67ebc23771e6d4638 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 22 Jul 2025 14:42:33 -0700 Subject: [PATCH 1161/2255] test uat tool --- docs/assembler/masm/dot-fpo.md | 27 +++++++++--------- ...ing-the-format-of-netmodule-input-files.md | 23 ++++++++------- docs/build/reference/ln-create-msil-module.md | 19 ++++++------- .../safe-cast-cpp-component-extensions.md | 28 +++++++++---------- 4 files changed, 46 insertions(+), 51 deletions(-) diff --git a/docs/assembler/masm/dot-fpo.md b/docs/assembler/masm/dot-fpo.md index 0e523fb9bf1..7c70aab623a 100644 --- a/docs/assembler/masm/dot-fpo.md +++ b/docs/assembler/masm/dot-fpo.md @@ -4,35 +4,34 @@ title: ".FPO" ms.date: "11/05/2019" f1_keywords: [".FPO"] helpviewer_keywords: [".FPO directive"] -ms.assetid: 35f4cd61-32f9-4262-b657-73f04f775d09 --- # .FPO (32-bit MASM) -The **.FPO** directive controls the emission of debug records to the .debug$F segment or section. (32-bit MASM only.) +The `.FPO` directive controls the emission of debug records to the `.debug$F` segment or section. Use this directive with 32-bit MASM only. ## Syntax -> **.FPO** (*cdwLocals*, *cdwParams*, *cbProlog*, *cbRegs*, *fUseBP*, *cbFrame*) +> `.FPO` (*`cdwLocals`*, *`cdwParams`*, *`cbProlog`*, *`cbRegs`*, *`fUseBP`*, *`cbFrame`*) ### Parameters -*cdwLocals*\ -Number of local variables, an unsigned 32 bit value. +*`cdwLocals`*\ +Number of local variables, an unsigned 32-bit value. -*cdwParams*\ -Size of the parameters in DWORDS, an unsigned 16 bit value. +*`cdwParams`*\ +Size of the parameters in DWORDS, an unsigned 16-bit value. -*cbProlog*\ -Number of bytes in the function prolog code, an unsigned 8 bit value. +*`cbProlog`*\ +Number of bytes in the function prolog code, an unsigned 8-bit value. -*cbRegs*\ +*`cbRegs`*\ Number registers saved. -*fUseBP*\ -Indicates whether the EBP register has been allocated. either 0 or 1. +*`fUseBP`*\ +Indicates whether the EBP register is allocated. Use either 0 or 1. -*cbFrame*\ -Indicates the frame type. See [FPO_DATA](/windows/win32/api/winnt/ns-winnt-fpo_data) for more information. +*`cbFrame`*\ +Indicates the frame type. For more information, see [`FPO_DATA`](/windows/win32/api/winnt/ns-winnt-fpo_data). ## See also diff --git a/docs/build/reference/choosing-the-format-of-netmodule-input-files.md b/docs/build/reference/choosing-the-format-of-netmodule-input-files.md index 708f741e6a0..5848e0a8ce2 100644 --- a/docs/build/reference/choosing-the-format-of-netmodule-input-files.md +++ b/docs/build/reference/choosing-the-format-of-netmodule-input-files.md @@ -2,32 +2,31 @@ description: "Learn more about: Choosing the Format of .netmodule Input Files" title: "Choosing the Format of .netmodule Input Files" ms.date: "11/04/2016" -ms.assetid: 4653d1bd-300f-4083-86f5-d1a06f44e61c --- -# Choosing the Format of .netmodule Input Files +# Choosing the format of .netmodule input files -An MSIL .obj file (compiled with [/clr](clr-common-language-runtime-compilation.md)) can also be used as a .netmodule file. .obj files contain metadata and native symbols. .netmodules only contain metadata. +You can use an MSIL `.obj` file (compiled with [`/clr`](clr-common-language-runtime-compilation.md)) as a `.netmodule` file. `.obj` files contain metadata and native symbols. `.netmodules` only contain metadata. -You can pass an MSIL .obj file to any other Visual Studio compiler via the /addmodule compiler option (but be aware that the .obj file becomes part of the resulting assembly and must be shipped with the assembly). For example, Visual C# and Visual Basic have the /addmodule compiler option. +Pass an MSIL `.obj` file to any other Visual Studio compiler with the `/addmodule` compiler option. Be aware that the `.obj` file becomes part of the resulting assembly and must be shipped with the assembly. For example, Visual C# and Visual Basic have the `/addmodule` compiler option. > [!NOTE] -> In most cases, you will need to pass to the linker the .obj file from the compilation that created the .net module. Passing a .dll or .netmodule MSIL module file to the linker may result in LNK1107. +> In most cases, you need to pass to the linker the `.obj` file from the compilation that created the .net module. Passing a `.dll` or `.netmodule` MSIL module file to the linker might result in LNK1107. -.obj files, along with their associated .h files, which you reference via #include in source, allow C++ applications to consume the native types in the module, whereas in a .netmodule file, only the managed types can be consumed by a C++ application. If you attempt to pass a .obj file to #using, information about native types will not be available; #include the .obj file's .h file instead. +`.obj` files, along with their associated `.h` files, which you reference via #include in source, allow C++ applications to consume the native types in the module. In a `.netmodule` file, only the managed types can be consumed by a C++ application. If you attempt to pass a `.obj` file to #using, information about native types isn't available. Instead, #include the `.obj` file's `.h` file. Other Visual Studio compilers can only consume managed types from a module. -Use the following to determine whether you need to use a .netmodule or a .obj file as module input to the MSVC linker: +Use the following guidance to determine whether you need to use a `.netmodule` or a `.obj` file as module input to the MSVC linker: -- If you are building with a Visual Studio compiler other than Visual C++, produce a .netmodule and use the .netmodule as input to the linker. +- If you're building with a Visual Studio compiler other than Visual C++, produce a `.netmodule` and use the `.netmodule` as input to the linker. -- If you are using the MSVC compiler to produce modules and if the module(s) will be used to build something other than a library, use the .obj files produced by the compiler as module input to the linker; do not use the .netmodule file as input. +- If you're using the MSVC compiler to produce modules and if the modules will be used to build something other than a library, use the `.obj` files produced by the compiler as module input to the linker. Don't use the `.netmodule` file as input. -- If your modules will be used to build a native (not a managed) library, use .obj files as module input to the linker and generate a .lib library file. +- If your modules will be used to build a native (not a managed) library, use `.obj` files as module input to the linker and generate a `.lib` library file. -- If your modules will be used to build a managed library, and if all module input to the linker will be verifiable (produced with /clr:safe), use .obj files as module input to the linker and generate a .dll (assembly) or .netmodule (module) library file. +- If your modules will be used to build a managed library, and if all module input to the linker is verifiable (produced with `/clr:safe`), use `.obj` files as module input to the linker and generate a `.dll` (assembly) or `.netmodule` (module) library file. -- If your modules will be used to build a managed library, and if one or more modules input to the linker will be produced with just /clr, use .obj files as module input to the linker and generate a .dll (assembly). If you want to expose managed types from the library and if you also want C++ applications to consume the native types in the library, your library will consist of the .obj files for the libraries component modules (you will also want to ship the .h files for each module, so they can be referenced with #include from source code). +- If your modules will be used to build a managed library, and if one or more modules input to the linker are produced with just `/clr`, use `.obj` files as module input to the linker and generate a `.dll` (assembly). If you want to expose managed types from the library and if you also want C++ applications to consume the native types in the library, your library consists of the `.obj` files for the libraries component modules. You also want to ship the `.h` files for each module, so they can be referenced with #include from source code. ## See also diff --git a/docs/build/reference/ln-create-msil-module.md b/docs/build/reference/ln-create-msil-module.md index c1a892c54b2..b281c6123ee 100644 --- a/docs/build/reference/ln-create-msil-module.md +++ b/docs/build/reference/ln-create-msil-module.md @@ -4,11 +4,10 @@ title: "/LN (Create MSIL Module)" ms.date: "11/04/2016" f1_keywords: ["/LN"] helpviewer_keywords: ["-LN compiler option [C++]", "/LN compiler option [C++]"] -ms.assetid: 4f38f4f4-3176-4caf-8200-5c7585dc1ed3 --- # /LN (Create MSIL Module) -Specifies that an assembly manifest should not be inserted into the output file. +Specifies that the compiler shouldn't insert an assembly manifest into the output file. ## Syntax @@ -18,19 +17,19 @@ Specifies that an assembly manifest should not be inserted into the output file. ## Remarks -By default, **/LN** is not in effect (an assembly manifest is inserted into the output file). +By default, `/LN` isn't in effect, and the compiler inserts an assembly manifest into the output file. -When **/LN** is used, one of the [/clr (Common Language Runtime Compilation)](clr-common-language-runtime-compilation.md) options must also be used. +When you use `/LN`, you must also use one of the [/clr (Common Language Runtime Compilation)](clr-common-language-runtime-compilation.md) options. -A managed program that does not have an assembly metadata in the manifest is called a module. If you compile with [/c (Compile Without Linking)](c-compile-without-linking.md) and **/LN**, specify [/NOASSEMBLY (Create a MSIL Module)](noassembly-create-a-msil-module.md) in the linker phase to create the output file. +A managed program that doesn't have assembly metadata in the manifest is called a module. If you compile with [/c (Compile Without Linking)](c-compile-without-linking.md) and `/LN`, specify [/NOASSEMBLY (Create a MSIL Module)](noassembly-create-a-msil-module.md) in the linker phase to create the output file. -You may want to create modules if you want to take a component-based approach to building assemblies. That is, you can author types and compile them into modules. Then, you can generate an assembly from one or more modules. For more information on creating assemblies from modules, see [.netmodule Files as Linker Input](netmodule-files-as-linker-input.md) or [Al.exe (Assembly Linker)](/dotnet/framework/tools/al-exe-assembly-linker). +Create modules if you want to take a component-based approach to building assemblies. You can author types and compile them into modules. Then, you can generate an assembly from one or more modules. For more information on creating assemblies from modules, see [.netmodule Files as Linker Input](netmodule-files-as-linker-input.md) or [Al.exe (Assembly Linker)](/dotnet/framework/tools/al-exe-assembly-linker). -The default file extension for a module is .netmodule. +The default file extension for a module is `.netmodule`. -In releases before Visual Studio 2005, a module was created with **/clr:noAssembly**. +In releases before Visual Studio 2005, you created a module with `/clr:noAssembly`. -The MSVC linker accepts .netmodule files as input and the output file produced by the linker will be an assembly or .netmodule with no run-time dependence on any of the .netmodules that were input to the linker. For more information, see [.netmodule Files as Linker Input](netmodule-files-as-linker-input.md). +The MSVC linker accepts `.netmodule` files as input. The output file produced by the linker is an assembly or `.netmodule` with no run-time dependence on any of the `.netmodule`s that you input to the linker. For more information, see [.netmodule Files as Linker Input](netmodule-files-as-linker-input.md). ### To set this compiler option in the Visual Studio development environment @@ -38,7 +37,7 @@ The MSVC linker accepts .netmodule files as input and the output file produced b ### To set this compiler option programmatically -- This compiler option cannot be changed programmatically. +- You can't change this compiler option programmatically. ## See also diff --git a/docs/extensions/safe-cast-cpp-component-extensions.md b/docs/extensions/safe-cast-cpp-component-extensions.md index 800fe8605f3..e17456a6427 100644 --- a/docs/extensions/safe-cast-cpp-component-extensions.md +++ b/docs/extensions/safe-cast-cpp-component-extensions.md @@ -5,11 +5,10 @@ ms.date: "10/12/2018" ms.topic: "reference" f1_keywords: ["safe_cast", "safe_cast_cpp", "stdcli::language::safe_cast"] helpviewer_keywords: ["safe_cast keyword [C++]"] -ms.assetid: 4fa688bf-a8ec-49bc-a4c5-f48134efa4f7 --- # safe_cast (C++/CLI and C++/CX) -The **safe_cast** operation returns the specified expression as the specified type, if successful; otherwise, throws `InvalidCastException`. +The **`safe_cast`** operation returns the specified expression as the specified type. If the operation isn't successful, it throws an `InvalidCastException`. ## All Runtimes @@ -23,7 +22,7 @@ The **safe_cast** operation returns the specified expression as the specified ty ## Windows Runtime -**safe_cast** allows you to change the type of a specified expression. In situations where you fully expect a variable or parameter to be convertible to a certain type, you can use **safe_cast** without a **try-catch** block to detect programming errors during development. For more information, see [Casting (C++/CX)](../cppcx/casting-c-cx.md). +Use **`safe_cast`** to change the type of a specified expression. If you expect a variable or parameter to be convertible to a certain type, use **`safe_cast`** without a **try-catch** block to detect programming errors during development. For more information, see [Casting (C++/CX)](../cppcx/casting-c-cx.md). ### Syntax @@ -41,7 +40,7 @@ An expression that evaluates to a handle to a reference or value type, a value t ### Remarks -**safe_cast** throws `InvalidCastException` if it cannot convert *expression* to the type specified by *type-id*. To catch `InvalidCastException`, specify the [/EH (Exception Handling Model)](../build/reference/eh-exception-handling-model.md) compiler option, and use a **try/catch** statement. +**`safe_cast`** throws `InvalidCastException` if it can't convert *expression* to the type specified by *type-id*. To catch `InvalidCastException`, specify the [/EH (Exception Handling Model)](../build/reference/eh-exception-handling-model.md) compiler option, and use a **try/catch** statement. ### Requirements @@ -49,7 +48,7 @@ Compiler option: `/ZW` ### Examples -The following code example demonstrates how to use **safe_cast** with the Windows Runtime. +The following code example demonstrates how to use **`safe_cast`** with the Windows Runtime. ```cpp // safe_cast_ZW.cpp @@ -83,7 +82,7 @@ Caught expected exception: InvalidCastException ## Common Language Runtime -**safe_cast** allows you to change the type of an expression and generate verifiable MSIL code. +**`safe_cast`** changes the type of an expression and generates verifiable MSIL code. ### Syntax @@ -93,30 +92,29 @@ Caught expected exception: InvalidCastException ### Parameters -*type-id*
+*`type-id`*\ A handle to a reference or value type, a value type, or a tracking reference to a reference or value type. -*expression*
+*`expression`* An expression that evaluates to a handle to a reference or value type, a value type, or a tracking reference to a reference or value type. ### Remarks The expression `safe_cast<`*type-id*`>(`*expression*`)` converts the operand *expression* to an object of type *type-id*. -The compiler will accept a [static_cast](../cpp/static-cast-operator.md) in most places that it will accept a **safe_cast**. However, **safe_cast** is guaranteed to produce verifiable MSIL, whereas a **`static_cast`** could produce unverifiable MSIL. See [Pure and Verifiable Code (C++/CLI)](../dotnet/pure-and-verifiable-code-cpp-cli.md) and [Peverify.exe (PEVerify Tool)](/dotnet/framework/tools/peverify-exe-peverify-tool) for more information on verifiable code. +The compiler accepts a [`static_cast`](../cpp/static-cast-operator.md) in most places that it accepts a **`safe_cast`**. However, **`safe_cast`** always produces verifiable MSIL, whereas a **`static_cast`** might produce unverifiable MSIL. For more information on verifiable code, see [Pure and Verifiable Code (C++/CLI)](../dotnet/pure-and-verifiable-code-cpp-cli.md) and [`Peverify.exe` (PEVerify Tool)](/dotnet/framework/tools/peverify-exe-peverify-tool). -Like **`static_cast`**, **safe_cast** invokes user-defined conversions. +Like **`static_cast`**, **`safe_cast`** invokes user-defined conversions. For more information about casts, see [Casting Operators](../cpp/casting-operators.md). -**safe_cast** does not apply a **`const_cast`** (cast away **`const`**). +**`safe_cast`** doesn't apply a **`const_cast`** (cast away **`const`**). -**safe_cast** is in the cli namespace. See [Platform, default, and cli Namespaces](platform-default-and-cli-namespaces-cpp-component-extensions.md) for more information. +**`safe_cast`** is in the cli namespace. For more information, see [Platform, default, and cli Namespaces](platform-default-and-cli-namespaces-cpp-component-extensions.md). -For more information on **safe_cast**, see: +For more information on **`safe_cast`**, see: - [C-Style Casts with /clr (C++/CLI)](c-style-casts-with-clr-cpp-cli.md) - - [How to: Use safe_cast in C++/CLI](../dotnet/how-to-use-safe-cast-in-cpp-cli.md) ### Requirements @@ -125,7 +123,7 @@ Compiler option: `/clr` ### Examples -One example of where the compiler will not accept a **`static_cast`** but will accept a **safe_cast** is for casts between unrelated interface types. With **safe_cast**, the compiler will not issue a conversion error and will perform a check at runtime to see if the cast is possible +One example of where the compiler doesn't accept a **`static_cast`** but accepts a **`safe_cast`** is for casts between unrelated interface types. With **`safe_cast`**, the compiler doesn't issue a conversion error and performs a check at runtime to see if the cast is possible. ```cpp // safe_cast.cpp From 9534150c2ad1465caaf968c5043dfbc0980ddacc Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 22 Jul 2025 15:47:44 -0700 Subject: [PATCH 1162/2255] acrolinx cleanup --- .../choosing-the-format-of-netmodule-input-files.md | 10 +++++----- docs/build/reference/ln-create-msil-module.md | 8 ++++---- docs/extensions/safe-cast-cpp-component-extensions.md | 6 +++--- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/build/reference/choosing-the-format-of-netmodule-input-files.md b/docs/build/reference/choosing-the-format-of-netmodule-input-files.md index 5848e0a8ce2..86c167a0fb5 100644 --- a/docs/build/reference/choosing-the-format-of-netmodule-input-files.md +++ b/docs/build/reference/choosing-the-format-of-netmodule-input-files.md @@ -7,7 +7,7 @@ ms.date: "11/04/2016" You can use an MSIL `.obj` file (compiled with [`/clr`](clr-common-language-runtime-compilation.md)) as a `.netmodule` file. `.obj` files contain metadata and native symbols. `.netmodules` only contain metadata. -Pass an MSIL `.obj` file to any other Visual Studio compiler with the `/addmodule` compiler option. Be aware that the `.obj` file becomes part of the resulting assembly and must be shipped with the assembly. For example, Visual C# and Visual Basic have the `/addmodule` compiler option. +Pass an MSIL `.obj` file to any other Visual Studio compiler with the `/addmodule` compiler option. The `.obj` file becomes part of the resulting assembly and must be shipped with the assembly. For example, Visual C# and Visual Basic have the `/addmodule` compiler option. > [!NOTE] > In most cases, you need to pass to the linker the `.obj` file from the compilation that created the .net module. Passing a `.dll` or `.netmodule` MSIL module file to the linker might result in LNK1107. @@ -20,13 +20,13 @@ Use the following guidance to determine whether you need to use a `.netmodule` o - If you're building with a Visual Studio compiler other than Visual C++, produce a `.netmodule` and use the `.netmodule` as input to the linker. -- If you're using the MSVC compiler to produce modules and if the modules will be used to build something other than a library, use the `.obj` files produced by the compiler as module input to the linker. Don't use the `.netmodule` file as input. +- If you're using the MSVC compiler to produce modules and if the modules are used to build something other than a library, use the `.obj` files produced by the compiler as module input to the linker. Don't use the `.netmodule` file as input. -- If your modules will be used to build a native (not a managed) library, use `.obj` files as module input to the linker and generate a `.lib` library file. +- If your modules are used to build a native (not a managed) library, use `.obj` files as module input to the linker and generate a `.lib` library file. -- If your modules will be used to build a managed library, and if all module input to the linker is verifiable (produced with `/clr:safe`), use `.obj` files as module input to the linker and generate a `.dll` (assembly) or `.netmodule` (module) library file. +- If your modules are used to build a managed library, and if all module input to the linker is verifiable (produced with `/clr:safe`), use `.obj` files as module input to the linker and generate a `.dll` (assembly) or `.netmodule` (module) library file. -- If your modules will be used to build a managed library, and if one or more modules input to the linker are produced with just `/clr`, use `.obj` files as module input to the linker and generate a `.dll` (assembly). If you want to expose managed types from the library and if you also want C++ applications to consume the native types in the library, your library consists of the `.obj` files for the libraries component modules. You also want to ship the `.h` files for each module, so they can be referenced with #include from source code. +- If your modules are used to build a managed library, and if one or more modules input to the linker are produced with just `/clr`, use `.obj` files as module input to the linker and generate a `.dll` (assembly). If you want to expose managed types from the library and if you also want C++ applications to consume the native types in the library, your library consists of the `.obj` files for the libraries component modules. You also want to ship the `.h` files for each module, so they can be referenced with #include from source code. ## See also diff --git a/docs/build/reference/ln-create-msil-module.md b/docs/build/reference/ln-create-msil-module.md index b281c6123ee..b5cd351176f 100644 --- a/docs/build/reference/ln-create-msil-module.md +++ b/docs/build/reference/ln-create-msil-module.md @@ -21,19 +21,19 @@ By default, `/LN` isn't in effect, and the compiler inserts an assembly manifest When you use `/LN`, you must also use one of the [/clr (Common Language Runtime Compilation)](clr-common-language-runtime-compilation.md) options. -A managed program that doesn't have assembly metadata in the manifest is called a module. If you compile with [/c (Compile Without Linking)](c-compile-without-linking.md) and `/LN`, specify [/NOASSEMBLY (Create a MSIL Module)](noassembly-create-a-msil-module.md) in the linker phase to create the output file. +A managed program that doesn't have assembly metadata in the manifest is called a module. If you compile with [/c (Compile Without Linking)](c-compile-without-linking.md) and `/LN`, specify [`/NOASSEMBLY `(Create a MSIL Module)](noassembly-create-a-msil-module.md) in the linker phase to create the output file. -Create modules if you want to take a component-based approach to building assemblies. You can author types and compile them into modules. Then, you can generate an assembly from one or more modules. For more information on creating assemblies from modules, see [.netmodule Files as Linker Input](netmodule-files-as-linker-input.md) or [Al.exe (Assembly Linker)](/dotnet/framework/tools/al-exe-assembly-linker). +Create modules if you want to take a component-based approach to building assemblies. You can author types and compile them into modules. Then, you can generate an assembly from one or more modules. For more information on creating assemblies from modules, see [`.netmodule` Files as Linker Input](netmodule-files-as-linker-input.md) or [`Al.exe `(Assembly Linker)](/dotnet/framework/tools/al-exe-assembly-linker). The default file extension for a module is `.netmodule`. In releases before Visual Studio 2005, you created a module with `/clr:noAssembly`. -The MSVC linker accepts `.netmodule` files as input. The output file produced by the linker is an assembly or `.netmodule` with no run-time dependence on any of the `.netmodule`s that you input to the linker. For more information, see [.netmodule Files as Linker Input](netmodule-files-as-linker-input.md). +The MSVC linker accepts `.netmodule` files as input. The output file produced by the linker is an assembly or `.netmodule` with no run-time dependence on any of the `.netmodule`s that you input to the linker. For more information, see [`.netmodule `Files as Linker Input](netmodule-files-as-linker-input.md). ### To set this compiler option in the Visual Studio development environment -- Specify [/NOASSEMBLY (Create a MSIL Module)](noassembly-create-a-msil-module.md) in the linker phase to create the output file. +- Specify [`/NOASSEMBLY` (Create a MSIL Module)](noassembly-create-a-msil-module.md) in the linker phase to create the output file. ### To set this compiler option programmatically diff --git a/docs/extensions/safe-cast-cpp-component-extensions.md b/docs/extensions/safe-cast-cpp-component-extensions.md index e17456a6427..a35a3a2af94 100644 --- a/docs/extensions/safe-cast-cpp-component-extensions.md +++ b/docs/extensions/safe-cast-cpp-component-extensions.md @@ -102,7 +102,7 @@ An expression that evaluates to a handle to a reference or value type, a value t The expression `safe_cast<`*type-id*`>(`*expression*`)` converts the operand *expression* to an object of type *type-id*. -The compiler accepts a [`static_cast`](../cpp/static-cast-operator.md) in most places that it accepts a **`safe_cast`**. However, **`safe_cast`** always produces verifiable MSIL, whereas a **`static_cast`** might produce unverifiable MSIL. For more information on verifiable code, see [Pure and Verifiable Code (C++/CLI)](../dotnet/pure-and-verifiable-code-cpp-cli.md) and [`Peverify.exe` (PEVerify Tool)](/dotnet/framework/tools/peverify-exe-peverify-tool). +The compiler accepts a [`static_cast`](../cpp/static-cast-operator.md) in most places that it accepts a **`safe_cast`**. However, **`safe_cast`** always produces verifiable MSIL, whereas a **`static_cast`** might produce unverifiable MSIL. For more information on verifiable code, see [Pure and Verifiable Code (C++/CLI)](../dotnet/pure-and-verifiable-code-cpp-cli.md) and [`Peverify.exe` (PEVerify Tool)](/dotnet/framework/tools/peverify-exe-peverify-tool). Like **`static_cast`**, **`safe_cast`** invokes user-defined conversions. @@ -110,7 +110,7 @@ For more information about casts, see [Casting Operators](../cpp/casting-operato **`safe_cast`** doesn't apply a **`const_cast`** (cast away **`const`**). -**`safe_cast`** is in the cli namespace. For more information, see [Platform, default, and cli Namespaces](platform-default-and-cli-namespaces-cpp-component-extensions.md). +**`safe_cast`** is in the cli namespace. For more information, see [Platform, default, and cli Namespaces](platform-default-and-cli-namespaces-cpp-component-extensions.md). For more information on **`safe_cast`**, see: @@ -123,7 +123,7 @@ Compiler option: `/clr` ### Examples -One example of where the compiler doesn't accept a **`static_cast`** but accepts a **`safe_cast`** is for casts between unrelated interface types. With **`safe_cast`**, the compiler doesn't issue a conversion error and performs a check at runtime to see if the cast is possible. +One example of where the compiler doesn't accept a **`static_cast`** but accepts a **`safe_cast`** is for casts between unrelated interface types. With **`safe_cast`**, the compiler doesn't issue a conversion error and performs a check at runtime to see if the cast is possible. ```cpp // safe_cast.cpp From 2505f9d99f8b58f18010712174aafccb9646de8f Mon Sep 17 00:00:00 2001 From: David Justo Date: Tue, 22 Jul 2025 16:00:36 -0700 Subject: [PATCH 1163/2255] [tidy] replace `.00` with `.0` --- docs/overview/compiler-versions.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/overview/compiler-versions.md b/docs/overview/compiler-versions.md index 57c03deb47b..48e89639046 100644 --- a/docs/overview/compiler-versions.md +++ b/docs/overview/compiler-versions.md @@ -86,12 +86,12 @@ The following table lists the Visual C++ compiler `_MSC_VER` for each correspond | Visual Studio 6.0 | 1200 | 6.0 | | Visual Studio .NET 2002 (7.0) | 1300 | 7.0 | | Visual Studio .NET 2003 (7.1) | 1310 | 7.1 | -| Visual Studio 2005 (8.0) | 1400 | 8.00 | -| Visual Studio 2008 (9.0) | 1500 | 9.00 | -| Visual Studio 2010 (10.0) | 1600 | 10.00 | -| Visual Studio 2012 (11.0) | 1700 | 11.00 | -| Visual Studio 2013 (12.0) | 1800 | 12.00 | -| Visual Studio 2015 (14.0) | 1900 | 14.00 | +| Visual Studio 2005 (8.0) | 1400 | 8.0 | +| Visual Studio 2008 (9.0) | 1500 | 9.0 | +| Visual Studio 2010 (10.0) | 1600 | 10.0 | +| Visual Studio 2012 (11.0) | 1700 | 11.0 | +| Visual Studio 2013 (12.0) | 1800 | 12.0 | +| Visual Studio 2015 (14.0) | 1900 | 14.0 | | Visual Studio 2017 RTW (15.0) | 1910 | 14.10 | | Visual Studio 2017 version 15.3 | 1911 | 14.11 | | Visual Studio 2017 version 15.5 | 1912 | 14.12 | From aefc04ac47ff181da793be5cf03d3e72ccec7577 Mon Sep 17 00:00:00 2001 From: David Justo Date: Tue, 22 Jul 2025 16:03:09 -0700 Subject: [PATCH 1164/2255] [tidy] have the table description list the columns in the same order as they're shown --- docs/overview/compiler-versions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/compiler-versions.md b/docs/overview/compiler-versions.md index 48e89639046..e9455ef10a9 100644 --- a/docs/overview/compiler-versions.md +++ b/docs/overview/compiler-versions.md @@ -79,7 +79,7 @@ When the major version changed between Visual Studio 2013 and Visual Studio 2015 An example of a minor change is from Visual Studio 2022 17.1 to Visual Studio 2022 17.2. In that case, `_MSC_VER` changed from 1931 to 1932. -The following table lists the Visual C++ compiler `_MSC_VER` for each corresponding Visual Studio and MSVC toolset release: +The following table lists the Visual Studio version corresponding to each Visual C++ compiler (`_MSC_VER`), and MSVC toolset release: | Visual Studio version | `_MSC_VER` | MSVC toolset version | |--|--|--| From 572dad41bf856c221ee0d7502119756b480ec7c7 Mon Sep 17 00:00:00 2001 From: David Justo Date: Tue, 22 Jul 2025 16:11:46 -0700 Subject: [PATCH 1165/2255] [tidy] remove bogus comma --- docs/overview/compiler-versions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/compiler-versions.md b/docs/overview/compiler-versions.md index e9455ef10a9..b167daf2351 100644 --- a/docs/overview/compiler-versions.md +++ b/docs/overview/compiler-versions.md @@ -79,7 +79,7 @@ When the major version changed between Visual Studio 2013 and Visual Studio 2015 An example of a minor change is from Visual Studio 2022 17.1 to Visual Studio 2022 17.2. In that case, `_MSC_VER` changed from 1931 to 1932. -The following table lists the Visual Studio version corresponding to each Visual C++ compiler (`_MSC_VER`), and MSVC toolset release: +The following table lists the Visual Studio version corresponding to each Visual C++ compiler (`_MSC_VER`) and MSVC toolset release: | Visual Studio version | `_MSC_VER` | MSVC toolset version | |--|--|--| From 799ba57d2bb69449c37f03f13969fe1214fdea3f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 24 Jul 2025 21:21:36 +0800 Subject: [PATCH 1166/2255] Resolve mismatched "lt" and "gt" operator links --- docs/mfc/windows-sockets-example-of-sockets-using-archives.md | 2 +- docs/parallel/concrt/reference/concurrency-namespace.md | 2 +- docs/standard-library/deque.md | 2 +- docs/standard-library/forward-list.md | 2 +- docs/standard-library/iterator.md | 2 +- docs/standard-library/list.md | 2 +- docs/standard-library/memory.md | 2 +- docs/standard-library/optional.md | 2 +- docs/standard-library/queue.md | 2 +- docs/standard-library/regex.md | 2 +- docs/standard-library/utility.md | 2 +- docs/standard-library/variant.md | 2 +- docs/standard-library/vector.md | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/mfc/windows-sockets-example-of-sockets-using-archives.md b/docs/mfc/windows-sockets-example-of-sockets-using-archives.md index bd76e3b6f35..c97e8c3d0ca 100644 --- a/docs/mfc/windows-sockets-example-of-sockets-using-archives.md +++ b/docs/mfc/windows-sockets-example-of-sockets-using-archives.md @@ -50,6 +50,6 @@ For more information, see Windows Sockets Specification: **htonl**, **htons**, * [Windows Sockets in MFC](../mfc/windows-sockets-in-mfc.md)
[CArchive::IsStoring](../mfc/reference/carchive-class.md#isstoring)
[CArchive::operator <<](../mfc/reference/carchive-class.md#operator_lt_lt)
-[CArchive::operator >>](../mfc/reference/carchive-class.md#operator_lt_lt)
+[CArchive::operator >>](../mfc/reference/carchive-class.md#operator_gt_gt)
[CArchive::Flush](../mfc/reference/carchive-class.md#flush)
[CObject::Serialize](../mfc/reference/cobject-class.md#serialize) diff --git a/docs/parallel/concrt/reference/concurrency-namespace.md b/docs/parallel/concrt/reference/concurrency-namespace.md index a336049731c..4f5a100c3aa 100644 --- a/docs/parallel/concrt/reference/concurrency-namespace.md +++ b/docs/parallel/concrt/reference/concurrency-namespace.md @@ -208,7 +208,7 @@ namespace concurrency; |[operator<=](concurrency-namespace-operators.md#operator_lt_eq)|Tests if the `concurrent_vector` object on the left side of the operator is less than or equal to the `concurrent_vector` object on the right side.| |[operator==](concurrency-namespace-operators.md#operator_eq_eq)|Tests if the `concurrent_vector` object on the left side of the operator is equal to the `concurrent_vector` object on the right side.| |[operator>](concurrency-namespace-operators.md#operator_gt)|Tests if the `concurrent_vector` object on the left side of the operator is greater than the `concurrent_vector` object on the right side.| -|[operator>=](concurrency-namespace-operators.md#operator_lt_eq)|Tests if the `concurrent_vector` object on the left side of the operator is greater than or equal to the `concurrent_vector` object on the right side.| +|[operator>=](concurrency-namespace-operators.md#operator_gt_eq)|Tests if the `concurrent_vector` object on the left side of the operator is greater than or equal to the `concurrent_vector` object on the right side.| ### Constants diff --git a/docs/standard-library/deque.md b/docs/standard-library/deque.md index 4a56c8107b7..2f728d94aee 100644 --- a/docs/standard-library/deque.md +++ b/docs/standard-library/deque.md @@ -25,7 +25,7 @@ Defines the container class template deque and several supporting templates. |-|-| |[operator!=](../standard-library/deque-operators.md#op_neq)|Tests if the deque object on the left side of the operator is not equal to the deque object on the right side.| |[operator<](../standard-library/deque-operators.md#op_lt)|Tests if the deque object on the left side of the operator is less than the deque object on the right side.| -|[operator\<=](../standard-library/deque-operators.md#op_gt_eq)|Tests if the deque object on the left side of the operator is less than or equal to the deque object on the right side.| +|[operator\<=](../standard-library/deque-operators.md#op_lt_eq)|Tests if the deque object on the left side of the operator is less than or equal to the deque object on the right side.| |[operator==](../standard-library/deque-operators.md#op_eq_eq)|Tests if the deque object on the left side of the operator is equal to the deque object on the right side.| |[operator>](../standard-library/deque-operators.md#op_gt)|Tests if the deque object on the left side of the operator is greater than the deque object on the right side.| |[operator>=](../standard-library/deque-operators.md#op_gt_eq)|Tests if the deque object on the left side of the operator is greater than or equal to the deque object on the right side.| diff --git a/docs/standard-library/forward-list.md b/docs/standard-library/forward-list.md index c7400192b6a..861fd7f512c 100644 --- a/docs/standard-library/forward-list.md +++ b/docs/standard-library/forward-list.md @@ -30,7 +30,7 @@ Defines the container class template forward_list and several supporting templat |[operator<](../standard-library/forward-list-operators.md#op_lt)|Tests if the forward list object on the left side of the operator is less than the forward list object on the right side.| |[operator<=](../standard-library/forward-list-operators.md#op_lt_eq)|Tests if the forward list object on the left side of the operator is less than or equal to the forward list object on the right side.| |[operator>](../standard-library/forward-list-operators.md#op_gt)|Tests if the forward list object on the left side of the operator is greater than the forward list object on the right side.| -|[operator>=](../standard-library/forward-list-operators.md#op_lt_eq)|Tests if the forward list object on the left side of the operator is greater than or equal to the forward list object on the right side.| +|[operator>=](../standard-library/forward-list-operators.md#op_gt_eq)|Tests if the forward list object on the left side of the operator is greater than or equal to the forward list object on the right side.| ### Functions diff --git a/docs/standard-library/iterator.md b/docs/standard-library/iterator.md index 4c87768cbf0..f5ac9540c1b 100644 --- a/docs/standard-library/iterator.md +++ b/docs/standard-library/iterator.md @@ -58,7 +58,7 @@ Visual Studio has added extensions to C++ Standard Library iterators to support |[`operator!=`](../standard-library/iterator-operators.md#op_neq)|Tests if the iterator object on the left side of the operator isn't equal to the iterator object on the right side.| |[`operator==`](../standard-library/iterator-operators.md#op_eq_eq)|Tests if the iterator object on the left side of the operator is equal to the iterator object on the right side.| |[`operator<`](../standard-library/iterator-operators.md#op_lt)|Tests if the iterator object on the left side of the operator is less than the iterator object on the right side.| -|[`operator<=`](../standard-library/iterator-operators.md#op_gt_eq)|Tests if the iterator object on the left side of the operator is less than or equal to the iterator object on the right side.| +|[`operator<=`](../standard-library/iterator-operators.md#op_lt_eq)|Tests if the iterator object on the left side of the operator is less than or equal to the iterator object on the right side.| |[`operator>`](../standard-library/iterator-operators.md#op_gt)|Tests if the iterator object on the left side of the operator is greater than the iterator object on the right side.| |[`operator>=`](../standard-library/iterator-operators.md#op_gt_eq)|Tests if the iterator object on the left side of the operator is greater than or equal to the iterator object on the right side.| |[`operator+`](../standard-library/iterator-operators.md#op_add)|Adds an offset to an iterator and returns the new `reverse_iterator` addressing the inserted element at the new offset position.| diff --git a/docs/standard-library/list.md b/docs/standard-library/list.md index 389e03c2301..14baffd00a2 100644 --- a/docs/standard-library/list.md +++ b/docs/standard-library/list.md @@ -27,7 +27,7 @@ Defines the container class template list and several supporting templates. |-|-| |[operator!=](../standard-library/list-operators.md#op_neq)|Tests if the list object on the left side of the operator is not equal to the list object on the right side.| |[operator<](../standard-library/list-operators.md#op_lt)|Tests if the list object on the left side of the operator is less than the list object on the right side.| -|[operator\<=](../standard-library/list-operators.md#op_gt_eq)|Tests if the list object on the left side of the operator is less than or equal to the list object on the right side.| +|[operator\<=](../standard-library/list-operators.md#op_lt_eq)|Tests if the list object on the left side of the operator is less than or equal to the list object on the right side.| |[operator==](../standard-library/list-operators.md#op_eq_eq)|Tests if the list object on the left side of the operator is equal to the list object on the right side.| |[operator>](../standard-library/list-operators.md#op_gt)|Tests if the list object on the left side of the operator is greater than the list object on the right side.| |[operator>=](../standard-library/list-operators.md#op_gt_eq)|Tests if the list object on the left side of the operator is greater than or equal to the list object on the right side.| diff --git a/docs/standard-library/memory.md b/docs/standard-library/memory.md index 336706d3f92..9395bda7406 100644 --- a/docs/standard-library/memory.md +++ b/docs/standard-library/memory.md @@ -74,7 +74,7 @@ Defines a class, an operator, and several templates that help allocate and free |[operator==](../standard-library/memory-operators.md#op_eq_eq)|Tests for equality between allocator objects of a specified class.| |[operator>=](../standard-library/memory-operators.md#op_gt_eq)|Tests for one allocator object being greater than or equal to a second allocator object, of a specified class.| |[operator<](../standard-library/memory-operators.md#op_lt)|Tests for one object being less than a second object of a specified class.| -|[operator\<=](../standard-library/memory-operators.md#op_gt_eq)|Tests for one object being less than or equal to a second object of a specified class.| +|[operator\<=](../standard-library/memory-operators.md#op_lt_eq)|Tests for one object being less than or equal to a second object of a specified class.| |[operator>](../standard-library/memory-operators.md#op_gt)|Tests for one object being greater than a second object of a specified class.| |[operator<<](../standard-library/memory-operators.md#op_lt_lt)|`shared_ptr` inserter.| diff --git a/docs/standard-library/optional.md b/docs/standard-library/optional.md index 776d8b5da68..0bfa38327bc 100644 --- a/docs/standard-library/optional.md +++ b/docs/standard-library/optional.md @@ -26,7 +26,7 @@ Defines the container class template `optional` and several supporting templates |[operator<](../standard-library/optional-operators.md#op_lt)|Tests if the object on the left is less than the object on the right.| |[operator<=](../standard-library/optional-operators.md#op_lt_eq)|Tests if the object on the left is less than or equal to the object on the right.| |[operator>](../standard-library/optional-operators.md#op_gt)|Tests if the object on the left is greater than the object on the right.| -|[operator>=](../standard-library/optional-operators.md#op_lt_eq)|Tests if the object on the left is greater than or equal to the object on the right.| +|[operator>=](../standard-library/optional-operators.md#op_gt_eq)|Tests if the object on the left is greater than or equal to the object on the right.| > [!NOTE] > In addition to relational compares, \ operators also support comparison with **nullopt** and `T`. diff --git a/docs/standard-library/queue.md b/docs/standard-library/queue.md index cd1709709b5..f6b35149a9c 100644 --- a/docs/standard-library/queue.md +++ b/docs/standard-library/queue.md @@ -27,7 +27,7 @@ Defines the class templates priority_queue and queue and several supporting temp |-|-| |[operator!=](../standard-library/queue-operators.md#op_neq)|Tests if the queue object on the left side of the operator is not equal to the queue object on the right side.| |[operator<](../standard-library/queue-operators.md#op_lt)|Tests if the queue object on the left side of the operator is less than the queue object on the right side.| -|[operator\<=](../standard-library/queue-operators.md#op_gt_eq)|Tests if the queue object on the left side of the operator is less than or equal to the queue object on the right side.| +|[operator\<=](../standard-library/queue-operators.md#op_lt_eq)|Tests if the queue object on the left side of the operator is less than or equal to the queue object on the right side.| |[operator==](../standard-library/queue-operators.md#op_eq_eq)|Tests if the queue object on the left side of the operator is equal to the queue object on the right side.| |[operator>](../standard-library/queue-operators.md#op_gt)|Tests if the queue object on the left side of the operator is greater than the queue object on the right side.| |[operator>=](../standard-library/queue-operators.md#op_gt_eq)|Tests if the queue object on the left side of the operator is greater than or equal to the queue object on the right side.| diff --git a/docs/standard-library/regex.md b/docs/standard-library/regex.md index afa6499a175..7a11ed48c83 100644 --- a/docs/standard-library/regex.md +++ b/docs/standard-library/regex.md @@ -81,7 +81,7 @@ To modify the details of the grammar of regular expressions, write a class that |[`operator==`](../standard-library/regex-operators.md#op_eq_eq)|Comparison of various objects, equal.| |[`operator!=`](../standard-library/regex-operators.md#op_neq)|Comparison of various objects, not equal.| |[`operator<`](../standard-library/regex-operators.md#op_lt)|Comparison of various objects, less than.| -|[`operator<=`](../standard-library/regex-operators.md#op_gt_eq)|Comparison of various objects, less than or equal.| +|[`operator<=`](../standard-library/regex-operators.md#op_lt_eq)|Comparison of various objects, less than or equal.| |[`operator>`](../standard-library/regex-operators.md#op_gt)|Comparison of various objects, greater than.| |[`operator>=`](../standard-library/regex-operators.md#op_gt_eq)|Comparison of various objects, greater than or equal.| |[`operator<<`](../standard-library/regex-operators.md#op_lt_lt)|Inserts a `sub_match` in a stream.| diff --git a/docs/standard-library/utility.md b/docs/standard-library/utility.md index 266e9840994..e5a97610778 100644 --- a/docs/standard-library/utility.md +++ b/docs/standard-library/utility.md @@ -61,7 +61,7 @@ Pairs are widely used in the C++ Standard Library. They're required both as the |[`operator!=`](../standard-library/utility-operators.md#op_neq)|Tests if the pair object on the left side of the operator isn't equal to the pair object on the right side.| |[`operator==`](../standard-library/utility-operators.md#op_eq_eq)|Tests if the pair object on the left side of the operator is equal to the pair object on the right side.| |[`operator<`](../standard-library/utility-operators.md#op_lt)|Tests if the pair object on the left side of the operator is less than the pair object on the right side.| -|[`operator<=`](../standard-library/utility-operators.md#op_gt_eq)|Tests if the pair object on the left side of the operator is less than or equal to the pair object on the right side.| +|[`operator<=`](../standard-library/utility-operators.md#op_lt_eq)|Tests if the pair object on the left side of the operator is less than or equal to the pair object on the right side.| |[`operator>`](../standard-library/utility-operators.md#op_gt)|Tests if the pair object on the left side of the operator is greater than the pair object on the right side.| |[`operator>=`](../standard-library/utility-operators.md#op_gt_eq)|Tests if the pair object on the left side of the operator is greater than or equal to the pair object on the right side.| diff --git a/docs/standard-library/variant.md b/docs/standard-library/variant.md index 9be7549e0ec..be23f0f5b0d 100644 --- a/docs/standard-library/variant.md +++ b/docs/standard-library/variant.md @@ -26,7 +26,7 @@ A variant object holds and manages a value. If the variant holds a value, that v |[operator<](../standard-library/forward-list-operators.md#op_lt)|Tests if the variant object on the left side of the operator is less than the variant object on the right side.| |[operator<=](../standard-library/forward-list-operators.md#op_lt_eq)|Tests if the variant object on the left side of the operator is less than or equal to the variant object on the right side.| |[operator>](../standard-library/forward-list-operators.md#op_gt)|Tests if the variant object on the left side of the operator is greater than the variant object on the right side.| -|[operator>=](../standard-library/forward-list-operators.md#op_lt_eq)|Tests if the variant object on the left side of the operator is greater than or equal to the variant object on the right side.| +|[operator>=](../standard-library/forward-list-operators.md#op_gt_eq)|Tests if the variant object on the left side of the operator is greater than or equal to the variant object on the right side.| ### Functions diff --git a/docs/standard-library/vector.md b/docs/standard-library/vector.md index f9dd7af32e4..22ea3970ae5 100644 --- a/docs/standard-library/vector.md +++ b/docs/standard-library/vector.md @@ -89,7 +89,7 @@ The second (right) vector in a compare operation. |-|-| |[`operator! =`](../standard-library/vector-operators.md#op_neq)|Tests if the `vector` object on the left side of the operator isn't equal to the `vector` object on the right side.| |[`operator<`](../standard-library/vector-operators.md#op_lt)|Tests if the `vector` object on the left side of the operator is less than the `vector` object on the right side.| -|[`operator<=`](../standard-library/vector-operators.md#op_gt_eq)|Tests if the `vector` object on the left side of the operator is less than or equal to the `vector` object on the right side.| +|[`operator<=`](../standard-library/vector-operators.md#op_lt_eq)|Tests if the `vector` object on the left side of the operator is less than or equal to the `vector` object on the right side.| |[`operator==`](../standard-library/vector-operators.md#op_eq_eq)|Tests if the `vector` object on the left side of the operator is equal to the `vector` object on the right side.| |[`operator>`](../standard-library/vector-operators.md#op_gt)|Tests if the `vector` object on the left side of the operator is greater than the `vector` object on the right side.| |[`operator>=`](../standard-library/vector-operators.md#op_gt_eq)|Tests if the `vector` object on the left side of the operator is greater than or equal to the `vector` object on the right side.| From a24ed92bf9833ec9af347273f8be654b7101fab6 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 24 Jul 2025 21:26:42 +0800 Subject: [PATCH 1167/2255] Update metadata in 11 topics --- .../mfc/windows-sockets-example-of-sockets-using-archives.md | 5 ++--- docs/parallel/concrt/reference/concurrency-namespace.md | 5 ++--- docs/standard-library/deque.md | 5 ++--- docs/standard-library/forward-list.md | 5 ++--- docs/standard-library/list.md | 5 ++--- docs/standard-library/memory.md | 4 ++-- docs/standard-library/optional.md | 4 ++-- docs/standard-library/queue.md | 5 ++--- docs/standard-library/utility.md | 2 +- docs/standard-library/variant.md | 4 ++-- docs/standard-library/vector.md | 4 ++-- 11 files changed, 21 insertions(+), 27 deletions(-) diff --git a/docs/mfc/windows-sockets-example-of-sockets-using-archives.md b/docs/mfc/windows-sockets-example-of-sockets-using-archives.md index c97e8c3d0ca..89e332528ba 100644 --- a/docs/mfc/windows-sockets-example-of-sockets-using-archives.md +++ b/docs/mfc/windows-sockets-example-of-sockets-using-archives.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Windows Sockets: Example of Sockets Using Archives" title: "Windows Sockets: Example of Sockets Using Archives" -ms.date: "11/04/2016" +description: "Learn more about: Windows Sockets: Example of Sockets Using Archives" +ms.date: 11/04/2016 helpviewer_keywords: ["sockets [MFC], with archives", "examples [MFC], Windows Sockets", "Windows Sockets [MFC], with archives"] -ms.assetid: 2e3c9bb2-7e7b-4f28-8dc5-6cb7a484edac --- # Windows Sockets: Example of Sockets Using Archives diff --git a/docs/parallel/concrt/reference/concurrency-namespace.md b/docs/parallel/concrt/reference/concurrency-namespace.md index 4f5a100c3aa..db453f19ce6 100644 --- a/docs/parallel/concrt/reference/concurrency-namespace.md +++ b/docs/parallel/concrt/reference/concurrency-namespace.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: concurrency Namespace" title: "concurrency Namespace" -ms.date: "11/04/2016" +description: "Learn more about: concurrency Namespace" +ms.date: 11/04/2016 f1_keywords: ["concurrent_priority_queue/concurrency", "agents/concurrency", "concurrent_vector/concurrency", "concrt/concurrency", "internal_split_ordered_list/concurrency", "concurrent_queue/concurrency", "pplcancellation_token/concurrency", "pplinterface/concurrency", "ppltasks/concurrency", "ppl/concurrency", "concurrent_unordered_map/concurrency", "concrtrm/concurrency", "concurrent_unordered_set/concurrency", "pplconcrt/concurrency", "internal_concurrent_hash/concurrency"] helpviewer_keywords: ["Concurrency namespace"] -ms.assetid: f1d33ca2-679b-4442-b140-22a9d9df61d1 --- # concurrency Namespace diff --git a/docs/standard-library/deque.md b/docs/standard-library/deque.md index 2f728d94aee..30e85cc0034 100644 --- a/docs/standard-library/deque.md +++ b/docs/standard-library/deque.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: " title: "" -ms.date: "11/04/2016" +description: "Learn more about: " +ms.date: 11/04/2016 f1_keywords: [""] helpviewer_keywords: ["deque header"] -ms.assetid: 4521fe92-5a91-4853-9e9f-59600bf9e46f --- # `` diff --git a/docs/standard-library/forward-list.md b/docs/standard-library/forward-list.md index 861fd7f512c..3a614d21840 100644 --- a/docs/standard-library/forward-list.md +++ b/docs/standard-library/forward-list.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: " title: "" -ms.date: "11/04/2016" +description: "Learn more about: " +ms.date: 11/04/2016 f1_keywords: [""] helpviewer_keywords: [""] -ms.assetid: 8b4ab09e-1475-434a-b4e0-fdbc07a08b5b --- # `` diff --git a/docs/standard-library/list.md b/docs/standard-library/list.md index 14baffd00a2..6d8ef3944f2 100644 --- a/docs/standard-library/list.md +++ b/docs/standard-library/list.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: " title: "" -ms.date: "11/04/2016" +description: "Learn more about: " +ms.date: 11/04/2016 f1_keywords: [""] helpviewer_keywords: ["list header"] -ms.assetid: 2345823b-5612-44d8-95d3-aa96ed076d17 --- # `` diff --git a/docs/standard-library/memory.md b/docs/standard-library/memory.md index 9395bda7406..5e3a65200e2 100644 --- a/docs/standard-library/memory.md +++ b/docs/standard-library/memory.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: " title: "" -ms.date: "08/04/2019" +description: "Learn more about: " +ms.date: 08/04/2019 f1_keywords: [""] helpviewer_keywords: ["memory header"] --- diff --git a/docs/standard-library/optional.md b/docs/standard-library/optional.md index 0bfa38327bc..5a632e0931e 100644 --- a/docs/standard-library/optional.md +++ b/docs/standard-library/optional.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: " title: "" -ms.date: "08/06/2019" +description: "Learn more about: " +ms.date: 08/06/2019 f1_keywords: [""] helpviewer_keywords: [""] --- diff --git a/docs/standard-library/queue.md b/docs/standard-library/queue.md index f6b35149a9c..f580355a8eb 100644 --- a/docs/standard-library/queue.md +++ b/docs/standard-library/queue.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: " title: "" -ms.date: "11/04/2016" +description: "Learn more about: " +ms.date: 11/04/2016 f1_keywords: [""] helpviewer_keywords: ["queue header"] -ms.assetid: 24fcf350-eb0e-48cf-9fef-978be1aeda1f --- # `` diff --git a/docs/standard-library/utility.md b/docs/standard-library/utility.md index e5a97610778..c522bcbcd3f 100644 --- a/docs/standard-library/utility.md +++ b/docs/standard-library/utility.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: " title: "" +description: "Learn more about: " ms.date: 11/14/2024 f1_keywords: [""] helpviewer_keywords: ["utility header"] diff --git a/docs/standard-library/variant.md b/docs/standard-library/variant.md index be23f0f5b0d..a61bd4e8bba 100644 --- a/docs/standard-library/variant.md +++ b/docs/standard-library/variant.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: " title: "" -ms.date: "04/04/2019" +description: "Learn more about: " +ms.date: 04/04/2019 f1_keywords: [""] helpviewer_keywords: [""] --- diff --git a/docs/standard-library/vector.md b/docs/standard-library/vector.md index 22ea3970ae5..ab97e690485 100644 --- a/docs/standard-library/vector.md +++ b/docs/standard-library/vector.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: " title: "" -ms.date: "11/04/2016" +description: "Learn more about: " +ms.date: 11/04/2016 f1_keywords: [""] helpviewer_keywords: ["vector header"] --- From 6a31d5fa2e57e7c509df1793d31653a87377758f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 24 Jul 2025 21:43:31 +0800 Subject: [PATCH 1168/2255] Add blockquotes for error messages in range [C2351, C2380] --- docs/error-messages/compiler-errors-1/compiler-error-c2351.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2352.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2353.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2355.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2356.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2357.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2360.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2361.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2364.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2365.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2368.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2369.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2370.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2371.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2373.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2374.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2375.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2376.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2377.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2378.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2379.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2380.md | 2 +- 22 files changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2351.md b/docs/error-messages/compiler-errors-1/compiler-error-c2351.md index cb65e6f46a4..53d8a32c82a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2351.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2351.md @@ -8,7 +8,7 @@ ms.assetid: 5439ccf6-66f6-4859-964c-c73f5eddfc1b --- # Compiler Error C2351 -obsolete C++ constructor initialization syntax +> obsolete C++ constructor initialization syntax In a new-style initialization list for a constructor, you must explicitly name each direct base class, even if it is the only base class. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2352.md b/docs/error-messages/compiler-errors-1/compiler-error-c2352.md index 54c319840ee..8555ab77211 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2352.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2352.md @@ -8,7 +8,7 @@ ms.assetid: 0efad8cb-659f-4b3e-8f6f-9f8ec44d345c --- # Compiler Error C2352 -'class::function' : illegal call of non-static member function +> 'class::function' : illegal call of non-static member function A **`static`** member function called a nonstatic member function. Or, a nonstatic member function was called from outside the class as a static function. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2353.md b/docs/error-messages/compiler-errors-1/compiler-error-c2353.md index bbf3f1fdc64..440d050e101 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2353.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2353.md @@ -8,7 +8,7 @@ ms.assetid: d57f8f77-d9b1-4bba-a940-87ec269ad183 --- # Compiler Error C2353 -exception specification is not allowed +> exception specification is not allowed Exception specifications are not allowed on member functions of managed classes. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2355.md b/docs/error-messages/compiler-errors-1/compiler-error-c2355.md index 3c2ec1586f3..5894b4c81f8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2355.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2355.md @@ -8,7 +8,7 @@ ms.assetid: 0a947881-d61f-4f98-8409-32140f39500b --- # Compiler Error C2355 -'this' : can only be referenced inside non-static member functions or non-static data member initializers +> 'this' : can only be referenced inside non-static member functions or non-static data member initializers The **`this`** pointer is valid only within non-static member functions or in non-static data member initializers. This error can result when the class scope of a member function definition outside of the class declaration is not properly qualified. The error can also occur when the **`this`** pointer is used in a function that is not declared in the class. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2356.md b/docs/error-messages/compiler-errors-1/compiler-error-c2356.md index 6049b17292d..bde9f2e8084 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2356.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2356.md @@ -8,7 +8,7 @@ ms.assetid: 84d5a816-9a61-4d45-9978-38e485bbf767 --- # Compiler Error C2356 -initialization segment must not change during translation unit +> initialization segment must not change during translation unit Possible causes: diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2357.md b/docs/error-messages/compiler-errors-1/compiler-error-c2357.md index 0b06b9383d1..1e5f33ad68a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2357.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2357.md @@ -8,7 +8,7 @@ ms.assetid: d1083945-0ea2-4385-9e66-8c665978806c --- # Compiler Error C2357 -'identifier' : must be a function of type 'type' +> 'identifier' : must be a function of type 'type' Your code declares a version of the `atexit` function that does not match the version declared internally by the compiler. Declare `atexit` as follows: diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2360.md b/docs/error-messages/compiler-errors-1/compiler-error-c2360.md index 3fc5204e7bb..c98c6196064 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2360.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2360.md @@ -8,7 +8,7 @@ ms.assetid: 51bfd2ee-8108-4777-aa93-148b9cebfa83 --- # Compiler Error C2360 -initialization of 'identifier' is skipped by 'case' label +> initialization of 'identifier' is skipped by 'case' label The initialization of `identifier` can be skipped in a **`switch`** statement. You cannot jump past a declaration with an initializer unless the declaration is enclosed in a block. (Unless it is declared within a block, the variable is within scope until the end of the **`switch`** statement.) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2361.md b/docs/error-messages/compiler-errors-1/compiler-error-c2361.md index 6a7962c2d68..4616bbf3a7f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2361.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2361.md @@ -8,7 +8,7 @@ ms.assetid: efbdaeb9-891c-4f7d-97da-89088a8413f3 --- # Compiler Error C2361 -initialization of 'identifier' is skipped by 'default' label +> initialization of 'identifier' is skipped by 'default' label The initialization of `identifier` can be skipped in a **`switch`** statement. You cannot jump past a declaration with an initializer unless the declaration is enclosed in a block. (Unless it is declared within a block, the variable is within scope until the end of the **`switch`** statement.) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2364.md b/docs/error-messages/compiler-errors-1/compiler-error-c2364.md index 38050c2e713..28bc3622e61 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2364.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2364.md @@ -8,7 +8,7 @@ ms.assetid: 4f550571-94b5-42ca-84cb-663fecbead44 --- # Compiler Error C2364 -'type': illegal type for custom attribute +> 'type': illegal type for custom attribute Named arguments for custom attributes are limited to compile time constants. For example, integral types (int, char, etc.), System::Type^, and System::Object^. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2365.md b/docs/error-messages/compiler-errors-1/compiler-error-c2365.md index 11c859cbdd7..93f2a55b649 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2365.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2365.md @@ -8,7 +8,7 @@ ms.assetid: 35839b0b-4055-4b79-8957-b3a0871bdd02 --- # Compiler Error C2365 -'class member' : redefinition; previous definition was 'class member' +> 'class member' : redefinition; previous definition was 'class member' You attempted to redefine a class member. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2368.md b/docs/error-messages/compiler-errors-1/compiler-error-c2368.md index a2f6d269f02..e00ecc4eb64 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2368.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2368.md @@ -8,6 +8,6 @@ ms.assetid: a824626f-9fb5-453b-a3a4-da89d1e32218 --- # Compiler Error C2368 -'identifier' : redefinition; different allocation specifiers +> 'identifier' : redefinition; different allocation specifiers The declaration and definition of the symbol specify different **`__declspec`** attributes. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2369.md b/docs/error-messages/compiler-errors-1/compiler-error-c2369.md index aab5f981a69..10120110664 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2369.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2369.md @@ -8,7 +8,7 @@ ms.assetid: 2a3933f6-2313-40ff-800f-921b296fdbbf --- # Compiler Error C2369 -'array' : redefinition; different subscripts +> 'array' : redefinition; different subscripts The array is already declared with a different subscript. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2370.md b/docs/error-messages/compiler-errors-1/compiler-error-c2370.md index 644e2724e52..a930d5abe00 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2370.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2370.md @@ -8,7 +8,7 @@ ms.assetid: 03403e8f-f393-47c4-bd25-5c1c7ea7d5cd --- # Compiler Error C2370 -'identifier' : redefinition; different storage class +> 'identifier' : redefinition; different storage class The identifier is already declared with a different storage class. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2371.md b/docs/error-messages/compiler-errors-1/compiler-error-c2371.md index 3574efe5302..ce5d14e7ea4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2371.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2371.md @@ -8,7 +8,7 @@ ms.assetid: d383993d-05ef-4e35-8129-3b58a6f7b7b7 --- # Compiler Error C2371 -'identifier' : redefinition; different basic types +> 'identifier' : redefinition; different basic types The identifier is already declared. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2373.md b/docs/error-messages/compiler-errors-1/compiler-error-c2373.md index 2122dfb2982..d2431959e79 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2373.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2373.md @@ -8,7 +8,7 @@ ms.assetid: 7a08bf0b-852d-48be-ba75-70df9f4b5951 --- # Compiler Error C2373 -'identifier' : redefinition; different type modifiers +> 'identifier' : redefinition; different type modifiers The identifier is already defined with a different type modifier. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2374.md b/docs/error-messages/compiler-errors-1/compiler-error-c2374.md index 6d1b49420da..3a9af4deac6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2374.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2374.md @@ -8,7 +8,7 @@ ms.assetid: 73b51965-e91c-4e21-9732-f71c1449d22e --- # Compiler Error C2374 -'identifier' : redefinition; multiple initialization +> 'identifier' : redefinition; multiple initialization The identifier is initialized more than once. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2375.md b/docs/error-messages/compiler-errors-1/compiler-error-c2375.md index 2a7da09bf72..0cdd54228b4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2375.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2375.md @@ -8,7 +8,7 @@ ms.assetid: 193c5e8b-1b20-4928-8a02-8c1cddaf2a26 --- # Compiler Error C2375 -'function' : redefinition; different linkage +> 'function' : redefinition; different linkage The function is already declared with a different linkage specifier. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2376.md b/docs/error-messages/compiler-errors-1/compiler-error-c2376.md index 6e089703c80..93f181caf41 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2376.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2376.md @@ -8,6 +8,6 @@ ms.assetid: 89423cf7-a24a-4bb3-a2ed-36a1ff8ba458 --- # Compiler Error C2376 -'function' : redefinition; different based allocation +> 'function' : redefinition; different based allocation The function is already declared with a different based allocation. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2377.md b/docs/error-messages/compiler-errors-1/compiler-error-c2377.md index 409d365c347..85cbae8339d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2377.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2377.md @@ -8,7 +8,7 @@ ms.assetid: f7660965-bf4c-4cd9-8307-1bd7016678a1 --- # Compiler Error C2377 -'identifier' : redefinition; typedef cannot be overloaded with any other symbol +> 'identifier' : redefinition; typedef cannot be overloaded with any other symbol A **`typedef`** identifier is redefined. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2378.md b/docs/error-messages/compiler-errors-1/compiler-error-c2378.md index a42b65d5c7c..9226040c84b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2378.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2378.md @@ -8,7 +8,7 @@ ms.assetid: 507a91c6-ca72-48df-b3a4-2cf931c86806 --- # Compiler Error C2378 -'identifier' : redefinition; symbol cannot be overloaded with a typedef +> 'identifier' : redefinition; symbol cannot be overloaded with a typedef The identifier was redefined as a **`typedef`**. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2379.md b/docs/error-messages/compiler-errors-1/compiler-error-c2379.md index f10e6b2a952..62cdbf47ba5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2379.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2379.md @@ -8,7 +8,7 @@ ms.assetid: 37dc3015-a4af-4341-bbf3-da6150df7e51 --- # Compiler Error C2379 -formal parameter number has different type when promoted +> formal parameter number has different type when promoted The type of the specified parameter is not compatible, through default promotions, with the type in a previous declaration. This is an error in ANSI C ([/Za](../../build/reference/za-ze-disable-language-extensions.md)) and a warning with Microsoft extensions (**/Ze**). diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2380.md b/docs/error-messages/compiler-errors-1/compiler-error-c2380.md index 4e2bdc50260..10172591efb 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2380.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2380.md @@ -8,7 +8,7 @@ ms.assetid: 717b1e6e-ddfe-4bac-a5f3-7f9a4dcb1572 --- # Compiler Error C2380 -type(s) preceding 'identifier' (constructor with return type, or illegal redefinition of current class-name?) +> type(s) preceding 'identifier' (constructor with return type, or illegal redefinition of current class-name?) A constructor returns a value or redefines the class name. From bc4469d944066c054e6cd304447304e3da396c5a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 24 Jul 2025 21:49:58 +0800 Subject: [PATCH 1169/2255] Add "Remarks" and "Example" headings for error references in range [C2351, C2380] --- docs/error-messages/compiler-errors-1/compiler-error-c2351.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2352.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2353.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2355.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2356.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2357.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2360.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2361.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2362.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2364.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2365.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2368.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2369.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2370.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2371.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2372.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2373.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2374.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2375.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2376.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2377.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2378.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2379.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2380.md | 4 ++++ 24 files changed, 88 insertions(+) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2351.md b/docs/error-messages/compiler-errors-1/compiler-error-c2351.md index 53d8a32c82a..29beaf3237d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2351.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2351.md @@ -10,8 +10,12 @@ ms.assetid: 5439ccf6-66f6-4859-964c-c73f5eddfc1b > obsolete C++ constructor initialization syntax +## Remarks + In a new-style initialization list for a constructor, you must explicitly name each direct base class, even if it is the only base class. +## Example + The following sample generates C2351: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2352.md b/docs/error-messages/compiler-errors-1/compiler-error-c2352.md index 8555ab77211..82bdbca4fd6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2352.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2352.md @@ -10,8 +10,12 @@ ms.assetid: 0efad8cb-659f-4b3e-8f6f-9f8ec44d345c > 'class::function' : illegal call of non-static member function +## Remarks + A **`static`** member function called a nonstatic member function. Or, a nonstatic member function was called from outside the class as a static function. +## Examples + The following sample generates C2352 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2353.md b/docs/error-messages/compiler-errors-1/compiler-error-c2353.md index 440d050e101..7ccfc49ac61 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2353.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2353.md @@ -10,8 +10,12 @@ ms.assetid: d57f8f77-d9b1-4bba-a940-87ec269ad183 > exception specification is not allowed +## Remarks + Exception specifications are not allowed on member functions of managed classes. +## Example + The following sample generates C2353: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2355.md b/docs/error-messages/compiler-errors-1/compiler-error-c2355.md index 5894b4c81f8..93e97299223 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2355.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2355.md @@ -10,10 +10,14 @@ ms.assetid: 0a947881-d61f-4f98-8409-32140f39500b > 'this' : can only be referenced inside non-static member functions or non-static data member initializers +## Remarks + The **`this`** pointer is valid only within non-static member functions or in non-static data member initializers. This error can result when the class scope of a member function definition outside of the class declaration is not properly qualified. The error can also occur when the **`this`** pointer is used in a function that is not declared in the class. To fix this issue, make sure the member function definition matches a member function declaration in the class, and that it is not declared static. For data member initializers, make sure the data member is not declared static. +## Example + The following sample generates C2355 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2356.md b/docs/error-messages/compiler-errors-1/compiler-error-c2356.md index bde9f2e8084..31123a04c56 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2356.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2356.md @@ -10,6 +10,8 @@ ms.assetid: 84d5a816-9a61-4d45-9978-38e485bbf767 > initialization segment must not change during translation unit +## Remarks + Possible causes: - `#pragma init_seg` preceded by segment initialization code @@ -18,6 +20,8 @@ Possible causes: To resolve, move the segment initialization code to the beginning of the module. If multiple areas must be initialized, move them to separate modules. +## Example + The following sample generates C2356: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2357.md b/docs/error-messages/compiler-errors-1/compiler-error-c2357.md index 1e5f33ad68a..c4e4729b9a7 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2357.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2357.md @@ -10,6 +10,8 @@ ms.assetid: d1083945-0ea2-4385-9e66-8c665978806c > 'identifier' : must be a function of type 'type' +## Remarks + Your code declares a version of the `atexit` function that does not match the version declared internally by the compiler. Declare `atexit` as follows: ``` @@ -18,6 +20,8 @@ int __cdecl atexit(void (__cdecl *)()); For more information, see [init_seg](../../preprocessor/init-seg.md). +## Example + The following sample generates C2357: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2360.md b/docs/error-messages/compiler-errors-1/compiler-error-c2360.md index c98c6196064..31fae0653cf 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2360.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2360.md @@ -10,8 +10,12 @@ ms.assetid: 51bfd2ee-8108-4777-aa93-148b9cebfa83 > initialization of 'identifier' is skipped by 'case' label +## Remarks + The initialization of `identifier` can be skipped in a **`switch`** statement. You cannot jump past a declaration with an initializer unless the declaration is enclosed in a block. (Unless it is declared within a block, the variable is within scope until the end of the **`switch`** statement.) +## Example + The following sample generates C2360: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2361.md b/docs/error-messages/compiler-errors-1/compiler-error-c2361.md index 4616bbf3a7f..c6ae25f0456 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2361.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2361.md @@ -10,8 +10,12 @@ ms.assetid: efbdaeb9-891c-4f7d-97da-89088a8413f3 > initialization of 'identifier' is skipped by 'default' label +## Remarks + The initialization of `identifier` can be skipped in a **`switch`** statement. You cannot jump past a declaration with an initializer unless the declaration is enclosed in a block. (Unless it is declared within a block, the variable is within scope until the end of the **`switch`** statement.) +## Example + The following sample generates C2361: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2362.md b/docs/error-messages/compiler-errors-1/compiler-error-c2362.md index ee78fcd6f02..aecd8e1244b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2362.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2362.md @@ -10,10 +10,14 @@ ms.assetid: 7aafecbc-b3cf-45a6-9ec3-a17e3f222511 > initialization of '*identifier*' is skipped by 'goto *label*' +## Remarks + When compiled by using [/Za](../../build/reference/za-ze-disable-language-extensions.md), a jump to the label prevents the identifier from being initialized. You can only jump past a declaration with an initializer if the declaration is enclosed in a block that isn't entered, or if the variable has already been initialized. +## Example + The following sample generates C2362: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2364.md b/docs/error-messages/compiler-errors-1/compiler-error-c2364.md index 28bc3622e61..f4270cb4571 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2364.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2364.md @@ -10,6 +10,8 @@ ms.assetid: 4f550571-94b5-42ca-84cb-663fecbead44 > 'type': illegal type for custom attribute +## Remarks + Named arguments for custom attributes are limited to compile time constants. For example, integral types (int, char, etc.), System::Type^, and System::Object^. ## Example diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2365.md b/docs/error-messages/compiler-errors-1/compiler-error-c2365.md index 93f2a55b649..d8499b3d0e2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2365.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2365.md @@ -10,8 +10,12 @@ ms.assetid: 35839b0b-4055-4b79-8957-b3a0871bdd02 > 'class member' : redefinition; previous definition was 'class member' +## Remarks + You attempted to redefine a class member. +## Example + The following sample generates C2365. ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2368.md b/docs/error-messages/compiler-errors-1/compiler-error-c2368.md index e00ecc4eb64..99cd2a22e23 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2368.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2368.md @@ -10,4 +10,6 @@ ms.assetid: a824626f-9fb5-453b-a3a4-da89d1e32218 > 'identifier' : redefinition; different allocation specifiers +## Remarks + The declaration and definition of the symbol specify different **`__declspec`** attributes. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2369.md b/docs/error-messages/compiler-errors-1/compiler-error-c2369.md index 10120110664..1fdecdee48c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2369.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2369.md @@ -10,8 +10,12 @@ ms.assetid: 2a3933f6-2313-40ff-800f-921b296fdbbf > 'array' : redefinition; different subscripts +## Remarks + The array is already declared with a different subscript. +## Example + The following sample generates C2369: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2370.md b/docs/error-messages/compiler-errors-1/compiler-error-c2370.md index a930d5abe00..6af1197b3a1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2370.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2370.md @@ -10,6 +10,8 @@ ms.assetid: 03403e8f-f393-47c4-bd25-5c1c7ea7d5cd > 'identifier' : redefinition; different storage class +## Remarks + The identifier is already declared with a different storage class. ## Examples diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2371.md b/docs/error-messages/compiler-errors-1/compiler-error-c2371.md index ce5d14e7ea4..055c838c8ef 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2371.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2371.md @@ -10,8 +10,12 @@ ms.assetid: d383993d-05ef-4e35-8129-3b58a6f7b7b7 > 'identifier' : redefinition; different basic types +## Remarks + The identifier is already declared. +## Example + The following sample generates C2371: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2372.md b/docs/error-messages/compiler-errors-1/compiler-error-c2372.md index eac3e935a76..cffae957d4a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2372.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2372.md @@ -10,8 +10,12 @@ ms.assetid: 406bea63-c8d3-4231-9d26-c70af6980840 > '*identifier*' : redefinition; different types of indirection +## Remarks + The identifier is already defined with a different derived type. +## Example + The following sample generates C2372: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2373.md b/docs/error-messages/compiler-errors-1/compiler-error-c2373.md index d2431959e79..4706c55ff6a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2373.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2373.md @@ -10,8 +10,12 @@ ms.assetid: 7a08bf0b-852d-48be-ba75-70df9f4b5951 > 'identifier' : redefinition; different type modifiers +## Remarks + The identifier is already defined with a different type modifier. +## Example + The following sample generates C2373: ``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2374.md b/docs/error-messages/compiler-errors-1/compiler-error-c2374.md index 3a9af4deac6..eb0d6215154 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2374.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2374.md @@ -10,8 +10,12 @@ ms.assetid: 73b51965-e91c-4e21-9732-f71c1449d22e > 'identifier' : redefinition; multiple initialization +## Remarks + The identifier is initialized more than once. +## Example + The following sample generates C2374: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2375.md b/docs/error-messages/compiler-errors-1/compiler-error-c2375.md index 0cdd54228b4..6ff13253e29 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2375.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2375.md @@ -10,8 +10,12 @@ ms.assetid: 193c5e8b-1b20-4928-8a02-8c1cddaf2a26 > 'function' : redefinition; different linkage +## Remarks + The function is already declared with a different linkage specifier. +## Example + The following sample generates C2375: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2376.md b/docs/error-messages/compiler-errors-1/compiler-error-c2376.md index 93f181caf41..813e57c5179 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2376.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2376.md @@ -10,4 +10,6 @@ ms.assetid: 89423cf7-a24a-4bb3-a2ed-36a1ff8ba458 > 'function' : redefinition; different based allocation +## Remarks + The function is already declared with a different based allocation. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2377.md b/docs/error-messages/compiler-errors-1/compiler-error-c2377.md index 85cbae8339d..09a39aa48ac 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2377.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2377.md @@ -10,8 +10,12 @@ ms.assetid: f7660965-bf4c-4cd9-8307-1bd7016678a1 > 'identifier' : redefinition; typedef cannot be overloaded with any other symbol +## Remarks + A **`typedef`** identifier is redefined. +## Example + The following sample generates C2377: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2378.md b/docs/error-messages/compiler-errors-1/compiler-error-c2378.md index 9226040c84b..731f61d68b8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2378.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2378.md @@ -10,8 +10,12 @@ ms.assetid: 507a91c6-ca72-48df-b3a4-2cf931c86806 > 'identifier' : redefinition; symbol cannot be overloaded with a typedef +## Remarks + The identifier was redefined as a **`typedef`**. +## Example + The following sample generates C2378: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2379.md b/docs/error-messages/compiler-errors-1/compiler-error-c2379.md index 62cdbf47ba5..54dfe67db20 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2379.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2379.md @@ -10,8 +10,12 @@ ms.assetid: 37dc3015-a4af-4341-bbf3-da6150df7e51 > formal parameter number has different type when promoted +## Remarks + The type of the specified parameter is not compatible, through default promotions, with the type in a previous declaration. This is an error in ANSI C ([/Za](../../build/reference/za-ze-disable-language-extensions.md)) and a warning with Microsoft extensions (**/Ze**). +## Example + The following sample generates C2379: ```c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2380.md b/docs/error-messages/compiler-errors-1/compiler-error-c2380.md index 10172591efb..4157aff583d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2380.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2380.md @@ -10,8 +10,12 @@ ms.assetid: 717b1e6e-ddfe-4bac-a5f3-7f9a4dcb1572 > type(s) preceding 'identifier' (constructor with return type, or illegal redefinition of current class-name?) +## Remarks + A constructor returns a value or redefines the class name. +## Example + The following sample generates C2326: ```cpp From a902348f96645bc9f2282b0ead1db72f6c4494ec Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 24 Jul 2025 21:51:45 +0800 Subject: [PATCH 1170/2255] Replace term "sample" with "example" for error references in range [C2351, C2380] --- docs/error-messages/compiler-errors-1/compiler-error-c2351.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2352.md | 4 ++-- docs/error-messages/compiler-errors-1/compiler-error-c2353.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2355.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2356.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2357.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2360.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2361.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2362.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2364.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2365.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2369.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2370.md | 4 ++-- docs/error-messages/compiler-errors-1/compiler-error-c2371.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2372.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2373.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2374.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2375.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2377.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2378.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2379.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2380.md | 2 +- 22 files changed, 24 insertions(+), 24 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2351.md b/docs/error-messages/compiler-errors-1/compiler-error-c2351.md index 29beaf3237d..68f942ce6de 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2351.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2351.md @@ -16,7 +16,7 @@ In a new-style initialization list for a constructor, you must explicitly name e ## Example -The following sample generates C2351: +The following example generates C2351: ```cpp // C2351.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2352.md b/docs/error-messages/compiler-errors-1/compiler-error-c2352.md index 82bdbca4fd6..47c231b2d0d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2352.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2352.md @@ -16,7 +16,7 @@ A **`static`** member function called a nonstatic member function. Or, a nonstat ## Examples -The following sample generates C2352 and shows how to fix it: +The following example generates C2352 and shows how to fix it: ```cpp // C2352.cpp @@ -32,7 +32,7 @@ public: }; ``` -The following sample generates C2352 and shows how to fix it: +The following example generates C2352 and shows how to fix it: ```cpp // C2352b.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2353.md b/docs/error-messages/compiler-errors-1/compiler-error-c2353.md index 7ccfc49ac61..47a577cab73 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2353.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2353.md @@ -16,7 +16,7 @@ Exception specifications are not allowed on member functions of managed classes. ## Example -The following sample generates C2353: +The following example generates C2353: ```cpp // C2353.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2355.md b/docs/error-messages/compiler-errors-1/compiler-error-c2355.md index 93e97299223..1e036063004 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2355.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2355.md @@ -18,7 +18,7 @@ To fix this issue, make sure the member function definition matches a member fun ## Example -The following sample generates C2355 and shows how to fix it: +The following example generates C2355 and shows how to fix it: ```cpp // C2355.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2356.md b/docs/error-messages/compiler-errors-1/compiler-error-c2356.md index 31123a04c56..926dd70ac69 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2356.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2356.md @@ -22,7 +22,7 @@ To resolve, move the segment initialization code to the beginning of the module. ## Example -The following sample generates C2356: +The following example generates C2356: ```cpp // C2356.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2357.md b/docs/error-messages/compiler-errors-1/compiler-error-c2357.md index c4e4729b9a7..b06b5817a9d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2357.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2357.md @@ -22,7 +22,7 @@ For more information, see [init_seg](../../preprocessor/init-seg.md). ## Example -The following sample generates C2357: +The following example generates C2357: ```cpp // C2357.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2360.md b/docs/error-messages/compiler-errors-1/compiler-error-c2360.md index 31fae0653cf..9809aa0e28a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2360.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2360.md @@ -16,7 +16,7 @@ The initialization of `identifier` can be skipped in a **`switch`** statement. Y ## Example -The following sample generates C2360: +The following example generates C2360: ```cpp // C2360.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2361.md b/docs/error-messages/compiler-errors-1/compiler-error-c2361.md index c6ae25f0456..3bccbed3a38 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2361.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2361.md @@ -16,7 +16,7 @@ The initialization of `identifier` can be skipped in a **`switch`** statement. Y ## Example -The following sample generates C2361: +The following example generates C2361: ```cpp // C2361.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2362.md b/docs/error-messages/compiler-errors-1/compiler-error-c2362.md index aecd8e1244b..e3e4e7bf754 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2362.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2362.md @@ -18,7 +18,7 @@ You can only jump past a declaration with an initializer if the declaration is e ## Example -The following sample generates C2362: +The following example generates C2362: ```cpp // C2362.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2364.md b/docs/error-messages/compiler-errors-1/compiler-error-c2364.md index f4270cb4571..7594f2d078a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2364.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2364.md @@ -16,7 +16,7 @@ Named arguments for custom attributes are limited to compile time constants. For ## Example -The following sample generates C2364. +The following example generates C2364. ```cpp // c2364.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2365.md b/docs/error-messages/compiler-errors-1/compiler-error-c2365.md index d8499b3d0e2..00662d6f4f7 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2365.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2365.md @@ -16,7 +16,7 @@ You attempted to redefine a class member. ## Example -The following sample generates C2365. +The following example generates C2365. ```cpp // C2365.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2369.md b/docs/error-messages/compiler-errors-1/compiler-error-c2369.md index 1fdecdee48c..c7f96d0b538 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2369.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2369.md @@ -16,7 +16,7 @@ The array is already declared with a different subscript. ## Example -The following sample generates C2369: +The following example generates C2369: ```cpp // C2369.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2370.md b/docs/error-messages/compiler-errors-1/compiler-error-c2370.md index 6af1197b3a1..a47e12065d7 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2370.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2370.md @@ -16,7 +16,7 @@ The identifier is already declared with a different storage class. ## Examples -The following sample generates C2370: +The following example generates C2370: ```cpp // C2370.cpp @@ -26,7 +26,7 @@ static int i; // C2370 int i; // OK ``` -The following sample generates C2370: +The following example generates C2370: ```cpp // C2370b.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2371.md b/docs/error-messages/compiler-errors-1/compiler-error-c2371.md index 055c838c8ef..647339bc18c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2371.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2371.md @@ -16,7 +16,7 @@ The identifier is already declared. ## Example -The following sample generates C2371: +The following example generates C2371: ```cpp // C2371.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2372.md b/docs/error-messages/compiler-errors-1/compiler-error-c2372.md index cffae957d4a..07f26c815cf 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2372.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2372.md @@ -16,7 +16,7 @@ The identifier is already defined with a different derived type. ## Example -The following sample generates C2372: +The following example generates C2372: ```cpp // C2372.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2373.md b/docs/error-messages/compiler-errors-1/compiler-error-c2373.md index 4706c55ff6a..f6f17a5fc37 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2373.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2373.md @@ -16,7 +16,7 @@ The identifier is already defined with a different type modifier. ## Example -The following sample generates C2373: +The following example generates C2373: ``` // C2373.h diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2374.md b/docs/error-messages/compiler-errors-1/compiler-error-c2374.md index eb0d6215154..85279b0d0fb 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2374.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2374.md @@ -16,7 +16,7 @@ The identifier is initialized more than once. ## Example -The following sample generates C2374: +The following example generates C2374: ```cpp // C2374.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2375.md b/docs/error-messages/compiler-errors-1/compiler-error-c2375.md index 6ff13253e29..40257e1f855 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2375.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2375.md @@ -16,7 +16,7 @@ The function is already declared with a different linkage specifier. ## Example -The following sample generates C2375: +The following example generates C2375: ```cpp // C2375.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2377.md b/docs/error-messages/compiler-errors-1/compiler-error-c2377.md index 09a39aa48ac..83c17ec4b0e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2377.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2377.md @@ -16,7 +16,7 @@ A **`typedef`** identifier is redefined. ## Example -The following sample generates C2377: +The following example generates C2377: ```cpp // C2377.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2378.md b/docs/error-messages/compiler-errors-1/compiler-error-c2378.md index 731f61d68b8..7421d9eeebd 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2378.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2378.md @@ -16,7 +16,7 @@ The identifier was redefined as a **`typedef`**. ## Example -The following sample generates C2378: +The following example generates C2378: ```cpp // C2378.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2379.md b/docs/error-messages/compiler-errors-1/compiler-error-c2379.md index 54dfe67db20..fbc5d991036 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2379.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2379.md @@ -16,7 +16,7 @@ The type of the specified parameter is not compatible, through default promotion ## Example -The following sample generates C2379: +The following example generates C2379: ```c // C2379.c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2380.md b/docs/error-messages/compiler-errors-1/compiler-error-c2380.md index 4157aff583d..59bdc81ff27 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2380.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2380.md @@ -16,7 +16,7 @@ A constructor returns a value or redefines the class name. ## Example -The following sample generates C2326: +The following example generates C2326: ```cpp // C2380.cpp From 6ff9386784a2581ca023fdb5d4168def692810eb Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 24 Jul 2025 21:56:21 +0800 Subject: [PATCH 1171/2255] Update metadata for error references in range [C2351, C2380] --- .../error-messages/compiler-errors-1/compiler-error-c2351.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2352.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2353.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2355.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2356.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2357.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2360.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2361.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2362.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2364.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2365.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2368.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2369.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2370.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2371.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2372.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2373.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2374.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2375.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2376.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2377.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2378.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2379.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2380.md | 5 ++--- 24 files changed, 48 insertions(+), 72 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2351.md b/docs/error-messages/compiler-errors-1/compiler-error-c2351.md index 68f942ce6de..a3f4108c1ca 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2351.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2351.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2351" title: "Compiler Error C2351" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2351" +ms.date: 11/04/2016 f1_keywords: ["C2351"] helpviewer_keywords: ["C2351"] -ms.assetid: 5439ccf6-66f6-4859-964c-c73f5eddfc1b --- # Compiler Error C2351 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2352.md b/docs/error-messages/compiler-errors-1/compiler-error-c2352.md index 47c231b2d0d..8a5af21eae8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2352.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2352.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2352" title: "Compiler Error C2352" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2352" +ms.date: 11/04/2016 f1_keywords: ["C2352"] helpviewer_keywords: ["C2352"] -ms.assetid: 0efad8cb-659f-4b3e-8f6f-9f8ec44d345c --- # Compiler Error C2352 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2353.md b/docs/error-messages/compiler-errors-1/compiler-error-c2353.md index 47a577cab73..50668f8cfe2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2353.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2353.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2353" title: "Compiler Error C2353" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2353" +ms.date: 11/04/2016 f1_keywords: ["C2353"] helpviewer_keywords: ["C2353"] -ms.assetid: d57f8f77-d9b1-4bba-a940-87ec269ad183 --- # Compiler Error C2353 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2355.md b/docs/error-messages/compiler-errors-1/compiler-error-c2355.md index 1e036063004..abde37c99c8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2355.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2355.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2355" title: "Compiler Error C2355" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2355" +ms.date: 11/04/2016 f1_keywords: ["C2355"] helpviewer_keywords: ["C2355"] -ms.assetid: 0a947881-d61f-4f98-8409-32140f39500b --- # Compiler Error C2355 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2356.md b/docs/error-messages/compiler-errors-1/compiler-error-c2356.md index 926dd70ac69..3ee44ce9730 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2356.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2356.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2356" title: "Compiler Error C2356" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2356" +ms.date: 11/04/2016 f1_keywords: ["C2356"] helpviewer_keywords: ["C2356"] -ms.assetid: 84d5a816-9a61-4d45-9978-38e485bbf767 --- # Compiler Error C2356 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2357.md b/docs/error-messages/compiler-errors-1/compiler-error-c2357.md index b06b5817a9d..67b2a2901ce 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2357.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2357.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2357" title: "Compiler Error C2357" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2357" +ms.date: 11/04/2016 f1_keywords: ["C2357"] helpviewer_keywords: ["C2357"] -ms.assetid: d1083945-0ea2-4385-9e66-8c665978806c --- # Compiler Error C2357 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2360.md b/docs/error-messages/compiler-errors-1/compiler-error-c2360.md index 9809aa0e28a..58a393241ac 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2360.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2360.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2360" title: "Compiler Error C2360" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2360" +ms.date: 11/04/2016 f1_keywords: ["C2360"] helpviewer_keywords: ["C2360"] -ms.assetid: 51bfd2ee-8108-4777-aa93-148b9cebfa83 --- # Compiler Error C2360 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2361.md b/docs/error-messages/compiler-errors-1/compiler-error-c2361.md index 3bccbed3a38..8c6743d7d40 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2361.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2361.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2361" title: "Compiler Error C2361" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2361" +ms.date: 11/04/2016 f1_keywords: ["C2361"] helpviewer_keywords: ["C2361"] -ms.assetid: efbdaeb9-891c-4f7d-97da-89088a8413f3 --- # Compiler Error C2361 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2362.md b/docs/error-messages/compiler-errors-1/compiler-error-c2362.md index e3e4e7bf754..5691441c218 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2362.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2362.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2362" title: "Compiler Error C2362" -ms.date: "06/03/2019" +description: "Learn more about: Compiler Error C2362" +ms.date: 06/03/2019 f1_keywords: ["C2362"] helpviewer_keywords: ["C2362"] -ms.assetid: 7aafecbc-b3cf-45a6-9ec3-a17e3f222511 --- # Compiler Error C2362 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2364.md b/docs/error-messages/compiler-errors-1/compiler-error-c2364.md index 7594f2d078a..8eeabc0bef7 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2364.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2364.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2364" title: "Compiler Error C2364" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2364" +ms.date: 11/04/2016 f1_keywords: ["C2364"] helpviewer_keywords: ["C2364"] -ms.assetid: 4f550571-94b5-42ca-84cb-663fecbead44 --- # Compiler Error C2364 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2365.md b/docs/error-messages/compiler-errors-1/compiler-error-c2365.md index 00662d6f4f7..7fd276bfe74 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2365.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2365.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2365" title: "Compiler Error C2365" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2365" +ms.date: 11/04/2016 f1_keywords: ["C2365"] helpviewer_keywords: ["C2365"] -ms.assetid: 35839b0b-4055-4b79-8957-b3a0871bdd02 --- # Compiler Error C2365 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2368.md b/docs/error-messages/compiler-errors-1/compiler-error-c2368.md index 99cd2a22e23..7711b7ae2c4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2368.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2368.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2368" title: "Compiler Error C2368" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2368" +ms.date: 11/04/2016 f1_keywords: ["C2368"] helpviewer_keywords: ["C2368"] -ms.assetid: a824626f-9fb5-453b-a3a4-da89d1e32218 --- # Compiler Error C2368 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2369.md b/docs/error-messages/compiler-errors-1/compiler-error-c2369.md index c7f96d0b538..27a97bd4866 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2369.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2369.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2369" title: "Compiler Error C2369" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2369" +ms.date: 11/04/2016 f1_keywords: ["C2369"] helpviewer_keywords: ["C2369"] -ms.assetid: 2a3933f6-2313-40ff-800f-921b296fdbbf --- # Compiler Error C2369 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2370.md b/docs/error-messages/compiler-errors-1/compiler-error-c2370.md index a47e12065d7..256c331a639 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2370.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2370.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2370" title: "Compiler Error C2370" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2370" +ms.date: 11/04/2016 f1_keywords: ["C2370"] helpviewer_keywords: ["C2370"] -ms.assetid: 03403e8f-f393-47c4-bd25-5c1c7ea7d5cd --- # Compiler Error C2370 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2371.md b/docs/error-messages/compiler-errors-1/compiler-error-c2371.md index 647339bc18c..bb5ba669bfc 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2371.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2371.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2371" title: "Compiler Error C2371" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2371" +ms.date: 11/04/2016 f1_keywords: ["C2371"] helpviewer_keywords: ["C2371"] -ms.assetid: d383993d-05ef-4e35-8129-3b58a6f7b7b7 --- # Compiler Error C2371 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2372.md b/docs/error-messages/compiler-errors-1/compiler-error-c2372.md index 07f26c815cf..e893c5eb51e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2372.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2372.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2372" title: "Compiler Error C2372" -ms.date: "03/23/2020" +description: "Learn more about: Compiler Error C2372" +ms.date: 03/23/2020 f1_keywords: ["C2372"] helpviewer_keywords: ["C2372"] -ms.assetid: 406bea63-c8d3-4231-9d26-c70af6980840 --- # Compiler Error C2372 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2373.md b/docs/error-messages/compiler-errors-1/compiler-error-c2373.md index f6f17a5fc37..1a2078adf1a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2373.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2373.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2373" title: "Compiler Error C2373" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2373" +ms.date: 11/04/2016 f1_keywords: ["C2373"] helpviewer_keywords: ["C2373"] -ms.assetid: 7a08bf0b-852d-48be-ba75-70df9f4b5951 --- # Compiler Error C2373 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2374.md b/docs/error-messages/compiler-errors-1/compiler-error-c2374.md index 85279b0d0fb..ae1d39df38d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2374.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2374.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2374" title: "Compiler Error C2374" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2374" +ms.date: 11/04/2016 f1_keywords: ["C2374"] helpviewer_keywords: ["C2374"] -ms.assetid: 73b51965-e91c-4e21-9732-f71c1449d22e --- # Compiler Error C2374 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2375.md b/docs/error-messages/compiler-errors-1/compiler-error-c2375.md index 40257e1f855..a70339533a4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2375.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2375.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2375" title: "Compiler Error C2375" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2375" +ms.date: 11/04/2016 f1_keywords: ["C2375"] helpviewer_keywords: ["C2375"] -ms.assetid: 193c5e8b-1b20-4928-8a02-8c1cddaf2a26 --- # Compiler Error C2375 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2376.md b/docs/error-messages/compiler-errors-1/compiler-error-c2376.md index 813e57c5179..0cb73a4d373 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2376.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2376.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2376" title: "Compiler Error C2376" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2376" +ms.date: 11/04/2016 f1_keywords: ["C2376"] helpviewer_keywords: ["C2376"] -ms.assetid: 89423cf7-a24a-4bb3-a2ed-36a1ff8ba458 --- # Compiler Error C2376 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2377.md b/docs/error-messages/compiler-errors-1/compiler-error-c2377.md index 83c17ec4b0e..5ed9e0b2649 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2377.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2377.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2377" title: "Compiler Error C2377" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2377" +ms.date: 11/04/2016 f1_keywords: ["C2377"] helpviewer_keywords: ["C2377"] -ms.assetid: f7660965-bf4c-4cd9-8307-1bd7016678a1 --- # Compiler Error C2377 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2378.md b/docs/error-messages/compiler-errors-1/compiler-error-c2378.md index 7421d9eeebd..5005fb5f367 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2378.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2378.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2378" title: "Compiler Error C2378" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2378" +ms.date: 11/04/2016 f1_keywords: ["C2378"] helpviewer_keywords: ["C2378"] -ms.assetid: 507a91c6-ca72-48df-b3a4-2cf931c86806 --- # Compiler Error C2378 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2379.md b/docs/error-messages/compiler-errors-1/compiler-error-c2379.md index fbc5d991036..46c248af538 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2379.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2379.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2379" title: "Compiler Error C2379" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2379" +ms.date: 11/04/2016 f1_keywords: ["C2379"] helpviewer_keywords: ["C2379"] -ms.assetid: 37dc3015-a4af-4341-bbf3-da6150df7e51 --- # Compiler Error C2379 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2380.md b/docs/error-messages/compiler-errors-1/compiler-error-c2380.md index 59bdc81ff27..9b317bd13db 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2380.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2380.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2380" title: "Compiler Error C2380" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2380" +ms.date: 11/04/2016 f1_keywords: ["C2380"] helpviewer_keywords: ["C2380"] -ms.assetid: 717b1e6e-ddfe-4bac-a5f3-7f9a4dcb1572 --- # Compiler Error C2380 From 978980d907997f57ab56ca5fe14746e65eaf7972 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 25 Jul 2025 17:55:38 +0800 Subject: [PATCH 1172/2255] Update unconventional single column table in `Concurrency::graphics::direct3d` namespace reference --- .../concurrency-graphics-direct3d-namespace.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace.md b/docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace.md index ff00042ac40..6351ac7f578 100644 --- a/docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace.md +++ b/docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace.md @@ -19,13 +19,13 @@ namespace direct3d; ### Functions -|Name

Description| -|--------------------------| -|[get_sampler](concurrency-graphics-direct3d-namespace-functions.md#get_sampler)

Get the Direct3D sampler state interface on the given accelerator view that represents the specified sampler object.| -|[get_texture](concurrency-graphics-direct3d-namespace-functions.md#get_texture)

Gets the Direct3D texture interface underlying the specified [texture](texture-class.md) object.| -|[make_sampler](concurrency-graphics-direct3d-namespace-functions.md#make_sampler)

Create a sampler from a Direct3D sampler state interface pointer.| -|[make_texture](concurrency-graphics-direct3d-namespace-functions.md#make_texture)

Creates a [texture](texture-class.md) object by using the specified parameters.| -|[msad4](concurrency-graphics-direct3d-namespace-functions.md#msad4)

Compares a 4-byte reference value and an 8-byte source value and accumulates a vector of 4 sums.| +|Name|Description| +|----------|-----------------| +|[get_sampler](concurrency-graphics-direct3d-namespace-functions.md#get_sampler)|Get the Direct3D sampler state interface on the given accelerator view that represents the specified sampler object.| +|[get_texture](concurrency-graphics-direct3d-namespace-functions.md#get_texture)|Gets the Direct3D texture interface underlying the specified [texture](texture-class.md) object.| +|[make_sampler](concurrency-graphics-direct3d-namespace-functions.md#make_sampler)|Create a sampler from a Direct3D sampler state interface pointer.| +|[make_texture](concurrency-graphics-direct3d-namespace-functions.md#make_texture)|Creates a [texture](texture-class.md) object by using the specified parameters.| +|[msad4](concurrency-graphics-direct3d-namespace-functions.md#msad4)|Compares a 4-byte reference value and an 8-byte source value and accumulates a vector of 4 sums.| ## Requirements From f7d8c79f19e6c1eb0e2bd2423748756432bd6121 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 25 Jul 2025 17:56:34 +0800 Subject: [PATCH 1173/2255] Update metadata in `Concurrency::graphics::direct3d` namespace reference --- .../amp/reference/concurrency-graphics-direct3d-namespace.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace.md b/docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace.md index 6351ac7f578..05afb7f5aed 100644 --- a/docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace.md +++ b/docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Concurrency::graphics::direct3d Namespace" title: "Concurrency::graphics::direct3d Namespace" -ms.date: "11/04/2016" +description: "Learn more about: Concurrency::graphics::direct3d Namespace" +ms.date: 11/04/2016 f1_keywords: ["amp_graphics/Concurrency::graphics::direct3d", "amp_short_vectors/Concurrency::graphics::direct3d"] -ms.assetid: be283331-07cf-46e4-91a1-e8aa85d4ec8e --- # Concurrency::graphics::direct3d Namespace From 8370a6851cf9e14aa564d985ce41c167159a4750 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 25 Jul 2025 23:31:07 +0800 Subject: [PATCH 1174/2255] Add blockquotes for error messages in range [C2381, C2400] --- docs/error-messages/compiler-errors-1/compiler-error-c2381.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2383.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2384.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2386.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2387.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2388.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2389.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2390.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2391.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2392.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2394.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2395.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2396.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2397.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2400.md | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2381.md b/docs/error-messages/compiler-errors-1/compiler-error-c2381.md index 86b2ef3426c..af5336da248 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2381.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2381.md @@ -8,7 +8,7 @@ ms.assetid: cc765f67-64ac-406f-93ef-ae7d548d58d7 --- # Compiler Error C2381 -'function' : redefinition; __declspec(noreturn) differs +> 'function' : redefinition; __declspec(noreturn) differs A function was declared and then defined but the definition used the [noreturn](../../cpp/noreturn.md) **`__declspec`** modifier. The use of `noreturn` constitutes a redefinition of the function; the declaration and definition need to agree on the use of `noreturn`. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2383.md b/docs/error-messages/compiler-errors-1/compiler-error-c2383.md index 1e0db5c5781..ad9b8f2d40f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2383.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2383.md @@ -8,7 +8,7 @@ ms.assetid: 6696221d-879c-477a-a0f3-a6edc15fd3d7 --- # Compiler Error C2383 -'*symbol*' : default-arguments are not allowed on this symbol +> '*symbol*' : default-arguments are not allowed on this symbol The C++ compiler does not allow default arguments on pointers to functions. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2384.md b/docs/error-messages/compiler-errors-1/compiler-error-c2384.md index ceff45b6302..a13c0fbd1c6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2384.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2384.md @@ -8,7 +8,7 @@ ms.assetid: 8145f7ad-31b1-406d-ac43-0d557feab635 --- # Compiler Error C2384 -'member' : cannot apply __declspec(thread) to a member of a managed or WinRT class +> 'member' : cannot apply __declspec(thread) to a member of a managed or WinRT class The [thread](../../cpp/thread.md) **`__declspec`** modifier cannot be used on a member of a managed or Windows Runtime class. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2386.md b/docs/error-messages/compiler-errors-1/compiler-error-c2386.md index 012734bc39e..6f1df04435a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2386.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2386.md @@ -8,7 +8,7 @@ ms.assetid: aaaa1284-34a0-4da2-8547-9fcbb559dae0 --- # Compiler Error C2386 -'symbol' : a symbol with this name already exists in the current scope +> 'symbol' : a symbol with this name already exists in the current scope You tried to create a namespace alias, but the name you chose already exists. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2387.md b/docs/error-messages/compiler-errors-1/compiler-error-c2387.md index 9eb33692520..937b7a7845e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2387.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2387.md @@ -8,7 +8,7 @@ ms.assetid: 6847b8e1-ffac-458d-ab88-0c92f72f2527 --- # Compiler Error C2387 -'type' : ambiguous base class +> 'type' : ambiguous base class The compiler could not unambiguously resolve a function call because the function exists in more than one base class. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2388.md b/docs/error-messages/compiler-errors-1/compiler-error-c2388.md index 28c5b68ad5b..e59d9f3c8aa 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2388.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2388.md @@ -8,7 +8,7 @@ ms.assetid: 764ad2d7-cb04-425f-ba30-70989488c4a4 --- # Compiler Error C2388 -'symbol' : a symbol cannot be declared with both __declspec(appdomain) and \__declspec(process) +> 'symbol' : a symbol cannot be declared with both __declspec(appdomain) and \__declspec(process) The `appdomain` and `process` **`__declspec`** modifiers cannot be used on the same symbol. The storage for a variable exists per process or per application domain. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2389.md b/docs/error-messages/compiler-errors-1/compiler-error-c2389.md index 6f13b7db12c..50280e033bb 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2389.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2389.md @@ -8,7 +8,7 @@ ms.assetid: 6122dc81-4ee3-49a5-a67d-d867808c9bac --- # Compiler Error C2389 -'operator' : illegal operand 'nullptr' +> 'operator' : illegal operand 'nullptr' **`nullptr`** cannot be an operand. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2390.md b/docs/error-messages/compiler-errors-1/compiler-error-c2390.md index bab715650c8..560ff9bd237 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2390.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2390.md @@ -8,7 +8,7 @@ ms.assetid: 06b749ee-d072-4db1-b229-715f2c0728b5 --- # Compiler Error C2390 -'identifier' : incorrect storage class 'specifier' +> 'identifier' : incorrect storage class 'specifier' The storage class is not valid for the global-scope identifier. The default storage class is used in place of the invalid class. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2391.md b/docs/error-messages/compiler-errors-1/compiler-error-c2391.md index b1895fb9ffc..f6ad9dd6855 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2391.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2391.md @@ -8,7 +8,7 @@ ms.assetid: 63a9c6b9-03cc-4517-885c-bdcd048643b3 --- # Compiler Error C2391 -'identifier' : 'friend' cannot be used during type definition +> 'identifier' : 'friend' cannot be used during type definition The **`friend`** declaration includes a complete class declaration. A **`friend`** declaration can specify a member function or an elaborated type specifier, but not a complete class declaration. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2392.md b/docs/error-messages/compiler-errors-1/compiler-error-c2392.md index 81f7a1df2e4..07a98fee35b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2392.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2392.md @@ -8,7 +8,7 @@ ms.assetid: 98ced473-6383-46ed-b79c-21857d65dcb2 --- # Compiler Error C2392 -'method1' : covariant returns types are not supported in managed or WinRTtypes, otherwise 'method2' would be overridden +> 'method1' : covariant returns types are not supported in managed or WinRTtypes, otherwise 'method2' would be overridden Covariant return types are not allowed for Windows Runtime member functions or when compiling with the [/clr (Common Language Runtime Compilation)](../../build/reference/clr-common-language-runtime-compilation.md) option. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2394.md b/docs/error-messages/compiler-errors-1/compiler-error-c2394.md index 7e5ede5979e..530a38259ed 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2394.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2394.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2394"] --- # Compiler Error C2394 -'*type*::operator *operator*': CLR/WinRT operator not valid. At least one parameter must be of the following types: 'T^', 'T^%', 'T^&', where T = 'type' +> '*type*::operator *operator*': CLR/WinRT operator not valid. At least one parameter must be of the following types: 'T^', 'T^%', 'T^&', where T = 'type' An operator in a Windows Runtime or managed type did not have at least one parameter whose type is the same as the type of the operator return value. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2395.md b/docs/error-messages/compiler-errors-1/compiler-error-c2395.md index 214524e4d84..e0cf7a4b0b6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2395.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2395.md @@ -8,7 +8,7 @@ ms.assetid: 2d9e3b28-8c2c-4f41-a57f-61ef88fc2af0 --- # Compiler Error C2395 -'your_type::operator'op'' : CLR or WinRT operator not valid. At least one parameter must be of the following types: 'T', 'T%', 'T&', 'T^', 'T^%', 'T^&', where T = 'your_type' +> 'your_type::operator'op'' : CLR or WinRT operator not valid. At least one parameter must be of the following types: 'T', 'T%', 'T&', 'T^', 'T^%', 'T^&', where T = 'your_type' An operator in a Windows Runtime or managed type did not have at least one parameter whose type is the same as the type of the operator return value. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2396.md b/docs/error-messages/compiler-errors-1/compiler-error-c2396.md index 1bbd9657c83..77153e4f070 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2396.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2396.md @@ -8,7 +8,7 @@ ms.assetid: 1b515ef6-7af4-400f-b4ed-564313ea15f6 --- # Compiler Error C2396 -'your_type::operator'type'' : CLR or WinRT user-defined conversion functionnot valid. Must either convert from or convert to: 'T^', 'T^%', 'T^&', where T = 'your_type' +> 'your_type::operator'type'' : CLR or WinRT user-defined conversion functionnot valid. Must either convert from or convert to: 'T^', 'T^%', 'T^&', where T = 'your_type' A conversion function in a Windows Runtime or managed type did not have at least one parameter whose type is the same as the type containing the conversion function. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2397.md b/docs/error-messages/compiler-errors-1/compiler-error-c2397.md index 56f01154682..193667832ca 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2397.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2397.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2397"] --- # Compiler Error C2397 -conversion from 'type_1' to 'type_2' requires a narrowing conversion +> conversion from 'type_1' to 'type_2' requires a narrowing conversion An implicit narrowing conversion was found when using uniform initialization. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2400.md b/docs/error-messages/compiler-errors-1/compiler-error-c2400.md index 5cde822bb86..195adc0e402 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2400.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2400.md @@ -8,7 +8,7 @@ ms.assetid: 1ba441ee-73f9-42a5-bfe9-fbeab93808eb --- # Compiler Error C2400 -inline assembler syntax error in 'context'; found 'token' +> inline assembler syntax error in 'context'; found 'token' The token caused a syntax error in the specified context. From 46a375b7d9cf9d93cb610202217d327737f4f03f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 25 Jul 2025 23:37:23 +0800 Subject: [PATCH 1175/2255] Add "Remarks" and "Example" headings for error references in range [C2381, C2400] --- docs/error-messages/compiler-errors-1/compiler-error-c2381.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2382.md | 4 ++-- docs/error-messages/compiler-errors-1/compiler-error-c2383.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2384.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2385.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2386.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2387.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2388.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2389.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2390.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2391.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2392.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2394.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2395.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2396.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2397.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2400.md | 4 ++++ 17 files changed, 58 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2381.md b/docs/error-messages/compiler-errors-1/compiler-error-c2381.md index af5336da248..44d9c8351f5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2381.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2381.md @@ -10,8 +10,12 @@ ms.assetid: cc765f67-64ac-406f-93ef-ae7d548d58d7 > 'function' : redefinition; __declspec(noreturn) differs +## Remarks + A function was declared and then defined but the definition used the [noreturn](../../cpp/noreturn.md) **`__declspec`** modifier. The use of `noreturn` constitutes a redefinition of the function; the declaration and definition need to agree on the use of `noreturn`. +## Example + The following sample generates C2381: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2382.md b/docs/error-messages/compiler-errors-1/compiler-error-c2382.md index 93ae496d52e..529b8deeff4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2382.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2382.md @@ -10,10 +10,10 @@ ms.assetid: 4d4436f9-d0d6-4bd0-b8ec-767b89adfb2f > '*function*' : redefinition; different exception specifications -This error indicates that a function overload was attempted only on the [exception specification](../../cpp/exception-specifications-throw-cpp.md). - ## Remarks +This error indicates that a function overload was attempted only on the [exception specification](../../cpp/exception-specifications-throw-cpp.md). + By default, the compiler considers a `noexcept` specification to be equivalent to a `throw()` or `throw(some_type)` specification. Under [`/Za`](../../build/reference/za-ze-disable-language-extensions.md), this check is more strict. To resolve this issue, change all declarations and definitions of the function (or the specific function overload) to use the same exception specification. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2383.md b/docs/error-messages/compiler-errors-1/compiler-error-c2383.md index ad9b8f2d40f..01789d54919 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2383.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2383.md @@ -10,6 +10,8 @@ ms.assetid: 6696221d-879c-477a-a0f3-a6edc15fd3d7 > '*symbol*' : default-arguments are not allowed on this symbol +## Remarks + The C++ compiler does not allow default arguments on pointers to functions. This code was accepted by the Microsoft C++ compiler in versions before Visual Studio 2005, but now gives an error. For code that works in all versions of Visual C++, do not assign a default value to a pointer-to-function argument. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2384.md b/docs/error-messages/compiler-errors-1/compiler-error-c2384.md index a13c0fbd1c6..31fc667465c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2384.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2384.md @@ -10,10 +10,14 @@ ms.assetid: 8145f7ad-31b1-406d-ac43-0d557feab635 > 'member' : cannot apply __declspec(thread) to a member of a managed or WinRT class +## Remarks + The [thread](../../cpp/thread.md) **`__declspec`** modifier cannot be used on a member of a managed or Windows Runtime class. Static thread local storage in managed code can only be used for statically loaded DLLs—the DLL must be statically loaded when the process starts. Windows Runtime does not support thread local storage. +## Example + The following line generates C2384 and shows how to fix it in C++/CLI code: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2385.md b/docs/error-messages/compiler-errors-1/compiler-error-c2385.md index 073c282ce9b..f0cc2f5da6e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2385.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2385.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C2385"] > ambiguous access of 'member' +## Remarks + A member is inherited from more than one base type, making unqualified access to that member ambiguous. To resolve this error: - Explicitly qualify access to the member. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2386.md b/docs/error-messages/compiler-errors-1/compiler-error-c2386.md index 6f1df04435a..9cc14ac1d02 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2386.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2386.md @@ -10,8 +10,12 @@ ms.assetid: aaaa1284-34a0-4da2-8547-9fcbb559dae0 > 'symbol' : a symbol with this name already exists in the current scope +## Remarks + You tried to create a namespace alias, but the name you chose already exists. +## Example + The following sample generates C2386: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2387.md b/docs/error-messages/compiler-errors-1/compiler-error-c2387.md index 937b7a7845e..90a5ac9d6f9 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2387.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2387.md @@ -10,10 +10,14 @@ ms.assetid: 6847b8e1-ffac-458d-ab88-0c92f72f2527 > 'type' : ambiguous base class +## Remarks + The compiler could not unambiguously resolve a function call because the function exists in more than one base class. To resolve this error, either remove one of the base classes from the inheritance, or explicitly qualify the function call. +## Example + The following sample generates C2387: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2388.md b/docs/error-messages/compiler-errors-1/compiler-error-c2388.md index e59d9f3c8aa..861d94850fd 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2388.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2388.md @@ -10,10 +10,14 @@ ms.assetid: 764ad2d7-cb04-425f-ba30-70989488c4a4 > 'symbol' : a symbol cannot be declared with both __declspec(appdomain) and \__declspec(process) +## Remarks + The `appdomain` and `process` **`__declspec`** modifiers cannot be used on the same symbol. The storage for a variable exists per process or per application domain. For more information, see [appdomain](../../cpp/appdomain.md) and [process](../../cpp/process.md). +## Example + The following sample generates C2388: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2389.md b/docs/error-messages/compiler-errors-1/compiler-error-c2389.md index 50280e033bb..ea2e150f55d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2389.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2389.md @@ -10,8 +10,12 @@ ms.assetid: 6122dc81-4ee3-49a5-a67d-d867808c9bac > 'operator' : illegal operand 'nullptr' +## Remarks + **`nullptr`** cannot be an operand. +## Example + The following sample generates C2389: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2390.md b/docs/error-messages/compiler-errors-1/compiler-error-c2390.md index 560ff9bd237..5563557ecfc 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2390.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2390.md @@ -10,6 +10,8 @@ ms.assetid: 06b749ee-d072-4db1-b229-715f2c0728b5 > 'identifier' : incorrect storage class 'specifier' +## Remarks + The storage class is not valid for the global-scope identifier. The default storage class is used in place of the invalid class. Possible resolutions: diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2391.md b/docs/error-messages/compiler-errors-1/compiler-error-c2391.md index f6ad9dd6855..f056e786437 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2391.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2391.md @@ -10,8 +10,12 @@ ms.assetid: 63a9c6b9-03cc-4517-885c-bdcd048643b3 > 'identifier' : 'friend' cannot be used during type definition +## Remarks + The **`friend`** declaration includes a complete class declaration. A **`friend`** declaration can specify a member function or an elaborated type specifier, but not a complete class declaration. +## Example + The following sample generates C2326: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2392.md b/docs/error-messages/compiler-errors-1/compiler-error-c2392.md index 07a98fee35b..56d84b13180 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2392.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2392.md @@ -10,6 +10,8 @@ ms.assetid: 98ced473-6383-46ed-b79c-21857d65dcb2 > 'method1' : covariant returns types are not supported in managed or WinRTtypes, otherwise 'method2' would be overridden +## Remarks + Covariant return types are not allowed for Windows Runtime member functions or when compiling with the [/clr (Common Language Runtime Compilation)](../../build/reference/clr-common-language-runtime-compilation.md) option. ## Example diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2394.md b/docs/error-messages/compiler-errors-1/compiler-error-c2394.md index 530a38259ed..8d79179efba 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2394.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2394.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C2394"] > '*type*::operator *operator*': CLR/WinRT operator not valid. At least one parameter must be of the following types: 'T^', 'T^%', 'T^&', where T = 'type' +## Remarks + An operator in a Windows Runtime or managed type did not have at least one parameter whose type is the same as the type of the operator return value. +## Example + The following sample generates C2394: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2395.md b/docs/error-messages/compiler-errors-1/compiler-error-c2395.md index e0cf7a4b0b6..419c68d92f3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2395.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2395.md @@ -10,8 +10,12 @@ ms.assetid: 2d9e3b28-8c2c-4f41-a57f-61ef88fc2af0 > 'your_type::operator'op'' : CLR or WinRT operator not valid. At least one parameter must be of the following types: 'T', 'T%', 'T&', 'T^', 'T^%', 'T^&', where T = 'your_type' +## Remarks + An operator in a Windows Runtime or managed type did not have at least one parameter whose type is the same as the type of the operator return value. +## Example + The following sample generates C2395 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2396.md b/docs/error-messages/compiler-errors-1/compiler-error-c2396.md index 77153e4f070..03130bda5fa 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2396.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2396.md @@ -10,8 +10,12 @@ ms.assetid: 1b515ef6-7af4-400f-b4ed-564313ea15f6 > 'your_type::operator'type'' : CLR or WinRT user-defined conversion functionnot valid. Must either convert from or convert to: 'T^', 'T^%', 'T^&', where T = 'your_type' +## Remarks + A conversion function in a Windows Runtime or managed type did not have at least one parameter whose type is the same as the type containing the conversion function. +## Example + The following sample generates C2396 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2397.md b/docs/error-messages/compiler-errors-1/compiler-error-c2397.md index 193667832ca..c45124cda37 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2397.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2397.md @@ -9,12 +9,16 @@ helpviewer_keywords: ["C2397"] > conversion from 'type_1' to 'type_2' requires a narrowing conversion +## Remarks + An implicit narrowing conversion was found when using uniform initialization. The C language allows implicit narrowing conversions in assignments and initialization, and C++ follows suit, even though unexpected narrowing is a cause of many code errors. To make code safer, the C++ standard requires a diagnostic message when a narrowing conversion occurs in an initialization list. In Visual C++, the diagnostic is Compiler Error C2397 when using the uniform initialization syntax supported beginning in Visual Studio 2015. The compiler generates [Compiler Warning (level 1) C4838](../../error-messages/compiler-warnings/compiler-warning-level-1-c4838.md) when using the list or aggregate initialization syntax supported by Visual Studio 2013. A narrowing conversion can be okay when you know the possible range of converted values can fit in the target. In this case, you know more than the compiler does. If you make a narrowing conversion intentionally, make your intentions explicit by using a static cast. Otherwise, this error message almost always indicates you have a bug in your code. You can fix it by making sure the objects you initialize have types that are large enough to handle the inputs. +## Example + The following sample generates C2397: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2400.md b/docs/error-messages/compiler-errors-1/compiler-error-c2400.md index 195adc0e402..c740f99197e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2400.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2400.md @@ -10,8 +10,12 @@ ms.assetid: 1ba441ee-73f9-42a5-bfe9-fbeab93808eb > inline assembler syntax error in 'context'; found 'token' +## Remarks + The token caused a syntax error in the specified context. +## Example + The following sample generates C2400: ```cpp From a6b477fdd8d05fa5853c4788536c9f0104febf81 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 25 Jul 2025 23:40:45 +0800 Subject: [PATCH 1176/2255] Replace term "sample" with "example" for error references in range [C2381, C2400] --- docs/error-messages/compiler-errors-1/compiler-error-c2381.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2382.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2385.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2386.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2387.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2388.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2389.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2390.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2391.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2392.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2393.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2394.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2395.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2396.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2397.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2400.md | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2381.md b/docs/error-messages/compiler-errors-1/compiler-error-c2381.md index 44d9c8351f5..93d784ee37f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2381.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2381.md @@ -16,7 +16,7 @@ A function was declared and then defined but the definition used the [noreturn]( ## Example -The following sample generates C2381: +The following example generates C2381: ```cpp // C2381.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2382.md b/docs/error-messages/compiler-errors-1/compiler-error-c2382.md index 529b8deeff4..55e19fb590c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2382.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2382.md @@ -20,7 +20,7 @@ To resolve this issue, change all declarations and definitions of the function ( ## Example -The following sample generates C2382: +The following example generates C2382: ```cpp // C2382.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2385.md b/docs/error-messages/compiler-errors-1/compiler-error-c2385.md index f0cc2f5da6e..f4d69730784 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2385.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2385.md @@ -20,7 +20,7 @@ A member is inherited from more than one base type, making unqualified access to ## Example -The following sample generates C2385: +The following example generates C2385: ```cpp // C2385.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2386.md b/docs/error-messages/compiler-errors-1/compiler-error-c2386.md index 9cc14ac1d02..1c48af13013 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2386.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2386.md @@ -16,7 +16,7 @@ You tried to create a namespace alias, but the name you chose already exists. ## Example -The following sample generates C2386: +The following example generates C2386: ```cpp // C2386.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2387.md b/docs/error-messages/compiler-errors-1/compiler-error-c2387.md index 90a5ac9d6f9..4cc1ece6100 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2387.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2387.md @@ -18,7 +18,7 @@ To resolve this error, either remove one of the base classes from the inheritanc ## Example -The following sample generates C2387: +The following example generates C2387: ```cpp // C2387.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2388.md b/docs/error-messages/compiler-errors-1/compiler-error-c2388.md index 861d94850fd..b9226eb11e5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2388.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2388.md @@ -18,7 +18,7 @@ For more information, see [appdomain](../../cpp/appdomain.md) and [process](../. ## Example -The following sample generates C2388: +The following example generates C2388: ```cpp // C2388.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2389.md b/docs/error-messages/compiler-errors-1/compiler-error-c2389.md index ea2e150f55d..b82f5e9019c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2389.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2389.md @@ -16,7 +16,7 @@ ms.assetid: 6122dc81-4ee3-49a5-a67d-d867808c9bac ## Example -The following sample generates C2389: +The following example generates C2389: ```cpp // C2389.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2390.md b/docs/error-messages/compiler-errors-1/compiler-error-c2390.md index 5563557ecfc..ebf172ad229 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2390.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2390.md @@ -24,7 +24,7 @@ Possible resolutions: ## Example -- The following sample generates C2390: +- The following example generates C2390: ```cpp // C2390.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2391.md b/docs/error-messages/compiler-errors-1/compiler-error-c2391.md index f056e786437..50c1de9467f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2391.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2391.md @@ -16,7 +16,7 @@ The **`friend`** declaration includes a complete class declaration. A **`friend` ## Example -The following sample generates C2326: +The following example generates C2326: ```cpp // C2391.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2392.md b/docs/error-messages/compiler-errors-1/compiler-error-c2392.md index 56d84b13180..93b15c8104e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2392.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2392.md @@ -16,7 +16,7 @@ Covariant return types are not allowed for Windows Runtime member functions or w ## Example -The following sample generates C2392 and shows how to fix it. +The following example generates C2392 and shows how to fix it. ```cpp // C2392.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2393.md b/docs/error-messages/compiler-errors-1/compiler-error-c2393.md index 36d2868f7bf..d3772466d42 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2393.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2393.md @@ -20,7 +20,7 @@ See [/clr (Common Language Runtime Compilation)](../../build/reference/clr-commo ## Example -The following sample generates C2393. To fix this issue, do not create a data segment. +The following example generates C2393. To fix this issue, do not create a data segment. ```cpp // C2393.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2394.md b/docs/error-messages/compiler-errors-1/compiler-error-c2394.md index 8d79179efba..37b38d00054 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2394.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2394.md @@ -15,7 +15,7 @@ An operator in a Windows Runtime or managed type did not have at least one param ## Example -The following sample generates C2394: +The following example generates C2394: ```cpp // C2394.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2395.md b/docs/error-messages/compiler-errors-1/compiler-error-c2395.md index 419c68d92f3..115b7bbd532 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2395.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2395.md @@ -16,7 +16,7 @@ An operator in a Windows Runtime or managed type did not have at least one param ## Example -The following sample generates C2395 and shows how to fix it: +The following example generates C2395 and shows how to fix it: ```cpp // C2395.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2396.md b/docs/error-messages/compiler-errors-1/compiler-error-c2396.md index 03130bda5fa..7877923f408 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2396.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2396.md @@ -16,7 +16,7 @@ A conversion function in a Windows Runtime or managed type did not have at least ## Example -The following sample generates C2396 and shows how to fix it: +The following example generates C2396 and shows how to fix it: ```cpp // C2396.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2397.md b/docs/error-messages/compiler-errors-1/compiler-error-c2397.md index c45124cda37..8563bf8e4fe 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2397.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2397.md @@ -19,7 +19,7 @@ A narrowing conversion can be okay when you know the possible range of converted ## Example -The following sample generates C2397: +The following example generates C2397: ```cpp // C2397.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2400.md b/docs/error-messages/compiler-errors-1/compiler-error-c2400.md index c740f99197e..fb1092feef8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2400.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2400.md @@ -16,7 +16,7 @@ The token caused a syntax error in the specified context. ## Example -The following sample generates C2400: +The following example generates C2400: ```cpp // C2400.cpp From 6f637efcdd037ac78a27598ef3ffa2d298fedaeb Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 25 Jul 2025 23:43:30 +0800 Subject: [PATCH 1177/2255] Update metadata for error references in range [C2381, C2400] --- .../error-messages/compiler-errors-1/compiler-error-c2381.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2382.md | 3 +-- .../error-messages/compiler-errors-1/compiler-error-c2383.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2384.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2385.md | 4 ++-- .../error-messages/compiler-errors-1/compiler-error-c2386.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2387.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2388.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2389.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2390.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2391.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2392.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2393.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2394.md | 2 +- .../error-messages/compiler-errors-1/compiler-error-c2395.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2396.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2400.md | 5 ++--- 17 files changed, 32 insertions(+), 47 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2381.md b/docs/error-messages/compiler-errors-1/compiler-error-c2381.md index 93d784ee37f..01ef31cff42 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2381.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2381.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2381" title: "Compiler Error C2381" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2381" +ms.date: 11/04/2016 f1_keywords: ["C2381"] helpviewer_keywords: ["C2381"] -ms.assetid: cc765f67-64ac-406f-93ef-ae7d548d58d7 --- # Compiler Error C2381 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2382.md b/docs/error-messages/compiler-errors-1/compiler-error-c2382.md index 55e19fb590c..d4542d3dfb9 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2382.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2382.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2382" title: "Compiler Error C2382" +description: "Learn more about: Compiler Error C2382" ms.date: 12/10/2021 f1_keywords: ["C2382"] helpviewer_keywords: ["C2382"] -ms.assetid: 4d4436f9-d0d6-4bd0-b8ec-767b89adfb2f --- # Compiler Error C2382 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2383.md b/docs/error-messages/compiler-errors-1/compiler-error-c2383.md index 01789d54919..07b1a0d9d32 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2383.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2383.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2383" title: "Compiler Error C2383" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2383" +ms.date: 11/04/2016 f1_keywords: ["C2383"] helpviewer_keywords: ["C2383"] -ms.assetid: 6696221d-879c-477a-a0f3-a6edc15fd3d7 --- # Compiler Error C2383 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2384.md b/docs/error-messages/compiler-errors-1/compiler-error-c2384.md index 31fc667465c..19755c18cd9 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2384.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2384.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2384" title: "Compiler Error C2384" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2384" +ms.date: 11/04/2016 f1_keywords: ["C2384"] helpviewer_keywords: ["C2384"] -ms.assetid: 8145f7ad-31b1-406d-ac43-0d557feab635 --- # Compiler Error C2384 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2385.md b/docs/error-messages/compiler-errors-1/compiler-error-c2385.md index f4d69730784..1db2d3606f3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2385.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2385.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Error C2385" title: "Compiler Error C2385" -ms.date: "1/19/2024" +description: "Learn more about: Compiler Error C2385" +ms.date: 1/19/2024 f1_keywords: ["C2385"] helpviewer_keywords: ["C2385"] --- diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2386.md b/docs/error-messages/compiler-errors-1/compiler-error-c2386.md index 1c48af13013..0c6ef1105bd 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2386.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2386.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2386" title: "Compiler Error C2386" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2386" +ms.date: 11/04/2016 f1_keywords: ["C2386"] helpviewer_keywords: ["C2386"] -ms.assetid: aaaa1284-34a0-4da2-8547-9fcbb559dae0 --- # Compiler Error C2386 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2387.md b/docs/error-messages/compiler-errors-1/compiler-error-c2387.md index 4cc1ece6100..d14ff9cbb32 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2387.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2387.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2387" title: "Compiler Error C2387" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2387" +ms.date: 11/04/2016 f1_keywords: ["C2387"] helpviewer_keywords: ["C2387"] -ms.assetid: 6847b8e1-ffac-458d-ab88-0c92f72f2527 --- # Compiler Error C2387 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2388.md b/docs/error-messages/compiler-errors-1/compiler-error-c2388.md index b9226eb11e5..8c10c31f398 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2388.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2388.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2388" title: "Compiler Error C2388" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2388" +ms.date: 11/04/2016 f1_keywords: ["C2388"] helpviewer_keywords: ["C2388"] -ms.assetid: 764ad2d7-cb04-425f-ba30-70989488c4a4 --- # Compiler Error C2388 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2389.md b/docs/error-messages/compiler-errors-1/compiler-error-c2389.md index b82f5e9019c..4c354f6d1f2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2389.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2389.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2389" title: "Compiler Error C2389" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2389" +ms.date: 11/04/2016 f1_keywords: ["C2389"] helpviewer_keywords: ["C2389"] -ms.assetid: 6122dc81-4ee3-49a5-a67d-d867808c9bac --- # Compiler Error C2389 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2390.md b/docs/error-messages/compiler-errors-1/compiler-error-c2390.md index ebf172ad229..8754be37546 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2390.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2390.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2390" title: "Compiler Error C2390" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2390" +ms.date: 11/04/2016 f1_keywords: ["C2390"] helpviewer_keywords: ["C2390"] -ms.assetid: 06b749ee-d072-4db1-b229-715f2c0728b5 --- # Compiler Error C2390 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2391.md b/docs/error-messages/compiler-errors-1/compiler-error-c2391.md index 50c1de9467f..dcf10dedd8e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2391.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2391.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2391" title: "Compiler Error C2391" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2391" +ms.date: 11/04/2016 f1_keywords: ["C2391"] helpviewer_keywords: ["C2391"] -ms.assetid: 63a9c6b9-03cc-4517-885c-bdcd048643b3 --- # Compiler Error C2391 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2392.md b/docs/error-messages/compiler-errors-1/compiler-error-c2392.md index 93b15c8104e..70e6acb33cb 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2392.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2392.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2392" title: "Compiler Error C2392" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2392" +ms.date: 11/04/2016 f1_keywords: ["C2392"] helpviewer_keywords: ["C2392"] -ms.assetid: 98ced473-6383-46ed-b79c-21857d65dcb2 --- # Compiler Error C2392 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2393.md b/docs/error-messages/compiler-errors-1/compiler-error-c2393.md index d3772466d42..fe80176868d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2393.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2393.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2393" title: "Compiler Error C2393" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2393" +ms.date: 11/04/2016 f1_keywords: ["C2393"] helpviewer_keywords: ["C2393"] -ms.assetid: 4bd95728-e813-4ce8-844a-c6ebe235ca82 --- # Compiler Error C2393 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2394.md b/docs/error-messages/compiler-errors-1/compiler-error-c2394.md index 37b38d00054..58274a9b468 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2394.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2394.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C2394" description: "Learn more about: Compiler Error C2394" -ms.date: "11/04/2016" +ms.date: 11/04/2016 f1_keywords: ["C2394"] helpviewer_keywords: ["C2394"] --- diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2395.md b/docs/error-messages/compiler-errors-1/compiler-error-c2395.md index 115b7bbd532..1d4a90319a9 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2395.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2395.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2395" title: "Compiler Error C2395" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2395" +ms.date: 11/04/2016 f1_keywords: ["C2395"] helpviewer_keywords: ["C2395"] -ms.assetid: 2d9e3b28-8c2c-4f41-a57f-61ef88fc2af0 --- # Compiler Error C2395 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2396.md b/docs/error-messages/compiler-errors-1/compiler-error-c2396.md index 7877923f408..8fa97066805 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2396.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2396.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2396" title: "Compiler Error C2396" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2396" +ms.date: 11/04/2016 f1_keywords: ["C2396"] helpviewer_keywords: ["C2396"] -ms.assetid: 1b515ef6-7af4-400f-b4ed-564313ea15f6 --- # Compiler Error C2396 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2400.md b/docs/error-messages/compiler-errors-1/compiler-error-c2400.md index fb1092feef8..88ccb9b2eec 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2400.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2400.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2400" title: "Compiler Error C2400" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2400" +ms.date: 11/04/2016 f1_keywords: ["C2400"] helpviewer_keywords: ["C2400"] -ms.assetid: 1ba441ee-73f9-42a5-bfe9-fbeab93808eb --- # Compiler Error C2400 From bc23da40f37bbf03c9504baeb7b5e71e7ed50c9a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 26 Jul 2025 07:32:32 +0800 Subject: [PATCH 1178/2255] Clean up superfluous trailing spaces in `toc.yml`s (#5502) I own these. --- docs/build/toc.yml | 4 ++-- docs/c-language/toc.yml | 2 +- docs/c-runtime-library/toc.yml | 2 +- docs/cpp/toc.yml | 2 +- docs/cross-platform/toc.yml | 2 +- docs/embedded/toc.yml | 2 +- docs/error-messages/toc.yml | 2 +- docs/get-started/toc.yml | 6 +++--- docs/ide/toc.yml | 2 +- docs/intrinsics/toc.yml | 2 +- docs/mfc/toc.yml | 4 ++-- docs/preprocessor/toc.yml | 2 +- docs/standard-library/toc.yml | 4 ++-- 13 files changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/build/toc.yml b/docs/build/toc.yml index 444ec54501b..40514a75141 100644 --- a/docs/build/toc.yml +++ b/docs/build/toc.yml @@ -408,7 +408,7 @@ items: - name: Command line property pages href: ../build/reference/command-line-property-pages.md - name: NMake property page - href: ../build/reference/nmake-property-page.md + href: ../build/reference/nmake-property-page.md - name: Manifest Tool property pages href: ../build/reference/manifest-tool-property-pages.md - name: Resources property pages @@ -1181,7 +1181,7 @@ items: href: ../build/reference/nmake-reference.md - name: NMAKE projects in Visual Studio href: ../build/reference/creating-a-makefile-project.md - - name: Running NMAKE + - name: Running NMAKE href: ../build/reference/running-nmake.md - name: Makefile contents and features href: ../build/reference/contents-of-a-makefile.md diff --git a/docs/c-language/toc.yml b/docs/c-language/toc.yml index cfd26f82ed8..13334cd6b4e 100644 --- a/docs/c-language/toc.yml +++ b/docs/c-language/toc.yml @@ -444,7 +444,7 @@ items: - name: Inline assembler (C) href: ../c-language/inline-assembler-c.md - name: _Noreturn (C) - href: ../c-language/noreturn.md + href: ../c-language/noreturn.md - name: DLL import and export functions items: - name: DLL import and export functions diff --git a/docs/c-runtime-library/toc.yml b/docs/c-runtime-library/toc.yml index 4eb9c708b3c..926d9dd23ff 100644 --- a/docs/c-runtime-library/toc.yml +++ b/docs/c-runtime-library/toc.yml @@ -75,7 +75,7 @@ items: - name: Global state in the CRT href: ../c-runtime-library/global-state.md - name: Type-generic math - href: ../c-runtime-library/tgmath.md + href: ../c-runtime-library/tgmath.md - name: C runtime (CRT) and C++ Standard Library (STL) .lib files href: ../c-runtime-library/crt-library-features.md - name: Universal C runtime routines by category diff --git a/docs/cpp/toc.yml b/docs/cpp/toc.yml index 35e1c6921a8..1c9d0872d8e 100644 --- a/docs/cpp/toc.yml +++ b/docs/cpp/toc.yml @@ -369,7 +369,7 @@ items: - name: Pimpl idiom for compile-time encapsulation href: ../cpp/pimpl-for-compile-time-encapsulation-modern-cpp.md - name: Portability at ABI boundaries - href: ../cpp/portability-at-abi-boundaries-modern-cpp.md + href: ../cpp/portability-at-abi-boundaries-modern-cpp.md - name: Constructors items: - name: Constructors diff --git a/docs/cross-platform/toc.yml b/docs/cross-platform/toc.yml index 4446b6541ff..22771c639f1 100644 --- a/docs/cross-platform/toc.yml +++ b/docs/cross-platform/toc.yml @@ -2,7 +2,7 @@ items: - name: Cross-platform mobile development with C++ href: ../cross-platform/index.yml - name: Overview - href: ../cross-platform/visual-cpp-for-cross-platform-mobile-development.md + href: ../cross-platform/visual-cpp-for-cross-platform-mobile-development.md - name: Get Started expanded: true items: diff --git a/docs/embedded/toc.yml b/docs/embedded/toc.yml index 01279ba35c7..b948c79311e 100644 --- a/docs/embedded/toc.yml +++ b/docs/embedded/toc.yml @@ -19,7 +19,7 @@ items: href: ./peripheral-view.md - name: RTOS View href: ./rtos-view.md - - name: Serial Monitor + - name: Serial Monitor href: ./serial-monitor.md - name: vcpkg artifacts href: https://devblogs.microsoft.com/cppblog/vcpkg-artifacts/ diff --git a/docs/error-messages/toc.yml b/docs/error-messages/toc.yml index ed8722eb608..acb65fcdd54 100644 --- a/docs/error-messages/toc.yml +++ b/docs/error-messages/toc.yml @@ -4437,7 +4437,7 @@ items: href: tool-errors/cvtres-fatal-error-cvt1105.md - name: CVTRES warning CVT4001 href: tool-errors/cvtres-warning-cvt4001.md -- name: Expression evaluator errors +- name: Expression evaluator errors expanded: false items: - name: Expression evaluator errors (CXXxxxx) diff --git a/docs/get-started/toc.yml b/docs/get-started/toc.yml index 224ea3f49a3..49961e13203 100644 --- a/docs/get-started/toc.yml +++ b/docs/get-started/toc.yml @@ -25,7 +25,7 @@ items: items: - name: Create a console app href: tutorial-console-cpp.md - - name: Create a Universal Windows Platform app + - name: Create a Universal Windows Platform app href: /windows/uwp/cpp-and-winrt-apis/get-started - name: Create a Windows Desktop app href: /windows/desktop/learnwin32/learn-to-program-for-windows @@ -44,9 +44,9 @@ items: items: - name: Open code from a repo href: /visualstudio/get-started/tutorial-open-project-from-repo - - name: Write and edit code + - name: Write and edit code href: /visualstudio/get-started/tutorial-editor - - name: Compile and build + - name: Compile and build href: /visualstudio/ide/compiling-and-building-in-visual-studio - name: Debug your C++ code href: /visualstudio/debugger/quickstart-debug-with-cplusplus diff --git a/docs/ide/toc.yml b/docs/ide/toc.yml index c208f599e60..0b58b7607e9 100644 --- a/docs/ide/toc.yml +++ b/docs/ide/toc.yml @@ -93,7 +93,7 @@ items: - name: Add a method href: ../ide/adding-a-method-visual-cpp.md - name: Add an IDL method - href: ../ide/add-interface-definition-library-method-wizard.md + href: ../ide/add-interface-definition-library-method-wizard.md - name: Add a property href: ../ide/adding-a-property-visual-cpp.md - name: Add an IDL property diff --git a/docs/intrinsics/toc.yml b/docs/intrinsics/toc.yml index eb04364ed40..0c9053c8c38 100644 --- a/docs/intrinsics/toc.yml +++ b/docs/intrinsics/toc.yml @@ -40,7 +40,7 @@ items: - name: _bittestandset, _bittestandset64 href: ../intrinsics/bittestandset-bittestandset64.md - name: __check_isa_support, __check_arch_support - href: ../intrinsics/check-isa-arch-support.md + href: ../intrinsics/check-isa-arch-support.md - name: __cpuid, __cpuidex href: ../intrinsics/cpuid-cpuidex.md - name: __debugbreak diff --git a/docs/mfc/toc.yml b/docs/mfc/toc.yml index eff745b7441..691f07b181b 100644 --- a/docs/mfc/toc.yml +++ b/docs/mfc/toc.yml @@ -2919,6 +2919,6 @@ items: - name: Add a method to an IDL interface in a MFC project href: reference/add-idl-mfc-method-wizard.md - name: Add a property to an IDL interface in a MFC project - href: reference/add-interface-definition-library-mfc-property-wizard.md + href: reference/add-interface-definition-library-mfc-property-wizard.md - name: MFC class wizard - href: reference/mfc-class-wizard.md \ No newline at end of file + href: reference/mfc-class-wizard.md \ No newline at end of file diff --git a/docs/preprocessor/toc.yml b/docs/preprocessor/toc.yml index a2121985ada..4535a25eb64 100644 --- a/docs/preprocessor/toc.yml +++ b/docs/preprocessor/toc.yml @@ -7,7 +7,7 @@ items: - name: Preprocessor href: ../preprocessor/preprocessor.md - name: New preprocessor overview - href: ../preprocessor/preprocessor-experimental-overview.md + href: ../preprocessor/preprocessor-experimental-overview.md - name: Phases of translation href: ../preprocessor/phases-of-translation.md - name: Preprocessor directives diff --git a/docs/standard-library/toc.yml b/docs/standard-library/toc.yml index da060708822..40f30f1268f 100644 --- a/docs/standard-library/toc.yml +++ b/docs/standard-library/toc.yml @@ -169,9 +169,9 @@ items: href: gps-clock-class.md - name: hh_mm_ss class href: hhmmss-class.md - - name: high_resolution_clock struct + - name: high_resolution_clock struct href: high-resolution-clock-struct.md - - name: is_clock struct + - name: is_clock struct href: is-clock-struct.md - name: last_spec href: last-spec-struct.md From 068cb24921f656f37c1a8ab411f5955bec86a93a Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 25 Jul 2025 17:27:46 -0700 Subject: [PATCH 1179/2255] uuf fixes (#6021) --- docs/build/x64-calling-convention.md | 2 +- ...how-to-create-and-use-ccomptr-and-ccomqiptr-instances.md | 3 +-- docs/cpp/lvalues-and-rvalues-visual-cpp.md | 2 +- docs/parallel/openmp/reference/openmp-directives.md | 2 +- docs/preprocessor/optimize.md | 6 +++--- 5 files changed, 7 insertions(+), 8 deletions(-) diff --git a/docs/build/x64-calling-convention.md b/docs/build/x64-calling-convention.md index abb153a8468..bf4a575b47f 100644 --- a/docs/build/x64-calling-convention.md +++ b/docs/build/x64-calling-convention.md @@ -93,7 +93,7 @@ If parameters are passed via varargs (for example, ellipsis arguments), then the For functions not fully prototyped, the caller passes integer values as integers and floating-point values as double precision. For floating-point values only, both the integer register and the floating-point register contain the float value in case the callee expects the value in the integer registers. -```cpp +```c func1(); func2() { // RCX = 2, RDX = XMM1 = 1.0, and R8 = 7 func1(2, 1.0, 7); diff --git a/docs/cpp/how-to-create-and-use-ccomptr-and-ccomqiptr-instances.md b/docs/cpp/how-to-create-and-use-ccomptr-and-ccomqiptr-instances.md index 37f9edb3800..a780106d816 100644 --- a/docs/cpp/how-to-create-and-use-ccomptr-and-ccomqiptr-instances.md +++ b/docs/cpp/how-to-create-and-use-ccomptr-and-ccomqiptr-instances.md @@ -3,7 +3,6 @@ description: "Learn more about: How to: Create and use CComPtr and CComQIPtr ins title: "How to: Create and use CComPtr and CComQIPtr instances" ms.custom: "how-to" ms.date: "11/19/2019" -ms.assetid: b0356cfb-12cc-4ee8-b988-8311ed1ab5e0 --- # How to: Create and use CComPtr and CComQIPtr instances @@ -19,7 +18,7 @@ The following example shows how to use `CComPtr` to instantiate a COM object and `CComPtr` and its relatives are part of the ATL and are defined in \. `_com_ptr_t` is declared in \. The compiler creates specializations of `_com_ptr_t` when it generates wrapper classes for type libraries. -## Example: CComQIPt +## Example: CComQIPtr ATL also provides `CComQIPtr`, which has a simpler syntax for querying a COM object to retrieve an additional interface. However, we recommend `CComPtr` because it does everything that `CComQIPtr` can do and is semantically more consistent with raw COM interface pointers. If you use a `CComPtr` to query for an interface, the new interface pointer is placed in an out parameter. If the call fails, an HRESULT is returned, which is the typical COM pattern. With `CComQIPtr`, the return value is the pointer itself, and if the call fails, the internal HRESULT return value cannot be accessed. The following two lines show how the error handling mechanisms in `CComPtr` and `CComQIPtr` differ. diff --git a/docs/cpp/lvalues-and-rvalues-visual-cpp.md b/docs/cpp/lvalues-and-rvalues-visual-cpp.md index 0fb47aa4e20..ad2e8ebae47 100644 --- a/docs/cpp/lvalues-and-rvalues-visual-cpp.md +++ b/docs/cpp/lvalues-and-rvalues-visual-cpp.md @@ -27,7 +27,7 @@ An lvalue has an address that your program can access. Examples of lvalue expres A prvalue expression has no address that is accessible by your program. Examples of prvalue expressions include literals, function calls that return a nonreference type, and temporary objects that are created during expression evaluation but accessible only by the compiler. -An xvalue expression has an address that no longer accessible by your program but can be used to initialize an rvalue reference, which provides access to the expression. Examples include function calls that return an rvalue reference, and the array subscript, member and pointer to member expressions where the array or object is an rvalue reference. +An xvalue expression has an address that is no longer accessible by your program but can be used to initialize an rvalue reference, which provides access to the expression. Examples include function calls that return an rvalue reference, and the array subscript, member and pointer to member expressions where the array or object is an rvalue reference. ## Example diff --git a/docs/parallel/openmp/reference/openmp-directives.md b/docs/parallel/openmp/reference/openmp-directives.md index 2e841d21386..ef1fd1944d8 100644 --- a/docs/parallel/openmp/reference/openmp-directives.md +++ b/docs/parallel/openmp/reference/openmp-directives.md @@ -28,7 +28,7 @@ For main thread and synchronization: |[master](#master)|Specifies that only the main thread should execute a section of the program.| |[critical](#critical)|Specifies that code is only executed on one thread at a time.| |[barrier](#barrier)|Synchronizes all threads in a team; all threads pause at the barrier, until all threads execute the barrier.| -|[atomic](#atomic)|Specifies that a memory location that will be updated atomically.| +|[atomic](#atomic)|Specifies that a memory location will be updated atomically.| |[flush](#flush-openmp)|Specifies that all threads have the same view of memory for all shared objects.| |[ordered](#ordered-openmp-directives)|Specifies that code under a parallelized `for` loop should be executed like a sequential loop.| diff --git a/docs/preprocessor/optimize.md b/docs/preprocessor/optimize.md index ddcd04b8333..f8dd4c96252 100644 --- a/docs/preprocessor/optimize.md +++ b/docs/preprocessor/optimize.md @@ -1,7 +1,7 @@ --- description: "Learn more about: optimize pragma" title: "optimize pragma" -ms.date: 01/22/2021 +ms.date: 07/25/2025 f1_keywords: ["vc-pragma.optimize", "optimize_CPP"] helpviewer_keywords: ["pragma, optimize", "optimize pragma"] no-loc: ["pragma"] @@ -25,8 +25,8 @@ The *optimization-list* can be zero or more of the parameters shown in the follo | Parameter(s) | Type of optimization | |--------------------|--------------------------| | **`g`** | Enable global optimizations. Deprecated. For more information, see [`/Og` (Global optimizations)](../build/reference/og-global-optimizations.md). | -| **`s`** or **`t`** | Specify short or fast sequences of machine code. | -| **`y`** | Generate frame pointers on the program stack. | +| **`s`** or **`t`** | Favor short or fast sequences of machine code. | +| **`y`** | Omit frame pointers on the program stack. | These parameters are the same letters used with the [`/O`](../build/reference/o-options-optimize-code.md) compiler options. For example, the following pragma is equivalent to the **`/Os`** compiler option: From 5073e7680733a9110e3014f89e2673e828ab4a7d Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 26 Jul 2025 22:48:15 +0800 Subject: [PATCH 1180/2255] Add blockquotes for error messages in range [C2401, C2430] --- docs/error-messages/compiler-errors-1/compiler-error-c2401.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2402.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2403.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2404.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2405.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2406.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2407.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2408.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2409.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2410.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2411.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2412.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2413.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2414.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2415.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2417.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2418.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2419.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2420.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2421.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2422.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2423.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2424.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2425.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2426.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2427.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2428.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2430.md | 2 +- 28 files changed, 28 insertions(+), 28 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2401.md b/docs/error-messages/compiler-errors-1/compiler-error-c2401.md index 7a729d9dc0a..31c61490008 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2401.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2401.md @@ -8,6 +8,6 @@ ms.assetid: 4c237b34-f771-4106-93e2-82dae337f1e2 --- # Compiler Error C2401 -'identifier' : register must be base in 'context' +> 'identifier' : register must be base in 'context' The register used in an indirect memory operand must be a base register in this context. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2402.md b/docs/error-messages/compiler-errors-1/compiler-error-c2402.md index 82a4fc4ea0e..8574a5f3841 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2402.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2402.md @@ -8,6 +8,6 @@ ms.assetid: 23fa63e1-ea9e-482f-be2e-a205c548ba69 --- # Compiler Error C2402 -'identifier' : register must be index in 'context' +> 'identifier' : register must be index in 'context' The register used in an indirect memory operand must be an index register in this context. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2403.md b/docs/error-messages/compiler-errors-1/compiler-error-c2403.md index c570c28dd6f..93799fc4d77 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2403.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2403.md @@ -8,6 +8,6 @@ ms.assetid: add1f0ba-96b6-4df3-b53f-de1433d80c0c --- # Compiler Error C2403 -'identifier' : register must be base/index in 'context' +> 'identifier' : register must be base/index in 'context' The register used in an indirect memory operand must be a base or index register in this context. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2404.md b/docs/error-messages/compiler-errors-1/compiler-error-c2404.md index 220f381937d..a42865478a3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2404.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2404.md @@ -8,6 +8,6 @@ ms.assetid: 51794d2f-404b-4d89-b3ea-fc5faa9c197d --- # Compiler Error C2404 -'identifier' : illegal register in 'context' +> 'identifier' : illegal register in 'context' This register is invalid in this context. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2405.md b/docs/error-messages/compiler-errors-1/compiler-error-c2405.md index f0e40a3d19c..90843a3b3f3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2405.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2405.md @@ -8,6 +8,6 @@ ms.assetid: 14f6726d-e04b-4cce-8a85-4553fc38fcf7 --- # Compiler Error C2405 -illegal short forward reference with offset +> illegal short forward reference with offset Short forward references must refer to a label only. An additional offset cannot be used. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2406.md b/docs/error-messages/compiler-errors-1/compiler-error-c2406.md index 6c58cf2252d..68778ed63b0 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2406.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2406.md @@ -8,6 +8,6 @@ ms.assetid: 9d3fbc4c-40bb-42c7-bfd7-7656c40e2065 --- # Compiler Error C2406 -'identifier' : name undefined in 'context' +> 'identifier' : name undefined in 'context' An undefined identifier is used with the `SIZE`, `LENGTH`, or member-selection (.) operator. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2407.md b/docs/error-messages/compiler-errors-1/compiler-error-c2407.md index d6e33a822d3..9f687837cc0 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2407.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2407.md @@ -8,6 +8,6 @@ ms.assetid: faf38041-cf0f-4624-b6f8-30ce0e1efc1e --- # Compiler Error C2407 -illegal 'float' register in 'context' +> illegal 'float' register in 'context' An `NDP` register was specified in an invalid context. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2408.md b/docs/error-messages/compiler-errors-1/compiler-error-c2408.md index 0206666f921..3f77bd65ad7 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2408.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2408.md @@ -8,6 +8,6 @@ ms.assetid: 3dc4881a-3c33-4c4e-b18e-a1f0e21ea931 --- # Compiler Error C2408 -illegal type on PTR operator in 'context' +> illegal type on PTR operator in 'context' The first parameter of the `PTR` operator is not a legal type specification. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2409.md b/docs/error-messages/compiler-errors-1/compiler-error-c2409.md index 0cbc1b90364..64ed319bd1b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2409.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2409.md @@ -8,6 +8,6 @@ ms.assetid: 5d4aa952-0752-4412-b5c2-050dde0636f4 --- # Compiler Error C2409 -illegal type used as operator in 'context' +> illegal type used as operator in 'context' The type is not legal as an operator in this context. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2410.md b/docs/error-messages/compiler-errors-1/compiler-error-c2410.md index 0e1729028bb..0a51c1ca9b9 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2410.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2410.md @@ -8,7 +8,7 @@ ms.assetid: b69b2de1-56f3-4ebc-8913-04ac57ffe8a1 --- # Compiler Error C2410 -'identifier' : ambiguous member name in 'context' +> 'identifier' : ambiguous member name in 'context' The identifier is a member of more than one structure or union in this context. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2411.md b/docs/error-messages/compiler-errors-1/compiler-error-c2411.md index f2683b3a880..0e2e1387de4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2411.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2411.md @@ -8,7 +8,7 @@ ms.assetid: 453317d3-0629-4b42-b8ea-3a0b39698ca5 --- # Compiler Error C2411 -'identifier' : illegal struct/union member in 'context' +> 'identifier' : illegal struct/union member in 'context' ### To fix by checking the following possible causes diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2412.md b/docs/error-messages/compiler-errors-1/compiler-error-c2412.md index 7f80cf5952c..28c729411c9 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2412.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2412.md @@ -8,6 +8,6 @@ ms.assetid: d1842b89-da09-4c35-89a1-84dc844a9f3e --- # Compiler Error C2412 -'label' : case-insensitive label redefined +> 'label' : case-insensitive label redefined The label is defined more than once in the current function. Change the spelling of the label and its references. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2413.md b/docs/error-messages/compiler-errors-1/compiler-error-c2413.md index d48df5df859..a5e11cff2d0 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2413.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2413.md @@ -8,6 +8,6 @@ ms.assetid: d0403952-f41e-4b21-840d-ab4e44171838 --- # Compiler Error C2413 -'token' : illegal align size +> 'token' : illegal align size The size used with the `ALIGN` directive is missing or outside the valid range. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2414.md b/docs/error-messages/compiler-errors-1/compiler-error-c2414.md index 1a4d8639a07..241c04c4d0a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2414.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2414.md @@ -8,7 +8,7 @@ ms.assetid: bbe94e03-862e-4990-b15e-544ae464727d --- # Compiler Error C2414 -illegal number of operands +> illegal number of operands ### To fix by checking the following possible causes diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2415.md b/docs/error-messages/compiler-errors-1/compiler-error-c2415.md index 73486e37299..9d8413f99da 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2415.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2415.md @@ -8,7 +8,7 @@ ms.assetid: f225c913-2bea-46b1-b096-3d358ac94a15 --- # Compiler Error C2415 -improper operand type +> improper operand type The opcode does not use operands of this type. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2417.md b/docs/error-messages/compiler-errors-1/compiler-error-c2417.md index ad1ec1ba737..0f538689b95 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2417.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2417.md @@ -8,6 +8,6 @@ ms.assetid: 8f42d7a8-5289-4f56-8404-23e5243274d2 --- # Compiler Error C2417 -divide by zero in 'context' +> divide by zero in 'context' The parameter to the right of the division operator is zero in this context. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2418.md b/docs/error-messages/compiler-errors-1/compiler-error-c2418.md index fd9efc9dec5..eff03ad7739 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2418.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2418.md @@ -8,7 +8,7 @@ ms.assetid: 00e4690f-04a0-4159-b358-b1e0664102c1 --- # Compiler Error C2418 -cannot delete browser file: filename +> cannot delete browser file: filename The compiler could not delete the browser file. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2419.md b/docs/error-messages/compiler-errors-1/compiler-error-c2419.md index 1785a274a9a..95dca5db66e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2419.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2419.md @@ -8,6 +8,6 @@ ms.assetid: 51fe3195-34b6-445e-9f01-1e93e8714295 --- # Compiler Error C2419 -mod by zero in 'context' +> mod by zero in 'context' The parameter to the right of the `MOD` operator is zero in this context. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2420.md b/docs/error-messages/compiler-errors-1/compiler-error-c2420.md index 9f3d63e7ea4..959160c038b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2420.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2420.md @@ -8,6 +8,6 @@ ms.assetid: cc11faab-a022-4702-ac8b-9864b916cfa2 --- # Compiler Error C2420 -'identifier' : illegal symbol in context +> 'identifier' : illegal symbol in context The identifier is invalid in this context. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2421.md b/docs/error-messages/compiler-errors-1/compiler-error-c2421.md index 7df9ea0208f..d4f2a84be6c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2421.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2421.md @@ -8,6 +8,6 @@ ms.assetid: 0a9afb9f-60d8-4df7-b2ae-5c36e86df891 --- # Compiler Error C2421 -PTR operator used with register in 'context' +> PTR operator used with register in 'context' The `PTR` operator cannot be used with a **`register`** operand. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2422.md b/docs/error-messages/compiler-errors-1/compiler-error-c2422.md index 3f23f41613c..c4ce8385734 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2422.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2422.md @@ -8,7 +8,7 @@ ms.assetid: ef0ec302-4028-4778-b134-0b8cea4bcad9 --- # Compiler Error C2422 -illegal segment override in 'operand' +> illegal segment override in 'operand' Inline assembly code incorrectly uses a segment override operator (colon) on an operand. Possible causes include: diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2423.md b/docs/error-messages/compiler-errors-1/compiler-error-c2423.md index 24f2acbd023..560a9fb4cd2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2423.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2423.md @@ -8,7 +8,7 @@ ms.assetid: 8797fb8b-b58b-4add-b6e6-2a9a3cd9084d --- # Compiler Error C2423 -'number' : illegal scale +> 'number' : illegal scale Inline assembly code uses a number other than 1, 2, 4, or 8 to scale a register. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2424.md b/docs/error-messages/compiler-errors-1/compiler-error-c2424.md index 3e87ba06f89..ad8e61c364c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2424.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2424.md @@ -8,6 +8,6 @@ ms.assetid: 03613746-a324-4b8b-94c0-424e8b0aae94 --- # Compiler Error C2424 -'token' : improper expression in 'context' +> 'token' : improper expression in 'context' The token forms part of an incorrect expression in this context. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2425.md b/docs/error-messages/compiler-errors-1/compiler-error-c2425.md index a87f7c098d7..4dd4d656de8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2425.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2425.md @@ -8,7 +8,7 @@ ms.assetid: 0ce59404-9aff-4e01-aa8d-27d23e92eb30 --- # Compiler Error C2425 -'token' :non-constant expression in 'context' +> 'token' :non-constant expression in 'context' The token forms part of a non-constant expression in this context. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2426.md b/docs/error-messages/compiler-errors-1/compiler-error-c2426.md index fd4668b17ba..58aa8af1749 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2426.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2426.md @@ -8,6 +8,6 @@ ms.assetid: 3428aeed-3f78-4675-9bc4-5b72f50eaaf6 --- # Compiler Error C2426 -'token' : illegal operator in 'context' +> 'token' : illegal operator in 'context' The token cannot be used as an operator in this context. Index operators, for example, cannot be nested. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2427.md b/docs/error-messages/compiler-errors-1/compiler-error-c2427.md index 8d570e65b0a..187339a726f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2427.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2427.md @@ -8,7 +8,7 @@ ms.assetid: a7d421af-6180-40b4-b7a6-9f3bc7dfaaf9 --- # Compiler Error C2427 -'class' : cannot define class in this scope +> 'class' : cannot define class in this scope An attempt was made to define a nested class, but the nested class is a member of a base class, not the most containing class. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2428.md b/docs/error-messages/compiler-errors-1/compiler-error-c2428.md index d58660dd89f..a3580c7eac8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2428.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2428.md @@ -8,7 +8,7 @@ ms.assetid: 74aa5714-e930-4f9e-9061-68ccce7f0d38 --- # Compiler Error C2428 -'operation' : not allowed on operand of type 'bool' +> 'operation' : not allowed on operand of type 'bool' You cannot apply a decrement operator to objects of type **`bool`**. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2430.md b/docs/error-messages/compiler-errors-1/compiler-error-c2430.md index 93fb29b3ba4..5f9256fe04c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2430.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2430.md @@ -8,7 +8,7 @@ ms.assetid: 07c20f76-63e1-4d22-b2a9-98b0d45c5cac --- # Compiler Error C2430 -more than one index register in 'identifier' +> more than one index register in 'identifier' More than one register is scaled. The compiler supports scaled indexing, but you can only scale one register. From 71aa7b204a792a7d0973c048e8ee41d658126348 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 26 Jul 2025 22:53:05 +0800 Subject: [PATCH 1181/2255] Add "Remarks" and "Example" headings for error references in range [C2401, C2430] --- docs/error-messages/compiler-errors-1/compiler-error-c2401.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2402.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2403.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2404.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2405.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2406.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2407.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2408.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2409.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2410.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2412.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2413.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2415.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2417.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2418.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2419.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2420.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2421.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2422.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2423.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2424.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2425.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2426.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2427.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2428.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2429.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2430.md | 2 ++ 27 files changed, 66 insertions(+) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2401.md b/docs/error-messages/compiler-errors-1/compiler-error-c2401.md index 31c61490008..90ee30975a3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2401.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2401.md @@ -10,4 +10,6 @@ ms.assetid: 4c237b34-f771-4106-93e2-82dae337f1e2 > 'identifier' : register must be base in 'context' +## Remarks + The register used in an indirect memory operand must be a base register in this context. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2402.md b/docs/error-messages/compiler-errors-1/compiler-error-c2402.md index 8574a5f3841..5423d1ca716 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2402.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2402.md @@ -10,4 +10,6 @@ ms.assetid: 23fa63e1-ea9e-482f-be2e-a205c548ba69 > 'identifier' : register must be index in 'context' +## Remarks + The register used in an indirect memory operand must be an index register in this context. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2403.md b/docs/error-messages/compiler-errors-1/compiler-error-c2403.md index 93799fc4d77..64cb631e565 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2403.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2403.md @@ -10,4 +10,6 @@ ms.assetid: add1f0ba-96b6-4df3-b53f-de1433d80c0c > 'identifier' : register must be base/index in 'context' +## Remarks + The register used in an indirect memory operand must be a base or index register in this context. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2404.md b/docs/error-messages/compiler-errors-1/compiler-error-c2404.md index a42865478a3..05f43ad4786 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2404.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2404.md @@ -10,4 +10,6 @@ ms.assetid: 51794d2f-404b-4d89-b3ea-fc5faa9c197d > 'identifier' : illegal register in 'context' +## Remarks + This register is invalid in this context. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2405.md b/docs/error-messages/compiler-errors-1/compiler-error-c2405.md index 90843a3b3f3..5c444801b58 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2405.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2405.md @@ -10,4 +10,6 @@ ms.assetid: 14f6726d-e04b-4cce-8a85-4553fc38fcf7 > illegal short forward reference with offset +## Remarks + Short forward references must refer to a label only. An additional offset cannot be used. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2406.md b/docs/error-messages/compiler-errors-1/compiler-error-c2406.md index 68778ed63b0..24e6167a432 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2406.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2406.md @@ -10,4 +10,6 @@ ms.assetid: 9d3fbc4c-40bb-42c7-bfd7-7656c40e2065 > 'identifier' : name undefined in 'context' +## Remarks + An undefined identifier is used with the `SIZE`, `LENGTH`, or member-selection (.) operator. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2407.md b/docs/error-messages/compiler-errors-1/compiler-error-c2407.md index 9f687837cc0..be9446d25c0 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2407.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2407.md @@ -10,4 +10,6 @@ ms.assetid: faf38041-cf0f-4624-b6f8-30ce0e1efc1e > illegal 'float' register in 'context' +## Remarks + An `NDP` register was specified in an invalid context. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2408.md b/docs/error-messages/compiler-errors-1/compiler-error-c2408.md index 3f77bd65ad7..70bd64a6e89 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2408.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2408.md @@ -10,4 +10,6 @@ ms.assetid: 3dc4881a-3c33-4c4e-b18e-a1f0e21ea931 > illegal type on PTR operator in 'context' +## Remarks + The first parameter of the `PTR` operator is not a legal type specification. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2409.md b/docs/error-messages/compiler-errors-1/compiler-error-c2409.md index 64ed319bd1b..126fa3c9669 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2409.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2409.md @@ -10,4 +10,6 @@ ms.assetid: 5d4aa952-0752-4412-b5c2-050dde0636f4 > illegal type used as operator in 'context' +## Remarks + The type is not legal as an operator in this context. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2410.md b/docs/error-messages/compiler-errors-1/compiler-error-c2410.md index 0a51c1ca9b9..dd54b32ba55 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2410.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2410.md @@ -10,6 +10,8 @@ ms.assetid: b69b2de1-56f3-4ebc-8913-04ac57ffe8a1 > 'identifier' : ambiguous member name in 'context' +## Remarks + The identifier is a member of more than one structure or union in this context. Use a structure or union specifier on the operand that caused the error. A structure or union specifier is an identifier of type **`struct`** or **`union`** (a **`typedef`** name or a variable of the same type as the structure or union being referenced). The specifier must be the left operand of the first member-selection operator (.) to use the operand. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2412.md b/docs/error-messages/compiler-errors-1/compiler-error-c2412.md index 28c729411c9..9f3b41a9356 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2412.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2412.md @@ -10,4 +10,6 @@ ms.assetid: d1842b89-da09-4c35-89a1-84dc844a9f3e > 'label' : case-insensitive label redefined +## Remarks + The label is defined more than once in the current function. Change the spelling of the label and its references. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2413.md b/docs/error-messages/compiler-errors-1/compiler-error-c2413.md index a5e11cff2d0..e5f96cbdc02 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2413.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2413.md @@ -10,4 +10,6 @@ ms.assetid: d0403952-f41e-4b21-840d-ab4e44171838 > 'token' : illegal align size +## Remarks + The size used with the `ALIGN` directive is missing or outside the valid range. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2415.md b/docs/error-messages/compiler-errors-1/compiler-error-c2415.md index 9d8413f99da..0b712cf9e7a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2415.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2415.md @@ -10,6 +10,8 @@ ms.assetid: f225c913-2bea-46b1-b096-3d358ac94a15 > improper operand type +## Remarks + The opcode does not use operands of this type. ### To fix by checking the following possible causes diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2417.md b/docs/error-messages/compiler-errors-1/compiler-error-c2417.md index 0f538689b95..5731b73655b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2417.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2417.md @@ -10,4 +10,6 @@ ms.assetid: 8f42d7a8-5289-4f56-8404-23e5243274d2 > divide by zero in 'context' +## Remarks + The parameter to the right of the division operator is zero in this context. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2418.md b/docs/error-messages/compiler-errors-1/compiler-error-c2418.md index eff03ad7739..1deec6d5ad5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2418.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2418.md @@ -10,6 +10,8 @@ ms.assetid: 00e4690f-04a0-4159-b358-b1e0664102c1 > cannot delete browser file: filename +## Remarks + The compiler could not delete the browser file. ### To fix by checking the following possible causes diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2419.md b/docs/error-messages/compiler-errors-1/compiler-error-c2419.md index 95dca5db66e..ace7e4548d9 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2419.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2419.md @@ -10,4 +10,6 @@ ms.assetid: 51fe3195-34b6-445e-9f01-1e93e8714295 > mod by zero in 'context' +## Remarks + The parameter to the right of the `MOD` operator is zero in this context. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2420.md b/docs/error-messages/compiler-errors-1/compiler-error-c2420.md index 959160c038b..f3056b9f32a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2420.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2420.md @@ -10,4 +10,6 @@ ms.assetid: cc11faab-a022-4702-ac8b-9864b916cfa2 > 'identifier' : illegal symbol in context +## Remarks + The identifier is invalid in this context. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2421.md b/docs/error-messages/compiler-errors-1/compiler-error-c2421.md index d4f2a84be6c..b6c7fce3ba1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2421.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2421.md @@ -10,4 +10,6 @@ ms.assetid: 0a9afb9f-60d8-4df7-b2ae-5c36e86df891 > PTR operator used with register in 'context' +## Remarks + The `PTR` operator cannot be used with a **`register`** operand. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2422.md b/docs/error-messages/compiler-errors-1/compiler-error-c2422.md index c4ce8385734..b220fb50741 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2422.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2422.md @@ -10,6 +10,8 @@ ms.assetid: ef0ec302-4028-4778-b134-0b8cea4bcad9 > illegal segment override in 'operand' +## Remarks + Inline assembly code incorrectly uses a segment override operator (colon) on an operand. Possible causes include: - The register preceding the operator is not a segment register. @@ -20,6 +22,8 @@ Inline assembly code incorrectly uses a segment override operator (colon) on an - The expression following the segment override operator is not an immediate operand or a memory operand. +## Example + The following sample generates C2422: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2423.md b/docs/error-messages/compiler-errors-1/compiler-error-c2423.md index 560a9fb4cd2..080455a2f1b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2423.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2423.md @@ -10,8 +10,12 @@ ms.assetid: 8797fb8b-b58b-4add-b6e6-2a9a3cd9084d > 'number' : illegal scale +## Remarks + Inline assembly code uses a number other than 1, 2, 4, or 8 to scale a register. +## Example + The following sample generates C2423: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2424.md b/docs/error-messages/compiler-errors-1/compiler-error-c2424.md index ad8e61c364c..aa099c7c663 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2424.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2424.md @@ -10,4 +10,6 @@ ms.assetid: 03613746-a324-4b8b-94c0-424e8b0aae94 > 'token' : improper expression in 'context' +## Remarks + The token forms part of an incorrect expression in this context. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2425.md b/docs/error-messages/compiler-errors-1/compiler-error-c2425.md index 4dd4d656de8..a59af7738b4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2425.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2425.md @@ -10,10 +10,14 @@ ms.assetid: 0ce59404-9aff-4e01-aa8d-27d23e92eb30 > 'token' :non-constant expression in 'context' +## Remarks + The token forms part of a non-constant expression in this context. To fix this issue, replace the token with a constant literal or with a calculation. +## Example + The following sample generates C2425: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2426.md b/docs/error-messages/compiler-errors-1/compiler-error-c2426.md index 58aa8af1749..17d1b3c334b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2426.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2426.md @@ -10,4 +10,6 @@ ms.assetid: 3428aeed-3f78-4675-9bc4-5b72f50eaaf6 > 'token' : illegal operator in 'context' +## Remarks + The token cannot be used as an operator in this context. Index operators, for example, cannot be nested. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2427.md b/docs/error-messages/compiler-errors-1/compiler-error-c2427.md index 187339a726f..df6c27fc6ad 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2427.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2427.md @@ -10,8 +10,12 @@ ms.assetid: a7d421af-6180-40b4-b7a6-9f3bc7dfaaf9 > 'class' : cannot define class in this scope +## Remarks + An attempt was made to define a nested class, but the nested class is a member of a base class, not the most containing class. +## Example + The following sample generates C2427: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2428.md b/docs/error-messages/compiler-errors-1/compiler-error-c2428.md index a3580c7eac8..a9c81083773 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2428.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2428.md @@ -10,8 +10,12 @@ ms.assetid: 74aa5714-e930-4f9e-9061-68ccce7f0d38 > 'operation' : not allowed on operand of type 'bool' +## Remarks + You cannot apply a decrement operator to objects of type **`bool`**. +## Example + The following sample generates C2428: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2429.md b/docs/error-messages/compiler-errors-1/compiler-error-c2429.md index 6b465a254d7..341a0e353fc 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2429.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2429.md @@ -10,8 +10,12 @@ ms.assetid: 57ff6df9-5cf1-49f3-8bd8-4e550dfd65a0 > '*language feature*' requires compiler flag '*compiler option*' +## Remarks + The language feature requires a specific compiler option for support. +## Example + The error **C2429: language feature 'nested-namespace-definition' requires compiler flag '/std:c++17'** is generated if you try to define a *compound namespace*, a namespace that contains one or more scope-nested namespace names, starting in Visual Studio 2015 Update 5. (In Visual Studio 2017 version 15.3, the **`/std:c++latest`** switch is required.) Compound namespace definitions are not allowed in C++ prior to C++17. The compiler supports compound namespace definitions when the [`/std:c++17`](../../build/reference/std-specify-language-standard-version.md) compiler option is specified: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2430.md b/docs/error-messages/compiler-errors-1/compiler-error-c2430.md index 5f9256fe04c..fc0d4be151b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2430.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2430.md @@ -10,6 +10,8 @@ ms.assetid: 07c20f76-63e1-4d22-b2a9-98b0d45c5cac > more than one index register in 'identifier' +## Remarks + More than one register is scaled. The compiler supports scaled indexing, but you can only scale one register. ## Example From d7c7050a24fd3e08334e30dd72b426a12437a00e Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 26 Jul 2025 22:54:36 +0800 Subject: [PATCH 1182/2255] Replace term "sample" with "example" for error references in range [C2401, C2430] --- docs/error-messages/compiler-errors-1/compiler-error-c2422.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2423.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2425.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2427.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2428.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2430.md | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2422.md b/docs/error-messages/compiler-errors-1/compiler-error-c2422.md index b220fb50741..5be9a9269eb 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2422.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2422.md @@ -24,7 +24,7 @@ Inline assembly code incorrectly uses a segment override operator (colon) on an ## Example -The following sample generates C2422: +The following example generates C2422: ```cpp // C2422.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2423.md b/docs/error-messages/compiler-errors-1/compiler-error-c2423.md index 080455a2f1b..b1a4d69da7e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2423.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2423.md @@ -16,7 +16,7 @@ Inline assembly code uses a number other than 1, 2, 4, or 8 to scale a register. ## Example -The following sample generates C2423: +The following example generates C2423: ```cpp // C2423.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2425.md b/docs/error-messages/compiler-errors-1/compiler-error-c2425.md index a59af7738b4..879df7d9ef1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2425.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2425.md @@ -18,7 +18,7 @@ To fix this issue, replace the token with a constant literal or with a calculati ## Example -The following sample generates C2425: +The following example generates C2425: ```cpp // C2425.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2427.md b/docs/error-messages/compiler-errors-1/compiler-error-c2427.md index df6c27fc6ad..c69d4d14153 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2427.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2427.md @@ -16,7 +16,7 @@ An attempt was made to define a nested class, but the nested class is a member o ## Example -The following sample generates C2427: +The following example generates C2427: ```cpp // C2427.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2428.md b/docs/error-messages/compiler-errors-1/compiler-error-c2428.md index a9c81083773..53f328eabbe 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2428.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2428.md @@ -16,7 +16,7 @@ You cannot apply a decrement operator to objects of type **`bool`**. ## Example -The following sample generates C2428: +The following example generates C2428: ```cpp // C2428.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2430.md b/docs/error-messages/compiler-errors-1/compiler-error-c2430.md index fc0d4be151b..ed6cb3e904c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2430.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2430.md @@ -16,7 +16,7 @@ More than one register is scaled. The compiler supports scaled indexing, but you ## Example -The following sample generates C2430. +The following example generates C2430. ```cpp // C2430.cpp From 117e94cc73c21e0767daf86daad7774b8a6142f2 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 26 Jul 2025 22:58:55 +0800 Subject: [PATCH 1183/2255] Update metadata for error references in range [C2401, C2430] --- .../error-messages/compiler-errors-1/compiler-error-c2401.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2402.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2403.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2404.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2405.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2406.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2407.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2408.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2409.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2410.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2411.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2412.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2413.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2414.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2415.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2417.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2418.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2419.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2420.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2421.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2422.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2423.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2424.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2425.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2426.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2427.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2428.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2429.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2430.md | 5 ++--- 29 files changed, 58 insertions(+), 87 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2401.md b/docs/error-messages/compiler-errors-1/compiler-error-c2401.md index 90ee30975a3..de3de95c5ea 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2401.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2401.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2401" title: "Compiler Error C2401" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2401" +ms.date: 11/04/2016 f1_keywords: ["C2401"] helpviewer_keywords: ["C2401"] -ms.assetid: 4c237b34-f771-4106-93e2-82dae337f1e2 --- # Compiler Error C2401 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2402.md b/docs/error-messages/compiler-errors-1/compiler-error-c2402.md index 5423d1ca716..18f1900886b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2402.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2402.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2402" title: "Compiler Error C2402" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2402" +ms.date: 11/04/2016 f1_keywords: ["C2402"] helpviewer_keywords: ["C2402"] -ms.assetid: 23fa63e1-ea9e-482f-be2e-a205c548ba69 --- # Compiler Error C2402 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2403.md b/docs/error-messages/compiler-errors-1/compiler-error-c2403.md index 64cb631e565..3526871fd49 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2403.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2403.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2403" title: "Compiler Error C2403" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2403" +ms.date: 11/04/2016 f1_keywords: ["C2403"] helpviewer_keywords: ["C2403"] -ms.assetid: add1f0ba-96b6-4df3-b53f-de1433d80c0c --- # Compiler Error C2403 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2404.md b/docs/error-messages/compiler-errors-1/compiler-error-c2404.md index 05f43ad4786..3bb8a4dfb3a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2404.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2404.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2404" title: "Compiler Error C2404" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2404" +ms.date: 11/04/2016 f1_keywords: ["C2404"] helpviewer_keywords: ["C2404"] -ms.assetid: 51794d2f-404b-4d89-b3ea-fc5faa9c197d --- # Compiler Error C2404 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2405.md b/docs/error-messages/compiler-errors-1/compiler-error-c2405.md index 5c444801b58..e8fe1a73261 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2405.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2405.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2405" title: "Compiler Error C2405" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2405" +ms.date: 11/04/2016 f1_keywords: ["C2405"] helpviewer_keywords: ["C2405"] -ms.assetid: 14f6726d-e04b-4cce-8a85-4553fc38fcf7 --- # Compiler Error C2405 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2406.md b/docs/error-messages/compiler-errors-1/compiler-error-c2406.md index 24e6167a432..4b0c6c99dfa 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2406.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2406.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2406" title: "Compiler Error C2406" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2406" +ms.date: 11/04/2016 f1_keywords: ["C2406"] helpviewer_keywords: ["C2406"] -ms.assetid: 9d3fbc4c-40bb-42c7-bfd7-7656c40e2065 --- # Compiler Error C2406 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2407.md b/docs/error-messages/compiler-errors-1/compiler-error-c2407.md index be9446d25c0..f554591dff2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2407.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2407.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2407" title: "Compiler Error C2407" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2407" +ms.date: 11/04/2016 f1_keywords: ["C2407"] helpviewer_keywords: ["C2407"] -ms.assetid: faf38041-cf0f-4624-b6f8-30ce0e1efc1e --- # Compiler Error C2407 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2408.md b/docs/error-messages/compiler-errors-1/compiler-error-c2408.md index 70bd64a6e89..d7f4e75d63f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2408.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2408.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2408" title: "Compiler Error C2408" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2408" +ms.date: 11/04/2016 f1_keywords: ["C2408"] helpviewer_keywords: ["C2408"] -ms.assetid: 3dc4881a-3c33-4c4e-b18e-a1f0e21ea931 --- # Compiler Error C2408 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2409.md b/docs/error-messages/compiler-errors-1/compiler-error-c2409.md index 126fa3c9669..f067880298e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2409.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2409.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2409" title: "Compiler Error C2409" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2409" +ms.date: 11/04/2016 f1_keywords: ["C2409"] helpviewer_keywords: ["C2409"] -ms.assetid: 5d4aa952-0752-4412-b5c2-050dde0636f4 --- # Compiler Error C2409 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2410.md b/docs/error-messages/compiler-errors-1/compiler-error-c2410.md index dd54b32ba55..497da598ce8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2410.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2410.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2410" title: "Compiler Error C2410" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2410" +ms.date: 11/04/2016 f1_keywords: ["C2410"] helpviewer_keywords: ["C2410"] -ms.assetid: b69b2de1-56f3-4ebc-8913-04ac57ffe8a1 --- # Compiler Error C2410 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2411.md b/docs/error-messages/compiler-errors-1/compiler-error-c2411.md index 0e2e1387de4..ddeca9c353c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2411.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2411.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2411" title: "Compiler Error C2411" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2411" +ms.date: 11/04/2016 f1_keywords: ["C2411"] helpviewer_keywords: ["C2411"] -ms.assetid: 453317d3-0629-4b42-b8ea-3a0b39698ca5 --- # Compiler Error C2411 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2412.md b/docs/error-messages/compiler-errors-1/compiler-error-c2412.md index 9f3b41a9356..6b82d8b7cb2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2412.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2412.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2412" title: "Compiler Error C2412" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2412" +ms.date: 11/04/2016 f1_keywords: ["C2412"] helpviewer_keywords: ["C2412"] -ms.assetid: d1842b89-da09-4c35-89a1-84dc844a9f3e --- # Compiler Error C2412 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2413.md b/docs/error-messages/compiler-errors-1/compiler-error-c2413.md index e5f96cbdc02..8bda57669c2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2413.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2413.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2413" title: "Compiler Error C2413" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2413" +ms.date: 11/04/2016 f1_keywords: ["C2413"] helpviewer_keywords: ["C2413"] -ms.assetid: d0403952-f41e-4b21-840d-ab4e44171838 --- # Compiler Error C2413 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2414.md b/docs/error-messages/compiler-errors-1/compiler-error-c2414.md index 241c04c4d0a..d504db15d26 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2414.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2414.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2414" title: "Compiler Error C2414" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2414" +ms.date: 11/04/2016 f1_keywords: ["C2414"] helpviewer_keywords: ["C2414"] -ms.assetid: bbe94e03-862e-4990-b15e-544ae464727d --- # Compiler Error C2414 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2415.md b/docs/error-messages/compiler-errors-1/compiler-error-c2415.md index 0b712cf9e7a..d393c9ad04e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2415.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2415.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2415" title: "Compiler Error C2415" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2415" +ms.date: 11/04/2016 f1_keywords: ["C2415"] helpviewer_keywords: ["C2415"] -ms.assetid: f225c913-2bea-46b1-b096-3d358ac94a15 --- # Compiler Error C2415 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2417.md b/docs/error-messages/compiler-errors-1/compiler-error-c2417.md index 5731b73655b..2627c37262a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2417.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2417.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2417" title: "Compiler Error C2417" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2417" +ms.date: 11/04/2016 f1_keywords: ["C2417"] helpviewer_keywords: ["C2417"] -ms.assetid: 8f42d7a8-5289-4f56-8404-23e5243274d2 --- # Compiler Error C2417 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2418.md b/docs/error-messages/compiler-errors-1/compiler-error-c2418.md index 1deec6d5ad5..0134d570d69 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2418.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2418.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2418" title: "Compiler Error C2418" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2418" +ms.date: 11/04/2016 f1_keywords: ["C2418"] helpviewer_keywords: ["C2418"] -ms.assetid: 00e4690f-04a0-4159-b358-b1e0664102c1 --- # Compiler Error C2418 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2419.md b/docs/error-messages/compiler-errors-1/compiler-error-c2419.md index ace7e4548d9..5b39fcc3e27 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2419.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2419.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2419" title: "Compiler Error C2419" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2419" +ms.date: 11/04/2016 f1_keywords: ["C2419"] helpviewer_keywords: ["C2419"] -ms.assetid: 51fe3195-34b6-445e-9f01-1e93e8714295 --- # Compiler Error C2419 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2420.md b/docs/error-messages/compiler-errors-1/compiler-error-c2420.md index f3056b9f32a..cfe19fb2e68 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2420.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2420.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2420" title: "Compiler Error C2420" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2420" +ms.date: 11/04/2016 f1_keywords: ["C2420"] helpviewer_keywords: ["C2420"] -ms.assetid: cc11faab-a022-4702-ac8b-9864b916cfa2 --- # Compiler Error C2420 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2421.md b/docs/error-messages/compiler-errors-1/compiler-error-c2421.md index b6c7fce3ba1..e55242b045f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2421.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2421.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2421" title: "Compiler Error C2421" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2421" +ms.date: 11/04/2016 f1_keywords: ["C2421"] helpviewer_keywords: ["C2421"] -ms.assetid: 0a9afb9f-60d8-4df7-b2ae-5c36e86df891 --- # Compiler Error C2421 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2422.md b/docs/error-messages/compiler-errors-1/compiler-error-c2422.md index 5be9a9269eb..5bec6948265 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2422.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2422.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2422" title: "Compiler Error C2422" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2422" +ms.date: 11/04/2016 f1_keywords: ["C2422"] helpviewer_keywords: ["C2422"] -ms.assetid: ef0ec302-4028-4778-b134-0b8cea4bcad9 --- # Compiler Error C2422 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2423.md b/docs/error-messages/compiler-errors-1/compiler-error-c2423.md index b1a4d69da7e..903fb38c3e5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2423.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2423.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2423" title: "Compiler Error C2423" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2423" +ms.date: 11/04/2016 f1_keywords: ["C2423"] helpviewer_keywords: ["C2423"] -ms.assetid: 8797fb8b-b58b-4add-b6e6-2a9a3cd9084d --- # Compiler Error C2423 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2424.md b/docs/error-messages/compiler-errors-1/compiler-error-c2424.md index aa099c7c663..8828b961d38 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2424.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2424.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2424" title: "Compiler Error C2424" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2424" +ms.date: 11/04/2016 f1_keywords: ["C2424"] helpviewer_keywords: ["C2424"] -ms.assetid: 03613746-a324-4b8b-94c0-424e8b0aae94 --- # Compiler Error C2424 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2425.md b/docs/error-messages/compiler-errors-1/compiler-error-c2425.md index 879df7d9ef1..27430083843 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2425.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2425.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2425" title: "Compiler Error C2425" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2425" +ms.date: 11/04/2016 f1_keywords: ["C2425"] helpviewer_keywords: ["C2425"] -ms.assetid: 0ce59404-9aff-4e01-aa8d-27d23e92eb30 --- # Compiler Error C2425 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2426.md b/docs/error-messages/compiler-errors-1/compiler-error-c2426.md index 17d1b3c334b..8f4bc8c7f20 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2426.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2426.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2426" title: "Compiler Error C2426" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2426" +ms.date: 11/04/2016 f1_keywords: ["C2426"] helpviewer_keywords: ["C2426"] -ms.assetid: 3428aeed-3f78-4675-9bc4-5b72f50eaaf6 --- # Compiler Error C2426 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2427.md b/docs/error-messages/compiler-errors-1/compiler-error-c2427.md index c69d4d14153..bd48ac4560f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2427.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2427.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2427" title: "Compiler Error C2427" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2427" +ms.date: 11/04/2016 f1_keywords: ["C2427"] helpviewer_keywords: ["C2427"] -ms.assetid: a7d421af-6180-40b4-b7a6-9f3bc7dfaaf9 --- # Compiler Error C2427 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2428.md b/docs/error-messages/compiler-errors-1/compiler-error-c2428.md index 53f328eabbe..285e59c87ec 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2428.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2428.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2428" title: "Compiler Error C2428" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2428" +ms.date: 11/04/2016 f1_keywords: ["C2428"] helpviewer_keywords: ["C2428"] -ms.assetid: 74aa5714-e930-4f9e-9061-68ccce7f0d38 --- # Compiler Error C2428 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2429.md b/docs/error-messages/compiler-errors-1/compiler-error-c2429.md index 341a0e353fc..5e90b4c64ca 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2429.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2429.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2429" title: "Compiler Error C2429" -ms.date: "11/16/2017" +description: "Learn more about: Compiler Error C2429" +ms.date: 11/16/2017 f1_keywords: ["C2429"] helpviewer_keywords: ["C2429"] -ms.assetid: 57ff6df9-5cf1-49f3-8bd8-4e550dfd65a0 --- # Compiler Error C2429 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2430.md b/docs/error-messages/compiler-errors-1/compiler-error-c2430.md index ed6cb3e904c..931d37287a6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2430.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2430.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2430" title: "Compiler Error C2430" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2430" +ms.date: 11/04/2016 f1_keywords: ["C2430"] helpviewer_keywords: ["C2430"] -ms.assetid: 07c20f76-63e1-4d22-b2a9-98b0d45c5cac --- # Compiler Error C2430 From 409e8a007684547625f5b8048ef697e98c1b2056 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 27 Jul 2025 22:05:27 +0800 Subject: [PATCH 1184/2255] Add blockquotes for error messages in range [C2431, C2460] --- docs/error-messages/compiler-errors-1/compiler-error-c2431.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2432.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2436.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2437.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2438.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2439.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2443.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2444.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2446.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2447.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2448.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2449.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2450.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2451.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2452.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2458.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2459.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2460.md | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2431.md b/docs/error-messages/compiler-errors-1/compiler-error-c2431.md index bf087591be9..614abe70c1f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2431.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2431.md @@ -8,7 +8,7 @@ ms.assetid: 88a5b648-c89f-47d1-a20e-63231ab4f0f7 --- # Compiler Error C2431 -illegal index register in 'identifier' +> illegal index register in 'identifier' The ESP register is scaled or used as both index and base register. The SIB encoding for the x86 processor does not allow either. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2432.md b/docs/error-messages/compiler-errors-1/compiler-error-c2432.md index 03d4ba54d10..6c9c0dc3fba 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2432.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2432.md @@ -8,7 +8,7 @@ ms.assetid: 0e3326e8-cab1-45a5-b48d-61edd33793e8 --- # Compiler Error C2432 -illegal reference to 16-bit data in 'identifier' +> illegal reference to 16-bit data in 'identifier' A 16-bit register is used as an index or base register. The compiler does not support referencing 16-bit data. 16-bit registers cannot be used as index or base registers when compiling for 32-bit code. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2436.md b/docs/error-messages/compiler-errors-1/compiler-error-c2436.md index 2c21782820b..15c12afe78b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2436.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2436.md @@ -8,7 +8,7 @@ ms.assetid: ca4cc813-bc1d-4c0a-9a2c-3a5fe673d084 --- # Compiler Error C2436 -'identifier' : member function or nested class in constructor initializer list +> 'identifier' : member function or nested class in constructor initializer list Member functions or local classes in the constructor initializer list cannot be initialized. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2437.md b/docs/error-messages/compiler-errors-1/compiler-error-c2437.md index ad2838f1954..9a54484d7de 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2437.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2437.md @@ -8,7 +8,7 @@ ms.assetid: 2d2b3c6c-856a-4b27-ae10-64813b3e5483 --- # Compiler Error C2437 -'identifier' : already initialized +> 'identifier' : already initialized An object can be initialized only once. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2438.md b/docs/error-messages/compiler-errors-1/compiler-error-c2438.md index 5c50bbcf063..d6e793f1e69 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2438.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2438.md @@ -8,7 +8,7 @@ ms.assetid: 3a0ab3ba-d0e4-4d8f-971d-e503397cc827 --- # Compiler Error C2438 -'identifier' : cannot initialize static class data via constructor +> 'identifier' : cannot initialize static class data via constructor A constructor is used to initialize a static member of a class. Static members must be initialized in a definition outside the class declaration. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2439.md b/docs/error-messages/compiler-errors-1/compiler-error-c2439.md index 3afca77e01e..24f16ef64c2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2439.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2439.md @@ -8,7 +8,7 @@ ms.assetid: 3c5dbe5c-b7d3-4bb0-8619-92f6e280461e --- # Compiler Error C2439 -'identifier' : member could not be initialized +> 'identifier' : member could not be initialized A class, structure, or union member cannot be initialized. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2443.md b/docs/error-messages/compiler-errors-1/compiler-error-c2443.md index 15026511214..690bb543446 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2443.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2443.md @@ -8,7 +8,7 @@ ms.assetid: 315330d5-24bc-4193-a531-0642095be58f --- # Compiler Error C2443 -operand size conflict +> operand size conflict The instruction requires operands to be the same size. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2444.md b/docs/error-messages/compiler-errors-1/compiler-error-c2444.md index 94cb7948fa9..7f064161d92 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2444.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2444.md @@ -8,7 +8,7 @@ ms.assetid: 6339ed82-caad-45d3-a8ff-6c746589fd03 --- # Compiler Error C2444 -'identifier' : used ANSI prototype, found 'type', expected '{' or ';' +> 'identifier' : used ANSI prototype, found 'type', expected '{' or ';' The function prototype is followed by a type. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2446.md b/docs/error-messages/compiler-errors-1/compiler-error-c2446.md index de76e6c65ac..e7edf1eaf1f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2446.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2446.md @@ -8,6 +8,6 @@ ms.assetid: 4f70dd11-6baf-4b92-9a08-f88f65ffa199 --- # Compiler Error C2446 -'operator' : no conversion from 'type1' to 'type2' +> 'operator' : no conversion from 'type1' to 'type2' The compiler cannot convert `type1` to `type2`. The conversion may not make sense because it violates C/C++ semantics. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2447.md b/docs/error-messages/compiler-errors-1/compiler-error-c2447.md index e88e1565f63..6a738d9d19c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2447.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2447.md @@ -8,7 +8,7 @@ ms.assetid: d1bd6e9a-ee42-4510-ae5e-6b0378f7b931 --- # Compiler Error C2447 -'{' : missing function header (old-style formal list?) +> '{' : missing function header (old-style formal list?) The compiler encountered an unexpected open brace at global scope. In most cases, this is caused by a badly-formed function header, a misplaced declaration, or a stray semi-colon. To resolve this issue, verify that the open brace follows a correctly-formed function header, and is not preceded by a declaration or a stray semi-colon. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2448.md b/docs/error-messages/compiler-errors-1/compiler-error-c2448.md index 49c7aeafb64..f8274d9aab4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2448.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2448.md @@ -8,7 +8,7 @@ ms.assetid: e255df3c-f861-4b4d-a193-8768cef061a5 --- # Compiler Error C2448 -'identifier' : function-style initializer appears to be a function definition +> 'identifier' : function-style initializer appears to be a function definition The function definition is incorrect. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2449.md b/docs/error-messages/compiler-errors-1/compiler-error-c2449.md index 938093971e8..f8c9f76efbe 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2449.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2449.md @@ -8,7 +8,7 @@ ms.assetid: 544bf0b6-daa0-40e8-9f21-8e583d472a2d --- # Compiler Error C2449 -found '{' at file scope (missing function header?) +> found '{' at file scope (missing function header?) An open brace occurs at file scope. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2450.md b/docs/error-messages/compiler-errors-1/compiler-error-c2450.md index ac6c260ef86..a3ddd820916 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2450.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2450.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2450"] --- # Compiler Error C2450 -switch expression of type 'type' is illegal +> switch expression of type 'type' is illegal The **`switch`** expression evaluates to an invalid type. It must evaluate to an integer type or a class type with unambiguous conversion to an integer type. If it evaluates to a user-defined type, you must supply a conversion operator. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2451.md b/docs/error-messages/compiler-errors-1/compiler-error-c2451.md index cc99c291bb0..aab2d1a08ea 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2451.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2451.md @@ -8,7 +8,7 @@ ms.assetid: a64c93a5-ab8d-4d39-ae57-9ee7ef803036 --- # Compiler Error C2451 -conditional expression of type 'type' is illegal +> conditional expression of type 'type' is illegal The conditional expression evaluates to an integer type. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2452.md b/docs/error-messages/compiler-errors-1/compiler-error-c2452.md index f16f583de17..f636717e499 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2452.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2452.md @@ -8,7 +8,7 @@ ms.assetid: a4ec7642-6660-4c7a-9866-853d1cc67daf --- # Compiler Error C2452 -'type' : invalid source type for safe_cast +> 'type' : invalid source type for safe_cast The source type for [safe_cast](../../extensions/safe-cast-cpp-component-extensions.md) was not valid. For example, all types in a `safe_cast` operation must be CLR types. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2458.md b/docs/error-messages/compiler-errors-1/compiler-error-c2458.md index ec96c8970fb..666d6fdc219 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2458.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2458.md @@ -8,7 +8,7 @@ ms.assetid: ed21901f-1067-42f5-b275-19b480decf5c --- # Compiler Error C2458 -'identifier' : redefinition within definition +> 'identifier' : redefinition within definition A class, structure, union, or enumeration is redefined in its own declaration. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2459.md b/docs/error-messages/compiler-errors-1/compiler-error-c2459.md index 635f08cf2e5..26c7df62c2b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2459.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2459.md @@ -8,7 +8,7 @@ ms.assetid: 81e29f4c-5b60-40fb-9557-1cdc630d77e8 --- # Compiler Error C2459 -'identifier' : is being defined; cannot add as an anonymous member +> 'identifier' : is being defined; cannot add as an anonymous member A class, structure, or union is redefined in its own scope by a member of an anonymous union. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2460.md b/docs/error-messages/compiler-errors-1/compiler-error-c2460.md index e6e7bdd164b..8aa35dca9ee 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2460.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2460.md @@ -8,7 +8,7 @@ ms.assetid: d969fca9-3ac5-4e4e-88fc-df05510e2093 --- # Compiler Error C2460 -'identifier1' : uses 'identifier2', which is being defined +> 'identifier1' : uses 'identifier2', which is being defined A class or structure (`identifier2`) is declared as a member of itself (`identifier1`). Recursive definitions of classes and structures are not allowed. From c784665e14e8150afa2af861b95d8fbb3c11a0c6 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 27 Jul 2025 22:11:23 +0800 Subject: [PATCH 1185/2255] Add "Remarks" and "Example" headings for error references in range [C2431, C2460] --- docs/error-messages/compiler-errors-1/compiler-error-c2431.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2432.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2433.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2436.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2437.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2438.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2439.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2440.md | 4 ++-- docs/error-messages/compiler-errors-1/compiler-error-c2443.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2444.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2446.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2447.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2448.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2449.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2450.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2451.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2452.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2457.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2458.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2459.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2460.md | 4 ++++ 21 files changed, 72 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2431.md b/docs/error-messages/compiler-errors-1/compiler-error-c2431.md index 614abe70c1f..c8e03ca57da 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2431.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2431.md @@ -10,8 +10,12 @@ ms.assetid: 88a5b648-c89f-47d1-a20e-63231ab4f0f7 > illegal index register in 'identifier' +## Remarks + The ESP register is scaled or used as both index and base register. The SIB encoding for the x86 processor does not allow either. +## Example + The following sample generates C2431: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2432.md b/docs/error-messages/compiler-errors-1/compiler-error-c2432.md index 6c9c0dc3fba..9258facd7bd 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2432.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2432.md @@ -10,8 +10,12 @@ ms.assetid: 0e3326e8-cab1-45a5-b48d-61edd33793e8 > illegal reference to 16-bit data in 'identifier' +## Remarks + A 16-bit register is used as an index or base register. The compiler does not support referencing 16-bit data. 16-bit registers cannot be used as index or base registers when compiling for 32-bit code. +## Example + The following sample generates C2432: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2433.md b/docs/error-messages/compiler-errors-1/compiler-error-c2433.md index 75ec0827854..64fa90a70b1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2433.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2433.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C2433"] > '*identifier*': '*modifier*' not permitted on data declarations +## Remarks + The **`friend`**, **`virtual`**, and **`inline`** modifiers cannot be used for data declarations. ## Example diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2436.md b/docs/error-messages/compiler-errors-1/compiler-error-c2436.md index 15c12afe78b..9fef4cbc782 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2436.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2436.md @@ -10,8 +10,12 @@ ms.assetid: ca4cc813-bc1d-4c0a-9a2c-3a5fe673d084 > 'identifier' : member function or nested class in constructor initializer list +## Remarks + Member functions or local classes in the constructor initializer list cannot be initialized. +## Example + The following sample generates C2436: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2437.md b/docs/error-messages/compiler-errors-1/compiler-error-c2437.md index 9a54484d7de..82cee149198 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2437.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2437.md @@ -10,8 +10,12 @@ ms.assetid: 2d2b3c6c-856a-4b27-ae10-64813b3e5483 > 'identifier' : already initialized +## Remarks + An object can be initialized only once. +## Example + The following sample generates C2437: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2438.md b/docs/error-messages/compiler-errors-1/compiler-error-c2438.md index d6e793f1e69..9c2f6b4faa4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2438.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2438.md @@ -10,8 +10,12 @@ ms.assetid: 3a0ab3ba-d0e4-4d8f-971d-e503397cc827 > 'identifier' : cannot initialize static class data via constructor +## Remarks + A constructor is used to initialize a static member of a class. Static members must be initialized in a definition outside the class declaration. +## Example + The following sample generates C2438: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2439.md b/docs/error-messages/compiler-errors-1/compiler-error-c2439.md index 24f16ef64c2..e24d5d39ec3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2439.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2439.md @@ -10,6 +10,8 @@ ms.assetid: 3c5dbe5c-b7d3-4bb0-8619-92f6e280461e > 'identifier' : member could not be initialized +## Remarks + A class, structure, or union member cannot be initialized. ### To fix by checking the following possible causes diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2440.md b/docs/error-messages/compiler-errors-1/compiler-error-c2440.md index d12b621c4a4..4e4cd76d413 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2440.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2440.md @@ -11,10 +11,10 @@ no-loc: ["struct", "const"] > '*initializing*' : cannot convert from '*type1*' to '*type2*'\ > '*conversion*' : cannot convert from '*type1*' to '*type2*' -The compiler can't implicitly convert from *`type1`* to *`type2`*, or can't use the specified cast or conversion operator. - ## Remarks +The compiler can't implicitly convert from *`type1`* to *`type2`*, or can't use the specified cast or conversion operator. + The compiler generates C2440 when it can't convert from one type to another, either implicitly or by using the specified cast or conversion operator. There are many ways to generate this error. We've listed some common ones in the Examples section. ## Examples diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2443.md b/docs/error-messages/compiler-errors-1/compiler-error-c2443.md index 690bb543446..b494fe93bb3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2443.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2443.md @@ -10,8 +10,12 @@ ms.assetid: 315330d5-24bc-4193-a531-0642095be58f > operand size conflict +## Remarks + The instruction requires operands to be the same size. +## Example + The following sample generates C2443: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2444.md b/docs/error-messages/compiler-errors-1/compiler-error-c2444.md index 7f064161d92..ccf35d6e96c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2444.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2444.md @@ -10,6 +10,8 @@ ms.assetid: 6339ed82-caad-45d3-a8ff-6c746589fd03 > 'identifier' : used ANSI prototype, found 'type', expected '{' or ';' +## Remarks + The function prototype is followed by a type. This error can be caused by a missing semicolon or curly brace. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2446.md b/docs/error-messages/compiler-errors-1/compiler-error-c2446.md index e7edf1eaf1f..8dae8e651fc 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2446.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2446.md @@ -10,4 +10,6 @@ ms.assetid: 4f70dd11-6baf-4b92-9a08-f88f65ffa199 > 'operator' : no conversion from 'type1' to 'type2' +## Remarks + The compiler cannot convert `type1` to `type2`. The conversion may not make sense because it violates C/C++ semantics. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2447.md b/docs/error-messages/compiler-errors-1/compiler-error-c2447.md index 6a738d9d19c..82634bef0d5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2447.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2447.md @@ -10,10 +10,14 @@ ms.assetid: d1bd6e9a-ee42-4510-ae5e-6b0378f7b931 > '{' : missing function header (old-style formal list?) +## Remarks + The compiler encountered an unexpected open brace at global scope. In most cases, this is caused by a badly-formed function header, a misplaced declaration, or a stray semi-colon. To resolve this issue, verify that the open brace follows a correctly-formed function header, and is not preceded by a declaration or a stray semi-colon. This error can also be caused by an old-style C-language formal argument list. To resolve this issue, refactor the argument list to use modern style—that is, enclosed in parentheses. +## Example + The following sample generates C2447: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2448.md b/docs/error-messages/compiler-errors-1/compiler-error-c2448.md index f8274d9aab4..16be4eae932 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2448.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2448.md @@ -10,10 +10,14 @@ ms.assetid: e255df3c-f861-4b4d-a193-8768cef061a5 > 'identifier' : function-style initializer appears to be a function definition +## Remarks + The function definition is incorrect. This error can be caused by an old-style C-language formal list. +## Example + The following sample generates C2448: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2449.md b/docs/error-messages/compiler-errors-1/compiler-error-c2449.md index f8c9f76efbe..61810dbb3bc 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2449.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2449.md @@ -10,10 +10,14 @@ ms.assetid: 544bf0b6-daa0-40e8-9f21-8e583d472a2d > found '{' at file scope (missing function header?) +## Remarks + An open brace occurs at file scope. This error can be caused by a semicolon between a function header and the opening brace of the function definition. +## Example + The following sample generates C2499: ```c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2450.md b/docs/error-messages/compiler-errors-1/compiler-error-c2450.md index a3ddd820916..ddfc7488da0 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2450.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2450.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C2450"] > switch expression of type 'type' is illegal +## Remarks + The **`switch`** expression evaluates to an invalid type. It must evaluate to an integer type or a class type with unambiguous conversion to an integer type. If it evaluates to a user-defined type, you must supply a conversion operator. +## Example + The following sample generates C2450: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2451.md b/docs/error-messages/compiler-errors-1/compiler-error-c2451.md index aab2d1a08ea..7e384af87cb 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2451.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2451.md @@ -10,8 +10,12 @@ ms.assetid: a64c93a5-ab8d-4d39-ae57-9ee7ef803036 > conditional expression of type 'type' is illegal +## Remarks + The conditional expression evaluates to an integer type. +## Example + The following sample generates C2451: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2452.md b/docs/error-messages/compiler-errors-1/compiler-error-c2452.md index f636717e499..f0e037d227f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2452.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2452.md @@ -10,8 +10,12 @@ ms.assetid: a4ec7642-6660-4c7a-9866-853d1cc67daf > 'type' : invalid source type for safe_cast +## Remarks + The source type for [safe_cast](../../extensions/safe-cast-cpp-component-extensions.md) was not valid. For example, all types in a `safe_cast` operation must be CLR types. +## Example + The following sample generates C2452: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2457.md b/docs/error-messages/compiler-errors-1/compiler-error-c2457.md index a60da33b7bb..8a4e90049fd 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2457.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2457.md @@ -10,6 +10,8 @@ ms.assetid: 347e169d-23ad-434f-8836-5b09b53980ff > '*macro*': predefined macro cannot appear outside of a function body +## Remarks + You attempted to use a predefined macro, such as [`__FUNCTION__`](../../preprocessor/predefined-macros.md), in a global space. ## Example diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2458.md b/docs/error-messages/compiler-errors-1/compiler-error-c2458.md index 666d6fdc219..3d24e4459e4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2458.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2458.md @@ -10,8 +10,12 @@ ms.assetid: ed21901f-1067-42f5-b275-19b480decf5c > 'identifier' : redefinition within definition +## Remarks + A class, structure, union, or enumeration is redefined in its own declaration. +## Example + The following sample generates C2458: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2459.md b/docs/error-messages/compiler-errors-1/compiler-error-c2459.md index 26c7df62c2b..5b0db6fc492 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2459.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2459.md @@ -10,8 +10,12 @@ ms.assetid: 81e29f4c-5b60-40fb-9557-1cdc630d77e8 > 'identifier' : is being defined; cannot add as an anonymous member +## Remarks + A class, structure, or union is redefined in its own scope by a member of an anonymous union. +## Example + The following sample generates C2459: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2460.md b/docs/error-messages/compiler-errors-1/compiler-error-c2460.md index 8aa35dca9ee..74546fb97d5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2460.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2460.md @@ -10,8 +10,12 @@ ms.assetid: d969fca9-3ac5-4e4e-88fc-df05510e2093 > 'identifier1' : uses 'identifier2', which is being defined +## Remarks + A class or structure (`identifier2`) is declared as a member of itself (`identifier1`). Recursive definitions of classes and structures are not allowed. +## Example + The following sample generates C2460: ```cpp From 8925559745c8a307646260f07e1228d4247f12c3 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 27 Jul 2025 22:13:32 +0800 Subject: [PATCH 1186/2255] Replace term "sample" with "example" for error references in range [C2431, C2460] --- .../compiler-errors-1/compiler-error-c2431.md | 2 +- .../compiler-errors-1/compiler-error-c2432.md | 2 +- .../compiler-errors-1/compiler-error-c2434.md | 2 +- .../compiler-errors-1/compiler-error-c2435.md | 2 +- .../compiler-errors-1/compiler-error-c2436.md | 2 +- .../compiler-errors-1/compiler-error-c2437.md | 2 +- .../compiler-errors-1/compiler-error-c2438.md | 2 +- .../compiler-errors-1/compiler-error-c2440.md | 20 +++++++++---------- .../compiler-errors-1/compiler-error-c2441.md | 2 +- .../compiler-errors-1/compiler-error-c2443.md | 2 +- .../compiler-errors-1/compiler-error-c2447.md | 2 +- .../compiler-errors-1/compiler-error-c2448.md | 2 +- .../compiler-errors-1/compiler-error-c2449.md | 2 +- .../compiler-errors-1/compiler-error-c2450.md | 2 +- .../compiler-errors-1/compiler-error-c2451.md | 2 +- .../compiler-errors-1/compiler-error-c2452.md | 2 +- .../compiler-errors-1/compiler-error-c2457.md | 2 +- .../compiler-errors-1/compiler-error-c2458.md | 2 +- .../compiler-errors-1/compiler-error-c2459.md | 2 +- .../compiler-errors-1/compiler-error-c2460.md | 2 +- 20 files changed, 29 insertions(+), 29 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2431.md b/docs/error-messages/compiler-errors-1/compiler-error-c2431.md index c8e03ca57da..d89f1f703d5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2431.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2431.md @@ -16,7 +16,7 @@ The ESP register is scaled or used as both index and base register. The SIB enco ## Example -The following sample generates C2431: +The following example generates C2431: ```cpp // C2431.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2432.md b/docs/error-messages/compiler-errors-1/compiler-error-c2432.md index 9258facd7bd..61094eca026 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2432.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2432.md @@ -16,7 +16,7 @@ A 16-bit register is used as an index or base register. The compiler does not su ## Example -The following sample generates C2432: +The following example generates C2432: ```cpp // C2432.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2434.md b/docs/error-messages/compiler-errors-1/compiler-error-c2434.md index 7a9cba1f7d9..50bb092e394 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2434.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2434.md @@ -18,7 +18,7 @@ It is not possible to dynamically initialize a per-process variable under **/clr ## Example -The following sample generates C2434. To fix this issue, use constants to initialize `process` variables. +The following example generates C2434. To fix this issue, use constants to initialize `process` variables. ```cpp // C2434.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2435.md b/docs/error-messages/compiler-errors-1/compiler-error-c2435.md index 90b82057ad1..a00ff91214a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2435.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2435.md @@ -20,7 +20,7 @@ For more information, see [appdomain](../../cpp/appdomain.md) and [process](../. ## Example -The following sample generates C2435: +The following example generates C2435: ```cpp // C2435.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2436.md b/docs/error-messages/compiler-errors-1/compiler-error-c2436.md index 9fef4cbc782..7bfdeabf1c7 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2436.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2436.md @@ -16,7 +16,7 @@ Member functions or local classes in the constructor initializer list cannot be ## Example -The following sample generates C2436: +The following example generates C2436: ```cpp // C2436.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2437.md b/docs/error-messages/compiler-errors-1/compiler-error-c2437.md index 82cee149198..ae3bb92a360 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2437.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2437.md @@ -16,7 +16,7 @@ An object can be initialized only once. ## Example -The following sample generates C2437: +The following example generates C2437: ```cpp // C2437.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2438.md b/docs/error-messages/compiler-errors-1/compiler-error-c2438.md index 9c2f6b4faa4..f1f784f629e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2438.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2438.md @@ -16,7 +16,7 @@ A constructor is used to initialize a static member of a class. Static members m ## Example -The following sample generates C2438: +The following example generates C2438: ```cpp // C2438.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2440.md b/docs/error-messages/compiler-errors-1/compiler-error-c2440.md index 4e4cd76d413..b1416ad8096 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2440.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2440.md @@ -21,7 +21,7 @@ The compiler generates C2440 when it can't convert from one type to another, eit ### C++ string literals are `const` -C2440 can be caused if you attempt to initialize a non-const `char*` (or `wchar_t*`) by using a string literal in C++ code, when the compiler conformance option [`/Zc:strictStrings`](../../build/reference/zc-strictstrings-disable-string-literal-type-conversion.md) is set. In C, the type of a string literal is array of **`char`**, but in C++, it's array of `const char`. This sample generates C2440: +C2440 can be caused if you attempt to initialize a non-const `char*` (or `wchar_t*`) by using a string literal in C++ code, when the compiler conformance option [`/Zc:strictStrings`](../../build/reference/zc-strictstrings-disable-string-literal-type-conversion.md) is set. In C, the type of a string literal is array of **`char`**, but in C++, it's array of `const char`. This example generates C2440: ```cpp // C2440s.cpp @@ -40,7 +40,7 @@ int main() { ### C++20 `u8` literals are `const char8_t` -In C++20 or under [`/Zc:char8_t`](../../build/reference/zc-char8-t.md), a UTF-8 literal character or string (such as `u8'a'` or `u8"String"`) is of type `const char8_t` or `const char8_t[N]`, respectively. This sample shows how compiler behavior changes between C++17 and C++20: +In C++20 or under [`/Zc:char8_t`](../../build/reference/zc-char8-t.md), a UTF-8 literal character or string (such as `u8'a'` or `u8"String"`) is of type `const char8_t` or `const char8_t[N]`, respectively. This example shows how compiler behavior changes between C++17 and C++20: ```cpp // C2440u8.cpp @@ -60,7 +60,7 @@ int main() { ### Pointer to member -You may see C2440 if you attempt to convert a pointer to member to `void*`. The next sample generates C2440: +You may see C2440 if you attempt to convert a pointer to member to `void*`. The next example generates C2440: ```cpp // C2440.cpp @@ -83,7 +83,7 @@ public: ### Cast of undefined type -The compiler emits C2440 if you attempt to cast from a type that's only forward declared but not defined. This sample generates C2440: +The compiler emits C2440 if you attempt to cast from a type that's only forward declared but not defined. This example generates C2440: ```cpp // c2440a.cpp @@ -98,7 +98,7 @@ Base * func(Derived * d) { ### Incompatible calling convention -The C2440 errors on lines 15 and 16 of the next sample are qualified with the `Incompatible calling conventions for UDT return value` message. A *UDT* is a user-defined type, such as a class, struct, or union. These kinds of incompatibility errors are caused when the calling convention of a UDT specified in the return type of a forward declaration conflicts with the actual calling convention of the UDT and when a function pointer is involved. +The C2440 errors on lines 15 and 16 of the next example are qualified with the `Incompatible calling conventions for UDT return value` message. A *UDT* is a user-defined type, such as a class, struct, or union. These kinds of incompatibility errors are caused when the calling convention of a UDT specified in the return type of a forward declaration conflicts with the actual calling convention of the UDT and when a function pointer is involved. In the example, first there are forward declarations for a struct and for a function that returns the struct. The compiler assumes that the struct uses the C++ calling convention. Next is the struct definition, which uses the C calling convention by default. Because the compiler doesn't know the calling convention of the struct until it finishes reading the entire struct, the calling convention for the struct in the return type of `get_c2` is also assumed to be C++. @@ -163,7 +163,7 @@ int main() { ### User-defined conversions -C2440 can also occur for an incorrect use of a user-defined conversion. For example, when a conversion operator has been defined as **`explicit`**, the compiler can't use it in an implicit conversion. For more information about user-defined conversions, see [User-Defined Conversions (C++/CLI)](../../dotnet/user-defined-conversions-cpp-cli.md)). This sample generates C2440: +C2440 can also occur for an incorrect use of a user-defined conversion. For example, when a conversion operator has been defined as **`explicit`**, the compiler can't use it in an implicit conversion. For more information about user-defined conversions, see [User-Defined Conversions (C++/CLI)](../../dotnet/user-defined-conversions-cpp-cli.md)). This example generates C2440: ```cpp // C2440d.cpp @@ -187,7 +187,7 @@ int main() { ### `System::Array` creation -C2440 can also occur if you try to create an instance of an array in C++/CLI whose type is a . For more information, see [Arrays](../../extensions/arrays-cpp-component-extensions.md). The next sample generates C2440: +C2440 can also occur if you try to create an instance of an array in C++/CLI whose type is a . For more information, see [Arrays](../../extensions/arrays-cpp-component-extensions.md). The next example generates C2440: ```cpp // C2440e.cpp @@ -202,7 +202,7 @@ int main() { ### Attributes -C2440 can also occur because of changes in the attributes feature. The following sample generates C2440. +C2440 can also occur because of changes in the attributes feature. The following example generates C2440. ```cpp // c2440f.cpp @@ -218,7 +218,7 @@ The Microsoft C++ compiler no longer allows the [`const_cast` operator](../../cp To resolve this C2440, use the correct cast operator. For more information, see [Casting operators](../../cpp/casting-operators.md). -This sample generates C2440: +This example generates C2440: ```cpp // c2440g.cpp @@ -237,7 +237,7 @@ int main() { C2440 can occur because of conformance changes to the compiler in Visual Studio 2015 Update 3. Previously, the compiler incorrectly treated certain distinct expressions as the same type when identifying a template match for a **`static_cast`** operation. Now the compiler distinguishes the types correctly, and code that relied on the previous **`static_cast`** behavior is broken. To fix this issue, change the template argument to match the template parameter type, or use a **`reinterpret_cast`** or C-style cast. -This sample generates C2440: +This example generates C2440: ```cpp // c2440h.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2441.md b/docs/error-messages/compiler-errors-1/compiler-error-c2441.md index 6ec4ce06501..ba07ebc5a5a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2441.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2441.md @@ -22,7 +22,7 @@ For more information, see [process](../../cpp/process.md) and [/clr (Common Lang ## Example -The following sample generates C2441. +The following example generates C2441. ```cpp // C2441.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2443.md b/docs/error-messages/compiler-errors-1/compiler-error-c2443.md index b494fe93bb3..c610476fc7d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2443.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2443.md @@ -16,7 +16,7 @@ The instruction requires operands to be the same size. ## Example -The following sample generates C2443: +The following example generates C2443: ```cpp // C2443.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2447.md b/docs/error-messages/compiler-errors-1/compiler-error-c2447.md index 82634bef0d5..aba0cdbbb14 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2447.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2447.md @@ -18,7 +18,7 @@ This error can also be caused by an old-style C-language formal argument list. T ## Example -The following sample generates C2447: +The following example generates C2447: ```cpp // C2447.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2448.md b/docs/error-messages/compiler-errors-1/compiler-error-c2448.md index 16be4eae932..b6e0971651c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2448.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2448.md @@ -18,7 +18,7 @@ This error can be caused by an old-style C-language formal list. ## Example -The following sample generates C2448: +The following example generates C2448: ```cpp // C2448.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2449.md b/docs/error-messages/compiler-errors-1/compiler-error-c2449.md index 61810dbb3bc..c3171be013c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2449.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2449.md @@ -18,7 +18,7 @@ This error can be caused by a semicolon between a function header and the openin ## Example -The following sample generates C2499: +The following example generates C2499: ```c // C2449.c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2450.md b/docs/error-messages/compiler-errors-1/compiler-error-c2450.md index ddfc7488da0..12ab4a4a822 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2450.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2450.md @@ -15,7 +15,7 @@ The **`switch`** expression evaluates to an invalid type. It must evaluate to an ## Example -The following sample generates C2450: +The following example generates C2450: ```cpp // C2450.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2451.md b/docs/error-messages/compiler-errors-1/compiler-error-c2451.md index 7e384af87cb..96057c57263 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2451.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2451.md @@ -16,7 +16,7 @@ The conditional expression evaluates to an integer type. ## Example -The following sample generates C2451: +The following example generates C2451: ```cpp // C2451.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2452.md b/docs/error-messages/compiler-errors-1/compiler-error-c2452.md index f0e037d227f..a3c684d0c3e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2452.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2452.md @@ -16,7 +16,7 @@ The source type for [safe_cast](../../extensions/safe-cast-cpp-component-extensi ## Example -The following sample generates C2452: +The following example generates C2452: ```cpp // C2452.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2457.md b/docs/error-messages/compiler-errors-1/compiler-error-c2457.md index 8a4e90049fd..771831645d0 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2457.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2457.md @@ -16,7 +16,7 @@ You attempted to use a predefined macro, such as [`__FUNCTION__`](../../preproce ## Example -The following sample generates C2457 and also shows correct usage: +The following example generates C2457 and also shows correct usage: ```cpp // C2457.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2458.md b/docs/error-messages/compiler-errors-1/compiler-error-c2458.md index 3d24e4459e4..50eefd75c5e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2458.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2458.md @@ -16,7 +16,7 @@ A class, structure, union, or enumeration is redefined in its own declaration. ## Example -The following sample generates C2458: +The following example generates C2458: ```cpp // C2458.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2459.md b/docs/error-messages/compiler-errors-1/compiler-error-c2459.md index 5b0db6fc492..eb3a057fd6a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2459.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2459.md @@ -16,7 +16,7 @@ A class, structure, or union is redefined in its own scope by a member of an ano ## Example -The following sample generates C2459: +The following example generates C2459: ```cpp // C2459.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2460.md b/docs/error-messages/compiler-errors-1/compiler-error-c2460.md index 74546fb97d5..15d33ca9904 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2460.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2460.md @@ -16,7 +16,7 @@ A class or structure (`identifier2`) is declared as a member of itself (`identif ## Example -The following sample generates C2460: +The following example generates C2460: ```cpp // C2460.cpp From 1ca65a6fc9eb9e496182ea4d82168c072339995f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 27 Jul 2025 22:18:08 +0800 Subject: [PATCH 1187/2255] Update metadata for error references in range [C2431, C2460] --- .../error-messages/compiler-errors-1/compiler-error-c2431.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2432.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2434.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2435.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2436.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2437.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2438.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2439.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2441.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2443.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2444.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2446.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2447.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2448.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2449.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2450.md | 4 ++-- .../error-messages/compiler-errors-1/compiler-error-c2451.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2452.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2457.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2458.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2459.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2460.md | 5 ++--- 22 files changed, 44 insertions(+), 65 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2431.md b/docs/error-messages/compiler-errors-1/compiler-error-c2431.md index d89f1f703d5..923f9f17e1c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2431.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2431.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2431" title: "Compiler Error C2431" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2431" +ms.date: 11/04/2016 f1_keywords: ["C2431"] helpviewer_keywords: ["C2431"] -ms.assetid: 88a5b648-c89f-47d1-a20e-63231ab4f0f7 --- # Compiler Error C2431 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2432.md b/docs/error-messages/compiler-errors-1/compiler-error-c2432.md index 61094eca026..ef91964904e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2432.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2432.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2432" title: "Compiler Error C2432" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2432" +ms.date: 11/04/2016 f1_keywords: ["C2432"] helpviewer_keywords: ["C2432"] -ms.assetid: 0e3326e8-cab1-45a5-b48d-61edd33793e8 --- # Compiler Error C2432 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2434.md b/docs/error-messages/compiler-errors-1/compiler-error-c2434.md index 50bb092e394..f48832f1467 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2434.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2434.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2434" title: "Compiler Error C2434" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2434" +ms.date: 11/04/2016 f1_keywords: ["C2434"] helpviewer_keywords: ["C2434"] -ms.assetid: 01329e26-7c74-4219-b74f-69e3a40c9738 --- # Compiler Error C2434 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2435.md b/docs/error-messages/compiler-errors-1/compiler-error-c2435.md index a00ff91214a..6522c4a0255 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2435.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2435.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2435" title: "Compiler Error C2435" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2435" +ms.date: 11/04/2016 f1_keywords: ["C2435"] helpviewer_keywords: ["C2435"] -ms.assetid: be6aa8f8-579b-42ea-bdd8-2d01393646ad --- # Compiler Error C2435 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2436.md b/docs/error-messages/compiler-errors-1/compiler-error-c2436.md index 7bfdeabf1c7..8b1879a76d8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2436.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2436.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2436" title: "Compiler Error C2436" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2436" +ms.date: 11/04/2016 f1_keywords: ["C2436"] helpviewer_keywords: ["C2436"] -ms.assetid: ca4cc813-bc1d-4c0a-9a2c-3a5fe673d084 --- # Compiler Error C2436 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2437.md b/docs/error-messages/compiler-errors-1/compiler-error-c2437.md index ae3bb92a360..07b62af2655 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2437.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2437.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2437" title: "Compiler Error C2437" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2437" +ms.date: 11/04/2016 f1_keywords: ["C2437"] helpviewer_keywords: ["C2437"] -ms.assetid: 2d2b3c6c-856a-4b27-ae10-64813b3e5483 --- # Compiler Error C2437 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2438.md b/docs/error-messages/compiler-errors-1/compiler-error-c2438.md index f1f784f629e..2a0e207e1df 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2438.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2438.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2438" title: "Compiler Error C2438" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2438" +ms.date: 11/04/2016 f1_keywords: ["C2438"] helpviewer_keywords: ["C2438"] -ms.assetid: 3a0ab3ba-d0e4-4d8f-971d-e503397cc827 --- # Compiler Error C2438 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2439.md b/docs/error-messages/compiler-errors-1/compiler-error-c2439.md index e24d5d39ec3..37a5523bea6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2439.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2439.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2439" title: "Compiler Error C2439" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2439" +ms.date: 11/04/2016 f1_keywords: ["C2439"] helpviewer_keywords: ["C2439"] -ms.assetid: 3c5dbe5c-b7d3-4bb0-8619-92f6e280461e --- # Compiler Error C2439 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2441.md b/docs/error-messages/compiler-errors-1/compiler-error-c2441.md index ba07ebc5a5a..e82e9e4cb04 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2441.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2441.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2441" title: "Compiler Error C2441" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2441" +ms.date: 11/04/2016 f1_keywords: ["C2441"] helpviewer_keywords: ["C2441"] -ms.assetid: ffbd6573-777a-48dd-892f-5cf4a758dcab --- # Compiler Error C2441 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2443.md b/docs/error-messages/compiler-errors-1/compiler-error-c2443.md index c610476fc7d..2246220c488 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2443.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2443.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2443" title: "Compiler Error C2443" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2443" +ms.date: 11/04/2016 f1_keywords: ["C2443"] helpviewer_keywords: ["C2443"] -ms.assetid: 315330d5-24bc-4193-a531-0642095be58f --- # Compiler Error C2443 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2444.md b/docs/error-messages/compiler-errors-1/compiler-error-c2444.md index ccf35d6e96c..8fbffad64a9 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2444.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2444.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2444" title: "Compiler Error C2444" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2444" +ms.date: 11/04/2016 f1_keywords: ["C2444"] helpviewer_keywords: ["C2444"] -ms.assetid: 6339ed82-caad-45d3-a8ff-6c746589fd03 --- # Compiler Error C2444 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2446.md b/docs/error-messages/compiler-errors-1/compiler-error-c2446.md index 8dae8e651fc..0f1951562ed 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2446.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2446.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2446" title: "Compiler Error C2446" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2446" +ms.date: 11/04/2016 f1_keywords: ["C2446"] helpviewer_keywords: ["C2446"] -ms.assetid: 4f70dd11-6baf-4b92-9a08-f88f65ffa199 --- # Compiler Error C2446 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2447.md b/docs/error-messages/compiler-errors-1/compiler-error-c2447.md index aba0cdbbb14..7191d5ad851 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2447.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2447.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2447" title: "Compiler Error C2447" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2447" +ms.date: 11/04/2016 f1_keywords: ["C2447"] helpviewer_keywords: ["C2447"] -ms.assetid: d1bd6e9a-ee42-4510-ae5e-6b0378f7b931 --- # Compiler Error C2447 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2448.md b/docs/error-messages/compiler-errors-1/compiler-error-c2448.md index b6e0971651c..05ae565e92e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2448.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2448.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2448" title: "Compiler Error C2448" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2448" +ms.date: 11/04/2016 f1_keywords: ["C2448"] helpviewer_keywords: ["C2448"] -ms.assetid: e255df3c-f861-4b4d-a193-8768cef061a5 --- # Compiler Error C2448 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2449.md b/docs/error-messages/compiler-errors-1/compiler-error-c2449.md index c3171be013c..aee2034191e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2449.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2449.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2449" title: "Compiler Error C2449" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2449" +ms.date: 11/04/2016 f1_keywords: ["C2449"] helpviewer_keywords: ["C2449"] -ms.assetid: 544bf0b6-daa0-40e8-9f21-8e583d472a2d --- # Compiler Error C2449 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2450.md b/docs/error-messages/compiler-errors-1/compiler-error-c2450.md index 12ab4a4a822..61dc7caa663 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2450.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2450.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Error C2450" title: "Compiler Error C2450" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2450" +ms.date: 11/04/2016 f1_keywords: ["C2450"] helpviewer_keywords: ["C2450"] --- diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2451.md b/docs/error-messages/compiler-errors-1/compiler-error-c2451.md index 96057c57263..0d266179dbd 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2451.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2451.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2451" title: "Compiler Error C2451" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2451" +ms.date: 11/04/2016 f1_keywords: ["C2451"] helpviewer_keywords: ["C2451"] -ms.assetid: a64c93a5-ab8d-4d39-ae57-9ee7ef803036 --- # Compiler Error C2451 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2452.md b/docs/error-messages/compiler-errors-1/compiler-error-c2452.md index a3c684d0c3e..fabb98fbc3e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2452.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2452.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2452" title: "Compiler Error C2452" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2452" +ms.date: 11/04/2016 f1_keywords: ["C2452"] helpviewer_keywords: ["C2452"] -ms.assetid: a4ec7642-6660-4c7a-9866-853d1cc67daf --- # Compiler Error C2452 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2457.md b/docs/error-messages/compiler-errors-1/compiler-error-c2457.md index 771831645d0..55e9609401a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2457.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2457.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2457" title: "Compiler Error C2457" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2457" +ms.date: 11/04/2016 f1_keywords: ["C2457"] helpviewer_keywords: ["C2457"] -ms.assetid: 347e169d-23ad-434f-8836-5b09b53980ff --- # Compiler Error C2457 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2458.md b/docs/error-messages/compiler-errors-1/compiler-error-c2458.md index 50eefd75c5e..e87f8b60f8d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2458.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2458.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2458" title: "Compiler Error C2458" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2458" +ms.date: 11/04/2016 f1_keywords: ["C2458"] helpviewer_keywords: ["C2458"] -ms.assetid: ed21901f-1067-42f5-b275-19b480decf5c --- # Compiler Error C2458 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2459.md b/docs/error-messages/compiler-errors-1/compiler-error-c2459.md index eb3a057fd6a..135799238c3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2459.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2459.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2459" title: "Compiler Error C2459" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2459" +ms.date: 11/04/2016 f1_keywords: ["C2459"] helpviewer_keywords: ["C2459"] -ms.assetid: 81e29f4c-5b60-40fb-9557-1cdc630d77e8 --- # Compiler Error C2459 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2460.md b/docs/error-messages/compiler-errors-1/compiler-error-c2460.md index 15d33ca9904..6f13975fc47 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2460.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2460.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2460" title: "Compiler Error C2460" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2460" +ms.date: 11/04/2016 f1_keywords: ["C2460"] helpviewer_keywords: ["C2460"] -ms.assetid: d969fca9-3ac5-4e4e-88fc-df05510e2093 --- # Compiler Error C2460 From 0ae844debc549fd2e42a153585a7b88555d107cb Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 28 Jul 2025 23:10:31 +0800 Subject: [PATCH 1188/2255] Add blockquotes for error messages in range [C2461, C2490] --- docs/error-messages/compiler-errors-1/compiler-error-c2464.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2465.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2467.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2471.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2473.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2474.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2477.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2479.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2480.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2485.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2486.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2487.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2488.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2489.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2490.md | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2464.md b/docs/error-messages/compiler-errors-1/compiler-error-c2464.md index 15645af89f1..4466f9739a8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2464.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2464.md @@ -8,7 +8,7 @@ ms.assetid: ace953d6-b414-49ee-bfef-90578a8da00c --- # Compiler Error C2464 -'identifier' : cannot use 'new' to allocate a reference +> 'identifier' : cannot use 'new' to allocate a reference A reference identifier was allocated with the **`new`** operator. References are not memory objects, so **`new`** cannot return a pointer to them. Use the standard variable declaration syntax to declare a reference. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2465.md b/docs/error-messages/compiler-errors-1/compiler-error-c2465.md index fc173014703..49056e0539a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2465.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2465.md @@ -8,6 +8,6 @@ ms.assetid: 65ba2a9f-d95e-4af3-b60b-1ac59a1e307c --- # Compiler Error C2465 -cannot define an anonymous type inside parentheses +> cannot define an anonymous type inside parentheses An anonymous structure, union, or enumerated type is defined inside a parenthetical expression. This is invalid in C++ because the definition is meaningless in function scope. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2467.md b/docs/error-messages/compiler-errors-1/compiler-error-c2467.md index 05d89f1289e..52824f8f822 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2467.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2467.md @@ -8,7 +8,7 @@ ms.assetid: f9ead270-5d0b-41cc-bdcd-586a647c67a7 --- # Compiler Error C2467 -illegal declaration of anonymous 'user-defined-type' +> illegal declaration of anonymous 'user-defined-type' A nested user-defined type was declared. This is an error when compiling C source code with the ANSI compatibility option ([/Za](../../build/reference/za-ze-disable-language-extensions.md)) enabled. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2471.md b/docs/error-messages/compiler-errors-1/compiler-error-c2471.md index 062241d3ee9..85d7e4232c4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2471.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2471.md @@ -8,7 +8,7 @@ ms.assetid: a8928b44-20f6-4cbc-9aa5-7e86052a9c6b --- # Compiler Error C2471 -cannot update program database 'file' +> cannot update program database 'file' The compiler cannot write to the database file. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2473.md b/docs/error-messages/compiler-errors-1/compiler-error-c2473.md index 63eb9afabf2..a3e5557ee95 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2473.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2473.md @@ -8,7 +8,7 @@ ms.assetid: 6bb7dbf5-b198-490f-860e-fd64d0c2a284 --- # Compiler Error C2473 -'identifier' : looks like a function definition, but there is no parameter list. +> 'identifier' : looks like a function definition, but there is no parameter list. The compiler detected what looked like a function, without the parameter list. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2474.md b/docs/error-messages/compiler-errors-1/compiler-error-c2474.md index 939b72aa8e8..3532133c803 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2474.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2474.md @@ -8,7 +8,7 @@ ms.assetid: 64e6c61e-6e77-480e-bcf0-b30a2fc482ac --- # Compiler Error C2474 -'keyword' : missing an adjacent semicolon, could be either keyword or identifier. +> 'keyword' : missing an adjacent semicolon, could be either keyword or identifier. The compiler expected to find a semicolon, and was unable to determine your intent. Add the semicolon to resolve this error. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2477.md b/docs/error-messages/compiler-errors-1/compiler-error-c2477.md index 9979cd6338c..c579646990d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2477.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2477.md @@ -8,7 +8,7 @@ ms.assetid: 60bc324b-6605-4833-8099-a291efc712e7 --- # Compiler Error C2477 -'member' : static data member cannot be initialized via derived class +> 'member' : static data member cannot be initialized via derived class A static data member of a template class was initialized incorrectly. This is a breaking change with versions of the Microsoft C++ compiler prior to Visual Studio .NET 2003, in order to conform to the ISO C++ standard. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2479.md b/docs/error-messages/compiler-errors-1/compiler-error-c2479.md index e7eca0e5cc1..510eed94a3f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2479.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2479.md @@ -8,7 +8,7 @@ ms.assetid: c74c7869-e65b-4ca1-b6fa-eb39fed4458a --- # Compiler Error C2479 -'identifier' : 'allocate( )' is only valid for data items of static extent +> 'identifier' : 'allocate( )' is only valid for data items of static extent The `__declspec( allocate())` syntax can be used for static data only. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2480.md b/docs/error-messages/compiler-errors-1/compiler-error-c2480.md index 53d48131942..100b264ee47 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2480.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2480.md @@ -8,7 +8,7 @@ ms.assetid: 1a58d1c2-971b-4084-96fa-f94aa51c02f1 --- # Compiler Error C2480 -'identifier' : 'thread' is only valid for data items of static extent +> 'identifier' : 'thread' is only valid for data items of static extent You cannot use the `thread` attribute with an automatic variable, nonstatic data member, function parameter, or on function declarations or definitions. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2485.md b/docs/error-messages/compiler-errors-1/compiler-error-c2485.md index cc0fae6ad51..b832acfa3f9 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2485.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2485.md @@ -8,6 +8,6 @@ ms.assetid: daae3fc1-76cf-4a6f-b2fa-86873fb0929d --- # Compiler Error C2485 -'identifier' : unrecognized extended attribute +> 'identifier' : unrecognized extended attribute The declaration attribute is not valid. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2486.md b/docs/error-messages/compiler-errors-1/compiler-error-c2486.md index be3ef73366d..69f5db43c7d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2486.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2486.md @@ -8,7 +8,7 @@ ms.assetid: 436da349-6461-4e32-bfca-4f3e620108e2 --- # Compiler Error C2486 -'__LOCAL_SIZE' only allowed in function with the 'naked' attribute +> '__LOCAL_SIZE' only allowed in function with the 'naked' attribute In inline assembly functions, the name `__LOCAL_SIZE` is reserved for functions declared with the [naked](../../cpp/naked-cpp.md) attribute. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2487.md b/docs/error-messages/compiler-errors-1/compiler-error-c2487.md index 29a8a9beeb8..624c2ba0ebe 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2487.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2487.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2487"] --- # Compiler Error C2487 -'identifier' : member of dll interface class may not be declared with dll interface +> 'identifier' : member of dll interface class may not be declared with dll interface You can declare a whole class, or certain members of a non-DLL interface class, with DLL interface. You cannot declare a class with DLL interface and then declare a member of that class with DLL interface. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2488.md b/docs/error-messages/compiler-errors-1/compiler-error-c2488.md index 03afc72f646..976d7fbe7ea 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2488.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2488.md @@ -8,7 +8,7 @@ ms.assetid: cd435909-43e4-43c6-a57c-5d02468ef75f --- # Compiler Error C2488 -'identifier' : 'naked' can only be applied to non-member function definitions +> 'identifier' : 'naked' can only be applied to non-member function definitions The [naked](../../cpp/naked-cpp.md) attribute was applied to a function declaration. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2489.md b/docs/error-messages/compiler-errors-1/compiler-error-c2489.md index b7cdbc9ed09..25685c29ea5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2489.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2489.md @@ -8,7 +8,7 @@ ms.assetid: 67d8cd98-db7e-4f7f-86b4-4af7bc89ec8b --- # Compiler Error C2489 -'identifier' : initialized auto or register variable not allowed at function scope in 'naked' function +> 'identifier' : initialized auto or register variable not allowed at function scope in 'naked' function For more information, see [naked](../../cpp/naked-cpp.md). diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2490.md b/docs/error-messages/compiler-errors-1/compiler-error-c2490.md index b675d35c6b0..b24da7a13e0 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2490.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2490.md @@ -8,7 +8,7 @@ ms.assetid: 9de6bddd-b2e2-4ce6-b33b-201a8c2c8c54 --- # Compiler Error C2490 -'keyword' not allowed in function with 'naked' attribute +> 'keyword' not allowed in function with 'naked' attribute A function defined as [naked](../../cpp/naked-cpp.md) cannot use structured exception handling. From c785b6ee9e647fa5da92d2cc21e3861a4bd7e17b Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 28 Jul 2025 23:16:01 +0800 Subject: [PATCH 1189/2255] Add "Remarks" and "Example" headings for error references in range [C2461, C2490] --- docs/error-messages/compiler-errors-1/compiler-error-c2461.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2462.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2464.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2465.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2466.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2467.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2470.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2471.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2473.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2474.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2477.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2479.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2480.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2483.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2485.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2486.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2487.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2488.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2489.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2490.md | 4 ++++ 20 files changed, 64 insertions(+) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2461.md b/docs/error-messages/compiler-errors-1/compiler-error-c2461.md index 4d3aac6503f..02e2fe23fbe 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2461.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2461.md @@ -10,6 +10,8 @@ ms.assetid: e64ba651-f441-4fdb-b5cb-4209bbbe4db4 > '*class*' : constructor syntax missing formal parameters +## Remarks + The constructor for the class does not specify any formal parameters. The declaration of a constructor must specify a formal parameter list. The list can be empty. To fix this issue, add a pair of parentheses after the declaration of *class*::**class*. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2462.md b/docs/error-messages/compiler-errors-1/compiler-error-c2462.md index 9a8d3f18674..739e07cecc4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2462.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2462.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C2462"] > 'identifier' : cannot define a type in a 'new-expression' +## Remarks + You cannot define a type in the operand field of the **`new`** operator. Put the type definition in a separate statement. +## Example + The following sample generates C2462: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2464.md b/docs/error-messages/compiler-errors-1/compiler-error-c2464.md index 4466f9739a8..185a5c591ad 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2464.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2464.md @@ -10,8 +10,12 @@ ms.assetid: ace953d6-b414-49ee-bfef-90578a8da00c > 'identifier' : cannot use 'new' to allocate a reference +## Remarks + A reference identifier was allocated with the **`new`** operator. References are not memory objects, so **`new`** cannot return a pointer to them. Use the standard variable declaration syntax to declare a reference. +## Example + The following sample generates C2464: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2465.md b/docs/error-messages/compiler-errors-1/compiler-error-c2465.md index 49056e0539a..f3611f15a66 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2465.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2465.md @@ -10,4 +10,6 @@ ms.assetid: 65ba2a9f-d95e-4af3-b60b-1ac59a1e307c > cannot define an anonymous type inside parentheses +## Remarks + An anonymous structure, union, or enumerated type is defined inside a parenthetical expression. This is invalid in C++ because the definition is meaningless in function scope. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2466.md b/docs/error-messages/compiler-errors-1/compiler-error-c2466.md index 34e0cca5945..ed610cf53f7 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2466.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2466.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C2466"] > cannot allocate an array of constant size 0 +## Remarks + An array is allocated or declared with size zero. The constant expression for the array size must be an integer greater than zero. An array declaration with a zero subscript is legal only for a class, structure, or union member and only with Microsoft extensions ([/Ze](../../build/reference/za-ze-disable-language-extensions.md)). +## Example + The following sample generates C2466: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2467.md b/docs/error-messages/compiler-errors-1/compiler-error-c2467.md index 52824f8f822..6997d426c8b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2467.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2467.md @@ -10,8 +10,12 @@ ms.assetid: f9ead270-5d0b-41cc-bdcd-586a647c67a7 > illegal declaration of anonymous 'user-defined-type' +## Remarks + A nested user-defined type was declared. This is an error when compiling C source code with the ANSI compatibility option ([/Za](../../build/reference/za-ze-disable-language-extensions.md)) enabled. +## Example + The following sample generates C2467: ```c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2470.md b/docs/error-messages/compiler-errors-1/compiler-error-c2470.md index d0bc5eda5ab..106ff11456a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2470.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2470.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C2470"] > '*function*': looks like a function definition, but there is no parameter list; skipping apparent body +## Remarks + A function definition is missing its argument list. ## Example diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2471.md b/docs/error-messages/compiler-errors-1/compiler-error-c2471.md index 85d7e4232c4..06979d8cbb9 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2471.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2471.md @@ -10,6 +10,8 @@ ms.assetid: a8928b44-20f6-4cbc-9aa5-7e86052a9c6b > cannot update program database 'file' +## Remarks + The compiler cannot write to the database file. ### To fix the problem diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2473.md b/docs/error-messages/compiler-errors-1/compiler-error-c2473.md index a3e5557ee95..7cf4bf36adc 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2473.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2473.md @@ -10,6 +10,8 @@ ms.assetid: 6bb7dbf5-b198-490f-860e-fd64d0c2a284 > 'identifier' : looks like a function definition, but there is no parameter list. +## Remarks + The compiler detected what looked like a function, without the parameter list. ## Example diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2474.md b/docs/error-messages/compiler-errors-1/compiler-error-c2474.md index 3532133c803..a274ba64a3d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2474.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2474.md @@ -10,6 +10,8 @@ ms.assetid: 64e6c61e-6e77-480e-bcf0-b30a2fc482ac > 'keyword' : missing an adjacent semicolon, could be either keyword or identifier. +## Remarks + The compiler expected to find a semicolon, and was unable to determine your intent. Add the semicolon to resolve this error. ## Example diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2477.md b/docs/error-messages/compiler-errors-1/compiler-error-c2477.md index c579646990d..6c8d1b6dee7 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2477.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2477.md @@ -10,8 +10,12 @@ ms.assetid: 60bc324b-6605-4833-8099-a291efc712e7 > 'member' : static data member cannot be initialized via derived class +## Remarks + A static data member of a template class was initialized incorrectly. This is a breaking change with versions of the Microsoft C++ compiler prior to Visual Studio .NET 2003, in order to conform to the ISO C++ standard. +## Example + The following sample generates C2477: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2479.md b/docs/error-messages/compiler-errors-1/compiler-error-c2479.md index 510eed94a3f..f559e8c4e93 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2479.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2479.md @@ -10,8 +10,12 @@ ms.assetid: c74c7869-e65b-4ca1-b6fa-eb39fed4458a > 'identifier' : 'allocate( )' is only valid for data items of static extent +## Remarks + The `__declspec( allocate())` syntax can be used for static data only. +## Example + The following sample generates C2479: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2480.md b/docs/error-messages/compiler-errors-1/compiler-error-c2480.md index 100b264ee47..01e6de5e4ce 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2480.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2480.md @@ -10,10 +10,14 @@ ms.assetid: 1a58d1c2-971b-4084-96fa-f94aa51c02f1 > 'identifier' : 'thread' is only valid for data items of static extent +## Remarks + You cannot use the `thread` attribute with an automatic variable, nonstatic data member, function parameter, or on function declarations or definitions. Use the `thread` attribute for global variables, static data members, and local static variables only. +## Example + The following sample generates C2480: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2483.md b/docs/error-messages/compiler-errors-1/compiler-error-c2483.md index 5e225b8d6d9..da7fe80706d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2483.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2483.md @@ -10,6 +10,8 @@ ms.assetid: 5762b325-914b-442d-a604-e4617ba04038 >'*identifier*' : object with constructor or destructor cannot be declared 'thread' +## Remarks + This error message is obsolete in Visual Studio 2015 and later versions. In previous versions, variables declared with the `thread` attribute cannot be initialized with a constructor or other expression that requires run-time evaluation. A static expression is required to initialize `thread` data. ## Example diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2485.md b/docs/error-messages/compiler-errors-1/compiler-error-c2485.md index b832acfa3f9..dfbf6da94a8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2485.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2485.md @@ -10,4 +10,6 @@ ms.assetid: daae3fc1-76cf-4a6f-b2fa-86873fb0929d > 'identifier' : unrecognized extended attribute +## Remarks + The declaration attribute is not valid. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2486.md b/docs/error-messages/compiler-errors-1/compiler-error-c2486.md index 69f5db43c7d..1f990a0bba5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2486.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2486.md @@ -10,8 +10,12 @@ ms.assetid: 436da349-6461-4e32-bfca-4f3e620108e2 > '__LOCAL_SIZE' only allowed in function with the 'naked' attribute +## Remarks + In inline assembly functions, the name `__LOCAL_SIZE` is reserved for functions declared with the [naked](../../cpp/naked-cpp.md) attribute. +## Example + The following sample generates C2486: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2487.md b/docs/error-messages/compiler-errors-1/compiler-error-c2487.md index 624c2ba0ebe..07d636cb451 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2487.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2487.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C2487"] > 'identifier' : member of dll interface class may not be declared with dll interface +## Remarks + You can declare a whole class, or certain members of a non-DLL interface class, with DLL interface. You cannot declare a class with DLL interface and then declare a member of that class with DLL interface. +## Example + The following sample generates C2487: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2488.md b/docs/error-messages/compiler-errors-1/compiler-error-c2488.md index 976d7fbe7ea..8efc0e175de 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2488.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2488.md @@ -10,8 +10,12 @@ ms.assetid: cd435909-43e4-43c6-a57c-5d02468ef75f > 'identifier' : 'naked' can only be applied to non-member function definitions +## Remarks + The [naked](../../cpp/naked-cpp.md) attribute was applied to a function declaration. +## Example + The following sample generates C2488: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2489.md b/docs/error-messages/compiler-errors-1/compiler-error-c2489.md index 25685c29ea5..5c9d0d072c0 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2489.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2489.md @@ -10,8 +10,12 @@ ms.assetid: 67d8cd98-db7e-4f7f-86b4-4af7bc89ec8b > 'identifier' : initialized auto or register variable not allowed at function scope in 'naked' function +## Remarks + For more information, see [naked](../../cpp/naked-cpp.md). +## Example + The following sample generates C2489: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2490.md b/docs/error-messages/compiler-errors-1/compiler-error-c2490.md index b24da7a13e0..2f9725d8b31 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2490.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2490.md @@ -10,8 +10,12 @@ ms.assetid: 9de6bddd-b2e2-4ce6-b33b-201a8c2c8c54 > 'keyword' not allowed in function with 'naked' attribute +## Remarks + A function defined as [naked](../../cpp/naked-cpp.md) cannot use structured exception handling. +## Example + The following sample generates C2490: ```cpp From 51673d9b78b94e169da10028bba19f435d5e5778 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 28 Jul 2025 23:17:34 +0800 Subject: [PATCH 1190/2255] Replace term "sample" with "example" for error references in range [C2461, C2490] --- docs/error-messages/compiler-errors-1/compiler-error-c2461.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2462.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2464.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2466.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2467.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2472.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2473.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2474.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2477.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2479.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2480.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2482.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2483.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2486.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2487.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2488.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2489.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2490.md | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2461.md b/docs/error-messages/compiler-errors-1/compiler-error-c2461.md index 02e2fe23fbe..f0073f5d25e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2461.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2461.md @@ -18,7 +18,7 @@ To fix this issue, add a pair of parentheses after the declaration of *class*::* ## Example -The following sample shows how to fix C2461: +The following example shows how to fix C2461: ```cpp // C2461.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2462.md b/docs/error-messages/compiler-errors-1/compiler-error-c2462.md index 739e07cecc4..831bb7e25a4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2462.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2462.md @@ -15,7 +15,7 @@ You cannot define a type in the operand field of the **`new`** operator. Put the ## Example -The following sample generates C2462: +The following example generates C2462: ```cpp // C2462.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2464.md b/docs/error-messages/compiler-errors-1/compiler-error-c2464.md index 185a5c591ad..a7722f6ad02 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2464.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2464.md @@ -16,7 +16,7 @@ A reference identifier was allocated with the **`new`** operator. References are ## Example -The following sample generates C2464: +The following example generates C2464: ```cpp // C2464.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2466.md b/docs/error-messages/compiler-errors-1/compiler-error-c2466.md index ed610cf53f7..6de1e5bce4b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2466.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2466.md @@ -15,7 +15,7 @@ An array is allocated or declared with size zero. The constant expression for th ## Example -The following sample generates C2466: +The following example generates C2466: ```cpp // C2466.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2467.md b/docs/error-messages/compiler-errors-1/compiler-error-c2467.md index 6997d426c8b..c7df5ca1031 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2467.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2467.md @@ -16,7 +16,7 @@ A nested user-defined type was declared. This is an error when compiling C sourc ## Example -The following sample generates C2467: +The following example generates C2467: ```c //C2467.c diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2472.md b/docs/error-messages/compiler-errors-1/compiler-error-c2472.md index 7fce0f698a8..3b789692e08 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2472.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2472.md @@ -18,7 +18,7 @@ The **/clr:pure** and **/clr:safe** compiler options are deprecated in Visual St ## Example -The following sample generates C2472. +The following example generates C2472. ```cpp // C2472.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2473.md b/docs/error-messages/compiler-errors-1/compiler-error-c2473.md index 7cf4bf36adc..fe2d170a93a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2473.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2473.md @@ -16,7 +16,7 @@ The compiler detected what looked like a function, without the parameter list. ## Example -The following sample generates C2473. +The following example generates C2473. ```cpp // C2473.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2474.md b/docs/error-messages/compiler-errors-1/compiler-error-c2474.md index a274ba64a3d..4de08fed246 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2474.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2474.md @@ -16,7 +16,7 @@ The compiler expected to find a semicolon, and was unable to determine your inte ## Example -The following sample generates C2474. +The following example generates C2474. ```cpp // C2474.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2477.md b/docs/error-messages/compiler-errors-1/compiler-error-c2477.md index 6c8d1b6dee7..9224a809cc3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2477.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2477.md @@ -16,7 +16,7 @@ A static data member of a template class was initialized incorrectly. This is a ## Example -The following sample generates C2477: +The following example generates C2477: ```cpp // C2477.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2479.md b/docs/error-messages/compiler-errors-1/compiler-error-c2479.md index f559e8c4e93..50d4cf9b2cc 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2479.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2479.md @@ -16,7 +16,7 @@ The `__declspec( allocate())` syntax can be used for static data only. ## Example -The following sample generates C2479: +The following example generates C2479: ```cpp // C2479.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2480.md b/docs/error-messages/compiler-errors-1/compiler-error-c2480.md index 01e6de5e4ce..5a99cd38d18 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2480.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2480.md @@ -18,7 +18,7 @@ Use the `thread` attribute for global variables, static data members, and local ## Example -The following sample generates C2480: +The following example generates C2480: ```cpp // C2480.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2482.md b/docs/error-messages/compiler-errors-1/compiler-error-c2482.md index 9c48b04b768..1b263c34361 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2482.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2482.md @@ -16,7 +16,7 @@ In managed or WinRT code, variables declared by using the [__declspec(thread)](. ## Example -The following sample generates C2482 in managed (**/clr**) and in WinRT (**/ZW**) code: +The following example generates C2482 in managed (**/clr**) and in WinRT (**/ZW**) code: ```cpp // C2482.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2483.md b/docs/error-messages/compiler-errors-1/compiler-error-c2483.md index da7fe80706d..9d46f72d2a5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2483.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2483.md @@ -16,7 +16,7 @@ This error message is obsolete in Visual Studio 2015 and later versions. In prev ## Example -The following sample generates C2483 in Visual Studio 2013 and earlier versions. +The following example generates C2483 in Visual Studio 2013 and earlier versions. ```cpp // C2483.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2486.md b/docs/error-messages/compiler-errors-1/compiler-error-c2486.md index 1f990a0bba5..0895df95388 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2486.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2486.md @@ -16,7 +16,7 @@ In inline assembly functions, the name `__LOCAL_SIZE` is reserved for functions ## Example -The following sample generates C2486: +The following example generates C2486: ```cpp // C2486.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2487.md b/docs/error-messages/compiler-errors-1/compiler-error-c2487.md index 07d636cb451..a8400fe5432 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2487.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2487.md @@ -15,7 +15,7 @@ You can declare a whole class, or certain members of a non-DLL interface class, ## Example -The following sample generates C2487: +The following example generates C2487: ```cpp // C2487.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2488.md b/docs/error-messages/compiler-errors-1/compiler-error-c2488.md index 8efc0e175de..8d0cfe7cc0e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2488.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2488.md @@ -16,7 +16,7 @@ The [naked](../../cpp/naked-cpp.md) attribute was applied to a function declarat ## Example -The following sample generates C2488: +The following example generates C2488: ```cpp // C2488.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2489.md b/docs/error-messages/compiler-errors-1/compiler-error-c2489.md index 5c9d0d072c0..b685089082c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2489.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2489.md @@ -16,7 +16,7 @@ For more information, see [naked](../../cpp/naked-cpp.md). ## Example -The following sample generates C2489: +The following example generates C2489: ```cpp // C2489.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2490.md b/docs/error-messages/compiler-errors-1/compiler-error-c2490.md index 2f9725d8b31..20b567e5972 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2490.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2490.md @@ -16,7 +16,7 @@ A function defined as [naked](../../cpp/naked-cpp.md) cannot use structured exce ## Example -The following sample generates C2490: +The following example generates C2490: ```cpp // C2490.cpp From b8439520263adaf48385438455e63e1dbbd08d42 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 28 Jul 2025 23:20:53 +0800 Subject: [PATCH 1191/2255] Update metadata for error references in range [C2461, C2490] --- .../error-messages/compiler-errors-1/compiler-error-c2461.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2462.md | 4 ++-- .../error-messages/compiler-errors-1/compiler-error-c2464.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2465.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2466.md | 2 +- .../error-messages/compiler-errors-1/compiler-error-c2467.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2470.md | 2 +- .../error-messages/compiler-errors-1/compiler-error-c2471.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2472.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2473.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2474.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2477.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2479.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2480.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2482.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2483.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2485.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2486.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2487.md | 4 ++-- .../error-messages/compiler-errors-1/compiler-error-c2488.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2489.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2490.md | 5 ++--- 22 files changed, 42 insertions(+), 60 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2461.md b/docs/error-messages/compiler-errors-1/compiler-error-c2461.md index f0073f5d25e..7b4d94ac41d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2461.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2461.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2461" title: "Compiler Error C2461" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2461" +ms.date: 11/04/2016 f1_keywords: ["C2461"] helpviewer_keywords: ["C2461"] -ms.assetid: e64ba651-f441-4fdb-b5cb-4209bbbe4db4 --- # Compiler Error C2461 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2462.md b/docs/error-messages/compiler-errors-1/compiler-error-c2462.md index 831bb7e25a4..baad0121506 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2462.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2462.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Error C2462" title: "Compiler Error C2462" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2462" +ms.date: 11/04/2016 f1_keywords: ["C2462"] helpviewer_keywords: ["C2462"] --- diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2464.md b/docs/error-messages/compiler-errors-1/compiler-error-c2464.md index a7722f6ad02..10a9a5155f1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2464.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2464.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2464" title: "Compiler Error C2464" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2464" +ms.date: 11/04/2016 f1_keywords: ["C2464"] helpviewer_keywords: ["C2464"] -ms.assetid: ace953d6-b414-49ee-bfef-90578a8da00c --- # Compiler Error C2464 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2465.md b/docs/error-messages/compiler-errors-1/compiler-error-c2465.md index f3611f15a66..861458fb9ea 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2465.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2465.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2465" title: "Compiler Error C2465" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2465" +ms.date: 11/04/2016 f1_keywords: ["C2465"] helpviewer_keywords: ["C2465"] -ms.assetid: 65ba2a9f-d95e-4af3-b60b-1ac59a1e307c --- # Compiler Error C2465 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2466.md b/docs/error-messages/compiler-errors-1/compiler-error-c2466.md index 6de1e5bce4b..05985b61cba 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2466.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2466.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C2466" description: "Learn more about: Compiler Error C2466" -ms.date: "03/19/2025" +ms.date: 03/19/2025 f1_keywords: ["C2466"] helpviewer_keywords: ["C2466"] --- diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2467.md b/docs/error-messages/compiler-errors-1/compiler-error-c2467.md index c7df5ca1031..a941568e44a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2467.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2467.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2467" title: "Compiler Error C2467" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2467" +ms.date: 11/04/2016 f1_keywords: ["C2467"] helpviewer_keywords: ["C2467"] -ms.assetid: f9ead270-5d0b-41cc-bdcd-586a647c67a7 --- # Compiler Error C2467 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2470.md b/docs/error-messages/compiler-errors-1/compiler-error-c2470.md index 106ff11456a..228392a8ef2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2470.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2470.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C2470" description: "Learn more about: Compiler Error C2470" -ms.date: "03/29/2025" +ms.date: 03/29/2025 f1_keywords: ["C2470"] helpviewer_keywords: ["C2470"] --- diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2471.md b/docs/error-messages/compiler-errors-1/compiler-error-c2471.md index 06979d8cbb9..abf9f1606c1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2471.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2471.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2471" title: "Compiler Error C2471" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2471" +ms.date: 11/04/2016 f1_keywords: ["C2471"] helpviewer_keywords: ["C2471"] -ms.assetid: a8928b44-20f6-4cbc-9aa5-7e86052a9c6b --- # Compiler Error C2471 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2472.md b/docs/error-messages/compiler-errors-1/compiler-error-c2472.md index 3b789692e08..0b322bc60c3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2472.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2472.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2472" title: "Compiler Error C2472" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2472" +ms.date: 11/04/2016 f1_keywords: ["C2472"] helpviewer_keywords: ["C2472"] -ms.assetid: 3b36bcdc-2ba5-4357-ab88-7545ba0551cd --- # Compiler Error C2472 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2473.md b/docs/error-messages/compiler-errors-1/compiler-error-c2473.md index fe2d170a93a..8577d69fade 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2473.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2473.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2473" title: "Compiler Error C2473" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2473" +ms.date: 11/04/2016 f1_keywords: ["C2473"] helpviewer_keywords: ["C2473"] -ms.assetid: 6bb7dbf5-b198-490f-860e-fd64d0c2a284 --- # Compiler Error C2473 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2474.md b/docs/error-messages/compiler-errors-1/compiler-error-c2474.md index 4de08fed246..a486d75c68e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2474.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2474.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2474" title: "Compiler Error C2474" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2474" +ms.date: 11/04/2016 f1_keywords: ["C2474"] helpviewer_keywords: ["C2474"] -ms.assetid: 64e6c61e-6e77-480e-bcf0-b30a2fc482ac --- # Compiler Error C2474 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2477.md b/docs/error-messages/compiler-errors-1/compiler-error-c2477.md index 9224a809cc3..458ef4e497b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2477.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2477.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2477" title: "Compiler Error C2477" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2477" +ms.date: 11/04/2016 f1_keywords: ["C2477"] helpviewer_keywords: ["C2477"] -ms.assetid: 60bc324b-6605-4833-8099-a291efc712e7 --- # Compiler Error C2477 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2479.md b/docs/error-messages/compiler-errors-1/compiler-error-c2479.md index 50d4cf9b2cc..9f1401b3543 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2479.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2479.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2479" title: "Compiler Error C2479" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2479" +ms.date: 11/04/2016 f1_keywords: ["C2479"] helpviewer_keywords: ["C2479"] -ms.assetid: c74c7869-e65b-4ca1-b6fa-eb39fed4458a --- # Compiler Error C2479 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2480.md b/docs/error-messages/compiler-errors-1/compiler-error-c2480.md index 5a99cd38d18..669e3b97af6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2480.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2480.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2480" title: "Compiler Error C2480" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2480" +ms.date: 11/04/2016 f1_keywords: ["C2480"] helpviewer_keywords: ["C2480"] -ms.assetid: 1a58d1c2-971b-4084-96fa-f94aa51c02f1 --- # Compiler Error C2480 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2482.md b/docs/error-messages/compiler-errors-1/compiler-error-c2482.md index 1b263c34361..2e86bf038f7 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2482.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2482.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2482" title: "Compiler Error C2482" -ms.date: "09/15/2017" +description: "Learn more about: Compiler Error C2482" +ms.date: 09/15/2017 f1_keywords: ["C2482"] helpviewer_keywords: ["C2482"] -ms.assetid: 98c87da2-625c-4cc2-9bf7-78d15921e779 --- # Compiler Error C2482 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2483.md b/docs/error-messages/compiler-errors-1/compiler-error-c2483.md index 9d46f72d2a5..b150748d853 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2483.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2483.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2483" title: "Compiler Error C2483" -ms.date: "09/15/2017" +description: "Learn more about: Compiler Error C2483" +ms.date: 09/15/2017 f1_keywords: ["C2483"] helpviewer_keywords: ["C2483"] -ms.assetid: 5762b325-914b-442d-a604-e4617ba04038 --- # Compiler Error C2483 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2485.md b/docs/error-messages/compiler-errors-1/compiler-error-c2485.md index dfbf6da94a8..3dcdb343ffa 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2485.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2485.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2485" title: "Compiler Error C2485" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2485" +ms.date: 11/04/2016 f1_keywords: ["C2485"] helpviewer_keywords: ["C2485"] -ms.assetid: daae3fc1-76cf-4a6f-b2fa-86873fb0929d --- # Compiler Error C2485 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2486.md b/docs/error-messages/compiler-errors-1/compiler-error-c2486.md index 0895df95388..6e597959509 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2486.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2486.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2486" title: "Compiler Error C2486" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2486" +ms.date: 11/04/2016 f1_keywords: ["C2486"] helpviewer_keywords: ["C2486"] -ms.assetid: 436da349-6461-4e32-bfca-4f3e620108e2 --- # Compiler Error C2486 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2487.md b/docs/error-messages/compiler-errors-1/compiler-error-c2487.md index a8400fe5432..360a49315ca 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2487.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2487.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Error C2487" title: "Compiler Error C2487" -ms.date: "03/04/2024" +description: "Learn more about: Compiler Error C2487" +ms.date: 03/04/2024 f1_keywords: ["C2487"] helpviewer_keywords: ["C2487"] --- diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2488.md b/docs/error-messages/compiler-errors-1/compiler-error-c2488.md index 8d0cfe7cc0e..f708e3c6c8e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2488.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2488.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2488" title: "Compiler Error C2488" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2488" +ms.date: 11/04/2016 f1_keywords: ["C2488"] helpviewer_keywords: ["C2488"] -ms.assetid: cd435909-43e4-43c6-a57c-5d02468ef75f --- # Compiler Error C2488 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2489.md b/docs/error-messages/compiler-errors-1/compiler-error-c2489.md index b685089082c..fb1bc4c1b20 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2489.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2489.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2489" title: "Compiler Error C2489" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2489" +ms.date: 11/04/2016 f1_keywords: ["C2489"] helpviewer_keywords: ["C2489"] -ms.assetid: 67d8cd98-db7e-4f7f-86b4-4af7bc89ec8b --- # Compiler Error C2489 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2490.md b/docs/error-messages/compiler-errors-1/compiler-error-c2490.md index 20b567e5972..56c30f37d31 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2490.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2490.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2490" title: "Compiler Error C2490" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2490" +ms.date: 11/04/2016 f1_keywords: ["C2490"] helpviewer_keywords: ["C2490"] -ms.assetid: 9de6bddd-b2e2-4ce6-b33b-201a8c2c8c54 --- # Compiler Error C2490 From 4d667eeef61d724201f26eb88272b8b28eac6ba1 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 29 Jul 2025 01:24:14 +0800 Subject: [PATCH 1192/2255] Elide parentheses around some "For more information..." --- docs/c-language/c-comments.md | 2 +- docs/c-language/initializing-scalar-types.md | 2 +- docs/c-language/l-value-and-r-value-expressions.md | 2 +- docs/c-language/parameters.md | 2 +- docs/c-language/scope-and-visibility.md | 2 +- docs/c-language/typedef-declarations.md | 2 +- docs/c-runtime-library/code-pages.md | 2 +- docs/c-runtime-library/reference/open-wopen.md | 4 ++-- docs/c-runtime-library/reference/sopen-s-wsopen-s.md | 2 +- docs/c-runtime-library/reference/sopen-wsopen.md | 2 +- .../reference/strftime-wcsftime-strftime-l-wcsftime-l.md | 2 +- docs/cpp/anonymous-class-types.md | 2 +- docs/cpp/fundamental-types-cpp.md | 6 +++--- docs/cpp/multiple-base-classes.md | 2 +- docs/cpp/pointers-to-members.md | 2 +- docs/cpp/postfix-expressions.md | 2 +- ...ement-and-decrement-operators-increment-and-decrement.md | 2 +- ...ement-and-decrement-operators-increment-and-decrement.md | 2 +- docs/cpp/standard-conversions.md | 4 ++-- docs/cpp/virtual-functions.md | 2 +- docs/cppcx/wrl/weakref-class.md | 2 +- docs/dotnet/how-to-migrate-to-clr.md | 4 ++-- docs/mfc/exception-handling-in-mfc.md | 2 +- docs/mfc/reference/cbasepane-class.md | 4 ++-- docs/mfc/reference/cfont-class.md | 2 +- 25 files changed, 31 insertions(+), 31 deletions(-) diff --git a/docs/c-language/c-comments.md b/docs/c-language/c-comments.md index aaa1c15a1e5..f4cb0ff24b5 100644 --- a/docs/c-language/c-comments.md +++ b/docs/c-language/c-comments.md @@ -57,7 +57,7 @@ The Microsoft compiler also supports single-line comments preceded by two forwar // This is a valid comment ``` -Comments beginning with two forward slashes (**`//`**) are terminated by the next newline character that isn't preceded by an escape character. In the next example, the newline character is preceded by a backslash (**`\`**), creating an "escape sequence." This escape sequence causes the compiler to treat the next line as part of the previous line. (For more information, see [Escape Sequences](../c-language/escape-sequences.md).) +Comments beginning with two forward slashes (**`//`**) are terminated by the next newline character that isn't preceded by an escape character. In the next example, the newline character is preceded by a backslash (**`\`**), creating an "escape sequence." This escape sequence causes the compiler to treat the next line as part of the previous line. For more information, see [Escape Sequences](../c-language/escape-sequences.md). ```C // my comment \ diff --git a/docs/c-language/initializing-scalar-types.md b/docs/c-language/initializing-scalar-types.md index 77c56738257..8f195455169 100644 --- a/docs/c-language/initializing-scalar-types.md +++ b/docs/c-language/initializing-scalar-types.md @@ -38,7 +38,7 @@ You can initialize variables of any type, as long as you obey the following rule - Variables declared with the **`auto`** or **`register`** storage-class specifier are initialized each time execution control passes to the block in which they're declared. If you omit an initializer from the declaration of an **`auto`** or **`register`** variable, the initial value of the variable is undefined. For automatic and register values, the initializer isn't restricted to being a constant; it can be any expression involving previously defined values, even function calls. -- The initial values for external variable declarations and for all **`static`** variables, whether external or internal, must be constant expressions. (For more information, see [Constant Expressions](../c-language/c-constant-expressions.md).) Since the address of any externally declared or static variable is constant, it can be used to initialize an internally declared **`static`** pointer variable. However, the address of an **`auto`** variable can't be used as a static initializer because it may be different for each execution of the block. You can use either constant or variable values to initialize **`auto`** and **`register`** variables. +- The initial values for external variable declarations and for all **`static`** variables, whether external or internal, must be constant expressions. For more information, see [Constant Expressions](../c-language/c-constant-expressions.md). Since the address of any externally declared or static variable is constant, it can be used to initialize an internally declared **`static`** pointer variable. However, the address of an **`auto`** variable can't be used as a static initializer because it may be different for each execution of the block. You can use either constant or variable values to initialize **`auto`** and **`register`** variables. - If the declaration of an identifier has block scope, and the identifier has external linkage, the declaration can't have an initialization. diff --git a/docs/c-language/l-value-and-r-value-expressions.md b/docs/c-language/l-value-and-r-value-expressions.md index cca7a68bf24..423efc65b38 100644 --- a/docs/c-language/l-value-and-r-value-expressions.md +++ b/docs/c-language/l-value-and-r-value-expressions.md @@ -31,7 +31,7 @@ The term "r-value" is sometimes used to describe the value of an expression and **Microsoft Specific** -Microsoft C includes an extension to the ANSI C standard that allows casts of l-values to be used as l-values, as long as the size of the object isn't lengthened through the cast. (For more information, see [Type-Cast Conversions](../c-language/type-cast-conversions.md).) The following example illustrates this feature: +Microsoft C includes an extension to the ANSI C standard that allows casts of l-values to be used as l-values, as long as the size of the object isn't lengthened through the cast. For more information, see [Type-Cast Conversions](../c-language/type-cast-conversions.md). The following example illustrates this feature: ``` char *p ; diff --git a/docs/c-language/parameters.md b/docs/c-language/parameters.md index cc504bb4905..1cf21be2848 100644 --- a/docs/c-language/parameters.md +++ b/docs/c-language/parameters.md @@ -50,7 +50,7 @@ void new( double x, double y, double z ) } ``` -If at least one parameter occurs in the parameter list, the list can end with a comma followed by three periods (**`, ...`**). This construction, called the "ellipsis notation," indicates a variable number of arguments to the function. (For more information, see [Calls with a Variable Number of Arguments](../c-language/calls-with-a-variable-number-of-arguments.md).) However, a call to the function must have at least as many arguments as there are parameters before the last comma. +If at least one parameter occurs in the parameter list, the list can end with a comma followed by three periods (**`, ...`**). This construction, called the "ellipsis notation," indicates a variable number of arguments to the function. For more information, see [Calls with a Variable Number of Arguments](../c-language/calls-with-a-variable-number-of-arguments.md). However, a call to the function must have at least as many arguments as there are parameters before the last comma. If no arguments are to be passed to the function, the list of parameters is replaced by the keyword **`void`**. This use of **`void`** is distinct from its use as a type specifier. diff --git a/docs/c-language/scope-and-visibility.md b/docs/c-language/scope-and-visibility.md index 72e07ffd0fb..74b22dfcf92 100644 --- a/docs/c-language/scope-and-visibility.md +++ b/docs/c-language/scope-and-visibility.md @@ -15,7 +15,7 @@ All identifiers except labels have their scope determined by the level at which The declarator or type specifier for an identifier with file scope appears outside any block or list of parameters and is accessible from any place in the translation unit after its declaration. Identifier names with file scope are often called "global" or "external." The scope of a global identifier begins at the point of its definition or declaration and terminates at the end of the translation unit. **Function scope**\ -A label is the only kind of identifier that has function scope. A label is declared implicitly by its use in a statement. Label names must be unique within a function. (For more information about labels and label names, see [The goto and Labeled Statements](../c-language/goto-and-labeled-statements-c.md).) +A label is the only kind of identifier that has function scope. A label is declared implicitly by its use in a statement. Label names must be unique within a function. For more information about labels and label names, see [The goto and Labeled Statements](../c-language/goto-and-labeled-statements-c.md). **Block scope**\ The declarator or type specifier for an identifier with block scope appears inside a block or within the list of formal parameter declarations in a function definition. It is visible only from the point of its declaration or definition to the end of the block containing its declaration or definition. Its scope is limited to that block and to any blocks nested in that block and ends at the curly brace that closes the associated block. Such identifiers are sometimes called "local variables." diff --git a/docs/c-language/typedef-declarations.md b/docs/c-language/typedef-declarations.md index 019f17fbdf9..50750abc3c5 100644 --- a/docs/c-language/typedef-declarations.md +++ b/docs/c-language/typedef-declarations.md @@ -43,7 +43,7 @@ A typedef declaration is interpreted in the same way as a variable or function d A typedef declaration doesn't create new types. It creates synonyms for existing types, or names for types that could be specified in other ways. When a typedef name is used as a type specifier, it can be combined with certain type specifiers, but not others. Acceptable modifiers include **`const`** and **`volatile`**. -Typedef names share the name space with ordinary identifiers. (For more information, see [Name Spaces](../c-language/name-spaces.md).) Therefore, a program can have a typedef name and a local-scope identifier by the same name. For example: +Typedef names share the name space with ordinary identifiers. For more information, see [Name Spaces](../c-language/name-spaces.md). Therefore, a program can have a typedef name and a local-scope identifier by the same name. For example: ```C typedef char FlagType; diff --git a/docs/c-runtime-library/code-pages.md b/docs/c-runtime-library/code-pages.md index f8700a2718f..d38deedd409 100644 --- a/docs/c-runtime-library/code-pages.md +++ b/docs/c-runtime-library/code-pages.md @@ -22,7 +22,7 @@ The Microsoft runtime library uses the following types of code pages: also sets the locale to the system-default ANSI code page. -- Locale code page. The behavior of several run-time routines is dependent on the current locale setting, which includes the locale code page. (For more information, see [Locale](./locale.md).) By default, all locale-dependent routines in the Microsoft run-time library use the code page that corresponds to the "C" locale. At run time, you can change or query the locale code page in use with a call to [`setlocale`](./reference/setlocale-wsetlocale.md). +- Locale code page. The behavior of several run-time routines is dependent on the current locale setting, which includes the locale code page. For more information, see [Locale](./locale.md). By default, all locale-dependent routines in the Microsoft run-time library use the code page that corresponds to the "C" locale. At run time, you can change or query the locale code page in use with a call to [`setlocale`](./reference/setlocale-wsetlocale.md). - Multibyte code page. The behavior of most of the multibyte-character routines in the run-time library depends on the current multibyte code page setting. By default, these routines use the system-default ANSI code page. At run-time you can query and change the multibyte code page with [`_getmbcp`](./reference/getmbcp.md) and [`_setmbcp`](./reference/setmbcp.md), respectively. diff --git a/docs/c-runtime-library/reference/open-wopen.md b/docs/c-runtime-library/reference/open-wopen.md index 6b72d3b25f5..eec84497e30 100644 --- a/docs/c-runtime-library/reference/open-wopen.md +++ b/docs/c-runtime-library/reference/open-wopen.md @@ -79,7 +79,7 @@ The **`_open`** function opens the file specified by *`filename`* and prepares i | `_O_RDONLY` | Opens a file for reading only. Can't be specified with `_O_RDWR` or `_O_WRONLY`. | | `_O_RDWR` | Opens a file for both reading and writing. Can't be specified with `_O_RDONLY` or `_O_WRONLY`. | | `_O_SEQUENTIAL` | Specifies that caching is optimized for, but not restricted to, sequential access from disk. | -| `_O_TEXT` | Opens a file in ANSI text (translated) mode. (For more information, see [Text and binary mode file I/O](../text-and-binary-mode-file-i-o.md) and [`fopen`](fopen-wfopen.md).) | +| `_O_TEXT` | Opens a file in ANSI text (translated) mode. For more information, see [Text and binary mode file I/O](../text-and-binary-mode-file-i-o.md) and [`fopen`](fopen-wfopen.md). | | `_O_TRUNC` | Opens a file and truncates it to zero length; the file must have write permission. Can't be specified with `_O_RDONLY`. `_O_TRUNC` used with `_O_CREAT` opens an existing file or creates a file. **Note:** The `_O_TRUNC` flag destroys the contents of the specified file. | | `_O_WRONLY` | Opens a file for writing only. Can't be specified with `_O_RDONLY` or `_O_RDWR`. | | `_O_U16TEXT` | Opens a file in Unicode UTF-16 mode. | @@ -96,7 +96,7 @@ If **`_open`** is called with **`_O_WRONLY | _O_APPEND`** (append mode) and `_O_ When two or more manifest constants are used to form the *`oflag`* argument, the constants are combined with the bitwise-OR operator ( **`|`** ). For a discussion of binary and text modes, see [Text and binary mode file I/O](../text-and-binary-mode-file-i-o.md). -The *`pmode`* argument is required only when `_O_CREAT` is specified. If the file already exists, *`pmode`* is ignored. Otherwise, *`pmode`* specifies the file permission settings, which are set when the new file is closed the first time. **`_open`** applies the current file-permission mask to *`pmode`* before the permissions are set. (For more information, see [`_umask`](umask.md).) *`pmode`* is an integer expression that contains one or both of the following manifest constants, which are defined in ``. +The *`pmode`* argument is required only when `_O_CREAT` is specified. If the file already exists, *`pmode`* is ignored. Otherwise, *`pmode`* specifies the file permission settings, which are set when the new file is closed the first time. **`_open`** applies the current file-permission mask to *`pmode`* before the permissions are set. For more information, see [`_umask`](umask.md). *`pmode`* is an integer expression that contains one or both of the following manifest constants, which are defined in ``. | *`pmode`* | Meaning | |--|--| diff --git a/docs/c-runtime-library/reference/sopen-s-wsopen-s.md b/docs/c-runtime-library/reference/sopen-s-wsopen-s.md index 04f2bd984a7..9be97bd7694 100644 --- a/docs/c-runtime-library/reference/sopen-s-wsopen-s.md +++ b/docs/c-runtime-library/reference/sopen-s-wsopen-s.md @@ -94,7 +94,7 @@ The integer expression *`oflag`* is formed by combining one or more manifest con | `_O_RDONLY` | Opens a file for reading only. Can't be specified with `_O_RDWR` or `_O_WRONLY`. | | `_O_RDWR` | Opens a file for both reading and writing. Can't be specified with `_O_RDONLY` or `_O_WRONLY`. | | `_O_SEQUENTIAL` | Specifies that caching is optimized for, but not restricted to, sequential access from disk. | -| `_O_TEXT` | Opens a file in ANSI text (translated) mode. (For more information, see [Text and binary mode file I/O](../text-and-binary-mode-file-i-o.md) and [`fopen`](fopen-wfopen.md).) | +| `_O_TEXT` | Opens a file in ANSI text (translated) mode. For more information, see [Text and binary mode file I/O](../text-and-binary-mode-file-i-o.md) and [`fopen`](fopen-wfopen.md). | | `_O_TRUNC` | Opens a file and truncates it to zero length; the file must have write permission. Can't be specified with `_O_RDONLY`. `_O_TRUNC` used with `_O_CREAT` opens an existing file or creates a file. **Note:** The `_O_TRUNC` flag destroys the contents of the specified file. | | `_O_WRONLY` | Opens a file for writing only. Can't be specified with `_O_RDONLY` or `_O_RDWR`. | | `_O_U16TEXT` | Opens a file in Unicode UTF-16 mode. | diff --git a/docs/c-runtime-library/reference/sopen-wsopen.md b/docs/c-runtime-library/reference/sopen-wsopen.md index c3e9b3a0aa2..2ea72da9b58 100644 --- a/docs/c-runtime-library/reference/sopen-wsopen.md +++ b/docs/c-runtime-library/reference/sopen-wsopen.md @@ -88,7 +88,7 @@ The integer expression *`oflag`* is formed by combining one or more of the follo | `_O_RDONLY` | Opens a file for reading only. Can't be specified with `_O_RDWR` or `_O_WRONLY`. | | `_O_RDWR` | Opens a file for both reading and writing. Can't be specified with `_O_RDONLY` or `_O_WRONLY`. | | `_O_SEQUENTIAL` | Specifies that caching is optimized for, but not restricted to, sequential access from disk. | -| `_O_TEXT` | Opens a file in ANSI text (translated) mode. (For more information, see [Text and binary mode file I/O](../text-and-binary-mode-file-i-o.md) and [`fopen`](fopen-wfopen.md).) | +| `_O_TEXT` | Opens a file in ANSI text (translated) mode. For more information, see [Text and binary mode file I/O](../text-and-binary-mode-file-i-o.md) and [`fopen`](fopen-wfopen.md). | | `_O_TRUNC` | Opens a file and truncates it to zero length; the file must have write permission. Can't be specified with `_O_RDONLY`. `_O_TRUNC` used with `_O_CREAT` opens an existing file or creates a file. **Note:** The `_O_TRUNC` flag destroys the contents of the specified file. | | `_O_WRONLY` | Opens a file for writing only. Can't be specified with `_O_RDONLY` or `_O_RDWR`. | | `_O_U16TEXT` | Opens a file in Unicode UTF-16 mode. | diff --git a/docs/c-runtime-library/reference/strftime-wcsftime-strftime-l-wcsftime-l.md b/docs/c-runtime-library/reference/strftime-wcsftime-strftime-l-wcsftime-l.md index 9d253c5cf24..541b23cf3e4 100644 --- a/docs/c-runtime-library/reference/strftime-wcsftime-strftime-l-wcsftime-l.md +++ b/docs/c-runtime-library/reference/strftime-wcsftime-strftime-l-wcsftime-l.md @@ -84,7 +84,7 @@ By default, this function's global state is scoped to the application. To change |---|---|---|---| | **`_tcsftime`** | **`strftime`** | **`strftime`** | **`wcsftime`** | -The *`format`* argument consists of one or more codes; as in **`printf`**, the formatting codes are preceded by a percent sign (**`%`**). Characters that don't begin with **`%`** are copied unchanged to *`strDest`*. The `LC_TIME` category of the current locale affects the output formatting of **`strftime`**. (For more information on `LC_TIME`, see [`setlocale`](setlocale-wsetlocale.md).) The **`strftime`** and **`wcsftime`** functions use the currently set locale. The **`_strftime_l`** and **`_wcsftime_l`** versions of these functions are identical except that they take the locale as a parameter and use that instead of the currently set locale. For more information, see [Locale](../locale.md). +The *`format`* argument consists of one or more codes; as in **`printf`**, the formatting codes are preceded by a percent sign (**`%`**). Characters that don't begin with **`%`** are copied unchanged to *`strDest`*. The `LC_TIME` category of the current locale affects the output formatting of **`strftime`**. For more information on `LC_TIME`, see [`setlocale`](setlocale-wsetlocale.md). The **`strftime`** and **`wcsftime`** functions use the currently set locale. The **`_strftime_l`** and **`_wcsftime_l`** versions of these functions are identical except that they take the locale as a parameter and use that instead of the currently set locale. For more information, see [Locale](../locale.md). The **`strftime`** functions support these formatting codes: diff --git a/docs/cpp/anonymous-class-types.md b/docs/cpp/anonymous-class-types.md index 591f8492676..53d162606f3 100644 --- a/docs/cpp/anonymous-class-types.md +++ b/docs/cpp/anonymous-class-types.md @@ -42,7 +42,7 @@ In the preceding code, `iValue` can be accessed using the object member-selectio int i = ptv.iValue; ``` -Anonymous classes are subject to certain restrictions. (For more information about anonymous unions, see [Unions](../cpp/unions.md).) Anonymous classes: +Anonymous classes are subject to certain restrictions. For more information about anonymous unions, see [Unions](../cpp/unions.md). Anonymous classes: - Cannot have a constructor or destructor. diff --git a/docs/cpp/fundamental-types-cpp.md b/docs/cpp/fundamental-types-cpp.md index 457e01bac46..1122ea1144f 100644 --- a/docs/cpp/fundamental-types-cpp.md +++ b/docs/cpp/fundamental-types-cpp.md @@ -14,11 +14,11 @@ Built-in types (also called *fundamental types*) are specified by the C++ langua The [`void`](void-cpp.md) type describes an empty set of values. No variable of type **`void`** can be specified. The **`void`** type is used primarily to declare functions that return no values or to declare generic pointers to untyped or arbitrarily typed data. Any expression can be explicitly converted or cast to type **`void`**. However, such expressions are restricted to the following uses: -- An expression statement. (For more information, see [Expressions](expressions-cpp.md).) +- An expression statement. For more information, see [Expressions](expressions-cpp.md). -- The left operand of the comma operator. (For more information, see [Comma Operator](comma-operator.md).) +- The left operand of the comma operator. For more information, see [Comma Operator](comma-operator.md). -- The second or third operand of the conditional operator (`? :`). (For more information, see [Expressions with the Conditional Operator](conditional-operator-q.md).) +- The second or third operand of the conditional operator (`? :`). For more information, see [Expressions with the Conditional Operator](conditional-operator-q.md). ## std::nullptr_t diff --git a/docs/cpp/multiple-base-classes.md b/docs/cpp/multiple-base-classes.md index d792657cd24..b71004540e0 100644 --- a/docs/cpp/multiple-base-classes.md +++ b/docs/cpp/multiple-base-classes.md @@ -142,7 +142,7 @@ The compiler detects ambiguities by performing tests in this order: 1. If overloaded functions are unambiguous, they're resolved. -1. If access to the name violates member-access permission, an error message is generated. (For more information, see [Member-Access Control](../cpp/member-access-control-cpp.md).) +1. If access to the name violates member-access permission, an error message is generated. For more information, see [Member-Access Control](../cpp/member-access-control-cpp.md). When an expression produces an ambiguity through inheritance, you can manually resolve it by qualifying the name in question with its class name. To make the preceding example compile properly with no ambiguities, use code such as: diff --git a/docs/cpp/pointers-to-members.md b/docs/cpp/pointers-to-members.md index 17e5da3112e..f92ee99c25e 100644 --- a/docs/cpp/pointers-to-members.md +++ b/docs/cpp/pointers-to-members.md @@ -121,7 +121,7 @@ The address of a static member isn't a pointer to a member. It's a regular point Invoking a virtual function through a pointer-to-member function works as if the function had been called directly. The correct function is looked up in the v-table and invoked. -The key to virtual functions working, as always, is invoking them through a pointer to a base class. (For more information about virtual functions, see [Virtual Functions](../cpp/virtual-functions.md).) +The key to virtual functions working, as always, is invoking them through a pointer to a base class. For more information about virtual functions, see [Virtual Functions](../cpp/virtual-functions.md). The following code shows how to invoke a virtual function through a pointer-to-member function: diff --git a/docs/cpp/postfix-expressions.md b/docs/cpp/postfix-expressions.md index 9ed1835bcfc..635fddc23d1 100644 --- a/docs/cpp/postfix-expressions.md +++ b/docs/cpp/postfix-expressions.md @@ -72,7 +72,7 @@ When a function is called, the following tasks are performed: Func( Temp_i ); ``` - Note that the initialization is performed as if using the equal-sign syntax instead of the parentheses syntax. A copy of `i` is made prior to passing the value to the function. (For more information, see [Initializers](../cpp/initializers.md) and [Conversions](../cpp/user-defined-type-conversions-cpp.md)). + Note that the initialization is performed as if using the equal-sign syntax instead of the parentheses syntax. A copy of `i` is made prior to passing the value to the function. For more information, see [Initializers](../cpp/initializers.md) and [Conversions](../cpp/user-defined-type-conversions-cpp.md). Therefore, if the function prototype (declaration) calls for an argument of type **`long`**, and if the calling program supplies an actual argument of type **`int`**, the actual argument is promoted using a standard type conversion to type **`long`** (see [Standard Conversions](../cpp/standard-conversions.md)). diff --git a/docs/cpp/postfix-increment-and-decrement-operators-increment-and-decrement.md b/docs/cpp/postfix-increment-and-decrement-operators-increment-and-decrement.md index 4d06719b107..9113738138e 100644 --- a/docs/cpp/postfix-increment-and-decrement-operators-increment-and-decrement.md +++ b/docs/cpp/postfix-increment-and-decrement-operators-increment-and-decrement.md @@ -16,7 +16,7 @@ postfix-expression -- ## Remarks -C++ provides prefix and postfix increment and decrement operators; this section describes only the postfix increment and decrement operators. (For more information, see [Prefix Increment and Decrement Operators](../cpp/prefix-increment-and-decrement-operators-increment-and-decrement.md).) The difference between the two is that in the postfix notation, the operator appears after *postfix-expression*, whereas in the prefix notation, the operator appears before *expression.* The following example shows a postfix-increment operator: +C++ provides prefix and postfix increment and decrement operators; this section describes only the postfix increment and decrement operators. For more information, see [Prefix Increment and Decrement Operators](../cpp/prefix-increment-and-decrement-operators-increment-and-decrement.md). The difference between the two is that in the postfix notation, the operator appears after *postfix-expression*, whereas in the prefix notation, the operator appears before *expression.* The following example shows a postfix-increment operator: ```cpp i++; diff --git a/docs/cpp/prefix-increment-and-decrement-operators-increment-and-decrement.md b/docs/cpp/prefix-increment-and-decrement-operators-increment-and-decrement.md index 238ae3dfb0e..f83cef3e6ba 100644 --- a/docs/cpp/prefix-increment-and-decrement-operators-increment-and-decrement.md +++ b/docs/cpp/prefix-increment-and-decrement-operators-increment-and-decrement.md @@ -23,7 +23,7 @@ The prefix decrement operator (**`--`**) is analogous to the prefix increment op **Visual Studio 2017 version 15.3 and later** (available in [`/std:c++17`](../build/reference/std-specify-language-standard-version.md) mode and later): The operand of an increment or decrement operator may not be of type **`bool`**. -Both the prefix and postfix increment and decrement operators affect their operands. The key difference between them is the order in which the increment or decrement takes place in the evaluation of an expression. (For more information, see [Postfix Increment and Decrement Operators](../cpp/postfix-increment-and-decrement-operators-increment-and-decrement.md).) In the prefix form, the increment or decrement takes place before the value is used in expression evaluation, so the value of the expression is different from the value of the operand. In the postfix form, the increment or decrement takes place after the value is used in expression evaluation, so the value of the expression is the same as the value of the operand. For example, the following program prints "`++i = 6`": +Both the prefix and postfix increment and decrement operators affect their operands. The key difference between them is the order in which the increment or decrement takes place in the evaluation of an expression. For more information, see [Postfix Increment and Decrement Operators](../cpp/postfix-increment-and-decrement-operators-increment-and-decrement.md). In the prefix form, the increment or decrement takes place before the value is used in expression evaluation, so the value of the expression is different from the value of the operand. In the postfix form, the increment or decrement takes place after the value is used in expression evaluation, so the value of the expression is the same as the value of the operand. For example, the following program prints "`++i = 6`": ```cpp // expre_Increment_and_Decrement_Operators.cpp diff --git a/docs/cpp/standard-conversions.md b/docs/cpp/standard-conversions.md index 083ac66a0f1..51f3f370461 100644 --- a/docs/cpp/standard-conversions.md +++ b/docs/cpp/standard-conversions.md @@ -203,7 +203,7 @@ The second case in which a pointer to a class can be converted to a pointer to a The result of such a conversion is a pointer to the *subobject*, the portion of the object that is completely described by the base class. -The following code defines two classes, `A` and `B`, where `B` is derived from `A`. (For more information on inheritance, see [Derived Classes](../cpp/inheritance-cpp.md).) It then defines `bObject`, an object of type `B`, and two pointers (`pA` and `pB`) that point to the object. +The following code defines two classes, `A` and `B`, where `B` is derived from `A`. For more information on inheritance, see [Derived Classes](../cpp/inheritance-cpp.md). It then defines `bObject`, an object of type `B`, and two pointers (`pA` and `pB`) that point to the object. ```cpp // C2039 expected @@ -278,7 +278,7 @@ A reference to a class can be converted to a reference to a base class in these - The specified base class is accessible. -- The conversion is unambiguous. (For more information about ambiguous base-class references, see [Multiple base classes](../cpp/multiple-base-classes.md).) +- The conversion is unambiguous. For more information about ambiguous base-class references, see [Multiple base classes](../cpp/multiple-base-classes.md). The result of the conversion is a pointer to the subobject that represents the base class. diff --git a/docs/cpp/virtual-functions.md b/docs/cpp/virtual-functions.md index 665db8ecdf3..0dda0b13f22 100644 --- a/docs/cpp/virtual-functions.md +++ b/docs/cpp/virtual-functions.md @@ -137,7 +137,7 @@ Because virtual functions are called only for objects of class types, you cannot The **`virtual`** keyword can be used when declaring overriding functions in a derived class, but it is unnecessary; overrides of virtual functions are always virtual. -Virtual functions in a base class must be defined unless they are declared using the *pure-specifier*. (For more information about pure virtual functions, see [Abstract Classes](../cpp/abstract-classes-cpp.md).) +Virtual functions in a base class must be defined unless they are declared using the *pure-specifier*. For more information about pure virtual functions, see [Abstract Classes](../cpp/abstract-classes-cpp.md). The virtual function-call mechanism can be suppressed by explicitly qualifying the function name using the scope-resolution operator (`::`). Consider the earlier example involving the `Account` class. To call `PrintBalance` in the base class, use code such as the following: diff --git a/docs/cppcx/wrl/weakref-class.md b/docs/cppcx/wrl/weakref-class.md index 227bdd1cf25..f927b0de418 100644 --- a/docs/cppcx/wrl/weakref-class.md +++ b/docs/cppcx/wrl/weakref-class.md @@ -193,7 +193,7 @@ When this operation completes, an object that represents parameter *`riid`*. - `S_OK` if this operation succeeds, but the current `WeakRef` object has already been released. Parameter *`ptr`* is set to **`nullptr`**. -- `S_OK` if this operation succeeds, but the current `WeakRef` object isn't derived from parameter *`riid`*. Parameter *`ptr`* is set to **`nullptr`**. (For more information, see Remarks.) +- `S_OK` if this operation succeeds, but the current `WeakRef` object isn't derived from parameter *`riid`*. Parameter *`ptr`* is set to **`nullptr`**. For more information, see Remarks. ### Remarks diff --git a/docs/dotnet/how-to-migrate-to-clr.md b/docs/dotnet/how-to-migrate-to-clr.md index f7b4922791c..01756ffc80a 100644 --- a/docs/dotnet/how-to-migrate-to-clr.md +++ b/docs/dotnet/how-to-migrate-to-clr.md @@ -9,7 +9,7 @@ ms.topic: upgrade-and-migration-article --- # How to: Migrate to `/clr` -This article discusses issues that arise when compiling native code with **`/clr`**. (For more information, see [/clr (Common Language Runtime Compilation)](../build/reference/clr-common-language-runtime-compilation.md).) **`/clr`** allows native C++ code to invoke and be invoked from .NET assemblies in addition to other native C++ code. For more information on the advantages of compiling with **`/clr`**, see [Mixed (Native and Managed) Assemblies](../dotnet/mixed-native-and-managed-assemblies.md) and [Native and .NET Interoperability](../dotnet/native-and-dotnet-interoperability.md). +This article discusses issues that arise when compiling native code with **`/clr`**. For more information, see [/clr (Common Language Runtime Compilation)](../build/reference/clr-common-language-runtime-compilation.md). **`/clr`** allows native C++ code to invoke and be invoked from .NET assemblies in addition to other native C++ code. For more information on the advantages of compiling with **`/clr`**, see [Mixed (Native and Managed) Assemblies](../dotnet/mixed-native-and-managed-assemblies.md) and [Native and .NET Interoperability](../dotnet/native-and-dotnet-interoperability.md). ## Known issues compiling library projects with `/clr` @@ -120,7 +120,7 @@ Native types are **`private`** by default. A **`private`** native type isn't vis ### Floating point and alignment issues -`__controlfp` isn't supported in the common language runtime. (For more information, see [`_control87`, `_controlfp`, `__control87_2`](../c-runtime-library/reference/control87-controlfp-control87-2.md).) The CLR also doesn't respect [`align`](../cpp/align-cpp.md). +`__controlfp` isn't supported in the common language runtime. For more information, see [`_control87`, `_controlfp`, `__control87_2`](../c-runtime-library/reference/control87-controlfp-control87-2.md). The CLR also doesn't respect [`align`](../cpp/align-cpp.md). ### COM initialization diff --git a/docs/mfc/exception-handling-in-mfc.md b/docs/mfc/exception-handling-in-mfc.md index 3d16c77f89e..105a773e48c 100644 --- a/docs/mfc/exception-handling-in-mfc.md +++ b/docs/mfc/exception-handling-in-mfc.md @@ -40,7 +40,7 @@ Three categories of outcomes can occur when a function is called during program - Erroneous execution - The caller makes some mistake in passing arguments to the function or calls the function in an inappropriate context. This situation causes an error, and it should be detected by an assertion during program development. (For more information on assertions, see [C/C++ Assertions](/visualstudio/debugger/c-cpp-assertions).) + The caller makes some mistake in passing arguments to the function or calls the function in an inappropriate context. This situation causes an error, and it should be detected by an assertion during program development. For more information on assertions, see [C/C++ Assertions](/visualstudio/debugger/c-cpp-assertions). - Abnormal execution diff --git a/docs/mfc/reference/cbasepane-class.md b/docs/mfc/reference/cbasepane-class.md index b535d8ccdda..de3b9ea5943 100644 --- a/docs/mfc/reference/cbasepane-class.md +++ b/docs/mfc/reference/cbasepane-class.md @@ -565,8 +565,8 @@ The library adds several new styles for panes. The following table describes the |AFX_CBRS_RESIZE|The pane can be resized. **Important:** This style is not implemented.| |AFX_CBRS_CLOSE|The pane can be closed.| |AFX_CBRS_AUTO_ROLLUP|The pane can be rolled up when it floats.| -|AFX_CBRS_REGULAR_TABS|When one pane docks to another pane that has this style, a regular tabbed window is created. (For more information, see [CTabbedPane Class](../../mfc/reference/ctabbedpane-class.md).)| -|AFX_CBRS_OUTLOOK_TABS|When one pane docks to another pane that has this style, an Outlook-style tabbed window is created. (For more information, see [CMFCOutlookBar Class](../../mfc/reference/cmfcoutlookbar-class.md).)| +|AFX_CBRS_REGULAR_TABS|When one pane docks to another pane that has this style, a regular tabbed window is created. For more information, see [CTabbedPane Class](../../mfc/reference/ctabbedpane-class.md).| +|AFX_CBRS_OUTLOOK_TABS|When one pane docks to another pane that has this style, an Outlook-style tabbed window is created. For more information, see [CMFCOutlookBar Class](../../mfc/reference/cmfcoutlookbar-class.md).| To use the new styles, specify them in *dwControlBarStyle*. diff --git a/docs/mfc/reference/cfont-class.md b/docs/mfc/reference/cfont-class.md index 2b224015505..6a91e72bb95 100644 --- a/docs/mfc/reference/cfont-class.md +++ b/docs/mfc/reference/cfont-class.md @@ -141,7 +141,7 @@ Specifies the desired clipping precision. The clipping precision defines how to To use an embedded read-only font, an application must specify `CLIP_ENCAPSULATE`. -To achieve consistent rotation of device, TrueType, and vector fonts, an application can use the bitwise OR operator (`|`) to combine the `CLIP_LH_ANGLES` value with any of the other *`nClipPrecision`* values. If the `CLIP_LH_ANGLES` bit is set, the rotation for all fonts depends on whether the orientation of the coordinate system is left-handed or right-handed. (For more information about the orientation of coordinate systems, see the description of the *`nOrientation`* parameter.) If `CLIP_LH_ANGLES` is not set, device fonts always rotate counterclockwise, but the rotation of other fonts is dependent on the orientation of the coordinate system. +To achieve consistent rotation of device, TrueType, and vector fonts, an application can use the bitwise OR operator (`|`) to combine the `CLIP_LH_ANGLES` value with any of the other *`nClipPrecision`* values. If the `CLIP_LH_ANGLES` bit is set, the rotation for all fonts depends on whether the orientation of the coordinate system is left-handed or right-handed. For more information about the orientation of coordinate systems, see the description of the *`nOrientation`* parameter. If `CLIP_LH_ANGLES` is not set, device fonts always rotate counterclockwise, but the rotation of other fonts is dependent on the orientation of the coordinate system. *`nQuality`*
Specifies the font's output quality, which defines how carefully the GDI must attempt to match the logical-font attributes to those of an actual physical font. See the `lfQuality` member in the `LOGFONT` structure in the Windows SDK for a list of values. From c98d86ab0eb5545db0a5df91a367de517cf5ffb9 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 29 Jul 2025 01:34:49 +0800 Subject: [PATCH 1193/2255] Update metadata in 21 topics --- docs/c-language/c-comments.md | 5 ++--- docs/c-language/initializing-scalar-types.md | 5 ++--- docs/c-language/l-value-and-r-value-expressions.md | 5 ++--- docs/c-language/parameters.md | 5 ++--- docs/c-language/scope-and-visibility.md | 5 ++--- docs/c-language/typedef-declarations.md | 5 ++--- docs/c-runtime-library/code-pages.md | 3 +-- docs/c-runtime-library/reference/open-wopen.md | 3 +-- docs/c-runtime-library/reference/sopen-wsopen.md | 3 +-- .../reference/strftime-wcsftime-strftime-l-wcsftime-l.md | 5 ++--- docs/cpp/anonymous-class-types.md | 5 ++--- docs/cpp/fundamental-types-cpp.md | 3 +-- docs/cpp/multiple-base-classes.md | 4 ++-- docs/cpp/pointers-to-members.md | 5 ++--- docs/cpp/postfix-expressions.md | 5 ++--- ...ment-and-decrement-operators-increment-and-decrement.md | 5 ++--- docs/cpp/standard-conversions.md | 4 ++-- docs/cpp/virtual-functions.md | 7 +++---- docs/cppcx/wrl/weakref-class.md | 2 +- docs/dotnet/how-to-migrate-to-clr.md | 7 +++---- docs/mfc/exception-handling-in-mfc.md | 5 ++--- 21 files changed, 39 insertions(+), 57 deletions(-) diff --git a/docs/c-language/c-comments.md b/docs/c-language/c-comments.md index f4cb0ff24b5..bae13131370 100644 --- a/docs/c-language/c-comments.md +++ b/docs/c-language/c-comments.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: C Comments" title: "C Comments" -ms.date: "06/25/2018" +description: "Learn more about: C Comments" +ms.date: 06/25/2018 helpviewer_keywords: ["code comments, C code", "comments, documenting code", "comments, C code", "/* */ comment delimiters", "comments"] -ms.assetid: 0f5f2825-e673-49e7-8669-94e2f5294989 --- # C Comments diff --git a/docs/c-language/initializing-scalar-types.md b/docs/c-language/initializing-scalar-types.md index 8f195455169..bcd7ca93c1f 100644 --- a/docs/c-language/initializing-scalar-types.md +++ b/docs/c-language/initializing-scalar-types.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Initializing Scalar Types" title: "Initializing Scalar Types" -ms.date: "11/04/2016" +description: "Learn more about: Initializing Scalar Types" +ms.date: 11/04/2016 helpviewer_keywords: ["initializing scalar types", "register variables", "initialization, scalar types", "initializing variables, scalar types", "scalar types", "static variables, initializing", "automatic storage class, initializing scalar types", "automatic storage class", "types [C], initializing"] -ms.assetid: 73c516f5-c3ad-4d56-ab3b-f2a82b621104 --- # Initializing Scalar Types diff --git a/docs/c-language/l-value-and-r-value-expressions.md b/docs/c-language/l-value-and-r-value-expressions.md index 423efc65b38..5a646ce54db 100644 --- a/docs/c-language/l-value-and-r-value-expressions.md +++ b/docs/c-language/l-value-and-r-value-expressions.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: L-Value and R-Value Expressions" title: "L-Value and R-Value Expressions" -ms.date: "11/04/2016" +description: "Learn more about: L-Value and R-Value Expressions" +ms.date: 11/04/2016 helpviewer_keywords: ["L-values", "member-selection expressions", "R-value expressions", "subscript expressions"] -ms.assetid: b790303e-ec6f-4d0d-bc55-df42da267172 --- # L-Value and R-Value Expressions diff --git a/docs/c-language/parameters.md b/docs/c-language/parameters.md index 1cf21be2848..f2eb26888e8 100644 --- a/docs/c-language/parameters.md +++ b/docs/c-language/parameters.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Parameters" title: "Parameters" -ms.date: "11/04/2016" +description: "Learn more about: Parameters" +ms.date: 11/04/2016 helpviewer_keywords: ["arguments [C++], function", "function parameters", "parameters [C++]", "function arguments, vs. parameters", "parameters [C++], function", "functions [C], parameters", "function parameters, syntax", "ellipsis (...), parameters", "... ellipsis"] -ms.assetid: 8f2b8026-78b5-4e21-86a3-bf0f91f05689 --- # Parameters diff --git a/docs/c-language/scope-and-visibility.md b/docs/c-language/scope-and-visibility.md index 74b22dfcf92..8f61550b6cb 100644 --- a/docs/c-language/scope-and-visibility.md +++ b/docs/c-language/scope-and-visibility.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Scope and Visibility" title: "Scope and Visibility" -ms.date: "11/04/2016" +description: "Learn more about: Scope and Visibility" +ms.date: 11/04/2016 helpviewer_keywords: ["scope, levels", "visibility", "file scope [C++]"] -ms.assetid: a019eb7c-66ed-46a7-bc9f-89a963930a56 --- # Scope and Visibility diff --git a/docs/c-language/typedef-declarations.md b/docs/c-language/typedef-declarations.md index 50750abc3c5..b503212b6c4 100644 --- a/docs/c-language/typedef-declarations.md +++ b/docs/c-language/typedef-declarations.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Typedef Declarations" title: "Typedef Declarations" -ms.date: "11/04/2016" +description: "Learn more about: Typedef Declarations" +ms.date: 11/04/2016 helpviewer_keywords: ["declarations, typedef", "typedef declarations", "types [C], declarations"] -ms.assetid: e92a3b82-9269-4bc6-834a-6f431ccac83e --- # Typedef Declarations diff --git a/docs/c-runtime-library/code-pages.md b/docs/c-runtime-library/code-pages.md index d38deedd409..25a6e84f5df 100644 --- a/docs/c-runtime-library/code-pages.md +++ b/docs/c-runtime-library/code-pages.md @@ -1,10 +1,9 @@ --- title: "Code Pages" description: "A description of code page support in the Microsoft C runtime." +ms.date: 11/04/2016 ms.topic: "concept-article" -ms.date: "11/04/2016" helpviewer_keywords: ["character sets [C++], code pages", "ANSI [C++], code pages", "system-default code page", "multibyte code pages [C++]", "localization [C++], code pages", "code pages [C++], types of", "locale code pages [C++]"] -ms.assetid: 4a26fc42-185a-4add-98bf-a7b314ae6186 --- # Code pages diff --git a/docs/c-runtime-library/reference/open-wopen.md b/docs/c-runtime-library/reference/open-wopen.md index eec84497e30..13237079cad 100644 --- a/docs/c-runtime-library/reference/open-wopen.md +++ b/docs/c-runtime-library/reference/open-wopen.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: _open, _wopen" title: "_open, _wopen" +description: "Learn more about: _open, _wopen" ms.date: 05/18/2022 api_name: ["_open", "_wopen"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"] @@ -8,7 +8,6 @@ api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["CORECRT_IO/_open", "CORECRT_WIO/_wopen", "TCHAR/_topen", "_open", "_wopen", "_topen"] helpviewer_keywords: ["opening files, for file I/O", "topen function", "_open function", "_topen function", "_wopen function", "files [C++], opening", "wopen function", "open function"] -ms.assetid: 13f6a0c3-d1aa-450d-a7aa-74abc91b163e --- # `_open`, `_wopen` diff --git a/docs/c-runtime-library/reference/sopen-wsopen.md b/docs/c-runtime-library/reference/sopen-wsopen.md index 2ea72da9b58..8d57455bb24 100644 --- a/docs/c-runtime-library/reference/sopen-wsopen.md +++ b/docs/c-runtime-library/reference/sopen-wsopen.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: _sopen, _wsopen" title: "_sopen, _wsopen" +description: "Learn more about: _sopen, _wsopen" ms.date: 05/18/2022 api_name: ["_sopen", "_wsopen", "_o__sopen"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"] @@ -8,7 +8,6 @@ api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["CORECRT_IO/_sopen", "CORECRT_WIO/_wsopen", "TCHAR/_tsopen", "_sopen", "_wsopen", "_tsopen", "sopen", "wsopen"] helpviewer_keywords: ["sopen function", "sharing files", "opening files, for sharing", "_sopen function", "wsopen function", "files [C++], opening", "files [C++], sharing", "_wsopen function"] -ms.assetid: a9d4cccf-06e9-414d-96fa-453fca88cc1f --- # `_sopen`, `_wsopen` diff --git a/docs/c-runtime-library/reference/strftime-wcsftime-strftime-l-wcsftime-l.md b/docs/c-runtime-library/reference/strftime-wcsftime-strftime-l-wcsftime-l.md index 541b23cf3e4..92cf4ff91eb 100644 --- a/docs/c-runtime-library/reference/strftime-wcsftime-strftime-l-wcsftime-l.md +++ b/docs/c-runtime-library/reference/strftime-wcsftime-strftime-l-wcsftime-l.md @@ -1,14 +1,13 @@ --- -description: "Learn more about: strftime, wcsftime, _strftime_l, _wcsftime_l" title: "strftime, wcsftime, _strftime_l, _wcsftime_l" -ms.date: "4/2/2020" +description: "Learn more about: strftime, wcsftime, _strftime_l, _wcsftime_l" +ms.date: 4/2/2020 api_name: ["strftime", "_wcsftime_l", "_strftime_l", "wcsftime", "_o__strftime_l", "_o__wcsftime_l", "_o_strftime", "_o_wcsftime"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"] api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["_tcsftime", "strftime", "wcsftime", "_strftime_l", "_wcsftime_l"] helpviewer_keywords: ["_strftime_l function", "strftime function", "tcsftime function", "_wcsftime_l function", "wcsftime function", "_tcsftime function", "time strings"] -ms.assetid: 6330ff20-4729-4c4a-82af-932915d893ea --- # `strftime`, `wcsftime`, `_strftime_l`, `_wcsftime_l` diff --git a/docs/cpp/anonymous-class-types.md b/docs/cpp/anonymous-class-types.md index 53d162606f3..2e26ebc728b 100644 --- a/docs/cpp/anonymous-class-types.md +++ b/docs/cpp/anonymous-class-types.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Anonymous Class Types" title: "Anonymous Class Types" -ms.date: "11/04/2016" +description: "Learn more about: Anonymous Class Types" +ms.date: 11/04/2016 helpviewer_keywords: ["class types [C++], anonymous", "anonymous class types"] -ms.assetid: 9ba667b2-8c2a-4c29-82a6-fa120b9233c8 --- # Anonymous Class Types diff --git a/docs/cpp/fundamental-types-cpp.md b/docs/cpp/fundamental-types-cpp.md index 1122ea1144f..69c1c4ca01d 100644 --- a/docs/cpp/fundamental-types-cpp.md +++ b/docs/cpp/fundamental-types-cpp.md @@ -1,10 +1,9 @@ --- +title: "Built-in types (C++)" description: "Learn more about: Built-in types (C++)" -title: "Built-in types (C++)" ms.date: 07/22/2020 f1_keywords: ["__int128_cpp", "__wchar_t_cpp", "char_cpp", "char8_t_cpp", "char16_t_cpp", "char32_t_cpp", "double_cpp", "float_cpp", "int_cpp", "long_cpp", "long_double_cpp", "short_cpp", "signed_cpp", "unsigned_cpp", "unsigned_int_cpp", "wchar_t_cpp"] helpviewer_keywords: ["specifiers [C++], type", "float keyword [C++]", "char keyword [C++]", "__wchar_t keyword [C++]", "signed types [C++], summary of data types", "Integer data type [C++], C++ data types", "arithmetic operations [C++], types", "int data type", "unsigned types [C++], summary of data types", "short data type [C++]", "double data type [C++], summary of types", "long long keyword [C++]", "long double keyword [C++]", "unsigned types [C++]", "signed types [C++]", "void keyword [C++]", "storage [C++], basic type", "integral types, C++", "wchar_t keyword [C++]", "floating-point numbers [C++], C++ data types", "long keyword [C++]", "type specifiers [C++]", "integral types", "long keyword [C++]", "storing types [C++]", "data types [C++], void"] -ms.assetid: 58b0106a-0406-4b74-a430-7cbd315c0f89 --- # Built-in types (C++) diff --git a/docs/cpp/multiple-base-classes.md b/docs/cpp/multiple-base-classes.md index b71004540e0..2ed89233621 100644 --- a/docs/cpp/multiple-base-classes.md +++ b/docs/cpp/multiple-base-classes.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Multiple Base Classes" title: "Multiple Base Classes" -ms.date: "11/19/2018" +description: "Learn more about: Multiple Base Classes" +ms.date: 11/19/2018 helpviewer_keywords: ["base classes [C++], multiple", "derived classes [C++], multiple bases", "multiple inheritance, class declaration", "multiple base classes [C++]"] --- # Multiple Base Classes diff --git a/docs/cpp/pointers-to-members.md b/docs/cpp/pointers-to-members.md index f92ee99c25e..9512ed71b35 100644 --- a/docs/cpp/pointers-to-members.md +++ b/docs/cpp/pointers-to-members.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Pointers to Members" title: "Pointers to Members" -ms.date: "11/04/2016" +description: "Learn more about: Pointers to Members" +ms.date: 11/04/2016 helpviewer_keywords: ["declarations, pointers", "class members [C++], pointers to", "pointers, to members", "members [C++], pointers to", "pointers, declarations"] -ms.assetid: f42ddb79-9721-4e39-95b1-c56b55591f68 --- # Pointers to Members diff --git a/docs/cpp/postfix-expressions.md b/docs/cpp/postfix-expressions.md index 635fddc23d1..dbb3ab65ddb 100644 --- a/docs/cpp/postfix-expressions.md +++ b/docs/cpp/postfix-expressions.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Postfix Expressions" title: "Postfix Expressions" -ms.date: "11/04/2016" +description: "Learn more about: Postfix Expressions" +ms.date: 11/04/2016 helpviewer_keywords: ["operators [C++], postfix", "postfix expressions", "expressions [C++], postfix"] -ms.assetid: 7ac62a57-06df-422f-b012-a75b37d7cb9b --- # Postfix Expressions diff --git a/docs/cpp/prefix-increment-and-decrement-operators-increment-and-decrement.md b/docs/cpp/prefix-increment-and-decrement-operators-increment-and-decrement.md index f83cef3e6ba..0ca9c55341a 100644 --- a/docs/cpp/prefix-increment-and-decrement-operators-increment-and-decrement.md +++ b/docs/cpp/prefix-increment-and-decrement-operators-increment-and-decrement.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Prefix Increment and Decrement Operators: ++ and --" title: "Prefix Increment and Decrement Operators: ++ and --" -ms.date: "11/04/2016" +description: "Learn more about: Prefix Increment and Decrement Operators: ++ and --" +ms.date: 11/04/2016 f1_keywords: ["--", "++"] helpviewer_keywords: ["increment operators [C++], syntax", "++ operator [C++], prefix increment operators", "operators [C++], decrement", "-- operator [C++], prefix decrement operators [C++]", "operators [C++], increment", "decrement operators [C++], syntax", "decrement operators [C++]"] -ms.assetid: 45ea7fc7-f279-4be9-a216-1d9a0ef9eb7b --- # Prefix Increment and Decrement Operators: `++` and `--` diff --git a/docs/cpp/standard-conversions.md b/docs/cpp/standard-conversions.md index 51f3f370461..aabdc570be3 100644 --- a/docs/cpp/standard-conversions.md +++ b/docs/cpp/standard-conversions.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Standard conversions" title: "Standard conversions" -ms.date: "10/02/2019" +description: "Learn more about: Standard conversions" +ms.date: 10/02/2019 helpviewer_keywords: ["standard conversions, categories of", "L-values [C++]", "conversions, standard"] --- # Standard conversions diff --git a/docs/cpp/virtual-functions.md b/docs/cpp/virtual-functions.md index 0dda0b13f22..308dcd25756 100644 --- a/docs/cpp/virtual-functions.md +++ b/docs/cpp/virtual-functions.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Virtual Functions" title: "Virtual Functions" -ms.date: "09/10/2019" -helpviewer_keywords: ["functions [C++], virtual functions", "derived classes [C++], virtual functions", "virtual functions"] -ms.assetid: b3e1ed88-2a90-4af8-960a-16f47deb3452 +description: "Learn more about: Virtual Functions" +ms.date: 09/10/2019 adobe-target: true +helpviewer_keywords: ["functions [C++], virtual functions", "derived classes [C++], virtual functions", "virtual functions"] --- # Virtual Functions diff --git a/docs/cppcx/wrl/weakref-class.md b/docs/cppcx/wrl/weakref-class.md index f927b0de418..66191b5c263 100644 --- a/docs/cppcx/wrl/weakref-class.md +++ b/docs/cppcx/wrl/weakref-class.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: WeakRef Class" title: "WeakRef Class" +description: "Learn more about: WeakRef Class" ms.date: 11/22/2021 ms.topic: "reference" f1_keywords: ["client/Microsoft::WRL::WeakRef", "client/Microsoft::WRL::WeakRef::~WeakRef", "client/Microsoft::WRL::WeakRef::As", "client/Microsoft::WRL::WeakRef::AsIID", "client/Microsoft::WRL::WeakRef::CopyTo", "client/Microsoft::WRL::WeakRef::operator&", "client/Microsoft::WRL::WeakRef::WeakRef"] diff --git a/docs/dotnet/how-to-migrate-to-clr.md b/docs/dotnet/how-to-migrate-to-clr.md index 01756ffc80a..e05adbbaf9b 100644 --- a/docs/dotnet/how-to-migrate-to-clr.md +++ b/docs/dotnet/how-to-migrate-to-clr.md @@ -1,11 +1,10 @@ --- -description: "Learn more about: How to: Migrate to /clr" title: "How to: Migrate to /clr" +description: "Learn more about: How to: Migrate to /clr" +ms.date: 09/18/2018 ms.custom: "get-started-article" -ms.date: "09/18/2018" -helpviewer_keywords: ["upgrading Visual C++ applications, /clr compiler option", "compiling native code [C++]", "interoperability [C++], /clr compiler option", "interop [C++], /clr compiler option", "migration [C++], /clr compiler option", "/clr compiler option [C++], porting to"] -ms.assetid: c9290b8b-436a-4510-8b56-eae51f4a9afc ms.topic: upgrade-and-migration-article +helpviewer_keywords: ["upgrading Visual C++ applications, /clr compiler option", "compiling native code [C++]", "interoperability [C++], /clr compiler option", "interop [C++], /clr compiler option", "migration [C++], /clr compiler option", "/clr compiler option [C++], porting to"] --- # How to: Migrate to `/clr` diff --git a/docs/mfc/exception-handling-in-mfc.md b/docs/mfc/exception-handling-in-mfc.md index 105a773e48c..29b8e759bf4 100644 --- a/docs/mfc/exception-handling-in-mfc.md +++ b/docs/mfc/exception-handling-in-mfc.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Exception Handling in MFC" title: "Exception Handling in MFC" -ms.date: "11/19/2019" +description: "Learn more about: Exception Handling in MFC" +ms.date: 11/19/2019 helpviewer_keywords: ["DAO [MFC], exceptions", "assertions [MFC], When to use exceptions", "exception handling [MFC], MFC", "resource allocation exception", "resources [MFC], allocating", "keywords [MFC], exception handling", "errors [MFC], detected by assertions", "ODBC exceptions [MFC]", "serialization [MFC], exceptions", "Automation [MFC], exceptions", "exception macros [MFC]", "predefined exceptions [MFC]", "C++ exception handling [MFC], enabling", "C++ exception handling [MFC], MFC applications", "requests for unsupported services [MFC]", "database exceptions [MFC]", "archive exceptions [MFC]", "MFC, exceptions", "C++ exception handling [MFC], types of", "macros [MFC], exception handling", "abnormal program execution [MFC]", "OLE exceptions [MFC], MFC exception handling", "error handling [MFC], exceptions and", "class libraries [MFC], exception support", "exceptions [MFC], MFC macros vs. C++ keywords", "memory [MFC], out-of-memory exceptions", "Windows [MFC], resource allocation exceptions", "macros [MFC], MFC exception macros", "function calls [MFC], results", "out-of-memory exceptions [MFC]"] -ms.assetid: 0926627d-2ba7-44a6-babe-d851a4a2517c --- # Exception Handling in MFC From 82697ef9efaa2304d46504b7ff2cc94ff21f02d4 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 29 Jul 2025 22:29:11 +0800 Subject: [PATCH 1194/2255] Update `/events` links to `/shows` --- docs/build-insights/tutorials/build-insights-function-view.md | 2 +- .../tutorials/build-insights-included-files-view.md | 2 +- docs/build-insights/tutorials/build-insights-tips.md | 2 +- docs/build/cmake-presets-vs.md | 2 +- docs/standard-library/random.md | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/build-insights/tutorials/build-insights-function-view.md b/docs/build-insights/tutorials/build-insights-function-view.md index bd0ccd9e319..f22dcaef188 100644 --- a/docs/build-insights/tutorials/build-insights-function-view.md +++ b/docs/build-insights/tutorials/build-insights-function-view.md @@ -145,7 +145,7 @@ Double-click, right-click, or press **Enter** while on a file in the **Functions [Build Insights tips and tricks](build-insights-tips.md)\ [Inline functions (C++)](../../cpp/inline-functions-cpp.md)\ [Faster C++ builds, simplified: a new metric for time](https://devblogs.microsoft.com/cppblog/faster-cpp-builds-simplified-a-new-metric-for-time)\ -[Build Insights in Visual Studio video - Pure Virtual C++ 2023](/events/pure-virtual-cpp-2023/build-insights-in-visual-studio)\ +[Build Insights in Visual Studio video - Pure Virtual C++ 2023](/shows/pure-virtual-cpp-2023/build-insights-in-visual-studio)\ [Troubleshoot header file impact on build time](build-insights-included-files-view.md)\ [Functions View for Build Insights in Visual Studio 2022 17.8](https://devblogs.microsoft.com/cppblog/functions-view-for-build-insights-in-visual-studio-2022-17-8/)\ [Tutorial: vcperf and Windows Performance Analyzer](vcperf-and-wpa.md)\ diff --git a/docs/build-insights/tutorials/build-insights-included-files-view.md b/docs/build-insights/tutorials/build-insights-included-files-view.md index 0b686653516..3d4422e5572 100644 --- a/docs/build-insights/tutorials/build-insights-included-files-view.md +++ b/docs/build-insights/tutorials/build-insights-included-files-view.md @@ -183,7 +183,7 @@ Or, you can right-click a file in the **Include Tree** view to jump to it in the [Build Insights tips and tricks](build-insights-tips.md)\ [Compare header units, modules, and precompiled headers](../../build/compare-inclusion-methods.md)\ -[Build Insights in Visual Studio video - Pure Virtual C++ 2023](/events/pure-virtual-cpp-2023/build-insights-in-visual-studio)\ +[Build Insights in Visual Studio video - Pure Virtual C++ 2023](/shows/pure-virtual-cpp-2023/build-insights-in-visual-studio)\ [Faster C++ builds, simplified: a new metric for time](https://devblogs.microsoft.com/cppblog/faster-cpp-builds-simplified-a-new-metric-for-time)\ [Troubleshoot function inlining on build time](build-insights-function-view.md)\ [vcperf and Windows Performance Analyzer](vcperf-and-wpa.md) diff --git a/docs/build-insights/tutorials/build-insights-tips.md b/docs/build-insights/tutorials/build-insights-tips.md index d071aadddaf..b9c2b0e6f6c 100644 --- a/docs/build-insights/tutorials/build-insights-tips.md +++ b/docs/build-insights/tutorials/build-insights-tips.md @@ -73,7 +73,7 @@ To see a short description for the tabs in the Build Insights window, along with ## See also -[Build Insights in Visual Studio video - Pure Virtual C++ 2023](/events/pure-virtual-cpp-2023/build-insights-in-visual-studio)\ +[Build Insights in Visual Studio video - Pure Virtual C++ 2023](/shows/pure-virtual-cpp-2023/build-insights-in-visual-studio)\ [Improving code generation time with C++ Build Insights](https://devblogs.microsoft.com/cppblog/improving-code-generation-time-with-cpp-build-insights)\ [Troubleshoot header file impact on build time](build-insights-included-files-view.md)\ [Tutorial: Troubleshoot function inlining on build time](build-insights-function-view.md) diff --git a/docs/build/cmake-presets-vs.md b/docs/build/cmake-presets-vs.md index d2d2f03f8a6..c23559cb99f 100644 --- a/docs/build/cmake-presets-vs.md +++ b/docs/build/cmake-presets-vs.md @@ -478,7 +478,7 @@ cmake --build --preset ## Example *`CMakePresets.json`* file -The *`CMakePresets.json`* file in [box2d-lite](https://github.com/esweet431/box2d-lite/blob/vs-launch/CMakePresets.json) contains examples of Configure Presets, Build Presets, and Test Presets. For more information about this example, see the presentation [An Introduction to CMakePresets.json](/events/cpp-pure-virtual-cpp-2021/an-introduction-to-cmakepresetsjson). You can see another example in the [DirectXTK](https://github.com/microsoft/DirectXTK/blob/main/CMakePresets.json) project, which shows many build targets in its `configurePresets` section. +The *`CMakePresets.json`* file in [box2d-lite](https://github.com/esweet431/box2d-lite/blob/vs-launch/CMakePresets.json) contains examples of Configure Presets, Build Presets, and Test Presets. For more information about this example, see the presentation [An Introduction to CMakePresets.json](/shows/cpp-pure-virtual-cpp-2021/an-introduction-to-cmakepresetsjson). You can see another example in the [DirectXTK](https://github.com/microsoft/DirectXTK/blob/main/CMakePresets.json) project, which shows many build targets in its `configurePresets` section. ## Next steps diff --git a/docs/standard-library/random.md b/docs/standard-library/random.md index 6ba907baac2..958524b2451 100644 --- a/docs/standard-library/random.md +++ b/docs/standard-library/random.md @@ -44,7 +44,7 @@ Here are some tips to keep in mind when using ``: - The most useful pairing for most applications is the `mt19937` engine with `uniform_int_distribution`, as shown in the [code example](#code) later in this article. -There are many options to choose from in the `` header, and any of them is preferable to the outdated C Runtime function `rand()`. For information about what's wrong with `rand()` and how `` addresses these shortcomings, see [this video](/events/goingnative-2013/rand-considered-harmful). +There are many options to choose from in the `` header, and any of them is preferable to the outdated C Runtime function `rand()`. For information about what's wrong with `rand()` and how `` addresses these shortcomings, see [this video](/shows/goingnative-2013/rand-considered-harmful). ## Examples From 45ba86d052bf03455dbfa5f46e56ee989b703239 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 29 Jul 2025 23:12:58 +0800 Subject: [PATCH 1195/2255] Fix `CSnapInPropertyPageImpl` syntax --- docs/atl/reference/csnapinpropertypageimpl-class.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/atl/reference/csnapinpropertypageimpl-class.md b/docs/atl/reference/csnapinpropertypageimpl-class.md index 5bbd52fce69..43c5e3a7d18 100644 --- a/docs/atl/reference/csnapinpropertypageimpl-class.md +++ b/docs/atl/reference/csnapinpropertypageimpl-class.md @@ -15,8 +15,9 @@ This class provides methods for implementing a snap-in property page object. ## Syntax -``` -CSnapInPropertyPageImpl : public CDialogImplBase +```cpp +template +class ATL_NO_VTABLE CSnapInPropertyPageImpl : public CDialogImplBase ``` ## Members From 510612a7a9e9d8dd9bfe3453d5fd4e07e4dd08c7 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 29 Jul 2025 23:13:45 +0800 Subject: [PATCH 1196/2255] Update metadata in `CSnapInPropertyPageImpl` class reference --- docs/atl/reference/csnapinpropertypageimpl-class.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/atl/reference/csnapinpropertypageimpl-class.md b/docs/atl/reference/csnapinpropertypageimpl-class.md index 43c5e3a7d18..e7cd51b1c78 100644 --- a/docs/atl/reference/csnapinpropertypageimpl-class.md +++ b/docs/atl/reference/csnapinpropertypageimpl-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: CSnapInPropertyPageImpl Class" title: "CSnapInPropertyPageImpl Class" -ms.date: "11/04/2016" +description: "Learn more about: CSnapInPropertyPageImpl Class" +ms.date: 11/04/2016 f1_keywords: ["CSnapInPropertyPageImpl", "ATLSNAP/ATL::CSnapInPropertyPageImpl", "ATLSNAP/ATL::CSnapInPropertyPageImpl::CSnapInPropertyPageImpl", "ATLSNAP/ATL::CSnapInPropertyPageImpl::CancelToClose", "ATLSNAP/ATL::CSnapInPropertyPageImpl::Create", "ATLSNAP/ATL::CSnapInPropertyPageImpl::OnApply", "ATLSNAP/ATL::CSnapInPropertyPageImpl::OnHelp", "ATLSNAP/ATL::CSnapInPropertyPageImpl::OnKillActive", "ATLSNAP/ATL::CSnapInPropertyPageImpl::OnQueryCancel", "ATLSNAP/ATL::CSnapInPropertyPageImpl::OnReset", "ATLSNAP/ATL::CSnapInPropertyPageImpl::OnSetActive", "ATLSNAP/ATL::CSnapInPropertyPageImpl::OnWizardBack", "ATLSNAP/ATL::CSnapInPropertyPageImpl::OnWizardFinish", "ATLSNAP/ATL::CSnapInPropertyPageImpl::OnWizardNext", "ATLSNAP/ATL::CSnapInPropertyPageImpl::QuerySiblings", "ATLSNAP/ATL::CSnapInPropertyPageImpl::SetModified", "ATLSNAP/ATL::CSnapInPropertyPageImpl::m_psp"] helpviewer_keywords: ["snap-ins, property pages", "snap-ins", "property pages, ATL", "CSnapInPropertyPageImpl class"] -ms.assetid: 75bdce5a-985e-4166-bd44-493132e023c4 --- # CSnapInPropertyPageImpl Class From 5d6ebc7958cf312f7c6ca01f2e7a5661601ec5bf Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 29 Jul 2025 23:24:36 +0800 Subject: [PATCH 1197/2255] Add blockquotes for error messages in range [C2491, C2520] --- docs/error-messages/compiler-errors-1/compiler-error-c2491.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2492.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2493.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2495.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2496.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2498.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2499.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2500.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2502.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2503.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2504.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2505.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2506.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2507.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2509.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2510.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2511.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2513.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2514.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2516.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2517.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2518.md | 2 +- 22 files changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2491.md b/docs/error-messages/compiler-errors-1/compiler-error-c2491.md index d04430cdf58..4b31ea54438 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2491.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2491.md @@ -8,7 +8,7 @@ ms.assetid: 4e5a8f81-124e-402c-a5ec-d35a89b5469e --- # Compiler Error C2491 -'identifier' : definition of dllimport function not allowed +> 'identifier' : definition of dllimport function not allowed Data, static data members, and functions can be declared as `dllimport`s but not defined as `dllimport`s. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2492.md b/docs/error-messages/compiler-errors-1/compiler-error-c2492.md index 5b1d3f958a7..37cf8a5ce0d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2492.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2492.md @@ -8,7 +8,7 @@ ms.assetid: 8c44c9bb-c366-4fe5-a0ab-882e38608aaa --- # Compiler Error C2492 -'*variable*': data with thread storage duration may not have dll interface +> '*variable*': data with thread storage duration may not have dll interface The variable is declared with the [thread](../../cpp/thread.md) attribute and with the DLL interface. The address of the `thread` variable is not known until run time, so it cannot be linked to a DLL import or export. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2493.md b/docs/error-messages/compiler-errors-1/compiler-error-c2493.md index 880eb4770f3..04f804228b7 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2493.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2493.md @@ -8,7 +8,7 @@ ms.assetid: 68316cd5-682b-49c3-b6ea-23c4e5d296cf --- # Compiler Error C2493 -illegal form of __based +> illegal form of __based A **`__based`** expression must be based on a pointer. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2495.md b/docs/error-messages/compiler-errors-1/compiler-error-c2495.md index 4c574088ef9..6c7c3200707 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2495.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2495.md @@ -8,7 +8,7 @@ ms.assetid: bb7066fe-3549-4901-97e4-157f3c04dd57 --- # Compiler Error C2495 -'identifier' : 'nothrow' can only be applied to function declarations or definitions +> 'identifier' : 'nothrow' can only be applied to function declarations or definitions The [nothrow](../../cpp/nothrow-cpp.md) extended attribute can be applied to function declarations or definitions only. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2496.md b/docs/error-messages/compiler-errors-1/compiler-error-c2496.md index 8e35f8ac5c5..0b84c473248 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2496.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2496.md @@ -8,7 +8,7 @@ ms.assetid: 9a25237d-5bbb-4112-98f3-29cd99d3f89f --- # Compiler Error C2496 -'identifier' : 'selectany' can only be applied to data items with external linkage +> 'identifier' : 'selectany' can only be applied to data items with external linkage The [selectany](../../cpp/selectany.md) attribute can be applied only to externally visible and global data items. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2498.md b/docs/error-messages/compiler-errors-1/compiler-error-c2498.md index ca002045d60..bca5e4b077c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2498.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2498.md @@ -8,7 +8,7 @@ ms.assetid: 0839f12c-aaa4-4a02-bb33-7f072715dd14 --- # Compiler Error C2498 -'function' : 'novtable' can only be applied to class declarations or definitions +> 'function' : 'novtable' can only be applied to class declarations or definitions This error can be caused by using `__declspec(novtable)` with a function. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2499.md b/docs/error-messages/compiler-errors-1/compiler-error-c2499.md index ce2ea37923d..6dacd2933c2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2499.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2499.md @@ -8,7 +8,7 @@ ms.assetid: b323ff4d-b3c1-4bfd-b052-ae7292d53222 --- # Compiler Error C2499 -'class' : a class cannot be its own base class +> 'class' : a class cannot be its own base class You attempted to specify the class that you are defining as a base class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2500.md b/docs/error-messages/compiler-errors-2/compiler-error-c2500.md index 172a50f9026..626393a3ceb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2500.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2500.md @@ -8,7 +8,7 @@ ms.assetid: 6bff8161-dc9a-48ca-91f1-fd2eefdbbc93 --- # Compiler Error C2500 -'identifier1' : 'identifier2' is already a direct base class +> 'identifier1' : 'identifier2' is already a direct base class A class or structure appears more than once in a list of base classes. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2502.md b/docs/error-messages/compiler-errors-2/compiler-error-c2502.md index 5870524c77c..ff489d7722d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2502.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2502.md @@ -8,7 +8,7 @@ ms.assetid: affa0b86-15fc-4e17-b7f2-6aad4a3771c4 --- # Compiler Error C2502 -'identifier' : too many access modifiers on the base class +> 'identifier' : too many access modifiers on the base class The base class has more than one access modifier. Only one access modifier (**`public`**, **`private`**, or **`protected`**) is allowed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2503.md b/docs/error-messages/compiler-errors-2/compiler-error-c2503.md index e1e75d0a6d6..baf4eaa180e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2503.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2503.md @@ -8,7 +8,7 @@ ms.assetid: da86cc89-fd04-400b-aa8d-a5ffaf7e3918 --- # Compiler Error C2503 -'class' : base classes cannot contain zero-sized arrays +> 'class' : base classes cannot contain zero-sized arrays A base class or structure contains a zero-sized array. An array in a class must have at least one element. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2504.md b/docs/error-messages/compiler-errors-2/compiler-error-c2504.md index 454446e6514..040fc3c4eab 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2504.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2504.md @@ -8,7 +8,7 @@ ms.assetid: c9e002a6-a4ee-4ba7-970e-edf4adb83692 --- # Compiler Error C2504 -'class' : base class undefined +> 'class' : base class undefined The base class is declared but never defined. Possible causes: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2505.md b/docs/error-messages/compiler-errors-2/compiler-error-c2505.md index e243be38013..3d3ea8e7e04 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2505.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2505.md @@ -8,7 +8,7 @@ ms.assetid: b19f5c53-399d-425e-90db-fe3ca9b40858 --- # Compiler Error C2505 -'symbol' : '__declspec(modifer)' can only be applied to declarations or definitions of global objects or static data members +> 'symbol' : '__declspec(modifer)' can only be applied to declarations or definitions of global objects or static data members A **`__declspec`** modifier that is designed to only be used at global scope was used in a function. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2506.md b/docs/error-messages/compiler-errors-2/compiler-error-c2506.md index 58498d0b67b..06c61aa7342 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2506.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2506.md @@ -8,7 +8,7 @@ ms.assetid: cfed21cd-2404-46f2-985e-d0c2c3820830 --- # Compiler Error C2506 -'member' : '__declspec(modifier)' cannot be applied to this symbol +> 'member' : '__declspec(modifier)' cannot be applied to this symbol You cannot declare per-process or per-appdomain for static members of a managed class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2507.md b/docs/error-messages/compiler-errors-2/compiler-error-c2507.md index acc9e18da98..6730874e6c2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2507.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2507.md @@ -8,7 +8,7 @@ ms.assetid: f102aff5-de7d-4c3f-9cac-2ddf9ce02b14 --- # Compiler Error C2507 -'identifier' : too many virtual modifiers on the base class +> 'identifier' : too many virtual modifiers on the base class A class or structure is declared as **`virtual`** more than once. Only one **`virtual`** modifier can appear for each class in a list of base classes. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2509.md b/docs/error-messages/compiler-errors-2/compiler-error-c2509.md index f352ec966de..031dd4dce2d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2509.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2509.md @@ -8,7 +8,7 @@ ms.assetid: 339c1fcd-ec4a-456c-9f18-a9b24d9921af --- # Compiler Error C2509 -'identifier' : member function not declared in 'class' +> 'identifier' : member function not declared in 'class' The function is not declared in the specified class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2510.md b/docs/error-messages/compiler-errors-2/compiler-error-c2510.md index 6f3e7b8c2af..6117fba5f7b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2510.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2510.md @@ -8,7 +8,7 @@ ms.assetid: bf6d28db-f2f4-48f8-8f4e-7d662ed278fe --- # Compiler Error C2510 -'identifier' : left of '::' must be a class/struct/union +> 'identifier' : left of '::' must be a class/struct/union A class, structure, or union name must appear on the left side of the scope-resolution operator (`::`) operator. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2511.md b/docs/error-messages/compiler-errors-2/compiler-error-c2511.md index 366066b72ce..f7aa2d2da37 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2511.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2511.md @@ -8,7 +8,7 @@ ms.assetid: df999efe-fe2b-418b-bb55-4af6a0592631 --- # Compiler Error C2511 -'identifier' : overloaded member function not found in 'class' +> 'identifier' : overloaded member function not found in 'class' No version of the function is declared with the specified parameters. Possible causes: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2513.md b/docs/error-messages/compiler-errors-2/compiler-error-c2513.md index a8b17632744..eb14d1dda4e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2513.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2513.md @@ -8,7 +8,7 @@ ms.assetid: ab5b21d3-61e2-4df7-8eea-6f14d6ba8620 --- # Compiler Error C2513 -'type' : no variable declared before '=' +> 'type' : no variable declared before '=' The type specifier appears in declaration with no variable identifier. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2514.md b/docs/error-messages/compiler-errors-2/compiler-error-c2514.md index 9d5d9b20d57..d76d8fad9eb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2514.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2514.md @@ -8,7 +8,7 @@ ms.assetid: 4b7085e5-6714-4261-80b7-bc72e64ab3e8 --- # Compiler Error C2514 -'class' : class has no constructors +> 'class' : class has no constructors The class, structure, or union has no constructor with a parameter list that matches the parameters being used to instantiate it. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2516.md b/docs/error-messages/compiler-errors-2/compiler-error-c2516.md index 187439712a0..5ce4b1d3af1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2516.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2516.md @@ -8,7 +8,7 @@ ms.assetid: cd3accc1-0179-4a13-9587-616908c4ad1d --- # Compiler Error C2516 -'name' : is not a legal base class +> 'name' : is not a legal base class The class is derived from a type name defined by a **`typedef`** statement. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2517.md b/docs/error-messages/compiler-errors-2/compiler-error-c2517.md index 4b06aacf31a..41b22cef5db 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2517.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2517.md @@ -8,6 +8,6 @@ ms.assetid: d79348d5-e271-4aad-b973-8264515f8e90 --- # Compiler Error C2517 -'identifier' : right of '::' is undefined +> 'identifier' : right of '::' is undefined The identifier on the right of the scope-resolution operator (`::`) must be a defined member of the class, structure, or union on the left. If no class, structure, or union is named, the identifier on the right must be declared with global scope. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2518.md b/docs/error-messages/compiler-errors-2/compiler-error-c2518.md index de3a5ceab9d..314cca6e859 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2518.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2518.md @@ -8,7 +8,7 @@ ms.assetid: a7895b47-da90-4851-ac97-18e81479595a --- # Compiler Error C2518 -keyword 'keyword' illegal in base class list; ignored +> keyword 'keyword' illegal in base class list; ignored The keywords **`class`** and **`struct`** should not appear in a base class list. From 4a98957df8fb3e52394291f510f5899a9b753c07 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 29 Jul 2025 23:30:41 +0800 Subject: [PATCH 1198/2255] Add "Remarks" and "Example" headings for error references in range [C2491, C2520] --- docs/error-messages/compiler-errors-1/compiler-error-c2491.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2492.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2493.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2494.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2495.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2496.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2498.md | 2 ++ docs/error-messages/compiler-errors-1/compiler-error-c2499.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2500.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2502.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2503.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2504.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2505.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2506.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2507.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2509.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2510.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2511.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2512.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2513.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2514.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2516.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2517.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2518.md | 4 ++++ 24 files changed, 86 insertions(+) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2491.md b/docs/error-messages/compiler-errors-1/compiler-error-c2491.md index 4b31ea54438..41c3fe77ab4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2491.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2491.md @@ -10,10 +10,14 @@ ms.assetid: 4e5a8f81-124e-402c-a5ec-d35a89b5469e > 'identifier' : definition of dllimport function not allowed +## Remarks + Data, static data members, and functions can be declared as `dllimport`s but not defined as `dllimport`s. To fix this issue, remove the `__declspec(dllimport)` specifier from the definition of the function. +## Example + The following sample generates C2491: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2492.md b/docs/error-messages/compiler-errors-1/compiler-error-c2492.md index 37cf8a5ce0d..33d8d501fa6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2492.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2492.md @@ -10,8 +10,12 @@ ms.assetid: 8c44c9bb-c366-4fe5-a0ab-882e38608aaa > '*variable*': data with thread storage duration may not have dll interface +## Remarks + The variable is declared with the [thread](../../cpp/thread.md) attribute and with the DLL interface. The address of the `thread` variable is not known until run time, so it cannot be linked to a DLL import or export. +## Example + The following sample generates C2492: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2493.md b/docs/error-messages/compiler-errors-1/compiler-error-c2493.md index 04f804228b7..ab2953043d3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2493.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2493.md @@ -10,8 +10,12 @@ ms.assetid: 68316cd5-682b-49c3-b6ea-23c4e5d296cf > illegal form of __based +## Remarks + A **`__based`** expression must be based on a pointer. +## Example + The following sample generates C2493: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2494.md b/docs/error-messages/compiler-errors-1/compiler-error-c2494.md index b8e75b82068..7b40a0bbb0e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2494.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2494.md @@ -10,8 +10,12 @@ ms.assetid: 5dfd07ab-351d-49c9-b54e-f0a104776ab8 > '*keyword*' cannot be called from within a filter expression or __finally/finally block +## Remarks + You cannot use *keyword* in a **`__finally`** or **`finally`** block. +## Examples + The following sample generates C2494: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2495.md b/docs/error-messages/compiler-errors-1/compiler-error-c2495.md index 6c7c3200707..97c6828f23a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2495.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2495.md @@ -10,8 +10,12 @@ ms.assetid: bb7066fe-3549-4901-97e4-157f3c04dd57 > 'identifier' : 'nothrow' can only be applied to function declarations or definitions +## Remarks + The [nothrow](../../cpp/nothrow-cpp.md) extended attribute can be applied to function declarations or definitions only. +## Example + The following sample generates C2495: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2496.md b/docs/error-messages/compiler-errors-1/compiler-error-c2496.md index 0b84c473248..e561ef58eed 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2496.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2496.md @@ -10,8 +10,12 @@ ms.assetid: 9a25237d-5bbb-4112-98f3-29cd99d3f89f > 'identifier' : 'selectany' can only be applied to data items with external linkage +## Remarks + The [selectany](../../cpp/selectany.md) attribute can be applied only to externally visible and global data items. +## Example + The following sample generates C2496: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2498.md b/docs/error-messages/compiler-errors-1/compiler-error-c2498.md index bca5e4b077c..0768b30b908 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2498.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2498.md @@ -10,6 +10,8 @@ ms.assetid: 0839f12c-aaa4-4a02-bb33-7f072715dd14 > 'function' : 'novtable' can only be applied to class declarations or definitions +## Remarks + This error can be caused by using `__declspec(novtable)` with a function. ## Example diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2499.md b/docs/error-messages/compiler-errors-1/compiler-error-c2499.md index 6dacd2933c2..86cda09b56d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2499.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2499.md @@ -10,8 +10,12 @@ ms.assetid: b323ff4d-b3c1-4bfd-b052-ae7292d53222 > 'class' : a class cannot be its own base class +## Remarks + You attempted to specify the class that you are defining as a base class. +## Example + The following sample generates C2499: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2500.md b/docs/error-messages/compiler-errors-2/compiler-error-c2500.md index 626393a3ceb..aae6e1f58c4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2500.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2500.md @@ -10,12 +10,16 @@ ms.assetid: 6bff8161-dc9a-48ca-91f1-fd2eefdbbc93 > 'identifier1' : 'identifier2' is already a direct base class +## Remarks + A class or structure appears more than once in a list of base classes. A direct base is one mentioned in the base list. An indirect base is a base class of one of the classes in the base list. A class cannot be specified as a direct base class more than once. A class can be used as an indirect base class more than once. +## Example + The following sample generates C2500: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2502.md b/docs/error-messages/compiler-errors-2/compiler-error-c2502.md index ff489d7722d..8c3d1f975d5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2502.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2502.md @@ -10,8 +10,12 @@ ms.assetid: affa0b86-15fc-4e17-b7f2-6aad4a3771c4 > 'identifier' : too many access modifiers on the base class +## Remarks + The base class has more than one access modifier. Only one access modifier (**`public`**, **`private`**, or **`protected`**) is allowed. +## Example + The following sample generates C2502: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2503.md b/docs/error-messages/compiler-errors-2/compiler-error-c2503.md index baf4eaa180e..b2c02b0cbb8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2503.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2503.md @@ -10,8 +10,12 @@ ms.assetid: da86cc89-fd04-400b-aa8d-a5ffaf7e3918 > 'class' : base classes cannot contain zero-sized arrays +## Remarks + A base class or structure contains a zero-sized array. An array in a class must have at least one element. +## Example + The following sample generates C2503: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2504.md b/docs/error-messages/compiler-errors-2/compiler-error-c2504.md index 040fc3c4eab..12034b85867 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2504.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2504.md @@ -10,12 +10,16 @@ ms.assetid: c9e002a6-a4ee-4ba7-970e-edf4adb83692 > 'class' : base class undefined +## Remarks + The base class is declared but never defined. Possible causes: 1. Missing include file. 1. External base class not declared with [extern](../../cpp/extern-cpp.md). +## Example + The following sample generates C2504: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2505.md b/docs/error-messages/compiler-errors-2/compiler-error-c2505.md index 3d3ea8e7e04..76b91226610 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2505.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2505.md @@ -10,10 +10,14 @@ ms.assetid: b19f5c53-399d-425e-90db-fe3ca9b40858 > 'symbol' : '__declspec(modifer)' can only be applied to declarations or definitions of global objects or static data members +## Remarks + A **`__declspec`** modifier that is designed to only be used at global scope was used in a function. For more information, see [appdomain](../../cpp/appdomain.md) and [process](../../cpp/process.md). +## Example + The following sample generates C2505: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2506.md b/docs/error-messages/compiler-errors-2/compiler-error-c2506.md index 06c61aa7342..de3db9c4b37 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2506.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2506.md @@ -10,6 +10,8 @@ ms.assetid: cfed21cd-2404-46f2-985e-d0c2c3820830 > 'member' : '__declspec(modifier)' cannot be applied to this symbol +## Remarks + You cannot declare per-process or per-appdomain for static members of a managed class. See [appdomain](../../cpp/appdomain.md) for more information. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2507.md b/docs/error-messages/compiler-errors-2/compiler-error-c2507.md index 6730874e6c2..d8c28e1bc6e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2507.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2507.md @@ -10,8 +10,12 @@ ms.assetid: f102aff5-de7d-4c3f-9cac-2ddf9ce02b14 > 'identifier' : too many virtual modifiers on the base class +## Remarks + A class or structure is declared as **`virtual`** more than once. Only one **`virtual`** modifier can appear for each class in a list of base classes. +## Example + The following sample generates C2507: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2509.md b/docs/error-messages/compiler-errors-2/compiler-error-c2509.md index 031dd4dce2d..0b78605cc60 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2509.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2509.md @@ -10,6 +10,8 @@ ms.assetid: 339c1fcd-ec4a-456c-9f18-a9b24d9921af > 'identifier' : member function not declared in 'class' +## Remarks + The function is not declared in the specified class. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2510.md b/docs/error-messages/compiler-errors-2/compiler-error-c2510.md index 6117fba5f7b..aa8fe3cd475 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2510.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2510.md @@ -10,8 +10,12 @@ ms.assetid: bf6d28db-f2f4-48f8-8f4e-7d662ed278fe > 'identifier' : left of '::' must be a class/struct/union +## Remarks + A class, structure, or union name must appear on the left side of the scope-resolution operator (`::`) operator. +## Example + The following sample generates C2510: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2511.md b/docs/error-messages/compiler-errors-2/compiler-error-c2511.md index f7aa2d2da37..2646c7c3b6d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2511.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2511.md @@ -10,6 +10,8 @@ ms.assetid: df999efe-fe2b-418b-bb55-4af6a0592631 > 'identifier' : overloaded member function not found in 'class' +## Remarks + No version of the function is declared with the specified parameters. Possible causes: 1. Wrong parameters passed to function. @@ -18,6 +20,8 @@ No version of the function is declared with the specified parameters. Possible 1. Incorrect spelling of parameter names. +## Example + The following sample generates C2511: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2512.md b/docs/error-messages/compiler-errors-2/compiler-error-c2512.md index 10f91ac3852..61ecc0937b2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2512.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2512.md @@ -10,6 +10,8 @@ ms.assetid: 15206da9-1164-451a-b869-280e00711aad > '*identifier*' : no appropriate default constructor available +## Remarks + A *default constructor*, a constructor that requires no arguments, is not available for the specified class, structure, or union. The compiler supplies a default constructor only if no user-defined constructors are provided. If you provide a constructor that takes a non-void parameter, and you want to allow your class to be created with no parameters (for example, as the elements of an array), you must also provide a default constructor. The default constructor can be a constructor with default values for all parameters. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2513.md b/docs/error-messages/compiler-errors-2/compiler-error-c2513.md index eb14d1dda4e..3e68d1374ab 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2513.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2513.md @@ -10,8 +10,12 @@ ms.assetid: ab5b21d3-61e2-4df7-8eea-6f14d6ba8620 > 'type' : no variable declared before '=' +## Remarks + The type specifier appears in declaration with no variable identifier. +## Examples + The following sample generates C2513: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2514.md b/docs/error-messages/compiler-errors-2/compiler-error-c2514.md index d76d8fad9eb..758eeeee161 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2514.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2514.md @@ -10,10 +10,14 @@ ms.assetid: 4b7085e5-6714-4261-80b7-bc72e64ab3e8 > 'class' : class has no constructors +## Remarks + The class, structure, or union has no constructor with a parameter list that matches the parameters being used to instantiate it. A class must be fully declared before it can be instantiated. +## Example + The following sample generates C2514: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2516.md b/docs/error-messages/compiler-errors-2/compiler-error-c2516.md index 5ce4b1d3af1..79fef8513fb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2516.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2516.md @@ -10,8 +10,12 @@ ms.assetid: cd3accc1-0179-4a13-9587-616908c4ad1d > 'name' : is not a legal base class +## Remarks + The class is derived from a type name defined by a **`typedef`** statement. +## Example + The following sample generates C2516: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2517.md b/docs/error-messages/compiler-errors-2/compiler-error-c2517.md index 41b22cef5db..cf044dc31f5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2517.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2517.md @@ -10,4 +10,6 @@ ms.assetid: d79348d5-e271-4aad-b973-8264515f8e90 > 'identifier' : right of '::' is undefined +## Remarks + The identifier on the right of the scope-resolution operator (`::`) must be a defined member of the class, structure, or union on the left. If no class, structure, or union is named, the identifier on the right must be declared with global scope. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2518.md b/docs/error-messages/compiler-errors-2/compiler-error-c2518.md index 314cca6e859..78b932ee6a5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2518.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2518.md @@ -10,8 +10,12 @@ ms.assetid: a7895b47-da90-4851-ac97-18e81479595a > keyword 'keyword' illegal in base class list; ignored +## Remarks + The keywords **`class`** and **`struct`** should not appear in a base class list. +## Example + The following sample generates C2518: ```cpp From ee0b21e39274f9d9cdad4a69e78ee05f3c5652b9 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 29 Jul 2025 23:32:15 +0800 Subject: [PATCH 1199/2255] Replace term "sample" with "example" for error references in range [C2491, C2520] --- docs/error-messages/compiler-errors-1/compiler-error-c2491.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2492.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2493.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2494.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2495.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2496.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2498.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2499.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2500.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2502.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2503.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2504.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2505.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2506.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2507.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2509.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2510.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2511.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2513.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2514.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2516.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2518.md | 2 +- 22 files changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2491.md b/docs/error-messages/compiler-errors-1/compiler-error-c2491.md index 41c3fe77ab4..971c94890d7 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2491.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2491.md @@ -18,7 +18,7 @@ To fix this issue, remove the `__declspec(dllimport)` specifier from the definit ## Example -The following sample generates C2491: +The following example generates C2491: ```cpp // C2491.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2492.md b/docs/error-messages/compiler-errors-1/compiler-error-c2492.md index 33d8d501fa6..e60a7e2a5d2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2492.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2492.md @@ -16,7 +16,7 @@ The variable is declared with the [thread](../../cpp/thread.md) attribute and wi ## Example -The following sample generates C2492: +The following example generates C2492: ```cpp // C2492.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2493.md b/docs/error-messages/compiler-errors-1/compiler-error-c2493.md index ab2953043d3..e47607db293 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2493.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2493.md @@ -16,7 +16,7 @@ A **`__based`** expression must be based on a pointer. ## Example -The following sample generates C2493: +The following example generates C2493: ```cpp // C2493.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2494.md b/docs/error-messages/compiler-errors-1/compiler-error-c2494.md index 7b40a0bbb0e..b375dd36230 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2494.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2494.md @@ -16,7 +16,7 @@ You cannot use *keyword* in a **`__finally`** or **`finally`** block. ## Examples -The following sample generates C2494: +The following example generates C2494: ```cpp // C2494.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2495.md b/docs/error-messages/compiler-errors-1/compiler-error-c2495.md index 97c6828f23a..e3f818b3aec 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2495.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2495.md @@ -16,7 +16,7 @@ The [nothrow](../../cpp/nothrow-cpp.md) extended attribute can be applied to fun ## Example -The following sample generates C2495: +The following example generates C2495: ```cpp // C2495.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2496.md b/docs/error-messages/compiler-errors-1/compiler-error-c2496.md index e561ef58eed..d1c88cbae7c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2496.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2496.md @@ -16,7 +16,7 @@ The [selectany](../../cpp/selectany.md) attribute can be applied only to externa ## Example -The following sample generates C2496: +The following example generates C2496: ```cpp // C2496.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2498.md b/docs/error-messages/compiler-errors-1/compiler-error-c2498.md index 0768b30b908..337908d6405 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2498.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2498.md @@ -16,7 +16,7 @@ This error can be caused by using `__declspec(novtable)` with a function. ## Example -The following sample generates C2498: +The following example generates C2498: ```cpp // C2498.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2499.md b/docs/error-messages/compiler-errors-1/compiler-error-c2499.md index 86cda09b56d..1f8b5c72d30 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2499.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2499.md @@ -16,7 +16,7 @@ You attempted to specify the class that you are defining as a base class. ## Example -The following sample generates C2499: +The following example generates C2499: ```cpp // C2499.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2500.md b/docs/error-messages/compiler-errors-2/compiler-error-c2500.md index aae6e1f58c4..3a075af2d90 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2500.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2500.md @@ -20,7 +20,7 @@ A class cannot be specified as a direct base class more than once. A class can b ## Example -The following sample generates C2500: +The following example generates C2500: ```cpp // C2500.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2502.md b/docs/error-messages/compiler-errors-2/compiler-error-c2502.md index 8c3d1f975d5..efee518fe13 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2502.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2502.md @@ -16,7 +16,7 @@ The base class has more than one access modifier. Only one access modifier (**`p ## Example -The following sample generates C2502: +The following example generates C2502: ```cpp // C2502.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2503.md b/docs/error-messages/compiler-errors-2/compiler-error-c2503.md index b2c02b0cbb8..874c99c0ade 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2503.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2503.md @@ -16,7 +16,7 @@ A base class or structure contains a zero-sized array. An array in a class must ## Example -The following sample generates C2503: +The following example generates C2503: ```cpp // C2503.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2504.md b/docs/error-messages/compiler-errors-2/compiler-error-c2504.md index 12034b85867..d6e73d3fce3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2504.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2504.md @@ -20,7 +20,7 @@ The base class is declared but never defined. Possible causes: ## Example -The following sample generates C2504: +The following example generates C2504: ```cpp // C2504.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2505.md b/docs/error-messages/compiler-errors-2/compiler-error-c2505.md index 76b91226610..82e04a11a4e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2505.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2505.md @@ -18,7 +18,7 @@ For more information, see [appdomain](../../cpp/appdomain.md) and [process](../. ## Example -The following sample generates C2505: +The following example generates C2505: ```cpp // C2505.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2506.md b/docs/error-messages/compiler-errors-2/compiler-error-c2506.md index de3db9c4b37..fc8558a0e1b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2506.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2506.md @@ -18,7 +18,7 @@ See [appdomain](../../cpp/appdomain.md) for more information. ## Example -The following sample generates C2506. +The following example generates C2506. ```cpp // C2506.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2507.md b/docs/error-messages/compiler-errors-2/compiler-error-c2507.md index d8c28e1bc6e..e45dd5d4321 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2507.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2507.md @@ -16,7 +16,7 @@ A class or structure is declared as **`virtual`** more than once. Only one **`vi ## Example -The following sample generates C2507: +The following example generates C2507: ```cpp // C2507.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2509.md b/docs/error-messages/compiler-errors-2/compiler-error-c2509.md index 0b78605cc60..d3ee226bd8d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2509.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2509.md @@ -16,7 +16,7 @@ The function is not declared in the specified class. ## Example -The following sample generates C2509. +The following example generates C2509. ```cpp // C2509.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2510.md b/docs/error-messages/compiler-errors-2/compiler-error-c2510.md index aa8fe3cd475..edcfa0a9825 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2510.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2510.md @@ -16,7 +16,7 @@ A class, structure, or union name must appear on the left side of the scope-reso ## Example -The following sample generates C2510: +The following example generates C2510: ```cpp // C2510.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2511.md b/docs/error-messages/compiler-errors-2/compiler-error-c2511.md index 2646c7c3b6d..c1c96768479 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2511.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2511.md @@ -22,7 +22,7 @@ No version of the function is declared with the specified parameters. Possible ## Example -The following sample generates C2511: +The following example generates C2511: ```cpp // C2511.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2513.md b/docs/error-messages/compiler-errors-2/compiler-error-c2513.md index 3e68d1374ab..e4e24e477bc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2513.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2513.md @@ -16,7 +16,7 @@ The type specifier appears in declaration with no variable identifier. ## Examples -The following sample generates C2513: +The following example generates C2513: ```cpp // C2513.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2514.md b/docs/error-messages/compiler-errors-2/compiler-error-c2514.md index 758eeeee161..5b4051db300 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2514.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2514.md @@ -18,7 +18,7 @@ A class must be fully declared before it can be instantiated. ## Example -The following sample generates C2514: +The following example generates C2514: ```cpp // C2514.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2516.md b/docs/error-messages/compiler-errors-2/compiler-error-c2516.md index 79fef8513fb..fec688d69bc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2516.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2516.md @@ -16,7 +16,7 @@ The class is derived from a type name defined by a **`typedef`** statement. ## Example -The following sample generates C2516: +The following example generates C2516: ```cpp // C2516.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2518.md b/docs/error-messages/compiler-errors-2/compiler-error-c2518.md index 78b932ee6a5..b9d9574135b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2518.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2518.md @@ -16,7 +16,7 @@ The keywords **`class`** and **`struct`** should not appear in a base class list ## Example -The following sample generates C2518: +The following example generates C2518: ```cpp // C2518.cpp From bf37f2c7626165f29713fb5ac5621ecc82178987 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 29 Jul 2025 23:36:11 +0800 Subject: [PATCH 1200/2255] Update metadata for error references in range [C2491, C2520] --- .../error-messages/compiler-errors-1/compiler-error-c2491.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2492.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2493.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2494.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2495.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2496.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2498.md | 5 ++--- .../error-messages/compiler-errors-1/compiler-error-c2499.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2500.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2502.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2503.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2504.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2505.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2506.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2507.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2509.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2510.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2511.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2512.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2513.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2514.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2516.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2517.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2518.md | 5 ++--- 24 files changed, 48 insertions(+), 72 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2491.md b/docs/error-messages/compiler-errors-1/compiler-error-c2491.md index 971c94890d7..cdbaa93e35a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2491.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2491.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2491" title: "Compiler Error C2491" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2491" +ms.date: 11/04/2016 f1_keywords: ["C2491"] helpviewer_keywords: ["C2491"] -ms.assetid: 4e5a8f81-124e-402c-a5ec-d35a89b5469e --- # Compiler Error C2491 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2492.md b/docs/error-messages/compiler-errors-1/compiler-error-c2492.md index e60a7e2a5d2..15b7b82c18a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2492.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2492.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2492" title: "Compiler Error C2492" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2492" +ms.date: 11/04/2016 f1_keywords: ["C2492"] helpviewer_keywords: ["C2492"] -ms.assetid: 8c44c9bb-c366-4fe5-a0ab-882e38608aaa --- # Compiler Error C2492 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2493.md b/docs/error-messages/compiler-errors-1/compiler-error-c2493.md index e47607db293..9a594c154ba 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2493.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2493.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2493" title: "Compiler Error C2493" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2493" +ms.date: 11/04/2016 f1_keywords: ["C2493"] helpviewer_keywords: ["C2493"] -ms.assetid: 68316cd5-682b-49c3-b6ea-23c4e5d296cf --- # Compiler Error C2493 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2494.md b/docs/error-messages/compiler-errors-1/compiler-error-c2494.md index b375dd36230..2d3a8755b78 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2494.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2494.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2494" title: "Compiler Error C2494" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2494" +ms.date: 11/04/2016 f1_keywords: ["C2494"] helpviewer_keywords: ["C2494"] -ms.assetid: 5dfd07ab-351d-49c9-b54e-f0a104776ab8 --- # Compiler Error C2494 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2495.md b/docs/error-messages/compiler-errors-1/compiler-error-c2495.md index e3f818b3aec..77119a710aa 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2495.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2495.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2495" title: "Compiler Error C2495" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2495" +ms.date: 11/04/2016 f1_keywords: ["C2495"] helpviewer_keywords: ["C2495"] -ms.assetid: bb7066fe-3549-4901-97e4-157f3c04dd57 --- # Compiler Error C2495 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2496.md b/docs/error-messages/compiler-errors-1/compiler-error-c2496.md index d1c88cbae7c..4c8ff4c65ab 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2496.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2496.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2496" title: "Compiler Error C2496" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2496" +ms.date: 11/04/2016 f1_keywords: ["C2496"] helpviewer_keywords: ["C2496"] -ms.assetid: 9a25237d-5bbb-4112-98f3-29cd99d3f89f --- # Compiler Error C2496 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2498.md b/docs/error-messages/compiler-errors-1/compiler-error-c2498.md index 337908d6405..fb603e31ed2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2498.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2498.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2498" title: "Compiler Error C2498" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2498" +ms.date: 11/04/2016 f1_keywords: ["C2498"] helpviewer_keywords: ["C2498"] -ms.assetid: 0839f12c-aaa4-4a02-bb33-7f072715dd14 --- # Compiler Error C2498 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2499.md b/docs/error-messages/compiler-errors-1/compiler-error-c2499.md index 1f8b5c72d30..38e8f58cd81 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2499.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2499.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2499" title: "Compiler Error C2499" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2499" +ms.date: 11/04/2016 f1_keywords: ["C2499"] helpviewer_keywords: ["C2499"] -ms.assetid: b323ff4d-b3c1-4bfd-b052-ae7292d53222 --- # Compiler Error C2499 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2500.md b/docs/error-messages/compiler-errors-2/compiler-error-c2500.md index 3a075af2d90..ca18bb6baa8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2500.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2500.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2500" title: "Compiler Error C2500" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2500" +ms.date: 11/04/2016 f1_keywords: ["C2500"] helpviewer_keywords: ["C2500"] -ms.assetid: 6bff8161-dc9a-48ca-91f1-fd2eefdbbc93 --- # Compiler Error C2500 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2502.md b/docs/error-messages/compiler-errors-2/compiler-error-c2502.md index efee518fe13..682a1056c70 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2502.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2502.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2502" title: "Compiler Error C2502" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2502" +ms.date: 11/04/2016 f1_keywords: ["C2502"] helpviewer_keywords: ["C2502"] -ms.assetid: affa0b86-15fc-4e17-b7f2-6aad4a3771c4 --- # Compiler Error C2502 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2503.md b/docs/error-messages/compiler-errors-2/compiler-error-c2503.md index 874c99c0ade..2f5f2a710c1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2503.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2503.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2503" title: "Compiler Error C2503" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2503" +ms.date: 11/04/2016 f1_keywords: ["C2503"] helpviewer_keywords: ["C2503"] -ms.assetid: da86cc89-fd04-400b-aa8d-a5ffaf7e3918 --- # Compiler Error C2503 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2504.md b/docs/error-messages/compiler-errors-2/compiler-error-c2504.md index d6e73d3fce3..82e484fe671 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2504.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2504.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2504" title: "Compiler Error C2504" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2504" +ms.date: 11/04/2016 f1_keywords: ["C2504"] helpviewer_keywords: ["C2504"] -ms.assetid: c9e002a6-a4ee-4ba7-970e-edf4adb83692 --- # Compiler Error C2504 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2505.md b/docs/error-messages/compiler-errors-2/compiler-error-c2505.md index 82e04a11a4e..2418358823a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2505.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2505.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2505" title: "Compiler Error C2505" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2505" +ms.date: 11/04/2016 f1_keywords: ["C2505"] helpviewer_keywords: ["C2505"] -ms.assetid: b19f5c53-399d-425e-90db-fe3ca9b40858 --- # Compiler Error C2505 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2506.md b/docs/error-messages/compiler-errors-2/compiler-error-c2506.md index fc8558a0e1b..6b29b6aa6a6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2506.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2506.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2506" title: "Compiler Error C2506" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2506" +ms.date: 11/04/2016 f1_keywords: ["C2506"] helpviewer_keywords: ["C2506"] -ms.assetid: cfed21cd-2404-46f2-985e-d0c2c3820830 --- # Compiler Error C2506 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2507.md b/docs/error-messages/compiler-errors-2/compiler-error-c2507.md index e45dd5d4321..4a586ada072 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2507.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2507.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2507" title: "Compiler Error C2507" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2507" +ms.date: 11/04/2016 f1_keywords: ["C2507"] helpviewer_keywords: ["C2507"] -ms.assetid: f102aff5-de7d-4c3f-9cac-2ddf9ce02b14 --- # Compiler Error C2507 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2509.md b/docs/error-messages/compiler-errors-2/compiler-error-c2509.md index d3ee226bd8d..570e65755fc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2509.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2509.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2509" title: "Compiler Error C2509" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2509" +ms.date: 11/04/2016 f1_keywords: ["C2509"] helpviewer_keywords: ["C2509"] -ms.assetid: 339c1fcd-ec4a-456c-9f18-a9b24d9921af --- # Compiler Error C2509 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2510.md b/docs/error-messages/compiler-errors-2/compiler-error-c2510.md index edcfa0a9825..9a1d072e990 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2510.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2510.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2510" title: "Compiler Error C2510" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2510" +ms.date: 11/04/2016 f1_keywords: ["C2510"] helpviewer_keywords: ["C2510"] -ms.assetid: bf6d28db-f2f4-48f8-8f4e-7d662ed278fe --- # Compiler Error C2510 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2511.md b/docs/error-messages/compiler-errors-2/compiler-error-c2511.md index c1c96768479..9b0661a8f52 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2511.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2511.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2511" title: "Compiler Error C2511" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2511" +ms.date: 11/04/2016 f1_keywords: ["C2511"] helpviewer_keywords: ["C2511"] -ms.assetid: df999efe-fe2b-418b-bb55-4af6a0592631 --- # Compiler Error C2511 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2512.md b/docs/error-messages/compiler-errors-2/compiler-error-c2512.md index 61ecc0937b2..2d3eda00460 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2512.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2512.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2512" title: "Compiler Error C2512" -ms.date: "02/09/2018" +description: "Learn more about: Compiler Error C2512" +ms.date: 02/09/2018 f1_keywords: ["C2512"] helpviewer_keywords: ["C2512"] -ms.assetid: 15206da9-1164-451a-b869-280e00711aad --- # Compiler Error C2512 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2513.md b/docs/error-messages/compiler-errors-2/compiler-error-c2513.md index e4e24e477bc..f473c159cb8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2513.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2513.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2513" title: "Compiler Error C2513" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2513" +ms.date: 11/04/2016 f1_keywords: ["C2513"] helpviewer_keywords: ["C2513"] -ms.assetid: ab5b21d3-61e2-4df7-8eea-6f14d6ba8620 --- # Compiler Error C2513 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2514.md b/docs/error-messages/compiler-errors-2/compiler-error-c2514.md index 5b4051db300..c42b99c7b3b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2514.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2514.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2514" title: "Compiler Error C2514" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2514" +ms.date: 11/04/2016 f1_keywords: ["C2514"] helpviewer_keywords: ["C2514"] -ms.assetid: 4b7085e5-6714-4261-80b7-bc72e64ab3e8 --- # Compiler Error C2514 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2516.md b/docs/error-messages/compiler-errors-2/compiler-error-c2516.md index fec688d69bc..80332510416 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2516.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2516.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2516" title: "Compiler Error C2516" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2516" +ms.date: 11/04/2016 f1_keywords: ["C2516"] helpviewer_keywords: ["C2516"] -ms.assetid: cd3accc1-0179-4a13-9587-616908c4ad1d --- # Compiler Error C2516 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2517.md b/docs/error-messages/compiler-errors-2/compiler-error-c2517.md index cf044dc31f5..ef8d366347d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2517.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2517.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2517" title: "Compiler Error C2517" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2517" +ms.date: 11/04/2016 f1_keywords: ["C2517"] helpviewer_keywords: ["C2517"] -ms.assetid: d79348d5-e271-4aad-b973-8264515f8e90 --- # Compiler Error C2517 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2518.md b/docs/error-messages/compiler-errors-2/compiler-error-c2518.md index b9d9574135b..f87fee60c91 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2518.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2518.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2518" title: "Compiler Error C2518" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2518" +ms.date: 11/04/2016 f1_keywords: ["C2518"] helpviewer_keywords: ["C2518"] -ms.assetid: a7895b47-da90-4851-ac97-18e81479595a --- # Compiler Error C2518 From 2de1428b311cad63d3a033fdf521fc5b2c2b1382 Mon Sep 17 00:00:00 2001 From: David Justo Date: Tue, 29 Jul 2025 13:59:11 -0700 Subject: [PATCH 1201/2255] Highlight the `/Oi` requirement for `memcpy-param-overlap` --- docs/sanitizers/error-memcpy-param-overlap.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/sanitizers/error-memcpy-param-overlap.md b/docs/sanitizers/error-memcpy-param-overlap.md index 49ded7146c4..a01d23c4842 100644 --- a/docs/sanitizers/error-memcpy-param-overlap.md +++ b/docs/sanitizers/error-memcpy-param-overlap.md @@ -9,6 +9,9 @@ helpviewer_keywords: ["memcpy-param-overlap error", "AddressSanitizer error memc > Address Sanitizer Error: memcpy-param-overlap +> [!NOTE] +> The `/Oi` flag is required to detect `memcpy-param-overlap` errors. This flag tells the compiler to treat `memcpy` and `memmove` as intrinsic functions, which is necessary because some versions of the standard library implement `memcpy` and `memmove` as such. Since ASAN is a dynamic analysis tool, it can only detect errors with an observable runtime effect. Please note that when`/O2` is also set, ASan may not be able to reliably detect `memcpy-param-overlap` errors because the intrinsic variant of these functions is not guaranteed to be used. See the [`/Oi` docs](../build/reference/oi-generate-intrinsic-functions.md) for more information. + The CRT function [`memcpy`](../c-runtime-library/reference/memcpy-wmemcpy.md) **doesn't support** overlapping memory. The CRT provides an alternative to `memcpy` that does support overlapping memory: [`memmove`](../c-runtime-library/reference/memmove-wmemmove.md). A common error is to treat `memmove` as being semantically equivalent to `memcpy`. @@ -39,8 +42,6 @@ cl example1.cpp /fsanitize=address /Zi /Oi devenv /debugexe example1.exe ``` -The [/Oi flag](../build/reference/oi-generate-intrinsic-functions.md) tells the compiler to treat `memcpy` and `memmove` as intrinsic functions. This is necessary because some versions of the standard library implement `memcpy` and `memmove` in the same way. Because ASAN is a dynamic analysis tool, it only detects errors with an observable runtime effect. - ### Resulting error :::image type="content" source="media/memcpy-param-overlap-example-1.png" alt-text="Screenshot of debugger displaying memcpy-param-overlap error in example 1."::: From ffd7ba8d9c4508f286af664c6a226a9586c17b47 Mon Sep 17 00:00:00 2001 From: David Justo Date: Tue, 29 Jul 2025 14:03:13 -0700 Subject: [PATCH 1202/2255] Use sections to delineate x86-specific remarks --- .../reference/oi-generate-intrinsic-functions.md | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/docs/build/reference/oi-generate-intrinsic-functions.md b/docs/build/reference/oi-generate-intrinsic-functions.md index 22b21114a48..80ee69c7bd9 100644 --- a/docs/build/reference/oi-generate-intrinsic-functions.md +++ b/docs/build/reference/oi-generate-intrinsic-functions.md @@ -24,23 +24,21 @@ For more information about which functions have intrinsic forms, see [intrinsic] **/Oi** is only a request to the compiler to replace some function calls with intrinsics. The compiler may call the function (and not replace the function call with an intrinsic) if it results in better performance.\ **/Oi-** turns off this behavior, which may be useful if `/Oi` has been specified elsewhere and you want to override it. -**x86 Specific** +You also use [intrinsic](../../preprocessor/intrinsic.md) to create intrinsic functions, or [function (C/C++)](../../preprocessor/function-c-cpp.md) to explicitly force a function call. + +### x86-specific remarks The intrinsic floating-point functions don't perform any special checks on input values and so work in restricted ranges of input, and have different exception handling and boundary conditions than the library routines with the same name. Using the true intrinsic forms implies loss of IEEE exception handling, and loss of `_matherr` and `errno` functionality; the latter implies loss of ANSI conformance. However, the intrinsic forms can considerably speed up floating-point-intensive programs, and for many programs, the conformance issues are of little practical value. You can use the [`Za`](za-ze-disable-language-extensions.md) compiler option to override generation of true intrinsic floating-point options. In this case, the functions are generated as library routines that pass arguments directly to the floating-point chip instead of pushing them onto the program stack. -**END x86 Specific** - -You also use [intrinsic](../../preprocessor/intrinsic.md) to create intrinsic functions, or [function (C/C++)](../../preprocessor/function-c-cpp.md) to explicitly force a function call. - -### To set this compiler option in the Visual Studio development environment +## To set this compiler option in the Visual Studio development environment 1. Open the project's **Property Pages** dialog box. For details, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md). 1. Select the **Configuration Properties** > **C/C++** > **Optimization** property page. 1. Modify the **Enable Intrinsic Functions** property. -### To set this compiler option programmatically +## To set this compiler option programmatically - See . From 4c112dbd280e5d56fcc2764be4f2432475df8a0a Mon Sep 17 00:00:00 2001 From: David Justo Date: Tue, 29 Jul 2025 15:13:28 -0700 Subject: [PATCH 1203/2255] soften wording: make clear that `/Oi` is needed to _reliably_ detect errors, not to detect them entirely --- docs/sanitizers/error-memcpy-param-overlap.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/error-memcpy-param-overlap.md b/docs/sanitizers/error-memcpy-param-overlap.md index a01d23c4842..3da467b258e 100644 --- a/docs/sanitizers/error-memcpy-param-overlap.md +++ b/docs/sanitizers/error-memcpy-param-overlap.md @@ -10,7 +10,7 @@ helpviewer_keywords: ["memcpy-param-overlap error", "AddressSanitizer error memc > Address Sanitizer Error: memcpy-param-overlap > [!NOTE] -> The `/Oi` flag is required to detect `memcpy-param-overlap` errors. This flag tells the compiler to treat `memcpy` and `memmove` as intrinsic functions, which is necessary because some versions of the standard library implement `memcpy` and `memmove` as such. Since ASAN is a dynamic analysis tool, it can only detect errors with an observable runtime effect. Please note that when`/O2` is also set, ASan may not be able to reliably detect `memcpy-param-overlap` errors because the intrinsic variant of these functions is not guaranteed to be used. See the [`/Oi` docs](../build/reference/oi-generate-intrinsic-functions.md) for more information. +> The `/Oi` flag is required to reliably detect `memcpy-param-overlap` errors. This flag tells the compiler to treat `memcpy` and `memmove` as intrinsic functions, which is necessary because some versions of the standard library implement `memcpy` and `memmove` as such. Since ASAN is a dynamic analysis tool, it can only detect errors with an observable runtime effect. Please note that when`/O2` is also set, ASan may not be able to reliably detect `memcpy-param-overlap` errors because the intrinsic variant of these functions is not guaranteed to be used. See the [`/Oi` docs](../build/reference/oi-generate-intrinsic-functions.md) for more information. The CRT function [`memcpy`](../c-runtime-library/reference/memcpy-wmemcpy.md) **doesn't support** overlapping memory. The CRT provides an alternative to `memcpy` that does support overlapping memory: [`memmove`](../c-runtime-library/reference/memmove-wmemmove.md). From c31d707a1bf318e7df528b6e5cce0522d0619458 Mon Sep 17 00:00:00 2001 From: David Justo Date: Tue, 29 Jul 2025 16:09:31 -0700 Subject: [PATCH 1204/2255] Tidy up `/Oi` docs: say "you can use" instead of "you can also use" after re-arranging text. --- docs/build/reference/oi-generate-intrinsic-functions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/oi-generate-intrinsic-functions.md b/docs/build/reference/oi-generate-intrinsic-functions.md index 80ee69c7bd9..6903538cac1 100644 --- a/docs/build/reference/oi-generate-intrinsic-functions.md +++ b/docs/build/reference/oi-generate-intrinsic-functions.md @@ -24,7 +24,7 @@ For more information about which functions have intrinsic forms, see [intrinsic] **/Oi** is only a request to the compiler to replace some function calls with intrinsics. The compiler may call the function (and not replace the function call with an intrinsic) if it results in better performance.\ **/Oi-** turns off this behavior, which may be useful if `/Oi` has been specified elsewhere and you want to override it. -You also use [intrinsic](../../preprocessor/intrinsic.md) to create intrinsic functions, or [function (C/C++)](../../preprocessor/function-c-cpp.md) to explicitly force a function call. +You can use [intrinsic](../../preprocessor/intrinsic.md) to create intrinsic functions, or [function (C/C++)](../../preprocessor/function-c-cpp.md) to explicitly force a function call. ### x86-specific remarks From 2d75c9a6959618b3af508bade830614ac4c60bf9 Mon Sep 17 00:00:00 2001 From: David Justo Date: Tue, 29 Jul 2025 16:21:09 -0700 Subject: [PATCH 1205/2255] incorporate feedback --- docs/sanitizers/error-memcpy-param-overlap.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/error-memcpy-param-overlap.md b/docs/sanitizers/error-memcpy-param-overlap.md index 3da467b258e..3686347b4f3 100644 --- a/docs/sanitizers/error-memcpy-param-overlap.md +++ b/docs/sanitizers/error-memcpy-param-overlap.md @@ -10,7 +10,7 @@ helpviewer_keywords: ["memcpy-param-overlap error", "AddressSanitizer error memc > Address Sanitizer Error: memcpy-param-overlap > [!NOTE] -> The `/Oi` flag is required to reliably detect `memcpy-param-overlap` errors. This flag tells the compiler to treat `memcpy` and `memmove` as intrinsic functions, which is necessary because some versions of the standard library implement `memcpy` and `memmove` as such. Since ASAN is a dynamic analysis tool, it can only detect errors with an observable runtime effect. Please note that when`/O2` is also set, ASan may not be able to reliably detect `memcpy-param-overlap` errors because the intrinsic variant of these functions is not guaranteed to be used. See the [`/Oi` docs](../build/reference/oi-generate-intrinsic-functions.md) for more information. +> The `/Oi` flag is required to reliably detect `memcpy-param-overlap` errors. This flag tells the compiler to treat `memcpy` and other functions as intrinsics, which is necessary because some versions of the standard library implement them as such. Since ASan is a dynamic analysis tool, it can only detect errors with an observable runtime effect. Please note that when `/O2` is also set, ASan may not be able to reliably detect `memcpy-param-overlap` errors because the intrinsic variant of these functions is not guaranteed to be used. See the [`/Oi` docs](../build/reference/oi-generate-intrinsic-functions.md) for more information. The CRT function [`memcpy`](../c-runtime-library/reference/memcpy-wmemcpy.md) **doesn't support** overlapping memory. The CRT provides an alternative to `memcpy` that does support overlapping memory: [`memmove`](../c-runtime-library/reference/memmove-wmemmove.md). From e8cfc6a54070c11d48770b084169b0d3c3c59cb1 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 30 Jul 2025 17:53:50 +0800 Subject: [PATCH 1206/2255] Clean up 2 stray backticks --- docs/mfc/reference/cdc-class.md | 2 +- docs/sanitizers/asan-known-issues.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/mfc/reference/cdc-class.md b/docs/mfc/reference/cdc-class.md index 1c72d7d3974..910c96cad27 100644 --- a/docs/mfc/reference/cdc-class.md +++ b/docs/mfc/reference/cdc-class.md @@ -4588,7 +4588,7 @@ BOOL Polyline( *`lpPoints`*\ Points to an array of `POINT` structures or `CPoint` objects to be connected. -*`nCount`*`\ +*`nCount`*\ Specifies the number of points in the array. This value must be at least 2. ### Return Value diff --git a/docs/sanitizers/asan-known-issues.md b/docs/sanitizers/asan-known-issues.md index f797f3006e1..41d1292a402 100644 --- a/docs/sanitizers/asan-known-issues.md +++ b/docs/sanitizers/asan-known-issues.md @@ -23,7 +23,7 @@ The following options and functionality are incompatible with [`/fsanitize=addre - [C++ AMP](../parallel/amp/cpp-amp-overview.md) is unsupported, and should be disabled. - [Universal Windows Platform](../cppcx/universal-windows-apps-cpp.md) (UWP) applications are unsupported. - [Special case list](https://clang.llvm.org/docs/SanitizerSpecialCaseList.html) files are unsupported. -- [Precompiled headers built without `/fsanitize`address`](../build/creating-precompiled-header-files.md#consistency-rules-for-yc-and-yu) are unsupported. +- [Precompiled headers built without `/fsanitize=address`](../build/creating-precompiled-header-files.md#consistency-rules-for-yc-and-yu) are unsupported. ## Standard library support From cee9d1f561dfcad779dbe58f97d9862b2636a322 Mon Sep 17 00:00:00 2001 From: Dickson Mwendia <64727760+Dickson-Mwendia@users.noreply.github.com> Date: Wed, 30 Jul 2025 13:16:14 +0300 Subject: [PATCH 1207/2255] Add SFI ms.custom values --- docs/build/cmake-presets-vs.md | 1 + docs/build/cmake-projects-in-visual-studio.md | 1 + docs/build/get-started-linux-cmake.md | 1 + docs/build/vscpp-step-0-installation.md | 5 ++++- docs/build/vscpp-step-1-create.md | 4 +++- ...kthrough-creating-and-using-a-dynamic-link-library-cpp.md | 1 + .../build-an-opengl-es-application-on-android-and-ios.md | 1 + .../install-and-configure-tools-to-build-using-ios.md | 4 +++- docs/data/odbc/data-source-managing-connections-odbc.md | 1 + docs/data/oledb/crowsetimpl-class.md | 1 + docs/data/oledb/icommandpropertiesimpl-class.md | 1 + docs/data/oledb/irowsetcreatorimpl-class.md | 1 + docs/data/oledb/irowsetinfoimpl-class.md | 1 + docs/data/oledb/isessionpropertiesimpl-class.md | 1 + docs/data/oledb/ole-db-provider-templates-reference.md | 1 + docs/linux/configure-a-linux-project.md | 1 + docs/linux/connect-to-your-remote-linux-computer.md | 1 + docs/linux/deploy-run-and-debug-your-linux-project.md | 4 +++- .../set-up-fips-compliant-secure-remote-linux-development.md | 1 + docs/mfc/reference/cdaodatabase-class.md | 1 + docs/mfc/reference/cdaotabledef-class.md | 1 + docs/mfc/reference/cdaoworkspace-class.md | 1 + docs/mfc/reference/cdatabase-class.md | 1 + ...tn054-calling-dao-directly-while-using-mfc-dao-classes.md | 1 + docs/sanitizers/error-double-free.md | 1 + docs/windows/attributes/db-param.md | 1 + docs/windows/attributes/db-source.md | 1 + docs/windows/mfc-predefined-symbols.md | 1 + .../walkthrough-creating-windows-desktop-applications-cpp.md | 4 +++- 29 files changed, 40 insertions(+), 5 deletions(-) diff --git a/docs/build/cmake-presets-vs.md b/docs/build/cmake-presets-vs.md index d2d2f03f8a6..87d3fd71461 100644 --- a/docs/build/cmake-presets-vs.md +++ b/docs/build/cmake-presets-vs.md @@ -3,6 +3,7 @@ title: Configure and build with CMake Presets description: "Reference for using CMake Presets to configure and build CMake projects." ms.date: 06/09/2023 ms.topic: reference +ms.custom: sfi-image-nochange --- # Configure and build with CMake Presets in Visual Studio diff --git a/docs/build/cmake-projects-in-visual-studio.md b/docs/build/cmake-projects-in-visual-studio.md index 69b1bc18eeb..b56efcce7e5 100644 --- a/docs/build/cmake-projects-in-visual-studio.md +++ b/docs/build/cmake-projects-in-visual-studio.md @@ -4,6 +4,7 @@ description: "Learn how to create and build C++ projects using CMake in Visual S ms.date: 03/18/2025 ms.topic: concept-article f1_keywords: ["VS.ToolsOptionsPages.CMake.General", "VS.ToolsOptionsPages.CMake.LanguageServices"] +ms.custom: sfi-image-nochange --- # CMake projects in Visual Studio diff --git a/docs/build/get-started-linux-cmake.md b/docs/build/get-started-linux-cmake.md index 1ffb0fb6d25..b2f59a73810 100644 --- a/docs/build/get-started-linux-cmake.md +++ b/docs/build/get-started-linux-cmake.md @@ -3,6 +3,7 @@ title: Create C++ cross-platform projects in Visual Studio description: "How to set up, compile, and debug a C++ open-source CMake project in Visual Studio that targets both Linux and Windows." ms.topic: tutorial ms.date: 02/07/2022 +ms.custom: sfi-image-nochange --- # Tutorial: Create C++ cross-platform projects in Visual Studio diff --git a/docs/build/vscpp-step-0-installation.md b/docs/build/vscpp-step-0-installation.md index f6e9b8cea02..5ce61195dc8 100644 --- a/docs/build/vscpp-step-0-installation.md +++ b/docs/build/vscpp-step-0-installation.md @@ -1,10 +1,13 @@ --- title: Install C and C++ support in Visual Studio description: "Learn how to install Visual Studio with support for Microsoft C and C++ and related workloads." -ms.custom: vs-acquisition, intro-installation ms.date: 03/18/2025 ms.topic: tutorial ms.devlang: "cpp" +ms.custom: + - vs-acquisition + - intro-installation + - sfi-image-nochange --- # Install C and C++ support in Visual Studio diff --git a/docs/build/vscpp-step-1-create.md b/docs/build/vscpp-step-1-create.md index e4830eee922..1337c29d018 100644 --- a/docs/build/vscpp-step-1-create.md +++ b/docs/build/vscpp-step-1-create.md @@ -1,9 +1,11 @@ --- title: Create a C++ console app project description: "Create a Hello World console app using Microsoft C++ in Visual Studio." -ms.custom: "mvc" ms.date: 07/05/2023 ms.topic: "tutorial" +ms.custom: + - "mvc" + - sfi-image-nochange --- # Create a C++ console app project diff --git a/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md b/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md index ad06919a0cb..e777914ccdb 100644 --- a/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md +++ b/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md @@ -4,6 +4,7 @@ description: "Learn how to use C++ to create a Windows dynamic-link library (DLL ms.topic: tutorial ms.date: 03/17/2025 helpviewer_keywords: ["libraries [C++], DLLs", "DLLs [C++], walkthroughs"] +ms.custom: sfi-image-nochange --- # Walkthrough: Create and use your own dynamic-link library (C++) diff --git a/docs/cross-platform/build-an-opengl-es-application-on-android-and-ios.md b/docs/cross-platform/build-an-opengl-es-application-on-android-and-ios.md index 57ef6e63903..319b56d17d1 100644 --- a/docs/cross-platform/build-an-opengl-es-application-on-android-and-ios.md +++ b/docs/cross-platform/build-an-opengl-es-application-on-android-and-ios.md @@ -3,6 +3,7 @@ description: "Learn more about: Build an OpenGL ES application on Android and iO title: "Build an OpenGL ES application on Android and iOS" ms.date: "06/09/2023" ms.topic: how-to +ms.custom: sfi-image-nochange --- # Build an OpenGL ES application on Android and iOS diff --git a/docs/cross-platform/install-and-configure-tools-to-build-using-ios.md b/docs/cross-platform/install-and-configure-tools-to-build-using-ios.md index 65b0c66fcd0..4e7f878b3a2 100644 --- a/docs/cross-platform/install-and-configure-tools-to-build-using-ios.md +++ b/docs/cross-platform/install-and-configure-tools-to-build-using-ios.md @@ -3,8 +3,10 @@ description: "Learn more about: Install and configure tools to build using iOS" title: "Install and configure tools to build using iOS" ms.date: 12/18/2022 ms.assetid: d0c311c9-9eb9-42c5-ba07-25604362cd28 -ms.custom: intro-installation ms.topic: install-set-up-deploy +ms.custom: + - intro-installation + - sfi-image-nochange --- # Install and configure tools to build using iOS diff --git a/docs/data/odbc/data-source-managing-connections-odbc.md b/docs/data/odbc/data-source-managing-connections-odbc.md index 3c08f7c6a11..8667ed49931 100644 --- a/docs/data/odbc/data-source-managing-connections-odbc.md +++ b/docs/data/odbc/data-source-managing-connections-odbc.md @@ -4,6 +4,7 @@ title: "Data Source: Managing Connections (ODBC)" ms.date: "11/04/2016" helpviewer_keywords: ["ODBC data sources [C++], multiuser environments", "generalizing connection strings", "ODBC [C++], disconnecting from data sources", "connection strings [C++], generalizing", "database connections [C++], creating", "GetDefaultConnect method", "connections [C++], data source", "ODBC connections [C++], configuring", "disconnecting from data sources", "databases [C++], connecting to", "ODBC connections [C++], disconnecting", "data sources [C++], connecting to", "ODBC connections [C++], connecting to data source", "ODBC data sources [C++], connections", "database connections [C++], MFC ODBC classes"] ms.assetid: c0adbcdd-c000-40c6-b199-09ffdc7b6ef2 +ms.custom: sfi-ropc-nochange --- # Data Source: Managing Connections (ODBC) diff --git a/docs/data/oledb/crowsetimpl-class.md b/docs/data/oledb/crowsetimpl-class.md index e83271fca53..ee3884e6daa 100644 --- a/docs/data/oledb/crowsetimpl-class.md +++ b/docs/data/oledb/crowsetimpl-class.md @@ -5,6 +5,7 @@ ms.date: "11/04/2016" f1_keywords: ["CRowsetImpl", "ATL.CRowsetImpl", "ATL::CRowsetImpl", "CRowsetImpl.NameFromDBID", "CRowsetImpl::NameFromDBID", "CRowsetImpl.SetCommandText", "CRowsetImpl::SetCommandText", "CRowsetImpl.GetColumnInfo", "CRowsetImpl::GetColumnInfo", "CRowsetImpl::GetCommandFromID", "GetCommandFromID", "CRowsetImpl.GetCommandFromID", "CRowsetImpl.ValidateCommandID", "CRowsetImpl::ValidateCommandID", "CRowsetImpl.m_rgRowData", "CRowsetImpl::m_rgRowData", "CRowsetImpl::m_strCommandText", "CRowsetImpl.m_strCommandText", "CRowsetImpl::m_strIndexText", "CRowsetImpl.m_strIndexText"] helpviewer_keywords: ["CRowsetImpl class", "NameFromDBID method", "SetCommandText method", "GetColumnInfo method", "GetCommandFromID method", "ValidateCommandID method", "m_rgRowData", "m_strCommandText", "m_strIndexText"] ms.assetid: e97614b3-b11d-4806-a0d3-b9401331473f +ms.custom: sfi-ropc-nochange --- # CRowsetImpl Class diff --git a/docs/data/oledb/icommandpropertiesimpl-class.md b/docs/data/oledb/icommandpropertiesimpl-class.md index 3d50ed3c85f..2b1694ea7c9 100644 --- a/docs/data/oledb/icommandpropertiesimpl-class.md +++ b/docs/data/oledb/icommandpropertiesimpl-class.md @@ -5,6 +5,7 @@ ms.date: "11/04/2016" f1_keywords: ["ICommandPropertiesImpl", "ATL.ICommandPropertiesImpl", "ATL::ICommandPropertiesImpl", "ICommandPropertiesImpl::GetProperties", "ICommandPropertiesImpl.GetProperties", "ICommandPropertiesImpl.SetProperties", "ICommandPropertiesImpl::SetProperties"] helpviewer_keywords: ["ICommandPropertiesImpl class", "GetProperties method", "SetProperties method"] ms.assetid: b3cf6aea-527e-4f0d-96e0-669178b021a2 +ms.custom: sfi-ropc-nochange --- # ICommandPropertiesImpl Class diff --git a/docs/data/oledb/irowsetcreatorimpl-class.md b/docs/data/oledb/irowsetcreatorimpl-class.md index 542a3dffabe..8fb9c33eabd 100644 --- a/docs/data/oledb/irowsetcreatorimpl-class.md +++ b/docs/data/oledb/irowsetcreatorimpl-class.md @@ -5,6 +5,7 @@ ms.date: "11/04/2016" f1_keywords: ["ATL::IRowsetCreatorImpl", "ATL.IRowsetCreatorImpl", "ATL::IRowsetCreatorImpl", "ATL.IRowsetCreatorImpl", "IRowsetCreatorImpl", "IRowsetCreatorImpl.SetSite", "IRowsetCreatorImpl::SetSite", "IRowsetCreatorImpl::SetSite", "SetSite", "ATL.IRowsetCreatorImpl.SetSite", "ATL::IRowsetCreatorImpl::SetSite", "ATL::IRowsetCreatorImpl::SetSite", "ATL.IRowsetCreatorImpl.SetSite"] helpviewer_keywords: ["IRowsetCreatorImpl class", "SetSite method"] ms.assetid: 92cc950f-7978-4754-8d9a-defa63867d82 +ms.custom: sfi-ropc-nochange --- # IRowsetCreatorImpl Class diff --git a/docs/data/oledb/irowsetinfoimpl-class.md b/docs/data/oledb/irowsetinfoimpl-class.md index d05de7876df..d5f545e3bb7 100644 --- a/docs/data/oledb/irowsetinfoimpl-class.md +++ b/docs/data/oledb/irowsetinfoimpl-class.md @@ -5,6 +5,7 @@ ms.date: "11/04/2016" f1_keywords: ["ATL.IRowsetInfoImpl", "IRowsetInfoImpl", "ATL::IRowsetInfoImpl", "ATL.IRowsetInfoImpl.GetProperties", "IRowsetInfoImpl.GetProperties", "ATL::IRowsetInfoImpl::GetProperties", "IRowsetInfoImpl::GetProperties", "ATL::IRowsetInfoImpl::GetReferencedRowset", "GetReferencedRowset", "ATL.IRowsetInfoImpl.GetReferencedRowset", "IRowsetInfoImpl.GetReferencedRowset", "IRowsetInfoImpl::GetReferencedRowset", "IRowsetInfoImpl::GetSpecification", "ATL.IRowsetInfoImpl.GetSpecification", "IRowsetInfoImpl.GetSpecification", "GetSpecification", "ATL::IRowsetInfoImpl::GetSpecification"] helpviewer_keywords: ["IRowsetInfoImpl class", "GetProperties method", "GetReferencedRowset method", "GetSpecification method"] ms.assetid: 9c654155-7727-464e-bd31-143e68391a47 +ms.custom: sfi-ropc-nochange --- # IRowsetInfoImpl Class diff --git a/docs/data/oledb/isessionpropertiesimpl-class.md b/docs/data/oledb/isessionpropertiesimpl-class.md index 89043502938..5818498c6e9 100644 --- a/docs/data/oledb/isessionpropertiesimpl-class.md +++ b/docs/data/oledb/isessionpropertiesimpl-class.md @@ -5,6 +5,7 @@ ms.date: "11/04/2016" f1_keywords: ["ISessionPropertiesImpl", "ISessionPropertiesImpl::GetProperties", "ISessionPropertiesImpl.GetProperties", "ISessionPropertiesImpl.SetProperties", "ISessionPropertiesImpl::SetProperties"] helpviewer_keywords: ["ISessionPropertiesImpl class", "GetProperties method", "SetProperties method"] ms.assetid: ca0ba254-c7dc-4c52-abec-cf895a0c6a63 +ms.custom: sfi-ropc-nochange --- # ISessionPropertiesImpl Class diff --git a/docs/data/oledb/ole-db-provider-templates-reference.md b/docs/data/oledb/ole-db-provider-templates-reference.md index 8e4f8167f9f..ba16a0f8a26 100644 --- a/docs/data/oledb/ole-db-provider-templates-reference.md +++ b/docs/data/oledb/ole-db-provider-templates-reference.md @@ -4,6 +4,7 @@ title: "OLE DB Provider Templates Reference" ms.date: "11/04/2016" helpviewer_keywords: ["OLE DB provider templates"] ms.assetid: 518358f0-bab1-4de9-bce9-4062cc87c11f +ms.custom: sfi-ropc-nochange --- # OLE DB Provider Templates Reference diff --git a/docs/linux/configure-a-linux-project.md b/docs/linux/configure-a-linux-project.md index 88ef152274b..ac65f32b525 100644 --- a/docs/linux/configure-a-linux-project.md +++ b/docs/linux/configure-a-linux-project.md @@ -3,6 +3,7 @@ title: "Configure a Linux MSBuild C++ project in Visual Studio" ms.date: "10/16/2020" description: "Configure a MSBuild-based Linux project in Visual Studio so you can build it." ms.assetid: 4d7c6adf-54b9-4b23-bd23-5de0c825b768 +ms.custom: sfi-image-nochange --- # Configure a Linux MSBuild C++ project in Visual Studio diff --git a/docs/linux/connect-to-your-remote-linux-computer.md b/docs/linux/connect-to-your-remote-linux-computer.md index 5803f75c496..0ffc8a5aba9 100644 --- a/docs/linux/connect-to-your-remote-linux-computer.md +++ b/docs/linux/connect-to-your-remote-linux-computer.md @@ -3,6 +3,7 @@ title: "Connect to a Target Linux System by Using Visual Studio" description: "Learn how to connect to a remote Linux machine or Windows Subsystem for Linux from inside a Visual Studio C++ project." ms.topic: tutorial ms.date: 03/21/2025 +ms.custom: sfi-image-nochange --- # Connect to your remote Linux system by using Visual Studio diff --git a/docs/linux/deploy-run-and-debug-your-linux-project.md b/docs/linux/deploy-run-and-debug-your-linux-project.md index e52bfcd132d..999f3e19c0d 100644 --- a/docs/linux/deploy-run-and-debug-your-linux-project.md +++ b/docs/linux/deploy-run-and-debug-your-linux-project.md @@ -2,7 +2,9 @@ title: "Deploy, run, and debug your Linux MSBuild C++ project in Visual Studio" description: "Describes how to compile, execute, and debug code on the remote target from inside a MSBuild-based Linux C++ project in Visual Studio." ms.date: 12/5/2024 -ms.custom: intro-deployment +ms.custom: + - intro-deployment + - sfi-image-nochange --- # Deploy, run, and debug your Linux MSBuild project diff --git a/docs/linux/set-up-fips-compliant-secure-remote-linux-development.md b/docs/linux/set-up-fips-compliant-secure-remote-linux-development.md index b3581863766..0faf68ed871 100644 --- a/docs/linux/set-up-fips-compliant-secure-remote-linux-development.md +++ b/docs/linux/set-up-fips-compliant-secure-remote-linux-development.md @@ -3,6 +3,7 @@ title: "Set up FIPS-compliant secure remote Linux development" description: "How to set up a FIPS-compliant cryptographic connection between Visual Studio and a Linux machine for remote development." ms.date: 07/06/2022 ms.topic: how-to +ms.custom: sfi-image-nochange --- # Set up FIPS-compliant secure remote Linux development diff --git a/docs/mfc/reference/cdaodatabase-class.md b/docs/mfc/reference/cdaodatabase-class.md index a59cea4963d..f1b5b85af32 100644 --- a/docs/mfc/reference/cdaodatabase-class.md +++ b/docs/mfc/reference/cdaodatabase-class.md @@ -4,6 +4,7 @@ title: "CDaoDatabase Class" ms.date: "09/17/2019" f1_keywords: ["CDaoDatabase", "AFXDAO/CDaoDatabase", "AFXDAO/CDaoDatabase::CDaoDatabase", "AFXDAO/CDaoDatabase::CanTransact", "AFXDAO/CDaoDatabase::CanUpdate", "AFXDAO/CDaoDatabase::Close", "AFXDAO/CDaoDatabase::Create", "AFXDAO/CDaoDatabase::CreateRelation", "AFXDAO/CDaoDatabase::DeleteQueryDef", "AFXDAO/CDaoDatabase::DeleteRelation", "AFXDAO/CDaoDatabase::DeleteTableDef", "AFXDAO/CDaoDatabase::Execute", "AFXDAO/CDaoDatabase::GetConnect", "AFXDAO/CDaoDatabase::GetName", "AFXDAO/CDaoDatabase::GetQueryDefCount", "AFXDAO/CDaoDatabase::GetQueryDefInfo", "AFXDAO/CDaoDatabase::GetQueryTimeout", "AFXDAO/CDaoDatabase::GetRecordsAffected", "AFXDAO/CDaoDatabase::GetRelationCount", "AFXDAO/CDaoDatabase::GetRelationInfo", "AFXDAO/CDaoDatabase::GetTableDefCount", "AFXDAO/CDaoDatabase::GetTableDefInfo", "AFXDAO/CDaoDatabase::GetVersion", "AFXDAO/CDaoDatabase::IsOpen", "AFXDAO/CDaoDatabase::Open", "AFXDAO/CDaoDatabase::SetQueryTimeout", "AFXDAO/CDaoDatabase::m_pDAODatabase", "AFXDAO/CDaoDatabase::m_pWorkspace"] helpviewer_keywords: ["CDaoDatabase [MFC], CDaoDatabase", "CDaoDatabase [MFC], CanTransact", "CDaoDatabase [MFC], CanUpdate", "CDaoDatabase [MFC], Close", "CDaoDatabase [MFC], Create", "CDaoDatabase [MFC], CreateRelation", "CDaoDatabase [MFC], DeleteQueryDef", "CDaoDatabase [MFC], DeleteRelation", "CDaoDatabase [MFC], DeleteTableDef", "CDaoDatabase [MFC], Execute", "CDaoDatabase [MFC], GetConnect", "CDaoDatabase [MFC], GetName", "CDaoDatabase [MFC], GetQueryDefCount", "CDaoDatabase [MFC], GetQueryDefInfo", "CDaoDatabase [MFC], GetQueryTimeout", "CDaoDatabase [MFC], GetRecordsAffected", "CDaoDatabase [MFC], GetRelationCount", "CDaoDatabase [MFC], GetRelationInfo", "CDaoDatabase [MFC], GetTableDefCount", "CDaoDatabase [MFC], GetTableDefInfo", "CDaoDatabase [MFC], GetVersion", "CDaoDatabase [MFC], IsOpen", "CDaoDatabase [MFC], Open", "CDaoDatabase [MFC], SetQueryTimeout", "CDaoDatabase [MFC], m_pDAODatabase", "CDaoDatabase [MFC], m_pWorkspace"] +ms.custom: sfi-ropc-nochange --- # CDaoDatabase Class diff --git a/docs/mfc/reference/cdaotabledef-class.md b/docs/mfc/reference/cdaotabledef-class.md index 5ad89da173c..8e9f63fcc55 100644 --- a/docs/mfc/reference/cdaotabledef-class.md +++ b/docs/mfc/reference/cdaotabledef-class.md @@ -4,6 +4,7 @@ title: "CDaoTableDef Class" ms.date: "11/04/2016" f1_keywords: ["CDaoTableDef", "AFXDAO/CDaoTableDef", "AFXDAO/CDaoTableDef::CDaoTableDef", "AFXDAO/CDaoTableDef::Append", "AFXDAO/CDaoTableDef::CanUpdate", "AFXDAO/CDaoTableDef::Close", "AFXDAO/CDaoTableDef::Create", "AFXDAO/CDaoTableDef::CreateField", "AFXDAO/CDaoTableDef::CreateIndex", "AFXDAO/CDaoTableDef::DeleteField", "AFXDAO/CDaoTableDef::DeleteIndex", "AFXDAO/CDaoTableDef::GetAttributes", "AFXDAO/CDaoTableDef::GetConnect", "AFXDAO/CDaoTableDef::GetDateCreated", "AFXDAO/CDaoTableDef::GetDateLastUpdated", "AFXDAO/CDaoTableDef::GetFieldCount", "AFXDAO/CDaoTableDef::GetFieldInfo", "AFXDAO/CDaoTableDef::GetIndexCount", "AFXDAO/CDaoTableDef::GetIndexInfo", "AFXDAO/CDaoTableDef::GetName", "AFXDAO/CDaoTableDef::GetRecordCount", "AFXDAO/CDaoTableDef::GetSourceTableName", "AFXDAO/CDaoTableDef::GetValidationRule", "AFXDAO/CDaoTableDef::GetValidationText", "AFXDAO/CDaoTableDef::IsOpen", "AFXDAO/CDaoTableDef::Open", "AFXDAO/CDaoTableDef::RefreshLink", "AFXDAO/CDaoTableDef::SetAttributes", "AFXDAO/CDaoTableDef::SetConnect", "AFXDAO/CDaoTableDef::SetName", "AFXDAO/CDaoTableDef::SetSourceTableName", "AFXDAO/CDaoTableDef::SetValidationRule", "AFXDAO/CDaoTableDef::SetValidationText", "AFXDAO/CDaoTableDef::m_pDAOTableDef", "AFXDAO/CDaoTableDef::m_pDatabase"] helpviewer_keywords: ["CDaoTableDef [MFC], CDaoTableDef", "CDaoTableDef [MFC], Append", "CDaoTableDef [MFC], CanUpdate", "CDaoTableDef [MFC], Close", "CDaoTableDef [MFC], Create", "CDaoTableDef [MFC], CreateField", "CDaoTableDef [MFC], CreateIndex", "CDaoTableDef [MFC], DeleteField", "CDaoTableDef [MFC], DeleteIndex", "CDaoTableDef [MFC], GetAttributes", "CDaoTableDef [MFC], GetConnect", "CDaoTableDef [MFC], GetDateCreated", "CDaoTableDef [MFC], GetDateLastUpdated", "CDaoTableDef [MFC], GetFieldCount", "CDaoTableDef [MFC], GetFieldInfo", "CDaoTableDef [MFC], GetIndexCount", "CDaoTableDef [MFC], GetIndexInfo", "CDaoTableDef [MFC], GetName", "CDaoTableDef [MFC], GetRecordCount", "CDaoTableDef [MFC], GetSourceTableName", "CDaoTableDef [MFC], GetValidationRule", "CDaoTableDef [MFC], GetValidationText", "CDaoTableDef [MFC], IsOpen", "CDaoTableDef [MFC], Open", "CDaoTableDef [MFC], RefreshLink", "CDaoTableDef [MFC], SetAttributes", "CDaoTableDef [MFC], SetConnect", "CDaoTableDef [MFC], SetName", "CDaoTableDef [MFC], SetSourceTableName", "CDaoTableDef [MFC], SetValidationRule", "CDaoTableDef [MFC], SetValidationText", "CDaoTableDef [MFC], m_pDAOTableDef", "CDaoTableDef [MFC], m_pDatabase"] +ms.custom: sfi-ropc-nochange --- # CDaoTableDef Class diff --git a/docs/mfc/reference/cdaoworkspace-class.md b/docs/mfc/reference/cdaoworkspace-class.md index 777678f429c..0f1ddba2a65 100644 --- a/docs/mfc/reference/cdaoworkspace-class.md +++ b/docs/mfc/reference/cdaoworkspace-class.md @@ -4,6 +4,7 @@ title: "CDaoWorkspace Class" ms.date: "11/04/2016" f1_keywords: ["CDaoWorkspace", "AFXDAO/CDaoWorkspace", "AFXDAO/CDaoWorkspace::CDaoWorkspace", "AFXDAO/CDaoWorkspace::Append", "AFXDAO/CDaoWorkspace::BeginTrans", "AFXDAO/CDaoWorkspace::Close", "AFXDAO/CDaoWorkspace::CommitTrans", "AFXDAO/CDaoWorkspace::CompactDatabase", "AFXDAO/CDaoWorkspace::Create", "AFXDAO/CDaoWorkspace::GetDatabaseCount", "AFXDAO/CDaoWorkspace::GetDatabaseInfo", "AFXDAO/CDaoWorkspace::GetIniPath", "AFXDAO/CDaoWorkspace::GetIsolateODBCTrans", "AFXDAO/CDaoWorkspace::GetLoginTimeout", "AFXDAO/CDaoWorkspace::GetName", "AFXDAO/CDaoWorkspace::GetUserName", "AFXDAO/CDaoWorkspace::GetVersion", "AFXDAO/CDaoWorkspace::GetWorkspaceCount", "AFXDAO/CDaoWorkspace::GetWorkspaceInfo", "AFXDAO/CDaoWorkspace::Idle", "AFXDAO/CDaoWorkspace::IsOpen", "AFXDAO/CDaoWorkspace::Open", "AFXDAO/CDaoWorkspace::RepairDatabase", "AFXDAO/CDaoWorkspace::Rollback", "AFXDAO/CDaoWorkspace::SetDefaultPassword", "AFXDAO/CDaoWorkspace::SetDefaultUser", "AFXDAO/CDaoWorkspace::SetIniPath", "AFXDAO/CDaoWorkspace::SetIsolateODBCTrans", "AFXDAO/CDaoWorkspace::SetLoginTimeout", "AFXDAO/CDaoWorkspace::m_pDAOWorkspace"] helpviewer_keywords: ["CDaoWorkspace [MFC], CDaoWorkspace", "CDaoWorkspace [MFC], Append", "CDaoWorkspace [MFC], BeginTrans", "CDaoWorkspace [MFC], Close", "CDaoWorkspace [MFC], CommitTrans", "CDaoWorkspace [MFC], CompactDatabase", "CDaoWorkspace [MFC], Create", "CDaoWorkspace [MFC], GetDatabaseCount", "CDaoWorkspace [MFC], GetDatabaseInfo", "CDaoWorkspace [MFC], GetIniPath", "CDaoWorkspace [MFC], GetIsolateODBCTrans", "CDaoWorkspace [MFC], GetLoginTimeout", "CDaoWorkspace [MFC], GetName", "CDaoWorkspace [MFC], GetUserName", "CDaoWorkspace [MFC], GetVersion", "CDaoWorkspace [MFC], GetWorkspaceCount", "CDaoWorkspace [MFC], GetWorkspaceInfo", "CDaoWorkspace [MFC], Idle", "CDaoWorkspace [MFC], IsOpen", "CDaoWorkspace [MFC], Open", "CDaoWorkspace [MFC], RepairDatabase", "CDaoWorkspace [MFC], Rollback", "CDaoWorkspace [MFC], SetDefaultPassword", "CDaoWorkspace [MFC], SetDefaultUser", "CDaoWorkspace [MFC], SetIniPath", "CDaoWorkspace [MFC], SetIsolateODBCTrans", "CDaoWorkspace [MFC], SetLoginTimeout", "CDaoWorkspace [MFC], m_pDAOWorkspace"] +ms.custom: sfi-ropc-nochange --- # CDaoWorkspace Class diff --git a/docs/mfc/reference/cdatabase-class.md b/docs/mfc/reference/cdatabase-class.md index 77fb3fd71c9..7258c18594b 100644 --- a/docs/mfc/reference/cdatabase-class.md +++ b/docs/mfc/reference/cdatabase-class.md @@ -4,6 +4,7 @@ title: "CDatabase Class" ms.date: "11/04/2016" f1_keywords: ["CDatabase", "AFXDB/CDatabase", "AFXDB/CDatabase::CDatabase", "AFXDB/CDatabase::BeginTrans", "AFXDB/CDatabase::BindParameters", "AFXDB/CDatabase::Cancel", "AFXDB/CDatabase::CanTransact", "AFXDB/CDatabase::CanUpdate", "AFXDB/CDatabase::Close", "AFXDB/CDatabase::CommitTrans", "AFXDB/CDatabase::ExecuteSQL", "AFXDB/CDatabase::GetBookmarkPersistence", "AFXDB/CDatabase::GetConnect", "AFXDB/CDatabase::GetCursorCommitBehavior", "AFXDB/CDatabase::GetCursorRollbackBehavior", "AFXDB/CDatabase::GetDatabaseName", "AFXDB/CDatabase::IsOpen", "AFXDB/CDatabase::OnSetOptions", "AFXDB/CDatabase::Open", "AFXDB/CDatabase::OpenEx", "AFXDB/CDatabase::Rollback", "AFXDB/CDatabase::SetLoginTimeout", "AFXDB/CDatabase::SetQueryTimeout", "AFXDB/CDatabase::m_hdbc"] helpviewer_keywords: ["CDatabase [MFC], CDatabase", "CDatabase [MFC], BeginTrans", "CDatabase [MFC], BindParameters", "CDatabase [MFC], Cancel", "CDatabase [MFC], CanTransact", "CDatabase [MFC], CanUpdate", "CDatabase [MFC], Close", "CDatabase [MFC], CommitTrans", "CDatabase [MFC], ExecuteSQL", "CDatabase [MFC], GetBookmarkPersistence", "CDatabase [MFC], GetConnect", "CDatabase [MFC], GetCursorCommitBehavior", "CDatabase [MFC], GetCursorRollbackBehavior", "CDatabase [MFC], GetDatabaseName", "CDatabase [MFC], IsOpen", "CDatabase [MFC], OnSetOptions", "CDatabase [MFC], Open", "CDatabase [MFC], OpenEx", "CDatabase [MFC], Rollback", "CDatabase [MFC], SetLoginTimeout", "CDatabase [MFC], SetQueryTimeout", "CDatabase [MFC], m_hdbc"] +ms.custom: sfi-ropc-nochange --- # `CDatabase` Class diff --git a/docs/mfc/tn054-calling-dao-directly-while-using-mfc-dao-classes.md b/docs/mfc/tn054-calling-dao-directly-while-using-mfc-dao-classes.md index 02a2e7b5061..c17812d54ab 100644 --- a/docs/mfc/tn054-calling-dao-directly-while-using-mfc-dao-classes.md +++ b/docs/mfc/tn054-calling-dao-directly-while-using-mfc-dao-classes.md @@ -4,6 +4,7 @@ title: "TN054: Calling DAO Directly While Using MFC DAO Classes" ms.date: "09/17/2019" helpviewer_keywords: ["MFC, DAO and", "passwords [MFC], calling DAO", "security [MFC], DAO", "DAO (Data Access Objects), calling directly", "DAO (Data Access Objects), security", "security [MFC]", "TN054", "DAO (Data Access Objects), and MFC"] ms.assetid: f7de7d85-8d6c-4426-aa05-2e617c0da957 +ms.custom: sfi-ropc-nochange --- # TN054: Calling DAO Directly While Using MFC DAO Classes diff --git a/docs/sanitizers/error-double-free.md b/docs/sanitizers/error-double-free.md index 099c9706eca..84b4dd42741 100644 --- a/docs/sanitizers/error-double-free.md +++ b/docs/sanitizers/error-double-free.md @@ -4,6 +4,7 @@ description: "Learn about the double-free Address Sanitizer error." ms.date: 03/02/2021 f1_keywords: ["double-free"] helpviewer_keywords: ["double-free error", "AddressSanitizer error double-free"] +ms.custom: sfi-image-nochange --- # Error: `double-free` diff --git a/docs/windows/attributes/db-param.md b/docs/windows/attributes/db-param.md index 51538ad0a29..cebb586d5d6 100644 --- a/docs/windows/attributes/db-param.md +++ b/docs/windows/attributes/db-param.md @@ -5,6 +5,7 @@ ms.date: "10/02/2018" f1_keywords: ["vc-attr.db_param"] helpviewer_keywords: ["db_param attribute"] ms.assetid: a28315f5-4722-459e-92ef-32e83c0b205a +ms.custom: sfi-ropc-nochange --- # db_param diff --git a/docs/windows/attributes/db-source.md b/docs/windows/attributes/db-source.md index 4b5d1ff5a7b..d54e30f8a4f 100644 --- a/docs/windows/attributes/db-source.md +++ b/docs/windows/attributes/db-source.md @@ -5,6 +5,7 @@ ms.date: "10/02/2018" f1_keywords: ["vc-attr.db_source"] helpviewer_keywords: ["db_source attribute"] ms.assetid: 0ec8bbf7-ade2-4899-bf4c-8608b92779bc +ms.custom: sfi-ropc-nochange --- # db_source diff --git a/docs/windows/mfc-predefined-symbols.md b/docs/windows/mfc-predefined-symbols.md index e245d89aa44..17de2a0e82f 100644 --- a/docs/windows/mfc-predefined-symbols.md +++ b/docs/windows/mfc-predefined-symbols.md @@ -4,6 +4,7 @@ title: "MFC Predefined Symbols" ms.date: "02/14/2019" helpviewer_keywords: ["MFC symbols", "symbols [C++], MFC", "MFC database programming symbols", "symbols [C++], MFC", "databases [C++], MFC programming model", "Windows programming MFC symbols [C++]"] ms.assetid: c1e689c4-45d7-40a3-8ee9-f47676cc3bbb +ms.custom: sfi-ropc-nochange --- # MFC Predefined Symbols diff --git a/docs/windows/walkthrough-creating-windows-desktop-applications-cpp.md b/docs/windows/walkthrough-creating-windows-desktop-applications-cpp.md index a3b89d0b50b..e156b5e7b47 100644 --- a/docs/windows/walkthrough-creating-windows-desktop-applications-cpp.md +++ b/docs/windows/walkthrough-creating-windows-desktop-applications-cpp.md @@ -1,10 +1,12 @@ --- title: "Create a Traditional Windows Desktop Application (C++)" description: "Learn how to create a minimal, traditional Windows desktop application using Visual Studio, C++, and the Win32 API." -ms.custom: "get-started-article" ms.topic: tutorial ms.date: 03/17/2025 helpviewer_keywords: ["Windows applications [C++], Win32", "Windows Desktop applications [C++]", "Windows API [C++]"] +ms.custom: + - "get-started-article" + - sfi-image-nochange --- # Walkthrough: Create a traditional Windows desktop application (C++) From 041cc0fa271055a42891d23288f0ce3a40492d8b Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 30 Jul 2025 18:25:38 +0800 Subject: [PATCH 1208/2255] Add leading sentence in `` functions reference --- docs/standard-library/thread-functions.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/standard-library/thread-functions.md b/docs/standard-library/thread-functions.md index eea1f7215e9..290e9064dbc 100644 --- a/docs/standard-library/thread-functions.md +++ b/docs/standard-library/thread-functions.md @@ -8,6 +8,8 @@ helpviewer_keywords: ["std::get_id [C++]", "std::sleep_for [C++]", "std::sleep_u --- # `` functions +The `` header provides the following functions: + ## get_id Uniquely identifies the current thread of execution. From 56f1e26612b58ba39855a93c291f74ef5c4da9cd Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 30 Jul 2025 18:28:18 +0800 Subject: [PATCH 1209/2255] Add backticks in `` functions reference --- docs/standard-library/thread-functions.md | 26 +++++++++++------------ 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/standard-library/thread-functions.md b/docs/standard-library/thread-functions.md index 290e9064dbc..4d7f97442ae 100644 --- a/docs/standard-library/thread-functions.md +++ b/docs/standard-library/thread-functions.md @@ -10,7 +10,7 @@ helpviewer_keywords: ["std::get_id [C++]", "std::sleep_for [C++]", "std::sleep_u The `` header provides the following functions: -## get_id +## `get_id` Uniquely identifies the current thread of execution. @@ -20,9 +20,9 @@ thread::id this_thread::get_id() noexcept; ### Return Value -An object of type [thread::id](../standard-library/thread-class.md) that uniquely identifies the current thread of execution. +An object of type [`thread::id`](../standard-library/thread-class.md) that uniquely identifies the current thread of execution. -## sleep_for +## `sleep_for` Blocks the calling thread. @@ -34,14 +34,14 @@ inline void sleep_for(const chrono::duration& Rel_time); ### Parameters -*Rel_time*\ -A [duration](../standard-library/duration-class.md) object that specifies a time interval. +*`Rel_time`*\ +A [`duration`](../standard-library/duration-class.md) object that specifies a time interval. ### Remarks -The function blocks the calling thread for at least the time that's specified by *Rel_time*. This function does not throw any exceptions. +The function blocks the calling thread for at least the time that's specified by *`Rel_time`*. This function does not throw any exceptions. -## sleep_until +## `sleep_until` Blocks the calling thread at least until the specified time. @@ -54,14 +54,14 @@ void sleep_until(const xtime *Abs_time); ### Parameters -*Abs_time*\ +*`Abs_time`*\ Represents a point in time. ### Remarks This function does not throw any exceptions. -## swap +## `swap` Swaps the states of two `thread` objects. @@ -71,17 +71,17 @@ void swap(thread& Left, thread& Right) noexcept; ### Parameters -*Left*\ +*`Left`*\ The left `thread` object. -*Right*\ +*`Right`*\ The right `thread` object. ### Remarks The function calls `Left.swap(Right)`. -## yield +## `yield` Signals the operating system to run other threads, even if the current thread would ordinarily continue to run. @@ -91,4 +91,4 @@ inline void yield() noexcept; ## See also -[\](../standard-library/thread.md) +[``](../standard-library/thread.md) From ffbcdd6d905c9e057c1b1c5b7c47d639627a18cd Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 30 Jul 2025 18:29:58 +0800 Subject: [PATCH 1210/2255] Simplify and improve links in `` functions reference --- docs/standard-library/thread-functions.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/standard-library/thread-functions.md b/docs/standard-library/thread-functions.md index 4d7f97442ae..7a69dbea319 100644 --- a/docs/standard-library/thread-functions.md +++ b/docs/standard-library/thread-functions.md @@ -20,7 +20,7 @@ thread::id this_thread::get_id() noexcept; ### Return Value -An object of type [`thread::id`](../standard-library/thread-class.md) that uniquely identifies the current thread of execution. +An object of type [`thread::id`](thread-class.md#id_class) that uniquely identifies the current thread of execution. ## `sleep_for` @@ -35,7 +35,7 @@ inline void sleep_for(const chrono::duration& Rel_time); ### Parameters *`Rel_time`*\ -A [`duration`](../standard-library/duration-class.md) object that specifies a time interval. +A [`duration`](duration-class.md) object that specifies a time interval. ### Remarks @@ -91,4 +91,4 @@ inline void yield() noexcept; ## See also -[``](../standard-library/thread.md) +[``](thread.md) From a7e44972b0f473d50acf6986e31403bee101c32f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 30 Jul 2025 18:37:00 +0800 Subject: [PATCH 1211/2255] Add basic example for `std::this_thread::get_id` in `` functions reference --- docs/standard-library/thread-functions.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docs/standard-library/thread-functions.md b/docs/standard-library/thread-functions.md index 7a69dbea319..ae8de116851 100644 --- a/docs/standard-library/thread-functions.md +++ b/docs/standard-library/thread-functions.md @@ -22,6 +22,23 @@ thread::id this_thread::get_id() noexcept; An object of type [`thread::id`](thread-class.md#id_class) that uniquely identifies the current thread of execution. +### Example + +```cpp +#include +#include + +int main() +{ + std::thread::id current_thread_id = std::this_thread::get_id(); + std::cout << "Current thread id: " << current_thread_id; +} +``` + +```Output +Current thread id: 16196 +``` + ## `sleep_for` Blocks the calling thread. From 0b4c1b4927a1b946daf17dcc78abbcaf26715438 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 30 Jul 2025 18:46:51 +0800 Subject: [PATCH 1212/2255] Update syntax in `` functions reference --- docs/standard-library/thread-functions.md | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/docs/standard-library/thread-functions.md b/docs/standard-library/thread-functions.md index ae8de116851..6f5cae74d5d 100644 --- a/docs/standard-library/thread-functions.md +++ b/docs/standard-library/thread-functions.md @@ -44,9 +44,8 @@ Current thread id: 16196 Blocks the calling thread. ```cpp -template -inline void sleep_for(const chrono::duration& Rel_time); +template +void this_thread::sleep_for(const chrono::duration& Rel_time); ``` ### Parameters @@ -64,9 +63,7 @@ Blocks the calling thread at least until the specified time. ```cpp template -void sleep_until(const chrono::time_point& Abs_time); - -void sleep_until(const xtime *Abs_time); +void this_thread::sleep_until(const chrono::time_point& Abs_time); ``` ### Parameters @@ -103,7 +100,7 @@ The function calls `Left.swap(Right)`. Signals the operating system to run other threads, even if the current thread would ordinarily continue to run. ```cpp -inline void yield() noexcept; +inline void this_thread::yield() noexcept; ``` ## See also From d813e3922814006c9a0cb34c5bbc01a280ea67f5 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 30 Jul 2025 18:50:42 +0800 Subject: [PATCH 1213/2255] Update metadata in `` functions reference --- docs/standard-library/thread-functions.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/standard-library/thread-functions.md b/docs/standard-library/thread-functions.md index 6f5cae74d5d..2cba283ccc7 100644 --- a/docs/standard-library/thread-functions.md +++ b/docs/standard-library/thread-functions.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: functions" title: " functions" -ms.date: "11/04/2016" +description: "Learn more about: functions" +ms.date: 11/04/2016 f1_keywords: ["thread/std::get_id", "thread/std::sleep_for", "thread/std::sleep_until", "thread/std::swap", "thread/std::yield"] -ms.assetid: bb1aa1ef-fe3f-4e2c-8b6e-e22dbf2f5a19 helpviewer_keywords: ["std::get_id [C++]", "std::sleep_for [C++]", "std::sleep_until [C++]", "std::swap [C++]", "std::yield [C++]"] --- # `` functions From fea358f514b94142dd4c2e62f935b8d7d89de1c0 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 30 Jul 2025 23:15:02 +0800 Subject: [PATCH 1214/2255] Add mention of `/LDd` in `_DEBUG` macro reference --- docs/c-runtime-library/debug.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/c-runtime-library/debug.md b/docs/c-runtime-library/debug.md index 049cce0df2b..bbfddedf121 100644 --- a/docs/c-runtime-library/debug.md +++ b/docs/c-runtime-library/debug.md @@ -7,7 +7,7 @@ ms.assetid: a9901568-4846-4731-a404-399d947e2e7a --- # `_DEBUG` -The compiler defines `_DEBUG` when you specify the /MTd or /MDd option. These options specify debug versions of the C run-time library. +The compiler defines `_DEBUG` when you specify the /MTd, /MDd, or /LDd option. These options specify debug versions of the C run-time library. For more information, see [CRT debugging techniques](./crt-debugging-techniques.md). From 68fef1a903d88e08457389044101158da281000a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 30 Jul 2025 23:16:05 +0800 Subject: [PATCH 1215/2255] Add backticks in `_DEBUG` macro reference --- docs/c-runtime-library/debug.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/c-runtime-library/debug.md b/docs/c-runtime-library/debug.md index bbfddedf121..cad5919065c 100644 --- a/docs/c-runtime-library/debug.md +++ b/docs/c-runtime-library/debug.md @@ -7,7 +7,7 @@ ms.assetid: a9901568-4846-4731-a404-399d947e2e7a --- # `_DEBUG` -The compiler defines `_DEBUG` when you specify the /MTd, /MDd, or /LDd option. These options specify debug versions of the C run-time library. +The compiler defines `_DEBUG` when you specify the `/MTd`, `/MDd`, or `/LDd` option. These options specify debug versions of the C run-time library. For more information, see [CRT debugging techniques](./crt-debugging-techniques.md). From 26d3f78a7609912c83c026d50c0473a3a88f7c49 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 30 Jul 2025 23:19:21 +0800 Subject: [PATCH 1216/2255] Simplify and add links in `_DEBUG` macro reference --- docs/c-runtime-library/debug.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/c-runtime-library/debug.md b/docs/c-runtime-library/debug.md index cad5919065c..b2c59938525 100644 --- a/docs/c-runtime-library/debug.md +++ b/docs/c-runtime-library/debug.md @@ -7,10 +7,11 @@ ms.assetid: a9901568-4846-4731-a404-399d947e2e7a --- # `_DEBUG` -The compiler defines `_DEBUG` when you specify the `/MTd`, `/MDd`, or `/LDd` option. These options specify debug versions of the C run-time library. +The compiler defines `_DEBUG` when you specify the [`/MTd`](../build/reference/md-mt-ld-use-run-time-library.md), [`/MDd`](../build/reference/md-mt-ld-use-run-time-library.md), or [`/LDd`](../build/reference/md-mt-ld-use-run-time-library.md) option. These options specify debug versions of the C run-time library. -For more information, see [CRT debugging techniques](./crt-debugging-techniques.md). +For more information, see [CRT debugging techniques](crt-debugging-techniques.md). ## See also -[Control flags](./control-flags.md) +[Control flags](control-flags.md)\ +[Predefined macros](../preprocessor/predefined-macros.md) From 84740f300d35ff663660c758cbe65c1d6236b786 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 30 Jul 2025 23:19:54 +0800 Subject: [PATCH 1217/2255] Update metadata in `_DEBUG` macro reference --- docs/c-runtime-library/debug.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/c-runtime-library/debug.md b/docs/c-runtime-library/debug.md index b2c59938525..f3d187ab4ff 100644 --- a/docs/c-runtime-library/debug.md +++ b/docs/c-runtime-library/debug.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: _DEBUG" title: "_DEBUG" -ms.date: "11/04/2016" +description: "Learn more about: _DEBUG" +ms.date: 11/04/2016 helpviewer_keywords: ["DEBUG macro", "_DEBUG macro"] -ms.assetid: a9901568-4846-4731-a404-399d947e2e7a --- # `_DEBUG` From fda1c3cbfb34e284f61440d68c615800e38bcf37 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 30 Jul 2025 23:29:24 +0800 Subject: [PATCH 1218/2255] Add blockquotes for error messages in range [C2521, C2550] --- docs/error-messages/compiler-errors-2/compiler-error-c2521.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2523.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2524.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2526.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2528.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2529.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2530.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2531.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2532.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2533.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2534.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2535.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2537.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2540.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2541.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2542.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2543.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2544.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2545.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2548.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2549.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2550.md | 2 +- 22 files changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2521.md b/docs/error-messages/compiler-errors-2/compiler-error-c2521.md index dee34ce80d3..1a73b9ea451 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2521.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2521.md @@ -8,7 +8,7 @@ ms.assetid: 6042821b-e345-4a54-a7e9-a2c9019ea016 --- # Compiler Error C2521 -function does not take any arguments +> function does not take any arguments You attempted to use arguments with a destructor or finalizer. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2523.md b/docs/error-messages/compiler-errors-2/compiler-error-c2523.md index 5b41bea97ec..a6b622ea140 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2523.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2523.md @@ -8,7 +8,7 @@ ms.assetid: 7951b700-8f37-45a0-beb4-a79ae0ced72e --- # Compiler Error C2523 -'class::~identifier' : destructor/finalizer tag mismatch +> 'class::~identifier' : destructor/finalizer tag mismatch The name of the destructor must be the class name preceded by a tilde (`~`). The constructor and destructor are the only members that have the same name as the class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2524.md b/docs/error-messages/compiler-errors-2/compiler-error-c2524.md index 1614c50b8dd..36c38611aa2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2524.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2524.md @@ -8,7 +8,7 @@ ms.assetid: e71d17f5-2fc2-416b-8dbd-e9bed85eb33a --- # Compiler Error C2524 -'destructor' : a destructor/finalizer must have a 'void' parameter list +> 'destructor' : a destructor/finalizer must have a 'void' parameter list The destructor or finalizer had a parameter list that is not [void](../../cpp/void-cpp.md). Other parameter types are not allowed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2526.md b/docs/error-messages/compiler-errors-2/compiler-error-c2526.md index bd212154e23..4a9678aba1e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2526.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2526.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2526"] --- # Compiler Error C2526 -'identifier1' : C linkage function cannot return C++ class 'identifier2' +> 'identifier1' : C linkage function cannot return C++ class 'identifier2' A function defined with C linkage cannot return a user-defined type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2528.md b/docs/error-messages/compiler-errors-2/compiler-error-c2528.md index a70528679d2..ce3a48736d7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2528.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2528.md @@ -8,7 +8,7 @@ ms.assetid: 2ea9d583-67a8-4b16-b35f-a50eeffc03c4 --- # Compiler Error C2528 -'name' : pointer to reference is illegal +> 'name' : pointer to reference is illegal You cannot declare a pointer to a reference. Dereference the variable before declaring a pointer to it. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2529.md b/docs/error-messages/compiler-errors-2/compiler-error-c2529.md index 6a7223a5af7..e95dd10d0e3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2529.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2529.md @@ -8,7 +8,7 @@ ms.assetid: 73a99e55-b91e-488d-9b72-cc80faaeb436 --- # Compiler Error C2529 -'name' : reference to reference is illegal +> 'name' : reference to reference is illegal This error may be fixed by using pointer syntax and declaring a reference to a pointer. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2530.md b/docs/error-messages/compiler-errors-2/compiler-error-c2530.md index 4aff7437f14..df770e71992 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2530.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2530.md @@ -8,7 +8,7 @@ ms.assetid: b790a312-48df-4a6a-9e27-be2c5f32f16c --- # Compiler Error C2530 -'identifier' : references must be initialized +> 'identifier' : references must be initialized You must initialize a reference when it was declared, unless it is declared already: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2531.md b/docs/error-messages/compiler-errors-2/compiler-error-c2531.md index ea98a6788e1..f091644ada9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2531.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2531.md @@ -8,7 +8,7 @@ ms.assetid: c49afe15-55f8-4dc8-ac01-bf653622a7db --- # Compiler Error C2531 -'identifier' : reference to a bit field illegal +> 'identifier' : reference to a bit field illegal References to bit fields are not allowed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2532.md b/docs/error-messages/compiler-errors-2/compiler-error-c2532.md index 3b23c6eeeb6..164bd233aa2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2532.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2532.md @@ -8,6 +8,6 @@ ms.assetid: a94fdf13-5063-4206-b5a5-374930287bee --- # Compiler Error C2532 -'identifier' : illegal modifier for reference +> 'identifier' : illegal modifier for reference The reference was changed. References cannot be modified to refer to another object. Use a pointer instead. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2533.md b/docs/error-messages/compiler-errors-2/compiler-error-c2533.md index bc17130d602..3cd0604a416 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2533.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2533.md @@ -8,7 +8,7 @@ ms.assetid: 5b335652-076c-4824-87c8-a741f64a3ce0 --- # Compiler Error C2533 -'identifier' : constructors not allowed a return type +> 'identifier' : constructors not allowed a return type A constructor cannot have a return type (not even a **`void`** return type). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2534.md b/docs/error-messages/compiler-errors-2/compiler-error-c2534.md index 71081526b9a..285fbc5a2a6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2534.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2534.md @@ -8,7 +8,7 @@ ms.assetid: 481f9f54-5b51-4aa0-8eea-218f10807705 --- # Compiler Error C2534 -'identifier' : constructor cannot return a value +> 'identifier' : constructor cannot return a value A constructor cannot contain a **`return`** statement with an expression (even if the expression has type **`void`**). This differs from regular void-returning function where a return expression of type **`void`** is allowed. However, using the **`return`** statement without an expression is allowed for early returns in the constructor. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2535.md b/docs/error-messages/compiler-errors-2/compiler-error-c2535.md index 3ead6411365..06ba50f31cb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2535.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2535.md @@ -8,7 +8,7 @@ ms.assetid: a958f83e-e2bf-4a59-b44b-d406ec325d7e --- # Compiler Error C2535 -'identifier' : member function already defined or declared +> 'identifier' : member function already defined or declared This error could be caused by using the same formal parameter list in more than one definition or declaration of an overloaded function. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2537.md b/docs/error-messages/compiler-errors-2/compiler-error-c2537.md index 10f8c006259..94d766b2770 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2537.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2537.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2537"] --- # Compiler Error C2537 -'specifier' : illegal linkage specification +> 'specifier' : illegal linkage specification The linkage specifier is not supported. Only the "C" and "C++" linkage specifiers are supported. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2540.md b/docs/error-messages/compiler-errors-2/compiler-error-c2540.md index 89a2a496ade..bd02f01c61d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2540.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2540.md @@ -8,7 +8,7 @@ ms.assetid: 92c805a3-2dd9-46ca-a63d-3845c18ecc95 --- # Compiler Error C2540 -non-constant expression as array bound +> non-constant expression as array bound An array must have a constant bound. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2541.md b/docs/error-messages/compiler-errors-2/compiler-error-c2541.md index ac2e94c4f96..d22620cb884 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2541.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2541.md @@ -8,7 +8,7 @@ ms.assetid: ed95180f-00df-4e62-a8e9-1b6dab8281bf --- # Compiler Error C2541 -'delete' : delete : cannot delete objects that are not pointers +> 'delete' : delete : cannot delete objects that are not pointers The [delete](../../cpp/delete-operator-cpp.md) operator was used on an object that is not a pointer. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2542.md b/docs/error-messages/compiler-errors-2/compiler-error-c2542.md index c35adf15529..aa21bc7cd5a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2542.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2542.md @@ -8,7 +8,7 @@ ms.assetid: a984520d-f835-4cac-ac0e-7f1d5f5c6278 --- # Compiler Error C2542 -'identifier' : class object has no constructor for initialization +> 'identifier' : class object has no constructor for initialization There is no constructor with a parameter list that matches the initialization. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2543.md b/docs/error-messages/compiler-errors-2/compiler-error-c2543.md index b4167a06053..c0bf93256d6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2543.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2543.md @@ -8,7 +8,7 @@ ms.assetid: 6e4d2d03-ef34-4514-92fe-763543a71fa8 --- # Compiler Error C2543 -expected ']' for operator '[]' +> expected ']' for operator '[]' The subscripting operator is missing a left bracket. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2544.md b/docs/error-messages/compiler-errors-2/compiler-error-c2544.md index 7f975f4a00f..d8a7479b02b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2544.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2544.md @@ -8,7 +8,7 @@ ms.assetid: 8e79b74a-4e92-4752-a5fe-c3143dfc5524 --- # Compiler Error C2544 -expected ')' for operator '()' +> expected ')' for operator '()' The function call operator is missing a left parenthesis. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2545.md b/docs/error-messages/compiler-errors-2/compiler-error-c2545.md index 65bbf221f32..a67f891938f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2545.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2545.md @@ -8,7 +8,7 @@ ms.assetid: 51598eb9-0c57-4306-a0cd-3862980f3672 --- # Compiler Error C2545 -'operator' : unable to find overloaded operator +> 'operator' : unable to find overloaded operator The operator cannot be used with the operands provided. You must supply an overloaded operator with the required operands. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2548.md b/docs/error-messages/compiler-errors-2/compiler-error-c2548.md index 975747ca343..96e3ed684ff 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2548.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2548.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2548"] --- # Compiler error C2548 -'class::member' : missing default parameter for parameter parameter +> 'class::member' : missing default parameter for parameter parameter The default parameter list is missing a parameter. If you supply a default parameter anywhere in a parameter list, you must define default parameters for all subsequent parameters in the current declaration or any previous declarations within the same scope. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2549.md b/docs/error-messages/compiler-errors-2/compiler-error-c2549.md index 95ea293aa90..a1de490cc7f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2549.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2549.md @@ -8,7 +8,7 @@ ms.assetid: 29310094-54a3-4605-bc6d-a312a68daf5d --- # Compiler Error C2549 -user-defined conversion cannot specify a return type +> user-defined conversion cannot specify a return type The following sample generates C2549: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2550.md b/docs/error-messages/compiler-errors-2/compiler-error-c2550.md index 12046ba0826..afea03519a6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2550.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2550.md @@ -8,7 +8,7 @@ ms.assetid: 3293f53e-ee66-4035-920d-34e115c3a24c --- # Compiler Error C2550 -'identifier' : constructor initializer lists are only allowed on constructor definitions +> 'identifier' : constructor initializer lists are only allowed on constructor definitions A base class initializer list is used on the definition of a function that is not a constructor. From 6e1d0266feb8df55ca6bb0c4d77d35362f0ae6cb Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 30 Jul 2025 23:33:52 +0800 Subject: [PATCH 1219/2255] Add "Remarks" and "Example" headings for error references in range [C2521, C2550] --- docs/error-messages/compiler-errors-2/compiler-error-c2521.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2523.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2524.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2526.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2528.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2529.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2530.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2531.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2532.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2533.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2534.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2535.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2537.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2540.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2541.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2542.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2543.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2544.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2545.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2548.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2549.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2550.md | 4 ++++ 22 files changed, 70 insertions(+) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2521.md b/docs/error-messages/compiler-errors-2/compiler-error-c2521.md index 1a73b9ea451..065d995ee41 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2521.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2521.md @@ -10,6 +10,8 @@ ms.assetid: 6042821b-e345-4a54-a7e9-a2c9019ea016 > function does not take any arguments +## Remarks + You attempted to use arguments with a destructor or finalizer. For more information, see [Destructors and finalizers](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Destructors_and_finalizers). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2523.md b/docs/error-messages/compiler-errors-2/compiler-error-c2523.md index a6b622ea140..98020918004 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2523.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2523.md @@ -10,8 +10,12 @@ ms.assetid: 7951b700-8f37-45a0-beb4-a79ae0ced72e > 'class::~identifier' : destructor/finalizer tag mismatch +## Remarks + The name of the destructor must be the class name preceded by a tilde (`~`). The constructor and destructor are the only members that have the same name as the class. +## Example + The following sample generates C2523: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2524.md b/docs/error-messages/compiler-errors-2/compiler-error-c2524.md index 36c38611aa2..d65346d04cd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2524.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2524.md @@ -10,6 +10,8 @@ ms.assetid: e71d17f5-2fc2-416b-8dbd-e9bed85eb33a > 'destructor' : a destructor/finalizer must have a 'void' parameter list +## Remarks + The destructor or finalizer had a parameter list that is not [void](../../cpp/void-cpp.md). Other parameter types are not allowed. ## Examples diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2526.md b/docs/error-messages/compiler-errors-2/compiler-error-c2526.md index 4a9678aba1e..f457aa9a74b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2526.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2526.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C2526"] > 'identifier1' : C linkage function cannot return C++ class 'identifier2' +## Remarks + A function defined with C linkage cannot return a user-defined type. +## Example + The following sample generates C2526: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2528.md b/docs/error-messages/compiler-errors-2/compiler-error-c2528.md index ce3a48736d7..7e04ea8388c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2528.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2528.md @@ -10,8 +10,12 @@ ms.assetid: 2ea9d583-67a8-4b16-b35f-a50eeffc03c4 > 'name' : pointer to reference is illegal +## Remarks + You cannot declare a pointer to a reference. Dereference the variable before declaring a pointer to it. +## Example + The following sample generates C2528: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2529.md b/docs/error-messages/compiler-errors-2/compiler-error-c2529.md index e95dd10d0e3..c221afbf118 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2529.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2529.md @@ -10,8 +10,12 @@ ms.assetid: 73a99e55-b91e-488d-9b72-cc80faaeb436 > 'name' : reference to reference is illegal +## Remarks + This error may be fixed by using pointer syntax and declaring a reference to a pointer. +## Example + The following sample generates C2529: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2530.md b/docs/error-messages/compiler-errors-2/compiler-error-c2530.md index df770e71992..7751cbf3611 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2530.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2530.md @@ -10,6 +10,8 @@ ms.assetid: b790a312-48df-4a6a-9e27-be2c5f32f16c > 'identifier' : references must be initialized +## Remarks + You must initialize a reference when it was declared, unless it is declared already: - With the keyword [extern](../../cpp/extern-cpp.md). @@ -20,6 +22,8 @@ You must initialize a reference when it was declared, unless it is declared alre - As the return type of a function. +## Example + The following sample generates C2530: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2531.md b/docs/error-messages/compiler-errors-2/compiler-error-c2531.md index f091644ada9..3ff0c432ea6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2531.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2531.md @@ -10,8 +10,12 @@ ms.assetid: c49afe15-55f8-4dc8-ac01-bf653622a7db > 'identifier' : reference to a bit field illegal +## Remarks + References to bit fields are not allowed. +## Example + The following sample generates C2531: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2532.md b/docs/error-messages/compiler-errors-2/compiler-error-c2532.md index 164bd233aa2..ce4e7ade81b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2532.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2532.md @@ -10,4 +10,6 @@ ms.assetid: a94fdf13-5063-4206-b5a5-374930287bee > 'identifier' : illegal modifier for reference +## Remarks + The reference was changed. References cannot be modified to refer to another object. Use a pointer instead. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2533.md b/docs/error-messages/compiler-errors-2/compiler-error-c2533.md index 3cd0604a416..6dbbee9b918 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2533.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2533.md @@ -10,10 +10,14 @@ ms.assetid: 5b335652-076c-4824-87c8-a741f64a3ce0 > 'identifier' : constructors not allowed a return type +## Remarks + A constructor cannot have a return type (not even a **`void`** return type). A common source of this error is a missing semicolon between the end of a class definition and the first constructor implementation. The compiler sees the class as a definition of the return type for the constructor function, and generates C2533. +## Example + The following sample generates C2533, and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2534.md b/docs/error-messages/compiler-errors-2/compiler-error-c2534.md index 285fbc5a2a6..d613c68975c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2534.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2534.md @@ -10,8 +10,12 @@ ms.assetid: 481f9f54-5b51-4aa0-8eea-218f10807705 > 'identifier' : constructor cannot return a value +## Remarks + A constructor cannot contain a **`return`** statement with an expression (even if the expression has type **`void`**). This differs from regular void-returning function where a return expression of type **`void`** is allowed. However, using the **`return`** statement without an expression is allowed for early returns in the constructor. +## Example + The following sample generates C2534: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2535.md b/docs/error-messages/compiler-errors-2/compiler-error-c2535.md index 06ba50f31cb..b7e1c63a45e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2535.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2535.md @@ -10,10 +10,14 @@ ms.assetid: a958f83e-e2bf-4a59-b44b-d406ec325d7e > 'identifier' : member function already defined or declared +## Remarks + This error could be caused by using the same formal parameter list in more than one definition or declaration of an overloaded function. If you get C2535 because of the Dispose function, see [Destructors and finalizers](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Destructors_and_finalizers) for more information. +## Example + The following sample generates C2535: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2537.md b/docs/error-messages/compiler-errors-2/compiler-error-c2537.md index 94d766b2770..9e4e22f16f5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2537.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2537.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C2537"] > 'specifier' : illegal linkage specification +## Remarks + The linkage specifier is not supported. Only the "C" and "C++" linkage specifiers are supported. +## Example + The following sample generates C2537: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2540.md b/docs/error-messages/compiler-errors-2/compiler-error-c2540.md index bd02f01c61d..a0708b921d2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2540.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2540.md @@ -10,8 +10,12 @@ ms.assetid: 92c805a3-2dd9-46ca-a63d-3845c18ecc95 > non-constant expression as array bound +## Remarks + An array must have a constant bound. +## Example + The following sample generates C2540: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2541.md b/docs/error-messages/compiler-errors-2/compiler-error-c2541.md index d22620cb884..7343169c13b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2541.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2541.md @@ -10,8 +10,12 @@ ms.assetid: ed95180f-00df-4e62-a8e9-1b6dab8281bf > 'delete' : delete : cannot delete objects that are not pointers +## Remarks + The [delete](../../cpp/delete-operator-cpp.md) operator was used on an object that is not a pointer. +## Example + The following sample generates C2541: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2542.md b/docs/error-messages/compiler-errors-2/compiler-error-c2542.md index aa21bc7cd5a..3ce231ed9df 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2542.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2542.md @@ -10,6 +10,8 @@ ms.assetid: a984520d-f835-4cac-ac0e-7f1d5f5c6278 > 'identifier' : class object has no constructor for initialization +## Remarks + There is no constructor with a parameter list that matches the initialization. This error can be caused by incorrect parameters in initialization. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2543.md b/docs/error-messages/compiler-errors-2/compiler-error-c2543.md index c0bf93256d6..5571c4fe250 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2543.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2543.md @@ -10,6 +10,8 @@ ms.assetid: 6e4d2d03-ef34-4514-92fe-763543a71fa8 > expected ']' for operator '[]' +## Remarks + The subscripting operator is missing a left bracket. This error can be caused by macro expansion. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2544.md b/docs/error-messages/compiler-errors-2/compiler-error-c2544.md index d8a7479b02b..e7f61268a22 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2544.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2544.md @@ -10,6 +10,8 @@ ms.assetid: 8e79b74a-4e92-4752-a5fe-c3143dfc5524 > expected ')' for operator '()' +## Remarks + The function call operator is missing a left parenthesis. This error can be caused by macro expansion. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2545.md b/docs/error-messages/compiler-errors-2/compiler-error-c2545.md index a67f891938f..a3c353f29f8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2545.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2545.md @@ -10,6 +10,8 @@ ms.assetid: 51598eb9-0c57-4306-a0cd-3862980f3672 > 'operator' : unable to find overloaded operator +## Remarks + The operator cannot be used with the operands provided. You must supply an overloaded operator with the required operands. This error can be caused if operands have incorrect type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2548.md b/docs/error-messages/compiler-errors-2/compiler-error-c2548.md index 96e3ed684ff..9a428018cb6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2548.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2548.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C2548"] > 'class::member' : missing default parameter for parameter parameter +## Remarks + The default parameter list is missing a parameter. If you supply a default parameter anywhere in a parameter list, you must define default parameters for all subsequent parameters in the current declaration or any previous declarations within the same scope. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2549.md b/docs/error-messages/compiler-errors-2/compiler-error-c2549.md index a1de490cc7f..c9561fbb173 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2549.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2549.md @@ -10,6 +10,8 @@ ms.assetid: 29310094-54a3-4605-bc6d-a312a68daf5d > user-defined conversion cannot specify a return type +## Example + The following sample generates C2549: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2550.md b/docs/error-messages/compiler-errors-2/compiler-error-c2550.md index afea03519a6..7f64c7e4e1d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2550.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2550.md @@ -10,8 +10,12 @@ ms.assetid: 3293f53e-ee66-4035-920d-34e115c3a24c > 'identifier' : constructor initializer lists are only allowed on constructor definitions +## Remarks + A base class initializer list is used on the definition of a function that is not a constructor. +## Example + The following sample generates C2550: ```cpp From a6ab60723569aded014d40543e42f458e3b1f69a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 30 Jul 2025 23:34:59 +0800 Subject: [PATCH 1220/2255] Replace term "sample" with "example" for error references in range [C2521, C2550] --- docs/error-messages/compiler-errors-2/compiler-error-c2521.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2523.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2526.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2528.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2529.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2530.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2531.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2533.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2534.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2535.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2537.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2540.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2541.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2548.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c2549.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2550.md | 2 +- 16 files changed, 17 insertions(+), 17 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2521.md b/docs/error-messages/compiler-errors-2/compiler-error-c2521.md index 065d995ee41..ea535a570cc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2521.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2521.md @@ -18,7 +18,7 @@ For more information, see [Destructors and finalizers](../../dotnet/how-to-defin ## Example -The following sample generates C2521. +The following example generates C2521. ```cpp // C2521.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2523.md b/docs/error-messages/compiler-errors-2/compiler-error-c2523.md index 98020918004..25ef30dccb0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2523.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2523.md @@ -16,7 +16,7 @@ The name of the destructor must be the class name preceded by a tilde (`~`). The ## Example -The following sample generates C2523: +The following example generates C2523: ```cpp // C2523.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2526.md b/docs/error-messages/compiler-errors-2/compiler-error-c2526.md index f457aa9a74b..2536ae0d9de 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2526.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2526.md @@ -15,7 +15,7 @@ A function defined with C linkage cannot return a user-defined type. ## Example -The following sample generates C2526: +The following example generates C2526: ```cpp // C2526.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2528.md b/docs/error-messages/compiler-errors-2/compiler-error-c2528.md index 7e04ea8388c..5a97f088414 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2528.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2528.md @@ -16,7 +16,7 @@ You cannot declare a pointer to a reference. Dereference the variable before dec ## Example -The following sample generates C2528: +The following example generates C2528: ```cpp // C2528.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2529.md b/docs/error-messages/compiler-errors-2/compiler-error-c2529.md index c221afbf118..781ae0c0cff 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2529.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2529.md @@ -16,7 +16,7 @@ This error may be fixed by using pointer syntax and declaring a reference to a p ## Example -The following sample generates C2529: +The following example generates C2529: ```cpp // C2529.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2530.md b/docs/error-messages/compiler-errors-2/compiler-error-c2530.md index 7751cbf3611..851df6bec14 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2530.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2530.md @@ -24,7 +24,7 @@ You must initialize a reference when it was declared, unless it is declared alre ## Example -The following sample generates C2530: +The following example generates C2530: ```cpp // C2530.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2531.md b/docs/error-messages/compiler-errors-2/compiler-error-c2531.md index 3ff0c432ea6..563eb58371c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2531.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2531.md @@ -16,7 +16,7 @@ References to bit fields are not allowed. ## Example -The following sample generates C2531: +The following example generates C2531: ```cpp // C2531.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2533.md b/docs/error-messages/compiler-errors-2/compiler-error-c2533.md index 6dbbee9b918..fe6705922b2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2533.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2533.md @@ -18,7 +18,7 @@ A common source of this error is a missing semicolon between the end of a class ## Example -The following sample generates C2533, and shows how to fix it: +The following example generates C2533, and shows how to fix it: ```cpp // C2533.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2534.md b/docs/error-messages/compiler-errors-2/compiler-error-c2534.md index d613c68975c..7abc8743db7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2534.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2534.md @@ -16,7 +16,7 @@ A constructor cannot contain a **`return`** statement with an expression (even i ## Example -The following sample generates C2534: +The following example generates C2534: ```cpp // C2534.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2535.md b/docs/error-messages/compiler-errors-2/compiler-error-c2535.md index b7e1c63a45e..3007ace7b16 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2535.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2535.md @@ -18,7 +18,7 @@ If you get C2535 because of the Dispose function, see [Destructors and finalizer ## Example -The following sample generates C2535: +The following example generates C2535: ```cpp // C2535.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2537.md b/docs/error-messages/compiler-errors-2/compiler-error-c2537.md index 9e4e22f16f5..f21e9255bae 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2537.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2537.md @@ -15,7 +15,7 @@ The linkage specifier is not supported. Only the "C" and "C++" linkage specifier ## Example -The following sample generates C2537: +The following example generates C2537: ```cpp // C2537.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2540.md b/docs/error-messages/compiler-errors-2/compiler-error-c2540.md index a0708b921d2..4ae43a791e8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2540.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2540.md @@ -16,7 +16,7 @@ An array must have a constant bound. ## Example -The following sample generates C2540: +The following example generates C2540: ```cpp // C2540.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2541.md b/docs/error-messages/compiler-errors-2/compiler-error-c2541.md index 7343169c13b..15f91683b4b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2541.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2541.md @@ -16,7 +16,7 @@ The [delete](../../cpp/delete-operator-cpp.md) operator was used on an object th ## Example -The following sample generates C2541: +The following example generates C2541: ```cpp // C2541.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2548.md b/docs/error-messages/compiler-errors-2/compiler-error-c2548.md index 9a428018cb6..5c8525181bb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2548.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2548.md @@ -15,12 +15,12 @@ The default parameter list is missing a parameter. If you supply a default param ## Example -The following sample generates C2548 for: +The following example generates C2548 for: - `func1` because it's missing the default argument `b`. - `func3` because it's missing the default argument `c`. -The following sample doesn't generate C2548 for: +The following example doesn't generate C2548 for: - `func2` because all the required default arguments are supplied. - The second `func4` declaration because the default argument `c` is supplied in the preceding declaration and is in the same scope. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2549.md b/docs/error-messages/compiler-errors-2/compiler-error-c2549.md index c9561fbb173..f94416c54d2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2549.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2549.md @@ -12,7 +12,7 @@ ms.assetid: 29310094-54a3-4605-bc6d-a312a68daf5d ## Example -The following sample generates C2549: +The following example generates C2549: ```cpp // C2549.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2550.md b/docs/error-messages/compiler-errors-2/compiler-error-c2550.md index 7f64c7e4e1d..10b8ee2c6e8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2550.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2550.md @@ -16,7 +16,7 @@ A base class initializer list is used on the definition of a function that is no ## Example -The following sample generates C2550: +The following example generates C2550: ```cpp // C2550.cpp From 45c58d2e972ef9a3b11cd5e48b1115ab453d875c Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 30 Jul 2025 23:38:02 +0800 Subject: [PATCH 1221/2255] Update metadata for error references in range [C2521, C2550] --- .../error-messages/compiler-errors-2/compiler-error-c2521.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2523.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2524.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2526.md | 4 ++-- .../error-messages/compiler-errors-2/compiler-error-c2528.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2529.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2530.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2531.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2532.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2533.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2534.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2535.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2537.md | 4 ++-- .../error-messages/compiler-errors-2/compiler-error-c2540.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2541.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2542.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2543.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2544.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2545.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2549.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2550.md | 5 ++--- 21 files changed, 42 insertions(+), 61 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2521.md b/docs/error-messages/compiler-errors-2/compiler-error-c2521.md index ea535a570cc..249652f2fd2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2521.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2521.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2521" title: "Compiler Error C2521" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2521" +ms.date: 11/04/2016 f1_keywords: ["C2521"] helpviewer_keywords: ["C2521"] -ms.assetid: 6042821b-e345-4a54-a7e9-a2c9019ea016 --- # Compiler Error C2521 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2523.md b/docs/error-messages/compiler-errors-2/compiler-error-c2523.md index 25ef30dccb0..0ae81bfb1d2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2523.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2523.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2523" title: "Compiler Error C2523" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2523" +ms.date: 11/04/2016 f1_keywords: ["C2523"] helpviewer_keywords: ["C2523"] -ms.assetid: 7951b700-8f37-45a0-beb4-a79ae0ced72e --- # Compiler Error C2523 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2524.md b/docs/error-messages/compiler-errors-2/compiler-error-c2524.md index d65346d04cd..b5d7096731c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2524.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2524.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2524" title: "Compiler Error C2524" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2524" +ms.date: 11/04/2016 f1_keywords: ["C2524"] helpviewer_keywords: ["C2524"] -ms.assetid: e71d17f5-2fc2-416b-8dbd-e9bed85eb33a --- # Compiler Error C2524 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2526.md b/docs/error-messages/compiler-errors-2/compiler-error-c2526.md index 2536ae0d9de..9e02ec15aae 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2526.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2526.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Error C2526" title: "Compiler Error C2526" -ms.date: "03/08/2024" +description: "Learn more about: Compiler Error C2526" +ms.date: 03/08/2024 f1_keywords: ["C2526"] helpviewer_keywords: ["C2526"] --- diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2528.md b/docs/error-messages/compiler-errors-2/compiler-error-c2528.md index 5a97f088414..eb69976c237 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2528.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2528.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2528" title: "Compiler Error C2528" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2528" +ms.date: 11/04/2016 f1_keywords: ["C2528"] helpviewer_keywords: ["C2528"] -ms.assetid: 2ea9d583-67a8-4b16-b35f-a50eeffc03c4 --- # Compiler Error C2528 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2529.md b/docs/error-messages/compiler-errors-2/compiler-error-c2529.md index 781ae0c0cff..bec04c6a15f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2529.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2529.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2529" title: "Compiler Error C2529" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2529" +ms.date: 11/04/2016 f1_keywords: ["C2529"] helpviewer_keywords: ["C2529"] -ms.assetid: 73a99e55-b91e-488d-9b72-cc80faaeb436 --- # Compiler Error C2529 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2530.md b/docs/error-messages/compiler-errors-2/compiler-error-c2530.md index 851df6bec14..17a71250c71 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2530.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2530.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2530" title: "Compiler Error C2530" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2530" +ms.date: 11/04/2016 f1_keywords: ["C2530"] helpviewer_keywords: ["C2530"] -ms.assetid: b790a312-48df-4a6a-9e27-be2c5f32f16c --- # Compiler Error C2530 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2531.md b/docs/error-messages/compiler-errors-2/compiler-error-c2531.md index 563eb58371c..f6015c2c29f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2531.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2531.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2531" title: "Compiler Error C2531" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2531" +ms.date: 11/04/2016 f1_keywords: ["C2531"] helpviewer_keywords: ["C2531"] -ms.assetid: c49afe15-55f8-4dc8-ac01-bf653622a7db --- # Compiler Error C2531 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2532.md b/docs/error-messages/compiler-errors-2/compiler-error-c2532.md index ce4e7ade81b..80856245d87 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2532.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2532.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2532" title: "Compiler Error C2532" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2532" +ms.date: 11/04/2016 f1_keywords: ["C2532"] helpviewer_keywords: ["C2532"] -ms.assetid: a94fdf13-5063-4206-b5a5-374930287bee --- # Compiler Error C2532 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2533.md b/docs/error-messages/compiler-errors-2/compiler-error-c2533.md index fe6705922b2..025404ed61d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2533.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2533.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2533" title: "Compiler Error C2533" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2533" +ms.date: 11/04/2016 f1_keywords: ["C2533"] helpviewer_keywords: ["C2533"] -ms.assetid: 5b335652-076c-4824-87c8-a741f64a3ce0 --- # Compiler Error C2533 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2534.md b/docs/error-messages/compiler-errors-2/compiler-error-c2534.md index 7abc8743db7..514403e602d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2534.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2534.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2534" title: "Compiler Error C2534" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2534" +ms.date: 11/04/2016 f1_keywords: ["C2534"] helpviewer_keywords: ["C2534"] -ms.assetid: 481f9f54-5b51-4aa0-8eea-218f10807705 --- # Compiler Error C2534 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2535.md b/docs/error-messages/compiler-errors-2/compiler-error-c2535.md index 3007ace7b16..cb2505b77c7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2535.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2535.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2535" title: "Compiler Error C2535" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2535" +ms.date: 11/04/2016 f1_keywords: ["C2535"] helpviewer_keywords: ["C2535"] -ms.assetid: a958f83e-e2bf-4a59-b44b-d406ec325d7e --- # Compiler Error C2535 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2537.md b/docs/error-messages/compiler-errors-2/compiler-error-c2537.md index f21e9255bae..2a767197bcb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2537.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2537.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Error C2537" title: "Compiler Error C2537" -ms.date: "03/08/2024" +description: "Learn more about: Compiler Error C2537" +ms.date: 03/08/2024 f1_keywords: ["C2537"] helpviewer_keywords: ["C2537"] --- diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2540.md b/docs/error-messages/compiler-errors-2/compiler-error-c2540.md index 4ae43a791e8..0278d815c0e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2540.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2540.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2540" title: "Compiler Error C2540" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2540" +ms.date: 11/04/2016 f1_keywords: ["C2540"] helpviewer_keywords: ["C2540"] -ms.assetid: 92c805a3-2dd9-46ca-a63d-3845c18ecc95 --- # Compiler Error C2540 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2541.md b/docs/error-messages/compiler-errors-2/compiler-error-c2541.md index 15f91683b4b..54bc47b02b4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2541.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2541.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2541" title: "Compiler Error C2541" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2541" +ms.date: 11/04/2016 f1_keywords: ["C2541"] helpviewer_keywords: ["C2541"] -ms.assetid: ed95180f-00df-4e62-a8e9-1b6dab8281bf --- # Compiler Error C2541 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2542.md b/docs/error-messages/compiler-errors-2/compiler-error-c2542.md index 3ce231ed9df..b41ae2e7d22 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2542.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2542.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2542" title: "Compiler Error C2542" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2542" +ms.date: 11/04/2016 f1_keywords: ["C2542"] helpviewer_keywords: ["C2542"] -ms.assetid: a984520d-f835-4cac-ac0e-7f1d5f5c6278 --- # Compiler Error C2542 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2543.md b/docs/error-messages/compiler-errors-2/compiler-error-c2543.md index 5571c4fe250..6f695891d1e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2543.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2543.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2543" title: "Compiler Error C2543" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2543" +ms.date: 11/04/2016 f1_keywords: ["C2543"] helpviewer_keywords: ["C2543"] -ms.assetid: 6e4d2d03-ef34-4514-92fe-763543a71fa8 --- # Compiler Error C2543 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2544.md b/docs/error-messages/compiler-errors-2/compiler-error-c2544.md index e7f61268a22..5a664fae23a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2544.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2544.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2544" title: "Compiler Error C2544" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2544" +ms.date: 11/04/2016 f1_keywords: ["C2544"] helpviewer_keywords: ["C2544"] -ms.assetid: 8e79b74a-4e92-4752-a5fe-c3143dfc5524 --- # Compiler Error C2544 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2545.md b/docs/error-messages/compiler-errors-2/compiler-error-c2545.md index a3c353f29f8..bbf07446c62 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2545.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2545.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2545" title: "Compiler Error C2545" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2545" +ms.date: 11/04/2016 f1_keywords: ["C2545"] helpviewer_keywords: ["C2545"] -ms.assetid: 51598eb9-0c57-4306-a0cd-3862980f3672 --- # Compiler Error C2545 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2549.md b/docs/error-messages/compiler-errors-2/compiler-error-c2549.md index f94416c54d2..a779b7adf17 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2549.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2549.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2549" title: "Compiler Error C2549" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2549" +ms.date: 11/04/2016 f1_keywords: ["C2549"] helpviewer_keywords: ["C2549"] -ms.assetid: 29310094-54a3-4605-bc6d-a312a68daf5d --- # Compiler Error C2549 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2550.md b/docs/error-messages/compiler-errors-2/compiler-error-c2550.md index 10b8ee2c6e8..eac2acfcd2a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2550.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2550.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2550" title: "Compiler Error C2550" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2550" +ms.date: 11/04/2016 f1_keywords: ["C2550"] helpviewer_keywords: ["C2550"] -ms.assetid: 3293f53e-ee66-4035-920d-34e115c3a24c --- # Compiler Error C2550 From 2cd6fb5630276abcc18ec440e55181a50be2a544 Mon Sep 17 00:00:00 2001 From: Dennis Rea Date: Wed, 30 Jul 2025 09:39:11 -0700 Subject: [PATCH 1222/2255] Attempt to raise Acrolinx score to passing --- docs/sanitizers/error-memcpy-param-overlap.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/error-memcpy-param-overlap.md b/docs/sanitizers/error-memcpy-param-overlap.md index 3686347b4f3..5c5c46173de 100644 --- a/docs/sanitizers/error-memcpy-param-overlap.md +++ b/docs/sanitizers/error-memcpy-param-overlap.md @@ -10,7 +10,7 @@ helpviewer_keywords: ["memcpy-param-overlap error", "AddressSanitizer error memc > Address Sanitizer Error: memcpy-param-overlap > [!NOTE] -> The `/Oi` flag is required to reliably detect `memcpy-param-overlap` errors. This flag tells the compiler to treat `memcpy` and other functions as intrinsics, which is necessary because some versions of the standard library implement them as such. Since ASan is a dynamic analysis tool, it can only detect errors with an observable runtime effect. Please note that when `/O2` is also set, ASan may not be able to reliably detect `memcpy-param-overlap` errors because the intrinsic variant of these functions is not guaranteed to be used. See the [`/Oi` docs](../build/reference/oi-generate-intrinsic-functions.md) for more information. +> The `/Oi` flag is required to reliably detect `memcpy-param-overlap` errors. This flag tells the compiler to treat `memcpy` and other functions as intrinsics, which is necessary because some versions of the standard library implement them as such. Since ASan is a dynamic analysis tool, it can only detect errors with an observable runtime effect. Note that when `/O2` is also set, ASan may not be able to reliably detect `memcpy-param-overlap` errors because the intrinsic variant of these functions isn't guaranteed to be used. For more information, see [`/Oi` docs](../build/reference/oi-generate-intrinsic-functions.md). The CRT function [`memcpy`](../c-runtime-library/reference/memcpy-wmemcpy.md) **doesn't support** overlapping memory. The CRT provides an alternative to `memcpy` that does support overlapping memory: [`memmove`](../c-runtime-library/reference/memmove-wmemmove.md). From 690631b0bb3860bd5bbd48cca2cf02c294ea93d0 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 31 Jul 2025 23:13:28 +0800 Subject: [PATCH 1223/2255] Add blockquotes for error messages in range [C2551, C2580] --- docs/error-messages/compiler-errors-2/compiler-error-c2551.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2552.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2553.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2557.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2558.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2561.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2562.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2563.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2566.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2567.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2568.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2569.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2570.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2571.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2572.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2573.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2575.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2577.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2579.md | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2551.md b/docs/error-messages/compiler-errors-2/compiler-error-c2551.md index a0bff6271a9..4b411dd1801 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2551.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2551.md @@ -8,6 +8,6 @@ ms.assetid: 6f48b91d-635b-4eef-b13c-1bf2056c1053 --- # Compiler Error C2551 -'void *' type needs explicit cast +> 'void *' type needs explicit cast A **`void`** pointer is assigned to a nonvoid pointer by implicit conversion. You must use an explicit cast. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2552.md b/docs/error-messages/compiler-errors-2/compiler-error-c2552.md index c3714405422..632757e0461 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2552.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2552.md @@ -8,7 +8,7 @@ ms.assetid: 0e0ab759-788a-4faf-9337-80d4b9e2e8c9 --- # Compiler Error C2552 -'identifier' : non-aggregates cannot be initialized with initializer list +> 'identifier' : non-aggregates cannot be initialized with initializer list The aggregate identifier was incorrectly initialized. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2553.md b/docs/error-messages/compiler-errors-2/compiler-error-c2553.md index 4db5c543e36..e9402c9158a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2553.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2553.md @@ -8,7 +8,7 @@ ms.assetid: 64bc1e9a-627f-4ce9-b7bc-dc911bdb9180 --- # Compiler Error C2553 -'base_function': overriding virtual function return type differs from 'override_function' +> 'base_function': overriding virtual function return type differs from 'override_function' A function in a derived class attempted to override a virtual function in a base class, but the derived class function did not have the same return type as the base class function. An override function signature must match the signature of the function being overridden. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2557.md b/docs/error-messages/compiler-errors-2/compiler-error-c2557.md index cb0f2c74826..f2ec0b82f32 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2557.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2557.md @@ -8,6 +8,6 @@ ms.assetid: 48a33d82-aa16-4658-b346-2311fcb39864 --- # Compiler Error C2557 -'identifier' : private and protected members cannot be initialized without a constructor +> 'identifier' : private and protected members cannot be initialized without a constructor Only members and friends can assign a value to a private or protected member. Nonpublic members should be initialized in the class constructor. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2558.md b/docs/error-messages/compiler-errors-2/compiler-error-c2558.md index eb0b6683dec..c1d16acc4f5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2558.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2558.md @@ -8,7 +8,7 @@ ms.assetid: 822b701e-dcae-423a-b21f-47f36aff9c90 --- # Compiler Error C2558 -'identifier' : no copy constructor available or copy constructor is declared 'explicit' +> 'identifier' : no copy constructor available or copy constructor is declared 'explicit' A copy constructor initializes an object from another object of the same type. (It makes a copy of the object.) The compiler generates a default copy constructor if you do not define any constructors. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2561.md b/docs/error-messages/compiler-errors-2/compiler-error-c2561.md index 474c57ced61..7487df0595a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2561.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2561.md @@ -8,7 +8,7 @@ ms.assetid: 0abe955b-53a6-4a3c-8362-b1a8eb40e8d1 --- # Compiler Error C2561 -'identifier' : function must return a value +> 'identifier' : function must return a value The function was declared as returning a value, but the function definition does not contain a **`return`** statement. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2562.md b/docs/error-messages/compiler-errors-2/compiler-error-c2562.md index 9e95f4fecd7..1030d305af3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2562.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2562.md @@ -8,7 +8,7 @@ ms.assetid: 2c41e511-9952-4b98-9976-6b1523613e1b --- # Compiler Error C2562 -'identifier' : 'void' function returning a value +> 'identifier' : 'void' function returning a value The function is declared as **`void`** but returns a value. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2563.md b/docs/error-messages/compiler-errors-2/compiler-error-c2563.md index 5b7c1e30083..86b3c3e42a0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2563.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2563.md @@ -8,7 +8,7 @@ ms.assetid: 54abba68-6458-4ca5-894d-3babdb7b3552 --- # Compiler Error C2563 -mismatch in formal parameter list +> mismatch in formal parameter list The formal parameter list of a function (or a pointer to a function) does not match those of another function (or pointer to a member function). As a result, the assignment of functions or pointers cannot be made. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2566.md b/docs/error-messages/compiler-errors-2/compiler-error-c2566.md index 1deba5aad6c..97893d234da 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2566.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2566.md @@ -8,6 +8,6 @@ ms.assetid: 8fe10fb2-d974-432a-a56b-3a61b9a8dfc2 --- # Compiler Error C2566 -overloaded function in conditional expression +> overloaded function in conditional expression An overloaded function in a conditional expression cannot be evaluated. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2567.md b/docs/error-messages/compiler-errors-2/compiler-error-c2567.md index cda3fa6ee81..b0d5030b649 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2567.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2567.md @@ -8,7 +8,7 @@ ms.assetid: 9c140ac9-7059-47e6-9ba1-e7939c8c0dc3 --- # Compiler Error C2567 -unable to open metadata in 'file', file may have been deleted or moved +> unable to open metadata in 'file', file may have been deleted or moved A metadata file that was referenced in source (with `#using`) was not found in the same directory by the compiler back end process as it was by the compiler front end process. See [#using Directive](../../preprocessor/hash-using-directive-cpp.md) for more information. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2568.md b/docs/error-messages/compiler-errors-2/compiler-error-c2568.md index a68ce21d1c6..05b4b10a226 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2568.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2568.md @@ -8,6 +8,6 @@ ms.assetid: 140b4dc9-5a88-4032-9aef-a224bb796f72 --- # Compiler Error C2568 -'identifier1' : unable to resolve function overload +> 'identifier1' : unable to resolve function overload The compiler cannot determine which overloaded function to call. The actual parameters passed to the function must be cast to match the formal parameters for one of the overloaded function, but no one match is unambiguously better than all others. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2569.md b/docs/error-messages/compiler-errors-2/compiler-error-c2569.md index d3ac69ec987..9fd81f84106 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2569.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2569.md @@ -8,7 +8,7 @@ ms.assetid: 092bed1e-f631-436c-9586-7750629f6fac --- # Compiler Error C2569 -'EnumOrUnion' : enum/union cannot be used as a base class +> 'EnumOrUnion' : enum/union cannot be used as a base class If you must derive a type from the specified union or enumeration, change the union or enumeration to a class or structure. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2570.md b/docs/error-messages/compiler-errors-2/compiler-error-c2570.md index 161805be9e0..adfadea659c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2570.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2570.md @@ -8,7 +8,7 @@ ms.assetid: d65d0b32-2fac-464a-bcdf-0ebcedf3bf32 --- # Compiler Error C2570 -'identifier' : union cannot have base classes +> 'identifier' : union cannot have base classes A union derives from a class, structure, or union. This is not allowed. Declare the derived type as a class or structure instead. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2571.md b/docs/error-messages/compiler-errors-2/compiler-error-c2571.md index ac2efce8e24..408ca13c12f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2571.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2571.md @@ -8,7 +8,7 @@ ms.assetid: c6522616-dee9-4d7d-9bf8-30a7e1deaadf --- # Compiler Error C2571 -'function' : virtual function cannot be in union 'union' +> 'function' : virtual function cannot be in union 'union' A union is declared with a virtual function. You can declare a virtual function only in a class or structure. Possible resolutions: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2572.md b/docs/error-messages/compiler-errors-2/compiler-error-c2572.md index eec5bbb70f0..519d892ce85 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2572.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2572.md @@ -8,7 +8,7 @@ ms.assetid: f1a42d69-727d-4ce5-88c8-d5f55dea66ac --- # Compiler Error C2572 -'class::member' : redefinition of default parameter : parameter param +> 'class::member' : redefinition of default parameter : parameter param Default parameters cannot be redefined. If you require another value for the parameter, the default parameter should be left undefined. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2573.md b/docs/error-messages/compiler-errors-2/compiler-error-c2573.md index 435289285d2..9176a954f92 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2573.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2573.md @@ -8,6 +8,6 @@ ms.assetid: 2ce523da-da3c-4fb4-bad2-fbde663dbfbf --- # Compiler Error C2573 -'class' : cannot delete pointers to objects of this type; the class has no non-placement overload for 'operator delete'. +> 'class' : cannot delete pointers to objects of this type; the class has no non-placement overload for 'operator delete'. The class is missing a non-placement delete operator. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2575.md b/docs/error-messages/compiler-errors-2/compiler-error-c2575.md index ac5c97f6e50..777d97e63e8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2575.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2575.md @@ -8,7 +8,7 @@ ms.assetid: 9eb45706-37ef-4481-b373-6d193ba13634 --- # Compiler Error C2575 -'identifier' : only member functions and bases can be virtual +> 'identifier' : only member functions and bases can be virtual A global function or class is declared **`virtual`**. This is not allowed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2577.md b/docs/error-messages/compiler-errors-2/compiler-error-c2577.md index c935a62d6f2..38bc6cd0170 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2577.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2577.md @@ -8,7 +8,7 @@ ms.assetid: fc79ef83-8362-40a2-9257-8037c3195ce4 --- # Compiler Error C2577 -'member' : destructor/finalizer cannot have a return type +> 'member' : destructor/finalizer cannot have a return type A destructor or finalizer cannot return a value of **`void`** or any other type. Remove the **`return`** statement from the destructor definition. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2579.md b/docs/error-messages/compiler-errors-2/compiler-error-c2579.md index f40da38fe60..e0af842b031 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2579.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2579.md @@ -8,6 +8,6 @@ ms.assetid: ab090a8d-5462-4046-a1a6-8007e354dedb --- # Compiler Error C2579 -unable to resolve type 'type' (offset). It is expected in file +> unable to resolve type 'type' (offset). It is expected in file C2579 always follows C4691. For more information, see [Compiler Warning (level 1) C4691](../../error-messages/compiler-warnings/compiler-warning-level-1-c4691.md). From 8faaf3c9ac735d8adfce5f737b5fb09a3cc4f6ab Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 31 Jul 2025 23:19:25 +0800 Subject: [PATCH 1224/2255] Add "Remarks" and "Example" headings for error references in range [C2551, C2580] --- docs/error-messages/compiler-errors-2/compiler-error-c2551.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2552.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2553.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2555.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c2557.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2558.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2561.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2562.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2563.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2566.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2567.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2568.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2569.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2570.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2571.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2572.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2573.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2575.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2577.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2579.md | 2 ++ 20 files changed, 60 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2551.md b/docs/error-messages/compiler-errors-2/compiler-error-c2551.md index 4b411dd1801..ec83b5f0f32 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2551.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2551.md @@ -10,4 +10,6 @@ ms.assetid: 6f48b91d-635b-4eef-b13c-1bf2056c1053 > 'void *' type needs explicit cast +## Remarks + A **`void`** pointer is assigned to a nonvoid pointer by implicit conversion. You must use an explicit cast. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2552.md b/docs/error-messages/compiler-errors-2/compiler-error-c2552.md index 632757e0461..ef3a48f442a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2552.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2552.md @@ -10,6 +10,8 @@ ms.assetid: 0e0ab759-788a-4faf-9337-80d4b9e2e8c9 > 'identifier' : non-aggregates cannot be initialized with initializer list +## Remarks + The aggregate identifier was incorrectly initialized. [Aggregates](../../c-language/initializing-aggregate-types.md) are defined as: @@ -42,6 +44,8 @@ The following represent the reasons C2552 may fire when an aggregate initializat - The type has a non-fixed dimension array (zero-array) whose elements have destructors. +## Example + The following sample generates C2552: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2553.md b/docs/error-messages/compiler-errors-2/compiler-error-c2553.md index e9402c9158a..281323ddab4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2553.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2553.md @@ -10,8 +10,12 @@ ms.assetid: 64bc1e9a-627f-4ce9-b7bc-dc911bdb9180 > 'base_function': overriding virtual function return type differs from 'override_function' +## Remarks + A function in a derived class attempted to override a virtual function in a base class, but the derived class function did not have the same return type as the base class function. An override function signature must match the signature of the function being overridden. +## Example + The following sample generates C2553: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2555.md b/docs/error-messages/compiler-errors-2/compiler-error-c2555.md index 787b255c78b..ef7df4b56d5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2555.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2555.md @@ -10,10 +10,10 @@ ms.assetid: 5e49ebb8-7c90-457a-aa12-7ca7ab6574b2 > '*class1*::*function1*': overriding virtual function return type differs and is not covariant from '*class2*::*function2*' -A virtual function and a derived overriding function have identical parameter lists but different return types. - ## Remarks +A virtual function and a derived overriding function have identical parameter lists but different return types. + In C++, an overriding function in a derived class can't differ only by return type from a virtual function in a base class. There's an exception to this rule for certain return types. When a derived class overrides a public base class, it may return a pointer or reference to the derived class instead of a base-class pointer or reference. These return types are called *covariant*, because they vary together with the type. This rule exception doesn't allow covariant reference-to-pointer or pointer-to-pointer types. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2557.md b/docs/error-messages/compiler-errors-2/compiler-error-c2557.md index f2ec0b82f32..329dd6c24bb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2557.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2557.md @@ -10,4 +10,6 @@ ms.assetid: 48a33d82-aa16-4658-b346-2311fcb39864 > 'identifier' : private and protected members cannot be initialized without a constructor +## Remarks + Only members and friends can assign a value to a private or protected member. Nonpublic members should be initialized in the class constructor. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2558.md b/docs/error-messages/compiler-errors-2/compiler-error-c2558.md index c1d16acc4f5..2ef33656e32 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2558.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2558.md @@ -10,6 +10,8 @@ ms.assetid: 822b701e-dcae-423a-b21f-47f36aff9c90 > 'identifier' : no copy constructor available or copy constructor is declared 'explicit' +## Remarks + A copy constructor initializes an object from another object of the same type. (It makes a copy of the object.) The compiler generates a default copy constructor if you do not define any constructors. ### To fix this error diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2561.md b/docs/error-messages/compiler-errors-2/compiler-error-c2561.md index 7487df0595a..525ffc0c8de 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2561.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2561.md @@ -10,6 +10,8 @@ ms.assetid: 0abe955b-53a6-4a3c-8362-b1a8eb40e8d1 > 'identifier' : function must return a value +## Remarks + The function was declared as returning a value, but the function definition does not contain a **`return`** statement. This error can be caused by an incorrect function prototype: @@ -20,6 +22,8 @@ This error can be caused by an incorrect function prototype: 1. C++ functions containing inline assembly routines that store the return value in the `AX` register may need a return statement. Copy the value in `AX` to a temporary variable and return that variable from the function. +## Example + The following sample generates C2561: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2562.md b/docs/error-messages/compiler-errors-2/compiler-error-c2562.md index 1030d305af3..e09ed867609 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2562.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2562.md @@ -10,12 +10,16 @@ ms.assetid: 2c41e511-9952-4b98-9976-6b1523613e1b > 'identifier' : 'void' function returning a value +## Remarks + The function is declared as **`void`** but returns a value. This error can be caused by an incorrect function prototype. This error may be fixed if you specify the return type in the function declaration. +## Example + The following sample generates C2562: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2563.md b/docs/error-messages/compiler-errors-2/compiler-error-c2563.md index 86b3c3e42a0..3baff2fc5c6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2563.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2563.md @@ -10,8 +10,12 @@ ms.assetid: 54abba68-6458-4ca5-894d-3babdb7b3552 > mismatch in formal parameter list +## Remarks + The formal parameter list of a function (or a pointer to a function) does not match those of another function (or pointer to a member function). As a result, the assignment of functions or pointers cannot be made. +## Example + The following sample generates C2563: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2566.md b/docs/error-messages/compiler-errors-2/compiler-error-c2566.md index 97893d234da..cd9d7231952 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2566.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2566.md @@ -10,4 +10,6 @@ ms.assetid: 8fe10fb2-d974-432a-a56b-3a61b9a8dfc2 > overloaded function in conditional expression +## Remarks + An overloaded function in a conditional expression cannot be evaluated. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2567.md b/docs/error-messages/compiler-errors-2/compiler-error-c2567.md index b0d5030b649..ff63e64c0c5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2567.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2567.md @@ -10,6 +10,8 @@ ms.assetid: 9c140ac9-7059-47e6-9ba1-e7939c8c0dc3 > unable to open metadata in 'file', file may have been deleted or moved +## Remarks + A metadata file that was referenced in source (with `#using`) was not found in the same directory by the compiler back end process as it was by the compiler front end process. See [#using Directive](../../preprocessor/hash-using-directive-cpp.md) for more information. C2567 could be caused if you compile with **/c** on one machine and then attempt a link-time code generation on another machine. For more information, see [/LTCG (Link-time Code Generation)](../../build/reference/ltcg-link-time-code-generation.md)). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2568.md b/docs/error-messages/compiler-errors-2/compiler-error-c2568.md index 05b4b10a226..3cfa06515c1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2568.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2568.md @@ -10,4 +10,6 @@ ms.assetid: 140b4dc9-5a88-4032-9aef-a224bb796f72 > 'identifier1' : unable to resolve function overload +## Remarks + The compiler cannot determine which overloaded function to call. The actual parameters passed to the function must be cast to match the formal parameters for one of the overloaded function, but no one match is unambiguously better than all others. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2569.md b/docs/error-messages/compiler-errors-2/compiler-error-c2569.md index 9fd81f84106..136207247a0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2569.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2569.md @@ -10,8 +10,12 @@ ms.assetid: 092bed1e-f631-436c-9586-7750629f6fac > 'EnumOrUnion' : enum/union cannot be used as a base class +## Remarks + If you must derive a type from the specified union or enumeration, change the union or enumeration to a class or structure. +## Example + The following sample generates C2569: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2570.md b/docs/error-messages/compiler-errors-2/compiler-error-c2570.md index adfadea659c..2c1c9844729 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2570.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2570.md @@ -10,8 +10,12 @@ ms.assetid: d65d0b32-2fac-464a-bcdf-0ebcedf3bf32 > 'identifier' : union cannot have base classes +## Remarks + A union derives from a class, structure, or union. This is not allowed. Declare the derived type as a class or structure instead. +## Example + The following sample generates C2570: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2571.md b/docs/error-messages/compiler-errors-2/compiler-error-c2571.md index 408ca13c12f..c2b175240b0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2571.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2571.md @@ -10,12 +10,16 @@ ms.assetid: c6522616-dee9-4d7d-9bf8-30a7e1deaadf > 'function' : virtual function cannot be in union 'union' +## Remarks + A union is declared with a virtual function. You can declare a virtual function only in a class or structure. Possible resolutions: 1. Change the union to a class or structure. 1. Make the function nonvirtual. +## Example + The following sample generates C2571: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2572.md b/docs/error-messages/compiler-errors-2/compiler-error-c2572.md index 519d892ce85..0439618b394 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2572.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2572.md @@ -10,8 +10,12 @@ ms.assetid: f1a42d69-727d-4ce5-88c8-d5f55dea66ac > 'class::member' : redefinition of default parameter : parameter param +## Remarks + Default parameters cannot be redefined. If you require another value for the parameter, the default parameter should be left undefined. +## Example + The following sample generates C2572: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2573.md b/docs/error-messages/compiler-errors-2/compiler-error-c2573.md index 9176a954f92..6bf3cd235a1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2573.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2573.md @@ -10,4 +10,6 @@ ms.assetid: 2ce523da-da3c-4fb4-bad2-fbde663dbfbf > 'class' : cannot delete pointers to objects of this type; the class has no non-placement overload for 'operator delete'. +## Remarks + The class is missing a non-placement delete operator. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2575.md b/docs/error-messages/compiler-errors-2/compiler-error-c2575.md index 777d97e63e8..d312c6e8225 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2575.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2575.md @@ -10,8 +10,12 @@ ms.assetid: 9eb45706-37ef-4481-b373-6d193ba13634 > 'identifier' : only member functions and bases can be virtual +## Remarks + A global function or class is declared **`virtual`**. This is not allowed. +## Example + The following sample generates C2575: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2577.md b/docs/error-messages/compiler-errors-2/compiler-error-c2577.md index 38bc6cd0170..964aef6a442 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2577.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2577.md @@ -10,6 +10,8 @@ ms.assetid: fc79ef83-8362-40a2-9257-8037c3195ce4 > 'member' : destructor/finalizer cannot have a return type +## Remarks + A destructor or finalizer cannot return a value of **`void`** or any other type. Remove the **`return`** statement from the destructor definition. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2579.md b/docs/error-messages/compiler-errors-2/compiler-error-c2579.md index e0af842b031..a21f238a62c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2579.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2579.md @@ -10,4 +10,6 @@ ms.assetid: ab090a8d-5462-4046-a1a6-8007e354dedb > unable to resolve type 'type' (offset). It is expected in file +## Remarks + C2579 always follows C4691. For more information, see [Compiler Warning (level 1) C4691](../../error-messages/compiler-warnings/compiler-warning-level-1-c4691.md). From cfb603fb83b751479154be2ccc14a3ea4af143ec Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 31 Jul 2025 23:20:44 +0800 Subject: [PATCH 1225/2255] Replace term "sample" with "example" for error references in range [C2551, C2580] --- docs/error-messages/compiler-errors-2/compiler-error-c2552.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2553.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2555.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2561.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2562.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2563.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2569.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2570.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2571.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2572.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2575.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2577.md | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2552.md b/docs/error-messages/compiler-errors-2/compiler-error-c2552.md index ef3a48f442a..aa8f155728d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2552.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2552.md @@ -46,7 +46,7 @@ The following represent the reasons C2552 may fire when an aggregate initializat ## Example -The following sample generates C2552: +The following example generates C2552: ```cpp // C2552.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2553.md b/docs/error-messages/compiler-errors-2/compiler-error-c2553.md index 281323ddab4..e1fcead9a3b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2553.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2553.md @@ -16,7 +16,7 @@ A function in a derived class attempted to override a virtual function in a base ## Example -The following sample generates C2553: +The following example generates C2553: ```cpp // C2553.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2555.md b/docs/error-messages/compiler-errors-2/compiler-error-c2555.md index ef7df4b56d5..faa134b9ce1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2555.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2555.md @@ -34,7 +34,7 @@ is Guid CheckSources(Guid sourceID, Guid carouselIDs[]) []; ``` -The following sample generates C2555: +The following example generates C2555: ```cpp // C2555.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2561.md b/docs/error-messages/compiler-errors-2/compiler-error-c2561.md index 525ffc0c8de..13725de5eab 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2561.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2561.md @@ -24,7 +24,7 @@ This error can be caused by an incorrect function prototype: ## Example -The following sample generates C2561: +The following example generates C2561: ```cpp // C2561.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2562.md b/docs/error-messages/compiler-errors-2/compiler-error-c2562.md index e09ed867609..309163d8207 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2562.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2562.md @@ -20,7 +20,7 @@ This error may be fixed if you specify the return type in the function declarati ## Example -The following sample generates C2562: +The following example generates C2562: ```cpp // C2562.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2563.md b/docs/error-messages/compiler-errors-2/compiler-error-c2563.md index 3baff2fc5c6..66545044f57 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2563.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2563.md @@ -16,7 +16,7 @@ The formal parameter list of a function (or a pointer to a function) does not ma ## Example -The following sample generates C2563: +The following example generates C2563: ```cpp // C2563.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2569.md b/docs/error-messages/compiler-errors-2/compiler-error-c2569.md index 136207247a0..f498d96fbc2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2569.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2569.md @@ -16,7 +16,7 @@ If you must derive a type from the specified union or enumeration, change the un ## Example -The following sample generates C2569: +The following example generates C2569: ```cpp // C2569.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2570.md b/docs/error-messages/compiler-errors-2/compiler-error-c2570.md index 2c1c9844729..98c3c74c9c5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2570.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2570.md @@ -16,7 +16,7 @@ A union derives from a class, structure, or union. This is not allowed. Declare ## Example -The following sample generates C2570: +The following example generates C2570: ```cpp // C2570.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2571.md b/docs/error-messages/compiler-errors-2/compiler-error-c2571.md index c2b175240b0..119376562ea 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2571.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2571.md @@ -20,7 +20,7 @@ A union is declared with a virtual function. You can declare a virtual function ## Example -The following sample generates C2571: +The following example generates C2571: ```cpp // C2571.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2572.md b/docs/error-messages/compiler-errors-2/compiler-error-c2572.md index 0439618b394..10f78960ea8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2572.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2572.md @@ -16,7 +16,7 @@ Default parameters cannot be redefined. If you require another value for the par ## Example -The following sample generates C2572: +The following example generates C2572: ```cpp // C2572.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2575.md b/docs/error-messages/compiler-errors-2/compiler-error-c2575.md index d312c6e8225..a4473d83722 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2575.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2575.md @@ -16,7 +16,7 @@ A global function or class is declared **`virtual`**. This is not allowed. ## Example -The following sample generates C2575: +The following example generates C2575: ```cpp // C2575.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2577.md b/docs/error-messages/compiler-errors-2/compiler-error-c2577.md index 964aef6a442..436ccaabab7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2577.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2577.md @@ -16,7 +16,7 @@ A destructor or finalizer cannot return a value of **`void`** or any other type. ## Example -The following sample generates C2577. +The following example generates C2577. ```cpp // C2577.cpp From 154e3b70288482bbbf22ceb896712d777f8fb3d7 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 31 Jul 2025 23:24:22 +0800 Subject: [PATCH 1226/2255] Update metadata for error references in range [C2551, C2580] --- .../error-messages/compiler-errors-2/compiler-error-c2551.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2552.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2553.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2555.md | 3 +-- .../error-messages/compiler-errors-2/compiler-error-c2557.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2558.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2561.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2562.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2563.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2566.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2567.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2568.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2569.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2570.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2571.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2572.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2573.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2575.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2577.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2579.md | 5 ++--- 20 files changed, 39 insertions(+), 59 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2551.md b/docs/error-messages/compiler-errors-2/compiler-error-c2551.md index ec83b5f0f32..26983767f91 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2551.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2551.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2551" title: "Compiler Error C2551" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2551" +ms.date: 11/04/2016 f1_keywords: ["C2551"] helpviewer_keywords: ["C2551"] -ms.assetid: 6f48b91d-635b-4eef-b13c-1bf2056c1053 --- # Compiler Error C2551 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2552.md b/docs/error-messages/compiler-errors-2/compiler-error-c2552.md index aa8f155728d..e995484a613 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2552.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2552.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2552" title: "Compiler Error C2552" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2552" +ms.date: 11/04/2016 f1_keywords: ["C2552"] helpviewer_keywords: ["C2552"] -ms.assetid: 0e0ab759-788a-4faf-9337-80d4b9e2e8c9 --- # Compiler Error C2552 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2553.md b/docs/error-messages/compiler-errors-2/compiler-error-c2553.md index e1fcead9a3b..bf468cd7234 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2553.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2553.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2553" title: "Compiler Error C2553" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2553" +ms.date: 11/04/2016 f1_keywords: ["C2553"] helpviewer_keywords: ["C2553"] -ms.assetid: 64bc1e9a-627f-4ce9-b7bc-dc911bdb9180 --- # Compiler Error C2553 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2555.md b/docs/error-messages/compiler-errors-2/compiler-error-c2555.md index faa134b9ce1..e8d97e2e695 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2555.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2555.md @@ -1,10 +1,9 @@ --- title: "Compiler Error C2555" description: "Reference for Visual Studio C++ compiler error C2555." -ms.date: "03/30/2020" +ms.date: 03/30/2020 f1_keywords: ["C2555"] helpviewer_keywords: ["C2555"] -ms.assetid: 5e49ebb8-7c90-457a-aa12-7ca7ab6574b2 --- # Compiler Error C2555 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2557.md b/docs/error-messages/compiler-errors-2/compiler-error-c2557.md index 329dd6c24bb..63bc8d7a2fc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2557.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2557.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2557" title: "Compiler Error C2557" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2557" +ms.date: 11/04/2016 f1_keywords: ["C2557"] helpviewer_keywords: ["C2557"] -ms.assetid: 48a33d82-aa16-4658-b346-2311fcb39864 --- # Compiler Error C2557 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2558.md b/docs/error-messages/compiler-errors-2/compiler-error-c2558.md index 2ef33656e32..0b53dfa4199 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2558.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2558.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2558" title: "Compiler Error C2558" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2558" +ms.date: 11/04/2016 f1_keywords: ["C2558"] helpviewer_keywords: ["C2558"] -ms.assetid: 822b701e-dcae-423a-b21f-47f36aff9c90 --- # Compiler Error C2558 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2561.md b/docs/error-messages/compiler-errors-2/compiler-error-c2561.md index 13725de5eab..82c6dd35778 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2561.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2561.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2561" title: "Compiler Error C2561" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2561" +ms.date: 11/04/2016 f1_keywords: ["C2561"] helpviewer_keywords: ["C2561"] -ms.assetid: 0abe955b-53a6-4a3c-8362-b1a8eb40e8d1 --- # Compiler Error C2561 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2562.md b/docs/error-messages/compiler-errors-2/compiler-error-c2562.md index 309163d8207..b0a67f988fc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2562.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2562.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2562" title: "Compiler Error C2562" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2562" +ms.date: 11/04/2016 f1_keywords: ["C2562"] helpviewer_keywords: ["C2562"] -ms.assetid: 2c41e511-9952-4b98-9976-6b1523613e1b --- # Compiler Error C2562 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2563.md b/docs/error-messages/compiler-errors-2/compiler-error-c2563.md index 66545044f57..8a0d90be59e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2563.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2563.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2563" title: "Compiler Error C2563" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2563" +ms.date: 11/04/2016 f1_keywords: ["C2563"] helpviewer_keywords: ["C2563"] -ms.assetid: 54abba68-6458-4ca5-894d-3babdb7b3552 --- # Compiler Error C2563 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2566.md b/docs/error-messages/compiler-errors-2/compiler-error-c2566.md index cd9d7231952..728f0d13a2f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2566.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2566.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2566" title: "Compiler Error C2566" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2566" +ms.date: 11/04/2016 f1_keywords: ["C2566"] helpviewer_keywords: ["C2566"] -ms.assetid: 8fe10fb2-d974-432a-a56b-3a61b9a8dfc2 --- # Compiler Error C2566 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2567.md b/docs/error-messages/compiler-errors-2/compiler-error-c2567.md index ff63e64c0c5..9e75dfef04b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2567.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2567.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2567" title: "Compiler Error C2567" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2567" +ms.date: 11/04/2016 f1_keywords: ["C2567"] helpviewer_keywords: ["C2567"] -ms.assetid: 9c140ac9-7059-47e6-9ba1-e7939c8c0dc3 --- # Compiler Error C2567 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2568.md b/docs/error-messages/compiler-errors-2/compiler-error-c2568.md index 3cfa06515c1..20930150ec5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2568.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2568.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2568" title: "Compiler Error C2568" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2568" +ms.date: 11/04/2016 f1_keywords: ["C2568"] helpviewer_keywords: ["C2568"] -ms.assetid: 140b4dc9-5a88-4032-9aef-a224bb796f72 --- # Compiler Error C2568 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2569.md b/docs/error-messages/compiler-errors-2/compiler-error-c2569.md index f498d96fbc2..ca20d30dba3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2569.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2569.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2569" title: "Compiler Error C2569" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2569" +ms.date: 11/04/2016 f1_keywords: ["C2569"] helpviewer_keywords: ["C2569"] -ms.assetid: 092bed1e-f631-436c-9586-7750629f6fac --- # Compiler Error C2569 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2570.md b/docs/error-messages/compiler-errors-2/compiler-error-c2570.md index 98c3c74c9c5..29977145390 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2570.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2570.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2570" title: "Compiler Error C2570" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2570" +ms.date: 11/04/2016 f1_keywords: ["C2570"] helpviewer_keywords: ["C2570"] -ms.assetid: d65d0b32-2fac-464a-bcdf-0ebcedf3bf32 --- # Compiler Error C2570 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2571.md b/docs/error-messages/compiler-errors-2/compiler-error-c2571.md index 119376562ea..358d64654b2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2571.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2571.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2571" title: "Compiler Error C2571" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2571" +ms.date: 11/04/2016 f1_keywords: ["C2571"] helpviewer_keywords: ["C2571"] -ms.assetid: c6522616-dee9-4d7d-9bf8-30a7e1deaadf --- # Compiler Error C2571 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2572.md b/docs/error-messages/compiler-errors-2/compiler-error-c2572.md index 10f78960ea8..44a23efa094 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2572.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2572.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2572" title: "Compiler Error C2572" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2572" +ms.date: 11/04/2016 f1_keywords: ["C2572"] helpviewer_keywords: ["C2572"] -ms.assetid: f1a42d69-727d-4ce5-88c8-d5f55dea66ac --- # Compiler Error C2572 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2573.md b/docs/error-messages/compiler-errors-2/compiler-error-c2573.md index 6bf3cd235a1..28c8053df8d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2573.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2573.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2573" title: "Compiler Error C2573" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2573" +ms.date: 11/04/2016 f1_keywords: ["C2573"] helpviewer_keywords: ["C2573"] -ms.assetid: 2ce523da-da3c-4fb4-bad2-fbde663dbfbf --- # Compiler Error C2573 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2575.md b/docs/error-messages/compiler-errors-2/compiler-error-c2575.md index a4473d83722..1e9527cef38 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2575.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2575.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2575" title: "Compiler Error C2575" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2575" +ms.date: 11/04/2016 f1_keywords: ["C2575"] helpviewer_keywords: ["C2575"] -ms.assetid: 9eb45706-37ef-4481-b373-6d193ba13634 --- # Compiler Error C2575 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2577.md b/docs/error-messages/compiler-errors-2/compiler-error-c2577.md index 436ccaabab7..45c7e0f6b16 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2577.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2577.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2577" title: "Compiler Error C2577" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2577" +ms.date: 11/04/2016 f1_keywords: ["C2577"] helpviewer_keywords: ["C2577"] -ms.assetid: fc79ef83-8362-40a2-9257-8037c3195ce4 --- # Compiler Error C2577 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2579.md b/docs/error-messages/compiler-errors-2/compiler-error-c2579.md index a21f238a62c..f4e504ca778 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2579.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2579.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2579" title: "Compiler Error C2579" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2579" +ms.date: 11/04/2016 f1_keywords: ["C2579"] helpviewer_keywords: ["C2579"] -ms.assetid: ab090a8d-5462-4046-a1a6-8007e354dedb --- # Compiler Error C2579 From d95ce3e135aa25f862927cd9e3be97a1fd7f9939 Mon Sep 17 00:00:00 2001 From: Mark Rotteveel Date: Fri, 1 Aug 2025 10:28:08 +0200 Subject: [PATCH 1227/2255] Fix URLs to C++ Core Guidelines Replace repo-url with published site URL. The ids used are not valid on the GitHub repository (https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md), but are valid on the published site (https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines). --- docs/code-quality/c26400.md | 2 +- docs/code-quality/c26401.md | 2 +- docs/code-quality/c26402.md | 2 +- docs/code-quality/c26403.md | 2 +- docs/code-quality/c26405.md | 2 +- docs/code-quality/c26406.md | 2 +- docs/code-quality/c26407.md | 2 +- docs/code-quality/c26408.md | 2 +- docs/code-quality/c26410.md | 4 +- docs/code-quality/c26411.md | 2 +- docs/code-quality/c26415.md | 2 +- docs/code-quality/c26416.md | 2 +- docs/code-quality/c26417.md | 2 +- docs/code-quality/c26418.md | 2 +- docs/code-quality/c26426.md | 2 +- docs/code-quality/c26427.md | 2 +- docs/code-quality/c26429.md | 2 +- docs/code-quality/c26430.md | 2 +- docs/code-quality/c26431.md | 2 +- docs/code-quality/c26433.md | 4 +- docs/code-quality/c26434.md | 2 +- docs/code-quality/c26435.md | 4 +- docs/code-quality/c26436.md | 2 +- docs/code-quality/c26438.md | 2 +- docs/code-quality/c26440.md | 2 +- docs/code-quality/c26443.md | 4 +- docs/code-quality/c26445.md | 2 +- docs/code-quality/c26446.md | 2 +- docs/code-quality/c26447.md | 2 +- docs/code-quality/c26448.md | 2 +- docs/code-quality/c26451.md | 2 +- docs/code-quality/c26456.md | 2 +- docs/code-quality/c26457.md | 2 +- docs/code-quality/c26460.md | 2 +- docs/code-quality/c26461.md | 2 +- docs/code-quality/c26462.md | 2 +- docs/code-quality/c26463.md | 2 +- docs/code-quality/c26464.md | 2 +- docs/code-quality/c26465.md | 2 +- docs/code-quality/c26466.md | 2 +- docs/code-quality/c26471.md | 2 +- docs/code-quality/c26472.md | 2 +- docs/code-quality/c26473.md | 2 +- docs/code-quality/c26474.md | 2 +- docs/code-quality/c26475.md | 2 +- docs/code-quality/c26476.md | 2 +- docs/code-quality/c26477.md | 2 +- docs/code-quality/c26481.md | 4 +- docs/code-quality/c26482.md | 2 +- docs/code-quality/c26483.md | 2 +- docs/code-quality/c26485.md | 4 +- docs/code-quality/c26490.md | 2 +- docs/code-quality/c26491.md | 2 +- docs/code-quality/c26492.md | 2 +- docs/code-quality/c26493.md | 2 +- docs/code-quality/c26495.md | 2 +- docs/code-quality/c26496.md | 2 +- docs/code-quality/c26497.md | 2 +- docs/code-quality/c26812.md | 2 +- docs/code-quality/c26814.md | 2 +- docs/code-quality/c26818.md | 2 +- .../code-analysis-for-c-cpp-overview.md | 2 +- .../code-analysis-for-cpp-corecheck.md | 146 +++++++++--------- .../quick-start-code-analysis-for-c-cpp.md | 36 ++--- .../using-the-cpp-core-guidelines-checkers.md | 36 ++--- docs/cpp/void-cpp.md | 2 +- docs/overview/overview-of-cpp-development.md | 2 +- 67 files changed, 179 insertions(+), 179 deletions(-) diff --git a/docs/code-quality/c26400.md b/docs/code-quality/c26400.md index ccdd3a65e3c..99711c0b89c 100644 --- a/docs/code-quality/c26400.md +++ b/docs/code-quality/c26400.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["C26400"] ## Remarks -This check helps to enforce the *rule I.11: Never transfer ownership by a raw pointer (T\*), which is a subset of the rule *R.3: A raw pointer (a T\*) is non-owning*. Specifically, it warns on any call to `operator new`, which saves its result in a variable of raw pointer type. It also warns on calls to functions that return `gsl::owner` if their results are assigned to raw pointers. The idea is that you should clearly state ownership of memory resources. For more information, see the [C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r-resource-management). +This check helps to enforce the *rule I.11: Never transfer ownership by a raw pointer (T\*), which is a subset of the rule *R.3: A raw pointer (a T\*) is non-owning*. Specifically, it warns on any call to `operator new`, which saves its result in a variable of raw pointer type. It also warns on calls to functions that return `gsl::owner` if their results are assigned to raw pointers. The idea is that you should clearly state ownership of memory resources. For more information, see the [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r-resource-management). The easiest way to fix this warning is to use **`auto`** declaration if the resource is assigned immediately at the variable declaration. If this fix isn't possible, then we suggest that you use the type `gsl::owner`. The **`auto`** declarations initialized with operator **`new`** are "owners" because we assume that the result of any allocation is implicitly an owner pointer. We transfer this assumption to the **`auto`** variable and treat it as `owner`. diff --git a/docs/code-quality/c26401.md b/docs/code-quality/c26401.md index 023338c3780..c8b4c50b84d 100644 --- a/docs/code-quality/c26401.md +++ b/docs/code-quality/c26401.md @@ -20,7 +20,7 @@ Code analysis name: `DONT_DELETE_NON_OWNER` ## See also -[C++ Core Guidelines I.11](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#i11-never-transfer-ownership-by-a-raw-pointer-t-or-reference-t) +[C++ Core Guidelines I.11](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#i11-never-transfer-ownership-by-a-raw-pointer-t-or-reference-t) ## Examples diff --git a/docs/code-quality/c26402.md b/docs/code-quality/c26402.md index b79483f914f..16f0f248d2b 100644 --- a/docs/code-quality/c26402.md +++ b/docs/code-quality/c26402.md @@ -12,7 +12,7 @@ ms.assetid: b9d3d398-697a-4a5d-8bfe-9c667dffb90b ## Remarks -To avoid confusion about whether a pointer owns an object, a function that returns a movable object should allocate it on the stack. It should then return the object by value instead of returning a heap-allocated object. If pointer semantics are required, return a smart pointer instead of a raw pointer. For more information, see [C++ Core Guidelines R.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-ptr): *Warn if a function returns an object that was allocated within the function but has a move constructor. Suggest considering returning it by value instead.* +To avoid confusion about whether a pointer owns an object, a function that returns a movable object should allocate it on the stack. It should then return the object by value instead of returning a heap-allocated object. If pointer semantics are required, return a smart pointer instead of a raw pointer. For more information, see [C++ Core Guidelines R.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-ptr): *Warn if a function returns an object that was allocated within the function but has a move constructor. Suggest considering returning it by value instead.* ## Example diff --git a/docs/code-quality/c26403.md b/docs/code-quality/c26403.md index 2501899487d..70f1e92ac51 100644 --- a/docs/code-quality/c26403.md +++ b/docs/code-quality/c26403.md @@ -12,7 +12,7 @@ ms.assetid: 7e14868d-df86-4df3-98d3-71b1e80ba14e Owner pointers are like unique pointers: they own a resource exclusively, and manage release of the resource, or its transfers to other owners. This check validates that a local owner pointer properly maintains its resource through all execution paths in a function. If the resource wasn't transferred to another owner, or wasn't explicitly release, the checker warns, and points to the declaration of the pointer variable. -For more information, see the [C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r-resource-management). +For more information, see the [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r-resource-management). ## Remarks diff --git a/docs/code-quality/c26405.md b/docs/code-quality/c26405.md index cf14b63ea67..4384443ba29 100644 --- a/docs/code-quality/c26405.md +++ b/docs/code-quality/c26405.md @@ -12,7 +12,7 @@ ms.assetid: 2034d961-3ec5-4184-bbef-aa792e4c03c0 ## Remarks -If an owner pointer already points to a valid memory buffer, it must not be assigned to another value without releasing its current resource first. Such assignment may lead to a resource leak even if the resource address is copied into some raw pointer (because raw pointers shouldn't release resources). For more information, see the [C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r3-a-raw-pointer-a-t-is-non-owning). +If an owner pointer already points to a valid memory buffer, it must not be assigned to another value without releasing its current resource first. Such assignment may lead to a resource leak even if the resource address is copied into some raw pointer (because raw pointers shouldn't release resources). For more information, see the [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r3-a-raw-pointer-a-t-is-non-owning). Code analysis name: `DONT_ASSIGN_TO_VALID` diff --git a/docs/code-quality/c26406.md b/docs/code-quality/c26406.md index 1dc0b113bfb..0e4688cdc28 100644 --- a/docs/code-quality/c26406.md +++ b/docs/code-quality/c26406.md @@ -10,7 +10,7 @@ ms.assetid: 02fb8e23-1989-4e24-a5a5-e30f71d00325 > Do not assign a raw pointer to an `owner` (r.3) -This warning enforces R.3 from the C++ Core Guidelines. For more information, see [C++ Core Guidelines R.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r3-a-raw-pointer-a-t-is-non-owning). +This warning enforces R.3 from the C++ Core Guidelines. For more information, see [C++ Core Guidelines R.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r3-a-raw-pointer-a-t-is-non-owning). ## Remarks diff --git a/docs/code-quality/c26407.md b/docs/code-quality/c26407.md index d082e566811..0a5af3152a4 100644 --- a/docs/code-quality/c26407.md +++ b/docs/code-quality/c26407.md @@ -10,7 +10,7 @@ ms.assetid: 5539907a-bfa0-40db-82a6-b860c97209e1 > Prefer scoped objects, don't heap-allocate unnecessarily (r.5) -To avoid unnecessary use of pointers, we try to detect common patterns of local allocations. For example, we detect when the result of a call to operator **`new`** is stored in a local variable and later explicitly deleted. This check supports the [C++ Core Guidelines rule R.5](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r5-prefer-scoped-objects-dont-heap-allocate-unnecessarily): *Prefer scoped objects, don't heap-allocate unnecessarily*. To fix the issue, use an RAII type instead of a raw pointer, and allow it to deal with resources. Obviously, it isn't necessary to create a wrapper type to allocate a single object. Instead, a local variable of the object's type would work better. +To avoid unnecessary use of pointers, we try to detect common patterns of local allocations. For example, we detect when the result of a call to operator **`new`** is stored in a local variable and later explicitly deleted. This check supports the [C++ Core Guidelines rule R.5](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r5-prefer-scoped-objects-dont-heap-allocate-unnecessarily): *Prefer scoped objects, don't heap-allocate unnecessarily*. To fix the issue, use an RAII type instead of a raw pointer, and allow it to deal with resources. Obviously, it isn't necessary to create a wrapper type to allocate a single object. Instead, a local variable of the object's type would work better. ## Remarks diff --git a/docs/code-quality/c26408.md b/docs/code-quality/c26408.md index 159c8cbfb03..c426b63f2a1 100644 --- a/docs/code-quality/c26408.md +++ b/docs/code-quality/c26408.md @@ -22,7 +22,7 @@ Code analysis name: `NO_MALLOC_FREE` ## See also -[C++ Core Guidelines R.10](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r10-avoid-malloc-and-free) +[C++ Core Guidelines R.10](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r10-avoid-malloc-and-free) ## Example diff --git a/docs/code-quality/c26410.md b/docs/code-quality/c26410.md index ea77c9e0df1..57e0b75a4c7 100644 --- a/docs/code-quality/c26410.md +++ b/docs/code-quality/c26410.md @@ -10,11 +10,11 @@ ms.assetid: d1547faf-96c6-48da-90f5-841154d0e878 > The parameter '*parameter*' is a reference to const unique pointer, use `const T*` or `const T&` instead (r.32) -Generally, references to const unique pointer are meaningless. They can safely be replaced by a raw reference or a pointer. This warning enforces [C++ Core Guidelines rule R.32](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r32-take-a-unique_ptrwidget-parameter-to-express-that-a-function-assumes-ownership-of-a-widget). +Generally, references to const unique pointer are meaningless. They can safely be replaced by a raw reference or a pointer. This warning enforces [C++ Core Guidelines rule R.32](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r32-take-a-unique_ptrwidget-parameter-to-express-that-a-function-assumes-ownership-of-a-widget). ## Remarks -- Unique pointer checks have rather broad criteria to identify smart pointers. The [C++ Core Guidelines rule R.31](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r31-if-you-have-non-std-smart-pointers-follow-the-basic-pattern-from-std): *If you have non-std smart pointers, follow the basic pattern from std describes the unique pointer and shared pointer concepts*. The heuristic is simple, but may lead to surprises: a smart pointer type is any type that defines either `operator->` or `operator*`. A copy-able type (shared pointer) must have either a public copy constructor or an overloaded assignment operator that deals with a non-Rvalue reference parameter. +- Unique pointer checks have rather broad criteria to identify smart pointers. The [C++ Core Guidelines rule R.31](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r31-if-you-have-non-std-smart-pointers-follow-the-basic-pattern-from-std): *If you have non-std smart pointers, follow the basic pattern from std describes the unique pointer and shared pointer concepts*. The heuristic is simple, but may lead to surprises: a smart pointer type is any type that defines either `operator->` or `operator*`. A copy-able type (shared pointer) must have either a public copy constructor or an overloaded assignment operator that deals with a non-Rvalue reference parameter. - Template code may produce noisy warnings. Keep in mind that templates can be instantiated with various type parameters with different levels of indirection, including references. Some warnings may not be obvious and fixes may require some rework of templates (for example, explicit removal of reference indirection). If template code is intentionally generic, the warning can be suppressed. diff --git a/docs/code-quality/c26411.md b/docs/code-quality/c26411.md index d0ff131460a..e4dd8959324 100644 --- a/docs/code-quality/c26411.md +++ b/docs/code-quality/c26411.md @@ -10,7 +10,7 @@ ms.assetid: 5134e51e-8b92-4ee7-94c3-022e318a0e24 > The parameter '*parameter*' is a reference to unique pointer and it is never reassigned or reset, use `T*` or `T&` instead (r.33) -When you pass a unique pointer to a function by reference, it implies that its resource may be released or transferred inside the function. If the function uses its parameter only to access the resource, it's safe to pass a raw pointer or a reference. For more information, see [C++ Core Guidelines rule R.33](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r33-take-a-unique_ptrwidget-parameter-to-express-that-a-function-reseats-thewidget): *Take a unique_ptr\& parameter to express that a function reseats the widget*. +When you pass a unique pointer to a function by reference, it implies that its resource may be released or transferred inside the function. If the function uses its parameter only to access the resource, it's safe to pass a raw pointer or a reference. For more information, see [C++ Core Guidelines rule R.33](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r33-take-a-unique_ptrwidget-parameter-to-express-that-a-function-reseats-thewidget): *Take a unique_ptr\& parameter to express that a function reseats the widget*. ## Remarks diff --git a/docs/code-quality/c26415.md b/docs/code-quality/c26415.md index 8dfc40ae410..5438faa1ebd 100644 --- a/docs/code-quality/c26415.md +++ b/docs/code-quality/c26415.md @@ -11,7 +11,7 @@ ms.assetid: 4165f70a-78ae-4a03-b256-c4bd74b02d09 > Smart pointer parameter is used only to access contained pointer. Use T* or T& instead. **C++ Core Guidelines**: -[R.30](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r30-take-smart-pointers-as-parameters-only-to-explicitly-express-lifetime-semantics): Take smart pointers as parameters only to explicitly express lifetime semantics +[R.30](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r30-take-smart-pointers-as-parameters-only-to-explicitly-express-lifetime-semantics): Take smart pointers as parameters only to explicitly express lifetime semantics Using a smart pointer type to pass data to a function indicates that the target function needs to manage the lifetime of the contained object. However, say the function only uses the smart pointer to access the contained object and never actually calls any code that may lead to its deallocation (that is, never affects its lifetime). Then there's usually no need to complicate the interface with smart pointers. A plain pointer or reference to the contained object is preferred. diff --git a/docs/code-quality/c26416.md b/docs/code-quality/c26416.md index 1bd6192adc2..658adfea026 100644 --- a/docs/code-quality/c26416.md +++ b/docs/code-quality/c26416.md @@ -11,7 +11,7 @@ ms.assetid: f158207b-45cf-44cf-8e4b-b5b75b56ea0e > Shared pointer parameter is passed by rvalue reference. Pass by value instead. **C++ Core Guidelines**: -[R.34](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r34-take-a-shared_ptrwidget-parameter-to-express-that-a-function-is-part-owner): Take a shared_ptr\ parameter to express that a function is part owner +[R.34](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r34-take-a-shared_ptrwidget-parameter-to-express-that-a-function-is-part-owner): Take a shared_ptr\ parameter to express that a function is part owner Passing a shared pointer by rvalue reference is rarely necessary. Unless it's an implementation of move semantics for a shared pointer type itself, shared pointer objects can be safely passed by value. Using rvalue reference may be also an indication that unique pointer is more appropriate since it clearly transfers unique ownership from caller to callee. diff --git a/docs/code-quality/c26417.md b/docs/code-quality/c26417.md index 7659d012506..3ab549beac9 100644 --- a/docs/code-quality/c26417.md +++ b/docs/code-quality/c26417.md @@ -11,7 +11,7 @@ ms.assetid: 0e09fcc6-f9eb-4404-b51e-5815705c6afb > Shared pointer parameter is passed by reference and not reset or reassigned. Use T* or T& instead. **C++ Core Guidelines**: -[R.35](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r35-take-a-shared_ptrwidget-parameter-to-express-that-a-function-might-reseat-the-shared-pointer): Take a shared_ptr\& parameter to express that a function might reseat the shared pointer +[R.35](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r35-take-a-shared_ptrwidget-parameter-to-express-that-a-function-might-reseat-the-shared-pointer): Take a shared_ptr\& parameter to express that a function might reseat the shared pointer Passing shared pointers by reference may be useful in scenarios where called code updates the target of the smart pointer object, and its caller expects to see such updates. Using a reference solely to reduce costs of passing a shared pointer is questionable. If called code only accesses the target object and never manages its lifetime, it's safer to pass a raw pointer or reference, rather than to expose resource management details. diff --git a/docs/code-quality/c26418.md b/docs/code-quality/c26418.md index d1a07d1b8d4..30c44cf0d11 100644 --- a/docs/code-quality/c26418.md +++ b/docs/code-quality/c26418.md @@ -11,7 +11,7 @@ ms.assetid: d2c84a40-8a5d-4018-92c2-6498cdd9b541 > Shared pointer parameter is not copied or moved. Use T* or T& instead. **C++ Core Guidelines**: -[R.36](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r36-take-a-const-shared_ptrwidget-parameter-to-express-that-it-might-retain-a-reference-count-to-the-object-): Take a const shared_ptr\& parameter to express that it might retain a reference count to the object +[R.36](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r36-take-a-const-shared_ptrwidget-parameter-to-express-that-it-might-retain-a-reference-count-to-the-object-): Take a const shared_ptr\& parameter to express that it might retain a reference count to the object If a shared pointer parameter is passed by value or by reference to a constant object, the function is expected to take control of the target object's lifetime without affecting the caller. The code should either copy or move the shared pointer parameter to another shared pointer object, or pass it along to other code by invoking functions that accept shared pointers. Otherwise, a plain pointer or reference may be feasible. diff --git a/docs/code-quality/c26426.md b/docs/code-quality/c26426.md index 818d76d22de..d889960eee4 100644 --- a/docs/code-quality/c26426.md +++ b/docs/code-quality/c26426.md @@ -12,7 +12,7 @@ ms.assetid: 6fb5f6d2-b097-47f8-8b49-f2fd4e9bef0e ## C++ Core Guidelines -[I.22](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#i22-avoid-complex-initialization-of-global-objects): Avoid complex initialization of global objects +[I.22](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#i22-avoid-complex-initialization-of-global-objects): Avoid complex initialization of global objects The order of execution of initializers for global objects may be inconsistent or undefined, which can lead to issues that are hard to reproduce and investigate. To avoid such problems, global initializers shouldn't depend on external code that's executed at run time, and that may depend on data that's not yet initialized. This rule flags cases where global objects call functions to obtain their initial values. diff --git a/docs/code-quality/c26427.md b/docs/code-quality/c26427.md index 556e26de751..e71f09e9561 100644 --- a/docs/code-quality/c26427.md +++ b/docs/code-quality/c26427.md @@ -11,7 +11,7 @@ ms.assetid: 8fb95a44-8704-45b1-bc55-eccd59b1db2f > Global initializer accesses extern object '*symbol*' (i.22) **C++ Core Guidelines**: -[I.22](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#i22-avoid-complex-initialization-of-global-objects): Avoid complex initialization of global objects +[I.22](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#i22-avoid-complex-initialization-of-global-objects): Avoid complex initialization of global objects Global objects may be initialized in an inconsistent or undefined order, which means that interdependency between them is risky and should be avoided. This guideline is applicable when initializers refer to another object that's considered to be **`extern`**. diff --git a/docs/code-quality/c26429.md b/docs/code-quality/c26429.md index 95435952437..96726440aa0 100644 --- a/docs/code-quality/c26429.md +++ b/docs/code-quality/c26429.md @@ -11,7 +11,7 @@ ms.assetid: 4e1c74d5-7307-436c-927b-f74ae863282c > Symbol is never tested for nullness, it can be marked as `gsl::not_null`. **C++ Core Guidelines**: -[F.23](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value): Use a `not_null` to indicate that "null" isn't a valid value +[F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value): Use a `not_null` to indicate that "null" isn't a valid value It's a common practice to use asserts to enforce assumptions about the validity of pointer values. The problem is, asserts don't expose assumptions through the interface (such as in return types or parameters). Asserts are also harder to maintain and keep in sync with other code changes. The recommendation is to use `gsl::not_null` from the Guidelines Support Library to mark resources that should never have a null value. The rule `USE_NOTNULL` helps to identify places that omit checks for null and hence can be updated to use `gsl::not_null`. diff --git a/docs/code-quality/c26430.md b/docs/code-quality/c26430.md index 230352b2e9c..d417983a038 100644 --- a/docs/code-quality/c26430.md +++ b/docs/code-quality/c26430.md @@ -11,7 +11,7 @@ ms.assetid: 3dca2626-8102-4eed-8ff3-73eb3d5c328c > Symbol is not tested for nullness on all paths. **C++ Core Guidelines**: -[F.23](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value): Use a not_null\ to indicate that "null" isn't a valid value +[F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value): Use a not_null\ to indicate that "null" isn't a valid value If code ever checks pointer variables for null, it should do so consistently and validate pointers on all paths. Sometimes overaggressive checking for null is still better than the possibility of a hard crash in one of the complicated branches. Ideally, such code should be refactored to be less complex (by splitting it into multiple functions), and to rely on markers like `gsl::not_null`. These markers allow the code to isolate parts of the algorithm that can make safe assumptions about valid pointer values. The rule `TEST_ON_ALL_PATHS` helps to find places where null checks are inconsistent (meaning assumptions may require review). Or, it finds actual bugs where a potential null value can bypass null checks in some of the code paths. diff --git a/docs/code-quality/c26431.md b/docs/code-quality/c26431.md index 4b78314a6d2..ded200ef169 100644 --- a/docs/code-quality/c26431.md +++ b/docs/code-quality/c26431.md @@ -11,7 +11,7 @@ ms.assetid: 40be6032-c8de-49ab-8e43-e8eedc0ca0ba > The type of expression '*expr*' is already `gsl::not_null`. Do not test it for nullness (f.23) **C++ Core Guidelines**: -[F.23](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value): Use a not_null\ to indicate that "null" isn't a valid value +[F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value): Use a not_null\ to indicate that "null" isn't a valid value The marker type `gsl::not_null` from the Guidelines Support Library is used to clearly indicate values that are never null pointers. It causes a hard failure if the assumption doesn't hold at run time. So, obviously, there's no need to check for null if an expression evaluates to a result of type `gsl::not_null`. diff --git a/docs/code-quality/c26433.md b/docs/code-quality/c26433.md index f78b894e0af..31a482a9743 100644 --- a/docs/code-quality/c26433.md +++ b/docs/code-quality/c26433.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["C26433"] ## C++ Core Guidelines -[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md) +[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines) It's not required by the compiler to clearly state that a virtual function overrides its base. Not specifying `override` can cause subtle issues during maintenance if the virtual specification ever changes in the class hierarchy. It also lowers readability and makes an interface's polymorphic behavior less obvious. If a function is clearly marked as `override`, the compiler can check the consistency of the interface, and help to spot issues before they manifest themselves at run time. @@ -44,4 +44,4 @@ public: ## See also -[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md) +[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines) diff --git a/docs/code-quality/c26434.md b/docs/code-quality/c26434.md index 0bdfe9d1731..03e26c7b2f8 100644 --- a/docs/code-quality/c26434.md +++ b/docs/code-quality/c26434.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["C26434"] ## C++ Core Guidelines -[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md) +[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines) ## Remarks diff --git a/docs/code-quality/c26435.md b/docs/code-quality/c26435.md index ab4ec78c93b..ec4fd01356e 100644 --- a/docs/code-quality/c26435.md +++ b/docs/code-quality/c26435.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["C26435"] ## C++ Core Guidelines -[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md) +[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines) To improve readability, the kind of virtual behavior should be stated clearly and without unnecessary redundancy. Even though multiple virtual specifiers can be used simultaneously, it's better to specify one at a time to emphasize the most important aspect of virtual behavior. The following order of importance is apparent: @@ -49,4 +49,4 @@ public: ## See also -[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md) +[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines) diff --git a/docs/code-quality/c26436.md b/docs/code-quality/c26436.md index 222d58fb205..ef07743865b 100644 --- a/docs/code-quality/c26436.md +++ b/docs/code-quality/c26436.md @@ -10,7 +10,7 @@ description: CppCoreCheck rule that enforces C++ Core Guidelines C.35 > The type '*symbol*' with a virtual function needs either public virtual or protected non-virtual destructor (c.35) -[**C++ Core Guidelines**: C.35](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c35-a-base-class-destructor-should-be-either-public-and-virtual-or-protected-and-non-virtual): A base class destructor should be either public and virtual, or protected and nonvirtual +[**C++ Core Guidelines**: C.35](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c35-a-base-class-destructor-should-be-either-public-and-virtual-or-protected-and-non-virtual): A base class destructor should be either public and virtual, or protected and nonvirtual If a class defines a virtual function it becomes polymorphic, which implies that derived classes can change its behavior including resource management and destruction logic. Because client code may call polymorphic types via pointers to base classes, there's no way a client can explicitly choose which behavior is appropriate without downcasting. To make sure that resources are managed consistently and destruction occurs according to the actual type's rules, you should define a public virtual destructor. If the type hierarchy is designed to disallow client code to destroy objects directly, destructors should be defined as protected non-virtual. diff --git a/docs/code-quality/c26438.md b/docs/code-quality/c26438.md index e6c696ca31d..2317d815139 100644 --- a/docs/code-quality/c26438.md +++ b/docs/code-quality/c26438.md @@ -11,7 +11,7 @@ ms.assetid: c7b3f59c-fb2f-4816-bda4-0fad23c80d83 > Avoid `goto` (es.76) **C++ Core Guidelines**:\ -[ES.76](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#es76-avoid-goto): Avoid goto +[ES.76](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es76-avoid-goto): Avoid goto The use of **`goto`** is widely considered a dangerous and error-prone practice. It's acceptable only in generated code, such as in a parser generated from a grammar. With modern C++ features and utilities provided by the Guidelines Support Library, it should be easy to avoid **`goto`** altogether. diff --git a/docs/code-quality/c26440.md b/docs/code-quality/c26440.md index edeb1db827c..bf4207b1f02 100644 --- a/docs/code-quality/c26440.md +++ b/docs/code-quality/c26440.md @@ -10,7 +10,7 @@ description: CppCoreCheck rule C26440 that enforces C++ Core Guidelines F.6 > Function can be declared 'noexcept'. -[**C++ Core Guidelines** F.6](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f6-if-your-function-may-not-throw-declare-it-noexcept): If your function may not throw, declare it `noexcept` +[**C++ Core Guidelines** F.6](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f6-if-your-function-may-not-throw-declare-it-noexcept): If your function may not throw, declare it `noexcept` If code isn't supposed to cause any exceptions, it should be marked by using the `noexcept` specifier. This annotation helps to simplify error handling on the client code side, and enables the compiler to do more optimizations. diff --git a/docs/code-quality/c26443.md b/docs/code-quality/c26443.md index 090995ebdaf..5b9b55f44b2 100644 --- a/docs/code-quality/c26443.md +++ b/docs/code-quality/c26443.md @@ -13,7 +13,7 @@ This warning was removed in Visual Studio 16.8 to reflect [changes to C.128 in t ## C++ Core Guidelines -[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md). +[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines). The current consensus on the Core Guidelines is to exclude destructors from the 'override explicitly' recommendation. @@ -44,4 +44,4 @@ public: ## See also -[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md) +[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines) diff --git a/docs/code-quality/c26445.md b/docs/code-quality/c26445.md index 2602c8bfa53..e81beeba280 100644 --- a/docs/code-quality/c26445.md +++ b/docs/code-quality/c26445.md @@ -13,7 +13,7 @@ A reference to `gsl::span` or `std::string_view` may be an indication of a lifet ## C++ Core Guidelines -[GSL.view: Views](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#gslview-views) +[GSL.view: Views](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#gslview-views) This rule catches subtle lifetime issues that may occur in code migrated from standard containers to new span and view types. Such types can be considered as "references to buffers." Using a reference to a span or view creates an extra layer of indirection. Such indirection is often unnecessary and can be confusing for maintainers. Spans are cheap to copy and can be returned by value from function calls. Obviously, such call results should never be referenced. diff --git a/docs/code-quality/c26446.md b/docs/code-quality/c26446.md index 39091ddfde7..c63bb166bf6 100644 --- a/docs/code-quality/c26446.md +++ b/docs/code-quality/c26446.md @@ -9,7 +9,7 @@ helpviewer_keywords: ["C26446"] > Prefer to use gsl::at() instead of unchecked subscript operator (bounds.4). -C++ Core Guidelines: [Bounds.4: Don't use standard-library functions and types that are not bounds-checked](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#probounds-bounds-safety-profile). +C++ Core Guidelines: [Bounds.4: Don't use standard-library functions and types that are not bounds-checked](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#probounds-bounds-safety-profile). ## Remarks diff --git a/docs/code-quality/c26447.md b/docs/code-quality/c26447.md index 8c4c2ef8202..daf04cf103c 100644 --- a/docs/code-quality/c26447.md +++ b/docs/code-quality/c26447.md @@ -10,7 +10,7 @@ helpviewer_keywords: ["C26447"] > The function is declared `noexcept` but calls function *function_name* that may throw exceptions (f.6). C++ Core Guidelines:\ -[F.6: If your function may not throw, declare it noexcept](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f6-if-your-function-may-not-throw-declare-it-noexcept). +[F.6: If your function may not throw, declare it noexcept](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f6-if-your-function-may-not-throw-declare-it-noexcept). ## Remarks diff --git a/docs/code-quality/c26448.md b/docs/code-quality/c26448.md index 6173ec82b55..3da19b9eca0 100644 --- a/docs/code-quality/c26448.md +++ b/docs/code-quality/c26448.md @@ -9,7 +9,7 @@ helpviewer_keywords: ["C26448"] > Consider using `gsl::finally` if final action is intended (gsl.util) -C++ Core Guidelines: [GSL.util: Utilities](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-utilities) +C++ Core Guidelines: [GSL.util: Utilities](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-utilities) The Guidelines Support Library provides a convenient utility to implement the *final action* concept. Since the C++ language doesn't support **try-finally** constructs, it became common to implement custom cleanup types that would invoke arbitrary actions on destruction. The `gsl::finally` utility is implemented in this way and provides a more uniform way to perform final actions across a code base. diff --git a/docs/code-quality/c26451.md b/docs/code-quality/c26451.md index 0067e427188..3a2246a977b 100644 --- a/docs/code-quality/c26451.md +++ b/docs/code-quality/c26451.md @@ -49,4 +49,4 @@ void leftshift(int i) noexcept [C26452](c26452.md)\ [C26453](c26453.md)\ [C26454](c26454.md)\ -[ES.103: Don't overflow](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Res-overflow) +[ES.103: Don't overflow](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-overflow) diff --git a/docs/code-quality/c26456.md b/docs/code-quality/c26456.md index 0abedce51bc..d027fb7be16 100644 --- a/docs/code-quality/c26456.md +++ b/docs/code-quality/c26456.md @@ -21,4 +21,4 @@ Code analysis name: `DONT_HIDE_OPERATORS` ## See also -[C++ Core Guideline c.128](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c128-virtual-functions-should-specify-exactly-one-of-virtual-override-or-final) +[C++ Core Guideline c.128](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c128-virtual-functions-should-specify-exactly-one-of-virtual-override-or-final) diff --git a/docs/code-quality/c26457.md b/docs/code-quality/c26457.md index e1a5560feb9..45027983705 100644 --- a/docs/code-quality/c26457.md +++ b/docs/code-quality/c26457.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["C26457"] ## Remarks -Excerpt from the [C++ Core Guideline ES.48](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#es48-avoid-casts): +Excerpt from the [C++ Core Guideline ES.48](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es48-avoid-casts): > Never cast to `(void)` to ignore a `[[nodiscard]]` return value. If you deliberately want to discard such a result, first think hard about whether that is really a good idea (there is usually a good reason the author of the function or of the return type used `[[nodiscard]]` in the first place). If you still think it's appropriate and your code reviewer agrees, use `std::ignore =` to turn off the warning which is simple, portable, and easy to grep. diff --git a/docs/code-quality/c26460.md b/docs/code-quality/c26460.md index 2307b0d5928..008786d1a01 100644 --- a/docs/code-quality/c26460.md +++ b/docs/code-quality/c26460.md @@ -39,4 +39,4 @@ void Function2(MyStruct& myStruct) ## See also -[C++ Core Guidelines con.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rconst-ref). +[C++ Core Guidelines con.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-ref). diff --git a/docs/code-quality/c26461.md b/docs/code-quality/c26461.md index 85cd180b56f..eb18934fd4d 100644 --- a/docs/code-quality/c26461.md +++ b/docs/code-quality/c26461.md @@ -45,4 +45,4 @@ void Function2(MyStruct* myStruct) ## See also -[C++ Core Guidelines con.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rconst-ref). +[C++ Core Guidelines con.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-ref). diff --git a/docs/code-quality/c26462.md b/docs/code-quality/c26462.md index f39a230769a..376f8616158 100644 --- a/docs/code-quality/c26462.md +++ b/docs/code-quality/c26462.md @@ -31,4 +31,4 @@ void function1(int* ptr) ## See also -[C++ Core Guidelines con.4](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#con4-use-const-to-define-objects-with-values-that-do-not-change-after-construction). +[C++ Core Guidelines con.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#con4-use-const-to-define-objects-with-values-that-do-not-change-after-construction). diff --git a/docs/code-quality/c26463.md b/docs/code-quality/c26463.md index a23cd9d028f..432d73548ef 100644 --- a/docs/code-quality/c26463.md +++ b/docs/code-quality/c26463.md @@ -17,4 +17,4 @@ Code analysis name: `USE_CONST_FOR_ELEMENTS` ## See also -[C++ Core Guidelines con.4](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#con4-use-const-to-define-objects-with-values-that-do-not-change-after-construction). +[C++ Core Guidelines con.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#con4-use-const-to-define-objects-with-values-that-do-not-change-after-construction). diff --git a/docs/code-quality/c26464.md b/docs/code-quality/c26464.md index c96634aba1a..f380a3b6548 100644 --- a/docs/code-quality/c26464.md +++ b/docs/code-quality/c26464.md @@ -17,4 +17,4 @@ Code analysis name: `USE_CONST_POINTER_FOR_ELEMENTS` ## See also -[C++ Core Guidelines con.4](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#con4-use-const-to-define-objects-with-values-that-do-not-change-after-construction). +[C++ Core Guidelines con.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#con4-use-const-to-define-objects-with-values-that-do-not-change-after-construction). diff --git a/docs/code-quality/c26465.md b/docs/code-quality/c26465.md index d6b7fa8316e..1ca3fee5d14 100644 --- a/docs/code-quality/c26465.md +++ b/docs/code-quality/c26465.md @@ -11,7 +11,7 @@ description: CppCoreCheck rule C26465 that enforces C++ Core Guidelines Type.3 ## See also -[C++ Core Guidelines Type.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Pro-type-constcast) +[C++ Core Guidelines Type.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-constcast) ## Example diff --git a/docs/code-quality/c26466.md b/docs/code-quality/c26466.md index 13c4d70db42..786d95159bc 100644 --- a/docs/code-quality/c26466.md +++ b/docs/code-quality/c26466.md @@ -11,7 +11,7 @@ description: CppCoreCheck rule that enforces C++ Core Guidelines Type.2 ## See also -[C++ Core Guidelines Type.2](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Pro-type-downcast) +[C++ Core Guidelines Type.2](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-downcast) ## Example diff --git a/docs/code-quality/c26471.md b/docs/code-quality/c26471.md index e525394288a..f44d8335af7 100644 --- a/docs/code-quality/c26471.md +++ b/docs/code-quality/c26471.md @@ -29,4 +29,4 @@ void function(void* pValue) ## See also -[C++ Core Guidelines Type.1](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Pro-type-reinterpretcast) +[C++ Core Guidelines Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-reinterpretcast) diff --git a/docs/code-quality/c26472.md b/docs/code-quality/c26472.md index 3a18f09f0e8..814fae7c918 100644 --- a/docs/code-quality/c26472.md +++ b/docs/code-quality/c26472.md @@ -11,7 +11,7 @@ ms.assetid: 51e215a7-0e0a-4e6c-bff1-805bf5b1af29 > Don't use a static_cast for arithmetic conversions. Use brace initialization, `gsl::narrow_cast`, or `gsl::narrow`. **C++ Core Guidelines**: -[Type.1](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#prosafety-type-safety-profile): Avoid casts +[Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#prosafety-type-safety-profile): Avoid casts This rule helps to find places where static casts are used to convert between integral types. These casts are unsafe because the compiler wouldn't warn if any data loss occurs. Brace initializers are better for the cases where constants are used, and a compiler error is desired. There are also utilities from the Guidelines Support Library that help to describe intentions clearly: diff --git a/docs/code-quality/c26473.md b/docs/code-quality/c26473.md index 6ff7913be8b..6cd55d5897b 100644 --- a/docs/code-quality/c26473.md +++ b/docs/code-quality/c26473.md @@ -11,7 +11,7 @@ ms.assetid: d88aaa57-0003-421f-8377-4e6a5c27f2df > Don't cast between pointer types where the source type and the target type are the same. **C++ Core Guidelines**: -[Type.1](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#prosafety-type-safety-profile): Avoid casts +[Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#prosafety-type-safety-profile): Avoid casts This rule helps to remove unnecessary or suspicious casts. Obviously, when a type is converted to itself, such a conversion is ineffective. Yet the fact that the cast is used may indicate a subtle design issue or a potential for regression if types change in future. It's always safer to use as few casts as possible. diff --git a/docs/code-quality/c26474.md b/docs/code-quality/c26474.md index 30fbf70beff..ca1e9867418 100644 --- a/docs/code-quality/c26474.md +++ b/docs/code-quality/c26474.md @@ -11,7 +11,7 @@ ms.assetid: 1e23a8e6-97fa-47f5-a279-b52aa2efafa4 > Don't cast between pointer types when the conversion could be implicit. **C++ Core Guidelines**:\ -[Type.1](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#prosafety-type-safety-profile): Avoid casts +[Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#prosafety-type-safety-profile): Avoid casts In some cases, implicit casts between pointer types are safe and don't require you to write a specific cast expression. This rule finds instances of unnecessary casts you can safely remove. diff --git a/docs/code-quality/c26475.md b/docs/code-quality/c26475.md index b3856c661f1..da0daf01af3 100644 --- a/docs/code-quality/c26475.md +++ b/docs/code-quality/c26475.md @@ -11,7 +11,7 @@ ms.assetid: 4ed71cf8-f155-4961-b4fe-77feb3b880c3 > Do not use function style C-casts. **C++ Core Guidelines**: -[ES.49](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#es49-if-you-must-use-a-cast-use-a-named-cast): If you must use a cast, use a named cast +[ES.49](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es49-if-you-must-use-a-cast-use-a-named-cast): If you must use a cast, use a named cast Function-style casts (for example, `int(1.1)`) are another form of C-style casts (like `(int)1.1`), which have questionable safety. Specifically, the compiler doesn't try to check if any data loss can occur either in C-casts or in function casts. In both cases, it's better either to avoid casting or to use a braced initializer if possible. If neither works, static casts may be suitable, but it's still better to use utilities from the Guidelines Support Library: diff --git a/docs/code-quality/c26476.md b/docs/code-quality/c26476.md index d942009432a..b07cb80eeab 100644 --- a/docs/code-quality/c26476.md +++ b/docs/code-quality/c26476.md @@ -21,4 +21,4 @@ Code analysis name: `USE_VARIANT` ## See also -[C++ Core Guideline C.181](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Ru-naked) +[C++ Core Guideline C.181](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Ru-naked) diff --git a/docs/code-quality/c26477.md b/docs/code-quality/c26477.md index fe713f5618e..7da0611abfa 100644 --- a/docs/code-quality/c26477.md +++ b/docs/code-quality/c26477.md @@ -21,4 +21,4 @@ Code analysis name: `USE_NULLPTR_NOT_CONSTANT` ## See also -[C++ Core Guideline ES.47](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Res-nullptr) +[C++ Core Guideline ES.47](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-nullptr) diff --git a/docs/code-quality/c26481.md b/docs/code-quality/c26481.md index 051b2c96ee5..31249a98f10 100644 --- a/docs/code-quality/c26481.md +++ b/docs/code-quality/c26481.md @@ -12,11 +12,11 @@ ms.assetid: 4fd8694d-b45b-4163-b2d5-88c4889d00ed ## Remarks -This check supports the [C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md) rule [I.13](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Ri-array): *Do not pass an array as a single pointer*. Whenever raw pointers are used in arithmetic operations they should be replaced with safer kinds of buffers, such as `span` or `vector`. +This check supports the [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines) rule [I.13](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Ri-array): *Do not pass an array as a single pointer*. Whenever raw pointers are used in arithmetic operations they should be replaced with safer kinds of buffers, such as `span` or `vector`. This check is more restrictive than I.13: it doesn't skip `zstring` or `czstring` types. -C26481 and [C26485](c26485.md) come from the [Bounds Safety Profile](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-bounds) rules. These rules were implemented in the first release of the C++ Core Guidelines Checker. They're applicable to the raw pointers category since they help to avoid unsafe use of raw pointers. +C26481 and [C26485](c26485.md) come from the [Bounds Safety Profile](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-bounds) rules. These rules were implemented in the first release of the C++ Core Guidelines Checker. They're applicable to the raw pointers category since they help to avoid unsafe use of raw pointers. ## Example diff --git a/docs/code-quality/c26482.md b/docs/code-quality/c26482.md index e360a51d10e..5f278d80082 100644 --- a/docs/code-quality/c26482.md +++ b/docs/code-quality/c26482.md @@ -11,7 +11,7 @@ description: CppCoreCheck rule C26482 that enforces C++ Core Guidelines Bounds.2 ## See also -[C++ Core Guidelines Bounds.2](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-bounds) +[C++ Core Guidelines Bounds.2](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-bounds) ## Example diff --git a/docs/code-quality/c26483.md b/docs/code-quality/c26483.md index 5e031b24488..73a447ebd4b 100644 --- a/docs/code-quality/c26483.md +++ b/docs/code-quality/c26483.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["C26483"] ## See also -[C++ Core Guidelines Bounds.2](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-bounds) +[C++ Core Guidelines Bounds.2](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-bounds) ## Example diff --git a/docs/code-quality/c26485.md b/docs/code-quality/c26485.md index e0aa010236d..ef77b057905 100644 --- a/docs/code-quality/c26485.md +++ b/docs/code-quality/c26485.md @@ -12,9 +12,9 @@ ms.assetid: 8915ad2d-7fd6-4bbc-abe4-0b3292ea2170 ## Remarks -Like [C26481](c26481.md), this check helps to enforce the [C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md) rule [I.13](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Ri-array): *Do not pass an array as a single pointer*. The rule detects places where static array type information is lost from decay to a raw pointer. The `zstring` and `czstring` types aren't excluded. +Like [C26481](c26481.md), this check helps to enforce the [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines) rule [I.13](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Ri-array): *Do not pass an array as a single pointer*. The rule detects places where static array type information is lost from decay to a raw pointer. The `zstring` and `czstring` types aren't excluded. -C26481 and C26485 come from the [Bounds Safety Profile](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-bounds) rules. These rules were implemented in the first release of the C++ Core Guidelines Checker. They're applicable to the raw pointers category since they help to avoid unsafe use of raw pointers. +C26481 and C26485 come from the [Bounds Safety Profile](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-bounds) rules. These rules were implemented in the first release of the C++ Core Guidelines Checker. They're applicable to the raw pointers category since they help to avoid unsafe use of raw pointers. ## Example diff --git a/docs/code-quality/c26490.md b/docs/code-quality/c26490.md index 48e766138e9..0a74626fc4a 100644 --- a/docs/code-quality/c26490.md +++ b/docs/code-quality/c26490.md @@ -11,7 +11,7 @@ description: CppCoreCheck rule C26490 that enforces C++ Core Guidelines Type.1 ## See also -[C++ Core Guidelines Type.1](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-type). +[C++ Core Guidelines Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-type). ## Example diff --git a/docs/code-quality/c26491.md b/docs/code-quality/c26491.md index b55c5b0f320..760762e2bf4 100644 --- a/docs/code-quality/c26491.md +++ b/docs/code-quality/c26491.md @@ -7,4 +7,4 @@ helpviewer_keywords: ["C26491"] --- # Warning C26491 -> Don't use `static_cast` downcasts. See [C++ Core Guidelines Type.2](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-type). +> Don't use `static_cast` downcasts. See [C++ Core Guidelines Type.2](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-type). diff --git a/docs/code-quality/c26492.md b/docs/code-quality/c26492.md index 2e6ede538f2..f59114cba8f 100644 --- a/docs/code-quality/c26492.md +++ b/docs/code-quality/c26492.md @@ -11,7 +11,7 @@ description: CppCoreCheck rule C26492 that enforces C++ Core Guidelines Type.3 ## See also -[C++ Core Guidelines Type.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-type). +[C++ Core Guidelines Type.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-type). ## Example diff --git a/docs/code-quality/c26493.md b/docs/code-quality/c26493.md index 34d7225070b..8f93b4f4975 100644 --- a/docs/code-quality/c26493.md +++ b/docs/code-quality/c26493.md @@ -11,7 +11,7 @@ description: CppCoreCheck rule that enforces C++ Core Guidelines Type.4 ## See also -[C++ Core Guidelines Type.4](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-type). +[C++ Core Guidelines Type.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-type). ## Example diff --git a/docs/code-quality/c26495.md b/docs/code-quality/c26495.md index f99e5697b84..e318171fe73 100644 --- a/docs/code-quality/c26495.md +++ b/docs/code-quality/c26495.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["C26495"] ## Remarks -A member variable isn't initialized by a constructor or by an initializer. Make sure all variables are initialized by the end of construction. For more information, see C++ Core Guidelines [Type.6](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-type) and [C.48](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c48-prefer-in-class-initializers-to-member-initializers-in-constructors-for-constant-initializers). +A member variable isn't initialized by a constructor or by an initializer. Make sure all variables are initialized by the end of construction. For more information, see C++ Core Guidelines [Type.6](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-type) and [C.48](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c48-prefer-in-class-initializers-to-member-initializers-in-constructors-for-constant-initializers). This check is intra-procedural. Whenever there's a function call to a nonconst member function, the check assumes that this member function initializes all of the members. This heuristic can result in missed errors and is in place to avoid false positive results. Moreover, when a member is passed by nonconst reference to a function, the check assumes that the function initializes the member. diff --git a/docs/code-quality/c26496.md b/docs/code-quality/c26496.md index b5ad5763283..91c0d1f88b0 100644 --- a/docs/code-quality/c26496.md +++ b/docs/code-quality/c26496.md @@ -11,7 +11,7 @@ description: CppCoreCheck rule C26496 that enforces C++ Core Guidelines Con.4 ## See also -[C++ Core Guidelines con.4](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#con4-use-const-to-define-objects-with-values-that-do-not-change-after-construction). +[C++ Core Guidelines con.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#con4-use-const-to-define-objects-with-values-that-do-not-change-after-construction). ## Example diff --git a/docs/code-quality/c26497.md b/docs/code-quality/c26497.md index 7a7cd3fc6cc..36b52d3bfea 100644 --- a/docs/code-quality/c26497.md +++ b/docs/code-quality/c26497.md @@ -11,7 +11,7 @@ description: CppCoreCheck rule that enforces C++ Core Guidelines F.4 ## See also -[C++ Core Guidelines F.4](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rf-constexpr). +[C++ Core Guidelines F.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-constexpr). ## Example diff --git a/docs/code-quality/c26812.md b/docs/code-quality/c26812.md index f5b54e10863..434ffe7fb3e 100644 --- a/docs/code-quality/c26812.md +++ b/docs/code-quality/c26812.md @@ -47,4 +47,4 @@ Print_color(Product_info::Red); // Error: cannot convert Product_info to int. ## See also -[Enum.3 Prefer enum class over enum](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#enum3-prefer-class-enums-over-plain-enums) +[Enum.3 Prefer enum class over enum](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#enum3-prefer-class-enums-over-plain-enums) diff --git a/docs/code-quality/c26814.md b/docs/code-quality/c26814.md index 0727406c7da..f446f2644b0 100644 --- a/docs/code-quality/c26814.md +++ b/docs/code-quality/c26814.md @@ -33,4 +33,4 @@ void bar() ## See also -[Con.5 Use constexpr for all variables that can be computed at compile time](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rconst-constexpr) +[Con.5 Use constexpr for all variables that can be computed at compile time](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-constexpr) diff --git a/docs/code-quality/c26818.md b/docs/code-quality/c26818.md index aed557b6adf..db6965b1050 100644 --- a/docs/code-quality/c26818.md +++ b/docs/code-quality/c26818.md @@ -14,7 +14,7 @@ no-loc: [ default, int, char ] This check covers the missing **`default`** label in switch statements that switch over a non-enumeration type, such as **`int`**, **`char`**, and so on. -For more information, see [ES.79: Use default to handle common cases (only)](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#es79-use-default-to-handle-common-cases-only) in the C++ Core Guidelines. +For more information, see [ES.79: Use default to handle common cases (only)](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es79-use-default-to-handle-common-cases-only) in the C++ Core Guidelines. ## Example diff --git a/docs/code-quality/code-analysis-for-c-cpp-overview.md b/docs/code-quality/code-analysis-for-c-cpp-overview.md index 2bde55b76a3..33c4a8e91e1 100644 --- a/docs/code-quality/code-analysis-for-c-cpp-overview.md +++ b/docs/code-quality/code-analysis-for-c-cpp-overview.md @@ -20,7 +20,7 @@ ms.assetid: 81f0c9e8-f471-4de5-aac4-99db336a8809 --- # Code analysis for C/C++ overview -The C/C++ Code Analysis tool provides information about possible defects in your C/C++ source code. Common coding errors reported by the tool include buffer overruns, uninitialized memory, null pointer dereferences, and memory and resource leaks. The tool can also run checks against the [C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md). +The C/C++ Code Analysis tool provides information about possible defects in your C/C++ source code. Common coding errors reported by the tool include buffer overruns, uninitialized memory, null pointer dereferences, and memory and resource leaks. The tool can also run checks against the [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines). ## IDE (integrated development environment) integration diff --git a/docs/code-quality/code-analysis-for-cpp-corecheck.md b/docs/code-quality/code-analysis-for-cpp-corecheck.md index ecae8ba0d0f..63877154bae 100644 --- a/docs/code-quality/code-analysis-for-cpp-corecheck.md +++ b/docs/code-quality/code-analysis-for-cpp-corecheck.md @@ -17,250 +17,250 @@ This section lists C++ Core Guidelines Checker warnings. For information about C ## OWNER_POINTER Group [C26402 DONT_HEAP_ALLOCATE_MOVABLE_RESULT](C26402.md)\ -Return a scoped object instead of a heap-allocated if it has a move constructor. See [C++ Core Guidelines R.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-ptr). +Return a scoped object instead of a heap-allocated if it has a move constructor. See [C++ Core Guidelines R.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-ptr). [C26403 RESET_OR_DELETE_OWNER](C26403.md)\ -Reset or explicitly delete an owner\ pointer '*variable*'. See [C++ Core Guidelines R.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-ptr). +Reset or explicitly delete an owner\ pointer '*variable*'. See [C++ Core Guidelines R.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-ptr). [C26404 DONT_DELETE_INVALID](C26404.md)\ -Do not delete an owner\ that may be in invalid state. See [C++ Core Guidelines R.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-ptr). +Do not delete an owner\ that may be in invalid state. See [C++ Core Guidelines R.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-ptr). [C26405 DONT_ASSIGN_TO_VALID](C26405.md)\ -Do not assign to an owner\ that may be in valid state. See [C++ Core Guidelines R.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-ptr). +Do not assign to an owner\ that may be in valid state. See [C++ Core Guidelines R.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-ptr). [C26406 DONT_ASSIGN_RAW_TO_OWNER](C26406.md)\ -Do not assign a raw pointer to an owner\. See [C++ Core Guidelines R.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-ptr). +Do not assign a raw pointer to an owner\. See [C++ Core Guidelines R.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-ptr). [C26407 DONT_HEAP_ALLOCATE_UNNECESSARILY](C26407.md)\ -Prefer scoped objects, don't heap-allocate unnecessarily. See [C++ Core Guidelines R.5](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-scoped). +Prefer scoped objects, don't heap-allocate unnecessarily. See [C++ Core Guidelines R.5](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-scoped). [C26429 USE_NOTNULL](C26429.md)\ -Symbol '*symbol*' is never tested for nullness, it can be marked as not_null. See [C++ Core Guidelines F.23](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value). +Symbol '*symbol*' is never tested for nullness, it can be marked as not_null. See [C++ Core Guidelines F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value). [C26430 TEST_ON_ALL_PATHS](C26430.md)\ -Symbol '*symbol*' is not tested for nullness on all paths. See [C++ Core Guidelines F.23](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value). +Symbol '*symbol*' is not tested for nullness on all paths. See [C++ Core Guidelines F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value). [C26431 DONT_TEST_NOTNULL](C26431.md)\ -The type of expression '*expr*' is already gsl::not_null. Do not test it for nullness. See [C++ Core Guidelines F.23](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value). +The type of expression '*expr*' is already gsl::not_null. Do not test it for nullness. See [C++ Core Guidelines F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value). ## RAW_POINTER Group [C26400 NO_RAW_POINTER_ASSIGNMENT](c26400.md)\ -Do not assign the result of an allocation or a function call with an owner\ return value to a raw pointer; use owner\ instead. See [C++ Core Guidelines I.11](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Ri-raw). +Do not assign the result of an allocation or a function call with an owner\ return value to a raw pointer; use owner\ instead. See [C++ Core Guidelines I.11](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Ri-raw). [C26401 DONT_DELETE_NON_OWNER](c26401.md)\ -Do not delete a raw pointer that is not an owner\. See [C++ Core Guidelines I.11](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Ri-raw). +Do not delete a raw pointer that is not an owner\. See [C++ Core Guidelines I.11](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Ri-raw). [C26402 DONT_HEAP_ALLOCATE_MOVABLE_RESULT](C26402.md)\ -Return a scoped object instead of a heap-allocated if it has a move constructor. See [C++ Core Guidelines R.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-ptr). +Return a scoped object instead of a heap-allocated if it has a move constructor. See [C++ Core Guidelines R.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-ptr). [C26408 NO_MALLOC_FREE](C26408.md)\ -Avoid malloc() and free(), prefer the nothrow version of new with delete. See [C++ Core Guidelines R.10](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-mallocfree). +Avoid malloc() and free(), prefer the nothrow version of new with delete. See [C++ Core Guidelines R.10](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-mallocfree). [C26409 NO_NEW_DELETE](C26409.md)\ -Avoid calling new and delete explicitly, use std::make_unique\ instead. See [C++ Core Guidelines R.11](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-newdelete). +Avoid calling new and delete explicitly, use std::make_unique\ instead. See [C++ Core Guidelines R.11](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-newdelete). [C26429 USE_NOTNULL](C26429.md)\ -Symbol '*symbol*' is never tested for nullness, it can be marked as not_null. See [C++ Core Guidelines F.23](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value). +Symbol '*symbol*' is never tested for nullness, it can be marked as not_null. See [C++ Core Guidelines F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value). [C26430 TEST_ON_ALL_PATHS](C26430.md)\ -Symbol '*symbol*' is not tested for nullness on all paths. See [C++ Core Guidelines F.23](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value). +Symbol '*symbol*' is not tested for nullness on all paths. See [C++ Core Guidelines F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value). [C26431 DONT_TEST_NOTNULL](C26431.md)\ -The type of expression '*expr*' is already gsl::not_null. Do not test it for nullness. See [C++ Core Guidelines F.23](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value). +The type of expression '*expr*' is already gsl::not_null. Do not test it for nullness. See [C++ Core Guidelines F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value). [C26481 NO_POINTER_ARITHMETIC](C26481.md)\ -Don't use pointer arithmetic. Use span instead. See [C++ Core Guidelines Bounds.1](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-bounds). +Don't use pointer arithmetic. Use span instead. See [C++ Core Guidelines Bounds.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-bounds). [C26485 NO_ARRAY_TO_POINTER_DECAY](C26485.md)\ -Expression '*expr*': No array to pointer decay. See [C++ Core Guidelines Bounds.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-bounds). +Expression '*expr*': No array to pointer decay. See [C++ Core Guidelines Bounds.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-bounds). ## UNIQUE_POINTER Group [C26410 NO_REF_TO_CONST_UNIQUE_PTR](C26410.md)\ -The parameter '*parameter*' is a reference to `const` unique pointer, use const T* or const T& instead. See [C++ Core Guidelines R.32](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-uniqueptrparam). +The parameter '*parameter*' is a reference to `const` unique pointer, use const T* or const T& instead. See [C++ Core Guidelines R.32](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-uniqueptrparam). [C26411 NO_REF_TO_UNIQUE_PTR](C26411.md)\ -The parameter '*parameter*' is a reference to unique pointer and it is never reassigned or reset, use T* or T& instead. See [C++ Core Guidelines R.33](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-reseat). +The parameter '*parameter*' is a reference to unique pointer and it is never reassigned or reset, use T* or T& instead. See [C++ Core Guidelines R.33](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-reseat). [C26414 RESET_LOCAL_SMART_PTR](C26414.md)\ -Move, copy, reassign, or reset a local smart pointer '*symbol*'. See [C++ Core Guidelines R.5](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-scoped). +Move, copy, reassign, or reset a local smart pointer '*symbol*'. See [C++ Core Guidelines R.5](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-scoped). [C26415 SMART_PTR_NOT_NEEDED](C26415.md)\ -Smart pointer parameter '*symbol*' is used only to access contained pointer. Use T* or T& instead. See [C++ Core Guidelines R.30](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-smartptrparam). +Smart pointer parameter '*symbol*' is used only to access contained pointer. Use T* or T& instead. See [C++ Core Guidelines R.30](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-smartptrparam). ## SHARED_POINTER Group [C26414 RESET_LOCAL_SMART_PTR](C26414.md)\ -Move, copy, reassign, or reset a local smart pointer '*symbol*'. See [C++ Core Guidelines R.5](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-scoped). +Move, copy, reassign, or reset a local smart pointer '*symbol*'. See [C++ Core Guidelines R.5](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-scoped). [C26415 SMART_PTR_NOT_NEEDED](C26415.md)\ -Smart pointer parameter '*symbol*' is used only to access contained pointer. Use T* or T& instead. See [C++ Core Guidelines R.30](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-smartptrparam). +Smart pointer parameter '*symbol*' is used only to access contained pointer. Use T* or T& instead. See [C++ Core Guidelines R.30](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-smartptrparam). [C26416 NO_RVALUE_REF_SHARED_PTR](C26416.md)\ -Shared pointer parameter '*symbol*' is passed by rvalue reference. Pass by value instead. See [C++ Core Guidelines R.34](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-sharedptrparam-owner). +Shared pointer parameter '*symbol*' is passed by rvalue reference. Pass by value instead. See [C++ Core Guidelines R.34](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-sharedptrparam-owner). [C26417 NO_LVALUE_REF_SHARED_PTR](C26417.md)\ -Shared pointer parameter '*symbol*' is passed by reference and not reset or reassigned. Use T* or T& instead. See [C++ Core Guidelines R.35](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-sharedptrparam). +Shared pointer parameter '*symbol*' is passed by reference and not reset or reassigned. Use T* or T& instead. See [C++ Core Guidelines R.35](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-sharedptrparam). [C26418 NO_VALUE_OR_CONST_REF_SHARED_PTR](C26418.md)\ -Shared pointer parameter '*symbol*' is not copied or moved. Use T* or T& instead. See [C++ Core Guidelines R.36](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-sharedptrparam-const). +Shared pointer parameter '*symbol*' is not copied or moved. Use T* or T& instead. See [C++ Core Guidelines R.36](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-sharedptrparam-const). ## DECLARATION Group [C26426 NO_GLOBAL_INIT_CALLS](C26426.md)\ -Global initializer calls a non-constexpr function '*symbol*'. See [C++ Core Guidelines I.22](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#i22-avoid-complex-initialization-of-global-objects). +Global initializer calls a non-constexpr function '*symbol*'. See [C++ Core Guidelines I.22](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#i22-avoid-complex-initialization-of-global-objects). [C26427 NO_GLOBAL_INIT_EXTERNS](C26427.md)\ -Global initializer accesses extern object '*symbol*'. See [C++ Core Guidelines I.22](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#i22-avoid-complex-initialization-of-global-objects). +Global initializer accesses extern object '*symbol*'. See [C++ Core Guidelines I.22](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#i22-avoid-complex-initialization-of-global-objects). [C26444 NO_UNNAMED_RAII_OBJECTS](c26444.md)\ -Avoid unnamed objects with custom construction and destruction. See [ES.84: Don't (try to) declare a local variable with no name](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md). +Avoid unnamed objects with custom construction and destruction. See [ES.84: Don't (try to) declare a local variable with no name](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines). ## CLASS Group [C26432 DEFINE_OR_DELETE_SPECIAL_OPS](C26432.md)\ -If you define or delete any default operation in the type '*symbol*', define or delete them all. See [C++ Core Guidelines C.21](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c21-if-you-define-or-delete-any-default-operation-define-or-delete-them-all). +If you define or delete any default operation in the type '*symbol*', define or delete them all. See [C++ Core Guidelines C.21](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c21-if-you-define-or-delete-any-default-operation-define-or-delete-them-all). [C26433 OVERRIDE_EXPLICITLY](c26433.md)\ -Function '*symbol*' should be marked with 'override'. See [C.128: Virtual functions should specify exactly one of virtual, override, or final](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c128-virtual-functions-should-specify-exactly-one-of-virtual-override-or-final). +Function '*symbol*' should be marked with 'override'. See [C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c128-virtual-functions-should-specify-exactly-one-of-virtual-override-or-final). [C26434 DONT_HIDE_METHODS](C26434.md)\ -Function '*symbol_1*' hides a non-virtual function '*symbol_2*'. See [C++ Core Guidelines C.128](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c128-virtual-functions-should-specify-exactly-one-of-virtual-override-or-final). +Function '*symbol_1*' hides a non-virtual function '*symbol_2*'. See [C++ Core Guidelines C.128](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c128-virtual-functions-should-specify-exactly-one-of-virtual-override-or-final). [C26435 SINGLE_VIRTUAL_SPECIFICATION](c26435.md)\ -Function '*symbol*' should specify exactly one of 'virtual', 'override', or 'final'. See [C.128: Virtual functions should specify exactly one of virtual, override, or final](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md). +Function '*symbol*' should specify exactly one of 'virtual', 'override', or 'final'. See [C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines). [C26436 NEED_VIRTUAL_DTOR](C26436.md)\ -The type '*symbol*' with a virtual function needs either public virtual or protected non-virtual destructor. See [C++ Core Guidelines C.35](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c35-a-base-class-destructor-should-be-either-public-and-virtual-or-protected-and-nonvirtual). +The type '*symbol*' with a virtual function needs either public virtual or protected non-virtual destructor. See [C++ Core Guidelines C.35](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c35-a-base-class-destructor-should-be-either-public-and-virtual-or-protected-and-nonvirtual). [C26443 NO_EXPLICIT_DTOR_OVERRIDE](c26443.md)\ -Overriding destructor should not use explicit 'override' or 'virtual' specifiers. See [C.128: Virtual functions should specify exactly one of virtual, override, or final](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md). +Overriding destructor should not use explicit 'override' or 'virtual' specifiers. See [C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines). ## STYLE Group [C26438 NO_GOTO](C26438.md)\ -Avoid `goto`. See [C++ Core Guidelines ES.76](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#es76-avoid-goto). +Avoid `goto`. See [C++ Core Guidelines ES.76](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es76-avoid-goto). ## FUNCTION Group [C26439 SPECIAL_NOEXCEPT](C26439.md)\ -This kind of function may not throw. Declare it **`noexcept`**. See [C++ Core Guidelines F.6](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f6-if-your-function-may-not-throw-declare-it-noexcept). +This kind of function may not throw. Declare it **`noexcept`**. See [C++ Core Guidelines F.6](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f6-if-your-function-may-not-throw-declare-it-noexcept). [C26440 DECLARE_NOEXCEPT](C26440.md)\ -Function '*symbol*' can be declared **`noexcept`**. See [C++ Core Guidelines F.6](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f6-if-your-function-may-not-throw-declare-it-noexcept). +Function '*symbol*' can be declared **`noexcept`**. See [C++ Core Guidelines F.6](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f6-if-your-function-may-not-throw-declare-it-noexcept). [C26447 DONT_THROW_IN_NOEXCEPT](c26447.md)\ The function is declared **`noexcept`** but calls a function which may throw exceptions. -See [C++ Core Guidelines: F.6: If your function may not throw, declare it noexcept](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f6-if-your-function-may-not-throw-declare-it-noexcept). +See [C++ Core Guidelines: F.6: If your function may not throw, declare it noexcept](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f6-if-your-function-may-not-throw-declare-it-noexcept). ## CONCURRENCY Group [C26441 NO_UNNAMED_GUARDS](C26441.md)\ -Guard objects must be named. See [C++ Core Guidelines cp.44](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#cp44-remember-to-name-your-lock_guards-and-unique_locks). +Guard objects must be named. See [C++ Core Guidelines cp.44](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#cp44-remember-to-name-your-lock_guards-and-unique_locks). ## CONST Group [C26460 USE_CONST_REFERENCE_ARGUMENTS](c26460.md)\ -The reference argument '*argument*' for function '*function*' can be marked as `const`. See [C++ Core Guidelines con.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rconst-ref). +The reference argument '*argument*' for function '*function*' can be marked as `const`. See [C++ Core Guidelines con.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-ref). [C26461 USE_CONST_POINTER_ARGUMENTS](c26461.md):\ -The pointer argument '*argument*' for function '*function*' can be marked as a pointer to `const`. See [C++ Core Guidelines con.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rconst-ref). +The pointer argument '*argument*' for function '*function*' can be marked as a pointer to `const`. See [C++ Core Guidelines con.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-ref). [C26462 USE_CONST_POINTER_FOR_VARIABLE](c26462.md)\ -The value pointed to by '*variable*' is assigned only once, mark it as a pointer to `const`. See [C++ Core Guidelines con.4](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#con4-use-const-to-define-objects-with-values-that-do-not-change-after-construction). +The value pointed to by '*variable*' is assigned only once, mark it as a pointer to `const`. See [C++ Core Guidelines con.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#con4-use-const-to-define-objects-with-values-that-do-not-change-after-construction). [C26463 USE_CONST_FOR_ELEMENTS](c26463.md)\ -The elements of array '*array*' are assigned only once, mark elements `const`. See [C++ Core Guidelines con.4](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#con4-use-const-to-define-objects-with-values-that-do-not-change-after-construction). +The elements of array '*array*' are assigned only once, mark elements `const`. See [C++ Core Guidelines con.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#con4-use-const-to-define-objects-with-values-that-do-not-change-after-construction). [C26464 USE_CONST_POINTER_FOR_ELEMENTS](c26464.md)\ -The values pointed to by elements of array '*array*' are assigned only once, mark elements as pointer to `const`. See [C++ Core Guidelines con.4](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#con4-use-const-to-define-objects-with-values-that-do-not-change-after-construction). +The values pointed to by elements of array '*array*' are assigned only once, mark elements as pointer to `const`. See [C++ Core Guidelines con.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#con4-use-const-to-define-objects-with-values-that-do-not-change-after-construction). [C26496 USE_CONST_FOR_VARIABLE](c26496.md)\ -The variable '*variable*' is assigned only once, mark it as `const`. See [C++ Core Guidelines con.4](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#con4-use-const-to-define-objects-with-values-that-do-not-change-after-construction). +The variable '*variable*' is assigned only once, mark it as `const`. See [C++ Core Guidelines con.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#con4-use-const-to-define-objects-with-values-that-do-not-change-after-construction). [C26497 USE_CONSTEXPR_FOR_FUNCTION](c26497.md)\ -This function *function* could be marked `constexpr` if compile-time evaluation is desired. See [C++ Core Guidelines F.4](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rf-constexpr). +This function *function* could be marked `constexpr` if compile-time evaluation is desired. See [C++ Core Guidelines F.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-constexpr). [C26498 USE_CONSTEXPR_FOR_FUNCTIONCALL](c26498.md)\ -This function call *function* can use `constexpr` if compile-time evaluation is desired. See [C++ Core Guidelines con.5](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rconst-constexpr). +This function call *function* can use `constexpr` if compile-time evaluation is desired. See [C++ Core Guidelines con.5](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-constexpr). ## TYPE Group [C26437 DONT_SLICE](C26437.md)\ -Do not slice. See [C++ Core Guidelines ES.63](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#es63-dont-slice). +Do not slice. See [C++ Core Guidelines ES.63](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es63-dont-slice). [C26465 NO_CONST_CAST_UNNECESSARY](c26465.md)\ -Don't use `const_cast` to cast away `const`. `const_cast` is not required; constness or volatility is not being removed by this conversion. See [C++ Core Guidelines Type.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Pro-type-constcast). +Don't use `const_cast` to cast away `const`. `const_cast` is not required; constness or volatility is not being removed by this conversion. See [C++ Core Guidelines Type.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-constcast). [C26466 NO_STATIC_DOWNCAST_POLYMORPHIC](c26466.md)\ -Don't use `static_cast` downcasts. A cast from a polymorphic type should use dynamic_cast. See [C++ Core Guidelines Type.2](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Pro-type-downcast). +Don't use `static_cast` downcasts. A cast from a polymorphic type should use dynamic_cast. See [C++ Core Guidelines Type.2](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-downcast). [C26471 NO_REINTERPRET_CAST_FROM_VOID_PTR](c26471.md)\ -Don't use `reinterpret_cast`. A cast from void* can use `static_cast`. See [C++ Core Guidelines Type.1](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Pro-type-reinterpretcast). +Don't use `reinterpret_cast`. A cast from void* can use `static_cast`. See [C++ Core Guidelines Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-reinterpretcast). [C26472 NO_CASTS_FOR_ARITHMETIC_CONVERSION](C26472.md)\ -Don't use a `static_cast` for arithmetic conversions. Use brace initialization, gsl::narrow_cast, or gsl::narrow. See [C++ Core Guidelines Type.1](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Pro-type-reinterpretcast). +Don't use a `static_cast` for arithmetic conversions. Use brace initialization, gsl::narrow_cast, or gsl::narrow. See [C++ Core Guidelines Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-reinterpretcast). [C26473 NO_IDENTITY_CAST](C26473.md)\ -Don't cast between pointer types where the source type and the target type are the same. See [C++ Core Guidelines Type.1](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Pro-type-reinterpretcast). +Don't cast between pointer types where the source type and the target type are the same. See [C++ Core Guidelines Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-reinterpretcast). [C26474 NO_IMPLICIT_CAST](C26474.md)\ -Don't cast between pointer types when the conversion could be implicit. See [C++ Core Guidelines Type.1](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Pro-type-reinterpretcast). +Don't cast between pointer types when the conversion could be implicit. See [C++ Core Guidelines Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-reinterpretcast). [C26475 NO_FUNCTION_STYLE_CASTS](C26475.md)\ -Do not use function style C-casts. See [C++ Core Guidelines ES.49](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#es49-if-you-must-use-a-cast-use-a-named-cast). +Do not use function style C-casts. See [C++ Core Guidelines ES.49](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es49-if-you-must-use-a-cast-use-a-named-cast). [C26490 NO_REINTERPRET_CAST](c26490.md)\ -Don't use `reinterpret_cast`. See [C++ Core Guidelines Type.1](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-type). +Don't use `reinterpret_cast`. See [C++ Core Guidelines Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-type). [C26491 NO_STATIC_DOWNCAST](c26490.md)\ -Don't use `static_cast` downcasts. See [C++ Core Guidelines Type.2](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-type). +Don't use `static_cast` downcasts. See [C++ Core Guidelines Type.2](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-type). [C26492 NO_CONST_CAST](c26492.md)\ -Don't use `const_cast` to cast away `const`. See [C++ Core Guidelines Type.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-type). +Don't use `const_cast` to cast away `const`. See [C++ Core Guidelines Type.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-type). [C26493 NO_CSTYLE_CAST](c26493.md)\ -Don't use C-style casts. See [C++ Core Guidelines Type.4](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-type). +Don't use C-style casts. See [C++ Core Guidelines Type.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-type). [C26494 VAR_USE_BEFORE_INIT](c26494.md)\ -Variable '*variable*' is uninitialized. Always initialize an object. See [C++ Core Guidelines Type.5](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-type). +Variable '*variable*' is uninitialized. Always initialize an object. See [C++ Core Guidelines Type.5](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-type). [C26495 MEMBER_UNINIT](c26495.md)\ -Variable '*variable*' is uninitialized. Always initialize a member variable. See [C++ Core Guidelines Type.6](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-type). +Variable '*variable*' is uninitialized. Always initialize a member variable. See [C++ Core Guidelines Type.6](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-type). ## BOUNDS Group [C26446 USE_GSL_AT](c26446.md)\ -Prefer to use `gsl::at()` instead of unchecked subscript operator. See [C++ Core Guidelines: Bounds.4: Don't use standard-library functions and types that are not bounds-checked](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#probounds-bounds-safety-profile). +Prefer to use `gsl::at()` instead of unchecked subscript operator. See [C++ Core Guidelines: Bounds.4: Don't use standard-library functions and types that are not bounds-checked](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#probounds-bounds-safety-profile). [C26481 NO_POINTER_ARITHMETIC](C26481.md)\ -Don't use pointer arithmetic. Use span instead. See [C++ Core Guidelines Bounds.1](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-bounds) +Don't use pointer arithmetic. Use span instead. See [C++ Core Guidelines Bounds.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-bounds) [C26482 NO_DYNAMIC_ARRAY_INDEXING](c26482.md)\ -Only index into arrays using constant expressions. See [C++ Core Guidelines Bounds.2](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-bounds) +Only index into arrays using constant expressions. See [C++ Core Guidelines Bounds.2](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-bounds) [C26483 STATIC_INDEX_OUT_OF_RANGE](c26483.md)\ -Value *value* is outside the bounds (0, *bound*) of variable '*variable*'. Only index into arrays using constant expressions that are within bounds of the array. See [C++ Core Guidelines Bounds.2](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-bounds) +Value *value* is outside the bounds (0, *bound*) of variable '*variable*'. Only index into arrays using constant expressions that are within bounds of the array. See [C++ Core Guidelines Bounds.2](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-bounds) [C26485 NO_ARRAY_TO_POINTER_DECAY](C26485.md)\ -Expression '*expr*': No array to pointer decay. See [C++ Core Guidelines Bounds.3](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-bounds) +Expression '*expr*': No array to pointer decay. See [C++ Core Guidelines Bounds.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-bounds) ## GSL Group [C26445 NO_SPAN_REF](c26445.md)\ A reference to `gsl::span` or `std::string_view` may be an indication of a lifetime issue. -See [C++ Core Guidelines GSL.view: Views](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#gslview-views) +See [C++ Core Guidelines GSL.view: Views](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#gslview-views) [C26446 USE_GSL_AT](c26446.md)\ -Prefer to use `gsl::at()` instead of unchecked subscript operator. See [C++ Core Guidelines: Bounds.4: Don't use standard-library functions and types that are not bounds-checked](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#probounds-bounds-safety-profile). +Prefer to use `gsl::at()` instead of unchecked subscript operator. See [C++ Core Guidelines: Bounds.4: Don't use standard-library functions and types that are not bounds-checked](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#probounds-bounds-safety-profile). [C26448 USE_GSL_FINALLY](c26448.md)\ -Consider using `gsl::finally` if final action is intended. See [C++ Core Guidelines: GSL.util: Utilities](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#SS-utilities). +Consider using `gsl::finally` if final action is intended. See [C++ Core Guidelines: GSL.util: Utilities](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-utilities). [C26449 NO_SPAN_FROM_TEMPORARY](c26449.md)\ `gsl::span` or `std::string_view` created from a temporary will be invalid when the temporary is invalidated. See -[C++ Core Guidelines: GSL.view: Views](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#gslview-views). +[C++ Core Guidelines: GSL.view: Views](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#gslview-views). ## Deprecated Warnings diff --git a/docs/code-quality/quick-start-code-analysis-for-c-cpp.md b/docs/code-quality/quick-start-code-analysis-for-c-cpp.md index 39c416ac326..7c2a7c05f31 100644 --- a/docs/code-quality/quick-start-code-analysis-for-c-cpp.md +++ b/docs/code-quality/quick-start-code-analysis-for-c-cpp.md @@ -27,25 +27,25 @@ Visual Studio includes these standard sets of rules for native code: | Rule Set | Description | |--|--| -| **C++ Core Check Arithmetic Rules** | These rules enforce checks related to [arithmetic operations from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#es-expressions-and-statements). | -| **C++ Core Check Bounds Rules** | These rules enforce the [Bounds profile of the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#probounds-bounds-safety-profile). | -| **C++ Core Check Class Rules** | These rules enforce checks related to [classes from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c-classes-and-class-hierarchies). | -| **C++ Core Check Concurrency Rules** | These rules enforce checks related to [concurrency from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#cpcon-concurrency). | -| **C++ Core Check Const Rules** | These rules enforce [const-related checks from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#con-constants-and-immutability). | -| **C++ Core Check Declaration Rules** | These rules enforce checks related to [declarations from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#i-interfaces). | -| **C++ Core Check Enum Rules** | These rules enforce [enum-related checks from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#S-enum). | +| **C++ Core Check Arithmetic Rules** | These rules enforce checks related to [arithmetic operations from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es-expressions-and-statements). | +| **C++ Core Check Bounds Rules** | These rules enforce the [Bounds profile of the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#probounds-bounds-safety-profile). | +| **C++ Core Check Class Rules** | These rules enforce checks related to [classes from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c-classes-and-class-hierarchies). | +| **C++ Core Check Concurrency Rules** | These rules enforce checks related to [concurrency from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#cpcon-concurrency). | +| **C++ Core Check Const Rules** | These rules enforce [const-related checks from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#con-constants-and-immutability). | +| **C++ Core Check Declaration Rules** | These rules enforce checks related to [declarations from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#i-interfaces). | +| **C++ Core Check Enum Rules** | These rules enforce [enum-related checks from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#S-enum). | | **C++ Core Check Experimental Rules** | These rules collect some experimental checks. Eventually, we expect these checks to be moved to other rulesets or removed completely. | -| **C++ Core Check Function Rules** | These rules enforce checks related to [functions from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#f-functions). | -| **C++ Core Check GSL Rules** | These rules enforce checks related to the [Guidelines Support Library from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#S-gsl). | -| **C++ Core Check Lifetime Rules** | These rules enforce the [Lifetime profile of the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#prolifetime-lifetime-safety-profile). | -| **C++ Core Check Owner Pointer Rules** | These rules enforce resource-management checks related to [`owner` from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r-resource-management). | -| **C++ Core Check Raw Pointer Rules** | These rules enforce resource-management checks related to [raw pointers from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r-resource-management). | -| **C++ Core Check Rules** | These rules enforce a subset of the checks from the [C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c-core-guidelines). Use this ruleset to include all of the C++ Core Check rules except the Enum and Experimental rulesets. | -| **C++ Core Check Shared Pointer Rules** | These rules enforce resource-management checks related to [types with shared pointer semantics from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r-resource-management). | -| **C++ Core Check STL Rules** | These rules enforce checks related to the [C++ Standard Library from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#S-stdlib). | -| **C++ Core Check Style Rules** | These rules enforce checks related to use of [expressions and statements from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#es-expressions-and-statements). | -| **C++ Core Check Type Rules** | These rules enforce the [Type profile of the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#prosafety-type-safety-profile). | -| **C++ Core Check Unique Pointer Rules** | These rules enforce resource-management checks related to types with [unique pointer semantics from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r-resource-management). | +| **C++ Core Check Function Rules** | These rules enforce checks related to [functions from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f-functions). | +| **C++ Core Check GSL Rules** | These rules enforce checks related to the [Guidelines Support Library from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#S-gsl). | +| **C++ Core Check Lifetime Rules** | These rules enforce the [Lifetime profile of the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#prolifetime-lifetime-safety-profile). | +| **C++ Core Check Owner Pointer Rules** | These rules enforce resource-management checks related to [`owner` from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r-resource-management). | +| **C++ Core Check Raw Pointer Rules** | These rules enforce resource-management checks related to [raw pointers from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r-resource-management). | +| **C++ Core Check Rules** | These rules enforce a subset of the checks from the [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c-core-guidelines). Use this ruleset to include all of the C++ Core Check rules except the Enum and Experimental rulesets. | +| **C++ Core Check Shared Pointer Rules** | These rules enforce resource-management checks related to [types with shared pointer semantics from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r-resource-management). | +| **C++ Core Check STL Rules** | These rules enforce checks related to the [C++ Standard Library from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#S-stdlib). | +| **C++ Core Check Style Rules** | These rules enforce checks related to use of [expressions and statements from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es-expressions-and-statements). | +| **C++ Core Check Type Rules** | These rules enforce the [Type profile of the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#prosafety-type-safety-profile). | +| **C++ Core Check Unique Pointer Rules** | These rules enforce resource-management checks related to types with [unique pointer semantics from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r-resource-management). | | **Concurrency Check Rules** | These rules enforce a set of Win32 concurrency pattern checks in C++. | | **Concurrency Rules** | Adds concurrency rules from C++ Core Guidelines to **Concurrency Check Rules**. | | **Microsoft Native Minimum Rules** | These rules focus on the most critical problems in your native code, including potential security holes and application crashes. We recommend you include this rule set in any custom rule set you create for your native projects. | diff --git a/docs/code-quality/using-the-cpp-core-guidelines-checkers.md b/docs/code-quality/using-the-cpp-core-guidelines-checkers.md index 5b242bc21fa..0010cfda987 100644 --- a/docs/code-quality/using-the-cpp-core-guidelines-checkers.md +++ b/docs/code-quality/using-the-cpp-core-guidelines-checkers.md @@ -111,43 +111,43 @@ The C++ Core Guidelines are there to help you write better and safer code. Howev As new rules are added to the C++ Core Guidelines Checker, the number of warnings that are produced for pre-existing code might increase. You can use predefined rule sets to filter which kinds of rules to enable. You'll find reference articles for most rules under [Visual Studio C++ Core Check Reference](code-analysis-for-cpp-corecheck.md). -- **Arithmetic Rules**: Rules to detect arithmetic [overflow](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Res-overflow), [signed-unsigned operations](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Res-unsigned), and [bit manipulation](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Res-nonnegative).15.6 +- **Arithmetic Rules**: Rules to detect arithmetic [overflow](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-overflow), [signed-unsigned operations](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-unsigned), and [bit manipulation](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-nonnegative).15.6 -- **Bounds Rules**: Enforce the [Bounds profile of the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#probounds-bounds-safety-profile).15.3 +- **Bounds Rules**: Enforce the [Bounds profile of the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#probounds-bounds-safety-profile).15.3 -- **Class Rules**: A few rules that focus on proper use of special member functions and virtual specifications. They're a subset of the checks recommended for [classes and class hierarchies](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#S-class).15.5 +- **Class Rules**: A few rules that focus on proper use of special member functions and virtual specifications. They're a subset of the checks recommended for [classes and class hierarchies](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#S-class).15.5 -- **Concurrency Rules**: A single rule, which catches bad guard object declarations. For more information, see [guidelines related to concurrency](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#S-concurrency).15.5 +- **Concurrency Rules**: A single rule, which catches bad guard object declarations. For more information, see [guidelines related to concurrency](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#S-concurrency).15.5 -- **Const Rules**: Enforce [const-related checks from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#con-constants-and-immutability).15.3 +- **Const Rules**: Enforce [const-related checks from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#con-constants-and-immutability).15.3 -- **Declaration Rules**: A couple of rules from the [interfaces guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#S-interfaces) that focus on how global variables are declared.15.5 +- **Declaration Rules**: A couple of rules from the [interfaces guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#S-interfaces) that focus on how global variables are declared.15.5 -- **Enum Rules**: These rules enforce [enum-related checks from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#S-enum).16.3 +- **Enum Rules**: These rules enforce [enum-related checks from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#S-enum).16.3 - **Experimental Rules** These are experimental C++ Core Check rules that are useful but not ready for everyday use. Try them out and [provide feedback](https://aka.ms/feedback/suggest?space=62).16.0 -- **Function Rules**: Two checks that help with adoption of the **`noexcept`** specifier. They're part of the guidelines for [clear function design and implementation](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#S-functions).15.5 +- **Function Rules**: Two checks that help with adoption of the **`noexcept`** specifier. They're part of the guidelines for [clear function design and implementation](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#S-functions).15.5 -- **GSL Rules**: These rules enforce checks related to the [Guidelines Support Library from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#S-gsl).15.7 +- **GSL Rules**: These rules enforce checks related to the [Guidelines Support Library from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#S-gsl).15.7 -- **Lifetime Rules**: These rules enforce the [Lifetime profile of the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#prolifetime-lifetime-safety-profile).15.7 +- **Lifetime Rules**: These rules enforce the [Lifetime profile of the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#prolifetime-lifetime-safety-profile).15.7 -- **Owner Pointer Rules**: Enforce [resource-management checks related to owner\ from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r-resource-management).15.3 +- **Owner Pointer Rules**: Enforce [resource-management checks related to owner\ from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r-resource-management).15.3 -- **Raw Pointer Rules**: Enforce [resource-management checks related to raw pointers from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r-resource-management).15.3 +- **Raw Pointer Rules**: Enforce [resource-management checks related to raw pointers from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r-resource-management).15.3 -- **Shared pointer Rules**: It's part of [resource management](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#S-resource) guidelines enforcement.15.5 We added a few rules specific to how shared pointers are passed into functions or used locally. +- **Shared pointer Rules**: It's part of [resource management](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#S-resource) guidelines enforcement.15.5 We added a few rules specific to how shared pointers are passed into functions or used locally. -- **STL Rules**: These rules enforce checks related to the [C++ Standard Library (STL) from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#S-stdlib).15.7 +- **STL Rules**: These rules enforce checks related to the [C++ Standard Library (STL) from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#S-stdlib).15.7 -- **Style Rules**: One simple but important check, which bans use of [goto](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Res-goto).15.5 It's the first step to improve your coding style and use of expressions and statements in C++. +- **Style Rules**: One simple but important check, which bans use of [goto](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-goto).15.5 It's the first step to improve your coding style and use of expressions and statements in C++. -- **Type Rules**: Enforce the [Type profile of the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#prosafety-type-safety-profile).15.3 +- **Type Rules**: Enforce the [Type profile of the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#prosafety-type-safety-profile).15.3 -- **Unique Pointer Rules**: Enforce [resource-management checks related to types with unique pointer semantics from the C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#r-resource-management).15.3 +- **Unique Pointer Rules**: Enforce [resource-management checks related to types with unique pointer semantics from the C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r-resource-management).15.3 -- **C++ Core Check Rules**: This rule set contains all the currently implemented checks from the [C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c-core-guidelines), except for the Experimental rules. +- **C++ Core Check Rules**: This rule set contains all the currently implemented checks from the [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c-core-guidelines), except for the Experimental rules. 15.3 These rules first appeared in Visual Studio 2017 version 15.3\ 15.5 These rules first appeared in Visual Studio 2017 version 15.5\ diff --git a/docs/cpp/void-cpp.md b/docs/cpp/void-cpp.md index 09444a7cc04..b53334fff27 100644 --- a/docs/cpp/void-cpp.md +++ b/docs/cpp/void-cpp.md @@ -16,7 +16,7 @@ In C++, a **`void`** pointer can point to a free function (a function that's not You can't declare a variable of type **`void`**. -As a matter of style, the C++ Core Guidelines recommend you don't use **`void`** to specify an empty formal parameter list. For more information, see [C++ Core Guidelines NL.25: Don't use `void` as an argument type](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#nl25-dont-use-void-as-an-argument-type). +As a matter of style, the C++ Core Guidelines recommend you don't use **`void`** to specify an empty formal parameter list. For more information, see [C++ Core Guidelines NL.25: Don't use `void` as an argument type](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#nl25-dont-use-void-as-an-argument-type). ## Example diff --git a/docs/overview/overview-of-cpp-development.md b/docs/overview/overview-of-cpp-development.md index 3c29ebebb85..ca4cb394b97 100644 --- a/docs/overview/overview-of-cpp-development.md +++ b/docs/overview/overview-of-cpp-development.md @@ -110,7 +110,7 @@ For more information, see [Verifying Code by Using Unit Tests](/visualstudio/tes ## Analyze -Visual Studio includes static code analysis tools that can detect potential problems in your source code. These tools include an implementation of the [C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md) rules checkers. For more information, see [Code analysis for C/C++ overview](../code-quality/code-analysis-for-c-cpp-overview.md). +Visual Studio includes static code analysis tools that can detect potential problems in your source code. These tools include an implementation of the [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines) rules checkers. For more information, see [Code analysis for C/C++ overview](../code-quality/code-analysis-for-c-cpp-overview.md). ## Deploy completed applications From cd51765cf374643005f26f8b9fe13fa3949d9740 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 1 Aug 2025 17:07:23 +0800 Subject: [PATCH 1228/2255] Adjust link text in ASan `memcpy-param-overlap` error reference --- docs/sanitizers/error-memcpy-param-overlap.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/error-memcpy-param-overlap.md b/docs/sanitizers/error-memcpy-param-overlap.md index 5c5c46173de..e8b4d0b5062 100644 --- a/docs/sanitizers/error-memcpy-param-overlap.md +++ b/docs/sanitizers/error-memcpy-param-overlap.md @@ -10,7 +10,7 @@ helpviewer_keywords: ["memcpy-param-overlap error", "AddressSanitizer error memc > Address Sanitizer Error: memcpy-param-overlap > [!NOTE] -> The `/Oi` flag is required to reliably detect `memcpy-param-overlap` errors. This flag tells the compiler to treat `memcpy` and other functions as intrinsics, which is necessary because some versions of the standard library implement them as such. Since ASan is a dynamic analysis tool, it can only detect errors with an observable runtime effect. Note that when `/O2` is also set, ASan may not be able to reliably detect `memcpy-param-overlap` errors because the intrinsic variant of these functions isn't guaranteed to be used. For more information, see [`/Oi` docs](../build/reference/oi-generate-intrinsic-functions.md). +> The `/Oi` flag is required to reliably detect `memcpy-param-overlap` errors. This flag tells the compiler to treat `memcpy` and other functions as intrinsics, which is necessary because some versions of the standard library implement them as such. Since ASan is a dynamic analysis tool, it can only detect errors with an observable runtime effect. Note that when `/O2` is also set, ASan may not be able to reliably detect `memcpy-param-overlap` errors because the intrinsic variant of these functions isn't guaranteed to be used. For more information, see [`/Oi` (Generate Intrinsic Functions)](../build/reference/oi-generate-intrinsic-functions.md). The CRT function [`memcpy`](../c-runtime-library/reference/memcpy-wmemcpy.md) **doesn't support** overlapping memory. The CRT provides an alternative to `memcpy` that does support overlapping memory: [`memmove`](../c-runtime-library/reference/memmove-wmemmove.md). From 049e07ec7c9318208eb6521789ccf0c94842e51b Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 1 Aug 2025 18:12:38 +0800 Subject: [PATCH 1229/2255] Add blockquotes for error messages in range [C2581, C2610] --- docs/error-messages/compiler-errors-2/compiler-error-c2581.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2582.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2584.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2585.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2586.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2587.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2588.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2589.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2592.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2593.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2594.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2597.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2598.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2599.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2600.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2602.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2605.md | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2581.md b/docs/error-messages/compiler-errors-2/compiler-error-c2581.md index c6e7b9a608c..18e774904d1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2581.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2581.md @@ -8,7 +8,7 @@ ms.assetid: 24a4e4c1-24d3-4e42-b760-7dcaf9740b16 --- # Compiler Error C2581 -'type' : static 'operator =' function is illegal +> 'type' : static 'operator =' function is illegal The assignment (`=`) operator is incorrectly declared as **`static`**. Assignment operators cannot be **`static`**. For more information, see [User-Defined Operators (C++/CLI)](../../dotnet/user-defined-operators-cpp-cli.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2582.md b/docs/error-messages/compiler-errors-2/compiler-error-c2582.md index 82484c7c1ad..adf0764e41f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2582.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2582.md @@ -8,7 +8,7 @@ ms.assetid: ee1b9378-8bcd-4792-b87e-6d7a466d29ed --- # Compiler Error C2582 -'function' function is unavailable in 'type' +> 'function' function is unavailable in 'type' An attempt was made to assign to an object that does not have an assignment operator. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2584.md b/docs/error-messages/compiler-errors-2/compiler-error-c2584.md index e63ec9e0542..49251f08bf1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2584.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2584.md @@ -8,7 +8,7 @@ ms.assetid: 836e2c0a-86c0-4742-b432-beb0191ad20e --- # Compiler Error C2584 -'Class' : direct base 'Base2' is inaccessible; already a base of 'Base1' +> 'Class' : direct base 'Base2' is inaccessible; already a base of 'Base1' `Class` already derives directly from `Base1`. `Base2` also derives from `Base1`. `Class` cannot derive from `Base2` because that would mean inheriting (indirectly) from `Base1` again, which is not legal because `Base1` is already a direct base class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2585.md b/docs/error-messages/compiler-errors-2/compiler-error-c2585.md index 7ced014cea2..58f4a8a5519 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2585.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2585.md @@ -8,7 +8,7 @@ ms.assetid: 05bb1a9c-28fb-4a88-a1b5-aea85ebdee1c --- # Compiler Error C2585 -explicit conversion to 'type' is ambiguous +> explicit conversion to 'type' is ambiguous The type conversion can produce more than one result. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2586.md b/docs/error-messages/compiler-errors-2/compiler-error-c2586.md index a5767ea958e..5316ceef8c5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2586.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2586.md @@ -8,7 +8,7 @@ ms.assetid: dae703c7-5c38-4db6-8411-4d1b22713eb5 --- # Compiler Error C2586 -incorrect user-defined conversion syntax : illegal indirections +> incorrect user-defined conversion syntax : illegal indirections Indirection of a conversion operator is not allowed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2587.md b/docs/error-messages/compiler-errors-2/compiler-error-c2587.md index dd0b86bde45..bdc62e9435d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2587.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2587.md @@ -8,7 +8,7 @@ ms.assetid: 7637a2c7-35d4-4b5a-a8f2-515a7bda98fd --- # Compiler Error C2587 -'identifier' : illegal use of local variable as default parameter +> 'identifier' : illegal use of local variable as default parameter Local variables are not allowed as default parameters. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2588.md b/docs/error-messages/compiler-errors-2/compiler-error-c2588.md index 97560fa93c1..3e6351e4752 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2588.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2588.md @@ -8,7 +8,7 @@ ms.assetid: 19a0cabd-ca13-44a5-9be3-ee676abf9bc4 --- # Compiler Error C2588 -'::~identifier' : illegal global destructor +> '::~identifier' : illegal global destructor The destructor is defined for something other than a class, structure, or union. This is not allowed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2589.md b/docs/error-messages/compiler-errors-2/compiler-error-c2589.md index e712be3b261..104f1ef0e2f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2589.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2589.md @@ -8,7 +8,7 @@ ms.assetid: 1d7942c7-8a81-4bb4-b272-76a0019e8513 --- # Compiler Error C2589 -'identifier' : illegal token on right side of '::' +> 'identifier' : illegal token on right side of '::' If a class, structure, or union name appears to the left of the scope-resolution operator (double colons), the token on the right must be a class, structure, or union member. Otherwise, any global identifier can appear on the right. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2592.md b/docs/error-messages/compiler-errors-2/compiler-error-c2592.md index 637edee9781..c0e8112dc7d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2592.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2592.md @@ -8,6 +8,6 @@ ms.assetid: 833a4d7b-66ef-4d4c-ae83-a533c2b0eb07 --- # Compiler Error C2592 -'class': 'base_class_2' is inherited from 'base_class_1' and cannot be re-specified +> 'class': 'base_class_2' is inherited from 'base_class_1' and cannot be re-specified You can only specify base classes that do not inherit from other base classes. In this case, only `base_class_1` is needed in the specification of **`class`** because `base_class_1` already inherits `base_class_2`. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2593.md b/docs/error-messages/compiler-errors-2/compiler-error-c2593.md index b12f1563fd6..69bdbd3a6b3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2593.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2593.md @@ -8,7 +8,7 @@ ms.assetid: 4a0fe9bb-2163-447d-91f6-1890ed8250f6 --- # Compiler Error C2593 -'operator identifier' is ambiguous +> 'operator identifier' is ambiguous More than one possible operator is defined for an overloaded operator. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2594.md b/docs/error-messages/compiler-errors-2/compiler-error-c2594.md index a68fd0ce545..82733c55eb8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2594.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2594.md @@ -8,7 +8,7 @@ ms.assetid: 68cd708f-266e-44b0-a211-3e3ab63b11bf --- # Compiler Error C2594 -'operator' : ambiguous conversions from 'type1' to 'type2' +> 'operator' : ambiguous conversions from 'type1' to 'type2' No conversion from *type1* to *type2* was more direct than any other. We suggest two possible solutions to converting from *type1* to *type2*. The first option is to define a direct conversion from *type1* to *type2*, and the second option is to specify a sequence of conversions from *type1* to *type2*. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2597.md b/docs/error-messages/compiler-errors-2/compiler-error-c2597.md index 1c77cfc6004..68b6986a658 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2597.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2597.md @@ -8,7 +8,7 @@ ms.assetid: 2e48127d-e3ff-4a40-8156-2863e45b1a38 --- # Compiler Error C2597 -illegal reference to non-static member 'identifier' +> illegal reference to non-static member 'identifier' Possible causes: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2598.md b/docs/error-messages/compiler-errors-2/compiler-error-c2598.md index 017757d46f4..24d581910ab 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2598.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2598.md @@ -8,7 +8,7 @@ ms.assetid: 40777c62-39ba-441e-b081-f49f94b43547 --- # Compiler Error C2598 -linkage specification must be at global scope +> linkage specification must be at global scope The linkage specifier is declared at local scope. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2599.md b/docs/error-messages/compiler-errors-2/compiler-error-c2599.md index 4d8490f2778..e2a970b0c4b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2599.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2599.md @@ -8,7 +8,7 @@ ms.assetid: 88515f36-7589-47e2-862e-0de8b18d6668 --- # Compiler Error C2599 -'enum' : forward declaration of enum type is not allowed +> 'enum' : forward declaration of enum type is not allowed The compiler no longer supports forward declaration of a managed enumeration. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2600.md b/docs/error-messages/compiler-errors-2/compiler-error-c2600.md index 75038e37b85..e57b37e3c47 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2600.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2600.md @@ -8,7 +8,7 @@ ms.assetid: cce11943-ea01-4bee-a7b0-b67d24ec6493 --- # Compiler Error C2600 -'function' : cannot define a compiler-generated special member function (must be declared in the class first) +> 'function' : cannot define a compiler-generated special member function (must be declared in the class first) Before member functions such as constructors or destructors can be defined for a class, they must be declared in the class. The compiler can generate default constructors and destructors (called special member functions) if none are declared in the class. However, if you define one of these functions without a matching declaration in the class, the compiler detects a conflict. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2602.md b/docs/error-messages/compiler-errors-2/compiler-error-c2602.md index dabc0048be8..ebf89c4a8d8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2602.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2602.md @@ -8,7 +8,7 @@ ms.assetid: 6c07a40e-537e-4954-b5c5-1e0e58fe1952 --- # Compiler Error C2602 -'class::Identifier' is not a member of a base class of 'class' +> 'class::Identifier' is not a member of a base class of 'class' `Identifier` cannot be accessed because it is not a member inherited from any base class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2605.md b/docs/error-messages/compiler-errors-2/compiler-error-c2605.md index a11f99a7a35..9ce7c9cf136 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2605.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2605.md @@ -8,7 +8,7 @@ ms.assetid: a0e6f132-5acf-4e19-b277-ddf196d182bf --- # Compiler Error C2605 -'name' : this method is reserved within a managed or WinRT class +> 'name' : this method is reserved within a managed or WinRT class Certain names are reserved by the compiler for internal functions. For more information, see [Destructors and finalizers](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Destructors_and_finalizers). From 1fcc773c753e164667a3a40e2463afee8ea71cb9 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 1 Aug 2025 18:20:03 +0800 Subject: [PATCH 1230/2255] Add "Remarks" and "Example" headings for error references in range [C2581, C2610] --- docs/error-messages/compiler-errors-2/compiler-error-c2581.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2582.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2584.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2585.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2586.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2587.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2588.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2589.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2592.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2593.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2594.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2597.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2598.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2599.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2600.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2602.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2603.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2605.md | 2 ++ 18 files changed, 60 insertions(+) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2581.md b/docs/error-messages/compiler-errors-2/compiler-error-c2581.md index 18e774904d1..8ba27538096 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2581.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2581.md @@ -10,6 +10,8 @@ ms.assetid: 24a4e4c1-24d3-4e42-b760-7dcaf9740b16 > 'type' : static 'operator =' function is illegal +## Remarks + The assignment (`=`) operator is incorrectly declared as **`static`**. Assignment operators cannot be **`static`**. For more information, see [User-Defined Operators (C++/CLI)](../../dotnet/user-defined-operators-cpp-cli.md). ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2582.md b/docs/error-messages/compiler-errors-2/compiler-error-c2582.md index adf0764e41f..5c6c69f0b1b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2582.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2582.md @@ -10,8 +10,12 @@ ms.assetid: ee1b9378-8bcd-4792-b87e-6d7a466d29ed > 'function' function is unavailable in 'type' +## Remarks + An attempt was made to assign to an object that does not have an assignment operator. +## Example + The following sample generates C2582: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2584.md b/docs/error-messages/compiler-errors-2/compiler-error-c2584.md index 49251f08bf1..e17ad5bb8e1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2584.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2584.md @@ -10,6 +10,8 @@ ms.assetid: 836e2c0a-86c0-4742-b432-beb0191ad20e > 'Class' : direct base 'Base2' is inaccessible; already a base of 'Base1' +## Remarks + `Class` already derives directly from `Base1`. `Base2` also derives from `Base1`. `Class` cannot derive from `Base2` because that would mean inheriting (indirectly) from `Base1` again, which is not legal because `Base1` is already a direct base class. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2585.md b/docs/error-messages/compiler-errors-2/compiler-error-c2585.md index 58f4a8a5519..d9924073e82 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2585.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2585.md @@ -10,6 +10,8 @@ ms.assetid: 05bb1a9c-28fb-4a88-a1b5-aea85ebdee1c > explicit conversion to 'type' is ambiguous +## Remarks + The type conversion can produce more than one result. ### To fix by checking the following possible causes diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2586.md b/docs/error-messages/compiler-errors-2/compiler-error-c2586.md index 5316ceef8c5..1fc9cf28c71 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2586.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2586.md @@ -10,8 +10,12 @@ ms.assetid: dae703c7-5c38-4db6-8411-4d1b22713eb5 > incorrect user-defined conversion syntax : illegal indirections +## Remarks + Indirection of a conversion operator is not allowed. +## Example + The following sample generates C2586: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2587.md b/docs/error-messages/compiler-errors-2/compiler-error-c2587.md index bdc62e9435d..92d214cc1a0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2587.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2587.md @@ -10,8 +10,12 @@ ms.assetid: 7637a2c7-35d4-4b5a-a8f2-515a7bda98fd > 'identifier' : illegal use of local variable as default parameter +## Remarks + Local variables are not allowed as default parameters. +## Example + The following sample generates C2587: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2588.md b/docs/error-messages/compiler-errors-2/compiler-error-c2588.md index 3e6351e4752..ca7c81a2301 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2588.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2588.md @@ -10,10 +10,14 @@ ms.assetid: 19a0cabd-ca13-44a5-9be3-ee676abf9bc4 > '::~identifier' : illegal global destructor +## Remarks + The destructor is defined for something other than a class, structure, or union. This is not allowed. This error can be caused by a missing class, structure, or union name on the left side of the scope resolution (`::`) operator. +## Example + The following sample generates C2588: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2589.md b/docs/error-messages/compiler-errors-2/compiler-error-c2589.md index 104f1ef0e2f..e2e291b566f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2589.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2589.md @@ -10,10 +10,14 @@ ms.assetid: 1d7942c7-8a81-4bb4-b272-76a0019e8513 > 'identifier' : illegal token on right side of '::' +## Remarks + If a class, structure, or union name appears to the left of the scope-resolution operator (double colons), the token on the right must be a class, structure, or union member. Otherwise, any global identifier can appear on the right. The scope-resolution operator cannot be overloaded. +## Example + The following sample generates C2589: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2592.md b/docs/error-messages/compiler-errors-2/compiler-error-c2592.md index c0e8112dc7d..2f168e28862 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2592.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2592.md @@ -10,4 +10,6 @@ ms.assetid: 833a4d7b-66ef-4d4c-ae83-a533c2b0eb07 > 'class': 'base_class_2' is inherited from 'base_class_1' and cannot be re-specified +## Remarks + You can only specify base classes that do not inherit from other base classes. In this case, only `base_class_1` is needed in the specification of **`class`** because `base_class_1` already inherits `base_class_2`. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2593.md b/docs/error-messages/compiler-errors-2/compiler-error-c2593.md index 69bdbd3a6b3..1c6b265ad93 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2593.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2593.md @@ -10,10 +10,14 @@ ms.assetid: 4a0fe9bb-2163-447d-91f6-1890ed8250f6 > 'operator identifier' is ambiguous +## Remarks + More than one possible operator is defined for an overloaded operator. This error may be fixed if you use an explicit cast on one or more actual parameters. +## Examples + The following sample generates C2593: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2594.md b/docs/error-messages/compiler-errors-2/compiler-error-c2594.md index 82733c55eb8..1e218bf85d6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2594.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2594.md @@ -10,8 +10,12 @@ ms.assetid: 68cd708f-266e-44b0-a211-3e3ab63b11bf > 'operator' : ambiguous conversions from 'type1' to 'type2' +## Remarks + No conversion from *type1* to *type2* was more direct than any other. We suggest two possible solutions to converting from *type1* to *type2*. The first option is to define a direct conversion from *type1* to *type2*, and the second option is to specify a sequence of conversions from *type1* to *type2*. +## Example + The following sample generates C2594. The suggested resolution to the error is a sequence of conversions: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2597.md b/docs/error-messages/compiler-errors-2/compiler-error-c2597.md index 68b6986a658..f87638db0c9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2597.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2597.md @@ -10,6 +10,8 @@ ms.assetid: 2e48127d-e3ff-4a40-8156-2863e45b1a38 > illegal reference to non-static member 'identifier' +## Remarks + Possible causes: 1. A nonstatic member is specified in a static member function. To access the nonstatic member, you must pass in or create a local instance of the class and use a member-access operator (`.` or `->`). @@ -18,6 +20,8 @@ Possible causes: 1. A member access operator refers to a nonmember function. +## Example + 1. The following sample generates C2597 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2598.md b/docs/error-messages/compiler-errors-2/compiler-error-c2598.md index 24d581910ab..032e9ee4dc2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2598.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2598.md @@ -10,8 +10,12 @@ ms.assetid: 40777c62-39ba-441e-b081-f49f94b43547 > linkage specification must be at global scope +## Remarks + The linkage specifier is declared at local scope. +## Example + The following sample generates C2598: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2599.md b/docs/error-messages/compiler-errors-2/compiler-error-c2599.md index e2a970b0c4b..71a706d08d5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2599.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2599.md @@ -10,10 +10,14 @@ ms.assetid: 88515f36-7589-47e2-862e-0de8b18d6668 > 'enum' : forward declaration of enum type is not allowed +## Remarks + The compiler no longer supports forward declaration of a managed enumeration. Forward declaration of an enum type is not allowed under [/Za](../../build/reference/za-ze-disable-language-extensions.md). +## Example + The following sample generates C2599: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2600.md b/docs/error-messages/compiler-errors-2/compiler-error-c2600.md index e57b37e3c47..2377173869d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2600.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2600.md @@ -10,10 +10,14 @@ ms.assetid: cce11943-ea01-4bee-a7b0-b67d24ec6493 > 'function' : cannot define a compiler-generated special member function (must be declared in the class first) +## Remarks + Before member functions such as constructors or destructors can be defined for a class, they must be declared in the class. The compiler can generate default constructors and destructors (called special member functions) if none are declared in the class. However, if you define one of these functions without a matching declaration in the class, the compiler detects a conflict. To fix this error, in the class declaration, declare each member function that you define outside the class declaration. +## Example + The following sample generates C2600: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2602.md b/docs/error-messages/compiler-errors-2/compiler-error-c2602.md index ebf89c4a8d8..9d31fc7a1e0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2602.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2602.md @@ -10,8 +10,12 @@ ms.assetid: 6c07a40e-537e-4954-b5c5-1e0e58fe1952 > 'class::Identifier' is not a member of a base class of 'class' +## Remarks + `Identifier` cannot be accessed because it is not a member inherited from any base class. +## Example + The following sample generates C2602: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2603.md b/docs/error-messages/compiler-errors-2/compiler-error-c2603.md index c66a5ff3e1c..81a653f3a70 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2603.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2603.md @@ -10,6 +10,8 @@ ms.assetid: 9ca520d0-f082-4b65-933d-17c3bcf8b02c > '*function*' : Too many block scope static objects with constructor/destructors in function +## Remarks + In versions of the Microsoft C++ compiler before Visual Studio 2015, or when the [/Zc:threadSafeInit-](../../build/reference/zc-threadsafeinit-thread-safe-local-static-initialization.md) compiler option is specified, there is a limit of 31 on the number of static objects you can have in an externally visible inline function. To resolve this issue, we recommend you adopt more recent version of the Microsoft C++ compiler toolset, or if possible, remove the /Zc:threadSafeInit- compiler option. If this is not possible, consider combining your static objects. If the objects are of the same type, consider use of a single static array of that type, and reference individual members as required. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2605.md b/docs/error-messages/compiler-errors-2/compiler-error-c2605.md index 9ce7c9cf136..635e018ec32 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2605.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2605.md @@ -10,6 +10,8 @@ ms.assetid: a0e6f132-5acf-4e19-b277-ddf196d182bf > 'name' : this method is reserved within a managed or WinRT class +## Remarks + Certain names are reserved by the compiler for internal functions. For more information, see [Destructors and finalizers](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Destructors_and_finalizers). ## Example From 812dbe0b8af0b1e07b5ef4b2cd717705ed66ad02 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 1 Aug 2025 18:23:25 +0800 Subject: [PATCH 1231/2255] Replace term "sample" with "example" for error references in range [C2581, C2610] --- docs/error-messages/compiler-errors-2/compiler-error-c2581.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2582.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2584.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2586.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2587.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2588.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2589.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2593.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2594.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2597.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2598.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2599.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2600.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2602.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2605.md | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2581.md b/docs/error-messages/compiler-errors-2/compiler-error-c2581.md index 8ba27538096..752ff03597f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2581.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2581.md @@ -16,7 +16,7 @@ The assignment (`=`) operator is incorrectly declared as **`static`**. Assignmen ## Example -The following sample generates C2581. +The following example generates C2581. ```cpp // C2581.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2582.md b/docs/error-messages/compiler-errors-2/compiler-error-c2582.md index 5c6c69f0b1b..6c656c04c2a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2582.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2582.md @@ -16,7 +16,7 @@ An attempt was made to assign to an object that does not have an assignment oper ## Example -The following sample generates C2582: +The following example generates C2582: ```cpp // C2582.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2584.md b/docs/error-messages/compiler-errors-2/compiler-error-c2584.md index e17ad5bb8e1..91e968e3387 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2584.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2584.md @@ -16,7 +16,7 @@ ms.assetid: 836e2c0a-86c0-4742-b432-beb0191ad20e ## Example -The following sample generates C2584. +The following example generates C2584. ```cpp // C2584.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2586.md b/docs/error-messages/compiler-errors-2/compiler-error-c2586.md index 1fc9cf28c71..70c18f83de9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2586.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2586.md @@ -16,7 +16,7 @@ Indirection of a conversion operator is not allowed. ## Example -The following sample generates C2586: +The following example generates C2586: ```cpp // c2586.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2587.md b/docs/error-messages/compiler-errors-2/compiler-error-c2587.md index 92d214cc1a0..a70bbab981b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2587.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2587.md @@ -16,7 +16,7 @@ Local variables are not allowed as default parameters. ## Example -The following sample generates C2587: +The following example generates C2587: ```cpp // C2587.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2588.md b/docs/error-messages/compiler-errors-2/compiler-error-c2588.md index ca7c81a2301..4fc0aac25ab 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2588.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2588.md @@ -18,7 +18,7 @@ This error can be caused by a missing class, structure, or union name on the lef ## Example -The following sample generates C2588: +The following example generates C2588: ```cpp // C2588.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2589.md b/docs/error-messages/compiler-errors-2/compiler-error-c2589.md index e2e291b566f..cfe6404b42c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2589.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2589.md @@ -18,7 +18,7 @@ The scope-resolution operator cannot be overloaded. ## Example -The following sample generates C2589: +The following example generates C2589: ```cpp // C2589.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2593.md b/docs/error-messages/compiler-errors-2/compiler-error-c2593.md index 1c6b265ad93..b1731e7dcbb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2593.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2593.md @@ -18,7 +18,7 @@ This error may be fixed if you use an explicit cast on one or more actual parame ## Examples -The following sample generates C2593: +The following example generates C2593: ```cpp // C2593.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2594.md b/docs/error-messages/compiler-errors-2/compiler-error-c2594.md index 1e218bf85d6..e2e6c88017d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2594.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2594.md @@ -16,7 +16,7 @@ No conversion from *type1* to *type2* was more direct than any other. We suggest ## Example -The following sample generates C2594. The suggested resolution to the error is a sequence of conversions: +The following example generates C2594. The suggested resolution to the error is a sequence of conversions: ```cpp // C2594.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2597.md b/docs/error-messages/compiler-errors-2/compiler-error-c2597.md index f87638db0c9..7e498a0a86f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2597.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2597.md @@ -22,7 +22,7 @@ Possible causes: ## Example -1. The following sample generates C2597 and shows how to fix it: +1. The following example generates C2597 and shows how to fix it: ```cpp // C2597.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2598.md b/docs/error-messages/compiler-errors-2/compiler-error-c2598.md index 032e9ee4dc2..7ae9783e6fa 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2598.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2598.md @@ -16,7 +16,7 @@ The linkage specifier is declared at local scope. ## Example -The following sample generates C2598: +The following example generates C2598: ```cpp // C2598.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2599.md b/docs/error-messages/compiler-errors-2/compiler-error-c2599.md index 71a706d08d5..268b2f0a21b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2599.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2599.md @@ -18,7 +18,7 @@ Forward declaration of an enum type is not allowed under [/Za](../../build/refer ## Example -The following sample generates C2599: +The following example generates C2599: ```cpp // C2599.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2600.md b/docs/error-messages/compiler-errors-2/compiler-error-c2600.md index 2377173869d..9afbef58abf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2600.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2600.md @@ -18,7 +18,7 @@ To fix this error, in the class declaration, declare each member function that y ## Example -The following sample generates C2600: +The following example generates C2600: ```cpp // C2600.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2602.md b/docs/error-messages/compiler-errors-2/compiler-error-c2602.md index 9d31fc7a1e0..c4c3c71ec2c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2602.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2602.md @@ -16,7 +16,7 @@ ms.assetid: 6c07a40e-537e-4954-b5c5-1e0e58fe1952 ## Example -The following sample generates C2602: +The following example generates C2602: ```cpp // C2602.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2605.md b/docs/error-messages/compiler-errors-2/compiler-error-c2605.md index 635e018ec32..045432c28cc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2605.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2605.md @@ -16,7 +16,7 @@ Certain names are reserved by the compiler for internal functions. For more inf ## Example -The following sample generates C2605. +The following example generates C2605. ```cpp // C2605.cpp From a2914fa550b6ad85976d0a50cbf2ca4e3b05cfe3 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 1 Aug 2025 18:26:23 +0800 Subject: [PATCH 1232/2255] Update metadata for error references in range [C2581, C2610] --- .../error-messages/compiler-errors-2/compiler-error-c2581.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2582.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2584.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2585.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2586.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2587.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2588.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2589.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2592.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2593.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2594.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2597.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2598.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2599.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2600.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2602.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2603.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2605.md | 5 ++--- 18 files changed, 36 insertions(+), 54 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2581.md b/docs/error-messages/compiler-errors-2/compiler-error-c2581.md index 752ff03597f..9097b0b6b34 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2581.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2581.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2581" title: "Compiler Error C2581" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2581" +ms.date: 11/04/2016 f1_keywords: ["C2581"] helpviewer_keywords: ["C2581"] -ms.assetid: 24a4e4c1-24d3-4e42-b760-7dcaf9740b16 --- # Compiler Error C2581 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2582.md b/docs/error-messages/compiler-errors-2/compiler-error-c2582.md index 6c656c04c2a..2a57df672e8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2582.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2582.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2582" title: "Compiler Error C2582" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2582" +ms.date: 11/04/2016 f1_keywords: ["C2582"] helpviewer_keywords: ["C2582"] -ms.assetid: ee1b9378-8bcd-4792-b87e-6d7a466d29ed --- # Compiler Error C2582 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2584.md b/docs/error-messages/compiler-errors-2/compiler-error-c2584.md index 91e968e3387..8164ce8b38c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2584.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2584.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2584" title: "Compiler Error C2584" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2584" +ms.date: 11/04/2016 f1_keywords: ["C2584"] helpviewer_keywords: ["C2584"] -ms.assetid: 836e2c0a-86c0-4742-b432-beb0191ad20e --- # Compiler Error C2584 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2585.md b/docs/error-messages/compiler-errors-2/compiler-error-c2585.md index d9924073e82..32c34f271a4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2585.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2585.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2585" title: "Compiler Error C2585" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2585" +ms.date: 11/04/2016 f1_keywords: ["C2585"] helpviewer_keywords: ["C2585"] -ms.assetid: 05bb1a9c-28fb-4a88-a1b5-aea85ebdee1c --- # Compiler Error C2585 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2586.md b/docs/error-messages/compiler-errors-2/compiler-error-c2586.md index 70c18f83de9..412a45f14d8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2586.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2586.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2586" title: "Compiler Error C2586" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2586" +ms.date: 11/04/2016 f1_keywords: ["C2586"] helpviewer_keywords: ["C2586"] -ms.assetid: dae703c7-5c38-4db6-8411-4d1b22713eb5 --- # Compiler Error C2586 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2587.md b/docs/error-messages/compiler-errors-2/compiler-error-c2587.md index a70bbab981b..f70167f35f9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2587.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2587.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2587" title: "Compiler Error C2587" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2587" +ms.date: 11/04/2016 f1_keywords: ["C2587"] helpviewer_keywords: ["C2587"] -ms.assetid: 7637a2c7-35d4-4b5a-a8f2-515a7bda98fd --- # Compiler Error C2587 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2588.md b/docs/error-messages/compiler-errors-2/compiler-error-c2588.md index 4fc0aac25ab..774f364b96c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2588.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2588.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2588" title: "Compiler Error C2588" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2588" +ms.date: 11/04/2016 f1_keywords: ["C2588"] helpviewer_keywords: ["C2588"] -ms.assetid: 19a0cabd-ca13-44a5-9be3-ee676abf9bc4 --- # Compiler Error C2588 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2589.md b/docs/error-messages/compiler-errors-2/compiler-error-c2589.md index cfe6404b42c..3f7e4fa6da6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2589.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2589.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2589" title: "Compiler Error C2589" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2589" +ms.date: 11/04/2016 f1_keywords: ["C2589"] helpviewer_keywords: ["C2589"] -ms.assetid: 1d7942c7-8a81-4bb4-b272-76a0019e8513 --- # Compiler Error C2589 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2592.md b/docs/error-messages/compiler-errors-2/compiler-error-c2592.md index 2f168e28862..054f08281e8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2592.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2592.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2592" title: "Compiler Error C2592" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2592" +ms.date: 11/04/2016 f1_keywords: ["C2592"] helpviewer_keywords: ["C2592"] -ms.assetid: 833a4d7b-66ef-4d4c-ae83-a533c2b0eb07 --- # Compiler Error C2592 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2593.md b/docs/error-messages/compiler-errors-2/compiler-error-c2593.md index b1731e7dcbb..b31ff336de4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2593.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2593.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2593" title: "Compiler Error C2593" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2593" +ms.date: 11/04/2016 f1_keywords: ["C2593"] helpviewer_keywords: ["C2593"] -ms.assetid: 4a0fe9bb-2163-447d-91f6-1890ed8250f6 --- # Compiler Error C2593 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2594.md b/docs/error-messages/compiler-errors-2/compiler-error-c2594.md index e2e6c88017d..c962231113f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2594.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2594.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2594" title: "Compiler Error C2594" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2594" +ms.date: 11/04/2016 f1_keywords: ["C2594"] helpviewer_keywords: ["C2594"] -ms.assetid: 68cd708f-266e-44b0-a211-3e3ab63b11bf --- # Compiler Error C2594 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2597.md b/docs/error-messages/compiler-errors-2/compiler-error-c2597.md index 7e498a0a86f..ed1bcf191ce 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2597.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2597.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2597" title: "Compiler Error C2597" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2597" +ms.date: 11/04/2016 f1_keywords: ["C2597"] helpviewer_keywords: ["C2597"] -ms.assetid: 2e48127d-e3ff-4a40-8156-2863e45b1a38 --- # Compiler Error C2597 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2598.md b/docs/error-messages/compiler-errors-2/compiler-error-c2598.md index 7ae9783e6fa..9e996c4837a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2598.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2598.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2598" title: "Compiler Error C2598" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2598" +ms.date: 11/04/2016 f1_keywords: ["C2598"] helpviewer_keywords: ["C2598"] -ms.assetid: 40777c62-39ba-441e-b081-f49f94b43547 --- # Compiler Error C2598 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2599.md b/docs/error-messages/compiler-errors-2/compiler-error-c2599.md index 268b2f0a21b..56a13a45eeb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2599.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2599.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2599" title: "Compiler Error C2599" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2599" +ms.date: 11/04/2016 f1_keywords: ["C2599"] helpviewer_keywords: ["C2599"] -ms.assetid: 88515f36-7589-47e2-862e-0de8b18d6668 --- # Compiler Error C2599 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2600.md b/docs/error-messages/compiler-errors-2/compiler-error-c2600.md index 9afbef58abf..63dcc2d64a0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2600.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2600.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2600" title: "Compiler Error C2600" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2600" +ms.date: 11/04/2016 f1_keywords: ["C2600"] helpviewer_keywords: ["C2600"] -ms.assetid: cce11943-ea01-4bee-a7b0-b67d24ec6493 --- # Compiler Error C2600 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2602.md b/docs/error-messages/compiler-errors-2/compiler-error-c2602.md index c4c3c71ec2c..bc32d316af0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2602.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2602.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2602" title: "Compiler Error C2602" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2602" +ms.date: 11/04/2016 f1_keywords: ["C2602"] helpviewer_keywords: ["C2602"] -ms.assetid: 6c07a40e-537e-4954-b5c5-1e0e58fe1952 --- # Compiler Error C2602 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2603.md b/docs/error-messages/compiler-errors-2/compiler-error-c2603.md index 81a653f3a70..c4700923f0f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2603.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2603.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2603" title: "Compiler Error C2603" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2603" +ms.date: 11/04/2016 f1_keywords: ["C2603"] helpviewer_keywords: ["C2603"] -ms.assetid: 9ca520d0-f082-4b65-933d-17c3bcf8b02c --- # Compiler Error C2603 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2605.md b/docs/error-messages/compiler-errors-2/compiler-error-c2605.md index 045432c28cc..ee73a6aa642 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2605.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2605.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2605" title: "Compiler Error C2605" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2605" +ms.date: 11/04/2016 f1_keywords: ["C2605"] helpviewer_keywords: ["C2605"] -ms.assetid: a0e6f132-5acf-4e19-b277-ddf196d182bf --- # Compiler Error C2605 From 52bb410368e1f770f531145de5028c9284499628 Mon Sep 17 00:00:00 2001 From: Mark Rotteveel Date: Fri, 1 Aug 2025 12:43:44 +0200 Subject: [PATCH 1233/2255] Add missing anchors to specific guideline --- docs/code-quality/c26433.md | 4 ++-- docs/code-quality/c26434.md | 2 +- docs/code-quality/c26435.md | 2 +- docs/code-quality/c26443.md | 4 ++-- docs/code-quality/code-analysis-for-cpp-corecheck.md | 6 +++--- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/code-quality/c26433.md b/docs/code-quality/c26433.md index 31a482a9743..20d866f966d 100644 --- a/docs/code-quality/c26433.md +++ b/docs/code-quality/c26433.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["C26433"] ## C++ Core Guidelines -[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines) +[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rh-override) It's not required by the compiler to clearly state that a virtual function overrides its base. Not specifying `override` can cause subtle issues during maintenance if the virtual specification ever changes in the class hierarchy. It also lowers readability and makes an interface's polymorphic behavior less obvious. If a function is clearly marked as `override`, the compiler can check the consistency of the interface, and help to spot issues before they manifest themselves at run time. @@ -44,4 +44,4 @@ public: ## See also -[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines) +[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rh-override) diff --git a/docs/code-quality/c26434.md b/docs/code-quality/c26434.md index 03e26c7b2f8..197a57cbcf8 100644 --- a/docs/code-quality/c26434.md +++ b/docs/code-quality/c26434.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["C26434"] ## C++ Core Guidelines -[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines) +[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rh-override) ## Remarks diff --git a/docs/code-quality/c26435.md b/docs/code-quality/c26435.md index ec4fd01356e..61b57161dc4 100644 --- a/docs/code-quality/c26435.md +++ b/docs/code-quality/c26435.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["C26435"] ## C++ Core Guidelines -[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines) +[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rh-override) To improve readability, the kind of virtual behavior should be stated clearly and without unnecessary redundancy. Even though multiple virtual specifiers can be used simultaneously, it's better to specify one at a time to emphasize the most important aspect of virtual behavior. The following order of importance is apparent: diff --git a/docs/code-quality/c26443.md b/docs/code-quality/c26443.md index 5b9b55f44b2..e07e15b419b 100644 --- a/docs/code-quality/c26443.md +++ b/docs/code-quality/c26443.md @@ -13,7 +13,7 @@ This warning was removed in Visual Studio 16.8 to reflect [changes to C.128 in t ## C++ Core Guidelines -[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines). +[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rh-override). The current consensus on the Core Guidelines is to exclude destructors from the 'override explicitly' recommendation. @@ -44,4 +44,4 @@ public: ## See also -[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines) +[C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rh-override) diff --git a/docs/code-quality/code-analysis-for-cpp-corecheck.md b/docs/code-quality/code-analysis-for-cpp-corecheck.md index 63877154bae..b5baf2cc339 100644 --- a/docs/code-quality/code-analysis-for-cpp-corecheck.md +++ b/docs/code-quality/code-analysis-for-cpp-corecheck.md @@ -115,7 +115,7 @@ Global initializer calls a non-constexpr function '*symbol*'. See [C++ Core Guid Global initializer accesses extern object '*symbol*'. See [C++ Core Guidelines I.22](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#i22-avoid-complex-initialization-of-global-objects). [C26444 NO_UNNAMED_RAII_OBJECTS](c26444.md)\ -Avoid unnamed objects with custom construction and destruction. See [ES.84: Don't (try to) declare a local variable with no name](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines). +Avoid unnamed objects with custom construction and destruction. See [ES.84: Don't (try to) declare a local variable with no name](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-noname). ## CLASS Group @@ -129,13 +129,13 @@ Function '*symbol*' should be marked with 'override'. See [C.128: Virtual functi Function '*symbol_1*' hides a non-virtual function '*symbol_2*'. See [C++ Core Guidelines C.128](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c128-virtual-functions-should-specify-exactly-one-of-virtual-override-or-final). [C26435 SINGLE_VIRTUAL_SPECIFICATION](c26435.md)\ -Function '*symbol*' should specify exactly one of 'virtual', 'override', or 'final'. See [C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines). +Function '*symbol*' should specify exactly one of 'virtual', 'override', or 'final'. See [C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rh-override). [C26436 NEED_VIRTUAL_DTOR](C26436.md)\ The type '*symbol*' with a virtual function needs either public virtual or protected non-virtual destructor. See [C++ Core Guidelines C.35](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c35-a-base-class-destructor-should-be-either-public-and-virtual-or-protected-and-nonvirtual). [C26443 NO_EXPLICIT_DTOR_OVERRIDE](c26443.md)\ -Overriding destructor should not use explicit 'override' or 'virtual' specifiers. See [C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines). +Overriding destructor should not use explicit 'override' or 'virtual' specifiers. See [C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rh-override). ## STYLE Group From 7b5d19e92a10f5f874d57dce226ce5a6ab1a3968 Mon Sep 17 00:00:00 2001 From: Mark Rotteveel Date: Sat, 2 Aug 2025 10:39:27 +0200 Subject: [PATCH 1234/2255] Replace generated IDs with explicit IDs Also replaced some explicit IDs with more specific explicit IDs for Bounds.N and Type.N (to the specific rule, instead of the section containing the rule). --- docs/code-quality/c26400.md | 2 +- docs/code-quality/c26401.md | 2 +- docs/code-quality/c26403.md | 2 +- docs/code-quality/c26405.md | 2 +- docs/code-quality/c26406.md | 2 +- docs/code-quality/c26407.md | 2 +- docs/code-quality/c26408.md | 2 +- docs/code-quality/c26409.md | 2 +- docs/code-quality/c26410.md | 4 +- docs/code-quality/c26411.md | 2 +- docs/code-quality/c26414.md | 2 +- docs/code-quality/c26415.md | 2 +- docs/code-quality/c26416.md | 2 +- docs/code-quality/c26417.md | 2 +- docs/code-quality/c26418.md | 2 +- docs/code-quality/c26426.md | 2 +- docs/code-quality/c26427.md | 2 +- docs/code-quality/c26429.md | 2 +- docs/code-quality/c26430.md | 2 +- docs/code-quality/c26431.md | 2 +- docs/code-quality/c26432.md | 2 +- docs/code-quality/c26436.md | 2 +- docs/code-quality/c26437.md | 2 +- docs/code-quality/c26438.md | 2 +- docs/code-quality/c26439.md | 4 +- docs/code-quality/c26440.md | 2 +- docs/code-quality/c26441.md | 2 +- docs/code-quality/c26444.md | 4 +- docs/code-quality/c26445.md | 2 +- docs/code-quality/c26446.md | 2 +- docs/code-quality/c26447.md | 2 +- docs/code-quality/c26449.md | 2 +- docs/code-quality/c26450.md | 2 +- docs/code-quality/c26452.md | 4 +- docs/code-quality/c26453.md | 4 +- docs/code-quality/c26454.md | 2 +- docs/code-quality/c26455.md | 2 +- docs/code-quality/c26456.md | 2 +- docs/code-quality/c26457.md | 2 +- docs/code-quality/c26462.md | 2 +- docs/code-quality/c26463.md | 2 +- docs/code-quality/c26464.md | 2 +- docs/code-quality/c26472.md | 2 +- docs/code-quality/c26473.md | 2 +- docs/code-quality/c26474.md | 2 +- docs/code-quality/c26475.md | 2 +- docs/code-quality/c26478.md | 2 +- docs/code-quality/c26479.md | 4 +- docs/code-quality/c26482.md | 2 +- docs/code-quality/c26483.md | 2 +- docs/code-quality/c26490.md | 2 +- docs/code-quality/c26491.md | 2 +- docs/code-quality/c26492.md | 2 +- docs/code-quality/c26493.md | 2 +- docs/code-quality/c26494.md | 4 +- docs/code-quality/c26495.md | 2 +- docs/code-quality/c26496.md | 2 +- docs/code-quality/c26498.md | 4 +- docs/code-quality/c26812.md | 2 +- docs/code-quality/c26815.md | 2 +- docs/code-quality/c26816.md | 2 +- docs/code-quality/c26817.md | 2 +- docs/code-quality/c26818.md | 2 +- docs/code-quality/c26819.md | 4 +- docs/code-quality/c26820.md | 2 +- docs/code-quality/c26826.md | 2 +- .../code-analysis-for-cpp-corecheck.md | 84 +++++++++---------- 67 files changed, 117 insertions(+), 117 deletions(-) diff --git a/docs/code-quality/c26400.md b/docs/code-quality/c26400.md index 99711c0b89c..e4819ceeaaf 100644 --- a/docs/code-quality/c26400.md +++ b/docs/code-quality/c26400.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["C26400"] ## Remarks -This check helps to enforce the *rule I.11: Never transfer ownership by a raw pointer (T\*), which is a subset of the rule *R.3: A raw pointer (a T\*) is non-owning*. Specifically, it warns on any call to `operator new`, which saves its result in a variable of raw pointer type. It also warns on calls to functions that return `gsl::owner` if their results are assigned to raw pointers. The idea is that you should clearly state ownership of memory resources. For more information, see the [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r-resource-management). +This check helps to enforce the *rule I.11: Never transfer ownership by a raw pointer (T\*), which is a subset of the rule *R.3: A raw pointer (a T\*) is non-owning*. Specifically, it warns on any call to `operator new`, which saves its result in a variable of raw pointer type. It also warns on calls to functions that return `gsl::owner` if their results are assigned to raw pointers. The idea is that you should clearly state ownership of memory resources. For more information, see the [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#S-resource). The easiest way to fix this warning is to use **`auto`** declaration if the resource is assigned immediately at the variable declaration. If this fix isn't possible, then we suggest that you use the type `gsl::owner`. The **`auto`** declarations initialized with operator **`new`** are "owners" because we assume that the result of any allocation is implicitly an owner pointer. We transfer this assumption to the **`auto`** variable and treat it as `owner`. diff --git a/docs/code-quality/c26401.md b/docs/code-quality/c26401.md index c8b4c50b84d..0029e443d56 100644 --- a/docs/code-quality/c26401.md +++ b/docs/code-quality/c26401.md @@ -20,7 +20,7 @@ Code analysis name: `DONT_DELETE_NON_OWNER` ## See also -[C++ Core Guidelines I.11](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#i11-never-transfer-ownership-by-a-raw-pointer-t-or-reference-t) +[C++ Core Guidelines I.11](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Ri-raw) ## Examples diff --git a/docs/code-quality/c26403.md b/docs/code-quality/c26403.md index 70f1e92ac51..801e33dce9a 100644 --- a/docs/code-quality/c26403.md +++ b/docs/code-quality/c26403.md @@ -12,7 +12,7 @@ ms.assetid: 7e14868d-df86-4df3-98d3-71b1e80ba14e Owner pointers are like unique pointers: they own a resource exclusively, and manage release of the resource, or its transfers to other owners. This check validates that a local owner pointer properly maintains its resource through all execution paths in a function. If the resource wasn't transferred to another owner, or wasn't explicitly release, the checker warns, and points to the declaration of the pointer variable. -For more information, see the [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r-resource-management). +For more information, see the [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#S-resource). ## Remarks diff --git a/docs/code-quality/c26405.md b/docs/code-quality/c26405.md index 4384443ba29..8c8d2b45eb6 100644 --- a/docs/code-quality/c26405.md +++ b/docs/code-quality/c26405.md @@ -12,7 +12,7 @@ ms.assetid: 2034d961-3ec5-4184-bbef-aa792e4c03c0 ## Remarks -If an owner pointer already points to a valid memory buffer, it must not be assigned to another value without releasing its current resource first. Such assignment may lead to a resource leak even if the resource address is copied into some raw pointer (because raw pointers shouldn't release resources). For more information, see the [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r3-a-raw-pointer-a-t-is-non-owning). +If an owner pointer already points to a valid memory buffer, it must not be assigned to another value without releasing its current resource first. Such assignment may lead to a resource leak even if the resource address is copied into some raw pointer (because raw pointers shouldn't release resources). For more information, see the [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-ptr). Code analysis name: `DONT_ASSIGN_TO_VALID` diff --git a/docs/code-quality/c26406.md b/docs/code-quality/c26406.md index 0e4688cdc28..3027afd7284 100644 --- a/docs/code-quality/c26406.md +++ b/docs/code-quality/c26406.md @@ -10,7 +10,7 @@ ms.assetid: 02fb8e23-1989-4e24-a5a5-e30f71d00325 > Do not assign a raw pointer to an `owner` (r.3) -This warning enforces R.3 from the C++ Core Guidelines. For more information, see [C++ Core Guidelines R.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r3-a-raw-pointer-a-t-is-non-owning). +This warning enforces R.3 from the C++ Core Guidelines. For more information, see [C++ Core Guidelines R.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-ptr). ## Remarks diff --git a/docs/code-quality/c26407.md b/docs/code-quality/c26407.md index 0a5af3152a4..79022356f01 100644 --- a/docs/code-quality/c26407.md +++ b/docs/code-quality/c26407.md @@ -10,7 +10,7 @@ ms.assetid: 5539907a-bfa0-40db-82a6-b860c97209e1 > Prefer scoped objects, don't heap-allocate unnecessarily (r.5) -To avoid unnecessary use of pointers, we try to detect common patterns of local allocations. For example, we detect when the result of a call to operator **`new`** is stored in a local variable and later explicitly deleted. This check supports the [C++ Core Guidelines rule R.5](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r5-prefer-scoped-objects-dont-heap-allocate-unnecessarily): *Prefer scoped objects, don't heap-allocate unnecessarily*. To fix the issue, use an RAII type instead of a raw pointer, and allow it to deal with resources. Obviously, it isn't necessary to create a wrapper type to allocate a single object. Instead, a local variable of the object's type would work better. +To avoid unnecessary use of pointers, we try to detect common patterns of local allocations. For example, we detect when the result of a call to operator **`new`** is stored in a local variable and later explicitly deleted. This check supports the [C++ Core Guidelines rule R.5](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-scoped): *Prefer scoped objects, don't heap-allocate unnecessarily*. To fix the issue, use an RAII type instead of a raw pointer, and allow it to deal with resources. Obviously, it isn't necessary to create a wrapper type to allocate a single object. Instead, a local variable of the object's type would work better. ## Remarks diff --git a/docs/code-quality/c26408.md b/docs/code-quality/c26408.md index c426b63f2a1..423b99d972a 100644 --- a/docs/code-quality/c26408.md +++ b/docs/code-quality/c26408.md @@ -22,7 +22,7 @@ Code analysis name: `NO_MALLOC_FREE` ## See also -[C++ Core Guidelines R.10](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r10-avoid-malloc-and-free) +[C++ Core Guidelines R.10](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-mallocfree) ## Example diff --git a/docs/code-quality/c26409.md b/docs/code-quality/c26409.md index a0dc4a4f3da..459ce8cf922 100644 --- a/docs/code-quality/c26409.md +++ b/docs/code-quality/c26409.md @@ -12,7 +12,7 @@ helpviewer_keywords: ["C26409"] Even if code is clean of calls to `malloc` and `free`, we still suggest that you consider better options than explicit use of operators [`new` and `delete`](../cpp/new-and-delete-operators.md). **C++ Core Guidelines**:\ -[R.11: Avoid calling `new` and `delete` explicitly](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r11-avoid-calling-new-and-delete-explicitly) +[R.11: Avoid calling `new` and `delete` explicitly](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-newdelete) The ultimate fix is to use smart pointers and appropriate factory functions, such as [`std::make_unique`](../standard-library/memory-functions.md#make_unique). diff --git a/docs/code-quality/c26410.md b/docs/code-quality/c26410.md index 57e0b75a4c7..6a8429c1ec5 100644 --- a/docs/code-quality/c26410.md +++ b/docs/code-quality/c26410.md @@ -10,11 +10,11 @@ ms.assetid: d1547faf-96c6-48da-90f5-841154d0e878 > The parameter '*parameter*' is a reference to const unique pointer, use `const T*` or `const T&` instead (r.32) -Generally, references to const unique pointer are meaningless. They can safely be replaced by a raw reference or a pointer. This warning enforces [C++ Core Guidelines rule R.32](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r32-take-a-unique_ptrwidget-parameter-to-express-that-a-function-assumes-ownership-of-a-widget). +Generally, references to const unique pointer are meaningless. They can safely be replaced by a raw reference or a pointer. This warning enforces [C++ Core Guidelines rule R.32](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-uniqueptrparam). ## Remarks -- Unique pointer checks have rather broad criteria to identify smart pointers. The [C++ Core Guidelines rule R.31](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r31-if-you-have-non-std-smart-pointers-follow-the-basic-pattern-from-std): *If you have non-std smart pointers, follow the basic pattern from std describes the unique pointer and shared pointer concepts*. The heuristic is simple, but may lead to surprises: a smart pointer type is any type that defines either `operator->` or `operator*`. A copy-able type (shared pointer) must have either a public copy constructor or an overloaded assignment operator that deals with a non-Rvalue reference parameter. +- Unique pointer checks have rather broad criteria to identify smart pointers. The [C++ Core Guidelines rule R.31](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-smart): *If you have non-std smart pointers, follow the basic pattern from std describes the unique pointer and shared pointer concepts*. The heuristic is simple, but may lead to surprises: a smart pointer type is any type that defines either `operator->` or `operator*`. A copy-able type (shared pointer) must have either a public copy constructor or an overloaded assignment operator that deals with a non-Rvalue reference parameter. - Template code may produce noisy warnings. Keep in mind that templates can be instantiated with various type parameters with different levels of indirection, including references. Some warnings may not be obvious and fixes may require some rework of templates (for example, explicit removal of reference indirection). If template code is intentionally generic, the warning can be suppressed. diff --git a/docs/code-quality/c26411.md b/docs/code-quality/c26411.md index e4dd8959324..cf66a21b4de 100644 --- a/docs/code-quality/c26411.md +++ b/docs/code-quality/c26411.md @@ -10,7 +10,7 @@ ms.assetid: 5134e51e-8b92-4ee7-94c3-022e318a0e24 > The parameter '*parameter*' is a reference to unique pointer and it is never reassigned or reset, use `T*` or `T&` instead (r.33) -When you pass a unique pointer to a function by reference, it implies that its resource may be released or transferred inside the function. If the function uses its parameter only to access the resource, it's safe to pass a raw pointer or a reference. For more information, see [C++ Core Guidelines rule R.33](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r33-take-a-unique_ptrwidget-parameter-to-express-that-a-function-reseats-thewidget): *Take a unique_ptr\& parameter to express that a function reseats the widget*. +When you pass a unique pointer to a function by reference, it implies that its resource may be released or transferred inside the function. If the function uses its parameter only to access the resource, it's safe to pass a raw pointer or a reference. For more information, see [C++ Core Guidelines rule R.33](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-reseat): *Take a unique_ptr\& parameter to express that a function reseats the widget*. ## Remarks diff --git a/docs/code-quality/c26414.md b/docs/code-quality/c26414.md index d33427adcbe..704a57d4e80 100644 --- a/docs/code-quality/c26414.md +++ b/docs/code-quality/c26414.md @@ -10,7 +10,7 @@ helpviewer_keywords: ["C26414"] > "Move, copy, reassign or reset a local smart pointer." **C++ Core Guidelines**:\ -[R.5: Prefer scoped objects, don't heap-allocate unnecessarily](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r5-prefer-scoped-objects-dont-heap-allocate-unnecessarily) +[R.5: Prefer scoped objects, don't heap-allocate unnecessarily](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-scoped) Smart pointers are convenient for dynamic resource management, but they're not always necessary. For example, it may be easier and more efficient to manage a local dynamic buffer by using a standard container. You may not need dynamic allocation at all for single objects, for example, if they never outlive their creator function. They can be replaced with local variables. Smart pointers become handy when a scenario requires a change of ownership. For example, when you reassign a dynamic resource multiple times, or in multiple paths. They're also useful for resources obtained from external code. And, when smart pointers are used to extend the lifetime of a resource. diff --git a/docs/code-quality/c26415.md b/docs/code-quality/c26415.md index 5438faa1ebd..93c445fc29c 100644 --- a/docs/code-quality/c26415.md +++ b/docs/code-quality/c26415.md @@ -11,7 +11,7 @@ ms.assetid: 4165f70a-78ae-4a03-b256-c4bd74b02d09 > Smart pointer parameter is used only to access contained pointer. Use T* or T& instead. **C++ Core Guidelines**: -[R.30](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r30-take-smart-pointers-as-parameters-only-to-explicitly-express-lifetime-semantics): Take smart pointers as parameters only to explicitly express lifetime semantics +[R.30](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-smartptrparam): Take smart pointers as parameters only to explicitly express lifetime semantics Using a smart pointer type to pass data to a function indicates that the target function needs to manage the lifetime of the contained object. However, say the function only uses the smart pointer to access the contained object and never actually calls any code that may lead to its deallocation (that is, never affects its lifetime). Then there's usually no need to complicate the interface with smart pointers. A plain pointer or reference to the contained object is preferred. diff --git a/docs/code-quality/c26416.md b/docs/code-quality/c26416.md index 658adfea026..c658471dc4d 100644 --- a/docs/code-quality/c26416.md +++ b/docs/code-quality/c26416.md @@ -11,7 +11,7 @@ ms.assetid: f158207b-45cf-44cf-8e4b-b5b75b56ea0e > Shared pointer parameter is passed by rvalue reference. Pass by value instead. **C++ Core Guidelines**: -[R.34](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r34-take-a-shared_ptrwidget-parameter-to-express-that-a-function-is-part-owner): Take a shared_ptr\ parameter to express that a function is part owner +[R.34](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-sharedptrparam-owner): Take a shared_ptr\ parameter to express shared ownership Passing a shared pointer by rvalue reference is rarely necessary. Unless it's an implementation of move semantics for a shared pointer type itself, shared pointer objects can be safely passed by value. Using rvalue reference may be also an indication that unique pointer is more appropriate since it clearly transfers unique ownership from caller to callee. diff --git a/docs/code-quality/c26417.md b/docs/code-quality/c26417.md index 3ab549beac9..b8138b42abd 100644 --- a/docs/code-quality/c26417.md +++ b/docs/code-quality/c26417.md @@ -11,7 +11,7 @@ ms.assetid: 0e09fcc6-f9eb-4404-b51e-5815705c6afb > Shared pointer parameter is passed by reference and not reset or reassigned. Use T* or T& instead. **C++ Core Guidelines**: -[R.35](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r35-take-a-shared_ptrwidget-parameter-to-express-that-a-function-might-reseat-the-shared-pointer): Take a shared_ptr\& parameter to express that a function might reseat the shared pointer +[R.35](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-sharedptrparam): Take a shared_ptr\& parameter to express that a function might reseat the shared pointer Passing shared pointers by reference may be useful in scenarios where called code updates the target of the smart pointer object, and its caller expects to see such updates. Using a reference solely to reduce costs of passing a shared pointer is questionable. If called code only accesses the target object and never manages its lifetime, it's safer to pass a raw pointer or reference, rather than to expose resource management details. diff --git a/docs/code-quality/c26418.md b/docs/code-quality/c26418.md index 30c44cf0d11..d29c62c8656 100644 --- a/docs/code-quality/c26418.md +++ b/docs/code-quality/c26418.md @@ -11,7 +11,7 @@ ms.assetid: d2c84a40-8a5d-4018-92c2-6498cdd9b541 > Shared pointer parameter is not copied or moved. Use T* or T& instead. **C++ Core Guidelines**: -[R.36](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r36-take-a-const-shared_ptrwidget-parameter-to-express-that-it-might-retain-a-reference-count-to-the-object-): Take a const shared_ptr\& parameter to express that it might retain a reference count to the object +[R.36](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-sharedptrparam-const): Take a const shared_ptr\& parameter to express that it might retain a reference count to the object If a shared pointer parameter is passed by value or by reference to a constant object, the function is expected to take control of the target object's lifetime without affecting the caller. The code should either copy or move the shared pointer parameter to another shared pointer object, or pass it along to other code by invoking functions that accept shared pointers. Otherwise, a plain pointer or reference may be feasible. diff --git a/docs/code-quality/c26426.md b/docs/code-quality/c26426.md index d889960eee4..15289f08c7c 100644 --- a/docs/code-quality/c26426.md +++ b/docs/code-quality/c26426.md @@ -12,7 +12,7 @@ ms.assetid: 6fb5f6d2-b097-47f8-8b49-f2fd4e9bef0e ## C++ Core Guidelines -[I.22](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#i22-avoid-complex-initialization-of-global-objects): Avoid complex initialization of global objects +[I.22](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Ri-global-init): Avoid complex initialization of global objects The order of execution of initializers for global objects may be inconsistent or undefined, which can lead to issues that are hard to reproduce and investigate. To avoid such problems, global initializers shouldn't depend on external code that's executed at run time, and that may depend on data that's not yet initialized. This rule flags cases where global objects call functions to obtain their initial values. diff --git a/docs/code-quality/c26427.md b/docs/code-quality/c26427.md index e71f09e9561..5586e4d46a4 100644 --- a/docs/code-quality/c26427.md +++ b/docs/code-quality/c26427.md @@ -11,7 +11,7 @@ ms.assetid: 8fb95a44-8704-45b1-bc55-eccd59b1db2f > Global initializer accesses extern object '*symbol*' (i.22) **C++ Core Guidelines**: -[I.22](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#i22-avoid-complex-initialization-of-global-objects): Avoid complex initialization of global objects +[I.22](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Ri-global-init): Avoid complex initialization of global objects Global objects may be initialized in an inconsistent or undefined order, which means that interdependency between them is risky and should be avoided. This guideline is applicable when initializers refer to another object that's considered to be **`extern`**. diff --git a/docs/code-quality/c26429.md b/docs/code-quality/c26429.md index 96726440aa0..857bffecf9d 100644 --- a/docs/code-quality/c26429.md +++ b/docs/code-quality/c26429.md @@ -11,7 +11,7 @@ ms.assetid: 4e1c74d5-7307-436c-927b-f74ae863282c > Symbol is never tested for nullness, it can be marked as `gsl::not_null`. **C++ Core Guidelines**: -[F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value): Use a `not_null` to indicate that "null" isn't a valid value +[F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-nullptr): Use a `not_null` to indicate that "null" is not a valid value It's a common practice to use asserts to enforce assumptions about the validity of pointer values. The problem is, asserts don't expose assumptions through the interface (such as in return types or parameters). Asserts are also harder to maintain and keep in sync with other code changes. The recommendation is to use `gsl::not_null` from the Guidelines Support Library to mark resources that should never have a null value. The rule `USE_NOTNULL` helps to identify places that omit checks for null and hence can be updated to use `gsl::not_null`. diff --git a/docs/code-quality/c26430.md b/docs/code-quality/c26430.md index d417983a038..92fa6af1ec7 100644 --- a/docs/code-quality/c26430.md +++ b/docs/code-quality/c26430.md @@ -11,7 +11,7 @@ ms.assetid: 3dca2626-8102-4eed-8ff3-73eb3d5c328c > Symbol is not tested for nullness on all paths. **C++ Core Guidelines**: -[F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value): Use a not_null\ to indicate that "null" isn't a valid value +[F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-nullptr): Use a not_null\ to indicate that "null" is not a valid value If code ever checks pointer variables for null, it should do so consistently and validate pointers on all paths. Sometimes overaggressive checking for null is still better than the possibility of a hard crash in one of the complicated branches. Ideally, such code should be refactored to be less complex (by splitting it into multiple functions), and to rely on markers like `gsl::not_null`. These markers allow the code to isolate parts of the algorithm that can make safe assumptions about valid pointer values. The rule `TEST_ON_ALL_PATHS` helps to find places where null checks are inconsistent (meaning assumptions may require review). Or, it finds actual bugs where a potential null value can bypass null checks in some of the code paths. diff --git a/docs/code-quality/c26431.md b/docs/code-quality/c26431.md index ded200ef169..ae48a3ac66d 100644 --- a/docs/code-quality/c26431.md +++ b/docs/code-quality/c26431.md @@ -11,7 +11,7 @@ ms.assetid: 40be6032-c8de-49ab-8e43-e8eedc0ca0ba > The type of expression '*expr*' is already `gsl::not_null`. Do not test it for nullness (f.23) **C++ Core Guidelines**: -[F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value): Use a not_null\ to indicate that "null" isn't a valid value +[F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-nullptr): Use a not_null\ to indicate that "null" is not a valid value The marker type `gsl::not_null` from the Guidelines Support Library is used to clearly indicate values that are never null pointers. It causes a hard failure if the assumption doesn't hold at run time. So, obviously, there's no need to check for null if an expression evaluates to a result of type `gsl::not_null`. diff --git a/docs/code-quality/c26432.md b/docs/code-quality/c26432.md index b9de0b89298..98a45f3475e 100644 --- a/docs/code-quality/c26432.md +++ b/docs/code-quality/c26432.md @@ -10,7 +10,7 @@ helpviewer_keywords: ["C26432"] > `If you define or delete any default operation in the type 'type-name', define or delete them all (c.21).` **C++ Core Guidelines**:\ -[C.21: If you define or `=delete` any copy, move, or destructor function, define or `=delete` them all](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c21-if-you-define-or-delete-any-copy-move-or-destructor-function-define-or-delete-them-all) +[C.21: If you define or `=delete` any copy, move, or destructor function, define or `=delete` them all](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rc-five) Special operations such as constructors are assumed to alter the behavior of types so they rely more on language mechanisms to automatically enforce specific scenarios. The canonical example is resource management. If you explicitly define, default, or delete any of these special operations, it signals you want to avoid any special handling of a type. It's inconsistent to leave the other operations unspecified, that is, implicitly defined as deleted by the compiler. diff --git a/docs/code-quality/c26436.md b/docs/code-quality/c26436.md index ef07743865b..f2c433854f4 100644 --- a/docs/code-quality/c26436.md +++ b/docs/code-quality/c26436.md @@ -10,7 +10,7 @@ description: CppCoreCheck rule that enforces C++ Core Guidelines C.35 > The type '*symbol*' with a virtual function needs either public virtual or protected non-virtual destructor (c.35) -[**C++ Core Guidelines**: C.35](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c35-a-base-class-destructor-should-be-either-public-and-virtual-or-protected-and-non-virtual): A base class destructor should be either public and virtual, or protected and nonvirtual +[**C++ Core Guidelines**: C.35](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rc-dtor-virtual): A base class destructor should be either public and virtual, or protected and non-virtual If a class defines a virtual function it becomes polymorphic, which implies that derived classes can change its behavior including resource management and destruction logic. Because client code may call polymorphic types via pointers to base classes, there's no way a client can explicitly choose which behavior is appropriate without downcasting. To make sure that resources are managed consistently and destruction occurs according to the actual type's rules, you should define a public virtual destructor. If the type hierarchy is designed to disallow client code to destroy objects directly, destructors should be defined as protected non-virtual. diff --git a/docs/code-quality/c26437.md b/docs/code-quality/c26437.md index 2f96db0776e..1ec3dbc4327 100644 --- a/docs/code-quality/c26437.md +++ b/docs/code-quality/c26437.md @@ -10,7 +10,7 @@ helpviewer_keywords: ["C26437"] > Do not slice. **C++ Core Guidelines**: -[ES.63: Don't slice](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es63-dont-slice) +[ES.63: Don't slice](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-slice) The language allows [slicing](https://en.wikipedia.org/wiki/Object_slicing) and can be viewed as a special case of a dangerous implicit cast. Even if it's done intentionally and doesn't lead to immediate issues, it's still highly discouraged. It makes code harder to change, by forcing extra requirements on related data types. It's especially true if types are polymorphic or involve resource management. diff --git a/docs/code-quality/c26438.md b/docs/code-quality/c26438.md index 2317d815139..dd7f16b4ebf 100644 --- a/docs/code-quality/c26438.md +++ b/docs/code-quality/c26438.md @@ -11,7 +11,7 @@ ms.assetid: c7b3f59c-fb2f-4816-bda4-0fad23c80d83 > Avoid `goto` (es.76) **C++ Core Guidelines**:\ -[ES.76](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es76-avoid-goto): Avoid goto +[ES.76](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-goto): Avoid goto The use of **`goto`** is widely considered a dangerous and error-prone practice. It's acceptable only in generated code, such as in a parser generated from a grammar. With modern C++ features and utilities provided by the Guidelines Support Library, it should be easy to avoid **`goto`** altogether. diff --git a/docs/code-quality/c26439.md b/docs/code-quality/c26439.md index 85e7499a1e7..385f65ca546 100644 --- a/docs/code-quality/c26439.md +++ b/docs/code-quality/c26439.md @@ -9,7 +9,7 @@ helpviewer_keywords: ["C26439"] > This kind of function may not throw. Declare it 'noexcept'. -[F.6: If your function must not throw, declare it `noexcept`](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f6-if-your-function-must-not-throw-declare-it-noexcept) +[F.6: If your function must not throw, declare it `noexcept`](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-noexcept) Some operations should never throw exceptions. Their implementations should be reliable and should handle possible errors conditions gracefully. They shouldn't use exceptions to indicate failure. This rule flags cases where such operations aren't explicitly marked as `noexcept`, which means that they may throw exceptions and consumers can't make assumptions about its reliability. @@ -63,4 +63,4 @@ struct S ## See also [C26455](c26455.md)\ -[F.6: If your function must not throw, declare it `noexcept`](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f6-if-your-function-must-not-throw-declare-it-noexcept) +[F.6: If your function must not throw, declare it `noexcept`](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-noexcept) diff --git a/docs/code-quality/c26440.md b/docs/code-quality/c26440.md index bf4207b1f02..62a9c87e536 100644 --- a/docs/code-quality/c26440.md +++ b/docs/code-quality/c26440.md @@ -10,7 +10,7 @@ description: CppCoreCheck rule C26440 that enforces C++ Core Guidelines F.6 > Function can be declared 'noexcept'. -[**C++ Core Guidelines** F.6](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f6-if-your-function-may-not-throw-declare-it-noexcept): If your function may not throw, declare it `noexcept` +[**C++ Core Guidelines** F.6](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-noexcept): If your function must not throw, declare it `noexcept` If code isn't supposed to cause any exceptions, it should be marked by using the `noexcept` specifier. This annotation helps to simplify error handling on the client code side, and enables the compiler to do more optimizations. diff --git a/docs/code-quality/c26441.md b/docs/code-quality/c26441.md index c2f5dc91b8e..a91a41ff873 100644 --- a/docs/code-quality/c26441.md +++ b/docs/code-quality/c26441.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["C26441"] ## C++ Core Guidelines -[CP.44: Remember to name your `lock_guard`s and `unique_lock`s](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#cp44-remember-to-name-your-lock_guards-and-unique_locks) +[CP.44: Remember to name your `lock_guard`s and `unique_lock`s](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconc-name) ## Remarks diff --git a/docs/code-quality/c26444.md b/docs/code-quality/c26444.md index cc020442fef..cca16a240be 100644 --- a/docs/code-quality/c26444.md +++ b/docs/code-quality/c26444.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["C26444"] ## C++ Core Guidelines -[ES.84: Don't try to declare a local variable with no name](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es84-dont-try-to-declare-a-local-variable-with-no-name) +[ES.84: Don't try to declare a local variable with no name](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-noname) An unnamed variable declaration creates a temporary object that is discarded at the end of the statement. Such temporary objects with nontrivial behavior may point to either inefficient code that allocates and immediately throws away resources or to the code that unintentionally ignores nonprimitive data. Sometimes it may also indicate plainly wrong declaration. @@ -46,4 +46,4 @@ void Foo() ## See also [C26441](C26441.md)\ -[ES.84: Don't try to declare a local variable with no name](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es84-dont-try-to-declare-a-local-variable-with-no-name) +[ES.84: Don't try to declare a local variable with no name](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-noname) diff --git a/docs/code-quality/c26445.md b/docs/code-quality/c26445.md index e81beeba280..2269f7e0653 100644 --- a/docs/code-quality/c26445.md +++ b/docs/code-quality/c26445.md @@ -13,7 +13,7 @@ A reference to `gsl::span` or `std::string_view` may be an indication of a lifet ## C++ Core Guidelines -[GSL.view: Views](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#gslview-views) +[GSL.view: Views](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-views) This rule catches subtle lifetime issues that may occur in code migrated from standard containers to new span and view types. Such types can be considered as "references to buffers." Using a reference to a span or view creates an extra layer of indirection. Such indirection is often unnecessary and can be confusing for maintainers. Spans are cheap to copy and can be returned by value from function calls. Obviously, such call results should never be referenced. diff --git a/docs/code-quality/c26446.md b/docs/code-quality/c26446.md index c63bb166bf6..c8e7f37213f 100644 --- a/docs/code-quality/c26446.md +++ b/docs/code-quality/c26446.md @@ -9,7 +9,7 @@ helpviewer_keywords: ["C26446"] > Prefer to use gsl::at() instead of unchecked subscript operator (bounds.4). -C++ Core Guidelines: [Bounds.4: Don't use standard-library functions and types that are not bounds-checked](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#probounds-bounds-safety-profile). +C++ Core Guidelines: [Bounds.4: Don't use standard-library functions and types that are not bounds-checked](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-bounds). ## Remarks diff --git a/docs/code-quality/c26447.md b/docs/code-quality/c26447.md index daf04cf103c..1835053be83 100644 --- a/docs/code-quality/c26447.md +++ b/docs/code-quality/c26447.md @@ -10,7 +10,7 @@ helpviewer_keywords: ["C26447"] > The function is declared `noexcept` but calls function *function_name* that may throw exceptions (f.6). C++ Core Guidelines:\ -[F.6: If your function may not throw, declare it noexcept](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f6-if-your-function-may-not-throw-declare-it-noexcept). +[F.6: If your function must not throw, declare it noexcept](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-noexcept). ## Remarks diff --git a/docs/code-quality/c26449.md b/docs/code-quality/c26449.md index 85de9ef0c33..594025669c1 100644 --- a/docs/code-quality/c26449.md +++ b/docs/code-quality/c26449.md @@ -9,7 +9,7 @@ helpviewer_keywords: ["C26449"] > `gsl::span` or `std::string_view` created from a temporary will be invalid when the temporary is invalidated (gsl.view) -C++ Core Guidelines: [GSL.view: Views](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#gslview-views). +C++ Core Guidelines: [GSL.view: Views](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-views). Spans and views are convenient and lightweight types that allow you to reference memory buffers. But they must be used carefully: while their interface looks similar to standard containers, their behavior is more like the behavior of pointers and references. They don't own data and must never be constructed from temporary buffers. This check focuses on cases where source data is temporary, while a span or view isn't. This rule can help to avoid subtle but dangerous mistakes made when legacy code gets modernized and adopts spans or views. There's another check that handles a slightly different scenario involving span references: [C26445 NO_SPAN_REF](c26445.md). diff --git a/docs/code-quality/c26450.md b/docs/code-quality/c26450.md index 66044efb234..2f4d1f351da 100644 --- a/docs/code-quality/c26450.md +++ b/docs/code-quality/c26450.md @@ -47,4 +47,4 @@ long long multiply() [C26452](c26452.md)\ [C26453](c26453.md)\ [C26454](c26454.md)\ -[ES.103: Don't overflow](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es103-dont-overflow) +[ES.103: Don't overflow](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-overflow) diff --git a/docs/code-quality/c26452.md b/docs/code-quality/c26452.md index 0f529f60ce5..14a7f7d7279 100644 --- a/docs/code-quality/c26452.md +++ b/docs/code-quality/c26452.md @@ -41,5 +41,5 @@ unsigned long long combine(unsigned lo, unsigned hi) [C26451](c26451.md)\ [C26453](c26453.md)\ [C26454](c26454.md)\ -[ES.101: Use unsigned types for bit manipulation](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es101-use-unsigned-types-for-bit-manipulation)\ -[ES.102: Use signed types for arithmetic](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es102-use-signed-types-for-arithmetic) +[ES.101: Use unsigned types for bit manipulation](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-unsigned)\ +[ES.102: Use signed types for arithmetic](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-signed) diff --git a/docs/code-quality/c26453.md b/docs/code-quality/c26453.md index 32a70642096..f7a44f29ab0 100644 --- a/docs/code-quality/c26453.md +++ b/docs/code-quality/c26453.md @@ -43,5 +43,5 @@ void leftshift(int shiftCount) [C26451](c26451.md)\ [C26452](c26452.md)\ [C26454](c26454.md)\ -[ES.101: Use unsigned types for bit manipulation](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es101-use-unsigned-types-for-bit-manipulation)\ -[ES.102: Use signed types for arithmetic](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es102-use-signed-types-for-arithmetic) +[ES.101: Use unsigned types for bit manipulation](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-unsigned)\ +[ES.102: Use signed types for arithmetic](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-signed) diff --git a/docs/code-quality/c26454.md b/docs/code-quality/c26454.md index 77b21092ec7..59e6c58c517 100644 --- a/docs/code-quality/c26454.md +++ b/docs/code-quality/c26454.md @@ -41,4 +41,4 @@ unsigned int negativeunsigned() [C26451](c26451.md)\ [C26452](c26452.md)\ [C26453](c26453.md)\ -[ES.106: Don't try to avoid negative values by using `unsigned`](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es106-dont-try-to-avoid-negative-values-by-using-unsigned) +[ES.106: Don't try to avoid negative values by using `unsigned`](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-nonnegative) diff --git a/docs/code-quality/c26455.md b/docs/code-quality/c26455.md index 617f0cedd5d..756871cae8f 100644 --- a/docs/code-quality/c26455.md +++ b/docs/code-quality/c26455.md @@ -23,4 +23,4 @@ Code analysis name: `DEFAULT_CTOR_NOEXCEPT` ## See also [C26439](./c26439.md)\ -[F.6: If your function must not throw, declare it `noexcept`](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f6-if-your-function-must-not-throw-declare-it-noexcept) +[F.6: If your function must not throw, declare it `noexcept`](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-noexceptt) diff --git a/docs/code-quality/c26456.md b/docs/code-quality/c26456.md index d027fb7be16..74456141ad6 100644 --- a/docs/code-quality/c26456.md +++ b/docs/code-quality/c26456.md @@ -21,4 +21,4 @@ Code analysis name: `DONT_HIDE_OPERATORS` ## See also -[C++ Core Guideline c.128](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c128-virtual-functions-should-specify-exactly-one-of-virtual-override-or-final) +[C++ Core Guideline c.128](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rh-override) diff --git a/docs/code-quality/c26457.md b/docs/code-quality/c26457.md index 45027983705..17430f18309 100644 --- a/docs/code-quality/c26457.md +++ b/docs/code-quality/c26457.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["C26457"] ## Remarks -Excerpt from the [C++ Core Guideline ES.48](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es48-avoid-casts): +Excerpt from the [C++ Core Guideline ES.48](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-casts): > Never cast to `(void)` to ignore a `[[nodiscard]]` return value. If you deliberately want to discard such a result, first think hard about whether that is really a good idea (there is usually a good reason the author of the function or of the return type used `[[nodiscard]]` in the first place). If you still think it's appropriate and your code reviewer agrees, use `std::ignore =` to turn off the warning which is simple, portable, and easy to grep. diff --git a/docs/code-quality/c26462.md b/docs/code-quality/c26462.md index 376f8616158..8f9adfd83d4 100644 --- a/docs/code-quality/c26462.md +++ b/docs/code-quality/c26462.md @@ -31,4 +31,4 @@ void function1(int* ptr) ## See also -[C++ Core Guidelines con.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#con4-use-const-to-define-objects-with-values-that-do-not-change-after-construction). +[C++ Core Guidelines con.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-const). diff --git a/docs/code-quality/c26463.md b/docs/code-quality/c26463.md index 432d73548ef..1da69c4f32e 100644 --- a/docs/code-quality/c26463.md +++ b/docs/code-quality/c26463.md @@ -17,4 +17,4 @@ Code analysis name: `USE_CONST_FOR_ELEMENTS` ## See also -[C++ Core Guidelines con.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#con4-use-const-to-define-objects-with-values-that-do-not-change-after-construction). +[C++ Core Guidelines con.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-const). diff --git a/docs/code-quality/c26464.md b/docs/code-quality/c26464.md index f380a3b6548..aa5d02d1284 100644 --- a/docs/code-quality/c26464.md +++ b/docs/code-quality/c26464.md @@ -17,4 +17,4 @@ Code analysis name: `USE_CONST_POINTER_FOR_ELEMENTS` ## See also -[C++ Core Guidelines con.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#con4-use-const-to-define-objects-with-values-that-do-not-change-after-construction). +[C++ Core Guidelines con.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-const). diff --git a/docs/code-quality/c26472.md b/docs/code-quality/c26472.md index 814fae7c918..67a2f80fd15 100644 --- a/docs/code-quality/c26472.md +++ b/docs/code-quality/c26472.md @@ -11,7 +11,7 @@ ms.assetid: 51e215a7-0e0a-4e6c-bff1-805bf5b1af29 > Don't use a static_cast for arithmetic conversions. Use brace initialization, `gsl::narrow_cast`, or `gsl::narrow`. **C++ Core Guidelines**: -[Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#prosafety-type-safety-profile): Avoid casts +[Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-arithmeticcast): Avoid casts This rule helps to find places where static casts are used to convert between integral types. These casts are unsafe because the compiler wouldn't warn if any data loss occurs. Brace initializers are better for the cases where constants are used, and a compiler error is desired. There are also utilities from the Guidelines Support Library that help to describe intentions clearly: diff --git a/docs/code-quality/c26473.md b/docs/code-quality/c26473.md index 6cd55d5897b..410129d326e 100644 --- a/docs/code-quality/c26473.md +++ b/docs/code-quality/c26473.md @@ -11,7 +11,7 @@ ms.assetid: d88aaa57-0003-421f-8377-4e6a5c27f2df > Don't cast between pointer types where the source type and the target type are the same. **C++ Core Guidelines**: -[Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#prosafety-type-safety-profile): Avoid casts +[Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-identitycast): Avoid casts This rule helps to remove unnecessary or suspicious casts. Obviously, when a type is converted to itself, such a conversion is ineffective. Yet the fact that the cast is used may indicate a subtle design issue or a potential for regression if types change in future. It's always safer to use as few casts as possible. diff --git a/docs/code-quality/c26474.md b/docs/code-quality/c26474.md index ca1e9867418..fd62d069f68 100644 --- a/docs/code-quality/c26474.md +++ b/docs/code-quality/c26474.md @@ -11,7 +11,7 @@ ms.assetid: 1e23a8e6-97fa-47f5-a279-b52aa2efafa4 > Don't cast between pointer types when the conversion could be implicit. **C++ Core Guidelines**:\ -[Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#prosafety-type-safety-profile): Avoid casts +[Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-implicitpointercast): Avoid casts In some cases, implicit casts between pointer types are safe and don't require you to write a specific cast expression. This rule finds instances of unnecessary casts you can safely remove. diff --git a/docs/code-quality/c26475.md b/docs/code-quality/c26475.md index da0daf01af3..b44baae8a8e 100644 --- a/docs/code-quality/c26475.md +++ b/docs/code-quality/c26475.md @@ -11,7 +11,7 @@ ms.assetid: 4ed71cf8-f155-4961-b4fe-77feb3b880c3 > Do not use function style C-casts. **C++ Core Guidelines**: -[ES.49](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es49-if-you-must-use-a-cast-use-a-named-cast): If you must use a cast, use a named cast +[ES.49](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-casts-named): If you must use a cast, use a named cast Function-style casts (for example, `int(1.1)`) are another form of C-style casts (like `(int)1.1`), which have questionable safety. Specifically, the compiler doesn't try to check if any data loss can occur either in C-casts or in function casts. In both cases, it's better either to avoid casting or to use a braced initializer if possible. If neither works, static casts may be suitable, but it's still better to use utilities from the Guidelines Support Library: diff --git a/docs/code-quality/c26478.md b/docs/code-quality/c26478.md index ddaff2f01b2..47dc1d62bf3 100644 --- a/docs/code-quality/c26478.md +++ b/docs/code-quality/c26478.md @@ -37,4 +37,4 @@ To fix the issue, remove the redundant `std::move`. ## See also -[ES.56: Write `std::move()` only when you need to explicitly move an object to another scope](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es56-write-stdmove-only-when-you-need-to-explicitly-move-an-object-to-another-scope) +[ES.56: Write `std::move()` only when you need to explicitly move an object to another scope](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-move) diff --git a/docs/code-quality/c26479.md b/docs/code-quality/c26479.md index 4612d6fea0a..130adb11af8 100644 --- a/docs/code-quality/c26479.md +++ b/docs/code-quality/c26479.md @@ -38,5 +38,5 @@ S foo() ## See also -[F.48: Don't `return std::move(local)`](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f48-dont-return-stdmovelocal)\ -[ES.56: Write `std::move()` only when you need to explicitly move an object to another scope](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es56-write-stdmove-only-when-you-need-to-explicitly-move-an-object-to-another-scope) +[F.48: Don't `return std::move(local)`](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-return-move-local)\ +[ES.56: Write `std::move()` only when you need to explicitly move an object to another scope](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-move) diff --git a/docs/code-quality/c26482.md b/docs/code-quality/c26482.md index 5f278d80082..9fafb3b9124 100644 --- a/docs/code-quality/c26482.md +++ b/docs/code-quality/c26482.md @@ -11,7 +11,7 @@ description: CppCoreCheck rule C26482 that enforces C++ Core Guidelines Bounds.2 ## See also -[C++ Core Guidelines Bounds.2](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-bounds) +[C++ Core Guidelines Bounds.2](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-bounds-arrayindex) ## Example diff --git a/docs/code-quality/c26483.md b/docs/code-quality/c26483.md index 73a447ebd4b..45fb0f24716 100644 --- a/docs/code-quality/c26483.md +++ b/docs/code-quality/c26483.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["C26483"] ## See also -[C++ Core Guidelines Bounds.2](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-bounds) +[C++ Core Guidelines Bounds.2](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-bounds-arrayindex) ## Example diff --git a/docs/code-quality/c26490.md b/docs/code-quality/c26490.md index 0a74626fc4a..141a6a19411 100644 --- a/docs/code-quality/c26490.md +++ b/docs/code-quality/c26490.md @@ -11,7 +11,7 @@ description: CppCoreCheck rule C26490 that enforces C++ Core Guidelines Type.1 ## See also -[C++ Core Guidelines Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-type). +[C++ Core Guidelines Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-reinterpretcast). ## Example diff --git a/docs/code-quality/c26491.md b/docs/code-quality/c26491.md index 760762e2bf4..109c4dae5aa 100644 --- a/docs/code-quality/c26491.md +++ b/docs/code-quality/c26491.md @@ -7,4 +7,4 @@ helpviewer_keywords: ["C26491"] --- # Warning C26491 -> Don't use `static_cast` downcasts. See [C++ Core Guidelines Type.2](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-type). +> Don't use `static_cast` downcasts. See [C++ Core Guidelines Type.2](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-downcast). diff --git a/docs/code-quality/c26492.md b/docs/code-quality/c26492.md index f59114cba8f..33735543dcd 100644 --- a/docs/code-quality/c26492.md +++ b/docs/code-quality/c26492.md @@ -11,7 +11,7 @@ description: CppCoreCheck rule C26492 that enforces C++ Core Guidelines Type.3 ## See also -[C++ Core Guidelines Type.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-type). +[C++ Core Guidelines Type.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-constcast). ## Example diff --git a/docs/code-quality/c26493.md b/docs/code-quality/c26493.md index 8f93b4f4975..c67d9ffdd55 100644 --- a/docs/code-quality/c26493.md +++ b/docs/code-quality/c26493.md @@ -11,7 +11,7 @@ description: CppCoreCheck rule that enforces C++ Core Guidelines Type.4 ## See also -[C++ Core Guidelines Type.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-type). +[C++ Core Guidelines Type.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-cstylecast). ## Example diff --git a/docs/code-quality/c26494.md b/docs/code-quality/c26494.md index 7ed21fb0029..447b03a4c41 100644 --- a/docs/code-quality/c26494.md +++ b/docs/code-quality/c26494.md @@ -37,5 +37,5 @@ void function() ## See also -[ES.20: Always initialize an object](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es20-always-initialize-an-object)\ -[Pro.safety: Type-safety profile](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#prosafety-type-safety-profile) +[ES.20: Always initialize an object](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-always)\ +[Pro.safety: Type-safety profile](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-type) diff --git a/docs/code-quality/c26495.md b/docs/code-quality/c26495.md index e318171fe73..5bfc3c16854 100644 --- a/docs/code-quality/c26495.md +++ b/docs/code-quality/c26495.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["C26495"] ## Remarks -A member variable isn't initialized by a constructor or by an initializer. Make sure all variables are initialized by the end of construction. For more information, see C++ Core Guidelines [Type.6](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-type) and [C.48](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c48-prefer-in-class-initializers-to-member-initializers-in-constructors-for-constant-initializers). +A member variable isn't initialized by a constructor or by an initializer. Make sure all variables are initialized by the end of construction. For more information, see C++ Core Guidelines [Type.6](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-memberinit) and [C.48](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rc-in-class-initializer). This check is intra-procedural. Whenever there's a function call to a nonconst member function, the check assumes that this member function initializes all of the members. This heuristic can result in missed errors and is in place to avoid false positive results. Moreover, when a member is passed by nonconst reference to a function, the check assumes that the function initializes the member. diff --git a/docs/code-quality/c26496.md b/docs/code-quality/c26496.md index 91c0d1f88b0..9fd6800df5a 100644 --- a/docs/code-quality/c26496.md +++ b/docs/code-quality/c26496.md @@ -11,7 +11,7 @@ description: CppCoreCheck rule C26496 that enforces C++ Core Guidelines Con.4 ## See also -[C++ Core Guidelines con.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#con4-use-const-to-define-objects-with-values-that-do-not-change-after-construction). +[C++ Core Guidelines con.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-const). ## Example diff --git a/docs/code-quality/c26498.md b/docs/code-quality/c26498.md index e4953721454..417a4254275 100644 --- a/docs/code-quality/c26498.md +++ b/docs/code-quality/c26498.md @@ -9,7 +9,7 @@ helpviewer_keywords: ["C26498"] > The function '*function*' is constexpr, mark variable '*variable*' constexpr if compile-time evaluation is desired (con.5) -This rule helps to enforce [Con.5: Use `constexpr` for values that can be computed at compile time](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#con5-use-constexpr-for-values-that-can-be-computed-at-compile-time) in the C++ Core Guidelines. +This rule helps to enforce [Con.5: Use `constexpr` for values that can be computed at compile time](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-constexpr) in the C++ Core Guidelines. ## Remarks @@ -60,4 +60,4 @@ void foo() [C26497](c26407.md)\ [C26814](c26814.md)\ -[Con.5: Use `constexpr` for values that can be computed at compile time](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#con5-use-constexpr-for-values-that-can-be-computed-at-compile-time) +[Con.5: Use `constexpr` for values that can be computed at compile time](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-constexpr) diff --git a/docs/code-quality/c26812.md b/docs/code-quality/c26812.md index 434ffe7fb3e..d7a3ef1038b 100644 --- a/docs/code-quality/c26812.md +++ b/docs/code-quality/c26812.md @@ -47,4 +47,4 @@ Print_color(Product_info::Red); // Error: cannot convert Product_info to int. ## See also -[Enum.3 Prefer enum class over enum](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#enum3-prefer-class-enums-over-plain-enums) +[Enum.3 Prefer enum class over enum](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Renum-class) diff --git a/docs/code-quality/c26815.md b/docs/code-quality/c26815.md index 5a8c319b65f..8778703ae41 100644 --- a/docs/code-quality/c26815.md +++ b/docs/code-quality/c26815.md @@ -78,4 +78,4 @@ void f() { ## See also [C26816](c26816.md)\ -[ES.65: Don't dereference an invalid pointer](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es65-dont-dereference-an-invalid-pointer) +[ES.65: Don't dereference an invalid pointer](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-deref) diff --git a/docs/code-quality/c26816.md b/docs/code-quality/c26816.md index f60d02ef09e..f01ea3bc00d 100644 --- a/docs/code-quality/c26816.md +++ b/docs/code-quality/c26816.md @@ -62,4 +62,4 @@ int f() { ## See also [C26815](c26815.md)\ -[ES.65: Don't dereference an invalid pointer](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es65-dont-dereference-an-invalid-pointer) +[ES.65: Don't dereference an invalid pointer](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-deref) diff --git a/docs/code-quality/c26817.md b/docs/code-quality/c26817.md index 3e66b660cf5..470b699dd2e 100644 --- a/docs/code-quality/c26817.md +++ b/docs/code-quality/c26817.md @@ -9,7 +9,7 @@ helpviewer_keywords: ["C26817"] > Potentially expensive copy of variable *name* in range-for loop. Consider making it a const reference (es.71). -For more information, see [ES.71: Prefer a range-`for`-statement to a `for`-statement when there is a choice](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es71-prefer-a-range-for-statement-to-a-for-statement-when-there-is-a-choice) in the C++ Core Guidelines. +For more information, see [ES.71: Prefer a range-`for`-statement to a `for`-statement when there is a choice](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-for-range) in the C++ Core Guidelines. ## Example diff --git a/docs/code-quality/c26818.md b/docs/code-quality/c26818.md index db6965b1050..52adf70f5b6 100644 --- a/docs/code-quality/c26818.md +++ b/docs/code-quality/c26818.md @@ -14,7 +14,7 @@ no-loc: [ default, int, char ] This check covers the missing **`default`** label in switch statements that switch over a non-enumeration type, such as **`int`**, **`char`**, and so on. -For more information, see [ES.79: Use default to handle common cases (only)](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es79-use-default-to-handle-common-cases-only) in the C++ Core Guidelines. +For more information, see [ES.79: Use default to handle common cases (only)](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-default) in the C++ Core Guidelines. ## Example diff --git a/docs/code-quality/c26819.md b/docs/code-quality/c26819.md index fea652f765d..2e2007c9ff0 100644 --- a/docs/code-quality/c26819.md +++ b/docs/code-quality/c26819.md @@ -13,7 +13,7 @@ helpviewer_keywords: ["C26819"] This check covers implicit fallthrough in switch statements. Implicit fallthrough is when control flow transfers from one switch case directly into a following switch case without the use of the `[[fallthrough]];` statement. This warning is raised when an implicit fallthrough is detected in a switch case containing at least one statement. -For more information, see [ES.78: Don't rely on implicit fallthrough in `switch` statements](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es78-dont-rely-on-implicit-fallthrough-in-switch-statements) in the C++ Core Guidelines. +For more information, see [ES.78: Don't rely on implicit fallthrough in `switch` statements](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-break) in the C++ Core Guidelines. ## Example @@ -87,4 +87,4 @@ void foo(int a) ## See also -[ES.78: Don't rely on implicit fallthrough in `switch` statements](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es78-dont-rely-on-implicit-fallthrough-in-switch-statements) +[ES.78: Don't rely on implicit fallthrough in `switch` statements](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-break) diff --git a/docs/code-quality/c26820.md b/docs/code-quality/c26820.md index 133edaf1300..291f3abc21c 100644 --- a/docs/code-quality/c26820.md +++ b/docs/code-quality/c26820.md @@ -9,7 +9,7 @@ helpviewer_keywords: ["C26820"] > This is a potentially expensive copy operation. Consider using a reference unless a copy is required (p.9) -For more information, see [P.9: Don't waste time or space](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#p9-dont-waste-time-or-space) in the C++ Core Guidelines. +For more information, see [P.9: Don't waste time or space](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rp-waste) in the C++ Core Guidelines. This check covers nonobvious and easy-to-miss behavior when assigning a reference to a variable marked **`auto`**. The type of the **`auto`** variable is resolved to a value rather than a reference, and an implicit copy is made. diff --git a/docs/code-quality/c26826.md b/docs/code-quality/c26826.md index 47fd2d9e8d3..8c0f827e9d5 100644 --- a/docs/code-quality/c26826.md +++ b/docs/code-quality/c26826.md @@ -9,7 +9,7 @@ helpviewer_keywords: ["C26826"] > Don't use C-style variable arguments (f.55). -For more information, see [F.55: Don't use `va_arg` arguments](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f55-dont-use-va_arg-arguments) in the C++ Core Guidelines. +For more information, see [F.55: Don't use `va_arg` arguments](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#F-varargs) in the C++ Core Guidelines. ## Remarks diff --git a/docs/code-quality/code-analysis-for-cpp-corecheck.md b/docs/code-quality/code-analysis-for-cpp-corecheck.md index b5baf2cc339..82158f2233b 100644 --- a/docs/code-quality/code-analysis-for-cpp-corecheck.md +++ b/docs/code-quality/code-analysis-for-cpp-corecheck.md @@ -35,13 +35,13 @@ Do not assign a raw pointer to an owner\. See [C++ Core Guidelines R.3](https Prefer scoped objects, don't heap-allocate unnecessarily. See [C++ Core Guidelines R.5](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-scoped). [C26429 USE_NOTNULL](C26429.md)\ -Symbol '*symbol*' is never tested for nullness, it can be marked as not_null. See [C++ Core Guidelines F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value). +Symbol '*symbol*' is never tested for nullness, it can be marked as not_null. See [C++ Core Guidelines F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-nullptr). [C26430 TEST_ON_ALL_PATHS](C26430.md)\ -Symbol '*symbol*' is not tested for nullness on all paths. See [C++ Core Guidelines F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value). +Symbol '*symbol*' is not tested for nullness on all paths. See [C++ Core Guidelines F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-nullptr). [C26431 DONT_TEST_NOTNULL](C26431.md)\ -The type of expression '*expr*' is already gsl::not_null. Do not test it for nullness. See [C++ Core Guidelines F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value). +The type of expression '*expr*' is already gsl::not_null. Do not test it for nullness. See [C++ Core Guidelines F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-nullptr). ## RAW_POINTER Group @@ -61,19 +61,19 @@ Avoid malloc() and free(), prefer the nothrow version of new with delete. See [C Avoid calling new and delete explicitly, use std::make_unique\ instead. See [C++ Core Guidelines R.11](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rr-newdelete). [C26429 USE_NOTNULL](C26429.md)\ -Symbol '*symbol*' is never tested for nullness, it can be marked as not_null. See [C++ Core Guidelines F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value). +Symbol '*symbol*' is never tested for nullness, it can be marked as not_null. See [C++ Core Guidelines F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-nullptr). [C26430 TEST_ON_ALL_PATHS](C26430.md)\ -Symbol '*symbol*' is not tested for nullness on all paths. See [C++ Core Guidelines F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value). +Symbol '*symbol*' is not tested for nullness on all paths. See [C++ Core Guidelines F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-nullptr). [C26431 DONT_TEST_NOTNULL](C26431.md)\ -The type of expression '*expr*' is already gsl::not_null. Do not test it for nullness. See [C++ Core Guidelines F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f23-use-a-not_nullt-to-indicate-that-null-is-not-a-valid-value). +The type of expression '*expr*' is already gsl::not_null. Do not test it for nullness. See [C++ Core Guidelines F.23](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-nullptr). [C26481 NO_POINTER_ARITHMETIC](C26481.md)\ -Don't use pointer arithmetic. Use span instead. See [C++ Core Guidelines Bounds.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-bounds). +Don't use pointer arithmetic. Use span instead. See [C++ Core Guidelines Bounds.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-bounds-arithmetic). [C26485 NO_ARRAY_TO_POINTER_DECAY](C26485.md)\ -Expression '*expr*': No array to pointer decay. See [C++ Core Guidelines Bounds.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-bounds). +Expression '*expr*': No array to pointer decay. See [C++ Core Guidelines Bounds.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-bounds-decay). ## UNIQUE_POINTER Group @@ -109,10 +109,10 @@ Shared pointer parameter '*symbol*' is not copied or moved. Use T* or T& instead ## DECLARATION Group [C26426 NO_GLOBAL_INIT_CALLS](C26426.md)\ -Global initializer calls a non-constexpr function '*symbol*'. See [C++ Core Guidelines I.22](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#i22-avoid-complex-initialization-of-global-objects). +Global initializer calls a non-constexpr function '*symbol*'. See [C++ Core Guidelines I.22](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Ri-global-init). [C26427 NO_GLOBAL_INIT_EXTERNS](C26427.md)\ -Global initializer accesses extern object '*symbol*'. See [C++ Core Guidelines I.22](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#i22-avoid-complex-initialization-of-global-objects). +Global initializer accesses extern object '*symbol*'. See [C++ Core Guidelines I.22](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Ri-global-init). [C26444 NO_UNNAMED_RAII_OBJECTS](c26444.md)\ Avoid unnamed objects with custom construction and destruction. See [ES.84: Don't (try to) declare a local variable with no name](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-noname). @@ -120,19 +120,19 @@ Avoid unnamed objects with custom construction and destruction. See [ES.84: Don' ## CLASS Group [C26432 DEFINE_OR_DELETE_SPECIAL_OPS](C26432.md)\ -If you define or delete any default operation in the type '*symbol*', define or delete them all. See [C++ Core Guidelines C.21](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c21-if-you-define-or-delete-any-default-operation-define-or-delete-them-all). +If you define or delete any default operation in the type '*symbol*', define or delete them all. See [C++ Core Guidelines C.21](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rc-five). [C26433 OVERRIDE_EXPLICITLY](c26433.md)\ -Function '*symbol*' should be marked with 'override'. See [C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c128-virtual-functions-should-specify-exactly-one-of-virtual-override-or-final). +Function '*symbol*' should be marked with 'override'. See [C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rh-override). [C26434 DONT_HIDE_METHODS](C26434.md)\ -Function '*symbol_1*' hides a non-virtual function '*symbol_2*'. See [C++ Core Guidelines C.128](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c128-virtual-functions-should-specify-exactly-one-of-virtual-override-or-final). +Function '*symbol_1*' hides a non-virtual function '*symbol_2*'. See [C++ Core Guidelines C.128](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rh-override). [C26435 SINGLE_VIRTUAL_SPECIFICATION](c26435.md)\ Function '*symbol*' should specify exactly one of 'virtual', 'override', or 'final'. See [C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rh-override). [C26436 NEED_VIRTUAL_DTOR](C26436.md)\ -The type '*symbol*' with a virtual function needs either public virtual or protected non-virtual destructor. See [C++ Core Guidelines C.35](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c35-a-base-class-destructor-should-be-either-public-and-virtual-or-protected-and-nonvirtual). +The type '*symbol*' with a virtual function needs either public virtual or protected non-virtual destructor. See [C++ Core Guidelines C.35](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rc-dtor-virtual). [C26443 NO_EXPLICIT_DTOR_OVERRIDE](c26443.md)\ Overriding destructor should not use explicit 'override' or 'virtual' specifiers. See [C.128: Virtual functions should specify exactly one of virtual, override, or final](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rh-override). @@ -140,24 +140,24 @@ Overriding destructor should not use explicit 'override' or 'virtual' specifiers ## STYLE Group [C26438 NO_GOTO](C26438.md)\ -Avoid `goto`. See [C++ Core Guidelines ES.76](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es76-avoid-goto). +Avoid `goto`. See [C++ Core Guidelines ES.76](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-goto). ## FUNCTION Group [C26439 SPECIAL_NOEXCEPT](C26439.md)\ -This kind of function may not throw. Declare it **`noexcept`**. See [C++ Core Guidelines F.6](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f6-if-your-function-may-not-throw-declare-it-noexcept). +This kind of function may not throw. Declare it **`noexcept`**. See [C++ Core Guidelines F.6](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-noexcept). [C26440 DECLARE_NOEXCEPT](C26440.md)\ -Function '*symbol*' can be declared **`noexcept`**. See [C++ Core Guidelines F.6](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f6-if-your-function-may-not-throw-declare-it-noexcept). +Function '*symbol*' can be declared **`noexcept`**. See [C++ Core Guidelines F.6](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-noexcept). [C26447 DONT_THROW_IN_NOEXCEPT](c26447.md)\ The function is declared **`noexcept`** but calls a function which may throw exceptions. -See [C++ Core Guidelines: F.6: If your function may not throw, declare it noexcept](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#f6-if-your-function-may-not-throw-declare-it-noexcept). +See [C++ Core Guidelines: F.6: If your function may not throw, declare it noexcept](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-noexcept). ## CONCURRENCY Group [C26441 NO_UNNAMED_GUARDS](C26441.md)\ -Guard objects must be named. See [C++ Core Guidelines cp.44](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#cp44-remember-to-name-your-lock_guards-and-unique_locks). +Guard objects must be named. See [C++ Core Guidelines cp.44](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconc-name). ## CONST Group @@ -168,16 +168,16 @@ The reference argument '*argument*' for function '*function*' can be marked as ` The pointer argument '*argument*' for function '*function*' can be marked as a pointer to `const`. See [C++ Core Guidelines con.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-ref). [C26462 USE_CONST_POINTER_FOR_VARIABLE](c26462.md)\ -The value pointed to by '*variable*' is assigned only once, mark it as a pointer to `const`. See [C++ Core Guidelines con.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#con4-use-const-to-define-objects-with-values-that-do-not-change-after-construction). +The value pointed to by '*variable*' is assigned only once, mark it as a pointer to `const`. See [C++ Core Guidelines con.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-const). [C26463 USE_CONST_FOR_ELEMENTS](c26463.md)\ -The elements of array '*array*' are assigned only once, mark elements `const`. See [C++ Core Guidelines con.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#con4-use-const-to-define-objects-with-values-that-do-not-change-after-construction). +The elements of array '*array*' are assigned only once, mark elements `const`. See [C++ Core Guidelines con.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-const). [C26464 USE_CONST_POINTER_FOR_ELEMENTS](c26464.md)\ -The values pointed to by elements of array '*array*' are assigned only once, mark elements as pointer to `const`. See [C++ Core Guidelines con.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#con4-use-const-to-define-objects-with-values-that-do-not-change-after-construction). +The values pointed to by elements of array '*array*' are assigned only once, mark elements as pointer to `const`. See [C++ Core Guidelines con.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-const). [C26496 USE_CONST_FOR_VARIABLE](c26496.md)\ -The variable '*variable*' is assigned only once, mark it as `const`. See [C++ Core Guidelines con.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#con4-use-const-to-define-objects-with-values-that-do-not-change-after-construction). +The variable '*variable*' is assigned only once, mark it as `const`. See [C++ Core Guidelines con.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-const). [C26497 USE_CONSTEXPR_FOR_FUNCTION](c26497.md)\ This function *function* could be marked `constexpr` if compile-time evaluation is desired. See [C++ Core Guidelines F.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-constexpr). @@ -188,7 +188,7 @@ This function call *function* can use `constexpr` if compile-time evaluation is ## TYPE Group [C26437 DONT_SLICE](C26437.md)\ -Do not slice. See [C++ Core Guidelines ES.63](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es63-dont-slice). +Do not slice. See [C++ Core Guidelines ES.63](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-slice). [C26465 NO_CONST_CAST_UNNECESSARY](c26465.md)\ Don't use `const_cast` to cast away `const`. `const_cast` is not required; constness or volatility is not being removed by this conversion. See [C++ Core Guidelines Type.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-constcast). @@ -200,67 +200,67 @@ Don't use `static_cast` downcasts. A cast from a polymorphic type should use dyn Don't use `reinterpret_cast`. A cast from void* can use `static_cast`. See [C++ Core Guidelines Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-reinterpretcast). [C26472 NO_CASTS_FOR_ARITHMETIC_CONVERSION](C26472.md)\ -Don't use a `static_cast` for arithmetic conversions. Use brace initialization, gsl::narrow_cast, or gsl::narrow. See [C++ Core Guidelines Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-reinterpretcast). +Don't use a `static_cast` for arithmetic conversions. Use brace initialization, gsl::narrow_cast, or gsl::narrow. See [C++ Core Guidelines Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-arithmeticcast). [C26473 NO_IDENTITY_CAST](C26473.md)\ -Don't cast between pointer types where the source type and the target type are the same. See [C++ Core Guidelines Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-reinterpretcast). +Don't cast between pointer types where the source type and the target type are the same. See [C++ Core Guidelines Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-identitycast). [C26474 NO_IMPLICIT_CAST](C26474.md)\ -Don't cast between pointer types when the conversion could be implicit. See [C++ Core Guidelines Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-reinterpretcast). +Don't cast between pointer types when the conversion could be implicit. See [C++ Core Guidelines Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-implicitpointercast). [C26475 NO_FUNCTION_STYLE_CASTS](C26475.md)\ -Do not use function style C-casts. See [C++ Core Guidelines ES.49](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es49-if-you-must-use-a-cast-use-a-named-cast). +Do not use function style C-casts. See [C++ Core Guidelines ES.49](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-casts-named). [C26490 NO_REINTERPRET_CAST](c26490.md)\ -Don't use `reinterpret_cast`. See [C++ Core Guidelines Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-type). +Don't use `reinterpret_cast`. See [C++ Core Guidelines Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-reinterpretcast). [C26491 NO_STATIC_DOWNCAST](c26490.md)\ -Don't use `static_cast` downcasts. See [C++ Core Guidelines Type.2](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-type). +Don't use `static_cast` downcasts. See [C++ Core Guidelines Type.2](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-downcast). [C26492 NO_CONST_CAST](c26492.md)\ -Don't use `const_cast` to cast away `const`. See [C++ Core Guidelines Type.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-type). +Don't use `const_cast` to cast away `const`. See [C++ Core Guidelines Type.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-constcast). [C26493 NO_CSTYLE_CAST](c26493.md)\ -Don't use C-style casts. See [C++ Core Guidelines Type.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-type). +Don't use C-style casts. See [C++ Core Guidelines Type.4](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-cstylecast). [C26494 VAR_USE_BEFORE_INIT](c26494.md)\ -Variable '*variable*' is uninitialized. Always initialize an object. See [C++ Core Guidelines Type.5](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-type). +Variable '*variable*' is uninitialized. Always initialize an object. See [C++ Core Guidelines Type.5](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-init). [C26495 MEMBER_UNINIT](c26495.md)\ -Variable '*variable*' is uninitialized. Always initialize a member variable. See [C++ Core Guidelines Type.6](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-type). +Variable '*variable*' is uninitialized. Always initialize a member variable. See [C++ Core Guidelines Type.6](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-memberinit). ## BOUNDS Group [C26446 USE_GSL_AT](c26446.md)\ -Prefer to use `gsl::at()` instead of unchecked subscript operator. See [C++ Core Guidelines: Bounds.4: Don't use standard-library functions and types that are not bounds-checked](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#probounds-bounds-safety-profile). +Prefer to use `gsl::at()` instead of unchecked subscript operator. See [C++ Core Guidelines: Bounds.4: Don't use standard-library functions and types that are not bounds-checked](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-bounds-stdlib). [C26481 NO_POINTER_ARITHMETIC](C26481.md)\ -Don't use pointer arithmetic. Use span instead. See [C++ Core Guidelines Bounds.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-bounds) +Don't use pointer arithmetic. Use span instead. See [C++ Core Guidelines Bounds.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-bounds-arithmetic) [C26482 NO_DYNAMIC_ARRAY_INDEXING](c26482.md)\ -Only index into arrays using constant expressions. See [C++ Core Guidelines Bounds.2](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-bounds) +Only index into arrays using constant expressions. See [C++ Core Guidelines Bounds.2](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-bounds-arrayindex) [C26483 STATIC_INDEX_OUT_OF_RANGE](c26483.md)\ -Value *value* is outside the bounds (0, *bound*) of variable '*variable*'. Only index into arrays using constant expressions that are within bounds of the array. See [C++ Core Guidelines Bounds.2](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-bounds) +Value *value* is outside the bounds (0, *bound*) of variable '*variable*'. Only index into arrays using constant expressions that are within bounds of the array. See [C++ Core Guidelines Bounds.2](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-bounds-arrayindex) [C26485 NO_ARRAY_TO_POINTER_DECAY](C26485.md)\ -Expression '*expr*': No array to pointer decay. See [C++ Core Guidelines Bounds.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-bounds) +Expression '*expr*': No array to pointer decay. See [C++ Core Guidelines Bounds.3](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-bounds-decay) ## GSL Group [C26445 NO_SPAN_REF](c26445.md)\ A reference to `gsl::span` or `std::string_view` may be an indication of a lifetime issue. -See [C++ Core Guidelines GSL.view: Views](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#gslview-views) +See [C++ Core Guidelines GSL.view: Views](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-views) [C26446 USE_GSL_AT](c26446.md)\ -Prefer to use `gsl::at()` instead of unchecked subscript operator. See [C++ Core Guidelines: Bounds.4: Don't use standard-library functions and types that are not bounds-checked](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#probounds-bounds-safety-profile). +Prefer to use `gsl::at()` instead of unchecked subscript operator. See [C++ Core Guidelines: Bounds.4: Don't use standard-library functions and types that are not bounds-checked](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-bounds-stdlib). [C26448 USE_GSL_FINALLY](c26448.md)\ Consider using `gsl::finally` if final action is intended. See [C++ Core Guidelines: GSL.util: Utilities](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-utilities). [C26449 NO_SPAN_FROM_TEMPORARY](c26449.md)\ `gsl::span` or `std::string_view` created from a temporary will be invalid when the temporary is invalidated. See -[C++ Core Guidelines: GSL.view: Views](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#gslview-views). +[C++ Core Guidelines: GSL.view: Views](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#SS-views). ## Deprecated Warnings From 68ef6ad6315e7a5fa8bee80f2a30cf8a7f25d03a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 2 Aug 2025 18:50:45 +0800 Subject: [PATCH 1235/2255] Convert Resource compiler errors and warnings list into a table --- ...e-compiler-errors-rc1000-through-rc4413.md | 152 +++++++++--------- 1 file changed, 79 insertions(+), 73 deletions(-) diff --git a/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md b/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md index bc1f2f17fe6..609527c192b 100644 --- a/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md +++ b/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md @@ -11,85 +11,91 @@ This section is a reference to the errors generated by the resource compiler. Re ## Resource compiler fatal errors -[Resource compiler fatal error RC1002](resource-compiler-fatal-error-rc1002.md) \ -[Resource compiler fatal error RC1004](resource-compiler-fatal-error-rc1004.md) \ -[Resource compiler fatal error RC1009](resource-compiler-fatal-error-rc1009.md) \ -[Resource compiler fatal error RC1011](resource-compiler-fatal-error-rc1011.md) \ -[Resource compiler fatal error RC1015](resource-compiler-fatal-error-rc1015.md) \ -[Resource compiler fatal error RC1017](resource-compiler-fatal-error-rc1017.md) \ -[Resource compiler fatal error RC1018](resource-compiler-fatal-error-rc1018.md) \ -[Resource compiler fatal error RC1019](resource-compiler-fatal-error-rc1019.md) \ -[Resource compiler fatal error RC1020](resource-compiler-fatal-error-rc1020.md) \ -[Resource compiler fatal error RC1021](resource-compiler-fatal-error-rc1021.md) \ -[Resource compiler fatal error RC1022](resource-compiler-fatal-error-rc1022.md) \ -[Resource compiler fatal error RC1047](resource-compiler-fatal-error-rc1047.md) \ -[Resource compiler fatal error RC1052](resource-compiler-fatal-error-rc1052.md) \ -[Resource compiler fatal error RC1067](resource-compiler-fatal-error-rc1067.md) \ -[Resource compiler fatal error RC1101](resource-compiler-fatal-error-rc1101.md) \ -[Resource compiler fatal error RC1102](resource-compiler-fatal-error-rc1102.md) \ -[Resource compiler fatal error RC1105](resource-compiler-fatal-error-rc1105.md) \ -[Resource compiler fatal error RC1109](resource-compiler-fatal-error-rc1109.md) \ -[Resource compiler fatal error RC1116](resource-compiler-fatal-error-rc1116.md) \ -[Resource compiler fatal error RC1120](resource-compiler-fatal-error-rc1120.md) \ -[Resource compiler fatal error RC1121](resource-compiler-fatal-error-rc1121.md) \ -[Resource compiler fatal error RC1203](resource-compiler-fatal-error-rc1203.md) \ -[Resource compiler fatal error RC1205](resource-compiler-fatal-error-rc1205.md) \ -[Resource compiler fatal error RC1208](resource-compiler-fatal-error-rc1208.md) \ -[Resource compiler fatal error RW1004](resource-compiler-fatal-error-rw1004.md) \ -[Resource compiler fatal error RW1009](resource-compiler-fatal-error-rw1009.md) \ -[Resource compiler fatal error RW1016](resource-compiler-fatal-error-rw1016.md) \ -[Resource compiler fatal error RW1022](resource-compiler-fatal-error-rw1022.md) \ -[Resource compiler fatal error RW1023](resource-compiler-fatal-error-rw1023.md) \ -[Resource compiler fatal error RW1025](resource-compiler-fatal-error-rw1025.md) \ -[Resource compiler fatal error RW1030](resource-compiler-fatal-error-rw1030.md) +| Error | Message | +|--|--| +| [Resource compiler fatal error RC1002](resource-compiler-fatal-error-rc1002.md) | out of heap space | +| [Resource compiler fatal error RC1004](resource-compiler-fatal-error-rc1004.md) | unexpected end of file found | +| [Resource compiler fatal error RC1009](resource-compiler-fatal-error-rc1009.md) | compiler limit : macros too deeply nested 'macro' | +| [Resource compiler fatal error RC1011](resource-compiler-fatal-error-rc1011.md) | compiler limit : 'identifier' : macro definition too big | +| [Resource compiler fatal error RC1015](resource-compiler-fatal-error-rc1015.md) | cannot open include file 'filename' | +| [Resource compiler fatal error RC1017](resource-compiler-fatal-error-rc1017.md) | invalid integer constant expression | +| [Resource compiler fatal error RC1018](resource-compiler-fatal-error-rc1018.md) | unexpected '#elif' | +| [Resource compiler fatal error RC1019](resource-compiler-fatal-error-rc1019.md) | unexpected '#else' | +| [Resource compiler fatal error RC1020](resource-compiler-fatal-error-rc1020.md) | unexpected '#endif' | +| [Resource compiler fatal error RC1021](resource-compiler-fatal-error-rc1021.md) | invalid preprocessor command 'string' | +| [Resource compiler fatal error RC1022](resource-compiler-fatal-error-rc1022.md) | expected '#endif' | +| [Resource compiler fatal error RC1047](resource-compiler-fatal-error-rc1047.md) | "too many option options, 'string'" | +| [Resource compiler fatal error RC1052](resource-compiler-fatal-error-rc1052.md) | compiler limit : #if or #ifdef blocks nested too deeply | +| [Resource compiler fatal error RC1067](resource-compiler-fatal-error-rc1067.md) | compiler limit : identifier overflowed internal buffer | +| [Resource compiler fatal error RC1101](resource-compiler-fatal-error-rc1101.md) | no resource binary filename specified | +| [Resource compiler fatal error RC1102](resource-compiler-fatal-error-rc1102.md) | internal error : too many arguments to RCPP | +| [Resource compiler fatal error RC1105](resource-compiler-fatal-error-rc1105.md) | invalid switch, option: too many /d switches | +| [Resource compiler fatal error RC1109](resource-compiler-fatal-error-rc1109.md) | error creating resource-name | +| [Resource compiler fatal error RC1116](resource-compiler-fatal-error-rc1116.md) | RC terminating after preprocessor errors | +| [Resource compiler fatal error RC1120](resource-compiler-fatal-error-rc1120.md) | out of memory, needed number bytes | +| [Resource compiler fatal error RC1121](resource-compiler-fatal-error-rc1121.md) | I/O error reading file | +| [Resource compiler fatal error RC1203](resource-compiler-fatal-error-rc1203.md) | invalid hexadecimal default language ID specified. | +| [Resource compiler fatal error RC1205](resource-compiler-fatal-error-rc1205.md) | invalid code page | +| [Resource compiler fatal error RC1208](resource-compiler-fatal-error-rc1208.md) | input file has .RES extension | +| [Resource compiler fatal error RW1004](resource-compiler-fatal-error-rw1004.md) | Unexpected end of file | +| [Resource compiler fatal error RW1009](resource-compiler-fatal-error-rw1009.md) | Error creating resource-name | +| [Resource compiler fatal error RW1016](resource-compiler-fatal-error-rw1016.md) | RC terminating after preprocessor errors | +| [Resource compiler fatal error RW1022](resource-compiler-fatal-error-rw1022.md) | I/O error writing file | +| [Resource compiler fatal error RW1023](resource-compiler-fatal-error-rw1023.md) | I/O error writing file, drive full | +| [Resource compiler fatal error RW1025](resource-compiler-fatal-error-rw1025.md) | Out of far heap memory | +| [Resource compiler fatal error RW1030](resource-compiler-fatal-error-rw1030.md) | Output Error | ## Resource compiler errors -[Resource compiler error RC2001](resource-compiler-error-rc2001.md) \ -[Resource compiler error RC2007](resource-compiler-error-rc2007.md) \ -[Resource compiler error RC2015](resource-compiler-error-rc2015.md) \ -[Resource compiler error RC2017](resource-compiler-error-rc2017.md) \ -[Resource compiler error RC2101](resource-compiler-error-rc2101.md) \ -[Resource compiler error RC2103](resource-compiler-error-rc2103.md) \ -[Resource compiler error RC2104](resource-compiler-error-rc2104.md) \ -[Resource compiler error RC2107](resource-compiler-error-rc2107.md) \ -[Resource compiler error RC2109](resource-compiler-error-rc2109.md) \ -[Resource compiler error RC2111](resource-compiler-error-rc2111.md) \ -[Resource compiler error RC2112](resource-compiler-error-rc2112.md) \ -[Resource compiler error RC2113](resource-compiler-error-rc2113.md) \ -[Resource compiler error RC2114](resource-compiler-error-rc2114.md) \ -[Resource compiler error RC2116](resource-compiler-error-rc2116.md) \ -[Resource compiler error RC2122](resource-compiler-error-rc2122.md) \ -[Resource compiler error RC2124](resource-compiler-error-rc2124.md) \ -[Resource compiler error RC2127](resource-compiler-error-rc2127.md) \ -[Resource compiler error RC2135](resource-compiler-error-rc2135.md) \ -[Resource compiler error RC2144](resource-compiler-error-rc2144.md) \ -[Resource compiler error RC2147](resource-compiler-error-rc2147.md) \ -[Resource compiler error RC2148](resource-compiler-error-rc2148.md) \ -[Resource compiler error RC2151](resource-compiler-error-rc2151.md) \ -[Resource compiler error RC2152](resource-compiler-error-rc2152.md) \ -[Resource compiler error RC2162](resource-compiler-error-rc2162.md) \ -[Resource compiler error RC2163](resource-compiler-error-rc2163.md) \ -[Resource compiler error RC2164](resource-compiler-error-rc2164.md) \ -[Resource compiler error RC2165](resource-compiler-error-rc2165.md) \ -[Resource compiler error RC2167](resource-compiler-error-rc2167.md) \ -[Resource compiler error RC2169](resource-compiler-error-rc2169.md) \ -[Resource compiler error RC2170](resource-compiler-error-rc2170.md) \ -[Resource compiler error RC2171](resource-compiler-error-rc2171.md) \ -[Resource compiler error RC2175](resource-compiler-error-rc2175.md) \ -[Resource compiler error RW2001](resource-compiler-error-rw2001.md) \ -[Resource compiler error RW2002](resource-compiler-error-rw2002.md) \ -[Resource compiler error RW2003](resource-compiler-error-rw2003.md) +| Error | Message | +|--|--| +| [Resource compiler error RC2001](resource-compiler-error-rc2001.md) | newline in constant | +| [Resource compiler error RC2007](resource-compiler-error-rc2007.md) | #define syntax | +| [Resource compiler error RC2015](resource-compiler-error-rc2015.md) | too many chars in constant | +| [Resource compiler error RC2017](resource-compiler-error-rc2017.md) | illegal escape sequence | +| [Resource compiler error RC2101](resource-compiler-error-rc2101.md) | Invalid directive in preprocessed RC file | +| [Resource compiler error RC2103](resource-compiler-error-rc2103.md) | unexpected end of file in string literal | +| [Resource compiler error RC2104](resource-compiler-error-rc2104.md) | undefined keyword or key name: key | +| [Resource compiler error RC2107](resource-compiler-error-rc2107.md) | expected numeric command value | +| [Resource compiler error RC2109](resource-compiler-error-rc2109.md) | expected numerical dialog constant | +| [Resource compiler error RC2111](resource-compiler-error-rc2111.md) | invalid control type | +| [Resource compiler error RC2112](resource-compiler-error-rc2112.md) | BEGIN expected in dialog | +| [Resource compiler error RC2113](resource-compiler-error-rc2113.md) | END expected in dialog | +| [Resource compiler error RC2114](resource-compiler-error-rc2114.md) | expected control class name | +| [Resource compiler error RC2116](resource-compiler-error-rc2116.md) | expecting number for ID | +| [Resource compiler error RC2122](resource-compiler-error-rc2122.md) | unknown menu subtype | +| [Resource compiler error RC2124](resource-compiler-error-rc2124.md) | empty menus not allowed | +| [Resource compiler error RC2127](resource-compiler-error-rc2127.md) | version WORDs separated by commas expected | +| [Resource compiler error RC2135](resource-compiler-error-rc2135.md) | file not found: filename | +| [Resource compiler error RC2144](resource-compiler-error-rc2144.md) | PRIMARY LANGUAGE ID not a number | +| [Resource compiler error RC2147](resource-compiler-error-rc2147.md) | SUBLANGUAGE ID not a number | +| [Resource compiler error RC2148](resource-compiler-error-rc2148.md) | SUBLANGUAGE ID too large | +| [Resource compiler error RC2151](resource-compiler-error-rc2151.md) | cannot re-use string constants | +| [Resource compiler error RC2152](resource-compiler-error-rc2152.md) | invalid control character | +| [Resource compiler error RC2162](resource-compiler-error-rc2162.md) | expected macro formal parameter | +| [Resource compiler error RC2163](resource-compiler-error-rc2163.md) | accelerator type required [ASCII or VIRTKEY] | +| [Resource compiler error RC2164](resource-compiler-error-rc2164.md) | unexpected value in RCDATA | +| [Resource compiler error RC2165](resource-compiler-error-rc2165.md) | string not found in DLGINCLUDE statement | +| [Resource compiler error RC2167](resource-compiler-error-rc2167.md) | unrecognized VERSIONINFO field; BEGIN or comma expected | +| [Resource compiler error RC2169](resource-compiler-error-rc2169.md) | resource file filename is not in 2.03 format | +| [Resource compiler error RC2170](resource-compiler-error-rc2170.md) | bitmap file filename is not in 3.00 format | +| [Resource compiler error RC2171](resource-compiler-error-rc2171.md) | unknown DIB header format | +| [Resource compiler error RC2175](resource-compiler-error-rc2175.md) | resource file filename is not in 3.00 format | +| [Resource compiler error RW2001](resource-compiler-error-rw2001.md) | Invalid directive in preprocessed RC file | +| [Resource compiler error RW2002](resource-compiler-error-rw2002.md) | Parsing error | +| [Resource compiler error RW2003](resource-compiler-error-rw2003.md) | Generation Error | ## Resource compiler warnings -[Resource compiler warning RC4002](resource-compiler-warning-rc4002.md) \ -[Resource compiler warning RC4005](resource-compiler-warning-rc4005.md) \ -[Resource compiler warning RC4093](resource-compiler-warning-rc4093.md) \ -[Resource compiler warning RC4214](resource-compiler-warning-rc4214.md) \ -[Resource compiler warning RW4001](resource-compiler-warning-rw4001.md) \ -[Resource compiler warning RW4003](resource-compiler-warning-rw4003.md) \ -[Resource compiler warning RW4004](resource-compiler-warning-rw4004.md) +| Warning | Message | +|--|--| +| [Resource compiler warning RC4002](resource-compiler-warning-rc4002.md) | too many actual parameters for macro 'identifier' | +| [Resource compiler warning RC4005](resource-compiler-warning-rc4005.md) | 'identifier' : macro redefinition | +| [Resource compiler warning RC4093](resource-compiler-warning-rc4093.md) | unescaped newline in character constant in inactive code | +| [Resource compiler warning RC4214](resource-compiler-warning-rc4214.md) | Codepage not valid : ignored | +| [Resource compiler warning RW4001](resource-compiler-warning-rw4001.md) | .EXE processing options (/L /M /P /T /K /E /31 or /30) | +| [Resource compiler warning RW4003](resource-compiler-warning-rw4003.md) | SHIFT or CONTROL used without VIRTKEY | +| [Resource compiler warning RW4004](resource-compiler-warning-rw4004.md) | ASCII character not equivalent to virtual key code | ## See also From 960895dd473839a1f1de7559c64bc39b542b4253 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 2 Aug 2025 18:51:59 +0800 Subject: [PATCH 1236/2255] Simplify superfluous relative links in "Resource compiler errors and warnings (RCxxxx, RWxxxx)" --- .../resource-compiler-errors-rc1000-through-rc4413.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md b/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md index 609527c192b..13c91af718c 100644 --- a/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md +++ b/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md @@ -7,7 +7,7 @@ ms.date: "04/17/2019" This section is a reference to the errors generated by the resource compiler. Resource compiler errors and warnings have the form RC*xxxx* or RW*xxxx*, where *xxxx* is a four-digit number. -[!INCLUDE[error-boilerplate](../../error-messages/includes/error-boilerplate.md)] +[!INCLUDE[error-boilerplate](../includes/error-boilerplate.md)] ## Resource compiler fatal errors From f13676e8a1411a0735ad8c6d9c0f8528fec5b85f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 2 Aug 2025 18:53:00 +0800 Subject: [PATCH 1237/2255] Remove double quotes for `ms.date` in "Resource compiler errors and warnings (RCxxxx, RWxxxx)" --- .../resource-compiler-errors-rc1000-through-rc4413.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md b/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md index 13c91af718c..00125ae5b55 100644 --- a/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md +++ b/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md @@ -1,7 +1,7 @@ --- title: "Resource compiler errors and warnings" description: "Learn more about: Resource compiler errors and warnings (RCxxxx, RWxxxx)" -ms.date: "04/17/2019" +ms.date: 04/17/2019 --- # Resource compiler errors and warnings (RCxxxx, RWxxxx) From 1689d282419e22b5515a7b3d88ceca378c3d3def Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 2 Aug 2025 22:28:11 +0800 Subject: [PATCH 1238/2255] Elide single stray parenthesis and comma --- docs/c-runtime-library/reference/modf-modff-modfl.md | 2 +- .../compiler-warnings/compiler-warnings-c4200-through-c4399.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/c-runtime-library/reference/modf-modff-modfl.md b/docs/c-runtime-library/reference/modf-modff-modfl.md index 80f2a849e47..d2231bc0bde 100644 --- a/docs/c-runtime-library/reference/modf-modff-modfl.md +++ b/docs/c-runtime-library/reference/modf-modff-modfl.md @@ -52,7 +52,7 @@ By default, this function's global state is scoped to the application. To change | Routine | Required header | |---|---| -| **`modf`**, **`modff`**, **`modfl`** | C: ``

C++: , `` or `` | +| **`modf`**, **`modff`**, **`modfl`** | C: ``

C++: `` or `` | For more compatibility information, see [Compatibility](../compatibility.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4200-through-c4399.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4200-through-c4399.md index 08698aef3ad..03ae1478d6a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c4200-through-c4399.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4200-through-c4399.md @@ -163,7 +163,7 @@ The articles in this section describe Microsoft C/C++ compiler warning messages |[Compiler warning (level 1) C4383](compiler-warning-level-1-c4383.md)|'*instance_dereference_operator*': the meaning of dereferencing a handle can change, when a user-defined '*instance_dereference_operator*' operator exists; write the operator as a static function to be explicit about the operand| |[Compiler warning (level 1) C4384](compiler-warning-level-1-c4384.md)|`#pragma` '*pragma_name*' should only be used at global scope| |Compiler warning (level 3) C4387|'*alternative*': was considered| -|[Compiler warning (level 4, off) C4388](./c4388.md))|'*expression*': signed/unsigned mismatch| +|[Compiler warning (level 4, off) C4388](./c4388.md)|'*expression*': signed/unsigned mismatch| |[Compiler warning (level 4) C4389](compiler-warning-level-4-c4389.md)|'*operator*': signed/unsigned mismatch| |[Compiler warning (level 3) C4390](compiler-warning-level-3-c4390.md)|';': empty controlled statement found; is this the intent?| |[Compiler warning (level 1) C4391](compiler-warning-level-1-c4391.md)|'*function_signature*': incorrect return type for intrinsic function, expected '*type*'| From 1d8f638100b9def9a2c46ef3a5c5165a97c503b7 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 2 Aug 2025 22:29:51 +0800 Subject: [PATCH 1239/2255] Remove double quotes for `ms.date` in `modf` reference --- docs/c-runtime-library/reference/modf-modff-modfl.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/c-runtime-library/reference/modf-modff-modfl.md b/docs/c-runtime-library/reference/modf-modff-modfl.md index d2231bc0bde..8b55826f947 100644 --- a/docs/c-runtime-library/reference/modf-modff-modfl.md +++ b/docs/c-runtime-library/reference/modf-modff-modfl.md @@ -1,7 +1,7 @@ --- title: "modf, modff, modfl" description: "API reference for modf, modff, and modfl; which split a floating-point value into fractional and integer parts." -ms.date: "1/15/2021" +ms.date: 1/15/2021 api_name: ["modff", "modf", "modfl", "_o_modf", "_o_modff"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"] api_type: ["DLLExport"] From 486cd528651ecdeb04eb6b2fe2712867f5ea97fe Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 2 Aug 2025 22:58:15 +0800 Subject: [PATCH 1240/2255] Add blockquotes for error messages in range [C2611, C2650] --- docs/error-messages/compiler-errors-2/compiler-error-c2611.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2612.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2613.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2614.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2616.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2617.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2619.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2624.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2626.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2627.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2628.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2630.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2632.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2633.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2634.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2635.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2636.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2637.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2638.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2645.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2646.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2647.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2648.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2649.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2650.md | 2 +- 25 files changed, 25 insertions(+), 25 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2611.md b/docs/error-messages/compiler-errors-2/compiler-error-c2611.md index 46d020f2d8d..0deaea6f4cd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2611.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2611.md @@ -8,7 +8,7 @@ ms.assetid: 3f2d5253-f24f-4724-83d0-6b2aa6a4e551 --- # Compiler Error C2611 -'token' : illegal following '~' (expected identifier) +> 'token' : illegal following '~' (expected identifier) The token is not an identifier. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2612.md b/docs/error-messages/compiler-errors-2/compiler-error-c2612.md index 58b1d0ff3d6..d67b250202a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2612.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2612.md @@ -8,7 +8,7 @@ ms.assetid: 6faacfd6-4455-41a2-808e-0f6799f84d6d --- # Compiler Error C2612 -trailing 'char' illegal in base/member initializer list +> trailing 'char' illegal in base/member initializer list A character appears after the last base or member in an initializer list. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2613.md b/docs/error-messages/compiler-errors-2/compiler-error-c2613.md index 547668b933c..d546d99c122 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2613.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2613.md @@ -8,6 +8,6 @@ ms.assetid: d8fa7b32-08cb-4bb4-96e7-c04dded0e917 --- # Compiler Error C2613 -trailing ',' illegal in base class list +> trailing ',' illegal in base class list A comma appears after the last base in a base class list. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2614.md b/docs/error-messages/compiler-errors-2/compiler-error-c2614.md index c8ef3814a7c..2eb8eb6e5c7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2614.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2614.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2614"] --- # Compiler Error C2614 -'class1' : illegal member initialization: 'class2' is not a base or member +> 'class1' : illegal member initialization: 'class2' is not a base or member Only member or base classes can appear in the initialization list for a class or structure. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2616.md b/docs/error-messages/compiler-errors-2/compiler-error-c2616.md index 77c845af313..bc3d1d8c37c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2616.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2616.md @@ -8,7 +8,7 @@ ms.assetid: 8d0c02d6-a0b0-4135-b10f-438d67da68c6 --- # Compiler Error C2616 -'conversion' : cannot implicitly convert a non-lvalue 'type1' to a 'type2' that is not const +> 'conversion' : cannot implicitly convert a non-lvalue 'type1' to a 'type2' that is not const A reference cannot be initialized from a non-lvalue. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2617.md b/docs/error-messages/compiler-errors-2/compiler-error-c2617.md index 1cd6a242ae3..03a2b2d98fb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2617.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2617.md @@ -8,7 +8,7 @@ ms.assetid: d6a435d2-7d95-4dbf-ad4a-abe4744f63e8 --- # Compiler Error C2617 -'function' : inconsistent return statement +> 'function' : inconsistent return statement The specified function does not have a declared return type, and a previous return statement did not supply a value. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2619.md b/docs/error-messages/compiler-errors-2/compiler-error-c2619.md index 0b31549ce06..e960f75850a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2619.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2619.md @@ -8,7 +8,7 @@ ms.assetid: c826f8ab-d66a-4b79-a0b2-93b0af8c41ac --- # Compiler Error C2619 -'identifier': a static data member is not allowed in an anonymous struct or union +> 'identifier': a static data member is not allowed in an anonymous struct or union A member of an anonymous struct or union is declared **`static`**. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2624.md b/docs/error-messages/compiler-errors-2/compiler-error-c2624.md index 7532dae0b40..1113c2e9d8c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2624.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2624.md @@ -8,7 +8,7 @@ ms.assetid: 32f2ec15-a7cd-4049-a64b-131746d3152b --- # Compiler Error C2624 -local classes cannot be used to declare 'extern' variables +> local classes cannot be used to declare 'extern' variables A local class or structure cannot be used to declare **`extern`** variables. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2626.md b/docs/error-messages/compiler-errors-2/compiler-error-c2626.md index 3ee3d112c02..d53a0a6826a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2626.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2626.md @@ -8,7 +8,7 @@ ms.assetid: 4c283ad0-251b-4571-bc18-468b9836746f --- # Compiler Error C2626 -'identifier': a private or protected data member is not allowed in an anonymous struct or union +> 'identifier': a private or protected data member is not allowed in an anonymous struct or union A member of an anonymous struct or union must have public access. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2627.md b/docs/error-messages/compiler-errors-2/compiler-error-c2627.md index f0cd09ab0b8..7ecf3bf338d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2627.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2627.md @@ -8,7 +8,7 @@ ms.assetid: 7fc6c5ac-c7c9-4f0b-ad52-f52252526458 --- # Compiler Error C2627 -'function' : member function not allowed in anonymous union +> 'function' : member function not allowed in anonymous union An [anonymous union](../../cpp/unions.md#anonymous_unions) cannot have member functions. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2628.md b/docs/error-messages/compiler-errors-2/compiler-error-c2628.md index 561bc2aa568..15f18b98e2a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2628.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2628.md @@ -8,7 +8,7 @@ ms.assetid: 19a25e77-d5be-4107-88d5-0745b6281f98 --- # Compiler Error C2628 -'type1' followed by 'type2' is illegal (did you forget a ';'?) +> 'type1' followed by 'type2' is illegal (did you forget a ';'?) A semicolon may be missing. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2630.md b/docs/error-messages/compiler-errors-2/compiler-error-c2630.md index 205a06a4753..a95da76b5ef 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2630.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2630.md @@ -8,7 +8,7 @@ ms.assetid: 7a655a9c-bab4-495b-97a3-a3f34cf5369a --- # Compiler Error C2630 -'symbol' found in what should be a comma-separated list +> 'symbol' found in what should be a comma-separated list The symbol appears in a context that requires a comma. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2632.md b/docs/error-messages/compiler-errors-2/compiler-error-c2632.md index 2471e652250..4755b981a9c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2632.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2632.md @@ -8,7 +8,7 @@ ms.assetid: b15a6b1b-42d2-4e1b-8660-e6bfde61052d --- # Compiler Error C2632 -'type1' followed by 'type2' is illegal +> 'type1' followed by 'type2' is illegal This error can be caused if there is missing code between two type specifiers. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2633.md b/docs/error-messages/compiler-errors-2/compiler-error-c2633.md index db695cecb70..bba90c22e3a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2633.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2633.md @@ -8,7 +8,7 @@ ms.assetid: a7aceb65-4255-42d6-a8fb-e3cb6c4d2270 --- # Compiler Error C2633 -'identifier' : 'inline' is the only legal storage class for constructors +> 'identifier' : 'inline' is the only legal storage class for constructors A constructor is declared as a storage class other than inline. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2634.md b/docs/error-messages/compiler-errors-2/compiler-error-c2634.md index 721415f346f..c9f47a321a3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2634.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2634.md @@ -8,7 +8,7 @@ ms.assetid: 58c8f2db-ac95-4a81-9355-ef3cfb0ba7b3 --- # Compiler Error C2634 -'&class::member' : pointer to reference member is illegal +> '&class::member' : pointer to reference member is illegal A pointer to a reference member is declared. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2635.md b/docs/error-messages/compiler-errors-2/compiler-error-c2635.md index eb9ed290c46..b068a4f4c31 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2635.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2635.md @@ -8,7 +8,7 @@ ms.assetid: 9deca2a8-2d61-42eb-9783-6578132ee3fb --- # Compiler Error C2635 -cannot convert an 'identifier1*' to an 'identifier2\*'; conversion from a virtual base class is implied +> cannot convert an 'identifier1*' to an 'identifier2\*'; conversion from a virtual base class is implied The conversion requires a cast from a **`virtual`** base class to a derived class, which is not allowed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2636.md b/docs/error-messages/compiler-errors-2/compiler-error-c2636.md index b60fb195320..7651ce5ab5f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2636.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2636.md @@ -8,7 +8,7 @@ ms.assetid: 379873ec-8d05-49f8-adf1-b067bc07bdb8 --- # Compiler Error C2636 -'identifier' : pointer to reference member is illegal +> 'identifier' : pointer to reference member is illegal A pointer to a reference member was declared. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2637.md b/docs/error-messages/compiler-errors-2/compiler-error-c2637.md index 40cb31b6061..5f2471fe8c4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2637.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2637.md @@ -8,7 +8,7 @@ ms.assetid: 58d94447-eb96-4d8f-a690-dd78d322462e --- # Compiler Error C2637 -'identifier' : cannot modify pointers to data members +> 'identifier' : cannot modify pointers to data members A pointer to a data member cannot have a calling convention. To resolve, either remove the calling convention or declare a pointer to member function. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2638.md b/docs/error-messages/compiler-errors-2/compiler-error-c2638.md index 0f19715ed7f..57f14f247d7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2638.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2638.md @@ -8,7 +8,7 @@ ms.assetid: 9d4275e8-406d-455e-afee-3a37799230e0 --- # Compiler Error C2638 -'identifier' : __based modifier illegal on pointer to member +> 'identifier' : __based modifier illegal on pointer to member The **`__based`** modifier cannot be used for pointers to members. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2645.md b/docs/error-messages/compiler-errors-2/compiler-error-c2645.md index 10f903aa458..a8abcf9f559 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2645.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2645.md @@ -8,7 +8,7 @@ ms.assetid: 6609c2fa-c3b2-4a6b-8e8d-58fb52f67175 --- # Compiler Error C2645 -no qualified name for pointer to member (found ':: *') +> no qualified name for pointer to member (found ':: *') The declaration of a pointer to a member does not specify a class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2646.md b/docs/error-messages/compiler-errors-2/compiler-error-c2646.md index 733efb98bc5..9818bbf20c6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2646.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2646.md @@ -8,7 +8,7 @@ ms.assetid: 92ff1f02-5eaf-40a5-8b7a-a682f149e967 --- # Compiler Error C2646 -an anonymous struct or union at global or namespace scope must be declared static +> an anonymous struct or union at global or namespace scope must be declared static An anonymous struct or union has global or namespace scope but is not declared **`static`**. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2647.md b/docs/error-messages/compiler-errors-2/compiler-error-c2647.md index 736eee85d9d..0a280750906 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2647.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2647.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2647"] --- # Compiler Error C2647 -'operator': cannot dereference a 'type1' on a 'type2' +> 'operator': cannot dereference a 'type1' on a 'type2' The left operand of a pointer-to-member operator (`->*` or `.*`) cannot be implicitly converted to a type related to the right operator. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2648.md b/docs/error-messages/compiler-errors-2/compiler-error-c2648.md index ef44b945847..fd458d6b6e6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2648.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2648.md @@ -8,7 +8,7 @@ ms.assetid: ce338337-9154-4f85-bb61-b05fdbfad75d --- # Compiler Error C2648 -'identifier' : use of member as default parameter requires static member +> 'identifier' : use of member as default parameter requires static member A non-static member is used as a default parameter. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2649.md b/docs/error-messages/compiler-errors-2/compiler-error-c2649.md index fb6e19c4f93..03146b79aba 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2649.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2649.md @@ -8,6 +8,6 @@ ms.assetid: 09e78f08-9b74-41e7-a76f-66bc190ba0d2 --- # Compiler Error C2649 -'identifier' : is not a 'class-key' +> 'identifier' : is not a 'class-key' A class, structure, or union declaration uses an incorrect tag. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2650.md b/docs/error-messages/compiler-errors-2/compiler-error-c2650.md index 005db3ee7ac..84b58237e26 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2650.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2650.md @@ -8,7 +8,7 @@ ms.assetid: 49a8ac6e-aa6d-4616-917c-a3cfcdbad5a4 --- # Compiler Error C2650 -'operator' : cannot be a virtual function +> 'operator' : cannot be a virtual function A **`new`** or **`delete`** operator is declared **`virtual`**. These operators are **`static`** member functions and cannot be **`virtual`**. From 521ef6366477356a55761921dd8a79ed9926c7f5 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 2 Aug 2025 23:04:04 +0800 Subject: [PATCH 1241/2255] Add "Remarks" and "Example" headings for error references in range [C2611, C2650] --- docs/error-messages/compiler-errors-2/compiler-error-c2611.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2612.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2613.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2614.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2616.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2617.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2619.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2624.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2626.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2627.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2628.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2630.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2632.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2633.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2634.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2635.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2636.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2637.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2638.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2640.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2645.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2646.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2647.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2648.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2649.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2650.md | 2 ++ 26 files changed, 94 insertions(+) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2611.md b/docs/error-messages/compiler-errors-2/compiler-error-c2611.md index 0deaea6f4cd..05c79b9ec02 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2611.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2611.md @@ -10,8 +10,12 @@ ms.assetid: 3f2d5253-f24f-4724-83d0-6b2aa6a4e551 > 'token' : illegal following '~' (expected identifier) +## Remarks + The token is not an identifier. +## Example + The following sample generates C2611: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2612.md b/docs/error-messages/compiler-errors-2/compiler-error-c2612.md index d67b250202a..d95d86f0bc6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2612.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2612.md @@ -10,8 +10,12 @@ ms.assetid: 6faacfd6-4455-41a2-808e-0f6799f84d6d > trailing 'char' illegal in base/member initializer list +## Remarks + A character appears after the last base or member in an initializer list. +## Example + The following sample generates C2612: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2613.md b/docs/error-messages/compiler-errors-2/compiler-error-c2613.md index d546d99c122..b84ca9890d4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2613.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2613.md @@ -10,4 +10,6 @@ ms.assetid: d8fa7b32-08cb-4bb4-96e7-c04dded0e917 > trailing ',' illegal in base class list +## Remarks + A comma appears after the last base in a base class list. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2614.md b/docs/error-messages/compiler-errors-2/compiler-error-c2614.md index 2eb8eb6e5c7..c6b7a942fb8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2614.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2614.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C2614"] > 'class1' : illegal member initialization: 'class2' is not a base or member +## Remarks + Only member or base classes can appear in the initialization list for a class or structure. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2616.md b/docs/error-messages/compiler-errors-2/compiler-error-c2616.md index bc3d1d8c37c..0ff1abe3246 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2616.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2616.md @@ -10,6 +10,8 @@ ms.assetid: 8d0c02d6-a0b0-4135-b10f-438d67da68c6 > 'conversion' : cannot implicitly convert a non-lvalue 'type1' to a 'type2' that is not const +## Remarks + A reference cannot be initialized from a non-lvalue. This is an error under ANSI compatibility ([/Za](../../build/reference/za-ze-disable-language-extensions.md)) and a warning under Microsoft extensions (**/Ze**). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2617.md b/docs/error-messages/compiler-errors-2/compiler-error-c2617.md index 03a2b2d98fb..df95688fa09 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2617.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2617.md @@ -10,8 +10,12 @@ ms.assetid: d6a435d2-7d95-4dbf-ad4a-abe4744f63e8 > 'function' : inconsistent return statement +## Remarks + The specified function does not have a declared return type, and a previous return statement did not supply a value. +## Example + The following sample generates C2617: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2619.md b/docs/error-messages/compiler-errors-2/compiler-error-c2619.md index e960f75850a..6472e918f34 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2619.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2619.md @@ -10,8 +10,12 @@ ms.assetid: c826f8ab-d66a-4b79-a0b2-93b0af8c41ac > 'identifier': a static data member is not allowed in an anonymous struct or union +## Remarks + A member of an anonymous struct or union is declared **`static`**. +## Example + The following sample generates C2619, and demonstrates how to fix it by removing the static keyword. ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2624.md b/docs/error-messages/compiler-errors-2/compiler-error-c2624.md index 1113c2e9d8c..cf936497435 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2624.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2624.md @@ -10,8 +10,12 @@ ms.assetid: 32f2ec15-a7cd-4049-a64b-131746d3152b > local classes cannot be used to declare 'extern' variables +## Remarks + A local class or structure cannot be used to declare **`extern`** variables. +## Example + The following sample generates C2624: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2626.md b/docs/error-messages/compiler-errors-2/compiler-error-c2626.md index d53a0a6826a..e96529f6530 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2626.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2626.md @@ -10,8 +10,12 @@ ms.assetid: 4c283ad0-251b-4571-bc18-468b9836746f > 'identifier': a private or protected data member is not allowed in an anonymous struct or union +## Remarks + A member of an anonymous struct or union must have public access. +## Example + The following sample generates C2626: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2627.md b/docs/error-messages/compiler-errors-2/compiler-error-c2627.md index 7ecf3bf338d..eb196ed24b3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2627.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2627.md @@ -10,8 +10,12 @@ ms.assetid: 7fc6c5ac-c7c9-4f0b-ad52-f52252526458 > 'function' : member function not allowed in anonymous union +## Remarks + An [anonymous union](../../cpp/unions.md#anonymous_unions) cannot have member functions. +## Example + The following sample generates C2627: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2628.md b/docs/error-messages/compiler-errors-2/compiler-error-c2628.md index 15f18b98e2a..42708fe4f3f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2628.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2628.md @@ -10,8 +10,12 @@ ms.assetid: 19a25e77-d5be-4107-88d5-0745b6281f98 > 'type1' followed by 'type2' is illegal (did you forget a ';'?) +## Remarks + A semicolon may be missing. +## Example + The following sample generates C2628: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2630.md b/docs/error-messages/compiler-errors-2/compiler-error-c2630.md index a95da76b5ef..90163a679bb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2630.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2630.md @@ -10,8 +10,12 @@ ms.assetid: 7a655a9c-bab4-495b-97a3-a3f34cf5369a > 'symbol' found in what should be a comma-separated list +## Remarks + The symbol appears in a context that requires a comma. +## Example + The following sample generates C2630: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2632.md b/docs/error-messages/compiler-errors-2/compiler-error-c2632.md index 4755b981a9c..024f492d3af 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2632.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2632.md @@ -10,8 +10,12 @@ ms.assetid: b15a6b1b-42d2-4e1b-8660-e6bfde61052d > 'type1' followed by 'type2' is illegal +## Remarks + This error can be caused if there is missing code between two type specifiers. +## Examples + The following sample generates C2632: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2633.md b/docs/error-messages/compiler-errors-2/compiler-error-c2633.md index bba90c22e3a..6a5aeff9867 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2633.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2633.md @@ -10,8 +10,12 @@ ms.assetid: a7aceb65-4255-42d6-a8fb-e3cb6c4d2270 > 'identifier' : 'inline' is the only legal storage class for constructors +## Remarks + A constructor is declared as a storage class other than inline. +## Example + The following sample generates C2633: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2634.md b/docs/error-messages/compiler-errors-2/compiler-error-c2634.md index c9f47a321a3..9d66109703d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2634.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2634.md @@ -10,8 +10,12 @@ ms.assetid: 58c8f2db-ac95-4a81-9355-ef3cfb0ba7b3 > '&class::member' : pointer to reference member is illegal +## Remarks + A pointer to a reference member is declared. +## Example + The following sample generates C2634: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2635.md b/docs/error-messages/compiler-errors-2/compiler-error-c2635.md index b068a4f4c31..9b2af33b729 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2635.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2635.md @@ -10,8 +10,12 @@ ms.assetid: 9deca2a8-2d61-42eb-9783-6578132ee3fb > cannot convert an 'identifier1*' to an 'identifier2\*'; conversion from a virtual base class is implied +## Remarks + The conversion requires a cast from a **`virtual`** base class to a derived class, which is not allowed. +## Example + The following sample generates C2635: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2636.md b/docs/error-messages/compiler-errors-2/compiler-error-c2636.md index 7651ce5ab5f..407f4937ac9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2636.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2636.md @@ -10,8 +10,12 @@ ms.assetid: 379873ec-8d05-49f8-adf1-b067bc07bdb8 > 'identifier' : pointer to reference member is illegal +## Remarks + A pointer to a reference member was declared. +## Example + The following sample generates C2636: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2637.md b/docs/error-messages/compiler-errors-2/compiler-error-c2637.md index 5f2471fe8c4..ee59caa8d35 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2637.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2637.md @@ -10,8 +10,12 @@ ms.assetid: 58d94447-eb96-4d8f-a690-dd78d322462e > 'identifier' : cannot modify pointers to data members +## Remarks + A pointer to a data member cannot have a calling convention. To resolve, either remove the calling convention or declare a pointer to member function. +## Example + The following sample generates C2637: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2638.md b/docs/error-messages/compiler-errors-2/compiler-error-c2638.md index 57f14f247d7..46b1a718cc2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2638.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2638.md @@ -10,8 +10,12 @@ ms.assetid: 9d4275e8-406d-455e-afee-3a37799230e0 > 'identifier' : __based modifier illegal on pointer to member +## Remarks + The **`__based`** modifier cannot be used for pointers to members. +## Example + The following sample generates C2638: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2640.md b/docs/error-messages/compiler-errors-2/compiler-error-c2640.md index 5014adb77d0..62ffa8cfadf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2640.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2640.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C2640"] > 'abstract declarator': __based modifier illegal on reference +## Remarks + The [**`__based`**](../../cpp/based-pointers-cpp.md) modifier can be used on pointers only. +## Example + The following sample generates C2640: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2645.md b/docs/error-messages/compiler-errors-2/compiler-error-c2645.md index a8abcf9f559..fe35f9e0314 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2645.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2645.md @@ -10,8 +10,12 @@ ms.assetid: 6609c2fa-c3b2-4a6b-8e8d-58fb52f67175 > no qualified name for pointer to member (found ':: *') +## Remarks + The declaration of a pointer to a member does not specify a class. +## Example + The following sample generates C2645: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2646.md b/docs/error-messages/compiler-errors-2/compiler-error-c2646.md index 9818bbf20c6..adae00f00f8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2646.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2646.md @@ -10,8 +10,12 @@ ms.assetid: 92ff1f02-5eaf-40a5-8b7a-a682f149e967 > an anonymous struct or union at global or namespace scope must be declared static +## Remarks + An anonymous struct or union has global or namespace scope but is not declared **`static`**. +## Example + The following sample generates C2646 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2647.md b/docs/error-messages/compiler-errors-2/compiler-error-c2647.md index 0a280750906..dcb2c717481 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2647.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2647.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C2647"] > 'operator': cannot dereference a 'type1' on a 'type2' +## Remarks + The left operand of a pointer-to-member operator (`->*` or `.*`) cannot be implicitly converted to a type related to the right operator. +## Example + The following sample generates C2647: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2648.md b/docs/error-messages/compiler-errors-2/compiler-error-c2648.md index fd458d6b6e6..f1a863569bb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2648.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2648.md @@ -10,8 +10,12 @@ ms.assetid: ce338337-9154-4f85-bb61-b05fdbfad75d > 'identifier' : use of member as default parameter requires static member +## Remarks + A non-static member is used as a default parameter. +## Example + The following sample generates C2648: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2649.md b/docs/error-messages/compiler-errors-2/compiler-error-c2649.md index 03146b79aba..111794a5c86 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2649.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2649.md @@ -10,4 +10,6 @@ ms.assetid: 09e78f08-9b74-41e7-a76f-66bc190ba0d2 > 'identifier' : is not a 'class-key' +## Remarks + A class, structure, or union declaration uses an incorrect tag. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2650.md b/docs/error-messages/compiler-errors-2/compiler-error-c2650.md index 84b58237e26..a4db0d720e8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2650.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2650.md @@ -10,6 +10,8 @@ ms.assetid: 49a8ac6e-aa6d-4616-917c-a3cfcdbad5a4 > 'operator' : cannot be a virtual function +## Remarks + A **`new`** or **`delete`** operator is declared **`virtual`**. These operators are **`static`** member functions and cannot be **`virtual`**. ## Example From 6daf2d4745b0c525d52715e297d26cd07dec206c Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 2 Aug 2025 23:05:35 +0800 Subject: [PATCH 1242/2255] Replace term "sample" with "example" for error references in range [C2611, C2650] --- docs/error-messages/compiler-errors-2/compiler-error-c2611.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2612.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2614.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2617.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2619.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2624.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2626.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2627.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2628.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2630.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2632.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c2633.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2634.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2635.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2636.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2637.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2638.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2640.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2645.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2646.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2647.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2648.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2650.md | 2 +- 23 files changed, 24 insertions(+), 24 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2611.md b/docs/error-messages/compiler-errors-2/compiler-error-c2611.md index 05c79b9ec02..252b952dbc3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2611.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2611.md @@ -16,7 +16,7 @@ The token is not an identifier. ## Example -The following sample generates C2611: +The following example generates C2611: ```cpp // C2611.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2612.md b/docs/error-messages/compiler-errors-2/compiler-error-c2612.md index d95d86f0bc6..3844bdef9f8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2612.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2612.md @@ -16,7 +16,7 @@ A character appears after the last base or member in an initializer list. ## Example -The following sample generates C2612: +The following example generates C2612: ```cpp // C2612.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2614.md b/docs/error-messages/compiler-errors-2/compiler-error-c2614.md index c6b7a942fb8..4764e9574fa 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2614.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2614.md @@ -15,7 +15,7 @@ Only member or base classes can appear in the initialization list for a class or ## Example -The following sample generates C2614. +The following example generates C2614. ```cpp // C2614.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2617.md b/docs/error-messages/compiler-errors-2/compiler-error-c2617.md index df95688fa09..e6443b4bbf2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2617.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2617.md @@ -16,7 +16,7 @@ The specified function does not have a declared return type, and a previous retu ## Example -The following sample generates C2617: +The following example generates C2617: ```cpp // C2617.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2619.md b/docs/error-messages/compiler-errors-2/compiler-error-c2619.md index 6472e918f34..ecc8c1459bd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2619.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2619.md @@ -16,7 +16,7 @@ A member of an anonymous struct or union is declared **`static`**. ## Example -The following sample generates C2619, and demonstrates how to fix it by removing the static keyword. +The following example generates C2619, and demonstrates how to fix it by removing the static keyword. ```cpp // C2619.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2624.md b/docs/error-messages/compiler-errors-2/compiler-error-c2624.md index cf936497435..1132775251b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2624.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2624.md @@ -16,7 +16,7 @@ A local class or structure cannot be used to declare **`extern`** variables. ## Example -The following sample generates C2624: +The following example generates C2624: ```cpp // C2624.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2626.md b/docs/error-messages/compiler-errors-2/compiler-error-c2626.md index e96529f6530..47591e2d927 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2626.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2626.md @@ -16,7 +16,7 @@ A member of an anonymous struct or union must have public access. ## Example -The following sample generates C2626: +The following example generates C2626: ```cpp // C2626.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2627.md b/docs/error-messages/compiler-errors-2/compiler-error-c2627.md index eb196ed24b3..4fb3780a0e5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2627.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2627.md @@ -16,7 +16,7 @@ An [anonymous union](../../cpp/unions.md#anonymous_unions) cannot have member fu ## Example -The following sample generates C2627: +The following example generates C2627: ```cpp // C2627.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2628.md b/docs/error-messages/compiler-errors-2/compiler-error-c2628.md index 42708fe4f3f..0e8cd74b28d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2628.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2628.md @@ -16,7 +16,7 @@ A semicolon may be missing. ## Example -The following sample generates C2628: +The following example generates C2628: ```cpp // C2628.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2630.md b/docs/error-messages/compiler-errors-2/compiler-error-c2630.md index 90163a679bb..5ac8e6c5fd0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2630.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2630.md @@ -16,7 +16,7 @@ The symbol appears in a context that requires a comma. ## Example -The following sample generates C2630: +The following example generates C2630: ```cpp // C2630.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2632.md b/docs/error-messages/compiler-errors-2/compiler-error-c2632.md index 024f492d3af..13110e37f9c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2632.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2632.md @@ -16,7 +16,7 @@ This error can be caused if there is missing code between two type specifiers. ## Examples -The following sample generates C2632: +The following example generates C2632: ```cpp // C2632.cpp @@ -25,7 +25,7 @@ int float i; // C2632 This error can also be generated as a result of compiler conformance work that was done for Visual Studio .NET 2003. **`bool`** is now a proper type. In previous versions, **`bool`** was a typedef, and you could create identifiers with that name. -The following sample generates C2632: +The following example generates C2632: ```cpp // C2632_2.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2633.md b/docs/error-messages/compiler-errors-2/compiler-error-c2633.md index 6a5aeff9867..081620141fb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2633.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2633.md @@ -16,7 +16,7 @@ A constructor is declared as a storage class other than inline. ## Example -The following sample generates C2633: +The following example generates C2633: ```cpp // C2633.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2634.md b/docs/error-messages/compiler-errors-2/compiler-error-c2634.md index 9d66109703d..7cac275e9bb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2634.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2634.md @@ -16,7 +16,7 @@ A pointer to a reference member is declared. ## Example -The following sample generates C2634: +The following example generates C2634: ```cpp // C2634.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2635.md b/docs/error-messages/compiler-errors-2/compiler-error-c2635.md index 9b2af33b729..001ea471fcd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2635.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2635.md @@ -16,7 +16,7 @@ The conversion requires a cast from a **`virtual`** base class to a derived clas ## Example -The following sample generates C2635: +The following example generates C2635: ```cpp // C2635.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2636.md b/docs/error-messages/compiler-errors-2/compiler-error-c2636.md index 407f4937ac9..497585e696e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2636.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2636.md @@ -16,7 +16,7 @@ A pointer to a reference member was declared. ## Example -The following sample generates C2636: +The following example generates C2636: ```cpp // C2636.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2637.md b/docs/error-messages/compiler-errors-2/compiler-error-c2637.md index ee59caa8d35..041cdf4b81b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2637.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2637.md @@ -16,7 +16,7 @@ A pointer to a data member cannot have a calling convention. To resolve, either ## Example -The following sample generates C2637: +The following example generates C2637: ```cpp // C2637.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2638.md b/docs/error-messages/compiler-errors-2/compiler-error-c2638.md index 46b1a718cc2..fc07072c4ea 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2638.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2638.md @@ -16,7 +16,7 @@ The **`__based`** modifier cannot be used for pointers to members. ## Example -The following sample generates C2638: +The following example generates C2638: ```cpp // C2638.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2640.md b/docs/error-messages/compiler-errors-2/compiler-error-c2640.md index 62ffa8cfadf..323f08771cf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2640.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2640.md @@ -15,7 +15,7 @@ The [**`__based`**](../../cpp/based-pointers-cpp.md) modifier can be used on poi ## Example -The following sample generates C2640: +The following example generates C2640: ```cpp // C2640.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2645.md b/docs/error-messages/compiler-errors-2/compiler-error-c2645.md index fe35f9e0314..a9aa00b1ce1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2645.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2645.md @@ -16,7 +16,7 @@ The declaration of a pointer to a member does not specify a class. ## Example -The following sample generates C2645: +The following example generates C2645: ```cpp // C2645.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2646.md b/docs/error-messages/compiler-errors-2/compiler-error-c2646.md index adae00f00f8..3b60060d67e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2646.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2646.md @@ -16,7 +16,7 @@ An anonymous struct or union has global or namespace scope but is not declared * ## Example -The following sample generates C2646 and shows how to fix it: +The following example generates C2646 and shows how to fix it: ```cpp // C2646.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2647.md b/docs/error-messages/compiler-errors-2/compiler-error-c2647.md index dcb2c717481..0a6e5dab39d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2647.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2647.md @@ -15,7 +15,7 @@ The left operand of a pointer-to-member operator (`->*` or `.*`) cannot be impli ## Example -The following sample generates C2647: +The following example generates C2647: ```cpp // C2647.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2648.md b/docs/error-messages/compiler-errors-2/compiler-error-c2648.md index f1a863569bb..6e35d9ed5f7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2648.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2648.md @@ -16,7 +16,7 @@ A non-static member is used as a default parameter. ## Example -The following sample generates C2648: +The following example generates C2648: ```cpp // C2648.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2650.md b/docs/error-messages/compiler-errors-2/compiler-error-c2650.md index a4db0d720e8..bc990e2b3b4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2650.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2650.md @@ -16,7 +16,7 @@ A **`new`** or **`delete`** operator is declared **`virtual`**. These operators ## Example -The following sample generates C2650: +The following example generates C2650: ```cpp // C2650.cpp From 0899844ebd470aaf13dc08e4f9d38c8daf6152e3 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 2 Aug 2025 23:09:23 +0800 Subject: [PATCH 1243/2255] Update metadata for error references in range [C2611, C2650] --- .../error-messages/compiler-errors-2/compiler-error-c2611.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2612.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2613.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2616.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2617.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2619.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2624.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2626.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2627.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2628.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2630.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2632.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2633.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2634.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2635.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2636.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2637.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2638.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2640.md | 2 +- .../error-messages/compiler-errors-2/compiler-error-c2645.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2646.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2648.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2649.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2650.md | 5 ++--- 24 files changed, 47 insertions(+), 70 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2611.md b/docs/error-messages/compiler-errors-2/compiler-error-c2611.md index 252b952dbc3..9c4825ce615 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2611.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2611.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2611" title: "Compiler Error C2611" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2611" +ms.date: 11/04/2016 f1_keywords: ["C2611"] helpviewer_keywords: ["C2611"] -ms.assetid: 3f2d5253-f24f-4724-83d0-6b2aa6a4e551 --- # Compiler Error C2611 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2612.md b/docs/error-messages/compiler-errors-2/compiler-error-c2612.md index 3844bdef9f8..2966afaeb11 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2612.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2612.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2612" title: "Compiler Error C2612" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2612" +ms.date: 11/04/2016 f1_keywords: ["C2612"] helpviewer_keywords: ["C2612"] -ms.assetid: 6faacfd6-4455-41a2-808e-0f6799f84d6d --- # Compiler Error C2612 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2613.md b/docs/error-messages/compiler-errors-2/compiler-error-c2613.md index b84ca9890d4..70ef49410d0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2613.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2613.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2613" title: "Compiler Error C2613" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2613" +ms.date: 11/04/2016 f1_keywords: ["C2613"] helpviewer_keywords: ["C2613"] -ms.assetid: d8fa7b32-08cb-4bb4-96e7-c04dded0e917 --- # Compiler Error C2613 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2616.md b/docs/error-messages/compiler-errors-2/compiler-error-c2616.md index 0ff1abe3246..9da31ed6fe6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2616.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2616.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2616" title: "Compiler Error C2616" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2616" +ms.date: 11/04/2016 f1_keywords: ["C2616"] helpviewer_keywords: ["C2616"] -ms.assetid: 8d0c02d6-a0b0-4135-b10f-438d67da68c6 --- # Compiler Error C2616 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2617.md b/docs/error-messages/compiler-errors-2/compiler-error-c2617.md index e6443b4bbf2..a868e75c05d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2617.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2617.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2617" title: "Compiler Error C2617" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2617" +ms.date: 11/04/2016 f1_keywords: ["C2617"] helpviewer_keywords: ["C2617"] -ms.assetid: d6a435d2-7d95-4dbf-ad4a-abe4744f63e8 --- # Compiler Error C2617 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2619.md b/docs/error-messages/compiler-errors-2/compiler-error-c2619.md index ecc8c1459bd..7defff06cd1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2619.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2619.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2619" title: "Compiler Error C2619" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2619" +ms.date: 11/04/2016 f1_keywords: ["C2619"] helpviewer_keywords: ["C2619"] -ms.assetid: c826f8ab-d66a-4b79-a0b2-93b0af8c41ac --- # Compiler Error C2619 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2624.md b/docs/error-messages/compiler-errors-2/compiler-error-c2624.md index 1132775251b..a1e2ad3153d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2624.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2624.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2624" title: "Compiler Error C2624" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2624" +ms.date: 11/04/2016 f1_keywords: ["C2624"] helpviewer_keywords: ["C2624"] -ms.assetid: 32f2ec15-a7cd-4049-a64b-131746d3152b --- # Compiler Error C2624 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2626.md b/docs/error-messages/compiler-errors-2/compiler-error-c2626.md index 47591e2d927..bc83bd476dc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2626.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2626.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2626" title: "Compiler Error C2626" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2626" +ms.date: 11/04/2016 f1_keywords: ["C2626"] helpviewer_keywords: ["C2626"] -ms.assetid: 4c283ad0-251b-4571-bc18-468b9836746f --- # Compiler Error C2626 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2627.md b/docs/error-messages/compiler-errors-2/compiler-error-c2627.md index 4fb3780a0e5..b35f668333b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2627.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2627.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2627" title: "Compiler Error C2627" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2627" +ms.date: 11/04/2016 f1_keywords: ["C2627"] helpviewer_keywords: ["C2627"] -ms.assetid: 7fc6c5ac-c7c9-4f0b-ad52-f52252526458 --- # Compiler Error C2627 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2628.md b/docs/error-messages/compiler-errors-2/compiler-error-c2628.md index 0e8cd74b28d..e398afc1aa4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2628.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2628.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2628" title: "Compiler Error C2628" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2628" +ms.date: 11/04/2016 f1_keywords: ["C2628"] helpviewer_keywords: ["C2628"] -ms.assetid: 19a25e77-d5be-4107-88d5-0745b6281f98 --- # Compiler Error C2628 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2630.md b/docs/error-messages/compiler-errors-2/compiler-error-c2630.md index 5ac8e6c5fd0..367ec0360cc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2630.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2630.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2630" title: "Compiler Error C2630" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2630" +ms.date: 11/04/2016 f1_keywords: ["C2630"] helpviewer_keywords: ["C2630"] -ms.assetid: 7a655a9c-bab4-495b-97a3-a3f34cf5369a --- # Compiler Error C2630 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2632.md b/docs/error-messages/compiler-errors-2/compiler-error-c2632.md index 13110e37f9c..28b0937c21b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2632.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2632.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2632" title: "Compiler Error C2632" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2632" +ms.date: 11/04/2016 f1_keywords: ["C2632"] helpviewer_keywords: ["C2632"] -ms.assetid: b15a6b1b-42d2-4e1b-8660-e6bfde61052d --- # Compiler Error C2632 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2633.md b/docs/error-messages/compiler-errors-2/compiler-error-c2633.md index 081620141fb..4270773097f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2633.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2633.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2633" title: "Compiler Error C2633" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2633" +ms.date: 11/04/2016 f1_keywords: ["C2633"] helpviewer_keywords: ["C2633"] -ms.assetid: a7aceb65-4255-42d6-a8fb-e3cb6c4d2270 --- # Compiler Error C2633 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2634.md b/docs/error-messages/compiler-errors-2/compiler-error-c2634.md index 7cac275e9bb..234acb5b249 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2634.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2634.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2634" title: "Compiler Error C2634" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2634" +ms.date: 11/04/2016 f1_keywords: ["C2634"] helpviewer_keywords: ["C2634"] -ms.assetid: 58c8f2db-ac95-4a81-9355-ef3cfb0ba7b3 --- # Compiler Error C2634 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2635.md b/docs/error-messages/compiler-errors-2/compiler-error-c2635.md index 001ea471fcd..065efac641f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2635.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2635.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2635" title: "Compiler Error C2635" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2635" +ms.date: 11/04/2016 f1_keywords: ["C2635"] helpviewer_keywords: ["C2635"] -ms.assetid: 9deca2a8-2d61-42eb-9783-6578132ee3fb --- # Compiler Error C2635 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2636.md b/docs/error-messages/compiler-errors-2/compiler-error-c2636.md index 497585e696e..0d37fabe818 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2636.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2636.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2636" title: "Compiler Error C2636" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2636" +ms.date: 11/04/2016 f1_keywords: ["C2636"] helpviewer_keywords: ["C2636"] -ms.assetid: 379873ec-8d05-49f8-adf1-b067bc07bdb8 --- # Compiler Error C2636 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2637.md b/docs/error-messages/compiler-errors-2/compiler-error-c2637.md index 041cdf4b81b..4eda884eb63 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2637.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2637.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2637" title: "Compiler Error C2637" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2637" +ms.date: 11/04/2016 f1_keywords: ["C2637"] helpviewer_keywords: ["C2637"] -ms.assetid: 58d94447-eb96-4d8f-a690-dd78d322462e --- # Compiler Error C2637 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2638.md b/docs/error-messages/compiler-errors-2/compiler-error-c2638.md index fc07072c4ea..bb2c3beed90 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2638.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2638.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2638" title: "Compiler Error C2638" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2638" +ms.date: 11/04/2016 f1_keywords: ["C2638"] helpviewer_keywords: ["C2638"] -ms.assetid: 9d4275e8-406d-455e-afee-3a37799230e0 --- # Compiler Error C2638 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2640.md b/docs/error-messages/compiler-errors-2/compiler-error-c2640.md index 323f08771cf..365c80e4250 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2640.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2640.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C2640" description: "Learn more about: Compiler Error C2640" -ms.date: "03/17/2025" +ms.date: 03/17/2025 f1_keywords: ["C2640"] helpviewer_keywords: ["C2640"] --- diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2645.md b/docs/error-messages/compiler-errors-2/compiler-error-c2645.md index a9aa00b1ce1..51bc814c4a6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2645.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2645.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2645" title: "Compiler Error C2645" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2645" +ms.date: 11/04/2016 f1_keywords: ["C2645"] helpviewer_keywords: ["C2645"] -ms.assetid: 6609c2fa-c3b2-4a6b-8e8d-58fb52f67175 --- # Compiler Error C2645 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2646.md b/docs/error-messages/compiler-errors-2/compiler-error-c2646.md index 3b60060d67e..f6c33292e47 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2646.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2646.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2646" title: "Compiler Error C2646" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2646" +ms.date: 11/04/2016 f1_keywords: ["C2646"] helpviewer_keywords: ["C2646"] -ms.assetid: 92ff1f02-5eaf-40a5-8b7a-a682f149e967 --- # Compiler Error C2646 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2648.md b/docs/error-messages/compiler-errors-2/compiler-error-c2648.md index 6e35d9ed5f7..8ece835b5be 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2648.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2648.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2648" title: "Compiler Error C2648" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2648" +ms.date: 11/04/2016 f1_keywords: ["C2648"] helpviewer_keywords: ["C2648"] -ms.assetid: ce338337-9154-4f85-bb61-b05fdbfad75d --- # Compiler Error C2648 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2649.md b/docs/error-messages/compiler-errors-2/compiler-error-c2649.md index 111794a5c86..5cca3fb8e7a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2649.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2649.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2649" title: "Compiler Error C2649" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2649" +ms.date: 11/04/2016 f1_keywords: ["C2649"] helpviewer_keywords: ["C2649"] -ms.assetid: 09e78f08-9b74-41e7-a76f-66bc190ba0d2 --- # Compiler Error C2649 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2650.md b/docs/error-messages/compiler-errors-2/compiler-error-c2650.md index bc990e2b3b4..dfaf2272cb3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2650.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2650.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2650" title: "Compiler Error C2650" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2650" +ms.date: 11/04/2016 f1_keywords: ["C2650"] helpviewer_keywords: ["C2650"] -ms.assetid: 49a8ac6e-aa6d-4616-917c-a3cfcdbad5a4 --- # Compiler Error C2650 From 4b080d8c3cfc163e9a858112988cc1c52f01ac68 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 3 Aug 2025 18:24:16 +0800 Subject: [PATCH 1244/2255] Add missing `f1_keywords` and `helpviewer_keywords` in "Microsoft C/C++ compiler warnings C5200 through C5399" --- .../compiler-warnings-c5200-through-c5399.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399.md b/docs/error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399.md index 1b66790fb1e..0bebc97caa6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399.md @@ -2,8 +2,8 @@ title: "Microsoft C/C++ compiler (MSVC) compiler warnings C5200 through C5399" description: "Table of Microsoft C/C++ compiler (MSVC) warnings C5200 through C5399." ms.date: 04/19/2024 -f1_keywords: ["C5200", "C5201", "C5202", "C5203", "C5204", "C5205", "C5206", "C5207", "C5209", "C5210", "C5212", "C5213", "C5214", "C5215", "C5216", "C5217", "C5218", "C5219", "C5220", "C5221", "C5222", "C5223", "C5224", "C5225", "C5226", "C5227", "C5228", "C5229", "C5230", "C5231", "C5232", "C5233", "C5234", "C5235", "C5236", "C5237", "C5238", "C5239", "C5241", "C5242", "C5244", "C5245", "C5246", "C5249", "C5250", "C5251", "C5252", "C5253", "C5254", "C5255", "C5256", "C5257", "C5258", "C5259", "C5260", "C5261", "C5263", "C5264", "C5265", "C5268", "C5269", "C5270", "C5271", "C5272", "C5273", "C5274", "C5275", "C5300", "C5303", "C5304", "C5305"] -helpviewer_keywords: ["C5200", "C5201", "C5202", "C5203", "C5204", "C5205", "C5206", "C5207", "C5209", "C5210", "C5212", "C5213", "C5214", "C5215", "C5216", "C5217", "C5218", "C5219", "C5220", "C5221", "C5222", "C5223", "C5224", "C5225", "C5226", "C5227", "C5228", "C5229", "C5230", "C5231", "C5232", "C5233", "C5234", "C5235", "C5236", "C5237", "C5238", "C5239", "C5241", "C5242", "C5244", "C5245", "C5246", "C5249", "C5250", "C5251", "C5252", "C5253", "C5254", "C5255", "C5256", "C5257", "C5258", "C5259", "C5260", "C5261", "C5263", "C5264", "C5265", "C5268", "C5269", "C5270", "C5271", "C5272", "C5273", "C5274", "C5275", "C5300", "C5303", "C5304", "C5305"] +f1_keywords: ["C5200", "C5201", "C5202", "C5203", "C5204", "C5205", "C5206", "C5207", "C5209", "C5210", "C5212", "C5213", "C5214", "C5215", "C5216", "C5217", "C5218", "C5219", "C5220", "C5221", "C5222", "C5223", "C5224", "C5225", "C5226", "C5227", "C5228", "C5229", "C5230", "C5231", "C5232", "C5233", "C5234", "C5235", "C5236", "C5237", "C5238", "C5239", "C5241", "C5242", "C5244", "C5245", "C5246", "C5249", "C5250", "C5251", "C5252", "C5253", "C5254", "C5255", "C5256", "C5257", "C5258", "C5259", "C5260", "C5261", "C5263", "C5264", "C5265", "C5268", "C5269", "C5270", "C5271", "C5272", "C5273", "C5274", "C5275", "C5276", "C5277", "C5278", "C5279", "C5280", "C5281", "C5282", "C5283", "C5284", "C5285", "C5286", "C5287", "C5300", "C5303", "C5304", "C5305", "C5306", "C5307", "C5308", "C5309"] +helpviewer_keywords: ["C5200", "C5201", "C5202", "C5203", "C5204", "C5205", "C5206", "C5207", "C5209", "C5210", "C5212", "C5213", "C5214", "C5215", "C5216", "C5217", "C5218", "C5219", "C5220", "C5221", "C5222", "C5223", "C5224", "C5225", "C5226", "C5227", "C5228", "C5229", "C5230", "C5231", "C5232", "C5233", "C5234", "C5235", "C5236", "C5237", "C5238", "C5239", "C5241", "C5242", "C5244", "C5245", "C5246", "C5249", "C5250", "C5251", "C5252", "C5253", "C5254", "C5255", "C5256", "C5257", "C5258", "C5259", "C5260", "C5261", "C5263", "C5264", "C5265", "C5268", "C5269", "C5270", "C5271", "C5272", "C5273", "C5274", "C5275", "C5276", "C5277", "C5278", "C5279", "C5280", "C5281", "C5282", "C5283", "C5284", "C5285", "C5286", "C5287", "C5300", "C5303", "C5304", "C5305", "C5306", "C5307", "C5308", "C5309"] --- # Microsoft C/C++ compiler warnings C5200 through C5399 From 3a3da870429ff9aa74b0777534555bef271a4123 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 3 Aug 2025 22:31:06 +0800 Subject: [PATCH 1245/2255] Add blockquotes for error messages in range [C2651, C2670] --- docs/error-messages/compiler-errors-2/compiler-error-c2651.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2652.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2654.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2655.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2656.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2657.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2658.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2659.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2660.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2661.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2662.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2663.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2664.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2665.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2666.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2667.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2669.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2670.md | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2651.md b/docs/error-messages/compiler-errors-2/compiler-error-c2651.md index 1c1c8fcddf5..03dc4c56a2c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2651.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2651.md @@ -8,6 +8,6 @@ ms.assetid: c3524a89-47d1-43f6-9e20-2cda15f9ae8a --- # Compiler Error C2651 -'data type' : left of 'operator' must be a class, struct or union +> 'data type' : left of 'operator' must be a class, struct or union To use a template parameter as if it is a class, specialize the class template with a class instead of an integral type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2652.md b/docs/error-messages/compiler-errors-2/compiler-error-c2652.md index 8c816d24a78..352267ec77e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2652.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2652.md @@ -8,7 +8,7 @@ ms.assetid: 6e3d1a90-a989-4088-8afd-dc82f6a2d66f --- # Compiler Error C2652 -'identifier' : illegal copy constructor: first parameter must not be an 'identifier' +> 'identifier' : illegal copy constructor: first parameter must not be an 'identifier' The first parameter in the copy constructor has the same type as the class, structure, or union for which it is defined. The first parameter can be a reference to the type but not the type itself. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2654.md b/docs/error-messages/compiler-errors-2/compiler-error-c2654.md index c1905fbdb7c..af61c405fe8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2654.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2654.md @@ -8,7 +8,7 @@ ms.assetid: ca7de1bd-576b-40bf-96fc-a91984827d20 --- # Compiler Error C2654 -'identifier' : attempt to access member outside a member function +> 'identifier' : attempt to access member outside a member function A member is accessed in a declaration. Member data can be accessed only in member functions. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2655.md b/docs/error-messages/compiler-errors-2/compiler-error-c2655.md index 77dcb0e48d4..901b218fc4b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2655.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2655.md @@ -8,7 +8,7 @@ ms.assetid: beaefa6e-51b3-4df9-9150-960f3fbf40e0 --- # Compiler Error C2655 -'identifier' : definition or redeclaration illegal in current scope +> 'identifier' : definition or redeclaration illegal in current scope An identifier can be redeclared only at global scope. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2656.md b/docs/error-messages/compiler-errors-2/compiler-error-c2656.md index c76d36e6f7b..d001d70f592 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2656.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2656.md @@ -8,7 +8,7 @@ ms.assetid: 1ec91186-0735-4904-859b-59da9af2d426 --- # Compiler Error C2656 -'function' : function not allowed as a bit field +> 'function' : function not allowed as a bit field A function is declared as a member of a bit field. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2657.md b/docs/error-messages/compiler-errors-2/compiler-error-c2657.md index 8cb0fddc1ef..46b73efb557 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2657.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2657.md @@ -8,7 +8,7 @@ ms.assetid: f7cf29a9-684a-4605-9469-ecfee9ba4b03 --- # Compiler Error C2657 -'class::*' found at the start of a statement (did you forget to specify a type?) +> 'class::*' found at the start of a statement (did you forget to specify a type?) The line began with a pointer-to-member identifier. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2658.md b/docs/error-messages/compiler-errors-2/compiler-error-c2658.md index e71e04ef906..0f4c4538f5b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2658.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2658.md @@ -8,7 +8,7 @@ ms.assetid: 638368e8-7893-4a14-abec-13c768a9543a --- # Compiler Error C2658 -'member': redefinition in anonymous struct/union +> 'member': redefinition in anonymous struct/union Two anonymous structures or unions contained member declarations with the same identifier but with different types. Under [/Za](../../build/reference/za-ze-disable-language-extensions.md), you will also get this error for members with the same identifier and type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2659.md b/docs/error-messages/compiler-errors-2/compiler-error-c2659.md index ab818a1f07a..562b7ce3e2b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2659.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2659.md @@ -8,7 +8,7 @@ ms.assetid: b0883600-4d27-4ca7-a931-8ca6bd48654d --- # Compiler Error C2659 -'operator' : function as left operand +> 'operator' : function as left operand A function was on the left side of the specified operator. The most common reason for this error is that the compiler has parsed the identifier on the left side of the operator as a function when the developer intended it to be a variable. For more information, see Wikipedia article [Most vexing parse](https://en.wikipedia.org/wiki/Most_vexing_parse). This example shows a function declaration and a variable definition that are easily confused: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2660.md b/docs/error-messages/compiler-errors-2/compiler-error-c2660.md index b825312531a..a6b6859dbaa 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2660.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2660.md @@ -8,7 +8,7 @@ ms.assetid: 2e01a1db-4f00-4df6-a04d-cb6f70a6922b --- # Compiler Error C2660 -'function' : function does not take number parameters +> 'function' : function does not take number parameters The function is called with an incorrect number of parameters. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2661.md b/docs/error-messages/compiler-errors-2/compiler-error-c2661.md index 9f2a5bbc1c3..c82452258af 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2661.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2661.md @@ -8,7 +8,7 @@ ms.assetid: 60021467-71cd-451b-9877-23840c69309f --- # Compiler Error C2661 -'function' : no overloaded function takes number parameters +> 'function' : no overloaded function takes number parameters Possible causes: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2662.md b/docs/error-messages/compiler-errors-2/compiler-error-c2662.md index 0afdad4fbd3..58536b7b348 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2662.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2662.md @@ -8,7 +8,7 @@ ms.assetid: e172c2a4-f29e-4034-8232-e7dc6f83689f --- # Compiler Error C2662 -'function' : cannot convert 'this' pointer from 'type1' to 'type2' +> 'function' : cannot convert 'this' pointer from 'type1' to 'type2' The compiler could not convert the **`this`** pointer from `type1` to `type2`. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2663.md b/docs/error-messages/compiler-errors-2/compiler-error-c2663.md index 8c3e53207f7..f286362f59d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2663.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2663.md @@ -8,7 +8,7 @@ ms.assetid: 1e93e368-fd52-42bf-9908-9b6df467c8c9 --- # Compiler Error C2663 -'function' : number overloads have no legal conversions for 'this' pointer +> 'function' : number overloads have no legal conversions for 'this' pointer The compiler could not convert **`this`** to any of the overloaded versions of the member function. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2664.md b/docs/error-messages/compiler-errors-2/compiler-error-c2664.md index 0c712df8206..1702da88834 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2664.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2664.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2664"] --- # Compiler Error C2664 -'function' : cannot convert argument n from 'type1' to 'type2' +> 'function' : cannot convert argument n from 'type1' to 'type2' This parameter conversion problem might happen if an instance of a class is created and an implicit conversion is attempted on a constructor marked with the **`explicit`** keyword. For more information about explicit conversions, see [User-Defined Type Conversions](../../cpp/user-defined-type-conversions-cpp.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2665.md b/docs/error-messages/compiler-errors-2/compiler-error-c2665.md index c1efc17c246..3612b411e83 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2665.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2665.md @@ -8,7 +8,7 @@ ms.assetid: a7f99b61-2eae-4f2b-ba75-ea68fd1e8312 --- # Compiler Error C2665 -'function' : none of the number1 overloads can convert parameter number2 from type 'type' +> 'function' : none of the number1 overloads can convert parameter number2 from type 'type' A parameter of the overloaded function cannot be converted to the required type. Possible resolutions: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2666.md b/docs/error-messages/compiler-errors-2/compiler-error-c2666.md index 7307e34bb41..68ab888df63 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2666.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2666.md @@ -8,7 +8,7 @@ ms.assetid: 78364d15-c6eb-439a-9088-e04a0176692b --- # Compiler Error C2666 -'identifier' : number overloads have similar conversions +> 'identifier' : number overloads have similar conversions An overloaded function or operator is ambiguous. Formal parameter lists may be too similar for the compiler to resolve the ambiguity. To resolve this error, explicitly cast one or more of the actual parameters. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2667.md b/docs/error-messages/compiler-errors-2/compiler-error-c2667.md index 17887deb7b7..e13c448100e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2667.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2667.md @@ -8,7 +8,7 @@ ms.assetid: 3c91d9d1-18fa-4e0d-a9ba-984d38980ca3 --- # Compiler Error C2667 -'function' : none of number overloads have a best conversion +> 'function' : none of number overloads have a best conversion An overloaded function call is ambiguous and cannot be resolved. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2669.md b/docs/error-messages/compiler-errors-2/compiler-error-c2669.md index c2145433cb5..cea33fd770e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2669.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2669.md @@ -8,7 +8,7 @@ ms.assetid: f9cb8111-bcdc-484b-a863-2c42e15a0496 --- # Compiler Error C2669 -member function not allowed in anonymous union +> member function not allowed in anonymous union [Anonymous unions](../../cpp/unions.md#anonymous_unions) cannot have member functions. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2670.md b/docs/error-messages/compiler-errors-2/compiler-error-c2670.md index be41ed903cd..4cf871f2a5f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2670.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2670.md @@ -8,7 +8,7 @@ ms.assetid: 4b3b74c7-a750-4b0d-abd3-216d1234461f --- # Compiler Error C2670 -'identifier' : the function template cannot convert parameter number from type 'type' +> 'identifier' : the function template cannot convert parameter number from type 'type' A parameter could not be converted to the required type. From 270ac1793b3d371ab6075f7b59c78a4ef9817d3b Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 3 Aug 2025 22:37:19 +0800 Subject: [PATCH 1246/2255] Add "Remarks" and "Example" headings for error references in range [C2651, C2670] --- .../compiler-errors-2/compiler-error-c2651.md | 2 ++ .../compiler-errors-2/compiler-error-c2652.md | 4 ++++ .../compiler-errors-2/compiler-error-c2653.md | 2 ++ .../compiler-errors-2/compiler-error-c2654.md | 2 ++ .../compiler-errors-2/compiler-error-c2655.md | 4 ++++ .../compiler-errors-2/compiler-error-c2656.md | 2 ++ .../compiler-errors-2/compiler-error-c2657.md | 4 ++++ .../compiler-errors-2/compiler-error-c2658.md | 4 ++++ .../compiler-errors-2/compiler-error-c2659.md | 8 +++++++- .../compiler-errors-2/compiler-error-c2660.md | 2 ++ .../compiler-errors-2/compiler-error-c2661.md | 4 ++++ .../compiler-errors-2/compiler-error-c2662.md | 4 ++++ .../compiler-errors-2/compiler-error-c2663.md | 4 ++++ .../compiler-errors-2/compiler-error-c2664.md | 2 ++ .../compiler-errors-2/compiler-error-c2665.md | 2 ++ .../compiler-errors-2/compiler-error-c2666.md | 2 ++ .../compiler-errors-2/compiler-error-c2667.md | 2 ++ .../compiler-errors-2/compiler-error-c2668.md | 2 ++ .../compiler-errors-2/compiler-error-c2669.md | 2 ++ .../compiler-errors-2/compiler-error-c2670.md | 2 ++ 20 files changed, 59 insertions(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2651.md b/docs/error-messages/compiler-errors-2/compiler-error-c2651.md index 03dc4c56a2c..5d4fc1f2fa8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2651.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2651.md @@ -10,4 +10,6 @@ ms.assetid: c3524a89-47d1-43f6-9e20-2cda15f9ae8a > 'data type' : left of 'operator' must be a class, struct or union +## Remarks + To use a template parameter as if it is a class, specialize the class template with a class instead of an integral type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2652.md b/docs/error-messages/compiler-errors-2/compiler-error-c2652.md index 352267ec77e..e2f5ae6f4d1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2652.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2652.md @@ -10,8 +10,12 @@ ms.assetid: 6e3d1a90-a989-4088-8afd-dc82f6a2d66f > 'identifier' : illegal copy constructor: first parameter must not be an 'identifier' +## Remarks + The first parameter in the copy constructor has the same type as the class, structure, or union for which it is defined. The first parameter can be a reference to the type but not the type itself. +## Example + The following sample generates C2651: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2653.md b/docs/error-messages/compiler-errors-2/compiler-error-c2653.md index dba63492f1a..8b982bdf31c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2653.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2653.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C2653"] > '*identifier*' : is not a class or namespace name +## Remarks + The language syntax requires a class, structure, union, or namespace name here. This error can occur when you use a name that has not been declared as a class, structure, union, or namespace in front of a scope operator. To fix this issue, declare the name or include the header that declares the name before it is used. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2654.md b/docs/error-messages/compiler-errors-2/compiler-error-c2654.md index af61c405fe8..36118cae469 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2654.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2654.md @@ -10,6 +10,8 @@ ms.assetid: ca7de1bd-576b-40bf-96fc-a91984827d20 > 'identifier' : attempt to access member outside a member function +## Remarks + A member is accessed in a declaration. Member data can be accessed only in member functions. This error can be caused when trying to initialize variables in a declaration. Use a constructor for this purpose. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2655.md b/docs/error-messages/compiler-errors-2/compiler-error-c2655.md index 901b218fc4b..95ec7404dd2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2655.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2655.md @@ -10,8 +10,12 @@ ms.assetid: beaefa6e-51b3-4df9-9150-960f3fbf40e0 > 'identifier' : definition or redeclaration illegal in current scope +## Remarks + An identifier can be redeclared only at global scope. +## Example + The following sample generates C2655: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2656.md b/docs/error-messages/compiler-errors-2/compiler-error-c2656.md index d001d70f592..9b06f3710ca 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2656.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2656.md @@ -10,6 +10,8 @@ ms.assetid: 1ec91186-0735-4904-859b-59da9af2d426 > 'function' : function not allowed as a bit field +## Remarks + A function is declared as a member of a bit field. This error can be caused by a syntax error in a constructor initializer list. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2657.md b/docs/error-messages/compiler-errors-2/compiler-error-c2657.md index 46b73efb557..90fd9ecd194 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2657.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2657.md @@ -10,10 +10,14 @@ ms.assetid: f7cf29a9-684a-4605-9469-ecfee9ba4b03 > 'class::*' found at the start of a statement (did you forget to specify a type?) +## Remarks + The line began with a pointer-to-member identifier. This error can be caused by a missing type specifier in the declaration of a pointer to a member. +## Example + The following sample generates C2657: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2658.md b/docs/error-messages/compiler-errors-2/compiler-error-c2658.md index 0f4c4538f5b..b933022d92a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2658.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2658.md @@ -10,8 +10,12 @@ ms.assetid: 638368e8-7893-4a14-abec-13c768a9543a > 'member': redefinition in anonymous struct/union +## Remarks + Two anonymous structures or unions contained member declarations with the same identifier but with different types. Under [/Za](../../build/reference/za-ze-disable-language-extensions.md), you will also get this error for members with the same identifier and type. +## Example + The following sample generates C2658: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2659.md b/docs/error-messages/compiler-errors-2/compiler-error-c2659.md index 562b7ce3e2b..b20a97393ed 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2659.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2659.md @@ -10,7 +10,13 @@ ms.assetid: b0883600-4d27-4ca7-a931-8ca6bd48654d > 'operator' : function as left operand -A function was on the left side of the specified operator. The most common reason for this error is that the compiler has parsed the identifier on the left side of the operator as a function when the developer intended it to be a variable. For more information, see Wikipedia article [Most vexing parse](https://en.wikipedia.org/wiki/Most_vexing_parse). This example shows a function declaration and a variable definition that are easily confused: +## Remarks + +A function was on the left side of the specified operator. The most common reason for this error is that the compiler has parsed the identifier on the left side of the operator as a function when the developer intended it to be a variable. For more information, see Wikipedia article [Most vexing parse](https://en.wikipedia.org/wiki/Most_vexing_parse). + +## Examples + +This example shows a function declaration and a variable definition that are easily confused: ```cpp // C2659a.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2660.md b/docs/error-messages/compiler-errors-2/compiler-error-c2660.md index a6b6859dbaa..db256210d61 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2660.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2660.md @@ -10,6 +10,8 @@ ms.assetid: 2e01a1db-4f00-4df6-a04d-cb6f70a6922b > 'function' : function does not take number parameters +## Remarks + The function is called with an incorrect number of parameters. C2660 can occur if you accidentally call a Windows API function rather than an MFC member function of the same name. To solve this problem: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2661.md b/docs/error-messages/compiler-errors-2/compiler-error-c2661.md index c82452258af..0b5f3085d0e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2661.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2661.md @@ -10,12 +10,16 @@ ms.assetid: 60021467-71cd-451b-9877-23840c69309f > 'function' : no overloaded function takes number parameters +## Remarks + Possible causes: 1. Incorrect actual parameters in function call. 1. Missing function declaration. +## Example + The following sample generates C2661: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2662.md b/docs/error-messages/compiler-errors-2/compiler-error-c2662.md index 58536b7b348..54de644d030 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2662.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2662.md @@ -10,6 +10,8 @@ ms.assetid: e172c2a4-f29e-4034-8232-e7dc6f83689f > 'function' : cannot convert 'this' pointer from 'type1' to 'type2' +## Remarks + The compiler could not convert the **`this`** pointer from `type1` to `type2`. This error can be caused by invoking a non-**`const`** member function on a **`const`** object. Possible resolutions: @@ -18,6 +20,8 @@ This error can be caused by invoking a non-**`const`** member function on a **`c - Add **`const`** to the member function. +## Examples + The following sample generates C2662: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2663.md b/docs/error-messages/compiler-errors-2/compiler-error-c2663.md index f286362f59d..ce9065b570d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2663.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2663.md @@ -10,6 +10,8 @@ ms.assetid: 1e93e368-fd52-42bf-9908-9b6df467c8c9 > 'function' : number overloads have no legal conversions for 'this' pointer +## Remarks + The compiler could not convert **`this`** to any of the overloaded versions of the member function. This error can be caused by invoking a non-**`const`** member function on a **`const`** object. Possible resolutions: @@ -18,6 +20,8 @@ This error can be caused by invoking a non-**`const`** member function on a **`c 1. Add **`const`** to one of the member function overloads. +## Example + The following sample generates C2663: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2664.md b/docs/error-messages/compiler-errors-2/compiler-error-c2664.md index 1702da88834..da226bbd2be 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2664.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2664.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C2664"] > 'function' : cannot convert argument n from 'type1' to 'type2' +## Remarks + This parameter conversion problem might happen if an instance of a class is created and an implicit conversion is attempted on a constructor marked with the **`explicit`** keyword. For more information about explicit conversions, see [User-Defined Type Conversions](../../cpp/user-defined-type-conversions-cpp.md). If a temporary object is passed to a function that takes a reference to an object as a parameter, that reference must be a **`const`** reference. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2665.md b/docs/error-messages/compiler-errors-2/compiler-error-c2665.md index 3612b411e83..9d7f3c23ff6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2665.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2665.md @@ -10,6 +10,8 @@ ms.assetid: a7f99b61-2eae-4f2b-ba75-ea68fd1e8312 > 'function' : none of the number1 overloads can convert parameter number2 from type 'type' +## Remarks + A parameter of the overloaded function cannot be converted to the required type. Possible resolutions: - Supply a conversion operator. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2666.md b/docs/error-messages/compiler-errors-2/compiler-error-c2666.md index 68ab888df63..369498837a9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2666.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2666.md @@ -10,6 +10,8 @@ ms.assetid: 78364d15-c6eb-439a-9088-e04a0176692b > 'identifier' : number overloads have similar conversions +## Remarks + An overloaded function or operator is ambiguous. Formal parameter lists may be too similar for the compiler to resolve the ambiguity. To resolve this error, explicitly cast one or more of the actual parameters. ## Examples diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2667.md b/docs/error-messages/compiler-errors-2/compiler-error-c2667.md index e13c448100e..2d20c8c3324 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2667.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2667.md @@ -10,6 +10,8 @@ ms.assetid: 3c91d9d1-18fa-4e0d-a9ba-984d38980ca3 > 'function' : none of number overloads have a best conversion +## Remarks + An overloaded function call is ambiguous and cannot be resolved. The conversion required to match the actual parameters in the function call to one of the overloaded functions must be strictly better than the conversions required by all the other overloaded functions. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2668.md b/docs/error-messages/compiler-errors-2/compiler-error-c2668.md index 797a39b3122..ceae45ae6fb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2668.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2668.md @@ -10,6 +10,8 @@ ms.assetid: 041e9627-1c76-420e-a653-cfc83f933bd3 > 'function' : ambiguous call to overloaded function +## Remarks + The specified overloaded function call couldn't be resolved. You may want to explicitly cast one or more of the actual parameters. You can also get this error through template use. If, in the same class, you have a regular member function and a templated member function with the same signature, the templated one must come first. This limitation remains in the current implementation of Visual C++. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2669.md b/docs/error-messages/compiler-errors-2/compiler-error-c2669.md index cea33fd770e..446e21f6f22 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2669.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2669.md @@ -10,6 +10,8 @@ ms.assetid: f9cb8111-bcdc-484b-a863-2c42e15a0496 > member function not allowed in anonymous union +## Remarks + [Anonymous unions](../../cpp/unions.md#anonymous_unions) cannot have member functions. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2670.md b/docs/error-messages/compiler-errors-2/compiler-error-c2670.md index 4cf871f2a5f..3e57c07c735 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2670.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2670.md @@ -10,6 +10,8 @@ ms.assetid: 4b3b74c7-a750-4b0d-abd3-216d1234461f > 'identifier' : the function template cannot convert parameter number from type 'type' +## Remarks + A parameter could not be converted to the required type. This error may be fixed if you create an explicit conversion. From 43cfbc572722836f5f83f2c016a604a045b5d215 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 3 Aug 2025 22:38:52 +0800 Subject: [PATCH 1247/2255] Replace term "sample" with "example" for error references in range [C2651, C2670] --- .../compiler-errors-2/compiler-error-c2652.md | 2 +- .../compiler-errors-2/compiler-error-c2653.md | 2 +- .../compiler-errors-2/compiler-error-c2655.md | 2 +- .../compiler-errors-2/compiler-error-c2657.md | 2 +- .../compiler-errors-2/compiler-error-c2658.md | 2 +- .../compiler-errors-2/compiler-error-c2660.md | 4 ++-- .../compiler-errors-2/compiler-error-c2661.md | 2 +- .../compiler-errors-2/compiler-error-c2662.md | 4 ++-- .../compiler-errors-2/compiler-error-c2663.md | 2 +- .../compiler-errors-2/compiler-error-c2664.md | 12 ++++++------ .../compiler-errors-2/compiler-error-c2665.md | 2 +- .../compiler-errors-2/compiler-error-c2666.md | 4 ++-- .../compiler-errors-2/compiler-error-c2668.md | 2 +- .../compiler-errors-2/compiler-error-c2669.md | 2 +- 14 files changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2652.md b/docs/error-messages/compiler-errors-2/compiler-error-c2652.md index e2f5ae6f4d1..2c75924d829 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2652.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2652.md @@ -16,7 +16,7 @@ The first parameter in the copy constructor has the same type as the class, stru ## Example -The following sample generates C2651: +The following example generates C2651: ```cpp // C2652.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2653.md b/docs/error-messages/compiler-errors-2/compiler-error-c2653.md index 8b982bdf31c..658521dbf31 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2653.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2653.md @@ -19,7 +19,7 @@ C2653 is also possible if you try to define a *compound namespace*, a namespace ## Examples -This sample generates C2653 because a scope name is used but not declared. The compiler expects a class, structure, union, or namespace name before a scope operator (::). +This example generates C2653 because a scope name is used but not declared. The compiler expects a class, structure, union, or namespace name before a scope operator (::). ```cpp // C2653.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2655.md b/docs/error-messages/compiler-errors-2/compiler-error-c2655.md index 95ec7404dd2..ed376ae3009 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2655.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2655.md @@ -16,7 +16,7 @@ An identifier can be redeclared only at global scope. ## Example -The following sample generates C2655: +The following example generates C2655: ```cpp // C2655.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2657.md b/docs/error-messages/compiler-errors-2/compiler-error-c2657.md index 90fd9ecd194..761645a93eb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2657.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2657.md @@ -18,7 +18,7 @@ This error can be caused by a missing type specifier in the declaration of a poi ## Example -The following sample generates C2657: +The following example generates C2657: ```cpp // C2657.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2658.md b/docs/error-messages/compiler-errors-2/compiler-error-c2658.md index b933022d92a..b39e9e85240 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2658.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2658.md @@ -16,7 +16,7 @@ Two anonymous structures or unions contained member declarations with the same i ## Example -The following sample generates C2658: +The following example generates C2658: ```cpp // C2658.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2660.md b/docs/error-messages/compiler-errors-2/compiler-error-c2660.md index db256210d61..6858fd7a4e3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2660.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2660.md @@ -22,7 +22,7 @@ C2660 can occur if you accidentally call a Windows API function rather than an M ## Examples -The following sample generates C2660. +The following example generates C2660. ```cpp // C2660.cpp @@ -34,7 +34,7 @@ int main() { } ``` -C2660 can also occur if you attempt to directly call the Dispose method of a managed type. For more information, see [Destructors and finalizers](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Destructors_and_finalizers). The following sample generates C2660. +C2660 can also occur if you attempt to directly call the Dispose method of a managed type. For more information, see [Destructors and finalizers](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Destructors_and_finalizers). The following example generates C2660. ```cpp // C2660_a.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2661.md b/docs/error-messages/compiler-errors-2/compiler-error-c2661.md index 0b5f3085d0e..19b8bde8c31 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2661.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2661.md @@ -20,7 +20,7 @@ Possible causes: ## Example -The following sample generates C2661: +The following example generates C2661: ```cpp // C2661.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2662.md b/docs/error-messages/compiler-errors-2/compiler-error-c2662.md index 54de644d030..79960b74193 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2662.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2662.md @@ -22,7 +22,7 @@ This error can be caused by invoking a non-**`const`** member function on a **`c ## Examples -The following sample generates C2662: +The following example generates C2662: ```cpp // C2662.cpp @@ -64,7 +64,7 @@ ref struct N { }; ``` -The following sample generates C2662: +The following example generates C2662: ```cpp // C2662_c.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2663.md b/docs/error-messages/compiler-errors-2/compiler-error-c2663.md index ce9065b570d..3d170dbe35f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2663.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2663.md @@ -22,7 +22,7 @@ This error can be caused by invoking a non-**`const`** member function on a **`c ## Example -The following sample generates C2663: +The following example generates C2663: ```cpp // C2663.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2664.md b/docs/error-messages/compiler-errors-2/compiler-error-c2664.md index da226bbd2be..f08a2cb9704 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2664.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2664.md @@ -29,7 +29,7 @@ For more information, see [How to: Convert System::String to wchar_t* or char\*] ## Examples -The following sample generates C2664 and shows how to fix it. +The following example generates C2664 and shows how to fix it. ```cpp // C2664.cpp @@ -51,7 +51,7 @@ int main() { } ``` -This sample also generates C2664 and shows how to fix it. +This example also generates C2664 and shows how to fix it. ```cpp // C2664b.cpp @@ -68,7 +68,7 @@ int main() { } ``` -The next sample demonstrates C2664 by using a string literal to call `Test`, and shows how to fix it. Because the parameter is an `szString` reference, an object must be created by the appropriate constructor. The result is a temporary object that cannot be used to initialize the reference. +The next example demonstrates C2664 by using a string literal to call `Test`, and shows how to fix it. Because the parameter is an `szString` reference, an object must be created by the appropriate constructor. The result is a temporary object that cannot be used to initialize the reference. ```cpp // C2664c.cpp @@ -107,7 +107,7 @@ int main() { } ``` -The compiler enforces the C++ standard requirements for applying **`const`**. This sample generates C2664: +The compiler enforces the C++ standard requirements for applying **`const`**. This example generates C2664: ```cpp // C2664d.cpp @@ -173,7 +173,7 @@ int main( ) { } ``` -An enum variable is not converted to its underlying type such that a function call will be satisfied. For more information, see [enum class](../../extensions/enum-class-cpp-component-extensions.md). The following sample generates C2664 and shows how to fix it. +An enum variable is not converted to its underlying type such that a function call will be satisfied. For more information, see [enum class](../../extensions/enum-class-cpp-component-extensions.md). The following example generates C2664 and shows how to fix it. ```cpp // C2664f.cpp @@ -216,7 +216,7 @@ library myproj1 { C2664 is also raised by using **`wchar_t`** when porting code from Visual C++ 6.0 to later versions. In Visual C++ 6.0 and earlier, **`wchar_t`** was a **`typedef`** for **`unsigned short`** and was therefore implicitly convertible to that type. After Visual C++ 6.0, **`wchar_t`** is its own built-in type, as specified in the C++ standard, and is no longer implicitly convertible to **`unsigned short`**. See [/Zc:wchar_t (wchar_t Is Native Type)](../../build/reference/zc-wchar-t-wchar-t-is-native-type.md). -The following sample generates C2664 and shows how to fix it. +The following example generates C2664 and shows how to fix it. ```cpp // C2664h.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2665.md b/docs/error-messages/compiler-errors-2/compiler-error-c2665.md index 9d7f3c23ff6..4bc06cb2ffe 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2665.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2665.md @@ -20,7 +20,7 @@ A parameter of the overloaded function cannot be converted to the required type. ## Example -The following sample generates C2665. +The following example generates C2665. ```cpp // C2665.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2666.md b/docs/error-messages/compiler-errors-2/compiler-error-c2666.md index 369498837a9..3beb56c0503 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2666.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2666.md @@ -16,7 +16,7 @@ An overloaded function or operator is ambiguous. Formal parameter lists may be ## Examples -The following sample generates C2666: +The following example generates C2666: ```cpp // C2666.cpp @@ -143,7 +143,7 @@ int main() } ``` -The following sample generates C2666 +The following example generates C2666 ```cpp // C2666c.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2668.md b/docs/error-messages/compiler-errors-2/compiler-error-c2668.md index ceae45ae6fb..08b2d1f39d5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2668.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2668.md @@ -18,7 +18,7 @@ You can also get this error through template use. If, in the same class, you hav ## Examples -The following sample generates C2668: +The following example generates C2668: ```cpp // C2668.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2669.md b/docs/error-messages/compiler-errors-2/compiler-error-c2669.md index 446e21f6f22..f78dcdc40f3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2669.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2669.md @@ -16,7 +16,7 @@ ms.assetid: f9cb8111-bcdc-484b-a863-2c42e15a0496 ## Example -The following sample generates C2669: +The following example generates C2669: ```cpp // C2669.cpp From a4847bc930bb8c9da3eda45612760a9e9f3edb81 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 3 Aug 2025 22:42:07 +0800 Subject: [PATCH 1248/2255] Update metadata for error references in range [C2651, C2670] --- .../error-messages/compiler-errors-2/compiler-error-c2651.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2652.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2654.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2655.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2656.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2657.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2658.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2659.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2660.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2661.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2662.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2663.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2665.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2666.md | 3 +-- .../error-messages/compiler-errors-2/compiler-error-c2667.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2668.md | 3 +-- .../error-messages/compiler-errors-2/compiler-error-c2669.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2670.md | 5 ++--- 18 files changed, 34 insertions(+), 52 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2651.md b/docs/error-messages/compiler-errors-2/compiler-error-c2651.md index 5d4fc1f2fa8..14c8d273955 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2651.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2651.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2651" title: "Compiler Error C2651" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2651" +ms.date: 11/04/2016 f1_keywords: ["C2651"] helpviewer_keywords: ["C2651"] -ms.assetid: c3524a89-47d1-43f6-9e20-2cda15f9ae8a --- # Compiler Error C2651 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2652.md b/docs/error-messages/compiler-errors-2/compiler-error-c2652.md index 2c75924d829..062e00a09ed 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2652.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2652.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2652" title: "Compiler Error C2652" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2652" +ms.date: 11/04/2016 f1_keywords: ["C2652"] helpviewer_keywords: ["C2652"] -ms.assetid: 6e3d1a90-a989-4088-8afd-dc82f6a2d66f --- # Compiler Error C2652 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2654.md b/docs/error-messages/compiler-errors-2/compiler-error-c2654.md index 36118cae469..2c7a489eb1b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2654.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2654.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2654" title: "Compiler Error C2654" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2654" +ms.date: 11/04/2016 f1_keywords: ["C2654"] helpviewer_keywords: ["C2654"] -ms.assetid: ca7de1bd-576b-40bf-96fc-a91984827d20 --- # Compiler Error C2654 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2655.md b/docs/error-messages/compiler-errors-2/compiler-error-c2655.md index ed376ae3009..4169ae3ee9f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2655.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2655.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2655" title: "Compiler Error C2655" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2655" +ms.date: 11/04/2016 f1_keywords: ["C2655"] helpviewer_keywords: ["C2655"] -ms.assetid: beaefa6e-51b3-4df9-9150-960f3fbf40e0 --- # Compiler Error C2655 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2656.md b/docs/error-messages/compiler-errors-2/compiler-error-c2656.md index 9b06f3710ca..acdffd18ea1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2656.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2656.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2656" title: "Compiler Error C2656" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2656" +ms.date: 11/04/2016 f1_keywords: ["C2656"] helpviewer_keywords: ["C2656"] -ms.assetid: 1ec91186-0735-4904-859b-59da9af2d426 --- # Compiler Error C2656 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2657.md b/docs/error-messages/compiler-errors-2/compiler-error-c2657.md index 761645a93eb..af0af9e0dd2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2657.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2657.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2657" title: "Compiler Error C2657" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2657" +ms.date: 11/04/2016 f1_keywords: ["C2657"] helpviewer_keywords: ["C2657"] -ms.assetid: f7cf29a9-684a-4605-9469-ecfee9ba4b03 --- # Compiler Error C2657 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2658.md b/docs/error-messages/compiler-errors-2/compiler-error-c2658.md index b39e9e85240..fb3c762da11 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2658.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2658.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2658" title: "Compiler Error C2658" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2658" +ms.date: 11/04/2016 f1_keywords: ["C2658"] helpviewer_keywords: ["C2658"] -ms.assetid: 638368e8-7893-4a14-abec-13c768a9543a --- # Compiler Error C2658 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2659.md b/docs/error-messages/compiler-errors-2/compiler-error-c2659.md index b20a97393ed..d02a04abd4f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2659.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2659.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2659" title: "Compiler Error C2659" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2659" +ms.date: 11/04/2016 f1_keywords: ["C2659"] helpviewer_keywords: ["C2659"] -ms.assetid: b0883600-4d27-4ca7-a931-8ca6bd48654d --- # Compiler Error C2659 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2660.md b/docs/error-messages/compiler-errors-2/compiler-error-c2660.md index 6858fd7a4e3..206114d0ac4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2660.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2660.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2660" title: "Compiler Error C2660" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2660" +ms.date: 11/04/2016 f1_keywords: ["C2660"] helpviewer_keywords: ["C2660"] -ms.assetid: 2e01a1db-4f00-4df6-a04d-cb6f70a6922b --- # Compiler Error C2660 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2661.md b/docs/error-messages/compiler-errors-2/compiler-error-c2661.md index 19b8bde8c31..720b9f3334e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2661.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2661.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2661" title: "Compiler Error C2661" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2661" +ms.date: 11/04/2016 f1_keywords: ["C2661"] helpviewer_keywords: ["C2661"] -ms.assetid: 60021467-71cd-451b-9877-23840c69309f --- # Compiler Error C2661 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2662.md b/docs/error-messages/compiler-errors-2/compiler-error-c2662.md index 79960b74193..b6184513912 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2662.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2662.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2662" title: "Compiler Error C2662" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2662" +ms.date: 11/04/2016 f1_keywords: ["C2662"] helpviewer_keywords: ["C2662"] -ms.assetid: e172c2a4-f29e-4034-8232-e7dc6f83689f --- # Compiler Error C2662 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2663.md b/docs/error-messages/compiler-errors-2/compiler-error-c2663.md index 3d170dbe35f..8f6ee981e2b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2663.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2663.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2663" title: "Compiler Error C2663" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2663" +ms.date: 11/04/2016 f1_keywords: ["C2663"] helpviewer_keywords: ["C2663"] -ms.assetid: 1e93e368-fd52-42bf-9908-9b6df467c8c9 --- # Compiler Error C2663 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2665.md b/docs/error-messages/compiler-errors-2/compiler-error-c2665.md index 4bc06cb2ffe..cc110cf8229 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2665.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2665.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2665" title: "Compiler Error C2665" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2665" +ms.date: 11/04/2016 f1_keywords: ["C2665"] helpviewer_keywords: ["C2665"] -ms.assetid: a7f99b61-2eae-4f2b-ba75-ea68fd1e8312 --- # Compiler Error C2665 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2666.md b/docs/error-messages/compiler-errors-2/compiler-error-c2666.md index 3beb56c0503..9dbac3a9b13 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2666.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2666.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2666" title: "Compiler Error C2666" +description: "Learn more about: Compiler Error C2666" ms.date: 10/18/2021 f1_keywords: ["C2666"] helpviewer_keywords: ["C2666"] -ms.assetid: 78364d15-c6eb-439a-9088-e04a0176692b --- # Compiler Error C2666 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2667.md b/docs/error-messages/compiler-errors-2/compiler-error-c2667.md index 2d20c8c3324..883874fb3d6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2667.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2667.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2667" title: "Compiler Error C2667" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2667" +ms.date: 11/04/2016 f1_keywords: ["C2667"] helpviewer_keywords: ["C2667"] -ms.assetid: 3c91d9d1-18fa-4e0d-a9ba-984d38980ca3 --- # Compiler Error C2667 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2668.md b/docs/error-messages/compiler-errors-2/compiler-error-c2668.md index 08b2d1f39d5..5c85dee6a57 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2668.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2668.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2668" title: "Compiler Error C2668" +description: "Learn more about: Compiler Error C2668" ms.date: 05/03/2021 f1_keywords: ["C2668"] helpviewer_keywords: ["C2668"] -ms.assetid: 041e9627-1c76-420e-a653-cfc83f933bd3 --- # Compiler Error C2668 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2669.md b/docs/error-messages/compiler-errors-2/compiler-error-c2669.md index f78dcdc40f3..13d58e90c33 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2669.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2669.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2669" title: "Compiler Error C2669" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2669" +ms.date: 11/04/2016 f1_keywords: ["C2669"] helpviewer_keywords: ["C2669"] -ms.assetid: f9cb8111-bcdc-484b-a863-2c42e15a0496 --- # Compiler Error C2669 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2670.md b/docs/error-messages/compiler-errors-2/compiler-error-c2670.md index 3e57c07c735..a1bfb105edc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2670.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2670.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2670" title: "Compiler Error C2670" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2670" +ms.date: 11/04/2016 f1_keywords: ["C2670"] helpviewer_keywords: ["C2670"] -ms.assetid: 4b3b74c7-a750-4b0d-abd3-216d1234461f --- # Compiler Error C2670 From f993805f2537bc2ee3c6ef1258c0a31eeacae204 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 4 Aug 2025 23:10:19 +0800 Subject: [PATCH 1249/2255] Add blockquotes for error messages in range [C2671, C2700] --- docs/error-messages/compiler-errors-2/compiler-error-c2671.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2673.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2674.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2675.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2677.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2678.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2679.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2680.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2681.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2682.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2683.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2687.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2688.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2689.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2690.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2691.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2692.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2693.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2694.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2695.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2696.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2698.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2700.md | 2 +- 23 files changed, 23 insertions(+), 23 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2671.md b/docs/error-messages/compiler-errors-2/compiler-error-c2671.md index faa1b927d76..7792c1feda2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2671.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2671.md @@ -8,7 +8,7 @@ ms.assetid: fc0ee40f-c8f3-408f-b89d-745d149c4169 --- # Compiler Error C2671 -'function' : static member functions do not have 'this' pointers +> 'function' : static member functions do not have 'this' pointers A **`static`** member function tried to access **`this`**. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2673.md b/docs/error-messages/compiler-errors-2/compiler-error-c2673.md index b122a1aabbb..762c3810437 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2673.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2673.md @@ -8,7 +8,7 @@ ms.assetid: 780230c0-619b-4a78-b01d-ff5886306741 --- # Compiler Error C2673 -'function' : global functions do not have 'this' pointers +> 'function' : global functions do not have 'this' pointers A global function tried to access **`this`**. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2674.md b/docs/error-messages/compiler-errors-2/compiler-error-c2674.md index 6f86c485aaa..16263cd27c2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2674.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2674.md @@ -8,7 +8,7 @@ ms.assetid: 7cbd70d8-d992-44d7-a5cb-dd8cf9c759d2 --- # Compiler Error C2674 -a generic declaration is not allowed in this context +> a generic declaration is not allowed in this context A generic was declared incorrectly. For more information, see [Generics](../../extensions/generics-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2675.md b/docs/error-messages/compiler-errors-2/compiler-error-c2675.md index 4bd9416580f..e256c1589bf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2675.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2675.md @@ -8,7 +8,7 @@ ms.assetid: 4b92a12b-bff8-4dd5-a109-620065fc146c --- # Compiler Error C2675 -unary 'operator' : 'type' does not define this operator or a conversion to a type acceptable to the predefined operator +> unary 'operator' : 'type' does not define this operator or a conversion to a type acceptable to the predefined operator C2675 can also occur when using a unary operator, and the type does not define the operator or a conversion to a type acceptable to the predefined operator. To use the operator, you must overload it for the specified type or define a conversion to a type for which the operator is defined. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2677.md b/docs/error-messages/compiler-errors-2/compiler-error-c2677.md index e5e8937b497..8c14e1730e2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2677.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2677.md @@ -8,7 +8,7 @@ ms.assetid: 76bc0b65-f52a-45a6-b6d6-0555f89da9a8 --- # Compiler Error C2677 -binary 'operator' : no global operator found which takes type 'type' (or there is no acceptable conversion) +> binary 'operator' : no global operator found which takes type 'type' (or there is no acceptable conversion) To use the operator, you must overload it for the specified type or define a conversion to a type for which the operator is defined. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2678.md b/docs/error-messages/compiler-errors-2/compiler-error-c2678.md index 3c56b110b05..9febb975b8f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2678.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2678.md @@ -8,7 +8,7 @@ ms.assetid: 1f0a4e26-b429-44f5-9f94-cb66441220c8 --- # Compiler Error C2678 -binary 'operator' : no operator defined which takes a left-hand operand of type 'type' (or there is no acceptable conversion) +> binary 'operator' : no operator defined which takes a left-hand operand of type 'type' (or there is no acceptable conversion) To use the operator, you must overload it for the specified type or define a conversion to a type for which the operator is defined. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2679.md b/docs/error-messages/compiler-errors-2/compiler-error-c2679.md index 41762a92db1..32e40394a13 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2679.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2679.md @@ -8,7 +8,7 @@ ms.assetid: 1a5f9d00-9190-4aa6-bc72-949f68ec136f --- # Compiler Error C2679 -binary 'operator' : no operator found which takes a right-hand operand of type 'type' (or there is no acceptable conversion) +> binary 'operator' : no operator found which takes a right-hand operand of type 'type' (or there is no acceptable conversion) To use the operator, you must overload it for the specified type or define a conversion to a type for which the operator is defined. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2680.md b/docs/error-messages/compiler-errors-2/compiler-error-c2680.md index de9fce157af..625d75eaa8c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2680.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2680.md @@ -8,7 +8,7 @@ ms.assetid: d6f7129e-dd17-4661-b680-18d6b925b1cc --- # Compiler Error C2680 -'type' : invalid target type for name +> 'type' : invalid target type for name A casting operator tried to convert to a type that is not a pointer or reference. The [dynamic_cast](../../cpp/dynamic-cast-operator.md) operator can be used only for pointers or references. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2681.md b/docs/error-messages/compiler-errors-2/compiler-error-c2681.md index 36739b95071..cb6db3a203a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2681.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2681.md @@ -8,7 +8,7 @@ ms.assetid: eb42da6d-8d2c-43fd-986b-e73e2b004885 --- # Compiler Error C2681 -'type' : invalid expression type for name +> 'type' : invalid expression type for name A casting operator tried to convert from an invalid type. For example, if you use the [dynamic_cast](../../cpp/dynamic-cast-operator.md) operator to convert an expression to a pointer type, the source expression must be a pointer. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2682.md b/docs/error-messages/compiler-errors-2/compiler-error-c2682.md index 09a250de791..2da2ecc1413 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2682.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2682.md @@ -8,7 +8,7 @@ ms.assetid: 30c6a7c4-f5f7-4fe8-81a8-c48938521ab4 --- # Compiler Error C2682 -cannot use casting_operator to convert from 'type1' to 'type2' +> cannot use casting_operator to convert from 'type1' to 'type2' A casting operator tried to convert between incompatible types. For example, you cannot use the [dynamic_cast](../../cpp/dynamic-cast-operator.md) operator to convert a pointer to a reference. The **`dynamic_cast`** operator cannot be used to cast away qualifiers. All qualifiers on the types must match. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2683.md b/docs/error-messages/compiler-errors-2/compiler-error-c2683.md index 27edb0c552f..8bd16ce09d7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2683.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2683.md @@ -8,7 +8,7 @@ ms.assetid: db605e4f-601b-4d05-92a1-c43ca24de08d --- # Compiler Error C2683 -'cast' : 'type' is not a polymorphic type +> 'cast' : 'type' is not a polymorphic type You cannot use [dynamic_cast](../../cpp/dynamic-cast-operator.md) to convert from a non-polymorphic class (a class with no virtual functions). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2687.md b/docs/error-messages/compiler-errors-2/compiler-error-c2687.md index 9284b359bc2..8df00339cf5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2687.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2687.md @@ -8,7 +8,7 @@ ms.assetid: 1d24b24a-cd0f-41cc-975c-b08dcfb7f402 --- # Compiler Error C2687 -'type' : exception-declaration cannot be 'void' or denote an incomplete type or pointer or reference to an incomplete type +> 'type' : exception-declaration cannot be 'void' or denote an incomplete type or pointer or reference to an incomplete type For a type to be part of an exception declaration, it must be defined and not void. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2688.md b/docs/error-messages/compiler-errors-2/compiler-error-c2688.md index ddad95bbbfa..199432503f6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2688.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2688.md @@ -8,7 +8,7 @@ ms.assetid: 168c9e9d-8f65-4664-af86-db71d3e6ee46 --- # Compiler Error C2688 -'C2::fgrv' : covariant returns with multiple or virtual inheritance not supported for varargs functions +> 'C2::fgrv' : covariant returns with multiple or virtual inheritance not supported for varargs functions Covariant return types are not supported in Visual C++ when a function contains variable arguments. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2689.md b/docs/error-messages/compiler-errors-2/compiler-error-c2689.md index 82ab8e83b9d..b26e83ce448 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2689.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2689.md @@ -8,7 +8,7 @@ ms.assetid: b5216fba-524d-4194-9168-26e9dc5210ce --- # Compiler Error C2689 -'function' : a friend function cannot be defined within a local class +> 'function' : a friend function cannot be defined within a local class You can declare but not define a friend function in a local class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2690.md b/docs/error-messages/compiler-errors-2/compiler-error-c2690.md index 8d9cf9f82a5..a9cd31387fd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2690.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2690.md @@ -8,6 +8,6 @@ ms.assetid: f165a806-14bd-4942-99b7-8a9fc7dea227 --- # Compiler Error C2690 -'operator' : cannot perform pointer arithmetic on a managed or WinRT array +> 'operator' : cannot perform pointer arithmetic on a managed or WinRT array Pointer arithmetic is not allowed on a managed or WinRT array. Use array index notation to traverse the array. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2691.md b/docs/error-messages/compiler-errors-2/compiler-error-c2691.md index 9a6d9a67d90..7de70d5b519 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2691.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2691.md @@ -8,7 +8,7 @@ ms.assetid: 6925f8f3-ea60-4909-91e6-b781492c645d --- # Compiler Error C2691 -'data type' : a managed or WinRTarray cannot have this element type +> 'data type' : a managed or WinRTarray cannot have this element type The type of a managed or WinRT array element can be a value type or a reference type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2692.md b/docs/error-messages/compiler-errors-2/compiler-error-c2692.md index cfeedd4078c..b27e4fd3fb0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2692.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2692.md @@ -8,6 +8,6 @@ ms.assetid: 02ade3b4-b757-448b-b065-d7d71bc3f441 --- # Compiler Error C2692 -'function_name' : fully prototyped functions required in C compiler with the '/clr' option +> 'function_name' : fully prototyped functions required in C compiler with the '/clr' option When compiling for .NET managed code, the C compiler requires ANSI function declarations. In addition, if a function takes no parameters, it must explicitly declare **`void`** as the parameter type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2693.md b/docs/error-messages/compiler-errors-2/compiler-error-c2693.md index d26adbe71c5..181a17a9a9e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2693.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2693.md @@ -8,6 +8,6 @@ ms.assetid: b7364ca8-b6be-48c0-97d6-6029787fb171 --- # Compiler Error C2693 -'operator' : illegal comparison for references to a managed or WinRT array +> 'operator' : illegal comparison for references to a managed or WinRT array You cannot test a managed or WinRT array for any kind of inequality. For example, you can test to see if managed arrays are equal but you cannot test to see if one array is greater or less than another array. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2694.md b/docs/error-messages/compiler-errors-2/compiler-error-c2694.md index c093639deba..f739bea83ee 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2694.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2694.md @@ -8,7 +8,7 @@ ms.assetid: 8dc2cec2-67ae-4e16-8c0c-374425aca8bc --- # Compiler Error C2694 -'override': overriding virtual function has less restrictive exception specification than base class virtual member function 'base' +> 'override': overriding virtual function has less restrictive exception specification than base class virtual member function 'base' A virtual function was overridden, but under [/Za](../../build/reference/za-ze-disable-language-extensions.md), the overriding function had a less restrictive [exception specification](../../cpp/exception-specifications-throw-cpp.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2695.md b/docs/error-messages/compiler-errors-2/compiler-error-c2695.md index 5b24ca30b5d..2184a0f6dba 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2695.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2695.md @@ -8,7 +8,7 @@ ms.assetid: 3f6f2091-c38b-40ea-ab6c-f1846f5702d7 --- # Compiler Error C2695 -'function1': overriding virtual function differs from 'function2' only by calling convention +> 'function1': overriding virtual function differs from 'function2' only by calling convention The signature of a function in a derived class cannot override a function in a base class and change the calling convention. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2696.md b/docs/error-messages/compiler-errors-2/compiler-error-c2696.md index 4939dc99786..eb8f96f9c79 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2696.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2696.md @@ -8,7 +8,7 @@ ms.assetid: 6c6eb7df-1230-4346-9a73-abf14c20785d --- # Compiler Error C2696 -Cannot create a temporary object of a managed type 'type' +> Cannot create a temporary object of a managed type 'type' References to **`const`** in an unmanaged program cause the compiler to call the constructor and create a temporary object on the stack. However, a managed class can never be created on the stack. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2698.md b/docs/error-messages/compiler-errors-2/compiler-error-c2698.md index efdb26599fb..d03fd78e180 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2698.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2698.md @@ -8,7 +8,7 @@ ms.assetid: 3ebfe395-c20b-4c56-9980-ca9ed8653382 --- # Compiler Error C2698 -the using-declaration for 'declaration 1' cannot co-exist with the existing using-declaration for 'declaration 2' +> the using-declaration for 'declaration 1' cannot co-exist with the existing using-declaration for 'declaration 2' Once you have a [using declaration](../../cpp/using-declaration.md) for a data member, any using declaration in the same scope that uses the same name is not permitted, as only functions can be overloaded. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2700.md b/docs/error-messages/compiler-errors-2/compiler-error-c2700.md index d843b7d0d84..66d4ca729c7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2700.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2700.md @@ -8,6 +8,6 @@ ms.assetid: a231eb86-bdae-4b37-a606-06854f47929f --- # Compiler Error C2700 -'identifier' : cannot be thrown (use /W4 for more info) +> 'identifier' : cannot be thrown (use /W4 for more info) The object cannot be thrown. Compile with [/W4](../../build/reference/compiler-option-warning-level.md) for more diagnostic information. From 22a615cc1afd05815804528772a17e18c5b21d6d Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 4 Aug 2025 23:16:36 +0800 Subject: [PATCH 1250/2255] Add "Remarks" and "Example" headings for error references in range [C2671, C2700] --- docs/error-messages/compiler-errors-2/compiler-error-c2671.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2672.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2673.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2674.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2675.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2677.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2678.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2679.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2680.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2681.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2682.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2683.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2687.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2688.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2689.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2690.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2691.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2692.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2693.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2694.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2695.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2696.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2698.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2700.md | 2 ++ 24 files changed, 78 insertions(+) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2671.md b/docs/error-messages/compiler-errors-2/compiler-error-c2671.md index 7792c1feda2..d133fc86546 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2671.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2671.md @@ -10,8 +10,12 @@ ms.assetid: fc0ee40f-c8f3-408f-b89d-745d149c4169 > 'function' : static member functions do not have 'this' pointers +## Remarks + A **`static`** member function tried to access **`this`**. +## Example + The following sample generates C2671: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2672.md b/docs/error-messages/compiler-errors-2/compiler-error-c2672.md index a43ddf67cc8..d88fc22d35a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2672.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2672.md @@ -10,6 +10,8 @@ ms.assetid: 7e86338a-2d4b-40fe-9dd2-ac6886f3f31a > '*function*': no matching overloaded function found +## Remarks + The compiler could not find an overloaded function that matches the specified function. No function was found that takes matching parameters, or no matching function has the required accessibility in context. When used by certain standard library containers or algorithms, your types must provide accessible members or friend functions that satisfy the requirements of the container or algorithm. For example, your iterator types should derive from `std::iterator<>`. Comparison operations or use of other operators on container element types may require the type be considered as both a left-hand and a right-hand operand. Use of the type as a right-hand operand can require implementation of the operator as a non-member function of the type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2673.md b/docs/error-messages/compiler-errors-2/compiler-error-c2673.md index 762c3810437..50a6c762e73 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2673.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2673.md @@ -10,8 +10,12 @@ ms.assetid: 780230c0-619b-4a78-b01d-ff5886306741 > 'function' : global functions do not have 'this' pointers +## Remarks + A global function tried to access **`this`**. +## Example + The following sample generates C2673: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2674.md b/docs/error-messages/compiler-errors-2/compiler-error-c2674.md index 16263cd27c2..8d32ee39a9e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2674.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2674.md @@ -10,6 +10,8 @@ ms.assetid: 7cbd70d8-d992-44d7-a5cb-dd8cf9c759d2 > a generic declaration is not allowed in this context +## Remarks + A generic was declared incorrectly. For more information, see [Generics](../../extensions/generics-cpp-component-extensions.md). ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2675.md b/docs/error-messages/compiler-errors-2/compiler-error-c2675.md index e256c1589bf..34b5400c1d5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2675.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2675.md @@ -10,6 +10,8 @@ ms.assetid: 4b92a12b-bff8-4dd5-a109-620065fc146c > unary 'operator' : 'type' does not define this operator or a conversion to a type acceptable to the predefined operator +## Remarks + C2675 can also occur when using a unary operator, and the type does not define the operator or a conversion to a type acceptable to the predefined operator. To use the operator, you must overload it for the specified type or define a conversion to a type for which the operator is defined. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2677.md b/docs/error-messages/compiler-errors-2/compiler-error-c2677.md index 8c14e1730e2..7bc9e69b045 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2677.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2677.md @@ -10,8 +10,12 @@ ms.assetid: 76bc0b65-f52a-45a6-b6d6-0555f89da9a8 > binary 'operator' : no global operator found which takes type 'type' (or there is no acceptable conversion) +## Remarks + To use the operator, you must overload it for the specified type or define a conversion to a type for which the operator is defined. +## Example + The following sample generates C2677: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2678.md b/docs/error-messages/compiler-errors-2/compiler-error-c2678.md index 9febb975b8f..de4186fb505 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2678.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2678.md @@ -10,6 +10,8 @@ ms.assetid: 1f0a4e26-b429-44f5-9f94-cb66441220c8 > binary 'operator' : no operator defined which takes a left-hand operand of type 'type' (or there is no acceptable conversion) +## Remarks + To use the operator, you must overload it for the specified type or define a conversion to a type for which the operator is defined. C2678 can occur when the left-hand operand is const-qualified but the operator is defined to take a non-const argument. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2679.md b/docs/error-messages/compiler-errors-2/compiler-error-c2679.md index 32e40394a13..ffbe2780e10 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2679.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2679.md @@ -10,8 +10,12 @@ ms.assetid: 1a5f9d00-9190-4aa6-bc72-949f68ec136f > binary 'operator' : no operator found which takes a right-hand operand of type 'type' (or there is no acceptable conversion) +## Remarks + To use the operator, you must overload it for the specified type or define a conversion to a type for which the operator is defined. +## Example + The following sample generates C2679: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2680.md b/docs/error-messages/compiler-errors-2/compiler-error-c2680.md index 625d75eaa8c..98c2bb56a5d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2680.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2680.md @@ -10,8 +10,12 @@ ms.assetid: d6f7129e-dd17-4661-b680-18d6b925b1cc > 'type' : invalid target type for name +## Remarks + A casting operator tried to convert to a type that is not a pointer or reference. The [dynamic_cast](../../cpp/dynamic-cast-operator.md) operator can be used only for pointers or references. +## Examples + The following sample generates C2680: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2681.md b/docs/error-messages/compiler-errors-2/compiler-error-c2681.md index cb6db3a203a..d2926a448ad 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2681.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2681.md @@ -10,8 +10,12 @@ ms.assetid: eb42da6d-8d2c-43fd-986b-e73e2b004885 > 'type' : invalid expression type for name +## Remarks + A casting operator tried to convert from an invalid type. For example, if you use the [dynamic_cast](../../cpp/dynamic-cast-operator.md) operator to convert an expression to a pointer type, the source expression must be a pointer. +## Example + The following sample generates C2681: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2682.md b/docs/error-messages/compiler-errors-2/compiler-error-c2682.md index 2da2ecc1413..81712cc6b1d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2682.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2682.md @@ -10,10 +10,14 @@ ms.assetid: 30c6a7c4-f5f7-4fe8-81a8-c48938521ab4 > cannot use casting_operator to convert from 'type1' to 'type2' +## Remarks + A casting operator tried to convert between incompatible types. For example, you cannot use the [dynamic_cast](../../cpp/dynamic-cast-operator.md) operator to convert a pointer to a reference. The **`dynamic_cast`** operator cannot be used to cast away qualifiers. All qualifiers on the types must match. You can use the **`const_cast`** operator to remove attributes such as **`const`**, **`volatile`**, or **`__unaligned`**. +## Examples + The following sample generates C2682: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2683.md b/docs/error-messages/compiler-errors-2/compiler-error-c2683.md index 8bd16ce09d7..27143e499b7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2683.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2683.md @@ -10,10 +10,14 @@ ms.assetid: db605e4f-601b-4d05-92a1-c43ca24de08d > 'cast' : 'type' is not a polymorphic type +## Remarks + You cannot use [dynamic_cast](../../cpp/dynamic-cast-operator.md) to convert from a non-polymorphic class (a class with no virtual functions). You can use [static_cast](../../cpp/static-cast-operator.md) to perform conversions of non-polymorphic types. However, **`static_cast`** does not perform a run-time check. +## Example + The following sample generates C2683: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2687.md b/docs/error-messages/compiler-errors-2/compiler-error-c2687.md index 8df00339cf5..be27a741e94 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2687.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2687.md @@ -10,8 +10,12 @@ ms.assetid: 1d24b24a-cd0f-41cc-975c-b08dcfb7f402 > 'type' : exception-declaration cannot be 'void' or denote an incomplete type or pointer or reference to an incomplete type +## Remarks + For a type to be part of an exception declaration, it must be defined and not void. +## Example + The following sample generates C2687: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2688.md b/docs/error-messages/compiler-errors-2/compiler-error-c2688.md index 199432503f6..cd78550485f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2688.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2688.md @@ -10,10 +10,14 @@ ms.assetid: 168c9e9d-8f65-4664-af86-db71d3e6ee46 > 'C2::fgrv' : covariant returns with multiple or virtual inheritance not supported for varargs functions +## Remarks + Covariant return types are not supported in Visual C++ when a function contains variable arguments. To resolve this error, either define your functions so that they do not use variable arguments or make the return values the same for all virtual functions. +## Example + The following sample generates C2688: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2689.md b/docs/error-messages/compiler-errors-2/compiler-error-c2689.md index b26e83ce448..dbe836241ba 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2689.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2689.md @@ -10,8 +10,12 @@ ms.assetid: b5216fba-524d-4194-9168-26e9dc5210ce > 'function' : a friend function cannot be defined within a local class +## Remarks + You can declare but not define a friend function in a local class. +## Example + The following sample generates C2689: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2690.md b/docs/error-messages/compiler-errors-2/compiler-error-c2690.md index a9cd31387fd..636019fb18f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2690.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2690.md @@ -10,4 +10,6 @@ ms.assetid: f165a806-14bd-4942-99b7-8a9fc7dea227 > 'operator' : cannot perform pointer arithmetic on a managed or WinRT array +## Remarks + Pointer arithmetic is not allowed on a managed or WinRT array. Use array index notation to traverse the array. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2691.md b/docs/error-messages/compiler-errors-2/compiler-error-c2691.md index 7de70d5b519..b207f9a9969 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2691.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2691.md @@ -10,8 +10,12 @@ ms.assetid: 6925f8f3-ea60-4909-91e6-b781492c645d > 'data type' : a managed or WinRTarray cannot have this element type +## Remarks + The type of a managed or WinRT array element can be a value type or a reference type. +## Example + The following sample generates C2691: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2692.md b/docs/error-messages/compiler-errors-2/compiler-error-c2692.md index b27e4fd3fb0..480cf0de7b4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2692.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2692.md @@ -10,4 +10,6 @@ ms.assetid: 02ade3b4-b757-448b-b065-d7d71bc3f441 > 'function_name' : fully prototyped functions required in C compiler with the '/clr' option +## Remarks + When compiling for .NET managed code, the C compiler requires ANSI function declarations. In addition, if a function takes no parameters, it must explicitly declare **`void`** as the parameter type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2693.md b/docs/error-messages/compiler-errors-2/compiler-error-c2693.md index 181a17a9a9e..2cb222390ce 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2693.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2693.md @@ -10,4 +10,6 @@ ms.assetid: b7364ca8-b6be-48c0-97d6-6029787fb171 > 'operator' : illegal comparison for references to a managed or WinRT array +## Remarks + You cannot test a managed or WinRT array for any kind of inequality. For example, you can test to see if managed arrays are equal but you cannot test to see if one array is greater or less than another array. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2694.md b/docs/error-messages/compiler-errors-2/compiler-error-c2694.md index f739bea83ee..0486e75ae9d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2694.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2694.md @@ -10,8 +10,12 @@ ms.assetid: 8dc2cec2-67ae-4e16-8c0c-374425aca8bc > 'override': overriding virtual function has less restrictive exception specification than base class virtual member function 'base' +## Remarks + A virtual function was overridden, but under [/Za](../../build/reference/za-ze-disable-language-extensions.md), the overriding function had a less restrictive [exception specification](../../cpp/exception-specifications-throw-cpp.md). +## Example + The following sample generates C2694: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2695.md b/docs/error-messages/compiler-errors-2/compiler-error-c2695.md index 2184a0f6dba..80d124f911e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2695.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2695.md @@ -10,8 +10,12 @@ ms.assetid: 3f6f2091-c38b-40ea-ab6c-f1846f5702d7 > 'function1': overriding virtual function differs from 'function2' only by calling convention +## Remarks + The signature of a function in a derived class cannot override a function in a base class and change the calling convention. +## Example + The following sample generates C2695: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2696.md b/docs/error-messages/compiler-errors-2/compiler-error-c2696.md index eb8f96f9c79..921c2aa9bfc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2696.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2696.md @@ -10,6 +10,8 @@ ms.assetid: 6c6eb7df-1230-4346-9a73-abf14c20785d > Cannot create a temporary object of a managed type 'type' +## Remarks + References to **`const`** in an unmanaged program cause the compiler to call the constructor and create a temporary object on the stack. However, a managed class can never be created on the stack. C2696 is only reachable using the obsolete compiler option **/clr:oldSyntax**. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2698.md b/docs/error-messages/compiler-errors-2/compiler-error-c2698.md index d03fd78e180..aa56f166aa8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2698.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2698.md @@ -10,8 +10,12 @@ ms.assetid: 3ebfe395-c20b-4c56-9980-ca9ed8653382 > the using-declaration for 'declaration 1' cannot co-exist with the existing using-declaration for 'declaration 2' +## Remarks + Once you have a [using declaration](../../cpp/using-declaration.md) for a data member, any using declaration in the same scope that uses the same name is not permitted, as only functions can be overloaded. +## Example + The following sample generates C2698: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2700.md b/docs/error-messages/compiler-errors-2/compiler-error-c2700.md index 66d4ca729c7..b1a400565df 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2700.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2700.md @@ -10,4 +10,6 @@ ms.assetid: a231eb86-bdae-4b37-a606-06854f47929f > 'identifier' : cannot be thrown (use /W4 for more info) +## Remarks + The object cannot be thrown. Compile with [/W4](../../build/reference/compiler-option-warning-level.md) for more diagnostic information. From 02fdfa6c14933cbf6ced249e93ca135c3cc33ef2 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 4 Aug 2025 23:18:19 +0800 Subject: [PATCH 1251/2255] Replace term "sample" with "example" for error references in range [C2671, C2700] --- docs/error-messages/compiler-errors-2/compiler-error-c2671.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2673.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2674.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2675.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2676.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c2677.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2678.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c2679.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2680.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2681.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2682.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c2683.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2687.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2688.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2689.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2691.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2694.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2695.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2698.md | 2 +- 19 files changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2671.md b/docs/error-messages/compiler-errors-2/compiler-error-c2671.md index d133fc86546..8195a903290 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2671.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2671.md @@ -16,7 +16,7 @@ A **`static`** member function tried to access **`this`**. ## Example -The following sample generates C2671: +The following example generates C2671: ```cpp // C2671.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2673.md b/docs/error-messages/compiler-errors-2/compiler-error-c2673.md index 50a6c762e73..4fb9ca3aac7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2673.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2673.md @@ -16,7 +16,7 @@ A global function tried to access **`this`**. ## Example -The following sample generates C2673: +The following example generates C2673: ```cpp // C2673.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2674.md b/docs/error-messages/compiler-errors-2/compiler-error-c2674.md index 8d32ee39a9e..f89a9e7d94d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2674.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2674.md @@ -16,7 +16,7 @@ A generic was declared incorrectly. For more information, see [Generics](../../e ## Example -The following sample generates C2674. +The following example generates C2674. ```cpp // C2674.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2675.md b/docs/error-messages/compiler-errors-2/compiler-error-c2675.md index 34b5400c1d5..05d53f12ce8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2675.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2675.md @@ -16,7 +16,7 @@ C2675 can also occur when using a unary operator, and the type does not define t ## Example -The following sample generates C2675. +The following example generates C2675. ```cpp // C2675.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2676.md b/docs/error-messages/compiler-errors-2/compiler-error-c2676.md index c2368b92a68..a4d5256bf68 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2676.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2676.md @@ -16,7 +16,7 @@ To use the operator, you must overload it for the specified type or define a con ## Examples -The following sample generates C2676. +The following example generates C2676. ```cpp // C2676.cpp @@ -50,7 +50,7 @@ C2676 can also occur if you attempt to do pointer arithmetic on the **`this`** p The **`this`** pointer is of type handle in a reference type. For more information, see [Semantics of the `this` pointer](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Semantics_of_the_this_pointer). -The following sample generates C2676. +The following example generates C2676. ```cpp // C2676_a.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2677.md b/docs/error-messages/compiler-errors-2/compiler-error-c2677.md index 7bc9e69b045..bc94ad8fee1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2677.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2677.md @@ -16,7 +16,7 @@ To use the operator, you must overload it for the specified type or define a con ## Example -The following sample generates C2677: +The following example generates C2677: ```cpp // C2677.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2678.md b/docs/error-messages/compiler-errors-2/compiler-error-c2678.md index de4186fb505..b9675c6db08 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2678.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2678.md @@ -18,7 +18,7 @@ C2678 can occur when the left-hand operand is const-qualified but the operator i ## Examples -The following sample generates C2678 and shows how to fix it: +The following example generates C2678 and shows how to fix it: ```cpp // C2678a.cpp @@ -44,7 +44,7 @@ int main() { C2678 can also occur if you do not pin a native member before calling a member function on it. -The following sample generates C2678 and shows how to fix it. +The following example generates C2678 and shows how to fix it. ```cpp // C2678.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2679.md b/docs/error-messages/compiler-errors-2/compiler-error-c2679.md index ffbe2780e10..5dea528d0ba 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2679.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2679.md @@ -16,7 +16,7 @@ To use the operator, you must overload it for the specified type or define a con ## Example -The following sample generates C2679: +The following example generates C2679: ```cpp // C2679.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2680.md b/docs/error-messages/compiler-errors-2/compiler-error-c2680.md index 98c2bb56a5d..cc925a38fb4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2680.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2680.md @@ -16,7 +16,7 @@ A casting operator tried to convert to a type that is not a pointer or reference ## Examples -The following sample generates C2680: +The following example generates C2680: ```cpp // C2680.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2681.md b/docs/error-messages/compiler-errors-2/compiler-error-c2681.md index d2926a448ad..1be75b3147e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2681.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2681.md @@ -16,7 +16,7 @@ A casting operator tried to convert from an invalid type. For example, if you us ## Example -The following sample generates C2681: +The following example generates C2681: ```cpp // C2681.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2682.md b/docs/error-messages/compiler-errors-2/compiler-error-c2682.md index 81712cc6b1d..00375c03ca4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2682.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2682.md @@ -18,7 +18,7 @@ You can use the **`const_cast`** operator to remove attributes such as **`const` ## Examples -The following sample generates C2682: +The following example generates C2682: ```cpp // C2682.cpp @@ -30,7 +30,7 @@ void g(A* pa) { } ``` -The following sample generates C2682: +The following example generates C2682: ```cpp // C2682b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2683.md b/docs/error-messages/compiler-errors-2/compiler-error-c2683.md index 27143e499b7..46677faca17 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2683.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2683.md @@ -18,7 +18,7 @@ You can use [static_cast](../../cpp/static-cast-operator.md) to perform conversi ## Example -The following sample generates C2683: +The following example generates C2683: ```cpp // C2683.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2687.md b/docs/error-messages/compiler-errors-2/compiler-error-c2687.md index be27a741e94..cc47a106cef 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2687.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2687.md @@ -16,7 +16,7 @@ For a type to be part of an exception declaration, it must be defined and not vo ## Example -The following sample generates C2687: +The following example generates C2687: ```cpp // C2687.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2688.md b/docs/error-messages/compiler-errors-2/compiler-error-c2688.md index cd78550485f..56140fe8e06 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2688.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2688.md @@ -18,7 +18,7 @@ To resolve this error, either define your functions so that they do not use vari ## Example -The following sample generates C2688: +The following example generates C2688: ```cpp // C2688.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2689.md b/docs/error-messages/compiler-errors-2/compiler-error-c2689.md index dbe836241ba..f44a9aa8f02 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2689.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2689.md @@ -16,7 +16,7 @@ You can declare but not define a friend function in a local class. ## Example -The following sample generates C2689: +The following example generates C2689: ```cpp // C2689.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2691.md b/docs/error-messages/compiler-errors-2/compiler-error-c2691.md index b207f9a9969..3617dad801c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2691.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2691.md @@ -16,7 +16,7 @@ The type of a managed or WinRT array element can be a value type or a reference ## Example -The following sample generates C2691: +The following example generates C2691: ```cpp // C2691a.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2694.md b/docs/error-messages/compiler-errors-2/compiler-error-c2694.md index 0486e75ae9d..1b2d626c7b0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2694.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2694.md @@ -16,7 +16,7 @@ A virtual function was overridden, but under [/Za](../../build/reference/za-ze-d ## Example -The following sample generates C2694: +The following example generates C2694: ```cpp // C2694.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2695.md b/docs/error-messages/compiler-errors-2/compiler-error-c2695.md index 80d124f911e..d1d785f68d8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2695.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2695.md @@ -16,7 +16,7 @@ The signature of a function in a derived class cannot override a function in a b ## Example -The following sample generates C2695: +The following example generates C2695: ```cpp // C2695.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2698.md b/docs/error-messages/compiler-errors-2/compiler-error-c2698.md index aa56f166aa8..478d4e26f51 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2698.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2698.md @@ -16,7 +16,7 @@ Once you have a [using declaration](../../cpp/using-declaration.md) for a data m ## Example -The following sample generates C2698: +The following example generates C2698: ```cpp // C2698.cpp From d94c130240155c45c337e713bb4ead0b32439ce2 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 4 Aug 2025 23:22:51 +0800 Subject: [PATCH 1252/2255] Update metadata for error references in range [C2671, C2700] --- .../error-messages/compiler-errors-2/compiler-error-c2671.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2672.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2673.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2674.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2675.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2676.md | 3 +-- .../error-messages/compiler-errors-2/compiler-error-c2677.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2678.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2679.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2680.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2681.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2682.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2683.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2687.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2688.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2689.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2690.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2691.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2692.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2693.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2694.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2695.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2696.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2698.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2700.md | 5 ++--- 25 files changed, 49 insertions(+), 74 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2671.md b/docs/error-messages/compiler-errors-2/compiler-error-c2671.md index 8195a903290..fd2c623dd42 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2671.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2671.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2671" title: "Compiler Error C2671" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2671" +ms.date: 11/04/2016 f1_keywords: ["C2671"] helpviewer_keywords: ["C2671"] -ms.assetid: fc0ee40f-c8f3-408f-b89d-745d149c4169 --- # Compiler Error C2671 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2672.md b/docs/error-messages/compiler-errors-2/compiler-error-c2672.md index d88fc22d35a..8af88f34643 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2672.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2672.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2672" title: "Compiler Error C2672" -ms.date: "10/24/2017" +description: "Learn more about: Compiler Error C2672" +ms.date: 10/24/2017 f1_keywords: ["C2672"] helpviewer_keywords: ["C2672"] -ms.assetid: 7e86338a-2d4b-40fe-9dd2-ac6886f3f31a --- # Compiler Error C2672 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2673.md b/docs/error-messages/compiler-errors-2/compiler-error-c2673.md index 4fb9ca3aac7..bd53c6d9836 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2673.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2673.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2673" title: "Compiler Error C2673" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2673" +ms.date: 11/04/2016 f1_keywords: ["C2673"] helpviewer_keywords: ["C2673"] -ms.assetid: 780230c0-619b-4a78-b01d-ff5886306741 --- # Compiler Error C2673 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2674.md b/docs/error-messages/compiler-errors-2/compiler-error-c2674.md index f89a9e7d94d..25f54555820 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2674.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2674.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2674" title: "Compiler Error C2674" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2674" +ms.date: 11/04/2016 f1_keywords: ["C2674"] helpviewer_keywords: ["C2674"] -ms.assetid: 7cbd70d8-d992-44d7-a5cb-dd8cf9c759d2 --- # Compiler Error C2674 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2675.md b/docs/error-messages/compiler-errors-2/compiler-error-c2675.md index 05d53f12ce8..44d681044bb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2675.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2675.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2675" title: "Compiler Error C2675" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2675" +ms.date: 11/04/2016 f1_keywords: ["C2675"] helpviewer_keywords: ["C2675"] -ms.assetid: 4b92a12b-bff8-4dd5-a109-620065fc146c --- # Compiler Error C2675 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2676.md b/docs/error-messages/compiler-errors-2/compiler-error-c2676.md index a4d5256bf68..f12d12d14d8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2676.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2676.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2676" title: "Compiler Error C2676" +description: "Learn more about: Compiler Error C2676" ms.date: 06/03/2022 f1_keywords: ["C2676"] helpviewer_keywords: ["C2676"] -ms.assetid: 838a5e34-c92f-4f65-a597-e150bf8cf737 --- # Compiler Error C2676 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2677.md b/docs/error-messages/compiler-errors-2/compiler-error-c2677.md index bc94ad8fee1..665726d4c01 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2677.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2677.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2677" title: "Compiler Error C2677" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2677" +ms.date: 11/04/2016 f1_keywords: ["C2677"] helpviewer_keywords: ["C2677"] -ms.assetid: 76bc0b65-f52a-45a6-b6d6-0555f89da9a8 --- # Compiler Error C2677 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2678.md b/docs/error-messages/compiler-errors-2/compiler-error-c2678.md index b9675c6db08..6719229f6e9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2678.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2678.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2678" title: "Compiler Error C2678" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2678" +ms.date: 11/04/2016 f1_keywords: ["C2678"] helpviewer_keywords: ["C2678"] -ms.assetid: 1f0a4e26-b429-44f5-9f94-cb66441220c8 --- # Compiler Error C2678 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2679.md b/docs/error-messages/compiler-errors-2/compiler-error-c2679.md index 5dea528d0ba..88f7498add1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2679.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2679.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2679" title: "Compiler Error C2679" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2679" +ms.date: 11/04/2016 f1_keywords: ["C2679"] helpviewer_keywords: ["C2679"] -ms.assetid: 1a5f9d00-9190-4aa6-bc72-949f68ec136f --- # Compiler Error C2679 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2680.md b/docs/error-messages/compiler-errors-2/compiler-error-c2680.md index cc925a38fb4..29a2effd882 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2680.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2680.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2680" title: "Compiler Error C2680" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2680" +ms.date: 11/04/2016 f1_keywords: ["C2680"] helpviewer_keywords: ["C2680"] -ms.assetid: d6f7129e-dd17-4661-b680-18d6b925b1cc --- # Compiler Error C2680 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2681.md b/docs/error-messages/compiler-errors-2/compiler-error-c2681.md index 1be75b3147e..8920a1c75f2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2681.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2681.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2681" title: "Compiler Error C2681" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2681" +ms.date: 11/04/2016 f1_keywords: ["C2681"] helpviewer_keywords: ["C2681"] -ms.assetid: eb42da6d-8d2c-43fd-986b-e73e2b004885 --- # Compiler Error C2681 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2682.md b/docs/error-messages/compiler-errors-2/compiler-error-c2682.md index 00375c03ca4..6dbf392b6f8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2682.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2682.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2682" title: "Compiler Error C2682" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2682" +ms.date: 11/04/2016 f1_keywords: ["C2682"] helpviewer_keywords: ["C2682"] -ms.assetid: 30c6a7c4-f5f7-4fe8-81a8-c48938521ab4 --- # Compiler Error C2682 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2683.md b/docs/error-messages/compiler-errors-2/compiler-error-c2683.md index 46677faca17..a2b7b04276a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2683.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2683.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2683" title: "Compiler Error C2683" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2683" +ms.date: 11/04/2016 f1_keywords: ["C2683"] helpviewer_keywords: ["C2683"] -ms.assetid: db605e4f-601b-4d05-92a1-c43ca24de08d --- # Compiler Error C2683 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2687.md b/docs/error-messages/compiler-errors-2/compiler-error-c2687.md index cc47a106cef..d61bb9d910f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2687.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2687.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2687" title: "Compiler Error C2687" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2687" +ms.date: 11/04/2016 f1_keywords: ["C2687"] helpviewer_keywords: ["C2687"] -ms.assetid: 1d24b24a-cd0f-41cc-975c-b08dcfb7f402 --- # Compiler Error C2687 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2688.md b/docs/error-messages/compiler-errors-2/compiler-error-c2688.md index 56140fe8e06..438291e9818 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2688.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2688.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2688" title: "Compiler Error C2688" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2688" +ms.date: 11/04/2016 f1_keywords: ["C2688"] helpviewer_keywords: ["C2688"] -ms.assetid: 168c9e9d-8f65-4664-af86-db71d3e6ee46 --- # Compiler Error C2688 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2689.md b/docs/error-messages/compiler-errors-2/compiler-error-c2689.md index f44a9aa8f02..0fb3674eb26 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2689.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2689.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2689" title: "Compiler Error C2689" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2689" +ms.date: 11/04/2016 f1_keywords: ["C2689"] helpviewer_keywords: ["C2689"] -ms.assetid: b5216fba-524d-4194-9168-26e9dc5210ce --- # Compiler Error C2689 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2690.md b/docs/error-messages/compiler-errors-2/compiler-error-c2690.md index 636019fb18f..9885b8a0b12 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2690.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2690.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2690" title: "Compiler Error C2690" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2690" +ms.date: 11/04/2016 f1_keywords: ["C2690"] helpviewer_keywords: ["C2690"] -ms.assetid: f165a806-14bd-4942-99b7-8a9fc7dea227 --- # Compiler Error C2690 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2691.md b/docs/error-messages/compiler-errors-2/compiler-error-c2691.md index 3617dad801c..b2ff8c3044d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2691.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2691.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2691" title: "Compiler Error C2691" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2691" +ms.date: 11/04/2016 f1_keywords: ["C2691"] helpviewer_keywords: ["C2691"] -ms.assetid: 6925f8f3-ea60-4909-91e6-b781492c645d --- # Compiler Error C2691 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2692.md b/docs/error-messages/compiler-errors-2/compiler-error-c2692.md index 480cf0de7b4..a415df2551f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2692.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2692.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2692" title: "Compiler Error C2692" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2692" +ms.date: 11/04/2016 f1_keywords: ["C2692"] helpviewer_keywords: ["C2692"] -ms.assetid: 02ade3b4-b757-448b-b065-d7d71bc3f441 --- # Compiler Error C2692 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2693.md b/docs/error-messages/compiler-errors-2/compiler-error-c2693.md index 2cb222390ce..3cbf3814c91 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2693.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2693.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2693" title: "Compiler Error C2693" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2693" +ms.date: 11/04/2016 f1_keywords: ["C2693"] helpviewer_keywords: ["C2693"] -ms.assetid: b7364ca8-b6be-48c0-97d6-6029787fb171 --- # Compiler Error C2693 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2694.md b/docs/error-messages/compiler-errors-2/compiler-error-c2694.md index 1b2d626c7b0..3b33248c161 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2694.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2694.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2694" title: "Compiler Error C2694" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2694" +ms.date: 11/04/2016 f1_keywords: ["C2694"] helpviewer_keywords: ["C2694"] -ms.assetid: 8dc2cec2-67ae-4e16-8c0c-374425aca8bc --- # Compiler Error C2694 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2695.md b/docs/error-messages/compiler-errors-2/compiler-error-c2695.md index d1d785f68d8..4e2b58d9815 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2695.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2695.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2695" title: "Compiler Error C2695" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2695" +ms.date: 11/04/2016 f1_keywords: ["C2695"] helpviewer_keywords: ["C2695"] -ms.assetid: 3f6f2091-c38b-40ea-ab6c-f1846f5702d7 --- # Compiler Error C2695 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2696.md b/docs/error-messages/compiler-errors-2/compiler-error-c2696.md index 921c2aa9bfc..27d130d222b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2696.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2696.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2696" title: "Compiler Error C2696" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2696" +ms.date: 11/04/2016 f1_keywords: ["C2696"] helpviewer_keywords: ["C2696"] -ms.assetid: 6c6eb7df-1230-4346-9a73-abf14c20785d --- # Compiler Error C2696 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2698.md b/docs/error-messages/compiler-errors-2/compiler-error-c2698.md index 478d4e26f51..464373f1458 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2698.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2698.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2698" title: "Compiler Error C2698" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2698" +ms.date: 11/04/2016 f1_keywords: ["C2698"] helpviewer_keywords: ["C2698"] -ms.assetid: 3ebfe395-c20b-4c56-9980-ca9ed8653382 --- # Compiler Error C2698 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2700.md b/docs/error-messages/compiler-errors-2/compiler-error-c2700.md index b1a400565df..9032db07969 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2700.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2700.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2700" title: "Compiler Error C2700" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2700" +ms.date: 11/04/2016 f1_keywords: ["C2700"] helpviewer_keywords: ["C2700"] -ms.assetid: a231eb86-bdae-4b37-a606-06854f47929f --- # Compiler Error C2700 From e05af0fcc984a26fb89dabe0f7abebf7aa6ee455 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 4 Aug 2025 23:46:52 +0800 Subject: [PATCH 1253/2255] Fix wrong Visual Studio year in "Use the Microsoft C++ toolset from the command line" topic --- docs/build/building-on-the-command-line.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index 7b4a452f29b..00e62ede30d 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -89,7 +89,7 @@ If you prefer to set the build environment in an existing command prompt window, ::: moniker range=">= msvc-170" -The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2019, the typical installation location on a 64-bit system is in *`\Program Files\Microsoft Visual Studio\2022\`*. The *``* may be Community, Professional, Enterprise, BuildTools, or another nickname you supplied. +The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2022, the typical installation location on a 64-bit system is in *`\Program Files\Microsoft Visual Studio\2022\`*. The *``* may be Community, Professional, Enterprise, BuildTools, or another nickname you supplied. ::: moniker-end ::: moniker range="= msvc-160" From 166ac40867a0c730e546624fc9fe7dd410284167 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 4 Aug 2025 23:50:09 +0800 Subject: [PATCH 1254/2255] Replace `
` with escapes in "Use the Microsoft C++ toolset from the command line" topic --- docs/build/building-on-the-command-line.md | 32 +++++++++++----------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index 00e62ede30d..a83b6da3f9d 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -150,7 +150,7 @@ When used with no arguments, *`vcvarsall.bat`* configures the environment variab > **`vcvarsall.bat`** [*`architecture`*] [*`platform_type`*] [*`winsdk_version`*] [**`-vcvars_ver=`***`vcversion`*] [*`spectre_mode`*] -*`architecture`*
+*`architecture`*\ This optional argument specifies the host and target architecture to use. If *architecture* isn't specified, the default build environment is used. These arguments are supported: | *`architecture`* | Compiler | Host computer architecture | Build output (target) architecture | @@ -164,13 +164,13 @@ This optional argument specifies the host and target architecture to use. If *ar | `amd64_arm` or `x64_arm` | ARM on x64 cross | x64 | ARM | | `amd64_arm64` or `x64_arm64` | ARM64 on x64 cross | x64 | ARM64 | -*`platform_type`*
+*`platform_type`*\ This optional argument allows you to specify **`store`** or **`uwp`** as the platform type. By default, the environment is set to build desktop or console apps. -*`winsdk_version`*
+*`winsdk_version`*\ Optionally specifies the version of the Windows SDK to use. By default, the latest installed Windows SDK is used. To specify the Windows SDK version, you can use a full Windows SDK number such as **`10.0.10240.0`**, or specify **`8.1`** to use the Windows 8.1 SDK. -*`vcversion`*
+*`vcversion`*\ Optionally specifies the Visual Studio compiler toolset to use. By default, the environment is set to use the current Visual Studio compiler toolset. ::: moniker range=">= msvc-160" @@ -249,10 +249,10 @@ Adjust the path to reflect your Visual Studio installation directory. The vcvars To build a C/C++ project at a command prompt, Visual Studio provides these command-line tools: -[`CL`](reference/compiling-a-c-cpp-program.md)
+[`CL`](reference/compiling-a-c-cpp-program.md)\ Use the compiler (cl.exe) to compile and link source code files into apps, libraries, and DLLs. -[`Link`](reference/linking.md)
+[`Link`](reference/linking.md)\ Use the linker (link.exe) to link compiled object files and libraries into apps and DLLs. When you build on the command line, the F1 command isn't available for instant help. Instead, you can use a search engine to get information about warnings, errors, and messages. You can also download and use the offline help files. To use the search in Microsoft Learn, enter your query in the search box at the top of any article. @@ -280,36 +280,36 @@ Use NMAKE (nmake.exe) to build C++ projects by using a traditional makefile. These articles show how to build apps on the command line, and describe how to customize the command-line build environment. Some show how to use 64-bit toolsets, and target x86, x64, ARM, and ARM64 platforms. They also describe use of the command-line build tools MSBuild and NMAKE. -[Walkthrough: Compiling a native C++ program on the command line](walkthrough-compiling-a-native-cpp-program-on-the-command-line.md)
+[Walkthrough: Compiling a native C++ program on the command line](walkthrough-compiling-a-native-cpp-program-on-the-command-line.md)\ Gives an example that shows how to create and compile a C++ program on the command line. -[Walkthrough: Compile a C program on the command line](walkthrough-compile-a-c-program-on-the-command-line.md)
+[Walkthrough: Compile a C program on the command line](walkthrough-compile-a-c-program-on-the-command-line.md)\ Describes how to compile a program written in the C programming language. -[Walkthrough: Compiling a C++/CLI program on the command line](walkthrough-compiling-a-cpp-cli-program-on-the-command-line.md)
+[Walkthrough: Compiling a C++/CLI program on the command line](walkthrough-compiling-a-cpp-cli-program-on-the-command-line.md)\ Describes how to create and compile a C++/CLI program that uses the .NET Framework. -[Walkthrough: Compiling a C++/CX program on the command line](walkthrough-compiling-a-cpp-cx-program-on-the-command-line.md)
+[Walkthrough: Compiling a C++/CX program on the command line](walkthrough-compiling-a-cpp-cx-program-on-the-command-line.md)\ Describes how to create and compile a C++/CX program that uses the Windows Runtime. -[NMAKE reference](reference/nmake-reference.md)
+[NMAKE reference](reference/nmake-reference.md)\ Provides links to articles that describe the Microsoft Program Maintenance Utility (NMAKE.EXE). -[MSBuild on the command line - C++](msbuild-visual-cpp.md)
+[MSBuild on the command line - C++](msbuild-visual-cpp.md)\ Provides links to articles that discuss how to use msbuild.exe from the command line. ## Related sections -[/MD, /MT, /LD (Use run-time library)](reference/md-mt-ld-use-run-time-library.md)
+[/MD, /MT, /LD (Use run-time library)](reference/md-mt-ld-use-run-time-library.md)\ Describes how to use these compiler options to use a Debug or Release run-time library. -[C/C++ compiler options](reference/compiler-options.md)
+[C/C++ compiler options](reference/compiler-options.md)\ Provides links to articles that discuss the C and C++ compiler options and CL.exe. -[MSVC linker options](reference/linker-options.md)
+[MSVC linker options](reference/linker-options.md)\ Provides links to articles that discuss the linker options and LINK.exe. -[Additional MSVC build tools](reference/c-cpp-build-tools.md)
+[Additional MSVC build tools](reference/c-cpp-build-tools.md)\ Provides links to the C/C++ build tools that are included in Visual Studio. ## See also From fdcbbc6986c5b10ca67e0cccff9274bd41977ed8 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 5 Aug 2025 00:08:23 +0800 Subject: [PATCH 1255/2255] Add backticks and italics in "Use the Microsoft C++ toolset from the command line" topic --- docs/build/building-on-the-command-line.md | 34 +++++++++++----------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index a83b6da3f9d..29b269c18c1 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -81,7 +81,7 @@ The Start menu folder and shortcut names vary depending on the installed version For an even faster way to open a developer command prompt, enter *developer command prompt* in the desktop search box. Then choose the result you want. > [!NOTE] -> By default, the current working directory in a developer command prompt is the root of your Visual Studio installation in the Program Files directory. This isn't an appropriate location for your code and projects. Change the current working directory to another location before you create a project. The IDE creates projects in your user directory, typically in *%USERPROFILE%\\source\\repos*. +> By default, the current working directory in a developer command prompt is the root of your Visual Studio installation in the Program Files directory. This isn't an appropriate location for your code and projects. Change the current working directory to another location before you create a project. The IDE creates projects in your user directory, typically in *`%USERPROFILE%\source\repos`*. ## Developer command file locations @@ -112,12 +112,12 @@ The primary developer command prompt command file, *`VsDevCmd.bat`*, is located ::: moniker range=">= msvc-150" -More command files are available to set up specific build architectures. The command files available depend on the Visual Studio workloads and options you've installed. In Visual Studio 2017 and Visual Studio 2019, you'll find them in the VC\\Auxiliary\\Build subdirectory. +More command files are available to set up specific build architectures. The command files available depend on the Visual Studio workloads and options you've installed. In Visual Studio 2017 and Visual Studio 2019, you'll find them in the *`VC\Auxiliary\Build`* subdirectory. ::: moniker-end ::: moniker range="< msvc-150" -More command files are available to set up specific build architectures. The command files available depend on the Visual Studio workloads and options you've installed. In Visual Studio 2015, they're located in the VC, VC\\bin, or VC\\bin\\*architecture* subdirectories, where *architecture* is one of the native or cross-compiler options. +More command files are available to set up specific build architectures. The command files available depend on the Visual Studio workloads and options you've installed. In Visual Studio 2015, they're located in the *`VC`*, *`VC\bin`*, or *`VC\bin\`* subdirectories, where *``* is one of the native or cross-compiler options. ::: moniker-end @@ -151,7 +151,7 @@ When used with no arguments, *`vcvarsall.bat`* configures the environment variab > **`vcvarsall.bat`** [*`architecture`*] [*`platform_type`*] [*`winsdk_version`*] [**`-vcvars_ver=`***`vcversion`*] [*`spectre_mode`*] *`architecture`*\ -This optional argument specifies the host and target architecture to use. If *architecture* isn't specified, the default build environment is used. These arguments are supported: +This optional argument specifies the host and target architecture to use. If *`architecture`* isn't specified, the default build environment is used. These arguments are supported: | *`architecture`* | Compiler | Host computer architecture | Build output (target) architecture | |--|--|--|--| @@ -195,7 +195,7 @@ Leave this parameter out to use libraries without Spectre mitigations. Use the v #### To set up the build environment in an existing command prompt window -1. At the command prompt, use the CD command to change to the Visual Studio installation directory. Then, use CD again to change to the subdirectory that contains the configuration-specific command files. For Visual Studio 2019 and Visual Studio 2017, use the *VC\\Auxiliary\\Build* subdirectory. For Visual Studio 2015, use the *VC* subdirectory. +1. At the command prompt, use the `CD` command to change to the Visual Studio installation directory. Then, use `CD` again to change to the subdirectory that contains the configuration-specific command files. For Visual Studio 2019 and Visual Studio 2017, use the *`VC\Auxiliary\Build`* subdirectory. For Visual Studio 2015, use the *`VC`* subdirectory. 1. Enter the command for your preferred developer environment. For example, to build ARM code for UWP on a 64-bit platform, using the latest Windows SDK and Visual Studio compiler toolset, use this command line: @@ -243,17 +243,17 @@ The architecture-specific batch files set the *`architecture`* parameter and cal ::: moniker-end -Adjust the path to reflect your Visual Studio installation directory. The vcvarsall.bat file has additional information about specific version numbers. +Adjust the path to reflect your Visual Studio installation directory. The *`vcvarsall.bat`* file has additional information about specific version numbers. ## Command-line tools To build a C/C++ project at a command prompt, Visual Studio provides these command-line tools: [`CL`](reference/compiling-a-c-cpp-program.md)\ -Use the compiler (cl.exe) to compile and link source code files into apps, libraries, and DLLs. +Use the compiler (`cl.exe`) to compile and link source code files into apps, libraries, and DLLs. [`Link`](reference/linking.md)\ -Use the linker (link.exe) to link compiled object files and libraries into apps and DLLs. +Use the linker (`link.exe`) to link compiled object files and libraries into apps and DLLs. When you build on the command line, the F1 command isn't available for instant help. Instead, you can use a search engine to get information about warnings, errors, and messages. You can also download and use the offline help files. To use the search in Microsoft Learn, enter your query in the search box at the top of any article. @@ -262,16 +262,16 @@ When you build on the command line, the F1 command isn't available for instant h By default, the Visual Studio IDE uses native project build systems based on MSBuild. You can invoke MSBuild directly to build projects without using the IDE. You can also use the `devenv` command to use Visual Studio to build projects and solutions. Visual Studio also supports build systems based on CMake or NMake. [`MSBuild`](msbuild-visual-cpp.md)\ -Use MSBuild (msbuild.exe) and a project file (.vcxproj) to configure a build and invoke the toolset without loading the Visual Studio IDE. It's equivalent to running the **Build** project or **Build Solution** command in the Visual Studio IDE. MSBuild has advantages over the IDE when you build at the command line. You don't have to install the full IDE on all your build servers and build pipelines. You avoid the extra overhead of the IDE. MSBuild runs in containerized build environments, and supports a [binary logger](https://msbuildlog.com/). +Use MSBuild (`msbuild.exe`) and a project file (`.vcxproj`) to configure a build and invoke the toolset without loading the Visual Studio IDE. It's equivalent to running the **Build** project or **Build Solution** command in the Visual Studio IDE. MSBuild has advantages over the IDE when you build at the command line. You don't have to install the full IDE on all your build servers and build pipelines. You avoid the extra overhead of the IDE. MSBuild runs in containerized build environments, and supports a [binary logger](https://msbuildlog.com/). [`DEVENV`](/visualstudio/ide/reference/devenv-command-line-switches)\ -Use DEVENV (devenv.exe) combined with a command-line switch such as **`/Build`** or **`/Clean`** to execute certain build commands without displaying the Visual Studio IDE. +Use DEVENV (`devenv.exe`) combined with a command-line switch such as **`/Build`** or **`/Clean`** to execute certain build commands without displaying the Visual Studio IDE. [`CMake`](../build/cmake-projects-in-visual-studio.md)\ -CMake (cmake.exe) is a cross-platform, open-source tool for defining build processes that run on multiple platforms. CMake can configure and control native build tools for its supported platforms, such as MSBuild and Make. For more information about CMake, see the [CMake documentation](https://cmake.org/cmake/help/latest/index.html#). +CMake (`cmake.exe`) is a cross-platform, open-source tool for defining build processes that run on multiple platforms. CMake can configure and control native build tools for its supported platforms, such as MSBuild and Make. For more information about CMake, see the [CMake documentation](https://cmake.org/cmake/help/latest/index.html#). [`NMAKE`](reference/nmake-reference.md)\ -Use NMAKE (nmake.exe) to build C++ projects by using a traditional makefile. +Use NMAKE (`nmake.exe`) to build C++ projects by using a traditional makefile. > [!NOTE] > Starting in Visual Studio 2019 version 16.5, MSBuild and DEVENV don't use the command-line environment to control the toolset and libraries used. @@ -293,21 +293,21 @@ Describes how to create and compile a C++/CLI program that uses the .NET Framewo Describes how to create and compile a C++/CX program that uses the Windows Runtime. [NMAKE reference](reference/nmake-reference.md)\ -Provides links to articles that describe the Microsoft Program Maintenance Utility (NMAKE.EXE). +Provides links to articles that describe the Microsoft Program Maintenance Utility (`NMAKE.EXE`). [MSBuild on the command line - C++](msbuild-visual-cpp.md)\ -Provides links to articles that discuss how to use msbuild.exe from the command line. +Provides links to articles that discuss how to use `msbuild.exe` from the command line. ## Related sections -[/MD, /MT, /LD (Use run-time library)](reference/md-mt-ld-use-run-time-library.md)\ +[`/MD`, `/MT`, `/LD` (Use run-time library)](reference/md-mt-ld-use-run-time-library.md)\ Describes how to use these compiler options to use a Debug or Release run-time library. [C/C++ compiler options](reference/compiler-options.md)\ -Provides links to articles that discuss the C and C++ compiler options and CL.exe. +Provides links to articles that discuss the C and C++ compiler options and `CL.exe`. [MSVC linker options](reference/linker-options.md)\ -Provides links to articles that discuss the linker options and LINK.exe. +Provides links to articles that discuss the linker options and `LINK.exe`. [Additional MSVC build tools](reference/c-cpp-build-tools.md)\ Provides links to the C/C++ build tools that are included in Visual Studio. From ef4506c41322c79a5ed6da4a660b00968d4515bc Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 5 Aug 2025 00:18:27 +0800 Subject: [PATCH 1256/2255] Convert single line inline code to code block in "Use the Microsoft C++ toolset from the command line" topic --- docs/build/building-on-the-command-line.md | 28 ++++++++++++++++------ 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index 29b269c18c1..fc578fa217c 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -199,7 +199,9 @@ Leave this parameter out to use libraries without Spectre mitigations. Use the v 1. Enter the command for your preferred developer environment. For example, to build ARM code for UWP on a 64-bit platform, using the latest Windows SDK and Visual Studio compiler toolset, use this command line: - `vcvarsall.bat amd64_arm uwp` + ```cmd + vcvarsall.bat amd64_arm uwp + ``` ## Create your own command prompt shortcut @@ -207,21 +209,27 @@ Leave this parameter out to use libraries without Spectre mitigations. Use the v Open the Properties dialog for a developer command prompt shortcut to see the command target used. For example, the target for the **x64 Native Tools Command Prompt for VS 2019** shortcut is something similar to: -`%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"` +``` +%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" +``` ::: moniker-end ::: moniker range="= msvc-150" Open the Properties dialog for a developer command prompt shortcut to see the command target used. For example, the target for the **x64 Native Tools Command Prompt for VS 2017** shortcut is something similar to: -`%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"` +``` +%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat" +``` ::: moniker-end ::: moniker range="< msvc-150" Open the Properties dialog for a developer command prompt shortcut to see the command target used. For example, the target for the **VS2015 x64 Native Tools Command Prompt** shortcut is something similar to: -`%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64` +``` +%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 +``` ::: moniker-end @@ -229,17 +237,23 @@ The architecture-specific batch files set the *`architecture`* parameter and cal ::: moniker range=">= msvc-160" -`%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64_arm uwp -vcvars_ver=14.29` +``` +%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64_arm uwp -vcvars_ver=14.29 +``` ::: moniker-end ::: moniker range="= msvc-150" -`%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64_arm uwp -vcvars_ver=14.19` +``` +%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64_arm uwp -vcvars_ver=14.19 +``` ::: moniker-end ::: moniker range="< msvc-150" -`%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 -vcvars_ver=14.0` +``` +%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 -vcvars_ver=14.0 +``` ::: moniker-end From e9d1cc091afea8e64230244f4be67fa791ec61e6 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 5 Aug 2025 00:19:12 +0800 Subject: [PATCH 1257/2255] Update metadata in "Use the Microsoft C++ toolset from the command line" topic --- docs/build/building-on-the-command-line.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index fc578fa217c..ffc6dff0b5a 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -1,11 +1,10 @@ --- title: "Use the Microsoft C++ toolset from the command line" description: "Use the Microsoft C++ (MSVC) compiler toolset from the command line outside of the Visual Studio IDE." -ms.custom: "conceptual" ms.date: 04/07/2022 -helpviewer_keywords: ["command-line builds [C++]", "compiling source code [C++], command line", "builds [C++], command-line", "command line [C++], building from", "command line [C++], compilers"] -ms.assetid: 7ca9daed-a003-4162-842d-908f79058365 +ms.custom: "conceptual" ms.topic: how-to +helpviewer_keywords: ["command-line builds [C++]", "compiling source code [C++], command line", "builds [C++], command-line", "command line [C++], building from", "command line [C++], compilers"] --- # Use the Microsoft C++ toolset from the command line From 8e1983e9de9c2a819d18442a48b53a60d04815a4 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 5 Aug 2025 22:50:27 +0800 Subject: [PATCH 1258/2255] Add blockquotes for error messages in range [C2701, C2730] --- docs/error-messages/compiler-errors-2/compiler-error-c2704.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2707.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2708.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2709.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2710.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2711.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2715.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2718.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2719.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2721.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2722.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2723.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2724.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2725.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2726.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2728.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2730.md | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2704.md b/docs/error-messages/compiler-errors-2/compiler-error-c2704.md index 476dd462288..7205c45ac0a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2704.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2704.md @@ -8,6 +8,6 @@ ms.assetid: 185797e2-55b5-4c11-8493-e70eb1d15a94 --- # Compiler Error C2704 -'identifier' : __va_start intrinsic only allowed in varargs +> 'identifier' : __va_start intrinsic only allowed in varargs The `__va_start` intrinsic is used in a declaration for a function with a fixed number of arguments. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2707.md b/docs/error-messages/compiler-errors-2/compiler-error-c2707.md index ff081cdf341..3ed6aa213bb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2707.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2707.md @@ -8,7 +8,7 @@ ms.assetid: 3deaf45c-74da-4c9d-acc6-b82412720b74 --- # Compiler Error C2707 -'identifier' : bad context for intrinsic function +> 'identifier' : bad context for intrinsic function Structured exception-handling intrinsics are invalid in certain contexts: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2708.md b/docs/error-messages/compiler-errors-2/compiler-error-c2708.md index 72031e762ad..5a2c8b82c6f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2708.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2708.md @@ -8,7 +8,7 @@ ms.assetid: d52d3088-1141-42f4-829c-74755a7fcc3a --- # Compiler Error C2708 -'identifier' : actual parameters length in bytes differs from previous call or reference +> 'identifier' : actual parameters length in bytes differs from previous call or reference A [__stdcall](../../cpp/stdcall.md) function must be preceded by a prototype. Otherwise, the compiler interprets the first call to the function as a prototype and this error occurs when the compiler encounters a call that does not match. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2709.md b/docs/error-messages/compiler-errors-2/compiler-error-c2709.md index 8412aaff029..d06b72efe22 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2709.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2709.md @@ -8,6 +8,6 @@ ms.assetid: e66fc7e6-0e91-4b99-a6e0-fdb069b09fbc --- # Compiler Error C2709 -'identifier' : formal parameter's length in bytes differs from previous declaration +> 'identifier' : formal parameter's length in bytes differs from previous declaration The signature in a call to the specified function differs from the prototype. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2710.md b/docs/error-messages/compiler-errors-2/compiler-error-c2710.md index 5b2ddea8617..c40d0161df9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2710.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2710.md @@ -8,7 +8,7 @@ ms.assetid: a2a6bb5b-86ad-4a6c-acd0-e2bef8464e0e --- # Compiler Error C2710 -'construct' : '__declspec(modifier)' can only be applied to a function returning a pointer +> 'construct' : '__declspec(modifier)' can only be applied to a function returning a pointer A function whose return value is a pointer is the only construct to which `modifier` can be applied. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2711.md b/docs/error-messages/compiler-errors-2/compiler-error-c2711.md index 137e67e9338..d3e889d0ef7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2711.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2711.md @@ -8,7 +8,7 @@ ms.assetid: 9df9f808-7419-4e63-abdd-e6538ff0871f --- # Compiler Error C2711 -'function' : this function cannot be compiled as managed, consider using #pragma unmanaged +> 'function' : this function cannot be compiled as managed, consider using #pragma unmanaged Some instructions will prevent the compiler from generating MSIL for the enclosing function. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2715.md b/docs/error-messages/compiler-errors-2/compiler-error-c2715.md index 1321f85ca92..c4f985c864a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2715.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2715.md @@ -8,7 +8,7 @@ ms.assetid: c81567a7-5b65-468f-aaf9-835f91e468e4 --- # Compiler Error C2715 -'type' : cannot throw or catch this type +> 'type' : cannot throw or catch this type Value types are not valid arguments when using exception handling in managed code (see [Exception Handling](../../extensions/exception-handling-cpp-component-extensions.md) for more information). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2718.md b/docs/error-messages/compiler-errors-2/compiler-error-c2718.md index 6b67c1f9331..f483336182e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2718.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2718.md @@ -8,7 +8,7 @@ ms.assetid: 78cc71f8-c142-46fc-9aed-970635d74f0c --- # Compiler Error C2718 -'parameter': actual parameter with __declspec(align('#')) won't be aligned +> 'parameter': actual parameter with __declspec(align('#')) won't be aligned The [align](../../cpp/align-cpp.md) **`__declspec`** modifier is not permitted on function parameters. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2719.md b/docs/error-messages/compiler-errors-2/compiler-error-c2719.md index 3b367a25ba2..6954b6bd4ef 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2719.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2719.md @@ -8,7 +8,7 @@ ms.assetid: ea6236d3-8286-45cc-9478-c84ad3dd3c8e --- # Compiler Error C2719 -'parameter': formal parameter with __declspec(align('#')) won't be aligned +> 'parameter': formal parameter with __declspec(align('#')) won't be aligned The [align](../../cpp/align-cpp.md) **`__declspec`** modifier is not permitted on function parameters. Function parameter alignment is controlled by the calling convention used. For more information, see [Calling Conventions](../../cpp/calling-conventions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2721.md b/docs/error-messages/compiler-errors-2/compiler-error-c2721.md index 0bafc693b29..55ddccc19ba 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2721.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2721.md @@ -8,6 +8,6 @@ ms.assetid: 7a97823c-3ce1-4112-8253-fc1448685235 --- # Compiler Error C2721 -'specifier' : storage-class specifier illegal between operator keyword and type +> 'specifier' : storage-class specifier illegal between operator keyword and type User-defined type conversions apply to all storage classes, so you cannot specify a storage class in a type conversion. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2722.md b/docs/error-messages/compiler-errors-2/compiler-error-c2722.md index 0240cca6d41..817b3296f47 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2722.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2722.md @@ -8,6 +8,6 @@ ms.assetid: 4cc2c7fa-cb12-4bcf-9df1-6d627ef62973 --- # Compiler Error C2722 -'::operator' : illegal following operator command; use 'operator operator' +> '::operator' : illegal following operator command; use 'operator operator' An `operator` statement redefines `::new` or `::delete`. The `new` and `delete` operators are global, so the scope resolution operator (`::`) is meaningless. Remove the `::` operator. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2723.md b/docs/error-messages/compiler-errors-2/compiler-error-c2723.md index 48dad9d850c..348cfbc15c5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2723.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2723.md @@ -8,7 +8,7 @@ ms.assetid: 86925601-2297-4cfd-94e2-2caf27c474c4 --- # Compiler Error C2723 -'function' : 'specifier' specifier illegal on function definition +> 'function' : 'specifier' specifier illegal on function definition The specifier cannot appear with a function definition outside of a class declaration. The **`virtual`** specifier can be specified only on a member function declaration within a class declaration. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2724.md b/docs/error-messages/compiler-errors-2/compiler-error-c2724.md index 8860220e666..7fe9c7fc723 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2724.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2724.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2724"] --- # Compiler Error C2724 -'identifier' : 'static' should not be used on member functions defined at file scope +> 'identifier' : 'static' should not be used on member functions defined at file scope Static member functions should be declared with external linkage. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2725.md b/docs/error-messages/compiler-errors-2/compiler-error-c2725.md index b362cad13e2..695283a829f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2725.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2725.md @@ -8,7 +8,7 @@ ms.assetid: 13cd5b1b-e906-4cd8-9b2b-510d587c665a --- # Compiler Error C2725 -'exception' : unable to throw or catch a managed or WinRT object by value or reference +> 'exception' : unable to throw or catch a managed or WinRT object by value or reference The type of a managed or WinRT exception was not correct. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2726.md b/docs/error-messages/compiler-errors-2/compiler-error-c2726.md index 1cf7c3f939c..634d19c64d7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2726.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2726.md @@ -8,7 +8,7 @@ ms.assetid: f0191bb7-c175-450b-bf09-a3213db96d09 --- # Compiler Error C2726 -'gcnew' may only be used to create an object with managed or WinRT type +> 'gcnew' may only be used to create an object with managed or WinRT type You cannot create an instance of a native type on the garbage-collected heap. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2728.md b/docs/error-messages/compiler-errors-2/compiler-error-c2728.md index 79660264d06..ea61c2b9943 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2728.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2728.md @@ -8,7 +8,7 @@ ms.assetid: 65635f91-1cd1-46e4-9ad7-14726d0546af --- # Compiler Error C2728 -'type' : a native array cannot contain this type +> 'type' : a native array cannot contain this type Array creation syntax was used to create an array of managed or WinRT objects. You cannot create an array of managed or WinRT objects using native array syntax. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2730.md b/docs/error-messages/compiler-errors-2/compiler-error-c2730.md index b7a014e42cd..38563bc9ea3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2730.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2730.md @@ -8,6 +8,6 @@ ms.assetid: 07f0b17a-bc8e-4d79-af5a-07a07af3687b --- # Compiler Error C2730 -'class' : cannot be a base class of itself +> 'class' : cannot be a base class of itself Recursive base classes are invalid. Specify another class as the base class. From b0a2b5c3fa5a1717871d9e6d193f52cae20b99d0 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 5 Aug 2025 22:56:33 +0800 Subject: [PATCH 1259/2255] Add "Remarks" and "Example" headings for error references in range [C2701, C2730] --- docs/error-messages/compiler-errors-2/compiler-error-c2701.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2702.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2704.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2706.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2707.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2708.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2709.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2710.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2711.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2713.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2714.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c2715.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2718.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2719.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2720.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2721.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2722.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2723.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2724.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2725.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2726.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2728.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2730.md | 2 ++ 23 files changed, 70 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2701.md b/docs/error-messages/compiler-errors-2/compiler-error-c2701.md index 7db2a0789fb..b887f887dd4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2701.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2701.md @@ -10,8 +10,12 @@ ms.assetid: 31cf2ab7-ced9-4f75-aa51-e169e20407fb > 'function': a function template cannot be a `friend` of a local class +## Remarks + A local class can't have a function template as a `friend` function. +## Example + The following sample generates C2701: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2702.md b/docs/error-messages/compiler-errors-2/compiler-error-c2702.md index 8ab3ce78de1..d391cb4cecf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2702.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2702.md @@ -10,8 +10,12 @@ ms.assetid: 6def15d4-9a8d-43e7-ae35-42d7cb57c27e > `__except` may not appear in termination block +## Remarks + An exception handler (**`__try`**/**`__except`**) cannot be nested inside a **`__finally`** block. +## Example + The following sample generates C2702: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2704.md b/docs/error-messages/compiler-errors-2/compiler-error-c2704.md index 7205c45ac0a..eaac6df6c72 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2704.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2704.md @@ -10,4 +10,6 @@ ms.assetid: 185797e2-55b5-4c11-8493-e70eb1d15a94 > 'identifier' : __va_start intrinsic only allowed in varargs +## Remarks + The `__va_start` intrinsic is used in a declaration for a function with a fixed number of arguments. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2706.md b/docs/error-messages/compiler-errors-2/compiler-error-c2706.md index c21375885ed..c602b969a42 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2706.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2706.md @@ -10,8 +10,12 @@ ms.assetid: e18da924-c42d-4b09-8e29-f4e0382d7dc6 > illegal `__except` without matching `__try` (missing '}' in `__try` block?) +## Remarks + The compiler did not find a closing brace for a **`__try`** block. +## Example + The following sample generates C2706: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2707.md b/docs/error-messages/compiler-errors-2/compiler-error-c2707.md index 3ed6aa213bb..ac228a5eff9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2707.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2707.md @@ -10,6 +10,8 @@ ms.assetid: 3deaf45c-74da-4c9d-acc6-b82412720b74 > 'identifier' : bad context for intrinsic function +## Remarks + Structured exception-handling intrinsics are invalid in certain contexts: - `_exception_code()` outside an exception filter or **`__except`** block diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2708.md b/docs/error-messages/compiler-errors-2/compiler-error-c2708.md index 5a2c8b82c6f..9b6bc30afe3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2708.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2708.md @@ -10,6 +10,8 @@ ms.assetid: d52d3088-1141-42f4-829c-74755a7fcc3a > 'identifier' : actual parameters length in bytes differs from previous call or reference +## Remarks + A [__stdcall](../../cpp/stdcall.md) function must be preceded by a prototype. Otherwise, the compiler interprets the first call to the function as a prototype and this error occurs when the compiler encounters a call that does not match. To fix this error add a function prototype. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2709.md b/docs/error-messages/compiler-errors-2/compiler-error-c2709.md index d06b72efe22..d87b78d38a7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2709.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2709.md @@ -10,4 +10,6 @@ ms.assetid: e66fc7e6-0e91-4b99-a6e0-fdb069b09fbc > 'identifier' : formal parameter's length in bytes differs from previous declaration +## Remarks + The signature in a call to the specified function differs from the prototype. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2710.md b/docs/error-messages/compiler-errors-2/compiler-error-c2710.md index c40d0161df9..fc132c7070a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2710.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2710.md @@ -10,8 +10,12 @@ ms.assetid: a2a6bb5b-86ad-4a6c-acd0-e2bef8464e0e > 'construct' : '__declspec(modifier)' can only be applied to a function returning a pointer +## Remarks + A function whose return value is a pointer is the only construct to which `modifier` can be applied. +## Example + The following sample generates C2710: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2711.md b/docs/error-messages/compiler-errors-2/compiler-error-c2711.md index d3e889d0ef7..588566439af 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2711.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2711.md @@ -10,8 +10,12 @@ ms.assetid: 9df9f808-7419-4e63-abdd-e6538ff0871f > 'function' : this function cannot be compiled as managed, consider using #pragma unmanaged +## Remarks + Some instructions will prevent the compiler from generating MSIL for the enclosing function. +## Example + The following sample generates C2711: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2713.md b/docs/error-messages/compiler-errors-2/compiler-error-c2713.md index 59ee0bf0a9e..dfd1e055817 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2713.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2713.md @@ -10,4 +10,6 @@ ms.assetid: bae9bee3-b4b8-4be5-b6a5-02df587a7278 > only one form of exception handling permitted per function +## Remarks + You can't use structured exception handling (**`__try`**/**`__except`**) and C++ exception handling (**`try`**/**`catch`**) in the same function. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2714.md b/docs/error-messages/compiler-errors-2/compiler-error-c2714.md index 95d86859dc7..1b2fb857e72 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2714.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2714.md @@ -10,10 +10,10 @@ ms.assetid: 401a5a42-660c-4bad-9d63-1a2d092bc489 > `alignof(void)` is not allowed -An invalid value was passed to an operator. - ## Remarks +An invalid value was passed to an operator. + See [`alignof` operator](../../cpp/alignof-operator.md) for more information. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2715.md b/docs/error-messages/compiler-errors-2/compiler-error-c2715.md index c4f985c864a..29d1a4e99d8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2715.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2715.md @@ -10,8 +10,12 @@ ms.assetid: c81567a7-5b65-468f-aaf9-835f91e468e4 > 'type' : cannot throw or catch this type +## Remarks + Value types are not valid arguments when using exception handling in managed code (see [Exception Handling](../../extensions/exception-handling-cpp-component-extensions.md) for more information). +## Example + ```cpp // C2715a.cpp // compile with: /clr diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2718.md b/docs/error-messages/compiler-errors-2/compiler-error-c2718.md index f483336182e..2563220a7f9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2718.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2718.md @@ -10,8 +10,12 @@ ms.assetid: 78cc71f8-c142-46fc-9aed-970635d74f0c > 'parameter': actual parameter with __declspec(align('#')) won't be aligned +## Remarks + The [align](../../cpp/align-cpp.md) **`__declspec`** modifier is not permitted on function parameters. +## Example + The following sample generates C2718: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2719.md b/docs/error-messages/compiler-errors-2/compiler-error-c2719.md index 6954b6bd4ef..f550d5e45e9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2719.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2719.md @@ -10,8 +10,12 @@ ms.assetid: ea6236d3-8286-45cc-9478-c84ad3dd3c8e > 'parameter': formal parameter with __declspec(align('#')) won't be aligned +## Remarks + The [align](../../cpp/align-cpp.md) **`__declspec`** modifier is not permitted on function parameters. Function parameter alignment is controlled by the calling convention used. For more information, see [Calling Conventions](../../cpp/calling-conventions.md). +## Example + The following sample generates C2719 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2720.md b/docs/error-messages/compiler-errors-2/compiler-error-c2720.md index 40b1afaa4e3..fb564ba7d5f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2720.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2720.md @@ -10,6 +10,8 @@ ms.assetid: 9ee3aab7-711b-4f5a-b2f1-cb62b130f1ce > '*identifier*' : '*specifier*' storage-class specifier illegal on members +## Remarks + The storage class cannot be used on class members outside the declaration. To fix this error, remove the unneeded [storage class](../../cpp/storage-classes-cpp.md) specifier from the definition of the member outside the class declaration. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2721.md b/docs/error-messages/compiler-errors-2/compiler-error-c2721.md index 55ddccc19ba..385dfe0d345 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2721.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2721.md @@ -10,4 +10,6 @@ ms.assetid: 7a97823c-3ce1-4112-8253-fc1448685235 > 'specifier' : storage-class specifier illegal between operator keyword and type +## Remarks + User-defined type conversions apply to all storage classes, so you cannot specify a storage class in a type conversion. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2722.md b/docs/error-messages/compiler-errors-2/compiler-error-c2722.md index 817b3296f47..59a01019021 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2722.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2722.md @@ -10,4 +10,6 @@ ms.assetid: 4cc2c7fa-cb12-4bcf-9df1-6d627ef62973 > '::operator' : illegal following operator command; use 'operator operator' +## Remarks + An `operator` statement redefines `::new` or `::delete`. The `new` and `delete` operators are global, so the scope resolution operator (`::`) is meaningless. Remove the `::` operator. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2723.md b/docs/error-messages/compiler-errors-2/compiler-error-c2723.md index 348cfbc15c5..930165606e7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2723.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2723.md @@ -10,8 +10,12 @@ ms.assetid: 86925601-2297-4cfd-94e2-2caf27c474c4 > 'function' : 'specifier' specifier illegal on function definition +## Remarks + The specifier cannot appear with a function definition outside of a class declaration. The **`virtual`** specifier can be specified only on a member function declaration within a class declaration. +## Example + The following sample generates C2723 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2724.md b/docs/error-messages/compiler-errors-2/compiler-error-c2724.md index 7fe9c7fc723..562f7791ed5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2724.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2724.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C2724"] > 'identifier' : 'static' should not be used on member functions defined at file scope +## Remarks + Static member functions should be declared with external linkage. +## Example + The following sample generates C2724: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2725.md b/docs/error-messages/compiler-errors-2/compiler-error-c2725.md index 695283a829f..7e52f9f01ac 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2725.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2725.md @@ -10,6 +10,8 @@ ms.assetid: 13cd5b1b-e906-4cd8-9b2b-510d587c665a > 'exception' : unable to throw or catch a managed or WinRT object by value or reference +## Remarks + The type of a managed or WinRT exception was not correct. ## Examples diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2726.md b/docs/error-messages/compiler-errors-2/compiler-error-c2726.md index 634d19c64d7..f359bc09263 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2726.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2726.md @@ -10,8 +10,12 @@ ms.assetid: f0191bb7-c175-450b-bf09-a3213db96d09 > 'gcnew' may only be used to create an object with managed or WinRT type +## Remarks + You cannot create an instance of a native type on the garbage-collected heap. +## Example + The following sample generates C2726 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2728.md b/docs/error-messages/compiler-errors-2/compiler-error-c2728.md index ea61c2b9943..08eed488b81 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2728.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2728.md @@ -10,10 +10,14 @@ ms.assetid: 65635f91-1cd1-46e4-9ad7-14726d0546af > 'type' : a native array cannot contain this type +## Remarks + Array creation syntax was used to create an array of managed or WinRT objects. You cannot create an array of managed or WinRT objects using native array syntax. For more information, see [array](../../extensions/arrays-cpp-component-extensions.md). +## Example + The following sample generates C2728 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2730.md b/docs/error-messages/compiler-errors-2/compiler-error-c2730.md index 38563bc9ea3..e33bac443cb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2730.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2730.md @@ -10,4 +10,6 @@ ms.assetid: 07f0b17a-bc8e-4d79-af5a-07a07af3687b > 'class' : cannot be a base class of itself +## Remarks + Recursive base classes are invalid. Specify another class as the base class. From f597f8c9dfd06f7043b1a97d2204f1846f14eef3 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 5 Aug 2025 22:58:00 +0800 Subject: [PATCH 1260/2255] Replace term "sample" with "example" for error references in range [C2701, C2730] --- docs/error-messages/compiler-errors-2/compiler-error-c2701.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2702.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2703.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2705.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2706.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2707.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2710.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2711.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2712.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2714.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2718.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2719.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2720.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2723.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2724.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2725.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c2726.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2728.md | 2 +- 18 files changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2701.md b/docs/error-messages/compiler-errors-2/compiler-error-c2701.md index b887f887dd4..6672028e0ce 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2701.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2701.md @@ -16,7 +16,7 @@ A local class can't have a function template as a `friend` function. ## Example -The following sample generates C2701: +The following example generates C2701: ```cpp // C2701.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2702.md b/docs/error-messages/compiler-errors-2/compiler-error-c2702.md index d391cb4cecf..d2b3d54a2d7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2702.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2702.md @@ -16,7 +16,7 @@ An exception handler (**`__try`**/**`__except`**) cannot be nested inside a **`_ ## Example -The following sample generates C2702: +The following example generates C2702: ```cpp // C2702.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2703.md b/docs/error-messages/compiler-errors-2/compiler-error-c2703.md index 113bf49c705..623d6ac1c2a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2703.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2703.md @@ -16,7 +16,7 @@ A **`__leave`** statement must be inside a **`__try`** block. ## Example -The following sample generates C2703: +The following example generates C2703: ```cpp // C2703.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2705.md b/docs/error-messages/compiler-errors-2/compiler-error-c2705.md index 39fdf0029a3..e9ec12edaac 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2705.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2705.md @@ -16,7 +16,7 @@ Execution jumps to a label within a **`try`**/**`catch`**, **`__try`**/**`__exce ## Example -The following sample generates C2705: +The following example generates C2705: ```cpp // C2705.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2706.md b/docs/error-messages/compiler-errors-2/compiler-error-c2706.md index c602b969a42..7209a543250 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2706.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2706.md @@ -16,7 +16,7 @@ The compiler did not find a closing brace for a **`__try`** block. ## Example -The following sample generates C2706: +The following example generates C2706: ```cpp // C2706.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2707.md b/docs/error-messages/compiler-errors-2/compiler-error-c2707.md index ac228a5eff9..76a5a20823f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2707.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2707.md @@ -24,7 +24,7 @@ To resolve the error, be sure that the exception-handling intrinsics are placed ## Example -The following sample generates C2707. +The following example generates C2707. ```cpp // C2707.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2710.md b/docs/error-messages/compiler-errors-2/compiler-error-c2710.md index fc132c7070a..6d8e73d9424 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2710.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2710.md @@ -16,7 +16,7 @@ A function whose return value is a pointer is the only construct to which `modif ## Example -The following sample generates C2710: +The following example generates C2710: ```cpp // C2710.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2711.md b/docs/error-messages/compiler-errors-2/compiler-error-c2711.md index 588566439af..c27eaf12bec 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2711.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2711.md @@ -16,7 +16,7 @@ Some instructions will prevent the compiler from generating MSIL for the enclosi ## Example -The following sample generates C2711: +The following example generates C2711: ```cpp // C2711.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2712.md b/docs/error-messages/compiler-errors-2/compiler-error-c2712.md index 8b1b715cb00..926c02efbc0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2712.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2712.md @@ -30,7 +30,7 @@ The **`/clr:pure`** and **`/clr:safe`** compiler options are deprecated in Visua ## Example -The following sample generates C2712 and shows how to fix it. +The following example generates C2712 and shows how to fix it. ```cpp // C2712.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2714.md b/docs/error-messages/compiler-errors-2/compiler-error-c2714.md index 1b2fb857e72..7511bd218ab 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2714.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2714.md @@ -18,7 +18,7 @@ See [`alignof` operator](../../cpp/alignof-operator.md) for more information. ## Example -The following sample generates C2714. +The following example generates C2714. ```cpp // C2714.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2718.md b/docs/error-messages/compiler-errors-2/compiler-error-c2718.md index 2563220a7f9..7f2c2f1387b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2718.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2718.md @@ -16,7 +16,7 @@ The [align](../../cpp/align-cpp.md) **`__declspec`** modifier is not permitted o ## Example -The following sample generates C2718: +The following example generates C2718: ```cpp // C2718.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2719.md b/docs/error-messages/compiler-errors-2/compiler-error-c2719.md index f550d5e45e9..2e1062c3993 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2719.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2719.md @@ -16,7 +16,7 @@ The [align](../../cpp/align-cpp.md) **`__declspec`** modifier is not permitted o ## Example -The following sample generates C2719 and shows how to fix it: +The following example generates C2719 and shows how to fix it: ```cpp // C2719.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2720.md b/docs/error-messages/compiler-errors-2/compiler-error-c2720.md index fb564ba7d5f..6e0cbaab448 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2720.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2720.md @@ -16,7 +16,7 @@ The storage class cannot be used on class members outside the declaration. To fi ## Example -The following sample generates C2720 and shows how to fix it: +The following example generates C2720 and shows how to fix it: ```cpp // C2720.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2723.md b/docs/error-messages/compiler-errors-2/compiler-error-c2723.md index 930165606e7..6d2a1a70dd8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2723.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2723.md @@ -16,7 +16,7 @@ The specifier cannot appear with a function definition outside of a class declar ## Example -The following sample generates C2723 and shows how to fix it: +The following example generates C2723 and shows how to fix it: ```cpp // C2723.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2724.md b/docs/error-messages/compiler-errors-2/compiler-error-c2724.md index 562f7791ed5..21e3b41693d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2724.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2724.md @@ -15,7 +15,7 @@ Static member functions should be declared with external linkage. ## Example -The following sample generates C2724: +The following example generates C2724: ```cpp // C2724.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2725.md b/docs/error-messages/compiler-errors-2/compiler-error-c2725.md index 7e52f9f01ac..e500613b2c6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2725.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2725.md @@ -16,7 +16,7 @@ The type of a managed or WinRT exception was not correct. ## Examples -The following sample generates C2725 and shows how to fix it. +The following example generates C2725 and shows how to fix it. ```cpp // C2725.cpp @@ -35,7 +35,7 @@ int main() { } ``` -The following sample generates C2725 and shows how to fix it. +The following example generates C2725 and shows how to fix it. ```cpp // C2725b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2726.md b/docs/error-messages/compiler-errors-2/compiler-error-c2726.md index f359bc09263..42a2a207ced 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2726.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2726.md @@ -16,7 +16,7 @@ You cannot create an instance of a native type on the garbage-collected heap. ## Example -The following sample generates C2726 and shows how to fix it: +The following example generates C2726 and shows how to fix it: ```cpp // C2726.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2728.md b/docs/error-messages/compiler-errors-2/compiler-error-c2728.md index 08eed488b81..6aa45f9c904 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2728.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2728.md @@ -18,7 +18,7 @@ For more information, see [array](../../extensions/arrays-cpp-component-extensio ## Example -The following sample generates C2728 and shows how to fix it: +The following example generates C2728 and shows how to fix it: ```cpp // C2728.cpp From 19a1730bfb314e1378760d67d789c19d2b6be67f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 5 Aug 2025 23:02:17 +0800 Subject: [PATCH 1261/2255] Update metadata for error references in range [C2701, C2730] --- .../error-messages/compiler-errors-2/compiler-error-c2701.md | 3 +-- .../error-messages/compiler-errors-2/compiler-error-c2702.md | 1 - .../error-messages/compiler-errors-2/compiler-error-c2703.md | 1 - .../error-messages/compiler-errors-2/compiler-error-c2704.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2705.md | 1 - .../error-messages/compiler-errors-2/compiler-error-c2706.md | 1 - .../error-messages/compiler-errors-2/compiler-error-c2707.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2708.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2709.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2710.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2711.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2712.md | 1 - .../error-messages/compiler-errors-2/compiler-error-c2713.md | 1 - .../error-messages/compiler-errors-2/compiler-error-c2714.md | 3 +-- .../error-messages/compiler-errors-2/compiler-error-c2715.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2718.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2719.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2720.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2721.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2722.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2723.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2725.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2726.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2728.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2730.md | 5 ++--- 25 files changed, 36 insertions(+), 61 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2701.md b/docs/error-messages/compiler-errors-2/compiler-error-c2701.md index 6672028e0ce..6d038a0270c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2701.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2701.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2701" title: "Compiler Error C2701" +description: "Learn more about: Compiler Error C2701" ms.date: 09/27/2022 f1_keywords: ["C2701"] helpviewer_keywords: ["C2701"] -ms.assetid: 31cf2ab7-ced9-4f75-aa51-e169e20407fb --- # Compiler Error C2701 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2702.md b/docs/error-messages/compiler-errors-2/compiler-error-c2702.md index d2b3d54a2d7..d552a512152 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2702.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2702.md @@ -4,7 +4,6 @@ description: "Describes Microsoft C/C++ compiler error C2702." ms.date: 08/25/2020 f1_keywords: ["C2702"] helpviewer_keywords: ["C2702"] -ms.assetid: 6def15d4-9a8d-43e7-ae35-42d7cb57c27e --- # Compiler Error C2702 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2703.md b/docs/error-messages/compiler-errors-2/compiler-error-c2703.md index 623d6ac1c2a..87adbc90511 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2703.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2703.md @@ -4,7 +4,6 @@ description: "Describes Microsoft C/C++ compiler error C2703." ms.date: 08/24/2020 f1_keywords: ["C2703"] helpviewer_keywords: ["C2703"] -ms.assetid: 384295c3-643d-47ae-a9a6-865b3036aa84 --- # Compiler Error C2703 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2704.md b/docs/error-messages/compiler-errors-2/compiler-error-c2704.md index eaac6df6c72..4d231d20a99 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2704.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2704.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2704" title: "Compiler Error C2704" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2704" +ms.date: 11/04/2016 f1_keywords: ["C2704"] helpviewer_keywords: ["C2704"] -ms.assetid: 185797e2-55b5-4c11-8493-e70eb1d15a94 --- # Compiler Error C2704 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2705.md b/docs/error-messages/compiler-errors-2/compiler-error-c2705.md index e9ec12edaac..d080e7a213e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2705.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2705.md @@ -4,7 +4,6 @@ description: "Describes Microsoft C/C++ compiler error C2705." ms.date: 08/25/2020 f1_keywords: ["C2705"] helpviewer_keywords: ["C2705"] -ms.assetid: 29249ea3-4ea7-4105-944b-bdb83e8d6852 --- # Compiler Error C2705 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2706.md b/docs/error-messages/compiler-errors-2/compiler-error-c2706.md index 7209a543250..0490d7807ca 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2706.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2706.md @@ -4,7 +4,6 @@ description: "Describes Microsoft C/C++ compiler error C2706." ms.date: 08/25/2020 f1_keywords: ["C2706"] helpviewer_keywords: ["C2706"] -ms.assetid: e18da924-c42d-4b09-8e29-f4e0382d7dc6 --- # Compiler Error C2706 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2707.md b/docs/error-messages/compiler-errors-2/compiler-error-c2707.md index 76a5a20823f..3bfc8a90ae7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2707.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2707.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2707" title: "Compiler Error C2707" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2707" +ms.date: 11/04/2016 f1_keywords: ["C2707"] helpviewer_keywords: ["C2707"] -ms.assetid: 3deaf45c-74da-4c9d-acc6-b82412720b74 --- # Compiler Error C2707 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2708.md b/docs/error-messages/compiler-errors-2/compiler-error-c2708.md index 9b6bc30afe3..a8b2f3d6500 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2708.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2708.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2708" title: "Compiler Error C2708" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2708" +ms.date: 11/04/2016 f1_keywords: ["C2708"] helpviewer_keywords: ["C2708"] -ms.assetid: d52d3088-1141-42f4-829c-74755a7fcc3a --- # Compiler Error C2708 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2709.md b/docs/error-messages/compiler-errors-2/compiler-error-c2709.md index d87b78d38a7..36a2376616d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2709.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2709.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2709" title: "Compiler Error C2709" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2709" +ms.date: 11/04/2016 f1_keywords: ["C2709"] helpviewer_keywords: ["C2709"] -ms.assetid: e66fc7e6-0e91-4b99-a6e0-fdb069b09fbc --- # Compiler Error C2709 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2710.md b/docs/error-messages/compiler-errors-2/compiler-error-c2710.md index 6d8e73d9424..3019c67c1ca 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2710.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2710.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2710" title: "Compiler Error C2710" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2710" +ms.date: 11/04/2016 f1_keywords: ["C2710"] helpviewer_keywords: ["C2710"] -ms.assetid: a2a6bb5b-86ad-4a6c-acd0-e2bef8464e0e --- # Compiler Error C2710 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2711.md b/docs/error-messages/compiler-errors-2/compiler-error-c2711.md index c27eaf12bec..a0b44f38278 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2711.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2711.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2711" title: "Compiler Error C2711" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2711" +ms.date: 11/04/2016 f1_keywords: ["C2711"] helpviewer_keywords: ["C2711"] -ms.assetid: 9df9f808-7419-4e63-abdd-e6538ff0871f --- # Compiler Error C2711 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2712.md b/docs/error-messages/compiler-errors-2/compiler-error-c2712.md index 926c02efbc0..b1caf1ca2da 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2712.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2712.md @@ -4,7 +4,6 @@ description: "Describes Microsoft C/C++ compiler error C2712." ms.date: 08/25/2020 f1_keywords: ["C2712"] helpviewer_keywords: ["C2712"] -ms.assetid: f7d4ffcc-7ed2-459b-8067-a728ce647071 --- # Compiler Error C2712 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2713.md b/docs/error-messages/compiler-errors-2/compiler-error-c2713.md index dfd1e055817..65eeed13bdc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2713.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2713.md @@ -4,7 +4,6 @@ description: "Describes Microsoft C/C++ compiler error C2713." ms.date: 08/25/2020 f1_keywords: ["C2713"] helpviewer_keywords: ["C2713"] -ms.assetid: bae9bee3-b4b8-4be5-b6a5-02df587a7278 --- # Compiler Error C2713 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2714.md b/docs/error-messages/compiler-errors-2/compiler-error-c2714.md index 7511bd218ab..c876015451b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2714.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2714.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2714" title: "Compiler Error C2714" +description: "Learn more about: Compiler Error C2714" ms.date: 07/22/2020 f1_keywords: ["C2714"] helpviewer_keywords: ["C2714"] -ms.assetid: 401a5a42-660c-4bad-9d63-1a2d092bc489 --- # Compiler Error C2714 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2715.md b/docs/error-messages/compiler-errors-2/compiler-error-c2715.md index 29d1a4e99d8..86f7e5ce731 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2715.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2715.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2715" title: "Compiler Error C2715" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2715" +ms.date: 11/04/2016 f1_keywords: ["C2715"] helpviewer_keywords: ["C2715"] -ms.assetid: c81567a7-5b65-468f-aaf9-835f91e468e4 --- # Compiler Error C2715 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2718.md b/docs/error-messages/compiler-errors-2/compiler-error-c2718.md index 7f2c2f1387b..180afef6eac 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2718.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2718.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2718" title: "Compiler Error C2718" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2718" +ms.date: 11/04/2016 f1_keywords: ["C2718"] helpviewer_keywords: ["C2718"] -ms.assetid: 78cc71f8-c142-46fc-9aed-970635d74f0c --- # Compiler Error C2718 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2719.md b/docs/error-messages/compiler-errors-2/compiler-error-c2719.md index 2e1062c3993..6df11d9414e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2719.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2719.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2719" title: "Compiler Error C2719" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2719" +ms.date: 11/04/2016 f1_keywords: ["C2719"] helpviewer_keywords: ["C2719"] -ms.assetid: ea6236d3-8286-45cc-9478-c84ad3dd3c8e --- # Compiler Error C2719 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2720.md b/docs/error-messages/compiler-errors-2/compiler-error-c2720.md index 6e0cbaab448..66fd999f7a3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2720.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2720.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2720" title: "Compiler Error C2720" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2720" +ms.date: 11/04/2016 f1_keywords: ["C2720"] helpviewer_keywords: ["C2720"] -ms.assetid: 9ee3aab7-711b-4f5a-b2f1-cb62b130f1ce --- # Compiler Error C2720 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2721.md b/docs/error-messages/compiler-errors-2/compiler-error-c2721.md index 385dfe0d345..2bfd272ae2c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2721.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2721.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2721" title: "Compiler Error C2721" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2721" +ms.date: 11/04/2016 f1_keywords: ["C2721"] helpviewer_keywords: ["C2721"] -ms.assetid: 7a97823c-3ce1-4112-8253-fc1448685235 --- # Compiler Error C2721 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2722.md b/docs/error-messages/compiler-errors-2/compiler-error-c2722.md index 59a01019021..892e345c5cc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2722.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2722.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2722" title: "Compiler Error C2722" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2722" +ms.date: 11/04/2016 f1_keywords: ["C2722"] helpviewer_keywords: ["C2722"] -ms.assetid: 4cc2c7fa-cb12-4bcf-9df1-6d627ef62973 --- # Compiler Error C2722 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2723.md b/docs/error-messages/compiler-errors-2/compiler-error-c2723.md index 6d2a1a70dd8..b878410fa11 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2723.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2723.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2723" title: "Compiler Error C2723" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2723" +ms.date: 11/04/2016 f1_keywords: ["C2723"] helpviewer_keywords: ["C2723"] -ms.assetid: 86925601-2297-4cfd-94e2-2caf27c474c4 --- # Compiler Error C2723 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2725.md b/docs/error-messages/compiler-errors-2/compiler-error-c2725.md index e500613b2c6..ef72d45e281 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2725.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2725.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2725" title: "Compiler Error C2725" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2725" +ms.date: 11/04/2016 f1_keywords: ["C2725"] helpviewer_keywords: ["C2725"] -ms.assetid: 13cd5b1b-e906-4cd8-9b2b-510d587c665a --- # Compiler Error C2725 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2726.md b/docs/error-messages/compiler-errors-2/compiler-error-c2726.md index 42a2a207ced..22aa1b52408 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2726.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2726.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2726" title: "Compiler Error C2726" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2726" +ms.date: 11/04/2016 f1_keywords: ["C2726"] helpviewer_keywords: ["C2726"] -ms.assetid: f0191bb7-c175-450b-bf09-a3213db96d09 --- # Compiler Error C2726 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2728.md b/docs/error-messages/compiler-errors-2/compiler-error-c2728.md index 6aa45f9c904..8300ece3561 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2728.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2728.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2728" title: "Compiler Error C2728" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2728" +ms.date: 11/04/2016 f1_keywords: ["C2728"] helpviewer_keywords: ["C2728"] -ms.assetid: 65635f91-1cd1-46e4-9ad7-14726d0546af --- # Compiler Error C2728 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2730.md b/docs/error-messages/compiler-errors-2/compiler-error-c2730.md index e33bac443cb..f06cf3b7fed 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2730.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2730.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2730" title: "Compiler Error C2730" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2730" +ms.date: 11/04/2016 f1_keywords: ["C2730"] helpviewer_keywords: ["C2730"] -ms.assetid: 07f0b17a-bc8e-4d79-af5a-07a07af3687b --- # Compiler Error C2730 From a5a95ab57d839e1822a1f1aa129decdc3c916472 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 6 Aug 2025 17:05:25 +0800 Subject: [PATCH 1262/2255] Add backticks in `/ZW` flag reference topic --- docs/build/reference/zw-windows-runtime-compilation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/zw-windows-runtime-compilation.md b/docs/build/reference/zw-windows-runtime-compilation.md index 6bba2c712c5..e841d78b070 100644 --- a/docs/build/reference/zw-windows-runtime-compilation.md +++ b/docs/build/reference/zw-windows-runtime-compilation.md @@ -32,7 +32,7 @@ When you specify the **`/ZW`** option, the compiler supports these features: - Automatic reference-counting of Windows Runtime objects, and automatic discarding of an object when its reference count goes to zero. -Because the incremental linker doesn't support the Windows metadata included in .obj files by using the **`/ZW`** option, the deprecated [/Gm (Enable Minimal Rebuild)](gm-enable-minimal-rebuild.md) option is incompatible with **`/ZW`**. +Because the incremental linker doesn't support the Windows metadata included in `.obj` files by using the **`/ZW`** option, the deprecated [`/Gm` (Enable Minimal Rebuild)](gm-enable-minimal-rebuild.md) option is incompatible with **`/ZW`**. For more information, see [Visual C++ Language Reference](../../cppcx/visual-c-language-reference-c-cx.md). From 2eda1717e8734984bc65d8037bbd62c4237c07c1 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 6 Aug 2025 17:06:32 +0800 Subject: [PATCH 1263/2255] Add and update links in `/ZW` flag reference topic --- docs/build/reference/zw-windows-runtime-compilation.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/build/reference/zw-windows-runtime-compilation.md b/docs/build/reference/zw-windows-runtime-compilation.md index e841d78b070..75d3bf91695 100644 --- a/docs/build/reference/zw-windows-runtime-compilation.md +++ b/docs/build/reference/zw-windows-runtime-compilation.md @@ -9,8 +9,8 @@ helpviewer_keywords: ["/ZW", "-ZW compiler option", "/ZW compiler option", "-ZW" Compiles source code to support Microsoft C++ component extensions C++/CX for the creation of Universal Windows Platform (UWP) apps. -When you use **`/ZW`** to compile, always specify **`/EHsc`** as well.\ -**`/ZW`** isn't compatible with **`/std:c++20`**. +When you use **`/ZW`** to compile, always specify [`/EHsc`](eh-exception-handling-model.md) as well.\ +**`/ZW`** isn't compatible with [`/std:c++20`](std-specify-language-standard-version.md). ## Syntax @@ -34,7 +34,7 @@ When you specify the **`/ZW`** option, the compiler supports these features: Because the incremental linker doesn't support the Windows metadata included in `.obj` files by using the **`/ZW`** option, the deprecated [`/Gm` (Enable Minimal Rebuild)](gm-enable-minimal-rebuild.md) option is incompatible with **`/ZW`**. -For more information, see [Visual C++ Language Reference](../../cppcx/visual-c-language-reference-c-cx.md). +For more information, see [C++/CX Language Reference](../../cppcx/visual-c-language-reference-c-cx.md). ## Requirements From 26c3ff3702f9250a7c74b2c038ba0c9817bfa4df Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 6 Aug 2025 17:07:10 +0800 Subject: [PATCH 1264/2255] Remove empty "Requirements" section and small tweak in `/ZW` flag reference topic --- docs/build/reference/zw-windows-runtime-compilation.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/build/reference/zw-windows-runtime-compilation.md b/docs/build/reference/zw-windows-runtime-compilation.md index 75d3bf91695..a3e1564b395 100644 --- a/docs/build/reference/zw-windows-runtime-compilation.md +++ b/docs/build/reference/zw-windows-runtime-compilation.md @@ -21,7 +21,7 @@ When you use **`/ZW`** to compile, always specify [`/EHsc`](eh-exception-handlin ## Arguments -**`nostdlib`**\ +*`nostdlib`*\ Indicates that `Platform.winmd`, `Windows.Foundation.winmd`, and other default Windows metadata (`.winmd`) files aren't automatically included in the compilation. Instead, you must use the [`/FU` (Name Forced #using File)](fu-name-forced-hash-using-file.md) compiler option to explicitly specify Windows metadata files. ## Remarks @@ -36,8 +36,6 @@ Because the incremental linker doesn't support the Windows metadata included in For more information, see [C++/CX Language Reference](../../cppcx/visual-c-language-reference-c-cx.md). -## Requirements - ## See also [MSVC Compiler Options](compiler-options.md)\ From 2bf62d6d1100a851f1bff7ecb74c382f39eb2749 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 6 Aug 2025 17:07:37 +0800 Subject: [PATCH 1265/2255] Remove `cpp` language from syntax code block in `/ZW` flag reference topic --- docs/build/reference/zw-windows-runtime-compilation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/zw-windows-runtime-compilation.md b/docs/build/reference/zw-windows-runtime-compilation.md index a3e1564b395..95d63422396 100644 --- a/docs/build/reference/zw-windows-runtime-compilation.md +++ b/docs/build/reference/zw-windows-runtime-compilation.md @@ -14,7 +14,7 @@ When you use **`/ZW`** to compile, always specify [`/EHsc`](eh-exception-handlin ## Syntax -```cpp +``` /ZW /EHsc /ZW:nostdlib /EHsc ``` From ac9f5ffdf046d456ebf7c21241559ef590ff9e23 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 6 Aug 2025 17:08:30 +0800 Subject: [PATCH 1266/2255] Clarify that `/ZW` is incompatible with `/std:c++20` or later in `/ZW` flag reference topic --- docs/build/reference/zw-windows-runtime-compilation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/zw-windows-runtime-compilation.md b/docs/build/reference/zw-windows-runtime-compilation.md index 95d63422396..78f5a55ae28 100644 --- a/docs/build/reference/zw-windows-runtime-compilation.md +++ b/docs/build/reference/zw-windows-runtime-compilation.md @@ -10,7 +10,7 @@ helpviewer_keywords: ["/ZW", "-ZW compiler option", "/ZW compiler option", "-ZW" Compiles source code to support Microsoft C++ component extensions C++/CX for the creation of Universal Windows Platform (UWP) apps. When you use **`/ZW`** to compile, always specify [`/EHsc`](eh-exception-handling-model.md) as well.\ -**`/ZW`** isn't compatible with [`/std:c++20`](std-specify-language-standard-version.md). +**`/ZW`** isn't compatible with [`/std:c++20`](std-specify-language-standard-version.md) or later. ## Syntax From 8877d14ec4f58c912e0da096ed98208033be4a43 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 6 Aug 2025 17:09:01 +0800 Subject: [PATCH 1267/2255] Move `title` metadata above `description` in `/ZW` flag reference topic --- docs/build/reference/zw-windows-runtime-compilation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/zw-windows-runtime-compilation.md b/docs/build/reference/zw-windows-runtime-compilation.md index 78f5a55ae28..b535b3e7c78 100644 --- a/docs/build/reference/zw-windows-runtime-compilation.md +++ b/docs/build/reference/zw-windows-runtime-compilation.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: /ZW (Windows Runtime Compilation)" title: "/ZW (Windows Runtime Compilation)" +description: "Learn more about: /ZW (Windows Runtime Compilation)" ms.date: 06/22/2023 f1_keywords: ["VC.Project.VCCLCompilerTool.CompileAsWinRT", "/zw"] helpviewer_keywords: ["/ZW", "-ZW compiler option", "/ZW compiler option", "-ZW", "Windows Runtime compiler option"] From b62f7c56ce73780c20c45344a5e96975bd8aa5ad Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 6 Aug 2025 17:49:23 +0800 Subject: [PATCH 1268/2255] Clean up empty "Requirements" headings --- docs/c-runtime-library/setjmp3.md | 2 -- docs/cppcx/operator-type-hat.md | 2 -- docs/cppcx/operator-windows-ui-xaml-interop-typename.md | 2 -- docs/cppcx/platform-ibox-interface.md | 2 -- 4 files changed, 8 deletions(-) diff --git a/docs/c-runtime-library/setjmp3.md b/docs/c-runtime-library/setjmp3.md index 05fbacbc026..48049558c60 100644 --- a/docs/c-runtime-library/setjmp3.md +++ b/docs/c-runtime-library/setjmp3.md @@ -43,8 +43,6 @@ Always returns 0. Don't use this function in a C++ program. It's an intrinsic function that doesn't support C++. For more information about how to use `setjmp`, see [Using setjmp/longjmp](../cpp/using-setjmp-longjmp.md). -## Requirements - ## See also [Alphabetical function reference](./reference/crt-alphabetical-function-reference.md)\ diff --git a/docs/cppcx/operator-type-hat.md b/docs/cppcx/operator-type-hat.md index 658cfdad71f..2417ad92e76 100644 --- a/docs/cppcx/operator-type-hat.md +++ b/docs/cppcx/operator-type-hat.md @@ -42,8 +42,6 @@ Type^ tx2 = (Type^)(tn); .NET Framework programs project `TypeName` as -### Requirements - ## See also [operator Windows::UI::Xaml::Interop::TypeName](../cppcx/operator-windows-ui-xaml-interop-typename.md)
diff --git a/docs/cppcx/operator-windows-ui-xaml-interop-typename.md b/docs/cppcx/operator-windows-ui-xaml-interop-typename.md index 750e6301a96..fae1128437d 100644 --- a/docs/cppcx/operator-windows-ui-xaml-interop-typename.md +++ b/docs/cppcx/operator-windows-ui-xaml-interop-typename.md @@ -42,8 +42,6 @@ Type^ tx2 = (Type^)(tn); .NET Framework programs project `TypeName` as [System.Type](/dotnet/api/system.type). -### Requirements - ## See also [operator Windows::UI::Xaml::Interop::TypeName](../cppcx/operator-windows-ui-xaml-interop-typename.md)
diff --git a/docs/cppcx/platform-ibox-interface.md b/docs/cppcx/platform-ibox-interface.md index bf606fcf34c..c57a1f3a43a 100644 --- a/docs/cppcx/platform-ibox-interface.md +++ b/docs/cppcx/platform-ibox-interface.md @@ -26,8 +26,6 @@ The type of the boxed value. The `IBox` interface is primarily used internally to represent nullable value types, as described in [Value classes and structs (C++/CX)](../cppcx/value-classes-and-structs-c-cx.md). The interface is also used to box value types that are passed to C++ methods that take parameters of type `Object^`. You can explicitly declare an input parameter as `IBox`. For an example, see [Boxing](../cppcx/boxing-c-cx.md). -### Requirements - ### Members The `Platform::IBox` interface inherits from the [Platform::IValueType](../cppcx/platform-ivaluetype-interface.md) interface. `IBox` has these members: From 3b7df36f120b65ac57c66d833f80ef8f4438bf73 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 6 Aug 2025 17:51:13 +0800 Subject: [PATCH 1269/2255] Update metadata in 4 topics --- docs/c-runtime-library/setjmp3.md | 5 ++--- docs/cppcx/operator-type-hat.md | 5 ++--- docs/cppcx/operator-windows-ui-xaml-interop-typename.md | 5 ++--- docs/cppcx/platform-ibox-interface.md | 5 ++--- 4 files changed, 8 insertions(+), 12 deletions(-) diff --git a/docs/c-runtime-library/setjmp3.md b/docs/c-runtime-library/setjmp3.md index 48049558c60..d406921ec9d 100644 --- a/docs/c-runtime-library/setjmp3.md +++ b/docs/c-runtime-library/setjmp3.md @@ -1,14 +1,13 @@ --- -description: "Learn more about: _setjmp3" title: "_setjmp3" -ms.date: "1/14/2021" +description: "Learn more about: _setjmp3" +ms.date: 1/14/2021 api_name: ["_setjmp3"] api_location: ["msvcrt.dll", "msvcr90.dll", "msvcr110.dll", "msvcr80.dll", "msvcr110_clr0400.dll", "msvcr100.dll", "msvcr120.dll"] api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["setjmp3", "_setjmp3"] helpviewer_keywords: ["_setjmp3 function", "setjmp3 function"] -ms.assetid: 6129c2f3-8bac-4fdb-a827-44e1eebba500 --- # `_setjmp3` diff --git a/docs/cppcx/operator-type-hat.md b/docs/cppcx/operator-type-hat.md index 2417ad92e76..238e11d9715 100644 --- a/docs/cppcx/operator-type-hat.md +++ b/docs/cppcx/operator-type-hat.md @@ -1,8 +1,7 @@ --- -description: "Learn more about: operator Type^" title: "operator Type^" -ms.date: "12/30/2016" -ms.assetid: b24ffc83-0780-4f9a-8ee0-f5725db339d1 +description: "Learn more about: operator Type^" +ms.date: 12/30/2016 --- # operator Type^ diff --git a/docs/cppcx/operator-windows-ui-xaml-interop-typename.md b/docs/cppcx/operator-windows-ui-xaml-interop-typename.md index fae1128437d..0e585769a5e 100644 --- a/docs/cppcx/operator-windows-ui-xaml-interop-typename.md +++ b/docs/cppcx/operator-windows-ui-xaml-interop-typename.md @@ -1,8 +1,7 @@ --- -description: "Learn more about: operator Windows::UI::Xaml::Interop::TypeName" title: "operator Windows::UI::Xaml::Interop::TypeName" -ms.date: "12/30/2016" -ms.assetid: a65a105e-7e3a-452f-932f-2cdaf00fbba5 +description: "Learn more about: operator Windows::UI::Xaml::Interop::TypeName" +ms.date: 12/30/2016 --- # operator Windows::UI::Xaml::Interop::TypeName diff --git a/docs/cppcx/platform-ibox-interface.md b/docs/cppcx/platform-ibox-interface.md index c57a1f3a43a..fdc629b0e21 100644 --- a/docs/cppcx/platform-ibox-interface.md +++ b/docs/cppcx/platform-ibox-interface.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Platform::IBox Interface" title: "Platform::IBox Interface" -ms.date: "12/30/2016" +description: "Learn more about: Platform::IBox Interface" +ms.date: 12/30/2016 ms.topic: "reference" f1_keywords: ["VCCORLIB/Namespace not found::Platform", "VCCORLIB/Namespace not found::Platform::Value"] -ms.assetid: 774df45d-f8a7-45a3-ae24-eecc3c681040 --- # Platform::IBox Interface From 1fa294bfc790250d7a1828c47e21dc3e36f81a9b Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 6 Aug 2025 18:14:52 +0800 Subject: [PATCH 1270/2255] Rectify mismatched warning link text and link --- docs/code-quality/c26498.md | 2 +- docs/code-quality/code-analysis-for-cpp-corecheck.md | 2 +- docs/preprocessor/compiler-warnings-that-are-off-by-default.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/code-quality/c26498.md b/docs/code-quality/c26498.md index 417a4254275..fe3de0e6325 100644 --- a/docs/code-quality/c26498.md +++ b/docs/code-quality/c26498.md @@ -58,6 +58,6 @@ void foo() ## See also -[C26497](c26407.md)\ +[C26497](c26497.md)\ [C26814](c26814.md)\ [Con.5: Use `constexpr` for values that can be computed at compile time](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-constexpr) diff --git a/docs/code-quality/code-analysis-for-cpp-corecheck.md b/docs/code-quality/code-analysis-for-cpp-corecheck.md index 82158f2233b..a70fc634739 100644 --- a/docs/code-quality/code-analysis-for-cpp-corecheck.md +++ b/docs/code-quality/code-analysis-for-cpp-corecheck.md @@ -214,7 +214,7 @@ Do not use function style C-casts. See [C++ Core Guidelines ES.49](https://isocp [C26490 NO_REINTERPRET_CAST](c26490.md)\ Don't use `reinterpret_cast`. See [C++ Core Guidelines Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-reinterpretcast). -[C26491 NO_STATIC_DOWNCAST](c26490.md)\ +[C26491 NO_STATIC_DOWNCAST](c26491.md)\ Don't use `static_cast` downcasts. See [C++ Core Guidelines Type.2](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-downcast). [C26492 NO_CONST_CAST](c26492.md)\ diff --git a/docs/preprocessor/compiler-warnings-that-are-off-by-default.md b/docs/preprocessor/compiler-warnings-that-are-off-by-default.md index 96a31c29833..04ffb783279 100644 --- a/docs/preprocessor/compiler-warnings-that-are-off-by-default.md +++ b/docs/preprocessor/compiler-warnings-that-are-off-by-default.md @@ -168,7 +168,7 @@ The following warnings are turned off by default in Visual Studio 2019 and later | C5220 (level 4) | '*member*': a non-static data member with a volatile qualified type no longer implies that
compiler generated copy/move constructors and copy/move assignment operators are not trivial 16.7 | | C5233 (level 4) | explicit lambda capture '*identifier*' is not used 16.10 | | [C5240 (level 4)](../error-messages/compiler-warnings/c5240.md) | '*attribute-name*': attribute is ignored in this syntactic position 16.10 | -| [C5243 (level 1)](../error-messages/compiler-warnings/c5247.md) | '*type-name*': using incomplete class '*class-name*' can cause potential one definition rule violation due to ABI limitation 16.10 | +| [C5243 (level 1)](../error-messages/compiler-warnings/c5243.md) | '*type-name*': using incomplete class '*class-name*' can cause potential one definition rule violation due to ABI limitation 16.10 | | C5245 (level 4) | '*function*': unreferenced function with internal linkage has been removed | | C5246 (level 1) | '*member*': the initialization of a subobject should be wrapped in braces 16.10 | | [C5247 (level 1)](../error-messages/compiler-warnings/c5247.md) | Section '*section-name*' is reserved for C++ dynamic initialization. Manually creating the section will interfere with C++ dynamic initialization and may lead to undefined behavior 16.11 | From 2584684ac54de625ddb2fa9a454d49300c7afd60 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 6 Aug 2025 18:16:07 +0800 Subject: [PATCH 1271/2255] Update metadata in 2 topics --- docs/code-quality/c26498.md | 2 +- docs/code-quality/code-analysis-for-cpp-corecheck.md | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/code-quality/c26498.md b/docs/code-quality/c26498.md index fe3de0e6325..7bb0edb9750 100644 --- a/docs/code-quality/c26498.md +++ b/docs/code-quality/c26498.md @@ -1,5 +1,5 @@ --- -title: Warning C26498 +title: "Warning C26498" description: "Learn more about: Warning C26498 USE_CONSTEXPR_FOR_FUNCTIONCALL" ms.date: 08/18/2020 f1_keywords: ["C26498", "USE_CONSTEXPR_FOR_FUNCTIONCALL"] diff --git a/docs/code-quality/code-analysis-for-cpp-corecheck.md b/docs/code-quality/code-analysis-for-cpp-corecheck.md index a70fc634739..c57ae64393f 100644 --- a/docs/code-quality/code-analysis-for-cpp-corecheck.md +++ b/docs/code-quality/code-analysis-for-cpp-corecheck.md @@ -1,11 +1,10 @@ --- +title: "C++ Core Guidelines checker reference" description: "Learn more about: C++ Core Guidelines checker reference" -title: C++ Core Guidelines checker reference ms.date: 03/22/2018 ms.topic: reference helpviewer_keywords: - "code analysis, C++ core check" -ms.assetid: f1429463-136e-41ed-8a75-a8dbf0b4fd89 --- # C++ Core Guidelines checker reference From 2fa003c236e32bbd01f5811d29b9c87c7871edf9 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 6 Aug 2025 18:52:35 +0800 Subject: [PATCH 1272/2255] Elide some wrong uses of `/c` flag in C runtime library --- .../reference/cprintf-cprintf-l-cwprintf-cwprintf-l.md | 1 - .../reference/cprintf-s-cprintf-s-l-cwprintf-s-cwprintf-s-l.md | 1 - .../reference/cscanf-s-cscanf-s-l-cwscanf-s-cwscanf-s-l.md | 1 - docs/c-runtime-library/reference/cwait.md | 1 - docs/c-runtime-library/reference/getch-getwch.md | 1 - docs/c-runtime-library/reference/getch-nolock-getwch-nolock.md | 1 - docs/c-runtime-library/reference/getche-getwche.md | 1 - .../c-runtime-library/reference/getche-nolock-getwche-nolock.md | 1 - docs/c-runtime-library/reference/getdiskfree.md | 2 +- docs/c-runtime-library/reference/getdrive.md | 1 - docs/c-runtime-library/reference/kbhit.md | 1 - docs/c-runtime-library/reference/set-error-mode.md | 2 +- .../ungetch-ungetwch-ungetch-nolock-ungetwch-nolock.md | 1 - .../vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md | 2 +- .../reference/vcprintf-vcprintf-l-vcwprintf-vcwprintf-l.md | 2 +- 15 files changed, 4 insertions(+), 15 deletions(-) diff --git a/docs/c-runtime-library/reference/cprintf-cprintf-l-cwprintf-cwprintf-l.md b/docs/c-runtime-library/reference/cprintf-cprintf-l-cwprintf-cwprintf-l.md index 55418b0ad26..1d39021b00b 100644 --- a/docs/c-runtime-library/reference/cprintf-cprintf-l-cwprintf-cwprintf-l.md +++ b/docs/c-runtime-library/reference/cprintf-cprintf-l-cwprintf-cwprintf-l.md @@ -85,7 +85,6 @@ For more compatibility information, see [Compatibility](../compatibility.md). ```C // crt_cprintf.c -// compile with: /c // This program displays some variables to the console. #include diff --git a/docs/c-runtime-library/reference/cprintf-s-cprintf-s-l-cwprintf-s-cwprintf-s-l.md b/docs/c-runtime-library/reference/cprintf-s-cprintf-s-l-cwprintf-s-cwprintf-s-l.md index 0c80a6f0680..3dc9149a342 100644 --- a/docs/c-runtime-library/reference/cprintf-s-cprintf-s-l-cwprintf-s-cwprintf-s-l.md +++ b/docs/c-runtime-library/reference/cprintf-s-cprintf-s-l-cwprintf-s-cwprintf-s-l.md @@ -93,7 +93,6 @@ All versions of the [C run-time libraries](../crt-library-features.md). ```C // crt_cprintf_s.c -// compile with: /c // This program displays some variables to the console. #include diff --git a/docs/c-runtime-library/reference/cscanf-s-cscanf-s-l-cwscanf-s-cwscanf-s-l.md b/docs/c-runtime-library/reference/cscanf-s-cscanf-s-l-cwscanf-s-cwscanf-s-l.md index 87dac808b60..9a686228d90 100644 --- a/docs/c-runtime-library/reference/cscanf-s-cscanf-s-l-cwscanf-s-cwscanf-s-l.md +++ b/docs/c-runtime-library/reference/cscanf-s-cscanf-s-l-cwscanf-s-cwscanf-s-l.md @@ -92,7 +92,6 @@ All versions of the [C run-time libraries](../crt-library-features.md). ```C // crt_cscanf_s.c -// compile with: /c /* This program prompts for a string * and uses _cscanf_s to read in the response. * Then _cscanf_s returns the number of items diff --git a/docs/c-runtime-library/reference/cwait.md b/docs/c-runtime-library/reference/cwait.md index aeaaad8adc5..3bbde03daf5 100644 --- a/docs/c-runtime-library/reference/cwait.md +++ b/docs/c-runtime-library/reference/cwait.md @@ -73,7 +73,6 @@ For more compatibility information, see [Compatibility](../compatibility.md). ```C // crt_cwait.c -// compile with: /c // This program launches several processes and waits // for a specified process to finish. diff --git a/docs/c-runtime-library/reference/getch-getwch.md b/docs/c-runtime-library/reference/getch-getwch.md index 82d45dd7758..742895fddbc 100644 --- a/docs/c-runtime-library/reference/getch-getwch.md +++ b/docs/c-runtime-library/reference/getch-getwch.md @@ -54,7 +54,6 @@ For more compatibility information, see [Compatibility](../compatibility.md). ```C // crt_getch.c -// compile with: /c // This program reads characters from // the keyboard until it receives a 'Y' or 'y'. diff --git a/docs/c-runtime-library/reference/getch-nolock-getwch-nolock.md b/docs/c-runtime-library/reference/getch-nolock-getwch-nolock.md index 61bf1a4acec..96bdf201474 100644 --- a/docs/c-runtime-library/reference/getch-nolock-getwch-nolock.md +++ b/docs/c-runtime-library/reference/getch-nolock-getwch-nolock.md @@ -52,7 +52,6 @@ For more compatibility information, see [Compatibility](../compatibility.md). ```C // crt_getch_nolock.c -// compile with: /c // This program reads characters from // the keyboard until it receives a 'Y' or 'y'. diff --git a/docs/c-runtime-library/reference/getche-getwche.md b/docs/c-runtime-library/reference/getche-getwche.md index 188c2ee2e72..77b7351a950 100644 --- a/docs/c-runtime-library/reference/getche-getwche.md +++ b/docs/c-runtime-library/reference/getche-getwche.md @@ -55,7 +55,6 @@ For more compatibility information, see [Compatibility](../compatibility.md). ```C // crt_getche.c -// compile with: /c // This program reads characters from // the keyboard until it receives a 'Y' or 'y'. diff --git a/docs/c-runtime-library/reference/getche-nolock-getwche-nolock.md b/docs/c-runtime-library/reference/getche-nolock-getwche-nolock.md index c9c6b7ad6fa..c3293873c86 100644 --- a/docs/c-runtime-library/reference/getche-nolock-getwche-nolock.md +++ b/docs/c-runtime-library/reference/getche-nolock-getwche-nolock.md @@ -52,7 +52,6 @@ For more compatibility information, see [Compatibility](../compatibility.md). ```C // crt_getche_nolock.c -// compile with: /c // This program reads characters from // the keyboard until it receives a 'Y' or 'y'. diff --git a/docs/c-runtime-library/reference/getdiskfree.md b/docs/c-runtime-library/reference/getdiskfree.md index 9ddb84d87bd..c622fb7cba4 100644 --- a/docs/c-runtime-library/reference/getdiskfree.md +++ b/docs/c-runtime-library/reference/getdiskfree.md @@ -66,7 +66,7 @@ For more compatibility information, see [Compatibility](../compatibility.md). ```C // crt_getdiskfree.c -// compile with: /c + #include #include #include diff --git a/docs/c-runtime-library/reference/getdrive.md b/docs/c-runtime-library/reference/getdrive.md index 571445fb636..36295f24909 100644 --- a/docs/c-runtime-library/reference/getdrive.md +++ b/docs/c-runtime-library/reference/getdrive.md @@ -43,7 +43,6 @@ For more compatibility information, see [Compatibility](../compatibility.md). ```C // crt_getdrive.c -// compile with: /c // Illustrates drive functions including: // _getdrive _chdrive _getdcwd // diff --git a/docs/c-runtime-library/reference/kbhit.md b/docs/c-runtime-library/reference/kbhit.md index 3d89e65caa9..290a8c64bd0 100644 --- a/docs/c-runtime-library/reference/kbhit.md +++ b/docs/c-runtime-library/reference/kbhit.md @@ -48,7 +48,6 @@ All versions of the [C run-time libraries](../crt-library-features.md). ```C // crt_kbhit.c -// compile with: /c /* This program loops until the user * presses a key. If _kbhit returns nonzero, a * keystroke is waiting in the buffer. The program diff --git a/docs/c-runtime-library/reference/set-error-mode.md b/docs/c-runtime-library/reference/set-error-mode.md index cdbce0d93f7..f85edc97423 100644 --- a/docs/c-runtime-library/reference/set-error-mode.md +++ b/docs/c-runtime-library/reference/set-error-mode.md @@ -61,7 +61,7 @@ When it's used with an [`assert`](assert-macro-assert-wassert.md), **`_set_error ```C // crt_set_error_mode.c -// compile with: /c + #include #include diff --git a/docs/c-runtime-library/reference/ungetch-ungetwch-ungetch-nolock-ungetwch-nolock.md b/docs/c-runtime-library/reference/ungetch-ungetwch-ungetch-nolock-ungetwch-nolock.md index 5c15bfbf429..42c44c2c9e5 100644 --- a/docs/c-runtime-library/reference/ungetch-ungetwch-ungetch-nolock-ungetwch-nolock.md +++ b/docs/c-runtime-library/reference/ungetch-ungetwch-ungetch-nolock-ungetwch-nolock.md @@ -70,7 +70,6 @@ For more compatibility information, see [Compatibility](../compatibility.md). ```C // crt_ungetch.c -// compile with: /c // In this program, a white-space delimited // token is read from the keyboard. When the program // encounters a delimiter, it uses _ungetch to replace diff --git a/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md b/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md index 5a40fed9d72..d110402b8a4 100644 --- a/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md +++ b/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md @@ -94,7 +94,7 @@ For more compatibility information, see [Compatibility](../compatibility.md). ```C // crt_vcprintf_p.c -// compile with: /c + #include #include diff --git a/docs/c-runtime-library/reference/vcprintf-vcprintf-l-vcwprintf-vcwprintf-l.md b/docs/c-runtime-library/reference/vcprintf-vcprintf-l-vcwprintf-vcwprintf-l.md index 236d8685bef..0bffc074e8c 100644 --- a/docs/c-runtime-library/reference/vcprintf-vcprintf-l-vcwprintf-vcwprintf-l.md +++ b/docs/c-runtime-library/reference/vcprintf-vcprintf-l-vcwprintf-vcwprintf-l.md @@ -89,7 +89,7 @@ For more compatibility information, see [Compatibility](../compatibility.md). ```cpp // crt_vcprintf.cpp -// compile with: /c + #include #include From 84283019c57d2db115cf3f3a5d97d27db0b9dba5 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 6 Aug 2025 18:58:14 +0800 Subject: [PATCH 1273/2255] Update metadata in 13 C runtime library topics --- .../reference/cprintf-cprintf-l-cwprintf-cwprintf-l.md | 4 ++-- .../reference/cscanf-s-cscanf-s-l-cwscanf-s-cwscanf-s-l.md | 5 ++--- docs/c-runtime-library/reference/cwait.md | 3 +-- docs/c-runtime-library/reference/getch-getwch.md | 2 +- .../reference/getch-nolock-getwch-nolock.md | 2 +- docs/c-runtime-library/reference/getche-getwche.md | 3 +-- .../reference/getche-nolock-getwche-nolock.md | 2 +- docs/c-runtime-library/reference/getdiskfree.md | 2 +- docs/c-runtime-library/reference/getdrive.md | 5 ++--- docs/c-runtime-library/reference/kbhit.md | 2 +- docs/c-runtime-library/reference/set-error-mode.md | 5 ++--- .../ungetch-ungetwch-ungetch-nolock-ungetwch-nolock.md | 2 +- .../vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md | 4 ++-- 13 files changed, 18 insertions(+), 23 deletions(-) diff --git a/docs/c-runtime-library/reference/cprintf-cprintf-l-cwprintf-cwprintf-l.md b/docs/c-runtime-library/reference/cprintf-cprintf-l-cwprintf-cwprintf-l.md index 1d39021b00b..8dfe11ae631 100644 --- a/docs/c-runtime-library/reference/cprintf-cprintf-l-cwprintf-cwprintf-l.md +++ b/docs/c-runtime-library/reference/cprintf-cprintf-l-cwprintf-cwprintf-l.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: _cprintf, _cprintf_l, _cwprintf, _cwprintf_l" title: "_cprintf, _cprintf_l, _cwprintf, _cwprintf_l" -ms.date: "3/9/2021" +description: "Learn more about: _cprintf, _cprintf_l, _cwprintf, _cwprintf_l" +ms.date: 3/9/2021 api_name: ["_cwprintf_l", "_cprintf_l", "_cwprintf", "_cprintf"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"] api_type: ["DLLExport"] diff --git a/docs/c-runtime-library/reference/cscanf-s-cscanf-s-l-cwscanf-s-cwscanf-s-l.md b/docs/c-runtime-library/reference/cscanf-s-cscanf-s-l-cwscanf-s-cwscanf-s-l.md index 9a686228d90..7ca544e88b7 100644 --- a/docs/c-runtime-library/reference/cscanf-s-cscanf-s-l-cwscanf-s-cwscanf-s-l.md +++ b/docs/c-runtime-library/reference/cscanf-s-cscanf-s-l-cwscanf-s-cwscanf-s-l.md @@ -1,14 +1,13 @@ --- -description: "Learn more about: _cscanf_s, _cscanf_s_l, _cwscanf_s, _cwscanf_s_l" title: "_cscanf_s, _cscanf_s_l, _cwscanf_s, _cwscanf_s_l" -ms.date: "11/04/2016" +description: "Learn more about: _cscanf_s, _cscanf_s_l, _cwscanf_s, _cwscanf_s_l" +ms.date: 11/04/2016 api_name: ["_cwscanf_s_l", "_cwscanf_s", "_cscanf_s", "_cscanf_s_l"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"] api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["cscanf_s", "cscanf_s_l", "cwscanf_s", "_cwscanf_s", "_tcscanf_s", "_cscanf_s", "_cwscanf_s_l", "_cscanf_s_l", "cwscanf_s_l", "_tcscanf_s_l", "tcscanf_s", "tcscanf_s_l"] helpviewer_keywords: ["cscanf_s function", "_cwscanf_s_l function", "tcscanf_s function", "console [C++], reading from", "_cscanf_s function", "data [C++], reading from the console", "cwscanf_s function", "_tcscanf_s_l function", "_cscanf_s_l function", "cscanf_s_l function", "cwscanf_s_l function", "reading data [C++], from the console", "_cwscanf_s function", "_tcscanf_s function", "tcscanf_s_l function"] -ms.assetid: 9ccab74d-916f-42a6-93d8-920525efdf4b --- # `_cscanf_s`, `_cscanf_s_l`, `_cwscanf_s`, `_cwscanf_s_l` diff --git a/docs/c-runtime-library/reference/cwait.md b/docs/c-runtime-library/reference/cwait.md index 3bbde03daf5..4f2d069a7c6 100644 --- a/docs/c-runtime-library/reference/cwait.md +++ b/docs/c-runtime-library/reference/cwait.md @@ -1,14 +1,13 @@ --- title: "_cwait" description: "API reference for the Microsoft Visual C runtime `_cwait()` function." -ms.date: "10/23/2020" +ms.date: 10/23/2020 api_name: ["_cwait", "_o__cwait"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"] api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["_cwait"] helpviewer_keywords: ["cwait function", "_cwait function"] -ms.assetid: d9b596b5-45f4-4e03-9896-3f383cb922b8 --- # `_cwait` diff --git a/docs/c-runtime-library/reference/getch-getwch.md b/docs/c-runtime-library/reference/getch-getwch.md index 742895fddbc..08a4ff83acf 100644 --- a/docs/c-runtime-library/reference/getch-getwch.md +++ b/docs/c-runtime-library/reference/getch-getwch.md @@ -1,7 +1,7 @@ --- title: "_getch, _getwch" description: "API reference for _getch and _getwch; which get a character from the console without echo." -ms.date: "3/8/2023" +ms.date: 3/8/2023 api_name: ["_getch", "_getwch", "_o__getch", "_o__getwch"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-conio-l1-1-0.dll"] api_type: ["DLLExport"] diff --git a/docs/c-runtime-library/reference/getch-nolock-getwch-nolock.md b/docs/c-runtime-library/reference/getch-nolock-getwch-nolock.md index 96bdf201474..91400665f61 100644 --- a/docs/c-runtime-library/reference/getch-nolock-getwch-nolock.md +++ b/docs/c-runtime-library/reference/getch-nolock-getwch-nolock.md @@ -1,7 +1,7 @@ --- title: "_getch_nolock, _getwch_nolock" description: "Learn more about: _getch_nolock, _getwch_nolock" -ms.date: "4/2/2020" +ms.date: 4/2/2020 api_name: ["_getwch_nolock", "_getch_nolock", "_o__getch_nolock", "_o__getwch_nolock"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-conio-l1-1-0.dll"] api_type: ["DLLExport"] diff --git a/docs/c-runtime-library/reference/getche-getwche.md b/docs/c-runtime-library/reference/getche-getwche.md index 77b7351a950..6463db78934 100644 --- a/docs/c-runtime-library/reference/getche-getwche.md +++ b/docs/c-runtime-library/reference/getche-getwche.md @@ -1,14 +1,13 @@ --- title: "_getche, _getwche" description: "API reference for _getche and _getwche; which get a character from the console with echo." -ms.date: "4/2/2020" +ms.date: 4/2/2020 api_name: ["_getwche", "_getche", "_o__getche", "_o__getwche"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-conio-l1-1-0.dll"] api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["getwche", "_getche", "_getwche"] helpviewer_keywords: ["characters, getting from console", "_getwche function", "getche function", "console, reading from", "getwche function", "_getche function"] -ms.assetid: eac978a8-c43a-4130-938f-54f12e2a0fda --- # `_getche`, `_getwche` diff --git a/docs/c-runtime-library/reference/getche-nolock-getwche-nolock.md b/docs/c-runtime-library/reference/getche-nolock-getwche-nolock.md index c3293873c86..9165a4f7b2a 100644 --- a/docs/c-runtime-library/reference/getche-nolock-getwche-nolock.md +++ b/docs/c-runtime-library/reference/getche-nolock-getwche-nolock.md @@ -1,7 +1,7 @@ --- title: "_getche_nolock, _getwche_nolock" description: "Learn more about: _getche_nolock, _getwche_nolock" -ms.date: "4/2/2020" +ms.date: 4/2/2020 api_name: ["_getche_nolock", "_getwche_nolock", "_o__getche_nolock", "_o__getwche_nolock"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-conio-l1-1-0.dll"] api_type: ["DLLExport"] diff --git a/docs/c-runtime-library/reference/getdiskfree.md b/docs/c-runtime-library/reference/getdiskfree.md index c622fb7cba4..68fa48a070e 100644 --- a/docs/c-runtime-library/reference/getdiskfree.md +++ b/docs/c-runtime-library/reference/getdiskfree.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: _getdiskfree" title: "_getdiskfree" +description: "Learn more about: _getdiskfree" ms.date: 05/11/2022 api_name: ["_getdiskfree", "_o__getdiskfree"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"] diff --git a/docs/c-runtime-library/reference/getdrive.md b/docs/c-runtime-library/reference/getdrive.md index 36295f24909..743ae0d8239 100644 --- a/docs/c-runtime-library/reference/getdrive.md +++ b/docs/c-runtime-library/reference/getdrive.md @@ -1,14 +1,13 @@ --- -description: "Learn more about: _getdrive" title: "_getdrive" -ms.date: "4/2/2020" +description: "Learn more about: _getdrive" +ms.date: 4/2/2020 api_name: ["_getdrive", "_o__getdrive"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"] api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["_getdrive", "getdrive"] helpviewer_keywords: ["current disk drive", "getdrive function", "disk drives", "_getdrive function"] -ms.assetid: e40631a0-8f1a-4897-90ac-e1037ff30bca --- # `_getdrive` diff --git a/docs/c-runtime-library/reference/kbhit.md b/docs/c-runtime-library/reference/kbhit.md index 290a8c64bd0..fe9bfbf45fa 100644 --- a/docs/c-runtime-library/reference/kbhit.md +++ b/docs/c-runtime-library/reference/kbhit.md @@ -1,7 +1,7 @@ --- title: "_kbhit" description: "Learn more about: _kbhit" -ms.date: "4/2/2020" +ms.date: 4/2/2020 api_name: ["_kbhit", "_o__kbhit"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"] api_type: ["DLLExport"] diff --git a/docs/c-runtime-library/reference/set-error-mode.md b/docs/c-runtime-library/reference/set-error-mode.md index f85edc97423..28766500919 100644 --- a/docs/c-runtime-library/reference/set-error-mode.md +++ b/docs/c-runtime-library/reference/set-error-mode.md @@ -1,14 +1,13 @@ --- -description: "Learn more about: _set_error_mode" title: "_set_error_mode" -ms.date: "11/04/2016" +description: "Learn more about: _set_error_mode" +ms.date: 11/04/2016 api_name: ["_set_error_mode"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"] api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["set_error_mode", "_set_error_mode"] helpviewer_keywords: ["_set_error_mode function", "set_error_mode function"] -ms.assetid: f0807be5-73d1-4a32-a701-3c9bdd139c5c --- # `_set_error_mode` diff --git a/docs/c-runtime-library/reference/ungetch-ungetwch-ungetch-nolock-ungetwch-nolock.md b/docs/c-runtime-library/reference/ungetch-ungetwch-ungetch-nolock-ungetwch-nolock.md index 42c44c2c9e5..1564dabc49c 100644 --- a/docs/c-runtime-library/reference/ungetch-ungetwch-ungetch-nolock-ungetwch-nolock.md +++ b/docs/c-runtime-library/reference/ungetch-ungetwch-ungetch-nolock-ungetwch-nolock.md @@ -1,7 +1,7 @@ --- title: "_ungetch, _ungetwch, _ungetch_nolock, _ungetwch_nolock" description: "Learn more about: _ungetch, _ungetwch, _ungetch_nolock, _ungetwch_nolock" -ms.date: "4/2/2020" +ms.date: 4/2/2020 api_name: ["_ungetch_nolock", "_ungetwch_nolock", "_ungetwch", "_ungetch", "_o__ungetch", "_o__ungetch_nolock", "_o__ungetwch", "_o__ungetwch_nolock"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-conio-l1-1-0.dll"] api_type: ["DLLExport"] diff --git a/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md b/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md index d110402b8a4..99103757608 100644 --- a/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md +++ b/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: _vcprintf_p, _vcprintf_p_l, _vcwprintf_p, _vcwprintf_p_l" title: "_vcprintf_p, _vcprintf_p_l, _vcwprintf_p, _vcwprintf_p_l" -ms.date: "3/9/2021" +description: "Learn more about: _vcprintf_p, _vcprintf_p_l, _vcwprintf_p, _vcwprintf_p_l" +ms.date: 3/9/2021 api_name: ["_vcprintf_p", "_vcwprintf_p_l", "_vcprintf_p_l", "_vcwprintf_p"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"] api_type: ["DLLExport"] From 9f8372cf3567a925a9cac293b1264a523ab85b9c Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 6 Aug 2025 23:04:53 +0800 Subject: [PATCH 1274/2255] Add blockquotes for error messages in range [C2731, C2760] --- docs/error-messages/compiler-errors-2/compiler-error-c2731.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2732.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2734.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2735.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2736.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2738.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2739.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2743.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2745.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2748.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2749.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2750.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2751.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2752.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2753.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2754.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2755.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2756.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2757.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2758.md | 2 +- 20 files changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2731.md b/docs/error-messages/compiler-errors-2/compiler-error-c2731.md index 3140f55a23e..eed56b56a8b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2731.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2731.md @@ -8,7 +8,7 @@ ms.assetid: 9b563999-febd-4582-9147-f355083c091e --- # Compiler Error C2731 -'identifier' : function cannot be overloaded +> 'identifier' : function cannot be overloaded The functions `main`, `WinMain`, `DllMain`, and `LibMain` cannot be overloaded. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2732.md b/docs/error-messages/compiler-errors-2/compiler-error-c2732.md index a8c934d69a8..b4453ea4c34 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2732.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2732.md @@ -8,7 +8,7 @@ ms.assetid: 01b7ad2c-93cf-456f-a4c0-c5f2fdc7c07c --- # Compiler Error C2732 -linkage specification contradicts earlier specification for 'function' +> linkage specification contradicts earlier specification for 'function' The function is already declared with a different linkage specifier. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2734.md b/docs/error-messages/compiler-errors-2/compiler-error-c2734.md index 926b55a676b..7e653ed6875 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2734.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2734.md @@ -8,7 +8,7 @@ ms.assetid: e53a77b7-825c-42d1-a655-90e1c93b833e --- # Compiler Error C2734 -'identifier' : const object must be initialized if not extern +> 'identifier' : const object must be initialized if not extern The identifier is declared **`const`** but not initialized or **`extern`**. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2735.md b/docs/error-messages/compiler-errors-2/compiler-error-c2735.md index c3549dc46d5..008da716a8f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2735.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2735.md @@ -8,7 +8,7 @@ ms.assetid: 6ce45600-7148-4bc0-8699-af0ef137571e --- # Compiler Error C2735 -'keyword' keyword is not permitted in formal parameter type specifier +> 'keyword' keyword is not permitted in formal parameter type specifier The keyword is invalid in this context. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2736.md b/docs/error-messages/compiler-errors-2/compiler-error-c2736.md index b0135806686..1efa45e48e6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2736.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2736.md @@ -8,7 +8,7 @@ ms.assetid: 95a6bc28-c0cb-49dc-87e6-e993dbbba881 --- # Compiler Error C2736 -'keyword' keyword is not permitted in cast +> 'keyword' keyword is not permitted in cast The keyword is invalid in a cast. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2738.md b/docs/error-messages/compiler-errors-2/compiler-error-c2738.md index b640ef4a018..5a0c689bf89 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2738.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2738.md @@ -8,7 +8,7 @@ ms.assetid: 896b4640-1ee0-4cd8-9910-de3efa30006a --- # Compiler Error C2738 -'declaration' : is ambiguous or is not a member of 'type' +> 'declaration' : is ambiguous or is not a member of 'type' A function was declared incorrectly. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2739.md b/docs/error-messages/compiler-errors-2/compiler-error-c2739.md index 15c3f8b0ea8..49025c6f196 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2739.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2739.md @@ -8,7 +8,7 @@ ms.assetid: 5b63e435-7631-43d7-805e-f2adefb7e517 --- # Compiler Error C2739 -'number' : explicit managed or WinRT array dimensions must be between 1 and 32 +> 'number' : explicit managed or WinRT array dimensions must be between 1 and 32 An array dimension was not between 1 and 32. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2743.md b/docs/error-messages/compiler-errors-2/compiler-error-c2743.md index 82d0b04f293..83b9c980684 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2743.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2743.md @@ -8,7 +8,7 @@ ms.assetid: 644cd444-21d2-471d-a176-f5f52c5a0b73 --- # Compiler Error C2743 -'type' : cannot catch a native type with __clrcall destructor or copy constructor +> 'type' : cannot catch a native type with __clrcall destructor or copy constructor A module compiled with **/clr** attempted to catch an exception of native type and where the type's destructor or copy constructor uses `__clrcall` calling convention. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2745.md b/docs/error-messages/compiler-errors-2/compiler-error-c2745.md index efa92f63c9e..1fd02ee31ee 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2745.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2745.md @@ -8,7 +8,7 @@ ms.assetid: a1c45f13-7667-4678-aa16-265304a449a1 --- # Compiler Error C2745 -'token' : this token cannot be converted to an identifier +> 'token' : this token cannot be converted to an identifier Identifiers must be comprised of legal characters. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2748.md b/docs/error-messages/compiler-errors-2/compiler-error-c2748.md index df420793898..f398794448c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2748.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2748.md @@ -8,7 +8,7 @@ ms.assetid: b63ac78b-a200-499c-afea-15af1a1e819e --- # Compiler Error C2748 -managed or WinRT array creation must have array size or array initializer +> managed or WinRT array creation must have array size or array initializer A managed or WinRT array was ill formed. For more information, see [array](../../extensions/arrays-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2749.md b/docs/error-messages/compiler-errors-2/compiler-error-c2749.md index 293ce1aaab8..9073cde5a8e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2749.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2749.md @@ -8,7 +8,7 @@ ms.assetid: a81aef36-cdca-4d78-89d5-b72eff2500b2 --- # Compiler Error C2749 -'type' : can only throw or catch handle to a managed class with /clr:safe +> 'type' : can only throw or catch handle to a managed class with /clr:safe When using **/clr:safe**, you can only throw or catch a reference type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2750.md b/docs/error-messages/compiler-errors-2/compiler-error-c2750.md index f38c917907c..b1ba0909d0c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2750.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2750.md @@ -8,7 +8,7 @@ ms.assetid: 30450034-feb5-448c-9655-b8c5f3639695 --- # Compiler Error C2750 -'type' : cannot use 'new' on the reference type; use 'gcnew' instead +> 'type' : cannot use 'new' on the reference type; use 'gcnew' instead To create an instance of a CLR type, which causes the instance to be placed on the garbage-collected heap, you must use [gcnew](../../extensions/ref-new-gcnew-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2751.md b/docs/error-messages/compiler-errors-2/compiler-error-c2751.md index 6a466cdf6a8..2dc760cb0e2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2751.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2751.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2751"] --- # Compiler Error C2751 -'parameter' : the name of a function parameter cannot be qualified +> 'parameter' : the name of a function parameter cannot be qualified You cannot use a qualified name as a function parameter. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2752.md b/docs/error-messages/compiler-errors-2/compiler-error-c2752.md index 62770f96025..cc224302cfc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2752.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2752.md @@ -8,7 +8,7 @@ ms.assetid: ae42b3ec-84a9-4e9d-8d59-3d208132d0b2 --- # Compiler Error C2752 -'template' : more than one partial specialization matches the template argument list +> 'template' : more than one partial specialization matches the template argument list An instantiation was ambiguous. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2753.md b/docs/error-messages/compiler-errors-2/compiler-error-c2753.md index ba0897b0d1e..ad73979605e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2753.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2753.md @@ -8,7 +8,7 @@ ms.assetid: 92bfeeac-524a-4a8e-9a4f-fb8269055826 --- # Compiler Error C2753 -'*template*' : partial specialization cannot match argument list for primary template +> '*template*' : partial specialization cannot match argument list for primary template If the template argument list matches the parameter list, the compiler treats it as the same template. Defining the same template twice is not allowed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2754.md b/docs/error-messages/compiler-errors-2/compiler-error-c2754.md index fafd439fa48..ff0a83a3996 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2754.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2754.md @@ -8,7 +8,7 @@ ms.assetid: 1cab66c5-da9d-4b81-b7fb-9cdc48ff1ccc --- # Compiler Error C2754 -'specialization' : a partial specialization cannot have a dependent non-type template parameter +> 'specialization' : a partial specialization cannot have a dependent non-type template parameter An attempt was made to partially specialize a template class that has a dependent non-type template parameter. This is not allowed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2755.md b/docs/error-messages/compiler-errors-2/compiler-error-c2755.md index 99a5290a5fd..6c9f435c926 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2755.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2755.md @@ -8,7 +8,7 @@ ms.assetid: 8ee4eeb6-4757-4efe-9100-38ff4a96f1de --- # Compiler Error C2755 -'param' : non-type parameter of a partial specialization must be a simple identifier +> 'param' : non-type parameter of a partial specialization must be a simple identifier The non-type parameter needs to be a simple identifier, something the compiler can resolve at compile time to a single identifier or a constant value. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2756.md b/docs/error-messages/compiler-errors-2/compiler-error-c2756.md index 429fa87ea10..b4cac8973fd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2756.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2756.md @@ -8,7 +8,7 @@ ms.assetid: 42eb988d-4043-4dee-8fd4-596949f69a55 --- # Compiler Error C2756 -'template type' : default template arguments not allowed on a partial specialization +> 'template type' : default template arguments not allowed on a partial specialization The template for a partial specialization may not contain a default argument. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2757.md b/docs/error-messages/compiler-errors-2/compiler-error-c2757.md index 5a863c1b734..96e1413bcc6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2757.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2757.md @@ -8,7 +8,7 @@ ms.assetid: 421f102f-8a32-4d47-a109-811ddf2c909d --- # Compiler Error C2757 -'symbol' : a symbol with this name already exists and therefore this name cannot be used as a namespace name +> 'symbol' : a symbol with this name already exists and therefore this name cannot be used as a namespace name A symbol used in the current compilation as a namespace identifier is already being used in a referenced assembly. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2758.md b/docs/error-messages/compiler-errors-2/compiler-error-c2758.md index 534c6219932..08096850656 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2758.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2758.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2758"] --- # Compiler Error C2758 -'member': a member of reference type must be initialized +> 'member': a member of reference type must be initialized Compiler error C2758 is caused when the constructor does not initialize a member of reference type in an initializer list. The compiler leaves the member undefined. Reference member variables must initialized when declared or be given a value in the initialization list of the constructor. From 3054fccd4b920e9768c880d44a7d39a35f6e8aa3 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 6 Aug 2025 23:10:54 +0800 Subject: [PATCH 1275/2255] Add "Remarks" and "Example" headings for error references in range [C2731, C2760] --- docs/error-messages/compiler-errors-2/compiler-error-c2731.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2732.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2733.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2734.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2735.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2736.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2738.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2739.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2743.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2745.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2748.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2749.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2750.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2751.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2752.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2753.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2754.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2755.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2756.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2757.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2758.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2760.md | 2 +- 22 files changed, 75 insertions(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2731.md b/docs/error-messages/compiler-errors-2/compiler-error-c2731.md index eed56b56a8b..7452dc63196 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2731.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2731.md @@ -10,8 +10,12 @@ ms.assetid: 9b563999-febd-4582-9147-f355083c091e > 'identifier' : function cannot be overloaded +## Remarks + The functions `main`, `WinMain`, `DllMain`, and `LibMain` cannot be overloaded. +## Example + The following sample generates C2731: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2732.md b/docs/error-messages/compiler-errors-2/compiler-error-c2732.md index b4453ea4c34..2a75b2fe7aa 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2732.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2732.md @@ -10,6 +10,8 @@ ms.assetid: 01b7ad2c-93cf-456f-a4c0-c5f2fdc7c07c > linkage specification contradicts earlier specification for 'function' +## Remarks + The function is already declared with a different linkage specifier. This error can be caused by include files with different linkage specifiers. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2733.md b/docs/error-messages/compiler-errors-2/compiler-error-c2733.md index 03a7ae6bf2f..b4fc45f5eb1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2733.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2733.md @@ -10,6 +10,8 @@ ms.assetid: 67f83561-c633-407c-a2ee-f9fd16e165bf > you cannot overload a function with 'C' linkage +## Remarks + More than one overloaded function is declared with `extern "C"` linkage. When using `"C"` linkage, only one form of a specified function can be external. Since overloaded functions have the same undecorated name, they can't be used with C programs. This error may occur after an upgrade because of conformance changes in Visual Studio 2019. Starting in Visual Studio 2019 version 16.3, the [`/Zc:externC-`](../../build/reference/zc-externc.md) compiler option relaxes this check. The option must come after any [`/permissive-`](../../build/reference/permissive-standards-conformance.md) option on the command line. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2734.md b/docs/error-messages/compiler-errors-2/compiler-error-c2734.md index 7e653ed6875..2806335ae69 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2734.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2734.md @@ -10,8 +10,12 @@ ms.assetid: e53a77b7-825c-42d1-a655-90e1c93b833e > 'identifier' : const object must be initialized if not extern +## Remarks + The identifier is declared **`const`** but not initialized or **`extern`**. +## Example + The following sample generates C2734: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2735.md b/docs/error-messages/compiler-errors-2/compiler-error-c2735.md index 008da716a8f..fcaab3f1e25 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2735.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2735.md @@ -10,8 +10,12 @@ ms.assetid: 6ce45600-7148-4bc0-8699-af0ef137571e > 'keyword' keyword is not permitted in formal parameter type specifier +## Remarks + The keyword is invalid in this context. +## Example + The following sample generates C2735: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2736.md b/docs/error-messages/compiler-errors-2/compiler-error-c2736.md index 1efa45e48e6..db2c66c0d59 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2736.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2736.md @@ -10,8 +10,12 @@ ms.assetid: 95a6bc28-c0cb-49dc-87e6-e993dbbba881 > 'keyword' keyword is not permitted in cast +## Remarks + The keyword is invalid in a cast. +## Example + The following sample generates C2736: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2738.md b/docs/error-messages/compiler-errors-2/compiler-error-c2738.md index 5a0c689bf89..14f992ad73a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2738.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2738.md @@ -10,8 +10,12 @@ ms.assetid: 896b4640-1ee0-4cd8-9910-de3efa30006a > 'declaration' : is ambiguous or is not a member of 'type' +## Remarks + A function was declared incorrectly. +## Example + The following sample generates C2738: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2739.md b/docs/error-messages/compiler-errors-2/compiler-error-c2739.md index 49025c6f196..e663e146ba3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2739.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2739.md @@ -10,8 +10,12 @@ ms.assetid: 5b63e435-7631-43d7-805e-f2adefb7e517 > 'number' : explicit managed or WinRT array dimensions must be between 1 and 32 +## Remarks + An array dimension was not between 1 and 32. +## Example + The following sample generates C2739 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2743.md b/docs/error-messages/compiler-errors-2/compiler-error-c2743.md index 83b9c980684..1fd2bd3933d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2743.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2743.md @@ -10,6 +10,8 @@ ms.assetid: 644cd444-21d2-471d-a176-f5f52c5a0b73 > 'type' : cannot catch a native type with __clrcall destructor or copy constructor +## Remarks + A module compiled with **/clr** attempted to catch an exception of native type and where the type's destructor or copy constructor uses `__clrcall` calling convention. When compiled with **/clr**, exception handling expects the member functions in a native type to be [__cdecl](../../cpp/cdecl.md) and not [__clrcall](../../cpp/clrcall.md). Native types with member functions using `__clrcall` calling convention cannot be caught in a module compiled with **/clr**. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2745.md b/docs/error-messages/compiler-errors-2/compiler-error-c2745.md index 1fd02ee31ee..5af41285bda 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2745.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2745.md @@ -10,8 +10,12 @@ ms.assetid: a1c45f13-7667-4678-aa16-265304a449a1 > 'token' : this token cannot be converted to an identifier +## Remarks + Identifiers must be comprised of legal characters. +## Example + The following sample generates C2745: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2748.md b/docs/error-messages/compiler-errors-2/compiler-error-c2748.md index f398794448c..9c70e234df9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2748.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2748.md @@ -10,8 +10,12 @@ ms.assetid: b63ac78b-a200-499c-afea-15af1a1e819e > managed or WinRT array creation must have array size or array initializer +## Remarks + A managed or WinRT array was ill formed. For more information, see [array](../../extensions/arrays-cpp-component-extensions.md). +## Example + The following sample generates C2748 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2749.md b/docs/error-messages/compiler-errors-2/compiler-error-c2749.md index 9073cde5a8e..332bc762dd7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2749.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2749.md @@ -10,6 +10,8 @@ ms.assetid: a81aef36-cdca-4d78-89d5-b72eff2500b2 > 'type' : can only throw or catch handle to a managed class with /clr:safe +## Remarks + When using **/clr:safe**, you can only throw or catch a reference type. For more information, see [/clr (Common Language Runtime Compilation)](../../build/reference/clr-common-language-runtime-compilation.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2750.md b/docs/error-messages/compiler-errors-2/compiler-error-c2750.md index b1ba0909d0c..2a13bf39c5e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2750.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2750.md @@ -10,8 +10,12 @@ ms.assetid: 30450034-feb5-448c-9655-b8c5f3639695 > 'type' : cannot use 'new' on the reference type; use 'gcnew' instead +## Remarks + To create an instance of a CLR type, which causes the instance to be placed on the garbage-collected heap, you must use [gcnew](../../extensions/ref-new-gcnew-cpp-component-extensions.md). +## Example + The following sample generates C2750: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2751.md b/docs/error-messages/compiler-errors-2/compiler-error-c2751.md index 2dc760cb0e2..85220ac36f7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2751.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2751.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C2751"] > 'parameter' : the name of a function parameter cannot be qualified +## Remarks + You cannot use a qualified name as a function parameter. +## Example + The following sample generates C2751: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2752.md b/docs/error-messages/compiler-errors-2/compiler-error-c2752.md index cc224302cfc..8a3e8e78d99 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2752.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2752.md @@ -10,8 +10,12 @@ ms.assetid: ae42b3ec-84a9-4e9d-8d59-3d208132d0b2 > 'template' : more than one partial specialization matches the template argument list +## Remarks + An instantiation was ambiguous. +## Example + The following sample generates C2752: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2753.md b/docs/error-messages/compiler-errors-2/compiler-error-c2753.md index ad73979605e..ddefd79b0f6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2753.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2753.md @@ -10,6 +10,8 @@ ms.assetid: 92bfeeac-524a-4a8e-9a4f-fb8269055826 > '*template*' : partial specialization cannot match argument list for primary template +## Remarks + If the template argument list matches the parameter list, the compiler treats it as the same template. Defining the same template twice is not allowed. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2754.md b/docs/error-messages/compiler-errors-2/compiler-error-c2754.md index ff0a83a3996..0d1a2204add 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2754.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2754.md @@ -10,8 +10,12 @@ ms.assetid: 1cab66c5-da9d-4b81-b7fb-9cdc48ff1ccc > 'specialization' : a partial specialization cannot have a dependent non-type template parameter +## Remarks + An attempt was made to partially specialize a template class that has a dependent non-type template parameter. This is not allowed. +## Example + The following sample generates C2754: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2755.md b/docs/error-messages/compiler-errors-2/compiler-error-c2755.md index 6c9f435c926..5c1455ab07b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2755.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2755.md @@ -10,8 +10,12 @@ ms.assetid: 8ee4eeb6-4757-4efe-9100-38ff4a96f1de > 'param' : non-type parameter of a partial specialization must be a simple identifier +## Remarks + The non-type parameter needs to be a simple identifier, something the compiler can resolve at compile time to a single identifier or a constant value. +## Example + The following sample generates C2755: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2756.md b/docs/error-messages/compiler-errors-2/compiler-error-c2756.md index b4cac8973fd..6e21f7d0dc5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2756.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2756.md @@ -10,8 +10,12 @@ ms.assetid: 42eb988d-4043-4dee-8fd4-596949f69a55 > 'template type' : default template arguments not allowed on a partial specialization +## Remarks + The template for a partial specialization may not contain a default argument. +## Example + The following sample generates C2756 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2757.md b/docs/error-messages/compiler-errors-2/compiler-error-c2757.md index 96e1413bcc6..c1de5fa31bb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2757.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2757.md @@ -10,8 +10,12 @@ ms.assetid: 421f102f-8a32-4d47-a109-811ddf2c909d > 'symbol' : a symbol with this name already exists and therefore this name cannot be used as a namespace name +## Remarks + A symbol used in the current compilation as a namespace identifier is already being used in a referenced assembly. +## Example + The following sample generates C2757: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2758.md b/docs/error-messages/compiler-errors-2/compiler-error-c2758.md index 08096850656..63106491a7d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2758.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2758.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C2758"] > 'member': a member of reference type must be initialized +## Remarks + Compiler error C2758 is caused when the constructor does not initialize a member of reference type in an initializer list. The compiler leaves the member undefined. Reference member variables must initialized when declared or be given a value in the initialization list of the constructor. +## Example + The following sample generates C2758: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2760.md b/docs/error-messages/compiler-errors-2/compiler-error-c2760.md index e33c5a9552a..4a8aca52469 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2760.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2760.md @@ -16,7 +16,7 @@ ms.assetid: 585757fd-d519-43f3-94e5-50316ac8b90b There are several ways to cause this error. Usually, it's caused by a token sequence that the compiler can't make sense of. -## Example +## Examples In this sample, a casting operator is used with an invalid operator. From 5a9e42e97c11e2d2540da7f7ab97535b99ee24bf Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 6 Aug 2025 23:12:20 +0800 Subject: [PATCH 1276/2255] Replace term "sample" with "example" for error references in range [C2731, C2760] --- docs/error-messages/compiler-errors-2/compiler-error-c2731.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2732.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2733.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2734.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2735.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2736.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2738.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2739.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2743.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2745.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2748.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2749.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2750.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2751.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2752.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2753.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2754.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2755.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2756.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2757.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2758.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2760.md | 2 +- 22 files changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2731.md b/docs/error-messages/compiler-errors-2/compiler-error-c2731.md index 7452dc63196..2a666957af8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2731.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2731.md @@ -16,7 +16,7 @@ The functions `main`, `WinMain`, `DllMain`, and `LibMain` cannot be overloaded. ## Example -The following sample generates C2731: +The following example generates C2731: ```cpp // C2731.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2732.md b/docs/error-messages/compiler-errors-2/compiler-error-c2732.md index 2a75b2fe7aa..b735900309e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2732.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2732.md @@ -20,7 +20,7 @@ To fix this error, change the **`extern`** statements so that the linkages agree ## Example -The following sample generates C2732: +The following example generates C2732: ```cpp // C2732.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2733.md b/docs/error-messages/compiler-errors-2/compiler-error-c2733.md index b4fc45f5eb1..66e1c979cb3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2733.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2733.md @@ -18,7 +18,7 @@ This error may occur after an upgrade because of conformance changes in Visual S ## Example -The following sample generates C2733: +The following example generates C2733: ```cpp // C2733.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2734.md b/docs/error-messages/compiler-errors-2/compiler-error-c2734.md index 2806335ae69..c729dec5b61 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2734.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2734.md @@ -16,7 +16,7 @@ The identifier is declared **`const`** but not initialized or **`extern`**. ## Example -The following sample generates C2734: +The following example generates C2734: ```cpp // C2734.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2735.md b/docs/error-messages/compiler-errors-2/compiler-error-c2735.md index fcaab3f1e25..a66fe52c51c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2735.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2735.md @@ -16,7 +16,7 @@ The keyword is invalid in this context. ## Example -The following sample generates C2735: +The following example generates C2735: ```cpp // C2735.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2736.md b/docs/error-messages/compiler-errors-2/compiler-error-c2736.md index db2c66c0d59..24d47588a16 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2736.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2736.md @@ -16,7 +16,7 @@ The keyword is invalid in a cast. ## Example -The following sample generates C2736: +The following example generates C2736: ```cpp // C2736.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2738.md b/docs/error-messages/compiler-errors-2/compiler-error-c2738.md index 14f992ad73a..a5a05f1c143 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2738.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2738.md @@ -16,7 +16,7 @@ A function was declared incorrectly. ## Example -The following sample generates C2738: +The following example generates C2738: ```cpp // C2738.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2739.md b/docs/error-messages/compiler-errors-2/compiler-error-c2739.md index e663e146ba3..1b88c544ed6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2739.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2739.md @@ -16,7 +16,7 @@ An array dimension was not between 1 and 32. ## Example -The following sample generates C2739 and shows how to fix it: +The following example generates C2739 and shows how to fix it: ```cpp // C2739.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2743.md b/docs/error-messages/compiler-errors-2/compiler-error-c2743.md index 1fd2bd3933d..61036f4a2f7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2743.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2743.md @@ -20,7 +20,7 @@ For more information, see [/clr (Common Language Runtime Compilation)](../../bui ## Example -The following sample generates C2743. +The following example generates C2743. ```cpp // C2743.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2745.md b/docs/error-messages/compiler-errors-2/compiler-error-c2745.md index 5af41285bda..edcc7284690 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2745.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2745.md @@ -16,7 +16,7 @@ Identifiers must be comprised of legal characters. ## Example -The following sample generates C2745: +The following example generates C2745: ```cpp // C2745.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2748.md b/docs/error-messages/compiler-errors-2/compiler-error-c2748.md index 9c70e234df9..038fc558630 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2748.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2748.md @@ -16,7 +16,7 @@ A managed or WinRT array was ill formed. For more information, see [array](../.. ## Example -The following sample generates C2748 and shows how to fix it: +The following example generates C2748 and shows how to fix it: ```cpp // C2748.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2749.md b/docs/error-messages/compiler-errors-2/compiler-error-c2749.md index 332bc762dd7..90a890f605d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2749.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2749.md @@ -18,7 +18,7 @@ For more information, see [/clr (Common Language Runtime Compilation)](../../bui ## Example -The following sample generates C2749: +The following example generates C2749: ```cpp // C2749.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2750.md b/docs/error-messages/compiler-errors-2/compiler-error-c2750.md index 2a13bf39c5e..b88e10482a8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2750.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2750.md @@ -16,7 +16,7 @@ To create an instance of a CLR type, which causes the instance to be placed on t ## Example -The following sample generates C2750: +The following example generates C2750: ```cpp // C2750.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2751.md b/docs/error-messages/compiler-errors-2/compiler-error-c2751.md index 85220ac36f7..4727177cc82 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2751.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2751.md @@ -15,7 +15,7 @@ You cannot use a qualified name as a function parameter. ## Example -The following sample generates C2751: +The following example generates C2751: ```cpp // C2751.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2752.md b/docs/error-messages/compiler-errors-2/compiler-error-c2752.md index 8a3e8e78d99..c21aa8ba3d6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2752.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2752.md @@ -16,7 +16,7 @@ An instantiation was ambiguous. ## Example -The following sample generates C2752: +The following example generates C2752: ```cpp // C2752.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2753.md b/docs/error-messages/compiler-errors-2/compiler-error-c2753.md index ddefd79b0f6..2413b20028f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2753.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2753.md @@ -16,7 +16,7 @@ If the template argument list matches the parameter list, the compiler treats it ## Example -The following sample generates C2753 and shows a way to fix it: +The following example generates C2753 and shows a way to fix it: ```cpp // C2753.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2754.md b/docs/error-messages/compiler-errors-2/compiler-error-c2754.md index 0d1a2204add..291f6a75a31 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2754.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2754.md @@ -16,7 +16,7 @@ An attempt was made to partially specialize a template class that has a dependen ## Example -The following sample generates C2754: +The following example generates C2754: ```cpp // C2754.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2755.md b/docs/error-messages/compiler-errors-2/compiler-error-c2755.md index 5c1455ab07b..eaf3cff3348 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2755.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2755.md @@ -16,7 +16,7 @@ The non-type parameter needs to be a simple identifier, something the compiler c ## Example -The following sample generates C2755: +The following example generates C2755: ```cpp // C2755.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2756.md b/docs/error-messages/compiler-errors-2/compiler-error-c2756.md index 6e21f7d0dc5..60d1ee73aea 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2756.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2756.md @@ -16,7 +16,7 @@ The template for a partial specialization may not contain a default argument. ## Example -The following sample generates C2756 and shows how to fix it: +The following example generates C2756 and shows how to fix it: ```cpp // C2756.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2757.md b/docs/error-messages/compiler-errors-2/compiler-error-c2757.md index c1de5fa31bb..c56b011f502 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2757.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2757.md @@ -16,7 +16,7 @@ A symbol used in the current compilation as a namespace identifier is already be ## Example -The following sample generates C2757: +The following example generates C2757: ```cpp // C2757a.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2758.md b/docs/error-messages/compiler-errors-2/compiler-error-c2758.md index 63106491a7d..3b5c2bed46f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2758.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2758.md @@ -15,7 +15,7 @@ Compiler error C2758 is caused when the constructor does not initialize a member ## Example -The following sample generates C2758: +The following example generates C2758: ```cpp // C2758.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2760.md b/docs/error-messages/compiler-errors-2/compiler-error-c2760.md index 4a8aca52469..c2a60c82c6e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2760.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2760.md @@ -18,7 +18,7 @@ There are several ways to cause this error. Usually, it's caused by a token sequ ## Examples -In this sample, a casting operator is used with an invalid operator. +In this example, a casting operator is used with an invalid operator. ```cpp // C2760.cpp From 7a644236eed0ed035c20c2a1f814fe52d1cfa4a8 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 6 Aug 2025 23:15:35 +0800 Subject: [PATCH 1277/2255] Update metadata for error references in range [C2731, C2760] --- .../error-messages/compiler-errors-2/compiler-error-c2731.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2732.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2733.md | 3 +-- .../error-messages/compiler-errors-2/compiler-error-c2734.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2735.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2736.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2738.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2739.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2743.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2745.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2748.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2749.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2750.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2751.md | 4 ++-- .../error-messages/compiler-errors-2/compiler-error-c2752.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2753.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2754.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2755.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2756.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2757.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2760.md | 3 +-- 21 files changed, 40 insertions(+), 60 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2731.md b/docs/error-messages/compiler-errors-2/compiler-error-c2731.md index 2a666957af8..beb16353908 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2731.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2731.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2731" title: "Compiler Error C2731" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2731" +ms.date: 11/04/2016 f1_keywords: ["C2731"] helpviewer_keywords: ["C2731"] -ms.assetid: 9b563999-febd-4582-9147-f355083c091e --- # Compiler Error C2731 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2732.md b/docs/error-messages/compiler-errors-2/compiler-error-c2732.md index b735900309e..6984e65b413 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2732.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2732.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2732" title: "Compiler Error C2732" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2732" +ms.date: 11/04/2016 f1_keywords: ["C2732"] helpviewer_keywords: ["C2732"] -ms.assetid: 01b7ad2c-93cf-456f-a4c0-c5f2fdc7c07c --- # Compiler Error C2732 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2733.md b/docs/error-messages/compiler-errors-2/compiler-error-c2733.md index 66e1c979cb3..ba6d27d4753 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2733.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2733.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2733" title: "Compiler Error C2733" +description: "Learn more about: Compiler Error C2733" ms.date: 12/02/2021 f1_keywords: ["C2733"] helpviewer_keywords: ["C2733"] -ms.assetid: 67f83561-c633-407c-a2ee-f9fd16e165bf --- # Compiler Error C2733 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2734.md b/docs/error-messages/compiler-errors-2/compiler-error-c2734.md index c729dec5b61..c11247bd758 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2734.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2734.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2734" title: "Compiler Error C2734" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2734" +ms.date: 11/04/2016 f1_keywords: ["C2734"] helpviewer_keywords: ["C2734"] -ms.assetid: e53a77b7-825c-42d1-a655-90e1c93b833e --- # Compiler Error C2734 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2735.md b/docs/error-messages/compiler-errors-2/compiler-error-c2735.md index a66fe52c51c..91def172aa9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2735.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2735.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2735" title: "Compiler Error C2735" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2735" +ms.date: 11/04/2016 f1_keywords: ["C2735"] helpviewer_keywords: ["C2735"] -ms.assetid: 6ce45600-7148-4bc0-8699-af0ef137571e --- # Compiler Error C2735 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2736.md b/docs/error-messages/compiler-errors-2/compiler-error-c2736.md index 24d47588a16..a17c5de2ad8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2736.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2736.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2736" title: "Compiler Error C2736" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2736" +ms.date: 11/04/2016 f1_keywords: ["C2736"] helpviewer_keywords: ["C2736"] -ms.assetid: 95a6bc28-c0cb-49dc-87e6-e993dbbba881 --- # Compiler Error C2736 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2738.md b/docs/error-messages/compiler-errors-2/compiler-error-c2738.md index a5a05f1c143..4eeec6e77a0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2738.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2738.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2738" title: "Compiler Error C2738" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2738" +ms.date: 11/04/2016 f1_keywords: ["C2738"] helpviewer_keywords: ["C2738"] -ms.assetid: 896b4640-1ee0-4cd8-9910-de3efa30006a --- # Compiler Error C2738 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2739.md b/docs/error-messages/compiler-errors-2/compiler-error-c2739.md index 1b88c544ed6..3125f5102bb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2739.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2739.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2739" title: "Compiler Error C2739" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2739" +ms.date: 11/04/2016 f1_keywords: ["C2739"] helpviewer_keywords: ["C2739"] -ms.assetid: 5b63e435-7631-43d7-805e-f2adefb7e517 --- # Compiler Error C2739 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2743.md b/docs/error-messages/compiler-errors-2/compiler-error-c2743.md index 61036f4a2f7..0f2118ff291 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2743.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2743.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2743" title: "Compiler Error C2743" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2743" +ms.date: 11/04/2016 f1_keywords: ["C2743"] helpviewer_keywords: ["C2743"] -ms.assetid: 644cd444-21d2-471d-a176-f5f52c5a0b73 --- # Compiler Error C2743 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2745.md b/docs/error-messages/compiler-errors-2/compiler-error-c2745.md index edcc7284690..4fbbf13bcce 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2745.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2745.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2745" title: "Compiler Error C2745" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2745" +ms.date: 11/04/2016 f1_keywords: ["C2745"] helpviewer_keywords: ["C2745"] -ms.assetid: a1c45f13-7667-4678-aa16-265304a449a1 --- # Compiler Error C2745 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2748.md b/docs/error-messages/compiler-errors-2/compiler-error-c2748.md index 038fc558630..c7a99b67943 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2748.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2748.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2748" title: "Compiler Error C2748" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2748" +ms.date: 11/04/2016 f1_keywords: ["C2748"] helpviewer_keywords: ["C2748"] -ms.assetid: b63ac78b-a200-499c-afea-15af1a1e819e --- # Compiler Error C2748 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2749.md b/docs/error-messages/compiler-errors-2/compiler-error-c2749.md index 90a890f605d..c2bc309d835 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2749.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2749.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2749" title: "Compiler Error C2749" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2749" +ms.date: 11/04/2016 f1_keywords: ["C2749"] helpviewer_keywords: ["C2749"] -ms.assetid: a81aef36-cdca-4d78-89d5-b72eff2500b2 --- # Compiler Error C2749 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2750.md b/docs/error-messages/compiler-errors-2/compiler-error-c2750.md index b88e10482a8..55899400da8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2750.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2750.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2750" title: "Compiler Error C2750" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2750" +ms.date: 11/04/2016 f1_keywords: ["C2750"] helpviewer_keywords: ["C2750"] -ms.assetid: 30450034-feb5-448c-9655-b8c5f3639695 --- # Compiler Error C2750 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2751.md b/docs/error-messages/compiler-errors-2/compiler-error-c2751.md index 4727177cc82..ef7c77075c1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2751.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2751.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Error C2751" title: "Compiler Error C2751" -ms.date: "03/11/2024" +description: "Learn more about: Compiler Error C2751" +ms.date: 03/11/2024 f1_keywords: ["C2751"] helpviewer_keywords: ["C2751"] --- diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2752.md b/docs/error-messages/compiler-errors-2/compiler-error-c2752.md index c21aa8ba3d6..5c0d2337ce2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2752.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2752.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2752" title: "Compiler Error C2752" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2752" +ms.date: 11/04/2016 f1_keywords: ["C2752"] helpviewer_keywords: ["C2752"] -ms.assetid: ae42b3ec-84a9-4e9d-8d59-3d208132d0b2 --- # Compiler Error C2752 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2753.md b/docs/error-messages/compiler-errors-2/compiler-error-c2753.md index 2413b20028f..9f68e282613 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2753.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2753.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2753" title: "Compiler Error C2753" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2753" +ms.date: 11/04/2016 f1_keywords: ["C2753"] helpviewer_keywords: ["C2753"] -ms.assetid: 92bfeeac-524a-4a8e-9a4f-fb8269055826 --- # Compiler Error C2753 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2754.md b/docs/error-messages/compiler-errors-2/compiler-error-c2754.md index 291f6a75a31..8b391baaa37 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2754.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2754.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2754" title: "Compiler Error C2754" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2754" +ms.date: 11/04/2016 f1_keywords: ["C2754"] helpviewer_keywords: ["C2754"] -ms.assetid: 1cab66c5-da9d-4b81-b7fb-9cdc48ff1ccc --- # Compiler Error C2754 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2755.md b/docs/error-messages/compiler-errors-2/compiler-error-c2755.md index eaf3cff3348..adabdd70a83 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2755.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2755.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2755" title: "Compiler Error C2755" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2755" +ms.date: 11/04/2016 f1_keywords: ["C2755"] helpviewer_keywords: ["C2755"] -ms.assetid: 8ee4eeb6-4757-4efe-9100-38ff4a96f1de --- # Compiler Error C2755 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2756.md b/docs/error-messages/compiler-errors-2/compiler-error-c2756.md index 60d1ee73aea..5f7089c2367 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2756.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2756.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2756" title: "Compiler Error C2756" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2756" +ms.date: 11/04/2016 f1_keywords: ["C2756"] helpviewer_keywords: ["C2756"] -ms.assetid: 42eb988d-4043-4dee-8fd4-596949f69a55 --- # Compiler Error C2756 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2757.md b/docs/error-messages/compiler-errors-2/compiler-error-c2757.md index c56b011f502..a759aa5196f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2757.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2757.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2757" title: "Compiler Error C2757" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2757" +ms.date: 11/04/2016 f1_keywords: ["C2757"] helpviewer_keywords: ["C2757"] -ms.assetid: 421f102f-8a32-4d47-a109-811ddf2c909d --- # Compiler Error C2757 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2760.md b/docs/error-messages/compiler-errors-2/compiler-error-c2760.md index c2a60c82c6e..619d63d8c42 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2760.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2760.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2760" title: "Compiler Error C2760" +description: "Learn more about: Compiler Error C2760" ms.date: 08/12/2021 f1_keywords: ["C2760"] helpviewer_keywords: ["C2760"] -ms.assetid: 585757fd-d519-43f3-94e5-50316ac8b90b --- # Compiler Error C2760 From 9bd2af9151433a3394715456dd263ae52f731c81 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 7 Aug 2025 00:04:16 +0800 Subject: [PATCH 1278/2255] Resolve invalid type `Int` in syntax references --- docs/cpp/com-ptr-t-relational-operators.md | 4 ++-- docs/mfc/reference/cmfcribboncombobox-class.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/cpp/com-ptr-t-relational-operators.md b/docs/cpp/com-ptr-t-relational-operators.md index 37ebee59797..24b6a8c9270 100644 --- a/docs/cpp/com-ptr-t-relational-operators.md +++ b/docs/cpp/com-ptr-t-relational-operators.md @@ -33,7 +33,7 @@ bool operator==( const _com_ptr_t& p ) throw(); template<> bool operator==( _com_ptr_t& p ) throw(); -bool operator==( Int null ); +bool operator==( int null ); template bool operator!=( const _com_ptr_t<_OtherIID>& p ); @@ -44,7 +44,7 @@ bool operator!=( _com_ptr_t<_OtherIID>& p ); template bool operator!=( _InterfaceType* p ); -bool operator!=( Int null ); +bool operator!=( int null ); template bool operator<( const _com_ptr_t<_OtherIID>& p ); diff --git a/docs/mfc/reference/cmfcribboncombobox-class.md b/docs/mfc/reference/cmfcribboncombobox-class.md index 91d6fe19fa7..6ec436875fd 100644 --- a/docs/mfc/reference/cmfcribboncombobox-class.md +++ b/docs/mfc/reference/cmfcribboncombobox-class.md @@ -102,9 +102,9 @@ public: CMFCRibbonComboBox( UINT nID, BOOL bHasEditBox=TRUE, - Int nWidth=-1, + int nWidth=-1, LPCTSTR lpszLabel=NULL, - Int nImage=-1); + int nImage=-1); protected: CMFCRibbonComboBox(); From 849b46889ff08ee285654df4b55a7de65cd0ab77 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 7 Aug 2025 00:04:45 +0800 Subject: [PATCH 1279/2255] Update metadata in 2 topics --- docs/cpp/com-ptr-t-relational-operators.md | 5 ++--- docs/mfc/reference/cmfcribboncombobox-class.md | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/docs/cpp/com-ptr-t-relational-operators.md b/docs/cpp/com-ptr-t-relational-operators.md index 24b6a8c9270..7101967bd2a 100644 --- a/docs/cpp/com-ptr-t-relational-operators.md +++ b/docs/cpp/com-ptr-t-relational-operators.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: _com_ptr_t Relational Operators" title: "_com_ptr_t Relational Operators" -ms.date: "11/04/2016" +description: "Learn more about: _com_ptr_t Relational Operators" +ms.date: 11/04/2016 f1_keywords: ["_com_ptr_t::operator>", "_com_ptr_t::operator>=", "_com_ptr_t::operator<=", "_com_ptr_t::operator==", "_com_ptr_t::operator!=", "_com_ptr_t::operator<"] helpviewer_keywords: [">= operator [C++], comparing specific objects", "!= operator", "operator > [C++], pointers", "operator>= [C++], pointers", "operator < [C++], pointers", "operator!= [C++], relational operators", "< operator [C++], comparing specific objects", "operator== [C++], pointers", "operator == [C++], pointers", "<= operator [C++], with specific objects", "relational operators [C++], _com_ptr_t class", "operator >= [C++], pointers", "operator != [C++], relational operators", "operator <= [C++], pointers", "> operator [C++], comparing specific objects", "operator<= [C++], pointers", "operator< [C++], pointers", "== operator [C++], with specific Visual C++ objects"] -ms.assetid: 5ae4028c-33ee-485d-bbda-88d2604d6d4b --- # _com_ptr_t Relational Operators diff --git a/docs/mfc/reference/cmfcribboncombobox-class.md b/docs/mfc/reference/cmfcribboncombobox-class.md index 6ec436875fd..8c68550f07e 100644 --- a/docs/mfc/reference/cmfcribboncombobox-class.md +++ b/docs/mfc/reference/cmfcribboncombobox-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: CMFCRibbonComboBox Class" title: "CMFCRibbonComboBox Class" -ms.date: "11/04/2016" +description: "Learn more about: CMFCRibbonComboBox Class" +ms.date: 11/04/2016 f1_keywords: ["CMFCRibbonComboBox", "AFXRIBBONCOMBOBOX/CMFCRibbonComboBox", "AFXRIBBONCOMBOBOX/CMFCRibbonComboBox::CMFCRibbonComboBox", "AFXRIBBONCOMBOBOX/CMFCRibbonComboBox::AddItem", "AFXRIBBONCOMBOBOX/CMFCRibbonComboBox::DeleteItem", "AFXRIBBONCOMBOBOX/CMFCRibbonComboBox::EnableDropDownListResize", "AFXRIBBONCOMBOBOX/CMFCRibbonComboBox::FindItem", "AFXRIBBONCOMBOBOX/CMFCRibbonComboBox::GetCount", "AFXRIBBONCOMBOBOX/CMFCRibbonComboBox::GetCurSel", "AFXRIBBONCOMBOBOX/CMFCRibbonComboBox::GetDropDownHeight", "AFXRIBBONCOMBOBOX/CMFCRibbonComboBox::GetIntermediateSize", "AFXRIBBONCOMBOBOX/CMFCRibbonComboBox::GetItem", "AFXRIBBONCOMBOBOX/CMFCRibbonComboBox::GetItemData", "AFXRIBBONCOMBOBOX/CMFCRibbonComboBox::HasEditBox", "AFXRIBBONCOMBOBOX/CMFCRibbonComboBox::IsResizeDropDownList", "AFXRIBBONCOMBOBOX/CMFCRibbonComboBox::OnSelectItem", "AFXRIBBONCOMBOBOX/CMFCRibbonComboBox::RemoveAllItems", "AFXRIBBONCOMBOBOX/CMFCRibbonComboBox::SelectItem", "AFXRIBBONCOMBOBOX/CMFCRibbonComboBox::SetDropDownHeight"] helpviewer_keywords: ["CMFCRibbonComboBox [MFC], CMFCRibbonComboBox", "CMFCRibbonComboBox [MFC], AddItem", "CMFCRibbonComboBox [MFC], DeleteItem", "CMFCRibbonComboBox [MFC], EnableDropDownListResize", "CMFCRibbonComboBox [MFC], FindItem", "CMFCRibbonComboBox [MFC], GetCount", "CMFCRibbonComboBox [MFC], GetCurSel", "CMFCRibbonComboBox [MFC], GetDropDownHeight", "CMFCRibbonComboBox [MFC], GetIntermediateSize", "CMFCRibbonComboBox [MFC], GetItem", "CMFCRibbonComboBox [MFC], GetItemData", "CMFCRibbonComboBox [MFC], HasEditBox", "CMFCRibbonComboBox [MFC], IsResizeDropDownList", "CMFCRibbonComboBox [MFC], OnSelectItem", "CMFCRibbonComboBox [MFC], RemoveAllItems", "CMFCRibbonComboBox [MFC], SelectItem", "CMFCRibbonComboBox [MFC], SetDropDownHeight"] -ms.assetid: 9b29a6a4-cf17-4152-9b13-0bf90784b30d --- # CMFCRibbonComboBox Class From 72e62e04c3c5638ee7ed43abd1a6d0f3e43f8724 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 7 Aug 2025 22:52:52 +0800 Subject: [PATCH 1280/2255] Fix erroneous `__Pragma` in link texts --- docs/c-language/c-pragmas.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3295.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4789.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/c-language/c-pragmas.md b/docs/c-language/c-pragmas.md index e98dccbd721..c96cad6b4cf 100644 --- a/docs/c-language/c-pragmas.md +++ b/docs/c-language/c-pragmas.md @@ -59,7 +59,7 @@ A *pragma* instructs the compiler to perform a particular action at compile time :::column-end::: :::row-end::: -See [Pragma Directives and the `__Pragma` Keyword](../preprocessor/pragma-directives-and-the-pragma-keyword.md) for a description of the Microsoft C compiler pragmas. +See [Pragma directives and the `__pragma` and `_Pragma` keywords](../preprocessor/pragma-directives-and-the-pragma-keyword.md) for a description of the Microsoft C compiler pragmas. **END Microsoft Specific** diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3295.md b/docs/error-messages/compiler-errors-2/compiler-error-c3295.md index 422e2296b2b..96b7a98762e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3295.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3295.md @@ -10,7 +10,7 @@ ms.assetid: 83f0aa4d-0e0a-4905-9f66-fcf9991fc07a '#pragma pragma' can only be used at global or namespace scope -Some pragmas cannot be used in a function. See [Pragma Directives and the __Pragma Keyword](../../preprocessor/pragma-directives-and-the-pragma-keyword.md) for more information. +Some pragmas cannot be used in a function. See [Pragma directives and the `__pragma` and `_Pragma` keywords](../../preprocessor/pragma-directives-and-the-pragma-keyword.md) for more information. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4789.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4789.md index 696cc4eacdf..8ebdf24fb9f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4789.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4789.md @@ -32,7 +32,7 @@ Visual C++ might generate this warning for a code path that never executes. You #pragma warning( pop ) ``` -This idiom keeps Visual C++ from generating the warning for that specific block of code. The `#pragma warning(push)` preserves the existing state before `#pragma warning(disable: 4789)` changes it. The `#pragma warning(pop)` restores the pushed state, and removes the effects of the `#pragma warning(disable:4789)`. For more information about the C++ preprocessor directive `#pragma`, see [`warning`](../../preprocessor/warning.md) and [Pragma Directives and the `__Pragma` Keyword](../../preprocessor/pragma-directives-and-the-pragma-keyword.md). +This idiom keeps Visual C++ from generating the warning for that specific block of code. The `#pragma warning(push)` preserves the existing state before `#pragma warning(disable: 4789)` changes it. The `#pragma warning(pop)` restores the pushed state, and removes the effects of the `#pragma warning(disable:4789)`. For more information about the C++ preprocessor directive `#pragma`, see [`warning`](../../preprocessor/warning.md) and [Pragma directives and the `__pragma` and `_Pragma` keywords](../../preprocessor/pragma-directives-and-the-pragma-keyword.md). The [`/sdl` (Enable Additional Security Checks)](../../build/reference/sdl-enable-additional-security-checks.md) compiler option elevates this warning to an error. From 57b51ca71b472e1cbfecc8bd09f0cef02ae20dbd Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 7 Aug 2025 22:53:55 +0800 Subject: [PATCH 1281/2255] Update metadata in 2 topics --- docs/c-language/c-pragmas.md | 3 +-- .../error-messages/compiler-errors-2/compiler-error-c3295.md | 5 ++--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/docs/c-language/c-pragmas.md b/docs/c-language/c-pragmas.md index c96cad6b4cf..bb5cb70aee4 100644 --- a/docs/c-language/c-pragmas.md +++ b/docs/c-language/c-pragmas.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: C Pragmas" title: "C Pragmas" +description: "Learn more about: C Pragmas" ms.date: 07/26/2020 helpviewer_keywords: ["pragmas, C/C++"] -ms.assetid: 3d6d36b4-d565-4632-a4cd-e39aeaded5ad --- # C Pragmas diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3295.md b/docs/error-messages/compiler-errors-2/compiler-error-c3295.md index 96b7a98762e..262bb7979b0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3295.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3295.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3295" title: "Compiler Error C3295" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3295" +ms.date: 11/04/2016 f1_keywords: ["C3295"] helpviewer_keywords: ["C3295"] -ms.assetid: 83f0aa4d-0e0a-4905-9f66-fcf9991fc07a --- # Compiler Error C3295 From ba9902739eeaaa20c3ecb4f709c029356ccf5731 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 7 Aug 2025 23:13:20 +0800 Subject: [PATCH 1282/2255] Add blockquotes for error messages in range [C2761, C2790] --- docs/error-messages/compiler-errors-2/compiler-error-c2761.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2762.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2764.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2765.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2766.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2767.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2770.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2771.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2773.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2774.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2775.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2776.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2777.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2778.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2779.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2780.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2781.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2782.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2783.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2784.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2785.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2786.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2787.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2788.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2790.md | 2 +- 25 files changed, 25 insertions(+), 25 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2761.md b/docs/error-messages/compiler-errors-2/compiler-error-c2761.md index 1e8e60e233f..b96797f41f3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2761.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2761.md @@ -8,7 +8,7 @@ ms.assetid: 38c79a05-b56d-485b-820f-95e8c0cb926f --- # Compiler Error C2761 -'function' : member function redeclaration not allowed +> 'function' : member function redeclaration not allowed You cannot redeclare a member function. You can define it, but not redeclare it. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2762.md b/docs/error-messages/compiler-errors-2/compiler-error-c2762.md index 6b64d52ba52..83aa82101f4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2762.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2762.md @@ -8,7 +8,7 @@ ms.assetid: 8b81a801-fd48-40a1-8bee-0748795b12e4 --- # Compiler Error C2762 -'class' : invalid expression as a template argument for 'argument' +> 'class' : invalid expression as a template argument for 'argument' When using [/Za](../../build/reference/za-ze-disable-language-extensions.md), the compiler will not convert an integral to a pointer. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2764.md b/docs/error-messages/compiler-errors-2/compiler-error-c2764.md index cc1c8e94940..da4a5f0259b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2764.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2764.md @@ -8,7 +8,7 @@ ms.assetid: 3754f5af-e094-4425-be20-d0c9a9b5baec --- # Compiler Error C2764 -'param' : template parameter not used or deducible in partial specialization 'specialization' +> 'param' : template parameter not used or deducible in partial specialization 'specialization' A template parameter is not used in a partial specialization. This makes the partial specialization unusable because the template parameter cannot be deduced. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2765.md b/docs/error-messages/compiler-errors-2/compiler-error-c2765.md index 08850d76472..5a653696ce2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2765.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2765.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2765"] --- # Compiler Error C2765 -'function' : an explicit specialization of a function template cannot have any default arguments +> 'function' : an explicit specialization of a function template cannot have any default arguments Default arguments are not allowed on an explicit specialization of a function template. For more information, see [Explicit Specialization of Function Templates](../../cpp/explicit-specialization-of-function-templates.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2766.md b/docs/error-messages/compiler-errors-2/compiler-error-c2766.md index 765ffaba7d7..4a5d32492a7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2766.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2766.md @@ -8,7 +8,7 @@ ms.assetid: 8032f4ca-6827-4f04-9c61-c44643c85cc4 --- # Compiler Error C2766 -explicit specialization; 'specialization' has already been defined +> explicit specialization; 'specialization' has already been defined Duplicate explicit specializations are not allowed. For more information, see [Explicit Specialization of Function Templates](../../cpp/explicit-specialization-of-function-templates.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2767.md b/docs/error-messages/compiler-errors-2/compiler-error-c2767.md index 0e37e783405..617f7bc801c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2767.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2767.md @@ -8,7 +8,7 @@ ms.assetid: e8f84178-a160-4d71-a236-07e4fcc11e96 --- # Compiler Error C2767 -managed or WinRTarray dimension mismatch : expected N argument(s) - M provided +> managed or WinRTarray dimension mismatch : expected N argument(s) - M provided A managed or WinRT array declaration was ill formed. For more information, see [array](../../extensions/arrays-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2770.md b/docs/error-messages/compiler-errors-2/compiler-error-c2770.md index 93734f5356f..791dca1d754 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2770.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2770.md @@ -8,7 +8,7 @@ ms.assetid: 100001b5-80b0-4971-8ff6-9023f443c926 --- # Compiler Error C2770 -invalid explicit template_or_generic argument(s) for 'template' +> invalid explicit template_or_generic argument(s) for 'template' Function template candidates with explicit template or generic arguments resulted in disallowed function types. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2771.md b/docs/error-messages/compiler-errors-2/compiler-error-c2771.md index f6d00ce5b5e..78a985a4c7d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2771.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2771.md @@ -8,6 +8,6 @@ ms.assetid: b649cc9f-7cbc-4b42-a5e8-51dad5c55e4b --- # Compiler Error C2771 -\#import only permitted at global or namespace scope +> #import only permitted at global or namespace scope The `#import` directive is not allowed in, for example, a function or structure. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2773.md b/docs/error-messages/compiler-errors-2/compiler-error-c2773.md index a5269df8cb4..b6bf1059362 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2773.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2773.md @@ -8,6 +8,6 @@ ms.assetid: 8d564b26-1623-4d92-aabc-dff33f7b1145 --- # Compiler Error C2773 -\#import and #using available only in C++ compiler +> #import and #using available only in C++ compiler The C compiler does not recognize the `#import` preprocessor directive. Compile the source as C++. Use [/TP](../../build/reference/tc-tp-tc-tp-specify-source-file-type.md) if necessary. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2774.md b/docs/error-messages/compiler-errors-2/compiler-error-c2774.md index 83bb2f1f579..105c1bad50d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2774.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2774.md @@ -8,7 +8,7 @@ ms.assetid: 10f428c6-7f49-489a-92ba-6ef978b7caaf --- # Compiler Error C2774 -'identifier' : no 'put' method is associated with this property +> 'identifier' : no 'put' method is associated with this property A data member declared with [property](../../cpp/property-cpp.md) has no `put` function, but an expression tries to set its value. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2775.md b/docs/error-messages/compiler-errors-2/compiler-error-c2775.md index 0997247f838..efd84ad2766 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2775.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2775.md @@ -8,7 +8,7 @@ ms.assetid: 9c488508-ade0-48f1-b94f-d538d15f807a --- # Compiler Error C2775 -'identifier' : no 'get' method is associated with this property +> 'identifier' : no 'get' method is associated with this property A data member declared with the [property](../../cpp/property-cpp.md) extended attribute does not have a `get` function specified, but an expression tries to retrieve its value. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2776.md b/docs/error-messages/compiler-errors-2/compiler-error-c2776.md index 94145080436..259e19ea590 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2776.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2776.md @@ -8,7 +8,7 @@ ms.assetid: 9d80addc-62c7-40fc-a2cc-60303abb87df --- # Compiler Error C2776 -only one 'get' method can be specified per property +> only one 'get' method can be specified per property You can only specify one `get` function in the [property](../../cpp/property-cpp.md) extended attribute. This error occurs when multiple `get` functions are specified. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2777.md b/docs/error-messages/compiler-errors-2/compiler-error-c2777.md index cff4aef538b..886e7579f54 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2777.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2777.md @@ -8,7 +8,7 @@ ms.assetid: 5fe158c0-2a65-488a-aca2-61d4a8b32d43 --- # Compiler Error C2777 -only one 'put' method can be specified per property +> only one 'put' method can be specified per property A [property](../../cpp/property-cpp.md) declspec modifier had more than one `put` property. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2778.md b/docs/error-messages/compiler-errors-2/compiler-error-c2778.md index febe7f24c82..7f6739f3589 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2778.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2778.md @@ -8,7 +8,7 @@ ms.assetid: b24cb732-2914-42cc-8928-e2d87b393428 --- # Compiler Error C2778 -improperly formed GUID in __declspec(uuid()) +> improperly formed GUID in __declspec(uuid()) An incorrect GUID is supplied to the [uuid](../../cpp/uuid-cpp.md) extended attribute. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2779.md b/docs/error-messages/compiler-errors-2/compiler-error-c2779.md index a5cceba3ae5..881ec6e4584 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2779.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2779.md @@ -8,7 +8,7 @@ ms.assetid: 4a00e492-855a-41f3-8a18-5f60ee20c2f2 --- # Compiler Error C2779 -'declaration' : property methods can only be associated with non-static data members +> 'declaration' : property methods can only be associated with non-static data members The **`property`** extended attribute is incorrectly applied to a static data member. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2780.md b/docs/error-messages/compiler-errors-2/compiler-error-c2780.md index e1d639ffdf2..8d8ee7ae9ef 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2780.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2780.md @@ -8,7 +8,7 @@ ms.assetid: 423793d8-a3b2-4f35-85f8-ae1d043e2b69 --- # Compiler Error C2780 -'declaration' : expects N arguments - M provided +> 'declaration' : expects N arguments - M provided A function template has too few or too many arguments. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2781.md b/docs/error-messages/compiler-errors-2/compiler-error-c2781.md index e7ac58ef5a7..2d0e2b2b8e1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2781.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2781.md @@ -8,7 +8,7 @@ ms.assetid: f29b9963-f55b-427c-8db6-50f37713df5a --- # Compiler Error C2781 -'declaration' : expects at least value1 argument - value2 provided +> 'declaration' : expects at least value1 argument - value2 provided A function template with a variable parameter list has too few arguments. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2782.md b/docs/error-messages/compiler-errors-2/compiler-error-c2782.md index 0b253401473..a9cb8481437 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2782.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2782.md @@ -8,7 +8,7 @@ ms.assetid: 8b685422-294d-4f64-9f3d-c14eaf03a93d --- # Compiler Error C2782 -'declaration' : template parameter 'identifier' is ambiguous +> 'declaration' : template parameter 'identifier' is ambiguous The compiler cannot determine the type of a template argument. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2783.md b/docs/error-messages/compiler-errors-2/compiler-error-c2783.md index c44ff86dbb7..764f2d72f7f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2783.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2783.md @@ -8,7 +8,7 @@ ms.assetid: 1ce94a11-bb8b-4be3-a222-f1f105da74b3 --- # Compiler Error C2783 -'declaration' : could not deduce template argument for 'identifier' +> 'declaration' : could not deduce template argument for 'identifier' The compiler cannot determine a template argument. Default arguments cannot be used to deduce a template argument. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2784.md b/docs/error-messages/compiler-errors-2/compiler-error-c2784.md index a8b82581e80..9c1052a9bd4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2784.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2784.md @@ -8,7 +8,7 @@ ms.assetid: 3d761fe2-881c-48bd-afae-e2e714e20473 --- # Compiler Error C2784 -'declaration' : could not deduce template argument for 'type' from 'type' +> 'declaration' : could not deduce template argument for 'type' from 'type' The compiler cannot determine a template argument from the supplied function arguments. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2785.md b/docs/error-messages/compiler-errors-2/compiler-error-c2785.md index db69f33c9fe..f93d6751987 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2785.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2785.md @@ -8,7 +8,7 @@ ms.assetid: d8d13360-0d00-4815-8475-b49c7f0dc0f3 --- # Compiler Error C2785 -'declaration1' and 'declaration2' have different return types +> 'declaration1' and 'declaration2' have different return types The return type of function template specialization differs from the return type of the primary function template. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2786.md b/docs/error-messages/compiler-errors-2/compiler-error-c2786.md index f8befff1ee9..55e73a6493a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2786.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2786.md @@ -8,7 +8,7 @@ ms.assetid: 6676d8c0-86dd-4a39-bdda-b75a35f4d137 --- # Compiler Error C2786 -'type' : invalid operand for __uuidof +> 'type' : invalid operand for __uuidof The [__uuidof](../../cpp/uuidof-operator.md) operator takes a user-defined type with a GUID attached or an object of such a user-defined type. Possible causes: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2787.md b/docs/error-messages/compiler-errors-2/compiler-error-c2787.md index f6e3c1e6f5b..1936e4201b1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2787.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2787.md @@ -8,7 +8,7 @@ ms.assetid: 34cb57e6-cafe-4ce7-bcc6-53d194629bd0 --- # Compiler Error C2787 -'identifier' : no GUID has been associated with this object +> 'identifier' : no GUID has been associated with this object The [__uuidof](../../cpp/uuidof-operator.md) operator takes a user-defined type with a GUID attached or an object of such a user-defined type. This error occurs when the argument is a user-defined type with no GUID. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2788.md b/docs/error-messages/compiler-errors-2/compiler-error-c2788.md index 688823ae549..9919fec7ce4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2788.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2788.md @@ -8,7 +8,7 @@ ms.assetid: 8688fc5c-e652-43b4-b407-9c488c76f2db --- # Compiler Error C2788 -'identifier' : more than one GUID associated with this object +> 'identifier' : more than one GUID associated with this object The [__uuidof](../../cpp/uuidof-operator.md) operator takes a user-defined type with a GUID attached or an object of such a user-defined type. This error occurs when the argument is an object with multiple GUIDs. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2790.md b/docs/error-messages/compiler-errors-2/compiler-error-c2790.md index 7fa8d57c9bf..bbf6547442e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2790.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2790.md @@ -8,7 +8,7 @@ ms.assetid: 38d4fce1-ba00-413d-8bc1-e8aa43d7bc1f --- # Compiler Error C2790 -'super' : this keyword can only be used within the body of class member function +> 'super' : this keyword can only be used within the body of class member function This error message appears if the user ever tries to uses the keyword [super](../../cpp/super.md) outside of the context of a member function. From 8cc9edd3907ba46352e6a118366293dd33996000 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 7 Aug 2025 23:19:15 +0800 Subject: [PATCH 1283/2255] Add "Remarks" and "Example" headings for error references in range [C2761, C2790] --- docs/error-messages/compiler-errors-2/compiler-error-c2761.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2762.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2764.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2765.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2766.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2767.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2770.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2771.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2773.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2774.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2775.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2776.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2777.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2778.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2779.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2780.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2781.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2782.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2783.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2784.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2785.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2786.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2787.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2788.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2790.md | 4 ++++ 25 files changed, 90 insertions(+) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2761.md b/docs/error-messages/compiler-errors-2/compiler-error-c2761.md index b96797f41f3..4109c387e06 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2761.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2761.md @@ -10,6 +10,8 @@ ms.assetid: 38c79a05-b56d-485b-820f-95e8c0cb926f > 'function' : member function redeclaration not allowed +## Remarks + You cannot redeclare a member function. You can define it, but not redeclare it. ## Examples diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2762.md b/docs/error-messages/compiler-errors-2/compiler-error-c2762.md index 83aa82101f4..51e06ab18c8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2762.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2762.md @@ -10,8 +10,12 @@ ms.assetid: 8b81a801-fd48-40a1-8bee-0748795b12e4 > 'class' : invalid expression as a template argument for 'argument' +## Remarks + When using [/Za](../../build/reference/za-ze-disable-language-extensions.md), the compiler will not convert an integral to a pointer. +## Example + The following sample generates C2762: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2764.md b/docs/error-messages/compiler-errors-2/compiler-error-c2764.md index da4a5f0259b..1bc89ef44ed 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2764.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2764.md @@ -10,6 +10,8 @@ ms.assetid: 3754f5af-e094-4425-be20-d0c9a9b5baec > 'param' : template parameter not used or deducible in partial specialization 'specialization' +## Remarks + A template parameter is not used in a partial specialization. This makes the partial specialization unusable because the template parameter cannot be deduced. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2765.md b/docs/error-messages/compiler-errors-2/compiler-error-c2765.md index 5a653696ce2..be918132f78 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2765.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2765.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C2765"] > 'function' : an explicit specialization of a function template cannot have any default arguments +## Remarks + Default arguments are not allowed on an explicit specialization of a function template. For more information, see [Explicit Specialization of Function Templates](../../cpp/explicit-specialization-of-function-templates.md). +## Example + The following sample generates C2765: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2766.md b/docs/error-messages/compiler-errors-2/compiler-error-c2766.md index 4a5d32492a7..ccbdafdd122 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2766.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2766.md @@ -10,8 +10,12 @@ ms.assetid: 8032f4ca-6827-4f04-9c61-c44643c85cc4 > explicit specialization; 'specialization' has already been defined +## Remarks + Duplicate explicit specializations are not allowed. For more information, see [Explicit Specialization of Function Templates](../../cpp/explicit-specialization-of-function-templates.md). +## Example + The following sample generates C2766: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2767.md b/docs/error-messages/compiler-errors-2/compiler-error-c2767.md index 617f7bc801c..a94755dd978 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2767.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2767.md @@ -10,8 +10,12 @@ ms.assetid: e8f84178-a160-4d71-a236-07e4fcc11e96 > managed or WinRTarray dimension mismatch : expected N argument(s) - M provided +## Remarks + A managed or WinRT array declaration was ill formed. For more information, see [array](../../extensions/arrays-cpp-component-extensions.md). +## Example + The following sample generates C2767 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2770.md b/docs/error-messages/compiler-errors-2/compiler-error-c2770.md index 791dca1d754..892cd7a8554 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2770.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2770.md @@ -10,8 +10,12 @@ ms.assetid: 100001b5-80b0-4971-8ff6-9023f443c926 > invalid explicit template_or_generic argument(s) for 'template' +## Remarks + Function template candidates with explicit template or generic arguments resulted in disallowed function types. +## Example + The following sample generates C2770: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2771.md b/docs/error-messages/compiler-errors-2/compiler-error-c2771.md index 78a985a4c7d..d31cf00eec5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2771.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2771.md @@ -10,4 +10,6 @@ ms.assetid: b649cc9f-7cbc-4b42-a5e8-51dad5c55e4b > #import only permitted at global or namespace scope +## Remarks + The `#import` directive is not allowed in, for example, a function or structure. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2773.md b/docs/error-messages/compiler-errors-2/compiler-error-c2773.md index b6bf1059362..138dd245bb1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2773.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2773.md @@ -10,4 +10,6 @@ ms.assetid: 8d564b26-1623-4d92-aabc-dff33f7b1145 > #import and #using available only in C++ compiler +## Remarks + The C compiler does not recognize the `#import` preprocessor directive. Compile the source as C++. Use [/TP](../../build/reference/tc-tp-tc-tp-specify-source-file-type.md) if necessary. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2774.md b/docs/error-messages/compiler-errors-2/compiler-error-c2774.md index 105c1bad50d..2c53ed6f7de 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2774.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2774.md @@ -10,8 +10,12 @@ ms.assetid: 10f428c6-7f49-489a-92ba-6ef978b7caaf > 'identifier' : no 'put' method is associated with this property +## Remarks + A data member declared with [property](../../cpp/property-cpp.md) has no `put` function, but an expression tries to set its value. +## Example + The following sample generates C2774: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2775.md b/docs/error-messages/compiler-errors-2/compiler-error-c2775.md index efd84ad2766..5d09b2da006 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2775.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2775.md @@ -10,8 +10,12 @@ ms.assetid: 9c488508-ade0-48f1-b94f-d538d15f807a > 'identifier' : no 'get' method is associated with this property +## Remarks + A data member declared with the [property](../../cpp/property-cpp.md) extended attribute does not have a `get` function specified, but an expression tries to retrieve its value. +## Example + The following sample generates C2775: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2776.md b/docs/error-messages/compiler-errors-2/compiler-error-c2776.md index 259e19ea590..c7304738f2b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2776.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2776.md @@ -10,8 +10,12 @@ ms.assetid: 9d80addc-62c7-40fc-a2cc-60303abb87df > only one 'get' method can be specified per property +## Remarks + You can only specify one `get` function in the [property](../../cpp/property-cpp.md) extended attribute. This error occurs when multiple `get` functions are specified. +## Example + The following sample generates C2776: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2777.md b/docs/error-messages/compiler-errors-2/compiler-error-c2777.md index 886e7579f54..89a896e7b44 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2777.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2777.md @@ -10,8 +10,12 @@ ms.assetid: 5fe158c0-2a65-488a-aca2-61d4a8b32d43 > only one 'put' method can be specified per property +## Remarks + A [property](../../cpp/property-cpp.md) declspec modifier had more than one `put` property. +## Example + The following sample generates C2777: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2778.md b/docs/error-messages/compiler-errors-2/compiler-error-c2778.md index 7f6739f3589..eb021823c2d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2778.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2778.md @@ -10,8 +10,12 @@ ms.assetid: b24cb732-2914-42cc-8928-e2d87b393428 > improperly formed GUID in __declspec(uuid()) +## Remarks + An incorrect GUID is supplied to the [uuid](../../cpp/uuid-cpp.md) extended attribute. +## Example + The GUID must be a string of hexadecimal numbers with the following format: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2779.md b/docs/error-messages/compiler-errors-2/compiler-error-c2779.md index 881ec6e4584..9fa794e8ff8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2779.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2779.md @@ -10,8 +10,12 @@ ms.assetid: 4a00e492-855a-41f3-8a18-5f60ee20c2f2 > 'declaration' : property methods can only be associated with non-static data members +## Remarks + The **`property`** extended attribute is incorrectly applied to a static data member. +## Example + The following sample generates C2779: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2780.md b/docs/error-messages/compiler-errors-2/compiler-error-c2780.md index 8d8ee7ae9ef..8328124370f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2780.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2780.md @@ -10,8 +10,12 @@ ms.assetid: 423793d8-a3b2-4f35-85f8-ae1d043e2b69 > 'declaration' : expects N arguments - M provided +## Remarks + A function template has too few or too many arguments. +## Example + The following sample generates C2780 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2781.md b/docs/error-messages/compiler-errors-2/compiler-error-c2781.md index 2d0e2b2b8e1..43c3b8d29f0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2781.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2781.md @@ -10,8 +10,12 @@ ms.assetid: f29b9963-f55b-427c-8db6-50f37713df5a > 'declaration' : expects at least value1 argument - value2 provided +## Remarks + A function template with a variable parameter list has too few arguments. +## Example + The following sample generates C2781: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2782.md b/docs/error-messages/compiler-errors-2/compiler-error-c2782.md index a9cb8481437..e2e4820ef1e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2782.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2782.md @@ -10,8 +10,12 @@ ms.assetid: 8b685422-294d-4f64-9f3d-c14eaf03a93d > 'declaration' : template parameter 'identifier' is ambiguous +## Remarks + The compiler cannot determine the type of a template argument. +## Examples + The following sample generates C2782: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2783.md b/docs/error-messages/compiler-errors-2/compiler-error-c2783.md index 764f2d72f7f..38aafbb8c4b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2783.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2783.md @@ -10,8 +10,12 @@ ms.assetid: 1ce94a11-bb8b-4be3-a222-f1f105da74b3 > 'declaration' : could not deduce template argument for 'identifier' +## Remarks + The compiler cannot determine a template argument. Default arguments cannot be used to deduce a template argument. +## Examples + The following sample generates C2783: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2784.md b/docs/error-messages/compiler-errors-2/compiler-error-c2784.md index 9c1052a9bd4..9805fb7257b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2784.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2784.md @@ -10,8 +10,12 @@ ms.assetid: 3d761fe2-881c-48bd-afae-e2e714e20473 > 'declaration' : could not deduce template argument for 'type' from 'type' +## Remarks + The compiler cannot determine a template argument from the supplied function arguments. +## Example + The following sample generates C2784 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2785.md b/docs/error-messages/compiler-errors-2/compiler-error-c2785.md index f93d6751987..feac08b5fea 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2785.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2785.md @@ -10,6 +10,8 @@ ms.assetid: d8d13360-0d00-4815-8475-b49c7f0dc0f3 > 'declaration1' and 'declaration2' have different return types +## Remarks + The return type of function template specialization differs from the return type of the primary function template. ### To correct this error diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2786.md b/docs/error-messages/compiler-errors-2/compiler-error-c2786.md index 55e73a6493a..a10cb7d413c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2786.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2786.md @@ -10,12 +10,16 @@ ms.assetid: 6676d8c0-86dd-4a39-bdda-b75a35f4d137 > 'type' : invalid operand for __uuidof +## Remarks + The [__uuidof](../../cpp/uuidof-operator.md) operator takes a user-defined type with a GUID attached or an object of such a user-defined type. Possible causes: 1. The argument is not a user-defined type. 1. **`__uuidof`** cannot extract the GUID from the argument. +## Example + The following sample generates C2786: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2787.md b/docs/error-messages/compiler-errors-2/compiler-error-c2787.md index 1936e4201b1..bbc7a22de7d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2787.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2787.md @@ -10,8 +10,12 @@ ms.assetid: 34cb57e6-cafe-4ce7-bcc6-53d194629bd0 > 'identifier' : no GUID has been associated with this object +## Remarks + The [__uuidof](../../cpp/uuidof-operator.md) operator takes a user-defined type with a GUID attached or an object of such a user-defined type. This error occurs when the argument is a user-defined type with no GUID. +## Example + The following sample generates C2787: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2788.md b/docs/error-messages/compiler-errors-2/compiler-error-c2788.md index 9919fec7ce4..c13088fb149 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2788.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2788.md @@ -10,8 +10,12 @@ ms.assetid: 8688fc5c-e652-43b4-b407-9c488c76f2db > 'identifier' : more than one GUID associated with this object +## Remarks + The [__uuidof](../../cpp/uuidof-operator.md) operator takes a user-defined type with a GUID attached or an object of such a user-defined type. This error occurs when the argument is an object with multiple GUIDs. +## Example + The following sample generates C2788: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2790.md b/docs/error-messages/compiler-errors-2/compiler-error-c2790.md index bbf6547442e..5b9a680a0b0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2790.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2790.md @@ -10,8 +10,12 @@ ms.assetid: 38d4fce1-ba00-413d-8bc1-e8aa43d7bc1f > 'super' : this keyword can only be used within the body of class member function +## Remarks + This error message appears if the user ever tries to uses the keyword [super](../../cpp/super.md) outside of the context of a member function. +## Example + The following sample generates C2790: ```cpp From 9099637fc15f53020cb2743cbf15c938706f3114 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 7 Aug 2025 23:20:51 +0800 Subject: [PATCH 1284/2255] Replace term "sample" with "example" for error references in range [C2761, C2790] --- docs/error-messages/compiler-errors-2/compiler-error-c2761.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c2762.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2764.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2765.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2766.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2767.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2768.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2770.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2774.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2775.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2776.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2777.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2778.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2779.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2780.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2781.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2782.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2783.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2784.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2785.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2786.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2787.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2788.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2790.md | 2 +- 24 files changed, 25 insertions(+), 25 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2761.md b/docs/error-messages/compiler-errors-2/compiler-error-c2761.md index 4109c387e06..63ae44b1daf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2761.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2761.md @@ -16,7 +16,7 @@ You cannot redeclare a member function. You can define it, but not redeclare it. ## Examples -The following sample generates C2761. +The following example generates C2761. ```cpp // C2761.cpp @@ -29,7 +29,7 @@ void a::a; // C2761 void a::test; // C2761 ``` -Nonstatic members of a class or structure cannot be defined. The following sample generates C2761. +Nonstatic members of a class or structure cannot be defined. The following example generates C2761. ```cpp // C2761_b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2762.md b/docs/error-messages/compiler-errors-2/compiler-error-c2762.md index 51e06ab18c8..7d5e0ae06c3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2762.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2762.md @@ -16,7 +16,7 @@ When using [/Za](../../build/reference/za-ze-disable-language-extensions.md), th ## Example -The following sample generates C2762: +The following example generates C2762: ```cpp // C2762.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2764.md b/docs/error-messages/compiler-errors-2/compiler-error-c2764.md index 1bc89ef44ed..3feffc12491 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2764.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2764.md @@ -16,7 +16,7 @@ A template parameter is not used in a partial specialization. This makes the par ## Example -The following sample generates C2764: +The following example generates C2764: ```cpp // C2764.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2765.md b/docs/error-messages/compiler-errors-2/compiler-error-c2765.md index be918132f78..46067a15fc3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2765.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2765.md @@ -15,7 +15,7 @@ Default arguments are not allowed on an explicit specialization of a function te ## Example -The following sample generates C2765: +The following example generates C2765: ```cpp // C2765.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2766.md b/docs/error-messages/compiler-errors-2/compiler-error-c2766.md index ccbdafdd122..5b30a1aa0a1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2766.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2766.md @@ -16,7 +16,7 @@ Duplicate explicit specializations are not allowed. For more information, see [E ## Example -The following sample generates C2766: +The following example generates C2766: ```cpp // C2766.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2767.md b/docs/error-messages/compiler-errors-2/compiler-error-c2767.md index a94755dd978..44823754892 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2767.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2767.md @@ -16,7 +16,7 @@ A managed or WinRT array declaration was ill formed. For more information, see [ ## Example -The following sample generates C2767 and shows how to fix it: +The following example generates C2767 and shows how to fix it: ```cpp // C2767.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2768.md b/docs/error-messages/compiler-errors-2/compiler-error-c2768.md index c8ae01c2c0c..64bed60ba95 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2768.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2768.md @@ -18,7 +18,7 @@ This error was introduced in Visual Studio .NET 2003, as part of the compiler co ## Example -The following sample generates C2768: +The following example generates C2768: ```cpp // C2768.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2770.md b/docs/error-messages/compiler-errors-2/compiler-error-c2770.md index 892cd7a8554..f4124ec3b2b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2770.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2770.md @@ -16,7 +16,7 @@ Function template candidates with explicit template or generic arguments resulte ## Example -The following sample generates C2770: +The following example generates C2770: ```cpp // C2770.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2774.md b/docs/error-messages/compiler-errors-2/compiler-error-c2774.md index 2c53ed6f7de..e68947b1511 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2774.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2774.md @@ -16,7 +16,7 @@ A data member declared with [property](../../cpp/property-cpp.md) has no `put` f ## Example -The following sample generates C2774: +The following example generates C2774: ```cpp // C2774.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2775.md b/docs/error-messages/compiler-errors-2/compiler-error-c2775.md index 5d09b2da006..86834667cdd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2775.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2775.md @@ -16,7 +16,7 @@ A data member declared with the [property](../../cpp/property-cpp.md) extended a ## Example -The following sample generates C2775: +The following example generates C2775: ```cpp // C2775.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2776.md b/docs/error-messages/compiler-errors-2/compiler-error-c2776.md index c7304738f2b..5e18b92d1f2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2776.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2776.md @@ -16,7 +16,7 @@ You can only specify one `get` function in the [property](../../cpp/property-cpp ## Example -The following sample generates C2776: +The following example generates C2776: ```cpp // C2776.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2777.md b/docs/error-messages/compiler-errors-2/compiler-error-c2777.md index 89a896e7b44..096cc46923c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2777.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2777.md @@ -16,7 +16,7 @@ A [property](../../cpp/property-cpp.md) declspec modifier had more than one `put ## Example -The following sample generates C2777: +The following example generates C2777: ```cpp // C2777.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2778.md b/docs/error-messages/compiler-errors-2/compiler-error-c2778.md index eb021823c2d..4873bda0996 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2778.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2778.md @@ -27,7 +27,7 @@ struct __declspec(uuid("{00000000-0000-0000-0000-000000000000}")) B{}; The `uuid` extended attribute accepts strings recognized by [CLSIDFromString](/windows/win32/api/combaseapi/nf-combaseapi-clsidfromstring), with or without brace delimiters. -The following sample generates C2778: +The following example generates C2778: ```cpp // C2778b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2779.md b/docs/error-messages/compiler-errors-2/compiler-error-c2779.md index 9fa794e8ff8..6641f047454 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2779.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2779.md @@ -16,7 +16,7 @@ The **`property`** extended attribute is incorrectly applied to a static data me ## Example -The following sample generates C2779: +The following example generates C2779: ```cpp // C2779.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2780.md b/docs/error-messages/compiler-errors-2/compiler-error-c2780.md index 8328124370f..6671fbd1b8d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2780.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2780.md @@ -16,7 +16,7 @@ A function template has too few or too many arguments. ## Example -The following sample generates C2780 and shows how to fix it: +The following example generates C2780 and shows how to fix it: ```cpp // C2780.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2781.md b/docs/error-messages/compiler-errors-2/compiler-error-c2781.md index 43c3b8d29f0..927f23387d5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2781.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2781.md @@ -16,7 +16,7 @@ A function template with a variable parameter list has too few arguments. ## Example -The following sample generates C2781: +The following example generates C2781: ```cpp // C2781.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2782.md b/docs/error-messages/compiler-errors-2/compiler-error-c2782.md index e2e4820ef1e..088e90a558b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2782.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2782.md @@ -16,7 +16,7 @@ The compiler cannot determine the type of a template argument. ## Examples -The following sample generates C2782: +The following example generates C2782: ```cpp // C2782.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2783.md b/docs/error-messages/compiler-errors-2/compiler-error-c2783.md index 38aafbb8c4b..3e47e7fab4f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2783.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2783.md @@ -16,7 +16,7 @@ The compiler cannot determine a template argument. Default arguments cannot be u ## Examples -The following sample generates C2783: +The following example generates C2783: ```cpp // C2783.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2784.md b/docs/error-messages/compiler-errors-2/compiler-error-c2784.md index 9805fb7257b..56f8a2d465f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2784.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2784.md @@ -16,7 +16,7 @@ The compiler cannot determine a template argument from the supplied function arg ## Example -The following sample generates C2784 and shows how to fix it: +The following example generates C2784 and shows how to fix it: ```cpp // C2784.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2785.md b/docs/error-messages/compiler-errors-2/compiler-error-c2785.md index feac08b5fea..2ec516b9571 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2785.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2785.md @@ -20,7 +20,7 @@ The return type of function template specialization differs from the return type ## Example -The following sample generates C2785: +The following example generates C2785: ```cpp // C2785.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2786.md b/docs/error-messages/compiler-errors-2/compiler-error-c2786.md index a10cb7d413c..5170b1a6569 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2786.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2786.md @@ -20,7 +20,7 @@ The [__uuidof](../../cpp/uuidof-operator.md) operator takes a user-defined type ## Example -The following sample generates C2786: +The following example generates C2786: ```cpp // C2786.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2787.md b/docs/error-messages/compiler-errors-2/compiler-error-c2787.md index bbc7a22de7d..ccfe3ba8418 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2787.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2787.md @@ -16,7 +16,7 @@ The [__uuidof](../../cpp/uuidof-operator.md) operator takes a user-defined type ## Example -The following sample generates C2787: +The following example generates C2787: ```cpp // C2787.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2788.md b/docs/error-messages/compiler-errors-2/compiler-error-c2788.md index c13088fb149..778d244d790 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2788.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2788.md @@ -16,7 +16,7 @@ The [__uuidof](../../cpp/uuidof-operator.md) operator takes a user-defined type ## Example -The following sample generates C2788: +The following example generates C2788: ```cpp // C2788.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2790.md b/docs/error-messages/compiler-errors-2/compiler-error-c2790.md index 5b9a680a0b0..9226bdf4e04 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2790.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2790.md @@ -16,7 +16,7 @@ This error message appears if the user ever tries to uses the keyword [super](.. ## Example -The following sample generates C2790: +The following example generates C2790: ```cpp // C2790.cpp From b2cff3c6b1100ba9659596ddfae75a735e37e709 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 7 Aug 2025 23:24:42 +0800 Subject: [PATCH 1285/2255] Update metadata for error references in range [C2761, C2790] --- .../error-messages/compiler-errors-2/compiler-error-c2761.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2762.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2764.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2766.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2767.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2768.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2770.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2771.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2773.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2774.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2775.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2776.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2777.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2778.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2779.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2780.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2781.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2782.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2783.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2784.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2785.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2786.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2787.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2788.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2790.md | 5 ++--- 25 files changed, 50 insertions(+), 75 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2761.md b/docs/error-messages/compiler-errors-2/compiler-error-c2761.md index 63ae44b1daf..ab82d98deff 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2761.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2761.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2761" title: "Compiler Error C2761" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2761" +ms.date: 11/04/2016 f1_keywords: ["C2761"] helpviewer_keywords: ["C2761"] -ms.assetid: 38c79a05-b56d-485b-820f-95e8c0cb926f --- # Compiler Error C2761 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2762.md b/docs/error-messages/compiler-errors-2/compiler-error-c2762.md index 7d5e0ae06c3..6892019ad37 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2762.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2762.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2762" title: "Compiler Error C2762" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2762" +ms.date: 11/04/2016 f1_keywords: ["C2762"] helpviewer_keywords: ["C2762"] -ms.assetid: 8b81a801-fd48-40a1-8bee-0748795b12e4 --- # Compiler Error C2762 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2764.md b/docs/error-messages/compiler-errors-2/compiler-error-c2764.md index 3feffc12491..52a87747fd5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2764.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2764.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2764" title: "Compiler Error C2764" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2764" +ms.date: 11/04/2016 f1_keywords: ["C2764"] helpviewer_keywords: ["C2764"] -ms.assetid: 3754f5af-e094-4425-be20-d0c9a9b5baec --- # Compiler Error C2764 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2766.md b/docs/error-messages/compiler-errors-2/compiler-error-c2766.md index 5b30a1aa0a1..f683b8433a2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2766.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2766.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2766" title: "Compiler Error C2766" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2766" +ms.date: 11/04/2016 f1_keywords: ["C2766"] helpviewer_keywords: ["C2766"] -ms.assetid: 8032f4ca-6827-4f04-9c61-c44643c85cc4 --- # Compiler Error C2766 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2767.md b/docs/error-messages/compiler-errors-2/compiler-error-c2767.md index 44823754892..07706df7ad5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2767.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2767.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2767" title: "Compiler Error C2767" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2767" +ms.date: 11/04/2016 f1_keywords: ["C2767"] helpviewer_keywords: ["C2767"] -ms.assetid: e8f84178-a160-4d71-a236-07e4fcc11e96 --- # Compiler Error C2767 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2768.md b/docs/error-messages/compiler-errors-2/compiler-error-c2768.md index 64bed60ba95..472b925a5e1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2768.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2768.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2768" title: "Compiler Error C2768" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2768" +ms.date: 11/04/2016 f1_keywords: ["C2768"] helpviewer_keywords: ["C2768"] -ms.assetid: a7f6047a-6a80-4737-ad5c-c12868639fb5 --- # Compiler Error C2768 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2770.md b/docs/error-messages/compiler-errors-2/compiler-error-c2770.md index f4124ec3b2b..0e0d7839fdb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2770.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2770.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2770" title: "Compiler Error C2770" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2770" +ms.date: 11/04/2016 f1_keywords: ["C2770"] helpviewer_keywords: ["C2770"] -ms.assetid: 100001b5-80b0-4971-8ff6-9023f443c926 --- # Compiler Error C2770 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2771.md b/docs/error-messages/compiler-errors-2/compiler-error-c2771.md index d31cf00eec5..beafafe99db 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2771.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2771.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2771" title: "Compiler Error C2771" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2771" +ms.date: 11/04/2016 f1_keywords: ["C2771"] helpviewer_keywords: ["C2771"] -ms.assetid: b649cc9f-7cbc-4b42-a5e8-51dad5c55e4b --- # Compiler Error C2771 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2773.md b/docs/error-messages/compiler-errors-2/compiler-error-c2773.md index 138dd245bb1..01ca8986236 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2773.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2773.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2773" title: "Compiler Error C2773" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2773" +ms.date: 11/04/2016 f1_keywords: ["C2773"] helpviewer_keywords: ["C2773"] -ms.assetid: 8d564b26-1623-4d92-aabc-dff33f7b1145 --- # Compiler Error C2773 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2774.md b/docs/error-messages/compiler-errors-2/compiler-error-c2774.md index e68947b1511..6ad8e6659e4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2774.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2774.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2774" title: "Compiler Error C2774" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2774" +ms.date: 11/04/2016 f1_keywords: ["C2774"] helpviewer_keywords: ["C2774"] -ms.assetid: 10f428c6-7f49-489a-92ba-6ef978b7caaf --- # Compiler Error C2774 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2775.md b/docs/error-messages/compiler-errors-2/compiler-error-c2775.md index 86834667cdd..00654e73f7a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2775.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2775.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2775" title: "Compiler Error C2775" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2775" +ms.date: 11/04/2016 f1_keywords: ["C2775"] helpviewer_keywords: ["C2775"] -ms.assetid: 9c488508-ade0-48f1-b94f-d538d15f807a --- # Compiler Error C2775 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2776.md b/docs/error-messages/compiler-errors-2/compiler-error-c2776.md index 5e18b92d1f2..a1844454dfa 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2776.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2776.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2776" title: "Compiler Error C2776" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2776" +ms.date: 11/04/2016 f1_keywords: ["C2776"] helpviewer_keywords: ["C2776"] -ms.assetid: 9d80addc-62c7-40fc-a2cc-60303abb87df --- # Compiler Error C2776 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2777.md b/docs/error-messages/compiler-errors-2/compiler-error-c2777.md index 096cc46923c..5b624a0afe0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2777.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2777.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2777" title: "Compiler Error C2777" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2777" +ms.date: 11/04/2016 f1_keywords: ["C2777"] helpviewer_keywords: ["C2777"] -ms.assetid: 5fe158c0-2a65-488a-aca2-61d4a8b32d43 --- # Compiler Error C2777 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2778.md b/docs/error-messages/compiler-errors-2/compiler-error-c2778.md index 4873bda0996..5988f1aa528 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2778.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2778.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2778" title: "Compiler Error C2778" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2778" +ms.date: 11/04/2016 f1_keywords: ["C2778"] helpviewer_keywords: ["C2778"] -ms.assetid: b24cb732-2914-42cc-8928-e2d87b393428 --- # Compiler Error C2778 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2779.md b/docs/error-messages/compiler-errors-2/compiler-error-c2779.md index 6641f047454..8e0b8797e1f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2779.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2779.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2779" title: "Compiler Error C2779" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2779" +ms.date: 11/04/2016 f1_keywords: ["C2779"] helpviewer_keywords: ["C2779"] -ms.assetid: 4a00e492-855a-41f3-8a18-5f60ee20c2f2 --- # Compiler Error C2779 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2780.md b/docs/error-messages/compiler-errors-2/compiler-error-c2780.md index 6671fbd1b8d..6c5c901d405 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2780.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2780.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2780" title: "Compiler Error C2780" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2780" +ms.date: 11/04/2016 f1_keywords: ["C2780"] helpviewer_keywords: ["C2780"] -ms.assetid: 423793d8-a3b2-4f35-85f8-ae1d043e2b69 --- # Compiler Error C2780 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2781.md b/docs/error-messages/compiler-errors-2/compiler-error-c2781.md index 927f23387d5..8af20a38e2d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2781.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2781.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2781" title: "Compiler Error C2781" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2781" +ms.date: 11/04/2016 f1_keywords: ["C2781"] helpviewer_keywords: ["C2781"] -ms.assetid: f29b9963-f55b-427c-8db6-50f37713df5a --- # Compiler Error C2781 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2782.md b/docs/error-messages/compiler-errors-2/compiler-error-c2782.md index 088e90a558b..1437c8068c4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2782.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2782.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2782" title: "Compiler Error C2782" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2782" +ms.date: 11/04/2016 f1_keywords: ["C2782"] helpviewer_keywords: ["C2782"] -ms.assetid: 8b685422-294d-4f64-9f3d-c14eaf03a93d --- # Compiler Error C2782 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2783.md b/docs/error-messages/compiler-errors-2/compiler-error-c2783.md index 3e47e7fab4f..d906f0cd87f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2783.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2783.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2783" title: "Compiler Error C2783" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2783" +ms.date: 11/04/2016 f1_keywords: ["C2783"] helpviewer_keywords: ["C2783"] -ms.assetid: 1ce94a11-bb8b-4be3-a222-f1f105da74b3 --- # Compiler Error C2783 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2784.md b/docs/error-messages/compiler-errors-2/compiler-error-c2784.md index 56f8a2d465f..289c3733624 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2784.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2784.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2784" title: "Compiler Error C2784" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2784" +ms.date: 11/04/2016 f1_keywords: ["C2784"] helpviewer_keywords: ["C2784"] -ms.assetid: 3d761fe2-881c-48bd-afae-e2e714e20473 --- # Compiler Error C2784 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2785.md b/docs/error-messages/compiler-errors-2/compiler-error-c2785.md index 2ec516b9571..07589c43d27 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2785.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2785.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2785" title: "Compiler Error C2785" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2785" +ms.date: 11/04/2016 f1_keywords: ["C2785"] helpviewer_keywords: ["C2785"] -ms.assetid: d8d13360-0d00-4815-8475-b49c7f0dc0f3 --- # Compiler Error C2785 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2786.md b/docs/error-messages/compiler-errors-2/compiler-error-c2786.md index 5170b1a6569..3cdd52ad9a4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2786.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2786.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2786" title: "Compiler Error C2786" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2786" +ms.date: 11/04/2016 f1_keywords: ["C2786"] helpviewer_keywords: ["C2786"] -ms.assetid: 6676d8c0-86dd-4a39-bdda-b75a35f4d137 --- # Compiler Error C2786 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2787.md b/docs/error-messages/compiler-errors-2/compiler-error-c2787.md index ccfe3ba8418..e7e92cd8d32 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2787.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2787.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2787" title: "Compiler Error C2787" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2787" +ms.date: 11/04/2016 f1_keywords: ["C2787"] helpviewer_keywords: ["C2787"] -ms.assetid: 34cb57e6-cafe-4ce7-bcc6-53d194629bd0 --- # Compiler Error C2787 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2788.md b/docs/error-messages/compiler-errors-2/compiler-error-c2788.md index 778d244d790..f45b9117036 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2788.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2788.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2788" title: "Compiler Error C2788" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2788" +ms.date: 11/04/2016 f1_keywords: ["C2788"] helpviewer_keywords: ["C2788"] -ms.assetid: 8688fc5c-e652-43b4-b407-9c488c76f2db --- # Compiler Error C2788 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2790.md b/docs/error-messages/compiler-errors-2/compiler-error-c2790.md index 9226bdf4e04..bf32485d812 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2790.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2790.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2790" title: "Compiler Error C2790" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2790" +ms.date: 11/04/2016 f1_keywords: ["C2790"] helpviewer_keywords: ["C2790"] -ms.assetid: 38d4fce1-ba00-413d-8bc1-e8aa43d7bc1f --- # Compiler Error C2790 From c42ae099401f22e8b6f69da5df5b0419a59cb981 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Thu, 7 Aug 2025 17:40:50 -0700 Subject: [PATCH 1286/2255] Update compiler-error-c2715.md added the example intro sentence --- docs/error-messages/compiler-errors-2/compiler-error-c2715.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2715.md b/docs/error-messages/compiler-errors-2/compiler-error-c2715.md index 86f7e5ce731..266c4e4c718 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2715.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2715.md @@ -15,6 +15,8 @@ Value types are not valid arguments when using exception handling in managed cod ## Example +The following example generates C2715: + ```cpp // C2715a.cpp // compile with: /clr From 36a0527b44c31f1800fbc48375095b178c000b06 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Thu, 7 Aug 2025 17:42:23 -0700 Subject: [PATCH 1287/2255] Update compiler-error-c2715.md --- docs/error-messages/compiler-errors-2/compiler-error-c2715.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2715.md b/docs/error-messages/compiler-errors-2/compiler-error-c2715.md index 266c4e4c718..ddb31bc681b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2715.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2715.md @@ -15,7 +15,7 @@ Value types are not valid arguments when using exception handling in managed cod ## Example -The following example generates C2715: +The following example generates C2715 and shows how to fix it: ```cpp // C2715a.cpp From b66d87e0252d8f3e3161222c9f7e6b923b64f4a4 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 8 Aug 2025 17:19:54 +0800 Subject: [PATCH 1288/2255] Add backticks in `` header reference --- docs/standard-library/system-error.md | 42 +++++++++++++-------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/docs/standard-library/system-error.md b/docs/standard-library/system-error.md index 0d12bfef30e..cb0f6967ea1 100644 --- a/docs/standard-library/system-error.md +++ b/docs/standard-library/system-error.md @@ -8,13 +8,13 @@ ms.assetid: 5e046c6e-48d9-4740-8c8a-05f3727c1215 --- # `` -Include the header \ to define the exception class `system_error` and related templates for processing low-level system errors. +Include the header `` to define the exception class `system_error` and related templates for processing low-level system errors. ## Requirements -**Header:** \ +**Header:** `` -**Namespace:** std +**Namespace:** `std` ## Members @@ -22,44 +22,44 @@ Include the header \ to define the exception class `system_error` |Name|Description| |-|-| -|[generic_category](../standard-library/system-error-functions.md#generic_category)|Represents the category for generic errors.| -|[is_error_code_enum_v](../standard-library/system-error-functions.md#is_error_code_enum_v)|| -|[is_error_condition_enum_v](../standard-library/system-error-functions.md#is_error_condition_enum_v)|| -|[system_category](../standard-library/system-error-functions.md#system_category)|Represents the category for errors caused by low-level system overflows.| +|[`generic_category`](../standard-library/system-error-functions.md#generic_category)|Represents the category for generic errors.| +|[`is_error_code_enum_v`](../standard-library/system-error-functions.md#is_error_code_enum_v)|| +|[`is_error_condition_enum_v`](../standard-library/system-error-functions.md#is_error_condition_enum_v)|| +|[`system_category`](../standard-library/system-error-functions.md#system_category)|Represents the category for errors caused by low-level system overflows.| ### Functions |Name|Description| |-|-| -|[make_error_code](../standard-library/system-error-functions.md#make_error_code)|Creates an `error_code` object.| -|[make_error_condition](../standard-library/system-error-functions.md#make_error_condition)|Creates an `error_condition` object.| +|[`make_error_code`](../standard-library/system-error-functions.md#make_error_code)|Creates an `error_code` object.| +|[`make_error_condition`](../standard-library/system-error-functions.md#make_error_condition)|Creates an `error_condition` object.| ### Operators |Name|Description| |-|-| -|[operator==](../standard-library/system-error-operators.md#op_eq_eq)|Tests if the object on the left side of the operator is equal to the object on the right side.| -|[operator!=](../standard-library/system-error-operators.md#op_neq)|Tests if the object on the left side of the operator is not equal to the object on the right side.| -|[operator<](../standard-library/system-error-operators.md#op_lt)|Tests if an object is less than the object passed in for comparison.| -|[operator<<](../standard-library/system-error-operators.md#op_ostream)|| +|[`operator==`](../standard-library/system-error-operators.md#op_eq_eq)|Tests if the object on the left side of the operator is equal to the object on the right side.| +|[`operator!=`](../standard-library/system-error-operators.md#op_neq)|Tests if the object on the left side of the operator is not equal to the object on the right side.| +|[`operator<`](../standard-library/system-error-operators.md#op_lt)|Tests if an object is less than the object passed in for comparison.| +|[`operator<<`](../standard-library/system-error-operators.md#op_ostream)|| ### Enums |Name|Description| |-|-| -|[errc](../standard-library/system-error-enums.md#errc)|Provides symbolic names for all the error-code macros defined by POSIX in ``.| +|[`errc`](../standard-library/system-error-enums.md#errc)|Provides symbolic names for all the error-code macros defined by POSIX in ``.| ### Classes and Structs |Name|Description| |-|-| -|[error_category](../standard-library/error-category-class.md)|Represents the abstract, common base for objects that describes a category of error codes.| -|[error_code](../standard-library/error-code-class.md)|Represents low-level system errors that are implementation-specific.| -|[error_condition](../standard-library/error-condition-class.md)|Represents user-defined error codes.| -|[hash](../standard-library/hash-structure.md#system_error)|| -|[is_error_code_enum](../standard-library/is-error-code-enum-class.md)|Represents a type predicate that tests for the [error_code Class](../standard-library/error-code-class.md) enumeration.| -|[is_error_condition_enum](../standard-library/is-error-condition-enum-class.md)|Represents a type predicate that tests for the [error_condition Class](../standard-library/error-condition-class.md) enumeration.| -|[system_error](../standard-library/system-error-class.md)|Represents the base class for all exceptions thrown to report a low-level system overflow.| +|[`error_category`](../standard-library/error-category-class.md)|Represents the abstract, common base for objects that describes a category of error codes.| +|[`error_code`](../standard-library/error-code-class.md)|Represents low-level system errors that are implementation-specific.| +|[`error_condition`](../standard-library/error-condition-class.md)|Represents user-defined error codes.| +|[`hash`](../standard-library/hash-structure.md#system_error)|| +|[`is_error_code_enum`](../standard-library/is-error-code-enum-class.md)|Represents a type predicate that tests for the [`error_code` Class](../standard-library/error-code-class.md) enumeration.| +|[`is_error_condition_enum`](../standard-library/is-error-condition-enum-class.md)|Represents a type predicate that tests for the [`error_condition` Class](../standard-library/error-condition-class.md) enumeration.| +|[`system_error`](../standard-library/system-error-class.md)|Represents the base class for all exceptions thrown to report a low-level system overflow.| ## See also From 71995902323c61ee1bb4f40914a76dd94cdfc1de Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 8 Aug 2025 17:23:17 +0800 Subject: [PATCH 1289/2255] Simplify redundant relative links in `` header reference --- docs/standard-library/system-error.md | 38 +++++++++++++-------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/standard-library/system-error.md b/docs/standard-library/system-error.md index cb0f6967ea1..6d13e7e1291 100644 --- a/docs/standard-library/system-error.md +++ b/docs/standard-library/system-error.md @@ -22,45 +22,45 @@ Include the header `` to define the exception class `system_error` |Name|Description| |-|-| -|[`generic_category`](../standard-library/system-error-functions.md#generic_category)|Represents the category for generic errors.| -|[`is_error_code_enum_v`](../standard-library/system-error-functions.md#is_error_code_enum_v)|| -|[`is_error_condition_enum_v`](../standard-library/system-error-functions.md#is_error_condition_enum_v)|| -|[`system_category`](../standard-library/system-error-functions.md#system_category)|Represents the category for errors caused by low-level system overflows.| +|[`generic_category`](system-error-functions.md#generic_category)|Represents the category for generic errors.| +|[`is_error_code_enum_v`](system-error-functions.md#is_error_code_enum_v)|| +|[`is_error_condition_enum_v`](system-error-functions.md#is_error_condition_enum_v)|| +|[`system_category`](system-error-functions.md#system_category)|Represents the category for errors caused by low-level system overflows.| ### Functions |Name|Description| |-|-| -|[`make_error_code`](../standard-library/system-error-functions.md#make_error_code)|Creates an `error_code` object.| -|[`make_error_condition`](../standard-library/system-error-functions.md#make_error_condition)|Creates an `error_condition` object.| +|[`make_error_code`](system-error-functions.md#make_error_code)|Creates an `error_code` object.| +|[`make_error_condition`](system-error-functions.md#make_error_condition)|Creates an `error_condition` object.| ### Operators |Name|Description| |-|-| -|[`operator==`](../standard-library/system-error-operators.md#op_eq_eq)|Tests if the object on the left side of the operator is equal to the object on the right side.| -|[`operator!=`](../standard-library/system-error-operators.md#op_neq)|Tests if the object on the left side of the operator is not equal to the object on the right side.| -|[`operator<`](../standard-library/system-error-operators.md#op_lt)|Tests if an object is less than the object passed in for comparison.| -|[`operator<<`](../standard-library/system-error-operators.md#op_ostream)|| +|[`operator==`](system-error-operators.md#op_eq_eq)|Tests if the object on the left side of the operator is equal to the object on the right side.| +|[`operator!=`](system-error-operators.md#op_neq)|Tests if the object on the left side of the operator is not equal to the object on the right side.| +|[`operator<`](system-error-operators.md#op_lt)|Tests if an object is less than the object passed in for comparison.| +|[`operator<<`](system-error-operators.md#op_ostream)|| ### Enums |Name|Description| |-|-| -|[`errc`](../standard-library/system-error-enums.md#errc)|Provides symbolic names for all the error-code macros defined by POSIX in ``.| +|[`errc`](system-error-enums.md#errc)|Provides symbolic names for all the error-code macros defined by POSIX in ``.| ### Classes and Structs |Name|Description| |-|-| -|[`error_category`](../standard-library/error-category-class.md)|Represents the abstract, common base for objects that describes a category of error codes.| -|[`error_code`](../standard-library/error-code-class.md)|Represents low-level system errors that are implementation-specific.| -|[`error_condition`](../standard-library/error-condition-class.md)|Represents user-defined error codes.| -|[`hash`](../standard-library/hash-structure.md#system_error)|| -|[`is_error_code_enum`](../standard-library/is-error-code-enum-class.md)|Represents a type predicate that tests for the [`error_code` Class](../standard-library/error-code-class.md) enumeration.| -|[`is_error_condition_enum`](../standard-library/is-error-condition-enum-class.md)|Represents a type predicate that tests for the [`error_condition` Class](../standard-library/error-condition-class.md) enumeration.| -|[`system_error`](../standard-library/system-error-class.md)|Represents the base class for all exceptions thrown to report a low-level system overflow.| +|[`error_category`](error-category-class.md)|Represents the abstract, common base for objects that describes a category of error codes.| +|[`error_code`](error-code-class.md)|Represents low-level system errors that are implementation-specific.| +|[`error_condition`](error-condition-class.md)|Represents user-defined error codes.| +|[`hash`](hash-structure.md#system_error)|| +|[`is_error_code_enum`](is-error-code-enum-class.md)|Represents a type predicate that tests for the [`error_code` Class](error-code-class.md) enumeration.| +|[`is_error_condition_enum`](is-error-condition-enum-class.md)|Represents a type predicate that tests for the [`error_condition` Class](error-condition-class.md) enumeration.| +|[`system_error`](system-error-class.md)|Represents the base class for all exceptions thrown to report a low-level system overflow.| ## See also -[Header Files Reference](../standard-library/cpp-standard-library-header-files.md) +[Header Files Reference](cpp-standard-library-header-files.md) From c6fdfafd5787c178f329525a9c2dd0edf4cb9b15 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 8 Aug 2025 17:38:59 +0800 Subject: [PATCH 1290/2255] Add and update descriptions in `` header reference --- docs/standard-library/system-error.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/standard-library/system-error.md b/docs/standard-library/system-error.md index 6d13e7e1291..d40120a130c 100644 --- a/docs/standard-library/system-error.md +++ b/docs/standard-library/system-error.md @@ -23,16 +23,16 @@ Include the header `` to define the exception class `system_error` |Name|Description| |-|-| |[`generic_category`](system-error-functions.md#generic_category)|Represents the category for generic errors.| -|[`is_error_code_enum_v`](system-error-functions.md#is_error_code_enum_v)|| -|[`is_error_condition_enum_v`](system-error-functions.md#is_error_condition_enum_v)|| -|[`system_category`](system-error-functions.md#system_category)|Represents the category for errors caused by low-level system overflows.| +|[`is_error_code_enum_v`](system-error-functions.md#is_error_code_enum_v)|A helper variable template for the [`is_error_code_enum`](is-error-code-enum-class.md) value.| +|[`is_error_condition_enum_v`](system-error-functions.md#is_error_condition_enum_v)|A helper variable template for the [`is_error_condition_enum`](is-error-condition-enum-class.md) value.| +|[`system_category`](system-error-functions.md#system_category)|Represents the category for operating system errors.| ### Functions |Name|Description| |-|-| -|[`make_error_code`](system-error-functions.md#make_error_code)|Creates an `error_code` object.| -|[`make_error_condition`](system-error-functions.md#make_error_condition)|Creates an `error_condition` object.| +|[`make_error_code`](system-error-functions.md#make_error_code)|Creates an [`error_code`](error-code-class.md) object.| +|[`make_error_condition`](system-error-functions.md#make_error_condition)|Creates an [`error_condition`](error-condition-class.md) object.| ### Operators @@ -41,7 +41,7 @@ Include the header `` to define the exception class `system_error` |[`operator==`](system-error-operators.md#op_eq_eq)|Tests if the object on the left side of the operator is equal to the object on the right side.| |[`operator!=`](system-error-operators.md#op_neq)|Tests if the object on the left side of the operator is not equal to the object on the right side.| |[`operator<`](system-error-operators.md#op_lt)|Tests if an object is less than the object passed in for comparison.| -|[`operator<<`](system-error-operators.md#op_ostream)|| +|[`operator<<`](system-error-operators.md#op_ostream)|Inserts an [`error_code`](error-code-class.md) object into the output stream.| ### Enums @@ -56,10 +56,10 @@ Include the header `` to define the exception class `system_error` |[`error_category`](error-category-class.md)|Represents the abstract, common base for objects that describes a category of error codes.| |[`error_code`](error-code-class.md)|Represents low-level system errors that are implementation-specific.| |[`error_condition`](error-condition-class.md)|Represents user-defined error codes.| -|[`hash`](hash-structure.md#system_error)|| -|[`is_error_code_enum`](is-error-code-enum-class.md)|Represents a type predicate that tests for the [`error_code` Class](error-code-class.md) enumeration.| -|[`is_error_condition_enum`](is-error-condition-enum-class.md)|Represents a type predicate that tests for the [`error_condition` Class](error-condition-class.md) enumeration.| -|[`system_error`](system-error-class.md)|Represents the base class for all exceptions thrown to report a low-level system overflow.| +|[`hash`](hash-structure.md#system_error)|Template specializations of [`std::hash`](hash-class.md) for [`error_code`](error-code-class.md) and [`error_condition`](error-condition-class.md).| +|[`is_error_code_enum`](is-error-code-enum-class.md)|Represents a type predicate that tests for the [`error_code`](error-code-class.md) enumeration.| +|[`is_error_condition_enum`](is-error-condition-enum-class.md)|Represents a type predicate that tests for the [`error_condition`](error-condition-class.md) enumeration.| +|[`system_error`](system-error-class.md)|Represents the base class for all exceptions thrown to report a low-level system error.| ## See also From 52815894a789a320227bbdc248acaa090bfa134c Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 8 Aug 2025 17:39:41 +0800 Subject: [PATCH 1291/2255] Update metadata in `` header reference --- docs/standard-library/system-error.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/standard-library/system-error.md b/docs/standard-library/system-error.md index d40120a130c..8a633804bff 100644 --- a/docs/standard-library/system-error.md +++ b/docs/standard-library/system-error.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: " title: "" -ms.date: "03/15/2019" +description: "Learn more about: " +ms.date: 03/15/2019 f1_keywords: [""] helpviewer_keywords: ["system_error header"] -ms.assetid: 5e046c6e-48d9-4740-8c8a-05f3727c1215 --- # `` From 645bfcc28f9d2f2b0570827a46b6420662dc5d33 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 8 Aug 2025 17:59:37 +0800 Subject: [PATCH 1292/2255] Add C6064 "See also" link in C4473 warning reference --- docs/error-messages/compiler-warnings/c4473.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/error-messages/compiler-warnings/c4473.md b/docs/error-messages/compiler-warnings/c4473.md index b10194290b8..c83108b1f7f 100644 --- a/docs/error-messages/compiler-warnings/c4473.md +++ b/docs/error-messages/compiler-warnings/c4473.md @@ -54,3 +54,7 @@ void scan_func(int a, float f) ``` In this example, **scanf_s** requires two arguments for each placeholder, one to supply the address to write to, and a second to supply the size of the first. Check the documentation for each library function for an explanation of the required arguments. + +## See also + +[C6064](../../code-quality/c6064.md) From 38fcfd60b91a772ee4822439235c0bf835fd61d0 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 8 Aug 2025 18:00:19 +0800 Subject: [PATCH 1293/2255] Update metadata in 2 warning topics --- docs/code-quality/c6064.md | 2 +- docs/error-messages/compiler-warnings/c4473.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/code-quality/c6064.md b/docs/code-quality/c6064.md index 645f77ff241..c17eeaf1c7a 100644 --- a/docs/code-quality/c6064.md +++ b/docs/code-quality/c6064.md @@ -1,6 +1,6 @@ --- +title: "Warning C6064" description: "Learn more about: Warning C6064" -title: Warning C6064 ms.date: 2/07/2023 f1_keywords: ["C6064", "MISSING_INTEGER_ARGUMENT_TO_FORMAT_FUNCTION", "__WARNING_MISSING_INTEGER_ARGUMENT_TO_FORMAT_FUNCTION"] helpviewer_keywords: ["C6064"] diff --git a/docs/error-messages/compiler-warnings/c4473.md b/docs/error-messages/compiler-warnings/c4473.md index c83108b1f7f..5dfe94c2862 100644 --- a/docs/error-messages/compiler-warnings/c4473.md +++ b/docs/error-messages/compiler-warnings/c4473.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4473" title: "Compiler Warning C4473" -ms.date: "02/16/2018" +description: "Learn more about: Compiler Warning (level 1) C4473" +ms.date: 02/16/2018 f1_keywords: ["C4473"] helpviewer_keywords: ["C4473"] --- From 8afb23c2b8ffbe734b4a19b0edb24a4e2cd02444 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 8 Aug 2025 18:26:18 +0800 Subject: [PATCH 1294/2255] Merge unnecessary multiline `f1_keywords` and `helpviewer_keywords` --- docs/standard-library/span-class.md | 3 +-- docs/standard-library/unordered-multimap-class.md | 7 ++----- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/docs/standard-library/span-class.md b/docs/standard-library/span-class.md index 010b8fef931..ee46c66ff03 100644 --- a/docs/standard-library/span-class.md +++ b/docs/standard-library/span-class.md @@ -2,8 +2,7 @@ title: span class (C++ Standard Library) description: "API reference for the Standard Template Library (STL) span class, which provides a lightweight view over a contiguous sequence of objects." ms.date: "05/28/2020" -f1_keywords: ["span/std::span", "span/std::span::const_pointer", "span/std::span::const_reference", "span/std::span::difference_type", "span/std::span::element_type", "span/std::span::iterator", "span/std::span::pointer", "span/std::span::reference", "span/std::span::reverse_iterator", "span/std::span::size_type", "span/std::span::value_type", "span/std::span::at", "span/std::span::assign", "span/std::span::back", "span/std::span::begin", "span/std::span::data", "span/std::span::empty", "span/std::span::end", "span/std::span::front", "span/std::span::rbegin", "span/std::span::rend", -"span/std::span::size", "span/std::span::size_bytes", "span/std::span::operator=", "span/std::span::operator[]"] +f1_keywords: ["span/std::span", "span/std::span::const_pointer", "span/std::span::const_reference", "span/std::span::difference_type", "span/std::span::element_type", "span/std::span::iterator", "span/std::span::pointer", "span/std::span::reference", "span/std::span::reverse_iterator", "span/std::span::size_type", "span/std::span::value_type", "span/std::span::at", "span/std::span::assign", "span/std::span::back", "span/std::span::begin", "span/std::span::data", "span/std::span::empty", "span/std::span::end", "span/std::span::front", "span/std::span::rbegin", "span/std::span::rend", "span/std::span::size", "span/std::span::size_bytes", "span/std::span::operator=", "span/std::span::operator[]"] helpviewer_keywords: ["std::span [C++]", "std::span [C++], const_pointer", "std::span [C++], const_reference", "std::span [C++], difference_type", "std::span [C++], element_type", "std::span [C++], iterator", "std::span [C++], pointer", "std::span [C++], reference", "std::span [C++], reverse_iterator", "std::span [C++], size_type", "std::span [C++], value_type", "std::span [C++], assign", "std::span [C++], at", "std::span [C++], back", "std::span [C++], begin", "std::span [C++], data", "std::span [C++], empty", "std::span [C++], end", "std::span [C++], front", "std::span [C++], rbegin", "std::span [C++], rend", "std::span [C++], size", "std::span [C++], size_bytes"] dev_langs: ["C++"] --- diff --git a/docs/standard-library/unordered-multimap-class.md b/docs/standard-library/unordered-multimap-class.md index 516585e9dcb..b1071b77809 100644 --- a/docs/standard-library/unordered-multimap-class.md +++ b/docs/standard-library/unordered-multimap-class.md @@ -2,11 +2,8 @@ title: "unordered_multimap Class" description: "API overview for the C++ Standard Library container class `unordered_multimap`." ms.date: 9/9/2020 -f1_keywords: ["unordered_map/std::unordered_multimap", "unordered_map/std::unordered_multimap::allocator_type", "unordered_map/std::unordered_multimap::const_iterator", "unordered_map/std::unordered_multimap::const_local_iterator", "unordered_map/std::unordered_multimap::const_pointer", "unordered_map/std::unordered_multimap::const_reference", "unordered_map/std::unordered_multimap::difference_type", "unordered_map/std::unordered_multimap::hasher", "unordered_map/std::unordered_multimap::iterator", "unordered_map/std::unordered_multimap::key_equal", "unordered_map/std::unordered_multimap::key_type", "unordered_map/std::unordered_multimap::local_iterator", "unordered_map/std::unordered_multimap::mapped_type", "unordered_map/std::unordered_multimap::pointer", "unordered_map/std::unordered_multimap::reference", "unordered_map/std::unordered_multimap::size_type", "unordered_map/std::unordered_multimap::value_type", "unordered_map/std::unordered_multimap::begin", "unordered_map/std::unordered_multimap::bucket", "unordered_map/std::unordered_multimap::bucket_count", "unordered_map/std::unordered_multimap::bucket_size", "unordered_map/std::unordered_multimap::cbegin", "unordered_map/std::unordered_multimap::cend", "unordered_map/std::unordered_multimap::clear", -"unordered_map/std::unordered_multimap::contains", "unordered_map/std::unordered_multimap::count", "unordered_map/std::unordered_multimap::emplace", "unordered_map/std::unordered_multimap::emplace_hint", "unordered_map/std::unordered_multimap::empty", "unordered_map/std::unordered_multimap::end", "unordered_map/std::unordered_multimap::equal_range", "unordered_map/std::unordered_multimap::erase", "unordered_map/std::unordered_multimap::find", "unordered_map/std::unordered_multimap::get_allocator", "unordered_map/std::unordered_multimap::hash", "unordered_map/std::unordered_multimap::insert", "unordered_map/std::unordered_multimap::key_eq", "unordered_map/std::unordered_multimap::load_factor", "unordered_map/std::unordered_multimap::max_bucket_count", "unordered_map/std::unordered_multimap::max_load_factor", "unordered_map/std::unordered_multimap::max_size", "unordered_map/std::unordered_multimap::rehash", "unordered_map/std::unordered_multimap::size", "unordered_map/std::unordered_multimap::swap", "unordered_map/std::unordered_multimap::unordered_multimap", "unordered_map/std::unordered_multimap::operator=", "unordered_map/std::unordered_multimap::hash_function"] -helpviewer_keywords: ["std::unordered_multimap", "std::unordered_multimap::allocator_type", "std::unordered_multimap::const_iterator", "std::unordered_multimap::const_local_iterator", "std::unordered_multimap::const_pointer", "std::unordered_multimap::const_reference", "std::unordered_multimap::difference_type", "std::unordered_multimap::hasher", "std::unordered_multimap::iterator", "std::unordered_multimap::key_equal", "std::unordered_multimap::key_type", "std::unordered_multimap::local_iterator", "std::unordered_multimap::mapped_type", "std::unordered_multimap::pointer", "std::unordered_multimap::reference", "std::unordered_multimap::size_type", "std::unordered_multimap::value_type", "std::unordered_multimap::begin", "std::unordered_multimap::bucket", "std::unordered_multimap::bucket_count", "std::unordered_multimap::bucket_size", "std::unordered_multimap::cbegin", "std::unordered_multimap::cend", "std::unordered_multimap::clear", -"std::unordered_multimap::contains", -"std::unordered_multimap::count", "std::unordered_multimap::emplace", "std::unordered_multimap::emplace_hint", "std::unordered_multimap::empty", "std::unordered_multimap::end", "std::unordered_multimap::equal_range", "std::unordered_multimap::erase", "std::unordered_multimap::find", "std::unordered_multimap::get_allocator", "std::unordered_multimap::hash", "std::unordered_multimap::insert", "std::unordered_multimap::key_eq", "std::unordered_multimap::load_factor", "std::unordered_multimap::max_bucket_count", "std::unordered_multimap::max_load_factor", "std::unordered_multimap::max_size", "std::unordered_multimap::rehash", "std::unordered_multimap::size", "std::unordered_multimap::swap", "std::unordered_multimap::unordered_multimap", "std::unordered_multimap::operator=", "std::unordered_multimap::allocator_type", "std::unordered_multimap::const_iterator", "std::unordered_multimap::const_local_iterator", "std::unordered_multimap::const_pointer", "std::unordered_multimap::const_reference", "std::unordered_multimap::difference_type", "std::unordered_multimap::hasher", "std::unordered_multimap::iterator", "std::unordered_multimap::key_equal", "std::unordered_multimap::key_type", "std::unordered_multimap::local_iterator", "std::unordered_multimap::mapped_type", "std::unordered_multimap::pointer", "std::unordered_multimap::reference", "std::unordered_multimap::size_type", "std::unordered_multimap::value_type", "std::unordered_multimap::begin", "std::unordered_multimap::bucket", "std::unordered_multimap::bucket_count", "std::unordered_multimap::bucket_size", "std::unordered_multimap::cbegin", "std::unordered_multimap::cend", "std::unordered_multimap::clear", "std::unordered_multimap::count", "std::unordered_multimap::emplace", "std::unordered_multimap::emplace_hint", "std::unordered_multimap::empty", "std::unordered_multimap::end", "std::unordered_multimap::equal_range", "std::unordered_multimap::erase", "std::unordered_multimap::find", "std::unordered_multimap::get_allocator", "std::unordered_multimap::hash_function", "std::unordered_multimap::insert", "std::unordered_multimap::key_eq", "std::unordered_multimap::load_factor", "std::unordered_multimap::max_bucket_count", "std::unordered_multimap::max_load_factor", "std::unordered_multimap::max_size", "std::unordered_multimap::rehash", "std::unordered_multimap::size", "std::unordered_multimap::swap"] +f1_keywords: ["unordered_map/std::unordered_multimap", "unordered_map/std::unordered_multimap::allocator_type", "unordered_map/std::unordered_multimap::const_iterator", "unordered_map/std::unordered_multimap::const_local_iterator", "unordered_map/std::unordered_multimap::const_pointer", "unordered_map/std::unordered_multimap::const_reference", "unordered_map/std::unordered_multimap::difference_type", "unordered_map/std::unordered_multimap::hasher", "unordered_map/std::unordered_multimap::iterator", "unordered_map/std::unordered_multimap::key_equal", "unordered_map/std::unordered_multimap::key_type", "unordered_map/std::unordered_multimap::local_iterator", "unordered_map/std::unordered_multimap::mapped_type", "unordered_map/std::unordered_multimap::pointer", "unordered_map/std::unordered_multimap::reference", "unordered_map/std::unordered_multimap::size_type", "unordered_map/std::unordered_multimap::value_type", "unordered_map/std::unordered_multimap::begin", "unordered_map/std::unordered_multimap::bucket", "unordered_map/std::unordered_multimap::bucket_count", "unordered_map/std::unordered_multimap::bucket_size", "unordered_map/std::unordered_multimap::cbegin", "unordered_map/std::unordered_multimap::cend", "unordered_map/std::unordered_multimap::clear", "unordered_map/std::unordered_multimap::contains", "unordered_map/std::unordered_multimap::count", "unordered_map/std::unordered_multimap::emplace", "unordered_map/std::unordered_multimap::emplace_hint", "unordered_map/std::unordered_multimap::empty", "unordered_map/std::unordered_multimap::end", "unordered_map/std::unordered_multimap::equal_range", "unordered_map/std::unordered_multimap::erase", "unordered_map/std::unordered_multimap::find", "unordered_map/std::unordered_multimap::get_allocator", "unordered_map/std::unordered_multimap::hash", "unordered_map/std::unordered_multimap::insert", "unordered_map/std::unordered_multimap::key_eq", "unordered_map/std::unordered_multimap::load_factor", "unordered_map/std::unordered_multimap::max_bucket_count", "unordered_map/std::unordered_multimap::max_load_factor", "unordered_map/std::unordered_multimap::max_size", "unordered_map/std::unordered_multimap::rehash", "unordered_map/std::unordered_multimap::size", "unordered_map/std::unordered_multimap::swap", "unordered_map/std::unordered_multimap::unordered_multimap", "unordered_map/std::unordered_multimap::operator=", "unordered_map/std::unordered_multimap::hash_function"] +helpviewer_keywords: ["std::unordered_multimap", "std::unordered_multimap::allocator_type", "std::unordered_multimap::const_iterator", "std::unordered_multimap::const_local_iterator", "std::unordered_multimap::const_pointer", "std::unordered_multimap::const_reference", "std::unordered_multimap::difference_type", "std::unordered_multimap::hasher", "std::unordered_multimap::iterator", "std::unordered_multimap::key_equal", "std::unordered_multimap::key_type", "std::unordered_multimap::local_iterator", "std::unordered_multimap::mapped_type", "std::unordered_multimap::pointer", "std::unordered_multimap::reference", "std::unordered_multimap::size_type", "std::unordered_multimap::value_type", "std::unordered_multimap::begin", "std::unordered_multimap::bucket", "std::unordered_multimap::bucket_count", "std::unordered_multimap::bucket_size", "std::unordered_multimap::cbegin", "std::unordered_multimap::cend", "std::unordered_multimap::clear", "std::unordered_multimap::contains", "std::unordered_multimap::count", "std::unordered_multimap::emplace", "std::unordered_multimap::emplace_hint", "std::unordered_multimap::empty", "std::unordered_multimap::end", "std::unordered_multimap::equal_range", "std::unordered_multimap::erase", "std::unordered_multimap::find", "std::unordered_multimap::get_allocator", "std::unordered_multimap::hash", "std::unordered_multimap::insert", "std::unordered_multimap::key_eq", "std::unordered_multimap::load_factor", "std::unordered_multimap::max_bucket_count", "std::unordered_multimap::max_load_factor", "std::unordered_multimap::max_size", "std::unordered_multimap::rehash", "std::unordered_multimap::size", "std::unordered_multimap::swap", "std::unordered_multimap::unordered_multimap", "std::unordered_multimap::operator=", "std::unordered_multimap::allocator_type", "std::unordered_multimap::const_iterator", "std::unordered_multimap::const_local_iterator", "std::unordered_multimap::const_pointer", "std::unordered_multimap::const_reference", "std::unordered_multimap::difference_type", "std::unordered_multimap::hasher", "std::unordered_multimap::iterator", "std::unordered_multimap::key_equal", "std::unordered_multimap::key_type", "std::unordered_multimap::local_iterator", "std::unordered_multimap::mapped_type", "std::unordered_multimap::pointer", "std::unordered_multimap::reference", "std::unordered_multimap::size_type", "std::unordered_multimap::value_type", "std::unordered_multimap::begin", "std::unordered_multimap::bucket", "std::unordered_multimap::bucket_count", "std::unordered_multimap::bucket_size", "std::unordered_multimap::cbegin", "std::unordered_multimap::cend", "std::unordered_multimap::clear", "std::unordered_multimap::count", "std::unordered_multimap::emplace", "std::unordered_multimap::emplace_hint", "std::unordered_multimap::empty", "std::unordered_multimap::end", "std::unordered_multimap::equal_range", "std::unordered_multimap::erase", "std::unordered_multimap::find", "std::unordered_multimap::get_allocator", "std::unordered_multimap::hash_function", "std::unordered_multimap::insert", "std::unordered_multimap::key_eq", "std::unordered_multimap::load_factor", "std::unordered_multimap::max_bucket_count", "std::unordered_multimap::max_load_factor", "std::unordered_multimap::max_size", "std::unordered_multimap::rehash", "std::unordered_multimap::size", "std::unordered_multimap::swap"] --- # unordered_multimap Class From 7d2fac6c216bef02126490f7452c0ff8a5afeae5 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 8 Aug 2025 18:27:02 +0800 Subject: [PATCH 1295/2255] Update metadata in `span` class reference --- docs/standard-library/span-class.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/standard-library/span-class.md b/docs/standard-library/span-class.md index ee46c66ff03..8fc221fe457 100644 --- a/docs/standard-library/span-class.md +++ b/docs/standard-library/span-class.md @@ -1,7 +1,7 @@ --- -title: span class (C++ Standard Library) +title: "span class (C++ Standard Library)" description: "API reference for the Standard Template Library (STL) span class, which provides a lightweight view over a contiguous sequence of objects." -ms.date: "05/28/2020" +ms.date: 05/28/2020 f1_keywords: ["span/std::span", "span/std::span::const_pointer", "span/std::span::const_reference", "span/std::span::difference_type", "span/std::span::element_type", "span/std::span::iterator", "span/std::span::pointer", "span/std::span::reference", "span/std::span::reverse_iterator", "span/std::span::size_type", "span/std::span::value_type", "span/std::span::at", "span/std::span::assign", "span/std::span::back", "span/std::span::begin", "span/std::span::data", "span/std::span::empty", "span/std::span::end", "span/std::span::front", "span/std::span::rbegin", "span/std::span::rend", "span/std::span::size", "span/std::span::size_bytes", "span/std::span::operator=", "span/std::span::operator[]"] helpviewer_keywords: ["std::span [C++]", "std::span [C++], const_pointer", "std::span [C++], const_reference", "std::span [C++], difference_type", "std::span [C++], element_type", "std::span [C++], iterator", "std::span [C++], pointer", "std::span [C++], reference", "std::span [C++], reverse_iterator", "std::span [C++], size_type", "std::span [C++], value_type", "std::span [C++], assign", "std::span [C++], at", "std::span [C++], back", "std::span [C++], begin", "std::span [C++], data", "std::span [C++], empty", "std::span [C++], end", "std::span [C++], front", "std::span [C++], rbegin", "std::span [C++], rend", "std::span [C++], size", "std::span [C++], size_bytes"] dev_langs: ["C++"] From a97223e06c19cf035a55b19fee96f238eb3f0bf3 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 8 Aug 2025 22:59:38 +0800 Subject: [PATCH 1296/2255] Add blockquotes for error messages in range [C2791, C2820] --- docs/error-messages/compiler-errors-2/compiler-error-c2791.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2792.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2793.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2794.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2795.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2797.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2798.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2800.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2801.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2802.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2803.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2804.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2805.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2806.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2807.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2808.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2809.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2810.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2811.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2812.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2813.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2814.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2815.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2817.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2818.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2819.md | 2 +- 26 files changed, 26 insertions(+), 26 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2791.md b/docs/error-messages/compiler-errors-2/compiler-error-c2791.md index 127353149a4..2e8be8fd0ac 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2791.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2791.md @@ -8,7 +8,7 @@ ms.assetid: 938ad1fb-75d9-4ce2-ad92-83d6249005b5 --- # Compiler Error C2791 -illegal use of 'super': 'class' does not have any base classes +> illegal use of 'super': 'class' does not have any base classes The keyword [super](../../cpp/super.md) was used within the context of a member function of a class that does not have any base classes. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2792.md b/docs/error-messages/compiler-errors-2/compiler-error-c2792.md index 54f751a3118..66551ace49d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2792.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2792.md @@ -8,7 +8,7 @@ ms.assetid: 392cf748-4f5e-4e62-a364-3118d5658408 --- # Compiler Error C2792 -'super' : this keyword must be followed by '::' +> 'super' : this keyword must be followed by '::' The only token that can follow the keyword **`__super`** is `::`. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2793.md b/docs/error-messages/compiler-errors-2/compiler-error-c2793.md index 6421099661f..5dae54a4c6b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2793.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2793.md @@ -8,7 +8,7 @@ ms.assetid: ce35f4e8-c357-40ca-95c4-15ff001ad69d --- # Compiler Error C2793 -'token' : unexpected token following '::', identifier or keyword 'operator' expected +> 'token' : unexpected token following '::', identifier or keyword 'operator' expected The only tokens that can follow `__super::` are an identifier or the keyword **`operator`**. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2794.md b/docs/error-messages/compiler-errors-2/compiler-error-c2794.md index d9d8fbb45ff..84d3c0d9510 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2794.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2794.md @@ -8,7 +8,7 @@ ms.assetid: d508191c-9044-4c6a-9119-4bca668c0b93 --- # Compiler Error C2794 -'function' : is not a member of any direct or indirect base class of 'class' +> 'function' : is not a member of any direct or indirect base class of 'class' You tried to use [super](../../cpp/super.md) to call a nonexistent member function. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2795.md b/docs/error-messages/compiler-errors-2/compiler-error-c2795.md index b9aaa67ad82..450f10004bd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2795.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2795.md @@ -8,6 +8,6 @@ ms.assetid: 8cd8c7fe-2add-4871-85f7-9a6afe4ac588 --- # Compiler Error C2795 -'super::function' is not a member function +> 'super::function' is not a member function This error message appears whenever you try to use [super](../../cpp/super.md) to access a member other than a member function. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2797.md b/docs/error-messages/compiler-errors-2/compiler-error-c2797.md index 9b3f1a04db2..eb500a79487 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2797.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2797.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2797"] --- # Compiler Error C2797 -(Obsolete) List initialization inside member initializer list or non-static data member initializer is not implemented. +> (Obsolete) List initialization inside member initializer list or non-static data member initializer is not implemented. This warning is obsolete in Visual Studio 2015. In Visual Studio 2013 and earlier versions, the Microsoft C++ compiler does not implement list initialization inside either a member initializer list or a non-static data member initializer. Before Visual Studio 2013 Update 3, this was silently converted to a function call, which could lead to bad code generation. Visual Studio 2013 Update 3 reports this as an error. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2798.md b/docs/error-messages/compiler-errors-2/compiler-error-c2798.md index 9bdca5513c9..59872836d79 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2798.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2798.md @@ -8,7 +8,7 @@ ms.assetid: fb0cd861-b228-4f81-8090-e28344a727e0 --- # Compiler Error C2798 -'super::member' is ambiguous +> 'super::member' is ambiguous Multiple inherited structures contain the member you referenced with [super](../../cpp/super.md). You could fix the error by either: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2800.md b/docs/error-messages/compiler-errors-2/compiler-error-c2800.md index 31f8908e35f..87a4ad83f59 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2800.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2800.md @@ -8,7 +8,7 @@ ms.assetid: a2f1a590-9fe6-44cb-ad09-b4505ef47c6a --- # Compiler Error C2800 -'operator operator' cannot be overloaded +> 'operator operator' cannot be overloaded The following operators cannot be overloaded: class member access (`.`), pointer to member (`.*`), scope resolution (`::`), conditional expression (`? :`), and **`sizeof`**. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2801.md b/docs/error-messages/compiler-errors-2/compiler-error-c2801.md index 072efc5bada..6dccb3d9c49 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2801.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2801.md @@ -8,7 +8,7 @@ ms.assetid: 35dfc7ea-9e37-4e30-baa1-944dc61302f5 --- # Compiler Error C2801 -'operator operator' must be a non-static member +> 'operator operator' must be a non-static member The following operators can be overloaded only as nonstatic members: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2802.md b/docs/error-messages/compiler-errors-2/compiler-error-c2802.md index 6213cbba277..b34e3185d0c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2802.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2802.md @@ -8,7 +8,7 @@ ms.assetid: 08b68c0e-9382-40ac-8949-39a7a2749e05 --- # Compiler Error C2802 -static member 'operator operator' has no formal parameters +> static member 'operator operator' has no formal parameters An operator declared by a **`static`** member function must have at least one parameter. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2803.md b/docs/error-messages/compiler-errors-2/compiler-error-c2803.md index d3b3c841e34..a6740105639 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2803.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2803.md @@ -8,7 +8,7 @@ ms.assetid: 2cdbe374-8cc4-4c4e-ba15-062a7479e937 --- # Compiler Error C2803 -'operator operator' must have at least one formal parameter of class type +> 'operator operator' must have at least one formal parameter of class type The overloaded operator lacks a parameter of class type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2804.md b/docs/error-messages/compiler-errors-2/compiler-error-c2804.md index 1ca73c5ca65..2c9c5eb059f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2804.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2804.md @@ -8,7 +8,7 @@ ms.assetid: b066e563-cca4-450c-8ba7-3b0d7a89f3ea --- # Compiler Error C2804 -binary 'operator operator' has too many parameters +> binary 'operator operator' has too many parameters The overloaded binary operator member function is declared with more than one parameter. The first operand parameter of a binary operator member function, whose type is the operator's enclosing type, is implied. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2805.md b/docs/error-messages/compiler-errors-2/compiler-error-c2805.md index 69a25b9734a..6087550629c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2805.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2805.md @@ -8,7 +8,7 @@ ms.assetid: c997dc56-e199-442f-b94e-ac551ec9b015 --- # Compiler Error C2805 -binary 'operator operator' has too few parameters +> binary 'operator operator' has too few parameters The binary operator has no parameters. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2806.md b/docs/error-messages/compiler-errors-2/compiler-error-c2806.md index a1efc1388d3..1a9de42a832 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2806.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2806.md @@ -8,7 +8,7 @@ ms.assetid: 7c9ff1f4-1590-4c47-991d-b1075a173b48 --- # Compiler Error C2806 -'operator operator' has too many formal parameters +> 'operator operator' has too many formal parameters An overloaded operator has too many parameters. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2807.md b/docs/error-messages/compiler-errors-2/compiler-error-c2807.md index 1eb9f971c86..4b3e19020ce 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2807.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2807.md @@ -8,7 +8,7 @@ ms.assetid: bd7a207a-f379-4de6-8ee8-c7cab78b3480 --- # Compiler Error C2807 -the second formal parameter to postfix 'operator operator' must be 'int' +> the second formal parameter to postfix 'operator operator' must be 'int' The second parameter to a postfix operator has the wrong type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2808.md b/docs/error-messages/compiler-errors-2/compiler-error-c2808.md index 438adafd4a0..cbe6f7eb7ac 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2808.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2808.md @@ -8,7 +8,7 @@ ms.assetid: 3d745102-d3b3-4735-a7d2-ad42d5bf3cfa --- # Compiler Error C2808 -unary 'operator operator' has too many formal parameters +> unary 'operator operator' has too many formal parameters The unary operator has a nonvoid parameter list. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2809.md b/docs/error-messages/compiler-errors-2/compiler-error-c2809.md index 48d236e3e85..a466d2942b9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2809.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2809.md @@ -8,7 +8,7 @@ ms.assetid: ce796b8e-1a8c-4074-995d-1ad09afd0e93 --- # Compiler Error C2809 -'operator operator' has no formal parameters +> 'operator operator' has no formal parameters The operator lacks required parameters. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2810.md b/docs/error-messages/compiler-errors-2/compiler-error-c2810.md index 43de6906e30..0c86142cd51 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2810.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2810.md @@ -8,7 +8,7 @@ ms.assetid: f63e8f24-d7f6-42ac-904f-72ff49592ba6 --- # Compiler Error C2810 -'interface' : an interface can only inherit from another interface +> 'interface' : an interface can only inherit from another interface An [interface](../../cpp/interface.md) may only inherit from another interface and may not inherit from a class or struct. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2811.md b/docs/error-messages/compiler-errors-2/compiler-error-c2811.md index 4f36772c6c5..3b58e730a58 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2811.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2811.md @@ -8,7 +8,7 @@ ms.assetid: 6a44b18e-44c1-49d8-9b99-e0545b9a6e7d --- # Compiler Error C2811 -'type1' : cannot inherit from 'type2', a ref class can only inherit from a ref class or interface class +> 'type1' : cannot inherit from 'type2', a ref class can only inherit from a ref class or interface class You attempted to use an unmanaged class as a base class for a managed class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2812.md b/docs/error-messages/compiler-errors-2/compiler-error-c2812.md index 5b4483c3476..a9f6938643a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2812.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2812.md @@ -8,7 +8,7 @@ ms.assetid: 22aadb8c-7232-489d-a3ad-60662dda30a8 --- # Compiler Error C2812 -> \#import is not supported with /clr:pure and /clr:safe +> #import is not supported with /clr:pure and /clr:safe ## Remarks diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2813.md b/docs/error-messages/compiler-errors-2/compiler-error-c2813.md index a9ae15d2023..9b03c798820 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2813.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2813.md @@ -8,7 +8,7 @@ ms.assetid: 6cf2135f-7b82-42d1-909a-5e864308a09c --- # Compiler Error C2813 -\#import is not supported with /MP +> #import is not supported with /MP C2813 is emitted if in a compiler command you specify the **/MP** compiler option and two or more files to compile, and one or more of the files contains the[#import](../../preprocessor/hash-import-directive-cpp.md) preprocessor directive. The [#import](../../preprocessor/hash-import-directive-cpp.md) directive generates C++ classes from the types in the specified type library, and then writes those classes to two header files. The [#import](../../preprocessor/hash-import-directive-cpp.md) directive is not supported because if multiple compilation units import the same type library, those units conflict when they try to write the same header files at the same time. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2814.md b/docs/error-messages/compiler-errors-2/compiler-error-c2814.md index 3c5b827f798..f36bf07bb6b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2814.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2814.md @@ -8,7 +8,7 @@ ms.assetid: 7d165136-a08b-4497-a76d-60a21bb19404 --- # Compiler Error C2814 -'member' : a native type cannot be nested within a managed or WinRT type 'type' +> 'member' : a native type cannot be nested within a managed or WinRT type 'type' ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2815.md b/docs/error-messages/compiler-errors-2/compiler-error-c2815.md index 8c0711ede95..eb56186f44c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2815.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2815.md @@ -8,7 +8,7 @@ ms.assetid: d0256fd6-0721-4c99-b03c-52d96e77a613 --- # Compiler Error C2815 -'operator delete' : first formal parameter must be 'void *', but 'param' was used +> 'operator delete' : first formal parameter must be 'void *', but 'param' was used Any user-defined [operator delete](../../standard-library/new-operators.md#op_delete) function must take a first formal parameter of type `void *`. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2817.md b/docs/error-messages/compiler-errors-2/compiler-error-c2817.md index b437cf9ca4e..c761a0d15e6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2817.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2817.md @@ -8,6 +8,6 @@ ms.assetid: bca2e55a-8d86-4ddf-ba2b-4568f3bb776e --- # Compiler Error C2817 -return type for 'operator delete' must be 'void' +> return type for 'operator delete' must be 'void' An overloaded [operator delete](../../standard-library/new-operators.md#op_delete) function cannot return a value. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2818.md b/docs/error-messages/compiler-errors-2/compiler-error-c2818.md index 9ca58a16377..7ec868280df 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2818.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2818.md @@ -8,6 +8,6 @@ ms.assetid: 715fc7c9-0c6d-452b-b7f5-1682cea5e907 --- # Compiler Error C2818 -application of overloaded 'operator ->' is recursive through type 'type' +> application of overloaded 'operator ->' is recursive through type 'type' A redefinition of the class member access operator contains a recursive **`return`** statement. To redefine the `->` operator with recursion, you must move the recursive routine to a separate function called from the operator override function. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2819.md b/docs/error-messages/compiler-errors-2/compiler-error-c2819.md index 7021fec040b..7097af1f7e2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2819.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2819.md @@ -8,7 +8,7 @@ ms.assetid: fcc7762d-cb82-4bb1-a715-0d82da832edf --- # Compiler Error C2819 -type 'type' does not have an overloaded member 'operator ->' +> type 'type' does not have an overloaded member 'operator ->' You need to define `operator->()` to use this pointer operation. From 3a348b39d518d63604497f0ded652a3e745b5552 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 8 Aug 2025 23:07:04 +0800 Subject: [PATCH 1297/2255] Add "Remarks" and "Example" headings for error references in range [C2791, C2820] --- .../compiler-errors-2/compiler-error-c2791.md | 4 ++++ .../compiler-errors-2/compiler-error-c2792.md | 4 ++++ .../compiler-errors-2/compiler-error-c2793.md | 4 ++++ .../compiler-errors-2/compiler-error-c2794.md | 4 ++++ .../compiler-errors-2/compiler-error-c2795.md | 2 ++ .../compiler-errors-2/compiler-error-c2797.md | 4 ++++ .../compiler-errors-2/compiler-error-c2798.md | 4 ++++ .../compiler-errors-2/compiler-error-c2800.md | 4 ++++ .../compiler-errors-2/compiler-error-c2801.md | 4 ++++ .../compiler-errors-2/compiler-error-c2802.md | 4 ++++ .../compiler-errors-2/compiler-error-c2803.md | 4 ++++ .../compiler-errors-2/compiler-error-c2804.md | 2 ++ .../compiler-errors-2/compiler-error-c2805.md | 4 ++++ .../compiler-errors-2/compiler-error-c2806.md | 4 ++++ .../compiler-errors-2/compiler-error-c2807.md | 4 ++++ .../compiler-errors-2/compiler-error-c2808.md | 4 ++++ .../compiler-errors-2/compiler-error-c2809.md | 4 ++++ .../compiler-errors-2/compiler-error-c2810.md | 4 ++++ .../compiler-errors-2/compiler-error-c2811.md | 4 ++++ .../compiler-errors-2/compiler-error-c2813.md | 2 ++ .../compiler-errors-2/compiler-error-c2814.md | 6 +++++- .../compiler-errors-2/compiler-error-c2815.md | 4 ++++ .../compiler-errors-2/compiler-error-c2817.md | 2 ++ .../compiler-errors-2/compiler-error-c2818.md | 2 ++ .../compiler-errors-2/compiler-error-c2819.md | 4 ++++ 25 files changed, 91 insertions(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2791.md b/docs/error-messages/compiler-errors-2/compiler-error-c2791.md index 2e8be8fd0ac..b52eaf7f9e9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2791.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2791.md @@ -10,8 +10,12 @@ ms.assetid: 938ad1fb-75d9-4ce2-ad92-83d6249005b5 > illegal use of 'super': 'class' does not have any base classes +## Remarks + The keyword [super](../../cpp/super.md) was used within the context of a member function of a class that does not have any base classes. +## Example + The following sample generates C2791: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2792.md b/docs/error-messages/compiler-errors-2/compiler-error-c2792.md index 66551ace49d..64ef8884067 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2792.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2792.md @@ -10,8 +10,12 @@ ms.assetid: 392cf748-4f5e-4e62-a364-3118d5658408 > 'super' : this keyword must be followed by '::' +## Remarks + The only token that can follow the keyword **`__super`** is `::`. +## Example + The following sample generates C2792: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2793.md b/docs/error-messages/compiler-errors-2/compiler-error-c2793.md index 5dae54a4c6b..29e19899540 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2793.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2793.md @@ -10,8 +10,12 @@ ms.assetid: ce35f4e8-c357-40ca-95c4-15ff001ad69d > 'token' : unexpected token following '::', identifier or keyword 'operator' expected +## Remarks + The only tokens that can follow `__super::` are an identifier or the keyword **`operator`**. +## Example + The following sample generates C2793 ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2794.md b/docs/error-messages/compiler-errors-2/compiler-error-c2794.md index 84d3c0d9510..5815f9ea10e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2794.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2794.md @@ -10,8 +10,12 @@ ms.assetid: d508191c-9044-4c6a-9119-4bca668c0b93 > 'function' : is not a member of any direct or indirect base class of 'class' +## Remarks + You tried to use [super](../../cpp/super.md) to call a nonexistent member function. +## Example + The following sample generates C2794 ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2795.md b/docs/error-messages/compiler-errors-2/compiler-error-c2795.md index 450f10004bd..15dec9d6f75 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2795.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2795.md @@ -10,4 +10,6 @@ ms.assetid: 8cd8c7fe-2add-4871-85f7-9a6afe4ac588 > 'super::function' is not a member function +## Remarks + This error message appears whenever you try to use [super](../../cpp/super.md) to access a member other than a member function. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2797.md b/docs/error-messages/compiler-errors-2/compiler-error-c2797.md index eb500a79487..52e3d27661b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2797.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2797.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C2797"] > (Obsolete) List initialization inside member initializer list or non-static data member initializer is not implemented. +## Remarks + This warning is obsolete in Visual Studio 2015. In Visual Studio 2013 and earlier versions, the Microsoft C++ compiler does not implement list initialization inside either a member initializer list or a non-static data member initializer. Before Visual Studio 2013 Update 3, this was silently converted to a function call, which could lead to bad code generation. Visual Studio 2013 Update 3 reports this as an error. +## Examples + This example generates C2797: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2798.md b/docs/error-messages/compiler-errors-2/compiler-error-c2798.md index 59872836d79..e6fa2b88c77 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2798.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2798.md @@ -10,12 +10,16 @@ ms.assetid: fb0cd861-b228-4f81-8090-e28344a727e0 > 'super::member' is ambiguous +## Remarks + Multiple inherited structures contain the member you referenced with [super](../../cpp/super.md). You could fix the error by either: - Removing B1 or B2 from the inheritance list of D. - Changing the name of the data member in B1 or B2. +## Example + The following sample generates C2798: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2800.md b/docs/error-messages/compiler-errors-2/compiler-error-c2800.md index 87a4ad83f59..2aabb83172b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2800.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2800.md @@ -10,8 +10,12 @@ ms.assetid: a2f1a590-9fe6-44cb-ad09-b4505ef47c6a > 'operator operator' cannot be overloaded +## Remarks + The following operators cannot be overloaded: class member access (`.`), pointer to member (`.*`), scope resolution (`::`), conditional expression (`? :`), and **`sizeof`**. +## Example + The following sample generates C2800: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2801.md b/docs/error-messages/compiler-errors-2/compiler-error-c2801.md index 6dccb3d9c49..950e71782c2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2801.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2801.md @@ -10,6 +10,8 @@ ms.assetid: 35dfc7ea-9e37-4e30-baa1-944dc61302f5 > 'operator operator' must be a non-static member +## Remarks + The following operators can be overloaded only as nonstatic members: - Assignment `=` @@ -26,6 +28,8 @@ Possible C2801 causes: - Overloaded operator is declared **`static`**. +## Example + - The following sample generates C2801: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2802.md b/docs/error-messages/compiler-errors-2/compiler-error-c2802.md index b34e3185d0c..498d17fa992 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2802.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2802.md @@ -10,8 +10,12 @@ ms.assetid: 08b68c0e-9382-40ac-8949-39a7a2749e05 > static member 'operator operator' has no formal parameters +## Remarks + An operator declared by a **`static`** member function must have at least one parameter. +## Example + The following sample generates C2802: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2803.md b/docs/error-messages/compiler-errors-2/compiler-error-c2803.md index a6740105639..2973de86407 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2803.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2803.md @@ -10,12 +10,16 @@ ms.assetid: 2cdbe374-8cc4-4c4e-ba15-062a7479e937 > 'operator operator' must have at least one formal parameter of class type +## Remarks + The overloaded operator lacks a parameter of class type. You need to pass at least one parameter by reference (not using pointers, but references) or by value to be able to write "a < b" (a and b being of type class A). If both parameters are pointers it will be a pure comparison of pointer addresses and will not use the user-defined conversion. +## Example + The following sample generates C2803: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2804.md b/docs/error-messages/compiler-errors-2/compiler-error-c2804.md index 2c9c5eb059f..6b793413bd4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2804.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2804.md @@ -10,6 +10,8 @@ ms.assetid: b066e563-cca4-450c-8ba7-3b0d7a89f3ea > binary 'operator operator' has too many parameters +## Remarks + The overloaded binary operator member function is declared with more than one parameter. The first operand parameter of a binary operator member function, whose type is the operator's enclosing type, is implied. ## Examples diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2805.md b/docs/error-messages/compiler-errors-2/compiler-error-c2805.md index 6087550629c..28c5ac4d3b3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2805.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2805.md @@ -10,8 +10,12 @@ ms.assetid: c997dc56-e199-442f-b94e-ac551ec9b015 > binary 'operator operator' has too few parameters +## Remarks + The binary operator has no parameters. +## Example + The following sample generates C2805: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2806.md b/docs/error-messages/compiler-errors-2/compiler-error-c2806.md index 1a9de42a832..181ae38d06d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2806.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2806.md @@ -10,8 +10,12 @@ ms.assetid: 7c9ff1f4-1590-4c47-991d-b1075a173b48 > 'operator operator' has too many formal parameters +## Remarks + An overloaded operator has too many parameters. +## Example + The following sample generates C2806: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2807.md b/docs/error-messages/compiler-errors-2/compiler-error-c2807.md index 4b3e19020ce..a9e7d370788 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2807.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2807.md @@ -10,8 +10,12 @@ ms.assetid: bd7a207a-f379-4de6-8ee8-c7cab78b3480 > the second formal parameter to postfix 'operator operator' must be 'int' +## Remarks + The second parameter to a postfix operator has the wrong type. +## Example + The following sample generates C2807: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2808.md b/docs/error-messages/compiler-errors-2/compiler-error-c2808.md index cbe6f7eb7ac..e848831c4d2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2808.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2808.md @@ -10,8 +10,12 @@ ms.assetid: 3d745102-d3b3-4735-a7d2-ad42d5bf3cfa > unary 'operator operator' has too many formal parameters +## Remarks + The unary operator has a nonvoid parameter list. +## Example + The following sample generates C2808: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2809.md b/docs/error-messages/compiler-errors-2/compiler-error-c2809.md index a466d2942b9..c03af503d65 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2809.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2809.md @@ -10,8 +10,12 @@ ms.assetid: ce796b8e-1a8c-4074-995d-1ad09afd0e93 > 'operator operator' has no formal parameters +## Remarks + The operator lacks required parameters. +## Example + The following sample generates C2809: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2810.md b/docs/error-messages/compiler-errors-2/compiler-error-c2810.md index 0c86142cd51..a112f602b5c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2810.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2810.md @@ -10,8 +10,12 @@ ms.assetid: f63e8f24-d7f6-42ac-904f-72ff49592ba6 > 'interface' : an interface can only inherit from another interface +## Remarks + An [interface](../../cpp/interface.md) may only inherit from another interface and may not inherit from a class or struct. +## Example + The following sample generates C2810: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2811.md b/docs/error-messages/compiler-errors-2/compiler-error-c2811.md index 3b58e730a58..b324304127f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2811.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2811.md @@ -10,8 +10,12 @@ ms.assetid: 6a44b18e-44c1-49d8-9b99-e0545b9a6e7d > 'type1' : cannot inherit from 'type2', a ref class can only inherit from a ref class or interface class +## Remarks + You attempted to use an unmanaged class as a base class for a managed class. +## Example + The following sample generates C2811: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2813.md b/docs/error-messages/compiler-errors-2/compiler-error-c2813.md index 9b03c798820..8aadad43dc6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2813.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2813.md @@ -10,6 +10,8 @@ ms.assetid: 6cf2135f-7b82-42d1-909a-5e864308a09c > #import is not supported with /MP +## Remarks + C2813 is emitted if in a compiler command you specify the **/MP** compiler option and two or more files to compile, and one or more of the files contains the[#import](../../preprocessor/hash-import-directive-cpp.md) preprocessor directive. The [#import](../../preprocessor/hash-import-directive-cpp.md) directive generates C++ classes from the types in the specified type library, and then writes those classes to two header files. The [#import](../../preprocessor/hash-import-directive-cpp.md) directive is not supported because if multiple compilation units import the same type library, those units conflict when they try to write the same header files at the same time. This compiler error and the **/MP** compiler option are new in Visual Studio 2008. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2814.md b/docs/error-messages/compiler-errors-2/compiler-error-c2814.md index f36bf07bb6b..4911a4b37b2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2814.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2814.md @@ -10,9 +10,13 @@ ms.assetid: 7d165136-a08b-4497-a76d-60a21bb19404 > 'member' : a native type cannot be nested within a managed or WinRT type 'type' +## Remarks + +A native type cannot be nested in a CLR or WinRT type. + ## Example -A native type cannot be nested in a CLR or WinRT type. The following sample generates C2814 and shows how to fix it. +The following sample generates C2814 and shows how to fix it. ```cpp // C2814.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2815.md b/docs/error-messages/compiler-errors-2/compiler-error-c2815.md index eb56186f44c..7c2434adb18 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2815.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2815.md @@ -10,8 +10,12 @@ ms.assetid: d0256fd6-0721-4c99-b03c-52d96e77a613 > 'operator delete' : first formal parameter must be 'void *', but 'param' was used +## Remarks + Any user-defined [operator delete](../../standard-library/new-operators.md#op_delete) function must take a first formal parameter of type `void *`. +## Example + The following sample generates C2815: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2817.md b/docs/error-messages/compiler-errors-2/compiler-error-c2817.md index c761a0d15e6..fb666f45e8a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2817.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2817.md @@ -10,4 +10,6 @@ ms.assetid: bca2e55a-8d86-4ddf-ba2b-4568f3bb776e > return type for 'operator delete' must be 'void' +## Remarks + An overloaded [operator delete](../../standard-library/new-operators.md#op_delete) function cannot return a value. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2818.md b/docs/error-messages/compiler-errors-2/compiler-error-c2818.md index 7ec868280df..0ba151fad22 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2818.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2818.md @@ -10,4 +10,6 @@ ms.assetid: 715fc7c9-0c6d-452b-b7f5-1682cea5e907 > application of overloaded 'operator ->' is recursive through type 'type' +## Remarks + A redefinition of the class member access operator contains a recursive **`return`** statement. To redefine the `->` operator with recursion, you must move the recursive routine to a separate function called from the operator override function. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2819.md b/docs/error-messages/compiler-errors-2/compiler-error-c2819.md index 7097af1f7e2..909ade2ad12 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2819.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2819.md @@ -10,8 +10,12 @@ ms.assetid: fcc7762d-cb82-4bb1-a715-0d82da832edf > type 'type' does not have an overloaded member 'operator ->' +## Remarks + You need to define `operator->()` to use this pointer operation. +## Examples + The following sample generates C2819: ```cpp From 24d64541c12c47083cfd6b03c9f1b4d41128b91e Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 8 Aug 2025 23:08:38 +0800 Subject: [PATCH 1298/2255] Replace term "sample" with "example" for error references in range [C2791, C2820] --- docs/error-messages/compiler-errors-2/compiler-error-c2791.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2792.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2793.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2794.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2798.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2800.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2801.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2802.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2803.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2804.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c2805.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2806.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2807.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2808.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2809.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2810.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2811.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2812.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2813.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2814.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2815.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2819.md | 4 ++-- 22 files changed, 24 insertions(+), 24 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2791.md b/docs/error-messages/compiler-errors-2/compiler-error-c2791.md index b52eaf7f9e9..4849b3bcf26 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2791.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2791.md @@ -16,7 +16,7 @@ The keyword [super](../../cpp/super.md) was used within the context of a member ## Example -The following sample generates C2791: +The following example generates C2791: ```cpp // C2791.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2792.md b/docs/error-messages/compiler-errors-2/compiler-error-c2792.md index 64ef8884067..593b74c1bf4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2792.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2792.md @@ -16,7 +16,7 @@ The only token that can follow the keyword **`__super`** is `::`. ## Example -The following sample generates C2792: +The following example generates C2792: ```cpp // C2792.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2793.md b/docs/error-messages/compiler-errors-2/compiler-error-c2793.md index 29e19899540..f757185249c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2793.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2793.md @@ -16,7 +16,7 @@ The only tokens that can follow `__super::` are an identifier or the keyword **` ## Example -The following sample generates C2793 +The following example generates C2793 ```cpp // C2793.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2794.md b/docs/error-messages/compiler-errors-2/compiler-error-c2794.md index 5815f9ea10e..5264c870804 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2794.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2794.md @@ -16,7 +16,7 @@ You tried to use [super](../../cpp/super.md) to call a nonexistent member functi ## Example -The following sample generates C2794 +The following example generates C2794 ```cpp // C2794.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2798.md b/docs/error-messages/compiler-errors-2/compiler-error-c2798.md index e6fa2b88c77..5410bf1f29e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2798.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2798.md @@ -20,7 +20,7 @@ Multiple inherited structures contain the member you referenced with [super](../ ## Example -The following sample generates C2798: +The following example generates C2798: ```cpp // C2798.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2800.md b/docs/error-messages/compiler-errors-2/compiler-error-c2800.md index 2aabb83172b..52998d44890 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2800.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2800.md @@ -16,7 +16,7 @@ The following operators cannot be overloaded: class member access (`.`), pointer ## Example -The following sample generates C2800: +The following example generates C2800: ```cpp // C2800.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2801.md b/docs/error-messages/compiler-errors-2/compiler-error-c2801.md index 950e71782c2..4babfb303ae 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2801.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2801.md @@ -30,7 +30,7 @@ Possible C2801 causes: ## Example -- The following sample generates C2801: +- The following example generates C2801: ```cpp // C2801.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2802.md b/docs/error-messages/compiler-errors-2/compiler-error-c2802.md index 498d17fa992..f56e0e1cf19 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2802.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2802.md @@ -16,7 +16,7 @@ An operator declared by a **`static`** member function must have at least one pa ## Example -The following sample generates C2802: +The following example generates C2802: ```cpp // C2802.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2803.md b/docs/error-messages/compiler-errors-2/compiler-error-c2803.md index 2973de86407..d2b54635236 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2803.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2803.md @@ -20,7 +20,7 @@ If both parameters are pointers it will be a pure comparison of pointer addresse ## Example -The following sample generates C2803: +The following example generates C2803: ```cpp // C2803.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2804.md b/docs/error-messages/compiler-errors-2/compiler-error-c2804.md index 6b793413bd4..a7c5a3281e6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2804.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2804.md @@ -16,7 +16,7 @@ The overloaded binary operator member function is declared with more than one pa ## Examples -The following sample generates C2804 and shows how to fix it. +The following example generates C2804 and shows how to fix it. ```cpp // C2804.cpp @@ -33,7 +33,7 @@ int main() { } ``` -The following sample generates C2804 and shows how to fix it. +The following example generates C2804 and shows how to fix it. ```cpp // C2804_2.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2805.md b/docs/error-messages/compiler-errors-2/compiler-error-c2805.md index 28c5ac4d3b3..1e769dda1e2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2805.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2805.md @@ -16,7 +16,7 @@ The binary operator has no parameters. ## Example -The following sample generates C2805: +The following example generates C2805: ```cpp // C2805.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2806.md b/docs/error-messages/compiler-errors-2/compiler-error-c2806.md index 181ae38d06d..dec2cfa9a4f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2806.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2806.md @@ -16,7 +16,7 @@ An overloaded operator has too many parameters. ## Example -The following sample generates C2806: +The following example generates C2806: ```cpp // C2806.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2807.md b/docs/error-messages/compiler-errors-2/compiler-error-c2807.md index a9e7d370788..9b29d9d0067 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2807.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2807.md @@ -16,7 +16,7 @@ The second parameter to a postfix operator has the wrong type. ## Example -The following sample generates C2807: +The following example generates C2807: ```cpp // C2807.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2808.md b/docs/error-messages/compiler-errors-2/compiler-error-c2808.md index e848831c4d2..8f8a6210767 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2808.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2808.md @@ -16,7 +16,7 @@ The unary operator has a nonvoid parameter list. ## Example -The following sample generates C2808: +The following example generates C2808: ```cpp // C2808.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2809.md b/docs/error-messages/compiler-errors-2/compiler-error-c2809.md index c03af503d65..f7871e1efd7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2809.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2809.md @@ -16,7 +16,7 @@ The operator lacks required parameters. ## Example -The following sample generates C2809: +The following example generates C2809: ```cpp // C2809.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2810.md b/docs/error-messages/compiler-errors-2/compiler-error-c2810.md index a112f602b5c..41cba66bcde 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2810.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2810.md @@ -16,7 +16,7 @@ An [interface](../../cpp/interface.md) may only inherit from another interface a ## Example -The following sample generates C2810: +The following example generates C2810: ```cpp // C2810.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2811.md b/docs/error-messages/compiler-errors-2/compiler-error-c2811.md index b324304127f..a611e8e333f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2811.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2811.md @@ -16,7 +16,7 @@ You attempted to use an unmanaged class as a base class for a managed class. ## Example -The following sample generates C2811: +The following example generates C2811: ```cpp // C2811.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2812.md b/docs/error-messages/compiler-errors-2/compiler-error-c2812.md index a9f6938643a..de8b1557887 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2812.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2812.md @@ -18,7 +18,7 @@ The **/clr:pure** and **/clr:safe** compiler options are deprecated in Visual St ## Example -The following sample generates C2812. +The following example generates C2812. ```cpp // C2812.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2813.md b/docs/error-messages/compiler-errors-2/compiler-error-c2813.md index 8aadad43dc6..e5bddc775fc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2813.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2813.md @@ -18,7 +18,7 @@ This compiler error and the **/MP** compiler option are new in Visual Studio 200 ## Example -The following sample generates C2813. The command line in the "compile with:" comment indicates to the compiler to use the **/MP** and **/c** compiler options to compile several files. At least one of the files contains the [#import](../../preprocessor/hash-import-directive-cpp.md) directive. We use the same file twice for the sake of testing this example. +The following example generates C2813. The command line in the "compile with:" comment indicates to the compiler to use the **/MP** and **/c** compiler options to compile several files. At least one of the files contains the [#import](../../preprocessor/hash-import-directive-cpp.md) directive. We use the same file twice for the sake of testing this example. ```cpp // C2813.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2814.md b/docs/error-messages/compiler-errors-2/compiler-error-c2814.md index 4911a4b37b2..b61b5d7d671 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2814.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2814.md @@ -16,7 +16,7 @@ A native type cannot be nested in a CLR or WinRT type. ## Example -The following sample generates C2814 and shows how to fix it. +The following example generates C2814 and shows how to fix it. ```cpp // C2814.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2815.md b/docs/error-messages/compiler-errors-2/compiler-error-c2815.md index 7c2434adb18..209ef0d1f4c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2815.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2815.md @@ -16,7 +16,7 @@ Any user-defined [operator delete](../../standard-library/new-operators.md#op_de ## Example -The following sample generates C2815: +The following example generates C2815: ```cpp // C2815.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2819.md b/docs/error-messages/compiler-errors-2/compiler-error-c2819.md index 909ade2ad12..4f6af3a8f60 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2819.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2819.md @@ -16,7 +16,7 @@ You need to define `operator->()` to use this pointer operation. ## Examples -The following sample generates C2819: +The following example generates C2819: ```cpp // C2819.cpp @@ -46,7 +46,7 @@ void F(D j) { } ``` -C2819 can also occur when using [C++ Stack Semantics for Reference Types](../../dotnet/cpp-stack-semantics-for-reference-types.md). The following sample generates C2819: +C2819 can also occur when using [C++ Stack Semantics for Reference Types](../../dotnet/cpp-stack-semantics-for-reference-types.md). The following example generates C2819: ```cpp // C2819_b.cpp From 2e189f890516ff638e9f0405c92c9e3e578ba67b Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 8 Aug 2025 23:12:57 +0800 Subject: [PATCH 1299/2255] Update metadata for error references in range [C2791, C2820] --- .../error-messages/compiler-errors-2/compiler-error-c2791.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2792.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2793.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2794.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2795.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2798.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2800.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2801.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2802.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2803.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2804.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2805.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2806.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2807.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2808.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2809.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2810.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2811.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2812.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2813.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2814.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2815.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2817.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2818.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2819.md | 5 ++--- 25 files changed, 50 insertions(+), 75 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2791.md b/docs/error-messages/compiler-errors-2/compiler-error-c2791.md index 4849b3bcf26..24de65980a5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2791.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2791.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2791" title: "Compiler Error C2791" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2791" +ms.date: 11/04/2016 f1_keywords: ["C2791"] helpviewer_keywords: ["C2791"] -ms.assetid: 938ad1fb-75d9-4ce2-ad92-83d6249005b5 --- # Compiler Error C2791 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2792.md b/docs/error-messages/compiler-errors-2/compiler-error-c2792.md index 593b74c1bf4..5503da07a8e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2792.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2792.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2792" title: "Compiler Error C2792" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2792" +ms.date: 11/04/2016 f1_keywords: ["C2792"] helpviewer_keywords: ["C2792"] -ms.assetid: 392cf748-4f5e-4e62-a364-3118d5658408 --- # Compiler Error C2792 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2793.md b/docs/error-messages/compiler-errors-2/compiler-error-c2793.md index f757185249c..3581467aef3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2793.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2793.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2793" title: "Compiler Error C2793" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2793" +ms.date: 11/04/2016 f1_keywords: ["C2793"] helpviewer_keywords: ["C2793"] -ms.assetid: ce35f4e8-c357-40ca-95c4-15ff001ad69d --- # Compiler Error C2793 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2794.md b/docs/error-messages/compiler-errors-2/compiler-error-c2794.md index 5264c870804..72657858861 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2794.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2794.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2794" title: "Compiler Error C2794" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2794" +ms.date: 11/04/2016 f1_keywords: ["C2794"] helpviewer_keywords: ["C2794"] -ms.assetid: d508191c-9044-4c6a-9119-4bca668c0b93 --- # Compiler Error C2794 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2795.md b/docs/error-messages/compiler-errors-2/compiler-error-c2795.md index 15dec9d6f75..1505d3af111 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2795.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2795.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2795" title: "Compiler Error C2795" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2795" +ms.date: 11/04/2016 f1_keywords: ["C2795"] helpviewer_keywords: ["C2795"] -ms.assetid: 8cd8c7fe-2add-4871-85f7-9a6afe4ac588 --- # Compiler Error C2795 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2798.md b/docs/error-messages/compiler-errors-2/compiler-error-c2798.md index 5410bf1f29e..5e5d7754190 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2798.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2798.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2798" title: "Compiler Error C2798" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2798" +ms.date: 11/04/2016 f1_keywords: ["C2798"] helpviewer_keywords: ["C2798"] -ms.assetid: fb0cd861-b228-4f81-8090-e28344a727e0 --- # Compiler Error C2798 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2800.md b/docs/error-messages/compiler-errors-2/compiler-error-c2800.md index 52998d44890..7de01cf11dc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2800.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2800.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2800" title: "Compiler Error C2800" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2800" +ms.date: 11/04/2016 f1_keywords: ["C2800"] helpviewer_keywords: ["C2800"] -ms.assetid: a2f1a590-9fe6-44cb-ad09-b4505ef47c6a --- # Compiler Error C2800 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2801.md b/docs/error-messages/compiler-errors-2/compiler-error-c2801.md index 4babfb303ae..1fc1d35138c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2801.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2801.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2801" title: "Compiler Error C2801" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2801" +ms.date: 11/04/2016 f1_keywords: ["C2801"] helpviewer_keywords: ["C2801"] -ms.assetid: 35dfc7ea-9e37-4e30-baa1-944dc61302f5 --- # Compiler Error C2801 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2802.md b/docs/error-messages/compiler-errors-2/compiler-error-c2802.md index f56e0e1cf19..d7920ab5bd3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2802.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2802.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2802" title: "Compiler Error C2802" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2802" +ms.date: 11/04/2016 f1_keywords: ["C2802"] helpviewer_keywords: ["C2802"] -ms.assetid: 08b68c0e-9382-40ac-8949-39a7a2749e05 --- # Compiler Error C2802 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2803.md b/docs/error-messages/compiler-errors-2/compiler-error-c2803.md index d2b54635236..56585a0492d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2803.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2803.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2803" title: "Compiler Error C2803" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2803" +ms.date: 11/04/2016 f1_keywords: ["C2803"] helpviewer_keywords: ["C2803"] -ms.assetid: 2cdbe374-8cc4-4c4e-ba15-062a7479e937 --- # Compiler Error C2803 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2804.md b/docs/error-messages/compiler-errors-2/compiler-error-c2804.md index a7c5a3281e6..6837c7650c2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2804.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2804.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2804" title: "Compiler Error C2804" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2804" +ms.date: 11/04/2016 f1_keywords: ["C2804"] helpviewer_keywords: ["C2804"] -ms.assetid: b066e563-cca4-450c-8ba7-3b0d7a89f3ea --- # Compiler Error C2804 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2805.md b/docs/error-messages/compiler-errors-2/compiler-error-c2805.md index 1e769dda1e2..219a8c8d65b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2805.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2805.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2805" title: "Compiler Error C2805" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2805" +ms.date: 11/04/2016 f1_keywords: ["C2805"] helpviewer_keywords: ["C2805"] -ms.assetid: c997dc56-e199-442f-b94e-ac551ec9b015 --- # Compiler Error C2805 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2806.md b/docs/error-messages/compiler-errors-2/compiler-error-c2806.md index dec2cfa9a4f..84ff0db1dfa 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2806.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2806.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2806" title: "Compiler Error C2806" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2806" +ms.date: 11/04/2016 f1_keywords: ["C2806"] helpviewer_keywords: ["C2806"] -ms.assetid: 7c9ff1f4-1590-4c47-991d-b1075a173b48 --- # Compiler Error C2806 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2807.md b/docs/error-messages/compiler-errors-2/compiler-error-c2807.md index 9b29d9d0067..eda69103326 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2807.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2807.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2807" title: "Compiler Error C2807" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2807" +ms.date: 11/04/2016 f1_keywords: ["C2807"] helpviewer_keywords: ["C2807"] -ms.assetid: bd7a207a-f379-4de6-8ee8-c7cab78b3480 --- # Compiler Error C2807 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2808.md b/docs/error-messages/compiler-errors-2/compiler-error-c2808.md index 8f8a6210767..7a2df195342 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2808.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2808.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2808" title: "Compiler Error C2808" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2808" +ms.date: 11/04/2016 f1_keywords: ["C2808"] helpviewer_keywords: ["C2808"] -ms.assetid: 3d745102-d3b3-4735-a7d2-ad42d5bf3cfa --- # Compiler Error C2808 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2809.md b/docs/error-messages/compiler-errors-2/compiler-error-c2809.md index f7871e1efd7..e99316b66eb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2809.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2809.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2809" title: "Compiler Error C2809" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2809" +ms.date: 11/04/2016 f1_keywords: ["C2809"] helpviewer_keywords: ["C2809"] -ms.assetid: ce796b8e-1a8c-4074-995d-1ad09afd0e93 --- # Compiler Error C2809 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2810.md b/docs/error-messages/compiler-errors-2/compiler-error-c2810.md index 41cba66bcde..822e5b9de74 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2810.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2810.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2810" title: "Compiler Error C2810" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2810" +ms.date: 11/04/2016 f1_keywords: ["C2810"] helpviewer_keywords: ["C2810"] -ms.assetid: f63e8f24-d7f6-42ac-904f-72ff49592ba6 --- # Compiler Error C2810 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2811.md b/docs/error-messages/compiler-errors-2/compiler-error-c2811.md index a611e8e333f..e10b1d0ebea 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2811.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2811.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2811" title: "Compiler Error C2811" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2811" +ms.date: 11/04/2016 f1_keywords: ["C2811"] helpviewer_keywords: ["C2811"] -ms.assetid: 6a44b18e-44c1-49d8-9b99-e0545b9a6e7d --- # Compiler Error C2811 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2812.md b/docs/error-messages/compiler-errors-2/compiler-error-c2812.md index de8b1557887..247df73f444 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2812.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2812.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2812" title: "Compiler Error C2812" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2812" +ms.date: 11/04/2016 f1_keywords: ["C2812"] helpviewer_keywords: ["C2812"] -ms.assetid: 22aadb8c-7232-489d-a3ad-60662dda30a8 --- # Compiler Error C2812 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2813.md b/docs/error-messages/compiler-errors-2/compiler-error-c2813.md index e5bddc775fc..ac5acab6159 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2813.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2813.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2813" title: "Compiler Error C2813" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2813" +ms.date: 11/04/2016 f1_keywords: ["C2813"] helpviewer_keywords: ["C2813"] -ms.assetid: 6cf2135f-7b82-42d1-909a-5e864308a09c --- # Compiler Error C2813 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2814.md b/docs/error-messages/compiler-errors-2/compiler-error-c2814.md index b61b5d7d671..a34fc692a4f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2814.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2814.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2814" title: "Compiler Error C2814" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2814" +ms.date: 11/04/2016 f1_keywords: ["C2814"] helpviewer_keywords: ["C2814"] -ms.assetid: 7d165136-a08b-4497-a76d-60a21bb19404 --- # Compiler Error C2814 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2815.md b/docs/error-messages/compiler-errors-2/compiler-error-c2815.md index 209ef0d1f4c..d4e855253e4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2815.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2815.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2815" title: "Compiler Error C2815" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2815" +ms.date: 11/04/2016 f1_keywords: ["C2815"] helpviewer_keywords: ["C2815"] -ms.assetid: d0256fd6-0721-4c99-b03c-52d96e77a613 --- # Compiler Error C2815 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2817.md b/docs/error-messages/compiler-errors-2/compiler-error-c2817.md index fb666f45e8a..24c59040cf3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2817.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2817.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2817" title: "Compiler Error C2817" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2817" +ms.date: 11/04/2016 f1_keywords: ["C2817"] helpviewer_keywords: ["C2817"] -ms.assetid: bca2e55a-8d86-4ddf-ba2b-4568f3bb776e --- # Compiler Error C2817 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2818.md b/docs/error-messages/compiler-errors-2/compiler-error-c2818.md index 0ba151fad22..88373838771 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2818.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2818.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2818" title: "Compiler Error C2818" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2818" +ms.date: 11/04/2016 f1_keywords: ["C2818"] helpviewer_keywords: ["C2818"] -ms.assetid: 715fc7c9-0c6d-452b-b7f5-1682cea5e907 --- # Compiler Error C2818 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2819.md b/docs/error-messages/compiler-errors-2/compiler-error-c2819.md index 4f6af3a8f60..063bf1c863a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2819.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2819.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2819" title: "Compiler Error C2819" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2819" +ms.date: 11/04/2016 f1_keywords: ["C2819"] helpviewer_keywords: ["C2819"] -ms.assetid: fcc7762d-cb82-4bb1-a715-0d82da832edf --- # Compiler Error C2819 From b42a72c57e5ceb90b5f7c45239c081f41d18a081 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 8 Aug 2025 23:29:38 +0800 Subject: [PATCH 1300/2255] Add missing integer argument to `_cprintf_s` call for example in `_vcprintf_p` reference --- .../vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md b/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md index 99103757608..e663b4c13b2 100644 --- a/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md +++ b/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md @@ -112,7 +112,7 @@ int main() { int n = eprintf("parameter 2 = %2$d; parameter 1 = %1$s\r\n", "one", 222); - _cprintf_s("%d characters printed\r\n"); + _cprintf_s("%d characters printed\r\n", n); } ``` From 49044a62fa79d97d0e3aad2d251cfea50437aebb Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 8 Aug 2025 23:37:07 +0800 Subject: [PATCH 1301/2255] Add backticks in `_vcprintf_p` reference --- ...cprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md b/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md index e663b4c13b2..55c2eae6a83 100644 --- a/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md +++ b/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md @@ -62,7 +62,7 @@ Each of these functions takes a pointer to an argument list, and then uses the ` The versions of these functions that have the `_l` suffix are identical except that they use the locale parameter that's passed in instead of the current locale. -Each *`argument`* (if any) is converted and is output according to the corresponding format specification in *`format`*. The format specification supports positional parameters so that you can specify the order in which the arguments are used in the format string. For more information, see [printf_p Positional Parameters](../printf-p-positional-parameters.md). +Each *`argument`* (if any) is converted and is output according to the corresponding format specification in *`format`*. The format specification supports positional parameters so that you can specify the order in which the arguments are used in the format string. For more information, see [`printf_p` Positional Parameters](../printf-p-positional-parameters.md). These functions don't translate line-feed characters on output into carriage return-line feed (CR-LF) combinations. @@ -73,7 +73,7 @@ These functions validate the input pointer and the format string. If *`format`* ### Generic-text routine mappings -| Tchar.h routine | `_UNICODE` and `_MBCS` not defined | `_MBCS` defined | `_UNICODE` defined | +| `Tchar.h` routine | `_UNICODE` and `_MBCS` not defined | `_MBCS` defined | `_UNICODE` defined | |---|---|---|---| | `_vtcprintf_p` | **`_vcprintf_p`** | **`_vcprintf_p`** | **`_vcwprintf_p`** | | `_vtcprintf_p_l` | **`_vcprintf_p_l`** | **`_vcprintf_p_l`** | **`_vcwprintf_p_l`** | @@ -82,8 +82,8 @@ These functions validate the input pointer and the format string. If *`format`* | Routine | Required header | |---|---| -| **`_vcprintf_p`**, **`_vcprintf_p_l`** | \ and \ | -| **`_vcwprintf_p`**, **`_vcwprintf_p_l`** | \ and \ | +| **`_vcprintf_p`**, **`_vcprintf_p_l`** | `` and `` | +| **`_vcwprintf_p`**, **`_vcwprintf_p_l`** | `` and `` | For more compatibility information, see [Compatibility](../compatibility.md). @@ -126,4 +126,4 @@ parameter 2 = 222; parameter 1 = one [Console and port I/O](../console-and-port-i-o.md)\ [`_cprintf`, `_cprintf_l`, `_cwprintf`, `_cwprintf_l`](cprintf-cprintf-l-cwprintf-cwprintf-l.md)\ [`va_arg`, `va_copy`, `va_end`, `va_start`](va-arg-va-copy-va-end-va-start.md)\ -[printf_p Positional Parameters](../printf-p-positional-parameters.md) +[`printf_p` Positional Parameters](../printf-p-positional-parameters.md) From f4836970b7a37530a935f7d0d761af8432f09cef Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 8 Aug 2025 23:38:42 +0800 Subject: [PATCH 1302/2255] Update link text to "`printf_p` positional parameters" in `_vcprintf_p` reference --- .../vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md b/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md index 55c2eae6a83..870ad99d11e 100644 --- a/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md +++ b/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md @@ -62,7 +62,7 @@ Each of these functions takes a pointer to an argument list, and then uses the ` The versions of these functions that have the `_l` suffix are identical except that they use the locale parameter that's passed in instead of the current locale. -Each *`argument`* (if any) is converted and is output according to the corresponding format specification in *`format`*. The format specification supports positional parameters so that you can specify the order in which the arguments are used in the format string. For more information, see [`printf_p` Positional Parameters](../printf-p-positional-parameters.md). +Each *`argument`* (if any) is converted and is output according to the corresponding format specification in *`format`*. The format specification supports positional parameters so that you can specify the order in which the arguments are used in the format string. For more information, see [`printf_p` positional parameters](../printf-p-positional-parameters.md). These functions don't translate line-feed characters on output into carriage return-line feed (CR-LF) combinations. @@ -126,4 +126,4 @@ parameter 2 = 222; parameter 1 = one [Console and port I/O](../console-and-port-i-o.md)\ [`_cprintf`, `_cprintf_l`, `_cwprintf`, `_cwprintf_l`](cprintf-cprintf-l-cwprintf-cwprintf-l.md)\ [`va_arg`, `va_copy`, `va_end`, `va_start`](va-arg-va-copy-va-end-va-start.md)\ -[`printf_p` Positional Parameters](../printf-p-positional-parameters.md) +[`printf_p` positional parameters](../printf-p-positional-parameters.md) From a0ac6efce9368468bed245f36ba41308068915b1 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 8 Aug 2025 23:41:23 +0800 Subject: [PATCH 1303/2255] Normalize example indent to 4 spaces in `_vcprintf_p` reference --- ...f-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md b/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md index 870ad99d11e..04735adbee7 100644 --- a/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md +++ b/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md @@ -101,18 +101,18 @@ For more compatibility information, see [Compatibility](../compatibility.md). // An error formatting function that's used to print to the console. int eprintf(const char* format, ...) { - va_list args; - va_start(args, format); - int result = _vcprintf_p(format, args); - va_end(args); - return result; + va_list args; + va_start(args, format); + int result = _vcprintf_p(format, args); + va_end(args); + return result; } int main() { - int n = eprintf("parameter 2 = %2$d; parameter 1 = %1$s\r\n", - "one", 222); - _cprintf_s("%d characters printed\r\n", n); + int n = eprintf("parameter 2 = %2$d; parameter 1 = %1$s\r\n", + "one", 222); + _cprintf_s("%d characters printed\r\n", n); } ``` From d3cae2280eef22307696dd0611fcf41422115eff Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Fri, 8 Aug 2025 10:06:48 -0700 Subject: [PATCH 1304/2255] Add ASan Runtime Options Page --- docs/sanitizers/asan-flags.md | 132 ++++++++++++++++++++++++++++++++ docs/sanitizers/asan-runtime.md | 2 +- 2 files changed, 133 insertions(+), 1 deletion(-) create mode 100644 docs/sanitizers/asan-flags.md diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md new file mode 100644 index 00000000000..04e3774c362 --- /dev/null +++ b/docs/sanitizers/asan-flags.md @@ -0,0 +1,132 @@ +--- +title: "AddressSanitizer Runtime Options" +description: "List of runtime options for the Microsoft C/C++ Address Sanitizer" +ms.date: 8/05/2025 +helpviewer_keywords: ["AddressSanitizer options", "AddressSanitizer flags", "Address Sanitizer options", "Address Sanitizer flags", "asan options", "asan flags", "sanitizer flags", "asan_options", "AddressSanitizerFlags", "CommonSanitizerFlags"] +--- + +# AddressSanitizer Runtime Options + +The following is a list of supported runtime options that can be set by the `ASAN_OPTIONS` environment variable or by overriding the `__asan_default_options()` user function. Reference: [AddressSanitizer Runtime Options](./asan-runtime.md#runtime-options). Note that while these mirror the options available in Clang's ASan, the description will differ by varying amounts in consideration of the MSVC ASan runtime. + +This is a living document that may update at any time due to the constant development of AddressSanitizer on the Windows platform. If you discover options that aren't accurately documented, we invite you to [report a bug](https://aka.ms/feedback/report?space=62). + +| Flag | Default value | Description | +|:-----|:--------------|:------------| +|abort_on_error | false | If true, the tool calls `abort()` instead of `_exit()` after printing the error report.| +|alloc_dealloc_mismatch | false | Enables runtime detection of mismatched memory operations such as `malloc`/`delete`, `new[]`/`free`, etc.| +|allocator_frees_and_returns_null_on_realloc_zero | 1 | 1 - realloc(p, 0) is equivalent to free(p). 0 - realloc(p, 0) will return a non-`NULL` value.| +|allocator_may_return_null | false | If true, the allocator will return `nullptr` and fail when out of memory instead of crashing.| +|allocator_release_to_os_interval_ms | -1 | Experimental. 64-bit allocator only. Specify minimum time interval in ms between attempts to release memory | +|allow_addr2line | false | If true, the tool uses the `addr2line` binary to symbolize stack traces when `llvm-symbolizer` is not available.| +|allow_user_poisoning | true | If true, user may manually mark memory regions as poisoned or unpoisoned.| +|atexit | false | If true, prints ASan exit stats even after program terminates successfully.| +|can_use_proc_maps_statm | true | If false, do not attempt to read `/proc/maps/statm`. Mostly useful for testing sanitizers. (Not implemented - `/proc/maps/statm` doesn't exist on Windows)| +|check_initialization_order | false | If true, attempts to catch initialization order issues.| +|check_malloc_usable_size | true | Allows the users to work around the bug in Nvidia drivers prior to 295.*.| +|check_printf | true | If true, enables ASan to validate printf family function arguments for memory safety violations.| +|clear_shadow_mmap_threshold | 64 * 1024 | Large shadow regions are zero-filled using `mmap(NORESERVE)` instead of `memset()`. This is the threshold size in bytes. (Not Implemented - `memset()` is always called on Windows)| +|color | auto | Colorize reports: (always|never|auto). (Not Implemented on Windows)| +|continue_on_error | 0 | Allows an application to continue running while reporting unique memory safety errors. 0 - disabled, 1 - stderr(1), 2 - stderr(2). See [continue_on_error](asan-continue-on-error.md).| +|coverage | false | If true, coverage information will be dumped at program shutdown (if the coverage instrumentation was enabled at compile time).| +|coverage_bitset | false | If true (and if 'coverage' is set too), the coverage information will also be dumped as a bitset to a separate file.| +|coverage_counters | false | If true (and if 'coverage' is set too), the bitmap that corresponds to coverage counters will be dumped.| +|coverage_dir | "." | Target directory for coverage dumps. Defaults to the current directory.| +|coverage_direct | false (true on Android) | If true, coverage information will be dumped directly to a memory mapped file. This way data is not lost even if the process is suddenly killed.| +|coverage_order_pcs | false | If true, the PCs will be dumped in the order they've appeared during the execution.| +|coverage_pcs | true | If true (and if 'coverage' is set too), the coverage information will be dumped as a set of PC offsets for every module.| +|debug | false | If true, prints some debugging information and does additional checks.| +|decorate_proc_maps | false | If true, decorate sanitizer mappings in /proc/self/maps with user-readable names (Not Implemented - `/proc/self/maps` doesn't exist on Windows)| +|detect_container_overflow | true | If true, honor the container overflow annotations. See [ContainerOverflow](./error-container-overflow.md)| +|detect_deadlocks | true | If true, deadlock detection is enabled.| +|detect_invalid_pointer_pairs | 0 | If non-zero, try to detect operations like <, <=, >, >= and - on invalid pointer pairs (e.g. when pointers belong to different objects). The bigger the value the harder we try.| +|detect_leaks | true | Enable memory leak detection. (Not Implemented - LSan not implemented on Windows as of yet.)| +|detect_odr_violation | 2 | If >=2, detect violation of One-Definition-Rule (ODR); If 1, detect ODR-violation only if the two variables have different sizes| +|detect_stack_use_after_return | false | Enables stack-use-after-return checking at run-time. Requires `/fsanitize-address-use-after-return`. See [stack-use-after-return](./error-stack-use-after-return.md)| +|disable_coredump | true (false on non-64-bit systems) | Disable core dumping. By default, disable_coredump=1 on 64-bit to avoid dumping a 16T+ core file. Ignored on OSes that don't dump core by default and for sanitizers that don't reserve lots of virtual memory.| +|dump_instruction_bytes | false | If true, dump 16 bytes starting at the instruction that caused SEGV| +|exitcode | 1 | Override the program exit status if the tool found an error| +|external_symbolizer_path | "" | Path to external symbolizer. If empty, the tool will search $PATH for the symbolizer.| +|fast_unwind_on_check | false | If available, use the fast frame-pointer-based unwinder on internal CHECK failures.| +|fast_unwind_on_fatal | false | If available, use the fast frame-pointer-based unwinder on fatal errors.| +|fast_unwind_on_malloc | true | If available, use the fast frame-pointer-based unwinder on malloc/free.| +|full_address_space | false | Sanitize complete address space; by default kernel area on 32-bit platforms will not be sanitized| +|halt_on_error | true | Exit/abort the program after printing the first error report (May cause undefined behavior).| +|handle_abort | false | Controls custom tool's SIGABRT handler (Not Implemented on Windows) | +|handle_ioctl | false | Intercept and handle ioctl requests. (Not Implemented on Windows)| +|handle_segv | true | false - ASan will not handle SEGV errors, true - ASan handles SEGV errors.| +|handle_sigbus | true | Controls custom tool's SIGBUS handler (Not Implemented on Windows)| +|handle_sigfpe | true | false - ASan will not handle SIGFPE errors, true - ASan will handle SIGFPE errors. | +|handle_sigill | true | false - ASan will not handle SIGILL errors, true - ASan will handle SIGILL errors.| +|hard_rss_limit_mb | 0 | (Not Implemented on Windows) | +|heap_profile | false | (Not Implemented on Windows)| +|help | false | If true, ASan prints the flag options to console.| +|html_cov_report | false | If true, ASan generates a coverage report.| +|include | "" | read more options from the given file| +|include_if_exists | "" | read more options from the given file (if it exists)| +|intercept_memcmp | true | If true, uses custom wrappers for memcmp function to find more errors.| +|intercept_strpbrk | true | If true, uses custom wrappers for strpbrk function to find more errors.| +|intercept_strspn | true | If true, uses custom wrappers for strspn and strcspn function to find more errors.| +|intercept_strstr | true | If true, uses custom wrappers for strstr and strcasestr functions to find more errors.| +|intercept_tls_get_addr | false | Intercept __tls_get_addr.| +|leak_check_at_exit | true | Invoke leak checking in an atexit handler. Has no effect if detect_leaks=false, or if __lsan_do_leak_check() is called before the handler has a chance to run. (Not Implemented - LSan not implemented on Windows as of yet.)| +|legacy_pthread_cond | false | Enables support for dynamic libraries linked with libpthread 2.2.5. (Not Implemented on Windows)| +|log_exe_name | false | Mention name of executable when reporting error and append executable name to logs (as in `log_path.exe_name.pid`).| +|log_path | stderr | Write logs to `log_path.pid`. The special values are `stdout` and `stderr`. The default is `stderr`.| +|log_to_syslog | false | Write all sanitizer output to syslog in addition to other means of logging.| +|malloc_context_size | 1 | Max number of stack frames kept for each allocation/deallocation.| +|malloc_fill_byte | 0xbe | Value used to fill the newly allocated memory.| +|max_malloc_fill_size | 4096 | ASan allocator flag. `max_malloc_fill_size` is the maximal amount of bytes that will be filled with `malloc_fill_byte` on `malloc`.| +|max_redzone | 2048 | Maximal size (in bytes) of redzones around heap objects.| +|max_uar_stack_size_log | 20 | Maximum fake stack size log.| +|min_uar_stack_size_log | 16 | Minimum fake stack size log. (Cannot do smaller than 16)| +|mmap_limit_mb | 0 | Limit the amount of mmap-ed memory (excluding shadow) in Mb; (Not Implemented on Windows) | +|new_delete_type_mismatch | true | Report errors on mismatch betwen size of new and delete. See [new-delete-type-mismatch](./error-new-delete-type-mismatch.md)| +|no_huge_pages_for_shadow | true | If true, the shadow is not allowed to use huge pages. (Not Implemented on Windows) | +|poison_array_cookie | true | Poison (or not) the array cookie after operator `new[]`.| +|poison_heap | true | Poison (or not) the heap memory on [de]allocation. Zero value is useful for benchmarking the allocator or instrumentator.| +|poison_partial | true | If true, poison partially addressable 8-byte aligned words. This flag affects heap and global buffers, but not stack buffers.| +|print_cmdline | false | Print command line on crash. With `continue_on_error` set >= 1, print current working directory as UTF-16 aware.| +|print_full_thread_history | true | If true, prints thread creation stacks for the threads involved in the report and their ancestors up to the main thread.| +|print_legend | true | Print the legend for the shadow bytes.| +|print_stats | false | Print various statistics after printing an error message or if atexit=1.| +|print_summary | true | If false, disable printing error summaries in addition to error reports.| +|print_suppressions | true | Print matched suppressions at exit.| +|protect_shadow_gap | true | If true, `mprotect` the shadow gap| +|quarantine_size | -1 | Deprecated, please use quarantine_size_mb.| +|quarantine_size_mb | -1 | Size (in Mb) of quarantine used to detect `use-after-free` errors. Lower value may increase the chance of false negatives.| +|redzone | 16 | Minimal size (in bytes) of redzones around heap objects. Requirement: `redzone` >= 16, is a power of two.| +|replace_intrin | true | If true, uses custom wrappers for `memset`/`memcpy`/`memmove` intinsics.| +|replace_str | true | If true, uses custom wrappers and replacements for libc string functions to find more errors.| +|report_globals | 1 | Controls the way to handle globals (0 - don't detect buffer overflow on globals, 1 - detect buffer overflow, 2 - detect buffer overflow and print data about registered globals).| +|sancov_path | sancov | Sancov tool location.| +|sleep_before_dying | 0 | Number of seconds to sleep between printing an error report and terminating the program.| +|soft_rss_limit_mb | 0 | (Not Implemented on Windows) | +|stack_trace_format | DEFAULT | Format string used to render stack frames. | +|start_deactivated | false | If true, preserves configuration and allocator, and deactivates ASan at initialization. ASan will reactivate when requested. | +|strict_init_order | false | If true, assume that dynamic initializers can never access globals from other modules, even if the latter are already initialized. (Strict init-order checking is thread-hostile. Options is moot on Windows.)| +|strict_memcmp | true | If true, assume that `memcmp(p1, p2, n)` always reads `n` bytes before comparing `p1` and `p2`.| +|strict_string_checks | false | If true check that string arguments are properly null-terminated| +|strip_path_prefix | "" | Strips this prefix from file paths in error reports.| +|suppress_equal_pcs | true | Deduplicate multiple reports for single source location in `halt_on_error=false` mode.| +|suppressions | "" | Suppresses file name.| +|symbolize | true | If true, use the `llvm-symbolizer` to turn virtual addresses to file/line locations.| +|symbolize_inline_frames | true | Print inlined frames in stacktraces. | +|symbolize_vs_style | false | Print file locations in Visual Studio style (e.g: file(10,42): ...)| +|uar_noreserve | false | Use mmap with 'noreserve' flag to allocate fake stack. (Not Implemented - Windows uses `VirtualAlloc()`)| +|unmap_shadow_on_exit | false | If true, explicitly unmaps the shadow memory at exit.| +|use_madv_dontdump | true | If true, instructs kernel to not store shadow in core file.| +|use_odr_indicator | false | If true, emit odr violations | +|use_sigaltstack | true | If true, uses alternate stack for signal handling. (Not Implemented on Windows)| +|verbosity | 0 | Verbosity level: 0 - default, 1 - more, 2+ - even more output | +|verify_asan_link_order | true | Check position of ASan runtime in library list (Not Implemented on Windows)| + +## See also + +[AddressSanitizer overview](./asan.md)\ +[AddressSanitizer known issues](./asan-known-issues.md)\ +[AddressSanitizer build and language reference](./asan-building.md)\ +[AddressSanitizer shadow bytes](./asan-shadow-bytes.md)\ +[AddressSanitizer cloud or distributed testing](./asan-offline-crash-dumps.md)\ +[AddressSanitizer debugger integration](./asan-debugger-integration.md)\ +[AddressSanitizer error examples](./asan-error-examples.md) \ No newline at end of file diff --git a/docs/sanitizers/asan-runtime.md b/docs/sanitizers/asan-runtime.md index 52fac2efa2a..a4daaa517b7 100644 --- a/docs/sanitizers/asan-runtime.md +++ b/docs/sanitizers/asan-runtime.md @@ -101,7 +101,7 @@ For an illustration of the alignment requirement and potential issues, see the p ## Runtime options -The MSVC AddressSanitizer is based on the [Clang AddressSanitizer runtime from the llvm-project repository](https://github.com/llvm/llvm-project). Because of this, most of clang's ASan runtime options available in MSVC as well. [A complete list of the public Clang runtime options is available here](https://github.com/google/sanitizers/wiki/SanitizerCommonFlags). We document some differences in the sections that follow. If you discover options that don't function as expected, [report a bug](https://aka.ms/feedback/report?space=62). +The MSVC AddressSanitizer is based on the [Clang AddressSanitizer runtime from the llvm-project repository](https://github.com/llvm/llvm-project). Because of this, most of Clang's ASan runtime options available in MSVC as well. [A complete list of runtime options we support is available here](./asan-flags.md). We document some differences in the sections that follow. If you discover options that don't function as expected, [report a bug](https://aka.ms/feedback/report?space=62). ### Configure runtime options From 62a8be95d806739be9e1aa62da460cea8f2607fb Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Fri, 8 Aug 2025 13:46:30 -0700 Subject: [PATCH 1305/2255] Remove unsupported Runtime options. Code Escape flags, values, and code --- docs/sanitizers/asan-flags.md | 204 +++++++++++++++------------------- 1 file changed, 92 insertions(+), 112 deletions(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 04e3774c362..bce5940efb0 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -1,125 +1,105 @@ --- title: "AddressSanitizer Runtime Options" description: "List of runtime options for the Microsoft C/C++ Address Sanitizer" -ms.date: 8/05/2025 -helpviewer_keywords: ["AddressSanitizer options", "AddressSanitizer flags", "Address Sanitizer options", "Address Sanitizer flags", "asan options", "asan flags", "sanitizer flags", "asan_options", "AddressSanitizerFlags", "CommonSanitizerFlags"] +ms.date: 8/08/2025 +helpviewer_keywords: ["AddressSanitizer options", "AddressSanitizer flags", "Address sanitizer options", "Address sanitizer flags", "asan options", "asan flags", "sanitizer flags", "asan_options", "AddressSanitizerFlags", "SanitizerCommonFlags"] --- # AddressSanitizer Runtime Options -The following is a list of supported runtime options that can be set by the `ASAN_OPTIONS` environment variable or by overriding the `__asan_default_options()` user function. Reference: [AddressSanitizer Runtime Options](./asan-runtime.md#runtime-options). Note that while these mirror the options available in Clang's ASan, the description will differ by varying amounts in consideration of the MSVC ASan runtime. +The following is a list of supported runtime options that can be set by the `ASAN_OPTIONS` environment variable or by overriding the `__asan_default_options()` user function. Reference: [AddressSanitizer Runtime Options](./asan-runtime.md#runtime-options). While these mirror the options available in Clang's ASan, the description will differ by varying amounts in consideration of the MSVC ASan runtime. -This is a living document that may update at any time due to the constant development of AddressSanitizer on the Windows platform. If you discover options that aren't accurately documented, we invite you to [report a bug](https://aka.ms/feedback/report?space=62). +If you discover options that are inaccurately documented, we invite you to [report a bug](https://aka.ms/feedback/report?space=62). | Flag | Default value | Description | -|:-----|:--------------|:------------| -|abort_on_error | false | If true, the tool calls `abort()` instead of `_exit()` after printing the error report.| -|alloc_dealloc_mismatch | false | Enables runtime detection of mismatched memory operations such as `malloc`/`delete`, `new[]`/`free`, etc.| -|allocator_frees_and_returns_null_on_realloc_zero | 1 | 1 - realloc(p, 0) is equivalent to free(p). 0 - realloc(p, 0) will return a non-`NULL` value.| -|allocator_may_return_null | false | If true, the allocator will return `nullptr` and fail when out of memory instead of crashing.| -|allocator_release_to_os_interval_ms | -1 | Experimental. 64-bit allocator only. Specify minimum time interval in ms between attempts to release memory | -|allow_addr2line | false | If true, the tool uses the `addr2line` binary to symbolize stack traces when `llvm-symbolizer` is not available.| -|allow_user_poisoning | true | If true, user may manually mark memory regions as poisoned or unpoisoned.| -|atexit | false | If true, prints ASan exit stats even after program terminates successfully.| -|can_use_proc_maps_statm | true | If false, do not attempt to read `/proc/maps/statm`. Mostly useful for testing sanitizers. (Not implemented - `/proc/maps/statm` doesn't exist on Windows)| -|check_initialization_order | false | If true, attempts to catch initialization order issues.| -|check_malloc_usable_size | true | Allows the users to work around the bug in Nvidia drivers prior to 295.*.| -|check_printf | true | If true, enables ASan to validate printf family function arguments for memory safety violations.| -|clear_shadow_mmap_threshold | 64 * 1024 | Large shadow regions are zero-filled using `mmap(NORESERVE)` instead of `memset()`. This is the threshold size in bytes. (Not Implemented - `memset()` is always called on Windows)| -|color | auto | Colorize reports: (always|never|auto). (Not Implemented on Windows)| -|continue_on_error | 0 | Allows an application to continue running while reporting unique memory safety errors. 0 - disabled, 1 - stderr(1), 2 - stderr(2). See [continue_on_error](asan-continue-on-error.md).| -|coverage | false | If true, coverage information will be dumped at program shutdown (if the coverage instrumentation was enabled at compile time).| -|coverage_bitset | false | If true (and if 'coverage' is set too), the coverage information will also be dumped as a bitset to a separate file.| -|coverage_counters | false | If true (and if 'coverage' is set too), the bitmap that corresponds to coverage counters will be dumped.| -|coverage_dir | "." | Target directory for coverage dumps. Defaults to the current directory.| -|coverage_direct | false (true on Android) | If true, coverage information will be dumped directly to a memory mapped file. This way data is not lost even if the process is suddenly killed.| -|coverage_order_pcs | false | If true, the PCs will be dumped in the order they've appeared during the execution.| -|coverage_pcs | true | If true (and if 'coverage' is set too), the coverage information will be dumped as a set of PC offsets for every module.| -|debug | false | If true, prints some debugging information and does additional checks.| -|decorate_proc_maps | false | If true, decorate sanitizer mappings in /proc/self/maps with user-readable names (Not Implemented - `/proc/self/maps` doesn't exist on Windows)| -|detect_container_overflow | true | If true, honor the container overflow annotations. See [ContainerOverflow](./error-container-overflow.md)| -|detect_deadlocks | true | If true, deadlock detection is enabled.| -|detect_invalid_pointer_pairs | 0 | If non-zero, try to detect operations like <, <=, >, >= and - on invalid pointer pairs (e.g. when pointers belong to different objects). The bigger the value the harder we try.| -|detect_leaks | true | Enable memory leak detection. (Not Implemented - LSan not implemented on Windows as of yet.)| -|detect_odr_violation | 2 | If >=2, detect violation of One-Definition-Rule (ODR); If 1, detect ODR-violation only if the two variables have different sizes| -|detect_stack_use_after_return | false | Enables stack-use-after-return checking at run-time. Requires `/fsanitize-address-use-after-return`. See [stack-use-after-return](./error-stack-use-after-return.md)| -|disable_coredump | true (false on non-64-bit systems) | Disable core dumping. By default, disable_coredump=1 on 64-bit to avoid dumping a 16T+ core file. Ignored on OSes that don't dump core by default and for sanitizers that don't reserve lots of virtual memory.| -|dump_instruction_bytes | false | If true, dump 16 bytes starting at the instruction that caused SEGV| -|exitcode | 1 | Override the program exit status if the tool found an error| -|external_symbolizer_path | "" | Path to external symbolizer. If empty, the tool will search $PATH for the symbolizer.| -|fast_unwind_on_check | false | If available, use the fast frame-pointer-based unwinder on internal CHECK failures.| -|fast_unwind_on_fatal | false | If available, use the fast frame-pointer-based unwinder on fatal errors.| -|fast_unwind_on_malloc | true | If available, use the fast frame-pointer-based unwinder on malloc/free.| -|full_address_space | false | Sanitize complete address space; by default kernel area on 32-bit platforms will not be sanitized| -|halt_on_error | true | Exit/abort the program after printing the first error report (May cause undefined behavior).| -|handle_abort | false | Controls custom tool's SIGABRT handler (Not Implemented on Windows) | -|handle_ioctl | false | Intercept and handle ioctl requests. (Not Implemented on Windows)| -|handle_segv | true | false - ASan will not handle SEGV errors, true - ASan handles SEGV errors.| -|handle_sigbus | true | Controls custom tool's SIGBUS handler (Not Implemented on Windows)| -|handle_sigfpe | true | false - ASan will not handle SIGFPE errors, true - ASan will handle SIGFPE errors. | -|handle_sigill | true | false - ASan will not handle SIGILL errors, true - ASan will handle SIGILL errors.| -|hard_rss_limit_mb | 0 | (Not Implemented on Windows) | -|heap_profile | false | (Not Implemented on Windows)| -|help | false | If true, ASan prints the flag options to console.| -|html_cov_report | false | If true, ASan generates a coverage report.| -|include | "" | read more options from the given file| -|include_if_exists | "" | read more options from the given file (if it exists)| -|intercept_memcmp | true | If true, uses custom wrappers for memcmp function to find more errors.| -|intercept_strpbrk | true | If true, uses custom wrappers for strpbrk function to find more errors.| -|intercept_strspn | true | If true, uses custom wrappers for strspn and strcspn function to find more errors.| -|intercept_strstr | true | If true, uses custom wrappers for strstr and strcasestr functions to find more errors.| -|intercept_tls_get_addr | false | Intercept __tls_get_addr.| -|leak_check_at_exit | true | Invoke leak checking in an atexit handler. Has no effect if detect_leaks=false, or if __lsan_do_leak_check() is called before the handler has a chance to run. (Not Implemented - LSan not implemented on Windows as of yet.)| -|legacy_pthread_cond | false | Enables support for dynamic libraries linked with libpthread 2.2.5. (Not Implemented on Windows)| -|log_exe_name | false | Mention name of executable when reporting error and append executable name to logs (as in `log_path.exe_name.pid`).| -|log_path | stderr | Write logs to `log_path.pid`. The special values are `stdout` and `stderr`. The default is `stderr`.| -|log_to_syslog | false | Write all sanitizer output to syslog in addition to other means of logging.| -|malloc_context_size | 1 | Max number of stack frames kept for each allocation/deallocation.| -|malloc_fill_byte | 0xbe | Value used to fill the newly allocated memory.| -|max_malloc_fill_size | 4096 | ASan allocator flag. `max_malloc_fill_size` is the maximal amount of bytes that will be filled with `malloc_fill_byte` on `malloc`.| -|max_redzone | 2048 | Maximal size (in bytes) of redzones around heap objects.| -|max_uar_stack_size_log | 20 | Maximum fake stack size log.| -|min_uar_stack_size_log | 16 | Minimum fake stack size log. (Cannot do smaller than 16)| -|mmap_limit_mb | 0 | Limit the amount of mmap-ed memory (excluding shadow) in Mb; (Not Implemented on Windows) | -|new_delete_type_mismatch | true | Report errors on mismatch betwen size of new and delete. See [new-delete-type-mismatch](./error-new-delete-type-mismatch.md)| -|no_huge_pages_for_shadow | true | If true, the shadow is not allowed to use huge pages. (Not Implemented on Windows) | -|poison_array_cookie | true | Poison (or not) the array cookie after operator `new[]`.| -|poison_heap | true | Poison (or not) the heap memory on [de]allocation. Zero value is useful for benchmarking the allocator or instrumentator.| -|poison_partial | true | If true, poison partially addressable 8-byte aligned words. This flag affects heap and global buffers, but not stack buffers.| -|print_cmdline | false | Print command line on crash. With `continue_on_error` set >= 1, print current working directory as UTF-16 aware.| -|print_full_thread_history | true | If true, prints thread creation stacks for the threads involved in the report and their ancestors up to the main thread.| -|print_legend | true | Print the legend for the shadow bytes.| -|print_stats | false | Print various statistics after printing an error message or if atexit=1.| -|print_summary | true | If false, disable printing error summaries in addition to error reports.| -|print_suppressions | true | Print matched suppressions at exit.| -|protect_shadow_gap | true | If true, `mprotect` the shadow gap| -|quarantine_size | -1 | Deprecated, please use quarantine_size_mb.| -|quarantine_size_mb | -1 | Size (in Mb) of quarantine used to detect `use-after-free` errors. Lower value may increase the chance of false negatives.| -|redzone | 16 | Minimal size (in bytes) of redzones around heap objects. Requirement: `redzone` >= 16, is a power of two.| -|replace_intrin | true | If true, uses custom wrappers for `memset`/`memcpy`/`memmove` intinsics.| -|replace_str | true | If true, uses custom wrappers and replacements for libc string functions to find more errors.| -|report_globals | 1 | Controls the way to handle globals (0 - don't detect buffer overflow on globals, 1 - detect buffer overflow, 2 - detect buffer overflow and print data about registered globals).| -|sancov_path | sancov | Sancov tool location.| -|sleep_before_dying | 0 | Number of seconds to sleep between printing an error report and terminating the program.| -|soft_rss_limit_mb | 0 | (Not Implemented on Windows) | -|stack_trace_format | DEFAULT | Format string used to render stack frames. | -|start_deactivated | false | If true, preserves configuration and allocator, and deactivates ASan at initialization. ASan will reactivate when requested. | -|strict_init_order | false | If true, assume that dynamic initializers can never access globals from other modules, even if the latter are already initialized. (Strict init-order checking is thread-hostile. Options is moot on Windows.)| -|strict_memcmp | true | If true, assume that `memcmp(p1, p2, n)` always reads `n` bytes before comparing `p1` and `p2`.| -|strict_string_checks | false | If true check that string arguments are properly null-terminated| -|strip_path_prefix | "" | Strips this prefix from file paths in error reports.| -|suppress_equal_pcs | true | Deduplicate multiple reports for single source location in `halt_on_error=false` mode.| -|suppressions | "" | Suppresses file name.| -|symbolize | true | If true, use the `llvm-symbolizer` to turn virtual addresses to file/line locations.| -|symbolize_inline_frames | true | Print inlined frames in stacktraces. | -|symbolize_vs_style | false | Print file locations in Visual Studio style (e.g: file(10,42): ...)| -|uar_noreserve | false | Use mmap with 'noreserve' flag to allocate fake stack. (Not Implemented - Windows uses `VirtualAlloc()`)| -|unmap_shadow_on_exit | false | If true, explicitly unmaps the shadow memory at exit.| -|use_madv_dontdump | true | If true, instructs kernel to not store shadow in core file.| -|use_odr_indicator | false | If true, emit odr violations | -|use_sigaltstack | true | If true, uses alternate stack for signal handling. (Not Implemented on Windows)| -|verbosity | 0 | Verbosity level: 0 - default, 1 - more, 2+ - even more output | -|verify_asan_link_order | true | Check position of ASan runtime in library list (Not Implemented on Windows)| +|------|---------------|-------------| +|`abort_on_error` | `false` | If `true`, the tool calls `abort()` instead of `_exit()` after printing the error report.| +|`alloc_dealloc_mismatch` | `false` | Enables runtime detection of mismatched memory operations such as `malloc`/`delete`, `new[]`/`free`, etc.| +|`allocator_frees_and_returns_null_on_realloc_zero` | `1` | 1 - realloc(p, 0) is equivalent to free(p). 0 - realloc(p, 0) will return a non-`NULL` value.| +|`allocator_may_return_null` | `false` | If `true`, the allocator will return `nullptr` and fail when out of memory instead of crashing.| +|`allocator_release_to_os_interval_ms` | `-1` | Experimental. 64-bit allocator only. Specify minimum time interval in ms between attempts to release memory.| +|`allow_addr2line` | `false` | If `true`, the tool uses the `addr2line` binary to symbolize stack traces when `llvm-symbolizer` is not available.| +|`allow_user_poisoning` | `true` | If `true`, you may manually mark memory regions as poisoned or unpoisoned.| +|`atexit` | `false` | If `true`, prints ASan exit stats even after program terminates successfully.| +|`check_initialization_order` | `false` | If `true`, attempts to catch initialization order issues.| +|`check_malloc_usable_size` | `true` | Allows the users to work around the bug in Nvidia drivers prior to `295.*`.| +|`check_printf` | `true` | If `true`, enables ASan to validate printf family function arguments for memory safety violations.| +|`continue_on_error` | `0` | Allows an application to continue running while reporting unique memory safety errors. `0` - disabled, `1` - `stderr(1)`, `2` - `stderr(2)`. See [continue_on_error](asan-continue-on-error.md).| +|`coverage` | `false` | If `true` and the coverage instrumentation was enabled at compile time, coverage information will be dumped at program shutdown.| +|`coverage_bitset` | `false` | If `true`, the coverage information will also be dumped as a bitset to a separate file.| +|`coverage_counters` | `false` | If `true`, the bitmap that corresponds to coverage counters will be dumped.| +|`coverage_dir` | `"."` | Target directory for coverage dumps. Defaults to the current directory.| +|`coverage_direct` | `false` | If `true`, coverage information will be dumped directly to a memory mapped file. This way data is not lost even if the process is suddenly killed.| +|`coverage_order_pcs` | `false` | If `true`, the PCs will be dumped in the order they've appeared during the execution.| +|`coverage_pcs` | `true` | If `true` the coverage information will be dumped as a set of PC offsets for every module.| +|`debug` | `false` | If `true`, prints some debugging information and does additional checks.| +|`detect_container_overflow` | `true` | If `true`, honor the container overflow annotations. See [ContainerOverflow](./error-container-overflow.md).| +|`detect_invalid_pointer_pairs` | `0` | If >`0`, the tool detects operations like <, <=, >, >=, and - on invalid pointer pairs, such as pointers that belong to different objects. Higher values increase detection effort.| +|`detect_odr_violation` | `2` | If >=`2`, detect violation of One-Definition-Rule (ODR) violation; If `1`, detect ODR-violation only if the two variables have different sizes.| +|`detect_stack_use_after_return` | `false` | Enables `stack-use-after-return` checking at runtime. Requires `/fsanitize-address-use-after-return`. See [stack-use-after-return](./error-stack-use-after-return.md).| +|`disable_coredump` | `true`/`false` (on non-64-bit systems) | Disables core dumping. By default, the tool sets `disable_coredump=1` on 64-bit systems to prevent dumping a 16T+ core file. The tool ignores this flag on operating systems that don't dump core by default and for sanitizers that don't reserve large amounts of virtual memory.| +|`dump_instruction_bytes` | `false` | If `true`, dump 16 bytes starting at the instruction that caused `SEGV`.| +|`exitcode` | `1` | Override the program exit status with this value if the tool found an error.| +|`external_symbolizer_path` | `""` | Path to external symbolizer. If empty, the tool will search `$PATH` for the symbolizer.| +|`fast_unwind_on_check` | `false` | If available, the tool uses the fast frame-pointer-based unwinder on internal `CHECK` failures.| +|`fast_unwind_on_fatal` | `false` | If available, the tool uses the fast frame-pointer-based unwinder on fatal errors.| +|`fast_unwind_on_malloc` | `true` | If available, the tool uses the fast frame-pointer-based unwinder on `malloc`/`free`.| +|`full_address_space` | `false` | Sanitize complete address space; by default kernel area on 32-bit platforms will not be sanitized.| +|`halt_on_error` | `true` | Exit/abort the program after printing the first error report (May cause undefined behavior).| +|`handle_segv` | `true` | `false` - ASan will not handle `SEGV` errors, `true` - ASan handles `SEGV` errors.| +|`handle_sigfpe` | `true` | `false` - ASan will not handle `SIGFPE` errors, `true` - ASan will handle `SIGFPE` errors.| +|`handle_sigill` | `true` | `false` - ASan will not handle `SIGILL` errors, `true` - ASan will handle `SIGILL` errors.| +|`help` | `false` | If `true`, ASan prints the flag options to console.| +|`html_cov_report` | `false` | If `true`, ASan generates a coverage report.| +|`include` | `""` | Read more options from the given file.| +|`include_if_exists` | `""` | Read more options from the given file (if it exists).| +|`intercept_memcmp` | `true` | If `true`, uses custom wrappers for memcmp function to find more errors.| +|`intercept_strpbrk` | `true` | If `true`, uses custom wrappers for strpbrk function to find more errors.| +|`intercept_strspn` | `true` | If `true`, uses custom wrappers for strspn and strcspn function to find more errors.| +|`intercept_strstr` | `true` | If `true`, uses custom wrappers for strstr and strcasestr functions to find more errors.| +|`intercept_tls_get_addr` | `false` | Intercept __tls_get_addr.| +|`log_exe_name` | `false` | Mention name of executable when reporting error and append executable name to logs (as in `log_path.exe_name.pid`).| +|`log_path` | `stderr` | Write logs to `log_path.pid`. The special values are `stdout` and `stderr`. The default is `stderr`.| +|`log_to_syslog` | `false` | Write all sanitizer output to syslog in addition to other means of logging.| +|`malloc_context_size` | `1` | Max number of stack frames kept for each allocation/deallocation.| +|`malloc_fill_byte` | `0xbe` | Value used to fill the newly allocated memory.| +|`max_malloc_fill_size` | `4096` | ASan allocator flag. `max_malloc_fill_size` is the maximal amount of bytes that will be filled with `malloc_fill_byte` on `malloc`.| +|`max_redzone` | `2048` | Maximal size (in bytes) of redzones around heap objects.| +|`max_uar_stack_size_log` | `20` | Maximum fake stack size log.| +|`min_uar_stack_size_log` | `16` | Minimum fake stack size log. (Minimum value accepted: `16`).| +|`new_delete_type_mismatch` | `true` | Report errors on mismatch betwen size of new and delete. See [new-delete-type-mismatch](./error-new-delete-type-mismatch.md).| +|`poison_array_cookie` | `true` | Poison (or not) the array cookie after operator `new[]`.| +|`poison_heap` | `true` | Poison (or not) the heap memory on [de]allocation. Zero value is useful for benchmarking the allocator or instrumentator.| +|`poison_partial` | `true` | If `true`, poison partially addressable 8-byte aligned words. This flag affects heap and global buffers, but not stack buffers.| +|`print_cmdline` | `false` | Print command line on crash. With `continue_on_error` set >= `1`, print current working directory as `UTF-16` aware.| +|`print_full_thread_history` | `true` | If `true`, prints thread creation stacks for the threads involved in the report and their ancestors up to the main thread.| +|`print_legend` | `true` | Print the legend for the shadow bytes.| +|`print_stats` | `false` | Print various statistics after printing an error message or if atexit=1.| +|`print_summary` | `true` | If `false`, disable printing error summaries in addition to error reports.| +|`print_suppressions` | `true` | Print matched suppressions at exit.| +|`protect_shadow_gap` | `true` | If `true`, `mprotect` the shadow gap.| +|`quarantine_size` | `-1` | Deprecated, please use `quarantine_size_mb`.| +|`quarantine_size_mb` | `-1` | Size (in Mb) of quarantine used to detect `use-after-free` errors. Lower value may increase the chance of false negatives.| +|`redzone` | `16` | Minimal size (in bytes) of redzones around heap objects. Requirement: `redzone` >= 16, is a power of two.| +|`replace_intrin` | `true` | If `true`, uses custom wrappers for `memset` or `memcpy` or `memmove` intinsics.| +|`replace_str` | `true` | If `true`, uses custom wrappers and replacements for libc string functions to find more errors.| +|`report_globals` | `1` | Controls the way to handle globals (`0` - don't detect buffer overflow on globals, `1` - detect buffer overflow, `2` - detect buffer overflow and print data about registered globals).| +|`sancov_path` | `sancov` | Sancov tool location.| +|`sleep_before_dying` | `0` | Number of seconds to sleep between printing an error report and terminating the program.| +|`stack_trace_format` | `DEFAULT` | Format string used to render stack frames.| +|`start_deactivated` | `false` | If `true`, preserves configuration and allocator, and deactivates ASan at initialization. ASan will reactivate when requested.| +|`strict_memcmp` | `true` | If `true`, assume that `memcmp(p1, p2, n)` always reads `n` bytes before comparing `p1` and `p2`.| +|`strict_string_checks` | `false` | If `true` check that string arguments are properly null-terminated.| +|`strip_path_prefix` | `""` | Strips this prefix from file paths in error reports.| +|`suppress_equal_pcs` | `true` | Deduplicate multiple reports for single source location in `halt_on_error=false` mode.| +|`suppressions` | `""` | Suppresses file name.| +|`symbolize` | `true` | If `true`, use the `llvm-symbolizer` to turn virtual addresses to file or line locations.| +|`symbolize_inline_frames` | `true` | Print inlined frames in stacktraces.| +|`symbolize_vs_style` | `false` | Print file locations in Visual Studio style (e.g: file(10,42): ...).| +|`unmap_shadow_on_exit` | `false` | If `true`, explicitly unmaps the shadow memory at exit.| +|`use_madv_dontdump` | `true` | If `true`, instructs kernel to not store shadow in core file.| +|`use_odr_indicator` | `false` | If `true`, emit odr violations.| +|`verbosity` | `0` | Verbosity level: `0` - default, `1` - more, `2+` - even more output.| ## See also From e8f62b01159399ad2116ae8eb10570a31273ec53 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 9 Aug 2025 18:37:01 +0800 Subject: [PATCH 1306/2255] Overhaul documentation issue section in "How to report a problem with the Microsoft C++ toolset or documentation" --- .../how-to-report-a-problem-with-the-visual-cpp-toolset.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md b/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md index 5fff09d04d6..8d979f94317 100644 --- a/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md +++ b/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md @@ -408,6 +408,6 @@ To maintain your privacy and keep your sensitive information out of public view, ## How to report a C++ documentation issue -We use GitHub issues to track problems reported in our documentation. You can now create GitHub issues directly from a content page, which enables you interact in a richer way with writers and product teams. If you see an issue with a document, a bad code sample, a confusing explanation, a critical omission, or even just a typo, you can easily let us know. Scroll to the bottom of the page and select **Sign in to give documentation feedback**. You need to create a GitHub account if you don't have one already. When you have a GitHub account, you can see all of our documentation issues and their status. You also get notifications when changes are made for the issue you reported. For more information, see our [Feedback System blog entry](/teamblog/a-new-feedback-system-is-coming-to-docs). +If you see an issue with a document, a bad code sample, a confusing explanation, a critical omission, or even just a typo, you can easily let us know by using the feedback buttons on the page. Since 2024, we no longer use GitHub issues to track problems reported. For more information, see [Announcing a new way to give feedback on Microsoft Learn](https://techcommunity.microsoft.com/blog/microsoftlearnblog/announcing-a-new-way-to-give-feedback-on-microsoft-learn/4027635). -You create a documentation issue on GitHub when you use the documentation feedback button. The issue is automatically filled in with some information about the page you created the issue on. That's how we know where the problem is located, so don't edit this information. Just append the details about what's wrong, and if you like, a suggested fix. [Our C++ docs are open source](https://github.com/MicrosoftDocs/cpp-docs/), so if you'd like to submit a fix yourself, you can. For more information about how you can contribute to our documentation, see our [Contributing guide](https://github.com/MicrosoftDocs/cpp-docs/blob/main/CONTRIBUTING.md) on GitHub. +[Our C++ docs are open source](https://github.com/MicrosoftDocs/cpp-docs/), so if you'd like to submit a fix yourself, you can. For more information about how you can contribute to our documentation, see our [Contributing guide](https://github.com/MicrosoftDocs/cpp-docs/blob/main/CONTRIBUTING.md) on GitHub. From 65b364520cef72284450f28c023ca699f9e8a1b1 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 9 Aug 2025 18:37:40 +0800 Subject: [PATCH 1307/2255] Update metadata in "How to report a problem with the Microsoft C++ toolset or documentation" --- .../how-to-report-a-problem-with-the-visual-cpp-toolset.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md b/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md index 8d979f94317..97a4e65ca48 100644 --- a/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md +++ b/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md @@ -1,7 +1,7 @@ --- title: "How to report a problem with the Microsoft C++ toolset" -description: How to create a good problem report and repro information for the Microsoft C++ toolset. -ms.date: "09/24/2019" +description: "How to create a good problem report and repro information for the Microsoft C++ toolset." +ms.date: 09/24/2019 ms.service: "visual-cpp" ms.subservice: "ide" author: "tylermsft" From b080dbf47af5594849b1de6869df76eb046dabd2 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 9 Aug 2025 21:52:52 +0800 Subject: [PATCH 1308/2255] Add blockquotes for error messages in range [C2821, C2850] --- docs/error-messages/compiler-errors-2/compiler-error-c2821.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2824.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2825.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2827.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2828.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2829.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2830.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2831.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2835.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2838.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2839.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2843.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2844.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2845.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2846.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2847.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2849.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2850.md | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2821.md b/docs/error-messages/compiler-errors-2/compiler-error-c2821.md index d187c402136..7c91d44284e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2821.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2821.md @@ -8,7 +8,7 @@ ms.assetid: e8d71988-a968-4484-94db-e8c3bad74a4a --- # Compiler Error C2821 -first formal parameter to 'operator new' must be 'unsigned int' +> first formal parameter to 'operator new' must be 'unsigned int' The first formal parameter of the [operator new](../../standard-library/new-operators.md#op_new) must be an unsigned **`int`**. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2824.md b/docs/error-messages/compiler-errors-2/compiler-error-c2824.md index 2178beb0a79..affbd208848 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2824.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2824.md @@ -8,7 +8,7 @@ ms.assetid: 5bd865f7-e0af-404e-80fe-e2b798b44a59 --- # Compiler Error C2824 -return type for 'operator new' must be 'void *' +> return type for 'operator new' must be 'void *' With non-based pointers, overloads of operator `new` must return `void *`. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2825.md b/docs/error-messages/compiler-errors-2/compiler-error-c2825.md index fc7b5f733e7..bcf79a68fa6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2825.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2825.md @@ -8,7 +8,7 @@ ms.assetid: c832f1c1-5184-4fc2-9356-12b21daa7af3 --- # Compiler Error C2825 -var : must be a class or namespace when followed by '::' +> var : must be a class or namespace when followed by '::' An unsuccessful attempt was made to form a qualified name. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2827.md b/docs/error-messages/compiler-errors-2/compiler-error-c2827.md index fe90f7e62bf..89a2cc8393b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2827.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2827.md @@ -8,7 +8,7 @@ ms.assetid: cb3e5814-0c92-40e4-b620-98578ae3003a --- # Compiler Error C2827 -'operator operator' cannot be globally overridden with unary form +> 'operator operator' cannot be globally overridden with unary form The operator cannot have a unary form outside of an object. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2828.md b/docs/error-messages/compiler-errors-2/compiler-error-c2828.md index 0273a717134..36858332329 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2828.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2828.md @@ -8,7 +8,7 @@ ms.assetid: d8df6ed4-5954-46c2-b59b-52881d4e923d --- # Compiler Error C2828 -'operator operator' cannot be globally overridden with binary form +> 'operator operator' cannot be globally overridden with binary form The operator cannot have a binary form outside of an object. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2829.md b/docs/error-messages/compiler-errors-2/compiler-error-c2829.md index 137d653a228..375e0c875e8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2829.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2829.md @@ -8,7 +8,7 @@ ms.assetid: b3bfecb8-c8c1-45fd-bb85-4b42a6b8ed2b --- # Compiler Error C2829 -'operator operator' cannot have a variable parameter list +> 'operator operator' cannot have a variable parameter list Only two operators can take variable parameter lists: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2830.md b/docs/error-messages/compiler-errors-2/compiler-error-c2830.md index 6141a2a5023..cb6393d14a3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2830.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2830.md @@ -8,6 +8,6 @@ ms.assetid: 91607d2d-6aab-4c1b-b253-a7b8ec37760e --- # Compiler Error C2830 -only placement parameters to 'operator new' can have default values +> only placement parameters to 'operator new' can have default values The standard formal parameters for [operator new](../../standard-library/new-operators.md#op_new) cannot have default values. Only user-defined placement parameters can specify defaults. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2831.md b/docs/error-messages/compiler-errors-2/compiler-error-c2831.md index 9512ca8f412..46284818bd2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2831.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2831.md @@ -8,7 +8,7 @@ ms.assetid: c8c04288-0889-4265-a077-17f94cbcdcc9 --- # Compiler Error C2831 -'operator operator' cannot have default parameters +> 'operator operator' cannot have default parameters Only three operators can have default parameters: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2835.md b/docs/error-messages/compiler-errors-2/compiler-error-c2835.md index ae076c90aff..19b93e6b993 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2835.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2835.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2835"] --- # Compiler Error C2835 -user-defined conversion 'type' takes no formal parameters +> user-defined conversion 'type' takes no formal parameters User-defined type conversions cannot take formal parameters. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2838.md b/docs/error-messages/compiler-errors-2/compiler-error-c2838.md index 5667a087511..98106bd67fc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2838.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2838.md @@ -8,7 +8,7 @@ ms.assetid: 176b2ad6-7a84-4019-b97e-328866054457 --- # Compiler Error C2838 -'member' : illegal qualified name in member declaration +> 'member' : illegal qualified name in member declaration A class, structure, or union uses a fully qualified name to redeclare a member of another class, structure, or union. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2839.md b/docs/error-messages/compiler-errors-2/compiler-error-c2839.md index f7480b7bc45..8de1a86d69a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2839.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2839.md @@ -8,6 +8,6 @@ ms.assetid: e4914def-2ee1-4e2e-8951-d35f9515c2b2 --- # Compiler Error C2839 -invalid return type 'type' for overloaded 'operator ->' +> invalid return type 'type' for overloaded 'operator ->' The `->` operator must return a class, struct, or union, or a reference to one. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2843.md b/docs/error-messages/compiler-errors-2/compiler-error-c2843.md index 14b5171ffa2..b666371ecd8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2843.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2843.md @@ -8,7 +8,7 @@ ms.assetid: 9d3f2ac4-eea5-4fed-abeb-e752f442bfcc --- # Compiler Error C2843 -'member' : cannot take the address of a non-static data member or method of a managed or WinRT type +> 'member' : cannot take the address of a non-static data member or method of a managed or WinRT type An instance is needed to take the address of nonstatic data members of a managed or WinRT class or interface. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2844.md b/docs/error-messages/compiler-errors-2/compiler-error-c2844.md index 5fd3a703db6..7a9a221b428 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2844.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2844.md @@ -8,7 +8,7 @@ ms.assetid: dcaf4cd2-21b0-4280-ae42-0a706c524d83 --- # Compiler Error C2844 -'member' : cannot be a member of interface 'interface' +> 'member' : cannot be a member of interface 'interface' An [interface class](../../extensions/interface-class-cpp-component-extensions.md) cannot contain a data member unless it is also a property. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2845.md b/docs/error-messages/compiler-errors-2/compiler-error-c2845.md index 16511963892..edf83077344 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2845.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2845.md @@ -8,6 +8,6 @@ ms.assetid: 31b28ee9-978f-403b-94d8-dbaacd24cce0 --- # Compiler Error C2845 -'operator' : pointer arithmetic not allowed on this type +> 'operator' : pointer arithmetic not allowed on this type You cannot increment the pointer to a managed class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2846.md b/docs/error-messages/compiler-errors-2/compiler-error-c2846.md index a33ecf9a560..c737354bda5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2846.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2846.md @@ -8,7 +8,7 @@ ms.assetid: bc090ec2-5410-4112-9ec6-261325374375 --- # Compiler Error C2846 -'constructor' : an interface cannot have a constructor +> 'constructor' : an interface cannot have a constructor A Visual C++ [interface](../../cpp/interface.md) cannot have a constructor. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2847.md b/docs/error-messages/compiler-errors-2/compiler-error-c2847.md index ef48d9496b8..c48edc249d8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2847.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2847.md @@ -8,7 +8,7 @@ ms.assetid: 9ad9a0e0-8b16-49d9-a5be-f8eda2372aa9 --- # Compiler Error C2847 -cannot apply sizeof to managed or WinRT type 'class' +> cannot apply sizeof to managed or WinRT type 'class' The [sizeof](../../cpp/sizeof-operator.md) operator gets the value of an object at compile time. The size of a managed or WinRT class, interface, or value type is dynamic and so cannot be known at compile time. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2849.md b/docs/error-messages/compiler-errors-2/compiler-error-c2849.md index 529a6699481..864390d0e2e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2849.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2849.md @@ -8,7 +8,7 @@ ms.assetid: e28f6b3e-e0e7-4f92-b006-ebaa81d368e6 --- # Compiler Error C2849 -'destructor' : an interface cannot have a destructor +> 'destructor' : an interface cannot have a destructor A Visual C++ [interface](../../cpp/interface.md) cannot have a destructor. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2850.md b/docs/error-messages/compiler-errors-2/compiler-error-c2850.md index 86e1d28646f..66cb4224b18 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2850.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2850.md @@ -8,7 +8,7 @@ ms.assetid: f3efe86c-4168-4e76-a133-3f8314c69f51 --- # Compiler Error C2850 -'construct' : only allowed at file scope; may not be in a nested construct +> 'construct' : only allowed at file scope; may not be in a nested construct Constructs, such as some pragmas, can only appear at global scope. From e7243377cf3f6ac951f91faa1b099bc2f5ed84a1 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 9 Aug 2025 21:56:57 +0800 Subject: [PATCH 1309/2255] Add "Remarks" and "Example" headings for error references in range [C2821, C2850] --- docs/error-messages/compiler-errors-2/compiler-error-c2821.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2823.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2824.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2825.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2827.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2828.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2829.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2830.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2831.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2833.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2834.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2835.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2838.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2839.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2843.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2844.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2845.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2846.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2847.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2849.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2850.md | 4 ++++ 21 files changed, 64 insertions(+) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2821.md b/docs/error-messages/compiler-errors-2/compiler-error-c2821.md index 7c91d44284e..9c4967c4aa7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2821.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2821.md @@ -10,6 +10,8 @@ ms.assetid: e8d71988-a968-4484-94db-e8c3bad74a4a > first formal parameter to 'operator new' must be 'unsigned int' +## Remarks + The first formal parameter of the [operator new](../../standard-library/new-operators.md#op_new) must be an unsigned **`int`**. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2823.md b/docs/error-messages/compiler-errors-2/compiler-error-c2823.md index acdfe09f032..a49c7317cdc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2823.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2823.md @@ -10,6 +10,8 @@ ms.assetid: 982b1b35-1a7c-456e-b711-f80cfe2d571e > a typedef template is illegal +## Remarks + Templates are not allowed in **`typedef`** definitions. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2824.md b/docs/error-messages/compiler-errors-2/compiler-error-c2824.md index affbd208848..8e38adef9a0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2824.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2824.md @@ -10,8 +10,12 @@ ms.assetid: 5bd865f7-e0af-404e-80fe-e2b798b44a59 > return type for 'operator new' must be 'void *' +## Remarks + With non-based pointers, overloads of operator `new` must return `void *`. +## Example + The following sample generates C2824: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2825.md b/docs/error-messages/compiler-errors-2/compiler-error-c2825.md index bcf79a68fa6..08c07cd4e59 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2825.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2825.md @@ -10,6 +10,8 @@ ms.assetid: c832f1c1-5184-4fc2-9356-12b21daa7af3 > var : must be a class or namespace when followed by '::' +## Remarks + An unsuccessful attempt was made to form a qualified name. For example, make sure that your code does not contain a function declaration where the function name begins with ::. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2827.md b/docs/error-messages/compiler-errors-2/compiler-error-c2827.md index 89a2cc8393b..858b6cb289f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2827.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2827.md @@ -10,6 +10,8 @@ ms.assetid: cb3e5814-0c92-40e4-b620-98578ae3003a > 'operator operator' cannot be globally overridden with unary form +## Remarks + The operator cannot have a unary form outside of an object. ### To fix by using the following possible solutions diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2828.md b/docs/error-messages/compiler-errors-2/compiler-error-c2828.md index 36858332329..febda82f05a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2828.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2828.md @@ -10,6 +10,8 @@ ms.assetid: d8df6ed4-5954-46c2-b59b-52881d4e923d > 'operator operator' cannot be globally overridden with binary form +## Remarks + The operator cannot have a binary form outside of an object. ### To fix by using the following possible solutions diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2829.md b/docs/error-messages/compiler-errors-2/compiler-error-c2829.md index 375e0c875e8..e2c555c46dd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2829.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2829.md @@ -10,6 +10,8 @@ ms.assetid: b3bfecb8-c8c1-45fd-bb85-4b42a6b8ed2b > 'operator operator' cannot have a variable parameter list +## Remarks + Only two operators can take variable parameter lists: - Function call `()` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2830.md b/docs/error-messages/compiler-errors-2/compiler-error-c2830.md index cb6393d14a3..e8d7447dd1d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2830.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2830.md @@ -10,4 +10,6 @@ ms.assetid: 91607d2d-6aab-4c1b-b253-a7b8ec37760e > only placement parameters to 'operator new' can have default values +## Remarks + The standard formal parameters for [operator new](../../standard-library/new-operators.md#op_new) cannot have default values. Only user-defined placement parameters can specify defaults. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2831.md b/docs/error-messages/compiler-errors-2/compiler-error-c2831.md index 46284818bd2..0b0e11faa78 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2831.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2831.md @@ -10,6 +10,8 @@ ms.assetid: c8c04288-0889-4265-a077-17f94cbcdcc9 > 'operator operator' cannot have default parameters +## Remarks + Only three operators can have default parameters: - [new](../../cpp/new-operator-cpp.md) @@ -18,6 +20,8 @@ Only three operators can have default parameters: - Left parenthesis ( +## Example + The following sample generates C2831: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2833.md b/docs/error-messages/compiler-errors-2/compiler-error-c2833.md index 84e1e48a152..c8ade7ff3e0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2833.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2833.md @@ -10,10 +10,14 @@ ms.assetid: b9418ce1-e2ee-4599-8959-6fde89c27569 > 'operator *operator-name*' is not a recognized operator or type +## Remarks + The word **`operator`** must be followed by an *operator-name* that you want to override or a type you want to convert. For a list of the operators that you can define in a managed type, see [User-defined Operators](../../dotnet/user-defined-operators-cpp-cli.md). +## Example + The following sample generates C2833: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2834.md b/docs/error-messages/compiler-errors-2/compiler-error-c2834.md index 716e1c7e5a9..d03dff30ccf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2834.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2834.md @@ -10,6 +10,8 @@ ms.assetid: 28f9f6eb-ab2a-4e64-aaaa-9d14f955de41 > 'operator *operator-name*' must be globally qualified +## Remarks + The `new` and `delete` operators are tied to the class where they reside. Scope resolution cannot be used to select a version of `new` or `delete` from a different class. To implement multiple forms of the `new` or `delete` operator, create a version of the operator with extra formal parameters. This error is obsolete in Visual Studio 2022 and later versions. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2835.md b/docs/error-messages/compiler-errors-2/compiler-error-c2835.md index 19b93e6b993..75df8cb48e7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2835.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2835.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C2835"] > user-defined conversion 'type' takes no formal parameters +## Remarks + User-defined type conversions cannot take formal parameters. +## Example + The following sample generates C2835: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2838.md b/docs/error-messages/compiler-errors-2/compiler-error-c2838.md index 98106bd67fc..cb3b9cdad0c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2838.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2838.md @@ -10,8 +10,12 @@ ms.assetid: 176b2ad6-7a84-4019-b97e-328866054457 > 'member' : illegal qualified name in member declaration +## Remarks + A class, structure, or union uses a fully qualified name to redeclare a member of another class, structure, or union. +## Example + The following sample generates C2838: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2839.md b/docs/error-messages/compiler-errors-2/compiler-error-c2839.md index 8de1a86d69a..b80a6b1cd4b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2839.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2839.md @@ -10,4 +10,6 @@ ms.assetid: e4914def-2ee1-4e2e-8951-d35f9515c2b2 > invalid return type 'type' for overloaded 'operator ->' +## Remarks + The `->` operator must return a class, struct, or union, or a reference to one. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2843.md b/docs/error-messages/compiler-errors-2/compiler-error-c2843.md index b666371ecd8..dea5b01a403 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2843.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2843.md @@ -10,8 +10,12 @@ ms.assetid: 9d3f2ac4-eea5-4fed-abeb-e752f442bfcc > 'member' : cannot take the address of a non-static data member or method of a managed or WinRT type +## Remarks + An instance is needed to take the address of nonstatic data members of a managed or WinRT class or interface. +## Example + The following sample generates C2843 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2844.md b/docs/error-messages/compiler-errors-2/compiler-error-c2844.md index 7a9a221b428..f15e038d55f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2844.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2844.md @@ -10,10 +10,14 @@ ms.assetid: dcaf4cd2-21b0-4280-ae42-0a706c524d83 > 'member' : cannot be a member of interface 'interface' +## Remarks + An [interface class](../../extensions/interface-class-cpp-component-extensions.md) cannot contain a data member unless it is also a property. Anything other than a property or member function is not allowed in an interface. Furthermore, constructors, destructors, and operators are not allowed. +## Example + The following sample generates C2844: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2845.md b/docs/error-messages/compiler-errors-2/compiler-error-c2845.md index edf83077344..cb46da4baec 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2845.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2845.md @@ -10,4 +10,6 @@ ms.assetid: 31b28ee9-978f-403b-94d8-dbaacd24cce0 > 'operator' : pointer arithmetic not allowed on this type +## Remarks + You cannot increment the pointer to a managed class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2846.md b/docs/error-messages/compiler-errors-2/compiler-error-c2846.md index c737354bda5..03d26231951 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2846.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2846.md @@ -10,8 +10,12 @@ ms.assetid: bc090ec2-5410-4112-9ec6-261325374375 > 'constructor' : an interface cannot have a constructor +## Remarks + A Visual C++ [interface](../../cpp/interface.md) cannot have a constructor. +## Example + The following sample generates C2846: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2847.md b/docs/error-messages/compiler-errors-2/compiler-error-c2847.md index c48edc249d8..fc05dd38142 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2847.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2847.md @@ -10,8 +10,12 @@ ms.assetid: 9ad9a0e0-8b16-49d9-a5be-f8eda2372aa9 > cannot apply sizeof to managed or WinRT type 'class' +## Remarks + The [sizeof](../../cpp/sizeof-operator.md) operator gets the value of an object at compile time. The size of a managed or WinRT class, interface, or value type is dynamic and so cannot be known at compile time. +## Example + For example, the following sample generates C2847: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2849.md b/docs/error-messages/compiler-errors-2/compiler-error-c2849.md index 864390d0e2e..178703cfb60 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2849.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2849.md @@ -10,8 +10,12 @@ ms.assetid: e28f6b3e-e0e7-4f92-b006-ebaa81d368e6 > 'destructor' : an interface cannot have a destructor +## Remarks + A Visual C++ [interface](../../cpp/interface.md) cannot have a destructor. +## Example + The following sample generates C2849: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2850.md b/docs/error-messages/compiler-errors-2/compiler-error-c2850.md index 66cb4224b18..bc0b37da2b6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2850.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2850.md @@ -10,8 +10,12 @@ ms.assetid: f3efe86c-4168-4e76-a133-3f8314c69f51 > 'construct' : only allowed at file scope; may not be in a nested construct +## Remarks + Constructs, such as some pragmas, can only appear at global scope. +## Example + The following sample generates C2850: ```cpp From 6b6a21c9e702fd1f38754c7445a5703a676ab141 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 9 Aug 2025 21:58:08 +0800 Subject: [PATCH 1310/2255] Replace term "sample" with "example" for error references in range [C2821, C2850] --- docs/error-messages/compiler-errors-2/compiler-error-c2821.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2823.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2824.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2825.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2831.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2833.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2835.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2838.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2842.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2843.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2844.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2846.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2847.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2849.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2850.md | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2821.md b/docs/error-messages/compiler-errors-2/compiler-error-c2821.md index 9c4967c4aa7..ae1142b449f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2821.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2821.md @@ -16,7 +16,7 @@ The first formal parameter of the [operator new](../../standard-library/new-oper ## Example -The following sample generates C2821: +The following example generates C2821: ```cpp // C2821.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2823.md b/docs/error-messages/compiler-errors-2/compiler-error-c2823.md index a49c7317cdc..e30e34a4684 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2823.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2823.md @@ -16,7 +16,7 @@ Templates are not allowed in **`typedef`** definitions. ## Example -The following sample generates C2823, and shows one way to fix it: +The following example generates C2823, and shows one way to fix it: ```cpp // C2823.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2824.md b/docs/error-messages/compiler-errors-2/compiler-error-c2824.md index 8e38adef9a0..7dfd80d1c80 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2824.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2824.md @@ -16,7 +16,7 @@ With non-based pointers, overloads of operator `new` must return `void *`. ## Example -The following sample generates C2824: +The following example generates C2824: ```cpp // C2824.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2825.md b/docs/error-messages/compiler-errors-2/compiler-error-c2825.md index 08c07cd4e59..3cec16b8510 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2825.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2825.md @@ -18,7 +18,7 @@ For example, make sure that your code does not contain a function declaration wh ## Example -The following sample generates C2825: +The following example generates C2825: ```cpp // C2825.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2831.md b/docs/error-messages/compiler-errors-2/compiler-error-c2831.md index 0b0e11faa78..da0862f24c3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2831.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2831.md @@ -22,7 +22,7 @@ Only three operators can have default parameters: ## Example -The following sample generates C2831: +The following example generates C2831: ```cpp // C2831.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2833.md b/docs/error-messages/compiler-errors-2/compiler-error-c2833.md index c8ade7ff3e0..159efd539f5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2833.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2833.md @@ -18,7 +18,7 @@ For a list of the operators that you can define in a managed type, see [User-def ## Example -The following sample generates C2833: +The following example generates C2833: ```cpp // C2833.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2835.md b/docs/error-messages/compiler-errors-2/compiler-error-c2835.md index 75df8cb48e7..5492c49de67 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2835.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2835.md @@ -15,7 +15,7 @@ User-defined type conversions cannot take formal parameters. ## Example -The following sample generates C2835: +The following example generates C2835: ```cpp // C2835.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2838.md b/docs/error-messages/compiler-errors-2/compiler-error-c2838.md index cb3b9cdad0c..b77835e14fd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2838.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2838.md @@ -16,7 +16,7 @@ A class, structure, or union uses a fully qualified name to redeclare a member o ## Example -The following sample generates C2838: +The following example generates C2838: ```cpp // C2838.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2842.md b/docs/error-messages/compiler-errors-2/compiler-error-c2842.md index 62762894e97..dc1ed07457c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2842.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2842.md @@ -18,7 +18,7 @@ For more information, see [User-Defined Operators (C++/CLI)](../../dotnet/user-d ## Example -The following sample generates C2842. +The following example generates C2842. ```cpp // C2842.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2843.md b/docs/error-messages/compiler-errors-2/compiler-error-c2843.md index dea5b01a403..9cca146112f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2843.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2843.md @@ -16,7 +16,7 @@ An instance is needed to take the address of nonstatic data members of a managed ## Example -The following sample generates C2843 and shows how to fix it: +The following example generates C2843 and shows how to fix it: ```cpp // C2843_2.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2844.md b/docs/error-messages/compiler-errors-2/compiler-error-c2844.md index f15e038d55f..7bdc023e82e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2844.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2844.md @@ -18,7 +18,7 @@ Anything other than a property or member function is not allowed in an interface ## Example -The following sample generates C2844: +The following example generates C2844: ```cpp // C2844a.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2846.md b/docs/error-messages/compiler-errors-2/compiler-error-c2846.md index 03d26231951..ef557074a58 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2846.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2846.md @@ -16,7 +16,7 @@ A Visual C++ [interface](../../cpp/interface.md) cannot have a constructor. ## Example -The following sample generates C2846: +The following example generates C2846: ```cpp // C2846.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2847.md b/docs/error-messages/compiler-errors-2/compiler-error-c2847.md index fc05dd38142..6a44aaa4a32 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2847.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2847.md @@ -16,7 +16,7 @@ The [sizeof](../../cpp/sizeof-operator.md) operator gets the value of an object ## Example -For example, the following sample generates C2847: +For example, the following example generates C2847: ```cpp // C2847.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2849.md b/docs/error-messages/compiler-errors-2/compiler-error-c2849.md index 178703cfb60..a5c8f78d2e9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2849.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2849.md @@ -16,7 +16,7 @@ A Visual C++ [interface](../../cpp/interface.md) cannot have a destructor. ## Example -The following sample generates C2849: +The following example generates C2849: ```cpp // C2849.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2850.md b/docs/error-messages/compiler-errors-2/compiler-error-c2850.md index bc0b37da2b6..7fd187208ef 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2850.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2850.md @@ -16,7 +16,7 @@ Constructs, such as some pragmas, can only appear at global scope. ## Example -The following sample generates C2850: +The following example generates C2850: ```cpp // C2850.cpp From 683e9d7570e6d5e470938883747f049bc8c1c6d4 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 9 Aug 2025 22:01:31 +0800 Subject: [PATCH 1311/2255] Update metadata for error references in range [C2821, C2850] --- .../error-messages/compiler-errors-2/compiler-error-c2821.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2823.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2824.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2825.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2827.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2828.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2829.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2830.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2831.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2833.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2834.md | 3 +-- .../error-messages/compiler-errors-2/compiler-error-c2838.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2839.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2842.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2843.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2844.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2845.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2846.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2847.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2849.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2850.md | 5 ++--- 21 files changed, 41 insertions(+), 62 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2821.md b/docs/error-messages/compiler-errors-2/compiler-error-c2821.md index ae1142b449f..aff747245de 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2821.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2821.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2821" title: "Compiler Error C2821" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2821" +ms.date: 11/04/2016 f1_keywords: ["C2821"] helpviewer_keywords: ["C2821"] -ms.assetid: e8d71988-a968-4484-94db-e8c3bad74a4a --- # Compiler Error C2821 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2823.md b/docs/error-messages/compiler-errors-2/compiler-error-c2823.md index e30e34a4684..461936a5360 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2823.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2823.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2823" title: "Compiler Error C2823" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2823" +ms.date: 11/04/2016 f1_keywords: ["C2823"] helpviewer_keywords: ["C2823"] -ms.assetid: 982b1b35-1a7c-456e-b711-f80cfe2d571e --- # Compiler Error C2823 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2824.md b/docs/error-messages/compiler-errors-2/compiler-error-c2824.md index 7dfd80d1c80..f314fdc5d08 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2824.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2824.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2824" title: "Compiler Error C2824" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2824" +ms.date: 11/04/2016 f1_keywords: ["C2824"] helpviewer_keywords: ["C2824"] -ms.assetid: 5bd865f7-e0af-404e-80fe-e2b798b44a59 --- # Compiler Error C2824 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2825.md b/docs/error-messages/compiler-errors-2/compiler-error-c2825.md index 3cec16b8510..451592c6a90 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2825.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2825.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2825" title: "Compiler Error C2825" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2825" +ms.date: 11/04/2016 f1_keywords: ["C2825"] helpviewer_keywords: ["C2825"] -ms.assetid: c832f1c1-5184-4fc2-9356-12b21daa7af3 --- # Compiler Error C2825 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2827.md b/docs/error-messages/compiler-errors-2/compiler-error-c2827.md index 858b6cb289f..77edf9d6175 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2827.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2827.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2827" title: "Compiler Error C2827" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2827" +ms.date: 11/04/2016 f1_keywords: ["C2827"] helpviewer_keywords: ["C2827"] -ms.assetid: cb3e5814-0c92-40e4-b620-98578ae3003a --- # Compiler Error C2827 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2828.md b/docs/error-messages/compiler-errors-2/compiler-error-c2828.md index febda82f05a..3a2f05f16f2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2828.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2828.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2828" title: "Compiler Error C2828" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2828" +ms.date: 11/04/2016 f1_keywords: ["C2828"] helpviewer_keywords: ["C2828"] -ms.assetid: d8df6ed4-5954-46c2-b59b-52881d4e923d --- # Compiler Error C2828 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2829.md b/docs/error-messages/compiler-errors-2/compiler-error-c2829.md index e2c555c46dd..785f6ffbe62 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2829.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2829.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2829" title: "Compiler Error C2829" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2829" +ms.date: 11/04/2016 f1_keywords: ["C2829"] helpviewer_keywords: ["C2829"] -ms.assetid: b3bfecb8-c8c1-45fd-bb85-4b42a6b8ed2b --- # Compiler Error C2829 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2830.md b/docs/error-messages/compiler-errors-2/compiler-error-c2830.md index e8d7447dd1d..44f5c71e35d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2830.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2830.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2830" title: "Compiler Error C2830" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2830" +ms.date: 11/04/2016 f1_keywords: ["C2830"] helpviewer_keywords: ["C2830"] -ms.assetid: 91607d2d-6aab-4c1b-b253-a7b8ec37760e --- # Compiler Error C2830 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2831.md b/docs/error-messages/compiler-errors-2/compiler-error-c2831.md index da0862f24c3..bc27fed8ecd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2831.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2831.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2831" title: "Compiler Error C2831" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2831" +ms.date: 11/04/2016 f1_keywords: ["C2831"] helpviewer_keywords: ["C2831"] -ms.assetid: c8c04288-0889-4265-a077-17f94cbcdcc9 --- # Compiler Error C2831 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2833.md b/docs/error-messages/compiler-errors-2/compiler-error-c2833.md index 159efd539f5..db4f336ded0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2833.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2833.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2833" title: "Compiler Error C2833" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2833" +ms.date: 11/04/2016 f1_keywords: ["C2833"] helpviewer_keywords: ["C2833"] -ms.assetid: b9418ce1-e2ee-4599-8959-6fde89c27569 --- # Compiler Error C2833 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2834.md b/docs/error-messages/compiler-errors-2/compiler-error-c2834.md index d03dff30ccf..32d04c4ef42 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2834.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2834.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2834" title: "Compiler Error C2834" +description: "Learn more about: Compiler Error C2834" ms.date: 06/01/2022 f1_keywords: ["C2834"] helpviewer_keywords: ["C2834"] -ms.assetid: 28f9f6eb-ab2a-4e64-aaaa-9d14f955de41 --- # Compiler Error C2834 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2838.md b/docs/error-messages/compiler-errors-2/compiler-error-c2838.md index b77835e14fd..d25d68cdfc3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2838.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2838.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2838" title: "Compiler Error C2838" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2838" +ms.date: 11/04/2016 f1_keywords: ["C2838"] helpviewer_keywords: ["C2838"] -ms.assetid: 176b2ad6-7a84-4019-b97e-328866054457 --- # Compiler Error C2838 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2839.md b/docs/error-messages/compiler-errors-2/compiler-error-c2839.md index b80a6b1cd4b..94fe1998ec3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2839.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2839.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2839" title: "Compiler Error C2839" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2839" +ms.date: 11/04/2016 f1_keywords: ["C2839"] helpviewer_keywords: ["C2839"] -ms.assetid: e4914def-2ee1-4e2e-8951-d35f9515c2b2 --- # Compiler Error C2839 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2842.md b/docs/error-messages/compiler-errors-2/compiler-error-c2842.md index dc1ed07457c..b31737736aa 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2842.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2842.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2842" title: "Compiler Error C2842" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2842" +ms.date: 11/04/2016 f1_keywords: ["C2842"] helpviewer_keywords: ["C2842"] -ms.assetid: 8674f08d-9f50-46ad-9229-abc6b74fa0e5 --- # Compiler Error C2842 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2843.md b/docs/error-messages/compiler-errors-2/compiler-error-c2843.md index 9cca146112f..87266f66be2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2843.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2843.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2843" title: "Compiler Error C2843" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2843" +ms.date: 11/04/2016 f1_keywords: ["C2843"] helpviewer_keywords: ["C2843"] -ms.assetid: 9d3f2ac4-eea5-4fed-abeb-e752f442bfcc --- # Compiler Error C2843 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2844.md b/docs/error-messages/compiler-errors-2/compiler-error-c2844.md index 7bdc023e82e..4560e90ad50 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2844.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2844.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2844" title: "Compiler Error C2844" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2844" +ms.date: 11/04/2016 f1_keywords: ["C2844"] helpviewer_keywords: ["C2844"] -ms.assetid: dcaf4cd2-21b0-4280-ae42-0a706c524d83 --- # Compiler Error C2844 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2845.md b/docs/error-messages/compiler-errors-2/compiler-error-c2845.md index cb46da4baec..772b3afbfc4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2845.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2845.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2845" title: "Compiler Error C2845" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2845" +ms.date: 11/04/2016 f1_keywords: ["C2845"] helpviewer_keywords: ["C2845"] -ms.assetid: 31b28ee9-978f-403b-94d8-dbaacd24cce0 --- # Compiler Error C2845 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2846.md b/docs/error-messages/compiler-errors-2/compiler-error-c2846.md index ef557074a58..a7e56fc19f6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2846.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2846.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2846" title: "Compiler Error C2846" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2846" +ms.date: 11/04/2016 f1_keywords: ["C2846"] helpviewer_keywords: ["C2846"] -ms.assetid: bc090ec2-5410-4112-9ec6-261325374375 --- # Compiler Error C2846 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2847.md b/docs/error-messages/compiler-errors-2/compiler-error-c2847.md index 6a44aaa4a32..93cc7ebfb76 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2847.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2847.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2847" title: "Compiler Error C2847" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2847" +ms.date: 11/04/2016 f1_keywords: ["C2847"] helpviewer_keywords: ["C2847"] -ms.assetid: 9ad9a0e0-8b16-49d9-a5be-f8eda2372aa9 --- # Compiler Error C2847 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2849.md b/docs/error-messages/compiler-errors-2/compiler-error-c2849.md index a5c8f78d2e9..4b2afd8008a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2849.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2849.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2849" title: "Compiler Error C2849" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2849" +ms.date: 11/04/2016 f1_keywords: ["C2849"] helpviewer_keywords: ["C2849"] -ms.assetid: e28f6b3e-e0e7-4f92-b006-ebaa81d368e6 --- # Compiler Error C2849 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2850.md b/docs/error-messages/compiler-errors-2/compiler-error-c2850.md index 7fd187208ef..a5720a6a0bb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2850.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2850.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2850" title: "Compiler Error C2850" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2850" +ms.date: 11/04/2016 f1_keywords: ["C2850"] helpviewer_keywords: ["C2850"] -ms.assetid: f3efe86c-4168-4e76-a133-3f8314c69f51 --- # Compiler Error C2850 From 4ca46164f7a284a5eac6aea38b1f63cb5bf6d32f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 9 Aug 2025 22:09:56 +0800 Subject: [PATCH 1312/2255] Remove rogue semicolon for LWG 2729 link text in "C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2019" --- docs/overview/cpp-conformance-improvements-2019.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/cpp-conformance-improvements-2019.md b/docs/overview/cpp-conformance-improvements-2019.md index e3b390b72fe..e95f1e7fd5c 100644 --- a/docs/overview/cpp-conformance-improvements-2019.md +++ b/docs/overview/cpp-conformance-improvements-2019.md @@ -455,7 +455,7 @@ The `std::bitset` constructor no longer reads the ones and zeroes in reverse ord ### `std::pair::operator=` regression -We fixed a regression in the `std::pair` assignment operator introduced when implementing [LWG 2729 "Missing SFINAE on `std::pair::operator=`";](https://cplusplus.github.io/LWG/issue2729). It now correctly accepts types convertible to `std::pair` again. +We fixed a regression in the `std::pair` assignment operator introduced when implementing [LWG 2729 "Missing SFINAE on `std::pair::operator=`"](https://cplusplus.github.io/LWG/issue2729). It now correctly accepts types convertible to `std::pair` again. ### Non-deduced contexts for `add_const_t` From da3abcb1a6a906962de517cbb02956f069083055 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 9 Aug 2025 22:12:05 +0800 Subject: [PATCH 1313/2255] Fix wrong error code in "C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2019" --- docs/overview/cpp-conformance-improvements-2019.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/cpp-conformance-improvements-2019.md b/docs/overview/cpp-conformance-improvements-2019.md index e95f1e7fd5c..1eee2500447 100644 --- a/docs/overview/cpp-conformance-improvements-2019.md +++ b/docs/overview/cpp-conformance-improvements-2019.md @@ -694,7 +694,7 @@ std::equal(std::begin(a), std::end(a), std::begin(b), std::end(b)); ### Effect of defining spaceship operator on `==` and `!=` -A definition of the spaceship operator (**`<=>`**) alone will no longer rewrite expressions involving **`==`** or **`!=`** unless the spaceship operator is marked as **`= default`** ([P1185R2](https://wg21.link/p1185r2)). The following example compiles in Visual Studio 2019 RTW and version 16.1, but produces C2678 in Visual Studio 2019 version 16.2: +A definition of the spaceship operator (**`<=>`**) alone will no longer rewrite expressions involving **`==`** or **`!=`** unless the spaceship operator is marked as **`= default`** ([P1185R2](https://wg21.link/p1185r2)). The following example compiles in Visual Studio 2019 RTW and version 16.1, but produces C2676 in Visual Studio 2019 version 16.2: ```cpp #include From e0cf03b5caaef0cd24d300c5f1672471ac7fe392 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 9 Aug 2025 22:15:43 +0800 Subject: [PATCH 1314/2255] Format note alert and add period in "C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2019" --- docs/overview/cpp-conformance-improvements-2019.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/overview/cpp-conformance-improvements-2019.md b/docs/overview/cpp-conformance-improvements-2019.md index 1eee2500447..fcdcabc5417 100644 --- a/docs/overview/cpp-conformance-improvements-2019.md +++ b/docs/overview/cpp-conformance-improvements-2019.md @@ -67,8 +67,8 @@ To avoid the errors, insert a space in the offending line before the final angle ### References to types with mismatched cv-qualifiers ->[!Note] -> This change only affects Visual Studio 2019 versions 16.0 through 16.8. It was reverted starting in Visual Studio 2019 version 16.9 +> [!NOTE] +> This change only affects Visual Studio 2019 versions 16.0 through 16.8. It was reverted starting in Visual Studio 2019 version 16.9. Previously, MSVC allowed direct binding of a reference from a type with mismatched cv-qualifiers below the top level. This binding could allow modification of supposedly const data referred to by the reference. From 93a81c7944d0638636a922b5c0a60519f8b425d2 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 9 Aug 2025 22:17:49 +0800 Subject: [PATCH 1315/2255] Clean up double and trailing spaces in "C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2019" --- .../cpp-conformance-improvements-2019.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/overview/cpp-conformance-improvements-2019.md b/docs/overview/cpp-conformance-improvements-2019.md index fcdcabc5417..03fdb7fe9c9 100644 --- a/docs/overview/cpp-conformance-improvements-2019.md +++ b/docs/overview/cpp-conformance-improvements-2019.md @@ -579,8 +579,8 @@ int main() // The conversion from 'E' to the fixed underlying type 'unsigned char' is better than the // conversion from 'E' to the promoted type 'unsigned int'. f(e); - - // Error C2666. This call is ambiguous, but previously called f(unsigned int, const B&). + + // Error C2666. This call is ambiguous, but previously called f(unsigned int, const B&). f(e, B{}); } ``` @@ -885,7 +885,7 @@ The non-standard headers \ and \ have been removed. Code Two-phase name lookup requires that non-dependent names used in template bodies must be visible to the template at definition time. Previously, such names may have been found when the template is instantiated. This change makes it easier to write portable and conforming code in MSVC under the [`/permissive-`](../build/reference/permissive-standards-conformance.md) flag. -In Visual Studio 2019 version 16.4 with the **`/permissive-`** flag set, the following example produces an error, because `N::f` isn't visible when the `f` template is defined: +In Visual Studio 2019 version 16.4 with the **`/permissive-`** flag set, the following example produces an error, because `N::f` isn't visible when the `f` template is defined: ```cpp template @@ -1424,7 +1424,7 @@ In Visual Studio 2019 version 16.6 and later, the behavior of **`typedef`** decl The same restrictions are applied recursively to each nested class. The restriction is meant to ensure the simplicity of structs that have **`typedef`** names for linkage purposes. They must be simple enough that no linkage calculations are necessary before the compiler gets to the **`typedef`** name for linkage. -This change affects all standards modes of the compiler. In default (**`/std:c++14`**) and **`/std:c++17`** modes, the compiler emits warning C5208 for non-conforming code. If **`/permissive-`** is specified, the compiler emits warning C5208 as an error under **`/std:c++14`** and emits error C7626 under **`/std:c++17`**. The compiler emits error C7626 for non-conforming code when **`/std:c++20`** or **`/std:c++latest`** is specified. +This change affects all standards modes of the compiler. In default (**`/std:c++14`**) and **`/std:c++17`** modes, the compiler emits warning C5208 for non-conforming code. If **`/permissive-`** is specified, the compiler emits warning C5208 as an error under **`/std:c++14`** and emits error C7626 under **`/std:c++17`**. The compiler emits error C7626 for non-conforming code when **`/std:c++20`** or **`/std:c++latest`** is specified. The following sample shows the constructs that are no longer allowed in unnamed structs. Depending on the standards mode specified, C5208 or C7626 errors or warnings are emitted: @@ -2101,7 +2101,7 @@ The update may change program behavior that relied on an introduced temporary: int func() { int i1 = 13; int i2 = 23; - + int* iptr = &i1; int const * const& iptrcref = iptr; @@ -2110,7 +2110,7 @@ int func() { { return 1; } - + // Now change what iptr points to. // Prior to CWG 2352 iptrcref should be bound to a temporary and still points to the value 13. @@ -2151,7 +2151,7 @@ class B { template B::~B() { /* ... */ } // Before: no diagnostic. -// Now diagnoses a definition mismatch. To fix, define the implementation by +// Now diagnoses a definition mismatch. To fix, define the implementation by // using the same noexcept-specifier. For example, // B::~B() noexcept { /* ... */ } ``` @@ -2254,7 +2254,7 @@ Earlier versions of the compiler would incorrectly convert the argument of `f` f This change can also correct the chosen overload in some other situations: ```cpp -struct Base +struct Base { operator char *(); }; From f8b616e5be0e8f2695732e430ebb07cad9d8dd2a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 9 Aug 2025 22:36:46 +0800 Subject: [PATCH 1316/2255] Fix wrong link to P0226R1 in "C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2017" --- docs/overview/cpp-conformance-improvements-2017.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/cpp-conformance-improvements-2017.md b/docs/overview/cpp-conformance-improvements-2017.md index af33b89fb3f..66d39ebad95 100644 --- a/docs/overview/cpp-conformance-improvements-2017.md +++ b/docs/overview/cpp-conformance-improvements-2017.md @@ -1457,7 +1457,7 @@ void sample(A<0> *p) ### C++17: Mathematical special functions -[P0226R1](https://wg21.link/p0220r1) Adopts previous technical specifications for Mathematical Special Functions into the standard *``* header. +[P0226R1](https://wg21.link/p0226r1) Adopts previous technical specifications for Mathematical Special Functions into the standard *``* header. ### C++17: Deduction guides for the standard library From 02dea38252a3325f88aff814f0221ff8df5edaee Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 9 Aug 2025 22:43:40 +0800 Subject: [PATCH 1317/2255] Fix some typos in "C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2017" --- docs/overview/cpp-conformance-improvements-2017.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/overview/cpp-conformance-improvements-2017.md b/docs/overview/cpp-conformance-improvements-2017.md index 66d39ebad95..e66afb478d8 100644 --- a/docs/overview/cpp-conformance-improvements-2017.md +++ b/docs/overview/cpp-conformance-improvements-2017.md @@ -7,7 +7,7 @@ ms.subservice: "cpp-lang" --- # C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2017 -Microsoft C/C++ in Visual Studio (MSVC) makes conformance improvements and bug fixes in every release. This article lists the improvements by major release, then by version. To jump directly to the changes for a specific version, use list below **In this article**. +Microsoft C/C++ in Visual Studio (MSVC) makes conformance improvements and bug fixes in every release. This article lists the improvements by major release, then by version. To jump directly to the changes for a specific version, use the list below **In this article**. This document lists the changes in Visual Studio 2017. For a guide to the changes in Visual Studio 2022, see [C++ conformance improvements in Visual Studio 2022](cpp-conformance-improvements.md). For a guide to the changes in Visual Studio 2019, see [C++ conformance improvements in Visual Studio 2019](cpp-conformance-improvements-2019.md). For a complete list of previous conformance improvements, see [Visual C++ What's New 2003 through 2015](../porting/visual-cpp-what-s-new-2003-through-2015.md). @@ -805,7 +805,7 @@ In earlier versions of Visual Studio, the compiler always gave a **`constexpr`** ### Removing allocator support in `std::function` -[P0302R1](https://wg21.link/p0302r1) Prior to C++17, the class template `std::function` had several constructors that took an allocator argument. However, the use of allocators in this context was problematic, and the semantics were unclear. The problem contructors have been removed. +[P0302R1](https://wg21.link/p0302r1) Prior to C++17, the class template `std::function` had several constructors that took an allocator argument. However, the use of allocators in this context was problematic, and the semantics were unclear. The problematic constructors have been removed. ### Fixes for `not_fn()` @@ -1051,7 +1051,7 @@ When the code doesn't need to be backwards compatible, avoid the warning by remo ### `__declspec` attributes with `extern "C"` linkage -In earlier versions of Visual Studio, the compiler ignored `__declspec(...)` attributes when `__declspec(...)` was applied before the `extern "C"` linkage specification. This behavior caused code to be generated that user didn't intend, with possible runtime implications. The [C4768](../error-messages/compiler-warnings/c4768.md) warning was added in Visual Studio version 15.3, but was off by default. In Visual Studio 2017 version 15.5, the warning is enabled by default. +In earlier versions of Visual Studio, the compiler ignored `__declspec(...)` attributes when `__declspec(...)` was applied before the `extern "C"` linkage specification. This behavior caused code to be generated that the user didn't intend, with possible runtime implications. The [C4768](../error-messages/compiler-warnings/c4768.md) warning was added in Visual Studio version 15.3, but was off by default. In Visual Studio 2017 version 15.5, the warning is enabled by default. ```cpp __declspec(noinline) extern "C" HRESULT __stdcall // C4768 @@ -1632,7 +1632,7 @@ using X = __declspec(deprecated("msg")) T; // C2760: syntax error: // expected 'type specifier' ``` -To fix the error, change to code to the following (with the attribute placed before the '=' of the alias definition): +To fix the error, change the code to the following (with the attribute placed before the '=' of the alias definition): ```cpp template From 7b4b65691d639387d66e9ea08d8cd8105ba5e705 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 9 Aug 2025 22:45:51 +0800 Subject: [PATCH 1318/2255] Clean up double and trailing spaces in "C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2017" --- docs/overview/cpp-conformance-improvements-2017.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/overview/cpp-conformance-improvements-2017.md b/docs/overview/cpp-conformance-improvements-2017.md index e66afb478d8..21a28fc7af8 100644 --- a/docs/overview/cpp-conformance-improvements-2017.md +++ b/docs/overview/cpp-conformance-improvements-2017.md @@ -611,7 +611,7 @@ To fix the warning, put `extern "C"` first: extern "C" __declspec(noinline) HRESULT __stdcall ``` -This warning is off by default in Visual Studio 2017 version 15.3, and only impacts code compiled with **`/Wall`** **`/WX`**. Starting in Visual Studio 2017 version 15.5, it's enabled by default as a level 3 warning. +This warning is off by default in Visual Studio 2017 version 15.3, and only impacts code compiled with **`/Wall`** **`/WX`**. Starting in Visual Studio 2017 version 15.5, it's enabled by default as a level 3 warning. ### `decltype` and calls to deleted destructors @@ -1022,7 +1022,7 @@ To fix the error, remove the unused variable. ### Single-line comments -In Visual Studio 2017 version 15.5, warnings C4001 and C4179 are no longer emitted by the C compiler. Previously, they were only emitted under the **`/Za`** compiler switch. The warnings are no longer needed because single-line comments have been part of the C standard since C99. +In Visual Studio 2017 version 15.5, warnings C4001 and C4179 are no longer emitted by the C compiler. Previously, they were only emitted under the **`/Za`** compiler switch. The warnings are no longer needed because single-line comments have been part of the C standard since C99. ```cpp /* C only */ @@ -1116,7 +1116,7 @@ error C2027: use of undefined type 'S' ### `std::is_convertible` target type -`std::is_convertible` requires the target type to be a valid return type. In earlier versions of Visual Studio, the compiler incorrectly allowed abstract types, which might lead to incorrect overload resolution and unintended runtime behavior. The following code now correctly raises C2338: +`std::is_convertible` requires the target type to be a valid return type. In earlier versions of Visual Studio, the compiler incorrectly allowed abstract types, which might lead to incorrect overload resolution and unintended runtime behavior. The following code now correctly raises C2338: ```cpp #include @@ -1193,7 +1193,7 @@ The warning was added in Visual Studio 2017 version 15.3, but was off by default ### Defaulted functions and `__declspec(nothrow)` -The compiler previously allowed defaulted functions to be declared with `__declspec(nothrow)` when the corresponding base/member functions permitted exceptions. This behavior is contrary to the C++ standard and can cause undefined behavior at runtime. The standard requires such functions to be defined as deleted if there's an exception specification mismatch. Under **`/std:c++17`**, the following code raises C2280: +The compiler previously allowed defaulted functions to be declared with `__declspec(nothrow)` when the corresponding base/member functions permitted exceptions. This behavior is contrary to the C++ standard and can cause undefined behavior at runtime. The standard requires such functions to be defined as deleted if there's an exception specification mismatch. Under **`/std:c++17`**, the following code raises C2280: ```cpp struct A { @@ -1441,7 +1441,7 @@ void sample(A<0> *p) ### C++20: Avoiding unnecessary decay (partial) -[P0777R1](https://wg21.link/p0777r1) Adds differentiation between the concept of "decay" and that of simply removing const or reference qualifiers. New type trait `remove_reference_t` replaces `decay_t` in some contexts. Support for `remove_cvref_t` is implemented in Visual Studio 2019. +[P0777R1](https://wg21.link/p0777r1) Adds differentiation between the concept of "decay" and that of simply removing const or reference qualifiers. New type trait `remove_reference_t` replaces `decay_t` in some contexts. Support for `remove_cvref_t` is implemented in Visual Studio 2019. ### C++17: Parallel algorithms @@ -1613,7 +1613,7 @@ In [`/permissive-`](../build/reference/permissive-standards-conformance.md) mode ```cpp template -using X = typename T; // C7511: 'T': 'typename' keyword must be +using X = typename T; // C7511: 'T': 'typename' keyword must be // followed by a qualified name ``` From 96a245bbb2436690f4a4f48b2561f479f899ddcd Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 9 Aug 2025 22:54:48 +0800 Subject: [PATCH 1319/2255] Add blockquotes for error messages in range [C2851, C2880] --- docs/error-messages/compiler-errors-2/compiler-error-c2854.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2856.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2859.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2860.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2861.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2862.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2863.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2865.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2867.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2869.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2870.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2871.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2872.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2873.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2874.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2876.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2877.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2878.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2879.md | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2854.md b/docs/error-messages/compiler-errors-2/compiler-error-c2854.md index f4c3ab89deb..c88f0fe9bce 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2854.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2854.md @@ -8,7 +8,7 @@ ms.assetid: 917fec9c-790a-4149-8dfc-00d17a09199c --- # Compiler Error C2854 -syntax error in #pragma hdrstop +> syntax error in #pragma hdrstop The `#pragma hdrstop` gives an invalid filename. The pragma can be followed by an optional filename in parentheses and quotation marks: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2856.md b/docs/error-messages/compiler-errors-2/compiler-error-c2856.md index 900d8c6d6a8..543a1c21e58 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2856.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2856.md @@ -8,7 +8,7 @@ ms.assetid: fe616c51-124e-49e3-9dd8-883ec1660680 --- # Compiler Error C2856 -\#pragma hdrstop cannot be inside an #if block +> #pragma hdrstop cannot be inside an #if block The `hdrstop` pragma cannot be placed inside the body of a conditional compilation block. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2859.md b/docs/error-messages/compiler-errors-2/compiler-error-c2859.md index 10dbcd0e841..f99bbb1cf9c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2859.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2859.md @@ -8,7 +8,7 @@ ms.assetid: fcfbc58d-08f6-4752-9688-8aaac517e684 --- # Compiler Error C2859 -filename is not the type file that was used when this precompiled header was created, recreate the precompiled header. +> filename is not the type file that was used when this precompiled header was created, recreate the precompiled header. The project database and precompiled header files must be created together to ensure consistent information. Rebuild the project to recreate the precompiled header. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2860.md b/docs/error-messages/compiler-errors-2/compiler-error-c2860.md index 5d0d5958203..d35db99dce9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2860.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2860.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2860"] --- # Compiler Error C2860 -'void' cannot be used as a function parameter except for '(void)' +> 'void' cannot be used as a function parameter except for '(void)' A function parameter cannot be of type **`void`**. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2861.md b/docs/error-messages/compiler-errors-2/compiler-error-c2861.md index 2a03308508a..bda2a8637d1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2861.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2861.md @@ -8,7 +8,7 @@ ms.assetid: 012bb44d-6c9b-4def-b54e-b19f1f8ddd1b --- # Compiler Error C2861 -'function name' : an interface member function cannot be defined +> 'function name' : an interface member function cannot be defined The compiler encountered the interface keyword or deduced a struct as an interface but then found a member function definition. An interface cannot contain a definition for a member function. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2862.md b/docs/error-messages/compiler-errors-2/compiler-error-c2862.md index 1e293348d28..37ca641ed8c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2862.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2862.md @@ -8,7 +8,7 @@ ms.assetid: c04d8499-b799-48a1-9fb4-7902a0b0ac8e --- # Compiler Error C2862 -'interface' : an interface can only have public members +> 'interface' : an interface can only have public members Protected and private members may be accessed only from other member functions. Such members are no use in an interface, since it may not provide implementations for any of its members. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2863.md b/docs/error-messages/compiler-errors-2/compiler-error-c2863.md index 5df82ef31b2..9cf8bba351c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2863.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2863.md @@ -8,7 +8,7 @@ ms.assetid: 32561d67-a795-486b-b3b6-4b90a1acb176 --- # Compiler Error C2863 -'interface' : an interface cannot have friends +> 'interface' : an interface cannot have friends Declaring friends on an interface is not allowed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2865.md b/docs/error-messages/compiler-errors-2/compiler-error-c2865.md index 798e14910ec..de8d2d05fbb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2865.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2865.md @@ -8,7 +8,7 @@ ms.assetid: 973eb6a0-c99a-4d25-b3e5-fe0539794d77 --- # Compiler Error C2865 -'function' : illegal comparison for handle_or_pointer +> 'function' : illegal comparison for handle_or_pointer You can compare references to [Classes and Structs](../../extensions/classes-and-structs-cpp-component-extensions.md) or managed reference types only for equality to see if they refer to the same object (==) or to different objects (!=). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2867.md b/docs/error-messages/compiler-errors-2/compiler-error-c2867.md index 5a5373bcccf..bf586df2210 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2867.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2867.md @@ -8,7 +8,7 @@ ms.assetid: 63be26b2-d9ab-4f3d-a8b7-981ce3e4d6b9 --- # Compiler Error C2867 -'identifier' : is not a namespace +> 'identifier' : is not a namespace A **`using`** directive is applied to something other than a namespace. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2869.md b/docs/error-messages/compiler-errors-2/compiler-error-c2869.md index e42f10940ac..36ad2909a90 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2869.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2869.md @@ -8,7 +8,7 @@ ms.assetid: 6e30c001-47f3-4101-b9f1-cc542c9fffae --- # Compiler Error C2869 -'name' : has already been defined to be a namespace +> 'name' : has already been defined to be a namespace You cannot reuse a name already used as a namespace. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2870.md b/docs/error-messages/compiler-errors-2/compiler-error-c2870.md index 47ea940abcd..27df1d85682 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2870.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2870.md @@ -8,7 +8,7 @@ ms.assetid: 80523ee9-1fd3-4dc4-8a77-5083deb99066 --- # Compiler Error C2870 -'name' : a namespace definition must appear either at file scope or immediately within another namespace definition +> 'name' : a namespace definition must appear either at file scope or immediately within another namespace definition You defined namespace `name` incorrectly. Namespaces must be defined at file scope (outside all blocks and classes) or immediately within another namespace. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2871.md b/docs/error-messages/compiler-errors-2/compiler-error-c2871.md index 2e451cbade7..a1fbef1b15d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2871.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2871.md @@ -8,7 +8,7 @@ ms.assetid: 44aeb84d-61f0-45e0-8dad-22a3cd46b7f8 --- # Compiler Error C2871 -'name' : a namespace with this name does not exist +> 'name' : a namespace with this name does not exist This error will occur when you pass an identifier that is not a namespace to a [using](../../cpp/namespaces-cpp.md#using_directives) directive. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2872.md b/docs/error-messages/compiler-errors-2/compiler-error-c2872.md index 8c90fb01c05..7718d51e823 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2872.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2872.md @@ -8,7 +8,7 @@ ms.assetid: c619ef97-6e0e-41d7-867c-f8d28a07d553 --- # Compiler Error C2872 -'*symbol*' : ambiguous symbol +> '*symbol*' : ambiguous symbol The compiler cannot determine which symbol you are referring to. More than one symbol with the specified name is in scope. See the notes following the error message for the file locations and declarations the compiler found for the ambiguous symbol. To fix this issue, you can fully qualify the ambiguous symbol by using its namespace, for example, `std::byte` or `::byte`. You can also use a [namespace alias](../../cpp/namespaces-cpp.md#namespace_aliases) to give an included namespace a convenient short name for use when disambiguating symbols in your source code. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2873.md b/docs/error-messages/compiler-errors-2/compiler-error-c2873.md index f68141e9cb5..bc5bddc3bc4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2873.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2873.md @@ -8,6 +8,6 @@ ms.assetid: 7a10036b-400e-4364-bd2f-dcd7370c5e28 --- # Compiler Error C2873 -'symbol' : symbol cannot be used in a using-declaration +> 'symbol' : symbol cannot be used in a using-declaration A **`using`** directive is missing a [namespace](../../cpp/namespaces-cpp.md) keyword. This causes the compiler to misinterpret the code as a [using declaration](../../cpp/using-declaration.md) rather than a [using directive](../../cpp/namespaces-cpp.md#using_directives). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2874.md b/docs/error-messages/compiler-errors-2/compiler-error-c2874.md index f77e52f6aa5..8442862e206 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2874.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2874.md @@ -8,7 +8,7 @@ ms.assetid: b54fa9d8-8df5-40d9-9b3b-aa3e9dd6a3be --- # Compiler Error C2874 -using-declaration causes a multiple declaration of 'symbol' +> using-declaration causes a multiple declaration of 'symbol' The declaration causes the same item to be defined twice. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2876.md b/docs/error-messages/compiler-errors-2/compiler-error-c2876.md index 4aa48c784ad..c8d255d4956 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2876.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2876.md @@ -8,7 +8,7 @@ ms.assetid: 8b674bf1-f9f4-4a8e-8127-e884c1d1708f --- # Compiler Error C2876 -'class::symbol' : not all overloads are accessible +> 'class::symbol' : not all overloads are accessible All overloaded forms of a function in a base class must be accessible to the derived class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2877.md b/docs/error-messages/compiler-errors-2/compiler-error-c2877.md index dfe1367cf52..52dc619aac4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2877.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2877.md @@ -8,7 +8,7 @@ ms.assetid: 0b54837e-fcae-4d90-9658-623250435e24 --- # Compiler Error C2877 -'symbol' is not accessible from 'class' +> 'symbol' is not accessible from 'class' All members derived from a base class must be accessible in the derived class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2878.md b/docs/error-messages/compiler-errors-2/compiler-error-c2878.md index cc6a1320dac..600fa940f96 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2878.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2878.md @@ -8,7 +8,7 @@ ms.assetid: 83ee3de1-f554-49e8-a840-1f550cee7f69 --- # Compiler Error C2878 -'name' : a namespace or class of this name does not exist +> 'name' : a namespace or class of this name does not exist You made reference to a namespace or class that is not defined. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2879.md b/docs/error-messages/compiler-errors-2/compiler-error-c2879.md index 90cfabfe639..0292204c2fd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2879.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2879.md @@ -8,7 +8,7 @@ ms.assetid: ac92b645-2394-49de-8632-43d44e0553ed --- # Compiler Error C2879 -'symbol' : only an existing namespace can be given an alternative name by a namespace alias definition +> 'symbol' : only an existing namespace can be given an alternative name by a namespace alias definition You cannot create a [namespace alias](../../cpp/namespaces-cpp.md#namespace_aliases) to a symbol other than a namespace. From 055bafe15faa4adc31913ee3d20f3b8326e9818a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 9 Aug 2025 23:01:33 +0800 Subject: [PATCH 1320/2255] Add "Remarks" and "Example" headings for error references in range [C2851, C2880] --- docs/error-messages/compiler-errors-2/compiler-error-c2854.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2855.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c2856.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2857.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c2858.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2859.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2860.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2861.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2862.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2863.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2865.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2867.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2868.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2869.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2870.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2871.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2872.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2873.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2874.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2875.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2876.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2877.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2878.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2879.md | 4 ++++ 24 files changed, 74 insertions(+), 4 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2854.md b/docs/error-messages/compiler-errors-2/compiler-error-c2854.md index c88f0fe9bce..d39a8679338 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2854.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2854.md @@ -10,8 +10,12 @@ ms.assetid: 917fec9c-790a-4149-8dfc-00d17a09199c > syntax error in #pragma hdrstop +## Remarks + The `#pragma hdrstop` gives an invalid filename. The pragma can be followed by an optional filename in parentheses and quotation marks: +## Example + The following sample generates C2854: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2855.md b/docs/error-messages/compiler-errors-2/compiler-error-c2855.md index c67e56ab236..c1d986985f8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2855.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2855.md @@ -9,10 +9,10 @@ helpviewer_keywords: ["C2855"] > command-line option '*option*' inconsistent with precompiled header -This error occurs when a command-line option differs from the options used to create the precompiled header. - ## Remarks +This error occurs when a command-line option differs from the options used to create the precompiled header. + Error C2855 can occur when you make an incremental build after changing a compiler option. It can also happen if you set specific compiler options for individual source files. To resolve this error, regenerate the precompiled header by using the specified command-line option. To regenerate the precompiled header, build the associated source file. For example, projects created by a Visual Studio template usually create a source file named *`pch.cpp`* to generate the precompiled header. (In older versions of Visual Studio, this file is named *`stdafx.cpp`*.) In other projects, the source file to rebuild is the one built by using the [`/Yc` (Create precompiled header file)](../../build/reference/yc-create-precompiled-header-file.md) compiler option. We recommend you rebuild your entire project after making a change to the precompiled header. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2856.md b/docs/error-messages/compiler-errors-2/compiler-error-c2856.md index 543a1c21e58..db0ed9bc05e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2856.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2856.md @@ -10,6 +10,8 @@ ms.assetid: fe616c51-124e-49e3-9dd8-883ec1660680 > #pragma hdrstop cannot be inside an #if block +## Remarks + The `hdrstop` pragma cannot be placed inside the body of a conditional compilation block. Move the `#pragma hdrstop` statement to an area that is not contained in an `#if/#endif` block. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2857.md b/docs/error-messages/compiler-errors-2/compiler-error-c2857.md index 8b8572462b6..c76c6fc39bf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2857.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2857.md @@ -10,10 +10,10 @@ ms.assetid: b57302bd-58ec-45ae-992a-1e282d5eeccc > '#include' statement specified with the /Yc*filename* command-line option was not found in the source file -The [/Yc](../../build/reference/yc-create-precompiled-header-file.md) option specifies the name of an include file that is not included in the source file being compiled. - ## Remarks +The [/Yc](../../build/reference/yc-create-precompiled-header-file.md) option specifies the name of an include file that is not included in the source file being compiled. + When you use the **/Yc**filename option on a source file to create a precompiled header (PCH) file, that source file must include the *filename* header file. Every file included by the source file, up to and including the specified *filename*, is included in the PCH file. In other source files compiled by using the **/Yu**filename option to use the PCH file, an include of *filename* must be the first non-comment line in the file. The compiler ignores anything in the source file before this include. This error can be caused by an `#include "filename"` statement in a conditional compilation block that is not compiled in your PCH source file. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2858.md b/docs/error-messages/compiler-errors-2/compiler-error-c2858.md index 5c73c903ae3..4efb856c314 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2858.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2858.md @@ -10,6 +10,8 @@ ms.assetid: 1fb1d770-307e-476e-9984-a1d8f8ce2820 > command-line option '/Yc (/Fd*filename1*)' inconsistent with precompiled header, which used '/Fd*filename2*' +## Remarks + The program database specified by the Use Precompiled Header ([`/Yu`](../../build/reference/yu-use-precompiled-header-file.md)) option is not the one specified by the previous Create Precompiled Header ([`/Yc`](../../build/reference/yc-create-precompiled-header-file.md)) option. This error is obsolete in Visual Studio 2022 and later versions. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2859.md b/docs/error-messages/compiler-errors-2/compiler-error-c2859.md index f99bbb1cf9c..ee6e1d67288 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2859.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2859.md @@ -10,6 +10,8 @@ ms.assetid: fcfbc58d-08f6-4752-9688-8aaac517e684 > filename is not the type file that was used when this precompiled header was created, recreate the precompiled header. +## Remarks + The project database and precompiled header files must be created together to ensure consistent information. Rebuild the project to recreate the precompiled header. For information on precompiled headers, see [/Y (Precompiled Headers)](../../build/reference/y-precompiled-headers.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2860.md b/docs/error-messages/compiler-errors-2/compiler-error-c2860.md index d35db99dce9..c40cb77edf3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2860.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2860.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C2860"] > 'void' cannot be used as a function parameter except for '(void)' +## Remarks + A function parameter cannot be of type **`void`**. +## Example + The following sample generates C2860: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2861.md b/docs/error-messages/compiler-errors-2/compiler-error-c2861.md index bda2a8637d1..a650835ade3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2861.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2861.md @@ -10,6 +10,8 @@ ms.assetid: 012bb44d-6c9b-4def-b54e-b19f1f8ddd1b > 'function name' : an interface member function cannot be defined +## Remarks + The compiler encountered the interface keyword or deduced a struct as an interface but then found a member function definition. An interface cannot contain a definition for a member function. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2862.md b/docs/error-messages/compiler-errors-2/compiler-error-c2862.md index 37ca641ed8c..37fdea22bf7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2862.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2862.md @@ -10,8 +10,12 @@ ms.assetid: c04d8499-b799-48a1-9fb4-7902a0b0ac8e > 'interface' : an interface can only have public members +## Remarks + Protected and private members may be accessed only from other member functions. Such members are no use in an interface, since it may not provide implementations for any of its members. +## Example + The following sample will generate C2862: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2863.md b/docs/error-messages/compiler-errors-2/compiler-error-c2863.md index 9cf8bba351c..ca736cbc777 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2863.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2863.md @@ -10,8 +10,12 @@ ms.assetid: 32561d67-a795-486b-b3b6-4b90a1acb176 > 'interface' : an interface cannot have friends +## Remarks + Declaring friends on an interface is not allowed. +## Example + The following sample generates C2863: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2865.md b/docs/error-messages/compiler-errors-2/compiler-error-c2865.md index de8d2d05fbb..f4b758b9748 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2865.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2865.md @@ -10,6 +10,8 @@ ms.assetid: 973eb6a0-c99a-4d25-b3e5-fe0539794d77 > 'function' : illegal comparison for handle_or_pointer +## Remarks + You can compare references to [Classes and Structs](../../extensions/classes-and-structs-cpp-component-extensions.md) or managed reference types only for equality to see if they refer to the same object (==) or to different objects (!=). You cannot compare them for ordering because the .NET runtime might move managed objects at any time, changing the outcome of the test. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2867.md b/docs/error-messages/compiler-errors-2/compiler-error-c2867.md index bf586df2210..ce9062d1727 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2867.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2867.md @@ -10,8 +10,12 @@ ms.assetid: 63be26b2-d9ab-4f3d-a8b7-981ce3e4d6b9 > 'identifier' : is not a namespace +## Remarks + A **`using`** directive is applied to something other than a namespace. +## Example + The following sample generates C2867: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2868.md b/docs/error-messages/compiler-errors-2/compiler-error-c2868.md index 3c9e74506eb..364c9de8508 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2868.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2868.md @@ -10,6 +10,8 @@ ms.assetid: 6ff5837b-e66d-44d1-9d17-80af35e08d08 > '*identifier*' : illegal syntax for using-declaration; expected qualified-name +## Remarks + A [using declaration](../../cpp/using-declaration.md) requires a *qualified name*, a scope-operator (`::`) separated sequence of namespace, class, or enumeration names that ends with the identifier name. A single scope resolution operator may be used to introduce a name from the global namespace. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2869.md b/docs/error-messages/compiler-errors-2/compiler-error-c2869.md index 36ad2909a90..16ad9ec94a2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2869.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2869.md @@ -10,8 +10,12 @@ ms.assetid: 6e30c001-47f3-4101-b9f1-cc542c9fffae > 'name' : has already been defined to be a namespace +## Remarks + You cannot reuse a name already used as a namespace. +## Example + The following sample generates C2869: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2870.md b/docs/error-messages/compiler-errors-2/compiler-error-c2870.md index 27df1d85682..d2c18bc9f7f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2870.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2870.md @@ -10,8 +10,12 @@ ms.assetid: 80523ee9-1fd3-4dc4-8a77-5083deb99066 > 'name' : a namespace definition must appear either at file scope or immediately within another namespace definition +## Remarks + You defined namespace `name` incorrectly. Namespaces must be defined at file scope (outside all blocks and classes) or immediately within another namespace. +## Example + The following sample generates C2870: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2871.md b/docs/error-messages/compiler-errors-2/compiler-error-c2871.md index a1fbef1b15d..f729e31a9a0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2871.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2871.md @@ -10,6 +10,8 @@ ms.assetid: 44aeb84d-61f0-45e0-8dad-22a3cd46b7f8 > 'name' : a namespace with this name does not exist +## Remarks + This error will occur when you pass an identifier that is not a namespace to a [using](../../cpp/namespaces-cpp.md#using_directives) directive. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2872.md b/docs/error-messages/compiler-errors-2/compiler-error-c2872.md index 7718d51e823..83b319b3412 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2872.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2872.md @@ -10,6 +10,8 @@ ms.assetid: c619ef97-6e0e-41d7-867c-f8d28a07d553 > '*symbol*' : ambiguous symbol +## Remarks + The compiler cannot determine which symbol you are referring to. More than one symbol with the specified name is in scope. See the notes following the error message for the file locations and declarations the compiler found for the ambiguous symbol. To fix this issue, you can fully qualify the ambiguous symbol by using its namespace, for example, `std::byte` or `::byte`. You can also use a [namespace alias](../../cpp/namespaces-cpp.md#namespace_aliases) to give an included namespace a convenient short name for use when disambiguating symbols in your source code. C2872 can occur if a header file includes a [using directive](../../cpp/namespaces-cpp.md#using_directives), and a subsequent header file is included that contains a type that is also in the namespace specified in the **`using`** directive. Specify a **`using`** directive only after all your header files are specified with `#include`. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2873.md b/docs/error-messages/compiler-errors-2/compiler-error-c2873.md index bc5bddc3bc4..61f3b49cd78 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2873.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2873.md @@ -10,4 +10,6 @@ ms.assetid: 7a10036b-400e-4364-bd2f-dcd7370c5e28 > 'symbol' : symbol cannot be used in a using-declaration +## Remarks + A **`using`** directive is missing a [namespace](../../cpp/namespaces-cpp.md) keyword. This causes the compiler to misinterpret the code as a [using declaration](../../cpp/using-declaration.md) rather than a [using directive](../../cpp/namespaces-cpp.md#using_directives). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2874.md b/docs/error-messages/compiler-errors-2/compiler-error-c2874.md index 8442862e206..945195f233a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2874.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2874.md @@ -10,8 +10,12 @@ ms.assetid: b54fa9d8-8df5-40d9-9b3b-aa3e9dd6a3be > using-declaration causes a multiple declaration of 'symbol' +## Remarks + The declaration causes the same item to be defined twice. +## Example + The following sample generates C2874: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2875.md b/docs/error-messages/compiler-errors-2/compiler-error-c2875.md index ed6b53506d0..4c710d942b1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2875.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2875.md @@ -10,10 +10,14 @@ ms.assetid: d589fc0c-08b2-4a79-bc0e-dca5eb80bdd5 > using-declaration causes a multiple declaration of 'class::identifier' +## Remarks + The declaration causes the same item to be defined twice. This error is obsolete in Visual Studio 2022 and later versions. +## Example + The following sample generates C2875: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2876.md b/docs/error-messages/compiler-errors-2/compiler-error-c2876.md index c8d255d4956..4eca8cd9704 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2876.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2876.md @@ -10,8 +10,12 @@ ms.assetid: 8b674bf1-f9f4-4a8e-8127-e884c1d1708f > 'class::symbol' : not all overloads are accessible +## Remarks + All overloaded forms of a function in a base class must be accessible to the derived class. +## Example + The following sample generates C2876: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2877.md b/docs/error-messages/compiler-errors-2/compiler-error-c2877.md index 52dc619aac4..ebb2d7657ee 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2877.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2877.md @@ -10,8 +10,12 @@ ms.assetid: 0b54837e-fcae-4d90-9658-623250435e24 > 'symbol' is not accessible from 'class' +## Remarks + All members derived from a base class must be accessible in the derived class. +## Example + The following sample generates C2877: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2878.md b/docs/error-messages/compiler-errors-2/compiler-error-c2878.md index 600fa940f96..8d49ebbac54 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2878.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2878.md @@ -10,8 +10,12 @@ ms.assetid: 83ee3de1-f554-49e8-a840-1f550cee7f69 > 'name' : a namespace or class of this name does not exist +## Remarks + You made reference to a namespace or class that is not defined. +## Example + The following sample generates C2878: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2879.md b/docs/error-messages/compiler-errors-2/compiler-error-c2879.md index 0292204c2fd..469fae185fd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2879.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2879.md @@ -10,8 +10,12 @@ ms.assetid: ac92b645-2394-49de-8632-43d44e0553ed > 'symbol' : only an existing namespace can be given an alternative name by a namespace alias definition +## Remarks + You cannot create a [namespace alias](../../cpp/namespaces-cpp.md#namespace_aliases) to a symbol other than a namespace. +## Example + The following sample generates C2879: ```cpp From c901ee3b7581f46590d1bb5e4bf592520538d936 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 9 Aug 2025 23:03:05 +0800 Subject: [PATCH 1321/2255] Replace term "sample" with "example" for error references in range [C2851, C2880] --- docs/error-messages/compiler-errors-2/compiler-error-c2854.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2857.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2860.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2861.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2862.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2863.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2864.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c2867.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2868.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2869.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2870.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2871.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2872.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2874.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2875.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2876.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2877.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2878.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2879.md | 2 +- 19 files changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2854.md b/docs/error-messages/compiler-errors-2/compiler-error-c2854.md index d39a8679338..2f1f73997d5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2854.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2854.md @@ -16,7 +16,7 @@ The `#pragma hdrstop` gives an invalid filename. The pragma can be followed by a ## Example -The following sample generates C2854: +The following example generates C2854: ```cpp // C2854.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2857.md b/docs/error-messages/compiler-errors-2/compiler-error-c2857.md index c76c6fc39bf..f72675f80be 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2857.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2857.md @@ -20,7 +20,7 @@ This error can be caused by an `#include "filename"` statement in a conditional ## Example -In typical usage, one source file in your project is designated as the PCH source file, and one header file is used as the PCH header file. A typical PCH header file has all of the library headers used in your project, but not local headers that are still under development. In this sample, the PCH header file is named *my_pch.h*. +In typical usage, one source file in your project is designated as the PCH source file, and one header file is used as the PCH header file. A typical PCH header file has all of the library headers used in your project, but not local headers that are still under development. In this example, the PCH header file is named *my_pch.h*. ```cpp // my_pch.h diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2860.md b/docs/error-messages/compiler-errors-2/compiler-error-c2860.md index c40cb77edf3..793d6ccf87b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2860.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2860.md @@ -15,7 +15,7 @@ A function parameter cannot be of type **`void`**. ## Example -The following sample generates C2860: +The following example generates C2860: ```cpp // C2860.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2861.md b/docs/error-messages/compiler-errors-2/compiler-error-c2861.md index a650835ade3..8c59e19122b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2861.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2861.md @@ -16,7 +16,7 @@ The compiler encountered the interface keyword or deduced a struct as an interfa ## Example -The following sample generates C2861: +The following example generates C2861: ```cpp // C2861.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2862.md b/docs/error-messages/compiler-errors-2/compiler-error-c2862.md index 37fdea22bf7..da87d381715 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2862.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2862.md @@ -16,7 +16,7 @@ Protected and private members may be accessed only from other member functions. ## Example -The following sample will generate C2862: +The following example will generate C2862: ```cpp // C2862.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2863.md b/docs/error-messages/compiler-errors-2/compiler-error-c2863.md index ca736cbc777..f28ec17bc45 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2863.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2863.md @@ -16,7 +16,7 @@ Declaring friends on an interface is not allowed. ## Example -The following sample generates C2863: +The following example generates C2863: ```cpp // C2863.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2864.md b/docs/error-messages/compiler-errors-2/compiler-error-c2864.md index 9dd8b4fe30e..bdd7632f1c7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2864.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2864.md @@ -16,7 +16,7 @@ To initialize a **`static`** data member that's defined as **`volatile`**, non-* ## Example -This sample generates C2864: +This example generates C2864: ```cpp // C2864.cpp @@ -32,7 +32,7 @@ private: }; ``` -This sample shows how to fix C2864: +This example shows how to fix C2864: ```cpp // C2864b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2867.md b/docs/error-messages/compiler-errors-2/compiler-error-c2867.md index ce9062d1727..86a045b2bde 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2867.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2867.md @@ -16,7 +16,7 @@ A **`using`** directive is applied to something other than a namespace. ## Example -The following sample generates C2867: +The following example generates C2867: ```cpp // C2867.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2868.md b/docs/error-messages/compiler-errors-2/compiler-error-c2868.md index 364c9de8508..3d57df14e95 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2868.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2868.md @@ -16,7 +16,7 @@ A [using declaration](../../cpp/using-declaration.md) requires a *qualified name ## Example -The following sample generates C2868 and also shows correct usage: +The following example generates C2868 and also shows correct usage: ```cpp // C2868.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2869.md b/docs/error-messages/compiler-errors-2/compiler-error-c2869.md index 16ad9ec94a2..c2da232f4b3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2869.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2869.md @@ -16,7 +16,7 @@ You cannot reuse a name already used as a namespace. ## Example -The following sample generates C2869: +The following example generates C2869: ```cpp // C2869.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2870.md b/docs/error-messages/compiler-errors-2/compiler-error-c2870.md index d2c18bc9f7f..6e5addcfcff 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2870.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2870.md @@ -16,7 +16,7 @@ You defined namespace `name` incorrectly. Namespaces must be defined at file sco ## Example -The following sample generates C2870: +The following example generates C2870: ```cpp // C2870.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2871.md b/docs/error-messages/compiler-errors-2/compiler-error-c2871.md index f729e31a9a0..341b85b7046 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2871.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2871.md @@ -16,7 +16,7 @@ This error will occur when you pass an identifier that is not a namespace to a [ ## Example -The following sample generates C2871: +The following example generates C2871: ```cpp // C2871.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2872.md b/docs/error-messages/compiler-errors-2/compiler-error-c2872.md index 83b319b3412..d4586bd17f7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2872.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2872.md @@ -24,7 +24,7 @@ C2872 can occur in Visual Studio 2013 due to a conflict between the `Windows::Fo ## Example -The following sample generates C2872, because an ambiguous reference is made to a variable named `i`; two variables with the same name are in scope: +The following example generates C2872, because an ambiguous reference is made to a variable named `i`; two variables with the same name are in scope: ```cpp // C2872.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2874.md b/docs/error-messages/compiler-errors-2/compiler-error-c2874.md index 945195f233a..25b0b9201d0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2874.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2874.md @@ -16,7 +16,7 @@ The declaration causes the same item to be defined twice. ## Example -The following sample generates C2874: +The following example generates C2874: ```cpp // C2874.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2875.md b/docs/error-messages/compiler-errors-2/compiler-error-c2875.md index 4c710d942b1..ff4b0b49f16 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2875.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2875.md @@ -18,7 +18,7 @@ This error is obsolete in Visual Studio 2022 and later versions. ## Example -The following sample generates C2875: +The following example generates C2875: ```cpp // C2875.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2876.md b/docs/error-messages/compiler-errors-2/compiler-error-c2876.md index 4eca8cd9704..af2bb3f2d88 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2876.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2876.md @@ -16,7 +16,7 @@ All overloaded forms of a function in a base class must be accessible to the der ## Example -The following sample generates C2876: +The following example generates C2876: ```cpp // C2876.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2877.md b/docs/error-messages/compiler-errors-2/compiler-error-c2877.md index ebb2d7657ee..94c11b20d7e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2877.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2877.md @@ -16,7 +16,7 @@ All members derived from a base class must be accessible in the derived class. ## Example -The following sample generates C2877: +The following example generates C2877: ```cpp // C2877.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2878.md b/docs/error-messages/compiler-errors-2/compiler-error-c2878.md index 8d49ebbac54..f41e0c1c0e1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2878.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2878.md @@ -16,7 +16,7 @@ You made reference to a namespace or class that is not defined. ## Example -The following sample generates C2878: +The following example generates C2878: ```cpp // C2878.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2879.md b/docs/error-messages/compiler-errors-2/compiler-error-c2879.md index 469fae185fd..0cf0e501595 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2879.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2879.md @@ -16,7 +16,7 @@ You cannot create a [namespace alias](../../cpp/namespaces-cpp.md#namespace_alia ## Example -The following sample generates C2879: +The following example generates C2879: ```cpp // C2879.cpp From 4bb41b2e213cdcb7cd100c10b8580e9be2c46e90 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 9 Aug 2025 23:07:57 +0800 Subject: [PATCH 1322/2255] Update metadata for error references in range [C2851, C2880] --- .../error-messages/compiler-errors-2/compiler-error-c2854.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2855.md | 2 +- .../error-messages/compiler-errors-2/compiler-error-c2856.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2857.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2858.md | 3 +-- .../error-messages/compiler-errors-2/compiler-error-c2859.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2860.md | 4 ++-- .../error-messages/compiler-errors-2/compiler-error-c2861.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2862.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2863.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2864.md | 3 +-- .../error-messages/compiler-errors-2/compiler-error-c2865.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2867.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2868.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2869.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2870.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2871.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2872.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2873.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2874.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2875.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2876.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2877.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2878.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2879.md | 5 ++--- 25 files changed, 47 insertions(+), 70 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2854.md b/docs/error-messages/compiler-errors-2/compiler-error-c2854.md index 2f1f73997d5..881fa57914a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2854.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2854.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2854" title: "Compiler Error C2854" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2854" +ms.date: 11/04/2016 f1_keywords: ["C2854"] helpviewer_keywords: ["C2854"] -ms.assetid: 917fec9c-790a-4149-8dfc-00d17a09199c --- # Compiler Error C2854 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2855.md b/docs/error-messages/compiler-errors-2/compiler-error-c2855.md index c1d986985f8..03760f6647a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2855.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2855.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler Error C2855" title: "Compiler Error C2855" +description: "Learn more about: Compiler Error C2855" ms.date: 02/16/2021 f1_keywords: ["C2855"] helpviewer_keywords: ["C2855"] diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2856.md b/docs/error-messages/compiler-errors-2/compiler-error-c2856.md index db0ed9bc05e..1a6f8ec7dd4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2856.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2856.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2856" title: "Compiler Error C2856" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2856" +ms.date: 11/04/2016 f1_keywords: ["C2856"] helpviewer_keywords: ["C2856"] -ms.assetid: fe616c51-124e-49e3-9dd8-883ec1660680 --- # Compiler Error C2856 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2857.md b/docs/error-messages/compiler-errors-2/compiler-error-c2857.md index f72675f80be..f81d9f06527 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2857.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2857.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2857" title: "Compiler Error C2857" -ms.date: "09/13/2018" +description: "Learn more about: Compiler Error C2857" +ms.date: 09/13/2018 f1_keywords: ["C2857"] helpviewer_keywords: ["C2857"] -ms.assetid: b57302bd-58ec-45ae-992a-1e282d5eeccc --- # Compiler Error C2857 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2858.md b/docs/error-messages/compiler-errors-2/compiler-error-c2858.md index 4efb856c314..5779b92df96 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2858.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2858.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2858" title: "Compiler Error C2858" +description: "Learn more about: Compiler Error C2858" ms.date: 06/01/2022 f1_keywords: ["C2858"] helpviewer_keywords: ["C2858"] -ms.assetid: 1fb1d770-307e-476e-9984-a1d8f8ce2820 --- # Compiler Error C2858 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2859.md b/docs/error-messages/compiler-errors-2/compiler-error-c2859.md index ee6e1d67288..5d2a5e941e2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2859.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2859.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2859" title: "Compiler Error C2859" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2859" +ms.date: 11/04/2016 f1_keywords: ["C2859"] helpviewer_keywords: ["C2859"] -ms.assetid: fcfbc58d-08f6-4752-9688-8aaac517e684 --- # Compiler Error C2859 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2860.md b/docs/error-messages/compiler-errors-2/compiler-error-c2860.md index 793d6ccf87b..3ac684a3f24 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2860.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2860.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Error C2860" title: "Compiler Error C2860" -ms.date: "03/16/2024" +description: "Learn more about: Compiler Error C2860" +ms.date: 03/16/2024 f1_keywords: ["C2860"] helpviewer_keywords: ["C2860"] --- diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2861.md b/docs/error-messages/compiler-errors-2/compiler-error-c2861.md index 8c59e19122b..eeba808fa07 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2861.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2861.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2861" title: "Compiler Error C2861" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2861" +ms.date: 11/04/2016 f1_keywords: ["C2861"] helpviewer_keywords: ["C2861"] -ms.assetid: 012bb44d-6c9b-4def-b54e-b19f1f8ddd1b --- # Compiler Error C2861 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2862.md b/docs/error-messages/compiler-errors-2/compiler-error-c2862.md index da87d381715..ccef63bbcf6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2862.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2862.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2862" title: "Compiler Error C2862" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2862" +ms.date: 11/04/2016 f1_keywords: ["C2862"] helpviewer_keywords: ["C2862"] -ms.assetid: c04d8499-b799-48a1-9fb4-7902a0b0ac8e --- # Compiler Error C2862 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2863.md b/docs/error-messages/compiler-errors-2/compiler-error-c2863.md index f28ec17bc45..dbd762cdf7e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2863.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2863.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2863" title: "Compiler Error C2863" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2863" +ms.date: 11/04/2016 f1_keywords: ["C2863"] helpviewer_keywords: ["C2863"] -ms.assetid: 32561d67-a795-486b-b3b6-4b90a1acb176 --- # Compiler Error C2863 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2864.md b/docs/error-messages/compiler-errors-2/compiler-error-c2864.md index bdd7632f1c7..950b3a8bacb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2864.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2864.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2864" title: "Compiler Error C2864" +description: "Learn more about: Compiler Error C2864" ms.date: 10/04/2019 f1_keywords: ["C2864"] helpviewer_keywords: ["C2864"] -ms.assetid: d0ca2ad9-90a6-4aef-8511-98a3b414c102 --- # Compiler Error C2864 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2865.md b/docs/error-messages/compiler-errors-2/compiler-error-c2865.md index f4b758b9748..1f9f9040dfc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2865.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2865.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2865" title: "Compiler Error C2865" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2865" +ms.date: 11/04/2016 f1_keywords: ["C2865"] helpviewer_keywords: ["C2865"] -ms.assetid: 973eb6a0-c99a-4d25-b3e5-fe0539794d77 --- # Compiler Error C2865 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2867.md b/docs/error-messages/compiler-errors-2/compiler-error-c2867.md index 86a045b2bde..6f82ffe3058 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2867.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2867.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2867" title: "Compiler Error C2867" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2867" +ms.date: 11/04/2016 f1_keywords: ["C2867"] helpviewer_keywords: ["C2867"] -ms.assetid: 63be26b2-d9ab-4f3d-a8b7-981ce3e4d6b9 --- # Compiler Error C2867 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2868.md b/docs/error-messages/compiler-errors-2/compiler-error-c2868.md index 3d57df14e95..aace8ea2a24 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2868.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2868.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2868" title: "Compiler Error C2868" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2868" +ms.date: 11/04/2016 f1_keywords: ["C2868"] helpviewer_keywords: ["C2868"] -ms.assetid: 6ff5837b-e66d-44d1-9d17-80af35e08d08 --- # Compiler Error C2868 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2869.md b/docs/error-messages/compiler-errors-2/compiler-error-c2869.md index c2da232f4b3..74243dc953f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2869.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2869.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2869" title: "Compiler Error C2869" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2869" +ms.date: 11/04/2016 f1_keywords: ["C2869"] helpviewer_keywords: ["C2869"] -ms.assetid: 6e30c001-47f3-4101-b9f1-cc542c9fffae --- # Compiler Error C2869 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2870.md b/docs/error-messages/compiler-errors-2/compiler-error-c2870.md index 6e5addcfcff..0aa1c8d1ccd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2870.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2870.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2870" title: "Compiler Error C2870" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2870" +ms.date: 11/04/2016 f1_keywords: ["C2870"] helpviewer_keywords: ["C2870"] -ms.assetid: 80523ee9-1fd3-4dc4-8a77-5083deb99066 --- # Compiler Error C2870 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2871.md b/docs/error-messages/compiler-errors-2/compiler-error-c2871.md index 341b85b7046..c3261549f3c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2871.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2871.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2871" title: "Compiler Error C2871" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2871" +ms.date: 11/04/2016 f1_keywords: ["C2871"] helpviewer_keywords: ["C2871"] -ms.assetid: 44aeb84d-61f0-45e0-8dad-22a3cd46b7f8 --- # Compiler Error C2871 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2872.md b/docs/error-messages/compiler-errors-2/compiler-error-c2872.md index d4586bd17f7..9e5f59ead02 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2872.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2872.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2872" title: "Compiler Error C2872" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2872" +ms.date: 11/04/2016 f1_keywords: ["C2872"] helpviewer_keywords: ["C2872"] -ms.assetid: c619ef97-6e0e-41d7-867c-f8d28a07d553 --- # Compiler Error C2872 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2873.md b/docs/error-messages/compiler-errors-2/compiler-error-c2873.md index 61f3b49cd78..befff3cf35f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2873.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2873.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2873" title: "Compiler Error C2873" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2873" +ms.date: 11/04/2016 f1_keywords: ["C2873"] helpviewer_keywords: ["C2873"] -ms.assetid: 7a10036b-400e-4364-bd2f-dcd7370c5e28 --- # Compiler Error C2873 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2874.md b/docs/error-messages/compiler-errors-2/compiler-error-c2874.md index 25b0b9201d0..2903d83b7e9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2874.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2874.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2874" title: "Compiler Error C2874" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2874" +ms.date: 11/04/2016 f1_keywords: ["C2874"] helpviewer_keywords: ["C2874"] -ms.assetid: b54fa9d8-8df5-40d9-9b3b-aa3e9dd6a3be --- # Compiler Error C2874 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2875.md b/docs/error-messages/compiler-errors-2/compiler-error-c2875.md index ff4b0b49f16..2a2e0688f85 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2875.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2875.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2875" title: "Compiler Error C2875" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2875" +ms.date: 11/04/2016 f1_keywords: ["C2875"] helpviewer_keywords: ["C2875"] -ms.assetid: d589fc0c-08b2-4a79-bc0e-dca5eb80bdd5 --- # Compiler Error C2875 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2876.md b/docs/error-messages/compiler-errors-2/compiler-error-c2876.md index af2bb3f2d88..d102a7f0192 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2876.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2876.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2876" title: "Compiler Error C2876" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2876" +ms.date: 11/04/2016 f1_keywords: ["C2876"] helpviewer_keywords: ["C2876"] -ms.assetid: 8b674bf1-f9f4-4a8e-8127-e884c1d1708f --- # Compiler Error C2876 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2877.md b/docs/error-messages/compiler-errors-2/compiler-error-c2877.md index 94c11b20d7e..62a17b4f704 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2877.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2877.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2877" title: "Compiler Error C2877" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2877" +ms.date: 11/04/2016 f1_keywords: ["C2877"] helpviewer_keywords: ["C2877"] -ms.assetid: 0b54837e-fcae-4d90-9658-623250435e24 --- # Compiler Error C2877 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2878.md b/docs/error-messages/compiler-errors-2/compiler-error-c2878.md index f41e0c1c0e1..d5c043adce3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2878.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2878.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2878" title: "Compiler Error C2878" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2878" +ms.date: 11/04/2016 f1_keywords: ["C2878"] helpviewer_keywords: ["C2878"] -ms.assetid: 83ee3de1-f554-49e8-a840-1f550cee7f69 --- # Compiler Error C2878 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2879.md b/docs/error-messages/compiler-errors-2/compiler-error-c2879.md index 0cf0e501595..0baee26805f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2879.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2879.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2879" title: "Compiler Error C2879" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2879" +ms.date: 11/04/2016 f1_keywords: ["C2879"] helpviewer_keywords: ["C2879"] -ms.assetid: ac92b645-2394-49de-8632-43d44e0553ed --- # Compiler Error C2879 From 2050d226bcf920db1de13a11dc57a9012470d89a Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Sat, 9 Aug 2025 14:15:21 -0700 Subject: [PATCH 1323/2255] Update routine-mappings.md remove stray api_name metadata --- docs/c-runtime-library/routine-mappings.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/c-runtime-library/routine-mappings.md b/docs/c-runtime-library/routine-mappings.md index 8c75157b5c5..e36658b7393 100644 --- a/docs/c-runtime-library/routine-mappings.md +++ b/docs/c-runtime-library/routine-mappings.md @@ -3,7 +3,6 @@ title: "Generic-text function mappings" description: "Learn more about: Microsoft specific generic-text functions and the CRT functions they map to." ms.date: 11/04/2016 ms.author: twhitney -api_name: ["foo",] f1_keywords: ["_cgetts", "_cgetts_s", "_cputts", "_fgettc", "_fgettchar", "_fgetts", "_fputtc", "_fputtchar", "_fputts", "_ftscanf", "_ftscanf_s", "_gettc", "_gettch", "_gettchar", "_gettche", "_getts", "_getts_s", "_istalnum", "_istalpha", "_istascii", "_istcntrl", "_istdigit", "_istgraph", "_istlead", "_istleadbyte", "_istlegal", "_istlower", "_istprint", "_istpunct", "_istspace", "_istupper", "_istxdigit", "_itot", "_itot_s", "_ltot", "_ltot_s", "_puttc", "_puttch", "_puttchar", "_putts", "_sctprintf", "_sntprintf", "_sntprintf_s", "_sntscanf", "_sntscanf_s", "_stprintf", "_stprintf_s", "_stscanf", "_stscanf_s", "_taccess", "_tasctime", "_tasctime_s", "_tccmp", "_tccpy", "_tccpy_s", "_tchdir", "_tclen", "_tchmod", "_tcprintf", "_tcprintf_s", "_tcreat", "_tcscanf", "_tcscanf_s", "_tcscat", "_tcscat_s", "_tcschr", "_tcsclen", "_tcsclen_s", "_tcscmp", "_tcscoll", "_tcscpy", "_tcscpy_s", "_tcscspn", "_tcsdec", "_tcsdup", "_tcserror", "_tcserror_s", "_tcsftime", "_tcsicmp", "_tcsicoll", "_tcsinc", "_tcslen", "_tcslwr", "_tcslwr_s", "_tcsnbcnt", "_tcsncat", "_tcsncat_s", "_tcsnccat", "_tcsnccmp", "_tcsnccmp_s", "_tcsnccoll", "_tcsncmp", "_tcsnccnt", "_tcsnccpy", "_tcsncicmp", "_tcsncicoll", "_tcsncpy", "_tcsncset", "_tcsnextc", "_tcsnicmp", "_tcsnicoll", "_tcsninc", "_tcsnccnt", "_tcsnset", "_tcspbrk", "_tcsspnp", "_tcsrchr", "_tcsrev", "_tcsset", "_tcsspn", "_tcsstr", "_tcstod", "_tcstoi64", "_tcstok", "_tcstok_s", "_tcstol", "_tcstoui64", "_tcstoul", "_tcsupr", "_tcsupr_s", "_tcsxfrm", "_tctime", "_tctime_s", "_tctime32", "_tctime32_s", "_tctime64", "_tctime64_s", "_texecl", "_texecle", "_texeclp", "_texeclpe", "_texecv", "_texecve", "_texecvp", "_texecvpe", "_tfdopen", "_tfindfirst", "_tfindnext", "_tfindnext32", "_tfindnext64", "_tfindnexti64", "_tfindnexti6432", "_tfindnext32i64", "_tfopen", "_tfopen_s", "_tfreopen", "_tfreopen_s", "_tfsopen", "_tfullpath", "_tgetcwd", "_tgetdcwd", "_tgetenv", "_tgetenv_s", "_tmain", "_tmakepath", "_tmakepath_s", "_tmkdir", "_tmktemp", "_tmktemp_s", "_topen", "_topen_s", "_totlower", "_totupper", "_tperror", "_tpopen", "_tprintf", "_tprintf_s", "_tputenv", "_tremove", "_trename", "_trmdir", "_tsearchenv", "_tsearchenv_s", "_tscanf", "_tscanf_s", "_tsetlocale", "_tsopen", "_tsopen_s", "_tspawnl", "_tspawnle", "_tspawnlp", "_tspawnlpe", "_tspawnv", "_tspawnve", "_tspawnvp", "_tspawnvpe", "_tsplitpath", "_tstat", "_tstat32", "_tstati32", "_tstat64", "_tstati64", "_tstof", "_tstoi", "_tstoi64", "_tstol", "_tstrdate", "_tstrdate_s", "_tstrtime", "_tstrtime_s", "_tsystem", "_ttempnam", "_ttmpnam", "_ttmpnam_s", "_ttoi", "_ttoi64", "_ttol", "_tunlink", "_tutime", "_tutime32", "_tutime64", "_tWinMain", "_ui64tot", "_ui64tot_s", "_ultot", "_ultot_s", "_ungettc", "_ungettch", "_vftprintf", "_vftprintf_s", "_vsctprintf", "_vsctprintf_s", "_vsntprintf", "_vsntprintf_s", "_vstprintf", "_vtprintf", "_vtprintf_s"] helpviewer_keywords: ["_tWinMain", "TCHAR.H functions, list of generic-text function mappings", "generic-text mappings", "_cgetts function", "_cgetts_s function", "_cputts function", "_fgettc function", "_fgettchar function", "_fgetts function", "_fputtc function", "_fputtchar function", "_fputts function", "_ftscanf function", "_ftscanf_s function", "_gettc function", "_gettch function", "_gettchar function", "_gettche function", "_getts function", "_getts_s function", "_istalnum function", "_istalpha function", "_istascii function", "_istcntrl function", "_istdigit function", "_istgraph function", "_istlead function", "_istleadbyte function", "_istlegal function", "_istlower function", "_istprint function", "_istpunct function", "_istspace function", "_istupper function", "_istxdigit function", "_itot function", "_itot_s function", "_ltot function", "_ltot_s function", "_puttc function", "_puttch function", "_puttchar function", "_putts function", "_sctprintf function", "_sntprintf function", "_sntprintf_s function", "_sntscanf function", "_sntscanf_s function", "_stprintf function", "_stprintf_s function", "_stscanf function", "_stscanf_s function", "_taccess function", "_tasctime function", "_tasctime_s function", "_tccmp function", "_tccpy function", "_tccpy_s function", "_tchdir function", "_tclen function", "_tchmod function", "_tcprintf function", "_tcprintf_s function", "_tcreat function", "_tcscanf function", "_tcscanf_s function", "_tcscat function", "_tcscat_s function", "_tcschr function", "_tcsclen function", "_tcsclen_s function", "_tcscmp function", "_tcscoll function", "_tcscpy function", "_tcscpy_s function", "_tcscspn function", "_tcsdec function", "_tcsdup function", "_tcserror function", "_tcserror_s function", "_tcsftime function", "_tcsicmp function", "_tcsicoll function", "_tcsinc function", "_tcslen function", "_tcslwr function", "_tcslwr_s function", "_tcsnbcnt function", "_tcsncat function", "_tcsncat_s function", "_tcsnccat function", "_tcsnccmp function", "_tcsnccmp_s function", "_tcsnccoll function", "_tcsncmp function", "_tcsnccnt function", "_tcsnccpy function", "_tcsncicmp function", "_tcsncicoll function", "_tcsncpy function", "_tcsncset function", "_tcsnextc function", "_tcsnicmp function", "_tcsnicoll function", "_tcsninc function", "_tcsnccnt function", "_tcsnset function", "_tcspbrk function", "_tcsspnp function", "_tcsrchr function", "_tcsrev function", "_tcsset function", "_tcsspn function", "_tcsstr function", "_tcstod function", "_tcstoi64 function", "_tcstok function", "_tcstok_s function", "_tcstol function", "_tcstoui64 function", "_tcstoul function", "_tcsupr function", "_tcsupr_s function", "_tcsxfrm function", "_tctime function", "_tctime_s function", "_tctime32 function", "_tctime32_s function", "_tctime64 function", "_tctime64_s function", "_texecl function", "_texecle function", "_texeclp function", "_texeclpe function", "_texecv function", "_texecve function", "_texecvp function", "_texecvpe function", "_tfdopen function", "_tfindfirst function", "_tfindnext function", "_tfindnext32 function", "_tfindnext64 function", "_tfindnexti64 function", "_tfindnexti6432 function", "_tfindnext32i64 function", "_tfopen function", "_tfopen_s function", "_tfreopen function", "_tfreopen_s function", "_tfsopen function", "_tfullpath function", "_tgetcwd function", "_tgetdcwd function", "_tgetenv function", "_tgetenv_s function", "_tmain function", "_tmakepath function", "_tmakepath_s function", "_tmkdir function", "_tmktemp function", "_tmktemp_s function", "_topen function", "_topen_s function", "_totlower function", "_totupper function", "_tperror function", "_tpopen function", "_tprintf function", "_tprintf_s function", "_tputenv function", "_tremove function", "_trename function", "_trmdir function", "_tsearchenv function", "_tsearchenv_s function", "_tscanf function", "_tscanf_s function", "_tsetlocale function", "_tsopen function", "_tsopen_s function", "_tspawnl function", "_tspawnle function", "_tspawnlp function", "_tspawnlpe function", "_tspawnv function", "_tspawnve function", "_tspawnvp function", "_tspawnvpe function", "_tsplitpath function", "_tstat function", "_tstat32 function", "_tstati32 function", "_tstat64 function", "_tstati64 function", "_tstof function", "_tstoi function", "_tstoi64 function", "_tstol function", "_tstrdate function", "_tstrdate_s function", "_tstrtime function", "_tstrtime_s function", "_tsystem function", "_ttempnam function", "_ttmpnam function", "_ttmpnam_s function", "_ttoi function", "_ttoi64 function", "_ttol function", "_tunlink function", "_tutime function", "_tutime32 function", "_tutime64 function", "_tWinMain function", "_ui64tot function", "_ui64tot_s function", "_ultot function", "_ultot_s function", "_ungettc function", "_ungettch function", "_vftprintf function", "_vftprintf_s function", "_vsctprintf function", "_vsctprintf_s function", "_vsntprintf function", "_vsntprintf_s function", "_vstprintf function", "_vtprintf function", "_vtprintf_s function"] --- From 20dcd8b5965b318f0d969d5cb235a9ab1e31ec6c Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 10 Aug 2025 17:54:10 +0800 Subject: [PATCH 1324/2255] Add blockquotes for error messages in range [C2881, C2910] --- docs/error-messages/compiler-errors-2/compiler-error-c2881.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2882.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2883.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2884.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2885.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2886.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2888.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2890.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2891.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2892.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2893.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2894.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2897.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2898.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2903.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2904.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2906.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2908.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2909.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2910.md | 2 +- 20 files changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2881.md b/docs/error-messages/compiler-errors-2/compiler-error-c2881.md index 45d454a253a..84b384001aa 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2881.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2881.md @@ -8,7 +8,7 @@ ms.assetid: b49c63c2-b064-4d4b-a75e-ddd2af947522 --- # Compiler Error C2881 -'namespace1' : is already used as an alias for 'namespace2' +> 'namespace1' : is already used as an alias for 'namespace2' You cannot use the same name as an alias for two namespaces. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2882.md b/docs/error-messages/compiler-errors-2/compiler-error-c2882.md index e3a0d257e3e..14de286f178 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2882.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2882.md @@ -8,7 +8,7 @@ ms.assetid: 617018ee-5a0d-4b8d-9612-77e8ae52679b --- # Compiler Error C2882 -'name' : illegal use of namespace identifier in expression +> 'name' : illegal use of namespace identifier in expression You tried to use the name of a namespace in an expression. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2883.md b/docs/error-messages/compiler-errors-2/compiler-error-c2883.md index e503e3d6ad6..027381bf55b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2883.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2883.md @@ -8,7 +8,7 @@ ms.assetid: 5c6d689d-ed42-41ad-b5c0-e9c2e0b8c356 --- # Compiler Error C2883 -'name' : function declaration conflicts with 'identifier' introduced by using-declaration +> 'name' : function declaration conflicts with 'identifier' introduced by using-declaration You tried to define a function more than once. The first definition was made from a namespace with a **`using`** declaration. The second was a local definition. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2884.md b/docs/error-messages/compiler-errors-2/compiler-error-c2884.md index fedd4259709..5353c2a6c9b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2884.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2884.md @@ -8,7 +8,7 @@ ms.assetid: 8b4d43e3-3fb5-4360-86c8-de59d8736d4f --- # Compiler Error C2884 -'name' : introduced by using-declaration conflicts with local function 'function' +> 'name' : introduced by using-declaration conflicts with local function 'function' You tried to define a function more than once. The first definition is a local definition. The second is from a namespace with a **`using`** declaration. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2885.md b/docs/error-messages/compiler-errors-2/compiler-error-c2885.md index 018ee3660e2..4ca437c592d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2885.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2885.md @@ -8,7 +8,7 @@ ms.assetid: 7743e5f3-a034-44b4-9ee8-5a6254c27f8c --- # Compiler Error C2885 -'class::identifier' : not a valid using-declaration at non-class scope +> 'class::identifier' : not a valid using-declaration at non-class scope You used a [using](../../cpp/using-declaration.md) declaration incorrectly. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2886.md b/docs/error-messages/compiler-errors-2/compiler-error-c2886.md index b93a4b5c767..e4f99e84eaa 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2886.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2886.md @@ -8,7 +8,7 @@ ms.assetid: c01588a1-484c-4dc9-a3f1-f900c6e44543 --- # Compiler Error C2886 -'class::identifier' : symbol cannot be used in a member using-declaration +> 'class::identifier' : symbol cannot be used in a member using-declaration A **`using`** declaration uses a symbol, such as a namespace name. A **`using`** declaration is for declaring base class members. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2888.md b/docs/error-messages/compiler-errors-2/compiler-error-c2888.md index eed0d34ea2f..2523dff66d0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2888.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2888.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2888"] --- # Compiler Error C2888 -'identifier' : symbol cannot be defined within namespace 'namespace' +> 'identifier' : symbol cannot be defined within namespace 'namespace' A symbol belonging to namespace A must be defined in a namespace that encloses A. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2890.md b/docs/error-messages/compiler-errors-2/compiler-error-c2890.md index d17bdde458f..d34264cfaca 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2890.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2890.md @@ -8,7 +8,7 @@ ms.assetid: 49147375-182c-42b1-b170-f475cd436d47 --- # Compiler Error C2890 -'class' : a ref class can only have one non-interface base class +> 'class' : a ref class can only have one non-interface base class A reference class can only have one base class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2891.md b/docs/error-messages/compiler-errors-2/compiler-error-c2891.md index f9b41d60076..8d1719da6cd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2891.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2891.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2891"] --- # Compiler Error C2891 -'parameter' : cannot take the address of a template parameter +> 'parameter' : cannot take the address of a template parameter You can't take the address of a template parameter unless it is an lvalue. Type parameters are not lvalues because they have no address. Non-type values in template parameter lists that are not lvalues also do not have an address. This is an example of code that causes Compiler Error C2891, because the value passed as the template parameter is a compiler-generated copy of the template argument. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2892.md b/docs/error-messages/compiler-errors-2/compiler-error-c2892.md index 4ae86e0ab38..f6917c2efef 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2892.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2892.md @@ -8,7 +8,7 @@ ms.assetid: c22a5084-2f50-42c2-a56b-6dfe5442edc9 --- # Compiler Error C2892 -local class shall not have member templates +> local class shall not have member templates Templated member functions are not valid in a class that is defined in a function. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2893.md b/docs/error-messages/compiler-errors-2/compiler-error-c2893.md index 01cb21c042a..c4ab267c838 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2893.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2893.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2893"] --- # Compiler Error C2893 -Failed to specialize function template 'template name' +> Failed to specialize function template 'template name' The compiler failed to specialize a function template. There can be many causes for this error. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2894.md b/docs/error-messages/compiler-errors-2/compiler-error-c2894.md index 1d4ddc374de..6bbd6f8600e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2894.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2894.md @@ -8,7 +8,7 @@ ms.assetid: 4e250579-2b59-4993-a6f4-49273e7ecf06 --- # Compiler Error C2894 -templates cannot be declared to have 'C' linkage +> templates cannot be declared to have 'C' linkage This error can be caused by a template defined inside an `extern "C"` block. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2897.md b/docs/error-messages/compiler-errors-2/compiler-error-c2897.md index f68c4fe3304..da51f88e0db 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2897.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2897.md @@ -8,7 +8,7 @@ ms.assetid: a88349e2-823f-42a0-8660-0653b677afa4 --- # Compiler Error C2897 -a destructor/finalizer cannot be a function template +> a destructor/finalizer cannot be a function template Destructors or finalizers cannot be overloaded, so declaring a destructor as a template (which would define a set of destructors) is not allowed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2898.md b/docs/error-messages/compiler-errors-2/compiler-error-c2898.md index f4dd5343894..f864bcfebda 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2898.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2898.md @@ -8,7 +8,7 @@ ms.assetid: 68466e11-2541-4f6b-b772-13a642f30dfb --- # Compiler Error C2898 -'declaration' : member function templates cannot be virtual +> 'declaration' : member function templates cannot be virtual The following sample generates C2898: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2903.md b/docs/error-messages/compiler-errors-2/compiler-error-c2903.md index 4b8619c11ef..31e95dcfc31 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2903.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2903.md @@ -8,7 +8,7 @@ ms.assetid: bf6b223f-4921-48c7-82b9-ff318b42c801 --- # Compiler Error C2903 -'identifier' : symbol is neither a class template nor a function template +> 'identifier' : symbol is neither a class template nor a function template Code attempts explicit instantiation of something that is not a template. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2904.md b/docs/error-messages/compiler-errors-2/compiler-error-c2904.md index c499ffed634..d77ebda8520 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2904.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2904.md @@ -8,7 +8,7 @@ ms.assetid: d5802f2e-d3fc-473d-aa04-36957b4eaca5 --- # Compiler Error C2904 -'identifier' : name already used for a template in the current scope +> 'identifier' : name already used for a template in the current scope Check the code for duplicate names. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2906.md b/docs/error-messages/compiler-errors-2/compiler-error-c2906.md index f48e4457855..602b48cf51f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2906.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2906.md @@ -8,7 +8,7 @@ ms.assetid: 30f652f1-6af6-4a2f-a69e-a1a4876cc8c6 --- # Compiler Error C2906 -'specialization' : explicit specialization requires 'template <>' +> 'specialization' : explicit specialization requires 'template <>' You must use the new syntax for explicit specialization of templates. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2908.md b/docs/error-messages/compiler-errors-2/compiler-error-c2908.md index 19d7588b5f4..4023e1b4c3e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2908.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2908.md @@ -8,7 +8,7 @@ ms.assetid: 49cd2a21-cad8-4ba0-9a0b-3a0190d9344c --- # Compiler Error C2908 -explicit specialization; 'template' has already been instantiated +> explicit specialization; 'template' has already been instantiated A specialization of the primary template occurs before the explicit specialization. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2909.md b/docs/error-messages/compiler-errors-2/compiler-error-c2909.md index 6483ee73dad..3c3dd40af47 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2909.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2909.md @@ -8,7 +8,7 @@ ms.assetid: 1c9df8ae-925d-4002-a5f8-a71413c45f9e --- # Compiler Error C2909 -'identifier': explicit instantiation of function template requires return type +> 'identifier': explicit instantiation of function template requires return type An explicit instantiation of a function template requires explicit specification of its return type. Implicit return type specification does not work. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2910.md b/docs/error-messages/compiler-errors-2/compiler-error-c2910.md index 1aa3cc27a3d..c6b012013b7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2910.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2910.md @@ -8,7 +8,7 @@ ms.assetid: 09c50e6a-e099-42f6-8ed6-d80e292a7a36 --- # Compiler Error C2910 -'function' : cannot be explicitly specialized +> 'function' : cannot be explicitly specialized The compiler detected an attempt to explicitly specialize a function twice. From cf7b65db16fe9b9981ed62e30e24f14846a571b7 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 10 Aug 2025 18:03:02 +0800 Subject: [PATCH 1325/2255] Add "Remarks" and "Example" headings for error references in range [C2881, C2910] --- .../compiler-errors-2/compiler-error-c2881.md | 4 ++++ .../compiler-errors-2/compiler-error-c2882.md | 4 ++++ .../compiler-errors-2/compiler-error-c2883.md | 4 ++++ .../compiler-errors-2/compiler-error-c2884.md | 4 ++++ .../compiler-errors-2/compiler-error-c2885.md | 2 ++ .../compiler-errors-2/compiler-error-c2886.md | 4 ++++ .../compiler-errors-2/compiler-error-c2888.md | 4 ++++ .../compiler-errors-2/compiler-error-c2890.md | 4 ++++ .../compiler-errors-2/compiler-error-c2891.md | 8 +++++++- .../compiler-errors-2/compiler-error-c2892.md | 4 ++++ .../compiler-errors-2/compiler-error-c2893.md | 2 ++ .../compiler-errors-2/compiler-error-c2894.md | 4 ++++ .../compiler-errors-2/compiler-error-c2896.md | 4 ++++ .../compiler-errors-2/compiler-error-c2897.md | 2 ++ .../compiler-errors-2/compiler-error-c2898.md | 2 ++ .../compiler-errors-2/compiler-error-c2902.md | 4 ++++ .../compiler-errors-2/compiler-error-c2903.md | 4 ++++ .../compiler-errors-2/compiler-error-c2904.md | 4 ++++ .../compiler-errors-2/compiler-error-c2906.md | 4 ++++ .../compiler-errors-2/compiler-error-c2908.md | 4 ++++ .../compiler-errors-2/compiler-error-c2909.md | 4 ++++ .../compiler-errors-2/compiler-error-c2910.md | 4 ++++ 22 files changed, 83 insertions(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2881.md b/docs/error-messages/compiler-errors-2/compiler-error-c2881.md index 84b384001aa..0b058a1e996 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2881.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2881.md @@ -10,8 +10,12 @@ ms.assetid: b49c63c2-b064-4d4b-a75e-ddd2af947522 > 'namespace1' : is already used as an alias for 'namespace2' +## Remarks + You cannot use the same name as an alias for two namespaces. +## Example + The following sample generates C2881: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2882.md b/docs/error-messages/compiler-errors-2/compiler-error-c2882.md index 14de286f178..784e34914c0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2882.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2882.md @@ -10,8 +10,12 @@ ms.assetid: 617018ee-5a0d-4b8d-9612-77e8ae52679b > 'name' : illegal use of namespace identifier in expression +## Remarks + You tried to use the name of a namespace in an expression. +## Example + The following sample generates C2882: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2883.md b/docs/error-messages/compiler-errors-2/compiler-error-c2883.md index 027381bf55b..6e20a21ed4e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2883.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2883.md @@ -10,8 +10,12 @@ ms.assetid: 5c6d689d-ed42-41ad-b5c0-e9c2e0b8c356 > 'name' : function declaration conflicts with 'identifier' introduced by using-declaration +## Remarks + You tried to define a function more than once. The first definition was made from a namespace with a **`using`** declaration. The second was a local definition. +## Example + The following sample generates C2883: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2884.md b/docs/error-messages/compiler-errors-2/compiler-error-c2884.md index 5353c2a6c9b..6c2d22971dd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2884.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2884.md @@ -10,8 +10,12 @@ ms.assetid: 8b4d43e3-3fb5-4360-86c8-de59d8736d4f > 'name' : introduced by using-declaration conflicts with local function 'function' +## Remarks + You tried to define a function more than once. The first definition is a local definition. The second is from a namespace with a **`using`** declaration. +## Example + The following sample generates C2884: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2885.md b/docs/error-messages/compiler-errors-2/compiler-error-c2885.md index 4ca437c592d..98247bffdc2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2885.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2885.md @@ -10,6 +10,8 @@ ms.assetid: 7743e5f3-a034-44b4-9ee8-5a6254c27f8c > 'class::identifier' : not a valid using-declaration at non-class scope +## Remarks + You used a [using](../../cpp/using-declaration.md) declaration incorrectly. This error can be generated as a result of compiler conformance work that was done for Visual Studio 2005: it is no longer valid to have a **`using`** declaration to a nested type; you must explicitly qualify each reference you make to the nested type, put the type in a namespace, or create a typedef. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2886.md b/docs/error-messages/compiler-errors-2/compiler-error-c2886.md index e4f99e84eaa..376b185c245 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2886.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2886.md @@ -10,8 +10,12 @@ ms.assetid: c01588a1-484c-4dc9-a3f1-f900c6e44543 > 'class::identifier' : symbol cannot be used in a member using-declaration +## Remarks + A **`using`** declaration uses a symbol, such as a namespace name. A **`using`** declaration is for declaring base class members. +## Example + The following sample generates C2886: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2888.md b/docs/error-messages/compiler-errors-2/compiler-error-c2888.md index 2523dff66d0..79f095b1927 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2888.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2888.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C2888"] > 'identifier' : symbol cannot be defined within namespace 'namespace' +## Remarks + A symbol belonging to namespace A must be defined in a namespace that encloses A. +## Example + The following sample generates C2888: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2890.md b/docs/error-messages/compiler-errors-2/compiler-error-c2890.md index d34264cfaca..5b17b6c2199 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2890.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2890.md @@ -10,8 +10,12 @@ ms.assetid: 49147375-182c-42b1-b170-f475cd436d47 > 'class' : a ref class can only have one non-interface base class +## Remarks + A reference class can only have one base class. +## Example + The following sample generates C2890: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2891.md b/docs/error-messages/compiler-errors-2/compiler-error-c2891.md index 8d1719da6cd..d4068c29352 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2891.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2891.md @@ -9,7 +9,13 @@ helpviewer_keywords: ["C2891"] > 'parameter' : cannot take the address of a template parameter -You can't take the address of a template parameter unless it is an lvalue. Type parameters are not lvalues because they have no address. Non-type values in template parameter lists that are not lvalues also do not have an address. This is an example of code that causes Compiler Error C2891, because the value passed as the template parameter is a compiler-generated copy of the template argument. +## Remarks + +You can't take the address of a template parameter unless it is an lvalue. Type parameters are not lvalues because they have no address. Non-type values in template parameter lists that are not lvalues also do not have an address. + +## Example + +This is an example of code that causes Compiler Error C2891, because the value passed as the template parameter is a compiler-generated copy of the template argument. ```cpp template int* f() { return &i; } diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2892.md b/docs/error-messages/compiler-errors-2/compiler-error-c2892.md index f6917c2efef..d2d17f5ddad 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2892.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2892.md @@ -10,8 +10,12 @@ ms.assetid: c22a5084-2f50-42c2-a56b-6dfe5442edc9 > local class shall not have member templates +## Remarks + Templated member functions are not valid in a class that is defined in a function. +## Example + The following sample generates C2892: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2893.md b/docs/error-messages/compiler-errors-2/compiler-error-c2893.md index c4ab267c838..5a53b1f8558 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2893.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2893.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C2893"] > Failed to specialize function template 'template name' +## Remarks + The compiler failed to specialize a function template. There can be many causes for this error. In general, the way to resolve a C2893 error is to review the function's signature and make sure you can instantiate every type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2894.md b/docs/error-messages/compiler-errors-2/compiler-error-c2894.md index 6bbd6f8600e..7a5b7f89f99 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2894.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2894.md @@ -10,8 +10,12 @@ ms.assetid: 4e250579-2b59-4993-a6f4-49273e7ecf06 > templates cannot be declared to have 'C' linkage +## Remarks + This error can be caused by a template defined inside an `extern "C"` block. +## Examples + The following sample generates C2894: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2896.md b/docs/error-messages/compiler-errors-2/compiler-error-c2896.md index 32db06f54ff..b77de03774b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2896.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2896.md @@ -10,10 +10,14 @@ ms.assetid: b600407b-cb05-42e3-9069-2aa6960f0eaa > '*function1*' : cannot use function template '*function2*' as argument +## Remarks + A function template can't be an argument to another function template. This error is obsolete in Visual Studio 2022 and later versions. +## Examples + The following sample generates C2896: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2897.md b/docs/error-messages/compiler-errors-2/compiler-error-c2897.md index da51f88e0db..0fad6f3f9da 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2897.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2897.md @@ -10,6 +10,8 @@ ms.assetid: a88349e2-823f-42a0-8660-0653b677afa4 > a destructor/finalizer cannot be a function template +## Remarks + Destructors or finalizers cannot be overloaded, so declaring a destructor as a template (which would define a set of destructors) is not allowed. ## Examples diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2898.md b/docs/error-messages/compiler-errors-2/compiler-error-c2898.md index f864bcfebda..63a7ea65a16 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2898.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2898.md @@ -10,6 +10,8 @@ ms.assetid: 68466e11-2541-4f6b-b772-13a642f30dfb > 'declaration' : member function templates cannot be virtual +## Example + The following sample generates C2898: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2902.md b/docs/error-messages/compiler-errors-2/compiler-error-c2902.md index 1769f12a7de..7955baf2738 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2902.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2902.md @@ -10,10 +10,14 @@ ms.assetid: 89d78d0e-78e5-4c2c-a0f9-a60110e9395e > '*token*' : unexpected token following '*template*', identifier expected +## Remarks + The token following the keyword **`template`** was not an identifier. This error is obsolete in Visual Studio 2022 and later versions. +## Examples + The following sample generates C2902: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2903.md b/docs/error-messages/compiler-errors-2/compiler-error-c2903.md index 31e95dcfc31..fe7c769f39a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2903.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2903.md @@ -10,8 +10,12 @@ ms.assetid: bf6b223f-4921-48c7-82b9-ff318b42c801 > 'identifier' : symbol is neither a class template nor a function template +## Remarks + Code attempts explicit instantiation of something that is not a template. +## Examples + The following sample generates C2903: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2904.md b/docs/error-messages/compiler-errors-2/compiler-error-c2904.md index d77ebda8520..89809be0706 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2904.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2904.md @@ -10,8 +10,12 @@ ms.assetid: d5802f2e-d3fc-473d-aa04-36957b4eaca5 > 'identifier' : name already used for a template in the current scope +## Remarks + Check the code for duplicate names. +## Example + The following sample generates C2904: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2906.md b/docs/error-messages/compiler-errors-2/compiler-error-c2906.md index 602b48cf51f..588da470154 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2906.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2906.md @@ -10,8 +10,12 @@ ms.assetid: 30f652f1-6af6-4a2f-a69e-a1a4876cc8c6 > 'specialization' : explicit specialization requires 'template <>' +## Remarks + You must use the new syntax for explicit specialization of templates. +## Example + The following sample generates C2906: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2908.md b/docs/error-messages/compiler-errors-2/compiler-error-c2908.md index 4023e1b4c3e..2c576c34c54 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2908.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2908.md @@ -10,8 +10,12 @@ ms.assetid: 49cd2a21-cad8-4ba0-9a0b-3a0190d9344c > explicit specialization; 'template' has already been instantiated +## Remarks + A specialization of the primary template occurs before the explicit specialization. +## Example + The following sample generates C2908: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2909.md b/docs/error-messages/compiler-errors-2/compiler-error-c2909.md index 3c3dd40af47..36447e04fe8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2909.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2909.md @@ -10,8 +10,12 @@ ms.assetid: 1c9df8ae-925d-4002-a5f8-a71413c45f9e > 'identifier': explicit instantiation of function template requires return type +## Remarks + An explicit instantiation of a function template requires explicit specification of its return type. Implicit return type specification does not work. +## Example + The following sample generates C2909: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2910.md b/docs/error-messages/compiler-errors-2/compiler-error-c2910.md index c6b012013b7..d859c911ca9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2910.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2910.md @@ -10,8 +10,12 @@ ms.assetid: 09c50e6a-e099-42f6-8ed6-d80e292a7a36 > 'function' : cannot be explicitly specialized +## Remarks + The compiler detected an attempt to explicitly specialize a function twice. +## Examples + The following sample generates C2910: ```cpp From 22b7bd81caa4e0b60df2c5e84355ab980ce26483 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 10 Aug 2025 18:04:42 +0800 Subject: [PATCH 1326/2255] Replace term "sample" with "example" for error references in range [C2881, C2910] --- .../compiler-errors-2/compiler-error-c2881.md | 2 +- .../compiler-errors-2/compiler-error-c2882.md | 2 +- .../compiler-errors-2/compiler-error-c2883.md | 2 +- .../compiler-errors-2/compiler-error-c2884.md | 2 +- .../compiler-errors-2/compiler-error-c2885.md | 4 ++-- .../compiler-errors-2/compiler-error-c2886.md | 2 +- .../compiler-errors-2/compiler-error-c2888.md | 2 +- .../compiler-errors-2/compiler-error-c2890.md | 2 +- .../compiler-errors-2/compiler-error-c2892.md | 2 +- .../compiler-errors-2/compiler-error-c2893.md | 2 +- .../compiler-errors-2/compiler-error-c2894.md | 4 ++-- .../compiler-errors-2/compiler-error-c2896.md | 2 +- .../compiler-errors-2/compiler-error-c2897.md | 4 ++-- .../compiler-errors-2/compiler-error-c2898.md | 2 +- .../compiler-errors-2/compiler-error-c2902.md | 2 +- .../compiler-errors-2/compiler-error-c2903.md | 2 +- .../compiler-errors-2/compiler-error-c2904.md | 2 +- .../compiler-errors-2/compiler-error-c2906.md | 2 +- .../compiler-errors-2/compiler-error-c2908.md | 2 +- .../compiler-errors-2/compiler-error-c2909.md | 2 +- .../compiler-errors-2/compiler-error-c2910.md | 6 +++--- 21 files changed, 26 insertions(+), 26 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2881.md b/docs/error-messages/compiler-errors-2/compiler-error-c2881.md index 0b058a1e996..1327fbb2683 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2881.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2881.md @@ -16,7 +16,7 @@ You cannot use the same name as an alias for two namespaces. ## Example -The following sample generates C2881: +The following example generates C2881: ```cpp // C2881.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2882.md b/docs/error-messages/compiler-errors-2/compiler-error-c2882.md index 784e34914c0..1492d6aa8ac 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2882.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2882.md @@ -16,7 +16,7 @@ You tried to use the name of a namespace in an expression. ## Example -The following sample generates C2882: +The following example generates C2882: ```cpp // C2882.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2883.md b/docs/error-messages/compiler-errors-2/compiler-error-c2883.md index 6e20a21ed4e..864f46ac846 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2883.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2883.md @@ -16,7 +16,7 @@ You tried to define a function more than once. The first definition was made fro ## Example -The following sample generates C2883: +The following example generates C2883: ```cpp // C2883.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2884.md b/docs/error-messages/compiler-errors-2/compiler-error-c2884.md index 6c2d22971dd..5b1be896ff7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2884.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2884.md @@ -16,7 +16,7 @@ You tried to define a function more than once. The first definition is a local d ## Example -The following sample generates C2884: +The following example generates C2884: ```cpp // C2884.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2885.md b/docs/error-messages/compiler-errors-2/compiler-error-c2885.md index 98247bffdc2..960e1b960e5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2885.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2885.md @@ -18,7 +18,7 @@ This error can be generated as a result of compiler conformance work that was do ## Examples -The following sample generates C2885. +The following example generates C2885. ```cpp // C2885.cpp @@ -49,7 +49,7 @@ int main () { If you use the **`using`** keyword with a class member, C++ requires you to define that member inside another class (a derived class). -The following sample generates C2885. +The following example generates C2885. ```cpp // C2885_b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2886.md b/docs/error-messages/compiler-errors-2/compiler-error-c2886.md index 376b185c245..06df29ed03d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2886.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2886.md @@ -16,7 +16,7 @@ A **`using`** declaration uses a symbol, such as a namespace name. A **`using`** ## Example -The following sample generates C2886: +The following example generates C2886: ```cpp // C2886.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2888.md b/docs/error-messages/compiler-errors-2/compiler-error-c2888.md index 79f095b1927..cc6421b7442 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2888.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2888.md @@ -15,7 +15,7 @@ A symbol belonging to namespace A must be defined in a namespace that encloses A ## Example -The following sample generates C2888: +The following example generates C2888: ```cpp // C2888.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2890.md b/docs/error-messages/compiler-errors-2/compiler-error-c2890.md index 5b17b6c2199..cdc9defe752 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2890.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2890.md @@ -16,7 +16,7 @@ A reference class can only have one base class. ## Example -The following sample generates C2890: +The following example generates C2890: ```cpp // C2890.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2892.md b/docs/error-messages/compiler-errors-2/compiler-error-c2892.md index d2d17f5ddad..d8b571b8027 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2892.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2892.md @@ -16,7 +16,7 @@ Templated member functions are not valid in a class that is defined in a functio ## Example -The following sample generates C2892: +The following example generates C2892: ```cpp // C2892.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2893.md b/docs/error-messages/compiler-errors-2/compiler-error-c2893.md index 5a53b1f8558..33c6fa7b45b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2893.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2893.md @@ -17,7 +17,7 @@ In general, the way to resolve a C2893 error is to review the function's signatu ## Example -C2893 occurs because `f`'s template parameter `T` is deduced to be `std::map`, but `std::map` has no member `data_type` (`T::data_type` can not be instantiated with `T = std::map`.). The following sample generates C2893. +C2893 occurs because `f`'s template parameter `T` is deduced to be `std::map`, but `std::map` has no member `data_type` (`T::data_type` can not be instantiated with `T = std::map`.). The following example generates C2893. ```cpp // C2893.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2894.md b/docs/error-messages/compiler-errors-2/compiler-error-c2894.md index 7a5b7f89f99..9ff10abcf44 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2894.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2894.md @@ -16,7 +16,7 @@ This error can be caused by a template defined inside an `extern "C"` block. ## Examples -The following sample generates C2894: +The following example generates C2894: ```cpp // C2894.cpp @@ -27,7 +27,7 @@ extern "C" { } ``` -The following sample generates C2894: +The following example generates C2894: ```cpp // C2894b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2896.md b/docs/error-messages/compiler-errors-2/compiler-error-c2896.md index b77de03774b..8a18155583a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2896.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2896.md @@ -18,7 +18,7 @@ This error is obsolete in Visual Studio 2022 and later versions. ## Examples -The following sample generates C2896: +The following example generates C2896: ```cpp // C2896.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2897.md b/docs/error-messages/compiler-errors-2/compiler-error-c2897.md index 0fad6f3f9da..9dc559c90ba 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2897.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2897.md @@ -16,7 +16,7 @@ Destructors or finalizers cannot be overloaded, so declaring a destructor as a t ## Examples -The following sample generates C2897. +The following example generates C2897. ```cpp // C2897.cpp @@ -27,7 +27,7 @@ public: }; ``` -The following sample generates C2897. +The following example generates C2897. ```cpp // C2897_b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2898.md b/docs/error-messages/compiler-errors-2/compiler-error-c2898.md index 63a7ea65a16..d281ecb5c6f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2898.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2898.md @@ -12,7 +12,7 @@ ms.assetid: 68466e11-2541-4f6b-b772-13a642f30dfb ## Example -The following sample generates C2898: +The following example generates C2898: ```cpp // C2898.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2902.md b/docs/error-messages/compiler-errors-2/compiler-error-c2902.md index 7955baf2738..aba5eb8c119 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2902.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2902.md @@ -18,7 +18,7 @@ This error is obsolete in Visual Studio 2022 and later versions. ## Examples -The following sample generates C2902: +The following example generates C2902: ```cpp // C2902.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2903.md b/docs/error-messages/compiler-errors-2/compiler-error-c2903.md index fe7c769f39a..ebe6391d2b9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2903.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2903.md @@ -16,7 +16,7 @@ Code attempts explicit instantiation of something that is not a template. ## Examples -The following sample generates C2903: +The following example generates C2903: ```cpp // C2903.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2904.md b/docs/error-messages/compiler-errors-2/compiler-error-c2904.md index 89809be0706..ad9f376cc49 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2904.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2904.md @@ -16,7 +16,7 @@ Check the code for duplicate names. ## Example -The following sample generates C2904: +The following example generates C2904: ```cpp // C2904.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2906.md b/docs/error-messages/compiler-errors-2/compiler-error-c2906.md index 588da470154..02faf76195c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2906.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2906.md @@ -16,7 +16,7 @@ You must use the new syntax for explicit specialization of templates. ## Example -The following sample generates C2906: +The following example generates C2906: ```cpp // C2906.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2908.md b/docs/error-messages/compiler-errors-2/compiler-error-c2908.md index 2c576c34c54..c8503668373 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2908.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2908.md @@ -16,7 +16,7 @@ A specialization of the primary template occurs before the explicit specializati ## Example -The following sample generates C2908: +The following example generates C2908: ```cpp // C2908.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2909.md b/docs/error-messages/compiler-errors-2/compiler-error-c2909.md index 36447e04fe8..a8efef3f1b6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2909.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2909.md @@ -16,7 +16,7 @@ An explicit instantiation of a function template requires explicit specification ## Example -The following sample generates C2909: +The following example generates C2909: ```cpp // C2909.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2910.md b/docs/error-messages/compiler-errors-2/compiler-error-c2910.md index d859c911ca9..003f7c4e86a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2910.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2910.md @@ -16,7 +16,7 @@ The compiler detected an attempt to explicitly specialize a function twice. ## Examples -The following sample generates C2910: +The following example generates C2910: ```cpp // C2910.cpp @@ -30,7 +30,7 @@ template <> void S::f() {} // C2910 delete this specialization C2910 can also be generated if you try to explicitly specialize a non-template member. That is, you can only explicitly specialize a function template. -The following sample generates C2910: +The following example generates C2910: ```cpp // C2910b.cpp @@ -55,7 +55,7 @@ This error will also be generated as a result of compiler conformance work that For code will be valid in the Visual Studio .NET 2003 and Visual Studio .NET versions of Visual C++, remove `template <>`. -The following sample generates C2910: +The following example generates C2910: ```cpp // C2910c.cpp From e907b3922419dee8cbb0849b713d87ba7d9bc32f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 10 Aug 2025 18:08:32 +0800 Subject: [PATCH 1327/2255] Update metadata for error references in range [C2881, C2910] --- .../error-messages/compiler-errors-2/compiler-error-c2881.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2882.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2883.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2884.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2885.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2886.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2890.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2892.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2893.md | 2 +- .../error-messages/compiler-errors-2/compiler-error-c2894.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2896.md | 3 +-- .../error-messages/compiler-errors-2/compiler-error-c2897.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2898.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2902.md | 3 +-- .../error-messages/compiler-errors-2/compiler-error-c2903.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2904.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2906.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2908.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2909.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2910.md | 5 ++--- 20 files changed, 37 insertions(+), 56 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2881.md b/docs/error-messages/compiler-errors-2/compiler-error-c2881.md index 1327fbb2683..b454691769b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2881.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2881.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2881" title: "Compiler Error C2881" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2881" +ms.date: 11/04/2016 f1_keywords: ["C2881"] helpviewer_keywords: ["C2881"] -ms.assetid: b49c63c2-b064-4d4b-a75e-ddd2af947522 --- # Compiler Error C2881 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2882.md b/docs/error-messages/compiler-errors-2/compiler-error-c2882.md index 1492d6aa8ac..a9197ff4b8f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2882.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2882.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2882" title: "Compiler Error C2882" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2882" +ms.date: 11/04/2016 f1_keywords: ["C2882"] helpviewer_keywords: ["C2882"] -ms.assetid: 617018ee-5a0d-4b8d-9612-77e8ae52679b --- # Compiler Error C2882 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2883.md b/docs/error-messages/compiler-errors-2/compiler-error-c2883.md index 864f46ac846..8f99b1c5f3e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2883.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2883.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2883" title: "Compiler Error C2883" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2883" +ms.date: 11/04/2016 f1_keywords: ["C2883"] helpviewer_keywords: ["C2883"] -ms.assetid: 5c6d689d-ed42-41ad-b5c0-e9c2e0b8c356 --- # Compiler Error C2883 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2884.md b/docs/error-messages/compiler-errors-2/compiler-error-c2884.md index 5b1be896ff7..246efeaf563 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2884.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2884.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2884" title: "Compiler Error C2884" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2884" +ms.date: 11/04/2016 f1_keywords: ["C2884"] helpviewer_keywords: ["C2884"] -ms.assetid: 8b4d43e3-3fb5-4360-86c8-de59d8736d4f --- # Compiler Error C2884 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2885.md b/docs/error-messages/compiler-errors-2/compiler-error-c2885.md index 960e1b960e5..05e2cc3e2a1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2885.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2885.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2885" title: "Compiler Error C2885" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2885" +ms.date: 11/04/2016 f1_keywords: ["C2885"] helpviewer_keywords: ["C2885"] -ms.assetid: 7743e5f3-a034-44b4-9ee8-5a6254c27f8c --- # Compiler Error C2885 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2886.md b/docs/error-messages/compiler-errors-2/compiler-error-c2886.md index 06df29ed03d..485fb01d635 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2886.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2886.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2886" title: "Compiler Error C2886" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2886" +ms.date: 11/04/2016 f1_keywords: ["C2886"] helpviewer_keywords: ["C2886"] -ms.assetid: c01588a1-484c-4dc9-a3f1-f900c6e44543 --- # Compiler Error C2886 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2890.md b/docs/error-messages/compiler-errors-2/compiler-error-c2890.md index cdc9defe752..85a41dc4631 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2890.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2890.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2890" title: "Compiler Error C2890" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2890" +ms.date: 11/04/2016 f1_keywords: ["C2890"] helpviewer_keywords: ["C2890"] -ms.assetid: 49147375-182c-42b1-b170-f475cd436d47 --- # Compiler Error C2890 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2892.md b/docs/error-messages/compiler-errors-2/compiler-error-c2892.md index d8b571b8027..9ac778b80eb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2892.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2892.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2892" title: "Compiler Error C2892" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2892" +ms.date: 11/04/2016 f1_keywords: ["C2892"] helpviewer_keywords: ["C2892"] -ms.assetid: c22a5084-2f50-42c2-a56b-6dfe5442edc9 --- # Compiler Error C2892 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2893.md b/docs/error-messages/compiler-errors-2/compiler-error-c2893.md index 33c6fa7b45b..2e416b3f4fa 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2893.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2893.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C2893" description: "Learn more about: Compiler Error C2893" -ms.date: "11/04/2016" +ms.date: 11/04/2016 f1_keywords: ["C2893"] helpviewer_keywords: ["C2893"] --- diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2894.md b/docs/error-messages/compiler-errors-2/compiler-error-c2894.md index 9ff10abcf44..0e16df5bc87 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2894.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2894.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2894" title: "Compiler Error C2894" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2894" +ms.date: 11/04/2016 f1_keywords: ["C2894"] helpviewer_keywords: ["C2894"] -ms.assetid: 4e250579-2b59-4993-a6f4-49273e7ecf06 --- # Compiler Error C2894 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2896.md b/docs/error-messages/compiler-errors-2/compiler-error-c2896.md index 8a18155583a..b46ff6e8c4d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2896.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2896.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2896" title: "Compiler Error C2896" +description: "Learn more about: Compiler Error C2896" ms.date: 06/01/2022 f1_keywords: ["C2896"] helpviewer_keywords: ["C2896"] -ms.assetid: b600407b-cb05-42e3-9069-2aa6960f0eaa --- # Compiler Error C2896 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2897.md b/docs/error-messages/compiler-errors-2/compiler-error-c2897.md index 9dc559c90ba..3ecd2efb034 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2897.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2897.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2897" title: "Compiler Error C2897" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2897" +ms.date: 11/04/2016 f1_keywords: ["C2897"] helpviewer_keywords: ["C2897"] -ms.assetid: a88349e2-823f-42a0-8660-0653b677afa4 --- # Compiler Error C2897 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2898.md b/docs/error-messages/compiler-errors-2/compiler-error-c2898.md index d281ecb5c6f..2a75f55d76f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2898.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2898.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2898" title: "Compiler Error C2898" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2898" +ms.date: 11/04/2016 f1_keywords: ["C2898"] helpviewer_keywords: ["C2898"] -ms.assetid: 68466e11-2541-4f6b-b772-13a642f30dfb --- # Compiler Error C2898 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2902.md b/docs/error-messages/compiler-errors-2/compiler-error-c2902.md index aba5eb8c119..4c05069ed3d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2902.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2902.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2902" title: "Compiler Error C2902" +description: "Learn more about: Compiler Error C2902" ms.date: 06/01/2022 f1_keywords: ["C2902"] helpviewer_keywords: ["C2902"] -ms.assetid: 89d78d0e-78e5-4c2c-a0f9-a60110e9395e --- # Compiler Error C2902 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2903.md b/docs/error-messages/compiler-errors-2/compiler-error-c2903.md index ebe6391d2b9..0024b394e0d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2903.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2903.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2903" title: "Compiler Error C2903" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2903" +ms.date: 11/04/2016 f1_keywords: ["C2903"] helpviewer_keywords: ["C2903"] -ms.assetid: bf6b223f-4921-48c7-82b9-ff318b42c801 --- # Compiler Error C2903 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2904.md b/docs/error-messages/compiler-errors-2/compiler-error-c2904.md index ad9f376cc49..f7193434586 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2904.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2904.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2904" title: "Compiler Error C2904" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2904" +ms.date: 11/04/2016 f1_keywords: ["C2904"] helpviewer_keywords: ["C2904"] -ms.assetid: d5802f2e-d3fc-473d-aa04-36957b4eaca5 --- # Compiler Error C2904 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2906.md b/docs/error-messages/compiler-errors-2/compiler-error-c2906.md index 02faf76195c..9a081d51aa9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2906.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2906.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2906" title: "Compiler Error C2906" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2906" +ms.date: 11/04/2016 f1_keywords: ["C2906"] helpviewer_keywords: ["C2906"] -ms.assetid: 30f652f1-6af6-4a2f-a69e-a1a4876cc8c6 --- # Compiler Error C2906 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2908.md b/docs/error-messages/compiler-errors-2/compiler-error-c2908.md index c8503668373..c440d9f60f0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2908.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2908.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2908" title: "Compiler Error C2908" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2908" +ms.date: 11/04/2016 f1_keywords: ["C2908"] helpviewer_keywords: ["C2908"] -ms.assetid: 49cd2a21-cad8-4ba0-9a0b-3a0190d9344c --- # Compiler Error C2908 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2909.md b/docs/error-messages/compiler-errors-2/compiler-error-c2909.md index a8efef3f1b6..d665e604712 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2909.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2909.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2909" title: "Compiler Error C2909" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2909" +ms.date: 11/04/2016 f1_keywords: ["C2909"] helpviewer_keywords: ["C2909"] -ms.assetid: 1c9df8ae-925d-4002-a5f8-a71413c45f9e --- # Compiler Error C2909 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2910.md b/docs/error-messages/compiler-errors-2/compiler-error-c2910.md index 003f7c4e86a..aa2f41b2086 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2910.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2910.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2910" title: "Compiler Error C2910" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2910" +ms.date: 11/04/2016 f1_keywords: ["C2910"] helpviewer_keywords: ["C2910"] -ms.assetid: 09c50e6a-e099-42f6-8ed6-d80e292a7a36 --- # Compiler Error C2910 From 87bd5d0ae7b07babd9da7500b675ac8f07553c79 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 10 Aug 2025 18:53:01 +0800 Subject: [PATCH 1328/2255] Add missing `f1_keywords` and `helpviewer_keywords` in "Compiler errors C7500 through C7999" --- .../compiler-errors-2/compiler-errors-c7500-through-c7999.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md b/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md index 984ce5a3d8f..23c315e03db 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md @@ -2,8 +2,8 @@ description: "Learn more about: Compiler errors C7500 through C7999" title: "Compiler errors C7500 through C7999" ms.date: 10/13/2023 -f1_keywords: ["C7500", "C7501", "C7502", "C7503", "C7504", "C7505", "C7506", "C7507", "C7508", "C7509", "C7511", "C7512", "C7513", "C7514", "C7515", "C7516", "C7517", "C7518", "C7519", "C7520", "C7521", "C7522", "C7523", "C7524", "C7525", "C7526", "C7527", "C7528", "C7529", "C7530", "C7531", "C7532", "C7533", "C7534", "C7535", "C7537", "C7538", "C7539", "C7540", "C7541", "C7542", "C7543", "C7544", "C7545", "C7546", "C7547", "C7548", "C7549", "C7550", "C7551", "C7552", "C7554", "C7555", "C7556", "C7557", "C7558", "C7559", "C7560", "C7561", "C7562", "C7563", "C7564", "C7565", "C7566", "C7567", "C7568", "C7569", "C7570", "C7571", "C7572", "C7573", "C7574", "C7575", "C7576", "C7577", "C7578", "C7579", "C7580", "C7581", "C7582", "C7583", "C7584", "C7585", "C7586", "C7587", "C7588", "C7589", "C7590", "C7591", "C7592", "C7593", "C7594", "C7595", "C7596", "C7597", "C7599", "C7600", "C7601", "C7602", "C7603", "C7604", "C7605", "C7606", "C7607", "C7608", "C7609", "C7610", "C7611", "C7612", "C7613", "C7614", "C7615", "C7616", "C7617", "C7618", "C7619", "C7620", "C7621", "C7622", "C7623", "C7624", "C7625", "C7627", "C7628", "C7629", "C7630", "C7631", "C7632", "C7633", "C7634", "C7635", "C7636", "C7637", "C7638", "C7639", "C7640", "C7641", "C7642", "C7643", "C7644", "C7645", "C7646", "C7647", "C7648", "C7649", "C7650", "C7651", "C7652", "C7653", "C7654", "C7655", "C7656", "C7657", "C7658", "C7659", "C7660", "C7661", "C7662", "C7686", "C7700", "C7701", "C7702", "C7703", "C7704"] -helpviewer_keywords: ["C7500", "C7501", "C7502", "C7503", "C7504", "C7505", "C7506", "C7507", "C7508", "C7509", "C7511", "C7512", "C7513", "C7514", "C7515", "C7516", "C7517", "C7518", "C7519", "C7520", "C7521", "C7522", "C7523", "C7524", "C7525", "C7526", "C7527", "C7528", "C7529", "C7530", "C7531", "C7532", "C7533", "C7534", "C7535", "C7537", "C7538", "C7539", "C7540", "C7541", "C7542", "C7543", "C7544", "C7545", "C7546", "C7547", "C7548", "C7549", "C7550", "C7551", "C7552", "C7554", "C7555", "C7556", "C7557", "C7558", "C7559", "C7560", "C7561", "C7562", "C7563", "C7564", "C7565", "C7566", "C7567", "C7568", "C7569", "C7570", "C7571", "C7572", "C7573", "C7574", "C7575", "C7576", "C7577", "C7578", "C7579", "C7580", "C7581", "C7582", "C7583", "C7584", "C7585", "C7586", "C7587", "C7588", "C7589", "C7590", "C7591", "C7592", "C7593", "C7594", "C7595", "C7596", "C7597", "C7599", "C7600", "C7601", "C7602", "C7603", "C7604", "C7605", "C7606", "C7607", "C7608", "C7609", "C7610", "C7611", "C7612", "C7613", "C7614", "C7615", "C7616", "C7617", "C7618", "C7619", "C7620", "C7621", "C7622", "C7623", "C7624", "C7625", "C7627", "C7628", "C7629", "C7630", "C7631", "C7632", "C7633", "C7634", "C7635", "C7636", "C7637", "C7638", "C7639", "C7640", "C7641", "C7642", "C7643", "C7644", "C7645", "C7646", "C7647", "C7648", "C7649", "C7650", "C7651", "C7652", "C7653", "C7654", "C7655", "C7656", "C7657", "C7658", "C7659", "C7660", "C7661", "C7662", "C7686", "C7700", "C7701", "C7702", "C7703", "C7704"] +f1_keywords: ["C7500", "C7501", "C7502", "C7503", "C7504", "C7505", "C7506", "C7507", "C7508", "C7509", "C7511", "C7512", "C7513", "C7514", "C7515", "C7516", "C7517", "C7518", "C7519", "C7520", "C7521", "C7522", "C7523", "C7524", "C7525", "C7526", "C7527", "C7528", "C7529", "C7530", "C7531", "C7532", "C7533", "C7534", "C7535", "C7537", "C7538", "C7539", "C7540", "C7541", "C7542", "C7543", "C7544", "C7545", "C7546", "C7547", "C7548", "C7549", "C7550", "C7551", "C7552", "C7554", "C7555", "C7556", "C7557", "C7558", "C7559", "C7560", "C7561", "C7562", "C7563", "C7564", "C7565", "C7566", "C7567", "C7568", "C7569", "C7570", "C7571", "C7572", "C7573", "C7574", "C7575", "C7576", "C7577", "C7578", "C7579", "C7580", "C7581", "C7582", "C7583", "C7584", "C7585", "C7586", "C7587", "C7588", "C7589", "C7590", "C7591", "C7592", "C7593", "C7594", "C7595", "C7596", "C7597", "C7598", "C7599", "C7600", "C7601", "C7602", "C7603", "C7604", "C7605", "C7606", "C7607", "C7608", "C7609", "C7610", "C7611", "C7612", "C7613", "C7614", "C7615", "C7616", "C7617", "C7618", "C7619", "C7620", "C7621", "C7622", "C7623", "C7624", "C7625", "C7627", "C7628", "C7629", "C7630", "C7631", "C7632", "C7633", "C7634", "C7635", "C7636", "C7637", "C7638", "C7639", "C7640", "C7641", "C7642", "C7643", "C7644", "C7645", "C7646", "C7647", "C7648", "C7649", "C7650", "C7651", "C7652", "C7653", "C7654", "C7655", "C7656", "C7657", "C7658", "C7659", "C7660", "C7661", "C7662", "C7665", "C7666", "C7667", "C7668", "C7669", "C7670", "C7671", "C7672", "C7673", "C7674", "C7675", "C7676", "C7677", "C7678", "C7679", "C7680", "C7682", "C7683", "C7684", "C7685", "C7686", "C7687", "C7689", "C7690", "C7691", "C7692", "C7693", "C7694", "C7695", "C7696", "C7697", "C7698", "C7699", "C7700", "C7701", "C7702", "C7703", "C7704", "C7705", "C7706", "C7707", "C7708", "C7709", "C7710", "C7711", "C7712", "C7713", "C7714", "C7720", "C7730", "C7731", "C7732", "C7733", "C7734", "C7735", "C7736", "C7737", "C7738", "C7739", "C7740", "C7741", "C7800", "C7801", "C7802", "C7803", "C7804", "C7806", "C7807"] +helpviewer_keywords: ["C7500", "C7501", "C7502", "C7503", "C7504", "C7505", "C7506", "C7507", "C7508", "C7509", "C7511", "C7512", "C7513", "C7514", "C7515", "C7516", "C7517", "C7518", "C7519", "C7520", "C7521", "C7522", "C7523", "C7524", "C7525", "C7526", "C7527", "C7528", "C7529", "C7530", "C7531", "C7532", "C7533", "C7534", "C7535", "C7537", "C7538", "C7539", "C7540", "C7541", "C7542", "C7543", "C7544", "C7545", "C7546", "C7547", "C7548", "C7549", "C7550", "C7551", "C7552", "C7554", "C7555", "C7556", "C7557", "C7558", "C7559", "C7560", "C7561", "C7562", "C7563", "C7564", "C7565", "C7566", "C7567", "C7568", "C7569", "C7570", "C7571", "C7572", "C7573", "C7574", "C7575", "C7576", "C7577", "C7578", "C7579", "C7580", "C7581", "C7582", "C7583", "C7584", "C7585", "C7586", "C7587", "C7588", "C7589", "C7590", "C7591", "C7592", "C7593", "C7594", "C7595", "C7596", "C7597", "C7598", "C7599", "C7600", "C7601", "C7602", "C7603", "C7604", "C7605", "C7606", "C7607", "C7608", "C7609", "C7610", "C7611", "C7612", "C7613", "C7614", "C7615", "C7616", "C7617", "C7618", "C7619", "C7620", "C7621", "C7622", "C7623", "C7624", "C7625", "C7627", "C7628", "C7629", "C7630", "C7631", "C7632", "C7633", "C7634", "C7635", "C7636", "C7637", "C7638", "C7639", "C7640", "C7641", "C7642", "C7643", "C7644", "C7645", "C7646", "C7647", "C7648", "C7649", "C7650", "C7651", "C7652", "C7653", "C7654", "C7655", "C7656", "C7657", "C7658", "C7659", "C7660", "C7661", "C7662", "C7665", "C7666", "C7667", "C7668", "C7669", "C7670", "C7671", "C7672", "C7673", "C7674", "C7675", "C7676", "C7677", "C7678", "C7679", "C7680", "C7682", "C7683", "C7684", "C7685", "C7686", "C7687", "C7689", "C7690", "C7691", "C7692", "C7693", "C7694", "C7695", "C7696", "C7697", "C7698", "C7699", "C7700", "C7701", "C7702", "C7703", "C7704", "C7705", "C7706", "C7707", "C7708", "C7709", "C7710", "C7711", "C7712", "C7713", "C7714", "C7720", "C7730", "C7731", "C7732", "C7733", "C7734", "C7735", "C7736", "C7737", "C7738", "C7739", "C7740", "C7741", "C7800", "C7801", "C7802", "C7803", "C7804", "C7806", "C7807"] --- # Compiler errors C7500 through C7999 From 82f7be8af19add51898071f9943338afa6682667 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 10 Aug 2025 18:53:53 +0800 Subject: [PATCH 1329/2255] Move `title` metadata above `description` in "Compiler errors C7500 through C7999" --- .../compiler-errors-2/compiler-errors-c7500-through-c7999.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md b/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md index 23c315e03db..5af9b70e4ff 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler errors C7500 through C7999" title: "Compiler errors C7500 through C7999" +description: "Learn more about: Compiler errors C7500 through C7999" ms.date: 10/13/2023 f1_keywords: ["C7500", "C7501", "C7502", "C7503", "C7504", "C7505", "C7506", "C7507", "C7508", "C7509", "C7511", "C7512", "C7513", "C7514", "C7515", "C7516", "C7517", "C7518", "C7519", "C7520", "C7521", "C7522", "C7523", "C7524", "C7525", "C7526", "C7527", "C7528", "C7529", "C7530", "C7531", "C7532", "C7533", "C7534", "C7535", "C7537", "C7538", "C7539", "C7540", "C7541", "C7542", "C7543", "C7544", "C7545", "C7546", "C7547", "C7548", "C7549", "C7550", "C7551", "C7552", "C7554", "C7555", "C7556", "C7557", "C7558", "C7559", "C7560", "C7561", "C7562", "C7563", "C7564", "C7565", "C7566", "C7567", "C7568", "C7569", "C7570", "C7571", "C7572", "C7573", "C7574", "C7575", "C7576", "C7577", "C7578", "C7579", "C7580", "C7581", "C7582", "C7583", "C7584", "C7585", "C7586", "C7587", "C7588", "C7589", "C7590", "C7591", "C7592", "C7593", "C7594", "C7595", "C7596", "C7597", "C7598", "C7599", "C7600", "C7601", "C7602", "C7603", "C7604", "C7605", "C7606", "C7607", "C7608", "C7609", "C7610", "C7611", "C7612", "C7613", "C7614", "C7615", "C7616", "C7617", "C7618", "C7619", "C7620", "C7621", "C7622", "C7623", "C7624", "C7625", "C7627", "C7628", "C7629", "C7630", "C7631", "C7632", "C7633", "C7634", "C7635", "C7636", "C7637", "C7638", "C7639", "C7640", "C7641", "C7642", "C7643", "C7644", "C7645", "C7646", "C7647", "C7648", "C7649", "C7650", "C7651", "C7652", "C7653", "C7654", "C7655", "C7656", "C7657", "C7658", "C7659", "C7660", "C7661", "C7662", "C7665", "C7666", "C7667", "C7668", "C7669", "C7670", "C7671", "C7672", "C7673", "C7674", "C7675", "C7676", "C7677", "C7678", "C7679", "C7680", "C7682", "C7683", "C7684", "C7685", "C7686", "C7687", "C7689", "C7690", "C7691", "C7692", "C7693", "C7694", "C7695", "C7696", "C7697", "C7698", "C7699", "C7700", "C7701", "C7702", "C7703", "C7704", "C7705", "C7706", "C7707", "C7708", "C7709", "C7710", "C7711", "C7712", "C7713", "C7714", "C7720", "C7730", "C7731", "C7732", "C7733", "C7734", "C7735", "C7736", "C7737", "C7738", "C7739", "C7740", "C7741", "C7800", "C7801", "C7802", "C7803", "C7804", "C7806", "C7807"] helpviewer_keywords: ["C7500", "C7501", "C7502", "C7503", "C7504", "C7505", "C7506", "C7507", "C7508", "C7509", "C7511", "C7512", "C7513", "C7514", "C7515", "C7516", "C7517", "C7518", "C7519", "C7520", "C7521", "C7522", "C7523", "C7524", "C7525", "C7526", "C7527", "C7528", "C7529", "C7530", "C7531", "C7532", "C7533", "C7534", "C7535", "C7537", "C7538", "C7539", "C7540", "C7541", "C7542", "C7543", "C7544", "C7545", "C7546", "C7547", "C7548", "C7549", "C7550", "C7551", "C7552", "C7554", "C7555", "C7556", "C7557", "C7558", "C7559", "C7560", "C7561", "C7562", "C7563", "C7564", "C7565", "C7566", "C7567", "C7568", "C7569", "C7570", "C7571", "C7572", "C7573", "C7574", "C7575", "C7576", "C7577", "C7578", "C7579", "C7580", "C7581", "C7582", "C7583", "C7584", "C7585", "C7586", "C7587", "C7588", "C7589", "C7590", "C7591", "C7592", "C7593", "C7594", "C7595", "C7596", "C7597", "C7598", "C7599", "C7600", "C7601", "C7602", "C7603", "C7604", "C7605", "C7606", "C7607", "C7608", "C7609", "C7610", "C7611", "C7612", "C7613", "C7614", "C7615", "C7616", "C7617", "C7618", "C7619", "C7620", "C7621", "C7622", "C7623", "C7624", "C7625", "C7627", "C7628", "C7629", "C7630", "C7631", "C7632", "C7633", "C7634", "C7635", "C7636", "C7637", "C7638", "C7639", "C7640", "C7641", "C7642", "C7643", "C7644", "C7645", "C7646", "C7647", "C7648", "C7649", "C7650", "C7651", "C7652", "C7653", "C7654", "C7655", "C7656", "C7657", "C7658", "C7659", "C7660", "C7661", "C7662", "C7665", "C7666", "C7667", "C7668", "C7669", "C7670", "C7671", "C7672", "C7673", "C7674", "C7675", "C7676", "C7677", "C7678", "C7679", "C7680", "C7682", "C7683", "C7684", "C7685", "C7686", "C7687", "C7689", "C7690", "C7691", "C7692", "C7693", "C7694", "C7695", "C7696", "C7697", "C7698", "C7699", "C7700", "C7701", "C7702", "C7703", "C7704", "C7705", "C7706", "C7707", "C7708", "C7709", "C7710", "C7711", "C7712", "C7713", "C7714", "C7720", "C7730", "C7731", "C7732", "C7733", "C7734", "C7735", "C7736", "C7737", "C7738", "C7739", "C7740", "C7741", "C7800", "C7801", "C7802", "C7803", "C7804", "C7806", "C7807"] From 5b7deee6b2311ab96904c5d1337cd62dcc6a1eb4 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 10 Aug 2025 21:52:56 +0800 Subject: [PATCH 1330/2255] Fix mix up of `title` and `description` in "Create an icon or other image" --- .../creating-an-icon-or-other-image-image-editor-for-icons.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/windows/creating-an-icon-or-other-image-image-editor-for-icons.md b/docs/windows/creating-an-icon-or-other-image-image-editor-for-icons.md index 19767ebd322..f6b11d3d2e5 100644 --- a/docs/windows/creating-an-icon-or-other-image-image-editor-for-icons.md +++ b/docs/windows/creating-an-icon-or-other-image-image-editor-for-icons.md @@ -1,6 +1,6 @@ --- -description: "Create an Icon or Other Image" -title: "Learn how to create a new image, bitmap, icon, cursor, or toolbar, and then use the Image Editor to customize its appearance." +title: "Create an Icon or Other Image" +description: "Learn how to create a new image, bitmap, icon, cursor, or toolbar, and then use the Image Editor to customize its appearance." ms.date: 03/21/2025 ms.topic: how-to helpviewer_keywords: ["bitmaps [C++]", "images [C++], creating", "resources [C++], creating images", "bitmaps [C++], creating", "graphics [C++], creating", "Image editor [C++], creating images", "cursors [C++], creating", "image resources [C++], display devices", "icons [C++], creating", "cursors [C++], types", "icons [C++]", "Image editor [C++], icons and cursors", "cursors [C++]", "display devices [C++], creating icons for", "cursors [C++], hot spots", "icons [C++], types", "icons [C++], creating", "display devices [C++], creating image", "images [C++], creating for display devices", "icons [C++], inserting", "New Image Type dialog box [C++]", "Custom Image dialog box [C++]", "Open Image dialog box [C++]", "New Device Image command", "display devices [C++], adding images", "cursors [C++], adding", "icons, adding", "display devices [C++], copying images", "cursors [C++], copying", "icons, copying", "cursors [C++], deleting", "display devices [C++], deleting device image", "icons, erasing", "icons, deleting", "cursors [C++], undoing changes", "icons, undoing changes", "cursors [C++], screen regions", "inverse colors [C++], device images", "transparent regions, device images", "transparency, device images", "Image editor [C++], device images", "inverse regions, device images", "cursors [C++], transparent regions", "screen colors", "regions, transparent", "icons [C++], transparent regions", "display devices [C++], transparent and screen regions", "transparent regions in devices", "regions, inverse", "colors [C++], Image editor", "device projects [C++], transparent images", "icons [C++], screen regions", "256-color palette", "cursors [C++], color", "colors [C++], icons", "colors [C++], cursors", "icons, color", "colors [C++], icons and cursors", "color palettes, 256-color", "palettes, 256-color", "cursors [C++], hot spots", "hot spots", ".gif files [C++], saving bitmaps as", "jpg files [C++], saving bitmaps as", "jpeg files [C++], saving bitmaps as", ".jpg files [C++], saving bitmaps as", "Image editor [C++], converting image formats", "gif files [C++], saving bitmaps as", "bitmaps [C++], converting formats", ".jpeg files [C++], saving bitmaps as", "graphics [C++], converting formats", "images [C++], converting formats", "images [C++], stand-alone editing", "Image editor [C++], converting image formats", "graphics [C++], converting formats", "images [C++], converting formats"] From ad4ab31a4edaa65b1f61a6dfd10acc95e2e5be65 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 10 Aug 2025 21:53:36 +0800 Subject: [PATCH 1331/2255] Tweak metadata in "Create an icon or other image" --- .../creating-an-icon-or-other-image-image-editor-for-icons.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/windows/creating-an-icon-or-other-image-image-editor-for-icons.md b/docs/windows/creating-an-icon-or-other-image-image-editor-for-icons.md index f6b11d3d2e5..5c477289796 100644 --- a/docs/windows/creating-an-icon-or-other-image-image-editor-for-icons.md +++ b/docs/windows/creating-an-icon-or-other-image-image-editor-for-icons.md @@ -1,10 +1,9 @@ --- -title: "Create an Icon or Other Image" +title: "Create an icon or other image" description: "Learn how to create a new image, bitmap, icon, cursor, or toolbar, and then use the Image Editor to customize its appearance." ms.date: 03/21/2025 ms.topic: how-to helpviewer_keywords: ["bitmaps [C++]", "images [C++], creating", "resources [C++], creating images", "bitmaps [C++], creating", "graphics [C++], creating", "Image editor [C++], creating images", "cursors [C++], creating", "image resources [C++], display devices", "icons [C++], creating", "cursors [C++], types", "icons [C++]", "Image editor [C++], icons and cursors", "cursors [C++]", "display devices [C++], creating icons for", "cursors [C++], hot spots", "icons [C++], types", "icons [C++], creating", "display devices [C++], creating image", "images [C++], creating for display devices", "icons [C++], inserting", "New Image Type dialog box [C++]", "Custom Image dialog box [C++]", "Open Image dialog box [C++]", "New Device Image command", "display devices [C++], adding images", "cursors [C++], adding", "icons, adding", "display devices [C++], copying images", "cursors [C++], copying", "icons, copying", "cursors [C++], deleting", "display devices [C++], deleting device image", "icons, erasing", "icons, deleting", "cursors [C++], undoing changes", "icons, undoing changes", "cursors [C++], screen regions", "inverse colors [C++], device images", "transparent regions, device images", "transparency, device images", "Image editor [C++], device images", "inverse regions, device images", "cursors [C++], transparent regions", "screen colors", "regions, transparent", "icons [C++], transparent regions", "display devices [C++], transparent and screen regions", "transparent regions in devices", "regions, inverse", "colors [C++], Image editor", "device projects [C++], transparent images", "icons [C++], screen regions", "256-color palette", "cursors [C++], color", "colors [C++], icons", "colors [C++], cursors", "icons, color", "colors [C++], icons and cursors", "color palettes, 256-color", "palettes, 256-color", "cursors [C++], hot spots", "hot spots", ".gif files [C++], saving bitmaps as", "jpg files [C++], saving bitmaps as", "jpeg files [C++], saving bitmaps as", ".jpg files [C++], saving bitmaps as", "Image editor [C++], converting image formats", "gif files [C++], saving bitmaps as", "bitmaps [C++], converting formats", ".jpeg files [C++], saving bitmaps as", "graphics [C++], converting formats", "images [C++], converting formats", "images [C++], stand-alone editing", "Image editor [C++], converting image formats", "graphics [C++], converting formats", "images [C++], converting formats"] -ms.assetid: 66db3fb2-cfc1-48a2-9bdd-53f61eb7ee30 --- # Create an icon or other image From b2dbd4ff4e74d5ec9d6a9cbb60d35804d48193e6 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 10 Aug 2025 22:29:20 +0800 Subject: [PATCH 1332/2255] Add blockquotes for error messages in range [C2911, C2940] --- docs/error-messages/compiler-errors-2/compiler-error-c2911.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2912.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2913.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2914.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2918.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2919.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2920.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2921.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2923.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2927.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2929.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2930.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2931.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2934.md | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2911.md b/docs/error-messages/compiler-errors-2/compiler-error-c2911.md index 980b21e196c..462aa324fdb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2911.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2911.md @@ -8,7 +8,7 @@ ms.assetid: 83c7c01a-ab6a-4179-9fb0-289a9ec8d44e --- # Compiler Error C2911 -'member' : cannot be declared or defined in the current scope +> 'member' : cannot be declared or defined in the current scope Inside a namespace, class, or function, you can only define a member of the same namespace, class, or function or a member that is enclosed by the same namespace, class, or function. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2912.md b/docs/error-messages/compiler-errors-2/compiler-error-c2912.md index 70fe8cd6599..70b5189293e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2912.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2912.md @@ -8,7 +8,7 @@ ms.assetid: bd55cecd-ab1a-4636-ab8a-a00393fe7b3d --- # Compiler Error C2912 -explicit specialization 'declaration' is not a specialization of a function template +> explicit specialization 'declaration' is not a specialization of a function template You cannot specialize a non-template function. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2913.md b/docs/error-messages/compiler-errors-2/compiler-error-c2913.md index 4b9adf22edd..a2e14b64c0b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2913.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2913.md @@ -8,7 +8,7 @@ ms.assetid: c6cf6090-02e8-49a5-913f-5bc6f864b769 --- # Compiler Error C2913 -explicit specialization; 'declaration' is not a specialization of a class template +> explicit specialization; 'declaration' is not a specialization of a class template You cannot specialize a non-template class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2914.md b/docs/error-messages/compiler-errors-2/compiler-error-c2914.md index dc67e9f0658..8076604743d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2914.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2914.md @@ -8,7 +8,7 @@ ms.assetid: fc6a0592-f53e-4f5a-88cb-780bbed4acf2 --- # Compiler Error C2914 -'identifier' : cannot deduce type argument as function argument is ambiguous +> 'identifier' : cannot deduce type argument as function argument is ambiguous The compiler cannot determine which overloaded functions to use for a generic or template argument. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2918.md b/docs/error-messages/compiler-errors-2/compiler-error-c2918.md index a32dfb09d0d..b57687fcd7d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2918.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2918.md @@ -8,6 +8,6 @@ ms.assetid: e452f7ef-0590-45e6-9c7c-ee75dc014670 --- # Compiler Error C2918 -'name': Indexed properties cannot be used on the published surface of a WinRT type +> 'name': Indexed properties cannot be used on the published surface of a WinRT type Indexed properties are not supported on the published surface of a WinRT type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2919.md b/docs/error-messages/compiler-errors-2/compiler-error-c2919.md index 4a127dde77d..49010abe076 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2919.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2919.md @@ -8,7 +8,7 @@ ms.assetid: 140a6db9-eb48-4c5e-84a7-a09d2653605b --- # Compiler Error C2919 -'type': Operators cannot be used on the published surface of a WinRT type +> 'type': Operators cannot be used on the published surface of a WinRT type The Windows Runtime type system does not support operator member functions in the published surface of a type. This is because not all languages can consume operator member functions. You can create private or internal operator member functions that can be called from C++ code in the same class or compilation unit. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2920.md b/docs/error-messages/compiler-errors-2/compiler-error-c2920.md index 09e52d53e3c..84f0c746368 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2920.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2920.md @@ -8,7 +8,7 @@ ms.assetid: 0a4cb2de-00a0-4209-8160-c7ce6ed7d9ab --- # Compiler Error C2920 -redefinition : 'class' : class template or generic has already been declared as 'type' +> redefinition : 'class' : class template or generic has already been declared as 'type' A generic or template class has multiple declarations, which are not equivalent. To fix this error, use different names for different types, or remove the redefinition of the type name. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2921.md b/docs/error-messages/compiler-errors-2/compiler-error-c2921.md index 9e54aedc97d..792351d46b7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2921.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2921.md @@ -8,7 +8,7 @@ ms.assetid: 323642a0-bfc4-4942-9f41-c3adf5c54296 --- # Compiler Error C2921 -redefinition : 'class' : class template or generic is being redeclared as 'type' +> redefinition : 'class' : class template or generic is being redeclared as 'type' A generic or template class has multiple declarations that are not equivalent. To fix this error, use different names for different types, or remove the redefinition of the type name. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2923.md b/docs/error-messages/compiler-errors-2/compiler-error-c2923.md index aa7b7cb9f12..ac87e453dbf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2923.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2923.md @@ -8,7 +8,7 @@ ms.assetid: 6b92933b-13ef-4124-99d9-b89f9fdae030 --- # Compiler Error C2923 -'type' : 'identifier' is not a valid template type argument for parameter 'param' +> 'type' : 'identifier' is not a valid template type argument for parameter 'param' The argument list is missing a type needed to instantiate the template or generic. Check the template or generic declaration. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2927.md b/docs/error-messages/compiler-errors-2/compiler-error-c2927.md index 26c2fc59b5e..059f13a89e7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2927.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2927.md @@ -8,6 +8,6 @@ ms.assetid: 3f75beec-ff5c-44e1-9085-990ecd55198d --- # Compiler Error C2927 -'function' : a function template must be called with at least one argument +> 'function' : a function template must be called with at least one argument You cannot call a function template without arguments. The type of the template arguments determines what version of the function to generate. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2929.md b/docs/error-messages/compiler-errors-2/compiler-error-c2929.md index 64c2ad0086f..2a777fd6f9c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2929.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2929.md @@ -8,7 +8,7 @@ ms.assetid: 11134027-6adc-4733-b6bd-b94486bd1933 --- # Compiler Error C2929 -'identifier' : explicit instantiation; cannot explicitly force and suppress instantiation of template-class member +> 'identifier' : explicit instantiation; cannot explicitly force and suppress instantiation of template-class member You cannot explicitly instantiate an identifier while preventing it from being instantiated. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2930.md b/docs/error-messages/compiler-errors-2/compiler-error-c2930.md index 882645295d0..d825ac4a48f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2930.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2930.md @@ -8,7 +8,7 @@ ms.assetid: f07eecd1-e5d1-4518-bd89-b1fd2a003a17 --- # Compiler Error C2930 -'class' : type-class-id redefined as an enumerator of 'enum identifier' +> 'class' : type-class-id redefined as an enumerator of 'enum identifier' You cannot use a generic or template class as a member of an enumeration. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2931.md b/docs/error-messages/compiler-errors-2/compiler-error-c2931.md index 569af1e5875..8b1cb7df065 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2931.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2931.md @@ -8,7 +8,7 @@ ms.assetid: 33430407-b149-4ba3-baf8-b0dae1ea3a5d --- # Compiler Error C2931 -'*class*' : type-class-id redefined as a member function of '*identifier*' +> '*class*' : type-class-id redefined as a member function of '*identifier*' You can't use a generic or template class as a member function of another class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2934.md b/docs/error-messages/compiler-errors-2/compiler-error-c2934.md index f95f66da05f..03e914d4602 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2934.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2934.md @@ -8,7 +8,7 @@ ms.assetid: b7f7e7aa-2d4c-4e17-8564-2c005ab81fd5 --- # Compiler Error C2934 -'*class*' : type-class-id redefined as a nested 'item' of '*identifier*' +> '*class*' : type-class-id redefined as a nested 'item' of '*identifier*' You can't use a generic or template class as a nested item. From dd4064c5ae33a9e262508fb6e5563dc353a52699 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 10 Aug 2025 22:34:45 +0800 Subject: [PATCH 1333/2255] Add "Remarks" and "Example" headings for error references in range [C2911, C2940] --- docs/error-messages/compiler-errors-2/compiler-error-c2911.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2912.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2913.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2914.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2918.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2919.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2920.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2921.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2923.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2927.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2928.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2929.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2930.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2931.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2932.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2933.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2934.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2935.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2936.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2937.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2939.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2940.md | 4 ++++ 22 files changed, 78 insertions(+) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2911.md b/docs/error-messages/compiler-errors-2/compiler-error-c2911.md index 462aa324fdb..1b8281eba3f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2911.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2911.md @@ -10,8 +10,12 @@ ms.assetid: 83c7c01a-ab6a-4179-9fb0-289a9ec8d44e > 'member' : cannot be declared or defined in the current scope +## Remarks + Inside a namespace, class, or function, you can only define a member of the same namespace, class, or function or a member that is enclosed by the same namespace, class, or function. +## Example + The following sample generates C2911: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2912.md b/docs/error-messages/compiler-errors-2/compiler-error-c2912.md index 70b5189293e..57a19630761 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2912.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2912.md @@ -10,8 +10,12 @@ ms.assetid: bd55cecd-ab1a-4636-ab8a-a00393fe7b3d > explicit specialization 'declaration' is not a specialization of a function template +## Remarks + You cannot specialize a non-template function. +## Examples + The following sample generates C2912: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2913.md b/docs/error-messages/compiler-errors-2/compiler-error-c2913.md index a2e14b64c0b..10af5b0ad60 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2913.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2913.md @@ -10,8 +10,12 @@ ms.assetid: c6cf6090-02e8-49a5-913f-5bc6f864b769 > explicit specialization; 'declaration' is not a specialization of a class template +## Remarks + You cannot specialize a non-template class. +## Example + The following sample generates C2913: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2914.md b/docs/error-messages/compiler-errors-2/compiler-error-c2914.md index 8076604743d..646bae6acd7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2914.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2914.md @@ -10,8 +10,12 @@ ms.assetid: fc6a0592-f53e-4f5a-88cb-780bbed4acf2 > 'identifier' : cannot deduce type argument as function argument is ambiguous +## Remarks + The compiler cannot determine which overloaded functions to use for a generic or template argument. +## Examples + The following sample generates C2914: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2918.md b/docs/error-messages/compiler-errors-2/compiler-error-c2918.md index b57687fcd7d..25cadd018e2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2918.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2918.md @@ -10,4 +10,6 @@ ms.assetid: e452f7ef-0590-45e6-9c7c-ee75dc014670 > 'name': Indexed properties cannot be used on the published surface of a WinRT type +## Remarks + Indexed properties are not supported on the published surface of a WinRT type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2919.md b/docs/error-messages/compiler-errors-2/compiler-error-c2919.md index 49010abe076..42a18ca5630 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2919.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2919.md @@ -10,6 +10,8 @@ ms.assetid: 140a6db9-eb48-4c5e-84a7-a09d2653605b > 'type': Operators cannot be used on the published surface of a WinRT type +## Remarks + The Windows Runtime type system does not support operator member functions in the published surface of a type. This is because not all languages can consume operator member functions. You can create private or internal operator member functions that can be called from C++ code in the same class or compilation unit. To fix this issue, remove the operator member function from the public interface, or change it to a named member function. For example, instead of `operator==`, name the member function `Equals`. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2920.md b/docs/error-messages/compiler-errors-2/compiler-error-c2920.md index 84f0c746368..e3cbbc692a2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2920.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2920.md @@ -10,8 +10,12 @@ ms.assetid: 0a4cb2de-00a0-4209-8160-c7ce6ed7d9ab > redefinition : 'class' : class template or generic has already been declared as 'type' +## Remarks + A generic or template class has multiple declarations, which are not equivalent. To fix this error, use different names for different types, or remove the redefinition of the type name. +## Examples + The following sample generates C2920 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2921.md b/docs/error-messages/compiler-errors-2/compiler-error-c2921.md index 792351d46b7..af13d50a848 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2921.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2921.md @@ -10,8 +10,12 @@ ms.assetid: 323642a0-bfc4-4942-9f41-c3adf5c54296 > redefinition : 'class' : class template or generic is being redeclared as 'type' +## Remarks + A generic or template class has multiple declarations that are not equivalent. To fix this error, use different names for different types, or remove the redefinition of the type name. +## Examples + The following sample generates C2921: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2923.md b/docs/error-messages/compiler-errors-2/compiler-error-c2923.md index ac87e453dbf..938c419094e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2923.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2923.md @@ -10,8 +10,12 @@ ms.assetid: 6b92933b-13ef-4124-99d9-b89f9fdae030 > 'type' : 'identifier' is not a valid template type argument for parameter 'param' +## Remarks + The argument list is missing a type needed to instantiate the template or generic. Check the template or generic declaration. +## Examples + The following sample generates C2923: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2927.md b/docs/error-messages/compiler-errors-2/compiler-error-c2927.md index 059f13a89e7..7703166fb1e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2927.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2927.md @@ -10,4 +10,6 @@ ms.assetid: 3f75beec-ff5c-44e1-9085-990ecd55198d > 'function' : a function template must be called with at least one argument +## Remarks + You cannot call a function template without arguments. The type of the template arguments determines what version of the function to generate. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2928.md b/docs/error-messages/compiler-errors-2/compiler-error-c2928.md index 87bc5a29d23..016cba41f58 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2928.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2928.md @@ -10,4 +10,6 @@ ms.assetid: 869e57f4-7024-4cbe-b47b-6e1e2a6005c5 > explicit instantiation; '*identifier*' is not a function or static data member of template-class '*class-name*' +## Remarks + You cannot explicitly instantiate a member of *class-name* that is not a function or **`static`** variable. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2929.md b/docs/error-messages/compiler-errors-2/compiler-error-c2929.md index 2a777fd6f9c..243e422ea95 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2929.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2929.md @@ -10,8 +10,12 @@ ms.assetid: 11134027-6adc-4733-b6bd-b94486bd1933 > 'identifier' : explicit instantiation; cannot explicitly force and suppress instantiation of template-class member +## Remarks + You cannot explicitly instantiate an identifier while preventing it from being instantiated. +## Example + The following sample generates C2929: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2930.md b/docs/error-messages/compiler-errors-2/compiler-error-c2930.md index d825ac4a48f..01293a42b2a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2930.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2930.md @@ -10,10 +10,14 @@ ms.assetid: f07eecd1-e5d1-4518-bd89-b1fd2a003a17 > 'class' : type-class-id redefined as an enumerator of 'enum identifier' +## Remarks + You cannot use a generic or template class as a member of an enumeration. This error can be caused if braces are improperly matched. +## Examples + The following sample generates C2930: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2931.md b/docs/error-messages/compiler-errors-2/compiler-error-c2931.md index 8b1cb7df065..ad468d20cc7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2931.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2931.md @@ -10,12 +10,16 @@ ms.assetid: 33430407-b149-4ba3-baf8-b0dae1ea3a5d > '*class*' : type-class-id redefined as a member function of '*identifier*' +## Remarks + You can't use a generic or template class as a member function of another class. This error is obsolete in Visual Studio 2022 and later versions. This error can be caused if braces are improperly matched. +## Examples + The following sample generates C2931: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2932.md b/docs/error-messages/compiler-errors-2/compiler-error-c2932.md index 3ec4a323b08..83df72aa16a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2932.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2932.md @@ -10,10 +10,14 @@ ms.assetid: c28e88d9-e654-4367-bfb4-13c780bca9bd > '*class*' : type-class-id redefined as a data member of '*identifier*' +## Remarks + You can't use a generic or template class as a data member. This error is obsolete in Visual Studio 2022 and later versions. +## Examples + The following sample generates C2932: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2933.md b/docs/error-messages/compiler-errors-2/compiler-error-c2933.md index c908e2a05c6..920f00231b8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2933.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2933.md @@ -10,10 +10,14 @@ ms.assetid: 394891e3-6b52-4b61-83d2-a1c5125d9bd5 > '*class*' : type-class-id redefined as a typedef member of '*identifier*' +## Remarks + You can't use a generic or template class as a **`typedef`** member. This error is obsolete in Visual Studio 2022 and later versions. +## Examples + The following sample generates C2933: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2934.md b/docs/error-messages/compiler-errors-2/compiler-error-c2934.md index 03e914d4602..bba3065f7aa 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2934.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2934.md @@ -10,6 +10,8 @@ ms.assetid: b7f7e7aa-2d4c-4e17-8564-2c005ab81fd5 > '*class*' : type-class-id redefined as a nested 'item' of '*identifier*' +## Remarks + You can't use a generic or template class as a nested item. This error is obsolete in Visual Studio 2022 and later versions. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2935.md b/docs/error-messages/compiler-errors-2/compiler-error-c2935.md index 277c0cafd58..d45dbf57b9f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2935.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2935.md @@ -10,12 +10,16 @@ ms.assetid: e11ef90d-0756-4e43-8a09-4974c6aa72a3 > '*class*' : type-class-id redefined as a global function +## Remarks + You can't use a generic or template class as a global function. This error is obsolete in Visual Studio 2022 and later versions. This error can be caused if braces are improperly matched. +## Examples + The following sample generates C2935: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2936.md b/docs/error-messages/compiler-errors-2/compiler-error-c2936.md index 0b7ee74a590..650757020fd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2936.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2936.md @@ -10,12 +10,16 @@ ms.assetid: 5d1ba0fc-0c78-4a37-a83b-1ef8527763be > '*class*' : type-class-id redefined as a global data variable +## Remarks + You can't use a generic or template class as a global data variable. This error is obsolete in Visual Studio 2022 and later versions. This error can be caused if braces are improperly matched. +## Examples + The following sample generates C2936: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2937.md b/docs/error-messages/compiler-errors-2/compiler-error-c2937.md index 7c14567bc23..e3511972ece 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2937.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2937.md @@ -10,10 +10,14 @@ ms.assetid: 95671ca3-79f7-4b56-a5f2-a92296da1629 > '*class*' : type-class-id redefined as a global typedef +## Remarks + You can't use a generic or template class as a global **`typedef`**. This error is obsolete in Visual Studio 2022 and later versions. +## Examples + The following sample generates C2937: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2939.md b/docs/error-messages/compiler-errors-2/compiler-error-c2939.md index 602ed451dc0..5438463d311 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2939.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2939.md @@ -10,12 +10,16 @@ ms.assetid: 455b050b-f2dc-4b5b-bd6a-e1f81d3d1644 > '*class*' : type-class-id redefined as a local data variable +## Remarks + You can't use a generic or template class as a local data variable. This error is obsolete in Visual Studio 2022 and later versions. This error can be caused if braces are improperly matched. +## Examples + The following sample generates C2939: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2940.md b/docs/error-messages/compiler-errors-2/compiler-error-c2940.md index dec4f0abd4a..d4a41b3f037 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2940.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2940.md @@ -10,10 +10,14 @@ ms.assetid: af6bf2bf-8de6-4cfd-bbf0-4c6b32a30edf > '*class*' : type-class-id redefined as a local typedef +## Remarks + You can't use a generic or template class as a local **`typedef`**. This error is obsolete in Visual Studio 2022 and later versions. +## Examples + The following sample generates C2940: ```cpp From 5742462a34c9cb0409dc663097a6e79986a372df Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 10 Aug 2025 22:36:06 +0800 Subject: [PATCH 1334/2255] Replace term "sample" with "example" for error references in range [C2911, C2940] --- docs/error-messages/compiler-errors-2/compiler-error-c2911.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2912.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2913.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2914.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c2917.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2920.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2921.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2923.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2929.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2930.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2931.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2932.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2933.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2935.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2936.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2937.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2939.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2940.md | 2 +- 18 files changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2911.md b/docs/error-messages/compiler-errors-2/compiler-error-c2911.md index 1b8281eba3f..8d3c38fcb12 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2911.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2911.md @@ -16,7 +16,7 @@ Inside a namespace, class, or function, you can only define a member of the same ## Example -The following sample generates C2911: +The following example generates C2911: ```cpp // C2911.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2912.md b/docs/error-messages/compiler-errors-2/compiler-error-c2912.md index 57a19630761..ed5a071e9c4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2912.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2912.md @@ -16,7 +16,7 @@ You cannot specialize a non-template function. ## Examples -The following sample generates C2912: +The following example generates C2912: ```cpp // C2912.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2913.md b/docs/error-messages/compiler-errors-2/compiler-error-c2913.md index 10af5b0ad60..200adf33cb5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2913.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2913.md @@ -16,7 +16,7 @@ You cannot specialize a non-template class. ## Example -The following sample generates C2913: +The following example generates C2913: ```cpp // C2913.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2914.md b/docs/error-messages/compiler-errors-2/compiler-error-c2914.md index 646bae6acd7..23489af4899 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2914.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2914.md @@ -16,7 +16,7 @@ The compiler cannot determine which overloaded functions to use for a generic or ## Examples -The following sample generates C2914: +The following example generates C2914: ```cpp // C2914.cpp @@ -29,7 +29,7 @@ void h() { g(f); } // C2914 // void h() { g(f); } ``` -C2914 can also occur when using generics. The following sample generates C2914: +C2914 can also occur when using generics. The following example generates C2914: ```cpp // C2914b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2917.md b/docs/error-messages/compiler-errors-2/compiler-error-c2917.md index f7b627b4264..fae90e2a73e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2917.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2917.md @@ -18,7 +18,7 @@ This error is obsolete in Visual Studio 2022 and later versions. ## Example -The following sample generates C2917. +The following example generates C2917. ```cpp // C2917.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2920.md b/docs/error-messages/compiler-errors-2/compiler-error-c2920.md index e3cbbc692a2..aaf35ce71d6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2920.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2920.md @@ -16,7 +16,7 @@ A generic or template class has multiple declarations, which are not equivalent. ## Examples -The following sample generates C2920 and shows how to fix it: +The following example generates C2920 and shows how to fix it: ```cpp // C2920.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2921.md b/docs/error-messages/compiler-errors-2/compiler-error-c2921.md index af13d50a848..e32be21f17a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2921.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2921.md @@ -16,7 +16,7 @@ A generic or template class has multiple declarations that are not equivalent. T ## Examples -The following sample generates C2921: +The following example generates C2921: ```cpp // C2921.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2923.md b/docs/error-messages/compiler-errors-2/compiler-error-c2923.md index 938c419094e..19ded2ba2f4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2923.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2923.md @@ -16,7 +16,7 @@ The argument list is missing a type needed to instantiate the template or generi ## Examples -The following sample generates C2923: +The following example generates C2923: ```cpp // C2923.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2929.md b/docs/error-messages/compiler-errors-2/compiler-error-c2929.md index 243e422ea95..76fa7e0658d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2929.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2929.md @@ -16,7 +16,7 @@ You cannot explicitly instantiate an identifier while preventing it from being i ## Example -The following sample generates C2929: +The following example generates C2929: ```cpp // C2929.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2930.md b/docs/error-messages/compiler-errors-2/compiler-error-c2930.md index 01293a42b2a..10b9e7bf403 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2930.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2930.md @@ -18,7 +18,7 @@ This error can be caused if braces are improperly matched. ## Examples -The following sample generates C2930: +The following example generates C2930: ```cpp // C2930.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2931.md b/docs/error-messages/compiler-errors-2/compiler-error-c2931.md index ad468d20cc7..fb9f702ba19 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2931.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2931.md @@ -20,7 +20,7 @@ This error can be caused if braces are improperly matched. ## Examples -The following sample generates C2931: +The following example generates C2931: ```cpp // C2931.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2932.md b/docs/error-messages/compiler-errors-2/compiler-error-c2932.md index 83df72aa16a..350b0563b34 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2932.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2932.md @@ -18,7 +18,7 @@ This error is obsolete in Visual Studio 2022 and later versions. ## Examples -The following sample generates C2932: +The following example generates C2932: ```cpp // C2932.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2933.md b/docs/error-messages/compiler-errors-2/compiler-error-c2933.md index 920f00231b8..cc8fefe104a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2933.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2933.md @@ -18,7 +18,7 @@ This error is obsolete in Visual Studio 2022 and later versions. ## Examples -The following sample generates C2933: +The following example generates C2933: ```cpp // C2933.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2935.md b/docs/error-messages/compiler-errors-2/compiler-error-c2935.md index d45dbf57b9f..e39f5ff975d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2935.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2935.md @@ -20,7 +20,7 @@ This error can be caused if braces are improperly matched. ## Examples -The following sample generates C2935: +The following example generates C2935: ```cpp // C2935.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2936.md b/docs/error-messages/compiler-errors-2/compiler-error-c2936.md index 650757020fd..4bd17e71018 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2936.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2936.md @@ -20,7 +20,7 @@ This error can be caused if braces are improperly matched. ## Examples -The following sample generates C2936: +The following example generates C2936: ```cpp // C2936.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2937.md b/docs/error-messages/compiler-errors-2/compiler-error-c2937.md index e3511972ece..14a51f5fc15 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2937.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2937.md @@ -18,7 +18,7 @@ This error is obsolete in Visual Studio 2022 and later versions. ## Examples -The following sample generates C2937: +The following example generates C2937: ```cpp // C2937.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2939.md b/docs/error-messages/compiler-errors-2/compiler-error-c2939.md index 5438463d311..e4b6cde5861 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2939.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2939.md @@ -20,7 +20,7 @@ This error can be caused if braces are improperly matched. ## Examples -The following sample generates C2939: +The following example generates C2939: ```cpp // C2939.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2940.md b/docs/error-messages/compiler-errors-2/compiler-error-c2940.md index d4a41b3f037..b99e1f2a630 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2940.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2940.md @@ -18,7 +18,7 @@ This error is obsolete in Visual Studio 2022 and later versions. ## Examples -The following sample generates C2940: +The following example generates C2940: ```cpp // C2940.cpp From 2d3669ca8ab8c17191ad7ed132811d36cb77980a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 10 Aug 2025 22:40:00 +0800 Subject: [PATCH 1335/2255] Update metadata for error references in range [C2911, C2940] --- .../error-messages/compiler-errors-2/compiler-error-c2911.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2912.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2913.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2914.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2917.md | 3 +-- .../error-messages/compiler-errors-2/compiler-error-c2918.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2919.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2920.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2921.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2923.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2927.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2928.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2929.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2930.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2931.md | 3 +-- .../error-messages/compiler-errors-2/compiler-error-c2932.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2933.md | 3 +-- .../error-messages/compiler-errors-2/compiler-error-c2934.md | 3 +-- .../error-messages/compiler-errors-2/compiler-error-c2935.md | 3 +-- .../error-messages/compiler-errors-2/compiler-error-c2936.md | 3 +-- .../error-messages/compiler-errors-2/compiler-error-c2937.md | 3 +-- .../error-messages/compiler-errors-2/compiler-error-c2939.md | 3 +-- .../error-messages/compiler-errors-2/compiler-error-c2940.md | 3 +-- 23 files changed, 37 insertions(+), 60 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2911.md b/docs/error-messages/compiler-errors-2/compiler-error-c2911.md index 8d3c38fcb12..89012b64268 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2911.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2911.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2911" title: "Compiler Error C2911" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2911" +ms.date: 11/04/2016 f1_keywords: ["C2911"] helpviewer_keywords: ["C2911"] -ms.assetid: 83c7c01a-ab6a-4179-9fb0-289a9ec8d44e --- # Compiler Error C2911 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2912.md b/docs/error-messages/compiler-errors-2/compiler-error-c2912.md index ed5a071e9c4..3184529521a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2912.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2912.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2912" title: "Compiler Error C2912" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2912" +ms.date: 11/04/2016 f1_keywords: ["C2912"] helpviewer_keywords: ["C2912"] -ms.assetid: bd55cecd-ab1a-4636-ab8a-a00393fe7b3d --- # Compiler Error C2912 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2913.md b/docs/error-messages/compiler-errors-2/compiler-error-c2913.md index 200adf33cb5..db8bc5ec90c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2913.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2913.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2913" title: "Compiler Error C2913" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2913" +ms.date: 11/04/2016 f1_keywords: ["C2913"] helpviewer_keywords: ["C2913"] -ms.assetid: c6cf6090-02e8-49a5-913f-5bc6f864b769 --- # Compiler Error C2913 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2914.md b/docs/error-messages/compiler-errors-2/compiler-error-c2914.md index 23489af4899..89cb2921fca 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2914.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2914.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2914" title: "Compiler Error C2914" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2914" +ms.date: 11/04/2016 f1_keywords: ["C2914"] helpviewer_keywords: ["C2914"] -ms.assetid: fc6a0592-f53e-4f5a-88cb-780bbed4acf2 --- # Compiler Error C2914 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2917.md b/docs/error-messages/compiler-errors-2/compiler-error-c2917.md index fae90e2a73e..f572ec0664c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2917.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2917.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2917" title: "Compiler Error C2917" +description: "Learn more about: Compiler Error C2917" ms.date: 06/01/2022 f1_keywords: ["C2917"] helpviewer_keywords: ["C2917"] -ms.assetid: ec9da9ee-0f37-47b3-87dd-19ef5a14dc4c --- # Compiler Error C2917 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2918.md b/docs/error-messages/compiler-errors-2/compiler-error-c2918.md index 25cadd018e2..805c9907a4b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2918.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2918.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2918" title: "Compiler Error C2918" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2918" +ms.date: 11/04/2016 f1_keywords: ["C2918"] helpviewer_keywords: ["C2918"] -ms.assetid: e452f7ef-0590-45e6-9c7c-ee75dc014670 --- # Compiler Error C2918 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2919.md b/docs/error-messages/compiler-errors-2/compiler-error-c2919.md index 42a18ca5630..0c922ead41a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2919.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2919.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2919" title: "Compiler Error C2919" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2919" +ms.date: 11/04/2016 f1_keywords: ["C2919"] helpviewer_keywords: ["C2919"] -ms.assetid: 140a6db9-eb48-4c5e-84a7-a09d2653605b --- # Compiler Error C2919 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2920.md b/docs/error-messages/compiler-errors-2/compiler-error-c2920.md index aaf35ce71d6..d93a9e6731b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2920.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2920.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2920" title: "Compiler Error C2920" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2920" +ms.date: 11/04/2016 f1_keywords: ["C2920"] helpviewer_keywords: ["C2920"] -ms.assetid: 0a4cb2de-00a0-4209-8160-c7ce6ed7d9ab --- # Compiler Error C2920 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2921.md b/docs/error-messages/compiler-errors-2/compiler-error-c2921.md index e32be21f17a..1e95a49174b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2921.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2921.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2921" title: "Compiler Error C2921" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2921" +ms.date: 11/04/2016 f1_keywords: ["C2921"] helpviewer_keywords: ["C2921"] -ms.assetid: 323642a0-bfc4-4942-9f41-c3adf5c54296 --- # Compiler Error C2921 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2923.md b/docs/error-messages/compiler-errors-2/compiler-error-c2923.md index 19ded2ba2f4..d5867c16777 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2923.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2923.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2923" title: "Compiler Error C2923" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2923" +ms.date: 11/04/2016 f1_keywords: ["C2923"] helpviewer_keywords: ["C2923"] -ms.assetid: 6b92933b-13ef-4124-99d9-b89f9fdae030 --- # Compiler Error C2923 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2927.md b/docs/error-messages/compiler-errors-2/compiler-error-c2927.md index 7703166fb1e..eefb7751741 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2927.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2927.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2927" title: "Compiler Error C2927" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2927" +ms.date: 11/04/2016 f1_keywords: ["C2927"] helpviewer_keywords: ["C2927"] -ms.assetid: 3f75beec-ff5c-44e1-9085-990ecd55198d --- # Compiler Error C2927 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2928.md b/docs/error-messages/compiler-errors-2/compiler-error-c2928.md index 016cba41f58..d2660e9a556 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2928.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2928.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2928" title: "Compiler Error C2928" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2928" +ms.date: 11/04/2016 f1_keywords: ["C2928"] helpviewer_keywords: ["C2928"] -ms.assetid: 869e57f4-7024-4cbe-b47b-6e1e2a6005c5 --- # Compiler Error C2928 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2929.md b/docs/error-messages/compiler-errors-2/compiler-error-c2929.md index 76fa7e0658d..9ebb6d95a29 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2929.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2929.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2929" title: "Compiler Error C2929" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2929" +ms.date: 11/04/2016 f1_keywords: ["C2929"] helpviewer_keywords: ["C2929"] -ms.assetid: 11134027-6adc-4733-b6bd-b94486bd1933 --- # Compiler Error C2929 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2930.md b/docs/error-messages/compiler-errors-2/compiler-error-c2930.md index 10b9e7bf403..5cfc1f444e4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2930.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2930.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2930" title: "Compiler Error C2930" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2930" +ms.date: 11/04/2016 f1_keywords: ["C2930"] helpviewer_keywords: ["C2930"] -ms.assetid: f07eecd1-e5d1-4518-bd89-b1fd2a003a17 --- # Compiler Error C2930 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2931.md b/docs/error-messages/compiler-errors-2/compiler-error-c2931.md index fb9f702ba19..a282986af7b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2931.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2931.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2931" title: "Compiler Error C2931" +description: "Learn more about: Compiler Error C2931" ms.date: 06/01/2022 f1_keywords: ["C2931"] helpviewer_keywords: ["C2931"] -ms.assetid: 33430407-b149-4ba3-baf8-b0dae1ea3a5d --- # Compiler Error C2931 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2932.md b/docs/error-messages/compiler-errors-2/compiler-error-c2932.md index 350b0563b34..e42e9e08fde 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2932.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2932.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2932" title: "Compiler Error C2932" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2932" +ms.date: 11/04/2016 f1_keywords: ["C2932"] helpviewer_keywords: ["C2932"] -ms.assetid: c28e88d9-e654-4367-bfb4-13c780bca9bd --- # Compiler Error C2932 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2933.md b/docs/error-messages/compiler-errors-2/compiler-error-c2933.md index cc8fefe104a..93b6124a889 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2933.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2933.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2933" title: "Compiler Error C2933" +description: "Learn more about: Compiler Error C2933" ms.date: 06/01/2022 f1_keywords: ["C2933"] helpviewer_keywords: ["C2933"] -ms.assetid: 394891e3-6b52-4b61-83d2-a1c5125d9bd5 --- # Compiler Error C2933 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2934.md b/docs/error-messages/compiler-errors-2/compiler-error-c2934.md index bba3065f7aa..43f7ec8c538 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2934.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2934.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2934" title: "Compiler Error C2934" +description: "Learn more about: Compiler Error C2934" ms.date: 06/01/2022 f1_keywords: ["C2934"] helpviewer_keywords: ["C2934"] -ms.assetid: b7f7e7aa-2d4c-4e17-8564-2c005ab81fd5 --- # Compiler Error C2934 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2935.md b/docs/error-messages/compiler-errors-2/compiler-error-c2935.md index e39f5ff975d..7c8f46a10f6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2935.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2935.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2935" title: "Compiler Error C2935" +description: "Learn more about: Compiler Error C2935" ms.date: 06/01/2022 f1_keywords: ["C2935"] helpviewer_keywords: ["C2935"] -ms.assetid: e11ef90d-0756-4e43-8a09-4974c6aa72a3 --- # Compiler Error C2935 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2936.md b/docs/error-messages/compiler-errors-2/compiler-error-c2936.md index 4bd17e71018..803199c6e6e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2936.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2936.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2936" title: "Compiler Error C2936" +description: "Learn more about: Compiler Error C2936" ms.date: 06/01/2022 f1_keywords: ["C2936"] helpviewer_keywords: ["C2936"] -ms.assetid: 5d1ba0fc-0c78-4a37-a83b-1ef8527763be --- # Compiler Error C2936 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2937.md b/docs/error-messages/compiler-errors-2/compiler-error-c2937.md index 14a51f5fc15..d69d2a883a8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2937.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2937.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2937" title: "Compiler Error C2937" +description: "Learn more about: Compiler Error C2937" ms.date: 06/01/2022 f1_keywords: ["C2937"] helpviewer_keywords: ["C2937"] -ms.assetid: 95671ca3-79f7-4b56-a5f2-a92296da1629 --- # Compiler Error C2937 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2939.md b/docs/error-messages/compiler-errors-2/compiler-error-c2939.md index e4b6cde5861..50bf40c9c39 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2939.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2939.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2939" title: "Compiler Error C2939" +description: "Learn more about: Compiler Error C2939" ms.date: 06/01/2022 f1_keywords: ["C2939"] helpviewer_keywords: ["C2939"] -ms.assetid: 455b050b-f2dc-4b5b-bd6a-e1f81d3d1644 --- # Compiler Error C2939 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2940.md b/docs/error-messages/compiler-errors-2/compiler-error-c2940.md index b99e1f2a630..583db713d13 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2940.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2940.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2940" title: "Compiler Error C2940" +description: "Learn more about: Compiler Error C2940" ms.date: 06/01/2022 f1_keywords: ["C2940"] helpviewer_keywords: ["C2940"] -ms.assetid: af6bf2bf-8de6-4cfd-bbf0-4c6b32a30edf --- # Compiler Error C2940 From f19c6597a957c9e249bcca77d84b71b565a6588c Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 11 Aug 2025 23:32:23 +0800 Subject: [PATCH 1336/2255] Add blockquotes for error messages in range [C2941, C2980] --- docs/error-messages/compiler-errors-2/compiler-error-c2945.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2946.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2947.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2948.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2951.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2952.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2953.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2955.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2957.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2958.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2959.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2962.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2969.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2970.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2971.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2973.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2974.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2976.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2977.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2978.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2979.md | 2 +- 21 files changed, 21 insertions(+), 21 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2945.md b/docs/error-messages/compiler-errors-2/compiler-error-c2945.md index 2d13eb9f49e..dd14477de6c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2945.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2945.md @@ -8,6 +8,6 @@ ms.assetid: be640257-7017-45d1-986a-9fe8caab52f3 --- # Compiler Error C2945 -explicit instantiation does not refer to a template-class specialization +> explicit instantiation does not refer to a template-class specialization You cannot explicitly instantiate something that is not templated. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2946.md b/docs/error-messages/compiler-errors-2/compiler-error-c2946.md index 382b205402a..11de0af1d29 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2946.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2946.md @@ -8,7 +8,7 @@ ms.assetid: c86dfbfc-7702-4f09-8a53-d205710e99c2 --- # Compiler Error C2946 -explicit instantiation; 'class' is not a template-class specialization +> explicit instantiation; 'class' is not a template-class specialization You cannot explicitly instantiate a nontemplated class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2947.md b/docs/error-messages/compiler-errors-2/compiler-error-c2947.md index 77faf9893e2..db8b7e50bed 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2947.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2947.md @@ -8,7 +8,7 @@ ms.assetid: 6c056f62-ec90-4883-8a67-aeeb6ec13546 --- # Compiler Error C2947 -expecting '>' to terminate construct, found 'syntax' +> expecting '>' to terminate construct, found 'syntax' A generic or template argument list may not have been terminated correctly. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2948.md b/docs/error-messages/compiler-errors-2/compiler-error-c2948.md index b3a878a050a..7d7892973c2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2948.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2948.md @@ -8,6 +8,6 @@ ms.assetid: 780c6ed3-43a0-4112-8d00-b7bf79086c05 --- # Compiler Error C2948 -explicit instantiation; storage class specifier 'specifier' not permitted on specialization +> explicit instantiation; storage class specifier 'specifier' not permitted on specialization You cannot use storage-class specifiers (such as **`extern`**) in a specialization of a template class that was previously explicitly instantiated. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2951.md b/docs/error-messages/compiler-errors-2/compiler-error-c2951.md index a38b41dfaf7..a4bf3f395bc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2951.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2951.md @@ -8,7 +8,7 @@ ms.assetid: c6f95aa2-c894-425b-a51c-d40d70c8daa1 --- # Compiler Error C2951 -type declarations are only permitted at global, namespace, or class scope +> type declarations are only permitted at global, namespace, or class scope You cannot declare a generic or template class outside global or namespace scope. If you make your generic or template declarations in an include file, make sure the include file is at global scope. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2952.md b/docs/error-messages/compiler-errors-2/compiler-error-c2952.md index 9998595a1ca..40576ad31e3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2952.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2952.md @@ -8,7 +8,7 @@ ms.assetid: a40e18a2-d02c-4511-854f-6c6fd6789a1a --- # Compiler Error C2952 -'declaration' : type declaration missing template parameter list +> 'declaration' : type declaration missing template parameter list A template declaration was ill formed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2953.md b/docs/error-messages/compiler-errors-2/compiler-error-c2953.md index 6e0d8091d5c..cda622b333c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2953.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2953.md @@ -8,7 +8,7 @@ ms.assetid: 8dbcfa24-8296-4e40-bdc4-5526c07d8892 --- # Compiler Error C2953 -'identifier' : class template has already been defined +> 'identifier' : class template has already been defined Check the source file and include files for other definitions. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2955.md b/docs/error-messages/compiler-errors-2/compiler-error-c2955.md index 521cf7a352c..cbe258a9df4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2955.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2955.md @@ -8,7 +8,7 @@ ms.assetid: 77709fb6-d69b-46fd-a62f-e8564563d01b --- # Compiler Error C2955 -'identifier' : use of class template or alias generic requires template or generic argument list +> 'identifier' : use of class template or alias generic requires template or generic argument list You cannot use a class template or class generic as an identifier without a template or generic argument list. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2957.md b/docs/error-messages/compiler-errors-2/compiler-error-c2957.md index e2d17ce3dd2..678e08e2882 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2957.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2957.md @@ -8,7 +8,7 @@ ms.assetid: 9cb4526f-4af8-47e9-b786-56192627ca72 --- # Compiler Error C2957 -'delim' : invalid left delimiter : expected '<' +> 'delim' : invalid left delimiter : expected '<' A generic class was ill formed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2958.md b/docs/error-messages/compiler-errors-2/compiler-error-c2958.md index 72706383992..eddd75f6066 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2958.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2958.md @@ -8,7 +8,7 @@ ms.assetid: 332bf6d3-7cd1-4b1a-8ddb-d4a8cbf01115 --- # Compiler Error C2958 -the left delimiter found at 'location' was not matched correctly +> the left delimiter found at 'location' was not matched correctly A delimiter is not properly matched. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2959.md b/docs/error-messages/compiler-errors-2/compiler-error-c2959.md index 6855bf67bb9..5720765cfd6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2959.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2959.md @@ -8,7 +8,7 @@ ms.assetid: d66bb2a8-70c3-4209-a358-b0c47f111a50 --- # Compiler Error C2959 -a generic class or function may not be a member of a template +> a generic class or function may not be a member of a template For more information, see [Windows Runtime and Managed Templates](../../extensions/windows-runtime-and-managed-templates-cpp-component-extensions.md) and [Generics](../../extensions/generics-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2962.md b/docs/error-messages/compiler-errors-2/compiler-error-c2962.md index 9059b4b8787..18b34b1231b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2962.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2962.md @@ -8,7 +8,7 @@ ms.assetid: 6f966aec-4eea-4221-8e1b-fe66808c6f5c --- # Compiler Error C2962 -syntax error : 'token' : expected template-class member function definition to end with '}' +> syntax error : 'token' : expected template-class member function definition to end with '}' The token caused a syntax error in a template declaration. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2969.md b/docs/error-messages/compiler-errors-2/compiler-error-c2969.md index 47b9816261f..3c70de7938c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2969.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2969.md @@ -8,7 +8,7 @@ ms.assetid: e4ea3d66-b937-4b2c-b42a-96e03fb11579 --- # Compiler Error C2969 -syntax error : 'symbol' : expected member function definition to end with '}' +> syntax error : 'symbol' : expected member function definition to end with '}' A template member function definition has an unmatched closing brace. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2970.md b/docs/error-messages/compiler-errors-2/compiler-error-c2970.md index 4f25c08138b..80ff0e6f7dd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2970.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2970.md @@ -8,7 +8,7 @@ ms.assetid: 21d90348-20d3-438c-b278-efdbfb93a7d2 --- # Compiler Error C2970 -'class' : template parameter 'param' : 'arg' : an expression involving objects with internal linkage cannot be used as a non-type argument +> 'class' : template parameter 'param' : 'arg' : an expression involving objects with internal linkage cannot be used as a non-type argument You cannot use the name or address of a static variable as a template argument. The template class expects a const value that can be evaluated at compile time. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2971.md b/docs/error-messages/compiler-errors-2/compiler-error-c2971.md index 2ff75e440c6..cb1e18bfd97 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2971.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2971.md @@ -8,7 +8,7 @@ ms.assetid: fdb5467b-9a41-41ef-ac20-2e9428d5a4fc --- # Compiler Error C2971 -'class' : template parameter 'param' : 'arg' : a local variable cannot be used as a non-type argument +> 'class' : template parameter 'param' : 'arg' : a local variable cannot be used as a non-type argument You cannot use the name or address of a local variable as a template argument. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2973.md b/docs/error-messages/compiler-errors-2/compiler-error-c2973.md index 2a06b243465..806e4ccc9a0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2973.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2973.md @@ -8,6 +8,6 @@ ms.assetid: 18b4a1c1-0ef6-43af-887a-1b5b1ab88d5b --- # Compiler Error C2973 -invalid template argument 'number' +> invalid template argument 'number' Check the template definition to find the correct types. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2974.md b/docs/error-messages/compiler-errors-2/compiler-error-c2974.md index 1b9610dfcde..2034afee18a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2974.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2974.md @@ -8,7 +8,7 @@ ms.assetid: 1b444260-f2bf-48d7-ab1e-35573d8c4a0e --- # Compiler Error C2974 -invalid type argument 'number', type expected +> invalid type argument 'number', type expected The generic or template argument does not match the generic or template declaration. A type should appear within the angle brackets. Check the generic or template definition to find the correct types. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2976.md b/docs/error-messages/compiler-errors-2/compiler-error-c2976.md index 3ed9ac47998..ec6851055f8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2976.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2976.md @@ -8,7 +8,7 @@ ms.assetid: d9bf9836-325e-4f72-a7e3-a67cf19d32e7 --- # Compiler Error C2976 -'identifier' : too few type arguments +> 'identifier' : too few type arguments A generic or template is missing one or more actual arguments. Check the generic or template declaration to find the correct number of parameters. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2977.md b/docs/error-messages/compiler-errors-2/compiler-error-c2977.md index 4be0207cbb0..bacb489f8e8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2977.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2977.md @@ -8,7 +8,7 @@ ms.assetid: 3c4218e0-5d03-4a2b-b757-c507c35f3542 --- # Compiler Error C2977 -'identifier' : too many type arguments +> 'identifier' : too many type arguments A generic or template has too many actual arguments. Check the generic or template declaration to find the correct number of parameters. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2978.md b/docs/error-messages/compiler-errors-2/compiler-error-c2978.md index cf6adef4931..55df64fa587 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2978.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2978.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2978"] --- # Compiler Error C2978 -syntax error : expected 'keyword1' or 'keyword2'; found type 'keyword3'; non-type parameters are not supported in generics +> syntax error : expected 'keyword1' or 'keyword2'; found type 'keyword3'; non-type parameters are not supported in generics A generic class was declared incorrectly. See [Generics](../../extensions/generics-cpp-component-extensions.md) for more information. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2979.md b/docs/error-messages/compiler-errors-2/compiler-error-c2979.md index c880a70db6b..2fb474dd6fc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2979.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2979.md @@ -8,7 +8,7 @@ ms.assetid: 98bd9043-ec44-451e-a482-3a8e35fc7464 --- # Compiler Error C2979 -explicit specializations are not supported in generics +> explicit specializations are not supported in generics A generic class was declared incorrectly. See [Generics](../../extensions/generics-cpp-component-extensions.md) for more information. From 7745b4cfd38b7ebf4c0632db866238f3d71f559f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 11 Aug 2025 23:38:06 +0800 Subject: [PATCH 1337/2255] Add "Remarks" and "Example" headings for error references in range [C2941, C2980] --- .../compiler-errors-2/compiler-error-c2941.md | 2 ++ .../compiler-errors-2/compiler-error-c2942.md | 4 ++++ .../compiler-errors-2/compiler-error-c2943.md | 4 ++++ .../compiler-errors-2/compiler-error-c2944.md | 4 ++++ .../compiler-errors-2/compiler-error-c2945.md | 2 ++ .../compiler-errors-2/compiler-error-c2946.md | 2 ++ .../compiler-errors-2/compiler-error-c2947.md | 4 ++++ .../compiler-errors-2/compiler-error-c2948.md | 2 ++ .../compiler-errors-2/compiler-error-c2951.md | 4 ++++ .../compiler-errors-2/compiler-error-c2952.md | 4 ++++ .../compiler-errors-2/compiler-error-c2953.md | 4 ++++ .../compiler-errors-2/compiler-error-c2955.md | 6 ++++-- .../compiler-errors-2/compiler-error-c2956.md | 2 ++ .../compiler-errors-2/compiler-error-c2957.md | 4 ++++ .../compiler-errors-2/compiler-error-c2958.md | 2 ++ .../compiler-errors-2/compiler-error-c2959.md | 2 ++ .../compiler-errors-2/compiler-error-c2962.md | 2 ++ .../compiler-errors-2/compiler-error-c2969.md | 4 ++++ .../compiler-errors-2/compiler-error-c2970.md | 4 ++++ .../compiler-errors-2/compiler-error-c2971.md | 4 ++++ .../compiler-errors-2/compiler-error-c2973.md | 2 ++ .../compiler-errors-2/compiler-error-c2974.md | 4 ++++ .../compiler-errors-2/compiler-error-c2975.md | 4 +++- .../compiler-errors-2/compiler-error-c2976.md | 4 ++++ .../compiler-errors-2/compiler-error-c2977.md | 4 ++++ .../compiler-errors-2/compiler-error-c2978.md | 2 ++ .../compiler-errors-2/compiler-error-c2979.md | 2 ++ 27 files changed, 85 insertions(+), 3 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2941.md b/docs/error-messages/compiler-errors-2/compiler-error-c2941.md index 53c28a6c841..48c997bc082 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2941.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2941.md @@ -10,6 +10,8 @@ ms.assetid: 1bba94eb-5bf6-468d-8f84-96a6391a7048 > '*class*' : type-class-id redefined as a local 'item' +## Remarks + You can't use a generic or template class as an item. This error is obsolete in Visual Studio 2022 and later versions. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2942.md b/docs/error-messages/compiler-errors-2/compiler-error-c2942.md index 83426631265..a300558b8af 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2942.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2942.md @@ -10,10 +10,14 @@ ms.assetid: 13abf744-8fa1-450d-886d-e5717c04956e > '*class*' : type-class-id redefined as a formal argument of a function +## Remarks + You can't use a generic or template class as a formal argument. You cannot pass an argument directly to the constructor of a generic or template class. This error is obsolete in Visual Studio 2022 and later versions. +## Examples + The following sample generates C2942: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2943.md b/docs/error-messages/compiler-errors-2/compiler-error-c2943.md index 99b4d8f7abd..0f91de379a5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2943.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2943.md @@ -10,10 +10,14 @@ ms.assetid: ede6565e-d892-44c0-8eee-c69545f3be2e > '*class*' : type-class-id redefined as a type argument of a template +## Remarks + You can't use a generic or template class, instead of a symbol, as a generic or template type argument. This error is obsolete in Visual Studio 2022 and later versions. +## Example + The following sample generates C2943: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2944.md b/docs/error-messages/compiler-errors-2/compiler-error-c2944.md index 68866586941..178cb0300e7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2944.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2944.md @@ -10,10 +10,14 @@ ms.assetid: f209e668-e72f-442a-a438-8c4ff43a404a > '*class*' : type-class-id redefined as a value argument of a template +## Remarks + You can't use a generic or template class, instead of a symbol, as a template value argument. This error is obsolete in Visual Studio 2022 and later versions. +## Examples + The following sample generates C2944: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2945.md b/docs/error-messages/compiler-errors-2/compiler-error-c2945.md index dd14477de6c..ec81b20ef13 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2945.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2945.md @@ -10,4 +10,6 @@ ms.assetid: be640257-7017-45d1-986a-9fe8caab52f3 > explicit instantiation does not refer to a template-class specialization +## Remarks + You cannot explicitly instantiate something that is not templated. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2946.md b/docs/error-messages/compiler-errors-2/compiler-error-c2946.md index 11de0af1d29..15c453bca86 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2946.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2946.md @@ -10,6 +10,8 @@ ms.assetid: c86dfbfc-7702-4f09-8a53-d205710e99c2 > explicit instantiation; 'class' is not a template-class specialization +## Remarks + You cannot explicitly instantiate a nontemplated class. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2947.md b/docs/error-messages/compiler-errors-2/compiler-error-c2947.md index db8b7e50bed..1b37343eafc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2947.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2947.md @@ -10,10 +10,14 @@ ms.assetid: 6c056f62-ec90-4883-8a67-aeeb6ec13546 > expecting '>' to terminate construct, found 'syntax' +## Remarks + A generic or template argument list may not have been terminated correctly. C2947 can also be generated by syntax errors. +## Example + The following sample generates C2947: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2948.md b/docs/error-messages/compiler-errors-2/compiler-error-c2948.md index 7d7892973c2..6fc41cdf2b8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2948.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2948.md @@ -10,4 +10,6 @@ ms.assetid: 780c6ed3-43a0-4112-8d00-b7bf79086c05 > explicit instantiation; storage class specifier 'specifier' not permitted on specialization +## Remarks + You cannot use storage-class specifiers (such as **`extern`**) in a specialization of a template class that was previously explicitly instantiated. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2951.md b/docs/error-messages/compiler-errors-2/compiler-error-c2951.md index a4bf3f395bc..a6094c0acd9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2951.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2951.md @@ -10,8 +10,12 @@ ms.assetid: c6f95aa2-c894-425b-a51c-d40d70c8daa1 > type declarations are only permitted at global, namespace, or class scope +## Remarks + You cannot declare a generic or template class outside global or namespace scope. If you make your generic or template declarations in an include file, make sure the include file is at global scope. +## Examples + The following sample generates C2951: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2952.md b/docs/error-messages/compiler-errors-2/compiler-error-c2952.md index 40576ad31e3..ce6a47e58b9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2952.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2952.md @@ -10,8 +10,12 @@ ms.assetid: a40e18a2-d02c-4511-854f-6c6fd6789a1a > 'declaration' : type declaration missing template parameter list +## Remarks + A template declaration was ill formed. +## Examples + The following sample generates C2952: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2953.md b/docs/error-messages/compiler-errors-2/compiler-error-c2953.md index cda622b333c..b125625cbb5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2953.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2953.md @@ -10,8 +10,12 @@ ms.assetid: 8dbcfa24-8296-4e40-bdc4-5526c07d8892 > 'identifier' : class template has already been defined +## Remarks + Check the source file and include files for other definitions. +## Example + The following sample generates C2953: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2955.md b/docs/error-messages/compiler-errors-2/compiler-error-c2955.md index cbe258a9df4..3ee78a6400c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2955.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2955.md @@ -10,10 +10,14 @@ ms.assetid: 77709fb6-d69b-46fd-a62f-e8564563d01b > 'identifier' : use of class template or alias generic requires template or generic argument list +## Remarks + You cannot use a class template or class generic as an identifier without a template or generic argument list. For more information, see [Class Templates](../../cpp/class-templates.md). +## Examples + The following sample generates C2955 and shows how to fix it: ```cpp @@ -61,8 +65,6 @@ int main() { } ``` -## Example - **Visual Studio 2017 and later:** The compiler correctly diagnoses missing template argument lists when the template appears in a template parameter list (for example as part of a default template argument or a non-type template parameter). The following code compiles in Visual Studio 2015 but produces an error in Visual Studio 2017. ``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2956.md b/docs/error-messages/compiler-errors-2/compiler-error-c2956.md index d5fc9187030..c47796370f3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2956.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2956.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C2956"] > usual deallocation function '*function*' would be chosen as placement deallocation function +## Remarks + The deallocation function found for the placement new expression matches one of the usual deallocation functions. Either an implicit compiler-generated deallocation or an explicit `delete` (or `delete[]`) would use the wrong deallocation function. ## Remarks diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2957.md b/docs/error-messages/compiler-errors-2/compiler-error-c2957.md index 678e08e2882..2978f883730 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2957.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2957.md @@ -10,8 +10,12 @@ ms.assetid: 9cb4526f-4af8-47e9-b786-56192627ca72 > 'delim' : invalid left delimiter : expected '<' +## Remarks + A generic class was ill formed. +## Example + The following sample generates C2957: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2958.md b/docs/error-messages/compiler-errors-2/compiler-error-c2958.md index eddd75f6066..d8a0645ad07 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2958.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2958.md @@ -10,6 +10,8 @@ ms.assetid: 332bf6d3-7cd1-4b1a-8ddb-d4a8cbf01115 > the left delimiter found at 'location' was not matched correctly +## Remarks + A delimiter is not properly matched. This error can be caused by mismatched parenthesis in a function template declaration. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2959.md b/docs/error-messages/compiler-errors-2/compiler-error-c2959.md index 5720765cfd6..6b32f772624 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2959.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2959.md @@ -10,6 +10,8 @@ ms.assetid: d66bb2a8-70c3-4209-a358-b0c47f111a50 > a generic class or function may not be a member of a template +## Remarks + For more information, see [Windows Runtime and Managed Templates](../../extensions/windows-runtime-and-managed-templates-cpp-component-extensions.md) and [Generics](../../extensions/generics-cpp-component-extensions.md). ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2962.md b/docs/error-messages/compiler-errors-2/compiler-error-c2962.md index 18b34b1231b..3636f1fcd50 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2962.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2962.md @@ -10,6 +10,8 @@ ms.assetid: 6f966aec-4eea-4221-8e1b-fe66808c6f5c > syntax error : 'token' : expected template-class member function definition to end with '}' +## Remarks + The token caused a syntax error in a template declaration. This error can be caused by mismatched delimiters diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2969.md b/docs/error-messages/compiler-errors-2/compiler-error-c2969.md index 3c70de7938c..599ff99228c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2969.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2969.md @@ -10,8 +10,12 @@ ms.assetid: e4ea3d66-b937-4b2c-b42a-96e03fb11579 > syntax error : 'symbol' : expected member function definition to end with '}' +## Remarks + A template member function definition has an unmatched closing brace. +## Example + The following sample generates C2969: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2970.md b/docs/error-messages/compiler-errors-2/compiler-error-c2970.md index 80ff0e6f7dd..4384e207deb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2970.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2970.md @@ -10,8 +10,12 @@ ms.assetid: 21d90348-20d3-438c-b278-efdbfb93a7d2 > 'class' : template parameter 'param' : 'arg' : an expression involving objects with internal linkage cannot be used as a non-type argument +## Remarks + You cannot use the name or address of a static variable as a template argument. The template class expects a const value that can be evaluated at compile time. +## Example + The following sample generates C2970: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2971.md b/docs/error-messages/compiler-errors-2/compiler-error-c2971.md index cb1e18bfd97..01b6d31d2a4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2971.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2971.md @@ -10,8 +10,12 @@ ms.assetid: fdb5467b-9a41-41ef-ac20-2e9428d5a4fc > 'class' : template parameter 'param' : 'arg' : a local variable cannot be used as a non-type argument +## Remarks + You cannot use the name or address of a local variable as a template argument. +## Example + The following sample generates C2971: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2973.md b/docs/error-messages/compiler-errors-2/compiler-error-c2973.md index 806e4ccc9a0..4f1a1d9e9f2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2973.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2973.md @@ -10,4 +10,6 @@ ms.assetid: 18b4a1c1-0ef6-43af-887a-1b5b1ab88d5b > invalid template argument 'number' +## Remarks + Check the template definition to find the correct types. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2974.md b/docs/error-messages/compiler-errors-2/compiler-error-c2974.md index 2034afee18a..6d30a4ced44 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2974.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2974.md @@ -10,8 +10,12 @@ ms.assetid: 1b444260-f2bf-48d7-ab1e-35573d8c4a0e > invalid type argument 'number', type expected +## Remarks + The generic or template argument does not match the generic or template declaration. A type should appear within the angle brackets. Check the generic or template definition to find the correct types. +## Examples + The following sample generates C2974: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2975.md b/docs/error-messages/compiler-errors-2/compiler-error-c2975.md index 5e91d46fa5c..e88bcc7d0c9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2975.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2975.md @@ -10,9 +10,11 @@ ms.assetid: 526f6b9d-6c76-4c12-9252-1b1d7c1e06c7 > '*argument*' : invalid template argument for '*type*', expected compile-time constant expression +## Remarks + The template argument does not match the template declaration; a constant expression should appear within the angle brackets. Variables are not allowed as template actual arguments. Check the template definition to find the correct types. -## Example +## Examples The following sample generates C2975 and also shows correct usage: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2976.md b/docs/error-messages/compiler-errors-2/compiler-error-c2976.md index ec6851055f8..a1009459956 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2976.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2976.md @@ -10,10 +10,14 @@ ms.assetid: d9bf9836-325e-4f72-a7e3-a67cf19d32e7 > 'identifier' : too few type arguments +## Remarks + A generic or template is missing one or more actual arguments. Check the generic or template declaration to find the correct number of parameters. This error can be caused by missing template arguments in C++ Standard Library components. +## Examples + The following sample generates C2976: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2977.md b/docs/error-messages/compiler-errors-2/compiler-error-c2977.md index bacb489f8e8..6351cd87ab8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2977.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2977.md @@ -10,8 +10,12 @@ ms.assetid: 3c4218e0-5d03-4a2b-b757-c507c35f3542 > 'identifier' : too many type arguments +## Remarks + A generic or template has too many actual arguments. Check the generic or template declaration to find the correct number of parameters. +## Examples + The following sample generates C2977: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2978.md b/docs/error-messages/compiler-errors-2/compiler-error-c2978.md index 55df64fa587..7ad37f4c11d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2978.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2978.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C2978"] > syntax error : expected 'keyword1' or 'keyword2'; found type 'keyword3'; non-type parameters are not supported in generics +## Remarks + A generic class was declared incorrectly. See [Generics](../../extensions/generics-cpp-component-extensions.md) for more information. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2979.md b/docs/error-messages/compiler-errors-2/compiler-error-c2979.md index 2fb474dd6fc..0acf0cb9a1f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2979.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2979.md @@ -10,6 +10,8 @@ ms.assetid: 98bd9043-ec44-451e-a482-3a8e35fc7464 > explicit specializations are not supported in generics +## Remarks + A generic class was declared incorrectly. See [Generics](../../extensions/generics-cpp-component-extensions.md) for more information. ## Example From efa6ffe69d0fae54aeb7226df09cc52bca431d89 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 11 Aug 2025 23:39:28 +0800 Subject: [PATCH 1338/2255] Replace term "sample" with "example" for error references in range [C2941, C2980] --- docs/error-messages/compiler-errors-2/compiler-error-c2942.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2943.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2944.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2946.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2947.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2951.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2952.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2953.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2955.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2957.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2959.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2969.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2970.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2971.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2974.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2975.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2976.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2977.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2978.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2979.md | 2 +- 20 files changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2942.md b/docs/error-messages/compiler-errors-2/compiler-error-c2942.md index a300558b8af..7637fb69626 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2942.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2942.md @@ -18,7 +18,7 @@ This error is obsolete in Visual Studio 2022 and later versions. ## Examples -The following sample generates C2942: +The following example generates C2942: ```cpp // C2942.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2943.md b/docs/error-messages/compiler-errors-2/compiler-error-c2943.md index 0f91de379a5..dfff0b2c30a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2943.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2943.md @@ -18,7 +18,7 @@ This error is obsolete in Visual Studio 2022 and later versions. ## Example -The following sample generates C2943: +The following example generates C2943: ```cpp // C2943.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2944.md b/docs/error-messages/compiler-errors-2/compiler-error-c2944.md index 178cb0300e7..3b58aecf56a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2944.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2944.md @@ -18,7 +18,7 @@ This error is obsolete in Visual Studio 2022 and later versions. ## Examples -The following sample generates C2944: +The following example generates C2944: ```cpp // C2944.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2946.md b/docs/error-messages/compiler-errors-2/compiler-error-c2946.md index 15c453bca86..cd593c8c11f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2946.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2946.md @@ -16,7 +16,7 @@ You cannot explicitly instantiate a nontemplated class. ## Example -The following sample generates C2946. +The following example generates C2946. ```cpp // C2946.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2947.md b/docs/error-messages/compiler-errors-2/compiler-error-c2947.md index 1b37343eafc..97b76df03ed 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2947.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2947.md @@ -18,7 +18,7 @@ C2947 can also be generated by syntax errors. ## Example -The following sample generates C2947: +The following example generates C2947: ```cpp // C2947.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2951.md b/docs/error-messages/compiler-errors-2/compiler-error-c2951.md index a6094c0acd9..92f5aab3032 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2951.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2951.md @@ -16,7 +16,7 @@ You cannot declare a generic or template class outside global or namespace scope ## Examples -The following sample generates C2951: +The following example generates C2951: ```cpp // C2951.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2952.md b/docs/error-messages/compiler-errors-2/compiler-error-c2952.md index ce6a47e58b9..2ac4f5650cc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2952.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2952.md @@ -16,7 +16,7 @@ A template declaration was ill formed. ## Examples -The following sample generates C2952: +The following example generates C2952: ```cpp // C2952.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2953.md b/docs/error-messages/compiler-errors-2/compiler-error-c2953.md index b125625cbb5..c05a495facd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2953.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2953.md @@ -16,7 +16,7 @@ Check the source file and include files for other definitions. ## Example -The following sample generates C2953: +The following example generates C2953: ```cpp // C2953.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2955.md b/docs/error-messages/compiler-errors-2/compiler-error-c2955.md index 3ee78a6400c..9a43cfb8531 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2955.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2955.md @@ -18,7 +18,7 @@ For more information, see [Class Templates](../../cpp/class-templates.md). ## Examples -The following sample generates C2955 and shows how to fix it: +The following example generates C2955 and shows how to fix it: ```cpp // C2955.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2957.md b/docs/error-messages/compiler-errors-2/compiler-error-c2957.md index 2978f883730..ca9e2e38db9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2957.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2957.md @@ -16,7 +16,7 @@ A generic class was ill formed. ## Example -The following sample generates C2957: +The following example generates C2957: ```cpp // C2957.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2959.md b/docs/error-messages/compiler-errors-2/compiler-error-c2959.md index 6b32f772624..25db02eeae6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2959.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2959.md @@ -16,7 +16,7 @@ For more information, see [Windows Runtime and Managed Templates](../../extensio ## Example -The following sample generates C2959. +The following example generates C2959. ```cpp // C2959.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2969.md b/docs/error-messages/compiler-errors-2/compiler-error-c2969.md index 599ff99228c..0b0700d1492 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2969.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2969.md @@ -16,7 +16,7 @@ A template member function definition has an unmatched closing brace. ## Example -The following sample generates C2969: +The following example generates C2969: ```cpp // C2969.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2970.md b/docs/error-messages/compiler-errors-2/compiler-error-c2970.md index 4384e207deb..ec49df394e6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2970.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2970.md @@ -16,7 +16,7 @@ You cannot use the name or address of a static variable as a template argument. ## Example -The following sample generates C2970: +The following example generates C2970: ```cpp // C2970.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2971.md b/docs/error-messages/compiler-errors-2/compiler-error-c2971.md index 01b6d31d2a4..ef6fdc52e2a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2971.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2971.md @@ -16,7 +16,7 @@ You cannot use the name or address of a local variable as a template argument. ## Example -The following sample generates C2971: +The following example generates C2971: ```cpp // C2971.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2974.md b/docs/error-messages/compiler-errors-2/compiler-error-c2974.md index 6d30a4ced44..63cbb1a65c5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2974.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2974.md @@ -16,7 +16,7 @@ The generic or template argument does not match the generic or template declarat ## Examples -The following sample generates C2974: +The following example generates C2974: ```cpp // C2974.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2975.md b/docs/error-messages/compiler-errors-2/compiler-error-c2975.md index e88bcc7d0c9..021cf829d09 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2975.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2975.md @@ -16,7 +16,7 @@ The template argument does not match the template declaration; a constant expres ## Examples -The following sample generates C2975 and also shows correct usage: +The following example generates C2975 and also shows correct usage: ```cpp // C2975.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2976.md b/docs/error-messages/compiler-errors-2/compiler-error-c2976.md index a1009459956..ce5e294b1ce 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2976.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2976.md @@ -18,7 +18,7 @@ This error can be caused by missing template arguments in C++ Standard Library c ## Examples -The following sample generates C2976: +The following example generates C2976: ```cpp // C2976.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2977.md b/docs/error-messages/compiler-errors-2/compiler-error-c2977.md index 6351cd87ab8..810d28566d8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2977.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2977.md @@ -16,7 +16,7 @@ A generic or template has too many actual arguments. Check the generic or templa ## Examples -The following sample generates C2977: +The following example generates C2977: ```cpp // C2977.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2978.md b/docs/error-messages/compiler-errors-2/compiler-error-c2978.md index 7ad37f4c11d..d9bee87b88d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2978.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2978.md @@ -15,7 +15,7 @@ A generic class was declared incorrectly. See [Generics](../../extensions/generi ## Example -The following sample generates C2978. +The following example generates C2978. ```cpp // C2978.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2979.md b/docs/error-messages/compiler-errors-2/compiler-error-c2979.md index 0acf0cb9a1f..74ae7d58b1b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2979.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2979.md @@ -16,7 +16,7 @@ A generic class was declared incorrectly. See [Generics](../../extensions/gener ## Example -The following sample generates C2979. +The following example generates C2979. ```cpp // C2979.cpp From dfc2f0766d0a921c0b0262f5c50bc9cb29b05e94 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 11 Aug 2025 23:43:23 +0800 Subject: [PATCH 1339/2255] Update metadata for error references in range [C2941, C2980] --- .../error-messages/compiler-errors-2/compiler-error-c2941.md | 3 +-- .../error-messages/compiler-errors-2/compiler-error-c2942.md | 3 +-- .../error-messages/compiler-errors-2/compiler-error-c2943.md | 3 +-- .../error-messages/compiler-errors-2/compiler-error-c2944.md | 3 +-- .../error-messages/compiler-errors-2/compiler-error-c2945.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2946.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2947.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2948.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2951.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2952.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2953.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2955.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2956.md | 2 +- .../error-messages/compiler-errors-2/compiler-error-c2957.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2958.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2959.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2962.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2969.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2970.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2971.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2973.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2974.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2975.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2976.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2977.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2979.md | 5 ++--- 26 files changed, 47 insertions(+), 72 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2941.md b/docs/error-messages/compiler-errors-2/compiler-error-c2941.md index 48c997bc082..4d14d929168 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2941.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2941.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2941" title: "Compiler Error C2941" +description: "Learn more about: Compiler Error C2941" ms.date: 06/01/2022 f1_keywords: ["C2941"] helpviewer_keywords: ["C2941"] -ms.assetid: 1bba94eb-5bf6-468d-8f84-96a6391a7048 --- # Compiler Error C2941 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2942.md b/docs/error-messages/compiler-errors-2/compiler-error-c2942.md index 7637fb69626..f806be05068 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2942.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2942.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2942" title: "Compiler Error C2942" +description: "Learn more about: Compiler Error C2942" ms.date: 06/01/2022 f1_keywords: ["C2942"] helpviewer_keywords: ["C2942"] -ms.assetid: 13abf744-8fa1-450d-886d-e5717c04956e --- # Compiler Error C2942 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2943.md b/docs/error-messages/compiler-errors-2/compiler-error-c2943.md index dfff0b2c30a..d2ede6f3564 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2943.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2943.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2943" title: "Compiler Error C2943" +description: "Learn more about: Compiler Error C2943" ms.date: 06/01/2022 f1_keywords: ["C2943"] helpviewer_keywords: ["C2943"] -ms.assetid: ede6565e-d892-44c0-8eee-c69545f3be2e --- # Compiler Error C2943 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2944.md b/docs/error-messages/compiler-errors-2/compiler-error-c2944.md index 3b58aecf56a..4c2a3a33869 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2944.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2944.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2944" title: "Compiler Error C2944" +description: "Learn more about: Compiler Error C2944" ms.date: 06/01/2022 f1_keywords: ["C2944"] helpviewer_keywords: ["C2944"] -ms.assetid: f209e668-e72f-442a-a438-8c4ff43a404a --- # Compiler Error C2944 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2945.md b/docs/error-messages/compiler-errors-2/compiler-error-c2945.md index ec81b20ef13..9674071222b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2945.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2945.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2945" title: "Compiler Error C2945" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2945" +ms.date: 11/04/2016 f1_keywords: ["C2945"] helpviewer_keywords: ["C2945"] -ms.assetid: be640257-7017-45d1-986a-9fe8caab52f3 --- # Compiler Error C2945 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2946.md b/docs/error-messages/compiler-errors-2/compiler-error-c2946.md index cd593c8c11f..01b72d1aeb9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2946.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2946.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2946" title: "Compiler Error C2946" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2946" +ms.date: 11/04/2016 f1_keywords: ["C2946"] helpviewer_keywords: ["C2946"] -ms.assetid: c86dfbfc-7702-4f09-8a53-d205710e99c2 --- # Compiler Error C2946 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2947.md b/docs/error-messages/compiler-errors-2/compiler-error-c2947.md index 97b76df03ed..ef70b5db307 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2947.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2947.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2947" title: "Compiler Error C2947" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2947" +ms.date: 11/04/2016 f1_keywords: ["C2947"] helpviewer_keywords: ["C2947"] -ms.assetid: 6c056f62-ec90-4883-8a67-aeeb6ec13546 --- # Compiler Error C2947 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2948.md b/docs/error-messages/compiler-errors-2/compiler-error-c2948.md index 6fc41cdf2b8..18dda3d7874 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2948.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2948.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2948" title: "Compiler Error C2948" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2948" +ms.date: 11/04/2016 f1_keywords: ["C2948"] helpviewer_keywords: ["C2948"] -ms.assetid: 780c6ed3-43a0-4112-8d00-b7bf79086c05 --- # Compiler Error C2948 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2951.md b/docs/error-messages/compiler-errors-2/compiler-error-c2951.md index 92f5aab3032..993bf2811b4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2951.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2951.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2951" title: "Compiler Error C2951" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2951" +ms.date: 11/04/2016 f1_keywords: ["C2951"] helpviewer_keywords: ["C2951"] -ms.assetid: c6f95aa2-c894-425b-a51c-d40d70c8daa1 --- # Compiler Error C2951 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2952.md b/docs/error-messages/compiler-errors-2/compiler-error-c2952.md index 2ac4f5650cc..59b2ce3c7f4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2952.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2952.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2952" title: "Compiler Error C2952" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2952" +ms.date: 11/04/2016 f1_keywords: ["C2952"] helpviewer_keywords: ["C2952"] -ms.assetid: a40e18a2-d02c-4511-854f-6c6fd6789a1a --- # Compiler Error C2952 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2953.md b/docs/error-messages/compiler-errors-2/compiler-error-c2953.md index c05a495facd..a9f3ae8178a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2953.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2953.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2953" title: "Compiler Error C2953" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2953" +ms.date: 11/04/2016 f1_keywords: ["C2953"] helpviewer_keywords: ["C2953"] -ms.assetid: 8dbcfa24-8296-4e40-bdc4-5526c07d8892 --- # Compiler Error C2953 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2955.md b/docs/error-messages/compiler-errors-2/compiler-error-c2955.md index 9a43cfb8531..93996879010 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2955.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2955.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2955" title: "Compiler Error C2955" -ms.date: "03/28/2017" +description: "Learn more about: Compiler Error C2955" +ms.date: 03/28/2017 f1_keywords: ["C2955"] helpviewer_keywords: ["C2955"] -ms.assetid: 77709fb6-d69b-46fd-a62f-e8564563d01b --- # Compiler Error C2955 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2956.md b/docs/error-messages/compiler-errors-2/compiler-error-c2956.md index c47796370f3..e9701d87421 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2956.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2956.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler Error C2956" title: "Compiler Error C2956" +description: "Learn more about: Compiler Error C2956" ms.date: 04/05/2022 f1_keywords: ["C2956"] helpviewer_keywords: ["C2956"] diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2957.md b/docs/error-messages/compiler-errors-2/compiler-error-c2957.md index ca9e2e38db9..2c1e921c6a3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2957.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2957.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2957" title: "Compiler Error C2957" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2957" +ms.date: 11/04/2016 f1_keywords: ["C2957"] helpviewer_keywords: ["C2957"] -ms.assetid: 9cb4526f-4af8-47e9-b786-56192627ca72 --- # Compiler Error C2957 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2958.md b/docs/error-messages/compiler-errors-2/compiler-error-c2958.md index d8a0645ad07..341ff3c1dd6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2958.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2958.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2958" title: "Compiler Error C2958" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2958" +ms.date: 11/04/2016 f1_keywords: ["C2958"] helpviewer_keywords: ["C2958"] -ms.assetid: 332bf6d3-7cd1-4b1a-8ddb-d4a8cbf01115 --- # Compiler Error C2958 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2959.md b/docs/error-messages/compiler-errors-2/compiler-error-c2959.md index 25db02eeae6..af70755a70c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2959.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2959.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2959" title: "Compiler Error C2959" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2959" +ms.date: 11/04/2016 f1_keywords: ["C2959"] helpviewer_keywords: ["C2959"] -ms.assetid: d66bb2a8-70c3-4209-a358-b0c47f111a50 --- # Compiler Error C2959 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2962.md b/docs/error-messages/compiler-errors-2/compiler-error-c2962.md index 3636f1fcd50..87f5149e549 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2962.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2962.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2962" title: "Compiler Error C2962" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2962" +ms.date: 11/04/2016 f1_keywords: ["C2962"] helpviewer_keywords: ["C2962"] -ms.assetid: 6f966aec-4eea-4221-8e1b-fe66808c6f5c --- # Compiler Error C2962 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2969.md b/docs/error-messages/compiler-errors-2/compiler-error-c2969.md index 0b0700d1492..76d07d11952 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2969.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2969.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2969" title: "Compiler Error C2969" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2969" +ms.date: 11/04/2016 f1_keywords: ["C2969"] helpviewer_keywords: ["C2969"] -ms.assetid: e4ea3d66-b937-4b2c-b42a-96e03fb11579 --- # Compiler Error C2969 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2970.md b/docs/error-messages/compiler-errors-2/compiler-error-c2970.md index ec49df394e6..f92b1c41441 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2970.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2970.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2970" title: "Compiler Error C2970" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2970" +ms.date: 11/04/2016 f1_keywords: ["C2970"] helpviewer_keywords: ["C2970"] -ms.assetid: 21d90348-20d3-438c-b278-efdbfb93a7d2 --- # Compiler Error C2970 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2971.md b/docs/error-messages/compiler-errors-2/compiler-error-c2971.md index ef6fdc52e2a..667d494be2d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2971.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2971.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2971" title: "Compiler Error C2971" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2971" +ms.date: 11/04/2016 f1_keywords: ["C2971"] helpviewer_keywords: ["C2971"] -ms.assetid: fdb5467b-9a41-41ef-ac20-2e9428d5a4fc --- # Compiler Error C2971 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2973.md b/docs/error-messages/compiler-errors-2/compiler-error-c2973.md index 4f1a1d9e9f2..79b7b4ab806 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2973.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2973.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2973" title: "Compiler Error C2973" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2973" +ms.date: 11/04/2016 f1_keywords: ["C2973"] helpviewer_keywords: ["C2973"] -ms.assetid: 18b4a1c1-0ef6-43af-887a-1b5b1ab88d5b --- # Compiler Error C2973 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2974.md b/docs/error-messages/compiler-errors-2/compiler-error-c2974.md index 63cbb1a65c5..1ae52a62674 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2974.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2974.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2974" title: "Compiler Error C2974" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2974" +ms.date: 11/04/2016 f1_keywords: ["C2974"] helpviewer_keywords: ["C2974"] -ms.assetid: 1b444260-f2bf-48d7-ab1e-35573d8c4a0e --- # Compiler Error C2974 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2975.md b/docs/error-messages/compiler-errors-2/compiler-error-c2975.md index 021cf829d09..e9254cb923f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2975.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2975.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2975" title: "Compiler Error C2975" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2975" +ms.date: 11/04/2016 f1_keywords: ["C2975"] helpviewer_keywords: ["C2975"] -ms.assetid: 526f6b9d-6c76-4c12-9252-1b1d7c1e06c7 --- # Compiler Error C2975 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2976.md b/docs/error-messages/compiler-errors-2/compiler-error-c2976.md index ce5e294b1ce..d9b7e0953b0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2976.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2976.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2976" title: "Compiler Error C2976" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2976" +ms.date: 11/04/2016 f1_keywords: ["C2976"] helpviewer_keywords: ["C2976"] -ms.assetid: d9bf9836-325e-4f72-a7e3-a67cf19d32e7 --- # Compiler Error C2976 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2977.md b/docs/error-messages/compiler-errors-2/compiler-error-c2977.md index 810d28566d8..302846e67d7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2977.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2977.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2977" title: "Compiler Error C2977" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2977" +ms.date: 11/04/2016 f1_keywords: ["C2977"] helpviewer_keywords: ["C2977"] -ms.assetid: 3c4218e0-5d03-4a2b-b757-c507c35f3542 --- # Compiler Error C2977 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2979.md b/docs/error-messages/compiler-errors-2/compiler-error-c2979.md index 74ae7d58b1b..691bd16a70c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2979.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2979.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2979" title: "Compiler Error C2979" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2979" +ms.date: 11/04/2016 f1_keywords: ["C2979"] helpviewer_keywords: ["C2979"] -ms.assetid: 98bd9043-ec44-451e-a482-3a8e35fc7464 --- # Compiler Error C2979 From 032a5857b592eebbb832b12f77bbde2ed00dc02a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 11 Aug 2025 23:46:56 +0800 Subject: [PATCH 1340/2255] Revert extraneous "Remarks" heading added in C2956 error reference --- docs/error-messages/compiler-errors-2/compiler-error-c2956.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2956.md b/docs/error-messages/compiler-errors-2/compiler-error-c2956.md index e9701d87421..77f9fee4e42 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2956.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2956.md @@ -13,8 +13,6 @@ helpviewer_keywords: ["C2956"] The deallocation function found for the placement new expression matches one of the usual deallocation functions. Either an implicit compiler-generated deallocation or an explicit `delete` (or `delete[]`) would use the wrong deallocation function. -## Remarks - Error C2956 indicates you used a *placement new expression* (a `new` expression that takes parameters) in a way that can cause a memory leak or runtime crash. It usually means the resulting value can't be deleted in a typical way. That is, either an explicit `delete` (or `delete[]`) expression in your code, or the implicit deallocation when a constructor throws an exception, could invoke the wrong `operator delete` or supply it with the wrong parameters. The C++ standard specifies *usual deallocation functions* as overloads of `operator delete` or `operator delete[]` that take extra parameters of type `std::size_t` (C++14 or later), `std::align_val_t` (C++17 or later), and `std::destroying_delete_t` (C++20 or later). When you use a placement new expression, the compiler looks for a matching `operator delete` function that takes the same parameters (after the first one). If one is found and its signature matches a usual deallocation function, the compiler reports error C2956. From 09f465101094373a1eaa8f9295557ac480dba3f6 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 12 Aug 2025 00:40:21 +0800 Subject: [PATCH 1341/2255] Merge and condense `mutable` remarks in C2178 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2178.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2178.md b/docs/error-messages/compiler-errors-1/compiler-error-c2178.md index ce0dfb543fd..37211d190e3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2178.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2178.md @@ -11,9 +11,7 @@ helpviewer_keywords: ["C2178"] ## Remarks -A **`mutable`** specifier was used in a declaration, but the specifier is not allowed in this context. - -The **`mutable`** specifier can be applied only to names of class data members, and cannot be applied to names declared **`const`** or **`static`**, and cannot be applied to reference members. +A **`mutable`** specifier was used in a declaration, but the specifier is not allowed in this context. It can only be applied to non-static, non-const, and non-reference data members. For more information, see [Mutable Data Members](../../cpp/mutable-data-members-cpp.md). ## Example From db8eef149c6aa4e5397173c6e2d880a160b54442 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 12 Aug 2025 00:53:41 +0800 Subject: [PATCH 1342/2255] Improve `mutable` example in C2178 error reference --- .../compiler-errors-1/compiler-error-c2178.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2178.md b/docs/error-messages/compiler-errors-1/compiler-error-c2178.md index 37211d190e3..71d88406979 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2178.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2178.md @@ -13,19 +13,18 @@ helpviewer_keywords: ["C2178"] A **`mutable`** specifier was used in a declaration, but the specifier is not allowed in this context. It can only be applied to non-static, non-const, and non-reference data members. For more information, see [Mutable Data Members](../../cpp/mutable-data-members-cpp.md). -## Example +## Example: `mutable` -The following example shows how C2178 may occur, and how to fix it. +The following example shows how C2178 may occur with the **`mutable`** specifier, and how to resolve it: ```cpp -// C2178.cpp -// compile with: cl /c /W4 C2178.cpp +// C2178_mutable.cpp +// compile with: /c -class S { - mutable const int i; // C2178 - // To fix, declare either const or mutable, not both. +struct S +{ + mutable const int i; // C2178, remove mutable or const to resolve }; -mutable int x = 4; // C2178 -// To fix, remove mutable keyword +mutable int x = 4; // C2178, remove mutable to resolve ``` From 69de9153bb8df413df1f65d828ddcbd9aa6c9700 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 12 Aug 2025 01:09:08 +0800 Subject: [PATCH 1343/2255] Add remarks on `consteval` in C2178 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2178.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2178.md b/docs/error-messages/compiler-errors-1/compiler-error-c2178.md index 71d88406979..c3c17849f14 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2178.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2178.md @@ -13,6 +13,8 @@ helpviewer_keywords: ["C2178"] A **`mutable`** specifier was used in a declaration, but the specifier is not allowed in this context. It can only be applied to non-static, non-const, and non-reference data members. For more information, see [Mutable Data Members](../../cpp/mutable-data-members-cpp.md). +A **`consteval`** specifier was used on a [destructor](../../cpp/destructors-cpp.md), allocation function, or deallocation function. + ## Example: `mutable` The following example shows how C2178 may occur with the **`mutable`** specifier, and how to resolve it: From c2143792f68dcee1ec82cc9d218a523e80818cbe Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 12 Aug 2025 01:15:28 +0800 Subject: [PATCH 1344/2255] Add `consteval` example in C2178 error reference --- .../compiler-errors-1/compiler-error-c2178.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2178.md b/docs/error-messages/compiler-errors-1/compiler-error-c2178.md index c3c17849f14..4482c040175 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2178.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2178.md @@ -30,3 +30,22 @@ struct S mutable int x = 4; // C2178, remove mutable to resolve ``` + +## Example: `consteval` + +The following example shows how C2178 may occur with the **`consteval`** specifier. To resolve this error, remove all **`consteval`** specifiers: + +```cpp +// C2178_consteval.cpp +// compile with: /c /std:c++20 + +#include + +struct S +{ + consteval ~S() {} // C2178 + + consteval static void* operator new(std::size_t size); // C2178 + consteval static void operator delete(void* ptr); // C2178 +}; +``` From 7f4c5e6438ed1ee764792713d171d8fc0851cbbe Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 12 Aug 2025 01:16:43 +0800 Subject: [PATCH 1345/2255] Update `ms.date` metadata in C2178 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2178.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2178.md b/docs/error-messages/compiler-errors-1/compiler-error-c2178.md index 4482c040175..4c93e6c79d6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2178.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2178.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C2178" description: "Learn more about: Compiler Error C2178" -ms.date: 05/08/2017 +ms.date: 08/11/2025 f1_keywords: ["C2178"] helpviewer_keywords: ["C2178"] --- From 4b5730b2792d9bfb14c333ff4ecb3f9a09af2334 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Mon, 11 Aug 2025 14:56:00 -0700 Subject: [PATCH 1346/2255] Write original description for check_malloc_usable_size --- docs/sanitizers/asan-flags.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index bce5940efb0..49155fe28b7 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -22,7 +22,7 @@ If you discover options that are inaccurately documented, we invite you to [repo |`allow_user_poisoning` | `true` | If `true`, you may manually mark memory regions as poisoned or unpoisoned.| |`atexit` | `false` | If `true`, prints ASan exit stats even after program terminates successfully.| |`check_initialization_order` | `false` | If `true`, attempts to catch initialization order issues.| -|`check_malloc_usable_size` | `true` | Allows the users to work around the bug in Nvidia drivers prior to `295.*`.| +|`check_malloc_usable_size` | `true` | If `true`, reports an error when the pointer does not reference a valid, currently allocated block.| |`check_printf` | `true` | If `true`, enables ASan to validate printf family function arguments for memory safety violations.| |`continue_on_error` | `0` | Allows an application to continue running while reporting unique memory safety errors. `0` - disabled, `1` - `stderr(1)`, `2` - `stderr(2)`. See [continue_on_error](asan-continue-on-error.md).| |`coverage` | `false` | If `true` and the coverage instrumentation was enabled at compile time, coverage information will be dumped at program shutdown.| From b155f114e5d8f87ba1e65cb6e5eca89a44f23e2e Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Mon, 11 Aug 2025 14:56:43 -0700 Subject: [PATCH 1347/2255] Update windows flags --- docs/sanitizers/asan-flags.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 49155fe28b7..c4729fa84bb 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -24,7 +24,7 @@ If you discover options that are inaccurately documented, we invite you to [repo |`check_initialization_order` | `false` | If `true`, attempts to catch initialization order issues.| |`check_malloc_usable_size` | `true` | If `true`, reports an error when the pointer does not reference a valid, currently allocated block.| |`check_printf` | `true` | If `true`, enables ASan to validate printf family function arguments for memory safety violations.| -|`continue_on_error` | `0` | Allows an application to continue running while reporting unique memory safety errors. `0` - disabled, `1` - `stderr(1)`, `2` - `stderr(2)`. See [continue_on_error](asan-continue-on-error.md).| +|`continue_on_error` | `0` | Allows an application to continue running while reporting unique memory safety errors. `0` - disabled, `1` - output to `stdout`, `2` - output to `stderr`. See [continue_on_error](asan-continue-on-error.md).| |`coverage` | `false` | If `true` and the coverage instrumentation was enabled at compile time, coverage information will be dumped at program shutdown.| |`coverage_bitset` | `false` | If `true`, the coverage information will also be dumped as a bitset to a separate file.| |`coverage_counters` | `false` | If `true`, the bitmap that corresponds to coverage counters will be dumped.| @@ -45,12 +45,13 @@ If you discover options that are inaccurately documented, we invite you to [repo |`fast_unwind_on_fatal` | `false` | If available, the tool uses the fast frame-pointer-based unwinder on fatal errors.| |`fast_unwind_on_malloc` | `true` | If available, the tool uses the fast frame-pointer-based unwinder on `malloc`/`free`.| |`full_address_space` | `false` | Sanitize complete address space; by default kernel area on 32-bit platforms will not be sanitized.| -|`halt_on_error` | `true` | Exit/abort the program after printing the first error report (May cause undefined behavior).| +|`halt_on_error` | `true` | Exit/abort the program after printing the first error report (May cause undefined behavior, use `continue_on_error` for full support).| |`handle_segv` | `true` | `false` - ASan will not handle `SEGV` errors, `true` - ASan handles `SEGV` errors.| |`handle_sigfpe` | `true` | `false` - ASan will not handle `SIGFPE` errors, `true` - ASan will handle `SIGFPE` errors.| |`handle_sigill` | `true` | `false` - ASan will not handle `SIGILL` errors, `true` - ASan will handle `SIGILL` errors.| |`help` | `false` | If `true`, ASan prints the flag options to console.| |`html_cov_report` | `false` | If `true`, ASan generates a coverage report.| +|`iat_overwrite`|`error`|`error` - report an error whenever an overwrite is detected, `protect` - attempt to avoid using the overwritten definition, `ignore` - never attempt to correct any overwritten functions. See [iat_overwrite](./asan-runtime.md#msvc-specific-addresssanitizer-runtime-options).| |`include` | `""` | Read more options from the given file.| |`include_if_exists` | `""` | Read more options from the given file (if it exists).| |`intercept_memcmp` | `true` | If `true`, uses custom wrappers for memcmp function to find more errors.| @@ -100,6 +101,8 @@ If you discover options that are inaccurately documented, we invite you to [repo |`use_madv_dontdump` | `true` | If `true`, instructs kernel to not store shadow in core file.| |`use_odr_indicator` | `false` | If `true`, emit odr violations.| |`verbosity` | `0` | Verbosity level: `0` - default, `1` - more, `2+` - even more output.| +|`windows_fast_fail_on_error`|`false`|If `true`, enable the process to terminate with a `__fastfail(71)` after printing the error report. See [windows_fast_fail_on_error](./asan-runtime.md#msvc-specific-addresssanitizer-runtime-options).| +|`windows_hook_legacy_allocators`|`true`|If `true`, enable hooking of (`Global`/`Local`)(`Alloc`/`Free`/`Size`/`ReAlloc`/`Lock`/`Unlock`) functions.| ## See also From b2c6db0db28a93ca07bb3ea08a2943de24f547a9 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Mon, 11 Aug 2025 16:24:00 -0700 Subject: [PATCH 1348/2255] Remove flags with no codepath --- docs/sanitizers/asan-flags.md | 8 -------- 1 file changed, 8 deletions(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index c4729fa84bb..fe467452831 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -26,13 +26,6 @@ If you discover options that are inaccurately documented, we invite you to [repo |`check_printf` | `true` | If `true`, enables ASan to validate printf family function arguments for memory safety violations.| |`continue_on_error` | `0` | Allows an application to continue running while reporting unique memory safety errors. `0` - disabled, `1` - output to `stdout`, `2` - output to `stderr`. See [continue_on_error](asan-continue-on-error.md).| |`coverage` | `false` | If `true` and the coverage instrumentation was enabled at compile time, coverage information will be dumped at program shutdown.| -|`coverage_bitset` | `false` | If `true`, the coverage information will also be dumped as a bitset to a separate file.| -|`coverage_counters` | `false` | If `true`, the bitmap that corresponds to coverage counters will be dumped.| -|`coverage_dir` | `"."` | Target directory for coverage dumps. Defaults to the current directory.| -|`coverage_direct` | `false` | If `true`, coverage information will be dumped directly to a memory mapped file. This way data is not lost even if the process is suddenly killed.| -|`coverage_order_pcs` | `false` | If `true`, the PCs will be dumped in the order they've appeared during the execution.| -|`coverage_pcs` | `true` | If `true` the coverage information will be dumped as a set of PC offsets for every module.| -|`debug` | `false` | If `true`, prints some debugging information and does additional checks.| |`detect_container_overflow` | `true` | If `true`, honor the container overflow annotations. See [ContainerOverflow](./error-container-overflow.md).| |`detect_invalid_pointer_pairs` | `0` | If >`0`, the tool detects operations like <, <=, >, >=, and - on invalid pointer pairs, such as pointers that belong to different objects. Higher values increase detection effort.| |`detect_odr_violation` | `2` | If >=`2`, detect violation of One-Definition-Rule (ODR) violation; If `1`, detect ODR-violation only if the two variables have different sizes.| @@ -99,7 +92,6 @@ If you discover options that are inaccurately documented, we invite you to [repo |`symbolize_vs_style` | `false` | Print file locations in Visual Studio style (e.g: file(10,42): ...).| |`unmap_shadow_on_exit` | `false` | If `true`, explicitly unmaps the shadow memory at exit.| |`use_madv_dontdump` | `true` | If `true`, instructs kernel to not store shadow in core file.| -|`use_odr_indicator` | `false` | If `true`, emit odr violations.| |`verbosity` | `0` | Verbosity level: `0` - default, `1` - more, `2+` - even more output.| |`windows_fast_fail_on_error`|`false`|If `true`, enable the process to terminate with a `__fastfail(71)` after printing the error report. See [windows_fast_fail_on_error](./asan-runtime.md#msvc-specific-addresssanitizer-runtime-options).| |`windows_hook_legacy_allocators`|`true`|If `true`, enable hooking of (`Global`/`Local`)(`Alloc`/`Free`/`Size`/`ReAlloc`/`Lock`/`Unlock`) functions.| From ba303de9efc865d238fb0c36e4f32b3c81621660 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Mon, 11 Aug 2025 16:24:19 -0700 Subject: [PATCH 1349/2255] Fix default value for detect_odr_violation --- docs/sanitizers/asan-flags.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index fe467452831..810386caa89 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -28,7 +28,7 @@ If you discover options that are inaccurately documented, we invite you to [repo |`coverage` | `false` | If `true` and the coverage instrumentation was enabled at compile time, coverage information will be dumped at program shutdown.| |`detect_container_overflow` | `true` | If `true`, honor the container overflow annotations. See [ContainerOverflow](./error-container-overflow.md).| |`detect_invalid_pointer_pairs` | `0` | If >`0`, the tool detects operations like <, <=, >, >=, and - on invalid pointer pairs, such as pointers that belong to different objects. Higher values increase detection effort.| -|`detect_odr_violation` | `2` | If >=`2`, detect violation of One-Definition-Rule (ODR) violation; If `1`, detect ODR-violation only if the two variables have different sizes.| +|`detect_odr_violation` | `0` | If >=`2`, detect violation of One-Definition-Rule (ODR) violation; If `1`, detect ODR-violation only if the two variables have different sizes.| |`detect_stack_use_after_return` | `false` | Enables `stack-use-after-return` checking at runtime. Requires `/fsanitize-address-use-after-return`. See [stack-use-after-return](./error-stack-use-after-return.md).| |`disable_coredump` | `true`/`false` (on non-64-bit systems) | Disables core dumping. By default, the tool sets `disable_coredump=1` on 64-bit systems to prevent dumping a 16T+ core file. The tool ignores this flag on operating systems that don't dump core by default and for sanitizers that don't reserve large amounts of virtual memory.| |`dump_instruction_bytes` | `false` | If `true`, dump 16 bytes starting at the instruction that caused `SEGV`.| From 1f985ca9d0663288a3cb1d2afe4c0f684178c4a5 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Mon, 11 Aug 2025 16:24:43 -0700 Subject: [PATCH 1350/2255] Add AddressSanitizer Runtime Options to TOC --- docs/sanitizers/toc.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/sanitizers/toc.yml b/docs/sanitizers/toc.yml index f46431207c9..b7f72923398 100644 --- a/docs/sanitizers/toc.yml +++ b/docs/sanitizers/toc.yml @@ -12,6 +12,10 @@ items: href: ../sanitizers/asan-building.md - name: "Runtime reference" href: ../sanitizers/asan-runtime.md + expanded: true + items: + - name: "AddressSanitizer runtime options" + href: ../sanitizers/asan-flags.md - name: "Debugger integration" href: ../sanitizers/asan-debugger-integration.md - name: "Shadow bytes" From 06bc0537fd1af5623a2deaceb80fce5b3be8ef64 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Mon, 11 Aug 2025 16:30:10 -0700 Subject: [PATCH 1351/2255] Removed coverage --- docs/sanitizers/asan-flags.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 810386caa89..6237688eb2d 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -25,7 +25,6 @@ If you discover options that are inaccurately documented, we invite you to [repo |`check_malloc_usable_size` | `true` | If `true`, reports an error when the pointer does not reference a valid, currently allocated block.| |`check_printf` | `true` | If `true`, enables ASan to validate printf family function arguments for memory safety violations.| |`continue_on_error` | `0` | Allows an application to continue running while reporting unique memory safety errors. `0` - disabled, `1` - output to `stdout`, `2` - output to `stderr`. See [continue_on_error](asan-continue-on-error.md).| -|`coverage` | `false` | If `true` and the coverage instrumentation was enabled at compile time, coverage information will be dumped at program shutdown.| |`detect_container_overflow` | `true` | If `true`, honor the container overflow annotations. See [ContainerOverflow](./error-container-overflow.md).| |`detect_invalid_pointer_pairs` | `0` | If >`0`, the tool detects operations like <, <=, >, >=, and - on invalid pointer pairs, such as pointers that belong to different objects. Higher values increase detection effort.| |`detect_odr_violation` | `0` | If >=`2`, detect violation of One-Definition-Rule (ODR) violation; If `1`, detect ODR-violation only if the two variables have different sizes.| From 628fdb214012b0fb1bfbf7dfac5ad49c8f829ecf Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Mon, 11 Aug 2025 16:34:28 -0700 Subject: [PATCH 1352/2255] Removed allow_addr2line --- docs/sanitizers/asan-flags.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 6237688eb2d..996a29b8de0 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -18,7 +18,6 @@ If you discover options that are inaccurately documented, we invite you to [repo |`allocator_frees_and_returns_null_on_realloc_zero` | `1` | 1 - realloc(p, 0) is equivalent to free(p). 0 - realloc(p, 0) will return a non-`NULL` value.| |`allocator_may_return_null` | `false` | If `true`, the allocator will return `nullptr` and fail when out of memory instead of crashing.| |`allocator_release_to_os_interval_ms` | `-1` | Experimental. 64-bit allocator only. Specify minimum time interval in ms between attempts to release memory.| -|`allow_addr2line` | `false` | If `true`, the tool uses the `addr2line` binary to symbolize stack traces when `llvm-symbolizer` is not available.| |`allow_user_poisoning` | `true` | If `true`, you may manually mark memory regions as poisoned or unpoisoned.| |`atexit` | `false` | If `true`, prints ASan exit stats even after program terminates successfully.| |`check_initialization_order` | `false` | If `true`, attempts to catch initialization order issues.| From 4e983bbcb54b537aebeb7ca8949655c1ce02f40e Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Mon, 11 Aug 2025 16:36:51 -0700 Subject: [PATCH 1353/2255] Fix TOC --- docs/sanitizers/toc.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/sanitizers/toc.yml b/docs/sanitizers/toc.yml index b7f72923398..b3c548bda9e 100644 --- a/docs/sanitizers/toc.yml +++ b/docs/sanitizers/toc.yml @@ -12,10 +12,8 @@ items: href: ../sanitizers/asan-building.md - name: "Runtime reference" href: ../sanitizers/asan-runtime.md - expanded: true - items: - - name: "AddressSanitizer runtime options" - href: ../sanitizers/asan-flags.md + - name: "AddressSanitizer runtime options" + href: ../sanitizers/asan-flags.md - name: "Debugger integration" href: ../sanitizers/asan-debugger-integration.md - name: "Shadow bytes" From bf56a02bd050decdc53e7d3fc97610632fc54614 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 12 Aug 2025 21:50:40 +0800 Subject: [PATCH 1354/2255] Add blockquotes for error messages in range [C2981, C3010] --- docs/error-messages/compiler-errors-2/compiler-error-c2988.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2989.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2990.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2991.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2992.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2993.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2994.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2995.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2996.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3001.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3002.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3003.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3004.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3005.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3006.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3007.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3008.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3009.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3010.md | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2988.md b/docs/error-messages/compiler-errors-2/compiler-error-c2988.md index a7abd23cc3a..61e31d4a76b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2988.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2988.md @@ -8,6 +8,6 @@ ms.assetid: c07ada8d-7cdf-4496-8656-cc3851e76b46 --- # Compiler Error C2988 -unrecognizable template declaration/definition +> unrecognizable template declaration/definition The template declaration does not parse correctly. Check delimiters. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2989.md b/docs/error-messages/compiler-errors-2/compiler-error-c2989.md index 7b6991ded17..893a711ef62 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2989.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2989.md @@ -8,7 +8,7 @@ ms.assetid: 936303d8-eb3b-4746-82ec-2f18020a6f64 --- # Compiler Error C2989 -'class' : class type has already been declared as a non-class type +> 'class' : class type has already been declared as a non-class type The class generic or template redefines a non-template or non-generic class. Check header files for conflicts. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2990.md b/docs/error-messages/compiler-errors-2/compiler-error-c2990.md index b0132230ba9..7064767974e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2990.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2990.md @@ -8,7 +8,7 @@ ms.assetid: 674e9f6a-6743-4af0-a7ed-cbe11103a2f8 --- # Compiler Error C2990 -'class' : non-class type as already been declared as a class type +> 'class' : non-class type as already been declared as a class type The non generic or template class redefines a generic or template class. Check header files for conflicts. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2991.md b/docs/error-messages/compiler-errors-2/compiler-error-c2991.md index 6a972a047e6..d15806a7b14 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2991.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2991.md @@ -8,7 +8,7 @@ ms.assetid: a87e4404-26e8-4927-b3ee-5d02b3b8bee1 --- # Compiler Error C2991 -redefinition of type parameter 'parameter' +> redefinition of type parameter 'parameter' There was a type conflict between two generic or template definitions of `parameter`. When defining multiple generic or template parameters, you must use equivalent types. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2992.md b/docs/error-messages/compiler-errors-2/compiler-error-c2992.md index 2220dec8212..f2ff5d79252 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2992.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2992.md @@ -8,7 +8,7 @@ ms.assetid: 01b16447-43fe-4e91-9a5a-af884a166a31 --- # Compiler Error C2992 -'class' : invalid or missing type parameter list +> 'class' : invalid or missing type parameter list The class is preceded by a **`template`** or **generic** keyword with missing or invalid parameters. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2993.md b/docs/error-messages/compiler-errors-2/compiler-error-c2993.md index 3588a205e10..3c25c04806a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2993.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2993.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2993"] --- # Compiler Error C2993 -'identifier' : illegal type for non-type template parameter 'parameter' +> 'identifier' : illegal type for non-type template parameter 'parameter' - Prior to C++20, you cannot declare a template with a structure, class, or union argument. Pointers can be used in place of these types as template parameters. - Since C++20, structure, class, or unions *can* be used as non-type template parameters. A non-type template parameter can't be a rvalue reference type or a parameter pack of rvalue types. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2994.md b/docs/error-messages/compiler-errors-2/compiler-error-c2994.md index 506170906f5..876e11fe68c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2994.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2994.md @@ -8,6 +8,6 @@ ms.assetid: b03570b5-e5fd-41d8-bdf1-dfadc2b1e116 --- # Compiler Error C2994 -unnamed class in template parameter list +> unnamed class in template parameter list You cannot use the **`class`** keyword as a template argument without specifying a class name. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2995.md b/docs/error-messages/compiler-errors-2/compiler-error-c2995.md index c720f6294c5..5021ac81359 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2995.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2995.md @@ -8,7 +8,7 @@ ms.assetid: a57cdfe0-b40b-4a67-a95c-1a49ace4842b --- # Compiler Error C2995 -'function' : function template has already been defined +> 'function' : function template has already been defined Make sure that there is only one definition for each member function of a templated class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2996.md b/docs/error-messages/compiler-errors-2/compiler-error-c2996.md index d21aa58ca7f..547ff605e42 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2996.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2996.md @@ -8,6 +8,6 @@ ms.assetid: f0ca9f8b-1751-4182-adab-1424f0c5e0c0 --- # Compiler Error C2996 -'function' : recursive function template definition +> 'function' : recursive function template definition A function definition attempts to instantiate its root templated class. Recursive template instantiations are not allowed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3001.md b/docs/error-messages/compiler-errors-2/compiler-error-c3001.md index 8839791989f..b7c74724815 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3001.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3001.md @@ -8,7 +8,7 @@ ms.assetid: d0e03478-1b44-47e5-8f5b-70415fa1f8bc --- # Compiler Error C3001 -'error_text' : expected an OpenMP directive name +> 'error_text' : expected an OpenMP directive name The `omp` pragma must be followed by a directive. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3002.md b/docs/error-messages/compiler-errors-2/compiler-error-c3002.md index 0bc4652dba0..a789c036487 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3002.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3002.md @@ -8,7 +8,7 @@ ms.assetid: 2d4241a7-c8eb-4d43-a128-dca255d137bc --- # Compiler Error C3002 -'name1 name2' : multiple OpenMP directive names +> 'name1 name2' : multiple OpenMP directive names Multiple directive names are not allowed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3003.md b/docs/error-messages/compiler-errors-2/compiler-error-c3003.md index 9bec4bf3c4a..c0be6722c0e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3003.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3003.md @@ -8,7 +8,7 @@ ms.assetid: 22e74f99-bb7f-4518-ab0d-934d5d49bcc7 --- # Compiler Error C3003 -'directive' : OpenMP directive name not allowed after directive clauses +> 'directive' : OpenMP directive name not allowed after directive clauses An OpenMP directive name cannot follow an OpenMP directive clause. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3004.md b/docs/error-messages/compiler-errors-2/compiler-error-c3004.md index 47e57c17a04..94561fc3aae 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3004.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3004.md @@ -8,7 +8,7 @@ ms.assetid: 819c2b57-8366-4ca7-9135-1f0c5e5b6bb6 --- # Compiler Error C3004 -'clause' : clause not valid on OpenMP 'directive' directive +> 'clause' : clause not valid on OpenMP 'directive' directive An OpenMP clause was used on a directive for which it is not enabled. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3005.md b/docs/error-messages/compiler-errors-2/compiler-error-c3005.md index 6548d72a0f2..489bb58fbfb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3005.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3005.md @@ -8,7 +8,7 @@ ms.assetid: 30bad565-e79f-4c3f-82cb-a74bd0baab8f --- # Compiler Error C3005 -'error_text' : unexpected token encountered on OpenMP 'directive' directive +> 'error_text' : unexpected token encountered on OpenMP 'directive' directive An OpenMP directive was ill formed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3006.md b/docs/error-messages/compiler-errors-2/compiler-error-c3006.md index 13bc64c5b49..788f1c039b1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3006.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3006.md @@ -8,7 +8,7 @@ ms.assetid: 449082ec-fd45-4c47-8ab3-ba6a719e4dc4 --- # Compiler Error C3006 -'clause' : clause on OpenMP 'directive' directive is missing an expected argument +> 'clause' : clause on OpenMP 'directive' directive is missing an expected argument An OpenMP directive did not have an expected argument. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3007.md b/docs/error-messages/compiler-errors-2/compiler-error-c3007.md index f4d9bd13b97..a860cb4c431 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3007.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3007.md @@ -8,7 +8,7 @@ ms.assetid: e415ef42-bdc9-4f32-8198-5e25b289a089 --- # Compiler Error C3007 -'arg' : clause on OpenMP 'directive' directive does not take an argument +> 'arg' : clause on OpenMP 'directive' directive does not take an argument An OpenMP directive had an argument, but the directive does not take an argument. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3008.md b/docs/error-messages/compiler-errors-2/compiler-error-c3008.md index 41bbfcc6010..96d25b1813e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3008.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3008.md @@ -8,7 +8,7 @@ ms.assetid: 04d93201-28e5-4be0-945c-aad616376f4b --- # Compiler Error C3008 -'arg' : argument is missing closing ')' on OpenMP 'directive' directive +> 'arg' : argument is missing closing ')' on OpenMP 'directive' directive An OpenMP directive that takes an argument did not have a closing parenthesis. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3009.md b/docs/error-messages/compiler-errors-2/compiler-error-c3009.md index 83fd8c99acc..0d84bcf690a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3009.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3009.md @@ -8,7 +8,7 @@ ms.assetid: aded5985-f5fd-4c3e-a157-16be55ec1313 --- # Compiler Error C3009 -'label' : jump into OpenMP structured block not allowed +> 'label' : jump into OpenMP structured block not allowed Code cannot jump into or out of an OpenMP block. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3010.md b/docs/error-messages/compiler-errors-2/compiler-error-c3010.md index dc715809c72..cc5e752fa1d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3010.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3010.md @@ -8,7 +8,7 @@ ms.assetid: e959d038-bba6-432a-9c0a-0470474de7d9 --- # Compiler Error C3010 -'label' : jump out of OpenMP structured block not allowed +> 'label' : jump out of OpenMP structured block not allowed Code cannot jump into or out of an OpenMP block. From 4e657a0d792ecc352137d556e6889eac91af5389 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 12 Aug 2025 21:55:50 +0800 Subject: [PATCH 1355/2255] Add "Remarks" and "Example" headings for error references in range [C2981, C3010] --- docs/error-messages/compiler-errors-2/compiler-error-c2988.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2989.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2990.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2991.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2992.md | 4 +++- docs/error-messages/compiler-errors-2/compiler-error-c2993.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2994.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c2995.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c2996.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3001.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3002.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3003.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3004.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3005.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3006.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3007.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3008.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3009.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3010.md | 4 ++++ 19 files changed, 69 insertions(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2988.md b/docs/error-messages/compiler-errors-2/compiler-error-c2988.md index 61e31d4a76b..6587264a0e1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2988.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2988.md @@ -10,4 +10,6 @@ ms.assetid: c07ada8d-7cdf-4496-8656-cc3851e76b46 > unrecognizable template declaration/definition +## Remarks + The template declaration does not parse correctly. Check delimiters. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2989.md b/docs/error-messages/compiler-errors-2/compiler-error-c2989.md index 893a711ef62..8e56b4345af 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2989.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2989.md @@ -10,8 +10,12 @@ ms.assetid: 936303d8-eb3b-4746-82ec-2f18020a6f64 > 'class' : class type has already been declared as a non-class type +## Remarks + The class generic or template redefines a non-template or non-generic class. Check header files for conflicts. +## Examples + The following sample generates C2989: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2990.md b/docs/error-messages/compiler-errors-2/compiler-error-c2990.md index 7064767974e..57cc884f8f9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2990.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2990.md @@ -10,8 +10,12 @@ ms.assetid: 674e9f6a-6743-4af0-a7ed-cbe11103a2f8 > 'class' : non-class type as already been declared as a class type +## Remarks + The non generic or template class redefines a generic or template class. Check header files for conflicts. +## Examples + The following sample generates C2990: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2991.md b/docs/error-messages/compiler-errors-2/compiler-error-c2991.md index d15806a7b14..34a450788d5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2991.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2991.md @@ -10,8 +10,12 @@ ms.assetid: a87e4404-26e8-4927-b3ee-5d02b3b8bee1 > redefinition of type parameter 'parameter' +## Remarks + There was a type conflict between two generic or template definitions of `parameter`. When defining multiple generic or template parameters, you must use equivalent types. +## Examples + The following sample generates C2991: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2992.md b/docs/error-messages/compiler-errors-2/compiler-error-c2992.md index f2ff5d79252..7e354443583 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2992.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2992.md @@ -10,9 +10,11 @@ ms.assetid: 01b16447-43fe-4e91-9a5a-af884a166a31 > 'class' : invalid or missing type parameter list +## Remarks + The class is preceded by a **`template`** or **generic** keyword with missing or invalid parameters. -## Example +## Examples The following sample generates C2992: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2993.md b/docs/error-messages/compiler-errors-2/compiler-error-c2993.md index 3c25c04806a..6dd712f21c9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2993.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2993.md @@ -9,9 +9,13 @@ helpviewer_keywords: ["C2993"] > 'identifier' : illegal type for non-type template parameter 'parameter' +## Remarks + - Prior to C++20, you cannot declare a template with a structure, class, or union argument. Pointers can be used in place of these types as template parameters. - Since C++20, structure, class, or unions *can* be used as non-type template parameters. A non-type template parameter can't be a rvalue reference type or a parameter pack of rvalue types. +## Examples + The following sample generates C2993: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2994.md b/docs/error-messages/compiler-errors-2/compiler-error-c2994.md index 876e11fe68c..1c00b2db304 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2994.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2994.md @@ -10,4 +10,6 @@ ms.assetid: b03570b5-e5fd-41d8-bdf1-dfadc2b1e116 > unnamed class in template parameter list +## Remarks + You cannot use the **`class`** keyword as a template argument without specifying a class name. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2995.md b/docs/error-messages/compiler-errors-2/compiler-error-c2995.md index 5021ac81359..441aad5706f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2995.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2995.md @@ -10,8 +10,12 @@ ms.assetid: a57cdfe0-b40b-4a67-a95c-1a49ace4842b > 'function' : function template has already been defined +## Remarks + Make sure that there is only one definition for each member function of a templated class. +## Example + The following sample generates C2995: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2996.md b/docs/error-messages/compiler-errors-2/compiler-error-c2996.md index 547ff605e42..725753f83ca 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2996.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2996.md @@ -10,4 +10,6 @@ ms.assetid: f0ca9f8b-1751-4182-adab-1424f0c5e0c0 > 'function' : recursive function template definition +## Remarks + A function definition attempts to instantiate its root templated class. Recursive template instantiations are not allowed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3001.md b/docs/error-messages/compiler-errors-2/compiler-error-c3001.md index b7c74724815..582f4846df0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3001.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3001.md @@ -10,8 +10,12 @@ ms.assetid: d0e03478-1b44-47e5-8f5b-70415fa1f8bc > 'error_text' : expected an OpenMP directive name +## Remarks + The `omp` pragma must be followed by a directive. +## Example + The following sample generates C3001: ```c diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3002.md b/docs/error-messages/compiler-errors-2/compiler-error-c3002.md index a789c036487..1320bf7e62a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3002.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3002.md @@ -10,8 +10,12 @@ ms.assetid: 2d4241a7-c8eb-4d43-a128-dca255d137bc > 'name1 name2' : multiple OpenMP directive names +## Remarks + Multiple directive names are not allowed. +## Example + The following sample generates C3002: ```c diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3003.md b/docs/error-messages/compiler-errors-2/compiler-error-c3003.md index c0be6722c0e..4e62e0d710f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3003.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3003.md @@ -10,8 +10,12 @@ ms.assetid: 22e74f99-bb7f-4518-ab0d-934d5d49bcc7 > 'directive' : OpenMP directive name not allowed after directive clauses +## Remarks + An OpenMP directive name cannot follow an OpenMP directive clause. +## Example + The following sample generates C3003: ```c diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3004.md b/docs/error-messages/compiler-errors-2/compiler-error-c3004.md index 94561fc3aae..e39eca40a96 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3004.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3004.md @@ -10,8 +10,12 @@ ms.assetid: 819c2b57-8366-4ca7-9135-1f0c5e5b6bb6 > 'clause' : clause not valid on OpenMP 'directive' directive +## Remarks + An OpenMP clause was used on a directive for which it is not enabled. +## Example + The following sample generates C3004: ```c diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3005.md b/docs/error-messages/compiler-errors-2/compiler-error-c3005.md index 489bb58fbfb..ead2e3d6e34 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3005.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3005.md @@ -10,8 +10,12 @@ ms.assetid: 30bad565-e79f-4c3f-82cb-a74bd0baab8f > 'error_text' : unexpected token encountered on OpenMP 'directive' directive +## Remarks + An OpenMP directive was ill formed. +## Examples + The following sample generates C3005: ```c diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3006.md b/docs/error-messages/compiler-errors-2/compiler-error-c3006.md index 788f1c039b1..37bb9f389c9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3006.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3006.md @@ -10,8 +10,12 @@ ms.assetid: 449082ec-fd45-4c47-8ab3-ba6a719e4dc4 > 'clause' : clause on OpenMP 'directive' directive is missing an expected argument +## Remarks + An OpenMP directive did not have an expected argument. +## Example + The following sample generates C3006: ```c diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3007.md b/docs/error-messages/compiler-errors-2/compiler-error-c3007.md index a860cb4c431..7509223f975 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3007.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3007.md @@ -10,8 +10,12 @@ ms.assetid: e415ef42-bdc9-4f32-8198-5e25b289a089 > 'arg' : clause on OpenMP 'directive' directive does not take an argument +## Remarks + An OpenMP directive had an argument, but the directive does not take an argument. +## Example + The following sample generates C3007: ```c diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3008.md b/docs/error-messages/compiler-errors-2/compiler-error-c3008.md index 96d25b1813e..172d9d1f013 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3008.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3008.md @@ -10,8 +10,12 @@ ms.assetid: 04d93201-28e5-4be0-945c-aad616376f4b > 'arg' : argument is missing closing ')' on OpenMP 'directive' directive +## Remarks + An OpenMP directive that takes an argument did not have a closing parenthesis. +## Example + The following sample generates C3008: ```c diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3009.md b/docs/error-messages/compiler-errors-2/compiler-error-c3009.md index 0d84bcf690a..96715bbb449 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3009.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3009.md @@ -10,8 +10,12 @@ ms.assetid: aded5985-f5fd-4c3e-a157-16be55ec1313 > 'label' : jump into OpenMP structured block not allowed +## Remarks + Code cannot jump into or out of an OpenMP block. +## Example + The following sample generates C3009: ```c diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3010.md b/docs/error-messages/compiler-errors-2/compiler-error-c3010.md index cc5e752fa1d..5f43a2c7ff9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3010.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3010.md @@ -10,8 +10,12 @@ ms.assetid: e959d038-bba6-432a-9c0a-0470474de7d9 > 'label' : jump out of OpenMP structured block not allowed +## Remarks + Code cannot jump into or out of an OpenMP block. +## Example + The following sample generates C3010: ```c From 7091e9a4e90081f34c2e9dba5aa7d9bbc122c3c8 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 12 Aug 2025 21:57:00 +0800 Subject: [PATCH 1356/2255] Replace term "sample" with "example" for error references in range [C2981, C3010] --- docs/error-messages/compiler-errors-2/compiler-error-c2989.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2990.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c2991.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2992.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2993.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2995.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3001.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3002.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3003.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3004.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3005.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3006.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3007.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3008.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3009.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3010.md | 2 +- 16 files changed, 17 insertions(+), 17 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2989.md b/docs/error-messages/compiler-errors-2/compiler-error-c2989.md index 8e56b4345af..1ec1f6ab7a5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2989.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2989.md @@ -16,7 +16,7 @@ The class generic or template redefines a non-template or non-generic class. Che ## Examples -The following sample generates C2989: +The following example generates C2989: ```cpp // C2989.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2990.md b/docs/error-messages/compiler-errors-2/compiler-error-c2990.md index 57cc884f8f9..9413e360d38 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2990.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2990.md @@ -16,7 +16,7 @@ The non generic or template class redefines a generic or template class. Check h ## Examples -The following sample generates C2990: +The following example generates C2990: ```cpp // C2990.cpp @@ -39,7 +39,7 @@ ref struct GC {}; // C2990 C2990 can also occur due to a breaking change in the Microsoft C++ compiler for Visual Studio 2005; the compiler now requires that multiple declarations for the same type be identical with respect to template specification. -The following sample generates C2990: +The following example generates C2990: ```cpp // C2990c.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2991.md b/docs/error-messages/compiler-errors-2/compiler-error-c2991.md index 34a450788d5..300ff2c2554 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2991.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2991.md @@ -16,7 +16,7 @@ There was a type conflict between two generic or template definitions of `parame ## Examples -The following sample generates C2991: +The following example generates C2991: ```cpp // C2991.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2992.md b/docs/error-messages/compiler-errors-2/compiler-error-c2992.md index 7e354443583..a74b31344e6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2992.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2992.md @@ -16,7 +16,7 @@ The class is preceded by a **`template`** or **generic** keyword with missing or ## Examples -The following sample generates C2992: +The following example generates C2992: ```cpp // C2992.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2993.md b/docs/error-messages/compiler-errors-2/compiler-error-c2993.md index 6dd712f21c9..fa2850f6cc3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2993.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2993.md @@ -16,7 +16,7 @@ helpviewer_keywords: ["C2993"] ## Examples -The following sample generates C2993: +The following example generates C2993: ```cpp // compile with: /c and /std:c++17 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2995.md b/docs/error-messages/compiler-errors-2/compiler-error-c2995.md index 441aad5706f..3021b307936 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2995.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2995.md @@ -16,7 +16,7 @@ Make sure that there is only one definition for each member function of a templa ## Example -The following sample generates C2995: +The following example generates C2995: ```cpp // C2995.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3001.md b/docs/error-messages/compiler-errors-2/compiler-error-c3001.md index 582f4846df0..051c5b3d0da 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3001.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3001.md @@ -16,7 +16,7 @@ The `omp` pragma must be followed by a directive. ## Example -The following sample generates C3001: +The following example generates C3001: ```c // C3001.c diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3002.md b/docs/error-messages/compiler-errors-2/compiler-error-c3002.md index 1320bf7e62a..b7afe81ef37 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3002.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3002.md @@ -16,7 +16,7 @@ Multiple directive names are not allowed. ## Example -The following sample generates C3002: +The following example generates C3002: ```c // C3002.c diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3003.md b/docs/error-messages/compiler-errors-2/compiler-error-c3003.md index 4e62e0d710f..9a886f734da 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3003.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3003.md @@ -16,7 +16,7 @@ An OpenMP directive name cannot follow an OpenMP directive clause. ## Example -The following sample generates C3003: +The following example generates C3003: ```c // C3003.c diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3004.md b/docs/error-messages/compiler-errors-2/compiler-error-c3004.md index e39eca40a96..556e8685aee 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3004.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3004.md @@ -16,7 +16,7 @@ An OpenMP clause was used on a directive for which it is not enabled. ## Example -The following sample generates C3004: +The following example generates C3004: ```c // C3004.c diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3005.md b/docs/error-messages/compiler-errors-2/compiler-error-c3005.md index ead2e3d6e34..9e18b66ee80 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3005.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3005.md @@ -16,7 +16,7 @@ An OpenMP directive was ill formed. ## Examples -The following sample generates C3005: +The following example generates C3005: ```c // C3005.c diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3006.md b/docs/error-messages/compiler-errors-2/compiler-error-c3006.md index 37bb9f389c9..88b0254e9c8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3006.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3006.md @@ -16,7 +16,7 @@ An OpenMP directive did not have an expected argument. ## Example -The following sample generates C3006: +The following example generates C3006: ```c // C3006.c diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3007.md b/docs/error-messages/compiler-errors-2/compiler-error-c3007.md index 7509223f975..dbd79f8cb59 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3007.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3007.md @@ -16,7 +16,7 @@ An OpenMP directive had an argument, but the directive does not take an argument ## Example -The following sample generates C3007: +The following example generates C3007: ```c // C3007.c diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3008.md b/docs/error-messages/compiler-errors-2/compiler-error-c3008.md index 172d9d1f013..7423297d682 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3008.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3008.md @@ -16,7 +16,7 @@ An OpenMP directive that takes an argument did not have a closing parenthesis. ## Example -The following sample generates C3008: +The following example generates C3008: ```c // C3008.c diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3009.md b/docs/error-messages/compiler-errors-2/compiler-error-c3009.md index 96715bbb449..fa2d153d9d6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3009.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3009.md @@ -16,7 +16,7 @@ Code cannot jump into or out of an OpenMP block. ## Example -The following sample generates C3009: +The following example generates C3009: ```c // C3009.c diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3010.md b/docs/error-messages/compiler-errors-2/compiler-error-c3010.md index 5f43a2c7ff9..0d5053d4894 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3010.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3010.md @@ -16,7 +16,7 @@ Code cannot jump into or out of an OpenMP block. ## Example -The following sample generates C3010: +The following example generates C3010: ```c // C3010.c From 7d86057e7518ce6ec609e9d55fa2cf79b154d6e9 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 12 Aug 2025 21:59:58 +0800 Subject: [PATCH 1357/2255] Update metadata for error references in range [C2981, C3010] --- .../error-messages/compiler-errors-2/compiler-error-c2988.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2989.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2990.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2991.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2992.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2993.md | 4 ++-- .../error-messages/compiler-errors-2/compiler-error-c2994.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2995.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c2996.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3001.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3002.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3003.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3004.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3005.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3006.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3007.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3008.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3009.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3010.md | 5 ++--- 19 files changed, 38 insertions(+), 56 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2988.md b/docs/error-messages/compiler-errors-2/compiler-error-c2988.md index 6587264a0e1..06f37437baa 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2988.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2988.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2988" title: "Compiler Error C2988" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2988" +ms.date: 11/04/2016 f1_keywords: ["C2988"] helpviewer_keywords: ["C2988"] -ms.assetid: c07ada8d-7cdf-4496-8656-cc3851e76b46 --- # Compiler Error C2988 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2989.md b/docs/error-messages/compiler-errors-2/compiler-error-c2989.md index 1ec1f6ab7a5..973a9e9107e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2989.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2989.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2989" title: "Compiler Error C2989" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2989" +ms.date: 11/04/2016 f1_keywords: ["C2989"] helpviewer_keywords: ["C2989"] -ms.assetid: 936303d8-eb3b-4746-82ec-2f18020a6f64 --- # Compiler Error C2989 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2990.md b/docs/error-messages/compiler-errors-2/compiler-error-c2990.md index 9413e360d38..02ecde2c786 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2990.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2990.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2990" title: "Compiler Error C2990" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2990" +ms.date: 11/04/2016 f1_keywords: ["C2990"] helpviewer_keywords: ["C2990"] -ms.assetid: 674e9f6a-6743-4af0-a7ed-cbe11103a2f8 --- # Compiler Error C2990 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2991.md b/docs/error-messages/compiler-errors-2/compiler-error-c2991.md index 300ff2c2554..7b9c8c2bc13 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2991.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2991.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2991" title: "Compiler Error C2991" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2991" +ms.date: 11/04/2016 f1_keywords: ["C2991"] helpviewer_keywords: ["C2991"] -ms.assetid: a87e4404-26e8-4927-b3ee-5d02b3b8bee1 --- # Compiler Error C2991 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2992.md b/docs/error-messages/compiler-errors-2/compiler-error-c2992.md index a74b31344e6..023ef93a9b3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2992.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2992.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2992" title: "Compiler Error C2992" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2992" +ms.date: 11/04/2016 f1_keywords: ["C2992"] helpviewer_keywords: ["C2992"] -ms.assetid: 01b16447-43fe-4e91-9a5a-af884a166a31 --- # Compiler Error C2992 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2993.md b/docs/error-messages/compiler-errors-2/compiler-error-c2993.md index fa2850f6cc3..dc9f175046f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2993.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2993.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Error C2993" title: "Compiler Error C2993" -ms.date: "10/03/2023" +description: "Learn more about: Compiler Error C2993" +ms.date: 10/03/2023 f1_keywords: ["C2993"] helpviewer_keywords: ["C2993"] --- diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2994.md b/docs/error-messages/compiler-errors-2/compiler-error-c2994.md index 1c00b2db304..9aa9c4f11a1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2994.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2994.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2994" title: "Compiler Error C2994" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2994" +ms.date: 11/04/2016 f1_keywords: ["C2994"] helpviewer_keywords: ["C2994"] -ms.assetid: b03570b5-e5fd-41d8-bdf1-dfadc2b1e116 --- # Compiler Error C2994 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2995.md b/docs/error-messages/compiler-errors-2/compiler-error-c2995.md index 3021b307936..03f7125d169 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2995.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2995.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2995" title: "Compiler Error C2995" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2995" +ms.date: 11/04/2016 f1_keywords: ["C2995"] helpviewer_keywords: ["C2995"] -ms.assetid: a57cdfe0-b40b-4a67-a95c-1a49ace4842b --- # Compiler Error C2995 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2996.md b/docs/error-messages/compiler-errors-2/compiler-error-c2996.md index 725753f83ca..8222baa8df3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2996.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2996.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2996" title: "Compiler Error C2996" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2996" +ms.date: 11/04/2016 f1_keywords: ["C2996"] helpviewer_keywords: ["C2996"] -ms.assetid: f0ca9f8b-1751-4182-adab-1424f0c5e0c0 --- # Compiler Error C2996 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3001.md b/docs/error-messages/compiler-errors-2/compiler-error-c3001.md index 051c5b3d0da..617f88cb018 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3001.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3001.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3001" title: "Compiler Error C3001" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3001" +ms.date: 11/04/2016 f1_keywords: ["C3001"] helpviewer_keywords: ["C3001"] -ms.assetid: d0e03478-1b44-47e5-8f5b-70415fa1f8bc --- # Compiler Error C3001 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3002.md b/docs/error-messages/compiler-errors-2/compiler-error-c3002.md index b7afe81ef37..ee452060426 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3002.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3002.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3002" title: "Compiler Error C3002" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3002" +ms.date: 11/04/2016 f1_keywords: ["C3002"] helpviewer_keywords: ["C3002"] -ms.assetid: 2d4241a7-c8eb-4d43-a128-dca255d137bc --- # Compiler Error C3002 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3003.md b/docs/error-messages/compiler-errors-2/compiler-error-c3003.md index 9a886f734da..c9a04e0dbb2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3003.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3003.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3003" title: "Compiler Error C3003" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3003" +ms.date: 11/04/2016 f1_keywords: ["C3003"] helpviewer_keywords: ["C3003"] -ms.assetid: 22e74f99-bb7f-4518-ab0d-934d5d49bcc7 --- # Compiler Error C3003 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3004.md b/docs/error-messages/compiler-errors-2/compiler-error-c3004.md index 556e8685aee..7d9edc3a448 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3004.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3004.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3004" title: "Compiler Error C3004" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3004" +ms.date: 11/04/2016 f1_keywords: ["C3004"] helpviewer_keywords: ["C3004"] -ms.assetid: 819c2b57-8366-4ca7-9135-1f0c5e5b6bb6 --- # Compiler Error C3004 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3005.md b/docs/error-messages/compiler-errors-2/compiler-error-c3005.md index 9e18b66ee80..83f3fcf62df 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3005.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3005.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3005" title: "Compiler Error C3005" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3005" +ms.date: 11/04/2016 f1_keywords: ["C3005"] helpviewer_keywords: ["C3005"] -ms.assetid: 30bad565-e79f-4c3f-82cb-a74bd0baab8f --- # Compiler Error C3005 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3006.md b/docs/error-messages/compiler-errors-2/compiler-error-c3006.md index 88b0254e9c8..278771bdba0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3006.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3006.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3006" title: "Compiler Error C3006" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3006" +ms.date: 11/04/2016 f1_keywords: ["C3006"] helpviewer_keywords: ["C3006"] -ms.assetid: 449082ec-fd45-4c47-8ab3-ba6a719e4dc4 --- # Compiler Error C3006 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3007.md b/docs/error-messages/compiler-errors-2/compiler-error-c3007.md index dbd79f8cb59..a18f67035f8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3007.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3007.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3007" title: "Compiler Error C3007" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3007" +ms.date: 11/04/2016 f1_keywords: ["C3007"] helpviewer_keywords: ["C3007"] -ms.assetid: e415ef42-bdc9-4f32-8198-5e25b289a089 --- # Compiler Error C3007 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3008.md b/docs/error-messages/compiler-errors-2/compiler-error-c3008.md index 7423297d682..e9578e2930f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3008.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3008.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3008" title: "Compiler Error C3008" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3008" +ms.date: 11/04/2016 f1_keywords: ["C3008"] helpviewer_keywords: ["C3008"] -ms.assetid: 04d93201-28e5-4be0-945c-aad616376f4b --- # Compiler Error C3008 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3009.md b/docs/error-messages/compiler-errors-2/compiler-error-c3009.md index fa2d153d9d6..7a3a7aa8252 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3009.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3009.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3009" title: "Compiler Error C3009" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3009" +ms.date: 11/04/2016 f1_keywords: ["C3009"] helpviewer_keywords: ["C3009"] -ms.assetid: aded5985-f5fd-4c3e-a157-16be55ec1313 --- # Compiler Error C3009 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3010.md b/docs/error-messages/compiler-errors-2/compiler-error-c3010.md index 0d5053d4894..def3dcb1b98 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3010.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3010.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3010" title: "Compiler Error C3010" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3010" +ms.date: 11/04/2016 f1_keywords: ["C3010"] helpviewer_keywords: ["C3010"] -ms.assetid: e959d038-bba6-432a-9c0a-0470474de7d9 --- # Compiler Error C3010 From eecc5c350906aadbbd53409ef5364927a8edffc1 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 12 Aug 2025 22:41:34 +0800 Subject: [PATCH 1358/2255] Fix wrong link destination in table of standard library references --- docs/standard-library/chrono.md | 2 +- docs/standard-library/new.md | 2 +- docs/standard-library/path-class.md | 2 +- docs/standard-library/zoned-time-class.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/standard-library/chrono.md b/docs/standard-library/chrono.md index 82bc6ae8243..f2fdb6b4b75 100644 --- a/docs/standard-library/chrono.md +++ b/docs/standard-library/chrono.md @@ -44,7 +44,7 @@ Using the time-zone facilities on older versions of Windows results in a runtime | [`month` class](month-class.md) | A month of a year. For example, July. | | [`month_day` class](month-day-class.md) | A specific day of a specific month. For example, July 30. | | [`month_day_last` class](month-day-last-class.md) | The last day of a month. | -| [`month_weekday` class](month-day-last-class.md) | The nth weekday of a specific month. | +| [`month_weekday` class](month-weekday-class.md) | The nth weekday of a specific month. | | [`month_weekday_last` class](month-weekday-last-class.md) | The nth weekday of a specific month. | | [`time_point` class](time-point-class.md) | A point in time. | | [`weekday` class](weekday-class.md) | A day of the week. | diff --git a/docs/standard-library/new.md b/docs/standard-library/new.md index 79dfcd6b5b4..ef0a6dba9bf 100644 --- a/docs/standard-library/new.md +++ b/docs/standard-library/new.md @@ -33,7 +33,7 @@ Some of the functions declared in this header are replaceable. The implementatio |Name|Description| |-|-| |[new_handler](../standard-library/new-typedefs.md#new_handler)|A type that points to a function suitable for use as a new handler.| -|[hardware_constructive_interference_size](../standard-library/new-typedefs.md#hardware_destructive_interference_size)|| +|[hardware_constructive_interference_size](../standard-library/new-typedefs.md#hardware_constructive_interference_size)|| |[hardware_destructive_interference_size](../standard-library/new-typedefs.md#hardware_destructive_interference_size)|| ### Functions diff --git a/docs/standard-library/path-class.md b/docs/standard-library/path-class.md index 6e5499a4672..b358291f7fc 100644 --- a/docs/standard-library/path-class.md +++ b/docs/standard-library/path-class.md @@ -41,7 +41,7 @@ class path; |[`c_str`](#c_str)|Returns a pointer to the first character in `mypath`.| |[`clear`](#clear)|Executes `mypath.clear()`.| |[`compare`](#compare)|Returns comparison values.| -|[`concat`](#compare)|Appends the specified sequence to `mypath`, converted (but not inserting a separator) as needed.| +|[`concat`](#concat)|Appends the specified sequence to `mypath`, converted (but not inserting a separator) as needed.| |[`empty`](#empty)|Returns `mypath.empty()`.| |[`end`](#end)|Returns an end-of-sequence iterator of type `iterator`.| |[`extension`](#extension)|Returns the suffix of `filename()`.| diff --git a/docs/standard-library/zoned-time-class.md b/docs/standard-library/zoned-time-class.md index 3fbc4f7dcc1..c5b82df46cf 100644 --- a/docs/standard-library/zoned-time-class.md +++ b/docs/standard-library/zoned-time-class.md @@ -33,7 +33,7 @@ A `zoned_time` always refers to a valid time zone and represents a point in time |[`get_time_zone`](#get_time_zone) | Gets the [time_zone](time-zone-class.md) stored in this `zoned_time`. | |[`operator=`](#op_=)| Assign the value of another `zoned_time`, or another `zoned_time`'s `local_time` or `sys_time`, to this `zoned_time`.| |[`operator local_time`](#op_local_time)| Combines the `zoned_time`'s time zone with the stored time point to produce the local time in that time zone.| -|[`operator sys_time`](#op_local_time)| Gets the time stored in this `zoned_time` without applying the time zone. | +|[`operator sys_time`](#op_sys_time)| Gets the time stored in this `zoned_time` without applying the time zone. | ## Non-members From 4af37caf4aa230411d3b633deb30bb89230cf28b Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 12 Aug 2025 22:44:09 +0800 Subject: [PATCH 1359/2255] Update metadata in 2 standard library references --- docs/standard-library/new.md | 5 ++--- docs/standard-library/path-class.md | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/standard-library/new.md b/docs/standard-library/new.md index ef0a6dba9bf..09baa6795b1 100644 --- a/docs/standard-library/new.md +++ b/docs/standard-library/new.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: " title: "" -ms.date: "11/04/2016" +description: "Learn more about: " +ms.date: 11/04/2016 f1_keywords: [""] helpviewer_keywords: ["new header"] -ms.assetid: 218e2a15-34e8-4ef3-9122-1e90eccf8559 --- # `` diff --git a/docs/standard-library/path-class.md b/docs/standard-library/path-class.md index b358291f7fc..8f7edbb9c17 100644 --- a/docs/standard-library/path-class.md +++ b/docs/standard-library/path-class.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: path Class" title: "path Class" +description: "Learn more about: path Class" ms.date: 06/17/2022 f1_keywords: ["filesystem/std::experimental::filesystem::path"] --- From c47a61b4213ce5fd05d29539f6da5f9684cb176b Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 12 Aug 2025 23:28:13 +0800 Subject: [PATCH 1360/2255] Add blockquotes for error messages in range [C3011, C3030] --- docs/error-messages/compiler-errors-2/compiler-error-c3011.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3013.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3014.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3015.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3016.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3017.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3018.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3019.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3020.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3021.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3022.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3023.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3024.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3025.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3026.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3027.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3028.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3029.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3030.md | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3011.md b/docs/error-messages/compiler-errors-2/compiler-error-c3011.md index 830e14b0863..184908ef9f3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3011.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3011.md @@ -8,7 +8,7 @@ ms.assetid: 24c3a917-ebff-4deb-9155-23adf6468531 --- # Compiler Error C3011 -inline assembly not allowed directly within a parallel region +> inline assembly not allowed directly within a parallel region An `omp` parallel region cannot contain inline assembly instructions. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3013.md b/docs/error-messages/compiler-errors-2/compiler-error-c3013.md index cd9019d1f11..e24b4b609d3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3013.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3013.md @@ -8,7 +8,7 @@ ms.assetid: f896777d-27e6-4b6d-baab-1567317f3374 --- # Compiler Error C3013 -'clause' : clause may only appear once on OpenMP 'directive' directive +> 'clause' : clause may only appear once on OpenMP 'directive' directive A clause appeared twice on the same directive. Delete one occurrence of the clause. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3014.md b/docs/error-messages/compiler-errors-2/compiler-error-c3014.md index 6f59ffd243c..7f753b92046 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3014.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3014.md @@ -8,7 +8,7 @@ ms.assetid: af1c5b0c-dbf9-4274-b06a-c6c2cdcf2a52 --- # Compiler Error C3014 -expected a for loop following OpenMP 'directive' directive +> expected a for loop following OpenMP 'directive' directive It is an error for anything other than a **`for`** loop to immediately follow a `#pragma omp for` directive. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3015.md b/docs/error-messages/compiler-errors-2/compiler-error-c3015.md index cbc3d828a33..c5cb3b11812 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3015.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3015.md @@ -8,7 +8,7 @@ ms.assetid: d5e8e50b-7542-4b2d-8665-1b22072a5bc6 --- # Compiler Error C3015 -initialization in OpenMP 'for' statement has improper form +> initialization in OpenMP 'for' statement has improper form A **`for`** loop in an OpenMP statement must be fully and explicitly specified. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3016.md b/docs/error-messages/compiler-errors-2/compiler-error-c3016.md index ef990e16bb7..20d461bc7c3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3016.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3016.md @@ -8,7 +8,7 @@ ms.assetid: 3423467e-e8bb-4f35-b4db-7925cafa74c1 --- # Compiler Error C3016 -'var' : index variable in OpenMP 'for' statement must have signed integral type +> 'var' : index variable in OpenMP 'for' statement must have signed integral type The index variable in an OpenMP **`for`** statement must be a signed integral type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3017.md b/docs/error-messages/compiler-errors-2/compiler-error-c3017.md index 35ffc5aecf9..23f6a183d7c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3017.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3017.md @@ -8,7 +8,7 @@ ms.assetid: 12ab2c2a-d0d2-4900-9cbf-39be0af590dd --- # Compiler Error C3017 -termination test in OpenMP 'for' statement has improper form +> termination test in OpenMP 'for' statement has improper form A **`for`** loop in an OpenMP statement must be fully and explicitly specified. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3018.md b/docs/error-messages/compiler-errors-2/compiler-error-c3018.md index 9843c07518c..1451896ed8c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3018.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3018.md @@ -8,7 +8,7 @@ ms.assetid: 685be45f-f116-43a8-a88d-05ab6616e2f1 --- # Compiler Error C3018 -'var1' : OpenMP 'for' test or increment must use index variable 'var2' +> 'var1' : OpenMP 'for' test or increment must use index variable 'var2' A **`for`** loop in an OpenMP statement must use the same variable for its test and increment as it uses for its index. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3019.md b/docs/error-messages/compiler-errors-2/compiler-error-c3019.md index 72a6e03a165..96ce0b9966e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3019.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3019.md @@ -8,7 +8,7 @@ ms.assetid: 31a6d9b6-d29f-4499-9ad8-48dd751e87c7 --- # Compiler Error C3019 -increment in OpenMP 'for' statement has improper form +> increment in OpenMP 'for' statement has improper form The increment part of an OpenMP **`for`** loop must use the index variable both on the left and right side of the operator. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3020.md b/docs/error-messages/compiler-errors-2/compiler-error-c3020.md index 4f67e28e54e..c465b030a06 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3020.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3020.md @@ -8,7 +8,7 @@ ms.assetid: f625c7a3-afaa-4bd8-9c1b-51891b832f36 --- # Compiler Error C3020 -'var' : index variable of OpenMP 'for' loop cannot be modified in loop body +> 'var' : index variable of OpenMP 'for' loop cannot be modified in loop body An OpenMP **`for`** loop may not modify the index (loop counter) in the body of the **`for`** loop. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3021.md b/docs/error-messages/compiler-errors-2/compiler-error-c3021.md index 5a016f5608e..64cdebd6283 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3021.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3021.md @@ -8,7 +8,7 @@ ms.assetid: 0cef6d97-e267-438a-ac8b-0daf5bbbc2cf --- # Compiler Error C3021 -'arg' : argument is empty on OpenMP directive 'directive' +> 'arg' : argument is empty on OpenMP directive 'directive' An argument is required for an OpenMP directive. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3022.md b/docs/error-messages/compiler-errors-2/compiler-error-c3022.md index ca6749b8abb..91aca931e2b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3022.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3022.md @@ -8,7 +8,7 @@ ms.assetid: 9f1d444c-6c6e-48d9-9346-69128390aa33 --- # Compiler Error C3022 -'clause' : invalid schedule kind of 'value' on OpenMP 'directive' directive +> 'clause' : invalid schedule kind of 'value' on OpenMP 'directive' directive An unsupported value was passed to a clause. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3023.md b/docs/error-messages/compiler-errors-2/compiler-error-c3023.md index 5cc79ab4b52..d0a4b21be80 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3023.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3023.md @@ -8,7 +8,7 @@ ms.assetid: 89dcce98-3cd7-4931-a50f-87df1d2ebc9b --- # Compiler Error C3023 -'value' : unexpected token encountered in argument to OpenMP 'clause' clause +> 'value' : unexpected token encountered in argument to OpenMP 'clause' clause The values passed to a clause were not valid. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3024.md b/docs/error-messages/compiler-errors-2/compiler-error-c3024.md index a9c91358b3c..c906fc8ca20 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3024.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3024.md @@ -8,7 +8,7 @@ ms.assetid: 1c031c28-ce37-4de3-aead-cfe76b261856 --- # Compiler Error C3024 -'schedule(runtime)' : chunk_size expression is not allowed +> 'schedule(runtime)' : chunk_size expression is not allowed A value cannot be passed to the run-time parameter of the schedule clause. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3025.md b/docs/error-messages/compiler-errors-2/compiler-error-c3025.md index ef52fb54153..2f289eb5a32 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3025.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3025.md @@ -8,7 +8,7 @@ ms.assetid: 4442f5a3-d9ea-4873-b1fb-e7e5bd3cbe5e --- # Compiler Error C3025 -'clause' : integral expression expected +> 'clause' : integral expression expected A clause requires an integer expression but was given a noninteger expression. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3026.md b/docs/error-messages/compiler-errors-2/compiler-error-c3026.md index cf7c5487239..a6465945175 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3026.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3026.md @@ -8,7 +8,7 @@ ms.assetid: 3297060e-cc5b-4600-a2db-09bfc4ffa21f --- # Compiler Error C3026 -'clause' : constant expression must be positive +> 'clause' : constant expression must be positive A clause was passed an integer value, but the value was not a positive number. The number must be positive. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3027.md b/docs/error-messages/compiler-errors-2/compiler-error-c3027.md index 8276f6de600..1066399f1c8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3027.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3027.md @@ -8,7 +8,7 @@ ms.assetid: 6562a5c2-2f28-4b36-91ca-2a64c0f0501a --- # Compiler Error C3027 -'clause' : arithmetic or pointer expression expected +> 'clause' : arithmetic or pointer expression expected A clause that requires an arithmetic or pointer expression was passed another kind of expression. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3028.md b/docs/error-messages/compiler-errors-2/compiler-error-c3028.md index d64d33f2004..9c18838cbdb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3028.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3028.md @@ -8,7 +8,7 @@ ms.assetid: 175e697f-8e8f-492a-8456-6240ffbbb900 --- # Compiler Error C3028 -'member' : only a variable or static data member can be used in a data-sharing clause +> 'member' : only a variable or static data member can be used in a data-sharing clause A symbol other than a variable or static data member was passed to the reduction clause. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3029.md b/docs/error-messages/compiler-errors-2/compiler-error-c3029.md index 8b2b019ed48..9b7d8632711 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3029.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3029.md @@ -8,7 +8,7 @@ ms.assetid: 655eb04d-504a-468d-8c0c-bda1e5f297b7 --- # Compiler Error C3029 -'symbol' : can only appear once in data-sharing clauses in an OpenMP directive +> 'symbol' : can only appear once in data-sharing clauses in an OpenMP directive A symbol was used more than once in one or more clauses in a directive. The symbol can only be used once in the directive. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3030.md b/docs/error-messages/compiler-errors-2/compiler-error-c3030.md index daf295ebe76..5d197ced09d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3030.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3030.md @@ -8,7 +8,7 @@ ms.assetid: de92fd7e-29ba-46e8-b43b-f4b985cd74de --- # Compiler Error C3030 -'var' : variable in 'reduction' clause/directive cannot have reference type +> 'var' : variable in 'reduction' clause/directive cannot have reference type You can only pass value parameters to certain clauses, such as the reduction clause. From 87e152c6e6afd5c90ad1ef77ef9f5defa0e1b593 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 12 Aug 2025 23:33:11 +0800 Subject: [PATCH 1361/2255] Add "Remarks" and "Example" headings for error references in range [C3011, C3030] --- docs/error-messages/compiler-errors-2/compiler-error-c3011.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3012.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3013.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3014.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3015.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3016.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3017.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3018.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3019.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3020.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3021.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3022.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3023.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3024.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3025.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3026.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3027.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3028.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3029.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3030.md | 4 ++++ 20 files changed, 70 insertions(+) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3011.md b/docs/error-messages/compiler-errors-2/compiler-error-c3011.md index 184908ef9f3..27ca8b1ad47 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3011.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3011.md @@ -10,8 +10,12 @@ ms.assetid: 24c3a917-ebff-4deb-9155-23adf6468531 > inline assembly not allowed directly within a parallel region +## Remarks + An `omp` parallel region cannot contain inline assembly instructions. +## Example + The following sample generates C3011: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3012.md b/docs/error-messages/compiler-errors-2/compiler-error-c3012.md index 8754ce80f9b..c0e3ad5038a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3012.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3012.md @@ -10,6 +10,8 @@ ms.assetid: cc7040b1-b3fb-4da6-a474-877914d30332 > '*intrinsic*' : intrinsic function not allowed directly within a parallel region +## Remarks + A [compiler intrinsic](../../intrinsics/compiler-intrinsics.md) function is not allowed in an `omp parallel` region. To fix this issue, move intrinsics out of the region, or replace them with non-intrinsic equivalents. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3013.md b/docs/error-messages/compiler-errors-2/compiler-error-c3013.md index e24b4b609d3..2c8d9745f1c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3013.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3013.md @@ -10,8 +10,12 @@ ms.assetid: f896777d-27e6-4b6d-baab-1567317f3374 > 'clause' : clause may only appear once on OpenMP 'directive' directive +## Remarks + A clause appeared twice on the same directive. Delete one occurrence of the clause. +## Example + The following sample generates C3013: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3014.md b/docs/error-messages/compiler-errors-2/compiler-error-c3014.md index 7f753b92046..66db6d4d0a9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3014.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3014.md @@ -10,8 +10,12 @@ ms.assetid: af1c5b0c-dbf9-4274-b06a-c6c2cdcf2a52 > expected a for loop following OpenMP 'directive' directive +## Remarks + It is an error for anything other than a **`for`** loop to immediately follow a `#pragma omp for` directive. +## Example + The following sample generates C3014: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3015.md b/docs/error-messages/compiler-errors-2/compiler-error-c3015.md index c5cb3b11812..395e5bf21b9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3015.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3015.md @@ -10,8 +10,12 @@ ms.assetid: d5e8e50b-7542-4b2d-8665-1b22072a5bc6 > initialization in OpenMP 'for' statement has improper form +## Remarks + A **`for`** loop in an OpenMP statement must be fully and explicitly specified. +## Example + The following sample generates C3015: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3016.md b/docs/error-messages/compiler-errors-2/compiler-error-c3016.md index 20d461bc7c3..eebec69cdea 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3016.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3016.md @@ -10,8 +10,12 @@ ms.assetid: 3423467e-e8bb-4f35-b4db-7925cafa74c1 > 'var' : index variable in OpenMP 'for' statement must have signed integral type +## Remarks + The index variable in an OpenMP **`for`** statement must be a signed integral type. +## Example + The following sample generates C3016: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3017.md b/docs/error-messages/compiler-errors-2/compiler-error-c3017.md index 23f6a183d7c..cc236ebc241 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3017.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3017.md @@ -10,8 +10,12 @@ ms.assetid: 12ab2c2a-d0d2-4900-9cbf-39be0af590dd > termination test in OpenMP 'for' statement has improper form +## Remarks + A **`for`** loop in an OpenMP statement must be fully and explicitly specified. +## Example + The following sample generates C3017: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3018.md b/docs/error-messages/compiler-errors-2/compiler-error-c3018.md index 1451896ed8c..7e0760e0317 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3018.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3018.md @@ -10,8 +10,12 @@ ms.assetid: 685be45f-f116-43a8-a88d-05ab6616e2f1 > 'var1' : OpenMP 'for' test or increment must use index variable 'var2' +## Remarks + A **`for`** loop in an OpenMP statement must use the same variable for its test and increment as it uses for its index. +## Example + The following sample generates C3018: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3019.md b/docs/error-messages/compiler-errors-2/compiler-error-c3019.md index 96ce0b9966e..5e26f0053ad 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3019.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3019.md @@ -10,8 +10,12 @@ ms.assetid: 31a6d9b6-d29f-4499-9ad8-48dd751e87c7 > increment in OpenMP 'for' statement has improper form +## Remarks + The increment part of an OpenMP **`for`** loop must use the index variable both on the left and right side of the operator. +## Example + The following sample generates C3019: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3020.md b/docs/error-messages/compiler-errors-2/compiler-error-c3020.md index c465b030a06..4dd37d8ea96 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3020.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3020.md @@ -10,8 +10,12 @@ ms.assetid: f625c7a3-afaa-4bd8-9c1b-51891b832f36 > 'var' : index variable of OpenMP 'for' loop cannot be modified in loop body +## Remarks + An OpenMP **`for`** loop may not modify the index (loop counter) in the body of the **`for`** loop. +## Examples + The following sample generates C3020: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3021.md b/docs/error-messages/compiler-errors-2/compiler-error-c3021.md index 64cdebd6283..4ce78cd3f75 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3021.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3021.md @@ -10,6 +10,8 @@ ms.assetid: 0cef6d97-e267-438a-ac8b-0daf5bbbc2cf > 'arg' : argument is empty on OpenMP directive 'directive' +## Remarks + An argument is required for an OpenMP directive. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3022.md b/docs/error-messages/compiler-errors-2/compiler-error-c3022.md index 91aca931e2b..ca958d5229a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3022.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3022.md @@ -10,8 +10,12 @@ ms.assetid: 9f1d444c-6c6e-48d9-9346-69128390aa33 > 'clause' : invalid schedule kind of 'value' on OpenMP 'directive' directive +## Remarks + An unsupported value was passed to a clause. +## Example + The following sample generates C3022: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3023.md b/docs/error-messages/compiler-errors-2/compiler-error-c3023.md index d0a4b21be80..dc55a9ee9eb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3023.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3023.md @@ -10,8 +10,12 @@ ms.assetid: 89dcce98-3cd7-4931-a50f-87df1d2ebc9b > 'value' : unexpected token encountered in argument to OpenMP 'clause' clause +## Remarks + The values passed to a clause were not valid. +## Example + The following sample generates C3023: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3024.md b/docs/error-messages/compiler-errors-2/compiler-error-c3024.md index c906fc8ca20..33f5f906d85 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3024.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3024.md @@ -10,8 +10,12 @@ ms.assetid: 1c031c28-ce37-4de3-aead-cfe76b261856 > 'schedule(runtime)' : chunk_size expression is not allowed +## Remarks + A value cannot be passed to the run-time parameter of the schedule clause. +## Example + The following sample generates C3024: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3025.md b/docs/error-messages/compiler-errors-2/compiler-error-c3025.md index 2f289eb5a32..7b7b1209762 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3025.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3025.md @@ -10,6 +10,8 @@ ms.assetid: 4442f5a3-d9ea-4873-b1fb-e7e5bd3cbe5e > 'clause' : integral expression expected +## Remarks + A clause requires an integer expression but was given a noninteger expression. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3026.md b/docs/error-messages/compiler-errors-2/compiler-error-c3026.md index a6465945175..e80366db2ff 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3026.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3026.md @@ -10,6 +10,8 @@ ms.assetid: 3297060e-cc5b-4600-a2db-09bfc4ffa21f > 'clause' : constant expression must be positive +## Remarks + A clause was passed an integer value, but the value was not a positive number. The number must be positive. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3027.md b/docs/error-messages/compiler-errors-2/compiler-error-c3027.md index 1066399f1c8..be2f51da20b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3027.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3027.md @@ -10,6 +10,8 @@ ms.assetid: 6562a5c2-2f28-4b36-91ca-2a64c0f0501a > 'clause' : arithmetic or pointer expression expected +## Remarks + A clause that requires an arithmetic or pointer expression was passed another kind of expression. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3028.md b/docs/error-messages/compiler-errors-2/compiler-error-c3028.md index 9c18838cbdb..9ea3e8e09bc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3028.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3028.md @@ -10,8 +10,12 @@ ms.assetid: 175e697f-8e8f-492a-8456-6240ffbbb900 > 'member' : only a variable or static data member can be used in a data-sharing clause +## Remarks + A symbol other than a variable or static data member was passed to the reduction clause. +## Example + The following sample generates C3028: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3029.md b/docs/error-messages/compiler-errors-2/compiler-error-c3029.md index 9b7d8632711..584966be5d9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3029.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3029.md @@ -10,8 +10,12 @@ ms.assetid: 655eb04d-504a-468d-8c0c-bda1e5f297b7 > 'symbol' : can only appear once in data-sharing clauses in an OpenMP directive +## Remarks + A symbol was used more than once in one or more clauses in a directive. The symbol can only be used once in the directive. +## Example + The following sample generates C3029: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3030.md b/docs/error-messages/compiler-errors-2/compiler-error-c3030.md index 5d197ced09d..c7adbe28082 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3030.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3030.md @@ -10,8 +10,12 @@ ms.assetid: de92fd7e-29ba-46e8-b43b-f4b985cd74de > 'var' : variable in 'reduction' clause/directive cannot have reference type +## Remarks + You can only pass value parameters to certain clauses, such as the reduction clause. +## Example + The following sample generates C3030: ```cpp From b8f0ae746a348c8084fe9b5e13f8c95cf385d4a0 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 12 Aug 2025 23:34:40 +0800 Subject: [PATCH 1362/2255] Replace term "sample" with "example" for error references in range [C3011, C3030] --- .../compiler-errors-2/compiler-error-c3011.md | 2 +- .../compiler-errors-2/compiler-error-c3012.md | 2 +- .../compiler-errors-2/compiler-error-c3013.md | 2 +- .../compiler-errors-2/compiler-error-c3014.md | 2 +- .../compiler-errors-2/compiler-error-c3015.md | 2 +- .../compiler-errors-2/compiler-error-c3016.md | 2 +- .../compiler-errors-2/compiler-error-c3017.md | 2 +- .../compiler-errors-2/compiler-error-c3018.md | 2 +- .../compiler-errors-2/compiler-error-c3019.md | 2 +- .../compiler-errors-2/compiler-error-c3020.md | 6 +++--- .../compiler-errors-2/compiler-error-c3021.md | 2 +- .../compiler-errors-2/compiler-error-c3022.md | 2 +- .../compiler-errors-2/compiler-error-c3023.md | 2 +- .../compiler-errors-2/compiler-error-c3024.md | 2 +- .../compiler-errors-2/compiler-error-c3025.md | 2 +- .../compiler-errors-2/compiler-error-c3026.md | 2 +- .../compiler-errors-2/compiler-error-c3027.md | 2 +- .../compiler-errors-2/compiler-error-c3028.md | 2 +- .../compiler-errors-2/compiler-error-c3029.md | 2 +- .../compiler-errors-2/compiler-error-c3030.md | 2 +- 20 files changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3011.md b/docs/error-messages/compiler-errors-2/compiler-error-c3011.md index 27ca8b1ad47..db0c349c4cf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3011.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3011.md @@ -16,7 +16,7 @@ An `omp` parallel region cannot contain inline assembly instructions. ## Example -The following sample generates C3011: +The following example generates C3011: ```cpp // C3011.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3012.md b/docs/error-messages/compiler-errors-2/compiler-error-c3012.md index c0e3ad5038a..2948a59c08c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3012.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3012.md @@ -16,7 +16,7 @@ A [compiler intrinsic](../../intrinsics/compiler-intrinsics.md) function is not ## Example -The following sample generates C3012, and shows one way to fix it: +The following example generates C3012, and shows one way to fix it: ```cpp // C3012.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3013.md b/docs/error-messages/compiler-errors-2/compiler-error-c3013.md index 2c8d9745f1c..ecd9bae6569 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3013.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3013.md @@ -16,7 +16,7 @@ A clause appeared twice on the same directive. Delete one occurrence of the clau ## Example -The following sample generates C3013: +The following example generates C3013: ```cpp // C3013.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3014.md b/docs/error-messages/compiler-errors-2/compiler-error-c3014.md index 66db6d4d0a9..e245421fe56 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3014.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3014.md @@ -16,7 +16,7 @@ It is an error for anything other than a **`for`** loop to immediately follow a ## Example -The following sample generates C3014: +The following example generates C3014: ```cpp // C3014.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3015.md b/docs/error-messages/compiler-errors-2/compiler-error-c3015.md index 395e5bf21b9..a169793ab6d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3015.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3015.md @@ -16,7 +16,7 @@ A **`for`** loop in an OpenMP statement must be fully and explicitly specified. ## Example -The following sample generates C3015: +The following example generates C3015: ```cpp // C3015.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3016.md b/docs/error-messages/compiler-errors-2/compiler-error-c3016.md index eebec69cdea..b601657146f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3016.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3016.md @@ -16,7 +16,7 @@ The index variable in an OpenMP **`for`** statement must be a signed integral ty ## Example -The following sample generates C3016: +The following example generates C3016: ```cpp // C3016.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3017.md b/docs/error-messages/compiler-errors-2/compiler-error-c3017.md index cc236ebc241..54cc4adfc14 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3017.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3017.md @@ -16,7 +16,7 @@ A **`for`** loop in an OpenMP statement must be fully and explicitly specified. ## Example -The following sample generates C3017: +The following example generates C3017: ```cpp // C3017.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3018.md b/docs/error-messages/compiler-errors-2/compiler-error-c3018.md index 7e0760e0317..6d90acaad62 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3018.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3018.md @@ -16,7 +16,7 @@ A **`for`** loop in an OpenMP statement must use the same variable for its test ## Example -The following sample generates C3018: +The following example generates C3018: ```cpp // C3018.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3019.md b/docs/error-messages/compiler-errors-2/compiler-error-c3019.md index 5e26f0053ad..5fe82297864 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3019.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3019.md @@ -16,7 +16,7 @@ The increment part of an OpenMP **`for`** loop must use the index variable both ## Example -The following sample generates C3019: +The following example generates C3019: ```cpp // C3019.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3020.md b/docs/error-messages/compiler-errors-2/compiler-error-c3020.md index 4dd37d8ea96..300cdf6c831 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3020.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3020.md @@ -16,7 +16,7 @@ An OpenMP **`for`** loop may not modify the index (loop counter) in the body of ## Examples -The following sample generates C3020: +The following example generates C3020: ```cpp // C3020.cpp @@ -37,7 +37,7 @@ int main() { A variable declared with [lastprivate](../../parallel/openmp/reference/openmp-clauses.md#lastprivate) cannot be used as the index inside a parallelized loop. -The following sample will give C3020 for the second lastprivate because that lastprivate will trigger a write to idx_a within the outermost for loop. The first lastprivate doesn't give an error because that lastprivate triggers a write to idx_a outside the outermost for loop (technically, at the very end of the last iteration). The following sample generates C3020. +The following example will give C3020 for the second lastprivate because that lastprivate will trigger a write to idx_a within the outermost for loop. The first lastprivate doesn't give an error because that lastprivate triggers a write to idx_a outside the outermost for loop (technically, at the very end of the last iteration). The following example generates C3020. ```cpp // C3020b.cpp @@ -56,7 +56,7 @@ void test(int first, int last) } ``` -The following sample demonstrates a possible resolution: +The following example demonstrates a possible resolution: ```cpp // C3020c.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3021.md b/docs/error-messages/compiler-errors-2/compiler-error-c3021.md index 4ce78cd3f75..968c628c7ad 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3021.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3021.md @@ -16,7 +16,7 @@ An argument is required for an OpenMP directive. ## Example -The following sample generates C3021: +The following example generates C3021: ```cpp // C3021.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3022.md b/docs/error-messages/compiler-errors-2/compiler-error-c3022.md index ca958d5229a..7c352d250d9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3022.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3022.md @@ -16,7 +16,7 @@ An unsupported value was passed to a clause. ## Example -The following sample generates C3022: +The following example generates C3022: ```cpp // C3022.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3023.md b/docs/error-messages/compiler-errors-2/compiler-error-c3023.md index dc55a9ee9eb..f99d1ac39e7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3023.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3023.md @@ -16,7 +16,7 @@ The values passed to a clause were not valid. ## Example -The following sample generates C3023: +The following example generates C3023: ```cpp // C3023.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3024.md b/docs/error-messages/compiler-errors-2/compiler-error-c3024.md index 33f5f906d85..0f6864ed9c9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3024.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3024.md @@ -16,7 +16,7 @@ A value cannot be passed to the run-time parameter of the schedule clause. ## Example -The following sample generates C3024: +The following example generates C3024: ```cpp // C3024.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3025.md b/docs/error-messages/compiler-errors-2/compiler-error-c3025.md index 7b7b1209762..619083a1f11 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3025.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3025.md @@ -16,7 +16,7 @@ A clause requires an integer expression but was given a noninteger expression. ## Example -The following sample generates C3025. +The following example generates C3025. ```cpp // C3025.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3026.md b/docs/error-messages/compiler-errors-2/compiler-error-c3026.md index e80366db2ff..102e9ef052b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3026.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3026.md @@ -16,7 +16,7 @@ A clause was passed an integer value, but the value was not a positive number. T ## Example -The following sample generates C3026: +The following example generates C3026: ```cpp // C3026.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3027.md b/docs/error-messages/compiler-errors-2/compiler-error-c3027.md index be2f51da20b..3a36d706f33 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3027.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3027.md @@ -16,7 +16,7 @@ A clause that requires an arithmetic or pointer expression was passed another ki ## Example -The following sample generates C3027: +The following example generates C3027: ```cpp // C3027.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3028.md b/docs/error-messages/compiler-errors-2/compiler-error-c3028.md index 9ea3e8e09bc..953ff6ac405 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3028.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3028.md @@ -16,7 +16,7 @@ A symbol other than a variable or static data member was passed to the reduction ## Example -The following sample generates C3028: +The following example generates C3028: ```cpp // C3028.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3029.md b/docs/error-messages/compiler-errors-2/compiler-error-c3029.md index 584966be5d9..399a2bf04f7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3029.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3029.md @@ -16,7 +16,7 @@ A symbol was used more than once in one or more clauses in a directive. The symb ## Example -The following sample generates C3029: +The following example generates C3029: ```cpp // C3029.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3030.md b/docs/error-messages/compiler-errors-2/compiler-error-c3030.md index c7adbe28082..2bb0c9c44f7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3030.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3030.md @@ -16,7 +16,7 @@ You can only pass value parameters to certain clauses, such as the reduction cla ## Example -The following sample generates C3030: +The following example generates C3030: ```cpp // C3030.cpp From 23617912fe18a23bc57bc5b9db1fe33220eaea7b Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 12 Aug 2025 23:37:40 +0800 Subject: [PATCH 1363/2255] Update metadata for error references in range [C3011, C3030] --- .../error-messages/compiler-errors-2/compiler-error-c3011.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3012.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3013.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3014.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3015.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3016.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3017.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3018.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3019.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3020.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3021.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3022.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3023.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3024.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3025.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3026.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3027.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3028.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3029.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3030.md | 5 ++--- 20 files changed, 40 insertions(+), 60 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3011.md b/docs/error-messages/compiler-errors-2/compiler-error-c3011.md index db0c349c4cf..65e8f9cd82b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3011.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3011.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3011" title: "Compiler Error C3011" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3011" +ms.date: 11/04/2016 f1_keywords: ["C3011"] helpviewer_keywords: ["C3011"] -ms.assetid: 24c3a917-ebff-4deb-9155-23adf6468531 --- # Compiler Error C3011 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3012.md b/docs/error-messages/compiler-errors-2/compiler-error-c3012.md index 2948a59c08c..e6abf61a319 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3012.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3012.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3012" title: "Compiler Error C3012" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3012" +ms.date: 11/04/2016 f1_keywords: ["C3012"] helpviewer_keywords: ["C3012"] -ms.assetid: cc7040b1-b3fb-4da6-a474-877914d30332 --- # Compiler Error C3012 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3013.md b/docs/error-messages/compiler-errors-2/compiler-error-c3013.md index ecd9bae6569..744d28b348c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3013.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3013.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3013" title: "Compiler Error C3013" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3013" +ms.date: 11/04/2016 f1_keywords: ["C3013"] helpviewer_keywords: ["C3013"] -ms.assetid: f896777d-27e6-4b6d-baab-1567317f3374 --- # Compiler Error C3013 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3014.md b/docs/error-messages/compiler-errors-2/compiler-error-c3014.md index e245421fe56..b57685ca12d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3014.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3014.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3014" title: "Compiler Error C3014" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3014" +ms.date: 11/04/2016 f1_keywords: ["C3014"] helpviewer_keywords: ["C3014"] -ms.assetid: af1c5b0c-dbf9-4274-b06a-c6c2cdcf2a52 --- # Compiler Error C3014 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3015.md b/docs/error-messages/compiler-errors-2/compiler-error-c3015.md index a169793ab6d..57be2b65cd9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3015.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3015.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3015" title: "Compiler Error C3015" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3015" +ms.date: 11/04/2016 f1_keywords: ["C3015"] helpviewer_keywords: ["C3015"] -ms.assetid: d5e8e50b-7542-4b2d-8665-1b22072a5bc6 --- # Compiler Error C3015 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3016.md b/docs/error-messages/compiler-errors-2/compiler-error-c3016.md index b601657146f..4da397545bc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3016.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3016.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3016" title: "Compiler Error C3016" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3016" +ms.date: 11/04/2016 f1_keywords: ["C3016"] helpviewer_keywords: ["C3016"] -ms.assetid: 3423467e-e8bb-4f35-b4db-7925cafa74c1 --- # Compiler Error C3016 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3017.md b/docs/error-messages/compiler-errors-2/compiler-error-c3017.md index 54cc4adfc14..5a9bcff8460 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3017.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3017.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3017" title: "Compiler Error C3017" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3017" +ms.date: 11/04/2016 f1_keywords: ["C3017"] helpviewer_keywords: ["C3017"] -ms.assetid: 12ab2c2a-d0d2-4900-9cbf-39be0af590dd --- # Compiler Error C3017 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3018.md b/docs/error-messages/compiler-errors-2/compiler-error-c3018.md index 6d90acaad62..4dc33cbf6a4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3018.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3018.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3018" title: "Compiler Error C3018" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3018" +ms.date: 11/04/2016 f1_keywords: ["C3018"] helpviewer_keywords: ["C3018"] -ms.assetid: 685be45f-f116-43a8-a88d-05ab6616e2f1 --- # Compiler Error C3018 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3019.md b/docs/error-messages/compiler-errors-2/compiler-error-c3019.md index 5fe82297864..ad39fe669ac 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3019.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3019.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3019" title: "Compiler Error C3019" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3019" +ms.date: 11/04/2016 f1_keywords: ["C3019"] helpviewer_keywords: ["C3019"] -ms.assetid: 31a6d9b6-d29f-4499-9ad8-48dd751e87c7 --- # Compiler Error C3019 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3020.md b/docs/error-messages/compiler-errors-2/compiler-error-c3020.md index 300cdf6c831..ca7e3d3f787 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3020.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3020.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3020" title: "Compiler Error C3020" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3020" +ms.date: 11/04/2016 f1_keywords: ["C3020"] helpviewer_keywords: ["C3020"] -ms.assetid: f625c7a3-afaa-4bd8-9c1b-51891b832f36 --- # Compiler Error C3020 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3021.md b/docs/error-messages/compiler-errors-2/compiler-error-c3021.md index 968c628c7ad..c144f991470 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3021.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3021.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3021" title: "Compiler Error C3021" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3021" +ms.date: 11/04/2016 f1_keywords: ["C3021"] helpviewer_keywords: ["C3021"] -ms.assetid: 0cef6d97-e267-438a-ac8b-0daf5bbbc2cf --- # Compiler Error C3021 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3022.md b/docs/error-messages/compiler-errors-2/compiler-error-c3022.md index 7c352d250d9..a833519ab11 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3022.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3022.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3022" title: "Compiler Error C3022" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3022" +ms.date: 11/04/2016 f1_keywords: ["C3022"] helpviewer_keywords: ["C3022"] -ms.assetid: 9f1d444c-6c6e-48d9-9346-69128390aa33 --- # Compiler Error C3022 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3023.md b/docs/error-messages/compiler-errors-2/compiler-error-c3023.md index f99d1ac39e7..76419763f3a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3023.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3023.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3023" title: "Compiler Error C3023" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3023" +ms.date: 11/04/2016 f1_keywords: ["C3023"] helpviewer_keywords: ["C3023"] -ms.assetid: 89dcce98-3cd7-4931-a50f-87df1d2ebc9b --- # Compiler Error C3023 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3024.md b/docs/error-messages/compiler-errors-2/compiler-error-c3024.md index 0f6864ed9c9..4fd7152b8fb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3024.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3024.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3024" title: "Compiler Error C3024" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3024" +ms.date: 11/04/2016 f1_keywords: ["C3024"] helpviewer_keywords: ["C3024"] -ms.assetid: 1c031c28-ce37-4de3-aead-cfe76b261856 --- # Compiler Error C3024 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3025.md b/docs/error-messages/compiler-errors-2/compiler-error-c3025.md index 619083a1f11..5f8148aa80d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3025.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3025.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3025" title: "Compiler Error C3025" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3025" +ms.date: 11/04/2016 f1_keywords: ["C3025"] helpviewer_keywords: ["C3025"] -ms.assetid: 4442f5a3-d9ea-4873-b1fb-e7e5bd3cbe5e --- # Compiler Error C3025 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3026.md b/docs/error-messages/compiler-errors-2/compiler-error-c3026.md index 102e9ef052b..458980db4a8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3026.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3026.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3026" title: "Compiler Error C3026" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3026" +ms.date: 11/04/2016 f1_keywords: ["C3026"] helpviewer_keywords: ["C3026"] -ms.assetid: 3297060e-cc5b-4600-a2db-09bfc4ffa21f --- # Compiler Error C3026 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3027.md b/docs/error-messages/compiler-errors-2/compiler-error-c3027.md index 3a36d706f33..853563e4b62 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3027.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3027.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3027" title: "Compiler Error C3027" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3027" +ms.date: 11/04/2016 f1_keywords: ["C3027"] helpviewer_keywords: ["C3027"] -ms.assetid: 6562a5c2-2f28-4b36-91ca-2a64c0f0501a --- # Compiler Error C3027 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3028.md b/docs/error-messages/compiler-errors-2/compiler-error-c3028.md index 953ff6ac405..c4a24a6afbe 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3028.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3028.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3028" title: "Compiler Error C3028" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3028" +ms.date: 11/04/2016 f1_keywords: ["C3028"] helpviewer_keywords: ["C3028"] -ms.assetid: 175e697f-8e8f-492a-8456-6240ffbbb900 --- # Compiler Error C3028 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3029.md b/docs/error-messages/compiler-errors-2/compiler-error-c3029.md index 399a2bf04f7..a92c60fda2a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3029.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3029.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3029" title: "Compiler Error C3029" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3029" +ms.date: 11/04/2016 f1_keywords: ["C3029"] helpviewer_keywords: ["C3029"] -ms.assetid: 655eb04d-504a-468d-8c0c-bda1e5f297b7 --- # Compiler Error C3029 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3030.md b/docs/error-messages/compiler-errors-2/compiler-error-c3030.md index 2bb0c9c44f7..96dde7dad6e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3030.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3030.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3030" title: "Compiler Error C3030" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3030" +ms.date: 11/04/2016 f1_keywords: ["C3030"] helpviewer_keywords: ["C3030"] -ms.assetid: de92fd7e-29ba-46e8-b43b-f4b985cd74de --- # Compiler Error C3030 From 277f4a2600fd368156d8b07acbff2ed0b5fd162a Mon Sep 17 00:00:00 2001 From: MacGyver Codilla <77024043+39otsu@users.noreply.github.com> Date: Tue, 12 Aug 2025 12:46:31 -0700 Subject: [PATCH 1364/2255] Use complete, conjugated sentences Co-authored-by: David Justo --- docs/sanitizers/asan-flags.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 996a29b8de0..5fe7b3aecc6 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -7,7 +7,10 @@ helpviewer_keywords: ["AddressSanitizer options", "AddressSanitizer flags", "Add # AddressSanitizer Runtime Options -The following is a list of supported runtime options that can be set by the `ASAN_OPTIONS` environment variable or by overriding the `__asan_default_options()` user function. Reference: [AddressSanitizer Runtime Options](./asan-runtime.md#runtime-options). While these mirror the options available in Clang's ASan, the description will differ by varying amounts in consideration of the MSVC ASan runtime. +The following is a list of supported actively supported options for the AddressSanitizer. They can be enabled through the `ASAN_OPTIONS` environment variable or by overriding the `__asan_default_options()` user function, as described [here](/asan-runtime.md#runtime-options). + +> [!NOTE] +> These descriptions may vary from those found in Clang's ASan docs to account for MSVC specific behaviors. If you discover options that are inaccurately documented, we invite you to [report a bug](https://aka.ms/feedback/report?space=62). From 10f875711587627496c075696bf8e3e47cb8afc4 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla <77024043+39otsu@users.noreply.github.com> Date: Tue, 12 Aug 2025 12:47:22 -0700 Subject: [PATCH 1365/2255] Update docs/sanitizers/asan-flags.md To fit acrolynx tone and typo preferences. Co-authored-by: David Justo --- docs/sanitizers/asan-flags.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 5fe7b3aecc6..2898327f81a 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -12,7 +12,8 @@ The following is a list of supported actively supported options for the AddressS > [!NOTE] > These descriptions may vary from those found in Clang's ASan docs to account for MSVC specific behaviors. -If you discover options that are inaccurately documented, we invite you to [report a bug](https://aka.ms/feedback/report?space=62). +If you discover documentation errors, report them [here](https://aka.ms/feedback/report?space=62). + | Flag | Default value | Description | |------|---------------|-------------| From f6c0f6b755d5af6e43d985a0e0c80c2a375e1f50 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla <77024043+39otsu@users.noreply.github.com> Date: Tue, 12 Aug 2025 12:49:30 -0700 Subject: [PATCH 1366/2255] Update docs/sanitizers/asan-runtime.md Co-authored-by: David Justo --- docs/sanitizers/asan-runtime.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-runtime.md b/docs/sanitizers/asan-runtime.md index a4daaa517b7..777d3e2be46 100644 --- a/docs/sanitizers/asan-runtime.md +++ b/docs/sanitizers/asan-runtime.md @@ -101,7 +101,7 @@ For an illustration of the alignment requirement and potential issues, see the p ## Runtime options -The MSVC AddressSanitizer is based on the [Clang AddressSanitizer runtime from the llvm-project repository](https://github.com/llvm/llvm-project). Because of this, most of Clang's ASan runtime options available in MSVC as well. [A complete list of runtime options we support is available here](./asan-flags.md). We document some differences in the sections that follow. If you discover options that don't function as expected, [report a bug](https://aka.ms/feedback/report?space=62). +The MSVC AddressSanitizer is a regularly synced fork of the [Clang AddressSanitizer runtime](https://github.com/llvm/llvm-project). As a result, MSVC implicitly inherits many Clang's ASan runtime options. A complete list of options that we actively maintain and test can be found [here](./asan-flags.md). If you discover options that don't function as expected, [report a bug](https://aka.ms/feedback/report?space=62). ### Configure runtime options From 159a75a38f86c1808a8c3d40863f8a2bca3911bb Mon Sep 17 00:00:00 2001 From: Amy Wishnousky Date: Tue, 12 Aug 2025 16:27:52 -0700 Subject: [PATCH 1367/2255] ASAN thunks require /wholearchive The docs do not mention the requirement for /wholearchive when using /INFERASANLIBS:NO. --- docs/sanitizers/asan-building.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/sanitizers/asan-building.md b/docs/sanitizers/asan-building.md index 003492cbbbc..9c7f0db25b3 100644 --- a/docs/sanitizers/asan-building.md +++ b/docs/sanitizers/asan-building.md @@ -128,10 +128,10 @@ The **`/fsanitize=address`** compiler option marks objects to specify which Addr | CRT option | AddressSanitizer runtime library (.lib) | Address runtime binary (.dll) |--|--|--| -| `/MT` or `/MTd` | *`clang_rt.asan_dynamic-{arch}`*, *`clang_rt.asan_static_runtime_thunk-{arch}`* | *`clang_rt.asan_dynamic-{arch}`* -| `/MD` or `/MDd` | *`clang_rt.asan_dynamic-{arch}`*, *`clang_rt.asan_dynamic_runtime_thunk-{arch}`* | *`clang_rt.asan_dynamic-{arch}`* +| `/MT` or `/MTd` | *`clang_rt.asan_dynamic-{arch}.lib`*, *`/wholearchive:clang_rt.asan_static_runtime_thunk-{arch}.lib`* | *`clang_rt.asan_dynamic-{arch}.dll`* +| `/MD` or `/MDd` | *`clang_rt.asan_dynamic-{arch}.lib`*, *`/wholearchive:clang_rt.asan_dynamic_runtime_thunk-{arch}.lib`* | *`clang_rt.asan_dynamic-{arch}.dll`* -The linker option [`/INFERASANLIBS:NO`](../build/reference/inferasanlibs.md) prevents the linker from linking a *`clang_rt.asan*`* library file from the default location. Add the library path in your build scripts if you use this option. Otherwise, the linker reports an unresolved external symbol error. +The linker option [`/INFERASANLIBS:NO`](../build/reference/inferasanlibs.md) prevents the linker from linking a *`clang_rt.asan*`* library file from the default location. Add the library path in your build scripts if you use this option. Otherwise, the linker reports an unresolved external symbol error. Note that the runtime thunk lib **must** be linked with `/wholearchive` option applied. **Previous Versions** @@ -140,12 +140,12 @@ Prior to Visual Studio 17.7 Preview 3, statically linked (**`/MT`** or **`/MTd`* | CRT runtime option | DLL or EXE | AddressSanitizer runtime libraries | |--|--|--| -| **`/MT`** | EXE | *`clang_rt.asan-{arch}`*, *`clang_rt.asan_cxx-{arch}`* | -| **`/MT`** | DLL | *`clang_rt.asan_dll_thunk-{arch}`* | -| **`/MD`** | Either | *`clang_rt.asan_dynamic-{arch}`*, *`clang_rt.asan_dynamic_runtime_thunk-{arch}`* | -| **`/MTd`** | EXE | *`clang_rt.asan_dbg-{arch}`*, *`clang_rt.asan_dbg_cxx-{arch}`* | -| **`/MTd`** | DLL | *`clang_rt.asan_dbg_dll_thunk-{arch}`* | -| **`/MDd`** | Either | *`clang_rt.asan_dbg_dynamic-{arch}`*, *`clang_rt.asan_dbg_dynamic_runtime_thunk-{arch}`* | +| **`/MT`** | EXE | *`/wholearchive:clang_rt.asan-{arch}.lib`*, *`clang_rt.asan_cxx-{arch}.lib`* | +| **`/MT`** | DLL | *`/wholearchive:clang_rt.asan_dll_thunk-{arch}.lib`* | +| **`/MD`** | Either | *`clang_rt.asan_dynamic-{arch}.lib`*, *`/wholearchive:clang_rt.asan_dynamic_runtime_thunk-{arch}.lib`* | +| **`/MTd`** | EXE | *`/wholearchive:clang_rt.asan_dbg-{arch}.lib`*, *`clang_rt.asan_cxx_dbg-{arch}.lib`* | +| **`/MTd`** | DLL | *`/wholearchive:clang_rt.asan_dbg_dll_thunk-{arch}.lib`* | +| **`/MDd`** | Either | *`/wholearchive:clang_rt.asan_dbg_dynamic-{arch}.lib`*, *`clang_rt.asan_dbg_dynamic_runtime_thunk-{arch}.lib`* | ## Visual Studio integration From 90cb1794d587c9c74783d42eddae11c0c160c18d Mon Sep 17 00:00:00 2001 From: Amy Wishnousky Date: Tue, 12 Aug 2025 16:31:01 -0700 Subject: [PATCH 1368/2255] lib -> libraries --- docs/sanitizers/asan-building.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-building.md b/docs/sanitizers/asan-building.md index 9c7f0db25b3..cbeba6747dc 100644 --- a/docs/sanitizers/asan-building.md +++ b/docs/sanitizers/asan-building.md @@ -131,7 +131,7 @@ The **`/fsanitize=address`** compiler option marks objects to specify which Addr | `/MT` or `/MTd` | *`clang_rt.asan_dynamic-{arch}.lib`*, *`/wholearchive:clang_rt.asan_static_runtime_thunk-{arch}.lib`* | *`clang_rt.asan_dynamic-{arch}.dll`* | `/MD` or `/MDd` | *`clang_rt.asan_dynamic-{arch}.lib`*, *`/wholearchive:clang_rt.asan_dynamic_runtime_thunk-{arch}.lib`* | *`clang_rt.asan_dynamic-{arch}.dll`* -The linker option [`/INFERASANLIBS:NO`](../build/reference/inferasanlibs.md) prevents the linker from linking a *`clang_rt.asan*`* library file from the default location. Add the library path in your build scripts if you use this option. Otherwise, the linker reports an unresolved external symbol error. Note that the runtime thunk lib **must** be linked with `/wholearchive` option applied. +The linker option [`/INFERASANLIBS:NO`](../build/reference/inferasanlibs.md) prevents the linker from linking a *`clang_rt.asan*`* library file from the default location. Add the library path in your build scripts if you use this option. Otherwise, the linker reports an unresolved external symbol error. Note that the runtime thunk libraries **must** be linked with `/wholearchive` option applied. **Previous Versions** From 816ede4354470e69802b1be7ccc8d13c156c2888 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 13 Aug 2025 16:47:41 +0800 Subject: [PATCH 1369/2255] Add blockquotes for error messages in range [C3031, C3050] --- docs/error-messages/compiler-errors-2/compiler-error-c3031.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3032.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3033.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3034.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3035.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3036.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3037.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3038.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3039.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3040.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3041.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3042.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3043.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3044.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3045.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3046.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3048.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3049.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3050.md | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3031.md b/docs/error-messages/compiler-errors-2/compiler-error-c3031.md index ad1689a82f3..27d239f9ac0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3031.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3031.md @@ -8,7 +8,7 @@ ms.assetid: 7e621e7e-eda7-45b5-8836-29599cd05255 --- # Compiler Error C3031 -'var' : variable in 'reduction' clause must have scalar arithmetic type +> 'var' : variable in 'reduction' clause must have scalar arithmetic type A variable of the wrong type was passed to a reduction clause. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3032.md b/docs/error-messages/compiler-errors-2/compiler-error-c3032.md index 0feba15df8c..61a2bf51418 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3032.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3032.md @@ -8,7 +8,7 @@ ms.assetid: 6a92bd8e-319f-4a99-aef4-a9021f6f9928 --- # Compiler Error C3032 -'var' : variable in 'clause' clause cannot have incomplete type 'type' +> 'var' : variable in 'clause' clause cannot have incomplete type 'type' Types passed to certain clauses must be fully visible to the compiler. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3033.md b/docs/error-messages/compiler-errors-2/compiler-error-c3033.md index b1dcebc9f78..1489b9c279d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3033.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3033.md @@ -8,7 +8,7 @@ ms.assetid: 8628b6bb-a650-4ed2-af13-57acd2f7ddbb --- # Compiler Error C3033 -'var' : variable in 'clause' clause cannot have const-qualified type +> 'var' : variable in 'clause' clause cannot have const-qualified type Values passed to certain clauses cannot be **`const`** variables. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3034.md b/docs/error-messages/compiler-errors-2/compiler-error-c3034.md index c6581ba1b3e..d4ca292fa62 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3034.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3034.md @@ -8,7 +8,7 @@ ms.assetid: 49db8bac-2720-4622-94e3-7988f1603fa3 --- # Compiler Error C3034 -OpenMP 'directive1' directive cannot be directly nested within 'directive2' directive +> OpenMP 'directive1' directive cannot be directly nested within 'directive2' directive Some directives cannot be nested. To fix this error, you can merge the statements of both directives into the block of one directive, or you can construct consecutive directives. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3035.md b/docs/error-messages/compiler-errors-2/compiler-error-c3035.md index 3fcf1e25f17..3fb792d4cb6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3035.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3035.md @@ -8,7 +8,7 @@ ms.assetid: af34fad2-2b45-42d0-a9ff-04eab3e91c37 --- # Compiler Error C3035 -OpenMP 'ordered' directive must bind directly to a 'for' or 'parallel for' directive with the 'ordered' clause +> OpenMP 'ordered' directive must bind directly to a 'for' or 'parallel for' directive with the 'ordered' clause An ordered clause was ill formed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3036.md b/docs/error-messages/compiler-errors-2/compiler-error-c3036.md index 597adf0ff4f..a40d27cd1ec 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3036.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3036.md @@ -8,7 +8,7 @@ ms.assetid: 10c6993e-bc42-4a07-85c7-cdc34ac30906 --- # Compiler Error C3036 -'operator' : invalid operator token in OpenMP 'reduction' clause +> 'operator' : invalid operator token in OpenMP 'reduction' clause A [reduction](../../parallel/openmp/reference/openmp-clauses.md#reduction) clause was not specified correctly. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3037.md b/docs/error-messages/compiler-errors-2/compiler-error-c3037.md index 13cb9a96f50..70b63b40c4d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3037.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3037.md @@ -8,7 +8,7 @@ ms.assetid: 9ba8a890-d3c7-4cce-93c5-d358e2bfad28 --- # Compiler Error C3037 -'var' : variable in 'reduction' clause must be shared in enclosing context +> 'var' : variable in 'reduction' clause must be shared in enclosing context A variable specified in a [reduction](../../parallel/openmp/reference/openmp-clauses.md#reduction) clause may not be private to each thread in the context. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3038.md b/docs/error-messages/compiler-errors-2/compiler-error-c3038.md index 1219fcdd1e3..9740f9aac41 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3038.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3038.md @@ -8,7 +8,7 @@ ms.assetid: 140ada3e-5636-43ef-a4ee-22a9f66a771f --- # Compiler Error C3038 -'var' : variable in 'private' clause cannot be a reduction variable in enclosing context +> 'var' : variable in 'private' clause cannot be a reduction variable in enclosing context Variables that appear in the [reduction](../../parallel/openmp/reference/openmp-clauses.md#reduction) clause of a parallel directive cannot be specified in a [private](../../parallel/openmp/reference/openmp-clauses.md#private-openmp) clause on a work-sharing directive that binds to the parallel construct. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3039.md b/docs/error-messages/compiler-errors-2/compiler-error-c3039.md index c5029592752..a391e8b3ef7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3039.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3039.md @@ -8,7 +8,7 @@ ms.assetid: 02776f16-f57a-4ffd-b7f7-9c696b633e08 --- # Compiler Error C3039 -'var' : index variable in OpenMP 'for' statement cannot be a reduction variable +> 'var' : index variable in OpenMP 'for' statement cannot be a reduction variable An index variable is implicitly private, so the variable cannot be used in a [reduction](../../parallel/openmp/reference/openmp-clauses.md#reduction) clause in the enclosing [parallel](../../parallel/openmp/reference/openmp-directives.md#parallel) directive. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3040.md b/docs/error-messages/compiler-errors-2/compiler-error-c3040.md index 33c117e5f43..c11aff1ad67 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3040.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3040.md @@ -8,7 +8,7 @@ ms.assetid: 29e857ac-74f0-4ec6-becf-9026e38c160e --- # Compiler Error C3040 -'var' : type of variable in 'reduction' clause is incompatible with reduction operator 'operator' +> 'var' : type of variable in 'reduction' clause is incompatible with reduction operator 'operator' A variable in a [reduction](../../parallel/openmp/reference/openmp-clauses.md#reduction) clause cannot be used with the reduction operator. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3041.md b/docs/error-messages/compiler-errors-2/compiler-error-c3041.md index fb2a1a285d7..4869e907cfd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3041.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3041.md @@ -8,7 +8,7 @@ ms.assetid: 9df1ae44-3ac7-4c6c-899f-f35ffe7ccf0d --- # Compiler Error C3041 -'var' : variable in 'copyprivate' clause must be private in enclosing context +> 'var' : variable in 'copyprivate' clause must be private in enclosing context A variable passed to [copyprivate](../../parallel/openmp/reference/openmp-clauses.md#copyprivate) cannot be shared in the enclosing context. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3042.md b/docs/error-messages/compiler-errors-2/compiler-error-c3042.md index ba13716ff03..d3b8f8055d3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3042.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3042.md @@ -8,7 +8,7 @@ ms.assetid: bf73f61e-5bd2-40a8-9b06-6244e6a15a41 --- # Compiler Error C3042 -'copyprivate' and 'nowait' clauses cannot appear together on OpenMP 'directive' directive +> 'copyprivate' and 'nowait' clauses cannot appear together on OpenMP 'directive' directive The [copyprivate](../../parallel/openmp/reference/openmp-clauses.md#copyprivate) and [nowait](../../parallel/openmp/reference/openmp-clauses.md#nowait) clauses are mutually exclusive on the specified directive. To fix this error, remove one or both of the `copyprivate` or `nowait` clauses. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3043.md b/docs/error-messages/compiler-errors-2/compiler-error-c3043.md index 2e2a807aa5e..ca41588339d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3043.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3043.md @@ -8,7 +8,7 @@ ms.assetid: 0ef55e63-e82b-48eb-9d44-690950ac34c6 --- # Compiler Error C3043 -OpenMP 'critical' directive cannot be nested in 'critical' directive with same name +> OpenMP 'critical' directive cannot be nested in 'critical' directive with same name A [critical](../../parallel/openmp/reference/openmp-directives.md#critical) directive cannot be nested in a `critical` directive that uses the same name. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3044.md b/docs/error-messages/compiler-errors-2/compiler-error-c3044.md index 26b146188d2..b8b4f0711c0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3044.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3044.md @@ -8,7 +8,7 @@ ms.assetid: 9f3e25b2-4676-49ab-97bf-6c88cd0fa377 --- # Compiler Error C3044 -'section' : only allowed directly nested under an OpenMP 'sections' directive +> 'section' : only allowed directly nested under an OpenMP 'sections' directive The compiler found a `section` directive was used incorrectly. For more information, see [sections](../../parallel/openmp/reference/openmp-directives.md#sections-openmp). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3045.md b/docs/error-messages/compiler-errors-2/compiler-error-c3045.md index 67891c401ee..8cf45bdbc54 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3045.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3045.md @@ -8,7 +8,7 @@ ms.assetid: 9351ba3e-3d3f-455f-ac90-a810fa9fd947 --- # Compiler Error C3045 -Expected a compound statement following OpenMP 'sections' directive. Missing '{' +> Expected a compound statement following OpenMP 'sections' directive. Missing '{' A code block delimited by braces must follow a [sections](../../parallel/openmp/reference/openmp-directives.md#sections-openmp) directive. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3046.md b/docs/error-messages/compiler-errors-2/compiler-error-c3046.md index da74cf83c76..79f872c5a6d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3046.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3046.md @@ -8,7 +8,7 @@ ms.assetid: 2e53d835-faa1-4ec0-9807-41f3dc552635 --- # Compiler Error C3046 -Missing structured block in an OpenMP '#pragma omp sections' region +> Missing structured block in an OpenMP '#pragma omp sections' region A [sections](../../parallel/openmp/reference/openmp-directives.md#sections-openmp) directive has an empty code block. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3048.md b/docs/error-messages/compiler-errors-2/compiler-error-c3048.md index 62ceeb6d4e4..09f8b66c30a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3048.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3048.md @@ -8,7 +8,7 @@ ms.assetid: 48e07091-94d9-471d-befe-7e2507631edd --- # Compiler Error C3048 -Expression following '#pragma omp atomic' has improper form +> Expression following '#pragma omp atomic' has improper form An atomic directive was incorrectly specified. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3049.md b/docs/error-messages/compiler-errors-2/compiler-error-c3049.md index 3b87b0f3746..8930091c500 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3049.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3049.md @@ -8,7 +8,7 @@ ms.assetid: 6ddf54f6-2c30-4d04-b637-98c6c922c533 --- # Compiler Error C3049 -'arg' : invalid argument in OpenMP 'default' clause +> 'arg' : invalid argument in OpenMP 'default' clause An incorrect value was passed to a [default](../../parallel/openmp/reference/openmp-clauses.md#default-openmp) clause. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3050.md b/docs/error-messages/compiler-errors-2/compiler-error-c3050.md index 95167d41bce..594d824bf58 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3050.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3050.md @@ -8,7 +8,7 @@ ms.assetid: ee090a0b-29cc-4215-a2f9-d82af79b8e82 --- # Compiler Error C3050 -'type1' : a ref class cannot inherit from 'type1' +> 'type1' : a ref class cannot inherit from 'type1' `System::ValueType` cannot be a base class for a reference type. From fc24cb31d19d50b1feea630fa384c134c7930bf3 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 13 Aug 2025 16:52:24 +0800 Subject: [PATCH 1370/2255] Add "Remarks" and "Example" headings for error references in range [C3031, C3050] --- docs/error-messages/compiler-errors-2/compiler-error-c3031.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3032.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3033.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3034.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3035.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3036.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3037.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3038.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3039.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3040.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3041.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3042.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3043.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3044.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3045.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3046.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3047.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3048.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3049.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3050.md | 4 ++++ 20 files changed, 78 insertions(+) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3031.md b/docs/error-messages/compiler-errors-2/compiler-error-c3031.md index 27d239f9ac0..8c446168730 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3031.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3031.md @@ -10,8 +10,12 @@ ms.assetid: 7e621e7e-eda7-45b5-8836-29599cd05255 > 'var' : variable in 'reduction' clause must have scalar arithmetic type +## Remarks + A variable of the wrong type was passed to a reduction clause. +## Example + The following sample generates C3031: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3032.md b/docs/error-messages/compiler-errors-2/compiler-error-c3032.md index 61a2bf51418..4dd33c98458 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3032.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3032.md @@ -10,8 +10,12 @@ ms.assetid: 6a92bd8e-319f-4a99-aef4-a9021f6f9928 > 'var' : variable in 'clause' clause cannot have incomplete type 'type' +## Remarks + Types passed to certain clauses must be fully visible to the compiler. +## Example + The following sample generates C3032: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3033.md b/docs/error-messages/compiler-errors-2/compiler-error-c3033.md index 1489b9c279d..21535cd2211 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3033.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3033.md @@ -10,8 +10,12 @@ ms.assetid: 8628b6bb-a650-4ed2-af13-57acd2f7ddbb > 'var' : variable in 'clause' clause cannot have const-qualified type +## Remarks + Values passed to certain clauses cannot be **`const`** variables. +## Example + The following sample generates C3033: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3034.md b/docs/error-messages/compiler-errors-2/compiler-error-c3034.md index d4ca292fa62..ea58959910d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3034.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3034.md @@ -10,8 +10,12 @@ ms.assetid: 49db8bac-2720-4622-94e3-7988f1603fa3 > OpenMP 'directive1' directive cannot be directly nested within 'directive2' directive +## Remarks + Some directives cannot be nested. To fix this error, you can merge the statements of both directives into the block of one directive, or you can construct consecutive directives. +## Example + The following sample generates C3034: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3035.md b/docs/error-messages/compiler-errors-2/compiler-error-c3035.md index 3fb792d4cb6..e5a6e612b3f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3035.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3035.md @@ -10,8 +10,12 @@ ms.assetid: af34fad2-2b45-42d0-a9ff-04eab3e91c37 > OpenMP 'ordered' directive must bind directly to a 'for' or 'parallel for' directive with the 'ordered' clause +## Remarks + An ordered clause was ill formed. +## Example + The following sample generates C3035: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3036.md b/docs/error-messages/compiler-errors-2/compiler-error-c3036.md index a40d27cd1ec..eb4d9dab508 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3036.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3036.md @@ -10,8 +10,12 @@ ms.assetid: 10c6993e-bc42-4a07-85c7-cdc34ac30906 > 'operator' : invalid operator token in OpenMP 'reduction' clause +## Remarks + A [reduction](../../parallel/openmp/reference/openmp-clauses.md#reduction) clause was not specified correctly. +## Example + The following sample generates C3036: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3037.md b/docs/error-messages/compiler-errors-2/compiler-error-c3037.md index 70b63b40c4d..bb520c38d8d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3037.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3037.md @@ -10,8 +10,12 @@ ms.assetid: 9ba8a890-d3c7-4cce-93c5-d358e2bfad28 > 'var' : variable in 'reduction' clause must be shared in enclosing context +## Remarks + A variable specified in a [reduction](../../parallel/openmp/reference/openmp-clauses.md#reduction) clause may not be private to each thread in the context. +## Example + The following sample generates C3037: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3038.md b/docs/error-messages/compiler-errors-2/compiler-error-c3038.md index 9740f9aac41..f35af110b43 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3038.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3038.md @@ -10,8 +10,12 @@ ms.assetid: 140ada3e-5636-43ef-a4ee-22a9f66a771f > 'var' : variable in 'private' clause cannot be a reduction variable in enclosing context +## Remarks + Variables that appear in the [reduction](../../parallel/openmp/reference/openmp-clauses.md#reduction) clause of a parallel directive cannot be specified in a [private](../../parallel/openmp/reference/openmp-clauses.md#private-openmp) clause on a work-sharing directive that binds to the parallel construct. +## Example + The following sample generates C3038: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3039.md b/docs/error-messages/compiler-errors-2/compiler-error-c3039.md index a391e8b3ef7..75733d3337f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3039.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3039.md @@ -10,6 +10,8 @@ ms.assetid: 02776f16-f57a-4ffd-b7f7-9c696b633e08 > 'var' : index variable in OpenMP 'for' statement cannot be a reduction variable +## Remarks + An index variable is implicitly private, so the variable cannot be used in a [reduction](../../parallel/openmp/reference/openmp-clauses.md#reduction) clause in the enclosing [parallel](../../parallel/openmp/reference/openmp-directives.md#parallel) directive. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3040.md b/docs/error-messages/compiler-errors-2/compiler-error-c3040.md index c11aff1ad67..011bc913f54 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3040.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3040.md @@ -10,8 +10,12 @@ ms.assetid: 29e857ac-74f0-4ec6-becf-9026e38c160e > 'var' : type of variable in 'reduction' clause is incompatible with reduction operator 'operator' +## Remarks + A variable in a [reduction](../../parallel/openmp/reference/openmp-clauses.md#reduction) clause cannot be used with the reduction operator. +## Example + The following sample generates C3040: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3041.md b/docs/error-messages/compiler-errors-2/compiler-error-c3041.md index 4869e907cfd..088d53e7be2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3041.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3041.md @@ -10,8 +10,12 @@ ms.assetid: 9df1ae44-3ac7-4c6c-899f-f35ffe7ccf0d > 'var' : variable in 'copyprivate' clause must be private in enclosing context +## Remarks + A variable passed to [copyprivate](../../parallel/openmp/reference/openmp-clauses.md#copyprivate) cannot be shared in the enclosing context. +## Example + The following sample generates C3041: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3042.md b/docs/error-messages/compiler-errors-2/compiler-error-c3042.md index d3b8f8055d3..f992ea09aac 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3042.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3042.md @@ -10,8 +10,12 @@ ms.assetid: bf73f61e-5bd2-40a8-9b06-6244e6a15a41 > 'copyprivate' and 'nowait' clauses cannot appear together on OpenMP 'directive' directive +## Remarks + The [copyprivate](../../parallel/openmp/reference/openmp-clauses.md#copyprivate) and [nowait](../../parallel/openmp/reference/openmp-clauses.md#nowait) clauses are mutually exclusive on the specified directive. To fix this error, remove one or both of the `copyprivate` or `nowait` clauses. +## Example + The following sample generates C3042: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3043.md b/docs/error-messages/compiler-errors-2/compiler-error-c3043.md index ca41588339d..08592abebe2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3043.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3043.md @@ -10,8 +10,12 @@ ms.assetid: 0ef55e63-e82b-48eb-9d44-690950ac34c6 > OpenMP 'critical' directive cannot be nested in 'critical' directive with same name +## Remarks + A [critical](../../parallel/openmp/reference/openmp-directives.md#critical) directive cannot be nested in a `critical` directive that uses the same name. +## Example + The following sample generates C3043: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3044.md b/docs/error-messages/compiler-errors-2/compiler-error-c3044.md index b8b4f0711c0..82268cff9b0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3044.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3044.md @@ -10,8 +10,12 @@ ms.assetid: 9f3e25b2-4676-49ab-97bf-6c88cd0fa377 > 'section' : only allowed directly nested under an OpenMP 'sections' directive +## Remarks + The compiler found a `section` directive was used incorrectly. For more information, see [sections](../../parallel/openmp/reference/openmp-directives.md#sections-openmp). +## Example + The following sample generates C3044: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3045.md b/docs/error-messages/compiler-errors-2/compiler-error-c3045.md index 8cf45bdbc54..7020dbbdc89 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3045.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3045.md @@ -10,8 +10,12 @@ ms.assetid: 9351ba3e-3d3f-455f-ac90-a810fa9fd947 > Expected a compound statement following OpenMP 'sections' directive. Missing '{' +## Remarks + A code block delimited by braces must follow a [sections](../../parallel/openmp/reference/openmp-directives.md#sections-openmp) directive. +## Example + The following sample generates C3045: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3046.md b/docs/error-messages/compiler-errors-2/compiler-error-c3046.md index 79f872c5a6d..16708bcf653 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3046.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3046.md @@ -10,8 +10,12 @@ ms.assetid: 2e53d835-faa1-4ec0-9807-41f3dc552635 > Missing structured block in an OpenMP '#pragma omp sections' region +## Remarks + A [sections](../../parallel/openmp/reference/openmp-directives.md#sections-openmp) directive has an empty code block. +## Example + The following sample generates C3046: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3047.md b/docs/error-messages/compiler-errors-2/compiler-error-c3047.md index 33412373c1d..9de9014520e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3047.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3047.md @@ -10,10 +10,14 @@ ms.assetid: 91c14566-5958-433d-8549-0e8bc3196f76 > Structured block in an OpenMP 'sections' region must be preceded by '#pragma omp section' +## Remarks + Any code in a code block introduced by a [sections](../../parallel/openmp/reference/openmp-directives.md#sections-openmp) directive must be in a code block introduced by a `section` directive. This error is obsolete in Visual Studio 2022 and later versions. +## Example + The following sample generates C3047: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3048.md b/docs/error-messages/compiler-errors-2/compiler-error-c3048.md index 09f8b66c30a..eac6513ce72 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3048.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3048.md @@ -10,8 +10,12 @@ ms.assetid: 48e07091-94d9-471d-befe-7e2507631edd > Expression following '#pragma omp atomic' has improper form +## Remarks + An atomic directive was incorrectly specified. +## Example + The following sample generates C3048: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3049.md b/docs/error-messages/compiler-errors-2/compiler-error-c3049.md index 8930091c500..ca624c76e26 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3049.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3049.md @@ -10,8 +10,12 @@ ms.assetid: 6ddf54f6-2c30-4d04-b637-98c6c922c533 > 'arg' : invalid argument in OpenMP 'default' clause +## Remarks + An incorrect value was passed to a [default](../../parallel/openmp/reference/openmp-clauses.md#default-openmp) clause. +## Example + The following sample generates C3049: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3050.md b/docs/error-messages/compiler-errors-2/compiler-error-c3050.md index 594d824bf58..728b29f20e5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3050.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3050.md @@ -10,8 +10,12 @@ ms.assetid: ee090a0b-29cc-4215-a2f9-d82af79b8e82 > 'type1' : a ref class cannot inherit from 'type1' +## Remarks + `System::ValueType` cannot be a base class for a reference type. +## Example + The following sample generates C3050: ```cpp From 02b89f813c70b358595dfaf3d13571a3bf406bb6 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 13 Aug 2025 16:54:16 +0800 Subject: [PATCH 1371/2255] Replace term "sample" with "example" for error references in range [C3031, C3050] --- docs/error-messages/compiler-errors-2/compiler-error-c3031.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3032.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3033.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3034.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3035.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3036.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3037.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3038.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3039.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3040.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3041.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3042.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3043.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3044.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3045.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3046.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3047.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3048.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3049.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3050.md | 2 +- 20 files changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3031.md b/docs/error-messages/compiler-errors-2/compiler-error-c3031.md index 8c446168730..bd2e91f261f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3031.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3031.md @@ -16,7 +16,7 @@ A variable of the wrong type was passed to a reduction clause. ## Example -The following sample generates C3031: +The following example generates C3031: ```cpp // C3031.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3032.md b/docs/error-messages/compiler-errors-2/compiler-error-c3032.md index 4dd33c98458..6388cbb4d70 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3032.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3032.md @@ -16,7 +16,7 @@ Types passed to certain clauses must be fully visible to the compiler. ## Example -The following sample generates C3032: +The following example generates C3032: ```cpp // C3032.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3033.md b/docs/error-messages/compiler-errors-2/compiler-error-c3033.md index 21535cd2211..37eabbaf92c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3033.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3033.md @@ -16,7 +16,7 @@ Values passed to certain clauses cannot be **`const`** variables. ## Example -The following sample generates C3033: +The following example generates C3033: ```cpp // C3033.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3034.md b/docs/error-messages/compiler-errors-2/compiler-error-c3034.md index ea58959910d..1fbefb86798 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3034.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3034.md @@ -16,7 +16,7 @@ Some directives cannot be nested. To fix this error, you can merge the statement ## Example -The following sample generates C3034: +The following example generates C3034: ```cpp // C3034.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3035.md b/docs/error-messages/compiler-errors-2/compiler-error-c3035.md index e5a6e612b3f..5863421056b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3035.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3035.md @@ -16,7 +16,7 @@ An ordered clause was ill formed. ## Example -The following sample generates C3035: +The following example generates C3035: ```cpp // C3035.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3036.md b/docs/error-messages/compiler-errors-2/compiler-error-c3036.md index eb4d9dab508..0bc004c00ae 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3036.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3036.md @@ -16,7 +16,7 @@ A [reduction](../../parallel/openmp/reference/openmp-clauses.md#reduction) claus ## Example -The following sample generates C3036: +The following example generates C3036: ```cpp // C3036.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3037.md b/docs/error-messages/compiler-errors-2/compiler-error-c3037.md index bb520c38d8d..d93499354fb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3037.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3037.md @@ -16,7 +16,7 @@ A variable specified in a [reduction](../../parallel/openmp/reference/openmp-cla ## Example -The following sample generates C3037: +The following example generates C3037: ```cpp // C3037.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3038.md b/docs/error-messages/compiler-errors-2/compiler-error-c3038.md index f35af110b43..dab32872b3d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3038.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3038.md @@ -16,7 +16,7 @@ Variables that appear in the [reduction](../../parallel/openmp/reference/openmp- ## Example -The following sample generates C3038: +The following example generates C3038: ```cpp // C3038.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3039.md b/docs/error-messages/compiler-errors-2/compiler-error-c3039.md index 75733d3337f..624e5c47788 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3039.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3039.md @@ -16,7 +16,7 @@ An index variable is implicitly private, so the variable cannot be used in a [re ## Example -The following sample generates C3039: +The following example generates C3039: ```cpp // C3039.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3040.md b/docs/error-messages/compiler-errors-2/compiler-error-c3040.md index 011bc913f54..858f23098d7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3040.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3040.md @@ -16,7 +16,7 @@ A variable in a [reduction](../../parallel/openmp/reference/openmp-clauses.md#re ## Example -The following sample generates C3040: +The following example generates C3040: ```cpp // C3040.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3041.md b/docs/error-messages/compiler-errors-2/compiler-error-c3041.md index 088d53e7be2..bc27f2f2227 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3041.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3041.md @@ -16,7 +16,7 @@ A variable passed to [copyprivate](../../parallel/openmp/reference/openmp-clause ## Example -The following sample generates C3041: +The following example generates C3041: ```cpp // C3041.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3042.md b/docs/error-messages/compiler-errors-2/compiler-error-c3042.md index f992ea09aac..b59a4166856 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3042.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3042.md @@ -16,7 +16,7 @@ The [copyprivate](../../parallel/openmp/reference/openmp-clauses.md#copyprivate) ## Example -The following sample generates C3042: +The following example generates C3042: ```cpp // C3042.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3043.md b/docs/error-messages/compiler-errors-2/compiler-error-c3043.md index 08592abebe2..b5b206b7a7a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3043.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3043.md @@ -16,7 +16,7 @@ A [critical](../../parallel/openmp/reference/openmp-directives.md#critical) dire ## Example -The following sample generates C3043: +The following example generates C3043: ```cpp // C3043.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3044.md b/docs/error-messages/compiler-errors-2/compiler-error-c3044.md index 82268cff9b0..2df140511b1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3044.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3044.md @@ -16,7 +16,7 @@ The compiler found a `section` directive was used incorrectly. For more informat ## Example -The following sample generates C3044: +The following example generates C3044: ```cpp // C3044.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3045.md b/docs/error-messages/compiler-errors-2/compiler-error-c3045.md index 7020dbbdc89..81bad5f022f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3045.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3045.md @@ -16,7 +16,7 @@ A code block delimited by braces must follow a [sections](../../parallel/openmp/ ## Example -The following sample generates C3045: +The following example generates C3045: ```cpp // C3045.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3046.md b/docs/error-messages/compiler-errors-2/compiler-error-c3046.md index 16708bcf653..d755e2527b1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3046.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3046.md @@ -16,7 +16,7 @@ A [sections](../../parallel/openmp/reference/openmp-directives.md#sections-openm ## Example -The following sample generates C3046: +The following example generates C3046: ```cpp // C3046.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3047.md b/docs/error-messages/compiler-errors-2/compiler-error-c3047.md index 9de9014520e..992895ee810 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3047.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3047.md @@ -18,7 +18,7 @@ This error is obsolete in Visual Studio 2022 and later versions. ## Example -The following sample generates C3047: +The following example generates C3047: ```cpp // C3047.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3048.md b/docs/error-messages/compiler-errors-2/compiler-error-c3048.md index eac6513ce72..2f593cc561b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3048.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3048.md @@ -16,7 +16,7 @@ An atomic directive was incorrectly specified. ## Example -The following sample generates C3048: +The following example generates C3048: ```cpp // C3048.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3049.md b/docs/error-messages/compiler-errors-2/compiler-error-c3049.md index ca624c76e26..3eb75bd1f54 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3049.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3049.md @@ -16,7 +16,7 @@ An incorrect value was passed to a [default](../../parallel/openmp/reference/ope ## Example -The following sample generates C3049: +The following example generates C3049: ```cpp // C3049.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3050.md b/docs/error-messages/compiler-errors-2/compiler-error-c3050.md index 728b29f20e5..6cb25a546b5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3050.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3050.md @@ -16,7 +16,7 @@ ms.assetid: ee090a0b-29cc-4215-a2f9-d82af79b8e82 ## Example -The following sample generates C3050: +The following example generates C3050: ```cpp // C3050.cpp From e879c5d692555530d088e1d5ed80960986b121f9 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 13 Aug 2025 16:57:09 +0800 Subject: [PATCH 1372/2255] Update metadata for error references in range [C3031, C3050] --- .../error-messages/compiler-errors-2/compiler-error-c3031.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3032.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3033.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3034.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3035.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3036.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3037.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3038.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3039.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3040.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3041.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3042.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3043.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3044.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3045.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3046.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3047.md | 3 +-- .../error-messages/compiler-errors-2/compiler-error-c3048.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3049.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3050.md | 5 ++--- 20 files changed, 39 insertions(+), 59 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3031.md b/docs/error-messages/compiler-errors-2/compiler-error-c3031.md index bd2e91f261f..583e25e206f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3031.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3031.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3031" title: "Compiler Error C3031" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3031" +ms.date: 11/04/2016 f1_keywords: ["C3031"] helpviewer_keywords: ["C3031"] -ms.assetid: 7e621e7e-eda7-45b5-8836-29599cd05255 --- # Compiler Error C3031 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3032.md b/docs/error-messages/compiler-errors-2/compiler-error-c3032.md index 6388cbb4d70..02ada4cb731 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3032.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3032.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3032" title: "Compiler Error C3032" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3032" +ms.date: 11/04/2016 f1_keywords: ["C3032"] helpviewer_keywords: ["C3032"] -ms.assetid: 6a92bd8e-319f-4a99-aef4-a9021f6f9928 --- # Compiler Error C3032 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3033.md b/docs/error-messages/compiler-errors-2/compiler-error-c3033.md index 37eabbaf92c..420ba6376bd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3033.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3033.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3033" title: "Compiler Error C3033" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3033" +ms.date: 11/04/2016 f1_keywords: ["C3033"] helpviewer_keywords: ["C3033"] -ms.assetid: 8628b6bb-a650-4ed2-af13-57acd2f7ddbb --- # Compiler Error C3033 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3034.md b/docs/error-messages/compiler-errors-2/compiler-error-c3034.md index 1fbefb86798..9d76496fe4f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3034.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3034.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3034" title: "Compiler Error C3034" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3034" +ms.date: 11/04/2016 f1_keywords: ["C3034"] helpviewer_keywords: ["C3034"] -ms.assetid: 49db8bac-2720-4622-94e3-7988f1603fa3 --- # Compiler Error C3034 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3035.md b/docs/error-messages/compiler-errors-2/compiler-error-c3035.md index 5863421056b..fd2006a31d5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3035.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3035.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3035" title: "Compiler Error C3035" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3035" +ms.date: 11/04/2016 f1_keywords: ["C3035"] helpviewer_keywords: ["C3035"] -ms.assetid: af34fad2-2b45-42d0-a9ff-04eab3e91c37 --- # Compiler Error C3035 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3036.md b/docs/error-messages/compiler-errors-2/compiler-error-c3036.md index 0bc004c00ae..0584a878e54 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3036.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3036.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3036" title: "Compiler Error C3036" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3036" +ms.date: 11/04/2016 f1_keywords: ["C3036"] helpviewer_keywords: ["C3036"] -ms.assetid: 10c6993e-bc42-4a07-85c7-cdc34ac30906 --- # Compiler Error C3036 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3037.md b/docs/error-messages/compiler-errors-2/compiler-error-c3037.md index d93499354fb..fce1f7b9649 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3037.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3037.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3037" title: "Compiler Error C3037" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3037" +ms.date: 11/04/2016 f1_keywords: ["C3037"] helpviewer_keywords: ["C3037"] -ms.assetid: 9ba8a890-d3c7-4cce-93c5-d358e2bfad28 --- # Compiler Error C3037 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3038.md b/docs/error-messages/compiler-errors-2/compiler-error-c3038.md index dab32872b3d..9819029d531 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3038.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3038.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3038" title: "Compiler Error C3038" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3038" +ms.date: 11/04/2016 f1_keywords: ["C3038"] helpviewer_keywords: ["C3038"] -ms.assetid: 140ada3e-5636-43ef-a4ee-22a9f66a771f --- # Compiler Error C3038 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3039.md b/docs/error-messages/compiler-errors-2/compiler-error-c3039.md index 624e5c47788..92bc1abf4be 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3039.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3039.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3039" title: "Compiler Error C3039" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3039" +ms.date: 11/04/2016 f1_keywords: ["C3039"] helpviewer_keywords: ["C3039"] -ms.assetid: 02776f16-f57a-4ffd-b7f7-9c696b633e08 --- # Compiler Error C3039 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3040.md b/docs/error-messages/compiler-errors-2/compiler-error-c3040.md index 858f23098d7..82f04a80bcd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3040.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3040.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3040" title: "Compiler Error C3040" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3040" +ms.date: 11/04/2016 f1_keywords: ["C3040"] helpviewer_keywords: ["C3040"] -ms.assetid: 29e857ac-74f0-4ec6-becf-9026e38c160e --- # Compiler Error C3040 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3041.md b/docs/error-messages/compiler-errors-2/compiler-error-c3041.md index bc27f2f2227..5c60eb3ff1a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3041.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3041.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3041" title: "Compiler Error C3041" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3041" +ms.date: 11/04/2016 f1_keywords: ["C3041"] helpviewer_keywords: ["C3041"] -ms.assetid: 9df1ae44-3ac7-4c6c-899f-f35ffe7ccf0d --- # Compiler Error C3041 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3042.md b/docs/error-messages/compiler-errors-2/compiler-error-c3042.md index b59a4166856..8b52b9ae987 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3042.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3042.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3042" title: "Compiler Error C3042" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3042" +ms.date: 11/04/2016 f1_keywords: ["C3042"] helpviewer_keywords: ["C3042"] -ms.assetid: bf73f61e-5bd2-40a8-9b06-6244e6a15a41 --- # Compiler Error C3042 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3043.md b/docs/error-messages/compiler-errors-2/compiler-error-c3043.md index b5b206b7a7a..ceb6883d661 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3043.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3043.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3043" title: "Compiler Error C3043" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3043" +ms.date: 11/04/2016 f1_keywords: ["C3043"] helpviewer_keywords: ["C3043"] -ms.assetid: 0ef55e63-e82b-48eb-9d44-690950ac34c6 --- # Compiler Error C3043 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3044.md b/docs/error-messages/compiler-errors-2/compiler-error-c3044.md index 2df140511b1..ae3ed18c230 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3044.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3044.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3044" title: "Compiler Error C3044" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3044" +ms.date: 11/04/2016 f1_keywords: ["C3044"] helpviewer_keywords: ["C3044"] -ms.assetid: 9f3e25b2-4676-49ab-97bf-6c88cd0fa377 --- # Compiler Error C3044 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3045.md b/docs/error-messages/compiler-errors-2/compiler-error-c3045.md index 81bad5f022f..6c59aff18d6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3045.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3045.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3045" title: "Compiler Error C3045" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3045" +ms.date: 11/04/2016 f1_keywords: ["C3045"] helpviewer_keywords: ["C3045"] -ms.assetid: 9351ba3e-3d3f-455f-ac90-a810fa9fd947 --- # Compiler Error C3045 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3046.md b/docs/error-messages/compiler-errors-2/compiler-error-c3046.md index d755e2527b1..3633da04abd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3046.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3046.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3046" title: "Compiler Error C3046" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3046" +ms.date: 11/04/2016 f1_keywords: ["C3046"] helpviewer_keywords: ["C3046"] -ms.assetid: 2e53d835-faa1-4ec0-9807-41f3dc552635 --- # Compiler Error C3046 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3047.md b/docs/error-messages/compiler-errors-2/compiler-error-c3047.md index 992895ee810..850e45397bb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3047.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3047.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3047" title: "Compiler Error C3047" +description: "Learn more about: Compiler Error C3047" ms.date: 06/01/2022 f1_keywords: ["C3047"] helpviewer_keywords: ["C3047"] -ms.assetid: 91c14566-5958-433d-8549-0e8bc3196f76 --- # Compiler Error C3047 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3048.md b/docs/error-messages/compiler-errors-2/compiler-error-c3048.md index 2f593cc561b..20c553cc781 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3048.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3048.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3048" title: "Compiler Error C3048" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3048" +ms.date: 11/04/2016 f1_keywords: ["C3048"] helpviewer_keywords: ["C3048"] -ms.assetid: 48e07091-94d9-471d-befe-7e2507631edd --- # Compiler Error C3048 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3049.md b/docs/error-messages/compiler-errors-2/compiler-error-c3049.md index 3eb75bd1f54..b89c25bb6dc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3049.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3049.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3049" title: "Compiler Error C3049" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3049" +ms.date: 11/04/2016 f1_keywords: ["C3049"] helpviewer_keywords: ["C3049"] -ms.assetid: 6ddf54f6-2c30-4d04-b637-98c6c922c533 --- # Compiler Error C3049 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3050.md b/docs/error-messages/compiler-errors-2/compiler-error-c3050.md index 6cb25a546b5..853b205551f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3050.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3050.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3050" title: "Compiler Error C3050" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3050" +ms.date: 11/04/2016 f1_keywords: ["C3050"] helpviewer_keywords: ["C3050"] -ms.assetid: ee090a0b-29cc-4215-a2f9-d82af79b8e82 --- # Compiler Error C3050 From c099a457591c65f199e1d84c5b15d9902eaf4ccc Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 13 Aug 2025 17:13:26 +0800 Subject: [PATCH 1373/2255] Fix wrong operator links in `` header reference --- docs/standard-library/variant.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/standard-library/variant.md b/docs/standard-library/variant.md index a61bd4e8bba..eca66c3552e 100644 --- a/docs/standard-library/variant.md +++ b/docs/standard-library/variant.md @@ -21,12 +21,12 @@ A variant object holds and manages a value. If the variant holds a value, that v |Name|Description| |-|-| -|[operator==](../standard-library/forward-list-operators.md#op_eq_eq)|Tests if the variant object on the left side of the operator is equal to the variant object on the right side.| -|[operator!=](../standard-library/forward-list-operators.md#op_neq)|Tests if the variant object on the left side of the operator is not equal to the variant object on the right side.| -|[operator<](../standard-library/forward-list-operators.md#op_lt)|Tests if the variant object on the left side of the operator is less than the variant object on the right side.| -|[operator<=](../standard-library/forward-list-operators.md#op_lt_eq)|Tests if the variant object on the left side of the operator is less than or equal to the variant object on the right side.| -|[operator>](../standard-library/forward-list-operators.md#op_gt)|Tests if the variant object on the left side of the operator is greater than the variant object on the right side.| -|[operator>=](../standard-library/forward-list-operators.md#op_gt_eq)|Tests if the variant object on the left side of the operator is greater than or equal to the variant object on the right side.| +|[operator==](../standard-library/variant-operators.md#op_eq_eq)|Tests if the variant object on the left side of the operator is equal to the variant object on the right side.| +|[operator!=](../standard-library/variant-operators.md#op_neq)|Tests if the variant object on the left side of the operator is not equal to the variant object on the right side.| +|[operator<](../standard-library/variant-operators.md#op_lt)|Tests if the variant object on the left side of the operator is less than the variant object on the right side.| +|[operator<=](../standard-library/variant-operators.md#op_lt_eq)|Tests if the variant object on the left side of the operator is less than or equal to the variant object on the right side.| +|[operator>](../standard-library/variant-operators.md#op_gt)|Tests if the variant object on the left side of the operator is greater than the variant object on the right side.| +|[operator>=](../standard-library/variant-operators.md#op_gt_eq)|Tests if the variant object on the left side of the operator is greater than or equal to the variant object on the right side.| ### Functions From 9c50ae96ca947162adf32eebb55a95b67405ddef Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 13 Aug 2025 17:15:46 +0800 Subject: [PATCH 1374/2255] Add backticks in `` header reference --- docs/standard-library/variant.md | 42 ++++++++++++++++---------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/docs/standard-library/variant.md b/docs/standard-library/variant.md index eca66c3552e..b13d8745e33 100644 --- a/docs/standard-library/variant.md +++ b/docs/standard-library/variant.md @@ -11,9 +11,9 @@ A variant object holds and manages a value. If the variant holds a value, that v ## Requirements -**Header:** \ +**Header:** `` -**Namespace:** std +**Namespace:** `std` ## Members @@ -21,45 +21,45 @@ A variant object holds and manages a value. If the variant holds a value, that v |Name|Description| |-|-| -|[operator==](../standard-library/variant-operators.md#op_eq_eq)|Tests if the variant object on the left side of the operator is equal to the variant object on the right side.| -|[operator!=](../standard-library/variant-operators.md#op_neq)|Tests if the variant object on the left side of the operator is not equal to the variant object on the right side.| -|[operator<](../standard-library/variant-operators.md#op_lt)|Tests if the variant object on the left side of the operator is less than the variant object on the right side.| -|[operator<=](../standard-library/variant-operators.md#op_lt_eq)|Tests if the variant object on the left side of the operator is less than or equal to the variant object on the right side.| -|[operator>](../standard-library/variant-operators.md#op_gt)|Tests if the variant object on the left side of the operator is greater than the variant object on the right side.| -|[operator>=](../standard-library/variant-operators.md#op_gt_eq)|Tests if the variant object on the left side of the operator is greater than or equal to the variant object on the right side.| +|[`operator==`](../standard-library/variant-operators.md#op_eq_eq)|Tests if the variant object on the left side of the operator is equal to the variant object on the right side.| +|[`operator!=`](../standard-library/variant-operators.md#op_neq)|Tests if the variant object on the left side of the operator is not equal to the variant object on the right side.| +|[`operator<`](../standard-library/variant-operators.md#op_lt)|Tests if the variant object on the left side of the operator is less than the variant object on the right side.| +|[`operator<=`](../standard-library/variant-operators.md#op_lt_eq)|Tests if the variant object on the left side of the operator is less than or equal to the variant object on the right side.| +|[`operator>`](../standard-library/variant-operators.md#op_gt)|Tests if the variant object on the left side of the operator is greater than the variant object on the right side.| +|[`operator>=`](../standard-library/variant-operators.md#op_gt_eq)|Tests if the variant object on the left side of the operator is greater than or equal to the variant object on the right side.| ### Functions |Name|Description| |-|-| -|[get](../standard-library/variant-functions.md#get)|Gets the variant of an object.| -|[get_if](../standard-library/variant-functions.md#get_if)|Gets the variant of an object if it exists.| -|[holds_alternative](../standard-library/variant-functions.md#holds_alternative)|Return **`true`** if a variant exists.| -|[swap](../standard-library/variant-functions.md#swap)|Swaps a **variant**.| -|[visit](../standard-library/variant-functions.md#visit)|Moves to the next **variant**.| +|[`get`](../standard-library/variant-functions.md#get)|Gets the variant of an object.| +|[`get_if`](../standard-library/variant-functions.md#get_if)|Gets the variant of an object if it exists.| +|[`holds_alternative`](../standard-library/variant-functions.md#holds_alternative)|Return **`true`** if a variant exists.| +|[`swap`](../standard-library/variant-functions.md#swap)|Swaps a **variant**.| +|[`visit`](../standard-library/variant-functions.md#visit)|Moves to the next **variant**.| ### Classes |Name|Description| |-|-| -|[bad_variant_access](../standard-library/bad-variant-access-class.md)|Objects thrown to report invalid accesses to the value of a variant object.| -|[variant](../standard-library/variant.md)|An object to either hold a value of one of its alternative types, or no value.| +|[`bad_variant_access`](../standard-library/bad-variant-access-class.md)|Objects thrown to report invalid accesses to the value of a variant object.| +|[`variant`](../standard-library/variant.md)|An object to either hold a value of one of its alternative types, or no value.| ### Structs |Name|Description| |-|-| -|[hash](../standard-library/hash-structure.md)|| -|[monostate](../standard-library/monostate-structure.md)|An alternative type for a variant to make the variant type default constructible.| -|[uses_allocator](../standard-library/uses-allocator-structure.md)|| -|[variant_alternative](../standard-library/variant-alternative-structure.md)|Assists the variant objects.| -|[variant_size](../standard-library/variant-size-structure.md)|Assists the variant objects.| +|[`hash`](../standard-library/hash-structure.md)|| +|[`monostate`](../standard-library/monostate-structure.md)|An alternative type for a variant to make the variant type default constructible.| +|[`uses_allocator`](../standard-library/uses-allocator-structure.md)|| +|[`variant_alternative`](../standard-library/variant-alternative-structure.md)|Assists the variant objects.| +|[`variant_size`](../standard-library/variant-size-structure.md)|Assists the variant objects.| ### Objects |Name|Description| |-|-| -|[variant_npos](../standard-library/variant-functions.md#variant_npos)|| +|[`variant_npos`](../standard-library/variant-functions.md#variant_npos)|| ## See also From af79a0e4b8ab3b5e701804bc12b6c0bbcece8628 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 13 Aug 2025 17:20:46 +0800 Subject: [PATCH 1375/2255] Clean up redundant relative links in `` header reference --- docs/standard-library/variant.md | 40 ++++++++++++++++---------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/standard-library/variant.md b/docs/standard-library/variant.md index b13d8745e33..79e24eb8f20 100644 --- a/docs/standard-library/variant.md +++ b/docs/standard-library/variant.md @@ -21,46 +21,46 @@ A variant object holds and manages a value. If the variant holds a value, that v |Name|Description| |-|-| -|[`operator==`](../standard-library/variant-operators.md#op_eq_eq)|Tests if the variant object on the left side of the operator is equal to the variant object on the right side.| -|[`operator!=`](../standard-library/variant-operators.md#op_neq)|Tests if the variant object on the left side of the operator is not equal to the variant object on the right side.| -|[`operator<`](../standard-library/variant-operators.md#op_lt)|Tests if the variant object on the left side of the operator is less than the variant object on the right side.| -|[`operator<=`](../standard-library/variant-operators.md#op_lt_eq)|Tests if the variant object on the left side of the operator is less than or equal to the variant object on the right side.| -|[`operator>`](../standard-library/variant-operators.md#op_gt)|Tests if the variant object on the left side of the operator is greater than the variant object on the right side.| -|[`operator>=`](../standard-library/variant-operators.md#op_gt_eq)|Tests if the variant object on the left side of the operator is greater than or equal to the variant object on the right side.| +|[`operator==`](variant-operators.md#op_eq_eq)|Tests if the variant object on the left side of the operator is equal to the variant object on the right side.| +|[`operator!=`](variant-operators.md#op_neq)|Tests if the variant object on the left side of the operator is not equal to the variant object on the right side.| +|[`operator<`](variant-operators.md#op_lt)|Tests if the variant object on the left side of the operator is less than the variant object on the right side.| +|[`operator<=`](variant-operators.md#op_lt_eq)|Tests if the variant object on the left side of the operator is less than or equal to the variant object on the right side.| +|[`operator>`](variant-operators.md#op_gt)|Tests if the variant object on the left side of the operator is greater than the variant object on the right side.| +|[`operator>=`](variant-operators.md#op_gt_eq)|Tests if the variant object on the left side of the operator is greater than or equal to the variant object on the right side.| ### Functions |Name|Description| |-|-| -|[`get`](../standard-library/variant-functions.md#get)|Gets the variant of an object.| -|[`get_if`](../standard-library/variant-functions.md#get_if)|Gets the variant of an object if it exists.| -|[`holds_alternative`](../standard-library/variant-functions.md#holds_alternative)|Return **`true`** if a variant exists.| -|[`swap`](../standard-library/variant-functions.md#swap)|Swaps a **variant**.| -|[`visit`](../standard-library/variant-functions.md#visit)|Moves to the next **variant**.| +|[`get`](variant-functions.md#get)|Gets the variant of an object.| +|[`get_if`](variant-functions.md#get_if)|Gets the variant of an object if it exists.| +|[`holds_alternative`](variant-functions.md#holds_alternative)|Return **`true`** if a variant exists.| +|[`swap`](variant-functions.md#swap)|Swaps a **variant**.| +|[`visit`](variant-functions.md#visit)|Moves to the next **variant**.| ### Classes |Name|Description| |-|-| -|[`bad_variant_access`](../standard-library/bad-variant-access-class.md)|Objects thrown to report invalid accesses to the value of a variant object.| -|[`variant`](../standard-library/variant.md)|An object to either hold a value of one of its alternative types, or no value.| +|[`bad_variant_access`](bad-variant-access-class.md)|Objects thrown to report invalid accesses to the value of a variant object.| +|[`variant`](variant.md)|An object to either hold a value of one of its alternative types, or no value.| ### Structs |Name|Description| |-|-| -|[`hash`](../standard-library/hash-structure.md)|| -|[`monostate`](../standard-library/monostate-structure.md)|An alternative type for a variant to make the variant type default constructible.| -|[`uses_allocator`](../standard-library/uses-allocator-structure.md)|| -|[`variant_alternative`](../standard-library/variant-alternative-structure.md)|Assists the variant objects.| -|[`variant_size`](../standard-library/variant-size-structure.md)|Assists the variant objects.| +|[`hash`](hash-structure.md)|| +|[`monostate`](monostate-structure.md)|An alternative type for a variant to make the variant type default constructible.| +|[`uses_allocator`](uses-allocator-structure.md)|| +|[`variant_alternative`](variant-alternative-structure.md)|Assists the variant objects.| +|[`variant_size`](variant-size-structure.md)|Assists the variant objects.| ### Objects |Name|Description| |-|-| -|[`variant_npos`](../standard-library/variant-functions.md#variant_npos)|| +|[`variant_npos`](variant-functions.md#variant_npos)|| ## See also -[Header Files Reference](../standard-library/cpp-standard-library-header-files.md) +[Header Files Reference](cpp-standard-library-header-files.md) From adc7a7fcb3241cad82ebf848e533e776ef14c5b5 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 13 Aug 2025 17:29:28 +0800 Subject: [PATCH 1376/2255] Fix wrong link to `variant` class in `` header reference --- docs/standard-library/variant.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard-library/variant.md b/docs/standard-library/variant.md index 79e24eb8f20..04f6018d139 100644 --- a/docs/standard-library/variant.md +++ b/docs/standard-library/variant.md @@ -43,7 +43,7 @@ A variant object holds and manages a value. If the variant holds a value, that v |Name|Description| |-|-| |[`bad_variant_access`](bad-variant-access-class.md)|Objects thrown to report invalid accesses to the value of a variant object.| -|[`variant`](variant.md)|An object to either hold a value of one of its alternative types, or no value.| +|[`variant`](variant-class.md)|An object to either hold a value of one of its alternative types, or no value.| ### Structs From 8697f098c0df70b4fbe1dddd7d7e4441fcf46b3e Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 13 Aug 2025 17:42:51 +0800 Subject: [PATCH 1377/2255] Add blockquotes for error message C2349 --- docs/error-messages/compiler-errors-1/compiler-error-c2349.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2349.md b/docs/error-messages/compiler-errors-1/compiler-error-c2349.md index 3b2cf2a02a2..41aea3c1147 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2349.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2349.md @@ -7,6 +7,6 @@ helpviewer_keywords: ["C2349"] --- # Compiler Error C2349 -'function' cannot be compiled as managed: 'reason'; use #pragma unmanaged +> 'function' cannot be compiled as managed: 'reason'; use #pragma unmanaged For more information, see [Compiler Warning (level 1 and 3) C4793](../../error-messages/compiler-warnings/compiler-warning-level-1-and-3-c4793.md). From 3625036382cc5ed29974f8e6044e09fe63b443a1 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 13 Aug 2025 17:44:13 +0800 Subject: [PATCH 1378/2255] Add "Remarks" heading for error reference C2349 --- docs/error-messages/compiler-errors-1/compiler-error-c2349.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2349.md b/docs/error-messages/compiler-errors-1/compiler-error-c2349.md index 41aea3c1147..b365f1b240e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2349.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2349.md @@ -9,4 +9,6 @@ helpviewer_keywords: ["C2349"] > 'function' cannot be compiled as managed: 'reason'; use #pragma unmanaged +## Remarks + For more information, see [Compiler Warning (level 1 and 3) C4793](../../error-messages/compiler-warnings/compiler-warning-level-1-and-3-c4793.md). From 9577d89b457287ee15c0be792546d7fe4b6e84b6 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 13 Aug 2025 18:42:46 +0800 Subject: [PATCH 1379/2255] Update error message in C2135 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2135.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2135.md b/docs/error-messages/compiler-errors-1/compiler-error-c2135.md index 4af1d4f1b40..db2f0fff8af 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2135.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2135.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2135"] --- # Compiler Error C2135 -> 'bit operator' : illegal bit field operation +> '*identifier*': you cannot apply '*operator*' to a bit-field ## Remarks From 5ec8f130db282b6e5d8e2d3be00ed3abb5cc459a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 13 Aug 2025 18:47:50 +0800 Subject: [PATCH 1380/2255] Improve example in C2135 error reference --- .../compiler-errors-1/compiler-error-c2135.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2135.md b/docs/error-messages/compiler-errors-1/compiler-error-c2135.md index db2f0fff8af..48ab905e946 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2135.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2135.md @@ -19,15 +19,16 @@ The following example generates C2135: ```cpp // C2135.cpp -struct S { - int i : 1; -}; -struct T { - int j; +struct S +{ + int bit_field : 1; + int integer; }; -int main() { - &S::i; // C2135 address of a bit field - &T::j; // OK + +int main() +{ + &S::bit_field; // C2135 + &S::integer; // OK } ``` From a656d0ce02b1f8d2e7b8346b3d2912cc0dea90e9 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 13 Aug 2025 19:03:53 +0800 Subject: [PATCH 1381/2255] Augment remarks in C2135 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2135.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2135.md b/docs/error-messages/compiler-errors-1/compiler-error-c2135.md index 48ab905e946..899b8ac2334 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2135.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2135.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["C2135"] ## Remarks -The address-of operator (`&`) cannot be applied to a bit field. +The [address-of operator (`&`)](../../cpp/address-of-operator-amp.md), [unary plus operator (`+`)](../../cpp/unary-plus-and-negation-operators-plus-and.md), [unary negation operator (`-`)](../../cpp/unary-plus-and-negation-operators-plus-and.md), [logical negation operator (`!`)](../../cpp/logical-negation-operator-exclpt.md), [one's complement operator (`~`)](../../cpp/one-s-complement-operator-tilde.md), and [indirection operator (`*`)](../../cpp/indirection-operator-star.md) cannot be applied to a bit-field in this context. ## Example From 8759fc37887b21693c3fa05ad5e50cc526238f6e Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 13 Aug 2025 19:06:20 +0800 Subject: [PATCH 1382/2255] Add C2104 "See also" link in C2135 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2135.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2135.md b/docs/error-messages/compiler-errors-1/compiler-error-c2135.md index 899b8ac2334..921540e5b9f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2135.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2135.md @@ -32,3 +32,7 @@ int main() &S::integer; // OK } ``` + +## See also + +[C2104](compiler-error-c2104.md) From 797e67bb08dd7e4d5985d6b057038f1c1892999e Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 13 Aug 2025 19:07:21 +0800 Subject: [PATCH 1383/2255] Update `ms.date` metadata in C2135 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2135.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2135.md b/docs/error-messages/compiler-errors-1/compiler-error-c2135.md index 921540e5b9f..aff3621ccb1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2135.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2135.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C2135" description: "Learn more about: Compiler Error C2135" -ms.date: 11/04/2016 +ms.date: 08/13/2025 f1_keywords: ["C2135"] helpviewer_keywords: ["C2135"] --- From 20a92e1ec3013d14dc62c9a5de5714e010d877f1 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 13 Aug 2025 23:23:49 +0800 Subject: [PATCH 1384/2255] Add blockquotes for error messages in range [C3051, C3080] --- docs/error-messages/compiler-errors-2/compiler-error-c3052.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3053.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3055.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3056.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3057.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3058.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3059.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3060.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3062.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3063.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3065.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3066.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3068.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3069.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3070.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3071.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3073.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3075.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3076.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3077.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3080.md | 2 +- 21 files changed, 21 insertions(+), 21 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3052.md b/docs/error-messages/compiler-errors-2/compiler-error-c3052.md index 2eaaa547883..bd6de2a6e53 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3052.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3052.md @@ -8,7 +8,7 @@ ms.assetid: 87480c42-1ceb-4775-8d20-88c54a7bb6a6 --- # Compiler Error C3052 -'var' : variable doesn't appear in a data-sharing clause under a default(none) clause +> 'var' : variable doesn't appear in a data-sharing clause under a default(none) clause If [default(none)](../../parallel/openmp/reference/openmp-clauses.md#default-openmp) is used, any variable used in the structured block must be explicitly specified as either [shared](../../parallel/openmp/reference/openmp-clauses.md#shared-openmp) or [private](../../parallel/openmp/reference/openmp-clauses.md#private-openmp). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3053.md b/docs/error-messages/compiler-errors-2/compiler-error-c3053.md index e2ca4233799..11b8278ef69 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3053.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3053.md @@ -8,7 +8,7 @@ ms.assetid: ab9a25f3-e341-4f6e-8e69-069b4a963a64 --- # Compiler Error C3053 -'symbol' : 'threadprivate' is only valid for global or static data items +> 'symbol' : 'threadprivate' is only valid for global or static data items Symbols passed to [threadprivate](../../parallel/openmp/reference/openmp-directives.md#threadprivate) must either be global or static. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3055.md b/docs/error-messages/compiler-errors-2/compiler-error-c3055.md index a3e046633f4..140f3494f1b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3055.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3055.md @@ -8,7 +8,7 @@ ms.assetid: 60446ee0-18dd-48fc-9059-f0a14229dce8 --- # Compiler Error C3055 -'symbol' : symbol cannot be referenced before it is used in 'threadprivate' directive +> 'symbol' : symbol cannot be referenced before it is used in 'threadprivate' directive A symbol was referenced and then used in a [threadprivate](../../parallel/openmp/reference/openmp-directives.md#threadprivate) clause, which is not allowed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3056.md b/docs/error-messages/compiler-errors-2/compiler-error-c3056.md index cf9e92e01a6..ffcb1f534fa 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3056.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3056.md @@ -8,7 +8,7 @@ ms.assetid: 9500173d-870b-49b3-8e88-0ee93586d19a --- # Compiler Error C3056 -'symbol' : symbol is not in the same scope with 'threadprivate' directive +> 'symbol' : symbol is not in the same scope with 'threadprivate' directive A symbol used in a [threadprivate](../../parallel/openmp/reference/openmp-directives.md#threadprivate) clause must be in the same scope as the `threadprivate` clause. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3057.md b/docs/error-messages/compiler-errors-2/compiler-error-c3057.md index e2b10e3f31f..bcf25658546 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3057.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3057.md @@ -8,7 +8,7 @@ ms.assetid: b0b2ba88-9c74-4bec-bf60-8fc72eade34c --- # Compiler Error C3057 -'symbol' : dynamic initialization of 'threadprivate' symbols is not currently supported +> 'symbol' : dynamic initialization of 'threadprivate' symbols is not currently supported The initialized value of a symbol used in a [threadprivate](../../parallel/openmp/reference/openmp-directives.md#threadprivate) clause must be known at compile time. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3058.md b/docs/error-messages/compiler-errors-2/compiler-error-c3058.md index 2e52864c0de..68b65b76f78 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3058.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3058.md @@ -8,7 +8,7 @@ ms.assetid: 669d08c8-0b58-4351-88aa-c6e6e1af481c --- # Compiler Error C3058 -'symbol' : symbol not declared as 'threadprivate' before it is used in the 'copyin' clause +> 'symbol' : symbol not declared as 'threadprivate' before it is used in the 'copyin' clause A symbol must first be declared [threadprivate](../../parallel/openmp/reference/openmp-directives.md#threadprivate) before it can be used in a [copyin](../../parallel/openmp/reference/openmp-clauses.md#copyin) clause. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3059.md b/docs/error-messages/compiler-errors-2/compiler-error-c3059.md index 0385160ecf1..f836c0831eb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3059.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3059.md @@ -8,7 +8,7 @@ ms.assetid: 57220324-8286-4cab-a1ab-45385eb1eae0 --- # Compiler Error C3059 -'var' : 'threadprivate' symbol cannot be used in the 'clause' clause +> 'var' : 'threadprivate' symbol cannot be used in the 'clause' clause A [threadprivate](../../parallel/openmp/reference/openmp-directives.md#threadprivate) symbol was used in a clause. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3060.md b/docs/error-messages/compiler-errors-2/compiler-error-c3060.md index 56687093106..c37a081e759 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3060.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3060.md @@ -8,7 +8,7 @@ ms.assetid: 6282bb92-0546-4b59-9435-d3840bf93bdb --- # Compiler Error C3060 -'member' : a friend function may not be defined inside a class using a qualified name (it may only be declared) +> 'member' : a friend function may not be defined inside a class using a qualified name (it may only be declared) A friend function was defined using a qualified name, which is not allowed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3062.md b/docs/error-messages/compiler-errors-2/compiler-error-c3062.md index ecd02c05848..41c4eaf6346 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3062.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3062.md @@ -8,7 +8,7 @@ ms.assetid: 78632e6d-255f-42c3-b124-31a9194ff86d --- # Compiler Error C3062 -'enum': enumerator requires value since the underlying type is 'type' +> 'enum': enumerator requires value since the underlying type is 'type' You can specify an underlying type for an enumeration. However, some types require you to assign values to each enumerator. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3063.md b/docs/error-messages/compiler-errors-2/compiler-error-c3063.md index 14672ef7f5f..f17538111ad 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3063.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3063.md @@ -8,7 +8,7 @@ ms.assetid: 0ecf6f1f-e4a7-487a-9fd5-79d8ac470001 --- # Compiler Error C3063 -operator 'operator': all operands must have the same enumeration type +> operator 'operator': all operands must have the same enumeration type When using operators on enumerators, both operands must be of the enumeration type. For more information, see [How to: Define and consume enums in C++/CLI](../../dotnet/how-to-define-and-consume-enums-in-cpp-cli.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3065.md b/docs/error-messages/compiler-errors-2/compiler-error-c3065.md index 38985064a54..0b8c36e4e57 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3065.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3065.md @@ -8,7 +8,7 @@ ms.assetid: e7a0bc69-1c68-459e-a7c4-93c65609ff7c --- # Compiler Error C3065 -property declaration at non-class scope is not allowed +> property declaration at non-class scope is not allowed The [property](../../cpp/property-cpp.md) __declspec modifier was used outside a class. A property can only be declared inside a class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3066.md b/docs/error-messages/compiler-errors-2/compiler-error-c3066.md index 59508836a8e..b80bc9801de 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3066.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3066.md @@ -8,7 +8,7 @@ ms.assetid: 226f6de5-c4c5-41e2-b31a-2e30a37fbbeb --- # Compiler Error C3066 -there are multiple ways that an object of this type can be called with these arguments +> there are multiple ways that an object of this type can be called with these arguments The compiler detected an ambiguous function call involving surrogates. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3068.md b/docs/error-messages/compiler-errors-2/compiler-error-c3068.md index 22e5e30c360..ad98acdd24e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3068.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3068.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C3068"] --- # Compiler Error C3068 -'function' : a 'naked' function cannot contain objects that would require unwinding if a C++ exception occurred +> 'function' : a 'naked' function cannot contain objects that would require unwinding if a C++ exception occurred The compiler was unable to perform stack unwinding on a [naked](../../cpp/naked-cpp.md) function that threw an exception because a temporary object was created in the function and C++ exception handling ([/EHsc](../../build/reference/eh-exception-handling-model.md)) was specified. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3069.md b/docs/error-messages/compiler-errors-2/compiler-error-c3069.md index 34a45c96c9d..b0526faca07 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3069.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3069.md @@ -8,7 +8,7 @@ ms.assetid: ca94291b-2bb4-4e3f-9acf-534234b83513 --- # Compiler Error C3069 -'operator': not allowed for enumeration type +> 'operator': not allowed for enumeration type An operator is not supported for CLR enumerations. For more information, see [How to: Define and consume enums in C++/CLI](../../dotnet/how-to-define-and-consume-enums-in-cpp-cli.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3070.md b/docs/error-messages/compiler-errors-2/compiler-error-c3070.md index 9740fc45eeb..f927489a292 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3070.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3070.md @@ -8,7 +8,7 @@ ms.assetid: ac88584d-40a6-4176-90f3-2371c3c935f2 --- # Compiler Error C3070 -'property': property does not have a 'set' method +> 'property': property does not have a 'set' method A property's set accessor method was not defined. For more information, see [property](../../extensions/property-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3071.md b/docs/error-messages/compiler-errors-2/compiler-error-c3071.md index 2b25f530af2..cfdc67e8d43 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3071.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3071.md @@ -8,7 +8,7 @@ ms.assetid: 69879e66-a60e-4058-9bbd-d5c5e2d8ee37 --- # Compiler Error C3071 -operator 'operator' can only be applied to an instance of a ref class or a value-type +> operator 'operator' can only be applied to an instance of a ref class or a value-type A CLR operator cannot be used on a native type. The operator can be used on a ref class or a ref struct (a value type) but not a native type such as int or an alias for a native type such as System::Int32. These types can't be boxed from C++ code in a way that refers to the native variable, so the operator cannot be used. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3073.md b/docs/error-messages/compiler-errors-2/compiler-error-c3073.md index abfadfab32d..bac7ba3831b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3073.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3073.md @@ -8,7 +8,7 @@ ms.assetid: b24b9b8b-f9fb-4c3c-a1a0-97fad2081bfc --- # Compiler Error C3073 -'type' : ref class does not have a user-defined copy constructor +> 'type' : ref class does not have a user-defined copy constructor In a [/clr (Common Language Runtime Compilation)](../../build/reference/clr-common-language-runtime-compilation.md) compilation, the compiler will not generate a copy constructor for a reference type. In any **/clr** compilation, you must define your own copy constructor for a reference type if you expect an instance of the type to be copied. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3075.md b/docs/error-messages/compiler-errors-2/compiler-error-c3075.md index edb6485a4cd..27ac63db403 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3075.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3075.md @@ -8,7 +8,7 @@ ms.assetid: f431daa9-e0fa-48f0-a5c3-f99be96b55e3 --- # Compiler Error C3075 -'instance' : you cannot embed an instance of a reference type, 'type', in a value-type +> 'instance' : you cannot embed an instance of a reference type, 'type', in a value-type A value type cannot contain an instance of a reference type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3076.md b/docs/error-messages/compiler-errors-2/compiler-error-c3076.md index 35183fa19d4..5e381464105 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3076.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3076.md @@ -8,7 +8,7 @@ ms.assetid: 8a87b3e4-2c17-4b87-9622-ef0962d6a34e --- # Compiler Error C3076 -'instance' : you cannot embed an instance of a reference type, 'type', in a native type +> 'instance' : you cannot embed an instance of a reference type, 'type', in a native type A native type cannot contain an instance of a CLR type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3077.md b/docs/error-messages/compiler-errors-2/compiler-error-c3077.md index 4ceb95d997d..6441e9b9455 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3077.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3077.md @@ -8,7 +8,7 @@ ms.assetid: d9f3c619-d1e2-4656-81a5-a35a9586a7d4 --- # Compiler Error C3077 -'finalizer' : a finalizer can only be a member of a reference type +> 'finalizer' : a finalizer can only be a member of a reference type You cannot declare a finalizer in a native or value type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3080.md b/docs/error-messages/compiler-errors-2/compiler-error-c3080.md index 14b0241f785..292851ad834 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3080.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3080.md @@ -8,7 +8,7 @@ ms.assetid: ff62a3f7-9b3b-44bd-b8d9-f3a8e5354560 --- # Compiler Error C3080 -'finalizer_function' : a finalizer cannot have a storage-class-specifier +> 'finalizer_function' : a finalizer cannot have a storage-class-specifier For more information, see [Destructors and finalizers in How to: Define and consume classes and structs (C++/CLI)](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Destructors_and_finalizers). From 22ffa2925b4f6436c880bab6fcb08c8c0e5fcae3 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 13 Aug 2025 23:29:26 +0800 Subject: [PATCH 1385/2255] Add "Remarks" and "Example" headings for error references in range [C3051, C3080] --- .../compiler-errors-2/compiler-error-c3052.md | 4 ++++ .../compiler-errors-2/compiler-error-c3053.md | 4 ++++ .../compiler-errors-2/compiler-error-c3055.md | 4 ++++ .../compiler-errors-2/compiler-error-c3056.md | 4 ++++ .../compiler-errors-2/compiler-error-c3057.md | 4 ++++ .../compiler-errors-2/compiler-error-c3058.md | 4 ++++ .../compiler-errors-2/compiler-error-c3059.md | 4 ++++ .../compiler-errors-2/compiler-error-c3060.md | 4 ++++ .../compiler-errors-2/compiler-error-c3062.md | 4 ++++ .../compiler-errors-2/compiler-error-c3063.md | 2 ++ .../compiler-errors-2/compiler-error-c3065.md | 4 ++++ .../compiler-errors-2/compiler-error-c3066.md | 6 +++++- .../compiler-errors-2/compiler-error-c3068.md | 2 ++ .../compiler-errors-2/compiler-error-c3069.md | 2 ++ .../compiler-errors-2/compiler-error-c3070.md | 4 ++++ .../compiler-errors-2/compiler-error-c3071.md | 2 ++ .../compiler-errors-2/compiler-error-c3072.md | 2 ++ .../compiler-errors-2/compiler-error-c3073.md | 2 ++ .../compiler-errors-2/compiler-error-c3075.md | 2 ++ .../compiler-errors-2/compiler-error-c3076.md | 2 ++ .../compiler-errors-2/compiler-error-c3077.md | 2 ++ .../compiler-errors-2/compiler-error-c3080.md | 2 ++ 22 files changed, 69 insertions(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3052.md b/docs/error-messages/compiler-errors-2/compiler-error-c3052.md index bd6de2a6e53..d575f57f451 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3052.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3052.md @@ -10,8 +10,12 @@ ms.assetid: 87480c42-1ceb-4775-8d20-88c54a7bb6a6 > 'var' : variable doesn't appear in a data-sharing clause under a default(none) clause +## Remarks + If [default(none)](../../parallel/openmp/reference/openmp-clauses.md#default-openmp) is used, any variable used in the structured block must be explicitly specified as either [shared](../../parallel/openmp/reference/openmp-clauses.md#shared-openmp) or [private](../../parallel/openmp/reference/openmp-clauses.md#private-openmp). +## Example + The following sample generates C3052: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3053.md b/docs/error-messages/compiler-errors-2/compiler-error-c3053.md index 11b8278ef69..7a42db5f108 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3053.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3053.md @@ -10,8 +10,12 @@ ms.assetid: ab9a25f3-e341-4f6e-8e69-069b4a963a64 > 'symbol' : 'threadprivate' is only valid for global or static data items +## Remarks + Symbols passed to [threadprivate](../../parallel/openmp/reference/openmp-directives.md#threadprivate) must either be global or static. +## Example + The following sample generates C3053: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3055.md b/docs/error-messages/compiler-errors-2/compiler-error-c3055.md index 140f3494f1b..a9e18696837 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3055.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3055.md @@ -10,8 +10,12 @@ ms.assetid: 60446ee0-18dd-48fc-9059-f0a14229dce8 > 'symbol' : symbol cannot be referenced before it is used in 'threadprivate' directive +## Remarks + A symbol was referenced and then used in a [threadprivate](../../parallel/openmp/reference/openmp-directives.md#threadprivate) clause, which is not allowed. +## Example + The following sample generates C3055: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3056.md b/docs/error-messages/compiler-errors-2/compiler-error-c3056.md index ffcb1f534fa..3020d12767f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3056.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3056.md @@ -10,8 +10,12 @@ ms.assetid: 9500173d-870b-49b3-8e88-0ee93586d19a > 'symbol' : symbol is not in the same scope with 'threadprivate' directive +## Remarks + A symbol used in a [threadprivate](../../parallel/openmp/reference/openmp-directives.md#threadprivate) clause must be in the same scope as the `threadprivate` clause. +## Example + The following sample generates C3056: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3057.md b/docs/error-messages/compiler-errors-2/compiler-error-c3057.md index bcf25658546..195c7ab294e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3057.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3057.md @@ -10,8 +10,12 @@ ms.assetid: b0b2ba88-9c74-4bec-bf60-8fc72eade34c > 'symbol' : dynamic initialization of 'threadprivate' symbols is not currently supported +## Remarks + The initialized value of a symbol used in a [threadprivate](../../parallel/openmp/reference/openmp-directives.md#threadprivate) clause must be known at compile time. +## Examples + The following sample generates C3057: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3058.md b/docs/error-messages/compiler-errors-2/compiler-error-c3058.md index 68b65b76f78..e6a1c02f3a5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3058.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3058.md @@ -10,8 +10,12 @@ ms.assetid: 669d08c8-0b58-4351-88aa-c6e6e1af481c > 'symbol' : symbol not declared as 'threadprivate' before it is used in the 'copyin' clause +## Remarks + A symbol must first be declared [threadprivate](../../parallel/openmp/reference/openmp-directives.md#threadprivate) before it can be used in a [copyin](../../parallel/openmp/reference/openmp-clauses.md#copyin) clause. +## Example + The following sample generates C3058: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3059.md b/docs/error-messages/compiler-errors-2/compiler-error-c3059.md index f836c0831eb..3e549f42463 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3059.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3059.md @@ -10,8 +10,12 @@ ms.assetid: 57220324-8286-4cab-a1ab-45385eb1eae0 > 'var' : 'threadprivate' symbol cannot be used in the 'clause' clause +## Remarks + A [threadprivate](../../parallel/openmp/reference/openmp-directives.md#threadprivate) symbol was used in a clause. +## Example + The following sample generates C3059: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3060.md b/docs/error-messages/compiler-errors-2/compiler-error-c3060.md index c37a081e759..7a4d2199269 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3060.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3060.md @@ -10,8 +10,12 @@ ms.assetid: 6282bb92-0546-4b59-9435-d3840bf93bdb > 'member' : a friend function may not be defined inside a class using a qualified name (it may only be declared) +## Remarks + A friend function was defined using a qualified name, which is not allowed. +## Example + The following sample generates C3060: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3062.md b/docs/error-messages/compiler-errors-2/compiler-error-c3062.md index 41c4eaf6346..91e217c260e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3062.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3062.md @@ -10,10 +10,14 @@ ms.assetid: 78632e6d-255f-42c3-b124-31a9194ff86d > 'enum': enumerator requires value since the underlying type is 'type' +## Remarks + You can specify an underlying type for an enumeration. However, some types require you to assign values to each enumerator. For more information on enums, see [enum class](../../extensions/enum-class-cpp-component-extensions.md). +## Example + The following sample generates C3062: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3063.md b/docs/error-messages/compiler-errors-2/compiler-error-c3063.md index f17538111ad..2ba2082eaba 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3063.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3063.md @@ -10,6 +10,8 @@ ms.assetid: 0ecf6f1f-e4a7-487a-9fd5-79d8ac470001 > operator 'operator': all operands must have the same enumeration type +## Remarks + When using operators on enumerators, both operands must be of the enumeration type. For more information, see [How to: Define and consume enums in C++/CLI](../../dotnet/how-to-define-and-consume-enums-in-cpp-cli.md). ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3065.md b/docs/error-messages/compiler-errors-2/compiler-error-c3065.md index 0b8c36e4e57..f35b3f77c94 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3065.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3065.md @@ -10,8 +10,12 @@ ms.assetid: e7a0bc69-1c68-459e-a7c4-93c65609ff7c > property declaration at non-class scope is not allowed +## Remarks + The [property](../../cpp/property-cpp.md) __declspec modifier was used outside a class. A property can only be declared inside a class. +## Example + The following sample generates C3065: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3066.md b/docs/error-messages/compiler-errors-2/compiler-error-c3066.md index b80bc9801de..b0cd87c4d3a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3066.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3066.md @@ -10,8 +10,12 @@ ms.assetid: 226f6de5-c4c5-41e2-b31a-2e30a37fbbeb > there are multiple ways that an object of this type can be called with these arguments +## Remarks + The compiler detected an ambiguous function call involving surrogates. +## Examples + The following sample generates C3066: ```cpp @@ -46,7 +50,7 @@ int main() { } ``` -## Copy-list-initialization +### Copy-list-initialization In Visual Studio 2015, the compiler erroneously treated copy-list-initialization in the same way as regular copy-initialization; it considered only converting constructors for overload resolution. In the following example, Visual Studio 2015 chooses MyInt(23) but Visual Studio 2017 correctly raises the error. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3068.md b/docs/error-messages/compiler-errors-2/compiler-error-c3068.md index ad98acdd24e..db6b5304f79 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3068.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3068.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C3068"] > 'function' : a 'naked' function cannot contain objects that would require unwinding if a C++ exception occurred +## Remarks + The compiler was unable to perform stack unwinding on a [naked](../../cpp/naked-cpp.md) function that threw an exception because a temporary object was created in the function and C++ exception handling ([/EHsc](../../build/reference/eh-exception-handling-model.md)) was specified. To resolve this error, do at least one of the following: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3069.md b/docs/error-messages/compiler-errors-2/compiler-error-c3069.md index b0526faca07..b9ef4dda4cd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3069.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3069.md @@ -10,6 +10,8 @@ ms.assetid: ca94291b-2bb4-4e3f-9acf-534234b83513 > 'operator': not allowed for enumeration type +## Remarks + An operator is not supported for CLR enumerations. For more information, see [How to: Define and consume enums in C++/CLI](../../dotnet/how-to-define-and-consume-enums-in-cpp-cli.md). ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3070.md b/docs/error-messages/compiler-errors-2/compiler-error-c3070.md index f927489a292..4afc2c48543 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3070.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3070.md @@ -10,8 +10,12 @@ ms.assetid: ac88584d-40a6-4176-90f3-2371c3c935f2 > 'property': property does not have a 'set' method +## Remarks + A property's set accessor method was not defined. For more information, see [property](../../extensions/property-cpp-component-extensions.md). +## Example + The following sample generates C3070: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3071.md b/docs/error-messages/compiler-errors-2/compiler-error-c3071.md index cfdc67e8d43..0e1d1ae8541 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3071.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3071.md @@ -10,6 +10,8 @@ ms.assetid: 69879e66-a60e-4058-9bbd-d5c5e2d8ee37 > operator 'operator' can only be applied to an instance of a ref class or a value-type +## Remarks + A CLR operator cannot be used on a native type. The operator can be used on a ref class or a ref struct (a value type) but not a native type such as int or an alias for a native type such as System::Int32. These types can't be boxed from C++ code in a way that refers to the native variable, so the operator cannot be used. For more information, see [Tracking Reference Operator](../../extensions/tracking-reference-operator-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3072.md b/docs/error-messages/compiler-errors-2/compiler-error-c3072.md index 3fc36b7657a..cee557a9090 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3072.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3072.md @@ -10,6 +10,8 @@ ms.assetid: cdd5cb6b-c478-4698-adfa-c40188d34a18 > operator '*operator-name*' cannot be applied to an instance of a ref class +## Remarks + use the unary *operator-name* operator to convert an instance of a ref class to a handle type A CLR type requires CLR operators, not native (or standard) operators. For more information, see [Tracking Reference Operator](../../extensions/tracking-reference-operator-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3073.md b/docs/error-messages/compiler-errors-2/compiler-error-c3073.md index bac7ba3831b..4467da76ef0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3073.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3073.md @@ -10,6 +10,8 @@ ms.assetid: b24b9b8b-f9fb-4c3c-a1a0-97fad2081bfc > 'type' : ref class does not have a user-defined copy constructor +## Remarks + In a [/clr (Common Language Runtime Compilation)](../../build/reference/clr-common-language-runtime-compilation.md) compilation, the compiler will not generate a copy constructor for a reference type. In any **/clr** compilation, you must define your own copy constructor for a reference type if you expect an instance of the type to be copied. For more information, see [C++ Stack Semantics for Reference Types](../../dotnet/cpp-stack-semantics-for-reference-types.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3075.md b/docs/error-messages/compiler-errors-2/compiler-error-c3075.md index 27ac63db403..102125ccd76 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3075.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3075.md @@ -10,6 +10,8 @@ ms.assetid: f431daa9-e0fa-48f0-a5c3-f99be96b55e3 > 'instance' : you cannot embed an instance of a reference type, 'type', in a value-type +## Remarks + A value type cannot contain an instance of a reference type. For more information, see [C++ Stack Semantics for Reference Types](../../dotnet/cpp-stack-semantics-for-reference-types.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3076.md b/docs/error-messages/compiler-errors-2/compiler-error-c3076.md index 5e381464105..dc1bd0e0460 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3076.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3076.md @@ -10,6 +10,8 @@ ms.assetid: 8a87b3e4-2c17-4b87-9622-ef0962d6a34e > 'instance' : you cannot embed an instance of a reference type, 'type', in a native type +## Remarks + A native type cannot contain an instance of a CLR type. For more information, see [C++ Stack Semantics for Reference Types](../../dotnet/cpp-stack-semantics-for-reference-types.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3077.md b/docs/error-messages/compiler-errors-2/compiler-error-c3077.md index 6441e9b9455..1ba323d027b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3077.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3077.md @@ -10,6 +10,8 @@ ms.assetid: d9f3c619-d1e2-4656-81a5-a35a9586a7d4 > 'finalizer' : a finalizer can only be a member of a reference type +## Remarks + You cannot declare a finalizer in a native or value type. For more information, see [Destructors and finalizers in How to: Define and consume classes and structs (C++/CLI)](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Destructors_and_finalizers). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3080.md b/docs/error-messages/compiler-errors-2/compiler-error-c3080.md index 292851ad834..c838ac27edc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3080.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3080.md @@ -10,6 +10,8 @@ ms.assetid: ff62a3f7-9b3b-44bd-b8d9-f3a8e5354560 > 'finalizer_function' : a finalizer cannot have a storage-class-specifier +## Remarks + For more information, see [Destructors and finalizers in How to: Define and consume classes and structs (C++/CLI)](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Destructors_and_finalizers). ## Example From dc164e0d6743f5a39e26978e76cd6666ba6eb218 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 13 Aug 2025 23:31:00 +0800 Subject: [PATCH 1386/2255] Replace term "sample" with "example" for error references in range [C3051, C3080] --- docs/error-messages/compiler-errors-2/compiler-error-c3052.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3053.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3054.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3055.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3056.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3057.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c3058.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3059.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3060.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3062.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3063.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3065.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3066.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3068.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3069.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3070.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3071.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3072.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3073.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3075.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3076.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3077.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3080.md | 2 +- 23 files changed, 24 insertions(+), 24 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3052.md b/docs/error-messages/compiler-errors-2/compiler-error-c3052.md index d575f57f451..9ecb55df3b7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3052.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3052.md @@ -16,7 +16,7 @@ If [default(none)](../../parallel/openmp/reference/openmp-clauses.md#default-ope ## Example -The following sample generates C3052: +The following example generates C3052: ```cpp // C3052.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3053.md b/docs/error-messages/compiler-errors-2/compiler-error-c3053.md index 7a42db5f108..a411012c617 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3053.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3053.md @@ -16,7 +16,7 @@ Symbols passed to [threadprivate](../../parallel/openmp/reference/openmp-directi ## Example -The following sample generates C3053: +The following example generates C3053: ```cpp // C3053.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3054.md b/docs/error-messages/compiler-errors-2/compiler-error-c3054.md index 4961c563e50..80e849970a2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3054.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3054.md @@ -18,7 +18,7 @@ This error is obsolete in Visual Studio 2022 and later versions. ## Example -The following sample generates C3054. +The following example generates C3054. ```cpp // C3054.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3055.md b/docs/error-messages/compiler-errors-2/compiler-error-c3055.md index a9e18696837..8e43726f340 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3055.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3055.md @@ -16,7 +16,7 @@ A symbol was referenced and then used in a [threadprivate](../../parallel/openmp ## Example -The following sample generates C3055: +The following example generates C3055: ```cpp // C3055.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3056.md b/docs/error-messages/compiler-errors-2/compiler-error-c3056.md index 3020d12767f..ee897562000 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3056.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3056.md @@ -16,7 +16,7 @@ A symbol used in a [threadprivate](../../parallel/openmp/reference/openmp-direct ## Example -The following sample generates C3056: +The following example generates C3056: ```cpp // C3056.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3057.md b/docs/error-messages/compiler-errors-2/compiler-error-c3057.md index 195c7ab294e..f536d24d98f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3057.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3057.md @@ -16,7 +16,7 @@ The initialized value of a symbol used in a [threadprivate](../../parallel/openm ## Examples -The following sample generates C3057: +The following example generates C3057: ```cpp // C3057.cpp @@ -42,7 +42,7 @@ int main() { } ``` -The following sample generates C3057: +The following example generates C3057: ```cpp // C3057b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3058.md b/docs/error-messages/compiler-errors-2/compiler-error-c3058.md index e6a1c02f3a5..930b88ea8ba 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3058.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3058.md @@ -16,7 +16,7 @@ A symbol must first be declared [threadprivate](../../parallel/openmp/reference/ ## Example -The following sample generates C3058: +The following example generates C3058: ```cpp // C3058.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3059.md b/docs/error-messages/compiler-errors-2/compiler-error-c3059.md index 3e549f42463..19f8f13adc1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3059.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3059.md @@ -16,7 +16,7 @@ A [threadprivate](../../parallel/openmp/reference/openmp-directives.md#threadpri ## Example -The following sample generates C3059: +The following example generates C3059: ```cpp // C3059.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3060.md b/docs/error-messages/compiler-errors-2/compiler-error-c3060.md index 7a4d2199269..c75119aba24 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3060.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3060.md @@ -16,7 +16,7 @@ A friend function was defined using a qualified name, which is not allowed. ## Example -The following sample generates C3060: +The following example generates C3060: ```cpp // C3060.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3062.md b/docs/error-messages/compiler-errors-2/compiler-error-c3062.md index 91e217c260e..c18991cd2fd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3062.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3062.md @@ -18,7 +18,7 @@ For more information on enums, see [enum class](../../extensions/enum-class-cpp- ## Example -The following sample generates C3062: +The following example generates C3062: ```cpp // C3062.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3063.md b/docs/error-messages/compiler-errors-2/compiler-error-c3063.md index 2ba2082eaba..18c6afb8007 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3063.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3063.md @@ -16,7 +16,7 @@ When using operators on enumerators, both operands must be of the enumeration ty ## Example -The following sample generates C3063 and shows how to fix it: +The following example generates C3063 and shows how to fix it: ```cpp // C3063.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3065.md b/docs/error-messages/compiler-errors-2/compiler-error-c3065.md index f35b3f77c94..05598a37737 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3065.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3065.md @@ -16,7 +16,7 @@ The [property](../../cpp/property-cpp.md) __declspec modifier was used outside a ## Example -The following sample generates C3065: +The following example generates C3065: ```cpp // C3065.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3066.md b/docs/error-messages/compiler-errors-2/compiler-error-c3066.md index b0cd87c4d3a..421799e1e74 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3066.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3066.md @@ -16,7 +16,7 @@ The compiler detected an ambiguous function call involving surrogates. ## Examples -The following sample generates C3066: +The following example generates C3066: ```cpp // C3066.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3068.md b/docs/error-messages/compiler-errors-2/compiler-error-c3068.md index db6b5304f79..70488a70967 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3068.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3068.md @@ -27,7 +27,7 @@ When an exception is thrown, compiler generated code, called the prolog and epil ## Example -The following sample generates C3068: +The following example generates C3068: ```cpp // C3068.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3069.md b/docs/error-messages/compiler-errors-2/compiler-error-c3069.md index b9ef4dda4cd..456c57b6250 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3069.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3069.md @@ -16,7 +16,7 @@ An operator is not supported for CLR enumerations. For more information, see [H ## Example -The following sample generates C3069: +The following example generates C3069: ```cpp // C3069.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3070.md b/docs/error-messages/compiler-errors-2/compiler-error-c3070.md index 4afc2c48543..9bdc7b14279 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3070.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3070.md @@ -16,7 +16,7 @@ A property's set accessor method was not defined. For more information, see [pro ## Example -The following sample generates C3070: +The following example generates C3070: ```cpp // C3070.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3071.md b/docs/error-messages/compiler-errors-2/compiler-error-c3071.md index 0e1d1ae8541..7324611d459 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3071.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3071.md @@ -18,7 +18,7 @@ For more information, see [Tracking Reference Operator](../../extensions/trackin ## Example -The following sample generates C3071. +The following example generates C3071. ```cpp // C3071.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3072.md b/docs/error-messages/compiler-errors-2/compiler-error-c3072.md index cee557a9090..0282b81e5e7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3072.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3072.md @@ -18,7 +18,7 @@ A CLR type requires CLR operators, not native (or standard) operators. For more ## Example -The following sample generates C3072. +The following example generates C3072. ```cpp // C3072.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3073.md b/docs/error-messages/compiler-errors-2/compiler-error-c3073.md index 4467da76ef0..1d63189cf50 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3073.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3073.md @@ -18,7 +18,7 @@ For more information, see [C++ Stack Semantics for Reference Types](../../dotnet ## Example -The following sample generates C3073. +The following example generates C3073. ```cpp // C3073.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3075.md b/docs/error-messages/compiler-errors-2/compiler-error-c3075.md index 102125ccd76..9149f10f370 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3075.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3075.md @@ -18,7 +18,7 @@ For more information, see [C++ Stack Semantics for Reference Types](../../dotnet ## Example -The following sample generates C3075. +The following example generates C3075. ```cpp // C3075.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3076.md b/docs/error-messages/compiler-errors-2/compiler-error-c3076.md index dc1bd0e0460..1e469a6af24 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3076.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3076.md @@ -18,7 +18,7 @@ For more information, see [C++ Stack Semantics for Reference Types](../../dotnet ## Example -The following sample generates C3076. +The following example generates C3076. ```cpp // C3076.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3077.md b/docs/error-messages/compiler-errors-2/compiler-error-c3077.md index 1ba323d027b..4eda0a4e536 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3077.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3077.md @@ -18,7 +18,7 @@ For more information, see [Destructors and finalizers in How to: Define and cons ## Example -The following sample generates C3077. +The following example generates C3077. ```cpp // C3077.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3080.md b/docs/error-messages/compiler-errors-2/compiler-error-c3080.md index c838ac27edc..14d33781ae6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3080.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3080.md @@ -16,7 +16,7 @@ For more information, see [Destructors and finalizers in How to: Define and cons ## Example -The following sample generates C3080. +The following example generates C3080. ```cpp // C3080.cpp From 468f814c431a42b2262a75a41108b9c71447b3c9 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 13 Aug 2025 23:35:02 +0800 Subject: [PATCH 1387/2255] Update metadata for error references in range [C3051, C3080] --- .../error-messages/compiler-errors-2/compiler-error-c3052.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3053.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3054.md | 3 +-- .../error-messages/compiler-errors-2/compiler-error-c3055.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3056.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3057.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3058.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3059.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3060.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3062.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3063.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3065.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3066.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3069.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3070.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3071.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3072.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3073.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3075.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3076.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3077.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3080.md | 5 ++--- 22 files changed, 43 insertions(+), 65 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3052.md b/docs/error-messages/compiler-errors-2/compiler-error-c3052.md index 9ecb55df3b7..57d7f03c1d8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3052.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3052.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3052" title: "Compiler Error C3052" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3052" +ms.date: 11/04/2016 f1_keywords: ["C3052"] helpviewer_keywords: ["C3052"] -ms.assetid: 87480c42-1ceb-4775-8d20-88c54a7bb6a6 --- # Compiler Error C3052 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3053.md b/docs/error-messages/compiler-errors-2/compiler-error-c3053.md index a411012c617..62bcc0b3055 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3053.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3053.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3053" title: "Compiler Error C3053" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3053" +ms.date: 11/04/2016 f1_keywords: ["C3053"] helpviewer_keywords: ["C3053"] -ms.assetid: ab9a25f3-e341-4f6e-8e69-069b4a963a64 --- # Compiler Error C3053 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3054.md b/docs/error-messages/compiler-errors-2/compiler-error-c3054.md index 80e849970a2..be1a516fcf8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3054.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3054.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3054" title: "Compiler Error C3054" +description: "Learn more about: Compiler Error C3054" ms.date: 06/01/2022 f1_keywords: ["C3054"] helpviewer_keywords: ["C3054"] -ms.assetid: 6f4b7ac5-0d12-474b-b611-76ff26ee41ac --- # Compiler Error C3054 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3055.md b/docs/error-messages/compiler-errors-2/compiler-error-c3055.md index 8e43726f340..c27fbebbe56 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3055.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3055.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3055" title: "Compiler Error C3055" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3055" +ms.date: 11/04/2016 f1_keywords: ["C3055"] helpviewer_keywords: ["C3055"] -ms.assetid: 60446ee0-18dd-48fc-9059-f0a14229dce8 --- # Compiler Error C3055 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3056.md b/docs/error-messages/compiler-errors-2/compiler-error-c3056.md index ee897562000..48b72cc3463 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3056.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3056.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3056" title: "Compiler Error C3056" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3056" +ms.date: 11/04/2016 f1_keywords: ["C3056"] helpviewer_keywords: ["C3056"] -ms.assetid: 9500173d-870b-49b3-8e88-0ee93586d19a --- # Compiler Error C3056 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3057.md b/docs/error-messages/compiler-errors-2/compiler-error-c3057.md index f536d24d98f..009ad60d670 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3057.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3057.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3057" title: "Compiler Error C3057" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3057" +ms.date: 11/04/2016 f1_keywords: ["C3057"] helpviewer_keywords: ["C3057"] -ms.assetid: b0b2ba88-9c74-4bec-bf60-8fc72eade34c --- # Compiler Error C3057 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3058.md b/docs/error-messages/compiler-errors-2/compiler-error-c3058.md index 930b88ea8ba..b02ea0b7cd4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3058.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3058.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3058" title: "Compiler Error C3058" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3058" +ms.date: 11/04/2016 f1_keywords: ["C3058"] helpviewer_keywords: ["C3058"] -ms.assetid: 669d08c8-0b58-4351-88aa-c6e6e1af481c --- # Compiler Error C3058 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3059.md b/docs/error-messages/compiler-errors-2/compiler-error-c3059.md index 19f8f13adc1..d7518ccc873 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3059.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3059.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3059" title: "Compiler Error C3059" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3059" +ms.date: 11/04/2016 f1_keywords: ["C3059"] helpviewer_keywords: ["C3059"] -ms.assetid: 57220324-8286-4cab-a1ab-45385eb1eae0 --- # Compiler Error C3059 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3060.md b/docs/error-messages/compiler-errors-2/compiler-error-c3060.md index c75119aba24..1745f7c3480 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3060.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3060.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3060" title: "Compiler Error C3060" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3060" +ms.date: 11/04/2016 f1_keywords: ["C3060"] helpviewer_keywords: ["C3060"] -ms.assetid: 6282bb92-0546-4b59-9435-d3840bf93bdb --- # Compiler Error C3060 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3062.md b/docs/error-messages/compiler-errors-2/compiler-error-c3062.md index c18991cd2fd..bb87d31e352 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3062.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3062.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3062" title: "Compiler Error C3062" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3062" +ms.date: 11/04/2016 f1_keywords: ["C3062"] helpviewer_keywords: ["C3062"] -ms.assetid: 78632e6d-255f-42c3-b124-31a9194ff86d --- # Compiler Error C3062 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3063.md b/docs/error-messages/compiler-errors-2/compiler-error-c3063.md index 18c6afb8007..00e1890b694 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3063.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3063.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3063" title: "Compiler Error C3063" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3063" +ms.date: 11/04/2016 f1_keywords: ["C3063"] helpviewer_keywords: ["C3063"] -ms.assetid: 0ecf6f1f-e4a7-487a-9fd5-79d8ac470001 --- # Compiler Error C3063 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3065.md b/docs/error-messages/compiler-errors-2/compiler-error-c3065.md index 05598a37737..6c8a2fdb26e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3065.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3065.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3065" title: "Compiler Error C3065" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3065" +ms.date: 11/04/2016 f1_keywords: ["C3065"] helpviewer_keywords: ["C3065"] -ms.assetid: e7a0bc69-1c68-459e-a7c4-93c65609ff7c --- # Compiler Error C3065 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3066.md b/docs/error-messages/compiler-errors-2/compiler-error-c3066.md index 421799e1e74..abba7aee354 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3066.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3066.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3066" title: "Compiler Error C3066" -ms.date: "03/28/2017" +description: "Learn more about: Compiler Error C3066" +ms.date: 03/28/2017 f1_keywords: ["C3066"] helpviewer_keywords: ["C3066"] -ms.assetid: 226f6de5-c4c5-41e2-b31a-2e30a37fbbeb --- # Compiler Error C3066 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3069.md b/docs/error-messages/compiler-errors-2/compiler-error-c3069.md index 456c57b6250..e334e11aaa5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3069.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3069.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3069" title: "Compiler Error C3069" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3069" +ms.date: 11/04/2016 f1_keywords: ["C3069"] helpviewer_keywords: ["C3069"] -ms.assetid: ca94291b-2bb4-4e3f-9acf-534234b83513 --- # Compiler Error C3069 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3070.md b/docs/error-messages/compiler-errors-2/compiler-error-c3070.md index 9bdc7b14279..3e5cd8cee5e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3070.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3070.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3070" title: "Compiler Error C3070" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3070" +ms.date: 11/04/2016 f1_keywords: ["C3070"] helpviewer_keywords: ["C3070"] -ms.assetid: ac88584d-40a6-4176-90f3-2371c3c935f2 --- # Compiler Error C3070 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3071.md b/docs/error-messages/compiler-errors-2/compiler-error-c3071.md index 7324611d459..b8f37bba23f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3071.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3071.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3071" title: "Compiler Error C3071" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3071" +ms.date: 11/04/2016 f1_keywords: ["C3071"] helpviewer_keywords: ["C3071"] -ms.assetid: 69879e66-a60e-4058-9bbd-d5c5e2d8ee37 --- # Compiler Error C3071 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3072.md b/docs/error-messages/compiler-errors-2/compiler-error-c3072.md index 0282b81e5e7..c4a4aa4d695 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3072.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3072.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3072" title: "Compiler Error C3072" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3072" +ms.date: 11/04/2016 f1_keywords: ["C3072"] helpviewer_keywords: ["C3072"] -ms.assetid: cdd5cb6b-c478-4698-adfa-c40188d34a18 --- # Compiler Error C3072 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3073.md b/docs/error-messages/compiler-errors-2/compiler-error-c3073.md index 1d63189cf50..ee969551dee 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3073.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3073.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3073" title: "Compiler Error C3073" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3073" +ms.date: 11/04/2016 f1_keywords: ["C3073"] helpviewer_keywords: ["C3073"] -ms.assetid: b24b9b8b-f9fb-4c3c-a1a0-97fad2081bfc --- # Compiler Error C3073 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3075.md b/docs/error-messages/compiler-errors-2/compiler-error-c3075.md index 9149f10f370..eddf91c56cb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3075.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3075.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3075" title: "Compiler Error C3075" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3075" +ms.date: 11/04/2016 f1_keywords: ["C3075"] helpviewer_keywords: ["C3075"] -ms.assetid: f431daa9-e0fa-48f0-a5c3-f99be96b55e3 --- # Compiler Error C3075 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3076.md b/docs/error-messages/compiler-errors-2/compiler-error-c3076.md index 1e469a6af24..62da9d235f0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3076.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3076.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3076" title: "Compiler Error C3076" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3076" +ms.date: 11/04/2016 f1_keywords: ["C3076"] helpviewer_keywords: ["C3076"] -ms.assetid: 8a87b3e4-2c17-4b87-9622-ef0962d6a34e --- # Compiler Error C3076 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3077.md b/docs/error-messages/compiler-errors-2/compiler-error-c3077.md index 4eda0a4e536..db80911f95c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3077.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3077.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3077" title: "Compiler Error C3077" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3077" +ms.date: 11/04/2016 f1_keywords: ["C3077"] helpviewer_keywords: ["C3077"] -ms.assetid: d9f3c619-d1e2-4656-81a5-a35a9586a7d4 --- # Compiler Error C3077 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3080.md b/docs/error-messages/compiler-errors-2/compiler-error-c3080.md index 14d33781ae6..88cbc6ca129 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3080.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3080.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3080" title: "Compiler Error C3080" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3080" +ms.date: 11/04/2016 f1_keywords: ["C3080"] helpviewer_keywords: ["C3080"] -ms.assetid: ff62a3f7-9b3b-44bd-b8d9-f3a8e5354560 --- # Compiler Error C3080 From 6bf0908284289b22e761a203e8a72746c4d474a6 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Wed, 13 Aug 2025 18:40:45 -0700 Subject: [PATCH 1388/2255] Remove extra word --- docs/sanitizers/toc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/toc.yml b/docs/sanitizers/toc.yml index b3c548bda9e..66b72750b80 100644 --- a/docs/sanitizers/toc.yml +++ b/docs/sanitizers/toc.yml @@ -12,7 +12,7 @@ items: href: ../sanitizers/asan-building.md - name: "Runtime reference" href: ../sanitizers/asan-runtime.md - - name: "AddressSanitizer runtime options" + - name: "Runtime options" href: ../sanitizers/asan-flags.md - name: "Debugger integration" href: ../sanitizers/asan-debugger-integration.md From 81b01f816444b586aaa938d6d418cabb933589a3 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Wed, 13 Aug 2025 18:41:30 -0700 Subject: [PATCH 1389/2255] check_printf not supported on windows --- docs/sanitizers/asan-flags.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 996a29b8de0..93c81e75162 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -22,7 +22,6 @@ If you discover options that are inaccurately documented, we invite you to [repo |`atexit` | `false` | If `true`, prints ASan exit stats even after program terminates successfully.| |`check_initialization_order` | `false` | If `true`, attempts to catch initialization order issues.| |`check_malloc_usable_size` | `true` | If `true`, reports an error when the pointer does not reference a valid, currently allocated block.| -|`check_printf` | `true` | If `true`, enables ASan to validate printf family function arguments for memory safety violations.| |`continue_on_error` | `0` | Allows an application to continue running while reporting unique memory safety errors. `0` - disabled, `1` - output to `stdout`, `2` - output to `stderr`. See [continue_on_error](asan-continue-on-error.md).| |`detect_container_overflow` | `true` | If `true`, honor the container overflow annotations. See [ContainerOverflow](./error-container-overflow.md).| |`detect_invalid_pointer_pairs` | `0` | If >`0`, the tool detects operations like <, <=, >, >=, and - on invalid pointer pairs, such as pointers that belong to different objects. Higher values increase detection effort.| From bbb34f4b02e1f0e10c2f24b6f6c25ee8639387f6 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Wed, 13 Aug 2025 18:41:45 -0700 Subject: [PATCH 1390/2255] include not supported on windows --- docs/sanitizers/asan-flags.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 93c81e75162..f4fb2552652 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -42,7 +42,6 @@ If you discover options that are inaccurately documented, we invite you to [repo |`help` | `false` | If `true`, ASan prints the flag options to console.| |`html_cov_report` | `false` | If `true`, ASan generates a coverage report.| |`iat_overwrite`|`error`|`error` - report an error whenever an overwrite is detected, `protect` - attempt to avoid using the overwritten definition, `ignore` - never attempt to correct any overwritten functions. See [iat_overwrite](./asan-runtime.md#msvc-specific-addresssanitizer-runtime-options).| -|`include` | `""` | Read more options from the given file.| |`include_if_exists` | `""` | Read more options from the given file (if it exists).| |`intercept_memcmp` | `true` | If `true`, uses custom wrappers for memcmp function to find more errors.| |`intercept_strpbrk` | `true` | If `true`, uses custom wrappers for strpbrk function to find more errors.| From a82940d7cd67f269e8e814c97b0c735a2f6ba66e Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Wed, 13 Aug 2025 18:42:11 -0700 Subject: [PATCH 1391/2255] Not Supported on windows --- docs/sanitizers/asan-flags.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index f4fb2552652..90083bae452 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -43,7 +43,6 @@ If you discover options that are inaccurately documented, we invite you to [repo |`html_cov_report` | `false` | If `true`, ASan generates a coverage report.| |`iat_overwrite`|`error`|`error` - report an error whenever an overwrite is detected, `protect` - attempt to avoid using the overwritten definition, `ignore` - never attempt to correct any overwritten functions. See [iat_overwrite](./asan-runtime.md#msvc-specific-addresssanitizer-runtime-options).| |`include_if_exists` | `""` | Read more options from the given file (if it exists).| -|`intercept_memcmp` | `true` | If `true`, uses custom wrappers for memcmp function to find more errors.| |`intercept_strpbrk` | `true` | If `true`, uses custom wrappers for strpbrk function to find more errors.| |`intercept_strspn` | `true` | If `true`, uses custom wrappers for strspn and strcspn function to find more errors.| |`intercept_strstr` | `true` | If `true`, uses custom wrappers for strstr and strcasestr functions to find more errors.| From f9ce9534293f2c7fabb9c072cf3e5ab4f17e8cdb Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Wed, 13 Aug 2025 18:43:09 -0700 Subject: [PATCH 1392/2255] Not supported --- docs/sanitizers/asan-flags.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 90083bae452..9994afc68af 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -46,7 +46,6 @@ If you discover options that are inaccurately documented, we invite you to [repo |`intercept_strpbrk` | `true` | If `true`, uses custom wrappers for strpbrk function to find more errors.| |`intercept_strspn` | `true` | If `true`, uses custom wrappers for strspn and strcspn function to find more errors.| |`intercept_strstr` | `true` | If `true`, uses custom wrappers for strstr and strcasestr functions to find more errors.| -|`intercept_tls_get_addr` | `false` | Intercept __tls_get_addr.| |`log_exe_name` | `false` | Mention name of executable when reporting error and append executable name to logs (as in `log_path.exe_name.pid`).| |`log_path` | `stderr` | Write logs to `log_path.pid`. The special values are `stdout` and `stderr`. The default is `stderr`.| |`log_to_syslog` | `false` | Write all sanitizer output to syslog in addition to other means of logging.| From edb3e0d54e1b3933e1467e0d246a2af8b13568ec Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Wed, 13 Aug 2025 18:43:18 -0700 Subject: [PATCH 1393/2255] Not supported --- docs/sanitizers/asan-flags.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 9994afc68af..893202ec709 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -64,7 +64,6 @@ If you discover options that are inaccurately documented, we invite you to [repo |`print_legend` | `true` | Print the legend for the shadow bytes.| |`print_stats` | `false` | Print various statistics after printing an error message or if atexit=1.| |`print_summary` | `true` | If `false`, disable printing error summaries in addition to error reports.| -|`print_suppressions` | `true` | Print matched suppressions at exit.| |`protect_shadow_gap` | `true` | If `true`, `mprotect` the shadow gap.| |`quarantine_size` | `-1` | Deprecated, please use `quarantine_size_mb`.| |`quarantine_size_mb` | `-1` | Size (in Mb) of quarantine used to detect `use-after-free` errors. Lower value may increase the chance of false negatives.| From 6d7a8650aaea16015500c3e8887bcd8e439dc4df Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 14 Aug 2025 21:05:58 +0800 Subject: [PATCH 1394/2255] Add blockquotes and update error message in C3083 error reference --- docs/error-messages/compiler-errors-2/compiler-error-c3083.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3083.md b/docs/error-messages/compiler-errors-2/compiler-error-c3083.md index 35cefa54416..7f5871d0304 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3083.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3083.md @@ -8,7 +8,7 @@ ms.assetid: 05ff791d-52bb-41eb-9511-3ef89d7f4710 --- # Compiler Error C3083 -'function': the symbol to the left of a '::' must be a type +> '*identifier*': the symbol to the left of a '::' must be a type A function was called incorrectly. From 80b3960228e32215cddd86e79303e70cfeb3c500 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 14 Aug 2025 21:06:51 +0800 Subject: [PATCH 1395/2255] Add "Remarks" heading in C3083 error reference --- docs/error-messages/compiler-errors-2/compiler-error-c3083.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3083.md b/docs/error-messages/compiler-errors-2/compiler-error-c3083.md index 7f5871d0304..3792c711f26 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3083.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3083.md @@ -10,6 +10,8 @@ ms.assetid: 05ff791d-52bb-41eb-9511-3ef89d7f4710 > '*identifier*': the symbol to the left of a '::' must be a type +## Remarks + A function was called incorrectly. ## Example From 4243428b360981ffec222356fe17d310cf0b5190 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 14 Aug 2025 21:28:30 +0800 Subject: [PATCH 1396/2255] Overhaul remarks in C3083 error reference --- docs/error-messages/compiler-errors-2/compiler-error-c3083.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3083.md b/docs/error-messages/compiler-errors-2/compiler-error-c3083.md index 3792c711f26..7a86aaf4a0c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3083.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3083.md @@ -12,7 +12,7 @@ ms.assetid: 05ff791d-52bb-41eb-9511-3ef89d7f4710 ## Remarks -A function was called incorrectly. +The qualification used is invalid. Ensure that no extra symbols were used in the qualification and that you included all required headers. ## Example From 39250ac89130c2fa3ae880c0cf2cfbe41b48e1ca Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 14 Aug 2025 21:34:44 +0800 Subject: [PATCH 1397/2255] Fix and improve example in C3083 error reference --- .../compiler-errors-2/compiler-error-c3083.md | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3083.md b/docs/error-messages/compiler-errors-2/compiler-error-c3083.md index 7a86aaf4a0c..fd0580e5a49 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3083.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3083.md @@ -16,19 +16,17 @@ The qualification used is invalid. Ensure that no extra symbols were used in the ## Example -The following sample generates C3083. +The following example generates C3083: ```cpp // C3083.cpp // compile with: /c -struct N { - ~N(); -}; -struct N1 { - ~N1(); +struct S +{ + S(); }; -N::N::~N() {} // C3083 -N1::~N1() {} // OK +S::Extra::S() {} // C3083 +S::S() {} // OK ``` From 5f6fa92144dd7373e9270d16e5b283fb3d00b494 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 14 Aug 2025 21:35:31 +0800 Subject: [PATCH 1398/2255] Update metadata in C3083 error reference --- .../error-messages/compiler-errors-2/compiler-error-c3083.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3083.md b/docs/error-messages/compiler-errors-2/compiler-error-c3083.md index fd0580e5a49..8b0ec411136 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3083.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3083.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3083" title: "Compiler Error C3083" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3083" +ms.date: 08/14/2025 f1_keywords: ["C3083"] helpviewer_keywords: ["C3083"] -ms.assetid: 05ff791d-52bb-41eb-9511-3ef89d7f4710 --- # Compiler Error C3083 From 7d2e9267b22c3a25edc72b543d1fe6a2f63b83cd Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 14 Aug 2025 22:01:41 +0800 Subject: [PATCH 1399/2255] Add blockquotes for error messages in range [C3081, C3130] --- docs/error-messages/compiler-errors-2/compiler-error-c3084.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3085.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3087.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3094.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3095.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3096.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3097.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3099.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3100.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3101.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3103.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3104.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3106.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3110.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3113.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3114.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3115.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3116.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3117.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3118.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3120.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3121.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3126.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3130.md | 2 +- 24 files changed, 24 insertions(+), 24 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3084.md b/docs/error-messages/compiler-errors-2/compiler-error-c3084.md index aebe230b47a..f2818964fa6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3084.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3084.md @@ -8,7 +8,7 @@ ms.assetid: 0362cb70-e24e-476f-a24d-8f5bb97c3afd --- # Compiler Error C3084 -'function': a finalizer/destructor cannot be 'keyword' +> 'function': a finalizer/destructor cannot be 'keyword' A finalizer or destructor was declared incorrectly. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3085.md b/docs/error-messages/compiler-errors-2/compiler-error-c3085.md index 7fe1b774584..102a0b05f22 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3085.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3085.md @@ -8,7 +8,7 @@ ms.assetid: 1ac40bf2-f63e-439e-8921-47e6dadc8354 --- # Compiler Error C3085 -'constructor': a constructor cannot be 'keyword' +> 'constructor': a constructor cannot be 'keyword' A constructor was declared incorrectly. See [Override Specifiers](../../extensions/override-specifiers-cpp-component-extensions.md) for more information. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3087.md b/docs/error-messages/compiler-errors-2/compiler-error-c3087.md index a55aa67f4bd..dfa4003fc8d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3087.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3087.md @@ -8,7 +8,7 @@ ms.assetid: 4f5bdd52-a853-4f02-b160-6868e9190b9d --- # Compiler Error C3087 -'named_argument': call of 'attribute' already initializes this member +> 'named_argument': call of 'attribute' already initializes this member A named argument was specified in the same attribute block as an unnamed argument for the same value. Specify only a named or unnamed argument. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3094.md b/docs/error-messages/compiler-errors-2/compiler-error-c3094.md index a97f0f43706..426657dc142 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3094.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3094.md @@ -8,7 +8,7 @@ ms.assetid: 10da9b7c-e72d-4013-9925-c83e1bb142db --- # Compiler Error C3094 -'attribute': anonymous usage not allowed +> 'attribute': anonymous usage not allowed An attribute was not scoped correctly. For more information, see [User-Defined Attributes](../../extensions/user-defined-attributes-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3095.md b/docs/error-messages/compiler-errors-2/compiler-error-c3095.md index bd8be003cbd..fea59c44b95 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3095.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3095.md @@ -8,7 +8,7 @@ ms.assetid: cde725be-0936-40f6-9e57-e1d7d0710f83 --- # Compiler Error C3095 -'attribute': attribute cannot be repeated +> 'attribute': attribute cannot be repeated Some attributes are declared such that, multiple occurrences of the attribute cannot be applied to a target. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3096.md b/docs/error-messages/compiler-errors-2/compiler-error-c3096.md index aef61fc0947..3946185e304 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3096.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3096.md @@ -8,7 +8,7 @@ ms.assetid: 56353c9a-800c-474f-b428-3e5d2a7afc9a --- # Compiler Error C3096 -'attribute': attribute is allowed on data members of attribute classes only +> 'attribute': attribute is allowed on data members of attribute classes only An attribute was applied incorrectly. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3097.md b/docs/error-messages/compiler-errors-2/compiler-error-c3097.md index b8147494239..fdb024cf083 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3097.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3097.md @@ -8,7 +8,7 @@ ms.assetid: b24bd8f8-e04f-4fbb-be57-4feb9165572e --- # Compiler Error C3097 -'attribute': attribute must be scoped with 'assembly:' or 'module:' +> 'attribute': attribute must be scoped with 'assembly:' or 'module:' A global attribute was used incorrectly. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3099.md b/docs/error-messages/compiler-errors-2/compiler-error-c3099.md index ae0c8f89aa8..204a3027e48 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3099.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3099.md @@ -8,7 +8,7 @@ ms.assetid: b3dded0f-76c9-42c1-991b-532eb8619661 --- # Compiler Error C3099 -'keyword': use [System::AttributeUsageAttribute] for managed attributes; use [Windows::Foundation::Metadata::AttributeUsageAttribute] for WinRT attributes +> 'keyword': use [System::AttributeUsageAttribute] for managed attributes; use [Windows::Foundation::Metadata::AttributeUsageAttribute] for WinRT attributes Use to declare **/clr** attributes. Use `Windows::Foundation::Metadata::AttributeUsageAttribute` to declare Windows Runtime attributes. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3100.md b/docs/error-messages/compiler-errors-2/compiler-error-c3100.md index 5fa251c5129..a4583d78d83 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3100.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3100.md @@ -8,7 +8,7 @@ ms.assetid: 7a9c9eaf-08ef-442d-94a0-e457beee8549 --- # Compiler Error C3100 -'target' : unknown attribute qualifier +> 'target' : unknown attribute qualifier An invalid attribute target was specified. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3101.md b/docs/error-messages/compiler-errors-2/compiler-error-c3101.md index 045856000f7..c519944550f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3101.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3101.md @@ -8,7 +8,7 @@ ms.assetid: 4f673766-d4f7-4632-94a5-d36a83f7f4b5 --- # Compiler Error C3101 -illegal expression for named attribute argument 'field' +> illegal expression for named attribute argument 'field' When initializing a named attribute argument, the value must be a compile time constant. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3103.md b/docs/error-messages/compiler-errors-2/compiler-error-c3103.md index c877baa9b96..123be858e4e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3103.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3103.md @@ -8,7 +8,7 @@ ms.assetid: 7984bd3e-d51d-43e4-b6f4-08c1e9fb9704 --- # Compiler Error C3103 -'argument': repeated named argument +> 'argument': repeated named argument An attribute can not repeat named arguments. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3104.md b/docs/error-messages/compiler-errors-2/compiler-error-c3104.md index 1dec0a81074..28ba2468bdb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3104.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3104.md @@ -8,7 +8,7 @@ ms.assetid: b5648d47-e5d3-4b45-a3c0-f46e04eae731 --- # Compiler Error C3104 -illegal attribute argument +> illegal attribute argument You specified an invalid argument to an attribute. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3106.md b/docs/error-messages/compiler-errors-2/compiler-error-c3106.md index 0722bc47ab8..0ea2a3b2db1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3106.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3106.md @@ -8,7 +8,7 @@ ms.assetid: 39d97a32-0905-4702-87d3-7f8ce473fb93 --- # Compiler Error C3106 -'attribute': unnamed arguments must precede named arguments +> 'attribute': unnamed arguments must precede named arguments Unnamed arguments must be passed to an attribute before named arguments. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3110.md b/docs/error-messages/compiler-errors-2/compiler-error-c3110.md index d9394cedf03..b8b6d21e522 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3110.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3110.md @@ -8,7 +8,7 @@ ms.assetid: 821dc71f-896e-4b2d-af0e-aa9932934b7b --- # Compiler Error C3110 -'function_name' : you cannot overload a COM interface method +> 'function_name' : you cannot overload a COM interface method An interface that is prefaced by an interface attribute, such as: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3113.md b/docs/error-messages/compiler-errors-2/compiler-error-c3113.md index 970f7590709..7b400ef127e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3113.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3113.md @@ -8,7 +8,7 @@ ms.assetid: 3afdc668-b29e-474e-9ea3-aa027d42db7c --- # Compiler Error C3113 -an 'structure' cannot be a template/generic +> an 'structure' cannot be a template/generic You attempted to make a class template or class generic out of an interface or an enum. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3114.md b/docs/error-messages/compiler-errors-2/compiler-error-c3114.md index 6fac377ccb8..0bd5839e0d3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3114.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3114.md @@ -8,7 +8,7 @@ ms.assetid: b5d2df4f-87d0-4292-9981-25c6a6013c05 --- # Compiler Error C3114 -'argument': not a valid named attribute argument +> 'argument': not a valid named attribute argument In order for an attribute class data member to be a valid named argument, it must not be marked **`static`**, **`const`**, or **`literal`**. If a property, the property must not be **`static`** and must have get and set accessors. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3115.md b/docs/error-messages/compiler-errors-2/compiler-error-c3115.md index 217ea876771..03b42e5ca77 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3115.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3115.md @@ -8,7 +8,7 @@ ms.assetid: 51726145-9782-4ec9-84b9-286f366d9cbd --- # Compiler Error C3115 -'attribute': this attribute is not allowed on 'construct' +> 'attribute': this attribute is not allowed on 'construct' An attribute was applied to a construct for which it was not intended. See [Attributes by Usage](../../windows/attributes/attributes-by-usage.md) for more information. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3116.md b/docs/error-messages/compiler-errors-2/compiler-error-c3116.md index 57dbf504d7f..d291688f14c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3116.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3116.md @@ -8,7 +8,7 @@ ms.assetid: 597463e1-a5cc-4ed3-a917-eae9a61d3312 --- # Compiler Error C3116 -'storage specifier' : invalid storage class for interface method +> 'storage specifier' : invalid storage class for interface method You used **`typedef`**, **`register`**, or **`static`** as the storage class for an interface method. These storage classes are not permitted on interface members. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3117.md b/docs/error-messages/compiler-errors-2/compiler-error-c3117.md index d8564c19483..a35034fb256 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3117.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3117.md @@ -8,7 +8,7 @@ ms.assetid: dceee392-d4c7-4599-b75e-7aaac7c36fdd --- # Compiler Error C3117 -'%$S' : an interface can only have one base class +> '%$S' : an interface can only have one base class You declared an interface that inherits from multiple base classes. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3118.md b/docs/error-messages/compiler-errors-2/compiler-error-c3118.md index 336a3aaf927..b90b7c0cad8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3118.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3118.md @@ -8,7 +8,7 @@ ms.assetid: 40fbe681-8868-4cb2-a2b2-4db4449319a7 --- # Compiler Error C3118 -'interface' : interfaces do not support virtual inheritance +> 'interface' : interfaces do not support virtual inheritance You tried to virtually inherit from an interface. For example, diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3120.md b/docs/error-messages/compiler-errors-2/compiler-error-c3120.md index b9d10eea8a6..0e2eabee5ac 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3120.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3120.md @@ -8,7 +8,7 @@ ms.assetid: 9b6b210f-9948-4517-a4cc-b4aaadebde68 --- # Compiler Error C3120 -'method_name' : interface methods cannot take a variable argument list +> 'method_name' : interface methods cannot take a variable argument list An interface method cannot take a variable argument list. For example, the following interface definition generates C3120: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3121.md b/docs/error-messages/compiler-errors-2/compiler-error-c3121.md index 227db69a1d0..dc92ada5e11 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3121.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3121.md @@ -8,7 +8,7 @@ ms.assetid: 1d3c7be4-d42d-4def-8d53-182c0c5cc237 --- # Compiler Error C3121 -cannot change GUID for class 'class_name' +> cannot change GUID for class 'class_name' You attempted to change the class ID with [__declspec(uuid)](../../cpp/uuid-cpp.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3126.md b/docs/error-messages/compiler-errors-2/compiler-error-c3126.md index 2822c84cc6a..8536c3f4a3b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3126.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3126.md @@ -8,7 +8,7 @@ ms.assetid: e72658a3-5d85-4a31-89a4-dbc3d475973d --- # Compiler Error C3126 -cannot define a union 'union' inside of managed type 'type' +> cannot define a union 'union' inside of managed type 'type' A union cannot be defined inside a managed type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3130.md b/docs/error-messages/compiler-errors-2/compiler-error-c3130.md index 4da60e51e93..4006e92b68a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3130.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3130.md @@ -8,6 +8,6 @@ ms.assetid: c1462f33-434f-41f0-937e-392864916850 --- # Compiler Error C3130 -Internal Compiler Error: failed to write injected code block to PDB +> Internal Compiler Error: failed to write injected code block to PDB This error occurs if the compiler failed to write an injected code block to the .pdb file. The most common reason for the failure is lack of disk space. From 926b19f625b07a0f8694a54012abdace25c92a42 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 14 Aug 2025 22:07:44 +0800 Subject: [PATCH 1400/2255] Add "Remarks" and "Example" headings for error references in range [C3081, C3130] --- .../compiler-errors-2/compiler-error-c3084.md | 2 ++ .../compiler-errors-2/compiler-error-c3085.md | 2 ++ .../compiler-errors-2/compiler-error-c3087.md | 2 ++ .../compiler-errors-2/compiler-error-c3094.md | 2 ++ .../compiler-errors-2/compiler-error-c3095.md | 2 ++ .../compiler-errors-2/compiler-error-c3096.md | 2 ++ .../compiler-errors-2/compiler-error-c3097.md | 2 ++ .../compiler-errors-2/compiler-error-c3099.md | 2 ++ .../compiler-errors-2/compiler-error-c3100.md | 2 ++ .../compiler-errors-2/compiler-error-c3101.md | 2 ++ .../compiler-errors-2/compiler-error-c3103.md | 2 ++ .../compiler-errors-2/compiler-error-c3104.md | 2 ++ .../compiler-errors-2/compiler-error-c3106.md | 2 ++ .../compiler-errors-2/compiler-error-c3110.md | 8 +++++++- .../compiler-errors-2/compiler-error-c3113.md | 4 ++++ .../compiler-errors-2/compiler-error-c3114.md | 2 ++ .../compiler-errors-2/compiler-error-c3115.md | 2 ++ .../compiler-errors-2/compiler-error-c3116.md | 4 ++++ .../compiler-errors-2/compiler-error-c3117.md | 4 ++++ .../compiler-errors-2/compiler-error-c3118.md | 8 +++++++- .../compiler-errors-2/compiler-error-c3120.md | 8 +++++++- .../compiler-errors-2/compiler-error-c3121.md | 4 ++++ .../compiler-errors-2/compiler-error-c3126.md | 4 ++++ .../compiler-errors-2/compiler-error-c3130.md | 2 ++ 24 files changed, 73 insertions(+), 3 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3084.md b/docs/error-messages/compiler-errors-2/compiler-error-c3084.md index f2818964fa6..60cd5972942 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3084.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3084.md @@ -10,6 +10,8 @@ ms.assetid: 0362cb70-e24e-476f-a24d-8f5bb97c3afd > 'function': a finalizer/destructor cannot be 'keyword' +## Remarks + A finalizer or destructor was declared incorrectly. For example, a destructor should not be marked as sealed. The destructor will be inaccessible to derived types. For more information, see [Explicit Overrides](../../extensions/explicit-overrides-cpp-component-extensions.md) and [Destructors and finalizers in How to: Define and consume classes and structs (C++/CLI)](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Destructors_and_finalizers). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3085.md b/docs/error-messages/compiler-errors-2/compiler-error-c3085.md index 102a0b05f22..95ccea1ae62 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3085.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3085.md @@ -10,6 +10,8 @@ ms.assetid: 1ac40bf2-f63e-439e-8921-47e6dadc8354 > 'constructor': a constructor cannot be 'keyword' +## Remarks + A constructor was declared incorrectly. See [Override Specifiers](../../extensions/override-specifiers-cpp-component-extensions.md) for more information. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3087.md b/docs/error-messages/compiler-errors-2/compiler-error-c3087.md index dfa4003fc8d..8c9d6b5f62f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3087.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3087.md @@ -10,6 +10,8 @@ ms.assetid: 4f5bdd52-a853-4f02-b160-6868e9190b9d > 'named_argument': call of 'attribute' already initializes this member +## Remarks + A named argument was specified in the same attribute block as an unnamed argument for the same value. Specify only a named or unnamed argument. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3094.md b/docs/error-messages/compiler-errors-2/compiler-error-c3094.md index 426657dc142..8c59eccec4b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3094.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3094.md @@ -10,6 +10,8 @@ ms.assetid: 10da9b7c-e72d-4013-9925-c83e1bb142db > 'attribute': anonymous usage not allowed +## Remarks + An attribute was not scoped correctly. For more information, see [User-Defined Attributes](../../extensions/user-defined-attributes-cpp-component-extensions.md). ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3095.md b/docs/error-messages/compiler-errors-2/compiler-error-c3095.md index fea59c44b95..d9f6c189284 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3095.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3095.md @@ -10,6 +10,8 @@ ms.assetid: cde725be-0936-40f6-9e57-e1d7d0710f83 > 'attribute': attribute cannot be repeated +## Remarks + Some attributes are declared such that, multiple occurrences of the attribute cannot be applied to a target. For more information, see [User-Defined Attributes](../../extensions/user-defined-attributes-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3096.md b/docs/error-messages/compiler-errors-2/compiler-error-c3096.md index 3946185e304..0a3e89f08ba 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3096.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3096.md @@ -10,6 +10,8 @@ ms.assetid: 56353c9a-800c-474f-b428-3e5d2a7afc9a > 'attribute': attribute is allowed on data members of attribute classes only +## Remarks + An attribute was applied incorrectly. For more information, see [User-Defined Attributes](../../extensions/user-defined-attributes-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3097.md b/docs/error-messages/compiler-errors-2/compiler-error-c3097.md index fdb024cf083..8ef0171dba9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3097.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3097.md @@ -10,6 +10,8 @@ ms.assetid: b24bd8f8-e04f-4fbb-be57-4feb9165572e > 'attribute': attribute must be scoped with 'assembly:' or 'module:' +## Remarks + A global attribute was used incorrectly. For more information, see [User-Defined Attributes](../../extensions/user-defined-attributes-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3099.md b/docs/error-messages/compiler-errors-2/compiler-error-c3099.md index 204a3027e48..c2c416daba7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3099.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3099.md @@ -10,6 +10,8 @@ ms.assetid: b3dded0f-76c9-42c1-991b-532eb8619661 > 'keyword': use [System::AttributeUsageAttribute] for managed attributes; use [Windows::Foundation::Metadata::AttributeUsageAttribute] for WinRT attributes +## Remarks + Use to declare **/clr** attributes. Use `Windows::Foundation::Metadata::AttributeUsageAttribute` to declare Windows Runtime attributes. For more information about /CLR attributes, see [User-Defined Attributes](../../extensions/user-defined-attributes-cpp-component-extensions.md). For supported attributes in Windows Runtime, see [Windows.Foundation.Metadata namespace](/uwp/api/windows.foundation.metadata) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3100.md b/docs/error-messages/compiler-errors-2/compiler-error-c3100.md index a4583d78d83..47b9d7a82e5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3100.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3100.md @@ -10,6 +10,8 @@ ms.assetid: 7a9c9eaf-08ef-442d-94a0-e457beee8549 > 'target' : unknown attribute qualifier +## Remarks + An invalid attribute target was specified. For more information, see [User-Defined Attributes](../../extensions/user-defined-attributes-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3101.md b/docs/error-messages/compiler-errors-2/compiler-error-c3101.md index c519944550f..eaea04a0748 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3101.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3101.md @@ -10,6 +10,8 @@ ms.assetid: 4f673766-d4f7-4632-94a5-d36a83f7f4b5 > illegal expression for named attribute argument 'field' +## Remarks + When initializing a named attribute argument, the value must be a compile time constant. For more information on attributes, see [User-Defined Attributes](../../extensions/user-defined-attributes-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3103.md b/docs/error-messages/compiler-errors-2/compiler-error-c3103.md index 123be858e4e..9f7d54c3264 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3103.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3103.md @@ -10,6 +10,8 @@ ms.assetid: 7984bd3e-d51d-43e4-b6f4-08c1e9fb9704 > 'argument': repeated named argument +## Remarks + An attribute can not repeat named arguments. For more information, see [User-Defined Attributes](../../extensions/user-defined-attributes-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3104.md b/docs/error-messages/compiler-errors-2/compiler-error-c3104.md index 28ba2468bdb..ae9c09df735 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3104.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3104.md @@ -10,6 +10,8 @@ ms.assetid: b5648d47-e5d3-4b45-a3c0-f46e04eae731 > illegal attribute argument +## Remarks + You specified an invalid argument to an attribute. See [Attribute Parameter Types](../../extensions/attribute-parameter-types-cpp-component-extensions.md) for more information. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3106.md b/docs/error-messages/compiler-errors-2/compiler-error-c3106.md index 0ea2a3b2db1..c19a6bba0c5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3106.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3106.md @@ -10,6 +10,8 @@ ms.assetid: 39d97a32-0905-4702-87d3-7f8ce473fb93 > 'attribute': unnamed arguments must precede named arguments +## Remarks + Unnamed arguments must be passed to an attribute before named arguments. For more information, see [User-Defined Attributes](../../extensions/user-defined-attributes-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3110.md b/docs/error-messages/compiler-errors-2/compiler-error-c3110.md index b8b6d21e522..76f3be430a9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3110.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3110.md @@ -10,6 +10,8 @@ ms.assetid: 821dc71f-896e-4b2d-af0e-aa9932934b7b > 'function_name' : you cannot overload a COM interface method +## Remarks + An interface that is prefaced by an interface attribute, such as: - [custom](../../windows/attributes/custom-cpp.md) @@ -20,7 +22,11 @@ An interface that is prefaced by an interface attribute, such as: - [object](../../windows/attributes/object-cpp.md) -cannot be overloaded. For example: +cannot be overloaded. + +## Example + +For example: ```cpp // C3110.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3113.md b/docs/error-messages/compiler-errors-2/compiler-error-c3113.md index 7b400ef127e..131e99231e5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3113.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3113.md @@ -10,8 +10,12 @@ ms.assetid: 3afdc668-b29e-474e-9ea3-aa027d42db7c > an 'structure' cannot be a template/generic +## Remarks + You attempted to make a class template or class generic out of an interface or an enum. +## Example + The following sample generates C3113: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3114.md b/docs/error-messages/compiler-errors-2/compiler-error-c3114.md index 0bd5839e0d3..0102714bcaa 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3114.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3114.md @@ -10,6 +10,8 @@ ms.assetid: b5d2df4f-87d0-4292-9981-25c6a6013c05 > 'argument': not a valid named attribute argument +## Remarks + In order for an attribute class data member to be a valid named argument, it must not be marked **`static`**, **`const`**, or **`literal`**. If a property, the property must not be **`static`** and must have get and set accessors. For more information, see [property](../../extensions/property-cpp-component-extensions.md) and [User-Defined Attributes](../../extensions/user-defined-attributes-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3115.md b/docs/error-messages/compiler-errors-2/compiler-error-c3115.md index 03b42e5ca77..ed2db990d20 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3115.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3115.md @@ -10,6 +10,8 @@ ms.assetid: 51726145-9782-4ec9-84b9-286f366d9cbd > 'attribute': this attribute is not allowed on 'construct' +## Remarks + An attribute was applied to a construct for which it was not intended. See [Attributes by Usage](../../windows/attributes/attributes-by-usage.md) for more information. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3116.md b/docs/error-messages/compiler-errors-2/compiler-error-c3116.md index d291688f14c..2c90667dd74 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3116.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3116.md @@ -10,8 +10,12 @@ ms.assetid: 597463e1-a5cc-4ed3-a917-eae9a61d3312 > 'storage specifier' : invalid storage class for interface method +## Remarks + You used **`typedef`**, **`register`**, or **`static`** as the storage class for an interface method. These storage classes are not permitted on interface members. +## Example + The following sample generates C3116: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3117.md b/docs/error-messages/compiler-errors-2/compiler-error-c3117.md index a35034fb256..58c4797b9a7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3117.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3117.md @@ -10,8 +10,12 @@ ms.assetid: dceee392-d4c7-4599-b75e-7aaac7c36fdd > '%$S' : an interface can only have one base class +## Remarks + You declared an interface that inherits from multiple base classes. +## Example + The following sample generates C3117: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3118.md b/docs/error-messages/compiler-errors-2/compiler-error-c3118.md index b90b7c0cad8..937ce784d55 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3118.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3118.md @@ -10,7 +10,13 @@ ms.assetid: 40fbe681-8868-4cb2-a2b2-4db4449319a7 > 'interface' : interfaces do not support virtual inheritance -You tried to virtually inherit from an interface. For example, +## Remarks + +You tried to virtually inherit from an interface. + +## Example + +For example, ```cpp // C3118.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3120.md b/docs/error-messages/compiler-errors-2/compiler-error-c3120.md index 0e2eabee5ac..4d9bc906174 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3120.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3120.md @@ -10,7 +10,13 @@ ms.assetid: 9b6b210f-9948-4517-a4cc-b4aaadebde68 > 'method_name' : interface methods cannot take a variable argument list -An interface method cannot take a variable argument list. For example, the following interface definition generates C3120: +## Remarks + +An interface method cannot take a variable argument list. + +## Example + +For example, the following interface definition generates C3120: ```cpp // C3120.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3121.md b/docs/error-messages/compiler-errors-2/compiler-error-c3121.md index dc92ada5e11..2989ce1d1ee 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3121.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3121.md @@ -10,8 +10,12 @@ ms.assetid: 1d3c7be4-d42d-4def-8d53-182c0c5cc237 > cannot change GUID for class 'class_name' +## Remarks + You attempted to change the class ID with [__declspec(uuid)](../../cpp/uuid-cpp.md). +## Example + For example, the following code generates C3121: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3126.md b/docs/error-messages/compiler-errors-2/compiler-error-c3126.md index 8536c3f4a3b..21cb9c326b7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3126.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3126.md @@ -10,8 +10,12 @@ ms.assetid: e72658a3-5d85-4a31-89a4-dbc3d475973d > cannot define a union 'union' inside of managed type 'type' +## Remarks + A union cannot be defined inside a managed type. +## Example + The following sample generates C3126: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3130.md b/docs/error-messages/compiler-errors-2/compiler-error-c3130.md index 4006e92b68a..db822e6157d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3130.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3130.md @@ -10,4 +10,6 @@ ms.assetid: c1462f33-434f-41f0-937e-392864916850 > Internal Compiler Error: failed to write injected code block to PDB +## Remarks + This error occurs if the compiler failed to write an injected code block to the .pdb file. The most common reason for the failure is lack of disk space. From b72054c1b313d52cfe9142782c7ed4e1f7cb2b59 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 14 Aug 2025 22:09:04 +0800 Subject: [PATCH 1401/2255] Replace term "sample" with "example" for error references in range [C3081, C3130] --- docs/error-messages/compiler-errors-2/compiler-error-c3084.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3085.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3087.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3094.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3095.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3097.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3099.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3100.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3101.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3103.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3104.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c3106.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3113.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3114.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3115.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3116.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3117.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3126.md | 2 +- 18 files changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3084.md b/docs/error-messages/compiler-errors-2/compiler-error-c3084.md index 60cd5972942..9964d290304 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3084.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3084.md @@ -18,7 +18,7 @@ For example, a destructor should not be marked as sealed. The destructor will b ## Example -The following sample generates C3084. +The following example generates C3084. ```cpp // C3084.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3085.md b/docs/error-messages/compiler-errors-2/compiler-error-c3085.md index 95ccea1ae62..d8fab587149 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3085.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3085.md @@ -16,7 +16,7 @@ A constructor was declared incorrectly. See [Override Specifiers](../../extensio ## Example -The following sample generates C3085. +The following example generates C3085. ```cpp // C3085.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3087.md b/docs/error-messages/compiler-errors-2/compiler-error-c3087.md index 8c9d6b5f62f..78a63679697 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3087.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3087.md @@ -16,7 +16,7 @@ A named argument was specified in the same attribute block as an unnamed argumen ## Example -The following sample generates C3087. +The following example generates C3087. ```cpp // C3087.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3094.md b/docs/error-messages/compiler-errors-2/compiler-error-c3094.md index 8c59eccec4b..7c86d55bd16 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3094.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3094.md @@ -16,7 +16,7 @@ An attribute was not scoped correctly. For more information, see [User-Defined ## Example -The following sample generates C3094. +The following example generates C3094. ```cpp // C3094.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3095.md b/docs/error-messages/compiler-errors-2/compiler-error-c3095.md index d9f6c189284..ad87104a40a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3095.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3095.md @@ -18,7 +18,7 @@ For more information, see [User-Defined Attributes](../../extensions/user-define ## Example -The following sample generates C3095. +The following example generates C3095. ```cpp // C3095.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3097.md b/docs/error-messages/compiler-errors-2/compiler-error-c3097.md index 8ef0171dba9..1aec39847bf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3097.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3097.md @@ -18,7 +18,7 @@ For more information, see [User-Defined Attributes](../../extensions/user-define ## Example -The following sample generates C3097. +The following example generates C3097. ```cpp // C3097.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3099.md b/docs/error-messages/compiler-errors-2/compiler-error-c3099.md index c2c416daba7..418a783b6ef 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3099.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3099.md @@ -18,7 +18,7 @@ For more information about /CLR attributes, see [User-Defined Attributes](../../ ## Example -The following sample generates C3099 and shows how to fix it. +The following example generates C3099 and shows how to fix it. ```cpp // C3099.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3100.md b/docs/error-messages/compiler-errors-2/compiler-error-c3100.md index 47b9d7a82e5..1598117e708 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3100.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3100.md @@ -18,7 +18,7 @@ For more information, see [User-Defined Attributes](../../extensions/user-define ## Example -The following sample generates C3100. +The following example generates C3100. ```cpp // C3100.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3101.md b/docs/error-messages/compiler-errors-2/compiler-error-c3101.md index eaea04a0748..dd8430cecc8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3101.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3101.md @@ -18,7 +18,7 @@ For more information on attributes, see [User-Defined Attributes](../../extensio ## Example -The following sample generates C3101. +The following example generates C3101. ```cpp // C3101.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3103.md b/docs/error-messages/compiler-errors-2/compiler-error-c3103.md index 9f7d54c3264..66d3292b5e1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3103.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3103.md @@ -18,7 +18,7 @@ For more information, see [User-Defined Attributes](../../extensions/user-define ## Example -The following sample generates C3103. +The following example generates C3103. ```cpp // C3103.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3104.md b/docs/error-messages/compiler-errors-2/compiler-error-c3104.md index ae9c09df735..1c89cb24ef4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3104.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3104.md @@ -20,7 +20,7 @@ This error can be generated as a result of compiler conformance work that was do ## Examples -The following sample generates C3104. +The following example generates C3104. ```cpp // C3104a.cpp @@ -39,7 +39,7 @@ public ref struct ABC : public Attribute { ref struct AStruct{}; ``` -The following sample generates C3104. +The following example generates C3104. ```cpp // C3104b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3106.md b/docs/error-messages/compiler-errors-2/compiler-error-c3106.md index c19a6bba0c5..f139cc0d4df 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3106.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3106.md @@ -18,7 +18,7 @@ For more information, see [User-Defined Attributes](../../extensions/user-define ## Example -The following sample generates C3106. +The following example generates C3106. ```cpp // C3106.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3113.md b/docs/error-messages/compiler-errors-2/compiler-error-c3113.md index 131e99231e5..68a267de11a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3113.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3113.md @@ -16,7 +16,7 @@ You attempted to make a class template or class generic out of an interface or a ## Example -The following sample generates C3113: +The following example generates C3113: ```cpp // C3113.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3114.md b/docs/error-messages/compiler-errors-2/compiler-error-c3114.md index 0102714bcaa..185d7ecebf1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3114.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3114.md @@ -18,7 +18,7 @@ For more information, see [property](../../extensions/property-cpp-component-ext ## Example -The following sample generates C3114. +The following example generates C3114. ```cpp // C3114.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3115.md b/docs/error-messages/compiler-errors-2/compiler-error-c3115.md index ed2db990d20..d8ed905fa1f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3115.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3115.md @@ -16,7 +16,7 @@ An attribute was applied to a construct for which it was not intended. See [Att ## Example -The following sample generates C3115. +The following example generates C3115. ```cpp // C3115.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3116.md b/docs/error-messages/compiler-errors-2/compiler-error-c3116.md index 2c90667dd74..12d7a8bc5de 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3116.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3116.md @@ -16,7 +16,7 @@ You used **`typedef`**, **`register`**, or **`static`** as the storage class for ## Example -The following sample generates C3116: +The following example generates C3116: ```cpp // C3116.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3117.md b/docs/error-messages/compiler-errors-2/compiler-error-c3117.md index 58c4797b9a7..ad3d4a020fb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3117.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3117.md @@ -16,7 +16,7 @@ You declared an interface that inherits from multiple base classes. ## Example -The following sample generates C3117: +The following example generates C3117: ```cpp // C3117.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3126.md b/docs/error-messages/compiler-errors-2/compiler-error-c3126.md index 21cb9c326b7..5ed1296cc09 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3126.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3126.md @@ -16,7 +16,7 @@ A union cannot be defined inside a managed type. ## Example -The following sample generates C3126: +The following example generates C3126: ```cpp // C3126_2.cpp From f20c3701c0bf5441b41dd33a171149175b0bd522 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 14 Aug 2025 22:12:36 +0800 Subject: [PATCH 1402/2255] Update metadata for error references in range [C3081, C3130] --- .../error-messages/compiler-errors-2/compiler-error-c3084.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3085.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3087.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3094.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3095.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3096.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3097.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3099.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3100.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3101.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3103.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3104.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3106.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3110.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3113.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3114.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3115.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3116.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3117.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3118.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3120.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3121.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3126.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3130.md | 5 ++--- 24 files changed, 48 insertions(+), 72 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3084.md b/docs/error-messages/compiler-errors-2/compiler-error-c3084.md index 9964d290304..a07399b74d7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3084.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3084.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3084" title: "Compiler Error C3084" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3084" +ms.date: 11/04/2016 f1_keywords: ["C3084"] helpviewer_keywords: ["C3084"] -ms.assetid: 0362cb70-e24e-476f-a24d-8f5bb97c3afd --- # Compiler Error C3084 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3085.md b/docs/error-messages/compiler-errors-2/compiler-error-c3085.md index d8fab587149..74751546f6d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3085.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3085.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3085" title: "Compiler Error C3085" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3085" +ms.date: 11/04/2016 f1_keywords: ["C3085"] helpviewer_keywords: ["C3085"] -ms.assetid: 1ac40bf2-f63e-439e-8921-47e6dadc8354 --- # Compiler Error C3085 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3087.md b/docs/error-messages/compiler-errors-2/compiler-error-c3087.md index 78a63679697..1ab7a8e1e53 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3087.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3087.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3087" title: "Compiler Error C3087" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3087" +ms.date: 11/04/2016 f1_keywords: ["C3087"] helpviewer_keywords: ["C3087"] -ms.assetid: 4f5bdd52-a853-4f02-b160-6868e9190b9d --- # Compiler Error C3087 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3094.md b/docs/error-messages/compiler-errors-2/compiler-error-c3094.md index 7c86d55bd16..83e295f29c3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3094.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3094.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3094" title: "Compiler Error C3094" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3094" +ms.date: 11/04/2016 f1_keywords: ["C3094"] helpviewer_keywords: ["C3094"] -ms.assetid: 10da9b7c-e72d-4013-9925-c83e1bb142db --- # Compiler Error C3094 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3095.md b/docs/error-messages/compiler-errors-2/compiler-error-c3095.md index ad87104a40a..5cae3a92d4e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3095.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3095.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3095" title: "Compiler Error C3095" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3095" +ms.date: 11/04/2016 f1_keywords: ["C3095"] helpviewer_keywords: ["C3095"] -ms.assetid: cde725be-0936-40f6-9e57-e1d7d0710f83 --- # Compiler Error C3095 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3096.md b/docs/error-messages/compiler-errors-2/compiler-error-c3096.md index 0a3e89f08ba..65387f15584 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3096.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3096.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3096" title: "Compiler Error C3096" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3096" +ms.date: 11/04/2016 f1_keywords: ["C3096"] helpviewer_keywords: ["C3096"] -ms.assetid: 56353c9a-800c-474f-b428-3e5d2a7afc9a --- # Compiler Error C3096 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3097.md b/docs/error-messages/compiler-errors-2/compiler-error-c3097.md index 1aec39847bf..0df9c143f97 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3097.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3097.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3097" title: "Compiler Error C3097" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3097" +ms.date: 11/04/2016 f1_keywords: ["C3097"] helpviewer_keywords: ["C3097"] -ms.assetid: b24bd8f8-e04f-4fbb-be57-4feb9165572e --- # Compiler Error C3097 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3099.md b/docs/error-messages/compiler-errors-2/compiler-error-c3099.md index 418a783b6ef..715d0b0c786 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3099.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3099.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3099" title: "Compiler Error C3099" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3099" +ms.date: 11/04/2016 f1_keywords: ["C3099"] helpviewer_keywords: ["C3099"] -ms.assetid: b3dded0f-76c9-42c1-991b-532eb8619661 --- # Compiler Error C3099 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3100.md b/docs/error-messages/compiler-errors-2/compiler-error-c3100.md index 1598117e708..c67b602e9a6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3100.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3100.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3100" title: "Compiler Error C3100" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3100" +ms.date: 11/04/2016 f1_keywords: ["C3100"] helpviewer_keywords: ["C3100"] -ms.assetid: 7a9c9eaf-08ef-442d-94a0-e457beee8549 --- # Compiler Error C3100 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3101.md b/docs/error-messages/compiler-errors-2/compiler-error-c3101.md index dd8430cecc8..6c5f88063b5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3101.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3101.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3101" title: "Compiler Error C3101" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3101" +ms.date: 11/04/2016 f1_keywords: ["C3101"] helpviewer_keywords: ["C3101"] -ms.assetid: 4f673766-d4f7-4632-94a5-d36a83f7f4b5 --- # Compiler Error C3101 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3103.md b/docs/error-messages/compiler-errors-2/compiler-error-c3103.md index 66d3292b5e1..46b7d95b5f6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3103.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3103.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3103" title: "Compiler Error C3103" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3103" +ms.date: 11/04/2016 f1_keywords: ["C3103"] helpviewer_keywords: ["C3103"] -ms.assetid: 7984bd3e-d51d-43e4-b6f4-08c1e9fb9704 --- # Compiler Error C3103 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3104.md b/docs/error-messages/compiler-errors-2/compiler-error-c3104.md index 1c89cb24ef4..b2b05bdc091 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3104.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3104.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3104" title: "Compiler Error C3104" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3104" +ms.date: 11/04/2016 f1_keywords: ["C3104"] helpviewer_keywords: ["C3104"] -ms.assetid: b5648d47-e5d3-4b45-a3c0-f46e04eae731 --- # Compiler Error C3104 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3106.md b/docs/error-messages/compiler-errors-2/compiler-error-c3106.md index f139cc0d4df..e44c24da629 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3106.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3106.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3106" title: "Compiler Error C3106" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3106" +ms.date: 11/04/2016 f1_keywords: ["C3106"] helpviewer_keywords: ["C3106"] -ms.assetid: 39d97a32-0905-4702-87d3-7f8ce473fb93 --- # Compiler Error C3106 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3110.md b/docs/error-messages/compiler-errors-2/compiler-error-c3110.md index 76f3be430a9..9cf78b27444 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3110.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3110.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3110" title: "Compiler Error C3110" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3110" +ms.date: 11/04/2016 f1_keywords: ["C3110"] helpviewer_keywords: ["C3110"] -ms.assetid: 821dc71f-896e-4b2d-af0e-aa9932934b7b --- # Compiler Error C3110 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3113.md b/docs/error-messages/compiler-errors-2/compiler-error-c3113.md index 68a267de11a..640eb8d5bb1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3113.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3113.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3113" title: "Compiler Error C3113" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3113" +ms.date: 11/04/2016 f1_keywords: ["C3113"] helpviewer_keywords: ["C3113"] -ms.assetid: 3afdc668-b29e-474e-9ea3-aa027d42db7c --- # Compiler Error C3113 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3114.md b/docs/error-messages/compiler-errors-2/compiler-error-c3114.md index 185d7ecebf1..0d6fdb2e633 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3114.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3114.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3114" title: "Compiler Error C3114" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3114" +ms.date: 11/04/2016 f1_keywords: ["C3114"] helpviewer_keywords: ["C3114"] -ms.assetid: b5d2df4f-87d0-4292-9981-25c6a6013c05 --- # Compiler Error C3114 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3115.md b/docs/error-messages/compiler-errors-2/compiler-error-c3115.md index d8ed905fa1f..f6be15f40d3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3115.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3115.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3115" title: "Compiler Error C3115" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3115" +ms.date: 11/04/2016 f1_keywords: ["C3115"] helpviewer_keywords: ["C3115"] -ms.assetid: 51726145-9782-4ec9-84b9-286f366d9cbd --- # Compiler Error C3115 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3116.md b/docs/error-messages/compiler-errors-2/compiler-error-c3116.md index 12d7a8bc5de..4a3b9237bc0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3116.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3116.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3116" title: "Compiler Error C3116" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3116" +ms.date: 11/04/2016 f1_keywords: ["C3116"] helpviewer_keywords: ["C3116"] -ms.assetid: 597463e1-a5cc-4ed3-a917-eae9a61d3312 --- # Compiler Error C3116 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3117.md b/docs/error-messages/compiler-errors-2/compiler-error-c3117.md index ad3d4a020fb..67f914ff316 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3117.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3117.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3117" title: "Compiler Error C3117" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3117" +ms.date: 11/04/2016 f1_keywords: ["C3117"] helpviewer_keywords: ["C3117"] -ms.assetid: dceee392-d4c7-4599-b75e-7aaac7c36fdd --- # Compiler Error C3117 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3118.md b/docs/error-messages/compiler-errors-2/compiler-error-c3118.md index 937ce784d55..48d11292d5f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3118.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3118.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3118" title: "Compiler Error C3118" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3118" +ms.date: 11/04/2016 f1_keywords: ["C3118"] helpviewer_keywords: ["C3118"] -ms.assetid: 40fbe681-8868-4cb2-a2b2-4db4449319a7 --- # Compiler Error C3118 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3120.md b/docs/error-messages/compiler-errors-2/compiler-error-c3120.md index 4d9bc906174..a292987bc60 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3120.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3120.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3120" title: "Compiler Error C3120" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3120" +ms.date: 11/04/2016 f1_keywords: ["C3120"] helpviewer_keywords: ["C3120"] -ms.assetid: 9b6b210f-9948-4517-a4cc-b4aaadebde68 --- # Compiler Error C3120 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3121.md b/docs/error-messages/compiler-errors-2/compiler-error-c3121.md index 2989ce1d1ee..463bcaba93a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3121.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3121.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3121" title: "Compiler Error C3121" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3121" +ms.date: 11/04/2016 f1_keywords: ["C3121"] helpviewer_keywords: ["C3121"] -ms.assetid: 1d3c7be4-d42d-4def-8d53-182c0c5cc237 --- # Compiler Error C3121 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3126.md b/docs/error-messages/compiler-errors-2/compiler-error-c3126.md index 5ed1296cc09..2b8904f94d5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3126.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3126.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3126" title: "Compiler Error C3126" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3126" +ms.date: 11/04/2016 f1_keywords: ["C3126"] helpviewer_keywords: ["C3126"] -ms.assetid: e72658a3-5d85-4a31-89a4-dbc3d475973d --- # Compiler Error C3126 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3130.md b/docs/error-messages/compiler-errors-2/compiler-error-c3130.md index db822e6157d..ebd75f87f3b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3130.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3130.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3130" title: "Compiler Error C3130" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3130" +ms.date: 11/04/2016 f1_keywords: ["C3130"] helpviewer_keywords: ["C3130"] -ms.assetid: c1462f33-434f-41f0-937e-392864916850 --- # Compiler Error C3130 From 88fc24a534da13c0feaaf819ce38e0b4551ebaa0 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 14 Aug 2025 22:27:17 +0800 Subject: [PATCH 1403/2255] Fix erroneous `template class<...` syntax in standard library references --- docs/standard-library/istream-functions.md | 3 ++- docs/standard-library/ostream-functions.md | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/standard-library/istream-functions.md b/docs/standard-library/istream-functions.md index 8c6d33665e1..5b0e2c372b6 100644 --- a/docs/standard-library/istream-functions.md +++ b/docs/standard-library/istream-functions.md @@ -37,7 +37,8 @@ A stream. Skips white space in the stream. ```cpp -template class basic_istream& ws(basic_istream& _Istr); +template +basic_istream& ws(basic_istream& _Istr); ``` ### Parameters diff --git a/docs/standard-library/ostream-functions.md b/docs/standard-library/ostream-functions.md index e306c7f49e0..3721ebdd884 100644 --- a/docs/standard-library/ostream-functions.md +++ b/docs/standard-library/ostream-functions.md @@ -14,7 +14,7 @@ These are the global template functions defined in ``. For member funct Terminates a line and flushes the buffer. ```cpp -template class +template basic_ostream& endl( basic_ostream& Ostr); ``` @@ -61,7 +61,7 @@ testing Terminates a string. ```cpp -template class +template basic_ostream& ends( basic_ostream& Ostr); ``` @@ -110,7 +110,7 @@ ab c Flushes the buffer. ```cpp -template class +template basic_ostream& flush( basic_ostream& Ostr); ``` From df5b0769da39f34097c002afee425aae78ad025f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 14 Aug 2025 22:33:41 +0800 Subject: [PATCH 1404/2255] Add blockquotes for error messages in range [C3131, C3160] --- docs/error-messages/compiler-errors-2/compiler-error-c3131.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3132.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3133.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3134.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3135.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3136.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3137.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3138.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3139.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3140.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3141.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3142.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3145.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3149.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3150.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3152.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3153.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3154.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3155.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3156.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3157.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3159.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3160.md | 2 +- 23 files changed, 23 insertions(+), 23 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3131.md b/docs/error-messages/compiler-errors-2/compiler-error-c3131.md index 54a1b28c50b..282fcbce613 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3131.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3131.md @@ -8,7 +8,7 @@ ms.assetid: 38f20fac-83c9-4cd9-b7b5-74ca8f650ea6 --- # Compiler Error C3131 -project must have a 'module' attribute with a 'name' property +> project must have a 'module' attribute with a 'name' property The [module](../../windows/attributes/module-cpp.md) attribute must have a name parameter. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3132.md b/docs/error-messages/compiler-errors-2/compiler-error-c3132.md index d61facc1aab..92724dec7c7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3132.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3132.md @@ -8,7 +8,7 @@ ms.assetid: d54a3d12-336a-4ed0-ad4e-43cddac33b5e --- # Compiler Error C3132 -'function-parameter' : parameter arrays can only be applied to a formal argument of type 'single-dimensional managed array' +> 'function-parameter' : parameter arrays can only be applied to a formal argument of type 'single-dimensional managed array' The attribute was applied to a parameter that was not a single-dimension array. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3133.md b/docs/error-messages/compiler-errors-2/compiler-error-c3133.md index d26c091a66a..7fbdbbe71e7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3133.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3133.md @@ -8,7 +8,7 @@ ms.assetid: 4a709405-b67b-4061-8a2a-19fa5fb34a2a --- # Compiler Error C3133 -Attributes cannot be applied to C++ varargs +> Attributes cannot be applied to C++ varargs An attribute was applied incorrectly. Attributes can not be applied to an ellipsis representing variable arguments. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3134.md b/docs/error-messages/compiler-errors-2/compiler-error-c3134.md index f8e04a9e7b5..53325748765 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3134.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3134.md @@ -8,7 +8,7 @@ ms.assetid: f887e4d2-7740-49e4-9972-7edceb8fa77b --- # Compiler Error C3134 -'value' : value of attribute argument 'attribute' does not have valid type 'type' +> 'value' : value of attribute argument 'attribute' does not have valid type 'type' A syntax error was detected when a value was assigned to an attribute. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3135.md b/docs/error-messages/compiler-errors-2/compiler-error-c3135.md index 1b97325d54a..6c8d3cd64f1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3135.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3135.md @@ -8,6 +8,6 @@ ms.assetid: e92ee007-5a26-47f4-8ef4-339f2d9528d1 --- # Compiler Error C3135 -'property' : a property cannot have a 'const' or 'volatile' type +> 'property' : a property cannot have a 'const' or 'volatile' type The [const](../../cpp/const-cpp.md) and [volatile](../../cpp/volatile-cpp.md) keywords are not permitted on properties. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3136.md b/docs/error-messages/compiler-errors-2/compiler-error-c3136.md index d7f66d04349..f391a682851 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3136.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3136.md @@ -8,7 +8,7 @@ ms.assetid: c77103cd-00f7-408e-b74b-4f8562039d31 --- # Compiler Error C3136 -'interface' : a COM interface can only inherit from another COM interface, 'interface' is not a COM interface +> 'interface' : a COM interface can only inherit from another COM interface, 'interface' is not a COM interface An interface to which you applied an [interface attribute](../../windows/attributes/interface-attributes.md) inherits from an interface that is not a COM interface. A COM interface ultimately inherits from `IUnknown`. Any interface preceded by an interface attribute is a COM interface. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3137.md b/docs/error-messages/compiler-errors-2/compiler-error-c3137.md index 1ac5395685b..2422ae7aefa 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3137.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3137.md @@ -8,7 +8,7 @@ ms.assetid: 70bb1313-2e87-43ed-a0d8-33fa6ff475e4 --- # Compiler Error C3137 -'property' : a property cannot be initialized +> 'property' : a property cannot be initialized A property cannot be initialized, for example, in a constructor's initialization list. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3138.md b/docs/error-messages/compiler-errors-2/compiler-error-c3138.md index d02f0ad8c55..cd8297525a9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3138.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3138.md @@ -8,7 +8,7 @@ ms.assetid: 364ee9e8-9358-410e-bd35-9c4a226a3753 --- # Compiler Error C3138 -'interface' : a 'attribute' interface must inherit from IDispatch, or from an interface that inherits from IDispatch +> 'interface' : a 'attribute' interface must inherit from IDispatch, or from an interface that inherits from IDispatch An interface with the [dual](../../windows/attributes/dual.md) or [dispinterface](../../windows/attributes/dispinterface.md) attributes does not have `IDispatch` as a direct or indirect base interface. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3139.md b/docs/error-messages/compiler-errors-2/compiler-error-c3139.md index 7d5df2ca7ad..d2dc1210745 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3139.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3139.md @@ -8,7 +8,7 @@ ms.assetid: 95c92263-10ac-4ff3-b385-6312dd92adbc --- # Compiler Error C3139 -'struct' : cannot export a UDT without members +> 'struct' : cannot export a UDT without members You attempted to apply the [export](../../windows/attributes/export.md) attribute to an empty UDT (user-defined type). For example: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3140.md b/docs/error-messages/compiler-errors-2/compiler-error-c3140.md index 4339d3f6bd6..dc94856461e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3140.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3140.md @@ -8,7 +8,7 @@ ms.assetid: 122f8943-fac3-4db8-a3a8-2c5d19233de6 --- # Compiler Error C3140 -cannot have multiple 'module' attributes in the same compilation unit +> cannot have multiple 'module' attributes in the same compilation unit The [module](../../windows/attributes/module-cpp.md) attribute can only be defined once per project. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3141.md b/docs/error-messages/compiler-errors-2/compiler-error-c3141.md index 6811def6fc9..4b47040c32a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3141.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3141.md @@ -8,7 +8,7 @@ ms.assetid: b4fd65c3-50cc-46cd-8de0-6a6d24cb9cda --- # Compiler Error C3141 -'interface_name' : interfaces only support public inheritance +> 'interface_name' : interfaces only support public inheritance Interfaces defined with the [interface (or __interface)](../../cpp/interface.md) keyword only support public inheritance. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3142.md b/docs/error-messages/compiler-errors-2/compiler-error-c3142.md index 0a7e12997f3..dccde094fe7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3142.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3142.md @@ -8,7 +8,7 @@ ms.assetid: 795137ad-d00a-4a9c-9665-0cd8bfb5da8b --- # Compiler Error C3142 -'property_name' : you cannot take the address of a property +> 'property_name' : you cannot take the address of a property The address of a property is not available to the developer. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3145.md b/docs/error-messages/compiler-errors-2/compiler-error-c3145.md index 0105f33cfee..36085ad5a69 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3145.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3145.md @@ -8,7 +8,7 @@ ms.assetid: f165c874-0f51-45c7-85e8-ebe321cbc168 --- # Compiler Error C3145 -'object' : global or static variable may not have managed or WinRT type 'type' +> 'object' : global or static variable may not have managed or WinRT type 'type' You can only define CLR or WinRT objects within function scope. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3149.md b/docs/error-messages/compiler-errors-2/compiler-error-c3149.md index d28f9366044..31522089242 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3149.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3149.md @@ -8,7 +8,7 @@ ms.assetid: cf6e2616-2f06-46da-8a8a-d449cb481c51 --- # Compiler Error C3149 -'type' : cannot use this type here without a top-level 'char' +> 'type' : cannot use this type here without a top-level 'char' A declaration was not specified correctly. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3150.md b/docs/error-messages/compiler-errors-2/compiler-error-c3150.md index 3145de7e129..c54dca25ba2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3150.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3150.md @@ -8,7 +8,7 @@ ms.assetid: c1ff28f5-52fe-4fd4-81d0-2e0ad8548631 --- # Compiler Error C3150 -'element' : 'attribute' can only be applied to a class, interface, array or pointer +> 'element' : 'attribute' can only be applied to a class, interface, array or pointer **`__gc`** can only be used on a class, interface, or array. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3152.md b/docs/error-messages/compiler-errors-2/compiler-error-c3152.md index 2208919a996..99d57b0e194 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3152.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3152.md @@ -8,7 +8,7 @@ ms.assetid: 4ee6e2cd-5d19-4b73-833d-765c35797e4b --- # Compiler Error C3152 -'construct' : 'keyword' can only be applied to a class, struct, or virtual member function +> 'construct' : 'keyword' can only be applied to a class, struct, or virtual member function Certain keywords can only be applied to a C++ class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3153.md b/docs/error-messages/compiler-errors-2/compiler-error-c3153.md index 5aacbbacaae..a17e8a9fbc3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3153.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3153.md @@ -8,7 +8,7 @@ ms.assetid: d775d97e-2480-484f-81f1-88406b10f947 --- # Compiler Error C3153 -'interface' : you cannot create an instance of an interface +> 'interface' : you cannot create an instance of an interface An interface cannot be instantiated. To use the members of an interface, derive a class from the interface, implement the interface members, and then use the members. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3154.md b/docs/error-messages/compiler-errors-2/compiler-error-c3154.md index 1a22ee051b2..44cb721a793 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3154.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3154.md @@ -8,7 +8,7 @@ ms.assetid: 78005c74-eaaf-4ac2-88ae-6c25d01a302a --- # Compiler Error C3154 -Expected ',' before ellipsis. Non-comma separated ellipsis not supported on parameter array functions. +> Expected ',' before ellipsis. Non-comma separated ellipsis not supported on parameter array functions. A variable argument function was not declared correctly. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3155.md b/docs/error-messages/compiler-errors-2/compiler-error-c3155.md index 313c3c080a6..aadcbf6350a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3155.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3155.md @@ -8,7 +8,7 @@ ms.assetid: b04a42e1-64e7-40f8-81fe-c7945348b2cf --- # Compiler Error C3155 -attributes are not allowed in a property indexer +> attributes are not allowed in a property indexer An indexed property was declared incorrectly. For more information, see [How to: Use Properties in C++/CLI](../../dotnet/how-to-use-properties-in-cpp-cli.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3156.md b/docs/error-messages/compiler-errors-2/compiler-error-c3156.md index 6fdca14c852..fcb81121ed5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3156.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3156.md @@ -8,7 +8,7 @@ ms.assetid: 1876da78-b94e-4af7-9795-28f72b209b3e --- # Compiler Error C3156 -'class' : you cannot have a local definition of a managed or WinRT type +> 'class' : you cannot have a local definition of a managed or WinRT type A function cannot contain the definition, or declaration, of a managed or WinRT class, struct, or interface. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3157.md b/docs/error-messages/compiler-errors-2/compiler-error-c3157.md index bc9741e6078..647488e9844 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3157.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3157.md @@ -8,6 +8,6 @@ ms.assetid: fe94d97f-612e-4729-8b2b-b057d84822a1 --- # Compiler Error C3157 -ParamArray attribute can only be applied to the last parameter +> ParamArray attribute can only be applied to the last parameter The attribute was applied to the wrong parameter. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3159.md b/docs/error-messages/compiler-errors-2/compiler-error-c3159.md index 92cdaba9c63..d2ab9cb1ece 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3159.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3159.md @@ -8,7 +8,7 @@ ms.assetid: e115cc76-0021-4568-95fd-61a324c41a85 --- # Compiler Error C3159 -'pointer' : array of pointers to value type cannot be declared +> 'pointer' : array of pointers to value type cannot be declared An array of pointers to a value type cannot be declared. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3160.md b/docs/error-messages/compiler-errors-2/compiler-error-c3160.md index b28eace9bbe..8cce91f5860 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3160.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3160.md @@ -8,7 +8,7 @@ ms.assetid: a250c433-8adf-43b9-8dee-c3794e09b0a5 --- # Compiler Error C3160 -'pointer' : a data member of a managed or WinRT class cannot have this type +> 'pointer' : a data member of a managed or WinRT class cannot have this type Interior garbage collection pointers may point to the interior of a managed or WinRT class. Because they are slower than whole-object pointers and require special handling by the garbage collector, you cannot declare interior managed pointers as members of a class. From 6f9458eb63732166628ef165708b58fe00a599fe Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 14 Aug 2025 22:39:18 +0800 Subject: [PATCH 1405/2255] Add "Remarks" and "Example" headings for error references in range [C3131, C3160] --- .../compiler-errors-2/compiler-error-c3131.md | 4 ++++ .../compiler-errors-2/compiler-error-c3132.md | 4 ++++ .../compiler-errors-2/compiler-error-c3133.md | 2 ++ .../compiler-errors-2/compiler-error-c3134.md | 2 ++ .../compiler-errors-2/compiler-error-c3135.md | 2 ++ .../compiler-errors-2/compiler-error-c3136.md | 4 ++++ .../compiler-errors-2/compiler-error-c3137.md | 4 ++++ .../compiler-errors-2/compiler-error-c3138.md | 4 ++++ .../compiler-errors-2/compiler-error-c3139.md | 8 +++++++- .../compiler-errors-2/compiler-error-c3140.md | 4 ++++ .../compiler-errors-2/compiler-error-c3141.md | 4 ++++ .../compiler-errors-2/compiler-error-c3142.md | 4 ++++ .../compiler-errors-2/compiler-error-c3145.md | 4 ++++ .../compiler-errors-2/compiler-error-c3149.md | 4 ++++ .../compiler-errors-2/compiler-error-c3150.md | 2 ++ .../compiler-errors-2/compiler-error-c3152.md | 4 ++++ .../compiler-errors-2/compiler-error-c3153.md | 4 ++++ .../compiler-errors-2/compiler-error-c3154.md | 2 ++ .../compiler-errors-2/compiler-error-c3155.md | 2 ++ .../compiler-errors-2/compiler-error-c3156.md | 2 ++ .../compiler-errors-2/compiler-error-c3157.md | 2 ++ .../compiler-errors-2/compiler-error-c3159.md | 2 ++ .../compiler-errors-2/compiler-error-c3160.md | 4 ++++ 23 files changed, 77 insertions(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3131.md b/docs/error-messages/compiler-errors-2/compiler-error-c3131.md index 282fcbce613..27b316fe6f0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3131.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3131.md @@ -10,8 +10,12 @@ ms.assetid: 38f20fac-83c9-4cd9-b7b5-74ca8f650ea6 > project must have a 'module' attribute with a 'name' property +## Remarks + The [module](../../windows/attributes/module-cpp.md) attribute must have a name parameter. +## Example + The following sample generates C3131: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3132.md b/docs/error-messages/compiler-errors-2/compiler-error-c3132.md index 92724dec7c7..590ce96e0eb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3132.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3132.md @@ -10,8 +10,12 @@ ms.assetid: d54a3d12-336a-4ed0-ad4e-43cddac33b5e > 'function-parameter' : parameter arrays can only be applied to a formal argument of type 'single-dimensional managed array' +## Remarks + The attribute was applied to a parameter that was not a single-dimension array. +## Example + The following sample generates C3132: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3133.md b/docs/error-messages/compiler-errors-2/compiler-error-c3133.md index 7fbdbbe71e7..54bc1be03cf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3133.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3133.md @@ -10,6 +10,8 @@ ms.assetid: 4a709405-b67b-4061-8a2a-19fa5fb34a2a > Attributes cannot be applied to C++ varargs +## Remarks + An attribute was applied incorrectly. Attributes can not be applied to an ellipsis representing variable arguments. For more information, see [User-Defined Attributes](../../extensions/user-defined-attributes-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3134.md b/docs/error-messages/compiler-errors-2/compiler-error-c3134.md index 53325748765..1c14ebca3dd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3134.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3134.md @@ -10,6 +10,8 @@ ms.assetid: f887e4d2-7740-49e4-9972-7edceb8fa77b > 'value' : value of attribute argument 'attribute' does not have valid type 'type' +## Remarks + A syntax error was detected when a value was assigned to an attribute. ## See also diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3135.md b/docs/error-messages/compiler-errors-2/compiler-error-c3135.md index 6c8d3cd64f1..53d469d7af7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3135.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3135.md @@ -10,4 +10,6 @@ ms.assetid: e92ee007-5a26-47f4-8ef4-339f2d9528d1 > 'property' : a property cannot have a 'const' or 'volatile' type +## Remarks + The [const](../../cpp/const-cpp.md) and [volatile](../../cpp/volatile-cpp.md) keywords are not permitted on properties. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3136.md b/docs/error-messages/compiler-errors-2/compiler-error-c3136.md index f391a682851..89bd042d3a3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3136.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3136.md @@ -10,8 +10,12 @@ ms.assetid: c77103cd-00f7-408e-b74b-4f8562039d31 > 'interface' : a COM interface can only inherit from another COM interface, 'interface' is not a COM interface +## Remarks + An interface to which you applied an [interface attribute](../../windows/attributes/interface-attributes.md) inherits from an interface that is not a COM interface. A COM interface ultimately inherits from `IUnknown`. Any interface preceded by an interface attribute is a COM interface. +## Example + The following example generates C3136: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3137.md b/docs/error-messages/compiler-errors-2/compiler-error-c3137.md index 2422ae7aefa..84de4d4a588 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3137.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3137.md @@ -10,8 +10,12 @@ ms.assetid: 70bb1313-2e87-43ed-a0d8-33fa6ff475e4 > 'property' : a property cannot be initialized +## Remarks + A property cannot be initialized, for example, in a constructor's initialization list. +## Example + The following example generates C3137: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3138.md b/docs/error-messages/compiler-errors-2/compiler-error-c3138.md index cd8297525a9..b741b192c29 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3138.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3138.md @@ -10,8 +10,12 @@ ms.assetid: 364ee9e8-9358-410e-bd35-9c4a226a3753 > 'interface' : a 'attribute' interface must inherit from IDispatch, or from an interface that inherits from IDispatch +## Remarks + An interface with the [dual](../../windows/attributes/dual.md) or [dispinterface](../../windows/attributes/dispinterface.md) attributes does not have `IDispatch` as a direct or indirect base interface. +## Example + The following example generates C3138: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3139.md b/docs/error-messages/compiler-errors-2/compiler-error-c3139.md index d2dc1210745..4f3e20b3f0a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3139.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3139.md @@ -10,7 +10,13 @@ ms.assetid: 95c92263-10ac-4ff3-b385-6312dd92adbc > 'struct' : cannot export a UDT without members -You attempted to apply the [export](../../windows/attributes/export.md) attribute to an empty UDT (user-defined type). For example: +## Remarks + +You attempted to apply the [export](../../windows/attributes/export.md) attribute to an empty UDT (user-defined type). + +## Example + +For example: ```cpp // C3139.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3140.md b/docs/error-messages/compiler-errors-2/compiler-error-c3140.md index dc94856461e..e15fbd083cb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3140.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3140.md @@ -10,8 +10,12 @@ ms.assetid: 122f8943-fac3-4db8-a3a8-2c5d19233de6 > cannot have multiple 'module' attributes in the same compilation unit +## Remarks + The [module](../../windows/attributes/module-cpp.md) attribute can only be defined once per project. +## Example + The following sample generates C3140: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3141.md b/docs/error-messages/compiler-errors-2/compiler-error-c3141.md index 4b47040c32a..b75d64eabc6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3141.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3141.md @@ -10,8 +10,12 @@ ms.assetid: b4fd65c3-50cc-46cd-8de0-6a6d24cb9cda > 'interface_name' : interfaces only support public inheritance +## Remarks + Interfaces defined with the [interface (or __interface)](../../cpp/interface.md) keyword only support public inheritance. +## Example + The following sample generates C3141: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3142.md b/docs/error-messages/compiler-errors-2/compiler-error-c3142.md index dccde094fe7..fa1c98bf1bc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3142.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3142.md @@ -10,8 +10,12 @@ ms.assetid: 795137ad-d00a-4a9c-9665-0cd8bfb5da8b > 'property_name' : you cannot take the address of a property +## Remarks + The address of a property is not available to the developer. +## Example + The following sample generates C3142: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3145.md b/docs/error-messages/compiler-errors-2/compiler-error-c3145.md index 36085ad5a69..27c37a0c321 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3145.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3145.md @@ -10,8 +10,12 @@ ms.assetid: f165c874-0f51-45c7-85e8-ebe321cbc168 > 'object' : global or static variable may not have managed or WinRT type 'type' +## Remarks + You can only define CLR or WinRT objects within function scope. +## Examples + The following sample generates C3145 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3149.md b/docs/error-messages/compiler-errors-2/compiler-error-c3149.md index 31522089242..95610b0e572 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3149.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3149.md @@ -10,12 +10,16 @@ ms.assetid: cf6e2616-2f06-46da-8a8a-d449cb481c51 > 'type' : cannot use this type here without a top-level 'char' +## Remarks + A declaration was not specified correctly. For example, you may have defined a CLR type at global scope and tried to create a variable of the type as part of the definition. Because global variables of CLR types are not allowed, the compiler will generate C3149. To resolve this error, declare variables of CLR types inside a function or type definition. +## Examples + The following sample generates C3149: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3150.md b/docs/error-messages/compiler-errors-2/compiler-error-c3150.md index c54dca25ba2..990b6b1409e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3150.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3150.md @@ -10,6 +10,8 @@ ms.assetid: c1ff28f5-52fe-4fd4-81d0-2e0ad8548631 > 'element' : 'attribute' can only be applied to a class, interface, array or pointer +## Remarks + **`__gc`** can only be used on a class, interface, or array. C3150 is only reachable using the obsolete compiler option **/clr:oldSyntax**. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3152.md b/docs/error-messages/compiler-errors-2/compiler-error-c3152.md index 99d57b0e194..0027381af2c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3152.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3152.md @@ -10,8 +10,12 @@ ms.assetid: 4ee6e2cd-5d19-4b73-833d-765c35797e4b > 'construct' : 'keyword' can only be applied to a class, struct, or virtual member function +## Remarks + Certain keywords can only be applied to a C++ class. +## Example + The following sample generates C3152 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3153.md b/docs/error-messages/compiler-errors-2/compiler-error-c3153.md index a17e8a9fbc3..f9262c03c4c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3153.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3153.md @@ -10,8 +10,12 @@ ms.assetid: d775d97e-2480-484f-81f1-88406b10f947 > 'interface' : you cannot create an instance of an interface +## Remarks + An interface cannot be instantiated. To use the members of an interface, derive a class from the interface, implement the interface members, and then use the members. +## Example + The following sample generates C3153: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3154.md b/docs/error-messages/compiler-errors-2/compiler-error-c3154.md index 44cb721a793..a36924aa57b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3154.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3154.md @@ -10,6 +10,8 @@ ms.assetid: 78005c74-eaaf-4ac2-88ae-6c25d01a302a > Expected ',' before ellipsis. Non-comma separated ellipsis not supported on parameter array functions. +## Remarks + A variable argument function was not declared correctly. For more information, see [Variable Argument Lists (...) (C++/CLI)](../../extensions/variable-argument-lists-dot-dot-dot-cpp-cli.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3155.md b/docs/error-messages/compiler-errors-2/compiler-error-c3155.md index aadcbf6350a..87c5fe89b71 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3155.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3155.md @@ -10,6 +10,8 @@ ms.assetid: b04a42e1-64e7-40f8-81fe-c7945348b2cf > attributes are not allowed in a property indexer +## Remarks + An indexed property was declared incorrectly. For more information, see [How to: Use Properties in C++/CLI](../../dotnet/how-to-use-properties-in-cpp-cli.md). ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3156.md b/docs/error-messages/compiler-errors-2/compiler-error-c3156.md index fcb81121ed5..8d8498df139 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3156.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3156.md @@ -10,6 +10,8 @@ ms.assetid: 1876da78-b94e-4af7-9795-28f72b209b3e > 'class' : you cannot have a local definition of a managed or WinRT type +## Remarks + A function cannot contain the definition, or declaration, of a managed or WinRT class, struct, or interface. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3157.md b/docs/error-messages/compiler-errors-2/compiler-error-c3157.md index 647488e9844..b5ef09dc744 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3157.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3157.md @@ -10,4 +10,6 @@ ms.assetid: fe94d97f-612e-4729-8b2b-b057d84822a1 > ParamArray attribute can only be applied to the last parameter +## Remarks + The attribute was applied to the wrong parameter. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3159.md b/docs/error-messages/compiler-errors-2/compiler-error-c3159.md index d2ab9cb1ece..1ff1fe92982 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3159.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3159.md @@ -10,6 +10,8 @@ ms.assetid: e115cc76-0021-4568-95fd-61a324c41a85 > 'pointer' : array of pointers to value type cannot be declared +## Remarks + An array of pointers to a value type cannot be declared. C3159 is only reachable using the obsolete compiler option **/clr:oldSyntax**. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3160.md b/docs/error-messages/compiler-errors-2/compiler-error-c3160.md index 8cce91f5860..9eafcf78c36 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3160.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3160.md @@ -10,8 +10,12 @@ ms.assetid: a250c433-8adf-43b9-8dee-c3794e09b0a5 > 'pointer' : a data member of a managed or WinRT class cannot have this type +## Remarks + Interior garbage collection pointers may point to the interior of a managed or WinRT class. Because they are slower than whole-object pointers and require special handling by the garbage collector, you cannot declare interior managed pointers as members of a class. +## Example + The following sample generates C3160: ```cpp From 1d6c5ba136c33ece276b6671fbd58116506fdb8d Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 14 Aug 2025 22:40:40 +0800 Subject: [PATCH 1406/2255] Replace term "sample" with "example" for error references in range [C3131, C3160] --- docs/error-messages/compiler-errors-2/compiler-error-c3131.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3132.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3133.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3140.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3141.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3142.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3145.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c3149.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c3152.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3153.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3154.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3155.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3156.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3160.md | 2 +- 14 files changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3131.md b/docs/error-messages/compiler-errors-2/compiler-error-c3131.md index 27b316fe6f0..45a3a3c3e4d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3131.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3131.md @@ -16,7 +16,7 @@ The [module](../../windows/attributes/module-cpp.md) attribute must have a name ## Example -The following sample generates C3131: +The following example generates C3131: ```cpp // C3131.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3132.md b/docs/error-messages/compiler-errors-2/compiler-error-c3132.md index 590ce96e0eb..db542839905 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3132.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3132.md @@ -16,7 +16,7 @@ The attribute was applied to a parameter that ## Example -The following sample generates C3132: +The following example generates C3132: ```cpp // C3132.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3133.md b/docs/error-messages/compiler-errors-2/compiler-error-c3133.md index 54bc1be03cf..258bee5b438 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3133.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3133.md @@ -18,7 +18,7 @@ For more information, see [User-Defined Attributes](../../extensions/user-define ## Example -The following sample generates C3133. +The following example generates C3133. ```cpp // C3133.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3140.md b/docs/error-messages/compiler-errors-2/compiler-error-c3140.md index e15fbd083cb..9cdae760d41 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3140.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3140.md @@ -16,7 +16,7 @@ The [module](../../windows/attributes/module-cpp.md) attribute can only be defin ## Example -The following sample generates C3140: +The following example generates C3140: ```cpp // C3140.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3141.md b/docs/error-messages/compiler-errors-2/compiler-error-c3141.md index b75d64eabc6..d8fdd5aa0b5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3141.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3141.md @@ -16,7 +16,7 @@ Interfaces defined with the [interface (or __interface)](../../cpp/interface.md) ## Example -The following sample generates C3141: +The following example generates C3141: ```cpp // C3141.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3142.md b/docs/error-messages/compiler-errors-2/compiler-error-c3142.md index fa1c98bf1bc..bb96af1a7ae 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3142.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3142.md @@ -16,7 +16,7 @@ The address of a property is not available to the developer. ## Example -The following sample generates C3142: +The following example generates C3142: ```cpp // C3142_2.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3145.md b/docs/error-messages/compiler-errors-2/compiler-error-c3145.md index 27c37a0c321..e51eb4906a5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3145.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3145.md @@ -16,7 +16,7 @@ You can only define CLR or WinRT objects within function scope. ## Examples -The following sample generates C3145 and shows how to fix it: +The following example generates C3145 and shows how to fix it: ```cpp // C3145.cpp @@ -39,7 +39,7 @@ int main() { } ``` -The following sample generates C3145: +The following example generates C3145: ```cpp // C3145b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3149.md b/docs/error-messages/compiler-errors-2/compiler-error-c3149.md index 95610b0e572..af88501c3f1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3149.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3149.md @@ -20,7 +20,7 @@ To resolve this error, declare variables of CLR types inside a function or type ## Examples -The following sample generates C3149: +The following example generates C3149: ```cpp // C3149.cpp @@ -33,7 +33,7 @@ int main() { } ``` -The following sample generates C3149: +The following example generates C3149: ```cpp // C3149b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3152.md b/docs/error-messages/compiler-errors-2/compiler-error-c3152.md index 0027381af2c..9fc6aebf8f8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3152.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3152.md @@ -16,7 +16,7 @@ Certain keywords can only be applied to a C++ class. ## Example -The following sample generates C3152 and shows how to fix it: +The following example generates C3152 and shows how to fix it: ```cpp // C3152.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3153.md b/docs/error-messages/compiler-errors-2/compiler-error-c3153.md index f9262c03c4c..c472a3c4846 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3153.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3153.md @@ -16,7 +16,7 @@ An interface cannot be instantiated. To use the members of an interface, derive ## Example -The following sample generates C3153: +The following example generates C3153: ```cpp // C3153.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3154.md b/docs/error-messages/compiler-errors-2/compiler-error-c3154.md index a36924aa57b..51771371cef 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3154.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3154.md @@ -18,7 +18,7 @@ For more information, see [Variable Argument Lists (...) (C++/CLI)](../../extens ## Example -The following sample generates C3154. +The following example generates C3154. ```cpp // C3154.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3155.md b/docs/error-messages/compiler-errors-2/compiler-error-c3155.md index 87c5fe89b71..aca1c4babbc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3155.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3155.md @@ -16,7 +16,7 @@ An indexed property was declared incorrectly. For more information, see [How to: ## Example -The following sample generates C3155. +The following example generates C3155. ```cpp // C3155.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3156.md b/docs/error-messages/compiler-errors-2/compiler-error-c3156.md index 8d8498df139..28a87eb518f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3156.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3156.md @@ -16,7 +16,7 @@ A function cannot contain the definition, or declaration, of a managed or WinRT ## Example -The following sample generates C3156. +The following example generates C3156. ```cpp // C3156.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3160.md b/docs/error-messages/compiler-errors-2/compiler-error-c3160.md index 9eafcf78c36..3d47866c30e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3160.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3160.md @@ -16,7 +16,7 @@ Interior garbage collection pointers may point to the interior of a managed or W ## Example -The following sample generates C3160: +The following example generates C3160: ```cpp // C3160.cpp From c314fd6a496988d07bdccf405fc2bdb1b8d9a8ff Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 14 Aug 2025 22:44:06 +0800 Subject: [PATCH 1407/2255] Update metadata for error references in range [C3131, C3160] --- .../error-messages/compiler-errors-2/compiler-error-c3131.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3132.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3133.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3134.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3135.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3136.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3137.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3138.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3139.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3140.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3141.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3142.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3145.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3149.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3150.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3152.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3153.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3154.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3155.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3156.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3157.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3159.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3160.md | 5 ++--- 23 files changed, 46 insertions(+), 69 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3131.md b/docs/error-messages/compiler-errors-2/compiler-error-c3131.md index 45a3a3c3e4d..6206cebbdfa 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3131.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3131.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3131" title: "Compiler Error C3131" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3131" +ms.date: 11/04/2016 f1_keywords: ["C3131"] helpviewer_keywords: ["C3131"] -ms.assetid: 38f20fac-83c9-4cd9-b7b5-74ca8f650ea6 --- # Compiler Error C3131 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3132.md b/docs/error-messages/compiler-errors-2/compiler-error-c3132.md index db542839905..83bbc2fe187 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3132.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3132.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3132" title: "Compiler Error C3132" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3132" +ms.date: 11/04/2016 f1_keywords: ["C3132"] helpviewer_keywords: ["C3132"] -ms.assetid: d54a3d12-336a-4ed0-ad4e-43cddac33b5e --- # Compiler Error C3132 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3133.md b/docs/error-messages/compiler-errors-2/compiler-error-c3133.md index 258bee5b438..cb737253640 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3133.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3133.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3133" title: "Compiler Error C3133" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3133" +ms.date: 11/04/2016 f1_keywords: ["C3133"] helpviewer_keywords: ["C3133"] -ms.assetid: 4a709405-b67b-4061-8a2a-19fa5fb34a2a --- # Compiler Error C3133 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3134.md b/docs/error-messages/compiler-errors-2/compiler-error-c3134.md index 1c14ebca3dd..ee6d5ab7c78 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3134.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3134.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3134" title: "Compiler Error C3134" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3134" +ms.date: 11/04/2016 f1_keywords: ["C3134"] helpviewer_keywords: ["C3134"] -ms.assetid: f887e4d2-7740-49e4-9972-7edceb8fa77b --- # Compiler Error C3134 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3135.md b/docs/error-messages/compiler-errors-2/compiler-error-c3135.md index 53d469d7af7..9e421773ca1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3135.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3135.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3135" title: "Compiler Error C3135" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3135" +ms.date: 11/04/2016 f1_keywords: ["C3135"] helpviewer_keywords: ["C3135"] -ms.assetid: e92ee007-5a26-47f4-8ef4-339f2d9528d1 --- # Compiler Error C3135 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3136.md b/docs/error-messages/compiler-errors-2/compiler-error-c3136.md index 89bd042d3a3..6a3a0d24b47 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3136.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3136.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3136" title: "Compiler Error C3136" -ms.date: "10/03/2018" +description: "Learn more about: Compiler Error C3136" +ms.date: 10/03/2018 f1_keywords: ["C3136"] helpviewer_keywords: ["C3136"] -ms.assetid: c77103cd-00f7-408e-b74b-4f8562039d31 --- # Compiler Error C3136 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3137.md b/docs/error-messages/compiler-errors-2/compiler-error-c3137.md index 84de4d4a588..6e731bc7062 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3137.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3137.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3137" title: "Compiler Error C3137" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3137" +ms.date: 11/04/2016 f1_keywords: ["C3137"] helpviewer_keywords: ["C3137"] -ms.assetid: 70bb1313-2e87-43ed-a0d8-33fa6ff475e4 --- # Compiler Error C3137 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3138.md b/docs/error-messages/compiler-errors-2/compiler-error-c3138.md index b741b192c29..d7f229b6067 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3138.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3138.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3138" title: "Compiler Error C3138" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3138" +ms.date: 11/04/2016 f1_keywords: ["C3138"] helpviewer_keywords: ["C3138"] -ms.assetid: 364ee9e8-9358-410e-bd35-9c4a226a3753 --- # Compiler Error C3138 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3139.md b/docs/error-messages/compiler-errors-2/compiler-error-c3139.md index 4f3e20b3f0a..2fd93ca5493 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3139.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3139.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3139" title: "Compiler Error C3139" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3139" +ms.date: 11/04/2016 f1_keywords: ["C3139"] helpviewer_keywords: ["C3139"] -ms.assetid: 95c92263-10ac-4ff3-b385-6312dd92adbc --- # Compiler Error C3139 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3140.md b/docs/error-messages/compiler-errors-2/compiler-error-c3140.md index 9cdae760d41..6141df55509 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3140.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3140.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3140" title: "Compiler Error C3140" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3140" +ms.date: 11/04/2016 f1_keywords: ["C3140"] helpviewer_keywords: ["C3140"] -ms.assetid: 122f8943-fac3-4db8-a3a8-2c5d19233de6 --- # Compiler Error C3140 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3141.md b/docs/error-messages/compiler-errors-2/compiler-error-c3141.md index d8fdd5aa0b5..a46f2847091 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3141.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3141.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3141" title: "Compiler Error C3141" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3141" +ms.date: 11/04/2016 f1_keywords: ["C3141"] helpviewer_keywords: ["C3141"] -ms.assetid: b4fd65c3-50cc-46cd-8de0-6a6d24cb9cda --- # Compiler Error C3141 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3142.md b/docs/error-messages/compiler-errors-2/compiler-error-c3142.md index bb96af1a7ae..ac7aaeb13d2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3142.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3142.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3142" title: "Compiler Error C3142" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3142" +ms.date: 11/04/2016 f1_keywords: ["C3142"] helpviewer_keywords: ["C3142"] -ms.assetid: 795137ad-d00a-4a9c-9665-0cd8bfb5da8b --- # Compiler Error C3142 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3145.md b/docs/error-messages/compiler-errors-2/compiler-error-c3145.md index e51eb4906a5..fad9fdabf3f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3145.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3145.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3145" title: "Compiler Error C3145" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3145" +ms.date: 11/04/2016 f1_keywords: ["C3145"] helpviewer_keywords: ["C3145"] -ms.assetid: f165c874-0f51-45c7-85e8-ebe321cbc168 --- # Compiler Error C3145 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3149.md b/docs/error-messages/compiler-errors-2/compiler-error-c3149.md index af88501c3f1..241585d1b14 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3149.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3149.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3149" title: "Compiler Error C3149" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3149" +ms.date: 11/04/2016 f1_keywords: ["C3149"] helpviewer_keywords: ["C3149"] -ms.assetid: cf6e2616-2f06-46da-8a8a-d449cb481c51 --- # Compiler Error C3149 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3150.md b/docs/error-messages/compiler-errors-2/compiler-error-c3150.md index 990b6b1409e..2c26b49381a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3150.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3150.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3150" title: "Compiler Error C3150" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3150" +ms.date: 11/04/2016 f1_keywords: ["C3150"] helpviewer_keywords: ["C3150"] -ms.assetid: c1ff28f5-52fe-4fd4-81d0-2e0ad8548631 --- # Compiler Error C3150 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3152.md b/docs/error-messages/compiler-errors-2/compiler-error-c3152.md index 9fc6aebf8f8..6372b7c33e0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3152.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3152.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3152" title: "Compiler Error C3152" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3152" +ms.date: 11/04/2016 f1_keywords: ["C3152"] helpviewer_keywords: ["C3152"] -ms.assetid: 4ee6e2cd-5d19-4b73-833d-765c35797e4b --- # Compiler Error C3152 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3153.md b/docs/error-messages/compiler-errors-2/compiler-error-c3153.md index c472a3c4846..8f85face4cc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3153.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3153.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3153" title: "Compiler Error C3153" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3153" +ms.date: 11/04/2016 f1_keywords: ["C3153"] helpviewer_keywords: ["C3153"] -ms.assetid: d775d97e-2480-484f-81f1-88406b10f947 --- # Compiler Error C3153 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3154.md b/docs/error-messages/compiler-errors-2/compiler-error-c3154.md index 51771371cef..6d9110b55cf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3154.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3154.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3154" title: "Compiler Error C3154" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3154" +ms.date: 11/04/2016 f1_keywords: ["C3154"] helpviewer_keywords: ["C3154"] -ms.assetid: 78005c74-eaaf-4ac2-88ae-6c25d01a302a --- # Compiler Error C3154 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3155.md b/docs/error-messages/compiler-errors-2/compiler-error-c3155.md index aca1c4babbc..8fadcc0c30c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3155.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3155.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3155" title: "Compiler Error C3155" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3155" +ms.date: 11/04/2016 f1_keywords: ["C3155"] helpviewer_keywords: ["C3155"] -ms.assetid: b04a42e1-64e7-40f8-81fe-c7945348b2cf --- # Compiler Error C3155 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3156.md b/docs/error-messages/compiler-errors-2/compiler-error-c3156.md index 28a87eb518f..8f70a06967b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3156.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3156.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3156" title: "Compiler Error C3156" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3156" +ms.date: 11/04/2016 f1_keywords: ["C3156"] helpviewer_keywords: ["C3156"] -ms.assetid: 1876da78-b94e-4af7-9795-28f72b209b3e --- # Compiler Error C3156 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3157.md b/docs/error-messages/compiler-errors-2/compiler-error-c3157.md index b5ef09dc744..445bf3ff9ca 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3157.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3157.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3157" title: "Compiler Error C3157" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3157" +ms.date: 11/04/2016 f1_keywords: ["C3157"] helpviewer_keywords: ["C3157"] -ms.assetid: fe94d97f-612e-4729-8b2b-b057d84822a1 --- # Compiler Error C3157 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3159.md b/docs/error-messages/compiler-errors-2/compiler-error-c3159.md index 1ff1fe92982..c1090d08ec0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3159.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3159.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3159" title: "Compiler Error C3159" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3159" +ms.date: 11/04/2016 f1_keywords: ["C3159"] helpviewer_keywords: ["C3159"] -ms.assetid: e115cc76-0021-4568-95fd-61a324c41a85 --- # Compiler Error C3159 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3160.md b/docs/error-messages/compiler-errors-2/compiler-error-c3160.md index 3d47866c30e..a509272d5a4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3160.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3160.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3160" title: "Compiler Error C3160" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3160" +ms.date: 11/04/2016 f1_keywords: ["C3160"] helpviewer_keywords: ["C3160"] -ms.assetid: a250c433-8adf-43b9-8dee-c3794e09b0a5 --- # Compiler Error C3160 From d9b16697cc04cc30bec2725f81125201cea082ec Mon Sep 17 00:00:00 2001 From: MacGyver Codilla <77024043+39otsu@users.noreply.github.com> Date: Thu, 14 Aug 2025 10:24:22 -0700 Subject: [PATCH 1408/2255] Update docs/sanitizers/asan-flags.md Remove duplicate word "supported" Co-authored-by: David Justo --- docs/sanitizers/asan-flags.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 98a4f5a4aaf..cc8f94e7fda 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["AddressSanitizer options", "AddressSanitizer flags", "Add # AddressSanitizer Runtime Options -The following is a list of supported actively supported options for the AddressSanitizer. They can be enabled through the `ASAN_OPTIONS` environment variable or by overriding the `__asan_default_options()` user function, as described [here](/asan-runtime.md#runtime-options). +The following is a list of actively supported options for the AddressSanitizer. They can be enabled through the `ASAN_OPTIONS` environment variable or by overriding the `__asan_default_options()` user function, as described [here](/asan-runtime.md#runtime-options). > [!NOTE] > These descriptions may vary from those found in Clang's ASan docs to account for MSVC specific behaviors. From 358044b4fd343cea45b4fa188002f3a9efbddf57 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla <77024043+39otsu@users.noreply.github.com> Date: Thu, 14 Aug 2025 10:30:16 -0700 Subject: [PATCH 1409/2255] Update docs/sanitizers/asan-runtime.md Fix typo Co-authored-by: David Justo --- docs/sanitizers/asan-runtime.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-runtime.md b/docs/sanitizers/asan-runtime.md index 777d3e2be46..43b091af085 100644 --- a/docs/sanitizers/asan-runtime.md +++ b/docs/sanitizers/asan-runtime.md @@ -101,7 +101,7 @@ For an illustration of the alignment requirement and potential issues, see the p ## Runtime options -The MSVC AddressSanitizer is a regularly synced fork of the [Clang AddressSanitizer runtime](https://github.com/llvm/llvm-project). As a result, MSVC implicitly inherits many Clang's ASan runtime options. A complete list of options that we actively maintain and test can be found [here](./asan-flags.md). If you discover options that don't function as expected, [report a bug](https://aka.ms/feedback/report?space=62). +The MSVC AddressSanitizer is a regularly synced fork of the [Clang AddressSanitizer runtime](https://github.com/llvm/llvm-project). As a result, MSVC implicitly inherits many of Clang's ASan runtime options. A complete list of options that we actively maintain and test can be found [here](./asan-flags.md). If you discover options that don't function as expected, [report a bug](https://aka.ms/feedback/report?space=62). ### Configure runtime options From 2c9e9b51cc612bf28edc0c7b72e38b86146d0736 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla <77024043+39otsu@users.noreply.github.com> Date: Thu, 14 Aug 2025 10:32:17 -0700 Subject: [PATCH 1410/2255] Update docs/sanitizers/asan-flags.md Co-authored-by: David Justo --- docs/sanitizers/asan-flags.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index cc8f94e7fda..98550be693c 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -12,8 +12,6 @@ The following is a list of actively supported options for the AddressSanitizer. > [!NOTE] > These descriptions may vary from those found in Clang's ASan docs to account for MSVC specific behaviors. -If you discover documentation errors, report them [here](https://aka.ms/feedback/report?space=62). - | Flag | Default value | Description | |------|---------------|-------------| From 4aecc9b6f09bb7caddb93c3560ce2ca5912d3f80 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla <77024043+39otsu@users.noreply.github.com> Date: Thu, 14 Aug 2025 10:32:33 -0700 Subject: [PATCH 1411/2255] Update docs/sanitizers/asan-flags.md Co-authored-by: David Justo --- docs/sanitizers/asan-flags.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 98550be693c..f61bb470edf 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -10,7 +10,7 @@ helpviewer_keywords: ["AddressSanitizer options", "AddressSanitizer flags", "Add The following is a list of actively supported options for the AddressSanitizer. They can be enabled through the `ASAN_OPTIONS` environment variable or by overriding the `__asan_default_options()` user function, as described [here](/asan-runtime.md#runtime-options). > [!NOTE] -> These descriptions may vary from those found in Clang's ASan docs to account for MSVC specific behaviors. +> These descriptions may vary from those in Clang's ASan docs to account for MSVC specific behaviors. | Flag | Default value | Description | From dcf021f50b959da95f625b5276a1b7649a9ff9df Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Thu, 14 Aug 2025 11:33:44 -0700 Subject: [PATCH 1412/2255] Remove flags for later commit --- docs/sanitizers/asan-flags.md | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 98a4f5a4aaf..dbe442f5695 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -25,18 +25,13 @@ If you discover documentation errors, report them [here](https://aka.ms/feedback |`allow_user_poisoning` | `true` | If `true`, you may manually mark memory regions as poisoned or unpoisoned.| |`atexit` | `false` | If `true`, prints ASan exit stats even after program terminates successfully.| |`check_initialization_order` | `false` | If `true`, attempts to catch initialization order issues.| -|`check_malloc_usable_size` | `true` | If `true`, reports an error when the pointer does not reference a valid, currently allocated block.| |`continue_on_error` | `0` | Allows an application to continue running while reporting unique memory safety errors. `0` - disabled, `1` - output to `stdout`, `2` - output to `stderr`. See [continue_on_error](asan-continue-on-error.md).| |`detect_container_overflow` | `true` | If `true`, honor the container overflow annotations. See [ContainerOverflow](./error-container-overflow.md).| |`detect_invalid_pointer_pairs` | `0` | If >`0`, the tool detects operations like <, <=, >, >=, and - on invalid pointer pairs, such as pointers that belong to different objects. Higher values increase detection effort.| -|`detect_odr_violation` | `0` | If >=`2`, detect violation of One-Definition-Rule (ODR) violation; If `1`, detect ODR-violation only if the two variables have different sizes.| |`detect_stack_use_after_return` | `false` | Enables `stack-use-after-return` checking at runtime. Requires `/fsanitize-address-use-after-return`. See [stack-use-after-return](./error-stack-use-after-return.md).| |`disable_coredump` | `true`/`false` (on non-64-bit systems) | Disables core dumping. By default, the tool sets `disable_coredump=1` on 64-bit systems to prevent dumping a 16T+ core file. The tool ignores this flag on operating systems that don't dump core by default and for sanitizers that don't reserve large amounts of virtual memory.| -|`dump_instruction_bytes` | `false` | If `true`, dump 16 bytes starting at the instruction that caused `SEGV`.| |`exitcode` | `1` | Override the program exit status with this value if the tool found an error.| |`external_symbolizer_path` | `""` | Path to external symbolizer. If empty, the tool will search `$PATH` for the symbolizer.| -|`fast_unwind_on_check` | `false` | If available, the tool uses the fast frame-pointer-based unwinder on internal `CHECK` failures.| -|`fast_unwind_on_fatal` | `false` | If available, the tool uses the fast frame-pointer-based unwinder on fatal errors.| |`fast_unwind_on_malloc` | `true` | If available, the tool uses the fast frame-pointer-based unwinder on `malloc`/`free`.| |`full_address_space` | `false` | Sanitize complete address space; by default kernel area on 32-bit platforms will not be sanitized.| |`halt_on_error` | `true` | Exit/abort the program after printing the first error report (May cause undefined behavior, use `continue_on_error` for full support).| @@ -44,7 +39,6 @@ If you discover documentation errors, report them [here](https://aka.ms/feedback |`handle_sigfpe` | `true` | `false` - ASan will not handle `SIGFPE` errors, `true` - ASan will handle `SIGFPE` errors.| |`handle_sigill` | `true` | `false` - ASan will not handle `SIGILL` errors, `true` - ASan will handle `SIGILL` errors.| |`help` | `false` | If `true`, ASan prints the flag options to console.| -|`html_cov_report` | `false` | If `true`, ASan generates a coverage report.| |`iat_overwrite`|`error`|`error` - report an error whenever an overwrite is detected, `protect` - attempt to avoid using the overwritten definition, `ignore` - never attempt to correct any overwritten functions. See [iat_overwrite](./asan-runtime.md#msvc-specific-addresssanitizer-runtime-options).| |`include_if_exists` | `""` | Read more options from the given file (if it exists).| |`intercept_strpbrk` | `true` | If `true`, uses custom wrappers for strpbrk function to find more errors.| @@ -57,28 +51,19 @@ If you discover documentation errors, report them [here](https://aka.ms/feedback |`malloc_fill_byte` | `0xbe` | Value used to fill the newly allocated memory.| |`max_malloc_fill_size` | `4096` | ASan allocator flag. `max_malloc_fill_size` is the maximal amount of bytes that will be filled with `malloc_fill_byte` on `malloc`.| |`max_redzone` | `2048` | Maximal size (in bytes) of redzones around heap objects.| -|`max_uar_stack_size_log` | `20` | Maximum fake stack size log.| |`min_uar_stack_size_log` | `16` | Minimum fake stack size log. (Minimum value accepted: `16`).| |`new_delete_type_mismatch` | `true` | Report errors on mismatch betwen size of new and delete. See [new-delete-type-mismatch](./error-new-delete-type-mismatch.md).| -|`poison_array_cookie` | `true` | Poison (or not) the array cookie after operator `new[]`.| |`poison_heap` | `true` | Poison (or not) the heap memory on [de]allocation. Zero value is useful for benchmarking the allocator or instrumentator.| |`poison_partial` | `true` | If `true`, poison partially addressable 8-byte aligned words. This flag affects heap and global buffers, but not stack buffers.| |`print_cmdline` | `false` | Print command line on crash. With `continue_on_error` set >= `1`, print current working directory as `UTF-16` aware.| -|`print_full_thread_history` | `true` | If `true`, prints thread creation stacks for the threads involved in the report and their ancestors up to the main thread.| -|`print_legend` | `true` | Print the legend for the shadow bytes.| -|`print_stats` | `false` | Print various statistics after printing an error message or if atexit=1.| |`print_summary` | `true` | If `false`, disable printing error summaries in addition to error reports.| -|`protect_shadow_gap` | `true` | If `true`, `mprotect` the shadow gap.| |`quarantine_size` | `-1` | Deprecated, please use `quarantine_size_mb`.| |`quarantine_size_mb` | `-1` | Size (in Mb) of quarantine used to detect `use-after-free` errors. Lower value may increase the chance of false negatives.| |`redzone` | `16` | Minimal size (in bytes) of redzones around heap objects. Requirement: `redzone` >= 16, is a power of two.| -|`replace_intrin` | `true` | If `true`, uses custom wrappers for `memset` or `memcpy` or `memmove` intinsics.| |`replace_str` | `true` | If `true`, uses custom wrappers and replacements for libc string functions to find more errors.| |`report_globals` | `1` | Controls the way to handle globals (`0` - don't detect buffer overflow on globals, `1` - detect buffer overflow, `2` - detect buffer overflow and print data about registered globals).| -|`sancov_path` | `sancov` | Sancov tool location.| |`sleep_before_dying` | `0` | Number of seconds to sleep between printing an error report and terminating the program.| |`stack_trace_format` | `DEFAULT` | Format string used to render stack frames.| -|`start_deactivated` | `false` | If `true`, preserves configuration and allocator, and deactivates ASan at initialization. ASan will reactivate when requested.| |`strict_memcmp` | `true` | If `true`, assume that `memcmp(p1, p2, n)` always reads `n` bytes before comparing `p1` and `p2`.| |`strict_string_checks` | `false` | If `true` check that string arguments are properly null-terminated.| |`strip_path_prefix` | `""` | Strips this prefix from file paths in error reports.| @@ -86,9 +71,6 @@ If you discover documentation errors, report them [here](https://aka.ms/feedback |`suppressions` | `""` | Suppresses file name.| |`symbolize` | `true` | If `true`, use the `llvm-symbolizer` to turn virtual addresses to file or line locations.| |`symbolize_inline_frames` | `true` | Print inlined frames in stacktraces.| -|`symbolize_vs_style` | `false` | Print file locations in Visual Studio style (e.g: file(10,42): ...).| -|`unmap_shadow_on_exit` | `false` | If `true`, explicitly unmaps the shadow memory at exit.| -|`use_madv_dontdump` | `true` | If `true`, instructs kernel to not store shadow in core file.| |`verbosity` | `0` | Verbosity level: `0` - default, `1` - more, `2+` - even more output.| |`windows_fast_fail_on_error`|`false`|If `true`, enable the process to terminate with a `__fastfail(71)` after printing the error report. See [windows_fast_fail_on_error](./asan-runtime.md#msvc-specific-addresssanitizer-runtime-options).| |`windows_hook_legacy_allocators`|`true`|If `true`, enable hooking of (`Global`/`Local`)(`Alloc`/`Free`/`Size`/`ReAlloc`/`Lock`/`Unlock`) functions.| From a1bd6fc8bca7a7b7f22c30c0b3c51ac8b2a42747 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Thu, 14 Aug 2025 11:33:57 -0700 Subject: [PATCH 1413/2255] Fix linking --- docs/sanitizers/asan-flags.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index dbe442f5695..75fb8b9bc4f 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["AddressSanitizer options", "AddressSanitizer flags", "Add # AddressSanitizer Runtime Options -The following is a list of supported actively supported options for the AddressSanitizer. They can be enabled through the `ASAN_OPTIONS` environment variable or by overriding the `__asan_default_options()` user function, as described [here](/asan-runtime.md#runtime-options). +The following is a list of supported actively supported options for the AddressSanitizer. They can be enabled through the `ASAN_OPTIONS` environment variable or by overriding the `__asan_default_options()` user function, as described [here](./asan-runtime.md#runtime-options). > [!NOTE] > These descriptions may vary from those found in Clang's ASan docs to account for MSVC specific behaviors. From 013292ca980791adf2d4ba55b4e4889d4bdd4bcf Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 15 Aug 2025 16:23:20 +0800 Subject: [PATCH 1414/2255] Add "Remarks" heading in C3187 error reference --- docs/error-messages/compiler-errors-2/compiler-error-c3187.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3187.md b/docs/error-messages/compiler-errors-2/compiler-error-c3187.md index 4ef3efeedb4..67cebe86c14 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3187.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3187.md @@ -10,6 +10,8 @@ ms.assetid: 9d2ebf55-1a6a-4087-bf5b-5274baae6351 > '`__func__`' : is only available within the body of a function +## Remarks + The predefined macro is not available outside the body of a function. To correct this error, move the macro inside the body of a function. From 59adf3ebac46a3349c44a08d456ecfc36a53608e Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 15 Aug 2025 16:27:18 +0800 Subject: [PATCH 1415/2255] Add link and tweak remarks in C3187 error reference --- docs/error-messages/compiler-errors-2/compiler-error-c3187.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3187.md b/docs/error-messages/compiler-errors-2/compiler-error-c3187.md index 67cebe86c14..8195456820c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3187.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3187.md @@ -12,6 +12,6 @@ ms.assetid: 9d2ebf55-1a6a-4087-bf5b-5274baae6351 ## Remarks -The predefined macro is not available outside the body of a function. +The predefined identifier [`__func__`](../../cpp/func.md) is not available outside the body of a function. -To correct this error, move the macro inside the body of a function. +To correct this error, move the identifier inside the body of a function. From 6f6a2b240d9c8e4966fade4c9758a6f92ea06a39 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 15 Aug 2025 16:42:35 +0800 Subject: [PATCH 1416/2255] Add example in C3187 error reference --- .../compiler-errors-2/compiler-error-c3187.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3187.md b/docs/error-messages/compiler-errors-2/compiler-error-c3187.md index 8195456820c..e82957b16eb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3187.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3187.md @@ -15,3 +15,16 @@ ms.assetid: 9d2ebf55-1a6a-4087-bf5b-5274baae6351 The predefined identifier [`__func__`](../../cpp/func.md) is not available outside the body of a function. To correct this error, move the identifier inside the body of a function. + +## Example + +The following example generates C3187: + +```cpp +// C3187.cpp +// compile with: /c + +auto global = __func__; // C3187, usage in global scope + +void func(const char* f = __func__); // C3187, usage in parameter list +``` From 6ffde87dfebbc768e32977c90ac877b0663f0e16 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 15 Aug 2025 16:50:32 +0800 Subject: [PATCH 1417/2255] Update error message for C3187 --- docs/error-messages/compiler-errors-2/compiler-error-c3187.md | 2 +- .../compiler-errors-2/compiler-errors-c3100-through-c3199.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3187.md b/docs/error-messages/compiler-errors-2/compiler-error-c3187.md index e82957b16eb..423bc277df2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3187.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3187.md @@ -8,7 +8,7 @@ ms.assetid: 9d2ebf55-1a6a-4087-bf5b-5274baae6351 --- # Compiler Error C3187 -> '`__func__`' : is only available within the body of a function +> '`__func__`': is only available within the body of a function ## Remarks diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c3100-through-c3199.md b/docs/error-messages/compiler-errors-2/compiler-errors-c3100-through-c3199.md index 338e4eceb9f..d9fb3719199 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c3100-through-c3199.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c3100-through-c3199.md @@ -102,7 +102,7 @@ The articles in this section of the documentation explain a subset of the error | Compiler error C3184 | Obsolete. | | [Compiler error C3185](compiler-error-c3185.md) | 'typeid': used on managed/WinRT type '*type*', use '*operator*' instead | | Compiler error C3186 | Obsolete. | -| [Compiler error C3187](compiler-error-c3187.md) | '*identifier*': is only available within the body of a function | +| [Compiler error C3187](compiler-error-c3187.md) | '`__func__`': is only available within the body of a function | | Compiler error C3188 | Obsolete. | | [Compiler error C3189](compiler-error-c3189.md) | 'typeid<*declarator*>': this syntax is no longer supported, use::typeid instead (Obsolete in Visual Studio 2022.) | | [Compiler error C3190](compiler-error-c3190.md) | '*declarator*' with the provided template arguments is not the explicit instantiation of any member function of '*type*' | From ac6165812a63146a1071bd3f23e272458a22d8bd Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 15 Aug 2025 16:52:39 +0800 Subject: [PATCH 1418/2255] Update metadata in 2 error reference topics --- .../error-messages/compiler-errors-2/compiler-error-c3187.md | 5 ++--- .../compiler-errors-2/compiler-errors-c3100-through-c3199.md | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3187.md b/docs/error-messages/compiler-errors-2/compiler-error-c3187.md index 423bc277df2..f4f244b6d9b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3187.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3187.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3187" title: "Compiler Error C3187" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3187" +ms.date: 08/15/2025 f1_keywords: ["C3187"] helpviewer_keywords: ["C3187"] -ms.assetid: 9d2ebf55-1a6a-4087-bf5b-5274baae6351 --- # Compiler Error C3187 diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c3100-through-c3199.md b/docs/error-messages/compiler-errors-2/compiler-errors-c3100-through-c3199.md index d9fb3719199..92e4a1b994d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c3100-through-c3199.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c3100-through-c3199.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler errors C3100 Through C3199" title: "Compiler errors C3100 Through C3199" +description: "Learn more about: Compiler errors C3100 Through C3199" ms.date: 06/01/2022 f1_keywords: ["C3102", "C3105", "C3107", "C3108", "C3109", "C3111", "C3112", "C3119", "C3122", "C3123", "C3124", "C3125", "C3127", "C3128", "C3129", "C3143", "C3144", "C3146", "C3147", "C3148", "C3151", "C3158", "C3164", "C3165", "C3169", "C3177", "C3178", "C3184", "C3186", "C3188", "C3191", "C3193"] helpviewer_keywords: ["C3102", "C3105", "C3107", "C3108", "C3109", "C3111", "C3112", "C3119", "C3122", "C3123", "C3124", "C3125", "C3127", "C3128", "C3129", "C3143", "C3144", "C3146", "C3147", "C3148", "C3151", "C3158", "C3164", "C3165", "C3169", "C3177", "C3178", "C3184", "C3186", "C3188", "C3191", "C3193"] From b8cdb92469c34f627b1d06021876c92c8cb9e24d Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 15 Aug 2025 16:58:16 +0800 Subject: [PATCH 1419/2255] Add C2457 "See also" link in C3187 error reference --- docs/error-messages/compiler-errors-2/compiler-error-c3187.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3187.md b/docs/error-messages/compiler-errors-2/compiler-error-c3187.md index f4f244b6d9b..3710ca2abe3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3187.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3187.md @@ -27,3 +27,7 @@ auto global = __func__; // C3187, usage in global scope void func(const char* f = __func__); // C3187, usage in parameter list ``` + +## See also + +[C2457](../compiler-errors-1/compiler-error-c2457.md) From e8176e8a6166c5392fbcdcbfcb6cf0b5e6e35383 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 15 Aug 2025 17:06:53 +0800 Subject: [PATCH 1420/2255] Add blockquotes for error messages in range [C3161, C3190] --- docs/error-messages/compiler-errors-2/compiler-error-c3161.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3162.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3167.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3168.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3170.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3171.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3172.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3173.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3174.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3175.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3176.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3179.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3180.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3181.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3182.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3183.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3185.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3190.md | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3161.md b/docs/error-messages/compiler-errors-2/compiler-error-c3161.md index 2dbb59b9051..991e931306f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3161.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3161.md @@ -8,7 +8,7 @@ ms.assetid: 1fe2be85-a343-487b-8476-bf9e257eb29d --- # Compiler Error C3161 -'interface' : nesting class, struct, union or interface in an interface is illegal; nesting interface in a class, struct or union is illegal +> 'interface' : nesting class, struct, union or interface in an interface is illegal; nesting interface in a class, struct or union is illegal An [__interface](../../cpp/interface.md) can only appear at global scope or within a namespace. A class, struct, or union cannot appear in an interface. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3162.md b/docs/error-messages/compiler-errors-2/compiler-error-c3162.md index 6c059c9c65b..9386770e773 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3162.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3162.md @@ -8,7 +8,7 @@ ms.assetid: 0d4c4a24-1456-4191-b7d8-c38cb7b17c32 --- # Compiler Error C3162 -'type' : a reference type which has a destructor cannot be used as the type of static data member 'member' +> 'type' : a reference type which has a destructor cannot be used as the type of static data member 'member' The common language runtime cannot know when to run a user-defined destructor when the class also contains static member function. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3167.md b/docs/error-messages/compiler-errors-2/compiler-error-c3167.md index 32c75e4d421..693c0b3ac19 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3167.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3167.md @@ -8,6 +8,6 @@ ms.assetid: 58c25fe7-8562-4a18-ad3f-487f081ff173 --- # Compiler Error C3167 -Unable to initialize .NET Framework: make sure it is installed +> Unable to initialize .NET Framework: make sure it is installed The .NET Framework is not installed on this computer; install the .NET Framework. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3168.md b/docs/error-messages/compiler-errors-2/compiler-error-c3168.md index bdfd093a15a..74facf3e018 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3168.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3168.md @@ -8,7 +8,7 @@ ms.assetid: 4c36fcfb-c351-48ff-b4eb-78d2aa1b4d55 --- # Compiler Error C3168 -'type' : illegal underlying type for enum +> 'type' : illegal underlying type for enum The underlying type you specified for the **`enum`** type was not valid. The underlying type must be an integral C++ type or a corresponding CLR type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3170.md b/docs/error-messages/compiler-errors-2/compiler-error-c3170.md index 10e9b317c49..ec13b962453 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3170.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3170.md @@ -8,7 +8,7 @@ ms.assetid: ca9a59d6-7df3-42f0-b028-c09d0af3ac2a --- # Compiler Error C3170 -cannot have different module identifiers in a project +> cannot have different module identifiers in a project [module](../../windows/attributes/module-cpp.md) attributes with different names were found in two of the files in a compilation. Only one unique `module` attribute can be specified per compilation. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3171.md b/docs/error-messages/compiler-errors-2/compiler-error-c3171.md index b51a5d11dd0..9d30d186bfd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3171.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3171.md @@ -8,7 +8,7 @@ ms.assetid: 1ce26997-7ef1-4c9f-84da-003ea1a4251e --- # Compiler Error C3171 -'module': cannot specify different module attributes in a project +> 'module': cannot specify different module attributes in a project [module](../../windows/attributes/module-cpp.md) attributes with different parameter lists were found in two of the files in a compilation. Only one unique `module` attribute can be specified per compilation. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3172.md b/docs/error-messages/compiler-errors-2/compiler-error-c3172.md index 832aaa9c403..3513160527f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3172.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3172.md @@ -8,7 +8,7 @@ ms.assetid: 1834e2fd-6036-4c33-aff2-b51bc7c99441 --- # Compiler Error C3172 -'module_name': cannot specify different idl_module attributes in a project +> 'module_name': cannot specify different idl_module attributes in a project [idl_module](../../windows/attributes/idl-module.md) attributes with the same name but different `dllname` or `version` parameters were found in two of the files in a compilation. Only one unique `idl_module` attribute can be specified per compilation. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3173.md b/docs/error-messages/compiler-errors-2/compiler-error-c3173.md index 264132ec13c..9cc86a69910 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3173.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3173.md @@ -8,7 +8,7 @@ ms.assetid: edf79e10-e8cf-4f76-8d33-ab9d05e974e9 --- # Compiler Error C3173 -version mismatch in idl merge +> version mismatch in idl merge This error occurs when an object file contains embedded idl that was generated with a previous version of the compiler. The compiler encodes a version number to ensure that the same compiler used to generate the idl content that is embedded in the .obj files is also the same compiler used to merge the embedded idl. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3174.md b/docs/error-messages/compiler-errors-2/compiler-error-c3174.md index 43fbd18675c..497ccf61930 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3174.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3174.md @@ -8,7 +8,7 @@ ms.assetid: fe6b3b5a-8196-485f-a45f-0b2e51df4086 --- # Compiler Error C3174 -module attribute was not specified +> module attribute was not specified A program that uses Visual C++ attributes did not also use the [module](../../windows/attributes/module-cpp.md) attribute, which is required in any program that uses attributes. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3175.md b/docs/error-messages/compiler-errors-2/compiler-error-c3175.md index 410de47bc69..2a56f53b737 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3175.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3175.md @@ -8,7 +8,7 @@ ms.assetid: 3f19d513-a05a-4b6c-806f-276fe5c36b90 --- # Compiler Error C3175 -'function1' : cannot call a method of a managed type from unmanaged function 'function2' +> 'function1' : cannot call a method of a managed type from unmanaged function 'function2' Unmanaged functions cannot call member functions of managed classes. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3176.md b/docs/error-messages/compiler-errors-2/compiler-error-c3176.md index 9252c20ad4c..c729636822b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3176.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3176.md @@ -8,7 +8,7 @@ ms.assetid: 6cc8d602-8e15-47a7-b1b5-e93e5d50e271 --- # Compiler Error C3176 -'type' : cannot declare local value type +> 'type' : cannot declare local value type A class can only be declared as a value type at global scope. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3179.md b/docs/error-messages/compiler-errors-2/compiler-error-c3179.md index 3ae78d152d7..41ff42fa850 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3179.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3179.md @@ -8,7 +8,7 @@ ms.assetid: 60d7e41b-25fd-48ac-8b79-830c062f4dcd --- # Compiler Error C3179 -an unnamed managed or WinRT type is not allowed +> an unnamed managed or WinRT type is not allowed All CLR and WinRT classes and structs must have names. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3180.md b/docs/error-messages/compiler-errors-2/compiler-error-c3180.md index 7c795d00663..10d2a51f022 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3180.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3180.md @@ -8,7 +8,7 @@ ms.assetid: 5281f583-7df7-418a-8507-d4da67ed6572 --- # Compiler Error C3180 -'type name' : name exceeds meta-data limit of 'limit' characters +> 'type name' : name exceeds meta-data limit of 'limit' characters The compiler truncated the name for a managed type in metadata. The truncation will make the type unusable with the `#using` directive (or the equivalent in another language). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3181.md b/docs/error-messages/compiler-errors-2/compiler-error-c3181.md index 1af9f7eccf5..2f49d519bda 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3181.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3181.md @@ -8,7 +8,7 @@ ms.assetid: 5d450f8b-6cef-4452-a0c4-2076e967451d --- # Compiler Error C3181 -'type' : invalid operand for operator +> 'type' : invalid operand for operator An invalid parameter was passed to the [typeid](../../extensions/typeid-cpp-component-extensions.md) operator. The parameter must be a managed type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3182.md b/docs/error-messages/compiler-errors-2/compiler-error-c3182.md index 9c3772dff9c..671e7498dbb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3182.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3182.md @@ -8,7 +8,7 @@ ms.assetid: f3681266-308e-4990-a979-8eef8920e186 --- # Compiler Error C3182 -'class' : a member using-declaration or access declaration is illegal within a managed or WinRTtype +> 'class' : a member using-declaration or access declaration is illegal within a managed or WinRTtype A [using](../../cpp/using-declaration.md) declaration is invalid within all forms of managed classes. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3183.md b/docs/error-messages/compiler-errors-2/compiler-error-c3183.md index 82ad13cdc56..9671cafe292 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3183.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3183.md @@ -8,7 +8,7 @@ ms.assetid: dbd0f020-c739-43c9-947e-9ce21537331b --- # Compiler Error C3183 -cannot define unnamed class, struct or union inside of managed or WinRT type 'type' +> cannot define unnamed class, struct or union inside of managed or WinRT type 'type' A type that is embedded in a managed or WinRT type must be named. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3185.md b/docs/error-messages/compiler-errors-2/compiler-error-c3185.md index 315365082c0..2707c1c2e11 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3185.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3185.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C3185"] --- # Compiler Error C3185 -'typeid' used on managed or WinRT type 'type', use 'operator' instead +> 'typeid' used on managed or WinRT type 'type', use 'operator' instead You cannot apply the [typeid](../../cpp/typeid-operator.md) operator to a managed or WinRT type; use [typeid](../../extensions/typeid-cpp-component-extensions.md) instead. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3190.md b/docs/error-messages/compiler-errors-2/compiler-error-c3190.md index a1fd356cb1b..38205552a70 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3190.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3190.md @@ -8,7 +8,7 @@ ms.assetid: 7c701afa-85a7-4f7a-8881-0662436ac244 --- # Compiler Error C3190 -'instantiation' with the provided template arguments is not the explicit instantiation of any member function of 'type' +> 'instantiation' with the provided template arguments is not the explicit instantiation of any member function of 'type' The compiler detected an attempt to make an explicit function instantiation; however, the provided type arguments do not match any of the possible functions. From 6a07aa00f3eb327ede2c32c2710254567b98dc3f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 15 Aug 2025 17:11:39 +0800 Subject: [PATCH 1421/2255] Add "Remarks" and "Example" headings for error references in range [C3161, C3190] --- docs/error-messages/compiler-errors-2/compiler-error-c3161.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3162.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3163.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3166.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3167.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3168.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3170.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3171.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3172.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3173.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3174.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3175.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3176.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3179.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3180.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3181.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3182.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3183.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3185.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3189.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3190.md | 4 ++++ 21 files changed, 68 insertions(+) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3161.md b/docs/error-messages/compiler-errors-2/compiler-error-c3161.md index 991e931306f..564664f7420 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3161.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3161.md @@ -10,6 +10,8 @@ ms.assetid: 1fe2be85-a343-487b-8476-bf9e257eb29d > 'interface' : nesting class, struct, union or interface in an interface is illegal; nesting interface in a class, struct or union is illegal +## Remarks + An [__interface](../../cpp/interface.md) can only appear at global scope or within a namespace. A class, struct, or union cannot appear in an interface. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3162.md b/docs/error-messages/compiler-errors-2/compiler-error-c3162.md index 9386770e773..1bb409fb67d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3162.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3162.md @@ -10,6 +10,8 @@ ms.assetid: 0d4c4a24-1456-4191-b7d8-c38cb7b17c32 > 'type' : a reference type which has a destructor cannot be used as the type of static data member 'member' +## Remarks + The common language runtime cannot know when to run a user-defined destructor when the class also contains static member function. A destructor will never be run unless the object is deleted explicitly. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3163.md b/docs/error-messages/compiler-errors-2/compiler-error-c3163.md index efd0231c211..21303a4e941 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3163.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3163.md @@ -10,6 +10,8 @@ ms.assetid: 17dcafa3-f416-4e04-a232-f9569218ba75 > '*construct*': attributes inconsistent with previous declaration +## Remarks + The attribute(s) that are applied to a definition conflict with the attribute(s) that are applied to a declaration. One way to resolve C3163 is to eliminate attributes on the forward declaration. Any attributes on a forward declaration should be less than the attributes on the definition or, at most, equal to them. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3166.md b/docs/error-messages/compiler-errors-2/compiler-error-c3166.md index 6b12aa26515..557ea5648e0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3166.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3166.md @@ -10,6 +10,8 @@ ms.assetid: ec3e330d-c15d-4158-8268-09101486c566 > 'pointer' : cannot declare a pointer to an interior __gc pointer as a member of 'type' +## Remarks + The compiler found an invalid pointer declaration (a **`__nogc`** pointer to a **`__gc`** pointer.). C3166 is only reachable using the obsolete compiler option **`/clr:oldSyntax`**. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3167.md b/docs/error-messages/compiler-errors-2/compiler-error-c3167.md index 693c0b3ac19..28e910770ae 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3167.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3167.md @@ -10,4 +10,6 @@ ms.assetid: 58c25fe7-8562-4a18-ad3f-487f081ff173 > Unable to initialize .NET Framework: make sure it is installed +## Remarks + The .NET Framework is not installed on this computer; install the .NET Framework. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3168.md b/docs/error-messages/compiler-errors-2/compiler-error-c3168.md index 74facf3e018..325b4e3f236 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3168.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3168.md @@ -10,8 +10,12 @@ ms.assetid: 4c36fcfb-c351-48ff-b4eb-78d2aa1b4d55 > 'type' : illegal underlying type for enum +## Remarks + The underlying type you specified for the **`enum`** type was not valid. The underlying type must be an integral C++ type or a corresponding CLR type. +## Example + The following sample generates C3168: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3170.md b/docs/error-messages/compiler-errors-2/compiler-error-c3170.md index ec13b962453..faa2901e65a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3170.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3170.md @@ -10,10 +10,14 @@ ms.assetid: ca9a59d6-7df3-42f0-b028-c09d0af3ac2a > cannot have different module identifiers in a project +## Remarks + [module](../../windows/attributes/module-cpp.md) attributes with different names were found in two of the files in a compilation. Only one unique `module` attribute can be specified per compilation. Identical `module` attributes can be specified in more than one source code file. +## Example + For example, if the following module attributes were found: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3171.md b/docs/error-messages/compiler-errors-2/compiler-error-c3171.md index 9d30d186bfd..77238ce11aa 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3171.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3171.md @@ -10,10 +10,14 @@ ms.assetid: 1ce26997-7ef1-4c9f-84da-003ea1a4251e > 'module': cannot specify different module attributes in a project +## Remarks + [module](../../windows/attributes/module-cpp.md) attributes with different parameter lists were found in two of the files in a compilation. Only one unique `module` attribute can be specified per compilation. Identical `module` attributes can be specified in more than one source code file. +## Example + For example, if the following `module` attributes were found: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3172.md b/docs/error-messages/compiler-errors-2/compiler-error-c3172.md index 3513160527f..574b5de0abc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3172.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3172.md @@ -10,10 +10,14 @@ ms.assetid: 1834e2fd-6036-4c33-aff2-b51bc7c99441 > 'module_name': cannot specify different idl_module attributes in a project +## Remarks + [idl_module](../../windows/attributes/idl-module.md) attributes with the same name but different `dllname` or `version` parameters were found in two of the files in a compilation. Only one unique `idl_module` attribute can be specified per compilation. Identical `idl_module` attributes can be specified in more than one source code file. +## Example + For example, if the following `idl_module` attributes were found: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3173.md b/docs/error-messages/compiler-errors-2/compiler-error-c3173.md index 9cc86a69910..a981f2b87bf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3173.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3173.md @@ -10,6 +10,8 @@ ms.assetid: edf79e10-e8cf-4f76-8d33-ab9d05e974e9 > version mismatch in idl merge +## Remarks + This error occurs when an object file contains embedded idl that was generated with a previous version of the compiler. The compiler encodes a version number to ensure that the same compiler used to generate the idl content that is embedded in the .obj files is also the same compiler used to merge the embedded idl. Update your Visual C++ installation so that all tools are from the latest released version. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3174.md b/docs/error-messages/compiler-errors-2/compiler-error-c3174.md index 497ccf61930..0d8d2e05fcd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3174.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3174.md @@ -10,8 +10,12 @@ ms.assetid: fe6b3b5a-8196-485f-a45f-0b2e51df4086 > module attribute was not specified +## Remarks + A program that uses Visual C++ attributes did not also use the [module](../../windows/attributes/module-cpp.md) attribute, which is required in any program that uses attributes. +## Example + The following sample generates C3174: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3175.md b/docs/error-messages/compiler-errors-2/compiler-error-c3175.md index 2a56f53b737..486f6c8e80d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3175.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3175.md @@ -10,8 +10,12 @@ ms.assetid: 3f19d513-a05a-4b6c-806f-276fe5c36b90 > 'function1' : cannot call a method of a managed type from unmanaged function 'function2' +## Remarks + Unmanaged functions cannot call member functions of managed classes. +## Example + The following sample generates C3175: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3176.md b/docs/error-messages/compiler-errors-2/compiler-error-c3176.md index c729636822b..fda80d05602 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3176.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3176.md @@ -10,6 +10,8 @@ ms.assetid: 6cc8d602-8e15-47a7-b1b5-e93e5d50e271 > 'type' : cannot declare local value type +## Remarks + A class can only be declared as a value type at global scope. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3179.md b/docs/error-messages/compiler-errors-2/compiler-error-c3179.md index 41ff42fa850..2540286635c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3179.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3179.md @@ -10,8 +10,12 @@ ms.assetid: 60d7e41b-25fd-48ac-8b79-830c062f4dcd > an unnamed managed or WinRT type is not allowed +## Remarks + All CLR and WinRT classes and structs must have names. +## Example + The following sample generates C3179 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3180.md b/docs/error-messages/compiler-errors-2/compiler-error-c3180.md index 10d2a51f022..c9602acccfa 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3180.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3180.md @@ -10,6 +10,8 @@ ms.assetid: 5281f583-7df7-418a-8507-d4da67ed6572 > 'type name' : name exceeds meta-data limit of 'limit' characters +## Remarks + The compiler truncated the name for a managed type in metadata. The truncation will make the type unusable with the `#using` directive (or the equivalent in another language). The type-name limit includes any namespace qualifications. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3181.md b/docs/error-messages/compiler-errors-2/compiler-error-c3181.md index 2f49d519bda..7abc923cfdd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3181.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3181.md @@ -10,10 +10,14 @@ ms.assetid: 5d450f8b-6cef-4452-a0c4-2076e967451d > 'type' : invalid operand for operator +## Remarks + An invalid parameter was passed to the [typeid](../../extensions/typeid-cpp-component-extensions.md) operator. The parameter must be a managed type. Note that the compiler uses aliases for native types that map to types in the common language runtime. +## Example + The following sample generates C3181: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3182.md b/docs/error-messages/compiler-errors-2/compiler-error-c3182.md index 671e7498dbb..5f81b0a9ea2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3182.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3182.md @@ -10,8 +10,12 @@ ms.assetid: f3681266-308e-4990-a979-8eef8920e186 > 'class' : a member using-declaration or access declaration is illegal within a managed or WinRTtype +## Remarks + A [using](../../cpp/using-declaration.md) declaration is invalid within all forms of managed classes. +## Example + The following sample generates C3182 and shows how to fix it. ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3183.md b/docs/error-messages/compiler-errors-2/compiler-error-c3183.md index 9671cafe292..f17d2a52d57 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3183.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3183.md @@ -10,8 +10,12 @@ ms.assetid: dbd0f020-c739-43c9-947e-9ce21537331b > cannot define unnamed class, struct or union inside of managed or WinRT type 'type' +## Remarks + A type that is embedded in a managed or WinRT type must be named. +## Example + The following sample generates C3183: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3185.md b/docs/error-messages/compiler-errors-2/compiler-error-c3185.md index 2707c1c2e11..8b70e19e327 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3185.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3185.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C3185"] > 'typeid' used on managed or WinRT type 'type', use 'operator' instead +## Remarks + You cannot apply the [typeid](../../cpp/typeid-operator.md) operator to a managed or WinRT type; use [typeid](../../extensions/typeid-cpp-component-extensions.md) instead. +## Example + The following sample generates C3185 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3189.md b/docs/error-messages/compiler-errors-2/compiler-error-c3189.md index 6197c274ae7..4772b5d19bf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3189.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3189.md @@ -10,10 +10,14 @@ ms.assetid: b254de79-931e-4a59-a9f4-1c690d90ca5e > 'typeid\': this syntax is no longer supported, use ::typeid instead +## Remarks + An obsolete form of [typeid](../../extensions/typeid-cpp-component-extensions.md) was used, use the new form. This error is obsolete in Visual Studio 2022 and later versions. +## Example + The following sample generates C3189: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3190.md b/docs/error-messages/compiler-errors-2/compiler-error-c3190.md index 38205552a70..5692d8f5826 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3190.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3190.md @@ -10,8 +10,12 @@ ms.assetid: 7c701afa-85a7-4f7a-8881-0662436ac244 > 'instantiation' with the provided template arguments is not the explicit instantiation of any member function of 'type' +## Remarks + The compiler detected an attempt to make an explicit function instantiation; however, the provided type arguments do not match any of the possible functions. +## Example + The following sample generates C3190: ```cpp From a302c74ea71a1bae855726ede7cf574bd4014301 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 15 Aug 2025 17:14:09 +0800 Subject: [PATCH 1422/2255] Replace term "sample" with "example" for error references in range [C3161, C3190] --- docs/error-messages/compiler-errors-2/compiler-error-c3161.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3162.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3163.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3168.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3174.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3175.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3176.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3179.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3181.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3182.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3183.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3185.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3189.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3190.md | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3161.md b/docs/error-messages/compiler-errors-2/compiler-error-c3161.md index 564664f7420..10778f1ef23 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3161.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3161.md @@ -16,7 +16,7 @@ An [__interface](../../cpp/interface.md) can only appear at global scope or with ## Example -The following sample generates C3161. +The following example generates C3161. ```cpp // C3161.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3162.md b/docs/error-messages/compiler-errors-2/compiler-error-c3162.md index 1bb409fb67d..a1b5f9b3336 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3162.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3162.md @@ -24,7 +24,7 @@ For more information, see, ## Example -The following sample generates C3162. +The following example generates C3162. ```cpp // C3162.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3163.md b/docs/error-messages/compiler-errors-2/compiler-error-c3163.md index 21303a4e941..a35735663e7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3163.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3163.md @@ -20,7 +20,7 @@ A possible cause of the C3163 error involves the Microsoft source code annotatio ## Example -The following sample generates C3163. +The following example generates C3163. ```cpp // C3163.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3168.md b/docs/error-messages/compiler-errors-2/compiler-error-c3168.md index 325b4e3f236..2a3b2813980 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3168.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3168.md @@ -16,7 +16,7 @@ The underlying type you specified for the **`enum`** type was not valid. The und ## Example -The following sample generates C3168: +The following example generates C3168: ```cpp // C3168.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3174.md b/docs/error-messages/compiler-errors-2/compiler-error-c3174.md index 0d8d2e05fcd..8fec7b9d121 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3174.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3174.md @@ -16,7 +16,7 @@ A program that uses Visual C++ attributes did not also use the [module](../../wi ## Example -The following sample generates C3174: +The following example generates C3174: ```cpp // C3174.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3175.md b/docs/error-messages/compiler-errors-2/compiler-error-c3175.md index 486f6c8e80d..4b0b44fa107 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3175.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3175.md @@ -16,7 +16,7 @@ Unmanaged functions cannot call member functions of managed classes. ## Example -The following sample generates C3175: +The following example generates C3175: ```cpp // C3175_2.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3176.md b/docs/error-messages/compiler-errors-2/compiler-error-c3176.md index fda80d05602..7b20e76e179 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3176.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3176.md @@ -16,7 +16,7 @@ A class can only be declared as a value type at global scope. ## Example -The following sample generates C3176. +The following example generates C3176. ```cpp // C3176.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3179.md b/docs/error-messages/compiler-errors-2/compiler-error-c3179.md index 2540286635c..b00a22d016a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3179.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3179.md @@ -16,7 +16,7 @@ All CLR and WinRT classes and structs must have names. ## Example -The following sample generates C3179 and shows how to fix it: +The following example generates C3179 and shows how to fix it: ```cpp // C3179a.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3181.md b/docs/error-messages/compiler-errors-2/compiler-error-c3181.md index 7abc923cfdd..d19b6a85722 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3181.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3181.md @@ -18,7 +18,7 @@ Note that the compiler uses aliases for native types that map to types in the co ## Example -The following sample generates C3181: +The following example generates C3181: ```cpp // C3181a.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3182.md b/docs/error-messages/compiler-errors-2/compiler-error-c3182.md index 5f81b0a9ea2..59016f61e42 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3182.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3182.md @@ -16,7 +16,7 @@ A [using](../../cpp/using-declaration.md) declaration is invalid within all form ## Example -The following sample generates C3182 and shows how to fix it. +The following example generates C3182 and shows how to fix it. ```cpp // C3182a.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3183.md b/docs/error-messages/compiler-errors-2/compiler-error-c3183.md index f17d2a52d57..022f2013a9a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3183.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3183.md @@ -16,7 +16,7 @@ A type that is embedded in a managed or WinRT type must be named. ## Example -The following sample generates C3183: +The following example generates C3183: ```cpp // C3183a.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3185.md b/docs/error-messages/compiler-errors-2/compiler-error-c3185.md index 8b70e19e327..a4b6c832e37 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3185.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3185.md @@ -15,7 +15,7 @@ You cannot apply the [typeid](../../cpp/typeid-operator.md) operator to a manage ## Example -The following sample generates C3185 and shows how to fix it: +The following example generates C3185 and shows how to fix it: ```cpp // C3185a.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3189.md b/docs/error-messages/compiler-errors-2/compiler-error-c3189.md index 4772b5d19bf..7cd9b8cd37b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3189.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3189.md @@ -18,7 +18,7 @@ This error is obsolete in Visual Studio 2022 and later versions. ## Example -The following sample generates C3189: +The following example generates C3189: ```cpp // C3189.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3190.md b/docs/error-messages/compiler-errors-2/compiler-error-c3190.md index 5692d8f5826..854f5bec399 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3190.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3190.md @@ -16,7 +16,7 @@ The compiler detected an attempt to make an explicit function instantiation; how ## Example -The following sample generates C3190: +The following example generates C3190: ```cpp // C3190.cpp From 16c1bb85e14a4e0f7cd1fb0a6b97b3957adabc63 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 15 Aug 2025 17:17:33 +0800 Subject: [PATCH 1423/2255] Update metadata for error references in range [C3161, C3190] --- .../error-messages/compiler-errors-2/compiler-error-c3161.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3162.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3163.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3166.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3167.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3168.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3170.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3171.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3172.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3173.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3174.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3175.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3176.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3179.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3180.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3181.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3182.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3183.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3189.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3190.md | 5 ++--- 20 files changed, 40 insertions(+), 60 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3161.md b/docs/error-messages/compiler-errors-2/compiler-error-c3161.md index 10778f1ef23..f462c3b2494 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3161.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3161.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3161" title: "Compiler Error C3161" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3161" +ms.date: 11/04/2016 f1_keywords: ["C3161"] helpviewer_keywords: ["C3161"] -ms.assetid: 1fe2be85-a343-487b-8476-bf9e257eb29d --- # Compiler Error C3161 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3162.md b/docs/error-messages/compiler-errors-2/compiler-error-c3162.md index a1b5f9b3336..8823e0e12ec 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3162.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3162.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3162" title: "Compiler Error C3162" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3162" +ms.date: 11/04/2016 f1_keywords: ["C3162"] helpviewer_keywords: ["C3162"] -ms.assetid: 0d4c4a24-1456-4191-b7d8-c38cb7b17c32 --- # Compiler Error C3162 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3163.md b/docs/error-messages/compiler-errors-2/compiler-error-c3163.md index a35735663e7..f8d07d28b1b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3163.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3163.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3163" title: "Compiler Error C3163" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3163" +ms.date: 11/04/2016 f1_keywords: ["C3163"] helpviewer_keywords: ["C3163"] -ms.assetid: 17dcafa3-f416-4e04-a232-f9569218ba75 --- # Compiler Error C3163 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3166.md b/docs/error-messages/compiler-errors-2/compiler-error-c3166.md index 557ea5648e0..4c7d4cdb3f7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3166.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3166.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3166" title: "Compiler Error C3166" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3166" +ms.date: 11/04/2016 f1_keywords: ["C3166"] helpviewer_keywords: ["C3166"] -ms.assetid: ec3e330d-c15d-4158-8268-09101486c566 --- # Compiler Error C3166 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3167.md b/docs/error-messages/compiler-errors-2/compiler-error-c3167.md index 28e910770ae..62b80984084 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3167.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3167.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3167" title: "Compiler Error C3167" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3167" +ms.date: 11/04/2016 f1_keywords: ["C3167"] helpviewer_keywords: ["C3167"] -ms.assetid: 58c25fe7-8562-4a18-ad3f-487f081ff173 --- # Compiler Error C3167 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3168.md b/docs/error-messages/compiler-errors-2/compiler-error-c3168.md index 2a3b2813980..fe5c27dd2ce 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3168.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3168.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3168" title: "Compiler Error C3168" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3168" +ms.date: 11/04/2016 f1_keywords: ["C3168"] helpviewer_keywords: ["C3168"] -ms.assetid: 4c36fcfb-c351-48ff-b4eb-78d2aa1b4d55 --- # Compiler Error C3168 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3170.md b/docs/error-messages/compiler-errors-2/compiler-error-c3170.md index faa2901e65a..5613a0ec2d4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3170.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3170.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3170" title: "Compiler Error C3170" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3170" +ms.date: 11/04/2016 f1_keywords: ["C3170"] helpviewer_keywords: ["C3170"] -ms.assetid: ca9a59d6-7df3-42f0-b028-c09d0af3ac2a --- # Compiler Error C3170 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3171.md b/docs/error-messages/compiler-errors-2/compiler-error-c3171.md index 77238ce11aa..63f770be44f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3171.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3171.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3171" title: "Compiler Error C3171" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3171" +ms.date: 11/04/2016 f1_keywords: ["C3171"] helpviewer_keywords: ["C3171"] -ms.assetid: 1ce26997-7ef1-4c9f-84da-003ea1a4251e --- # Compiler Error C3171 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3172.md b/docs/error-messages/compiler-errors-2/compiler-error-c3172.md index 574b5de0abc..5bcbd0ef9ef 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3172.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3172.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3172" title: "Compiler Error C3172" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3172" +ms.date: 11/04/2016 f1_keywords: ["C3172"] helpviewer_keywords: ["C3172"] -ms.assetid: 1834e2fd-6036-4c33-aff2-b51bc7c99441 --- # Compiler Error C3172 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3173.md b/docs/error-messages/compiler-errors-2/compiler-error-c3173.md index a981f2b87bf..39d61590982 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3173.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3173.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3173" title: "Compiler Error C3173" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3173" +ms.date: 11/04/2016 f1_keywords: ["C3173"] helpviewer_keywords: ["C3173"] -ms.assetid: edf79e10-e8cf-4f76-8d33-ab9d05e974e9 --- # Compiler Error C3173 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3174.md b/docs/error-messages/compiler-errors-2/compiler-error-c3174.md index 8fec7b9d121..c73157a2997 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3174.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3174.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3174" title: "Compiler Error C3174" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3174" +ms.date: 11/04/2016 f1_keywords: ["C3174"] helpviewer_keywords: ["C3174"] -ms.assetid: fe6b3b5a-8196-485f-a45f-0b2e51df4086 --- # Compiler Error C3174 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3175.md b/docs/error-messages/compiler-errors-2/compiler-error-c3175.md index 4b0b44fa107..8cce6182a2d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3175.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3175.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3175" title: "Compiler Error C3175" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3175" +ms.date: 11/04/2016 f1_keywords: ["C3175"] helpviewer_keywords: ["C3175"] -ms.assetid: 3f19d513-a05a-4b6c-806f-276fe5c36b90 --- # Compiler Error C3175 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3176.md b/docs/error-messages/compiler-errors-2/compiler-error-c3176.md index 7b20e76e179..dac1b4f9bdc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3176.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3176.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3176" title: "Compiler Error C3176" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3176" +ms.date: 11/04/2016 f1_keywords: ["C3176"] helpviewer_keywords: ["C3176"] -ms.assetid: 6cc8d602-8e15-47a7-b1b5-e93e5d50e271 --- # Compiler Error C3176 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3179.md b/docs/error-messages/compiler-errors-2/compiler-error-c3179.md index b00a22d016a..20752c024d2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3179.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3179.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3179" title: "Compiler Error C3179" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3179" +ms.date: 11/04/2016 f1_keywords: ["C3179"] helpviewer_keywords: ["C3179"] -ms.assetid: 60d7e41b-25fd-48ac-8b79-830c062f4dcd --- # Compiler Error C3179 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3180.md b/docs/error-messages/compiler-errors-2/compiler-error-c3180.md index c9602acccfa..c5e39e638b9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3180.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3180.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3180" title: "Compiler Error C3180" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3180" +ms.date: 11/04/2016 f1_keywords: ["C3180"] helpviewer_keywords: ["C3180"] -ms.assetid: 5281f583-7df7-418a-8507-d4da67ed6572 --- # Compiler Error C3180 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3181.md b/docs/error-messages/compiler-errors-2/compiler-error-c3181.md index d19b6a85722..4c71262029e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3181.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3181.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3181" title: "Compiler Error C3181" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3181" +ms.date: 11/04/2016 f1_keywords: ["C3181"] helpviewer_keywords: ["C3181"] -ms.assetid: 5d450f8b-6cef-4452-a0c4-2076e967451d --- # Compiler Error C3181 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3182.md b/docs/error-messages/compiler-errors-2/compiler-error-c3182.md index 59016f61e42..56822448225 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3182.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3182.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3182" title: "Compiler Error C3182" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3182" +ms.date: 11/04/2016 f1_keywords: ["C3182"] helpviewer_keywords: ["C3182"] -ms.assetid: f3681266-308e-4990-a979-8eef8920e186 --- # Compiler Error C3182 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3183.md b/docs/error-messages/compiler-errors-2/compiler-error-c3183.md index 022f2013a9a..c23ae7054a4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3183.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3183.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3183" title: "Compiler Error C3183" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3183" +ms.date: 11/04/2016 f1_keywords: ["C3183"] helpviewer_keywords: ["C3183"] -ms.assetid: dbd0f020-c739-43c9-947e-9ce21537331b --- # Compiler Error C3183 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3189.md b/docs/error-messages/compiler-errors-2/compiler-error-c3189.md index 7cd9b8cd37b..90248e75159 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3189.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3189.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3189" title: "Compiler Error C3189" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3189" +ms.date: 11/04/2016 f1_keywords: ["C3189"] helpviewer_keywords: ["C3189"] -ms.assetid: b254de79-931e-4a59-a9f4-1c690d90ca5e --- # Compiler Error C3189 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3190.md b/docs/error-messages/compiler-errors-2/compiler-error-c3190.md index 854f5bec399..3b55ad91f4e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3190.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3190.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3190" title: "Compiler Error C3190" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3190" +ms.date: 11/04/2016 f1_keywords: ["C3190"] helpviewer_keywords: ["C3190"] -ms.assetid: 7c701afa-85a7-4f7a-8881-0662436ac244 --- # Compiler Error C3190 From 086bbd4cebf877c8d7151ecec37de9bd5e7dae7c Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 15 Aug 2025 17:57:48 +0800 Subject: [PATCH 1424/2255] Clean up dedents in standard library references --- docs/standard-library/allocator-class.md | 4 +- .../back-insert-iterator-class.md | 16 +++---- docs/standard-library/basic-string-class.md | 2 +- docs/standard-library/deque-class.md | 4 +- .../front-insert-iterator-class.md | 12 +++--- .../standard-library/insert-iterator-class.md | 6 +-- .../istreambuf-iterator-class.md | 2 +- docs/standard-library/less-struct.md | 4 +- docs/standard-library/list-class.md | 6 +-- docs/standard-library/locale-functions.md | 7 ++-- .../ostream-iterator-class.md | 22 +++++----- .../ostreambuf-iterator-class.md | 42 +++++++++---------- .../raw-storage-iterator-class.md | 4 +- docs/standard-library/shared-mutex.md | 4 +- 14 files changed, 68 insertions(+), 67 deletions(-) diff --git a/docs/standard-library/allocator-class.md b/docs/standard-library/allocator-class.md index 86e07e0e632..a30a09460cc 100644 --- a/docs/standard-library/allocator-class.md +++ b/docs/standard-library/allocator-class.md @@ -396,7 +396,7 @@ int main( ) // vcref = 150; // but the value of the first element could be modified through // its nonconst iterator and the const reference would remain valid -*vfIter = 175; + *vfIter = 175; cout << "The value of the element referred to by vcref," <<"\n after nofication through its nonconst iterator, is: " << vcref << "." << endl; @@ -1024,7 +1024,7 @@ int main( ) vfIter = v.begin( ); allocator::value_type vecVal = 150.0; -*vfIter = vecVal; + *vfIter = vecVal; cout << "The value of the element addressed by vfIter is: " << *vfIter << ",\n the first element in the vector." << endl; diff --git a/docs/standard-library/back-insert-iterator-class.md b/docs/standard-library/back-insert-iterator-class.md index 41038cc72eb..9f6d41f8159 100644 --- a/docs/standard-library/back-insert-iterator-class.md +++ b/docs/standard-library/back-insert-iterator-class.md @@ -103,9 +103,9 @@ int main( ) // Alternatively, insertions can be done with template function back_insert_iterator > backiter ( vec ); -*backiter = 600; + *backiter = 600; backiter++; -*backiter = 700; + *backiter = 700; cout << "After the insertions, the vector vec is: ( "; for ( vIter = vec.begin ( ) ; vIter != vec.end ( ); vIter++) @@ -216,9 +216,9 @@ int main( ) cout << ")." << endl; back_insert_iterator > backiter ( vec ); -*backiter = 10; + *backiter = 10; backiter++; // Increment to the next element -*backiter = 20; + *backiter = 20; backiter++; cout << "After the insertions, the vector vec becomes: ( "; @@ -277,9 +277,9 @@ int main( ) cout << ")." << endl; back_insert_iterator > backiter ( vec ); -*backiter = 30; + *backiter = 30; backiter++; // Increment to the next element -*backiter = 40; + *backiter = 40; backiter++; cout << "After the insertions, the vector vec becomes: ( "; @@ -349,9 +349,9 @@ int main( ) cout << ")." << endl; back_insert_iterator > backiter ( vec ); -*backiter = 10; + *backiter = 10; backiter++; // Increment to the next element -*backiter = 20; + *backiter = 20; backiter++; cout << "After the insertions, the vector vec becomes: ( "; diff --git a/docs/standard-library/basic-string-class.md b/docs/standard-library/basic-string-class.md index 4cfe39831e2..ee5a92355ad 100644 --- a/docs/standard-library/basic-string-class.md +++ b/docs/standard-library/basic-string-class.md @@ -760,7 +760,7 @@ int main( ) { cout << "The full original string str1 is: " << str1 << endl; // The dereferenced iterator can be used to modify a character -*str1_Iter = 'G'; + *str1_Iter = 'G'; cout << "The first character of the modified str1 is now: " << *str1_Iter << endl; cout << "The full modified string str1 is now: " << str1 << endl; diff --git a/docs/standard-library/deque-class.md b/docs/standard-library/deque-class.md index 8e82314f40c..f7921cd41eb 100644 --- a/docs/standard-library/deque-class.md +++ b/docs/standard-library/deque-class.md @@ -354,7 +354,7 @@ int main( ) c1_Iter = c1.begin( ); cout << "The first element of c1 is " << *c1_Iter << endl; -*c1_Iter = 20; + *c1_Iter = 20; c1_Iter = c1.begin( ); cout << "The first element of c1 is now " << *c1_Iter << endl; @@ -1604,7 +1604,7 @@ template struct S { MyDeque::const_iterator iter; for (iter = d.cbegin(); iter != d.cend(); iter++) cout << *iter << " "; -cout << " via unnamed rvalue reference " << endl; + cout << " via unnamed rvalue reference " << endl; } }; diff --git a/docs/standard-library/front-insert-iterator-class.md b/docs/standard-library/front-insert-iterator-class.md index 3ca56a1eb32..bce621b13b3 100644 --- a/docs/standard-library/front-insert-iterator-class.md +++ b/docs/standard-library/front-insert-iterator-class.md @@ -254,11 +254,11 @@ int main( ) list L1; front_insert_iterator > iter ( L1 ); -*iter = 10; + *iter = 10; iter++; -*iter = 20; + *iter = 20; iter++; -*iter = 30; + *iter = 30; iter++; list ::iterator vIter; @@ -316,11 +316,11 @@ int main( ) list L1; front_insert_iterator > iter ( L1 ); -*iter = 10; + *iter = 10; iter++; -*iter = 20; + *iter = 20; iter++; -*iter = 30; + *iter = 30; iter++; list ::iterator vIter; diff --git a/docs/standard-library/insert-iterator-class.md b/docs/standard-library/insert-iterator-class.md index 6932e17a30f..591880c48df 100644 --- a/docs/standard-library/insert-iterator-class.md +++ b/docs/standard-library/insert-iterator-class.md @@ -267,11 +267,11 @@ int main( ) cout << ")." << endl; insert_iterator > ii ( vec, vec.begin ( ) ); -*ii = 30; + *ii = 30; ii++; -*ii = 40; + *ii = 40; ii++; -*ii = 50; + *ii = 50; cout << "After the insertions, the vector vec becomes:\n ( "; for ( vIter = vec.begin ( ) ; vIter != vec.end ( ); vIter++ ) diff --git a/docs/standard-library/istreambuf-iterator-class.md b/docs/standard-library/istreambuf-iterator-class.md index 9b05304ed12..713a31c2912 100644 --- a/docs/standard-library/istreambuf-iterator-class.md +++ b/docs/standard-library/istreambuf-iterator-class.md @@ -341,7 +341,7 @@ int main( ) ostreambuf_iterator outpos ( cout ); while ( inpos != endpos ) { -*outpos = *inpos; + *outpos = *inpos; ++inpos; //Increment istreambuf_iterator ++outpos; } diff --git a/docs/standard-library/less-struct.md b/docs/standard-library/less-struct.md index 380355a2562..e16685ec94f 100644 --- a/docs/standard-library/less-struct.md +++ b/docs/standard-library/less-struct.md @@ -80,7 +80,7 @@ int main() { cout << "Original vector v1 = ( " ; for ( Iter1 = v1.begin() ; Iter1 != v1.end() ; Iter1++ ) -cout << Iter1->m_i << " "; + cout << Iter1->m_i << " "; cout << ")" << endl; // To sort in ascending order, @@ -88,7 +88,7 @@ cout << Iter1->m_i << " "; cout << "Sorted vector v1 = ( " ; for ( Iter1 = v1.begin() ; Iter1 != v1.end() ; Iter1++ ) -cout << Iter1->m_i << " "; + cout << Iter1->m_i << " "; cout << ")" << endl; } ``` diff --git a/docs/standard-library/list-class.md b/docs/standard-library/list-class.md index 3e8d6dbc987..f73b108a79b 100644 --- a/docs/standard-library/list-class.md +++ b/docs/standard-library/list-class.md @@ -303,7 +303,7 @@ int main( ) c1_Iter = c1.begin( ); cout << "The first element of c1 is " << *c1_Iter << endl; -*c1_Iter = 20; + *c1_Iter = 20; c1_Iter = c1.begin( ); cout << "The first element of c1 is now " << *c1_Iter << endl; @@ -851,7 +851,7 @@ int main( ) cout << "The last integer of c1 is " << *c1_Iter << endl; c1_Iter--; -*c1_Iter = 400; + *c1_Iter = 400; cout << "The new next-to-last integer of c1 is " << *c1_Iter << endl; @@ -1754,7 +1754,7 @@ int main( ) cout << endl; c1_rIter = c1.rbegin( ); -*c1_rIter = 40; + *c1_rIter = 40; cout << "The last element in the list is now " << *c1_rIter << "." << endl; } ``` diff --git a/docs/standard-library/locale-functions.md b/docs/standard-library/locale-functions.md index 98ff04ced77..5a616e7085a 100644 --- a/docs/standard-library/locale-functions.md +++ b/docs/standard-library/locale-functions.md @@ -903,9 +903,10 @@ int main( ) { locale loc1 ( "German_Germany" ), loc2 ( "English_Australia" ); bool result1 = use_facet > ( loc1 ).is( - ctype_base::alpha, 'a' -); - bool result2 = use_facet > ( loc2 ).is( ctype_base::alpha, '!' + ctype_base::alpha, 'a' + ); + bool result2 = use_facet > ( loc2 ).is( + ctype_base::alpha, '!' ); if ( result1 ) diff --git a/docs/standard-library/ostream-iterator-class.md b/docs/standard-library/ostream-iterator-class.md index de3f56cd39c..c31709bbd4d 100644 --- a/docs/standard-library/ostream-iterator-class.md +++ b/docs/standard-library/ostream-iterator-class.md @@ -145,10 +145,10 @@ int main( ) // Standard iterator interface for writing // elements to the output stream cout << "Elements written to output stream:" << endl; -*intOut = 10; + *intOut = 10; intOut++; // No effect on iterator position -*intOut = 20; -*intOut = 30; + *intOut = 20; + *intOut = 30; } /* Output: Elements written to output stream: @@ -195,10 +195,10 @@ int main( ) // standard iterator interface for writing // elements to the output stream cout << "Elements written to output stream:" << endl; -*intOut = 10; + *intOut = 10; intOut++; // No effect on iterator position -*intOut = 20; -*intOut = 30; + *intOut = 20; + *intOut = 30; } /* Output: Elements written to output stream: @@ -249,10 +249,10 @@ int main( ) // Standard iterator interface for writing // elements to the output stream cout << "Elements written to output stream:" << endl; -*intOut = 10; + *intOut = 10; intOut++; // No effect on iterator position -*intOut = 20; -*intOut = 30; + *intOut = 20; + *intOut = 30; } /* Output: Elements written to output stream: @@ -304,9 +304,9 @@ int main( ) // ostream_iterator for stream cout ostream_iterator intOut ( cout , "\n" ); -*intOut = 10; + *intOut = 10; intOut++; -*intOut = 20; + *intOut = 20; intOut++; int i; diff --git a/docs/standard-library/ostreambuf-iterator-class.md b/docs/standard-library/ostreambuf-iterator-class.md index dea0af412dd..f9c61ad7a49 100644 --- a/docs/standard-library/ostreambuf-iterator-class.md +++ b/docs/standard-library/ostreambuf-iterator-class.md @@ -99,11 +99,11 @@ int main( ) // elements to the output streambuf: cout << "The characters written to the output stream\n" << " by charOutBuf are: "; -*charOutBuf = 'O'; + *charOutBuf = 'O'; charOutBuf++; -*charOutBuf = 'U'; + *charOutBuf = 'U'; charOutBuf++; -*charOutBuf = 'T'; + *charOutBuf = 'T'; charOutBuf++; cout << "." << endl; } @@ -145,11 +145,11 @@ int main( ) // ostreambuf_iterator for stream cout ostreambuf_iterator charOut ( cout ); -*charOut = 'a'; + *charOut = 'a'; charOut ++; -*charOut = 'b'; + *charOut = 'b'; charOut ++; -*charOut = 'c'; + *charOut = 'c'; cout << " are characters output individually." << endl; bool b1 = charOut.failed ( ); @@ -200,10 +200,10 @@ int main( ) // Standard iterator interface for writing // elements to the output stream cout << "Elements written to output stream:" << endl; -*charOutBuf = 'O'; + *charOutBuf = 'O'; charOutBuf++; // no effect on iterator position -*charOutBuf = 'U'; -*charOutBuf = 'T'; + *charOutBuf = 'U'; + *charOutBuf = 'T'; } /* Output: Elements written to output stream: @@ -248,10 +248,10 @@ int main( ) // Standard iterator interface for writing // elements to the output stream cout << "Elements written to output stream:" << endl; -*charOutBuf = 'O'; + *charOutBuf = 'O'; charOutBuf++; // No effect on iterator position -*charOutBuf = 'U'; -*charOutBuf = 'T'; + *charOutBuf = 'U'; + *charOutBuf = 'T'; } /* Output: Elements written to output stream: @@ -300,10 +300,10 @@ int main( ) // Standard iterator interface for writing // elements to the output stream cout << "Elements written to output stream:" << endl; -*charOutBuf = 'O'; + *charOutBuf = 'O'; charOutBuf++; // No effect on iterator position -*charOutBuf = 'U'; -*charOutBuf = 'T'; + *charOutBuf = 'U'; + *charOutBuf = 'T'; } /* Output: Elements written to output stream: @@ -350,11 +350,11 @@ int main( ) // ostreambuf_iterator for stream cout ostreambuf_iterator charOut ( cout ); -*charOut = 'O'; + *charOut = 'O'; charOut ++; -*charOut = 'U'; + *charOut = 'U'; charOut ++; -*charOut = 'T'; + *charOut = 'T'; cout << " are characters output individually." << endl; ostreambuf_iterator strOut ( cout ); @@ -435,11 +435,11 @@ int main( ) // elements to the output streambuf: cout << "The characters written to the output stream\n" << " by charOutBuf are: "; -*charOutBuf = 'O'; + *charOutBuf = 'O'; charOutBuf++; -*charOutBuf = 'U'; + *charOutBuf = 'U'; charOutBuf++; -*charOutBuf = 'T'; + *charOutBuf = 'T'; charOutBuf++; cout << "." << endl; } diff --git a/docs/standard-library/raw-storage-iterator-class.md b/docs/standard-library/raw-storage-iterator-class.md index 195b79a1f60..e4efd88df18 100644 --- a/docs/standard-library/raw-storage-iterator-class.md +++ b/docs/standard-library/raw-storage-iterator-class.md @@ -134,9 +134,9 @@ int main( void) { Int *pInt = ( Int* ) malloc( sizeof( Int ) ); memset( pInt, 0, sizeof( Int ) ); // Set bIsConstructed to false; -*pInt = 5; + *pInt = 5; raw_storage_iterator< Int*, Int > it( pInt ); -*it = 5; + *it = 5; } ``` diff --git a/docs/standard-library/shared-mutex.md b/docs/standard-library/shared-mutex.md index 4506e8bb917..5349ffb70bc 100644 --- a/docs/standard-library/shared-mutex.md +++ b/docs/standard-library/shared-mutex.md @@ -28,9 +28,9 @@ namespace std { class shared_mutex; class shared_timed_mutex; template -class shared_lock; + class shared_lock; template -void swap(shared_lock& x, shared_lock& y) noexcept; + void swap(shared_lock& x, shared_lock& y) noexcept; } ``` From 14c3b8b00618e1b5bf675a54c75d47f9317d1002 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 15 Aug 2025 18:03:57 +0800 Subject: [PATCH 1425/2255] Update metadata in 10 standard library topics --- docs/standard-library/allocator-class.md | 5 ++--- docs/standard-library/back-insert-iterator-class.md | 3 +-- docs/standard-library/deque-class.md | 2 +- docs/standard-library/front-insert-iterator-class.md | 3 +-- docs/standard-library/istreambuf-iterator-class.md | 3 +-- docs/standard-library/less-struct.md | 5 ++--- docs/standard-library/list-class.md | 5 ++--- docs/standard-library/ostream-iterator-class.md | 3 +-- docs/standard-library/ostreambuf-iterator-class.md | 5 ++--- docs/standard-library/shared-mutex.md | 5 ++--- 10 files changed, 15 insertions(+), 24 deletions(-) diff --git a/docs/standard-library/allocator-class.md b/docs/standard-library/allocator-class.md index a30a09460cc..8c090dd434b 100644 --- a/docs/standard-library/allocator-class.md +++ b/docs/standard-library/allocator-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: allocator Class" title: "allocator Class" -ms.date: "11/04/2016" +description: "Learn more about: allocator Class" +ms.date: 11/04/2016 f1_keywords: ["memory/std::allocator", "memory/std::allocator::const_pointer", "memory/std::allocator::const_reference", "memory/std::allocator::difference_type", "memory/std::allocator::pointer", "memory/std::allocator::reference", "memory/std::allocator::size_type", "memory/std::allocator::value_type", "memory/std::allocator::address", "memory/std::allocator::allocate", "memory/std::allocator::construct", "memory/std::allocator::deallocate", "memory/std::allocator::destroy", "memory/std::allocator::max_size", "memory/std::allocator::rebind"] helpviewer_keywords: ["std::allocator [C++]", "std::allocator [C++], const_pointer", "std::allocator [C++], const_reference", "std::allocator [C++], difference_type", "std::allocator [C++], pointer", "std::allocator [C++], reference", "std::allocator [C++], size_type", "std::allocator [C++], value_type", "std::allocator [C++], address", "std::allocator [C++], allocate", "std::allocator [C++], construct", "std::allocator [C++], deallocate", "std::allocator [C++], destroy", "std::allocator [C++], max_size", "std::allocator [C++], rebind"] -ms.assetid: 3fd58076-56cc-43bb-ad58-b4b7c9c6b410 --- # allocator Class diff --git a/docs/standard-library/back-insert-iterator-class.md b/docs/standard-library/back-insert-iterator-class.md index 9f6d41f8159..2134ccf1b15 100644 --- a/docs/standard-library/back-insert-iterator-class.md +++ b/docs/standard-library/back-insert-iterator-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: back_insert_iterator Class" title: "back_insert_iterator Class" +description: "Learn more about: back_insert_iterator Class" ms.date: 06/07/2022 f1_keywords: ["iterator/std::back_insert_iterator", "iterator/std::back_insert_iterator::container_type", "iterator/std::back_insert_iterator::reference"] helpviewer_keywords: ["std::back_insert_iterator [C++]", "std::back_insert_iterator [C++], container_type", "std::back_insert_iterator [C++], reference"] -ms.assetid: a1ee07f2-cf9f-46a1-8608-cfaf207f9713 ms.custom: devdivchpfy22 --- # back_insert_iterator Class diff --git a/docs/standard-library/deque-class.md b/docs/standard-library/deque-class.md index f7921cd41eb..775b92a2d87 100644 --- a/docs/standard-library/deque-class.md +++ b/docs/standard-library/deque-class.md @@ -1,7 +1,7 @@ --- title: "deque Class" description: "Learn more about: deque Class" -ms.date: "11/04/2016" +ms.date: 11/04/2016 f1_keywords: ["deque/std::deque", "deque/std::deque::allocator_type", "deque/std::deque::const_iterator", "deque/std::deque::const_pointer", "deque/std::deque::const_reference", "deque/std::deque::const_reverse_iterator", "deque/std::deque::difference_type", "deque/std::deque::iterator", "deque/std::deque::pointer", "deque/std::deque::reference", "deque/std::deque::reverse_iterator", "deque/std::deque::size_type", "deque/std::deque::value_type", "deque/std::deque::assign", "deque/std::deque::at", "deque/std::deque::back", "deque/std::deque::begin", "deque/std::deque::cbegin", "deque/std::deque::cend", "deque/std::deque::clear", "deque/std::deque::crbegin", "deque/std::deque::crend", "deque/std::deque::emplace", "deque/std::deque::emplace_back", "deque/std::deque::emplace_front", "deque/std::deque::empty", "deque/std::deque::end", "deque/std::deque::erase", "deque/std::deque::front", "deque/std::deque::get_allocator", "deque/std::deque::insert", "deque/std::deque::max_size", "deque/std::deque::pop_back", "deque/std::deque::pop_front", "deque/std::deque::push_back", "deque/std::deque::push_front", "deque/std::deque::rbegin", "deque/std::deque::rend", "deque/std::deque::resize", "deque/std::deque::shrink_to_fit", "deque/std::deque::size", "deque/std::deque::swap"] helpviewer_keywords: ["std::deque [C++]", "std::deque [C++], allocator_type", "std::deque [C++], const_iterator", "std::deque [C++], const_pointer", "std::deque [C++], const_reference", "std::deque [C++], const_reverse_iterator", "std::deque [C++], difference_type", "std::deque [C++], iterator", "std::deque [C++], pointer", "std::deque [C++], reference", "std::deque [C++], reverse_iterator", "std::deque [C++], size_type", "std::deque [C++], value_type", "std::deque [C++], assign", "std::deque [C++], at", "std::deque [C++], back", "std::deque [C++], begin", "std::deque [C++], cbegin", "std::deque [C++], cend", "std::deque [C++], clear", "std::deque [C++], crbegin", "std::deque [C++], crend", "std::deque [C++], emplace", "std::deque [C++], emplace_back", "std::deque [C++], emplace_front", "std::deque [C++], empty", "std::deque [C++], end", "std::deque [C++], erase", "std::deque [C++], front", "std::deque [C++], get_allocator", "std::deque [C++], insert", "std::deque [C++], max_size", "std::deque [C++], pop_back", "std::deque [C++], pop_front", "std::deque [C++], push_back", "std::deque [C++], push_front", "std::deque [C++], rbegin", "std::deque [C++], rend", "std::deque [C++], resize", "std::deque [C++], shrink_to_fit", "std::deque [C++], size", "std::deque [C++], swap"] --- diff --git a/docs/standard-library/front-insert-iterator-class.md b/docs/standard-library/front-insert-iterator-class.md index bce621b13b3..9a5859e8455 100644 --- a/docs/standard-library/front-insert-iterator-class.md +++ b/docs/standard-library/front-insert-iterator-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: front_insert_iterator Class" title: "front_insert_iterator Class" +description: "Learn more about: front_insert_iterator Class" ms.date: 06/15/2022 f1_keywords: ["iterator/std::front_insert_iterator", "iterator/std::front_insert_iterator::container_type", "iterator/std::front_insert_iterator::reference"] helpviewer_keywords: ["std::front_insert_iterator [C++]", "std::front_insert_iterator [C++], container_type", "std::front_insert_iterator [C++], reference"] -ms.assetid: a9a9c075-136a-4419-928b-c4871afa033c ms.custom: devdivchpfy22 --- diff --git a/docs/standard-library/istreambuf-iterator-class.md b/docs/standard-library/istreambuf-iterator-class.md index 713a31c2912..5cbf0e24d8d 100644 --- a/docs/standard-library/istreambuf-iterator-class.md +++ b/docs/standard-library/istreambuf-iterator-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: istreambuf_iterator Class" title: "istreambuf_iterator Class" +description: "Learn more about: istreambuf_iterator Class" ms.date: 06/15/2022 f1_keywords: ["streambuf/std::istreambuf_iterator", "iterator/std::istreambuf_iterator::char_type", "iterator/std::istreambuf_iterator::int_type", "iterator/std::istreambuf_iterator::istream_type", "iterator/std::istreambuf_iterator::streambuf_type", "iterator/std::istreambuf_iterator::traits_type", "iterator/std::istreambuf_iterator::equal"] helpviewer_keywords: ["std::istreambuf_iterator [C++]", "std::istreambuf_iterator [C++], char_type", "std::istreambuf_iterator [C++], int_type", "std::istreambuf_iterator [C++], istream_type", "std::istreambuf_iterator [C++], streambuf_type", "std::istreambuf_iterator [C++], traits_type", "std::istreambuf_iterator [C++], equal"] -ms.assetid: 39002da2-61a6-48a5-9d0c-5df8271f6038 ms.custom: devdivchpfy22 --- diff --git a/docs/standard-library/less-struct.md b/docs/standard-library/less-struct.md index e16685ec94f..d4c3d3ac567 100644 --- a/docs/standard-library/less-struct.md +++ b/docs/standard-library/less-struct.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: less Struct" title: "less Struct" -ms.date: "11/04/2016" +description: "Learn more about: less Struct" +ms.date: 11/04/2016 f1_keywords: ["functional/std::less"] helpviewer_keywords: ["less struct", "less function"] -ms.assetid: 39349da3-11cd-4774-b2cc-b46af5aae5d7 --- # less Struct diff --git a/docs/standard-library/list-class.md b/docs/standard-library/list-class.md index f73b108a79b..e2c7a17216c 100644 --- a/docs/standard-library/list-class.md +++ b/docs/standard-library/list-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: list Class" title: "list Class" -ms.date: "11/04/2016" +description: "Learn more about: list Class" +ms.date: 11/04/2016 f1_keywords: ["list/std::list", "list/std::list::allocator_type", "list/std::list::const_iterator", "list/std::list::const_pointer", "list/std::list::const_reference", "list/std::list::const_reverse_iterator", "list/std::list::difference_type", "list/std::list::iterator", "list/std::list::pointer", "list/std::list::reference", "list/std::list::reverse_iterator", "list/std::list::size_type", "list/std::list::value_type", "list/std::list::assign", "list/std::list::back", "list/std::list::begin", "list/std::list::cbegin", "list/std::list::cend", "list/std::list::clear", "list/std::list::crbegin", "list/std::list::crend", "list/std::list::emplace", "list/std::list::emplace_back", "list/std::list::emplace_front", "list/std::list::empty", "list/std::list::end", "list/std::list::erase", "list/std::list::front", "list/std::list::get_allocator", "list/std::list::insert", "list/std::list::max_size", "list/std::list::merge", "list/std::list::pop_back", "list/std::list::pop_front", "list/std::list::push_back", "list/std::list::push_front", "list/std::list::rbegin", "list/std::list::remove", "list/std::list::remove_if", "list/std::list::rend", "list/std::list::resize", "list/std::list::reverse", "list/std::list::size", "list/std::list::sort", "list/std::list::splice", "list/std::list::swap", "list/std::list::unique"] helpviewer_keywords: ["std::list [C++]", "std::list [C++], allocator_type", "std::list [C++], const_iterator", "std::list [C++], const_pointer", "std::list [C++], const_reference", "std::list [C++], const_reverse_iterator", "std::list [C++], difference_type", "std::list [C++], iterator", "std::list [C++], pointer", "std::list [C++], reference", "std::list [C++], reverse_iterator", "std::list [C++], size_type", "std::list [C++], value_type", "std::list [C++], assign", "std::list [C++], back", "std::list [C++], begin", "std::list [C++], cbegin", "std::list [C++], cend", "std::list [C++], clear", "std::list [C++], crbegin", "std::list [C++], crend", "std::list [C++], emplace", "std::list [C++], emplace_back", "std::list [C++], emplace_front", "std::list [C++], empty", "std::list [C++], end", "std::list [C++], erase", "std::list [C++], front", "std::list [C++], get_allocator", "std::list [C++], insert", "std::list [C++], max_size", "std::list [C++], merge", "std::list [C++], pop_back", "std::list [C++], pop_front", "std::list [C++], push_back", "std::list [C++], push_front", "std::list [C++], rbegin", "std::list [C++], remove", "std::list [C++], remove_if", "std::list [C++], rend", "std::list [C++], resize", "std::list [C++], reverse", "std::list [C++], size", "std::list [C++], sort", "std::list [C++], splice", "std::list [C++], swap", "std::list [C++], unique"] -ms.assetid: d3707f4a-10fd-444f-b856-f9ca2077c1cd --- # `list` Class diff --git a/docs/standard-library/ostream-iterator-class.md b/docs/standard-library/ostream-iterator-class.md index c31709bbd4d..d2fcea91de0 100644 --- a/docs/standard-library/ostream-iterator-class.md +++ b/docs/standard-library/ostream-iterator-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: ostream_iterator Class" title: "ostream_iterator Class" +description: "Learn more about: ostream_iterator Class" ms.date: 06/17/2022 f1_keywords: ["iterator/std::ostream_iterator", "iterator/std::ostream_iterator::char_type", "iterator/std::ostream_iterator::ostream_type", "iterator/std::ostream_iterator::traits_type"] helpviewer_keywords: ["std::ostream_iterator [C++]", "std::ostream_iterator [C++], char_type", "std::ostream_iterator [C++], ostream_type", "std::ostream_iterator [C++], traits_type"] -ms.assetid: 24d842d3-9f45-4bf6-a697-62f5968f5a03 ms.custom: devdivchpfy22 --- diff --git a/docs/standard-library/ostreambuf-iterator-class.md b/docs/standard-library/ostreambuf-iterator-class.md index f9c61ad7a49..d6b21df15c7 100644 --- a/docs/standard-library/ostreambuf-iterator-class.md +++ b/docs/standard-library/ostreambuf-iterator-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: ostreambuf_iterator Class" title: "ostreambuf_iterator Class" -ms.date: "11/04/2016" +description: "Learn more about: ostreambuf_iterator Class" +ms.date: 11/04/2016 f1_keywords: ["streambuf/std::ostreambuf_iterator", "iterator/std::ostreambuf_iterator::char_type", "iterator/std::ostreambuf_iterator::ostream_type", "iterator/std::ostreambuf_iterator::streambuf_type", "iterator/std::ostreambuf_iterator::traits_type", "iterator/std::ostreambuf_iterator::failed"] helpviewer_keywords: ["std::ostreambuf_iterator [C++]", "std::ostreambuf_iterator [C++], char_type", "std::ostreambuf_iterator [C++], ostream_type", "std::ostreambuf_iterator [C++], streambuf_type", "std::ostreambuf_iterator [C++], traits_type", "std::ostreambuf_iterator [C++], failed"] -ms.assetid: dad1e624-2f45-4e94-8887-a885e95f9071 --- # ostreambuf_iterator Class diff --git a/docs/standard-library/shared-mutex.md b/docs/standard-library/shared-mutex.md index 5349ffb70bc..aa70e3c56c8 100644 --- a/docs/standard-library/shared-mutex.md +++ b/docs/standard-library/shared-mutex.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: " title: "" -ms.date: "03/27/2019" +description: "Learn more about: " +ms.date: 03/27/2019 f1_keywords: ["", "shared_mutex/std::swap", "shared_mutex/std::shared_lock", "shared_mutex/std::shared_lock::shared_lock", "shared_mutex/std::shared_lock::operator=", "shared_mutex/std::shared_lock::operator =", "shared_mutex/std::shared_lock::lock", "shared_mutex/std::shared_lock::try_lock", "shared_mutex/std::shared_lock::try_lock_for", "shared_mutex/std::shared_lock::try_lock_until", "shared_mutex/std::shared_lock::unlock", "shared_mutex/std::shared_lock::swap", "shared_mutex/std::shared_lock::release", "shared_mutex/std::shared_lock::owns_lock", "shared_mutex/std::shared_lock::operator bool", "shared_mutex/std::shared_lock::mutex", "shared_mutex/std::shared_mutex", "shared_mutex/std::shared_mutex::native_handle_type", "shared_mutex/std::shared_mutex::shared_mutex", "shared_mutex/std::shared_mutex::operator=", "shared_mutex/std::shared_mutex::operator =", "shared_mutex/std::shared_mutex::lock", "shared_mutex/std::shared_mutex::try_lock", "shared_mutex/std::shared_mutex::unlock", "shared_mutex/std::shared_mutex::lock_shared", "shared_mutex/std::shared_mutex::try_lock_shared", "shared_mutex/std::shared_mutex::unlock_shared", "shared_mutex/std::shared_mutex::native_handle", "shared_mutex/std::shared_timed_mutex", "shared_mutex/std::shared_timed_mutex::shared_timed_mutex", "shared_mutex/std::shared_timed_mutex::operator=", "shared_mutex/std::shared_timed_mutex::operator =", "shared_mutex/std::shared_timed_mutex::lock", "shared_mutex/std::shared_timed_mutex::try_lock", "shared_mutex/std::shared_timed_mutex::try_lock_for", "shared_mutex/std::shared_timed_mutex::try_lock_until", "shared_mutex/std::shared_timed_mutex::unlock", "shared_mutex/std::shared_timed_mutex::lock_shared", "shared_mutex/std::shared_timed_mutex::try_lock_shared", "shared_mutex/std::shared_timed_mutex::try_lock_shared_for", "shared_mutex/std::shared_timed_mutex::try_lock_shared_until", "shared_mutex/std::shared_timed_mutex::unlock_shared"] -ms.assetid: 0b37a97d-ee5d-4050-b29f-09db9f76beb3 --- # `` From 42c6096bdaef8f884aa6aa624cceffb56981d621 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 15 Aug 2025 23:00:07 +0800 Subject: [PATCH 1426/2255] Add blockquotes for error messages in range [C3191, C3220] --- docs/error-messages/compiler-errors-2/compiler-error-c3192.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3194.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3195.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3196.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3197.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3198.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3199.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3200.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3201.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3202.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3203.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3204.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3205.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3206.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3207.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3208.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3209.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3210.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3211.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3212.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3213.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3214.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3215.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3216.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3217.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3218.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3219.md | 2 +- 27 files changed, 27 insertions(+), 27 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3192.md b/docs/error-messages/compiler-errors-2/compiler-error-c3192.md index b9e9dd8a921..ce19145c97f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3192.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3192.md @@ -8,7 +8,7 @@ ms.assetid: 8b0083d4-706f-46f6-858a-e1d9af464cf8 --- # Compiler Error C3192 -syntax error : '^' is not a prefix operator (did you mean '*'?) +> syntax error : '^' is not a prefix operator (did you mean '*'?) A handle cannot be used as a dereference operator. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3194.md b/docs/error-messages/compiler-errors-2/compiler-error-c3194.md index a33d63090f6..22442f746ea 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3194.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3194.md @@ -8,7 +8,7 @@ ms.assetid: 49d3ffc6-eff6-4b46-865b-18811692a8bb --- # Compiler Error C3194 -'member' : a value-type cannot have an assignment operator +> 'member' : a value-type cannot have an assignment operator Special member functions that require automatic invocation by the compiler, such as a copy constructor or copy assignment operator are not supported within a value class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3195.md b/docs/error-messages/compiler-errors-2/compiler-error-c3195.md index 415527ec2dd..bf9a019b50c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3195.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3195.md @@ -8,7 +8,7 @@ ms.assetid: 97e4f681-812b-49e8-ba57-24b7817e3cd8 --- # Compiler Error C3195 -'operator' : is reserved and cannot be used as a member of a ref class or value type. CLR or WinRT operators must be defined using the 'operator' keyword +> 'operator' : is reserved and cannot be used as a member of a ref class or value type. CLR or WinRT operators must be defined using the 'operator' keyword The compiler detected an operator definition using the Managed Extensions for C++ syntax. You must use the C++ syntax for operators. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3196.md b/docs/error-messages/compiler-errors-2/compiler-error-c3196.md index 38cf9afdc32..f170f5fe184 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3196.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3196.md @@ -8,7 +8,7 @@ ms.assetid: d9c38a13-191d-472d-aa2b-f61a6459d16c --- # Compiler Error C3196 -'keyword' : used more than once +> 'keyword' : used more than once A keyword was used more than once. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3197.md b/docs/error-messages/compiler-errors-2/compiler-error-c3197.md index b5153e95918..552a1f5cca4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3197.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3197.md @@ -8,7 +8,7 @@ ms.assetid: 4e385c3b-222e-425c-9612-46e83ed41650 --- # Compiler Error C3197 -'keyword' : can only be used in definitions +> 'keyword' : can only be used in definitions A keyword was used in a declaration but is only valid in a definition. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3198.md b/docs/error-messages/compiler-errors-2/compiler-error-c3198.md index d853ab33b43..a71bb3fed5f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3198.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3198.md @@ -8,7 +8,7 @@ ms.assetid: ec4ecf61-0067-4aa4-b443-a91013a1e59d --- # Compiler Error C3198 -invalid use of floating-point pragmas: fenv_access pragma operates only in precise mode +> invalid use of floating-point pragmas: fenv_access pragma operates only in precise mode [fenv_access](../../preprocessor/fenv-access.md) pragma was used under an [/fp](../../build/reference/fp-specify-floating-point-behavior.md) setting other than **/fp:precise**. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3199.md b/docs/error-messages/compiler-errors-2/compiler-error-c3199.md index 724e71a9f0d..7d7be74a98a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3199.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3199.md @@ -8,7 +8,7 @@ ms.assetid: e7a478d3-115a-40a3-991b-c7454fd2e28e --- # Compiler Error C3199 -invalid use of floating-point pragmas: exceptions are not supported in non-precise mode +> invalid use of floating-point pragmas: exceptions are not supported in non-precise mode The [float_control](../../preprocessor/float-control.md) pragma was used to specify floating-point exception model under an [/fp](../../build/reference/fp-specify-floating-point-behavior.md) setting other than **/fp:precise**. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3200.md b/docs/error-messages/compiler-errors-2/compiler-error-c3200.md index e4b6fe76163..390da757bf7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3200.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3200.md @@ -8,7 +8,7 @@ ms.assetid: 44bb5e77-f0ec-421c-a732-b9ee7c0a3529 --- # Compiler Error C3200 -'template' : invalid template argument for template parameter 'parameter', expected a class template +> 'template' : invalid template argument for template parameter 'parameter', expected a class template You passed an invalid argument to a class template. The class template expects template as a parameter. In the following example, calling `Y aY` will generate C3200. The first parameter needs to be a template, such as `Y aY`. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3201.md b/docs/error-messages/compiler-errors-2/compiler-error-c3201.md index a8042c538fe..fac57c71729 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3201.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3201.md @@ -8,7 +8,7 @@ ms.assetid: ec19cd64-1789-40a3-b2db-dff2852b9d98 --- # Compiler Error C3201 -the template parameter list for class template 'template' does not match the template parameter list for template parameter 'template' +> the template parameter list for class template 'template' does not match the template parameter list for template parameter 'template' You passed a class template in the argument to a class template that does not take a template parameter, or you passed a mismatched number of template arguments for the default template argument. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3202.md b/docs/error-messages/compiler-errors-2/compiler-error-c3202.md index 30bd9a0ebd0..337c963d353 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3202.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3202.md @@ -8,7 +8,7 @@ ms.assetid: 23528a0c-5493-4804-9789-cd3c38e49fb9 --- # Compiler Error C3202 -'arg name' : invalid default argument for template parameter 'parameter', expected a class template +> 'arg name' : invalid default argument for template parameter 'parameter', expected a class template You passed an invalid default argument for a template parameter. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3203.md b/docs/error-messages/compiler-errors-2/compiler-error-c3203.md index f06d5ca3de2..1142aad00da 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3203.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3203.md @@ -8,7 +8,7 @@ ms.assetid: 6356770e-22c1-434c-91fe-f60b0aa23b91 --- # Compiler Error C3203 -'type' : unspecialized class template or generic can't be used as a template or generic argument for template or generic parameter 'param', expected a real type +> 'type' : unspecialized class template or generic can't be used as a template or generic argument for template or generic parameter 'param', expected a real type You passed an invalid argument to a class template or generic. The class template or generic expects a type as a parameter. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3204.md b/docs/error-messages/compiler-errors-2/compiler-error-c3204.md index 60063fce8c1..da1e591b4b4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3204.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3204.md @@ -8,7 +8,7 @@ ms.assetid: 06e578da-0262-48c8-b2ae-be1cd6d28884 --- # Compiler Error C3204 -'_alloca' cannot be called from within a catch block +> '_alloca' cannot be called from within a catch block This error occurs when you use a call to [_alloca](../../c-runtime-library/reference/alloca.md) from within a catch block. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3205.md b/docs/error-messages/compiler-errors-2/compiler-error-c3205.md index 40350e71348..7a3a8de2a56 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3205.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3205.md @@ -8,7 +8,7 @@ ms.assetid: 802d306e-5ff3-4491-8a22-c5f1c072d005 --- # Compiler Error C3205 -argument list for template parameter 'parameter' is missing +> argument list for template parameter 'parameter' is missing A [template](../../cpp/templates-cpp.md) parameter is missing. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3206.md b/docs/error-messages/compiler-errors-2/compiler-error-c3206.md index 0832f2a6ebe..a0bcdcf52b8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3206.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3206.md @@ -8,7 +8,7 @@ ms.assetid: d62995b5-e349-4418-bbe8-8a5e776ca7b0 --- # Compiler Error C3206 -'function' : invalid type argument for 'param', missing type argument list on class type 'typename' +> 'function' : invalid type argument for 'param', missing type argument list on class type 'typename' A function template is defined as taking a template type argument. However, a template template argument was passed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3207.md b/docs/error-messages/compiler-errors-2/compiler-error-c3207.md index bef3bea2a4a..a2a00a83c53 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3207.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3207.md @@ -8,7 +8,7 @@ ms.assetid: 4a28b976-142a-4cff-aa2f-480b892c50ca --- # Compiler Error C3207 -'function' : invalid template argument for 'arg', class template expected +> 'function' : invalid template argument for 'arg', class template expected A function template is defined as taking a template template argument. However, a template type argument was passed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3208.md b/docs/error-messages/compiler-errors-2/compiler-error-c3208.md index 503703f98ee..d3b2111a3c3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3208.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3208.md @@ -8,7 +8,7 @@ ms.assetid: 6d060bfe-52cf-4599-8f70-bdeb5a670df3 --- # Compiler Error C3208 -'function' : template parameter list for class template 'class' does not match template parameter list for template template parameter 'parameter' +> 'function' : template parameter list for class template 'class' does not match template parameter list for template template parameter 'parameter' A template template parameter does not have the same number of template parameters as the provided class template. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3209.md b/docs/error-messages/compiler-errors-2/compiler-error-c3209.md index 333144c305b..870888e03ea 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3209.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3209.md @@ -8,7 +8,7 @@ ms.assetid: 1de44e39-69d1-4894-8f89-ff92136e8e5d --- # Compiler Error C3209 -'class' : generic class must be a managed or WinRTclass +> 'class' : generic class must be a managed or WinRTclass A generic class must be a managed class or a Windows Runtime class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3210.md b/docs/error-messages/compiler-errors-2/compiler-error-c3210.md index 53f447d6de6..c2acf339e23 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3210.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3210.md @@ -8,7 +8,7 @@ ms.assetid: c6e9d309-fabc-4e7d-b526-be20d9fe3f6a --- # Compiler Error C3210 -'type' : access declaration can only be applied to a base class member +> 'type' : access declaration can only be applied to a base class member A [using declaration](../../cpp/using-declaration.md) was specified incorrectly. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3211.md b/docs/error-messages/compiler-errors-2/compiler-error-c3211.md index 964563891f5..d70f121d2e8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3211.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3211.md @@ -8,7 +8,7 @@ ms.assetid: 85e33fed-3b59-4315-97e6-20d31c6a985a --- # Compiler Error C3211 -'explicit specialization' : explicit specialization is using partial specialization syntax, use template <> instead +> 'explicit specialization' : explicit specialization is using partial specialization syntax, use template <> instead An explicit specialization was ill formed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3212.md b/docs/error-messages/compiler-errors-2/compiler-error-c3212.md index 0930774cd11..784c60e1d71 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3212.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3212.md @@ -8,7 +8,7 @@ ms.assetid: 9e271bb6-a51f-4b96-b26b-9f4ca28fca0a --- # Compiler Error C3212 -'specialization' : an explicit specialization of a template member must be a member of an explicit specialization +> 'specialization' : an explicit specialization of a template member must be a member of an explicit specialization An explicit specialization was ill formed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3213.md b/docs/error-messages/compiler-errors-2/compiler-error-c3213.md index 9e56eefd1b3..10fa8dd0c1c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3213.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3213.md @@ -8,7 +8,7 @@ ms.assetid: 1f079e36-b3e9-40f8-8e95-08eeba3adc82 --- # Compiler Error C3213 -base class 'base_type' is less accessible than 'derived_type' +> base class 'base_type' is less accessible than 'derived_type' A type that will be visible from an assembly must use publicly visible base classes. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3214.md b/docs/error-messages/compiler-errors-2/compiler-error-c3214.md index 7eeb9bc371a..469eb821294 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3214.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3214.md @@ -8,7 +8,7 @@ ms.assetid: 49ee4a9a-2549-4adb-9d3a-38e154303c2e --- # Compiler Error C3214 -'type' : invalid type argument for generic parameter 'param' of generic 'generic_type', does not meet constraint 'constraint' +> 'type' : invalid type argument for generic parameter 'param' of generic 'generic_type', does not meet constraint 'constraint' The type was specified for an instantiation of a generic class that does not meet the generic class's constraint. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3215.md b/docs/error-messages/compiler-errors-2/compiler-error-c3215.md index 6a6ca708566..1869945d480 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3215.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3215.md @@ -8,7 +8,7 @@ ms.assetid: d0d16007-8885-42e0-b086-2d3a61f348c5 --- # Compiler Error C3215 -'type1' : generic type parameter already constrained by 'type2' +> 'type1' : generic type parameter already constrained by 'type2' A constraint was specified more than once. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3216.md b/docs/error-messages/compiler-errors-2/compiler-error-c3216.md index bbb2967e39e..7202241ea5c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3216.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3216.md @@ -8,7 +8,7 @@ ms.assetid: bbab1efe-8779-4489-8bb0-b11e45f5cbe5 --- # Compiler Error C3216 -constraint must be a generic parameter, not 'type' +> constraint must be a generic parameter, not 'type' A constraint was ill formed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3217.md b/docs/error-messages/compiler-errors-2/compiler-error-c3217.md index 8cacbfeb157..ce2ec11c277 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3217.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3217.md @@ -8,7 +8,7 @@ ms.assetid: 99070417-c23a-4d82-bdd2-04be1a07adea --- # Compiler Error C3217 -'param' : generic parameter cannot be constrained in this declaration +> 'param' : generic parameter cannot be constrained in this declaration A constraint was ill formed; the constraint generic parameter must agree with the generic class template parameter. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3218.md b/docs/error-messages/compiler-errors-2/compiler-error-c3218.md index c1abbab3d5a..e91b50c36e4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3218.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3218.md @@ -8,7 +8,7 @@ ms.assetid: 0eea19e0-503e-4e07-ae8b-2cb2e95922cd --- # Compiler Error C3218 -'type' : type not allowed as a constraint +> 'type' : type not allowed as a constraint For a type to be a constraint, it must be either a value type or reference to a managed class or interface. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3219.md b/docs/error-messages/compiler-errors-2/compiler-error-c3219.md index 4ee80752f48..26c9a2ec246 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3219.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3219.md @@ -8,7 +8,7 @@ ms.assetid: 9c9757b0-1256-4cdf-9d8c-a3a72f300ce5 --- # Compiler Error C3219 -'param' : generic parameter cannot be constrained by multiple non-interfaces : 'class' +> 'param' : generic parameter cannot be constrained by multiple non-interfaces : 'class' It is not valid to constrain a generic parameter by two or more managed classes. From f0cf14c0ef701feaed437472a1aaff8ead6327eb Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 15 Aug 2025 23:08:34 +0800 Subject: [PATCH 1427/2255] Add "Remarks" and "Example" headings for error references in range [C3191, C3220] --- .../compiler-errors-2/compiler-error-c3192.md | 4 ++++ .../compiler-errors-2/compiler-error-c3194.md | 2 ++ .../compiler-errors-2/compiler-error-c3195.md | 4 ++++ .../compiler-errors-2/compiler-error-c3196.md | 4 ++++ .../compiler-errors-2/compiler-error-c3197.md | 4 ++++ .../compiler-errors-2/compiler-error-c3198.md | 4 ++++ .../compiler-errors-2/compiler-error-c3199.md | 4 ++++ .../compiler-errors-2/compiler-error-c3200.md | 8 +++++++- .../compiler-errors-2/compiler-error-c3201.md | 4 ++++ .../compiler-errors-2/compiler-error-c3202.md | 4 ++++ .../compiler-errors-2/compiler-error-c3203.md | 4 ++++ .../compiler-errors-2/compiler-error-c3204.md | 2 ++ .../compiler-errors-2/compiler-error-c3205.md | 2 ++ .../compiler-errors-2/compiler-error-c3206.md | 4 ++++ .../compiler-errors-2/compiler-error-c3207.md | 4 ++++ .../compiler-errors-2/compiler-error-c3208.md | 4 ++++ .../compiler-errors-2/compiler-error-c3209.md | 4 ++++ .../compiler-errors-2/compiler-error-c3210.md | 2 ++ .../compiler-errors-2/compiler-error-c3211.md | 4 ++++ .../compiler-errors-2/compiler-error-c3212.md | 4 ++++ .../compiler-errors-2/compiler-error-c3213.md | 4 ++++ .../compiler-errors-2/compiler-error-c3214.md | 4 ++++ .../compiler-errors-2/compiler-error-c3215.md | 4 ++++ .../compiler-errors-2/compiler-error-c3216.md | 4 ++++ .../compiler-errors-2/compiler-error-c3217.md | 4 ++++ .../compiler-errors-2/compiler-error-c3218.md | 2 ++ .../compiler-errors-2/compiler-error-c3219.md | 4 ++++ 27 files changed, 101 insertions(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3192.md b/docs/error-messages/compiler-errors-2/compiler-error-c3192.md index ce19145c97f..79a06fd4506 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3192.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3192.md @@ -10,8 +10,12 @@ ms.assetid: 8b0083d4-706f-46f6-858a-e1d9af464cf8 > syntax error : '^' is not a prefix operator (did you mean '*'?) +## Remarks + A handle cannot be used as a dereference operator. +## Example + The following sample generates C3192: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3194.md b/docs/error-messages/compiler-errors-2/compiler-error-c3194.md index 22442f746ea..85ad84e077a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3194.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3194.md @@ -10,6 +10,8 @@ ms.assetid: 49d3ffc6-eff6-4b46-865b-18811692a8bb > 'member' : a value-type cannot have an assignment operator +## Remarks + Special member functions that require automatic invocation by the compiler, such as a copy constructor or copy assignment operator are not supported within a value class. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3195.md b/docs/error-messages/compiler-errors-2/compiler-error-c3195.md index bf9a019b50c..19b96e4685f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3195.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3195.md @@ -10,8 +10,12 @@ ms.assetid: 97e4f681-812b-49e8-ba57-24b7817e3cd8 > 'operator' : is reserved and cannot be used as a member of a ref class or value type. CLR or WinRT operators must be defined using the 'operator' keyword +## Remarks + The compiler detected an operator definition using the Managed Extensions for C++ syntax. You must use the C++ syntax for operators. +## Example + The following sample generates C3195 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3196.md b/docs/error-messages/compiler-errors-2/compiler-error-c3196.md index f170f5fe184..5dbac1ba100 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3196.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3196.md @@ -10,8 +10,12 @@ ms.assetid: d9c38a13-191d-472d-aa2b-f61a6459d16c > 'keyword' : used more than once +## Remarks + A keyword was used more than once. +## Example + The following sample generates C3196: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3197.md b/docs/error-messages/compiler-errors-2/compiler-error-c3197.md index 552a1f5cca4..f63e0314129 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3197.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3197.md @@ -10,8 +10,12 @@ ms.assetid: 4e385c3b-222e-425c-9612-46e83ed41650 > 'keyword' : can only be used in definitions +## Remarks + A keyword was used in a declaration but is only valid in a definition. +## Example + The following sample generates C3197: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3198.md b/docs/error-messages/compiler-errors-2/compiler-error-c3198.md index a71bb3fed5f..94829ecb1c8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3198.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3198.md @@ -10,8 +10,12 @@ ms.assetid: ec4ecf61-0067-4aa4-b443-a91013a1e59d > invalid use of floating-point pragmas: fenv_access pragma operates only in precise mode +## Remarks + [fenv_access](../../preprocessor/fenv-access.md) pragma was used under an [/fp](../../build/reference/fp-specify-floating-point-behavior.md) setting other than **/fp:precise**. +## Example + The following sample generates C3198: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3199.md b/docs/error-messages/compiler-errors-2/compiler-error-c3199.md index 7d7be74a98a..be23a4394a3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3199.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3199.md @@ -10,8 +10,12 @@ ms.assetid: e7a478d3-115a-40a3-991b-c7454fd2e28e > invalid use of floating-point pragmas: exceptions are not supported in non-precise mode +## Remarks + The [float_control](../../preprocessor/float-control.md) pragma was used to specify floating-point exception model under an [/fp](../../build/reference/fp-specify-floating-point-behavior.md) setting other than **/fp:precise**. +## Example + The following sample generates C3199: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3200.md b/docs/error-messages/compiler-errors-2/compiler-error-c3200.md index 390da757bf7..447467d6873 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3200.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3200.md @@ -10,7 +10,13 @@ ms.assetid: 44bb5e77-f0ec-421c-a732-b9ee7c0a3529 > 'template' : invalid template argument for template parameter 'parameter', expected a class template -You passed an invalid argument to a class template. The class template expects template as a parameter. In the following example, calling `Y aY` will generate C3200. The first parameter needs to be a template, such as `Y aY`. +## Remarks + +You passed an invalid argument to a class template. The class template expects template as a parameter. + +## Example + +In the following example, calling `Y aY` will generate C3200. The first parameter needs to be a template, such as `Y aY`. ```cpp // C3200.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3201.md b/docs/error-messages/compiler-errors-2/compiler-error-c3201.md index fac57c71729..049418dfddb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3201.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3201.md @@ -10,8 +10,12 @@ ms.assetid: ec19cd64-1789-40a3-b2db-dff2852b9d98 > the template parameter list for class template 'template' does not match the template parameter list for template parameter 'template' +## Remarks + You passed a class template in the argument to a class template that does not take a template parameter, or you passed a mismatched number of template arguments for the default template argument. +## Example + ```cpp // C3201.cpp template diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3202.md b/docs/error-messages/compiler-errors-2/compiler-error-c3202.md index 337c963d353..a11a094962a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3202.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3202.md @@ -10,8 +10,12 @@ ms.assetid: 23528a0c-5493-4804-9789-cd3c38e49fb9 > 'arg name' : invalid default argument for template parameter 'parameter', expected a class template +## Remarks + You passed an invalid default argument for a template parameter. +## Example + The following sample generates C3202: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3203.md b/docs/error-messages/compiler-errors-2/compiler-error-c3203.md index 1142aad00da..16cc9c2e8dd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3203.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3203.md @@ -10,10 +10,14 @@ ms.assetid: 6356770e-22c1-434c-91fe-f60b0aa23b91 > 'type' : unspecialized class template or generic can't be used as a template or generic argument for template or generic parameter 'param', expected a real type +## Remarks + You passed an invalid argument to a class template or generic. The class template or generic expects a type as a parameter. This error can be generated as a result of compiler conformance work that was done for Visual Studio 2005: an unspecialized class template can't be used as a template argument in a base class list. To resolve C3203, explicitly add the template type parameter(s) to the template class name when using it as a template parameter in a base class list. +## Examples + ```cpp // C3203.cpp template< typename T > diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3204.md b/docs/error-messages/compiler-errors-2/compiler-error-c3204.md index da1e591b4b4..2672377c215 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3204.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3204.md @@ -10,6 +10,8 @@ ms.assetid: 06e578da-0262-48c8-b2ae-be1cd6d28884 > '_alloca' cannot be called from within a catch block +## Remarks + This error occurs when you use a call to [_alloca](../../c-runtime-library/reference/alloca.md) from within a catch block. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3205.md b/docs/error-messages/compiler-errors-2/compiler-error-c3205.md index 7a3a8de2a56..94adcadb515 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3205.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3205.md @@ -10,6 +10,8 @@ ms.assetid: 802d306e-5ff3-4491-8a22-c5f1c072d005 > argument list for template parameter 'parameter' is missing +## Remarks + A [template](../../cpp/templates-cpp.md) parameter is missing. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3206.md b/docs/error-messages/compiler-errors-2/compiler-error-c3206.md index a0bcdcf52b8..34f04377500 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3206.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3206.md @@ -10,8 +10,12 @@ ms.assetid: d62995b5-e349-4418-bbe8-8a5e776ca7b0 > 'function' : invalid type argument for 'param', missing type argument list on class type 'typename' +## Remarks + A function template is defined as taking a template type argument. However, a template template argument was passed. +## Examples + The following sample generates C3206: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3207.md b/docs/error-messages/compiler-errors-2/compiler-error-c3207.md index a2a00a83c53..6c44833aca2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3207.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3207.md @@ -10,8 +10,12 @@ ms.assetid: 4a28b976-142a-4cff-aa2f-480b892c50ca > 'function' : invalid template argument for 'arg', class template expected +## Remarks + A function template is defined as taking a template template argument. However, a template type argument was passed. +## Example + The following sample generates C3207: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3208.md b/docs/error-messages/compiler-errors-2/compiler-error-c3208.md index d3b2111a3c3..c680da84323 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3208.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3208.md @@ -10,8 +10,12 @@ ms.assetid: 6d060bfe-52cf-4599-8f70-bdeb5a670df3 > 'function' : template parameter list for class template 'class' does not match template parameter list for template template parameter 'parameter' +## Remarks + A template template parameter does not have the same number of template parameters as the provided class template. +## Example + The following sample generates C3208: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3209.md b/docs/error-messages/compiler-errors-2/compiler-error-c3209.md index 870888e03ea..35ee6134a30 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3209.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3209.md @@ -10,8 +10,12 @@ ms.assetid: 1de44e39-69d1-4894-8f89-ff92136e8e5d > 'class' : generic class must be a managed or WinRTclass +## Remarks + A generic class must be a managed class or a Windows Runtime class. +## Example + The following sample generates C3209 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3210.md b/docs/error-messages/compiler-errors-2/compiler-error-c3210.md index c2acf339e23..1f0a8eabeb4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3210.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3210.md @@ -10,6 +10,8 @@ ms.assetid: c6e9d309-fabc-4e7d-b526-be20d9fe3f6a > 'type' : access declaration can only be applied to a base class member +## Remarks + A [using declaration](../../cpp/using-declaration.md) was specified incorrectly. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3211.md b/docs/error-messages/compiler-errors-2/compiler-error-c3211.md index d70f121d2e8..1f9be8836e9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3211.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3211.md @@ -10,8 +10,12 @@ ms.assetid: 85e33fed-3b59-4315-97e6-20d31c6a985a > 'explicit specialization' : explicit specialization is using partial specialization syntax, use template <> instead +## Remarks + An explicit specialization was ill formed. +## Example + The following sample generates C3211: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3212.md b/docs/error-messages/compiler-errors-2/compiler-error-c3212.md index 784c60e1d71..219f0f2f9ee 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3212.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3212.md @@ -10,8 +10,12 @@ ms.assetid: 9e271bb6-a51f-4b96-b26b-9f4ca28fca0a > 'specialization' : an explicit specialization of a template member must be a member of an explicit specialization +## Remarks + An explicit specialization was ill formed. +## Example + The following sample generates C3212: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3213.md b/docs/error-messages/compiler-errors-2/compiler-error-c3213.md index 10fa8dd0c1c..e35b9de91f2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3213.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3213.md @@ -10,8 +10,12 @@ ms.assetid: 1f079e36-b3e9-40f8-8e95-08eeba3adc82 > base class 'base_type' is less accessible than 'derived_type' +## Remarks + A type that will be visible from an assembly must use publicly visible base classes. +## Example + The following sample generates C3213: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3214.md b/docs/error-messages/compiler-errors-2/compiler-error-c3214.md index 469eb821294..9e259439402 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3214.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3214.md @@ -10,8 +10,12 @@ ms.assetid: 49ee4a9a-2549-4adb-9d3a-38e154303c2e > 'type' : invalid type argument for generic parameter 'param' of generic 'generic_type', does not meet constraint 'constraint' +## Remarks + The type was specified for an instantiation of a generic class that does not meet the generic class's constraint. +## Example + The following sample generates C3214: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3215.md b/docs/error-messages/compiler-errors-2/compiler-error-c3215.md index 1869945d480..5d336d7b6d6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3215.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3215.md @@ -10,10 +10,14 @@ ms.assetid: d0d16007-8885-42e0-b086-2d3a61f348c5 > 'type1' : generic type parameter already constrained by 'type2' +## Remarks + A constraint was specified more than once. For more information on generics, see [Generics](../../extensions/generics-cpp-component-extensions.md). +## Example + The following sample generates C3215: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3216.md b/docs/error-messages/compiler-errors-2/compiler-error-c3216.md index 7202241ea5c..350930786ae 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3216.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3216.md @@ -10,8 +10,12 @@ ms.assetid: bbab1efe-8779-4489-8bb0-b11e45f5cbe5 > constraint must be a generic parameter, not 'type' +## Remarks + A constraint was ill formed. +## Example + The following sample generates C3216: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3217.md b/docs/error-messages/compiler-errors-2/compiler-error-c3217.md index ce2ec11c277..7176aa35996 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3217.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3217.md @@ -10,8 +10,12 @@ ms.assetid: 99070417-c23a-4d82-bdd2-04be1a07adea > 'param' : generic parameter cannot be constrained in this declaration +## Remarks + A constraint was ill formed; the constraint generic parameter must agree with the generic class template parameter. +## Example + The following sample generates C3217: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3218.md b/docs/error-messages/compiler-errors-2/compiler-error-c3218.md index e91b50c36e4..822a1622b7f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3218.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3218.md @@ -10,6 +10,8 @@ ms.assetid: 0eea19e0-503e-4e07-ae8b-2cb2e95922cd > 'type' : type not allowed as a constraint +## Remarks + For a type to be a constraint, it must be either a value type or reference to a managed class or interface. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3219.md b/docs/error-messages/compiler-errors-2/compiler-error-c3219.md index 26c9a2ec246..94434e97894 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3219.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3219.md @@ -10,8 +10,12 @@ ms.assetid: 9c9757b0-1256-4cdf-9d8c-a3a72f300ce5 > 'param' : generic parameter cannot be constrained by multiple non-interfaces : 'class' +## Remarks + It is not valid to constrain a generic parameter by two or more managed classes. +## Example + The following sample generates C3219: ```cpp From c33a8fa41b2825b25d83d2e28e55bda200b11d1a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 15 Aug 2025 23:10:24 +0800 Subject: [PATCH 1428/2255] Replace term "sample" with "example" for error references in range [C3191, C3220] --- docs/error-messages/compiler-errors-2/compiler-error-c3192.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3194.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3195.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3196.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3197.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3198.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3199.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3202.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3203.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3204.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3205.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3206.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c3207.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3208.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3209.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3210.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3211.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3212.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3213.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3214.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3215.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3216.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3217.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c3218.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3219.md | 4 ++-- 25 files changed, 28 insertions(+), 28 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3192.md b/docs/error-messages/compiler-errors-2/compiler-error-c3192.md index 79a06fd4506..cf344cb163c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3192.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3192.md @@ -16,7 +16,7 @@ A handle cannot be used as a dereference operator. ## Example -The following sample generates C3192: +The following example generates C3192: ```cpp // C3192.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3194.md b/docs/error-messages/compiler-errors-2/compiler-error-c3194.md index 85ad84e077a..aea7b336136 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3194.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3194.md @@ -16,7 +16,7 @@ Special member functions that require automatic invocation by the compiler, such ## Example -The following sample generates C3194. +The following example generates C3194. ```cpp // C3194.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3195.md b/docs/error-messages/compiler-errors-2/compiler-error-c3195.md index 19b96e4685f..773285472b0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3195.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3195.md @@ -16,7 +16,7 @@ The compiler detected an operator definition using the Managed Extensions for C+ ## Example -The following sample generates C3195 and shows how to fix it: +The following example generates C3195 and shows how to fix it: ```cpp // C3195.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3196.md b/docs/error-messages/compiler-errors-2/compiler-error-c3196.md index 5dbac1ba100..ce589dca258 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3196.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3196.md @@ -16,7 +16,7 @@ A keyword was used more than once. ## Example -The following sample generates C3196: +The following example generates C3196: ```cpp // C3196.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3197.md b/docs/error-messages/compiler-errors-2/compiler-error-c3197.md index f63e0314129..06e64c69b7e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3197.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3197.md @@ -16,7 +16,7 @@ A keyword was used in a declaration but is only valid in a definition. ## Example -The following sample generates C3197: +The following example generates C3197: ```cpp // C3197.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3198.md b/docs/error-messages/compiler-errors-2/compiler-error-c3198.md index 94829ecb1c8..76dd7c51bbb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3198.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3198.md @@ -16,7 +16,7 @@ ms.assetid: ec4ecf61-0067-4aa4-b443-a91013a1e59d ## Example -The following sample generates C3198: +The following example generates C3198: ```cpp // C3198.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3199.md b/docs/error-messages/compiler-errors-2/compiler-error-c3199.md index be23a4394a3..865fb26a490 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3199.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3199.md @@ -16,7 +16,7 @@ The [float_control](../../preprocessor/float-control.md) pragma was used to spec ## Example -The following sample generates C3199: +The following example generates C3199: ```cpp // C3199.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3202.md b/docs/error-messages/compiler-errors-2/compiler-error-c3202.md index a11a094962a..8847ab99955 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3202.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3202.md @@ -16,7 +16,7 @@ You passed an invalid default argument for a template parameter. ## Example -The following sample generates C3202: +The following example generates C3202: ```cpp // C3202.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3203.md b/docs/error-messages/compiler-errors-2/compiler-error-c3203.md index 16cc9c2e8dd..ca40ee3e3dc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3203.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3203.md @@ -37,7 +37,7 @@ int main() { } ``` -The following sample generates C3203 and shows how to fix it: +The following example generates C3203 and shows how to fix it: ```cpp // C3203_b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3204.md b/docs/error-messages/compiler-errors-2/compiler-error-c3204.md index 2672377c215..14f043bb5b4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3204.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3204.md @@ -16,7 +16,7 @@ This error occurs when you use a call to [_alloca](../../c-runtime-library/refer ## Example -The following sample generates C3204: +The following example generates C3204: ```cpp // C3204.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3205.md b/docs/error-messages/compiler-errors-2/compiler-error-c3205.md index 94adcadb515..9120edff432 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3205.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3205.md @@ -16,7 +16,7 @@ A [template](../../cpp/templates-cpp.md) parameter is missing. ## Example -The following sample generates C3205: +The following example generates C3205: ```cpp // C3205.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3206.md b/docs/error-messages/compiler-errors-2/compiler-error-c3206.md index 34f04377500..eb14c962a23 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3206.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3206.md @@ -16,7 +16,7 @@ A function template is defined as taking a template type argument. However, a te ## Examples -The following sample generates C3206: +The following example generates C3206: ```cpp // C3206.cpp @@ -81,7 +81,7 @@ int main() { } ``` -A class template is not allowed as a template type argument. The following sample raises C3206: +A class template is not allowed as a template type argument. The following example raises C3206: ```cpp // C3206e.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3207.md b/docs/error-messages/compiler-errors-2/compiler-error-c3207.md index 6c44833aca2..aeba4cfc66c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3207.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3207.md @@ -16,7 +16,7 @@ A function template is defined as taking a template template argument. However, ## Example -The following sample generates C3207: +The following example generates C3207: ```cpp // C3207.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3208.md b/docs/error-messages/compiler-errors-2/compiler-error-c3208.md index c680da84323..2e53622c72e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3208.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3208.md @@ -16,7 +16,7 @@ A template template parameter does not have the same number of template paramete ## Example -The following sample generates C3208: +The following example generates C3208: ```cpp // C3208.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3209.md b/docs/error-messages/compiler-errors-2/compiler-error-c3209.md index 35ee6134a30..6877cb55c63 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3209.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3209.md @@ -16,7 +16,7 @@ A generic class must be a managed class or a Windows Runtime class. ## Example -The following sample generates C3209 and shows how to fix it: +The following example generates C3209 and shows how to fix it: ```cpp // C3209.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3210.md b/docs/error-messages/compiler-errors-2/compiler-error-c3210.md index 1f0a8eabeb4..9c251364d52 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3210.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3210.md @@ -16,7 +16,7 @@ A [using declaration](../../cpp/using-declaration.md) was specified incorrectly. ## Example -The following sample generates C3210. +The following example generates C3210. ```cpp // C3210.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3211.md b/docs/error-messages/compiler-errors-2/compiler-error-c3211.md index 1f9be8836e9..943787ce999 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3211.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3211.md @@ -16,7 +16,7 @@ An explicit specialization was ill formed. ## Example -The following sample generates C3211: +The following example generates C3211: ```cpp // C3211.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3212.md b/docs/error-messages/compiler-errors-2/compiler-error-c3212.md index 219f0f2f9ee..726b201ed60 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3212.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3212.md @@ -16,7 +16,7 @@ An explicit specialization was ill formed. ## Example -The following sample generates C3212: +The following example generates C3212: ```cpp // C3212.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3213.md b/docs/error-messages/compiler-errors-2/compiler-error-c3213.md index e35b9de91f2..ea62632e156 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3213.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3213.md @@ -16,7 +16,7 @@ A type that will be visible from an assembly must use publicly visible base clas ## Example -The following sample generates C3213: +The following example generates C3213: ```cpp // C3213.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3214.md b/docs/error-messages/compiler-errors-2/compiler-error-c3214.md index 9e259439402..3945380f054 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3214.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3214.md @@ -16,7 +16,7 @@ The type was specified for an instantiation of a generic class that does not mee ## Example -The following sample generates C3214: +The following example generates C3214: ```cpp // C3214.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3215.md b/docs/error-messages/compiler-errors-2/compiler-error-c3215.md index 5d336d7b6d6..5e611fc7a7e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3215.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3215.md @@ -18,7 +18,7 @@ For more information on generics, see [Generics](../../extensions/generics-cpp-c ## Example -The following sample generates C3215: +The following example generates C3215: ```cpp // C3215.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3216.md b/docs/error-messages/compiler-errors-2/compiler-error-c3216.md index 350930786ae..a5e01a51a55 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3216.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3216.md @@ -16,7 +16,7 @@ A constraint was ill formed. ## Example -The following sample generates C3216: +The following example generates C3216: ```cpp // C3216.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3217.md b/docs/error-messages/compiler-errors-2/compiler-error-c3217.md index 7176aa35996..253bda8d877 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3217.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3217.md @@ -16,7 +16,7 @@ A constraint was ill formed; the constraint generic parameter must agree with th ## Example -The following sample generates C3217: +The following example generates C3217: ```cpp // C3217.cpp @@ -31,7 +31,7 @@ ref class C { }; ``` -The following sample demonstrates a possible resolution: +The following example demonstrates a possible resolution: ```cpp // C3217b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3218.md b/docs/error-messages/compiler-errors-2/compiler-error-c3218.md index 822a1622b7f..732f2dc54b6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3218.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3218.md @@ -16,7 +16,7 @@ For a type to be a constraint, it must be either a value type or reference to a ## Example -The following sample generates C3218. +The following example generates C3218. ```cpp // C3218.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3219.md b/docs/error-messages/compiler-errors-2/compiler-error-c3219.md index 94434e97894..6277a80b32f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3219.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3219.md @@ -16,7 +16,7 @@ It is not valid to constrain a generic parameter by two or more managed classes. ## Example -The following sample generates C3219: +The following example generates C3219: ```cpp // C3219.cpp @@ -29,7 +29,7 @@ where T : A, B ref class E {}; // C3219 ``` -The following sample demonstrates a possible resolution: +The following example demonstrates a possible resolution: ```cpp // C3219b.cpp From b1fdb9fec7a2060f70829fa474b3b8d1bda546eb Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 15 Aug 2025 23:15:00 +0800 Subject: [PATCH 1429/2255] Update metadata for error references in range [C3191, C3220] --- .../error-messages/compiler-errors-2/compiler-error-c3192.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3194.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3195.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3196.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3197.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3198.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3199.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3200.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3201.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3202.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3203.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3204.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3205.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3206.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3207.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3208.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3209.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3210.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3211.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3212.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3213.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3214.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3215.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3216.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3217.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3218.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3219.md | 5 ++--- 27 files changed, 54 insertions(+), 81 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3192.md b/docs/error-messages/compiler-errors-2/compiler-error-c3192.md index cf344cb163c..28b5f9c2d5a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3192.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3192.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3192" title: "Compiler Error C3192" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3192" +ms.date: 11/04/2016 f1_keywords: ["C3192"] helpviewer_keywords: ["C3192"] -ms.assetid: 8b0083d4-706f-46f6-858a-e1d9af464cf8 --- # Compiler Error C3192 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3194.md b/docs/error-messages/compiler-errors-2/compiler-error-c3194.md index aea7b336136..8db7784857a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3194.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3194.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3194" title: "Compiler Error C3194" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3194" +ms.date: 11/04/2016 f1_keywords: ["C3194"] helpviewer_keywords: ["C3194"] -ms.assetid: 49d3ffc6-eff6-4b46-865b-18811692a8bb --- # Compiler Error C3194 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3195.md b/docs/error-messages/compiler-errors-2/compiler-error-c3195.md index 773285472b0..ec488b88ac7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3195.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3195.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3195" title: "Compiler Error C3195" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3195" +ms.date: 11/04/2016 f1_keywords: ["C3195"] helpviewer_keywords: ["C3195"] -ms.assetid: 97e4f681-812b-49e8-ba57-24b7817e3cd8 --- # Compiler Error C3195 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3196.md b/docs/error-messages/compiler-errors-2/compiler-error-c3196.md index ce589dca258..070c0c87ed4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3196.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3196.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3196" title: "Compiler Error C3196" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3196" +ms.date: 11/04/2016 f1_keywords: ["C3196"] helpviewer_keywords: ["C3196"] -ms.assetid: d9c38a13-191d-472d-aa2b-f61a6459d16c --- # Compiler Error C3196 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3197.md b/docs/error-messages/compiler-errors-2/compiler-error-c3197.md index 06e64c69b7e..3362584a4a0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3197.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3197.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3197" title: "Compiler Error C3197" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3197" +ms.date: 11/04/2016 f1_keywords: ["C3197"] helpviewer_keywords: ["C3197"] -ms.assetid: 4e385c3b-222e-425c-9612-46e83ed41650 --- # Compiler Error C3197 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3198.md b/docs/error-messages/compiler-errors-2/compiler-error-c3198.md index 76dd7c51bbb..b871f254a6e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3198.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3198.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3198" title: "Compiler Error C3198" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3198" +ms.date: 11/04/2016 f1_keywords: ["C3198"] helpviewer_keywords: ["C3198"] -ms.assetid: ec4ecf61-0067-4aa4-b443-a91013a1e59d --- # Compiler Error C3198 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3199.md b/docs/error-messages/compiler-errors-2/compiler-error-c3199.md index 865fb26a490..fd0da44ace7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3199.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3199.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3199" title: "Compiler Error C3199" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3199" +ms.date: 11/04/2016 f1_keywords: ["C3199"] helpviewer_keywords: ["C3199"] -ms.assetid: e7a478d3-115a-40a3-991b-c7454fd2e28e --- # Compiler Error C3199 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3200.md b/docs/error-messages/compiler-errors-2/compiler-error-c3200.md index 447467d6873..548a0b21c5a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3200.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3200.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3200" title: "Compiler Error C3200" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3200" +ms.date: 11/04/2016 f1_keywords: ["C3200"] helpviewer_keywords: ["C3200"] -ms.assetid: 44bb5e77-f0ec-421c-a732-b9ee7c0a3529 --- # Compiler Error C3200 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3201.md b/docs/error-messages/compiler-errors-2/compiler-error-c3201.md index 049418dfddb..610eefee9db 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3201.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3201.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3201" title: "Compiler Error C3201" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3201" +ms.date: 11/04/2016 f1_keywords: ["C3201"] helpviewer_keywords: ["C3201"] -ms.assetid: ec19cd64-1789-40a3-b2db-dff2852b9d98 --- # Compiler Error C3201 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3202.md b/docs/error-messages/compiler-errors-2/compiler-error-c3202.md index 8847ab99955..f84c285a958 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3202.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3202.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3202" title: "Compiler Error C3202" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3202" +ms.date: 11/04/2016 f1_keywords: ["C3202"] helpviewer_keywords: ["C3202"] -ms.assetid: 23528a0c-5493-4804-9789-cd3c38e49fb9 --- # Compiler Error C3202 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3203.md b/docs/error-messages/compiler-errors-2/compiler-error-c3203.md index ca40ee3e3dc..a68ffb619c0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3203.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3203.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3203" title: "Compiler Error C3203" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3203" +ms.date: 11/04/2016 f1_keywords: ["C3203"] helpviewer_keywords: ["C3203"] -ms.assetid: 6356770e-22c1-434c-91fe-f60b0aa23b91 --- # Compiler Error C3203 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3204.md b/docs/error-messages/compiler-errors-2/compiler-error-c3204.md index 14f043bb5b4..fcbc33e8a80 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3204.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3204.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3204" title: "Compiler Error C3204" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3204" +ms.date: 11/04/2016 f1_keywords: ["C3204"] helpviewer_keywords: ["C3204"] -ms.assetid: 06e578da-0262-48c8-b2ae-be1cd6d28884 --- # Compiler Error C3204 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3205.md b/docs/error-messages/compiler-errors-2/compiler-error-c3205.md index 9120edff432..0e0223a4cd1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3205.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3205.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3205" title: "Compiler Error C3205" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3205" +ms.date: 11/04/2016 f1_keywords: ["C3205"] helpviewer_keywords: ["C3205"] -ms.assetid: 802d306e-5ff3-4491-8a22-c5f1c072d005 --- # Compiler Error C3205 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3206.md b/docs/error-messages/compiler-errors-2/compiler-error-c3206.md index eb14c962a23..188fa575037 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3206.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3206.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3206" title: "Compiler Error C3206" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3206" +ms.date: 11/04/2016 f1_keywords: ["C3206"] helpviewer_keywords: ["C3206"] -ms.assetid: d62995b5-e349-4418-bbe8-8a5e776ca7b0 --- # Compiler Error C3206 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3207.md b/docs/error-messages/compiler-errors-2/compiler-error-c3207.md index aeba4cfc66c..b26b866d47d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3207.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3207.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3207" title: "Compiler Error C3207" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3207" +ms.date: 11/04/2016 f1_keywords: ["C3207"] helpviewer_keywords: ["C3207"] -ms.assetid: 4a28b976-142a-4cff-aa2f-480b892c50ca --- # Compiler Error C3207 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3208.md b/docs/error-messages/compiler-errors-2/compiler-error-c3208.md index 2e53622c72e..f8478e5ba06 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3208.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3208.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3208" title: "Compiler Error C3208" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3208" +ms.date: 11/04/2016 f1_keywords: ["C3208"] helpviewer_keywords: ["C3208"] -ms.assetid: 6d060bfe-52cf-4599-8f70-bdeb5a670df3 --- # Compiler Error C3208 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3209.md b/docs/error-messages/compiler-errors-2/compiler-error-c3209.md index 6877cb55c63..7be3106af49 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3209.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3209.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3209" title: "Compiler Error C3209" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3209" +ms.date: 11/04/2016 f1_keywords: ["C3209"] helpviewer_keywords: ["C3209"] -ms.assetid: 1de44e39-69d1-4894-8f89-ff92136e8e5d --- # Compiler Error C3209 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3210.md b/docs/error-messages/compiler-errors-2/compiler-error-c3210.md index 9c251364d52..bea665dad72 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3210.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3210.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3210" title: "Compiler Error C3210" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3210" +ms.date: 11/04/2016 f1_keywords: ["C3210"] helpviewer_keywords: ["C3210"] -ms.assetid: c6e9d309-fabc-4e7d-b526-be20d9fe3f6a --- # Compiler Error C3210 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3211.md b/docs/error-messages/compiler-errors-2/compiler-error-c3211.md index 943787ce999..be567ccd716 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3211.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3211.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3211" title: "Compiler Error C3211" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3211" +ms.date: 11/04/2016 f1_keywords: ["C3211"] helpviewer_keywords: ["C3211"] -ms.assetid: 85e33fed-3b59-4315-97e6-20d31c6a985a --- # Compiler Error C3211 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3212.md b/docs/error-messages/compiler-errors-2/compiler-error-c3212.md index 726b201ed60..0364fb2ac86 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3212.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3212.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3212" title: "Compiler Error C3212" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3212" +ms.date: 11/04/2016 f1_keywords: ["C3212"] helpviewer_keywords: ["C3212"] -ms.assetid: 9e271bb6-a51f-4b96-b26b-9f4ca28fca0a --- # Compiler Error C3212 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3213.md b/docs/error-messages/compiler-errors-2/compiler-error-c3213.md index ea62632e156..92f037e2fc1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3213.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3213.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3213" title: "Compiler Error C3213" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3213" +ms.date: 11/04/2016 f1_keywords: ["C3213"] helpviewer_keywords: ["C3213"] -ms.assetid: 1f079e36-b3e9-40f8-8e95-08eeba3adc82 --- # Compiler Error C3213 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3214.md b/docs/error-messages/compiler-errors-2/compiler-error-c3214.md index 3945380f054..7f83f18b2e9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3214.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3214.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3214" title: "Compiler Error C3214" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3214" +ms.date: 11/04/2016 f1_keywords: ["C3214"] helpviewer_keywords: ["C3214"] -ms.assetid: 49ee4a9a-2549-4adb-9d3a-38e154303c2e --- # Compiler Error C3214 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3215.md b/docs/error-messages/compiler-errors-2/compiler-error-c3215.md index 5e611fc7a7e..23799ce938e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3215.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3215.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3215" title: "Compiler Error C3215" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3215" +ms.date: 11/04/2016 f1_keywords: ["C3215"] helpviewer_keywords: ["C3215"] -ms.assetid: d0d16007-8885-42e0-b086-2d3a61f348c5 --- # Compiler Error C3215 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3216.md b/docs/error-messages/compiler-errors-2/compiler-error-c3216.md index a5e01a51a55..22291b161a0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3216.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3216.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3216" title: "Compiler Error C3216" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3216" +ms.date: 11/04/2016 f1_keywords: ["C3216"] helpviewer_keywords: ["C3216"] -ms.assetid: bbab1efe-8779-4489-8bb0-b11e45f5cbe5 --- # Compiler Error C3216 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3217.md b/docs/error-messages/compiler-errors-2/compiler-error-c3217.md index 253bda8d877..c2628b1b6b8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3217.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3217.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3217" title: "Compiler Error C3217" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3217" +ms.date: 11/04/2016 f1_keywords: ["C3217"] helpviewer_keywords: ["C3217"] -ms.assetid: 99070417-c23a-4d82-bdd2-04be1a07adea --- # Compiler Error C3217 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3218.md b/docs/error-messages/compiler-errors-2/compiler-error-c3218.md index 732f2dc54b6..691dc13049b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3218.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3218.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3218" title: "Compiler Error C3218" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3218" +ms.date: 11/04/2016 f1_keywords: ["C3218"] helpviewer_keywords: ["C3218"] -ms.assetid: 0eea19e0-503e-4e07-ae8b-2cb2e95922cd --- # Compiler Error C3218 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3219.md b/docs/error-messages/compiler-errors-2/compiler-error-c3219.md index 6277a80b32f..4800bece797 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3219.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3219.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3219" title: "Compiler Error C3219" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3219" +ms.date: 11/04/2016 f1_keywords: ["C3219"] helpviewer_keywords: ["C3219"] -ms.assetid: 9c9757b0-1256-4cdf-9d8c-a3a72f300ce5 --- # Compiler Error C3219 From 42e0d8e089bc6d6c8924771aca3ef9676eb8a823 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 15 Aug 2025 23:17:55 +0800 Subject: [PATCH 1430/2255] Add leading example sentence in C3201 and C3203 error reference --- docs/error-messages/compiler-errors-2/compiler-error-c3201.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3203.md | 2 ++ 2 files changed, 4 insertions(+) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3201.md b/docs/error-messages/compiler-errors-2/compiler-error-c3201.md index 610eefee9db..6799ee98060 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3201.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3201.md @@ -15,6 +15,8 @@ You passed a class template in the argument to a class template that does not ta ## Example +The following example generates C3201: + ```cpp // C3201.cpp template diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3203.md b/docs/error-messages/compiler-errors-2/compiler-error-c3203.md index a68ffb619c0..9eda8670397 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3203.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3203.md @@ -17,6 +17,8 @@ This error can be generated as a result of compiler conformance work that was do ## Examples +The following example generates C3203: + ```cpp // C3203.cpp template< typename T > From 9104da338a88710a68bb4fa63df38bdfd6e17907 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla <77024043+39otsu@users.noreply.github.com> Date: Fri, 15 Aug 2025 10:51:35 -0700 Subject: [PATCH 1431/2255] Update docs/sanitizers/asan-flags.md Co-authored-by: David Justo --- docs/sanitizers/asan-flags.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 28ed0085b32..7e4d920abde 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -15,7 +15,7 @@ The following is a list of actively supported options for the AddressSanitizer. | Flag | Default value | Description | |------|---------------|-------------| -|`abort_on_error` | `false` | If `true`, the tool calls `abort()` instead of `_exit()` after printing the error report.| +|`abort_on_error` | `false` | If `true`, ASan calls `abort()` instead of `_exit()` after printing the error report.| |`alloc_dealloc_mismatch` | `false` | Enables runtime detection of mismatched memory operations such as `malloc`/`delete`, `new[]`/`free`, etc.| |`allocator_frees_and_returns_null_on_realloc_zero` | `1` | 1 - realloc(p, 0) is equivalent to free(p). 0 - realloc(p, 0) will return a non-`NULL` value.| |`allocator_may_return_null` | `false` | If `true`, the allocator will return `nullptr` and fail when out of memory instead of crashing.| From eeed5516753f2b44010fa0e703c6aa1359d3a6bc Mon Sep 17 00:00:00 2001 From: MacGyver Codilla <77024043+39otsu@users.noreply.github.com> Date: Fri, 15 Aug 2025 10:52:05 -0700 Subject: [PATCH 1432/2255] Update docs/sanitizers/asan-flags.md Co-authored-by: David Justo --- docs/sanitizers/asan-flags.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 7e4d920abde..1c2b66a5a59 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -16,7 +16,8 @@ The following is a list of actively supported options for the AddressSanitizer. | Flag | Default value | Description | |------|---------------|-------------| |`abort_on_error` | `false` | If `true`, ASan calls `abort()` instead of `_exit()` after printing the error report.| -|`alloc_dealloc_mismatch` | `false` | Enables runtime detection of mismatched memory operations such as `malloc`/`delete`, `new[]`/`free`, etc.| +|`alloc_dealloc_mismatch` | `false` | Enables detection of mismatched memory operations such as `malloc`/`delete`, `new[]`/`free`, etc.| + |`allocator_frees_and_returns_null_on_realloc_zero` | `1` | 1 - realloc(p, 0) is equivalent to free(p). 0 - realloc(p, 0) will return a non-`NULL` value.| |`allocator_may_return_null` | `false` | If `true`, the allocator will return `nullptr` and fail when out of memory instead of crashing.| |`allocator_release_to_os_interval_ms` | `-1` | Experimental. 64-bit allocator only. Specify minimum time interval in ms between attempts to release memory.| From 8a8a77f85163f0d810f2a6672126ae55b3041387 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla <77024043+39otsu@users.noreply.github.com> Date: Fri, 15 Aug 2025 11:04:27 -0700 Subject: [PATCH 1433/2255] Update docs/sanitizers/asan-flags.md Co-authored-by: David Justo --- docs/sanitizers/asan-flags.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 1c2b66a5a59..35dfbf3d395 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -31,7 +31,7 @@ The following is a list of actively supported options for the AddressSanitizer. |`disable_coredump` | `true`/`false` (on non-64-bit systems) | Disables core dumping. By default, the tool sets `disable_coredump=1` on 64-bit systems to prevent dumping a 16T+ core file. The tool ignores this flag on operating systems that don't dump core by default and for sanitizers that don't reserve large amounts of virtual memory.| |`exitcode` | `1` | Override the program exit status with this value if the tool found an error.| |`external_symbolizer_path` | `""` | Path to external symbolizer. If empty, the tool will search `$PATH` for the symbolizer.| -|`fast_unwind_on_malloc` | `true` | If available, the tool uses the fast frame-pointer-based unwinder on `malloc`/`free`.| +|`fast_unwind_on_malloc` | `true` | If available, ASan uses the fast frame-pointer-based unwinder on `malloc`/`free`.| |`full_address_space` | `false` | Sanitize complete address space; by default kernel area on 32-bit platforms will not be sanitized.| |`halt_on_error` | `true` | Exit/abort the program after printing the first error report (May cause undefined behavior, use `continue_on_error` for full support).| |`handle_segv` | `true` | `false` - ASan will not handle `SEGV` errors, `true` - ASan handles `SEGV` errors.| From 6e7f3832dfe2bba538230ffe2385315f3bdf5cc8 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla <77024043+39otsu@users.noreply.github.com> Date: Fri, 15 Aug 2025 12:26:13 -0700 Subject: [PATCH 1434/2255] Update docs/sanitizers/asan-flags.md Co-authored-by: David Justo --- docs/sanitizers/asan-flags.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 35dfbf3d395..cd15d820ab1 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -52,7 +52,8 @@ The following is a list of actively supported options for the AddressSanitizer. |`max_redzone` | `2048` | Maximal size (in bytes) of redzones around heap objects.| |`min_uar_stack_size_log` | `16` | Minimum fake stack size log. (Minimum value accepted: `16`).| |`new_delete_type_mismatch` | `true` | Report errors on mismatch betwen size of new and delete. See [new-delete-type-mismatch](./error-new-delete-type-mismatch.md).| -|`poison_heap` | `true` | Poison (or not) the heap memory on [de]allocation. Zero value is useful for benchmarking the allocator or instrumentator.| +|`poison_heap` | `true` | Poison (or not) the heap memory on (de-)allocation. Zero value is useful for benchmarking the allocator or instrumentator.| + |`poison_partial` | `true` | If `true`, poison partially addressable 8-byte aligned words. This flag affects heap and global buffers, but not stack buffers.| |`print_cmdline` | `false` | Print command line on crash. With `continue_on_error` set >= `1`, print current working directory as `UTF-16` aware.| |`print_summary` | `true` | If `false`, disable printing error summaries in addition to error reports.| From 8d84c4cf0866c55a37aa25b236f2171d567ce7ec Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Fri, 15 Aug 2025 12:39:05 -0700 Subject: [PATCH 1435/2255] Remove more unused flags --- docs/sanitizers/asan-flags.md | 7 ------- 1 file changed, 7 deletions(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 35dfbf3d395..216b2b13424 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -17,22 +17,18 @@ The following is a list of actively supported options for the AddressSanitizer. |------|---------------|-------------| |`abort_on_error` | `false` | If `true`, ASan calls `abort()` instead of `_exit()` after printing the error report.| |`alloc_dealloc_mismatch` | `false` | Enables detection of mismatched memory operations such as `malloc`/`delete`, `new[]`/`free`, etc.| - |`allocator_frees_and_returns_null_on_realloc_zero` | `1` | 1 - realloc(p, 0) is equivalent to free(p). 0 - realloc(p, 0) will return a non-`NULL` value.| |`allocator_may_return_null` | `false` | If `true`, the allocator will return `nullptr` and fail when out of memory instead of crashing.| |`allocator_release_to_os_interval_ms` | `-1` | Experimental. 64-bit allocator only. Specify minimum time interval in ms between attempts to release memory.| |`allow_user_poisoning` | `true` | If `true`, you may manually mark memory regions as poisoned or unpoisoned.| -|`atexit` | `false` | If `true`, prints ASan exit stats even after program terminates successfully.| |`check_initialization_order` | `false` | If `true`, attempts to catch initialization order issues.| |`continue_on_error` | `0` | Allows an application to continue running while reporting unique memory safety errors. `0` - disabled, `1` - output to `stdout`, `2` - output to `stderr`. See [continue_on_error](asan-continue-on-error.md).| |`detect_container_overflow` | `true` | If `true`, honor the container overflow annotations. See [ContainerOverflow](./error-container-overflow.md).| |`detect_invalid_pointer_pairs` | `0` | If >`0`, the tool detects operations like <, <=, >, >=, and - on invalid pointer pairs, such as pointers that belong to different objects. Higher values increase detection effort.| |`detect_stack_use_after_return` | `false` | Enables `stack-use-after-return` checking at runtime. Requires `/fsanitize-address-use-after-return`. See [stack-use-after-return](./error-stack-use-after-return.md).| -|`disable_coredump` | `true`/`false` (on non-64-bit systems) | Disables core dumping. By default, the tool sets `disable_coredump=1` on 64-bit systems to prevent dumping a 16T+ core file. The tool ignores this flag on operating systems that don't dump core by default and for sanitizers that don't reserve large amounts of virtual memory.| |`exitcode` | `1` | Override the program exit status with this value if the tool found an error.| |`external_symbolizer_path` | `""` | Path to external symbolizer. If empty, the tool will search `$PATH` for the symbolizer.| |`fast_unwind_on_malloc` | `true` | If available, ASan uses the fast frame-pointer-based unwinder on `malloc`/`free`.| -|`full_address_space` | `false` | Sanitize complete address space; by default kernel area on 32-bit platforms will not be sanitized.| |`halt_on_error` | `true` | Exit/abort the program after printing the first error report (May cause undefined behavior, use `continue_on_error` for full support).| |`handle_segv` | `true` | `false` - ASan will not handle `SEGV` errors, `true` - ASan handles `SEGV` errors.| |`handle_sigfpe` | `true` | `false` - ASan will not handle `SIGFPE` errors, `true` - ASan will handle `SIGFPE` errors.| @@ -43,9 +39,6 @@ The following is a list of actively supported options for the AddressSanitizer. |`intercept_strpbrk` | `true` | If `true`, uses custom wrappers for strpbrk function to find more errors.| |`intercept_strspn` | `true` | If `true`, uses custom wrappers for strspn and strcspn function to find more errors.| |`intercept_strstr` | `true` | If `true`, uses custom wrappers for strstr and strcasestr functions to find more errors.| -|`log_exe_name` | `false` | Mention name of executable when reporting error and append executable name to logs (as in `log_path.exe_name.pid`).| -|`log_path` | `stderr` | Write logs to `log_path.pid`. The special values are `stdout` and `stderr`. The default is `stderr`.| -|`log_to_syslog` | `false` | Write all sanitizer output to syslog in addition to other means of logging.| |`malloc_context_size` | `1` | Max number of stack frames kept for each allocation/deallocation.| |`malloc_fill_byte` | `0xbe` | Value used to fill the newly allocated memory.| |`max_malloc_fill_size` | `4096` | ASan allocator flag. `max_malloc_fill_size` is the maximal amount of bytes that will be filled with `malloc_fill_byte` on `malloc`.| From 6d7cd9c7c0aefa2a04fdaf88a1b9974c12603e44 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Fri, 15 Aug 2025 12:39:18 -0700 Subject: [PATCH 1436/2255] Fix verbiage --- docs/sanitizers/asan-flags.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 216b2b13424..dcfcbbd7db0 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -24,7 +24,7 @@ The following is a list of actively supported options for the AddressSanitizer. |`check_initialization_order` | `false` | If `true`, attempts to catch initialization order issues.| |`continue_on_error` | `0` | Allows an application to continue running while reporting unique memory safety errors. `0` - disabled, `1` - output to `stdout`, `2` - output to `stderr`. See [continue_on_error](asan-continue-on-error.md).| |`detect_container_overflow` | `true` | If `true`, honor the container overflow annotations. See [ContainerOverflow](./error-container-overflow.md).| -|`detect_invalid_pointer_pairs` | `0` | If >`0`, the tool detects operations like <, <=, >, >=, and - on invalid pointer pairs, such as pointers that belong to different objects. Higher values increase detection effort.| +|`detect_invalid_pointer_pairs` | `0` | If `1`, the tool detects operations like <, <=, >, >=, and - on invalid pointer pairs, such as pointers that belong to different objects.| |`detect_stack_use_after_return` | `false` | Enables `stack-use-after-return` checking at runtime. Requires `/fsanitize-address-use-after-return`. See [stack-use-after-return](./error-stack-use-after-return.md).| |`exitcode` | `1` | Override the program exit status with this value if the tool found an error.| |`external_symbolizer_path` | `""` | Path to external symbolizer. If empty, the tool will search `$PATH` for the symbolizer.| From 925462e539596a47a1c9b34b8734f77d80f4fa62 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Fri, 15 Aug 2025 12:39:27 -0700 Subject: [PATCH 1437/2255] Fix verbiage --- docs/sanitizers/asan-flags.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index dcfcbbd7db0..fc20008d032 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -35,7 +35,7 @@ The following is a list of actively supported options for the AddressSanitizer. |`handle_sigill` | `true` | `false` - ASan will not handle `SIGILL` errors, `true` - ASan will handle `SIGILL` errors.| |`help` | `false` | If `true`, ASan prints the flag options to console.| |`iat_overwrite`|`error`|`error` - report an error whenever an overwrite is detected, `protect` - attempt to avoid using the overwritten definition, `ignore` - never attempt to correct any overwritten functions. See [iat_overwrite](./asan-runtime.md#msvc-specific-addresssanitizer-runtime-options).| -|`include_if_exists` | `""` | Read more options from the given file (if it exists).| +|`include_if_exists` | `""` | Takes a path to a file, and reads options from the given file. ASan does not fail if file does not exist.| |`intercept_strpbrk` | `true` | If `true`, uses custom wrappers for strpbrk function to find more errors.| |`intercept_strspn` | `true` | If `true`, uses custom wrappers for strspn and strcspn function to find more errors.| |`intercept_strstr` | `true` | If `true`, uses custom wrappers for strstr and strcasestr functions to find more errors.| From 3696d2bd5a13229c0bac7eed951c226a541a5821 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Fri, 15 Aug 2025 12:39:45 -0700 Subject: [PATCH 1438/2255] Remove flag and fix verbiage --- docs/sanitizers/asan-flags.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index fc20008d032..441fd51018c 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -18,8 +18,7 @@ The following is a list of actively supported options for the AddressSanitizer. |`abort_on_error` | `false` | If `true`, ASan calls `abort()` instead of `_exit()` after printing the error report.| |`alloc_dealloc_mismatch` | `false` | Enables detection of mismatched memory operations such as `malloc`/`delete`, `new[]`/`free`, etc.| |`allocator_frees_and_returns_null_on_realloc_zero` | `1` | 1 - realloc(p, 0) is equivalent to free(p). 0 - realloc(p, 0) will return a non-`NULL` value.| -|`allocator_may_return_null` | `false` | If `true`, the allocator will return `nullptr` and fail when out of memory instead of crashing.| -|`allocator_release_to_os_interval_ms` | `-1` | Experimental. 64-bit allocator only. Specify minimum time interval in ms between attempts to release memory.| +|`allocator_may_return_null` | `false` | If `true`, the allocator will return `nullptr` and when out of memory. Instead of crashing, ASan emits a warning about the allocator's failure and execution resumes.| |`allow_user_poisoning` | `true` | If `true`, you may manually mark memory regions as poisoned or unpoisoned.| |`check_initialization_order` | `false` | If `true`, attempts to catch initialization order issues.| |`continue_on_error` | `0` | Allows an application to continue running while reporting unique memory safety errors. `0` - disabled, `1` - output to `stdout`, `2` - output to `stderr`. See [continue_on_error](asan-continue-on-error.md).| From adb8ee326b50c6acbff9020dd0f6c3dc5d87bb36 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Fri, 15 Aug 2025 12:46:50 -0700 Subject: [PATCH 1439/2255] Improve verbiage --- docs/sanitizers/asan-flags.md | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 441fd51018c..78ab019c135 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -24,14 +24,14 @@ The following is a list of actively supported options for the AddressSanitizer. |`continue_on_error` | `0` | Allows an application to continue running while reporting unique memory safety errors. `0` - disabled, `1` - output to `stdout`, `2` - output to `stderr`. See [continue_on_error](asan-continue-on-error.md).| |`detect_container_overflow` | `true` | If `true`, honor the container overflow annotations. See [ContainerOverflow](./error-container-overflow.md).| |`detect_invalid_pointer_pairs` | `0` | If `1`, the tool detects operations like <, <=, >, >=, and - on invalid pointer pairs, such as pointers that belong to different objects.| -|`detect_stack_use_after_return` | `false` | Enables `stack-use-after-return` checking at runtime. Requires `/fsanitize-address-use-after-return`. See [stack-use-after-return](./error-stack-use-after-return.md).| +|`detect_stack_use_after_return` | `false` | If `true`, ASan enables `stack-use-after-return` checking at runtime. Requires `/fsanitize-address-use-after-return`. See [stack-use-after-return](./error-stack-use-after-return.md).| |`exitcode` | `1` | Override the program exit status with this value if the tool found an error.| |`external_symbolizer_path` | `""` | Path to external symbolizer. If empty, the tool will search `$PATH` for the symbolizer.| |`fast_unwind_on_malloc` | `true` | If available, ASan uses the fast frame-pointer-based unwinder on `malloc`/`free`.| -|`halt_on_error` | `true` | Exit/abort the program after printing the first error report (May cause undefined behavior, use `continue_on_error` for full support).| -|`handle_segv` | `true` | `false` - ASan will not handle `SEGV` errors, `true` - ASan handles `SEGV` errors.| -|`handle_sigfpe` | `true` | `false` - ASan will not handle `SIGFPE` errors, `true` - ASan will handle `SIGFPE` errors.| -|`handle_sigill` | `true` | `false` - ASan will not handle `SIGILL` errors, `true` - ASan will handle `SIGILL` errors.| +|`halt_on_error` | `true` | Not supported. Use `continue_on_error` for full support.| +|`handle_segv` | `true` | If `true`, ASan handles `SEGV` errors.| +|`handle_sigfpe` | `true` | If `true`, ASan will handle `SIGFPE` errors.| +|`handle_sigill` | `true` | If `true`, ASan will handle `SIGILL` errors.| |`help` | `false` | If `true`, ASan prints the flag options to console.| |`iat_overwrite`|`error`|`error` - report an error whenever an overwrite is detected, `protect` - attempt to avoid using the overwritten definition, `ignore` - never attempt to correct any overwritten functions. See [iat_overwrite](./asan-runtime.md#msvc-specific-addresssanitizer-runtime-options).| |`include_if_exists` | `""` | Takes a path to a file, and reads options from the given file. ASan does not fail if file does not exist.| @@ -42,13 +42,11 @@ The following is a list of actively supported options for the AddressSanitizer. |`malloc_fill_byte` | `0xbe` | Value used to fill the newly allocated memory.| |`max_malloc_fill_size` | `4096` | ASan allocator flag. `max_malloc_fill_size` is the maximal amount of bytes that will be filled with `malloc_fill_byte` on `malloc`.| |`max_redzone` | `2048` | Maximal size (in bytes) of redzones around heap objects.| -|`min_uar_stack_size_log` | `16` | Minimum fake stack size log. (Minimum value accepted: `16`).| |`new_delete_type_mismatch` | `true` | Report errors on mismatch betwen size of new and delete. See [new-delete-type-mismatch](./error-new-delete-type-mismatch.md).| |`poison_heap` | `true` | Poison (or not) the heap memory on [de]allocation. Zero value is useful for benchmarking the allocator or instrumentator.| |`poison_partial` | `true` | If `true`, poison partially addressable 8-byte aligned words. This flag affects heap and global buffers, but not stack buffers.| |`print_cmdline` | `false` | Print command line on crash. With `continue_on_error` set >= `1`, print current working directory as `UTF-16` aware.| |`print_summary` | `true` | If `false`, disable printing error summaries in addition to error reports.| -|`quarantine_size` | `-1` | Deprecated, please use `quarantine_size_mb`.| |`quarantine_size_mb` | `-1` | Size (in Mb) of quarantine used to detect `use-after-free` errors. Lower value may increase the chance of false negatives.| |`redzone` | `16` | Minimal size (in bytes) of redzones around heap objects. Requirement: `redzone` >= 16, is a power of two.| |`replace_str` | `true` | If `true`, uses custom wrappers and replacements for libc string functions to find more errors.| @@ -58,8 +56,6 @@ The following is a list of actively supported options for the AddressSanitizer. |`strict_memcmp` | `true` | If `true`, assume that `memcmp(p1, p2, n)` always reads `n` bytes before comparing `p1` and `p2`.| |`strict_string_checks` | `false` | If `true` check that string arguments are properly null-terminated.| |`strip_path_prefix` | `""` | Strips this prefix from file paths in error reports.| -|`suppress_equal_pcs` | `true` | Deduplicate multiple reports for single source location in `halt_on_error=false` mode.| -|`suppressions` | `""` | Suppresses file name.| |`symbolize` | `true` | If `true`, use the `llvm-symbolizer` to turn virtual addresses to file or line locations.| |`symbolize_inline_frames` | `true` | Print inlined frames in stacktraces.| |`verbosity` | `0` | Verbosity level: `0` - default, `1` - more, `2+` - even more output.| From de63d18872b70764e80b249e14bf49b103ced63e Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Fri, 15 Aug 2025 12:47:18 -0700 Subject: [PATCH 1440/2255] Fix table syntax --- docs/sanitizers/asan-flags.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index ea82934c1b0..aaad77936cc 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -44,7 +44,6 @@ The following is a list of actively supported options for the AddressSanitizer. |`max_redzone` | `2048` | Maximal size (in bytes) of redzones around heap objects.| |`new_delete_type_mismatch` | `true` | Report errors on mismatch betwen size of new and delete. See [new-delete-type-mismatch](./error-new-delete-type-mismatch.md).| |`poison_heap` | `true` | Poison (or not) the heap memory on (de-)allocation. Zero value is useful for benchmarking the allocator or instrumentator.| - |`poison_partial` | `true` | If `true`, poison partially addressable 8-byte aligned words. This flag affects heap and global buffers, but not stack buffers.| |`print_cmdline` | `false` | Print command line on crash. With `continue_on_error` set >= `1`, print current working directory as `UTF-16` aware.| |`print_summary` | `true` | If `false`, disable printing error summaries in addition to error reports.| From f05cd86459d16126e3b74b2ccce2b8d90e5b3511 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Fri, 15 Aug 2025 12:58:29 -0700 Subject: [PATCH 1441/2255] Added experimental disclaimer --- docs/sanitizers/asan-flags.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index aaad77936cc..6823211bdca 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -24,7 +24,7 @@ The following is a list of actively supported options for the AddressSanitizer. |`continue_on_error` | `0` | Allows an application to continue running while reporting unique memory safety errors. `0` - disabled, `1` - output to `stdout`, `2` - output to `stderr`. See [continue_on_error](asan-continue-on-error.md).| |`detect_container_overflow` | `true` | If `true`, honor the container overflow annotations. See [ContainerOverflow](./error-container-overflow.md).| |`detect_invalid_pointer_pairs` | `0` | If `1`, the tool detects operations like <, <=, >, >=, and - on invalid pointer pairs, such as pointers that belong to different objects.| -|`detect_stack_use_after_return` | `false` | If `true`, ASan enables `stack-use-after-return` checking at runtime. Requires `/fsanitize-address-use-after-return`. See [stack-use-after-return](./error-stack-use-after-return.md).| +|`detect_stack_use_after_return` | `false` | Experimental. If `true`, ASan enables `stack-use-after-return` checking at runtime. Requires `/fsanitize-address-use-after-return`. See [stack-use-after-return](./error-stack-use-after-return.md).| |`exitcode` | `1` | Override the program exit status with this value if the tool found an error.| |`external_symbolizer_path` | `""` | Path to external symbolizer. If empty, the tool will search `$PATH` for the symbolizer.| |`fast_unwind_on_malloc` | `true` | If available, ASan uses the fast frame-pointer-based unwinder on `malloc`/`free`.| From b4a378dbab8c6c30b1f5c468698a0e91e1c3239d Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Fri, 15 Aug 2025 13:06:01 -0700 Subject: [PATCH 1442/2255] We still honor quarantine_size --- docs/sanitizers/asan-flags.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 6823211bdca..55d1fb49d4d 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -47,6 +47,7 @@ The following is a list of actively supported options for the AddressSanitizer. |`poison_partial` | `true` | If `true`, poison partially addressable 8-byte aligned words. This flag affects heap and global buffers, but not stack buffers.| |`print_cmdline` | `false` | Print command line on crash. With `continue_on_error` set >= `1`, print current working directory as `UTF-16` aware.| |`print_summary` | `true` | If `false`, disable printing error summaries in addition to error reports.| +|`quarantine_size` | `-1` | Deprecated, please use `quarantine_size_mb`.| |`quarantine_size_mb` | `-1` | Size (in Mb) of quarantine used to detect `use-after-free` errors. Lower value may increase the chance of false negatives.| |`redzone` | `16` | Minimal size (in bytes) of redzones around heap objects. Requirement: `redzone` >= 16, is a power of two.| |`replace_str` | `true` | If `true`, uses custom wrappers and replacements for libc string functions to find more errors.| From e553bab2d5d84179286818b343f51468306604f6 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla <77024043+39otsu@users.noreply.github.com> Date: Fri, 15 Aug 2025 13:23:24 -0700 Subject: [PATCH 1443/2255] Update docs/sanitizers/asan-flags.md Co-authored-by: David Justo --- docs/sanitizers/asan-flags.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 55d1fb49d4d..0b7721fc361 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -18,7 +18,7 @@ The following is a list of actively supported options for the AddressSanitizer. |`abort_on_error` | `false` | If `true`, ASan calls `abort()` instead of `_exit()` after printing the error report.| |`alloc_dealloc_mismatch` | `false` | Enables detection of mismatched memory operations such as `malloc`/`delete`, `new[]`/`free`, etc.| |`allocator_frees_and_returns_null_on_realloc_zero` | `1` | 1 - realloc(p, 0) is equivalent to free(p). 0 - realloc(p, 0) will return a non-`NULL` value.| -|`allocator_may_return_null` | `false` | If `true`, the allocator will return `nullptr` and when out of memory. Instead of crashing, ASan emits a warning about the allocator's failure and execution resumes.| +|`allocator_may_return_null` | `false` | If `true`, the allocator will return `nullptr` when out of memory. Instead of crashing, ASan emits a warning about the allocator's failure and execution continues.| |`allow_user_poisoning` | `true` | If `true`, you may manually mark memory regions as poisoned or unpoisoned.| |`check_initialization_order` | `false` | If `true`, attempts to catch initialization order issues.| |`continue_on_error` | `0` | Allows an application to continue running while reporting unique memory safety errors. `0` - disabled, `1` - output to `stdout`, `2` - output to `stderr`. See [continue_on_error](asan-continue-on-error.md).| From 21412ee0c5df9304492980ae171b9d33b82e9beb Mon Sep 17 00:00:00 2001 From: MacGyver Codilla <77024043+39otsu@users.noreply.github.com> Date: Fri, 15 Aug 2025 13:27:04 -0700 Subject: [PATCH 1444/2255] Update docs/sanitizers/asan-flags.md Co-authored-by: David Justo --- docs/sanitizers/asan-flags.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 0b7721fc361..046c1e01f19 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -19,7 +19,7 @@ The following is a list of actively supported options for the AddressSanitizer. |`alloc_dealloc_mismatch` | `false` | Enables detection of mismatched memory operations such as `malloc`/`delete`, `new[]`/`free`, etc.| |`allocator_frees_and_returns_null_on_realloc_zero` | `1` | 1 - realloc(p, 0) is equivalent to free(p). 0 - realloc(p, 0) will return a non-`NULL` value.| |`allocator_may_return_null` | `false` | If `true`, the allocator will return `nullptr` when out of memory. Instead of crashing, ASan emits a warning about the allocator's failure and execution continues.| -|`allow_user_poisoning` | `true` | If `true`, you may manually mark memory regions as poisoned or unpoisoned.| +|`allow_user_poisoning` | `true` | If `true`, you may manually mark memory regions as poisoned or unpoisoned using [these](https://learn.microsoft.com/en-us/cpp/sanitizers/asan-runtime?view=msvc-170#poisoning) APIs.| |`check_initialization_order` | `false` | If `true`, attempts to catch initialization order issues.| |`continue_on_error` | `0` | Allows an application to continue running while reporting unique memory safety errors. `0` - disabled, `1` - output to `stdout`, `2` - output to `stderr`. See [continue_on_error](asan-continue-on-error.md).| |`detect_container_overflow` | `true` | If `true`, honor the container overflow annotations. See [ContainerOverflow](./error-container-overflow.md).| From ec3814b5a4a7cdbf135be181bfcc6f91780dc43e Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 16 Aug 2025 22:16:59 +0800 Subject: [PATCH 1445/2255] Add blockquotes for error messages in range [C3221, C3250] --- docs/error-messages/compiler-errors-2/compiler-error-c3222.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3223.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3224.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3225.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3226.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3227.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3228.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3229.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3230.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3231.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3232.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3233.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3234.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3235.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3236.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3237.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3238.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3239.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3240.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3241.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3242.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3243.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3244.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3246.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3247.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3248.md | 2 +- 26 files changed, 26 insertions(+), 26 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3222.md b/docs/error-messages/compiler-errors-2/compiler-error-c3222.md index 09815402d91..b334fbfdc69 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3222.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3222.md @@ -8,7 +8,7 @@ ms.assetid: 5624bde8-2fd0-4b8b-92ce-5dfbaf91cf93 --- # Compiler Error C3222 -'parameter' : cannot declare default arguments for member functions of a managed or WinRT type or generic functions +> 'parameter' : cannot declare default arguments for member functions of a managed or WinRT type or generic functions It is not permitted to declare a method parameter with a default argument. An overloaded form of the method is one way to work around this issue. That is, define a method with the same name with no parameters and then initialize the variable in the method body. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3223.md b/docs/error-messages/compiler-errors-2/compiler-error-c3223.md index 0895d06aaa9..8cd6cdfae7b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3223.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3223.md @@ -8,7 +8,7 @@ ms.assetid: 1f4380b4-0413-40db-a868-62f97babaf78 --- # Compiler Error C3223 -'property' : you cannot apply 'typeid' to a property +> 'property' : you cannot apply 'typeid' to a property You cannot apply [typeid](../../extensions/typeid-cpp-component-extensions.md) to a property. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3224.md b/docs/error-messages/compiler-errors-2/compiler-error-c3224.md index 3262737e78b..1c70ef385e8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3224.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3224.md @@ -8,7 +8,7 @@ ms.assetid: 129be22f-8f3e-4fc6-9ccd-d27d8ef91251 --- # Compiler Error C3224 -'type' : no overloaded generic class takes 'number' generic type arguments +> 'type' : no overloaded generic class takes 'number' generic type arguments The compiler failed to find an appropriate overload. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3225.md b/docs/error-messages/compiler-errors-2/compiler-error-c3225.md index d43f5993964..d774ccbc59e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3225.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3225.md @@ -8,7 +8,7 @@ ms.assetid: f5f66973-256e-4298-ac46-c87819cbde34 --- # Compiler Error C3225 -generic type argument for 'arg' cannot be 'type', it must be a value type or handle type +> generic type argument for 'arg' cannot be 'type', it must be a value type or handle type The generic type argument was not of the correct type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3226.md b/docs/error-messages/compiler-errors-2/compiler-error-c3226.md index ecdbe62b7b5..9b52ecd39f7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3226.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3226.md @@ -8,7 +8,7 @@ ms.assetid: 636106ca-6f4e-4303-a6a0-8803221ec67d --- # Compiler Error C3226 -A template declaration is not allowed inside a generic declaration +> A template declaration is not allowed inside a generic declaration Use a generic declaration inside a generic class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3227.md b/docs/error-messages/compiler-errors-2/compiler-error-c3227.md index 4917215a910..80cb2f637df 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3227.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3227.md @@ -8,7 +8,7 @@ ms.assetid: 7939c23a-96c8-43c2-89e9-f217d132d155 --- # Compiler Error C3227 -'parameter' : cannot use 'keyword' to allocate a generic type +> 'parameter' : cannot use 'keyword' to allocate a generic type In order to instantiate a type, an appropriate constructor is required. However, the compiler is not able to ensure that an appropriate constructor is available. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3228.md b/docs/error-messages/compiler-errors-2/compiler-error-c3228.md index 78fa2305b55..2d470109bb8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3228.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3228.md @@ -8,7 +8,7 @@ ms.assetid: 9015adf9-17b0-4312-b4a7-c1f33e4126f4 --- # Compiler Error C3228 -'function' : generic type argument for 'param' cannot be 'type', it must be a valuetype or handle type +> 'function' : generic type argument for 'param' cannot be 'type', it must be a valuetype or handle type An incorrect type was passed as a generic type argument. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3229.md b/docs/error-messages/compiler-errors-2/compiler-error-c3229.md index ed9e525ef2c..a4942eb12d4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3229.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3229.md @@ -8,7 +8,7 @@ ms.assetid: f2d90923-aa8b-444f-ab10-1f37dbb864e1 --- # Compiler Error C3229 -'type' : indirections on a generic type parameter are not allowed +> 'type' : indirections on a generic type parameter are not allowed You cannot use generic parameters with `*`, `^`, or `&`. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3230.md b/docs/error-messages/compiler-errors-2/compiler-error-c3230.md index 75fbf6d7d1c..efa713316c8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3230.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3230.md @@ -8,7 +8,7 @@ ms.assetid: 5ec53f25-59f6-4801-81e7-7b68bf04994d --- # Compiler Error C3230 -'function' : template type argument for 'template' cannot contain a generic type parameter: 'param' +> 'function' : template type argument for 'template' cannot contain a generic type parameter: 'param' Templates are instantiated at compile time, but generics are instantiated at run time. Therefore, it is not possible to generate generic code that can call the template because the template cannot be instantiated at run time when the generic type is finally known. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3231.md b/docs/error-messages/compiler-errors-2/compiler-error-c3231.md index 8b4b8d161bf..188c1c39232 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3231.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3231.md @@ -8,7 +8,7 @@ ms.assetid: fe5dc352-e634-45fa-9534-3da176294c98 --- # Compiler Error C3231 -'arg' : template type argument cannot use a generic type parameter +> 'arg' : template type argument cannot use a generic type parameter Templates are instantiated at compile time, but generics are instantiated at run time. Therefore, it is not possible to generate generic code that can call the template because the template cannot be instantiated at run time when the generic type is finally known. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3232.md b/docs/error-messages/compiler-errors-2/compiler-error-c3232.md index ed8f0a32c43..0e649608bcf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3232.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3232.md @@ -8,7 +8,7 @@ ms.assetid: 3119b3a9-0eff-4a3f-b805-e4d160af9e39 --- # Compiler Error C3232 -'param' : a generic type parameter cannot be used in a qualified name +> 'param' : a generic type parameter cannot be used in a qualified name A generic type parameter was used incorrectly. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3233.md b/docs/error-messages/compiler-errors-2/compiler-error-c3233.md index cab7999c98c..00258840026 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3233.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3233.md @@ -8,7 +8,7 @@ ms.assetid: a9210830-1136-4f02-ba41-030c85f93547 --- # Compiler Error C3233 -'type' : generic type parameter already constrained +> 'type' : generic type parameter already constrained It is not valid to constrain a generic parameter in more than one `where` clause. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3234.md b/docs/error-messages/compiler-errors-2/compiler-error-c3234.md index 0239ec60f31..aca2c2cb1cd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3234.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3234.md @@ -8,7 +8,7 @@ ms.assetid: ebefc15a-e40d-424b-a3dd-d7e185d0ed7b --- # Compiler Error C3234 -a generic class may not derive from a generic type parameter +> a generic class may not derive from a generic type parameter A generic class cannot inherit from a generic type parameter. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3235.md b/docs/error-messages/compiler-errors-2/compiler-error-c3235.md index 40c569e6718..6372a127e41 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3235.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3235.md @@ -8,7 +8,7 @@ ms.assetid: 0554d6c7-e1dc-4c99-8934-cbcf491c8203 --- # Compiler Error C3235 -'specialization' : explicit or partial specialization of a generic class is not allowed +> 'specialization' : explicit or partial specialization of a generic class is not allowed Generic classes cannot be used for explicit or partial specializations. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3236.md b/docs/error-messages/compiler-errors-2/compiler-error-c3236.md index 7bdd011603e..22243cf6265 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3236.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3236.md @@ -8,7 +8,7 @@ ms.assetid: 4ef1871f-a348-44ae-922b-1e2081de20d0 --- # Compiler Error C3236 -explicit instantiation of a generic is not allowed +> explicit instantiation of a generic is not allowed The compiler does not allow explicit instantiation of generic classes. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3237.md b/docs/error-messages/compiler-errors-2/compiler-error-c3237.md index 5faaa77e2c8..7c06c794ceb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3237.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3237.md @@ -8,7 +8,7 @@ ms.assetid: 690970c8-e13b-4ff3-96e3-5fd93c4d356b --- # Compiler Error C3237 -'generic_class' : a generic class cannot be a custom attribute +> 'generic_class' : a generic class cannot be a custom attribute Generic classes cannot be user-defined attributes. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3238.md b/docs/error-messages/compiler-errors-2/compiler-error-c3238.md index fa015df2c29..2237497c130 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3238.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3238.md @@ -8,7 +8,7 @@ ms.assetid: 19942497-b3c5-4df0-9144-142ced92468b --- # Compiler Error C3238 -'type' : a type with this name has already been forwarded to assembly 'assembly' +> 'type' : a type with this name has already been forwarded to assembly 'assembly' A type was defined in a client application that is also defined, via type forwarding syntax, in a referenced assembly. Both types cannot be defined in the scope of the application. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3239.md b/docs/error-messages/compiler-errors-2/compiler-error-c3239.md index 9c080208e2a..7cbbdecb934 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3239.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3239.md @@ -8,7 +8,7 @@ ms.assetid: 22a518b7-020f-4f3c-9963-a094667fd1ac --- # Compiler Error C3239 -'type' : pointer to interior/pin pointer is disallowed by the common language runtime +> 'type' : pointer to interior/pin pointer is disallowed by the common language runtime The compiler encountered an invalid type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3240.md b/docs/error-messages/compiler-errors-2/compiler-error-c3240.md index 4dd2cc0d81f..77db2a352ab 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3240.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3240.md @@ -8,7 +8,7 @@ ms.assetid: 1a8dc213-b80c-47ae-ada0-e9554b635d1e --- # Compiler Error C3240 -'function' : must be a non-overloaded abstract member function of 'type' +> 'function' : must be a non-overloaded abstract member function of 'type' A base type contained a function that was defined. Function must be virtual. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3241.md b/docs/error-messages/compiler-errors-2/compiler-error-c3241.md index 34ba8ad6560..ace744db3bc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3241.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3241.md @@ -8,7 +8,7 @@ ms.assetid: 2ca14879-bba0-4a23-b22a-72cfff92d6a4 --- # Compiler Error C3241 -'method' : this method was not introduced by 'interface' +> 'method' : this method was not introduced by 'interface' When you explicitly override a function, the function signature must exactly match the declaration for the function that you are overriding. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3242.md b/docs/error-messages/compiler-errors-2/compiler-error-c3242.md index 323f6db037c..86c24ece1b8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3242.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3242.md @@ -8,6 +8,6 @@ ms.assetid: c7621ced-d5c7-4595-904b-bd871676784c --- # Compiler Error C3242 -'function' : you can only explicitly override virtual functions +> 'function' : you can only explicitly override virtual functions You tried to explicitly override a nonvirtual method. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3243.md b/docs/error-messages/compiler-errors-2/compiler-error-c3243.md index a250dd83090..e8b4c1a9b05 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3243.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3243.md @@ -8,7 +8,7 @@ ms.assetid: 35d8ad1a-377d-47df-be9d-c55eea23340f --- # Compiler Error C3243 -none of the overload functions were introduced by 'interface' +> none of the overload functions were introduced by 'interface' You tried to [explicitly override](../../cpp/explicit-overrides-cpp.md) a member that does not exist in the specified interface. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3244.md b/docs/error-messages/compiler-errors-2/compiler-error-c3244.md index acaad50b54a..82ca2ef344e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3244.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3244.md @@ -8,7 +8,7 @@ ms.assetid: dae6c49b-5212-4206-8f61-d4010c0b9969 --- # Compiler Error C3244 -'method' : this method was introduced by 'interface' not by 'interface' +> 'method' : this method was introduced by 'interface' not by 'interface' You tried to [explicitly override](../../cpp/explicit-overrides-cpp.md) a member that does not exist in the specified interface but does exist in another base class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3246.md b/docs/error-messages/compiler-errors-2/compiler-error-c3246.md index e3150e1036a..f480696567e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3246.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3246.md @@ -8,7 +8,7 @@ ms.assetid: ad85224a-e540-479b-a5eb-a3bc3964c30b --- # Compiler Error C3246 -'class' : cannot inherit from 'type' as it has been declared as 'sealed' +> 'class' : cannot inherit from 'type' as it has been declared as 'sealed' A class that is marked as [sealed](../../extensions/sealed-cpp-component-extensions.md) cannot be the base class for any other classes. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3247.md b/docs/error-messages/compiler-errors-2/compiler-error-c3247.md index b5fa60f4205..aa4d9756272 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3247.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3247.md @@ -8,7 +8,7 @@ ms.assetid: f9a2bbb5-3fce-40bf-9fd3-835a5f164dbb --- # Compiler Error C3247 -'class1' : a coclass cannot inherit from another coclass 'class2' +> 'class1' : a coclass cannot inherit from another coclass 'class2' A class marked with the [coclass](../../windows/attributes/coclass.md) attribute cannot inherit from another class marked with the `coclass` attribute. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3248.md b/docs/error-messages/compiler-errors-2/compiler-error-c3248.md index 700129cccdd..9c4639a7f70 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3248.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3248.md @@ -8,7 +8,7 @@ ms.assetid: d00b9d7d-b6be-4a5b-bb52-48174ea71fc4 --- # Compiler Error C3248 -'function1': function declared as '__sealed' cannot be overridden by 'function2' +> 'function1': function declared as '__sealed' cannot be overridden by 'function2' A derived class tried to override a **__sealed** virtual method. From 0dbfd7d3288d41e9db7868e19aea3ae1b3b433f4 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 16 Aug 2025 22:23:55 +0800 Subject: [PATCH 1446/2255] Add "Remarks" and "Example" headings for error references in range [C3221, C3250] --- docs/error-messages/compiler-errors-2/compiler-error-c3222.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3223.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3224.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3225.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3226.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3227.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3228.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3229.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3230.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3231.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3232.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3233.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3234.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3235.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3236.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3237.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3238.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3239.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3240.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3241.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3242.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3243.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3244.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3246.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3247.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3248.md | 2 ++ 26 files changed, 82 insertions(+) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3222.md b/docs/error-messages/compiler-errors-2/compiler-error-c3222.md index b334fbfdc69..9183a334154 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3222.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3222.md @@ -10,8 +10,12 @@ ms.assetid: 5624bde8-2fd0-4b8b-92ce-5dfbaf91cf93 > 'parameter' : cannot declare default arguments for member functions of a managed or WinRT type or generic functions +## Remarks + It is not permitted to declare a method parameter with a default argument. An overloaded form of the method is one way to work around this issue. That is, define a method with the same name with no parameters and then initialize the variable in the method body. +## Example + The following sample generates C3222: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3223.md b/docs/error-messages/compiler-errors-2/compiler-error-c3223.md index 8cd6cdfae7b..7936868323e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3223.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3223.md @@ -10,6 +10,8 @@ ms.assetid: 1f4380b4-0413-40db-a868-62f97babaf78 > 'property' : you cannot apply 'typeid' to a property +## Remarks + You cannot apply [typeid](../../extensions/typeid-cpp-component-extensions.md) to a property. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3224.md b/docs/error-messages/compiler-errors-2/compiler-error-c3224.md index 1c70ef385e8..8d2077d71cf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3224.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3224.md @@ -10,8 +10,12 @@ ms.assetid: 129be22f-8f3e-4fc6-9ccd-d27d8ef91251 > 'type' : no overloaded generic class takes 'number' generic type arguments +## Remarks + The compiler failed to find an appropriate overload. +## Example + The following sample generates C3224: ``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3225.md b/docs/error-messages/compiler-errors-2/compiler-error-c3225.md index d774ccbc59e..c86520b569f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3225.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3225.md @@ -10,6 +10,8 @@ ms.assetid: f5f66973-256e-4298-ac46-c87819cbde34 > generic type argument for 'arg' cannot be 'type', it must be a value type or handle type +## Remarks + The generic type argument was not of the correct type. For more information, see [Generics](../../extensions/generics-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3226.md b/docs/error-messages/compiler-errors-2/compiler-error-c3226.md index 9b52ecd39f7..e80b912c718 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3226.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3226.md @@ -10,8 +10,12 @@ ms.assetid: 636106ca-6f4e-4303-a6a0-8803221ec67d > A template declaration is not allowed inside a generic declaration +## Remarks + Use a generic declaration inside a generic class. +## Example + The following sample generates C3226: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3227.md b/docs/error-messages/compiler-errors-2/compiler-error-c3227.md index 80cb2f637df..9e45bcaec7c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3227.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3227.md @@ -10,6 +10,8 @@ ms.assetid: 7939c23a-96c8-43c2-89e9-f217d132d155 > 'parameter' : cannot use 'keyword' to allocate a generic type +## Remarks + In order to instantiate a type, an appropriate constructor is required. However, the compiler is not able to ensure that an appropriate constructor is available. You can use templates instead of generics to resolve this error, or you can use one of several methods to create an instance of the type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3228.md b/docs/error-messages/compiler-errors-2/compiler-error-c3228.md index 2d470109bb8..f675df00379 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3228.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3228.md @@ -10,8 +10,12 @@ ms.assetid: 9015adf9-17b0-4312-b4a7-c1f33e4126f4 > 'function' : generic type argument for 'param' cannot be 'type', it must be a valuetype or handle type +## Remarks + An incorrect type was passed as a generic type argument. +## Example + The following sample generates C3228: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3229.md b/docs/error-messages/compiler-errors-2/compiler-error-c3229.md index a4942eb12d4..1d8488218bd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3229.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3229.md @@ -10,6 +10,8 @@ ms.assetid: f2d90923-aa8b-444f-ab10-1f37dbb864e1 > 'type' : indirections on a generic type parameter are not allowed +## Remarks + You cannot use generic parameters with `*`, `^`, or `&`. ## Examples diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3230.md b/docs/error-messages/compiler-errors-2/compiler-error-c3230.md index efa713316c8..59da412d5ea 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3230.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3230.md @@ -10,8 +10,12 @@ ms.assetid: 5ec53f25-59f6-4801-81e7-7b68bf04994d > 'function' : template type argument for 'template' cannot contain a generic type parameter: 'param' +## Remarks + Templates are instantiated at compile time, but generics are instantiated at run time. Therefore, it is not possible to generate generic code that can call the template because the template cannot be instantiated at run time when the generic type is finally known. +## Example + The following sample generates C3230: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3231.md b/docs/error-messages/compiler-errors-2/compiler-error-c3231.md index 188c1c39232..75a74a5995b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3231.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3231.md @@ -10,8 +10,12 @@ ms.assetid: fe5dc352-e634-45fa-9534-3da176294c98 > 'arg' : template type argument cannot use a generic type parameter +## Remarks + Templates are instantiated at compile time, but generics are instantiated at run time. Therefore, it is not possible to generate generic code that can call the template because the template cannot be instantiated at run time when the generic type is finally known. +## Example + The following sample generates C3231: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3232.md b/docs/error-messages/compiler-errors-2/compiler-error-c3232.md index 0e649608bcf..78e8cd845b0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3232.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3232.md @@ -10,8 +10,12 @@ ms.assetid: 3119b3a9-0eff-4a3f-b805-e4d160af9e39 > 'param' : a generic type parameter cannot be used in a qualified name +## Remarks + A generic type parameter was used incorrectly. +## Example + The following sample generates C3232: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3233.md b/docs/error-messages/compiler-errors-2/compiler-error-c3233.md index 00258840026..8e6bf44e396 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3233.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3233.md @@ -10,8 +10,12 @@ ms.assetid: a9210830-1136-4f02-ba41-030c85f93547 > 'type' : generic type parameter already constrained +## Remarks + It is not valid to constrain a generic parameter in more than one `where` clause. +## Example + The following sample generates C3233: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3234.md b/docs/error-messages/compiler-errors-2/compiler-error-c3234.md index aca2c2cb1cd..969f9532ca9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3234.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3234.md @@ -10,6 +10,8 @@ ms.assetid: ebefc15a-e40d-424b-a3dd-d7e185d0ed7b > a generic class may not derive from a generic type parameter +## Remarks + A generic class cannot inherit from a generic type parameter. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3235.md b/docs/error-messages/compiler-errors-2/compiler-error-c3235.md index 6372a127e41..a783868304d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3235.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3235.md @@ -10,6 +10,8 @@ ms.assetid: 0554d6c7-e1dc-4c99-8934-cbcf491c8203 > 'specialization' : explicit or partial specialization of a generic class is not allowed +## Remarks + Generic classes cannot be used for explicit or partial specializations. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3236.md b/docs/error-messages/compiler-errors-2/compiler-error-c3236.md index 22243cf6265..fd35fd3e0fd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3236.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3236.md @@ -10,8 +10,12 @@ ms.assetid: 4ef1871f-a348-44ae-922b-1e2081de20d0 > explicit instantiation of a generic is not allowed +## Remarks + The compiler does not allow explicit instantiation of generic classes. +## Example + The following sample generates C3236: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3237.md b/docs/error-messages/compiler-errors-2/compiler-error-c3237.md index 7c06c794ceb..a5c43c743f1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3237.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3237.md @@ -10,6 +10,8 @@ ms.assetid: 690970c8-e13b-4ff3-96e3-5fd93c4d356b > 'generic_class' : a generic class cannot be a custom attribute +## Remarks + Generic classes cannot be user-defined attributes. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3238.md b/docs/error-messages/compiler-errors-2/compiler-error-c3238.md index 2237497c130..430a8d3ba58 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3238.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3238.md @@ -10,6 +10,8 @@ ms.assetid: 19942497-b3c5-4df0-9144-142ced92468b > 'type' : a type with this name has already been forwarded to assembly 'assembly' +## Remarks + A type was defined in a client application that is also defined, via type forwarding syntax, in a referenced assembly. Both types cannot be defined in the scope of the application. See [Type Forwarding (C++/CLI)](../../extensions/type-forwarding-cpp-cli.md) for more information. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3239.md b/docs/error-messages/compiler-errors-2/compiler-error-c3239.md index 7cbbdecb934..44cb98ba65a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3239.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3239.md @@ -10,8 +10,12 @@ ms.assetid: 22a518b7-020f-4f3c-9963-a094667fd1ac > 'type' : pointer to interior/pin pointer is disallowed by the common language runtime +## Remarks + The compiler encountered an invalid type. +## Example + The following sample generates C3229: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3240.md b/docs/error-messages/compiler-errors-2/compiler-error-c3240.md index 77db2a352ab..9d5401b323e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3240.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3240.md @@ -10,6 +10,8 @@ ms.assetid: 1a8dc213-b80c-47ae-ada0-e9554b635d1e > 'function' : must be a non-overloaded abstract member function of 'type' +## Remarks + A base type contained a function that was defined. Function must be virtual. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3241.md b/docs/error-messages/compiler-errors-2/compiler-error-c3241.md index ace744db3bc..55ab8365251 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3241.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3241.md @@ -10,8 +10,12 @@ ms.assetid: 2ca14879-bba0-4a23-b22a-72cfff92d6a4 > 'method' : this method was not introduced by 'interface' +## Remarks + When you explicitly override a function, the function signature must exactly match the declaration for the function that you are overriding. +## Example + The following sample generates C3241: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3242.md b/docs/error-messages/compiler-errors-2/compiler-error-c3242.md index 86c24ece1b8..8eb38f5649d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3242.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3242.md @@ -10,4 +10,6 @@ ms.assetid: c7621ced-d5c7-4595-904b-bd871676784c > 'function' : you can only explicitly override virtual functions +## Remarks + You tried to explicitly override a nonvirtual method. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3243.md b/docs/error-messages/compiler-errors-2/compiler-error-c3243.md index e8b4c1a9b05..2cdd3923457 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3243.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3243.md @@ -10,8 +10,12 @@ ms.assetid: 35d8ad1a-377d-47df-be9d-c55eea23340f > none of the overload functions were introduced by 'interface' +## Remarks + You tried to [explicitly override](../../cpp/explicit-overrides-cpp.md) a member that does not exist in the specified interface. +## Example + The following sample generates C3243: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3244.md b/docs/error-messages/compiler-errors-2/compiler-error-c3244.md index 82ca2ef344e..21285694e51 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3244.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3244.md @@ -10,8 +10,12 @@ ms.assetid: dae6c49b-5212-4206-8f61-d4010c0b9969 > 'method' : this method was introduced by 'interface' not by 'interface' +## Remarks + You tried to [explicitly override](../../cpp/explicit-overrides-cpp.md) a member that does not exist in the specified interface but does exist in another base class. +## Example + The following sample generates C3244: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3246.md b/docs/error-messages/compiler-errors-2/compiler-error-c3246.md index f480696567e..e7995ef59f9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3246.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3246.md @@ -10,8 +10,12 @@ ms.assetid: ad85224a-e540-479b-a5eb-a3bc3964c30b > 'class' : cannot inherit from 'type' as it has been declared as 'sealed' +## Remarks + A class that is marked as [sealed](../../extensions/sealed-cpp-component-extensions.md) cannot be the base class for any other classes. +## Example + The following sample generates C3246: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3247.md b/docs/error-messages/compiler-errors-2/compiler-error-c3247.md index aa4d9756272..679f5746c35 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3247.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3247.md @@ -10,8 +10,12 @@ ms.assetid: f9a2bbb5-3fce-40bf-9fd3-835a5f164dbb > 'class1' : a coclass cannot inherit from another coclass 'class2' +## Remarks + A class marked with the [coclass](../../windows/attributes/coclass.md) attribute cannot inherit from another class marked with the `coclass` attribute. +## Example + The following sample generates C3247: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3248.md b/docs/error-messages/compiler-errors-2/compiler-error-c3248.md index 9c4639a7f70..9708bc83379 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3248.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3248.md @@ -10,6 +10,8 @@ ms.assetid: d00b9d7d-b6be-4a5b-bb52-48174ea71fc4 > 'function1': function declared as '__sealed' cannot be overridden by 'function2' +## Remarks + A derived class tried to override a **__sealed** virtual method. C3248 is only reachable using the obsolete compiler option **/clr:oldSyntax**. From 057862396b8c6ef3a83a571a0ef582d9e1f71715 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 16 Aug 2025 22:25:55 +0800 Subject: [PATCH 1447/2255] Replace term "sample" with "example" for error references in range [C3221, C3250] --- .../compiler-errors-2/compiler-error-c3222.md | 2 +- .../compiler-errors-2/compiler-error-c3223.md | 2 +- .../compiler-errors-2/compiler-error-c3224.md | 2 +- .../compiler-errors-2/compiler-error-c3225.md | 6 +++--- .../compiler-errors-2/compiler-error-c3226.md | 4 ++-- .../compiler-errors-2/compiler-error-c3227.md | 2 +- .../compiler-errors-2/compiler-error-c3228.md | 2 +- .../compiler-errors-2/compiler-error-c3229.md | 4 ++-- .../compiler-errors-2/compiler-error-c3230.md | 2 +- .../compiler-errors-2/compiler-error-c3231.md | 2 +- .../compiler-errors-2/compiler-error-c3232.md | 2 +- .../compiler-errors-2/compiler-error-c3233.md | 2 +- .../compiler-errors-2/compiler-error-c3234.md | 2 +- .../compiler-errors-2/compiler-error-c3235.md | 2 +- .../compiler-errors-2/compiler-error-c3236.md | 4 ++-- .../compiler-errors-2/compiler-error-c3237.md | 2 +- .../compiler-errors-2/compiler-error-c3238.md | 6 +++--- .../compiler-errors-2/compiler-error-c3239.md | 2 +- .../compiler-errors-2/compiler-error-c3240.md | 2 +- .../compiler-errors-2/compiler-error-c3241.md | 2 +- .../compiler-errors-2/compiler-error-c3243.md | 2 +- .../compiler-errors-2/compiler-error-c3244.md | 2 +- .../compiler-errors-2/compiler-error-c3246.md | 2 +- .../compiler-errors-2/compiler-error-c3247.md | 2 +- 24 files changed, 31 insertions(+), 31 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3222.md b/docs/error-messages/compiler-errors-2/compiler-error-c3222.md index 9183a334154..3e15410a201 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3222.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3222.md @@ -16,7 +16,7 @@ It is not permitted to declare a method parameter with a default argument. An ov ## Example -The following sample generates C3222: +The following example generates C3222: ```cpp // C3222_2.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3223.md b/docs/error-messages/compiler-errors-2/compiler-error-c3223.md index 7936868323e..be2ba14b85d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3223.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3223.md @@ -16,7 +16,7 @@ You cannot apply [typeid](../../extensions/typeid-cpp-component-extensions.md) t ## Example -The following sample generates C3223. +The following example generates C3223. ```cpp // C3223.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3224.md b/docs/error-messages/compiler-errors-2/compiler-error-c3224.md index 8d2077d71cf..255d8f263f3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3224.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3224.md @@ -16,7 +16,7 @@ The compiler failed to find an appropriate overload. ## Example -The following sample generates C3224: +The following example generates C3224: ``` // C3224.cs diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3225.md b/docs/error-messages/compiler-errors-2/compiler-error-c3225.md index c86520b569f..44b4bff1dcf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3225.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3225.md @@ -18,7 +18,7 @@ For more information, see [Generics](../../extensions/generics-cpp-component-ext ## Examples -You cannot instantiate a generic type with a native type. The following sample generates C3225. +You cannot instantiate a generic type with a native type. The following example generates C3225. ```cpp // C3225.cpp @@ -36,7 +36,7 @@ int main() { } ``` -The following sample creates a component using C#. Notice that the constraint specifies that the generic type can only be instantiated with a value type. +The following example creates a component using C#. Notice that the constraint specifies that the generic type can only be instantiated with a value type. ``` // C3225_b.cs @@ -45,7 +45,7 @@ The following sample creates a component using C#. Notice that the constraint sp public class MyList where T: struct {} ``` -This sample consumes the C#-authored component, and violates the constraint that MyList can only be instantiated with a value type other than . The following sample generates C3225. +This example consumes the C#-authored component, and violates the constraint that MyList can only be instantiated with a value type other than . The following example generates C3225. ```cpp // C3225_c.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3226.md b/docs/error-messages/compiler-errors-2/compiler-error-c3226.md index e80b912c718..f87d3b57b4a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3226.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3226.md @@ -16,7 +16,7 @@ Use a generic declaration inside a generic class. ## Example -The following sample generates C3226: +The following example generates C3226: ```cpp // C3226.cpp @@ -28,7 +28,7 @@ ref class C { }; ``` -The following sample demonstrates a possible resolution: +The following example demonstrates a possible resolution: ```cpp // C3226b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3227.md b/docs/error-messages/compiler-errors-2/compiler-error-c3227.md index 9e45bcaec7c..9fc86ceb301 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3227.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3227.md @@ -18,7 +18,7 @@ You can use templates instead of generics to resolve this error, or you can use ## Example -The following sample generates C3227. +The following example generates C3227. ```cpp // C3227.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3228.md b/docs/error-messages/compiler-errors-2/compiler-error-c3228.md index f675df00379..b180997f0b4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3228.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3228.md @@ -16,7 +16,7 @@ An incorrect type was passed as a generic type argument. ## Example -The following sample generates C3228: +The following example generates C3228: ```cpp // C3228.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3229.md b/docs/error-messages/compiler-errors-2/compiler-error-c3229.md index 1d8488218bd..bb6b95e1735 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3229.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3229.md @@ -16,7 +16,7 @@ You cannot use generic parameters with `*`, `^`, or `&`. ## Examples -The following sample generates C3229. +The following example generates C3229. ```cpp // C3229.cpp @@ -33,7 +33,7 @@ ref class D { }; ``` -The following sample generates C3229. +The following example generates C3229. ```cpp // C3229_b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3230.md b/docs/error-messages/compiler-errors-2/compiler-error-c3230.md index 59da412d5ea..e664450c5ca 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3230.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3230.md @@ -16,7 +16,7 @@ Templates are instantiated at compile time, but generics are instantiated at run ## Example -The following sample generates C3230: +The following example generates C3230: ```cpp // C3230.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3231.md b/docs/error-messages/compiler-errors-2/compiler-error-c3231.md index 75a74a5995b..1ec2b826027 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3231.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3231.md @@ -16,7 +16,7 @@ Templates are instantiated at compile time, but generics are instantiated at run ## Example -The following sample generates C3231: +The following example generates C3231: ```cpp // C3231.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3232.md b/docs/error-messages/compiler-errors-2/compiler-error-c3232.md index 78e8cd845b0..56e7bbf0590 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3232.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3232.md @@ -16,7 +16,7 @@ A generic type parameter was used incorrectly. ## Example -The following sample generates C3232: +The following example generates C3232: ```cpp // C3232.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3233.md b/docs/error-messages/compiler-errors-2/compiler-error-c3233.md index 8e6bf44e396..4a6ded83496 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3233.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3233.md @@ -16,7 +16,7 @@ It is not valid to constrain a generic parameter in more than one `where` clause ## Example -The following sample generates C3233: +The following example generates C3233: ```cpp // C3233.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3234.md b/docs/error-messages/compiler-errors-2/compiler-error-c3234.md index 969f9532ca9..0cb1abbe0c8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3234.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3234.md @@ -16,7 +16,7 @@ A generic class cannot inherit from a generic type parameter. ## Example -The following sample generates C3234. +The following example generates C3234. ```cpp // C3234.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3235.md b/docs/error-messages/compiler-errors-2/compiler-error-c3235.md index a783868304d..48676dc28fe 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3235.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3235.md @@ -16,7 +16,7 @@ Generic classes cannot be used for explicit or partial specializations. ## Example -The following sample generates C3235. +The following example generates C3235. ```cpp // C3235.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3236.md b/docs/error-messages/compiler-errors-2/compiler-error-c3236.md index fd35fd3e0fd..c32de9a2431 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3236.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3236.md @@ -16,7 +16,7 @@ The compiler does not allow explicit instantiation of generic classes. ## Example -The following sample generates C3236: +The following example generates C3236: ```cpp // C3236.cpp @@ -27,7 +27,7 @@ public ref class X {}; generic ref class X; // C3236 ``` -The following sample demonstrates a possible resolution: +The following example demonstrates a possible resolution: ```cpp // C3236b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3237.md b/docs/error-messages/compiler-errors-2/compiler-error-c3237.md index a5c43c743f1..6a5959bce1d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3237.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3237.md @@ -16,7 +16,7 @@ Generic classes cannot be user-defined attributes. ## Example -The following sample generates C3237. +The following example generates C3237. ```cpp // C3237.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3238.md b/docs/error-messages/compiler-errors-2/compiler-error-c3238.md index 430a8d3ba58..2159b2a0a7c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3238.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3238.md @@ -18,7 +18,7 @@ See [Type Forwarding (C++/CLI)](../../extensions/type-forwarding-cpp-cli.md) for ## Examples -The following sample creates an assembly that contains a type that was forwarded from another assembly. +The following example creates an assembly that contains a type that was forwarded from another assembly. ```cpp // C3238.cpp @@ -26,7 +26,7 @@ The following sample creates an assembly that contains a type that was forwarded public ref class R {}; ``` -The following sample creates an assembly that used to contain the type definition, but not only contains type forwarding syntax. +The following example creates an assembly that used to contain the type definition, but not only contains type forwarding syntax. ```cpp // C3238_b.cpp @@ -35,7 +35,7 @@ The following sample creates an assembly that used to contain the type definitio [ assembly:TypeForwardedTo(R::typeid) ]; ``` -The following sample generates C3238. +The following example generates C3238. ```cpp // C3238_c.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3239.md b/docs/error-messages/compiler-errors-2/compiler-error-c3239.md index 44cb98ba65a..fa35e0c881d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3239.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3239.md @@ -16,7 +16,7 @@ The compiler encountered an invalid type. ## Example -The following sample generates C3229: +The following example generates C3229: ```cpp // C3239.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3240.md b/docs/error-messages/compiler-errors-2/compiler-error-c3240.md index 9d5401b323e..38d3dcc888b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3240.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3240.md @@ -16,7 +16,7 @@ A base type contained a function that was defined. Function must be virtual. ## Example -The following sample generates C3240. +The following example generates C3240. ```cpp // C3240.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3241.md b/docs/error-messages/compiler-errors-2/compiler-error-c3241.md index 55ab8365251..e8c298ed9d8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3241.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3241.md @@ -16,7 +16,7 @@ When you explicitly override a function, the function signature must exactly mat ## Example -The following sample generates C3241: +The following example generates C3241: ```cpp // C3241.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3243.md b/docs/error-messages/compiler-errors-2/compiler-error-c3243.md index 2cdd3923457..4f2f4fb074b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3243.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3243.md @@ -16,7 +16,7 @@ You tried to [explicitly override](../../cpp/explicit-overrides-cpp.md) a member ## Example -The following sample generates C3243: +The following example generates C3243: ```cpp // C3243.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3244.md b/docs/error-messages/compiler-errors-2/compiler-error-c3244.md index 21285694e51..9701b16b45b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3244.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3244.md @@ -16,7 +16,7 @@ You tried to [explicitly override](../../cpp/explicit-overrides-cpp.md) a member ## Example -The following sample generates C3244: +The following example generates C3244: ```cpp // C3244.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3246.md b/docs/error-messages/compiler-errors-2/compiler-error-c3246.md index e7995ef59f9..721d538bfc7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3246.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3246.md @@ -16,7 +16,7 @@ A class that is marked as [sealed](../../extensions/sealed-cpp-component-extensi ## Example -The following sample generates C3246: +The following example generates C3246: ```cpp // C3246_2.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3247.md b/docs/error-messages/compiler-errors-2/compiler-error-c3247.md index 679f5746c35..ba7221382b6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3247.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3247.md @@ -16,7 +16,7 @@ A class marked with the [coclass](../../windows/attributes/coclass.md) attribute ## Example -The following sample generates C3247: +The following example generates C3247: ```cpp // C3247.cpp From 5350e44e92397f2e4c2ba07fd587560a971dbe29 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 16 Aug 2025 22:30:05 +0800 Subject: [PATCH 1448/2255] Update metadata for error references in range [C3221, C3250] --- .../error-messages/compiler-errors-2/compiler-error-c3222.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3223.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3224.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3225.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3226.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3227.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3228.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3229.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3230.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3231.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3232.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3233.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3234.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3235.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3236.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3237.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3238.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3239.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3240.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3241.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3242.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3243.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3244.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3246.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3247.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3248.md | 5 ++--- 26 files changed, 52 insertions(+), 78 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3222.md b/docs/error-messages/compiler-errors-2/compiler-error-c3222.md index 3e15410a201..0bf257f399f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3222.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3222.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3222" title: "Compiler Error C3222" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3222" +ms.date: 11/04/2016 f1_keywords: ["C3222"] helpviewer_keywords: ["C3222"] -ms.assetid: 5624bde8-2fd0-4b8b-92ce-5dfbaf91cf93 --- # Compiler Error C3222 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3223.md b/docs/error-messages/compiler-errors-2/compiler-error-c3223.md index be2ba14b85d..778004eaa27 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3223.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3223.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3223" title: "Compiler Error C3223" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3223" +ms.date: 11/04/2016 f1_keywords: ["C3223"] helpviewer_keywords: ["C3223"] -ms.assetid: 1f4380b4-0413-40db-a868-62f97babaf78 --- # Compiler Error C3223 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3224.md b/docs/error-messages/compiler-errors-2/compiler-error-c3224.md index 255d8f263f3..83735abdfb6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3224.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3224.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3224" title: "Compiler Error C3224" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3224" +ms.date: 11/04/2016 f1_keywords: ["C3224"] helpviewer_keywords: ["C3224"] -ms.assetid: 129be22f-8f3e-4fc6-9ccd-d27d8ef91251 --- # Compiler Error C3224 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3225.md b/docs/error-messages/compiler-errors-2/compiler-error-c3225.md index 44b4bff1dcf..c0bb2c4af55 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3225.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3225.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3225" title: "Compiler Error C3225" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3225" +ms.date: 11/04/2016 f1_keywords: ["C3225"] helpviewer_keywords: ["C3225"] -ms.assetid: f5f66973-256e-4298-ac46-c87819cbde34 --- # Compiler Error C3225 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3226.md b/docs/error-messages/compiler-errors-2/compiler-error-c3226.md index f87d3b57b4a..298a2d8a275 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3226.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3226.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3226" title: "Compiler Error C3226" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3226" +ms.date: 11/04/2016 f1_keywords: ["C3226"] helpviewer_keywords: ["C3226"] -ms.assetid: 636106ca-6f4e-4303-a6a0-8803221ec67d --- # Compiler Error C3226 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3227.md b/docs/error-messages/compiler-errors-2/compiler-error-c3227.md index 9fc86ceb301..1674ac4f55c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3227.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3227.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3227" title: "Compiler Error C3227" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3227" +ms.date: 11/04/2016 f1_keywords: ["C3227"] helpviewer_keywords: ["C3227"] -ms.assetid: 7939c23a-96c8-43c2-89e9-f217d132d155 --- # Compiler Error C3227 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3228.md b/docs/error-messages/compiler-errors-2/compiler-error-c3228.md index b180997f0b4..99d9de708f6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3228.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3228.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3228" title: "Compiler Error C3228" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3228" +ms.date: 11/04/2016 f1_keywords: ["C3228"] helpviewer_keywords: ["C3228"] -ms.assetid: 9015adf9-17b0-4312-b4a7-c1f33e4126f4 --- # Compiler Error C3228 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3229.md b/docs/error-messages/compiler-errors-2/compiler-error-c3229.md index bb6b95e1735..c19f6c0bf8c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3229.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3229.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3229" title: "Compiler Error C3229" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3229" +ms.date: 11/04/2016 f1_keywords: ["C3229"] helpviewer_keywords: ["C3229"] -ms.assetid: f2d90923-aa8b-444f-ab10-1f37dbb864e1 --- # Compiler Error C3229 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3230.md b/docs/error-messages/compiler-errors-2/compiler-error-c3230.md index e664450c5ca..c58e94c7255 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3230.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3230.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3230" title: "Compiler Error C3230" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3230" +ms.date: 11/04/2016 f1_keywords: ["C3230"] helpviewer_keywords: ["C3230"] -ms.assetid: 5ec53f25-59f6-4801-81e7-7b68bf04994d --- # Compiler Error C3230 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3231.md b/docs/error-messages/compiler-errors-2/compiler-error-c3231.md index 1ec2b826027..f6d1c264985 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3231.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3231.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3231" title: "Compiler Error C3231" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3231" +ms.date: 11/04/2016 f1_keywords: ["C3231"] helpviewer_keywords: ["C3231"] -ms.assetid: fe5dc352-e634-45fa-9534-3da176294c98 --- # Compiler Error C3231 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3232.md b/docs/error-messages/compiler-errors-2/compiler-error-c3232.md index 56e7bbf0590..9608a4d798f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3232.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3232.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3232" title: "Compiler Error C3232" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3232" +ms.date: 11/04/2016 f1_keywords: ["C3232"] helpviewer_keywords: ["C3232"] -ms.assetid: 3119b3a9-0eff-4a3f-b805-e4d160af9e39 --- # Compiler Error C3232 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3233.md b/docs/error-messages/compiler-errors-2/compiler-error-c3233.md index 4a6ded83496..93f9a1bbf8e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3233.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3233.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3233" title: "Compiler Error C3233" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3233" +ms.date: 11/04/2016 f1_keywords: ["C3233"] helpviewer_keywords: ["C3233"] -ms.assetid: a9210830-1136-4f02-ba41-030c85f93547 --- # Compiler Error C3233 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3234.md b/docs/error-messages/compiler-errors-2/compiler-error-c3234.md index 0cb1abbe0c8..e6b26096cb8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3234.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3234.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3234" title: "Compiler Error C3234" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3234" +ms.date: 11/04/2016 f1_keywords: ["C3234"] helpviewer_keywords: ["C3234"] -ms.assetid: ebefc15a-e40d-424b-a3dd-d7e185d0ed7b --- # Compiler Error C3234 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3235.md b/docs/error-messages/compiler-errors-2/compiler-error-c3235.md index 48676dc28fe..e88284ee42d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3235.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3235.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3235" title: "Compiler Error C3235" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3235" +ms.date: 11/04/2016 f1_keywords: ["C3235"] helpviewer_keywords: ["C3235"] -ms.assetid: 0554d6c7-e1dc-4c99-8934-cbcf491c8203 --- # Compiler Error C3235 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3236.md b/docs/error-messages/compiler-errors-2/compiler-error-c3236.md index c32de9a2431..40f1e394497 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3236.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3236.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3236" title: "Compiler Error C3236" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3236" +ms.date: 11/04/2016 f1_keywords: ["C3236"] helpviewer_keywords: ["C3236"] -ms.assetid: 4ef1871f-a348-44ae-922b-1e2081de20d0 --- # Compiler Error C3236 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3237.md b/docs/error-messages/compiler-errors-2/compiler-error-c3237.md index 6a5959bce1d..7e528bc49d1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3237.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3237.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3237" title: "Compiler Error C3237" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3237" +ms.date: 11/04/2016 f1_keywords: ["C3237"] helpviewer_keywords: ["C3237"] -ms.assetid: 690970c8-e13b-4ff3-96e3-5fd93c4d356b --- # Compiler Error C3237 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3238.md b/docs/error-messages/compiler-errors-2/compiler-error-c3238.md index 2159b2a0a7c..f2c99fe1706 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3238.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3238.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3238" title: "Compiler Error C3238" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3238" +ms.date: 11/04/2016 f1_keywords: ["C3238"] helpviewer_keywords: ["C3238"] -ms.assetid: 19942497-b3c5-4df0-9144-142ced92468b --- # Compiler Error C3238 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3239.md b/docs/error-messages/compiler-errors-2/compiler-error-c3239.md index fa35e0c881d..58302dfdb41 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3239.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3239.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3239" title: "Compiler Error C3239" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3239" +ms.date: 11/04/2016 f1_keywords: ["C3239"] helpviewer_keywords: ["C3239"] -ms.assetid: 22a518b7-020f-4f3c-9963-a094667fd1ac --- # Compiler Error C3239 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3240.md b/docs/error-messages/compiler-errors-2/compiler-error-c3240.md index 38d3dcc888b..19d9853fa83 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3240.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3240.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3240" title: "Compiler Error C3240" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3240" +ms.date: 11/04/2016 f1_keywords: ["C3240"] helpviewer_keywords: ["C3240"] -ms.assetid: 1a8dc213-b80c-47ae-ada0-e9554b635d1e --- # Compiler Error C3240 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3241.md b/docs/error-messages/compiler-errors-2/compiler-error-c3241.md index e8c298ed9d8..9151758b840 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3241.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3241.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3241" title: "Compiler Error C3241" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3241" +ms.date: 11/04/2016 f1_keywords: ["C3241"] helpviewer_keywords: ["C3241"] -ms.assetid: 2ca14879-bba0-4a23-b22a-72cfff92d6a4 --- # Compiler Error C3241 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3242.md b/docs/error-messages/compiler-errors-2/compiler-error-c3242.md index 8eb38f5649d..290e2ae1513 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3242.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3242.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3242" title: "Compiler Error C3242" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3242" +ms.date: 11/04/2016 f1_keywords: ["C3242"] helpviewer_keywords: ["C3242"] -ms.assetid: c7621ced-d5c7-4595-904b-bd871676784c --- # Compiler Error C3242 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3243.md b/docs/error-messages/compiler-errors-2/compiler-error-c3243.md index 4f2f4fb074b..3a52311b95c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3243.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3243.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3243" title: "Compiler Error C3243" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3243" +ms.date: 11/04/2016 f1_keywords: ["C3243"] helpviewer_keywords: ["C3243"] -ms.assetid: 35d8ad1a-377d-47df-be9d-c55eea23340f --- # Compiler Error C3243 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3244.md b/docs/error-messages/compiler-errors-2/compiler-error-c3244.md index 9701b16b45b..f94ccbfce06 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3244.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3244.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3244" title: "Compiler Error C3244" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3244" +ms.date: 11/04/2016 f1_keywords: ["C3244"] helpviewer_keywords: ["C3244"] -ms.assetid: dae6c49b-5212-4206-8f61-d4010c0b9969 --- # Compiler Error C3244 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3246.md b/docs/error-messages/compiler-errors-2/compiler-error-c3246.md index 721d538bfc7..6458e051d45 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3246.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3246.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3246" title: "Compiler Error C3246" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3246" +ms.date: 11/04/2016 f1_keywords: ["C3246"] helpviewer_keywords: ["C3246"] -ms.assetid: ad85224a-e540-479b-a5eb-a3bc3964c30b --- # Compiler Error C3246 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3247.md b/docs/error-messages/compiler-errors-2/compiler-error-c3247.md index ba7221382b6..93888a5ddb5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3247.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3247.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3247" title: "Compiler Error C3247" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3247" +ms.date: 11/04/2016 f1_keywords: ["C3247"] helpviewer_keywords: ["C3247"] -ms.assetid: f9a2bbb5-3fce-40bf-9fd3-835a5f164dbb --- # Compiler Error C3247 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3248.md b/docs/error-messages/compiler-errors-2/compiler-error-c3248.md index 9708bc83379..f2edd92a462 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3248.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3248.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3248" title: "Compiler Error C3248" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3248" +ms.date: 11/04/2016 f1_keywords: ["C3248"] helpviewer_keywords: ["C3248"] -ms.assetid: d00b9d7d-b6be-4a5b-bb52-48174ea71fc4 --- # Compiler Error C3248 From 8736f5b1ac789d13aa0cf503c590a28272a3bf96 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 17 Aug 2025 23:10:07 +0800 Subject: [PATCH 1449/2255] Add blockquotes for error messages in range [C3251, C3280] --- docs/error-messages/compiler-errors-2/compiler-error-c3252.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3253.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3254.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3255.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3262.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3264.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3265.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3266.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3269.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3270.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3271.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3272.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3273.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3274.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3276.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3277.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3279.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3280.md | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3252.md b/docs/error-messages/compiler-errors-2/compiler-error-c3252.md index 979108c12a0..8f516143829 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3252.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3252.md @@ -8,7 +8,7 @@ ms.assetid: aa9ad096-e9ac-41c7-8ad9-b966751c7c75 --- # Compiler Error C3252 -'method' : cannot reduce accessibility of a virtual method in a managed or WinRT type +> 'method' : cannot reduce accessibility of a virtual method in a managed or WinRT type A class that implements a virtual method from a base class or any method from an interface cannot reduce the access of that method. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3253.md b/docs/error-messages/compiler-errors-2/compiler-error-c3253.md index 789a18bd235..931d6f7a4af 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3253.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3253.md @@ -8,7 +8,7 @@ ms.assetid: da40be26-0f78-4730-8727-ad11cddf8869 --- # Compiler Error C3253 -'function' : error with explicit override +> 'function' : error with explicit override An explicit override was specified incorrectly. For example, you cannot specify an implementation for an override that you also specify as pure. For more information, see [Explicit Overrides](../../extensions/explicit-overrides-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3254.md b/docs/error-messages/compiler-errors-2/compiler-error-c3254.md index 8d7f4685f95..8c5d38bf43c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3254.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3254.md @@ -8,7 +8,7 @@ ms.assetid: 93427b10-fa72-4e43-80d1-1a6e122f9f40 --- # Compiler Error C3254 -'explicit override' : class contains explicit override 'override' but does not derive from an interface that contains the function declaration +> 'explicit override' : class contains explicit override 'override' but does not derive from an interface that contains the function declaration When you [explicitly override](../../cpp/explicit-overrides-cpp.md) a method, the class that contains the override must derive, directly or indirectly, from the type that contains the function you are overriding. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3255.md b/docs/error-messages/compiler-errors-2/compiler-error-c3255.md index 5e2b71a8530..7f825db9462 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3255.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3255.md @@ -8,7 +8,7 @@ ms.assetid: 877ffca2-fd92-44b6-9060-6091b928b1c1 --- # Compiler Error C3255 -'value type' : cannot dynamically allocate this value type object on native heap +> 'value type' : cannot dynamically allocate this value type object on native heap Instances of a value type (see [Classes and Structs](../../extensions/classes-and-structs-cpp-component-extensions.md)) that contain managed members can be created on the stack but not on the heap. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3262.md b/docs/error-messages/compiler-errors-2/compiler-error-c3262.md index aeff907ea7f..cba1bb17051 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3262.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3262.md @@ -8,7 +8,7 @@ ms.assetid: 3e74b9aa-de3c-4492-9331-ee73012b958b --- # Compiler Error C3262 -invalid array indexing: '#' dimension(s) specified for '#'-dimensional 'array type' +> invalid array indexing: '#' dimension(s) specified for '#'-dimensional 'array type' An array was improperly subscripted. The number of indices may not match the number of dimensions in the array. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3264.md b/docs/error-messages/compiler-errors-2/compiler-error-c3264.md index 2f620f59858..754de813759 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3264.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3264.md @@ -8,7 +8,7 @@ ms.assetid: 94ece687-2364-4f7a-8ebb-7afd3ae9d63d --- # Compiler Error C3264 -'class' : a class-constructor cannot have a return type +> 'class' : a class-constructor cannot have a return type Class constructors cannot have return types. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3265.md b/docs/error-messages/compiler-errors-2/compiler-error-c3265.md index c1b01d64d2f..4f891b1c9ca 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3265.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3265.md @@ -8,7 +8,7 @@ ms.assetid: 10ab3e17-4a9f-4120-bab5-21473869b70f --- # Compiler Error C3265 -cannot declare a managed 'managed construct' in an unmanaged 'unmanaged construct' +> cannot declare a managed 'managed construct' in an unmanaged 'unmanaged construct' You cannot include a managed object in an unmanaged context. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3266.md b/docs/error-messages/compiler-errors-2/compiler-error-c3266.md index 80ca7c50aaa..e7c9ec20d07 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3266.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3266.md @@ -8,7 +8,7 @@ ms.assetid: 7375c099-acb7-42f6-898d-57cfefa010b8 --- # Compiler Error C3266 -'class' : a class-constructor must have a 'void' parameter list +> 'class' : a class-constructor must have a 'void' parameter list Class-constructors in a class using /clr programming cannot take parameters. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3269.md b/docs/error-messages/compiler-errors-2/compiler-error-c3269.md index 30e3769f27f..22d10a0d60f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3269.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3269.md @@ -8,7 +8,7 @@ ms.assetid: c575f067-244d-4dd5-bf58-9e7630ea58b7 --- # Compiler Error C3269 -'function' : a member-function of a managed or WinRTtype cannot be declared with '...' +> 'function' : a member-function of a managed or WinRTtype cannot be declared with '...' Managed and WinRT class member functions cannot declare variable-length parameter lists. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3270.md b/docs/error-messages/compiler-errors-2/compiler-error-c3270.md index 1fbce5730df..ca242820223 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3270.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3270.md @@ -8,7 +8,7 @@ ms.assetid: 70e6e76b-7415-48f5-a61e-2ed50caf08e4 --- # Compiler Error C3270 -'field': the FieldOffset attribute can only be used in the context of StructLayout(Explicit), in which case it is required +> 'field': the FieldOffset attribute can only be used in the context of StructLayout(Explicit), in which case it is required A field was marked with **FieldOffset**, which is only allowed when **StructLayout(Explicit)** is in effect. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3271.md b/docs/error-messages/compiler-errors-2/compiler-error-c3271.md index 13e5aa3832a..bf82888973b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3271.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3271.md @@ -8,7 +8,7 @@ ms.assetid: 16d8bd1d-2e30-4c6a-a07f-0c4f3342fab5 --- # Compiler Error C3271 -'member': invalid value 'value' for the FieldOffset attribute +> 'member': invalid value 'value' for the FieldOffset attribute A negative number was passed to the **FieldOffset** attribute. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3272.md b/docs/error-messages/compiler-errors-2/compiler-error-c3272.md index 6431d6dcf5b..c9d2886de6b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3272.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3272.md @@ -8,7 +8,7 @@ ms.assetid: 7cdf254d-f207-4116-a1bf-7386f3b82a6f --- # Compiler Error C3272 -'symbol' : symbol requires FieldOffset, as it is a member of type typename defined with StructLayout(LayoutKind::Explicit) +> 'symbol' : symbol requires FieldOffset, as it is a member of type typename defined with StructLayout(LayoutKind::Explicit) When `StructLayout(LayoutKind::Explicit)` is in effect, fields must be marked with `FieldOffset`. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3273.md b/docs/error-messages/compiler-errors-2/compiler-error-c3273.md index c1d5a9f6802..199e03a1e5c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3273.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3273.md @@ -8,7 +8,7 @@ ms.assetid: 1d2ce9d9-222b-4cab-94e2-d2c1a9f5ebe0 --- # Compiler Error C3273 -__finally cannot be used on an exception block in unmanaged code. +> __finally cannot be used on an exception block in unmanaged code. The following sample generates C3273: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3274.md b/docs/error-messages/compiler-errors-2/compiler-error-c3274.md index b3732ce47ae..3189f779d30 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3274.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3274.md @@ -8,7 +8,7 @@ ms.assetid: 1f03f18e-b569-48eb-9249-11c70122a305 --- # Compiler Error C3274 -__finally/finally without matching try +> __finally/finally without matching try A [__finally](../../cpp/try-finally-statement.md) or [finally](../../dotnet/finally.md) statement was found without a matching **`try`**. To resolve this, either delete the **`__finally`** statement or add a **`try`** statement for the **`__finally`**. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3276.md b/docs/error-messages/compiler-errors-2/compiler-error-c3276.md index 7734a6efa52..5a99ed0d370 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3276.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3276.md @@ -8,6 +8,6 @@ ms.assetid: dd6b4fd2-094d-4d34-a467-a9afd59789f7 --- # Compiler Error C3276 -'keyword' : jump out of __finally/finally block has undefined behavior during termination handling +> 'keyword' : jump out of __finally/finally block has undefined behavior during termination handling This error is the same as the [C4532](../../error-messages/compiler-warnings/compiler-warning-level-1-c4532.md) warning. However, when you are using /clr, this condition cannot be disabled with the [warning](../../preprocessor/warning.md) pragma. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3277.md b/docs/error-messages/compiler-errors-2/compiler-error-c3277.md index 5dda1f60f5e..30e4e2ee1e3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3277.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3277.md @@ -8,7 +8,7 @@ ms.assetid: 8ac5f476-e30c-4879-92c6-f03cdbd74045 --- # Compiler Error C3277 -cannot define an unmanaged enum 'enum' inside managed 'type' +> cannot define an unmanaged enum 'enum' inside managed 'type' An enumeration was defined incorrectly inside a managed type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3279.md b/docs/error-messages/compiler-errors-2/compiler-error-c3279.md index ed97e7991d8..b7f20b86a7b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3279.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3279.md @@ -8,7 +8,7 @@ ms.assetid: 639afc20-984c-4a95-be35-8bf9409f02d5 --- # Compiler Error C3279 -partial and explicit specializations as well as explicit instantiations of class templates declared in the cli namespace are disallowed +> partial and explicit specializations as well as explicit instantiations of class templates declared in the cli namespace are disallowed The `cli` namespace is defined by Microsoft and contains pseudo-templates. The Microsoft C++ compiler does not allow user-defined, partial and explicit specializations, and explicit instantiations of class templates in this namespace. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3280.md b/docs/error-messages/compiler-errors-2/compiler-error-c3280.md index c4d98cceae1..14c03dcd1e8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3280.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3280.md @@ -8,7 +8,7 @@ ms.assetid: 86dc5bbc-8818-4786-a728-9334268d308b --- # Compiler Error C3280 -'class' : a member-function of a managed type cannot be compiled as an unmanaged function +> 'class' : a member-function of a managed type cannot be compiled as an unmanaged function Managed class member functions cannot be compiled as unmanaged functions. From bb45a4b1621ec94ab4a3879d34ca51f3ddf12cc2 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 17 Aug 2025 23:14:41 +0800 Subject: [PATCH 1450/2255] Add "Remarks" and "Example" headings for error references in range [C3251, C3280] --- docs/error-messages/compiler-errors-2/compiler-error-c3251.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3252.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3253.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3254.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3255.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3262.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3264.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3265.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3266.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3269.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3270.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3271.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3272.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3273.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3274.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3275.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3276.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3277.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3279.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3280.md | 4 ++++ 20 files changed, 72 insertions(+) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3251.md b/docs/error-messages/compiler-errors-2/compiler-error-c3251.md index 8756c4429db..413521fc4c8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3251.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3251.md @@ -10,6 +10,8 @@ ms.assetid: 541c163e-5ee9-457c-a1e5-da860788b10d > cannot invoke base class method on a value type instance +## Remarks + The following error occurs because `GetClass` is a member of `Microsoft.Runtime.Object`, not of `Microsoft.Runtime.Integer4`. This error is obsolete in Visual Studio 2022 and later versions. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3252.md b/docs/error-messages/compiler-errors-2/compiler-error-c3252.md index 8f516143829..b1b5733841f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3252.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3252.md @@ -10,10 +10,14 @@ ms.assetid: aa9ad096-e9ac-41c7-8ad9-b966751c7c75 > 'method' : cannot reduce accessibility of a virtual method in a managed or WinRT type +## Remarks + A class that implements a virtual method from a base class or any method from an interface cannot reduce the access of that method. Note that all methods in an interface are public. +## Example + The following sample generates C3252 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3253.md b/docs/error-messages/compiler-errors-2/compiler-error-c3253.md index 931d6f7a4af..037dce08e11 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3253.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3253.md @@ -10,8 +10,12 @@ ms.assetid: da40be26-0f78-4730-8727-ad11cddf8869 > 'function' : error with explicit override +## Remarks + An explicit override was specified incorrectly. For example, you cannot specify an implementation for an override that you also specify as pure. For more information, see [Explicit Overrides](../../extensions/explicit-overrides-cpp-component-extensions.md). +## Example + The following sample generates C3253: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3254.md b/docs/error-messages/compiler-errors-2/compiler-error-c3254.md index 8c5d38bf43c..cb54584d948 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3254.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3254.md @@ -10,8 +10,12 @@ ms.assetid: 93427b10-fa72-4e43-80d1-1a6e122f9f40 > 'explicit override' : class contains explicit override 'override' but does not derive from an interface that contains the function declaration +## Remarks + When you [explicitly override](../../cpp/explicit-overrides-cpp.md) a method, the class that contains the override must derive, directly or indirectly, from the type that contains the function you are overriding. +## Example + The following sample generates C3254: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3255.md b/docs/error-messages/compiler-errors-2/compiler-error-c3255.md index 7f825db9462..97ffc53200b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3255.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3255.md @@ -10,8 +10,12 @@ ms.assetid: 877ffca2-fd92-44b6-9060-6091b928b1c1 > 'value type' : cannot dynamically allocate this value type object on native heap +## Remarks + Instances of a value type (see [Classes and Structs](../../extensions/classes-and-structs-cpp-component-extensions.md)) that contain managed members can be created on the stack but not on the heap. +## Example + The following sample generates C3255: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3262.md b/docs/error-messages/compiler-errors-2/compiler-error-c3262.md index cba1bb17051..b119ff49c59 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3262.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3262.md @@ -10,8 +10,12 @@ ms.assetid: 3e74b9aa-de3c-4492-9331-ee73012b958b > invalid array indexing: '#' dimension(s) specified for '#'-dimensional 'array type' +## Remarks + An array was improperly subscripted. The number of indices may not match the number of dimensions in the array. +## Example + The following sample generates C3262: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3264.md b/docs/error-messages/compiler-errors-2/compiler-error-c3264.md index 754de813759..4e0726cfd1c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3264.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3264.md @@ -10,8 +10,12 @@ ms.assetid: 94ece687-2364-4f7a-8ebb-7afd3ae9d63d > 'class' : a class-constructor cannot have a return type +## Remarks + Class constructors cannot have return types. +## Example + The following sample generates C3264: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3265.md b/docs/error-messages/compiler-errors-2/compiler-error-c3265.md index 4f891b1c9ca..c9ac30cff4c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3265.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3265.md @@ -10,8 +10,12 @@ ms.assetid: 10ab3e17-4a9f-4120-bab5-21473869b70f > cannot declare a managed 'managed construct' in an unmanaged 'unmanaged construct' +## Remarks + You cannot include a managed object in an unmanaged context. +## Example + The following sample reproduces C3265: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3266.md b/docs/error-messages/compiler-errors-2/compiler-error-c3266.md index e7c9ec20d07..2c062118c15 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3266.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3266.md @@ -10,8 +10,12 @@ ms.assetid: 7375c099-acb7-42f6-898d-57cfefa010b8 > 'class' : a class-constructor must have a 'void' parameter list +## Remarks + Class-constructors in a class using /clr programming cannot take parameters. +## Example + The following sample generates C3266: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3269.md b/docs/error-messages/compiler-errors-2/compiler-error-c3269.md index 22d10a0d60f..d1568d0ed8e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3269.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3269.md @@ -10,8 +10,12 @@ ms.assetid: c575f067-244d-4dd5-bf58-9e7630ea58b7 > 'function' : a member-function of a managed or WinRTtype cannot be declared with '...' +## Remarks + Managed and WinRT class member functions cannot declare variable-length parameter lists. +## Example + The following sample generates C3269 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3270.md b/docs/error-messages/compiler-errors-2/compiler-error-c3270.md index ca242820223..2f3a72e7e4d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3270.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3270.md @@ -10,8 +10,12 @@ ms.assetid: 70e6e76b-7415-48f5-a61e-2ed50caf08e4 > 'field': the FieldOffset attribute can only be used in the context of StructLayout(Explicit), in which case it is required +## Remarks + A field was marked with **FieldOffset**, which is only allowed when **StructLayout(Explicit)** is in effect. +## Example + The following sample generates C3270: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3271.md b/docs/error-messages/compiler-errors-2/compiler-error-c3271.md index bf82888973b..35b9cb9e5fc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3271.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3271.md @@ -10,8 +10,12 @@ ms.assetid: 16d8bd1d-2e30-4c6a-a07f-0c4f3342fab5 > 'member': invalid value 'value' for the FieldOffset attribute +## Remarks + A negative number was passed to the **FieldOffset** attribute. +## Example + The following sample generates C3271: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3272.md b/docs/error-messages/compiler-errors-2/compiler-error-c3272.md index c9d2886de6b..7307ea2e0b8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3272.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3272.md @@ -10,8 +10,12 @@ ms.assetid: 7cdf254d-f207-4116-a1bf-7386f3b82a6f > 'symbol' : symbol requires FieldOffset, as it is a member of type typename defined with StructLayout(LayoutKind::Explicit) +## Remarks + When `StructLayout(LayoutKind::Explicit)` is in effect, fields must be marked with `FieldOffset`. +## Example + The following sample generates C3272: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3273.md b/docs/error-messages/compiler-errors-2/compiler-error-c3273.md index 199e03a1e5c..c21530dece0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3273.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3273.md @@ -10,6 +10,8 @@ ms.assetid: 1d2ce9d9-222b-4cab-94e2-d2c1a9f5ebe0 > __finally cannot be used on an exception block in unmanaged code. +## Example + The following sample generates C3273: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3274.md b/docs/error-messages/compiler-errors-2/compiler-error-c3274.md index 3189f779d30..a82e8113c0a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3274.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3274.md @@ -10,8 +10,12 @@ ms.assetid: 1f03f18e-b569-48eb-9249-11c70122a305 > __finally/finally without matching try +## Remarks + A [__finally](../../cpp/try-finally-statement.md) or [finally](../../dotnet/finally.md) statement was found without a matching **`try`**. To resolve this, either delete the **`__finally`** statement or add a **`try`** statement for the **`__finally`**. +## Example + The following sample generates C3274: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3275.md b/docs/error-messages/compiler-errors-2/compiler-error-c3275.md index ec6d61c49ef..5004f9f1cf0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3275.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3275.md @@ -10,6 +10,8 @@ ms.assetid: 5752680f-7d3e-4c42-ba9c-845e09d32e7a > 'enum member' : cannot use this symbol without qualifier +## Remarks + When using managed code and when two or more enumerations contain an identifier with the same name, you must explicitly qualify references to the identifier. C3275 is only reachable using the obsolete compiler option **`/clr:oldSyntax`**. It's not generated in Visual Studio 2022 or later versions. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3276.md b/docs/error-messages/compiler-errors-2/compiler-error-c3276.md index 5a99ed0d370..c4a52f85519 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3276.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3276.md @@ -10,4 +10,6 @@ ms.assetid: dd6b4fd2-094d-4d34-a467-a9afd59789f7 > 'keyword' : jump out of __finally/finally block has undefined behavior during termination handling +## Remarks + This error is the same as the [C4532](../../error-messages/compiler-warnings/compiler-warning-level-1-c4532.md) warning. However, when you are using /clr, this condition cannot be disabled with the [warning](../../preprocessor/warning.md) pragma. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3277.md b/docs/error-messages/compiler-errors-2/compiler-error-c3277.md index 30e4e2ee1e3..8fc2469a8c0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3277.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3277.md @@ -10,8 +10,12 @@ ms.assetid: 8ac5f476-e30c-4879-92c6-f03cdbd74045 > cannot define an unmanaged enum 'enum' inside managed 'type' +## Remarks + An enumeration was defined incorrectly inside a managed type. +## Example + The following sample generates C3277: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3279.md b/docs/error-messages/compiler-errors-2/compiler-error-c3279.md index b7f20b86a7b..14f9a49eb5b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3279.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3279.md @@ -10,8 +10,12 @@ ms.assetid: 639afc20-984c-4a95-be35-8bf9409f02d5 > partial and explicit specializations as well as explicit instantiations of class templates declared in the cli namespace are disallowed +## Remarks + The `cli` namespace is defined by Microsoft and contains pseudo-templates. The Microsoft C++ compiler does not allow user-defined, partial and explicit specializations, and explicit instantiations of class templates in this namespace. +## Example + The following sample generates C3279: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3280.md b/docs/error-messages/compiler-errors-2/compiler-error-c3280.md index 14c03dcd1e8..c06206030f5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3280.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3280.md @@ -10,8 +10,12 @@ ms.assetid: 86dc5bbc-8818-4786-a728-9334268d308b > 'class' : a member-function of a managed type cannot be compiled as an unmanaged function +## Remarks + Managed class member functions cannot be compiled as unmanaged functions. +## Example + The following sample generates C3280: ```cpp From 462b3c7fd9b8ead7f210192db518bc2ff9bd005f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 17 Aug 2025 23:16:04 +0800 Subject: [PATCH 1451/2255] Replace term "sample" with "example" for error references in range [C3251, C3280] --- docs/error-messages/compiler-errors-2/compiler-error-c3252.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3253.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3254.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3255.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3262.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3264.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3265.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3266.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3268.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3269.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3270.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3271.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3272.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3273.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3274.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3277.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3278.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3279.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3280.md | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3252.md b/docs/error-messages/compiler-errors-2/compiler-error-c3252.md index b1b5733841f..b95962cba1d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3252.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3252.md @@ -18,7 +18,7 @@ Note that all methods in an interface are public. ## Example -The following sample generates C3252 and shows how to fix it: +The following example generates C3252 and shows how to fix it: ```cpp // C3252.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3253.md b/docs/error-messages/compiler-errors-2/compiler-error-c3253.md index 037dce08e11..46e90270950 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3253.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3253.md @@ -16,7 +16,7 @@ An explicit override was specified incorrectly. For example, you cannot specify ## Example -The following sample generates C3253: +The following example generates C3253: ```cpp // C3253.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3254.md b/docs/error-messages/compiler-errors-2/compiler-error-c3254.md index cb54584d948..10d1555f841 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3254.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3254.md @@ -16,7 +16,7 @@ When you [explicitly override](../../cpp/explicit-overrides-cpp.md) a method, th ## Example -The following sample generates C3254: +The following example generates C3254: ```cpp // C3254.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3255.md b/docs/error-messages/compiler-errors-2/compiler-error-c3255.md index 97ffc53200b..20a8c5c7704 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3255.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3255.md @@ -16,7 +16,7 @@ Instances of a value type (see [Classes and Structs](../../extensions/classes-an ## Example -The following sample generates C3255: +The following example generates C3255: ```cpp // C3255.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3262.md b/docs/error-messages/compiler-errors-2/compiler-error-c3262.md index b119ff49c59..1dc4da61595 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3262.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3262.md @@ -16,7 +16,7 @@ An array was improperly subscripted. The number of indices may not match the num ## Example -The following sample generates C3262: +The following example generates C3262: ```cpp // C3262.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3264.md b/docs/error-messages/compiler-errors-2/compiler-error-c3264.md index 4e0726cfd1c..121e7374843 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3264.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3264.md @@ -16,7 +16,7 @@ Class constructors cannot have return types. ## Example -The following sample generates C3264: +The following example generates C3264: ```cpp // C3264_2.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3265.md b/docs/error-messages/compiler-errors-2/compiler-error-c3265.md index c9ac30cff4c..8787521d77c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3265.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3265.md @@ -16,7 +16,7 @@ You cannot include a managed object in an unmanaged context. ## Example -The following sample reproduces C3265: +The following example reproduces C3265: ```cpp // C3265_2.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3266.md b/docs/error-messages/compiler-errors-2/compiler-error-c3266.md index 2c062118c15..93d193a4f63 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3266.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3266.md @@ -16,7 +16,7 @@ Class-constructors in a class using /clr programming cannot take parameters. ## Example -The following sample generates C3266: +The following example generates C3266: ```cpp // C3266.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3268.md b/docs/error-messages/compiler-errors-2/compiler-error-c3268.md index f58d77ec0de..bbc7e2712fe 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3268.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3268.md @@ -18,7 +18,7 @@ See [Generics](../../extensions/generics-cpp-component-extensions.md) for more i ## Example -The following sample generates C3268. +The following example generates C3268. ```cpp // C3268.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3269.md b/docs/error-messages/compiler-errors-2/compiler-error-c3269.md index d1568d0ed8e..d99897be536 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3269.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3269.md @@ -16,7 +16,7 @@ Managed and WinRT class member functions cannot declare variable-length paramete ## Example -The following sample generates C3269 and shows how to fix it: +The following example generates C3269 and shows how to fix it: ```cpp // C3269_2.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3270.md b/docs/error-messages/compiler-errors-2/compiler-error-c3270.md index 2f3a72e7e4d..b2b2f87db7d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3270.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3270.md @@ -16,7 +16,7 @@ A field was marked with **FieldOffset**, which is only allowed when **StructLayo ## Example -The following sample generates C3270: +The following example generates C3270: ```cpp // C3270_2.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3271.md b/docs/error-messages/compiler-errors-2/compiler-error-c3271.md index 35b9cb9e5fc..33a13a28be7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3271.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3271.md @@ -16,7 +16,7 @@ A negative number was passed to the **FieldOffset** attribute. ## Example -The following sample generates C3271: +The following example generates C3271: ```cpp // C3271.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3272.md b/docs/error-messages/compiler-errors-2/compiler-error-c3272.md index 7307ea2e0b8..12c655feb44 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3272.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3272.md @@ -16,7 +16,7 @@ When `StructLayout(LayoutKind::Explicit)` is in effect, fields must be marked wi ## Example -The following sample generates C3272: +The following example generates C3272: ```cpp // C3272_2.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3273.md b/docs/error-messages/compiler-errors-2/compiler-error-c3273.md index c21530dece0..914b807c65b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3273.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3273.md @@ -12,7 +12,7 @@ ms.assetid: 1d2ce9d9-222b-4cab-94e2-d2c1a9f5ebe0 ## Example -The following sample generates C3273: +The following example generates C3273: ```cpp // C3273.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3274.md b/docs/error-messages/compiler-errors-2/compiler-error-c3274.md index a82e8113c0a..b4fba54c8d6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3274.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3274.md @@ -16,7 +16,7 @@ A [__finally](../../cpp/try-finally-statement.md) or [finally](../../dotnet/fina ## Example -The following sample generates C3274: +The following example generates C3274: ```cpp // C3274.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3277.md b/docs/error-messages/compiler-errors-2/compiler-error-c3277.md index 8fc2469a8c0..f9f327289e2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3277.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3277.md @@ -16,7 +16,7 @@ An enumeration was defined incorrectly inside a managed type. ## Example -The following sample generates C3277: +The following example generates C3277: ```cpp // C3277a.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3278.md b/docs/error-messages/compiler-errors-2/compiler-error-c3278.md index 633bd972416..fafb911d672 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3278.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3278.md @@ -16,7 +16,7 @@ A call was made to an interface method or a pure method, which is not allowed. ## Example -The following sample generates C3278: +The following example generates C3278: ```cpp // C3278_2.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3279.md b/docs/error-messages/compiler-errors-2/compiler-error-c3279.md index 14f9a49eb5b..b773fd93cb1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3279.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3279.md @@ -16,7 +16,7 @@ The `cli` namespace is defined by Microsoft and contains pseudo-templates. The M ## Example -The following sample generates C3279: +The following example generates C3279: ```cpp // C3279.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3280.md b/docs/error-messages/compiler-errors-2/compiler-error-c3280.md index c06206030f5..aabbacdd4f6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3280.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3280.md @@ -16,7 +16,7 @@ Managed class member functions cannot be compiled as unmanaged functions. ## Example -The following sample generates C3280: +The following example generates C3280: ```cpp // C3280_2.cpp From e4c01341a7acd0b94486a002c98ab6810d586903 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 17 Aug 2025 23:19:27 +0800 Subject: [PATCH 1452/2255] Update metadata for error references in range [C3251, C3280] --- .../error-messages/compiler-errors-2/compiler-error-c3251.md | 3 +-- .../error-messages/compiler-errors-2/compiler-error-c3252.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3253.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3254.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3255.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3262.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3264.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3265.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3266.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3268.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3269.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3270.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3271.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3272.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3273.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3274.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3275.md | 3 +-- .../error-messages/compiler-errors-2/compiler-error-c3276.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3277.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3278.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3279.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3280.md | 5 ++--- 22 files changed, 42 insertions(+), 64 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3251.md b/docs/error-messages/compiler-errors-2/compiler-error-c3251.md index 413521fc4c8..ff7203c63a0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3251.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3251.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3251" title: "Compiler Error C3251" +description: "Learn more about: Compiler Error C3251" ms.date: 06/01/2022 f1_keywords: ["C3251"] helpviewer_keywords: ["C3251"] -ms.assetid: 541c163e-5ee9-457c-a1e5-da860788b10d --- # Compiler Error C3251 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3252.md b/docs/error-messages/compiler-errors-2/compiler-error-c3252.md index b95962cba1d..0313cb3e10d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3252.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3252.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3252" title: "Compiler Error C3252" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3252" +ms.date: 11/04/2016 f1_keywords: ["C3252"] helpviewer_keywords: ["C3252"] -ms.assetid: aa9ad096-e9ac-41c7-8ad9-b966751c7c75 --- # Compiler Error C3252 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3253.md b/docs/error-messages/compiler-errors-2/compiler-error-c3253.md index 46e90270950..3fc664e8ad4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3253.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3253.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3253" title: "Compiler Error C3253" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3253" +ms.date: 11/04/2016 f1_keywords: ["C3253"] helpviewer_keywords: ["C3253"] -ms.assetid: da40be26-0f78-4730-8727-ad11cddf8869 --- # Compiler Error C3253 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3254.md b/docs/error-messages/compiler-errors-2/compiler-error-c3254.md index 10d1555f841..564020dfafb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3254.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3254.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3254" title: "Compiler Error C3254" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3254" +ms.date: 11/04/2016 f1_keywords: ["C3254"] helpviewer_keywords: ["C3254"] -ms.assetid: 93427b10-fa72-4e43-80d1-1a6e122f9f40 --- # Compiler Error C3254 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3255.md b/docs/error-messages/compiler-errors-2/compiler-error-c3255.md index 20a8c5c7704..85780e5caf6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3255.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3255.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3255" title: "Compiler Error C3255" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3255" +ms.date: 11/04/2016 f1_keywords: ["C3255"] helpviewer_keywords: ["C3255"] -ms.assetid: 877ffca2-fd92-44b6-9060-6091b928b1c1 --- # Compiler Error C3255 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3262.md b/docs/error-messages/compiler-errors-2/compiler-error-c3262.md index 1dc4da61595..a03b9b56756 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3262.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3262.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3262" title: "Compiler Error C3262" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3262" +ms.date: 11/04/2016 f1_keywords: ["C3262"] helpviewer_keywords: ["C3262"] -ms.assetid: 3e74b9aa-de3c-4492-9331-ee73012b958b --- # Compiler Error C3262 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3264.md b/docs/error-messages/compiler-errors-2/compiler-error-c3264.md index 121e7374843..67246af20c0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3264.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3264.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3264" title: "Compiler Error C3264" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3264" +ms.date: 11/04/2016 f1_keywords: ["C3264"] helpviewer_keywords: ["C3264"] -ms.assetid: 94ece687-2364-4f7a-8ebb-7afd3ae9d63d --- # Compiler Error C3264 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3265.md b/docs/error-messages/compiler-errors-2/compiler-error-c3265.md index 8787521d77c..0a42b012bb7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3265.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3265.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3265" title: "Compiler Error C3265" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3265" +ms.date: 11/04/2016 f1_keywords: ["C3265"] helpviewer_keywords: ["C3265"] -ms.assetid: 10ab3e17-4a9f-4120-bab5-21473869b70f --- # Compiler Error C3265 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3266.md b/docs/error-messages/compiler-errors-2/compiler-error-c3266.md index 93d193a4f63..74c180fce42 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3266.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3266.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3266" title: "Compiler Error C3266" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3266" +ms.date: 11/04/2016 f1_keywords: ["C3266"] helpviewer_keywords: ["C3266"] -ms.assetid: 7375c099-acb7-42f6-898d-57cfefa010b8 --- # Compiler Error C3266 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3268.md b/docs/error-messages/compiler-errors-2/compiler-error-c3268.md index bbc7e2712fe..48c86a4db5a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3268.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3268.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3268" title: "Compiler Error C3268" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3268" +ms.date: 11/04/2016 f1_keywords: ["C3268"] helpviewer_keywords: ["C3268"] -ms.assetid: d74a630c-daea-4e29-9759-83efef7fb184 --- # Compiler Error C3268 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3269.md b/docs/error-messages/compiler-errors-2/compiler-error-c3269.md index d99897be536..dda026a75a8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3269.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3269.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3269" title: "Compiler Error C3269" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3269" +ms.date: 11/04/2016 f1_keywords: ["C3269"] helpviewer_keywords: ["C3269"] -ms.assetid: c575f067-244d-4dd5-bf58-9e7630ea58b7 --- # Compiler Error C3269 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3270.md b/docs/error-messages/compiler-errors-2/compiler-error-c3270.md index b2b2f87db7d..67d801e0485 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3270.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3270.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3270" title: "Compiler Error C3270" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3270" +ms.date: 11/04/2016 f1_keywords: ["C3270"] helpviewer_keywords: ["C3270"] -ms.assetid: 70e6e76b-7415-48f5-a61e-2ed50caf08e4 --- # Compiler Error C3270 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3271.md b/docs/error-messages/compiler-errors-2/compiler-error-c3271.md index 33a13a28be7..d40c824e597 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3271.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3271.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3271" title: "Compiler Error C3271" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3271" +ms.date: 11/04/2016 f1_keywords: ["C3271"] helpviewer_keywords: ["C3271"] -ms.assetid: 16d8bd1d-2e30-4c6a-a07f-0c4f3342fab5 --- # Compiler Error C3271 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3272.md b/docs/error-messages/compiler-errors-2/compiler-error-c3272.md index 12c655feb44..6cdc82dc549 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3272.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3272.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3272" title: "Compiler Error C3272" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3272" +ms.date: 11/04/2016 f1_keywords: ["C3272"] helpviewer_keywords: ["C3272"] -ms.assetid: 7cdf254d-f207-4116-a1bf-7386f3b82a6f --- # Compiler Error C3272 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3273.md b/docs/error-messages/compiler-errors-2/compiler-error-c3273.md index 914b807c65b..c19397dfa91 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3273.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3273.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3273" title: "Compiler Error C3273" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3273" +ms.date: 11/04/2016 f1_keywords: ["C3273"] helpviewer_keywords: ["C3273"] -ms.assetid: 1d2ce9d9-222b-4cab-94e2-d2c1a9f5ebe0 --- # Compiler Error C3273 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3274.md b/docs/error-messages/compiler-errors-2/compiler-error-c3274.md index b4fba54c8d6..59a9dfa237a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3274.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3274.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3274" title: "Compiler Error C3274" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3274" +ms.date: 11/04/2016 f1_keywords: ["C3274"] helpviewer_keywords: ["C3274"] -ms.assetid: 1f03f18e-b569-48eb-9249-11c70122a305 --- # Compiler Error C3274 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3275.md b/docs/error-messages/compiler-errors-2/compiler-error-c3275.md index 5004f9f1cf0..8164db7e728 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3275.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3275.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3275" title: "Compiler Error C3275" +description: "Learn more about: Compiler Error C3275" ms.date: 06/01/2022 f1_keywords: ["C3275"] helpviewer_keywords: ["C3275"] -ms.assetid: 5752680f-7d3e-4c42-ba9c-845e09d32e7a --- # Compiler Error C3275 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3276.md b/docs/error-messages/compiler-errors-2/compiler-error-c3276.md index c4a52f85519..2acd2f43475 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3276.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3276.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3276" title: "Compiler Error C3276" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3276" +ms.date: 11/04/2016 f1_keywords: ["C3276"] helpviewer_keywords: ["C3276"] -ms.assetid: dd6b4fd2-094d-4d34-a467-a9afd59789f7 --- # Compiler Error C3276 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3277.md b/docs/error-messages/compiler-errors-2/compiler-error-c3277.md index f9f327289e2..99686122c80 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3277.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3277.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3277" title: "Compiler Error C3277" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3277" +ms.date: 11/04/2016 f1_keywords: ["C3277"] helpviewer_keywords: ["C3277"] -ms.assetid: 8ac5f476-e30c-4879-92c6-f03cdbd74045 --- # Compiler Error C3277 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3278.md b/docs/error-messages/compiler-errors-2/compiler-error-c3278.md index fafb911d672..4fa4676b8f1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3278.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3278.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3278" title: "Compiler Error C3278" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3278" +ms.date: 11/04/2016 f1_keywords: ["C3278"] helpviewer_keywords: ["C3278"] -ms.assetid: 56f818f5-85a6-4792-843b-54fe16327658 --- # Compiler Error C3278 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3279.md b/docs/error-messages/compiler-errors-2/compiler-error-c3279.md index b773fd93cb1..2c8c603fabc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3279.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3279.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3279" title: "Compiler Error C3279" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3279" +ms.date: 11/04/2016 f1_keywords: ["C3279"] helpviewer_keywords: ["C3279"] -ms.assetid: 639afc20-984c-4a95-be35-8bf9409f02d5 --- # Compiler Error C3279 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3280.md b/docs/error-messages/compiler-errors-2/compiler-error-c3280.md index aabbacdd4f6..f0e23ff5668 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3280.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3280.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3280" title: "Compiler Error C3280" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3280" +ms.date: 11/04/2016 f1_keywords: ["C3280"] helpviewer_keywords: ["C3280"] -ms.assetid: 86dc5bbc-8818-4786-a728-9334268d308b --- # Compiler Error C3280 From 7727b998e07d276c390e33750f6a6cbafa7a3a17 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 18 Aug 2025 00:22:04 +0800 Subject: [PATCH 1453/2255] Add backticks in "AddressSanitizer runtime" topic --- docs/sanitizers/asan-runtime.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/sanitizers/asan-runtime.md b/docs/sanitizers/asan-runtime.md index 52fac2efa2a..7d588a4bd6b 100644 --- a/docs/sanitizers/asan-runtime.md +++ b/docs/sanitizers/asan-runtime.md @@ -11,13 +11,13 @@ The AddressSanitizer runtime library intercepts common memory allocation functio When compiling with `cl /fsanitize=address`, the compiler generates instructions to manage and check [shadow bytes](./asan-shadow-bytes.md). Your program uses this instrumentation to check memory accesses on the stack, in the heap, or in the global scope. The compiler also produces metadata describing stack and global variables. This metadata enables the runtime to generate precise error diagnostics: function names, lines, and columns in your source code. Combined, the compiler checks and runtime libraries can precisely diagnose many types of [memory safety bugs](./asan-error-examples.md) if they're encountered at run-time. -The list of runtime libraries for linking to the AddressSanitizer runtime, as of Visual Studio 17.7 Preview 3, follows. For more information about the `/MT` (statically link the runtime) and `/MD` (dynamically link the redist at runtime) options, see [/MD, /MT, /LD (Use Run-Time Library)](../build/reference/md-mt-ld-use-run-time-library.md). +The list of runtime libraries for linking to the AddressSanitizer runtime, as of Visual Studio 17.7 Preview 3, follows. For more information about the `/MT` (statically link the runtime) and `/MD` (dynamically link the redist at runtime) options, see [`/MD`, `/MT`, `/LD` (Use Run-Time Library)](../build/reference/md-mt-ld-use-run-time-library.md). > [!NOTE] > In the following table, *`{arch}`* is either *`i386`* or *`x86_64`*. > These libraries use Clang conventions for architecture names. MSVC conventions are normally `x86` and `x64` rather than `i386` and `x86_64`, but they refer to the same architectures. -| CRT option | AddressSanitizer runtime library (.lib) | Address runtime binary (.dll) +| CRT option | AddressSanitizer runtime library (`.lib`) | Address runtime binary (`.dll`) |--|--|--| | `/MT` or `/MTd` | *`clang_rt.asan_dynamic-{arch}`*, *`clang_rt.asan_static_runtime_thunk-{arch}`* | *`clang_rt.asan_dynamic-{arch}`* | `/MD` or `/MDd` | *`clang_rt.asan_dynamic-{arch}`*, *`clang_rt.asan_dynamic_runtime_thunk-{arch}`* | *`clang_rt.asan_dynamic-{arch}`* @@ -130,8 +130,8 @@ extern "C" const char* __asan_default_options() ### Unsupported AddressSanitizer options -- detect_container_overflow -- unmap_shadow_on_exit +- `detect_container_overflow` +- `unmap_shadow_on_exit` > [!NOTE] > The AddressSanitizer runtime option `halt_on_error` doesn't function the way you might expect. In both the Clang and the MSVC runtime libraries, many error types are considered **non-continuable**, including most memory corruption errors. @@ -152,9 +152,9 @@ For more information, see the [Differences with Clang 12.0](asan.md#differences) - If set to `"ignore"`, the runtime doesn't attempt to correct any overwritten functions and proceeds with execution. - `windows_fast_fail_on_error` -Boolean (false by default), set to `true` to enable the process to terminate with a __fastfail(71) after printing the error report. +Boolean (`false` by default), set to `true` to enable the process to terminate with a `__fastfail(71)` after printing the error report. >[!NOTE] ->When abort_on_error value is set to true, on Windows the program terminates with an exit(3). In order to not change current behavior we decided to introduce this new option instead. If both abort_on_error and windows_fast_fail_on_error are true, the program will exit with the __fastfail. +>When `abort_on_error` value is set to `true`, on Windows the program terminates with an `exit(3)`. In order to not change current behavior we decided to introduce this new option instead. If both `abort_on_error` and `windows_fast_fail_on_error` are `true`, the program will exit with the `__fastfail`. - `windows_hook_legacy_allocators` Boolean, set to `false` to disable interception of [`GlobalAlloc`](/windows/win32/api/winbase/nf-winbase-globalalloc) and [`LocalAlloc`](/windows/win32/api/winbase/nf-winbase-localalloc) allocators. From cb41768d114cd3682d31571dd3c38e33f71500ce Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 18 Aug 2025 00:26:07 +0800 Subject: [PATCH 1454/2255] Fix some typos in "AddressSanitizer runtime" topic --- docs/sanitizers/asan-runtime.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/sanitizers/asan-runtime.md b/docs/sanitizers/asan-runtime.md index 7d588a4bd6b..9512c30be20 100644 --- a/docs/sanitizers/asan-runtime.md +++ b/docs/sanitizers/asan-runtime.md @@ -31,7 +31,7 @@ The image shows three scenarios for linking the runtime library. The first is /M The following diagram shows how the ASan library is linked for various compiler options: :::image type="complex" source="media/asan-one-dll.png" alt-text="Diagram of how the ASan runtime dll is linked." -The image shows four scenarios for linking the ASan runtime library. The scenarios are for /MT (statically link the runtime), /MTd (statically link the debug runtime), /MD (dynamically link the redist at runtime), /MDd (dynamically link the debug redist at runtime). In all cases, my_exe.exe links and its associates my_dll.dll link to a single instance of clang-rt.asan-dynamix-x86_64.dll. +The image shows four scenarios for linking the ASan runtime library. The scenarios are for /MT (statically link the runtime), /MTd (statically link the debug runtime), /MD (dynamically link the redist at runtime), /MDd (dynamically link the debug redist at runtime). In all cases, my_exe.exe links and its associates my_dll.dll link to a single instance of clang_rt.asan_dynamic-x86_64.dll. :::image-end::: Even when statically linking, the ASan runtime DLL must be present at runtime--unlike other C Runtime components. @@ -101,7 +101,7 @@ For an illustration of the alignment requirement and potential issues, see the p ## Runtime options -The MSVC AddressSanitizer is based on the [Clang AddressSanitizer runtime from the llvm-project repository](https://github.com/llvm/llvm-project). Because of this, most of clang's ASan runtime options available in MSVC as well. [A complete list of the public Clang runtime options is available here](https://github.com/google/sanitizers/wiki/SanitizerCommonFlags). We document some differences in the sections that follow. If you discover options that don't function as expected, [report a bug](https://aka.ms/feedback/report?space=62). +The MSVC AddressSanitizer is based on the [Clang AddressSanitizer runtime from the llvm-project repository](https://github.com/llvm/llvm-project). Because of this, most of clang's ASan runtime options are available in MSVC as well. [A complete list of the public Clang runtime options is available here](https://github.com/google/sanitizers/wiki/SanitizerCommonFlags). We document some differences in the sections that follow. If you discover options that don't function as expected, [report a bug](https://aka.ms/feedback/report?space=62). ### Configure runtime options From fd42c86b732133228a34d8c97d2d1c5651f9f618 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 18 Aug 2025 00:29:33 +0800 Subject: [PATCH 1455/2255] Add missing indent and format `windows_fast_fail_on_error` content in "AddressSanitizer runtime" topic --- docs/sanitizers/asan-runtime.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/sanitizers/asan-runtime.md b/docs/sanitizers/asan-runtime.md index 9512c30be20..280f3d777ab 100644 --- a/docs/sanitizers/asan-runtime.md +++ b/docs/sanitizers/asan-runtime.md @@ -152,9 +152,10 @@ For more information, see the [Differences with Clang 12.0](asan.md#differences) - If set to `"ignore"`, the runtime doesn't attempt to correct any overwritten functions and proceeds with execution. - `windows_fast_fail_on_error` -Boolean (`false` by default), set to `true` to enable the process to terminate with a `__fastfail(71)` after printing the error report. ->[!NOTE] ->When `abort_on_error` value is set to `true`, on Windows the program terminates with an `exit(3)`. In order to not change current behavior we decided to introduce this new option instead. If both `abort_on_error` and `windows_fast_fail_on_error` are `true`, the program will exit with the `__fastfail`. + Boolean (`false` by default), set to `true` to enable the process to terminate with a `__fastfail(71)` after printing the error report. + + > [!NOTE] + > When `abort_on_error` value is set to `true`, on Windows the program terminates with an `exit(3)`. In order to not change current behavior we decided to introduce this new option instead. If both `abort_on_error` and `windows_fast_fail_on_error` are `true`, the program will exit with the `__fastfail`. - `windows_hook_legacy_allocators` Boolean, set to `false` to disable interception of [`GlobalAlloc`](/windows/win32/api/winbase/nf-winbase-globalalloc) and [`LocalAlloc`](/windows/win32/api/winbase/nf-winbase-localalloc) allocators. From 3e1df7d6edda353ac2917a2f5804d0950825d9b2 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 18 Aug 2025 00:31:15 +0800 Subject: [PATCH 1456/2255] Fix wrong link to `RtlDestroyHeap` in "AddressSanitizer runtime" topic --- docs/sanitizers/asan-runtime.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-runtime.md b/docs/sanitizers/asan-runtime.md index 280f3d777ab..00df2bf65a1 100644 --- a/docs/sanitizers/asan-runtime.md +++ b/docs/sanitizers/asan-runtime.md @@ -218,7 +218,7 @@ The AddressSanitizer runtime hotpatches many functions to enable memory safety c - [`realloc`](../c-runtime-library/reference/realloc.md) - [`RtlAllocateHeap`](/windows-hardware/drivers/ddi/ntifs/nf-ntifs-rtlallocateheap) - [`RtlCreateHeap`](/windows-hardware/drivers/ddi/ntifs/nf-ntifs-rtlcreateheap) -- [`RtlDestroyHeap`](/windows-hardware/drivers/ddi/ntifs/nf-ntifs-rtlcreateheap) +- [`RtlDestroyHeap`](/windows-hardware/drivers/ddi/ntifs/nf-ntifs-rtldestroyheap) - [`RtlFreeHeap`](/windows-hardware/drivers/ddi/ntifs/nf-ntifs-rtlfreeheap) - [`RtlRaiseException`](/windows/win32/api/rtlsupportapi/nf-rtlsupportapi-rtlraiseexception) - `RtlReAllocateHeap` (undocumented) From efde89e912403adebc1efe2b54fcaffbc52f6317 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 18 Aug 2025 00:37:46 +0800 Subject: [PATCH 1457/2255] Clean up redundant `./` and normalize win32 links to lowercase in "AddressSanitizer runtime" topic --- docs/sanitizers/asan-runtime.md | 50 ++++++++++++++++----------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/docs/sanitizers/asan-runtime.md b/docs/sanitizers/asan-runtime.md index 00df2bf65a1..1c1e523ad3f 100644 --- a/docs/sanitizers/asan-runtime.md +++ b/docs/sanitizers/asan-runtime.md @@ -7,9 +7,9 @@ helpviewer_keywords: ["AddressSanitizer runtime", "Address Sanitizer runtime", " # AddressSanitizer runtime -The AddressSanitizer runtime library intercepts common memory allocation functions and operations to enable inspection of memory accesses. There are several different runtime libraries that support the various types of executables the compiler may generate. The compiler and linker automatically link the appropriate runtime libraries, as long as you pass the [`/fsanitize=address`](../build/reference/fsanitize.md) option at compile time. You can override the default behavior by using the **`/NODEFAULTLIB`** option at link time. For more information, see the section on [linking](./asan-building.md#linker) in the [AddressSanitizer language, build, and debugging reference](./asan-building.md). +The AddressSanitizer runtime library intercepts common memory allocation functions and operations to enable inspection of memory accesses. There are several different runtime libraries that support the various types of executables the compiler may generate. The compiler and linker automatically link the appropriate runtime libraries, as long as you pass the [`/fsanitize=address`](../build/reference/fsanitize.md) option at compile time. You can override the default behavior by using the **`/NODEFAULTLIB`** option at link time. For more information, see the section on [linking](asan-building.md#linker) in the [AddressSanitizer language, build, and debugging reference](asan-building.md). -When compiling with `cl /fsanitize=address`, the compiler generates instructions to manage and check [shadow bytes](./asan-shadow-bytes.md). Your program uses this instrumentation to check memory accesses on the stack, in the heap, or in the global scope. The compiler also produces metadata describing stack and global variables. This metadata enables the runtime to generate precise error diagnostics: function names, lines, and columns in your source code. Combined, the compiler checks and runtime libraries can precisely diagnose many types of [memory safety bugs](./asan-error-examples.md) if they're encountered at run-time. +When compiling with `cl /fsanitize=address`, the compiler generates instructions to manage and check [shadow bytes](asan-shadow-bytes.md). Your program uses this instrumentation to check memory accesses on the stack, in the heap, or in the global scope. The compiler also produces metadata describing stack and global variables. This metadata enables the runtime to generate precise error diagnostics: function names, lines, and columns in your source code. Combined, the compiler checks and runtime libraries can precisely diagnose many types of [memory safety bugs](asan-error-examples.md) if they're encountered at run-time. The list of runtime libraries for linking to the AddressSanitizer runtime, as of Visual Studio 17.7 Preview 3, follows. For more information about the `/MT` (statically link the runtime) and `/MD` (dynamically link the redist at runtime) options, see [`/MD`, `/MT`, `/LD` (Use Run-Time Library)](../build/reference/md-mt-ld-use-run-time-library.md). @@ -63,7 +63,7 @@ The image shows four scenarios for linking the ASan runtime library. The scenari The AddressSanitizer achieves function interception through many hotpatching techniques. These techniques are [best documented within the source code itself](https://github.com/llvm/llvm-project/blob/1a2eaebc09c6a200f93b8beb37130c8b8aab3934/compiler-rt/lib/interception/interception_win.cpp#L11). -The runtime libraries intercept many common memory management and memory manipulation functions. For a list, see [AddressSanitizer list of intercepted functions](#intercepted_functions). The allocation interceptors manage metadata and shadow bytes related to each allocation call. Every time a CRT function such as `malloc` or `delete` is called, the interceptors set specific values in the AddressSanitizer shadow-memory region to indicate whether those heap locations are currently accessible and what the bounds of the allocation are. These shadow bytes allow the compiler-generated checks of the [shadow bytes](./asan-shadow-bytes.md) to determine whether a load or store is valid. +The runtime libraries intercept many common memory management and memory manipulation functions. For a list, see [AddressSanitizer list of intercepted functions](#intercepted_functions). The allocation interceptors manage metadata and shadow bytes related to each allocation call. Every time a CRT function such as `malloc` or `delete` is called, the interceptors set specific values in the AddressSanitizer shadow-memory region to indicate whether those heap locations are currently accessible and what the bounds of the allocation are. These shadow bytes allow the compiler-generated checks of the [shadow bytes](asan-shadow-bytes.md) to determine whether a load or store is valid. Interception isn't guaranteed to succeed. If a function prologue is too short for a `jmp` to be written, interception can fail. If an interception failure occurs, the program throws a `debugbreak` and halts. If you attach a debugger, it makes the cause of the interception issue clear. If you have this problem, [report a bug](https://aka.ms/feedback/report?space=62). @@ -72,7 +72,7 @@ Interception isn't guaranteed to succeed. If a function prologue is too short fo ## Custom allocators and the AddressSanitizer runtime -The AddressSanitizer runtime provides interceptors for common allocator interfaces, `malloc`/`free`, `new`/`delete`, `HeapAlloc`/`HeapFree` (via `RtlAllocateHeap`/`RtlFreeHeap`). Many programs make use of custom allocators for one reason or another, an example would be any program using `dlmalloc` or a solution using the `std::allocator` interface and `VirtualAlloc()`. The compiler is unable to automatically add shadow-memory management calls to a custom allocator. It's the user's responsibility to use the [provided manual poisoning interface](#poisoning). This API enables these allocators to function properly with the existing AddressSanitizer runtime and [shadow byte](./asan-shadow-bytes.md) conventions. +The AddressSanitizer runtime provides interceptors for common allocator interfaces, `malloc`/`free`, `new`/`delete`, `HeapAlloc`/`HeapFree` (via `RtlAllocateHeap`/`RtlFreeHeap`). Many programs make use of custom allocators for one reason or another, an example would be any program using `dlmalloc` or a solution using the `std::allocator` interface and `VirtualAlloc()`. The compiler is unable to automatically add shadow-memory management calls to a custom allocator. It's the user's responsibility to use the [provided manual poisoning interface](#poisoning). This API enables these allocators to function properly with the existing AddressSanitizer runtime and [shadow byte](asan-shadow-bytes.md) conventions. ## Manual AddressSanitizer poisoning interface @@ -113,7 +113,7 @@ If the environment variable and the user function specify conflicting options, t Multiple options are specified by separating them with a colon (`:`). -The following example sets [`alloc_dealloc_mismatch`](./error-alloc-dealloc-mismatch.md) to one and `symbolize` to zero: +The following example sets [`alloc_dealloc_mismatch`](error-alloc-dealloc-mismatch.md) to one and `symbolize` to zero: ```cmd set ASAN_OPTIONS=alloc_dealloc_mismatch=1:symbolize=0 @@ -249,26 +249,26 @@ The interceptors listed here are only installed when an AddressSanitizer runtime `set ASAN_OPTIONS=windows_hook_legacy_allocators=false` - [`GlobalAlloc`](/windows/win32/api/winbase/nf-winbase-globalalloc) -- [`GlobalFree`](/windows/win32/api/winbase/nf-winbase-GlobalFree) -- [`GlobalHandle`](/windows/win32/api/winbase/nf-winbase-GlobalHandle) -- [`GlobalLock`](/windows/win32/api/winbase/nf-winbase-GlobalLock) -- [`GlobalReAlloc`](/windows/win32/api/winbase/nf-winbase-GlobalReAlloc) -- [`GlobalSize`](/windows/win32/api/winbase/nf-winbase-GlobalSize) -- [`GlobalUnlock`](/windows/win32/api/winbase/nf-winbase-GlobalUnlock) -- [`LocalAlloc`](/windows/win32/api/winbase/nf-winbase-LocalAlloc) -- [`LocalFree`](/windows/win32/api/winbase/nf-winbase-LocalFree) -- [`LocalHandle`](/windows/win32/api/winbase/nf-winbase-LocalHandle) -- [`LocalLock`](/windows/win32/api/winbase/nf-winbase-LocalLock) -- [`LocalReAlloc`](/windows/win32/api/winbase/nf-winbase-LocalReAlloc) -- [`LocalSize`](/windows/win32/api/winbase/nf-winbase-LocalSize) -- [`LocalUnlock`](/windows/win32/api/winbase/nf-winbase-LocalUnlock) +- [`GlobalFree`](/windows/win32/api/winbase/nf-winbase-globalfree) +- [`GlobalHandle`](/windows/win32/api/winbase/nf-winbase-globalhandle) +- [`GlobalLock`](/windows/win32/api/winbase/nf-winbase-globallock) +- [`GlobalReAlloc`](/windows/win32/api/winbase/nf-winbase-globalrealloc) +- [`GlobalSize`](/windows/win32/api/winbase/nf-winbase-globalsize) +- [`GlobalUnlock`](/windows/win32/api/winbase/nf-winbase-globalunlock) +- [`LocalAlloc`](/windows/win32/api/winbase/nf-winbase-localalloc) +- [`LocalFree`](/windows/win32/api/winbase/nf-winbase-localfree) +- [`LocalHandle`](/windows/win32/api/winbase/nf-winbase-localhandle) +- [`LocalLock`](/windows/win32/api/winbase/nf-winbase-locallock) +- [`LocalReAlloc`](/windows/win32/api/winbase/nf-winbase-localrealloc) +- [`LocalSize`](/windows/win32/api/winbase/nf-winbase-localsize) +- [`LocalUnlock`](/windows/win32/api/winbase/nf-winbase-localunlock) ## See also -[AddressSanitizer overview](./asan.md)\ -[AddressSanitizer known issues](./asan-known-issues.md)\ -[AddressSanitizer build and language reference](./asan-building.md)\ -[AddressSanitizer shadow bytes](./asan-shadow-bytes.md)\ -[AddressSanitizer cloud or distributed testing](./asan-offline-crash-dumps.md)\ -[AddressSanitizer debugger integration](./asan-debugger-integration.md)\ -[AddressSanitizer error examples](./asan-error-examples.md) +[AddressSanitizer overview](asan.md)\ +[AddressSanitizer known issues](asan-known-issues.md)\ +[AddressSanitizer build and language reference](asan-building.md)\ +[AddressSanitizer shadow bytes](asan-shadow-bytes.md)\ +[AddressSanitizer cloud or distributed testing](asan-offline-crash-dumps.md)\ +[AddressSanitizer debugger integration](asan-debugger-integration.md)\ +[AddressSanitizer error examples](asan-error-examples.md) From 72e3d0cf0bc82bf0701f786834a3e989d9f8c63f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 18 Aug 2025 00:58:25 +0800 Subject: [PATCH 1458/2255] Add missing C2554 `f1_keywords` and `helpviewer_keywords` in "Compiler errors C2500 Through C2599" --- .../compiler-errors-2/compiler-errors-c2500-through-c2599.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c2500-through-c2599.md b/docs/error-messages/compiler-errors-2/compiler-errors-c2500-through-c2599.md index d6a27711af8..5340336b562 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c2500-through-c2599.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c2500-through-c2599.md @@ -2,8 +2,8 @@ title: "Compiler errors C2500 Through C2599" description: "Learn more about: Compiler errors C2500 Through C2599" ms.date: 04/21/2019 -f1_keywords: ["C2501", "C2508", "C2515", "C2519", "C2520", "C2522", "C2525", "C2527", "C2536", "C2538", "C2539", "C2546", "C2547", "C2559", "C2560", "C2564", "C2565", "C2576", "C2578", "C2580", "C2590", "C2591", "C2595", "C2596"] -helpviewer_keywords: ["C2501", "C2508", "C2515", "C2519", "C2520", "C2522", "C2525", "C2527", "C2536", "C2538", "C2539", "C2546", "C2547", "C2559", "C2560", "C2564", "C2565", "C2576", "C2578", "C2580", "C2590", "C2591", "C2595", "C2596"] +f1_keywords: ["C2501", "C2508", "C2515", "C2519", "C2520", "C2522", "C2525", "C2527", "C2536", "C2538", "C2539", "C2546", "C2547", "C2554", "C2559", "C2560", "C2564", "C2565", "C2576", "C2578", "C2580", "C2590", "C2591", "C2595", "C2596"] +helpviewer_keywords: ["C2501", "C2508", "C2515", "C2519", "C2520", "C2522", "C2525", "C2527", "C2536", "C2538", "C2539", "C2546", "C2547", "C2554", "C2559", "C2560", "C2564", "C2565", "C2576", "C2578", "C2580", "C2590", "C2591", "C2595", "C2596"] --- # Compiler errors C2500 Through C2599 From de560920bcb1d5b3c1b671a39e4e7475d10ff48a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 18 Aug 2025 01:12:10 +0800 Subject: [PATCH 1459/2255] Change code block language from `C++` to `cpp` in "AddressSanitizer runtime" topic --- docs/sanitizers/asan-runtime.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-runtime.md b/docs/sanitizers/asan-runtime.md index 1c1e523ad3f..3d862c6a0bc 100644 --- a/docs/sanitizers/asan-runtime.md +++ b/docs/sanitizers/asan-runtime.md @@ -121,7 +121,7 @@ set ASAN_OPTIONS=alloc_dealloc_mismatch=1:symbolize=0 Or add the following function to your code: -```C++ +```cpp extern "C" const char* __asan_default_options() { return "alloc_dealloc_mismatch=1:symbolize=0"; From 93d6acf76fa6f97cc62fb72aca63c4c2f460cabf Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 18 Aug 2025 01:24:05 +0800 Subject: [PATCH 1460/2255] Add blockquotes for error messages in range [C3281, C3350] --- docs/error-messages/compiler-errors-2/compiler-error-c3282.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3283.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3284.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3285.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3288.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3289.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3290.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3291.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3292.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3293.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3296.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3297.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3298.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3299.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3303.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3309.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3320.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3322.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3333.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3334.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3340.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3342.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3345.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3347.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3350.md | 2 +- 25 files changed, 25 insertions(+), 25 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3282.md b/docs/error-messages/compiler-errors-2/compiler-error-c3282.md index f424b4ccf18..ac89d88cb31 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3282.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3282.md @@ -8,7 +8,7 @@ ms.assetid: bac2ac89-c360-4c24-bb81-c20c62ece9ba --- # Compiler Error C3282 -generic parameter lists can only appear on managed or WinRTclasses, structs, or functions +> generic parameter lists can only appear on managed or WinRTclasses, structs, or functions A generic parameter list was used incorrectly. For more information, see [Generics](../../extensions/generics-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3283.md b/docs/error-messages/compiler-errors-2/compiler-error-c3283.md index a21e84993f8..869dd0f2691 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3283.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3283.md @@ -8,7 +8,7 @@ ms.assetid: c51d912c-cde3-4928-904e-26734c8954ce --- # Compiler Error C3283 -'type' : an interface cannot have an instance constructor +> 'type' : an interface cannot have an instance constructor A CLR [interface](../../extensions/interface-class-cpp-component-extensions.md) cannot have an instance constructor. A static constructor is allowed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3284.md b/docs/error-messages/compiler-errors-2/compiler-error-c3284.md index c2e17582e38..87fb4ec27cf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3284.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3284.md @@ -8,7 +8,7 @@ ms.assetid: e582f316-e9db-4d27-9c70-fdfa737a9d5f --- # Compiler Error C3284 -the constraints for generic parameter 'parameter' of function 'function' must match the constraints for generic parameter 'parameter' of function 'function' +> the constraints for generic parameter 'parameter' of function 'function' must match the constraints for generic parameter 'parameter' of function 'function' A virtual generic function must use the same constraints as a virtual function with the same name and set of arguments in the base class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3285.md b/docs/error-messages/compiler-errors-2/compiler-error-c3285.md index 59d5d68b7b2..7db5ea4b790 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3285.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3285.md @@ -8,7 +8,7 @@ ms.assetid: 04e8f210-d67e-4810-b153-e1efe2986c8f --- # Compiler Error C3285 -for each statement cannot operate on variables of type 'type' +> for each statement cannot operate on variables of type 'type' The `for each` statement repeats a group of embedded statements for each element in an array or an object collection. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3288.md b/docs/error-messages/compiler-errors-2/compiler-error-c3288.md index 4f9b011915a..3b85263cf16 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3288.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3288.md @@ -8,7 +8,7 @@ ms.assetid: ed08a540-9751-46e1-9cbe-c51d6a49ffab --- # Compiler Error C3288 -'type' : illegal dereference of a handle type +> 'type' : illegal dereference of a handle type The compiler detected an illegal dereference of a handle type. You can dereference a handle type and assign it to a reference. For more information, see [Tracking Reference Operator](../../extensions/tracking-reference-operator-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3289.md b/docs/error-messages/compiler-errors-2/compiler-error-c3289.md index 9aec61ca772..1497dd8b8cb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3289.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3289.md @@ -8,7 +8,7 @@ ms.assetid: 3c1c623b-7fcf-43ab-a89a-8722532a8d29 --- # Compiler Error C3289 -'property' : a trivial property cannot be indexed +> 'property' : a trivial property cannot be indexed A property was declared incorrectly. Accessors must be defined for an indexed property. See [property](../../extensions/property-cpp-component-extensions.md) for more information. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3290.md b/docs/error-messages/compiler-errors-2/compiler-error-c3290.md index 0c418160ac2..88137986b5c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3290.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3290.md @@ -8,7 +8,7 @@ ms.assetid: 0baf684b-1143-4953-ac99-a2fa267d8017 --- # Compiler Error C3290 -'type' : a trivial property cannot have reference type +> 'type' : a trivial property cannot have reference type A property was declared incorrectly. When you declare a trivial property, the compiler creates a variable that the property will update, and it is not possible to have a tracking reference variable in a class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3291.md b/docs/error-messages/compiler-errors-2/compiler-error-c3291.md index 7786861b99d..ca5bb779572 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3291.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3291.md @@ -8,7 +8,7 @@ ms.assetid: ed2e9f89-8dbc-4387-bc26-cc955e840858 --- # Compiler Error C3291 -'default' : cannot be the name of a trivial property +> 'default' : cannot be the name of a trivial property A trivial property cannot be named **`default`**. See [property](../../extensions/property-cpp-component-extensions.md) for more information. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3292.md b/docs/error-messages/compiler-errors-2/compiler-error-c3292.md index 06b23f7f6fa..d859cb1b3a2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3292.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3292.md @@ -8,7 +8,7 @@ ms.assetid: ead485cc-5471-4e10-b361-300589ff5b70 --- # Compiler Error C3292 -the cli namespace cannot be reopened +> the cli namespace cannot be reopened The cli namespace cannot be declared in your code. For more information, see [Platform, default, and cli Namespaces](../../extensions/platform-default-and-cli-namespaces-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3293.md b/docs/error-messages/compiler-errors-2/compiler-error-c3293.md index 6ce9d649914..cdd09bb7906 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3293.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3293.md @@ -8,7 +8,7 @@ ms.assetid: b772cf98-52e0-4e24-be23-1f5d87d999ac --- # Compiler Error C3293 -'accessor': use 'default' to access the default property (indexer) for class 'type' +> 'accessor': use 'default' to access the default property (indexer) for class 'type' An indexed property was accessed incorrectly. See [How to: Use Properties in C++/CLI](../../dotnet/how-to-use-properties-in-cpp-cli.md) for more information. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3296.md b/docs/error-messages/compiler-errors-2/compiler-error-c3296.md index 46a10a2ae6e..b72b43384e7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3296.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3296.md @@ -8,7 +8,7 @@ ms.assetid: fc4c9dcd-16cf-4eee-a1ac-c43e7c29e443 --- # Compiler Error C3296 -'property' : a property with this name already exists +> 'property' : a property with this name already exists The compiler encountered more than one property with the same name. Each property in a type must have a unique name. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3297.md b/docs/error-messages/compiler-errors-2/compiler-error-c3297.md index 569007694b7..5335d621067 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3297.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3297.md @@ -8,7 +8,7 @@ ms.assetid: 2a718b4c-6cdb-4418-92c0-fc3a259431c4 --- # Compiler Error C3297 -'constraint_2' : cannot use 'constraint_1' as a constraint because 'constraint_1' has the value constraint +> 'constraint_2' : cannot use 'constraint_1' as a constraint because 'constraint_1' has the value constraint Value classes are sealed. If a constraint is a value class, another constraint can never derive from it. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3298.md b/docs/error-messages/compiler-errors-2/compiler-error-c3298.md index 38cb9191d8c..87a309171ef 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3298.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3298.md @@ -8,7 +8,7 @@ ms.assetid: 458c2680-95bb-4d5e-895f-ce4115844193 --- # Compiler Error C3298 -'constraint_1' : cannot use 'constraint_2' as a constraint because 'constraint_2' has the ref constraint and 'constraint_1' has the value constraint +> 'constraint_1' : cannot use 'constraint_2' as a constraint because 'constraint_2' has the ref constraint and 'constraint_1' has the value constraint You cannot specify mutually exclusive characteristics for a constraint. For example, a generic type parameter cannot be constrained to both a value type and a reference type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3299.md b/docs/error-messages/compiler-errors-2/compiler-error-c3299.md index c9b8510b600..19c625dcad0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3299.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3299.md @@ -8,7 +8,7 @@ ms.assetid: 7cabdf01-bceb-404f-9401-cdd9c7fc1641 --- # Compiler Error C3299 -'member_function' : cannot specify constraints, they are inherited from the base method +> 'member_function' : cannot specify constraints, they are inherited from the base method When overriding a generic member function, you cannot specify constraint clauses (repeating the constraints implies that the constraints are not inherited). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3303.md b/docs/error-messages/compiler-errors-2/compiler-error-c3303.md index 323f0832162..92706dadbd4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3303.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3303.md @@ -8,6 +8,6 @@ ms.assetid: c6f6ea3d-f6b7-4401-8bbb-f283a2c05540 --- # Compiler Error C3303 -'attribute': attribute can only be used on 'usage' +> 'attribute': attribute can only be used on 'usage' An attempt was made to use an attribute where it is not valid. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3309.md b/docs/error-messages/compiler-errors-2/compiler-error-c3309.md index 651e7c8c0f9..ae9be122126 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3309.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3309.md @@ -8,7 +8,7 @@ ms.assetid: 75ee16e3-7d4e-4c41-b3cb-64e9849c3aab --- # Compiler Error C3309 -'macro_name': module name cannot be a macro or a keyword +> 'macro_name': module name cannot be a macro or a keyword The value that you pass to the name property of the module attribute cannot be a symbol for the preprocessor to expand; it must be a string literal. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3320.md b/docs/error-messages/compiler-errors-2/compiler-error-c3320.md index 50975948b9a..cd5f139bd77 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3320.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3320.md @@ -8,7 +8,7 @@ ms.assetid: 2ef72d9a-1f1d-4b2e-b244-9fd3f3e70cb6 --- # Compiler Error C3320 -'type': type cannot have the same name as the module 'name' property +> 'type': type cannot have the same name as the module 'name' property An exported user-defined type (UDT), which could be a struct, class, enum, or union, cannot have the same name as the parameter passed to the [module](../../windows/attributes/module-cpp.md) attribute's name property. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3322.md b/docs/error-messages/compiler-errors-2/compiler-error-c3322.md index 374af497ee7..aa510bad56f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3322.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3322.md @@ -8,6 +8,6 @@ ms.assetid: d8a0ad95-30df-4337-b0c8-4747de0bef50 --- # Compiler Error C3322 -'property': is not a valid property for attribute 'attribute' +> 'property': is not a valid property for attribute 'attribute' An invalid or unrecognized property (or parameter) was passed to an attribute. Check the documentation for the attribute. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3333.md b/docs/error-messages/compiler-errors-2/compiler-error-c3333.md index 731607d8c59..cb7f69ae541 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3333.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3333.md @@ -8,6 +8,6 @@ ms.assetid: 51693978-fba6-435a-a696-74735cc875de --- # Compiler Error C3333 -'type library': cannot #import corrupt type library +> 'type library': cannot #import corrupt type library The type library specified in the `#import` statement is unreadable by the compiler. You may want to either regenerate the type library, if possible, or request a new type library from your supplier. You may want to use the OLE Viewer, supplied with Visual C++, to view the type library file to see what is the matter with it. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3334.md b/docs/error-messages/compiler-errors-2/compiler-error-c3334.md index 4710d310457..179144ab3fd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3334.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3334.md @@ -8,7 +8,7 @@ ms.assetid: e972c625-77e7-4022-8aba-e1db01d7a0d7 --- # Compiler Error C3334 -cannot #import corrupt type library +> cannot #import corrupt type library The library file in a `#import` statement is corrupt and can't be consumed by the compiler. Corruption can come from bad generation of the module, disk corruption, or if the binary file was somehow edited and modified. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3340.md b/docs/error-messages/compiler-errors-2/compiler-error-c3340.md index 8eea083c5d9..a1a1a45cfbd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3340.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3340.md @@ -8,7 +8,7 @@ ms.assetid: 23b12298-b92a-4717-8380-f165c998cb8a --- # Compiler Error C3340 -'interface': interface cannot be both 'restricted' and 'default' in coclass 'class' +> 'interface': interface cannot be both 'restricted' and 'default' in coclass 'class' The [restricted](../../windows/attributes/restricted.md) attribute and the [default](../../windows/attributes/default-cpp.md) attribute are mutually exclusive. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3342.md b/docs/error-messages/compiler-errors-2/compiler-error-c3342.md index f14134d5da0..67d3a2922d9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3342.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3342.md @@ -8,7 +8,7 @@ ms.assetid: 5c6d784f-bebe-4f7e-8615-44ca6f78bfba --- # Compiler Error C3342 -'attribute': ambiguous attribute +> 'attribute': ambiguous attribute The compiler found more than one definition of an attribute. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3345.md b/docs/error-messages/compiler-errors-2/compiler-error-c3345.md index 7cbcbd255c2..9c729b446af 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3345.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3345.md @@ -8,7 +8,7 @@ ms.assetid: 1dda4c79-73bb-441b-b939-746154c3afba --- # Compiler Error C3345 -'identifier': invalid identifier for module name +> 'identifier': invalid identifier for module name The *identifier* for a module contains one or more unacceptable characters. An identifier is valid if the first character is an alphabetical, underscore, or high ANSI (0x80-FF) character, and any subsequent character is an alphanumeric, underscore, or high ANSI character. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3347.md b/docs/error-messages/compiler-errors-2/compiler-error-c3347.md index 4fe6b20eb35..4f2271f56b1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3347.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3347.md @@ -8,7 +8,7 @@ ms.assetid: e939ad29-0b78-4681-9618-9bdae5675cee --- # Compiler Error C3347 -'arg': required argument is not specified in attribute idl_module +> 'arg': required argument is not specified in attribute idl_module A required argument was not passed to the [idl_module](../../windows/attributes/idl-module.md) attribute. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3350.md b/docs/error-messages/compiler-errors-2/compiler-error-c3350.md index 832d21b80ca..9a8cfa5687d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3350.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3350.md @@ -8,7 +8,7 @@ ms.assetid: cfbbc338-92b5-4f34-999e-aa2d2376bc70 --- # Compiler Error C3350 -'delegate' : a delegate constructor expects number argument(s) +> 'delegate' : a delegate constructor expects number argument(s) When you create an instance of a delegate, you must pass two arguments, an instance of the type containing the delegate function, and the function. From 4dc1b841c63255dfcdf59312d391cd86436ebd20 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 18 Aug 2025 01:29:57 +0800 Subject: [PATCH 1461/2255] Add "Remarks" and "Example" headings for error references in range [C3281, C3350] --- docs/error-messages/compiler-errors-2/compiler-error-c3282.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3283.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3284.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3285.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3286.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3288.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3289.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3290.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3291.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3292.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3293.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3296.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3297.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3298.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3299.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3303.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3309.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3320.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3322.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3333.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3334.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3340.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3342.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3345.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3347.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3350.md | 4 ++++ 26 files changed, 64 insertions(+) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3282.md b/docs/error-messages/compiler-errors-2/compiler-error-c3282.md index ac89d88cb31..3c8f9f520b0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3282.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3282.md @@ -10,6 +10,8 @@ ms.assetid: bac2ac89-c360-4c24-bb81-c20c62ece9ba > generic parameter lists can only appear on managed or WinRTclasses, structs, or functions +## Remarks + A generic parameter list was used incorrectly. For more information, see [Generics](../../extensions/generics-cpp-component-extensions.md). ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3283.md b/docs/error-messages/compiler-errors-2/compiler-error-c3283.md index 869dd0f2691..0d483630d4b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3283.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3283.md @@ -10,8 +10,12 @@ ms.assetid: c51d912c-cde3-4928-904e-26734c8954ce > 'type' : an interface cannot have an instance constructor +## Remarks + A CLR [interface](../../extensions/interface-class-cpp-component-extensions.md) cannot have an instance constructor. A static constructor is allowed. +## Example + The following sample generates C3283: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3284.md b/docs/error-messages/compiler-errors-2/compiler-error-c3284.md index 87fb4ec27cf..a06a9ac4299 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3284.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3284.md @@ -10,8 +10,12 @@ ms.assetid: e582f316-e9db-4d27-9c70-fdfa737a9d5f > the constraints for generic parameter 'parameter' of function 'function' must match the constraints for generic parameter 'parameter' of function 'function' +## Remarks + A virtual generic function must use the same constraints as a virtual function with the same name and set of arguments in the base class. +## Example + The following sample generates C3284: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3285.md b/docs/error-messages/compiler-errors-2/compiler-error-c3285.md index 7db5ea4b790..e66553f7df4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3285.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3285.md @@ -10,6 +10,8 @@ ms.assetid: 04e8f210-d67e-4810-b153-e1efe2986c8f > for each statement cannot operate on variables of type 'type' +## Remarks + The `for each` statement repeats a group of embedded statements for each element in an array or an object collection. See [for each, in](../../dotnet/for-each-in.md) for more information. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3286.md b/docs/error-messages/compiler-errors-2/compiler-error-c3286.md index 9efe53c1c97..a17e5e24922 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3286.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3286.md @@ -10,6 +10,8 @@ ms.assetid: 554328c8-cf44-4f7d-a8d2-def74d28ecdd > '*specifier*': an iteration variable cannot have any storage-class specifiers +## Remarks + A storage class can't be specified on an iteration variable. For more information, see [Storage classes (C++)](../../cpp/storage-classes-cpp.md) and [for each, in](../../dotnet/for-each-in.md). ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3288.md b/docs/error-messages/compiler-errors-2/compiler-error-c3288.md index 3b85263cf16..c7dde810d93 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3288.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3288.md @@ -10,6 +10,8 @@ ms.assetid: ed08a540-9751-46e1-9cbe-c51d6a49ffab > 'type' : illegal dereference of a handle type +## Remarks + The compiler detected an illegal dereference of a handle type. You can dereference a handle type and assign it to a reference. For more information, see [Tracking Reference Operator](../../extensions/tracking-reference-operator-cpp-component-extensions.md). ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3289.md b/docs/error-messages/compiler-errors-2/compiler-error-c3289.md index 1497dd8b8cb..bd9db63295d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3289.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3289.md @@ -10,6 +10,8 @@ ms.assetid: 3c1c623b-7fcf-43ab-a89a-8722532a8d29 > 'property' : a trivial property cannot be indexed +## Remarks + A property was declared incorrectly. Accessors must be defined for an indexed property. See [property](../../extensions/property-cpp-component-extensions.md) for more information. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3290.md b/docs/error-messages/compiler-errors-2/compiler-error-c3290.md index 88137986b5c..cd04bb16ad0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3290.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3290.md @@ -10,6 +10,8 @@ ms.assetid: 0baf684b-1143-4953-ac99-a2fa267d8017 > 'type' : a trivial property cannot have reference type +## Remarks + A property was declared incorrectly. When you declare a trivial property, the compiler creates a variable that the property will update, and it is not possible to have a tracking reference variable in a class. See [property](../../extensions/property-cpp-component-extensions.md) and [Tracking Reference Operator](../../extensions/tracking-reference-operator-cpp-component-extensions.md) for more information. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3291.md b/docs/error-messages/compiler-errors-2/compiler-error-c3291.md index ca5bb779572..493f6f1eacd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3291.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3291.md @@ -10,6 +10,8 @@ ms.assetid: ed2e9f89-8dbc-4387-bc26-cc955e840858 > 'default' : cannot be the name of a trivial property +## Remarks + A trivial property cannot be named **`default`**. See [property](../../extensions/property-cpp-component-extensions.md) for more information. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3292.md b/docs/error-messages/compiler-errors-2/compiler-error-c3292.md index d859cb1b3a2..cccc8e2515b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3292.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3292.md @@ -10,6 +10,8 @@ ms.assetid: ead485cc-5471-4e10-b361-300589ff5b70 > the cli namespace cannot be reopened +## Remarks + The cli namespace cannot be declared in your code. For more information, see [Platform, default, and cli Namespaces](../../extensions/platform-default-and-cli-namespaces-cpp-component-extensions.md). ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3293.md b/docs/error-messages/compiler-errors-2/compiler-error-c3293.md index cdd09bb7906..f0274e24775 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3293.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3293.md @@ -10,6 +10,8 @@ ms.assetid: b772cf98-52e0-4e24-be23-1f5d87d999ac > 'accessor': use 'default' to access the default property (indexer) for class 'type' +## Remarks + An indexed property was accessed incorrectly. See [How to: Use Properties in C++/CLI](../../dotnet/how-to-use-properties-in-cpp-cli.md) for more information. **Visual Studio 2017 and later**: In Visual Studio 2015 and earlier, the compiler in some cases misidentified a default property as a default indexer. It was possible to work around the issue by using the identifier "default" to access the property. The workaround itself became problematic after default was introduced as a keyword in C++11. Therefore, in Visual Studio 2017 the bugs that required the workaround were fixed, and the compiler now raises an error when "default" is used to access the default property for a class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3296.md b/docs/error-messages/compiler-errors-2/compiler-error-c3296.md index b72b43384e7..d24c70db0f2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3296.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3296.md @@ -10,6 +10,8 @@ ms.assetid: fc4c9dcd-16cf-4eee-a1ac-c43e7c29e443 > 'property' : a property with this name already exists +## Remarks + The compiler encountered more than one property with the same name. Each property in a type must have a unique name. For more information, see [property](../../extensions/property-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3297.md b/docs/error-messages/compiler-errors-2/compiler-error-c3297.md index 5335d621067..2be74dc44f2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3297.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3297.md @@ -10,6 +10,8 @@ ms.assetid: 2a718b4c-6cdb-4418-92c0-fc3a259431c4 > 'constraint_2' : cannot use 'constraint_1' as a constraint because 'constraint_1' has the value constraint +## Remarks + Value classes are sealed. If a constraint is a value class, another constraint can never derive from it. For more information, see [Constraints on Generic Type Parameters (C++/CLI)](../../extensions/constraints-on-generic-type-parameters-cpp-cli.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3298.md b/docs/error-messages/compiler-errors-2/compiler-error-c3298.md index 87a309171ef..6baf9d6a885 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3298.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3298.md @@ -10,6 +10,8 @@ ms.assetid: 458c2680-95bb-4d5e-895f-ce4115844193 > 'constraint_1' : cannot use 'constraint_2' as a constraint because 'constraint_2' has the ref constraint and 'constraint_1' has the value constraint +## Remarks + You cannot specify mutually exclusive characteristics for a constraint. For example, a generic type parameter cannot be constrained to both a value type and a reference type. For more information, see [Constraints on Generic Type Parameters (C++/CLI)](../../extensions/constraints-on-generic-type-parameters-cpp-cli.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3299.md b/docs/error-messages/compiler-errors-2/compiler-error-c3299.md index 19c625dcad0..03964b63895 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3299.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3299.md @@ -10,6 +10,8 @@ ms.assetid: 7cabdf01-bceb-404f-9401-cdd9c7fc1641 > 'member_function' : cannot specify constraints, they are inherited from the base method +## Remarks + When overriding a generic member function, you cannot specify constraint clauses (repeating the constraints implies that the constraints are not inherited). The constraint clauses on the generic function you are overriding will be inherited. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3303.md b/docs/error-messages/compiler-errors-2/compiler-error-c3303.md index 92706dadbd4..03f65642d61 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3303.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3303.md @@ -10,4 +10,6 @@ ms.assetid: c6f6ea3d-f6b7-4401-8bbb-f283a2c05540 > 'attribute': attribute can only be used on 'usage' +## Remarks + An attempt was made to use an attribute where it is not valid. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3309.md b/docs/error-messages/compiler-errors-2/compiler-error-c3309.md index ae9be122126..f62f6a5449d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3309.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3309.md @@ -10,8 +10,12 @@ ms.assetid: 75ee16e3-7d4e-4c41-b3cb-64e9849c3aab > 'macro_name': module name cannot be a macro or a keyword +## Remarks + The value that you pass to the name property of the module attribute cannot be a symbol for the preprocessor to expand; it must be a string literal. +## Example + The following sample generates C3309: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3320.md b/docs/error-messages/compiler-errors-2/compiler-error-c3320.md index cd5f139bd77..ad2da725eb3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3320.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3320.md @@ -10,6 +10,8 @@ ms.assetid: 2ef72d9a-1f1d-4b2e-b244-9fd3f3e70cb6 > 'type': type cannot have the same name as the module 'name' property +## Remarks + An exported user-defined type (UDT), which could be a struct, class, enum, or union, cannot have the same name as the parameter passed to the [module](../../windows/attributes/module-cpp.md) attribute's name property. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3322.md b/docs/error-messages/compiler-errors-2/compiler-error-c3322.md index aa510bad56f..1abf6d3d455 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3322.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3322.md @@ -10,4 +10,6 @@ ms.assetid: d8a0ad95-30df-4337-b0c8-4747de0bef50 > 'property': is not a valid property for attribute 'attribute' +## Remarks + An invalid or unrecognized property (or parameter) was passed to an attribute. Check the documentation for the attribute. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3333.md b/docs/error-messages/compiler-errors-2/compiler-error-c3333.md index cb7f69ae541..fbc53c1ec41 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3333.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3333.md @@ -10,4 +10,6 @@ ms.assetid: 51693978-fba6-435a-a696-74735cc875de > 'type library': cannot #import corrupt type library +## Remarks + The type library specified in the `#import` statement is unreadable by the compiler. You may want to either regenerate the type library, if possible, or request a new type library from your supplier. You may want to use the OLE Viewer, supplied with Visual C++, to view the type library file to see what is the matter with it. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3334.md b/docs/error-messages/compiler-errors-2/compiler-error-c3334.md index 179144ab3fd..7cf43b918e5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3334.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3334.md @@ -10,6 +10,8 @@ ms.assetid: e972c625-77e7-4022-8aba-e1db01d7a0d7 > cannot #import corrupt type library +## Remarks + The library file in a `#import` statement is corrupt and can't be consumed by the compiler. Corruption can come from bad generation of the module, disk corruption, or if the binary file was somehow edited and modified. For more information, see [#import Directive](../../preprocessor/hash-import-directive-cpp.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3340.md b/docs/error-messages/compiler-errors-2/compiler-error-c3340.md index a1a1a45cfbd..5947afd04ca 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3340.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3340.md @@ -10,8 +10,12 @@ ms.assetid: 23b12298-b92a-4717-8380-f165c998cb8a > 'interface': interface cannot be both 'restricted' and 'default' in coclass 'class' +## Remarks + The [restricted](../../windows/attributes/restricted.md) attribute and the [default](../../windows/attributes/default-cpp.md) attribute are mutually exclusive. +## Example + The following sample generates C3340: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3342.md b/docs/error-messages/compiler-errors-2/compiler-error-c3342.md index 67d3a2922d9..b6e1ec96601 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3342.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3342.md @@ -10,6 +10,8 @@ ms.assetid: 5c6d784f-bebe-4f7e-8615-44ca6f78bfba > 'attribute': ambiguous attribute +## Remarks + The compiler found more than one definition of an attribute. An attribute was defined more than once. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3345.md b/docs/error-messages/compiler-errors-2/compiler-error-c3345.md index 9c729b446af..b607d6d74c2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3345.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3345.md @@ -10,6 +10,8 @@ ms.assetid: 1dda4c79-73bb-441b-b939-746154c3afba > 'identifier': invalid identifier for module name +## Remarks + The *identifier* for a module contains one or more unacceptable characters. An identifier is valid if the first character is an alphabetical, underscore, or high ANSI (0x80-FF) character, and any subsequent character is an alphanumeric, underscore, or high ANSI character. ### To correct this error diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3347.md b/docs/error-messages/compiler-errors-2/compiler-error-c3347.md index 4f2271f56b1..91a90d9e4ed 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3347.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3347.md @@ -10,8 +10,12 @@ ms.assetid: e939ad29-0b78-4681-9618-9bdae5675cee > 'arg': required argument is not specified in attribute idl_module +## Remarks + A required argument was not passed to the [idl_module](../../windows/attributes/idl-module.md) attribute. +## Example + The following sample generates C3347: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3350.md b/docs/error-messages/compiler-errors-2/compiler-error-c3350.md index 9a8cfa5687d..2ef515a773a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3350.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3350.md @@ -10,8 +10,12 @@ ms.assetid: cfbbc338-92b5-4f34-999e-aa2d2376bc70 > 'delegate' : a delegate constructor expects number argument(s) +## Remarks + When you create an instance of a delegate, you must pass two arguments, an instance of the type containing the delegate function, and the function. +## Example + The following sample generates C3350: ```cpp From a28f4df125a8ff4f1da1e4b8a621c64295993a5f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 18 Aug 2025 01:31:28 +0800 Subject: [PATCH 1462/2255] Replace term "sample" with "example" for error references in range [C3281, C3350] --- docs/error-messages/compiler-errors-2/compiler-error-c3282.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3283.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3284.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3285.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3286.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3287.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3288.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3289.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3290.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3291.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3292.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3293.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3296.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3297.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3298.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3299.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3309.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3320.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3340.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3342.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3347.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3350.md | 2 +- 22 files changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3282.md b/docs/error-messages/compiler-errors-2/compiler-error-c3282.md index 3c8f9f520b0..dbbbeb4afe4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3282.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3282.md @@ -16,7 +16,7 @@ A generic parameter list was used incorrectly. For more information, see [Gener ## Example -The following sample generates C3282 and shows how to fix it. +The following example generates C3282 and shows how to fix it. ```cpp // C3282.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3283.md b/docs/error-messages/compiler-errors-2/compiler-error-c3283.md index 0d483630d4b..5989fc71eba 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3283.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3283.md @@ -16,7 +16,7 @@ A CLR [interface](../../extensions/interface-class-cpp-component-extensions.md) ## Example -The following sample generates C3283: +The following example generates C3283: ```cpp // C3283.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3284.md b/docs/error-messages/compiler-errors-2/compiler-error-c3284.md index a06a9ac4299..0ec077ca0c1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3284.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3284.md @@ -16,7 +16,7 @@ A virtual generic function must use the same constraints as a virtual function w ## Example -The following sample generates C3284: +The following example generates C3284: ```cpp // C3284.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3285.md b/docs/error-messages/compiler-errors-2/compiler-error-c3285.md index e66553f7df4..995914e904f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3285.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3285.md @@ -18,7 +18,7 @@ See [for each, in](../../dotnet/for-each-in.md) for more information. ## Example -The following sample generates C3285. +The following example generates C3285. ```cpp // C3285.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3286.md b/docs/error-messages/compiler-errors-2/compiler-error-c3286.md index a17e5e24922..561be373a90 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3286.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3286.md @@ -16,7 +16,7 @@ A storage class can't be specified on an iteration variable. For more informatio ## Example -The following sample generates C3286, and also shows correct usage. +The following example generates C3286, and also shows correct usage. ```cpp // C3286.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3287.md b/docs/error-messages/compiler-errors-2/compiler-error-c3287.md index 787b4508cff..0a2988aa245 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3287.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3287.md @@ -18,7 +18,7 @@ For more information, see [for each, in](../../dotnet/for-each-in.md). ## Example -The following sample generates C3287. +The following example generates C3287. ```cpp // C3287.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3288.md b/docs/error-messages/compiler-errors-2/compiler-error-c3288.md index c7dde810d93..36a02c61a31 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3288.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3288.md @@ -16,7 +16,7 @@ The compiler detected an illegal dereference of a handle type. You can dereferen ## Example -The following sample generates C3288. +The following example generates C3288. ```cpp // C3288.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3289.md b/docs/error-messages/compiler-errors-2/compiler-error-c3289.md index bd9db63295d..c3493d65ff3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3289.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3289.md @@ -16,7 +16,7 @@ A property was declared incorrectly. Accessors must be defined for an indexed pr ## Example -The following sample generates C3289. +The following example generates C3289. ```cpp // C3289.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3290.md b/docs/error-messages/compiler-errors-2/compiler-error-c3290.md index cd04bb16ad0..b5aa1aa18dd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3290.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3290.md @@ -18,7 +18,7 @@ See [property](../../extensions/property-cpp-component-extensions.md) and [Track ## Example -The following sample generates C3290. +The following example generates C3290. ```cpp // C3290.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3291.md b/docs/error-messages/compiler-errors-2/compiler-error-c3291.md index 493f6f1eacd..ffd70d1e8f8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3291.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3291.md @@ -16,7 +16,7 @@ A trivial property cannot be named **`default`**. See [property](../../extension ## Example -The following sample generates C3291. +The following example generates C3291. ```cpp // C3291.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3292.md b/docs/error-messages/compiler-errors-2/compiler-error-c3292.md index cccc8e2515b..014ce5c1612 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3292.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3292.md @@ -16,7 +16,7 @@ The cli namespace cannot be declared in your code. For more information, see [P ## Example -The following sample generates C3292. +The following example generates C3292. ```cpp // C3292.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3293.md b/docs/error-messages/compiler-errors-2/compiler-error-c3293.md index f0274e24775..f5ddd6fbc0a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3293.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3293.md @@ -18,7 +18,7 @@ An indexed property was accessed incorrectly. See [How to: Use Properties in C+ ## Example -The following sample generates C3293 in Visual Studio 2015 and earlier. +The following example generates C3293 in Visual Studio 2015 and earlier. ```cpp // C3293.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3296.md b/docs/error-messages/compiler-errors-2/compiler-error-c3296.md index d24c70db0f2..c0e6096f56f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3296.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3296.md @@ -18,7 +18,7 @@ For more information, see [property](../../extensions/property-cpp-component-ext ## Example -The following sample generates C3296. +The following example generates C3296. ```cpp // C3296.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3297.md b/docs/error-messages/compiler-errors-2/compiler-error-c3297.md index 2be74dc44f2..2585206622c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3297.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3297.md @@ -18,7 +18,7 @@ For more information, see [Constraints on Generic Type Parameters (C++/CLI)](../ ## Example -The following sample generates C3297. +The following example generates C3297. ```cpp // C3297.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3298.md b/docs/error-messages/compiler-errors-2/compiler-error-c3298.md index 6baf9d6a885..bcb8a6808e0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3298.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3298.md @@ -18,7 +18,7 @@ For more information, see [Constraints on Generic Type Parameters (C++/CLI)](../ ## Example -The following sample generates C3298. +The following example generates C3298. ```cpp // C3298.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3299.md b/docs/error-messages/compiler-errors-2/compiler-error-c3299.md index 03964b63895..e44f79c1f05 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3299.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3299.md @@ -20,7 +20,7 @@ For more information, see [Constraints on Generic Type Parameters (C++/CLI)](../ ## Example -The following sample generates C3299. +The following example generates C3299. ```cpp // C3299.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3309.md b/docs/error-messages/compiler-errors-2/compiler-error-c3309.md index f62f6a5449d..b623a5ab6df 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3309.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3309.md @@ -16,7 +16,7 @@ The value that you pass to the name property of the module attribute cannot be a ## Example -The following sample generates C3309: +The following example generates C3309: ```cpp // C3309.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3320.md b/docs/error-messages/compiler-errors-2/compiler-error-c3320.md index ad2da725eb3..e5bb9981eee 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3320.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3320.md @@ -16,7 +16,7 @@ An exported user-defined type (UDT), which could be a struct, class, enum, or un ## Example -The following sample generates C3320: +The following example generates C3320: ```cpp // C3320.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3340.md b/docs/error-messages/compiler-errors-2/compiler-error-c3340.md index 5947afd04ca..935284678c4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3340.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3340.md @@ -16,7 +16,7 @@ The [restricted](../../windows/attributes/restricted.md) attribute and the [defa ## Example -The following sample generates C3340: +The following example generates C3340: ```cpp // C3340.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3342.md b/docs/error-messages/compiler-errors-2/compiler-error-c3342.md index b6e1ec96601..7ccad0e0742 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3342.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3342.md @@ -20,7 +20,7 @@ For more information, see [User-Defined Attributes](../../extensions/user-define ## Example -The following sample generates C3342. +The following example generates C3342. ```cpp // C3342.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3347.md b/docs/error-messages/compiler-errors-2/compiler-error-c3347.md index 91a90d9e4ed..2b6ebc7d637 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3347.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3347.md @@ -16,7 +16,7 @@ A required argument was not passed to the [idl_module](../../windows/attributes/ ## Example -The following sample generates C3347: +The following example generates C3347: ```cpp // C3347.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3350.md b/docs/error-messages/compiler-errors-2/compiler-error-c3350.md index 2ef515a773a..0855e81f1dc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3350.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3350.md @@ -16,7 +16,7 @@ When you create an instance of a delegate, you must pass two arguments, an insta ## Example -The following sample generates C3350: +The following example generates C3350: ```cpp // C3350.cpp From 9fee0c07862ceb2fc8f6753242e2d8d4dec57fd9 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 18 Aug 2025 01:36:08 +0800 Subject: [PATCH 1463/2255] Update metadata for error references in range [C3281, C3350] --- .../error-messages/compiler-errors-2/compiler-error-c3282.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3283.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3284.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3285.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3286.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3287.md | 1 - .../error-messages/compiler-errors-2/compiler-error-c3288.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3289.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3290.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3291.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3292.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3293.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3296.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3297.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3298.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3299.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3303.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3309.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3320.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3322.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3333.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3334.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3340.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3342.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3345.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3347.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3350.md | 5 ++--- 27 files changed, 52 insertions(+), 79 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3282.md b/docs/error-messages/compiler-errors-2/compiler-error-c3282.md index dbbbeb4afe4..741de4d6c9f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3282.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3282.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3282" title: "Compiler Error C3282" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3282" +ms.date: 11/04/2016 f1_keywords: ["C3282"] helpviewer_keywords: ["C3282"] -ms.assetid: bac2ac89-c360-4c24-bb81-c20c62ece9ba --- # Compiler Error C3282 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3283.md b/docs/error-messages/compiler-errors-2/compiler-error-c3283.md index 5989fc71eba..bdd801d2ffd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3283.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3283.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3283" title: "Compiler Error C3283" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3283" +ms.date: 11/04/2016 f1_keywords: ["C3283"] helpviewer_keywords: ["C3283"] -ms.assetid: c51d912c-cde3-4928-904e-26734c8954ce --- # Compiler Error C3283 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3284.md b/docs/error-messages/compiler-errors-2/compiler-error-c3284.md index 0ec077ca0c1..20908966346 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3284.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3284.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3284" title: "Compiler Error C3284" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3284" +ms.date: 11/04/2016 f1_keywords: ["C3284"] helpviewer_keywords: ["C3284"] -ms.assetid: e582f316-e9db-4d27-9c70-fdfa737a9d5f --- # Compiler Error C3284 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3285.md b/docs/error-messages/compiler-errors-2/compiler-error-c3285.md index 995914e904f..fdd60a3eda7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3285.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3285.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3285" title: "Compiler Error C3285" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3285" +ms.date: 11/04/2016 f1_keywords: ["C3285"] helpviewer_keywords: ["C3285"] -ms.assetid: 04e8f210-d67e-4810-b153-e1efe2986c8f --- # Compiler Error C3285 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3286.md b/docs/error-messages/compiler-errors-2/compiler-error-c3286.md index 561be373a90..7a93263d5ff 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3286.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3286.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3286" title: "Compiler Error C3286" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3286" +ms.date: 11/04/2016 f1_keywords: ["C3286"] helpviewer_keywords: ["C3286"] -ms.assetid: 554328c8-cf44-4f7d-a8d2-def74d28ecdd --- # Compiler Error C3286 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3287.md b/docs/error-messages/compiler-errors-2/compiler-error-c3287.md index 0a2988aa245..f039ff49189 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3287.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3287.md @@ -4,7 +4,6 @@ description: "Describes Microsoft C++ compiler error C3287." ms.date: 09/25/2020 f1_keywords: ["C3287"] helpviewer_keywords: ["C3287"] -ms.assetid: c1fa73d2-2c82-4136-a7da-0e75e3b420ad --- # Compiler Error C3287 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3288.md b/docs/error-messages/compiler-errors-2/compiler-error-c3288.md index 36a02c61a31..6597067eb90 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3288.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3288.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3288" title: "Compiler Error C3288" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3288" +ms.date: 11/04/2016 f1_keywords: ["C3288"] helpviewer_keywords: ["C3288"] -ms.assetid: ed08a540-9751-46e1-9cbe-c51d6a49ffab --- # Compiler Error C3288 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3289.md b/docs/error-messages/compiler-errors-2/compiler-error-c3289.md index c3493d65ff3..d4823e99655 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3289.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3289.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3289" title: "Compiler Error C3289" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3289" +ms.date: 11/04/2016 f1_keywords: ["C3289"] helpviewer_keywords: ["C3289"] -ms.assetid: 3c1c623b-7fcf-43ab-a89a-8722532a8d29 --- # Compiler Error C3289 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3290.md b/docs/error-messages/compiler-errors-2/compiler-error-c3290.md index b5aa1aa18dd..86166548898 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3290.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3290.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3290" title: "Compiler Error C3290" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3290" +ms.date: 11/04/2016 f1_keywords: ["C3290"] helpviewer_keywords: ["C3290"] -ms.assetid: 0baf684b-1143-4953-ac99-a2fa267d8017 --- # Compiler Error C3290 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3291.md b/docs/error-messages/compiler-errors-2/compiler-error-c3291.md index ffd70d1e8f8..ae67efb8b3a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3291.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3291.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3291" title: "Compiler Error C3291" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3291" +ms.date: 11/04/2016 f1_keywords: ["C3291"] helpviewer_keywords: ["C3291"] -ms.assetid: ed2e9f89-8dbc-4387-bc26-cc955e840858 --- # Compiler Error C3291 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3292.md b/docs/error-messages/compiler-errors-2/compiler-error-c3292.md index 014ce5c1612..6951f30c688 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3292.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3292.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3292" title: "Compiler Error C3292" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3292" +ms.date: 11/04/2016 f1_keywords: ["C3292"] helpviewer_keywords: ["C3292"] -ms.assetid: ead485cc-5471-4e10-b361-300589ff5b70 --- # Compiler Error C3292 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3293.md b/docs/error-messages/compiler-errors-2/compiler-error-c3293.md index f5ddd6fbc0a..e62c1f37089 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3293.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3293.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3293" title: "Compiler Error C3293" -ms.date: "07/21/2017" +description: "Learn more about: Compiler Error C3293" +ms.date: 07/21/2017 f1_keywords: ["C3293"] helpviewer_keywords: ["C3293"] -ms.assetid: b772cf98-52e0-4e24-be23-1f5d87d999ac --- # Compiler Error C3293 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3296.md b/docs/error-messages/compiler-errors-2/compiler-error-c3296.md index c0e6096f56f..cc62bb8e34a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3296.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3296.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3296" title: "Compiler Error C3296" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3296" +ms.date: 11/04/2016 f1_keywords: ["C3296"] helpviewer_keywords: ["C3296"] -ms.assetid: fc4c9dcd-16cf-4eee-a1ac-c43e7c29e443 --- # Compiler Error C3296 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3297.md b/docs/error-messages/compiler-errors-2/compiler-error-c3297.md index 2585206622c..8a2ba2122a7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3297.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3297.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3297" title: "Compiler Error C3297" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3297" +ms.date: 11/04/2016 f1_keywords: ["C3297"] helpviewer_keywords: ["C3297"] -ms.assetid: 2a718b4c-6cdb-4418-92c0-fc3a259431c4 --- # Compiler Error C3297 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3298.md b/docs/error-messages/compiler-errors-2/compiler-error-c3298.md index bcb8a6808e0..5b6d1155d9c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3298.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3298.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3298" title: "Compiler Error C3298" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3298" +ms.date: 11/04/2016 f1_keywords: ["C3298"] helpviewer_keywords: ["C3298"] -ms.assetid: 458c2680-95bb-4d5e-895f-ce4115844193 --- # Compiler Error C3298 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3299.md b/docs/error-messages/compiler-errors-2/compiler-error-c3299.md index e44f79c1f05..2ddb3da5245 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3299.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3299.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3299" title: "Compiler Error C3299" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3299" +ms.date: 11/04/2016 f1_keywords: ["C3299"] helpviewer_keywords: ["C3299"] -ms.assetid: 7cabdf01-bceb-404f-9401-cdd9c7fc1641 --- # Compiler Error C3299 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3303.md b/docs/error-messages/compiler-errors-2/compiler-error-c3303.md index 03f65642d61..db42b47058e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3303.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3303.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3303" title: "Compiler Error C3303" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3303" +ms.date: 11/04/2016 f1_keywords: ["C3303"] helpviewer_keywords: ["C3303"] -ms.assetid: c6f6ea3d-f6b7-4401-8bbb-f283a2c05540 --- # Compiler Error C3303 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3309.md b/docs/error-messages/compiler-errors-2/compiler-error-c3309.md index b623a5ab6df..779f2c44544 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3309.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3309.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3309" title: "Compiler Error C3309" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3309" +ms.date: 11/04/2016 f1_keywords: ["C3309"] helpviewer_keywords: ["C3309"] -ms.assetid: 75ee16e3-7d4e-4c41-b3cb-64e9849c3aab --- # Compiler Error C3309 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3320.md b/docs/error-messages/compiler-errors-2/compiler-error-c3320.md index e5bb9981eee..54472b937f7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3320.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3320.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3320" title: "Compiler Error C3320" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3320" +ms.date: 11/04/2016 f1_keywords: ["C3320"] helpviewer_keywords: ["C3320"] -ms.assetid: 2ef72d9a-1f1d-4b2e-b244-9fd3f3e70cb6 --- # Compiler Error C3320 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3322.md b/docs/error-messages/compiler-errors-2/compiler-error-c3322.md index 1abf6d3d455..b8a614d504e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3322.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3322.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3322" title: "Compiler Error C3322" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3322" +ms.date: 11/04/2016 f1_keywords: ["C3322"] helpviewer_keywords: ["C3322"] -ms.assetid: d8a0ad95-30df-4337-b0c8-4747de0bef50 --- # Compiler Error C3322 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3333.md b/docs/error-messages/compiler-errors-2/compiler-error-c3333.md index fbc53c1ec41..6279bcb307d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3333.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3333.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3333" title: "Compiler Error C3333" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3333" +ms.date: 11/04/2016 f1_keywords: ["C3333"] helpviewer_keywords: ["C3333"] -ms.assetid: 51693978-fba6-435a-a696-74735cc875de --- # Compiler Error C3333 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3334.md b/docs/error-messages/compiler-errors-2/compiler-error-c3334.md index 7cf43b918e5..017856ba7c0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3334.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3334.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3334" title: "Compiler Error C3334" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3334" +ms.date: 11/04/2016 f1_keywords: ["C3334"] helpviewer_keywords: ["C3334"] -ms.assetid: e972c625-77e7-4022-8aba-e1db01d7a0d7 --- # Compiler Error C3334 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3340.md b/docs/error-messages/compiler-errors-2/compiler-error-c3340.md index 935284678c4..0c76035b527 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3340.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3340.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3340" title: "Compiler Error C3340" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3340" +ms.date: 11/04/2016 f1_keywords: ["C3340"] helpviewer_keywords: ["C3340"] -ms.assetid: 23b12298-b92a-4717-8380-f165c998cb8a --- # Compiler Error C3340 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3342.md b/docs/error-messages/compiler-errors-2/compiler-error-c3342.md index 7ccad0e0742..e4edbd8c142 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3342.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3342.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3342" title: "Compiler Error C3342" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3342" +ms.date: 11/04/2016 f1_keywords: ["C3342"] helpviewer_keywords: ["C3342"] -ms.assetid: 5c6d784f-bebe-4f7e-8615-44ca6f78bfba --- # Compiler Error C3342 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3345.md b/docs/error-messages/compiler-errors-2/compiler-error-c3345.md index b607d6d74c2..852653abaa3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3345.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3345.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3345" title: "Compiler Error C3345" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3345" +ms.date: 11/04/2016 f1_keywords: ["C3345"] helpviewer_keywords: ["C3345"] -ms.assetid: 1dda4c79-73bb-441b-b939-746154c3afba --- # Compiler Error C3345 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3347.md b/docs/error-messages/compiler-errors-2/compiler-error-c3347.md index 2b6ebc7d637..3433ff4fd12 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3347.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3347.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3347" title: "Compiler Error C3347" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3347" +ms.date: 11/04/2016 f1_keywords: ["C3347"] helpviewer_keywords: ["C3347"] -ms.assetid: e939ad29-0b78-4681-9618-9bdae5675cee --- # Compiler Error C3347 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3350.md b/docs/error-messages/compiler-errors-2/compiler-error-c3350.md index 0855e81f1dc..57907de24ac 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3350.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3350.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3350" title: "Compiler Error C3350" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3350" +ms.date: 11/04/2016 f1_keywords: ["C3350"] helpviewer_keywords: ["C3350"] -ms.assetid: cfbbc338-92b5-4f34-999e-aa2d2376bc70 --- # Compiler Error C3350 From 81c5efe35cf5cba9722bc1ca0d2654b99fb800ee Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 18 Aug 2025 22:53:30 +0800 Subject: [PATCH 1464/2255] Add blockquotes for error messages in range [C3351, C3380] --- docs/error-messages/compiler-errors-2/compiler-error-c3351.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3352.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3353.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3354.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3356.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3358.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3360.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3363.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3364.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3365.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3366.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3367.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3368.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3369.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3370.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3371.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3372.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3373.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3374.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3375.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3379.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3380.md | 2 +- 22 files changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3351.md b/docs/error-messages/compiler-errors-2/compiler-error-c3351.md index 3962af7b367..15afe71af77 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3351.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3351.md @@ -8,7 +8,7 @@ ms.assetid: c021bbbe-1067-4f51-af4f-940d2b792eb5 --- # Compiler Error C3351 -'object' : delegate constructor: second argument must be address of a static member function or global function +> 'object' : delegate constructor: second argument must be address of a static member function or global function The compiler expected the address of a function declared **`static`**. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3352.md b/docs/error-messages/compiler-errors-2/compiler-error-c3352.md index 60bf88d2fa8..0dd8a0344cf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3352.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3352.md @@ -8,7 +8,7 @@ ms.assetid: f233bed7-474e-425f-aad2-7801578169d4 --- # Compiler Error C3352 -'function' : the specified function does not match the delegate type 'type' +> 'function' : the specified function does not match the delegate type 'type' The parameter lists for `function` and the delegate do not match. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3353.md b/docs/error-messages/compiler-errors-2/compiler-error-c3353.md index de559c94332..82847fb666e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3353.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3353.md @@ -8,7 +8,7 @@ ms.assetid: 5699c04b-d504-46ce-bf71-c200318fed71 --- # Compiler Error C3353 -'delegate' : a delegate can only be created from a global function or a member function of a managed or WinRT type +> 'delegate' : a delegate can only be created from a global function or a member function of a managed or WinRT type Delegates, declared with the [delegate](../../extensions/delegate-cpp-component-extensions.md) keyword, can only be declared at global scope. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3354.md b/docs/error-messages/compiler-errors-2/compiler-error-c3354.md index ba44cfdb382..ad1c6f92580 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3354.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3354.md @@ -8,7 +8,7 @@ ms.assetid: 185de401-231e-4999-a149-172ee4c69d84 --- # Compiler Error C3354 -'function' : the function used to create a delegate cannot have return type 'type' +> 'function' : the function used to create a delegate cannot have return type 'type' The following types are invalid as return types for a **`delegate`**: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3356.md b/docs/error-messages/compiler-errors-2/compiler-error-c3356.md index 507aa851102..d492d01e2fd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3356.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3356.md @@ -8,6 +8,6 @@ ms.assetid: 6c1094f6-ac85-480a-b78b-e92fcf38641a --- # Compiler Error C3356 -'attribute': cannot call a multicast attribute with a fully qualified name +> 'attribute': cannot call a multicast attribute with a fully qualified name An attribute that is processed by more than one process, for example, the compiler and ATL provider, was specified incorrectly. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3358.md b/docs/error-messages/compiler-errors-2/compiler-error-c3358.md index 44e865694af..001d718a04f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3358.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3358.md @@ -8,7 +8,7 @@ ms.assetid: 180b93df-e78f-441a-91fb-1594c681f7f0 --- # Compiler Error C3358 -'symbol': symbol not found +> 'symbol': symbol not found The required symbol was not found. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3360.md b/docs/error-messages/compiler-errors-2/compiler-error-c3360.md index f8f06342a45..abacc0bab42 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3360.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3360.md @@ -8,7 +8,7 @@ ms.assetid: 6acf983a-dbb6-422b-b045-a34bb4ba6761 --- # Compiler Error C3360 -'string': cannot create name +> 'string': cannot create name The value that was passed to the [uuid](../../windows/attributes/uuid-cpp-attributes.md) attribute was not valid. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3363.md b/docs/error-messages/compiler-errors-2/compiler-error-c3363.md index d224e476b45..6812e4879c5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3363.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3363.md @@ -8,7 +8,7 @@ ms.assetid: 41aa922f-608e-4f7a-ba66-451fc1161935 --- # Compiler Error C3363 -'type' : 'typeid' can only be applied to a type +> 'type' : 'typeid' can only be applied to a type The [typeid](../../extensions/typeid-cpp-component-extensions.md) operator was used incorrectly. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3364.md b/docs/error-messages/compiler-errors-2/compiler-error-c3364.md index 252a5951662..f0e36b2face 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3364.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3364.md @@ -8,7 +8,7 @@ ms.assetid: 98654741-60fe-4472-a6af-e580f8c0a6e1 --- # Compiler Error C3364 -'delegate': delegate constructor: argument must be pointer to member function of managed class or global function +> 'delegate': delegate constructor: argument must be pointer to member function of managed class or global function The second parameter of the delegate's constructor takes either the address of a member function or the address of a static member function of any class. Both are treated as simple addresses. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3365.md b/docs/error-messages/compiler-errors-2/compiler-error-c3365.md index 2966274d70a..142da9423e0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3365.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3365.md @@ -8,7 +8,7 @@ ms.assetid: 875ec3a4-522c-4e3d-9b67-48808b857f6d --- # Compiler Error C3365 -operator 'operator' : differing operands of type 'type1' and 'type2' +> operator 'operator' : differing operands of type 'type1' and 'type2' An attempt was made to compose delegates with different types. See [How to: Define and Use Delegates (C++/CLI)](../../dotnet/how-to-define-and-use-delegates-cpp-cli.md) for more information about delegates. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3366.md b/docs/error-messages/compiler-errors-2/compiler-error-c3366.md index e29cedffa30..0bad588f1a4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3366.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3366.md @@ -8,7 +8,7 @@ ms.assetid: efc55bcf-c16d-43c1-a36f-87a6165fa2a8 --- # Compiler Error C3366 -'variable' : static data members of managed or WinRTtypes must be defined within the class definition +> 'variable' : static data members of managed or WinRTtypes must be defined within the class definition You attempted to reference a static member of a WinRT or .NET class or interface outside the definition of that class or interface. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3367.md b/docs/error-messages/compiler-errors-2/compiler-error-c3367.md index c7b9e199930..bea8903dd32 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3367.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3367.md @@ -8,7 +8,7 @@ ms.assetid: e675d42b-f5b0-4d43-aab1-1f5024233102 --- # Compiler Error C3367 -'static_member_function' : cannot use static function to create an unbound delegate +> 'static_member_function' : cannot use static function to create an unbound delegate When you call an unbound delegate, you must pass an instance of an object. Since a static member function is called through the class name, you can only instantiate an unbound delegate with an instance member function. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3368.md b/docs/error-messages/compiler-errors-2/compiler-error-c3368.md index 56c588043ec..1a5e2ced1ab 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3368.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3368.md @@ -8,7 +8,7 @@ ms.assetid: 5bfd5be4-dfa9-4b33-9612-010561b40955 --- # Compiler Error C3368 -'function declaration' : invalid calling convention for IDL +> 'function declaration' : invalid calling convention for IDL You can only use the [__stdcall](../../cpp/stdcall.md) or [__cdecl](../../cpp/cdecl.md) calling conventions in an .idl file. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3369.md b/docs/error-messages/compiler-errors-2/compiler-error-c3369.md index 55cbcf23004..edca169b28a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3369.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3369.md @@ -8,7 +8,7 @@ ms.assetid: c6ceb9cb-3df9-4334-9a5c-d16db351d476 --- # Compiler Error C3369 -'module name': idl_module already defined +> 'module name': idl_module already defined The [idl_module](../../windows/attributes/idl-module.md) usage where you define the DLL can only occur once in a program. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3370.md b/docs/error-messages/compiler-errors-2/compiler-error-c3370.md index 519ed9ab92b..2671472ae01 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3370.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3370.md @@ -8,7 +8,7 @@ ms.assetid: ee6d4c85-78fc-42b2-836e-5cc491a3b2ba --- # Compiler Error C3370 -'idl_module name': idl_module not yet defined +> 'idl_module name': idl_module not yet defined Before you can use [idl_module](../../windows/attributes/idl-module.md) to specify an entry point in a DLL, you must first use `idl_module` to specify the DLL name. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3371.md b/docs/error-messages/compiler-errors-2/compiler-error-c3371.md index 3eed2c81fba..7e6e671752a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3371.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3371.md @@ -8,7 +8,7 @@ ms.assetid: f7ecf1aa-ed0a-4f73-81e5-62cf98f88ea1 --- # Compiler Error C3371 -'idl_module': only the 'name' property is allowed here +> 'idl_module': only the 'name' property is allowed here [idl_module](../../windows/attributes/idl-module.md) usage directly on a function declaration cannot have any parameters other than name. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3372.md b/docs/error-messages/compiler-errors-2/compiler-error-c3372.md index 52307011d61..18d4c689e85 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3372.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3372.md @@ -8,7 +8,7 @@ ms.assetid: 38ee39ed-03ff-4e6d-9104-f1977b96645d --- # Compiler Error C3372 -must specify at least 1 interface for attribute 'source' on a coclass +> must specify at least 1 interface for attribute 'source' on a coclass For certain attributes, you must pass an interface name as a parameter. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3373.md b/docs/error-messages/compiler-errors-2/compiler-error-c3373.md index 373f91ea803..6f9cc0a09e7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3373.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3373.md @@ -8,7 +8,7 @@ ms.assetid: 6e7586c3-1a15-4773-ad20-f90090a400dc --- # Compiler Error C3373 -attribute 'attribute' takes no arguments except on a coclass +> attribute 'attribute' takes no arguments except on a coclass Some attributes can be applied to more than one C++ construct, but arguments to the attribute may only be allowed on some constructs. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3374.md b/docs/error-messages/compiler-errors-2/compiler-error-c3374.md index 5b1012f661c..678e67608d5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3374.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3374.md @@ -8,7 +8,7 @@ ms.assetid: 41431299-bd20-47d4-a0c8-1334dd79018b --- # Compiler Error C3374 -can't take address of 'function' unless creating delegate instance +> can't take address of 'function' unless creating delegate instance The address of a function was taken in a context other than the creation of a delegate instance. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3375.md b/docs/error-messages/compiler-errors-2/compiler-error-c3375.md index 5e7405e0170..a8b6e273934 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3375.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3375.md @@ -8,7 +8,7 @@ ms.assetid: f1df78c6-e6ca-48f3-8b29-4e1710002bf3 --- # Compiler Error C3375 -'function' : ambiguous delegate function +> 'function' : ambiguous delegate function A delegate instantiation could have been to a static member function, or as an unbound delegate to an instance function, so the compiler issued this error. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3379.md b/docs/error-messages/compiler-errors-2/compiler-error-c3379.md index baacee8b4ed..70fb29ae35b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3379.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3379.md @@ -8,7 +8,7 @@ ms.assetid: a66c2c4e-091c-4426-9cde-7c4cfb2ffce1 --- # Compiler Error C3379 -'class' : a nested class cannot have an assembly access specifier as part of its declaration +> 'class' : a nested class cannot have an assembly access specifier as part of its declaration When applied to a managed type, such as class or struct, the [public](../../cpp/public-cpp.md) and [private](../../cpp/private-cpp.md) keywords indicate whether the class will be exposed through assembly metadata. `public` or `private` cannot be applied to a nested class, which will inherit the assembly access of the enclosing class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3380.md b/docs/error-messages/compiler-errors-2/compiler-error-c3380.md index a150009936f..327f951fce0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3380.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3380.md @@ -8,7 +8,7 @@ ms.assetid: 86f1f4ec-4ad8-4a1a-9b6c-2d9b6129df6b --- # Compiler Error C3380 -'class' : invalid assembly access specifier - only 'public' or 'private' are allowed +> 'class' : invalid assembly access specifier - only 'public' or 'private' are allowed When applied to a managed class or struct, the [public](../../cpp/public-cpp.md) and [private](../../cpp/private-cpp.md) keywords indicate whether the class will be exposed through assembly metadata. Only `public` or `private` can be applied to a class in a program compiled with [/clr](../../build/reference/clr-common-language-runtime-compilation.md). From a950c523af515a4557affea134f9f679606c5606 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 18 Aug 2025 22:58:18 +0800 Subject: [PATCH 1465/2255] Add "Remarks" and "Example" headings for error references in range [C3351, C3380] --- docs/error-messages/compiler-errors-2/compiler-error-c3351.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3352.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3353.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3354.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3356.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3358.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3360.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3363.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3364.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3365.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3366.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3367.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3368.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3369.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3370.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3371.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3372.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3373.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3374.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3375.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3379.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3380.md | 4 ++++ 22 files changed, 78 insertions(+) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3351.md b/docs/error-messages/compiler-errors-2/compiler-error-c3351.md index 15afe71af77..42beedd511c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3351.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3351.md @@ -10,8 +10,12 @@ ms.assetid: c021bbbe-1067-4f51-af4f-940d2b792eb5 > 'object' : delegate constructor: second argument must be address of a static member function or global function +## Remarks + The compiler expected the address of a function declared **`static`**. +## Example + The following sample generates C3351: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3352.md b/docs/error-messages/compiler-errors-2/compiler-error-c3352.md index 0dd8a0344cf..75035f649b6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3352.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3352.md @@ -10,10 +10,14 @@ ms.assetid: f233bed7-474e-425f-aad2-7801578169d4 > 'function' : the specified function does not match the delegate type 'type' +## Remarks + The parameter lists for `function` and the delegate do not match. For more information, see [delegate (C++ Component Extensions)](../../extensions/delegate-cpp-component-extensions.md). +## Example + The following sample generates C3352: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3353.md b/docs/error-messages/compiler-errors-2/compiler-error-c3353.md index 82847fb666e..139357669d6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3353.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3353.md @@ -10,8 +10,12 @@ ms.assetid: 5699c04b-d504-46ce-bf71-c200318fed71 > 'delegate' : a delegate can only be created from a global function or a member function of a managed or WinRT type +## Remarks + Delegates, declared with the [delegate](../../extensions/delegate-cpp-component-extensions.md) keyword, can only be declared at global scope. +## Example + The following sample generates C3353: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3354.md b/docs/error-messages/compiler-errors-2/compiler-error-c3354.md index ad1c6f92580..aede715b387 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3354.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3354.md @@ -10,6 +10,8 @@ ms.assetid: 185de401-231e-4999-a149-172ee4c69d84 > 'function' : the function used to create a delegate cannot have return type 'type' +## Remarks + The following types are invalid as return types for a **`delegate`**: - Pointer to function @@ -22,6 +24,8 @@ The following types are invalid as return types for a **`delegate`**: - Reference to member function +## Example + The following sample generates C3354: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3356.md b/docs/error-messages/compiler-errors-2/compiler-error-c3356.md index d492d01e2fd..7a3cec652f9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3356.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3356.md @@ -10,4 +10,6 @@ ms.assetid: 6c1094f6-ac85-480a-b78b-e92fcf38641a > 'attribute': cannot call a multicast attribute with a fully qualified name +## Remarks + An attribute that is processed by more than one process, for example, the compiler and ATL provider, was specified incorrectly. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3358.md b/docs/error-messages/compiler-errors-2/compiler-error-c3358.md index 001d718a04f..63982232512 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3358.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3358.md @@ -10,8 +10,12 @@ ms.assetid: 180b93df-e78f-441a-91fb-1594c681f7f0 > 'symbol': symbol not found +## Remarks + The required symbol was not found. +## Example + The following sample generates C3358: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3360.md b/docs/error-messages/compiler-errors-2/compiler-error-c3360.md index abacc0bab42..df2709f2986 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3360.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3360.md @@ -10,8 +10,12 @@ ms.assetid: 6acf983a-dbb6-422b-b045-a34bb4ba6761 > 'string': cannot create name +## Remarks + The value that was passed to the [uuid](../../windows/attributes/uuid-cpp-attributes.md) attribute was not valid. +## Example + The following sample generates C3360: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3363.md b/docs/error-messages/compiler-errors-2/compiler-error-c3363.md index 6812e4879c5..7518bdfdc2a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3363.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3363.md @@ -10,6 +10,8 @@ ms.assetid: 41aa922f-608e-4f7a-ba66-451fc1161935 > 'type' : 'typeid' can only be applied to a type +## Remarks + The [typeid](../../extensions/typeid-cpp-component-extensions.md) operator was used incorrectly. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3364.md b/docs/error-messages/compiler-errors-2/compiler-error-c3364.md index f0e36b2face..38c6170d199 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3364.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3364.md @@ -10,8 +10,12 @@ ms.assetid: 98654741-60fe-4472-a6af-e580f8c0a6e1 > 'delegate': delegate constructor: argument must be pointer to member function of managed class or global function +## Remarks + The second parameter of the delegate's constructor takes either the address of a member function or the address of a static member function of any class. Both are treated as simple addresses. +## Example + The following sample generates C3364: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3365.md b/docs/error-messages/compiler-errors-2/compiler-error-c3365.md index 142da9423e0..284e8d6dc9e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3365.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3365.md @@ -10,6 +10,8 @@ ms.assetid: 875ec3a4-522c-4e3d-9b67-48808b857f6d > operator 'operator' : differing operands of type 'type1' and 'type2' +## Remarks + An attempt was made to compose delegates with different types. See [How to: Define and Use Delegates (C++/CLI)](../../dotnet/how-to-define-and-use-delegates-cpp-cli.md) for more information about delegates. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3366.md b/docs/error-messages/compiler-errors-2/compiler-error-c3366.md index 0bad588f1a4..3d48bc014b1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3366.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3366.md @@ -10,10 +10,14 @@ ms.assetid: efc55bcf-c16d-43c1-a36f-87a6165fa2a8 > 'variable' : static data members of managed or WinRTtypes must be defined within the class definition +## Remarks + You attempted to reference a static member of a WinRT or .NET class or interface outside the definition of that class or interface. The compiler needs to know the full definition of the class (to emit the meta-data after one pass) and requires static data members to be initialized within the class. +## Example + For example, the following example generates C3366 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3367.md b/docs/error-messages/compiler-errors-2/compiler-error-c3367.md index bea8903dd32..1580a10fb58 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3367.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3367.md @@ -10,6 +10,8 @@ ms.assetid: e675d42b-f5b0-4d43-aab1-1f5024233102 > 'static_member_function' : cannot use static function to create an unbound delegate +## Remarks + When you call an unbound delegate, you must pass an instance of an object. Since a static member function is called through the class name, you can only instantiate an unbound delegate with an instance member function. For more information about unbound delegates, see [How to: Define and Use Delegates (C++/CLI)](../../dotnet/how-to-define-and-use-delegates-cpp-cli.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3368.md b/docs/error-messages/compiler-errors-2/compiler-error-c3368.md index 1a5e2ced1ab..4d64b2dd87b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3368.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3368.md @@ -10,8 +10,12 @@ ms.assetid: 5bfd5be4-dfa9-4b33-9612-010561b40955 > 'function declaration' : invalid calling convention for IDL +## Remarks + You can only use the [__stdcall](../../cpp/stdcall.md) or [__cdecl](../../cpp/cdecl.md) calling conventions in an .idl file. +## Example + The following sample generates C3368: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3369.md b/docs/error-messages/compiler-errors-2/compiler-error-c3369.md index edca169b28a..79889bfb194 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3369.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3369.md @@ -10,8 +10,12 @@ ms.assetid: c6ceb9cb-3df9-4334-9a5c-d16db351d476 > 'module name': idl_module already defined +## Remarks + The [idl_module](../../windows/attributes/idl-module.md) usage where you define the DLL can only occur once in a program. +## Example + The following sample generates C3369: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3370.md b/docs/error-messages/compiler-errors-2/compiler-error-c3370.md index 2671472ae01..c4e27fb8972 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3370.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3370.md @@ -10,8 +10,12 @@ ms.assetid: ee6d4c85-78fc-42b2-836e-5cc491a3b2ba > 'idl_module name': idl_module not yet defined +## Remarks + Before you can use [idl_module](../../windows/attributes/idl-module.md) to specify an entry point in a DLL, you must first use `idl_module` to specify the DLL name. +## Example + The following sample generates C3370: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3371.md b/docs/error-messages/compiler-errors-2/compiler-error-c3371.md index 7e6e671752a..2ded708823d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3371.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3371.md @@ -10,8 +10,12 @@ ms.assetid: f7ecf1aa-ed0a-4f73-81e5-62cf98f88ea1 > 'idl_module': only the 'name' property is allowed here +## Remarks + [idl_module](../../windows/attributes/idl-module.md) usage directly on a function declaration cannot have any parameters other than name. +## Example + The following sample generates C3371: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3372.md b/docs/error-messages/compiler-errors-2/compiler-error-c3372.md index 18d4c689e85..67bcbfc4acc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3372.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3372.md @@ -10,8 +10,12 @@ ms.assetid: 38ee39ed-03ff-4e6d-9104-f1977b96645d > must specify at least 1 interface for attribute 'source' on a coclass +## Remarks + For certain attributes, you must pass an interface name as a parameter. +## Example + The following sample generates C3372: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3373.md b/docs/error-messages/compiler-errors-2/compiler-error-c3373.md index 6f9cc0a09e7..6f11d64290e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3373.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3373.md @@ -10,8 +10,12 @@ ms.assetid: 6e7586c3-1a15-4773-ad20-f90090a400dc > attribute 'attribute' takes no arguments except on a coclass +## Remarks + Some attributes can be applied to more than one C++ construct, but arguments to the attribute may only be allowed on some constructs. +## Example + The following sample generates C3373: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3374.md b/docs/error-messages/compiler-errors-2/compiler-error-c3374.md index 678e67608d5..4f09aa18329 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3374.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3374.md @@ -10,8 +10,12 @@ ms.assetid: 41431299-bd20-47d4-a0c8-1334dd79018b > can't take address of 'function' unless creating delegate instance +## Remarks + The address of a function was taken in a context other than the creation of a delegate instance. +## Example + The following sample generates C3374: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3375.md b/docs/error-messages/compiler-errors-2/compiler-error-c3375.md index a8b6e273934..4448554644a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3375.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3375.md @@ -10,6 +10,8 @@ ms.assetid: f1df78c6-e6ca-48f3-8b29-4e1710002bf3 > 'function' : ambiguous delegate function +## Remarks + A delegate instantiation could have been to a static member function, or as an unbound delegate to an instance function, so the compiler issued this error. For more information, see [delegate (C++ Component Extensions)](../../extensions/delegate-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3379.md b/docs/error-messages/compiler-errors-2/compiler-error-c3379.md index 70fb29ae35b..91ccf04ac3c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3379.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3379.md @@ -10,10 +10,14 @@ ms.assetid: a66c2c4e-091c-4426-9cde-7c4cfb2ffce1 > 'class' : a nested class cannot have an assembly access specifier as part of its declaration +## Remarks + When applied to a managed type, such as class or struct, the [public](../../cpp/public-cpp.md) and [private](../../cpp/private-cpp.md) keywords indicate whether the class will be exposed through assembly metadata. `public` or `private` cannot be applied to a nested class, which will inherit the assembly access of the enclosing class. When used with [/clr](../../build/reference/clr-common-language-runtime-compilation.md), the `ref` and `value` keywords indicate that a class is managed (see [Classes and Structs](../../extensions/classes-and-structs-cpp-component-extensions.md)). +## Example + The following sample generates C3379: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3380.md b/docs/error-messages/compiler-errors-2/compiler-error-c3380.md index 327f951fce0..8ef29bd8b96 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3380.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3380.md @@ -10,10 +10,14 @@ ms.assetid: 86f1f4ec-4ad8-4a1a-9b6c-2d9b6129df6b > 'class' : invalid assembly access specifier - only 'public' or 'private' are allowed +## Remarks + When applied to a managed class or struct, the [public](../../cpp/public-cpp.md) and [private](../../cpp/private-cpp.md) keywords indicate whether the class will be exposed through assembly metadata. Only `public` or `private` can be applied to a class in a program compiled with [/clr](../../build/reference/clr-common-language-runtime-compilation.md). The `ref` and `value` keywords, when used with [/clr](../../build/reference/clr-common-language-runtime-compilation.md), indicate that a class is managed (see [Classes and Structs](../../extensions/classes-and-structs-cpp-component-extensions.md)). +## Example + The following sample generates C3380: ```cpp From 49178dfbf3e5462d47f56ebe99ad606f1d0104b1 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 18 Aug 2025 22:59:44 +0800 Subject: [PATCH 1466/2255] Replace term "sample" with "example" for error references in range [C3351, C3380] --- docs/error-messages/compiler-errors-2/compiler-error-c3351.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3352.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3353.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3354.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3358.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3360.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3363.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3364.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3365.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3367.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3368.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3369.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3370.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3371.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3372.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3373.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3374.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3375.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3379.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3380.md | 2 +- 20 files changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3351.md b/docs/error-messages/compiler-errors-2/compiler-error-c3351.md index 42beedd511c..079948a12b6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3351.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3351.md @@ -16,7 +16,7 @@ The compiler expected the address of a function declared **`static`**. ## Example -The following sample generates C3351: +The following example generates C3351: ```cpp // C3351a.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3352.md b/docs/error-messages/compiler-errors-2/compiler-error-c3352.md index 75035f649b6..91d5f99366b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3352.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3352.md @@ -18,7 +18,7 @@ For more information, see [delegate (C++ Component Extensions)](../../extension ## Example -The following sample generates C3352: +The following example generates C3352: ```cpp // C3352.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3353.md b/docs/error-messages/compiler-errors-2/compiler-error-c3353.md index 139357669d6..8a47cd563c5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3353.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3353.md @@ -16,7 +16,7 @@ Delegates, declared with the [delegate](../../extensions/delegate-cpp-component- ## Example -The following sample generates C3353: +The following example generates C3353: ```cpp // C3353.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3354.md b/docs/error-messages/compiler-errors-2/compiler-error-c3354.md index aede715b387..09900981d9f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3354.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3354.md @@ -26,7 +26,7 @@ The following types are invalid as return types for a **`delegate`**: ## Example -The following sample generates C3354: +The following example generates C3354: ```cpp // C3354_2.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3358.md b/docs/error-messages/compiler-errors-2/compiler-error-c3358.md index 63982232512..6b2b3656c4a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3358.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3358.md @@ -16,7 +16,7 @@ The required symbol was not found. ## Example -The following sample generates C3358: +The following example generates C3358: ```cpp // C3358.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3360.md b/docs/error-messages/compiler-errors-2/compiler-error-c3360.md index df2709f2986..4fa91cab148 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3360.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3360.md @@ -16,7 +16,7 @@ The value that was passed to the [uuid](../../windows/attributes/uuid-cpp-attrib ## Example -The following sample generates C3360: +The following example generates C3360: ```cpp // C3360.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3363.md b/docs/error-messages/compiler-errors-2/compiler-error-c3363.md index 7518bdfdc2a..1ad704c43f7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3363.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3363.md @@ -16,7 +16,7 @@ The [typeid](../../extensions/typeid-cpp-component-extensions.md) operator was u ## Example -The following sample generates C3363. +The following example generates C3363. ```cpp // C3363.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3364.md b/docs/error-messages/compiler-errors-2/compiler-error-c3364.md index 38c6170d199..214cf427df4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3364.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3364.md @@ -16,7 +16,7 @@ The second parameter of the delegate's constructor takes either the address of a ## Example -The following sample generates C3364: +The following example generates C3364: ```cpp // C3364_2.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3365.md b/docs/error-messages/compiler-errors-2/compiler-error-c3365.md index 284e8d6dc9e..222b51a2cd0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3365.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3365.md @@ -16,7 +16,7 @@ An attempt was made to compose delegates with different types. See [How to: Def ## Example -The following sample generates C3365: +The following example generates C3365: ```cpp // C3365.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3367.md b/docs/error-messages/compiler-errors-2/compiler-error-c3367.md index 1580a10fb58..327cd655784 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3367.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3367.md @@ -18,7 +18,7 @@ For more information about unbound delegates, see [How to: Define and Use Delega ## Example -The following sample generates C3367. +The following example generates C3367. ```cpp // C3367.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3368.md b/docs/error-messages/compiler-errors-2/compiler-error-c3368.md index 4d64b2dd87b..2382f3e91fb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3368.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3368.md @@ -16,7 +16,7 @@ You can only use the [__stdcall](../../cpp/stdcall.md) or [__cdecl](../../cpp/cd ## Example -The following sample generates C3368: +The following example generates C3368: ```cpp // C3368.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3369.md b/docs/error-messages/compiler-errors-2/compiler-error-c3369.md index 79889bfb194..97b352ee4c7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3369.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3369.md @@ -16,7 +16,7 @@ The [idl_module](../../windows/attributes/idl-module.md) usage where you define ## Example -The following sample generates C3369: +The following example generates C3369: ```cpp // C3369.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3370.md b/docs/error-messages/compiler-errors-2/compiler-error-c3370.md index c4e27fb8972..56d0852efc7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3370.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3370.md @@ -16,7 +16,7 @@ Before you can use [idl_module](../../windows/attributes/idl-module.md) to speci ## Example -The following sample generates C3370: +The following example generates C3370: ```cpp // C3370.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3371.md b/docs/error-messages/compiler-errors-2/compiler-error-c3371.md index 2ded708823d..1900015fb0e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3371.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3371.md @@ -16,7 +16,7 @@ ms.assetid: f7ecf1aa-ed0a-4f73-81e5-62cf98f88ea1 ## Example -The following sample generates C3371: +The following example generates C3371: ```cpp // C3371.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3372.md b/docs/error-messages/compiler-errors-2/compiler-error-c3372.md index 67bcbfc4acc..5073a30a455 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3372.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3372.md @@ -16,7 +16,7 @@ For certain attributes, you must pass an interface name as a parameter. ## Example -The following sample generates C3372: +The following example generates C3372: ```cpp // C3372.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3373.md b/docs/error-messages/compiler-errors-2/compiler-error-c3373.md index 6f11d64290e..d260eead253 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3373.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3373.md @@ -16,7 +16,7 @@ Some attributes can be applied to more than one C++ construct, but arguments to ## Example -The following sample generates C3373: +The following example generates C3373: ```cpp // C3373.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3374.md b/docs/error-messages/compiler-errors-2/compiler-error-c3374.md index 4f09aa18329..f48424178c8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3374.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3374.md @@ -16,7 +16,7 @@ The address of a function was taken in a context other than the creation of a de ## Example -The following sample generates C3374: +The following example generates C3374: ```cpp // C3374.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3375.md b/docs/error-messages/compiler-errors-2/compiler-error-c3375.md index 4448554644a..9965fafd1f0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3375.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3375.md @@ -18,7 +18,7 @@ For more information, see [delegate (C++ Component Extensions)](../../extension ## Example -The following sample generates C3375. +The following example generates C3375. ```cpp // C3375.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3379.md b/docs/error-messages/compiler-errors-2/compiler-error-c3379.md index 91ccf04ac3c..344ccf4dcfb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3379.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3379.md @@ -18,7 +18,7 @@ When used with [/clr](../../build/reference/clr-common-language-runtime-compilat ## Example -The following sample generates C3379: +The following example generates C3379: ```cpp // C3379a.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3380.md b/docs/error-messages/compiler-errors-2/compiler-error-c3380.md index 8ef29bd8b96..f56a950de90 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3380.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3380.md @@ -18,7 +18,7 @@ The `ref` and `value` keywords, when used with [/clr](../../build/reference/clr- ## Example -The following sample generates C3380: +The following example generates C3380: ```cpp // C3380_2.cpp From 9eaca13e699207e5934b5f739d191132873df094 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 18 Aug 2025 23:03:05 +0800 Subject: [PATCH 1467/2255] Update metadata for error references in range [C3351, C3380] --- .../error-messages/compiler-errors-2/compiler-error-c3351.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3352.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3353.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3354.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3356.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3358.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3360.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3363.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3364.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3365.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3366.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3367.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3368.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3369.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3370.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3371.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3372.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3373.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3374.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3375.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3379.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3380.md | 5 ++--- 22 files changed, 44 insertions(+), 66 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3351.md b/docs/error-messages/compiler-errors-2/compiler-error-c3351.md index 079948a12b6..0734f32ab3f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3351.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3351.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3351" title: "Compiler Error C3351" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3351" +ms.date: 11/04/2016 f1_keywords: ["C3351"] helpviewer_keywords: ["C3351"] -ms.assetid: c021bbbe-1067-4f51-af4f-940d2b792eb5 --- # Compiler Error C3351 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3352.md b/docs/error-messages/compiler-errors-2/compiler-error-c3352.md index 91d5f99366b..1268b23389d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3352.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3352.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3352" title: "Compiler Error C3352" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3352" +ms.date: 11/04/2016 f1_keywords: ["C3352"] helpviewer_keywords: ["C3352"] -ms.assetid: f233bed7-474e-425f-aad2-7801578169d4 --- # Compiler Error C3352 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3353.md b/docs/error-messages/compiler-errors-2/compiler-error-c3353.md index 8a47cd563c5..1499d4c19ef 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3353.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3353.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3353" title: "Compiler Error C3353" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3353" +ms.date: 11/04/2016 f1_keywords: ["C3353"] helpviewer_keywords: ["C3353"] -ms.assetid: 5699c04b-d504-46ce-bf71-c200318fed71 --- # Compiler Error C3353 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3354.md b/docs/error-messages/compiler-errors-2/compiler-error-c3354.md index 09900981d9f..a3f9b768b05 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3354.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3354.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3354" title: "Compiler Error C3354" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3354" +ms.date: 11/04/2016 f1_keywords: ["C3354"] helpviewer_keywords: ["C3354"] -ms.assetid: 185de401-231e-4999-a149-172ee4c69d84 --- # Compiler Error C3354 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3356.md b/docs/error-messages/compiler-errors-2/compiler-error-c3356.md index 7a3cec652f9..d4ead99fde5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3356.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3356.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3356" title: "Compiler Error C3356" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3356" +ms.date: 11/04/2016 f1_keywords: ["C3356"] helpviewer_keywords: ["C3356"] -ms.assetid: 6c1094f6-ac85-480a-b78b-e92fcf38641a --- # Compiler Error C3356 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3358.md b/docs/error-messages/compiler-errors-2/compiler-error-c3358.md index 6b2b3656c4a..e433cbf1dce 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3358.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3358.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3358" title: "Compiler Error C3358" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3358" +ms.date: 11/04/2016 f1_keywords: ["C3358"] helpviewer_keywords: ["C3358"] -ms.assetid: 180b93df-e78f-441a-91fb-1594c681f7f0 --- # Compiler Error C3358 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3360.md b/docs/error-messages/compiler-errors-2/compiler-error-c3360.md index 4fa91cab148..312db01e736 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3360.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3360.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3360" title: "Compiler Error C3360" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3360" +ms.date: 11/04/2016 f1_keywords: ["C3360"] helpviewer_keywords: ["C3360"] -ms.assetid: 6acf983a-dbb6-422b-b045-a34bb4ba6761 --- # Compiler Error C3360 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3363.md b/docs/error-messages/compiler-errors-2/compiler-error-c3363.md index 1ad704c43f7..11a8d33c1f1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3363.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3363.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3363" title: "Compiler Error C3363" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3363" +ms.date: 11/04/2016 f1_keywords: ["C3363"] helpviewer_keywords: ["C3363"] -ms.assetid: 41aa922f-608e-4f7a-ba66-451fc1161935 --- # Compiler Error C3363 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3364.md b/docs/error-messages/compiler-errors-2/compiler-error-c3364.md index 214cf427df4..97e7ec74e88 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3364.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3364.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3364" title: "Compiler Error C3364" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3364" +ms.date: 11/04/2016 f1_keywords: ["C3364"] helpviewer_keywords: ["C3364"] -ms.assetid: 98654741-60fe-4472-a6af-e580f8c0a6e1 --- # Compiler Error C3364 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3365.md b/docs/error-messages/compiler-errors-2/compiler-error-c3365.md index 222b51a2cd0..4d6ea4ed4f7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3365.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3365.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3365" title: "Compiler Error C3365" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3365" +ms.date: 11/04/2016 f1_keywords: ["C3365"] helpviewer_keywords: ["C3365"] -ms.assetid: 875ec3a4-522c-4e3d-9b67-48808b857f6d --- # Compiler Error C3365 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3366.md b/docs/error-messages/compiler-errors-2/compiler-error-c3366.md index 3d48bc014b1..084e2ae3240 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3366.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3366.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3366" title: "Compiler Error C3366" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3366" +ms.date: 11/04/2016 f1_keywords: ["C3366"] helpviewer_keywords: ["C3366"] -ms.assetid: efc55bcf-c16d-43c1-a36f-87a6165fa2a8 --- # Compiler Error C3366 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3367.md b/docs/error-messages/compiler-errors-2/compiler-error-c3367.md index 327cd655784..906b2d970b5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3367.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3367.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3367" title: "Compiler Error C3367" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3367" +ms.date: 11/04/2016 f1_keywords: ["C3367"] helpviewer_keywords: ["C3367"] -ms.assetid: e675d42b-f5b0-4d43-aab1-1f5024233102 --- # Compiler Error C3367 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3368.md b/docs/error-messages/compiler-errors-2/compiler-error-c3368.md index 2382f3e91fb..8b719026039 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3368.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3368.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3368" title: "Compiler Error C3368" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3368" +ms.date: 11/04/2016 f1_keywords: ["C3368"] helpviewer_keywords: ["C3368"] -ms.assetid: 5bfd5be4-dfa9-4b33-9612-010561b40955 --- # Compiler Error C3368 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3369.md b/docs/error-messages/compiler-errors-2/compiler-error-c3369.md index 97b352ee4c7..fd633c461d1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3369.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3369.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3369" title: "Compiler Error C3369" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3369" +ms.date: 11/04/2016 f1_keywords: ["C3369"] helpviewer_keywords: ["C3369"] -ms.assetid: c6ceb9cb-3df9-4334-9a5c-d16db351d476 --- # Compiler Error C3369 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3370.md b/docs/error-messages/compiler-errors-2/compiler-error-c3370.md index 56d0852efc7..c6771ad1148 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3370.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3370.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3370" title: "Compiler Error C3370" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3370" +ms.date: 11/04/2016 f1_keywords: ["C3370"] helpviewer_keywords: ["C3370"] -ms.assetid: ee6d4c85-78fc-42b2-836e-5cc491a3b2ba --- # Compiler Error C3370 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3371.md b/docs/error-messages/compiler-errors-2/compiler-error-c3371.md index 1900015fb0e..d6003778a7f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3371.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3371.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3371" title: "Compiler Error C3371" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3371" +ms.date: 11/04/2016 f1_keywords: ["C3371"] helpviewer_keywords: ["C3371"] -ms.assetid: f7ecf1aa-ed0a-4f73-81e5-62cf98f88ea1 --- # Compiler Error C3371 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3372.md b/docs/error-messages/compiler-errors-2/compiler-error-c3372.md index 5073a30a455..91cb56aa842 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3372.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3372.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3372" title: "Compiler Error C3372" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3372" +ms.date: 11/04/2016 f1_keywords: ["C3372"] helpviewer_keywords: ["C3372"] -ms.assetid: 38ee39ed-03ff-4e6d-9104-f1977b96645d --- # Compiler Error C3372 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3373.md b/docs/error-messages/compiler-errors-2/compiler-error-c3373.md index d260eead253..5df76fc80d5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3373.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3373.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3373" title: "Compiler Error C3373" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3373" +ms.date: 11/04/2016 f1_keywords: ["C3373"] helpviewer_keywords: ["C3373"] -ms.assetid: 6e7586c3-1a15-4773-ad20-f90090a400dc --- # Compiler Error C3373 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3374.md b/docs/error-messages/compiler-errors-2/compiler-error-c3374.md index f48424178c8..3256f943241 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3374.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3374.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3374" title: "Compiler Error C3374" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3374" +ms.date: 11/04/2016 f1_keywords: ["C3374"] helpviewer_keywords: ["C3374"] -ms.assetid: 41431299-bd20-47d4-a0c8-1334dd79018b --- # Compiler Error C3374 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3375.md b/docs/error-messages/compiler-errors-2/compiler-error-c3375.md index 9965fafd1f0..41c91468995 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3375.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3375.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3375" title: "Compiler Error C3375" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3375" +ms.date: 11/04/2016 f1_keywords: ["C3375"] helpviewer_keywords: ["C3375"] -ms.assetid: f1df78c6-e6ca-48f3-8b29-4e1710002bf3 --- # Compiler Error C3375 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3379.md b/docs/error-messages/compiler-errors-2/compiler-error-c3379.md index 344ccf4dcfb..3d953bb8c7d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3379.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3379.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3379" title: "Compiler Error C3379" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3379" +ms.date: 11/04/2016 f1_keywords: ["C3379"] helpviewer_keywords: ["C3379"] -ms.assetid: a66c2c4e-091c-4426-9cde-7c4cfb2ffce1 --- # Compiler Error C3379 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3380.md b/docs/error-messages/compiler-errors-2/compiler-error-c3380.md index f56a950de90..124b958b0d2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3380.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3380.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3380" title: "Compiler Error C3380" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3380" +ms.date: 11/04/2016 f1_keywords: ["C3380"] helpviewer_keywords: ["C3380"] -ms.assetid: 86f1f4ec-4ad8-4a1a-9b6c-2d9b6129df6b --- # Compiler Error C3380 From 3d64461339e3fd13158e2f519094879b80039223 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 18 Aug 2025 23:57:27 +0800 Subject: [PATCH 1468/2255] Fix some typos in `` functions reference --- docs/standard-library/algorithm-functions.md | 36 ++++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/standard-library/algorithm-functions.md b/docs/standard-library/algorithm-functions.md index b243d2c1ebb..7e55579a809 100644 --- a/docs/standard-library/algorithm-functions.md +++ b/docs/standard-library/algorithm-functions.md @@ -595,7 +595,7 @@ An output iterator addressing the position that is one past the final element in The source range must be valid and there must be sufficient space at the destination to hold all the elements being copied. -The `copy_backward` algorithm imposes more stringent requirements than that the `copy` algorithm. Both its input and output iterators must be bidirectional. +The `copy_backward` algorithm imposes more stringent requirements than the `copy` algorithm. Both its input and output iterators must be bidirectional. The `copy_backward` and [`move_backward`](algorithm-functions.md#move_backward) algorithms are the only C++ Standard Library algorithms designating the output range with an iterator pointing to the end of the destination range. @@ -908,13 +908,13 @@ int main() vector::iterator::difference_type result; result = count(v1.begin(), v1.end(), 10); - cout << "The number of 10s in v2 is: " << result << "." << endl; + cout << "The number of 10s in v1 is: " << result << "." << endl; } ``` ```Output v1 = ( 10 20 10 40 10 ) -The number of 10s in v2 is: 3. +The number of 10s in v1 is: 3. ``` ## `count_if` @@ -2149,7 +2149,7 @@ public: { } - // The function call to process the next elment + // The function call to process the next element void operator( ) ( int elem ) { num++; // Increment the element count @@ -2686,7 +2686,7 @@ int main() cout << *Iter3b << " "; cout << ")." << endl; - // To test for inclusion under an asscending order + // To test for inclusion under an ascending order // with the default binary predicate less( ) bool Result1; Result1 = includes ( v1a.begin( ), v1a.end( ), @@ -5933,7 +5933,7 @@ int main() cout << *Iter1 << " "; cout << ")." << endl; - // Partition the range with predicate greater10 + // Partition the range with predicate greater5 partition ( v1.begin( ), v1.end( ), greater5 ); cout << "The partitioned set of elements in v1 is: ( " ; for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ ) @@ -6694,7 +6694,7 @@ An input iterator addressing the position one past the final element in the rang An output iterator addressing the position of the first element in the destination range to which elements are being removed. *`pred`*\ -The unary predicate that must be satisfied is the value of an element is to be replaced. +The unary predicate that must be satisfied if the value of an element is to be replaced. ### Return value @@ -6751,7 +6751,7 @@ int main() new_end = remove_copy_if ( v1.begin( ), v1.end( ), v2.begin( ), greater6 ); - cout << "After the appliation of remove_copy_if to v1,\n " + cout << "After the application of remove_copy_if to v1,\n " << "vector v1 is left unchanged as ( " ; for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ ) cout << *Iter1 << " "; @@ -6767,7 +6767,7 @@ int main() ```Output The original vector v1 is: ( 4 7 7 7 0 5 7 1 6 9 3 7 8 2 ). -After the appliation of remove_copy_if to v1, +After the application of remove_copy_if to v1, vector v1 is left unchanged as ( 4 7 7 7 0 5 7 1 6 9 3 7 8 2 ). Vector v2 is a copy of v1 with values greater than 6 removed: ( 4 0 5 1 6 3 2 ). @@ -6804,7 +6804,7 @@ A forward iterator pointing to the position of the first element in the range fr A forward iterator pointing to the position one past the final element in the range from which elements are being removed. *`pred`*\ -The unary predicate that must be satisfied is the value of an element is to be replaced. +The unary predicate that must be satisfied if the value of an element is to be replaced. ### Return value @@ -7148,7 +7148,7 @@ An input iterator pointing to the position one past the final element in the ran An output iterator pointing to the position of the first element in the destination range to which elements are being copied. *`pred`*\ -The unary predicate that must be satisfied is the value of an element is to be replaced. +The unary predicate that must be satisfied if the value of an element is to be replaced. *`value`*\ The new value being assigned to the elements whose old value satisfies the predicate. @@ -7277,7 +7277,7 @@ A forward iterator pointing to the position of the first element in the range fr An iterator pointing to the position one past the final element in the range from which elements are being replaced. *`pred`*\ -The unary predicate that must be satisfied is the value of an element is to be replaced. +The unary predicate that must be satisfied if the value of an element is to be replaced. *`value`*\ The new value being assigned to the elements whose old value satisfies the predicate. @@ -8269,7 +8269,7 @@ int main() cout << *Iter3b << " "; cout << ")." << endl; - // To combine into a difference in asscending + // To combine into a difference in ascending // order with the default binary predicate less( ) Result1 = set_difference ( v1a.begin( ), v1a.end( ), v1b.begin( ), v1b.end( ), v1.begin( ) ); @@ -8488,7 +8488,7 @@ int main() cout << *Iter3b << " "; cout << ")." << endl; - // To combine into an intersection in asscending order with the + // To combine into an intersection in ascending order with the // default binary predicate less( ) Result1 = set_intersection ( v1a.begin( ), v1a.end( ), v1b.begin( ), v1b.end( ), v1.begin( ) ); @@ -9170,7 +9170,7 @@ Heaps have two properties: - Elements may be added or removed in logarithmic time. -After the application if this algorithm, the range it was applied to is no longer a heap. +After the application of this algorithm, the range it was applied to is no longer a heap. `sort_heap` isn't a stable sort because the relative order of equivalent elements isn't necessarily preserved. @@ -9585,7 +9585,7 @@ A forward iterator pointing to one past the final position of the second range w The ranges referenced must be valid; all pointers must be dereferenceable and within each sequence the last position is reachable from the first by incrementation. The second range has to be as large as the first range. -The complexity is linear with *last1* - *first1* swaps performed. If elements from containers of the same type are being swapped, them the `swap` member function from that container should be used, because the member function typically has constant complexity. +The complexity is linear with *last1* - *first1* swaps performed. If elements from containers of the same type are being swapped, then the `swap` member function from that container should be used, because the member function typically has constant complexity. ### Example @@ -9922,7 +9922,7 @@ int main() cout << *v1_Iter1 << " "; cout << ")." << endl; - // Remove consecutive duplicates under the binary prediate mod_equals + // Remove consecutive duplicates under the binary predicate mod_equals v1_NewEnd2 = unique ( v1.begin( ), v1_NewEnd1 , mod_equal ); cout << "Removing adjacent duplicates from vector v1 under the\n " @@ -10078,7 +10078,7 @@ int main() { for ( iv = 0 ; iv <= 7 ; iv++ ) v1.push_back( 10 ); - // Remove consecutive duplicates under the binary prediate mod_equals + // Remove consecutive duplicates under the binary predicate mod_equals v1_NewEnd2 = unique_copy ( v1.begin( ), v1.begin( ) + 14, v1.begin( ) + 14 , mod_equal ); From 03ace2f09fd358b6e1f6c42867b7b8b6ee2a3d0a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 19 Aug 2025 00:00:34 +0800 Subject: [PATCH 1469/2255] Clean up duplicate semicolons in `` functions reference --- docs/standard-library/algorithm-functions.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/standard-library/algorithm-functions.md b/docs/standard-library/algorithm-functions.md index 7e55579a809..3865864df02 100644 --- a/docs/standard-library/algorithm-functions.md +++ b/docs/standard-library/algorithm-functions.md @@ -2892,7 +2892,7 @@ int main() // Applying a user defined (UD) binary predicate mod_lesser inplace_merge ( v3.begin( ), break3, v3.end( ), mod_lesser ); cout << "Merged inplace with binary predicate mod_lesser specified,\n " - << "vector v3mod = ( " ; ; + << "vector v3mod = ( " ; for ( Iter3 = v3.begin( ) ; Iter3 != v3.end( ) ; Iter3++ ) cout << *Iter3 << " "; cout << ")" << endl; @@ -4424,7 +4424,7 @@ int main() { merge ( v3a.begin( ), v3a.end( ), v3b.begin( ), v3b.end( ), v3.begin( ), mod_lesser ); cout << "Merged inplace with binary predicate mod_lesser specified,\n " - << "vector v3mod = ( " ; ; + << "vector v3mod = ( " ; for ( Iter3 = v3.begin( ) ; Iter3 != v3.end( ) ; Iter3++ ) cout << *Iter3 << " "; cout << ")." << endl; @@ -8294,7 +8294,7 @@ int main() Result3 = set_difference ( v3a.begin( ), v3a.end( ), v3b.begin( ), v3b.end( ), v3.begin( ), mod_lesser ); cout << "Set_difference of source ranges with binary " - << "predicate mod_lesser specified,\n vector v3mod = ( " ; ; + << "predicate mod_lesser specified,\n vector v3mod = ( " ; for ( Iter3 = v3.begin( ) ; Iter3 != Result3 ; Iter3++ ) cout << *Iter3 << " "; cout << ")." << endl; @@ -8513,7 +8513,7 @@ int main() Result3 = set_intersection ( v3a.begin( ), v3a.end( ), v3b.begin( ), v3b.end( ), v3.begin( ), mod_lesser ); cout << "Intersection of source ranges with binary predicate " - << "mod_lesser specified,\n vector v3mod = ( " ; ; + << "mod_lesser specified,\n vector v3mod = ( " ; for ( Iter3 = v3.begin( ) ; Iter3 != Result3 ; ++Iter3 ) cout << *Iter3 << " "; cout << ")." << endl; @@ -8736,7 +8736,7 @@ int main() Result3 = set_symmetric_difference ( v3a.begin( ), v3a.end( ), v3b.begin( ), v3b.end( ), v3.begin( ), mod_lesser ); cout << "Set_symmetric_difference of source ranges with binary " - << "predicate mod_lesser specified,\n vector v3mod = ( " ; ; + << "predicate mod_lesser specified,\n vector v3mod = ( " ; for ( Iter3 = v3.begin( ) ; Iter3 != Result3 ; Iter3++ ) cout << *Iter3 << " "; cout << ")." << endl; @@ -8959,7 +8959,7 @@ int main() Result3 = set_union ( v3a.begin( ), v3a.end( ), v3b.begin( ), v3b.end( ), v3.begin( ), mod_lesser ); cout << "Union of source ranges with binary predicate " - << "mod_lesser specified,\n vector v3mod = ( " ; ; + << "mod_lesser specified,\n vector v3mod = ( " ; for ( Iter3 = v3.begin( ) ; Iter3 != Result3 ; Iter3++ ) cout << *Iter3 << " "; cout << ")." << endl; From 24da214979feee1f2b850c8d2cea7d661bf61750 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 19 Aug 2025 00:03:56 +0800 Subject: [PATCH 1470/2255] Remove 1 double and trailing space in `` functions reference --- docs/standard-library/algorithm-functions.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/standard-library/algorithm-functions.md b/docs/standard-library/algorithm-functions.md index 3865864df02..976e06b9fac 100644 --- a/docs/standard-library/algorithm-functions.md +++ b/docs/standard-library/algorithm-functions.md @@ -2292,7 +2292,7 @@ public: } }; -// Utility to display the contents of a vector +// Utility to display the contents of a vector template void print_vector(const std::vector &vec) { std::cout << "( "; @@ -6660,7 +6660,7 @@ Vector v2 is a copy of v1 with the value 7 removed: ## `remove_copy_if` -Copies elements from a source range to a destination range, except for elements that satisfy a predicate. Elements are copied without disturbing the order of the remaining elements. Returns the end of a new destination range. +Copies elements from a source range to a destination range, except for elements that satisfy a predicate. Elements are copied without disturbing the order of the remaining elements. Returns the end of a new destination range. ```cpp template From 613193555701587060c76b4585aa69b44c166f55 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 19 Aug 2025 00:06:27 +0800 Subject: [PATCH 1471/2255] Fix extraneous `>` in `mismatch` syntax in `` functions reference --- docs/standard-library/algorithm-functions.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/standard-library/algorithm-functions.md b/docs/standard-library/algorithm-functions.md index 976e06b9fac..65b150d64e8 100644 --- a/docs/standard-library/algorithm-functions.md +++ b/docs/standard-library/algorithm-functions.md @@ -4949,13 +4949,14 @@ Use the dual-range overloads in C++14 code because the overloads that only take ```cpp template -pair> +pair mismatch( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2 ); -template pair> +template +pair mismatch( InputIterator1 first1, InputIterator1 last1, @@ -4964,14 +4965,15 @@ mismatch( //C++14 template -pair> +pair mismatch( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2 ); -template pair> +template +pair mismatch( InputIterator1 first1, InputIterator1 last1, From 5ad0e1443b6c5878198e9294ba159d90cec8940a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 19 Aug 2025 21:27:47 +0800 Subject: [PATCH 1472/2255] Add blockquotes for error messages in range [C3381, C3420] --- docs/error-messages/compiler-errors-2/compiler-error-c3382.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3383.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3384.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3385.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3387.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3388.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3391.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3392.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3393.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3394.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3395.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3396.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3397.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3398.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3399.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3400.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3408.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3412.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3413.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3414.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3415.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3417.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3418.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3420.md | 2 +- 24 files changed, 24 insertions(+), 24 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3382.md b/docs/error-messages/compiler-errors-2/compiler-error-c3382.md index e66b793fc50..77340032716 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3382.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3382.md @@ -8,7 +8,7 @@ ms.assetid: a7603abd-ac4e-4ae6-a02b-3bdc6d1908a6 --- # Compiler Error C3382 -'sizeof' is not supported with /clr:safe +> 'sizeof' is not supported with /clr:safe The output file of a **/clr:safe** compilation is a file that is verifiably type safe, and sizeof is not supported because the return value of the sizeof operator is size_t, whose size varies depending on the operating system. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3383.md b/docs/error-messages/compiler-errors-2/compiler-error-c3383.md index 2c45ba4d14d..5d9e6c20f42 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3383.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3383.md @@ -8,7 +8,7 @@ ms.assetid: ceb7f725-f417-4dc3-8496-0f413bb76687 --- # Compiler Error C3383 -'operator new' is not supported with /clr:safe +> 'operator new' is not supported with /clr:safe The output file of a **/clr:safe** compilation is a file that is verifiably type safe, and pointers are not supported. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3384.md b/docs/error-messages/compiler-errors-2/compiler-error-c3384.md index 29c4ae7a09f..f238ba68f8b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3384.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3384.md @@ -8,7 +8,7 @@ ms.assetid: c9f92c6a-62a9-4333-b2b1-bc55c7f288b6 --- # Compiler Error C3384 -'type_parameter' : the value constraint and the ref constraint are mutually exclusive +> 'type_parameter' : the value constraint and the ref constraint are mutually exclusive You cannot constrain a generic type to both **`value class`** and **`ref class`**. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3385.md b/docs/error-messages/compiler-errors-2/compiler-error-c3385.md index 84eb77cee46..a1c23f46074 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3385.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3385.md @@ -8,7 +8,7 @@ ms.assetid: 5f1838c1-986e-47db-8dbc-e06976b83cf3 --- # Compiler Error C3385 -'class::function' : a function that has a DllImport Custom attribute cannot return an instance of a class +> 'class::function' : a function that has a DllImport Custom attribute cannot return an instance of a class A function defined as being in a .dll file specified with the `DllImport` attribute cannot return an instance of a class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3387.md b/docs/error-messages/compiler-errors-2/compiler-error-c3387.md index e4ebc2bbf6b..999506120a7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3387.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3387.md @@ -8,7 +8,7 @@ ms.assetid: c54d9925-ed14-4976-b8db-e8d4dc84e536 --- # Compiler Error C3387 -'member' : __declspec(dllexport)/\__declspec(dllimport) cannot be applied to a member of a managed or WinRT type +> 'member' : __declspec(dllexport)/\__declspec(dllimport) cannot be applied to a member of a managed or WinRT type The `dllimport` and [dllexport](../../cpp/dllexport-dllimport.md) **`__declspec`** modifiers are not valid on members of a managed or Windows Runtime type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3388.md b/docs/error-messages/compiler-errors-2/compiler-error-c3388.md index 570db2843a3..d89ffdec8ad 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3388.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3388.md @@ -8,7 +8,7 @@ ms.assetid: 34336545-ed13-4d81-ab5f-f869799fe4c2 --- # Compiler Error C3388 -'type' : not allowed as a constraint, assuming 'ref class' to continue parsing +> 'type' : not allowed as a constraint, assuming 'ref class' to continue parsing A constraint was specified on a generic type, but the constraint was not specified correctly. See [Constraints on Generic Type Parameters (C++/CLI)](../../extensions/constraints-on-generic-type-parameters-cpp-cli.md) for more information. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3391.md b/docs/error-messages/compiler-errors-2/compiler-error-c3391.md index 6960f3ffb04..fd5e5bd1d01 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3391.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3391.md @@ -8,7 +8,7 @@ ms.assetid: c32532b9-7db4-4ccd-84b9-479e5a1a19d1 --- # Compiler Error C3391 -'type_arg' : invalid type argument for generic parameter 'param' of generic 'generic_type', must be a non-nullable value type +> 'type_arg' : invalid type argument for generic parameter 'param' of generic 'generic_type', must be a non-nullable value type A generic type was instantiated incorrectly. Check the type definition. For more information, see and [Generics](../../extensions/generics-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3392.md b/docs/error-messages/compiler-errors-2/compiler-error-c3392.md index 79b2f3c2bb8..05f14ea67bd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3392.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3392.md @@ -8,7 +8,7 @@ ms.assetid: e4757596-e2aa-4314-b01e-5c4bfd2110e9 --- # Compiler Error C3392 -'type_arg' : invalid type argument for generic parameter 'param' of generic 'generic_type', must have a public parameterless constructor +> 'type_arg' : invalid type argument for generic parameter 'param' of generic 'generic_type', must have a public parameterless constructor A generic type was instantiated incorrectly. Check the type definition. For more information, see [Generics](../../extensions/generics-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3393.md b/docs/error-messages/compiler-errors-2/compiler-error-c3393.md index f302d672a06..d8e7782d2af 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3393.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3393.md @@ -8,7 +8,7 @@ ms.assetid: d57f7c69-0a02-4fe3-9e45-bc62644fd77c --- # Compiler Error C3393 -syntax error in constraint clause: 'identifier' is not a type +> syntax error in constraint clause: 'identifier' is not a type The identifier passed to a constraint, which must be a type, was not a type. For more information, see [Constraints on Generic Type Parameters (C++/CLI)](../../extensions/constraints-on-generic-type-parameters-cpp-cli.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3394.md b/docs/error-messages/compiler-errors-2/compiler-error-c3394.md index 8586236b83c..61b7eac8d1a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3394.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3394.md @@ -8,7 +8,7 @@ ms.assetid: 4e025d79-27ba-43c8-b0d9-839ecef98126 --- # Compiler Error C3394 -syntax error in constraint clause: found 'identifier' expected a type +> syntax error in constraint clause: found 'identifier' expected a type A constraint was ill formed. For more information, see [Constraints on Generic Type Parameters (C++/CLI)](../../extensions/constraints-on-generic-type-parameters-cpp-cli.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3395.md b/docs/error-messages/compiler-errors-2/compiler-error-c3395.md index 932858dc94a..b89c15d59b4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3395.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3395.md @@ -8,7 +8,7 @@ ms.assetid: 26a9ebc9-ed97-47ce-b436-19aa2bcf6e50 --- # Compiler Error C3395 -'function' : __declspec(dllexport) cannot be applied to a function with the \__clrcall calling convention +> 'function' : __declspec(dllexport) cannot be applied to a function with the \__clrcall calling convention `__declspec(dllexport)` and [__clrcall](../../cpp/clrcall.md) are not compatible. For more information, see [dllexport, dllimport](../../cpp/dllexport-dllimport.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3396.md b/docs/error-messages/compiler-errors-2/compiler-error-c3396.md index 3d79f79eec6..33e7f9be5ce 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3396.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3396.md @@ -8,6 +8,6 @@ ms.assetid: e3580e32-72ec-4c3e-8afa-755603ffd25c --- # Compiler Error C3396 -'attribute' : custom attribute not found in 'namespace' +> 'attribute' : custom attribute not found in 'namespace' C3396 indicates that you are not using an up-to-date common language runtime. Reinstall your CLR to resolve. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3397.md b/docs/error-messages/compiler-errors-2/compiler-error-c3397.md index 92b7b3b5ae7..92c44cc0626 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3397.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3397.md @@ -8,7 +8,7 @@ ms.assetid: a8536e87-79c4-4ed7-bd96-42704d06391f --- # Compiler Error C3397 -Aggregate initialization is not allowed in default arguments +> Aggregate initialization is not allowed in default arguments An array was declared incorrectly. See [Arrays](../../extensions/arrays-cpp-component-extensions.md) for more information. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3398.md b/docs/error-messages/compiler-errors-2/compiler-error-c3398.md index 27441e24516..d4b864746a0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3398.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3398.md @@ -8,7 +8,7 @@ ms.assetid: 26f8c8a4-526f-415b-8047-155c5cd4f180 --- # Compiler Error C3398 -'operator' : cannot convert from 'function_signature' to 'function_pointer'. Source expression must be a function symbol +> 'operator' : cannot convert from 'function_signature' to 'function_pointer'. Source expression must be a function symbol When the [__clrcall](../../cpp/clrcall.md) calling convention is not specified when compiling with **/clr**, the compiler generates two entry points (addresses) for each function, a native entry point and a managed entry point. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3399.md b/docs/error-messages/compiler-errors-2/compiler-error-c3399.md index 55794507286..f530c7bb534 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3399.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3399.md @@ -8,7 +8,7 @@ ms.assetid: 306ad199-d150-4f6c-bcf1-24a7948b93be --- # Compiler Error C3399 -'type' : cannot provide arguments when creating an instance of a generic parameter +> 'type' : cannot provide arguments when creating an instance of a generic parameter When you specify the `gcnew()` constraint, you specify that the constraint type will have a parameterless constructor. Therefore, it is an error to attempt to instantiate that type and pass a parameter. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3400.md b/docs/error-messages/compiler-errors-2/compiler-error-c3400.md index df57d95cb79..1d879b477d2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3400.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3400.md @@ -8,7 +8,7 @@ ms.assetid: d44169a8-73b6-4766-b406-b3a6c93f2a4d --- # Compiler Error C3400 -circular constraint dependency involving 'constraint_1' and 'constraint_2' +> circular constraint dependency involving 'constraint_1' and 'constraint_2' The compiler detected circular constraints. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3408.md b/docs/error-messages/compiler-errors-2/compiler-error-c3408.md index 9774072606f..ba913331ff7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3408.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3408.md @@ -8,7 +8,7 @@ ms.assetid: 1f5ea979-fb1e-4214-b310-6fd6ca8249b1 --- # Compiler Error C3408 -'attribute': attribute is not allowed on template definitions +> 'attribute': attribute is not allowed on template definitions Attributes cannot be applied to template definitions. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3412.md b/docs/error-messages/compiler-errors-2/compiler-error-c3412.md index f9aab8f46cd..a6b4decc28f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3412.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3412.md @@ -8,7 +8,7 @@ ms.assetid: aa4dd43b-54ce-4cda-85c1-1a77dd6e34fa --- # Compiler Error C3412 -'template' : cannot specialize template in current scope +> 'template' : cannot specialize template in current scope A template cannot be specialized at class scope, only in global or namespace scope. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3413.md b/docs/error-messages/compiler-errors-2/compiler-error-c3413.md index 6e569181037..b3c03f35591 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3413.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3413.md @@ -8,7 +8,7 @@ ms.assetid: de6c9b05-c373-4bd8-8cb0-12c2cd2e5674 --- # Compiler Error C3413 -'name' : invalid explicit instantiation +> 'name' : invalid explicit instantiation The compiler detected an ill-formed explicit instantiation. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3414.md b/docs/error-messages/compiler-errors-2/compiler-error-c3414.md index 44d295535b0..8f870b8d2cd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3414.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3414.md @@ -8,7 +8,7 @@ ms.assetid: 715f5432-b509-4f8f-84f5-e1463bac490f --- # Compiler Error C3414 -'member' : imported member function can't be defined +> 'member' : imported member function can't be defined A member was defined in code that is also defined in a referenced assembly. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3415.md b/docs/error-messages/compiler-errors-2/compiler-error-c3415.md index afda211990f..8d19338043f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3415.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3415.md @@ -8,7 +8,7 @@ ms.assetid: fa2db8ab-2820-4ec3-a740-fb5e2adcfb29 --- # Compiler Error C3415 -multiple 'section_name' sections found with different attributes ('value') +> multiple 'section_name' sections found with different attributes ('value') Conflicting values were specified in [section](../../preprocessor/section.md) pragmas. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3417.md b/docs/error-messages/compiler-errors-2/compiler-error-c3417.md index debcd0ffbc3..16b22f1419b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3417.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3417.md @@ -8,7 +8,7 @@ ms.assetid: 3e7869ea-8948-42fb-ba30-6ccafe499c35 --- # Compiler Error C3417 -'member' : value types cannot contain user-defined special member functions +> 'member' : value types cannot contain user-defined special member functions Value types cannot contain functions such as a default instance constructor, destructor, or copy constructor. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3418.md b/docs/error-messages/compiler-errors-2/compiler-error-c3418.md index e49e934d0bd..de25e7f0fd3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3418.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3418.md @@ -8,7 +8,7 @@ ms.assetid: 54042c04-3c45-41c1-bad7-90f9ee05a21b --- # Compiler Error C3418 -access specifier 'specifier' is not supported +> access specifier 'specifier' is not supported A CLR access specifier was specified incorrectly. For more information, see Type visibility and Member visibility in [How to: Define and Consume Classes and Structs (C++/CLI)](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3420.md b/docs/error-messages/compiler-errors-2/compiler-error-c3420.md index da90a0cbaa3..a97422f5d51 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3420.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3420.md @@ -8,7 +8,7 @@ ms.assetid: 99b53c77-f36b-4574-9199-b53111becccb --- # Compiler Error C3420 -'finalizer' : a finalizer cannot be virtual +> 'finalizer' : a finalizer cannot be virtual A finalizer can only be called non-virtually from its enclosing type. Therefore, it is an error to declare a virtual finalizer. From f828f78f33d7d3da18bf3cc0cbb737206ce0eae6 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 19 Aug 2025 21:35:11 +0800 Subject: [PATCH 1473/2255] Add "Remarks" and "Example" headings for error references in range [C3381, C3420] --- docs/error-messages/compiler-errors-2/compiler-error-c3381.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c3382.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3383.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3384.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3385.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3386.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3387.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3388.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3390.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c3391.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3392.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3393.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3394.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3395.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3396.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3397.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3398.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3399.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3400.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3408.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3412.md | 4 +++- docs/error-messages/compiler-errors-2/compiler-error-c3413.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3414.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3415.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3417.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3418.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3420.md | 2 ++ 27 files changed, 71 insertions(+), 5 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3381.md b/docs/error-messages/compiler-errors-2/compiler-error-c3381.md index 36a5ded5ce2..3aabeabd31c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3381.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3381.md @@ -10,10 +10,10 @@ ms.assetid: d276c89f-8377-4cb6-a8d4-7770885f06c4 > '*identifier*' : assembly access specifiers are only available in code compiled with a /clr option -A type was declared or defined by using an access specifier, which is only permitted in code compiled by using **`/clr`**. - ## Remarks +A type was declared or defined by using an access specifier, which is only permitted in code compiled by using **`/clr`**. + This error may result from a misplaced **`public`**, **`protected`**, or **`private`** keyword, or a missing colon (**`:`**) after an access specifier within a **`class`** or **`struct`**. In C++/CLI, native types can be visible outside an assembly, but you can only specify assembly access for native types in a **`/clr`** compilation. For more information, see [Type visibility](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Type_visibility) and [`/clr` (Common Language Runtime Compilation)](../../build/reference/clr-common-language-runtime-compilation.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3382.md b/docs/error-messages/compiler-errors-2/compiler-error-c3382.md index 77340032716..fd12e1a459e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3382.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3382.md @@ -10,6 +10,8 @@ ms.assetid: a7603abd-ac4e-4ae6-a02b-3bdc6d1908a6 > 'sizeof' is not supported with /clr:safe +## Remarks + The output file of a **/clr:safe** compilation is a file that is verifiably type safe, and sizeof is not supported because the return value of the sizeof operator is size_t, whose size varies depending on the operating system. For more information, see, diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3383.md b/docs/error-messages/compiler-errors-2/compiler-error-c3383.md index 5d9e6c20f42..0559212a52d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3383.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3383.md @@ -10,6 +10,8 @@ ms.assetid: ceb7f725-f417-4dc3-8496-0f413bb76687 > 'operator new' is not supported with /clr:safe +## Remarks + The output file of a **/clr:safe** compilation is a file that is verifiably type safe, and pointers are not supported. For more information, see, diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3384.md b/docs/error-messages/compiler-errors-2/compiler-error-c3384.md index f238ba68f8b..10dae7bfb4c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3384.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3384.md @@ -10,6 +10,8 @@ ms.assetid: c9f92c6a-62a9-4333-b2b1-bc55c7f288b6 > 'type_parameter' : the value constraint and the ref constraint are mutually exclusive +## Remarks + You cannot constrain a generic type to both **`value class`** and **`ref class`**. See [Constraints on Generic Type Parameters (C++/CLI)](../../extensions/constraints-on-generic-type-parameters-cpp-cli.md) for more information. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3385.md b/docs/error-messages/compiler-errors-2/compiler-error-c3385.md index a1c23f46074..59ee623bcd0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3385.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3385.md @@ -10,8 +10,12 @@ ms.assetid: 5f1838c1-986e-47db-8dbc-e06976b83cf3 > 'class::function' : a function that has a DllImport Custom attribute cannot return an instance of a class +## Remarks + A function defined as being in a .dll file specified with the `DllImport` attribute cannot return an instance of a class. +## Example + The following sample generates C3385: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3386.md b/docs/error-messages/compiler-errors-2/compiler-error-c3386.md index 0c91775a21d..925064727be 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3386.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3386.md @@ -10,8 +10,12 @@ ms.assetid: 93fa8c33-0f10-402b-8eec-b0a217a1f8dc > '*type-name*' : `__declspec(dllexport)`/`__declspec(dllimport)` cannot be applied to a managed or WinRT type +## Remarks + The [`dllimport`](../../cpp/dllexport-dllimport.md) and [`dllexport`](../../cpp/dllexport-dllimport.md) **`__declspec`** modifiers aren't valid on a managed or Windows Runtime type. +## Example + The following sample generates C3386 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3387.md b/docs/error-messages/compiler-errors-2/compiler-error-c3387.md index 999506120a7..b4c910db1a4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3387.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3387.md @@ -10,8 +10,12 @@ ms.assetid: c54d9925-ed14-4976-b8db-e8d4dc84e536 > 'member' : __declspec(dllexport)/\__declspec(dllimport) cannot be applied to a member of a managed or WinRT type +## Remarks + The `dllimport` and [dllexport](../../cpp/dllexport-dllimport.md) **`__declspec`** modifiers are not valid on members of a managed or Windows Runtime type. +## Example + The following sample generates C3387 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3388.md b/docs/error-messages/compiler-errors-2/compiler-error-c3388.md index d89ffdec8ad..cc986a43c7e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3388.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3388.md @@ -10,6 +10,8 @@ ms.assetid: 34336545-ed13-4d81-ab5f-f869799fe4c2 > 'type' : not allowed as a constraint, assuming 'ref class' to continue parsing +## Remarks + A constraint was specified on a generic type, but the constraint was not specified correctly. See [Constraints on Generic Type Parameters (C++/CLI)](../../extensions/constraints-on-generic-type-parameters-cpp-cli.md) for more information. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3390.md b/docs/error-messages/compiler-errors-2/compiler-error-c3390.md index ecd8d608dd0..2190730d109 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3390.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3390.md @@ -10,10 +10,10 @@ ms.assetid: 84800a87-c8e6-45aa-82ae-02f816dc8d97 > '*type_arg*' : invalid type argument for generic parameter '*param*' of generic '*generic_type*', must be a reference type -A generic type was instantiated incorrectly. Check the type definition. - ## Remarks +A generic type was instantiated incorrectly. Check the type definition. + For more information, see [Generics](../../extensions/generics-cpp-component-extensions.md). ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3391.md b/docs/error-messages/compiler-errors-2/compiler-error-c3391.md index fd5e5bd1d01..995a5b7aed1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3391.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3391.md @@ -10,6 +10,8 @@ ms.assetid: c32532b9-7db4-4ccd-84b9-479e5a1a19d1 > 'type_arg' : invalid type argument for generic parameter 'param' of generic 'generic_type', must be a non-nullable value type +## Remarks + A generic type was instantiated incorrectly. Check the type definition. For more information, see and [Generics](../../extensions/generics-cpp-component-extensions.md). ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3392.md b/docs/error-messages/compiler-errors-2/compiler-error-c3392.md index 05f14ea67bd..1dccca4f5b6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3392.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3392.md @@ -10,6 +10,8 @@ ms.assetid: e4757596-e2aa-4314-b01e-5c4bfd2110e9 > 'type_arg' : invalid type argument for generic parameter 'param' of generic 'generic_type', must have a public parameterless constructor +## Remarks + A generic type was instantiated incorrectly. Check the type definition. For more information, see [Generics](../../extensions/generics-cpp-component-extensions.md). ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3393.md b/docs/error-messages/compiler-errors-2/compiler-error-c3393.md index d8e7782d2af..2243f8d790f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3393.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3393.md @@ -10,6 +10,8 @@ ms.assetid: d57f7c69-0a02-4fe3-9e45-bc62644fd77c > syntax error in constraint clause: 'identifier' is not a type +## Remarks + The identifier passed to a constraint, which must be a type, was not a type. For more information, see [Constraints on Generic Type Parameters (C++/CLI)](../../extensions/constraints-on-generic-type-parameters-cpp-cli.md). ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3394.md b/docs/error-messages/compiler-errors-2/compiler-error-c3394.md index 61b7eac8d1a..90ffd5989fc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3394.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3394.md @@ -10,6 +10,8 @@ ms.assetid: 4e025d79-27ba-43c8-b0d9-839ecef98126 > syntax error in constraint clause: found 'identifier' expected a type +## Remarks + A constraint was ill formed. For more information, see [Constraints on Generic Type Parameters (C++/CLI)](../../extensions/constraints-on-generic-type-parameters-cpp-cli.md). ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3395.md b/docs/error-messages/compiler-errors-2/compiler-error-c3395.md index b89c15d59b4..514d3795f69 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3395.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3395.md @@ -10,8 +10,12 @@ ms.assetid: 26a9ebc9-ed97-47ce-b436-19aa2bcf6e50 > 'function' : __declspec(dllexport) cannot be applied to a function with the \__clrcall calling convention +## Remarks + `__declspec(dllexport)` and [__clrcall](../../cpp/clrcall.md) are not compatible. For more information, see [dllexport, dllimport](../../cpp/dllexport-dllimport.md). +## Example + The following sample generates C3395: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3396.md b/docs/error-messages/compiler-errors-2/compiler-error-c3396.md index 33e7f9be5ce..f248a3b7854 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3396.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3396.md @@ -10,4 +10,6 @@ ms.assetid: e3580e32-72ec-4c3e-8afa-755603ffd25c > 'attribute' : custom attribute not found in 'namespace' +## Remarks + C3396 indicates that you are not using an up-to-date common language runtime. Reinstall your CLR to resolve. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3397.md b/docs/error-messages/compiler-errors-2/compiler-error-c3397.md index 92c44cc0626..18796c7621d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3397.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3397.md @@ -10,6 +10,8 @@ ms.assetid: a8536e87-79c4-4ed7-bd96-42704d06391f > Aggregate initialization is not allowed in default arguments +## Remarks + An array was declared incorrectly. See [Arrays](../../extensions/arrays-cpp-component-extensions.md) for more information. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3398.md b/docs/error-messages/compiler-errors-2/compiler-error-c3398.md index d4b864746a0..86dc04476c4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3398.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3398.md @@ -10,6 +10,8 @@ ms.assetid: 26f8c8a4-526f-415b-8047-155c5cd4f180 > 'operator' : cannot convert from 'function_signature' to 'function_pointer'. Source expression must be a function symbol +## Remarks + When the [__clrcall](../../cpp/clrcall.md) calling convention is not specified when compiling with **/clr**, the compiler generates two entry points (addresses) for each function, a native entry point and a managed entry point. By default the compiler returns the native entry point, but there are some cases where the managed entry point is desired (for instance when assigning the address to a `__clrcall` function pointer). In order for the compiler to reliably choose the managed entry point in an assignment, the right hand side must be a function symbol. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3399.md b/docs/error-messages/compiler-errors-2/compiler-error-c3399.md index f530c7bb534..78ff65b7a53 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3399.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3399.md @@ -10,6 +10,8 @@ ms.assetid: 306ad199-d150-4f6c-bcf1-24a7948b93be > 'type' : cannot provide arguments when creating an instance of a generic parameter +## Remarks + When you specify the `gcnew()` constraint, you specify that the constraint type will have a parameterless constructor. Therefore, it is an error to attempt to instantiate that type and pass a parameter. See [Constraints on Generic Type Parameters (C++/CLI)](../../extensions/constraints-on-generic-type-parameters-cpp-cli.md) for more information. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3400.md b/docs/error-messages/compiler-errors-2/compiler-error-c3400.md index 1d879b477d2..7aad309d34e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3400.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3400.md @@ -10,6 +10,8 @@ ms.assetid: d44169a8-73b6-4766-b406-b3a6c93f2a4d > circular constraint dependency involving 'constraint_1' and 'constraint_2' +## Remarks + The compiler detected circular constraints. For more information, see [Constraints on Generic Type Parameters (C++/CLI)](../../extensions/constraints-on-generic-type-parameters-cpp-cli.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3408.md b/docs/error-messages/compiler-errors-2/compiler-error-c3408.md index ba913331ff7..cb0da0efa57 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3408.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3408.md @@ -10,6 +10,8 @@ ms.assetid: 1f5ea979-fb1e-4214-b310-6fd6ca8249b1 > 'attribute': attribute is not allowed on template definitions +## Remarks + Attributes cannot be applied to template definitions. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3412.md b/docs/error-messages/compiler-errors-2/compiler-error-c3412.md index a6b4decc28f..83df2e75689 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3412.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3412.md @@ -10,9 +10,11 @@ ms.assetid: aa4dd43b-54ce-4cda-85c1-1a77dd6e34fa > 'template' : cannot specialize template in current scope +## Remarks + A template cannot be specialized at class scope, only in global or namespace scope. -## Examples +## Example The following sample generates C3412. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3413.md b/docs/error-messages/compiler-errors-2/compiler-error-c3413.md index b3c03f35591..69f0965d252 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3413.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3413.md @@ -10,8 +10,12 @@ ms.assetid: de6c9b05-c373-4bd8-8cb0-12c2cd2e5674 > 'name' : invalid explicit instantiation +## Remarks + The compiler detected an ill-formed explicit instantiation. +## Example + The following sample generates C3413: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3414.md b/docs/error-messages/compiler-errors-2/compiler-error-c3414.md index 8f870b8d2cd..a2624afaf3c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3414.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3414.md @@ -10,8 +10,12 @@ ms.assetid: 715f5432-b509-4f8f-84f5-e1463bac490f > 'member' : imported member function can't be defined +## Remarks + A member was defined in code that is also defined in a referenced assembly. +## Example + The following sample generates C3414: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3415.md b/docs/error-messages/compiler-errors-2/compiler-error-c3415.md index 8d19338043f..f7cd1bd8638 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3415.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3415.md @@ -10,6 +10,8 @@ ms.assetid: fa2db8ab-2820-4ec3-a740-fb5e2adcfb29 > multiple 'section_name' sections found with different attributes ('value') +## Remarks + Conflicting values were specified in [section](../../preprocessor/section.md) pragmas. `value` is the current setting for the section, as specified in ntimage.h. For example: @@ -33,6 +35,8 @@ Conflicting values were specified in [section](../../preprocessor/section.md) pr #define IMAGE_SCN_MEM_WRITE 0x80000000 ``` +## Example + The following sample generates C3415: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3417.md b/docs/error-messages/compiler-errors-2/compiler-error-c3417.md index 16b22f1419b..42d6417a654 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3417.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3417.md @@ -10,8 +10,12 @@ ms.assetid: 3e7869ea-8948-42fb-ba30-6ccafe499c35 > 'member' : value types cannot contain user-defined special member functions +## Remarks + Value types cannot contain functions such as a default instance constructor, destructor, or copy constructor. +## Example + The following sample generates C3517: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3418.md b/docs/error-messages/compiler-errors-2/compiler-error-c3418.md index de25e7f0fd3..1faf84dd45f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3418.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3418.md @@ -10,6 +10,8 @@ ms.assetid: 54042c04-3c45-41c1-bad7-90f9ee05a21b > access specifier 'specifier' is not supported +## Remarks + A CLR access specifier was specified incorrectly. For more information, see Type visibility and Member visibility in [How to: Define and Consume Classes and Structs (C++/CLI)](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md). ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3420.md b/docs/error-messages/compiler-errors-2/compiler-error-c3420.md index a97422f5d51..439e38bd34c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3420.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3420.md @@ -10,6 +10,8 @@ ms.assetid: 99b53c77-f36b-4574-9199-b53111becccb > 'finalizer' : a finalizer cannot be virtual +## Remarks + A finalizer can only be called non-virtually from its enclosing type. Therefore, it is an error to declare a virtual finalizer. For more information, see [Destructors and finalizers in How to: Define and consume classes and structs (C++/CLI)](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Destructors_and_finalizers). From a79f52212727faddf87462dcbf2d6f63ae8c319c Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 19 Aug 2025 21:43:29 +0800 Subject: [PATCH 1474/2255] Replace term "sample" with "example" for error references in range [C3381, C3420] --- docs/error-messages/compiler-errors-2/compiler-error-c3381.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3382.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3383.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3384.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3385.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3386.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3387.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3388.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3389.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3390.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c3391.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c3392.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c3393.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3394.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3395.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3397.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3399.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3400.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3408.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3412.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c3413.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3414.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3415.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3417.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3418.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3420.md | 2 +- 26 files changed, 30 insertions(+), 30 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3381.md b/docs/error-messages/compiler-errors-2/compiler-error-c3381.md index 3aabeabd31c..b21357ca9b9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3381.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3381.md @@ -20,7 +20,7 @@ In C++/CLI, native types can be visible outside an assembly, but you can only sp ## Example -The following sample generates C3381. To fix it, first either remove the **`public`** specifier from the `class A` definition, or compile by using the **`/clr`** option. Next, add a colon after **`private`** to specify access for `class B {} b;`. That's because a nested class can't have an assembly access specifier as part of its declaration. +The following example generates C3381. To fix it, first either remove the **`public`** specifier from the `class A` definition, or compile by using the **`/clr`** option. Next, add a colon after **`private`** to specify access for `class B {} b;`. That's because a nested class can't have an assembly access specifier as part of its declaration. ```cpp // C3381.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3382.md b/docs/error-messages/compiler-errors-2/compiler-error-c3382.md index fd12e1a459e..667a0dc6a04 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3382.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3382.md @@ -24,7 +24,7 @@ For more information, see, ## Example -The following sample generates C3382. +The following example generates C3382. ```cpp // C3382.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3383.md b/docs/error-messages/compiler-errors-2/compiler-error-c3383.md index 0559212a52d..1cfde5a9bfe 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3383.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3383.md @@ -22,7 +22,7 @@ For more information, see, ## Example -The following sample generates C3383. +The following example generates C3383. ```cpp // C3383.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3384.md b/docs/error-messages/compiler-errors-2/compiler-error-c3384.md index 10dae7bfb4c..71f60da426c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3384.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3384.md @@ -18,7 +18,7 @@ See [Constraints on Generic Type Parameters (C++/CLI)](../../extensions/constrai ## Example -The following sample generates C3384. +The following example generates C3384. ```cpp // C3384.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3385.md b/docs/error-messages/compiler-errors-2/compiler-error-c3385.md index 59ee623bcd0..9ba07241af3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3385.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3385.md @@ -16,7 +16,7 @@ A function defined as being in a .dll file specified with the `DllImport` attrib ## Example -The following sample generates C3385: +The following example generates C3385: ```cpp // C3385.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3386.md b/docs/error-messages/compiler-errors-2/compiler-error-c3386.md index 925064727be..9dd83b1cca5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3386.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3386.md @@ -16,7 +16,7 @@ The [`dllimport`](../../cpp/dllexport-dllimport.md) and [`dllexport`](../../cpp/ ## Example -The following sample generates C3386 and shows how to fix it: +The following example generates C3386 and shows how to fix it: ```cpp // C3386.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3387.md b/docs/error-messages/compiler-errors-2/compiler-error-c3387.md index b4c910db1a4..3cdd54bb955 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3387.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3387.md @@ -16,7 +16,7 @@ The `dllimport` and [dllexport](../../cpp/dllexport-dllimport.md) **`__declspec` ## Example -The following sample generates C3387 and shows how to fix it: +The following example generates C3387 and shows how to fix it: ```cpp // C3387a.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3388.md b/docs/error-messages/compiler-errors-2/compiler-error-c3388.md index cc986a43c7e..b4583819443 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3388.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3388.md @@ -16,7 +16,7 @@ A constraint was specified on a generic type, but the constraint was not specifi ## Example -The following sample generates C3388. +The following example generates C3388. ```cpp // C3388.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3389.md b/docs/error-messages/compiler-errors-2/compiler-error-c3389.md index 01353be5e88..2f64dbb570c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3389.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3389.md @@ -18,7 +18,7 @@ A [`__declspec`](../../cpp/declspec.md) modifier used implies a per-process stat ## Example -The following sample generates C3389: +The following example generates C3389: ```cpp // C3389.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3390.md b/docs/error-messages/compiler-errors-2/compiler-error-c3390.md index 2190730d109..b861798d3ce 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3390.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3390.md @@ -18,7 +18,7 @@ For more information, see [Generics](../../extensions/generics-cpp-component-ext ## Example -The first sample uses C# to create a component that contains a generic type. This type has certain constraints that aren't supported when authoring generic types in C++/CLI. For more information, see [Constraints on Type Parameters](/dotnet/csharp/programming-guide/generics/constraints-on-type-parameters). +The first example uses C# to create a component that contains a generic type. This type has certain constraints that aren't supported when authoring generic types in C++/CLI. For more information, see [Constraints on Type Parameters](/dotnet/csharp/programming-guide/generics/constraints-on-type-parameters). ```csharp // C3390.cs @@ -30,7 +30,7 @@ where V : struct where N : new() {} ``` -When the C3390.dll component is available, the following sample generates C3390. +When the C3390.dll component is available, the following example generates C3390. ```cpp // C3390_b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3391.md b/docs/error-messages/compiler-errors-2/compiler-error-c3391.md index 995a5b7aed1..53de5acbc98 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3391.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3391.md @@ -16,7 +16,7 @@ A generic type was instantiated incorrectly. Check the type definition. For more ## Example -The following sample uses C# to create a component that contains a generic type that has certain constraints that are not supported when authoring generic types in C++/CLI. For more information, see [Constraints on Type Parameters](/dotnet/csharp/programming-guide/generics/constraints-on-type-parameters). +The following example uses C# to create a component that contains a generic type that has certain constraints that are not supported when authoring generic types in C++/CLI. For more information, see [Constraints on Type Parameters](/dotnet/csharp/programming-guide/generics/constraints-on-type-parameters). ```csharp // C3391.cs @@ -26,7 +26,7 @@ public class GR where N : struct {} ``` -When the C3391.dll component is available, the following sample generates C3391. +When the C3391.dll component is available, the following example generates C3391. ```cpp // C3391_b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3392.md b/docs/error-messages/compiler-errors-2/compiler-error-c3392.md index 1dccca4f5b6..5b1dc6976c2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3392.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3392.md @@ -16,7 +16,7 @@ A generic type was instantiated incorrectly. Check the type definition. For more ## Example -The following sample uses C# to create a component that contains a generic type that has certain constraints that are not supported when authoring generic types in C++/CLI. For more information, see [Constraints on Type Parameters](/dotnet/csharp/programming-guide/generics/constraints-on-type-parameters). +The following example uses C# to create a component that contains a generic type that has certain constraints that are not supported when authoring generic types in C++/CLI. For more information, see [Constraints on Type Parameters](/dotnet/csharp/programming-guide/generics/constraints-on-type-parameters). ```csharp // C3392.cs @@ -28,7 +28,7 @@ where V : struct where N : new() {} ``` -When the C3392.dll component is available, the following sample generates C3392. +When the C3392.dll component is available, the following example generates C3392. ```cpp // C3392_b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3393.md b/docs/error-messages/compiler-errors-2/compiler-error-c3393.md index 2243f8d790f..86b5047aa27 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3393.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3393.md @@ -16,7 +16,7 @@ The identifier passed to a constraint, which must be a type, was not a type. Fo ## Example -The following sample generates C3393: +The following example generates C3393: ```cpp // C3393.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3394.md b/docs/error-messages/compiler-errors-2/compiler-error-c3394.md index 90ffd5989fc..82aeacc6e68 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3394.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3394.md @@ -16,7 +16,7 @@ A constraint was ill formed. For more information, see [Constraints on Generic ## Example -The following sample generates C3394: +The following example generates C3394: ```cpp // C3394.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3395.md b/docs/error-messages/compiler-errors-2/compiler-error-c3395.md index 514d3795f69..32d7404f7b1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3395.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3395.md @@ -16,7 +16,7 @@ ms.assetid: 26a9ebc9-ed97-47ce-b436-19aa2bcf6e50 ## Example -The following sample generates C3395: +The following example generates C3395: ```cpp // C3395.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3397.md b/docs/error-messages/compiler-errors-2/compiler-error-c3397.md index 18796c7621d..96acca19de8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3397.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3397.md @@ -16,7 +16,7 @@ An array was declared incorrectly. See [Arrays](../../extensions/arrays-cpp-com ## Example -The following sample generates C3397. +The following example generates C3397. ```cpp // C3397.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3399.md b/docs/error-messages/compiler-errors-2/compiler-error-c3399.md index 78ff65b7a53..82d6757e9d7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3399.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3399.md @@ -18,7 +18,7 @@ See [Constraints on Generic Type Parameters (C++/CLI)](../../extensions/constrai ## Example -The following sample generates C3399. +The following example generates C3399. ```cpp // C3399.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3400.md b/docs/error-messages/compiler-errors-2/compiler-error-c3400.md index 7aad309d34e..92b40d2ecc8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3400.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3400.md @@ -18,7 +18,7 @@ For more information, see [Constraints on Generic Type Parameters (C++/CLI)](../ ## Example -The following sample generates C3400. +The following example generates C3400. ```cpp // C3400.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3408.md b/docs/error-messages/compiler-errors-2/compiler-error-c3408.md index cb0da0efa57..8412fed5648 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3408.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3408.md @@ -16,7 +16,7 @@ Attributes cannot be applied to template definitions. ## Example -The following sample generates C3408. +The following example generates C3408. ```cpp // C3408.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3412.md b/docs/error-messages/compiler-errors-2/compiler-error-c3412.md index 83df2e75689..a3b19072766 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3412.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3412.md @@ -16,7 +16,7 @@ A template cannot be specialized at class scope, only in global or namespace sco ## Example -The following sample generates C3412. +The following example generates C3412. ```cpp // C3412.cpp @@ -27,7 +27,7 @@ struct S { }; ``` -The following sample shows a possible resolution. +The following example shows a possible resolution. ```cpp // C3412b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3413.md b/docs/error-messages/compiler-errors-2/compiler-error-c3413.md index 69f0965d252..458096ac137 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3413.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3413.md @@ -16,7 +16,7 @@ The compiler detected an ill-formed explicit instantiation. ## Example -The following sample generates C3413: +The following example generates C3413: ```cpp // C3413.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3414.md b/docs/error-messages/compiler-errors-2/compiler-error-c3414.md index a2624afaf3c..beb045df417 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3414.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3414.md @@ -16,7 +16,7 @@ A member was defined in code that is also defined in a referenced assembly. ## Example -The following sample generates C3414: +The following example generates C3414: ```cpp // C3414a2.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3415.md b/docs/error-messages/compiler-errors-2/compiler-error-c3415.md index f7cd1bd8638..a5b7b1d444f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3415.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3415.md @@ -37,7 +37,7 @@ Conflicting values were specified in [section](../../preprocessor/section.md) pr ## Example -The following sample generates C3415: +The following example generates C3415: ```cpp // C3415.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3417.md b/docs/error-messages/compiler-errors-2/compiler-error-c3417.md index 42d6417a654..4c0d18694ee 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3417.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3417.md @@ -16,7 +16,7 @@ Value types cannot contain functions such as a default instance constructor, des ## Example -The following sample generates C3517: +The following example generates C3517: ```cpp // C3417.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3418.md b/docs/error-messages/compiler-errors-2/compiler-error-c3418.md index 1faf84dd45f..68d5aff8173 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3418.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3418.md @@ -16,7 +16,7 @@ A CLR access specifier was specified incorrectly. For more information, see Typ ## Example -The following sample generates C3418. +The following example generates C3418. ```cpp // C3418.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3420.md b/docs/error-messages/compiler-errors-2/compiler-error-c3420.md index 439e38bd34c..01ff84f0407 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3420.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3420.md @@ -18,7 +18,7 @@ For more information, see [Destructors and finalizers in How to: Define and cons ## Example -The following sample generates C3420. +The following example generates C3420. ```cpp // C3420.cpp From 80d3fdac0f26247ba36d978718a452a3234bf30d Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 19 Aug 2025 21:48:26 +0800 Subject: [PATCH 1475/2255] Update metadata for error references in range [C3381, C3420] --- .../error-messages/compiler-errors-2/compiler-error-c3381.md | 1 - .../error-messages/compiler-errors-2/compiler-error-c3382.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3383.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3384.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3385.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3386.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3387.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3388.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3389.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3390.md | 1 - .../error-messages/compiler-errors-2/compiler-error-c3391.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3392.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3393.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3394.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3395.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3396.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3397.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3398.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3399.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3400.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3408.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3409.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3412.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3413.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3414.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3415.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3417.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3418.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3420.md | 5 ++--- 29 files changed, 54 insertions(+), 83 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3381.md b/docs/error-messages/compiler-errors-2/compiler-error-c3381.md index b21357ca9b9..913b50fe2cd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3381.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3381.md @@ -4,7 +4,6 @@ description: "Microsoft C++ compiler error C3381, its causes and how to resolve ms.date: 09/28/2020 f1_keywords: ["C3381"] helpviewer_keywords: ["C3381"] -ms.assetid: d276c89f-8377-4cb6-a8d4-7770885f06c4 --- # Compiler Error C3381 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3382.md b/docs/error-messages/compiler-errors-2/compiler-error-c3382.md index 667a0dc6a04..1314e1265cd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3382.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3382.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3382" title: "Compiler Error C3382" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3382" +ms.date: 11/04/2016 f1_keywords: ["C3382"] helpviewer_keywords: ["C3382"] -ms.assetid: a7603abd-ac4e-4ae6-a02b-3bdc6d1908a6 --- # Compiler Error C3382 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3383.md b/docs/error-messages/compiler-errors-2/compiler-error-c3383.md index 1cfde5a9bfe..1a7f753626c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3383.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3383.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3383" title: "Compiler Error C3383" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3383" +ms.date: 11/04/2016 f1_keywords: ["C3383"] helpviewer_keywords: ["C3383"] -ms.assetid: ceb7f725-f417-4dc3-8496-0f413bb76687 --- # Compiler Error C3383 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3384.md b/docs/error-messages/compiler-errors-2/compiler-error-c3384.md index 71f60da426c..b9652439d74 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3384.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3384.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3384" title: "Compiler Error C3384" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3384" +ms.date: 11/04/2016 f1_keywords: ["C3384"] helpviewer_keywords: ["C3384"] -ms.assetid: c9f92c6a-62a9-4333-b2b1-bc55c7f288b6 --- # Compiler Error C3384 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3385.md b/docs/error-messages/compiler-errors-2/compiler-error-c3385.md index 9ba07241af3..4bdd233dd9a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3385.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3385.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3385" title: "Compiler Error C3385" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3385" +ms.date: 11/04/2016 f1_keywords: ["C3385"] helpviewer_keywords: ["C3385"] -ms.assetid: 5f1838c1-986e-47db-8dbc-e06976b83cf3 --- # Compiler Error C3385 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3386.md b/docs/error-messages/compiler-errors-2/compiler-error-c3386.md index 9dd83b1cca5..b6e8bef3bad 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3386.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3386.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3386" title: "Compiler Error C3386" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3386" +ms.date: 11/04/2016 f1_keywords: ["C3386"] helpviewer_keywords: ["C3386"] -ms.assetid: 93fa8c33-0f10-402b-8eec-b0a217a1f8dc --- # Compiler Error C3386 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3387.md b/docs/error-messages/compiler-errors-2/compiler-error-c3387.md index 3cdd54bb955..1aa8d110eef 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3387.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3387.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3387" title: "Compiler Error C3387" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3387" +ms.date: 11/04/2016 f1_keywords: ["C3387"] helpviewer_keywords: ["C3387"] -ms.assetid: c54d9925-ed14-4976-b8db-e8d4dc84e536 --- # Compiler Error C3387 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3388.md b/docs/error-messages/compiler-errors-2/compiler-error-c3388.md index b4583819443..1b69e8c4669 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3388.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3388.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3388" title: "Compiler Error C3388" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3388" +ms.date: 11/04/2016 f1_keywords: ["C3388"] helpviewer_keywords: ["C3388"] -ms.assetid: 34336545-ed13-4d81-ab5f-f869799fe4c2 --- # Compiler Error C3388 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3389.md b/docs/error-messages/compiler-errors-2/compiler-error-c3389.md index 2f64dbb570c..4f662925f08 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3389.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3389.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3389" title: "Compiler Error C3389" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3389" +ms.date: 11/04/2016 f1_keywords: ["C3389"] helpviewer_keywords: ["C3389"] -ms.assetid: eaaffe17-23f2-413c-b1ad-f7220cfa1334 --- # Compiler Error C3389 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3390.md b/docs/error-messages/compiler-errors-2/compiler-error-c3390.md index b861798d3ce..ff243fdbd3e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3390.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3390.md @@ -4,7 +4,6 @@ description: "Microsoft C++ compiler error C3390, its causes and how to resolve ms.date: 09/26/2020 f1_keywords: ["C3390"] helpviewer_keywords: ["C3390"] -ms.assetid: 84800a87-c8e6-45aa-82ae-02f816dc8d97 --- # Compiler Error C3390 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3391.md b/docs/error-messages/compiler-errors-2/compiler-error-c3391.md index 53de5acbc98..32d4d18f191 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3391.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3391.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3391" title: "Compiler Error C3391" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3391" +ms.date: 11/04/2016 f1_keywords: ["C3391"] helpviewer_keywords: ["C3391"] -ms.assetid: c32532b9-7db4-4ccd-84b9-479e5a1a19d1 --- # Compiler Error C3391 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3392.md b/docs/error-messages/compiler-errors-2/compiler-error-c3392.md index 5b1dc6976c2..57b89416bf3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3392.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3392.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3392" title: "Compiler Error C3392" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3392" +ms.date: 11/04/2016 f1_keywords: ["C3392"] helpviewer_keywords: ["C3392"] -ms.assetid: e4757596-e2aa-4314-b01e-5c4bfd2110e9 --- # Compiler Error C3392 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3393.md b/docs/error-messages/compiler-errors-2/compiler-error-c3393.md index 86b5047aa27..82ca666acc1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3393.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3393.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3393" title: "Compiler Error C3393" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3393" +ms.date: 11/04/2016 f1_keywords: ["C3393"] helpviewer_keywords: ["C3393"] -ms.assetid: d57f7c69-0a02-4fe3-9e45-bc62644fd77c --- # Compiler Error C3393 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3394.md b/docs/error-messages/compiler-errors-2/compiler-error-c3394.md index 82aeacc6e68..a2866af1438 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3394.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3394.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3394" title: "Compiler Error C3394" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3394" +ms.date: 11/04/2016 f1_keywords: ["C3394"] helpviewer_keywords: ["C3394"] -ms.assetid: 4e025d79-27ba-43c8-b0d9-839ecef98126 --- # Compiler Error C3394 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3395.md b/docs/error-messages/compiler-errors-2/compiler-error-c3395.md index 32d7404f7b1..5c14e3a6380 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3395.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3395.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3395" title: "Compiler Error C3395" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3395" +ms.date: 11/04/2016 f1_keywords: ["C3395"] helpviewer_keywords: ["C3395"] -ms.assetid: 26a9ebc9-ed97-47ce-b436-19aa2bcf6e50 --- # Compiler Error C3395 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3396.md b/docs/error-messages/compiler-errors-2/compiler-error-c3396.md index f248a3b7854..958845bb38e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3396.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3396.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3396" title: "Compiler Error C3396" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3396" +ms.date: 11/04/2016 f1_keywords: ["C3396"] helpviewer_keywords: ["C3396"] -ms.assetid: e3580e32-72ec-4c3e-8afa-755603ffd25c --- # Compiler Error C3396 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3397.md b/docs/error-messages/compiler-errors-2/compiler-error-c3397.md index 96acca19de8..62ff9b28448 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3397.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3397.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3397" title: "Compiler Error C3397" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3397" +ms.date: 11/04/2016 f1_keywords: ["C3397"] helpviewer_keywords: ["C3397"] -ms.assetid: a8536e87-79c4-4ed7-bd96-42704d06391f --- # Compiler Error C3397 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3398.md b/docs/error-messages/compiler-errors-2/compiler-error-c3398.md index 86dc04476c4..12e80fd4613 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3398.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3398.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3398" title: "Compiler Error C3398" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3398" +ms.date: 11/04/2016 f1_keywords: ["C3398"] helpviewer_keywords: ["C3398"] -ms.assetid: 26f8c8a4-526f-415b-8047-155c5cd4f180 --- # Compiler Error C3398 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3399.md b/docs/error-messages/compiler-errors-2/compiler-error-c3399.md index 82d6757e9d7..dd6950693e9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3399.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3399.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3399" title: "Compiler Error C3399" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3399" +ms.date: 11/04/2016 f1_keywords: ["C3399"] helpviewer_keywords: ["C3399"] -ms.assetid: 306ad199-d150-4f6c-bcf1-24a7948b93be --- # Compiler Error C3399 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3400.md b/docs/error-messages/compiler-errors-2/compiler-error-c3400.md index 92b40d2ecc8..68f42cc0a03 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3400.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3400.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3400" title: "Compiler Error C3400" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3400" +ms.date: 11/04/2016 f1_keywords: ["C3400"] helpviewer_keywords: ["C3400"] -ms.assetid: d44169a8-73b6-4766-b406-b3a6c93f2a4d --- # Compiler Error C3400 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3408.md b/docs/error-messages/compiler-errors-2/compiler-error-c3408.md index 8412fed5648..b0239c3bd19 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3408.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3408.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3408" title: "Compiler Error C3408" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3408" +ms.date: 11/04/2016 f1_keywords: ["C3408"] helpviewer_keywords: ["C3408"] -ms.assetid: 1f5ea979-fb1e-4214-b310-6fd6ca8249b1 --- # Compiler Error C3408 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3409.md b/docs/error-messages/compiler-errors-2/compiler-error-c3409.md index 393e09c5d88..6603ef05435 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3409.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3409.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3409" title: "Compiler Error C3409" -ms.date: "11/06/2018" +description: "Learn more about: Compiler Error C3409" +ms.date: 11/06/2018 f1_keywords: ["C3409"] helpviewer_keywords: ["C3409"] -ms.assetid: e372d9fa-230c-4b28-b6d3-6ad81ccf9dbb --- # Compiler Error C3409 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3412.md b/docs/error-messages/compiler-errors-2/compiler-error-c3412.md index a3b19072766..5209a9eca05 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3412.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3412.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3412" title: "Compiler Error C3412" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3412" +ms.date: 11/04/2016 f1_keywords: ["C3412"] helpviewer_keywords: ["C3412"] -ms.assetid: aa4dd43b-54ce-4cda-85c1-1a77dd6e34fa --- # Compiler Error C3412 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3413.md b/docs/error-messages/compiler-errors-2/compiler-error-c3413.md index 458096ac137..d5c4e89b153 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3413.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3413.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3413" title: "Compiler Error C3413" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3413" +ms.date: 11/04/2016 f1_keywords: ["C3413"] helpviewer_keywords: ["C3413"] -ms.assetid: de6c9b05-c373-4bd8-8cb0-12c2cd2e5674 --- # Compiler Error C3413 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3414.md b/docs/error-messages/compiler-errors-2/compiler-error-c3414.md index beb045df417..5ff2d2b3ae5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3414.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3414.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3414" title: "Compiler Error C3414" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3414" +ms.date: 11/04/2016 f1_keywords: ["C3414"] helpviewer_keywords: ["C3414"] -ms.assetid: 715f5432-b509-4f8f-84f5-e1463bac490f --- # Compiler Error C3414 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3415.md b/docs/error-messages/compiler-errors-2/compiler-error-c3415.md index a5b7b1d444f..30450c07d51 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3415.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3415.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3415" title: "Compiler Error C3415" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3415" +ms.date: 11/04/2016 f1_keywords: ["C3415"] helpviewer_keywords: ["C3415"] -ms.assetid: fa2db8ab-2820-4ec3-a740-fb5e2adcfb29 --- # Compiler Error C3415 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3417.md b/docs/error-messages/compiler-errors-2/compiler-error-c3417.md index 4c0d18694ee..6be953cb0e6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3417.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3417.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3417" title: "Compiler Error C3417" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3417" +ms.date: 11/04/2016 f1_keywords: ["C3417"] helpviewer_keywords: ["C3417"] -ms.assetid: 3e7869ea-8948-42fb-ba30-6ccafe499c35 --- # Compiler Error C3417 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3418.md b/docs/error-messages/compiler-errors-2/compiler-error-c3418.md index 68d5aff8173..2d7e3ab6a67 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3418.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3418.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3418" title: "Compiler Error C3418" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3418" +ms.date: 11/04/2016 f1_keywords: ["C3418"] helpviewer_keywords: ["C3418"] -ms.assetid: 54042c04-3c45-41c1-bad7-90f9ee05a21b --- # Compiler Error C3418 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3420.md b/docs/error-messages/compiler-errors-2/compiler-error-c3420.md index 01ff84f0407..5ae784e3d77 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3420.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3420.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3420" title: "Compiler Error C3420" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3420" +ms.date: 11/04/2016 f1_keywords: ["C3420"] helpviewer_keywords: ["C3420"] -ms.assetid: 99b53c77-f36b-4574-9199-b53111becccb --- # Compiler Error C3420 From d39c2aa7f9a4fba62936d46ec6a98724f4c9b535 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 19 Aug 2025 22:41:03 +0800 Subject: [PATCH 1476/2255] Add backtick in "Tutorial: Import the C++ standard library using modules from the command line" --- docs/cpp/tutorial-import-stl-named-module.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cpp/tutorial-import-stl-named-module.md b/docs/cpp/tutorial-import-stl-named-module.md index b2c961353f2..67894b421ec 100644 --- a/docs/cpp/tutorial-import-stl-named-module.md +++ b/docs/cpp/tutorial-import-stl-named-module.md @@ -77,7 +77,7 @@ The statement `import std;` or `import std.compat;` imports the standard library |---|---| | [`/std:c++:latest`](../build/reference/std-specify-language-standard-version.md) | Use the latest version of the C++ language standard and library. Although module support is available under `/std:c++20`, you need the latest standard library to get support for standard library named modules. | | [`/EHsc`](../build/reference/eh-exception-handling-model.md) | Use C++ exception handling, except for functions marked `extern "C"`. | - | [`/W4`](../build/reference//compiler-option-warning-level.md) | Using /W4 is generally recommended, especially for new projects because it enables all level 1, level 2, level 3, and most level 4 (informational) warnings, which can help you catch potential issues early. It essentially provides lint-like warnings that can help ensure the fewest possible hard-to-find code defects. | + | [`/W4`](../build/reference//compiler-option-warning-level.md) | Using `/W4` is generally recommended, especially for new projects because it enables all level 1, level 2, level 3, and most level 4 (informational) warnings, which can help you catch potential issues early. It essentially provides lint-like warnings that can help ensure the fewest possible hard-to-find code defects. | | [`/c`](../build/reference/c-compile-without-linking.md) | Compile without linking, because we're just building the binary named module interface at this point. | You can control the object file name and the named module interface file name with the following switches: From 21fcb64157e3a5a571ab48a468dc3aa1826773d5 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 19 Aug 2025 22:50:24 +0800 Subject: [PATCH 1477/2255] Fix typos and tweak wording in "Tutorial: Import the C++ standard library using modules from the command line" --- docs/cpp/tutorial-import-stl-named-module.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/cpp/tutorial-import-stl-named-module.md b/docs/cpp/tutorial-import-stl-named-module.md index 67894b421ec..eab7cb403a8 100644 --- a/docs/cpp/tutorial-import-stl-named-module.md +++ b/docs/cpp/tutorial-import-stl-named-module.md @@ -26,7 +26,7 @@ This tutorial requires Visual Studio 2022 17.5 or later. Header file semantics can change depending on macro definitions, the order in which you include them, and they slow compilation. Modules solve these problems. -It's now possible to import the standard library as a module instead of as a tangle of header files. This is much faster and more robust than including header files or header units or precompiled headers (PCH). +It's now possible to import the standard library as a module instead of as a tangle of header files. This is much faster and more robust than including header files, header units, or precompiled headers (PCH). The C++23 standard library introduces two named modules: `std` and `std.compat`: @@ -75,7 +75,7 @@ The statement `import std;` or `import std.compat;` imports the standard library | Switch | Meaning | |---|---| - | [`/std:c++:latest`](../build/reference/std-specify-language-standard-version.md) | Use the latest version of the C++ language standard and library. Although module support is available under `/std:c++20`, you need the latest standard library to get support for standard library named modules. | + | [`/std:c++latest`](../build/reference/std-specify-language-standard-version.md) | Use the latest version of the C++ language standard and library. Although module support is available under `/std:c++20`, you need the latest standard library to get support for standard library named modules. | | [`/EHsc`](../build/reference/eh-exception-handling-model.md) | Use C++ exception handling, except for functions marked `extern "C"`. | | [`/W4`](../build/reference//compiler-option-warning-level.md) | Using `/W4` is generally recommended, especially for new projects because it enables all level 1, level 2, level 3, and most level 4 (informational) warnings, which can help you catch potential issues early. It essentially provides lint-like warnings that can help ensure the fewest possible hard-to-find code defects. | | [`/c`](../build/reference/c-compile-without-linking.md) | Compile without linking, because we're just building the binary named module interface at this point. | @@ -159,7 +159,7 @@ Before you can use `import std.compat;` you must compile the module interface fi - `std.compat.obj` contains implementation. However, most of the implementation is provided by `std.obj`. Add `std.obj` to the command line when you compile the sample app to statically link the functionality that you use from the standard library into your application. You can control the object file name and the named module interface file name with the following switches: - - [`/Fo`](../build/reference/fo-object-file-name.md) sets the name of the object file. For example, `/Fo:"somethingelse"`. By default, the compiler uses the same name for the object file as the module source file (`.ixx`) you're compiling. In the example, the object file names are `std.obj` and `std.compat.obj` by default because we're compiling the module files `std.ixx` and `std.compat.obj`. + - [`/Fo`](../build/reference/fo-object-file-name.md) sets the name of the object file. For example, `/Fo:"somethingelse"`. By default, the compiler uses the same name for the object file as the module source file (`.ixx`) you're compiling. In the example, the object file names are `std.obj` and `std.compat.obj` by default because we're compiling the module files `std.ixx` and `std.compat.ixx`. - [`/ifcOutput`](../build/reference/ifc-output.md) sets the name of the named module interface file (`.ifc`). For example, `/ifcOutput "somethingelse.ifc"`. By default, the compiler uses the same name for the module interface file (`.ifc`) as the module source file (`.ixx`) you're compiling. In the example, the generated `ifc` files are `std.ifc` and `std.compat.ifc` by default because we're compiling the module files `std.ixx` and `std.compat.ixx`. 1. Import the `std.compat` library by first creating a file named `stdCompatExample.cpp` with the following content: @@ -210,7 +210,7 @@ Before you can use `import std.compat;` you must compile the module interface fi ## Standard library named module considerations -Versioning for named modules is the same as for headers. The `.ixx` named module files are installed alongside the headers, for example: `"%VCToolsInstallDir%\modules\std.ixx`, which resolves to `C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.38.33130\modules\std.ixx` in the version of the tools used at the time of this writing. Select the version of the named module the same way you choose the version of the header file to use--by the directory you refer to them from. +Versioning for named modules is the same as for headers. The `.ixx` named module files are installed alongside the headers, for example: `"%VCToolsInstallDir%\modules\std.ixx"`, which resolves to `C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.38.33130\modules\std.ixx` in the version of the tools used at the time of this writing. Select the version of the named module the same way you choose the version of the header file to use--by the directory you refer to them from. Don't mix and match importing header units and named modules. For example, don't `import ;` and `import std;` in the same file. @@ -222,7 +222,7 @@ If you need to use the `assert()` macro, then `#include `. If you need to use the `errno` macro, `#include `. Because named modules don't expose macros, this is the workaround if you need to check for errors from ``, for example. -Macros such as `NAN`, `INFINITY`, and `INT_MIN` are defined by ``, which you can include. However, if you `import std;` you can use `numeric_limits::quiet_NaN()` and `numeric_limits::infinity()` instead of `NAN` and `INFINITY`, and `std::numeric_limits::min()` instead of `INT_MIN`. +Macros such as `NAN`, `INFINITY`, and `INT_MIN` are defined by ``, which you can include. However, if you `import std;` you can use `std::numeric_limits::quiet_NaN()` and `std::numeric_limits::infinity()` instead of `NAN` and `INFINITY`, and `std::numeric_limits::min()` instead of `INT_MIN`. ## Summary From 750161025eb595ebe9731810856b98bc7877ca04 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 19 Aug 2025 22:52:58 +0800 Subject: [PATCH 1478/2255] Clean up links in "Tutorial: Import the C++ standard library using modules from the command line" --- docs/cpp/tutorial-import-stl-named-module.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/cpp/tutorial-import-stl-named-module.md b/docs/cpp/tutorial-import-stl-named-module.md index eab7cb403a8..7e665eb5bc7 100644 --- a/docs/cpp/tutorial-import-stl-named-module.md +++ b/docs/cpp/tutorial-import-stl-named-module.md @@ -49,7 +49,7 @@ This article demonstrates the new and best way to consume the standard library. ## Import the standard library with `std` -The following examples demonstrate how to consume the standard library as a module using the command line compiler. For information about how to do this in the Visual Studio IDE, see [Build ISO C++23 Standard Library Modules](..\build\reference\c-cpp-prop-page.md#build-iso-c23-standard-library-modules). +The following examples demonstrate how to consume the standard library as a module using the command line compiler. For information about how to do this in the Visual Studio IDE, see [Build ISO C++23 Standard Library Modules](../build/reference/c-cpp-prop-page.md#build-iso-c23-standard-library-modules). The statement `import std;` or `import std.compat;` imports the standard library into your application. But first, you must compile the standard library named modules into binary form. The following steps demonstrate how. @@ -77,7 +77,7 @@ The statement `import std;` or `import std.compat;` imports the standard library |---|---| | [`/std:c++latest`](../build/reference/std-specify-language-standard-version.md) | Use the latest version of the C++ language standard and library. Although module support is available under `/std:c++20`, you need the latest standard library to get support for standard library named modules. | | [`/EHsc`](../build/reference/eh-exception-handling-model.md) | Use C++ exception handling, except for functions marked `extern "C"`. | - | [`/W4`](../build/reference//compiler-option-warning-level.md) | Using `/W4` is generally recommended, especially for new projects because it enables all level 1, level 2, level 3, and most level 4 (informational) warnings, which can help you catch potential issues early. It essentially provides lint-like warnings that can help ensure the fewest possible hard-to-find code defects. | + | [`/W4`](../build/reference/compiler-option-warning-level.md) | Using `/W4` is generally recommended, especially for new projects because it enables all level 1, level 2, level 3, and most level 4 (informational) warnings, which can help you catch potential issues early. It essentially provides lint-like warnings that can help ensure the fewest possible hard-to-find code defects. | | [`/c`](../build/reference/c-compile-without-linking.md) | Compile without linking, because we're just building the binary named module interface at this point. | You can control the object file name and the named module interface file name with the following switches: From 0dc46705a879c62635860206a5d3a15c217c9f14 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 19 Aug 2025 22:54:10 +0800 Subject: [PATCH 1479/2255] Elide duplicate "modules [C++]" `helpviewer_keywords` in "Tutorial: Import the C++ standard library using modules from the command line" --- docs/cpp/tutorial-import-stl-named-module.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cpp/tutorial-import-stl-named-module.md b/docs/cpp/tutorial-import-stl-named-module.md index 7e665eb5bc7..ea8e886d277 100644 --- a/docs/cpp/tutorial-import-stl-named-module.md +++ b/docs/cpp/tutorial-import-stl-named-module.md @@ -4,7 +4,7 @@ ms.date: 01/29/2024 ms.topic: "tutorial" author: "tylermsft" ms.author: "twhitney" -helpviewer_keywords: ["modules [C++]", "modules [C++]", "named modules [C++], import standard library (STL) using named modules"] +helpviewer_keywords: ["modules [C++]", "named modules [C++], import standard library (STL) using named modules"] description: Learn how to import the C++ standard library (STL) using modules from the command line --- From 120b7b402a0836142940d78aa24ed723cd638abd Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 19 Aug 2025 22:54:41 +0800 Subject: [PATCH 1480/2255] Update metadata in "Tutorial: Import the C++ standard library using modules from the command line" --- docs/cpp/tutorial-import-stl-named-module.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cpp/tutorial-import-stl-named-module.md b/docs/cpp/tutorial-import-stl-named-module.md index ea8e886d277..f90f02c7ff7 100644 --- a/docs/cpp/tutorial-import-stl-named-module.md +++ b/docs/cpp/tutorial-import-stl-named-module.md @@ -1,11 +1,11 @@ --- title: "Tutorial: Import the standard library (STL) using modules from the command line (C++)" +description: "Learn how to import the C++ standard library (STL) using modules from the command line" ms.date: 01/29/2024 ms.topic: "tutorial" author: "tylermsft" ms.author: "twhitney" helpviewer_keywords: ["modules [C++]", "named modules [C++], import standard library (STL) using named modules"] -description: Learn how to import the C++ standard library (STL) using modules from the command line --- # Tutorial: Import the C++ standard library using modules from the command line From 8d12f9b4b071226e11057154f13ce7b1c2f92d26 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 19 Aug 2025 23:09:44 +0800 Subject: [PATCH 1481/2255] Clean up more empty "Remarks" headings --- docs/build/reference/help-compiler-command-line-help.md | 2 -- .../build/reference/nologo-suppress-startup-banner-c-cpp.md | 2 -- docs/c-runtime-library/cxxframehandler.md | 2 -- docs/c-runtime-library/internal-set-app-type.md | 2 -- docs/c-runtime-library/reference/uncaught-exception.md | 2 -- docs/c-runtime-library/setusermatherr.md | 2 -- docs/cppcx/platform-arrayreference-class.md | 2 -- docs/cppcx/platform-metadata-flagsattribute-attribute.md | 2 -- docs/cppcx/platform-stringreference-class.md | 6 ------ docs/parallel/concrt/reference/event-class.md | 2 -- 10 files changed, 24 deletions(-) diff --git a/docs/build/reference/help-compiler-command-line-help.md b/docs/build/reference/help-compiler-command-line-help.md index 8b03e638c82..7c30a3193cf 100644 --- a/docs/build/reference/help-compiler-command-line-help.md +++ b/docs/build/reference/help-compiler-command-line-help.md @@ -18,8 +18,6 @@ Displays a listing of compiler options to standard output. /? ``` -## Remarks - ### To set this compiler option in the Visual Studio development environment - This compiler option should only be accessed from the command line. diff --git a/docs/build/reference/nologo-suppress-startup-banner-c-cpp.md b/docs/build/reference/nologo-suppress-startup-banner-c-cpp.md index df6bf589671..493f51b6edb 100644 --- a/docs/build/reference/nologo-suppress-startup-banner-c-cpp.md +++ b/docs/build/reference/nologo-suppress-startup-banner-c-cpp.md @@ -16,8 +16,6 @@ Suppresses the display of the copyright banner when the compiler starts up and d /nologo ``` -## Remarks - ### To set this compiler option in the Visual Studio development environment 1. Open the project's **Property Pages** dialog box. For details, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md). diff --git a/docs/c-runtime-library/cxxframehandler.md b/docs/c-runtime-library/cxxframehandler.md index 67d417b3f1c..6d430789f00 100644 --- a/docs/c-runtime-library/cxxframehandler.md +++ b/docs/c-runtime-library/cxxframehandler.md @@ -43,8 +43,6 @@ Additional information about the function entry and stack frame. One of the *filter expression* values used by the [try-except Statement](../cpp/try-except-statement.md). -## Remarks - ## Requirements | Routine | Required header | diff --git a/docs/c-runtime-library/internal-set-app-type.md b/docs/c-runtime-library/internal-set-app-type.md index 9faaf4a49e3..286d8a41e39 100644 --- a/docs/c-runtime-library/internal-set-app-type.md +++ b/docs/c-runtime-library/internal-set-app-type.md @@ -33,8 +33,6 @@ A value that indicates the application type. The possible values are: | `_CONSOLE_APP` | Console (command-line) application. | | `_GUI_APP` | GUI (Windows) application. | -## Remarks - ## Requirements | Routine | Required header | diff --git a/docs/c-runtime-library/reference/uncaught-exception.md b/docs/c-runtime-library/reference/uncaught-exception.md index 52c7a6c349b..7c560840fe4 100644 --- a/docs/c-runtime-library/reference/uncaught-exception.md +++ b/docs/c-runtime-library/reference/uncaught-exception.md @@ -24,8 +24,6 @@ bool __uncaught_exception(); **`true`** from the time an exception is thrown in a **`try`** block until the matching **`catch`** block is initialized; otherwise, **`false`**. -## Remarks - ## Requirements | Routine | Required header | diff --git a/docs/c-runtime-library/setusermatherr.md b/docs/c-runtime-library/setusermatherr.md index 16a9bc0757f..8cdb716815f 100644 --- a/docs/c-runtime-library/setusermatherr.md +++ b/docs/c-runtime-library/setusermatherr.md @@ -29,8 +29,6 @@ Pointer to an implementation of `_matherr` that is supplied by the user. The type of the *`pf`* parameter is declared as `typedef int (__cdecl * _HANDLE_MATH_ERROR)(struct _exception *)`. -## Remarks - ## Requirements | Routine | Required header | diff --git a/docs/cppcx/platform-arrayreference-class.md b/docs/cppcx/platform-arrayreference-class.md index 4441c41afba..86f17861e57 100644 --- a/docs/cppcx/platform-arrayreference-class.md +++ b/docs/cppcx/platform-arrayreference-class.md @@ -70,8 +70,6 @@ The number of elements in the source array. *otherArg*
An `ArrayReference` object whose data will be moved to initialize the new instance. -### Remarks - ## ArrayReference::operator= Operator Assigns the specified object to the current [Platform::ArrayReference](../cppcx/platform-arrayreference-class.md) object by using move semantics. diff --git a/docs/cppcx/platform-metadata-flagsattribute-attribute.md b/docs/cppcx/platform-metadata-flagsattribute-attribute.md index b3f435aa5ad..b37eaadcc39 100644 --- a/docs/cppcx/platform-metadata-flagsattribute-attribute.md +++ b/docs/cppcx/platform-metadata-flagsattribute-attribute.md @@ -23,8 +23,6 @@ public ref class Flags abstract : Attribute [Platform::Metadata::Attribute](../cppcx/platform-metadata-attribute-attribute.md) -### Remarks - ### Requirements **Minimum supported client:** Windows 8 diff --git a/docs/cppcx/platform-stringreference-class.md b/docs/cppcx/platform-stringreference-class.md index 0ca0b227d9b..ca8ef3bcf09 100644 --- a/docs/cppcx/platform-stringreference-class.md +++ b/docs/cppcx/platform-stringreference-class.md @@ -15,8 +15,6 @@ An optimization type that you can use to pass string data from `Platform::String class StringReference ``` -### Remarks - ### Members ### Public Constructors @@ -79,8 +77,6 @@ __abi_HSTRING GetHSTRING() const; An `__abi_HSTRING` that contains the string data. -### Remarks - ## StringReference::GetString Method Returns the contents of the string as a `Platform::String^`. @@ -110,8 +106,6 @@ unsigned int Length() const; An unsigned integer that specifies the number of characters in the string. -### Remarks - ## StringReference::operator= Operator Assigns the specified object to the current `StringReference` object. diff --git a/docs/parallel/concrt/reference/event-class.md b/docs/parallel/concrt/reference/event-class.md index 699ecf71814..5e54b099272 100644 --- a/docs/parallel/concrt/reference/event-class.md +++ b/docs/parallel/concrt/reference/event-class.md @@ -61,8 +61,6 @@ Constructs a new event. _CRTIMP event(); ``` -### Remarks - ## ~event Destroys an event. From fb459ef06653d4cc47cd09b6b6abef9974a9b08d Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 19 Aug 2025 23:12:43 +0800 Subject: [PATCH 1482/2255] Update metadata in 9 topics --- docs/build/reference/help-compiler-command-line-help.md | 5 ++--- docs/build/reference/nologo-suppress-startup-banner-c-cpp.md | 5 ++--- docs/c-runtime-library/cxxframehandler.md | 5 ++--- docs/c-runtime-library/internal-set-app-type.md | 5 ++--- docs/c-runtime-library/reference/uncaught-exception.md | 5 ++--- docs/c-runtime-library/setusermatherr.md | 5 ++--- docs/cppcx/platform-arrayreference-class.md | 5 ++--- docs/cppcx/platform-metadata-flagsattribute-attribute.md | 5 ++--- docs/parallel/concrt/reference/event-class.md | 5 ++--- 9 files changed, 18 insertions(+), 27 deletions(-) diff --git a/docs/build/reference/help-compiler-command-line-help.md b/docs/build/reference/help-compiler-command-line-help.md index 7c30a3193cf..673fc125b1b 100644 --- a/docs/build/reference/help-compiler-command-line-help.md +++ b/docs/build/reference/help-compiler-command-line-help.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: /HELP (Compiler Command-Line Help)" title: "/HELP (Compiler Command-Line Help)" -ms.date: "11/04/2016" +description: "Learn more about: /HELP (Compiler Command-Line Help)" +ms.date: 11/04/2016 f1_keywords: ["/help"] helpviewer_keywords: ["HELP compiler option [C++]", "Help, for compiler command line", "/HELP compiler option [C++]", "/? compiler option [C++]", "-HELP compiler option [C++]", "-? compiler option [C++]", "cl.exe compiler, command-line syntax"] -ms.assetid: 192533e7-86f2-48e0-a08f-b5e4e3a4e784 --- # /HELP (Compiler Command-Line Help) diff --git a/docs/build/reference/nologo-suppress-startup-banner-c-cpp.md b/docs/build/reference/nologo-suppress-startup-banner-c-cpp.md index 493f51b6edb..d4dce169d76 100644 --- a/docs/build/reference/nologo-suppress-startup-banner-c-cpp.md +++ b/docs/build/reference/nologo-suppress-startup-banner-c-cpp.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: /nologo (Suppress Startup Banner) (C/C++)" title: "/nologo (Suppress Startup Banner) (C/C++)" -ms.date: "11/04/2016" +description: "Learn more about: /nologo (Suppress Startup Banner) (C/C++)" +ms.date: 11/04/2016 f1_keywords: ["VC.Project.VCCLWCECompilerTool.SuppressStartupBanner", "VC.Project.VCCLCompilerTool.SuppressStartupBanner"] helpviewer_keywords: ["-nologo compiler option [C++]", "/nologo compiler option [C++]", "nologo compiler option [C++]", "banners, suppressing startup"] -ms.assetid: 75930d8b-b11c-4db8-99e5-b52f97da0693 --- # /nologo (Suppress Startup Banner) (C/C++) diff --git a/docs/c-runtime-library/cxxframehandler.md b/docs/c-runtime-library/cxxframehandler.md index 6d430789f00..7883ff1adac 100644 --- a/docs/c-runtime-library/cxxframehandler.md +++ b/docs/c-runtime-library/cxxframehandler.md @@ -1,14 +1,13 @@ --- -description: "Learn more about: __CxxFrameHandler" title: "__CxxFrameHandler" -ms.date: "1/14/2021" +description: "Learn more about: __CxxFrameHandler" +ms.date: 1/14/2021 api_name: ["__CxxFrameHandler"] api_location: ["msvcr110.dll", "msvcrt.dll", "msvcr80.dll", "msvcr100.dll", "msvcr110_clr0400.dll", "msvcr90.dll", "msvcr120.dll"] api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["__CxxFrameHandler"] helpviewer_keywords: ["__CxxFrameHandler"] -ms.assetid: b79ac97f-425a-42ae-9b91-8beaef935333 --- # `__CxxFrameHandler` diff --git a/docs/c-runtime-library/internal-set-app-type.md b/docs/c-runtime-library/internal-set-app-type.md index 286d8a41e39..bdf12cb0d35 100644 --- a/docs/c-runtime-library/internal-set-app-type.md +++ b/docs/c-runtime-library/internal-set-app-type.md @@ -1,14 +1,13 @@ --- -description: "Learn more about: __set_app_type" title: "__set_app_type" -ms.date: "11/04/2016" +description: "Learn more about: __set_app_type" +ms.date: 11/04/2016 api_name: ["__set_app_type", "_set_app_type"] api_location: ["msvcr90.dll", "msvcr100.dll", "msvcr110.dll", "msvcr80.dll", "msvcrt.dll", "msvcr120.dll", "msvcr110_clr0400.dll", "api-ms-win-crt-runtime-l1-1-0.dll"] api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["__set_app_type"] helpviewer_keywords: ["__set_app_type"] -ms.assetid: f0ac0f4d-70e6-4e96-9e43-eb9d1515490c --- # `__set_app_type` diff --git a/docs/c-runtime-library/reference/uncaught-exception.md b/docs/c-runtime-library/reference/uncaught-exception.md index 7c560840fe4..9cb0108509d 100644 --- a/docs/c-runtime-library/reference/uncaught-exception.md +++ b/docs/c-runtime-library/reference/uncaught-exception.md @@ -1,14 +1,13 @@ --- -description: "Learn more about: __uncaught_exception" title: "__uncaught_exception" -ms.date: "1/14/2021" +description: "Learn more about: __uncaught_exception" +ms.date: 1/14/2021 api_name: ["__uncaught_exception"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"] api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["EH/__uncaught_exception"] helpviewer_keywords: ["__uncaught_exception"] -ms.assetid: 4d9b75c6-c9c7-4876-b761-ea9ab1925e96 --- # `__uncaught_exception` diff --git a/docs/c-runtime-library/setusermatherr.md b/docs/c-runtime-library/setusermatherr.md index 8cdb716815f..b63946d98ec 100644 --- a/docs/c-runtime-library/setusermatherr.md +++ b/docs/c-runtime-library/setusermatherr.md @@ -1,14 +1,13 @@ --- -description: "Learn more about: __setusermatherr" title: "__setusermatherr" -ms.date: "11/04/2016" +description: "Learn more about: __setusermatherr" +ms.date: 11/04/2016 api_name: ["__setusermatherr"] api_location: ["msvcr80.dll", "msvcr90.dll", "msvcrt.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr100.dll", "api-ms-win-crt-math-l1-1-0.dll"] api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["__setusermatherr"] helpviewer_keywords: ["__setusermatherr"] -ms.assetid: f306818d-381a-4d68-8739-71b92bacb5ea --- # `__setusermatherr` diff --git a/docs/cppcx/platform-arrayreference-class.md b/docs/cppcx/platform-arrayreference-class.md index 86f17861e57..7925842befc 100644 --- a/docs/cppcx/platform-arrayreference-class.md +++ b/docs/cppcx/platform-arrayreference-class.md @@ -1,11 +1,10 @@ --- -description: "Learn more about: Platform::ArrayReference Class" title: "Platform::ArrayReference Class" -ms.date: "10/16/2019" +description: "Learn more about: Platform::ArrayReference Class" +ms.date: 10/16/2019 ms.topic: "reference" f1_keywords: ["VCCORLIB/Platform::ArrayReference::ArrayReference"] helpviewer_keywords: ["Platform::ArrayReference Class"] -ms.assetid: 9ab3b15e-8a60-4600-8fcb-7d6c86284f4b --- # Platform::ArrayReference Class diff --git a/docs/cppcx/platform-metadata-flagsattribute-attribute.md b/docs/cppcx/platform-metadata-flagsattribute-attribute.md index b37eaadcc39..ec334277811 100644 --- a/docs/cppcx/platform-metadata-flagsattribute-attribute.md +++ b/docs/cppcx/platform-metadata-flagsattribute-attribute.md @@ -1,11 +1,10 @@ --- -description: "Learn more about: Platform::Metadata::FlagsAttribute Attribute" title: "Platform::Metadata::FlagsAttribute Attribute" -ms.date: "12/30/2016" +description: "Learn more about: Platform::Metadata::FlagsAttribute Attribute" +ms.date: 12/30/2016 ms.topic: "reference" f1_keywords: ["VCCORLIB/Platform::Metadata::FlagsAttribute"] helpviewer_keywords: ["Platform::Metadata::FlagsAttribute Attribute"] -ms.assetid: 56f4a191-cc81-4742-aff8-bd2219c0735c --- # Platform::Metadata::FlagsAttribute Attribute diff --git a/docs/parallel/concrt/reference/event-class.md b/docs/parallel/concrt/reference/event-class.md index 5e54b099272..0be9869316a 100644 --- a/docs/parallel/concrt/reference/event-class.md +++ b/docs/parallel/concrt/reference/event-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: event Class" title: "event Class" -ms.date: "11/04/2016" +description: "Learn more about: event Class" +ms.date: 11/04/2016 f1_keywords: ["CONCRT/concurrency::event", "CONCRT/concurrency::event::reset", "CONCRT/concurrency::event::set", "CONCRT/concurrency::event::wait", "CONCRT/concurrency::event::wait_for_multiple", "CONCRT/concurrency::event::timeout_infinite"] helpviewer_keywords: ["event class"] -ms.assetid: fba35a53-6568-4bfa-9aaf-07c0928cf73d --- # event Class From 9b148297b02e0924b942cd9e85234114a0fded7f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 19 Aug 2025 23:31:14 +0800 Subject: [PATCH 1483/2255] Add blockquotes for error messages in range [C3421, C3480] --- docs/error-messages/compiler-errors-2/compiler-error-c3421.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3446.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3450.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3451.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3452.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3453.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3454.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3455.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3456.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3457.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3458.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3459.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3460.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3461.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3462.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3463.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3464.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3465.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3466.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3467.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3468.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3469.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3470.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3480.md | 2 +- 24 files changed, 24 insertions(+), 24 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3421.md b/docs/error-messages/compiler-errors-2/compiler-error-c3421.md index f80f790e6b6..e20123508d9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3421.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3421.md @@ -8,7 +8,7 @@ ms.assetid: b52050c6-17a4-424a-8894-337b0cec7010 --- # Compiler Error C3421 -'type' : you cannot call the finalizer for this class as it is either inaccessible or it does not exist +> 'type' : you cannot call the finalizer for this class as it is either inaccessible or it does not exist A finalizer is implicitly private, so it cannot be called from outside its enclosing type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3446.md b/docs/error-messages/compiler-errors-2/compiler-error-c3446.md index 0a6ae8b11ee..d8d09f1ec60 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3446.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3446.md @@ -8,7 +8,7 @@ ms.assetid: 33064548-24e4-46f1-beb1-476e3c3b3fbf --- # Compiler Error C3446 ->'*class*': a default member initializer is not allowed for a member of a value class +> '*class*': a default member initializer is not allowed for a member of a value class In Visual Studio 2015 and earlier, the compiler permitted (but ignored) a default member initializer for a member of a value class. Default initialization of a value class always zero-initializes the members; a default constructor is not permitted. In Visual Studio 2017, default member initializers raise a compiler error, as shown in this example: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3450.md b/docs/error-messages/compiler-errors-2/compiler-error-c3450.md index ffdbc286a20..594dd016376 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3450.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3450.md @@ -8,7 +8,7 @@ ms.assetid: 78892cf7-0b82-4589-90d0-e06666247003 --- # Compiler Error C3450 -'type': not an attribute; cannot specify [System::AttributeUsageAttribute] or [Windows::Foundation::Metadata::AttributeUsageAttribute] +> 'type': not an attribute; cannot specify [System::AttributeUsageAttribute] or [Windows::Foundation::Metadata::AttributeUsageAttribute] A user-defined managed attribute must inherit from . A Windows Runtime attribute must be defined in the `Windows::Foundation::Metadata` namespace. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3451.md b/docs/error-messages/compiler-errors-2/compiler-error-c3451.md index 6e7e9dbe75e..e69f0fbcf79 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3451.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3451.md @@ -8,7 +8,7 @@ ms.assetid: a4897a69-e3e7-40bb-bb1c-598644904012 --- # Compiler Error C3451 -'attribute': cannot apply unmanaged attribute to 'type' +> 'attribute': cannot apply unmanaged attribute to 'type' A C++ attribute cannot be applied to a CLR type. See [C++ Attributes Reference](../../windows/attributes/attributes-alphabetical-reference.md) for more information. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3452.md b/docs/error-messages/compiler-errors-2/compiler-error-c3452.md index b40ab656fc2..68161f69e8c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3452.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3452.md @@ -8,7 +8,7 @@ ms.assetid: e5293dcf-cb70-4133-ae2a-0bb496950ba0 --- # Compiler Error C3452 -list argument member not constant +> list argument member not constant An argument was passed to an attribute that expected a constant, a value that can be evaluated at compile time. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3453.md b/docs/error-messages/compiler-errors-2/compiler-error-c3453.md index edd640d730a..f22bddca964 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3453.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3453.md @@ -8,7 +8,7 @@ ms.assetid: dbefdbcf-f697-4239-b7a5-1d99b85e9e7f --- # Compiler Error C3453 -'attribute': attribute not applied because qualifier 'assembly' did not match +> 'attribute': attribute not applied because qualifier 'assembly' did not match Assembly or module level attributes can only be specified as stand-alone instructions. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3454.md b/docs/error-messages/compiler-errors-2/compiler-error-c3454.md index f051c32753f..5812da5a58a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3454.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3454.md @@ -8,7 +8,7 @@ ms.assetid: dc4e6d57-5b4d-4114-8d6f-22f9ae62925b --- # Compiler Error C3454 -[attribute] not allowed on class declaration +> [attribute] not allowed on class declaration A class must be defined for it to be an attribute. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3455.md b/docs/error-messages/compiler-errors-2/compiler-error-c3455.md index f32ad44b44c..55e237683c3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3455.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3455.md @@ -8,7 +8,7 @@ ms.assetid: 218e5cfe-5391-4eeb-81c2-85c47e3a6cd2 --- # Compiler Error C3455 -'attribute': none of the attribute constructors matched the arguments +> 'attribute': none of the attribute constructors matched the arguments An invalid value was used to declare an attribute. See [attribute](../../windows/attributes/attribute.md) for more information. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3456.md b/docs/error-messages/compiler-errors-2/compiler-error-c3456.md index 73d326827fd..613e6e3d74d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3456.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3456.md @@ -8,7 +8,7 @@ ms.assetid: 9f781919-aaf2-4725-94a4-44a0b80cc64a --- # Compiler Error C3456 -[source_annotation_attribute] not allowed on managed or WinRT class declaration +> [source_annotation_attribute] not allowed on managed or WinRT class declaration source_annotation_attribute is used to define custom attributes to be used by code analysis. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3457.md b/docs/error-messages/compiler-errors-2/compiler-error-c3457.md index 4b97bea6db5..2c35ac62ecb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3457.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3457.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C3457"] --- # Compiler Error C3457 -'attribute': attribute does not support unnamed arguments +> 'attribute': attribute does not support unnamed arguments Source annotation attributes, unlike CLR custom attribute or compiler attributes, only support named arguments. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3458.md b/docs/error-messages/compiler-errors-2/compiler-error-c3458.md index 345783c0e18..582fbd665bc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3458.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3458.md @@ -8,7 +8,7 @@ ms.assetid: 940202fd-8dcc-4042-9c96-3f9e9127d2f1 --- # Compiler Error C3458 -'attribute1': attribute 'attribute2' already specified for 'construct' +> 'attribute1': attribute 'attribute2' already specified for 'construct' Two attributes that are mutually exclusive were specified for the same construct. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3459.md b/docs/error-messages/compiler-errors-2/compiler-error-c3459.md index 98298a38e28..ede887604c2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3459.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3459.md @@ -8,7 +8,7 @@ ms.assetid: 3d290a20-d313-4c07-9bd8-c5c159cb169f --- # Compiler Error C3459 -'attribute': attribute allowed only on class indexer (default indexed property) +> 'attribute': attribute allowed only on class indexer (default indexed property) An attribute that is designed to be applied to a class indexer property was used incorrectly. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3460.md b/docs/error-messages/compiler-errors-2/compiler-error-c3460.md index 58c67af4f7f..4cda0e3dd32 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3460.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3460.md @@ -8,7 +8,7 @@ ms.assetid: adbf8775-10ca-4654-acdf-58dd765351cd --- # Compiler Error C3460 -'type': only a user-defined type can be forwarded +> 'type': only a user-defined type can be forwarded For more information, see [Type Forwarding (C++/CLI)](../../extensions/type-forwarding-cpp-cli.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3461.md b/docs/error-messages/compiler-errors-2/compiler-error-c3461.md index 4c45c0a6eac..8da9d17dda1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3461.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3461.md @@ -8,7 +8,7 @@ ms.assetid: bd66833a-545d-445a-bdfe-dee771a450a4 --- # Compiler Error C3461 -'type': only a managed type can be forwarded +> 'type': only a managed type can be forwarded Type forwarding can only occur on CLR types. See [Classes and Structs](../../extensions/classes-and-structs-cpp-component-extensions.md) for more information. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3462.md b/docs/error-messages/compiler-errors-2/compiler-error-c3462.md index 1711df90e85..91ce5a45bda 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3462.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3462.md @@ -8,7 +8,7 @@ ms.assetid: 56b75f35-9fad-42d9-a969-eeca5d709bec --- # Compiler Error C3462 -'type': only an imported type can be forwarded +> 'type': only an imported type can be forwarded The TypeForwardedTo attribute must be applied to a type in referenced metadata. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3463.md b/docs/error-messages/compiler-errors-2/compiler-error-c3463.md index 96fbcf90c51..f209848268b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3463.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3463.md @@ -8,7 +8,7 @@ ms.assetid: 153efcc0-085c-4615-84ea-d22942618bdf --- # Compiler Error C3463 -'type': type not allowed in attribute 'implements' +> 'type': type not allowed in attribute 'implements' An invalid type was passed to the [implements](../../windows/attributes/implements-cpp.md) attribute. For example, you can pass an interface to `implements`, but you cannot pass a pointer to an interface. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3464.md b/docs/error-messages/compiler-errors-2/compiler-error-c3464.md index 4def91d2596..663e5dca049 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3464.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3464.md @@ -8,7 +8,7 @@ ms.assetid: 0ede05dc-4486-4921-8e8c-78ab5a2e09c5 --- # Compiler Error C3464 -'type' a nested type cannot be forwarded +> 'type' a nested type cannot be forwarded Type forwarding does not work on nested types. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3465.md b/docs/error-messages/compiler-errors-2/compiler-error-c3465.md index 453ced5d660..8e0d41e10a4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3465.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3465.md @@ -8,7 +8,7 @@ ms.assetid: aeb815e5-b3fc-4525-afe2-d738e9321df1 --- # Compiler Error C3465 -to use type 'type' you must reference the assembly 'assembly' +> to use type 'type' you must reference the assembly 'assembly' Type forwarding will work for a client application until you recompile the client. When you recompile, you will need a reference for every assembly containing the definition of a type used in your client application. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3466.md b/docs/error-messages/compiler-errors-2/compiler-error-c3466.md index 2f1b223aa91..faf02207e27 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3466.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3466.md @@ -8,7 +8,7 @@ ms.assetid: 69a877d9-a749-474b-bfc3-8d3fd53ba8fd --- # Compiler Error C3466 -'type' : a specialization of a generic class cannot be forwarded +> 'type' : a specialization of a generic class cannot be forwarded You cannot use type forwarding on a specialization of a generic class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3467.md b/docs/error-messages/compiler-errors-2/compiler-error-c3467.md index 05af0ad696d..ab6612626f7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3467.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3467.md @@ -8,7 +8,7 @@ ms.assetid: e2b844d0-4920-412f-99fd-cd8051c4aa41 --- # Compiler Error C3467 -'type' : this type has already been forwarded +> 'type' : this type has already been forwarded The compiler found more than one forward type declaration for the same type. Only one declaration per type is allowed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3468.md b/docs/error-messages/compiler-errors-2/compiler-error-c3468.md index 62e82fd9136..be90bee5ab1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3468.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3468.md @@ -8,7 +8,7 @@ ms.assetid: cfd320db-2f6e-4e0d-ba02-e79ece87e1e0 --- # Compiler Error C3468 -'type' : you can only forward a type to an assembly: +> 'type' : you can only forward a type to an assembly: '`file`' is not an assembly diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3469.md b/docs/error-messages/compiler-errors-2/compiler-error-c3469.md index e45fb32a382..790b564a839 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3469.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3469.md @@ -8,7 +8,7 @@ ms.assetid: e23b0e5c-c704-4e67-a868-bf02c2055d85 --- # Compiler Error C3469 -'type' : a generic class cannot be forwarded +> 'type' : a generic class cannot be forwarded You cannot use type forwarding on a generic class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3470.md b/docs/error-messages/compiler-errors-2/compiler-error-c3470.md index a487c4e889b..758f0fd8adc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3470.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3470.md @@ -8,7 +8,7 @@ ms.assetid: 170c7a9d-214d-41b1-8f15-d4a4fc38aaa5 --- # Compiler Error C3470 -'type' : a class cannot have both an indexer (default indexed property) and an operator[] +> 'type' : a class cannot have both an indexer (default indexed property) and an operator[] A type cannot define both a default indexer and an operator[]. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3480.md b/docs/error-messages/compiler-errors-2/compiler-error-c3480.md index 261faca8ab3..c970a90b76f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3480.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3480.md @@ -8,7 +8,7 @@ ms.assetid: 7b2e055a-9604-4d13-861b-b38bda1a6940 --- # Compiler Error C3480 -'var': a lambda capture variable must be from an enclosing function scope +> 'var': a lambda capture variable must be from an enclosing function scope The lambda capture variable is not from an enclosing function scope. From ce25a975f76d73363cf6e924a32666b9b9f35ab3 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 19 Aug 2025 23:37:34 +0800 Subject: [PATCH 1484/2255] Add "Remarks" and "Example" headings for error references in range [C3421, C3480] --- docs/error-messages/compiler-errors-2/compiler-error-c3421.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3445.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3446.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3450.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3451.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3452.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3453.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3454.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3455.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3456.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3457.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3458.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3459.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3460.md | 4 +++- docs/error-messages/compiler-errors-2/compiler-error-c3461.md | 4 +++- docs/error-messages/compiler-errors-2/compiler-error-c3462.md | 4 +++- docs/error-messages/compiler-errors-2/compiler-error-c3463.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3464.md | 4 +++- docs/error-messages/compiler-errors-2/compiler-error-c3465.md | 4 +++- docs/error-messages/compiler-errors-2/compiler-error-c3466.md | 4 +++- docs/error-messages/compiler-errors-2/compiler-error-c3467.md | 4 +++- docs/error-messages/compiler-errors-2/compiler-error-c3468.md | 4 +++- docs/error-messages/compiler-errors-2/compiler-error-c3469.md | 4 +++- docs/error-messages/compiler-errors-2/compiler-error-c3470.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3480.md | 4 +++- 25 files changed, 60 insertions(+), 10 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3421.md b/docs/error-messages/compiler-errors-2/compiler-error-c3421.md index e20123508d9..af2fef64384 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3421.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3421.md @@ -10,6 +10,8 @@ ms.assetid: b52050c6-17a4-424a-8894-337b0cec7010 > 'type' : you cannot call the finalizer for this class as it is either inaccessible or it does not exist +## Remarks + A finalizer is implicitly private, so it cannot be called from outside its enclosing type. For more information, see [Destructors and finalizers in How to: Define and consume classes and structs (C++/CLI)](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Destructors_and_finalizers). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3445.md b/docs/error-messages/compiler-errors-2/compiler-error-c3445.md index 3fc2bcb631b..4628a74f9f5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3445.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3445.md @@ -10,6 +10,8 @@ ms.assetid: 0d272bfc-136b-4025-a9ba-5e4eea5f8215 > copy-list-initialization of '*type*' cannot use an explicit constructor +## Remarks + According to the ISO C++17 standard, the compiler is required to consider an explicit constructor for overload resolution in copy-list-initialization, but must raise an error if that overload is actually chosen. Starting in Visual Studio 2017, the compiler finds errors related to object creation by using an initializer list that were not found by Visual Studio 2015. These errors could lead to crashes or undefined behavior at runtime. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3446.md b/docs/error-messages/compiler-errors-2/compiler-error-c3446.md index d8d09f1ec60..0b2121841b3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3446.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3446.md @@ -10,6 +10,8 @@ ms.assetid: 33064548-24e4-46f1-beb1-476e3c3b3fbf > '*class*': a default member initializer is not allowed for a member of a value class +## Remarks + In Visual Studio 2015 and earlier, the compiler permitted (but ignored) a default member initializer for a member of a value class. Default initialization of a value class always zero-initializes the members; a default constructor is not permitted. In Visual Studio 2017, default member initializers raise a compiler error, as shown in this example: ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3450.md b/docs/error-messages/compiler-errors-2/compiler-error-c3450.md index 594dd016376..ac97c365ed1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3450.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3450.md @@ -10,6 +10,8 @@ ms.assetid: 78892cf7-0b82-4589-90d0-e06666247003 > 'type': not an attribute; cannot specify [System::AttributeUsageAttribute] or [Windows::Foundation::Metadata::AttributeUsageAttribute] +## Remarks + A user-defined managed attribute must inherit from . A Windows Runtime attribute must be defined in the `Windows::Foundation::Metadata` namespace. For more information, see [User-Defined Attributes](../../extensions/user-defined-attributes-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3451.md b/docs/error-messages/compiler-errors-2/compiler-error-c3451.md index e69f0fbcf79..82133356255 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3451.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3451.md @@ -10,6 +10,8 @@ ms.assetid: a4897a69-e3e7-40bb-bb1c-598644904012 > 'attribute': cannot apply unmanaged attribute to 'type' +## Remarks + A C++ attribute cannot be applied to a CLR type. See [C++ Attributes Reference](../../windows/attributes/attributes-alphabetical-reference.md) for more information. For more information, see [User-Defined Attributes](../../extensions/user-defined-attributes-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3452.md b/docs/error-messages/compiler-errors-2/compiler-error-c3452.md index 68161f69e8c..fadee495aa2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3452.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3452.md @@ -10,6 +10,8 @@ ms.assetid: e5293dcf-cb70-4133-ae2a-0bb496950ba0 > list argument member not constant +## Remarks + An argument was passed to an attribute that expected a constant, a value that can be evaluated at compile time. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3453.md b/docs/error-messages/compiler-errors-2/compiler-error-c3453.md index f22bddca964..a63ec871554 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3453.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3453.md @@ -10,6 +10,8 @@ ms.assetid: dbefdbcf-f697-4239-b7a5-1d99b85e9e7f > 'attribute': attribute not applied because qualifier 'assembly' did not match +## Remarks + Assembly or module level attributes can only be specified as stand-alone instructions. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3454.md b/docs/error-messages/compiler-errors-2/compiler-error-c3454.md index 5812da5a58a..f32b69c58e6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3454.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3454.md @@ -10,6 +10,8 @@ ms.assetid: dc4e6d57-5b4d-4114-8d6f-22f9ae62925b > [attribute] not allowed on class declaration +## Remarks + A class must be defined for it to be an attribute. For more information, see [attribute](../../windows/attributes/attribute.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3455.md b/docs/error-messages/compiler-errors-2/compiler-error-c3455.md index 55e237683c3..47c3ef98d16 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3455.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3455.md @@ -10,6 +10,8 @@ ms.assetid: 218e5cfe-5391-4eeb-81c2-85c47e3a6cd2 > 'attribute': none of the attribute constructors matched the arguments +## Remarks + An invalid value was used to declare an attribute. See [attribute](../../windows/attributes/attribute.md) for more information. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3456.md b/docs/error-messages/compiler-errors-2/compiler-error-c3456.md index 613e6e3d74d..98b8c04eb83 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3456.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3456.md @@ -10,6 +10,8 @@ ms.assetid: 9f781919-aaf2-4725-94a4-44a0b80cc64a > [source_annotation_attribute] not allowed on managed or WinRT class declaration +## Remarks + source_annotation_attribute is used to define custom attributes to be used by code analysis. These custom attributes are only useful if there is a corresponding plugin that understands the attribute. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3457.md b/docs/error-messages/compiler-errors-2/compiler-error-c3457.md index 2c35ac62ecb..fbf417ec4cd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3457.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3457.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C3457"] > 'attribute': attribute does not support unnamed arguments +## Remarks + Source annotation attributes, unlike CLR custom attribute or compiler attributes, only support named arguments. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3458.md b/docs/error-messages/compiler-errors-2/compiler-error-c3458.md index 582fbd665bc..4af142f2f4b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3458.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3458.md @@ -10,6 +10,8 @@ ms.assetid: 940202fd-8dcc-4042-9c96-3f9e9127d2f1 > 'attribute1': attribute 'attribute2' already specified for 'construct' +## Remarks + Two attributes that are mutually exclusive were specified for the same construct. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3459.md b/docs/error-messages/compiler-errors-2/compiler-error-c3459.md index ede887604c2..628f9154393 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3459.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3459.md @@ -10,6 +10,8 @@ ms.assetid: 3d290a20-d313-4c07-9bd8-c5c159cb169f > 'attribute': attribute allowed only on class indexer (default indexed property) +## Remarks + An attribute that is designed to be applied to a class indexer property was used incorrectly. For more information, see [How to: Use Properties in C++/CLI](../../dotnet/how-to-use-properties-in-cpp-cli.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3460.md b/docs/error-messages/compiler-errors-2/compiler-error-c3460.md index 4cda0e3dd32..9efb6ceb0d9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3460.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3460.md @@ -10,9 +10,11 @@ ms.assetid: adbf8775-10ca-4654-acdf-58dd765351cd > 'type': only a user-defined type can be forwarded +## Remarks + For more information, see [Type Forwarding (C++/CLI)](../../extensions/type-forwarding-cpp-cli.md). -## Examples +## Example The following sample creates a component. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3461.md b/docs/error-messages/compiler-errors-2/compiler-error-c3461.md index 8da9d17dda1..15a9db450f2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3461.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3461.md @@ -10,11 +10,13 @@ ms.assetid: bd66833a-545d-445a-bdfe-dee771a450a4 > 'type': only a managed type can be forwarded +## Remarks + Type forwarding can only occur on CLR types. See [Classes and Structs](../../extensions/classes-and-structs-cpp-component-extensions.md) for more information. For more information, see [Type Forwarding (C++/CLI)](../../extensions/type-forwarding-cpp-cli.md). -## Examples +## Example The following sample creates a component. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3462.md b/docs/error-messages/compiler-errors-2/compiler-error-c3462.md index 91ce5a45bda..fc70d1b34cd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3462.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3462.md @@ -10,11 +10,13 @@ ms.assetid: 56b75f35-9fad-42d9-a969-eeca5d709bec > 'type': only an imported type can be forwarded +## Remarks + The TypeForwardedTo attribute must be applied to a type in referenced metadata. For more information, see [Type Forwarding (C++/CLI)](../../extensions/type-forwarding-cpp-cli.md). -## Examples +## Example The following sample creates a component. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3463.md b/docs/error-messages/compiler-errors-2/compiler-error-c3463.md index f209848268b..89e1cdb1475 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3463.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3463.md @@ -10,6 +10,8 @@ ms.assetid: 153efcc0-085c-4615-84ea-d22942618bdf > 'type': type not allowed in attribute 'implements' +## Remarks + An invalid type was passed to the [implements](../../windows/attributes/implements-cpp.md) attribute. For example, you can pass an interface to `implements`, but you cannot pass a pointer to an interface. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3464.md b/docs/error-messages/compiler-errors-2/compiler-error-c3464.md index 663e5dca049..2bbc916577c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3464.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3464.md @@ -10,11 +10,13 @@ ms.assetid: 0ede05dc-4486-4921-8e8c-78ab5a2e09c5 > 'type' a nested type cannot be forwarded +## Remarks + Type forwarding does not work on nested types. For more information, see [Type Forwarding (C++/CLI)](../../extensions/type-forwarding-cpp-cli.md). -## Examples +## Example The following sample creates a component. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3465.md b/docs/error-messages/compiler-errors-2/compiler-error-c3465.md index 8e0d41e10a4..ee62fb46523 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3465.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3465.md @@ -10,11 +10,13 @@ ms.assetid: aeb815e5-b3fc-4525-afe2-d738e9321df1 > to use type 'type' you must reference the assembly 'assembly' +## Remarks + Type forwarding will work for a client application until you recompile the client. When you recompile, you will need a reference for every assembly containing the definition of a type used in your client application. For more information, see [Type Forwarding (C++/CLI)](../../extensions/type-forwarding-cpp-cli.md). -## Examples +## Example The following sample builds an assembly that contains the new location of a type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3466.md b/docs/error-messages/compiler-errors-2/compiler-error-c3466.md index faf02207e27..388a253eb4a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3466.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3466.md @@ -10,11 +10,13 @@ ms.assetid: 69a877d9-a749-474b-bfc3-8d3fd53ba8fd > 'type' : a specialization of a generic class cannot be forwarded +## Remarks + You cannot use type forwarding on a specialization of a generic class. For more information, see [Type Forwarding (C++/CLI)](../../extensions/type-forwarding-cpp-cli.md). -## Examples +## Example The following sample creates a component. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3467.md b/docs/error-messages/compiler-errors-2/compiler-error-c3467.md index ab6612626f7..4cb0758565d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3467.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3467.md @@ -10,11 +10,13 @@ ms.assetid: e2b844d0-4920-412f-99fd-cd8051c4aa41 > 'type' : this type has already been forwarded +## Remarks + The compiler found more than one forward type declaration for the same type. Only one declaration per type is allowed. For more information, see [Type Forwarding (C++/CLI)](../../extensions/type-forwarding-cpp-cli.md). -## Examples +## Example The following sample creates a component. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3468.md b/docs/error-messages/compiler-errors-2/compiler-error-c3468.md index be90bee5ab1..0a53403737b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3468.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3468.md @@ -10,13 +10,15 @@ ms.assetid: cfd320db-2f6e-4e0d-ba02-e79ece87e1e0 > 'type' : you can only forward a type to an assembly: +## Remarks + '`file`' is not an assembly Only types in an assembly can be forwarded. For more information, see [Type Forwarding (C++/CLI)](../../extensions/type-forwarding-cpp-cli.md). -## Examples +## Example The following sample creates a module. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3469.md b/docs/error-messages/compiler-errors-2/compiler-error-c3469.md index 790b564a839..7591100ec63 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3469.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3469.md @@ -10,11 +10,13 @@ ms.assetid: e23b0e5c-c704-4e67-a868-bf02c2055d85 > 'type' : a generic class cannot be forwarded +## Remarks + You cannot use type forwarding on a generic class. For more information, see [Type Forwarding (C++/CLI)](../../extensions/type-forwarding-cpp-cli.md). -## Examples +## Example The following sample creates a component. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3470.md b/docs/error-messages/compiler-errors-2/compiler-error-c3470.md index 758f0fd8adc..fabcbfa4ea5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3470.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3470.md @@ -10,6 +10,8 @@ ms.assetid: 170c7a9d-214d-41b1-8f15-d4a4fc38aaa5 > 'type' : a class cannot have both an indexer (default indexed property) and an operator[] +## Remarks + A type cannot define both a default indexer and an operator[]. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3480.md b/docs/error-messages/compiler-errors-2/compiler-error-c3480.md index c970a90b76f..08162d54dfe 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3480.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3480.md @@ -10,13 +10,15 @@ ms.assetid: 7b2e055a-9604-4d13-861b-b38bda1a6940 > 'var': a lambda capture variable must be from an enclosing function scope +## Remarks + The lambda capture variable is not from an enclosing function scope. ### To correct this error - Remove the variable from the capture list of the lambda expression. -## Examples +## Example The following example generates C3480 because the variable `global` is not from an enclosing function scope: From 186328912abf9c58458d41584fc570b0eb8aac05 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 19 Aug 2025 23:39:21 +0800 Subject: [PATCH 1485/2255] Replace term "sample" with "example" for error references in range [C3421, C3480] --- .../compiler-errors-2/compiler-error-c3421.md | 2 +- .../compiler-errors-2/compiler-error-c3445.md | 2 +- .../compiler-errors-2/compiler-error-c3446.md | 2 +- .../compiler-errors-2/compiler-error-c3450.md | 2 +- .../compiler-errors-2/compiler-error-c3451.md | 2 +- .../compiler-errors-2/compiler-error-c3452.md | 2 +- .../compiler-errors-2/compiler-error-c3453.md | 2 +- .../compiler-errors-2/compiler-error-c3454.md | 2 +- .../compiler-errors-2/compiler-error-c3455.md | 2 +- .../compiler-errors-2/compiler-error-c3457.md | 2 +- .../compiler-errors-2/compiler-error-c3458.md | 2 +- .../compiler-errors-2/compiler-error-c3459.md | 2 +- .../compiler-errors-2/compiler-error-c3460.md | 4 ++-- .../compiler-errors-2/compiler-error-c3461.md | 4 ++-- .../compiler-errors-2/compiler-error-c3462.md | 4 ++-- .../compiler-errors-2/compiler-error-c3463.md | 2 +- .../compiler-errors-2/compiler-error-c3464.md | 4 ++-- .../compiler-errors-2/compiler-error-c3465.md | 6 +++--- .../compiler-errors-2/compiler-error-c3466.md | 4 ++-- .../compiler-errors-2/compiler-error-c3467.md | 4 ++-- .../compiler-errors-2/compiler-error-c3468.md | 4 ++-- .../compiler-errors-2/compiler-error-c3469.md | 4 ++-- .../compiler-errors-2/compiler-error-c3470.md | 2 +- 23 files changed, 33 insertions(+), 33 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3421.md b/docs/error-messages/compiler-errors-2/compiler-error-c3421.md index af2fef64384..cdc579a65fb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3421.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3421.md @@ -18,7 +18,7 @@ For more information, see [Destructors and finalizers in How to: Define and cons ## Example -The following sample generates C3421. +The following example generates C3421. ```cpp // C3421.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3445.md b/docs/error-messages/compiler-errors-2/compiler-error-c3445.md index 4628a74f9f5..c797df50683 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3445.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3445.md @@ -18,7 +18,7 @@ Starting in Visual Studio 2017, the compiler finds errors related to object crea ## Example -The following sample generates C3445. +The following example generates C3445. ```cpp // C3445.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3446.md b/docs/error-messages/compiler-errors-2/compiler-error-c3446.md index 0b2121841b3..17008c480fe 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3446.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3446.md @@ -16,7 +16,7 @@ In Visual Studio 2015 and earlier, the compiler permitted (but ignored) a defaul ## Example -The following sample generates C3446 in Visual Studio 2017 and later: +The following example generates C3446 in Visual Studio 2017 and later: ```cpp // C3446.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3450.md b/docs/error-messages/compiler-errors-2/compiler-error-c3450.md index ac97c365ed1..3c845a45509 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3450.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3450.md @@ -18,7 +18,7 @@ For more information, see [User-Defined Attributes](../../extensions/user-define ## Example -The following sample generates C3450 and shows how to fix it. +The following example generates C3450 and shows how to fix it. ```cpp // C3450.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3451.md b/docs/error-messages/compiler-errors-2/compiler-error-c3451.md index 82133356255..cf4730e1d1b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3451.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3451.md @@ -20,7 +20,7 @@ This error can be generated as a result of compiler conformance work that was do ## Example -The following sample generates C3451. +The following example generates C3451. ```cpp // C3451.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3452.md b/docs/error-messages/compiler-errors-2/compiler-error-c3452.md index fadee495aa2..3a21f15cdd1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3452.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3452.md @@ -16,7 +16,7 @@ An argument was passed to an attribute that expected a constant, a value that ca ## Example -The following sample generates C3452. +The following example generates C3452. ```cpp // C3452.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3453.md b/docs/error-messages/compiler-errors-2/compiler-error-c3453.md index a63ec871554..db00cabe183 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3453.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3453.md @@ -16,7 +16,7 @@ Assembly or module level attributes can only be specified as stand-alone instruc ## Example -The following sample generates C3453. +The following example generates C3453. ```cpp // C3453.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3454.md b/docs/error-messages/compiler-errors-2/compiler-error-c3454.md index f32b69c58e6..d9d08cf5c56 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3454.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3454.md @@ -18,7 +18,7 @@ For more information, see [attribute](../../windows/attributes/attribute.md). ## Example -The following sample generates C3454. +The following example generates C3454. ```cpp // C3454.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3455.md b/docs/error-messages/compiler-errors-2/compiler-error-c3455.md index 47c3ef98d16..13b86851c1a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3455.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3455.md @@ -16,7 +16,7 @@ An invalid value was used to declare an attribute. See [attribute](../../window ## Example -The following sample generates C3455. +The following example generates C3455. ```cpp // C3455.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3457.md b/docs/error-messages/compiler-errors-2/compiler-error-c3457.md index fbf417ec4cd..dc7ffe0c88b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3457.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3457.md @@ -15,7 +15,7 @@ Source annotation attributes, unlike CLR custom attribute or compiler attributes ## Example -The following sample generates C3457. +The following example generates C3457. ```cpp #include "SourceAnnotations.h" diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3458.md b/docs/error-messages/compiler-errors-2/compiler-error-c3458.md index 4af142f2f4b..91cb6118b64 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3458.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3458.md @@ -16,7 +16,7 @@ Two attributes that are mutually exclusive were specified for the same construct ## Example -The following sample generates C3458 +The following example generates C3458 ```cpp // C3458.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3459.md b/docs/error-messages/compiler-errors-2/compiler-error-c3459.md index 628f9154393..d0110668862 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3459.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3459.md @@ -18,7 +18,7 @@ For more information, see [How to: Use Properties in C++/CLI](../../dotnet/how-t ## Example -The following sample generates C3459. +The following example generates C3459. ```cpp // C3459.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3460.md b/docs/error-messages/compiler-errors-2/compiler-error-c3460.md index 9efb6ceb0d9..1529a7c7650 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3460.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3460.md @@ -16,7 +16,7 @@ For more information, see [Type Forwarding (C++/CLI)](../../extensions/type-forw ## Example -The following sample creates a component. +The following example creates a component. ```cpp // C3460.cpp @@ -24,7 +24,7 @@ The following sample creates a component. public ref class R {}; ``` -The following sample generates C3460. +The following example generates C3460. ```cpp // C3460_b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3461.md b/docs/error-messages/compiler-errors-2/compiler-error-c3461.md index 15a9db450f2..3cfda7fc45a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3461.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3461.md @@ -18,7 +18,7 @@ For more information, see [Type Forwarding (C++/CLI)](../../extensions/type-forw ## Example -The following sample creates a component. +The following example creates a component. ```cpp // C3461.cpp @@ -26,7 +26,7 @@ The following sample creates a component. public ref class R {}; ``` -The following sample generates C3461. +The following example generates C3461. ```cpp // C3461b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3462.md b/docs/error-messages/compiler-errors-2/compiler-error-c3462.md index fc70d1b34cd..342153306c5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3462.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3462.md @@ -18,7 +18,7 @@ For more information, see [Type Forwarding (C++/CLI)](../../extensions/type-forw ## Example -The following sample creates a component. +The following example creates a component. ```cpp // C3462.cpp @@ -26,7 +26,7 @@ The following sample creates a component. public ref class R {}; ``` -The following sample generates C3462. +The following example generates C3462. ```cpp // C3462b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3463.md b/docs/error-messages/compiler-errors-2/compiler-error-c3463.md index 89e1cdb1475..214d73195a0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3463.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3463.md @@ -16,7 +16,7 @@ An invalid type was passed to the [implements](../../windows/attributes/implemen ## Example -The following sample generates C3463. +The following example generates C3463. ```cpp // C3463.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3464.md b/docs/error-messages/compiler-errors-2/compiler-error-c3464.md index 2bbc916577c..2c69155da23 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3464.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3464.md @@ -18,7 +18,7 @@ For more information, see [Type Forwarding (C++/CLI)](../../extensions/type-forw ## Example -The following sample creates a component. +The following example creates a component. ```cpp // C3464.cpp @@ -29,7 +29,7 @@ public: }; ``` -The following sample generates C3464. +The following example generates C3464. ```cpp // C3464_b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3465.md b/docs/error-messages/compiler-errors-2/compiler-error-c3465.md index ee62fb46523..bd0a3590330 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3465.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3465.md @@ -18,7 +18,7 @@ For more information, see [Type Forwarding (C++/CLI)](../../extensions/type-forw ## Example -The following sample builds an assembly that contains the new location of a type. +The following example builds an assembly that contains the new location of a type. ```cpp // C3465.cpp @@ -29,7 +29,7 @@ public: }; ``` -The following sample builds an assembly that used to contain the definition of the type, but now contains forwarding syntax for the type. +The following example builds an assembly that used to contain the definition of the type, but now contains forwarding syntax for the type. ```cpp // C3465_b.cpp @@ -38,7 +38,7 @@ The following sample builds an assembly that used to contain the definition of t [ assembly:TypeForwardedTo(R::typeid) ]; ``` -The following sample generates C3465. +The following example generates C3465. ```cpp // C3465_c.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3466.md b/docs/error-messages/compiler-errors-2/compiler-error-c3466.md index 388a253eb4a..a9bbb5a9d88 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3466.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3466.md @@ -18,7 +18,7 @@ For more information, see [Type Forwarding (C++/CLI)](../../extensions/type-forw ## Example -The following sample creates a component. +The following example creates a component. ```cpp // C3466.cpp @@ -29,7 +29,7 @@ public ref class GR {}; public ref class GR2 {}; ``` -The following sample generates C3466. +The following example generates C3466. ```cpp // C3466_b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3467.md b/docs/error-messages/compiler-errors-2/compiler-error-c3467.md index 4cb0758565d..adc2cec0ed5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3467.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3467.md @@ -18,7 +18,7 @@ For more information, see [Type Forwarding (C++/CLI)](../../extensions/type-forw ## Example -The following sample creates a component. +The following example creates a component. ```cpp // C3467.cpp @@ -26,7 +26,7 @@ The following sample creates a component. public ref class R {}; ``` -The following sample generates C3467. +The following example generates C3467. ```cpp // C3467_b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3468.md b/docs/error-messages/compiler-errors-2/compiler-error-c3468.md index 0a53403737b..2b842a0fb0c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3468.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3468.md @@ -20,7 +20,7 @@ For more information, see [Type Forwarding (C++/CLI)](../../extensions/type-forw ## Example -The following sample creates a module. +The following example creates a module. ```cpp // C3468.cpp @@ -28,7 +28,7 @@ The following sample creates a module. public ref class R {}; ``` -The following sample generates C3468. +The following example generates C3468. ```cpp // C3468_b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3469.md b/docs/error-messages/compiler-errors-2/compiler-error-c3469.md index 7591100ec63..80e7a7bc068 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3469.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3469.md @@ -18,7 +18,7 @@ For more information, see [Type Forwarding (C++/CLI)](../../extensions/type-forw ## Example -The following sample creates a component. +The following example creates a component. ```cpp // C3469.cpp @@ -29,7 +29,7 @@ public ref class GR {}; public ref class GR2 {}; ``` -The following sample generates C3466. +The following example generates C3466. ```cpp // C3469_b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3470.md b/docs/error-messages/compiler-errors-2/compiler-error-c3470.md index fabcbfa4ea5..71f1d4cfed0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3470.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3470.md @@ -16,7 +16,7 @@ A type cannot define both a default indexer and an operator[]. ## Example -The following sample generates C3470 +The following example generates C3470 ```cpp // C3470.cpp From 2b2b997f1934fec245fbb9b62c71d104dc7a16d4 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 19 Aug 2025 23:43:31 +0800 Subject: [PATCH 1486/2255] Update metadata for error references in range [C3421, C3480] --- .../error-messages/compiler-errors-2/compiler-error-c3421.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3445.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3446.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3450.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3451.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3452.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3453.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3454.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3455.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3456.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3458.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3459.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3460.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3461.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3462.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3463.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3464.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3465.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3466.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3467.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3468.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3469.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3470.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3480.md | 5 ++--- 24 files changed, 48 insertions(+), 72 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3421.md b/docs/error-messages/compiler-errors-2/compiler-error-c3421.md index cdc579a65fb..d3c41e7bdab 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3421.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3421.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3421" title: "Compiler Error C3421" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3421" +ms.date: 11/04/2016 f1_keywords: ["C3421"] helpviewer_keywords: ["C3421"] -ms.assetid: b52050c6-17a4-424a-8894-337b0cec7010 --- # Compiler Error C3421 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3445.md b/docs/error-messages/compiler-errors-2/compiler-error-c3445.md index c797df50683..7add75b0312 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3445.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3445.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3445" title: "Compiler Error C3445" -ms.date: "04/10/2017" +description: "Learn more about: Compiler Error C3445" +ms.date: 04/10/2017 f1_keywords: ["C3445"] helpviewer_keywords: ["C3445"] -ms.assetid: 0d272bfc-136b-4025-a9ba-5e4eea5f8215 --- # Compiler Error C3445 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3446.md b/docs/error-messages/compiler-errors-2/compiler-error-c3446.md index 17008c480fe..46fe4603c2f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3446.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3446.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3446" title: "Compiler Error C3446" -ms.date: "07/21/2017" +description: "Learn more about: Compiler Error C3446" +ms.date: 07/21/2017 f1_keywords: ["C3446"] helpviewer_keywords: ["C3446"] -ms.assetid: 33064548-24e4-46f1-beb1-476e3c3b3fbf --- # Compiler Error C3446 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3450.md b/docs/error-messages/compiler-errors-2/compiler-error-c3450.md index 3c845a45509..1b8c1d6bf6f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3450.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3450.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3450" title: "Compiler Error C3450" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3450" +ms.date: 11/04/2016 f1_keywords: ["C3450"] helpviewer_keywords: ["C3450"] -ms.assetid: 78892cf7-0b82-4589-90d0-e06666247003 --- # Compiler Error C3450 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3451.md b/docs/error-messages/compiler-errors-2/compiler-error-c3451.md index cf4730e1d1b..17b42bf6a51 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3451.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3451.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3451" title: "Compiler Error C3451" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3451" +ms.date: 11/04/2016 f1_keywords: ["C3451"] helpviewer_keywords: ["C3451"] -ms.assetid: a4897a69-e3e7-40bb-bb1c-598644904012 --- # Compiler Error C3451 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3452.md b/docs/error-messages/compiler-errors-2/compiler-error-c3452.md index 3a21f15cdd1..4a112bc3935 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3452.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3452.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3452" title: "Compiler Error C3452" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3452" +ms.date: 11/04/2016 f1_keywords: ["C3452"] helpviewer_keywords: ["C3452"] -ms.assetid: e5293dcf-cb70-4133-ae2a-0bb496950ba0 --- # Compiler Error C3452 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3453.md b/docs/error-messages/compiler-errors-2/compiler-error-c3453.md index db00cabe183..d04287ade5b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3453.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3453.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3453" title: "Compiler Error C3453" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3453" +ms.date: 11/04/2016 f1_keywords: ["C3453"] helpviewer_keywords: ["C3453"] -ms.assetid: dbefdbcf-f697-4239-b7a5-1d99b85e9e7f --- # Compiler Error C3453 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3454.md b/docs/error-messages/compiler-errors-2/compiler-error-c3454.md index d9d08cf5c56..c7034d16637 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3454.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3454.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3454" title: "Compiler Error C3454" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3454" +ms.date: 11/04/2016 f1_keywords: ["C3454"] helpviewer_keywords: ["C3454"] -ms.assetid: dc4e6d57-5b4d-4114-8d6f-22f9ae62925b --- # Compiler Error C3454 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3455.md b/docs/error-messages/compiler-errors-2/compiler-error-c3455.md index 13b86851c1a..5cdd85744c9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3455.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3455.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3455" title: "Compiler Error C3455" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3455" +ms.date: 11/04/2016 f1_keywords: ["C3455"] helpviewer_keywords: ["C3455"] -ms.assetid: 218e5cfe-5391-4eeb-81c2-85c47e3a6cd2 --- # Compiler Error C3455 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3456.md b/docs/error-messages/compiler-errors-2/compiler-error-c3456.md index 98b8c04eb83..996bf27c057 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3456.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3456.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3456" title: "Compiler Error C3456" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3456" +ms.date: 11/04/2016 f1_keywords: ["C3456"] helpviewer_keywords: ["C3456"] -ms.assetid: 9f781919-aaf2-4725-94a4-44a0b80cc64a --- # Compiler Error C3456 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3458.md b/docs/error-messages/compiler-errors-2/compiler-error-c3458.md index 91cb6118b64..a6d8238079d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3458.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3458.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3458" title: "Compiler Error C3458" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3458" +ms.date: 11/04/2016 f1_keywords: ["C3458"] helpviewer_keywords: ["C3458"] -ms.assetid: 940202fd-8dcc-4042-9c96-3f9e9127d2f1 --- # Compiler Error C3458 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3459.md b/docs/error-messages/compiler-errors-2/compiler-error-c3459.md index d0110668862..4c8ad60d6f9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3459.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3459.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3459" title: "Compiler Error C3459" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3459" +ms.date: 11/04/2016 f1_keywords: ["C3459"] helpviewer_keywords: ["C3459"] -ms.assetid: 3d290a20-d313-4c07-9bd8-c5c159cb169f --- # Compiler Error C3459 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3460.md b/docs/error-messages/compiler-errors-2/compiler-error-c3460.md index 1529a7c7650..e002f487f9e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3460.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3460.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3460" title: "Compiler Error C3460" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3460" +ms.date: 11/04/2016 f1_keywords: ["C3460"] helpviewer_keywords: ["C3460"] -ms.assetid: adbf8775-10ca-4654-acdf-58dd765351cd --- # Compiler Error C3460 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3461.md b/docs/error-messages/compiler-errors-2/compiler-error-c3461.md index 3cfda7fc45a..9c801ba167e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3461.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3461.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3461" title: "Compiler Error C3461" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3461" +ms.date: 11/04/2016 f1_keywords: ["C3461"] helpviewer_keywords: ["C3461"] -ms.assetid: bd66833a-545d-445a-bdfe-dee771a450a4 --- # Compiler Error C3461 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3462.md b/docs/error-messages/compiler-errors-2/compiler-error-c3462.md index 342153306c5..1c48adb2f45 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3462.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3462.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3462" title: "Compiler Error C3462" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3462" +ms.date: 11/04/2016 f1_keywords: ["C3462"] helpviewer_keywords: ["C3462"] -ms.assetid: 56b75f35-9fad-42d9-a969-eeca5d709bec --- # Compiler Error C3462 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3463.md b/docs/error-messages/compiler-errors-2/compiler-error-c3463.md index 214d73195a0..e2b9d5fff23 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3463.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3463.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3463" title: "Compiler Error C3463" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3463" +ms.date: 11/04/2016 f1_keywords: ["C3463"] helpviewer_keywords: ["C3463"] -ms.assetid: 153efcc0-085c-4615-84ea-d22942618bdf --- # Compiler Error C3463 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3464.md b/docs/error-messages/compiler-errors-2/compiler-error-c3464.md index 2c69155da23..684c143ea61 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3464.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3464.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3464" title: "Compiler Error C3464" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3464" +ms.date: 11/04/2016 f1_keywords: ["C3464"] helpviewer_keywords: ["C3464"] -ms.assetid: 0ede05dc-4486-4921-8e8c-78ab5a2e09c5 --- # Compiler Error C3464 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3465.md b/docs/error-messages/compiler-errors-2/compiler-error-c3465.md index bd0a3590330..b49fc9e1f2e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3465.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3465.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3465" title: "Compiler Error C3465" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3465" +ms.date: 11/04/2016 f1_keywords: ["C3465"] helpviewer_keywords: ["C3465"] -ms.assetid: aeb815e5-b3fc-4525-afe2-d738e9321df1 --- # Compiler Error C3465 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3466.md b/docs/error-messages/compiler-errors-2/compiler-error-c3466.md index a9bbb5a9d88..9183287145d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3466.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3466.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3466" title: "Compiler Error C3466" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3466" +ms.date: 11/04/2016 f1_keywords: ["C3466"] helpviewer_keywords: ["C3466"] -ms.assetid: 69a877d9-a749-474b-bfc3-8d3fd53ba8fd --- # Compiler Error C3466 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3467.md b/docs/error-messages/compiler-errors-2/compiler-error-c3467.md index adc2cec0ed5..4b253247f2d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3467.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3467.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3467" title: "Compiler Error C3467" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3467" +ms.date: 11/04/2016 f1_keywords: ["C3467"] helpviewer_keywords: ["C3467"] -ms.assetid: e2b844d0-4920-412f-99fd-cd8051c4aa41 --- # Compiler Error C3467 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3468.md b/docs/error-messages/compiler-errors-2/compiler-error-c3468.md index 2b842a0fb0c..fcde4b999d6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3468.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3468.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3468" title: "Compiler Error C3468" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3468" +ms.date: 11/04/2016 f1_keywords: ["C3468"] helpviewer_keywords: ["C3468"] -ms.assetid: cfd320db-2f6e-4e0d-ba02-e79ece87e1e0 --- # Compiler Error C3468 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3469.md b/docs/error-messages/compiler-errors-2/compiler-error-c3469.md index 80e7a7bc068..3977e7f2c58 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3469.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3469.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3469" title: "Compiler Error C3469" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3469" +ms.date: 11/04/2016 f1_keywords: ["C3469"] helpviewer_keywords: ["C3469"] -ms.assetid: e23b0e5c-c704-4e67-a868-bf02c2055d85 --- # Compiler Error C3469 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3470.md b/docs/error-messages/compiler-errors-2/compiler-error-c3470.md index 71f1d4cfed0..ebbbfbe2096 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3470.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3470.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3470" title: "Compiler Error C3470" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3470" +ms.date: 11/04/2016 f1_keywords: ["C3470"] helpviewer_keywords: ["C3470"] -ms.assetid: 170c7a9d-214d-41b1-8f15-d4a4fc38aaa5 --- # Compiler Error C3470 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3480.md b/docs/error-messages/compiler-errors-2/compiler-error-c3480.md index 08162d54dfe..a032ea4e1b8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3480.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3480.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3480" title: "Compiler Error C3480" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3480" +ms.date: 11/04/2016 f1_keywords: ["C3480"] helpviewer_keywords: ["C3480"] -ms.assetid: 7b2e055a-9604-4d13-861b-b38bda1a6940 --- # Compiler Error C3480 From ac75298c1700358d71bfabb98993f2c8c97948ab Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 19 Aug 2025 18:09:05 -0700 Subject: [PATCH 1487/2255] add metdata to classify freshness tiers --- docs/docfx.json | 166 +++++++++++++++++++++++++++--------------------- 1 file changed, 92 insertions(+), 74 deletions(-) diff --git a/docs/docfx.json b/docs/docfx.json index 1621b18044d..1dd4d169a49 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -38,7 +38,7 @@ "externalReference": [], "globalMetadata": { "breadcrumb_path": "~/_breadcrumb/toc.yml", -  "uhfHeaderId": "MSDocsHeader-CPP", + "uhfHeaderId": "MSDocsHeader-CPP", "ROBOTS": "INDEX,FOLLOW", "manager": "coxford", "ms.date": "11/16/2016", @@ -116,9 +116,7 @@ "intrinsics/**.md": "reference", "mfc/reference/**.md": "reference", "overview/**.md": "overview", - "parallel/amp/reference/**.md": "reference", - "parallel/concrt/reference/**.md": "reference", - "parallel/openmp/reference/**.md": "reference", + "parallel/**.md": "reference", "preprocessor/**.md": "reference", "safeint/**.md": "reference", "sanitizers/**.md": "reference", @@ -151,8 +149,6 @@ "linux/**.md": "linux-development", "mfc/**.md": "mfc-library", "overview/**.md": "tools", - "parallel/amp/**.md": "parallel-programming", - "parallel/concrt/**.md": "parallel-programming", "parallel/**.md": "parallel-programming", "porting/**.md": "cpp-lang", "preprocessor/**.md": "cpp-lang", @@ -163,79 +159,101 @@ "text/**.md": "windows-development", "windows/**.md": "windows-development" }, + "ms.update-cycle": { + "assembler/**.{md,yml}": "3650-days", + "attributes/**.{md,yml}": "3650-days", + "atl/**.{md,yml}": "3650-days", + "atl-mfc-shared/**.{md,yml}": "3650-days", + "build/**.{md,yml}": "1825-days", + "c-language/**.{md,yml}": "3650-days", + "c-runtime-library/**.{md,yml}": "3650-days", + "cpp/**.md": "1095-days", + "cppcx/**.{md,yml}": "3650-days", + "cross-platform/**.{md,yml}": "1825-days", + "data/**.{md,yml}": "3650-days", + "dotnet/**.{md,yml}": "3650-days", + "embedded/**.{md,yml}": "3650-days", + "error-messages/**.{md,yml}": "3650-days", + "extensions/**.{md,yml}": "3650-days", + "intrinsics/**.{md,yml}": "3650-days", + "mfc/**.{md,yml}": "3650-days", + "parallel/**.{md,yml}": "3650-days", + "porting/**.{md,yml}": "1095-days", + "preprocessor/**.{md,yml}": "3650-days", + "safeint/**.{md,yml}": "3650-days", + "standard-library/**.{md,yml}": "3650-days", + "text/**.{md,yml}": "3650-days", + "windows/**.{md,yml}": "1825-days" + }, "author": { "index.md": "tylermsft", - "assembler/**.md": "tylermsft", - "attributes/**.md": "tylermsft", - "atl/**.md": "tylermsft", - "atl-mfc-shared/**.md": "tylermsft", - "build/**.md": "tylermsft", - "build-insights/**.md": "tylermsft", - "c-language/**.md": "tylermsft", - "c-runtime-library/**.md": "tylermsft", - "cloud/**.md": "tylermsft", - "code-quality/**.md": "tylermsft", - "cpp/**.md": "tylermsft", - "cppcx/**.md": "tylermsft", - "cross-platform/**.md": "tylermsft", - "data/**.md": "tylermsft", - "dotnet/**.md": "tylermsft", - "error-messages/**.md": "tylermsft", - "extensions/**.md": "tylermsft", - "get-started/**.md": "tylermsft", - "ide/**.md": "tylermsft", - "intrinsics/**.md": "tylermsft", - "linux/**.md": "tylermsft", - "mfc/**.md": "tylermsft", - "overview/**.md": "tylermsft", - "parallel/amp/**.md": "tylermsft", - "parallel/concrt/**.md": "tylermsft", - "parallel/**.md": "tylermsft", - "porting/**.md": "tylermsft", - "preprocessor/**.md": "tylermsft", - "safeint/**.md": "tylermsft", - "sanitizers/**.md": "tylermsft", - "security/**.md": "tylermsft", - "standard-library/**.md": "tylermsft", - "text/**.md": "tylermsft", - "windows/**.md": "tylermsft" + "assembler/**.{md,yml}": "tylermsft", + "attributes/**.{md,yml}": "tylermsft", + "atl/**.{md,yml}": "tylermsft", + "atl-mfc-shared/**.{md,yml}": "tylermsft", + "build/**.{md,yml}": "tylermsft", + "build-insights/**.{md,yml}": "tylermsft", + "c-language/**.{md,yml}": "tylermsft", + "c-runtime-library/**.{md,yml}": "tylermsft", + "cloud/**.{md,yml}": "tylermsft", + "code-quality/**.{md,yml}": "tylermsft", + "cpp/**.{md,yml}": "tylermsft", + "cppcx/**.{md,yml}": "tylermsft", + "cross-platform/**.{md,yml}": "tylermsft", + "data/**.{md,yml}": "tylermsft", + "dotnet/**.{md,yml}": "tylermsft", + "error-messages/**.{md,yml}": "tylermsft", + "extensions/**.{md,yml}": "tylermsft", + "get-started/**.{md,yml}": "tylermsft", + "ide/**.{md,yml}": "tylermsft", + "intrinsics/**.{md,yml}": "tylermsft", + "linux/**.{md,yml}": "tylermsft", + "mfc/**.{md,yml}": "tylermsft", + "overview/**.{md,yml}": "tylermsft", + "parallel/**.{md,yml}": "tylermsft", + "porting/**.{md,yml}": "tylermsft", + "preprocessor/**.{md,yml}": "tylermsft", + "safeint/**.{md,yml}": "tylermsft", + "sanitizers/**.{md,yml}": "tylermsft", + "security/**.{md,yml}": "tylermsft", + "standard-library/**.{md,yml}": "tylermsft", + "text/**.{md,yml}": "tylermsft", + "windows/**.{md,yml}": "tylermsft" }, "ms.author": { "index.md": "twhitney", - "assembler/**.md": "twhitney", - "atl/**.md": "twhitney", - "atl-mfc-shared/**.md": "twhitney", - "attributes/**.md": "twhitney", - "build/**.md": "twhitney", - "build-insights/**.md": "twhitney", - "c-language/**.md": "twhitney", - "c-runtime-library/**.md": "twhitney", - "cloud/**.md": "twhitney", - "code-quality/**.md": "twhitney", - "cpp/**.md": "twhitney", - "cppcx/**.md": "twhitney", - "cross-platform/**.md": "twhitney", - "data/**.md": "twhitney", - "dotnet/**.md": "twhitney", - "error-messages/**.md": "twhitney", - "extensions/**.md": "twhitney", - "get-started/**.md": "twhitney", - "ide/**.md": "twhitney", - "intrinsics/**.md": "twhitney", - "linux/**.md": "twhitney", - "mfc/**.md": "twhitney", - "overview/**.md": "twhitney", - "parallel/amp/**.md": "twhitney", - "parallel/concrt/**.md": "twhitney", - "parallel/**.md": "twhitney", - "porting/**.md": "twhitney", - "preprocessor/**.md": "twhitney", - "safeint/**.md": "twhitney", - "sanitizers/**.md": "twhitney", - "security/**.md": "twhitney", - "standard-library/**.md": "twhitney", - "text/**.md": "twhitney", - "windows/**.md": "twhitney" + "assembler/**.{md,yml}": "twhitney", + "atl/**.{md,yml}": "twhitney", + "atl-mfc-shared/**.{md,yml}": "twhitney", + "attributes/**.{md,yml}": "twhitney", + "build/**.{md,yml}": "twhitney", + "build-insights/**.{md,yml}": "twhitney", + "c-language/**.{md,yml}": "twhitney", + "c-runtime-library/**.{md,yml}": "twhitney", + "cloud/**.{md,yml}": "twhitney", + "code-quality/**.{md,yml}": "twhitney", + "cpp/**.{md,yml}": "twhitney", + "cppcx/**.{md,yml}": "twhitney", + "cross-platform/**.{md,yml}": "twhitney", + "data/**.{md,yml}": "twhitney", + "dotnet/**.{md,yml}": "twhitney", + "error-messages/**.{md,yml}": "twhitney", + "extensions/**.{md,yml}": "twhitney", + "get-started/**.{md,yml}": "twhitney", + "ide/**.{md,yml}": "twhitney", + "intrinsics/**.{md,yml}": "twhitney", + "linux/**.{md,yml}": "twhitney", + "mfc/**.{md,yml}": "twhitney", + "overview/**.{md,yml}": "twhitney", + "parallel/**.{md,yml}": "twhitney", + "porting/**.{md,yml}": "twhitney", + "preprocessor/**.{md,yml}": "twhitney", + "safeint/**.{md,yml}": "twhitney", + "sanitizers/**.{md,yml}": "twhitney", + "security/**.{md,yml}": "twhitney", + "standard-library/**.{md,yml}": "twhitney", + "text/**.{md,yml}": "twhitney", + "windows/**.{md,yml}": "twhitney" } }, "template": [], From 878f5e1d67080b1139af3578461126df0e87022c Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 20 Aug 2025 16:54:10 +0800 Subject: [PATCH 1488/2255] Add blockquotes for error messages in range [C3481, C3530] --- docs/error-messages/compiler-errors-2/compiler-error-c3481.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3482.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3483.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3484.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3487.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3488.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3489.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3490.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3491.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3492.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3493.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3495.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3496.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3498.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3499.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3500.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3501.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3506.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3507.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3508.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3509.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3510.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3519.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3530.md | 2 +- 24 files changed, 24 insertions(+), 24 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3481.md b/docs/error-messages/compiler-errors-2/compiler-error-c3481.md index 775cbc06826..aa9b813eaa3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3481.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3481.md @@ -8,7 +8,7 @@ ms.assetid: 5d09375a-5ed3-4b61-86ed-45e91fd734c7 --- # Compiler Error C3481 -'var': lambda capture variable not found +> 'var': lambda capture variable not found The compiler could not find the definition of a variable that you passed to the capture list of a lambda expression. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3482.md b/docs/error-messages/compiler-errors-2/compiler-error-c3482.md index 8e471aea04c..78f0f7ab9f9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3482.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3482.md @@ -8,7 +8,7 @@ ms.assetid: bf99558e-bef4-421c-bb16-dcd9c54c1011 --- # Compiler Error C3482 -'this' can only be used as a lambda capture within a non-static member function +> 'this' can only be used as a lambda capture within a non-static member function You cannot pass **`this`** to the capture list of a lambda expression that is declared in a static method or a global function. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3483.md b/docs/error-messages/compiler-errors-2/compiler-error-c3483.md index 0664764558f..9d9765a825b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3483.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3483.md @@ -8,7 +8,7 @@ ms.assetid: 18b3a2c5-dfc9-4661-9653-08a5798474cf --- # Compiler Error C3483 -'var' is already part of the lambda capture list +> 'var' is already part of the lambda capture list You passed the same variable to the capture list of a lambda expression more than one time. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3484.md b/docs/error-messages/compiler-errors-2/compiler-error-c3484.md index 43a0e771a38..cdba34b91a2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3484.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3484.md @@ -8,7 +8,7 @@ ms.assetid: 2fe847fa-f6ee-4978-bc1d-b6dc6ae906ac --- # Compiler Error C3484 -expected '->' before the return type +> expected '->' before the return type You must provide `->` before the return type of a lambda expression. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3487.md b/docs/error-messages/compiler-errors-2/compiler-error-c3487.md index 6af8420b559..5b298d5a39b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3487.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3487.md @@ -8,7 +8,7 @@ ms.assetid: 39bda474-4418-4a79-98bf-2b22fa92eaaa --- # Compiler Error C3487 -'return type': all return expressions must deduce to the same type: previously it was 'return type' +> 'return type': all return expressions must deduce to the same type: previously it was 'return type' A lambda must specify its return type unless it contains a single return statement. If a lambda contains multiple return statements, they must all have the same type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3488.md b/docs/error-messages/compiler-errors-2/compiler-error-c3488.md index 7a38d4c1158..661a69a759f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3488.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3488.md @@ -8,7 +8,7 @@ ms.assetid: 0a6fcd76-dd3b-48d7-abb3-22eccda96034 --- # Compiler Error C3488 -'var' is not allowed when the default capture mode is by-reference +> 'var' is not allowed when the default capture mode is by-reference When you specify that the default capture mode for a lambda expression is by-reference, you cannot pass a variable by reference to the capture clause of that expression. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3489.md b/docs/error-messages/compiler-errors-2/compiler-error-c3489.md index fbd175529d6..05d7dfe90e2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3489.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3489.md @@ -8,7 +8,7 @@ ms.assetid: 47b58d69-459d-4499-abc7-5f0b9303d773 --- # Compiler Error C3489 -'var' is required when the default capture mode is by-value +> 'var' is required when the default capture mode is by-value When you specify that the default capture mode for a lambda expression is by-value, you cannot pass a variable by value to the capture clause of that expression. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3490.md b/docs/error-messages/compiler-errors-2/compiler-error-c3490.md index 55fda1bfc02..6d79b4922fb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3490.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3490.md @@ -8,7 +8,7 @@ ms.assetid: 7638559a-fd06-4527-a9c1-0c8ae68b3123 --- # Compiler Error C3490 -'var' cannot be modified because it is being accessed through a const object +> 'var' cannot be modified because it is being accessed through a const object A lambda expression that is declared in a **`const`** method cannot modify non-mutable member data. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3491.md b/docs/error-messages/compiler-errors-2/compiler-error-c3491.md index f941d825ccb..b8bc287819c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3491.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3491.md @@ -8,7 +8,7 @@ ms.assetid: 7f0e71b2-46a0-4d25-bd09-6158a280f509 --- # Compiler Error C3491 -'var': a by-value capture cannot be modified in a non-mutable lambda +> 'var': a by-value capture cannot be modified in a non-mutable lambda A non-mutable lambda expression cannot modify the value of a variable that is captured by value. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3492.md b/docs/error-messages/compiler-errors-2/compiler-error-c3492.md index 3883b98b062..d1657f0eb13 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3492.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3492.md @@ -8,7 +8,7 @@ ms.assetid: b1dc6342-9133-4b1f-a9c3-e8c65d20d121 --- # Compiler Error C3492 -'var': you cannot capture a member of an anonymous union +> 'var': you cannot capture a member of an anonymous union You cannot capture a member of an unnamed union. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3493.md b/docs/error-messages/compiler-errors-2/compiler-error-c3493.md index f711ca6cabf..d625026cef5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3493.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3493.md @@ -8,7 +8,7 @@ ms.assetid: 734b4257-12a3-436f-8488-c8c55ec81634 --- # Compiler Error C3493 -'var' cannot be implicitly captured because no default capture mode has been specified +> 'var' cannot be implicitly captured because no default capture mode has been specified The empty lambda expression capture, `[]`, specifies that the lambda expression does not explicitly or implicitly capture any variables. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3495.md b/docs/error-messages/compiler-errors-2/compiler-error-c3495.md index 361a6225925..5794a38b15e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3495.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3495.md @@ -8,7 +8,7 @@ ms.assetid: 1fd40cb8-8373-403d-b8a8-f08424a50807 --- # Compiler Error C3495 -'var': a lambda capture must have automatic storage duration +> 'var': a lambda capture must have automatic storage duration You cannot capture a variable that does not have automatic storage duration, such as a variable that is marked **`static`** or **`extern`**. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3496.md b/docs/error-messages/compiler-errors-2/compiler-error-c3496.md index b766b396aff..3dfb60e2594 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3496.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3496.md @@ -8,7 +8,7 @@ ms.assetid: e19885f2-677f-4c1e-bc69-e35852262dc3 --- # Compiler Error C3496 -'this' is always captured by value: '&' ignored +> 'this' is always captured by value: '&' ignored You cannot capture the **`this`** pointer by reference. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3498.md b/docs/error-messages/compiler-errors-2/compiler-error-c3498.md index 353b893e20b..a689df8d99c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3498.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3498.md @@ -8,7 +8,7 @@ ms.assetid: 0a5a7817-0872-4119-83bf-980a19113374 --- # Compiler Error C3498 -'var': you cannot capture a variable that has a managed or WinRTtype +> 'var': you cannot capture a variable that has a managed or WinRTtype You cannot capture a variable that has a managed type or a Windows Runtime type in a lambda. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3499.md b/docs/error-messages/compiler-errors-2/compiler-error-c3499.md index 0004f9b25bc..6595932f992 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3499.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3499.md @@ -8,7 +8,7 @@ ms.assetid: 6717de5c-ae0f-4024-bdf2-b5598009e7b6 --- # Compiler Error C3499 -a lambda that has been specified to have a void return type cannot return a value +> a lambda that has been specified to have a void return type cannot return a value The compiler generates this error when a lambda expression that specifies **`void`** as the return type returns a value; or when a lambda expression contains more than one statement and returns a value, but does not specify its return type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3500.md b/docs/error-messages/compiler-errors-2/compiler-error-c3500.md index 7498428d7d6..f937b49bbec 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3500.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3500.md @@ -8,6 +8,6 @@ ms.assetid: 77336f16-04f5-4943-bfc0-faba4cd8bb51 --- # Compiler Error C3500 -invalid ProgID 'progid' +> invalid ProgID 'progid' An invalid progid was specified with the `#import` statement. Check the Windows registry to ensure that you are specifying a valid progid. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3501.md b/docs/error-messages/compiler-errors-2/compiler-error-c3501.md index 87053046e34..41effa0d06b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3501.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3501.md @@ -8,6 +8,6 @@ ms.assetid: cad69fab-2687-41ac-961f-25dc4c51b167 --- # Compiler Error C3501 -there is no typelib registered for ProgID 'progid' +> there is no typelib registered for ProgID 'progid' The class ID for a given progid does not have an associated type library. Therefore, you cannot pass this progid to the `#import` statement. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3506.md b/docs/error-messages/compiler-errors-2/compiler-error-c3506.md index 9ff1a9b7fda..f977c57fc55 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3506.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3506.md @@ -8,6 +8,6 @@ ms.assetid: d382c067-5fad-42ca-acf3-9e6d8cbdb2c5 --- # Compiler Error C3506 -there is no typelib registered for LIBID 'id' +> there is no typelib registered for LIBID 'id' A typelib was not registered correctly. Use regsvr32.exe to register a type library. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3507.md b/docs/error-messages/compiler-errors-2/compiler-error-c3507.md index e28427a5e8b..6908d61214b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3507.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3507.md @@ -8,7 +8,7 @@ ms.assetid: 75f89767-f6f9-40f6-9820-81a49e09abdf --- # Compiler Error C3507 -a ProgID can have no more than 39 characters 'id'; nor contain any punctuation apart from '.'; nor start with a digit +> a ProgID can have no more than 39 characters 'id'; nor contain any punctuation apart from '.'; nor start with a digit The [progid](../../windows/attributes/progid.md) attribute has restrictions on the values that it can take. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3508.md b/docs/error-messages/compiler-errors-2/compiler-error-c3508.md index d179185e372..5833bcd9d2c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3508.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3508.md @@ -8,7 +8,7 @@ ms.assetid: 16d08f89-2f32-44eb-9421-68acecddf49b --- # Compiler Error C3508 -'type': is not a valid Automation type +> 'type': is not a valid Automation type An invalid type was specified. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3509.md b/docs/error-messages/compiler-errors-2/compiler-error-c3509.md index 2b68307157e..e6cb225ad76 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3509.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3509.md @@ -8,7 +8,7 @@ ms.assetid: cc2db39a-2f98-4e40-b803-496e585494e6 --- # Compiler Error C3509 -'type': invalid Automation return type; when a parameter is marked 'retval', the return type must be 'void', 'HRESULT' or 'SCODE' +> 'type': invalid Automation return type; when a parameter is marked 'retval', the return type must be 'void', 'HRESULT' or 'SCODE' A method in a COM interface must return either void or an HRESULT. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3510.md b/docs/error-messages/compiler-errors-2/compiler-error-c3510.md index 7149143be10..db44b090f01 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3510.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3510.md @@ -8,7 +8,7 @@ ms.assetid: c48387bc-0300-4a4d-97f7-3fb90f82a451 --- # Compiler Error C3510 -cannot locate dependent type library 'type_lib' +> cannot locate dependent type library 'type_lib' [no_registry](../../preprocessor/no-registry.md) and [auto_search](../../preprocessor/auto-search.md) were passed to `#import` but the compiler was not able to find a referenced type library. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3519.md b/docs/error-messages/compiler-errors-2/compiler-error-c3519.md index af93d7018e6..2e2989f0af8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3519.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3519.md @@ -8,7 +8,7 @@ ms.assetid: ca24b2bc-7e90-4448-ae84-3fedddf9bca7 --- # Compiler Error C3519 -'invalid_param' : invalid parameter to embedded_idl attribute +> 'invalid_param' : invalid parameter to embedded_idl attribute A parameter was passed to the `embedded_idl` attribute of [#import](../../preprocessor/hash-import-directive-cpp.md), but the compiler did not recognize the parameter. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3530.md b/docs/error-messages/compiler-errors-2/compiler-error-c3530.md index 9a1a7467a25..1a93c0495dd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3530.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3530.md @@ -8,7 +8,7 @@ ms.assetid: 21be81ce-b699-4c74-81bc-80a0c34d2d5a --- # Compiler Error C3530 -'auto' cannot be combined with any other type-specifier +> 'auto' cannot be combined with any other type-specifier A type specifier is used with the **`auto`** keyword. From 42595e1fbba7cbe779f0172ecf33fe540282dc32 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 20 Aug 2025 17:01:43 +0800 Subject: [PATCH 1489/2255] Add "Remarks" and "Example" headings for error references in range [C3481, C3530] --- docs/error-messages/compiler-errors-2/compiler-error-c3481.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3482.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3483.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3484.md | 4 +++- docs/error-messages/compiler-errors-2/compiler-error-c3487.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3488.md | 4 +++- docs/error-messages/compiler-errors-2/compiler-error-c3489.md | 4 +++- docs/error-messages/compiler-errors-2/compiler-error-c3490.md | 4 +++- docs/error-messages/compiler-errors-2/compiler-error-c3491.md | 4 +++- docs/error-messages/compiler-errors-2/compiler-error-c3492.md | 4 +++- docs/error-messages/compiler-errors-2/compiler-error-c3493.md | 4 +++- docs/error-messages/compiler-errors-2/compiler-error-c3495.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3496.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3498.md | 4 +++- docs/error-messages/compiler-errors-2/compiler-error-c3499.md | 4 +++- docs/error-messages/compiler-errors-2/compiler-error-c3500.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3501.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3505.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3506.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3507.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3508.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3509.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3510.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3519.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3530.md | 2 ++ 25 files changed, 67 insertions(+), 9 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3481.md b/docs/error-messages/compiler-errors-2/compiler-error-c3481.md index aa9b813eaa3..6200ebf0ebe 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3481.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3481.md @@ -10,6 +10,8 @@ ms.assetid: 5d09375a-5ed3-4b61-86ed-45e91fd734c7 > 'var': lambda capture variable not found +## Remarks + The compiler could not find the definition of a variable that you passed to the capture list of a lambda expression. ### To correct this error diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3482.md b/docs/error-messages/compiler-errors-2/compiler-error-c3482.md index 78f0f7ab9f9..20df94d456c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3482.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3482.md @@ -10,6 +10,8 @@ ms.assetid: bf99558e-bef4-421c-bb16-dcd9c54c1011 > 'this' can only be used as a lambda capture within a non-static member function +## Remarks + You cannot pass **`this`** to the capture list of a lambda expression that is declared in a static method or a global function. ### To correct this error diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3483.md b/docs/error-messages/compiler-errors-2/compiler-error-c3483.md index 9d9765a825b..243c71e0efd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3483.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3483.md @@ -10,6 +10,8 @@ ms.assetid: 18b3a2c5-dfc9-4661-9653-08a5798474cf > 'var' is already part of the lambda capture list +## Remarks + You passed the same variable to the capture list of a lambda expression more than one time. ### To correct this error diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3484.md b/docs/error-messages/compiler-errors-2/compiler-error-c3484.md index cdba34b91a2..f19635e8b89 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3484.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3484.md @@ -10,13 +10,15 @@ ms.assetid: 2fe847fa-f6ee-4978-bc1d-b6dc6ae906ac > expected '->' before the return type +## Remarks + You must provide `->` before the return type of a lambda expression. ### To correct this error - Provide `->` before the return type. -## Examples +## Example The following example generates C3484: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3487.md b/docs/error-messages/compiler-errors-2/compiler-error-c3487.md index 5b298d5a39b..468e5302d88 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3487.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3487.md @@ -10,6 +10,8 @@ ms.assetid: 39bda474-4418-4a79-98bf-2b22fa92eaaa > 'return type': all return expressions must deduce to the same type: previously it was 'return type' +## Remarks + A lambda must specify its return type unless it contains a single return statement. If a lambda contains multiple return statements, they must all have the same type. ### To correct this error diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3488.md b/docs/error-messages/compiler-errors-2/compiler-error-c3488.md index 661a69a759f..25072451679 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3488.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3488.md @@ -10,6 +10,8 @@ ms.assetid: 0a6fcd76-dd3b-48d7-abb3-22eccda96034 > 'var' is not allowed when the default capture mode is by-reference +## Remarks + When you specify that the default capture mode for a lambda expression is by-reference, you cannot pass a variable by reference to the capture clause of that expression. ### To correct this error @@ -22,7 +24,7 @@ When you specify that the default capture mode for a lambda expression is by-ref - Pass the variable by value to the capture clause. (This might change the behavior of the lambda expression.) -## Examples +## Example The following example generates C3488 because a reference to the variable `n` appears in the capture clause of a lambda expression whose default mode is by-reference: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3489.md b/docs/error-messages/compiler-errors-2/compiler-error-c3489.md index 05d7dfe90e2..f2800dcde48 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3489.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3489.md @@ -10,6 +10,8 @@ ms.assetid: 47b58d69-459d-4499-abc7-5f0b9303d773 > 'var' is required when the default capture mode is by-value +## Remarks + When you specify that the default capture mode for a lambda expression is by-value, you cannot pass a variable by value to the capture clause of that expression. ### To correct this error @@ -22,7 +24,7 @@ When you specify that the default capture mode for a lambda expression is by-val - Pass the variable by reference to the capture clause. (This might change the behavior of the lambda expression.) -## Examples +## Example The following example generates C3489 variable `n` appears by value in the capture clause of a lambda expression whose default mode is by-value: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3490.md b/docs/error-messages/compiler-errors-2/compiler-error-c3490.md index 6d79b4922fb..d0fac448f99 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3490.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3490.md @@ -10,13 +10,15 @@ ms.assetid: 7638559a-fd06-4527-a9c1-0c8ae68b3123 > 'var' cannot be modified because it is being accessed through a const object +## Remarks + A lambda expression that is declared in a **`const`** method cannot modify non-mutable member data. ### To correct this error - Remove the **`const`** modifier from your method declaration. -## Examples +## Example The following example generates C3490 because it modifies the member variable `_i` in a **`const`** method: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3491.md b/docs/error-messages/compiler-errors-2/compiler-error-c3491.md index b8bc287819c..de78bcf48cb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3491.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3491.md @@ -10,6 +10,8 @@ ms.assetid: 7f0e71b2-46a0-4d25-bd09-6158a280f509 > 'var': a by-value capture cannot be modified in a non-mutable lambda +## Remarks + A non-mutable lambda expression cannot modify the value of a variable that is captured by value. ### To correct this error @@ -18,7 +20,7 @@ A non-mutable lambda expression cannot modify the value of a variable that is ca - Pass the variable by reference to the capture list of the lambda expression. -## Examples +## Example The following example generates C3491 because the body of a non-mutable lambda expression modifies the capture variable `m`: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3492.md b/docs/error-messages/compiler-errors-2/compiler-error-c3492.md index d1657f0eb13..d4fddc0f7ac 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3492.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3492.md @@ -10,13 +10,15 @@ ms.assetid: b1dc6342-9133-4b1f-a9c3-e8c65d20d121 > 'var': you cannot capture a member of an anonymous union +## Remarks + You cannot capture a member of an unnamed union. ### To correct this error - Give the union a name and pass the complete union structure to the capture list of the lambda expression. -## Examples +## Example The following example generates C3492 because it captures a member of an anonymous union: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3493.md b/docs/error-messages/compiler-errors-2/compiler-error-c3493.md index d625026cef5..5bc937228d9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3493.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3493.md @@ -10,6 +10,8 @@ ms.assetid: 734b4257-12a3-436f-8488-c8c55ec81634 > 'var' cannot be implicitly captured because no default capture mode has been specified +## Remarks + The empty lambda expression capture, `[]`, specifies that the lambda expression does not explicitly or implicitly capture any variables. ### To correct this error @@ -18,7 +20,7 @@ The empty lambda expression capture, `[]`, specifies that the lambda expression - Explicitly capture one or more variables. -## Examples +## Example The following example generates C3493 because it modifies an external variable but specifies the empty capture clause: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3495.md b/docs/error-messages/compiler-errors-2/compiler-error-c3495.md index 5794a38b15e..683334c9ca3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3495.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3495.md @@ -10,6 +10,8 @@ ms.assetid: 1fd40cb8-8373-403d-b8a8-f08424a50807 > 'var': a lambda capture must have automatic storage duration +## Remarks + You cannot capture a variable that does not have automatic storage duration, such as a variable that is marked **`static`** or **`extern`**. ### To correct this error diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3496.md b/docs/error-messages/compiler-errors-2/compiler-error-c3496.md index 3dfb60e2594..58adf536824 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3496.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3496.md @@ -10,6 +10,8 @@ ms.assetid: e19885f2-677f-4c1e-bc69-e35852262dc3 > 'this' is always captured by value: '&' ignored +## Remarks + You cannot capture the **`this`** pointer by reference. ### To correct this error diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3498.md b/docs/error-messages/compiler-errors-2/compiler-error-c3498.md index a689df8d99c..64814957466 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3498.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3498.md @@ -10,13 +10,15 @@ ms.assetid: 0a5a7817-0872-4119-83bf-980a19113374 > 'var': you cannot capture a variable that has a managed or WinRTtype +## Remarks + You cannot capture a variable that has a managed type or a Windows Runtime type in a lambda. ### To correct this error - Pass the managed or Windows Runtime variable to the parameter list of the lambda expression. -## Examples +## Example The following example generates C3498 because a variable that has a managed type appears in the capture list of a lambda expression: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3499.md b/docs/error-messages/compiler-errors-2/compiler-error-c3499.md index 6595932f992..b6d5522124e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3499.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3499.md @@ -10,6 +10,8 @@ ms.assetid: 6717de5c-ae0f-4024-bdf2-b5598009e7b6 > a lambda that has been specified to have a void return type cannot return a value +## Remarks + The compiler generates this error when a lambda expression that specifies **`void`** as the return type returns a value; or when a lambda expression contains more than one statement and returns a value, but does not specify its return type. ### To correct this error @@ -20,7 +22,7 @@ The compiler generates this error when a lambda expression that specifies **`voi - Combine the statements that make up the body of the lambda expression into a single statement. -## Examples +## Example The following example generates C3499 because the body of a lambda expression contains multiple statements and returns a value, but the lambda expression does not specify the return type: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3500.md b/docs/error-messages/compiler-errors-2/compiler-error-c3500.md index f937b49bbec..f52788cf8d8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3500.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3500.md @@ -10,4 +10,6 @@ ms.assetid: 77336f16-04f5-4943-bfc0-faba4cd8bb51 > invalid ProgID 'progid' +## Remarks + An invalid progid was specified with the `#import` statement. Check the Windows registry to ensure that you are specifying a valid progid. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3501.md b/docs/error-messages/compiler-errors-2/compiler-error-c3501.md index 41effa0d06b..f9cf873dbd7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3501.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3501.md @@ -10,4 +10,6 @@ ms.assetid: cad69fab-2687-41ac-961f-25dc4c51b167 > there is no typelib registered for ProgID 'progid' +## Remarks + The class ID for a given progid does not have an associated type library. Therefore, you cannot pass this progid to the `#import` statement. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3505.md b/docs/error-messages/compiler-errors-2/compiler-error-c3505.md index f3d6d67d2c2..add88cea303 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3505.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3505.md @@ -10,6 +10,8 @@ ms.assetid: ed73c99e-93a1-4f3a-bac7-ba7ed5d836e4 > cannot load type library '*guid*' +## Remarks + C3505 can be caused if you are running the 32-bit, x86-hosted cross-compiler for 64-bit, x64 targets on a 64-bit machine, because the compiler is running under WOW64 and can only read from the 32-bit registry hive. You can resolve this error by building both 32-bit and 64-bit versions of the type library you are trying to import, and then register them both. Or you can use the native 64-bit compiler, which requires you to change your **VC++ Directories** property in the IDE to point to the 64-bit compiler. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3506.md b/docs/error-messages/compiler-errors-2/compiler-error-c3506.md index f977c57fc55..09074ba24a1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3506.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3506.md @@ -10,4 +10,6 @@ ms.assetid: d382c067-5fad-42ca-acf3-9e6d8cbdb2c5 > there is no typelib registered for LIBID 'id' +## Remarks + A typelib was not registered correctly. Use regsvr32.exe to register a type library. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3507.md b/docs/error-messages/compiler-errors-2/compiler-error-c3507.md index 6908d61214b..0a29515a505 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3507.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3507.md @@ -10,8 +10,12 @@ ms.assetid: 75f89767-f6f9-40f6-9820-81a49e09abdf > a ProgID can have no more than 39 characters 'id'; nor contain any punctuation apart from '.'; nor start with a digit +## Remarks + The [progid](../../windows/attributes/progid.md) attribute has restrictions on the values that it can take. +## Example + The following sample generates C3507: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3508.md b/docs/error-messages/compiler-errors-2/compiler-error-c3508.md index 5833bcd9d2c..b9f40f20446 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3508.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3508.md @@ -10,6 +10,8 @@ ms.assetid: 16d08f89-2f32-44eb-9421-68acecddf49b > 'type': is not a valid Automation type +## Remarks + An invalid type was specified. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3509.md b/docs/error-messages/compiler-errors-2/compiler-error-c3509.md index e6cb225ad76..c4506036df4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3509.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3509.md @@ -10,8 +10,12 @@ ms.assetid: cc2db39a-2f98-4e40-b803-496e585494e6 > 'type': invalid Automation return type; when a parameter is marked 'retval', the return type must be 'void', 'HRESULT' or 'SCODE' +## Remarks + A method in a COM interface must return either void or an HRESULT. +## Example + The following sample generates C3509: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3510.md b/docs/error-messages/compiler-errors-2/compiler-error-c3510.md index db44b090f01..00415d544cf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3510.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3510.md @@ -10,10 +10,14 @@ ms.assetid: c48387bc-0300-4a4d-97f7-3fb90f82a451 > cannot locate dependent type library 'type_lib' +## Remarks + [no_registry](../../preprocessor/no-registry.md) and [auto_search](../../preprocessor/auto-search.md) were passed to `#import` but the compiler was not able to find a referenced type library. To resolve this error, make sure that all type libraries and referenced type libraries are available to the compiler. +## Example + The following sample generates C3510: Assume that the following two type libraries were built, and that C3510a.tlb was deleted or not on the path. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3519.md b/docs/error-messages/compiler-errors-2/compiler-error-c3519.md index 2e2989f0af8..1d1d5f0a8b5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3519.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3519.md @@ -10,10 +10,14 @@ ms.assetid: ca24b2bc-7e90-4448-ae84-3fedddf9bca7 > 'invalid_param' : invalid parameter to embedded_idl attribute +## Remarks + A parameter was passed to the `embedded_idl` attribute of [#import](../../preprocessor/hash-import-directive-cpp.md), but the compiler did not recognize the parameter. The only parameters that are allowed for `embedded_idl` are `emitidl` and `no_emitidl`. +## Example + The following sample generates C3519: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3530.md b/docs/error-messages/compiler-errors-2/compiler-error-c3530.md index 1a93c0495dd..962f6ebeef4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3530.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3530.md @@ -10,6 +10,8 @@ ms.assetid: 21be81ce-b699-4c74-81bc-80a0c34d2d5a > 'auto' cannot be combined with any other type-specifier +## Remarks + A type specifier is used with the **`auto`** keyword. ### To correct this error From 8c1309da8b9ebb5c9bb6009790e708b4bef26e30 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 20 Aug 2025 17:02:29 +0800 Subject: [PATCH 1490/2255] Replace term "sample" with "example" for error references in range [C3481, C3530] --- docs/error-messages/compiler-errors-2/compiler-error-c3507.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3508.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3509.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3510.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3519.md | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3507.md b/docs/error-messages/compiler-errors-2/compiler-error-c3507.md index 0a29515a505..838d1ed4a92 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3507.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3507.md @@ -16,7 +16,7 @@ The [progid](../../windows/attributes/progid.md) attribute has restrictions on t ## Example -The following sample generates C3507: +The following example generates C3507: ```cpp // C3507.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3508.md b/docs/error-messages/compiler-errors-2/compiler-error-c3508.md index b9f40f20446..88a6bf9681e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3508.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3508.md @@ -16,7 +16,7 @@ An invalid type was specified. ## Example -The following sample generates C3508: +The following example generates C3508: ```cpp // C3508.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3509.md b/docs/error-messages/compiler-errors-2/compiler-error-c3509.md index c4506036df4..a9afd150183 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3509.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3509.md @@ -16,7 +16,7 @@ A method in a COM interface must return either void or an HRESULT. ## Example -The following sample generates C3509: +The following example generates C3509: ```cpp // C3509.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3510.md b/docs/error-messages/compiler-errors-2/compiler-error-c3510.md index 00415d544cf..47667d598b8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3510.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3510.md @@ -18,7 +18,7 @@ To resolve this error, make sure that all type libraries and referenced type lib ## Example -The following sample generates C3510: +The following example generates C3510: Assume that the following two type libraries were built, and that C3510a.tlb was deleted or not on the path. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3519.md b/docs/error-messages/compiler-errors-2/compiler-error-c3519.md index 1d1d5f0a8b5..744fcac1d8f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3519.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3519.md @@ -18,7 +18,7 @@ The only parameters that are allowed for `embedded_idl` are `emitidl` and `no_em ## Example -The following sample generates C3519: +The following example generates C3519: ```cpp // C3519.cpp From 5a1f15d63538e09078dabeef8749df9b5d07943e Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 20 Aug 2025 17:07:15 +0800 Subject: [PATCH 1491/2255] Update metadata for error references in range [C3481, C3530] --- .../error-messages/compiler-errors-2/compiler-error-c3481.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3482.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3483.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3484.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3485.md | 3 +-- .../error-messages/compiler-errors-2/compiler-error-c3487.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3488.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3489.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3490.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3491.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3492.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3493.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3495.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3496.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3498.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3499.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3500.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3501.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3505.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3506.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3507.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3508.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3509.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3510.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3519.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3530.md | 5 ++--- 26 files changed, 51 insertions(+), 77 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3481.md b/docs/error-messages/compiler-errors-2/compiler-error-c3481.md index 6200ebf0ebe..7e07537f533 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3481.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3481.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3481" title: "Compiler Error C3481" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3481" +ms.date: 11/04/2016 f1_keywords: ["C3481"] helpviewer_keywords: ["C3481"] -ms.assetid: 5d09375a-5ed3-4b61-86ed-45e91fd734c7 --- # Compiler Error C3481 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3482.md b/docs/error-messages/compiler-errors-2/compiler-error-c3482.md index 20df94d456c..3b396c9bedc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3482.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3482.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3482" title: "Compiler Error C3482" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3482" +ms.date: 11/04/2016 f1_keywords: ["C3482"] helpviewer_keywords: ["C3482"] -ms.assetid: bf99558e-bef4-421c-bb16-dcd9c54c1011 --- # Compiler Error C3482 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3483.md b/docs/error-messages/compiler-errors-2/compiler-error-c3483.md index 243c71e0efd..2fee0c0075b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3483.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3483.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3483" title: "Compiler Error C3483" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3483" +ms.date: 11/04/2016 f1_keywords: ["C3483"] helpviewer_keywords: ["C3483"] -ms.assetid: 18b3a2c5-dfc9-4661-9653-08a5798474cf --- # Compiler Error C3483 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3484.md b/docs/error-messages/compiler-errors-2/compiler-error-c3484.md index f19635e8b89..1da53a08ba9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3484.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3484.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3484" title: "Compiler Error C3484" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3484" +ms.date: 11/04/2016 f1_keywords: ["C3484"] helpviewer_keywords: ["C3484"] -ms.assetid: 2fe847fa-f6ee-4978-bc1d-b6dc6ae906ac --- # Compiler Error C3484 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3485.md b/docs/error-messages/compiler-errors-2/compiler-error-c3485.md index f1a62610292..30fa2541210 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3485.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3485.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3485" title: "Compiler Error C3485" +description: "Learn more about: Compiler Error C3485" ms.date: 06/01/2022 f1_keywords: ["C3485"] helpviewer_keywords: ["C3485"] -ms.assetid: d67536f9-67a1-4ad9-9a94-d8bbbca3d0dc --- # Compiler Error C3485 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3487.md b/docs/error-messages/compiler-errors-2/compiler-error-c3487.md index 468e5302d88..7a34600a5aa 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3487.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3487.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3487" title: "Compiler Error C3487" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3487" +ms.date: 11/04/2016 f1_keywords: ["C3487"] helpviewer_keywords: ["C3487"] -ms.assetid: 39bda474-4418-4a79-98bf-2b22fa92eaaa --- # Compiler Error C3487 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3488.md b/docs/error-messages/compiler-errors-2/compiler-error-c3488.md index 25072451679..407a19b00e1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3488.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3488.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3488" title: "Compiler Error C3488" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3488" +ms.date: 11/04/2016 f1_keywords: ["C3488"] helpviewer_keywords: ["C3488"] -ms.assetid: 0a6fcd76-dd3b-48d7-abb3-22eccda96034 --- # Compiler Error C3488 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3489.md b/docs/error-messages/compiler-errors-2/compiler-error-c3489.md index f2800dcde48..3aa45bc46d6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3489.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3489.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3489" title: "Compiler Error C3489" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3489" +ms.date: 11/04/2016 f1_keywords: ["C3489"] helpviewer_keywords: ["C3489"] -ms.assetid: 47b58d69-459d-4499-abc7-5f0b9303d773 --- # Compiler Error C3489 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3490.md b/docs/error-messages/compiler-errors-2/compiler-error-c3490.md index d0fac448f99..191d54b3881 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3490.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3490.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3490" title: "Compiler Error C3490" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3490" +ms.date: 11/04/2016 f1_keywords: ["C3490"] helpviewer_keywords: ["C3490"] -ms.assetid: 7638559a-fd06-4527-a9c1-0c8ae68b3123 --- # Compiler Error C3490 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3491.md b/docs/error-messages/compiler-errors-2/compiler-error-c3491.md index de78bcf48cb..4183526cc84 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3491.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3491.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3491" title: "Compiler Error C3491" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3491" +ms.date: 11/04/2016 f1_keywords: ["C3491"] helpviewer_keywords: ["C3491"] -ms.assetid: 7f0e71b2-46a0-4d25-bd09-6158a280f509 --- # Compiler Error C3491 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3492.md b/docs/error-messages/compiler-errors-2/compiler-error-c3492.md index d4fddc0f7ac..6993760f29a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3492.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3492.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3492" title: "Compiler Error C3492" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3492" +ms.date: 11/04/2016 f1_keywords: ["C3492"] helpviewer_keywords: ["C3492"] -ms.assetid: b1dc6342-9133-4b1f-a9c3-e8c65d20d121 --- # Compiler Error C3492 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3493.md b/docs/error-messages/compiler-errors-2/compiler-error-c3493.md index 5bc937228d9..6101fd828c6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3493.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3493.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3493" title: "Compiler Error C3493" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3493" +ms.date: 11/04/2016 f1_keywords: ["C3493"] helpviewer_keywords: ["C3493"] -ms.assetid: 734b4257-12a3-436f-8488-c8c55ec81634 --- # Compiler Error C3493 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3495.md b/docs/error-messages/compiler-errors-2/compiler-error-c3495.md index 683334c9ca3..be74c020b84 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3495.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3495.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3495" title: "Compiler Error C3495" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3495" +ms.date: 11/04/2016 f1_keywords: ["C3495"] helpviewer_keywords: ["C3495"] -ms.assetid: 1fd40cb8-8373-403d-b8a8-f08424a50807 --- # Compiler Error C3495 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3496.md b/docs/error-messages/compiler-errors-2/compiler-error-c3496.md index 58adf536824..b859690dd96 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3496.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3496.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3496" title: "Compiler Error C3496" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3496" +ms.date: 11/04/2016 f1_keywords: ["C3496"] helpviewer_keywords: ["C3496"] -ms.assetid: e19885f2-677f-4c1e-bc69-e35852262dc3 --- # Compiler Error C3496 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3498.md b/docs/error-messages/compiler-errors-2/compiler-error-c3498.md index 64814957466..71ba1c6542b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3498.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3498.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3498" title: "Compiler Error C3498" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3498" +ms.date: 11/04/2016 f1_keywords: ["C3498"] helpviewer_keywords: ["C3498"] -ms.assetid: 0a5a7817-0872-4119-83bf-980a19113374 --- # Compiler Error C3498 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3499.md b/docs/error-messages/compiler-errors-2/compiler-error-c3499.md index b6d5522124e..390975bf586 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3499.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3499.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3499" title: "Compiler Error C3499" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3499" +ms.date: 11/04/2016 f1_keywords: ["C3499"] helpviewer_keywords: ["C3499"] -ms.assetid: 6717de5c-ae0f-4024-bdf2-b5598009e7b6 --- # Compiler Error C3499 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3500.md b/docs/error-messages/compiler-errors-2/compiler-error-c3500.md index f52788cf8d8..7de809c495b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3500.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3500.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3500" title: "Compiler Error C3500" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3500" +ms.date: 11/04/2016 f1_keywords: ["C3500"] helpviewer_keywords: ["C3500"] -ms.assetid: 77336f16-04f5-4943-bfc0-faba4cd8bb51 --- # Compiler Error C3500 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3501.md b/docs/error-messages/compiler-errors-2/compiler-error-c3501.md index f9cf873dbd7..980a2f5a0bb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3501.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3501.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3501" title: "Compiler Error C3501" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3501" +ms.date: 11/04/2016 f1_keywords: ["C3501"] helpviewer_keywords: ["C3501"] -ms.assetid: cad69fab-2687-41ac-961f-25dc4c51b167 --- # Compiler Error C3501 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3505.md b/docs/error-messages/compiler-errors-2/compiler-error-c3505.md index add88cea303..c383d2d03e1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3505.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3505.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3505" title: "Compiler Error C3505" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3505" +ms.date: 11/04/2016 f1_keywords: ["C3505"] helpviewer_keywords: ["C3505"] -ms.assetid: ed73c99e-93a1-4f3a-bac7-ba7ed5d836e4 --- # Compiler Error C3505 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3506.md b/docs/error-messages/compiler-errors-2/compiler-error-c3506.md index 09074ba24a1..8a2a8d3b71c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3506.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3506.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3506" title: "Compiler Error C3506" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3506" +ms.date: 11/04/2016 f1_keywords: ["C3506"] helpviewer_keywords: ["C3506"] -ms.assetid: d382c067-5fad-42ca-acf3-9e6d8cbdb2c5 --- # Compiler Error C3506 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3507.md b/docs/error-messages/compiler-errors-2/compiler-error-c3507.md index 838d1ed4a92..ed79db7afe0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3507.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3507.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3507" title: "Compiler Error C3507" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3507" +ms.date: 11/04/2016 f1_keywords: ["C3507"] helpviewer_keywords: ["C3507"] -ms.assetid: 75f89767-f6f9-40f6-9820-81a49e09abdf --- # Compiler Error C3507 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3508.md b/docs/error-messages/compiler-errors-2/compiler-error-c3508.md index 88a6bf9681e..189788fc259 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3508.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3508.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3508" title: "Compiler Error C3508" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3508" +ms.date: 11/04/2016 f1_keywords: ["C3508"] helpviewer_keywords: ["C3508"] -ms.assetid: 16d08f89-2f32-44eb-9421-68acecddf49b --- # Compiler Error C3508 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3509.md b/docs/error-messages/compiler-errors-2/compiler-error-c3509.md index a9afd150183..4504363ff30 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3509.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3509.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3509" title: "Compiler Error C3509" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3509" +ms.date: 11/04/2016 f1_keywords: ["C3509"] helpviewer_keywords: ["C3509"] -ms.assetid: cc2db39a-2f98-4e40-b803-496e585494e6 --- # Compiler Error C3509 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3510.md b/docs/error-messages/compiler-errors-2/compiler-error-c3510.md index 47667d598b8..c992a78b251 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3510.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3510.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3510" title: "Compiler Error C3510" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3510" +ms.date: 11/04/2016 f1_keywords: ["C3510"] helpviewer_keywords: ["C3510"] -ms.assetid: c48387bc-0300-4a4d-97f7-3fb90f82a451 --- # Compiler Error C3510 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3519.md b/docs/error-messages/compiler-errors-2/compiler-error-c3519.md index 744fcac1d8f..94e81b7cdbd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3519.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3519.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3519" title: "Compiler Error C3519" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3519" +ms.date: 11/04/2016 f1_keywords: ["C3519"] helpviewer_keywords: ["C3519"] -ms.assetid: ca24b2bc-7e90-4448-ae84-3fedddf9bca7 --- # Compiler Error C3519 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3530.md b/docs/error-messages/compiler-errors-2/compiler-error-c3530.md index 962f6ebeef4..bc8713e3bd4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3530.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3530.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3530" title: "Compiler Error C3530" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3530" +ms.date: 11/04/2016 f1_keywords: ["C3530"] helpviewer_keywords: ["C3530"] -ms.assetid: 21be81ce-b699-4c74-81bc-80a0c34d2d5a --- # Compiler Error C3530 From f1f16e2e7a8ec2ba5b9f5bbf0f8a33e14254894b Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 20 Aug 2025 17:15:34 +0800 Subject: [PATCH 1492/2255] Merge wrongly split error message in C3468 error reference --- docs/error-messages/compiler-errors-2/compiler-error-c3468.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3468.md b/docs/error-messages/compiler-errors-2/compiler-error-c3468.md index fcde4b999d6..e101a28857d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3468.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3468.md @@ -7,12 +7,10 @@ helpviewer_keywords: ["C3468"] --- # Compiler Error C3468 -> 'type' : you can only forward a type to an assembly: +> '*type*': you can only forward a type to an assembly: '*identifier*' is not an assembly ## Remarks -'`file`' is not an assembly - Only types in an assembly can be forwarded. For more information, see [Type Forwarding (C++/CLI)](../../extensions/type-forwarding-cpp-cli.md). From 09c5a3236adf8ab2f4bdd7fabfc6e8b6d9395a75 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 20 Aug 2025 18:02:35 +0800 Subject: [PATCH 1493/2255] Update `get` syntax in `` functions reference --- docs/standard-library/array-functions.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/docs/standard-library/array-functions.md b/docs/standard-library/array-functions.md index 60e9c8027c5..a1fadf65b8c 100644 --- a/docs/standard-library/array-functions.md +++ b/docs/standard-library/array-functions.md @@ -14,14 +14,17 @@ The `` header includes two non-member functions, `get` and `swap`, that o Returns a reference to the specified element of the array. ```cpp -template -constexpr T& get(array& arr) noexcept; +template +constexpr T& get(std::array& arr) noexcept; -template -constexpr const T& get(const array& arr) noexcept; +template +constexpr const T& get(const std::array& arr) noexcept; -template -constexpr T&& get(array&& arr) noexcept; +template +constexpr T&& get(std::array&& arr) noexcept; + +template +constexpr const T&& get(const std::array&& arr) noexcept; ``` ### Parameters @@ -29,10 +32,10 @@ constexpr T&& get(array&& arr) noexcept; *`Index`*\ The element offset. -*`T`*\ +*`Type`*\ The type of an element. -*`N`*\ +*`Size`*\ The number of elements in the array. *`arr`*\ From b0d9bb4624e248765637fdfcb37f922b81838992 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 20 Aug 2025 18:06:39 +0800 Subject: [PATCH 1494/2255] Update `swap` syntax in `` functions reference --- docs/standard-library/array-functions.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/standard-library/array-functions.md b/docs/standard-library/array-functions.md index a1fadf65b8c..4ffdc5b50b4 100644 --- a/docs/standard-library/array-functions.md +++ b/docs/standard-library/array-functions.md @@ -78,16 +78,16 @@ int main() A non-member template specialization of `std::swap` that swaps two **array** objects. ```cpp -template -void swap(array& left, array& right); +template +void swap(std::array& left, std::array& right); ``` ### Parameters -*`Ty`*\ +*`Type`*\ The type of an element. -*`N`*\ +*`Size`*\ The size of the array. *`left`*\ From e30b46e83f88f3f2fc1d38759a107a6df07d6a98 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 20 Aug 2025 18:11:17 +0800 Subject: [PATCH 1495/2255] Add "Template parameters" headings in `` functions reference --- docs/standard-library/array-functions.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/standard-library/array-functions.md b/docs/standard-library/array-functions.md index 4ffdc5b50b4..c73093fd750 100644 --- a/docs/standard-library/array-functions.md +++ b/docs/standard-library/array-functions.md @@ -27,7 +27,7 @@ template constexpr const T&& get(const std::array&& arr) noexcept; ``` -### Parameters +### Template parameters *`Index`*\ The element offset. @@ -38,6 +38,8 @@ The type of an element. *`Size`*\ The number of elements in the array. +### Parameters + *`arr`*\ The array to select from. @@ -82,7 +84,7 @@ template void swap(std::array& left, std::array& right); ``` -### Parameters +### Template parameters *`Type`*\ The type of an element. @@ -90,6 +92,8 @@ The type of an element. *`Size`*\ The size of the array. +### Parameters + *`left`*\ The first array to swap. From 183ce44376e3e3e245e936ba5fca94e085386cc0 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 20 Aug 2025 18:47:55 +0800 Subject: [PATCH 1496/2255] Document C++20 `std::to_array` function --- docs/standard-library/array-functions.md | 74 +++++++++++++++++++++++- docs/standard-library/array.md | 1 + 2 files changed, 72 insertions(+), 3 deletions(-) diff --git a/docs/standard-library/array-functions.md b/docs/standard-library/array-functions.md index c73093fd750..d2e34dae34d 100644 --- a/docs/standard-library/array-functions.md +++ b/docs/standard-library/array-functions.md @@ -2,12 +2,12 @@ title: " functions" description: "Learn more about: functions" ms.date: 11/04/2016 -f1_keywords: ["array/std::array::get", "array/std::get", "array/std::swap"] -helpviewer_keywords: ["std::array [C++], get", "std::get [C++]", "std::swap [C++]"] +f1_keywords: ["array/std::array::get", "array/std::get", "array/std::swap", "array/std::to_array"] +helpviewer_keywords: ["std::array [C++], get", "std::get [C++]", "std::swap [C++]", "std::to_array [C++]"] --- # `` functions -The `` header includes two non-member functions, `get` and `swap`, that operate on **array** objects. +The `` header includes three non-member functions, `get`, `swap`, and `to_array` that operate on **array** objects. ## `get` @@ -150,6 +150,74 @@ int main() 0 1 2 3 ``` +## `to_array` + +Converts a built-in array to a `std::array` object. + +```cpp +// C++20 +template +constexpr std::array, Size> to_array(Type (&arr)[Size]); + +// C++20 +template +constexpr std::array, Size> to_array(Type (&&arr)[Size]); +``` + +### Template parameters + +*`Type`*\ +The type of an element. + +*`Size`*\ +The size of the input array. + +### Parameters + +*`arr`*\ +The input array used for conversion. + +### Example + +```cpp +// std_to_array.cpp +// Requires /std:c++20 or later + +#include +#include + +int main() +{ + int arr1[]{ 1, 2, 3 }; + std::array arr2 = std::to_array(arr1); + + std::cout << "std::to_array(arr1):\n"; + for (const auto& i : arr2) + { + std::cout << i << " "; + } + std::cout << std::endl; + + // The size is 7 as it includes the null terminator + std::array arr3 = std::to_array("string"); + + std::cout << "\nstd::to_array(\"string\"):\n"; + for (const auto& i : arr3) + { + std::cout << i << " "; + } + std::cout << std::endl; +} +``` + +```Output +std::to_array(arr1): +1 2 3 + +std::to_array("string"): +s t r i n g +``` + ## See also [``](../standard-library/array.md) diff --git a/docs/standard-library/array.md b/docs/standard-library/array.md index 85273440ba3..1bf0296e70b 100644 --- a/docs/standard-library/array.md +++ b/docs/standard-library/array.md @@ -45,6 +45,7 @@ Defines the container class template **array** and several supporting templates. |-|-| |[get](../standard-library/array-functions.md#get)|Get specified array element.| |[swap](../standard-library/array-functions.md#swap)|Exchanges the contents of one array with the contents of another array.| +| [`to_array`](array-functions.md#to_array) | Converts a built-in array to a `std::array` object. | ## See also From 99323ab1dc7aabbc3ed16af1bd1c03fc683d93e1 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 20 Aug 2025 18:49:18 +0800 Subject: [PATCH 1497/2255] Simplify single "See also" link in `` functions reference --- docs/standard-library/array-functions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard-library/array-functions.md b/docs/standard-library/array-functions.md index d2e34dae34d..a3924b24921 100644 --- a/docs/standard-library/array-functions.md +++ b/docs/standard-library/array-functions.md @@ -220,4 +220,4 @@ s t r i n g ## See also -[``](../standard-library/array.md) +[``](array.md) From d1f2f14af18e9b9aac6a18cf2ded9809e047f36b Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 20 Aug 2025 18:50:57 +0800 Subject: [PATCH 1498/2255] Update metadata in 2 standard library topics --- docs/standard-library/array-functions.md | 2 +- docs/standard-library/array.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/standard-library/array-functions.md b/docs/standard-library/array-functions.md index a3924b24921..709189a51eb 100644 --- a/docs/standard-library/array-functions.md +++ b/docs/standard-library/array-functions.md @@ -1,7 +1,7 @@ --- title: " functions" description: "Learn more about: functions" -ms.date: 11/04/2016 +ms.date: 08/20/2025 f1_keywords: ["array/std::array::get", "array/std::get", "array/std::swap", "array/std::to_array"] helpviewer_keywords: ["std::array [C++], get", "std::get [C++]", "std::swap [C++]", "std::to_array [C++]"] --- diff --git a/docs/standard-library/array.md b/docs/standard-library/array.md index 1bf0296e70b..331316ee9e2 100644 --- a/docs/standard-library/array.md +++ b/docs/standard-library/array.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: " title: "" -ms.date: "11/04/2016" +description: "Learn more about: " +ms.date: 11/04/2016 f1_keywords: [""] helpviewer_keywords: ["array header"] --- From 11b48f71bc4cca703dc881a95a07d4cf3243f329 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 20 Aug 2025 23:03:45 +0800 Subject: [PATCH 1499/2255] Add blockquotes for error messages in range [C3531, C3620] --- docs/error-messages/compiler-errors-2/compiler-error-c3531.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3532.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3533.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3535.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3536.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3537.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3538.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3539.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3540.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3541.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3550.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3551.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3552.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3554.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3603.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3609.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3610.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3611.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3612.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3618.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3619.md | 2 +- 21 files changed, 21 insertions(+), 21 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3531.md b/docs/error-messages/compiler-errors-2/compiler-error-c3531.md index 5881579fcb1..58c3dc8d49c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3531.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3531.md @@ -8,7 +8,7 @@ ms.assetid: 2bdb9fdc-9ddf-403e-8b92-02763d434487 --- # Compiler Error C3531 -'symbol': a symbol whose type contains 'auto' must have an initializer +> 'symbol': a symbol whose type contains 'auto' must have an initializer The specified variable does not have an initializer expression. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3532.md b/docs/error-messages/compiler-errors-2/compiler-error-c3532.md index ab9dd8b31e9..53fdafe1e7f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3532.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3532.md @@ -8,7 +8,7 @@ ms.assetid: 51067853-eda8-4f59-86e8-8924e16d3a95 --- # Compiler Error C3532 -'type': incorrect usage of 'auto' +> 'type': incorrect usage of 'auto' The indicated type cannot be declared with the **`auto`** keyword. For example, you cannot use the **`auto`** keyword to declare an array or a method return type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3533.md b/docs/error-messages/compiler-errors-2/compiler-error-c3533.md index eea7dbe64db..ee12a62b293 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3533.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3533.md @@ -8,7 +8,7 @@ ms.assetid: a68b1ba5-466e-4190-a1a4-505ccfe548b7 --- # Compiler Error C3533 -'type': a parameter cannot have a type that contains 'auto' +> 'type': a parameter cannot have a type that contains 'auto' A method or template parameter cannot be declared with the **`auto`** keyword if the default [/Zc:auto](../../build/reference/zc-auto-deduce-variable-type.md) compiler option is in effect. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3535.md b/docs/error-messages/compiler-errors-2/compiler-error-c3535.md index 05d22de8d0a..4cda25aaa68 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3535.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3535.md @@ -8,7 +8,7 @@ ms.assetid: 24449c98-f681-484d-a00b-32533dca3a88 --- # Compiler Error C3535 -cannot deduce type for 'type1' from 'type2' +> cannot deduce type for 'type1' from 'type2' The type of the variable declared by the **`auto`** keyword cannot be deduced from the type of the initialization expression. For example, this error occurs if the initialization expression evaluates to **`void`**, which is not a type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3536.md b/docs/error-messages/compiler-errors-2/compiler-error-c3536.md index 0e13e6df597..5d35662dea1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3536.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3536.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C3536"] --- # Compiler Error C3536 -'symbol': cannot be used before it is initialized +> 'symbol': cannot be used before it is initialized The indicated symbol cannot be used before it is initialized. In practice, this means that a variable cannot be used to initialize itself. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3537.md b/docs/error-messages/compiler-errors-2/compiler-error-c3537.md index d7562baaf89..3a693e88ef5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3537.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3537.md @@ -8,7 +8,7 @@ ms.assetid: f537ebd1-4fb0-4e09-a453-4f38db2c6881 --- # Compiler Error C3537 -'type': you cannot cast to a type that contains 'auto' +> 'type': you cannot cast to a type that contains 'auto' You cannot cast a variable to the indicated type because the type contains the **`auto`** keyword and the default [/Zc:auto](../../build/reference/zc-auto-deduce-variable-type.md) compiler option is in effect. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3538.md b/docs/error-messages/compiler-errors-2/compiler-error-c3538.md index 3f503e35509..a5979b516d8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3538.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3538.md @@ -8,7 +8,7 @@ ms.assetid: ef3698a5-7356-4c62-b9af-5d3a4baed958 --- # Compiler Error C3538 -in a declarator-list 'auto' must always deduce to the same type +> in a declarator-list 'auto' must always deduce to the same type All the declared variables in a declaration list do not resolve to the same type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3539.md b/docs/error-messages/compiler-errors-2/compiler-error-c3539.md index c7235b2ddd4..8b0b62ba052 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3539.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3539.md @@ -8,7 +8,7 @@ ms.assetid: 34a33a0f-d1b6-498f-b312-ffad2d4799b3 --- # Compiler Error C3539 -'type': a template-argument cannot be a type that contains 'auto' +> 'type': a template-argument cannot be a type that contains 'auto' The indicated template argument type cannot contain a usage of the **`auto`** keyword. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3540.md b/docs/error-messages/compiler-errors-2/compiler-error-c3540.md index 38339db5a72..d6be84ee1f7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3540.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3540.md @@ -8,7 +8,7 @@ ms.assetid: 3c0c959c-e3b7-40eb-b922-ccac44bd9d85 --- # Compiler Error C3540 -'type': sizeof cannot be applied to a type that contains 'auto' +> 'type': sizeof cannot be applied to a type that contains 'auto' The [sizeof](../../cpp/sizeof-operator.md) operator cannot be applied to the indicated type because it contains the **`auto`** specifier. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3541.md b/docs/error-messages/compiler-errors-2/compiler-error-c3541.md index 10701262c51..a9659ee56f5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3541.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3541.md @@ -8,7 +8,7 @@ ms.assetid: 252cfd4c-5fd2-415e-a17d-6b0c254350db --- # Compiler Error C3541 -'type': typeid cannot be applied to a type that contains 'auto' +> 'type': typeid cannot be applied to a type that contains 'auto' The [typeid](../../extensions/typeid-cpp-component-extensions.md) operator cannot be applied to the indicated type because it contains the **`auto`** specifier. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3550.md b/docs/error-messages/compiler-errors-2/compiler-error-c3550.md index 01e5f185657..ba825ea8a39 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3550.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3550.md @@ -8,7 +8,7 @@ ms.assetid: 9f2d5ffc-e429-41a1-89e3-7acc4fd47e14 --- # Compiler Error C3550 -only plain 'decltype(auto)' is allowed in this context +> only plain 'decltype(auto)' is allowed in this context If [`decltype(auto)`](../../cpp/decltype-cpp.md#decltype-and-auto) is used as a placeholder for the return type of a function, it must be used by itself. It cannot be used as part of a pointer declaration (`decltype(auto)*`), a reference declaration (`decltype(auto)&`), or any other such qualification. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3551.md b/docs/error-messages/compiler-errors-2/compiler-error-c3551.md index 0423abf69ee..8af242406be 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3551.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3551.md @@ -8,7 +8,7 @@ ms.assetid: c8ee23da-6568-40db-93a6-3ddb7ac47712 --- # Compiler Error C3551 -if a trailing return type is used then the leading return type shall be the single type-specifier 'auto' (not 'type') +> if a trailing return type is used then the leading return type shall be the single type-specifier 'auto' (not 'type') The leading return type in [trailing return type](../../cpp/functions-cpp.md#trailing-return-types) syntax must contain only `auto`. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3552.md b/docs/error-messages/compiler-errors-2/compiler-error-c3552.md index 6d6c214ea1c..42d5adfa92b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3552.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3552.md @@ -8,7 +8,7 @@ ms.assetid: 83401524-1bf1-44c0-8aca-a6eb35c4224c --- # Compiler Error C3552 -'typename': a late specified return type cannot contain 'auto' +> 'typename': a late specified return type cannot contain 'auto' If you use the **`auto`** keyword as a placeholder for the return type of a function, you must provide a late-specified return type. However, you cannot use another **`auto`** keyword to specify the late-specified return type. For example, the following code fragment yields error C3552. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3554.md b/docs/error-messages/compiler-errors-2/compiler-error-c3554.md index 72f066bf8ed..91a13f0b637 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3554.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3554.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C3554"] --- # Compiler Error C3554 -'decltype' cannot be combined with any other type-specifier +> 'decltype' cannot be combined with any other type-specifier You cannot qualify the `decltype()` keyword with any type specifier. For example, the following code fragment yields error C3554. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3603.md b/docs/error-messages/compiler-errors-2/compiler-error-c3603.md index 7e37da6a646..db71733dc21 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3603.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3603.md @@ -8,6 +8,6 @@ ms.assetid: d0cdc7d3-f25a-4242-9ee8-51fe044a9959 --- # Compiler Error C3603 -'Symbol' : type 'Type' not yet supported +> 'Symbol' : type 'Type' not yet supported You attempted to use a data type that is not yet supported by the .NET runtime in a managed object. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3609.md b/docs/error-messages/compiler-errors-2/compiler-error-c3609.md index b667614aedd..0e6b0990a51 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3609.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3609.md @@ -8,7 +8,7 @@ ms.assetid: 801e7f79-4ac6-4f8f-955f-703cdf095d00 --- # Compiler Error C3609 -'member': a sealed or final function must be virtual +> 'member': a sealed or final function must be virtual The [sealed](../../extensions/sealed-cpp-component-extensions.md) and [final](../../cpp/final-specifier.md) keywords are only allowed on a class, struct, or member function marked **`virtual`**. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3610.md b/docs/error-messages/compiler-errors-2/compiler-error-c3610.md index 81720af72c7..cf321769a85 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3610.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3610.md @@ -8,7 +8,7 @@ ms.assetid: 9349a348-9d37-4a00-9eab-481039268d31 --- # Compiler Error C3610 -'valuetype': value type must be 'boxed' before method 'method' can be called +> 'valuetype': value type must be 'boxed' before method 'method' can be called By default, a value type is not on the managed heap. Before you can call methods from .NET runtime classes, such as `Object`, you need to move the value type to the managed heap. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3611.md b/docs/error-messages/compiler-errors-2/compiler-error-c3611.md index 53a3ecfdb1d..0f21ffcc4d1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3611.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3611.md @@ -8,7 +8,7 @@ ms.assetid: 42f3e320-41de-420a-bd05-8924cab765aa --- # Compiler Error C3611 -'function': a sealed function cannot have a pure-specifier +> 'function': a sealed function cannot have a pure-specifier A sealed function was declared incorrectly. For more information, see [sealed](../../extensions/sealed-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3612.md b/docs/error-messages/compiler-errors-2/compiler-error-c3612.md index 133fdce7452..61d4df089f2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3612.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3612.md @@ -8,7 +8,7 @@ ms.assetid: aa6e3a2b-4afa-481c-98c1-1b6d1f82f869 --- # Compiler Error C3612 -'type': a sealed class cannot be abstract +> 'type': a sealed class cannot be abstract Types defined by using `value` are sealed by default, and a class is abstract unless it implements all methods of its base. A sealed abstract class can neither be a base class nor can it be instantiated. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3618.md b/docs/error-messages/compiler-errors-2/compiler-error-c3618.md index facaf056dbb..b3e51f15366 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3618.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3618.md @@ -8,7 +8,7 @@ ms.assetid: cacc105d-4389-4cb8-ae6c-41a3622e9a86 --- # Compiler Error C3618 -'function': a method marked DllImport cannot be defined +> 'function': a method marked DllImport cannot be defined A method marked with is defined in the specified.DLL. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3619.md b/docs/error-messages/compiler-errors-2/compiler-error-c3619.md index 6867cad9b73..582102d43b8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3619.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3619.md @@ -8,7 +8,7 @@ ms.assetid: 76ae80d0-9fbe-4297-a1ef-b1503377fdcf --- # Compiler Error C3619 -a template cannot be declared within a managed or WinRT type +> a template cannot be declared within a managed or WinRT type Class templates are not allowed in a managed or WinRT class or interface. From 2a8605c1870672f6540d40281429d13db1e54d58 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 20 Aug 2025 23:10:12 +0800 Subject: [PATCH 1500/2255] Add "Remarks" and "Example" headings for error references in range [C3531, C3620] --- .../compiler-errors-2/compiler-error-c3531.md | 2 ++ .../compiler-errors-2/compiler-error-c3532.md | 2 ++ .../compiler-errors-2/compiler-error-c3533.md | 2 ++ .../compiler-errors-2/compiler-error-c3535.md | 2 ++ .../compiler-errors-2/compiler-error-c3536.md | 2 ++ .../compiler-errors-2/compiler-error-c3537.md | 2 ++ .../compiler-errors-2/compiler-error-c3538.md | 2 ++ .../compiler-errors-2/compiler-error-c3539.md | 2 ++ .../compiler-errors-2/compiler-error-c3540.md | 2 ++ .../compiler-errors-2/compiler-error-c3541.md | 2 ++ .../compiler-errors-2/compiler-error-c3550.md | 2 ++ .../compiler-errors-2/compiler-error-c3551.md | 4 ++++ .../compiler-errors-2/compiler-error-c3552.md | 8 +++++++- .../compiler-errors-2/compiler-error-c3553.md | 8 +++++++- .../compiler-errors-2/compiler-error-c3554.md | 8 +++++++- .../compiler-errors-2/compiler-error-c3555.md | 2 ++ .../compiler-errors-2/compiler-error-c3556.md | 2 ++ .../compiler-errors-2/compiler-error-c3603.md | 2 ++ .../compiler-errors-2/compiler-error-c3609.md | 4 ++++ .../compiler-errors-2/compiler-error-c3610.md | 2 ++ .../compiler-errors-2/compiler-error-c3611.md | 2 ++ .../compiler-errors-2/compiler-error-c3612.md | 2 ++ .../compiler-errors-2/compiler-error-c3615.md | 2 ++ .../compiler-errors-2/compiler-error-c3618.md | 2 ++ .../compiler-errors-2/compiler-error-c3619.md | 2 ++ 25 files changed, 69 insertions(+), 3 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3531.md b/docs/error-messages/compiler-errors-2/compiler-error-c3531.md index 58c3dc8d49c..60fcd601caa 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3531.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3531.md @@ -10,6 +10,8 @@ ms.assetid: 2bdb9fdc-9ddf-403e-8b92-02763d434487 > 'symbol': a symbol whose type contains 'auto' must have an initializer +## Remarks + The specified variable does not have an initializer expression. ### To correct this error diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3532.md b/docs/error-messages/compiler-errors-2/compiler-error-c3532.md index 53fdafe1e7f..7124d936bb6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3532.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3532.md @@ -10,6 +10,8 @@ ms.assetid: 51067853-eda8-4f59-86e8-8924e16d3a95 > 'type': incorrect usage of 'auto' +## Remarks + The indicated type cannot be declared with the **`auto`** keyword. For example, you cannot use the **`auto`** keyword to declare an array or a method return type. ### To correct this error diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3533.md b/docs/error-messages/compiler-errors-2/compiler-error-c3533.md index ee12a62b293..1ac5987d02a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3533.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3533.md @@ -10,6 +10,8 @@ ms.assetid: a68b1ba5-466e-4190-a1a4-505ccfe548b7 > 'type': a parameter cannot have a type that contains 'auto' +## Remarks + A method or template parameter cannot be declared with the **`auto`** keyword if the default [/Zc:auto](../../build/reference/zc-auto-deduce-variable-type.md) compiler option is in effect. ### To correct this error diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3535.md b/docs/error-messages/compiler-errors-2/compiler-error-c3535.md index 4cda25aaa68..536655f9591 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3535.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3535.md @@ -10,6 +10,8 @@ ms.assetid: 24449c98-f681-484d-a00b-32533dca3a88 > cannot deduce type for 'type1' from 'type2' +## Remarks + The type of the variable declared by the **`auto`** keyword cannot be deduced from the type of the initialization expression. For example, this error occurs if the initialization expression evaluates to **`void`**, which is not a type. ### To correct this error diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3536.md b/docs/error-messages/compiler-errors-2/compiler-error-c3536.md index 5d35662dea1..cb8018a28dc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3536.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3536.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C3536"] > 'symbol': cannot be used before it is initialized +## Remarks + The indicated symbol cannot be used before it is initialized. In practice, this means that a variable cannot be used to initialize itself. ### To correct this error diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3537.md b/docs/error-messages/compiler-errors-2/compiler-error-c3537.md index 3a693e88ef5..a53f72df67b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3537.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3537.md @@ -10,6 +10,8 @@ ms.assetid: f537ebd1-4fb0-4e09-a453-4f38db2c6881 > 'type': you cannot cast to a type that contains 'auto' +## Remarks + You cannot cast a variable to the indicated type because the type contains the **`auto`** keyword and the default [/Zc:auto](../../build/reference/zc-auto-deduce-variable-type.md) compiler option is in effect. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3538.md b/docs/error-messages/compiler-errors-2/compiler-error-c3538.md index a5979b516d8..fa69e6d3e48 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3538.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3538.md @@ -10,6 +10,8 @@ ms.assetid: ef3698a5-7356-4c62-b9af-5d3a4baed958 > in a declarator-list 'auto' must always deduce to the same type +## Remarks + All the declared variables in a declaration list do not resolve to the same type. ### To correct this error diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3539.md b/docs/error-messages/compiler-errors-2/compiler-error-c3539.md index 8b0b62ba052..38de072b7ed 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3539.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3539.md @@ -10,6 +10,8 @@ ms.assetid: 34a33a0f-d1b6-498f-b312-ffad2d4799b3 > 'type': a template-argument cannot be a type that contains 'auto' +## Remarks + The indicated template argument type cannot contain a usage of the **`auto`** keyword. ### To correct this error diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3540.md b/docs/error-messages/compiler-errors-2/compiler-error-c3540.md index d6be84ee1f7..62c474e99eb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3540.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3540.md @@ -10,6 +10,8 @@ ms.assetid: 3c0c959c-e3b7-40eb-b922-ccac44bd9d85 > 'type': sizeof cannot be applied to a type that contains 'auto' +## Remarks + The [sizeof](../../cpp/sizeof-operator.md) operator cannot be applied to the indicated type because it contains the **`auto`** specifier. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3541.md b/docs/error-messages/compiler-errors-2/compiler-error-c3541.md index a9659ee56f5..222934ad8ee 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3541.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3541.md @@ -10,6 +10,8 @@ ms.assetid: 252cfd4c-5fd2-415e-a17d-6b0c254350db > 'type': typeid cannot be applied to a type that contains 'auto' +## Remarks + The [typeid](../../extensions/typeid-cpp-component-extensions.md) operator cannot be applied to the indicated type because it contains the **`auto`** specifier. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3550.md b/docs/error-messages/compiler-errors-2/compiler-error-c3550.md index ba825ea8a39..f2303dc5f3d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3550.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3550.md @@ -10,6 +10,8 @@ ms.assetid: 9f2d5ffc-e429-41a1-89e3-7acc4fd47e14 > only plain 'decltype(auto)' is allowed in this context +## Remarks + If [`decltype(auto)`](../../cpp/decltype-cpp.md#decltype-and-auto) is used as a placeholder for the return type of a function, it must be used by itself. It cannot be used as part of a pointer declaration (`decltype(auto)*`), a reference declaration (`decltype(auto)&`), or any other such qualification. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3551.md b/docs/error-messages/compiler-errors-2/compiler-error-c3551.md index 8af242406be..8cb2ae2bafe 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3551.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3551.md @@ -10,8 +10,12 @@ ms.assetid: c8ee23da-6568-40db-93a6-3ddb7ac47712 > if a trailing return type is used then the leading return type shall be the single type-specifier 'auto' (not 'type') +## Remarks + The leading return type in [trailing return type](../../cpp/functions-cpp.md#trailing-return-types) syntax must contain only `auto`. +## Example + ```cpp // C3551.cpp // compile with: /c diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3552.md b/docs/error-messages/compiler-errors-2/compiler-error-c3552.md index 42d5adfa92b..e0635e49bb5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3552.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3552.md @@ -10,6 +10,12 @@ ms.assetid: 83401524-1bf1-44c0-8aca-a6eb35c4224c > 'typename': a late specified return type cannot contain 'auto' -If you use the **`auto`** keyword as a placeholder for the return type of a function, you must provide a late-specified return type. However, you cannot use another **`auto`** keyword to specify the late-specified return type. For example, the following code fragment yields error C3552. +## Remarks + +If you use the **`auto`** keyword as a placeholder for the return type of a function, you must provide a late-specified return type. However, you cannot use another **`auto`** keyword to specify the late-specified return type. + +## Example + +For example, the following code fragment yields error C3552. `auto myFunction->auto; // C3552` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3553.md b/docs/error-messages/compiler-errors-2/compiler-error-c3553.md index aa032de7ddc..0021183eb7f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3553.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3553.md @@ -10,7 +10,13 @@ ms.assetid: 7f84bf37-6419-4ad3-ab30-64266100b930 > decltype expects an expression not a type -The `decltype()` keyword requires an expression as an argument, not the name of a type. For example, the last statement in the following code fragment yields error C3553. +## Remarks + +The `decltype()` keyword requires an expression as an argument, not the name of a type. + +## Example + +For example, the last statement in the following code fragment yields error C3553. ```cpp int x = 0; diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3554.md b/docs/error-messages/compiler-errors-2/compiler-error-c3554.md index 91a13f0b637..d05cfaf3689 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3554.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3554.md @@ -9,7 +9,13 @@ helpviewer_keywords: ["C3554"] > 'decltype' cannot be combined with any other type-specifier -You cannot qualify the `decltype()` keyword with any type specifier. For example, the following code fragment yields error C3554. +## Remarks + +You cannot qualify the `decltype()` keyword with any type specifier. + +## Example + +For example, the following code fragment yields error C3554. ```cpp int x; diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3555.md b/docs/error-messages/compiler-errors-2/compiler-error-c3555.md index 20d3a809439..037af623f67 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3555.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3555.md @@ -10,6 +10,8 @@ ms.assetid: b4311bd3-851b-479a-9965-d03f39dd8fd4 > incorrect argument to 'decltype' +## Remarks + The argument to the `decltype(`*expression*`)` type specifier is not a valid expression. > [!NOTE] diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3556.md b/docs/error-messages/compiler-errors-2/compiler-error-c3556.md index d6f25c1171d..552ca7578a9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3556.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3556.md @@ -10,6 +10,8 @@ ms.assetid: 9b002dcc-494e-414f-9587-20c2a0a39333 > '*expression*': incorrect argument to 'decltype' +## Remarks + The compiler cannot deduce the type of the expression that is the argument to the `decltype(`*expression*`)` type specifier. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3603.md b/docs/error-messages/compiler-errors-2/compiler-error-c3603.md index db71733dc21..1335f54e994 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3603.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3603.md @@ -10,4 +10,6 @@ ms.assetid: d0cdc7d3-f25a-4242-9ee8-51fe044a9959 > 'Symbol' : type 'Type' not yet supported +## Remarks + You attempted to use a data type that is not yet supported by the .NET runtime in a managed object. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3609.md b/docs/error-messages/compiler-errors-2/compiler-error-c3609.md index 0e6b0990a51..4fe7566b6f2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3609.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3609.md @@ -10,8 +10,12 @@ ms.assetid: 801e7f79-4ac6-4f8f-955f-703cdf095d00 > 'member': a sealed or final function must be virtual +## Remarks + The [sealed](../../extensions/sealed-cpp-component-extensions.md) and [final](../../cpp/final-specifier.md) keywords are only allowed on a class, struct, or member function marked **`virtual`**. +## Example + The following sample generates C3609: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3610.md b/docs/error-messages/compiler-errors-2/compiler-error-c3610.md index cf321769a85..df4b2dbee8e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3610.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3610.md @@ -10,6 +10,8 @@ ms.assetid: 9349a348-9d37-4a00-9eab-481039268d31 > 'valuetype': value type must be 'boxed' before method 'method' can be called +## Remarks + By default, a value type is not on the managed heap. Before you can call methods from .NET runtime classes, such as `Object`, you need to move the value type to the managed heap. C3610 is only reachable using the obsolete compiler option **/clr:oldSyntax**. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3611.md b/docs/error-messages/compiler-errors-2/compiler-error-c3611.md index 0f21ffcc4d1..2696281d4d3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3611.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3611.md @@ -10,6 +10,8 @@ ms.assetid: 42f3e320-41de-420a-bd05-8924cab765aa > 'function': a sealed function cannot have a pure-specifier +## Remarks + A sealed function was declared incorrectly. For more information, see [sealed](../../extensions/sealed-cpp-component-extensions.md). ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3612.md b/docs/error-messages/compiler-errors-2/compiler-error-c3612.md index 61d4df089f2..66d056d3782 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3612.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3612.md @@ -10,6 +10,8 @@ ms.assetid: aa6e3a2b-4afa-481c-98c1-1b6d1f82f869 > 'type': a sealed class cannot be abstract +## Remarks + Types defined by using `value` are sealed by default, and a class is abstract unless it implements all methods of its base. A sealed abstract class can neither be a base class nor can it be instantiated. For more information, see [Classes and Structs](../../extensions/classes-and-structs-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3615.md b/docs/error-messages/compiler-errors-2/compiler-error-c3615.md index a66992f97d8..a66ef770e65 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3615.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3615.md @@ -10,6 +10,8 @@ ms.assetid: 5ce96ba9-3d31-49f3-9aa8-24e5cdf6dcfc > constexpr function '*function*' cannot result in a constant expression +## Remarks + The function *function* could not be evaluated as **`constexpr`** at compile time. To be **`constexpr`**, a function can only call other **`constexpr`** functions. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3618.md b/docs/error-messages/compiler-errors-2/compiler-error-c3618.md index b3e51f15366..a030833c230 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3618.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3618.md @@ -10,6 +10,8 @@ ms.assetid: cacc105d-4389-4cb8-ae6c-41a3622e9a86 > 'function': a method marked DllImport cannot be defined +## Remarks + A method marked with is defined in the specified.DLL. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3619.md b/docs/error-messages/compiler-errors-2/compiler-error-c3619.md index 582102d43b8..b2395d7839b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3619.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3619.md @@ -10,6 +10,8 @@ ms.assetid: 76ae80d0-9fbe-4297-a1ef-b1503377fdcf > a template cannot be declared within a managed or WinRT type +## Remarks + Class templates are not allowed in a managed or WinRT class or interface. C3619 is only reachable using the obsolete compiler option **/clr:oldSyntax**. From 467aca311e1ceab7d6efe629def85bbedaf4d068 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 20 Aug 2025 23:10:54 +0800 Subject: [PATCH 1501/2255] Replace term "sample" with "example" for error references in range [C3531, C3620] --- docs/error-messages/compiler-errors-2/compiler-error-c3550.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3609.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3611.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3612.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3618.md | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3550.md b/docs/error-messages/compiler-errors-2/compiler-error-c3550.md index f2303dc5f3d..10a2a27041a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3550.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3550.md @@ -16,7 +16,7 @@ If [`decltype(auto)`](../../cpp/decltype-cpp.md#decltype-and-auto) is used as a ## Example -The following sample generates C3550: +The following example generates C3550: ```cpp // C3550.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3609.md b/docs/error-messages/compiler-errors-2/compiler-error-c3609.md index 4fe7566b6f2..45198695831 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3609.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3609.md @@ -16,7 +16,7 @@ The [sealed](../../extensions/sealed-cpp-component-extensions.md) and [final](.. ## Example -The following sample generates C3609: +The following example generates C3609: ```cpp // C3609.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3611.md b/docs/error-messages/compiler-errors-2/compiler-error-c3611.md index 2696281d4d3..15d0e0d278a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3611.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3611.md @@ -16,7 +16,7 @@ A sealed function was declared incorrectly. For more information, see [sealed]( ## Example -The following sample generates C3611. +The following example generates C3611. ```cpp // C3611.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3612.md b/docs/error-messages/compiler-errors-2/compiler-error-c3612.md index 66d056d3782..69464cbc724 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3612.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3612.md @@ -18,7 +18,7 @@ For more information, see [Classes and Structs](../../extensions/classes-and-str ## Example -The following sample generates C3612: +The following example generates C3612: ```cpp // C3612.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3618.md b/docs/error-messages/compiler-errors-2/compiler-error-c3618.md index a030833c230..fef9c5f8456 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3618.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3618.md @@ -16,7 +16,7 @@ A method marked with is ## Example -The following sample generates C3618. +The following example generates C3618. ```cpp // C3618.cpp From a3bc89dc39cb09b33e8a5f7ea373b2916e49df1a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 20 Aug 2025 23:14:36 +0800 Subject: [PATCH 1502/2255] Update metadata for error references in range [C3531, C3620] --- .../error-messages/compiler-errors-2/compiler-error-c3531.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3532.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3533.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3535.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3537.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3538.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3539.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3540.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3541.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3550.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3551.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3552.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3553.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3555.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3556.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3603.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3609.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3610.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3611.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3612.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3615.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3618.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3619.md | 5 ++--- 23 files changed, 46 insertions(+), 69 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3531.md b/docs/error-messages/compiler-errors-2/compiler-error-c3531.md index 60fcd601caa..af8e3c7faad 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3531.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3531.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3531" title: "Compiler Error C3531" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3531" +ms.date: 11/04/2016 f1_keywords: ["C3531"] helpviewer_keywords: ["C3531"] -ms.assetid: 2bdb9fdc-9ddf-403e-8b92-02763d434487 --- # Compiler Error C3531 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3532.md b/docs/error-messages/compiler-errors-2/compiler-error-c3532.md index 7124d936bb6..ae31df7e246 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3532.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3532.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3532" title: "Compiler Error C3532" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3532" +ms.date: 11/04/2016 f1_keywords: ["C3532"] helpviewer_keywords: ["C3532"] -ms.assetid: 51067853-eda8-4f59-86e8-8924e16d3a95 --- # Compiler Error C3532 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3533.md b/docs/error-messages/compiler-errors-2/compiler-error-c3533.md index 1ac5987d02a..0b56398b7bd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3533.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3533.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3533" title: "Compiler Error C3533" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3533" +ms.date: 11/04/2016 f1_keywords: ["C3533"] helpviewer_keywords: ["C3533"] -ms.assetid: a68b1ba5-466e-4190-a1a4-505ccfe548b7 --- # Compiler Error C3533 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3535.md b/docs/error-messages/compiler-errors-2/compiler-error-c3535.md index 536655f9591..7ea0627d720 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3535.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3535.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3535" title: "Compiler Error C3535" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3535" +ms.date: 11/04/2016 f1_keywords: ["C3535"] helpviewer_keywords: ["C3535"] -ms.assetid: 24449c98-f681-484d-a00b-32533dca3a88 --- # Compiler Error C3535 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3537.md b/docs/error-messages/compiler-errors-2/compiler-error-c3537.md index a53f72df67b..1daeb6d5e7a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3537.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3537.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3537" title: "Compiler Error C3537" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3537" +ms.date: 11/04/2016 f1_keywords: ["C3537"] helpviewer_keywords: ["C3537"] -ms.assetid: f537ebd1-4fb0-4e09-a453-4f38db2c6881 --- # Compiler Error C3537 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3538.md b/docs/error-messages/compiler-errors-2/compiler-error-c3538.md index fa69e6d3e48..58df9218dba 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3538.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3538.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3538" title: "Compiler Error C3538" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3538" +ms.date: 11/04/2016 f1_keywords: ["C3538"] helpviewer_keywords: ["C3538"] -ms.assetid: ef3698a5-7356-4c62-b9af-5d3a4baed958 --- # Compiler Error C3538 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3539.md b/docs/error-messages/compiler-errors-2/compiler-error-c3539.md index 38de072b7ed..2ace0616df1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3539.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3539.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3539" title: "Compiler Error C3539" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3539" +ms.date: 11/04/2016 f1_keywords: ["C3539"] helpviewer_keywords: ["C3539"] -ms.assetid: 34a33a0f-d1b6-498f-b312-ffad2d4799b3 --- # Compiler Error C3539 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3540.md b/docs/error-messages/compiler-errors-2/compiler-error-c3540.md index 62c474e99eb..b1688781639 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3540.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3540.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3540" title: "Compiler Error C3540" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3540" +ms.date: 11/04/2016 f1_keywords: ["C3540"] helpviewer_keywords: ["C3540"] -ms.assetid: 3c0c959c-e3b7-40eb-b922-ccac44bd9d85 --- # Compiler Error C3540 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3541.md b/docs/error-messages/compiler-errors-2/compiler-error-c3541.md index 222934ad8ee..c29ca9eebf6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3541.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3541.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3541" title: "Compiler Error C3541" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3541" +ms.date: 11/04/2016 f1_keywords: ["C3541"] helpviewer_keywords: ["C3541"] -ms.assetid: 252cfd4c-5fd2-415e-a17d-6b0c254350db --- # Compiler Error C3541 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3550.md b/docs/error-messages/compiler-errors-2/compiler-error-c3550.md index 10a2a27041a..c77d30507be 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3550.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3550.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3550" title: "Compiler Error C3550" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3550" +ms.date: 11/04/2016 f1_keywords: ["C3550"] helpviewer_keywords: ["C3550"] -ms.assetid: 9f2d5ffc-e429-41a1-89e3-7acc4fd47e14 --- # Compiler Error C3550 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3551.md b/docs/error-messages/compiler-errors-2/compiler-error-c3551.md index 8cb2ae2bafe..c0785b1132e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3551.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3551.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3551" title: "Compiler Error C3551" -ms.date: "10/07/2023" +description: "Learn more about: Compiler Error C3551" +ms.date: 10/07/2023 f1_keywords: ["C3551"] helpviewer_keywords: ["C3551"] -ms.assetid: c8ee23da-6568-40db-93a6-3ddb7ac47712 --- # Compiler Error C3551 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3552.md b/docs/error-messages/compiler-errors-2/compiler-error-c3552.md index e0635e49bb5..157c8b64b31 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3552.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3552.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3552" title: "Compiler Error C3552" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3552" +ms.date: 11/04/2016 f1_keywords: ["C3552"] helpviewer_keywords: ["C3552"] -ms.assetid: 83401524-1bf1-44c0-8aca-a6eb35c4224c --- # Compiler Error C3552 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3553.md b/docs/error-messages/compiler-errors-2/compiler-error-c3553.md index 0021183eb7f..ad12e1f1f4c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3553.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3553.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3553" title: "Compiler Error C3553" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3553" +ms.date: 11/04/2016 f1_keywords: ["C3553"] helpviewer_keywords: ["C3553"] -ms.assetid: 7f84bf37-6419-4ad3-ab30-64266100b930 --- # Compiler Error C3553 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3555.md b/docs/error-messages/compiler-errors-2/compiler-error-c3555.md index 037af623f67..3f716381455 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3555.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3555.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3555" title: "Compiler Error C3555" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3555" +ms.date: 11/04/2016 f1_keywords: ["C3555"] helpviewer_keywords: ["C3555"] -ms.assetid: b4311bd3-851b-479a-9965-d03f39dd8fd4 --- # Compiler Error C3555 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3556.md b/docs/error-messages/compiler-errors-2/compiler-error-c3556.md index 552ca7578a9..dbfbe198704 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3556.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3556.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3556" title: "Compiler Error C3556" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3556" +ms.date: 11/04/2016 f1_keywords: ["C3556"] helpviewer_keywords: ["C3556"] -ms.assetid: 9b002dcc-494e-414f-9587-20c2a0a39333 --- # Compiler Error C3556 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3603.md b/docs/error-messages/compiler-errors-2/compiler-error-c3603.md index 1335f54e994..d3e6f9a8806 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3603.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3603.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3603" title: "Compiler Error C3603" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3603" +ms.date: 11/04/2016 f1_keywords: ["C3603"] helpviewer_keywords: ["C3603"] -ms.assetid: d0cdc7d3-f25a-4242-9ee8-51fe044a9959 --- # Compiler Error C3603 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3609.md b/docs/error-messages/compiler-errors-2/compiler-error-c3609.md index 45198695831..e0a7eca6c11 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3609.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3609.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3609" title: "Compiler Error C3609" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3609" +ms.date: 11/04/2016 f1_keywords: ["C3609"] helpviewer_keywords: ["C3609"] -ms.assetid: 801e7f79-4ac6-4f8f-955f-703cdf095d00 --- # Compiler Error C3609 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3610.md b/docs/error-messages/compiler-errors-2/compiler-error-c3610.md index df4b2dbee8e..8d7ddb5eeda 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3610.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3610.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3610" title: "Compiler Error C3610" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3610" +ms.date: 11/04/2016 f1_keywords: ["C3610"] helpviewer_keywords: ["C3610"] -ms.assetid: 9349a348-9d37-4a00-9eab-481039268d31 --- # Compiler Error C3610 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3611.md b/docs/error-messages/compiler-errors-2/compiler-error-c3611.md index 15d0e0d278a..985c54d27e6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3611.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3611.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3611" title: "Compiler Error C3611" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3611" +ms.date: 11/04/2016 f1_keywords: ["C3611"] helpviewer_keywords: ["C3611"] -ms.assetid: 42f3e320-41de-420a-bd05-8924cab765aa --- # Compiler Error C3611 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3612.md b/docs/error-messages/compiler-errors-2/compiler-error-c3612.md index 69464cbc724..f8b2ed8dc3e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3612.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3612.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3612" title: "Compiler Error C3612" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3612" +ms.date: 11/04/2016 f1_keywords: ["C3612"] helpviewer_keywords: ["C3612"] -ms.assetid: aa6e3a2b-4afa-481c-98c1-1b6d1f82f869 --- # Compiler Error C3612 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3615.md b/docs/error-messages/compiler-errors-2/compiler-error-c3615.md index a66ef770e65..43d833dbcec 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3615.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3615.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3615" title: "Compiler Error C3615" -ms.date: "10/24/2017" +description: "Learn more about: Compiler Error C3615" +ms.date: 10/24/2017 f1_keywords: ["C3615"] helpviewer_keywords: ["C3615"] -ms.assetid: 5ce96ba9-3d31-49f3-9aa8-24e5cdf6dcfc --- # Compiler Error C3615 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3618.md b/docs/error-messages/compiler-errors-2/compiler-error-c3618.md index fef9c5f8456..0ee128a4473 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3618.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3618.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3618" title: "Compiler Error C3618" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3618" +ms.date: 11/04/2016 f1_keywords: ["C3618"] helpviewer_keywords: ["C3618"] -ms.assetid: cacc105d-4389-4cb8-ae6c-41a3622e9a86 --- # Compiler Error C3618 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3619.md b/docs/error-messages/compiler-errors-2/compiler-error-c3619.md index b2395d7839b..53c17536203 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3619.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3619.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3619" title: "Compiler Error C3619" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3619" +ms.date: 11/04/2016 f1_keywords: ["C3619"] helpviewer_keywords: ["C3619"] -ms.assetid: 76ae80d0-9fbe-4297-a1ef-b1503377fdcf --- # Compiler Error C3619 From ea3337e4af8117f5122a64ae2eaeb714c00d5b08 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 20 Aug 2025 23:16:22 +0800 Subject: [PATCH 1503/2255] Add leading example sentence in C3551 error reference --- docs/error-messages/compiler-errors-2/compiler-error-c3551.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3551.md b/docs/error-messages/compiler-errors-2/compiler-error-c3551.md index c0785b1132e..5496151097d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3551.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3551.md @@ -15,6 +15,8 @@ The leading return type in [trailing return type](../../cpp/functions-cpp.md#tra ## Example +The following example generates C3551: + ```cpp // C3551.cpp // compile with: /c From e89f4e60f98fb4697cd10dfb131e2bd344952049 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 20 Aug 2025 23:48:26 +0800 Subject: [PATCH 1504/2255] Add missing commas in template parameter list --- docs/standard-library/chrono-functions.md | 2 +- docs/standard-library/istreambuf-iterator-class.md | 2 +- docs/standard-library/ostream-iterator-class.md | 2 +- docs/standard-library/ostreambuf-iterator-class.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/standard-library/chrono-functions.md b/docs/standard-library/chrono-functions.md index e1812b1d349..ed9c593c99f 100644 --- a/docs/standard-library/chrono-functions.md +++ b/docs/standard-library/chrono-functions.md @@ -347,7 +347,7 @@ If the parse fails, `is.setstate`(`ios_base::failbit`) is called and the output ```cpp // 1) day - C++20 -template> +template> basic_istream& from_stream( basic_istream& is, const charT* fmt, diff --git a/docs/standard-library/istreambuf-iterator-class.md b/docs/standard-library/istreambuf-iterator-class.md index 9b05304ed12..78cc65c400e 100644 --- a/docs/standard-library/istreambuf-iterator-class.md +++ b/docs/standard-library/istreambuf-iterator-class.md @@ -15,7 +15,7 @@ The class template istreambuf_iterator describes an input iterator object that e ## Syntax ```cpp -template > +template > class istreambuf_iterator : public iterator ``` diff --git a/docs/standard-library/ostream-iterator-class.md b/docs/standard-library/ostream-iterator-class.md index de3f56cd39c..8f3ed11025d 100644 --- a/docs/standard-library/ostream-iterator-class.md +++ b/docs/standard-library/ostream-iterator-class.md @@ -15,7 +15,7 @@ The class template ostream_iterator describes an output iterator object that wri ## Syntax ```cpp -template > +template > class ostream_iterator ``` diff --git a/docs/standard-library/ostreambuf-iterator-class.md b/docs/standard-library/ostreambuf-iterator-class.md index dea0af412dd..ff57128a316 100644 --- a/docs/standard-library/ostreambuf-iterator-class.md +++ b/docs/standard-library/ostreambuf-iterator-class.md @@ -13,7 +13,7 @@ The class template ostreambuf_iterator describes an output iterator object that ## Syntax ```cpp -template > +template > ``` ### Parameters From 4a99dd577e37b35d6d523048a9b098c1055d1f42 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 21 Aug 2025 20:59:39 +0800 Subject: [PATCH 1505/2255] Add blockquotes for error messages in range [C3621, C3660] --- docs/error-messages/compiler-errors-2/compiler-error-c3622.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3623.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3624.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3625.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3626.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3627.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3628.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3631.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3632.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3633.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3634.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3637.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3638.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3640.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3642.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3644.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3645.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3648.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3650.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3651.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3652.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3653.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3654.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3655.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3656.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3657.md | 2 +- 26 files changed, 26 insertions(+), 26 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3622.md b/docs/error-messages/compiler-errors-2/compiler-error-c3622.md index 7301a8b96aa..5344395c283 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3622.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3622.md @@ -8,7 +8,7 @@ ms.assetid: 02836f78-0cf2-4947-b87e-710187d81014 --- # Compiler Error C3622 -'class' : a class declared as 'keyword' cannot be instantiated +> 'class' : a class declared as 'keyword' cannot be instantiated An attempt was made to instantiate a class marked as [abstract](../../extensions/abstract-cpp-component-extensions.md). A class marked as **`abstract`** can be a base class, but it cannot be instantiated. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3623.md b/docs/error-messages/compiler-errors-2/compiler-error-c3623.md index 07627ca798e..70c99ece986 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3623.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3623.md @@ -8,7 +8,7 @@ ms.assetid: a0341b45-062a-4f67-beb9-ba74201ed1ed --- # Compiler Error C3623 -'variable': bit fields are not supported in managed or WinRT types +> 'variable': bit fields are not supported in managed or WinRT types The use of bit fields is not permitted on variables in a managed or WinRT class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3624.md b/docs/error-messages/compiler-errors-2/compiler-error-c3624.md index 8a9eba82beb..5797688efbc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3624.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3624.md @@ -8,7 +8,7 @@ ms.assetid: eaac6a4f-eb11-4e4d-ab12-124ba995c5cf --- # Compiler Error C3624 -'type': use of this type requires a reference to assembly 'assembly' +> 'type': use of this type requires a reference to assembly 'assembly' An assembly (reference) needed to compile your code was not specified; pass the assembly to the [#using](../../preprocessor/hash-using-directive-cpp.md) directive. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3625.md b/docs/error-messages/compiler-errors-2/compiler-error-c3625.md index eed0c1f02bf..fa4015b4853 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3625.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3625.md @@ -8,7 +8,7 @@ ms.assetid: fdf49f21-d6b1-42f4-9eec-23b04ae8b4aa --- # Compiler Error C3625 -'native_type': a native type cannot derive from a managed or WinRT type 'type' +> 'native_type': a native type cannot derive from a managed or WinRT type 'type' A native class cannot inherit from a managed or WinRT class. For more information, see [Classes and Structs](../../extensions/classes-and-structs-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3626.md b/docs/error-messages/compiler-errors-2/compiler-error-c3626.md index dd04cfe1a42..28a70c38461 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3626.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3626.md @@ -8,7 +8,7 @@ ms.assetid: 43926e2b-1ba9-4a43-9343-c58449cbb336 --- # Compiler Error C3626 -'keyword': '__event' keyword can only be used on COM interfaces, member functions and data members that are pointers to delegates +> 'keyword': '__event' keyword can only be used on COM interfaces, member functions and data members that are pointers to delegates A keyword was used incorrectly. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3627.md b/docs/error-messages/compiler-errors-2/compiler-error-c3627.md index cddb376d1bb..a2c6bd3a5c3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3627.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3627.md @@ -8,6 +8,6 @@ ms.assetid: 905ad0a0-8c49-4187-b66e-b375f5a1fae5 --- # Compiler Error C3627 -Only a value type can be boxed +> Only a value type can be boxed Only value classes can be boxed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3628.md b/docs/error-messages/compiler-errors-2/compiler-error-c3628.md index cd3c08937af..a6219b37961 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3628.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3628.md @@ -8,7 +8,7 @@ ms.assetid: 0ff5a4a4-fcc9-47a0-a4d8-8af9cf2815f6 --- # Compiler Error C3628 -'base class' : managed or WinRTclasses only support public inheritance +> 'base class' : managed or WinRTclasses only support public inheritance An attempt was made to use a managed or WinRT class as a [private](../../cpp/private-cpp.md) or [protected](../../cpp/protected-cpp.md) base class. A managed or WinRT class can only be used as a base class with [public](../../cpp/public-cpp.md) access. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3631.md b/docs/error-messages/compiler-errors-2/compiler-error-c3631.md index 202b12ae211..2a5e40598f0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3631.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3631.md @@ -8,7 +8,7 @@ ms.assetid: 88cbd2d5-6fef-4940-be34-d8cbe816d3da --- # Compiler Error C3631 -'function': cannot overload managed or WinRT events +> 'function': cannot overload managed or WinRT events A managed or WinRT event cannot be overloaded. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3632.md b/docs/error-messages/compiler-errors-2/compiler-error-c3632.md index c9151e571fa..3a668cbc40a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3632.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3632.md @@ -8,7 +8,7 @@ ms.assetid: a04e3217-f5a1-4461-a1db-d69fd096d468 --- # Compiler Error C3632 -'event': illegal style of event for construct +> 'event': illegal style of event for construct [__event](../../cpp/event.md) declarations are not valid in all constructs. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3633.md b/docs/error-messages/compiler-errors-2/compiler-error-c3633.md index fb0ba09ac2e..d5de0178bf3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3633.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3633.md @@ -8,7 +8,7 @@ ms.assetid: 7d65babf-2191-4d67-a69f-f5c4c2ddf946 --- # Compiler Error C3633 -cannot define 'member' as a member of managed 'type' +> cannot define 'member' as a member of managed 'type' CLR reference class data members cannot be of a non-POD C++ type. You can only instantiate a POD native type in a CLR type. For example, a POD type cannot contain a copy constructor or an assignment operator. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3634.md b/docs/error-messages/compiler-errors-2/compiler-error-c3634.md index 390f9d9b044..bab9d179fe2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3634.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3634.md @@ -8,7 +8,7 @@ ms.assetid: fd09f10c-f863-483b-9756-71c16b760b02 --- # Compiler Error C3634 -'function' : cannot define an abstract method of a managed or WinRTclass +> 'function' : cannot define an abstract method of a managed or WinRTclass An abstract method can be declared in a managed or WinRT class, but it cannot be defined. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3637.md b/docs/error-messages/compiler-errors-2/compiler-error-c3637.md index b49fbc33968..088b7d1b62f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3637.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3637.md @@ -8,7 +8,7 @@ ms.assetid: 72391377-8519-43d9-870a-73a6423deb74 --- # Compiler Error C3637 -'function' : a friend function definition cannot be a specialization of a function type +> 'function' : a friend function definition cannot be a specialization of a function type A friend function was defined incorrectly for a template or generic. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3638.md b/docs/error-messages/compiler-errors-2/compiler-error-c3638.md index 2fcff4c27d4..66fbde51077 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3638.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3638.md @@ -8,7 +8,7 @@ ms.assetid: 8d8bc5ca-75aa-480e-b6b6-3178fab51b1d --- # Compiler Error C3638 -'operator' : the standard boxing and unboxing conversion operators cannot be redefined +> 'operator' : the standard boxing and unboxing conversion operators cannot be redefined The compiler defines a conversion operator for each managed class to support implicit boxing. This operator cannot be redefined. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3640.md b/docs/error-messages/compiler-errors-2/compiler-error-c3640.md index 88cd60658d6..4649fc4e55a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3640.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3640.md @@ -8,7 +8,7 @@ ms.assetid: fcc56894-0f98-48af-8561-3bf7c7b2b93f --- # Compiler Error C3640 -'member' : a referenced or virtual member function of a local class must be defined +> 'member' : a referenced or virtual member function of a local class must be defined The compiler requires certain functions to be defined. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3642.md b/docs/error-messages/compiler-errors-2/compiler-error-c3642.md index 6408f3f41d4..eea469a9635 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3642.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3642.md @@ -8,7 +8,7 @@ ms.assetid: 429790c2-9614-4d85-b31c-687c8d8f83ff --- # Compiler Error C3642 -'return_type/args' : cannot call a function with __clrcall calling convention from native code +> 'return_type/args' : cannot call a function with __clrcall calling convention from native code A function that is marked with the [__clrcall](../../cpp/clrcall.md) calling convention cannot be called from native (unmanaged) code. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3644.md b/docs/error-messages/compiler-errors-2/compiler-error-c3644.md index 1798239f263..f9b30740448 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3644.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3644.md @@ -8,7 +8,7 @@ ms.assetid: 2e3f6c41-3ec5-4a01-82bc-f11b61ebe68e --- # Compiler Error C3644 -'function' : cannot compile the function to generate managed code +> 'function' : cannot compile the function to generate managed code The presence of some keywords in a function will cause the function to be compiled to native. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3645.md b/docs/error-messages/compiler-errors-2/compiler-error-c3645.md index b58af9dcfdb..927d386ebe6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3645.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3645.md @@ -8,7 +8,7 @@ ms.assetid: 346da528-ae86-4cd0-9654-f41bee26ac0d --- # Compiler Error C3645 -'function' : __clrcall cannot be used on functions compiled to native code +> 'function' : __clrcall cannot be used on functions compiled to native code The presence of some keywords in a function will cause the function to be compiled to native. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3648.md b/docs/error-messages/compiler-errors-2/compiler-error-c3648.md index 273693bbe46..97e5c7ef78c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3648.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3648.md @@ -8,7 +8,7 @@ ms.assetid: 5d042989-41cb-4cd0-aa50-976b70146aaf --- # Compiler Error C3648 -this explicit override syntax requires /clr:oldSyntax +> this explicit override syntax requires /clr:oldSyntax When compiling for the latest managed syntax, the compiler found explicit override syntax for previous versions that is no longer supported. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3650.md b/docs/error-messages/compiler-errors-2/compiler-error-c3650.md index e77e5ac394f..d0862ee7894 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3650.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3650.md @@ -8,7 +8,7 @@ ms.assetid: ca4d8de4-b027-4d13-9b9f-03ca62905c33 --- # Compiler Error C3650 -'interface_method' : cannot be used as an explicit override, must be a virtual member function of a base class +> 'interface_method' : cannot be used as an explicit override, must be a virtual member function of a base class An attempt was made to perform an explicit override on a member that was not virtual. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3651.md b/docs/error-messages/compiler-errors-2/compiler-error-c3651.md index f50b6090be8..d45f2f5ff4f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3651.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3651.md @@ -8,7 +8,7 @@ ms.assetid: a03e692e-c219-4654-9827-8415cfa5a22d --- # Compiler Error C3651 -'member' : cannot be used as an explicit override, must be a member of a base class +> 'member' : cannot be used as an explicit override, must be a member of a base class An explicit override was specified, but the function being overridden was in a type that is not a base type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3652.md b/docs/error-messages/compiler-errors-2/compiler-error-c3652.md index 81541733938..eea3742c87c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3652.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3652.md @@ -8,7 +8,7 @@ ms.assetid: 15d68737-177e-41f1-80e0-7c3e2afdf0fc --- # Compiler Error C3652 -'override' : a function that explicitly overrides must be virtual +> 'override' : a function that explicitly overrides must be virtual A function that does an explicit override must be virtual. For more information, see [Explicit Overrides](../../extensions/explicit-overrides-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3653.md b/docs/error-messages/compiler-errors-2/compiler-error-c3653.md index 4f6aeb2eeca..8e92aba881e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3653.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3653.md @@ -8,7 +8,7 @@ ms.assetid: 316549d7-f7ef-4578-a2ba-57adc8aac527 --- # Compiler Error C3653 -'function' : cannot be used as a named override: a function being overridden not found; did you forget to name the function explicitly, using a :: operator? +> 'function' : cannot be used as a named override: a function being overridden not found; did you forget to name the function explicitly, using a :: operator? An explicit override specified a function that was not found in any interface. For more information, see [Explicit Overrides](../../extensions/explicit-overrides-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3654.md b/docs/error-messages/compiler-errors-2/compiler-error-c3654.md index 593ca9bd654..7bd4b889fd3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3654.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3654.md @@ -8,7 +8,7 @@ ms.assetid: 57d96e3f-6bbb-4eaa-934b-26c23b4ceb2e --- # Compiler Error C3654 -'text' : syntax error in explicit override +> 'text' : syntax error in explicit override An unexpected string was in an explicit override. For more information, see [Explicit Overrides](../../extensions/explicit-overrides-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3655.md b/docs/error-messages/compiler-errors-2/compiler-error-c3655.md index e2b51a05bb3..ab81076fd9f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3655.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3655.md @@ -8,7 +8,7 @@ ms.assetid: 724919ab-2915-4b61-8794-44648e162d62 --- # Compiler Error C3655 -'function' : function already explicitly overridden +> 'function' : function already explicitly overridden A function can only be explicitly overridden once. For more information, see [Explicit Overrides](../../extensions/explicit-overrides-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3656.md b/docs/error-messages/compiler-errors-2/compiler-error-c3656.md index 1825ce5c157..9c9ca2d6938 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3656.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3656.md @@ -8,7 +8,7 @@ ms.assetid: 88965d85-73b0-4b35-8020-0650c9c94cd8 --- # Compiler Error C3656 -'override' : override specifier cannot be repeated +> 'override' : override specifier cannot be repeated An explicit override keyword can only be specified once. For more information, see [Explicit Overrides](../../extensions/explicit-overrides-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3657.md b/docs/error-messages/compiler-errors-2/compiler-error-c3657.md index a778329f3c9..319e5f044b5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3657.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3657.md @@ -8,7 +8,7 @@ ms.assetid: 89a28a18-4c17-43a1-bda6-deb52c32d203 --- # Compiler Error C3657 -destructors cannot explicitly override or be explicitly overridden +> destructors cannot explicitly override or be explicitly overridden Destructors or finalizers cannot be explicitly overridden. For more information, see [Explicit Overrides](../../extensions/explicit-overrides-cpp-component-extensions.md). From aa5e410614ae925058a8c07685c3e3ddf89714fe Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 21 Aug 2025 21:06:38 +0800 Subject: [PATCH 1506/2255] Add "Remarks" and "Example" headings for error references in range [C3621, C3660] --- docs/error-messages/compiler-errors-2/compiler-error-c3622.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3623.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3624.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3625.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3626.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3627.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3628.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3630.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3631.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3632.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3633.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3634.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3637.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3638.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3640.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3642.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3644.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3645.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3648.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3650.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3651.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3652.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3653.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3654.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3655.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3656.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3657.md | 2 ++ 27 files changed, 84 insertions(+) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3622.md b/docs/error-messages/compiler-errors-2/compiler-error-c3622.md index 5344395c283..b3b2c187fe0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3622.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3622.md @@ -10,6 +10,8 @@ ms.assetid: 02836f78-0cf2-4947-b87e-710187d81014 > 'class' : a class declared as 'keyword' cannot be instantiated +## Remarks + An attempt was made to instantiate a class marked as [abstract](../../extensions/abstract-cpp-component-extensions.md). A class marked as **`abstract`** can be a base class, but it cannot be instantiated. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3623.md b/docs/error-messages/compiler-errors-2/compiler-error-c3623.md index 70c99ece986..4e4b3c53054 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3623.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3623.md @@ -10,8 +10,12 @@ ms.assetid: a0341b45-062a-4f67-beb9-ba74201ed1ed > 'variable': bit fields are not supported in managed or WinRT types +## Remarks + The use of bit fields is not permitted on variables in a managed or WinRT class. +## Example + The following sample generates C3623: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3624.md b/docs/error-messages/compiler-errors-2/compiler-error-c3624.md index 5797688efbc..d93c446fc01 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3624.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3624.md @@ -10,6 +10,8 @@ ms.assetid: eaac6a4f-eb11-4e4d-ab12-124ba995c5cf > 'type': use of this type requires a reference to assembly 'assembly' +## Remarks + An assembly (reference) needed to compile your code was not specified; pass the assembly to the [#using](../../preprocessor/hash-using-directive-cpp.md) directive. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3625.md b/docs/error-messages/compiler-errors-2/compiler-error-c3625.md index fa4015b4853..f7fe9d766fa 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3625.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3625.md @@ -10,6 +10,8 @@ ms.assetid: fdf49f21-d6b1-42f4-9eec-23b04ae8b4aa > 'native_type': a native type cannot derive from a managed or WinRT type 'type' +## Remarks + A native class cannot inherit from a managed or WinRT class. For more information, see [Classes and Structs](../../extensions/classes-and-structs-cpp-component-extensions.md). ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3626.md b/docs/error-messages/compiler-errors-2/compiler-error-c3626.md index 28a70c38461..52dba53506b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3626.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3626.md @@ -10,8 +10,12 @@ ms.assetid: 43926e2b-1ba9-4a43-9343-c58449cbb336 > 'keyword': '__event' keyword can only be used on COM interfaces, member functions and data members that are pointers to delegates +## Remarks + A keyword was used incorrectly. +## Example + The following sample generates C3626: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3627.md b/docs/error-messages/compiler-errors-2/compiler-error-c3627.md index a2c6bd3a5c3..0912c5d93fe 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3627.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3627.md @@ -10,4 +10,6 @@ ms.assetid: 905ad0a0-8c49-4187-b66e-b375f5a1fae5 > Only a value type can be boxed +## Remarks + Only value classes can be boxed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3628.md b/docs/error-messages/compiler-errors-2/compiler-error-c3628.md index a6219b37961..b10c0713beb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3628.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3628.md @@ -10,8 +10,12 @@ ms.assetid: 0ff5a4a4-fcc9-47a0-a4d8-8af9cf2815f6 > 'base class' : managed or WinRTclasses only support public inheritance +## Remarks + An attempt was made to use a managed or WinRT class as a [private](../../cpp/private-cpp.md) or [protected](../../cpp/protected-cpp.md) base class. A managed or WinRT class can only be used as a base class with [public](../../cpp/public-cpp.md) access. +## Example + The following sample generates C3628 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3630.md b/docs/error-messages/compiler-errors-2/compiler-error-c3630.md index d5fd6878985..bdf21ce943c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3630.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3630.md @@ -10,4 +10,6 @@ ms.assetid: 865626a9-98cc-465d-acde-44d4574c019a > error when processing the token '*token*' +## Remarks + A token in source code couldn't be processed. This error is obsolete in Visual Studio 2022. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3631.md b/docs/error-messages/compiler-errors-2/compiler-error-c3631.md index 2a5e40598f0..33edb019d62 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3631.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3631.md @@ -10,6 +10,8 @@ ms.assetid: 88cbd2d5-6fef-4940-be34-d8cbe816d3da > 'function': cannot overload managed or WinRT events +## Remarks + A managed or WinRT event cannot be overloaded. C3631 is only reachable using the obsolete compiler option **/clr:oldSyntax**. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3632.md b/docs/error-messages/compiler-errors-2/compiler-error-c3632.md index 3a668cbc40a..c207383e3c8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3632.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3632.md @@ -10,6 +10,8 @@ ms.assetid: a04e3217-f5a1-4461-a1db-d69fd096d468 > 'event': illegal style of event for construct +## Remarks + [__event](../../cpp/event.md) declarations are not valid in all constructs. C3632 is only reachable using the obsolete compiler option **/clr:oldSyntax**. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3633.md b/docs/error-messages/compiler-errors-2/compiler-error-c3633.md index d5de0178bf3..76a7e89f50a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3633.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3633.md @@ -10,6 +10,8 @@ ms.assetid: 7d65babf-2191-4d67-a69f-f5c4c2ddf946 > cannot define 'member' as a member of managed 'type' +## Remarks + CLR reference class data members cannot be of a non-POD C++ type. You can only instantiate a POD native type in a CLR type. For example, a POD type cannot contain a copy constructor or an assignment operator. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3634.md b/docs/error-messages/compiler-errors-2/compiler-error-c3634.md index bab9d179fe2..40c22e81260 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3634.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3634.md @@ -10,6 +10,8 @@ ms.assetid: fd09f10c-f863-483b-9756-71c16b760b02 > 'function' : cannot define an abstract method of a managed or WinRTclass +## Remarks + An abstract method can be declared in a managed or WinRT class, but it cannot be defined. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3637.md b/docs/error-messages/compiler-errors-2/compiler-error-c3637.md index 088b7d1b62f..119cffd6104 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3637.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3637.md @@ -10,8 +10,12 @@ ms.assetid: 72391377-8519-43d9-870a-73a6423deb74 > 'function' : a friend function definition cannot be a specialization of a function type +## Remarks + A friend function was defined incorrectly for a template or generic. +## Examples + The following sample generates C3637: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3638.md b/docs/error-messages/compiler-errors-2/compiler-error-c3638.md index 66fbde51077..d84f91f08c9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3638.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3638.md @@ -10,10 +10,14 @@ ms.assetid: 8d8bc5ca-75aa-480e-b6b6-3178fab51b1d > 'operator' : the standard boxing and unboxing conversion operators cannot be redefined +## Remarks + The compiler defines a conversion operator for each managed class to support implicit boxing. This operator cannot be redefined. For more information, see [Implicit Boxing](../../extensions/boxing-cpp-component-extensions.md). +## Example + The following sample generates C3638: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3640.md b/docs/error-messages/compiler-errors-2/compiler-error-c3640.md index 4649fc4e55a..4313d004db4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3640.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3640.md @@ -10,8 +10,12 @@ ms.assetid: fcc56894-0f98-48af-8561-3bf7c7b2b93f > 'member' : a referenced or virtual member function of a local class must be defined +## Remarks + The compiler requires certain functions to be defined. +## Example + The following sample generates C3640: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3642.md b/docs/error-messages/compiler-errors-2/compiler-error-c3642.md index eea469a9635..d7e6d038c32 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3642.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3642.md @@ -10,12 +10,16 @@ ms.assetid: 429790c2-9614-4d85-b31c-687c8d8f83ff > 'return_type/args' : cannot call a function with __clrcall calling convention from native code +## Remarks + A function that is marked with the [__clrcall](../../cpp/clrcall.md) calling convention cannot be called from native (unmanaged) code. *return_type/args* is either the name of the function or the type of the `__clrcall` function you are trying to call. A type is used when you're calling through a function-pointer. To call a managed function from a native context, you can add a "wrapper" function that will call the `__clrcall` function. Or, you can use the CLR marshalling mechanism; see [How to: Marshal Function Pointers Using PInvoke](../../dotnet/how-to-marshal-function-pointers-using-pinvoke.md) for more information. +## Example + The following sample generates C3642: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3644.md b/docs/error-messages/compiler-errors-2/compiler-error-c3644.md index f9b30740448..1d98e0a3c0d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3644.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3644.md @@ -10,8 +10,12 @@ ms.assetid: 2e3f6c41-3ec5-4a01-82bc-f11b61ebe68e > 'function' : cannot compile the function to generate managed code +## Remarks + The presence of some keywords in a function will cause the function to be compiled to native. +## Example + The following sample generates C3644: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3645.md b/docs/error-messages/compiler-errors-2/compiler-error-c3645.md index 927d386ebe6..9680cb0c6a8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3645.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3645.md @@ -10,6 +10,8 @@ ms.assetid: 346da528-ae86-4cd0-9654-f41bee26ac0d > 'function' : __clrcall cannot be used on functions compiled to native code +## Remarks + The presence of some keywords in a function will cause the function to be compiled to native. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3648.md b/docs/error-messages/compiler-errors-2/compiler-error-c3648.md index 97e5c7ef78c..00c21a02826 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3648.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3648.md @@ -10,6 +10,8 @@ ms.assetid: 5d042989-41cb-4cd0-aa50-976b70146aaf > this explicit override syntax requires /clr:oldSyntax +## Remarks + When compiling for the latest managed syntax, the compiler found explicit override syntax for previous versions that is no longer supported. For more information, see [Explicit Overrides](../../extensions/explicit-overrides-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3650.md b/docs/error-messages/compiler-errors-2/compiler-error-c3650.md index d0862ee7894..7ceb8d21807 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3650.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3650.md @@ -10,10 +10,14 @@ ms.assetid: ca4d8de4-b027-4d13-9b9f-03ca62905c33 > 'interface_method' : cannot be used as an explicit override, must be a virtual member function of a base class +## Remarks + An attempt was made to perform an explicit override on a member that was not virtual. For more information, see [Explicit Overrides](../../extensions/explicit-overrides-cpp-component-extensions.md). +## Example + The following sample generates C3650: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3651.md b/docs/error-messages/compiler-errors-2/compiler-error-c3651.md index d45f2f5ff4f..3e018e007a0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3651.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3651.md @@ -10,10 +10,14 @@ ms.assetid: a03e692e-c219-4654-9827-8415cfa5a22d > 'member' : cannot be used as an explicit override, must be a member of a base class +## Remarks + An explicit override was specified, but the function being overridden was in a type that is not a base type. For more information, see [Explicit Overrides](../../extensions/explicit-overrides-cpp-component-extensions.md). +## Example + The following sample generates C3651: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3652.md b/docs/error-messages/compiler-errors-2/compiler-error-c3652.md index eea3742c87c..d9af55aa9f3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3652.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3652.md @@ -10,8 +10,12 @@ ms.assetid: 15d68737-177e-41f1-80e0-7c3e2afdf0fc > 'override' : a function that explicitly overrides must be virtual +## Remarks + A function that does an explicit override must be virtual. For more information, see [Explicit Overrides](../../extensions/explicit-overrides-cpp-component-extensions.md). +## Example + The following sample generates C3652: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3653.md b/docs/error-messages/compiler-errors-2/compiler-error-c3653.md index 8e92aba881e..07d707f73db 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3653.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3653.md @@ -10,8 +10,12 @@ ms.assetid: 316549d7-f7ef-4578-a2ba-57adc8aac527 > 'function' : cannot be used as a named override: a function being overridden not found; did you forget to name the function explicitly, using a :: operator? +## Remarks + An explicit override specified a function that was not found in any interface. For more information, see [Explicit Overrides](../../extensions/explicit-overrides-cpp-component-extensions.md). +## Example + The following sample generates C3653: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3654.md b/docs/error-messages/compiler-errors-2/compiler-error-c3654.md index 7bd4b889fd3..0d479676826 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3654.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3654.md @@ -10,8 +10,12 @@ ms.assetid: 57d96e3f-6bbb-4eaa-934b-26c23b4ceb2e > 'text' : syntax error in explicit override +## Remarks + An unexpected string was in an explicit override. For more information, see [Explicit Overrides](../../extensions/explicit-overrides-cpp-component-extensions.md). +## Example + The following sample generates C3654: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3655.md b/docs/error-messages/compiler-errors-2/compiler-error-c3655.md index ab81076fd9f..e4ca72aa278 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3655.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3655.md @@ -10,8 +10,12 @@ ms.assetid: 724919ab-2915-4b61-8794-44648e162d62 > 'function' : function already explicitly overridden +## Remarks + A function can only be explicitly overridden once. For more information, see [Explicit Overrides](../../extensions/explicit-overrides-cpp-component-extensions.md). +## Example + The following sample generates C3655: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3656.md b/docs/error-messages/compiler-errors-2/compiler-error-c3656.md index 9c9ca2d6938..e646f7c3614 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3656.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3656.md @@ -10,8 +10,12 @@ ms.assetid: 88965d85-73b0-4b35-8020-0650c9c94cd8 > 'override' : override specifier cannot be repeated +## Remarks + An explicit override keyword can only be specified once. For more information, see [Explicit Overrides](../../extensions/explicit-overrides-cpp-component-extensions.md). +## Example + The following sample generates C3656: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3657.md b/docs/error-messages/compiler-errors-2/compiler-error-c3657.md index 319e5f044b5..f660008455d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3657.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3657.md @@ -10,6 +10,8 @@ ms.assetid: 89a28a18-4c17-43a1-bda6-deb52c32d203 > destructors cannot explicitly override or be explicitly overridden +## Remarks + Destructors or finalizers cannot be explicitly overridden. For more information, see [Explicit Overrides](../../extensions/explicit-overrides-cpp-component-extensions.md). ## Example From 5125f6b1dfaf1bef8ce95d089fb19ce222cae9cf Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 21 Aug 2025 21:08:15 +0800 Subject: [PATCH 1507/2255] Replace term "sample" with "example" for error references in range [C3621, C3660] --- docs/error-messages/compiler-errors-2/compiler-error-c3622.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3623.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3624.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3625.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3626.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3628.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3633.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3634.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3637.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3638.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3640.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3641.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3642.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3644.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3645.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3646.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3648.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3650.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3651.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3652.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3653.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3654.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3655.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3656.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3657.md | 2 +- 25 files changed, 25 insertions(+), 25 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3622.md b/docs/error-messages/compiler-errors-2/compiler-error-c3622.md index b3b2c187fe0..e3b41ab5864 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3622.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3622.md @@ -16,7 +16,7 @@ An attempt was made to instantiate a class marked as [abstract](../../extensions ## Example -The following sample generates C3622. +The following example generates C3622. ```cpp // C3622.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3623.md b/docs/error-messages/compiler-errors-2/compiler-error-c3623.md index 4e4b3c53054..6ea6f15a551 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3623.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3623.md @@ -16,7 +16,7 @@ The use of bit fields is not permitted on variables in a managed or WinRT class. ## Example -The following sample generates C3623: +The following example generates C3623: ```cpp // C3623.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3624.md b/docs/error-messages/compiler-errors-2/compiler-error-c3624.md index d93c446fc01..537d9e64c13 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3624.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3624.md @@ -16,7 +16,7 @@ An assembly (reference) needed to compile your code was not specified; pass the ## Example -The following sample generates C3624: +The following example generates C3624: ```cpp // C3624.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3625.md b/docs/error-messages/compiler-errors-2/compiler-error-c3625.md index f7fe9d766fa..f5b05cf770e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3625.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3625.md @@ -16,7 +16,7 @@ A native class cannot inherit from a managed or WinRT class. For more informatio ## Example -The following sample generates C3625: +The following example generates C3625: ```cpp // C3625.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3626.md b/docs/error-messages/compiler-errors-2/compiler-error-c3626.md index 52dba53506b..b38c1f7a20a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3626.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3626.md @@ -16,7 +16,7 @@ A keyword was used incorrectly. ## Example -The following sample generates C3626: +The following example generates C3626: ```cpp // C3626.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3628.md b/docs/error-messages/compiler-errors-2/compiler-error-c3628.md index b10c0713beb..9ca5a272937 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3628.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3628.md @@ -16,7 +16,7 @@ An attempt was made to use a managed or WinRT class as a [private](../../cpp/pri ## Example -The following sample generates C3628 and shows how to fix it: +The following example generates C3628 and shows how to fix it: ```cpp // C3628a.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3633.md b/docs/error-messages/compiler-errors-2/compiler-error-c3633.md index 76a7e89f50a..e603b896c04 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3633.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3633.md @@ -16,7 +16,7 @@ CLR reference class data members cannot be of a non-POD C++ type. You can only ## Example -The following sample generates C3633. +The following example generates C3633. ```cpp // C3633.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3634.md b/docs/error-messages/compiler-errors-2/compiler-error-c3634.md index 40c22e81260..787b90ce290 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3634.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3634.md @@ -16,7 +16,7 @@ An abstract method can be declared in a managed or WinRT class, but it cannot be ## Example -The following sample generates C3634: +The following example generates C3634: ```cpp // C3634.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3637.md b/docs/error-messages/compiler-errors-2/compiler-error-c3637.md index 119cffd6104..52531f294ce 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3637.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3637.md @@ -16,7 +16,7 @@ A friend function was defined incorrectly for a template or generic. ## Examples -The following sample generates C3637: +The following example generates C3637: ```cpp // C3637.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3638.md b/docs/error-messages/compiler-errors-2/compiler-error-c3638.md index d84f91f08c9..0d18010512e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3638.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3638.md @@ -18,7 +18,7 @@ For more information, see [Implicit Boxing](../../extensions/boxing-cpp-componen ## Example -The following sample generates C3638: +The following example generates C3638: ```cpp // C3638.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3640.md b/docs/error-messages/compiler-errors-2/compiler-error-c3640.md index 4313d004db4..3f97c573b34 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3640.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3640.md @@ -16,7 +16,7 @@ The compiler requires certain functions to be defined. ## Example -The following sample generates C3640: +The following example generates C3640: ```cpp // C3640.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3641.md b/docs/error-messages/compiler-errors-2/compiler-error-c3641.md index fbca71d1025..c9daf91e69c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3641.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3641.md @@ -18,7 +18,7 @@ Only [__clrcall](../../cpp/clrcall.md) calling convention is allowed with [/clr: ## Example -The following sample generates C3641: +The following example generates C3641: ```cpp // C3641.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3642.md b/docs/error-messages/compiler-errors-2/compiler-error-c3642.md index d7e6d038c32..eafc89e4b96 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3642.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3642.md @@ -20,7 +20,7 @@ To call a managed function from a native context, you can add a "wrapper" functi ## Example -The following sample generates C3642: +The following example generates C3642: ```cpp // C3642.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3644.md b/docs/error-messages/compiler-errors-2/compiler-error-c3644.md index 1d98e0a3c0d..5a0efecd1f8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3644.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3644.md @@ -16,7 +16,7 @@ The presence of some keywords in a function will cause the function to be compil ## Example -The following sample generates C3644: +The following example generates C3644: ```cpp // C3644.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3645.md b/docs/error-messages/compiler-errors-2/compiler-error-c3645.md index 9680cb0c6a8..0381a70fb92 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3645.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3645.md @@ -16,7 +16,7 @@ The presence of some keywords in a function will cause the function to be compil ## Example -The following sample generates C3645. +The following example generates C3645. ```cpp // C3645.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3646.md b/docs/error-messages/compiler-errors-2/compiler-error-c3646.md index 21c1177f7d6..1ba2376114f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3646.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3646.md @@ -20,7 +20,7 @@ For more information, see [Override Specifiers](../../extensions/override-specif ## Example -The following sample generates C3646 and shows a way to fix it: +The following example generates C3646 and shows a way to fix it: ```cpp // C3646.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3648.md b/docs/error-messages/compiler-errors-2/compiler-error-c3648.md index 00c21a02826..6aa5dfeb866 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3648.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3648.md @@ -18,7 +18,7 @@ For more information, see [Explicit Overrides](../../extensions/explicit-overrid ## Example -The following sample generates C3648: +The following example generates C3648: ```cpp // C3648.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3650.md b/docs/error-messages/compiler-errors-2/compiler-error-c3650.md index 7ceb8d21807..ca61195a30a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3650.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3650.md @@ -18,7 +18,7 @@ For more information, see [Explicit Overrides](../../extensions/explicit-overrid ## Example -The following sample generates C3650: +The following example generates C3650: ```cpp // C3650.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3651.md b/docs/error-messages/compiler-errors-2/compiler-error-c3651.md index 3e018e007a0..f93be6dc7b5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3651.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3651.md @@ -18,7 +18,7 @@ For more information, see [Explicit Overrides](../../extensions/explicit-overrid ## Example -The following sample generates C3651: +The following example generates C3651: ```cpp // C3651.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3652.md b/docs/error-messages/compiler-errors-2/compiler-error-c3652.md index d9af55aa9f3..fa022bb25d0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3652.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3652.md @@ -16,7 +16,7 @@ A function that does an explicit override must be virtual. For more information, ## Example -The following sample generates C3652: +The following example generates C3652: ```cpp // C3652.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3653.md b/docs/error-messages/compiler-errors-2/compiler-error-c3653.md index 07d707f73db..d1938913e45 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3653.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3653.md @@ -16,7 +16,7 @@ An explicit override specified a function that was not found in any interface. F ## Example -The following sample generates C3653: +The following example generates C3653: ```cpp // C3653.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3654.md b/docs/error-messages/compiler-errors-2/compiler-error-c3654.md index 0d479676826..66e66547b50 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3654.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3654.md @@ -16,7 +16,7 @@ An unexpected string was in an explicit override. For more information, see [Exp ## Example -The following sample generates C3654: +The following example generates C3654: ```cpp // C3654.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3655.md b/docs/error-messages/compiler-errors-2/compiler-error-c3655.md index e4ca72aa278..de7e4ad5899 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3655.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3655.md @@ -16,7 +16,7 @@ A function can only be explicitly overridden once. For more information, see [Ex ## Example -The following sample generates C3655: +The following example generates C3655: ```cpp // C3655.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3656.md b/docs/error-messages/compiler-errors-2/compiler-error-c3656.md index e646f7c3614..986b5ff0382 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3656.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3656.md @@ -16,7 +16,7 @@ An explicit override keyword can only be specified once. For more information, s ## Example -The following sample generates C3656: +The following example generates C3656: ```cpp // C3656.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3657.md b/docs/error-messages/compiler-errors-2/compiler-error-c3657.md index f660008455d..ee168627ab8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3657.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3657.md @@ -16,7 +16,7 @@ Destructors or finalizers cannot be explicitly overridden. For more information, ## Example -The following sample generates C3657. +The following example generates C3657. ```cpp // C3657.cpp From 9b5ce4687aedf6cd2c294fdd0101b32c2571e34b Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 21 Aug 2025 21:12:56 +0800 Subject: [PATCH 1508/2255] Update metadata for error references in range [C3621, C3660] --- .../error-messages/compiler-errors-2/compiler-error-c3622.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3623.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3624.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3625.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3626.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3627.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3628.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3630.md | 3 +-- .../error-messages/compiler-errors-2/compiler-error-c3631.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3632.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3633.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3634.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3637.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3638.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3640.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3641.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3642.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3644.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3645.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3646.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3648.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3650.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3651.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3652.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3653.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3654.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3655.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3656.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3657.md | 5 ++--- 29 files changed, 57 insertions(+), 86 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3622.md b/docs/error-messages/compiler-errors-2/compiler-error-c3622.md index e3b41ab5864..60241213166 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3622.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3622.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3622" title: "Compiler Error C3622" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3622" +ms.date: 11/04/2016 f1_keywords: ["C3622"] helpviewer_keywords: ["C3622"] -ms.assetid: 02836f78-0cf2-4947-b87e-710187d81014 --- # Compiler Error C3622 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3623.md b/docs/error-messages/compiler-errors-2/compiler-error-c3623.md index 6ea6f15a551..f19e798bd68 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3623.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3623.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3623" title: "Compiler Error C3623" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3623" +ms.date: 11/04/2016 f1_keywords: ["C3623"] helpviewer_keywords: ["C3623"] -ms.assetid: a0341b45-062a-4f67-beb9-ba74201ed1ed --- # Compiler Error C3623 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3624.md b/docs/error-messages/compiler-errors-2/compiler-error-c3624.md index 537d9e64c13..81196f32bb3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3624.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3624.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3624" title: "Compiler Error C3624" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3624" +ms.date: 11/04/2016 f1_keywords: ["C3624"] helpviewer_keywords: ["C3624"] -ms.assetid: eaac6a4f-eb11-4e4d-ab12-124ba995c5cf --- # Compiler Error C3624 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3625.md b/docs/error-messages/compiler-errors-2/compiler-error-c3625.md index f5b05cf770e..46ae1ba8349 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3625.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3625.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3625" title: "Compiler Error C3625" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3625" +ms.date: 11/04/2016 f1_keywords: ["C3625"] helpviewer_keywords: ["C3625"] -ms.assetid: fdf49f21-d6b1-42f4-9eec-23b04ae8b4aa --- # Compiler Error C3625 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3626.md b/docs/error-messages/compiler-errors-2/compiler-error-c3626.md index b38c1f7a20a..b28d6ad76c1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3626.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3626.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3626" title: "Compiler Error C3626" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3626" +ms.date: 11/04/2016 f1_keywords: ["C3626"] helpviewer_keywords: ["C3626"] -ms.assetid: 43926e2b-1ba9-4a43-9343-c58449cbb336 --- # Compiler Error C3626 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3627.md b/docs/error-messages/compiler-errors-2/compiler-error-c3627.md index 0912c5d93fe..1512ff7a55f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3627.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3627.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3627" title: "Compiler Error C3627" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3627" +ms.date: 11/04/2016 f1_keywords: ["C3627"] helpviewer_keywords: ["C3627"] -ms.assetid: 905ad0a0-8c49-4187-b66e-b375f5a1fae5 --- # Compiler Error C3627 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3628.md b/docs/error-messages/compiler-errors-2/compiler-error-c3628.md index 9ca5a272937..9ee013b88bc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3628.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3628.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3628" title: "Compiler Error C3628" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3628" +ms.date: 11/04/2016 f1_keywords: ["C3628"] helpviewer_keywords: ["C3628"] -ms.assetid: 0ff5a4a4-fcc9-47a0-a4d8-8af9cf2815f6 --- # Compiler Error C3628 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3630.md b/docs/error-messages/compiler-errors-2/compiler-error-c3630.md index bdf21ce943c..26adba75358 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3630.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3630.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3630" title: "Compiler Error C3630" +description: "Learn more about: Compiler Error C3630" ms.date: 05/25/2022 f1_keywords: ["C3630"] helpviewer_keywords: ["C3630"] -ms.assetid: 865626a9-98cc-465d-acde-44d4574c019a --- # Compiler Error C3630 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3631.md b/docs/error-messages/compiler-errors-2/compiler-error-c3631.md index 33edb019d62..2feb0d3e348 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3631.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3631.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3631" title: "Compiler Error C3631" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3631" +ms.date: 11/04/2016 f1_keywords: ["C3631"] helpviewer_keywords: ["C3631"] -ms.assetid: 88cbd2d5-6fef-4940-be34-d8cbe816d3da --- # Compiler Error C3631 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3632.md b/docs/error-messages/compiler-errors-2/compiler-error-c3632.md index c207383e3c8..337489011a3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3632.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3632.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3632" title: "Compiler Error C3632" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3632" +ms.date: 11/04/2016 f1_keywords: ["C3632"] helpviewer_keywords: ["C3632"] -ms.assetid: a04e3217-f5a1-4461-a1db-d69fd096d468 --- # Compiler Error C3632 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3633.md b/docs/error-messages/compiler-errors-2/compiler-error-c3633.md index e603b896c04..acefca20c78 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3633.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3633.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3633" title: "Compiler Error C3633" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3633" +ms.date: 11/04/2016 f1_keywords: ["C3633"] helpviewer_keywords: ["C3633"] -ms.assetid: 7d65babf-2191-4d67-a69f-f5c4c2ddf946 --- # Compiler Error C3633 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3634.md b/docs/error-messages/compiler-errors-2/compiler-error-c3634.md index 787b90ce290..5a003e3be6d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3634.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3634.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3634" title: "Compiler Error C3634" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3634" +ms.date: 11/04/2016 f1_keywords: ["C3634"] helpviewer_keywords: ["C3634"] -ms.assetid: fd09f10c-f863-483b-9756-71c16b760b02 --- # Compiler Error C3634 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3637.md b/docs/error-messages/compiler-errors-2/compiler-error-c3637.md index 52531f294ce..0ff30315570 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3637.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3637.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3637" title: "Compiler Error C3637" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3637" +ms.date: 11/04/2016 f1_keywords: ["C3637"] helpviewer_keywords: ["C3637"] -ms.assetid: 72391377-8519-43d9-870a-73a6423deb74 --- # Compiler Error C3637 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3638.md b/docs/error-messages/compiler-errors-2/compiler-error-c3638.md index 0d18010512e..0f0c2e3c61a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3638.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3638.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3638" title: "Compiler Error C3638" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3638" +ms.date: 11/04/2016 f1_keywords: ["C3638"] helpviewer_keywords: ["C3638"] -ms.assetid: 8d8bc5ca-75aa-480e-b6b6-3178fab51b1d --- # Compiler Error C3638 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3640.md b/docs/error-messages/compiler-errors-2/compiler-error-c3640.md index 3f97c573b34..dae63059c1e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3640.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3640.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3640" title: "Compiler Error C3640" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3640" +ms.date: 11/04/2016 f1_keywords: ["C3640"] helpviewer_keywords: ["C3640"] -ms.assetid: fcc56894-0f98-48af-8561-3bf7c7b2b93f --- # Compiler Error C3640 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3641.md b/docs/error-messages/compiler-errors-2/compiler-error-c3641.md index c9daf91e69c..46835413dba 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3641.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3641.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3641" title: "Compiler Error C3641" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3641" +ms.date: 11/04/2016 f1_keywords: ["C3641"] helpviewer_keywords: ["C3641"] -ms.assetid: e8d3613e-5e8d-46fe-a516-eb7d1de7cd21 --- # Compiler Error C3641 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3642.md b/docs/error-messages/compiler-errors-2/compiler-error-c3642.md index eafc89e4b96..9ad9ca91d3e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3642.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3642.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3642" title: "Compiler Error C3642" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3642" +ms.date: 11/04/2016 f1_keywords: ["C3642"] helpviewer_keywords: ["C3642"] -ms.assetid: 429790c2-9614-4d85-b31c-687c8d8f83ff --- # Compiler Error C3642 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3644.md b/docs/error-messages/compiler-errors-2/compiler-error-c3644.md index 5a0efecd1f8..78613404658 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3644.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3644.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3644" title: "Compiler Error C3644" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3644" +ms.date: 11/04/2016 f1_keywords: ["C3644"] helpviewer_keywords: ["C3644"] -ms.assetid: 2e3f6c41-3ec5-4a01-82bc-f11b61ebe68e --- # Compiler Error C3644 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3645.md b/docs/error-messages/compiler-errors-2/compiler-error-c3645.md index 0381a70fb92..4667e877425 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3645.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3645.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3645" title: "Compiler Error C3645" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3645" +ms.date: 11/04/2016 f1_keywords: ["C3645"] helpviewer_keywords: ["C3645"] -ms.assetid: 346da528-ae86-4cd0-9654-f41bee26ac0d --- # Compiler Error C3645 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3646.md b/docs/error-messages/compiler-errors-2/compiler-error-c3646.md index 1ba2376114f..330b23f3339 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3646.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3646.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3646" title: "Compiler Error C3646" -ms.date: "06/14/2018" +description: "Learn more about: Compiler Error C3646" +ms.date: 06/14/2018 f1_keywords: ["C3646"] helpviewer_keywords: ["C3646"] -ms.assetid: 4391ead2-9637-4ca3-aeda-5a991b18d66d --- # Compiler Error C3646 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3648.md b/docs/error-messages/compiler-errors-2/compiler-error-c3648.md index 6aa5dfeb866..0eacdf8cfcf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3648.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3648.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3648" title: "Compiler Error C3648" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3648" +ms.date: 11/04/2016 f1_keywords: ["C3648"] helpviewer_keywords: ["C3648"] -ms.assetid: 5d042989-41cb-4cd0-aa50-976b70146aaf --- # Compiler Error C3648 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3650.md b/docs/error-messages/compiler-errors-2/compiler-error-c3650.md index ca61195a30a..7687b504002 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3650.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3650.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3650" title: "Compiler Error C3650" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3650" +ms.date: 11/04/2016 f1_keywords: ["C3650"] helpviewer_keywords: ["C3650"] -ms.assetid: ca4d8de4-b027-4d13-9b9f-03ca62905c33 --- # Compiler Error C3650 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3651.md b/docs/error-messages/compiler-errors-2/compiler-error-c3651.md index f93be6dc7b5..05a811b6625 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3651.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3651.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3651" title: "Compiler Error C3651" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3651" +ms.date: 11/04/2016 f1_keywords: ["C3651"] helpviewer_keywords: ["C3651"] -ms.assetid: a03e692e-c219-4654-9827-8415cfa5a22d --- # Compiler Error C3651 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3652.md b/docs/error-messages/compiler-errors-2/compiler-error-c3652.md index fa022bb25d0..d4cff5ba850 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3652.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3652.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3652" title: "Compiler Error C3652" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3652" +ms.date: 11/04/2016 f1_keywords: ["C3652"] helpviewer_keywords: ["C3652"] -ms.assetid: 15d68737-177e-41f1-80e0-7c3e2afdf0fc --- # Compiler Error C3652 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3653.md b/docs/error-messages/compiler-errors-2/compiler-error-c3653.md index d1938913e45..0dff663b5c9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3653.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3653.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3653" title: "Compiler Error C3653" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3653" +ms.date: 11/04/2016 f1_keywords: ["C3653"] helpviewer_keywords: ["C3653"] -ms.assetid: 316549d7-f7ef-4578-a2ba-57adc8aac527 --- # Compiler Error C3653 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3654.md b/docs/error-messages/compiler-errors-2/compiler-error-c3654.md index 66e66547b50..f3cb4716ef2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3654.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3654.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3654" title: "Compiler Error C3654" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3654" +ms.date: 11/04/2016 f1_keywords: ["C3654"] helpviewer_keywords: ["C3654"] -ms.assetid: 57d96e3f-6bbb-4eaa-934b-26c23b4ceb2e --- # Compiler Error C3654 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3655.md b/docs/error-messages/compiler-errors-2/compiler-error-c3655.md index de7e4ad5899..cca99c6c609 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3655.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3655.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3655" title: "Compiler Error C3655" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3655" +ms.date: 11/04/2016 f1_keywords: ["C3655"] helpviewer_keywords: ["C3655"] -ms.assetid: 724919ab-2915-4b61-8794-44648e162d62 --- # Compiler Error C3655 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3656.md b/docs/error-messages/compiler-errors-2/compiler-error-c3656.md index 986b5ff0382..da9a9fb22c7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3656.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3656.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3656" title: "Compiler Error C3656" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3656" +ms.date: 11/04/2016 f1_keywords: ["C3656"] helpviewer_keywords: ["C3656"] -ms.assetid: 88965d85-73b0-4b35-8020-0650c9c94cd8 --- # Compiler Error C3656 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3657.md b/docs/error-messages/compiler-errors-2/compiler-error-c3657.md index ee168627ab8..155f032d990 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3657.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3657.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3657" title: "Compiler Error C3657" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3657" +ms.date: 11/04/2016 f1_keywords: ["C3657"] helpviewer_keywords: ["C3657"] -ms.assetid: 89a28a18-4c17-43a1-bda6-deb52c32d203 --- # Compiler Error C3657 From a82987b1ba60abd4f5e507f606c54b4addf1e731 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 21 Aug 2025 21:41:50 +0800 Subject: [PATCH 1509/2255] Convert "Class" in title to lowercase in `basic_string` class reference --- docs/standard-library/basic-string-class.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/standard-library/basic-string-class.md b/docs/standard-library/basic-string-class.md index 4cfe39831e2..286d9bdd9e9 100644 --- a/docs/standard-library/basic-string-class.md +++ b/docs/standard-library/basic-string-class.md @@ -1,5 +1,5 @@ --- -title: "basic_string Class" +title: "basic_string class" description: "API reference for the Standard C++ string class, `basic_string`." ms.date: 07/11/2023 f1_keywords: ["xstring/std::basic_string", "xstring/std::basic_string::allocator_type", "xstring/std::basic_string::const_iterator", "xstring/std::basic_string::const_pointer", "xstring/std::basic_string::const_reference", "xstring/std::basic_string::const_reverse_iterator", "xstring/std::basic_string::difference_type", "xstring/std::basic_string::iterator", "xstring/std::basic_string::npos", "xstring/std::basic_string::pointer", "xstring/std::basic_string::reference", "xstring/std::basic_string::reverse_iterator", "xstring/std::basic_string::size_type", "xstring/std::basic_string::traits_type", "xstring/std::basic_string::value_type", "xstring/std::basic_string::append", "xstring/std::basic_string::assign", "xstring/std::basic_string::at", "xstring/std::basic_string::back", "xstring/std::basic_string::begin", "xstring/std::basic_string::c_str", "xstring/std::basic_string::capacity", "xstring/std::basic_string::cbegin", "xstring/std::basic_string::cend", "xstring/std::basic_string::clear", "xstring/std::basic_string::compare", "xstring/std::basic_string::copy", "xstring/std::basic_string::crbegin", "xstring/std::basic_string::crend", "xstring/std::basic_string::_Copy_s", "xstring/std::basic_string::data", "xstring/std::basic_string::empty", "xstring/std::basic_string::end", "xstring/std::basic_string::erase", "xstring/std::basic_string::find", "xstring/std::basic_string::find_first_not_of", "xstring/std::basic_string::find_first_of", "xstring/std::basic_string::find_last_not_of", "xstring/std::basic_string::find_last_of", "xstring/std::basic_string::front", "xstring/std::basic_string::get_allocator", "xstring/std::basic_string::insert", "xstring/std::basic_string::length", "xstring/std::basic_string::max_size", "xstring/std::basic_string::pop_back", "xstring/std::basic_string::push_back", "xstring/std::basic_string::rbegin", "xstring/std::basic_string::rend", "xstring/std::basic_string::replace", "xstring/std::basic_string::reserve", "xstring/std::basic_string::resize", "xstring/std::basic_string::rfind", "xstring/std::basic_string::shrink_to_fit", "xstring/std::basic_string::size", "xstring/std::basic_string::substr", "xstring/std::basic_string::ends_with", "xstring/std::basic_string::starts_with", "xstring/std::basic_string::swap", 'xstring/std::literals::string_literals', 'std::literals::string_literals', 'string_literals', 'xstring/std::literals::string_literals::operator "s', 'std::literals::string_literals::operator s'] @@ -7,7 +7,7 @@ helpviewer_keywords: ["std::basic_string [C++]", "std::basic_string [C++], alloc ms.custom: devdivchpfy22 --- -# `basic_string` Class +# `basic_string` class The sequences controlled by an object of type `basic_string` are the Standard C++ string class and are referred to as strings, but they shouldn't be confused with the null-terminated C-style strings used throughout the C++ Standard Library. The Standard C++ string is a container that enables the use of strings as normal types, such as comparison and concatenation operations, iterators, C++ Standard Library algorithms, and copying and assigning with class allocator-managed memory. If you need to convert a Standard C++ string to a null-terminated C-style string, use the [`basic_string::c_str`](#c_str) member. From d7a7af8b136a70050d6783edbf1039cdfcada46b Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 21 Aug 2025 21:51:26 +0800 Subject: [PATCH 1510/2255] Add some backticks in `basic_string` class reference --- docs/standard-library/basic-string-class.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/standard-library/basic-string-class.md b/docs/standard-library/basic-string-class.md index 286d9bdd9e9..0df3318f603 100644 --- a/docs/standard-library/basic-string-class.md +++ b/docs/standard-library/basic-string-class.md @@ -24,7 +24,7 @@ class basic_string; The data type of a single character to be stored in the string. The C++ Standard Library provides specializations of this class template, with the type definitions [`string`](../standard-library/string-typedefs.md#string) for elements of type `char`, [`wstring`](../standard-library/string-typedefs.md#wstring), for `wchar_t`, [`u16string`](../standard-library/string-typedefs.md#u16string) for `char16_t`, and [`u32string`](../standard-library/string-typedefs.md#u32string) for `char32_t`. *`Traits`*\ -Various important properties of the `CharType` elements in a basic_string specialization are described by the class `Traits`. The default value is `char_traits`<`CharType`>. +Various important properties of the `CharType` elements in a `basic_string` specialization are described by the class `Traits`. The default value is `char_traits`<`CharType`>. *`Allocator`*\ The type that represents the stored allocator object that encapsulates details about the string's allocation and deallocation of memory. The default value is `allocator`. @@ -130,9 +130,9 @@ References, pointers, and iterators that designate elements of the controlled se ## Requirements -**Header:** \ +**Header:** `` -**Namespace:** std +**Namespace:** `std` ## `basic_string::allocator_type` @@ -379,10 +379,10 @@ The source string whose characters are to be assigned to the target string. The character value to be assigned. *`first`*\ -An input iterator, const_pointer, or const_iterator addressing the first character in the range of the source string to be assigned to the target range. +An input iterator, `const_pointer`, or `const_iterator` addressing the first character in the range of the source string to be assigned to the target range. *`last`*\ -An input iterator, const_pointer, or const_iterator addressing the one beyond the last character in the range of the source string to be assigned to the target range. +An input iterator, `const_pointer`, or `const_iterator` addressing the one beyond the last character in the range of the source string to be assigned to the target range. *`off`*\ The position at which new characters will start to be assigned. @@ -662,10 +662,10 @@ The index of a character in a string that is the first to be used to initialize The character value to be copied into the string being constructed. *`first`*\ -An input iterator, const_pointer, or const_iterator addressing the first element in the source range to be inserted. +An input iterator, `const_pointer`, or `const_iterator` addressing the first element in the source range to be inserted. *`last`*\ -An input iterator, const_pointer, or const_iterator addressing the position of the one beyond the last element in the source range to be inserted. +An input iterator, `const_pointer`, or `const_iterator` addressing the position of the one beyond the last element in the source range to be inserted. ### Return value @@ -3908,10 +3908,10 @@ An iterator addressing the first character to be removed in the operand string. An iterator addressing the last character to be removed in the operand string. *`first`*\ -An iterator, const_pointer, or const_iterator addressing the first character to be copied in the parameter string. +An iterator, `const_pointer`, or `const_iterator` addressing the first character to be copied in the parameter string. *`last`*\ -An iterator, const_pointer, or const_iterator addressing the last character to be copied in the parameter string. +An iterator, `const_pointer`, or `const_iterator` addressing the last character to be copied in the parameter string. *`count`*\ The number of times *`char_value`* is copied into the operand string. From b49ef085cb9ac08eee3c4461cf85b025ceb581a0 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 21 Aug 2025 21:53:41 +0800 Subject: [PATCH 1511/2255] Rename "Parameters" heading with "Template parameters" in `basic_string` class reference --- docs/standard-library/basic-string-class.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard-library/basic-string-class.md b/docs/standard-library/basic-string-class.md index 0df3318f603..efd53e9ef04 100644 --- a/docs/standard-library/basic-string-class.md +++ b/docs/standard-library/basic-string-class.md @@ -18,7 +18,7 @@ template , class Allocator class basic_string; ``` -### Parameters +### Template parameters *`CharType`*\ The data type of a single character to be stored in the string. The C++ Standard Library provides specializations of this class template, with the type definitions [`string`](../standard-library/string-typedefs.md#string) for elements of type `char`, [`wstring`](../standard-library/string-typedefs.md#wstring), for `wchar_t`, [`u16string`](../standard-library/string-typedefs.md#u16string) for `char16_t`, and [`u32string`](../standard-library/string-typedefs.md#u32string) for `char32_t`. From ba3cf7a685ecb1c522680c22582363515dc5209e Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 21 Aug 2025 22:15:32 +0800 Subject: [PATCH 1512/2255] Fix some typos in `basic_string` class reference --- docs/standard-library/basic-string-class.md | 28 ++++++++++----------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/standard-library/basic-string-class.md b/docs/standard-library/basic-string-class.md index efd53e9ef04..62bae2185c2 100644 --- a/docs/standard-library/basic-string-class.md +++ b/docs/standard-library/basic-string-class.md @@ -279,7 +279,7 @@ int main( ) // appending one string to another in two ways, // comparing append and operator [ ] string str1d ( "Hello " ), str2d ( "Wide " ), str3d ( "World " ); - cout << "The string str2d is: " << str2d << endl; + cout << "The string str2d is: " << str2d << endl; str1d.append ( str2d ); cout << "The appended string str1d is: " << str1d << "." << endl; @@ -316,7 +316,7 @@ Appending the 1st part of the C-string cstr1b to string str1 gives: Hello Out. The string str2c is: Wide World The appended string str1 is: Hello World. -The string str2d is: Wide +The string str2d is: Wide The appended string str1d is: Hello Wide . The doubly appended string str1 is: Hello Wide World . @@ -417,7 +417,7 @@ int main( ) << str1a << "." << endl << endl; // The second member function assigning a specific - // number of the of characters a C-string to a string + // number of the characters of a C-string to a string string str1b; const char *cstr1b = "Out There"; cout << "The C-string cstr1b is: " << cstr1b << endl; @@ -452,7 +452,7 @@ int main( ) // number of characters of a certain value to a string string str1e ( "Hello " ); str1e.assign ( 4 , '!' ); - cout << "The string str1 assigned with eclamations is: " + cout << "The string str1 assigned with exclamations is: " << str1e << endl << endl; // The sixth member function assigning the value from @@ -481,7 +481,7 @@ The string str1 newly assigned with string str2d is: Wide. The string str3d is: World. The string str1 reassigned with string str3d is: World. -The string str1 assigned with eclamations is: !!!! +The string str1 assigned with exclamations is: !!!! The string str2f is: Wide World The string str1 assigned a range of string str2f is: World. @@ -512,7 +512,7 @@ The first element of the string has an index of zero and the following elements The member [`operator[]`](#op_at) is faster than the member function `at` for providing read and write access to the elements of a string. -The member `operator[]` doesn't check whether the index passed as a parameter is valid but the member function `at` does and so should be used if the validity isn't certain. An invalid index, which is an index less that zero or greater than or equal to the size of the string, passed to the member function `at` throws an [`out_of_range` Class](../standard-library/out-of-range-class.md) exception. An invalid index passed to the `operator[]` results in undefined behavior, but the index equal to the length of the string is a valid index for const strings and the operator returns the null-character when passed this index. +The member `operator[]` doesn't check whether the index passed as a parameter is valid but the member function `at` does and so should be used if the validity isn't certain. An invalid index, which is an index less than zero or greater than or equal to the size of the string, passed to the member function `at` throws an [`out_of_range` Class](../standard-library/out-of-range-class.md) exception. An invalid index passed to the `operator[]` results in undefined behavior, but the index equal to the length of the string is a valid index for const strings and the operator returns the null-character when passed this index. The reference returned may be invalidated by string reallocations or modifications for the non-`const` strings. @@ -1079,7 +1079,7 @@ A negative value if the operand string is less than the parameter string; zero i ### Remarks -The `compare` member functions compare either all, or part, of the parameter and operand strings depending on which in used. +The `compare` member functions compare either all, or part, of the parameter and operand strings depending on which is used. The comparison is case-sensitive. @@ -1778,7 +1778,7 @@ int main( ) if ( str2.begin( ) == str2.end ( ) ) cout << "The string str2 is empty." << endl; else - cout << "The stringstr2 is not empty." << endl; + cout << "The string str2 is not empty." << endl; } ``` @@ -2447,7 +2447,7 @@ int main( ) << "position is: " << indexCh3b << endl << endl; else cout << "Elements of the substring '5G' were not " - << "found in str3\n after the first occurrrence." + << "found in str3\n after the first occurrence." << endl << endl; // The fourth member function searches a string @@ -3479,7 +3479,7 @@ The first element of the string has an index of zero, and the following elements `operator[]` is faster than the member function [`at`](#at) for providing read and write access to the elements of a string. -`operator[]` doesn't check whether the index passed as a parameter is valid, but the member function `at` does and so should be used in the validity isn't certain. An invalid index (an index less that zero or greater than or equal to the size of the string) passed to the member function `at` throws an [`out_of_range` Class](../standard-library/out-of-range-class.md) exception. An invalid index passed to `operator[]` results in undefined behavior, but the index equal to the length of the string is a valid index for const strings and the operator returns the null character when passed this index. +`operator[]` doesn't check whether the index passed as a parameter is valid, but the member function `at` does and so should be used if the validity isn't certain. An invalid index (an index less than zero or greater than or equal to the size of the string) passed to the member function `at` throws an [`out_of_range` Class](../standard-library/out-of-range-class.md) exception. An invalid index passed to `operator[]` results in undefined behavior, but the index equal to the length of the string is a valid index for const strings and the operator returns the null character when passed this index. The reference returned may be invalidated by string reallocations or modifications for the non-`const` strings. @@ -3690,7 +3690,7 @@ int main( ) if ( str2.rbegin( ) == str2.rend ( ) ) cout << "The string str2 is empty." << endl; else - cout << "The stringstr2 is not empty." << endl; + cout << "The string str2 is not empty." << endl; } ``` @@ -3788,7 +3788,7 @@ int main( ) if ( str2.rbegin( ) == str2.rend ( ) ) cout << "The string str2 is empty." << endl; else - cout << "The stringstr2 is not empty." << endl; + cout << "The string str2 is not empty." << endl; } ``` @@ -4151,7 +4151,7 @@ int main( ) sizerStr1 = str1.size ( ); caprStr1 = str1.capacity ( ); - cout << "The string str1with augmented capacity is: " + cout << "The string str1 with augmented capacity is: " << str1 << endl; cout << "The current size of string str1 is: " << sizerStr1 << "." << endl; @@ -4180,7 +4180,7 @@ The original string str1 is: Hello world The current size of original string str1 is: 11. The capacity of original string str1 is: 15. -The string str1with augmented capacity is: Hello world +The string str1 with augmented capacity is: Hello world The current size of string str1 is: 11. The new capacity of string str1 is: 47. From 85624a1cd71bba30de6cc4d3e211ac7f5f89ec46 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 21 Aug 2025 22:18:44 +0800 Subject: [PATCH 1513/2255] Fix literals and `compare` syntax in `basic_string` class reference --- docs/standard-library/basic-string-class.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/standard-library/basic-string-class.md b/docs/standard-library/basic-string-class.md index 62bae2185c2..24e87722de5 100644 --- a/docs/standard-library/basic-string-class.md +++ b/docs/standard-library/basic-string-class.md @@ -117,7 +117,7 @@ The headers that define `basic_string` also define the following [user-defined l | Declaration | Description | |--|--| | `inline string operator"" s(const char* str, size_t len)` | Returns: `string(str, len)` | -| `inline string operator"" s(const wchar_t* str, size_t len)` | Returns: `wstring(str, len)` | +| `inline wstring operator"" s(const wchar_t* str, size_t len)` | Returns: `wstring(str, len)` | | `inline basic_string operator"" s(const char8_t* str, size_t len)` | Returns: `basic_string(str, len)` | | `inline u16string operator"" s(const char16_t* str, size_t len)` | Returns: `u16string(str, len)` | | `inline u32string operator"" s(const char32_t* str, size_t len)` | Returns: `u32string(str, len)` | @@ -1046,7 +1046,7 @@ int compare( int compare( size_type position_1, size_type number_1, - const value_type* ptr + const value_type* ptr, size_type number_2) const; ``` From a81ce6c70b19d61392d23c15b876615443ae8f16 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 21 Aug 2025 22:22:13 +0800 Subject: [PATCH 1514/2255] Clean up redundant relative links in `basic_string` class reference --- docs/standard-library/basic-string-class.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/standard-library/basic-string-class.md b/docs/standard-library/basic-string-class.md index 24e87722de5..bb063741d04 100644 --- a/docs/standard-library/basic-string-class.md +++ b/docs/standard-library/basic-string-class.md @@ -21,7 +21,7 @@ class basic_string; ### Template parameters *`CharType`*\ -The data type of a single character to be stored in the string. The C++ Standard Library provides specializations of this class template, with the type definitions [`string`](../standard-library/string-typedefs.md#string) for elements of type `char`, [`wstring`](../standard-library/string-typedefs.md#wstring), for `wchar_t`, [`u16string`](../standard-library/string-typedefs.md#u16string) for `char16_t`, and [`u32string`](../standard-library/string-typedefs.md#u32string) for `char32_t`. +The data type of a single character to be stored in the string. The C++ Standard Library provides specializations of this class template, with the type definitions [`string`](string-typedefs.md#string) for elements of type `char`, [`wstring`](string-typedefs.md#wstring), for `wchar_t`, [`u16string`](string-typedefs.md#u16string) for `char16_t`, and [`u32string`](string-typedefs.md#u32string) for `char32_t`. *`Traits`*\ Various important properties of the `CharType` elements in a `basic_string` specialization are described by the class `Traits`. The default value is `char_traits`<`CharType`>. @@ -124,7 +124,7 @@ The headers that define `basic_string` also define the following [user-defined l ## Remarks -If a function is asked to generate a sequence longer than [`max_size`](#max_size) elements, the function reports a length error by throwing an object of type [`length_error`](../standard-library/length-error-class.md). +If a function is asked to generate a sequence longer than [`max_size`](#max_size) elements, the function reports a length error by throwing an object of type [`length_error`](length-error-class.md). References, pointers, and iterators that designate elements of the controlled sequence can become invalid after any call to a function that alters the controlled sequence, or after the first call to a non-`const` member function. @@ -512,7 +512,7 @@ The first element of the string has an index of zero and the following elements The member [`operator[]`](#op_at) is faster than the member function `at` for providing read and write access to the elements of a string. -The member `operator[]` doesn't check whether the index passed as a parameter is valid but the member function `at` does and so should be used if the validity isn't certain. An invalid index, which is an index less than zero or greater than or equal to the size of the string, passed to the member function `at` throws an [`out_of_range` Class](../standard-library/out-of-range-class.md) exception. An invalid index passed to the `operator[]` results in undefined behavior, but the index equal to the length of the string is a valid index for const strings and the operator returns the null-character when passed this index. +The member `operator[]` doesn't check whether the index passed as a parameter is valid but the member function `at` does and so should be used if the validity isn't certain. An invalid index, which is an index less than zero or greater than or equal to the size of the string, passed to the member function `at` throws an [`out_of_range` Class](out-of-range-class.md) exception. An invalid index passed to the `operator[]` results in undefined behavior, but the index equal to the length of the string is a valid index for const strings and the operator returns the null-character when passed this index. The reference returned may be invalidated by string reallocations or modifications for the non-`const` strings. @@ -3200,7 +3200,7 @@ The maximum number of characters a string could contain. ### Remarks -An exception of type [`length_error` Class](../standard-library/length-error-class.md) is thrown when an operation produces a string with a length greater than the maximum size. +An exception of type [`length_error` Class](length-error-class.md) is thrown when an operation produces a string with a length greater than the maximum size. ### Example @@ -3479,11 +3479,11 @@ The first element of the string has an index of zero, and the following elements `operator[]` is faster than the member function [`at`](#at) for providing read and write access to the elements of a string. -`operator[]` doesn't check whether the index passed as a parameter is valid, but the member function `at` does and so should be used if the validity isn't certain. An invalid index (an index less than zero or greater than or equal to the size of the string) passed to the member function `at` throws an [`out_of_range` Class](../standard-library/out-of-range-class.md) exception. An invalid index passed to `operator[]` results in undefined behavior, but the index equal to the length of the string is a valid index for const strings and the operator returns the null character when passed this index. +`operator[]` doesn't check whether the index passed as a parameter is valid, but the member function `at` does and so should be used if the validity isn't certain. An invalid index (an index less than zero or greater than or equal to the size of the string) passed to the member function `at` throws an [`out_of_range` Class](out-of-range-class.md) exception. An invalid index passed to `operator[]` results in undefined behavior, but the index equal to the length of the string is a valid index for const strings and the operator returns the null character when passed this index. The reference returned may be invalidated by string reallocations or modifications for the non-`const` strings. -When compiling with [`_ITERATOR_DEBUG_LEVEL`](../standard-library/iterator-debug-level.md) set to 1 or 2, a runtime error will occur if you attempt to access an element outside the bounds of the string. For more information, see [Checked Iterators](../standard-library/checked-iterators.md). +When compiling with [`_ITERATOR_DEBUG_LEVEL`](iterator-debug-level.md) set to 1 or 2, a runtime error will occur if you attempt to access an element outside the bounds of the string. For more information, see [Checked Iterators](checked-iterators.md). ### Example @@ -4805,7 +4805,7 @@ For type `string`, it's equivalent to `char_traits`. ### Example -See the example for [`copy`](../standard-library/char-traits-struct.md#copy) for an example of how to declare and use `traits_type`. +See the example for [`copy`](char-traits-struct.md#copy) for an example of how to declare and use `traits_type`. ## `basic_string::value_type` @@ -4847,5 +4847,5 @@ The character ch2 is: H. ## See also -[``](../standard-library/string.md)\ -[Thread safety in the C++ standard library](../standard-library/thread-safety-in-the-cpp-standard-library.md) +[``](string.md)\ +[Thread safety in the C++ standard library](thread-safety-in-the-cpp-standard-library.md) From 7de1088101a79256c18430bbc1f04358a6ab9047 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 21 Aug 2025 22:33:13 +0800 Subject: [PATCH 1515/2255] Add blockquotes for error messages in range [C3661, C3710] --- docs/error-messages/compiler-errors-2/compiler-error-c3661.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3662.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3665.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3666.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3668.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3669.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3670.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3671.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3672.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3673.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3675.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3697.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3698.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3699.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3701.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3702.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3703.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3704.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3705.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3706.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3707.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3708.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3709.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3710.md | 2 +- 24 files changed, 24 insertions(+), 24 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3661.md b/docs/error-messages/compiler-errors-2/compiler-error-c3661.md index 8f0e21753b5..c814fa42a67 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3661.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3661.md @@ -8,7 +8,7 @@ ms.assetid: 50793fd1-1829-4b29-ad0d-094ef2068b43 --- # Compiler Error C3661 -explicit override list did not find any methods to override +> explicit override list did not find any methods to override An explicit override specified one or more type names. However, there was no function with the necessary signature in the type(s) that matched the overriding function's signature. If you attempt to override based on type name, there must be one or more virtual functions in the specified type(s) that match the signature of the overriding function. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3662.md b/docs/error-messages/compiler-errors-2/compiler-error-c3662.md index 6ba37b24059..68824854ab6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3662.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3662.md @@ -8,7 +8,7 @@ ms.assetid: 61bd3e41-a86b-42c0-be89-d992d3906ff1 --- # Compiler Error C3662 -'member' : override specifier 'specifier' only allowed on member functions of managed or WinRT classes +> 'member' : override specifier 'specifier' only allowed on member functions of managed or WinRT classes An override specifier was used on a member of native type, which is not allowed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3665.md b/docs/error-messages/compiler-errors-2/compiler-error-c3665.md index 936a2255bf1..aba871e8bbb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3665.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3665.md @@ -8,7 +8,7 @@ ms.assetid: 893bb47e-8de1-43aa-af7d-fa47ad149ee9 --- # Compiler Error C3665 -'destructor' : override specifier 'keyword' not allowed on a destructor/finalizer +> 'destructor' : override specifier 'keyword' not allowed on a destructor/finalizer A keyword was used that is not allowed on a destructor or finalizer. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3666.md b/docs/error-messages/compiler-errors-2/compiler-error-c3666.md index c2aa130de78..de42346d9f8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3666.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3666.md @@ -8,7 +8,7 @@ ms.assetid: 459e51dd-cefb-4346-99b3-644f2d8b65b2 --- # Compiler Error C3666 -'constructor' : override specifier 'keyword' not allowed on a constructor +> 'constructor' : override specifier 'keyword' not allowed on a constructor An override specifier was used on a constructor, and that is not allowed. For more information, see [Override Specifiers](../../extensions/override-specifiers-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3668.md b/docs/error-messages/compiler-errors-2/compiler-error-c3668.md index 079daf488b1..24dd6db8f32 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3668.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3668.md @@ -8,7 +8,7 @@ ms.assetid: 53a96698-bde4-4447-95b5-b5108291f60c --- # Compiler Error C3668 -'method' : method with override specifier 'override' did not override any base class methods +> 'method' : method with override specifier 'override' did not override any base class methods A function attempted to override a non-existent function. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3669.md b/docs/error-messages/compiler-errors-2/compiler-error-c3669.md index 4b1fcf62295..4c929833b3f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3669.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3669.md @@ -8,7 +8,7 @@ ms.assetid: be9c7ae4-e96f-47ab-922a-39a3537d5ca6 --- # Compiler Error C3669 -'member' : override specifier 'override' not allowed on static member functions or constructors +> 'member' : override specifier 'override' not allowed on static member functions or constructors An override was specified incorrectly. For more information, see [Explicit Overrides](../../extensions/explicit-overrides-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3670.md b/docs/error-messages/compiler-errors-2/compiler-error-c3670.md index 6c0d1e1786d..54e1c0cde7e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3670.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3670.md @@ -8,7 +8,7 @@ ms.assetid: d0fa9c6e-8f90-48c7-9066-31b4fa5942eb --- # Compiler Error C3670 -'override' : cannot override inaccessible base class method 'method' +> 'override' : cannot override inaccessible base class method 'method' An override can only take place on a function whose access level makes it available in a derived type. For more information, see [Explicit Overrides](../../extensions/explicit-overrides-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3671.md b/docs/error-messages/compiler-errors-2/compiler-error-c3671.md index 8a310719b59..7fa3f97c91a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3671.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3671.md @@ -8,7 +8,7 @@ ms.assetid: d684e4ae-87e2-4424-80bb-6f346652c831 --- # Compiler Error C3671 -'function_1' : function does not override 'function_2' +> 'function_1' : function does not override 'function_2' When using explicit override syntax, the compiler generates an error if a function is not overridden. See [Explicit Overrides](../../extensions/explicit-overrides-cpp-component-extensions.md) for more information. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3672.md b/docs/error-messages/compiler-errors-2/compiler-error-c3672.md index d217e41c36b..aefac392f9f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3672.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3672.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C3672"] --- # Compiler Error C3672 -pseudo-destructor expression can only be used as part of a function call +> pseudo-destructor expression can only be used as part of a function call A destructor was called incorrectly. For more information, see [Destructors](../../cpp/destructors-cpp.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3673.md b/docs/error-messages/compiler-errors-2/compiler-error-c3673.md index 80458100b76..9c9130ccba6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3673.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3673.md @@ -8,7 +8,7 @@ ms.assetid: bb6d2079-05af-4e2c-be0e-75c892e6c590 --- # Compiler Error C3673 -'type' : class does not have a copy-constructor +> 'type' : class does not have a copy-constructor A user-defined constructor is needed to copy objects of CLR ref types. For more information, see [C++ Stack Semantics for Reference Types](../../dotnet/cpp-stack-semantics-for-reference-types.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3675.md b/docs/error-messages/compiler-errors-2/compiler-error-c3675.md index 8ef0cbf41f7..9eb8ba63e49 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3675.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3675.md @@ -8,7 +8,7 @@ ms.assetid: 87461613-6633-430b-b95d-c7cb1bb63776 --- # Compiler Error C3675 -'function' : is reserved because 'property' is defined +> 'function' : is reserved because 'property' is defined When you declare a simple property, the compiler generates the get and set accessor methods, and those names are present in the scope of your program. The compiler-generated names are formed by prepending get_ and set_ to the property name. Therefore, you cannot declare functions with the same name as the compiler-generated accessors. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3697.md b/docs/error-messages/compiler-errors-2/compiler-error-c3697.md index aa3cb7f3396..c453a531835 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3697.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3697.md @@ -8,7 +8,7 @@ ms.assetid: 2d3f63c4-b7f8-421d-a7a5-2bf17fd054f9 --- # Compiler Error C3697 -'qualifier' : cannot use this qualifier on '^' +> 'qualifier' : cannot use this qualifier on '^' The tracking handle (^) was applied to a qualifier for which it was not designed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3698.md b/docs/error-messages/compiler-errors-2/compiler-error-c3698.md index f3be544edad..f8527b12388 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3698.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3698.md @@ -8,7 +8,7 @@ ms.assetid: 3c02fb08-7ba4-4637-a06f-19926cb2b5f1 --- # Compiler Error C3698 -'type' : cannot use this type as argument of 'operator' +> 'type' : cannot use this type as argument of 'operator' A managed object was declared incorrectly. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3699.md b/docs/error-messages/compiler-errors-2/compiler-error-c3699.md index 98d2020bbf0..ccb0d4ebabd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3699.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3699.md @@ -8,7 +8,7 @@ ms.assetid: 47c29afc-ab8b-4238-adfe-788dd6e00b3b --- # Compiler Error C3699 -'operator' : cannot use this indirection on type 'type' +> 'operator' : cannot use this indirection on type 'type' An attempt was made to use indirection that is not allowed on `type`. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3701.md b/docs/error-messages/compiler-errors-2/compiler-error-c3701.md index 5ddae9dc5cf..664bd89b8b8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3701.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3701.md @@ -8,7 +8,7 @@ ms.assetid: a7faaa87-d2f5-4d6a-9a2f-5cab2d24a648 --- # Compiler Error C3701 -'function' : event_source has no events +> 'function' : event_source has no events You attempted to use [event_source](../../windows/attributes/event-source.md) on a class that has no event methods. To fix this error, add one or more events to the class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3702.md b/docs/error-messages/compiler-errors-2/compiler-error-c3702.md index c405d39324e..10662fdfd39 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3702.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3702.md @@ -8,7 +8,7 @@ ms.assetid: 14fcc20e-4404-45d7-be54-e4f09332fa5a --- # Compiler Error C3702 -'function' : ATL is required for COM events +> 'function' : ATL is required for COM events You attempted to use COM events without including the necessary ATL header files. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3703.md b/docs/error-messages/compiler-errors-2/compiler-error-c3703.md index 674971f02c2..08331599d6d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3703.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3703.md @@ -8,7 +8,7 @@ ms.assetid: 7e3677d9-f2be-4c26-998f-423564e9023c --- # Compiler Error C3703 -'event handler': an event handler method must have the same storage class as the source 'event' +> 'event handler': an event handler method must have the same storage class as the source 'event' An [event](../../cpp/event-handling.md) has a different storage class than the event handler to which it is hooked. For example, this error occurs if the event handler is a static member function and the event is not static. To fix this error, give the event and the event handler the same storage class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3704.md b/docs/error-messages/compiler-errors-2/compiler-error-c3704.md index 619885fc8a2..9865071ac3d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3704.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3704.md @@ -8,7 +8,7 @@ ms.assetid: ee40ea35-a214-4dec-9489-d7f155dd0ac2 --- # Compiler Error C3704 -'function' : a vararg method cannot fire events +> 'function' : a vararg method cannot fire events You attempted to use [__event](../../cpp/event.md) on a vararg method. To fix this error, replace the `fireEvent(int i, ...)` call with the `fireEvent(int i)` call as shown in the following code sample. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3705.md b/docs/error-messages/compiler-errors-2/compiler-error-c3705.md index d0aafaf4e3d..44622e50c94 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3705.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3705.md @@ -8,7 +8,7 @@ ms.assetid: 8361017d-5782-4214-a9d7-e9825fd29bc8 --- # Compiler Error C3705 -'function' : cannot find eventing interface +> 'function' : cannot find eventing interface You must define an event interface to use COM events. Note that the `#include` lines of the ATL header files shown in the sample below are required for using COM events. To fix this error, uncomment the definition of the `IEvents` interface in the sample code. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3706.md b/docs/error-messages/compiler-errors-2/compiler-error-c3706.md index 82e34020d09..2e6afef7b60 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3706.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3706.md @@ -8,7 +8,7 @@ ms.assetid: d20a33eb-d625-46c5-ac87-32075a590d07 --- # Compiler Error C3706 -'function' : must be a COM interface to fire COM events +> 'function' : must be a COM interface to fire COM events The event interface that you use to fire COM events must be a COM interface. In this situation, the interface should either be defined using a Visual C++ attribute, or imported using [#import](../../preprocessor/hash-import-directive-cpp.md) from a type library with #import's embedded_idl attribute. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3707.md b/docs/error-messages/compiler-errors-2/compiler-error-c3707.md index 66e76dcccbd..c0e67e907fe 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3707.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3707.md @@ -8,7 +8,7 @@ ms.assetid: ac63a5dd-7a4b-48d2-9f2a-be9cb090134c --- # Compiler Error C3707 -'function' : dispinterface method must have a dispid +> 'function' : dispinterface method must have a dispid If you use a `dispinterface` method, you must assign it a `dispid`. To fix this error, assign a `dispid` to the `dispinterface` method, for example, by uncommenting the `id` attribute on the method in the sample below. For more information, see the attributes [dispinterface](../../windows/attributes/dispinterface.md) and [id](../../windows/attributes/id.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3708.md b/docs/error-messages/compiler-errors-2/compiler-error-c3708.md index 4d171cc1b67..107e72c845d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3708.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3708.md @@ -8,7 +8,7 @@ ms.assetid: 45e71564-9c7f-437f-98d8-a735ce162ed0 --- # Compiler Error C3708 -'interface': improper use of 'keyword'; must be a member of a compatible event source +> 'interface': improper use of 'keyword'; must be a member of a compatible event source To declare an interface as an event, the event declaration must be in an event source. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3709.md b/docs/error-messages/compiler-errors-2/compiler-error-c3709.md index c357f96034f..33dd4d47f58 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3709.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3709.md @@ -8,7 +8,7 @@ ms.assetid: d5576b04-2f93-420a-8f3e-8b8e987e8dab --- # Compiler Error C3709 -'function': improper syntax for specifying event in __hook/\__unhook +> 'function': improper syntax for specifying event in __hook/\__unhook When you specify an event source with [__hook](../../cpp/hook.md) or [__unhook](../../cpp/unhook.md), the first parameter must be a valid event method and the second parameter must be a valid event source object (not a method). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3710.md b/docs/error-messages/compiler-errors-2/compiler-error-c3710.md index a3e0b13c6c7..9c9ff72fcf3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3710.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3710.md @@ -8,7 +8,7 @@ ms.assetid: 18bec009-5b6f-464a-a21e-5d58a6936504 --- # Compiler Error C3710 -'function': improper syntax for specifying event handler in __hook/\__unhook +> 'function': improper syntax for specifying event handler in __hook/\__unhook When you specify an event handler with [__hook](../../cpp/hook.md) or [__unhook](../../cpp/unhook.md), the handler must be a valid method. From bcdee70f048094840ab2c14ecea1f6204aa3facd Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 21 Aug 2025 22:37:46 +0800 Subject: [PATCH 1516/2255] Add "Remarks" and "Example" headings for error references in range [C3661, C3710] --- docs/error-messages/compiler-errors-2/compiler-error-c3661.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3662.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3665.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3666.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3668.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3669.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3670.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3671.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3672.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3673.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3675.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3697.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3698.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3699.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3701.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3702.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3703.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3704.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3705.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3706.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3707.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3708.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3709.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3710.md | 2 ++ 24 files changed, 74 insertions(+) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3661.md b/docs/error-messages/compiler-errors-2/compiler-error-c3661.md index c814fa42a67..a17a5373a45 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3661.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3661.md @@ -10,6 +10,8 @@ ms.assetid: 50793fd1-1829-4b29-ad0d-094ef2068b43 > explicit override list did not find any methods to override +## Remarks + An explicit override specified one or more type names. However, there was no function with the necessary signature in the type(s) that matched the overriding function's signature. If you attempt to override based on type name, there must be one or more virtual functions in the specified type(s) that match the signature of the overriding function. For more information, see [Explicit Overrides](../../extensions/explicit-overrides-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3662.md b/docs/error-messages/compiler-errors-2/compiler-error-c3662.md index 68824854ab6..83d66983951 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3662.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3662.md @@ -10,6 +10,8 @@ ms.assetid: 61bd3e41-a86b-42c0-be89-d992d3906ff1 > 'member' : override specifier 'specifier' only allowed on member functions of managed or WinRT classes +## Remarks + An override specifier was used on a member of native type, which is not allowed. For more information, see [Explicit Overrides](../../extensions/explicit-overrides-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3665.md b/docs/error-messages/compiler-errors-2/compiler-error-c3665.md index aba871e8bbb..bf01a1b641a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3665.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3665.md @@ -10,10 +10,14 @@ ms.assetid: 893bb47e-8de1-43aa-af7d-fa47ad149ee9 > 'destructor' : override specifier 'keyword' not allowed on a destructor/finalizer +## Remarks + A keyword was used that is not allowed on a destructor or finalizer. For example, a new slot cannot be requested on a destructor or finalizer. For more information, see [Explicit Overrides](../../extensions/explicit-overrides-cpp-component-extensions.md) and [Destructors and finalizers](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Destructors_and_finalizers). +## Example + The following sample generates C3665: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3666.md b/docs/error-messages/compiler-errors-2/compiler-error-c3666.md index de42346d9f8..11e8e88bde7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3666.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3666.md @@ -10,6 +10,8 @@ ms.assetid: 459e51dd-cefb-4346-99b3-644f2d8b65b2 > 'constructor' : override specifier 'keyword' not allowed on a constructor +## Remarks + An override specifier was used on a constructor, and that is not allowed. For more information, see [Override Specifiers](../../extensions/override-specifiers-cpp-component-extensions.md). ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3668.md b/docs/error-messages/compiler-errors-2/compiler-error-c3668.md index 24dd6db8f32..a1a25fe02c7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3668.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3668.md @@ -10,6 +10,8 @@ ms.assetid: 53a96698-bde4-4447-95b5-b5108291f60c > 'method' : method with override specifier 'override' did not override any base class methods +## Remarks + A function attempted to override a non-existent function. For more information, see [Explicit Overrides](../../extensions/explicit-overrides-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3669.md b/docs/error-messages/compiler-errors-2/compiler-error-c3669.md index 4c929833b3f..2c6ad6f0222 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3669.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3669.md @@ -10,6 +10,8 @@ ms.assetid: be9c7ae4-e96f-47ab-922a-39a3537d5ca6 > 'member' : override specifier 'override' not allowed on static member functions or constructors +## Remarks + An override was specified incorrectly. For more information, see [Explicit Overrides](../../extensions/explicit-overrides-cpp-component-extensions.md). ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3670.md b/docs/error-messages/compiler-errors-2/compiler-error-c3670.md index 54e1c0cde7e..886c65a0eef 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3670.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3670.md @@ -10,8 +10,12 @@ ms.assetid: d0fa9c6e-8f90-48c7-9066-31b4fa5942eb > 'override' : cannot override inaccessible base class method 'method' +## Remarks + An override can only take place on a function whose access level makes it available in a derived type. For more information, see [Explicit Overrides](../../extensions/explicit-overrides-cpp-component-extensions.md). +## Example + The following sample generates C3670: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3671.md b/docs/error-messages/compiler-errors-2/compiler-error-c3671.md index 7fa3f97c91a..3be2133e593 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3671.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3671.md @@ -10,6 +10,8 @@ ms.assetid: d684e4ae-87e2-4424-80bb-6f346652c831 > 'function_1' : function does not override 'function_2' +## Remarks + When using explicit override syntax, the compiler generates an error if a function is not overridden. See [Explicit Overrides](../../extensions/explicit-overrides-cpp-component-extensions.md) for more information. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3672.md b/docs/error-messages/compiler-errors-2/compiler-error-c3672.md index aefac392f9f..7317008d9c4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3672.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3672.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C3672"] > pseudo-destructor expression can only be used as part of a function call +## Remarks + A destructor was called incorrectly. For more information, see [Destructors](../../cpp/destructors-cpp.md). ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3673.md b/docs/error-messages/compiler-errors-2/compiler-error-c3673.md index 9c9130ccba6..a60df380165 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3673.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3673.md @@ -10,6 +10,8 @@ ms.assetid: bb6d2079-05af-4e2c-be0e-75c892e6c590 > 'type' : class does not have a copy-constructor +## Remarks + A user-defined constructor is needed to copy objects of CLR ref types. For more information, see [C++ Stack Semantics for Reference Types](../../dotnet/cpp-stack-semantics-for-reference-types.md). ## Examples diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3675.md b/docs/error-messages/compiler-errors-2/compiler-error-c3675.md index 9eb8ba63e49..a130f469ea4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3675.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3675.md @@ -10,6 +10,8 @@ ms.assetid: 87461613-6633-430b-b95d-c7cb1bb63776 > 'function' : is reserved because 'property' is defined +## Remarks + When you declare a simple property, the compiler generates the get and set accessor methods, and those names are present in the scope of your program. The compiler-generated names are formed by prepending get_ and set_ to the property name. Therefore, you cannot declare functions with the same name as the compiler-generated accessors. See [property](../../extensions/property-cpp-component-extensions.md) for more information. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3697.md b/docs/error-messages/compiler-errors-2/compiler-error-c3697.md index c453a531835..64a527be4f4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3697.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3697.md @@ -10,8 +10,12 @@ ms.assetid: 2d3f63c4-b7f8-421d-a7a5-2bf17fd054f9 > 'qualifier' : cannot use this qualifier on '^' +## Remarks + The tracking handle (^) was applied to a qualifier for which it was not designed. +## Example + The following sample generates C3697: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3698.md b/docs/error-messages/compiler-errors-2/compiler-error-c3698.md index f8527b12388..501ade0b1a0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3698.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3698.md @@ -10,8 +10,12 @@ ms.assetid: 3c02fb08-7ba4-4637-a06f-19926cb2b5f1 > 'type' : cannot use this type as argument of 'operator' +## Remarks + A managed object was declared incorrectly. +## Example + The following sample generates C3698: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3699.md b/docs/error-messages/compiler-errors-2/compiler-error-c3699.md index ccb0d4ebabd..55f0f9676bc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3699.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3699.md @@ -10,6 +10,8 @@ ms.assetid: 47c29afc-ab8b-4238-adfe-788dd6e00b3b > 'operator' : cannot use this indirection on type 'type' +## Remarks + An attempt was made to use indirection that is not allowed on `type`. ## Examples diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3701.md b/docs/error-messages/compiler-errors-2/compiler-error-c3701.md index 664bd89b8b8..227ec1555da 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3701.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3701.md @@ -10,8 +10,12 @@ ms.assetid: a7faaa87-d2f5-4d6a-9a2f-5cab2d24a648 > 'function' : event_source has no events +## Remarks + You attempted to use [event_source](../../windows/attributes/event-source.md) on a class that has no event methods. To fix this error, add one or more events to the class. +## Example + The following sample generates C3701: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3702.md b/docs/error-messages/compiler-errors-2/compiler-error-c3702.md index 10662fdfd39..491ea07a1a2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3702.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3702.md @@ -10,8 +10,12 @@ ms.assetid: 14fcc20e-4404-45d7-be54-e4f09332fa5a > 'function' : ATL is required for COM events +## Remarks + You attempted to use COM events without including the necessary ATL header files. +## Example + The following sample generates C3702: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3703.md b/docs/error-messages/compiler-errors-2/compiler-error-c3703.md index 08331599d6d..58d60c6968b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3703.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3703.md @@ -10,8 +10,12 @@ ms.assetid: 7e3677d9-f2be-4c26-998f-423564e9023c > 'event handler': an event handler method must have the same storage class as the source 'event' +## Remarks + An [event](../../cpp/event-handling.md) has a different storage class than the event handler to which it is hooked. For example, this error occurs if the event handler is a static member function and the event is not static. To fix this error, give the event and the event handler the same storage class. +## Example + The following sample generates C3703: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3704.md b/docs/error-messages/compiler-errors-2/compiler-error-c3704.md index 9865071ac3d..21f4db6209f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3704.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3704.md @@ -10,8 +10,12 @@ ms.assetid: ee40ea35-a214-4dec-9489-d7f155dd0ac2 > 'function' : a vararg method cannot fire events +## Remarks + You attempted to use [__event](../../cpp/event.md) on a vararg method. To fix this error, replace the `fireEvent(int i, ...)` call with the `fireEvent(int i)` call as shown in the following code sample. +## Example + The following sample generates C3704: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3705.md b/docs/error-messages/compiler-errors-2/compiler-error-c3705.md index 44622e50c94..2ca9fb5dc4f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3705.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3705.md @@ -10,8 +10,12 @@ ms.assetid: 8361017d-5782-4214-a9d7-e9825fd29bc8 > 'function' : cannot find eventing interface +## Remarks + You must define an event interface to use COM events. Note that the `#include` lines of the ATL header files shown in the sample below are required for using COM events. To fix this error, uncomment the definition of the `IEvents` interface in the sample code. +## Example + The following sample generates C3705: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3706.md b/docs/error-messages/compiler-errors-2/compiler-error-c3706.md index 2e6afef7b60..f79d2d62312 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3706.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3706.md @@ -10,12 +10,16 @@ ms.assetid: d20a33eb-d625-46c5-ac87-32075a590d07 > 'function' : must be a COM interface to fire COM events +## Remarks + The event interface that you use to fire COM events must be a COM interface. In this situation, the interface should either be defined using a Visual C++ attribute, or imported using [#import](../../preprocessor/hash-import-directive-cpp.md) from a type library with #import's embedded_idl attribute. Note that the `#include` lines of the ATL header files shown in the sample below are required for using COM events. To fix this error, make `IEvents` (the eventing interface) a COM interface by applying one of the following attributes to the interface definition: [object](../../windows/attributes/object-cpp.md), [dual](../../windows/attributes/dual.md), or [dispinterface](../../windows/attributes/dispinterface.md). If an interface is from a header file generated by MIDL, the compiler will not recognize it as a COM interface. +## Example + The following sample generates C3706: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3707.md b/docs/error-messages/compiler-errors-2/compiler-error-c3707.md index c0e67e907fe..0f851678ed2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3707.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3707.md @@ -10,8 +10,12 @@ ms.assetid: ac63a5dd-7a4b-48d2-9f2a-be9cb090134c > 'function' : dispinterface method must have a dispid +## Remarks + If you use a `dispinterface` method, you must assign it a `dispid`. To fix this error, assign a `dispid` to the `dispinterface` method, for example, by uncommenting the `id` attribute on the method in the sample below. For more information, see the attributes [dispinterface](../../windows/attributes/dispinterface.md) and [id](../../windows/attributes/id.md). +## Example + The following sample generates C3707: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3708.md b/docs/error-messages/compiler-errors-2/compiler-error-c3708.md index 107e72c845d..1b282e4ce1b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3708.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3708.md @@ -10,8 +10,12 @@ ms.assetid: 45e71564-9c7f-437f-98d8-a735ce162ed0 > 'interface': improper use of 'keyword'; must be a member of a compatible event source +## Remarks + To declare an interface as an event, the event declaration must be in an event source. +## Example + The following sample generates C3708: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3709.md b/docs/error-messages/compiler-errors-2/compiler-error-c3709.md index 33dd4d47f58..4f05c8baa2c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3709.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3709.md @@ -10,8 +10,12 @@ ms.assetid: d5576b04-2f93-420a-8f3e-8b8e987e8dab > 'function': improper syntax for specifying event in __hook/\__unhook +## Remarks + When you specify an event source with [__hook](../../cpp/hook.md) or [__unhook](../../cpp/unhook.md), the first parameter must be a valid event method and the second parameter must be a valid event source object (not a method). +## Example + The following sample generates C3709: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3710.md b/docs/error-messages/compiler-errors-2/compiler-error-c3710.md index 9c9ff72fcf3..6c2ed21be0a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3710.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3710.md @@ -10,6 +10,8 @@ ms.assetid: 18bec009-5b6f-464a-a21e-5d58a6936504 > 'function': improper syntax for specifying event handler in __hook/\__unhook +## Remarks + When you specify an event handler with [__hook](../../cpp/hook.md) or [__unhook](../../cpp/unhook.md), the handler must be a valid method. ## Example From af3f690155053d03373b754524c84e9cde72981d Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 21 Aug 2025 22:39:53 +0800 Subject: [PATCH 1517/2255] Replace term "sample" with "example" for error references in range [C3661, C3710] --- .../compiler-errors-2/compiler-error-c3662.md | 2 +- .../compiler-errors-2/compiler-error-c3665.md | 2 +- .../compiler-errors-2/compiler-error-c3666.md | 2 +- .../compiler-errors-2/compiler-error-c3668.md | 2 +- .../compiler-errors-2/compiler-error-c3669.md | 2 +- .../compiler-errors-2/compiler-error-c3670.md | 2 +- .../compiler-errors-2/compiler-error-c3671.md | 2 +- .../compiler-errors-2/compiler-error-c3672.md | 2 +- .../compiler-errors-2/compiler-error-c3673.md | 4 ++-- .../compiler-errors-2/compiler-error-c3675.md | 2 +- .../compiler-errors-2/compiler-error-c3697.md | 2 +- .../compiler-errors-2/compiler-error-c3698.md | 2 +- .../compiler-errors-2/compiler-error-c3699.md | 6 +++--- .../compiler-errors-2/compiler-error-c3701.md | 2 +- .../compiler-errors-2/compiler-error-c3702.md | 2 +- .../compiler-errors-2/compiler-error-c3703.md | 2 +- .../compiler-errors-2/compiler-error-c3704.md | 4 ++-- .../compiler-errors-2/compiler-error-c3705.md | 4 ++-- .../compiler-errors-2/compiler-error-c3706.md | 4 ++-- .../compiler-errors-2/compiler-error-c3707.md | 4 ++-- .../compiler-errors-2/compiler-error-c3708.md | 2 +- .../compiler-errors-2/compiler-error-c3709.md | 2 +- .../compiler-errors-2/compiler-error-c3710.md | 2 +- 23 files changed, 30 insertions(+), 30 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3662.md b/docs/error-messages/compiler-errors-2/compiler-error-c3662.md index 83d66983951..40f8436e65d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3662.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3662.md @@ -18,7 +18,7 @@ For more information, see [Explicit Overrides](../../extensions/explicit-overrid ## Example -The following sample generates C3662. +The following example generates C3662. ```cpp // C3662.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3665.md b/docs/error-messages/compiler-errors-2/compiler-error-c3665.md index bf01a1b641a..dc5de5b4e3b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3665.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3665.md @@ -18,7 +18,7 @@ For example, a new slot cannot be requested on a destructor or finalizer. For m ## Example -The following sample generates C3665: +The following example generates C3665: ```cpp // C3665.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3666.md b/docs/error-messages/compiler-errors-2/compiler-error-c3666.md index 11e8e88bde7..ac852269a1c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3666.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3666.md @@ -16,7 +16,7 @@ An override specifier was used on a constructor, and that is not allowed. For mo ## Example -The following sample generates C3666. +The following example generates C3666. ```cpp // C3666.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3668.md b/docs/error-messages/compiler-errors-2/compiler-error-c3668.md index a1a25fe02c7..e8051beffd1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3668.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3668.md @@ -18,7 +18,7 @@ For more information, see [Explicit Overrides](../../extensions/explicit-overrid ## Example -The following sample generates C3668. +The following example generates C3668. ```cpp // C3668.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3669.md b/docs/error-messages/compiler-errors-2/compiler-error-c3669.md index 2c6ad6f0222..5176e42c17a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3669.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3669.md @@ -16,7 +16,7 @@ An override was specified incorrectly. For more information, see [Explicit Overr ## Example -The following sample generates C3669. +The following example generates C3669. ```cpp // C3669.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3670.md b/docs/error-messages/compiler-errors-2/compiler-error-c3670.md index 886c65a0eef..e12017681b4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3670.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3670.md @@ -16,7 +16,7 @@ An override can only take place on a function whose access level makes it availa ## Example -The following sample generates C3670: +The following example generates C3670: ```cpp // C3670.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3671.md b/docs/error-messages/compiler-errors-2/compiler-error-c3671.md index 3be2133e593..6c7c505fbd6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3671.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3671.md @@ -16,7 +16,7 @@ When using explicit override syntax, the compiler generates an error if a functi ## Example -The following sample generates C3671. +The following example generates C3671. ```cpp // C3671.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3672.md b/docs/error-messages/compiler-errors-2/compiler-error-c3672.md index 7317008d9c4..6a013789552 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3672.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3672.md @@ -15,7 +15,7 @@ A destructor was called incorrectly. For more information, see [Destructors](.. ## Example -The following sample generates C3672. +The following example generates C3672. ```cpp // C3672.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3673.md b/docs/error-messages/compiler-errors-2/compiler-error-c3673.md index a60df380165..0e8cb7ca84b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3673.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3673.md @@ -16,7 +16,7 @@ A user-defined constructor is needed to copy objects of CLR ref types. For more ## Examples -The following sample generates C3673. +The following example generates C3673. ```cpp // C3673.cpp @@ -34,7 +34,7 @@ int main() { } ``` -The following sample generates C3673. +The following example generates C3673. ```cpp // C3673_b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3675.md b/docs/error-messages/compiler-errors-2/compiler-error-c3675.md index a130f469ea4..7a7494c1874 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3675.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3675.md @@ -18,7 +18,7 @@ See [property](../../extensions/property-cpp-component-extensions.md) for more i ## Example -The following sample generates C3675. +The following example generates C3675. ```cpp // C3675.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3697.md b/docs/error-messages/compiler-errors-2/compiler-error-c3697.md index 64a527be4f4..a0194ad58f3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3697.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3697.md @@ -16,7 +16,7 @@ The tracking handle (^) was applied to a qualifier for which it was not designed ## Example -The following sample generates C3697: +The following example generates C3697: ```cpp // C3697.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3698.md b/docs/error-messages/compiler-errors-2/compiler-error-c3698.md index 501ade0b1a0..76f75592af1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3698.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3698.md @@ -16,7 +16,7 @@ A managed object was declared incorrectly. ## Example -The following sample generates C3698: +The following example generates C3698: ```cpp // C3698.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3699.md b/docs/error-messages/compiler-errors-2/compiler-error-c3699.md index 55f0f9676bc..a43824ab864 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3699.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3699.md @@ -16,7 +16,7 @@ An attempt was made to use indirection that is not allowed on `type`. ## Examples -The following sample generates C3699. +The following example generates C3699. ```cpp // C3699.cpp @@ -29,7 +29,7 @@ int main() { } ``` -A trivial property cannot have reference type. See [property](../../extensions/property-cpp-component-extensions.md) for more information. The following sample generates C3699. +A trivial property cannot have reference type. See [property](../../extensions/property-cpp-component-extensions.md) for more information. The following example generates C3699. ```cpp // C3699_b.cpp @@ -40,7 +40,7 @@ ref struct C { }; ``` -The equivalent of a "pointer to a pointer" syntax is a handle to a tracking reference. The following sample generates C3699. +The equivalent of a "pointer to a pointer" syntax is a handle to a tracking reference. The following example generates C3699. ```cpp // C3699_c.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3701.md b/docs/error-messages/compiler-errors-2/compiler-error-c3701.md index 227ec1555da..1ede560f4ae 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3701.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3701.md @@ -16,7 +16,7 @@ You attempted to use [event_source](../../windows/attributes/event-source.md) on ## Example -The following sample generates C3701: +The following example generates C3701: ```cpp // C3701.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3702.md b/docs/error-messages/compiler-errors-2/compiler-error-c3702.md index 491ea07a1a2..a8db95f5392 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3702.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3702.md @@ -16,7 +16,7 @@ You attempted to use COM events without including the necessary ATL header files ## Example -The following sample generates C3702: +The following example generates C3702: ```cpp // C3702.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3703.md b/docs/error-messages/compiler-errors-2/compiler-error-c3703.md index 58d60c6968b..a5c1c0a3ab6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3703.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3703.md @@ -16,7 +16,7 @@ An [event](../../cpp/event-handling.md) has a different storage class than the e ## Example -The following sample generates C3703: +The following example generates C3703: ```cpp // C3703.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3704.md b/docs/error-messages/compiler-errors-2/compiler-error-c3704.md index 21f4db6209f..52dd9cf298b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3704.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3704.md @@ -12,11 +12,11 @@ ms.assetid: ee40ea35-a214-4dec-9489-d7f155dd0ac2 ## Remarks -You attempted to use [__event](../../cpp/event.md) on a vararg method. To fix this error, replace the `fireEvent(int i, ...)` call with the `fireEvent(int i)` call as shown in the following code sample. +You attempted to use [__event](../../cpp/event.md) on a vararg method. To fix this error, replace the `fireEvent(int i, ...)` call with the `fireEvent(int i)` call as shown in the following code example. ## Example -The following sample generates C3704: +The following example generates C3704: ```cpp // C3704.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3705.md b/docs/error-messages/compiler-errors-2/compiler-error-c3705.md index 2ca9fb5dc4f..f441e25f2cb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3705.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3705.md @@ -12,11 +12,11 @@ ms.assetid: 8361017d-5782-4214-a9d7-e9825fd29bc8 ## Remarks -You must define an event interface to use COM events. Note that the `#include` lines of the ATL header files shown in the sample below are required for using COM events. To fix this error, uncomment the definition of the `IEvents` interface in the sample code. +You must define an event interface to use COM events. Note that the `#include` lines of the ATL header files shown in the example below are required for using COM events. To fix this error, uncomment the definition of the `IEvents` interface in the example code. ## Example -The following sample generates C3705: +The following example generates C3705: ```cpp // C3705.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3706.md b/docs/error-messages/compiler-errors-2/compiler-error-c3706.md index f79d2d62312..a24293016d0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3706.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3706.md @@ -14,13 +14,13 @@ ms.assetid: d20a33eb-d625-46c5-ac87-32075a590d07 The event interface that you use to fire COM events must be a COM interface. In this situation, the interface should either be defined using a Visual C++ attribute, or imported using [#import](../../preprocessor/hash-import-directive-cpp.md) from a type library with #import's embedded_idl attribute. -Note that the `#include` lines of the ATL header files shown in the sample below are required for using COM events. To fix this error, make `IEvents` (the eventing interface) a COM interface by applying one of the following attributes to the interface definition: [object](../../windows/attributes/object-cpp.md), [dual](../../windows/attributes/dual.md), or [dispinterface](../../windows/attributes/dispinterface.md). +Note that the `#include` lines of the ATL header files shown in the example below are required for using COM events. To fix this error, make `IEvents` (the eventing interface) a COM interface by applying one of the following attributes to the interface definition: [object](../../windows/attributes/object-cpp.md), [dual](../../windows/attributes/dual.md), or [dispinterface](../../windows/attributes/dispinterface.md). If an interface is from a header file generated by MIDL, the compiler will not recognize it as a COM interface. ## Example -The following sample generates C3706: +The following example generates C3706: ```cpp // C3706.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3707.md b/docs/error-messages/compiler-errors-2/compiler-error-c3707.md index 0f851678ed2..4e67ae6cc72 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3707.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3707.md @@ -12,11 +12,11 @@ ms.assetid: ac63a5dd-7a4b-48d2-9f2a-be9cb090134c ## Remarks -If you use a `dispinterface` method, you must assign it a `dispid`. To fix this error, assign a `dispid` to the `dispinterface` method, for example, by uncommenting the `id` attribute on the method in the sample below. For more information, see the attributes [dispinterface](../../windows/attributes/dispinterface.md) and [id](../../windows/attributes/id.md). +If you use a `dispinterface` method, you must assign it a `dispid`. To fix this error, assign a `dispid` to the `dispinterface` method, for example, by uncommenting the `id` attribute on the method in the example below. For more information, see the attributes [dispinterface](../../windows/attributes/dispinterface.md) and [id](../../windows/attributes/id.md). ## Example -The following sample generates C3707: +The following example generates C3707: ```cpp // C3707.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3708.md b/docs/error-messages/compiler-errors-2/compiler-error-c3708.md index 1b282e4ce1b..473c4b4259f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3708.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3708.md @@ -16,7 +16,7 @@ To declare an interface as an event, the event declaration must be in an event s ## Example -The following sample generates C3708: +The following example generates C3708: ```cpp // C3708.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3709.md b/docs/error-messages/compiler-errors-2/compiler-error-c3709.md index 4f05c8baa2c..affa34aa6a5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3709.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3709.md @@ -16,7 +16,7 @@ When you specify an event source with [__hook](../../cpp/hook.md) or [__unhook]( ## Example -The following sample generates C3709: +The following example generates C3709: ```cpp // C3709.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3710.md b/docs/error-messages/compiler-errors-2/compiler-error-c3710.md index 6c2ed21be0a..d0833b4b9c0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3710.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3710.md @@ -16,7 +16,7 @@ When you specify an event handler with [__hook](../../cpp/hook.md) or [__unhook] ## Example -The following sample generates C3710 +The following example generates C3710 ```cpp // C3710.cpp From e2172fdcafbf1c50282c78bf20af50d4b7bdc657 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 21 Aug 2025 22:43:30 +0800 Subject: [PATCH 1518/2255] Update metadata for error references in range [C3661, C3710] --- .../error-messages/compiler-errors-2/compiler-error-c3661.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3662.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3665.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3666.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3668.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3669.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3670.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3671.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3673.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3675.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3697.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3698.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3699.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3701.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3702.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3703.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3704.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3705.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3706.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3707.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3708.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3709.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3710.md | 5 ++--- 23 files changed, 46 insertions(+), 69 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3661.md b/docs/error-messages/compiler-errors-2/compiler-error-c3661.md index a17a5373a45..7429b9de5ac 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3661.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3661.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3661" title: "Compiler Error C3661" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3661" +ms.date: 11/04/2016 f1_keywords: ["C3661"] helpviewer_keywords: ["C3661"] -ms.assetid: 50793fd1-1829-4b29-ad0d-094ef2068b43 --- # Compiler Error C3661 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3662.md b/docs/error-messages/compiler-errors-2/compiler-error-c3662.md index 40f8436e65d..e5edfda336a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3662.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3662.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3662" title: "Compiler Error C3662" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3662" +ms.date: 11/04/2016 f1_keywords: ["C3662"] helpviewer_keywords: ["C3662"] -ms.assetid: 61bd3e41-a86b-42c0-be89-d992d3906ff1 --- # Compiler Error C3662 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3665.md b/docs/error-messages/compiler-errors-2/compiler-error-c3665.md index dc5de5b4e3b..969f276e9c6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3665.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3665.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3665" title: "Compiler Error C3665" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3665" +ms.date: 11/04/2016 f1_keywords: ["C3665"] helpviewer_keywords: ["C3665"] -ms.assetid: 893bb47e-8de1-43aa-af7d-fa47ad149ee9 --- # Compiler Error C3665 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3666.md b/docs/error-messages/compiler-errors-2/compiler-error-c3666.md index ac852269a1c..b516ef72145 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3666.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3666.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3666" title: "Compiler Error C3666" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3666" +ms.date: 11/04/2016 f1_keywords: ["C3666"] helpviewer_keywords: ["C3666"] -ms.assetid: 459e51dd-cefb-4346-99b3-644f2d8b65b2 --- # Compiler Error C3666 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3668.md b/docs/error-messages/compiler-errors-2/compiler-error-c3668.md index e8051beffd1..e8640f0b6b5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3668.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3668.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3668" title: "Compiler Error C3668" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3668" +ms.date: 11/04/2016 f1_keywords: ["C3668"] helpviewer_keywords: ["C3668"] -ms.assetid: 53a96698-bde4-4447-95b5-b5108291f60c --- # Compiler Error C3668 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3669.md b/docs/error-messages/compiler-errors-2/compiler-error-c3669.md index 5176e42c17a..c4e896e88fe 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3669.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3669.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3669" title: "Compiler Error C3669" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3669" +ms.date: 11/04/2016 f1_keywords: ["C3669"] helpviewer_keywords: ["C3669"] -ms.assetid: be9c7ae4-e96f-47ab-922a-39a3537d5ca6 --- # Compiler Error C3669 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3670.md b/docs/error-messages/compiler-errors-2/compiler-error-c3670.md index e12017681b4..7db7a7f9bc4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3670.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3670.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3670" title: "Compiler Error C3670" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3670" +ms.date: 11/04/2016 f1_keywords: ["C3670"] helpviewer_keywords: ["C3670"] -ms.assetid: d0fa9c6e-8f90-48c7-9066-31b4fa5942eb --- # Compiler Error C3670 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3671.md b/docs/error-messages/compiler-errors-2/compiler-error-c3671.md index 6c7c505fbd6..81d0cefecf9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3671.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3671.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3671" title: "Compiler Error C3671" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3671" +ms.date: 11/04/2016 f1_keywords: ["C3671"] helpviewer_keywords: ["C3671"] -ms.assetid: d684e4ae-87e2-4424-80bb-6f346652c831 --- # Compiler Error C3671 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3673.md b/docs/error-messages/compiler-errors-2/compiler-error-c3673.md index 0e8cb7ca84b..5781848d703 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3673.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3673.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3673" title: "Compiler Error C3673" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3673" +ms.date: 11/04/2016 f1_keywords: ["C3673"] helpviewer_keywords: ["C3673"] -ms.assetid: bb6d2079-05af-4e2c-be0e-75c892e6c590 --- # Compiler Error C3673 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3675.md b/docs/error-messages/compiler-errors-2/compiler-error-c3675.md index 7a7494c1874..437cd7bb1ae 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3675.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3675.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3675" title: "Compiler Error C3675" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3675" +ms.date: 11/04/2016 f1_keywords: ["C3675"] helpviewer_keywords: ["C3675"] -ms.assetid: 87461613-6633-430b-b95d-c7cb1bb63776 --- # Compiler Error C3675 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3697.md b/docs/error-messages/compiler-errors-2/compiler-error-c3697.md index a0194ad58f3..dbb5120276b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3697.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3697.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3697" title: "Compiler Error C3697" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3697" +ms.date: 11/04/2016 f1_keywords: ["C3697"] helpviewer_keywords: ["C3697"] -ms.assetid: 2d3f63c4-b7f8-421d-a7a5-2bf17fd054f9 --- # Compiler Error C3697 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3698.md b/docs/error-messages/compiler-errors-2/compiler-error-c3698.md index 76f75592af1..76dac5ebdc7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3698.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3698.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3698" title: "Compiler Error C3698" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3698" +ms.date: 11/04/2016 f1_keywords: ["C3698"] helpviewer_keywords: ["C3698"] -ms.assetid: 3c02fb08-7ba4-4637-a06f-19926cb2b5f1 --- # Compiler Error C3698 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3699.md b/docs/error-messages/compiler-errors-2/compiler-error-c3699.md index a43824ab864..962b767cd4f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3699.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3699.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3699" title: "Compiler Error C3699" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3699" +ms.date: 11/04/2016 f1_keywords: ["C3699"] helpviewer_keywords: ["C3699"] -ms.assetid: 47c29afc-ab8b-4238-adfe-788dd6e00b3b --- # Compiler Error C3699 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3701.md b/docs/error-messages/compiler-errors-2/compiler-error-c3701.md index 1ede560f4ae..4194641c39f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3701.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3701.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3701" title: "Compiler Error C3701" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3701" +ms.date: 11/04/2016 f1_keywords: ["C3701"] helpviewer_keywords: ["C3701"] -ms.assetid: a7faaa87-d2f5-4d6a-9a2f-5cab2d24a648 --- # Compiler Error C3701 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3702.md b/docs/error-messages/compiler-errors-2/compiler-error-c3702.md index a8db95f5392..8c101ecfb71 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3702.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3702.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3702" title: "Compiler Error C3702" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3702" +ms.date: 11/04/2016 f1_keywords: ["C3702"] helpviewer_keywords: ["C3702"] -ms.assetid: 14fcc20e-4404-45d7-be54-e4f09332fa5a --- # Compiler Error C3702 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3703.md b/docs/error-messages/compiler-errors-2/compiler-error-c3703.md index a5c1c0a3ab6..3061a7f300e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3703.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3703.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3703" title: "Compiler Error C3703" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3703" +ms.date: 11/04/2016 f1_keywords: ["C3703"] helpviewer_keywords: ["C3703"] -ms.assetid: 7e3677d9-f2be-4c26-998f-423564e9023c --- # Compiler Error C3703 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3704.md b/docs/error-messages/compiler-errors-2/compiler-error-c3704.md index 52dd9cf298b..7b218f85226 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3704.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3704.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3704" title: "Compiler Error C3704" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3704" +ms.date: 11/04/2016 f1_keywords: ["C3704"] helpviewer_keywords: ["C3704"] -ms.assetid: ee40ea35-a214-4dec-9489-d7f155dd0ac2 --- # Compiler Error C3704 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3705.md b/docs/error-messages/compiler-errors-2/compiler-error-c3705.md index f441e25f2cb..7408c255823 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3705.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3705.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3705" title: "Compiler Error C3705" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3705" +ms.date: 11/04/2016 f1_keywords: ["C3705"] helpviewer_keywords: ["C3705"] -ms.assetid: 8361017d-5782-4214-a9d7-e9825fd29bc8 --- # Compiler Error C3705 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3706.md b/docs/error-messages/compiler-errors-2/compiler-error-c3706.md index a24293016d0..3a64b432952 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3706.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3706.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3706" title: "Compiler Error C3706" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3706" +ms.date: 11/04/2016 f1_keywords: ["C3706"] helpviewer_keywords: ["C3706"] -ms.assetid: d20a33eb-d625-46c5-ac87-32075a590d07 --- # Compiler Error C3706 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3707.md b/docs/error-messages/compiler-errors-2/compiler-error-c3707.md index 4e67ae6cc72..1d3d66e45fa 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3707.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3707.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3707" title: "Compiler Error C3707" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3707" +ms.date: 11/04/2016 f1_keywords: ["C3707"] helpviewer_keywords: ["C3707"] -ms.assetid: ac63a5dd-7a4b-48d2-9f2a-be9cb090134c --- # Compiler Error C3707 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3708.md b/docs/error-messages/compiler-errors-2/compiler-error-c3708.md index 473c4b4259f..a611b94ccf0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3708.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3708.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3708" title: "Compiler Error C3708" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3708" +ms.date: 11/04/2016 f1_keywords: ["C3708"] helpviewer_keywords: ["C3708"] -ms.assetid: 45e71564-9c7f-437f-98d8-a735ce162ed0 --- # Compiler Error C3708 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3709.md b/docs/error-messages/compiler-errors-2/compiler-error-c3709.md index affa34aa6a5..9c0750d1cc0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3709.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3709.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3709" title: "Compiler Error C3709" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3709" +ms.date: 11/04/2016 f1_keywords: ["C3709"] helpviewer_keywords: ["C3709"] -ms.assetid: d5576b04-2f93-420a-8f3e-8b8e987e8dab --- # Compiler Error C3709 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3710.md b/docs/error-messages/compiler-errors-2/compiler-error-c3710.md index d0833b4b9c0..7616ac9a947 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3710.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3710.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3710" title: "Compiler Error C3710" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3710" +ms.date: 11/04/2016 f1_keywords: ["C3710"] helpviewer_keywords: ["C3710"] -ms.assetid: 18bec009-5b6f-464a-a21e-5d58a6936504 --- # Compiler Error C3710 From daabc9de20d8c02cfe3d6a562547c91364964a83 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 22 Aug 2025 16:44:21 +0800 Subject: [PATCH 1519/2255] Update C2182 error message --- docs/error-messages/compiler-errors-1/compiler-error-c2182.md | 2 +- .../compiler-errors-1/compiler-errors-c2100-through-c2199.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2182.md b/docs/error-messages/compiler-errors-1/compiler-error-c2182.md index 86a4d0259c6..de843fe6d1b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2182.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2182.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2182"] --- # Compiler Error C2182 -> 'identifier' : illegal use of type 'void' +> '*identifier*': this use of 'void' is not valid ## Remarks diff --git a/docs/error-messages/compiler-errors-1/compiler-errors-c2100-through-c2199.md b/docs/error-messages/compiler-errors-1/compiler-errors-c2100-through-c2199.md index ef2e8e4b3f9..0db01eecb18 100644 --- a/docs/error-messages/compiler-errors-1/compiler-errors-c2100-through-c2199.md +++ b/docs/error-messages/compiler-errors-1/compiler-errors-c2100-through-c2199.md @@ -97,7 +97,7 @@ The articles in this section of the documentation explain a subset of the error |[Compiler error C2179](compiler-error-c2179.md)|'*type*': an attribute argument cannot use type parameters| |[Compiler error C2180](compiler-error-c2180.md)|controlling expression has type '*type*'| |[Compiler error C2181](compiler-error-c2181.md)|illegal else without matching if| -|[Compiler error C2182](compiler-error-c2182.md)|'*identifier*': illegal use of type 'void'| +|[Compiler error C2182](compiler-error-c2182.md)|'*identifier*': this use of 'void' is not valid| |[Compiler error C2183](compiler-error-c2183.md)|syntax error: translation unit is empty| |[Compiler error C2184](compiler-error-c2184.md)|'*type*': illegal type for __except expression| |[Compiler error C2185](compiler-error-c2185.md)|'*identifier*': illegal based allocation| From 74481fdd780d0172a84804913eb9adeca3570f5a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 22 Aug 2025 16:51:32 +0800 Subject: [PATCH 1520/2255] Augment remarks in C2182 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2182.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2182.md b/docs/error-messages/compiler-errors-1/compiler-error-c2182.md index de843fe6d1b..6f8da74ca2c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2182.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2182.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["C2182"] ## Remarks -A variable is declared type **`void`**. +You can't create a variable or array of type **`void`**. Only pointers to **`void`** are allowed. ## Example From b3f316e30a70ad76d964718dffeab8ccdc1883ea Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 22 Aug 2025 16:58:49 +0800 Subject: [PATCH 1521/2255] Fix example in C2182 error reference --- .../compiler-errors-1/compiler-error-c2182.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2182.md b/docs/error-messages/compiler-errors-1/compiler-error-c2182.md index 6f8da74ca2c..639aa303ec8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2182.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2182.md @@ -20,9 +20,9 @@ The following example generates C2182: ```cpp // C2182.cpp // compile with: /c -int main() { - int i = 10; - void &ir = i; // C2182 cannot have a reference to type void - int &ir = i; // OK -} + +void var; // C2182 +void arr[5]; // C2182 + +void* ptr; // OK ``` From c55580a284bb35fecc0e18297c439291d9ed64a5 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 22 Aug 2025 17:00:07 +0800 Subject: [PATCH 1522/2255] Update metadata in 2 error reference topics --- docs/error-messages/compiler-errors-1/compiler-error-c2182.md | 2 +- .../compiler-errors-1/compiler-errors-c2100-through-c2199.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2182.md b/docs/error-messages/compiler-errors-1/compiler-error-c2182.md index 639aa303ec8..cbe5f56228d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2182.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2182.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C2182" description: "Learn more about: Compiler Error C2182" -ms.date: 11/04/2016 +ms.date: 08/22/2025 f1_keywords: ["C2182"] helpviewer_keywords: ["C2182"] --- diff --git a/docs/error-messages/compiler-errors-1/compiler-errors-c2100-through-c2199.md b/docs/error-messages/compiler-errors-1/compiler-errors-c2100-through-c2199.md index 0db01eecb18..8d5db1ea8a4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-errors-c2100-through-c2199.md +++ b/docs/error-messages/compiler-errors-1/compiler-errors-c2100-through-c2199.md @@ -1,7 +1,7 @@ --- title: "Compiler errors C2100 through C2199" description: "Learn more about: Compiler errors C2100 through C2199" -ms.date: "04/21/2019" +ms.date: 04/21/2019 f1_keywords: ["C2119", "C2123", "C2125", "C2126", "C2127", "C2136", "C2176", "C2187", "C2189"] helpviewer_keywords: ["C2119", "C2123", "C2125", "C2126", "C2127", "C2136", "C2176", "C2187", "C2189"] --- From d3c98f84b4325698e0110d7a81650a4bbfff0ac5 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 22 Aug 2025 17:50:04 +0800 Subject: [PATCH 1523/2255] Add blockquotes for error messages in range [C3711, C3740] --- docs/error-messages/compiler-errors-2/compiler-error-c3711.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3712.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3713.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3714.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3715.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3717.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3719.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3721.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3722.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3724.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3727.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3728.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3731.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3732.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3733.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3734.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3736.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3737.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3738.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3739.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3740.md | 2 +- 21 files changed, 21 insertions(+), 21 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3711.md b/docs/error-messages/compiler-errors-2/compiler-error-c3711.md index 16b395e4bfd..e2dfe7eb8ca 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3711.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3711.md @@ -8,7 +8,7 @@ ms.assetid: 26d581cc-2153-4ee0-b814-a371184be3e1 --- # Compiler Error C3711 -'method': an non-managed event source method must return void or an integral type +> 'method': an non-managed event source method must return void or an integral type You defined a method in the event source that did not return void or an integral type. To fix this error, make the event and event handler have a return type of **`void`** or an integral type such as **`int`** or **`long`**. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3712.md b/docs/error-messages/compiler-errors-2/compiler-error-c3712.md index 99094e6ddab..ea4ab48859b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3712.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3712.md @@ -8,7 +8,7 @@ ms.assetid: 65b1fcaf-be89-4c55-9e40-25ec03457253 --- # Compiler Error C3712 -'method': an event handler method must return the same type as the source 'method' +> 'method': an event handler method must return the same type as the source 'method' You defined an event handler method that did not return the same type as the source event method. To fix this error, give the event handler method the same return type as that of the source event method. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3713.md b/docs/error-messages/compiler-errors-2/compiler-error-c3713.md index 9ab74b96bbc..4aad3559f08 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3713.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3713.md @@ -8,7 +8,7 @@ ms.assetid: 75c6b9b6-955b-49bd-9bc8-ced88b496a1f --- # Compiler Error C3713 -'method': an event handler method must have the same function parameters as the source 'method' +> 'method': an event handler method must have the same function parameters as the source 'method' You defined an event handler method that did not use the same parameters as the source event method. To fix this error, give the event handler method the same parameters as those of the source event method. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3714.md b/docs/error-messages/compiler-errors-2/compiler-error-c3714.md index 2f230ab4060..66e0c07e29b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3714.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3714.md @@ -8,7 +8,7 @@ ms.assetid: 17718f75-5a37-4e42-912b-487e91008a95 --- # Compiler Error C3714 -'method': an event handler method must have the same calling convention as the source 'method' +> 'method': an event handler method must have the same calling convention as the source 'method' You defined an event handler method that did not use the same calling convention as the source event method. To fix this error, give the event handler method the same calling conventions as those of the source event method. For example, in the code below, make the calling conventions of `handler1` and `event1` match ([__cdecl](../../cpp/cdecl.md) or [__stdcall](../../cpp/stdcall.md) or others). Removing calling convention keywords from both declarations will also solve the problem, and cause `event1` and `handler1` to default to the [thiscall](../../cpp/thiscall.md) calling convention. See [Calling Conventions](../../cpp/calling-conventions.md) for more information. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3715.md b/docs/error-messages/compiler-errors-2/compiler-error-c3715.md index 3357231814a..3c1aa9f1ce1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3715.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3715.md @@ -8,6 +8,6 @@ ms.assetid: ee5dce88-ddc4-4bdb-9464-47467ce1674f --- # Compiler Error C3715 -'pointer': must be a pointer to 'class' +> 'pointer': must be a pointer to 'class' You specified a pointer in [`__hook`](../../cpp/hook.md) or [`__unhook`](../../cpp/unhook.md) that did not point to a valid class. To fix this error, ensure that your **`__hook`** and **`__unhook`** calls specify pointers to valid classes. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3717.md b/docs/error-messages/compiler-errors-2/compiler-error-c3717.md index 6aead02f76c..91404445652 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3717.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3717.md @@ -8,7 +8,7 @@ ms.assetid: ae4fceb1-2583-4577-b2f1-40971a017055 --- # Compiler Error C3717 -'method': a method that fires events cannot be defined +> 'method': a method that fires events cannot be defined You declared an event method that includes an implementation. An [__event](../../cpp/event.md) method declaration cannot have a definition. To fix this error, ensure that no event method declarations have definitions. For example, in the code below, remove the function body from the `event1` declaration as indicated by the comments. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3719.md b/docs/error-messages/compiler-errors-2/compiler-error-c3719.md index 777a99eabac..077edeaea1d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3719.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3719.md @@ -8,7 +8,7 @@ ms.assetid: d0d59d4e-babb-4480-9ef7-70cf1a28165c --- # Compiler Error C3719 -'interface': an interface based event source can only be used for COM events +> 'interface': an interface based event source can only be used for COM events You declared an interface in a non-COM context. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3721.md b/docs/error-messages/compiler-errors-2/compiler-error-c3721.md index fbfee81eae7..dfcc8b8fc7f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3721.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3721.md @@ -8,7 +8,7 @@ ms.assetid: c696ca38-3e00-4875-abbe-7bce0f46930e --- # Compiler Error C3721 -'signature': incompatible signature for event +> 'signature': incompatible signature for event An event was declared incorrectly. For more information, see [__event](../../cpp/event.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3722.md b/docs/error-messages/compiler-errors-2/compiler-error-c3722.md index c526c8d8924..42aa4369f33 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3722.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3722.md @@ -8,7 +8,7 @@ ms.assetid: 3cb28363-5eff-4548-bd0d-d5c615846353 --- # Compiler Error C3722 -a generic event is not allowed +> a generic event is not allowed The compiler only allows generic classes, structs, and functions. For more information, see [Generics](../../extensions/generics-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3724.md b/docs/error-messages/compiler-errors-2/compiler-error-c3724.md index 227b770bdc2..39215765ebf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3724.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3724.md @@ -8,7 +8,7 @@ ms.assetid: cab8aba7-14fc-406f-8cc6-32744c8f31c1 --- # Compiler Error C3724 -must #include \ to use multi-threading with events +> must #include \ to use multi-threading with events The windows.h file is required if you use multi-threading with events. To fix this error, add `#include ` to the top of the file in which event sources and event receivers are defined. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3727.md b/docs/error-messages/compiler-errors-2/compiler-error-c3727.md index 9bd6172470b..70882fd0e07 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3727.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3727.md @@ -8,6 +8,6 @@ ms.assetid: 17b9fe7b-ee9e-483f-9c27-1f709255a9e0 --- # Compiler Error C3727 -'event': a managed event must be a member function or a data member that is a pointer to a delegate +> 'event': a managed event must be a member function or a data member that is a pointer to a delegate .NET events must be a pointer to a delegate type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3728.md b/docs/error-messages/compiler-errors-2/compiler-error-c3728.md index a99650d9999..f330785119b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3728.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3728.md @@ -8,7 +8,7 @@ ms.assetid: 6b510cb1-887f-4fcd-9a1f-3bb720417ed1 --- # Compiler Error C3728 -'event': event does not have a raise method +> 'event': event does not have a raise method Metadata created with a language, such as C#, that does not allow an event to be raised from outside the class in which it was defined, was included with the [#using](../../preprocessor/hash-using-directive-cpp.md) directive, and a Visual C++ program using CLR programming attempted to raise the event. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3731.md b/docs/error-messages/compiler-errors-2/compiler-error-c3731.md index 3336cfa957f..2c14202787a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3731.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3731.md @@ -8,7 +8,7 @@ ms.assetid: 45f89fcd-464c-4bc8-8a42-edcb5416d26c --- # Compiler Error C3731 -incompatible event 'function1' and handler 'function2'; event source and event handler must be the same type +> incompatible event 'function1' and handler 'function2'; event source and event handler must be the same type The event source and event receiver must have the same type (for example `native` vs. `com` types). To fix this error, make the types of the event source and the event handler match. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3732.md b/docs/error-messages/compiler-errors-2/compiler-error-c3732.md index 5b02bbd1e22..7cfed9c144a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3732.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3732.md @@ -8,7 +8,7 @@ ms.assetid: 2d55a7e1-9c39-4379-a093-2f7beb27e2ca --- # Compiler Error C3732 -'interface': a custom interface that fires COM events cannot inherit from IDispatch +> 'interface': a custom interface that fires COM events cannot inherit from IDispatch An interface that supports COM events cannot inherit from `IDispatch`. For more information, see [Event Handling in COM](../../cpp/event-handling-in-com.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3733.md b/docs/error-messages/compiler-errors-2/compiler-error-c3733.md index b1d20b40c50..8e67bd40ec6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3733.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3733.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C3733"] --- # Compiler Error C3733 -'event': improper syntax for specifying a COM event; did you forget '__interface'? +> 'event': improper syntax for specifying a COM event; did you forget '__interface'? The wrong syntax was used for a COM event. To fix this error, change the event type or correct the syntax to comply with the COM event rules. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3734.md b/docs/error-messages/compiler-errors-2/compiler-error-c3734.md index e324edba416..773978225cc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3734.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3734.md @@ -8,7 +8,7 @@ ms.assetid: 4e2afdcc-7da9-45a1-9c96-85f25e2986e8 --- # Compiler Error C3734 -'class': a managed or WinRT class cannot be a coclass +> 'class': a managed or WinRT class cannot be a coclass The [coclass](../../windows/attributes/coclass.md) attribute cannot be used with managed or WinRT classes. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3736.md b/docs/error-messages/compiler-errors-2/compiler-error-c3736.md index fcd2b8d333d..d86cd87fdf6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3736.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3736.md @@ -8,7 +8,7 @@ ms.assetid: 579b773c-41e7-40ea-8382-2e3ce2667f4c --- # Compiler Error C3736 -'event': must be a method or, in the case of managed events, optionally a data member +> 'event': must be a method or, in the case of managed events, optionally a data member Native and COM events must be methods. .NET events can also be data members. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3737.md b/docs/error-messages/compiler-errors-2/compiler-error-c3737.md index b6b4efa9ffc..00b62674d40 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3737.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3737.md @@ -8,7 +8,7 @@ ms.assetid: ca2aeb23-2491-4ccb-8838-884abf7065c8 --- # Compiler Error C3737 -'delegate': a delegate may not have an explicit calling convention +> 'delegate': a delegate may not have an explicit calling convention You cannot specify the [calling convention](../../cpp/calling-conventions.md) for a **`delegate`**. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3738.md b/docs/error-messages/compiler-errors-2/compiler-error-c3738.md index 319585c5184..1cf62939cde 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3738.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3738.md @@ -8,7 +8,7 @@ ms.assetid: dd3ee011-e204-4264-bf3a-da32c4ef7038 --- # Compiler Error C3738 -'calling_convention': the calling convention of the explicit instantiation must match that of the template being instantiated +> 'calling_convention': the calling convention of the explicit instantiation must match that of the template being instantiated It is recommended that you do not specify a calling convention on an explicit instantiation. If you must, though, the calling conventions must match. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3739.md b/docs/error-messages/compiler-errors-2/compiler-error-c3739.md index 88b29cba22b..d7787987c0a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3739.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3739.md @@ -8,7 +8,7 @@ ms.assetid: acffe894-08b8-4bf2-9249-9501e6e2bad3 --- # Compiler Error C3739 -'class': syntax is only supported when the 'layout_dependent' parameter of event_receiver is true +> 'class': syntax is only supported when the 'layout_dependent' parameter of event_receiver is true You tried to hook an entire interface of events but `layout_dependent` on [event_receiver](../../windows/attributes/event-receiver.md) attribute is not true; you must hook a single event at a time. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3740.md b/docs/error-messages/compiler-errors-2/compiler-error-c3740.md index a660236cdf5..c3342147789 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3740.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3740.md @@ -8,7 +8,7 @@ ms.assetid: edb17a90-2307-4df6-943d-580460d26d2b --- # Compiler Error C3740 -templates cannot source or receive events +> templates cannot source or receive events A templated class or struct cannot contain [events](../../cpp/event-handling.md). From e8f629f7a420047ada4551f2613ad7555d838ba4 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 22 Aug 2025 17:59:05 +0800 Subject: [PATCH 1524/2255] Add "Remarks" and "Example" headings for error references in range [C3711, C3740] --- docs/error-messages/compiler-errors-2/compiler-error-c3711.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3712.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3713.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3714.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3715.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3717.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3718.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3719.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3721.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3722.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3723.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3724.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3727.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3728.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3731.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3732.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3733.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3734.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3736.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3737.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3738.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3739.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3740.md | 4 ++++ 23 files changed, 78 insertions(+) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3711.md b/docs/error-messages/compiler-errors-2/compiler-error-c3711.md index e2dfe7eb8ca..359b4e6eb88 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3711.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3711.md @@ -10,8 +10,12 @@ ms.assetid: 26d581cc-2153-4ee0-b814-a371184be3e1 > 'method': an non-managed event source method must return void or an integral type +## Remarks + You defined a method in the event source that did not return void or an integral type. To fix this error, make the event and event handler have a return type of **`void`** or an integral type such as **`int`** or **`long`**. +## Example + The following sample generates C3711: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3712.md b/docs/error-messages/compiler-errors-2/compiler-error-c3712.md index ea4ab48859b..2f2db371ba5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3712.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3712.md @@ -10,8 +10,12 @@ ms.assetid: 65b1fcaf-be89-4c55-9e40-25ec03457253 > 'method': an event handler method must return the same type as the source 'method' +## Remarks + You defined an event handler method that did not return the same type as the source event method. To fix this error, give the event handler method the same return type as that of the source event method. +## Example + The following sample generates C3712: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3713.md b/docs/error-messages/compiler-errors-2/compiler-error-c3713.md index 4aad3559f08..6ccf27f91f3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3713.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3713.md @@ -10,8 +10,12 @@ ms.assetid: 75c6b9b6-955b-49bd-9bc8-ced88b496a1f > 'method': an event handler method must have the same function parameters as the source 'method' +## Remarks + You defined an event handler method that did not use the same parameters as the source event method. To fix this error, give the event handler method the same parameters as those of the source event method. +## Example + The following sample generates C3713: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3714.md b/docs/error-messages/compiler-errors-2/compiler-error-c3714.md index 66e0c07e29b..e470fc586bb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3714.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3714.md @@ -10,8 +10,12 @@ ms.assetid: 17718f75-5a37-4e42-912b-487e91008a95 > 'method': an event handler method must have the same calling convention as the source 'method' +## Remarks + You defined an event handler method that did not use the same calling convention as the source event method. To fix this error, give the event handler method the same calling conventions as those of the source event method. For example, in the code below, make the calling conventions of `handler1` and `event1` match ([__cdecl](../../cpp/cdecl.md) or [__stdcall](../../cpp/stdcall.md) or others). Removing calling convention keywords from both declarations will also solve the problem, and cause `event1` and `handler1` to default to the [thiscall](../../cpp/thiscall.md) calling convention. See [Calling Conventions](../../cpp/calling-conventions.md) for more information. +## Example + The following sample generates C3714: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3715.md b/docs/error-messages/compiler-errors-2/compiler-error-c3715.md index 3c1aa9f1ce1..aa4c7e234ff 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3715.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3715.md @@ -10,4 +10,6 @@ ms.assetid: ee5dce88-ddc4-4bdb-9464-47467ce1674f > 'pointer': must be a pointer to 'class' +## Remarks + You specified a pointer in [`__hook`](../../cpp/hook.md) or [`__unhook`](../../cpp/unhook.md) that did not point to a valid class. To fix this error, ensure that your **`__hook`** and **`__unhook`** calls specify pointers to valid classes. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3717.md b/docs/error-messages/compiler-errors-2/compiler-error-c3717.md index 91404445652..e96ce1810ee 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3717.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3717.md @@ -10,8 +10,12 @@ ms.assetid: ae4fceb1-2583-4577-b2f1-40971a017055 > 'method': a method that fires events cannot be defined +## Remarks + You declared an event method that includes an implementation. An [__event](../../cpp/event.md) method declaration cannot have a definition. To fix this error, ensure that no event method declarations have definitions. For example, in the code below, remove the function body from the `event1` declaration as indicated by the comments. +## Example + The following sample generates C3717: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3718.md b/docs/error-messages/compiler-errors-2/compiler-error-c3718.md index ad3cb130088..921e4c0a9c8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3718.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3718.md @@ -10,6 +10,8 @@ ms.assetid: 346b5205-c44d-49d3-b66a-96417d3d6986 > can only call '*event*' in the context of a member function of the receiving class +## Remarks + The event can only be called from the receiving class. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3719.md b/docs/error-messages/compiler-errors-2/compiler-error-c3719.md index 077edeaea1d..462b60abc47 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3719.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3719.md @@ -10,8 +10,12 @@ ms.assetid: d0d59d4e-babb-4480-9ef7-70cf1a28165c > 'interface': an interface based event source can only be used for COM events +## Remarks + You declared an interface in a non-COM context. +## Example + The following sample generates C3719: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3721.md b/docs/error-messages/compiler-errors-2/compiler-error-c3721.md index dfcc8b8fc7f..c4dcc5589ac 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3721.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3721.md @@ -10,6 +10,8 @@ ms.assetid: c696ca38-3e00-4875-abbe-7bce0f46930e > 'signature': incompatible signature for event +## Remarks + An event was declared incorrectly. For more information, see [__event](../../cpp/event.md). C3721 is only reachable using the obsolete compiler option **/clr:oldSyntax**. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3722.md b/docs/error-messages/compiler-errors-2/compiler-error-c3722.md index 42aa4369f33..f177fc2589d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3722.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3722.md @@ -10,8 +10,12 @@ ms.assetid: 3cb28363-5eff-4548-bd0d-d5c615846353 > a generic event is not allowed +## Remarks + The compiler only allows generic classes, structs, and functions. For more information, see [Generics](../../extensions/generics-cpp-component-extensions.md). +## Example + The following sample generates C3722: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3723.md b/docs/error-messages/compiler-errors-2/compiler-error-c3723.md index 1723435e049..490e2b9c050 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3723.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3723.md @@ -10,8 +10,12 @@ ms.assetid: ef0fb1ff-3f9a-4093-a6b6-894d1ab0c4b9 > 'function': could not resolve event +## Remarks + `function` could not resolve which event to call. +## Examples + The following sample generates C3723: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3724.md b/docs/error-messages/compiler-errors-2/compiler-error-c3724.md index 39215765ebf..53c127e2ff9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3724.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3724.md @@ -10,8 +10,12 @@ ms.assetid: cab8aba7-14fc-406f-8cc6-32744c8f31c1 > must #include \ to use multi-threading with events +## Remarks + The windows.h file is required if you use multi-threading with events. To fix this error, add `#include ` to the top of the file in which event sources and event receivers are defined. +## Example + ```cpp // C3724.cpp // uncomment the following line to resolve diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3727.md b/docs/error-messages/compiler-errors-2/compiler-error-c3727.md index 70882fd0e07..f784c7e475b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3727.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3727.md @@ -10,4 +10,6 @@ ms.assetid: 17b9fe7b-ee9e-483f-9c27-1f709255a9e0 > 'event': a managed event must be a member function or a data member that is a pointer to a delegate +## Remarks + .NET events must be a pointer to a delegate type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3728.md b/docs/error-messages/compiler-errors-2/compiler-error-c3728.md index f330785119b..495fb722ab7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3728.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3728.md @@ -10,6 +10,8 @@ ms.assetid: 6b510cb1-887f-4fcd-9a1f-3bb720417ed1 > 'event': event does not have a raise method +## Remarks + Metadata created with a language, such as C#, that does not allow an event to be raised from outside the class in which it was defined, was included with the [#using](../../preprocessor/hash-using-directive-cpp.md) directive, and a Visual C++ program using CLR programming attempted to raise the event. To raise an event in a program developed in a language such as C#, the class containing the event needs to also define a public method that raises the event. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3731.md b/docs/error-messages/compiler-errors-2/compiler-error-c3731.md index 2c14202787a..1f20594d041 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3731.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3731.md @@ -10,8 +10,12 @@ ms.assetid: 45f89fcd-464c-4bc8-8a42-edcb5416d26c > incompatible event 'function1' and handler 'function2'; event source and event handler must be the same type +## Remarks + The event source and event receiver must have the same type (for example `native` vs. `com` types). To fix this error, make the types of the event source and the event handler match. +## Example + The following sample generates C3731: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3732.md b/docs/error-messages/compiler-errors-2/compiler-error-c3732.md index 7cfed9c144a..e74127bf47e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3732.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3732.md @@ -10,8 +10,12 @@ ms.assetid: 2d55a7e1-9c39-4379-a093-2f7beb27e2ca > 'interface': a custom interface that fires COM events cannot inherit from IDispatch +## Remarks + An interface that supports COM events cannot inherit from `IDispatch`. For more information, see [Event Handling in COM](../../cpp/event-handling-in-com.md). +## Example + The following error generates C3732: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3733.md b/docs/error-messages/compiler-errors-2/compiler-error-c3733.md index 8e67bd40ec6..d699028f0e2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3733.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3733.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C3733"] > 'event': improper syntax for specifying a COM event; did you forget '__interface'? +## Remarks + The wrong syntax was used for a COM event. To fix this error, change the event type or correct the syntax to comply with the COM event rules. +## Example + The following sample generates C3733: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3734.md b/docs/error-messages/compiler-errors-2/compiler-error-c3734.md index 773978225cc..91b30c4bd39 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3734.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3734.md @@ -10,8 +10,12 @@ ms.assetid: 4e2afdcc-7da9-45a1-9c96-85f25e2986e8 > 'class': a managed or WinRT class cannot be a coclass +## Remarks + The [coclass](../../windows/attributes/coclass.md) attribute cannot be used with managed or WinRT classes. +## Example + The following sample generates C3734 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3736.md b/docs/error-messages/compiler-errors-2/compiler-error-c3736.md index d86cd87fdf6..cc901d515b6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3736.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3736.md @@ -10,8 +10,12 @@ ms.assetid: 579b773c-41e7-40ea-8382-2e3ce2667f4c > 'event': must be a method or, in the case of managed events, optionally a data member +## Remarks + Native and COM events must be methods. .NET events can also be data members. +## Example + The following sample generates C3736: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3737.md b/docs/error-messages/compiler-errors-2/compiler-error-c3737.md index 00b62674d40..1c0f052ab40 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3737.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3737.md @@ -10,6 +10,8 @@ ms.assetid: ca2aeb23-2491-4ccb-8838-884abf7065c8 > 'delegate': a delegate may not have an explicit calling convention +## Remarks + You cannot specify the [calling convention](../../cpp/calling-conventions.md) for a **`delegate`**. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3738.md b/docs/error-messages/compiler-errors-2/compiler-error-c3738.md index 1cf62939cde..1f57713a353 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3738.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3738.md @@ -10,6 +10,8 @@ ms.assetid: dd3ee011-e204-4264-bf3a-da32c4ef7038 > 'calling_convention': the calling convention of the explicit instantiation must match that of the template being instantiated +## Remarks + It is recommended that you do not specify a calling convention on an explicit instantiation. If you must, though, the calling conventions must match. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3739.md b/docs/error-messages/compiler-errors-2/compiler-error-c3739.md index d7787987c0a..015d54cbb3f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3739.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3739.md @@ -10,8 +10,12 @@ ms.assetid: acffe894-08b8-4bf2-9249-9501e6e2bad3 > 'class': syntax is only supported when the 'layout_dependent' parameter of event_receiver is true +## Remarks + You tried to hook an entire interface of events but `layout_dependent` on [event_receiver](../../windows/attributes/event-receiver.md) attribute is not true; you must hook a single event at a time. +## Example + The following sample generates C3739: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3740.md b/docs/error-messages/compiler-errors-2/compiler-error-c3740.md index c3342147789..92a3574332b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3740.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3740.md @@ -10,8 +10,12 @@ ms.assetid: edb17a90-2307-4df6-943d-580460d26d2b > templates cannot source or receive events +## Remarks + A templated class or struct cannot contain [events](../../cpp/event-handling.md). +## Example + The following sample generates C3740: ```cpp From 832c5621abdff82c3533d6bb6041ef3d9d4843e7 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 22 Aug 2025 18:00:24 +0800 Subject: [PATCH 1525/2255] Replace term "sample" with "example" for error references in range [C3711, C3740] --- docs/error-messages/compiler-errors-2/compiler-error-c3711.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3712.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3713.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3714.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3717.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3718.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3719.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3722.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3723.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c3731.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3733.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3734.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3736.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3737.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3738.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3739.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3740.md | 2 +- 17 files changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3711.md b/docs/error-messages/compiler-errors-2/compiler-error-c3711.md index 359b4e6eb88..2191bc9560d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3711.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3711.md @@ -16,7 +16,7 @@ You defined a method in the event source that did not return void or an integral ## Example -The following sample generates C3711: +The following example generates C3711: ```cpp // C3711.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3712.md b/docs/error-messages/compiler-errors-2/compiler-error-c3712.md index 2f2db371ba5..949ab692876 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3712.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3712.md @@ -16,7 +16,7 @@ You defined an event handler method that did not return the same type as the sou ## Example -The following sample generates C3712: +The following example generates C3712: ```cpp // C3712.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3713.md b/docs/error-messages/compiler-errors-2/compiler-error-c3713.md index 6ccf27f91f3..d8206f47246 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3713.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3713.md @@ -16,7 +16,7 @@ You defined an event handler method that did not use the same parameters as the ## Example -The following sample generates C3713: +The following example generates C3713: ```cpp // C3713.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3714.md b/docs/error-messages/compiler-errors-2/compiler-error-c3714.md index e470fc586bb..4300d8bdc49 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3714.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3714.md @@ -16,7 +16,7 @@ You defined an event handler method that did not use the same calling convention ## Example -The following sample generates C3714: +The following example generates C3714: ```cpp // C3714.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3717.md b/docs/error-messages/compiler-errors-2/compiler-error-c3717.md index e96ce1810ee..a43bf44917f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3717.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3717.md @@ -16,7 +16,7 @@ You declared an event method that includes an implementation. An [__event](../.. ## Example -The following sample generates C3717: +The following example generates C3717: ```cpp // C3717.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3718.md b/docs/error-messages/compiler-errors-2/compiler-error-c3718.md index 921e4c0a9c8..64d0d1fd412 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3718.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3718.md @@ -16,7 +16,7 @@ The event can only be called from the receiving class. ## Example -The following sample generates C3718: +The following example generates C3718: ```cpp // C3718.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3719.md b/docs/error-messages/compiler-errors-2/compiler-error-c3719.md index 462b60abc47..b2b20d601e7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3719.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3719.md @@ -16,7 +16,7 @@ You declared an interface in a non-COM context. ## Example -The following sample generates C3719: +The following example generates C3719: ```cpp // C3719a.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3722.md b/docs/error-messages/compiler-errors-2/compiler-error-c3722.md index f177fc2589d..4cbe82691cd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3722.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3722.md @@ -16,7 +16,7 @@ The compiler only allows generic classes, structs, and functions. For more info ## Example -The following sample generates C3722: +The following example generates C3722: ```cpp // C3722.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3723.md b/docs/error-messages/compiler-errors-2/compiler-error-c3723.md index 490e2b9c050..4d176c074e5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3723.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3723.md @@ -16,7 +16,7 @@ ms.assetid: ef0fb1ff-3f9a-4093-a6b6-894d1ab0c4b9 ## Examples -The following sample generates C3723: +The following example generates C3723: ```cpp // C3723.cpp @@ -41,7 +41,7 @@ int main() { **`__hook`** and **`__unhook`** are not compatible with **`/clr`** programming. Use the += and -= operators instead. -The following sample generates C3723: +The following example generates C3723: ```cpp // C3723b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3731.md b/docs/error-messages/compiler-errors-2/compiler-error-c3731.md index 1f20594d041..cd505c3421d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3731.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3731.md @@ -16,7 +16,7 @@ The event source and event receiver must have the same type (for example `native ## Example -The following sample generates C3731: +The following example generates C3731: ```cpp // C3731.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3733.md b/docs/error-messages/compiler-errors-2/compiler-error-c3733.md index d699028f0e2..e5fdcabd78d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3733.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3733.md @@ -15,7 +15,7 @@ The wrong syntax was used for a COM event. To fix this error, change the event t ## Example -The following sample generates C3733: +The following example generates C3733: ```cpp #define _ATL_ATTRIBUTES 1 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3734.md b/docs/error-messages/compiler-errors-2/compiler-error-c3734.md index 91b30c4bd39..35cd145b686 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3734.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3734.md @@ -16,7 +16,7 @@ The [coclass](../../windows/attributes/coclass.md) attribute cannot be used with ## Example -The following sample generates C3734 and shows how to fix it: +The following example generates C3734 and shows how to fix it: ```cpp // C3734.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3736.md b/docs/error-messages/compiler-errors-2/compiler-error-c3736.md index cc901d515b6..982599f9059 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3736.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3736.md @@ -16,7 +16,7 @@ Native and COM events must be methods. .NET events can also be data members. ## Example -The following sample generates C3736: +The following example generates C3736: ```cpp // C3736.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3737.md b/docs/error-messages/compiler-errors-2/compiler-error-c3737.md index 1c0f052ab40..267a2dea821 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3737.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3737.md @@ -16,7 +16,7 @@ You cannot specify the [calling convention](../../cpp/calling-conventions.md) fo ## Example -The following sample generates C3737: +The following example generates C3737: ```cpp // C3737a.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3738.md b/docs/error-messages/compiler-errors-2/compiler-error-c3738.md index 1f57713a353..6cf996cae9b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3738.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3738.md @@ -16,7 +16,7 @@ It is recommended that you do not specify a calling convention on an explicit in ## Example -The following sample generates C3738. +The following example generates C3738. ```cpp // C3738.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3739.md b/docs/error-messages/compiler-errors-2/compiler-error-c3739.md index 015d54cbb3f..e7054231abc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3739.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3739.md @@ -16,7 +16,7 @@ You tried to hook an entire interface of events but `layout_dependent` on [event ## Example -The following sample generates C3739: +The following example generates C3739: ```cpp // C3739.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3740.md b/docs/error-messages/compiler-errors-2/compiler-error-c3740.md index 92a3574332b..dedab225728 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3740.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3740.md @@ -16,7 +16,7 @@ A templated class or struct cannot contain [events](../../cpp/event-handling.md) ## Example -The following sample generates C3740: +The following example generates C3740: ```cpp // C3740.cpp From f01fa4a13e6aed51c7c8b69716521f2b1791651a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 22 Aug 2025 18:04:36 +0800 Subject: [PATCH 1526/2255] Update metadata for error references in range [C3711, C3740] --- .../error-messages/compiler-errors-2/compiler-error-c3711.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3712.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3713.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3714.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3715.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3717.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3718.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3719.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3721.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3722.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3723.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3724.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3727.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3728.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3731.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3732.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3734.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3736.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3737.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3738.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3739.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3740.md | 5 ++--- 22 files changed, 44 insertions(+), 66 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3711.md b/docs/error-messages/compiler-errors-2/compiler-error-c3711.md index 2191bc9560d..8b7399ff2e6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3711.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3711.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3711" title: "Compiler Error C3711" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3711" +ms.date: 11/04/2016 f1_keywords: ["C3711"] helpviewer_keywords: ["C3711"] -ms.assetid: 26d581cc-2153-4ee0-b814-a371184be3e1 --- # Compiler Error C3711 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3712.md b/docs/error-messages/compiler-errors-2/compiler-error-c3712.md index 949ab692876..d7ac31955f0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3712.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3712.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3712" title: "Compiler Error C3712" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3712" +ms.date: 11/04/2016 f1_keywords: ["C3712"] helpviewer_keywords: ["C3712"] -ms.assetid: 65b1fcaf-be89-4c55-9e40-25ec03457253 --- # Compiler Error C3712 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3713.md b/docs/error-messages/compiler-errors-2/compiler-error-c3713.md index d8206f47246..8949eafa8a0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3713.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3713.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3713" title: "Compiler Error C3713" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3713" +ms.date: 11/04/2016 f1_keywords: ["C3713"] helpviewer_keywords: ["C3713"] -ms.assetid: 75c6b9b6-955b-49bd-9bc8-ced88b496a1f --- # Compiler Error C3713 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3714.md b/docs/error-messages/compiler-errors-2/compiler-error-c3714.md index 4300d8bdc49..a623be6a03d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3714.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3714.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3714" title: "Compiler Error C3714" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3714" +ms.date: 11/04/2016 f1_keywords: ["C3714"] helpviewer_keywords: ["C3714"] -ms.assetid: 17718f75-5a37-4e42-912b-487e91008a95 --- # Compiler Error C3714 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3715.md b/docs/error-messages/compiler-errors-2/compiler-error-c3715.md index aa4c7e234ff..807db400d6b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3715.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3715.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3715" title: "Compiler Error C3715" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3715" +ms.date: 11/04/2016 f1_keywords: ["C3715"] helpviewer_keywords: ["C3715"] -ms.assetid: ee5dce88-ddc4-4bdb-9464-47467ce1674f --- # Compiler Error C3715 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3717.md b/docs/error-messages/compiler-errors-2/compiler-error-c3717.md index a43bf44917f..26f54ec56c1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3717.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3717.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3717" title: "Compiler Error C3717" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3717" +ms.date: 11/04/2016 f1_keywords: ["C3717"] helpviewer_keywords: ["C3717"] -ms.assetid: ae4fceb1-2583-4577-b2f1-40971a017055 --- # Compiler Error C3717 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3718.md b/docs/error-messages/compiler-errors-2/compiler-error-c3718.md index 64d0d1fd412..63b08e810fb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3718.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3718.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3718" title: "Compiler Error C3718" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3718" +ms.date: 11/04/2016 f1_keywords: ["C3718"] helpviewer_keywords: ["C3718"] -ms.assetid: 346b5205-c44d-49d3-b66a-96417d3d6986 --- # Compiler Error C3718 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3719.md b/docs/error-messages/compiler-errors-2/compiler-error-c3719.md index b2b20d601e7..7dad0a67d1c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3719.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3719.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3719" title: "Compiler Error C3719" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3719" +ms.date: 11/04/2016 f1_keywords: ["C3719"] helpviewer_keywords: ["C3719"] -ms.assetid: d0d59d4e-babb-4480-9ef7-70cf1a28165c --- # Compiler Error C3719 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3721.md b/docs/error-messages/compiler-errors-2/compiler-error-c3721.md index c4dcc5589ac..9b2aa843ac7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3721.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3721.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3721" title: "Compiler Error C3721" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3721" +ms.date: 11/04/2016 f1_keywords: ["C3721"] helpviewer_keywords: ["C3721"] -ms.assetid: c696ca38-3e00-4875-abbe-7bce0f46930e --- # Compiler Error C3721 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3722.md b/docs/error-messages/compiler-errors-2/compiler-error-c3722.md index 4cbe82691cd..e852c92d29f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3722.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3722.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3722" title: "Compiler Error C3722" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3722" +ms.date: 11/04/2016 f1_keywords: ["C3722"] helpviewer_keywords: ["C3722"] -ms.assetid: 3cb28363-5eff-4548-bd0d-d5c615846353 --- # Compiler Error C3722 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3723.md b/docs/error-messages/compiler-errors-2/compiler-error-c3723.md index 4d176c074e5..c40274a831f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3723.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3723.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3723" title: "Compiler Error C3723" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3723" +ms.date: 11/04/2016 f1_keywords: ["C3723"] helpviewer_keywords: ["C3723"] -ms.assetid: ef0fb1ff-3f9a-4093-a6b6-894d1ab0c4b9 --- # Compiler Error C3723 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3724.md b/docs/error-messages/compiler-errors-2/compiler-error-c3724.md index 53c127e2ff9..2acf3e2b8e6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3724.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3724.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3724" title: "Compiler Error C3724" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3724" +ms.date: 11/04/2016 f1_keywords: ["C3724"] helpviewer_keywords: ["C3724"] -ms.assetid: cab8aba7-14fc-406f-8cc6-32744c8f31c1 --- # Compiler Error C3724 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3727.md b/docs/error-messages/compiler-errors-2/compiler-error-c3727.md index f784c7e475b..a431ad71bcc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3727.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3727.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3727" title: "Compiler Error C3727" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3727" +ms.date: 11/04/2016 f1_keywords: ["C3727"] helpviewer_keywords: ["C3727"] -ms.assetid: 17b9fe7b-ee9e-483f-9c27-1f709255a9e0 --- # Compiler Error C3727 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3728.md b/docs/error-messages/compiler-errors-2/compiler-error-c3728.md index 495fb722ab7..a67b6d6b90c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3728.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3728.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3728" title: "Compiler Error C3728" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3728" +ms.date: 11/04/2016 f1_keywords: ["C3728"] helpviewer_keywords: ["C3728"] -ms.assetid: 6b510cb1-887f-4fcd-9a1f-3bb720417ed1 --- # Compiler Error C3728 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3731.md b/docs/error-messages/compiler-errors-2/compiler-error-c3731.md index cd505c3421d..7b8d9f51f09 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3731.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3731.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3731" title: "Compiler Error C3731" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3731" +ms.date: 11/04/2016 f1_keywords: ["C3731"] helpviewer_keywords: ["C3731"] -ms.assetid: 45f89fcd-464c-4bc8-8a42-edcb5416d26c --- # Compiler Error C3731 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3732.md b/docs/error-messages/compiler-errors-2/compiler-error-c3732.md index e74127bf47e..b8a783b4e74 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3732.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3732.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3732" title: "Compiler Error C3732" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3732" +ms.date: 11/04/2016 f1_keywords: ["C3732"] helpviewer_keywords: ["C3732"] -ms.assetid: 2d55a7e1-9c39-4379-a093-2f7beb27e2ca --- # Compiler Error C3732 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3734.md b/docs/error-messages/compiler-errors-2/compiler-error-c3734.md index 35cd145b686..3b4e5624503 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3734.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3734.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3734" title: "Compiler Error C3734" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3734" +ms.date: 11/04/2016 f1_keywords: ["C3734"] helpviewer_keywords: ["C3734"] -ms.assetid: 4e2afdcc-7da9-45a1-9c96-85f25e2986e8 --- # Compiler Error C3734 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3736.md b/docs/error-messages/compiler-errors-2/compiler-error-c3736.md index 982599f9059..e95ba8acaf9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3736.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3736.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3736" title: "Compiler Error C3736" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3736" +ms.date: 11/04/2016 f1_keywords: ["C3736"] helpviewer_keywords: ["C3736"] -ms.assetid: 579b773c-41e7-40ea-8382-2e3ce2667f4c --- # Compiler Error C3736 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3737.md b/docs/error-messages/compiler-errors-2/compiler-error-c3737.md index 267a2dea821..1ca3f1a46cf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3737.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3737.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3737" title: "Compiler Error C3737" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3737" +ms.date: 11/04/2016 f1_keywords: ["C3737"] helpviewer_keywords: ["C3737"] -ms.assetid: ca2aeb23-2491-4ccb-8838-884abf7065c8 --- # Compiler Error C3737 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3738.md b/docs/error-messages/compiler-errors-2/compiler-error-c3738.md index 6cf996cae9b..d31a1c9b75a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3738.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3738.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3738" title: "Compiler Error C3738" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3738" +ms.date: 11/04/2016 f1_keywords: ["C3738"] helpviewer_keywords: ["C3738"] -ms.assetid: dd3ee011-e204-4264-bf3a-da32c4ef7038 --- # Compiler Error C3738 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3739.md b/docs/error-messages/compiler-errors-2/compiler-error-c3739.md index e7054231abc..f666f3bdc4b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3739.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3739.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3739" title: "Compiler Error C3739" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3739" +ms.date: 11/04/2016 f1_keywords: ["C3739"] helpviewer_keywords: ["C3739"] -ms.assetid: acffe894-08b8-4bf2-9249-9501e6e2bad3 --- # Compiler Error C3739 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3740.md b/docs/error-messages/compiler-errors-2/compiler-error-c3740.md index dedab225728..b71adc946a8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3740.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3740.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3740" title: "Compiler Error C3740" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3740" +ms.date: 11/04/2016 f1_keywords: ["C3740"] helpviewer_keywords: ["C3740"] -ms.assetid: edb17a90-2307-4df6-943d-580460d26d2b --- # Compiler Error C3740 From b52a124167a11d918f41879e8ab7e3f9935ef255 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 22 Aug 2025 18:06:15 +0800 Subject: [PATCH 1527/2255] Add leading example sentence in C3724 error reference --- docs/error-messages/compiler-errors-2/compiler-error-c3724.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3724.md b/docs/error-messages/compiler-errors-2/compiler-error-c3724.md index 2acf3e2b8e6..78cc2f268c4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3724.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3724.md @@ -15,6 +15,8 @@ The windows.h file is required if you use multi-threading with events. To fix th ## Example +The following example generates C3724: + ```cpp // C3724.cpp // uncomment the following line to resolve From 9174ea421cfcf3c70e6671ed9e8b73a89545c4d7 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 22 Aug 2025 18:54:43 +0800 Subject: [PATCH 1528/2255] Augment remarks in C2190 and C2191 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2190.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2191.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2190.md b/docs/error-messages/compiler-errors-1/compiler-error-c2190.md index b1b5022b249..0deb9451756 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2190.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2190.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["C2190"] ## Remarks -A C function was declared a second time with a shorter parameter list. C does not support overloaded functions. +A C function was declared a second time with a shorter parameter list. C does not support overloaded functions. Without [`/Za`](../../build/reference/za-ze-disable-language-extensions.md), the compiler emits [Compiler Warning (level 1) C4030](../compiler-warnings/compiler-warning-level-1-c4030.md) instead. ## Example diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2191.md b/docs/error-messages/compiler-errors-1/compiler-error-c2191.md index 26511d59b3e..9e852064a0e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2191.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2191.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["C2191"] ## Remarks -A C function was declared a second time with a longer parameter list. C does not support overloaded functions. +A C function was declared a second time with a longer parameter list. C does not support overloaded functions. Without [`/Za`](../../build/reference/za-ze-disable-language-extensions.md), the compiler emits [Compiler Warning (level 1) C4031](../compiler-warnings/compiler-warning-level-1-c4031.md) instead. ## Example From bc7633e9a6de13d8bff59bdef7e1b5dd9520d623 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 22 Aug 2025 19:00:17 +0800 Subject: [PATCH 1529/2255] Tweak and format examples in C2190 and C2191 error reference --- .../compiler-errors-1/compiler-error-c2190.md | 8 +++++--- .../compiler-errors-1/compiler-error-c2191.md | 8 +++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2190.md b/docs/error-messages/compiler-errors-1/compiler-error-c2190.md index 0deb9451756..1ccb66644bc 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2190.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2190.md @@ -20,7 +20,9 @@ The following example generates C2190: ```c // C2190.c // compile with: /Za /c -void func( int, float ); -void func( int ); // C2190, different parameter list -void func2( int ); // OK + +void func1(int, float); +void func1(int); // C2190, shorter parameter list + +void func2(int); // OK ``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2191.md b/docs/error-messages/compiler-errors-1/compiler-error-c2191.md index 9e852064a0e..16866c8a827 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2191.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2191.md @@ -20,7 +20,9 @@ The following example generates C2191: ```c // C2191.c // compile with: /Za /c -void func( int ); -void func( int, float ); // C2191 different parameter list -void func2( int, float ); // OK + +void func1(int); +void func1(int, float); // C2191, longer parameter list + +void func2(int, float); // OK ``` From b740cb135d0413e0c090a6e5ab7354edc8e149a7 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 22 Aug 2025 19:04:16 +0800 Subject: [PATCH 1530/2255] Add each other as "See also" link in C2190 and C2191 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2190.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2191.md | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2190.md b/docs/error-messages/compiler-errors-1/compiler-error-c2190.md index 1ccb66644bc..594841f7d9e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2190.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2190.md @@ -26,3 +26,7 @@ void func1(int); // C2190, shorter parameter list void func2(int); // OK ``` + +## See also + +[Compiler Error C2191](compiler-error-c2191.md) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2191.md b/docs/error-messages/compiler-errors-1/compiler-error-c2191.md index 16866c8a827..65f2337043a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2191.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2191.md @@ -26,3 +26,7 @@ void func1(int, float); // C2191, longer parameter list void func2(int, float); // OK ``` + +## See also + +[Compiler Error C2190](compiler-error-c2190.md) From 34f705f5e5a6036b75d3e4c9203da58139692175 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 22 Aug 2025 19:05:34 +0800 Subject: [PATCH 1531/2255] Update `ms.date` metadata in C2190 and C2191 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2190.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2191.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2190.md b/docs/error-messages/compiler-errors-1/compiler-error-c2190.md index 594841f7d9e..8c9adb4ad4c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2190.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2190.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C2190" description: "Learn more about: Compiler Error C2190" -ms.date: 11/04/2016 +ms.date: 08/22/2025 f1_keywords: ["C2190"] helpviewer_keywords: ["C2190"] --- diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2191.md b/docs/error-messages/compiler-errors-1/compiler-error-c2191.md index 65f2337043a..9644cee4889 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2191.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2191.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C2191" description: "Learn more about: Compiler Error C2191" -ms.date: 11/04/2016 +ms.date: 08/22/2025 f1_keywords: ["C2191"] helpviewer_keywords: ["C2191"] --- From b2868008f3602af784435b2f165285f2d2efa300 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 22 Aug 2025 23:32:55 +0800 Subject: [PATCH 1532/2255] Add blockquotes for error messages in range [C3741, C3800] --- docs/error-messages/compiler-errors-2/compiler-error-c3741.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3743.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3744.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3745.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3747.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3748.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3749.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3752.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3753.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3754.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3755.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3761.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3762.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3763.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3764.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3765.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3766.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3767.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3769.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3771.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3772.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3797.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3798.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3799.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3800.md | 2 +- 25 files changed, 25 insertions(+), 25 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3741.md b/docs/error-messages/compiler-errors-2/compiler-error-c3741.md index eda0e59dd9b..af13ca3a273 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3741.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3741.md @@ -8,7 +8,7 @@ ms.assetid: ed311315-cc32-49c9-97fa-01b293d81526 --- # Compiler Error C3741 -'class': must be a coclass when the 'layout_dependent' parameter of event_receiver = true +> 'class': must be a coclass when the 'layout_dependent' parameter of event_receiver = true When `layout_dependent=true` for an [event_receiver](../../windows/attributes/event-receiver.md) class, then the class must also have the [coclass](../../windows/attributes/coclass.md) attribute. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3743.md b/docs/error-messages/compiler-errors-2/compiler-error-c3743.md index 6cabeee37af..229bcf359ef 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3743.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3743.md @@ -8,7 +8,7 @@ ms.assetid: 7ca9a76e-7b60-46d1-ab8b-18600cf1a306 --- # Compiler Error C3743 -can only hook/unhook an entire interface when the 'layout_dependent' parameter of event_receiver is true +> can only hook/unhook an entire interface when the 'layout_dependent' parameter of event_receiver is true The [__unhook](../../cpp/unhook.md) function varies in the number of parameters that it takes based on the value passed to the `layout_dependent` parameter in the [event_receiver](../../windows/attributes/event-receiver.md) class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3744.md b/docs/error-messages/compiler-errors-2/compiler-error-c3744.md index 289ae4d140b..71f997878dc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3744.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3744.md @@ -8,7 +8,7 @@ ms.assetid: a447d050-80d1-406a-9a6e-f15c527d717c --- # Compiler Error C3744 -__unhook must have at least 3 arguments for managed events +> __unhook must have at least 3 arguments for managed events The [`__unhook`](../../cpp/unhook.md) function must take three parameters when used in a program that is compiled for Managed Extensions for C++. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3745.md b/docs/error-messages/compiler-errors-2/compiler-error-c3745.md index 1959d9bdeca..3a4dfeb7637 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3745.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3745.md @@ -8,7 +8,7 @@ ms.assetid: 1e64aec5-7e53-47e5-bc7d-3905230cfc66 --- # Compiler Error C3745 -'function': only an event can be 'raised' +> 'function': only an event can be 'raised' Only a function defined with the [__event](../../cpp/event.md) keyword can be passed to the [__raise](../../cpp/raise.md) keyword. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3747.md b/docs/error-messages/compiler-errors-2/compiler-error-c3747.md index 0b9fbeab007..748b86abb6b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3747.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3747.md @@ -8,7 +8,7 @@ ms.assetid: a9a4be67-5d9c-4dcc-9ae9-baae46cbecde --- # Compiler Error C3747 -missing default type parameter : parameter param +> missing default type parameter : parameter param Generic or template parameters with default values cannot be followed in the parameter list by parameters that do not have default values. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3748.md b/docs/error-messages/compiler-errors-2/compiler-error-c3748.md index f2f54266dfc..29ec78c8afe 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3748.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3748.md @@ -8,7 +8,7 @@ ms.assetid: 6fe71a0a-dd93-4ce6-9729-b9616360cf34 --- # Compiler Error C3748 -'interface': managed interfaces may not fire events +> 'interface': managed interfaces may not fire events The [__event](../../cpp/event.md) keyword cannot appear inside an interface. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3749.md b/docs/error-messages/compiler-errors-2/compiler-error-c3749.md index d31c3c0c67a..57290d1dc7a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3749.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3749.md @@ -8,7 +8,7 @@ ms.assetid: 3d26b468-4757-41b8-b5a2-78022a5295fb --- # Compiler Error C3749 -'attribute': a custom attribute may not be used inside a function +> 'attribute': a custom attribute may not be used inside a function A custom attribute cannot be used inside a function. For more information on custom attributes, see the topic [attribute](../../windows/attributes/attribute.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3752.md b/docs/error-messages/compiler-errors-2/compiler-error-c3752.md index 31df4234c49..5ae95779957 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3752.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3752.md @@ -8,6 +8,6 @@ ms.assetid: 1ac81d85-0f5a-4f39-95b6-42fd43cb18d5 --- # Compiler Error C3752 -'attribute class': cannot classify attribute; 'keyword' should not be used in this context +> 'attribute class': cannot classify attribute; 'keyword' should not be used in this context A user-defined attribute was applied incorrectly. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3753.md b/docs/error-messages/compiler-errors-2/compiler-error-c3753.md index 54464a9469b..9a1023d12e2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3753.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3753.md @@ -8,7 +8,7 @@ ms.assetid: a5b99e28-796c-4107-a673-97c2ae3bb2b9 --- # Compiler Error C3753 -a generic property is not allowed +> a generic property is not allowed Generic parameter lists can only appear on managed classes, structs, or functions. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3754.md b/docs/error-messages/compiler-errors-2/compiler-error-c3754.md index f35e3c280a1..71c4af19362 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3754.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3754.md @@ -8,7 +8,7 @@ ms.assetid: 14b877bc-9277-40ec-af1c-196a58b45f10 --- # Compiler Error C3754 -delegate constructor: member function 'function' cannot be called on an instance of type 'type' +> delegate constructor: member function 'function' cannot be called on an instance of type 'type' A call was made to a function through a pointer to a type that does not contain the function. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3755.md b/docs/error-messages/compiler-errors-2/compiler-error-c3755.md index 0f31bab3a5a..d88b1aa2165 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3755.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3755.md @@ -8,7 +8,7 @@ ms.assetid: 9317b55e-a52e-4b87-b915-5a208d6eda38 --- # Compiler Error C3755 -'delegate': a delegate may not be defined +> 'delegate': a delegate may not be defined A [delegate (C++ Component Extensions)](../../extensions/delegate-cpp-component-extensions.md) can be declared but not defined. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3761.md b/docs/error-messages/compiler-errors-2/compiler-error-c3761.md index 3b30366f458..085866535b0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3761.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3761.md @@ -8,7 +8,7 @@ ms.assetid: 0c16f093-7a78-4838-b90b-0c67ef6e9270 --- # Compiler Error C3761 -'function': 'retval' can only appear on the last argument of a function +> 'function': 'retval' can only appear on the last argument of a function The [retval](../../windows/attributes/retval.md) attribute was used on a function argument that was not the last argument in the list. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3762.md b/docs/error-messages/compiler-errors-2/compiler-error-c3762.md index 03925fb2115..72118d7fb02 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3762.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3762.md @@ -8,6 +8,6 @@ ms.assetid: b79b6506-2cea-44a0-855a-5fdcb9fd7ad9 --- # Compiler Error C3762 -unable to process attribute 'attribute' +> unable to process attribute 'attribute' A user-defined attribute that inherits from `System.Security.Permissions.SecurityAttribute` is being used to define a security attribute. Such an attribute cannot be used in the same assembly where it is defined. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3763.md b/docs/error-messages/compiler-errors-2/compiler-error-c3763.md index 0166ca13a41..ac8e1e442eb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3763.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3763.md @@ -8,7 +8,7 @@ ms.assetid: 58b1f079-cd1d-46e0-9431-ea18210106b7 --- # Compiler Error C3763 -'type': 'retval' and 'out' can only appear on a data-pointer type +> 'type': 'retval' and 'out' can only appear on a data-pointer type The [out](../../windows/attributes/out-cpp.md) or [retval](../../windows/attributes/retval.md) attributes can only appear on parameters of type pointer. Either remove the attribute or make the parameter of type pointer. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3764.md b/docs/error-messages/compiler-errors-2/compiler-error-c3764.md index ea866633a68..829cfb2662d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3764.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3764.md @@ -8,7 +8,7 @@ ms.assetid: af5d254c-8d4a-4dda-aad9-3c5c1257c868 --- # Compiler Error C3764 -'override_function': cannot override base class method 'base_class_function' +> 'override_function': cannot override base class method 'base_class_function' The compiler detected an ill-formed override. For example, the base class function was not **`virtual`**. For more information, see [override](../../extensions/override-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3765.md b/docs/error-messages/compiler-errors-2/compiler-error-c3765.md index 6091aaa1b07..284b489e00f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3765.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3765.md @@ -8,7 +8,7 @@ ms.assetid: feadee7a-fcfb-402c-af2f-0e656f814a13 --- # Compiler Error C3765 -'event': cannot define an event in a class/struct 'type' marked as an event_receiver +> 'event': cannot define an event in a class/struct 'type' marked as an event_receiver If a class is marked with the [event_receiver](../../windows/attributes/event-receiver.md) attribute, the class cannot contain an [__event](../../cpp/event.md) declaration. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3766.md b/docs/error-messages/compiler-errors-2/compiler-error-c3766.md index 9e4127d7f5d..3f3ac7379c1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3766.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3766.md @@ -8,7 +8,7 @@ ms.assetid: b5af2089-2e1e-4e45-a41d-495b6c55656e --- # Compiler Error C3766 -'type' must provide an implementation for the interface method 'function' +> 'type' must provide an implementation for the interface method 'function' A class that inherits from an interface must implement the interface members. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3767.md b/docs/error-messages/compiler-errors-2/compiler-error-c3767.md index 9a9ed09b2b3..dd99598ac7e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3767.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3767.md @@ -8,7 +8,7 @@ ms.assetid: 5247cdcd-639c-4527-bd37-37e74c4e8fab --- # Compiler Error C3767 -'function' candidate function(s) not accessible +> 'function' candidate function(s) not accessible A friend function defined in a class is not supposed to be treated as if it were defined and declared in the global namespace scope. It can, however, be found by argument-dependent lookup. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3769.md b/docs/error-messages/compiler-errors-2/compiler-error-c3769.md index 47aa0fda651..01478fdc482 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3769.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3769.md @@ -8,7 +8,7 @@ ms.assetid: 341675e1-7428-4da6-8275-1b2f0a70dacc --- # Compiler Error C3769 -'type' : a nested class cannot have the same name as the immediately enclosing class +> 'type' : a nested class cannot have the same name as the immediately enclosing class A nested class cannot have the same name as the immediately enclosing class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3771.md b/docs/error-messages/compiler-errors-2/compiler-error-c3771.md index bdcf2c8966d..a70b8c7564e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3771.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3771.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C3771"] --- # Compiler Error C3771 -"identifier" : friend declaration cannot be found in the nearest namespace scope +> "identifier" : friend declaration cannot be found in the nearest namespace scope The class template declaration for the specified template *identifier* cannot be found within the current namespace. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3772.md b/docs/error-messages/compiler-errors-2/compiler-error-c3772.md index 042a708d93a..9b1ce1efe94 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3772.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3772.md @@ -8,7 +8,7 @@ ms.assetid: 63e938d4-088d-41cc-a562-5881a05b5710 --- # Compiler Error C3772 -"name" : invalid friend template declaration +> "name" : invalid friend template declaration It is invalid to declare a friend of a class template specialization. You cannot declare an explicit or partial specialization of a class template and in the same statement declare a friend of that specialization. The *name* placeholder identifies the invalid declaration. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3797.md b/docs/error-messages/compiler-errors-2/compiler-error-c3797.md index 22e95517bff..fa1d2efcf2e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3797.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3797.md @@ -8,7 +8,7 @@ ms.assetid: ab27ff34-8c1d-4297-b004-9e39bd3a4f25 --- # Compiler Error C3797 -'override': event declaration cannot have override specifier (should be placed on event add/remove/raise methods instead) +> 'override': event declaration cannot have override specifier (should be placed on event add/remove/raise methods instead) You cannot override a trivial event (an event without explicitly defined accessor methods) with another trivial event. The overriding event must define its behavior with accessor functions. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3798.md b/docs/error-messages/compiler-errors-2/compiler-error-c3798.md index c0916d81b5b..5be85ea618b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3798.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3798.md @@ -8,7 +8,7 @@ ms.assetid: b2f8b1d8-8812-49b8-a346-28e48f02ba5c --- # Compiler Error C3798 -'specifier': property declaration cannot have override specifier (should be placed on property get/set methods instead) +> 'specifier': property declaration cannot have override specifier (should be placed on property get/set methods instead) A property was declared incorrectly. For more information, see diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3799.md b/docs/error-messages/compiler-errors-2/compiler-error-c3799.md index 7a9f3980f9e..11a50614ab0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3799.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3799.md @@ -8,7 +8,7 @@ ms.assetid: 336a2811-9370-4e6e-b03b-325bda470805 --- # Compiler Error C3799 -indexed property cannot have an empty parameter list +> indexed property cannot have an empty parameter list An indexed property was declared incorrectly. For more information, see [How to: Use Properties in C++/CLI](../../dotnet/how-to-use-properties-in-cpp-cli.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3800.md b/docs/error-messages/compiler-errors-2/compiler-error-c3800.md index 4d21036576b..7da977bc6b0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3800.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3800.md @@ -8,7 +8,7 @@ ms.assetid: c653240a-b6db-4437-8d65-fa58f0e6fcf4 --- # Compiler Error C3800 -'declaration': cannot mix properties and events +> 'declaration': cannot mix properties and events You cannot declare a construct to be both a property and an event. From 87b93d2d752da0df5252d7005c443f4c038c6a7a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 22 Aug 2025 23:39:32 +0800 Subject: [PATCH 1533/2255] Add "Remarks" and "Example" headings for error references in range [C3741, C3800] --- .../compiler-errors-2/compiler-error-c3741.md | 4 ++++ .../compiler-errors-2/compiler-error-c3743.md | 4 ++++ .../compiler-errors-2/compiler-error-c3744.md | 2 ++ .../compiler-errors-2/compiler-error-c3745.md | 4 ++++ .../compiler-errors-2/compiler-error-c3747.md | 4 ++++ .../compiler-errors-2/compiler-error-c3748.md | 4 ++++ .../compiler-errors-2/compiler-error-c3749.md | 2 ++ .../compiler-errors-2/compiler-error-c3752.md | 2 ++ .../compiler-errors-2/compiler-error-c3753.md | 2 ++ .../compiler-errors-2/compiler-error-c3754.md | 2 ++ .../compiler-errors-2/compiler-error-c3755.md | 2 ++ .../compiler-errors-2/compiler-error-c3761.md | 4 ++++ .../compiler-errors-2/compiler-error-c3762.md | 2 ++ .../compiler-errors-2/compiler-error-c3763.md | 4 ++++ .../compiler-errors-2/compiler-error-c3764.md | 2 ++ .../compiler-errors-2/compiler-error-c3765.md | 4 ++++ .../compiler-errors-2/compiler-error-c3766.md | 2 ++ .../compiler-errors-2/compiler-error-c3767.md | 4 +++- .../compiler-errors-2/compiler-error-c3769.md | 2 ++ .../compiler-errors-2/compiler-error-c3771.md | 2 ++ .../compiler-errors-2/compiler-error-c3772.md | 2 ++ .../compiler-errors-2/compiler-error-c3779.md | 6 +++--- .../compiler-errors-2/compiler-error-c3797.md | 2 ++ .../compiler-errors-2/compiler-error-c3798.md | 2 ++ .../compiler-errors-2/compiler-error-c3799.md | 2 ++ .../compiler-errors-2/compiler-error-c3800.md | 2 ++ 26 files changed, 70 insertions(+), 4 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3741.md b/docs/error-messages/compiler-errors-2/compiler-error-c3741.md index af13ca3a273..48ce47753b3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3741.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3741.md @@ -10,8 +10,12 @@ ms.assetid: ed311315-cc32-49c9-97fa-01b293d81526 > 'class': must be a coclass when the 'layout_dependent' parameter of event_receiver = true +## Remarks + When `layout_dependent=true` for an [event_receiver](../../windows/attributes/event-receiver.md) class, then the class must also have the [coclass](../../windows/attributes/coclass.md) attribute. +## Example + The following sample generates C3741 ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3743.md b/docs/error-messages/compiler-errors-2/compiler-error-c3743.md index 229bcf359ef..b928fc739fe 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3743.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3743.md @@ -10,8 +10,12 @@ ms.assetid: 7ca9a76e-7b60-46d1-ab8b-18600cf1a306 > can only hook/unhook an entire interface when the 'layout_dependent' parameter of event_receiver is true +## Remarks + The [__unhook](../../cpp/unhook.md) function varies in the number of parameters that it takes based on the value passed to the `layout_dependent` parameter in the [event_receiver](../../windows/attributes/event-receiver.md) class. +## Example + The following sample generates C3743: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3744.md b/docs/error-messages/compiler-errors-2/compiler-error-c3744.md index 71f997878dc..7975c574041 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3744.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3744.md @@ -10,6 +10,8 @@ ms.assetid: a447d050-80d1-406a-9a6e-f15c527d717c > __unhook must have at least 3 arguments for managed events +## Remarks + The [`__unhook`](../../cpp/unhook.md) function must take three parameters when used in a program that is compiled for Managed Extensions for C++. **`__hook`** and **`__unhook`** are not compatible with **`/clr`** programming. Use the += and -= operators instead. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3745.md b/docs/error-messages/compiler-errors-2/compiler-error-c3745.md index 3a4dfeb7637..59a54f8fe91 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3745.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3745.md @@ -10,8 +10,12 @@ ms.assetid: 1e64aec5-7e53-47e5-bc7d-3905230cfc66 > 'function': only an event can be 'raised' +## Remarks + Only a function defined with the [__event](../../cpp/event.md) keyword can be passed to the [__raise](../../cpp/raise.md) keyword. +## Example + The following sample generates C3745: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3747.md b/docs/error-messages/compiler-errors-2/compiler-error-c3747.md index 748b86abb6b..25303119b85 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3747.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3747.md @@ -10,8 +10,12 @@ ms.assetid: a9a4be67-5d9c-4dcc-9ae9-baae46cbecde > missing default type parameter : parameter param +## Remarks + Generic or template parameters with default values cannot be followed in the parameter list by parameters that do not have default values. +## Example + The following sample generates C3747: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3748.md b/docs/error-messages/compiler-errors-2/compiler-error-c3748.md index 29ec78c8afe..9b3716597f2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3748.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3748.md @@ -10,8 +10,12 @@ ms.assetid: 6fe71a0a-dd93-4ce6-9729-b9616360cf34 > 'interface': managed interfaces may not fire events +## Remarks + The [__event](../../cpp/event.md) keyword cannot appear inside an interface. +## Example + The following sample generates C3748: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3749.md b/docs/error-messages/compiler-errors-2/compiler-error-c3749.md index 57290d1dc7a..a0013bb6a36 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3749.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3749.md @@ -10,6 +10,8 @@ ms.assetid: 3d26b468-4757-41b8-b5a2-78022a5295fb > 'attribute': a custom attribute may not be used inside a function +## Remarks + A custom attribute cannot be used inside a function. For more information on custom attributes, see the topic [attribute](../../windows/attributes/attribute.md). ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3752.md b/docs/error-messages/compiler-errors-2/compiler-error-c3752.md index 5ae95779957..e06b3a748e3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3752.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3752.md @@ -10,4 +10,6 @@ ms.assetid: 1ac81d85-0f5a-4f39-95b6-42fd43cb18d5 > 'attribute class': cannot classify attribute; 'keyword' should not be used in this context +## Remarks + A user-defined attribute was applied incorrectly. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3753.md b/docs/error-messages/compiler-errors-2/compiler-error-c3753.md index 9a1023d12e2..c0a328eb0ae 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3753.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3753.md @@ -10,6 +10,8 @@ ms.assetid: a5b99e28-796c-4107-a673-97c2ae3bb2b9 > a generic property is not allowed +## Remarks + Generic parameter lists can only appear on managed classes, structs, or functions. For more information, see [Generics](../../extensions/generics-cpp-component-extensions.md) and [property](../../extensions/property-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3754.md b/docs/error-messages/compiler-errors-2/compiler-error-c3754.md index 71c4af19362..317839d0dcb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3754.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3754.md @@ -10,6 +10,8 @@ ms.assetid: 14b877bc-9277-40ec-af1c-196a58b45f10 > delegate constructor: member function 'function' cannot be called on an instance of type 'type' +## Remarks + A call was made to a function through a pointer to a type that does not contain the function. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3755.md b/docs/error-messages/compiler-errors-2/compiler-error-c3755.md index d88b1aa2165..a8cdad05943 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3755.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3755.md @@ -10,6 +10,8 @@ ms.assetid: 9317b55e-a52e-4b87-b915-5a208d6eda38 > 'delegate': a delegate may not be defined +## Remarks + A [delegate (C++ Component Extensions)](../../extensions/delegate-cpp-component-extensions.md) can be declared but not defined. ## Examples diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3761.md b/docs/error-messages/compiler-errors-2/compiler-error-c3761.md index 085866535b0..68ecf0733a6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3761.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3761.md @@ -10,8 +10,12 @@ ms.assetid: 0c16f093-7a78-4838-b90b-0c67ef6e9270 > 'function': 'retval' can only appear on the last argument of a function +## Remarks + The [retval](../../windows/attributes/retval.md) attribute was used on a function argument that was not the last argument in the list. +## Example + The following sample generates C3761: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3762.md b/docs/error-messages/compiler-errors-2/compiler-error-c3762.md index 72118d7fb02..6ce364d55a3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3762.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3762.md @@ -10,4 +10,6 @@ ms.assetid: b79b6506-2cea-44a0-855a-5fdcb9fd7ad9 > unable to process attribute 'attribute' +## Remarks + A user-defined attribute that inherits from `System.Security.Permissions.SecurityAttribute` is being used to define a security attribute. Such an attribute cannot be used in the same assembly where it is defined. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3763.md b/docs/error-messages/compiler-errors-2/compiler-error-c3763.md index ac8e1e442eb..26a04d73f79 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3763.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3763.md @@ -10,8 +10,12 @@ ms.assetid: 58b1f079-cd1d-46e0-9431-ea18210106b7 > 'type': 'retval' and 'out' can only appear on a data-pointer type +## Remarks + The [out](../../windows/attributes/out-cpp.md) or [retval](../../windows/attributes/retval.md) attributes can only appear on parameters of type pointer. Either remove the attribute or make the parameter of type pointer. +## Example + The following sample generates C3763: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3764.md b/docs/error-messages/compiler-errors-2/compiler-error-c3764.md index 829cfb2662d..1fd62bbab8e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3764.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3764.md @@ -10,6 +10,8 @@ ms.assetid: af5d254c-8d4a-4dda-aad9-3c5c1257c868 > 'override_function': cannot override base class method 'base_class_function' +## Remarks + The compiler detected an ill-formed override. For example, the base class function was not **`virtual`**. For more information, see [override](../../extensions/override-cpp-component-extensions.md). ## Examples diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3765.md b/docs/error-messages/compiler-errors-2/compiler-error-c3765.md index 284b489e00f..927fc3db609 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3765.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3765.md @@ -10,8 +10,12 @@ ms.assetid: feadee7a-fcfb-402c-af2f-0e656f814a13 > 'event': cannot define an event in a class/struct 'type' marked as an event_receiver +## Remarks + If a class is marked with the [event_receiver](../../windows/attributes/event-receiver.md) attribute, the class cannot contain an [__event](../../cpp/event.md) declaration. +## Example + The following sample generates C3765: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3766.md b/docs/error-messages/compiler-errors-2/compiler-error-c3766.md index 3f3ac7379c1..e4e6af879b6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3766.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3766.md @@ -10,6 +10,8 @@ ms.assetid: b5af2089-2e1e-4e45-a41d-495b6c55656e > 'type' must provide an implementation for the interface method 'function' +## Remarks + A class that inherits from an interface must implement the interface members. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3767.md b/docs/error-messages/compiler-errors-2/compiler-error-c3767.md index dd99598ac7e..9366196e356 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3767.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3767.md @@ -10,11 +10,13 @@ ms.assetid: 5247cdcd-639c-4527-bd37-37e74c4e8fab > 'function' candidate function(s) not accessible +## Remarks + A friend function defined in a class is not supposed to be treated as if it were defined and declared in the global namespace scope. It can, however, be found by argument-dependent lookup. C3767 may also be caused by a breaking change: native types are now private by default in a **/clr** compilation; see [Type visibility](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Type_visibility) for more information. -## Example +## Examples The following sample generates C3767: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3769.md b/docs/error-messages/compiler-errors-2/compiler-error-c3769.md index 01478fdc482..025be55a44b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3769.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3769.md @@ -10,6 +10,8 @@ ms.assetid: 341675e1-7428-4da6-8275-1b2f0a70dacc > 'type' : a nested class cannot have the same name as the immediately enclosing class +## Remarks + A nested class cannot have the same name as the immediately enclosing class. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3771.md b/docs/error-messages/compiler-errors-2/compiler-error-c3771.md index a70b8c7564e..3b950fed268 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3771.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3771.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C3771"] > "identifier" : friend declaration cannot be found in the nearest namespace scope +## Remarks + The class template declaration for the specified template *identifier* cannot be found within the current namespace. ### To correct this error diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3772.md b/docs/error-messages/compiler-errors-2/compiler-error-c3772.md index 9b1ce1efe94..6ae66fdfa07 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3772.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3772.md @@ -10,6 +10,8 @@ ms.assetid: 63e938d4-088d-41cc-a562-5881a05b5710 > "name" : invalid friend template declaration +## Remarks + It is invalid to declare a friend of a class template specialization. You cannot declare an explicit or partial specialization of a class template and in the same statement declare a friend of that specialization. The *name* placeholder identifies the invalid declaration. ### To correct this error diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3779.md b/docs/error-messages/compiler-errors-2/compiler-error-c3779.md index 1f113ff903b..68b51983ef6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3779.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3779.md @@ -9,13 +9,13 @@ helpviewer_keywords: ["C3779"] > '*function*': a function that returns '*auto or decltype(auto)*' cannot be used before it is defined -The **`auto`** return type of the specified function call couldn't be deduced. The compiler didn't have enough information at the call site. - ## Remarks +The **`auto`** return type of the specified function call couldn't be deduced. The compiler didn't have enough information at the call site. + This error can occur when you call a forward-declared member function that has an **`auto`** return type but no body or trailing return type. You can also get this error when the compiler can't find a candidate return type when it instantiates a template specialization. A common cause of this error is a missing interface header. The missing type can often be determined from the typename mentioned in a note that follows this error. To resolve this issue, for every type you use, include the header for the namespace the type is in. -## Examples +## Example The following C++/WinRT sample generates C3779: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3797.md b/docs/error-messages/compiler-errors-2/compiler-error-c3797.md index fa1d2efcf2e..19c94bd52f7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3797.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3797.md @@ -10,6 +10,8 @@ ms.assetid: ab27ff34-8c1d-4297-b004-9e39bd3a4f25 > 'override': event declaration cannot have override specifier (should be placed on event add/remove/raise methods instead) +## Remarks + You cannot override a trivial event (an event without explicitly defined accessor methods) with another trivial event. The overriding event must define its behavior with accessor functions. For more information, see [event](../../extensions/event-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3798.md b/docs/error-messages/compiler-errors-2/compiler-error-c3798.md index 5be85ea618b..1c534fab957 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3798.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3798.md @@ -10,6 +10,8 @@ ms.assetid: b2f8b1d8-8812-49b8-a346-28e48f02ba5c > 'specifier': property declaration cannot have override specifier (should be placed on property get/set methods instead) +## Remarks + A property was declared incorrectly. For more information, see - [property](../../extensions/property-cpp-component-extensions.md) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3799.md b/docs/error-messages/compiler-errors-2/compiler-error-c3799.md index 11a50614ab0..dd00d27ee50 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3799.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3799.md @@ -10,6 +10,8 @@ ms.assetid: 336a2811-9370-4e6e-b03b-325bda470805 > indexed property cannot have an empty parameter list +## Remarks + An indexed property was declared incorrectly. For more information, see [How to: Use Properties in C++/CLI](../../dotnet/how-to-use-properties-in-cpp-cli.md). ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3800.md b/docs/error-messages/compiler-errors-2/compiler-error-c3800.md index 7da977bc6b0..1a9b710d999 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3800.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3800.md @@ -10,6 +10,8 @@ ms.assetid: c653240a-b6db-4437-8d65-fa58f0e6fcf4 > 'declaration': cannot mix properties and events +## Remarks + You cannot declare a construct to be both a property and an event. C3800 is only reachable using the obsolete compiler option **/clr:oldSyntax**. From 1f733b861afdfa6b297b658d166a52365a260512 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 22 Aug 2025 23:41:09 +0800 Subject: [PATCH 1534/2255] Replace term "sample" with "example" for error references in range [C3741, C3800] --- docs/error-messages/compiler-errors-2/compiler-error-c3741.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3743.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3745.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3747.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3748.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3749.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3753.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3754.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3755.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c3761.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3763.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3764.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c3765.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3766.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3767.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c3768.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3769.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3779.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3797.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3798.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3799.md | 2 +- 21 files changed, 24 insertions(+), 24 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3741.md b/docs/error-messages/compiler-errors-2/compiler-error-c3741.md index 48ce47753b3..855eb1a529a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3741.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3741.md @@ -16,7 +16,7 @@ When `layout_dependent=true` for an [event_receiver](../../windows/attributes/ev ## Example -The following sample generates C3741 +The following example generates C3741 ```cpp // C3741.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3743.md b/docs/error-messages/compiler-errors-2/compiler-error-c3743.md index b928fc739fe..40bcf953785 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3743.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3743.md @@ -16,7 +16,7 @@ The [__unhook](../../cpp/unhook.md) function varies in the number of parameters ## Example -The following sample generates C3743: +The following example generates C3743: ```cpp // C3743.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3745.md b/docs/error-messages/compiler-errors-2/compiler-error-c3745.md index 59a54f8fe91..5353aeb550e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3745.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3745.md @@ -16,7 +16,7 @@ Only a function defined with the [__event](../../cpp/event.md) keyword can be pa ## Example -The following sample generates C3745: +The following example generates C3745: ```cpp // C3745.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3747.md b/docs/error-messages/compiler-errors-2/compiler-error-c3747.md index 25303119b85..713a79a4d10 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3747.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3747.md @@ -16,7 +16,7 @@ Generic or template parameters with default values cannot be followed in the par ## Example -The following sample generates C3747: +The following example generates C3747: ```cpp // C3747.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3748.md b/docs/error-messages/compiler-errors-2/compiler-error-c3748.md index 9b3716597f2..6d4b6af1af4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3748.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3748.md @@ -16,7 +16,7 @@ The [__event](../../cpp/event.md) keyword cannot appear inside an interface. ## Example -The following sample generates C3748: +The following example generates C3748: ```cpp // C3748.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3749.md b/docs/error-messages/compiler-errors-2/compiler-error-c3749.md index a0013bb6a36..41be1e97d24 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3749.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3749.md @@ -16,7 +16,7 @@ A custom attribute cannot be used inside a function. For more information on cus ## Example -The following sample generates C3749: +The following example generates C3749: ```cpp // C3749a.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3753.md b/docs/error-messages/compiler-errors-2/compiler-error-c3753.md index c0a328eb0ae..163e20568a5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3753.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3753.md @@ -18,7 +18,7 @@ For more information, see [Generics](../../extensions/generics-cpp-component-ext ## Example -The following sample generates C3753. +The following example generates C3753. ```cpp // C3753.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3754.md b/docs/error-messages/compiler-errors-2/compiler-error-c3754.md index 317839d0dcb..9169bbfac6b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3754.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3754.md @@ -16,7 +16,7 @@ A call was made to a function through a pointer to a type that does not contain ## Example -The following sample generates C3754: +The following example generates C3754: ```cpp // C3754a.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3755.md b/docs/error-messages/compiler-errors-2/compiler-error-c3755.md index a8cdad05943..69f36a326b4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3755.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3755.md @@ -16,7 +16,7 @@ A [delegate (C++ Component Extensions)](../../extensions/delegate-cpp-component ## Examples -The following sample generates C3755. +The following example generates C3755. ```cpp // C3755.cpp @@ -24,7 +24,7 @@ The following sample generates C3755. delegate void MyDel() {}; // C3755 ``` -C3755 can also occur if you attempt to create a delegate template. The following sample generates C3755. +C3755 can also occur if you attempt to create a delegate template. The following example generates C3755. ```cpp // C3755_b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3761.md b/docs/error-messages/compiler-errors-2/compiler-error-c3761.md index 68ecf0733a6..7bb40a8cddc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3761.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3761.md @@ -16,7 +16,7 @@ The [retval](../../windows/attributes/retval.md) attribute was used on a functio ## Example -The following sample generates C3761: +The following example generates C3761: ```cpp // C3761.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3763.md b/docs/error-messages/compiler-errors-2/compiler-error-c3763.md index 26a04d73f79..aec3ec8e35e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3763.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3763.md @@ -16,7 +16,7 @@ The [out](../../windows/attributes/out-cpp.md) or [retval](../../windows/attribu ## Example -The following sample generates C3763: +The following example generates C3763: ```cpp // C3763.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3764.md b/docs/error-messages/compiler-errors-2/compiler-error-c3764.md index 1fd62bbab8e..42f4dec37df 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3764.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3764.md @@ -16,7 +16,7 @@ The compiler detected an ill-formed override. For example, the base class functi ## Examples -The following sample generates C3764. +The following example generates C3764. ```cpp // C3764.cpp @@ -32,7 +32,7 @@ public ref struct B : A { }; ``` -C3764 can also occur when a base class method is both explicitly and named overridden. The following sample generates C3764. +C3764 can also occur when a base class method is both explicitly and named overridden. The following example generates C3764. ```cpp // C3764_b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3765.md b/docs/error-messages/compiler-errors-2/compiler-error-c3765.md index 927fc3db609..7ab855aadf4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3765.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3765.md @@ -16,7 +16,7 @@ If a class is marked with the [event_receiver](../../windows/attributes/event-re ## Example -The following sample generates C3765: +The following example generates C3765: ```cpp // C3765.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3766.md b/docs/error-messages/compiler-errors-2/compiler-error-c3766.md index e4e6af879b6..a7aee6fc1da 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3766.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3766.md @@ -16,7 +16,7 @@ A class that inherits from an interface must implement the interface members. ## Example -The following sample generates C3766. +The following example generates C3766. ```cpp // C3766.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3767.md b/docs/error-messages/compiler-errors-2/compiler-error-c3767.md index 9366196e356..dbcd124e9ba 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3767.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3767.md @@ -18,7 +18,7 @@ C3767 may also be caused by a breaking change: native types are now private by d ## Examples -The following sample generates C3767: +The following example generates C3767: ```cpp // C3767a.cpp @@ -49,7 +49,7 @@ int main() { }; ``` -The following sample generates C3767: +The following example generates C3767: ```cpp // C3767c.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3768.md b/docs/error-messages/compiler-errors-2/compiler-error-c3768.md index 8bf47793aea..3d7f24b19ce 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3768.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3768.md @@ -18,7 +18,7 @@ When compiling with **/clr:pure**, you cannot take the address of a virtual `var ## Example -The following sample generates C3768: +The following example generates C3768: ```cpp // C3768.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3769.md b/docs/error-messages/compiler-errors-2/compiler-error-c3769.md index 025be55a44b..40297fde8d6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3769.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3769.md @@ -16,7 +16,7 @@ A nested class cannot have the same name as the immediately enclosing class. ## Example -The following sample generates C3769. +The following example generates C3769. ```cpp // C3769.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3779.md b/docs/error-messages/compiler-errors-2/compiler-error-c3779.md index 68b51983ef6..279ee4ee6e1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3779.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3779.md @@ -17,7 +17,7 @@ This error can occur when you call a forward-declared member function that has a ## Example -The following C++/WinRT sample generates C3779: +The following C++/WinRT example generates C3779: ```cpp // C3779.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3797.md b/docs/error-messages/compiler-errors-2/compiler-error-c3797.md index 19c94bd52f7..4dd46b23b0c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3797.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3797.md @@ -18,7 +18,7 @@ For more information, see [event](../../extensions/event-cpp-component-extension ## Example -The following sample generates C3797. +The following example generates C3797. ```cpp // C3797.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3798.md b/docs/error-messages/compiler-errors-2/compiler-error-c3798.md index 1c534fab957..0ec191fae94 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3798.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3798.md @@ -22,7 +22,7 @@ A property was declared incorrectly. For more information, see ## Example -The following sample generates C3798 +The following example generates C3798 ```cpp // C3798.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3799.md b/docs/error-messages/compiler-errors-2/compiler-error-c3799.md index dd00d27ee50..653d4657e6d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3799.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3799.md @@ -16,7 +16,7 @@ An indexed property was declared incorrectly. For more information, see [How to: ## Example -The following sample generates C3799 and shows how to fix it. +The following example generates C3799 and shows how to fix it. ```cpp // C3799.cpp From e3b8abd890aae6cce08ba9f7a2126cadaf714b7f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 22 Aug 2025 23:45:27 +0800 Subject: [PATCH 1535/2255] Update metadata for error references in range [C3741, C3800] --- .../error-messages/compiler-errors-2/compiler-error-c3741.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3743.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3744.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3745.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3747.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3748.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3749.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3752.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3753.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3754.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3755.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3761.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3762.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3763.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3764.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3765.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3766.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3767.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3768.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3769.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3772.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3779.md | 2 +- .../error-messages/compiler-errors-2/compiler-error-c3797.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3798.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3799.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3800.md | 5 ++--- 26 files changed, 51 insertions(+), 76 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3741.md b/docs/error-messages/compiler-errors-2/compiler-error-c3741.md index 855eb1a529a..9fabe12afba 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3741.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3741.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3741" title: "Compiler Error C3741" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3741" +ms.date: 11/04/2016 f1_keywords: ["C3741"] helpviewer_keywords: ["C3741"] -ms.assetid: ed311315-cc32-49c9-97fa-01b293d81526 --- # Compiler Error C3741 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3743.md b/docs/error-messages/compiler-errors-2/compiler-error-c3743.md index 40bcf953785..eeb1dc1a848 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3743.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3743.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3743" title: "Compiler Error C3743" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3743" +ms.date: 11/04/2016 f1_keywords: ["C3743"] helpviewer_keywords: ["C3743"] -ms.assetid: 7ca9a76e-7b60-46d1-ab8b-18600cf1a306 --- # Compiler Error C3743 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3744.md b/docs/error-messages/compiler-errors-2/compiler-error-c3744.md index 7975c574041..7edb6d976b9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3744.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3744.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3744" title: "Compiler Error C3744" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3744" +ms.date: 11/04/2016 f1_keywords: ["C3744"] helpviewer_keywords: ["C3744"] -ms.assetid: a447d050-80d1-406a-9a6e-f15c527d717c --- # Compiler Error C3744 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3745.md b/docs/error-messages/compiler-errors-2/compiler-error-c3745.md index 5353aeb550e..480fca90e6a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3745.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3745.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3745" title: "Compiler Error C3745" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3745" +ms.date: 11/04/2016 f1_keywords: ["C3745"] helpviewer_keywords: ["C3745"] -ms.assetid: 1e64aec5-7e53-47e5-bc7d-3905230cfc66 --- # Compiler Error C3745 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3747.md b/docs/error-messages/compiler-errors-2/compiler-error-c3747.md index 713a79a4d10..deba5ccb381 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3747.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3747.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3747" title: "Compiler Error C3747" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3747" +ms.date: 11/04/2016 f1_keywords: ["C3747"] helpviewer_keywords: ["C3747"] -ms.assetid: a9a4be67-5d9c-4dcc-9ae9-baae46cbecde --- # Compiler Error C3747 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3748.md b/docs/error-messages/compiler-errors-2/compiler-error-c3748.md index 6d4b6af1af4..ba2b46ba8f0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3748.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3748.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3748" title: "Compiler Error C3748" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3748" +ms.date: 11/04/2016 f1_keywords: ["C3748"] helpviewer_keywords: ["C3748"] -ms.assetid: 6fe71a0a-dd93-4ce6-9729-b9616360cf34 --- # Compiler Error C3748 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3749.md b/docs/error-messages/compiler-errors-2/compiler-error-c3749.md index 41be1e97d24..605a68c8fc6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3749.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3749.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3749" title: "Compiler Error C3749" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3749" +ms.date: 11/04/2016 f1_keywords: ["C3749"] helpviewer_keywords: ["C3749"] -ms.assetid: 3d26b468-4757-41b8-b5a2-78022a5295fb --- # Compiler Error C3749 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3752.md b/docs/error-messages/compiler-errors-2/compiler-error-c3752.md index e06b3a748e3..3e8f4de3350 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3752.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3752.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3752" title: "Compiler Error C3752" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3752" +ms.date: 11/04/2016 f1_keywords: ["C3752"] helpviewer_keywords: ["C3752"] -ms.assetid: 1ac81d85-0f5a-4f39-95b6-42fd43cb18d5 --- # Compiler Error C3752 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3753.md b/docs/error-messages/compiler-errors-2/compiler-error-c3753.md index 163e20568a5..a455bba26fb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3753.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3753.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3753" title: "Compiler Error C3753" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3753" +ms.date: 11/04/2016 f1_keywords: ["C3753"] helpviewer_keywords: ["C3753"] -ms.assetid: a5b99e28-796c-4107-a673-97c2ae3bb2b9 --- # Compiler Error C3753 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3754.md b/docs/error-messages/compiler-errors-2/compiler-error-c3754.md index 9169bbfac6b..648b8bd64e0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3754.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3754.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3754" title: "Compiler Error C3754" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3754" +ms.date: 11/04/2016 f1_keywords: ["C3754"] helpviewer_keywords: ["C3754"] -ms.assetid: 14b877bc-9277-40ec-af1c-196a58b45f10 --- # Compiler Error C3754 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3755.md b/docs/error-messages/compiler-errors-2/compiler-error-c3755.md index 69f36a326b4..2ef2709d235 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3755.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3755.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3755" title: "Compiler Error C3755" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3755" +ms.date: 11/04/2016 f1_keywords: ["C3755"] helpviewer_keywords: ["C3755"] -ms.assetid: 9317b55e-a52e-4b87-b915-5a208d6eda38 --- # Compiler Error C3755 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3761.md b/docs/error-messages/compiler-errors-2/compiler-error-c3761.md index 7bb40a8cddc..7e0d0f90e8d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3761.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3761.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3761" title: "Compiler Error C3761" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3761" +ms.date: 11/04/2016 f1_keywords: ["C3761"] helpviewer_keywords: ["C3761"] -ms.assetid: 0c16f093-7a78-4838-b90b-0c67ef6e9270 --- # Compiler Error C3761 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3762.md b/docs/error-messages/compiler-errors-2/compiler-error-c3762.md index 6ce364d55a3..a732ee83512 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3762.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3762.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3762" title: "Compiler Error C3762" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3762" +ms.date: 11/04/2016 f1_keywords: ["C3762"] helpviewer_keywords: ["C3762"] -ms.assetid: b79b6506-2cea-44a0-855a-5fdcb9fd7ad9 --- # Compiler Error C3762 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3763.md b/docs/error-messages/compiler-errors-2/compiler-error-c3763.md index aec3ec8e35e..f056026f670 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3763.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3763.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3763" title: "Compiler Error C3763" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3763" +ms.date: 11/04/2016 f1_keywords: ["C3763"] helpviewer_keywords: ["C3763"] -ms.assetid: 58b1f079-cd1d-46e0-9431-ea18210106b7 --- # Compiler Error C3763 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3764.md b/docs/error-messages/compiler-errors-2/compiler-error-c3764.md index 42f4dec37df..aa4d0782cbc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3764.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3764.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3764" title: "Compiler Error C3764" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3764" +ms.date: 11/04/2016 f1_keywords: ["C3764"] helpviewer_keywords: ["C3764"] -ms.assetid: af5d254c-8d4a-4dda-aad9-3c5c1257c868 --- # Compiler Error C3764 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3765.md b/docs/error-messages/compiler-errors-2/compiler-error-c3765.md index 7ab855aadf4..cba25055ecc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3765.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3765.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3765" title: "Compiler Error C3765" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3765" +ms.date: 11/04/2016 f1_keywords: ["C3765"] helpviewer_keywords: ["C3765"] -ms.assetid: feadee7a-fcfb-402c-af2f-0e656f814a13 --- # Compiler Error C3765 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3766.md b/docs/error-messages/compiler-errors-2/compiler-error-c3766.md index a7aee6fc1da..996e2b80d35 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3766.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3766.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3766" title: "Compiler Error C3766" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3766" +ms.date: 11/04/2016 f1_keywords: ["C3766"] helpviewer_keywords: ["C3766"] -ms.assetid: b5af2089-2e1e-4e45-a41d-495b6c55656e --- # Compiler Error C3766 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3767.md b/docs/error-messages/compiler-errors-2/compiler-error-c3767.md index dbcd124e9ba..c3019dc8a11 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3767.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3767.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3767" title: "Compiler Error C3767" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3767" +ms.date: 11/04/2016 f1_keywords: ["C3767"] helpviewer_keywords: ["C3767"] -ms.assetid: 5247cdcd-639c-4527-bd37-37e74c4e8fab --- # Compiler Error C3767 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3768.md b/docs/error-messages/compiler-errors-2/compiler-error-c3768.md index 3d7f24b19ce..0d49df0bf52 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3768.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3768.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3768" title: "Compiler Error C3768" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3768" +ms.date: 11/04/2016 f1_keywords: ["C3768"] helpviewer_keywords: ["C3768"] -ms.assetid: 091f0d53-1dff-43fd-813d-5c43c85b6ab0 --- # Compiler Error C3768 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3769.md b/docs/error-messages/compiler-errors-2/compiler-error-c3769.md index 40297fde8d6..1109fddfcde 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3769.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3769.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3769" title: "Compiler Error C3769" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3769" +ms.date: 11/04/2016 f1_keywords: ["C3769"] helpviewer_keywords: ["C3769"] -ms.assetid: 341675e1-7428-4da6-8275-1b2f0a70dacc --- # Compiler Error C3769 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3772.md b/docs/error-messages/compiler-errors-2/compiler-error-c3772.md index 6ae66fdfa07..1cf537711b4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3772.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3772.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3772" title: "Compiler Error C3772" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3772" +ms.date: 11/04/2016 f1_keywords: ["C3772"] helpviewer_keywords: ["C3772"] -ms.assetid: 63e938d4-088d-41cc-a562-5881a05b5710 --- # Compiler Error C3772 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3779.md b/docs/error-messages/compiler-errors-2/compiler-error-c3779.md index 279ee4ee6e1..b1029535d73 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3779.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3779.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler Error C3779" title: "Compiler Error C3779" +description: "Learn more about: Compiler Error C3779" ms.date: 05/19/2021 f1_keywords: ["C3779"] helpviewer_keywords: ["C3779"] diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3797.md b/docs/error-messages/compiler-errors-2/compiler-error-c3797.md index 4dd46b23b0c..fd98c9b12f8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3797.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3797.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3797" title: "Compiler Error C3797" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3797" +ms.date: 11/04/2016 f1_keywords: ["C3797"] helpviewer_keywords: ["C3797"] -ms.assetid: ab27ff34-8c1d-4297-b004-9e39bd3a4f25 --- # Compiler Error C3797 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3798.md b/docs/error-messages/compiler-errors-2/compiler-error-c3798.md index 0ec191fae94..40ce4ddd31b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3798.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3798.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3798" title: "Compiler Error C3798" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3798" +ms.date: 11/04/2016 f1_keywords: ["C3798"] helpviewer_keywords: ["C3798"] -ms.assetid: b2f8b1d8-8812-49b8-a346-28e48f02ba5c --- # Compiler Error C3798 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3799.md b/docs/error-messages/compiler-errors-2/compiler-error-c3799.md index 653d4657e6d..7824ef85cb5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3799.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3799.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3799" title: "Compiler Error C3799" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3799" +ms.date: 11/04/2016 f1_keywords: ["C3799"] helpviewer_keywords: ["C3799"] -ms.assetid: 336a2811-9370-4e6e-b03b-325bda470805 --- # Compiler Error C3799 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3800.md b/docs/error-messages/compiler-errors-2/compiler-error-c3800.md index 1a9b710d999..c2bf14ce9aa 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3800.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3800.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3800" title: "Compiler Error C3800" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3800" +ms.date: 11/04/2016 f1_keywords: ["C3800"] helpviewer_keywords: ["C3800"] -ms.assetid: c653240a-b6db-4437-8d65-fa58f0e6fcf4 --- # Compiler Error C3800 From 20ed867bcee116d3fc783d8000ce68863354672c Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 23 Aug 2025 01:41:56 +0800 Subject: [PATCH 1536/2255] Structure error references in range [C2291, C2320] (#5570) * Add blockquotes for error messages in range [C2291, C2320] * Add "Remarks" and "Example" headings for error references in range [C2291, C2320] * Replace term "sample" with "example" for error references in range [C2291, C2320] * Update metadata for error references in range [C2291, C2320] --- .../compiler-errors-1/compiler-error-c2292.md | 9 +++++---- .../compiler-errors-1/compiler-error-c2293.md | 13 ++++++++----- .../compiler-errors-1/compiler-error-c2295.md | 9 +++++---- .../compiler-errors-1/compiler-error-c2296.md | 13 ++++++++----- .../compiler-errors-1/compiler-error-c2297.md | 13 ++++++++----- .../compiler-errors-1/compiler-error-c2298.md | 13 +++++++------ .../compiler-errors-1/compiler-error-c2299.md | 7 +++---- .../compiler-errors-1/compiler-error-c2300.md | 9 +++++---- .../compiler-errors-1/compiler-error-c2301.md | 9 +++++---- .../compiler-errors-1/compiler-error-c2302.md | 9 +++++---- .../compiler-errors-1/compiler-error-c2307.md | 9 +++++---- .../compiler-errors-1/compiler-error-c2308.md | 9 +++++---- .../compiler-errors-1/compiler-error-c2309.md | 13 ++++++++----- .../compiler-errors-1/compiler-error-c2310.md | 13 ++++++++----- .../compiler-errors-1/compiler-error-c2311.md | 13 ++++++++----- .../compiler-errors-1/compiler-error-c2312.md | 13 ++++++++----- .../compiler-errors-1/compiler-error-c2313.md | 13 ++++++++----- .../compiler-errors-1/compiler-error-c2315.md | 9 +++++---- .../compiler-errors-1/compiler-error-c2316.md | 11 +++++------ .../compiler-errors-1/compiler-error-c2317.md | 13 ++++++++----- .../compiler-errors-1/compiler-error-c2318.md | 13 ++++++++----- .../compiler-errors-1/compiler-error-c2319.md | 13 ++++++++----- .../compiler-errors-1/compiler-error-c2320.md | 7 ++++--- 23 files changed, 147 insertions(+), 106 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2292.md b/docs/error-messages/compiler-errors-1/compiler-error-c2292.md index 45784ec91f4..1b9d0e238de 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2292.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2292.md @@ -1,14 +1,15 @@ --- -description: "Learn more about: Compiler Error C2292" title: "Compiler Error C2292" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2292" +ms.date: 11/04/2016 f1_keywords: ["C2292"] helpviewer_keywords: ["C2292"] -ms.assetid: 256b392f-2b8f-4162-b578-e7633984e162 --- # Compiler Error C2292 -'identifier': best case inheritance representation: 'representation1' declared but 'representation2' required +> 'identifier': best case inheritance representation: 'representation1' declared but 'representation2' required + +## Example Compiling the following code with [/vmb](../../build/reference/vmb-vmg-representation-method.md) ("Best-case always" representation) causes C2292. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2293.md b/docs/error-messages/compiler-errors-1/compiler-error-c2293.md index 6e0833a07e3..d5eb84b0f59 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2293.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2293.md @@ -1,18 +1,21 @@ --- -description: "Learn more about: Compiler Error C2293" title: "Compiler Error C2293" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2293" +ms.date: 11/04/2016 f1_keywords: ["C2293"] helpviewer_keywords: ["C2293"] -ms.assetid: 17e7b4e2-368b-4dd7-a01b-d82be60f8e56 --- # Compiler Error C2293 -'identifier': illegal to have a member variable as a __based specifier +> 'identifier': illegal to have a member variable as a __based specifier + +## Remarks Specifiers for **`__based`** modifier must be nonmember pointers. -The following sample generates C2293: +## Example + +The following example generates C2293: ```cpp // C2293.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2295.md b/docs/error-messages/compiler-errors-1/compiler-error-c2295.md index 484d1908b7d..f67e5222233 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2295.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2295.md @@ -1,13 +1,14 @@ --- -description: "Learn more about: Compiler Error C2295" title: "Compiler Error C2295" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2295" +ms.date: 11/04/2016 f1_keywords: ["C2295"] helpviewer_keywords: ["C2295"] -ms.assetid: faddf446-5924-401e-b719-93390d5cd084 --- # Compiler Error C2295 -escaped 'character' : is illegal in macro definition +> escaped 'character' : is illegal in macro definition + +## Remarks A macro definition cannot contain an escape sequence with the specified character. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2296.md b/docs/error-messages/compiler-errors-1/compiler-error-c2296.md index bdd1b4b3d24..a37e7a959bf 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2296.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2296.md @@ -1,20 +1,23 @@ --- -description: "Learn more about: Compiler Error C2296" title: "Compiler Error C2296" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2296" +ms.date: 11/04/2016 f1_keywords: ["C2296"] helpviewer_keywords: ["C2296"] -ms.assetid: 47d270f4-13ce-4c16-81e2-7d67c6c4a540 --- # Compiler Error C2296 -'operator' : bad left operand +> 'operator' : bad left operand + +## Remarks The left operand used with `operator` is invalid. For example, the compiler may see a declaration where you intended a function call. -The following sample generates C2296: +## Example + +The following example generates C2296: ```cpp // C2296.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2297.md b/docs/error-messages/compiler-errors-1/compiler-error-c2297.md index 97ed907a34a..8ce344ccd8b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2297.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2297.md @@ -1,20 +1,23 @@ --- -description: "Learn more about: Compiler Error C2297" title: "Compiler Error C2297" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2297" +ms.date: 11/04/2016 f1_keywords: ["C2297"] helpviewer_keywords: ["C2297"] -ms.assetid: 65849fe5-17e1-4b7e-b50c-f508b05ddaa4 --- # Compiler Error C2297 -'operator' : bad right operand +> 'operator' : bad right operand + +## Remarks The right operand used with `operator` is invalid. For example, the compiler may see a declaration where you intended a function call. -The following sample generates C2297: +## Example + +The following example generates C2297: ```cpp // C2297.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2298.md b/docs/error-messages/compiler-errors-1/compiler-error-c2298.md index 529c6f15ebc..cddce97fedd 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2298.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2298.md @@ -1,20 +1,21 @@ --- -description: "Learn more about: Compiler Error C2298" title: "Compiler Error C2298" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2298" +ms.date: 11/04/2016 f1_keywords: ["C2298"] helpviewer_keywords: ["C2298"] -ms.assetid: eb0120ad-c850-4bdd-911d-0361229cc859 --- # Compiler Error C2298 -'operation' : illegal operation on pointer to member function expression +> 'operation' : illegal operation on pointer to member function expression + +## Remarks A pointer to member-function expression must call the member function. ## Examples -The following sample generates C2298. +The following example generates C2298. ```cpp // C2298.cpp @@ -48,7 +49,7 @@ int main() { } ``` -The following sample generates C2298. +The following example generates C2298. ```cpp // C2298_b.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2299.md b/docs/error-messages/compiler-errors-1/compiler-error-c2299.md index 16cf37d4d9a..ae1494b4035 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2299.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2299.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2299" title: "Compiler Error C2299" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2299" +ms.date: 11/04/2016 f1_keywords: ["C2299"] helpviewer_keywords: ["C2299"] -ms.assetid: d001c2bc-f6fd-47aa-8e42-0eb824d6441d --- # Compiler Error C2299 @@ -18,7 +17,7 @@ To resolve C2299, don't make the copy constructor or assignment operator a funct ## Example -The following sample generates C2299: +The following example generates C2299: ```cpp // C2299.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2300.md b/docs/error-messages/compiler-errors-1/compiler-error-c2300.md index 38fcc87e79f..5727f9ee377 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2300.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2300.md @@ -1,13 +1,14 @@ --- -description: "Learn more about: Compiler Error C2300" title: "Compiler Error C2300" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2300" +ms.date: 11/04/2016 f1_keywords: ["C2300"] helpviewer_keywords: ["C2300"] -ms.assetid: bb8fed56-feb0-412b-ae7b-04d48b202b78 --- # Compiler Error C2300 -'identifier' : class does not have a destructor called '~identifier' +> 'identifier' : class does not have a destructor called '~identifier' + +## Remarks The class does not have a destructor with the required name. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2301.md b/docs/error-messages/compiler-errors-1/compiler-error-c2301.md index d95b81771a2..95225fd76a4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2301.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2301.md @@ -1,13 +1,14 @@ --- -description: "Learn more about: Compiler Error C2301" title: "Compiler Error C2301" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2301" +ms.date: 11/04/2016 f1_keywords: ["C2301"] helpviewer_keywords: ["C2301"] -ms.assetid: d294a1a2-dc7a-4e18-90b3-747e1a8c51ee --- # Compiler Error C2301 -left of '->~identifier' must point to class/struct/union +> left of '->~identifier' must point to class/struct/union + +## Remarks The expression to the left of the `->` operator does not evaluate to a pointer to a class, structure, or union. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2302.md b/docs/error-messages/compiler-errors-1/compiler-error-c2302.md index b496d9de753..18abffb5de1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2302.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2302.md @@ -1,13 +1,14 @@ --- -description: "Learn more about: Compiler Error C2302" title: "Compiler Error C2302" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2302" +ms.date: 11/04/2016 f1_keywords: ["C2302"] helpviewer_keywords: ["C2302"] -ms.assetid: 74a54bab-9d5c-446e-9b1f-c92fb57090a8 --- # Compiler Error C2302 -left of '.~identifier' must have class/struct/union type +> left of '.~identifier' must have class/struct/union type + +## Remarks The expression to the left of the period (.) operator is not a class, structure, or union. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2307.md b/docs/error-messages/compiler-errors-1/compiler-error-c2307.md index 469a7facd99..69e3890ef35 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2307.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2307.md @@ -1,13 +1,14 @@ --- -description: "Learn more about: Compiler Error C2307" title: "Compiler Error C2307" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2307" +ms.date: 11/04/2016 f1_keywords: ["C2307"] helpviewer_keywords: ["C2307"] -ms.assetid: ce6c8033-a673-4679-9883-bedec36ae385 --- # Compiler Error C2307 -pragma 'pragma' must be outside function if incremental compilation is enabled +> pragma 'pragma' must be outside function if incremental compilation is enabled + +## Remarks You must place the `data_seg` pragma between functions if you're using incremental compilation. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2308.md b/docs/error-messages/compiler-errors-1/compiler-error-c2308.md index 83af91881dc..60d5d48ec7c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2308.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2308.md @@ -1,13 +1,14 @@ --- -description: "Learn more about: Compiler Error C2308" title: "Compiler Error C2308" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2308" +ms.date: 11/04/2016 f1_keywords: ["C2308"] helpviewer_keywords: ["C2308"] -ms.assetid: d1eaf101-077d-4c43-97ac-410efd5b6fc9 --- # Compiler Error C2308 -concatenating mismatched strings +> concatenating mismatched strings + +## Remarks Both wide and non-wide character strings were specified for concatenation. You cannot concatenate a wide character string and non-wide character string. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2309.md b/docs/error-messages/compiler-errors-1/compiler-error-c2309.md index 631119862e5..e2d392ca6a8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2309.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2309.md @@ -1,18 +1,21 @@ --- -description: "Learn more about: Compiler Error C2309" title: "Compiler Error C2309" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2309" +ms.date: 11/04/2016 f1_keywords: ["C2309"] helpviewer_keywords: ["C2309"] -ms.assetid: 6303d5b5-72cf-42b8-92ce-b1eb48e80d48 --- # Compiler Error C2309 -catch handler expected a parenthesized exception declaration +> catch handler expected a parenthesized exception declaration + +## Remarks A catch handler has no parenthesized type. -The following sample generates C2309: +## Example + +The following example generates C2309: ```cpp // C2309.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2310.md b/docs/error-messages/compiler-errors-1/compiler-error-c2310.md index b66045af5f2..401f5456254 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2310.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2310.md @@ -1,18 +1,21 @@ --- -description: "Learn more about: Compiler Error C2310" title: "Compiler Error C2310" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2310" +ms.date: 11/04/2016 f1_keywords: ["C2310"] helpviewer_keywords: ["C2310"] -ms.assetid: 1969c682-b97e-43fb-b9a9-f783e7ff1710 --- # Compiler Error C2310 -catch handlers must specify one type +> catch handlers must specify one type + +## Remarks A catch handler specified no type or multiple types. -The following sample generates C2310: +## Example + +The following example generates C2310: ```cpp // C2310.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2311.md b/docs/error-messages/compiler-errors-1/compiler-error-c2311.md index 1593deabd62..8b132322598 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2311.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2311.md @@ -1,18 +1,21 @@ --- -description: "Learn more about: Compiler Error C2311" title: "Compiler Error C2311" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2311" +ms.date: 11/04/2016 f1_keywords: ["C2311"] helpviewer_keywords: ["C2311"] -ms.assetid: 1aff9bd5-ed0b-4db6-bbc0-01ac89850cf2 --- # Compiler Error C2311 -'exception' : is caught by '...' on line number +> 'exception' : is caught by '...' on line number + +## Remarks The catch handler for the ellipsis (...) must be the last handler for a throw. -The following sample generates C2311: +## Example + +The following example generates C2311: ```cpp // C2311.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2312.md b/docs/error-messages/compiler-errors-1/compiler-error-c2312.md index 39b2968286d..81b15ceb6ff 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2312.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2312.md @@ -1,18 +1,21 @@ --- -description: "Learn more about: Compiler Error C2312" title: "Compiler Error C2312" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2312" +ms.date: 11/04/2016 f1_keywords: ["C2312"] helpviewer_keywords: ["C2312"] -ms.assetid: c8bcfd06-12c1-4323-bb53-ba392d36daa4 --- # Compiler Error C2312 -'exception1' : is caught by 'exception2' on line number +> 'exception1' : is caught by 'exception2' on line number + +## Remarks Two handlers catch the same exception type. -The following sample generates C2312: +## Example + +The following example generates C2312: ```cpp // C2312.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2313.md b/docs/error-messages/compiler-errors-1/compiler-error-c2313.md index 01c0b6c5737..2d71495167d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2313.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2313.md @@ -1,18 +1,21 @@ --- -description: "Learn more about: Compiler Error C2313" title: "Compiler Error C2313" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2313" +ms.date: 11/04/2016 f1_keywords: ["C2313"] helpviewer_keywords: ["C2313"] -ms.assetid: f70eb19b-c0a3-4fb2-ade1-3890a589928d --- # Compiler Error C2313 -'type1' : is caught by reference ('type2') on line number +> 'type1' : is caught by reference ('type2') on line number + +## Remarks The exception type has two handlers. The type for the second catch is a reference to the type of the first. -The following sample generates C2313: +## Example + +The following example generates C2313: ```cpp // C2313.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2315.md b/docs/error-messages/compiler-errors-1/compiler-error-c2315.md index fc0b04c563f..d6ea11e2f93 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2315.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2315.md @@ -1,13 +1,14 @@ --- -description: "Learn more about: Compiler Error C2315" title: "Compiler Error C2315" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2315" +ms.date: 11/04/2016 f1_keywords: ["C2315"] helpviewer_keywords: ["C2315"] -ms.assetid: a0d91b81-944c-4a69-9a24-fd484aabcc5c --- # Compiler Error C2315 -'type1' : reference is caught by 'type2' on line number +> 'type1' : reference is caught by 'type2' on line number + +## Remarks The exception type is handled by a previous handler. The reference for the second catch has the type of the first. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2316.md b/docs/error-messages/compiler-errors-1/compiler-error-c2316.md index 6163529aca2..4e208a5fc5b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2316.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2316.md @@ -1,24 +1,23 @@ --- -description: "Learn more about: Compiler Error C2316" title: "Compiler Error C2316" -ms.date: "07/08/2019" +description: "Learn more about: Compiler Error C2316" +ms.date: 07/08/2019 f1_keywords: ["C2316"] helpviewer_keywords: ["C2316"] -ms.assetid: 9ad08eb5-060b-4eb0-8d66-0dc134f7bf67 --- # Compiler Error C2316 > '*class_type*' : cannot be caught as the destructor and/or copy constructor are inaccessible or deleted -An exception was caught by value or by reference, but the copy constructor, the assignment operator, or both were inaccessible. - ## Remarks +An exception was caught by value or by reference, but the copy constructor, the assignment operator, or both were inaccessible. + Conformance changes in Visual Studio 2015 made this error apply to bad catch statements of MFC exceptions derived from `CException`. Because `CException` has an inherited private copy constructor, the class and its derivatives aren't copyable, and can't be passed by value, which also means they can't be caught by value. Catch statements that caught MFC exceptions by value previously led to uncaught exceptions at runtime. Now the compiler correctly identifies this situation and reports error C2316. To fix this issue, we recommend you use the MFC TRY/CATCH macros rather than write your own exception handlers. If that's not appropriate for your code, catch MFC exceptions by reference instead. ## Example -The following sample generates C2316, and shows a way to fix it: +The following example generates C2316, and shows a way to fix it: ```cpp // C2316.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2317.md b/docs/error-messages/compiler-errors-1/compiler-error-c2317.md index 79f823cb0e5..fc575b588a1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2317.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2317.md @@ -1,18 +1,21 @@ --- -description: "Learn more about: Compiler Error C2317" title: "Compiler Error C2317" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2317" +ms.date: 11/04/2016 f1_keywords: ["C2317"] helpviewer_keywords: ["C2317"] -ms.assetid: e44d129b-8d3e-4ce9-9d79-6791ee77f25e --- # Compiler Error C2317 -'try' block starting on line 'number' has no catch handlers +> 'try' block starting on line 'number' has no catch handlers + +## Remarks A **`try`** block must have at least one catch handler. -The following sample generates C2317: +## Example + +The following example generates C2317: ```cpp // C2317.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2318.md b/docs/error-messages/compiler-errors-1/compiler-error-c2318.md index b5482c8358f..5a67e8cb5a3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2318.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2318.md @@ -1,18 +1,21 @@ --- -description: "Learn more about: Compiler Error C2318" title: "Compiler Error C2318" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2318" +ms.date: 11/04/2016 f1_keywords: ["C2318"] helpviewer_keywords: ["C2318"] -ms.assetid: 169e30b9-df78-46cb-90bf-576ad3c32fd4 --- # Compiler Error C2318 -no try block associated with this catch handler +> no try block associated with this catch handler + +## Remarks A **`catch`** handler is defined but not preceded by a **`try`** block. -The following sample generates C2318: +## Example + +The following example generates C2318: ```cpp // C2318.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2319.md b/docs/error-messages/compiler-errors-1/compiler-error-c2319.md index 0a9d1381842..87a4c1537f5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2319.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2319.md @@ -1,18 +1,21 @@ --- -description: "Learn more about: Compiler Error C2319" title: "Compiler Error C2319" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2319" +ms.date: 11/04/2016 f1_keywords: ["C2319"] helpviewer_keywords: ["C2319"] -ms.assetid: 25263e6e-f5ba-4d2c-8727-8c2d8ca2e5ce --- # Compiler Error C2319 -'try/catch' must be followed by a compound statement. Missing '{' +> 'try/catch' must be followed by a compound statement. Missing '{' + +## Remarks A **`try`** or **`catch`** block is not found following the **`try`** or **`catch`** statement. The block must be enclosed in curly braces. -The following sample generates C2319: +## Example + +The following example generates C2319: ```cpp // C2319.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2320.md b/docs/error-messages/compiler-errors-1/compiler-error-c2320.md index 1b9cf5a1050..ea08646bec4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2320.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2320.md @@ -1,13 +1,14 @@ --- -description: "Learn more about: Compiler Error C2320" title: "Compiler Error C2320" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2320" +ms.date: 11/04/2016 f1_keywords: ["C2320"] helpviewer_keywords: ["C2320"] -ms.assetid: ae78ae1b-364f-4b65-bfb8-8809d5151ca5 --- # Compiler Error C2320 > expected ':' to follow access specifier '*specifier*' +## Remarks + The keyword **`public`**, **`protected`**, or **`private`** must be followed by a colon. From b3fb9c6330f286c9bb0600fa180ffd27b89c4387 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 23 Aug 2025 01:42:27 +0800 Subject: [PATCH 1537/2255] Add `cmd` language for CL and LINK invocations (#5568) * Add `cmd` language for CL invocations * Add `cmd` language for LINK invocations * Update metadata in 13 topics --- docs/build/reference/c-compile-without-linking.md | 9 ++++----- docs/build/reference/cl-invokes-the-linker.md | 7 +++---- docs/build/reference/compiler-command-line-syntax.md | 7 +++---- docs/build/reference/e-preprocess-to-stdout.md | 9 ++++----- ...-preprocess-to-stdout-without-hash-line-directives.md | 7 +++---- docs/build/reference/fd-program-database-file-name.md | 7 +++---- docs/build/reference/fe-name-exe-file.md | 9 ++++----- docs/build/reference/p-preprocess-to-a-file.md | 7 +++---- docs/build/reference/specifying-the-pathname.md | 7 +++---- .../yd-place-debug-information-in-object-file.md | 9 ++++----- .../tool-errors/command-line-warning-d9027.md | 9 ++++----- .../tool-errors/linker-tools-error-lnk2011.md | 7 +++---- .../tool-errors/linker-tools-warning-lnk4105.md | 7 +++---- 13 files changed, 44 insertions(+), 57 deletions(-) diff --git a/docs/build/reference/c-compile-without-linking.md b/docs/build/reference/c-compile-without-linking.md index e552d6a30e2..e1d07952322 100644 --- a/docs/build/reference/c-compile-without-linking.md +++ b/docs/build/reference/c-compile-without-linking.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: /c (Compile Without Linking)" title: "/c (Compile Without Linking)" -ms.date: "11/04/2016" +description: "Learn more about: /c (Compile Without Linking)" +ms.date: 11/04/2016 f1_keywords: ["/c"] helpviewer_keywords: ["suppress link", "cl.exe compiler, compiling without linking", "-c compiler option [C++]", "c compiler option [C++]", "/c compiler option [C++]"] -ms.assetid: 8017fc3d-e5dd-4668-a1f7-3120daa95d20 --- # /c (Compile Without Linking) @@ -34,13 +33,13 @@ Any internal project created in the development environment uses the **/c** opti The following command line creates the object files FIRST.obj and SECOND.obj. THIRD.obj is ignored. -``` +```cmd CL /c FIRST.C SECOND.C THIRD.OBJ ``` To create an executable file, you must invoke LINK: -``` +```cmd LINK first.obj second.obj third.obj /OUT:filename.exe ``` diff --git a/docs/build/reference/cl-invokes-the-linker.md b/docs/build/reference/cl-invokes-the-linker.md index 8f01f044f2d..df402a70150 100644 --- a/docs/build/reference/cl-invokes-the-linker.md +++ b/docs/build/reference/cl-invokes-the-linker.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: CL Invokes the Linker" title: "CL Invokes the Linker" -ms.date: "11/04/2016" +description: "Learn more about: CL Invokes the Linker" +ms.date: 11/04/2016 helpviewer_keywords: ["compiling source code [C++], without linking", "invoking linker from the compiler", "LINK tool [C++], invoking from CL compiler", "cl.exe compiler [C++], compiling without linking", "cl.exe compiler [C++], controlling linker"] -ms.assetid: eae47ef7-09eb-40c9-b318-7c714cd452fc --- # CL Invokes the Linker @@ -30,7 +29,7 @@ Assume that you are compiling three C source files: MAIN.c, MOD1.c, and MOD2.c. To build this program, compile with the following command line: -``` +```cmd CL MAIN.c MOD1.C MOD2.C MYGRAPH.lib ``` diff --git a/docs/build/reference/compiler-command-line-syntax.md b/docs/build/reference/compiler-command-line-syntax.md index 0f56baaed54..e34ddaab592 100644 --- a/docs/build/reference/compiler-command-line-syntax.md +++ b/docs/build/reference/compiler-command-line-syntax.md @@ -1,15 +1,14 @@ --- -description: "Learn more about: Compiler Command-Line Syntax" title: "MSVC Compiler Command-Line Syntax" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Command-Line Syntax" +ms.date: 11/04/2016 helpviewer_keywords: ["syntax, CL compiler command line", "cl.exe compiler, command-line syntax"] -ms.assetid: acba2c1c-0803-4a3a-af25-63e849b930a2 --- # Compiler Command-Line Syntax The CL command line uses the following syntax: -``` +```cmd CL [option...] file... [option | file]... [lib...] [@command-file] [/link link-opt...] ``` diff --git a/docs/build/reference/e-preprocess-to-stdout.md b/docs/build/reference/e-preprocess-to-stdout.md index c2e2f9d98f1..7426af03468 100644 --- a/docs/build/reference/e-preprocess-to-stdout.md +++ b/docs/build/reference/e-preprocess-to-stdout.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: /E (Preprocess to stdout)" title: "/E (Preprocess to stdout)" -ms.date: "11/04/2016" +description: "Learn more about: /E (Preprocess to stdout)" +ms.date: 11/04/2016 f1_keywords: ["/e"] helpviewer_keywords: ["-E compiler option [C++]", "/E compiler option [C++]", "preprocessor output, copy to stdout", "preprocessor output"] -ms.assetid: ddbb1725-d950-4978-ab2f-30a5cd7b778c --- # /E (Preprocess to stdout) @@ -44,7 +43,7 @@ m(int)main( ) However, if you compile with: -``` +```cmd cl -E test.cpp > test2.cpp ``` @@ -66,7 +65,7 @@ cl -E test.cpp > test2.cpp The following command line preprocesses `ADD.C`, preserves comments, adds `#line` directives, and displays the result on the standard output device: -``` +```cmd CL /E /C ADD.C ``` diff --git a/docs/build/reference/ep-preprocess-to-stdout-without-hash-line-directives.md b/docs/build/reference/ep-preprocess-to-stdout-without-hash-line-directives.md index 0c1deff9db2..61d030c0814 100644 --- a/docs/build/reference/ep-preprocess-to-stdout-without-hash-line-directives.md +++ b/docs/build/reference/ep-preprocess-to-stdout-without-hash-line-directives.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: /EP (Preprocess to stdout Without #line Directives)" title: "/EP (Preprocess to stdout Without #line Directives)" -ms.date: "11/04/2016" +description: "Learn more about: /EP (Preprocess to stdout Without #line Directives)" +ms.date: 11/04/2016 f1_keywords: ["/ep", "VC.Project.VCCLCompilerTool.GeneratePreprocessedFileNoLines"] helpviewer_keywords: ["copy preprocessor output to stdout", "preprocessor output, copy to stdout", "-EP compiler option [C++]", "EP compiler option [C++]", "/EP compiler option [C++]"] -ms.assetid: 6ec411ae-e33d-4ef5-956e-0054635eabea --- # /EP (Preprocess to stdout Without #line Directives) @@ -46,7 +45,7 @@ You cannot use precompiled headers with the **/EP** option. The following command line preprocesses file `ADD.C`, preserves comments, and displays the result on the standard output device: -``` +```cmd CL /EP /C ADD.C ``` diff --git a/docs/build/reference/fd-program-database-file-name.md b/docs/build/reference/fd-program-database-file-name.md index 7bc387dcf56..c9027012f28 100644 --- a/docs/build/reference/fd-program-database-file-name.md +++ b/docs/build/reference/fd-program-database-file-name.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: /Fd (Program Database File Name)" title: "/Fd (Program Database File Name)" -ms.date: "11/04/2016" +description: "Learn more about: /Fd (Program Database File Name)" +ms.date: 11/04/2016 f1_keywords: ["/FD", "VC.Project.VCCLWCECompilerTool.ProgramDataBaseFileName", "VC.Project.VCCLCompilerTool.ProgramDataBaseFileName"] helpviewer_keywords: ["/FD compiler option [C++]", "program database file name [C++]", "-FD compiler option [C++]", "PDB files, creating", "program database compiler option [C++]", ".pdb files, creating", "FD compiler option [C++]"] -ms.assetid: 3977a9ed-f0ac-45df-bf06-01cedd2ba85a --- # /Fd (Program Database File Name) @@ -42,7 +41,7 @@ This option also names the state (.idb) file used for minimal rebuild and increm This command line creates a .pdb file named PROG.pdb and an .idb file named PROG.idb: -``` +```cmd CL /DDEBUG /Zi /FdPROG.PDB PROG.CPP ``` diff --git a/docs/build/reference/fe-name-exe-file.md b/docs/build/reference/fe-name-exe-file.md index 3defab99e37..02c71317a58 100644 --- a/docs/build/reference/fe-name-exe-file.md +++ b/docs/build/reference/fe-name-exe-file.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: /Fe (Name EXE File)" title: "/Fe (Name EXE File)" -ms.date: "11/04/2016" +description: "Learn more about: /Fe (Name EXE File)" +ms.date: 11/04/2016 f1_keywords: ["/fe"] helpviewer_keywords: ["-Fe compiler option [C++]", "executable files, renaming", "rename file compiler option [C++]", "/Fe compiler option [C++]", "Fe compiler option [C++]"] -ms.assetid: 49f594fd-5e94-45fe-a1bf-7c9f2abb6437 --- # /Fe (Name EXE File) @@ -44,13 +43,13 @@ If you specify the [/c (Compile Without Linking)](c-compile-without-linking.md) The following command line compiles and links all C source files in the current directory. The resulting executable file is named PROCESS.exe and is created in the directory "C:\Users\User Name\repos\My Project\bin". -``` +```cmd CL /Fe"C:\Users\User Name\repos\My Project\bin\PROCESS" *.C ``` The following command line creates an executable file in `C:\BIN` with the same base name as the first source file in the current directory: -``` +```cmd CL /FeC:\BIN\ *.C ``` diff --git a/docs/build/reference/p-preprocess-to-a-file.md b/docs/build/reference/p-preprocess-to-a-file.md index e65e5a00d03..3f8c51279bc 100644 --- a/docs/build/reference/p-preprocess-to-a-file.md +++ b/docs/build/reference/p-preprocess-to-a-file.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: /P (Preprocess to a File)" title: "/P (Preprocess to a File)" -ms.date: "11/04/2016" +description: "Learn more about: /P (Preprocess to a File)" +ms.date: 11/04/2016 f1_keywords: ["VC.Project.VCCLCompilerTool.GeneratePreprocessedFile", "/p", "VC.Project.VCCLWCECompilerTool.GeneratePreprocessedFile"] helpviewer_keywords: ["/P compiler option [C++]", "-P compiler option [C++]", "P compiler option [C++]", "output files, preprocessor", "preprocessing output files"] -ms.assetid: 123ee54f-8219-4a6f-9876-4227023d83fc --- # /P (Preprocess to a File) @@ -40,7 +39,7 @@ The **/P** option suppresses compilation. It does not produce an .obj file, even The following command line preprocesses `ADD.C`, preserves comments, adds `#line` directives, and writes the result to a file, `ADD.I`: -``` +```cmd CL /P /C ADD.C ``` diff --git a/docs/build/reference/specifying-the-pathname.md b/docs/build/reference/specifying-the-pathname.md index 98293ee2a43..55be6dfec95 100644 --- a/docs/build/reference/specifying-the-pathname.md +++ b/docs/build/reference/specifying-the-pathname.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Specifying the Pathname" title: "Specifying the Pathname" -ms.date: "11/04/2016" +description: "Learn more about: Specifying the Pathname" +ms.date: 11/04/2016 helpviewer_keywords: ["names [C++], compiler output files", "cl.exe compiler, output files", "output files, specifying pathnames"] -ms.assetid: 7a6595ce-3383-44ae-957a-466bfa29c343 --- # Specifying the Pathname @@ -24,7 +23,7 @@ Alternatively, the *pathname* argument can be a device name (AUX, CON, PRN, or N The following command line sends a mapfile to the printer: -``` +```cmd CL /FmPRN HELLO.CPP ``` diff --git a/docs/build/reference/yd-place-debug-information-in-object-file.md b/docs/build/reference/yd-place-debug-information-in-object-file.md index b3e9699bb7c..ced560abe33 100644 --- a/docs/build/reference/yd-place-debug-information-in-object-file.md +++ b/docs/build/reference/yd-place-debug-information-in-object-file.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: /Yd (Place Debug Information in Object File)" title: "/Yd (Place Debug Information in Object File)" -ms.date: "11/04/2016" +description: "Learn more about: /Yd (Place Debug Information in Object File)" +ms.date: 11/04/2016 f1_keywords: ["/yd"] helpviewer_keywords: ["/Yd compiler option [C++]", "-Yd compiler option [C++]", "debugging [C++], debug information files", "Yd compiler option [C++]"] -ms.assetid: c5a699fe-65ce-461e-964c-7f5eb2a8320a --- # /Yd (Place Debug Information in Object File) @@ -55,13 +54,13 @@ Suppose you have two base files, F.cpp and G.cpp, each containing these **#inclu The following command creates the precompiled header file ETC.pch and the object file F.obj: -``` +```cmd CL /YcETC.H /Z7 F.CPP ``` The object file F.obj includes type and symbol information for WINDOWS.h and ETC.h (and any other header files they include). Now you can use the precompiled header ETC.pch to compile the source file G.cpp: -``` +```cmd CL /YuETC.H /Z7 G.CPP ``` diff --git a/docs/error-messages/tool-errors/command-line-warning-d9027.md b/docs/error-messages/tool-errors/command-line-warning-d9027.md index a4eefa41805..a50befaedea 100644 --- a/docs/error-messages/tool-errors/command-line-warning-d9027.md +++ b/docs/error-messages/tool-errors/command-line-warning-d9027.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Command-Line Warning D9027" title: "Command-Line Warning D9027" -ms.date: "11/04/2016" +description: "Learn more about: Command-Line Warning D9027" +ms.date: 11/04/2016 f1_keywords: ["D9027"] helpviewer_keywords: ["D9027"] -ms.assetid: 2a29edc5-5649-48f2-9058-2057c747284c --- # Command-Line Warning D9027 @@ -14,12 +13,12 @@ CL.exe ignored the input source file. This warning can be caused by a space between the /Fo option and an output filename on a command line with the /c option. For example: -``` +```cmd cl /c /Fo output.obj input.c ``` Because there is a space between /Fo and `output.obj`, CL.exe takes `output.obj` as the name of the input file. To fix the problem, remove the space: -``` +```cmd cl /c /Fooutput.obj input.c ``` diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2011.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2011.md index aee174c7840..d19042b921a 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2011.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2011.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK2011" title: "Linker Tools Error LNK2011" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK2011" +ms.date: 11/04/2016 f1_keywords: ["LNK2011"] helpviewer_keywords: ["LNK2011"] -ms.assetid: 04991ef5-49d5-46c7-8eee-a9d1d3fc541e --- # Linker Tools Error LNK2011 @@ -14,7 +13,7 @@ If you use precompiled headers, LINK requires that all of the object files creat For example, if you compile a file called STUB.cpp to create a precompiled header for use with other source files, you must link with STUB.obj or you will get this error. In the following command lines, line one is used to create a precompiled header, COMMON.pch, which is used with PROG1.cpp and PROG2.cpp in lines two and three. The file STUB.cpp contains only `#include` lines (the same `#include` lines as in PROG1.cpp and PROG2.cpp) and is used only to generate precompiled headers. In the last line, STUB.obj must be linked in to avoid LNK2011. -``` +```cmd cl /c /Yccommon.h stub.cpp cl /c /Yucommon.h prog1.cpp cl /c /Yucommon.h prog2.cpp diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4105.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4105.md index eb82ea21e7c..260ed1245f6 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4105.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4105.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4105" title: "Linker Tools Warning LNK4105" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4105" +ms.date: 11/04/2016 f1_keywords: ["LNK4105"] helpviewer_keywords: ["LNK4105"] -ms.assetid: 6c7bebf4-4ea6-4533-a6ed-e563d43abbd7 --- # Linker Tools Warning LNK4105 @@ -16,7 +15,7 @@ If you do not need to override the existing environmental library settings, remo ## Example -``` +```cmd link /libpath:c:\filepath\lib bar.obj ``` From 8713c009c5e20544758f2232b6289dccdd5e149c Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 22 Aug 2025 17:50:05 +0000 Subject: [PATCH 1538/2255] fix syntax (#6055) --- docs/docfx.json | 174 ++++++++++++++++++++++++------------------------ 1 file changed, 87 insertions(+), 87 deletions(-) diff --git a/docs/docfx.json b/docs/docfx.json index 1dd4d169a49..23b40c4fd3a 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -160,100 +160,100 @@ "windows/**.md": "windows-development" }, "ms.update-cycle": { - "assembler/**.{md,yml}": "3650-days", - "attributes/**.{md,yml}": "3650-days", - "atl/**.{md,yml}": "3650-days", - "atl-mfc-shared/**.{md,yml}": "3650-days", - "build/**.{md,yml}": "1825-days", - "c-language/**.{md,yml}": "3650-days", - "c-runtime-library/**.{md,yml}": "3650-days", + "assembler/**/**.{md,yml}": "3650-days", + "attributes/**/**.{md,yml}": "3650-days", + "atl/**/**.{md,yml}": "3650-days", + "atl-mfc-shared/**/**.{md,yml}": "3650-days", + "build/**/**.{md,yml}": "1825-days", + "c-language/**/**.{md,yml}": "3650-days", + "c-runtime-library/**/**.{md,yml}": "3650-days", "cpp/**.md": "1095-days", - "cppcx/**.{md,yml}": "3650-days", - "cross-platform/**.{md,yml}": "1825-days", - "data/**.{md,yml}": "3650-days", - "dotnet/**.{md,yml}": "3650-days", - "embedded/**.{md,yml}": "3650-days", - "error-messages/**.{md,yml}": "3650-days", - "extensions/**.{md,yml}": "3650-days", - "intrinsics/**.{md,yml}": "3650-days", - "mfc/**.{md,yml}": "3650-days", - "parallel/**.{md,yml}": "3650-days", - "porting/**.{md,yml}": "1095-days", - "preprocessor/**.{md,yml}": "3650-days", - "safeint/**.{md,yml}": "3650-days", - "standard-library/**.{md,yml}": "3650-days", - "text/**.{md,yml}": "3650-days", - "windows/**.{md,yml}": "1825-days" + "cppcx/**/**.{md,yml}": "3650-days", + "cross-platform/**/**.{md,yml}": "1825-days", + "data/**/**.{md,yml}": "3650-days", + "dotnet/**/**.{md,yml}": "3650-days", + "embedded/**/**.{md,yml}": "3650-days", + "error-messages/**/**.{md,yml}": "3650-days", + "extensions/**/**.{md,yml}": "3650-days", + "intrinsics/**/**.{md,yml}": "3650-days", + "mfc/**/**.{md,yml}": "3650-days", + "parallel/**/**.{md,yml}": "3650-days", + "porting/**/**.{md,yml}": "1095-days", + "preprocessor/**/**.{md,yml}": "3650-days", + "safeint/**/**.{md,yml}": "3650-days", + "standard-library/**/**.{md,yml}": "3650-days", + "text/**/**.{md,yml}": "3650-days", + "windows/**/**.{md,yml}": "1825-days" }, "author": { "index.md": "tylermsft", - "assembler/**.{md,yml}": "tylermsft", - "attributes/**.{md,yml}": "tylermsft", - "atl/**.{md,yml}": "tylermsft", - "atl-mfc-shared/**.{md,yml}": "tylermsft", - "build/**.{md,yml}": "tylermsft", - "build-insights/**.{md,yml}": "tylermsft", - "c-language/**.{md,yml}": "tylermsft", - "c-runtime-library/**.{md,yml}": "tylermsft", - "cloud/**.{md,yml}": "tylermsft", - "code-quality/**.{md,yml}": "tylermsft", - "cpp/**.{md,yml}": "tylermsft", - "cppcx/**.{md,yml}": "tylermsft", - "cross-platform/**.{md,yml}": "tylermsft", - "data/**.{md,yml}": "tylermsft", - "dotnet/**.{md,yml}": "tylermsft", - "error-messages/**.{md,yml}": "tylermsft", - "extensions/**.{md,yml}": "tylermsft", - "get-started/**.{md,yml}": "tylermsft", - "ide/**.{md,yml}": "tylermsft", - "intrinsics/**.{md,yml}": "tylermsft", - "linux/**.{md,yml}": "tylermsft", - "mfc/**.{md,yml}": "tylermsft", - "overview/**.{md,yml}": "tylermsft", - "parallel/**.{md,yml}": "tylermsft", - "porting/**.{md,yml}": "tylermsft", - "preprocessor/**.{md,yml}": "tylermsft", - "safeint/**.{md,yml}": "tylermsft", - "sanitizers/**.{md,yml}": "tylermsft", - "security/**.{md,yml}": "tylermsft", - "standard-library/**.{md,yml}": "tylermsft", - "text/**.{md,yml}": "tylermsft", - "windows/**.{md,yml}": "tylermsft" + "assembler/**/**.{md,yml}": "tylermsft", + "attributes/**/**.{md,yml}": "tylermsft", + "atl/**/**.{md,yml}": "tylermsft", + "atl-mfc-shared/**/**.{md,yml}": "tylermsft", + "build/**/**.{md,yml}": "tylermsft", + "build-insights/**/**.{md,yml}": "tylermsft", + "c-language/**/**.{md,yml}": "tylermsft", + "c-runtime-library/**/**.{md,yml}": "tylermsft", + "cloud/**/**.{md,yml}": "tylermsft", + "code-quality/**/**.{md,yml}": "tylermsft", + "cpp/**/**.{md,yml}": "tylermsft", + "cppcx/**/**.{md,yml}": "tylermsft", + "cross-platform/**/**.{md,yml}": "tylermsft", + "data/**/**.{md,yml}": "tylermsft", + "dotnet/**/**.{md,yml}": "tylermsft", + "error-messages/**/**.{md,yml}": "tylermsft", + "extensions/**/**.{md,yml}": "tylermsft", + "get-started/**/**.{md,yml}": "tylermsft", + "ide/**/**.{md,yml}": "tylermsft", + "intrinsics/**/**.{md,yml}": "tylermsft", + "linux/**/**.{md,yml}": "tylermsft", + "mfc/**/**.{md,yml}": "tylermsft", + "overview/**/**.{md,yml}": "tylermsft", + "parallel/**/**.{md,yml}": "tylermsft", + "porting/**/**.{md,yml}": "tylermsft", + "preprocessor/**/**.{md,yml}": "tylermsft", + "safeint/**/**.{md,yml}": "tylermsft", + "sanitizers/**/**.{md,yml}": "tylermsft", + "security/**/**.{md,yml}": "tylermsft", + "standard-library/**/**.{md,yml}": "tylermsft", + "text/**/**.{md,yml}": "tylermsft", + "windows/**/**.{md,yml}": "tylermsft" }, "ms.author": { "index.md": "twhitney", - "assembler/**.{md,yml}": "twhitney", - "atl/**.{md,yml}": "twhitney", - "atl-mfc-shared/**.{md,yml}": "twhitney", - "attributes/**.{md,yml}": "twhitney", - "build/**.{md,yml}": "twhitney", - "build-insights/**.{md,yml}": "twhitney", - "c-language/**.{md,yml}": "twhitney", - "c-runtime-library/**.{md,yml}": "twhitney", - "cloud/**.{md,yml}": "twhitney", - "code-quality/**.{md,yml}": "twhitney", - "cpp/**.{md,yml}": "twhitney", - "cppcx/**.{md,yml}": "twhitney", - "cross-platform/**.{md,yml}": "twhitney", - "data/**.{md,yml}": "twhitney", - "dotnet/**.{md,yml}": "twhitney", - "error-messages/**.{md,yml}": "twhitney", - "extensions/**.{md,yml}": "twhitney", - "get-started/**.{md,yml}": "twhitney", - "ide/**.{md,yml}": "twhitney", - "intrinsics/**.{md,yml}": "twhitney", - "linux/**.{md,yml}": "twhitney", - "mfc/**.{md,yml}": "twhitney", - "overview/**.{md,yml}": "twhitney", - "parallel/**.{md,yml}": "twhitney", - "porting/**.{md,yml}": "twhitney", - "preprocessor/**.{md,yml}": "twhitney", - "safeint/**.{md,yml}": "twhitney", - "sanitizers/**.{md,yml}": "twhitney", - "security/**.{md,yml}": "twhitney", - "standard-library/**.{md,yml}": "twhitney", - "text/**.{md,yml}": "twhitney", - "windows/**.{md,yml}": "twhitney" + "assembler/**/**.{md,yml}": "twhitney", + "atl/**/**.{md,yml}": "twhitney", + "atl-mfc-shared/**/**.{md,yml}": "twhitney", + "attributes/**/**.{md,yml}": "twhitney", + "build/**/**.{md,yml}": "twhitney", + "build-insights/**/**.{md,yml}": "twhitney", + "c-language/**/**.{md,yml}": "twhitney", + "c-runtime-library/**/**.{md,yml}": "twhitney", + "cloud/**/**.{md,yml}": "twhitney", + "code-quality/**/**.{md,yml}": "twhitney", + "cpp/**/**.{md,yml}": "twhitney", + "cppcx/**/**.{md,yml}": "twhitney", + "cross-platform/**/**.{md,yml}": "twhitney", + "data/**/**.{md,yml}": "twhitney", + "dotnet/**/**.{md,yml}": "twhitney", + "error-messages/**/**.{md,yml}": "twhitney", + "extensions/**/**.{md,yml}": "twhitney", + "get-started/**/**.{md,yml}": "twhitney", + "ide/**/**.{md,yml}": "twhitney", + "intrinsics/**/**.{md,yml}": "twhitney", + "linux/**/**.{md,yml}": "twhitney", + "mfc/**/**.{md,yml}": "twhitney", + "overview/**/**.{md,yml}": "twhitney", + "parallel/**/**.{md,yml}": "twhitney", + "porting/**/**.{md,yml}": "twhitney", + "preprocessor/**/**.{md,yml}": "twhitney", + "safeint/**/**.{md,yml}": "twhitney", + "sanitizers/**/**.{md,yml}": "twhitney", + "security/**/**.{md,yml}": "twhitney", + "standard-library/**/**.{md,yml}": "twhitney", + "text/**/**.{md,yml}": "twhitney", + "windows/**/**.{md,yml}": "twhitney" } }, "template": [], From b963f1d07c0305fc9dd4922dd6219af7c70eaf40 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 22 Aug 2025 14:18:27 -0700 Subject: [PATCH 1539/2255] fix typos and remove bad example --- .../compiler-errors-1/compiler-error-c2274.md | 28 ++++--------------- .../compiler-errors-1/compiler-error-c2289.md | 13 +++++---- 2 files changed, 14 insertions(+), 27 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2274.md b/docs/error-messages/compiler-errors-1/compiler-error-c2274.md index 52cd5d4fcaf..1724a0006e3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2274.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2274.md @@ -1,32 +1,16 @@ --- -description: "Learn more about: Compiler Error C2274" title: "Compiler Error C2274" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2274" +ms.date: 11/04/2016 f1_keywords: ["C2274"] helpviewer_keywords: ["C2274"] -ms.assetid: 8e874903-f499-45ef-8291-f821eee4cc1c --- # Compiler Error C2274 -'type' : illegal as right side of '.' operator - -A type appears as the right operand of a member-access (.) operator. - -This error can be caused by trying to access a user-defined type conversion. Use the keyword **`operator`** between the period and `type`. +> 'type' : illegal as right side of '.' operator -The following sample generates C2286: +## Remarks -```cpp -// C2274.cpp -struct MyClass { - operator int() { - return 0; - } -}; +A type appears as the right operand of a member-access (.) operator. -int main() { - MyClass ClassName; - int i = ClassName.int(); // C2274 - int j = ClassName.operator int(); // OK -} -``` +This error can be caused by trying to access a user-defined type conversion. Use the keyword **`operator`** between the period and `type`. \ No newline at end of file diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2289.md b/docs/error-messages/compiler-errors-1/compiler-error-c2289.md index 485af601948..25fe25f0f2f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2289.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2289.md @@ -1,18 +1,21 @@ --- -description: "Learn more about: Compiler Error C2289" title: "Compiler Error C2289" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2289" +ms.date: 11/04/2016 f1_keywords: ["C2289"] helpviewer_keywords: ["C2289"] -ms.assetid: cb41a29e-1b06-47dc-bfce-8d73bd63a0df --- # Compiler Error C2289 -same type qualifier used more than once +> same type qualifier used more than once + +## Remarks A type declaration or definition uses a type qualifier (**`const`**, **`volatile`**, **`signed`**, or **`unsigned`**) more than once, causing an error under ANSI compatibility (**/Za**). -The following sample generates C2286: +## Example + +The following example generates C2289: ```cpp // C2289.cpp From 18f5fe84507c8006ee0f60cfb1aac8fc764fce3f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 23 Aug 2025 21:03:21 +0800 Subject: [PATCH 1540/2255] Add blockquotes for error messages in range [C3801, C3850] --- docs/error-messages/compiler-errors-2/compiler-error-c3803.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3804.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3805.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3807.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3809.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3812.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3813.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3815.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3816.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3817.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3818.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3821.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3824.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3825.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3828.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3830.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3831.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3832.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3833.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3834.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3836.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3838.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3839.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3842.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3846.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3848.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3849.md | 2 +- 27 files changed, 27 insertions(+), 27 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3803.md b/docs/error-messages/compiler-errors-2/compiler-error-c3803.md index af817ec77d1..875a2a7395f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3803.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3803.md @@ -8,7 +8,7 @@ ms.assetid: bad5fb9a-ed9a-4c15-96e7-cf06e200a50d --- # Compiler Error C3803 -'property': property has a type that is incompatible with one of its accessors 'accessor' +> 'property': property has a type that is incompatible with one of its accessors 'accessor' The type of a property defined with [property](../../cpp/property-cpp.md) does not match the return type for one of its accessor functions. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3804.md b/docs/error-messages/compiler-errors-2/compiler-error-c3804.md index 78038af3c8d..418c7663ee2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3804.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3804.md @@ -8,7 +8,7 @@ ms.assetid: 7c4cda28-ec96-4d04-937b-36dbd9944722 --- # Compiler Error C3804 -'property_accessor': the accessor methods for a property must either be all static or all non-static +> 'property_accessor': the accessor methods for a property must either be all static or all non-static When defining a non-trivial property, the accessor functions can be either static or instance, but not both. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3805.md b/docs/error-messages/compiler-errors-2/compiler-error-c3805.md index 405f04301ed..1de1a69cc01 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3805.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3805.md @@ -8,6 +8,6 @@ ms.assetid: 166bbc35-5488-46b4-8e4c-9cd26ee5644e --- # Compiler Error C3805 -'token' : unexpected token, expected either '}' or an identifier +> 'token' : unexpected token, expected either '}' or an identifier When defining a property, an invalid token was encountered. Remove the invalid token. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3807.md b/docs/error-messages/compiler-errors-2/compiler-error-c3807.md index 836ea5b2fe2..0190e1c8ccd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3807.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3807.md @@ -8,7 +8,7 @@ ms.assetid: 7e2b0aab-8c61-4e71-b9c1-fcaeb6a1b5ea --- # Compiler Error C3807 -'type' : a class with the ComImport attribute cannot derive from 'type2', only interface implementation is allowed +> 'type' : a class with the ComImport attribute cannot derive from 'type2', only interface implementation is allowed A type that derived from can only implement an interface. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3809.md b/docs/error-messages/compiler-errors-2/compiler-error-c3809.md index 33561ee925b..3ca0748c422 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3809.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3809.md @@ -8,7 +8,7 @@ ms.assetid: 37eca584-c20c-464e-8e45-a987214b7ce4 --- # Compiler Error C3809 -'class' : a managed or WinRT type cannot have any friend functions/classes/interfaces +> 'class' : a managed or WinRT type cannot have any friend functions/classes/interfaces Managed types and Windows Runtime types do not allow friends. To fix this error, do not declare friends inside managed or Windows Runtime types. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3812.md b/docs/error-messages/compiler-errors-2/compiler-error-c3812.md index 01948fe0827..811edf75765 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3812.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3812.md @@ -8,7 +8,7 @@ ms.assetid: 326ac706-9a5f-4851-b9d2-b90c64c75532 --- # Compiler Error C3812 -'property' must be the first token in a property declaration +> 'property' must be the first token in a property declaration When declaring a property, the `__property` keyword must be the first token on the line. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3813.md b/docs/error-messages/compiler-errors-2/compiler-error-c3813.md index 191a711ea7f..17fbbf6db22 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3813.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3813.md @@ -8,7 +8,7 @@ ms.assetid: ffdbc489-71bf-4cd6-988c-f824c9ab3ceb --- # Compiler Error C3813 -a property declaration can only appear within the definition of a managed or WinRT type +> a property declaration can only appear within the definition of a managed or WinRT type A [property](../../dotnet/how-to-use-properties-in-cpp-cli.md) can only be declared within a managed or Windows Runtime type. Native types do not support the **`property`** keyword. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3815.md b/docs/error-messages/compiler-errors-2/compiler-error-c3815.md index 5ba2bf28ee5..820719086c9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3815.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3815.md @@ -8,7 +8,7 @@ ms.assetid: c5a3b404-6341-4fd3-92af-152b404c4dde --- # Compiler Error C3815 -return type of method 'get_accessor' must match type of the last parameter of a setter +> return type of method 'get_accessor' must match type of the last parameter of a setter When declaring properties, the return value of the `get_accessor` method must match the last parameter in the declaration of the set accessor method. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3816.md b/docs/error-messages/compiler-errors-2/compiler-error-c3816.md index 555ed517ecc..d8220f09d56 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3816.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3816.md @@ -8,7 +8,7 @@ ms.assetid: 2e52cc7f-e31c-41a3-8d6f-9f5fab3648c0 --- # Compiler Error C3816 -'declaration' was previously declared or defined with a different managed or WinRTmodifier +> 'declaration' was previously declared or defined with a different managed or WinRTmodifier A forward declaration and an actual declaration require that there be no conflicts or inconsistencies in the declaration of attributes. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3817.md b/docs/error-messages/compiler-errors-2/compiler-error-c3817.md index 763d7fecb84..445593d98dd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3817.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3817.md @@ -8,7 +8,7 @@ ms.assetid: c6dbb57a-c65e-4040-8dd2-85bd9d4fd337 --- # Compiler Error C3817 -'declaration' : property can only be applied to a function +> 'declaration' : property can only be applied to a function The **`property`** keyword can only be a applied to a function definition. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3818.md b/docs/error-messages/compiler-errors-2/compiler-error-c3818.md index e89b0f982be..061521dfe68 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3818.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3818.md @@ -8,7 +8,7 @@ ms.assetid: f9502f6a-0690-4135-ab88-cc97cf490f5c --- # Compiler Error C3818 -array property declaration 'property1' shall not overload an index property 'property2' +> array property declaration 'property1' shall not overload an index property 'property2' An overload is not possible for properties when one is an indexer and the other is an array property. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3821.md b/docs/error-messages/compiler-errors-2/compiler-error-c3821.md index 40b92e5f159..1d3f560938a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3821.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3821.md @@ -8,7 +8,7 @@ ms.assetid: 2b327c7a-5faf-443c-ae82-944fae25b4df --- # Compiler Error C3821 -'function': managed type or function cannot be used in an unmanaged function +> 'function': managed type or function cannot be used in an unmanaged function Functions with inline assembly or [setjmp](../../c-runtime-library/reference/setjmp.md) cannot contain value types or managed classes. To fix this error, remove the inline assembly and `setjmp` or remove the managed objects. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3824.md b/docs/error-messages/compiler-errors-2/compiler-error-c3824.md index 9287340b195..ea9582511bd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3824.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3824.md @@ -8,7 +8,7 @@ ms.assetid: b6c6adf1-0a29-401c-a06e-616fd50d4c37 --- # Compiler Error C3824 -'member': this type cannot appear in this context (function parameter, return type, or a static member) +> 'member': this type cannot appear in this context (function parameter, return type, or a static member) Pinning pointers cannot be function parameters, return types, or declared **`static`**. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3825.md b/docs/error-messages/compiler-errors-2/compiler-error-c3825.md index 9b05b9a696c..e8084b58774 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3825.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3825.md @@ -8,7 +8,7 @@ ms.assetid: 18e204a1-f26e-42c6-8d74-2b49cc95f940 --- # Compiler Error C3825 -'class': a managed or WinRTclass can only support managed or WinRTevents +> 'class': a managed or WinRTclass can only support managed or WinRTevents Only .NET events are supported in managed classes. Only Windows Runtime events are supported in Windows Runtime classes. To fix this error in managed code, change type parameter of `event_source` and `event_receiver` from `native` to `managed`. Alternatively, remove the attribute. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3828.md b/docs/error-messages/compiler-errors-2/compiler-error-c3828.md index 42507113264..118743c6a19 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3828.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3828.md @@ -8,7 +8,7 @@ ms.assetid: 8d9cee75-9504-4bc8-88b6-2413618a3f45 --- # Compiler Error C3828 -'object type': placement arguments not allowed while creating instances of managed or WinRTclasses +> 'object type': placement arguments not allowed while creating instances of managed or WinRTclasses When creating an object of a managed type or Windows Runtime type, you cannot use the placement form of operator [ref new, gcnew](../../extensions/ref-new-gcnew-cpp-component-extensions.md) or [new](../../cpp/new-operator-cpp.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3830.md b/docs/error-messages/compiler-errors-2/compiler-error-c3830.md index 8ea57b4157b..a8e86bcc2b4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3830.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3830.md @@ -8,7 +8,7 @@ ms.assetid: c9798f88-5001-4067-9fb1-09957ddc6fa8 --- # Compiler Error C3830 -'type1': cannot inherit from 'type2', value types can only inherit from interface classes +> 'type1': cannot inherit from 'type2', value types can only inherit from interface classes A value type cannot inherit a base class. For more information, see [Classes and Structs](../../extensions/classes-and-structs-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3831.md b/docs/error-messages/compiler-errors-2/compiler-error-c3831.md index 60e02f58a61..9226a0a4238 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3831.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3831.md @@ -8,7 +8,7 @@ ms.assetid: a125d8dc-b75a-4ea0-b6c7-fe7b119dba25 --- # Compiler Error C3831 -'member': 'class' cannot have a pinned data member or a member function returning a pinning pointer +> 'member': 'class' cannot have a pinned data member or a member function returning a pinning pointer [pin_ptr (C++/CLI)](../../extensions/pin-ptr-cpp-cli.md) was used incorrectly. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3832.md b/docs/error-messages/compiler-errors-2/compiler-error-c3832.md index caeebc3ea94..ef5de607a6f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3832.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3832.md @@ -8,6 +8,6 @@ ms.assetid: 9a41df82-42e1-4908-958c-76cff9235de0 --- # Compiler Error C3832 -'type library': type library looks as if it was built for 32-bit pointers; please change the 'ptrsize' qualifier +> 'type library': type library looks as if it was built for 32-bit pointers; please change the 'ptrsize' qualifier Explicit information supplied with the `ptrsize` attribute of the [#import](../../preprocessor/hash-import-directive-cpp.md) directive did not agree with what the compiler found in the type library. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3833.md b/docs/error-messages/compiler-errors-2/compiler-error-c3833.md index a57735b84a7..e0d036b1f57 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3833.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3833.md @@ -8,7 +8,7 @@ ms.assetid: 8152be53-e01e-48cd-9eef-9de38723664c --- # Compiler Error C3833 -'type' : invalid target type for pointer_type +> 'type' : invalid target type for pointer_type An [interior_ptr](../../extensions/interior-ptr-cpp-cli.md) or [pin_ptr](../../extensions/pin-ptr-cpp-cli.md) was declared incorrectly. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3834.md b/docs/error-messages/compiler-errors-2/compiler-error-c3834.md index 957ff8062bb..c2ed9b24ee9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3834.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3834.md @@ -8,7 +8,7 @@ ms.assetid: 059e0dc4-300b-4e74-b6c2-41a57831fe2a --- # Compiler Error C3834 -illegal explicit cast to a pinning pointer; use a pinned local variable instead +> illegal explicit cast to a pinning pointer; use a pinned local variable instead Explicit casts to a pinned pointer are not allowed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3836.md b/docs/error-messages/compiler-errors-2/compiler-error-c3836.md index d033952fdc1..61fdbff8eaf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3836.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3836.md @@ -8,7 +8,7 @@ ms.assetid: 254f851b-7b7d-4c34-a740-fcf72f6a636a --- # Compiler Error C3836 -static constructor is not allowed to have a member initializer list +> static constructor is not allowed to have a member initializer list A managed class cannot have a static constructor that also has a member initialization list. Static class constructors are called by the common language runtime to do class initialization, initializing static data members. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3838.md b/docs/error-messages/compiler-errors-2/compiler-error-c3838.md index 88b0263bba7..88efc22895f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3838.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3838.md @@ -8,7 +8,7 @@ ms.assetid: d6f470c2-131a-4a8c-843a-254acd43da83 --- # Compiler Error C3838 -cannot explicitly inherit from 'type' +> cannot explicitly inherit from 'type' The specified `type` cannot act as a base class in any class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3839.md b/docs/error-messages/compiler-errors-2/compiler-error-c3839.md index 0979234a149..a206d720858 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3839.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3839.md @@ -8,7 +8,7 @@ ms.assetid: 0957faff-1e9f-439b-876b-85bd8d2c578d --- # Compiler Error C3839 -cannot change alignment in a managed or WinRT type +> cannot change alignment in a managed or WinRT type Alignment of variables in managed or Windows Runtime types is controlled by the CLR or Windows Runtime and cannot be modified with [align](../../cpp/align-cpp.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3842.md b/docs/error-messages/compiler-errors-2/compiler-error-c3842.md index 283392fcc7e..7954bf1ad00 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3842.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3842.md @@ -8,7 +8,7 @@ ms.assetid: 41a1a44a-c618-40a2-8d26-7da27d14095d --- # Compiler Error C3842 -'function': 'const' and 'volatile' qualifiers on member functions of WinRT or managed types are not supported +> 'function': 'const' and 'volatile' qualifiers on member functions of WinRT or managed types are not supported [const](../../cpp/const-cpp.md) and [volatile](../../cpp/volatile-cpp.md) are not supported on member functions of Windows Runtime or managed types. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3846.md b/docs/error-messages/compiler-errors-2/compiler-error-c3846.md index 8196ca04b3f..479923a806e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3846.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3846.md @@ -8,7 +8,7 @@ ms.assetid: c470f8a5-106b-4efb-b8dc-e1319e04130f --- # Compiler Error C3846 -'symbol' : cannot import symbol from 'assembly2': as 'symbol' has already been imported from another assembly 'assembly1' +> 'symbol' : cannot import symbol from 'assembly2': as 'symbol' has already been imported from another assembly 'assembly1' A symbol could not be imported from a referenced assembly because it was previously imported from a referenced assembly. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3848.md b/docs/error-messages/compiler-errors-2/compiler-error-c3848.md index c67ffd0065f..91ffb14e366 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3848.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3848.md @@ -8,7 +8,7 @@ ms.assetid: 32d3ccef-01ec-4f8b-bbff-fb9b1a76b4c4 --- # Compiler Error C3848 -expression having type 'type' would lose some const-volatile qualifiers in order to call 'function' +> expression having type 'type' would lose some const-volatile qualifiers in order to call 'function' A variable with a specified const-volatile type can only call member functions defined with same or greater const-volatile qualifications. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3849.md b/docs/error-messages/compiler-errors-2/compiler-error-c3849.md index 2945bd37e2b..cf36486df98 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3849.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3849.md @@ -8,7 +8,7 @@ ms.assetid: 5347140e-1a81-4841-98c0-b63d98264b64 --- # Compiler Error C3849 -function-style call on an expression of type 'type' would lose const and/or volatile qualifiers for all number available operator overloads +> function-style call on an expression of type 'type' would lose const and/or volatile qualifiers for all number available operator overloads A variable with a specified const-volatile type can only call member functions defined with same or greater const-volatile qualifications. From 31ce480d1fa50e548ab28a9809c6aa69ed624e66 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 23 Aug 2025 21:08:50 +0800 Subject: [PATCH 1541/2255] Add "Remarks" and "Example" headings for error references in range [C3801, C3850] --- docs/error-messages/compiler-errors-2/compiler-error-c3803.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3804.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3805.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3807.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3809.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3812.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3813.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3815.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3816.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3817.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3818.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3821.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3824.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3825.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3828.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3830.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3831.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3832.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3833.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3834.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3836.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3838.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3839.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3842.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3846.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3848.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3849.md | 4 ++++ 27 files changed, 72 insertions(+) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3803.md b/docs/error-messages/compiler-errors-2/compiler-error-c3803.md index 875a2a7395f..8a3b8a3e242 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3803.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3803.md @@ -10,8 +10,12 @@ ms.assetid: bad5fb9a-ed9a-4c15-96e7-cf06e200a50d > 'property': property has a type that is incompatible with one of its accessors 'accessor' +## Remarks + The type of a property defined with [property](../../cpp/property-cpp.md) does not match the return type for one of its accessor functions. +## Example + The following sample generates C3803: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3804.md b/docs/error-messages/compiler-errors-2/compiler-error-c3804.md index 418c7663ee2..41a89430c95 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3804.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3804.md @@ -10,6 +10,8 @@ ms.assetid: 7c4cda28-ec96-4d04-937b-36dbd9944722 > 'property_accessor': the accessor methods for a property must either be all static or all non-static +## Remarks + When defining a non-trivial property, the accessor functions can be either static or instance, but not both. See [property](../../extensions/property-cpp-component-extensions.md) for more information. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3805.md b/docs/error-messages/compiler-errors-2/compiler-error-c3805.md index 1de1a69cc01..8eb2796d8b3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3805.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3805.md @@ -10,4 +10,6 @@ ms.assetid: 166bbc35-5488-46b4-8e4c-9cd26ee5644e > 'token' : unexpected token, expected either '}' or an identifier +## Remarks + When defining a property, an invalid token was encountered. Remove the invalid token. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3807.md b/docs/error-messages/compiler-errors-2/compiler-error-c3807.md index 0190e1c8ccd..93c52b0b8ff 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3807.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3807.md @@ -10,6 +10,8 @@ ms.assetid: 7e2b0aab-8c61-4e71-b9c1-fcaeb6a1b5ea > 'type' : a class with the ComImport attribute cannot derive from 'type2', only interface implementation is allowed +## Remarks + A type that derived from can only implement an interface. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3809.md b/docs/error-messages/compiler-errors-2/compiler-error-c3809.md index 3ca0748c422..79998b39f2a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3809.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3809.md @@ -10,8 +10,12 @@ ms.assetid: 37eca584-c20c-464e-8e45-a987214b7ce4 > 'class' : a managed or WinRT type cannot have any friend functions/classes/interfaces +## Remarks + Managed types and Windows Runtime types do not allow friends. To fix this error, do not declare friends inside managed or Windows Runtime types. +## Example + The following sample generates C3809: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3812.md b/docs/error-messages/compiler-errors-2/compiler-error-c3812.md index 811edf75765..1ee374e370b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3812.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3812.md @@ -10,6 +10,8 @@ ms.assetid: 326ac706-9a5f-4851-b9d2-b90c64c75532 > 'property' must be the first token in a property declaration +## Remarks + When declaring a property, the `__property` keyword must be the first token on the line. C3812 is only reachable using the obsolete compiler option **/clr:oldSyntax**. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3813.md b/docs/error-messages/compiler-errors-2/compiler-error-c3813.md index 17fbbf6db22..73eb71c4e53 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3813.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3813.md @@ -10,6 +10,8 @@ ms.assetid: ffdbc489-71bf-4cd6-988c-f824c9ab3ceb > a property declaration can only appear within the definition of a managed or WinRT type +## Remarks + A [property](../../dotnet/how-to-use-properties-in-cpp-cli.md) can only be declared within a managed or Windows Runtime type. Native types do not support the **`property`** keyword. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3815.md b/docs/error-messages/compiler-errors-2/compiler-error-c3815.md index 820719086c9..cd52f38903d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3815.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3815.md @@ -10,6 +10,8 @@ ms.assetid: c5a3b404-6341-4fd3-92af-152b404c4dde > return type of method 'get_accessor' must match type of the last parameter of a setter +## Remarks + When declaring properties, the return value of the `get_accessor` method must match the last parameter in the declaration of the set accessor method. C3815 is only reachable using the obsolete compiler option **/clr:oldSyntax**. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3816.md b/docs/error-messages/compiler-errors-2/compiler-error-c3816.md index d8220f09d56..e4b23efc14a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3816.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3816.md @@ -10,8 +10,12 @@ ms.assetid: 2e52cc7f-e31c-41a3-8d6f-9f5fab3648c0 > 'declaration' was previously declared or defined with a different managed or WinRTmodifier +## Remarks + A forward declaration and an actual declaration require that there be no conflicts or inconsistencies in the declaration of attributes. +## Example + The following sample generates C3816 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3817.md b/docs/error-messages/compiler-errors-2/compiler-error-c3817.md index 445593d98dd..ceaad9df8bd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3817.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3817.md @@ -10,6 +10,8 @@ ms.assetid: c6dbb57a-c65e-4040-8dd2-85bd9d4fd337 > 'declaration' : property can only be applied to a function +## Remarks + The **`property`** keyword can only be a applied to a function definition. C3817 is only reachable using the obsolete compiler option **/clr:oldSyntax**. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3818.md b/docs/error-messages/compiler-errors-2/compiler-error-c3818.md index 061521dfe68..427c2ee58b2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3818.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3818.md @@ -10,6 +10,8 @@ ms.assetid: f9502f6a-0690-4135-ab88-cc97cf490f5c > array property declaration 'property1' shall not overload an index property 'property2' +## Remarks + An overload is not possible for properties when one is an indexer and the other is an array property. C3818 is only reachable using the obsolete compiler option **/clr:oldSyntax**. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3821.md b/docs/error-messages/compiler-errors-2/compiler-error-c3821.md index 1d3f560938a..d4ec0937932 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3821.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3821.md @@ -10,6 +10,8 @@ ms.assetid: 2b327c7a-5faf-443c-ae82-944fae25b4df > 'function': managed type or function cannot be used in an unmanaged function +## Remarks + Functions with inline assembly or [setjmp](../../c-runtime-library/reference/setjmp.md) cannot contain value types or managed classes. To fix this error, remove the inline assembly and `setjmp` or remove the managed objects. C3821 can also occur if you try to use automatic storage in a vararg function. For more information, see [Variable Argument Lists (...) (C++/CLI)](../../extensions/variable-argument-lists-dot-dot-dot-cpp-cli.md) and [C++ Stack Semantics for Reference Types](../../dotnet/cpp-stack-semantics-for-reference-types.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3824.md b/docs/error-messages/compiler-errors-2/compiler-error-c3824.md index ea9582511bd..0c1a8744c0b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3824.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3824.md @@ -10,6 +10,8 @@ ms.assetid: b6c6adf1-0a29-401c-a06e-616fd50d4c37 > 'member': this type cannot appear in this context (function parameter, return type, or a static member) +## Remarks + Pinning pointers cannot be function parameters, return types, or declared **`static`**. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3825.md b/docs/error-messages/compiler-errors-2/compiler-error-c3825.md index e8084b58774..4080d8c7e53 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3825.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3825.md @@ -10,6 +10,8 @@ ms.assetid: 18e204a1-f26e-42c6-8d74-2b49cc95f940 > 'class': a managed or WinRTclass can only support managed or WinRTevents +## Remarks + Only .NET events are supported in managed classes. Only Windows Runtime events are supported in Windows Runtime classes. To fix this error in managed code, change type parameter of `event_source` and `event_receiver` from `native` to `managed`. Alternatively, remove the attribute. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3828.md b/docs/error-messages/compiler-errors-2/compiler-error-c3828.md index 118743c6a19..4d6b752cb60 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3828.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3828.md @@ -10,8 +10,12 @@ ms.assetid: 8d9cee75-9504-4bc8-88b6-2413618a3f45 > 'object type': placement arguments not allowed while creating instances of managed or WinRTclasses +## Remarks + When creating an object of a managed type or Windows Runtime type, you cannot use the placement form of operator [ref new, gcnew](../../extensions/ref-new-gcnew-cpp-component-extensions.md) or [new](../../cpp/new-operator-cpp.md). +## Example + The following sample generates C3828 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3830.md b/docs/error-messages/compiler-errors-2/compiler-error-c3830.md index a8e86bcc2b4..155b0b5375f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3830.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3830.md @@ -10,6 +10,8 @@ ms.assetid: c9798f88-5001-4067-9fb1-09957ddc6fa8 > 'type1': cannot inherit from 'type2', value types can only inherit from interface classes +## Remarks + A value type cannot inherit a base class. For more information, see [Classes and Structs](../../extensions/classes-and-structs-cpp-component-extensions.md). ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3831.md b/docs/error-messages/compiler-errors-2/compiler-error-c3831.md index 9226a0a4238..5d2c9b545ff 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3831.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3831.md @@ -10,6 +10,8 @@ ms.assetid: a125d8dc-b75a-4ea0-b6c7-fe7b119dba25 > 'member': 'class' cannot have a pinned data member or a member function returning a pinning pointer +## Remarks + [pin_ptr (C++/CLI)](../../extensions/pin-ptr-cpp-cli.md) was used incorrectly. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3832.md b/docs/error-messages/compiler-errors-2/compiler-error-c3832.md index ef5de607a6f..bedb86d16ab 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3832.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3832.md @@ -10,4 +10,6 @@ ms.assetid: 9a41df82-42e1-4908-958c-76cff9235de0 > 'type library': type library looks as if it was built for 32-bit pointers; please change the 'ptrsize' qualifier +## Remarks + Explicit information supplied with the `ptrsize` attribute of the [#import](../../preprocessor/hash-import-directive-cpp.md) directive did not agree with what the compiler found in the type library. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3833.md b/docs/error-messages/compiler-errors-2/compiler-error-c3833.md index e0d036b1f57..b13d620479d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3833.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3833.md @@ -10,8 +10,12 @@ ms.assetid: 8152be53-e01e-48cd-9eef-9de38723664c > 'type' : invalid target type for pointer_type +## Remarks + An [interior_ptr](../../extensions/interior-ptr-cpp-cli.md) or [pin_ptr](../../extensions/pin-ptr-cpp-cli.md) was declared incorrectly. +## Examples + The following sample generates C3833: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3834.md b/docs/error-messages/compiler-errors-2/compiler-error-c3834.md index c2ed9b24ee9..e343e6d205f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3834.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3834.md @@ -10,6 +10,8 @@ ms.assetid: 059e0dc4-300b-4e74-b6c2-41a57831fe2a > illegal explicit cast to a pinning pointer; use a pinned local variable instead +## Remarks + Explicit casts to a pinned pointer are not allowed. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3836.md b/docs/error-messages/compiler-errors-2/compiler-error-c3836.md index 61fdbff8eaf..53e81e9d5d5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3836.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3836.md @@ -10,6 +10,8 @@ ms.assetid: 254f851b-7b7d-4c34-a740-fcf72f6a636a > static constructor is not allowed to have a member initializer list +## Remarks + A managed class cannot have a static constructor that also has a member initialization list. Static class constructors are called by the common language runtime to do class initialization, initializing static data members. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3838.md b/docs/error-messages/compiler-errors-2/compiler-error-c3838.md index 88efc22895f..76d976bd33e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3838.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3838.md @@ -10,6 +10,8 @@ ms.assetid: d6f470c2-131a-4a8c-843a-254acd43da83 > cannot explicitly inherit from 'type' +## Remarks + The specified `type` cannot act as a base class in any class. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3839.md b/docs/error-messages/compiler-errors-2/compiler-error-c3839.md index a206d720858..2e8d30e53e1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3839.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3839.md @@ -10,8 +10,12 @@ ms.assetid: 0957faff-1e9f-439b-876b-85bd8d2c578d > cannot change alignment in a managed or WinRT type +## Remarks + Alignment of variables in managed or Windows Runtime types is controlled by the CLR or Windows Runtime and cannot be modified with [align](../../cpp/align-cpp.md). +## Example + The following sample generates C3839: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3842.md b/docs/error-messages/compiler-errors-2/compiler-error-c3842.md index 7954bf1ad00..d3817b5e85e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3842.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3842.md @@ -10,8 +10,12 @@ ms.assetid: 41a1a44a-c618-40a2-8d26-7da27d14095d > 'function': 'const' and 'volatile' qualifiers on member functions of WinRT or managed types are not supported +## Remarks + [const](../../cpp/const-cpp.md) and [volatile](../../cpp/volatile-cpp.md) are not supported on member functions of Windows Runtime or managed types. +## Example + The following sample generates C3842: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3846.md b/docs/error-messages/compiler-errors-2/compiler-error-c3846.md index 479923a806e..1385b65f6da 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3846.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3846.md @@ -10,6 +10,8 @@ ms.assetid: c470f8a5-106b-4efb-b8dc-e1319e04130f > 'symbol' : cannot import symbol from 'assembly2': as 'symbol' has already been imported from another assembly 'assembly1' +## Remarks + A symbol could not be imported from a referenced assembly because it was previously imported from a referenced assembly. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3848.md b/docs/error-messages/compiler-errors-2/compiler-error-c3848.md index 91ffb14e366..fc483e0d74c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3848.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3848.md @@ -10,8 +10,12 @@ ms.assetid: 32d3ccef-01ec-4f8b-bbff-fb9b1a76b4c4 > expression having type 'type' would lose some const-volatile qualifiers in order to call 'function' +## Remarks + A variable with a specified const-volatile type can only call member functions defined with same or greater const-volatile qualifications. +## Example + The following samples generate C3848: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3849.md b/docs/error-messages/compiler-errors-2/compiler-error-c3849.md index cf36486df98..8d5c8926630 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3849.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3849.md @@ -10,10 +10,14 @@ ms.assetid: 5347140e-1a81-4841-98c0-b63d98264b64 > function-style call on an expression of type 'type' would lose const and/or volatile qualifiers for all number available operator overloads +## Remarks + A variable with a specified const-volatile type can only call member functions defined with same or greater const-volatile qualifications. To fix this error, provide an appropriate member function. You cannot execute a conversion on a const or volatile qualified object when the conversion causes loss of qualification. You can gain qualifiers but you cannot lose qualifiers in a conversion. +## Example + The following samples generate C3849: ```cpp From 5c69be181fce832d4452b087fb92f20e16d05a33 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 23 Aug 2025 21:10:33 +0800 Subject: [PATCH 1542/2255] Replace term "sample" with "example" for error references in range [C3801, C3850] --- docs/error-messages/compiler-errors-2/compiler-error-c3803.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3804.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3807.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3808.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3809.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3813.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3816.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3821.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c3824.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3825.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3828.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3830.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3831.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3833.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c3834.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3836.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3838.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3839.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3842.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3846.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3848.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3849.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3850.md | 2 +- 23 files changed, 25 insertions(+), 25 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3803.md b/docs/error-messages/compiler-errors-2/compiler-error-c3803.md index 8a3b8a3e242..1f13d62607b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3803.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3803.md @@ -16,7 +16,7 @@ The type of a property defined with [property](../../cpp/property-cpp.md) does n ## Example -The following sample generates C3803: +The following example generates C3803: ```cpp // C3803.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3804.md b/docs/error-messages/compiler-errors-2/compiler-error-c3804.md index 41a89430c95..e462fb25e74 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3804.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3804.md @@ -18,7 +18,7 @@ See [property](../../extensions/property-cpp-component-extensions.md) for more i ## Example -The following sample generates C3804. +The following example generates C3804. ```cpp // C3804.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3807.md b/docs/error-messages/compiler-errors-2/compiler-error-c3807.md index 93c52b0b8ff..9f923067654 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3807.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3807.md @@ -16,7 +16,7 @@ A type that derived from Date: Sat, 23 Aug 2025 21:14:57 +0800 Subject: [PATCH 1543/2255] Update metadata for error references in range [C3801, C3850] --- .../error-messages/compiler-errors-2/compiler-error-c3803.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3804.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3805.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3807.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3808.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3809.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3812.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3813.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3815.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3816.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3817.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3818.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3820.md | 1 - .../error-messages/compiler-errors-2/compiler-error-c3821.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3824.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3825.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3828.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3830.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3831.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3832.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3833.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3834.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3836.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3838.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3839.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3842.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3846.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3848.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3849.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3850.md | 5 ++--- 30 files changed, 58 insertions(+), 88 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3803.md b/docs/error-messages/compiler-errors-2/compiler-error-c3803.md index 1f13d62607b..367696019e8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3803.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3803.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3803" title: "Compiler Error C3803" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3803" +ms.date: 11/04/2016 f1_keywords: ["C3803"] helpviewer_keywords: ["C3803"] -ms.assetid: bad5fb9a-ed9a-4c15-96e7-cf06e200a50d --- # Compiler Error C3803 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3804.md b/docs/error-messages/compiler-errors-2/compiler-error-c3804.md index e462fb25e74..243706cab93 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3804.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3804.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3804" title: "Compiler Error C3804" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3804" +ms.date: 11/04/2016 f1_keywords: ["C3804"] helpviewer_keywords: ["C3804"] -ms.assetid: 7c4cda28-ec96-4d04-937b-36dbd9944722 --- # Compiler Error C3804 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3805.md b/docs/error-messages/compiler-errors-2/compiler-error-c3805.md index 8eb2796d8b3..b889e2d7e73 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3805.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3805.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3805" title: "Compiler Error C3805" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3805" +ms.date: 11/04/2016 f1_keywords: ["C3805"] helpviewer_keywords: ["C3805"] -ms.assetid: 166bbc35-5488-46b4-8e4c-9cd26ee5644e --- # Compiler Error C3805 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3807.md b/docs/error-messages/compiler-errors-2/compiler-error-c3807.md index 9f923067654..c951650c6d0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3807.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3807.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3807" title: "Compiler Error C3807" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3807" +ms.date: 11/04/2016 f1_keywords: ["C3807"] helpviewer_keywords: ["C3807"] -ms.assetid: 7e2b0aab-8c61-4e71-b9c1-fcaeb6a1b5ea --- # Compiler Error C3807 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3808.md b/docs/error-messages/compiler-errors-2/compiler-error-c3808.md index b82ca74638f..d55d364f37d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3808.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3808.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3808" title: "Compiler Error C3808" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3808" +ms.date: 11/04/2016 f1_keywords: ["C3808"] helpviewer_keywords: ["C3808"] -ms.assetid: 2ee8ac97-3ea4-417a-8710-be73a7f98cf4 --- # Compiler Error C3808 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3809.md b/docs/error-messages/compiler-errors-2/compiler-error-c3809.md index d70cbe9d8b5..90fdd8856ac 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3809.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3809.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3809" title: "Compiler Error C3809" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3809" +ms.date: 11/04/2016 f1_keywords: ["C3809"] helpviewer_keywords: ["C3809"] -ms.assetid: 37eca584-c20c-464e-8e45-a987214b7ce4 --- # Compiler Error C3809 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3812.md b/docs/error-messages/compiler-errors-2/compiler-error-c3812.md index 1ee374e370b..b2618d099ba 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3812.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3812.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3812" title: "Compiler Error C3812" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3812" +ms.date: 11/04/2016 f1_keywords: ["C3812"] helpviewer_keywords: ["C3812"] -ms.assetid: 326ac706-9a5f-4851-b9d2-b90c64c75532 --- # Compiler Error C3812 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3813.md b/docs/error-messages/compiler-errors-2/compiler-error-c3813.md index e5bdb7665cb..4f384bab29a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3813.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3813.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3813" title: "Compiler Error C3813" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3813" +ms.date: 11/04/2016 f1_keywords: ["C3813"] helpviewer_keywords: ["C3813"] -ms.assetid: ffdbc489-71bf-4cd6-988c-f824c9ab3ceb --- # Compiler Error C3813 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3815.md b/docs/error-messages/compiler-errors-2/compiler-error-c3815.md index cd52f38903d..b60ddbf7dd0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3815.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3815.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3815" title: "Compiler Error C3815" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3815" +ms.date: 11/04/2016 f1_keywords: ["C3815"] helpviewer_keywords: ["C3815"] -ms.assetid: c5a3b404-6341-4fd3-92af-152b404c4dde --- # Compiler Error C3815 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3816.md b/docs/error-messages/compiler-errors-2/compiler-error-c3816.md index 157e38792d2..e489ee5545d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3816.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3816.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3816" title: "Compiler Error C3816" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3816" +ms.date: 11/04/2016 f1_keywords: ["C3816"] helpviewer_keywords: ["C3816"] -ms.assetid: 2e52cc7f-e31c-41a3-8d6f-9f5fab3648c0 --- # Compiler Error C3816 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3817.md b/docs/error-messages/compiler-errors-2/compiler-error-c3817.md index ceaad9df8bd..2485dc8edf8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3817.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3817.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3817" title: "Compiler Error C3817" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3817" +ms.date: 11/04/2016 f1_keywords: ["C3817"] helpviewer_keywords: ["C3817"] -ms.assetid: c6dbb57a-c65e-4040-8dd2-85bd9d4fd337 --- # Compiler Error C3817 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3818.md b/docs/error-messages/compiler-errors-2/compiler-error-c3818.md index 427c2ee58b2..142477f6753 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3818.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3818.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3818" title: "Compiler Error C3818" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3818" +ms.date: 11/04/2016 f1_keywords: ["C3818"] helpviewer_keywords: ["C3818"] -ms.assetid: f9502f6a-0690-4135-ab88-cc97cf490f5c --- # Compiler Error C3818 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3820.md b/docs/error-messages/compiler-errors-2/compiler-error-c3820.md index f9398c914e6..31f296f9bcd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3820.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3820.md @@ -4,7 +4,6 @@ description: "Microsoft C/C++ compiler error C3820 causes and remedies." ms.date: 09/26/2020 f1_keywords: ["C3820"] helpviewer_keywords: ["C3820"] -ms.assetid: 98638838-068f-4a62-b8d5-1068368a0ff1 --- # Compiler Error C3820 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3821.md b/docs/error-messages/compiler-errors-2/compiler-error-c3821.md index baf9a8bba03..408630cab82 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3821.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3821.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3821" title: "Compiler Error C3821" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3821" +ms.date: 11/04/2016 f1_keywords: ["C3821"] helpviewer_keywords: ["C3821"] -ms.assetid: 2b327c7a-5faf-443c-ae82-944fae25b4df --- # Compiler Error C3821 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3824.md b/docs/error-messages/compiler-errors-2/compiler-error-c3824.md index 8c639de04f7..37daec6fadf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3824.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3824.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3824" title: "Compiler Error C3824" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3824" +ms.date: 11/04/2016 f1_keywords: ["C3824"] helpviewer_keywords: ["C3824"] -ms.assetid: b6c6adf1-0a29-401c-a06e-616fd50d4c37 --- # Compiler Error C3824 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3825.md b/docs/error-messages/compiler-errors-2/compiler-error-c3825.md index 9e6dad45b17..40293c4ae53 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3825.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3825.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3825" title: "Compiler Error C3825" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3825" +ms.date: 11/04/2016 f1_keywords: ["C3825"] helpviewer_keywords: ["C3825"] -ms.assetid: 18e204a1-f26e-42c6-8d74-2b49cc95f940 --- # Compiler Error C3825 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3828.md b/docs/error-messages/compiler-errors-2/compiler-error-c3828.md index 601d574dafe..9fe4e6f0102 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3828.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3828.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3828" title: "Compiler Error C3828" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3828" +ms.date: 11/04/2016 f1_keywords: ["C3828"] helpviewer_keywords: ["C3828"] -ms.assetid: 8d9cee75-9504-4bc8-88b6-2413618a3f45 --- # Compiler Error C3828 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3830.md b/docs/error-messages/compiler-errors-2/compiler-error-c3830.md index 937b2ac3259..cbcf4775975 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3830.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3830.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3830" title: "Compiler Error C3830" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3830" +ms.date: 11/04/2016 f1_keywords: ["C3830"] helpviewer_keywords: ["C3830"] -ms.assetid: c9798f88-5001-4067-9fb1-09957ddc6fa8 --- # Compiler Error C3830 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3831.md b/docs/error-messages/compiler-errors-2/compiler-error-c3831.md index 4d53433b406..2b861984944 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3831.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3831.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3831" title: "Compiler Error C3831" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3831" +ms.date: 11/04/2016 f1_keywords: ["C3831"] helpviewer_keywords: ["C3831"] -ms.assetid: a125d8dc-b75a-4ea0-b6c7-fe7b119dba25 --- # Compiler Error C3831 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3832.md b/docs/error-messages/compiler-errors-2/compiler-error-c3832.md index bedb86d16ab..e1e3bdfaa45 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3832.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3832.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3832" title: "Compiler Error C3832" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3832" +ms.date: 11/04/2016 f1_keywords: ["C3832"] helpviewer_keywords: ["C3832"] -ms.assetid: 9a41df82-42e1-4908-958c-76cff9235de0 --- # Compiler Error C3832 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3833.md b/docs/error-messages/compiler-errors-2/compiler-error-c3833.md index 0dc5a6681f1..b129c53c0af 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3833.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3833.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3833" title: "Compiler Error C3833" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3833" +ms.date: 11/04/2016 f1_keywords: ["C3833"] helpviewer_keywords: ["C3833"] -ms.assetid: 8152be53-e01e-48cd-9eef-9de38723664c --- # Compiler Error C3833 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3834.md b/docs/error-messages/compiler-errors-2/compiler-error-c3834.md index b8142020e88..f20bfc9b040 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3834.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3834.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3834" title: "Compiler Error C3834" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3834" +ms.date: 11/04/2016 f1_keywords: ["C3834"] helpviewer_keywords: ["C3834"] -ms.assetid: 059e0dc4-300b-4e74-b6c2-41a57831fe2a --- # Compiler Error C3834 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3836.md b/docs/error-messages/compiler-errors-2/compiler-error-c3836.md index 7b515d5f538..47bcc280d81 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3836.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3836.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3836" title: "Compiler Error C3836" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3836" +ms.date: 11/04/2016 f1_keywords: ["C3836"] helpviewer_keywords: ["C3836"] -ms.assetid: 254f851b-7b7d-4c34-a740-fcf72f6a636a --- # Compiler Error C3836 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3838.md b/docs/error-messages/compiler-errors-2/compiler-error-c3838.md index 99a7371d950..10518be7bfe 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3838.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3838.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3838" title: "Compiler Error C3838" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3838" +ms.date: 11/04/2016 f1_keywords: ["C3838"] helpviewer_keywords: ["C3838"] -ms.assetid: d6f470c2-131a-4a8c-843a-254acd43da83 --- # Compiler Error C3838 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3839.md b/docs/error-messages/compiler-errors-2/compiler-error-c3839.md index 6c7f5facbd4..6cc03dfe858 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3839.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3839.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3839" title: "Compiler Error C3839" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3839" +ms.date: 11/04/2016 f1_keywords: ["C3839"] helpviewer_keywords: ["C3839"] -ms.assetid: 0957faff-1e9f-439b-876b-85bd8d2c578d --- # Compiler Error C3839 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3842.md b/docs/error-messages/compiler-errors-2/compiler-error-c3842.md index 4985c2edbb1..5149f7f4d13 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3842.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3842.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3842" title: "Compiler Error C3842" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3842" +ms.date: 11/04/2016 f1_keywords: ["C3842"] helpviewer_keywords: ["C3842"] -ms.assetid: 41a1a44a-c618-40a2-8d26-7da27d14095d --- # Compiler Error C3842 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3846.md b/docs/error-messages/compiler-errors-2/compiler-error-c3846.md index 36a6041004f..4a9caf6f2d3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3846.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3846.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3846" title: "Compiler Error C3846" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3846" +ms.date: 11/04/2016 f1_keywords: ["C3846"] helpviewer_keywords: ["C3846"] -ms.assetid: c470f8a5-106b-4efb-b8dc-e1319e04130f --- # Compiler Error C3846 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3848.md b/docs/error-messages/compiler-errors-2/compiler-error-c3848.md index 790aca09cba..f9bd3b6ac87 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3848.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3848.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3848" title: "Compiler Error C3848" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3848" +ms.date: 11/04/2016 f1_keywords: ["C3848"] helpviewer_keywords: ["C3848"] -ms.assetid: 32d3ccef-01ec-4f8b-bbff-fb9b1a76b4c4 --- # Compiler Error C3848 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3849.md b/docs/error-messages/compiler-errors-2/compiler-error-c3849.md index 809a877a2f3..923c5269c4b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3849.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3849.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3849" title: "Compiler Error C3849" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3849" +ms.date: 11/04/2016 f1_keywords: ["C3849"] helpviewer_keywords: ["C3849"] -ms.assetid: 5347140e-1a81-4841-98c0-b63d98264b64 --- # Compiler Error C3849 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3850.md b/docs/error-messages/compiler-errors-2/compiler-error-c3850.md index 48ecc453c04..e5ae957dc8f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3850.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3850.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3850" title: "Compiler Error C3850" -ms.date: "09/05/2018" +description: "Learn more about: Compiler Error C3850" +ms.date: 09/05/2018 f1_keywords: ["C3850"] helpviewer_keywords: ["C3850"] -ms.assetid: 028f3a37-f3ad-4ebc-9168-3cdea47524d4 --- # Compiler Error C3850 From 5707f06c3c71b705960390e7808c03f583abc887 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 23 Aug 2025 21:46:52 +0800 Subject: [PATCH 1544/2255] Update error message in C2290 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2290.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2290.md b/docs/error-messages/compiler-errors-1/compiler-error-c2290.md index 5742c5e234c..8d37369ecfd 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2290.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2290.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2290"] --- # Compiler Error C2290 -> C++ asm syntax ignored. Use __asm. +> C++ 'asm' syntax ignored. Use __asm. ## Remarks From e2d64eaa5f89e9df52ae90514b65420bb33d59ab Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 23 Aug 2025 21:53:17 +0800 Subject: [PATCH 1545/2255] Augment remarks in C2290 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2290.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2290.md b/docs/error-messages/compiler-errors-1/compiler-error-c2290.md index 8d37369ecfd..935f49e3966 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2290.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2290.md @@ -11,4 +11,4 @@ helpviewer_keywords: ["C2290"] ## Remarks -The **`asm`** syntax is reserved for future use. +The **`asm`** syntax is reserved for future use, try [`__asm`](../../assembler/inline/asm.md) instead. For more information, see [Inline Assembler](../../assembler/inline/inline-assembler.md). From 5ad86f60a341a05619a2efed3165c0bc7e73b643 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 23 Aug 2025 22:01:09 +0800 Subject: [PATCH 1546/2255] Add example in C2290 error reference --- .../compiler-errors-1/compiler-error-c2290.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2290.md b/docs/error-messages/compiler-errors-1/compiler-error-c2290.md index 935f49e3966..123770e9765 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2290.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2290.md @@ -12,3 +12,18 @@ helpviewer_keywords: ["C2290"] ## Remarks The **`asm`** syntax is reserved for future use, try [`__asm`](../../assembler/inline/asm.md) instead. For more information, see [Inline Assembler](../../assembler/inline/inline-assembler.md). + +## Example + +The following example generates C2290: + +```cpp +// C2290.cpp +// processor: x86 + +int main() +{ + asm("nop"); // C2290 + __asm nop // OK +} +``` From b3e3f96bb27e544cb5fbb90b904f554badc5b984 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 23 Aug 2025 22:02:26 +0800 Subject: [PATCH 1547/2255] Update `ms.date` metadata in C2290 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2290.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2290.md b/docs/error-messages/compiler-errors-1/compiler-error-c2290.md index 123770e9765..66b814f4caf 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2290.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2290.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C2290" description: "Learn more about: Compiler Error C2290" -ms.date: 11/04/2016 +ms.date: 08/23/2025 f1_keywords: ["C2290"] helpviewer_keywords: ["C2290"] --- From 374f9a1352ec73c3c9f9bca8361e276d8eb851d2 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 23 Aug 2025 22:19:07 +0800 Subject: [PATCH 1548/2255] Add bunch of backticks in "iostreams Conventions" topic --- .../standard-library/iostreams-conventions.md | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/standard-library/iostreams-conventions.md b/docs/standard-library/iostreams-conventions.md index bfc1b389ddd..0eb67e522b6 100644 --- a/docs/standard-library/iostreams-conventions.md +++ b/docs/standard-library/iostreams-conventions.md @@ -9,25 +9,25 @@ ms.assetid: 9fe5ded0-37a1-48d1-9671-c81ffc4760ad The iostreams headers support conversions between text and encoded forms, and input and output to external files: -[\](../standard-library/fstream.md)\ -[\](../standard-library/iomanip.md)\ -[\](../standard-library/ios.md)\ -[\](../standard-library/iosfwd.md)\ -[\](../standard-library/iostream.md)\ -[\](../standard-library/istream.md)\ -[\](../standard-library/ostream.md)\ -[\](../standard-library/sstream.md)\ -[\](../standard-library/streambuf.md)\ -[\](../standard-library/strstream.md) +[``](../standard-library/fstream.md)\ +[``](../standard-library/iomanip.md)\ +[``](../standard-library/ios.md)\ +[``](../standard-library/iosfwd.md)\ +[``](../standard-library/iostream.md)\ +[``](../standard-library/istream.md)\ +[``](../standard-library/ostream.md)\ +[``](../standard-library/sstream.md)\ +[``](../standard-library/streambuf.md)\ +[``](../standard-library/strstream.md) -The simplest use of iostreams requires only that you include the header [\](../standard-library/iostream.md). You can then extract values from [cin](../standard-library/iostream.md#cin) or [wcin](../standard-library/iostream.md#wcin) to read the standard input. The rules for doing so are outlined in the description of the class [basic_istream Class](../standard-library/basic-istream-class.md). You can also insert values to [cout](../standard-library/iostream.md#cout) or [wcout](../standard-library/iostream.md#wcout) to write the standard output. The rules for doing so are outlined in the description of the class [basic_ostream Class](../standard-library/basic-ostream-class.md). Format control common to both extractors and insertors is managed by the class [basic_ios Class](../standard-library/basic-ios-class.md). Manipulating this format information in the guise of extracting and inserting objects is the province of several manipulators. +The simplest use of iostreams requires only that you include the header [``](../standard-library/iostream.md). You can then extract values from [`cin`](../standard-library/iostream.md#cin) or [`wcin`](../standard-library/iostream.md#wcin) to read the standard input. The rules for doing so are outlined in the description of the class [`basic_istream` Class](../standard-library/basic-istream-class.md). You can also insert values to [`cout`](../standard-library/iostream.md#cout) or [`wcout`](../standard-library/iostream.md#wcout) to write the standard output. The rules for doing so are outlined in the description of the class [`basic_ostream` Class](../standard-library/basic-ostream-class.md). Format control common to both extractors and insertors is managed by the class [`basic_ios` Class](../standard-library/basic-ios-class.md). Manipulating this format information in the guise of extracting and inserting objects is the province of several manipulators. -You can perform the same iostreams operations on files that you open by name, using the classes declared in [\](../standard-library/fstream.md). To convert between iostreams and objects of class [basic_string Class](../standard-library/basic-string-class.md), use the classes declared in [\](../standard-library/sstream.md). To do the same with C strings, use the classes declared in [\](../standard-library/strstream.md). +You can perform the same iostreams operations on files that you open by name, using the classes declared in [``](../standard-library/fstream.md). To convert between iostreams and objects of class [`basic_string` Class](../standard-library/basic-string-class.md), use the classes declared in [``](../standard-library/sstream.md). To do the same with C strings, use the classes declared in [``](../standard-library/strstream.md). The remaining headers provide support services, typically of direct interest to only the most advanced users of the iostreams classes. ## See also [C++ Standard Library Overview](../standard-library/cpp-standard-library-overview.md)\ -[iostream Programming](../standard-library/iostream-programming.md)\ +[`iostream` Programming](../standard-library/iostream-programming.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) From c2f9319a696805b1f4991ef5bfacd3468b93cba1 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 23 Aug 2025 22:24:55 +0800 Subject: [PATCH 1549/2255] Simplify redundant relative links in "iostreams Conventions" topic --- .../standard-library/iostreams-conventions.md | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/standard-library/iostreams-conventions.md b/docs/standard-library/iostreams-conventions.md index 0eb67e522b6..2bf6e1f6029 100644 --- a/docs/standard-library/iostreams-conventions.md +++ b/docs/standard-library/iostreams-conventions.md @@ -9,25 +9,25 @@ ms.assetid: 9fe5ded0-37a1-48d1-9671-c81ffc4760ad The iostreams headers support conversions between text and encoded forms, and input and output to external files: -[``](../standard-library/fstream.md)\ -[``](../standard-library/iomanip.md)\ -[``](../standard-library/ios.md)\ -[``](../standard-library/iosfwd.md)\ -[``](../standard-library/iostream.md)\ -[``](../standard-library/istream.md)\ -[``](../standard-library/ostream.md)\ -[``](../standard-library/sstream.md)\ -[``](../standard-library/streambuf.md)\ -[``](../standard-library/strstream.md) +[``](fstream.md)\ +[``](iomanip.md)\ +[``](ios.md)\ +[``](iosfwd.md)\ +[``](iostream.md)\ +[``](istream.md)\ +[``](ostream.md)\ +[``](sstream.md)\ +[``](streambuf.md)\ +[``](strstream.md) -The simplest use of iostreams requires only that you include the header [``](../standard-library/iostream.md). You can then extract values from [`cin`](../standard-library/iostream.md#cin) or [`wcin`](../standard-library/iostream.md#wcin) to read the standard input. The rules for doing so are outlined in the description of the class [`basic_istream` Class](../standard-library/basic-istream-class.md). You can also insert values to [`cout`](../standard-library/iostream.md#cout) or [`wcout`](../standard-library/iostream.md#wcout) to write the standard output. The rules for doing so are outlined in the description of the class [`basic_ostream` Class](../standard-library/basic-ostream-class.md). Format control common to both extractors and insertors is managed by the class [`basic_ios` Class](../standard-library/basic-ios-class.md). Manipulating this format information in the guise of extracting and inserting objects is the province of several manipulators. +The simplest use of iostreams requires only that you include the header [``](iostream.md). You can then extract values from [`cin`](iostream.md#cin) or [`wcin`](iostream.md#wcin) to read the standard input. The rules for doing so are outlined in the description of the class [`basic_istream` Class](basic-istream-class.md). You can also insert values to [`cout`](iostream.md#cout) or [`wcout`](iostream.md#wcout) to write the standard output. The rules for doing so are outlined in the description of the class [`basic_ostream` Class](basic-ostream-class.md). Format control common to both extractors and insertors is managed by the class [`basic_ios` Class](basic-ios-class.md). Manipulating this format information in the guise of extracting and inserting objects is the province of several manipulators. -You can perform the same iostreams operations on files that you open by name, using the classes declared in [``](../standard-library/fstream.md). To convert between iostreams and objects of class [`basic_string` Class](../standard-library/basic-string-class.md), use the classes declared in [``](../standard-library/sstream.md). To do the same with C strings, use the classes declared in [``](../standard-library/strstream.md). +You can perform the same iostreams operations on files that you open by name, using the classes declared in [``](fstream.md). To convert between iostreams and objects of class [`basic_string` Class](basic-string-class.md), use the classes declared in [``](sstream.md). To do the same with C strings, use the classes declared in [``](strstream.md). The remaining headers provide support services, typically of direct interest to only the most advanced users of the iostreams classes. ## See also -[C++ Standard Library Overview](../standard-library/cpp-standard-library-overview.md)\ -[`iostream` Programming](../standard-library/iostream-programming.md)\ -[Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) +[C++ Standard Library Overview](cpp-standard-library-overview.md)\ +[`iostream` Programming](iostream-programming.md)\ +[Thread Safety in the C++ Standard Library](thread-safety-in-the-cpp-standard-library.md) From dbfcc8f356c39986a756d0b53f0a65a4e7e13b6f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 23 Aug 2025 22:27:11 +0800 Subject: [PATCH 1550/2255] Remove duplicate "class" and convert "Class" to lowercase in "iostreams Conventions" topic --- docs/standard-library/iostreams-conventions.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/standard-library/iostreams-conventions.md b/docs/standard-library/iostreams-conventions.md index 2bf6e1f6029..a362c2a0a01 100644 --- a/docs/standard-library/iostreams-conventions.md +++ b/docs/standard-library/iostreams-conventions.md @@ -20,9 +20,9 @@ The iostreams headers support conversions between text and encoded forms, and in [``](streambuf.md)\ [``](strstream.md) -The simplest use of iostreams requires only that you include the header [``](iostream.md). You can then extract values from [`cin`](iostream.md#cin) or [`wcin`](iostream.md#wcin) to read the standard input. The rules for doing so are outlined in the description of the class [`basic_istream` Class](basic-istream-class.md). You can also insert values to [`cout`](iostream.md#cout) or [`wcout`](iostream.md#wcout) to write the standard output. The rules for doing so are outlined in the description of the class [`basic_ostream` Class](basic-ostream-class.md). Format control common to both extractors and insertors is managed by the class [`basic_ios` Class](basic-ios-class.md). Manipulating this format information in the guise of extracting and inserting objects is the province of several manipulators. +The simplest use of iostreams requires only that you include the header [``](iostream.md). You can then extract values from [`cin`](iostream.md#cin) or [`wcin`](iostream.md#wcin) to read the standard input. The rules for doing so are outlined in the description of the [`basic_istream` class](basic-istream-class.md). You can also insert values to [`cout`](iostream.md#cout) or [`wcout`](iostream.md#wcout) to write the standard output. The rules for doing so are outlined in the description of the [`basic_ostream` class](basic-ostream-class.md). Format control common to both extractors and insertors is managed by the [`basic_ios` class](basic-ios-class.md). Manipulating this format information in the guise of extracting and inserting objects is the province of several manipulators. -You can perform the same iostreams operations on files that you open by name, using the classes declared in [``](fstream.md). To convert between iostreams and objects of class [`basic_string` Class](basic-string-class.md), use the classes declared in [``](sstream.md). To do the same with C strings, use the classes declared in [``](strstream.md). +You can perform the same iostreams operations on files that you open by name, using the classes declared in [``](fstream.md). To convert between iostreams and objects of [`basic_string` class](basic-string-class.md), use the classes declared in [``](sstream.md). To do the same with C strings, use the classes declared in [``](strstream.md). The remaining headers provide support services, typically of direct interest to only the most advanced users of the iostreams classes. From 57ae987edb6c0b74cfbcc82240e287e17450df0a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 23 Aug 2025 22:27:41 +0800 Subject: [PATCH 1551/2255] Update metadata in "iostreams Conventions" topic --- docs/standard-library/iostreams-conventions.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/standard-library/iostreams-conventions.md b/docs/standard-library/iostreams-conventions.md index a362c2a0a01..33f3588d273 100644 --- a/docs/standard-library/iostreams-conventions.md +++ b/docs/standard-library/iostreams-conventions.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: iostreams Conventions" title: "iostreams Conventions" -ms.date: "11/04/2016" +description: "Learn more about: iostreams Conventions" +ms.date: 11/04/2016 helpviewer_keywords: ["iostream header", "C++ Standard Library, iostreams"] -ms.assetid: 9fe5ded0-37a1-48d1-9671-c81ffc4760ad --- # iostreams Conventions From 0e4f92d45e44aedd84d430c99c9cd4aa903db867 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 23 Aug 2025 22:36:50 +0800 Subject: [PATCH 1552/2255] Add blockquotes for error messages in range [C3851, C3890] --- docs/error-messages/compiler-errors-2/compiler-error-c3852.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3853.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3854.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3855.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3856.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3857.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3858.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3860.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3865.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3866.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3867.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3868.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3869.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3872.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3873.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3874.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3880.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3886.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3887.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3888.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3890.md | 2 +- 21 files changed, 21 insertions(+), 21 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3852.md b/docs/error-messages/compiler-errors-2/compiler-error-c3852.md index af2bf00c9e5..f42c36ef6ce 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3852.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3852.md @@ -8,7 +8,7 @@ ms.assetid: 194e5c5e-0dfb-414e-86db-791c11eb610c --- # Compiler Error C3852 -'member' having type 'type': aggregate initialization could not initialize this member +> 'member' having type 'type': aggregate initialization could not initialize this member An attempt was made to assign a default initialization as part of an aggregate initialization to a data member that cannot receive a default initialization in an aggregate initialization. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3853.md b/docs/error-messages/compiler-errors-2/compiler-error-c3853.md index cc8cc07302f..59b458d988f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3853.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3853.md @@ -8,7 +8,7 @@ ms.assetid: 5b71805d-52b4-44ec-80ae-37c68d876f6a --- # Compiler Error C3853 -'=': re-initializing a reference or assignment through a reference-to-function is illegal +> '=': re-initializing a reference or assignment through a reference-to-function is illegal Cannot assign to a reference through a function because functions are not lvalues. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3854.md b/docs/error-messages/compiler-errors-2/compiler-error-c3854.md index 5726a0af135..6e226df550d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3854.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3854.md @@ -8,7 +8,7 @@ ms.assetid: 32a9ead0-c6c7-485a-8802-c7b1fe921d3a --- # Compiler Error C3854 -expression to left of '=' evaluates to a function. Cannot assign to a function (a function is not an l-value) +> expression to left of '=' evaluates to a function. Cannot assign to a function (a function is not an l-value) A reference cannot be reinitialized. Dereferencing a reference to a function yields a function, which is an rvalue, to which you cannot assign. Therefore, you cannot assign through a reference to a function. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3855.md b/docs/error-messages/compiler-errors-2/compiler-error-c3855.md index 94133ecbfa7..d0e6e4068c8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3855.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3855.md @@ -8,7 +8,7 @@ ms.assetid: ed90f8c0-4154-4243-b066-493913df5727 --- # Compiler Error C3855 -'class': type parameter 'param' is incompatible with the declaration +> 'class': type parameter 'param' is incompatible with the declaration The compiler found nontype template or generic parameters with different names. This can occur when a specified template parameter in the definition of a template specialization is incompatible with its declaration. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3856.md b/docs/error-messages/compiler-errors-2/compiler-error-c3856.md index 8ce44778f3f..cb09c2739fc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3856.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3856.md @@ -8,7 +8,7 @@ ms.assetid: 242d9322-c325-4f20-be58-b2be6da56d60 --- # Compiler Error C3856 -'type': class is not a class type +> 'type': class is not a class type The most common cause for this error is when there are more generic or template parameter lists at the point of definition than there were at the point of declaration. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3857.md b/docs/error-messages/compiler-errors-2/compiler-error-c3857.md index f1696e055f2..1bb21cef8ae 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3857.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3857.md @@ -8,7 +8,7 @@ ms.assetid: 9f746d1e-9708-4945-bc29-3150d5371d3c --- # Compiler Error C3857 -'type': multiple type parameter lists are not allowed +> 'type': multiple type parameter lists are not allowed More than one template or generic was specified for the same type, which is not allowed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3858.md b/docs/error-messages/compiler-errors-2/compiler-error-c3858.md index 00ac4027fa4..b0457cc4bae 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3858.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3858.md @@ -8,7 +8,7 @@ ms.assetid: 46e178d5-a55f-4ac6-a9dc-561fbcba5c1f --- # Compiler Error C3858 -'type': cannot be redeclared in current scope +> 'type': cannot be redeclared in current scope The type cannot be declared twice in the same scope. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3860.md b/docs/error-messages/compiler-errors-2/compiler-error-c3860.md index 173f2736ae8..e384bb7ee2c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3860.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3860.md @@ -8,7 +8,7 @@ ms.assetid: 1fb5110d-594e-4f1c-8773-888233af1313 --- # Compiler Error C3860 -type argument list following class type name must list parameters in the order used in type parameter list +> type argument list following class type name must list parameters in the order used in type parameter list A generic or template argument list was ill formed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3865.md b/docs/error-messages/compiler-errors-2/compiler-error-c3865.md index 587ea10aba1..415b51f2808 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3865.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3865.md @@ -8,7 +8,7 @@ ms.assetid: 9bc62bb0-4fb8-4856-a5cf-c7cb4029a596 --- # Compiler Error C3865 -'calling_convention' : can only be used on native member functions +> 'calling_convention' : can only be used on native member functions A calling convention was used on a function that was either a global function or on a managed member function. The calling convention can only be used on a native (not managed) member function. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3866.md b/docs/error-messages/compiler-errors-2/compiler-error-c3866.md index 71d634a4b5e..66483934255 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3866.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3866.md @@ -8,7 +8,7 @@ ms.assetid: 685870af-2440-4cdf-a6cb-284a5b96ef9d --- # Compiler Error C3866 -function call missing argument list +> function call missing argument list Inside a nonstatic member function, a destructor or finalizer call did not have an argument list. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3867.md b/docs/error-messages/compiler-errors-2/compiler-error-c3867.md index db31e6aef73..dff2bf406a6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3867.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3867.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C3867"] --- # Compiler Error C3867 -'func': function call missing argument list; use '&func' to create a pointer to member +> 'func': function call missing argument list; use '&func' to create a pointer to member You tried to take the address of a member function without qualifying the member function with its class name and the address-of operator. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3868.md b/docs/error-messages/compiler-errors-2/compiler-error-c3868.md index d3eb1d2f2e4..162e820ff53 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3868.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3868.md @@ -8,7 +8,7 @@ ms.assetid: f0e45c2a-2149-4885-a03b-0d230069f03a --- # Compiler Error C3868 -'type': constraints on generic parameter 'parameter' differ from those on the declaration +> 'type': constraints on generic parameter 'parameter' differ from those on the declaration Multiple declarations must have the same generic constraints. For more information, see [Generics](../../extensions/generics-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3869.md b/docs/error-messages/compiler-errors-2/compiler-error-c3869.md index 6df2c9c037f..9cd9f1d5ee3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3869.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3869.md @@ -8,7 +8,7 @@ ms.assetid: 85b2ad72-95c1-4ed6-9761-6ef66c3802b7 --- # Compiler Error C3869 -gcnew constraint is missing empty parameter list '()' +> gcnew constraint is missing empty parameter list '()' The **`gcnew`** special constraint was specified without the empty parameter list. See [Constraints on Generic Type Parameters (C++/CLI)](../../extensions/constraints-on-generic-type-parameters-cpp-cli.md) for more information. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3872.md b/docs/error-messages/compiler-errors-2/compiler-error-c3872.md index 65ac7afb1f6..1a716c93c66 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3872.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3872.md @@ -8,7 +8,7 @@ ms.assetid: 519e95be-5641-40cc-894c-da4819506604 --- # Compiler Error C3872 -'char': this character is not allowed in an identifier +> 'char': this character is not allowed in an identifier The C++ compiler follows the C++11 standard on characters allowed in an identifier. Only certain ranges of characters and universal character names are allowed in an identifier. Additional restrictions apply to the initial character of an identifier. For more information and a list of allowed characters and universal character name ranges, see [Identifiers](../../cpp/identifiers-cpp.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3873.md b/docs/error-messages/compiler-errors-2/compiler-error-c3873.md index 90f0de0b051..3a95a6e9aa1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3873.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3873.md @@ -8,7 +8,7 @@ ms.assetid: e68fd3be-2391-492b-ac3f-d2428901b2e9 --- # Compiler Error C3873 -'char': this character is not allowed as a first character of an identifier +> 'char': this character is not allowed as a first character of an identifier The C++ compiler follows the C++11 standard on characters allowed in an identifier. Only certain ranges of characters and universal character names are allowed in an identifier. Additional restrictions apply to the initial character of an identifier. For more information and a list of allowed characters and universal character name ranges, see [Identifiers](../../cpp/identifiers-cpp.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3874.md b/docs/error-messages/compiler-errors-2/compiler-error-c3874.md index 596ca9d98d1..e9a72c4b376 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3874.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3874.md @@ -8,7 +8,7 @@ ms.assetid: fd55fc05-69a7-4237-b3b7-dca1d5400b4f --- # Compiler Error C3874 -return type of 'function' should be 'int' instead of 'type' +> return type of 'function' should be 'int' instead of 'type' A function does not have the return type that was expected by the compiler. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3880.md b/docs/error-messages/compiler-errors-2/compiler-error-c3880.md index 6a0ac4d45c6..6502030c5cb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3880.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3880.md @@ -8,7 +8,7 @@ ms.assetid: b0e05d1e-32d0-4034-9246-f37d23573ea9 --- # Compiler Error C3880 -'var' : cannot be a literal data member +> 'var' : cannot be a literal data member The type of a [literal](../../extensions/literal-cpp-component-extensions.md) attribute must be, or compile-time convertible to, one of the following types: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3886.md b/docs/error-messages/compiler-errors-2/compiler-error-c3886.md index e1973ceb117..9b832c51420 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3886.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3886.md @@ -8,7 +8,7 @@ ms.assetid: 485f6c12-cc1b-4146-9034-409a0a5e615e --- # Compiler Error C3886 -'var' : a literal data member must be initialized +> 'var' : a literal data member must be initialized A [literal](../../extensions/literal-cpp-component-extensions.md) variable must be initialized when it is declaraed. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3887.md b/docs/error-messages/compiler-errors-2/compiler-error-c3887.md index 65c16cb61d9..38523d6a0ec 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3887.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3887.md @@ -8,7 +8,7 @@ ms.assetid: a7e82426-ef99-437b-9562-2822004e18fe --- # Compiler Error C3887 -'var' : the initializer for a literal data member must be a constant expression +> 'var' : the initializer for a literal data member must be a constant expression A [literal](../../extensions/literal-cpp-component-extensions.md) data member can only be initialized with a constant expresion. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3888.md b/docs/error-messages/compiler-errors-2/compiler-error-c3888.md index b7a9a19d216..e6080f5b8f9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3888.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3888.md @@ -8,7 +8,7 @@ ms.assetid: 40820812-79c5-4dcd-a19d-b4164d25fc8a --- # Compiler Error C3888 -'name' : the const expression associated with this literal data member is not supported by C++/CLI +> 'name' : the const expression associated with this literal data member is not supported by C++/CLI The *name* data member that is declared with the [literal](../../extensions/literal-cpp-component-extensions.md) keyword is initialized with a value the compiler does not support. The compiler supports only constant integral, enum, or string types. The likely cause for the **C3888** error is that the data member is initialized with a byte array. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3890.md b/docs/error-messages/compiler-errors-2/compiler-error-c3890.md index 22c57edd6cd..a433dd204f0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3890.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3890.md @@ -8,7 +8,7 @@ ms.assetid: 2f22c2fd-c14e-45e1-b936-b739ffc0b135 --- # Compiler Error C3890 -'var' : you cannot take the address of a literal data member +> 'var' : you cannot take the address of a literal data member A literal data member exists on the garbage-collected heap. An object on the garbage-collected heap can be moved, so taking the address is not useful. From 24cb427093b27cb61af6353cc47d8586444ebdc4 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 23 Aug 2025 22:42:54 +0800 Subject: [PATCH 1553/2255] Add "Remarks" and "Example" headings for error references in range [C3851, C3890] --- docs/error-messages/compiler-errors-2/compiler-error-c3852.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3853.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3854.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3855.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3856.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3857.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3858.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3859.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3860.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3861.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c3865.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3866.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3867.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3868.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3869.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3872.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3873.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3874.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3880.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3883.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3886.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3887.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3888.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3890.md | 4 ++++ 24 files changed, 84 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3852.md b/docs/error-messages/compiler-errors-2/compiler-error-c3852.md index f42c36ef6ce..5400c851d3c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3852.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3852.md @@ -10,8 +10,12 @@ ms.assetid: 194e5c5e-0dfb-414e-86db-791c11eb610c > 'member' having type 'type': aggregate initialization could not initialize this member +## Remarks + An attempt was made to assign a default initialization as part of an aggregate initialization to a data member that cannot receive a default initialization in an aggregate initialization. +## Example + The following samples generate C3852: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3853.md b/docs/error-messages/compiler-errors-2/compiler-error-c3853.md index 59b458d988f..4453ba4d736 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3853.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3853.md @@ -10,8 +10,12 @@ ms.assetid: 5b71805d-52b4-44ec-80ae-37c68d876f6a > '=': re-initializing a reference or assignment through a reference-to-function is illegal +## Remarks + Cannot assign to a reference through a function because functions are not lvalues. +## Example + The following samples generate C3853: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3854.md b/docs/error-messages/compiler-errors-2/compiler-error-c3854.md index 6e226df550d..ec413102911 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3854.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3854.md @@ -10,8 +10,12 @@ ms.assetid: 32a9ead0-c6c7-485a-8802-c7b1fe921d3a > expression to left of '=' evaluates to a function. Cannot assign to a function (a function is not an l-value) +## Remarks + A reference cannot be reinitialized. Dereferencing a reference to a function yields a function, which is an rvalue, to which you cannot assign. Therefore, you cannot assign through a reference to a function. +## Example + The following sample generates C3854: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3855.md b/docs/error-messages/compiler-errors-2/compiler-error-c3855.md index d0e6e4068c8..acb3dc1db70 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3855.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3855.md @@ -10,8 +10,12 @@ ms.assetid: ed90f8c0-4154-4243-b066-493913df5727 > 'class': type parameter 'param' is incompatible with the declaration +## Remarks + The compiler found nontype template or generic parameters with different names. This can occur when a specified template parameter in the definition of a template specialization is incompatible with its declaration. +## Examples + The following sample generates C3855: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3856.md b/docs/error-messages/compiler-errors-2/compiler-error-c3856.md index cb09c2739fc..fb363f99332 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3856.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3856.md @@ -10,8 +10,12 @@ ms.assetid: 242d9322-c325-4f20-be58-b2be6da56d60 > 'type': class is not a class type +## Remarks + The most common cause for this error is when there are more generic or template parameter lists at the point of definition than there were at the point of declaration. +## Examples + The following sample generates C3856: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3857.md b/docs/error-messages/compiler-errors-2/compiler-error-c3857.md index 1bb21cef8ae..13c89329af2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3857.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3857.md @@ -10,8 +10,12 @@ ms.assetid: 9f746d1e-9708-4945-bc29-3150d5371d3c > 'type': multiple type parameter lists are not allowed +## Remarks + More than one template or generic was specified for the same type, which is not allowed. +## Examples + The following sample generates C3857: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3858.md b/docs/error-messages/compiler-errors-2/compiler-error-c3858.md index b0457cc4bae..34588be0f7b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3858.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3858.md @@ -10,8 +10,12 @@ ms.assetid: 46e178d5-a55f-4ac6-a9dc-561fbcba5c1f > 'type': cannot be redeclared in current scope +## Remarks + The type cannot be declared twice in the same scope. +## Example + The following sample generates C3858: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3859.md b/docs/error-messages/compiler-errors-2/compiler-error-c3859.md index f46601d6816..62ff29930a4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3859.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3859.md @@ -25,6 +25,8 @@ The message has one of the following notes: >PCH: Unable to get the requested block of memory\ >Consider using /Fp to allow the compiler to reserve the memory early +## Remarks + There isn't enough virtual memory allocated for your [precompiled header (PCH)](../../build/creating-precompiled-header-files.md). If your precompiled header uses an explicit `#pragma hdrstop` directive, use the **`/Zm`** compiler flag to specify a larger value for the precompiled header file. Otherwise, consider reducing the number of parallel compilation processes in your build. For more information, see [`/Zm` (Specify precompiled header memory allocation limit)](../../build/reference/zm-specify-precompiled-header-memory-allocation-limit.md). This diagnostic shows up mostly in two scenarios: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3860.md b/docs/error-messages/compiler-errors-2/compiler-error-c3860.md index e384bb7ee2c..5af9cff0916 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3860.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3860.md @@ -10,8 +10,12 @@ ms.assetid: 1fb5110d-594e-4f1c-8773-888233af1313 > type argument list following class type name must list parameters in the order used in type parameter list +## Remarks + A generic or template argument list was ill formed. +## Examples + The following sample generates C3860: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3861.md b/docs/error-messages/compiler-errors-2/compiler-error-c3861.md index 738a3e76f44..5448f438ffa 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3861.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3861.md @@ -9,10 +9,10 @@ helpviewer_keywords: ["C3861"] > '*identifier*': identifier not found -The compiler was unable to resolve a reference to an identifier, even using argument-dependent lookup. - ## Remarks +The compiler was unable to resolve a reference to an identifier, even using argument-dependent lookup. + To fix this error, compare use of *identifier* to the identifier declaration for case and spelling. Verify that [scope resolution operators](../../cpp/scope-resolution-operator.md) and namespace [`using` directives](../../cpp/namespaces-cpp.md#using_directives) are used correctly. If the identifier is declared in a header file, verify that the header is included before the identifier is referenced. If the identifier is meant to be externally visible, make sure that it's declared in any source file that uses it. Also check that the identifier declaration or definition isn't excluded by [conditional compilation directives](../../preprocessor/hash-if-hash-elif-hash-else-and-hash-endif-directives-c-cpp.md). Changes to remove obsolete functions from the C Runtime Library in Visual Studio 2015 can cause C3861. To resolve this error, remove references to these functions or replace them with their secure alternatives, if any. For more information, see [Obsolete functions](../../c-runtime-library/obsolete-functions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3865.md b/docs/error-messages/compiler-errors-2/compiler-error-c3865.md index 415b51f2808..19361419ce4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3865.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3865.md @@ -10,10 +10,14 @@ ms.assetid: 9bc62bb0-4fb8-4856-a5cf-c7cb4029a596 > 'calling_convention' : can only be used on native member functions +## Remarks + A calling convention was used on a function that was either a global function or on a managed member function. The calling convention can only be used on a native (not managed) member function. For more information, see [Calling Conventions](../../cpp/calling-conventions.md). +## Example + The following sample generates C3865: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3866.md b/docs/error-messages/compiler-errors-2/compiler-error-c3866.md index 66483934255..a7446c26c6a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3866.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3866.md @@ -10,8 +10,12 @@ ms.assetid: 685870af-2440-4cdf-a6cb-284a5b96ef9d > function call missing argument list +## Remarks + Inside a nonstatic member function, a destructor or finalizer call did not have an argument list. +## Example + The following sample generates C3866: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3867.md b/docs/error-messages/compiler-errors-2/compiler-error-c3867.md index dff2bf406a6..81655e0f020 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3867.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3867.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C3867"] > 'func': function call missing argument list; use '&func' to create a pointer to member +## Remarks + You tried to take the address of a member function without qualifying the member function with its class name and the address-of operator. This error can also be generated as a result of compiler conformance work that was done for Visual Studio 2005: enhanced pointer-to-member conformance. Code that compiled prior to Visual Studio 2005 will now generate C3867. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3868.md b/docs/error-messages/compiler-errors-2/compiler-error-c3868.md index 162e820ff53..433633643bb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3868.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3868.md @@ -10,6 +10,8 @@ ms.assetid: f0e45c2a-2149-4885-a03b-0d230069f03a > 'type': constraints on generic parameter 'parameter' differ from those on the declaration +## Remarks + Multiple declarations must have the same generic constraints. For more information, see [Generics](../../extensions/generics-cpp-component-extensions.md). ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3869.md b/docs/error-messages/compiler-errors-2/compiler-error-c3869.md index 9cd9f1d5ee3..3a7eb0e8bec 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3869.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3869.md @@ -10,6 +10,8 @@ ms.assetid: 85b2ad72-95c1-4ed6-9761-6ef66c3802b7 > gcnew constraint is missing empty parameter list '()' +## Remarks + The **`gcnew`** special constraint was specified without the empty parameter list. See [Constraints on Generic Type Parameters (C++/CLI)](../../extensions/constraints-on-generic-type-parameters-cpp-cli.md) for more information. ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3872.md b/docs/error-messages/compiler-errors-2/compiler-error-c3872.md index 1a716c93c66..024b5134dce 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3872.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3872.md @@ -10,10 +10,14 @@ ms.assetid: 519e95be-5641-40cc-894c-da4819506604 > 'char': this character is not allowed in an identifier +## Remarks + The C++ compiler follows the C++11 standard on characters allowed in an identifier. Only certain ranges of characters and universal character names are allowed in an identifier. Additional restrictions apply to the initial character of an identifier. For more information and a list of allowed characters and universal character name ranges, see [Identifiers](../../cpp/identifiers-cpp.md). The range of characters allowed in an identifier is less restrictive when compiling C++/CLI code. Identifiers in code compiled by using /clr should follow [Standard ECMA-335: Common Language Infrastructure (CLI)](https://ecma-international.org/publications-and-standards/standards/ecma-335/). +## Example + The following sample generates C3872: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3873.md b/docs/error-messages/compiler-errors-2/compiler-error-c3873.md index 3a95a6e9aa1..6a1aadf204a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3873.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3873.md @@ -10,10 +10,14 @@ ms.assetid: e68fd3be-2391-492b-ac3f-d2428901b2e9 > 'char': this character is not allowed as a first character of an identifier +## Remarks + The C++ compiler follows the C++11 standard on characters allowed in an identifier. Only certain ranges of characters and universal character names are allowed in an identifier. Additional restrictions apply to the initial character of an identifier. For more information and a list of allowed characters and universal character name ranges, see [Identifiers](../../cpp/identifiers-cpp.md). The range of characters allowed in an identifier is less restrictive when compiling C++/CLI code. Identifiers in code compiled by using /clr should follow [Standard ECMA-335: Common Language Infrastructure (CLI)](https://ecma-international.org/publications-and-standards/standards/ecma-335/). +## Example + The following sample generates C3873: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3874.md b/docs/error-messages/compiler-errors-2/compiler-error-c3874.md index e9a72c4b376..ad6251492f2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3874.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3874.md @@ -10,8 +10,12 @@ ms.assetid: fd55fc05-69a7-4237-b3b7-dca1d5400b4f > return type of 'function' should be 'int' instead of 'type' +## Remarks + A function does not have the return type that was expected by the compiler. +## Example + The following sample generates C3874: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3880.md b/docs/error-messages/compiler-errors-2/compiler-error-c3880.md index 6502030c5cb..5725a00bddb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3880.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3880.md @@ -10,6 +10,8 @@ ms.assetid: b0e05d1e-32d0-4034-9246-f37d23573ea9 > 'var' : cannot be a literal data member +## Remarks + The type of a [literal](../../extensions/literal-cpp-component-extensions.md) attribute must be, or compile-time convertible to, one of the following types: - integral type @@ -18,6 +20,8 @@ The type of a [literal](../../extensions/literal-cpp-component-extensions.md) at - enum with an integral or underlying type +## Example + The following sample generates C3880: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3883.md b/docs/error-messages/compiler-errors-2/compiler-error-c3883.md index 6ed6a89c19c..15209c21707 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3883.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3883.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C3883"] > '*member*': an initonly static data member must be initialized +## Remarks + A variable marked with [initonly](../../dotnet/initonly-cpp-cli.md) was not initialized correctly. +## Example + The following sample generates C3883: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3886.md b/docs/error-messages/compiler-errors-2/compiler-error-c3886.md index 9b832c51420..de2ede07af7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3886.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3886.md @@ -10,8 +10,12 @@ ms.assetid: 485f6c12-cc1b-4146-9034-409a0a5e615e > 'var' : a literal data member must be initialized +## Remarks + A [literal](../../extensions/literal-cpp-component-extensions.md) variable must be initialized when it is declaraed. +## Example + The following sample generates C3886: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3887.md b/docs/error-messages/compiler-errors-2/compiler-error-c3887.md index 38523d6a0ec..3662ec80e31 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3887.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3887.md @@ -10,8 +10,12 @@ ms.assetid: a7e82426-ef99-437b-9562-2822004e18fe > 'var' : the initializer for a literal data member must be a constant expression +## Remarks + A [literal](../../extensions/literal-cpp-component-extensions.md) data member can only be initialized with a constant expresion. +## Example + The following sample generates C3887: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3888.md b/docs/error-messages/compiler-errors-2/compiler-error-c3888.md index e6080f5b8f9..507bce41e83 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3888.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3888.md @@ -10,6 +10,8 @@ ms.assetid: 40820812-79c5-4dcd-a19d-b4164d25fc8a > 'name' : the const expression associated with this literal data member is not supported by C++/CLI +## Remarks + The *name* data member that is declared with the [literal](../../extensions/literal-cpp-component-extensions.md) keyword is initialized with a value the compiler does not support. The compiler supports only constant integral, enum, or string types. The likely cause for the **C3888** error is that the data member is initialized with a byte array. ### To correct this error diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3890.md b/docs/error-messages/compiler-errors-2/compiler-error-c3890.md index a433dd204f0..740a16535b0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3890.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3890.md @@ -10,8 +10,12 @@ ms.assetid: 2f22c2fd-c14e-45e1-b936-b739ffc0b135 > 'var' : you cannot take the address of a literal data member +## Remarks + A literal data member exists on the garbage-collected heap. An object on the garbage-collected heap can be moved, so taking the address is not useful. +## Example + The following sample generates C3890: ```cpp From cc1996b0c6afb5ac7938a04cd61dc1327f5d2d34 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 23 Aug 2025 22:44:47 +0800 Subject: [PATCH 1554/2255] Replace term "sample" with "example" for error references in range [C3851, C3890] --- .../compiler-errors-2/compiler-error-c3851.md | 2 +- .../compiler-errors-2/compiler-error-c3852.md | 2 +- .../compiler-errors-2/compiler-error-c3853.md | 2 +- .../compiler-errors-2/compiler-error-c3854.md | 2 +- .../compiler-errors-2/compiler-error-c3855.md | 2 +- .../compiler-errors-2/compiler-error-c3856.md | 2 +- .../compiler-errors-2/compiler-error-c3857.md | 2 +- .../compiler-errors-2/compiler-error-c3858.md | 2 +- .../compiler-errors-2/compiler-error-c3860.md | 2 +- .../compiler-errors-2/compiler-error-c3861.md | 6 +++--- .../compiler-errors-2/compiler-error-c3862.md | 2 +- .../compiler-errors-2/compiler-error-c3865.md | 2 +- .../compiler-errors-2/compiler-error-c3866.md | 2 +- .../compiler-errors-2/compiler-error-c3867.md | 10 +++++----- .../compiler-errors-2/compiler-error-c3868.md | 2 +- .../compiler-errors-2/compiler-error-c3869.md | 2 +- .../compiler-errors-2/compiler-error-c3872.md | 2 +- .../compiler-errors-2/compiler-error-c3873.md | 2 +- .../compiler-errors-2/compiler-error-c3874.md | 2 +- .../compiler-errors-2/compiler-error-c3880.md | 2 +- .../compiler-errors-2/compiler-error-c3883.md | 6 +++--- .../compiler-errors-2/compiler-error-c3886.md | 2 +- .../compiler-errors-2/compiler-error-c3887.md | 2 +- .../compiler-errors-2/compiler-error-c3890.md | 2 +- 24 files changed, 32 insertions(+), 32 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3851.md b/docs/error-messages/compiler-errors-2/compiler-error-c3851.md index 50a7a94eabb..a32ffce02f4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3851.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3851.md @@ -16,7 +16,7 @@ In code compiled as C++, you cannot use a universal character name that represen ## Example -The following samples generate C3851, and show how to fix it: +The following example generate C3851, and show how to fix it: ```cpp // C3851.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3852.md b/docs/error-messages/compiler-errors-2/compiler-error-c3852.md index 5400c851d3c..91946e5224a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3852.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3852.md @@ -16,7 +16,7 @@ An attempt was made to assign a default initialization as part of an aggregate i ## Example -The following samples generate C3852: +The following example generate C3852: ```cpp // C3852.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3853.md b/docs/error-messages/compiler-errors-2/compiler-error-c3853.md index 4453ba4d736..fce54e773fe 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3853.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3853.md @@ -16,7 +16,7 @@ Cannot assign to a reference through a function because functions are not lvalue ## Example -The following samples generate C3853: +The following example generate C3853: ```cpp // C3853.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3854.md b/docs/error-messages/compiler-errors-2/compiler-error-c3854.md index ec413102911..c2b673c3d05 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3854.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3854.md @@ -16,7 +16,7 @@ A reference cannot be reinitialized. Dereferencing a reference to a function yie ## Example -The following sample generates C3854: +The following example generates C3854: ```cpp // C3854.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3855.md b/docs/error-messages/compiler-errors-2/compiler-error-c3855.md index acb3dc1db70..55a923b34e1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3855.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3855.md @@ -16,7 +16,7 @@ The compiler found nontype template or generic parameters with different names. ## Examples -The following sample generates C3855: +The following example generates C3855: ```cpp // C3855.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3856.md b/docs/error-messages/compiler-errors-2/compiler-error-c3856.md index fb363f99332..3b43873f65a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3856.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3856.md @@ -16,7 +16,7 @@ The most common cause for this error is when there are more generic or template ## Examples -The following sample generates C3856: +The following example generates C3856: ```cpp // C3856.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3857.md b/docs/error-messages/compiler-errors-2/compiler-error-c3857.md index 13c89329af2..48e1289cebf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3857.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3857.md @@ -16,7 +16,7 @@ More than one template or generic was specified for the same type, which is not ## Examples -The following sample generates C3857: +The following example generates C3857: ```cpp // C3857.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3858.md b/docs/error-messages/compiler-errors-2/compiler-error-c3858.md index 34588be0f7b..8ddc81e2837 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3858.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3858.md @@ -16,7 +16,7 @@ The type cannot be declared twice in the same scope. ## Example -The following sample generates C3858: +The following example generates C3858: ```cpp // C3858.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3860.md b/docs/error-messages/compiler-errors-2/compiler-error-c3860.md index 5af9cff0916..dba9271742b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3860.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3860.md @@ -16,7 +16,7 @@ A generic or template argument list was ill formed. ## Examples -The following sample generates C3860: +The following example generates C3860: ```cpp // C3860.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3861.md b/docs/error-messages/compiler-errors-2/compiler-error-c3861.md index 5448f438ffa..b45f6623ab7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3861.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3861.md @@ -23,7 +23,7 @@ If error C3861 appears after project migration from older versions of the compil ### Undefined identifier -The following sample generates C3861 because the identifier isn't defined. +The following example generates C3861 because the identifier isn't defined. ```cpp // C3861.cpp @@ -36,7 +36,7 @@ int main() { ### Identifier not in scope -The following sample generates C3861, because an identifier is only visible in the file scope of its definition, unless it's declared in other source files that use it. +The following example generates C3861, because an identifier is only visible in the file scope of its definition, unless it's declared in other source files that use it. Source file `C3861_a1.cpp`: @@ -97,7 +97,7 @@ int main() { ### ADL and friend functions -The following sample generates C3861 because the compiler can't use argument dependent lookup for `FriendFunc`: +The following example generates C3861 because the compiler can't use argument dependent lookup for `FriendFunc`: ```cpp namespace N { diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3862.md b/docs/error-messages/compiler-errors-2/compiler-error-c3862.md index 583cd4c16f4..17e5b9ea878 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3862.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3862.md @@ -20,7 +20,7 @@ For more information, see [/clr (Common Language Runtime Compilation)](../../bui ## Example -The following sample generates C3862: +The following example generates C3862: ```cpp // C3862.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3865.md b/docs/error-messages/compiler-errors-2/compiler-error-c3865.md index 19361419ce4..bea0de23ac6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3865.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3865.md @@ -18,7 +18,7 @@ For more information, see [Calling Conventions](../../cpp/calling-conventions.md ## Example -The following sample generates C3865: +The following example generates C3865: ```cpp // C3865.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3866.md b/docs/error-messages/compiler-errors-2/compiler-error-c3866.md index a7446c26c6a..8408f61c682 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3866.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3866.md @@ -16,7 +16,7 @@ Inside a nonstatic member function, a destructor or finalizer call did not have ## Example -The following sample generates C3866: +The following example generates C3866: ```cpp // C3866.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3867.md b/docs/error-messages/compiler-errors-2/compiler-error-c3867.md index 81655e0f020..d6f858a58b7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3867.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3867.md @@ -19,7 +19,7 @@ This error can also be generated as a result of compiler conformance work that w C3867 can be issued from the compiler with a misleading suggested resolution. Whenever possible, use the most derived class. -The following sample generates C3867 and shows how to fix it. +The following example generates C3867 and shows how to fix it. ```cpp // C3867_1.cpp @@ -39,7 +39,7 @@ void Derived::Bar() { } ``` -The following sample generates C3867 and shows how to fix it. +The following example generates C3867 and shows how to fix it. ```cpp // C3867_2.cpp @@ -69,7 +69,7 @@ int main() { } ``` -The following sample generates C3867 and shows how to fix it. +The following example generates C3867 and shows how to fix it. ```cpp // C3867_3.cpp @@ -86,7 +86,7 @@ int main() { } ``` -The following sample generates C3867. +The following example generates C3867. ```cpp // C3867_4.cpp @@ -108,7 +108,7 @@ public: }; ``` -The following sample generates C3867. +The following example generates C3867. ```cpp // C3867_5.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3868.md b/docs/error-messages/compiler-errors-2/compiler-error-c3868.md index 433633643bb..627e86cb79f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3868.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3868.md @@ -16,7 +16,7 @@ Multiple declarations must have the same generic constraints. For more informat ## Example -The following sample generates C3868. +The following example generates C3868. ```cpp // C3868.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3869.md b/docs/error-messages/compiler-errors-2/compiler-error-c3869.md index 3a7eb0e8bec..5b1fe936313 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3869.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3869.md @@ -16,7 +16,7 @@ The **`gcnew`** special constraint was specified without the empty parameter lis ## Example -The following sample generates C3869. +The following example generates C3869. ```cpp // C3869.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3872.md b/docs/error-messages/compiler-errors-2/compiler-error-c3872.md index 024b5134dce..adeb337f8c5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3872.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3872.md @@ -18,7 +18,7 @@ The range of characters allowed in an identifier is less restrictive when compil ## Example -The following sample generates C3872: +The following example generates C3872: ```cpp // C3872.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3873.md b/docs/error-messages/compiler-errors-2/compiler-error-c3873.md index 6a1aadf204a..63b785626b6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3873.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3873.md @@ -18,7 +18,7 @@ The range of characters allowed in an identifier is less restrictive when compil ## Example -The following sample generates C3873: +The following example generates C3873: ```cpp // C3873.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3874.md b/docs/error-messages/compiler-errors-2/compiler-error-c3874.md index ad6251492f2..7cd3c8a34f4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3874.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3874.md @@ -16,7 +16,7 @@ A function does not have the return type that was expected by the compiler. ## Example -The following sample generates C3874: +The following example generates C3874: ```cpp // C3874b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3880.md b/docs/error-messages/compiler-errors-2/compiler-error-c3880.md index 5725a00bddb..fba6e98b908 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3880.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3880.md @@ -22,7 +22,7 @@ The type of a [literal](../../extensions/literal-cpp-component-extensions.md) at ## Example -The following sample generates C3880: +The following example generates C3880: ```cpp // C3880.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3883.md b/docs/error-messages/compiler-errors-2/compiler-error-c3883.md index 15209c21707..9ccd906f326 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3883.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3883.md @@ -15,7 +15,7 @@ A variable marked with [initonly](../../dotnet/initonly-cpp-cli.md) was not init ## Example -The following sample generates C3883: +The following example generates C3883: ```cpp // C3883.cpp @@ -26,7 +26,7 @@ ref struct Y1 { }; ``` -The following sample demonstrates a possible resolution: +The following example demonstrates a possible resolution: ```cpp // C3883b.cpp @@ -37,7 +37,7 @@ ref struct Y1 { }; ``` -The following sample shows how to initialize in a static constructor: +The following example shows how to initialize in a static constructor: ```cpp // C3883c.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3886.md b/docs/error-messages/compiler-errors-2/compiler-error-c3886.md index de2ede07af7..8fd5468890a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3886.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3886.md @@ -16,7 +16,7 @@ A [literal](../../extensions/literal-cpp-component-extensions.md) variable must ## Example -The following sample generates C3886: +The following example generates C3886: ```cpp // C3886.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3887.md b/docs/error-messages/compiler-errors-2/compiler-error-c3887.md index 3662ec80e31..bf45ea10cb5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3887.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3887.md @@ -16,7 +16,7 @@ A [literal](../../extensions/literal-cpp-component-extensions.md) data member ca ## Example -The following sample generates C3887: +The following example generates C3887: ```cpp // C3887.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3890.md b/docs/error-messages/compiler-errors-2/compiler-error-c3890.md index 740a16535b0..adc3a2d0671 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3890.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3890.md @@ -16,7 +16,7 @@ A literal data member exists on the garbage-collected heap. An object on the ga ## Example -The following sample generates C3890: +The following example generates C3890: ```cpp // C3890.cpp From 4b1fbc70471425170c6c6ca81d5b4bd50b167079 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 23 Aug 2025 22:49:23 +0800 Subject: [PATCH 1555/2255] Update metadata for error references in range [C3851, C3890] --- .../error-messages/compiler-errors-2/compiler-error-c3851.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3852.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3853.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3854.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3855.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3856.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3857.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3858.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3859.md | 2 +- .../error-messages/compiler-errors-2/compiler-error-c3860.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3862.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3865.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3866.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3867.md | 2 +- .../error-messages/compiler-errors-2/compiler-error-c3868.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3869.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3872.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3873.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3874.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3880.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3883.md | 2 +- .../error-messages/compiler-errors-2/compiler-error-c3886.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3887.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3888.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3890.md | 5 ++--- 25 files changed, 47 insertions(+), 69 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3851.md b/docs/error-messages/compiler-errors-2/compiler-error-c3851.md index a32ffce02f4..b711d0114d7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3851.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3851.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3851" title: "Compiler Error C3851" -ms.date: "09/05/2018" +description: "Learn more about: Compiler Error C3851" +ms.date: 09/05/2018 f1_keywords: ["C3851"] helpviewer_keywords: ["C3851"] -ms.assetid: da30c21c-33aa-4439-8fb3-2f5021ea4985 --- # Compiler Error C3851 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3852.md b/docs/error-messages/compiler-errors-2/compiler-error-c3852.md index 91946e5224a..79818b2719a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3852.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3852.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3852" title: "Compiler Error C3852" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3852" +ms.date: 11/04/2016 f1_keywords: ["C3852"] helpviewer_keywords: ["C3852"] -ms.assetid: 194e5c5e-0dfb-414e-86db-791c11eb610c --- # Compiler Error C3852 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3853.md b/docs/error-messages/compiler-errors-2/compiler-error-c3853.md index fce54e773fe..935ffefaaa3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3853.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3853.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3853" title: "Compiler Error C3853" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3853" +ms.date: 11/04/2016 f1_keywords: ["C3853"] helpviewer_keywords: ["C3853"] -ms.assetid: 5b71805d-52b4-44ec-80ae-37c68d876f6a --- # Compiler Error C3853 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3854.md b/docs/error-messages/compiler-errors-2/compiler-error-c3854.md index c2b673c3d05..1884381f47f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3854.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3854.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3854" title: "Compiler Error C3854" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3854" +ms.date: 11/04/2016 f1_keywords: ["C3854"] helpviewer_keywords: ["C3854"] -ms.assetid: 32a9ead0-c6c7-485a-8802-c7b1fe921d3a --- # Compiler Error C3854 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3855.md b/docs/error-messages/compiler-errors-2/compiler-error-c3855.md index 55a923b34e1..070460053f8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3855.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3855.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3855" title: "Compiler Error C3855" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3855" +ms.date: 11/04/2016 f1_keywords: ["C3855"] helpviewer_keywords: ["C3855"] -ms.assetid: ed90f8c0-4154-4243-b066-493913df5727 --- # Compiler Error C3855 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3856.md b/docs/error-messages/compiler-errors-2/compiler-error-c3856.md index 3b43873f65a..e4241d6dcc0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3856.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3856.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3856" title: "Compiler Error C3856" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3856" +ms.date: 11/04/2016 f1_keywords: ["C3856"] helpviewer_keywords: ["C3856"] -ms.assetid: 242d9322-c325-4f20-be58-b2be6da56d60 --- # Compiler Error C3856 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3857.md b/docs/error-messages/compiler-errors-2/compiler-error-c3857.md index 48e1289cebf..0a64becf2b8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3857.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3857.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3857" title: "Compiler Error C3857" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3857" +ms.date: 11/04/2016 f1_keywords: ["C3857"] helpviewer_keywords: ["C3857"] -ms.assetid: 9f746d1e-9708-4945-bc29-3150d5371d3c --- # Compiler Error C3857 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3858.md b/docs/error-messages/compiler-errors-2/compiler-error-c3858.md index 8ddc81e2837..249ac5979b0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3858.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3858.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3858" title: "Compiler Error C3858" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3858" +ms.date: 11/04/2016 f1_keywords: ["C3858"] helpviewer_keywords: ["C3858"] -ms.assetid: 46e178d5-a55f-4ac6-a9dc-561fbcba5c1f --- # Compiler Error C3858 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3859.md b/docs/error-messages/compiler-errors-2/compiler-error-c3859.md index 62ff29930a4..b9c63f460ab 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3859.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3859.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler Error C3859" title: "Compiler Error C3859" +description: "Learn more about: Compiler Error C3859" ms.date: 02/22/2022 f1_keywords: ["C3859"] helpviewer_keywords: ["C3859"] diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3860.md b/docs/error-messages/compiler-errors-2/compiler-error-c3860.md index dba9271742b..b33bd7e9836 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3860.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3860.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3860" title: "Compiler Error C3860" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3860" +ms.date: 11/04/2016 f1_keywords: ["C3860"] helpviewer_keywords: ["C3860"] -ms.assetid: 1fb5110d-594e-4f1c-8773-888233af1313 --- # Compiler Error C3860 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3862.md b/docs/error-messages/compiler-errors-2/compiler-error-c3862.md index 17e5b9ea878..8bfa574489d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3862.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3862.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3862" title: "Compiler Error C3862" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3862" +ms.date: 11/04/2016 f1_keywords: ["C3862"] helpviewer_keywords: ["C3862"] -ms.assetid: ba547366-4189-4077-8c00-ab45e08a9533 --- # Compiler Error C3862 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3865.md b/docs/error-messages/compiler-errors-2/compiler-error-c3865.md index bea0de23ac6..147494f98db 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3865.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3865.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3865" title: "Compiler Error C3865" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3865" +ms.date: 11/04/2016 f1_keywords: ["C3865"] helpviewer_keywords: ["C3865"] -ms.assetid: 9bc62bb0-4fb8-4856-a5cf-c7cb4029a596 --- # Compiler Error C3865 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3866.md b/docs/error-messages/compiler-errors-2/compiler-error-c3866.md index 8408f61c682..655db97c3ad 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3866.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3866.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3866" title: "Compiler Error C3866" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3866" +ms.date: 11/04/2016 f1_keywords: ["C3866"] helpviewer_keywords: ["C3866"] -ms.assetid: 685870af-2440-4cdf-a6cb-284a5b96ef9d --- # Compiler Error C3866 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3867.md b/docs/error-messages/compiler-errors-2/compiler-error-c3867.md index d6f858a58b7..a3426c61f3b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3867.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3867.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C3867" description: "Learn more about: Compiler Error C3867" -ms.date: "11/04/2016" +ms.date: 11/04/2016 f1_keywords: ["C3867"] helpviewer_keywords: ["C3867"] --- diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3868.md b/docs/error-messages/compiler-errors-2/compiler-error-c3868.md index 627e86cb79f..3276521fff2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3868.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3868.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3868" title: "Compiler Error C3868" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3868" +ms.date: 11/04/2016 f1_keywords: ["C3868"] helpviewer_keywords: ["C3868"] -ms.assetid: f0e45c2a-2149-4885-a03b-0d230069f03a --- # Compiler Error C3868 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3869.md b/docs/error-messages/compiler-errors-2/compiler-error-c3869.md index 5b1fe936313..6264bd6bdf2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3869.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3869.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3869" title: "Compiler Error C3869" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3869" +ms.date: 11/04/2016 f1_keywords: ["C3869"] helpviewer_keywords: ["C3869"] -ms.assetid: 85b2ad72-95c1-4ed6-9761-6ef66c3802b7 --- # Compiler Error C3869 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3872.md b/docs/error-messages/compiler-errors-2/compiler-error-c3872.md index adeb337f8c5..3a5499f3518 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3872.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3872.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3872" title: "Compiler Error C3872" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3872" +ms.date: 11/04/2016 f1_keywords: ["C3872"] helpviewer_keywords: ["C3872"] -ms.assetid: 519e95be-5641-40cc-894c-da4819506604 --- # Compiler Error C3872 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3873.md b/docs/error-messages/compiler-errors-2/compiler-error-c3873.md index 63b785626b6..829b2a9a342 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3873.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3873.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3873" title: "Compiler Error C3873" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3873" +ms.date: 11/04/2016 f1_keywords: ["C3873"] helpviewer_keywords: ["C3873"] -ms.assetid: e68fd3be-2391-492b-ac3f-d2428901b2e9 --- # Compiler Error C3873 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3874.md b/docs/error-messages/compiler-errors-2/compiler-error-c3874.md index 7cd3c8a34f4..b6461f75e73 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3874.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3874.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3874" title: "Compiler Error C3874" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3874" +ms.date: 11/04/2016 f1_keywords: ["C3874"] helpviewer_keywords: ["C3874"] -ms.assetid: fd55fc05-69a7-4237-b3b7-dca1d5400b4f --- # Compiler Error C3874 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3880.md b/docs/error-messages/compiler-errors-2/compiler-error-c3880.md index fba6e98b908..cb33548783f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3880.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3880.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3880" title: "Compiler Error C3880" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3880" +ms.date: 11/04/2016 f1_keywords: ["C3880"] helpviewer_keywords: ["C3880"] -ms.assetid: b0e05d1e-32d0-4034-9246-f37d23573ea9 --- # Compiler Error C3880 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3883.md b/docs/error-messages/compiler-errors-2/compiler-error-c3883.md index 9ccd906f326..12fcbf17f42 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3883.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3883.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C3883" description: "Learn more about: Compiler Error C3883" -ms.date: "11/04/2016" +ms.date: 11/04/2016 f1_keywords: ["C3883"] helpviewer_keywords: ["C3883"] --- diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3886.md b/docs/error-messages/compiler-errors-2/compiler-error-c3886.md index 8fd5468890a..5464660fa41 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3886.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3886.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3886" title: "Compiler Error C3886" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3886" +ms.date: 11/04/2016 f1_keywords: ["C3886"] helpviewer_keywords: ["C3886"] -ms.assetid: 485f6c12-cc1b-4146-9034-409a0a5e615e --- # Compiler Error C3886 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3887.md b/docs/error-messages/compiler-errors-2/compiler-error-c3887.md index bf45ea10cb5..fae154f26b9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3887.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3887.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3887" title: "Compiler Error C3887" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3887" +ms.date: 11/04/2016 f1_keywords: ["C3887"] helpviewer_keywords: ["C3887"] -ms.assetid: a7e82426-ef99-437b-9562-2822004e18fe --- # Compiler Error C3887 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3888.md b/docs/error-messages/compiler-errors-2/compiler-error-c3888.md index 507bce41e83..42306cab20a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3888.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3888.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3888" title: "Compiler Error C3888" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3888" +ms.date: 11/04/2016 f1_keywords: ["C3888"] helpviewer_keywords: ["C3888"] -ms.assetid: 40820812-79c5-4dcd-a19d-b4164d25fc8a --- # Compiler Error C3888 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3890.md b/docs/error-messages/compiler-errors-2/compiler-error-c3890.md index adc3a2d0671..5034b0196cf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3890.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3890.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3890" title: "Compiler Error C3890" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3890" +ms.date: 11/04/2016 f1_keywords: ["C3890"] helpviewer_keywords: ["C3890"] -ms.assetid: 2f22c2fd-c14e-45e1-b936-b739ffc0b135 --- # Compiler Error C3890 From c538d056974124d9d4ba8c1d205354c4419c19d7 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 24 Aug 2025 21:43:17 +0800 Subject: [PATCH 1556/2255] Add blockquotes for error messages in range [C3891, C3999] --- docs/error-messages/compiler-errors-2/compiler-error-c3891.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3892.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3893.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3894.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3895.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3896.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3898.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3899.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3900.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3901.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3902.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3903.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3904.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3908.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3909.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3910.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3911.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3912.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3913.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3914.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3915.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3917.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3918.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3919.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3920.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3923.md | 2 +- 26 files changed, 26 insertions(+), 26 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3891.md b/docs/error-messages/compiler-errors-2/compiler-error-c3891.md index d21a7d8e696..06c3f16ef08 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3891.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3891.md @@ -8,7 +8,7 @@ ms.assetid: 6e1a9458-97f5-4580-bc0f-aa97a1bfd20d --- # Compiler Error C3891 -'var' : a literal data member cannot be used as a l-value +> 'var' : a literal data member cannot be used as a l-value A [literal](../../extensions/literal-cpp-component-extensions.md) variable is const, and its value cannot be changed after it is initialized in the declaration. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3892.md b/docs/error-messages/compiler-errors-2/compiler-error-c3892.md index 283ef497cad..bbf680821a0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3892.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3892.md @@ -8,7 +8,7 @@ ms.assetid: 83fff42c-ea48-442f-bc2e-b33a6b99d890 --- # Compiler Error C3892 -'var' : you cannot assign to a variable that is const +> 'var' : you cannot assign to a variable that is const A const variable cannot be changed after it is declared and initialized. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3893.md b/docs/error-messages/compiler-errors-2/compiler-error-c3893.md index b77022a2fd5..f589c2620c5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3893.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3893.md @@ -8,7 +8,7 @@ ms.assetid: 90d52eae-6ef2-4db1-b7ad-92f9e8b140fb --- # Compiler Error C3893 -'var' : l-value use of initonly data member is only allowed in an instance constructor of class 'type_name' +> 'var' : l-value use of initonly data member is only allowed in an instance constructor of class 'type_name' Static [initonly](../../dotnet/initonly-cpp-cli.md) data members can only have their address taken in a static constructor. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3894.md b/docs/error-messages/compiler-errors-2/compiler-error-c3894.md index 15508ee9ee6..e5c4e669db8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3894.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3894.md @@ -8,7 +8,7 @@ ms.assetid: 6d5ac903-1dea-431d-8e3a-cebca4342983 --- # Compiler Error C3894 -'var' : l-value use of initonly static data member is only allowed in the class constructor of class 'class' +> 'var' : l-value use of initonly static data member is only allowed in the class constructor of class 'class' Static [initonly](../../dotnet/initonly-cpp-cli.md) data members can only be used as l-values at their point of declaration, or in a static constructor. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3895.md b/docs/error-messages/compiler-errors-2/compiler-error-c3895.md index 1bdeb12441e..78da3a0fd72 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3895.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3895.md @@ -8,7 +8,7 @@ ms.assetid: 771b9fe5-d6d4-4297-bf57-e2f857722155 --- # Compiler Error C3895 -'var' : type data members cannot be 'volatile' +> 'var' : type data members cannot be 'volatile' Certain kinds of data members, for example [literal](../../extensions/literal-cpp-component-extensions.md) or [initonly](../../dotnet/initonly-cpp-cli.md), cannot be [volatile](../../cpp/volatile-cpp.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3896.md b/docs/error-messages/compiler-errors-2/compiler-error-c3896.md index fb207c3e781..87e978f6b86 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3896.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3896.md @@ -8,7 +8,7 @@ ms.assetid: eb8be0f6-5b4e-4d71-8285-8a2a94f8ba29 --- # Compiler Error C3896 -'member' : improper initializer: this literal data member can only be initialized with 'nullptr' +> 'member' : improper initializer: this literal data member can only be initialized with 'nullptr' A [literal](../../extensions/literal-cpp-component-extensions.md) data member was initialized incorrectly. See [nullptr](../../extensions/nullptr-cpp-component-extensions.md) for more information. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3898.md b/docs/error-messages/compiler-errors-2/compiler-error-c3898.md index 0665bbe6c7c..08cebae6f24 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3898.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3898.md @@ -8,7 +8,7 @@ ms.assetid: d9a90df6-87e4-4fe7-ab01-c226ee86bf10 --- # Compiler Error C3898 -'var' : type data members can only be members of managed types +> 'var' : type data members can only be members of managed types An [initonly](../../dotnet/initonly-cpp-cli.md) data member was declared in a native class. An **`initonly`** data member can only be declared in a CLR class. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3899.md b/docs/error-messages/compiler-errors-2/compiler-error-c3899.md index b8e55730c7f..556722e603c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3899.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3899.md @@ -8,7 +8,7 @@ ms.assetid: 14e07e4a-f7a7-4309-baaa-649d69e12e23 --- # Compiler Error C3899 -'var' : l-value use of initonly data member is not allowed directly within a parallel region in class 'class' +> 'var' : l-value use of initonly data member is not allowed directly within a parallel region in class 'class' An [initonly (C++/CLI)](../../dotnet/initonly-cpp-cli.md) data member cannot be initialized inside that part of a constructor that is in a [parallel](../../parallel/openmp/reference/openmp-directives.md#parallel) region. This is because the compiler does an internal relocation of that code, such that, it is effectively no longer part of the constructor. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3900.md b/docs/error-messages/compiler-errors-2/compiler-error-c3900.md index 75f0af0b487..38baed0f1f0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3900.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3900.md @@ -8,7 +8,7 @@ ms.assetid: a94cc561-8fa8-4344-9e01-e81ff462fae5 --- # Compiler Error C3900 -'member': not allowed in current scope +> 'member': not allowed in current scope Property blocks can contain function declarations and inline function definitions only. No members other than functions are allowed in property blocks. No typedefs, operators, or friend functions are allowed. For more information, see [property](../../extensions/property-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3901.md b/docs/error-messages/compiler-errors-2/compiler-error-c3901.md index 391b3327368..21652cbe7d5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3901.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3901.md @@ -8,7 +8,7 @@ ms.assetid: 19af4141-39ad-4c16-a68f-3ae76f648186 --- # Compiler Error C3901 -'accessor_function': must have return type 'type' +> 'accessor_function': must have return type 'type' At least one get method's return type must match the property type. For more information, see [property](../../extensions/property-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3902.md b/docs/error-messages/compiler-errors-2/compiler-error-c3902.md index 0dd340d0e69..0d8b1610e37 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3902.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3902.md @@ -8,7 +8,7 @@ ms.assetid: feb3bb29-f836-4d77-ba71-3876f7f4f216 --- # Compiler Error C3902 -'accessor': type of last parameter must be 'type' +> 'accessor': type of last parameter must be 'type' The type of the last parameter of at least one set method must match the type of the property. For more information, see [property](../../extensions/property-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3903.md b/docs/error-messages/compiler-errors-2/compiler-error-c3903.md index d64e3d81a8b..8ecae6d2e57 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3903.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3903.md @@ -8,7 +8,7 @@ ms.assetid: cf47d7ad-a3bd-4f75-a253-71586e7a3be6 --- # Compiler Error C3903 -'property': does not have set or get method +> 'property': does not have set or get method A property must have at least a `get` or a `set` method. For more information, see [property](../../extensions/property-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3904.md b/docs/error-messages/compiler-errors-2/compiler-error-c3904.md index 948b386d8d0..2e8f0179ed7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3904.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3904.md @@ -8,7 +8,7 @@ ms.assetid: 08297605-e4f2-4c6c-b637-011f1fd40631 --- # Compiler Error C3904 -'property_accessor': must specify number parameter(s) +> 'property_accessor': must specify number parameter(s) Check the number of parameters in your `get` and `set` methods against property dimensions. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3908.md b/docs/error-messages/compiler-errors-2/compiler-error-c3908.md index dfbf987ce71..65e956857cb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3908.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3908.md @@ -8,7 +8,7 @@ ms.assetid: 3c322482-c79e-4197-a578-2ad9bc379d1a --- # Compiler Error C3908 -access level less restrictive than 'construct' +> access level less restrictive than 'construct' A property accessor method (get or set) cannot have less restrictive access than the access specified on the property itself. Similarly, for event accessor methods. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3909.md b/docs/error-messages/compiler-errors-2/compiler-error-c3909.md index 0ab76f3c406..465991ead15 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3909.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3909.md @@ -8,7 +8,7 @@ ms.assetid: 0a443132-e53f-42dc-a58b-f086da3e7bfd --- # Compiler Error C3909 -aWinRT or managed event declaration must occur in a WinRT or managed type +> aWinRT or managed event declaration must occur in a WinRT or managed type A Windows Runtime event or managed event was declared in a native type. To fix this error, declare events in Windows Runtime types or managed types. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3910.md b/docs/error-messages/compiler-errors-2/compiler-error-c3910.md index 9b78fc9761a..3ee31678d33 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3910.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3910.md @@ -8,7 +8,7 @@ ms.assetid: cfcbe620-b463-463b-95ea-2d60ad33ebb5 --- # Compiler Error C3910 -'event': must define member 'method' +> 'event': must define member 'method' An event was defined, but did not contain the specified, required accessor method. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3911.md b/docs/error-messages/compiler-errors-2/compiler-error-c3911.md index 06637b605a0..0eacce5659c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3911.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3911.md @@ -8,7 +8,7 @@ ms.assetid: b786da59-0e99-479d-bc0d-551126e940f2 --- # Compiler Error C3911 -'event_accessor_method': function must have type 'signature' +> 'event_accessor_method': function must have type 'signature' An event's accessor method was not properly declared. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3912.md b/docs/error-messages/compiler-errors-2/compiler-error-c3912.md index 60a7683cfe9..47fbe0bf4fe 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3912.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3912.md @@ -8,7 +8,7 @@ ms.assetid: 674e050c-11fb-4db1-8bdf-a3e95b41161d --- # Compiler Error C3912 -'event': type of event must be a delegate type +> 'event': type of event must be a delegate type An event was declared but was not of the proper type. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3913.md b/docs/error-messages/compiler-errors-2/compiler-error-c3913.md index 29bf729fda1..1a9040358d8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3913.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3913.md @@ -8,7 +8,7 @@ ms.assetid: a678bfce-9524-470d-9f23-7d08ecb972c8 --- # Compiler Error C3913 -default property must be indexed +> default property must be indexed A default property was defined incorrectly. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3914.md b/docs/error-messages/compiler-errors-2/compiler-error-c3914.md index e50e306dc7e..31d2dcfbd6f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3914.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3914.md @@ -8,7 +8,7 @@ ms.assetid: 8f3190e6-ee50-4916-9ecc-3b8748b2e1e7 --- # Compiler Error C3914 -a default property cannot be static +> a default property cannot be static A default property was declared incorrectly. For more information, see [How to: Use Properties in C++/CLI](../../dotnet/how-to-use-properties-in-cpp-cli.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3915.md b/docs/error-messages/compiler-errors-2/compiler-error-c3915.md index 8c882d38401..c7b6f304d19 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3915.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3915.md @@ -8,7 +8,7 @@ ms.assetid: 2b0a5e5f-3aec-4a4b-9157-233031817084 --- # Compiler Error C3915 -'type' has no default indexed property (class indexer) +> 'type' has no default indexed property (class indexer) A type does not have a default, indexed property. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3917.md b/docs/error-messages/compiler-errors-2/compiler-error-c3917.md index 1fceea56f9f..617446944c3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3917.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3917.md @@ -8,7 +8,7 @@ ms.assetid: a24cd0c9-262f-46e5-9488-1c01f945933d --- # Compiler Error C3917 -'*property*': obsolete construct declaration style +> '*property*': obsolete construct declaration style A property or event definition used syntax from a version before Visual Studio 2005. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3918.md b/docs/error-messages/compiler-errors-2/compiler-error-c3918.md index 77d654ba213..a29ca45333b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3918.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3918.md @@ -8,7 +8,7 @@ ms.assetid: a8b3a90a-3fe1-4244-a5ff-a31cdae97d98 --- # Compiler Error C3918 -usage requires 'member' to be a data member +> usage requires 'member' to be a data member C3918 can occur for several reasons related to events. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3919.md b/docs/error-messages/compiler-errors-2/compiler-error-c3919.md index 97f0dacc47f..bae4a05a649 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3919.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3919.md @@ -8,7 +8,7 @@ ms.assetid: 5f8eddda-d751-478b-930d-e18f7191ddfb --- # Compiler Error C3919 -'event_method': function must have type 'type' +> 'event_method': function must have type 'type' An event accessor method was not declared correctly. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3920.md b/docs/error-messages/compiler-errors-2/compiler-error-c3920.md index 0784fc24d37..a9260c3b93b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3920.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3920.md @@ -8,7 +8,7 @@ ms.assetid: 66e91f28-ed82-4ce2-bf22-c0c74905b1ed --- # Compiler Error C3920 -'operator'' : cannot define a postfix increment/decrement WinRT or CLR operator Calling the postfix WinRT or CLR operator will call the corresponding prefix WinRT or CLR operator (op_Increment/op_Decrement), but with postfix semantics +> 'operator'' : cannot define a postfix increment/decrement WinRT or CLR operator Calling the postfix WinRT or CLR operator will call the corresponding prefix WinRT or CLR operator (op_Increment/op_Decrement), but with postfix semantics The Windows Runtime and CLR do not support the postfix operator and user-defined postfix operators are not allowed. You can define a prefix operator and the prefix operator will be used for both pre- and post-increment operations. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3923.md b/docs/error-messages/compiler-errors-2/compiler-error-c3923.md index 8b30a7fb64b..d908385add9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3923.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3923.md @@ -8,7 +8,7 @@ ms.assetid: db8838e9-6344-4cd6-83e0-a8abeb12c4c0 --- # Compiler Error C3923 -'member' : local class, struct, or union definitions are not allowed in a member function of a WinRT or managed class +> 'member' : local class, struct, or union definitions are not allowed in a member function of a WinRT or managed class ## Example From e573870f1671c8608c49e84e818a174a23e7ecb0 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 24 Aug 2025 21:49:55 +0800 Subject: [PATCH 1557/2255] Add "Remarks" and "Example" headings for error references in range [C3891, C3999] --- docs/error-messages/compiler-errors-2/compiler-error-c3891.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3892.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3893.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3894.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3895.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3896.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3898.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3899.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3900.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3901.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3902.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3903.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3904.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3908.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3909.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3910.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3911.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3912.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3913.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3914.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3915.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3917.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3918.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c3919.md | 4 ++++ docs/error-messages/compiler-errors-2/compiler-error-c3920.md | 4 ++++ 25 files changed, 88 insertions(+) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3891.md b/docs/error-messages/compiler-errors-2/compiler-error-c3891.md index 06c3f16ef08..f2bf2101ec2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3891.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3891.md @@ -10,8 +10,12 @@ ms.assetid: 6e1a9458-97f5-4580-bc0f-aa97a1bfd20d > 'var' : a literal data member cannot be used as a l-value +## Remarks + A [literal](../../extensions/literal-cpp-component-extensions.md) variable is const, and its value cannot be changed after it is initialized in the declaration. +## Example + The following sample generates C3891: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3892.md b/docs/error-messages/compiler-errors-2/compiler-error-c3892.md index bbf680821a0..d09169c0231 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3892.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3892.md @@ -10,8 +10,12 @@ ms.assetid: 83fff42c-ea48-442f-bc2e-b33a6b99d890 > 'var' : you cannot assign to a variable that is const +## Remarks + A const variable cannot be changed after it is declared and initialized. +## Example + The following sample generates C3892: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3893.md b/docs/error-messages/compiler-errors-2/compiler-error-c3893.md index f589c2620c5..0ff70c81d68 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3893.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3893.md @@ -10,10 +10,14 @@ ms.assetid: 90d52eae-6ef2-4db1-b7ad-92f9e8b140fb > 'var' : l-value use of initonly data member is only allowed in an instance constructor of class 'type_name' +## Remarks + Static [initonly](../../dotnet/initonly-cpp-cli.md) data members can only have their address taken in a static constructor. Instance (non-static) initonly data members can only have their address taken in instance (non-static) constructors. +## Example + The following sample generates C3893: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3894.md b/docs/error-messages/compiler-errors-2/compiler-error-c3894.md index e5c4e669db8..5f918dd5a50 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3894.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3894.md @@ -10,10 +10,14 @@ ms.assetid: 6d5ac903-1dea-431d-8e3a-cebca4342983 > 'var' : l-value use of initonly static data member is only allowed in the class constructor of class 'class' +## Remarks + Static [initonly](../../dotnet/initonly-cpp-cli.md) data members can only be used as l-values at their point of declaration, or in a static constructor. Instance (non-static) initonly data members can only be used as l-values at their point of declaration, or in instance (non-static) constructors. +## Example + The following sample generates C3894: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3895.md b/docs/error-messages/compiler-errors-2/compiler-error-c3895.md index 78da3a0fd72..afbdc70faea 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3895.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3895.md @@ -10,8 +10,12 @@ ms.assetid: 771b9fe5-d6d4-4297-bf57-e2f857722155 > 'var' : type data members cannot be 'volatile' +## Remarks + Certain kinds of data members, for example [literal](../../extensions/literal-cpp-component-extensions.md) or [initonly](../../dotnet/initonly-cpp-cli.md), cannot be [volatile](../../cpp/volatile-cpp.md). +## Example + The following sample generates C3895: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3896.md b/docs/error-messages/compiler-errors-2/compiler-error-c3896.md index 87e978f6b86..098ad863d8b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3896.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3896.md @@ -10,8 +10,12 @@ ms.assetid: eb8be0f6-5b4e-4d71-8285-8a2a94f8ba29 > 'member' : improper initializer: this literal data member can only be initialized with 'nullptr' +## Remarks + A [literal](../../extensions/literal-cpp-component-extensions.md) data member was initialized incorrectly. See [nullptr](../../extensions/nullptr-cpp-component-extensions.md) for more information. +## Example + The following sample generates C3896: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3898.md b/docs/error-messages/compiler-errors-2/compiler-error-c3898.md index 08cebae6f24..8043d31d70a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3898.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3898.md @@ -10,8 +10,12 @@ ms.assetid: d9a90df6-87e4-4fe7-ab01-c226ee86bf10 > 'var' : type data members can only be members of managed types +## Remarks + An [initonly](../../dotnet/initonly-cpp-cli.md) data member was declared in a native class. An **`initonly`** data member can only be declared in a CLR class. +## Example + The following sample generates C3898: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3899.md b/docs/error-messages/compiler-errors-2/compiler-error-c3899.md index 556722e603c..70136af15d7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3899.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3899.md @@ -10,6 +10,8 @@ ms.assetid: 14e07e4a-f7a7-4309-baaa-649d69e12e23 > 'var' : l-value use of initonly data member is not allowed directly within a parallel region in class 'class' +## Remarks + An [initonly (C++/CLI)](../../dotnet/initonly-cpp-cli.md) data member cannot be initialized inside that part of a constructor that is in a [parallel](../../parallel/openmp/reference/openmp-directives.md#parallel) region. This is because the compiler does an internal relocation of that code, such that, it is effectively no longer part of the constructor. To resolve, initialize the initonly data member in the constructor, but outside the parallel region. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3900.md b/docs/error-messages/compiler-errors-2/compiler-error-c3900.md index 38baed0f1f0..70ee5e6e4ec 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3900.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3900.md @@ -10,10 +10,14 @@ ms.assetid: a94cc561-8fa8-4344-9e01-e81ff462fae5 > 'member': not allowed in current scope +## Remarks + Property blocks can contain function declarations and inline function definitions only. No members other than functions are allowed in property blocks. No typedefs, operators, or friend functions are allowed. For more information, see [property](../../extensions/property-cpp-component-extensions.md). Event definitions can only contain access methods and functions. +## Examples + The following sample generates C3900: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3901.md b/docs/error-messages/compiler-errors-2/compiler-error-c3901.md index 21652cbe7d5..49aa2ac051e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3901.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3901.md @@ -10,8 +10,12 @@ ms.assetid: 19af4141-39ad-4c16-a68f-3ae76f648186 > 'accessor_function': must have return type 'type' +## Remarks + At least one get method's return type must match the property type. For more information, see [property](../../extensions/property-cpp-component-extensions.md). +## Example + The following sample generates C3901: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3902.md b/docs/error-messages/compiler-errors-2/compiler-error-c3902.md index 0d8b1610e37..e11bea7e01a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3902.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3902.md @@ -10,8 +10,12 @@ ms.assetid: feb3bb29-f836-4d77-ba71-3876f7f4f216 > 'accessor': type of last parameter must be 'type' +## Remarks + The type of the last parameter of at least one set method must match the type of the property. For more information, see [property](../../extensions/property-cpp-component-extensions.md). +## Example + The following sample generates C3902: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3903.md b/docs/error-messages/compiler-errors-2/compiler-error-c3903.md index 8ecae6d2e57..6a2de7bb3c0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3903.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3903.md @@ -10,8 +10,12 @@ ms.assetid: cf47d7ad-a3bd-4f75-a253-71586e7a3be6 > 'property': does not have set or get method +## Remarks + A property must have at least a `get` or a `set` method. For more information, see [property](../../extensions/property-cpp-component-extensions.md). +## Example + The following sample generates C3903: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3904.md b/docs/error-messages/compiler-errors-2/compiler-error-c3904.md index 2e8f0179ed7..a0921041857 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3904.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3904.md @@ -10,6 +10,8 @@ ms.assetid: 08297605-e4f2-4c6c-b637-011f1fd40631 > 'property_accessor': must specify number parameter(s) +## Remarks + Check the number of parameters in your `get` and `set` methods against property dimensions. - The number of parameters for the `get` method must equal the number of dimensions of the property or be zero for nonindexed properties. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3908.md b/docs/error-messages/compiler-errors-2/compiler-error-c3908.md index 65e956857cb..cc0ad14a732 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3908.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3908.md @@ -10,10 +10,14 @@ ms.assetid: 3c322482-c79e-4197-a578-2ad9bc379d1a > access level less restrictive than 'construct' +## Remarks + A property accessor method (get or set) cannot have less restrictive access than the access specified on the property itself. Similarly, for event accessor methods. For more information, see [property](../../extensions/property-cpp-component-extensions.md) and [event](../../extensions/event-cpp-component-extensions.md). +## Example + The following sample generates C3908: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3909.md b/docs/error-messages/compiler-errors-2/compiler-error-c3909.md index 465991ead15..951c0dae8ac 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3909.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3909.md @@ -10,10 +10,14 @@ ms.assetid: 0a443132-e53f-42dc-a58b-f086da3e7bfd > aWinRT or managed event declaration must occur in a WinRT or managed type +## Remarks + A Windows Runtime event or managed event was declared in a native type. To fix this error, declare events in Windows Runtime types or managed types. For more information, see [event](../../extensions/event-cpp-component-extensions.md). +## Example + The following sample generates C3909 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3910.md b/docs/error-messages/compiler-errors-2/compiler-error-c3910.md index 3ee31678d33..8fb41259e2d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3910.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3910.md @@ -10,10 +10,14 @@ ms.assetid: cfcbe620-b463-463b-95ea-2d60ad33ebb5 > 'event': must define member 'method' +## Remarks + An event was defined, but did not contain the specified, required accessor method. For more information, see [event](../../extensions/event-cpp-component-extensions.md). +## Example + The following sample generates C3910: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3911.md b/docs/error-messages/compiler-errors-2/compiler-error-c3911.md index 0eacce5659c..cec4404eb68 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3911.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3911.md @@ -10,10 +10,14 @@ ms.assetid: b786da59-0e99-479d-bc0d-551126e940f2 > 'event_accessor_method': function must have type 'signature' +## Remarks + An event's accessor method was not properly declared. For more information, see [event](../../extensions/event-cpp-component-extensions.md). +## Example + The following sample generates C3911: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3912.md b/docs/error-messages/compiler-errors-2/compiler-error-c3912.md index 47fbe0bf4fe..5c975cd2a96 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3912.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3912.md @@ -10,10 +10,14 @@ ms.assetid: 674e050c-11fb-4db1-8bdf-a3e95b41161d > 'event': type of event must be a delegate type +## Remarks + An event was declared but was not of the proper type. For more information, see [event](../../extensions/event-cpp-component-extensions.md). +## Example + The following sample generates C3912: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3913.md b/docs/error-messages/compiler-errors-2/compiler-error-c3913.md index 1a9040358d8..76ef7f462fa 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3913.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3913.md @@ -10,10 +10,14 @@ ms.assetid: a678bfce-9524-470d-9f23-7d08ecb972c8 > default property must be indexed +## Remarks + A default property was defined incorrectly. For more information, see [property](../../extensions/property-cpp-component-extensions.md). +## Example + The following sample generates C3913: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3914.md b/docs/error-messages/compiler-errors-2/compiler-error-c3914.md index 31d2dcfbd6f..610277aea3b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3914.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3914.md @@ -10,6 +10,8 @@ ms.assetid: 8f3190e6-ee50-4916-9ecc-3b8748b2e1e7 > a default property cannot be static +## Remarks + A default property was declared incorrectly. For more information, see [How to: Use Properties in C++/CLI](../../dotnet/how-to-use-properties-in-cpp-cli.md). ## Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3915.md b/docs/error-messages/compiler-errors-2/compiler-error-c3915.md index c7b6f304d19..53678a23cab 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3915.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3915.md @@ -10,6 +10,8 @@ ms.assetid: 2b0a5e5f-3aec-4a4b-9157-233031817084 > 'type' has no default indexed property (class indexer) +## Remarks + A type does not have a default, indexed property. For more information, see [property](../../extensions/property-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3917.md b/docs/error-messages/compiler-errors-2/compiler-error-c3917.md index 617446944c3..6ff96a88376 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3917.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3917.md @@ -10,6 +10,8 @@ ms.assetid: a24cd0c9-262f-46e5-9488-1c01f945933d > '*property*': obsolete construct declaration style +## Remarks + A property or event definition used syntax from a version before Visual Studio 2005. For more information, see [property](../../extensions/property-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3918.md b/docs/error-messages/compiler-errors-2/compiler-error-c3918.md index a29ca45333b..3d97e33bb08 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3918.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3918.md @@ -10,6 +10,8 @@ ms.assetid: a8b3a90a-3fe1-4244-a5ff-a31cdae97d98 > usage requires 'member' to be a data member +## Remarks + C3918 can occur for several reasons related to events. ## Examples diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3919.md b/docs/error-messages/compiler-errors-2/compiler-error-c3919.md index bae4a05a649..4e773928034 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3919.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3919.md @@ -10,10 +10,14 @@ ms.assetid: 5f8eddda-d751-478b-930d-e18f7191ddfb > 'event_method': function must have type 'type' +## Remarks + An event accessor method was not declared correctly. For more information about events, see [event](../../extensions/event-cpp-component-extensions.md). +## Example + The following sample generates C3919: ```cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3920.md b/docs/error-messages/compiler-errors-2/compiler-error-c3920.md index a9260c3b93b..417a26beff1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3920.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3920.md @@ -10,8 +10,12 @@ ms.assetid: 66e91f28-ed82-4ce2-bf22-c0c74905b1ed > 'operator'' : cannot define a postfix increment/decrement WinRT or CLR operator Calling the postfix WinRT or CLR operator will call the corresponding prefix WinRT or CLR operator (op_Increment/op_Decrement), but with postfix semantics +## Remarks + The Windows Runtime and CLR do not support the postfix operator and user-defined postfix operators are not allowed. You can define a prefix operator and the prefix operator will be used for both pre- and post-increment operations. +## Example + The following sample generates C3920 and shows how to fix it: ```cpp From bebde86dda77e7a06237a0668c7a43f1d1c58263 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 24 Aug 2025 21:52:39 +0800 Subject: [PATCH 1558/2255] Replace term "sample" with "example" for error references in range [C3891, C3999] --- .../compiler-errors-2/compiler-error-c3891.md | 2 +- .../compiler-errors-2/compiler-error-c3892.md | 2 +- .../compiler-errors-2/compiler-error-c3893.md | 2 +- .../compiler-errors-2/compiler-error-c3894.md | 2 +- .../compiler-errors-2/compiler-error-c3895.md | 2 +- .../compiler-errors-2/compiler-error-c3896.md | 2 +- .../compiler-errors-2/compiler-error-c3898.md | 2 +- .../compiler-errors-2/compiler-error-c3899.md | 2 +- .../compiler-errors-2/compiler-error-c3900.md | 4 ++-- .../compiler-errors-2/compiler-error-c3901.md | 2 +- .../compiler-errors-2/compiler-error-c3902.md | 2 +- .../compiler-errors-2/compiler-error-c3903.md | 2 +- .../compiler-errors-2/compiler-error-c3904.md | 4 ++-- .../compiler-errors-2/compiler-error-c3908.md | 2 +- .../compiler-errors-2/compiler-error-c3909.md | 2 +- .../compiler-errors-2/compiler-error-c3910.md | 2 +- .../compiler-errors-2/compiler-error-c3911.md | 2 +- .../compiler-errors-2/compiler-error-c3912.md | 2 +- .../compiler-errors-2/compiler-error-c3913.md | 2 +- .../compiler-errors-2/compiler-error-c3914.md | 2 +- .../compiler-errors-2/compiler-error-c3915.md | 4 ++-- .../compiler-errors-2/compiler-error-c3918.md | 6 +++--- .../compiler-errors-2/compiler-error-c3919.md | 2 +- .../compiler-errors-2/compiler-error-c3920.md | 2 +- .../compiler-errors-2/compiler-error-c3923.md | 2 +- 25 files changed, 30 insertions(+), 30 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3891.md b/docs/error-messages/compiler-errors-2/compiler-error-c3891.md index f2bf2101ec2..aa96e297772 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3891.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3891.md @@ -16,7 +16,7 @@ A [literal](../../extensions/literal-cpp-component-extensions.md) variable is co ## Example -The following sample generates C3891: +The following example generates C3891: ```cpp // C3891.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3892.md b/docs/error-messages/compiler-errors-2/compiler-error-c3892.md index d09169c0231..b717b26cb7b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3892.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3892.md @@ -16,7 +16,7 @@ A const variable cannot be changed after it is declared and initialized. ## Example -The following sample generates C3892: +The following example generates C3892: ```cpp // C3892.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3893.md b/docs/error-messages/compiler-errors-2/compiler-error-c3893.md index 0ff70c81d68..d3e113dcc47 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3893.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3893.md @@ -18,7 +18,7 @@ Instance (non-static) initonly data members can only have their address taken in ## Example -The following sample generates C3893: +The following example generates C3893: ```cpp // C3893.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3894.md b/docs/error-messages/compiler-errors-2/compiler-error-c3894.md index 5f918dd5a50..b3297a551af 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3894.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3894.md @@ -18,7 +18,7 @@ Instance (non-static) initonly data members can only be used as l-values at thei ## Example -The following sample generates C3894: +The following example generates C3894: ```cpp // C3894.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3895.md b/docs/error-messages/compiler-errors-2/compiler-error-c3895.md index afbdc70faea..11798756a5e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3895.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3895.md @@ -16,7 +16,7 @@ Certain kinds of data members, for example [literal](../../extensions/literal-cp ## Example -The following sample generates C3895: +The following example generates C3895: ```cpp // C3895.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3896.md b/docs/error-messages/compiler-errors-2/compiler-error-c3896.md index 098ad863d8b..8071e247a19 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3896.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3896.md @@ -16,7 +16,7 @@ A [literal](../../extensions/literal-cpp-component-extensions.md) data member wa ## Example -The following sample generates C3896: +The following example generates C3896: ```cpp // C3896.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3898.md b/docs/error-messages/compiler-errors-2/compiler-error-c3898.md index 8043d31d70a..503fb8863cf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3898.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3898.md @@ -16,7 +16,7 @@ An [initonly](../../dotnet/initonly-cpp-cli.md) data member was declared in a na ## Example -The following sample generates C3898: +The following example generates C3898: ```cpp // C3898.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3899.md b/docs/error-messages/compiler-errors-2/compiler-error-c3899.md index 70136af15d7..f61cae358a1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3899.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3899.md @@ -18,7 +18,7 @@ To resolve, initialize the initonly data member in the constructor, but outside ## Example -The following sample generates C3899. +The following example generates C3899. ```cpp // C3899.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3900.md b/docs/error-messages/compiler-errors-2/compiler-error-c3900.md index 70ee5e6e4ec..3d2ab1cda76 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3900.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3900.md @@ -18,7 +18,7 @@ Event definitions can only contain access methods and functions. ## Examples -The following sample generates C3900: +The following example generates C3900: ```cpp // C3900.cpp @@ -31,7 +31,7 @@ ref class X { }; ``` -The following sample generates C3900: +The following example generates C3900: ```cpp // C3900b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3901.md b/docs/error-messages/compiler-errors-2/compiler-error-c3901.md index 49aa2ac051e..3ca15e1e246 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3901.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3901.md @@ -16,7 +16,7 @@ At least one get method's return type must match the property type. For more inf ## Example -The following sample generates C3901: +The following example generates C3901: ```cpp // C3901.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3902.md b/docs/error-messages/compiler-errors-2/compiler-error-c3902.md index e11bea7e01a..6572ba36b53 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3902.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3902.md @@ -16,7 +16,7 @@ The type of the last parameter of at least one set method must match the type of ## Example -The following sample generates C3902: +The following example generates C3902: ```cpp // C3902.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3903.md b/docs/error-messages/compiler-errors-2/compiler-error-c3903.md index 6a2de7bb3c0..da384581345 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3903.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3903.md @@ -16,7 +16,7 @@ A property must have at least a `get` or a `set` method. For more information, s ## Example -The following sample generates C3903: +The following example generates C3903: ```cpp // C3903.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3904.md b/docs/error-messages/compiler-errors-2/compiler-error-c3904.md index a0921041857..91ee3a3ed85 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3904.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3904.md @@ -22,7 +22,7 @@ For more information, see [property](../../extensions/property-cpp-component-ext ## Examples -The following sample generates C3904. +The following example generates C3904. ```cpp // C3904.cpp @@ -42,7 +42,7 @@ ref class X { }; ``` -The following sample generates C3904. +The following example generates C3904. ```cpp // C3904b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3908.md b/docs/error-messages/compiler-errors-2/compiler-error-c3908.md index cc0ad14a732..605a54acace 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3908.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3908.md @@ -18,7 +18,7 @@ For more information, see [property](../../extensions/property-cpp-component-ext ## Example -The following sample generates C3908: +The following example generates C3908: ```cpp // C3908.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3909.md b/docs/error-messages/compiler-errors-2/compiler-error-c3909.md index 951c0dae8ac..db7bdb9ee12 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3909.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3909.md @@ -18,7 +18,7 @@ For more information, see [event](../../extensions/event-cpp-component-extension ## Example -The following sample generates C3909 and shows how to fix it: +The following example generates C3909 and shows how to fix it: ```cpp // C3909.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3910.md b/docs/error-messages/compiler-errors-2/compiler-error-c3910.md index 8fb41259e2d..4c04bf97184 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3910.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3910.md @@ -18,7 +18,7 @@ For more information, see [event](../../extensions/event-cpp-component-extension ## Example -The following sample generates C3910: +The following example generates C3910: ```cpp // C3910.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3911.md b/docs/error-messages/compiler-errors-2/compiler-error-c3911.md index cec4404eb68..10b0fe2fa41 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3911.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3911.md @@ -18,7 +18,7 @@ For more information, see [event](../../extensions/event-cpp-component-extension ## Example -The following sample generates C3911: +The following example generates C3911: ```cpp // C3911.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3912.md b/docs/error-messages/compiler-errors-2/compiler-error-c3912.md index 5c975cd2a96..3645174d18e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3912.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3912.md @@ -18,7 +18,7 @@ For more information, see [event](../../extensions/event-cpp-component-extension ## Example -The following sample generates C3912: +The following example generates C3912: ```cpp // C3912.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3913.md b/docs/error-messages/compiler-errors-2/compiler-error-c3913.md index 76ef7f462fa..bcb23704892 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3913.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3913.md @@ -18,7 +18,7 @@ For more information, see [property](../../extensions/property-cpp-component-ext ## Example -The following sample generates C3913: +The following example generates C3913: ```cpp // C3913.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3914.md b/docs/error-messages/compiler-errors-2/compiler-error-c3914.md index 610277aea3b..485a0cd992f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3914.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3914.md @@ -16,7 +16,7 @@ A default property was declared incorrectly. For more information, see [How to: ## Example -The following sample generates C3914 and shows how to fix it. +The following example generates C3914 and shows how to fix it. ```cpp // C3914.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3915.md b/docs/error-messages/compiler-errors-2/compiler-error-c3915.md index 53678a23cab..aa07c855db0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3915.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3915.md @@ -18,7 +18,7 @@ For more information, see [property](../../extensions/property-cpp-component-ext ## Examples -The following sample generates C3915. +The following example generates C3915. ```cpp // C3915.cpp @@ -43,7 +43,7 @@ int main() { C3915 can also occur if you attempt to consume a default indexer in the same compiland where it was defined with . -The following sample generates C3915. +The following example generates C3915. ```cpp // C3915_b.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3918.md b/docs/error-messages/compiler-errors-2/compiler-error-c3918.md index 3d97e33bb08..dc1dd795ee8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3918.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3918.md @@ -16,7 +16,7 @@ C3918 can occur for several reasons related to events. ## Examples -C3918 can occur because a class member is required in the current context. The following sample generates C3918. +C3918 can occur because a class member is required in the current context. The following example generates C3918. ```cpp // C3918.cpp @@ -38,7 +38,7 @@ public: C3918 is also caused if you try to check a trivial event for null (the event name will no longer provide direct access to the backing store delegate for the event). -The following sample generates C3918. +The following example generates C3918. ```cpp // C3918_2.cpp @@ -59,7 +59,7 @@ ref struct EventSource : public IEFace { }; ``` -C3918 can also occur if you incorrectly subscribe to an event. The following sample generates C3918. +C3918 can also occur if you incorrectly subscribe to an event. The following example generates C3918. ```cpp // C3918_3.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3919.md b/docs/error-messages/compiler-errors-2/compiler-error-c3919.md index 4e773928034..86eaf670716 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3919.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3919.md @@ -18,7 +18,7 @@ For more information about events, see [event](../../extensions/event-cpp-compon ## Example -The following sample generates C3919: +The following example generates C3919: ```cpp // C3919.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3920.md b/docs/error-messages/compiler-errors-2/compiler-error-c3920.md index 417a26beff1..7b2f9dbfb74 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3920.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3920.md @@ -16,7 +16,7 @@ The Windows Runtime and CLR do not support the postfix operator and user-defined ## Example -The following sample generates C3920 and shows how to fix it: +The following example generates C3920 and shows how to fix it: ```cpp // C3920.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3923.md b/docs/error-messages/compiler-errors-2/compiler-error-c3923.md index d908385add9..4018f2a2360 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3923.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3923.md @@ -12,7 +12,7 @@ ms.assetid: db8838e9-6344-4cd6-83e0-a8abeb12c4c0 ## Example -The following sample generates C3923. +The following example generates C3923. ```cpp // C3923.cpp From 61af7f4ceb42e12d2d3857903ac74e4218d719d8 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 24 Aug 2025 21:56:51 +0800 Subject: [PATCH 1559/2255] Update metadata for error references in range [C3891, C3999] --- .../error-messages/compiler-errors-2/compiler-error-c3891.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3892.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3893.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3894.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3895.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3896.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3898.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3899.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3900.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3901.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3902.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3903.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3904.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3908.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3909.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3910.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3911.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3912.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3913.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3914.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3915.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3917.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3918.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3919.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3920.md | 5 ++--- .../error-messages/compiler-errors-2/compiler-error-c3923.md | 5 ++--- 26 files changed, 52 insertions(+), 78 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3891.md b/docs/error-messages/compiler-errors-2/compiler-error-c3891.md index aa96e297772..e59a0a50479 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3891.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3891.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3891" title: "Compiler Error C3891" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3891" +ms.date: 11/04/2016 f1_keywords: ["C3891"] helpviewer_keywords: ["C3891"] -ms.assetid: 6e1a9458-97f5-4580-bc0f-aa97a1bfd20d --- # Compiler Error C3891 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3892.md b/docs/error-messages/compiler-errors-2/compiler-error-c3892.md index b717b26cb7b..a046e7e6d0e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3892.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3892.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3892" title: "Compiler Error C3892" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3892" +ms.date: 11/04/2016 f1_keywords: ["C3892"] helpviewer_keywords: ["C3892"] -ms.assetid: 83fff42c-ea48-442f-bc2e-b33a6b99d890 --- # Compiler Error C3892 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3893.md b/docs/error-messages/compiler-errors-2/compiler-error-c3893.md index d3e113dcc47..3585d8de062 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3893.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3893.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3893" title: "Compiler Error C3893" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3893" +ms.date: 11/04/2016 f1_keywords: ["C3893"] helpviewer_keywords: ["C3893"] -ms.assetid: 90d52eae-6ef2-4db1-b7ad-92f9e8b140fb --- # Compiler Error C3893 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3894.md b/docs/error-messages/compiler-errors-2/compiler-error-c3894.md index b3297a551af..72eeb3433d8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3894.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3894.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3894" title: "Compiler Error C3894" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3894" +ms.date: 11/04/2016 f1_keywords: ["C3894"] helpviewer_keywords: ["C3894"] -ms.assetid: 6d5ac903-1dea-431d-8e3a-cebca4342983 --- # Compiler Error C3894 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3895.md b/docs/error-messages/compiler-errors-2/compiler-error-c3895.md index 11798756a5e..3b970022dbf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3895.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3895.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3895" title: "Compiler Error C3895" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3895" +ms.date: 11/04/2016 f1_keywords: ["C3895"] helpviewer_keywords: ["C3895"] -ms.assetid: 771b9fe5-d6d4-4297-bf57-e2f857722155 --- # Compiler Error C3895 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3896.md b/docs/error-messages/compiler-errors-2/compiler-error-c3896.md index 8071e247a19..99836883967 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3896.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3896.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3896" title: "Compiler Error C3896" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3896" +ms.date: 11/04/2016 f1_keywords: ["C3896"] helpviewer_keywords: ["C3896"] -ms.assetid: eb8be0f6-5b4e-4d71-8285-8a2a94f8ba29 --- # Compiler Error C3896 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3898.md b/docs/error-messages/compiler-errors-2/compiler-error-c3898.md index 503fb8863cf..dd2fdddb61e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3898.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3898.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3898" title: "Compiler Error C3898" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3898" +ms.date: 11/04/2016 f1_keywords: ["C3898"] helpviewer_keywords: ["C3898"] -ms.assetid: d9a90df6-87e4-4fe7-ab01-c226ee86bf10 --- # Compiler Error C3898 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3899.md b/docs/error-messages/compiler-errors-2/compiler-error-c3899.md index f61cae358a1..cd8558439ef 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3899.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3899.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3899" title: "Compiler Error C3899" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3899" +ms.date: 11/04/2016 f1_keywords: ["C3899"] helpviewer_keywords: ["C3899"] -ms.assetid: 14e07e4a-f7a7-4309-baaa-649d69e12e23 --- # Compiler Error C3899 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3900.md b/docs/error-messages/compiler-errors-2/compiler-error-c3900.md index 3d2ab1cda76..197aefade42 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3900.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3900.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3900" title: "Compiler Error C3900" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3900" +ms.date: 11/04/2016 f1_keywords: ["C3900"] helpviewer_keywords: ["C3900"] -ms.assetid: a94cc561-8fa8-4344-9e01-e81ff462fae5 --- # Compiler Error C3900 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3901.md b/docs/error-messages/compiler-errors-2/compiler-error-c3901.md index 3ca15e1e246..65d317906bb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3901.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3901.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3901" title: "Compiler Error C3901" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3901" +ms.date: 11/04/2016 f1_keywords: ["C3901"] helpviewer_keywords: ["C3901"] -ms.assetid: 19af4141-39ad-4c16-a68f-3ae76f648186 --- # Compiler Error C3901 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3902.md b/docs/error-messages/compiler-errors-2/compiler-error-c3902.md index 6572ba36b53..baf0a90f30a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3902.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3902.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3902" title: "Compiler Error C3902" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3902" +ms.date: 11/04/2016 f1_keywords: ["C3902"] helpviewer_keywords: ["C3902"] -ms.assetid: feb3bb29-f836-4d77-ba71-3876f7f4f216 --- # Compiler Error C3902 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3903.md b/docs/error-messages/compiler-errors-2/compiler-error-c3903.md index da384581345..98033fe2afd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3903.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3903.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3903" title: "Compiler Error C3903" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3903" +ms.date: 11/04/2016 f1_keywords: ["C3903"] helpviewer_keywords: ["C3903"] -ms.assetid: cf47d7ad-a3bd-4f75-a253-71586e7a3be6 --- # Compiler Error C3903 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3904.md b/docs/error-messages/compiler-errors-2/compiler-error-c3904.md index 91ee3a3ed85..1da734c8c62 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3904.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3904.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3904" title: "Compiler Error C3904" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3904" +ms.date: 11/04/2016 f1_keywords: ["C3904"] helpviewer_keywords: ["C3904"] -ms.assetid: 08297605-e4f2-4c6c-b637-011f1fd40631 --- # Compiler Error C3904 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3908.md b/docs/error-messages/compiler-errors-2/compiler-error-c3908.md index 605a54acace..5c4f692b586 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3908.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3908.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3908" title: "Compiler Error C3908" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3908" +ms.date: 11/04/2016 f1_keywords: ["C3908"] helpviewer_keywords: ["C3908"] -ms.assetid: 3c322482-c79e-4197-a578-2ad9bc379d1a --- # Compiler Error C3908 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3909.md b/docs/error-messages/compiler-errors-2/compiler-error-c3909.md index db7bdb9ee12..5e4bc912e93 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3909.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3909.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3909" title: "Compiler Error C3909" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3909" +ms.date: 11/04/2016 f1_keywords: ["C3909"] helpviewer_keywords: ["C3909"] -ms.assetid: 0a443132-e53f-42dc-a58b-f086da3e7bfd --- # Compiler Error C3909 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3910.md b/docs/error-messages/compiler-errors-2/compiler-error-c3910.md index 4c04bf97184..ddd865d127d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3910.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3910.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3910" title: "Compiler Error C3910" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3910" +ms.date: 11/04/2016 f1_keywords: ["C3910"] helpviewer_keywords: ["C3910"] -ms.assetid: cfcbe620-b463-463b-95ea-2d60ad33ebb5 --- # Compiler Error C3910 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3911.md b/docs/error-messages/compiler-errors-2/compiler-error-c3911.md index 10b0fe2fa41..57fa57784be 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3911.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3911.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3911" title: "Compiler Error C3911" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3911" +ms.date: 11/04/2016 f1_keywords: ["C3911"] helpviewer_keywords: ["C3911"] -ms.assetid: b786da59-0e99-479d-bc0d-551126e940f2 --- # Compiler Error C3911 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3912.md b/docs/error-messages/compiler-errors-2/compiler-error-c3912.md index 3645174d18e..57daf670a72 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3912.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3912.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3912" title: "Compiler Error C3912" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3912" +ms.date: 11/04/2016 f1_keywords: ["C3912"] helpviewer_keywords: ["C3912"] -ms.assetid: 674e050c-11fb-4db1-8bdf-a3e95b41161d --- # Compiler Error C3912 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3913.md b/docs/error-messages/compiler-errors-2/compiler-error-c3913.md index bcb23704892..b9e510d71f6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3913.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3913.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3913" title: "Compiler Error C3913" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3913" +ms.date: 11/04/2016 f1_keywords: ["C3913"] helpviewer_keywords: ["C3913"] -ms.assetid: a678bfce-9524-470d-9f23-7d08ecb972c8 --- # Compiler Error C3913 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3914.md b/docs/error-messages/compiler-errors-2/compiler-error-c3914.md index 485a0cd992f..e97f908f234 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3914.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3914.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3914" title: "Compiler Error C3914" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3914" +ms.date: 11/04/2016 f1_keywords: ["C3914"] helpviewer_keywords: ["C3914"] -ms.assetid: 8f3190e6-ee50-4916-9ecc-3b8748b2e1e7 --- # Compiler Error C3914 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3915.md b/docs/error-messages/compiler-errors-2/compiler-error-c3915.md index aa07c855db0..afda8542b14 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3915.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3915.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3915" title: "Compiler Error C3915" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3915" +ms.date: 11/04/2016 f1_keywords: ["C3915"] helpviewer_keywords: ["C3915"] -ms.assetid: 2b0a5e5f-3aec-4a4b-9157-233031817084 --- # Compiler Error C3915 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3917.md b/docs/error-messages/compiler-errors-2/compiler-error-c3917.md index 6ff96a88376..edcd439252d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3917.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3917.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3917" title: "Compiler Error C3917" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3917" +ms.date: 11/04/2016 f1_keywords: ["C3917"] helpviewer_keywords: ["C3917"] -ms.assetid: a24cd0c9-262f-46e5-9488-1c01f945933d --- # Compiler Error C3917 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3918.md b/docs/error-messages/compiler-errors-2/compiler-error-c3918.md index dc1dd795ee8..b85f5c2b89c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3918.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3918.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3918" title: "Compiler Error C3918" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3918" +ms.date: 11/04/2016 f1_keywords: ["C3918"] helpviewer_keywords: ["C3918"] -ms.assetid: a8b3a90a-3fe1-4244-a5ff-a31cdae97d98 --- # Compiler Error C3918 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3919.md b/docs/error-messages/compiler-errors-2/compiler-error-c3919.md index 86eaf670716..c81a7c540df 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3919.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3919.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3919" title: "Compiler Error C3919" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3919" +ms.date: 11/04/2016 f1_keywords: ["C3919"] helpviewer_keywords: ["C3919"] -ms.assetid: 5f8eddda-d751-478b-930d-e18f7191ddfb --- # Compiler Error C3919 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3920.md b/docs/error-messages/compiler-errors-2/compiler-error-c3920.md index 7b2f9dbfb74..47b2bb58c3a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3920.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3920.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3920" title: "Compiler Error C3920" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3920" +ms.date: 11/04/2016 f1_keywords: ["C3920"] helpviewer_keywords: ["C3920"] -ms.assetid: 66e91f28-ed82-4ce2-bf22-c0c74905b1ed --- # Compiler Error C3920 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3923.md b/docs/error-messages/compiler-errors-2/compiler-error-c3923.md index 4018f2a2360..5ab80466ed9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3923.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3923.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3923" title: "Compiler Error C3923" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3923" +ms.date: 11/04/2016 f1_keywords: ["C3923"] helpviewer_keywords: ["C3923"] -ms.assetid: db8838e9-6344-4cd6-83e0-a8abeb12c4c0 --- # Compiler Error C3923 From 84b084076850e7decde2f134f50ffc651afdbee8 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 24 Aug 2025 21:58:08 +0800 Subject: [PATCH 1560/2255] Add leading example sentence in C3917 error reference --- docs/error-messages/compiler-errors-2/compiler-error-c3917.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3917.md b/docs/error-messages/compiler-errors-2/compiler-error-c3917.md index edcd439252d..9ecc4cdf305 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3917.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3917.md @@ -17,6 +17,8 @@ For more information, see [property](../../extensions/property-cpp-component-ext ## Example +The following example generates C3917: + ```cpp // C3917.cpp // compile with: /clr /c From 3976b9ed0ce57ca059410509492fb8e9d6f0626e Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 24 Aug 2025 22:16:46 +0800 Subject: [PATCH 1561/2255] Add blockquotes and update C4541 warning message --- .../compiler-warnings/compiler-warning-level-1-c4541.md | 2 +- .../compiler-warnings/compiler-warnings-c4400-through-c4599.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4541.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4541.md index ed2547e029a..f63a6f6f258 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4541.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4541.md @@ -8,6 +8,6 @@ ms.assetid: b57b8f3e-117d-4fc2-bba6-faec17e5fa9d --- # Compiler Warning (level 1) C4541 -'identifier' used on polymorphic type 'type' with /GR-; unpredictable behavior may result +> '*operator*' used on polymorphic type '*type*' with /GR-; unpredictable behavior may result You tried to use a feature that requires run-time type information without enabling run-time type information. Recompile with [/GR](../../build/reference/gr-enable-run-time-type-information.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md index 03b421b60ea..6bbc48d1b0a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md @@ -139,7 +139,7 @@ The articles in this section describe Microsoft C/C++ compiler warning messages |[Compiler warning (level 1) C4537](compiler-warning-level-1-c4537.md)|'*object*': '`.`' applied to non-UDT type| |[Compiler warning (level 3) C4538](compiler-warning-level-3-c4538.md)|'*type*': `const`/`volatile` qualifiers on this type are not supported| |[Compiler warning (level 1) C4540](compiler-warning-level-1-c4540.md)|`dynamic_cast` used to convert to inaccessible or ambiguous base; run-time test will fail ('*type1*' to '*type2*')| -|[Compiler warning (level 1) C4541](compiler-warning-level-1-c4541.md)|'*identifier*' used on polymorphic type '*type*' with `/GR-`; unpredictable behavior may result| +|[Compiler warning (level 1) C4541](compiler-warning-level-1-c4541.md)|'*operator*' used on polymorphic type '*type*' with /GR-; unpredictable behavior may result| |Compiler warning (level 1) C4542|Skipping generation of merged injected text file, cannot write *filetype* file: '*issue*': *message*| |[Compiler warning (level 3) C4543](compiler-warning-level-3-c4543.md)|Injected text suppressed by attribute '`no_injected_text`'| |[Compiler warning (level 1) C4544](compiler-warning-level-1-c4544.md)|the default template argument for '*declaration*' is ignored on this template declaration| From f6f9a038ce525caf8fb91df58415a6482c46f4ed Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 24 Aug 2025 22:38:45 +0800 Subject: [PATCH 1562/2255] Add "Remarks" heading and augment remarks in C4541 warning reference --- .../compiler-warnings/compiler-warning-level-1-c4541.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4541.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4541.md index f63a6f6f258..07fdc9a7781 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4541.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4541.md @@ -10,4 +10,6 @@ ms.assetid: b57b8f3e-117d-4fc2-bba6-faec17e5fa9d > '*operator*' used on polymorphic type '*type*' with /GR-; unpredictable behavior may result -You tried to use a feature that requires run-time type information without enabling run-time type information. Recompile with [/GR](../../build/reference/gr-enable-run-time-type-information.md). +## Remarks + +You tried to use the [`dynamic_cast` operator](../../cpp/dynamic-cast-operator.md) or [`typeid` operator](../../cpp/typeid-operator.md), which requires [Run-Time Type Information](../../cpp/run-time-type-information.md) (RTTI), without enabling it. To enable RTTI, recompile with [`/GR`](../../build/reference/gr-enable-run-time-type-information.md). From 5f5b299a555ad8486c8852a312cfd65a4ded7499 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 24 Aug 2025 22:51:53 +0800 Subject: [PATCH 1563/2255] Add example in C4541 warning reference --- .../compiler-warning-level-1-c4541.md | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4541.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4541.md index 07fdc9a7781..0d7d7b7df52 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4541.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4541.md @@ -13,3 +13,32 @@ ms.assetid: b57b8f3e-117d-4fc2-bba6-faec17e5fa9d ## Remarks You tried to use the [`dynamic_cast` operator](../../cpp/dynamic-cast-operator.md) or [`typeid` operator](../../cpp/typeid-operator.md), which requires [Run-Time Type Information](../../cpp/run-time-type-information.md) (RTTI), without enabling it. To enable RTTI, recompile with [`/GR`](../../build/reference/gr-enable-run-time-type-information.md). + +## Example + +The following example generates C4541: + +```cpp +// C4541.cpp +// compile with: /W1 /GR- + +#include + +struct Base +{ + virtual ~Base() {} +}; + +struct Derived : Base {}; + +int main() +{ + Derived derived; + Base* pointer_to_base = &derived; + + dynamic_cast(pointer_to_base); // C4541 + + typeid(*pointer_to_base); // C4541 + typeid(pointer_to_base); // OK +} +``` From 04070b95593b5ee376e2d7fb52fba63ca61e67c1 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 24 Aug 2025 22:53:33 +0800 Subject: [PATCH 1564/2255] Update metadata in 2 warning reference topics --- .../compiler-warnings/compiler-warning-level-1-c4541.md | 5 ++--- .../compiler-warnings-c4400-through-c4599.md | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4541.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4541.md index 0d7d7b7df52..5b5982d38a6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4541.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4541.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4541" title: "Compiler Warning (level 1) C4541" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4541" +ms.date: 08/24/2025 f1_keywords: ["C4541"] helpviewer_keywords: ["C4541"] -ms.assetid: b57b8f3e-117d-4fc2-bba6-faec17e5fa9d --- # Compiler Warning (level 1) C4541 diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md index 6bbc48d1b0a..e0ce42c2539 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md @@ -1,7 +1,7 @@ --- title: "Microsoft C/C++ compiler (MSVC) warnings C4400 through C4599" description: "Table of Microsoft C/C++ compiler (MSVC) warnings C4400 through C4599" -ms.date: "1/22/2025" +ms.date: 1/22/2025 f1_keywords: ["C4413", "C4415", "C4416", "C4417", "C4418", "C4419", "C4421", "C4423", "C4424", "C4425", "C4426", "C4427", "C4438", "C4442", "C4443", "C4444", "C4446", "C4447", "C4448", "C4449", "C4450", "C4451", "C4452", "C4453", "C4454", "C4455", "C4466", "C4467", "C4468", "C4472", "C4474", "C4475", "C4476", "C4478", "C4480", "C4482", "C4483", "C4491", "C4492", "C4493", "C4494", "C4495", "C4496", "C4497", "C4498", "C4499", "C4509", "C4519", "C4531", "C4542", "C4562", "C4568", "C4569", "C4573", "C4574", "C4575", "C4576", "C4578", "C4582", "C4583", "C4585", "C4586", "C4587", "C4588", "C4589", "C4591", "C4592", "C4593", "C4594", "C4595", "C4598", "C4599"] helpviewer_keywords: ["C4413", "C4415", "C4416", "C4417", "C4418", "C4419", "C4421", "C4423", "C4424", "C4425", "C4426", "C4427", "C4438", "C4442", "C4443", "C4444", "C4446", "C4447", "C4448", "C4449", "C4450", "C4451", "C4452", "C4453", "C4454", "C4455", "C4466", "C4467", "C4468", "C4472", "C4474", "C4475", "C4476", "C4478", "C4480", "C4482", "C4483", "C4491", "C4492", "C4493", "C4494", "C4495", "C4496", "C4497", "C4498", "C4499", "C4509", "C4519", "C4531", "C4542", "C4562", "C4568", "C4569", "C4573", "C4574", "C4575", "C4576", "C4578", "C4582", "C4583", "C4585", "C4586", "C4587", "C4588", "C4589", "C4591", "C4592", "C4593", "C4594", "C4595", "C4598", "C4599"] --- From 6300bc07505590ec445df7eacfde25c6dbf1b959 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 24 Aug 2025 23:09:26 +0800 Subject: [PATCH 1565/2255] Add blockquotes for warning messages in range [C4000, C4040] --- .../compiler-warnings/compiler-warning-level-1-c4005.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4006.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4010.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4015.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4020.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4022.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4024.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4025.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4026.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4028.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4029.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4030.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4031.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4033.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4034.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4036.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4038.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4013.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4023.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4019.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4032.md | 2 +- .../compiler-warnings/compiler-warning-levels-2-and-3-c4008.md | 2 +- 22 files changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4005.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4005.md index 53cbf804f6d..7bf368b7e6c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4005.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4005.md @@ -8,7 +8,7 @@ ms.assetid: 7f2dc79a-9fcb-4d5b-be61-120d9cb487ad --- # Compiler Warning (level 1) C4005 -'identifier' : macro redefinition +> 'identifier' : macro redefinition The macro identifier is defined twice. The compiler uses the second macro definition. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4006.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4006.md index fead77c55d7..103cec74d74 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4006.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4006.md @@ -8,7 +8,7 @@ ms.assetid: f1a59819-0fd2-4361-8e3a-99e4b514b8e1 --- # Compiler Warning (level 1) C4006 -\#undef expected an identifier +> #undef expected an identifier The `#undef` directive did not specify an identifier to undefine. The directive is ignored. To resolve the warning, be sure to specify an identifier. The following sample generates C4006: diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4010.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4010.md index 4f3d6f55eb1..f5636df6048 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4010.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4010.md @@ -8,7 +8,7 @@ ms.assetid: d607a9ff-8f8f-45c0-b07b-3b2f439e5485 --- # Compiler Warning (level 1) C4010 -single-line comment contains line-continuation character +> single-line comment contains line-continuation character A single-line comment, which is introduced by //, contains a backslash (\\) that serves as a line-continuation character. The compiler considers the next line to be a continuation and treats it as a comment. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4015.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4015.md index 5ad3ccbb8cb..4a79d9de116 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4015.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4015.md @@ -8,6 +8,6 @@ ms.assetid: 7242ab90-c869-482f-8152-46728575837e --- # Compiler Warning (level 1) C4015 -'identifier' : type of bit field must be integral +> 'identifier' : type of bit field must be integral The bit field is not declared as an integer type. The compiler assumes the base type of the bit field to be unsigned. Bit fields must be declared as unsigned integer types. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4020.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4020.md index a5fb74a51a3..35c80411718 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4020.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4020.md @@ -8,7 +8,7 @@ ms.assetid: 8c4cd6be-9371-4c8c-b0ff-a5ad367bbab0 --- # Compiler Warning (level 1) C4020 -'function' : too many actual parameters +> 'function' : too many actual parameters The number of actual parameters in a function call exceeds the number of formal parameters in the function prototype or definition. The compiler passes the extra actual parameters according to the calling convention of the function. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4022.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4022.md index 051feb44a3c..6afed16f7e6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4022.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4022.md @@ -8,6 +8,6 @@ ms.assetid: 9586ca84-4b40-4602-91a4-2e2415b1ab63 --- # Compiler Warning (level 1) C4022 -'function' : pointer mismatch for actual parameter 'number' +> 'function' : pointer mismatch for actual parameter 'number' The pointer type of the actual parameter differs from the pointer type of the corresponding formal parameter. The actual parameter is passed without change. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4024.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4024.md index eb23ea6c5f2..ca13786678f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4024.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4024.md @@ -8,6 +8,6 @@ ms.assetid: f6cb1b70-686a-4747-a01c-de673208209a --- # Compiler Warning (level 1) C4024 -'function' : different types for formal and actual parameter 'number' +> 'function' : different types for formal and actual parameter 'number' Corresponding formal and actual parameters have different types. The compiler passes the actual parameter without change. The receiving function converts the parameter type to the type expected. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4025.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4025.md index 505f3d85979..a4a9f72e871 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4025.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4025.md @@ -8,6 +8,6 @@ ms.assetid: c4f6a651-0641-4446-973e-8290065e49ad --- # Compiler Warning (level 1) C4025 -'number' : based pointer passed to function with variable arguments: parameter number +> 'number' : based pointer passed to function with variable arguments: parameter number Passing a based pointer to a function with variable arguments causes the pointer to be normalized, with unpredictable results. Do not pass based pointers to functions with variable arguments. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4026.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4026.md index 57b763bec5b..eb838c62666 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4026.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4026.md @@ -8,6 +8,6 @@ ms.assetid: 2c8ff616-8d7f-4784-8037-77f8b6a67698 --- # Compiler Warning (level 1) C4026 -function declared with formal parameter list +> function declared with formal parameter list The function declaration has formal parameters, but the function definition does not. Subsequent calls to this function assume that the function takes no parameters. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4028.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4028.md index abc7bff802b..2c219394619 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4028.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4028.md @@ -8,7 +8,7 @@ ms.assetid: c3e8b70b-e870-416c-a285-bba5f71dbfc6 --- # Compiler Warning (level 1) C4028 -formal parameter 'number' different from declaration +> formal parameter 'number' different from declaration The type of the formal parameter does not agree with the corresponding parameter in the declaration. The type in the original declaration is used. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4029.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4029.md index d34c5ff797c..6a3129b3bc2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4029.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4029.md @@ -8,6 +8,6 @@ ms.assetid: a5c50bab-a189-44c9-aa5c-4377c7c8443a --- # Compiler Warning (level 1) C4029 -declared formal parameter list different from definition +> declared formal parameter list different from definition Formal parameter types in the function declaration do not agree with those in the function definition. The compiler uses the parameter list from the definition. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4030.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4030.md index 9440c168978..076df2dfbfc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4030.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4030.md @@ -8,6 +8,6 @@ ms.assetid: 155b290e-4777-4704-ad35-02968b1e4c5e --- # Compiler Warning (level 1) C4030 -**first formal parameter list longer than the second list** +> first formal parameter list longer than the second list A function was redeclared with different formal parameters. The compiler uses the formal parameters given in the first declaration. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4031.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4031.md index d7291b5939d..1eeb66ef262 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4031.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4031.md @@ -8,6 +8,6 @@ ms.assetid: 8ac4965d-75e2-42db-9763-3f6ae707e1e1 --- # Compiler Warning (level 1) C4031 -second formal parameter list longer than the first list +> second formal parameter list longer than the first list A function is redeclared with different formal parameters. The compiler uses the formal parameters given in the first declaration. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4033.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4033.md index 9e90e7cd31b..027a41483d8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4033.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4033.md @@ -8,7 +8,7 @@ ms.assetid: 189a9ec3-ff6d-49dd-b9b2-530b28bbb7c9 --- # Compiler Warning (level 1) C4033 -'function' must return a value +> 'function' must return a value The function does not return a value. An undefined value is returned. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4034.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4034.md index fa3394aaf44..9867be46f24 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4034.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4034.md @@ -8,6 +8,6 @@ ms.assetid: 1d2f598d-bdfc-4a95-9617-424b591ed3e8 --- # Compiler Warning (level 1) C4034 -sizeof returns 0 +> sizeof returns 0 The **`sizeof`** operator is applied to an operand of size zero (an empty structure, union, class, or enumerated type, or type **`void`**). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4036.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4036.md index 5741b71a91a..ed59cb0f7c2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4036.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4036.md @@ -8,7 +8,7 @@ ms.assetid: f0b15359-4d62-48ec-8cb1-a7b36587a47f --- # Compiler Warning (level 1) C4036 -unnamed 'type' as actual parameter +> unnamed 'type' as actual parameter No type name is given for a structure, union, enumeration, or class used as an actual parameter. If you are using [/Zg](../../build/reference/zg-generate-function-prototypes.md) to generate function prototypes, the compiler issues this warning and comments out the formal parameter in the generated prototype. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4038.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4038.md index 5fefad3f82d..b1bc41aa01d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4038.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4038.md @@ -8,6 +8,6 @@ ms.assetid: 54c7f4ed-9386-436e-b4be-bf6c338ded64 --- # Compiler Warning (level 1) C4038 -'modifier' : illegal ambient class modifier +> 'modifier' : illegal ambient class modifier This modifier cannot be used for classes with **`dllimport`** or [dllexport](../../cpp/dllexport-dllimport.md) attributes. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4013.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4013.md index 599a4caf8d4..ed95975f76c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4013.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4013.md @@ -8,7 +8,7 @@ ms.assetid: 9f9afc71-6e78-463d-9d66-3012d6a3cd5d --- # Compiler Warning (level 3) C4013 -'function' undefined; assuming extern returning int +> 'function' undefined; assuming extern returning int The compiler encountered a call to an undefined function. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4023.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4023.md index af8177c4fa2..98d56364381 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4023.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4023.md @@ -8,7 +8,7 @@ ms.assetid: 615d5374-d7c1-42eb-acfd-917c053270c8 --- # Compiler Warning (level 3) C4023 -'symbol' : based pointer passed to unprototyped function : parameter number +> 'symbol' : based pointer passed to unprototyped function : parameter number Passing a based pointer to an unprototyped function causes the pointer to be normalized, with unpredictable results. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4019.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4019.md index 60b67551c28..031a44adaaf 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4019.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4019.md @@ -8,7 +8,7 @@ ms.assetid: 4ecfe85d-673f-4334-8154-36fe7f0b3444 --- # Compiler Warning (level 4) C4019 -empty statement at global scope +> empty statement at global scope A semicolon at global scope isn't preceded by a statement. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4032.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4032.md index cfe32c9fdea..3d1ac36b41d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4032.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4032.md @@ -8,7 +8,7 @@ ms.assetid: 70dd0c85-0239-43f9-bb06-507f6a57d206 --- # Compiler Warning (level 4) C4032 -formal parameter 'number' has different type when promoted +> formal parameter 'number' has different type when promoted The parameter type is not compatible, through default promotions, with the type in a previous declaration. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-levels-2-and-3-c4008.md b/docs/error-messages/compiler-warnings/compiler-warning-levels-2-and-3-c4008.md index fb62ce06ead..8f89ccb6137 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-levels-2-and-3-c4008.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-levels-2-and-3-c4008.md @@ -8,7 +8,7 @@ ms.assetid: fb45e535-cb68-4743-80e9-a6e34cfffeca --- # Compiler Warning (levels 2 and 3) C4008 -'identifier' : 'attribute' attribute ignored +> 'identifier' : 'attribute' attribute ignored The compiler ignored the **`__fastcall`**, **`static`**, or **`inline`** attribute for a function (level 3 warning) or data (level 2 warning). From e9d94790b0c930af690303c642e8879120aaf1e4 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 24 Aug 2025 23:16:40 +0800 Subject: [PATCH 1566/2255] Add "Remarks" and "Example" headings for warning references in range [C4000, C4040] --- .../compiler-warnings/compiler-warning-level-1-c4002.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4003.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4005.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4006.md | 8 +++++++- .../compiler-warnings/compiler-warning-level-1-c4010.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4015.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4020.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4022.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4024.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4025.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4026.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4027.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4028.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4029.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4030.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4031.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4033.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4034.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4036.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4038.md | 2 ++ .../compiler-warnings/compiler-warning-level-2-c4007.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4013.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4018.md | 4 ++-- .../compiler-warnings/compiler-warning-level-3-c4023.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4001.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4019.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4032.md | 2 ++ .../compiler-warning-levels-2-and-3-c4008.md | 2 ++ 28 files changed, 73 insertions(+), 3 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4002.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4002.md index 18d513c7877..b3961663d4f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4002.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4002.md @@ -9,10 +9,14 @@ helpviewer_keywords: ["C4002"] > too many arguments for function-like macro invocation '*identifier*' +## Remarks + The number of actual parameters in the macro exceeds the number of formal parameters in the macro definition. The preprocessor collects the extra parameters but ignores them during macro expansion. C4002 can occur when incorrectly using [variadic macros](../../preprocessor/variadic-macros.md). +## Examples + The following sample generates C4002: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4003.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4003.md index 360f59e8949..b297c1e24d2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4003.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4003.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C4003"] > not enough arguments for function-like macro invocation '*identifier*' +## Remarks + The number of formal parameters in the macro definition exceeds the number of actual parameters in the macro. Macro expansion substitutes empty text for the missing parameters. +## Example + The following sample generates C4003: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4005.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4005.md index 7bf368b7e6c..fee124bbfa4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4005.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4005.md @@ -10,6 +10,8 @@ ms.assetid: 7f2dc79a-9fcb-4d5b-be61-120d9cb487ad > 'identifier' : macro redefinition +## Remarks + The macro identifier is defined twice. The compiler uses the second macro definition. ### To fix by checking the following possible causes @@ -24,6 +26,8 @@ The macro identifier is defined twice. The compiler uses the second macro defini 1. Use an [#undef](../../preprocessor/hash-undef-directive-c-cpp.md) directive before the second definition. +## Example + The following sample generates C4005: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4006.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4006.md index 103cec74d74..451f3510159 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4006.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4006.md @@ -10,7 +10,13 @@ ms.assetid: f1a59819-0fd2-4361-8e3a-99e4b514b8e1 > #undef expected an identifier -The `#undef` directive did not specify an identifier to undefine. The directive is ignored. To resolve the warning, be sure to specify an identifier. The following sample generates C4006: +## Remarks + +The `#undef` directive did not specify an identifier to undefine. The directive is ignored. To resolve the warning, be sure to specify an identifier. + +## Example + +The following sample generates C4006: ```cpp // C4006.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4010.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4010.md index f5636df6048..bd55b1af0bb 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4010.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4010.md @@ -10,10 +10,14 @@ ms.assetid: d607a9ff-8f8f-45c0-b07b-3b2f439e5485 > single-line comment contains line-continuation character +## Remarks + A single-line comment, which is introduced by //, contains a backslash (\\) that serves as a line-continuation character. The compiler considers the next line to be a continuation and treats it as a comment. Some syntax-directed editors do not indicate the line following the continuation character as a comment. Ignore syntax coloring on any lines that cause this warning. +## Example + The following sample generates C4010: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4015.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4015.md index 4a79d9de116..a0c9c858175 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4015.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4015.md @@ -10,4 +10,6 @@ ms.assetid: 7242ab90-c869-482f-8152-46728575837e > 'identifier' : type of bit field must be integral +## Remarks + The bit field is not declared as an integer type. The compiler assumes the base type of the bit field to be unsigned. Bit fields must be declared as unsigned integer types. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4020.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4020.md index 35c80411718..41c7063034d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4020.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4020.md @@ -10,8 +10,12 @@ ms.assetid: 8c4cd6be-9371-4c8c-b0ff-a5ad367bbab0 > 'function' : too many actual parameters +## Remarks + The number of actual parameters in a function call exceeds the number of formal parameters in the function prototype or definition. The compiler passes the extra actual parameters according to the calling convention of the function. +## Example + The following sample generates C4020: ```c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4022.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4022.md index 6afed16f7e6..0d780528bf7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4022.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4022.md @@ -10,4 +10,6 @@ ms.assetid: 9586ca84-4b40-4602-91a4-2e2415b1ab63 > 'function' : pointer mismatch for actual parameter 'number' +## Remarks + The pointer type of the actual parameter differs from the pointer type of the corresponding formal parameter. The actual parameter is passed without change. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4024.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4024.md index ca13786678f..4e1ee50e368 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4024.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4024.md @@ -10,4 +10,6 @@ ms.assetid: f6cb1b70-686a-4747-a01c-de673208209a > 'function' : different types for formal and actual parameter 'number' +## Remarks + Corresponding formal and actual parameters have different types. The compiler passes the actual parameter without change. The receiving function converts the parameter type to the type expected. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4025.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4025.md index a4a9f72e871..ca80e3b57bf 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4025.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4025.md @@ -10,4 +10,6 @@ ms.assetid: c4f6a651-0641-4446-973e-8290065e49ad > 'number' : based pointer passed to function with variable arguments: parameter number +## Remarks + Passing a based pointer to a function with variable arguments causes the pointer to be normalized, with unpredictable results. Do not pass based pointers to functions with variable arguments. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4026.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4026.md index eb838c62666..a76d7abacf2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4026.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4026.md @@ -10,4 +10,6 @@ ms.assetid: 2c8ff616-8d7f-4784-8037-77f8b6a67698 > function declared with formal parameter list +## Remarks + The function declaration has formal parameters, but the function definition does not. Subsequent calls to this function assume that the function takes no parameters. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4027.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4027.md index c3a3de1492d..7800ebafbba 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4027.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4027.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4027"] > function declared without formal parameter list +## Remarks + The function declaration had no formal parameters, but there are formal parameters in the function definition or actual parameters in a call. The compiler accepts, but warns, on an old C-style forward declaration of a function name without a parameter list. On later calls to this function, the compiler assumes that the function takes actual parameters of the types found in the function definition or call. We recommend you modify your function declaration diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4028.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4028.md index 2c219394619..27a4dacee5f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4028.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4028.md @@ -10,6 +10,8 @@ ms.assetid: c3e8b70b-e870-416c-a285-bba5f71dbfc6 > formal parameter 'number' different from declaration +## Remarks + The type of the formal parameter does not agree with the corresponding parameter in the declaration. The type in the original declaration is used. This warning is only valid for C source code. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4029.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4029.md index 6a3129b3bc2..bf13ffb9b4a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4029.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4029.md @@ -10,4 +10,6 @@ ms.assetid: a5c50bab-a189-44c9-aa5c-4377c7c8443a > declared formal parameter list different from definition +## Remarks + Formal parameter types in the function declaration do not agree with those in the function definition. The compiler uses the parameter list from the definition. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4030.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4030.md index 076df2dfbfc..9065e8c442f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4030.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4030.md @@ -10,4 +10,6 @@ ms.assetid: 155b290e-4777-4704-ad35-02968b1e4c5e > first formal parameter list longer than the second list +## Remarks + A function was redeclared with different formal parameters. The compiler uses the formal parameters given in the first declaration. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4031.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4031.md index 1eeb66ef262..c0d2b536e12 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4031.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4031.md @@ -10,4 +10,6 @@ ms.assetid: 8ac4965d-75e2-42db-9763-3f6ae707e1e1 > second formal parameter list longer than the first list +## Remarks + A function is redeclared with different formal parameters. The compiler uses the formal parameters given in the first declaration. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4033.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4033.md index 027a41483d8..0b6f89a97f2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4033.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4033.md @@ -10,12 +10,16 @@ ms.assetid: 189a9ec3-ff6d-49dd-b9b2-530b28bbb7c9 > 'function' must return a value +## Remarks + The function does not return a value. An undefined value is returned. Functions that use **`return`** without a return value must be declared as type **`void`**. This error is for C language code. +## Example + The following sample generates C4033: ```c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4034.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4034.md index 9867be46f24..2d4c62cab43 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4034.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4034.md @@ -10,4 +10,6 @@ ms.assetid: 1d2f598d-bdfc-4a95-9617-424b591ed3e8 > sizeof returns 0 +## Remarks + The **`sizeof`** operator is applied to an operand of size zero (an empty structure, union, class, or enumerated type, or type **`void`**). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4036.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4036.md index ed59cb0f7c2..6319fcd0765 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4036.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4036.md @@ -10,6 +10,8 @@ ms.assetid: f0b15359-4d62-48ec-8cb1-a7b36587a47f > unnamed 'type' as actual parameter +## Remarks + No type name is given for a structure, union, enumeration, or class used as an actual parameter. If you are using [/Zg](../../build/reference/zg-generate-function-prototypes.md) to generate function prototypes, the compiler issues this warning and comments out the formal parameter in the generated prototype. Specify a type name to resolve this warning. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4038.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4038.md index b1bc41aa01d..740370bc2bc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4038.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4038.md @@ -10,4 +10,6 @@ ms.assetid: 54c7f4ed-9386-436e-b4be-bf6c338ded64 > 'modifier' : illegal ambient class modifier +## Remarks + This modifier cannot be used for classes with **`dllimport`** or [dllexport](../../cpp/dllexport-dllimport.md) attributes. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4007.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4007.md index 336918d5ce0..6050ea6e3ea 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4007.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4007.md @@ -9,4 +9,6 @@ helpviewer_keywords: ["C4007"] > '*function*': must be '*attribute*' +## Remarks + A required attribute for a function isn't explicitly stated. For example, the function `main` must have the `__cdecl` attribute. The compiler forces the attribute. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4013.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4013.md index ed95975f76c..8e59b058eb8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4013.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4013.md @@ -10,6 +10,8 @@ ms.assetid: 9f9afc71-6e78-463d-9d66-3012d6a3cd5d > 'function' undefined; assuming extern returning int +## Remarks + The compiler encountered a call to an undefined function. ### To fix by checking the following possible causes diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4018.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4018.md index 9dd5d2ec50a..8920c028739 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4018.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4018.md @@ -9,10 +9,10 @@ helpviewer_keywords: ["C4018"] > '*token*' : signed/unsigned mismatch -Using the *token* operator to compare **`signed`** and **`unsigned`** numbers required the compiler to convert the **`signed`** value to **`unsigned`**. - ## Remarks +Using the *token* operator to compare **`signed`** and **`unsigned`** numbers required the compiler to convert the **`signed`** value to **`unsigned`**. + One way to fix this warning is if you cast one of the two types when you compare **`signed`** and **`unsigned`** types. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4023.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4023.md index 98d56364381..b7b214cd673 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4023.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4023.md @@ -10,6 +10,8 @@ ms.assetid: 615d5374-d7c1-42eb-acfd-917c053270c8 > 'symbol' : based pointer passed to unprototyped function : parameter number +## Remarks + Passing a based pointer to an unprototyped function causes the pointer to be normalized, with unpredictable results. This warning may be fixed if you use prototype functions that are passed based pointers. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4001.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4001.md index 73499a45793..a0befc62655 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4001.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4001.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4001"] > nonstandard extension 'single line comment' was used +## Remarks + > [!NOTE] > This warning is removed in Visual Studio 2017 version 15.5 because single-line comments are standard in C99. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4019.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4019.md index 031a44adaaf..4ae064031cf 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4019.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4019.md @@ -10,6 +10,8 @@ ms.assetid: 4ecfe85d-673f-4334-8154-36fe7f0b3444 > empty statement at global scope +## Remarks + A semicolon at global scope isn't preceded by a statement. This warning may be fixed if you remove the extra semicolon. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4032.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4032.md index 3d1ac36b41d..399fa1131f3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4032.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4032.md @@ -10,6 +10,8 @@ ms.assetid: 70dd0c85-0239-43f9-bb06-507f6a57d206 > formal parameter 'number' has different type when promoted +## Remarks + The parameter type is not compatible, through default promotions, with the type in a previous declaration. This is an error in ANSI C ([/Za](../../build/reference/za-ze-disable-language-extensions.md)) and a warning under Microsoft extensions (/Ze). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-levels-2-and-3-c4008.md b/docs/error-messages/compiler-warnings/compiler-warning-levels-2-and-3-c4008.md index 8f89ccb6137..9544329f18d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-levels-2-and-3-c4008.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-levels-2-and-3-c4008.md @@ -10,6 +10,8 @@ ms.assetid: fb45e535-cb68-4743-80e9-a6e34cfffeca > 'identifier' : 'attribute' attribute ignored +## Remarks + The compiler ignored the **`__fastcall`**, **`static`**, or **`inline`** attribute for a function (level 3 warning) or data (level 2 warning). ### To fix by checking the following possible causes From 1b700502766cc9458185f6b1dff91d4d80a7c14f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 24 Aug 2025 23:17:51 +0800 Subject: [PATCH 1567/2255] Replace term "sample" with "example" for warning references in range [C4000, C4040] --- .../compiler-warnings/compiler-warning-level-1-c4002.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4003.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4005.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4006.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4010.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4020.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4028.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4033.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4036.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4018.md | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4002.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4002.md index b3961663d4f..62284bf3e6c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4002.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4002.md @@ -17,7 +17,7 @@ C4002 can occur when incorrectly using [variadic macros](../../preprocessor/vari ## Examples -The following sample generates C4002: +The following example generates C4002: ```cpp // C4002.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4003.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4003.md index b297c1e24d2..a5427f48ba2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4003.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4003.md @@ -15,7 +15,7 @@ The number of formal parameters in the macro definition exceeds the number of ac ## Example -The following sample generates C4003: +The following example generates C4003: ```cpp // C4003.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4005.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4005.md index fee124bbfa4..9e205787e3d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4005.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4005.md @@ -28,7 +28,7 @@ The macro identifier is defined twice. The compiler uses the second macro defini ## Example -The following sample generates C4005: +The following example generates C4005: ```cpp // C4005.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4006.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4006.md index 451f3510159..59df8f7fff2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4006.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4006.md @@ -16,7 +16,7 @@ The `#undef` directive did not specify an identifier to undefine. The directive ## Example -The following sample generates C4006: +The following example generates C4006: ```cpp // C4006.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4010.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4010.md index bd55b1af0bb..d45865d9778 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4010.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4010.md @@ -18,7 +18,7 @@ Some syntax-directed editors do not indicate the line following the continuation ## Example -The following sample generates C4010: +The following example generates C4010: ```cpp // C4010.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4020.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4020.md index 41c7063034d..5341ede6bc8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4020.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4020.md @@ -16,7 +16,7 @@ The number of actual parameters in a function call exceeds the number of formal ## Example -The following sample generates C4020: +The following example generates C4020: ```c // C4020.c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4028.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4028.md index 27a4dacee5f..b5bba11ae05 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4028.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4028.md @@ -18,7 +18,7 @@ This warning is only valid for C source code. ## Example -The following sample generates C4028. +The following example generates C4028. ```c // C4028.c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4033.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4033.md index 0b6f89a97f2..4afea1bd20d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4033.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4033.md @@ -20,7 +20,7 @@ This error is for C language code. ## Example -The following sample generates C4033: +The following example generates C4033: ```c // C4033.c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4036.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4036.md index 6319fcd0765..8e61a8ca43e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4036.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4036.md @@ -18,7 +18,7 @@ Specify a type name to resolve this warning. ## Example -The following sample generates C4036. +The following example generates C4036. ```c // C4036.c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4018.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4018.md index 8920c028739..83dab0c48c0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4018.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4018.md @@ -17,7 +17,7 @@ One way to fix this warning is if you cast one of the two types when you compare ## Example -This sample generates C4018 and shows how to fix it: +This example generates C4018 and shows how to fix it: ```cpp // C4018.cpp From 48b44aeb21febad994c9351f00210633670d7f14 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 24 Aug 2025 23:22:31 +0800 Subject: [PATCH 1568/2255] Update metadata for warning references in range [C4000, C4040] --- .../compiler-warnings/compiler-warning-level-1-c4002.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4003.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4005.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4006.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4010.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4015.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4020.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4022.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4024.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4025.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4026.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4027.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4028.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4029.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4030.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4031.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4033.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4034.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4036.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4038.md | 5 ++--- .../compiler-warnings/compiler-warning-level-2-c4007.md | 4 ++-- .../compiler-warnings/compiler-warning-level-3-c4013.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4023.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4001.md | 4 ++-- .../compiler-warnings/compiler-warning-level-4-c4019.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4032.md | 5 ++--- .../compiler-warning-levels-2-and-3-c4008.md | 5 ++--- 27 files changed, 53 insertions(+), 75 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4002.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4002.md index 62284bf3e6c..be577e0b73b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4002.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4002.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 1, Error) C4002" title: "Compiler Warning (level 1, Error) C4002" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1, Error) C4002" +ms.date: 11/04/2016 f1_keywords: ["C4002"] helpviewer_keywords: ["C4002"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4003.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4003.md index a5427f48ba2..45a2adcf25c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4003.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4003.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 1, Error) C4003" title: "Compiler Warning (level 1, Error) C4003" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1, Error) C4003" +ms.date: 11/04/2016 f1_keywords: ["C4003"] helpviewer_keywords: ["C4003"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4005.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4005.md index 9e205787e3d..69a14d6e511 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4005.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4005.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4005" title: "Compiler Warning (level 1) C4005" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4005" +ms.date: 11/04/2016 f1_keywords: ["C4005"] helpviewer_keywords: ["C4005"] -ms.assetid: 7f2dc79a-9fcb-4d5b-be61-120d9cb487ad --- # Compiler Warning (level 1) C4005 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4006.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4006.md index 59df8f7fff2..c39751f601c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4006.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4006.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4006" title: "Compiler Warning (level 1) C4006" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4006" +ms.date: 11/04/2016 f1_keywords: ["C4006"] helpviewer_keywords: ["C4006"] -ms.assetid: f1a59819-0fd2-4361-8e3a-99e4b514b8e1 --- # Compiler Warning (level 1) C4006 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4010.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4010.md index d45865d9778..ae54258c558 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4010.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4010.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4010" title: "Compiler Warning (level 1) C4010" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4010" +ms.date: 11/04/2016 f1_keywords: ["C4010"] helpviewer_keywords: ["C4010"] -ms.assetid: d607a9ff-8f8f-45c0-b07b-3b2f439e5485 --- # Compiler Warning (level 1) C4010 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4015.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4015.md index a0c9c858175..17fcd129fdb 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4015.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4015.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4015" title: "Compiler Warning (level 1) C4015" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4015" +ms.date: 11/04/2016 f1_keywords: ["C4015"] helpviewer_keywords: ["C4015"] -ms.assetid: 7242ab90-c869-482f-8152-46728575837e --- # Compiler Warning (level 1) C4015 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4020.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4020.md index 5341ede6bc8..587b65dc88e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4020.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4020.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4020" title: "Compiler Warning (level 1) C4020" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4020" +ms.date: 11/04/2016 f1_keywords: ["C4020"] helpviewer_keywords: ["C4020"] -ms.assetid: 8c4cd6be-9371-4c8c-b0ff-a5ad367bbab0 --- # Compiler Warning (level 1) C4020 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4022.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4022.md index 0d780528bf7..ee13a0d21af 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4022.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4022.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4022" title: "Compiler Warning (level 1) C4022" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4022" +ms.date: 11/04/2016 f1_keywords: ["C4022"] helpviewer_keywords: ["C4022"] -ms.assetid: 9586ca84-4b40-4602-91a4-2e2415b1ab63 --- # Compiler Warning (level 1) C4022 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4024.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4024.md index 4e1ee50e368..f4fb400f3cf 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4024.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4024.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4024" title: "Compiler Warning (level 1) C4024" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4024" +ms.date: 11/04/2016 f1_keywords: ["C4024"] helpviewer_keywords: ["C4024"] -ms.assetid: f6cb1b70-686a-4747-a01c-de673208209a --- # Compiler Warning (level 1) C4024 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4025.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4025.md index ca80e3b57bf..d9c89fd4608 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4025.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4025.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4025" title: "Compiler Warning (level 1) C4025" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4025" +ms.date: 11/04/2016 f1_keywords: ["C4025"] helpviewer_keywords: ["C4025"] -ms.assetid: c4f6a651-0641-4446-973e-8290065e49ad --- # Compiler Warning (level 1) C4025 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4026.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4026.md index a76d7abacf2..4aa8c4d8323 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4026.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4026.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4026" title: "Compiler Warning (level 1) C4026" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4026" +ms.date: 11/04/2016 f1_keywords: ["C4026"] helpviewer_keywords: ["C4026"] -ms.assetid: 2c8ff616-8d7f-4784-8037-77f8b6a67698 --- # Compiler Warning (level 1) C4026 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4027.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4027.md index 7800ebafbba..cf626d581a8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4027.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4027.md @@ -1,6 +1,6 @@ --- -description: "Learn more about compiler warning (level 1) C4027" title: "Compiler Warning (level 1) C4027" +description: "Learn more about compiler warning (level 1) C4027" ms.date: 12/16/2020 f1_keywords: ["C4027"] helpviewer_keywords: ["C4027"] diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4028.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4028.md index b5bba11ae05..8b090d3b4ba 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4028.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4028.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4028" title: "Compiler Warning (level 1) C4028" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4028" +ms.date: 11/04/2016 f1_keywords: ["C4028"] helpviewer_keywords: ["C4028"] -ms.assetid: c3e8b70b-e870-416c-a285-bba5f71dbfc6 --- # Compiler Warning (level 1) C4028 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4029.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4029.md index bf13ffb9b4a..fc2983d339e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4029.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4029.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4029" title: "Compiler Warning (level 1) C4029" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4029" +ms.date: 11/04/2016 f1_keywords: ["C4029"] helpviewer_keywords: ["C4029"] -ms.assetid: a5c50bab-a189-44c9-aa5c-4377c7c8443a --- # Compiler Warning (level 1) C4029 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4030.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4030.md index 9065e8c442f..c36e7b4667b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4030.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4030.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4030" title: "Compiler Warning (level 1) C4030" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4030" +ms.date: 11/04/2016 f1_keywords: ["C4030"] helpviewer_keywords: ["C4030"] -ms.assetid: 155b290e-4777-4704-ad35-02968b1e4c5e --- # Compiler Warning (level 1) C4030 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4031.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4031.md index c0d2b536e12..f87f4f40fd2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4031.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4031.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4031" title: "Compiler Warning (level 1) C4031" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4031" +ms.date: 11/04/2016 f1_keywords: ["C4031"] helpviewer_keywords: ["C4031"] -ms.assetid: 8ac4965d-75e2-42db-9763-3f6ae707e1e1 --- # Compiler Warning (level 1) C4031 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4033.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4033.md index 4afea1bd20d..0243da64091 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4033.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4033.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4033" title: "Compiler Warning (level 1) C4033" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4033" +ms.date: 11/04/2016 f1_keywords: ["C4033"] helpviewer_keywords: ["C4033"] -ms.assetid: 189a9ec3-ff6d-49dd-b9b2-530b28bbb7c9 --- # Compiler Warning (level 1) C4033 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4034.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4034.md index 2d4c62cab43..b1f4596f19e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4034.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4034.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4034" title: "Compiler Warning (level 1) C4034" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4034" +ms.date: 11/04/2016 f1_keywords: ["C4034"] helpviewer_keywords: ["C4034"] -ms.assetid: 1d2f598d-bdfc-4a95-9617-424b591ed3e8 --- # Compiler Warning (level 1) C4034 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4036.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4036.md index 8e61a8ca43e..aa7a3ae06af 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4036.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4036.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4036" title: "Compiler Warning (level 1) C4036" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4036" +ms.date: 11/04/2016 f1_keywords: ["C4036"] helpviewer_keywords: ["C4036"] -ms.assetid: f0b15359-4d62-48ec-8cb1-a7b36587a47f --- # Compiler Warning (level 1) C4036 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4038.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4038.md index 740370bc2bc..1ae8f389eee 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4038.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4038.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4038" title: "Compiler Warning (level 1) C4038" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4038" +ms.date: 11/04/2016 f1_keywords: ["C4038"] helpviewer_keywords: ["C4038"] -ms.assetid: 54c7f4ed-9386-436e-b4be-bf6c338ded64 --- # Compiler Warning (level 1) C4038 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4007.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4007.md index 6050ea6e3ea..b9e5c6c8da4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4007.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4007.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4007" title: "Compiler Warning (level 3) C4007" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4007" +ms.date: 11/04/2016 f1_keywords: ["C4007"] helpviewer_keywords: ["C4007"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4013.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4013.md index 8e59b058eb8..d31e60b7584 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4013.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4013.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4013" title: "Compiler Warning (level 3) C4013" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4013" +ms.date: 11/04/2016 f1_keywords: ["C4013"] helpviewer_keywords: ["C4013"] -ms.assetid: 9f9afc71-6e78-463d-9d66-3012d6a3cd5d --- # Compiler Warning (level 3) C4013 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4023.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4023.md index b7b214cd673..f11f88a5ed2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4023.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4023.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4023" title: "Compiler Warning (level 3) C4023" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4023" +ms.date: 11/04/2016 f1_keywords: ["C4023"] helpviewer_keywords: ["C4023"] -ms.assetid: 615d5374-d7c1-42eb-acfd-917c053270c8 --- # Compiler Warning (level 3) C4023 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4001.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4001.md index a0befc62655..f5c0cdd330b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4001.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4001.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 4, no longer emitted) C4001" title: "Compiler Warning (level 4, no longer emitted) C4001" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4, no longer emitted) C4001" +ms.date: 11/04/2016 f1_keywords: ["C4001"] helpviewer_keywords: ["C4001"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4019.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4019.md index 4ae064031cf..32cd66274e5 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4019.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4019.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4019" title: "Compiler Warning (level 4) C4019" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4019" +ms.date: 11/04/2016 f1_keywords: ["C4019"] helpviewer_keywords: ["C4019"] -ms.assetid: 4ecfe85d-673f-4334-8154-36fe7f0b3444 --- # Compiler Warning (level 4) C4019 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4032.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4032.md index 399fa1131f3..b5e045ee4f2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4032.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4032.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4032" title: "Compiler Warning (level 4) C4032" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4032" +ms.date: 11/04/2016 f1_keywords: ["C4032"] helpviewer_keywords: ["C4032"] -ms.assetid: 70dd0c85-0239-43f9-bb06-507f6a57d206 --- # Compiler Warning (level 4) C4032 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-levels-2-and-3-c4008.md b/docs/error-messages/compiler-warnings/compiler-warning-levels-2-and-3-c4008.md index 9544329f18d..0b0adbc8898 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-levels-2-and-3-c4008.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-levels-2-and-3-c4008.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (levels 2 and 3) C4008" title: "Compiler Warning (levels 2 and 3) C4008" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (levels 2 and 3) C4008" +ms.date: 11/04/2016 f1_keywords: ["C4008"] helpviewer_keywords: ["C4008"] -ms.assetid: fb45e535-cb68-4743-80e9-a6e34cfffeca --- # Compiler Warning (levels 2 and 3) C4008 From c82dc943253970d2adc9e295365e28659360461c Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 24 Aug 2025 23:25:06 +0800 Subject: [PATCH 1569/2255] Add leading example sentence in C4019 warning reference --- .../compiler-warnings/compiler-warning-level-4-c4019.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4019.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4019.md index 32cd66274e5..cdb8721b010 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4019.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4019.md @@ -20,6 +20,8 @@ This warning may be fixed if you remove the extra semicolon. ## Example +The following example generates C4019: + ```c // C4019.c // compile with: /Za /W4 From 7f67950d3c61a559ccb4b841846825c0454c33dc Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 25 Aug 2025 22:46:38 +0800 Subject: [PATCH 1570/2255] Add blockquotes for warning messages in range [C4041, C4080] --- .../compiler-warnings/compiler-warning-level-1-c4041.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4042.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4045.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4047.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4048.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4049.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4068.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4074.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4075.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4077.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4079.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4080.md | 2 +- .../compiler-warnings/compiler-warning-level-2-c4051.md | 2 +- .../compiler-warnings/compiler-warning-level-2-c4056.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4066.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4073.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4053.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4057.md | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4041.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4041.md index 1dc226cd33f..baa6a3dcdbe 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4041.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4041.md @@ -8,7 +8,7 @@ ms.assetid: 107ee9fd-4b88-4f22-a18f-a20726831095 --- # Compiler Warning (level 1) C4041 -compiler limit : terminating browser output +> compiler limit : terminating browser output Browser information exceeded the compiler limit. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4042.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4042.md index 4ec209f86f8..37a8b702476 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4042.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4042.md @@ -8,7 +8,7 @@ ms.assetid: e4bd861b-1194-426b-bf79-68c5b021eb0a --- # Compiler Warning (level 1) C4042 -'identifier' : has bad storage class +> 'identifier' : has bad storage class The specified storage class cannot be used with this identifier in this context. The compiler uses the default storage class instead: diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4045.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4045.md index 92468659928..bea1da1292e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4045.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4045.md @@ -8,7 +8,7 @@ ms.assetid: 3c6f7373-da91-45cd-b224-f49f7d8b4df0 --- # Compiler Warning (level 1) C4045 -'array' : array bounds overflow +> 'array' : array bounds overflow The array has too many initializers. Extra initializers are ignored. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4047.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4047.md index 229da7ccbde..3e3ff94a06e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4047.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4047.md @@ -8,7 +8,7 @@ ms.assetid: b75ad6fb-5c93-4434-a85f-c4083051a5de --- # Compiler Warning (level 1) C4047 -'operator' : 'identifier1' differs in levels of indirection from 'identifier2' +> 'operator' : 'identifier1' differs in levels of indirection from 'identifier2' A pointer can point to a variable (one level of indirection), to another pointer that points to a variable (two levels of indirection), and so on. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4048.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4048.md index a3786cb575b..9a855f54e9a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4048.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4048.md @@ -8,7 +8,7 @@ ms.assetid: 8429f513-4732-40f1-8e56-4c224e723bcb --- # Compiler Warning (level 1) C4048 -different declared array subscripts : 'identifier1' and 'identifier2' +> different declared array subscripts : 'identifier1' and 'identifier2' An expression involves pointers to arrays of different size. The pointers are used without conversion. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4049.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4049.md index d13fb15e544..32af4838737 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4049.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4049.md @@ -8,7 +8,7 @@ ms.assetid: d11c1870-bcfc-4d71-8945-b87ec6ec3514 --- # Compiler Warning (level 1) C4049 -compiler limit : terminating line number emission +> compiler limit : terminating line number emission The file contains more than 16,777,215 (224-1) source lines. The compiler stops numbering at 16,777,215. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4068.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4068.md index f6f9cadd5f9..64a4747c007 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4068.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4068.md @@ -8,7 +8,7 @@ ms.assetid: 96a7397a-4eab-44ab-b3bb-36747503f7e5 --- # Compiler Warning (level 1) C4068 -unknown pragma +> unknown pragma The compiler ignored an unrecognized [pragma](../../preprocessor/pragma-directives-and-the-pragma-keyword.md). Be sure the **pragma** is allowed by the compiler you are using. The following sample generates C4068: diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4074.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4074.md index 8d4fbe8f3a6..36504dee456 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4074.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4074.md @@ -8,7 +8,7 @@ ms.assetid: cd510e66-c338-4a86-a4d7-bfa1df9b16c3 --- # Compiler Warning (level 1) C4074 -initializers put in compiler reserved initialization area +> initializers put in compiler reserved initialization area The compiler initialization area, which is specified by [#pragma init_seg](../../preprocessor/init-seg.md), is reserved by Microsoft. Code in this area may be executed before initialization of the C run-time library. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4075.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4075.md index 4fe1b0c563a..37373a95762 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4075.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4075.md @@ -8,7 +8,7 @@ ms.assetid: 19a700b6-f210-4b9d-a2f2-76cfe39ab178 --- # Compiler Warning (level 1) C4075 -initializers put in unrecognized initialization area +> initializers put in unrecognized initialization area A [#pragma init_seg](../../preprocessor/init-seg.md) uses an unrecognized section name. The compiler ignores the **pragma** command. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4077.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4077.md index c6c140c75ae..a88f5393e66 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4077.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4077.md @@ -8,7 +8,7 @@ ms.assetid: c2d28805-b33f-41ad-afba-33b3f788c649 --- # Compiler Warning (level 1) C4077 -unknown check_stack option +> unknown check_stack option The old form of the **check_stack** pragma is used with an unknown argument. The argument must be `+`, `-`, `(on)`, `(off)`, or empty. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4079.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4079.md index aa3914ce05d..0d2c3b6c5eb 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4079.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4079.md @@ -8,7 +8,7 @@ ms.assetid: 549759f0-e168-47e9-8c9a-de93ac843689 --- # Compiler Warning (level 1) C4079 -unexpected token 'token' +> unexpected token 'token' An unexpected separator token occurs in a pragma argument list. The remainder of the pragma was ignored. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4080.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4080.md index 4c78d21774f..abb80b20d96 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4080.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4080.md @@ -8,7 +8,7 @@ ms.assetid: 964fb3f4-b9fd-450b-aa23-35cece126172 --- # Compiler Warning (level 1) C4080 -expected identifier for segment name; found 'symbol' +> expected identifier for segment name; found 'symbol' The name of the segment in [#pragma alloc_text](../../preprocessor/alloc-text.md) must be a string or an identifier. The compiler ignores the pragma if a valid identifier is not found. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4051.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4051.md index d512d8c5c57..4d3fe502e14 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4051.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4051.md @@ -8,7 +8,7 @@ ms.assetid: 8c964e70-df12-45ff-93b9-496ad4271191 --- # Compiler Warning (level 2) C4051 -type conversion; possible loss of data +> type conversion; possible loss of data An expression contains two data items with different base types. Converting one type causes the data item to be truncated. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4056.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4056.md index e619ad2ebb1..205da54329b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4056.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4056.md @@ -8,7 +8,7 @@ ms.assetid: a3c3a9b8-ec30-452d-96cb-3694adcce789 --- # Compiler Warning (level 2) C4056 -overflow in floating point constant arithmetic +> overflow in floating point constant arithmetic Floating-point constant arithmetic generates a result that exceeds the maximum allowable value. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4066.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4066.md index 11ddd3399f2..18d193caebe 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4066.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4066.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C4066"] --- # Compiler Warning (level 3) C4066 -characters beyond first in wide-character constant ignored +> characters beyond first in wide-character constant ignored The compiler processes only the first character of a wide-character constant. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4073.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4073.md index 18ebb50854c..29f4ff3ae7b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4073.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4073.md @@ -8,7 +8,7 @@ ms.assetid: 50081a6e-6acd-45ff-8484-9b1ea926cc5c --- # Compiler Warning (level 3) C4073 -initializers put in library initialization area +> initializers put in library initialization area Only third-party library developers should use the library initialization area, which is specified by [#pragma init_seg](../../preprocessor/init-seg.md). The following sample generates C4073: diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4053.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4053.md index dec8704399d..3faf74f0a8b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4053.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4053.md @@ -8,6 +8,6 @@ ms.assetid: e3b8c46e-e36d-412c-99b9-3db860b6e307 --- # Compiler Warning (level 4) C4053 -one void operand for '?:' +> one void operand for '?:' The `?:` operator is given an expression of type **`void`**. The value of the **`void`** operand is undefined. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4057.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4057.md index d335a6fab05..bf4e73eba01 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4057.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4057.md @@ -8,7 +8,7 @@ ms.assetid: e75d0645-84c9-4bef-a812-942ed9879aa3 --- # Compiler Warning (level 4) C4057 -'operator' : 'identifier1' indirection to slightly different base types from 'identifier2' +> 'operator' : 'identifier1' indirection to slightly different base types from 'identifier2' Two pointer expressions refer to different base types. The expressions are used without conversion. From 9710b3ffca20e4c05eca164c9e54096edb23687a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 25 Aug 2025 22:53:45 +0800 Subject: [PATCH 1571/2255] Add "Remarks" and "Example" headings for warning references in range [C4041, C4080] --- .../compiler-warnings/compiler-warning-level-1-c4041.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4042.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4045.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4047.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4048.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4049.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4052.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4068.md | 8 +++++++- .../compiler-warnings/compiler-warning-level-1-c4074.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4075.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4077.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4079.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4080.md | 4 ++++ .../compiler-warnings/compiler-warning-level-2-c4051.md | 2 ++ .../compiler-warnings/compiler-warning-level-2-c4056.md | 4 ++++ .../compiler-warnings/compiler-warning-level-3-c4066.md | 4 ++++ .../compiler-warnings/compiler-warning-level-3-c4073.md | 8 +++++++- .../compiler-warnings/compiler-warning-level-4-c4053.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4057.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4061.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4062.md | 2 ++ 21 files changed, 68 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4041.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4041.md index baa6a3dcdbe..cc3497f46fd 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4041.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4041.md @@ -10,6 +10,8 @@ ms.assetid: 107ee9fd-4b88-4f22-a18f-a20726831095 > compiler limit : terminating browser output +## Remarks + Browser information exceeded the compiler limit. This warning can be caused by compiling with [/FR](../../build/reference/fr-fr-create-dot-sbr-file.md) (browser information including local variables). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4042.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4042.md index 37a8b702476..fe0c81806dd 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4042.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4042.md @@ -10,6 +10,8 @@ ms.assetid: e4bd861b-1194-426b-bf79-68c5b021eb0a > 'identifier' : has bad storage class +## Remarks + The specified storage class cannot be used with this identifier in this context. The compiler uses the default storage class instead: - **`extern`**, if *identifier* is a function. @@ -20,6 +22,8 @@ The specified storage class cannot be used with this identifier in this context. This warning can be caused by specifying a storage class other than **`register`** in a parameter declaration. +## Example + The following sample generates C4042 ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4045.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4045.md index bea1da1292e..51538b4de45 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4045.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4045.md @@ -10,6 +10,8 @@ ms.assetid: 3c6f7373-da91-45cd-b224-f49f7d8b4df0 > 'array' : array bounds overflow +## Remarks + The array has too many initializers. Extra initializers are ignored. Make sure that array elements and initializers match in size and quantity. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4047.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4047.md index 3e3ff94a06e..81673c12421 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4047.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4047.md @@ -10,6 +10,8 @@ ms.assetid: b75ad6fb-5c93-4434-a85f-c4083051a5de > 'operator' : 'identifier1' differs in levels of indirection from 'identifier2' +## Remarks + A pointer can point to a variable (one level of indirection), to another pointer that points to a variable (two levels of indirection), and so on. ## Examples diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4048.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4048.md index 9a855f54e9a..ec2c0eb53fc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4048.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4048.md @@ -10,6 +10,8 @@ ms.assetid: 8429f513-4732-40f1-8e56-4c224e723bcb > different declared array subscripts : 'identifier1' and 'identifier2' +## Remarks + An expression involves pointers to arrays of different size. The pointers are used without conversion. This warning may be fixed if you explicitly cast the arrays to the same or equivalent type. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4049.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4049.md index 32af4838737..37c946ac959 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4049.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4049.md @@ -10,6 +10,8 @@ ms.assetid: d11c1870-bcfc-4d71-8945-b87ec6ec3514 > compiler limit : terminating line number emission +## Remarks + The file contains more than 16,777,215 (224-1) source lines. The compiler stops numbering at 16,777,215. For code after line 16,777,215: diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4052.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4052.md index aaf4746a460..9cc1cbc5de8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4052.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4052.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C4052"] > function declarations different; one contains variable arguments +## Remarks + One declaration of the function doesn't contain variable arguments. The empty declaration is ignored. +## Example + The following sample generates C4052: ```c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4068.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4068.md index 64a4747c007..b26863122b6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4068.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4068.md @@ -10,7 +10,13 @@ ms.assetid: 96a7397a-4eab-44ab-b3bb-36747503f7e5 > unknown pragma -The compiler ignored an unrecognized [pragma](../../preprocessor/pragma-directives-and-the-pragma-keyword.md). Be sure the **pragma** is allowed by the compiler you are using. The following sample generates C4068: +## Remarks + +The compiler ignored an unrecognized [pragma](../../preprocessor/pragma-directives-and-the-pragma-keyword.md). Be sure the **pragma** is allowed by the compiler you are using. + +## Example + +The following sample generates C4068: ```cpp // C4068.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4074.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4074.md index 36504dee456..42fe346055b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4074.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4074.md @@ -10,8 +10,12 @@ ms.assetid: cd510e66-c338-4a86-a4d7-bfa1df9b16c3 > initializers put in compiler reserved initialization area +## Remarks + The compiler initialization area, which is specified by [#pragma init_seg](../../preprocessor/init-seg.md), is reserved by Microsoft. Code in this area may be executed before initialization of the C run-time library. +## Example + The following sample generates C4074: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4075.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4075.md index 37373a95762..da50dae63e4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4075.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4075.md @@ -10,8 +10,12 @@ ms.assetid: 19a700b6-f210-4b9d-a2f2-76cfe39ab178 > initializers put in unrecognized initialization area +## Remarks + A [#pragma init_seg](../../preprocessor/init-seg.md) uses an unrecognized section name. The compiler ignores the **pragma** command. +## Example + The following sample generates C4075: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4077.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4077.md index a88f5393e66..a9367c599dd 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4077.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4077.md @@ -10,6 +10,8 @@ ms.assetid: c2d28805-b33f-41ad-afba-33b3f788c649 > unknown check_stack option +## Remarks + The old form of the **check_stack** pragma is used with an unknown argument. The argument must be `+`, `-`, `(on)`, `(off)`, or empty. The compiler ignores the pragma and leaves the stack checking unchanged. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4079.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4079.md index 0d2c3b6c5eb..18909cac2cd 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4079.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4079.md @@ -10,8 +10,12 @@ ms.assetid: 549759f0-e168-47e9-8c9a-de93ac843689 > unexpected token 'token' +## Remarks + An unexpected separator token occurs in a pragma argument list. The remainder of the pragma was ignored. +## Example + The following sample generates C4079: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4080.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4080.md index abb80b20d96..876ffe9ed85 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4080.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4080.md @@ -10,8 +10,12 @@ ms.assetid: 964fb3f4-b9fd-450b-aa23-35cece126172 > expected identifier for segment name; found 'symbol' +## Remarks + The name of the segment in [#pragma alloc_text](../../preprocessor/alloc-text.md) must be a string or an identifier. The compiler ignores the pragma if a valid identifier is not found. +## Example + The following sample generates C4080: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4051.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4051.md index 4d3fe502e14..80f85d1b9d2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4051.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4051.md @@ -10,6 +10,8 @@ ms.assetid: 8c964e70-df12-45ff-93b9-496ad4271191 > type conversion; possible loss of data +## Remarks + An expression contains two data items with different base types. Converting one type causes the data item to be truncated. This warning may be fixed if you cast the data items to the appropriate type. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4056.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4056.md index 205da54329b..72d12772a6e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4056.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4056.md @@ -10,10 +10,14 @@ ms.assetid: a3c3a9b8-ec30-452d-96cb-3694adcce789 > overflow in floating point constant arithmetic +## Remarks + Floating-point constant arithmetic generates a result that exceeds the maximum allowable value. This warning can be caused by compiler optimizations performed during constant arithmetic. You can safely ignore this warning if it goes away when you turn off optimization ([/Od](../../build/reference/od-disable-debug.md)). +## Example + The following sample generates C4056: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4066.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4066.md index 18d193caebe..bea8008dd04 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4066.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4066.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C4066"] > characters beyond first in wide-character constant ignored +## Remarks + The compiler processes only the first character of a wide-character constant. +## Example + ```cpp // C4066.cpp // compile with: /W3 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4073.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4073.md index 29f4ff3ae7b..69afeb61b9e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4073.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4073.md @@ -10,7 +10,13 @@ ms.assetid: 50081a6e-6acd-45ff-8484-9b1ea926cc5c > initializers put in library initialization area -Only third-party library developers should use the library initialization area, which is specified by [#pragma init_seg](../../preprocessor/init-seg.md). The following sample generates C4073: +## Remarks + +Only third-party library developers should use the library initialization area, which is specified by [#pragma init_seg](../../preprocessor/init-seg.md). + +## Example + +The following sample generates C4073: ```cpp // C4073.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4053.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4053.md index 3faf74f0a8b..5c818f365d1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4053.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4053.md @@ -10,4 +10,6 @@ ms.assetid: e3b8c46e-e36d-412c-99b9-3db860b6e307 > one void operand for '?:' +## Remarks + The `?:` operator is given an expression of type **`void`**. The value of the **`void`** operand is undefined. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4057.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4057.md index bf4e73eba01..64bde557042 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4057.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4057.md @@ -10,6 +10,8 @@ ms.assetid: e75d0645-84c9-4bef-a812-942ed9879aa3 > 'operator' : 'identifier1' indirection to slightly different base types from 'identifier2' +## Remarks + Two pointer expressions refer to different base types. The expressions are used without conversion. ### To fix by checking the following possible causes diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4061.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4061.md index a3649649a1c..58a6b34fc45 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4061.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4061.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4061"] > enumerator '*identifier*' in switch of `enum` '*enumeration*' is not explicitly handled by a `case` label +## Remarks + The specified enumerator *identifier* has no associated handler in a `switch` statement that has a `default` case. The missing case might be an oversight, or it may not be an issue. Whether the missing `case` is an issue in practice depends on if the default case handles the enumerator. For a related warning on unused enumerators in `switch` statements that have no `default` case, see [C4062](compiler-warning-level-4-c4062.md). This warning is off by default. For more information about how to enable warnings that are off by default, see [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4062.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4062.md index e6430b05b84..a0c79f1a353 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4062.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4062.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4062"] > enumerator '*identifier*' in switch of `enum` '*enumeration*' is not handled +## Remarks + The enumerator *identifier* doesn't have a `case` handler associated with it in a **`switch`** statement, and there's no **`default`** label that can catch it. The missing case may be an oversight, and is a potential error in your code. For a related warning on unused enumerators in **`switch`** statements that have a **`default`** case, see [C4061](compiler-warning-level-4-c4061.md). This warning is off by default. For more information about how to enable warnings that are off by default, see [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). From d8afdf5e05650c35b5efa864dc1926fc732943e0 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 25 Aug 2025 22:54:59 +0800 Subject: [PATCH 1572/2255] Replace term "sample" with "example" for warning references in range [C4041, C4080] --- .../compiler-warnings/compiler-warning-level-1-c4042.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4047.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4052.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4055.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4068.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4074.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4075.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4076.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4079.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4080.md | 2 +- .../compiler-warnings/compiler-warning-level-2-c4056.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4073.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4061.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4062.md | 2 +- 14 files changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4042.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4042.md index fe0c81806dd..64d5cf4765e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4042.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4042.md @@ -24,7 +24,7 @@ This warning can be caused by specifying a storage class other than **`register` ## Example -The following sample generates C4042 +The following example generates C4042 ```cpp // C4042.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4047.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4047.md index 81673c12421..2bb00d6e8be 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4047.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4047.md @@ -16,7 +16,7 @@ A pointer can point to a variable (one level of indirection), to another pointer ## Examples -The following sample generates C4047: +The following example generates C4047: ```c // C4047.c @@ -34,7 +34,7 @@ int main() { } ``` -The following sample generates C4047: +The following example generates C4047: ```c // C4047b.c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4052.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4052.md index 9cc1cbc5de8..106e6813bb3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4052.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4052.md @@ -15,7 +15,7 @@ One declaration of the function doesn't contain variable arguments. The empty de ## Example -The following sample generates C4052: +The following example generates C4052: ```c // C4052.c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4055.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4055.md index 29d27d3b0e8..a487ff40867 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4055.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4055.md @@ -18,7 +18,7 @@ A data pointer is cast (possibly incorrectly) to a function pointer. This is a l ## Example -The following sample generates C4055: +The following example generates C4055: ```C // C4055.c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4068.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4068.md index b26863122b6..aa10e0e7bc0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4068.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4068.md @@ -16,7 +16,7 @@ The compiler ignored an unrecognized [pragma](../../preprocessor/pragma-directiv ## Example -The following sample generates C4068: +The following example generates C4068: ```cpp // C4068.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4074.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4074.md index 42fe346055b..5215bdd2e9d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4074.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4074.md @@ -16,7 +16,7 @@ The compiler initialization area, which is specified by [#pragma init_seg](../.. ## Example -The following sample generates C4074: +The following example generates C4074: ```cpp // C4074.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4075.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4075.md index da50dae63e4..bc4881b5b5e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4075.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4075.md @@ -16,7 +16,7 @@ A [#pragma init_seg](../../preprocessor/init-seg.md) uses an unrecognized sectio ## Example -The following sample generates C4075: +The following example generates C4075: ```cpp // C4075.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4076.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4076.md index ba24a51e7f3..344f01ef21a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4076.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4076.md @@ -16,7 +16,7 @@ A type modifier, whether it is **`signed`** or **`unsigned`**, cannot be used wi ## Example -The following sample generates C4076; to fix it, remove the **`unsigned`** type modifier: +The following example generates C4076; to fix it, remove the **`unsigned`** type modifier: ```cpp // C4076.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4079.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4079.md index 18909cac2cd..1af87abec76 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4079.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4079.md @@ -16,7 +16,7 @@ An unexpected separator token occurs in a pragma argument list. The remainder of ## Example -The following sample generates C4079: +The following example generates C4079: ```cpp // C4079.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4080.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4080.md index 876ffe9ed85..0cd532451e2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4080.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4080.md @@ -16,7 +16,7 @@ The name of the segment in [#pragma alloc_text](../../preprocessor/alloc-text.md ## Example -The following sample generates C4080: +The following example generates C4080: ```cpp // C4080.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4056.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4056.md index 72d12772a6e..f6aaadff02e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4056.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4056.md @@ -18,7 +18,7 @@ This warning can be caused by compiler optimizations performed during constant a ## Example -The following sample generates C4056: +The following example generates C4056: ```cpp // C4056.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4073.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4073.md index 69afeb61b9e..22d12fee6c5 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4073.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4073.md @@ -16,7 +16,7 @@ Only third-party library developers should use the library initialization area, ## Example -The following sample generates C4073: +The following example generates C4073: ```cpp // C4073.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4061.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4061.md index 58a6b34fc45..764f9520993 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4061.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4061.md @@ -17,7 +17,7 @@ This warning is off by default. For more information about how to enable warning ## Example -The following sample generates C4061; add a case for the missing enumerator to fix: +The following example generates C4061; add a case for the missing enumerator to fix: ```cpp // C4061.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4062.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4062.md index a0c79f1a353..058bacf795a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4062.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4062.md @@ -17,7 +17,7 @@ This warning is off by default. For more information about how to enable warning ## Example -The following sample generates C4062, and shows how to fix it: +The following example generates C4062, and shows how to fix it: ```cpp // C4062.cpp From 2421b03da34f0bb535c98b6461a2f11941f8cf8c Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 25 Aug 2025 22:59:06 +0800 Subject: [PATCH 1573/2255] Update metadata for warning references in range [C4041, C4080] --- .../compiler-warnings/compiler-warning-level-1-c4041.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4042.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4045.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4047.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4048.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4049.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4052.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4055.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4067.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4068.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4074.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4075.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4076.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4077.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4079.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4080.md | 5 ++--- .../compiler-warnings/compiler-warning-level-2-c4051.md | 5 ++--- .../compiler-warnings/compiler-warning-level-2-c4056.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4066.md | 4 ++-- .../compiler-warnings/compiler-warning-level-3-c4073.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4053.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4057.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4061.md | 4 ++-- .../compiler-warnings/compiler-warning-level-4-c4062.md | 4 ++-- 24 files changed, 48 insertions(+), 68 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4041.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4041.md index cc3497f46fd..522bdd17d0d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4041.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4041.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4041" title: "Compiler Warning (level 1) C4041" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4041" +ms.date: 11/04/2016 f1_keywords: ["C4041"] helpviewer_keywords: ["C4041"] -ms.assetid: 107ee9fd-4b88-4f22-a18f-a20726831095 --- # Compiler Warning (level 1) C4041 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4042.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4042.md index 64d5cf4765e..2111f2a26b4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4042.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4042.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4042" title: "Compiler Warning (level 1) C4042" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4042" +ms.date: 11/04/2016 f1_keywords: ["C4042"] helpviewer_keywords: ["C4042"] -ms.assetid: e4bd861b-1194-426b-bf79-68c5b021eb0a --- # Compiler Warning (level 1) C4042 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4045.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4045.md index 51538b4de45..3a866f8ae5f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4045.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4045.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4045" title: "Compiler Warning (level 1) C4045" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4045" +ms.date: 11/04/2016 f1_keywords: ["C4045"] helpviewer_keywords: ["C4045"] -ms.assetid: 3c6f7373-da91-45cd-b224-f49f7d8b4df0 --- # Compiler Warning (level 1) C4045 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4047.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4047.md index 2bb00d6e8be..4a9b1b9a0ba 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4047.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4047.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4047" title: "Compiler Warning (level 1) C4047" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4047" +ms.date: 11/04/2016 f1_keywords: ["C4047"] helpviewer_keywords: ["C4047"] -ms.assetid: b75ad6fb-5c93-4434-a85f-c4083051a5de --- # Compiler Warning (level 1) C4047 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4048.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4048.md index ec2c0eb53fc..bf07d4838c3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4048.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4048.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4048" title: "Compiler Warning (level 1) C4048" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4048" +ms.date: 11/04/2016 f1_keywords: ["C4048"] helpviewer_keywords: ["C4048"] -ms.assetid: 8429f513-4732-40f1-8e56-4c224e723bcb --- # Compiler Warning (level 1) C4048 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4049.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4049.md index 37c946ac959..8e31d5fcc0e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4049.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4049.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4049" title: "Compiler Warning (level 1) C4049" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4049" +ms.date: 11/04/2016 f1_keywords: ["C4049"] helpviewer_keywords: ["C4049"] -ms.assetid: d11c1870-bcfc-4d71-8945-b87ec6ec3514 --- # Compiler Warning (level 1) C4049 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4052.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4052.md index 106e6813bb3..d2c29d924f1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4052.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4052.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 1 and level 4) C4052" title: "Compiler Warning (level 1 and level 4) C4052" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1 and level 4) C4052" +ms.date: 11/04/2016 f1_keywords: ["C4052"] helpviewer_keywords: ["C4052"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4055.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4055.md index a487ff40867..766f8180af8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4055.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4055.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4055" title: "Compiler Warning (level 1) C4055" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4055" +ms.date: 11/04/2016 f1_keywords: ["C4055"] helpviewer_keywords: ["C4055"] -ms.assetid: f9955421-16ab-46e5-8f9d-bf1639a519ef --- # Compiler Warning (level 1) C4055 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4067.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4067.md index 10e6a99d949..0feeb5308ac 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4067.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4067.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4067" title: "Compiler Warning (level 1) C4067" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4067" +ms.date: 11/04/2016 f1_keywords: ["C4067"] helpviewer_keywords: ["C4067"] -ms.assetid: 1d10353e-8cd5-4b01-9184-a06189b965a4 --- # Compiler Warning (level 1) C4067 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4068.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4068.md index aa10e0e7bc0..138b6715dff 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4068.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4068.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4068" title: "Compiler Warning (level 1) C4068" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4068" +ms.date: 11/04/2016 f1_keywords: ["C4068"] helpviewer_keywords: ["C4068"] -ms.assetid: 96a7397a-4eab-44ab-b3bb-36747503f7e5 --- # Compiler Warning (level 1) C4068 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4074.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4074.md index 5215bdd2e9d..ce3eb6ac36d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4074.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4074.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4074" title: "Compiler Warning (level 1) C4074" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4074" +ms.date: 11/04/2016 f1_keywords: ["C4074"] helpviewer_keywords: ["C4074"] -ms.assetid: cd510e66-c338-4a86-a4d7-bfa1df9b16c3 --- # Compiler Warning (level 1) C4074 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4075.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4075.md index bc4881b5b5e..5e99eb14589 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4075.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4075.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4075" title: "Compiler Warning (level 1) C4075" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4075" +ms.date: 11/04/2016 f1_keywords: ["C4075"] helpviewer_keywords: ["C4075"] -ms.assetid: 19a700b6-f210-4b9d-a2f2-76cfe39ab178 --- # Compiler Warning (level 1) C4075 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4076.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4076.md index 344f01ef21a..0361ba89332 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4076.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4076.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4076" title: "Compiler Warning (level 1) C4076" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4076" +ms.date: 11/04/2016 f1_keywords: ["C4076"] helpviewer_keywords: ["C4076"] -ms.assetid: 04581066-313a-4a11-bb60-721e6d038d75 --- # Compiler Warning (level 1) C4076 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4077.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4077.md index a9367c599dd..8a7d3077cf3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4077.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4077.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4077" title: "Compiler Warning (level 1) C4077" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4077" +ms.date: 11/04/2016 f1_keywords: ["C4077"] helpviewer_keywords: ["C4077"] -ms.assetid: c2d28805-b33f-41ad-afba-33b3f788c649 --- # Compiler Warning (level 1) C4077 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4079.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4079.md index 1af87abec76..89ec4207fdb 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4079.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4079.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4079" title: "Compiler Warning (level 1) C4079" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4079" +ms.date: 11/04/2016 f1_keywords: ["C4079"] helpviewer_keywords: ["C4079"] -ms.assetid: 549759f0-e168-47e9-8c9a-de93ac843689 --- # Compiler Warning (level 1) C4079 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4080.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4080.md index 0cd532451e2..60c2c69d85b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4080.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4080.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4080" title: "Compiler Warning (level 1) C4080" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4080" +ms.date: 11/04/2016 f1_keywords: ["C4080"] helpviewer_keywords: ["C4080"] -ms.assetid: 964fb3f4-b9fd-450b-aa23-35cece126172 --- # Compiler Warning (level 1) C4080 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4051.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4051.md index 80f85d1b9d2..8d405b80739 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4051.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4051.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 2) C4051" title: "Compiler Warning (level 2) C4051" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 2) C4051" +ms.date: 11/04/2016 f1_keywords: ["C4051"] helpviewer_keywords: ["C4051"] -ms.assetid: 8c964e70-df12-45ff-93b9-496ad4271191 --- # Compiler Warning (level 2) C4051 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4056.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4056.md index f6aaadff02e..f327965b82d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4056.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4056.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 2) C4056" title: "Compiler Warning (level 2) C4056" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 2) C4056" +ms.date: 11/04/2016 f1_keywords: ["C4056"] helpviewer_keywords: ["C4056"] -ms.assetid: a3c3a9b8-ec30-452d-96cb-3694adcce789 --- # Compiler Warning (level 2) C4056 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4066.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4066.md index bea8008dd04..2fe850e6ee0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4066.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4066.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4066" title: "Compiler Warning (level 3) C4066" -ms.date: "03/06/2024" +description: "Learn more about: Compiler Warning (level 3) C4066" +ms.date: 03/06/2024 f1_keywords: ["C4066"] helpviewer_keywords: ["C4066"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4073.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4073.md index 22d12fee6c5..eb4beeba089 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4073.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4073.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4073" title: "Compiler Warning (level 3) C4073" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4073" +ms.date: 11/04/2016 f1_keywords: ["C4073"] helpviewer_keywords: ["C4073"] -ms.assetid: 50081a6e-6acd-45ff-8484-9b1ea926cc5c --- # Compiler Warning (level 3) C4073 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4053.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4053.md index 5c818f365d1..b18683f19f2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4053.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4053.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4053" title: "Compiler Warning (level 4) C4053" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4053" +ms.date: 11/04/2016 f1_keywords: ["C4053"] helpviewer_keywords: ["C4053"] -ms.assetid: e3b8c46e-e36d-412c-99b9-3db860b6e307 --- # Compiler Warning (level 4) C4053 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4057.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4057.md index 64bde557042..a7cac9d610c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4057.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4057.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4057" title: "Compiler Warning (level 4) C4057" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4057" +ms.date: 11/04/2016 f1_keywords: ["C4057"] helpviewer_keywords: ["C4057"] -ms.assetid: e75d0645-84c9-4bef-a812-942ed9879aa3 --- # Compiler Warning (level 4) C4057 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4061.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4061.md index 764f9520993..828c339d2f7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4061.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4061.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 4, off) C4061" title: "Compiler Warning (level 4, off) C4061" -ms.date: "04/05/2019" +description: "Learn more about: Compiler Warning (level 4, off) C4061" +ms.date: 04/05/2019 f1_keywords: ["C4061"] helpviewer_keywords: ["C4061"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4062.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4062.md index 058bacf795a..2862f25d899 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4062.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4062.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 4, off) C4062" title: "Compiler Warning (level 4, off) C4062" -ms.date: "04/05/2019" +description: "Learn more about: Compiler Warning (level 4, off) C4062" +ms.date: 04/05/2019 f1_keywords: ["C4062"] helpviewer_keywords: ["C4062"] --- From acfa37ccc2a30dfb2a7a10ac62768ead024dd1d0 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 25 Aug 2025 23:03:47 +0800 Subject: [PATCH 1574/2255] Add leading example sentence in C4066, C4067, and C4077 warning reference --- .../compiler-warnings/compiler-warning-level-1-c4067.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4077.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4066.md | 2 ++ 3 files changed, 6 insertions(+) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4067.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4067.md index 0feeb5308ac..6091facabd8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4067.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4067.md @@ -15,6 +15,8 @@ The compiler found and ignored extra characters following a preprocessor directi ## Example +The following example generates C4067: + ```cpp // C4067a.cpp // compile with: cl /EHsc /DX /W1 /Za C4067a.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4077.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4077.md index 8a7d3077cf3..de0009d557a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4077.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4077.md @@ -17,6 +17,8 @@ The compiler ignores the pragma and leaves the stack checking unchanged. ## Example +The following example generates C4077: + ```cpp // C4077.cpp // compile with: /W1 /LD diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4066.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4066.md index 2fe850e6ee0..3fcd48bfc7d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4066.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4066.md @@ -15,6 +15,8 @@ The compiler processes only the first character of a wide-character constant. ## Example +The following example generates C4066: + ```cpp // C4066.cpp // compile with: /W3 From 2ac6d8f4776a33a4fec181467bcb358be2efed6c Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 26 Aug 2025 00:18:22 +0800 Subject: [PATCH 1575/2255] Add link and augment remarks in C2014 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2014.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2014.md b/docs/error-messages/compiler-errors-1/compiler-error-c2014.md index 32eb37bf33e..4564ce87bd7 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2014.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2014.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["C2014"] ## Remarks -The `#` sign of a preprocessor directive must be the first character on a line that is not white space. +The `#` sign of a [preprocessor directive](../../preprocessor/preprocessor-directives.md) must be the first character on a line that is not white space. Ensure that the previous line doesn't contain a trailing escape. ## Example From fd253ecf49557c0888db4daa49b39d94c349d522 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 26 Aug 2025 00:23:51 +0800 Subject: [PATCH 1576/2255] Merge and extend example in C2014 error reference --- .../compiler-errors-1/compiler-error-c2014.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2014.md b/docs/error-messages/compiler-errors-1/compiler-error-c2014.md index 4564ce87bd7..d5e726b7030 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2014.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2014.md @@ -19,14 +19,13 @@ The following example generates C2014: ```cpp // C2014.cpp -int k; #include // C2014 -``` +// compile with: /c -Possible resolution: +int a; #define A // C2014 -```cpp -// C2014b.cpp -// compile with: /c -int k; -#include +int b;\ +#define B // C2014 + +int c; +#define C // OK ``` From 8bbe1d3b8a9c3e3dc691c7668f444f78878416da Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 26 Aug 2025 00:24:46 +0800 Subject: [PATCH 1577/2255] Update `ms.date` metadata in C2014 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2014.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2014.md b/docs/error-messages/compiler-errors-1/compiler-error-c2014.md index d5e726b7030..0bbac771005 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2014.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2014.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C2014" description: "Learn more about: Compiler Error C2014" -ms.date: 11/04/2016 +ms.date: 08/25/2025 f1_keywords: ["C2014"] helpviewer_keywords: ["C2014"] --- From 25e3e350f1bad2f93082585dc9e637c6af586d6e Mon Sep 17 00:00:00 2001 From: MacGyver Codilla <77024043+39otsu@users.noreply.github.com> Date: Mon, 25 Aug 2025 09:33:22 -0700 Subject: [PATCH 1578/2255] Update docs/sanitizers/asan-flags.md Co-authored-by: David Justo --- docs/sanitizers/asan-flags.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 046c1e01f19..27b923fc138 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -25,7 +25,7 @@ The following is a list of actively supported options for the AddressSanitizer. |`detect_container_overflow` | `true` | If `true`, honor the container overflow annotations. See [ContainerOverflow](./error-container-overflow.md).| |`detect_invalid_pointer_pairs` | `0` | If `1`, the tool detects operations like <, <=, >, >=, and - on invalid pointer pairs, such as pointers that belong to different objects.| |`detect_stack_use_after_return` | `false` | Experimental. If `true`, ASan enables `stack-use-after-return` checking at runtime. Requires `/fsanitize-address-use-after-return`. See [stack-use-after-return](./error-stack-use-after-return.md).| -|`exitcode` | `1` | Override the program exit status with this value if the tool found an error.| +|`exitcode` | `1` | Override the program exit status with this value if ASan found an error.| |`external_symbolizer_path` | `""` | Path to external symbolizer. If empty, the tool will search `$PATH` for the symbolizer.| |`fast_unwind_on_malloc` | `true` | If available, ASan uses the fast frame-pointer-based unwinder on `malloc`/`free`.| |`halt_on_error` | `true` | Not supported. Use `continue_on_error` for full support.| From 3294e871cc498093edd50c7a34a3b36c4963d75b Mon Sep 17 00:00:00 2001 From: MacGyver Codilla <77024043+39otsu@users.noreply.github.com> Date: Mon, 25 Aug 2025 09:33:36 -0700 Subject: [PATCH 1579/2255] Update docs/sanitizers/asan-flags.md Co-authored-by: David Justo --- docs/sanitizers/asan-flags.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 27b923fc138..0769e6050fe 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -35,7 +35,7 @@ The following is a list of actively supported options for the AddressSanitizer. |`help` | `false` | If `true`, ASan prints the flag options to console.| |`iat_overwrite`|`error`|`error` - report an error whenever an overwrite is detected, `protect` - attempt to avoid using the overwritten definition, `ignore` - never attempt to correct any overwritten functions. See [iat_overwrite](./asan-runtime.md#msvc-specific-addresssanitizer-runtime-options).| |`include_if_exists` | `""` | Takes a path to a file, and reads options from the given file. ASan does not fail if file does not exist.| -|`intercept_strpbrk` | `true` | If `true`, uses custom wrappers for strpbrk function to find more errors.| +|`intercept_strpbrk` | `true` | If `true`, uses custom wrappers for `strpbrk` function to find more errors.| |`intercept_strspn` | `true` | If `true`, uses custom wrappers for strspn and strcspn function to find more errors.| |`intercept_strstr` | `true` | If `true`, uses custom wrappers for strstr and strcasestr functions to find more errors.| |`malloc_context_size` | `1` | Max number of stack frames kept for each allocation/deallocation.| From 9ffd68e1389f7cbf6a080d806fb8506c6d4b1134 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla <77024043+39otsu@users.noreply.github.com> Date: Mon, 25 Aug 2025 09:33:45 -0700 Subject: [PATCH 1580/2255] Update docs/sanitizers/asan-flags.md Co-authored-by: David Justo --- docs/sanitizers/asan-flags.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 0769e6050fe..a848567ee26 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -26,7 +26,8 @@ The following is a list of actively supported options for the AddressSanitizer. |`detect_invalid_pointer_pairs` | `0` | If `1`, the tool detects operations like <, <=, >, >=, and - on invalid pointer pairs, such as pointers that belong to different objects.| |`detect_stack_use_after_return` | `false` | Experimental. If `true`, ASan enables `stack-use-after-return` checking at runtime. Requires `/fsanitize-address-use-after-return`. See [stack-use-after-return](./error-stack-use-after-return.md).| |`exitcode` | `1` | Override the program exit status with this value if ASan found an error.| -|`external_symbolizer_path` | `""` | Path to external symbolizer. If empty, the tool will search `$PATH` for the symbolizer.| +|`external_symbolizer_path` | `""` | Path to external symbolizer. If empty, ASan will search `$PATH` for the symbolizer.| + |`fast_unwind_on_malloc` | `true` | If available, ASan uses the fast frame-pointer-based unwinder on `malloc`/`free`.| |`halt_on_error` | `true` | Not supported. Use `continue_on_error` for full support.| |`handle_segv` | `true` | If `true`, ASan handles `SEGV` errors.| From 0acef6185a48c9f2c5536024a255feb969477273 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla <77024043+39otsu@users.noreply.github.com> Date: Mon, 25 Aug 2025 09:33:57 -0700 Subject: [PATCH 1581/2255] Update docs/sanitizers/asan-flags.md Co-authored-by: David Justo --- docs/sanitizers/asan-flags.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index a848567ee26..98321a6616c 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -43,7 +43,7 @@ The following is a list of actively supported options for the AddressSanitizer. |`malloc_fill_byte` | `0xbe` | Value used to fill the newly allocated memory.| |`max_malloc_fill_size` | `4096` | ASan allocator flag. `max_malloc_fill_size` is the maximal amount of bytes that will be filled with `malloc_fill_byte` on `malloc`.| |`max_redzone` | `2048` | Maximal size (in bytes) of redzones around heap objects.| -|`new_delete_type_mismatch` | `true` | Report errors on mismatch betwen size of new and delete. See [new-delete-type-mismatch](./error-new-delete-type-mismatch.md).| +|`new_delete_type_mismatch` | `true` | Report errors on mismatch between size of `new` and `delete`. See [new-delete-type-mismatch](./error-new-delete-type-mismatch.md).| |`poison_heap` | `true` | Poison (or not) the heap memory on (de-)allocation. Zero value is useful for benchmarking the allocator or instrumentator.| |`poison_partial` | `true` | If `true`, poison partially addressable 8-byte aligned words. This flag affects heap and global buffers, but not stack buffers.| |`print_cmdline` | `false` | Print command line on crash. With `continue_on_error` set >= `1`, print current working directory as `UTF-16` aware.| From 042aa0d85e63aeea66bb47b9c46a9feede96a7cd Mon Sep 17 00:00:00 2001 From: MacGyver Codilla <77024043+39otsu@users.noreply.github.com> Date: Mon, 25 Aug 2025 09:34:31 -0700 Subject: [PATCH 1582/2255] Update docs/sanitizers/asan-flags.md Co-authored-by: David Justo --- docs/sanitizers/asan-flags.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 98321a6616c..d0ab298dcf9 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -52,7 +52,8 @@ The following is a list of actively supported options for the AddressSanitizer. |`quarantine_size_mb` | `-1` | Size (in Mb) of quarantine used to detect `use-after-free` errors. Lower value may increase the chance of false negatives.| |`redzone` | `16` | Minimal size (in bytes) of redzones around heap objects. Requirement: `redzone` >= 16, is a power of two.| |`replace_str` | `true` | If `true`, uses custom wrappers and replacements for libc string functions to find more errors.| -|`report_globals` | `1` | Controls the way to handle globals (`0` - don't detect buffer overflow on globals, `1` - detect buffer overflow, `2` - detect buffer overflow and print data about registered globals).| +|`report_globals` | `1` | Controls the way to handle globals: `0` - don't detect buffer overflow on globals, `1` - detect buffer overflow, `2` - detect buffer overflow and print data about registered globals.| + |`sleep_before_dying` | `0` | Number of seconds to sleep between printing an error report and terminating the program.| |`stack_trace_format` | `DEFAULT` | Format string used to render stack frames.| |`strict_memcmp` | `true` | If `true`, assume that `memcmp(p1, p2, n)` always reads `n` bytes before comparing `p1` and `p2`.| From 7f917ebd81f6244e05aee86cb3e1d3786a250a01 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Mon, 25 Aug 2025 09:50:07 -0700 Subject: [PATCH 1583/2255] Modify flag descriptions --- docs/sanitizers/asan-flags.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index d0ab298dcf9..cc7ffe6ba51 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -37,14 +37,14 @@ The following is a list of actively supported options for the AddressSanitizer. |`iat_overwrite`|`error`|`error` - report an error whenever an overwrite is detected, `protect` - attempt to avoid using the overwritten definition, `ignore` - never attempt to correct any overwritten functions. See [iat_overwrite](./asan-runtime.md#msvc-specific-addresssanitizer-runtime-options).| |`include_if_exists` | `""` | Takes a path to a file, and reads options from the given file. ASan does not fail if file does not exist.| |`intercept_strpbrk` | `true` | If `true`, uses custom wrappers for `strpbrk` function to find more errors.| -|`intercept_strspn` | `true` | If `true`, uses custom wrappers for strspn and strcspn function to find more errors.| -|`intercept_strstr` | `true` | If `true`, uses custom wrappers for strstr and strcasestr functions to find more errors.| +|`intercept_strspn` | `true` | If `true`, uses custom wrappers for `strspn` and `strcspn` function to find more errors.| +|`intercept_strstr` | `true` | If `true`, uses custom wrappers for `strstr` and `strcasestr` functions to find more errors.| |`malloc_context_size` | `1` | Max number of stack frames kept for each allocation/deallocation.| |`malloc_fill_byte` | `0xbe` | Value used to fill the newly allocated memory.| |`max_malloc_fill_size` | `4096` | ASan allocator flag. `max_malloc_fill_size` is the maximal amount of bytes that will be filled with `malloc_fill_byte` on `malloc`.| |`max_redzone` | `2048` | Maximal size (in bytes) of redzones around heap objects.| |`new_delete_type_mismatch` | `true` | Report errors on mismatch between size of `new` and `delete`. See [new-delete-type-mismatch](./error-new-delete-type-mismatch.md).| -|`poison_heap` | `true` | Poison (or not) the heap memory on (de-)allocation. Zero value is useful for benchmarking the allocator or instrumentator.| +|`poison_heap` | `true` | If `true`, poison the heap memory on (de-)allocation. `false` is useful for benchmarking the allocator or instrumentator.| |`poison_partial` | `true` | If `true`, poison partially addressable 8-byte aligned words. This flag affects heap and global buffers, but not stack buffers.| |`print_cmdline` | `false` | Print command line on crash. With `continue_on_error` set >= `1`, print current working directory as `UTF-16` aware.| |`print_summary` | `true` | If `false`, disable printing error summaries in addition to error reports.| @@ -61,7 +61,7 @@ The following is a list of actively supported options for the AddressSanitizer. |`strip_path_prefix` | `""` | Strips this prefix from file paths in error reports.| |`symbolize` | `true` | If `true`, use the `llvm-symbolizer` to turn virtual addresses to file or line locations.| |`symbolize_inline_frames` | `true` | Print inlined frames in stacktraces.| -|`verbosity` | `0` | Verbosity level: `0` - default, `1` - more, `2+` - even more output.| +|`verbosity` | `0` | Verbosity level: `0` - default verbosity, `1` - more output, `2` - even more output.| |`windows_fast_fail_on_error`|`false`|If `true`, enable the process to terminate with a `__fastfail(71)` after printing the error report. See [windows_fast_fail_on_error](./asan-runtime.md#msvc-specific-addresssanitizer-runtime-options).| |`windows_hook_legacy_allocators`|`true`|If `true`, enable hooking of (`Global`/`Local`)(`Alloc`/`Free`/`Size`/`ReAlloc`/`Lock`/`Unlock`) functions.| From c4bd9a3e5df1c0ed5173011445d2c6bc61a6a4a3 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla <77024043+39otsu@users.noreply.github.com> Date: Mon, 25 Aug 2025 09:51:09 -0700 Subject: [PATCH 1584/2255] Update docs/sanitizers/asan-flags.md Co-authored-by: David Justo --- docs/sanitizers/asan-flags.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index cc7ffe6ba51..635e52534bb 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -17,7 +17,7 @@ The following is a list of actively supported options for the AddressSanitizer. |------|---------------|-------------| |`abort_on_error` | `false` | If `true`, ASan calls `abort()` instead of `_exit()` after printing the error report.| |`alloc_dealloc_mismatch` | `false` | Enables detection of mismatched memory operations such as `malloc`/`delete`, `new[]`/`free`, etc.| -|`allocator_frees_and_returns_null_on_realloc_zero` | `1` | 1 - realloc(p, 0) is equivalent to free(p). 0 - realloc(p, 0) will return a non-`NULL` value.| +|`allocator_frees_and_returns_null_on_realloc_zero` | `1` | 1 - `realloc(p, 0)` is equivalent to `free(p)`. 0 - `realloc(p, 0)` will return a non-`NULL` value.| |`allocator_may_return_null` | `false` | If `true`, the allocator will return `nullptr` when out of memory. Instead of crashing, ASan emits a warning about the allocator's failure and execution continues.| |`allow_user_poisoning` | `true` | If `true`, you may manually mark memory regions as poisoned or unpoisoned using [these](https://learn.microsoft.com/en-us/cpp/sanitizers/asan-runtime?view=msvc-170#poisoning) APIs.| |`check_initialization_order` | `false` | If `true`, attempts to catch initialization order issues.| From 5c7030791541730b9bd0a7e92feed35634232f66 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Mon, 25 Aug 2025 09:53:47 -0700 Subject: [PATCH 1585/2255] Remove absolute linking --- docs/sanitizers/asan-flags.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index cc7ffe6ba51..bb6f94c39ca 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -19,7 +19,7 @@ The following is a list of actively supported options for the AddressSanitizer. |`alloc_dealloc_mismatch` | `false` | Enables detection of mismatched memory operations such as `malloc`/`delete`, `new[]`/`free`, etc.| |`allocator_frees_and_returns_null_on_realloc_zero` | `1` | 1 - realloc(p, 0) is equivalent to free(p). 0 - realloc(p, 0) will return a non-`NULL` value.| |`allocator_may_return_null` | `false` | If `true`, the allocator will return `nullptr` when out of memory. Instead of crashing, ASan emits a warning about the allocator's failure and execution continues.| -|`allow_user_poisoning` | `true` | If `true`, you may manually mark memory regions as poisoned or unpoisoned using [these](https://learn.microsoft.com/en-us/cpp/sanitizers/asan-runtime?view=msvc-170#poisoning) APIs.| +|`allow_user_poisoning` | `true` | If `true`, you may manually mark memory regions as poisoned or unpoisoned using [these](./asan-runtime.md#poisoning) APIs.| |`check_initialization_order` | `false` | If `true`, attempts to catch initialization order issues.| |`continue_on_error` | `0` | Allows an application to continue running while reporting unique memory safety errors. `0` - disabled, `1` - output to `stdout`, `2` - output to `stderr`. See [continue_on_error](asan-continue-on-error.md).| |`detect_container_overflow` | `true` | If `true`, honor the container overflow annotations. See [ContainerOverflow](./error-container-overflow.md).| From de3ea57d0de7df6669624113c32546b910ba8077 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla <77024043+39otsu@users.noreply.github.com> Date: Mon, 25 Aug 2025 09:54:32 -0700 Subject: [PATCH 1586/2255] Update docs/sanitizers/asan-flags.md Co-authored-by: David Justo --- docs/sanitizers/asan-flags.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index a67da1f42e1..bfe925c4a4a 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -23,7 +23,8 @@ The following is a list of actively supported options for the AddressSanitizer. |`check_initialization_order` | `false` | If `true`, attempts to catch initialization order issues.| |`continue_on_error` | `0` | Allows an application to continue running while reporting unique memory safety errors. `0` - disabled, `1` - output to `stdout`, `2` - output to `stderr`. See [continue_on_error](asan-continue-on-error.md).| |`detect_container_overflow` | `true` | If `true`, honor the container overflow annotations. See [ContainerOverflow](./error-container-overflow.md).| -|`detect_invalid_pointer_pairs` | `0` | If `1`, the tool detects operations like <, <=, >, >=, and - on invalid pointer pairs, such as pointers that belong to different objects.| +|`detect_invalid_pointer_pairs` | `0` | If `1`, ASan detects operations like <, <=, >, >=, and - on invalid pointer pairs, such as pointers that belong to different objects.| + |`detect_stack_use_after_return` | `false` | Experimental. If `true`, ASan enables `stack-use-after-return` checking at runtime. Requires `/fsanitize-address-use-after-return`. See [stack-use-after-return](./error-stack-use-after-return.md).| |`exitcode` | `1` | Override the program exit status with this value if ASan found an error.| |`external_symbolizer_path` | `""` | Path to external symbolizer. If empty, ASan will search `$PATH` for the symbolizer.| From 5c30a895788b611bab6143e5fb5c42890889cc0a Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Mon, 25 Aug 2025 10:03:30 -0700 Subject: [PATCH 1587/2255] Fix table formatting --- docs/sanitizers/asan-flags.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index bfe925c4a4a..b36740328ea 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -24,11 +24,9 @@ The following is a list of actively supported options for the AddressSanitizer. |`continue_on_error` | `0` | Allows an application to continue running while reporting unique memory safety errors. `0` - disabled, `1` - output to `stdout`, `2` - output to `stderr`. See [continue_on_error](asan-continue-on-error.md).| |`detect_container_overflow` | `true` | If `true`, honor the container overflow annotations. See [ContainerOverflow](./error-container-overflow.md).| |`detect_invalid_pointer_pairs` | `0` | If `1`, ASan detects operations like <, <=, >, >=, and - on invalid pointer pairs, such as pointers that belong to different objects.| - |`detect_stack_use_after_return` | `false` | Experimental. If `true`, ASan enables `stack-use-after-return` checking at runtime. Requires `/fsanitize-address-use-after-return`. See [stack-use-after-return](./error-stack-use-after-return.md).| |`exitcode` | `1` | Override the program exit status with this value if ASan found an error.| |`external_symbolizer_path` | `""` | Path to external symbolizer. If empty, ASan will search `$PATH` for the symbolizer.| - |`fast_unwind_on_malloc` | `true` | If available, ASan uses the fast frame-pointer-based unwinder on `malloc`/`free`.| |`halt_on_error` | `true` | Not supported. Use `continue_on_error` for full support.| |`handle_segv` | `true` | If `true`, ASan handles `SEGV` errors.| @@ -54,7 +52,6 @@ The following is a list of actively supported options for the AddressSanitizer. |`redzone` | `16` | Minimal size (in bytes) of redzones around heap objects. Requirement: `redzone` >= 16, is a power of two.| |`replace_str` | `true` | If `true`, uses custom wrappers and replacements for libc string functions to find more errors.| |`report_globals` | `1` | Controls the way to handle globals: `0` - don't detect buffer overflow on globals, `1` - detect buffer overflow, `2` - detect buffer overflow and print data about registered globals.| - |`sleep_before_dying` | `0` | Number of seconds to sleep between printing an error report and terminating the program.| |`stack_trace_format` | `DEFAULT` | Format string used to render stack frames.| |`strict_memcmp` | `true` | If `true`, assume that `memcmp(p1, p2, n)` always reads `n` bytes before comparing `p1` and `p2`.| From 91cd5150cb15da12e086d2444469bd9fb21b8548 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Mon, 25 Aug 2025 10:20:32 -0700 Subject: [PATCH 1588/2255] Removed deprecated flag --- docs/sanitizers/asan-flags.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index b36740328ea..4e78cfdc71c 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -47,7 +47,6 @@ The following is a list of actively supported options for the AddressSanitizer. |`poison_partial` | `true` | If `true`, poison partially addressable 8-byte aligned words. This flag affects heap and global buffers, but not stack buffers.| |`print_cmdline` | `false` | Print command line on crash. With `continue_on_error` set >= `1`, print current working directory as `UTF-16` aware.| |`print_summary` | `true` | If `false`, disable printing error summaries in addition to error reports.| -|`quarantine_size` | `-1` | Deprecated, please use `quarantine_size_mb`.| |`quarantine_size_mb` | `-1` | Size (in Mb) of quarantine used to detect `use-after-free` errors. Lower value may increase the chance of false negatives.| |`redzone` | `16` | Minimal size (in bytes) of redzones around heap objects. Requirement: `redzone` >= 16, is a power of two.| |`replace_str` | `true` | If `true`, uses custom wrappers and replacements for libc string functions to find more errors.| From 2c3c96a08bb3e7554464a77c147b002f5e2633a2 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Mon, 25 Aug 2025 10:20:43 -0700 Subject: [PATCH 1589/2255] Incorporate Acrolinx suggestions --- docs/sanitizers/asan-flags.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 4e78cfdc71c..1a8b801a1b4 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -7,18 +7,18 @@ helpviewer_keywords: ["AddressSanitizer options", "AddressSanitizer flags", "Add # AddressSanitizer Runtime Options -The following is a list of actively supported options for the AddressSanitizer. They can be enabled through the `ASAN_OPTIONS` environment variable or by overriding the `__asan_default_options()` user function, as described [here](./asan-runtime.md#runtime-options). +The following table lists actively supported options for the AddressSanitizer. They can be enabled through the `ASAN_OPTIONS` environment variable or by overriding the `__asan_default_options()` user function, as described [here](./asan-runtime.md#runtime-options). > [!NOTE] -> These descriptions may vary from those in Clang's ASan docs to account for MSVC specific behaviors. +> These descriptions may vary from the runtime options in Clang's ASan docs to account for MSVC specific behaviors. | Flag | Default value | Description | |------|---------------|-------------| |`abort_on_error` | `false` | If `true`, ASan calls `abort()` instead of `_exit()` after printing the error report.| |`alloc_dealloc_mismatch` | `false` | Enables detection of mismatched memory operations such as `malloc`/`delete`, `new[]`/`free`, etc.| -|`allocator_frees_and_returns_null_on_realloc_zero` | `1` | 1 - `realloc(p, 0)` is equivalent to `free(p)`. 0 - `realloc(p, 0)` will return a non-`NULL` value.| -|`allocator_may_return_null` | `false` | If `true`, the allocator will return `nullptr` when out of memory. Instead of crashing, ASan emits a warning about the allocator's failure and execution continues.| +|`allocator_frees_and_returns_null_on_realloc_zero` | `1` | 1 - `realloc(p, 0)` is equivalent to `free(p)`. 0 - `realloc(p, 0)` returns a non-`NULL` value.| +|`allocator_may_return_null` | `false` | If `true`, the allocator returns `nullptr` when out of memory. Instead of crashing, ASan emits a warning about the allocator's failure and execution continues.| |`allow_user_poisoning` | `true` | If `true`, you may manually mark memory regions as poisoned or unpoisoned using [these](./asan-runtime.md#poisoning) APIs.| |`check_initialization_order` | `false` | If `true`, attempts to catch initialization order issues.| |`continue_on_error` | `0` | Allows an application to continue running while reporting unique memory safety errors. `0` - disabled, `1` - output to `stdout`, `2` - output to `stderr`. See [continue_on_error](asan-continue-on-error.md).| @@ -26,12 +26,12 @@ The following is a list of actively supported options for the AddressSanitizer. |`detect_invalid_pointer_pairs` | `0` | If `1`, ASan detects operations like <, <=, >, >=, and - on invalid pointer pairs, such as pointers that belong to different objects.| |`detect_stack_use_after_return` | `false` | Experimental. If `true`, ASan enables `stack-use-after-return` checking at runtime. Requires `/fsanitize-address-use-after-return`. See [stack-use-after-return](./error-stack-use-after-return.md).| |`exitcode` | `1` | Override the program exit status with this value if ASan found an error.| -|`external_symbolizer_path` | `""` | Path to external symbolizer. If empty, ASan will search `$PATH` for the symbolizer.| +|`external_symbolizer_path` | `""` | Path to external symbolizer. If empty, ASan searches `$PATH` for the symbolizer.| |`fast_unwind_on_malloc` | `true` | If available, ASan uses the fast frame-pointer-based unwinder on `malloc`/`free`.| |`halt_on_error` | `true` | Not supported. Use `continue_on_error` for full support.| |`handle_segv` | `true` | If `true`, ASan handles `SEGV` errors.| -|`handle_sigfpe` | `true` | If `true`, ASan will handle `SIGFPE` errors.| -|`handle_sigill` | `true` | If `true`, ASan will handle `SIGILL` errors.| +|`handle_sigfpe` | `true` | If `true`, ASan handles `SIGFPE` errors.| +|`handle_sigill` | `true` | If `true`, ASan handles `SIGILL` errors.| |`help` | `false` | If `true`, ASan prints the flag options to console.| |`iat_overwrite`|`error`|`error` - report an error whenever an overwrite is detected, `protect` - attempt to avoid using the overwritten definition, `ignore` - never attempt to correct any overwritten functions. See [iat_overwrite](./asan-runtime.md#msvc-specific-addresssanitizer-runtime-options).| |`include_if_exists` | `""` | Takes a path to a file, and reads options from the given file. ASan does not fail if file does not exist.| @@ -40,7 +40,7 @@ The following is a list of actively supported options for the AddressSanitizer. |`intercept_strstr` | `true` | If `true`, uses custom wrappers for `strstr` and `strcasestr` functions to find more errors.| |`malloc_context_size` | `1` | Max number of stack frames kept for each allocation/deallocation.| |`malloc_fill_byte` | `0xbe` | Value used to fill the newly allocated memory.| -|`max_malloc_fill_size` | `4096` | ASan allocator flag. `max_malloc_fill_size` is the maximal amount of bytes that will be filled with `malloc_fill_byte` on `malloc`.| +|`max_malloc_fill_size` | `4096` | The ASan allocator fills an allocation with `malloc_fill_byte` up to `max_malloc_fill_size` on a call to `malloc`.| |`max_redzone` | `2048` | Maximal size (in bytes) of redzones around heap objects.| |`new_delete_type_mismatch` | `true` | Report errors on mismatch between size of `new` and `delete`. See [new-delete-type-mismatch](./error-new-delete-type-mismatch.md).| |`poison_heap` | `true` | If `true`, poison the heap memory on (de-)allocation. `false` is useful for benchmarking the allocator or instrumentator.| From 342a008c1c883de895efb9eebc7f45faff2d1aad Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Mon, 25 Aug 2025 10:22:32 -0700 Subject: [PATCH 1590/2255] More Acrolinx suggestions --- docs/sanitizers/asan-flags.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 1a8b801a1b4..48a0e4fa7e4 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -34,7 +34,7 @@ The following table lists actively supported options for the AddressSanitizer. T |`handle_sigill` | `true` | If `true`, ASan handles `SIGILL` errors.| |`help` | `false` | If `true`, ASan prints the flag options to console.| |`iat_overwrite`|`error`|`error` - report an error whenever an overwrite is detected, `protect` - attempt to avoid using the overwritten definition, `ignore` - never attempt to correct any overwritten functions. See [iat_overwrite](./asan-runtime.md#msvc-specific-addresssanitizer-runtime-options).| -|`include_if_exists` | `""` | Takes a path to a file, and reads options from the given file. ASan does not fail if file does not exist.| +|`include_if_exists` | `""` | Takes a path to a file, and reads options from the given file. ASan doesn't fail if file doesn't exist.| |`intercept_strpbrk` | `true` | If `true`, uses custom wrappers for `strpbrk` function to find more errors.| |`intercept_strspn` | `true` | If `true`, uses custom wrappers for `strspn` and `strcspn` function to find more errors.| |`intercept_strstr` | `true` | If `true`, uses custom wrappers for `strstr` and `strcasestr` functions to find more errors.| From 809d8fa1b0f8b65d30196c66fb38215591576325 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla <77024043+39otsu@users.noreply.github.com> Date: Mon, 25 Aug 2025 10:55:34 -0700 Subject: [PATCH 1591/2255] Update docs/sanitizers/asan-flags.md Co-authored-by: David Justo --- docs/sanitizers/asan-flags.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 48a0e4fa7e4..259cd0ab8e0 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -23,7 +23,7 @@ The following table lists actively supported options for the AddressSanitizer. T |`check_initialization_order` | `false` | If `true`, attempts to catch initialization order issues.| |`continue_on_error` | `0` | Allows an application to continue running while reporting unique memory safety errors. `0` - disabled, `1` - output to `stdout`, `2` - output to `stderr`. See [continue_on_error](asan-continue-on-error.md).| |`detect_container_overflow` | `true` | If `true`, honor the container overflow annotations. See [ContainerOverflow](./error-container-overflow.md).| -|`detect_invalid_pointer_pairs` | `0` | If `1`, ASan detects operations like <, <=, >, >=, and - on invalid pointer pairs, such as pointers that belong to different objects.| +|`detect_invalid_pointer_pairs` | `0` | If `1`, ASan detects operations like `<`, `<=`, `>`, `>=`, and `-` on invalid pointer pairs, such as pointers that belong to different objects.| |`detect_stack_use_after_return` | `false` | Experimental. If `true`, ASan enables `stack-use-after-return` checking at runtime. Requires `/fsanitize-address-use-after-return`. See [stack-use-after-return](./error-stack-use-after-return.md).| |`exitcode` | `1` | Override the program exit status with this value if ASan found an error.| |`external_symbolizer_path` | `""` | Path to external symbolizer. If empty, ASan searches `$PATH` for the symbolizer.| From 5e2feabdaee32587ca98d069561778b0a80ae812 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla <77024043+39otsu@users.noreply.github.com> Date: Mon, 25 Aug 2025 10:55:48 -0700 Subject: [PATCH 1592/2255] Update docs/sanitizers/asan-flags.md Co-authored-by: David Justo --- docs/sanitizers/asan-flags.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 259cd0ab8e0..645481ed6ea 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -21,7 +21,7 @@ The following table lists actively supported options for the AddressSanitizer. T |`allocator_may_return_null` | `false` | If `true`, the allocator returns `nullptr` when out of memory. Instead of crashing, ASan emits a warning about the allocator's failure and execution continues.| |`allow_user_poisoning` | `true` | If `true`, you may manually mark memory regions as poisoned or unpoisoned using [these](./asan-runtime.md#poisoning) APIs.| |`check_initialization_order` | `false` | If `true`, attempts to catch initialization order issues.| -|`continue_on_error` | `0` | Allows an application to continue running while reporting unique memory safety errors. `0` - disabled, `1` - output to `stdout`, `2` - output to `stderr`. See [continue_on_error](asan-continue-on-error.md).| +|`continue_on_error` | `0` | Allows an application to continue running while reporting unique memory safety errors. `0` - disabled, `1` - enabled, and error output is sent to `stdout`, `2` - enabled, and error output is sent to `stderr`. See [continue_on_error](asan-continue-on-error.md).| |`detect_container_overflow` | `true` | If `true`, honor the container overflow annotations. See [ContainerOverflow](./error-container-overflow.md).| |`detect_invalid_pointer_pairs` | `0` | If `1`, ASan detects operations like `<`, `<=`, `>`, `>=`, and `-` on invalid pointer pairs, such as pointers that belong to different objects.| |`detect_stack_use_after_return` | `false` | Experimental. If `true`, ASan enables `stack-use-after-return` checking at runtime. Requires `/fsanitize-address-use-after-return`. See [stack-use-after-return](./error-stack-use-after-return.md).| From 33c1648dc1499189758372229fbb8d71cc5846cf Mon Sep 17 00:00:00 2001 From: MacGyver Codilla <77024043+39otsu@users.noreply.github.com> Date: Mon, 25 Aug 2025 10:55:57 -0700 Subject: [PATCH 1593/2255] Update docs/sanitizers/asan-flags.md Co-authored-by: David Justo --- docs/sanitizers/asan-flags.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 645481ed6ea..dec02ba4fc0 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -17,7 +17,7 @@ The following table lists actively supported options for the AddressSanitizer. T |------|---------------|-------------| |`abort_on_error` | `false` | If `true`, ASan calls `abort()` instead of `_exit()` after printing the error report.| |`alloc_dealloc_mismatch` | `false` | Enables detection of mismatched memory operations such as `malloc`/`delete`, `new[]`/`free`, etc.| -|`allocator_frees_and_returns_null_on_realloc_zero` | `1` | 1 - `realloc(p, 0)` is equivalent to `free(p)`. 0 - `realloc(p, 0)` returns a non-`NULL` value.| +|`allocator_frees_and_returns_null_on_realloc_zero` | `1` | If set to `1`, realloc(p, 0) is equivalent to free(p) by default (same as the POSIX standard). If set to `0`, realloc(p, 0) will return a pointer to an allocated space which can not be used. | |`allocator_may_return_null` | `false` | If `true`, the allocator returns `nullptr` when out of memory. Instead of crashing, ASan emits a warning about the allocator's failure and execution continues.| |`allow_user_poisoning` | `true` | If `true`, you may manually mark memory regions as poisoned or unpoisoned using [these](./asan-runtime.md#poisoning) APIs.| |`check_initialization_order` | `false` | If `true`, attempts to catch initialization order issues.| From a832613809720a5c6c80b9fefb594bab9b5252c0 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Mon, 25 Aug 2025 11:35:12 -0700 Subject: [PATCH 1594/2255] Add values for stack_trace_format --- docs/sanitizers/asan-flags.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 48a0e4fa7e4..469014267cb 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -52,7 +52,7 @@ The following table lists actively supported options for the AddressSanitizer. T |`replace_str` | `true` | If `true`, uses custom wrappers and replacements for libc string functions to find more errors.| |`report_globals` | `1` | Controls the way to handle globals: `0` - don't detect buffer overflow on globals, `1` - detect buffer overflow, `2` - detect buffer overflow and print data about registered globals.| |`sleep_before_dying` | `0` | Number of seconds to sleep between printing an error report and terminating the program.| -|`stack_trace_format` | `DEFAULT` | Format string used to render stack frames.| +|`stack_trace_format` | `DEFAULT` | Format string used to render stack frames. `DEFAULT` - ` #%n %p %F %L`. List of available placeholders: `%%` - represents a `'%'` character; `%n` - frame number (copy of frame_no); `%p` - `PC`; `%m` - path to module; `%o` - offset in the module; `%f` - function name; `%q` - if available, offset in the function; `%s` - path to source file; `%l` - line in the source file; `%c` - column in the source file; `%F` - if function is known, ASan prints `in `, followed by the offset in this function if source is unknown; `%S` - ASan prints file/line/column information; `%L` - If file information is available, ASan prints file name, line, and column. If module information is available, ASan prints module name, offset, and architecture. If neither are available, ASan prints `()`; `%M` - If known, ASan prints module basename and offset, or `PC`.| |`strict_memcmp` | `true` | If `true`, assume that `memcmp(p1, p2, n)` always reads `n` bytes before comparing `p1` and `p2`.| |`strict_string_checks` | `false` | If `true` check that string arguments are properly null-terminated.| |`strip_path_prefix` | `""` | Strips this prefix from file paths in error reports.| From a8d5cca93a89e40a726bb882d48a7bf4a3fb38e7 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Mon, 25 Aug 2025 11:57:33 -0700 Subject: [PATCH 1595/2255] Fix description --- docs/sanitizers/asan-flags.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index e57b473c936..6c1ee72a31c 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -17,7 +17,7 @@ The following table lists actively supported options for the AddressSanitizer. T |------|---------------|-------------| |`abort_on_error` | `false` | If `true`, ASan calls `abort()` instead of `_exit()` after printing the error report.| |`alloc_dealloc_mismatch` | `false` | Enables detection of mismatched memory operations such as `malloc`/`delete`, `new[]`/`free`, etc.| -|`allocator_frees_and_returns_null_on_realloc_zero` | `1` | If set to `1`, realloc(p, 0) is equivalent to free(p) by default (same as the POSIX standard). If set to `0`, realloc(p, 0) will return a pointer to an allocated space which can not be used. | +|`allocator_frees_and_returns_null_on_realloc_zero` | `1` | If set to `1`, `realloc(p, 0)` is equivalent to `free(p)` by default (same as the POSIX standard). If set to `0`, `realloc(p, 0)` returns a pointer to an allocated space that can't be used. | |`allocator_may_return_null` | `false` | If `true`, the allocator returns `nullptr` when out of memory. Instead of crashing, ASan emits a warning about the allocator's failure and execution continues.| |`allow_user_poisoning` | `true` | If `true`, you may manually mark memory regions as poisoned or unpoisoned using [these](./asan-runtime.md#poisoning) APIs.| |`check_initialization_order` | `false` | If `true`, attempts to catch initialization order issues.| From ec50c948b3cbb4704dfcdc29ead409c64593c176 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Mon, 25 Aug 2025 12:08:49 -0700 Subject: [PATCH 1596/2255] Verbosity level --- docs/sanitizers/asan-flags.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 6c1ee72a31c..6fdedd4421e 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -58,7 +58,7 @@ The following table lists actively supported options for the AddressSanitizer. T |`strip_path_prefix` | `""` | Strips this prefix from file paths in error reports.| |`symbolize` | `true` | If `true`, use the `llvm-symbolizer` to turn virtual addresses to file or line locations.| |`symbolize_inline_frames` | `true` | Print inlined frames in stacktraces.| -|`verbosity` | `0` | Verbosity level: `0` - default verbosity, `1` - more output, `2` - even more output.| +|`verbosity` | `0` | Verbosity level: `0` - default verbosity, `1` - more output, `2` - even more output, `3` - current upper limit verbosity level | |`windows_fast_fail_on_error`|`false`|If `true`, enable the process to terminate with a `__fastfail(71)` after printing the error report. See [windows_fast_fail_on_error](./asan-runtime.md#msvc-specific-addresssanitizer-runtime-options).| |`windows_hook_legacy_allocators`|`true`|If `true`, enable hooking of (`Global`/`Local`)(`Alloc`/`Free`/`Size`/`ReAlloc`/`Lock`/`Unlock`) functions.| From 25d96f1b909ed21c3f313353fce364c80026b450 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Mon, 25 Aug 2025 14:16:23 -0700 Subject: [PATCH 1597/2255] Add line breaks in stack_trace_format description --- docs/sanitizers/asan-flags.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 6fdedd4421e..680567b8d19 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -52,7 +52,7 @@ The following table lists actively supported options for the AddressSanitizer. T |`replace_str` | `true` | If `true`, uses custom wrappers and replacements for libc string functions to find more errors.| |`report_globals` | `1` | Controls the way to handle globals: `0` - don't detect buffer overflow on globals, `1` - detect buffer overflow, `2` - detect buffer overflow and print data about registered globals.| |`sleep_before_dying` | `0` | Number of seconds to sleep between printing an error report and terminating the program.| -|`stack_trace_format` | `DEFAULT` | Format string used to render stack frames. `DEFAULT` - ` #%n %p %F %L`. List of available placeholders: `%%` - represents a `'%'` character; `%n` - frame number (copy of frame_no); `%p` - `PC`; `%m` - path to module; `%o` - offset in the module; `%f` - function name; `%q` - if available, offset in the function; `%s` - path to source file; `%l` - line in the source file; `%c` - column in the source file; `%F` - if function is known, ASan prints `in `, followed by the offset in this function if source is unknown; `%S` - ASan prints file/line/column information; `%L` - If file information is available, ASan prints file name, line, and column. If module information is available, ASan prints module name, offset, and architecture. If neither are available, ASan prints `()`; `%M` - If known, ASan prints module basename and offset, or `PC`.| +|`stack_trace_format` | `DEFAULT` | Format string used to render stack frames. `DEFAULT` - ` #%n %p %F %L`. List of available placeholders:
`%%` - represents a `'%'` character
`%n` - frame number (copy of `frame_no`)
`%p` - `PC`
`%m` - path to module
`%o` - offset in the module
`%f` - function name
`%q` - if available, offset in the function
`%s` - path to source file
`%l` - line in the source file
`%c` - column in the source file
`%F` - if function is known, ASan prints `in `, followed by the offset in this function if source is unknown
`%S` - ASan prints file/line/column information
`%L` - If file information is available, ASan prints file name, line, and column. If module information is available, ASan prints module name, offset, and architecture. If neither are available, ASan prints `()`
`%M` - If known, ASan prints module basename and offset, or `PC`| |`strict_memcmp` | `true` | If `true`, assume that `memcmp(p1, p2, n)` always reads `n` bytes before comparing `p1` and `p2`.| |`strict_string_checks` | `false` | If `true` check that string arguments are properly null-terminated.| |`strip_path_prefix` | `""` | Strips this prefix from file paths in error reports.| From 5a3850c3f60bfc58a2b60998e7bd965bd24d47ee Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Mon, 25 Aug 2025 14:28:35 -0700 Subject: [PATCH 1598/2255] Change integer to boolean --- docs/sanitizers/asan-flags.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 680567b8d19..f809824908b 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -17,13 +17,13 @@ The following table lists actively supported options for the AddressSanitizer. T |------|---------------|-------------| |`abort_on_error` | `false` | If `true`, ASan calls `abort()` instead of `_exit()` after printing the error report.| |`alloc_dealloc_mismatch` | `false` | Enables detection of mismatched memory operations such as `malloc`/`delete`, `new[]`/`free`, etc.| -|`allocator_frees_and_returns_null_on_realloc_zero` | `1` | If set to `1`, `realloc(p, 0)` is equivalent to `free(p)` by default (same as the POSIX standard). If set to `0`, `realloc(p, 0)` returns a pointer to an allocated space that can't be used. | +|`allocator_frees_and_returns_null_on_realloc_zero` | `true` | If set to `true`, `realloc(p, 0)` is equivalent to `free(p)` by default (same as the POSIX standard). If set to `false`, `realloc(p, 0)` returns a pointer to an allocated space that can't be used. | |`allocator_may_return_null` | `false` | If `true`, the allocator returns `nullptr` when out of memory. Instead of crashing, ASan emits a warning about the allocator's failure and execution continues.| |`allow_user_poisoning` | `true` | If `true`, you may manually mark memory regions as poisoned or unpoisoned using [these](./asan-runtime.md#poisoning) APIs.| |`check_initialization_order` | `false` | If `true`, attempts to catch initialization order issues.| |`continue_on_error` | `0` | Allows an application to continue running while reporting unique memory safety errors. `0` - disabled, `1` - enabled, and error output is sent to `stdout`, `2` - enabled, and error output is sent to `stderr`. See [continue_on_error](asan-continue-on-error.md).| |`detect_container_overflow` | `true` | If `true`, honor the container overflow annotations. See [ContainerOverflow](./error-container-overflow.md).| -|`detect_invalid_pointer_pairs` | `0` | If `1`, ASan detects operations like `<`, `<=`, `>`, `>=`, and `-` on invalid pointer pairs, such as pointers that belong to different objects.| +|`detect_invalid_pointer_pairs` | `false` | If `true`, ASan detects operations like `<`, `<=`, `>`, `>=`, and `-` on invalid pointer pairs, such as pointers that belong to different objects.| |`detect_stack_use_after_return` | `false` | Experimental. If `true`, ASan enables `stack-use-after-return` checking at runtime. Requires `/fsanitize-address-use-after-return`. See [stack-use-after-return](./error-stack-use-after-return.md).| |`exitcode` | `1` | Override the program exit status with this value if ASan found an error.| |`external_symbolizer_path` | `""` | Path to external symbolizer. If empty, ASan searches `$PATH` for the symbolizer.| From 5704ddf30e28cc688d43fe9ec0b889f7c4ab8a34 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 26 Aug 2025 22:44:33 +0800 Subject: [PATCH 1599/2255] Add blockquotes for warning messages in range [C4081, C4120] --- .../compiler-warnings/compiler-warning-level-1-c4081.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4083.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4085.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4086.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4087.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4088.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4089.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4090.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4096.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4097.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4098.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4103.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4109.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4113.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4114.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4116.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4117.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4119.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4120.md | 2 +- .../compiler-warnings/compiler-warning-level-2-c4094.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4102.md | 2 +- .../compiler-warnings/compiler-warning-levels-1-and-4-c4115.md | 2 +- 22 files changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4081.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4081.md index a266ad55b2d..d4c587e2cec 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4081.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4081.md @@ -8,7 +8,7 @@ ms.assetid: 6f656373-a080-4989-bbc9-e2f894b03293 --- # Compiler Warning (level 1) C4081 -expected 'token1'; found 'token2' +> expected 'token1'; found 'token2' The compiler expected a different token in this context. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4083.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4083.md index 87918fc4491..5625f529ff0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4083.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4083.md @@ -8,7 +8,7 @@ ms.assetid: e7d3344e-5645-4d56-8460-d1acc9145ada --- # Compiler Warning (level 1) C4083 -expected 'token'; found identifier 'identifier' +> expected 'token'; found identifier 'identifier' An identifier occurs in the wrong place in a **#pragma** statement. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4085.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4085.md index af90990a225..3746d114a0e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4085.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4085.md @@ -8,7 +8,7 @@ ms.assetid: 2bc6eb25-058f-4597-b351-fd69587b5170 --- # Compiler Warning (level 1) C4085 -expected pragma parameter to be 'on' or 'off' +> expected pragma parameter to be 'on' or 'off' The pragma requires an **on** or **off** parameter. The pragma is ignored. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4086.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4086.md index 1c8cf29e1b9..74176ede4fc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4086.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4086.md @@ -8,7 +8,7 @@ ms.assetid: 9248831b-22bf-47af-8684-bfadb17e94fc --- # Compiler Warning (level 1) C4086 -expected pragma parameter to be '1', '2', '4', '8', or '16' +> expected pragma parameter to be '1', '2', '4', '8', or '16' The pragma parameter does not have the required value (1, 2, 4, 8, or 16). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4087.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4087.md index 631fbd9d8c8..1f998f10567 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4087.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4087.md @@ -8,7 +8,7 @@ ms.assetid: 546e4d57-5c8e-422c-8ef1-92657336dad5 --- # Compiler Warning (level 1) C4087 -'function' : declared with 'void' parameter list +> 'function' : declared with 'void' parameter list The function declaration has no formal parameters, but the function call has actual parameters. Extra parameters are passed according to the calling convention of the function. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4088.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4088.md index 743a55b292b..c73bb4b4c10 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4088.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4088.md @@ -8,6 +8,6 @@ ms.assetid: 9bab817c-16b2-4324-be5e-f9cbb06b702e --- # Compiler Warning (level 1) C4088 -'function' : pointer mismatch in actual parameter 'number', formal parameter 'number' +> 'function' : pointer mismatch in actual parameter 'number', formal parameter 'number' The corresponding formal and actual parameters have a different level of indirection. The actual parameter is passed without change. The called function interprets its value as a pointer. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4089.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4089.md index c5a33f3524b..0b0e684b24d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4089.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4089.md @@ -8,6 +8,6 @@ ms.assetid: 7c8f929b-9bf9-4063-9b7e-4affd98c1acc --- # Compiler Warning (level 1) C4089 -'function' : different types in actual parameter 'number', formal parameter 'number' +> 'function' : different types in actual parameter 'number', formal parameter 'number' The corresponding formal and actual parameters have different types. The actual parameter is passed without change. The function casts the actual parameter to the type specified in the function definition. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4090.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4090.md index 4bb401cbcb1..ab70f4744e3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4090.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4090.md @@ -8,7 +8,7 @@ ms.assetid: baad469d-23d4-45aa-ad9c-305b32d61e9a --- # Compiler Warning (level 1) C4090 -'operation' : different 'modifier' qualifiers +> 'operation' : different 'modifier' qualifiers A variable used in an operation is defined with a specified modifier that prevents it from being modified without detection by the compiler. The expression is compiled without modification. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4096.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4096.md index 1013ef52740..5f58ea1ef0e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4096.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4096.md @@ -8,7 +8,7 @@ ms.assetid: abf3cca2-2f21-45d8-b025-6b513b00681e --- # Compiler Warning (level 1) C4096 -'a': interface is not a COM interface; will not be emitted to IDL +> 'a': interface is not a COM interface; will not be emitted to IDL An interface definition that you may have intended as a COM interface was not defined as a COM interface and therefore will not be emitted to the IDL file. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4097.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4097.md index c9c9d9688d8..3d22355344d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4097.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4097.md @@ -8,7 +8,7 @@ ms.assetid: 2525be51-fac2-43b2-b57c-3bbf1a2268f7 --- # Compiler Warning (level 1) C4097 -expected pragma parameter to be 'restore' or 'off' +> expected pragma parameter to be 'restore' or 'off' A pragma was passed an invalid value. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4098.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4098.md index 02da792a1f2..04d93012355 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4098.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4098.md @@ -8,6 +8,6 @@ ms.assetid: 8c8aef1c-1639-44ec-a3dd-c0dfe9aa727d --- # Compiler Warning (level 1) C4098 -'function' : void function returning a value +> 'function' : void function returning a value A function declared with return type [void](../../cpp/void-cpp.md) has a **`return`** statement that returns a value. The compiler assumes the function returns a value of type **`int`**. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4103.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4103.md index a61f63ece8c..90cb25e4c3b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4103.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4103.md @@ -8,7 +8,7 @@ ms.assetid: 9021b514-375e-4d62-b261-ccb06f299e8e --- # Compiler Warning (level 1) C4103 -'filename' : alignment changed after including header, may be due to missing #pragma pack(pop) +> 'filename' : alignment changed after including header, may be due to missing #pragma pack(pop) Packing affects the layout of classes, and commonly, if packing changes across header files, there can be problems. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4109.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4109.md index 3c6de78389d..d4598c03e1e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4109.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4109.md @@ -8,7 +8,7 @@ ms.assetid: 9e8d95c6-e05d-47e0-bd87-78974b3cc06c --- # Compiler Warning (level 1) C4109 -unexpected identifier 'identifier' +> unexpected identifier 'identifier' The pragma containing the unexpected identifier is ignored. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4113.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4113.md index 7a93cc5ec61..7b4e47754c4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4113.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4113.md @@ -8,6 +8,6 @@ ms.assetid: ec7a7c4a-d2ee-431c-89dc-31b0f9bfd975 --- # Compiler Warning (level 1) C4113 -'identifier1' differs in parameter lists from 'identifier2' +> 'identifier1' differs in parameter lists from 'identifier2' A function pointer is assigned to another function pointer, but the formal parameter lists of the functions do not agree. The assignment is compiled without modification. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4114.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4114.md index ef6514dddea..6f2457a9a04 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4114.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4114.md @@ -8,7 +8,7 @@ ms.assetid: 3983e1c6-e8bb-46dc-8894-e1827db48797 --- # Compiler Warning (level 1) C4114 -same type qualifier used more than once +> same type qualifier used more than once A type declaration or definition uses a type qualifier (**`const`**, **`volatile`**, **`signed`**, or **`unsigned`**) more than once. This causes a warning with Microsoft extensions (/Ze) and an error under ANSI compatibility (/Za). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4116.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4116.md index 4c64a7d9d08..eca6e35593d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4116.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4116.md @@ -8,7 +8,7 @@ ms.assetid: 25434ef3-061e-4252-91a5-0fe2a4b2ffb3 --- # Compiler Warning (level 1) C4116 -unnamed type definition in parentheses +> unnamed type definition in parentheses A structure, union, or enumerated type with no name is defined in a parenthetical expression. The type definition is meaningless. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4117.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4117.md index 1b76610289e..747dd3f599e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4117.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4117.md @@ -8,7 +8,7 @@ ms.assetid: c45aa281-4cc1-4dfd-bd32-bd7a60ddd577 --- # Compiler Warning (level 1) C4117 -macro name 'name' is reserved; 'Command' ignored +> macro name 'name' is reserved; 'Command' ignored ### To fix by checking the following possible causes diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4119.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4119.md index 6734a6e402b..b6f9f4dd912 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4119.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4119.md @@ -8,6 +8,6 @@ ms.assetid: 0052ce92-033a-4dce-a11e-b7388f4f5c2b --- # Compiler Warning (level 1) C4119 -different bases 'base1' and 'base2' specified +> different bases 'base1' and 'base2' specified Two based pointers are incompatible because they have different bases. The compiler cannot convert between them. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4120.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4120.md index 65f329119b9..5c4b0d539d2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4120.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4120.md @@ -8,6 +8,6 @@ ms.assetid: 9faa9265-34b4-41dd-b7a2-e2f3969b1d91 --- # Compiler Warning (level 1) C4120 -based/unbased mismatch +> based/unbased mismatch The compiler cannot convert between the two pointers because one is based and the other is not. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4094.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4094.md index fe8f42e4001..e4c6d4390d8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4094.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4094.md @@ -8,7 +8,7 @@ ms.assetid: e68929fb-3a1c-4be7-920b-d5f79f534f99 --- # Compiler Warning (level 2) C4094 -untagged 'token' declared no symbols +> untagged 'token' declared no symbols The compiler detected an empty declaration using an untagged structure, union, or class. The declaration is ignored. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4102.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4102.md index 379c3a7b12b..30b56670f3d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4102.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4102.md @@ -8,7 +8,7 @@ ms.assetid: 349f308a-daf3-48c6-bd53-6c38b73f8880 --- # Compiler Warning (level 3) C4102 -'label' : unreferenced label +> 'label' : unreferenced label The label is defined but never referenced. The compiler ignores the label. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-levels-1-and-4-c4115.md b/docs/error-messages/compiler-warnings/compiler-warning-levels-1-and-4-c4115.md index d881c7f2c15..85e5b1b3112 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-levels-1-and-4-c4115.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-levels-1-and-4-c4115.md @@ -8,7 +8,7 @@ ms.assetid: f3f94e72-fc49-4d09-b3e7-23d68e61152f --- # Compiler Warning (levels 1 and 4) C4115 -'type' : named type definition in parentheses +> 'type' : named type definition in parentheses The given symbol is used to define a structure, union, or enumerated type inside a parenthetical expression. The scope of the definition may be unexpected. From abf975297e53ec6eb86e17c4dba2c5b790fe7dbc Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 26 Aug 2025 22:53:12 +0800 Subject: [PATCH 1600/2255] Add "Remarks" and "Example" headings for warning references in range [C4081, C4120] --- .../compiler-warnings/compiler-warning-level-1-c4081.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4083.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4085.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4086.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4087.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4088.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4089.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4090.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4091.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4096.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4097.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4098.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4103.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4109.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4113.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4114.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4116.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4117.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4119.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4120.md | 2 ++ .../compiler-warnings/compiler-warning-level-2-c4094.md | 2 ++ .../compiler-warnings/compiler-warning-level-2-c4099.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4101.md | 8 +++++++- .../compiler-warnings/compiler-warning-level-3-c4102.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4092.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4100.md | 4 ++++ .../compiler-warning-levels-1-and-4-c4112.md | 4 ++++ .../compiler-warning-levels-1-and-4-c4115.md | 2 ++ 28 files changed, 81 insertions(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4081.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4081.md index d4c587e2cec..de92314dbfe 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4081.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4081.md @@ -10,6 +10,8 @@ ms.assetid: 6f656373-a080-4989-bbc9-e2f894b03293 > expected 'token1'; found 'token2' +## Remarks + The compiler expected a different token in this context. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4083.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4083.md index 5625f529ff0..c5e49710bd4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4083.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4083.md @@ -10,6 +10,8 @@ ms.assetid: e7d3344e-5645-4d56-8460-d1acc9145ada > expected 'token'; found identifier 'identifier' +## Remarks + An identifier occurs in the wrong place in a **#pragma** statement. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4085.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4085.md index 3746d114a0e..f17a20a5189 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4085.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4085.md @@ -10,8 +10,12 @@ ms.assetid: 2bc6eb25-058f-4597-b351-fd69587b5170 > expected pragma parameter to be 'on' or 'off' +## Remarks + The pragma requires an **on** or **off** parameter. The pragma is ignored. +## Example + The following sample generates C4085: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4086.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4086.md index 74176ede4fc..04bf02548e7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4086.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4086.md @@ -10,6 +10,8 @@ ms.assetid: 9248831b-22bf-47af-8684-bfadb17e94fc > expected pragma parameter to be '1', '2', '4', '8', or '16' +## Remarks + The pragma parameter does not have the required value (1, 2, 4, 8, or 16). ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4087.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4087.md index 1f998f10567..19ddcad84b6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4087.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4087.md @@ -10,6 +10,8 @@ ms.assetid: 546e4d57-5c8e-422c-8ef1-92657336dad5 > 'function' : declared with 'void' parameter list +## Remarks + The function declaration has no formal parameters, but the function call has actual parameters. Extra parameters are passed according to the calling convention of the function. This warning is for the C compiler. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4088.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4088.md index c73bb4b4c10..e82ddea4a11 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4088.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4088.md @@ -10,4 +10,6 @@ ms.assetid: 9bab817c-16b2-4324-be5e-f9cbb06b702e > 'function' : pointer mismatch in actual parameter 'number', formal parameter 'number' +## Remarks + The corresponding formal and actual parameters have a different level of indirection. The actual parameter is passed without change. The called function interprets its value as a pointer. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4089.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4089.md index 0b0e684b24d..6bf2a752212 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4089.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4089.md @@ -10,4 +10,6 @@ ms.assetid: 7c8f929b-9bf9-4063-9b7e-4affd98c1acc > 'function' : different types in actual parameter 'number', formal parameter 'number' +## Remarks + The corresponding formal and actual parameters have different types. The actual parameter is passed without change. The function casts the actual parameter to the type specified in the function definition. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4090.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4090.md index ab70f4744e3..6e64a0f7f50 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4090.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4090.md @@ -10,12 +10,16 @@ ms.assetid: baad469d-23d4-45aa-ad9c-305b32d61e9a > 'operation' : different 'modifier' qualifiers +## Remarks + A variable used in an operation is defined with a specified modifier that prevents it from being modified without detection by the compiler. The expression is compiled without modification. This warning can be caused when a pointer to a **`const`** or **`volatile`** item is assigned to a pointer not declared as pointing to **`const`** or **`volatile`**. This warning is issued for C programs. In a C++ program, the compiler issues an error: [C2440](../../error-messages/compiler-errors-1/compiler-error-c2440.md). +## Example + The following sample generates C4090: ```c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4091.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4091.md index bd1e02649e1..8fbdcffdfa5 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4091.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4091.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4091"] > '*keyword*': ignored on left of '*type*' when no variable is declared +## Remarks + The compiler detected a situation where the user probably intended a variable to be declared, but the compiler wasn't able to declare the variable. ## Examples diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4096.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4096.md index 5f58ea1ef0e..b97215e735b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4096.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4096.md @@ -10,10 +10,14 @@ ms.assetid: abf3cca2-2f21-45d8-b025-6b513b00681e > 'a': interface is not a COM interface; will not be emitted to IDL +## Remarks + An interface definition that you may have intended as a COM interface was not defined as a COM interface and therefore will not be emitted to the IDL file. See [Interface Attributes](../../windows/attributes/interface-attributes.md) for a list attributes that indicate an interface is a COM interface. +## Example + The following sample generates C4096: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4097.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4097.md index 3d22355344d..881e56b5c6e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4097.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4097.md @@ -10,8 +10,12 @@ ms.assetid: 2525be51-fac2-43b2-b57c-3bbf1a2268f7 > expected pragma parameter to be 'restore' or 'off' +## Remarks + A pragma was passed an invalid value. +## Example + The following sample generates C4097: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4098.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4098.md index 04d93012355..997c7116ce0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4098.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4098.md @@ -10,4 +10,6 @@ ms.assetid: 8c8aef1c-1639-44ec-a3dd-c0dfe9aa727d > 'function' : void function returning a value +## Remarks + A function declared with return type [void](../../cpp/void-cpp.md) has a **`return`** statement that returns a value. The compiler assumes the function returns a value of type **`int`**. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4103.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4103.md index 90cb25e4c3b..261419a39b6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4103.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4103.md @@ -10,10 +10,14 @@ ms.assetid: 9021b514-375e-4d62-b261-ccb06f299e8e > 'filename' : alignment changed after including header, may be due to missing #pragma pack(pop) +## Remarks + Packing affects the layout of classes, and commonly, if packing changes across header files, there can be problems. Use #pragma [pack](../../preprocessor/pack.md)(pop) before exiting the header file to resolve this warning. +## Example + The following sample generates C4103: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4109.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4109.md index d4598c03e1e..a6b163924cd 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4109.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4109.md @@ -10,6 +10,8 @@ ms.assetid: 9e8d95c6-e05d-47e0-bd87-78974b3cc06c > unexpected identifier 'identifier' +## Remarks + The pragma containing the unexpected identifier is ignored. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4113.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4113.md index 7b4e47754c4..8d5faec1c9d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4113.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4113.md @@ -10,4 +10,6 @@ ms.assetid: ec7a7c4a-d2ee-431c-89dc-31b0f9bfd975 > 'identifier1' differs in parameter lists from 'identifier2' +## Remarks + A function pointer is assigned to another function pointer, but the formal parameter lists of the functions do not agree. The assignment is compiled without modification. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4114.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4114.md index 6f2457a9a04..9f10c9f3786 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4114.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4114.md @@ -10,8 +10,12 @@ ms.assetid: 3983e1c6-e8bb-46dc-8894-e1827db48797 > same type qualifier used more than once +## Remarks + A type declaration or definition uses a type qualifier (**`const`**, **`volatile`**, **`signed`**, or **`unsigned`**) more than once. This causes a warning with Microsoft extensions (/Ze) and an error under ANSI compatibility (/Za). +## Examples + The following sample generates C4114: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4116.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4116.md index eca6e35593d..c5c0f45cdc0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4116.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4116.md @@ -10,6 +10,8 @@ ms.assetid: 25434ef3-061e-4252-91a5-0fe2a4b2ffb3 > unnamed type definition in parentheses +## Remarks + A structure, union, or enumerated type with no name is defined in a parenthetical expression. The type definition is meaningless. In a C function call, the definition has global scope. In a C++ function call, the definition has the same scope as the function being called. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4117.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4117.md index 747dd3f599e..1fc3e21602e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4117.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4117.md @@ -10,12 +10,16 @@ ms.assetid: c45aa281-4cc1-4dfd-bd32-bd7a60ddd577 > macro name 'name' is reserved; 'Command' ignored +## Remarks + ### To fix by checking the following possible causes 1. Trying to define or undefine a predefined macro. 1. Trying to define or undefine the preprocessor operator **defined**. +## Example + The following sample generates C4117: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4119.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4119.md index b6f9f4dd912..71a9ae34531 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4119.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4119.md @@ -10,4 +10,6 @@ ms.assetid: 0052ce92-033a-4dce-a11e-b7388f4f5c2b > different bases 'base1' and 'base2' specified +## Remarks + Two based pointers are incompatible because they have different bases. The compiler cannot convert between them. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4120.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4120.md index 5c4b0d539d2..c59e9c70009 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4120.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4120.md @@ -10,4 +10,6 @@ ms.assetid: 9faa9265-34b4-41dd-b7a2-e2f3969b1d91 > based/unbased mismatch +## Remarks + The compiler cannot convert between the two pointers because one is based and the other is not. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4094.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4094.md index e4c6d4390d8..fee43bff17e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4094.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4094.md @@ -10,6 +10,8 @@ ms.assetid: e68929fb-3a1c-4be7-920b-d5f79f534f99 > untagged 'token' declared no symbols +## Remarks + The compiler detected an empty declaration using an untagged structure, union, or class. The declaration is ignored. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4099.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4099.md index 813ec5943a9..3f454b16f3a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4099.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4099.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4099"] > '*identifier*': type name first seen using '*object_type1*' now seen using '*object_type2*' +## Remarks + An object declared as a structure is defined as a class, or an object declared as a class is defined as a structure. The compiler uses the type given in the definition. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4101.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4101.md index 3199f6c3e53..c130cc04340 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4101.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4101.md @@ -9,7 +9,13 @@ helpviewer_keywords: ["C4101"] > '*identifier*': unreferenced local variable -The local variable is never used. This warning occurs in the obvious situation: +## Remarks + +The local variable is never used. + +## Examples + +This warning occurs in the obvious situation: ```cpp // C4101a.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4102.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4102.md index 30b56670f3d..34e215ea283 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4102.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4102.md @@ -10,8 +10,12 @@ ms.assetid: 349f308a-daf3-48c6-bd53-6c38b73f8880 > 'label' : unreferenced label +## Remarks + The label is defined but never referenced. The compiler ignores the label. +## Example + The following sample generates C4102: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4092.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4092.md index 5f3cc5c9b67..0dc09558b43 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4092.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4092.md @@ -10,4 +10,6 @@ ms.assetid: 396ae826-a892-4327-bd66-f4762376d72b > sizeof returns 'unsigned long' +## Remarks + The operand of the **`sizeof`** operator was very large, so **`sizeof`** returned an **`unsigned long`**. This warning occurs under the Microsoft extensions ([`/Ze`](../../build/reference/za-ze-disable-language-extensions.md)). Under ANSI compatibility (**`/Za`**), the result is truncated instead. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4100.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4100.md index b4b8cfae668..827db5ea9be 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4100.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4100.md @@ -9,10 +9,14 @@ helpviewer_keywords: ["C4100"] > 'identifier' : unreferenced formal parameter +## Remarks + The formal parameter is not referenced in the body of the function. The unreferenced parameter is ignored. C4100 can also be issued when code calls a destructor on an otherwise unreferenced parameter of primitive type. +## Example + The following sample generates C4100: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-levels-1-and-4-c4112.md b/docs/error-messages/compiler-warnings/compiler-warning-levels-1-and-4-c4112.md index 6dc4a888bef..0874b2de65a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-levels-1-and-4-c4112.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-levels-1-and-4-c4112.md @@ -9,10 +9,14 @@ helpviewer_keywords: ["C4112"] > `#line` requires an integer between 1 and '*line_count*' +## Remarks + The [#line](../../preprocessor/hash-line-directive-c-cpp.md) directive specifies an integer parameter that is outside the allowable range. If the specified parameter is less than 1, the line counter is reset to 1. If the specified parameter is greater than *number*, which is the compiler-defined limit, the line counter is unchanged. This diagnostic is a level 1 warning under ANSI C compatibility ([/Za](../../build/reference/za-ze-disable-language-extensions.md)) and a level 4 warning with Microsoft extensions ([/Ze](../../build/reference/za-ze-disable-language-extensions.md)). +## Example + The following sample generates C4112: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-levels-1-and-4-c4115.md b/docs/error-messages/compiler-warnings/compiler-warning-levels-1-and-4-c4115.md index 85e5b1b3112..4700cd5d38c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-levels-1-and-4-c4115.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-levels-1-and-4-c4115.md @@ -10,6 +10,8 @@ ms.assetid: f3f94e72-fc49-4d09-b3e7-23d68e61152f > 'type' : named type definition in parentheses +## Remarks + The given symbol is used to define a structure, union, or enumerated type inside a parenthetical expression. The scope of the definition may be unexpected. In a C function call, the definition has global scope. In a C++ call, the definition has the same scope as the function being called. From 06a3dcdb940d9a82fdcd8aae3a3cb1ded2d1541d Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 26 Aug 2025 22:54:28 +0800 Subject: [PATCH 1601/2255] Replace term "sample" with "example" for warning references in range [C4081, C4120] --- .../compiler-warnings/compiler-warning-level-1-c4085.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4090.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4091.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4096.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4097.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4103.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4114.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4117.md | 2 +- .../compiler-warnings/compiler-warning-level-2-c4099.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4102.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4100.md | 2 +- .../compiler-warning-levels-1-and-4-c4112.md | 2 +- 12 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4085.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4085.md index f17a20a5189..452ec6512f4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4085.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4085.md @@ -16,7 +16,7 @@ The pragma requires an **on** or **off** parameter. The pragma is ignored. ## Example -The following sample generates C4085: +The following example generates C4085: ```cpp // C4085.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4090.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4090.md index 6e64a0f7f50..4e2fc9b581d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4090.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4090.md @@ -20,7 +20,7 @@ This warning is issued for C programs. In a C++ program, the compiler issues an ## Example -The following sample generates C4090: +The following example generates C4090: ```c // C4090.c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4091.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4091.md index 8fbdcffdfa5..9231fa328d4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4091.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4091.md @@ -15,7 +15,7 @@ The compiler detected a situation where the user probably intended a variable to ## Examples -A **`__declspec`** attribute at the beginning of a user-defined type declaration applies to the variable of that type. C4091 indicates no variable is declared. The following sample generates C4091. +A **`__declspec`** attribute at the beginning of a user-defined type declaration applies to the variable of that type. C4091 indicates no variable is declared. The following example generates C4091. ```cpp // C4091.cpp @@ -30,7 +30,7 @@ __declspec(dllimport) class X2 {} varX; class __declspec(dllimport) X3 {}; ``` -If an identifier is a typedef, it can't also be a variable name. The following sample generates C4091. +If an identifier is a typedef, it can't also be a variable name. The following example generates C4091. ```cpp // C4091_b.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4096.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4096.md index b97215e735b..4e096c9e622 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4096.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4096.md @@ -18,7 +18,7 @@ See [Interface Attributes](../../windows/attributes/interface-attributes.md) for ## Example -The following sample generates C4096: +The following example generates C4096: ```cpp // C4096.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4097.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4097.md index 881e56b5c6e..a3dcd2dbed5 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4097.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4097.md @@ -16,7 +16,7 @@ A pragma was passed an invalid value. ## Example -The following sample generates C4097: +The following example generates C4097: ```cpp // C4097.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4103.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4103.md index 261419a39b6..1d868640ab8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4103.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4103.md @@ -18,7 +18,7 @@ Use #pragma [pack](../../preprocessor/pack.md)(pop) before exiting the header fi ## Example -The following sample generates C4103: +The following example generates C4103: ```cpp // C4103.h diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4114.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4114.md index 9f10c9f3786..7709ec51ae9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4114.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4114.md @@ -16,7 +16,7 @@ A type declaration or definition uses a type qualifier (**`const`**, **`volatile ## Examples -The following sample generates C4114: +The following example generates C4114: ```cpp // C4114.cpp @@ -24,7 +24,7 @@ The following sample generates C4114: volatile volatile int i; // C4114 ``` -The following sample generates C4114: +The following example generates C4114: ```cpp // C4114_b.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4117.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4117.md index 1fc3e21602e..0c354aa3a46 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4117.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4117.md @@ -20,7 +20,7 @@ ms.assetid: c45aa281-4cc1-4dfd-bd32-bd7a60ddd577 ## Example -The following sample generates C4117: +The following example generates C4117: ```cpp // C4117.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4099.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4099.md index 3f454b16f3a..8b341870250 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4099.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4099.md @@ -15,7 +15,7 @@ An object declared as a structure is defined as a class, or an object declared a ## Example -The following sample generates C4099. +The following example generates C4099. ```cpp // C4099.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4102.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4102.md index 34e215ea283..2f6fe1daeec 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4102.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4102.md @@ -16,7 +16,7 @@ The label is defined but never referenced. The compiler ignores the label. ## Example -The following sample generates C4102: +The following example generates C4102: ```cpp // C4102.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4100.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4100.md index 827db5ea9be..b79b1d58fab 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4100.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4100.md @@ -17,7 +17,7 @@ C4100 can also be issued when code calls a destructor on an otherwise unreferenc ## Example -The following sample generates C4100: +The following example generates C4100: ```cpp // C4100.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-levels-1-and-4-c4112.md b/docs/error-messages/compiler-warnings/compiler-warning-levels-1-and-4-c4112.md index 0874b2de65a..c7bd116218b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-levels-1-and-4-c4112.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-levels-1-and-4-c4112.md @@ -17,7 +17,7 @@ If the specified parameter is less than 1, the line counter is reset to 1. If th ## Example -The following sample generates C4112: +The following example generates C4112: ```cpp // C4112.cpp From f223e62480dffc876de2bd4218f9d986779f6379 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 26 Aug 2025 22:58:55 +0800 Subject: [PATCH 1602/2255] Update metadata for warning references in range [C4081, C4120] --- .../compiler-warnings/compiler-warning-level-1-c4081.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4083.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4085.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4086.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4087.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4088.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4089.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4090.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4091.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4096.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4097.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4098.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4103.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4109.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4113.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4114.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4116.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4117.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4119.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4120.md | 5 ++--- .../compiler-warnings/compiler-warning-level-2-c4094.md | 5 ++--- .../compiler-warnings/compiler-warning-level-2-c4099.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4101.md | 4 ++-- .../compiler-warnings/compiler-warning-level-3-c4102.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4092.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4100.md | 2 +- .../compiler-warning-levels-1-and-4-c4112.md | 4 ++-- .../compiler-warning-levels-1-and-4-c4115.md | 5 ++--- 28 files changed, 54 insertions(+), 77 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4081.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4081.md index de92314dbfe..276a4dbbcb1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4081.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4081.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4081" title: "Compiler Warning (level 1) C4081" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4081" +ms.date: 11/04/2016 f1_keywords: ["C4081"] helpviewer_keywords: ["C4081"] -ms.assetid: 6f656373-a080-4989-bbc9-e2f894b03293 --- # Compiler Warning (level 1) C4081 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4083.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4083.md index c5e49710bd4..6edffa8523a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4083.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4083.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4083" title: "Compiler Warning (level 1) C4083" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4083" +ms.date: 11/04/2016 f1_keywords: ["C4083"] helpviewer_keywords: ["C4083"] -ms.assetid: e7d3344e-5645-4d56-8460-d1acc9145ada --- # Compiler Warning (level 1) C4083 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4085.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4085.md index 452ec6512f4..98a8afd3948 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4085.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4085.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4085" title: "Compiler Warning (level 1) C4085" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4085" +ms.date: 11/04/2016 f1_keywords: ["C4085"] helpviewer_keywords: ["C4085"] -ms.assetid: 2bc6eb25-058f-4597-b351-fd69587b5170 --- # Compiler Warning (level 1) C4085 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4086.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4086.md index 04bf02548e7..130910254a6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4086.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4086.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4086" title: "Compiler Warning (level 1) C4086" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4086" +ms.date: 11/04/2016 f1_keywords: ["C4086"] helpviewer_keywords: ["C4086"] -ms.assetid: 9248831b-22bf-47af-8684-bfadb17e94fc --- # Compiler Warning (level 1) C4086 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4087.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4087.md index 19ddcad84b6..35566f44e69 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4087.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4087.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4087" title: "Compiler Warning (level 1) C4087" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4087" +ms.date: 11/04/2016 f1_keywords: ["C4087"] helpviewer_keywords: ["C4087"] -ms.assetid: 546e4d57-5c8e-422c-8ef1-92657336dad5 --- # Compiler Warning (level 1) C4087 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4088.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4088.md index e82ddea4a11..24b6a432788 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4088.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4088.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4088" title: "Compiler Warning (level 1) C4088" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4088" +ms.date: 11/04/2016 f1_keywords: ["C4088"] helpviewer_keywords: ["C4088"] -ms.assetid: 9bab817c-16b2-4324-be5e-f9cbb06b702e --- # Compiler Warning (level 1) C4088 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4089.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4089.md index 6bf2a752212..90895290376 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4089.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4089.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4089" title: "Compiler Warning (level 1) C4089" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4089" +ms.date: 11/04/2016 f1_keywords: ["C4089"] helpviewer_keywords: ["C4089"] -ms.assetid: 7c8f929b-9bf9-4063-9b7e-4affd98c1acc --- # Compiler Warning (level 1) C4089 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4090.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4090.md index 4e2fc9b581d..716f99228f5 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4090.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4090.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4090" title: "Compiler Warning (level 1) C4090" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4090" +ms.date: 11/04/2016 f1_keywords: ["C4090"] helpviewer_keywords: ["C4090"] -ms.assetid: baad469d-23d4-45aa-ad9c-305b32d61e9a --- # Compiler Warning (level 1) C4090 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4091.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4091.md index 9231fa328d4..100e44a0e12 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4091.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4091.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 1 and level 2) C4091" title: "Compiler Warning (level 1 and level 2) C4091" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1 and level 2) C4091" +ms.date: 11/04/2016 f1_keywords: ["C4091"] helpviewer_keywords: ["C4091"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4096.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4096.md index 4e096c9e622..95738c23070 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4096.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4096.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4096" title: "Compiler Warning (level 1) C4096" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4096" +ms.date: 11/04/2016 f1_keywords: ["C4096"] helpviewer_keywords: ["C4096"] -ms.assetid: abf3cca2-2f21-45d8-b025-6b513b00681e --- # Compiler Warning (level 1) C4096 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4097.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4097.md index a3dcd2dbed5..36cde34b27c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4097.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4097.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4097" title: "Compiler Warning (level 1) C4097" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4097" +ms.date: 11/04/2016 f1_keywords: ["C4097"] helpviewer_keywords: ["C4097"] -ms.assetid: 2525be51-fac2-43b2-b57c-3bbf1a2268f7 --- # Compiler Warning (level 1) C4097 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4098.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4098.md index 997c7116ce0..c90d530b284 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4098.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4098.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4098" title: "Compiler Warning (level 1) C4098" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4098" +ms.date: 11/04/2016 f1_keywords: ["C4098"] helpviewer_keywords: ["C4098"] -ms.assetid: 8c8aef1c-1639-44ec-a3dd-c0dfe9aa727d --- # Compiler Warning (level 1) C4098 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4103.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4103.md index 1d868640ab8..c9365e43be1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4103.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4103.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4103" title: "Compiler Warning (level 1) C4103" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4103" +ms.date: 11/04/2016 f1_keywords: ["C4103"] helpviewer_keywords: ["C4103"] -ms.assetid: 9021b514-375e-4d62-b261-ccb06f299e8e --- # Compiler Warning (level 1) C4103 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4109.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4109.md index a6b163924cd..83ce14796f2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4109.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4109.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4109" title: "Compiler Warning (level 1) C4109" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4109" +ms.date: 11/04/2016 f1_keywords: ["C4109"] helpviewer_keywords: ["C4109"] -ms.assetid: 9e8d95c6-e05d-47e0-bd87-78974b3cc06c --- # Compiler Warning (level 1) C4109 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4113.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4113.md index 8d5faec1c9d..336d4c75cb1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4113.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4113.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4113" title: "Compiler Warning (level 1) C4113" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4113" +ms.date: 11/04/2016 f1_keywords: ["C4113"] helpviewer_keywords: ["C4113"] -ms.assetid: ec7a7c4a-d2ee-431c-89dc-31b0f9bfd975 --- # Compiler Warning (level 1) C4113 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4114.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4114.md index 7709ec51ae9..57c02abc3a4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4114.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4114.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4114" title: "Compiler Warning (level 1) C4114" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4114" +ms.date: 11/04/2016 f1_keywords: ["C4114"] helpviewer_keywords: ["C4114"] -ms.assetid: 3983e1c6-e8bb-46dc-8894-e1827db48797 --- # Compiler Warning (level 1) C4114 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4116.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4116.md index c5c0f45cdc0..b650d740844 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4116.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4116.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4116" title: "Compiler Warning (level 1) C4116" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4116" +ms.date: 11/04/2016 f1_keywords: ["C4116"] helpviewer_keywords: ["C4116"] -ms.assetid: 25434ef3-061e-4252-91a5-0fe2a4b2ffb3 --- # Compiler Warning (level 1) C4116 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4117.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4117.md index 0c354aa3a46..8355fc6923a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4117.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4117.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4117" title: "Compiler Warning (level 1) C4117" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4117" +ms.date: 11/04/2016 f1_keywords: ["C4117"] helpviewer_keywords: ["C4117"] -ms.assetid: c45aa281-4cc1-4dfd-bd32-bd7a60ddd577 --- # Compiler Warning (level 1) C4117 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4119.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4119.md index 71a9ae34531..4cdf1d4876f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4119.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4119.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4119" title: "Compiler Warning (level 1) C4119" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4119" +ms.date: 11/04/2016 f1_keywords: ["C4119"] helpviewer_keywords: ["C4119"] -ms.assetid: 0052ce92-033a-4dce-a11e-b7388f4f5c2b --- # Compiler Warning (level 1) C4119 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4120.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4120.md index c59e9c70009..04227416fd6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4120.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4120.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4120" title: "Compiler Warning (level 1) C4120" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4120" +ms.date: 11/04/2016 f1_keywords: ["C4120"] helpviewer_keywords: ["C4120"] -ms.assetid: 9faa9265-34b4-41dd-b7a2-e2f3969b1d91 --- # Compiler Warning (level 1) C4120 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4094.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4094.md index fee43bff17e..071e8808a8a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4094.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4094.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 2) C4094" title: "Compiler Warning (level 2) C4094" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 2) C4094" +ms.date: 11/04/2016 f1_keywords: ["C4094"] helpviewer_keywords: ["C4094"] -ms.assetid: e68929fb-3a1c-4be7-920b-d5f79f534f99 --- # Compiler Warning (level 2) C4094 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4099.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4099.md index 8b341870250..1739a47480f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4099.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4099.md @@ -1,7 +1,7 @@ --- title: "Compiler Warning (level 2) C4099" description: "Learn more about: Compiler Warning (level 2) C4099" -ms.date: "11/04/2016" +ms.date: 11/04/2016 f1_keywords: ["C4099"] helpviewer_keywords: ["C4099"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4101.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4101.md index c130cc04340..bf61764db50 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4101.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4101.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 3 and level 4) C4101" title: "Compiler Warning (level 3 and level 4) C4101" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3 and level 4) C4101" +ms.date: 11/04/2016 f1_keywords: ["C4101"] helpviewer_keywords: ["C4101"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4102.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4102.md index 2f6fe1daeec..63b13fa15f5 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4102.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4102.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4102" title: "Compiler Warning (level 3) C4102" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4102" +ms.date: 11/04/2016 f1_keywords: ["C4102"] helpviewer_keywords: ["C4102"] -ms.assetid: 349f308a-daf3-48c6-bd53-6c38b73f8880 --- # Compiler Warning (level 3) C4102 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4092.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4092.md index 0dc09558b43..d926a41d768 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4092.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4092.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4092" title: "Compiler Warning (level 4) C4092" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4092" +ms.date: 11/04/2016 f1_keywords: ["C4092"] helpviewer_keywords: ["C4092"] -ms.assetid: 396ae826-a892-4327-bd66-f4762376d72b --- # Compiler Warning (level 4) C4092 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4100.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4100.md index b79b1d58fab..c0b6b54f40f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4100.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4100.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4100" title: "Compiler Warning (level 4) C4100" +description: "Learn more about: Compiler Warning (level 4) C4100" ms.date: 04/22/2025 f1_keywords: ["C4100"] helpviewer_keywords: ["C4100"] diff --git a/docs/error-messages/compiler-warnings/compiler-warning-levels-1-and-4-c4112.md b/docs/error-messages/compiler-warnings/compiler-warning-levels-1-and-4-c4112.md index c7bd116218b..96a81a8c9a0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-levels-1-and-4-c4112.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-levels-1-and-4-c4112.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 1 and level 4) C4112" title: "Compiler Warning (level 1 and level 4) C4112" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1 and level 4) C4112" +ms.date: 11/04/2016 f1_keywords: ["C4112"] helpviewer_keywords: ["C4112"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-levels-1-and-4-c4115.md b/docs/error-messages/compiler-warnings/compiler-warning-levels-1-and-4-c4115.md index 4700cd5d38c..34868cd3197 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-levels-1-and-4-c4115.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-levels-1-and-4-c4115.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (levels 1 and 4) C4115" title: "Compiler Warning (levels 1 and 4) C4115" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (levels 1 and 4) C4115" +ms.date: 11/04/2016 f1_keywords: ["C4115"] helpviewer_keywords: ["C4115"] -ms.assetid: f3f94e72-fc49-4d09-b3e7-23d68e61152f --- # Compiler Warning (levels 1 and 4) C4115 From e4ab56a1f3610042e3e46cdc5f948029213b4f04 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 26 Aug 2025 23:04:36 +0800 Subject: [PATCH 1603/2255] Add leading example sentence for warning references in range [C4081, C4120] --- .../compiler-warnings/compiler-warning-level-1-c4081.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4083.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4086.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4087.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4109.md | 2 ++ .../compiler-warnings/compiler-warning-level-2-c4094.md | 2 ++ 6 files changed, 12 insertions(+) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4081.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4081.md index 276a4dbbcb1..fff7ef70eca 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4081.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4081.md @@ -15,6 +15,8 @@ The compiler expected a different token in this context. ## Example +The following example generates C4081: + ```cpp // C4081.cpp // compile with: /W1 /LD diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4083.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4083.md index 6edffa8523a..2796ab139eb 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4083.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4083.md @@ -15,6 +15,8 @@ An identifier occurs in the wrong place in a **#pragma** statement. ## Example +The following example generates C4083: + ```cpp // C4083.cpp // compile with: /W1 /LD diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4086.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4086.md index 130910254a6..f64ee275649 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4086.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4086.md @@ -15,6 +15,8 @@ The pragma parameter does not have the required value (1, 2, 4, 8, or 16). ## Example +The following example generates C4086: + ```cpp // C4086.cpp // compile with: /W1 /LD diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4087.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4087.md index 35566f44e69..b8d7e4fa763 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4087.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4087.md @@ -17,6 +17,8 @@ This warning is for the C compiler. ## Example +The following example generates C4087: + ```c // C4087.c // compile with: /W1 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4109.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4109.md index 83ce14796f2..dfa71b61be9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4109.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4109.md @@ -15,6 +15,8 @@ The pragma containing the unexpected identifier is ignored. ## Example +The following example generates C4109: + ```cpp // C4109.cpp // compile with: /W1 /LD diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4094.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4094.md index 071e8808a8a..aa4ef8419c3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4094.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4094.md @@ -15,6 +15,8 @@ The compiler detected an empty declaration using an untagged structure, union, o ## Example +The following example generates C4094: + ```cpp // C4094.cpp // compile with: /W2 From 9d6cd2e20ee608c205566c00e673a1e345a9316d Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 26 Aug 2025 23:12:42 +0800 Subject: [PATCH 1604/2255] Add blockquotes for warning messages in range [C4121, C4160] --- .../compiler-warnings/compiler-warning-level-1-c4122.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4124.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4129.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4138.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4142.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4143.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4144.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4145.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4153.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4154.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4155.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4157.md | 2 +- .../compiler-warnings/compiler-warning-level-2-c4156.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4121.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4125.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4130.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4131.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4132.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4152.md | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4122.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4122.md index 61cba8a38be..e733af6c4ba 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4122.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4122.md @@ -8,7 +8,7 @@ ms.assetid: 9a83eb0d-8708-42f7-988a-b0b6f2f646a0 --- # Compiler Warning (level 1) C4122 -'function' : alloc_text applicable only to functions with C linkage +> 'function' : alloc_text applicable only to functions with C linkage The **alloc_text** pragma applies only to functions declared with **extern c**. It cannot be used with external C++ functions. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4124.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4124.md index 504d71c8ed4..3a825b416f4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4124.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4124.md @@ -8,7 +8,7 @@ ms.assetid: c08c3a65-9584-47a1-a147-44f00c4b230e --- # Compiler Warning (level 1) C4124 -__fastcall with stack checking is inefficient +> __fastcall with stack checking is inefficient The **`__fastcall`** keyword was used with stack checking enabled. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4129.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4129.md index 1dc06732e56..453af27783f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4129.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4129.md @@ -8,7 +8,7 @@ ms.assetid: a4190c64-4bfb-48fd-8e98-52720bc0d878 --- # Compiler Warning (level 1) C4129 -'character' : unrecognized character escape sequence +> 'character' : unrecognized character escape sequence The `character` following a backslash (\\) in a character or string constant is not recognized as a valid escape sequence. The backslash is ignored and not printed. The character following the backslash is printed. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4138.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4138.md index 8a5d005a472..5647b37f82b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4138.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4138.md @@ -8,7 +8,7 @@ ms.assetid: 65ebf929-bba0-4237-923b-c1b66adfe17d --- # Compiler Warning (level 1) C4138 -'*/' found outside of comment +> '*/' found outside of comment The closing-comment delimiter is not preceded by an opening-comment delimiter. The compiler assumes a space between the asterisk (\*) and the forward slash (/). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4142.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4142.md index 202399a686d..f12f02f6e16 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4142.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4142.md @@ -8,7 +8,7 @@ ms.assetid: 1fdfc3dc-60a2-4f00-b133-20e400f9b7a6 --- # Compiler Warning (level 1) C4142 -benign redefinition of type +> benign redefinition of type A type is redefined in a manner that has no effect on the generated code. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4143.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4143.md index 5ae6a8f9ad2..7459260d1ef 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4143.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4143.md @@ -8,6 +8,6 @@ ms.assetid: ef0bd19f-d169-4034-8710-b22971bd642d --- # Compiler Warning (level 1) C4143 -pragma 'same_seg' not supported; use __based allocation +> pragma 'same_seg' not supported; use __based allocation The **#pragma same_seg** is no longer supported. Use the [__based](../../cpp/based-pointers-cpp.md) keyword instead. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4144.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4144.md index 9a5b1400ff6..bb47b225811 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4144.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4144.md @@ -8,7 +8,7 @@ ms.assetid: a37b445d-dbc6-43b4-8d95-ffd0e4225464 --- # Compiler Warning (level 1) C4144 -'expression' : relational expression as switch expression +> 'expression' : relational expression as switch expression The specified relational expression was used as the control expression of a [switch](../../cpp/switch-statement-cpp.md) statement. The associated case statements will be offered Boolean values. The following sample generates C4144: diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4145.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4145.md index 5d2abaa9db8..19caf4b1448 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4145.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4145.md @@ -8,7 +8,7 @@ ms.assetid: 0440777a-cca2-4159-aff5-e67a254ad64a --- # Compiler Warning (level 1) C4145 -'expression1' : relational expression as switch expression; possible confusion with 'expression2' +> 'expression1' : relational expression as switch expression; possible confusion with 'expression2' A **`switch`** statement uses a relational expression as its control expression, which results in a Boolean value for the **`case`** statements. Did you mean *expression2*? diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4153.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4153.md index 452c1f40feb..88fd69beb1d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4153.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4153.md @@ -8,6 +8,6 @@ ms.assetid: 37a15754-9dba-470b-adda-c4b888064b3e --- # Compiler Warning (level 1) C4153 -function/data pointer conversion in expression +> function/data pointer conversion in expression A function pointer is converted to or from a data pointer. This conversion is allowed under Microsoft extensions (/Ze) but not under ANSI C. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4154.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4154.md index a46730e0c11..8e1a7ad44fb 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4154.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4154.md @@ -8,7 +8,7 @@ ms.assetid: 4511afeb-e893-4cc6-83b6-4c7a0477f76b --- # Compiler Warning (level 1) C4154 -deletion of an array expression; conversion to pointer supplied +> deletion of an array expression; conversion to pointer supplied You cannot use **`delete`** on an array, so the compiler converts the array to a pointer. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4155.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4155.md index bb736d60391..7ef31e3d48a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4155.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4155.md @@ -8,7 +8,7 @@ ms.assetid: ba233353-09e3-4195-8127-13a27ddd8d70 --- # Compiler Warning (level 1) C4155 -deletion of an array expression without using the array form of 'delete' +> deletion of an array expression without using the array form of 'delete' The array form of **`delete`** should be used to delete an array. This warning occurs only under ANSI-compatibility (/Za). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4157.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4157.md index db705ad99ec..1cea93b4266 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4157.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4157.md @@ -8,6 +8,6 @@ ms.assetid: 6dabc303-eba1-4a8e-a124-a6e1dc84f4bd --- # Compiler Warning (level 1) C4157 -pragma was ignored by C compiler +> pragma was ignored by C compiler Only the C++ compiler recognizes **init_seg()**. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4156.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4156.md index c2b9d9baa66..b7fb11a618f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4156.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4156.md @@ -8,7 +8,7 @@ ms.assetid: 9adf3acb-c0fe-42a8-a4db-5822b1493f77 --- # Compiler Warning (level 2) C4156 -deletion of an array expression without using the array form of 'delete'; array form substituted +> deletion of an array expression without using the array form of 'delete'; array form substituted The non-array form of **`delete`** cannot delete an array. The compiler translated **`delete`** to the array form. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4121.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4121.md index ab0179a1064..7b33b47a9d1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4121.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4121.md @@ -8,7 +8,7 @@ ms.assetid: 8c5b85c9-2543-426b-88bc-319c50158c7e --- # Compiler Warning (level 4) C4121 -'symbol' : alignment of a member was sensitive to packing +> 'symbol' : alignment of a member was sensitive to packing The compiler added padding to align a structure member on the packing boundary but the packing value is less than the member's size. For example, the following code snippet produces C4121: diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4125.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4125.md index 8e5089b3f3d..3ae2a934729 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4125.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4125.md @@ -8,7 +8,7 @@ ms.assetid: a081d1f4-0789-4915-91df-7ff0b28ca245 --- # Compiler Warning (level 4) C4125 -decimal digit terminates octal escape sequence +> decimal digit terminates octal escape sequence The compiler evaluates the octal number without the decimal digit and assumes the decimal digit is a character. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4130.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4130.md index b50e7d32d72..cea0ead7d37 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4130.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4130.md @@ -8,7 +8,7 @@ ms.assetid: 45e4c7b2-6b51-41c7-ba5e-941aa5c7d3dc --- # Compiler Warning (level 4) C4130 -'operator' : logical operation on address of string constant +> 'operator' : logical operation on address of string constant Using the operator with the address of a string literal produces unexpected code. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4131.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4131.md index 4104ac0109e..ba7b59e5503 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4131.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4131.md @@ -8,7 +8,7 @@ ms.assetid: 7903b3e1-454f-4be2-aa9b-230992f96a2d --- # Compiler Warning (level 4) C4131 -'function' : uses old-style declarator +> 'function' : uses old-style declarator The specified function declaration is not in prototype form. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4132.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4132.md index 29b10b01926..ceab9790c17 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4132.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4132.md @@ -8,6 +8,6 @@ ms.assetid: b60e5b4a-53ac-4503-8456-235477f48afd --- # Compiler Warning (level 4) C4132 -'object' : const object should be initialized +> 'object' : const object should be initialized The constant is not initialized. The value of a symbol with the **`const`** attribute cannot be changed after its definition, it should be given an initialization value. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4152.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4152.md index 0209f54d2aa..8cf9b7aeeb9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4152.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4152.md @@ -8,6 +8,6 @@ ms.assetid: 6025ab70-d7cf-4730-913a-3ca0b1186a3a --- # Compiler Warning (level 4) C4152 -non standard extension, function/data ptr conversion in expression +> non standard extension, function/data ptr conversion in expression A function pointer is converted to or from a data pointer. This conversion is allowed under Microsoft extensions (/Ze) but not under ANSI C. From 91296d78b74d8ac3a099f6aa2625749d100eb9a6 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 26 Aug 2025 23:22:36 +0800 Subject: [PATCH 1605/2255] Add "Remarks" and "Example" headings for warning references in range [C4121, C4160] --- .../compiler-warnings/compiler-warning-level-1-c4122.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4124.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4129.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4138.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4142.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4143.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4144.md | 8 +++++++- .../compiler-warnings/compiler-warning-level-1-c4145.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4153.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4154.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4155.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4157.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4158.md | 2 ++ .../compiler-warnings/compiler-warning-level-2-c4146.md | 4 ++-- .../compiler-warnings/compiler-warning-level-2-c4150.md | 2 ++ .../compiler-warnings/compiler-warning-level-2-c4156.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4133.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4121.md | 8 +++++++- .../compiler-warnings/compiler-warning-level-4-c4125.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4127.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4130.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4131.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4132.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4152.md | 2 ++ 24 files changed, 65 insertions(+), 5 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4122.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4122.md index e733af6c4ba..710c616e063 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4122.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4122.md @@ -10,6 +10,8 @@ ms.assetid: 9a83eb0d-8708-42f7-988a-b0b6f2f646a0 > 'function' : alloc_text applicable only to functions with C linkage +## Remarks + The **alloc_text** pragma applies only to functions declared with **extern c**. It cannot be used with external C++ functions. The pragma is ignored. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4124.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4124.md index 3a825b416f4..165c0d90359 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4124.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4124.md @@ -10,6 +10,8 @@ ms.assetid: c08c3a65-9584-47a1-a147-44f00c4b230e > __fastcall with stack checking is inefficient +## Remarks + The **`__fastcall`** keyword was used with stack checking enabled. The **`__fastcall`** convention generates faster code, but stack checking causes slower code. When using **`__fastcall`**, turn off stack checking with the **check_stack** pragma or /Gs. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4129.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4129.md index 453af27783f..6b0f583bd86 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4129.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4129.md @@ -10,12 +10,16 @@ ms.assetid: a4190c64-4bfb-48fd-8e98-52720bc0d878 > 'character' : unrecognized character escape sequence +## Remarks + The `character` following a backslash (\\) in a character or string constant is not recognized as a valid escape sequence. The backslash is ignored and not printed. The character following the backslash is printed. To print a single backslash, specify a double backslash (\\\\). The C++ standard, in section 2.13.2 discusses escape sequences. +## Example + The following sample generates C4129: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4138.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4138.md index 5647b37f82b..346349bd9d5 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4138.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4138.md @@ -10,6 +10,8 @@ ms.assetid: 65ebf929-bba0-4237-923b-c1b66adfe17d > '*/' found outside of comment +## Remarks + The closing-comment delimiter is not preceded by an opening-comment delimiter. The compiler assumes a space between the asterisk (\*) and the forward slash (/). ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4142.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4142.md index f12f02f6e16..9e464e58eb1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4142.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4142.md @@ -10,6 +10,8 @@ ms.assetid: 1fdfc3dc-60a2-4f00-b133-20e400f9b7a6 > benign redefinition of type +## Remarks + A type is redefined in a manner that has no effect on the generated code. To fix by checking the following possible causes: @@ -18,6 +20,8 @@ To fix by checking the following possible causes: - A type defined with the **`typedef`** command is redefined using different syntax. +## Example + The following sample generates C4142: ```c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4143.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4143.md index 7459260d1ef..ddbff1223f0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4143.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4143.md @@ -10,4 +10,6 @@ ms.assetid: ef0bd19f-d169-4034-8710-b22971bd642d > pragma 'same_seg' not supported; use __based allocation +## Remarks + The **#pragma same_seg** is no longer supported. Use the [__based](../../cpp/based-pointers-cpp.md) keyword instead. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4144.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4144.md index bb47b225811..e2c2e84157e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4144.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4144.md @@ -10,7 +10,13 @@ ms.assetid: a37b445d-dbc6-43b4-8d95-ffd0e4225464 > 'expression' : relational expression as switch expression -The specified relational expression was used as the control expression of a [switch](../../cpp/switch-statement-cpp.md) statement. The associated case statements will be offered Boolean values. The following sample generates C4144: +## Remarks + +The specified relational expression was used as the control expression of a [switch](../../cpp/switch-statement-cpp.md) statement. The associated case statements will be offered Boolean values. + +## Example + +The following sample generates C4144: ```cpp // C4144.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4145.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4145.md index 19caf4b1448..e7804a1caf9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4145.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4145.md @@ -10,6 +10,8 @@ ms.assetid: 0440777a-cca2-4159-aff5-e67a254ad64a > 'expression1' : relational expression as switch expression; possible confusion with 'expression2' +## Remarks + A **`switch`** statement uses a relational expression as its control expression, which results in a Boolean value for the **`case`** statements. Did you mean *expression2*? ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4153.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4153.md index 88fd69beb1d..5750044bffc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4153.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4153.md @@ -10,4 +10,6 @@ ms.assetid: 37a15754-9dba-470b-adda-c4b888064b3e > function/data pointer conversion in expression +## Remarks + A function pointer is converted to or from a data pointer. This conversion is allowed under Microsoft extensions (/Ze) but not under ANSI C. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4154.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4154.md index 8e1a7ad44fb..a73bab697c3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4154.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4154.md @@ -10,6 +10,8 @@ ms.assetid: 4511afeb-e893-4cc6-83b6-4c7a0477f76b > deletion of an array expression; conversion to pointer supplied +## Remarks + You cannot use **`delete`** on an array, so the compiler converts the array to a pointer. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4155.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4155.md index 7ef31e3d48a..daf2f9b67f6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4155.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4155.md @@ -10,6 +10,8 @@ ms.assetid: ba233353-09e3-4195-8127-13a27ddd8d70 > deletion of an array expression without using the array form of 'delete' +## Remarks + The array form of **`delete`** should be used to delete an array. This warning occurs only under ANSI-compatibility (/Za). ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4157.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4157.md index 1cea93b4266..4e38d3c717f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4157.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4157.md @@ -10,4 +10,6 @@ ms.assetid: 6dabc303-eba1-4a8e-a124-a6e1dc84f4bd > pragma was ignored by C compiler +## Remarks + Only the C++ compiler recognizes **init_seg()**. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4158.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4158.md index 0c5e3fe14ca..c65e899dc9e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4158.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4158.md @@ -10,4 +10,6 @@ ms.assetid: 6513c6b9-6772-4849-b96c-5bb093d54de6 > assuming #pragma pointers_to_members(full_generality, inheritance) +## Remarks + A `#pragma pointers_to_members( single | multiple | virtual )` was issued without an accompanying `#pragma pointers_to_members(full_generality)`. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4146.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4146.md index 5cf22844774..439b8dffbcc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4146.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4146.md @@ -9,10 +9,10 @@ helpviewer_keywords: ["C4146"] > unary minus operator applied to unsigned type, result still unsigned -Unsigned types only hold non-negative values. So unary minus (negation) usually doesn't make sense when applied to an unsigned type. Both the operand and the result are non-negative. - ## Remarks +Unsigned types only hold non-negative values. So unary minus (negation) usually doesn't make sense when applied to an unsigned type. Both the operand and the result are non-negative. + When you express a negative integer literal, the **`-`** in front of the value is parsed as a [unary negation](../../cpp/unary-plus-and-negation-operators-plus-and.md) operator. The compiler applies the operator after it parses the numeric value. If the numeric value fits in the range of an unsigned integer type, but not the corresponding signed integer type, the compiler interprets the value as unsigned. This warning often occurs when you try to express the minimum **`int`** value, -2147483648, or the minimum **`long long`** value, -9223372036854775808. These values can't be written as -2147483648 or -9223372036854775808ll. The reason is because the compiler processes the expression in two stages: first, it parses the numeric value, then it applies the negation operator. For example, when the compiler parses -2147483648, it follows these steps: diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4150.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4150.md index 3fcab815220..6fb3505b141 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4150.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4150.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4150"] > deletion of pointer to incomplete type 'type'; no destructor called +## Remarks + The `delete` operator is called to delete a type that was declared but not defined. The compiler can't find the destructor to call because the definition isn't in the same translation unit as the `delete`. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4156.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4156.md index b7fb11a618f..ecd8359f2f8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4156.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4156.md @@ -10,6 +10,8 @@ ms.assetid: 9adf3acb-c0fe-42a8-a4db-5822b1493f77 > deletion of an array expression without using the array form of 'delete'; array form substituted +## Remarks + The non-array form of **`delete`** cannot delete an array. The compiler translated **`delete`** to the array form. This warning occurs only under Microsoft extensions (/Ze). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4133.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4133.md index 48a818c0f07..63bb48405e0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4133.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4133.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4133"] > '*expression*': incompatible types - from '*type1*' to '*type2*' +## Remarks + This warning is emitted when incompatible types are used in an expression. For example, doing arithmetic operations such as subtraction with different pointer types. To avoid this warning, provide an appropriate type cast. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4121.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4121.md index 7b33b47a9d1..8e6537c60a2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4121.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4121.md @@ -10,7 +10,13 @@ ms.assetid: 8c5b85c9-2543-426b-88bc-319c50158c7e > 'symbol' : alignment of a member was sensitive to packing -The compiler added padding to align a structure member on the packing boundary but the packing value is less than the member's size. For example, the following code snippet produces C4121: +## Remarks + +The compiler added padding to align a structure member on the packing boundary but the packing value is less than the member's size. + +## Example + +For example, the following code snippet produces C4121: ```cpp // C4121.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4125.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4125.md index 3ae2a934729..77dfb9bf83d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4125.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4125.md @@ -10,6 +10,8 @@ ms.assetid: a081d1f4-0789-4915-91df-7ff0b28ca245 > decimal digit terminates octal escape sequence +## Remarks + The compiler evaluates the octal number without the decimal digit and assumes the decimal digit is a character. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4127.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4127.md index 6edd099df73..93d7372a5ff 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4127.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4127.md @@ -16,7 +16,7 @@ The controlling expression of an **`if`** statement or **`while`** loop evaluate If the controlling expression of a **`while`** loop is a constant because the loop exits in the middle, consider replacing the **`while`** loop with a **`for`** loop. You can omit the initialization, termination test and loop increment of a **`for`** loop, which causes the loop to be infinite, just like `while(1)`, and you can exit the loop from the body of the **`for`** statement. -## Example +## Examples The following sample shows two ways C4127 is generated, and shows how to use a for loop to avoid the warning: diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4130.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4130.md index cea0ead7d37..2c6b92b46e0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4130.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4130.md @@ -10,8 +10,12 @@ ms.assetid: 45e4c7b2-6b51-41c7-ba5e-941aa5c7d3dc > 'operator' : logical operation on address of string constant +## Remarks + Using the operator with the address of a string literal produces unexpected code. +## Example + The following sample generates C4130: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4131.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4131.md index ba7b59e5503..3619a5c469e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4131.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4131.md @@ -10,10 +10,14 @@ ms.assetid: 7903b3e1-454f-4be2-aa9b-230992f96a2d > 'function' : uses old-style declarator +## Remarks + The specified function declaration is not in prototype form. Old-style function declarations should be converted to prototype form. +## Example + The following example shows an old-style function declaration: ```c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4132.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4132.md index ceab9790c17..91a32db6a6a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4132.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4132.md @@ -10,4 +10,6 @@ ms.assetid: b60e5b4a-53ac-4503-8456-235477f48afd > 'object' : const object should be initialized +## Remarks + The constant is not initialized. The value of a symbol with the **`const`** attribute cannot be changed after its definition, it should be given an initialization value. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4152.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4152.md index 8cf9b7aeeb9..ff1cf0669ea 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4152.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4152.md @@ -10,4 +10,6 @@ ms.assetid: 6025ab70-d7cf-4730-913a-3ca0b1186a3a > non standard extension, function/data ptr conversion in expression +## Remarks + A function pointer is converted to or from a data pointer. This conversion is allowed under Microsoft extensions (/Ze) but not under ANSI C. From b86736f6e8f07bf9fd2540c40685007142440a56 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 26 Aug 2025 23:24:01 +0800 Subject: [PATCH 1606/2255] Replace term "sample" with "example" for warning references in range [C4121, C4160] --- .../compiler-warnings/compiler-warning-level-1-c4129.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4142.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4144.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4145.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4155.md | 2 +- .../compiler-warnings/compiler-warning-level-2-c4146.md | 2 +- .../compiler-warnings/compiler-warning-level-2-c4150.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4127.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4130.md | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4129.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4129.md index 6b0f583bd86..326f98789e5 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4129.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4129.md @@ -20,7 +20,7 @@ The C++ standard, in section 2.13.2 discusses escape sequences. ## Example -The following sample generates C4129: +The following example generates C4129: ```cpp // C4129.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4142.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4142.md index 9e464e58eb1..3adecd2d0b7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4142.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4142.md @@ -22,7 +22,7 @@ To fix by checking the following possible causes: ## Example -The following sample generates C4142: +The following example generates C4142: ```c // C4142.c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4144.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4144.md index e2c2e84157e..431f47ec0a6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4144.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4144.md @@ -16,7 +16,7 @@ The specified relational expression was used as the control expression of a [swi ## Example -The following sample generates C4144: +The following example generates C4144: ```cpp // C4144.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4145.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4145.md index e7804a1caf9..80952508179 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4145.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4145.md @@ -16,7 +16,7 @@ A **`switch`** statement uses a relational expression as its control expression, ## Example -The following sample generates C4145: +The following example generates C4145: ```cpp // C4145.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4155.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4155.md index daf2f9b67f6..0f7d6b75b35 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4155.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4155.md @@ -16,7 +16,7 @@ The array form of **`delete`** should be used to delete an array. This warning o ## Example -The following sample generates C4155: +The following example generates C4155: ```cpp // C4155.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4146.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4146.md index 439b8dffbcc..ec27d0f33ed 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4146.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4146.md @@ -28,7 +28,7 @@ The [`/sdl` (Enable Additional Security Checks)](../../build/reference/sdl-enabl ## Example -The following sample demonstrates the unexpected behavior that can happen when the compiler generates warning C4146: +The following example demonstrates the unexpected behavior that can happen when the compiler generates warning C4146: ```cpp // C4146.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4150.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4150.md index 6fb3505b141..6f7148a40c2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4150.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4150.md @@ -15,7 +15,7 @@ The `delete` operator is called to delete a type that was declared but not defin ## Example -The following sample generates C4150 by declaring but not defining `class IncClass`: +The following example generates C4150 by declaring but not defining `class IncClass`: ```cpp // compile with: /W2 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4127.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4127.md index 93d7372a5ff..f7209eb1c00 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4127.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4127.md @@ -18,7 +18,7 @@ If the controlling expression of a **`while`** loop is a constant because the lo ## Examples -The following sample shows two ways C4127 is generated, and shows how to use a for loop to avoid the warning: +The following example shows two ways C4127 is generated, and shows how to use a for loop to avoid the warning: ```cpp // C4127.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4130.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4130.md index 2c6b92b46e0..5cb5302bb43 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4130.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4130.md @@ -16,7 +16,7 @@ Using the operator with the address of a string literal produces unexpected code ## Example -The following sample generates C4130: +The following example generates C4130: ```cpp // C4130.cpp From 4c96416f02be3572d4b6bfcd92e3f2b69708d351 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 26 Aug 2025 23:28:15 +0800 Subject: [PATCH 1607/2255] Update metadata for warning references in range [C4121, C4160] --- .../compiler-warnings/compiler-warning-level-1-c4122.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4124.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4129.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4138.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4141.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4142.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4143.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4144.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4145.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4153.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4154.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4155.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4157.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4158.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4160.md | 5 ++--- .../compiler-warnings/compiler-warning-level-2-c4146.md | 2 +- .../compiler-warnings/compiler-warning-level-2-c4150.md | 2 +- .../compiler-warnings/compiler-warning-level-2-c4156.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4133.md | 4 ++-- .../compiler-warnings/compiler-warning-level-3-c4159.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4121.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4125.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4127.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4130.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4131.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4132.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4152.md | 5 ++--- 27 files changed, 52 insertions(+), 75 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4122.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4122.md index 710c616e063..bdb3071ce53 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4122.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4122.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4122" title: "Compiler Warning (level 1) C4122" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4122" +ms.date: 11/04/2016 f1_keywords: ["C4122"] helpviewer_keywords: ["C4122"] -ms.assetid: 9a83eb0d-8708-42f7-988a-b0b6f2f646a0 --- # Compiler Warning (level 1) C4122 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4124.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4124.md index 165c0d90359..6e38358a92c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4124.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4124.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4124" title: "Compiler Warning (level 1) C4124" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4124" +ms.date: 11/04/2016 f1_keywords: ["C4124"] helpviewer_keywords: ["C4124"] -ms.assetid: c08c3a65-9584-47a1-a147-44f00c4b230e --- # Compiler Warning (level 1) C4124 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4129.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4129.md index 326f98789e5..d75dddc8ccd 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4129.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4129.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4129" title: "Compiler Warning (level 1) C4129" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4129" +ms.date: 11/04/2016 f1_keywords: ["C4129"] helpviewer_keywords: ["C4129"] -ms.assetid: a4190c64-4bfb-48fd-8e98-52720bc0d878 --- # Compiler Warning (level 1) C4129 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4138.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4138.md index 346349bd9d5..803962499b8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4138.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4138.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4138" title: "Compiler Warning (level 1) C4138" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4138" +ms.date: 11/04/2016 f1_keywords: ["C4138"] helpviewer_keywords: ["C4138"] -ms.assetid: 65ebf929-bba0-4237-923b-c1b66adfe17d --- # Compiler Warning (level 1) C4138 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4141.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4141.md index e166131289d..47e29f63e3e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4141.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4141.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 1, Error) C4141" title: "Compiler Warning (level 1, Error) C4141" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1, Error) C4141" +ms.date: 11/04/2016 f1_keywords: ["C4141"] helpviewer_keywords: ["C4141"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4142.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4142.md index 3adecd2d0b7..90f6cc10a7b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4142.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4142.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4142" title: "Compiler Warning (level 1) C4142" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4142" +ms.date: 11/04/2016 f1_keywords: ["C4142"] helpviewer_keywords: ["C4142"] -ms.assetid: 1fdfc3dc-60a2-4f00-b133-20e400f9b7a6 --- # Compiler Warning (level 1) C4142 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4143.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4143.md index ddbff1223f0..d4e1d6c8ab3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4143.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4143.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4143" title: "Compiler Warning (level 1) C4143" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4143" +ms.date: 11/04/2016 f1_keywords: ["C4143"] helpviewer_keywords: ["same_seg", "C4143"] -ms.assetid: ef0bd19f-d169-4034-8710-b22971bd642d --- # Compiler Warning (level 1) C4143 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4144.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4144.md index 431f47ec0a6..19e46906093 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4144.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4144.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4144" title: "Compiler Warning (level 1) C4144" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4144" +ms.date: 11/04/2016 f1_keywords: ["C4144"] helpviewer_keywords: ["C4144"] -ms.assetid: a37b445d-dbc6-43b4-8d95-ffd0e4225464 --- # Compiler Warning (level 1) C4144 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4145.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4145.md index 80952508179..4ef4b5f5e37 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4145.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4145.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4145" title: "Compiler Warning (level 1) C4145" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4145" +ms.date: 11/04/2016 f1_keywords: ["C4145"] helpviewer_keywords: ["C4145"] -ms.assetid: 0440777a-cca2-4159-aff5-e67a254ad64a --- # Compiler Warning (level 1) C4145 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4153.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4153.md index 5750044bffc..0f80d1e4c9d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4153.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4153.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4153" title: "Compiler Warning (level 1) C4153" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4153" +ms.date: 11/04/2016 f1_keywords: ["C4153"] helpviewer_keywords: ["C4153"] -ms.assetid: 37a15754-9dba-470b-adda-c4b888064b3e --- # Compiler Warning (level 1) C4153 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4154.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4154.md index a73bab697c3..b679ae6652a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4154.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4154.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4154" title: "Compiler Warning (level 1) C4154" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4154" +ms.date: 11/04/2016 f1_keywords: ["C4154"] helpviewer_keywords: ["C4154"] -ms.assetid: 4511afeb-e893-4cc6-83b6-4c7a0477f76b --- # Compiler Warning (level 1) C4154 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4155.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4155.md index 0f7d6b75b35..8ae584b843a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4155.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4155.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4155" title: "Compiler Warning (level 1) C4155" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4155" +ms.date: 11/04/2016 f1_keywords: ["C4155"] helpviewer_keywords: ["C4155"] -ms.assetid: ba233353-09e3-4195-8127-13a27ddd8d70 --- # Compiler Warning (level 1) C4155 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4157.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4157.md index 4e38d3c717f..1f1864aff51 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4157.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4157.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4157" title: "Compiler Warning (level 1) C4157" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4157" +ms.date: 11/04/2016 f1_keywords: ["C4157"] helpviewer_keywords: ["C4157"] -ms.assetid: 6dabc303-eba1-4a8e-a124-a6e1dc84f4bd --- # Compiler Warning (level 1) C4157 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4158.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4158.md index c65e899dc9e..72fbc895e57 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4158.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4158.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4158" title: "Compiler Warning (level 1) C4158" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4158" +ms.date: 11/04/2016 f1_keywords: ["C4158"] helpviewer_keywords: ["C4158"] -ms.assetid: 6513c6b9-6772-4849-b96c-5bb093d54de6 --- # Compiler Warning (level 1) C4158 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4160.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4160.md index a0765747a33..6eea80c6c9e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4160.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4160.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4160" title: "Compiler Warning (level 1) C4160" -ms.date: "08/27/2018" +description: "Learn more about: Compiler Warning (level 1) C4160" +ms.date: 08/27/2018 f1_keywords: ["C4160"] helpviewer_keywords: ["C4160"] -ms.assetid: a9610cb7-cac4-4a74-8b4e-049030ebb92b --- # Compiler Warning (level 1) C4160 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4146.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4146.md index ec27d0f33ed..42ff1e16f22 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4146.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4146.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler warning (level 2) C4146" title: "Compiler warning (level 2) C4146" +description: "Learn more about: Compiler warning (level 2) C4146" ms.date: 04/22/2025 f1_keywords: ["C4146"] helpviewer_keywords: ["C4146"] diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4150.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4150.md index 6f7148a40c2..4e373271a61 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4150.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4150.md @@ -1,5 +1,5 @@ --- -title: Compiler warning (level 2) C4150 +title: "Compiler warning (level 2) C4150" description: "Learn more about: Compiler Warning (level 2) C4150" ms.date: 11/04/2016 f1_keywords: ["C4150"] diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4156.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4156.md index ecd8359f2f8..713a9e37f6b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4156.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4156.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 2) C4156" title: "Compiler Warning (level 2) C4156" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 2) C4156" +ms.date: 11/04/2016 f1_keywords: ["C4156"] helpviewer_keywords: ["C4156"] -ms.assetid: 9adf3acb-c0fe-42a8-a4db-5822b1493f77 --- # Compiler Warning (level 2) C4156 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4133.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4133.md index 63bb48405e0..adfd70c3826 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4133.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4133.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 1 and level 3) C4133" title: "Compiler Warning (level 1 and level 3) C4133" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1 and level 3) C4133" +ms.date: 11/04/2016 f1_keywords: ["C4133"] helpviewer_keywords: ["C4133"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4159.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4159.md index 6f6a163564f..74670b18999 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4159.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4159.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4159" title: "Compiler Warning (level 3) C4159" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4159" +ms.date: 11/04/2016 f1_keywords: ["C4159"] helpviewer_keywords: ["C4159"] -ms.assetid: e2cf964e-f4b8-4b2c-9569-1abb94307232 --- # Compiler Warning (level 3) C4159 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4121.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4121.md index 8e6537c60a2..0d8b34944c4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4121.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4121.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4121" title: "Compiler Warning (level 4) C4121" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4121" +ms.date: 11/04/2016 f1_keywords: ["C4121"] helpviewer_keywords: ["C4121"] -ms.assetid: 8c5b85c9-2543-426b-88bc-319c50158c7e --- # Compiler Warning (level 4) C4121 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4125.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4125.md index 77dfb9bf83d..abf6edcc81f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4125.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4125.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4125" title: "Compiler Warning (level 4) C4125" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4125" +ms.date: 11/04/2016 f1_keywords: ["C4125"] helpviewer_keywords: ["C4125"] -ms.assetid: a081d1f4-0789-4915-91df-7ff0b28ca245 --- # Compiler Warning (level 4) C4125 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4127.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4127.md index f7209eb1c00..b1187b11e15 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4127.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4127.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4127" title: "Compiler Warning (level 4) C4127" -ms.date: "10/16/2019" +description: "Learn more about: Compiler Warning (level 4) C4127" +ms.date: 10/16/2019 f1_keywords: ["C4127"] helpviewer_keywords: ["C4127"] -ms.assetid: f59ded9e-5227-45bd-ac43-2aa861581363 --- # Compiler Warning (level 4) C4127 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4130.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4130.md index 5cb5302bb43..ab33396c73f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4130.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4130.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4130" title: "Compiler Warning (level 4) C4130" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4130" +ms.date: 11/04/2016 f1_keywords: ["C4130"] helpviewer_keywords: ["C4130"] -ms.assetid: 45e4c7b2-6b51-41c7-ba5e-941aa5c7d3dc --- # Compiler Warning (level 4) C4130 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4131.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4131.md index 3619a5c469e..d02d901579d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4131.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4131.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4131" title: "Compiler Warning (level 4) C4131" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4131" +ms.date: 11/04/2016 f1_keywords: ["C4131"] helpviewer_keywords: ["C4131"] -ms.assetid: 7903b3e1-454f-4be2-aa9b-230992f96a2d --- # Compiler Warning (level 4) C4131 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4132.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4132.md index 91a32db6a6a..a5cb7d8a4c9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4132.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4132.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4132" title: "Compiler Warning (level 4) C4132" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4132" +ms.date: 11/04/2016 f1_keywords: ["C4132"] helpviewer_keywords: ["C4132"] -ms.assetid: b60e5b4a-53ac-4503-8456-235477f48afd --- # Compiler Warning (level 4) C4132 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4152.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4152.md index ff1cf0669ea..de346a27ecd 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4152.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4152.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4152" title: "Compiler Warning (level 4) C4152" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4152" +ms.date: 11/04/2016 f1_keywords: ["C4152"] helpviewer_keywords: ["C4152"] -ms.assetid: 6025ab70-d7cf-4730-913a-3ca0b1186a3a --- # Compiler Warning (level 4) C4152 From 6e99ee2b83f58c312e8f8ba3cea8714116a9f119 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 26 Aug 2025 23:31:35 +0800 Subject: [PATCH 1608/2255] Add leading example sentence for warning references in range [C4121, C4160] --- .../compiler-warnings/compiler-warning-level-1-c4138.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4141.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4154.md | 2 ++ .../compiler-warnings/compiler-warning-level-2-c4156.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4125.md | 2 ++ 5 files changed, 10 insertions(+) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4138.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4138.md index 803962499b8..e6971ba8739 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4138.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4138.md @@ -15,6 +15,8 @@ The closing-comment delimiter is not preceded by an opening-comment delimiter. T ## Example +The following example generates C4138: + ```cpp // C4138a.cpp // compile with: /W1 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4141.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4141.md index 47e29f63e3e..7a38f03c082 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4141.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4141.md @@ -11,6 +11,8 @@ helpviewer_keywords: ["C4141"] ## Example +The following example generates C4141: + ```cpp // C4141.cpp // compile with: /W1 /LD diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4154.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4154.md index b679ae6652a..bd590178ea3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4154.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4154.md @@ -15,6 +15,8 @@ You cannot use **`delete`** on an array, so the compiler converts the array to a ## Example +The following example generates C4154: + ```cpp // C4154.cpp // compile with: /c /W1 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4156.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4156.md index 713a9e37f6b..c72e3d2f1da 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4156.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4156.md @@ -17,6 +17,8 @@ This warning occurs only under Microsoft extensions (/Ze). ## Example +The following example generates C4156: + ```cpp // C4156.cpp // compile with: /W2 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4125.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4125.md index abf6edcc81f..78acc7ec0f4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4125.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4125.md @@ -15,6 +15,8 @@ The compiler evaluates the octal number without the decimal digit and assumes th ## Example +The following example generates C4125: + ```cpp // C4125a.cpp // compile with: /W4 From 6f182248c915d2569f7ee9522474995ce5a57587 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 26 Aug 2025 23:39:39 +0800 Subject: [PATCH 1609/2255] Add blockquotes for warning messages in range [C4161, C4200] --- .../compiler-warnings/compiler-warning-level-1-c4162.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4163.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4164.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4165.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4166.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4167.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4168.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4174.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4175.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4176.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4177.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4178.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4180.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4182.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4183.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4185.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4186.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4187.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4190.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4192.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4197.md | 2 +- 21 files changed, 21 insertions(+), 21 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4162.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4162.md index 151a1a95050..d1b550f00ca 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4162.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4162.md @@ -8,7 +8,7 @@ ms.assetid: 21ae3c92-501d-4689-ad7d-13753cb65eff --- # Compiler Warning (level 1) C4162 -'identifier' : no function with C linkage found +> 'identifier' : no function with C linkage found A function with C linkage is declared but cannot be found. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4163.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4163.md index b49a2aed3ae..296504df7bf 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4163.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4163.md @@ -8,7 +8,7 @@ ms.assetid: b08413fd-03fc-4f41-9167-a98976ac12f2 --- # Compiler Warning (level 1) C4163 -'identifier' : not available as an intrinsic function +> 'identifier' : not available as an intrinsic function The specified function cannot be used as an [intrinsic](../../preprocessor/intrinsic.md) function. The compiler ignores the invalid function name. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4164.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4164.md index 37bbf267a15..a11317b8cac 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4164.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4164.md @@ -8,6 +8,6 @@ ms.assetid: 6d7e4a36-8227-4419-880f-44576033493e --- # Compiler Warning (level 1) C4164 -'identifier' : intrinsic function not declared +> 'identifier' : intrinsic function not declared The specified intrinsic function is not declared; you may need to #include the appropriate header file. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4165.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4165.md index aa851b63b8c..55b7a672aa7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4165.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4165.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C4165"] --- # Compiler Warning (level 3, off) C4165 -'`HRESULT`' is being converted to '`bool`'; are you sure this is what you want? +> '`HRESULT`' is being converted to '`bool`'; are you sure this is what you want? When an `HRESULT` is used in an [`if`](../../cpp/if-else-statement-cpp.md) statement, the `HRESULT` is converted to a [`bool`](../../cpp/bool-cpp.md) unless you explicitly test for the variable as an `HRESULT`. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4166.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4166.md index 081a79b459b..2e87939fbe7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4166.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4166.md @@ -8,6 +8,6 @@ ms.assetid: 4e5398a1-d913-4791-a470-06fc99c36ac5 --- # Compiler Warning (level 1) C4166 -**illegal calling convention for constructor/destructor** +> illegal calling convention for constructor/destructor Constructors and destructors cannot have calling conventions other than the default for the platform (except when you explicitly specify **__clrcall**). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4167.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4167.md index ba1b58c8861..28fce69b39f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4167.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4167.md @@ -8,7 +8,7 @@ ms.assetid: 74a420bd-9371-4167-b1ee-74dd8680f97b --- # Compiler Warning (level 1) C4167 -function : only available as an intrinsic function +> function : only available as an intrinsic function The **#pragma function** tries to force the compiler to use a conventional call to a function that must be used in intrinsic form. The pragma is ignored. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4168.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4168.md index 18cc19630d2..139bdaeb3a5 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4168.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4168.md @@ -8,6 +8,6 @@ ms.assetid: 1feefa6c-37be-4f7d-856e-f4b648f2fff8 --- # Compiler Warning (level 1) C4168 -compiler limit : out of debugger types, delete program database 'database' and rebuild +> compiler limit : out of debugger types, delete program database 'database' and rebuild The program database file must be rebuilt to accommodate all types in the program. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4174.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4174.md index 4f3fdd7da9b..c08fe558bb3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4174.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4174.md @@ -8,7 +8,7 @@ ms.assetid: 63301e51-24bc-43c4-bb11-252f7d513e9e --- # Compiler Warning (level 1) C4174 -'name' : not available as a #pragma component +> 'name' : not available as a #pragma component ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4175.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4175.md index 5840c607830..dd1b10eb9b6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4175.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4175.md @@ -8,6 +8,6 @@ ms.assetid: 11407a07-127c-4d0d-b262-61f9f2b035ba --- # Compiler Warning (level 1) C4175 -\#pragma component(browser, on) : browser info must initially be specified on the command line +> #pragma component(browser, on) : browser info must initially be specified on the command line To use [component](../../preprocessor/component.md) pragma, you must generate browse information during compilation ([/FR](../../build/reference/fr-fr-create-dot-sbr-file.md)). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4176.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4176.md index 209b15d9bfc..caeaf192ba8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4176.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4176.md @@ -8,7 +8,7 @@ ms.assetid: cfffb934-219a-4a63-9df6-ba54405bf766 --- # Compiler Warning (level 1) C4176 -'subcomponent' : unknown subcomponent for #pragma component browser +> 'subcomponent' : unknown subcomponent for #pragma component browser The **component** pragma contains an invalid subcomponent. To exclude references to a particular name, you must use the **references** option before the name. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4177.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4177.md index d01e1cdba15..ccf420eee07 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4177.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4177.md @@ -8,7 +8,7 @@ ms.assetid: 2b05a5b3-696e-4f21-818e-227b9335e748 --- # Compiler Warning (level 1) C4177 -\#pragma pragma should be at global scope +> #pragma pragma should be at global scope The [pragma](../../preprocessor/pragma-directives-and-the-pragma-keyword.md) pragma should not be used within a local scope. The **pragma** will not be valid until global scope is encountered after the current scope. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4178.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4178.md index c3cf0473250..1d705be5f70 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4178.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4178.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C4178"] --- # Compiler Warning (level 1) C4178 -case constant 'constant' too big for the type of the switch expression +> case constant 'constant' too big for the type of the switch expression A case constant in a **`switch`** expression does not fit in the type to which it is assigned. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4180.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4180.md index c1134d1c3d7..39d5349981a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4180.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4180.md @@ -8,7 +8,7 @@ ms.assetid: 40c91bd4-37f1-4d59-a4f3-d5ddab68239b --- # Compiler Warning (level 1) C4180 -qualifier applied to function type has no meaning; ignored +> qualifier applied to function type has no meaning; ignored A qualifier, such as **`const`**, is applied to a function type defined by **`typedef`**. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4182.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4182.md index 0983b499fa9..e222616fd65 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4182.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4182.md @@ -8,7 +8,7 @@ ms.assetid: 8970f3c6-e2dd-407e-b2ec-964360eb8b43 --- # Compiler Warning (level 1) C4182 -\#include nesting level is 'number' deep; possible infinite recursion +> #include nesting level is 'number' deep; possible infinite recursion The compiler ran out of space on the heap because of the number of nested include files. An include file is nested when it is included from another include file. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4183.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4183.md index 036ad1f925d..8ed313e482d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4183.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4183.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C4183"] --- # Compiler Warning (level 1) C4183 -'identifier': missing return type; assumed to be a member function returning 'int' +> 'identifier': missing return type; assumed to be a member function returning 'int' The inline definition of a member function in a class or a structure does not have a return type. This member function is assumed to have a default return type of **`int`**. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4185.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4185.md index 92f1ada3b6b..260b88bbe15 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4185.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4185.md @@ -8,7 +8,7 @@ ms.assetid: 37e7063a-35b1-4e05-ae31-e811dced02b9 --- # Compiler Warning (level 1) C4185 -ignoring unknown #import attribute 'attribute' +> ignoring unknown #import attribute 'attribute' The attribute is not a valid attribute of `#import`. It is ignored. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4186.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4186.md index 5e4248063e1..3364f436256 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4186.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4186.md @@ -8,7 +8,7 @@ ms.assetid: caf3f7d8-f305-426b-8d4e-2b96f5c269ea --- # Compiler Warning (level 1) C4186 -\#import attribute 'attribute' requires count arguments; ignored +> #import attribute 'attribute' requires count arguments; ignored A `#import` attribute has the wrong number of arguments. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4187.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4187.md index 7690c5eca1f..00e850cb0b1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4187.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4187.md @@ -8,6 +8,6 @@ ms.assetid: 2443d948-ab7b-472c-af43-5d81e09af677 --- # Compiler Warning (level 1) C4187 -\#import attributes 'attribute1' and 'attribute2' are incompatible; both ignored +> #import attributes 'attribute1' and 'attribute2' are incompatible; both ignored A [#import](../../preprocessor/hash-import-directive-cpp.md) statement specified `no_implementation` and `implementation_only` attributes. Both are ignored. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4190.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4190.md index 7870bbed65c..f162d392f5f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4190.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4190.md @@ -8,7 +8,7 @@ ms.assetid: a4d0ad93-a19a-4063-addd-36d605831567 --- # Compiler Warning (level 1) C4190 -'identifier1' has C-linkage specified, but returns UDT 'identifier2' which is incompatible with C +> 'identifier1' has C-linkage specified, but returns UDT 'identifier2' which is incompatible with C A function or pointer to function has a UDT (user-defined type, which is a class, structure, enum, or union) as return type and `extern "C"` linkage. This is legal if: diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4192.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4192.md index 83450512bc4..a46f875bad2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4192.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4192.md @@ -8,7 +8,7 @@ ms.assetid: ea5f91fa-8c96-4f3f-ac42-0c8a86d4e5df --- # Compiler Warning (level 3) C4192 -automatically excluding 'name' while importing type library 'library' +> automatically excluding 'name' while importing type library 'library' A `#import` library contains an item, *name*, that is also defined in the Win32 system headers. Due to limitations of type libraries, names such as **IUnknown** or GUID are often defined in a type library, duplicating the definition from the system headers. `#import` will detect these items and refuse to incorporate them in the .tlh and .tli header files. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4197.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4197.md index d6fb5bfb8b8..9364ade2efb 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4197.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4197.md @@ -8,7 +8,7 @@ ms.assetid: f766feef-82b0-4d81-8a65-33628c7db196 --- # Compiler Warning (level 3) C4197 -'type' : top-level volatile in cast is ignored +> 'type' : top-level volatile in cast is ignored The compiler detected a cast to an r-value type which is qualified with [volatile](../../cpp/volatile-cpp.md), or a cast of an r-value type to some type that is qualified with volatile. According to the C standard (6.5.3), properties associated with qualified types are meaningful only for l-value expressions. From 2f791fd5cbd4f04366da2c0437207d7209aa1725 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 26 Aug 2025 23:49:11 +0800 Subject: [PATCH 1610/2255] Add "Remarks" and "Example" headings for warning references in range [C4161, C4200] --- .../compiler-warning-level-1-c4162.md | 4 ++++ .../compiler-warning-level-1-c4163.md | 4 ++++ .../compiler-warning-level-1-c4164.md | 2 ++ .../compiler-warning-level-1-c4165.md | 2 ++ .../compiler-warning-level-1-c4166.md | 2 ++ .../compiler-warning-level-1-c4167.md | 2 ++ .../compiler-warning-level-1-c4168.md | 2 ++ .../compiler-warning-level-1-c4175.md | 2 ++ .../compiler-warning-level-1-c4176.md | 2 ++ .../compiler-warning-level-1-c4177.md | 4 ++++ .../compiler-warning-level-1-c4178.md | 2 ++ .../compiler-warning-level-1-c4179.md | 6 ++++-- .../compiler-warning-level-1-c4180.md | 2 ++ .../compiler-warning-level-1-c4182.md | 2 ++ .../compiler-warning-level-1-c4183.md | 4 ++++ .../compiler-warning-level-1-c4185.md | 2 ++ .../compiler-warning-level-1-c4186.md | 2 ++ .../compiler-warning-level-1-c4187.md | 2 ++ .../compiler-warning-level-1-c4190.md | 2 ++ .../compiler-warning-level-3-c4191.md | 4 ++++ .../compiler-warning-level-3-c4192.md | 2 ++ .../compiler-warning-level-3-c4197.md | 4 ++++ .../compiler-warning-level-4-c4189.md | 2 ++ .../compiler-warning-levels-2-and-4-c4200.md | 12 ++++++++---- 24 files changed, 68 insertions(+), 6 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4162.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4162.md index d1b550f00ca..b2a993a4c48 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4162.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4162.md @@ -10,10 +10,14 @@ ms.assetid: 21ae3c92-501d-4689-ad7d-13753cb65eff > 'identifier' : no function with C linkage found +## Remarks + A function with C linkage is declared but cannot be found. To resolve this warning, compile in a .c file (invoke the C compiler). If you must invoke the C++ compiler, place extern "C" before the function declaration. +## Example + The following sample generates C4162 ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4163.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4163.md index 296504df7bf..e3342d6c129 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4163.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4163.md @@ -10,8 +10,12 @@ ms.assetid: b08413fd-03fc-4f41-9167-a98976ac12f2 > 'identifier' : not available as an intrinsic function +## Remarks + The specified function cannot be used as an [intrinsic](../../preprocessor/intrinsic.md) function. The compiler ignores the invalid function name. +## Example + The following sample generates C4163: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4164.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4164.md index a11317b8cac..0da8bb72db0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4164.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4164.md @@ -10,4 +10,6 @@ ms.assetid: 6d7e4a36-8227-4419-880f-44576033493e > 'identifier' : intrinsic function not declared +## Remarks + The specified intrinsic function is not declared; you may need to #include the appropriate header file. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4165.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4165.md index 55b7a672aa7..87b42a9775e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4165.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4165.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4165"] > '`HRESULT`' is being converted to '`bool`'; are you sure this is what you want? +## Remarks + When an `HRESULT` is used in an [`if`](../../cpp/if-else-statement-cpp.md) statement, the `HRESULT` is converted to a [`bool`](../../cpp/bool-cpp.md) unless you explicitly test for the variable as an `HRESULT`. Warning C4165 is off by default. For more information, see [Compiler Warnings That Are Off By Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4166.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4166.md index 2e87939fbe7..3a54b26fb21 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4166.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4166.md @@ -10,4 +10,6 @@ ms.assetid: 4e5398a1-d913-4791-a470-06fc99c36ac5 > illegal calling convention for constructor/destructor +## Remarks + Constructors and destructors cannot have calling conventions other than the default for the platform (except when you explicitly specify **__clrcall**). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4167.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4167.md index 28fce69b39f..516cf094020 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4167.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4167.md @@ -10,6 +10,8 @@ ms.assetid: 74a420bd-9371-4167-b1ee-74dd8680f97b > function : only available as an intrinsic function +## Remarks + The **#pragma function** tries to force the compiler to use a conventional call to a function that must be used in intrinsic form. The pragma is ignored. To avoid this warning, remove the **#pragma function**. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4168.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4168.md index 139bdaeb3a5..68a45057ba4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4168.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4168.md @@ -10,4 +10,6 @@ ms.assetid: 1feefa6c-37be-4f7d-856e-f4b648f2fff8 > compiler limit : out of debugger types, delete program database 'database' and rebuild +## Remarks + The program database file must be rebuilt to accommodate all types in the program. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4175.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4175.md index dd1b10eb9b6..f43bbfadc3f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4175.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4175.md @@ -10,4 +10,6 @@ ms.assetid: 11407a07-127c-4d0d-b262-61f9f2b035ba > #pragma component(browser, on) : browser info must initially be specified on the command line +## Remarks + To use [component](../../preprocessor/component.md) pragma, you must generate browse information during compilation ([/FR](../../build/reference/fr-fr-create-dot-sbr-file.md)). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4176.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4176.md index caeaf192ba8..da22fa4ecb6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4176.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4176.md @@ -10,6 +10,8 @@ ms.assetid: cfffb934-219a-4a63-9df6-ba54405bf766 > 'subcomponent' : unknown subcomponent for #pragma component browser +## Remarks + The **component** pragma contains an invalid subcomponent. To exclude references to a particular name, you must use the **references** option before the name. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4177.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4177.md index ccf420eee07..76fe83b8a54 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4177.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4177.md @@ -10,8 +10,12 @@ ms.assetid: 2b05a5b3-696e-4f21-818e-227b9335e748 > #pragma pragma should be at global scope +## Remarks + The [pragma](../../preprocessor/pragma-directives-and-the-pragma-keyword.md) pragma should not be used within a local scope. The **pragma** will not be valid until global scope is encountered after the current scope. +## Example + The following sample generates C4177: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4178.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4178.md index 1d705be5f70..2ec9fc71cc8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4178.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4178.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4178"] > case constant 'constant' too big for the type of the switch expression +## Remarks + A case constant in a **`switch`** expression does not fit in the type to which it is assigned. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4179.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4179.md index 79ed15e5d51..b9d8ae7288d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4179.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4179.md @@ -9,14 +9,16 @@ helpviewer_keywords: ["C4179"] > '`//*`' : parsed as '`/`' and '`/*`': confusion with standard '`//`' comments -In standard C89, **`//*`** is an incorrect comment delimiter. Use **`/*`** under **`/Za`** instead. - ## Remarks +In standard C89, **`//*`** is an incorrect comment delimiter. Use **`/*`** under **`/Za`** instead. + Before Visual Studio 2017 version 15.5, under **`/Za`**, the C compiler emits C4179 for a non-standard comment delimiter. In Visual Studio 2017 version 15.5, the C compiler no longer emits warnings C4001 and C4179. The warnings aren't needed because single-line comments have been part of the C standard since C99. +## Example + ```C /* C only */ #pragma warning(disable:4001) // C4619 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4180.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4180.md index 39d5349981a..a55406722f9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4180.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4180.md @@ -10,6 +10,8 @@ ms.assetid: 40c91bd4-37f1-4d59-a4f3-d5ddab68239b > qualifier applied to function type has no meaning; ignored +## Remarks + A qualifier, such as **`const`**, is applied to a function type defined by **`typedef`**. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4182.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4182.md index e222616fd65..bcdfb36b59c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4182.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4182.md @@ -10,6 +10,8 @@ ms.assetid: 8970f3c6-e2dd-407e-b2ec-964360eb8b43 > #include nesting level is 'number' deep; possible infinite recursion +## Remarks + The compiler ran out of space on the heap because of the number of nested include files. An include file is nested when it is included from another include file. This message is informational and precedes error [C1076](../../error-messages/compiler-errors-1/fatal-error-c1076.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4183.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4183.md index 8ed313e482d..f95807d892d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4183.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4183.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C4183"] > 'identifier': missing return type; assumed to be a member function returning 'int' +## Remarks + The inline definition of a member function in a class or a structure does not have a return type. This member function is assumed to have a default return type of **`int`**. +## Example + The following sample generates C4183: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4185.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4185.md index 260b88bbe15..5a19e934981 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4185.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4185.md @@ -10,6 +10,8 @@ ms.assetid: 37e7063a-35b1-4e05-ae31-e811dced02b9 > ignoring unknown #import attribute 'attribute' +## Remarks + The attribute is not a valid attribute of `#import`. It is ignored. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4186.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4186.md index 3364f436256..c883ecc28fa 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4186.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4186.md @@ -10,6 +10,8 @@ ms.assetid: caf3f7d8-f305-426b-8d4e-2b96f5c269ea > #import attribute 'attribute' requires count arguments; ignored +## Remarks + A `#import` attribute has the wrong number of arguments. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4187.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4187.md index 00e850cb0b1..e9065512d84 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4187.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4187.md @@ -10,4 +10,6 @@ ms.assetid: 2443d948-ab7b-472c-af43-5d81e09af677 > #import attributes 'attribute1' and 'attribute2' are incompatible; both ignored +## Remarks + A [#import](../../preprocessor/hash-import-directive-cpp.md) statement specified `no_implementation` and `implementation_only` attributes. Both are ignored. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4190.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4190.md index f162d392f5f..e2ed5d5c006 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4190.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4190.md @@ -10,6 +10,8 @@ ms.assetid: a4d0ad93-a19a-4063-addd-36d605831567 > 'identifier1' has C-linkage specified, but returns UDT 'identifier2' which is incompatible with C +## Remarks + A function or pointer to function has a UDT (user-defined type, which is a class, structure, enum, or union) as return type and `extern "C"` linkage. This is legal if: - All calls to this function occur from C++. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4191.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4191.md index 46b90ba9e27..4b165e9a742 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4191.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4191.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4191"] > '*operation*': unsafe conversion from '*type_of_expression*' to '*type_required*'
Making a function call using the resulting pointer may cause your program to fail +## Remarks + Several operations involving function pointers are considered unsafe: - Function types with different calling conventions. @@ -27,6 +29,8 @@ Calling this function through the result pointer might cause your program to cra This warning is off by default. For more information, see [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). +## Example + The following sample generates C4191: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4192.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4192.md index a46f875bad2..9a985f673fc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4192.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4192.md @@ -10,6 +10,8 @@ ms.assetid: ea5f91fa-8c96-4f3f-ac42-0c8a86d4e5df > automatically excluding 'name' while importing type library 'library' +## Remarks + A `#import` library contains an item, *name*, that is also defined in the Win32 system headers. Due to limitations of type libraries, names such as **IUnknown** or GUID are often defined in a type library, duplicating the definition from the system headers. `#import` will detect these items and refuse to incorporate them in the .tlh and .tli header files. To override this behavior, use `#import` attributes [no_auto_exclude](../../preprocessor/no-auto-exclude.md) and [include()](../../preprocessor/include-parens.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4197.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4197.md index 9364ade2efb..fcb7b9a3102 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4197.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4197.md @@ -10,8 +10,12 @@ ms.assetid: f766feef-82b0-4d81-8a65-33628c7db196 > 'type' : top-level volatile in cast is ignored +## Remarks + The compiler detected a cast to an r-value type which is qualified with [volatile](../../cpp/volatile-cpp.md), or a cast of an r-value type to some type that is qualified with volatile. According to the C standard (6.5.3), properties associated with qualified types are meaningful only for l-value expressions. +## Example + The following sample generates C4197: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4189.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4189.md index 6376aebe9d6..eb4c9402f34 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4189.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4189.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4189"] > '*identifier*' : local variable is initialized but not referenced +## Remarks + A variable is declared and initialized but not used. ## Examples diff --git a/docs/error-messages/compiler-warnings/compiler-warning-levels-2-and-4-c4200.md b/docs/error-messages/compiler-warnings/compiler-warning-levels-2-and-4-c4200.md index 309f2b0317e..d71805c10d6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-levels-2-and-4-c4200.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-levels-2-and-4-c4200.md @@ -11,8 +11,14 @@ helpviewer_keywords: ["C4200"] C++ only: > This member will be ignored by a defaulted constructor or copy/move assignment operator - -This warning indicates that a structure or union contains an array that has zero size. Declaration of a zero-sized array is a nonstandard compiler extension. This causes a Level-2 warning when a C++ file is compiled and a Level-4 warning when a C file is compiled. This example generates warning C4200: + +## Remarks + +This warning indicates that a structure or union contains an array that has zero size. Declaration of a zero-sized array is a nonstandard compiler extension. This causes a Level-2 warning when a C++ file is compiled and a Level-4 warning when a C file is compiled. + +## Example + +This example generates warning C4200: ```cpp // C4200.cpp @@ -25,8 +31,6 @@ struct A { This nonstandard extension is often used to interface code with external data structures that have a variable length. If this scenario applies to your code, you can disable the warning: -## Example - ```cpp // C4200b.cpp // compile by using: cl /W4 c4200a.cpp From b31f1e7d33ead6392708094f0ac139316854f35c Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 26 Aug 2025 23:50:03 +0800 Subject: [PATCH 1611/2255] Replace term "sample" with "example" for warning references in range [C4161, C4200] --- .../compiler-warnings/compiler-warning-level-1-c4162.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4163.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4165.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4177.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4183.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4191.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4197.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4189.md | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4162.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4162.md index b2a993a4c48..c78a6d46ea1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4162.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4162.md @@ -18,7 +18,7 @@ To resolve this warning, compile in a .c file (invoke the C compiler). If you m ## Example -The following sample generates C4162 +The following example generates C4162 ```cpp // C4162.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4163.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4163.md index e3342d6c129..d838a3227e8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4163.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4163.md @@ -16,7 +16,7 @@ The specified function cannot be used as an [intrinsic](../../preprocessor/intri ## Example -The following sample generates C4163: +The following example generates C4163: ```cpp // C4163.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4165.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4165.md index 87b42a9775e..d37b9c43235 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4165.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4165.md @@ -17,7 +17,7 @@ Warning C4165 is off by default. For more information, see [Compiler Warnings Th ## Example -The following sample generates C4165: +The following example generates C4165: ```cpp // C4165.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4177.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4177.md index 76fe83b8a54..3bc3f0fc113 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4177.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4177.md @@ -16,7 +16,7 @@ The [pragma](../../preprocessor/pragma-directives-and-the-pragma-keyword.md) pra ## Example -The following sample generates C4177: +The following example generates C4177: ```cpp // C4177.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4183.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4183.md index f95807d892d..1b3233348c9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4183.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4183.md @@ -15,7 +15,7 @@ The inline definition of a member function in a class or a structure does not ha ## Example -The following sample generates C4183: +The following example generates C4183: ```cpp // C4183.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4191.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4191.md index 4b165e9a742..db68e28e735 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4191.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4191.md @@ -31,7 +31,7 @@ This warning is off by default. For more information, see [Compiler Warnings Tha ## Example -The following sample generates C4191: +The following example generates C4191: ```cpp // C4191.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4197.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4197.md index fcb7b9a3102..8d0971d968b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4197.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4197.md @@ -16,7 +16,7 @@ The compiler detected a cast to an r-value type which is qualified with [volatil ## Example -The following sample generates C4197: +The following example generates C4197: ```cpp // C4197.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4189.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4189.md index eb4c9402f34..ea93509e677 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4189.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4189.md @@ -15,7 +15,7 @@ A variable is declared and initialized but not used. ## Examples -The following sample generates C4189: +The following example generates C4189: ```cpp // C4189.cpp From 12710cb4434d10abd988c78dfb7ecc28137d3ae7 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 26 Aug 2025 23:53:52 +0800 Subject: [PATCH 1612/2255] Update metadata for warning references in range [C4161, C4200] --- .../compiler-warnings/compiler-warning-level-1-c4162.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4163.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4164.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4165.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4166.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4167.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4168.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4174.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4175.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4176.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4177.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4178.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4179.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4180.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4182.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4185.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4186.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4187.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4190.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4161.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4192.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4197.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4189.md | 2 +- .../compiler-warning-levels-2-and-4-c4200.md | 4 ++-- 24 files changed, 46 insertions(+), 65 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4162.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4162.md index c78a6d46ea1..e48b464d475 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4162.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4162.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4162" title: "Compiler Warning (level 1) C4162" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4162" +ms.date: 11/04/2016 f1_keywords: ["C4162"] helpviewer_keywords: ["C4162"] -ms.assetid: 21ae3c92-501d-4689-ad7d-13753cb65eff --- # Compiler Warning (level 1) C4162 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4163.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4163.md index d838a3227e8..a66c5cf9508 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4163.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4163.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4163" title: "Compiler Warning (level 1) C4163" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4163" +ms.date: 11/04/2016 f1_keywords: ["C4163"] helpviewer_keywords: ["C4163"] -ms.assetid: b08413fd-03fc-4f41-9167-a98976ac12f2 --- # Compiler Warning (level 1) C4163 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4164.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4164.md index 0da8bb72db0..ba0cc3fa68d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4164.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4164.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4164" title: "Compiler Warning (level 1) C4164" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4164" +ms.date: 11/04/2016 f1_keywords: ["C4164"] helpviewer_keywords: ["C4164"] -ms.assetid: 6d7e4a36-8227-4419-880f-44576033493e --- # Compiler Warning (level 1) C4164 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4165.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4165.md index d37b9c43235..eb54234ee06 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4165.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4165.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 3, off) C4165" title: "Compiler Warning (level 3, off) C4165" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3, off) C4165" +ms.date: 11/04/2016 f1_keywords: ["C4165"] helpviewer_keywords: ["C4165"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4166.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4166.md index 3a54b26fb21..b3b8268a78d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4166.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4166.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4166" title: "Compiler Warning (level 1) C4166" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4166" +ms.date: 11/04/2016 f1_keywords: ["C4166"] helpviewer_keywords: ["C4166"] -ms.assetid: 4e5398a1-d913-4791-a470-06fc99c36ac5 --- # Compiler Warning (level 1) C4166 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4167.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4167.md index 516cf094020..9eaabdff17a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4167.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4167.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4167" title: "Compiler Warning (level 1) C4167" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4167" +ms.date: 11/04/2016 f1_keywords: ["C4167"] helpviewer_keywords: ["C4167"] -ms.assetid: 74a420bd-9371-4167-b1ee-74dd8680f97b --- # Compiler Warning (level 1) C4167 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4168.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4168.md index 68a45057ba4..6c487ba5d60 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4168.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4168.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4168" title: "Compiler Warning (level 1) C4168" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4168" +ms.date: 11/04/2016 f1_keywords: ["C4168"] helpviewer_keywords: ["C4168"] -ms.assetid: 1feefa6c-37be-4f7d-856e-f4b648f2fff8 --- # Compiler Warning (level 1) C4168 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4174.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4174.md index c08fe558bb3..98c2e64583a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4174.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4174.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4174" title: "Compiler Warning (level 1) C4174" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4174" +ms.date: 11/04/2016 f1_keywords: ["C4174"] helpviewer_keywords: ["C4174"] -ms.assetid: 63301e51-24bc-43c4-bb11-252f7d513e9e --- # Compiler Warning (level 1) C4174 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4175.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4175.md index f43bbfadc3f..275c235f0b5 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4175.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4175.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4175" title: "Compiler Warning (level 1) C4175" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4175" +ms.date: 11/04/2016 f1_keywords: ["C4175"] helpviewer_keywords: ["C4175"] -ms.assetid: 11407a07-127c-4d0d-b262-61f9f2b035ba --- # Compiler Warning (level 1) C4175 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4176.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4176.md index da22fa4ecb6..806bd926e46 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4176.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4176.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4176" title: "Compiler Warning (level 1) C4176" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4176" +ms.date: 11/04/2016 f1_keywords: ["C4176"] helpviewer_keywords: ["C4176"] -ms.assetid: cfffb934-219a-4a63-9df6-ba54405bf766 --- # Compiler Warning (level 1) C4176 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4177.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4177.md index 3bc3f0fc113..39115e3e153 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4177.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4177.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4177" title: "Compiler Warning (level 1) C4177" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4177" +ms.date: 11/04/2016 f1_keywords: ["C4177"] helpviewer_keywords: ["C4177"] -ms.assetid: 2b05a5b3-696e-4f21-818e-227b9335e748 --- # Compiler Warning (level 1) C4177 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4178.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4178.md index 2ec9fc71cc8..fa906e4c307 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4178.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4178.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4178" title: "Compiler Warning (level 1) C4178" -ms.date: "03/06/2024" +description: "Learn more about: Compiler Warning (level 1) C4178" +ms.date: 03/06/2024 f1_keywords: ["C4178"] helpviewer_keywords: ["C4178"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4179.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4179.md index b9d8ae7288d..0879a3954fb 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4179.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4179.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4179" title: "Compiler Warning (level 1) C4179" +description: "Learn more about: Compiler Warning (level 1) C4179" ms.date: 05/03/2021 f1_keywords: ["C4179"] helpviewer_keywords: ["C4179"] diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4180.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4180.md index a55406722f9..160f95493bb 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4180.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4180.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4180" title: "Compiler Warning (level 1) C4180" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4180" +ms.date: 11/04/2016 f1_keywords: ["C4180"] helpviewer_keywords: ["C4180"] -ms.assetid: 40c91bd4-37f1-4d59-a4f3-d5ddab68239b --- # Compiler Warning (level 1) C4180 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4182.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4182.md index bcdfb36b59c..c5097e114ba 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4182.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4182.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4182" title: "Compiler Warning (level 1) C4182" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4182" +ms.date: 11/04/2016 f1_keywords: ["C4182"] helpviewer_keywords: ["C4182"] -ms.assetid: 8970f3c6-e2dd-407e-b2ec-964360eb8b43 --- # Compiler Warning (level 1) C4182 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4185.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4185.md index 5a19e934981..4b01a193675 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4185.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4185.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4185" title: "Compiler Warning (level 1) C4185" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4185" +ms.date: 11/04/2016 f1_keywords: ["C4185"] helpviewer_keywords: ["C4185"] -ms.assetid: 37e7063a-35b1-4e05-ae31-e811dced02b9 --- # Compiler Warning (level 1) C4185 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4186.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4186.md index c883ecc28fa..d7d6ac5575e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4186.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4186.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4186" title: "Compiler Warning (level 1) C4186" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4186" +ms.date: 11/04/2016 f1_keywords: ["C4186"] helpviewer_keywords: ["C4186"] -ms.assetid: caf3f7d8-f305-426b-8d4e-2b96f5c269ea --- # Compiler Warning (level 1) C4186 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4187.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4187.md index e9065512d84..8ff6b94d85c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4187.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4187.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4187" title: "Compiler Warning (level 1) C4187" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4187" +ms.date: 11/04/2016 f1_keywords: ["C4187"] helpviewer_keywords: ["C4187"] -ms.assetid: 2443d948-ab7b-472c-af43-5d81e09af677 --- # Compiler Warning (level 1) C4187 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4190.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4190.md index e2ed5d5c006..347bbbc607a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4190.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4190.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4190" title: "Compiler Warning (level 1) C4190" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4190" +ms.date: 11/04/2016 f1_keywords: ["C4190"] helpviewer_keywords: ["C4190"] -ms.assetid: a4d0ad93-a19a-4063-addd-36d605831567 --- # Compiler Warning (level 1) C4190 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4161.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4161.md index c38bf184951..672a08b13f6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4161.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4161.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4161" title: "Compiler Warning (level 3) C4161" -ms.date: "08/27/2018" +description: "Learn more about: Compiler Warning (level 3) C4161" +ms.date: 08/27/2018 f1_keywords: ["C4161"] helpviewer_keywords: ["C4161"] -ms.assetid: 03d3be61-83f1-4009-8310-8758ab67055f --- # Compiler Warning (level 3) C4161 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4192.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4192.md index 9a985f673fc..c02e74aba58 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4192.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4192.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4192" title: "Compiler Warning (level 3) C4192" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4192" +ms.date: 11/04/2016 f1_keywords: ["C4192"] helpviewer_keywords: ["C4192"] -ms.assetid: ea5f91fa-8c96-4f3f-ac42-0c8a86d4e5df --- # Compiler Warning (level 3) C4192 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4197.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4197.md index 8d0971d968b..4fabcf299da 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4197.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4197.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4197" title: "Compiler Warning (level 3) C4197" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4197" +ms.date: 11/04/2016 f1_keywords: ["C4197"] helpviewer_keywords: ["C4197"] -ms.assetid: f766feef-82b0-4d81-8a65-33628c7db196 --- # Compiler Warning (level 3) C4197 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4189.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4189.md index ea93509e677..93423778f89 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4189.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4189.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler Warning (level 3 and level 4) C4189" title: "Compiler Warning (level 3 and level 4) C4189" +description: "Learn more about: Compiler Warning (level 3 and level 4) C4189" ms.date: 05/03/2021 f1_keywords: ["C4189"] helpviewer_keywords: ["C4189"] diff --git a/docs/error-messages/compiler-warnings/compiler-warning-levels-2-and-4-c4200.md b/docs/error-messages/compiler-warnings/compiler-warning-levels-2-and-4-c4200.md index d71805c10d6..b02bcecf7c6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-levels-2-and-4-c4200.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-levels-2-and-4-c4200.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 2 and level 4) C4200" title: "Compiler Warning (level 2 and level 4) C4200" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 2 and level 4) C4200" +ms.date: 11/04/2016 f1_keywords: ["C4200"] helpviewer_keywords: ["C4200"] --- From d8ab280e3b7da8b16beba86facbb129b555188a7 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 26 Aug 2025 23:58:58 +0800 Subject: [PATCH 1613/2255] Add leading example sentence for warning references in range [C4161, C4200] --- .../compiler-warnings/compiler-warning-level-1-c4167.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4174.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4176.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4178.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4179.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4180.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4185.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4186.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4190.md | 2 ++ 9 files changed, 18 insertions(+) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4167.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4167.md index 9eaabdff17a..4ab61233a5d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4167.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4167.md @@ -17,6 +17,8 @@ To avoid this warning, remove the **#pragma function**. ## Example +The following example generates C4167: + ```cpp // C4167.cpp // compile with: /W1 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4174.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4174.md index 98c2e64583a..7f02878573c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4174.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4174.md @@ -11,6 +11,8 @@ helpviewer_keywords: ["C4174"] ## Example +The following example generates C4174: + ```cpp // C4174.cpp // compile with: /W1 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4176.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4176.md index 806bd926e46..22aa2aa22bd 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4176.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4176.md @@ -15,6 +15,8 @@ The **component** pragma contains an invalid subcomponent. To exclude references ## Example +The following example generates C4176: + ```cpp // C4176.cpp // compile with: /W1 /LD diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4178.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4178.md index fa906e4c307..9500322b58e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4178.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4178.md @@ -15,6 +15,8 @@ A case constant in a **`switch`** expression does not fit in the type to which i ## Example +The following example generates C4178: + ```cpp // C4178.cpp // compile with: /W1 /permissive diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4179.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4179.md index 0879a3954fb..7ee0442c813 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4179.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4179.md @@ -19,6 +19,8 @@ In Visual Studio 2017 version 15.5, the C compiler no longer emits warnings C400 ## Example +The following example generates C4179: + ```C /* C only */ #pragma warning(disable:4001) // C4619 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4180.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4180.md index 160f95493bb..e29467a8dea 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4180.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4180.md @@ -15,6 +15,8 @@ A qualifier, such as **`const`**, is applied to a function type defined by **`ty ## Example +The following example generates C4180: + ```cpp // C4180.cpp // compile with: /W1 /c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4185.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4185.md index 4b01a193675..d2bfec209ad 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4185.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4185.md @@ -15,6 +15,8 @@ The attribute is not a valid attribute of `#import`. It is ignored. ## Example +The following example generates C4185: + ```cpp // C4185.cpp // compile with: /W1 /c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4186.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4186.md index d7d6ac5575e..0f6985e5d1a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4186.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4186.md @@ -15,6 +15,8 @@ A `#import` attribute has the wrong number of arguments. ## Example +The following example generates C4186: + ```cpp // C4186.cpp // compile with: /W1 /c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4190.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4190.md index 347bbbc607a..57257424bda 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4190.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4190.md @@ -19,6 +19,8 @@ A function or pointer to function has a UDT (user-defined type, which is a class ## Example +The following example generates C4190: + ```cpp // C4190.cpp // compile with: /W1 /LD From 0706b94de89cd3608528f0b3b3da5792d3004246 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 27 Aug 2025 16:22:45 +0800 Subject: [PATCH 1614/2255] Add blockquotes for warning messages in range [C4201, C4230] --- .../compiler-warnings/compiler-warning-level-1-c4215.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4216.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4224.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4227.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4228.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4230.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4201.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4202.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4204.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4205.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4206.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4207.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4208.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4210.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4211.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4212.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4213.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4214.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4220.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4221.md | 2 +- 20 files changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4215.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4215.md index ee07bacbca1..611ae2ea71f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4215.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4215.md @@ -8,7 +8,7 @@ ms.assetid: f2aab64d-1bab-4f75-95ee-89e1263047b1 --- # Compiler Warning (level 1) C4215 -nonstandard extension used : long float +> nonstandard extension used : long float The default Microsoft extensions (/Ze) treat **long float** as **`double`**. ANSI compatibility ([/Za](../../build/reference/za-ze-disable-language-extensions.md)) does not. Use **`double`** to maintain compatibility. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4216.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4216.md index 26fd546e18b..6fb679b8158 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4216.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4216.md @@ -8,7 +8,7 @@ ms.assetid: 211079dc-59d0-42a7-801c-2ddab21d7232 --- # Compiler Warning (level 1) C4216 -nonstandard extension used : float long +> nonstandard extension used : float long The default Microsoft extensions (/Ze) treat **float long** as **`double`**. ANSI compatibility ([/Za](../../build/reference/za-ze-disable-language-extensions.md)) does not. Use **`double`** to maintain compatibility. The following sample generates C4216: diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4224.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4224.md index 58abd03fe9a..698a1f15405 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4224.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4224.md @@ -8,7 +8,7 @@ ms.assetid: 1531cae0-5040-49fd-b149-005bb5085391 --- # Compiler Warning (level 1) C4224 -nonstandard extension used : formal parameter 'identifier' was previously defined as a type +> nonstandard extension used : formal parameter 'identifier' was previously defined as a type The identifier was previously used as a **`typedef`**. This causes a warning under ANSI compatibility ([/Za](../../build/reference/za-ze-disable-language-extensions.md)). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4227.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4227.md index b07ac66855a..fc84a659e73 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4227.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4227.md @@ -8,7 +8,7 @@ ms.assetid: 78f98374-c00b-4000-aefa-1b1c67b4666b --- # Compiler Warning (level 1) C4227 -anachronism used : qualifiers on reference are ignored +> anachronism used : qualifiers on reference are ignored Using qualifiers like **`const`** or **`volatile`** with C++ references is an outdated practice. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4228.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4228.md index 9d10d770f9b..ade6ef74062 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4228.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4228.md @@ -8,7 +8,7 @@ ms.assetid: 9301d660-d601-464e-83f5-7ed844a3c6dc --- # Compiler Warning (level 1) C4228 -nonstandard extension used : qualifiers after comma in declarator list are ignored +> nonstandard extension used : qualifiers after comma in declarator list are ignored Use of qualifiers like **`const`** or **`volatile`** after a comma when declaring variables is a Microsoft extension ([/Ze](../../build/reference/za-ze-disable-language-extensions.md)). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4230.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4230.md index 0365bac51a4..17ee500a8ed 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4230.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4230.md @@ -8,7 +8,7 @@ ms.assetid: a4be8729-74b6-44df-a5ea-e3f45aad0f8f --- # Compiler Warning (level 1) C4230 -anachronism used : modifiers/qualifiers interspersed; qualifier ignored +> anachronism used : modifiers/qualifiers interspersed; qualifier ignored Using a qualifier before a Microsoft modifier such as **`__cdecl`** is an outdated practice. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4201.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4201.md index 1486e4023c5..cd6e7999f87 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4201.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4201.md @@ -8,7 +8,7 @@ ms.assetid: 6156f508-9393-4d77-9e73-1ec3e1c32d0d --- # Compiler Warning (level 4) C4201 -nonstandard extension used : nameless struct/union +> nonstandard extension used : nameless struct/union Under Microsoft extensions (/Ze), you can specify a structure without a declarator as members of another structure or union. These structures generate an error under ANSI compatibility ([/Za](../../build/reference/za-ze-disable-language-extensions.md)). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4202.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4202.md index 4e740e1cfd7..1baa24d0a74 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4202.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4202.md @@ -8,7 +8,7 @@ ms.assetid: 253293aa-97a3-4878-a2e8-c6cc9e20b1cb --- # Compiler Warning (level 4) C4202 -nonstandard extension used : '...': prototype parameter in name list illegal +> nonstandard extension used : '...': prototype parameter in name list illegal An old-style function definition contains variable arguments. These definitions generate an error under ANSI compatibility ([/Za](../../build/reference/za-ze-disable-language-extensions.md)). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4204.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4204.md index 6b59366825f..6d951bbf2e4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4204.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4204.md @@ -8,7 +8,7 @@ ms.assetid: 298d2880-6737-448e-b711-15572d540200 --- # Compiler Warning (level 4) C4204 -nonstandard extension used : non-constant aggregate initializer +> nonstandard extension used : non-constant aggregate initializer With Microsoft extensions (/Ze), you can initialize aggregate types (arrays, structures, unions, and classes) with values that are not constants. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4205.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4205.md index 2deee615616..6247f462fbd 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4205.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4205.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C4205"] --- # Compiler Warning (level 4) C4205 -nonstandard extension used : static function declaration in function scope +> nonstandard extension used : static function declaration in function scope With Microsoft extensions (/Ze), **`static`** functions can be declared inside another function. The function is given global scope. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4206.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4206.md index 524ca3cc46d..5904b77adcd 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4206.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4206.md @@ -8,7 +8,7 @@ ms.assetid: 3df97812-3ed7-4003-9769-057acf97ce3c --- # Compiler Warning (level 4) C4206 -**nonstandard extension used : translation unit is empty** +> nonstandard extension used : translation unit is empty The file was empty after preprocessing. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4207.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4207.md index 42e3e542084..d9c83956eff 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4207.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4207.md @@ -8,7 +8,7 @@ ms.assetid: f4e09e3e-ac87-4489-8e3f-c8f76b82e721 --- # Compiler Warning (level 4) C4207 -nonstandard extension used : extended initializer form +> nonstandard extension used : extended initializer form With Microsoft extensions (/Ze), you can initialize an unsized array of **`char`** using a string within braces. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4208.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4208.md index 401c638542e..ecb1acaa70f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4208.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4208.md @@ -8,7 +8,7 @@ ms.assetid: 5cb0a36e-3fb5-422f-a5f9-e40b70776c27 --- # Compiler Warning (level 4) C4208 -nonstandard extension used : delete [exp] - exp evaluated but ignored +> nonstandard extension used : delete [exp] - exp evaluated but ignored With Microsoft extensions (/Ze), you can delete an array using a value within brackets with the [delete operator](../../cpp/delete-operator-cpp.md). The value is ignored. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4210.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4210.md index ba96a096f66..f51d8a00630 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4210.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4210.md @@ -8,7 +8,7 @@ ms.assetid: f8600adf-dfe2-4022-a37a-3d4997641dfd --- # Compiler Warning (level 4) C4210 -nonstandard extension used : function given file scope +> nonstandard extension used : function given file scope With the default Microsoft extensions ([/Ze](../../build/reference/za-ze-disable-language-extensions.md)), function declarations have file scope. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4211.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4211.md index 59e1af613ce..fed09cd29fc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4211.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4211.md @@ -8,7 +8,7 @@ ms.assetid: 3eea3455-6faa-4cdb-8730-73db7026bd1f --- # Compiler Warning (level 4) C4211 -nonstandard extension used : redefined extern to static +> nonstandard extension used : redefined extern to static With the default Microsoft extensions (/Ze), you can redefine an **`extern`** identifier as **`static`**. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4212.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4212.md index d780d7bba34..f29166fef62 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4212.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4212.md @@ -8,7 +8,7 @@ ms.assetid: df781ea1-182d-4f9f-9a31-55b6ce80c711 --- # Compiler Warning (level 4) C4212 -nonstandard extension used : function declaration used ellipsis +> nonstandard extension used : function declaration used ellipsis The function prototype has a variable number of arguments. The function definition does not. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4213.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4213.md index e36443c5d57..7957d269af4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4213.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4213.md @@ -8,7 +8,7 @@ ms.assetid: 59fc3f61-ebd2-499e-99d7-f57bec11eda1 --- # Compiler Warning (level 4) C4213 -nonstandard extension used : cast on l-value +> nonstandard extension used : cast on l-value With the default Microsoft extensions (/Ze), you can use casts on the left side of an assignment statement. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4214.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4214.md index 06fb277525e..5b1a37166d5 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4214.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4214.md @@ -8,7 +8,7 @@ ms.assetid: 9b8db279-1f12-4a6b-a923-2db22acd1947 --- # Compiler Warning (level 4) C4214 -nonstandard extension used : bit field types other than int +> nonstandard extension used : bit field types other than int With the default Microsoft extensions (/Ze), bitfield structure members can be of any integer type. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4220.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4220.md index dd344270a6b..4733a5d89cc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4220.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4220.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C4220"] --- # Compiler Warning (level 4) C4220 -varargs matches remaining parameters +> varargs matches remaining parameters Under the default Microsoft extensions (/Ze), a pointer to a function matches a pointer to a function with similar, but variable, arguments. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4221.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4221.md index e88f2068aa2..c350cd2736f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4221.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4221.md @@ -8,7 +8,7 @@ ms.assetid: 8532bd68-54dc-4526-8597-f61dcb0a0129 --- # Compiler Warning (level 4) C4221 -nonstandard extension used : 'identifier' : cannot be initialized using address of automatic variable +> nonstandard extension used : 'identifier' : cannot be initialized using address of automatic variable With the default Microsoft extensions (/Ze), you can initialize an aggregate type (**array**, **`struct`**, or **`union`**) with the address of a local (automatic) variable. From 7a6e4301979ed4d733fea1112441fce784d176c8 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 27 Aug 2025 16:29:17 +0800 Subject: [PATCH 1615/2255] Add "Remarks" and "Example" headings for warning references in range [C4201, C4230] --- .../compiler-warnings/compiler-warning-level-1-c4215.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4216.md | 8 +++++++- .../compiler-warnings/compiler-warning-level-1-c4218.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4224.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4226.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4227.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4228.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4229.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4230.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4201.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4202.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4204.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4205.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4206.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4207.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4208.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4210.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4211.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4212.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4213.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4214.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4220.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4221.md | 2 ++ .../compiler-warning-levels-1-and-4-c4223.md | 2 ++ 24 files changed, 61 insertions(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4215.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4215.md index 611ae2ea71f..2b08ace8092 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4215.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4215.md @@ -10,8 +10,12 @@ ms.assetid: f2aab64d-1bab-4f75-95ee-89e1263047b1 > nonstandard extension used : long float +## Remarks + The default Microsoft extensions (/Ze) treat **long float** as **`double`**. ANSI compatibility ([/Za](../../build/reference/za-ze-disable-language-extensions.md)) does not. Use **`double`** to maintain compatibility. +## Example + The following sample generates C4215: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4216.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4216.md index 6fb679b8158..ff2d742ca42 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4216.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4216.md @@ -10,7 +10,13 @@ ms.assetid: 211079dc-59d0-42a7-801c-2ddab21d7232 > nonstandard extension used : float long -The default Microsoft extensions (/Ze) treat **float long** as **`double`**. ANSI compatibility ([/Za](../../build/reference/za-ze-disable-language-extensions.md)) does not. Use **`double`** to maintain compatibility. The following sample generates C4216: +## Remarks + +The default Microsoft extensions (/Ze) treat **float long** as **`double`**. ANSI compatibility ([/Za](../../build/reference/za-ze-disable-language-extensions.md)) does not. Use **`double`** to maintain compatibility. + +## Example + +The following sample generates C4216: ```cpp // C4216.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4218.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4218.md index 510c44d4b9f..35c46088620 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4218.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4218.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4218"] > nonstandard extension used: must specify at least a storage class or a type +## Remarks + With the default Microsoft extensions (`/Ze`), you can declare a variable without specifying a type or storage class. The default type is **`int`**. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4224.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4224.md index 698a1f15405..64615700d5a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4224.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4224.md @@ -10,6 +10,8 @@ ms.assetid: 1531cae0-5040-49fd-b149-005bb5085391 > nonstandard extension used : formal parameter 'identifier' was previously defined as a type +## Remarks + The identifier was previously used as a **`typedef`**. This causes a warning under ANSI compatibility ([/Za](../../build/reference/za-ze-disable-language-extensions.md)). ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4226.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4226.md index 8861456c970..137d08d0911 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4226.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4226.md @@ -10,6 +10,8 @@ ms.assetid: 69d6bbde-1300-4e48-8a9c-3648c80ab441 > nonstandard extension used : '*keyword*' is an obsolete keyword +## Remarks + The current version of Visual C++ does not use this keyword. This warning is automatically promoted to an error. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4227.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4227.md index fc84a659e73..89220690752 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4227.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4227.md @@ -10,6 +10,8 @@ ms.assetid: 78f98374-c00b-4000-aefa-1b1c67b4666b > anachronism used : qualifiers on reference are ignored +## Remarks + Using qualifiers like **`const`** or **`volatile`** with C++ references is an outdated practice. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4228.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4228.md index ade6ef74062..60822f04f80 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4228.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4228.md @@ -10,6 +10,8 @@ ms.assetid: 9301d660-d601-464e-83f5-7ed844a3c6dc > nonstandard extension used : qualifiers after comma in declarator list are ignored +## Remarks + Use of qualifiers like **`const`** or **`volatile`** after a comma when declaring variables is a Microsoft extension ([/Ze](../../build/reference/za-ze-disable-language-extensions.md)). ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4229.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4229.md index d79edef4c85..9a0581bf9a9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4229.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4229.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4229"] > anachronism used: modifiers on data are ignored +## Remarks + Using a Microsoft modifier such as **`__cdecl`** on a data declaration is an outdated practice. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4230.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4230.md index 17ee500a8ed..11d63a99713 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4230.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4230.md @@ -10,6 +10,8 @@ ms.assetid: a4be8729-74b6-44df-a5ea-e3f45aad0f8f > anachronism used : modifiers/qualifiers interspersed; qualifier ignored +## Remarks + Using a qualifier before a Microsoft modifier such as **`__cdecl`** is an outdated practice. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4201.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4201.md index cd6e7999f87..87fb3669b19 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4201.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4201.md @@ -10,6 +10,8 @@ ms.assetid: 6156f508-9393-4d77-9e73-1ec3e1c32d0d > nonstandard extension used : nameless struct/union +## Remarks + Under Microsoft extensions (/Ze), you can specify a structure without a declarator as members of another structure or union. These structures generate an error under ANSI compatibility ([/Za](../../build/reference/za-ze-disable-language-extensions.md)). ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4202.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4202.md index 1baa24d0a74..7358e82d10d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4202.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4202.md @@ -10,6 +10,8 @@ ms.assetid: 253293aa-97a3-4878-a2e8-c6cc9e20b1cb > nonstandard extension used : '...': prototype parameter in name list illegal +## Remarks + An old-style function definition contains variable arguments. These definitions generate an error under ANSI compatibility ([/Za](../../build/reference/za-ze-disable-language-extensions.md)). ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4204.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4204.md index 6d951bbf2e4..20e8ffda1d8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4204.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4204.md @@ -10,6 +10,8 @@ ms.assetid: 298d2880-6737-448e-b711-15572d540200 > nonstandard extension used : non-constant aggregate initializer +## Remarks + With Microsoft extensions (/Ze), you can initialize aggregate types (arrays, structures, unions, and classes) with values that are not constants. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4205.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4205.md index 6247f462fbd..43b39be6d8c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4205.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4205.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4205"] > nonstandard extension used : static function declaration in function scope +## Remarks + With Microsoft extensions (/Ze), **`static`** functions can be declared inside another function. The function is given global scope. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4206.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4206.md index 5904b77adcd..1fa98e95fdb 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4206.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4206.md @@ -10,6 +10,8 @@ ms.assetid: 3df97812-3ed7-4003-9769-057acf97ce3c > nonstandard extension used : translation unit is empty +## Remarks + The file was empty after preprocessing. This extension can prevent your code from being portable to other compilers. It generates an error under ANSI compatibility ([/Za](../../build/reference/za-ze-disable-language-extensions.md)) and only applies to C source code. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4207.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4207.md index d9c83956eff..eb75b63b003 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4207.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4207.md @@ -10,6 +10,8 @@ ms.assetid: f4e09e3e-ac87-4489-8e3f-c8f76b82e721 > nonstandard extension used : extended initializer form +## Remarks + With Microsoft extensions (/Ze), you can initialize an unsized array of **`char`** using a string within braces. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4208.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4208.md index ecb1acaa70f..63bb80530b5 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4208.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4208.md @@ -10,8 +10,12 @@ ms.assetid: 5cb0a36e-3fb5-422f-a5f9-e40b70776c27 > nonstandard extension used : delete [exp] - exp evaluated but ignored +## Remarks + With Microsoft extensions (/Ze), you can delete an array using a value within brackets with the [delete operator](../../cpp/delete-operator-cpp.md). The value is ignored. +## Example + ```cpp // C4208.cpp // compile with: /W4 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4210.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4210.md index f51d8a00630..3c3e2e765db 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4210.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4210.md @@ -10,8 +10,12 @@ ms.assetid: f8600adf-dfe2-4022-a37a-3d4997641dfd > nonstandard extension used : function given file scope +## Remarks + With the default Microsoft extensions ([/Ze](../../build/reference/za-ze-disable-language-extensions.md)), function declarations have file scope. +## Example + ```c // C4210.c // compile with: /W4 /c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4211.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4211.md index fed09cd29fc..1ef53b5e5aa 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4211.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4211.md @@ -10,6 +10,8 @@ ms.assetid: 3eea3455-6faa-4cdb-8730-73db7026bd1f > nonstandard extension used : redefined extern to static +## Remarks + With the default Microsoft extensions (/Ze), you can redefine an **`extern`** identifier as **`static`**. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4212.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4212.md index f29166fef62..725f7236d8e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4212.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4212.md @@ -10,8 +10,12 @@ ms.assetid: df781ea1-182d-4f9f-9a31-55b6ce80c711 > nonstandard extension used : function declaration used ellipsis +## Remarks + The function prototype has a variable number of arguments. The function definition does not. +## Example + The following sample generates C4212: ```c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4213.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4213.md index 7957d269af4..16d5148d500 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4213.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4213.md @@ -10,6 +10,8 @@ ms.assetid: 59fc3f61-ebd2-499e-99d7-f57bec11eda1 > nonstandard extension used : cast on l-value +## Remarks + With the default Microsoft extensions (/Ze), you can use casts on the left side of an assignment statement. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4214.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4214.md index 5b1a37166d5..9df5b76c9a8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4214.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4214.md @@ -10,6 +10,8 @@ ms.assetid: 9b8db279-1f12-4a6b-a923-2db22acd1947 > nonstandard extension used : bit field types other than int +## Remarks + With the default Microsoft extensions (/Ze), bitfield structure members can be of any integer type. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4220.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4220.md index 4733a5d89cc..a343d16b1d5 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4220.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4220.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4220"] > varargs matches remaining parameters +## Remarks + Under the default Microsoft extensions (/Ze), a pointer to a function matches a pointer to a function with similar, but variable, arguments. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4221.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4221.md index c350cd2736f..e97f23003c7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4221.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4221.md @@ -10,6 +10,8 @@ ms.assetid: 8532bd68-54dc-4526-8597-f61dcb0a0129 > nonstandard extension used : 'identifier' : cannot be initialized using address of automatic variable +## Remarks + With the default Microsoft extensions (/Ze), you can initialize an aggregate type (**array**, **`struct`**, or **`union`**) with the address of a local (automatic) variable. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-levels-1-and-4-c4223.md b/docs/error-messages/compiler-warnings/compiler-warning-levels-1-and-4-c4223.md index bc05a609f2f..982277e75ce 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-levels-1-and-4-c4223.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-levels-1-and-4-c4223.md @@ -10,4 +10,6 @@ ms.assetid: 6fc44336-0250-4432-928b-fc5dbe7b7c1c > nonstandard extension used: non-lvalue array converted to pointer +## Remarks + In standard C, you can't convert a nonlvalue array to a pointer. With the default Microsoft extensions ([`/Ze`](../../build/reference/za-ze-disable-language-extensions.md)), you can. From 7f3951f7df01f33892a403dfe86c69f06d869a24 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 27 Aug 2025 16:29:55 +0800 Subject: [PATCH 1616/2255] Replace term "sample" with "example" for warning references in range [C4201, C4230] --- .../compiler-warnings/compiler-warning-level-1-c4215.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4216.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4212.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4215.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4215.md index 2b08ace8092..ee21034e170 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4215.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4215.md @@ -16,7 +16,7 @@ The default Microsoft extensions (/Ze) treat **long float** as **`double`**. ANS ## Example -The following sample generates C4215: +The following example generates C4215: ```cpp // C4215.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4216.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4216.md index ff2d742ca42..e55ea034ee1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4216.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4216.md @@ -16,7 +16,7 @@ The default Microsoft extensions (/Ze) treat **float long** as **`double`**. ANS ## Example -The following sample generates C4216: +The following example generates C4216: ```cpp // C4216.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4212.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4212.md index 725f7236d8e..165397d442d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4212.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4212.md @@ -16,7 +16,7 @@ The function prototype has a variable number of arguments. The function definiti ## Example -The following sample generates C4212: +The following example generates C4212: ```c // C4212.c From 1d985187672b8f397172ad5847af1013755bae6f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 27 Aug 2025 16:36:46 +0800 Subject: [PATCH 1617/2255] Update metadata for warning references in range [C4201, C4230] --- .../compiler-warnings/compiler-warning-level-1-c4215.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4216.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4218.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4224.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4226.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4227.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4228.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4229.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4230.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4201.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4202.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4204.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4206.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4207.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4208.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4210.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4211.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4212.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4213.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4214.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4221.md | 5 ++--- .../compiler-warning-levels-1-and-4-c4223.md | 5 ++--- 22 files changed, 44 insertions(+), 64 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4215.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4215.md index ee21034e170..27a4c3ce647 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4215.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4215.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4215" title: "Compiler Warning (level 1) C4215" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4215" +ms.date: 11/04/2016 f1_keywords: ["C4215"] helpviewer_keywords: ["C4215"] -ms.assetid: f2aab64d-1bab-4f75-95ee-89e1263047b1 --- # Compiler Warning (level 1) C4215 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4216.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4216.md index e55ea034ee1..aa54762a695 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4216.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4216.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4216" title: "Compiler Warning (level 1) C4216" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4216" +ms.date: 11/04/2016 f1_keywords: ["C4216"] helpviewer_keywords: ["C4216"] -ms.assetid: 211079dc-59d0-42a7-801c-2ddab21d7232 --- # Compiler Warning (level 1) C4216 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4218.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4218.md index 35c46088620..d9567820d28 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4218.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4218.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4218" title: "Compiler Warning (level 4) C4218" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4218" +ms.date: 11/04/2016 f1_keywords: ["C4218"] helpviewer_keywords: ["C4218"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4224.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4224.md index 64615700d5a..c0235738be4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4224.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4224.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4224" title: "Compiler Warning (level 1) C4224" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4224" +ms.date: 11/04/2016 f1_keywords: ["C4224"] helpviewer_keywords: ["C4224"] -ms.assetid: 1531cae0-5040-49fd-b149-005bb5085391 --- # Compiler Warning (level 1) C4224 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4226.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4226.md index 137d08d0911..19124a35a03 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4226.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4226.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4226" title: "Compiler Warning (level 1) C4226" -ms.date: "10/25/2017" +description: "Learn more about: Compiler Warning (level 1) C4226" +ms.date: 10/25/2017 f1_keywords: ["C4226"] helpviewer_keywords: ["C4226"] -ms.assetid: 69d6bbde-1300-4e48-8a9c-3648c80ab441 --- # Compiler Warning (level 1) C4226 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4227.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4227.md index 89220690752..2410f0148a1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4227.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4227.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4227" title: "Compiler Warning (level 1) C4227" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4227" +ms.date: 11/04/2016 f1_keywords: ["C4227"] helpviewer_keywords: ["C4227"] -ms.assetid: 78f98374-c00b-4000-aefa-1b1c67b4666b --- # Compiler Warning (level 1) C4227 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4228.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4228.md index 60822f04f80..3a48ee71723 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4228.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4228.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4228" title: "Compiler Warning (level 1) C4228" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4228" +ms.date: 11/04/2016 f1_keywords: ["C4228"] helpviewer_keywords: ["C4228"] -ms.assetid: 9301d660-d601-464e-83f5-7ed844a3c6dc --- # Compiler Warning (level 1) C4228 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4229.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4229.md index 9a0581bf9a9..710792be5c5 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4229.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4229.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 1, Error) C4229" title: "Compiler Warning (level 1, Error) C4229" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1, Error) C4229" +ms.date: 11/04/2016 f1_keywords: ["C4229"] helpviewer_keywords: ["C4229"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4230.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4230.md index 11d63a99713..f25b3038592 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4230.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4230.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4230" title: "Compiler Warning (level 1) C4230" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4230" +ms.date: 11/04/2016 f1_keywords: ["C4230"] helpviewer_keywords: ["C4230"] -ms.assetid: a4be8729-74b6-44df-a5ea-e3f45aad0f8f --- # Compiler Warning (level 1) C4230 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4201.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4201.md index 87fb3669b19..3ca425c5665 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4201.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4201.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4201" title: "Compiler Warning (level 4) C4201" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4201" +ms.date: 11/04/2016 f1_keywords: ["C4201"] helpviewer_keywords: ["C4201"] -ms.assetid: 6156f508-9393-4d77-9e73-1ec3e1c32d0d --- # Compiler Warning (level 4) C4201 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4202.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4202.md index 7358e82d10d..f10717fc4a2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4202.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4202.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4202" title: "Compiler Warning (level 4) C4202" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4202" +ms.date: 11/04/2016 f1_keywords: ["C4202"] helpviewer_keywords: ["C4202"] -ms.assetid: 253293aa-97a3-4878-a2e8-c6cc9e20b1cb --- # Compiler Warning (level 4) C4202 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4204.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4204.md index 20e8ffda1d8..fed176ace4c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4204.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4204.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4204" title: "Compiler Warning (level 4) C4204" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4204" +ms.date: 11/04/2016 f1_keywords: ["C4204"] helpviewer_keywords: ["C4204"] -ms.assetid: 298d2880-6737-448e-b711-15572d540200 --- # Compiler Warning (level 4) C4204 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4206.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4206.md index 1fa98e95fdb..606a827b03a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4206.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4206.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4206" title: "Compiler Warning (level 4) C4206" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4206" +ms.date: 11/04/2016 f1_keywords: ["C4206"] helpviewer_keywords: ["C4206"] -ms.assetid: 3df97812-3ed7-4003-9769-057acf97ce3c --- # Compiler Warning (level 4) C4206 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4207.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4207.md index eb75b63b003..c04f19d669c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4207.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4207.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4207" title: "Compiler Warning (level 4) C4207" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4207" +ms.date: 11/04/2016 f1_keywords: ["C4207"] helpviewer_keywords: ["C4207"] -ms.assetid: f4e09e3e-ac87-4489-8e3f-c8f76b82e721 --- # Compiler Warning (level 4) C4207 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4208.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4208.md index 63bb80530b5..56b5102ba13 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4208.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4208.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4208" title: "Compiler Warning (level 4) C4208" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4208" +ms.date: 11/04/2016 f1_keywords: ["C4208"] helpviewer_keywords: ["C4208"] -ms.assetid: 5cb0a36e-3fb5-422f-a5f9-e40b70776c27 --- # Compiler Warning (level 4) C4208 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4210.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4210.md index 3c3e2e765db..297250b52d3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4210.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4210.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4210" title: "Compiler Warning (level 4) C4210" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4210" +ms.date: 11/04/2016 f1_keywords: ["C4210"] helpviewer_keywords: ["C4210"] -ms.assetid: f8600adf-dfe2-4022-a37a-3d4997641dfd --- # Compiler Warning (level 4) C4210 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4211.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4211.md index 1ef53b5e5aa..45eeba8fb21 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4211.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4211.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4211" title: "Compiler Warning (level 4) C4211" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4211" +ms.date: 11/04/2016 f1_keywords: ["C4211"] helpviewer_keywords: ["C4211"] -ms.assetid: 3eea3455-6faa-4cdb-8730-73db7026bd1f --- # Compiler Warning (level 4) C4211 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4212.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4212.md index 165397d442d..4509562c90a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4212.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4212.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4212" title: "Compiler Warning (level 4) C4212" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4212" +ms.date: 11/04/2016 f1_keywords: ["C4212"] helpviewer_keywords: ["C4212"] -ms.assetid: df781ea1-182d-4f9f-9a31-55b6ce80c711 --- # Compiler Warning (level 4) C4212 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4213.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4213.md index 16d5148d500..faacb095c86 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4213.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4213.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4213" title: "Compiler Warning (level 4) C4213" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4213" +ms.date: 11/04/2016 f1_keywords: ["C4213"] helpviewer_keywords: ["C4213"] -ms.assetid: 59fc3f61-ebd2-499e-99d7-f57bec11eda1 --- # Compiler Warning (level 4) C4213 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4214.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4214.md index 9df5b76c9a8..6d4f078b7c7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4214.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4214.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4214" title: "Compiler Warning (level 4) C4214" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4214" +ms.date: 11/04/2016 f1_keywords: ["C4214"] helpviewer_keywords: ["C4214"] -ms.assetid: 9b8db279-1f12-4a6b-a923-2db22acd1947 --- # Compiler Warning (level 4) C4214 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4221.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4221.md index e97f23003c7..79505b42b96 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4221.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4221.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4221" title: "Compiler Warning (level 4) C4221" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4221" +ms.date: 11/04/2016 f1_keywords: ["C4221"] helpviewer_keywords: ["C4221"] -ms.assetid: 8532bd68-54dc-4526-8597-f61dcb0a0129 --- # Compiler Warning (level 4) C4221 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-levels-1-and-4-c4223.md b/docs/error-messages/compiler-warnings/compiler-warning-levels-1-and-4-c4223.md index 982277e75ce..e9f2a839c88 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-levels-1-and-4-c4223.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-levels-1-and-4-c4223.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1 and level 4) C4223" title: "Compiler Warning (level 1 and level 4) C4223" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1 and level 4) C4223" +ms.date: 11/04/2016 f1_keywords: ["C4223"] helpviewer_keywords: ["C4223"] -ms.assetid: 6fc44336-0250-4432-928b-fc5dbe7b7c1c --- # Compiler Warning (level 1 and level 4) C4223 From e04e6bd4e7dd4ae6d7d0102065c59ab4ea1f91e5 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 27 Aug 2025 16:43:47 +0800 Subject: [PATCH 1618/2255] Add leading example sentence for warning references in range [C4201, C4230] --- .../compiler-warnings/compiler-warning-level-1-c4218.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4224.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4227.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4228.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4229.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4230.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4201.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4202.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4204.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4205.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4207.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4208.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4210.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4211.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4213.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4214.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4220.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4221.md | 2 ++ 18 files changed, 36 insertions(+) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4218.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4218.md index d9567820d28..21910d55dfc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4218.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4218.md @@ -15,6 +15,8 @@ With the default Microsoft extensions (`/Ze`), you can declare a variable withou ## Example +The following example generates C4218: + ```cpp // C4218.c // compile with: /W4 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4224.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4224.md index c0235738be4..9eea04e97ed 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4224.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4224.md @@ -15,6 +15,8 @@ The identifier was previously used as a **`typedef`**. This causes a warning und ## Example +The following example generates C4224: + ```cpp // C4224.cpp // compile with: /Za /W1 /LD diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4227.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4227.md index 2410f0148a1..d59944fbccf 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4227.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4227.md @@ -15,6 +15,8 @@ Using qualifiers like **`const`** or **`volatile`** with C++ references is an ou ## Example +The following example generates C4227: + ```cpp // C4227.cpp // compile with: /W1 /c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4228.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4228.md index 3a48ee71723..da9cdeefa90 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4228.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4228.md @@ -15,6 +15,8 @@ Use of qualifiers like **`const`** or **`volatile`** after a comma when declarin ## Example +The following example generates C4228: + ```cpp // C4228.cpp // compile with: /W1 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4229.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4229.md index 710792be5c5..cbc55d7f30d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4229.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4229.md @@ -15,6 +15,8 @@ Using a Microsoft modifier such as **`__cdecl`** on a data declaration is an out ## Example +The following example generates C4229: + ```cpp // C4229.cpp // compile with: /W1 /LD diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4230.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4230.md index f25b3038592..37dd1af4b1c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4230.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4230.md @@ -15,6 +15,8 @@ Using a qualifier before a Microsoft modifier such as **`__cdecl`** is an outdat ## Example +The following example generates C4230: + ```cpp // C4230.cpp // compile with: /W1 /LD diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4201.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4201.md index 3ca425c5665..ceebc5ca0a2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4201.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4201.md @@ -15,6 +15,8 @@ Under Microsoft extensions (/Ze), you can specify a structure without a declarat ## Example +The following example generates C4201: + ```cpp // C4201.cpp // compile with: /W4 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4202.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4202.md index f10717fc4a2..a1ddd986de8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4202.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4202.md @@ -15,6 +15,8 @@ An old-style function definition contains variable arguments. These definitions ## Example +The following example generates C4202: + ```c // C4202.c // compile with: /W4 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4204.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4204.md index fed176ace4c..9ad06ae599c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4204.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4204.md @@ -15,6 +15,8 @@ With Microsoft extensions (/Ze), you can initialize aggregate types (arrays, str ## Example +The following example generates C4204: + ```c // C4204.c // compile with: /W4 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4205.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4205.md index 43b39be6d8c..0d25190bf0f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4205.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4205.md @@ -15,6 +15,8 @@ With Microsoft extensions (/Ze), **`static`** functions can be declared inside a ## Example +The following example generates C4205: + ```c // C4205.c // compile with: /W4 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4207.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4207.md index c04f19d669c..0d9439f1572 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4207.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4207.md @@ -15,6 +15,8 @@ With Microsoft extensions (/Ze), you can initialize an unsized array of **`char` ## Example +The following example generates C4207: + ```c // C4207.c // compile with: /W4 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4208.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4208.md index 56b5102ba13..2c0de261003 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4208.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4208.md @@ -15,6 +15,8 @@ With Microsoft extensions (/Ze), you can delete an array using a value within br ## Example +The following example generates C4208: + ```cpp // C4208.cpp // compile with: /W4 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4210.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4210.md index 297250b52d3..95522de60e4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4210.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4210.md @@ -15,6 +15,8 @@ With the default Microsoft extensions ([/Ze](../../build/reference/za-ze-disable ## Example +The following example generates C4210: + ```c // C4210.c // compile with: /W4 /c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4211.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4211.md index 45eeba8fb21..98e88e30c24 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4211.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4211.md @@ -15,6 +15,8 @@ With the default Microsoft extensions (/Ze), you can redefine an **`extern`** id ## Example +The following example generates C4211: + ```c // C4211.c // compile with: /W4 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4213.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4213.md index faacb095c86..eda0670bcba 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4213.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4213.md @@ -15,6 +15,8 @@ With the default Microsoft extensions (/Ze), you can use casts on the left side ## Example +The following example generates C4213: + ```c // C4213.c // compile with: /W4 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4214.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4214.md index 6d4f078b7c7..26e6071374a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4214.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4214.md @@ -15,6 +15,8 @@ With the default Microsoft extensions (/Ze), bitfield structure members can be o ## Example +The following example generates C4214: + ```c // C4214.c // compile with: /W4 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4220.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4220.md index a343d16b1d5..2eba4fa6522 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4220.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4220.md @@ -15,6 +15,8 @@ Under the default Microsoft extensions (/Ze), a pointer to a function matches a ## Example +The following example generates C4220: + ```c // C4220.c // compile with: /W4 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4221.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4221.md index 79505b42b96..95c742a069a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4221.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4221.md @@ -15,6 +15,8 @@ With the default Microsoft extensions (/Ze), you can initialize an aggregate typ ## Example +The following example generates C4221: + ```c // C4221.c // compile with: /W4 From 6b073ffd11ddf01d8fc1bac0540c32605b68d438 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 27 Aug 2025 17:19:23 +0800 Subject: [PATCH 1619/2255] Update error message in C2277 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2277.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2277.md b/docs/error-messages/compiler-errors-1/compiler-error-c2277.md index 1f56b60b30e..374a9a0cfb3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2277.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2277.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2277"] --- # Compiler Error C2277 -> 'identifier' : cannot take address of this member function +> '*function*': cannot take address of this member function ## Remarks From 6ba724649644d3c436be3009bd8a0e80b8409e57 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 27 Aug 2025 17:30:42 +0800 Subject: [PATCH 1620/2255] Augment remarks in C2277 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2277.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2277.md b/docs/error-messages/compiler-errors-1/compiler-error-c2277.md index 374a9a0cfb3..fc073f0fd2d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2277.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2277.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["C2277"] ## Remarks -You cannot take the address of a member function. +You cannot take the address of a [constructor](../../cpp/constructors-cpp.md) or [destructor](../../cpp/destructors-cpp.md). For more information, see [Address-of operator: `&`](../../cpp/address-of-operator-amp.md) and [Pointers to Members](../../cpp/pointers-to-members.md). ## Example From 8c9b549f92f7b4f959ce3f8c8f476dbb4b589a7b Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 27 Aug 2025 17:39:14 +0800 Subject: [PATCH 1621/2255] Improve example in C2277 error reference --- .../compiler-errors-1/compiler-error-c2277.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2277.md b/docs/error-messages/compiler-errors-1/compiler-error-c2277.md index fc073f0fd2d..d021d0d397d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2277.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2277.md @@ -19,9 +19,14 @@ The following example generates C2277: ```cpp // C2277.cpp -class A { -public: - A(); +// compile with: /c + +struct S +{ + S() {} + ~S() {} }; -(*pctor)() = &A::A; // C2277 + +void (S::* pointer_to_constructor)() = &S::S; // C2277 +void (S::* pointer_to_destructor)() = &S::~S; // C2277 ``` From 90148e799c06930b920b06d92f10fa66e2cdb5b4 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 27 Aug 2025 17:40:24 +0800 Subject: [PATCH 1622/2255] Update `ms.date` metadata in C2277 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2277.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2277.md b/docs/error-messages/compiler-errors-1/compiler-error-c2277.md index d021d0d397d..c5e73e52a40 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2277.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2277.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C2277" description: "Learn more about: Compiler Error C2277" -ms.date: 11/04/2016 +ms.date: 08/27/2025 f1_keywords: ["C2277"] helpviewer_keywords: ["C2277"] --- From f98752adc256f45712d46def85c98b01739f0786 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 27 Aug 2025 18:21:08 +0800 Subject: [PATCH 1623/2255] Trim spaces around metadata entries --- docs/build-insights/index.yml | 2 +- docs/build/cmake-projects-in-visual-studio.md | 2 +- docs/build/prolog-and-epilog.md | 2 +- docs/build/reference/force-interlocked-functions.md | 4 ++-- .../homeparams-copy-register-parameters-to-stack.md | 2 +- docs/build/reference/zp-struct-member-alignment.md | 2 +- docs/build/stack-usage.md | 2 +- docs/c-runtime-library/crt-debugging-techniques.md | 2 +- ...mat-specification-syntax-printf-and-wprintf-functions.md | 2 +- docs/c-runtime-library/global-state.md | 2 +- docs/c-runtime-library/reference/floor-floorf-floorl.md | 2 +- docs/c-runtime-library/tgmath.md | 2 +- docs/code-quality/c26132.md | 6 +++--- docs/code-quality/c26133.md | 6 +++--- docs/cpp/align-cpp.md | 2 +- docs/cpp/alignof-operator.md | 2 +- docs/cpp/argument-passing-and-naming-conventions.md | 2 +- docs/cpp/extension-restrict.md | 2 +- docs/cpp/unaligned.md | 2 +- docs/cpp/vectorcall.md | 2 +- docs/cross-platform/index.yml | 2 +- docs/get-started/index.yml | 4 ++-- docs/standard-library/list-functions.md | 2 +- docs/standard-library/string-view-operators.md | 2 +- 24 files changed, 30 insertions(+), 30 deletions(-) diff --git a/docs/build-insights/index.yml b/docs/build-insights/index.yml index 876c27600a8..5020326898f 100644 --- a/docs/build-insights/index.yml +++ b/docs/build-insights/index.yml @@ -17,7 +17,7 @@ landingContent: # Cards and links should be based on top customer tasks or top subjects # Start card title with a verb # Card (optional) - - title: Learn how your build performs + - title: Learn how your build performs linkLists: - linkListType: overview links: diff --git a/docs/build/cmake-projects-in-visual-studio.md b/docs/build/cmake-projects-in-visual-studio.md index b56efcce7e5..108e678c259 100644 --- a/docs/build/cmake-projects-in-visual-studio.md +++ b/docs/build/cmake-projects-in-visual-studio.md @@ -3,7 +3,7 @@ title: "CMake projects in Visual Studio" description: "Learn how to create and build C++ projects using CMake in Visual Studio." ms.date: 03/18/2025 ms.topic: concept-article -f1_keywords: ["VS.ToolsOptionsPages.CMake.General", "VS.ToolsOptionsPages.CMake.LanguageServices"] +f1_keywords: ["VS.ToolsOptionsPages.CMake.General", "VS.ToolsOptionsPages.CMake.LanguageServices"] ms.custom: sfi-image-nochange --- # CMake projects in Visual Studio diff --git a/docs/build/prolog-and-epilog.md b/docs/build/prolog-and-epilog.md index eb6f1ad9723..c3165119b56 100644 --- a/docs/build/prolog-and-epilog.md +++ b/docs/build/prolog-and-epilog.md @@ -1,7 +1,7 @@ --- description: "Learn more about: x64 prolog and epilog" title: "x64 prolog and epilog" -ms.date: "12/17/2018" +ms.date: "12/17/2018" ms.assetid: 0453ed1a-3ff1-4bee-9cc2-d6d3d6384984 --- # x64 prolog and epilog diff --git a/docs/build/reference/force-interlocked-functions.md b/docs/build/reference/force-interlocked-functions.md index b0fb4df6fa0..be8e5769db8 100644 --- a/docs/build/reference/force-interlocked-functions.md +++ b/docs/build/reference/force-interlocked-functions.md @@ -1,7 +1,7 @@ --- -title: "/forceInterlockedFunctions" +title: "/forceInterlockedFunctions" description: "Learn more about /forceInterlockedFunctions" -ms.date: 03/07/2025 +ms.date: 03/07/2025 --- # `/forceInterlockedFunctions` diff --git a/docs/build/reference/homeparams-copy-register-parameters-to-stack.md b/docs/build/reference/homeparams-copy-register-parameters-to-stack.md index bb498d1bfef..18aabbf63c8 100644 --- a/docs/build/reference/homeparams-copy-register-parameters-to-stack.md +++ b/docs/build/reference/homeparams-copy-register-parameters-to-stack.md @@ -1,7 +1,7 @@ --- description: "Learn more about: /homeparams (Copy Register Parameters to Stack)" title: "/homeparams (Copy Register Parameters to Stack)" -ms.date: "12/17/2018" +ms.date: "12/17/2018" f1_keywords: ["/homeparams"] helpviewer_keywords: ["/homeparams compiler option [C++]", "-homeparams compiler option [C++]"] ms.assetid: 51067de4-24f7-436b-b8d9-bc867a7d53aa diff --git a/docs/build/reference/zp-struct-member-alignment.md b/docs/build/reference/zp-struct-member-alignment.md index cfb89975b24..4a1962ff77b 100644 --- a/docs/build/reference/zp-struct-member-alignment.md +++ b/docs/build/reference/zp-struct-member-alignment.md @@ -1,7 +1,7 @@ --- description: "Learn more about: /Zp (Struct Member Alignment)" title: "/Zp (Struct Member Alignment)" -ms.date: "01/08/2021" +ms.date: "01/08/2021" f1_keywords: ["/zp", "VC.Project.VCCLCompilerTool.StructMemberAlignment", "VC.Project.VCCLWCECompilerTool.StructMemberAlignment"] helpviewer_keywords: ["Struct Member Alignment compiler option", "Zp compiler option", "/Zp compiler option [C++]", "-Zp compiler option [C++]"] ms.assetid: 5242f656-ed9b-48a3-bc73-cfcf3ed2520f diff --git a/docs/build/stack-usage.md b/docs/build/stack-usage.md index 8bbec4908e8..cb26ff19a9a 100644 --- a/docs/build/stack-usage.md +++ b/docs/build/stack-usage.md @@ -1,7 +1,7 @@ --- description: "Learn more about: x64 stack usage" title: "x64 stack usage" -ms.date: "12/17/2018" +ms.date: "12/17/2018" ms.assetid: 383f0072-0438-489f-8829-cca89582408c --- # x64 stack usage diff --git a/docs/c-runtime-library/crt-debugging-techniques.md b/docs/c-runtime-library/crt-debugging-techniques.md index 323c0d36b96..27507a84063 100644 --- a/docs/c-runtime-library/crt-debugging-techniques.md +++ b/docs/c-runtime-library/crt-debugging-techniques.md @@ -1,6 +1,6 @@ --- title: CRT debugging techniques -description: There are various techniques you can use to debug a program that uses the C run-time (CRT) library. Use this article and its links to learn about such techniques. +description: There are various techniques you can use to debug a program that uses the C run-time (CRT) library. Use this article and its links to learn about such techniques. ms.custom: SEO-VS-2020 ms.date: 02/03/2023 f1_keywords: diff --git a/docs/c-runtime-library/format-specification-syntax-printf-and-wprintf-functions.md b/docs/c-runtime-library/format-specification-syntax-printf-and-wprintf-functions.md index 7b8fe374953..fd0f57dc4c3 100644 --- a/docs/c-runtime-library/format-specification-syntax-printf-and-wprintf-functions.md +++ b/docs/c-runtime-library/format-specification-syntax-printf-and-wprintf-functions.md @@ -1,6 +1,6 @@ --- title: "Format Specification Syntax: `printf` and `wprintf` Functions" -description: "Describes the format specifier syntax for the Microsoft C runtime `printf` and `wprintf` functions" +description: "Describes the format specifier syntax for the Microsoft C runtime `printf` and `wprintf` functions" ms.date: "10/26/2020" helpviewer_keywords: ["format specification fields for printf function", "printf function format specification fields", "flag directives, printf function", "type fields, printf function", "width fields, printf function", "precision fields, printf function"] ms.assetid: 664b1717-2760-4c61-bd9c-22eee618d825 diff --git a/docs/c-runtime-library/global-state.md b/docs/c-runtime-library/global-state.md index 9a8a36b10de..4f350ffa384 100644 --- a/docs/c-runtime-library/global-state.md +++ b/docs/c-runtime-library/global-state.md @@ -1,6 +1,6 @@ --- title: "Global state in the CRT" -description: "Describes how shared global state is handled in the Microsoft Universal C Runtime." +description: "Describes how shared global state is handled in the Microsoft Universal C Runtime." ms.topic: "concept-article" ms.date: "10/02/2020" helpviewer_keywords: ["CRT global state"] diff --git a/docs/c-runtime-library/reference/floor-floorf-floorl.md b/docs/c-runtime-library/reference/floor-floorf-floorl.md index 6c5ae98469f..5e9997e6364 100644 --- a/docs/c-runtime-library/reference/floor-floorf-floorl.md +++ b/docs/c-runtime-library/reference/floor-floorf-floorl.md @@ -1,6 +1,6 @@ --- title: "floor, floorf, floorl" -description: "API reference for floor, floorf, and floorl; which calculates the floor of a value." +description: "API reference for floor, floorf, and floorl; which calculates the floor of a value." ms.date: 9/1/2020 api_name: ["floorf", "floorl", "floor", "_o_floor", "_o_floorf"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"] diff --git a/docs/c-runtime-library/tgmath.md b/docs/c-runtime-library/tgmath.md index 87240aaa4d0..455b97065d9 100644 --- a/docs/c-runtime-library/tgmath.md +++ b/docs/c-runtime-library/tgmath.md @@ -1,6 +1,6 @@ --- title: "Type-generic math" -description: "Describes macros in that make it easier to write C code that calls the correct math function, based on argument type." +description: "Describes macros in that make it easier to write C code that calls the correct math function, based on argument type." ms.topic: "concept-article" ms.date: "6/28/2021" helpviewer_keywords: ["CRT tgmath.h"] diff --git a/docs/code-quality/c26132.md b/docs/code-quality/c26132.md index 487cad505f3..624fcc54d2a 100644 --- a/docs/code-quality/c26132.md +++ b/docs/code-quality/c26132.md @@ -1,11 +1,11 @@ --- title: Warning C26132 description: Documentation on static analysis warning C26132 -author: Rastaban -ms.author: philc +author: Rastaban +ms.author: philc ms.service: visual-cpp ms.topic: concept-article -ms.date: 02/11/2025 +ms.date: 02/11/2025 --- # Warning C26132 diff --git a/docs/code-quality/c26133.md b/docs/code-quality/c26133.md index e1067f9c3a8..329d900ae6d 100644 --- a/docs/code-quality/c26133.md +++ b/docs/code-quality/c26133.md @@ -1,11 +1,11 @@ --- title: Warning C26133 description: Documentation on static analysis warning C26133 -author: Rastaban -ms.author: philc +author: Rastaban +ms.author: philc ms.service: visual-cpp ms.topic: concept-article -ms.date: 02/19/2025 +ms.date: 02/19/2025 --- # Warning C26133 diff --git a/docs/cpp/align-cpp.md b/docs/cpp/align-cpp.md index 480640779f9..14f9b6942ad 100644 --- a/docs/cpp/align-cpp.md +++ b/docs/cpp/align-cpp.md @@ -1,7 +1,7 @@ --- description: "Learn more about: align (C++)" title: "align (C++)" -ms.date: "12/17/2018" +ms.date: "12/17/2018" f1_keywords: ["align_cpp"] helpviewer_keywords: ["align __declspec keyword", "__declspec keyword [C++], align"] --- diff --git a/docs/cpp/alignof-operator.md b/docs/cpp/alignof-operator.md index 85de3668703..6d99ada651d 100644 --- a/docs/cpp/alignof-operator.md +++ b/docs/cpp/alignof-operator.md @@ -1,7 +1,7 @@ --- description: "Learn more about: alignof Operator" title: "alignof Operator" -ms.date: "12/17/2018" +ms.date: "12/17/2018" f1_keywords: ["__alignof_cpp", "alignof_cpp", "__alignof", "_alignof"] helpviewer_keywords: ["alignas [C++]", "alignment of structures", "__alignof keyword [C++]", "alignof [C++]", "types [C++], alignment requirements"] --- diff --git a/docs/cpp/argument-passing-and-naming-conventions.md b/docs/cpp/argument-passing-and-naming-conventions.md index b7ec0825474..b9693148a1d 100644 --- a/docs/cpp/argument-passing-and-naming-conventions.md +++ b/docs/cpp/argument-passing-and-naming-conventions.md @@ -1,7 +1,7 @@ --- description: "Learn more about: Argument Passing and Naming Conventions" title: "Argument Passing and Naming Conventions" -ms.date: "12/17/2018" +ms.date: "12/17/2018" helpviewer_keywords: ["argument passing [C++], conventions", "arguments [C++], widening", "coding conventions, arguments", "arguments [C++], passing", "registers, return values", "thiscall keyword [C++]", "naming conventions [C++], arguments", "arguments [C++], naming", "passing arguments [C++], conventions", "conventions [C++], argument names"] ms.assetid: de468979-eab8-4158-90c5-c198932f93b9 --- diff --git a/docs/cpp/extension-restrict.md b/docs/cpp/extension-restrict.md index ce69c439af6..eb809b13a91 100644 --- a/docs/cpp/extension-restrict.md +++ b/docs/cpp/extension-restrict.md @@ -1,6 +1,6 @@ --- title: "`__restrict`" -description: "Describes the Microsoft Visual C++ `__restrict` keyword." +description: "Describes the Microsoft Visual C++ `__restrict` keyword." ms.date: "11/6/2020" f1_keywords: ["__restrict_cpp", "__restrict", "_restrict"] helpviewer_keywords: ["__restrict keyword [C++]"] diff --git a/docs/cpp/unaligned.md b/docs/cpp/unaligned.md index ab25505fd0f..a9d7900d647 100644 --- a/docs/cpp/unaligned.md +++ b/docs/cpp/unaligned.md @@ -1,7 +1,7 @@ --- description: "Learn more about: __unaligned" title: "__unaligned" -ms.date: "12/17/2018" +ms.date: "12/17/2018" f1_keywords: ["__unaligned_cpp", "__unaligned", "_unaligned"] helpviewer_keywords: ["__unaligned keyword [C++]"] --- diff --git a/docs/cpp/vectorcall.md b/docs/cpp/vectorcall.md index 97bca68b082..c790e9e311d 100644 --- a/docs/cpp/vectorcall.md +++ b/docs/cpp/vectorcall.md @@ -1,7 +1,7 @@ --- description: "Learn more about: __vectorcall" title: "__vectorcall" -ms.date: "12/17/2018" +ms.date: "12/17/2018" f1_keywords: ["__vectorcall_cpp", "__vectorcall", "_vectorcall"] helpviewer_keywords: ["__vectorcall keyword", "__vectorcall"] ms.assetid: 1c95ed59-86c6-4857-b4ed-10519193f851 diff --git a/docs/cross-platform/index.yml b/docs/cross-platform/index.yml index 0fb5f94c593..789c7f8b022 100644 --- a/docs/cross-platform/index.yml +++ b/docs/cross-platform/index.yml @@ -17,7 +17,7 @@ landingContent: # Cards and links should be based on top customer tasks or top subjects # Start card title with a verb # Card (optional) - - title: Learn how to build cross-platform mobile apps + - title: Learn how to build cross-platform mobile apps linkLists: - linkListType: get-started links: diff --git a/docs/get-started/index.yml b/docs/get-started/index.yml index d338b6c128e..f179d269b5f 100644 --- a/docs/get-started/index.yml +++ b/docs/get-started/index.yml @@ -1,6 +1,6 @@ ### YamlMime:Landing -title: Visual Studio tutorials | C++ +title: Visual Studio tutorials | C++ summary: Create C++ apps with Visual Studio. metadata: @@ -10,7 +10,7 @@ metadata: ms.topic: landing-page ms.date: 12/06/2021 author: tylermsft - ms.author: twhitney + ms.author: twhitney manager: coxford ms.service: visual-cpp dev_langs: diff --git a/docs/standard-library/list-functions.md b/docs/standard-library/list-functions.md index 7047605aa77..e3dc0e53c31 100644 --- a/docs/standard-library/list-functions.md +++ b/docs/standard-library/list-functions.md @@ -1,6 +1,6 @@ --- description: "Learn more about: functions" -title: functions +title: functions ms.custom: "" ms.date: "11/04/2016" ms.topic: "reference" diff --git a/docs/standard-library/string-view-operators.md b/docs/standard-library/string-view-operators.md index a79ca556d75..1f3f4c44dec 100644 --- a/docs/standard-library/string-view-operators.md +++ b/docs/standard-library/string-view-operators.md @@ -1,6 +1,6 @@ --- title: " operators" -description: "API reference for the `string_view` operators, which are used to compare two `string_view` objects, or a `string_view` and some other string object" +description: "API reference for the `string_view` operators, which are used to compare two `string_view` objects, or a `string_view` and some other string object" ms.date: 01/15/2021 f1_keywords: ["xstring/basic_string_view::operator!=", "xstring/basic_string_view::operator>", "xstring/basic_string_view::operator>=", "xstring/basic_string_view::operator<", "xstring/basic_string_view::operator<<", "xstring/basic_string_view::operator<=", "xstring/basic_string_view::operator+", "xstring/basic_string_view::operator==", 'xstring/std::literals::string_view_literals::operator "sv', 'std::literals::string_view_literals::operator sv', 'std::literals::string_view_literals', 'string_view_literals'] helpviewer_keywords: ["std::basic_string_view::operator!=", "std::basic_string_view::operator>", "std::basic_string_view::operator>=", "std::basic_string_view::operator<", "std::basic_string_view::operator<<", "std::basic_string_view::operator<=, std::basic_string_view::operator=="] From feeb48729629a6d8ef41a2cef3179e1751e746f7 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 27 Aug 2025 18:26:08 +0800 Subject: [PATCH 1624/2255] Update metadata in 17 topics --- docs/build/prolog-and-epilog.md | 5 ++--- .../homeparams-copy-register-parameters-to-stack.md | 5 ++--- docs/build/reference/zp-struct-member-alignment.md | 5 ++--- docs/build/stack-usage.md | 5 ++--- docs/c-runtime-library/crt-debugging-techniques.md | 4 ++-- ...mat-specification-syntax-printf-and-wprintf-functions.md | 3 +-- docs/c-runtime-library/global-state.md | 2 +- docs/c-runtime-library/tgmath.md | 2 +- docs/code-quality/c26132.md | 6 +++--- docs/code-quality/c26133.md | 6 +++--- docs/cpp/align-cpp.md | 4 ++-- docs/cpp/alignof-operator.md | 4 ++-- docs/cpp/argument-passing-and-naming-conventions.md | 5 ++--- docs/cpp/extension-restrict.md | 2 +- docs/cpp/unaligned.md | 4 ++-- docs/cpp/vectorcall.md | 5 ++--- docs/standard-library/list-functions.md | 4 ++-- 17 files changed, 32 insertions(+), 39 deletions(-) diff --git a/docs/build/prolog-and-epilog.md b/docs/build/prolog-and-epilog.md index c3165119b56..56b27b056b1 100644 --- a/docs/build/prolog-and-epilog.md +++ b/docs/build/prolog-and-epilog.md @@ -1,8 +1,7 @@ --- -description: "Learn more about: x64 prolog and epilog" title: "x64 prolog and epilog" -ms.date: "12/17/2018" -ms.assetid: 0453ed1a-3ff1-4bee-9cc2-d6d3d6384984 +description: "Learn more about: x64 prolog and epilog" +ms.date: 12/17/2018 --- # x64 prolog and epilog diff --git a/docs/build/reference/homeparams-copy-register-parameters-to-stack.md b/docs/build/reference/homeparams-copy-register-parameters-to-stack.md index 18aabbf63c8..9a9b9b1119a 100644 --- a/docs/build/reference/homeparams-copy-register-parameters-to-stack.md +++ b/docs/build/reference/homeparams-copy-register-parameters-to-stack.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: /homeparams (Copy Register Parameters to Stack)" title: "/homeparams (Copy Register Parameters to Stack)" -ms.date: "12/17/2018" +description: "Learn more about: /homeparams (Copy Register Parameters to Stack)" +ms.date: 12/17/2018 f1_keywords: ["/homeparams"] helpviewer_keywords: ["/homeparams compiler option [C++]", "-homeparams compiler option [C++]"] -ms.assetid: 51067de4-24f7-436b-b8d9-bc867a7d53aa --- # /homeparams (Copy Register Parameters to Stack) diff --git a/docs/build/reference/zp-struct-member-alignment.md b/docs/build/reference/zp-struct-member-alignment.md index 4a1962ff77b..f9bd480e318 100644 --- a/docs/build/reference/zp-struct-member-alignment.md +++ b/docs/build/reference/zp-struct-member-alignment.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: /Zp (Struct Member Alignment)" title: "/Zp (Struct Member Alignment)" -ms.date: "01/08/2021" +description: "Learn more about: /Zp (Struct Member Alignment)" +ms.date: 01/08/2021 f1_keywords: ["/zp", "VC.Project.VCCLCompilerTool.StructMemberAlignment", "VC.Project.VCCLWCECompilerTool.StructMemberAlignment"] helpviewer_keywords: ["Struct Member Alignment compiler option", "Zp compiler option", "/Zp compiler option [C++]", "-Zp compiler option [C++]"] -ms.assetid: 5242f656-ed9b-48a3-bc73-cfcf3ed2520f --- # /Zp (Struct Member Alignment) diff --git a/docs/build/stack-usage.md b/docs/build/stack-usage.md index cb26ff19a9a..8a2a87b36dd 100644 --- a/docs/build/stack-usage.md +++ b/docs/build/stack-usage.md @@ -1,8 +1,7 @@ --- -description: "Learn more about: x64 stack usage" title: "x64 stack usage" -ms.date: "12/17/2018" -ms.assetid: 383f0072-0438-489f-8829-cca89582408c +description: "Learn more about: x64 stack usage" +ms.date: 12/17/2018 --- # x64 stack usage diff --git a/docs/c-runtime-library/crt-debugging-techniques.md b/docs/c-runtime-library/crt-debugging-techniques.md index 27507a84063..625ca882af6 100644 --- a/docs/c-runtime-library/crt-debugging-techniques.md +++ b/docs/c-runtime-library/crt-debugging-techniques.md @@ -1,6 +1,6 @@ --- -title: CRT debugging techniques -description: There are various techniques you can use to debug a program that uses the C run-time (CRT) library. Use this article and its links to learn about such techniques. +title: "CRT debugging techniques" +description: "There are various techniques you can use to debug a program that uses the C run-time (CRT) library. Use this article and its links to learn about such techniques." ms.custom: SEO-VS-2020 ms.date: 02/03/2023 f1_keywords: diff --git a/docs/c-runtime-library/format-specification-syntax-printf-and-wprintf-functions.md b/docs/c-runtime-library/format-specification-syntax-printf-and-wprintf-functions.md index fd0f57dc4c3..c6b482f1f36 100644 --- a/docs/c-runtime-library/format-specification-syntax-printf-and-wprintf-functions.md +++ b/docs/c-runtime-library/format-specification-syntax-printf-and-wprintf-functions.md @@ -1,9 +1,8 @@ --- title: "Format Specification Syntax: `printf` and `wprintf` Functions" description: "Describes the format specifier syntax for the Microsoft C runtime `printf` and `wprintf` functions" -ms.date: "10/26/2020" +ms.date: 10/26/2020 helpviewer_keywords: ["format specification fields for printf function", "printf function format specification fields", "flag directives, printf function", "type fields, printf function", "width fields, printf function", "precision fields, printf function"] -ms.assetid: 664b1717-2760-4c61-bd9c-22eee618d825 --- # Format specification syntax: `printf` and `wprintf` functions diff --git a/docs/c-runtime-library/global-state.md b/docs/c-runtime-library/global-state.md index 4f350ffa384..e1bc2fd01b5 100644 --- a/docs/c-runtime-library/global-state.md +++ b/docs/c-runtime-library/global-state.md @@ -1,8 +1,8 @@ --- title: "Global state in the CRT" description: "Describes how shared global state is handled in the Microsoft Universal C Runtime." +ms.date: 10/02/2020 ms.topic: "concept-article" -ms.date: "10/02/2020" helpviewer_keywords: ["CRT global state"] --- diff --git a/docs/c-runtime-library/tgmath.md b/docs/c-runtime-library/tgmath.md index 455b97065d9..62e68f26eda 100644 --- a/docs/c-runtime-library/tgmath.md +++ b/docs/c-runtime-library/tgmath.md @@ -1,8 +1,8 @@ --- title: "Type-generic math" description: "Describes macros in that make it easier to write C code that calls the correct math function, based on argument type." +ms.date: 6/28/2021 ms.topic: "concept-article" -ms.date: "6/28/2021" helpviewer_keywords: ["CRT tgmath.h"] --- diff --git a/docs/code-quality/c26132.md b/docs/code-quality/c26132.md index 624fcc54d2a..aedc7e027ce 100644 --- a/docs/code-quality/c26132.md +++ b/docs/code-quality/c26132.md @@ -1,11 +1,11 @@ --- -title: Warning C26132 -description: Documentation on static analysis warning C26132 +title: "Warning C26132" +description: "Documentation on static analysis warning C26132" +ms.date: 02/11/2025 author: Rastaban ms.author: philc ms.service: visual-cpp ms.topic: concept-article -ms.date: 02/11/2025 --- # Warning C26132 diff --git a/docs/code-quality/c26133.md b/docs/code-quality/c26133.md index 329d900ae6d..e206e837948 100644 --- a/docs/code-quality/c26133.md +++ b/docs/code-quality/c26133.md @@ -1,11 +1,11 @@ --- -title: Warning C26133 -description: Documentation on static analysis warning C26133 +title: "Warning C26133" +description: "Documentation on static analysis warning C26133" +ms.date: 02/19/2025 author: Rastaban ms.author: philc ms.service: visual-cpp ms.topic: concept-article -ms.date: 02/19/2025 --- # Warning C26133 diff --git a/docs/cpp/align-cpp.md b/docs/cpp/align-cpp.md index 14f9b6942ad..939c0edb165 100644 --- a/docs/cpp/align-cpp.md +++ b/docs/cpp/align-cpp.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: align (C++)" title: "align (C++)" -ms.date: "12/17/2018" +description: "Learn more about: align (C++)" +ms.date: 12/17/2018 f1_keywords: ["align_cpp"] helpviewer_keywords: ["align __declspec keyword", "__declspec keyword [C++], align"] --- diff --git a/docs/cpp/alignof-operator.md b/docs/cpp/alignof-operator.md index 6d99ada651d..a30d84fe45d 100644 --- a/docs/cpp/alignof-operator.md +++ b/docs/cpp/alignof-operator.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: alignof Operator" title: "alignof Operator" -ms.date: "12/17/2018" +description: "Learn more about: alignof Operator" +ms.date: 12/17/2018 f1_keywords: ["__alignof_cpp", "alignof_cpp", "__alignof", "_alignof"] helpviewer_keywords: ["alignas [C++]", "alignment of structures", "__alignof keyword [C++]", "alignof [C++]", "types [C++], alignment requirements"] --- diff --git a/docs/cpp/argument-passing-and-naming-conventions.md b/docs/cpp/argument-passing-and-naming-conventions.md index b9693148a1d..aea3e8d3a15 100644 --- a/docs/cpp/argument-passing-and-naming-conventions.md +++ b/docs/cpp/argument-passing-and-naming-conventions.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Argument Passing and Naming Conventions" title: "Argument Passing and Naming Conventions" -ms.date: "12/17/2018" +description: "Learn more about: Argument Passing and Naming Conventions" +ms.date: 12/17/2018 helpviewer_keywords: ["argument passing [C++], conventions", "arguments [C++], widening", "coding conventions, arguments", "arguments [C++], passing", "registers, return values", "thiscall keyword [C++]", "naming conventions [C++], arguments", "arguments [C++], naming", "passing arguments [C++], conventions", "conventions [C++], argument names"] -ms.assetid: de468979-eab8-4158-90c5-c198932f93b9 --- # Argument Passing and Naming Conventions diff --git a/docs/cpp/extension-restrict.md b/docs/cpp/extension-restrict.md index eb809b13a91..16c3231d0a3 100644 --- a/docs/cpp/extension-restrict.md +++ b/docs/cpp/extension-restrict.md @@ -1,7 +1,7 @@ --- title: "`__restrict`" description: "Describes the Microsoft Visual C++ `__restrict` keyword." -ms.date: "11/6/2020" +ms.date: 11/6/2020 f1_keywords: ["__restrict_cpp", "__restrict", "_restrict"] helpviewer_keywords: ["__restrict keyword [C++]"] --- diff --git a/docs/cpp/unaligned.md b/docs/cpp/unaligned.md index a9d7900d647..9892e057476 100644 --- a/docs/cpp/unaligned.md +++ b/docs/cpp/unaligned.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: __unaligned" title: "__unaligned" -ms.date: "12/17/2018" +description: "Learn more about: __unaligned" +ms.date: 12/17/2018 f1_keywords: ["__unaligned_cpp", "__unaligned", "_unaligned"] helpviewer_keywords: ["__unaligned keyword [C++]"] --- diff --git a/docs/cpp/vectorcall.md b/docs/cpp/vectorcall.md index c790e9e311d..54209c78efd 100644 --- a/docs/cpp/vectorcall.md +++ b/docs/cpp/vectorcall.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: __vectorcall" title: "__vectorcall" -ms.date: "12/17/2018" +description: "Learn more about: __vectorcall" +ms.date: 12/17/2018 f1_keywords: ["__vectorcall_cpp", "__vectorcall", "_vectorcall"] helpviewer_keywords: ["__vectorcall keyword", "__vectorcall"] -ms.assetid: 1c95ed59-86c6-4857-b4ed-10519193f851 --- # __vectorcall diff --git a/docs/standard-library/list-functions.md b/docs/standard-library/list-functions.md index e3dc0e53c31..3827916e5b6 100644 --- a/docs/standard-library/list-functions.md +++ b/docs/standard-library/list-functions.md @@ -1,8 +1,8 @@ --- +title: " functions" description: "Learn more about: functions" -title: functions +ms.date: 11/04/2016 ms.custom: "" -ms.date: "11/04/2016" ms.topic: "reference" f1_keywords: ["list/std::swap"] --- From 06e442d1843b58629704fb542fd5648eab7bba85 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 27 Aug 2025 23:27:08 +0800 Subject: [PATCH 1625/2255] Add blockquotes for warning messages in range [C4231, C4270] --- .../compiler-warnings/compiler-warning-level-1-c4237.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4258.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4269.md | 2 +- .../compiler-warnings/compiler-warning-level-2-c4244.md | 2 +- .../compiler-warnings/compiler-warning-level-2-c4250.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4240.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4243.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4267.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4232.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4234.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4238.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4239.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4256.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4268.md | 2 +- .../compiler-warnings/compiler-warning-levels-3-and-4-c4244.md | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4237.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4237.md index 30336fc8024..3f67549fb32 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4237.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4237.md @@ -8,7 +8,7 @@ ms.assetid: f2e86c4b-80d8-460e-9429-83c5f3f5d7ca --- # Compiler Warning (level 1) C4237 -'keyword' keyword is not yet supported, but reserved for future use +> 'keyword' keyword is not yet supported, but reserved for future use A keyword in the C++ specification is not implemented in the Microsoft C++ compiler, but the keyword is not available as a user-defined symbol. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4258.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4258.md index f2131c6a91c..3904ba4c66f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4258.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4258.md @@ -8,7 +8,7 @@ ms.assetid: bbb75e6d-6693-4e62-8ed3-b006a0ec55e3 --- # Compiler Warning (level 1) C4258 -'variable' : definition from the for loop is ignored; the definition from the enclosing scope is used" +> 'variable' : definition from the for loop is ignored; the definition from the enclosing scope is used" Under [/Ze](../../build/reference/za-ze-disable-language-extensions.md) and [/Zc:forScope](../../build/reference/zc-forscope-force-conformance-in-for-loop-scope.md), variables defined in a [for](../../cpp/for-statement-cpp.md) loop go out of scope after the **`for`** loop ends. This warning occurs if a variable with the same name as the loop variable, but defined in the enclosing loop, is used again in the scope containing the **`for`** loop. For example: diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4269.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4269.md index faa87378537..322895fb5fd 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4269.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4269.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C4269"] --- # Compiler Warning (level 1) C4269 -'identifier' : 'const' automatic data initialized with compiler generated default constructor produces unreliable results +> 'identifier' : 'const' automatic data initialized with compiler generated default constructor produces unreliable results A **`const`** automatic instance of a non-trivial class is initialized with a compiler-generated default constructor. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4244.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4244.md index f1b15944392..c88d6b4d731 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4244.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4244.md @@ -8,7 +8,7 @@ ms.assetid: 2c19d157-21d1-42c2-a6c0-3f30f2ce3813 --- # Compiler Warning (level 2) C4244 -'argument' : conversion from 'type1' to 'type2', possible loss of data +> 'argument' : conversion from 'type1' to 'type2', possible loss of data A floating point type was converted to an integer type. A possible loss of data may have occurred. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4250.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4250.md index 3ec69fa0134..191ce3b1fea 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4250.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4250.md @@ -8,7 +8,7 @@ ms.assetid: d47f7249-6b5a-414b-b2d4-56e5d246a782 --- # Compiler Warning (level 2) C4250 -'class1' : inherits 'class2::member' via dominance +> 'class1' : inherits 'class2::member' via dominance Two or more members have the same name. The one in `class2` is inherited because it is a base class for the other classes that contained this member. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4240.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4240.md index 66fc798b058..aa98f67f45a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4240.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4240.md @@ -8,7 +8,7 @@ ms.assetid: a2657cdb-18e1-493f-882b-4e10c0bca71d --- # Compiler Warning (level 3) C4240 -nonstandard extension used : access to 'classname' now defined to be 'access specifier', previously it was defined to be 'access specifier' +> nonstandard extension used : access to 'classname' now defined to be 'access specifier', previously it was defined to be 'access specifier' Under ANSI compatibility ([/Za](../../build/reference/za-ze-disable-language-extensions.md)), you cannot change the access to a nested class. Under the default Microsoft extensions (/Ze), you can, with this warning. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4243.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4243.md index 8fab32eef47..1979eaf6c3b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4243.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4243.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C4243"] --- # Compiler Warning (level 3) C4243 -'conversion type' conversion exists from 'type1' to 'type2', but is inaccessible +> 'conversion type' conversion exists from 'type1' to 'type2', but is inaccessible A pointer to a derived class is converted to a pointer to a base class, but the derived class inherits the base class with private or protected access. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4267.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4267.md index bca3c8da4a9..537027a3bb3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4267.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4267.md @@ -8,7 +8,7 @@ ms.assetid: 2fa2f13f-fa4f-47bb-ad8f-6cb19cfc91e6 --- # Compiler Warning (level 3) C4267 -'var' : conversion from 'size_t' to 'type', possible loss of data +> 'var' : conversion from 'size_t' to 'type', possible loss of data The compiler detected a conversion from `size_t` to a smaller type. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4232.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4232.md index 78d4e5ed200..47f53d3a3e3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4232.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4232.md @@ -8,7 +8,7 @@ ms.assetid: f92028a5-4ddd-43c1-97f5-4f724e5e14af --- # Compiler Warning (level 4) C4232 -nonstandard extension used : 'identifier' : address of dllimport 'dllimport' is not static, identity not guaranteed +> nonstandard extension used : 'identifier' : address of dllimport 'dllimport' is not static, identity not guaranteed Under Microsoft extensions (/Ze), you can give a nonstatic value as the address of a function declared with the **`dllimport`** modifier. Under ANSI compatibility ([/Za](../../build/reference/za-ze-disable-language-extensions.md)), this causes an error. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4234.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4234.md index 3b2bc5eacb5..b0fa52b4559 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4234.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4234.md @@ -8,7 +8,7 @@ ms.assetid: f7fecd5c-8248-4fde-8446-502aedc357ca --- # Compiler Warning (level 4) C4234 -nonstandard extension used: 'keyword' keyword reserved for future use +> nonstandard extension used: 'keyword' keyword reserved for future use The compiler does not yet implement the keyword you used. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4238.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4238.md index 679d603ef69..ac680a5ac57 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4238.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4238.md @@ -8,7 +8,7 @@ ms.assetid: 5d4051d3-7b0f-43ea-8c8d-d194bfdceb71 --- # Compiler Warning (level 4) C4238 -nonstandard extension used : class rvalue used as lvalue +> nonstandard extension used : class rvalue used as lvalue For compatibility with previous versions of Visual C++, Microsoft extensions (**/Ze**) allow you to use a class type as an rvalue in a context that implicitly or explicitly takes its address. In some cases, such as the example below, this can be dangerous. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4239.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4239.md index c68de7e669a..3fd260094f2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4239.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4239.md @@ -8,7 +8,7 @@ ms.assetid: a23dc16a-649e-4870-9a24-275de1584fcd --- # Compiler Warning (level 4) C4239 -nonstandard extension used : 'token' : conversion from 'type' to 'type' +> nonstandard extension used : 'token' : conversion from 'type' to 'type' This type conversion is not allowed by the C++ standard, but it is permitted here as an extension. This warning is always followed by at least one line of explanation describing the language rule being violated. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4256.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4256.md index 8ce1d40f266..fbde6eb7d74 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4256.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4256.md @@ -8,7 +8,7 @@ ms.assetid: a755a32e-895a-4837-a2b5-4ea06b736798 --- # Compiler Warning (level 4) C4256 -'function' : constructor for class with virtual bases has '...'; calls may not be compatible with older versions of Visual C++ +> 'function' : constructor for class with virtual bases has '...'; calls may not be compatible with older versions of Visual C++ Possible incompatibility. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4268.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4268.md index 7ec668928d4..20efbfd9a77 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4268.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4268.md @@ -8,7 +8,7 @@ ms.assetid: d0511e80-904f-4ee1-b4d7-39b5c0bd8234 --- # Compiler Warning (level 4) C4268 -'identifier' : 'const' static/global data initialized with compiler generated default constructor fills the object with zeros +> 'identifier' : 'const' static/global data initialized with compiler generated default constructor fills the object with zeros A **`const`** global or static instance of a non-trivial class is initialized with a compiler-generated default constructor. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-levels-3-and-4-c4244.md b/docs/error-messages/compiler-warnings/compiler-warning-levels-3-and-4-c4244.md index 75b41ea7dd5..2aff8e8df99 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-levels-3-and-4-c4244.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-levels-3-and-4-c4244.md @@ -5,7 +5,7 @@ ms.date: "11/6/2023" --- # Compiler Warning (levels 3 and 4) C4244 -'conversion' conversion from 'type1' to 'type2', possible loss of data +> 'conversion' conversion from 'type1' to 'type2', possible loss of data An integer type is converted to a smaller integer type. - This is a level-4 warning if *type1* is a signed or unsigned **`int`** and *type2* is a smaller, such as a signed or unsigned **`short`**. From d312b4aa643cb79716efb18d390462a82f95754a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 27 Aug 2025 23:34:16 +0800 Subject: [PATCH 1626/2255] Add "Remarks" and "Example" headings for warning references in range [C4231, C4270] --- .../compiler-warnings/compiler-warning-level-1-c4237.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4258.md | 8 +++++++- .../compiler-warnings/compiler-warning-level-1-c4264.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4269.md | 2 ++ .../compiler-warnings/compiler-warning-level-2-c4244.md | 2 ++ .../compiler-warnings/compiler-warning-level-2-c4250.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4240.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4243.md | 4 ++++ .../compiler-warnings/compiler-warning-level-3-c4265.md | 4 ++++ .../compiler-warnings/compiler-warning-level-3-c4267.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4232.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4233.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4234.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4238.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4239.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4242.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4245.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4254.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4255.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4256.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4263.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4266.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4268.md | 2 ++ .../compiler-warning-levels-3-and-4-c4244.md | 4 ++++ 24 files changed, 77 insertions(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4237.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4237.md index 3f67549fb32..1b96053d121 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4237.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4237.md @@ -10,8 +10,12 @@ ms.assetid: f2e86c4b-80d8-460e-9429-83c5f3f5d7ca > 'keyword' keyword is not yet supported, but reserved for future use +## Remarks + A keyword in the C++ specification is not implemented in the Microsoft C++ compiler, but the keyword is not available as a user-defined symbol. +## Example + The following sample generates C4237: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4258.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4258.md index 3904ba4c66f..e8617f23c76 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4258.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4258.md @@ -10,7 +10,13 @@ ms.assetid: bbb75e6d-6693-4e62-8ed3-b006a0ec55e3 > 'variable' : definition from the for loop is ignored; the definition from the enclosing scope is used" -Under [/Ze](../../build/reference/za-ze-disable-language-extensions.md) and [/Zc:forScope](../../build/reference/zc-forscope-force-conformance-in-for-loop-scope.md), variables defined in a [for](../../cpp/for-statement-cpp.md) loop go out of scope after the **`for`** loop ends. This warning occurs if a variable with the same name as the loop variable, but defined in the enclosing loop, is used again in the scope containing the **`for`** loop. For example: +## Remarks + +Under [/Ze](../../build/reference/za-ze-disable-language-extensions.md) and [/Zc:forScope](../../build/reference/zc-forscope-force-conformance-in-for-loop-scope.md), variables defined in a [for](../../cpp/for-statement-cpp.md) loop go out of scope after the **`for`** loop ends. This warning occurs if a variable with the same name as the loop variable, but defined in the enclosing loop, is used again in the scope containing the **`for`** loop. + +## Example + +For example: ```cpp // C4258.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4264.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4264.md index 4fe40000681..04ab31ecfd2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4264.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4264.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4264"] > 'virtual_function' : no override available for virtual member function from base 'class'; function is hidden +## Remarks + C4264 is always generated after [C4263](../../error-messages/compiler-warnings/compiler-warning-level-4-c4263.md). This warning is off by default. For more information, see [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4269.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4269.md index 322895fb5fd..d582ed2f126 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4269.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4269.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4269"] > 'identifier' : 'const' automatic data initialized with compiler generated default constructor produces unreliable results +## Remarks + A **`const`** automatic instance of a non-trivial class is initialized with a compiler-generated default constructor. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4244.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4244.md index c88d6b4d731..0c15ba251c7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4244.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4244.md @@ -10,6 +10,8 @@ ms.assetid: 2c19d157-21d1-42c2-a6c0-3f30f2ce3813 > 'argument' : conversion from 'type1' to 'type2', possible loss of data +## Remarks + A floating point type was converted to an integer type. A possible loss of data may have occurred. If you get C4244, you should either change your program to use compatible types, or add some logic to your code, to ensure that the range of possible values will always be compatible with the types you are using. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4250.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4250.md index 191ce3b1fea..0006e0a026d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4250.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4250.md @@ -10,6 +10,8 @@ ms.assetid: d47f7249-6b5a-414b-b2d4-56e5d246a782 > 'class1' : inherits 'class2::member' via dominance +## Remarks + Two or more members have the same name. The one in `class2` is inherited because it is a base class for the other classes that contained this member. To suppress C4250, use the [warning](../../preprocessor/warning.md) pragma. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4240.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4240.md index aa98f67f45a..4c0d53e25f6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4240.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4240.md @@ -10,6 +10,8 @@ ms.assetid: a2657cdb-18e1-493f-882b-4e10c0bca71d > nonstandard extension used : access to 'classname' now defined to be 'access specifier', previously it was defined to be 'access specifier' +## Remarks + Under ANSI compatibility ([/Za](../../build/reference/za-ze-disable-language-extensions.md)), you cannot change the access to a nested class. Under the default Microsoft extensions (/Ze), you can, with this warning. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4243.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4243.md index 1979eaf6c3b..5fd56759f10 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4243.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4243.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C4243"] > 'conversion type' conversion exists from 'type1' to 'type2', but is inaccessible +## Remarks + A pointer to a derived class is converted to a pointer to a base class, but the derived class inherits the base class with private or protected access. +## Example + The following sample generates C4243: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4265.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4265.md index fa20cef8113..62edba89612 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4265.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4265.md @@ -9,10 +9,14 @@ helpviewer_keywords: ["C4265"] > '*classname*': class has virtual functions, but its non-trivial destructor is not virtual; instances of this class may not be destructed correctly +## Remarks + When a class has virtual functions but a nonvirtual destructor, objects of the type might not be destroyed properly when the class is destroyed through a base class pointer. This warning is off by default. For more information, see [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). +## Example + The following sample generates C4265: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4267.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4267.md index 537027a3bb3..8c2ae4bc824 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4267.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4267.md @@ -10,6 +10,8 @@ ms.assetid: 2fa2f13f-fa4f-47bb-ad8f-6cb19cfc91e6 > 'var' : conversion from 'size_t' to 'type', possible loss of data +## Remarks + The compiler detected a conversion from `size_t` to a smaller type. To fix this warning, use `size_t` instead of `type`. Alternatively, use an integral type that is at least as large as `size_t`. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4232.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4232.md index 47f53d3a3e3..ccffc0d7e13 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4232.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4232.md @@ -10,8 +10,12 @@ ms.assetid: f92028a5-4ddd-43c1-97f5-4f724e5e14af > nonstandard extension used : 'identifier' : address of dllimport 'dllimport' is not static, identity not guaranteed +## Remarks + Under Microsoft extensions (/Ze), you can give a nonstatic value as the address of a function declared with the **`dllimport`** modifier. Under ANSI compatibility ([/Za](../../build/reference/za-ze-disable-language-extensions.md)), this causes an error. +## Example + The following sample generates C4232: ```c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4233.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4233.md index 7987d2e583c..525dbd22fe2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4233.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4233.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4233"] > nonstandard extension used: '*keyword*' keyword only supported in C++, not C +## Remarks + The compiler compiled your source code as C rather than C++, and you used a keyword that is only valid in C++. The compiler compiles your source file as C if the extension of the source file is .c or you use [/Tc](../../build/reference/tc-tp-tc-tp-specify-source-file-type.md). This warning is always issued as an error. Use the [warning](../../preprocessor/warning.md) pragma to disable. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4234.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4234.md index b0fa52b4559..331027fbff8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4234.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4234.md @@ -10,6 +10,8 @@ ms.assetid: f7fecd5c-8248-4fde-8446-502aedc357ca > nonstandard extension used: 'keyword' keyword reserved for future use +## Remarks + The compiler does not yet implement the keyword you used. This warning is automatically promoted to an error. If you wish to modify this behavior, use [#pragma warning](../../preprocessor/warning.md). For example, to make C4234 into a level 4 warning issue, diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4238.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4238.md index ac680a5ac57..cf660112a55 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4238.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4238.md @@ -10,6 +10,8 @@ ms.assetid: 5d4051d3-7b0f-43ea-8c8d-d194bfdceb71 > nonstandard extension used : class rvalue used as lvalue +## Remarks + For compatibility with previous versions of Visual C++, Microsoft extensions (**/Ze**) allow you to use a class type as an rvalue in a context that implicitly or explicitly takes its address. In some cases, such as the example below, this can be dangerous. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4239.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4239.md index 3fd260094f2..98a76da2a7f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4239.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4239.md @@ -10,6 +10,8 @@ ms.assetid: a23dc16a-649e-4870-9a24-275de1584fcd > nonstandard extension used : 'token' : conversion from 'type' to 'type' +## Remarks + This type conversion is not allowed by the C++ standard, but it is permitted here as an extension. This warning is always followed by at least one line of explanation describing the language rule being violated. ## Examples diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4242.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4242.md index f0d4ccb1061..a4d2ad47bf7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4242.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4242.md @@ -9,12 +9,16 @@ helpviewer_keywords: ["C4242"] > '*identifier*': conversion from '*type1*' to '*type2*', possible loss of data +## Remarks + The types are different. Type conversion may result in loss of data. The compiler makes the type conversion. This warning is off by default. For more information, see [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). For more information on C4242, see [Common Compiler Errors](/windows/win32/WinProg64/common-compiler-errors). +## Example + The following sample generates C4242: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4245.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4245.md index 45dd045a043..cf52daba9fd 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4245.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4245.md @@ -10,8 +10,12 @@ ms.assetid: 85083d53-9cc2-4d12-b58c-6dad28f15cbe > '*conversion*' : conversion from '*type1*' to '*type2*', signed/unsigned mismatch +## Remarks + You tried to convert a **`signed const`** type that has a negative value to an **`unsigned`** type. +## Example + The following sample generates C4245: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4254.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4254.md index dbcbdcc801a..110f0188d73 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4254.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4254.md @@ -9,10 +9,14 @@ helpviewer_keywords: ["C4254"] > '*operator*': conversion from '*type1*':'*field_bits*' to '*type2*':'*field_bits*', possible loss of data +## Remarks + A larger bit field was assigned to a smaller bit field. There could be a loss of data. This warning is off by default. For more information, see [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). +## Example + The following sample generates C4254: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4255.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4255.md index 4358f2e093d..32c2bcfecdd 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4255.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4255.md @@ -9,10 +9,14 @@ helpviewer_keywords: ["C4255"] > 'function' : no function prototype given: converting '()' to '(void)' +## Remarks + The compiler didn't find an explicit list of arguments to a function. This warning is for the C compiler only. This warning is off by default. For more information, see [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). +## Example + The following sample generates C4255: ```c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4256.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4256.md index fbde6eb7d74..8f8d9e2e8ed 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4256.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4256.md @@ -10,6 +10,8 @@ ms.assetid: a755a32e-895a-4837-a2b5-4ea06b736798 > 'function' : constructor for class with virtual bases has '...'; calls may not be compatible with older versions of Visual C++ +## Remarks + Possible incompatibility. Consider the following code example. If the definition of the constructor S2::S2( int i, ... ) was compiled by using a version of the Microsoft C++ compiler before version 7, but the following example is compiled by using the current version, the call to the constructor for S3 would not work correctly because of a special-case calling-convention change. If both were compiled by using Visual C++ 6.0, the call would not work quite right either, unless no parameters were passed for the ellipsis. @@ -20,6 +22,8 @@ To fix this warning, 1. Make sure that all components in their project are built with the current version (including any libraries that may define or reference this class), then disable the warning using the [warning](../../preprocessor/warning.md) pragma. +## Example + The following sample generates C4256: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4263.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4263.md index 7ea2676192a..283fb1d1377 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4263.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4263.md @@ -9,10 +9,14 @@ helpviewer_keywords: ["C4263"] > 'function' : member function does not override any base class virtual member function +## Remarks + A class function definition has the same name as a virtual function in a base class but not the same number or type of arguments. This pattern effectively hides the virtual function in the base class. This warning is off by default. For more information, see [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). +## Example + The following sample generates C4263: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4266.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4266.md index 88e8e554dfd..00e053dd810 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4266.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4266.md @@ -9,10 +9,14 @@ helpviewer_keywords: ["C4266"] > 'function' : no override available for virtual member function from base 'type'; function is hidden +## Remarks + A derived class didn't override all overloads of a virtual function. This warning is off by default. For more information, see [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). +## Example + The following sample generates C4266: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4268.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4268.md index 20efbfd9a77..b4148b5e6a8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4268.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4268.md @@ -10,6 +10,8 @@ ms.assetid: d0511e80-904f-4ee1-b4d7-39b5c0bd8234 > 'identifier' : 'const' static/global data initialized with compiler generated default constructor fills the object with zeros +## Remarks + A **`const`** global or static instance of a non-trivial class is initialized with a compiler-generated default constructor. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-levels-3-and-4-c4244.md b/docs/error-messages/compiler-warnings/compiler-warning-levels-3-and-4-c4244.md index 2aff8e8df99..3ead28e4280 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-levels-3-and-4-c4244.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-levels-3-and-4-c4244.md @@ -7,6 +7,8 @@ ms.date: "11/6/2023" > 'conversion' conversion from 'type1' to 'type2', possible loss of data +## Remarks + An integer type is converted to a smaller integer type. - This is a level-4 warning if *type1* is a signed or unsigned **`int`** and *type2* is a smaller, such as a signed or unsigned **`short`**. - It's a level 3 warning if a value of type [`__int64`](../../cpp/int8-int16-int32-int64.md) or **`unsigned __int64`** is assigned to a signed or unsigned **`int`**. A possible loss of data may have occurred due to a narrowing conversion, which might lead to unexpected results. @@ -15,6 +17,8 @@ To fix this warning, either change your program to use compatible types, or add C4244 can also appear when the warning level is 2. For more information, see [Compiler Warning (level 2) C4244](../../error-messages/compiler-warnings/compiler-warning-level-2-c4244.md). +## Examples + The following sample generates C4244: ```cpp From 933dfe85b2015254e4e8619f4188edf9b1bded29 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 27 Aug 2025 23:35:51 +0800 Subject: [PATCH 1627/2255] Replace term "sample" with "example" for warning references in range [C4231, C4270] --- .../compiler-warnings/compiler-warning-level-1-c4237.md | 2 +- .../compiler-warnings/compiler-warning-level-2-c4244.md | 2 +- .../compiler-warnings/compiler-warning-level-2-c4250.md | 4 ++-- .../compiler-warnings/compiler-warning-level-3-c4243.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4265.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4232.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4239.md | 4 ++-- .../compiler-warnings/compiler-warning-level-4-c4242.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4245.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4254.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4255.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4256.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4263.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4266.md | 2 +- .../compiler-warning-levels-3-and-4-c4244.md | 4 ++-- 15 files changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4237.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4237.md index 1b96053d121..c9cb6149d88 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4237.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4237.md @@ -16,7 +16,7 @@ A keyword in the C++ specification is not implemented in the Microsoft C++ compi ## Example -The following sample generates C4237: +The following example generates C4237: ```cpp // C4237.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4244.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4244.md index 0c15ba251c7..16b7ef79e65 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4244.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4244.md @@ -20,7 +20,7 @@ C4244 can also fire at level 3, and 4; see [Compiler Warning (levels 3 and 4) C4 ## Example -The following sample generates C4244: +The following example generates C4244: ```cpp // C4244_level2.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4250.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4250.md index 0006e0a026d..d2752a821a4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4250.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4250.md @@ -42,7 +42,7 @@ int main() { } ``` -The following sample generates C4250. +The following example generates C4250. ```cpp // C4250_b.cpp @@ -73,7 +73,7 @@ int main() { } ``` -This sample shows a more complex situation. The following sample generates C4250. +This example shows a more complex situation. The following example generates C4250. ```cpp // C4250_c.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4243.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4243.md index 5fd56759f10..6b8dd2c801f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4243.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4243.md @@ -15,7 +15,7 @@ A pointer to a derived class is converted to a pointer to a base class, but the ## Example -The following sample generates C4243: +The following example generates C4243: ```cpp // C4243.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4265.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4265.md index 62edba89612..e8f511b5bf9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4265.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4265.md @@ -17,7 +17,7 @@ This warning is off by default. For more information, see [Compiler Warnings Tha ## Example -The following sample generates C4265: +The following example generates C4265: ```cpp // C4265.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4232.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4232.md index ccffc0d7e13..e10bb222665 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4232.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4232.md @@ -16,7 +16,7 @@ Under Microsoft extensions (/Ze), you can give a nonstatic value as the address ## Example -The following sample generates C4232: +The following example generates C4232: ```c // C4232.c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4239.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4239.md index 98a76da2a7f..6797b2db792 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4239.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4239.md @@ -16,7 +16,7 @@ This type conversion is not allowed by the C++ standard, but it is permitted her ## Examples -The following sample generates C4239. +The following example generates C4239. ```cpp // C4239.cpp @@ -34,7 +34,7 @@ void func(void) { Conversion from integral type to enum type is not strictly allowed. -The following sample generates C4239. +The following example generates C4239. ```cpp // C4239b.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4242.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4242.md index a4d2ad47bf7..defc25de938 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4242.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4242.md @@ -19,7 +19,7 @@ For more information on C4242, see [Common Compiler Errors](/windows/win32/WinPr ## Example -The following sample generates C4242: +The following example generates C4242: ```cpp // C4242.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4245.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4245.md index cf52daba9fd..ed117fd1232 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4245.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4245.md @@ -16,7 +16,7 @@ You tried to convert a **`signed const`** type that has a negative value to an * ## Example -The following sample generates C4245: +The following example generates C4245: ```cpp // C4245.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4254.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4254.md index 110f0188d73..03aa6d9f421 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4254.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4254.md @@ -17,7 +17,7 @@ This warning is off by default. For more information, see [Compiler Warnings Tha ## Example -The following sample generates C4254: +The following example generates C4254: ```cpp // C4254.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4255.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4255.md index 32c2bcfecdd..3cf27c00e00 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4255.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4255.md @@ -17,7 +17,7 @@ This warning is off by default. For more information, see [Compiler Warnings Tha ## Example -The following sample generates C4255: +The following example generates C4255: ```c // C4255.c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4256.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4256.md index 8f8d9e2e8ed..c3c017fabe4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4256.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4256.md @@ -24,7 +24,7 @@ To fix this warning, ## Example -The following sample generates C4256: +The following example generates C4256: ```cpp // C4256.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4263.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4263.md index 283fb1d1377..450639f9694 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4263.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4263.md @@ -17,7 +17,7 @@ This warning is off by default. For more information, see [Compiler Warnings Tha ## Example -The following sample generates C4263: +The following example generates C4263: ```cpp // C4263.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4266.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4266.md index 00e053dd810..50751d8f383 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4266.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4266.md @@ -17,7 +17,7 @@ This warning is off by default. For more information, see [Compiler Warnings Tha ## Example -The following sample generates C4266: +The following example generates C4266: ```cpp // C4266.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-levels-3-and-4-c4244.md b/docs/error-messages/compiler-warnings/compiler-warning-levels-3-and-4-c4244.md index 3ead28e4280..378fbc99270 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-levels-3-and-4-c4244.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-levels-3-and-4-c4244.md @@ -19,7 +19,7 @@ C4244 can also appear when the warning level is 2. For more information, see [Co ## Examples -The following sample generates C4244: +The following example generates C4244: ```cpp // C4244_level4.cpp @@ -56,7 +56,7 @@ int main() { Warning C4244 can occur when building code for 64-bit targets that doesn't generate the warning when building for 32-bit targets. For example, pointer arithmetic results in a 32-bit quantity on 32-bit platforms, but a 64-bit quantity on 64-bit platforms. -The following sample generates C4244 when compiled for 64-bit targets: +The following example generates C4244 when compiled for 64-bit targets: ```cpp // C4244_level3_b.cpp From 21a2745ce5cb5192c786bfaee852e59664891b3a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 27 Aug 2025 23:39:52 +0800 Subject: [PATCH 1628/2255] Update metadata for warning references in range [C4231, C4270] --- .../compiler-warnings/compiler-warning-level-1-c4237.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4258.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4264.md | 4 ++-- .../compiler-warnings/compiler-warning-level-2-c4244.md | 5 ++--- .../compiler-warnings/compiler-warning-level-2-c4250.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4240.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4265.md | 4 ++-- .../compiler-warnings/compiler-warning-level-3-c4267.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4232.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4233.md | 4 ++-- .../compiler-warnings/compiler-warning-level-4-c4234.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4238.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4239.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4242.md | 4 ++-- .../compiler-warnings/compiler-warning-level-4-c4245.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4255.md | 4 ++-- .../compiler-warnings/compiler-warning-level-4-c4256.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4263.md | 4 ++-- .../compiler-warnings/compiler-warning-level-4-c4266.md | 4 ++-- .../compiler-warnings/compiler-warning-level-4-c4268.md | 5 ++--- .../compiler-warning-levels-3-and-4-c4244.md | 4 ++-- 21 files changed, 42 insertions(+), 55 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4237.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4237.md index c9cb6149d88..122af024123 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4237.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4237.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4237" title: "Compiler Warning (level 1) C4237" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4237" +ms.date: 11/04/2016 f1_keywords: ["C4237"] helpviewer_keywords: ["C4237"] -ms.assetid: f2e86c4b-80d8-460e-9429-83c5f3f5d7ca --- # Compiler Warning (level 1) C4237 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4258.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4258.md index e8617f23c76..a29bd856a5b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4258.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4258.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4258" title: "Compiler Warning (level 1) C4258" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4258" +ms.date: 11/04/2016 f1_keywords: ["C4258"] helpviewer_keywords: ["C4258"] -ms.assetid: bbb75e6d-6693-4e62-8ed3-b006a0ec55e3 --- # Compiler Warning (level 1) C4258 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4264.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4264.md index 04ab31ecfd2..a781621f80a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4264.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4264.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 4, off) C4264" title: "Compiler Warning (level 4, off) C4264" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4, off) C4264" +ms.date: 11/04/2016 f1_keywords: ["C4264"] helpviewer_keywords: ["C4264"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4244.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4244.md index 16b7ef79e65..e2c76f5572e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4244.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4244.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 2) C4244" title: "Compiler Warning (level 2) C4244" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 2) C4244" +ms.date: 11/04/2016 f1_keywords: ["C4244"] helpviewer_keywords: ["C4244"] -ms.assetid: 2c19d157-21d1-42c2-a6c0-3f30f2ce3813 --- # Compiler Warning (level 2) C4244 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4250.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4250.md index d2752a821a4..307af8f0eb9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4250.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4250.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 2) C4250" title: "Compiler Warning (level 2) C4250" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 2) C4250" +ms.date: 11/04/2016 f1_keywords: ["C4250"] helpviewer_keywords: ["C4250"] -ms.assetid: d47f7249-6b5a-414b-b2d4-56e5d246a782 --- # Compiler Warning (level 2) C4250 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4240.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4240.md index 4c0d53e25f6..d7576d2dcae 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4240.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4240.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4240" title: "Compiler Warning (level 3) C4240" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4240" +ms.date: 11/04/2016 f1_keywords: ["C4240"] helpviewer_keywords: ["C4240"] -ms.assetid: a2657cdb-18e1-493f-882b-4e10c0bca71d --- # Compiler Warning (level 3) C4240 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4265.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4265.md index e8f511b5bf9..7fecde7c7ef 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4265.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4265.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 3, off) C4265" title: "Compiler Warning (level 3, off) C4265" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3, off) C4265" +ms.date: 11/04/2016 f1_keywords: ["C4265"] helpviewer_keywords: ["C4265"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4267.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4267.md index 8c2ae4bc824..3b6989d6744 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4267.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4267.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4267" title: "Compiler Warning (level 3) C4267" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4267" +ms.date: 11/04/2016 f1_keywords: ["C4267"] helpviewer_keywords: ["C4267"] -ms.assetid: 2fa2f13f-fa4f-47bb-ad8f-6cb19cfc91e6 --- # Compiler Warning (level 3) C4267 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4232.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4232.md index e10bb222665..392aa103b9b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4232.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4232.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4232" title: "Compiler Warning (level 4) C4232" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4232" +ms.date: 11/04/2016 f1_keywords: ["C4232"] helpviewer_keywords: ["C4232"] -ms.assetid: f92028a5-4ddd-43c1-97f5-4f724e5e14af --- # Compiler Warning (level 4) C4232 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4233.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4233.md index 525dbd22fe2..0ada63cf907 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4233.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4233.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 1, Error) C4233" title: "Compiler Warning (level 1, Error) C4233" -ms.date: "10/25/2017" +description: "Learn more about: Compiler Warning (level 1, Error) C4233" +ms.date: 10/25/2017 f1_keywords: ["C4233"] helpviewer_keywords: ["C4233"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4234.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4234.md index 331027fbff8..65c487e016e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4234.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4234.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4234" title: "Compiler Warning (level 4) C4234" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4234" +ms.date: 11/04/2016 f1_keywords: ["C4234"] helpviewer_keywords: ["C4234"] -ms.assetid: f7fecd5c-8248-4fde-8446-502aedc357ca --- # Compiler Warning (level 4) C4234 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4238.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4238.md index cf660112a55..cef575afd71 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4238.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4238.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4238" title: "Compiler Warning (level 4) C4238" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4238" +ms.date: 11/04/2016 f1_keywords: ["C4238"] helpviewer_keywords: ["C4238"] -ms.assetid: 5d4051d3-7b0f-43ea-8c8d-d194bfdceb71 --- # Compiler Warning (level 4) C4238 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4239.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4239.md index 6797b2db792..ead032c4b05 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4239.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4239.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4239" title: "Compiler Warning (level 4) C4239" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4239" +ms.date: 11/04/2016 f1_keywords: ["C4239"] helpviewer_keywords: ["C4239"] -ms.assetid: a23dc16a-649e-4870-9a24-275de1584fcd --- # Compiler Warning (level 4) C4239 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4242.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4242.md index defc25de938..e122d51b7c7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4242.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4242.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 3, off) C4242" title: "Compiler Warning (level 3, off) C4242" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3, off) C4242" +ms.date: 11/04/2016 f1_keywords: ["C4242"] helpviewer_keywords: ["C4242"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4245.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4245.md index ed117fd1232..051b3240354 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4245.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4245.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4245" title: "Compiler Warning (level 4) C4245" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4245" +ms.date: 11/04/2016 f1_keywords: ["C4245"] helpviewer_keywords: ["C4245"] -ms.assetid: 85083d53-9cc2-4d12-b58c-6dad28f15cbe --- # Compiler Warning (level 4) C4245 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4255.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4255.md index 3cf27c00e00..0627f04d951 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4255.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4255.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 4, off) C4255" title: "Compiler Warning (level 4, off) C4255" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4, off) C4255" +ms.date: 11/04/2016 f1_keywords: ["C4255"] helpviewer_keywords: ["C4255"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4256.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4256.md index c3c017fabe4..c7a310e4c0d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4256.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4256.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4256" title: "Compiler Warning (level 4) C4256" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4256" +ms.date: 11/04/2016 f1_keywords: ["C4256"] helpviewer_keywords: ["C4256"] -ms.assetid: a755a32e-895a-4837-a2b5-4ea06b736798 --- # Compiler Warning (level 4) C4256 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4263.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4263.md index 450639f9694..a12a0c9846e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4263.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4263.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 4, off) C4263" title: "Compiler Warning (level 4, off) C4263" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4, off) C4263" +ms.date: 11/04/2016 f1_keywords: ["C4263"] helpviewer_keywords: ["C4263"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4266.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4266.md index 50751d8f383..9d1dcb0c856 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4266.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4266.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 4, off) C4266" title: "Compiler Warning (level 4, off) C4266" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4, off) C4266" +ms.date: 11/04/2016 f1_keywords: ["C4266"] helpviewer_keywords: ["C4266"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4268.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4268.md index b4148b5e6a8..f463e36ffa0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4268.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4268.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4268" title: "Compiler Warning (level 4) C4268" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4268" +ms.date: 11/04/2016 f1_keywords: ["C4268"] helpviewer_keywords: ["C4268"] -ms.assetid: d0511e80-904f-4ee1-b4d7-39b5c0bd8234 --- # Compiler Warning (level 4) C4268 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-levels-3-and-4-c4244.md b/docs/error-messages/compiler-warnings/compiler-warning-levels-3-and-4-c4244.md index 378fbc99270..68800ee8c01 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-levels-3-and-4-c4244.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-levels-3-and-4-c4244.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (levels 3 and 4) C4244" title: "Compiler Warning (levels 3 and 4) C4244" -ms.date: "11/6/2023" +description: "Learn more about: Compiler Warning (levels 3 and 4) C4244" +ms.date: 11/6/2023 --- # Compiler Warning (levels 3 and 4) C4244 From f4f370d80c0335ae442a27867c5b1338b6d2c992 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 27 Aug 2025 23:43:33 +0800 Subject: [PATCH 1629/2255] Add leading example sentence for warning references in range [C4231, C4270] --- .../compiler-warnings/compiler-warning-level-1-c4251.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4269.md | 2 ++ .../compiler-warnings/compiler-warning-level-2-c4250.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4240.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4238.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4268.md | 2 ++ 6 files changed, 12 insertions(+) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4251.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4251.md index 1056b7868cf..b0b11764a1c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4251.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4251.md @@ -32,6 +32,8 @@ Think carefully about adding `__declspec(dllexport)` or `__declspec(dllimport)` ## Example +The following example generates C4251: + ```cpp // C4251.cpp // Compile with /std:c++20 /EHsc /W2 /c C4251.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4269.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4269.md index d582ed2f126..d5b610b7592 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4269.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4269.md @@ -15,6 +15,8 @@ A **`const`** automatic instance of a non-trivial class is initialized with a co ## Example +The following example generates C4269: + ```cpp // C4269.cpp // compile with: /c /LD /W1 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4250.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4250.md index 307af8f0eb9..b42f61f058e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4250.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4250.md @@ -19,6 +19,8 @@ Because a virtual base class is shared among multiple derived classes, a name in ## Examples +The following example generates C4250: + ```cpp // C4250.cpp // compile with: /c /W2 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4240.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4240.md index d7576d2dcae..529f6f70f31 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4240.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4240.md @@ -15,6 +15,8 @@ Under ANSI compatibility ([/Za](../../build/reference/za-ze-disable-language-ext ## Example +The following example generates C4240: + ```cpp // C4240.cpp // compile with: /W3 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4238.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4238.md index cef575afd71..686daa1f665 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4238.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4238.md @@ -15,6 +15,8 @@ For compatibility with previous versions of Visual C++, Microsoft extensions (** ## Example +The following example generates C4238: + ```cpp // C4238.cpp // compile with: /W4 /c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4268.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4268.md index f463e36ffa0..1ec1be39767 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4268.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4268.md @@ -15,6 +15,8 @@ A **`const`** global or static instance of a non-trivial class is initialized wi ## Example +The following example generates C4268: + ```cpp // C4268.cpp // compile with: /c /LD /W4 From 99446fc50954eb52fba02accebad43a8d4097766 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 28 Aug 2025 16:12:42 +0800 Subject: [PATCH 1630/2255] Add blockquotes for warning messages in range [C4271, C4310] --- .../compiler-warnings/compiler-warning-level-1-c4272.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4274.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4276.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4286.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4291.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4297.md | 2 +- .../compiler-warnings/compiler-warning-level-2-c4285.md | 2 +- .../compiler-warnings/compiler-warning-level-2-c4302.md | 2 +- .../compiler-warnings/compiler-warning-level-2-c4307.md | 2 +- .../compiler-warnings/compiler-warning-level-2-c4309.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4280.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4281.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4282.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4283.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4290.md | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4272.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4272.md index 6ef913aa807..7b141449644 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4272.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4272.md @@ -8,7 +8,7 @@ ms.assetid: 0d6c1de4-2eef-42c4-b861-c221f8b495ef --- # Compiler Warning (level 1) C4272 -'function' : is marked __declspec(dllimport); must specify native calling convention when importing a function. +> 'function' : is marked __declspec(dllimport); must specify native calling convention when importing a function. It is an error to export a function marked with the [__clrcall](../../cpp/clrcall.md) calling convention, and the compiler issues this warning if you attempt to import a function marked `__clrcall`. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4274.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4274.md index 2588a0e4a21..10ceebc0947 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4274.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4274.md @@ -8,7 +8,7 @@ ms.assetid: 5a948680-7ed1-469f-978d-ae99d154e161 --- # Compiler Warning (level 1) C4274 -\#ident ignored; see documentation for #pragma comment(exestr, 'string') +> #ident ignored; see documentation for #pragma comment(exestr, 'string') The `#ident` directive, which inserts a user-specified string in the object or executable file, is deprecated. Consequently, the compiler ignores the directive. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4276.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4276.md index 7e8473bae3d..ee1726b2235 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4276.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4276.md @@ -8,6 +8,6 @@ ms.assetid: 9d738c2d-29e5-408a-b9ff-be1a850b2238 --- # Compiler Warning (level 1) C4276 -'function' : no prototype provided; assumed no parameters +> 'function' : no prototype provided; assumed no parameters When you take the address of a function with the [__stdcall](../../cpp/stdcall.md) calling convention, you must give a prototype so the compiler can create the function's decorated name. Since *function* has no prototype, the compiler, when creating the decorated name, assumes the function has no parameters. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4286.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4286.md index a83f7124352..84576d99bd3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4286.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4286.md @@ -8,7 +8,7 @@ ms.assetid: 93eadd6c-6f36-413b-ba91-c9aa2314685a --- # Compiler Warning (level 1) C4286 -'type1' : is caught by base class ('type2') on line number +> 'type1' : is caught by base class ('type2') on line number The specified exception type is handled by a previous handler. The type for the second catch is derived from the type of the first. Exceptions for a base class catch exceptions for a derived class. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4291.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4291.md index e1e251737f2..91bb4eec20e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4291.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4291.md @@ -8,7 +8,7 @@ ms.assetid: c2b95dea-38f2-4609-9104-707c30798da4 --- # Compiler Warning (level 1) C4291 -'declaration' : no matching operator delete found; memory will not be freed if initialization throws an exception +> 'declaration' : no matching operator delete found; memory will not be freed if initialization throws an exception A placement [new](../../cpp/new-operator-cpp.md) is used for which there is no placement [delete](../../cpp/delete-operator-cpp.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4297.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4297.md index c300a5b4f1d..b5770e0ff29 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4297.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4297.md @@ -8,7 +8,7 @@ ms.assetid: ba92fcdc-9f70-4f60-abe6-281f9582ca59 --- # Compiler Warning (level 1) C4297 -'function' : function assumed not to throw an exception but does +> 'function' : function assumed not to throw an exception but does A function declaration contains a (possibly implicit) **`noexcept`** specifier, an empty **`throw`** exception specifier, or a [__declspec(nothrow)](../../cpp/nothrow-cpp.md) attribute, and the definition contains one or more [throw](../../cpp/try-throw-and-catch-statements-cpp.md) statements. To resolve C4297, do not attempt to throw exceptions in functions that are declared `__declspec(nothrow)`, `noexcept(true)` or `throw()`. Alternatively, remove the **`noexcept`**, `throw()`, or `__declspec(nothrow)` specification. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4285.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4285.md index 7b65391add0..0c474cb8be8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4285.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4285.md @@ -8,7 +8,7 @@ ms.assetid: fa14de1f-fc19-4eec-8bea-81003636e12f --- # Compiler Warning (level 2) C4285 -return type for 'identifier::operator ->' is recursive if applied using infix notation +> return type for 'identifier::operator ->' is recursive if applied using infix notation The specified **operator->()** function cannot return the type for which it is defined or a reference to the type for which it is defined. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4302.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4302.md index 92c0d2d4556..b5ea7f78b82 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4302.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4302.md @@ -8,7 +8,7 @@ ms.assetid: f5e1c939-e134-4cca-ba1e-9b15a81549ae --- # Compiler Warning (level 2) C4302 -'conversion' : truncation from 'type 1' to 'type 2' +> 'conversion' : truncation from 'type 1' to 'type 2' The compiler detected a conversion from a larger type to a smaller type. Information may be lost. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4307.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4307.md index c2561f469e3..5bb05c05d9a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4307.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4307.md @@ -8,7 +8,7 @@ ms.assetid: 7cca11e9-be61-49e4-8b15-88b84f0cbf07 --- # Compiler Warning (level 2) C4307 -'operator' : signed integral constant overflow +> 'operator' : signed integral constant overflow The operator is used in an expression that results in an integer constant overflowing the space allocated for it. You may need to use a larger type for the constant. A **`signed int`** holds a smaller value than an **`unsigned int`** because the **`signed int`** uses one bit to represent the sign. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4309.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4309.md index 5ae796582c4..65b174fbb5a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4309.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4309.md @@ -8,7 +8,7 @@ ms.assetid: cb3f41ef-fd8a-4def-baa1-924e751fca68 --- # Compiler Warning (level 2) C4309 -'conversion' : truncation of constant value +> 'conversion' : truncation of constant value The type conversion causes a constant to exceed the space allocated for it. You may need to use a larger type for the constant. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4280.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4280.md index 09130a82582..e50d7d4bb3b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4280.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4280.md @@ -8,7 +8,7 @@ ms.assetid: 153fb639-3ee1-4fee-baf9-71420abcf3f6 --- # Compiler Warning (level 3) C4280 -'operator ->' was self recursive through type 'type' +> 'operator ->' was self recursive through type 'type' Your code incorrectly allows **operator->** to call itself. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4281.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4281.md index 02df9c778a9..8b5da8a9fbe 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4281.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4281.md @@ -8,7 +8,7 @@ ms.assetid: a9771261-5725-4fc6-87b6-16cf92113a25 --- # Compiler Warning (level 3) C4281 -'operator ->' recursion occurred through type 'type' +> 'operator ->' recursion occurred through type 'type' Your code allows **operator->** to call itself. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4282.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4282.md index 151121d5b21..d1297f9ef43 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4282.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4282.md @@ -8,6 +8,6 @@ ms.assetid: 155bef24-7bd1-497b-a24b-4a0d784b44cd --- # Compiler Warning (level 3) C4282 -then through type 'type' +> then through type 'type' This continuation of warning C4281shows that **operator->** calls itself through `type`. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4283.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4283.md index 0e2d86ccf6e..ae61afb87be 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4283.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4283.md @@ -8,6 +8,6 @@ ms.assetid: c8823f1f-e746-42e2-85ef-270745764c05 --- # Compiler Warning (level 3) C4283 -and through type 'type' +> and through type 'type' This continuation of warning [C4281](../../error-messages/compiler-warnings/compiler-warning-level-3-c4281.md) shows that **operator->** calls itself through `type`. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4290.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4290.md index aaa839fdef3..db8fd983902 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4290.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4290.md @@ -8,7 +8,7 @@ ms.assetid: d1c6d85b-28e0-4a1f-9d48-23593337a6fb --- # Compiler Warning (level 3) C4290 -C++ exception specification ignored except to indicate a function is not __declspec(nothrow) +> C++ exception specification ignored except to indicate a function is not __declspec(nothrow) A function is declared using exception specification, which Visual C++ accepts but does not implement. Code with exception specifications that are ignored during compilation may need to be recompiled and linked to be reused in future versions supporting exception specifications. From 8e00f1689d10d654f813388c181c47a5f260b79e Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 28 Aug 2025 16:21:50 +0800 Subject: [PATCH 1631/2255] Add "Remarks" and "Example" headings for warning references in range [C4271, C4310] --- .../compiler-warnings/compiler-warning-level-1-c4272.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4273.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4274.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4276.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4286.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4288.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4291.md | 8 +++++++- .../compiler-warnings/compiler-warning-level-1-c4293.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4297.md | 4 ++++ .../compiler-warnings/compiler-warning-level-2-c4275.md | 4 ++++ .../compiler-warnings/compiler-warning-level-2-c4285.md | 4 ++++ .../compiler-warnings/compiler-warning-level-2-c4302.md | 4 ++++ .../compiler-warnings/compiler-warning-level-2-c4307.md | 4 ++++ .../compiler-warnings/compiler-warning-level-2-c4309.md | 4 ++++ .../compiler-warnings/compiler-warning-level-3-c4278.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4280.md | 4 ++++ .../compiler-warnings/compiler-warning-level-3-c4281.md | 4 ++++ .../compiler-warnings/compiler-warning-level-3-c4282.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4283.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4287.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4290.md | 4 ++++ .../compiler-warnings/compiler-warning-level-3-c4306.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4310.md | 8 +++++++- .../compiler-warnings/compiler-warning-level-4-c4289.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4295.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4296.md | 4 ++++ 26 files changed, 88 insertions(+), 4 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4272.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4272.md index 7b141449644..5f003c43a49 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4272.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4272.md @@ -10,8 +10,12 @@ ms.assetid: 0d6c1de4-2eef-42c4-b861-c221f8b495ef > 'function' : is marked __declspec(dllimport); must specify native calling convention when importing a function. +## Remarks + It is an error to export a function marked with the [__clrcall](../../cpp/clrcall.md) calling convention, and the compiler issues this warning if you attempt to import a function marked `__clrcall`. +## Example + The following sample generates C4272: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4273.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4273.md index 4bd91a8079a..51eb57dec39 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4273.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4273.md @@ -10,6 +10,8 @@ ms.assetid: cc18611d-9454-40a4-ad73-69823d5888fb > '*function*' : inconsistent DLL linkage +## Remarks + Two definitions in a file differ in their use of [`dllimport`](../../cpp/dllexport-dllimport.md). ## Examples diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4274.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4274.md index 10ceebc0947..84c0316692d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4274.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4274.md @@ -10,6 +10,8 @@ ms.assetid: 5a948680-7ed1-469f-978d-ae99d154e161 > #ident ignored; see documentation for #pragma comment(exestr, 'string') +## Remarks + The `#ident` directive, which inserts a user-specified string in the object or executable file, is deprecated. Consequently, the compiler ignores the directive. > [!CAUTION] diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4276.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4276.md index ee1726b2235..a11868235f2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4276.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4276.md @@ -10,4 +10,6 @@ ms.assetid: 9d738c2d-29e5-408a-b9ff-be1a850b2238 > 'function' : no prototype provided; assumed no parameters +## Remarks + When you take the address of a function with the [__stdcall](../../cpp/stdcall.md) calling convention, you must give a prototype so the compiler can create the function's decorated name. Since *function* has no prototype, the compiler, when creating the decorated name, assumes the function has no parameters. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4286.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4286.md index 84576d99bd3..e4c705b60d2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4286.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4286.md @@ -10,6 +10,8 @@ ms.assetid: 93eadd6c-6f36-413b-ba91-c9aa2314685a > 'type1' : is caught by base class ('type2') on line number +## Remarks + The specified exception type is handled by a previous handler. The type for the second catch is derived from the type of the first. Exceptions for a base class catch exceptions for a derived class. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4288.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4288.md index 67b2cfa8515..58281001bbb 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4288.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4288.md @@ -10,10 +10,14 @@ ms.assetid: 6aaeb139-90cd-457a-9d37-65687042736f > nonstandard extension used : 'var' : loop control variable declared in the for-loop is used outside the for-loop scope; it conflicts with the declaration in the outer scope +## Remarks + When compiling with [`/Ze`](../../build/reference/za-ze-disable-language-extensions.md) and **/Zc:forscope-**, a variable declared in a **`for`** loop was used after the [for](../../cpp/for-statement-cpp.md)-loop scope. A Microsoft extension to the C++ language allows this variable to remain in scope, and C4288 reminds you that the first declaration of the variable is not used. See [`/Zc:forScope`](../../build/reference/zc-forscope-force-conformance-in-for-loop-scope.md) for information about how to specify the Microsoft extension in **`for`** loops with /Ze. +## Example + The following sample generates C4288: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4291.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4291.md index 91bb4eec20e..2ae3d9d4e64 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4291.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4291.md @@ -10,13 +10,19 @@ ms.assetid: c2b95dea-38f2-4609-9104-707c30798da4 > 'declaration' : no matching operator delete found; memory will not be freed if initialization throws an exception +## Remarks + A placement [new](../../cpp/new-operator-cpp.md) is used for which there is no placement [delete](../../cpp/delete-operator-cpp.md). When memory is allocated for an object with operator **`new`**, the object's constructor is called. If the constructor throws an exception, any memory that was allocated for the object should be deallocated. This cannot take place unless an operator **`delete`** function exists that matches the operator **`new`**. If you use the operator **`new`** without any extra arguments and compile with [/GX](../../build/reference/gx-enable-exception-handling.md), [/EHs](../../build/reference/eh-exception-handling-model.md), or /EHa options to enable exception handling, the compiler will generate code to call operator **`delete`** if the constructor throws an exception. -If you use the placement form of the **`new`** operator (the form with arguments in addition to the size of the allocation) and the object's constructor throws an exception, the compiler will still generate code to call operator **`delete`**; but it will only do so if a placement form of operator **`delete`** exists matching the placement form of the operator **`new`** that allocated the memory. For example: +If you use the placement form of the **`new`** operator (the form with arguments in addition to the size of the allocation) and the object's constructor throws an exception, the compiler will still generate code to call operator **`delete`**; but it will only do so if a placement form of operator **`delete`** exists matching the placement form of the operator **`new`** that allocated the memory. + +## Example + +For example: ```cpp // C4291.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4293.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4293.md index 288d303e446..d632322b5d2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4293.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4293.md @@ -10,10 +10,10 @@ ms.assetid: babecd96-eb51-41a5-9835-462c7a46dbad > '*operator*' : shift count negative or too big, undefined behavior -If a shift count is negative or too large, the behavior of the resulting image is undefined. - ## Remarks +If a shift count is negative or too large, the behavior of the resulting image is undefined. + To resolve this issue, you can use a cast on the first operand to expand it to the size of the result type. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4297.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4297.md index b5770e0ff29..032746dab70 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4297.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4297.md @@ -10,6 +10,8 @@ ms.assetid: ba92fcdc-9f70-4f60-abe6-281f9582ca59 > 'function' : function assumed not to throw an exception but does +## Remarks + A function declaration contains a (possibly implicit) **`noexcept`** specifier, an empty **`throw`** exception specifier, or a [__declspec(nothrow)](../../cpp/nothrow-cpp.md) attribute, and the definition contains one or more [throw](../../cpp/try-throw-and-catch-statements-cpp.md) statements. To resolve C4297, do not attempt to throw exceptions in functions that are declared `__declspec(nothrow)`, `noexcept(true)` or `throw()`. Alternatively, remove the **`noexcept`**, `throw()`, or `__declspec(nothrow)` specification. By default, the compiler generates implicit `noexcept(true)` specifiers for user-defined destructors and deallocator functions and compiler-generated special member functions. This conforms to the ISO C++11 standard. To prevent generation of implicit noexcept specifiers and revert the compiler to the non-standard behavior of Visual Studio 2013, use the **/Zc:implicitNoexcept-** compiler option. For more information, see [/Zc:implicitNoexcept (Implicit Exception Specifiers)](../../build/reference/zc-implicitnoexcept-implicit-exception-specifiers.md). @@ -18,6 +20,8 @@ For more information on exception specifications, see [Exception Specifications This warning is also generated for __declspec([dllexport](../../cpp/dllexport-dllimport.md)) functions marked extern "C", even if they are C++ functions. +## Example + The following sample generates C4297: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4275.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4275.md index cd48f23132a..041b7ba7d17 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4275.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4275.md @@ -10,6 +10,8 @@ ms.assetid: 18de967a-0a44-4dbc-a2e8-fc4c067ba909 > non - DLL-interface class '*class_1*' used as base for DLL-interface class '*class_2*' +## Remarks + An exported class was derived from a class that wasn't exported. To minimize the possibility of data corruption when exporting a class with [__declspec(dllexport)](../../cpp/dllexport-dllimport.md), make sure that: @@ -28,6 +30,8 @@ You can avoid exporting classes by defining a DLL that defines a class with virt C4275 can be ignored in Visual C++ if you are deriving from a type in the C++ Standard Library, compiling a debug release (**/MTd**) and where the compiler error message refers to `_Container_base`. +## Example + ```cpp // C4275.cpp // compile with: /EHsc /MTd /W2 /c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4285.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4285.md index 0c474cb8be8..920bcfdda73 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4285.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4285.md @@ -10,8 +10,12 @@ ms.assetid: fa14de1f-fc19-4eec-8bea-81003636e12f > return type for 'identifier::operator ->' is recursive if applied using infix notation +## Remarks + The specified **operator->()** function cannot return the type for which it is defined or a reference to the type for which it is defined. +## Example + The following sample generates C4285: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4302.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4302.md index b5ea7f78b82..73cdc962df1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4302.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4302.md @@ -10,10 +10,14 @@ ms.assetid: f5e1c939-e134-4cca-ba1e-9b15a81549ae > 'conversion' : truncation from 'type 1' to 'type 2' +## Remarks + The compiler detected a conversion from a larger type to a smaller type. Information may be lost. This warning is off by default. See [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md) for more information. +## Example + The following sample generates C4302: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4307.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4307.md index 5bb05c05d9a..01c3465ac68 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4307.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4307.md @@ -10,8 +10,12 @@ ms.assetid: 7cca11e9-be61-49e4-8b15-88b84f0cbf07 > 'operator' : signed integral constant overflow +## Remarks + The operator is used in an expression that results in an integer constant overflowing the space allocated for it. You may need to use a larger type for the constant. A **`signed int`** holds a smaller value than an **`unsigned int`** because the **`signed int`** uses one bit to represent the sign. +## Example + The following sample generates C4307: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4309.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4309.md index 65b174fbb5a..93099fe47ec 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4309.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4309.md @@ -10,8 +10,12 @@ ms.assetid: cb3f41ef-fd8a-4def-baa1-924e751fca68 > 'conversion' : truncation of constant value +## Remarks + The type conversion causes a constant to exceed the space allocated for it. You may need to use a larger type for the constant. +## Example + The following sample generates C4309: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4278.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4278.md index 464d6497f33..2d402b98346 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4278.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4278.md @@ -9,4 +9,6 @@ helpviewer_keywords: ["C4278"] > '*identifier*': identifier in type library '*tlb*' is already a macro; use the 'rename' qualifier +## Remarks + The [`#import`](../../preprocessor/hash-import-directive-cpp.md) is attempting to import an identifier into the translation unit. However, there's already a symbol with that name. Use the `#import` **rename** attribute to assign an alias to the symbol in the type library. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4280.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4280.md index e50d7d4bb3b..e16e47f4b0c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4280.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4280.md @@ -10,8 +10,12 @@ ms.assetid: 153fb639-3ee1-4fee-baf9-71420abcf3f6 > 'operator ->' was self recursive through type 'type' +## Remarks + Your code incorrectly allows **operator->** to call itself. +## Example + The following sample generates C4280: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4281.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4281.md index 8b5da8a9fbe..d24e3f97654 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4281.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4281.md @@ -10,8 +10,12 @@ ms.assetid: a9771261-5725-4fc6-87b6-16cf92113a25 > 'operator ->' recursion occurred through type 'type' +## Remarks + Your code allows **operator->** to call itself. +## Example + The following sample generates C4281: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4282.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4282.md index d1297f9ef43..99fad3992fb 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4282.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4282.md @@ -10,4 +10,6 @@ ms.assetid: 155bef24-7bd1-497b-a24b-4a0d784b44cd > then through type 'type' +## Remarks + This continuation of warning C4281shows that **operator->** calls itself through `type`. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4283.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4283.md index ae61afb87be..da1aeedcc4a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4283.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4283.md @@ -10,4 +10,6 @@ ms.assetid: c8823f1f-e746-42e2-85ef-270745764c05 > and through type 'type' +## Remarks + This continuation of warning [C4281](../../error-messages/compiler-warnings/compiler-warning-level-3-c4281.md) shows that **operator->** calls itself through `type`. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4287.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4287.md index 989066bb6b0..6fd7397074f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4287.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4287.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4287"] > 'operator' : unsigned/negative constant mismatch +## Remarks + An unsigned variable was used in an operation with a negative number. This warning is off by default. For more information, see [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4290.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4290.md index db8fd983902..3f15adef8f4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4290.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4290.md @@ -10,6 +10,8 @@ ms.assetid: d1c6d85b-28e0-4a1f-9d48-23593337a6fb > C++ exception specification ignored except to indicate a function is not __declspec(nothrow) +## Remarks + A function is declared using exception specification, which Visual C++ accepts but does not implement. Code with exception specifications that are ignored during compilation may need to be recompiled and linked to be reused in future versions supporting exception specifications. For more information, see [Exception Specifications (throw)](../../cpp/exception-specifications-throw-cpp.md) . @@ -20,6 +22,8 @@ You can avoid this warning by using the [warning](../../preprocessor/warning.md) #pragma warning( disable : 4290 ) ``` +## Example + The following code sample generates C4290: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4306.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4306.md index 0e334e644ec..3754905b0dc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4306.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4306.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4306"] > '*conversion*': conversion from '*type1*' to '*type2*' of greater size +## Remarks + The identifier is type cast to a larger pointer. The unfilled high bits of the new type are zero-filled. This warning may indicate an unwanted conversion. The resulting pointer may not be valid. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4310.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4310.md index 97a146b5766..7b20196cbab 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4310.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4310.md @@ -9,7 +9,13 @@ helpviewer_keywords: ["C4310"] > cast truncates constant value -A constant value is cast to a smaller type. The compiler performs the cast, which truncates data. The following sample generates C4310: +## Remarks + +A constant value is cast to a smaller type. The compiler performs the cast, which truncates data. + +## Example + +The following sample generates C4310: ```cpp // C4310.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4289.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4289.md index e12bb325ac9..50bf4b73e96 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4289.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4289.md @@ -9,12 +9,16 @@ helpviewer_keywords: ["C4289"] > nonstandard extension used : 'var' : loop control variable declared in the `for`-loop is used outside the `for`-loop scope +## Remarks + When [/Ze](../../build/reference/za-ze-disable-language-extensions.md) and **/Zc:forScope-** are used in a build, a variable declared in a [`for`](../../cpp/for-statement-cpp.md) loop was used after the **`for`**-loop scope. See [/Zc:forScope](../../build/reference/zc-forscope-force-conformance-in-for-loop-scope.md) for information about how to specify standard behavior in **`for`** loops with **/Ze**. This warning is off by default. For more information, see [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). +## Example + The following sample generates C4289: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4295.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4295.md index f14ac9570c2..4b8cae115a1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4295.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4295.md @@ -10,6 +10,8 @@ ms.assetid: 20dbff85-9f62-4ca3-8fe9-079d4512006d > '*array*' : array is too small to include a terminating null character +## Remarks + An array was initialized but the last character in the array is not a null; accessing the array as a string may produce unexpected results. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4296.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4296.md index 39cb0b6e93b..1e7c0c85a3d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4296.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4296.md @@ -9,10 +9,14 @@ helpviewer_keywords: ["C4296"] > 'operator' : expression is always false +## Remarks + An unsigned variable was used in a comparison operation with zero. This warning is off by default. For more information, see [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). +## Example + The following sample generates C4296: ```cpp From 38ab8847f58b072d062c394cae3776b13c144acd Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 28 Aug 2025 16:23:19 +0800 Subject: [PATCH 1632/2255] Replace term "sample" with "example" for warning references in range [C4271, C4310] --- .../compiler-warnings/compiler-warning-level-1-c4272.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4273.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4288.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4293.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4297.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4305.md | 2 +- .../compiler-warnings/compiler-warning-level-2-c4285.md | 2 +- .../compiler-warnings/compiler-warning-level-2-c4302.md | 2 +- .../compiler-warnings/compiler-warning-level-2-c4307.md | 2 +- .../compiler-warnings/compiler-warning-level-2-c4309.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4280.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4281.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4287.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4290.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4310.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4289.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4295.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4296.md | 2 +- 18 files changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4272.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4272.md index 5f003c43a49..cc4b95d6d62 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4272.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4272.md @@ -16,7 +16,7 @@ It is an error to export a function marked with the [__clrcall](../../cpp/clrcal ## Example -The following sample generates C4272: +The following example generates C4272: ```cpp // C4272.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4273.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4273.md index 51eb57dec39..dbbfd54bbaa 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4273.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4273.md @@ -16,7 +16,7 @@ Two definitions in a file differ in their use of [`dllimport`](../../cpp/dllexpo ## Examples -The following sample generates C4273, and shows how to fix it. +The following example generates C4273, and shows how to fix it. ```cpp // C4273.cpp @@ -25,7 +25,7 @@ char __declspec(dllimport) c; char c; // C4273, delete this line or the line above to resolve ``` -The following sample generates C4273. To fix it, delete the redeclaration of `printf_s`. +The following example generates C4273. To fix it, delete the redeclaration of `printf_s`. ```cpp // C4273_b.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4288.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4288.md index 58281001bbb..6cda904d020 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4288.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4288.md @@ -18,7 +18,7 @@ See [`/Zc:forScope`](../../build/reference/zc-forscope-force-conformance-in-for- ## Example -The following sample generates C4288: +The following example generates C4288: ```cpp // C4288.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4293.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4293.md index d632322b5d2..ba93b738e3e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4293.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4293.md @@ -18,7 +18,7 @@ To resolve this issue, you can use a cast on the first operand to expand it to t ## Example -The following sample generates C4293, and shows ways to fix it: +The following example generates C4293, and shows ways to fix it: ```cpp // C4293.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4297.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4297.md index 032746dab70..cc2492855dd 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4297.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4297.md @@ -22,7 +22,7 @@ This warning is also generated for __declspec([dllexport](../../cpp/dllexport-dl ## Example -The following sample generates C4297: +The following example generates C4297: ```cpp // C4297.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4305.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4305.md index ba2979d7c62..608e0d5fb43 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4305.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4305.md @@ -15,7 +15,7 @@ This warning is issued when a value is converted to a smaller type in an initial ## Example -This sample shows two ways you might see this warning: +This example shows two ways you might see this warning: ```cpp // C4305.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4285.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4285.md index 920bcfdda73..f07674b85c8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4285.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4285.md @@ -16,7 +16,7 @@ The specified **operator->()** function cannot return the type for which it is d ## Example -The following sample generates C4285: +The following example generates C4285: ```cpp // C4285.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4302.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4302.md index 73cdc962df1..27cd50d02a1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4302.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4302.md @@ -18,7 +18,7 @@ This warning is off by default. See [Compiler Warnings That Are Off by Default]( ## Example -The following sample generates C4302: +The following example generates C4302: ```cpp // C4302.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4307.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4307.md index 01c3465ac68..b9aabb55566 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4307.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4307.md @@ -16,7 +16,7 @@ The operator is used in an expression that results in an integer constant overfl ## Example -The following sample generates C4307: +The following example generates C4307: ```cpp // C4307.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4309.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4309.md index 93099fe47ec..6de843038ec 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4309.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4309.md @@ -16,7 +16,7 @@ The type conversion causes a constant to exceed the space allocated for it. You ## Example -The following sample generates C4309: +The following example generates C4309: ```cpp // C4309.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4280.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4280.md index e16e47f4b0c..24ea6b01858 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4280.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4280.md @@ -16,7 +16,7 @@ Your code incorrectly allows **operator->** to call itself. ## Example -The following sample generates C4280: +The following example generates C4280: ```cpp // C4280.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4281.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4281.md index d24e3f97654..795bfa533a6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4281.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4281.md @@ -16,7 +16,7 @@ Your code allows **operator->** to call itself. ## Example -The following sample generates C4281: +The following example generates C4281: ```cpp // C4281.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4287.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4287.md index 6fd7397074f..7a0bf3849b6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4287.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4287.md @@ -17,7 +17,7 @@ This warning is off by default. For more information, see [Compiler Warnings Tha ## Example -The following sample generates C4287: +The following example generates C4287: ```cpp // C4287.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4290.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4290.md index 3f15adef8f4..d3892d254a3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4290.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4290.md @@ -24,7 +24,7 @@ You can avoid this warning by using the [warning](../../preprocessor/warning.md) ## Example -The following code sample generates C4290: +The following example generates C4290: ```cpp // C4290.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4310.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4310.md index 7b20196cbab..fd4f3dd6c97 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4310.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4310.md @@ -15,7 +15,7 @@ A constant value is cast to a smaller type. The compiler performs the cast, whic ## Example -The following sample generates C4310: +The following example generates C4310: ```cpp // C4310.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4289.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4289.md index 50bf4b73e96..efa6bf7868a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4289.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4289.md @@ -19,7 +19,7 @@ This warning is off by default. For more information, see [Compiler Warnings Tha ## Example -The following sample generates C4289: +The following example generates C4289: ```cpp // C4289.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4295.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4295.md index 4b8cae115a1..9afe1430d5f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4295.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4295.md @@ -16,7 +16,7 @@ An array was initialized but the last character in the array is not a null; acce ## Example -The following sample generates C4295. To fix this issue, you could declare the array size larger, to hold a terminating null from the initializer string, or you could use an array initializer list to make the intent clear that this is an array of **`char`**, not a null-terminated string. +The following example generates C4295. To fix this issue, you could declare the array size larger, to hold a terminating null from the initializer string, or you could use an array initializer list to make the intent clear that this is an array of **`char`**, not a null-terminated string. ```C // C4295.c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4296.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4296.md index 1e7c0c85a3d..b43115dae2a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4296.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4296.md @@ -17,7 +17,7 @@ This warning is off by default. For more information, see [Compiler Warnings Tha ## Example -The following sample generates C4296: +The following example generates C4296: ```cpp // C4296.cpp From 758d00e3103ee191092a148a384f3d1d06f3175e Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 28 Aug 2025 16:27:31 +0800 Subject: [PATCH 1633/2255] Update metadata for warning references in range [C4271, C4310] --- .../compiler-warnings/compiler-warning-level-1-c4272.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4273.md | 3 +-- .../compiler-warnings/compiler-warning-level-1-c4274.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4276.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4286.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4288.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4291.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4293.md | 1 - .../compiler-warnings/compiler-warning-level-1-c4297.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4305.md | 4 ++-- .../compiler-warnings/compiler-warning-level-2-c4275.md | 5 ++--- .../compiler-warnings/compiler-warning-level-2-c4285.md | 5 ++--- .../compiler-warnings/compiler-warning-level-2-c4302.md | 5 ++--- .../compiler-warnings/compiler-warning-level-2-c4307.md | 5 ++--- .../compiler-warnings/compiler-warning-level-2-c4308.md | 3 +-- .../compiler-warnings/compiler-warning-level-2-c4309.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4278.md | 4 ++-- .../compiler-warnings/compiler-warning-level-3-c4280.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4281.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4282.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4283.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4287.md | 4 ++-- .../compiler-warnings/compiler-warning-level-3-c4290.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4306.md | 4 ++-- .../compiler-warnings/compiler-warning-level-3-c4310.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4289.md | 4 ++-- .../compiler-warnings/compiler-warning-level-4-c4295.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4296.md | 4 ++-- 28 files changed, 51 insertions(+), 72 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4272.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4272.md index cc4b95d6d62..d4f042ea5c1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4272.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4272.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4272" title: "Compiler Warning (level 1) C4272" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4272" +ms.date: 11/04/2016 f1_keywords: ["C4272"] helpviewer_keywords: ["C4272"] -ms.assetid: 0d6c1de4-2eef-42c4-b861-c221f8b495ef --- # Compiler Warning (level 1) C4272 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4273.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4273.md index dbbfd54bbaa..d53d8ece27c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4273.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4273.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4273" title: "Compiler Warning (level 1) C4273" +description: "Learn more about: Compiler Warning (level 1) C4273" ms.date: 05/23/2022 f1_keywords: ["C4273"] helpviewer_keywords: ["C4273"] -ms.assetid: cc18611d-9454-40a4-ad73-69823d5888fb --- # Compiler Warning (level 1) C4273 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4274.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4274.md index 84c0316692d..6e7ea2759ce 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4274.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4274.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4274" title: "Compiler Warning (level 1) C4274" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4274" +ms.date: 11/04/2016 f1_keywords: ["C4274"] helpviewer_keywords: ["C4274"] -ms.assetid: 5a948680-7ed1-469f-978d-ae99d154e161 --- # Compiler Warning (level 1) C4274 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4276.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4276.md index a11868235f2..cd9812fc4e8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4276.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4276.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4276" title: "Compiler Warning (level 1) C4276" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4276" +ms.date: 11/04/2016 f1_keywords: ["C4276"] helpviewer_keywords: ["C4276"] -ms.assetid: 9d738c2d-29e5-408a-b9ff-be1a850b2238 --- # Compiler Warning (level 1) C4276 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4286.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4286.md index e4c705b60d2..d2b4d0dd1be 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4286.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4286.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4286" title: "Compiler Warning (level 1) C4286" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4286" +ms.date: 11/04/2016 f1_keywords: ["C4286"] helpviewer_keywords: ["C4286"] -ms.assetid: 93eadd6c-6f36-413b-ba91-c9aa2314685a --- # Compiler Warning (level 1) C4286 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4288.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4288.md index 6cda904d020..5a7b2f7bc3d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4288.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4288.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4288" title: "Compiler Warning (level 1) C4288" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4288" +ms.date: 11/04/2016 f1_keywords: ["C4288"] helpviewer_keywords: ["C4288"] -ms.assetid: 6aaeb139-90cd-457a-9d37-65687042736f --- # Compiler Warning (level 1) C4288 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4291.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4291.md index 2ae3d9d4e64..fb8a23defbe 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4291.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4291.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4291" title: "Compiler Warning (level 1) C4291" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4291" +ms.date: 11/04/2016 f1_keywords: ["C4291"] helpviewer_keywords: ["C4291"] -ms.assetid: c2b95dea-38f2-4609-9104-707c30798da4 --- # Compiler Warning (level 1) C4291 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4293.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4293.md index ba93b738e3e..cb24eb825ba 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4293.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4293.md @@ -4,7 +4,6 @@ description: "Describes the causes of MSVC compiler warning C4293, and shows how ms.date: 07/15/2020 f1_keywords: ["C4293"] helpviewer_keywords: ["C4293"] -ms.assetid: babecd96-eb51-41a5-9835-462c7a46dbad --- # Compiler Warning (level 1) C4293 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4297.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4297.md index cc2492855dd..25b6d26a536 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4297.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4297.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4297" title: "Compiler Warning (level 1) C4297" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4297" +ms.date: 11/04/2016 f1_keywords: ["C4297"] helpviewer_keywords: ["C4297"] -ms.assetid: ba92fcdc-9f70-4f60-abe6-281f9582ca59 --- # Compiler Warning (level 1) C4297 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4305.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4305.md index 608e0d5fb43..b34e71b9984 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4305.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4305.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 1 and level 2 and level 4) C4305" title: "Compiler Warning (level 1 and level 2 and level 4) C4305" -ms.date: "01/17/2018" +description: "Learn more about: Compiler Warning (level 1 and level 2 and level 4) C4305" +ms.date: 01/17/2018 f1_keywords: ["C4305"] helpviewer_keywords: ["C4305"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4275.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4275.md index 041b7ba7d17..0ce93f51039 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4275.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4275.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 2) C4275" title: "Compiler Warning (level 2) C4275" -ms.date: "02/08/2019" +description: "Learn more about: Compiler Warning (level 2) C4275" +ms.date: 02/08/2019 f1_keywords: ["C4275"] helpviewer_keywords: ["C4275"] -ms.assetid: 18de967a-0a44-4dbc-a2e8-fc4c067ba909 --- # Compiler Warning (level 2) C4275 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4285.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4285.md index f07674b85c8..dec38cac563 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4285.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4285.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 2) C4285" title: "Compiler Warning (level 2) C4285" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 2) C4285" +ms.date: 11/04/2016 f1_keywords: ["C4285"] helpviewer_keywords: ["C4285"] -ms.assetid: fa14de1f-fc19-4eec-8bea-81003636e12f --- # Compiler Warning (level 2) C4285 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4302.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4302.md index 27cd50d02a1..9631ebfbff3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4302.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4302.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 2) C4302" title: "Compiler Warning (level 2) C4302" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 2) C4302" +ms.date: 11/04/2016 f1_keywords: ["C4302"] helpviewer_keywords: ["C4302"] -ms.assetid: f5e1c939-e134-4cca-ba1e-9b15a81549ae --- # Compiler Warning (level 2) C4302 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4307.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4307.md index b9aabb55566..8dffb8c1508 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4307.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4307.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 2) C4307" title: "Compiler Warning (level 2) C4307" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 2) C4307" +ms.date: 11/04/2016 f1_keywords: ["C4307"] helpviewer_keywords: ["C4307"] -ms.assetid: 7cca11e9-be61-49e4-8b15-88b84f0cbf07 --- # Compiler Warning (level 2) C4307 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4308.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4308.md index 0f1b82759f9..05654efd527 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4308.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4308.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 2) C4308" title: "Compiler Warning (level 2) C4308" +description: "Learn more about: Compiler Warning (level 2) C4308" ms.date: 08/30/2022 f1_keywords: ["C4308"] helpviewer_keywords: ["C4308"] -ms.assetid: d4e5c53c-71b2-4bbc-8a7c-3a2a3180d9d9 --- # Compiler Warning (level 2) C4308 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4309.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4309.md index 6de843038ec..fecac92eab3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4309.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4309.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 2) C4309" title: "Compiler Warning (level 2) C4309" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 2) C4309" +ms.date: 11/04/2016 f1_keywords: ["C4309"] helpviewer_keywords: ["C4309"] -ms.assetid: cb3f41ef-fd8a-4def-baa1-924e751fca68 --- # Compiler Warning (level 2) C4309 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4278.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4278.md index 2d402b98346..86dd293c9a9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4278.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4278.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 3 and level 4) C4278" title: "Compiler Warning (level 3 and level 4) C4278" -ms.date: "08/27/2018" +description: "Learn more about: Compiler Warning (level 3 and level 4) C4278" +ms.date: 08/27/2018 f1_keywords: ["C4278"] helpviewer_keywords: ["C4278"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4280.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4280.md index 24ea6b01858..4ae40b56b8b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4280.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4280.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4280" title: "Compiler Warning (level 3) C4280" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4280" +ms.date: 11/04/2016 f1_keywords: ["C4280"] helpviewer_keywords: ["C4280"] -ms.assetid: 153fb639-3ee1-4fee-baf9-71420abcf3f6 --- # Compiler Warning (level 3) C4280 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4281.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4281.md index 795bfa533a6..9426d177374 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4281.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4281.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4281" title: "Compiler Warning (level 3) C4281" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4281" +ms.date: 11/04/2016 f1_keywords: ["C4281"] helpviewer_keywords: ["C4281"] -ms.assetid: a9771261-5725-4fc6-87b6-16cf92113a25 --- # Compiler Warning (level 3) C4281 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4282.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4282.md index 99fad3992fb..397b03cdf2a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4282.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4282.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4282" title: "Compiler Warning (level 3) C4282" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4282" +ms.date: 11/04/2016 f1_keywords: ["C4282"] helpviewer_keywords: ["C4282"] -ms.assetid: 155bef24-7bd1-497b-a24b-4a0d784b44cd --- # Compiler Warning (level 3) C4282 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4283.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4283.md index da1aeedcc4a..98f9c84badd 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4283.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4283.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4283" title: "Compiler Warning (level 3) C4283" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4283" +ms.date: 11/04/2016 f1_keywords: ["C4283"] helpviewer_keywords: ["C4283"] -ms.assetid: c8823f1f-e746-42e2-85ef-270745764c05 --- # Compiler Warning (level 3) C4283 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4287.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4287.md index 7a0bf3849b6..99d48f7475c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4287.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4287.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 3, off) C4287" title: "Compiler Warning (level 3, off) C4287" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3, off) C4287" +ms.date: 11/04/2016 f1_keywords: ["C4287"] helpviewer_keywords: ["C4287"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4290.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4290.md index d3892d254a3..ad2acf66d4e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4290.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4290.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4290" title: "Compiler Warning (level 3) C4290" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4290" +ms.date: 11/04/2016 f1_keywords: ["C4290"] helpviewer_keywords: ["C4290"] -ms.assetid: d1c6d85b-28e0-4a1f-9d48-23593337a6fb --- # Compiler Warning (level 3) C4290 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4306.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4306.md index 3754905b0dc..aba692f1c11 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4306.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4306.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4306" title: "Compiler Warning (level 4) C4306" -ms.date: "08/27/2018" +description: "Learn more about: Compiler Warning (level 4) C4306" +ms.date: 08/27/2018 f1_keywords: ["C4306"] helpviewer_keywords: ["C4306"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4310.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4310.md index fd4f3dd6c97..f929a873d2b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4310.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4310.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4310" title: "Compiler Warning (level 4) C4310" +description: "Learn more about: Compiler Warning (level 4) C4310" ms.date: 10/17/2023 f1_keywords: ["C4310"] helpviewer_keywords: ["C4310"] diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4289.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4289.md index efa6bf7868a..62b99960d88 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4289.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4289.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 4, off) C4289" title: "Compiler Warning (level 4, off) C4289" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4, off) C4289" +ms.date: 11/04/2016 f1_keywords: ["C4289"] helpviewer_keywords: ["C4289"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4295.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4295.md index 9afe1430d5f..05a88c4b3b7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4295.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4295.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4295" title: "Compiler Warning (level 4) C4295" -ms.date: "01/09/2018" +description: "Learn more about: Compiler Warning (level 4) C4295" +ms.date: 01/09/2018 f1_keywords: ["C4295"] helpviewer_keywords: ["C4295"] -ms.assetid: 20dbff85-9f62-4ca3-8fe9-079d4512006d --- # Compiler Warning (level 4) C4295 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4296.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4296.md index b43115dae2a..3f8d63d993a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4296.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4296.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 4, off) C4296" title: "Compiler Warning (level 4, off) C4296" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4, off) C4296" +ms.date: 11/04/2016 f1_keywords: ["C4296"] helpviewer_keywords: ["C4296"] --- From aee3048f4fa8f829f081d869bedb8341f252b31f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 28 Aug 2025 16:30:02 +0800 Subject: [PATCH 1634/2255] Add leading example sentence for warning references in range [C4271, C4310] --- .../compiler-warnings/compiler-warning-level-1-c4286.md | 2 ++ .../compiler-warnings/compiler-warning-level-2-c4275.md | 2 ++ .../compiler-warnings/compiler-warning-level-2-c4308.md | 2 ++ 3 files changed, 6 insertions(+) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4286.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4286.md index d2b4d0dd1be..248b4040981 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4286.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4286.md @@ -15,6 +15,8 @@ The specified exception type is handled by a previous handler. The type for the ## Example +The following example generates C4286: + ```cpp //C4286.cpp // compile with: /W1 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4275.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4275.md index 0ce93f51039..1488b7a2b6d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4275.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4275.md @@ -31,6 +31,8 @@ C4275 can be ignored in Visual C++ if you are deriving from a type in the C++ St ## Example +The following example generates C4275: + ```cpp // C4275.cpp // compile with: /EHsc /MTd /W2 /c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4308.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4308.md index 05654efd527..10ca720e0fa 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4308.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4308.md @@ -17,6 +17,8 @@ The [`/sdl` (Enable Additional Security Checks)](../../build/reference/sdl-enabl ## Example +The following example generates C4308: + ```cpp // C4308.cpp // compile with: /W2 From 00ac1d7110ee46a580dd6c5ece3722efcc9c32a5 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 28 Aug 2025 17:18:24 +0800 Subject: [PATCH 1635/2255] Add backticks in `std::rank` reference --- docs/standard-library/rank-class.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/standard-library/rank-class.md b/docs/standard-library/rank-class.md index 7812e4b0417..1992e403c7e 100644 --- a/docs/standard-library/rank-class.md +++ b/docs/standard-library/rank-class.md @@ -6,7 +6,7 @@ f1_keywords: ["type_traits/std::rank"] helpviewer_keywords: ["rank class", "rank"] ms.assetid: bc9f1b8f-800f-46ca-b6f4-d8579ed5406a --- -# rank Class +# `rank` Class Gets number of array dimensions. @@ -19,12 +19,12 @@ struct rank; ### Parameters -*Ty*\ +*`Ty`*\ The type to query. ## Remarks -The type query holds the value of the number of dimensions of the array type *Ty*, or 0 if *Ty* is not an array type. +The type query holds the value of the number of dimensions of the array type *`Ty`*, or 0 if *`Ty`* is not an array type. ## Example @@ -55,11 +55,11 @@ rank == 2 ## Requirements -**Header:** \ +**Header:** `` -**Namespace:** std +**Namespace:** `std` ## See also -[](../standard-library/type-traits.md)\ -[extent Class](../standard-library/extent-class.md) +[``](../standard-library/type-traits.md)\ +[`extent` Class](../standard-library/extent-class.md) From 373eca00277f34afa73982a7bef4b689226ff244 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 28 Aug 2025 17:19:09 +0800 Subject: [PATCH 1636/2255] Convert "Class" to lowercase in `std::rank` reference --- docs/standard-library/rank-class.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/standard-library/rank-class.md b/docs/standard-library/rank-class.md index 1992e403c7e..f5b6f450932 100644 --- a/docs/standard-library/rank-class.md +++ b/docs/standard-library/rank-class.md @@ -1,12 +1,12 @@ --- -description: "Learn more about: rank Class" -title: "rank Class" +description: "Learn more about: rank class" +title: "rank class" ms.date: "11/04/2016" f1_keywords: ["type_traits/std::rank"] helpviewer_keywords: ["rank class", "rank"] ms.assetid: bc9f1b8f-800f-46ca-b6f4-d8579ed5406a --- -# `rank` Class +# `rank` class Gets number of array dimensions. @@ -62,4 +62,4 @@ rank == 2 ## See also [``](../standard-library/type-traits.md)\ -[`extent` Class](../standard-library/extent-class.md) +[`extent` class](../standard-library/extent-class.md) From 049f4df6cd49e9cf8d8b37dfc3aa62eaa90b6c3b Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 28 Aug 2025 17:20:57 +0800 Subject: [PATCH 1637/2255] Rename "Parameters" heading to "Template parameters" in `std::rank` reference --- docs/standard-library/rank-class.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard-library/rank-class.md b/docs/standard-library/rank-class.md index f5b6f450932..ff7eb7dcc6e 100644 --- a/docs/standard-library/rank-class.md +++ b/docs/standard-library/rank-class.md @@ -17,7 +17,7 @@ template struct rank; ``` -### Parameters +### Template parameters *`Ty`*\ The type to query. From 5b2e9fd7e1c12573088977e70ee5e27d7993a956 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 28 Aug 2025 17:23:16 +0800 Subject: [PATCH 1638/2255] Change `Ty` template parameter to `Type` in `std::rank` reference --- docs/standard-library/rank-class.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/standard-library/rank-class.md b/docs/standard-library/rank-class.md index ff7eb7dcc6e..a8cd9863d87 100644 --- a/docs/standard-library/rank-class.md +++ b/docs/standard-library/rank-class.md @@ -13,18 +13,18 @@ Gets number of array dimensions. ## Syntax ```cpp -template +template struct rank; ``` ### Template parameters -*`Ty`*\ +*`Type`*\ The type to query. ## Remarks -The type query holds the value of the number of dimensions of the array type *`Ty`*, or 0 if *`Ty`* is not an array type. +The type query holds the value of the number of dimensions of the array type *`Type`*, or 0 if *`Type`* is not an array type. ## Example From 837eada6c2458062f96a6555e64bdfd5d09cac7b Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 28 Aug 2025 17:34:20 +0800 Subject: [PATCH 1639/2255] Expand example in `std::rank` reference --- docs/standard-library/rank-class.md | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/docs/standard-library/rank-class.md b/docs/standard-library/rank-class.md index a8cd9863d87..386fbf155ed 100644 --- a/docs/standard-library/rank-class.md +++ b/docs/standard-library/rank-class.md @@ -31,11 +31,12 @@ The type query holds the value of the number of dimensions of the array type *`T ```cpp // std__type_traits__rank.cpp // compile with: /EHsc + #include #include int main() - { +{ std::cout << "rank == " << std::rank::value << std::endl; std::cout << "rank == " @@ -43,14 +44,23 @@ int main() std::cout << "rank == " << std::rank::value << std::endl; - return (0); - } + int single_dim_array[]{ 1, 2, 3 }; + int double_dim_array[2][1]{ { 4 }, { 5 } }; + + std::cout << "\nrank == " + << std::rank::value << std::endl; + std::cout << "rank == " + << std::rank::value << std::endl; +} ``` ```Output rank == 0 rank == 1 rank == 2 + +rank == 1 +rank == 2 ``` ## Requirements From aae06296244e128cb193c7f16edd7d68568f49d4 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 28 Aug 2025 17:35:36 +0800 Subject: [PATCH 1640/2255] Clean up superfluous relative links in `std::rank` reference --- docs/standard-library/rank-class.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/standard-library/rank-class.md b/docs/standard-library/rank-class.md index 386fbf155ed..632aa05eb59 100644 --- a/docs/standard-library/rank-class.md +++ b/docs/standard-library/rank-class.md @@ -71,5 +71,5 @@ rank == 2 ## See also -[``](../standard-library/type-traits.md)\ -[`extent` class](../standard-library/extent-class.md) +[``](type-traits.md)\ +[`extent` class](extent-class.md) From 344fa16f12fcac603bff6afd1ba20fbed4a6b13f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 28 Aug 2025 17:36:39 +0800 Subject: [PATCH 1641/2255] Update metadata in `std::rank` reference --- docs/standard-library/rank-class.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/standard-library/rank-class.md b/docs/standard-library/rank-class.md index 632aa05eb59..f1c39092e5d 100644 --- a/docs/standard-library/rank-class.md +++ b/docs/standard-library/rank-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: rank class" title: "rank class" -ms.date: "11/04/2016" +description: "Learn more about: rank class" +ms.date: 08/28/2025 f1_keywords: ["type_traits/std::rank"] helpviewer_keywords: ["rank class", "rank"] -ms.assetid: bc9f1b8f-800f-46ca-b6f4-d8579ed5406a --- # `rank` class From 857da516dc5c8420e89ac18e7a6d18405fe6574d Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 28 Aug 2025 17:54:17 +0800 Subject: [PATCH 1642/2255] Elide stray escapes in columns --- docs/assembler/masm/option-language-masm.md | 4 ++-- docs/c-runtime-library/ismbb-routines.md | 2 +- docs/dotnet/stl-clr-library-reference.md | 4 ++-- docs/standard-library/type-traits.md | 6 +++--- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/assembler/masm/option-language-masm.md b/docs/assembler/masm/option-language-masm.md index bc258e08f1b..af36fc17e8a 100644 --- a/docs/assembler/masm/option-language-masm.md +++ b/docs/assembler/masm/option-language-masm.md @@ -20,11 +20,11 @@ Available languages include: :::row::: :::column span=""::: **`C`**\ - **`SYSCALL`**\ + **`SYSCALL`** :::column-end::: :::column span=""::: **`STDCALL`**\ - **`PASCAL`**\ + **`PASCAL`** :::column-end::: :::column span=""::: **`FORTRAN`**\ diff --git a/docs/c-runtime-library/ismbb-routines.md b/docs/c-runtime-library/ismbb-routines.md index 2d24fedf48a..ae9c95abce9 100644 --- a/docs/c-runtime-library/ismbb-routines.md +++ b/docs/c-runtime-library/ismbb-routines.md @@ -21,7 +21,7 @@ Tests the given integer value `c` for a particular condition, by using the curre [`_ismbblead`, `_ismbblead_l`](./reference/ismbblead-ismbblead-l.md)\ [`_ismbbprint`, `_ismbbprint_l`](./reference/ismbbprint-ismbbprint-l.md)\ [`_ismbbpunct`, `_ismbbpunct_l`](./reference/ismbbpunct-ismbbpunct-l.md)\ - [`_ismbbtrail`, `_ismbbtrail_l`](./reference/ismbbtrail-ismbbtrail-l.md)\ + [`_ismbbtrail`, `_ismbbtrail_l`](./reference/ismbbtrail-ismbbtrail-l.md) :::column-end::: :::row-end::: diff --git a/docs/dotnet/stl-clr-library-reference.md b/docs/dotnet/stl-clr-library-reference.md index e38c1906036..d10c5f5609f 100644 --- a/docs/dotnet/stl-clr-library-reference.md +++ b/docs/dotnet/stl-clr-library-reference.md @@ -51,7 +51,7 @@ In addition, this section also describes the following components of STL/CLR: [`hash_multimap` (STL/CLR)](../dotnet/hash-multimap-stl-clr.md)\ [`hash_multiset` (STL/CLR)](../dotnet/hash-multiset-stl-clr.md)\ [`hash_set` (STL/CLR)](../dotnet/hash-set-stl-clr.md)\ - [`list` (STL/CLR)](../dotnet/list-stl-clr.md)\ + [`list` (STL/CLR)](../dotnet/list-stl-clr.md) :::column-end::: :::column span=""::: [`map` (STL/CLR)](../dotnet/map-stl-clr.md)\ @@ -63,7 +63,7 @@ In addition, this section also describes the following components of STL/CLR: [`set` (STL/CLR)](../dotnet/set-stl-clr.md)\ [`stack` (STL/CLR)](../dotnet/stack-stl-clr.md)\ [`utility` (STL/CLR)](../dotnet/utility-stl-clr.md)\ - [`vector` (STL/CLR)](../dotnet/vector-stl-clr.md)\ + [`vector` (STL/CLR)](../dotnet/vector-stl-clr.md) :::column-end::: :::row-end::: diff --git a/docs/standard-library/type-traits.md b/docs/standard-library/type-traits.md index 80f42ef05a1..d2a3bbe88e5 100644 --- a/docs/standard-library/type-traits.md +++ b/docs/standard-library/type-traits.md @@ -44,7 +44,7 @@ These are the provided aliases for the `type` members: `add_rvalue_reference_t`\ `add_volatile_t`\ `aligned_storage_t`\ - `aligned_union_t`\ + `aligned_union_t` :::column-end::: :::column::: `common_type_t`\ @@ -54,7 +54,7 @@ These are the provided aliases for the `type` members: `invoke_result_t`\ `make_signed_t`\ `make_unsigned_t`\ - `remove_all_extents_t`\ + `remove_all_extents_t` :::column-end::: :::column::: `remove_const_t`\ @@ -64,7 +64,7 @@ These are the provided aliases for the `type` members: `remove_reference_t`\ `remove_volatile_t`\ `result_of_t`\ - `underlying_type_t`\ + `underlying_type_t` :::column-end::: :::row-end::: From df9fd880b938904c386e8f212debaeac52d4cd54 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 28 Aug 2025 17:55:13 +0800 Subject: [PATCH 1643/2255] Update metadata in 4 topics --- docs/assembler/masm/option-language-masm.md | 2 +- docs/c-runtime-library/ismbb-routines.md | 2 +- docs/dotnet/stl-clr-library-reference.md | 3 +-- docs/standard-library/type-traits.md | 5 ++--- 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/docs/assembler/masm/option-language-masm.md b/docs/assembler/masm/option-language-masm.md index af36fc17e8a..1ba3c6cd7d6 100644 --- a/docs/assembler/masm/option-language-masm.md +++ b/docs/assembler/masm/option-language-masm.md @@ -1,6 +1,6 @@ --- -description: Learn more about the alternatives for the OPTION LANGUAGE directive title: "OPTION LANGUAGE" +description: "Learn more about the alternatives for the OPTION LANGUAGE directive" ms.date: 09/21/2021 f1_keywords: ["language"] helpviewer_keywords: ["OPTION LANGUAGE directive"] diff --git a/docs/c-runtime-library/ismbb-routines.md b/docs/c-runtime-library/ismbb-routines.md index ae9c95abce9..328cb2d6977 100644 --- a/docs/c-runtime-library/ismbb-routines.md +++ b/docs/c-runtime-library/ismbb-routines.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: _ismbb routines" title: "_ismbb routines" +description: "Learn more about: _ismbb routines" ms.date: 01/11/2022 helpviewer_keywords: ["ismbb routines", "_ismbb routines"] --- diff --git a/docs/dotnet/stl-clr-library-reference.md b/docs/dotnet/stl-clr-library-reference.md index d10c5f5609f..8b2cd934967 100644 --- a/docs/dotnet/stl-clr-library-reference.md +++ b/docs/dotnet/stl-clr-library-reference.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: STL/CLR Library Reference" title: "STL/CLR Library Reference" +description: "Learn more about: STL/CLR Library Reference" ms.date: 09/18/2018 ms.topic: "reference" helpviewer_keywords: ["STL/CLR Library", "STL/CLR, redistribution", "cliext directory"] -ms.assetid: a9d9ca00-7bf2-48c1-b205-3ae6f8c25f82 --- # STL/CLR Library Reference diff --git a/docs/standard-library/type-traits.md b/docs/standard-library/type-traits.md index d2a3bbe88e5..b91cd8884c6 100644 --- a/docs/standard-library/type-traits.md +++ b/docs/standard-library/type-traits.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: " title: "" -ms.date: "02/21/2019" +description: "Learn more about: " +ms.date: 02/21/2019 f1_keywords: [""] helpviewer_keywords: ["typetrait header", "type_traits"] -ms.assetid: 2260b51f-8160-4c66-a82f-00b534cb60d4 --- # `` From 95e81f5859a83df77971aa7d33301ca10a499968 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Thu, 28 Aug 2025 23:25:55 +0800 Subject: [PATCH 1644/2255] Add blockquotes for warning messages in range [C4311, C4360] --- .../compiler-warnings/compiler-warning-level-1-c4311.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4312.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4313.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4333.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4340.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4342.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4344.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4346.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4348.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4350.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4353.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4358.md | 2 +- .../compiler-warnings/compiler-warning-level-2-c4356.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4316.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4334.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4357.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4336.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4337.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4343.md | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4311.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4311.md index 241e383b04a..a1c232b92c1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4311.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4311.md @@ -8,7 +8,7 @@ ms.assetid: ddc579d0-d051-47bc-915d-71ffb32323c9 --- # Compiler Warning (level 1) C4311 -'variable' : pointer truncation from 'type' to 'type' +> 'variable' : pointer truncation from 'type' to 'type' This warning detects 64-bit pointer truncation issues. For example, if code is compiled for a 64-bit architecture, the value of a pointer (64 bits) will be truncated if it is assigned to an **`int`** (32 bits). For more information, see [Rules for Using Pointers](/windows/win32/WinProg64/rules-for-using-pointers). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4312.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4312.md index 3bb9426aab6..8d8d72b2997 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4312.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4312.md @@ -8,7 +8,7 @@ ms.assetid: 541906ed-4f62-4bcb-947f-cf9ae7411bcb --- # Compiler Warning (level 1) C4312 -'operation' : conversion from 'type1' to 'type2' of greater size +> 'operation' : conversion from 'type1' to 'type2' of greater size This warning detects an attempt to assign a 32-bit value to a 64-bit pointer type, for example, casting a 32-bit **`int`** or **`long`** to a 64-bit pointer. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4313.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4313.md index 44d7f2e2556..5ca9684d276 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4313.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4313.md @@ -8,7 +8,7 @@ ms.assetid: bcf64191-e2cf-452e-97b4-423fcec2d07c --- # Compiler Warning (level 1) C4313 -'function' : 'format specifier' in format string conflicts with argument number of type 'type' +> 'function' : 'format specifier' in format string conflicts with argument number of type 'type' There is a conflict between the format specified and the value that you are passing. For example, you passed a 64-bit parameter to an unqualified %d format specifier, which expects a 32-bit integer parameter. This warning is only in effect when the code is compiled for 64-bit targets. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4333.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4333.md index 972196b570d..e638b64f65c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4333.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4333.md @@ -8,7 +8,7 @@ ms.assetid: d3763c52-6110-4da0-84db-5264e3f3f166 --- # Compiler Warning (level 1) C4333 -'operator' : right shift by too large amount, data loss +> 'operator' : right shift by too large amount, data loss A right shift operation was too large an amount. All significant bits are shifted out and the result will always be zero. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4340.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4340.md index 58981026e43..ed798bc0f02 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4340.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4340.md @@ -8,6 +8,6 @@ ms.assetid: ddd5344b-5167-4c55-a318-20615052fd54 --- # Compiler Warning (level 1) C4340 -'value' : value wrapped from positive to negative value +> 'value' : value wrapped from positive to negative value The **`enum`** value is greater than the largest **`enum`** positive value wrapped around to a negative value. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4342.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4342.md index b16363c5117..1de1d050a06 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4342.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4342.md @@ -8,7 +8,7 @@ ms.assetid: 47d4d5ab-069f-4cdc-98c3-10d649577a37 --- # Compiler Warning (level 1) C4342 -behavior change: '*function*' called, but a member operator was called in previous versions +> behavior change: '*function*' called, but a member operator was called in previous versions In versions of Visual C++ before Visual Studio 2002, a member was called, but this behavior has been changed and the compiler now finds the best match in namespace scope. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4344.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4344.md index 24e2d0b749f..1c8e52c65d5 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4344.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4344.md @@ -8,6 +8,6 @@ ms.assetid: cd20859d-f07f-4c70-904b-cb756a53b1ed --- # Compiler Warning (level 1) C4344 -behavior change: use of explicit template arguments results in call to 'function' +> behavior change: use of explicit template arguments results in call to 'function' A call to a function using explicit template arguments calls a different function than it would if explicit arguments had not been specified diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4346.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4346.md index a508a599219..80dd857b9d1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4346.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4346.md @@ -8,7 +8,7 @@ ms.assetid: 68ee562d-cca9-4a2a-9a1b-14ad1a1e7396 --- # Compiler Warning (level 1) C4346 -'name' : dependent name is not a type +> 'name' : dependent name is not a type The [typename](../../cpp/typename.md) keyword is required if a dependent name is to be treated as a type. For code that works the same in all versions of Visual C++, add **`typename`** to the declaration. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4348.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4348.md index 9a691ded0a2..c71bbfcfd65 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4348.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4348.md @@ -8,7 +8,7 @@ ms.assetid: 816010eb-6079-48d5-a41b-0fc4d67cfe4c --- # Compiler Warning (level 1) C4348 -'type' : redefinition of default parameter : parameter number +> 'type' : redefinition of default parameter : parameter number A template parameter was redefined. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4350.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4350.md index 99f15243ebb..b8cb14ab924 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4350.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4350.md @@ -8,7 +8,7 @@ ms.assetid: 4cc8ed67-64c4-4da5-a7a5-a639232baa23 --- # Compiler Warning (level 1) C4350 -behavior change: 'member1' called instead of 'member2' +> behavior change: 'member1' called instead of 'member2' An rvalue cannot be bound to a non-const reference. In versions of Visual C++ before Visual Studio 2003, it was possible to bind an rvalue to a non-const reference in a direct initialization. This code now gives a warning. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4353.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4353.md index 3ca31ea006a..cbb864d5493 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4353.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4353.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C4353"] --- # Compiler Warning (level 1) C4353 -nonstandard extension used: constant 0 as function expression. Use '__noop' function intrinsic instead +> nonstandard extension used: constant 0 as function expression. Use '__noop' function intrinsic instead You cannot use the constant zero (0) as a function expression. For more information, see [__noop](../../intrinsics/noop.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4358.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4358.md index 02e7ffc810f..f46c87a7820 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4358.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4358.md @@ -8,7 +8,7 @@ ms.assetid: a9848f84-14b3-405e-81bf-ee3e91a51511 --- # Compiler Warning (level 1) C4358 -'operator': return type of combined delegates is not 'void'; returned value is undefined +> 'operator': return type of combined delegates is not 'void'; returned value is undefined Two delegates were combined and the return value is not void. If two delegates with non-void return values are combined, the compiler will not be able to do a proper assignment if the return value of the delegate is used. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4356.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4356.md index 9134afc4376..6bd86758c14 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4356.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4356.md @@ -8,7 +8,7 @@ ms.assetid: 3af3defe-de33-43b6-bd6c-2c2e09e34f3f --- # Compiler Warning (level 2) C4356 -'member' : static data member cannot be initialized via derived class +> 'member' : static data member cannot be initialized via derived class The initialization of a static data member was ill formed. The compiler accepted the initialization. To avoid the warning, initialize the member through the base class. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4316.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4316.md index 5094e9de73e..e6851d61a9f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4316.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4316.md @@ -8,7 +8,7 @@ ms.assetid: 10371f01-aeb8-40ac-a290-59e63efa5ad4 --- # Compiler Warning (level 3) C4316 -Object allocated on the heap may not be aligned for this type. +> Object allocated on the heap may not be aligned for this type. An over-aligned object allocated by using `operator new` may not have the specified alignment. Override [operator new](../../c-runtime-library/new-operator-crt.md) and [operator delete](../../c-runtime-library/delete-operator-crt.md) for over-aligned types so that they use the aligned allocation routines—for example, [_aligned_malloc](../../c-runtime-library/reference/aligned-malloc.md) and [_aligned_free](../../c-runtime-library/reference/aligned-free.md). The following sample generates C4316: diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4334.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4334.md index 7b3c4b482cf..cdd91e92464 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4334.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4334.md @@ -8,7 +8,7 @@ ms.assetid: d845857f-bc95-4faf-a079-626a0cf935ba --- # Compiler Warning (level 3) C4334 -'operator': result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?) +> 'operator': result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?) The result of 32-bit shift was converted to 64-bit, and the compiler suspects that a 64-bit shift was intended. Resolve this warning by using a 64-bit shift. If a 32-bit shift is intentional, then cast the shift result to 32-bit to make it clear to the compiler. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4357.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4357.md index 008ffaca3b8..02afa65eb3a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4357.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4357.md @@ -8,7 +8,7 @@ ms.assetid: 9259c633-3c02-4900-b94a-2d8d366d61cd --- # Compiler Warning (level 3) C4357 -param array argument in formal argument list for delegate 'del' ignored when generating 'function' +> param array argument in formal argument list for delegate 'del' ignored when generating 'function' The `ParamArray` attribute was ignored, and `function` cannot be called with variable arguments. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4336.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4336.md index 4a777866930..725ea6bab27 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4336.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4336.md @@ -8,7 +8,7 @@ ms.assetid: 93f199dd-d6dd-42c0-82d8-c12d101a7235 --- # Compiler Warning (level 4) C4336 -import cross-referenced type library 'type_lib1' before importing 'type_lib2' +> import cross-referenced type library 'type_lib1' before importing 'type_lib2' A type library was referenced with the [#import](../../preprocessor/hash-import-directive-cpp.md) directive. However, the type library contained a reference to another type library that was not referenced with `#import`. This other .tlb file was found by the compiler. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4337.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4337.md index ada48dd852b..7a59a10e604 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4337.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4337.md @@ -8,7 +8,7 @@ ms.assetid: 70bc72d9-aac5-45cd-abd3-ebe42a05897b --- # Compiler Warning (level 4) C4337 -cross-referenced type library 'typelib1' in 'typelib2' is being automatically imported +> cross-referenced type library 'typelib1' in 'typelib2' is being automatically imported The auto_search attribute of [the #import directive](../../preprocessor/hash-import-directive-cpp.md) caused a type library to be implicitly imported. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4343.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4343.md index 57b03021c75..47d89124f24 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4343.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4343.md @@ -8,7 +8,7 @@ ms.assetid: a721b710-e04f-4d15-b678-e4a2c8fd0181 --- # Compiler Warning (level 4) C4343 -\#pragma optimize("g",off) overrides /Og option +> #pragma optimize("g",off) overrides /Og option This warning, only valid in the Itanium Processor Family (IPF) compiler, reports that a pragma [optimize](../../preprocessor/optimize.md) overrode a [/Og](../../build/reference/og-global-optimizations.md) compiler option. From c2d6fc7edfcdd95387a16075baea1ab425345e3d Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Thu, 28 Aug 2025 23:33:52 +0800 Subject: [PATCH 1645/2255] Add "Remarks" and "Example" headings for warning references in range [C4311, C4360] --- .../compiler-warnings/compiler-warning-c4355.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4311.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4312.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4313.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4319.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4325.md | 6 +++++- .../compiler-warnings/compiler-warning-level-1-c4329.md | 8 +++++++- .../compiler-warnings/compiler-warning-level-1-c4333.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4340.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4342.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4344.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4346.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4348.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4350.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4353.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4358.md | 4 ++++ .../compiler-warnings/compiler-warning-level-2-c4356.md | 4 ++++ .../compiler-warnings/compiler-warning-level-3-c4316.md | 8 +++++++- .../compiler-warnings/compiler-warning-level-3-c4334.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4357.md | 4 ++++ .../compiler-warnings/compiler-warning-level-3-c4359.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4336.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4337.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4339.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4343.md | 4 ++++ 25 files changed, 93 insertions(+), 3 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4355.md b/docs/error-messages/compiler-warnings/compiler-warning-c4355.md index 57d328a58fe..de6d088cd0e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4355.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4355.md @@ -9,12 +9,16 @@ helpviewer_keywords: ["C4355"] > '`this`': used in base member initializer list +## Remarks + The `this` pointer is valid only within nonstatic member functions. It can't be used in the initializer list for a base class. The base-class constructors and class member constructors are called before `this` constructor. This pattern is the same as passing a pointer to an unconstructed object to another constructor. If those other constructors access any members or call member functions on `this`, the result is undefined. You shouldn't use the `this` pointer until all construction is complete. This warning is off by default. For more information, see [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). +## Example + The following sample generates C4355: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4311.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4311.md index a1c232b92c1..9cd9779fa7a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4311.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4311.md @@ -10,10 +10,14 @@ ms.assetid: ddc579d0-d051-47bc-915d-71ffb32323c9 > 'variable' : pointer truncation from 'type' to 'type' +## Remarks + This warning detects 64-bit pointer truncation issues. For example, if code is compiled for a 64-bit architecture, the value of a pointer (64 bits) will be truncated if it is assigned to an **`int`** (32 bits). For more information, see [Rules for Using Pointers](/windows/win32/WinProg64/rules-for-using-pointers). For additional information about common causes of warning C4311, see [Common Compiler Errors](/windows/win32/WinProg64/common-compiler-errors). +## Example + The following code example generates C4311 when compiled for a 64-bit target, and then demonstrates how to fix it: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4312.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4312.md index 8d8d72b2997..653ee40d387 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4312.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4312.md @@ -10,12 +10,16 @@ ms.assetid: 541906ed-4f62-4bcb-947f-cf9ae7411bcb > 'operation' : conversion from 'type1' to 'type2' of greater size +## Remarks + This warning detects an attempt to assign a 32-bit value to a 64-bit pointer type, for example, casting a 32-bit **`int`** or **`long`** to a 64-bit pointer. This can be an unsafe conversion even for pointer values that fit in 32 bits when sign extension occurs. If a negative 32-bit integer is assigned to a 64-bit pointer type, sign extension causes the pointer value to reference a memory address different from the value of the integer. This warning is only issued for 64-bit compilation targets. For more information, see [Rules for Using Pointers](/windows/win32/WinProg64/rules-for-using-pointers). +## Example + The following code example generates C4312 when it is compiled for 64-bit targets: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4313.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4313.md index 5ca9684d276..61292eb8520 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4313.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4313.md @@ -10,6 +10,8 @@ ms.assetid: bcf64191-e2cf-452e-97b4-423fcec2d07c > 'function' : 'format specifier' in format string conflicts with argument number of type 'type' +## Remarks + There is a conflict between the format specified and the value that you are passing. For example, you passed a 64-bit parameter to an unqualified %d format specifier, which expects a 32-bit integer parameter. This warning is only in effect when the code is compiled for 64-bit targets. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4319.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4319.md index af4e194b373..6c5688f28b4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4319.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4319.md @@ -10,6 +10,8 @@ ms.assetid: 1fac8048-9bd6-4552-a21c-192c67772bb9 > '~' : zero extending '*type1*' to '*type2*' of greater size +## Remarks + The result of the **~** (bitwise complement) operator is unsigned and then zero-extended when it is converted to a larger type. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4325.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4325.md index bb1233d0d72..de272173fec 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4325.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4325.md @@ -12,7 +12,11 @@ ms.assetid: 8127a08c-d626-481b-aa7b-04a3fdc9a9ec ## Remarks -You may not change the attributes of a standard section. For example: +You may not change the attributes of a standard section. + +## Example + +For example: ```cpp #pragma section(".sdata", long) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4329.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4329.md index 2922e2c6250..81d34a5da58 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4329.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4329.md @@ -9,7 +9,13 @@ helpviewer_keywords: ["C4329"] > alignment specifier is ignored on enum -Use of the alignment specifiers on `enum` isn't allowed. This pattern includes the use of the [`align`](../../cpp/align-cpp.md) [`__declspec`](../../cpp/declspec.md) modifier. The following sample generates C4329: +## Remarks + +Use of the alignment specifiers on `enum` isn't allowed. This pattern includes the use of the [`align`](../../cpp/align-cpp.md) [`__declspec`](../../cpp/declspec.md) modifier. + +## Example + +The following sample generates C4329: ```cpp // C4329.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4333.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4333.md index e638b64f65c..cc64556ea71 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4333.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4333.md @@ -10,6 +10,8 @@ ms.assetid: d3763c52-6110-4da0-84db-5264e3f3f166 > 'operator' : right shift by too large amount, data loss +## Remarks + A right shift operation was too large an amount. All significant bits are shifted out and the result will always be zero. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4340.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4340.md index ed798bc0f02..8f5f3e5c898 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4340.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4340.md @@ -10,4 +10,6 @@ ms.assetid: ddd5344b-5167-4c55-a318-20615052fd54 > 'value' : value wrapped from positive to negative value +## Remarks + The **`enum`** value is greater than the largest **`enum`** positive value wrapped around to a negative value. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4342.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4342.md index 1de1d050a06..806dc4266d1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4342.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4342.md @@ -10,6 +10,8 @@ ms.assetid: 47d4d5ab-069f-4cdc-98c3-10d649577a37 > behavior change: '*function*' called, but a member operator was called in previous versions +## Remarks + In versions of Visual C++ before Visual Studio 2002, a member was called, but this behavior has been changed and the compiler now finds the best match in namespace scope. If a member operator was found, the compiler would previously not consider any namespace scope operators. If there is a better match at namespace scope, the current compiler correctly calls it, whereas previous compilers wouldn't consider it. @@ -18,6 +20,8 @@ This warning should be disabled after you successfully port your code to the cur This warning is off by default. For more information, see [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). +## Example + The following sample generates C4342: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4344.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4344.md index 1c8e52c65d5..3e1e32fcf10 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4344.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4344.md @@ -10,4 +10,6 @@ ms.assetid: cd20859d-f07f-4c70-904b-cb756a53b1ed > behavior change: use of explicit template arguments results in call to 'function' +## Remarks + A call to a function using explicit template arguments calls a different function than it would if explicit arguments had not been specified diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4346.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4346.md index 80dd857b9d1..5044649f082 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4346.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4346.md @@ -10,8 +10,12 @@ ms.assetid: 68ee562d-cca9-4a2a-9a1b-14ad1a1e7396 > 'name' : dependent name is not a type +## Remarks + The [typename](../../cpp/typename.md) keyword is required if a dependent name is to be treated as a type. For code that works the same in all versions of Visual C++, add **`typename`** to the declaration. +## Examples + The following sample generates C4346: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4348.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4348.md index c71bbfcfd65..daee11eaa92 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4348.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4348.md @@ -10,8 +10,12 @@ ms.assetid: 816010eb-6079-48d5-a41b-0fc4d67cfe4c > 'type' : redefinition of default parameter : parameter number +## Remarks + A template parameter was redefined. +## Example + The following sample generates C4348: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4350.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4350.md index b8cb14ab924..abd15d7e38c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4350.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4350.md @@ -10,6 +10,8 @@ ms.assetid: 4cc8ed67-64c4-4da5-a7a5-a639232baa23 > behavior change: 'member1' called instead of 'member2' +## Remarks + An rvalue cannot be bound to a non-const reference. In versions of Visual C++ before Visual Studio 2003, it was possible to bind an rvalue to a non-const reference in a direct initialization. This code now gives a warning. For backward compatibility, it is still possible to bind rvalues to non-const references, but standard conversions are preferred wherever possible. @@ -20,6 +22,8 @@ If you get this warning, examine your code to see if it depends on binding rvalu This warning is off by default. For more information, see [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). +## Example + The following sample generates C4350: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4353.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4353.md index cbb864d5493..42f3a60374d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4353.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4353.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C4353"] > nonstandard extension used: constant 0 as function expression. Use '__noop' function intrinsic instead +## Remarks + You cannot use the constant zero (0) as a function expression. For more information, see [__noop](../../intrinsics/noop.md). +## Example + The following sample generates C4353: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4358.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4358.md index f46c87a7820..9b1f4b411a2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4358.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4358.md @@ -10,8 +10,12 @@ ms.assetid: a9848f84-14b3-405e-81bf-ee3e91a51511 > 'operator': return type of combined delegates is not 'void'; returned value is undefined +## Remarks + Two delegates were combined and the return value is not void. If two delegates with non-void return values are combined, the compiler will not be able to do a proper assignment if the return value of the delegate is used. +## Example + The following sample generates C4358: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4356.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4356.md index 6bd86758c14..f395df1c966 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4356.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4356.md @@ -10,10 +10,14 @@ ms.assetid: 3af3defe-de33-43b6-bd6c-2c2e09e34f3f > 'member' : static data member cannot be initialized via derived class +## Remarks + The initialization of a static data member was ill formed. The compiler accepted the initialization. To avoid the warning, initialize the member through the base class. Use the [warning](../../preprocessor/warning.md) pragma to suppress this warning. +## Example + The following sample generates C4356: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4316.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4316.md index e6851d61a9f..e7cf25cf3be 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4316.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4316.md @@ -10,7 +10,13 @@ ms.assetid: 10371f01-aeb8-40ac-a290-59e63efa5ad4 > Object allocated on the heap may not be aligned for this type. -An over-aligned object allocated by using `operator new` may not have the specified alignment. Override [operator new](../../c-runtime-library/new-operator-crt.md) and [operator delete](../../c-runtime-library/delete-operator-crt.md) for over-aligned types so that they use the aligned allocation routines—for example, [_aligned_malloc](../../c-runtime-library/reference/aligned-malloc.md) and [_aligned_free](../../c-runtime-library/reference/aligned-free.md). The following sample generates C4316: +## Remarks + +An over-aligned object allocated by using `operator new` may not have the specified alignment. Override [operator new](../../c-runtime-library/new-operator-crt.md) and [operator delete](../../c-runtime-library/delete-operator-crt.md) for over-aligned types so that they use the aligned allocation routines—for example, [_aligned_malloc](../../c-runtime-library/reference/aligned-malloc.md) and [_aligned_free](../../c-runtime-library/reference/aligned-free.md). + +## Example + +The following sample generates C4316: ```cpp // C4316.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4334.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4334.md index cdd91e92464..4f5458b77ee 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4334.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4334.md @@ -10,6 +10,8 @@ ms.assetid: d845857f-bc95-4faf-a079-626a0cf935ba > 'operator': result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?) +## Remarks + The result of 32-bit shift was converted to 64-bit, and the compiler suspects that a 64-bit shift was intended. Resolve this warning by using a 64-bit shift. If a 32-bit shift is intentional, then cast the shift result to 32-bit to make it clear to the compiler. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4357.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4357.md index 02afa65eb3a..21d60d90abe 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4357.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4357.md @@ -10,8 +10,12 @@ ms.assetid: 9259c633-3c02-4900-b94a-2d8d366d61cd > param array argument in formal argument list for delegate 'del' ignored when generating 'function' +## Remarks + The `ParamArray` attribute was ignored, and `function` cannot be called with variable arguments. +## Example + The following sample generates C4357: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4359.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4359.md index 1323cb6fe50..2f23ada186c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4359.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4359.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4359"] > 'type': actual alignment (8) is greater than the value specified in __declspec(align()) +## Remarks + The alignment specified for a type is less than the alignment of the type of one of its data members. For more information, see [align](../../cpp/align-cpp.md). ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4336.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4336.md index 725ea6bab27..c20fe09957d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4336.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4336.md @@ -10,8 +10,12 @@ ms.assetid: 93f199dd-d6dd-42c0-82d8-c12d101a7235 > import cross-referenced type library 'type_lib1' before importing 'type_lib2' +## Remarks + A type library was referenced with the [#import](../../preprocessor/hash-import-directive-cpp.md) directive. However, the type library contained a reference to another type library that was not referenced with `#import`. This other .tlb file was found by the compiler. +## Example + Given two type libraries on disk created from the following two files (compiled with midl.exe): ``` diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4337.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4337.md index 7a59a10e604..c0965a2c79d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4337.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4337.md @@ -10,8 +10,12 @@ ms.assetid: 70bc72d9-aac5-45cd-abd3-ebe42a05897b > cross-referenced type library 'typelib1' in 'typelib2' is being automatically imported +## Remarks + The auto_search attribute of [the #import directive](../../preprocessor/hash-import-directive-cpp.md) caused a type library to be implicitly imported. +## Example + Given two type libraries on disk created from the following two files (compiled with midl.exe): ``` diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4339.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4339.md index 77a9a5a3e57..5d6d32b7b81 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4339.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4339.md @@ -9,10 +9,14 @@ helpviewer_keywords: ["C4339"] > 'type' : use of undefined type detected in WinRT or CLR meta-data - use of this type may lead to a runtime exception +## Remarks + A type wasn't defined in code that was compiled for Windows Runtime or the common language runtime. Define the type to avoid a possible runtime exception. This warning is off by default. For more information, see [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). +## Example + The following sample generates C4339 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4343.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4343.md index 47d89124f24..ce065c88551 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4343.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4343.md @@ -10,8 +10,12 @@ ms.assetid: a721b710-e04f-4d15-b678-e4a2c8fd0181 > #pragma optimize("g",off) overrides /Og option +## Remarks + This warning, only valid in the Itanium Processor Family (IPF) compiler, reports that a pragma [optimize](../../preprocessor/optimize.md) overrode a [/Og](../../build/reference/og-global-optimizations.md) compiler option. +## Example + The following sample generates C4343: ```cpp From bb69b5cf09efb46b20d845709234c041207779bf Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Thu, 28 Aug 2025 23:35:48 +0800 Subject: [PATCH 1646/2255] Replace term "sample" with "example" for warning references in range [C4311, C4360] --- .../compiler-warnings/compiler-warning-c4355.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4313.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4326.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4329.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4333.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4342.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4346.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4348.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4350.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4353.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4358.md | 2 +- .../compiler-warnings/compiler-warning-level-2-c4356.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4316.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4334.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4357.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4359.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4336.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4337.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4339.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4343.md | 2 +- 20 files changed, 21 insertions(+), 21 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4355.md b/docs/error-messages/compiler-warnings/compiler-warning-c4355.md index de6d088cd0e..132a3ccf66b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4355.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4355.md @@ -19,7 +19,7 @@ This warning is off by default. For more information, see [Compiler Warnings Tha ## Example -The following sample generates C4355: +The following example generates C4355: ```cpp // C4355.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4313.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4313.md index 61292eb8520..30f4c289a17 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4313.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4313.md @@ -16,7 +16,7 @@ There is a conflict between the format specified and the value that you are pass ## Example -The following code sample generates C4313 when it is compiled for a 64-bit target. +The following code example generates C4313 when it is compiled for a 64-bit target. ```cpp // C4313.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4326.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4326.md index 4cad0b88a46..fe0ccfe4e0e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4326.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4326.md @@ -16,7 +16,7 @@ A function returned a type other than *type1*. For example, using [/Za](../../bu ## Example -The following sample generates C4326 and shows how to fix it: +The following example generates C4326 and shows how to fix it: ```cpp // C4326.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4329.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4329.md index 81d34a5da58..522fc17b270 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4329.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4329.md @@ -15,7 +15,7 @@ Use of the alignment specifiers on `enum` isn't allowed. This pattern includes t ## Example -The following sample generates C4329: +The following example generates C4329: ```cpp // C4329.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4333.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4333.md index cc64556ea71..c1c88909f95 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4333.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4333.md @@ -16,7 +16,7 @@ A right shift operation was too large an amount. All significant bits are shift ## Example -The following sample generates C4333. +The following example generates C4333. ```cpp // C4333.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4342.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4342.md index 806dc4266d1..9390d92da3e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4342.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4342.md @@ -22,7 +22,7 @@ This warning is off by default. For more information, see [Compiler Warnings Tha ## Example -The following sample generates C4342: +The following example generates C4342: ```cpp // C4342.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4346.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4346.md index 5044649f082..53811cf1448 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4346.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4346.md @@ -16,7 +16,7 @@ The [typename](../../cpp/typename.md) keyword is required if a dependent name is ## Examples -The following sample generates C4346: +The following example generates C4346: ```cpp // C4346.cpp @@ -29,7 +29,7 @@ struct C { }; ``` -The following samples shows other examples where the **`typename`** keyword is required: +The following shows other examples where the **`typename`** keyword is required: ```cpp // C4346b.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4348.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4348.md index daee11eaa92..0fb1dd8c08b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4348.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4348.md @@ -16,7 +16,7 @@ A template parameter was redefined. ## Example -The following sample generates C4348: +The following example generates C4348: ```cpp // C4348.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4350.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4350.md index abd15d7e38c..def1b86a1e6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4350.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4350.md @@ -24,7 +24,7 @@ This warning is off by default. For more information, see [Compiler Warnings Tha ## Example -The following sample generates C4350: +The following example generates C4350: ```cpp // C4350.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4353.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4353.md index 42f3a60374d..ced2c8a0687 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4353.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4353.md @@ -15,7 +15,7 @@ You cannot use the constant zero (0) as a function expression. For more informat ## Example -The following sample generates C4353: +The following example generates C4353: ```cpp // C4353.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4358.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4358.md index 9b1f4b411a2..36ac7abc3af 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4358.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4358.md @@ -16,7 +16,7 @@ Two delegates were combined and the return value is not void. If two delegates w ## Example -The following sample generates C4358: +The following example generates C4358: ```cpp // C4358.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4356.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4356.md index f395df1c966..99ab15ae84d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4356.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4356.md @@ -18,7 +18,7 @@ Use the [warning](../../preprocessor/warning.md) pragma to suppress this warning ## Example -The following sample generates C4356: +The following example generates C4356: ```cpp // C4356.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4316.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4316.md index e7cf25cf3be..285cfda61db 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4316.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4316.md @@ -16,7 +16,7 @@ An over-aligned object allocated by using `operator new` may not have the specif ## Example -The following sample generates C4316: +The following example generates C4316: ```cpp // C4316.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4334.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4334.md index 4f5458b77ee..6ddba51b9d4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4334.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4334.md @@ -16,7 +16,7 @@ The result of 32-bit shift was converted to 64-bit, and the compiler suspects th ## Example -The following sample generates C4334. +The following example generates C4334. ```cpp // C4334.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4357.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4357.md index 21d60d90abe..bed43ed79fd 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4357.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4357.md @@ -16,7 +16,7 @@ The `ParamArray` attribute was ignored, and `function` cannot be called with var ## Example -The following sample generates C4357: +The following example generates C4357: ```cpp // C4357.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4359.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4359.md index 2f23ada186c..591fcb5ecec 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4359.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4359.md @@ -15,7 +15,7 @@ The alignment specified for a type is less than the alignment of the type of one ## Example -The following sample generates C4359. +The following example generates C4359. ```cpp // C4359.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4336.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4336.md index c20fe09957d..61ac385aeb2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4336.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4336.md @@ -47,7 +47,7 @@ library C4336bLib }; ``` -The following sample generates C4336: +The following example generates C4336: ```cpp // C4336.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4337.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4337.md index c0965a2c79d..852e85d8967 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4337.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4337.md @@ -55,7 +55,7 @@ library C4337bLib }; ``` -The following sample generates C4337: +The following example generates C4337: ```cpp // C4337.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4339.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4339.md index 5d6d32b7b81..3b42c4f639a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4339.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4339.md @@ -17,7 +17,7 @@ This warning is off by default. For more information, see [Compiler Warnings Tha ## Example -The following sample generates C4339 and shows how to fix it: +The following example generates C4339 and shows how to fix it: ```cpp // C4339.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4343.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4343.md index ce065c88551..a44259783f0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4343.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4343.md @@ -16,7 +16,7 @@ This warning, only valid in the Itanium Processor Family (IPF) compiler, reports ## Example -The following sample generates C4343: +The following example generates C4343: ```cpp // C4343.cpp From f5607c878efbb56772cdf0934c788b4b63582966 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Thu, 28 Aug 2025 23:39:40 +0800 Subject: [PATCH 1647/2255] Update metadata for warning references in range [C4311, C4360] --- .../compiler-warnings/compiler-warning-level-1-c4311.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4312.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4313.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4319.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4325.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4326.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4329.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4333.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4340.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4342.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4344.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4346.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4348.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4350.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4358.md | 5 ++--- .../compiler-warnings/compiler-warning-level-2-c4356.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4316.md | 3 +-- .../compiler-warnings/compiler-warning-level-3-c4334.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4357.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4359.md | 4 ++-- .../compiler-warnings/compiler-warning-level-4-c4336.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4337.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4339.md | 4 ++-- .../compiler-warnings/compiler-warning-level-4-c4343.md | 5 ++--- 24 files changed, 47 insertions(+), 68 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4311.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4311.md index 9cd9779fa7a..f27b08010af 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4311.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4311.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4311" title: "Compiler Warning (level 1) C4311" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4311" +ms.date: 11/04/2016 f1_keywords: ["C4311"] helpviewer_keywords: ["C4311"] -ms.assetid: ddc579d0-d051-47bc-915d-71ffb32323c9 --- # Compiler Warning (level 1) C4311 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4312.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4312.md index 653ee40d387..4cbe2bf10b6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4312.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4312.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4312" title: "Compiler Warning (level 1) C4312" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4312" +ms.date: 11/04/2016 f1_keywords: ["C4312"] helpviewer_keywords: ["C4312"] -ms.assetid: 541906ed-4f62-4bcb-947f-cf9ae7411bcb --- # Compiler Warning (level 1) C4312 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4313.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4313.md index 30f4c289a17..64050afef86 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4313.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4313.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4313" title: "Compiler Warning (level 1) C4313" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4313" +ms.date: 11/04/2016 f1_keywords: ["C4313"] helpviewer_keywords: ["C4313"] -ms.assetid: bcf64191-e2cf-452e-97b4-423fcec2d07c --- # Compiler Warning (level 1) C4313 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4319.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4319.md index 6c5688f28b4..486da6781bd 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4319.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4319.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4319" title: "Compiler Warning (level 1) C4319" -ms.date: "01/18/2018" +description: "Learn more about: Compiler Warning (level 1) C4319" +ms.date: 01/18/2018 f1_keywords: ["C4319"] helpviewer_keywords: ["C4319"] -ms.assetid: 1fac8048-9bd6-4552-a21c-192c67772bb9 --- # Compiler Warning (level 1) C4319 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4325.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4325.md index de272173fec..7ac44c2fca2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4325.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4325.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4325" title: "Compiler Warning (level 1) C4325" -ms.date: "08/27/2018" +description: "Learn more about: Compiler Warning (level 1) C4325" +ms.date: 08/27/2018 f1_keywords: ["C4325"] helpviewer_keywords: ["C4325"] -ms.assetid: 8127a08c-d626-481b-aa7b-04a3fdc9a9ec --- # Compiler Warning (level 1) C4325 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4326.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4326.md index fe0ccfe4e0e..53d3f74109a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4326.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4326.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4326" title: "Compiler Warning (level 1) C4326" -ms.date: "08/27/2018" +description: "Learn more about: Compiler Warning (level 1) C4326" +ms.date: 08/27/2018 f1_keywords: ["C4326"] helpviewer_keywords: ["C4326"] -ms.assetid: d44d2c4e-9456-42d3-b35b-4ba4b2d42ec7 --- # Compiler Warning (level 1) C4326 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4329.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4329.md index 522fc17b270..63d963b4898 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4329.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4329.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4329" title: "Compiler Warning (level 1) C4329" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4329" +ms.date: 11/04/2016 f1_keywords: ["C4329"] helpviewer_keywords: ["C4329"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4333.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4333.md index c1c88909f95..7f2ed906c9a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4333.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4333.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4333" title: "Compiler Warning (level 1) C4333" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4333" +ms.date: 11/04/2016 f1_keywords: ["C4333"] helpviewer_keywords: ["C4333"] -ms.assetid: d3763c52-6110-4da0-84db-5264e3f3f166 --- # Compiler Warning (level 1) C4333 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4340.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4340.md index 8f5f3e5c898..004d0d3c45f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4340.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4340.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4340" title: "Compiler Warning (level 1) C4340" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4340" +ms.date: 11/04/2016 f1_keywords: ["C4340"] helpviewer_keywords: ["C4340"] -ms.assetid: ddd5344b-5167-4c55-a318-20615052fd54 --- # Compiler Warning (level 1) C4340 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4342.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4342.md index 9390d92da3e..63ce40a82f9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4342.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4342.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4342" title: "Compiler Warning (level 1) C4342" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4342" +ms.date: 11/04/2016 f1_keywords: ["C4342"] helpviewer_keywords: ["C4342"] -ms.assetid: 47d4d5ab-069f-4cdc-98c3-10d649577a37 --- # Compiler Warning (level 1) C4342 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4344.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4344.md index 3e1e32fcf10..49eccaec8b4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4344.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4344.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4344" title: "Compiler Warning (level 1) C4344" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4344" +ms.date: 11/04/2016 f1_keywords: ["C4344"] helpviewer_keywords: ["C4344"] -ms.assetid: cd20859d-f07f-4c70-904b-cb756a53b1ed --- # Compiler Warning (level 1) C4344 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4346.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4346.md index 53811cf1448..568ad7cd845 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4346.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4346.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4346" title: "Compiler Warning (level 1) C4346" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4346" +ms.date: 11/04/2016 f1_keywords: ["C4346"] helpviewer_keywords: ["C4346"] -ms.assetid: 68ee562d-cca9-4a2a-9a1b-14ad1a1e7396 --- # Compiler Warning (level 1) C4346 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4348.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4348.md index 0fb1dd8c08b..e123b095dc9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4348.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4348.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4348" title: "Compiler Warning (level 1) C4348" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4348" +ms.date: 11/04/2016 f1_keywords: ["C4348"] helpviewer_keywords: ["C4348"] -ms.assetid: 816010eb-6079-48d5-a41b-0fc4d67cfe4c --- # Compiler Warning (level 1) C4348 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4350.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4350.md index def1b86a1e6..04e98691df3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4350.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4350.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4350" title: "Compiler Warning (level 1) C4350" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4350" +ms.date: 11/04/2016 f1_keywords: ["C4350"] helpviewer_keywords: ["C4350"] -ms.assetid: 4cc8ed67-64c4-4da5-a7a5-a639232baa23 --- # Compiler Warning (level 1) C4350 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4358.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4358.md index 36ac7abc3af..4c4832aa51b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4358.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4358.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4358" title: "Compiler Warning (level 1) C4358" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4358" +ms.date: 11/04/2016 f1_keywords: ["C4358"] helpviewer_keywords: ["C4358"] -ms.assetid: a9848f84-14b3-405e-81bf-ee3e91a51511 --- # Compiler Warning (level 1) C4358 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4356.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4356.md index 99ab15ae84d..1b77d903071 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4356.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4356.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 2) C4356" title: "Compiler Warning (level 2) C4356" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 2) C4356" +ms.date: 11/04/2016 f1_keywords: ["C4356"] helpviewer_keywords: ["C4356"] -ms.assetid: 3af3defe-de33-43b6-bd6c-2c2e09e34f3f --- # Compiler Warning (level 2) C4356 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4316.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4316.md index 285cfda61db..984e7f71f21 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4316.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4316.md @@ -1,10 +1,9 @@ --- title: "Compiler Warning (level 3) C4316" description: "Description of C++ compiler warning C4316" -ms.date: "11/04/2016" +ms.date: 11/04/2016 f1_keywords: ["C4316"] helpviewer_keywords: ["C4316"] -ms.assetid: 10371f01-aeb8-40ac-a290-59e63efa5ad4 --- # Compiler Warning (level 3) C4316 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4334.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4334.md index 6ddba51b9d4..6c410d831f7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4334.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4334.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4334" title: "Compiler Warning (level 3) C4334" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4334" +ms.date: 11/04/2016 f1_keywords: ["C4334"] helpviewer_keywords: ["C4334"] -ms.assetid: d845857f-bc95-4faf-a079-626a0cf935ba --- # Compiler Warning (level 3) C4334 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4357.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4357.md index bed43ed79fd..6e2208ff1fb 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4357.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4357.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4357" title: "Compiler Warning (level 3) C4357" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4357" +ms.date: 11/04/2016 f1_keywords: ["C4357"] helpviewer_keywords: ["C4357"] -ms.assetid: 9259c633-3c02-4900-b94a-2d8d366d61cd --- # Compiler Warning (level 3) C4357 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4359.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4359.md index 591fcb5ecec..7058b2598e2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4359.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4359.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 1 and level 3) C4359" title: "Compiler Warning (level 1 and level 3) C4359" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1 and level 3) C4359" +ms.date: 11/04/2016 f1_keywords: ["C4359"] helpviewer_keywords: ["C4359"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4336.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4336.md index 61ac385aeb2..2506a4b3f12 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4336.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4336.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4336" title: "Compiler Warning (level 4) C4336" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4336" +ms.date: 11/04/2016 f1_keywords: ["C4336"] helpviewer_keywords: ["C4336"] -ms.assetid: 93f199dd-d6dd-42c0-82d8-c12d101a7235 --- # Compiler Warning (level 4) C4336 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4337.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4337.md index 852e85d8967..6d7bd6bc2d7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4337.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4337.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4337" title: "Compiler Warning (level 4) C4337" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4337" +ms.date: 11/04/2016 f1_keywords: ["C4337"] helpviewer_keywords: ["C4337"] -ms.assetid: 70bc72d9-aac5-45cd-abd3-ebe42a05897b --- # Compiler Warning (level 4) C4337 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4339.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4339.md index 3b42c4f639a..5b6c4e3b290 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4339.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4339.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 4, off) C4339" title: "Compiler Warning (level 4, off) C4339" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4, off) C4339" +ms.date: 11/04/2016 f1_keywords: ["C4339"] helpviewer_keywords: ["C4339"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4343.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4343.md index a44259783f0..675978f9976 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4343.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4343.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4343" title: "Compiler Warning (level 4) C4343" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4343" +ms.date: 11/04/2016 f1_keywords: ["C4343"] helpviewer_keywords: ["C4343"] -ms.assetid: a721b710-e04f-4d15-b678-e4a2c8fd0181 --- # Compiler Warning (level 4) C4343 From 407ad80d0121dd49f90b48fde719161916c42595 Mon Sep 17 00:00:00 2001 From: Carson Radtke Date: Thu, 28 Aug 2025 09:45:18 -0600 Subject: [PATCH 1648/2255] code analysis: improvements to c6064 MORSE recently asked us to improve documentation for C6064 specifically asking us to go into detail explaining why this warning is cause for concern. This change explictly outlines possible outcomes of ignoring this warning. --- docs/code-quality/c6064.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/code-quality/c6064.md b/docs/code-quality/c6064.md index 645f77ff241..fe97e65dea7 100644 --- a/docs/code-quality/c6064.md +++ b/docs/code-quality/c6064.md @@ -13,7 +13,7 @@ This warning indicates that the code doesn't provide enough arguments to match a ## Remarks -This defect is likely to cause incorrect output and, in more dangerous cases, can lead to stack overflow. +Supplying too few arguments to a format function leads to undefined behavior, because the function attempts to read values that were never passed. Possible consequences include incorrect output, crashes, or even security vulnerabilities such as information leaks. To ensure stability and safety, always match the number and types of arguments to the format specifiers in the string. Code analysis name: `MISSING_INTEGER_ARGUMENT_TO_FORMAT_FUNCTION` From b39e50877a949c56c4b61e1d46f2dbf7308f6c18 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Fri, 29 Aug 2025 23:12:06 +0800 Subject: [PATCH 1649/2255] Add blockquotes for warning messages in range [C4361, C4400] --- .../compiler-warnings/compiler-warning-level-1-c4364.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4369.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4374.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4375.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4376.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4377.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4378.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4379.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4381.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4383.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4391.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4393.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4395.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4397.md | 2 +- .../compiler-warnings/compiler-warning-level-2-c4396.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4390.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4366.md | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4364.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4364.md index 3b84470325b..7e82f3a23b8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4364.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4364.md @@ -8,7 +8,7 @@ ms.assetid: 1477634c-d60f-4570-ad16-1aaeae24ac7f --- # Compiler Warning (level 1) C4364 -\#using for assembly 'file' previously seen at location(line_number) without as_friend attribute; as_friend not applied +> #using for assembly 'file' previously seen at location(line_number) without as_friend attribute; as_friend not applied A `#using` directive was repeated for a given metadata file, but the **`as_friend`** qualifier was not used in the first occurrence; the compiler will ignore the second **`as_friend`**. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4369.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4369.md index d3d741d7755..0825c5596f1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4369.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4369.md @@ -8,7 +8,7 @@ ms.assetid: ade87e84-36be-4e00-be99-2930af848feb --- # Compiler Warning (level 1) C4369 -'enumerator' : enumerator value 'value' cannot be represented as 'type', value is 'new_value' +> 'enumerator' : enumerator value 'value' cannot be represented as 'type', value is 'new_value' An enumerator was calculated to be greater than the greatest value for the specified underlying type. This caused an overflow and the compiler wrapped the enumerator value to the lowest possible value for the type. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4374.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4374.md index 836a46f41a8..279a7341c7f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4374.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4374.md @@ -8,7 +8,7 @@ ms.assetid: 4ac9aaec-d815-4b6e-825f-fa872092dd3b --- # Compiler Warning (level 1) C4374 -'function1': interface method will not be implemented by non-virtual method 'function2' +> 'function1': interface method will not be implemented by non-virtual method 'function2' The compiler expected to find the [virtual](../../cpp/virtual-specifier.md) keyword on a method definition. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4375.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4375.md index ccd68495cc6..0533ec63b75 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4375.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4375.md @@ -8,6 +8,6 @@ ms.assetid: a19821b5-e9b6-4228-abe7-d812507d6a2a --- # Compiler Warning (level 1) C4375 -non-public method 'method2' does not override 'method1' +> non-public method 'method2' does not override 'method1' A type that implements another type defined an override method, but the override was not public. Therefore, the method does not override the base type method. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4376.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4376.md index fd0d5d27dde..5b3a8c297ec 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4376.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4376.md @@ -8,7 +8,7 @@ ms.assetid: 5f202c74-9489-48fe-b36f-19cd882b1589 --- # Compiler Warning (level 1) C4376 -access specifier 'old_specifier:' is no longer supported: please use 'new_specifier:' instead +> access specifier 'old_specifier:' is no longer supported: please use 'new_specifier:' instead For more information on specifying type and member accessibility in metadata, see [Type visibility](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Type_visibility) and [Member visibility](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Member_visibility) in [How to: Define and Consume Classes and Structs (C++/CLI)](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4377.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4377.md index 2c5b708fa07..cc898797883 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4377.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4377.md @@ -8,7 +8,7 @@ ms.assetid: a1c797b8-cd5e-4a56-b430-d07932e811cf --- # Compiler Warning (level 1) C4377 -native types are private by default; -d1PrivateNativeTypes is deprecated +> native types are private by default; -d1PrivateNativeTypes is deprecated In previous releases, native types in assemblies were public by default, and an internal, undocumented compiler option (**/d1PrivateNativeTypes**) was used to make them private. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4378.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4378.md index d46842152e7..59fe1f2c2cc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4378.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4378.md @@ -8,7 +8,7 @@ ms.assetid: d08e11ef-891a-4752-9a5e-360e7394acf7 --- # Compiler Warning (level 1) C4378 -Must obtain function pointers to run initializers; consider System::ModuleHandle::ResolveMethodHandle +> Must obtain function pointers to run initializers; consider System::ModuleHandle::ResolveMethodHandle Under **/clr**, initializer symbols contain function tokens, not functions pointers. You need to convert tokens to pointers using . diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4379.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4379.md index 8f56e1419a0..b7f225d55cf 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4379.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4379.md @@ -8,6 +8,6 @@ ms.assetid: b23e8132-69aa-4649-9c1e-09813b9fb5b7 --- # Compiler Warning (level 1) C4379 -Version version of the common language runtime is not supported by this compiler. Using this version may cause unexpected results. +> Version version of the common language runtime is not supported by this compiler. Using this version may cause unexpected results. You have a previous version of the common language runtime on your machine, but not the current version. To resolve C4379, install the version of the common language runtime that shipped with your compiler. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4381.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4381.md index 29e6cc6ddcc..9b030b19804 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4381.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4381.md @@ -8,6 +8,6 @@ ms.assetid: f67a6db3-b334-4b2e-8182-b30c7a3c7c32 --- # Compiler Warning (level 1) C4381 -'function1': interface method will not be implemented by non-public method 'function2' +> 'function1': interface method will not be implemented by non-public method 'function2' A class must implement all function in an interface. A class can satisfy this condition if one of its base classes implements the function. However, the function must be implemented as a public function. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4383.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4383.md index bd6efac7c97..4b5af6d3732 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4383.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4383.md @@ -8,7 +8,7 @@ ms.assetid: 96c0e52d-874e-4b57-a154-0e49b6a00fae --- # Compiler Warning (level 1) C4383 -'instance_dereference_operator' : the meaning of dereferencing a handle can change, when a user-defined 'operator' operator exists; write the operator as a static function to be explicit about the operand +> 'instance_dereference_operator' : the meaning of dereferencing a handle can change, when a user-defined 'operator' operator exists; write the operator as a static function to be explicit about the operand When you add a user-defined instance override of the dereference operator in a managed type, you potentially override the ability of the type's dereference operator to return the handle's object. Consider writing a static, user-defined dereference operator. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4391.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4391.md index be45ba9d293..b3a69caec8b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4391.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4391.md @@ -8,7 +8,7 @@ ms.assetid: 95c6182c-fae9-4174-8f7b-98aa352e68ca --- # Compiler Warning (level 1) C4391 -'signature' : incorrect return type for intrinsic function, expected 'type' +> 'signature' : incorrect return type for intrinsic function, expected 'type' A function declaration for a compiler intrinsic had the wrong return type. The resulting image may not run correctly. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4393.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4393.md index 2e0d6b6e8e9..8fc7edb9d6e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4393.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4393.md @@ -8,7 +8,7 @@ ms.assetid: 353a0539-d1ea-4c1b-8849-c9b321ec9842 --- # Compiler Warning (level 1) C4393 -'var' : const has no effect on literal data member; ignored +> 'var' : const has no effect on literal data member; ignored A [literal](../../extensions/literal-cpp-component-extensions.md) data member was also specified as const. Since a literal data member implies const, you do not need to add const to the declaration. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4395.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4395.md index 98523b30ba7..d33a3d07abc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4395.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4395.md @@ -8,7 +8,7 @@ ms.assetid: 8051469a-3a39-4677-80f7-1300fbffe8ea --- # Compiler Warning (level 1) C4395 -'function' : member function will be invoked on a copy of the initonly data member 'member' +> 'function' : member function will be invoked on a copy of the initonly data member 'member' A member function was called on an [initonly (C++/CLI)](../../dotnet/initonly-cpp-cli.md) data member. C4395 warns that the **initonly** data member cannot be modified by the function. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4397.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4397.md index f957af30e6f..a7b491c41e6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4397.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4397.md @@ -8,7 +8,7 @@ ms.assetid: 6346fdc2-dbbf-4fba-803a-32b0d0a707be --- # Compiler Warning (level 1) C4397 -DefaultCharSetAttribute is ignored +> DefaultCharSetAttribute is ignored is ignored by the Microsoft C++ compiler. To specify a character set for the DLL, use the CharSet option of DllImport. For more information, see [Using C++ Interop (Implicit PInvoke)](../../dotnet/using-cpp-interop-implicit-pinvoke.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4396.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4396.md index e4306463bc4..d5bd5d97f67 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4396.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4396.md @@ -8,7 +8,7 @@ ms.assetid: 7cd6b283-db17-4574-b299-03e0b913ad70 --- # Compiler Warning (level 2) C4396 -"name" : the inline specifier cannot be used when a friend declaration refers to a specialization of a function template +> "name" : the inline specifier cannot be used when a friend declaration refers to a specialization of a function template A specialization of a function template cannot specify any of the [inline](../../cpp/inline-functions-cpp.md) specifiers. The compiler issues warning C4396 and ignores the inline specifier. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4390.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4390.md index 813df6cac74..489254df5f0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4390.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4390.md @@ -8,7 +8,7 @@ ms.assetid: c95c2f1b-9bce-4b1f-a80c-565d4cde0b1e --- # Compiler Warning (level 3) C4390 -';' : empty controlled statement found; is this the intent? +> ';' : empty controlled statement found; is this the intent? A semicolon was found after a control statement that contains no instructions. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4366.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4366.md index 8ffd8a63f5d..7396113555b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4366.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4366.md @@ -8,7 +8,7 @@ ms.assetid: 65d2942f-3741-42f4-adf2-4920d5a055ca --- # Compiler Warning (level 4) C4366 -The result of the unary 'operator' operator may be unaligned +> The result of the unary 'operator' operator may be unaligned If a structure member could ever be unaligned because of packing, the compiler will warn when that member's address is assigned to an aligned pointer. By default, all pointers are aligned. From 0d7369083798e232c2f58490fbd7a4abf9a6ea47 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Fri, 29 Aug 2025 23:19:16 +0800 Subject: [PATCH 1650/2255] Add "Remarks" and "Example" headings for warning references in range [C4361, C4400] --- docs/error-messages/compiler-warnings/c4371.md | 2 ++ docs/error-messages/compiler-warnings/c4388.md | 4 ++-- .../compiler-warnings/compiler-warning-c4368.md | 2 ++ .../compiler-warnings/compiler-warning-c4394.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4364.md | 4 +++- .../compiler-warnings/compiler-warning-level-1-c4369.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4374.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4375.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4376.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4377.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4378.md | 4 +++- .../compiler-warnings/compiler-warning-level-1-c4379.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4381.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4383.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4384.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4391.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4392.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4393.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4395.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4397.md | 2 ++ .../compiler-warnings/compiler-warning-level-2-c4396.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4390.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4365.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4366.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4389.md | 4 ++-- .../compiler-warnings/compiler-warning-level-4-c4400.md | 2 ++ 26 files changed, 66 insertions(+), 6 deletions(-) diff --git a/docs/error-messages/compiler-warnings/c4371.md b/docs/error-messages/compiler-warnings/c4371.md index aed32ad81b3..a10de784703 100644 --- a/docs/error-messages/compiler-warnings/c4371.md +++ b/docs/error-messages/compiler-warnings/c4371.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4371"] > '*classname*': layout of class may have changed from a previous version of the compiler due to better packing of member '*member*' +## Remarks + Warning C4371 tells you that the layout created by the current compiler may be different from the layout generated by previous versions of the compiler. This difference may be significant for serialization operations or operating system interfaces that rely on a particular memory layout. In most other cases, this warning is safe to ignore. Warning C4371 is off by default. For more information, see [Compiler Warnings That Are Off By Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). diff --git a/docs/error-messages/compiler-warnings/c4388.md b/docs/error-messages/compiler-warnings/c4388.md index ee8b36db8d8..a94caa074b9 100644 --- a/docs/error-messages/compiler-warnings/c4388.md +++ b/docs/error-messages/compiler-warnings/c4388.md @@ -9,10 +9,10 @@ helpviewer_keywords: ["C4388"] > '*token*' : signed/unsigned mismatch -Using the *token* operator to compare a **`signed`** and a larger **`unsigned`** number required the compiler to convert the **`signed`** value to the larger **`unsigned`** type. - ## Remarks +Using the *token* operator to compare a **`signed`** and a larger **`unsigned`** number required the compiler to convert the **`signed`** value to the larger **`unsigned`** type. + One way to fix this warning is if you cast one of the two types when you compare **`signed`** and larger **`unsigned`** types. This warning is off by default. You can use [/Wall](../../build/reference/compiler-option-warning-level.md) or **`/w44388`** to enable it on the command line as a level 4 warning. Or, use [`#pragma warning(default:4388)`](../../preprocessor/warning.md) in your source file. For more information, see [Compiler warnings that are off by default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4368.md b/docs/error-messages/compiler-warnings/compiler-warning-c4368.md index 0d5f9305326..c5c6af24bd1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4368.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4368.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4368"] > cannot define 'member' as a member of managed 'type': mixed types are not supported +## Remarks + You can't embed a native data member in a managed type. You can, however, declare a pointer to a native type and control its lifetime in the constructor and destructor and finalizer of your managed class. For more information, see [Destructors and finalizers](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Destructors_and_finalizers). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4394.md b/docs/error-messages/compiler-warnings/compiler-warning-c4394.md index d49d391ea0b..1a2ce548a24 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4394.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4394.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4394"] > 'function' : per-appdomain symbol should not be marked with __declspec(dllexport) +## Remarks + A function marked with the [appdomain](../../cpp/appdomain.md) **`__declspec`** modifier is compiled to MSIL (not native), and export tables ([export](../../windows/attributes/export.md) **`__declspec`** modifier) aren't supported for managed functions. You can declare a managed function to have public accessibility. For more information, see [Type visibility](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Type_visibility) and [Member visibility](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Member_visibility). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4364.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4364.md index 7e82f3a23b8..d56101ce1b6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4364.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4364.md @@ -10,11 +10,13 @@ ms.assetid: 1477634c-d60f-4570-ad16-1aaeae24ac7f > #using for assembly 'file' previously seen at location(line_number) without as_friend attribute; as_friend not applied +## Remarks + A `#using` directive was repeated for a given metadata file, but the **`as_friend`** qualifier was not used in the first occurrence; the compiler will ignore the second **`as_friend`**. For more information, see [Friend Assemblies (C++)](../../dotnet/friend-assemblies-cpp.md). -## Examples +## Example The following sample creates a component. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4369.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4369.md index 0825c5596f1..3b268fc76a5 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4369.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4369.md @@ -10,6 +10,8 @@ ms.assetid: ade87e84-36be-4e00-be99-2930af848feb > 'enumerator' : enumerator value 'value' cannot be represented as 'type', value is 'new_value' +## Remarks + An enumerator was calculated to be greater than the greatest value for the specified underlying type. This caused an overflow and the compiler wrapped the enumerator value to the lowest possible value for the type. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4374.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4374.md index 279a7341c7f..6567f8f9ec7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4374.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4374.md @@ -10,8 +10,12 @@ ms.assetid: 4ac9aaec-d815-4b6e-825f-fa872092dd3b > 'function1': interface method will not be implemented by non-virtual method 'function2' +## Remarks + The compiler expected to find the [virtual](../../cpp/virtual-specifier.md) keyword on a method definition. +## Example + The following sample generates C4374: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4375.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4375.md index 0533ec63b75..cd21ad3c795 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4375.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4375.md @@ -10,4 +10,6 @@ ms.assetid: a19821b5-e9b6-4228-abe7-d812507d6a2a > non-public method 'method2' does not override 'method1' +## Remarks + A type that implements another type defined an override method, but the override was not public. Therefore, the method does not override the base type method. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4376.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4376.md index 5b3a8c297ec..a4353b2239f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4376.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4376.md @@ -10,6 +10,8 @@ ms.assetid: 5f202c74-9489-48fe-b36f-19cd882b1589 > access specifier 'old_specifier:' is no longer supported: please use 'new_specifier:' instead +## Remarks + For more information on specifying type and member accessibility in metadata, see [Type visibility](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Type_visibility) and [Member visibility](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Member_visibility) in [How to: Define and Consume Classes and Structs (C++/CLI)](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md). ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4377.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4377.md index cc898797883..8547e4a44a3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4377.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4377.md @@ -10,6 +10,8 @@ ms.assetid: a1c797b8-cd5e-4a56-b430-d07932e811cf > native types are private by default; -d1PrivateNativeTypes is deprecated +## Remarks + In previous releases, native types in assemblies were public by default, and an internal, undocumented compiler option (**/d1PrivateNativeTypes**) was used to make them private. All types, native and CLR, are now private by default in an assembly, so **/d1PrivateNativeTypes** is no longer needed. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4378.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4378.md index 59fe1f2c2cc..4e0e0ab428a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4378.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4378.md @@ -10,9 +10,11 @@ ms.assetid: d08e11ef-891a-4752-9a5e-360e7394acf7 > Must obtain function pointers to run initializers; consider System::ModuleHandle::ResolveMethodHandle +## Remarks + Under **/clr**, initializer symbols contain function tokens, not functions pointers. You need to convert tokens to pointers using . -## Examples +## Example The following sample generates C4378. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4379.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4379.md index b7f225d55cf..73d527558fa 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4379.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4379.md @@ -10,4 +10,6 @@ ms.assetid: b23e8132-69aa-4649-9c1e-09813b9fb5b7 > Version version of the common language runtime is not supported by this compiler. Using this version may cause unexpected results. +## Remarks + You have a previous version of the common language runtime on your machine, but not the current version. To resolve C4379, install the version of the common language runtime that shipped with your compiler. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4381.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4381.md index 9b030b19804..1b64fc30c0b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4381.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4381.md @@ -10,4 +10,6 @@ ms.assetid: f67a6db3-b334-4b2e-8182-b30c7a3c7c32 > 'function1': interface method will not be implemented by non-public method 'function2' +## Remarks + A class must implement all function in an interface. A class can satisfy this condition if one of its base classes implements the function. However, the function must be implemented as a public function. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4383.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4383.md index 4b5af6d3732..a6f140360fd 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4383.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4383.md @@ -10,6 +10,8 @@ ms.assetid: 96c0e52d-874e-4b57-a154-0e49b6a00fae > 'instance_dereference_operator' : the meaning of dereferencing a handle can change, when a user-defined 'operator' operator exists; write the operator as a static function to be explicit about the operand +## Remarks + When you add a user-defined instance override of the dereference operator in a managed type, you potentially override the ability of the type's dereference operator to return the handle's object. Consider writing a static, user-defined dereference operator. For more information, see [Handle to Object Operator (^)](../../extensions/handle-to-object-operator-hat-cpp-component-extensions.md) and [Tracking Reference Operator](../../extensions/tracking-reference-operator-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4384.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4384.md index ee4ea781781..3229c928cef 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4384.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4384.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4384"] > `#pragma` '*pragma_name*' should only be used at global scope +## Remarks + A `pragma` directive that must be applied at a global scope, was found in a different scope. The warning applies to the following `pragma` directives: diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4391.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4391.md index b3a69caec8b..649585a6082 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4391.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4391.md @@ -10,10 +10,14 @@ ms.assetid: 95c6182c-fae9-4174-8f7b-98aa352e68ca > 'signature' : incorrect return type for intrinsic function, expected 'type' +## Remarks + A function declaration for a compiler intrinsic had the wrong return type. The resulting image may not run correctly. To fix this warning, either correct the declaration or delete the declaration and simply #include the appropriate header file. +## Example + The following sample generates C4391: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4392.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4392.md index 79d7ebd0205..6d8157aefa5 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4392.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4392.md @@ -9,10 +9,14 @@ helpviewer_keywords: ["C4392"] > 'signature' : incorrect number of arguments for intrinsic function, expected 'number' arguments +## Remarks + A function declaration for a compiler intrinsic had the wrong number of arguments. The resulting image may not run correctly. To fix this warning, either correct the declaration or delete the declaration and `#include` the appropriate header file. This warning is always issued as an error. Use the [warning](../../preprocessor/warning.md) pragma to disable or change the warning level. +## Example + The following sample generates C4392: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4393.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4393.md index 8fc7edb9d6e..7d8cd7f7077 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4393.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4393.md @@ -10,8 +10,12 @@ ms.assetid: 353a0539-d1ea-4c1b-8849-c9b321ec9842 > 'var' : const has no effect on literal data member; ignored +## Remarks + A [literal](../../extensions/literal-cpp-component-extensions.md) data member was also specified as const. Since a literal data member implies const, you do not need to add const to the declaration. +## Example + The following sample generates C4393: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4395.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4395.md index d33a3d07abc..aa1ae16d234 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4395.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4395.md @@ -10,8 +10,12 @@ ms.assetid: 8051469a-3a39-4677-80f7-1300fbffe8ea > 'function' : member function will be invoked on a copy of the initonly data member 'member' +## Remarks + A member function was called on an [initonly (C++/CLI)](../../dotnet/initonly-cpp-cli.md) data member. C4395 warns that the **initonly** data member cannot be modified by the function. +## Example + The following sample generates C4395: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4397.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4397.md index a7b491c41e6..2c25535f934 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4397.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4397.md @@ -10,6 +10,8 @@ ms.assetid: 6346fdc2-dbbf-4fba-803a-32b0d0a707be > DefaultCharSetAttribute is ignored +## Remarks + is ignored by the Microsoft C++ compiler. To specify a character set for the DLL, use the CharSet option of DllImport. For more information, see [Using C++ Interop (Implicit PInvoke)](../../dotnet/using-cpp-interop-implicit-pinvoke.md). ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4396.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4396.md index d5bd5d97f67..c5f00c6b359 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4396.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4396.md @@ -10,6 +10,8 @@ ms.assetid: 7cd6b283-db17-4574-b299-03e0b913ad70 > "name" : the inline specifier cannot be used when a friend declaration refers to a specialization of a function template +## Remarks + A specialization of a function template cannot specify any of the [inline](../../cpp/inline-functions-cpp.md) specifiers. The compiler issues warning C4396 and ignores the inline specifier. ### To correct this error diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4390.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4390.md index 489254df5f0..c9240afdb9f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4390.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4390.md @@ -10,10 +10,14 @@ ms.assetid: c95c2f1b-9bce-4b1f-a80c-565d4cde0b1e > ';' : empty controlled statement found; is this the intent? +## Remarks + A semicolon was found after a control statement that contains no instructions. If you get C4390 because of a macro, you should use the [warning](../../preprocessor/warning.md) pragma to disable C4390 in the module containing the macro. +## Example + The following sample generates C4390: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4365.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4365.md index d26dec6ad77..eb187d31788 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4365.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4365.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4365"] > 'action' : conversion from 'type_1' to 'type_2', signed/unsigned mismatch +## Remarks + For example, you tried to convert an unsigned value to a signed value. This pattern can cause unexpected results when the source value at runtime in not in the range of the destination type. Such as a negative value being converted into a signed value. C4365 is off by default. For more information, see [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4366.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4366.md index 7396113555b..2afebc273df 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4366.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4366.md @@ -10,6 +10,8 @@ ms.assetid: 65d2942f-3741-42f4-adf2-4920d5a055ca > The result of the unary 'operator' operator may be unaligned +## Remarks + If a structure member could ever be unaligned because of packing, the compiler will warn when that member's address is assigned to an aligned pointer. By default, all pointers are aligned. To resolve C4366, either change the alignment of the structure or declare the pointer with the [__unaligned](../../cpp/unaligned.md) keyword. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4389.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4389.md index ce2dce28c34..06aa65821bd 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4389.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4389.md @@ -9,10 +9,10 @@ helpviewer_keywords: ["C4389"] > '*equality-operator*' : signed/unsigned mismatch -An **`==`** or **`!=`** operation involved **`signed`** and **`unsigned`** variables. This could result in a loss of data. - ## Remarks +An **`==`** or **`!=`** operation involved **`signed`** and **`unsigned`** variables. This could result in a loss of data. + One way to fix this warning is if you cast one of the two types when you compare **`signed`** and **`unsigned`** types. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4400.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4400.md index a97330018c7..848bb62c756 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4400.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4400.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4400"] > '*type*': `const`/`volatile` qualifiers on this type are not supported +## Remarks + The [`const`](../../cpp/const-cpp.md) and [`volatile`](../../cpp/volatile-cpp.md) qualifiers don't work with common language runtime typed variables. ## Example From da5a0fe8adece35ad60b93456acb780153a8d622 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Fri, 29 Aug 2025 23:21:00 +0800 Subject: [PATCH 1651/2255] Replace term "sample" with "example" for warning references in range [C4361, C4400] --- docs/error-messages/compiler-warnings/c4388.md | 2 +- .../compiler-warnings/compiler-warning-c4368.md | 2 +- .../compiler-warnings/compiler-warning-c4394.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4364.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4369.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4374.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4376.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4377.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4378.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4382.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4383.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4384.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4391.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4392.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4393.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4395.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4397.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4399.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4390.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4398.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4365.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4366.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4389.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4400.md | 2 +- 24 files changed, 26 insertions(+), 26 deletions(-) diff --git a/docs/error-messages/compiler-warnings/c4388.md b/docs/error-messages/compiler-warnings/c4388.md index a94caa074b9..5f4c698f08e 100644 --- a/docs/error-messages/compiler-warnings/c4388.md +++ b/docs/error-messages/compiler-warnings/c4388.md @@ -19,7 +19,7 @@ This warning is off by default. You can use [/Wall](../../build/reference/compil ## Example -This sample generates C4388 and shows how to fix it: +This example generates C4388 and shows how to fix it: ```cpp // C4388.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4368.md b/docs/error-messages/compiler-warnings/compiler-warning-c4368.md index c5c6af24bd1..3625d3ee7c4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4368.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4368.md @@ -19,7 +19,7 @@ This warning is always issued as an error. Use the [warning](../../preprocessor/ ## Example -The following sample generates C4368. +The following example generates C4368. ```cpp // C4368.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4394.md b/docs/error-messages/compiler-warnings/compiler-warning-c4394.md index 1a2ce548a24..867bfd8c1c1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4394.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4394.md @@ -19,7 +19,7 @@ C4394 is always issued as an error. You can turn off this warning or change its ## Example -The following sample generates C4394. +The following example generates C4394. ```cpp // C4394.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4364.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4364.md index d56101ce1b6..43cdf678303 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4364.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4364.md @@ -18,7 +18,7 @@ For more information, see [Friend Assemblies (C++)](../../dotnet/friend-assembli ## Example -The following sample creates a component. +The following example creates a component. ```cpp // C4364.cpp @@ -26,7 +26,7 @@ The following sample creates a component. ref class A {}; ``` -The following sample generates C4364. +The following example generates C4364. ```cpp // C4364_b.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4369.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4369.md index 3b268fc76a5..22243859fa8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4369.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4369.md @@ -16,7 +16,7 @@ An enumerator was calculated to be greater than the greatest value for the speci ## Example -The following sample generates C4369. +The following example generates C4369. ```cpp // C4369.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4374.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4374.md index 6567f8f9ec7..ffea33b92f7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4374.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4374.md @@ -16,7 +16,7 @@ The compiler expected to find the [virtual](../../cpp/virtual-specifier.md) keyw ## Example -The following sample generates C4374: +The following example generates C4374: ```cpp // C4374.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4376.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4376.md index a4353b2239f..0967b4bbb9f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4376.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4376.md @@ -16,7 +16,7 @@ For more information on specifying type and member accessibility in metadata, se ## Example -The following sample generates C4376. +The following example generates C4376. ```cpp // C4376.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4377.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4377.md index 8547e4a44a3..d93e4371ccc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4377.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4377.md @@ -18,7 +18,7 @@ All types, native and CLR, are now private by default in an assembly, so **/d1Pr ## Example -The following sample generates C4377. +The following example generates C4377. ```cpp // C4377.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4378.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4378.md index 4e0e0ab428a..c9bbf93f6c0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4378.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4378.md @@ -16,7 +16,7 @@ Under **/clr**, initializer symbols contain function tokens, not functions point ## Example -The following sample generates C4378. +The following example generates C4378. ```cpp // C4378.cpp @@ -58,7 +58,7 @@ int main () { } ``` -The following sample shows how to resolve C4378. +The following example shows how to resolve C4378. ```cpp // C4378_b.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4382.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4382.md index a0ba7993101..1e1cfe77a5f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4382.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4382.md @@ -22,7 +22,7 @@ For more information, see [/clr (Common Language Runtime Compilation)](../../bui ## Example -The following sample generates C4382. +The following example generates C4382. ```cpp // C4382.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4383.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4383.md index a6f140360fd..cc30437e620 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4383.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4383.md @@ -20,7 +20,7 @@ Also, an instance operator is not available to other language compilers via refe ## Example -The following sample generates C4383. +The following example generates C4383. ```cpp // C4383.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4384.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4384.md index 3229c928cef..fceb62ec78c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4384.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4384.md @@ -20,7 +20,7 @@ The warning applies to the following `pragma` directives: ## Example -The following sample generates C4384. +The following example generates C4384. ```cpp // C4384.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4391.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4391.md index 649585a6082..a3817b8b2ec 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4391.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4391.md @@ -18,7 +18,7 @@ To fix this warning, either correct the declaration or delete the declaration an ## Example -The following sample generates C4391: +The following example generates C4391: ```cpp // C4391.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4392.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4392.md index 6d8157aefa5..1dd595582ea 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4392.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4392.md @@ -17,7 +17,7 @@ This warning is always issued as an error. Use the [warning](../../preprocessor/ ## Example -The following sample generates C4392: +The following example generates C4392: ```cpp // C4392.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4393.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4393.md index 7d8cd7f7077..4b18bfd4699 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4393.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4393.md @@ -16,7 +16,7 @@ A [literal](../../extensions/literal-cpp-component-extensions.md) data member wa ## Example -The following sample generates C4393: +The following example generates C4393: ```cpp // C4393.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4395.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4395.md index aa1ae16d234..efa5dacc7ab 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4395.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4395.md @@ -16,7 +16,7 @@ A member function was called on an [initonly (C++/CLI)](../../dotnet/initonly-cp ## Example -The following sample generates C4395: +The following example generates C4395: ```cpp // C4395.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4397.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4397.md index 2c25535f934..03e71659efa 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4397.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4397.md @@ -16,7 +16,7 @@ ms.assetid: 6346fdc2-dbbf-4fba-803a-32b0d0a707be ## Example -The following sample generates C4397. +The following example generates C4397. ```cpp // C4397.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4399.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4399.md index 39947ec8180..cac1040a6d8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4399.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4399.md @@ -20,7 +20,7 @@ This warning can be issued as an error. Use the [warning](../../preprocessor/war ## Example -The following sample generates C4399. +The following example generates C4399. ```cpp // C4399.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4390.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4390.md index c9240afdb9f..a51f1ea1ecb 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4390.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4390.md @@ -18,7 +18,7 @@ If you get C4390 because of a macro, you should use the [warning](../../preproce ## Example -The following sample generates C4390: +The following example generates C4390: ```cpp // C4390.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4398.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4398.md index 394219283d5..50605bc9561 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4398.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4398.md @@ -20,7 +20,7 @@ For more information, see [appdomain](../../cpp/appdomain.md) and [Application D ## Example -The following sample generates C4398. +The following example generates C4398. ```cpp // C4398.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4365.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4365.md index eb187d31788..40dacf08a34 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4365.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4365.md @@ -17,7 +17,7 @@ C4365 is off by default. For more information, see [Compiler Warnings That Are O ## Example -The following sample generates C4365. +The following example generates C4365. ```cpp // C4365.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4366.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4366.md index 2afebc273df..d618cf7b150 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4366.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4366.md @@ -20,7 +20,7 @@ For more information, see __unaligned and [pack](../../preprocessor/pack.md). ## Example -The following sample generates C4366. +The following example generates C4366. ```cpp // C4366.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4389.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4389.md index 06aa65821bd..0de7bed8b0d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4389.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4389.md @@ -17,7 +17,7 @@ One way to fix this warning is if you cast one of the two types when you compare ## Example -The following sample generates C4389: +The following example generates C4389: ```cpp // C4389.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4400.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4400.md index 848bb62c756..8b5dcb61792 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4400.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4400.md @@ -15,7 +15,7 @@ The [`const`](../../cpp/const-cpp.md) and [`volatile`](../../cpp/volatile-cpp.md ## Example -The following sample generates C4400. +The following example generates C4400. ```cpp // C4400.cpp From 6fddd2dc18a08ec7838a3004c345aa54824238e3 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Fri, 29 Aug 2025 23:25:28 +0800 Subject: [PATCH 1652/2255] Update metadata for warning references in range [C4361, C4400] --- docs/error-messages/compiler-warnings/c4371.md | 4 ++-- .../compiler-warnings/compiler-warning-c4368.md | 4 ++-- .../compiler-warnings/compiler-warning-c4394.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4364.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4369.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4374.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4375.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4376.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4377.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4378.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4379.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4381.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4382.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4383.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4384.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4391.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4392.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4393.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4395.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4397.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4399.md | 5 ++--- .../compiler-warnings/compiler-warning-level-2-c4396.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4390.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4398.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4365.md | 4 ++-- .../compiler-warnings/compiler-warning-level-4-c4366.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4400.md | 4 ++-- 27 files changed, 54 insertions(+), 74 deletions(-) diff --git a/docs/error-messages/compiler-warnings/c4371.md b/docs/error-messages/compiler-warnings/c4371.md index a10de784703..44dfa2efae5 100644 --- a/docs/error-messages/compiler-warnings/c4371.md +++ b/docs/error-messages/compiler-warnings/c4371.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 3, off) C4371" title: "Compiler Warning (level 3, off) C4371" -ms.date: "01/31/2018" +description: "Learn more about: Compiler Warning (level 3, off) C4371" +ms.date: 01/31/2018 f1_keywords: ["C4371"] helpviewer_keywords: ["C4371"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4368.md b/docs/error-messages/compiler-warnings/compiler-warning-c4368.md index 3625d3ee7c4..94a975c3cd8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4368.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4368.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 1, Error) C4368" title: "Compiler Warning (level 1, Error) C4368" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1, Error) C4368" +ms.date: 11/04/2016 f1_keywords: ["C4368"] helpviewer_keywords: ["C4368"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4394.md b/docs/error-messages/compiler-warnings/compiler-warning-c4394.md index 867bfd8c1c1..128be88cbc4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4394.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4394.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 1, Error) C4394" title: "Compiler Warning (level 1, Error) C4394" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1, Error) C4394" +ms.date: 11/04/2016 f1_keywords: ["C4394"] helpviewer_keywords: ["C4394"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4364.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4364.md index 43cdf678303..43cd2ffc11f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4364.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4364.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4364" title: "Compiler Warning (level 1) C4364" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4364" +ms.date: 11/04/2016 f1_keywords: ["C4364"] helpviewer_keywords: ["C4364"] -ms.assetid: 1477634c-d60f-4570-ad16-1aaeae24ac7f --- # Compiler Warning (level 1) C4364 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4369.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4369.md index 22243859fa8..23fc40ea41b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4369.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4369.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4369" title: "Compiler Warning (level 1) C4369" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4369" +ms.date: 11/04/2016 f1_keywords: ["C4369"] helpviewer_keywords: ["C4369"] -ms.assetid: ade87e84-36be-4e00-be99-2930af848feb --- # Compiler Warning (level 1) C4369 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4374.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4374.md index ffea33b92f7..4341cfc2032 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4374.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4374.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4374" title: "Compiler Warning (level 1) C4374" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4374" +ms.date: 11/04/2016 f1_keywords: ["C4374"] helpviewer_keywords: ["C4374"] -ms.assetid: 4ac9aaec-d815-4b6e-825f-fa872092dd3b --- # Compiler Warning (level 1) C4374 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4375.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4375.md index cd21ad3c795..33fe16a7dfc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4375.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4375.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4375" title: "Compiler Warning (level 1) C4375" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4375" +ms.date: 11/04/2016 f1_keywords: ["C4375"] helpviewer_keywords: ["C4375"] -ms.assetid: a19821b5-e9b6-4228-abe7-d812507d6a2a --- # Compiler Warning (level 1) C4375 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4376.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4376.md index 0967b4bbb9f..ad88d8b6893 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4376.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4376.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4376" title: "Compiler Warning (level 1) C4376" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4376" +ms.date: 11/04/2016 f1_keywords: ["C4376"] helpviewer_keywords: ["C4376"] -ms.assetid: 5f202c74-9489-48fe-b36f-19cd882b1589 --- # Compiler Warning (level 1) C4376 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4377.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4377.md index d93e4371ccc..1c326f787a2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4377.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4377.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4377" title: "Compiler Warning (level 1) C4377" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4377" +ms.date: 11/04/2016 f1_keywords: ["C4377"] helpviewer_keywords: ["C4377"] -ms.assetid: a1c797b8-cd5e-4a56-b430-d07932e811cf --- # Compiler Warning (level 1) C4377 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4378.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4378.md index c9bbf93f6c0..2573597b3fc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4378.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4378.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4378" title: "Compiler Warning (level 1) C4378" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4378" +ms.date: 11/04/2016 f1_keywords: ["C4378"] helpviewer_keywords: ["C4378"] -ms.assetid: d08e11ef-891a-4752-9a5e-360e7394acf7 --- # Compiler Warning (level 1) C4378 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4379.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4379.md index 73d527558fa..9ed0d1e208b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4379.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4379.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4379" title: "Compiler Warning (level 1) C4379" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4379" +ms.date: 11/04/2016 f1_keywords: ["C4379"] helpviewer_keywords: ["C4379"] -ms.assetid: b23e8132-69aa-4649-9c1e-09813b9fb5b7 --- # Compiler Warning (level 1) C4379 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4381.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4381.md index 1b64fc30c0b..40eb33d0d75 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4381.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4381.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4381" title: "Compiler Warning (level 1) C4381" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4381" +ms.date: 11/04/2016 f1_keywords: ["C4381"] helpviewer_keywords: ["C4381"] -ms.assetid: f67a6db3-b334-4b2e-8182-b30c7a3c7c32 --- # Compiler Warning (level 1) C4381 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4382.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4382.md index 1e1cfe77a5f..18d02708b01 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4382.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4382.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4382" title: "Compiler Warning (level 1) C4382" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4382" +ms.date: 11/04/2016 f1_keywords: ["C4382"] helpviewer_keywords: ["C4382"] -ms.assetid: 34be9ad3-bae6-411a-8f80-0c8fd0d2c092 --- # Compiler Warning (level 1) C4382 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4383.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4383.md index cc30437e620..77526a9e69a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4383.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4383.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4383" title: "Compiler Warning (level 1) C4383" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4383" +ms.date: 11/04/2016 f1_keywords: ["C4383"] helpviewer_keywords: ["C4383"] -ms.assetid: 96c0e52d-874e-4b57-a154-0e49b6a00fae --- # Compiler Warning (level 1) C4383 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4384.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4384.md index fceb62ec78c..bc7bcf67f1e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4384.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4384.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4384" title: "Compiler Warning (level 1) C4384" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4384" +ms.date: 11/04/2016 f1_keywords: ["C4384"] helpviewer_keywords: ["C4384"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4391.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4391.md index a3817b8b2ec..fd71f025e23 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4391.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4391.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4391" title: "Compiler Warning (level 1) C4391" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4391" +ms.date: 11/04/2016 f1_keywords: ["C4391"] helpviewer_keywords: ["C4391"] -ms.assetid: 95c6182c-fae9-4174-8f7b-98aa352e68ca --- # Compiler Warning (level 1) C4391 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4392.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4392.md index 1dd595582ea..01aadb254d1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4392.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4392.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 1, Error) C4392" title: "Compiler Warning (level 1, Error) C4392" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1, Error) C4392" +ms.date: 11/04/2016 f1_keywords: ["C4392"] helpviewer_keywords: ["C4392"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4393.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4393.md index 4b18bfd4699..82cf3e5048c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4393.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4393.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4393" title: "Compiler Warning (level 1) C4393" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4393" +ms.date: 11/04/2016 f1_keywords: ["C4393"] helpviewer_keywords: ["C4393"] -ms.assetid: 353a0539-d1ea-4c1b-8849-c9b321ec9842 --- # Compiler Warning (level 1) C4393 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4395.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4395.md index efa5dacc7ab..eb6c4a27418 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4395.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4395.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4395" title: "Compiler Warning (level 1) C4395" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4395" +ms.date: 11/04/2016 f1_keywords: ["C4395"] helpviewer_keywords: ["C4395"] -ms.assetid: 8051469a-3a39-4677-80f7-1300fbffe8ea --- # Compiler Warning (level 1) C4395 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4397.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4397.md index 03e71659efa..2e639136c27 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4397.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4397.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4397" title: "Compiler Warning (level 1) C4397" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4397" +ms.date: 11/04/2016 f1_keywords: ["C4397"] helpviewer_keywords: ["C4397"] -ms.assetid: 6346fdc2-dbbf-4fba-803a-32b0d0a707be --- # Compiler Warning (level 1) C4397 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4399.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4399.md index cac1040a6d8..b3d523f9ed6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4399.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4399.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1, Error) C4399" title: "Compiler Warning (level 1, Error) C4399" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1, Error) C4399" +ms.date: 11/04/2016 f1_keywords: ["C4399"] helpviewer_keywords: ["C4399"] -ms.assetid: f58d9ba7-71a0-4c3b-b26f-f946dda8af30 --- # Compiler Warning (level 1, Error) C4399 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4396.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4396.md index c5f00c6b359..5bb56d3be8f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4396.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4396.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 2) C4396" title: "Compiler Warning (level 2) C4396" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 2) C4396" +ms.date: 11/04/2016 f1_keywords: ["C4396"] helpviewer_keywords: ["C4396"] -ms.assetid: 7cd6b283-db17-4574-b299-03e0b913ad70 --- # Compiler Warning (level 2) C4396 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4390.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4390.md index a51f1ea1ecb..6ed88b3ea82 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4390.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4390.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4390" title: "Compiler Warning (level 3) C4390" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4390" +ms.date: 11/04/2016 f1_keywords: ["C4390"] helpviewer_keywords: ["C4390"] -ms.assetid: c95c2f1b-9bce-4b1f-a80c-565d4cde0b1e --- # Compiler Warning (level 3) C4390 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4398.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4398.md index 50605bc9561..fd2f161dca1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4398.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4398.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4398" title: "Compiler Warning (level 3) C4398" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4398" +ms.date: 11/04/2016 f1_keywords: ["C4398"] helpviewer_keywords: ["C4398"] -ms.assetid: b6221432-9fed-4272-a547-a73f587904e6 --- # Compiler Warning (level 3) C4398 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4365.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4365.md index 40dacf08a34..25320e16d28 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4365.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4365.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 4, off) C4365" title: "Compiler Warning (level 4, off) C4365" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4, off) C4365" +ms.date: 11/04/2016 f1_keywords: ["C4365"] helpviewer_keywords: ["C4365"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4366.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4366.md index d618cf7b150..91679dc7baf 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4366.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4366.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4366" title: "Compiler Warning (level 4) C4366" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4366" +ms.date: 11/04/2016 f1_keywords: ["C4366"] helpviewer_keywords: ["C4366"] -ms.assetid: 65d2942f-3741-42f4-adf2-4920d5a055ca --- # Compiler Warning (level 4) C4366 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4400.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4400.md index 8b5dcb61792..75de9e5fcd0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4400.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4400.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 4, error) C4400" title: "Compiler warning (level 4, error) C4400" -ms.date: "1/22/2025" +description: "Learn more about: Compiler Warning (level 4, error) C4400" +ms.date: 1/22/2025 f1_keywords: ["C4400"] helpviewer_keywords: ["C4400"] --- From dca9ae960bebcdf5ef8c0bda0ece833232f05872 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 30 Aug 2025 00:45:18 +0800 Subject: [PATCH 1653/2255] Add blockquotes for warning messages in range [C4401, C4460] --- .../compiler-warnings/compiler-warning-level-1-c4401.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4402.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4403.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4405.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4406.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4409.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4410.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4411.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4420.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4440.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4441.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4445.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4404.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4414.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4408.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4429.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4431.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4434.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4460.md | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4401.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4401.md index 8bc6447524d..1bf00d11902 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4401.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4401.md @@ -8,7 +8,7 @@ ms.assetid: 2e7ca136-f144-4b40-b847-82976e8643fc --- # Compiler Warning (level 1) C4401 -'bitfield' : member is bit field +> 'bitfield' : member is bit field Inline assembly code tries to access a bit-field member. Inline assembly cannot access bit-field members, so the last packing boundary before the bit-field member is used. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4402.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4402.md index 564054771a1..5682e2a4510 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4402.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4402.md @@ -8,7 +8,7 @@ ms.assetid: 2aaecfae-1e79-4787-87e8-0973f7ec0efe --- # Compiler Warning (level 1) C4402 -must use PTR operator +> must use PTR operator A type is used on an operand without a PTR operator when referring to or casting to a type in inline assembly code. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4403.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4403.md index 1d3e599dcba..8c308f2148a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4403.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4403.md @@ -8,7 +8,7 @@ ms.assetid: d95597c9-4762-4f33-86e4-1d98f0e80d52 --- # Compiler Warning (level 1) C4403 -illegal PTR operator +> illegal PTR operator A PTR operator is used inappropriately in inline assembler code. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4405.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4405.md index b2ad983ac70..9202ad1b259 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4405.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4405.md @@ -8,7 +8,7 @@ ms.assetid: 155c64d6-58ae-4455-b61f-ccd711c5da96 --- # Compiler Warning (level 1) C4405 -'identifier' : identifier is reserved word +> 'identifier' : identifier is reserved word A word reserved for inline assembly is used as a variable name. This may cause unpredictable results. To fix this warning, avoid naming variables with words reserved for inline assembly. The following sample generates C4405: diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4406.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4406.md index 56566edc0fe..90624374b9f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4406.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4406.md @@ -8,7 +8,7 @@ ms.assetid: a3204731-2285-401c-b73b-af98586a86fa --- # Compiler Warning (level 1) C4406 -operand on directive ignored +> operand on directive ignored The directive does not take any operands, but an operand was specified. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4409.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4409.md index 66f2c9b2a9e..ace66e16870 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4409.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4409.md @@ -8,6 +8,6 @@ ms.assetid: 2be63c86-d9c9-4073-ab71-e654dd9f450f --- # Compiler Warning (level 1) C4409 -illegal instruction size +> illegal instruction size The instruction did not have a form with the specified size. The smallest legal size was used. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4410.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4410.md index 99784780d9a..40179d294f8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4410.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4410.md @@ -8,6 +8,6 @@ ms.assetid: 7dcdb720-118a-4823-ba73-575f6ad79a71 --- # Compiler Warning (level 1) C4410 -illegal size for operand +> illegal size for operand One of the operands on the instruction had an incorrect size. The smallest legal size for the operand was used. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4411.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4411.md index 3170200a5f5..ba94d9f79c9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4411.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4411.md @@ -8,6 +8,6 @@ ms.assetid: d209452c-83bd-4333-8d0b-759ca9b4864e --- # Compiler Warning (level 1) C4411 -'identifier' : symbol resolves to displacement register +> 'identifier' : symbol resolves to displacement register The identifier is a local symbol that resolves to a displacement register and therefore may be used on an operand with another symbol. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4420.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4420.md index e506c3e258f..78a5c7b4b73 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4420.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4420.md @@ -8,7 +8,7 @@ ms.assetid: 44a37754-7ddd-4764-a5f7-d33e05c20091 --- # Compiler Warning (level 1) C4420 -'operator' : operator not available, using 'operator' instead; run-time checking may be compromised +> 'operator' : operator not available, using 'operator' instead; run-time checking may be compromised This warning is generated when you use the [/RTCv](../../build/reference/rtc-run-time-error-checks.md) (vector new/delete checking) and when no vector form is found. In this case, the non-vector form is used. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4440.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4440.md index a85bcc3b98c..930be84995f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4440.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4440.md @@ -8,7 +8,7 @@ ms.assetid: 78b9642a-a93e-401e-9d92-372f6451bc5d --- # Compiler Warning (level 1) C4440 -calling convention redefinition from 'calling_convention1' to 'calling_convention2' ignored +> calling convention redefinition from 'calling_convention1' to 'calling_convention2' ignored An attempt to change the calling convention was ignored. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4441.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4441.md index be07663a0d2..666e12c5e25 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4441.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4441.md @@ -8,7 +8,7 @@ ms.assetid: 7fc540a5-e41f-47cf-aa37-b2b699c2685e --- # Compiler Warning (level 1) C4441 -calling convention of 'cc1' ignored; 'cc2' used instead +> calling convention of 'cc1' ignored; 'cc2' used instead Member functions in managed user-defined types and global function generics must use the [__clrcall](../../cpp/clrcall.md) calling convention. The compiler used `__clrcall`. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4445.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4445.md index 4312f592b2f..d6ceffd17c6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4445.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4445.md @@ -8,6 +8,6 @@ ms.assetid: 535e92a0-ba08-4dfc-89b2-af2dcdd7caeb --- # Compiler Warning (level 1) C4445 -'function' : in a WinRT or managed type a virtual method cannot be private +> 'function' : in a WinRT or managed type a virtual method cannot be private If a virtual function is private, it cannot be accessed by a derived type. To fix this error, change the accessibility of the virtual member function to protected or public. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4404.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4404.md index 27677fa9728..b6fe07460de 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4404.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4404.md @@ -8,6 +8,6 @@ ms.assetid: 78ce9985-0ccd-4ec2-92bf-289475109cdd --- # Compiler Warning (level 3) C4404 -period on directive ignored +> period on directive ignored The optional period preceding the directive is ignored. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4414.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4414.md index 0a4b595c122..b4455077286 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4414.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4414.md @@ -8,7 +8,7 @@ ms.assetid: bc81d3ad-55dc-4a6b-a6f2-ec0ef38347df --- # Compiler Warning (level 3) C4414 -'function' : short jump to function converted to near +> 'function' : short jump to function converted to near Short jumps generate compact instruction which branches to an address within a limited range from the instruction. The instruction includes a short offset that represents the distance between the jump and the target address, the function definition. During linking a function may be moved or subject to link-time optimizations that cause the function to be moved out of the range reachable from a short offset. The compiler must generate a special record for the jump, which requires the jmp instruction to be either NEAR or FAR. The compiler made the conversion. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4408.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4408.md index b41f58b75a0..d988aeff4ac 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4408.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4408.md @@ -8,7 +8,7 @@ ms.assetid: 8488a186-ed1d-425c-aaeb-c72472c1da68 --- # Compiler Warning (level 4) C4408 -anonymousstruct or union did not declare any data members +> anonymousstruct or union did not declare any data members An anonymous struct or union must have at least one data member. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4429.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4429.md index 145ec9b1aa3..5850c916b56 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4429.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4429.md @@ -8,7 +8,7 @@ ms.assetid: a3e4cf1f-a869-4e47-834a-850c21eb5297 --- # Compiler Warning (level 4) C4429 -possible incomplete or improperly formed universal-character-name +> possible incomplete or improperly formed universal-character-name The compiler detected a character sequence that may be a badly formed universal character name. A universal character name is `\u` followed by four hex digits, or `\U` followed by eight hex digits. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4431.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4431.md index bba0bbce56a..ac3348b03fb 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4431.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4431.md @@ -8,7 +8,7 @@ ms.assetid: 58434ab6-dd8d-427b-953a-602fb7453ae6 --- # Compiler Warning (level 4) C4431 -missing type specifier - int assumed. Note: C no longer supports default-int +> missing type specifier - int assumed. Note: C no longer supports default-int This error can be generated as a result of compiler conformance work that was done for Visual Studio 2005: Visual C++ no longer creates untyped identifiers as int by default. The type of an identifier must be specified explicitly. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4434.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4434.md index 0315bf031dc..dd437579361 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4434.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4434.md @@ -8,7 +8,7 @@ ms.assetid: 24b8785e-353a-4c37-8bed-ed61001a871d --- # Compiler Warning (level 4) C4434 -a class constructor must have private accessibility; changing to private access +> a class constructor must have private accessibility; changing to private access C4434 indicates that the compiler changed the accessibility of a static constructor. Static constructors must have private accessibility, as they are only meant to be called by the common language runtime. For more information, see [Static constructors](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Static_constructors). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4460.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4460.md index 6a990f6f678..42fd1538433 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4460.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4460.md @@ -8,7 +8,7 @@ ms.assetid: c97ac1c9-598d-479e-bfff-c993690c4f3d --- # Compiler Warning (level 4) C4460 -WinRT or CLR operator 'operator', has parameter passed by reference. WinRT or CLR operator 'operator' has different semantics from C++ operator 'operator', did you intend to pass by value? +> WinRT or CLR operator 'operator', has parameter passed by reference. WinRT or CLR operator 'operator' has different semantics from C++ operator 'operator', did you intend to pass by value? You passed a value by reference to a user-defined Windows Runtime or CLR operator. If the value is changed inside the function, note that the value returned after the function call will be assigned the return value of the function. In standard C++, the changed value is reflected after the function call. From cdf14e13a39c7e9ca730c5c7c8801ccfbd3663e5 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 30 Aug 2025 00:53:06 +0800 Subject: [PATCH 1654/2255] Add "Remarks" and "Example" headings for warning references in range [C4401, C4460] --- .../compiler-warnings/compiler-warning-c4430.md | 2 ++ .../compiler-warnings/compiler-warning-c4439.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4401.md | 8 +++++++- .../compiler-warnings/compiler-warning-level-1-c4402.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4403.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4405.md | 8 +++++++- .../compiler-warnings/compiler-warning-level-1-c4406.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4407.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4409.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4410.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4411.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4420.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4436.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4440.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4441.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4445.md | 2 ++ .../compiler-warnings/compiler-warning-level-2-c4412.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4404.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4414.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4408.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4429.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4431.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4434.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4435.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4437.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4456.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4457.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4458.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4459.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4460.md | 2 ++ 30 files changed, 77 insertions(+), 5 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4430.md b/docs/error-messages/compiler-warnings/compiler-warning-c4430.md index 6814fb10c38..5accdb977f0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4430.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4430.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4430"] > missing type specifier - int assumed. Note: C++ does not support default-int +## Remarks + This warning is issued when a type specifier is missing in a declaration. The compiler used to assume the type was `int` in this case. But due to compiler conformance work done for Visual Studio 2005, all declarations must explicitly specify the type. C4430 is always issued as an error. You can turn off this warning with the `#pragma warning` or `/wd`. For more information, see [`warning`](../../preprocessor/warning.md) or [`/w`, `/W0`, `/W1`, `/W2`, `/W3`, `/W4`, `/w1`, `/w2`, `/w3`, `/w4`, `/Wall`, `/wd`, `/we`, `/wo`, `/Wv`, `/WX` (Warning Level)](../../build/reference/compiler-option-warning-level.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4439.md b/docs/error-messages/compiler-warnings/compiler-warning-c4439.md index 9608a6c02cc..2c070c9fb21 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4439.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4439.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4439"] > '*function name*': function definition with a managed type in the signature must have a `__clrcall` calling convention +## Remarks + The compiler implicitly replaced a calling convention with [`__clrcall`](../../cpp/clrcall.md). To resolve this warning, remove the **`__cdecl`** or **`__stdcall`** calling convention. C4439 is always issued as an error. You can turn off this warning with the `#pragma warning` or **`/wd`**. For more information, see [`warning`](../../preprocessor/warning.md) or [`/w`, `/W0`, `/W1`, `/W2`, `/W3`, `/W4`, `/w1`, `/w2`, `/w3`, `/w4`, `/Wall`, `/wd`, `/we`, `/wo`, `/Wv`, `/WX` (Warning Level)](../../build/reference/compiler-option-warning-level.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4401.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4401.md index 1bf00d11902..6d7d15d317c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4401.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4401.md @@ -10,9 +10,15 @@ ms.assetid: 2e7ca136-f144-4b40-b847-82976e8643fc > 'bitfield' : member is bit field +## Remarks + Inline assembly code tries to access a bit-field member. Inline assembly cannot access bit-field members, so the last packing boundary before the bit-field member is used. -To avoid this warning, cast the bit field to an appropriate type before making the reference in inline assembly code. The following sample generates C4401: +To avoid this warning, cast the bit field to an appropriate type before making the reference in inline assembly code. + +## Example + +The following sample generates C4401: ```cpp // C4401.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4402.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4402.md index 5682e2a4510..8f701470502 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4402.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4402.md @@ -10,6 +10,8 @@ ms.assetid: 2aaecfae-1e79-4787-87e8-0973f7ec0efe > must use PTR operator +## Remarks + A type is used on an operand without a PTR operator when referring to or casting to a type in inline assembly code. The compiler assumes the PTR operator. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4403.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4403.md index 8c308f2148a..88ef55136de 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4403.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4403.md @@ -10,6 +10,8 @@ ms.assetid: d95597c9-4762-4f33-86e4-1d98f0e80d52 > illegal PTR operator +## Remarks + A PTR operator is used inappropriately in inline assembler code. The compiler ignored the PTR operator. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4405.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4405.md index 9202ad1b259..33071a99a00 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4405.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4405.md @@ -10,7 +10,13 @@ ms.assetid: 155c64d6-58ae-4455-b61f-ccd711c5da96 > 'identifier' : identifier is reserved word -A word reserved for inline assembly is used as a variable name. This may cause unpredictable results. To fix this warning, avoid naming variables with words reserved for inline assembly. The following sample generates C4405: +## Remarks + +A word reserved for inline assembly is used as a variable name. This may cause unpredictable results. To fix this warning, avoid naming variables with words reserved for inline assembly. + +## Example + +The following sample generates C4405: ```cpp // C4405.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4406.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4406.md index 90624374b9f..26517a1769e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4406.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4406.md @@ -10,6 +10,8 @@ ms.assetid: a3204731-2285-401c-b73b-af98586a86fa > operand on directive ignored +## Remarks + The directive does not take any operands, but an operand was specified. The compiler ignored the given operand or operands. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4407.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4407.md index c206a7b8cda..9477919dfb3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4407.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4407.md @@ -9,10 +9,10 @@ helpviewer_keywords: ["C4407"] > cast between different pointer to member representations, compiler may generate incorrect code -An incorrect cast between pointer-to-member types was detected. - ## Remarks +An incorrect cast between pointer-to-member types was detected. + C4407 can be generated because of compiler conformance work that was done in Visual Studio 2005. Pointer-to-member now requires a qualified name and the address-of operator (&). C4407 can occur if you cast between a multiple inheritance pointer-to-member to a single inheritance pointer-to-member. Sometimes this can work, but sometimes it can't because the single inheritance pointer-to-member representation doesn't hold sufficient information. Compiling with the **`/vmm`** might help. For more information, see [`/vmm`, `/vms`, `/vmv` (General purpose representation)](../../build/reference/vmm-vms-vmv-general-purpose-representation.md). You can also try rearranging your base classes; the compiler is detecting a loss of information in the conversion because a base class is at a non-zero offset from the derived. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4409.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4409.md index ace66e16870..d620204ca21 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4409.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4409.md @@ -10,4 +10,6 @@ ms.assetid: 2be63c86-d9c9-4073-ab71-e654dd9f450f > illegal instruction size +## Remarks + The instruction did not have a form with the specified size. The smallest legal size was used. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4410.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4410.md index 40179d294f8..030e92e775d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4410.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4410.md @@ -10,4 +10,6 @@ ms.assetid: 7dcdb720-118a-4823-ba73-575f6ad79a71 > illegal size for operand +## Remarks + One of the operands on the instruction had an incorrect size. The smallest legal size for the operand was used. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4411.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4411.md index ba94d9f79c9..3f495fa6f62 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4411.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4411.md @@ -10,4 +10,6 @@ ms.assetid: d209452c-83bd-4333-8d0b-759ca9b4864e > 'identifier' : symbol resolves to displacement register +## Remarks + The identifier is a local symbol that resolves to a displacement register and therefore may be used on an operand with another symbol. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4420.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4420.md index 78a5c7b4b73..1589247536a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4420.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4420.md @@ -10,6 +10,8 @@ ms.assetid: 44a37754-7ddd-4764-a5f7-d33e05c20091 > 'operator' : operator not available, using 'operator' instead; run-time checking may be compromised +## Remarks + This warning is generated when you use the [/RTCv](../../build/reference/rtc-run-time-error-checks.md) (vector new/delete checking) and when no vector form is found. In this case, the non-vector form is used. In order for /RTCv to work correctly, the compiler should always call the vector form of [new](../../cpp/new-operator-cpp.md)/[delete](../../cpp/delete-operator-cpp.md) if the vector syntax was used. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4436.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4436.md index 9b3e694ede6..5b4e97c55ef 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4436.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4436.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4436"] > `dynamic_cast` from virtual base '*base_class*' to '*derived_class*' in constructor or destructor could fail with partially-constructed object +## Remarks + A `dynamic_cast` operation is used when: - The cast is from a base class pointer to a derived class pointer. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4440.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4440.md index 930be84995f..ecd8c6d4517 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4440.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4440.md @@ -10,8 +10,12 @@ ms.assetid: 78b9642a-a93e-401e-9d92-372f6451bc5d > calling convention redefinition from 'calling_convention1' to 'calling_convention2' ignored +## Remarks + An attempt to change the calling convention was ignored. +## Example + The following sample generates C4440: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4441.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4441.md index 666e12c5e25..6a4d97d20ff 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4441.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4441.md @@ -10,6 +10,8 @@ ms.assetid: 7fc540a5-e41f-47cf-aa37-b2b699c2685e > calling convention of 'cc1' ignored; 'cc2' used instead +## Remarks + Member functions in managed user-defined types and global function generics must use the [__clrcall](../../cpp/clrcall.md) calling convention. The compiler used `__clrcall`. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4445.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4445.md index d6ceffd17c6..ed4eaf9f7cc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4445.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4445.md @@ -10,4 +10,6 @@ ms.assetid: 535e92a0-ba08-4dfc-89b2-af2dcdd7caeb > 'function' : in a WinRT or managed type a virtual method cannot be private +## Remarks + If a virtual function is private, it cannot be accessed by a derived type. To fix this error, change the accessibility of the virtual member function to protected or public. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4412.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4412.md index 3ef99e97094..3de6848d042 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4412.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4412.md @@ -23,7 +23,7 @@ C4412 is off by default. For more information, see [Compiler Warnings That Are O To resolve this warning, remove all functions from the type. -## Example +## Examples The following sample generates C4412: diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4404.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4404.md index b6fe07460de..55181bde7d3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4404.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4404.md @@ -10,4 +10,6 @@ ms.assetid: 78ce9985-0ccd-4ec2-92bf-289475109cdd > period on directive ignored +## Remarks + The optional period preceding the directive is ignored. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4414.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4414.md index b4455077286..9ef07b7acc5 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4414.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4414.md @@ -10,8 +10,12 @@ ms.assetid: bc81d3ad-55dc-4a6b-a6f2-ec0ef38347df > 'function' : short jump to function converted to near +## Remarks + Short jumps generate compact instruction which branches to an address within a limited range from the instruction. The instruction includes a short offset that represents the distance between the jump and the target address, the function definition. During linking a function may be moved or subject to link-time optimizations that cause the function to be moved out of the range reachable from a short offset. The compiler must generate a special record for the jump, which requires the jmp instruction to be either NEAR or FAR. The compiler made the conversion. +## Example + For example, the following code generates C4414: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4408.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4408.md index d988aeff4ac..d551c2fe0e1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4408.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4408.md @@ -10,8 +10,12 @@ ms.assetid: 8488a186-ed1d-425c-aaeb-c72472c1da68 > anonymousstruct or union did not declare any data members +## Remarks + An anonymous struct or union must have at least one data member. +## Example + The following sample generates C4408: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4429.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4429.md index 5850c916b56..468a49010b1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4429.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4429.md @@ -10,8 +10,12 @@ ms.assetid: a3e4cf1f-a869-4e47-834a-850c21eb5297 > possible incomplete or improperly formed universal-character-name +## Remarks + The compiler detected a character sequence that may be a badly formed universal character name. A universal character name is `\u` followed by four hex digits, or `\U` followed by eight hex digits. +## Example + The following sample generates C4429: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4431.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4431.md index ac3348b03fb..6a23cb7f952 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4431.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4431.md @@ -10,6 +10,8 @@ ms.assetid: 58434ab6-dd8d-427b-953a-602fb7453ae6 > missing type specifier - int assumed. Note: C no longer supports default-int +## Remarks + This error can be generated as a result of compiler conformance work that was done for Visual Studio 2005: Visual C++ no longer creates untyped identifiers as int by default. The type of an identifier must be specified explicitly. This warning is off by default. See [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md) for more information. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4434.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4434.md index dd437579361..90c0af0853c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4434.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4434.md @@ -10,6 +10,8 @@ ms.assetid: 24b8785e-353a-4c37-8bed-ed61001a871d > a class constructor must have private accessibility; changing to private access +## Remarks + C4434 indicates that the compiler changed the accessibility of a static constructor. Static constructors must have private accessibility, as they are only meant to be called by the common language runtime. For more information, see [Static constructors](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Static_constructors). ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4435.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4435.md index 8b30d0111b7..0afbe860557 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4435.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4435.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4435"] > '*derived_class*': Object layout under `/vd2` will change due to virtual base '*base_class*' +## Remarks + This warning is off by default. For more information, see [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). Under the default compile option of `/vd1`, the derived class doesn't have a `vtordisp` field for the indicated virtual base. If `/vd2` or `#pragma vtordisp(2)` is in effect, a `vtordisp` field is present, changing the object layout. This difference can lead to binary compatibility problems if interacting modules are compiled with different `vtordisp` settings. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4437.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4437.md index 6a5a36565b7..ce0ddeb7278 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4437.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4437.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4437"] > `dynamic_cast` from virtual base '*base_class*' to '*derived_class*' could fail in some contexts +## Remarks + This warning is off by default. For more information, see [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). A `dynamic_cast` operation is used when: diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4456.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4456.md index 3860789485b..0c509a8a4b3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4456.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4456.md @@ -10,6 +10,8 @@ ms.assetid: 5ab39fc1-0e19-461b-842b-4da80560b044 > declaration of '*identifier*' hides previous local declaration +## Remarks + The declaration of *identifier* in the local scope hides the declaration of the previous local declaration of the same name. This warning lets you know that references to *identifier* in the local scope resolve to the locally declared version, not the previous local, which may or may not be your intent. To fix this issue, we recommend you give local variables names that do not conflict with other local names. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4457.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4457.md index af7a117ea6a..38534d3b8f5 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4457.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4457.md @@ -10,6 +10,8 @@ ms.assetid: 02fd149a-917d-4f67-97a6-eb714572271f > declaration of '*identifier*' hides function parameter +## Remarks + The declaration of *identifier* in the local scope hides the declaration of the identically-named function parameter. This warning lets you know that references to *identifier* in the local scope resolve to the locally declared version, not the parameter, which may or may not be your intent. To fix this issue, we recommend you give local variables names that do not conflict with parameter names. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4458.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4458.md index 0aaf058dd0c..2ec32b31272 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4458.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4458.md @@ -10,6 +10,8 @@ ms.assetid: 7bdaa1b1-0caf-4d68-98c4-6bdd441c23fb > declaration of '*identifier*' hides class member +## Remarks + The declaration of *identifier* in the local scope hides the declaration of the identically-named *identifier* at class scope. This warning lets you know that references to *identifier* in this scope resolve to the locally declared version, not the class member version, which may or may not be your intent. To fix this issue, we recommend you give local variables names that do not conflict with class member names. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4459.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4459.md index ec827f8b2f7..658e8997db6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4459.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4459.md @@ -10,6 +10,8 @@ ms.assetid: ee9f6287-9c70-4b10-82a0-add82a13997f > declaration of '*identifier*' hides global declaration +## Remarks + The declaration of *identifier* in the local scope hides the declaration of the identically-named *identifier* in global scope. This warning lets you know that references to *identifier* in this scope resolve to the locally declared version, not the global version, which may or may not be your intent. Generally, we recommend you minimize the use of global variables as a good engineering practice. To minimize pollution of the global namespace, we recommend use of a named namespace for global variables. This warning was new in Visual Studio 2015, in Microsoft C++ compiler version 18.00. To suppress warnings from that version of the compiler or later while migrating your code, use the [/Wv:18](../../build/reference/compiler-option-warning-level.md) compiler option. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4460.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4460.md index 42fd1538433..78107d5fb0a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4460.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4460.md @@ -10,6 +10,8 @@ ms.assetid: c97ac1c9-598d-479e-bfff-c993690c4f3d > WinRT or CLR operator 'operator', has parameter passed by reference. WinRT or CLR operator 'operator' has different semantics from C++ operator 'operator', did you intend to pass by value? +## Remarks + You passed a value by reference to a user-defined Windows Runtime or CLR operator. If the value is changed inside the function, note that the value returned after the function call will be assigned the return value of the function. In standard C++, the changed value is reflected after the function call. ## Example From 5b1c5bf9637f7f6bb06496d37067037df4592f73 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 30 Aug 2025 00:54:53 +0800 Subject: [PATCH 1655/2255] Replace term "sample" with "example" for warning references in range [C4401, C4460] --- .../compiler-warnings/compiler-warning-c4430.md | 2 +- .../compiler-warnings/compiler-warning-c4439.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4401.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4405.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4407.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4436.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4440.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4441.md | 2 +- .../compiler-warnings/compiler-warning-level-2-c4412.md | 8 ++++---- .../compiler-warnings/compiler-warning-level-4-c4408.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4429.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4431.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4434.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4435.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4437.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4456.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4457.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4458.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4459.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4460.md | 2 +- 20 files changed, 23 insertions(+), 23 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4430.md b/docs/error-messages/compiler-warnings/compiler-warning-c4430.md index 5accdb977f0..cca8a9f0921 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4430.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4430.md @@ -17,7 +17,7 @@ C4430 is always issued as an error. You can turn off this warning with the `#pra ## Example -The following sample generates C4430: +The following example generates C4430: ```cpp // compile with: /c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4439.md b/docs/error-messages/compiler-warnings/compiler-warning-c4439.md index 2c070c9fb21..0665a22fd99 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4439.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4439.md @@ -17,7 +17,7 @@ C4439 is always issued as an error. You can turn off this warning with the `#pra ## Example -The following sample generates C4439: +The following example generates C4439: ```cpp // C4439.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4401.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4401.md index 6d7d15d317c..0e1170bde08 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4401.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4401.md @@ -18,7 +18,7 @@ To avoid this warning, cast the bit field to an appropriate type before making t ## Example -The following sample generates C4401: +The following example generates C4401: ```cpp // C4401.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4405.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4405.md index 33071a99a00..3b68ff0ca0b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4405.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4405.md @@ -16,7 +16,7 @@ A word reserved for inline assembly is used as a variable name. This may cause u ## Example -The following sample generates C4405: +The following example generates C4405: ```cpp // C4405.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4407.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4407.md index 9477919dfb3..5ae0f1417ca 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4407.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4407.md @@ -19,7 +19,7 @@ C4407 can occur if you cast between a multiple inheritance pointer-to-member to ## Example -The following sample generates C4407 and shows how to fix it: +The following example generates C4407 and shows how to fix it: ```cpp // C4407.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4436.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4436.md index 5b4e97c55ef..97f5ccc89fc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4436.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4436.md @@ -22,7 +22,7 @@ This warning indicates that the `dynamic_cast` might not perform correctly if it ## Example -The following sample generates C4436 and demonstrates the code generation issue due to the missing `vtordisp` field: +The following example generates C4436 and demonstrates the code generation issue due to the missing `vtordisp` field: ```cpp // C4436.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4440.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4440.md index ecd8c6d4517..df3b85b08d4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4440.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4440.md @@ -16,7 +16,7 @@ An attempt to change the calling convention was ignored. ## Example -The following sample generates C4440: +The following example generates C4440: ```cpp // C4440.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4441.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4441.md index 6a4d97d20ff..6eafbb170ae 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4441.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4441.md @@ -16,7 +16,7 @@ Member functions in managed user-defined types and global function generics must ## Example -The following sample generates C4441. +The following example generates C4441. ```cpp // C4441.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4412.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4412.md index 3de6848d042..d020f1b7fd6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4412.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4412.md @@ -25,7 +25,7 @@ To resolve this warning, remove all functions from the type. ## Examples -The following sample generates C4412: +The following example generates C4412: ```cpp // compile with: /c /W2 /clr:pure @@ -50,7 +50,7 @@ int main() { } ``` -The following sample is a header file that declares two types. The `Unsafe` type is unsafe because it has a member function: +The following example is a header file that declares two types. The `Unsafe` type is unsafe because it has a member function: ```cpp // C4412.h @@ -68,7 +68,7 @@ struct Safe { }; ``` -This sample exports functions with the types defined in the header file: +This example exports functions with the types defined in the header file: ```cpp // C4412_2.cpp @@ -85,7 +85,7 @@ __declspec(dllexport) Safe * __cdecl func2() { return new Safe; } The default calling convention in a `/clr:pure` compilation is different from a native compilation. When `C4412.h` is included, `Test` defaults to `__clrcall`. -The following sample generates C4412 and throws an exception at runtime: +The following example generates C4412 and throws an exception at runtime: ```cpp // C4412_3.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4408.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4408.md index d551c2fe0e1..6b58a85589f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4408.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4408.md @@ -16,7 +16,7 @@ An anonymous struct or union must have at least one data member. ## Example -The following sample generates C4408: +The following example generates C4408: ```cpp // C4408.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4429.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4429.md index 468a49010b1..5e9ee97063c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4429.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4429.md @@ -16,7 +16,7 @@ The compiler detected a character sequence that may be a badly formed universal ## Example -The following sample generates C4429: +The following example generates C4429: ```cpp // C4429.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4431.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4431.md index 6a23cb7f952..bd784076909 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4431.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4431.md @@ -18,7 +18,7 @@ This warning is off by default. See [Compiler Warnings That Are Off by Default]( ## Example -The following sample generates C4431. +The following example generates C4431. ```c // C4431.c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4434.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4434.md index 90c0af0853c..58611b4fa88 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4434.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4434.md @@ -16,7 +16,7 @@ C4434 indicates that the compiler changed the accessibility of a static construc ## Example -The following sample generates C4434. +The following example generates C4434. ```cpp // C4434.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4435.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4435.md index 0afbe860557..faedfa4a148 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4435.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4435.md @@ -17,7 +17,7 @@ Under the default compile option of `/vd1`, the derived class doesn't have a `vt ## Example -The following sample generates C4435. +The following example generates C4435. ```cpp // C4435.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4437.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4437.md index ce0ddeb7278..0a5e440a899 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4437.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4437.md @@ -24,7 +24,7 @@ This warning indicates that the `dynamic_cast` might not perform correctly when ## Example -The following sample generates C4437 and demonstrates the code generation issue that arises from the missing `vtordisp` field: +The following example generates C4437 and demonstrates the code generation issue that arises from the missing `vtordisp` field: ```cpp // C4437.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4456.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4456.md index 0c509a8a4b3..7cb3e2a00c8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4456.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4456.md @@ -16,7 +16,7 @@ The declaration of *identifier* in the local scope hides the declaration of the ## Example -The following sample generates C4456 because the loop control variable `int x` and the local variable `double x` in `member_fn` have the same names. To fix this issue, use different names for the local variables. +The following example generates C4456 because the loop control variable `int x` and the local variable `double x` in `member_fn` have the same names. To fix this issue, use different names for the local variables. ```cpp // C4456_hide.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4457.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4457.md index 38534d3b8f5..6ebf6854e54 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4457.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4457.md @@ -16,7 +16,7 @@ The declaration of *identifier* in the local scope hides the declaration of the ## Example -The following sample generates C4457 because the parameter `x` and the local variable `x` in `member_fn` have the same names. To fix this issue, use different names for the parameters and local variables. +The following example generates C4457 because the parameter `x` and the local variable `x` in `member_fn` have the same names. To fix this issue, use different names for the parameters and local variables. ```cpp // C4457_hide.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4458.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4458.md index 2ec32b31272..fd170700fad 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4458.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4458.md @@ -16,7 +16,7 @@ The declaration of *identifier* in the local scope hides the declaration of the ## Example -The following sample generates C4458 because the parameter `x` and the local variable `y` in `member_fn` have the same names as data members in the class. To fix this issue, use different names for the parameters and local variables. +The following example generates C4458 because the parameter `x` and the local variable `y` in `member_fn` have the same names as data members in the class. To fix this issue, use different names for the parameters and local variables. ```cpp // C4458_hide.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4459.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4459.md index 658e8997db6..7b403b39786 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4459.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4459.md @@ -18,7 +18,7 @@ This warning was new in Visual Studio 2015, in Microsoft C++ compiler version 18 ## Example -The following sample generates C4459: +The following example generates C4459: ```cpp // C4459_hide.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4460.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4460.md index 78107d5fb0a..b8b92dd0195 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4460.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4460.md @@ -16,7 +16,7 @@ You passed a value by reference to a user-defined Windows Runtime or CLR operato ## Example -The following sample generates C4460 and shows how to fix it. +The following example generates C4460 and shows how to fix it. ```cpp // C4460.cpp From d7227c0091f641d62e693269e2965a9303e756c5 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 30 Aug 2025 00:59:41 +0800 Subject: [PATCH 1656/2255] Update metadata for warning references in range [C4401, C4460] --- .../compiler-warnings/compiler-warning-c4430.md | 2 +- .../compiler-warnings/compiler-warning-c4439.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4401.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4402.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4403.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4405.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4406.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4407.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4409.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4410.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4411.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4420.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4436.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4440.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4441.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4445.md | 5 ++--- .../compiler-warnings/compiler-warning-level-2-c4412.md | 4 ++-- .../compiler-warnings/compiler-warning-level-3-c4404.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4414.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4408.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4429.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4431.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4434.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4435.md | 4 ++-- .../compiler-warnings/compiler-warning-level-4-c4437.md | 4 ++-- .../compiler-warnings/compiler-warning-level-4-c4456.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4457.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4458.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4459.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4460.md | 5 ++--- 30 files changed, 58 insertions(+), 81 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4430.md b/docs/error-messages/compiler-warnings/compiler-warning-c4430.md index cca8a9f0921..82777f11454 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4430.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4430.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler Warning (level 1, error) C4430" title: "Compiler warning (level 1, error) C4430" +description: "Learn more about: Compiler Warning (level 1, error) C4430" ms.date: 04/22/2025 f1_keywords: ["C4430"] helpviewer_keywords: ["C4430"] diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4439.md b/docs/error-messages/compiler-warnings/compiler-warning-c4439.md index 0665a22fd99..b4b5b4ffc3e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4439.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4439.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 1, error) C4439" title: "Compiler warning (level 1, error) C4439" -ms.date: "1/22/2025" +description: "Learn more about: Compiler Warning (level 1, error) C4439" +ms.date: 1/22/2025 f1_keywords: ["C4439"] helpviewer_keywords: ["C4439"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4401.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4401.md index 0e1170bde08..0e77fd61c51 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4401.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4401.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4401" title: "Compiler Warning (level 1) C4401" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4401" +ms.date: 11/04/2016 f1_keywords: ["C4401"] helpviewer_keywords: ["C4401"] -ms.assetid: 2e7ca136-f144-4b40-b847-82976e8643fc --- # Compiler Warning (level 1) C4401 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4402.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4402.md index 8f701470502..986cfddad83 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4402.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4402.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4402" title: "Compiler Warning (level 1) C4402" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4402" +ms.date: 11/04/2016 f1_keywords: ["C4402"] helpviewer_keywords: ["C4402"] -ms.assetid: 2aaecfae-1e79-4787-87e8-0973f7ec0efe --- # Compiler Warning (level 1) C4402 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4403.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4403.md index 88ef55136de..afb02f7bd0b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4403.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4403.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4403" title: "Compiler Warning (level 1) C4403" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4403" +ms.date: 11/04/2016 f1_keywords: ["C4403"] helpviewer_keywords: ["C4403"] -ms.assetid: d95597c9-4762-4f33-86e4-1d98f0e80d52 --- # Compiler Warning (level 1) C4403 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4405.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4405.md index 3b68ff0ca0b..92efb9f9abd 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4405.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4405.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4405" title: "Compiler Warning (level 1) C4405" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4405" +ms.date: 11/04/2016 f1_keywords: ["C4405"] helpviewer_keywords: ["C4405"] -ms.assetid: 155c64d6-58ae-4455-b61f-ccd711c5da96 --- # Compiler Warning (level 1) C4405 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4406.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4406.md index 26517a1769e..e600ed36ea4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4406.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4406.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4406" title: "Compiler Warning (level 1) C4406" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4406" +ms.date: 11/04/2016 f1_keywords: ["C4406"] helpviewer_keywords: ["C4406"] -ms.assetid: a3204731-2285-401c-b73b-af98586a86fa --- # Compiler Warning (level 1) C4406 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4407.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4407.md index 5ae0f1417ca..88b9df38c30 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4407.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4407.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4407" title: "Compiler Warning (level 1) C4407" +description: "Learn more about: Compiler Warning (level 1) C4407" ms.date: 04/13/2021 f1_keywords: ["C4407"] helpviewer_keywords: ["C4407"] diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4409.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4409.md index d620204ca21..6f4a121e0bc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4409.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4409.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4409" title: "Compiler Warning (level 1) C4409" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4409" +ms.date: 11/04/2016 f1_keywords: ["C4409"] helpviewer_keywords: ["C4409"] -ms.assetid: 2be63c86-d9c9-4073-ab71-e654dd9f450f --- # Compiler Warning (level 1) C4409 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4410.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4410.md index 030e92e775d..391e7ca2304 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4410.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4410.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4410" title: "Compiler Warning (level 1) C4410" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4410" +ms.date: 11/04/2016 f1_keywords: ["C4410"] helpviewer_keywords: ["C4410"] -ms.assetid: 7dcdb720-118a-4823-ba73-575f6ad79a71 --- # Compiler Warning (level 1) C4410 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4411.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4411.md index 3f495fa6f62..04ee68c961b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4411.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4411.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4411" title: "Compiler Warning (level 1) C4411" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4411" +ms.date: 11/04/2016 f1_keywords: ["C4411"] helpviewer_keywords: ["C4411"] -ms.assetid: d209452c-83bd-4333-8d0b-759ca9b4864e --- # Compiler Warning (level 1) C4411 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4420.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4420.md index 1589247536a..912f91fef5e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4420.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4420.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4420" title: "Compiler Warning (level 1) C4420" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4420" +ms.date: 11/04/2016 f1_keywords: ["C4420"] helpviewer_keywords: ["C4420"] -ms.assetid: 44a37754-7ddd-4764-a5f7-d33e05c20091 --- # Compiler Warning (level 1) C4420 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4436.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4436.md index 97f5ccc89fc..e2565cf0115 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4436.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4436.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 1 and level 4) C4436" title: "Compiler warning (level 1 and level 4) C4436" -ms.date: "1/22/2025" +description: "Learn more about: Compiler Warning (level 1 and level 4) C4436" +ms.date: 1/22/2025 f1_keywords: ["C4436"] helpviewer_keywords: ["C4436"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4440.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4440.md index df3b85b08d4..27027d44236 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4440.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4440.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4440" title: "Compiler Warning (level 1) C4440" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4440" +ms.date: 11/04/2016 f1_keywords: ["C4440"] helpviewer_keywords: ["C4440"] -ms.assetid: 78b9642a-a93e-401e-9d92-372f6451bc5d --- # Compiler Warning (level 1) C4440 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4441.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4441.md index 6eafbb170ae..d4c727635c3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4441.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4441.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4441" title: "Compiler Warning (level 1) C4441" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4441" +ms.date: 11/04/2016 f1_keywords: ["C4441"] helpviewer_keywords: ["C4441"] -ms.assetid: 7fc540a5-e41f-47cf-aa37-b2b699c2685e --- # Compiler Warning (level 1) C4441 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4445.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4445.md index ed4eaf9f7cc..d50740c4fd0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4445.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4445.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4445" title: "Compiler Warning (level 1) C4445" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4445" +ms.date: 11/04/2016 f1_keywords: ["C4445"] helpviewer_keywords: ["C4445"] -ms.assetid: 535e92a0-ba08-4dfc-89b2-af2dcdd7caeb --- # Compiler Warning (level 1) C4445 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4412.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4412.md index d020f1b7fd6..a8072422312 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4412.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4412.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 2, off) C4412" title: "Compiler warning (level 2, off) C4412" -ms.date: "1/22/2025" +description: "Learn more about: Compiler Warning (level 2, off) C4412" +ms.date: 1/22/2025 f1_keywords: ["C4412"] helpviewer_keywords: ["C4412"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4404.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4404.md index 55181bde7d3..9284eab853c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4404.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4404.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4404" title: "Compiler Warning (level 3) C4404" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4404" +ms.date: 11/04/2016 f1_keywords: ["C4404"] helpviewer_keywords: ["C4404"] -ms.assetid: 78ce9985-0ccd-4ec2-92bf-289475109cdd --- # Compiler Warning (level 3) C4404 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4414.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4414.md index 9ef07b7acc5..e9002be53f4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4414.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4414.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4414" title: "Compiler Warning (level 3) C4414" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4414" +ms.date: 11/04/2016 f1_keywords: ["C4414"] helpviewer_keywords: ["C4414"] -ms.assetid: bc81d3ad-55dc-4a6b-a6f2-ec0ef38347df --- # Compiler Warning (level 3) C4414 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4408.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4408.md index 6b58a85589f..80c566c3d8a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4408.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4408.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4408" title: "Compiler Warning (level 4) C4408" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4408" +ms.date: 11/04/2016 f1_keywords: ["C4408"] helpviewer_keywords: ["C4408"] -ms.assetid: 8488a186-ed1d-425c-aaeb-c72472c1da68 --- # Compiler Warning (level 4) C4408 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4429.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4429.md index 5e9ee97063c..f4fae6bd4dc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4429.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4429.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4429" title: "Compiler Warning (level 4) C4429" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4429" +ms.date: 11/04/2016 f1_keywords: ["C4429"] helpviewer_keywords: ["C4429"] -ms.assetid: a3e4cf1f-a869-4e47-834a-850c21eb5297 --- # Compiler Warning (level 4) C4429 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4431.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4431.md index bd784076909..68660c09337 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4431.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4431.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4431" title: "Compiler Warning (level 4) C4431" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4431" +ms.date: 11/04/2016 f1_keywords: ["C4431"] helpviewer_keywords: ["C4431"] -ms.assetid: 58434ab6-dd8d-427b-953a-602fb7453ae6 --- # Compiler Warning (level 4) C4431 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4434.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4434.md index 58611b4fa88..6b7e6b52ba9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4434.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4434.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4434" title: "Compiler Warning (level 4) C4434" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4434" +ms.date: 11/04/2016 f1_keywords: ["C4434"] helpviewer_keywords: ["C4434"] -ms.assetid: 24b8785e-353a-4c37-8bed-ed61001a871d --- # Compiler Warning (level 4) C4434 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4435.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4435.md index faedfa4a148..aa094d91d24 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4435.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4435.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 4, off) C4435" title: "Compiler Warning (level 4, off) C4435" -ms.date: "1/22/2025" +description: "Learn more about: Compiler Warning (level 4, off) C4435" +ms.date: 1/22/2025 f1_keywords: ["C4435"] helpviewer_keywords: ["C4435"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4437.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4437.md index 0a5e440a899..5e09076edc4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4437.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4437.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 1 and level 4, off) C4437" title: "Compiler warning (level 1 and level 4, off) C4437" -ms.date: "1/22/2025" +description: "Learn more about: Compiler Warning (level 1 and level 4, off) C4437" +ms.date: 1/22/2025 f1_keywords: ["C4437"] helpviewer_keywords: ["C4437"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4456.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4456.md index 7cb3e2a00c8..a86eb36dd45 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4456.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4456.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4456" title: "Compiler Warning (level 4) C4456" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4456" +ms.date: 11/04/2016 f1_keywords: ["C4456"] helpviewer_keywords: ["C4456"] -ms.assetid: 5ab39fc1-0e19-461b-842b-4da80560b044 --- # Compiler Warning (level 4) C4456 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4457.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4457.md index 6ebf6854e54..7f39af8da85 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4457.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4457.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4457" title: "Compiler Warning (level 4) C4457" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4457" +ms.date: 11/04/2016 f1_keywords: ["C4457"] helpviewer_keywords: ["C4457"] -ms.assetid: 02fd149a-917d-4f67-97a6-eb714572271f --- # Compiler Warning (level 4) C4457 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4458.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4458.md index fd170700fad..c1189b04ffb 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4458.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4458.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4458" title: "Compiler Warning (level 4) C4458" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4458" +ms.date: 11/04/2016 f1_keywords: ["C4458"] helpviewer_keywords: ["C4458"] -ms.assetid: 7bdaa1b1-0caf-4d68-98c4-6bdd441c23fb --- # Compiler Warning (level 4) C4458 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4459.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4459.md index 7b403b39786..417dfe669c4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4459.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4459.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4459" title: "Compiler Warning (level 4) C4459" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4459" +ms.date: 11/04/2016 f1_keywords: ["C4459"] helpviewer_keywords: ["C4459"] -ms.assetid: ee9f6287-9c70-4b10-82a0-add82a13997f --- # Compiler Warning (level 4) C4459 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4460.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4460.md index b8b92dd0195..df25079de59 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4460.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4460.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4460" title: "Compiler Warning (level 4) C4460" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4460" +ms.date: 11/04/2016 f1_keywords: ["C4460"] helpviewer_keywords: ["C4460"] -ms.assetid: c97ac1c9-598d-479e-bfff-c993690c4f3d --- # Compiler Warning (level 4) C4460 From e33cb2da900f32b6f6cb5291269998f654bf36dc Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 30 Aug 2025 17:46:34 +0800 Subject: [PATCH 1657/2255] Add blockquotes for warning messages in range [C4461, C4520] --- docs/error-messages/compiler-warnings/compiler-warning-c4484.md | 2 +- docs/error-messages/compiler-warnings/compiler-warning-c4485.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4461.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4470.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4486.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4488.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4489.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4490.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4502.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4506.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4508.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4518.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4511.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4471.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4481.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4487.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4505.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4512.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4513.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4514.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4515.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4516.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4517.md | 2 +- 23 files changed, 23 insertions(+), 23 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4484.md b/docs/error-messages/compiler-warnings/compiler-warning-c4484.md index fc6a823d68f..1254c188dc1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4484.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4484.md @@ -8,7 +8,7 @@ ms.assetid: 3d30e5b3-2297-45b7-a37a-1360056fdd0e --- # Compiler Warning C4484 -'override_function' : matches base ref class method 'base_class_function', but is not marked 'virtual', 'new' or 'override'; 'new' (and not 'virtual') is assumed +> 'override_function' : matches base ref class method 'base_class_function', but is not marked 'virtual', 'new' or 'override'; 'new' (and not 'virtual') is assumed When compiling with **/clr**, the compiler will not implicitly override a base class function, which means the function will get a new slot in the vtable. To resolve, explicitly specify whether a function is an override. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4485.md b/docs/error-messages/compiler-warnings/compiler-warning-c4485.md index 29ce3800cd3..b42aee5bc63 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4485.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4485.md @@ -8,7 +8,7 @@ ms.assetid: a6f2b437-ca93-4dcd-b9cb-df415e10df86 --- # Compiler Warning C4485 -'override_function' : matches base ref class method 'base_class_function ', but is not marked 'new' or 'override'; 'new' (and 'virtual') is assumed +> 'override_function' : matches base ref class method 'base_class_function ', but is not marked 'new' or 'override'; 'new' (and 'virtual') is assumed An accessor overrides, with or without the **`virtual`** keyword, a base class accessor function, but the `override` or **`new`** specifier was not part of the overriding function signature. Add the **`new`** or `override` specifier to resolve this warning. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4461.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4461.md index ec88b65c40d..f20665a9ca0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4461.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4461.md @@ -8,7 +8,7 @@ ms.assetid: 104ffecc-3dd4-4cb1-89a8-81154fbe46d9 --- # Compiler Warning (level 1) C4461 -'type' : this class has a finalizer 'finalizer' but no destructor 'dtor' +> 'type' : this class has a finalizer 'finalizer' but no destructor 'dtor' The presence of a finalizer in a type implies resources to delete. Unless a finalizer is explicitly called from the type's destructor, the common language runtime determines when to run the finalizer, after your object goes out of scope. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4470.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4470.md index 74f847fd992..486f613b7d6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4470.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4470.md @@ -8,7 +8,7 @@ ms.assetid: f52a3eaa-a235-4747-a47d-9ec4ad4cb0ea --- # Compiler Warning (level 1) C4470 -floating-point control pragmas ignored under /clr +> floating-point control pragmas ignored under /clr The float-control pragmas: diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4486.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4486.md index 319dbc7c1d9..d2ceddcc148 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4486.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4486.md @@ -8,7 +8,7 @@ ms.assetid: 2c0c59e3-d025-4d97-8da2-fa27df1402fc --- # Compiler Warning (level 1) C4486 -'function' : a private virtual method of a ref class or value class should be marked 'sealed' +> 'function' : a private virtual method of a ref class or value class should be marked 'sealed' Since a private virtual member function of a managed class or struct cannot be accessed or overridden, it should be marked [sealed](../../extensions/sealed-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4488.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4488.md index 9faef2a3235..132a3a9c5f4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4488.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4488.md @@ -8,7 +8,7 @@ ms.assetid: 55625e46-ddb5-4c7c-99c7-cd4aa9f879bd --- # Compiler Warning (level 1) C4488 -'function' : requires 'keyword' keyword to implement the interface method 'interface_method' +> 'function' : requires 'keyword' keyword to implement the interface method 'interface_method' A class must implement all members of an interface from which it directly inherits. An implemented member must have public accessibility, and must be marked virtual. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4489.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4489.md index e0882054020..6b40da891f2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4489.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4489.md @@ -8,7 +8,7 @@ ms.assetid: 43b51c8c-27b5-44c9-b974-fe4b48f4896f --- # Compiler Warning (level 1) C4489 -'specifier' : not allowed on interface method 'method'; override specifiers are only allowed on ref class and value class methods +> 'specifier' : not allowed on interface method 'method'; override specifiers are only allowed on ref class and value class methods A specifier keyword was incorrectly used on an interface method. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4490.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4490.md index 533ee9f3bb5..8c5b9a9237c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4490.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4490.md @@ -8,7 +8,7 @@ ms.assetid: f9b03ecf-41a1-4f4d-a74c-2c1e88234ccc --- # Compiler Warning (level 1) C4490 -'override' : incorrect use of override specifier; 'function' does not match a base ref class method +> 'override' : incorrect use of override specifier; 'function' does not match a base ref class method An override specifier was used incorrectly. For example, you do not override an interface function, you implement it. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4502.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4502.md index 7ed4e44ea8e..772dc4d7d4e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4502.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4502.md @@ -8,7 +8,7 @@ ms.assetid: d8d43153-a40c-4b96-bc11-64028a144d70 --- # Compiler Warning (level 1) C4502 -'linkage specification' requires use of keyword 'extern' and must precede all other specifiers +> 'linkage specification' requires use of keyword 'extern' and must precede all other specifiers A linkage was specified without the **`extern`** keyword. Linkage is not relevant to non-extern types. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4506.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4506.md index 85662502e78..627245b01f1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4506.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4506.md @@ -8,7 +8,7 @@ ms.assetid: aa682869-65d1-4dad-ba32-198f10b44f91 --- # Compiler Warning (level 1) C4506 -no definition for inline function 'function' +> no definition for inline function 'function' The given function was declared and marked for inlining but was not defined. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4508.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4508.md index f4ce654e68a..8fda7164ee2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4508.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4508.md @@ -8,7 +8,7 @@ ms.assetid: c05f113b-b789-4df0-a4ef-78bce4767021 --- # Compiler Warning (level 1) C4508 -'function' : function should return a value; 'void' return type assumed +> 'function' : function should return a value; 'void' return type assumed The function has no return type specified. In this case, C4430 should also fire and the compiler implements the fix reported by C4430 (default value is int). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4518.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4518.md index 717e2457340..efe2b2d38a7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4518.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4518.md @@ -8,7 +8,7 @@ ms.assetid: 4ad21004-f076-43fd-99f4-4bf1f9be4c0b --- # Compiler Warning (level 1) C4518 -'specifier' : storage-class or type specifier(s) unexpected here; ignored +> 'specifier' : storage-class or type specifier(s) unexpected here; ignored The following sample generates C4518: diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4511.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4511.md index 198c5895880..f74a45801c8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4511.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4511.md @@ -8,6 +8,6 @@ ms.assetid: a01286b2-3dd9-4a97-a5ee-dd0e7b63ef8b --- # Compiler Warning (level 3) C4511 -'class' : copy constructor could not be generated +> 'class' : copy constructor could not be generated The compiler could not generate a default copy-constructor for a class; a base class may have a private copy-constructor. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4471.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4471.md index 958561ae411..063b3fe045e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4471.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4471.md @@ -8,7 +8,7 @@ ms.assetid: ccfd8bd5-bc1b-4be7-a6ea-0e3a7add6607 --- # Compiler Warning (level 4) C4471 -'*enumeration*': a forward declaration of an unscoped enumeration must have an underlying type (int assumed) +> '*enumeration*': a forward declaration of an unscoped enumeration must have an underlying type (int assumed) A forward declaration of an unscoped enumeration was found without a specifier for the underlying type. By default, Visual C++ assumes **`int`** is the underlying type for an enumeration. This can cause issues if a different type is used in the enumeration definition, for example, if a different explicit type is specified, or if a different type is implicitly set by an initializer. You may also have portability issues; other compilers do not assume **`int`** is the underlying type of an enumeration. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4481.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4481.md index 3320ac5730d..f9a333b2467 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4481.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4481.md @@ -8,7 +8,7 @@ ms.assetid: 7bfd4e0c-b452-4e6c-b7c4-ac5cc93fe4ea --- # Compiler Warning (level 4) C4481 -nonstandard extension used: override specifier 'keyword' +> nonstandard extension used: override specifier 'keyword' A keyword was used that is not in the C++ standard, for example, one of the override specifiers that also works under /clr. For more information, see, diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4487.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4487.md index 376ae3a09e2..e44eac046e8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4487.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4487.md @@ -8,7 +8,7 @@ ms.assetid: 796144cf-cd3c-4edc-b6a4-96192b7eb4f0 --- # Compiler Warning (level 4) C4487 -'derived_class_function' : matches inherited non-virtual method 'base_class_function' but is not explicitly marked 'new' +> 'derived_class_function' : matches inherited non-virtual method 'base_class_function' but is not explicitly marked 'new' A function in a derived class has the same signature as a non-virtual base class function. C4487 reminds you that the derived class function does not override the base class function. Explicitly mark the derived class function as **`new`** to resolve this warning. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4505.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4505.md index 018e89e157d..2fe46f92ce7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4505.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4505.md @@ -8,7 +8,7 @@ ms.assetid: 068716a0-7dd2-40af-abf4-478f893b48c5 --- # Compiler Warning (level 4) C4505 -'function' : unreferenced local function has been removed +> 'function' : unreferenced local function has been removed The given function is local and not referenced in the body of the module; therefore, the function is dead code. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4512.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4512.md index 2a43b103223..ea3a02f0772 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4512.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4512.md @@ -8,7 +8,7 @@ ms.assetid: afb68995-684a-4be5-a73a-38d7a16dc030 --- # Compiler Warning (level 4) C4512 -'class' : assignment operator could not be generated +> 'class' : assignment operator could not be generated The compiler cannot generate an assignment operator for the given class. No assignment operator was created. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4513.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4513.md index ebc5ecc71f9..db7fe9c3c3b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4513.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4513.md @@ -8,6 +8,6 @@ ms.assetid: 6877334a-f30a-4184-9483-dac3348737a4 --- # Compiler Warning (level 4) C4513 -'class' : destructor could not be generated +> 'class' : destructor could not be generated The compiler cannot generate a default destructor for the given class; no destructor was created. The destructor is in a base class that is not accessible to the derived class. If the base class has a private destructor, make it public or protected. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4514.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4514.md index ea7cba7688b..4512701c913 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4514.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4514.md @@ -8,7 +8,7 @@ ms.assetid: cdae966a-9cd4-4e31-af30-2a014e68f614 --- # Compiler Warning (level 4) C4514 -'function' : unreferenced inline function has been removed +> 'function' : unreferenced inline function has been removed The optimizer removed an inline function that is not called. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4515.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4515.md index 525da292979..e707f1c80c9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4515.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4515.md @@ -8,7 +8,7 @@ ms.assetid: 167b5177-3f89-418b-b6c8-7de634f6b28f --- # Compiler Warning (level 4) C4515 -'namespace' : namespace uses itself +> 'namespace' : namespace uses itself A namespace is used recursively. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4516.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4516.md index 95e905c9ac8..7e9cb6af507 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4516.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4516.md @@ -8,7 +8,7 @@ ms.assetid: 6677bb1f-d26e-4ab9-8644-6b5a2a8f4ff8 --- # Compiler Warning (level 4) C4516 -'class::symbol' : access-declarations are deprecated; member using-declarations provide a better alternative +> 'class::symbol' : access-declarations are deprecated; member using-declarations provide a better alternative The ANSI C++ committee has declared access declarations (changing the access of a member in a derived class without the [using](../../cpp/using-declaration.md) keyword) to be outdated. Access declarations may not be supported by future versions of C++. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4517.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4517.md index bcc52f94383..5d5b1e51930 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4517.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4517.md @@ -8,6 +8,6 @@ ms.assetid: 87cc12b8-7331-4f3a-a863-d6a75d9599c3 --- # Compiler Warning (level 4) C4517 -access-declarations are deprecated; member using-declarations provide a better alternative +> access-declarations are deprecated; member using-declarations provide a better alternative The ANSI C++ committee has declared access declarations (changing the access of a member in a derived class without the [using](../../cpp/using-declaration.md) keyword) to be outdated. Access declarations may not be supported by future versions of C++. From 65225b02f00ea668f44f2f45e0f97e7c43f8cb8c Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 30 Aug 2025 17:57:00 +0800 Subject: [PATCH 1658/2255] Add "Remarks" and "Example" headings for warning references in range [C4461, C4520] --- docs/error-messages/compiler-warnings/c4477.md | 2 ++ .../compiler-warnings/compiler-warning-c4484.md | 2 ++ .../compiler-warnings/compiler-warning-c4485.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4461.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4462.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4470.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4486.md | 4 +++- .../compiler-warnings/compiler-warning-level-1-c4488.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4489.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4490.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4502.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4506.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4508.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4518.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4511.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4463.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4464.md | 4 ++-- .../compiler-warnings/compiler-warning-level-4-c4471.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4481.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4487.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4505.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4510.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4512.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4513.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4514.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4515.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4516.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4517.md | 2 ++ 28 files changed, 67 insertions(+), 3 deletions(-) diff --git a/docs/error-messages/compiler-warnings/c4477.md b/docs/error-messages/compiler-warnings/c4477.md index 6a661707d9b..69a6c4913fc 100644 --- a/docs/error-messages/compiler-warnings/c4477.md +++ b/docs/error-messages/compiler-warnings/c4477.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4477"] > '*function*' : format string '*string*' requires an argument of type '*type*', but variadic argument *number* has type '*type*' +## Remarks + The compiler detected a mismatch between the type of argument required to satisfy the placeholder in a format string, and the type of argument supplied. Correct use of the printf and scanf families of variadic functions requires that you supply arguments of the types specified by the format string. A mismatch generally means there is a bug in your code. For information on the arguments associated with printf family format string placeholders, see [Format specification syntax: printf and wprintf functions](../../c-runtime-library/format-specification-syntax-printf-and-wprintf-functions.md). See the documentation for information specific to function *function*. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4484.md b/docs/error-messages/compiler-warnings/compiler-warning-c4484.md index 1254c188dc1..8ad8a517378 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4484.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4484.md @@ -10,6 +10,8 @@ ms.assetid: 3d30e5b3-2297-45b7-a37a-1360056fdd0e > 'override_function' : matches base ref class method 'base_class_function', but is not marked 'virtual', 'new' or 'override'; 'new' (and not 'virtual') is assumed +## Remarks + When compiling with **/clr**, the compiler will not implicitly override a base class function, which means the function will get a new slot in the vtable. To resolve, explicitly specify whether a function is an override. For more information, see: diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4485.md b/docs/error-messages/compiler-warnings/compiler-warning-c4485.md index b42aee5bc63..ebcba1b66ce 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4485.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4485.md @@ -10,6 +10,8 @@ ms.assetid: a6f2b437-ca93-4dcd-b9cb-df415e10df86 > 'override_function' : matches base ref class method 'base_class_function ', but is not marked 'new' or 'override'; 'new' (and 'virtual') is assumed +## Remarks + An accessor overrides, with or without the **`virtual`** keyword, a base class accessor function, but the `override` or **`new`** specifier was not part of the overriding function signature. Add the **`new`** or `override` specifier to resolve this warning. See [override](../../extensions/override-cpp-component-extensions.md) and [new (new slot in vtable)](../../extensions/new-new-slot-in-vtable-cpp-component-extensions.md) for more information. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4461.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4461.md index f20665a9ca0..3db90c99f04 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4461.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4461.md @@ -10,6 +10,8 @@ ms.assetid: 104ffecc-3dd4-4cb1-89a8-81154fbe46d9 > 'type' : this class has a finalizer 'finalizer' but no destructor 'dtor' +## Remarks + The presence of a finalizer in a type implies resources to delete. Unless a finalizer is explicitly called from the type's destructor, the common language runtime determines when to run the finalizer, after your object goes out of scope. If you define a destructor in the type and explicitly call the finalizer from the destructor, you can deterministically run your finalizer. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4462.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4462.md index 63d4762be21..279e498aa80 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4462.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4462.md @@ -10,6 +10,8 @@ ms.assetid: 4e20aca4-293e-4c75-a83d-961c27ab7840 > cannot determine the GUID of the type. Program may fail at runtime. +## Remarks + Warning C4462 occurs in a Windows Runtime app or component when a public `TypedEventHandler` has as one of its type parameters a reference to the enclosing class. This warning is automatically promoted to an error. If you wish to modify this behavior, use [#pragma warning](../../preprocessor/warning.md). For example, to make C4462 into a level 4 warning issue, add this line to your source code file: diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4470.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4470.md index 486f613b7d6..abbbab1ba4f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4470.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4470.md @@ -10,6 +10,8 @@ ms.assetid: f52a3eaa-a235-4747-a47d-9ec4ad4cb0ea > floating-point control pragmas ignored under /clr +## Remarks + The float-control pragmas: - [fenv_access](../../preprocessor/fenv-access.md) @@ -20,6 +22,8 @@ The float-control pragmas: have no effect under [/clr](../../build/reference/clr-common-language-runtime-compilation.md). +## Example + The following sample generates C4470: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4486.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4486.md index d2ceddcc148..2f6f20aa84d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4486.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4486.md @@ -10,9 +10,11 @@ ms.assetid: 2c0c59e3-d025-4d97-8da2-fa27df1402fc > 'function' : a private virtual method of a ref class or value class should be marked 'sealed' +## Remarks + Since a private virtual member function of a managed class or struct cannot be accessed or overridden, it should be marked [sealed](../../extensions/sealed-cpp-component-extensions.md). -## Examples +## Example The following sample generates C4486. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4488.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4488.md index 132a3a9c5f4..17a99b1636a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4488.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4488.md @@ -10,6 +10,8 @@ ms.assetid: 55625e46-ddb5-4c7c-99c7-cd4aa9f879bd > 'function' : requires 'keyword' keyword to implement the interface method 'interface_method' +## Remarks + A class must implement all members of an interface from which it directly inherits. An implemented member must have public accessibility, and must be marked virtual. ## Examples diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4489.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4489.md index 6b40da891f2..6b275b60d20 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4489.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4489.md @@ -10,6 +10,8 @@ ms.assetid: 43b51c8c-27b5-44c9-b974-fe4b48f4896f > 'specifier' : not allowed on interface method 'method'; override specifiers are only allowed on ref class and value class methods +## Remarks + A specifier keyword was incorrectly used on an interface method. For more information, see [Override Specifiers](../../extensions/override-specifiers-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4490.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4490.md index 8c5b9a9237c..d91fc17a2f7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4490.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4490.md @@ -10,6 +10,8 @@ ms.assetid: f9b03ecf-41a1-4f4d-a74c-2c1e88234ccc > 'override' : incorrect use of override specifier; 'function' does not match a base ref class method +## Remarks + An override specifier was used incorrectly. For example, you do not override an interface function, you implement it. For more information, see [Override Specifiers](../../extensions/override-specifiers-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4502.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4502.md index 772dc4d7d4e..273b48e6ebb 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4502.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4502.md @@ -10,6 +10,8 @@ ms.assetid: d8d43153-a40c-4b96-bc11-64028a144d70 > 'linkage specification' requires use of keyword 'extern' and must precede all other specifiers +## Remarks + A linkage was specified without the **`extern`** keyword. Linkage is not relevant to non-extern types. The compiler assumed the **`extern`** keyword. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4506.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4506.md index 627245b01f1..d829b87e503 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4506.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4506.md @@ -10,6 +10,8 @@ ms.assetid: aa682869-65d1-4dad-ba32-198f10b44f91 > no definition for inline function 'function' +## Remarks + The given function was declared and marked for inlining but was not defined. The compiler did not inline the function. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4508.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4508.md index 8fda7164ee2..81121151257 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4508.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4508.md @@ -10,10 +10,14 @@ ms.assetid: c05f113b-b789-4df0-a4ef-78bce4767021 > 'function' : function should return a value; 'void' return type assumed +## Remarks + The function has no return type specified. In this case, C4430 should also fire and the compiler implements the fix reported by C4430 (default value is int). To resolve this warning, explicitly declare the return type of functions. +## Example + The following sample generates C4508: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4518.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4518.md index efe2b2d38a7..d559ac8bee9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4518.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4518.md @@ -10,6 +10,8 @@ ms.assetid: 4ad21004-f076-43fd-99f4-4bf1f9be4c0b > 'specifier' : storage-class or type specifier(s) unexpected here; ignored +## Example + The following sample generates C4518: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4511.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4511.md index f74a45801c8..efce6d5d002 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4511.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4511.md @@ -10,4 +10,6 @@ ms.assetid: a01286b2-3dd9-4a97-a5ee-dd0e7b63ef8b > 'class' : copy constructor could not be generated +## Remarks + The compiler could not generate a default copy-constructor for a class; a base class may have a private copy-constructor. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4463.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4463.md index 11df8f1e4da..a83f287042c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4463.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4463.md @@ -10,6 +10,8 @@ ms.assetid: a07ae70c-db4e-472b-8b58-9137d9997323 > overflow; assigning *value* to bit-field that can only hold values from *low_value* to *high_value* +## Remarks + The assigned *value* is outside the range of values that the bit-field can hold. Signed bit-field types use the high-order bit for the sign, so if *n* is the bit-field size, the range for signed bit-fields is -2n-1 to 2n-1-1, while unsigned bit-fields have a range from 0 to 2n-1. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4464.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4464.md index ca3587adeaf..a2e848963a9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4464.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4464.md @@ -9,10 +9,10 @@ helpviewer_keywords: ["C4464"] > relative include path contains '..' -A `#include` directive has a path that includes a parent directory specifier (a `..` path segment). - ## Remarks +A `#include` directive has a path that includes a parent directory specifier (a `..` path segment). + In Visual Studio 2015 Update 1 and later versions, if enabled, the compiler can detect and issue a warning for a `#include` directive that contains a parent directory path segment (`..`). Code is sometimes written that uses parent directory relative paths to include headers from external libraries. When these parent directory-relative header paths are specified in source files, it creates a risk: The program could be compiled by including a different header file than the programmer intends. These relative paths may not be portable to other developers' build environments. Instead, we recommend you specify the paths to such headers in the build environment, such as in the `INCLUDE` environment variable or in parameters to the [`/I` (Additional include directories)](../../build/reference/i-additional-include-directories.md) compiler option. In the Visual Studio IDE, you can set the paths in your project's **Configuration Properties** > **C/C++** > **General** property page, in the **Additional Include Directories** property. Although there's no specific warning for it, we also don't recommend use of parent directory path segments when you specify your project's include directories. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4471.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4471.md index 063b3fe045e..b3d28946c36 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4471.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4471.md @@ -10,6 +10,8 @@ ms.assetid: ccfd8bd5-bc1b-4be7-a6ea-0e3a7add6607 > '*enumeration*': a forward declaration of an unscoped enumeration must have an underlying type (int assumed) +## Remarks + A forward declaration of an unscoped enumeration was found without a specifier for the underlying type. By default, Visual C++ assumes **`int`** is the underlying type for an enumeration. This can cause issues if a different type is used in the enumeration definition, for example, if a different explicit type is specified, or if a different type is implicitly set by an initializer. You may also have portability issues; other compilers do not assume **`int`** is the underlying type of an enumeration. This warning is off by default; you can use /Wall or /w*N*4471 to enable it on the command line, or use #pragma [warning](../../preprocessor/warning.md) in your source file. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4481.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4481.md index f9a333b2467..d7db7904d7e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4481.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4481.md @@ -10,6 +10,8 @@ ms.assetid: 7bfd4e0c-b452-4e6c-b7c4-ac5cc93fe4ea > nonstandard extension used: override specifier 'keyword' +## Remarks + A keyword was used that is not in the C++ standard, for example, one of the override specifiers that also works under /clr. For more information, see, - [/clr (Common Language Runtime Compilation)](../../build/reference/clr-common-language-runtime-compilation.md) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4487.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4487.md index e44eac046e8..c0b9e99082a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4487.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4487.md @@ -10,6 +10,8 @@ ms.assetid: 796144cf-cd3c-4edc-b6a4-96192b7eb4f0 > 'derived_class_function' : matches inherited non-virtual method 'base_class_function' but is not explicitly marked 'new' +## Remarks + A function in a derived class has the same signature as a non-virtual base class function. C4487 reminds you that the derived class function does not override the base class function. Explicitly mark the derived class function as **`new`** to resolve this warning. For more information, see [new (new slot in vtable)](../../extensions/new-new-slot-in-vtable-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4505.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4505.md index 2fe46f92ce7..2c714f0a99c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4505.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4505.md @@ -10,6 +10,8 @@ ms.assetid: 068716a0-7dd2-40af-abf4-478f893b48c5 > 'function' : unreferenced local function has been removed +## Remarks + The given function is local and not referenced in the body of the module; therefore, the function is dead code. The compiler did not generate code for this dead function. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4510.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4510.md index 7026350d29e..41cf8e5f6b3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4510.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4510.md @@ -10,6 +10,8 @@ ms.assetid: fd28d1d4-ad27-4dad-94c0-9dba46c93180 > '*class*' : default constructor could not be generated +## Remarks + The compiler can't generate a default constructor for the specified class, which has no user-defined constructors. Objects of this type can't be created. There are several situations that prevent the compiler from generating a default constructor, including: diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4512.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4512.md index ea3a02f0772..80f08d96c1c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4512.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4512.md @@ -10,6 +10,8 @@ ms.assetid: afb68995-684a-4be5-a73a-38d7a16dc030 > 'class' : assignment operator could not be generated +## Remarks + The compiler cannot generate an assignment operator for the given class. No assignment operator was created. An assignment operator for the base class that is not accessible by the derived class can cause this warning. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4513.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4513.md index db7fe9c3c3b..7844ee79afe 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4513.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4513.md @@ -10,4 +10,6 @@ ms.assetid: 6877334a-f30a-4184-9483-dac3348737a4 > 'class' : destructor could not be generated +## Remarks + The compiler cannot generate a default destructor for the given class; no destructor was created. The destructor is in a base class that is not accessible to the derived class. If the base class has a private destructor, make it public or protected. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4514.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4514.md index 4512701c913..d04ee68a366 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4514.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4514.md @@ -10,10 +10,14 @@ ms.assetid: cdae966a-9cd4-4e31-af30-2a014e68f614 > 'function' : unreferenced inline function has been removed +## Remarks + The optimizer removed an inline function that is not called. This warning is off by default. See [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md) for more information. +## Example + The following sample generates C4514: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4515.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4515.md index e707f1c80c9..0caa6cbca83 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4515.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4515.md @@ -10,8 +10,12 @@ ms.assetid: 167b5177-3f89-418b-b6c8-7de634f6b28f > 'namespace' : namespace uses itself +## Remarks + A namespace is used recursively. +## Example + The following sample generates C4515: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4516.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4516.md index 7e9cb6af507..7c2d612d420 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4516.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4516.md @@ -10,8 +10,12 @@ ms.assetid: 6677bb1f-d26e-4ab9-8644-6b5a2a8f4ff8 > 'class::symbol' : access-declarations are deprecated; member using-declarations provide a better alternative +## Remarks + The ANSI C++ committee has declared access declarations (changing the access of a member in a derived class without the [using](../../cpp/using-declaration.md) keyword) to be outdated. Access declarations may not be supported by future versions of C++. +## Example + The following sample generates C4516: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4517.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4517.md index 5d5b1e51930..64979fc9a84 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4517.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4517.md @@ -10,4 +10,6 @@ ms.assetid: 87cc12b8-7331-4f3a-a863-d6a75d9599c3 > access-declarations are deprecated; member using-declarations provide a better alternative +## Remarks + The ANSI C++ committee has declared access declarations (changing the access of a member in a derived class without the [using](../../cpp/using-declaration.md) keyword) to be outdated. Access declarations may not be supported by future versions of C++. From 8932e82bd02ea9d53c7a50818c832af8c6b71497 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 30 Aug 2025 17:58:38 +0800 Subject: [PATCH 1659/2255] Replace term "sample" with "example" for warning references in range [C4461, C4520] --- docs/error-messages/compiler-warnings/c4477.md | 2 +- .../compiler-warnings/compiler-warning-c4484.md | 2 +- .../compiler-warnings/compiler-warning-c4485.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4461.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4462.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4470.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4486.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4488.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4489.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4490.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4503.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4508.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4518.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4481.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4487.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4512.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4514.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4515.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4516.md | 2 +- 19 files changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/error-messages/compiler-warnings/c4477.md b/docs/error-messages/compiler-warnings/c4477.md index 69a6c4913fc..d2110879d1b 100644 --- a/docs/error-messages/compiler-warnings/c4477.md +++ b/docs/error-messages/compiler-warnings/c4477.md @@ -19,7 +19,7 @@ This warning is new in Visual Studio 2015. ## Example -This sample shows two C4477 warnings for the first printf_s function, when two arguments are found to be of the wrong type, and also shows how to fix the issues. +This example shows two C4477 warnings for the first printf_s function, when two arguments are found to be of the wrong type, and also shows how to fix the issues. ```cpp // C4477p.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4484.md b/docs/error-messages/compiler-warnings/compiler-warning-c4484.md index 8ad8a517378..759ecc6783e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4484.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4484.md @@ -26,7 +26,7 @@ C4484 is always issued as an error. Use the [warning](../../preprocessor/warning ## Example -The following sample generates C4484. +The following example generates C4484. ```cpp // C4484.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4485.md b/docs/error-messages/compiler-warnings/compiler-warning-c4485.md index ebcba1b66ce..0aa6cf47a9e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4485.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4485.md @@ -20,7 +20,7 @@ C4485 is always issued as an error. Use the [warning](../../preprocessor/warning ## Example -The following sample generates C4485 +The following example generates C4485 ```cpp // C4485.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4461.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4461.md index 3db90c99f04..38f9cedb814 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4461.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4461.md @@ -20,7 +20,7 @@ For more information, see [Destructors and finalizers](../../dotnet/how-to-defin ## Example -The following sample generates C4461. +The following example generates C4461. ```cpp // C4461.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4462.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4462.md index 279e498aa80..3f4efd4cd2e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4462.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4462.md @@ -22,7 +22,7 @@ This warning is automatically promoted to an error. If you wish to modify this b ## Example -This sample generates warning C4462: +This example generates warning C4462: ```cpp namespace N diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4470.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4470.md index abbbab1ba4f..fed27f37f93 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4470.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4470.md @@ -24,7 +24,7 @@ have no effect under [/clr](../../build/reference/clr-common-language-runtime-co ## Example -The following sample generates C4470: +The following example generates C4470: ```cpp // C4470.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4486.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4486.md index 2f6f20aa84d..ffcdb18f020 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4486.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4486.md @@ -16,7 +16,7 @@ Since a private virtual member function of a managed class or struct cannot be a ## Example -The following sample generates C4486. +The following example generates C4486. ```cpp // C4486.cpp @@ -28,7 +28,7 @@ private: }; ``` -The following sample shows one possible use of a private sealed, virtual function. +The following example shows one possible use of a private sealed, virtual function. ```cpp // C4486_b.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4488.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4488.md index 17a99b1636a..37061109824 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4488.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4488.md @@ -16,7 +16,7 @@ A class must implement all members of an interface from which it directly inheri ## Examples -C4488 can occur if an implemented member is not public. The following sample generates C4488. +C4488 can occur if an implemented member is not public. The following example generates C4488. ```cpp // C4488.cpp @@ -35,7 +35,7 @@ public: }; ``` -C4488 can occur if an implemented member is not marked virtual. The following sample generates C4488. +C4488 can occur if an implemented member is not marked virtual. The following example generates C4488. ```cpp // C4488_b.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4489.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4489.md index 6b275b60d20..cdd7df9b79b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4489.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4489.md @@ -18,7 +18,7 @@ For more information, see [Override Specifiers](../../extensions/override-specif ## Example -The following sample generates C4489. +The following example generates C4489. ```cpp // C4489.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4490.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4490.md index d91fc17a2f7..f2c3fe54c63 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4490.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4490.md @@ -18,7 +18,7 @@ For more information, see [Override Specifiers](../../extensions/override-specif ## Example -The following sample generates C4490. +The following example generates C4490. ```cpp // C4490.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4503.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4503.md index 866586d4ea8..93f8f7c85d8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4503.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4503.md @@ -22,7 +22,7 @@ You might, however, decide to not restructure your code. It is possible to ship ## Example -The following sample generates C4503 in compilers before Visual Studio 2017: +The following example generates C4503 in compilers before Visual Studio 2017: ```cpp // C4503.cpp @@ -40,7 +40,7 @@ typedef std::map Hello; Hello MyWAT; ``` -This sample shows one way to rewrite your code to resolve C4503: +This example shows one way to rewrite your code to resolve C4503: ```cpp // C4503b.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4508.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4508.md index 81121151257..ea380ced71e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4508.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4508.md @@ -18,7 +18,7 @@ To resolve this warning, explicitly declare the return type of functions. ## Example -The following sample generates C4508: +The following example generates C4508: ```cpp // C4508.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4518.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4518.md index d559ac8bee9..d213cbd1662 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4518.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4518.md @@ -12,7 +12,7 @@ ms.assetid: 4ad21004-f076-43fd-99f4-4bf1f9be4c0b ## Example -The following sample generates C4518: +The following example generates C4518: ```cpp // C4518.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4481.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4481.md index d7db7904d7e..614c242c71c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4481.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4481.md @@ -20,7 +20,7 @@ A keyword was used that is not in the C++ standard, for example, one of the over ## Example -The following sample generates C4481. +The following example generates C4481. ```cpp // C4481.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4487.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4487.md index c0b9e99082a..0a929f820a3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4487.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4487.md @@ -18,7 +18,7 @@ For more information, see [new (new slot in vtable)](../../extensions/new-new-sl ## Example -The following sample generates C4487. +The following example generates C4487. ```cpp // C4487.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4512.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4512.md index 80f08d96c1c..30cdb713180 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4512.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4512.md @@ -30,7 +30,7 @@ You can resolve the C4512 warning for your code in one of three ways: ## Example -The following sample generates C4512. +The following example generates C4512. ```cpp // C4512.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4514.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4514.md index d04ee68a366..a89c72d53be 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4514.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4514.md @@ -18,7 +18,7 @@ This warning is off by default. See [Compiler Warnings That Are Off by Default]( ## Example -The following sample generates C4514: +The following example generates C4514: ```cpp // C4514.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4515.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4515.md index 0caa6cbca83..0330b8fd352 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4515.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4515.md @@ -16,7 +16,7 @@ A namespace is used recursively. ## Example -The following sample generates C4515: +The following example generates C4515: ```cpp // C4515.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4516.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4516.md index 7c2d612d420..070e908eac0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4516.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4516.md @@ -16,7 +16,7 @@ The ANSI C++ committee has declared access declarations (changing the access of ## Example -The following sample generates C4516: +The following example generates C4516: ```cpp // C4516.cpp From 746d17ab42ee55643c5303dd471420e9525629ba Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 30 Aug 2025 18:03:40 +0800 Subject: [PATCH 1660/2255] Update metadata for warning references in range [C4461, C4520] --- docs/error-messages/compiler-warnings/c4477.md | 4 ++-- .../compiler-warnings/compiler-warning-c4484.md | 5 ++--- .../compiler-warnings/compiler-warning-c4485.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4461.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4462.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4470.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4486.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4488.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4489.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4490.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4502.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4503.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4506.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4508.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4518.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4511.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4463.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4464.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4471.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4481.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4487.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4505.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4510.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4512.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4513.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4514.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4515.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4516.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4517.md | 5 ++--- 29 files changed, 57 insertions(+), 84 deletions(-) diff --git a/docs/error-messages/compiler-warnings/c4477.md b/docs/error-messages/compiler-warnings/c4477.md index d2110879d1b..e9d25f97453 100644 --- a/docs/error-messages/compiler-warnings/c4477.md +++ b/docs/error-messages/compiler-warnings/c4477.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4477" title: "Compiler Warning C4477" -ms.date: "02/16/2018" +description: "Learn more about: Compiler Warning (level 1) C4477" +ms.date: 02/16/2018 f1_keywords: ["C4477"] helpviewer_keywords: ["C4477"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4484.md b/docs/error-messages/compiler-warnings/compiler-warning-c4484.md index 759ecc6783e..72034be28b7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4484.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4484.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning C4484" title: "Compiler Warning C4484" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning C4484" +ms.date: 11/04/2016 f1_keywords: ["C4484"] helpviewer_keywords: ["C4484"] -ms.assetid: 3d30e5b3-2297-45b7-a37a-1360056fdd0e --- # Compiler Warning C4484 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4485.md b/docs/error-messages/compiler-warnings/compiler-warning-c4485.md index 0aa6cf47a9e..6711406f3e3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4485.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4485.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning C4485" title: "Compiler Warning C4485" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning C4485" +ms.date: 11/04/2016 f1_keywords: ["C4485"] helpviewer_keywords: ["C4485"] -ms.assetid: a6f2b437-ca93-4dcd-b9cb-df415e10df86 --- # Compiler Warning C4485 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4461.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4461.md index 38f9cedb814..62fa36aa89a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4461.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4461.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4461" title: "Compiler Warning (level 1) C4461" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4461" +ms.date: 11/04/2016 f1_keywords: ["C4461"] helpviewer_keywords: ["C4461"] -ms.assetid: 104ffecc-3dd4-4cb1-89a8-81154fbe46d9 --- # Compiler Warning (level 1) C4461 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4462.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4462.md index 3f4efd4cd2e..ce4fe63e11b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4462.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4462.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4462" title: "Compiler Warning (level 1) C4462" -ms.date: "10/25/2017" +description: "Learn more about: Compiler Warning (level 1) C4462" +ms.date: 10/25/2017 f1_keywords: ["C4462"] helpviewer_keywords: ["C4462"] -ms.assetid: 4e20aca4-293e-4c75-a83d-961c27ab7840 --- # Compiler Warning (level 1) C4462 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4470.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4470.md index fed27f37f93..8cc35e1f593 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4470.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4470.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4470" title: "Compiler Warning (level 1) C4470" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4470" +ms.date: 11/04/2016 f1_keywords: ["C4470"] helpviewer_keywords: ["C4470"] -ms.assetid: f52a3eaa-a235-4747-a47d-9ec4ad4cb0ea --- # Compiler Warning (level 1) C4470 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4486.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4486.md index ffcdb18f020..0d0fc68d539 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4486.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4486.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4486" title: "Compiler Warning (level 1) C4486" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4486" +ms.date: 11/04/2016 f1_keywords: ["C4486"] helpviewer_keywords: ["C4486"] -ms.assetid: 2c0c59e3-d025-4d97-8da2-fa27df1402fc --- # Compiler Warning (level 1) C4486 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4488.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4488.md index 37061109824..972d534a5a2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4488.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4488.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4488" title: "Compiler Warning (level 1) C4488" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4488" +ms.date: 11/04/2016 f1_keywords: ["C4488"] helpviewer_keywords: ["C4488"] -ms.assetid: 55625e46-ddb5-4c7c-99c7-cd4aa9f879bd --- # Compiler Warning (level 1) C4488 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4489.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4489.md index cdd7df9b79b..a5709ed8687 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4489.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4489.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4489" title: "Compiler Warning (level 1) C4489" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4489" +ms.date: 11/04/2016 f1_keywords: ["C4489"] helpviewer_keywords: ["C4489"] -ms.assetid: 43b51c8c-27b5-44c9-b974-fe4b48f4896f --- # Compiler Warning (level 1) C4489 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4490.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4490.md index f2c3fe54c63..cf731a936b9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4490.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4490.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4490" title: "Compiler Warning (level 1) C4490" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4490" +ms.date: 11/04/2016 f1_keywords: ["C4490"] helpviewer_keywords: ["C4490"] -ms.assetid: f9b03ecf-41a1-4f4d-a74c-2c1e88234ccc --- # Compiler Warning (level 1) C4490 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4502.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4502.md index 273b48e6ebb..febc9be3e3b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4502.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4502.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4502" title: "Compiler Warning (level 1) C4502" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4502" +ms.date: 11/04/2016 f1_keywords: ["C4502"] helpviewer_keywords: ["C4502"] -ms.assetid: d8d43153-a40c-4b96-bc11-64028a144d70 --- # Compiler Warning (level 1) C4502 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4503.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4503.md index 93f8f7c85d8..bd1f2733869 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4503.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4503.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4503" title: "Compiler Warning (level 1) C4503" -ms.date: "05/14/2018" +description: "Learn more about: Compiler Warning (level 1) C4503" +ms.date: 05/14/2018 f1_keywords: ["C4503"] helpviewer_keywords: ["C4503"] -ms.assetid: 7c5a98ae-5b6d-41d8-b881-12d3ffd5e392 --- # Compiler Warning (level 1) C4503 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4506.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4506.md index d829b87e503..d2960d7acf3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4506.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4506.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4506" title: "Compiler Warning (level 1) C4506" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4506" +ms.date: 11/04/2016 f1_keywords: ["C4506"] helpviewer_keywords: ["C4506"] -ms.assetid: aa682869-65d1-4dad-ba32-198f10b44f91 --- # Compiler Warning (level 1) C4506 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4508.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4508.md index ea380ced71e..34c87bb27a2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4508.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4508.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4508" title: "Compiler Warning (level 1) C4508" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4508" +ms.date: 11/04/2016 f1_keywords: ["C4508"] helpviewer_keywords: ["C4508"] -ms.assetid: c05f113b-b789-4df0-a4ef-78bce4767021 --- # Compiler Warning (level 1) C4508 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4518.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4518.md index d213cbd1662..d63e8b14aaf 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4518.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4518.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4518" title: "Compiler Warning (level 1) C4518" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4518" +ms.date: 11/04/2016 f1_keywords: ["C4518"] helpviewer_keywords: ["C4518"] -ms.assetid: 4ad21004-f076-43fd-99f4-4bf1f9be4c0b --- # Compiler Warning (level 1) C4518 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4511.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4511.md index efce6d5d002..609b70accec 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4511.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4511.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4511" title: "Compiler Warning (level 3) C4511" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4511" +ms.date: 11/04/2016 f1_keywords: ["C4511"] helpviewer_keywords: ["C4511"] -ms.assetid: a01286b2-3dd9-4a97-a5ee-dd0e7b63ef8b --- # Compiler Warning (level 3) C4511 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4463.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4463.md index a83f287042c..ea4619ef50c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4463.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4463.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4463" title: "Compiler Warning (level 4) C4463" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4463" +ms.date: 11/04/2016 f1_keywords: ["C4463"] helpviewer_keywords: ["C4463"] -ms.assetid: a07ae70c-db4e-472b-8b58-9137d9997323 --- # Compiler Warning (level 4) C4463 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4464.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4464.md index a2e848963a9..ed8362ff037 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4464.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4464.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler Warning (level 4, off) C4464" title: "Compiler Warning (level 4) C4464" +description: "Learn more about: Compiler Warning (level 4, off) C4464" ms.date: 09/14/2022 f1_keywords: ["C4464"] helpviewer_keywords: ["C4464"] diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4471.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4471.md index b3d28946c36..fdba3fbfe5b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4471.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4471.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4471" title: "Compiler Warning (level 4) C4471" -ms.date: "04/24/2017" +description: "Learn more about: Compiler Warning (level 4) C4471" +ms.date: 04/24/2017 f1_keywords: ["C4471"] helpviewer_keywords: ["C4471"] -ms.assetid: ccfd8bd5-bc1b-4be7-a6ea-0e3a7add6607 --- # Compiler Warning (level 4) C4471 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4481.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4481.md index 614c242c71c..adcda6aff5f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4481.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4481.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4481" title: "Compiler Warning (level 4) C4481" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4481" +ms.date: 11/04/2016 f1_keywords: ["C4481"] helpviewer_keywords: ["C4481"] -ms.assetid: 7bfd4e0c-b452-4e6c-b7c4-ac5cc93fe4ea --- # Compiler Warning (level 4) C4481 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4487.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4487.md index 0a929f820a3..d51cec97ca6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4487.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4487.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4487" title: "Compiler Warning (level 4) C4487" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4487" +ms.date: 11/04/2016 f1_keywords: ["C4487"] helpviewer_keywords: ["C4487"] -ms.assetid: 796144cf-cd3c-4edc-b6a4-96192b7eb4f0 --- # Compiler Warning (level 4) C4487 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4505.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4505.md index 2c714f0a99c..9c7d9989148 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4505.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4505.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4505" title: "Compiler Warning (level 4) C4505" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4505" +ms.date: 11/04/2016 f1_keywords: ["C4505"] helpviewer_keywords: ["C4505"] -ms.assetid: 068716a0-7dd2-40af-abf4-478f893b48c5 --- # Compiler Warning (level 4) C4505 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4510.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4510.md index 41cf8e5f6b3..3ed173e3f0a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4510.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4510.md @@ -1,10 +1,9 @@ --- title: "Compiler Warning (level 4) C4510" -description: Compiler warning C4510 description and solution. -ms.date: "09/22/2019" +description: "Compiler warning C4510 description and solution." +ms.date: 09/22/2019 f1_keywords: ["C4510"] helpviewer_keywords: ["C4510"] -ms.assetid: fd28d1d4-ad27-4dad-94c0-9dba46c93180 --- # Compiler Warning (level 4) C4510 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4512.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4512.md index 30cdb713180..ab781a65058 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4512.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4512.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4512" title: "Compiler Warning (level 4) C4512" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4512" +ms.date: 11/04/2016 f1_keywords: ["C4512"] helpviewer_keywords: ["C4512"] -ms.assetid: afb68995-684a-4be5-a73a-38d7a16dc030 --- # Compiler Warning (level 4) C4512 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4513.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4513.md index 7844ee79afe..9261d6c13dd 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4513.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4513.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4513" title: "Compiler Warning (level 4) C4513" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4513" +ms.date: 11/04/2016 f1_keywords: ["C4513"] helpviewer_keywords: ["C4513"] -ms.assetid: 6877334a-f30a-4184-9483-dac3348737a4 --- # Compiler Warning (level 4) C4513 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4514.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4514.md index a89c72d53be..f0098802be9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4514.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4514.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4514" title: "Compiler Warning (level 4) C4514" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4514" +ms.date: 11/04/2016 f1_keywords: ["C4514"] helpviewer_keywords: ["C4514"] -ms.assetid: cdae966a-9cd4-4e31-af30-2a014e68f614 --- # Compiler Warning (level 4) C4514 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4515.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4515.md index 0330b8fd352..b6633afa237 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4515.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4515.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4515" title: "Compiler Warning (level 4) C4515" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4515" +ms.date: 11/04/2016 f1_keywords: ["C4515"] helpviewer_keywords: ["C4515"] -ms.assetid: 167b5177-3f89-418b-b6c8-7de634f6b28f --- # Compiler Warning (level 4) C4515 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4516.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4516.md index 070e908eac0..0ac56deda3b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4516.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4516.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4516" title: "Compiler Warning (level 4) C4516" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4516" +ms.date: 11/04/2016 f1_keywords: ["C4516"] helpviewer_keywords: ["C4516"] -ms.assetid: 6677bb1f-d26e-4ab9-8644-6b5a2a8f4ff8 --- # Compiler Warning (level 4) C4516 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4517.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4517.md index 64979fc9a84..b64a35c0020 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4517.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4517.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4517" title: "Compiler Warning (level 4) C4517" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4517" +ms.date: 11/04/2016 f1_keywords: ["C4517"] helpviewer_keywords: ["C4517"] -ms.assetid: 87cc12b8-7331-4f3a-a863-d6a75d9599c3 --- # Compiler Warning (level 4) C4517 From 5c4d5dad1d29378a9050915fa394cc00754024bd Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 30 Aug 2025 21:30:15 +0800 Subject: [PATCH 1661/2255] Fix wrong `-fsanitizer=address` flag in "Walkthrough: Use Address Sanitizer Continue On Error to find memory safety issues" --- docs/sanitizers/asan-continue-on-error.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-continue-on-error.md b/docs/sanitizers/asan-continue-on-error.md index 9d820f863e8..9c322d9b189 100644 --- a/docs/sanitizers/asan-continue-on-error.md +++ b/docs/sanitizers/asan-continue-on-error.md @@ -12,7 +12,7 @@ In this walkthrough, create checked builds that find and report memory safety er Memory safety errors like out-of-bounds memory reads and writes, using memory after it has been freed, `NULL` pointer dereferences, and so on, are a top concern for C/C++ code. Address Sanitizer (ASAN) is a compiler and runtime technology that exposes these kinds of hard-to-find bugs, and does it with zero false positives. For an overview of ASAN, see [AddressSanitizer](asan.md). -Continue On Error (COE) is a new ASAN feature that automatically diagnoses and reports memory safety errors as your app runs. When your program exits, a summary of unique memory safety errors is output to `stdout`, `stderr`, or to a log file of your choice. When you create a standard C++ checked build with `-fsanitizer=address`, calls to allocators, deallocators such as `free`, `memcpy`, `memset`, and so on, are forwarded to the ASAN runtime. The ASAN runtime provides the same semantics for these functions, but monitors what happens with the memory. ASAN diagnoses and reports hidden memory safety errors, with zero false positives, as your app runs. +Continue On Error (COE) is a new ASAN feature that automatically diagnoses and reports memory safety errors as your app runs. When your program exits, a summary of unique memory safety errors is output to `stdout`, `stderr`, or to a log file of your choice. When you create a standard C++ checked build with `-fsanitize=address`, calls to allocators, deallocators such as `free`, `memcpy`, `memset`, and so on, are forwarded to the ASAN runtime. The ASAN runtime provides the same semantics for these functions, but monitors what happens with the memory. ASAN diagnoses and reports hidden memory safety errors, with zero false positives, as your app runs. A significant advantage of COE is that, unlike the previous ASAN behavior, your program doesn't stop running when the first memory error is found. Instead, ASAN notes the error, and your app continues to run. After your app exits, a summary of all the memory issues is output. From 960182794e5bd836a313d613c2c11978a773d944 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 30 Aug 2025 21:35:41 +0800 Subject: [PATCH 1662/2255] Remove trailing spaces for examples in "Walkthrough: Use Address Sanitizer Continue On Error to find memory safety issues" --- docs/sanitizers/asan-continue-on-error.md | 36 +++++++++++------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/sanitizers/asan-continue-on-error.md b/docs/sanitizers/asan-continue-on-error.md index 9c322d9b189..fe0ac9d406b 100644 --- a/docs/sanitizers/asan-continue-on-error.md +++ b/docs/sanitizers/asan-continue-on-error.md @@ -44,21 +44,21 @@ Create the example: ```cpp #include #include - + void BadFunction(int *pointer) { free(pointer); free(pointer); // double-free! } - + int main(int argc, const char *argv[]) { int *pointer = static_cast(malloc(4)); BadFunction(pointer); - + // Normally we'd crash before this, but with COE we can see heap-use-after-free error as well printf("\n\n******* Pointer value: %d\n", *pointer); - + return 1; } ``` @@ -181,24 +181,24 @@ Create the example: 1. In that directory, create a source file, for example, `coe.cpp`, and paste the following code: ```cpp - #include - + #include + char* func(char* buf, size_t sz) - { - char* local = (char*)malloc(sz); - for (auto ii = 0; ii <= sz; ii++) // bad loop exit test + { + char* local = (char*)malloc(sz); + for (auto ii = 0; ii <= sz; ii++) // bad loop exit test { - local[ii] = ~buf[ii]; // Two memory safety errors + local[ii] = ~buf[ii]; // Two memory safety errors } - - return local; - } - - char buffer[10] = {0,1,2,3,4,5,6,7,8,9}; - + + return local; + } + + char buffer[10] = {0,1,2,3,4,5,6,7,8,9}; + int main() - { - char* inverted_buf= func(buffer, 10); + { + char* inverted_buf= func(buffer, 10); } ``` From 8f9c7346c493eaaf37134214b59b83061ae0c19c Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 30 Aug 2025 22:11:37 +0800 Subject: [PATCH 1663/2255] Fix a few typos in "Regular expressions (C++)" --- docs/standard-library/regular-expressions-cpp.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/standard-library/regular-expressions-cpp.md b/docs/standard-library/regular-expressions-cpp.md index 8b4505025ce..cdbebab579e 100644 --- a/docs/standard-library/regular-expressions-cpp.md +++ b/docs/standard-library/regular-expressions-cpp.md @@ -12,7 +12,7 @@ The C++ standard library supports multiple regular expression grammars. This top ## Regular expression grammar -The regular expression grammar to use is by specified by the use of one of the `std::regex_constants::syntax_option_type` enumeration values. These regular expression grammars are defined in `std::regex_constants`: +The regular expression grammar to use is specified by the use of one of the `std::regex_constants::syntax_option_type` enumeration values. These regular expression grammars are defined in `std::regex_constants`: - ECMAScript: This is closest to the grammar used by JavaScript and the .NET languages. - basic: The POSIX basic regular expressions or BRE. @@ -56,7 +56,7 @@ An element can be one of the following: - An *anchor*. Anchor `^` matches the beginning of the target sequence. Anchor `$` matches the end of the target sequence. -A *capture group* of the form (*subexpression*), or \\(*subexpression*\\) in basic and grep, which matches the sequence of characters in the target sequence that is matched by the pattern between the delimiters. +- A *capture group* of the form (*subexpression*), or \\(*subexpression*\\) in basic and grep, which matches the sequence of characters in the target sequence that is matched by the pattern between the delimiters. - An *identity escape* of the form `\k`, which matches the character `k` in the target sequence. @@ -92,7 +92,7 @@ In ECMAScript, an element can also be one of the following: - A *control escape sequence* of the form `\ck`. Matches the control character that is named by the character `k`. -- A *word boundary assert* of the form`\b`. Matches when the current position in the target sequence is immediately after a *word boundary*. +- A *word boundary assert* of the form `\b`. Matches when the current position in the target sequence is immediately after a *word boundary*. - A *negative word boundary assert* of the form `\B`. Matches when the current position in the target sequence isn't immediately after a *word boundary*. From abdc8a3f88324830973ccaf547a3d1fa1230cbbb Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 30 Aug 2025 22:12:19 +0800 Subject: [PATCH 1664/2255] Move `title` metadata above `description` in "Regular expressions (C++)" --- docs/standard-library/regular-expressions-cpp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard-library/regular-expressions-cpp.md b/docs/standard-library/regular-expressions-cpp.md index cdbebab579e..4704305fde6 100644 --- a/docs/standard-library/regular-expressions-cpp.md +++ b/docs/standard-library/regular-expressions-cpp.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Regular Expressions (C++)" title: "Regular Expressions (C++)" +description: "Learn more about: Regular Expressions (C++)" ms.date: 07/15/2021 helpviewer_keywords: ["regular expressions [C++]"] no-loc: [ECMAScript, basic, extended, awk, grep, egrep] From 8ccf0ccccc46835bcbf5e9978c136925f49f8cbe Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 30 Aug 2025 22:21:40 +0800 Subject: [PATCH 1665/2255] Add blockquotes for warning messages in range [C4521, C4560] --- .../compiler-warnings/compiler-warning-level-1-c4526.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4540.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4544.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4545.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4546.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4547.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4548.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4549.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4550.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4551.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4552.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4553.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4555.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4558.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4521.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4522.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4523.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4534.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4535.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4538.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4543.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4554.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4557.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4536.md | 2 +- 24 files changed, 24 insertions(+), 24 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4526.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4526.md index f3b0427593c..5db1a40fb4a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4526.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4526.md @@ -8,7 +8,7 @@ ms.assetid: 490f8916-5fdc-4cad-b412-76c3382a5976 --- # Compiler Warning (level 1) C4526 -'function' : static member function cannot override virtual function 'virtual function'override ignored, virtual function will be hidden +> 'function' : static member function cannot override virtual function 'virtual function'override ignored, virtual function will be hidden The static member function meets the criteria to override the virtual function, which makes the member function both virtual and static. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4540.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4540.md index cdbd4967530..36c84c4c7e1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4540.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4540.md @@ -8,7 +8,7 @@ ms.assetid: 8085e748-5f4d-43c2-b06d-eaf794edbf72 --- # Compiler Warning (level 1) C4540 -dynamic_cast used to convert to inaccessible or ambiguous base; run-time test will fail ('type1' to 'type2') +> dynamic_cast used to convert to inaccessible or ambiguous base; run-time test will fail ('type1' to 'type2') You used **`dynamic_cast`** to convert from one type to another. The compiler determined that the cast would always fail (return **NULL**) because a base class is inaccessible (**`private`**, for instance) or ambiguous (appears more than once in the class hierarchy, for instance). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4544.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4544.md index 8d72e0375aa..94502d0ab0f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4544.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4544.md @@ -8,7 +8,7 @@ ms.assetid: 11ee04df-41ae-435f-af44-881e801315a8 --- # Compiler Warning (level 1) C4544 -'declaration': Default template argument ignored on this template declaration +> 'declaration': Default template argument ignored on this template declaration A default template argument was specified in an incorrect location and was ignored. A default template argument for a class template can only be specified in the declaration or definition of the class template and not on a member of the class template. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4545.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4545.md index 747aeba94f2..ea9e2f0e7b4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4545.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4545.md @@ -8,7 +8,7 @@ ms.assetid: 43f8f34f-ed46-4661-95c0-c588c577ff73 --- # Compiler Warning (level 1) C4545 -expression before comma evaluates to a function which is missing an argument list +> expression before comma evaluates to a function which is missing an argument list The compiler detected an ill-formed comma expression. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4546.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4546.md index e79fac645f6..59183efd3b2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4546.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4546.md @@ -8,7 +8,7 @@ ms.assetid: 071e1709-3841-46c1-8e71-96109cd22041 --- # Compiler Warning (level 1) C4546 -function call before comma missing argument list +> function call before comma missing argument list The compiler detected an ill-formed comma expression. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4547.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4547.md index 8f29a08438b..d36613a1880 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4547.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4547.md @@ -8,7 +8,7 @@ ms.assetid: 3edf1c2e-c0d5-444d-ae83-44a7cce24bb2 --- # Compiler Warning (level 1) C4547 -'operator' : operator before comma has no effect; expected operator with side-effect +> 'operator' : operator before comma has no effect; expected operator with side-effect The compiler detected an ill-formed comma expression. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4548.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4548.md index c5ca0459485..8ded9143006 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4548.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4548.md @@ -8,7 +8,7 @@ ms.assetid: 2cee817e-e463-4d90-bbd2-de120d48c101 --- # Compiler Warning (level 1) C4548 -expression before comma has no effect; expected expression with side-effect +> expression before comma has no effect; expected expression with side-effect The compiler detected an ill-formed comma expression. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4549.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4549.md index fd330c52a08..fc8bb961710 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4549.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4549.md @@ -8,7 +8,7 @@ ms.assetid: 81a07676-625b-4f58-9b0c-3ee22830b04a --- # Compiler Warning (level 1) C4549 -'operator' : operator before comma has no effect; did you intend 'operator'? +> 'operator' : operator before comma has no effect; did you intend 'operator'? The compiler detected an ill-formed comma expression. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4550.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4550.md index 11dd28ec1b2..becf3959641 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4550.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4550.md @@ -8,7 +8,7 @@ ms.assetid: f902b4ed-5f17-48ea-b693-92f4fb8c8054 --- # Compiler Warning (level 1) C4550 -expression evaluates to a function which is missing an argument list +> expression evaluates to a function which is missing an argument list A dereferenced pointer to a function is missing an argument list. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4551.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4551.md index 2ac75c88a32..5f67c2314f5 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4551.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4551.md @@ -8,7 +8,7 @@ ms.assetid: 458b59bd-e2d7-425f-9ba6-268ff200424f --- # Compiler Warning (level 1) C4551 -function call missing argument list +> function call missing argument list A function call must include the open and close parentheses after the function name even if the function takes no parameters. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4552.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4552.md index a48817856db..bd29fb2290a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4552.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4552.md @@ -8,7 +8,7 @@ ms.assetid: ebbbb5ee-1c19-45bd-b386-41a19630fc76 --- # Compiler Warning (level 1) C4552 -'operator' : operator has no effect; expected operator with side-effect +> 'operator' : operator has no effect; expected operator with side-effect If an expression statement has an operator with no side effect as the top of the expression, it's probably a mistake. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4553.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4553.md index d8ded153113..c82bc0cd99a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4553.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4553.md @@ -8,7 +8,7 @@ ms.assetid: d8aacbe0-3cb5-4367-a6e5-fd7e28f0ff9d --- # Compiler Warning (level 1) C4553 -'operator' : operator has no effect; did you intend 'operator'? +> 'operator' : operator has no effect; did you intend 'operator'? If an expression statement has an operator with no side effect as the top of the expression, it's probably a mistake. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4555.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4555.md index f00425ae350..d7282ca22ea 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4555.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4555.md @@ -8,7 +8,7 @@ ms.assetid: 50b286c1-f7bf-4292-b1fa-baaac9538611 --- # Compiler Warning (level 1) C4555 -expression has no effect; expected expression with side-effect +> expression has no effect; expected expression with side-effect This warning informs you when an expression has no effect. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4558.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4558.md index 33ca5b15716..611984f103b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4558.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4558.md @@ -8,7 +8,7 @@ ms.assetid: 52bb0324-7bec-468c-b35b-13a08d38e578 --- # Compiler Warning (level 1) C4558 -value of operand 'value' is out of range 'lowerbound - upperbound' +> value of operand 'value' is out of range 'lowerbound - upperbound' The value passed to an assembly language instruction is out of the range specified for the parameter. The value will be truncated. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4521.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4521.md index fc0524f6646..dad7a954ae3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4521.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4521.md @@ -8,7 +8,7 @@ ms.assetid: 057d770c-ebcf-44cd-b943-1b1bb1ceaa8c --- # Compiler Warning (level 3) C4521 -'class' : multiple copy constructors specified +> 'class' : multiple copy constructors specified The class has multiple copy constructors of a single type. This warning is informational; the constructors are callable in your program. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4522.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4522.md index 3930d4347d2..608d3ed3cc6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4522.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4522.md @@ -8,7 +8,7 @@ ms.assetid: 7065dc27-0b6c-4e68-a345-c51cdb99a20b --- # Compiler Warning (level 3) C4522 -'class' : multiple assignment operators specified +> 'class' : multiple assignment operators specified The class has multiple assignment operators of a single type. This warning is informational; the constructors are callable in your program. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4523.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4523.md index 1054bb6008c..95220d4dde5 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4523.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4523.md @@ -8,6 +8,6 @@ ms.assetid: 0f28761d-999f-43fe-9481-d02afd9b4f60 --- # Compiler Warning (level 3) C4523 -'class' : multiple destructors specified +> 'class' : multiple destructors specified The class has multiple destructors. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4534.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4534.md index 9e5841e73a5..8067a30e099 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4534.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4534.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C4534"] --- # Compiler Warning (level 3) C4534 -'constructor' will not be a default constructor for class 'class' due to the default argument +> 'constructor' will not be a default constructor for class 'class' due to the default argument An unmanaged class can have a constructor with parameters that have default values and the compiler will use this as the default constructor. A class marked with the `value` keyword will not use a constructor with default values for its parameters as a default constructor. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4535.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4535.md index 254257c0bab..50de9792810 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4535.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4535.md @@ -8,7 +8,7 @@ ms.assetid: 2c5ad1aa-2558-41d1-8f06-47fef74c8d9b --- # Compiler Warning (level 3) C4535 -calling _set_se_translator() requires /EHa +> calling _set_se_translator() requires /EHa The use of [_set_se_translator](../../c-runtime-library/reference/set-se-translator.md) requires the [/EHa](../../build/reference/eh-exception-handling-model.md) compiler option and not **/EHs**. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4538.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4538.md index 255ed1ba17c..cd0b432e554 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4538.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4538.md @@ -8,7 +8,7 @@ ms.assetid: 747e3d51-b6d0-41c1-a726-7af3253b59d7 --- # Compiler Warning (level 3) C4538 -'type' : const/volatile qualifiers on this type are not supported +> 'type' : const/volatile qualifiers on this type are not supported A qualifier keyword was applied to an array incorrectly. For more information, see [array](../../extensions/arrays-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4543.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4543.md index 56157264165..1b5b6fc5f0e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4543.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4543.md @@ -8,7 +8,7 @@ ms.assetid: a09b39a7-d3b8-435c-86a3-2233c512f24b --- # Compiler Warning (level 3) C4543 -Injected text suppressed by attribute 'no_injected_text' +> Injected text suppressed by attribute 'no_injected_text' The [no_injected_text](../../windows/attributes/no-injected-text.md) attribute appeared in source code, which means the compiler will prevent attributes from injecting code. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4554.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4554.md index 47742011a04..0467351aa82 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4554.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4554.md @@ -8,7 +8,7 @@ ms.assetid: 55bb68f0-2e80-4330-8921-51083c4f8d53 --- # Compiler Warning (level 3) C4554 -'operator' : check operator precedence for possible error; use parentheses to clarify precedence +> 'operator' : check operator precedence for possible error; use parentheses to clarify precedence The following sample generates C4554: diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4557.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4557.md index 45a74eb0f47..72de17e6164 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4557.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4557.md @@ -8,7 +8,7 @@ ms.assetid: 7d9db716-03b2-4ee5-9b09-ba8aa5aa7e4c --- # Compiler Warning (level 3) C4557 -'__assume' contains effect 'effect' +> '__assume' contains effect 'effect' The value passed to an [__assume](../../intrinsics/assume.md) statement2 was modified. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4536.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4536.md index 68bd5482f94..5eedcd1252a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4536.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4536.md @@ -8,7 +8,7 @@ ms.assetid: ab4d0686-f813-4e88-a264-b40d3630ed6c --- # Compiler Warning (level 4) C4536 -'type name' : type-name exceeds meta-data limit of 'limit' characters +> 'type name' : type-name exceeds meta-data limit of 'limit' characters A type name would be truncated in metadata if it was a managed type. See [C3180](../../error-messages/compiler-errors-2/compiler-error-c3180.md) for more information. From 4057a7b674d0ddeb2c62c1ece8fca3d2a3dd3b40 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 30 Aug 2025 22:28:31 +0800 Subject: [PATCH 1666/2255] Add "Remarks" and "Example" headings for warning references in range [C4521, C4560] --- .../compiler-warnings/compiler-warning-level-1-c4526.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4530.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4540.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4544.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4545.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4546.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4547.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4548.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4549.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4550.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4551.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4552.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4553.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4555.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4558.md | 4 ++++ .../compiler-warnings/compiler-warning-level-3-c4521.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4522.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4523.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4534.md | 4 ++++ .../compiler-warnings/compiler-warning-level-3-c4535.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4538.md | 4 ++++ .../compiler-warnings/compiler-warning-level-3-c4543.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4554.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4557.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4536.md | 2 ++ 25 files changed, 80 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4526.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4526.md index 5db1a40fb4a..64c4b01310e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4526.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4526.md @@ -10,8 +10,12 @@ ms.assetid: 490f8916-5fdc-4cad-b412-76c3382a5976 > 'function' : static member function cannot override virtual function 'virtual function'override ignored, virtual function will be hidden +## Remarks + The static member function meets the criteria to override the virtual function, which makes the member function both virtual and static. +## Example + The following code generates C4526: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4530.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4530.md index 0575689ff83..c55730c0fdc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4530.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4530.md @@ -10,10 +10,10 @@ ms.assetid: a04dcdb2-84db-459d-9e5e-4e743887465f > C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc -The code uses C++ exception handling, but [/EHsc](../../build/reference/eh-exception-handling-model.md) wasn't included in the compiler options. - ## Remarks +The code uses C++ exception handling, but [/EHsc](../../build/reference/eh-exception-handling-model.md) wasn't included in the compiler options. + The compiler requires the **`/EHsc`** option to build C++ code that follows the C++ standard for exception handling. Standard C++ *unwind semantics* specifies that objects and stack frames constructed between where an exception is thrown and where it's caught must be destroyed and their resources recovered. This process is known as *unwinding the stack*. The **`/EHsc`** option tells the compiler to generate code that calls the destructors on automatic storage objects when an exception passes through the containing stack frame. *Automatic storage* objects are objects allocated on the stack, such as local variables. It's called automatic storage because it's allocated automatically when functions are called, and released automatically when they return. A *stack frame* is the data placed on the stack when a function is called, along with its automatic storage. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4540.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4540.md index 36c84c4c7e1..c86925a81a2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4540.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4540.md @@ -10,8 +10,12 @@ ms.assetid: 8085e748-5f4d-43c2-b06d-eaf794edbf72 > dynamic_cast used to convert to inaccessible or ambiguous base; run-time test will fail ('type1' to 'type2') +## Remarks + You used **`dynamic_cast`** to convert from one type to another. The compiler determined that the cast would always fail (return **NULL**) because a base class is inaccessible (**`private`**, for instance) or ambiguous (appears more than once in the class hierarchy, for instance). +## Example + The following shows an example of this warning. Class **B** is derived from class **A**. The program uses **`dynamic_cast`** to cast from class **B** (the derived class) to class **A**, which will always fail because class **B** is **`private`** and thus inaccessible. Changing the access of **A** to **`public`** will resolve the warning. ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4544.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4544.md index 94502d0ab0f..15fd2a8eac8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4544.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4544.md @@ -10,8 +10,12 @@ ms.assetid: 11ee04df-41ae-435f-af44-881e801315a8 > 'declaration': Default template argument ignored on this template declaration +## Remarks + A default template argument was specified in an incorrect location and was ignored. A default template argument for a class template can only be specified in the declaration or definition of the class template and not on a member of the class template. +## Example + This sample generates C4545, and the next sample shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4545.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4545.md index ea9e2f0e7b4..3dd1227362b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4545.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4545.md @@ -10,10 +10,14 @@ ms.assetid: 43f8f34f-ed46-4661-95c0-c588c577ff73 > expression before comma evaluates to a function which is missing an argument list +## Remarks + The compiler detected an ill-formed comma expression. This warning is off by default. For more information, see [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). +## Example + The following sample generates C4545: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4546.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4546.md index 59183efd3b2..4deead90523 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4546.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4546.md @@ -10,6 +10,8 @@ ms.assetid: 071e1709-3841-46c1-8e71-96109cd22041 > function call before comma missing argument list +## Remarks + The compiler detected an ill-formed comma expression. This warning is off by default. For more information, see [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4547.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4547.md index d36613a1880..4bf6d9b4320 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4547.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4547.md @@ -10,10 +10,14 @@ ms.assetid: 3edf1c2e-c0d5-444d-ae83-44a7cce24bb2 > 'operator' : operator before comma has no effect; expected operator with side-effect +## Remarks + The compiler detected an ill-formed comma expression. This warning is off by default. For more information, see [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). +## Example + The following sample generates C4547: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4548.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4548.md index 8ded9143006..1cb99ffd6c7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4548.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4548.md @@ -10,10 +10,14 @@ ms.assetid: 2cee817e-e463-4d90-bbd2-de120d48c101 > expression before comma has no effect; expected expression with side-effect +## Remarks + The compiler detected an ill-formed comma expression. This warning is off by default. For more information, see [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). +## Example + The following sample generates C4548: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4549.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4549.md index fc8bb961710..b56a512b9e3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4549.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4549.md @@ -10,10 +10,14 @@ ms.assetid: 81a07676-625b-4f58-9b0c-3ee22830b04a > 'operator' : operator before comma has no effect; did you intend 'operator'? +## Remarks + The compiler detected an ill-formed comma expression. This warning is off by default. For more information, see [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). +## Example + The following sample generates C4549: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4550.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4550.md index becf3959641..8792d6253f8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4550.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4550.md @@ -10,6 +10,8 @@ ms.assetid: f902b4ed-5f17-48ea-b693-92f4fb8c8054 > expression evaluates to a function which is missing an argument list +## Remarks + A dereferenced pointer to a function is missing an argument list. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4551.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4551.md index 5f67c2314f5..4ff6fa1c7c1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4551.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4551.md @@ -10,8 +10,12 @@ ms.assetid: 458b59bd-e2d7-425f-9ba6-268ff200424f > function call missing argument list +## Remarks + A function call must include the open and close parentheses after the function name even if the function takes no parameters. +## Example + The following sample generates C4551: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4552.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4552.md index bd29fb2290a..39ef2a220ef 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4552.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4552.md @@ -10,10 +10,14 @@ ms.assetid: ebbbb5ee-1c19-45bd-b386-41a19630fc76 > 'operator' : operator has no effect; expected operator with side-effect +## Remarks + If an expression statement has an operator with no side effect as the top of the expression, it's probably a mistake. To override this warning, put the expression in parentheses. +## Example + The following sample generates C4552: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4553.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4553.md index c82bc0cd99a..3dc75cc8aa7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4553.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4553.md @@ -10,8 +10,12 @@ ms.assetid: d8aacbe0-3cb5-4367-a6e5-fd7e28f0ff9d > 'operator' : operator has no effect; did you intend 'operator'? +## Remarks + If an expression statement has an operator with no side effect as the top of the expression, it's probably a mistake. +## Example + The following sample generates C4553: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4555.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4555.md index d7282ca22ea..0d0764247be 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4555.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4555.md @@ -10,10 +10,14 @@ ms.assetid: 50b286c1-f7bf-4292-b1fa-baaac9538611 > expression has no effect; expected expression with side-effect +## Remarks + This warning informs you when an expression has no effect. This warning is off by default. See [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md) for more information. +## Example + For example: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4558.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4558.md index 611984f103b..59f90cb7917 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4558.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4558.md @@ -10,8 +10,12 @@ ms.assetid: 52bb0324-7bec-468c-b35b-13a08d38e578 > value of operand 'value' is out of range 'lowerbound - upperbound' +## Remarks + The value passed to an assembly language instruction is out of the range specified for the parameter. The value will be truncated. +## Example + The following sample generates C4558: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4521.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4521.md index dad7a954ae3..0d67d7caa89 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4521.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4521.md @@ -10,6 +10,8 @@ ms.assetid: 057d770c-ebcf-44cd-b943-1b1bb1ceaa8c > 'class' : multiple copy constructors specified +## Remarks + The class has multiple copy constructors of a single type. This warning is informational; the constructors are callable in your program. Use the [warning](../../preprocessor/warning.md) pragma to suppress this warning. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4522.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4522.md index 608d3ed3cc6..a255d4f7ce0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4522.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4522.md @@ -10,6 +10,8 @@ ms.assetid: 7065dc27-0b6c-4e68-a345-c51cdb99a20b > 'class' : multiple assignment operators specified +## Remarks + The class has multiple assignment operators of a single type. This warning is informational; the constructors are callable in your program. Use the [warning](../../preprocessor/warning.md) pragma to suppress this warning. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4523.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4523.md index 95220d4dde5..e0772f83245 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4523.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4523.md @@ -10,4 +10,6 @@ ms.assetid: 0f28761d-999f-43fe-9481-d02afd9b4f60 > 'class' : multiple destructors specified +## Remarks + The class has multiple destructors. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4534.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4534.md index 8067a30e099..217022d92f8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4534.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4534.md @@ -9,10 +9,14 @@ helpviewer_keywords: ["C4534"] > 'constructor' will not be a default constructor for class 'class' due to the default argument +## Remarks + An unmanaged class can have a constructor with parameters that have default values and the compiler will use this as the default constructor. A class marked with the `value` keyword will not use a constructor with default values for its parameters as a default constructor. For more information, see [Classes and Structs](../../extensions/classes-and-structs-cpp-component-extensions.md). +## Example + The following sample generates C4534: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4535.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4535.md index 50de9792810..04d4926f808 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4535.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4535.md @@ -10,6 +10,8 @@ ms.assetid: 2c5ad1aa-2558-41d1-8f06-47fef74c8d9b > calling _set_se_translator() requires /EHa +## Remarks + The use of [_set_se_translator](../../c-runtime-library/reference/set-se-translator.md) requires the [/EHa](../../build/reference/eh-exception-handling-model.md) compiler option and not **/EHs**. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4538.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4538.md index cd0b432e554..463d0b9d6a1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4538.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4538.md @@ -10,8 +10,12 @@ ms.assetid: 747e3d51-b6d0-41c1-a726-7af3253b59d7 > 'type' : const/volatile qualifiers on this type are not supported +## Remarks + A qualifier keyword was applied to an array incorrectly. For more information, see [array](../../extensions/arrays-cpp-component-extensions.md). +## Example + The following sample generates C4538: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4543.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4543.md index 1b5b6fc5f0e..8262f0ba6db 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4543.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4543.md @@ -10,6 +10,8 @@ ms.assetid: a09b39a7-d3b8-435c-86a3-2233c512f24b > Injected text suppressed by attribute 'no_injected_text' +## Remarks + The [no_injected_text](../../windows/attributes/no-injected-text.md) attribute appeared in source code, which means the compiler will prevent attributes from injecting code. This warning is to remind you that attributes will not be able to inject code. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4554.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4554.md index 0467351aa82..41d19d1d47d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4554.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4554.md @@ -10,6 +10,8 @@ ms.assetid: 55bb68f0-2e80-4330-8921-51083c4f8d53 > 'operator' : check operator precedence for possible error; use parentheses to clarify precedence +## Example + The following sample generates C4554: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4557.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4557.md index 72de17e6164..0c7060d5c9f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4557.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4557.md @@ -10,10 +10,14 @@ ms.assetid: 7d9db716-03b2-4ee5-9b09-ba8aa5aa7e4c > '__assume' contains effect 'effect' +## Remarks + The value passed to an [__assume](../../intrinsics/assume.md) statement2 was modified. This warning is off by default. See [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md) for more information. +## Example + The following sample generates C4557: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4536.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4536.md index 5eedcd1252a..6286781633b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4536.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4536.md @@ -10,6 +10,8 @@ ms.assetid: ab4d0686-f813-4e88-a264-b40d3630ed6c > 'type name' : type-name exceeds meta-data limit of 'limit' characters +## Remarks + A type name would be truncated in metadata if it was a managed type. See [C3180](../../error-messages/compiler-errors-2/compiler-error-c3180.md) for more information. This warning is off by default. See [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md) for more information. From a411fc1a69915c9f1df273e69ecf143cf2de9289 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 30 Aug 2025 22:30:14 +0800 Subject: [PATCH 1667/2255] Replace term "sample" with "example" for warning references in range [C4521, C4560] --- .../compiler-warnings/compiler-warning-level-1-c4530.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4532.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4533.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4537.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4544.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4545.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4546.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4547.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4548.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4549.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4551.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4552.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4553.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4558.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4521.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4522.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4534.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4535.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4538.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4554.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4557.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4559.md | 2 +- 22 files changed, 23 insertions(+), 23 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4530.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4530.md index c55730c0fdc..6dec2a4d9c9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4530.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4530.md @@ -26,7 +26,7 @@ If no exceptions can possibly be thrown in your executable, you may safely ignor ## Example -The following sample generates C4530: +The following example generates C4530: ```cpp // C4530.cpp @@ -36,4 +36,4 @@ int main() { } ``` -Compile the sample with **`/EHsc`** to resolve the warning. +Compile the example with **`/EHsc`** to resolve the warning. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4532.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4532.md index 000e2059c5b..298b32792e5 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4532.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4532.md @@ -30,7 +30,7 @@ The [`/sdl` (Enable Additional Security Checks)](../../build/reference/sdl-enabl ## Example -The following sample generates C4532; delete or comment out the jump statements to resolve the warnings. +The following example generates C4532; delete or comment out the jump statements to resolve the warnings. ```cpp // C4532.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4533.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4533.md index 11ebe5d5943..371a119dc04 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4533.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4533.md @@ -18,7 +18,7 @@ The [`/sdl` (Enable Additional Security Checks)](../../build/reference/sdl-enabl ## Example -The following sample generates C4533. To resolve the issue, move the initialization before the jump instruction or after the target of the jump. +The following example generates C4533. To resolve the issue, move the initialization before the jump instruction or after the target of the jump. ```cpp // C4533.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4537.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4537.md index 36bf23c975a..221cac585c0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4537.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4537.md @@ -16,7 +16,7 @@ A reference was passed where an object (user-defined type) was expected. A refer ## Example -The following sample generates C4537 and shows how to fix it: +The following example generates C4537 and shows how to fix it: ```cpp // C4537.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4544.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4544.md index 15fd2a8eac8..7767563874e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4544.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4544.md @@ -16,7 +16,7 @@ A default template argument was specified in an incorrect location and was ignor ## Example -This sample generates C4545, and the next sample shows how to fix it: +This example generates C4545, and the next example shows how to fix it: ```cpp // C4544.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4545.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4545.md index 3dd1227362b..c252a8be6a6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4545.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4545.md @@ -18,7 +18,7 @@ This warning is off by default. For more information, see [Compiler Warnings Tha ## Example -The following sample generates C4545: +The following example generates C4545: ```cpp // C4545.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4546.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4546.md index 4deead90523..d96b60360f1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4546.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4546.md @@ -18,7 +18,7 @@ This warning is off by default. For more information, see [Compiler Warnings Tha ## Example -The following sample generates C4546: +The following example generates C4546: ```cpp // C4546.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4547.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4547.md index 4bf6d9b4320..05313513cf0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4547.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4547.md @@ -18,7 +18,7 @@ This warning is off by default. For more information, see [Compiler Warnings Tha ## Example -The following sample generates C4547: +The following example generates C4547: ```cpp // C4547.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4548.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4548.md index 1cb99ffd6c7..d999fa243a9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4548.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4548.md @@ -18,7 +18,7 @@ This warning is off by default. For more information, see [Compiler Warnings Tha ## Example -The following sample generates C4548: +The following example generates C4548: ```cpp // C4548.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4549.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4549.md index b56a512b9e3..c6a12e0bcd8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4549.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4549.md @@ -18,7 +18,7 @@ This warning is off by default. For more information, see [Compiler Warnings Tha ## Example -The following sample generates C4549: +The following example generates C4549: ```cpp // C4549.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4551.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4551.md index 4ff6fa1c7c1..7df51dc698c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4551.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4551.md @@ -16,7 +16,7 @@ A function call must include the open and close parentheses after the function n ## Example -The following sample generates C4551: +The following example generates C4551: ```cpp // C4551.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4552.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4552.md index 39ef2a220ef..02d6e54c730 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4552.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4552.md @@ -18,7 +18,7 @@ To override this warning, put the expression in parentheses. ## Example -The following sample generates C4552: +The following example generates C4552: ```cpp // C4552.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4553.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4553.md index 3dc75cc8aa7..b5ed0ea47ae 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4553.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4553.md @@ -16,7 +16,7 @@ If an expression statement has an operator with no side effect as the top of the ## Example -The following sample generates C4553: +The following example generates C4553: ```cpp // C4553.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4558.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4558.md index 59f90cb7917..99170c858ef 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4558.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4558.md @@ -16,7 +16,7 @@ The value passed to an assembly language instruction is out of the range specifi ## Example -The following sample generates C4558: +The following example generates C4558: ```cpp // C4558.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4521.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4521.md index 0d67d7caa89..3cc4a7fe622 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4521.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4521.md @@ -18,7 +18,7 @@ Use the [warning](../../preprocessor/warning.md) pragma to suppress this warning ## Example -The following sample generates C4521. +The following example generates C4521. ```cpp // C4521.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4522.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4522.md index a255d4f7ce0..bd65de2606e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4522.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4522.md @@ -18,7 +18,7 @@ Use the [warning](../../preprocessor/warning.md) pragma to suppress this warning ## Example -The following sample generates C4522. +The following example generates C4522. ```cpp // C4522.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4534.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4534.md index 217022d92f8..c2d45451173 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4534.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4534.md @@ -17,7 +17,7 @@ For more information, see [Classes and Structs](../../extensions/classes-and-str ## Example -The following sample generates C4534: +The following example generates C4534: ```cpp // C4534.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4535.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4535.md index 04d4926f808..d81e4f42699 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4535.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4535.md @@ -16,7 +16,7 @@ The use of [_set_se_translator](../../c-runtime-library/reference/set-se-transla ## Example -The following sample generates C4535. +The following example generates C4535. ```cpp // C4535.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4538.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4538.md index 463d0b9d6a1..9956f92f8b7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4538.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4538.md @@ -16,7 +16,7 @@ A qualifier keyword was applied to an array incorrectly. For more information, s ## Example -The following sample generates C4538: +The following example generates C4538: ```cpp // C4538.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4554.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4554.md index 41d19d1d47d..7a953ddd5a6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4554.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4554.md @@ -12,7 +12,7 @@ ms.assetid: 55bb68f0-2e80-4330-8921-51083c4f8d53 ## Example -The following sample generates C4554: +The following example generates C4554: ```cpp // C4554.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4557.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4557.md index 0c7060d5c9f..4351a0a59d2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4557.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4557.md @@ -18,7 +18,7 @@ This warning is off by default. See [Compiler Warnings That Are Off by Default]( ## Example -The following sample generates C4557: +The following example generates C4557: ```cpp // C4557.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4559.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4559.md index 0a41fa8b052..86ba8c79f7d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4559.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4559.md @@ -16,7 +16,7 @@ A function was redefined or redeclared and the second definition or declaration ## Example -The following sample generates C4559: +The following example generates C4559: ```cpp // C4559.cpp From 33ae241c244c1088eaa40fc305f883629c21e1f2 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 30 Aug 2025 22:35:16 +0800 Subject: [PATCH 1668/2255] Update metadata for warning references in range [C4521, C4560] --- .../compiler-warnings/compiler-warning-level-1-c4526.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4530.md | 3 +-- .../compiler-warnings/compiler-warning-level-1-c4532.md | 3 +-- .../compiler-warnings/compiler-warning-level-1-c4533.md | 3 +-- .../compiler-warnings/compiler-warning-level-1-c4537.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4540.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4544.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4545.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4546.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4547.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4548.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4549.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4550.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4551.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4552.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4553.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4555.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4556.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4558.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4521.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4522.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4523.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4534.md | 4 ++-- .../compiler-warnings/compiler-warning-level-3-c4535.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4538.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4543.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4554.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4557.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4536.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4559.md | 5 ++--- 30 files changed, 56 insertions(+), 84 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4526.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4526.md index 64c4b01310e..ea7f5d89922 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4526.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4526.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4526" title: "Compiler Warning (level 1) C4526" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4526" +ms.date: 11/04/2016 f1_keywords: ["C4526"] helpviewer_keywords: ["C4526"] -ms.assetid: 490f8916-5fdc-4cad-b412-76c3382a5976 --- # Compiler Warning (level 1) C4526 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4530.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4530.md index 6dec2a4d9c9..a1b5e544b17 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4530.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4530.md @@ -1,10 +1,9 @@ --- title: "Compiler Warning (level 1) C4530" description: "Reference guide to Microsoft C++ compiler warning C4530." -ms.date: "04/02/2020" +ms.date: 04/02/2020 f1_keywords: ["C4530"] helpviewer_keywords: ["C4530"] -ms.assetid: a04dcdb2-84db-459d-9e5e-4e743887465f --- # Compiler Warning (level 1) C4530 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4532.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4532.md index 298b32792e5..ec19e1c3051 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4532.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4532.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4532" title: "Compiler Warning (level 1) C4532" +description: "Learn more about: Compiler Warning (level 1) C4532" ms.date: 08/30/2022 f1_keywords: ["C4532"] helpviewer_keywords: ["C4532"] -ms.assetid: 4e2a286a-d233-4106-9f65-29be1a94ca02 --- # Compiler Warning (level 1) C4532 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4533.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4533.md index 371a119dc04..9a446f09372 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4533.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4533.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4533" title: "Compiler Warning (level 1) C4533" +description: "Learn more about: Compiler Warning (level 1) C4533" ms.date: 08/30/2022 f1_keywords: ["C4533"] helpviewer_keywords: ["C4533"] -ms.assetid: 359fecda-d540-46e5-b214-dbabe9ef50d2 --- # Compiler Warning (level 1) C4533 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4537.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4537.md index 221cac585c0..9c20b0c8ca1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4537.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4537.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4537" title: "Compiler Warning (level 1) C4537" -ms.date: "08/27/2018" +description: "Learn more about: Compiler Warning (level 1) C4537" +ms.date: 08/27/2018 f1_keywords: ["C4537"] helpviewer_keywords: ["C4537"] -ms.assetid: 9454493c-d419-475e-8f35-9c00233c9329 --- # Compiler Warning (level 1) C4537 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4540.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4540.md index c86925a81a2..d14b6b6e38a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4540.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4540.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4540" title: "Compiler Warning (level 1) C4540" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4540" +ms.date: 11/04/2016 f1_keywords: ["C4540"] helpviewer_keywords: ["C4540"] -ms.assetid: 8085e748-5f4d-43c2-b06d-eaf794edbf72 --- # Compiler Warning (level 1) C4540 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4544.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4544.md index 7767563874e..0ba1ee5249a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4544.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4544.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4544" title: "Compiler Warning (level 1) C4544" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4544" +ms.date: 11/04/2016 f1_keywords: ["C4544"] helpviewer_keywords: ["C4544"] -ms.assetid: 11ee04df-41ae-435f-af44-881e801315a8 --- # Compiler Warning (level 1) C4544 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4545.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4545.md index c252a8be6a6..6add8aa635e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4545.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4545.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4545" title: "Compiler Warning (level 1) C4545" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4545" +ms.date: 11/04/2016 f1_keywords: ["C4545"] helpviewer_keywords: ["C4545"] -ms.assetid: 43f8f34f-ed46-4661-95c0-c588c577ff73 --- # Compiler Warning (level 1) C4545 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4546.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4546.md index d96b60360f1..bb9d1835428 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4546.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4546.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4546" title: "Compiler Warning (level 1) C4546" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4546" +ms.date: 11/04/2016 f1_keywords: ["C4546"] helpviewer_keywords: ["C4546"] -ms.assetid: 071e1709-3841-46c1-8e71-96109cd22041 --- # Compiler Warning (level 1) C4546 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4547.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4547.md index 05313513cf0..fcf23c66dda 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4547.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4547.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4547" title: "Compiler Warning (level 1) C4547" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4547" +ms.date: 11/04/2016 f1_keywords: ["C4547"] helpviewer_keywords: ["C4547"] -ms.assetid: 3edf1c2e-c0d5-444d-ae83-44a7cce24bb2 --- # Compiler Warning (level 1) C4547 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4548.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4548.md index d999fa243a9..62d604feaa4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4548.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4548.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4548" title: "Compiler Warning (level 1) C4548" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4548" +ms.date: 11/04/2016 f1_keywords: ["C4548"] helpviewer_keywords: ["C4548"] -ms.assetid: 2cee817e-e463-4d90-bbd2-de120d48c101 --- # Compiler Warning (level 1) C4548 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4549.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4549.md index c6a12e0bcd8..fb6610064fa 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4549.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4549.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4549" title: "Compiler Warning (level 1) C4549" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4549" +ms.date: 11/04/2016 f1_keywords: ["C4549"] helpviewer_keywords: ["C4549"] -ms.assetid: 81a07676-625b-4f58-9b0c-3ee22830b04a --- # Compiler Warning (level 1) C4549 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4550.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4550.md index 8792d6253f8..f1569447021 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4550.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4550.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4550" title: "Compiler Warning (level 1) C4550" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4550" +ms.date: 11/04/2016 f1_keywords: ["C4550"] helpviewer_keywords: ["C4550"] -ms.assetid: f902b4ed-5f17-48ea-b693-92f4fb8c8054 --- # Compiler Warning (level 1) C4550 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4551.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4551.md index 7df51dc698c..a7e1b9fe013 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4551.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4551.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4551" title: "Compiler Warning (level 1) C4551" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4551" +ms.date: 11/04/2016 f1_keywords: ["C4551"] helpviewer_keywords: ["C4551"] -ms.assetid: 458b59bd-e2d7-425f-9ba6-268ff200424f --- # Compiler Warning (level 1) C4551 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4552.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4552.md index 02d6e54c730..6cea7cc2d46 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4552.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4552.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4552" title: "Compiler Warning (level 1) C4552" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4552" +ms.date: 11/04/2016 f1_keywords: ["C4552"] helpviewer_keywords: ["C4552"] -ms.assetid: ebbbb5ee-1c19-45bd-b386-41a19630fc76 --- # Compiler Warning (level 1) C4552 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4553.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4553.md index b5ed0ea47ae..c8c357eb293 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4553.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4553.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4553" title: "Compiler Warning (level 1) C4553" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4553" +ms.date: 11/04/2016 f1_keywords: ["C4553"] helpviewer_keywords: ["C4553"] -ms.assetid: d8aacbe0-3cb5-4367-a6e5-fd7e28f0ff9d --- # Compiler Warning (level 1) C4553 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4555.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4555.md index 0d0764247be..f98f2f75afb 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4555.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4555.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4555" title: "Compiler Warning (level 1) C4555" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4555" +ms.date: 11/04/2016 f1_keywords: ["C4555"] helpviewer_keywords: ["C4555"] -ms.assetid: 50b286c1-f7bf-4292-b1fa-baaac9538611 --- # Compiler Warning (level 1) C4555 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4556.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4556.md index 1d14bf8eb5c..361ee46a496 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4556.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4556.md @@ -1,7 +1,7 @@ --- title: "Compiler Warning (level 1) C4556" description: "Learn more about: Compiler Warning (level 1) C4556" -ms.date: "03/28/2025" +ms.date: 03/28/2025 f1_keywords: ["C4556"] helpviewer_keywords: ["C4556"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4558.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4558.md index 99170c858ef..730b37887ab 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4558.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4558.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4558" title: "Compiler Warning (level 1) C4558" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4558" +ms.date: 11/04/2016 f1_keywords: ["C4558"] helpviewer_keywords: ["C4558"] -ms.assetid: 52bb0324-7bec-468c-b35b-13a08d38e578 --- # Compiler Warning (level 1) C4558 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4521.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4521.md index 3cc4a7fe622..835726ea232 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4521.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4521.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4521" title: "Compiler Warning (level 3) C4521" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4521" +ms.date: 11/04/2016 f1_keywords: ["C4521"] helpviewer_keywords: ["C4521"] -ms.assetid: 057d770c-ebcf-44cd-b943-1b1bb1ceaa8c --- # Compiler Warning (level 3) C4521 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4522.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4522.md index bd65de2606e..51cad339419 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4522.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4522.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4522" title: "Compiler Warning (level 3) C4522" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4522" +ms.date: 11/04/2016 f1_keywords: ["C4522"] helpviewer_keywords: ["C4522"] -ms.assetid: 7065dc27-0b6c-4e68-a345-c51cdb99a20b --- # Compiler Warning (level 3) C4522 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4523.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4523.md index e0772f83245..1f9497e7f01 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4523.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4523.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4523" title: "Compiler Warning (level 3) C4523" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4523" +ms.date: 11/04/2016 f1_keywords: ["C4523"] helpviewer_keywords: ["C4523"] -ms.assetid: 0f28761d-999f-43fe-9481-d02afd9b4f60 --- # Compiler Warning (level 3) C4523 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4534.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4534.md index c2d45451173..02b4492a1fd 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4534.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4534.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4534" title: "Compiler Warning (level 3) C4534" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4534" +ms.date: 11/04/2016 f1_keywords: ["C4534"] helpviewer_keywords: ["C4534"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4535.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4535.md index d81e4f42699..a98e2fb5ec1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4535.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4535.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4535" title: "Compiler Warning (level 3) C4535" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4535" +ms.date: 11/04/2016 f1_keywords: ["C4535"] helpviewer_keywords: ["C4535"] -ms.assetid: 2c5ad1aa-2558-41d1-8f06-47fef74c8d9b --- # Compiler Warning (level 3) C4535 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4538.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4538.md index 9956f92f8b7..6bfa7556556 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4538.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4538.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4538" title: "Compiler Warning (level 3) C4538" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4538" +ms.date: 11/04/2016 f1_keywords: ["C4538"] helpviewer_keywords: ["C4538"] -ms.assetid: 747e3d51-b6d0-41c1-a726-7af3253b59d7 --- # Compiler Warning (level 3) C4538 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4543.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4543.md index 8262f0ba6db..a36b2bff456 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4543.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4543.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4543" title: "Compiler Warning (level 3) C4543" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4543" +ms.date: 11/04/2016 f1_keywords: ["C4543"] helpviewer_keywords: ["C4543"] -ms.assetid: a09b39a7-d3b8-435c-86a3-2233c512f24b --- # Compiler Warning (level 3) C4543 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4554.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4554.md index 7a953ddd5a6..46786ef9159 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4554.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4554.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4554" title: "Compiler Warning (level 3) C4554" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4554" +ms.date: 11/04/2016 f1_keywords: ["C4554"] helpviewer_keywords: ["C4554"] -ms.assetid: 55bb68f0-2e80-4330-8921-51083c4f8d53 --- # Compiler Warning (level 3) C4554 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4557.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4557.md index 4351a0a59d2..b6495e22283 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4557.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4557.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4557" title: "Compiler Warning (level 3) C4557" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4557" +ms.date: 11/04/2016 f1_keywords: ["C4557"] helpviewer_keywords: ["C4557"] -ms.assetid: 7d9db716-03b2-4ee5-9b09-ba8aa5aa7e4c --- # Compiler Warning (level 3) C4557 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4536.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4536.md index 6286781633b..666741bf888 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4536.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4536.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4536" title: "Compiler Warning (level 4) C4536" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4536" +ms.date: 11/04/2016 f1_keywords: ["C4536"] helpviewer_keywords: ["C4536"] -ms.assetid: ab4d0686-f813-4e88-a264-b40d3630ed6c --- # Compiler Warning (level 4) C4536 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4559.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4559.md index 86ba8c79f7d..342ceb0c727 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4559.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4559.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4559" title: "Compiler Warning (level 4) C4559" -ms.date: "08/27/2018" +description: "Learn more about: Compiler Warning (level 4) C4559" +ms.date: 08/27/2018 f1_keywords: ["C4559"] helpviewer_keywords: ["C4559"] -ms.assetid: ed542f60-454d-45cb-85da-987ede61b1ab --- # Compiler Warning (level 4) C4559 From 543b05e7f41f2fda3e9eb0df055ba842e5ccc334 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 30 Aug 2025 22:37:28 +0800 Subject: [PATCH 1669/2255] Add leading example sentence in C4550 warning reference --- .../compiler-warnings/compiler-warning-level-1-c4550.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4550.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4550.md index f1569447021..f9c004fec9c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4550.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4550.md @@ -15,6 +15,8 @@ A dereferenced pointer to a function is missing an argument list. ## Example +The following example generates C4550: + ```cpp // C4550.cpp // compile with: /W1 From 3acfbb31704f9c9cce38f2e1ca3f404b72ac4e38 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 31 Aug 2025 18:37:19 +0800 Subject: [PATCH 1670/2255] Add blockquotes for warning messages in range [C4561, C4620] --- .../compiler-warnings/compiler-warning-level-1-c4561.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4566.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4572.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4581.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4584.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4600.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4602.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4603.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4606.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4613.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4615.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4616.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4618.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4620.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4570.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4580.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4608.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4619.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4564.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4610.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4611.md | 2 +- 21 files changed, 21 insertions(+), 21 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4561.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4561.md index 5b0d3ae7272..65435832d38 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4561.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4561.md @@ -8,7 +8,7 @@ ms.assetid: 3a10c12c-601b-4b6c-9861-331fd022e021 --- # Compiler Warning (level 1) C4561 -'__fastcall' incompatible with the '/clr' option: converting to '\__stdcall' +> '__fastcall' incompatible with the '/clr' option: converting to '\__stdcall' The [__fastcall](../../cpp/fastcall.md) function-calling convention cannot be used with the [/clr](../../build/reference/clr-common-language-runtime-compilation.md) compiler option. The compiler ignores the calls to **`__fastcall`**. To fix this warning, either remove the calls to **`__fastcall`** or compile without **/clr**. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4566.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4566.md index 425026f9603..ef7cff8797b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4566.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4566.md @@ -8,7 +8,7 @@ ms.assetid: 65f40730-e86f-447c-b37b-16caadcfe311 --- # Compiler Warning (level 1) C4566 -character represented by universal-character-name 'char' cannot be represented in the current code page (page) +> character represented by universal-character-name 'char' cannot be represented in the current code page (page) Not every Unicode character can be represented in your current ANSI code page. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4572.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4572.md index 2ecaa73a316..914b0128025 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4572.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4572.md @@ -8,7 +8,7 @@ ms.assetid: 482dee5a-29bd-4fc3-b769-9dfd4cd2a964 --- # Compiler Warning (level 1) C4572 -[ParamArray] attribute is deprecated under /clr, use '...' instead +> [ParamArray] attribute is deprecated under /clr, use '...' instead An obsolete style for specifying a variable argument list was used. When compiling for the CLR, use ellipsis syntax instead of . For more information, see [Variable Argument Lists (...) (C++/CLI)](../../extensions/variable-argument-lists-dot-dot-dot-cpp-cli.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4581.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4581.md index acdece26660..bf0e61d9825 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4581.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4581.md @@ -8,7 +8,7 @@ ms.assetid: 598bcd87-257d-4eb3-94e4-15bb31aadc99 --- # Compiler Warning (level 1) C4581 -deprecated behavior: '"string1"' replaced with 'string2' to process attribute +> deprecated behavior: '"string1"' replaced with 'string2' to process attribute This error can be generated as a result of compiler conformance work that was done for Visual Studio 2005: parameter checking for Visual C++ attributes. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4584.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4584.md index 4db3442c590..daf6c2cff73 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4584.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4584.md @@ -8,7 +8,7 @@ ms.assetid: ad86582f-cb8c-4d21-8c4c-a6c800059e25 --- # Compiler Warning (level 1) C4584 -'class1' : base-class 'class2' is already a base-class of 'class3' +> 'class1' : base-class 'class2' is already a base-class of 'class3' The class you defined inherits from two classes, one of which inherits from the other. For example: diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4600.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4600.md index 446ec164f35..46ebb500dfc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4600.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4600.md @@ -8,7 +8,7 @@ ms.assetid: f023a2a1-7fc4-463f-a434-dc93fcd3f4e9 --- # Compiler Warning (level 1) C4600 -\#pragma 'macro name' : expected a valid non-empty string +> #pragma 'macro name' : expected a valid non-empty string You cannot specify an empty string when you push or pop a macro name with either the [pop_macro](../../preprocessor/pop-macro.md) or [push_macro](../../preprocessor/push-macro.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4602.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4602.md index a8a3b121f42..ea6e86a87a6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4602.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4602.md @@ -8,7 +8,7 @@ ms.assetid: c1f0300f-e2a2-4c9e-a7c3-4c7318d10509 --- # Compiler Warning (level 1) C4602 -\#pragma pop_macro : 'macro name' no previous #pragma push_macro for this identifier +> #pragma pop_macro : 'macro name' no previous #pragma push_macro for this identifier If you use [pop_macro](../../preprocessor/pop-macro.md) for a particular macro, you must first have passed that macro name to [push_macro](../../preprocessor/push-macro.md). For example, the following sample generates C4602: diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4603.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4603.md index a8b8f597828..206a324a5de 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4603.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4603.md @@ -8,7 +8,7 @@ ms.assetid: f065994e-e3e5-4694-b868-c124472b3342 --- # Compiler Warning (level 1) C4603 -'\' : macro is not defined or definition is different after precompiled header use +> '\' : macro is not defined or definition is different after precompiled header use The macro specified by the *identifier* placeholder is either different or no longer defined after the precompiler header is used. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4606.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4606.md index 1eeecf2f663..e565d4cb0c0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4606.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4606.md @@ -8,7 +8,7 @@ ms.assetid: c1b45fb6-672b-42eb-9e1c-c67b3e4150d3 --- # Compiler Warning (level 1) C4606 -\#pragma warning : 'warning_number' ignored; Code Analysis warnings are not associated with warning levels +> #pragma warning : 'warning_number' ignored; Code Analysis warnings are not associated with warning levels For Code Analysis warnings, only `error`, `once`, and `default` are supported with the [warning](../../preprocessor/warning.md) pragma. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4613.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4613.md index a1d1ba5b233..a0d1f2077ac 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4613.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4613.md @@ -8,6 +8,6 @@ ms.assetid: 399f521b-651c-4997-bc91-f40198e9a4d4 --- # Compiler Warning (level 1) C4613 -'segment' : class of segment cannot be changed +> 'segment' : class of segment cannot be changed You tried to create a segment with the same class name as a segment used by the compiler. No new segment class was created. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4615.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4615.md index 8f4b9c9c1c2..0688d3337e7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4615.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4615.md @@ -8,7 +8,7 @@ ms.assetid: 7b107c01-0da2-4e01-8b40-93813e30b94c --- # Compiler Warning (level 1) C4615 -\#pragma warning : unknown user warning type +> #pragma warning : unknown user warning type An invalid warning specifier was used with **pragma** [warning](../../preprocessor/warning.md). To resolve the error, use a valid warning specifier. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4616.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4616.md index b3228cd32c3..186cfecc8ab 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4616.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4616.md @@ -8,7 +8,7 @@ ms.assetid: 71e15265-c5bc-42ce-a6a9-4879892472b1 --- # Compiler Warning (level 1) C4616 -\#pragma warning : warning number 'number' not a valid compiler warning +> #pragma warning : warning number 'number' not a valid compiler warning The warning number specified in the [warning](../../preprocessor/warning.md) pragma cannot be reassigned. The pragma was ignored. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4618.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4618.md index 577c7875f91..86fd1b5b7b0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4618.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4618.md @@ -8,7 +8,7 @@ ms.assetid: 6ff10d0a-6d5b-4373-8196-1d57bb6b1611 --- # Compiler Warning (level 1) C4618 -pragma parameters included an empty string; pragma ignored +> pragma parameters included an empty string; pragma ignored A null string was given as an argument to a **#pragma**. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4620.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4620.md index c70c10ef526..ad06013865d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4620.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4620.md @@ -8,7 +8,7 @@ ms.assetid: fed29934-b797-47e8-bbea-c7e5f8dd6e93 --- # Compiler Warning (level 1) C4620 -no postfix form of 'operator ++' found for type 'type', using prefix form +> no postfix form of 'operator ++' found for type 'type', using prefix form There is no postfix increment operator defined for the given type. The compiler used the overloaded prefix operator. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4570.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4570.md index a3090361bf4..fa02f09289c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4570.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4570.md @@ -8,7 +8,7 @@ ms.assetid: feec1225-e6ad-4995-8d96-c22e864a77bd --- # Compiler Warning (level 3) C4570 -'type' : is not explicitly declared as abstract but has abstract functions +> 'type' : is not explicitly declared as abstract but has abstract functions A type that contains [abstract](../../extensions/abstract-cpp-component-extensions.md) functions should itself be marked as abstract. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4580.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4580.md index 5be25424956..cfaa9eebd65 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4580.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4580.md @@ -8,7 +8,7 @@ ms.assetid: fef6e8e0-0d6a-44fa-b22a-2fe7ba2ef379 --- # Compiler Warning (level 3) C4580 -[attribute] is deprecated; instead specify System::Attribute or Platform::Metadata as a base class +> [attribute] is deprecated; instead specify System::Attribute or Platform::Metadata as a base class [[attribute](../../windows/attributes/attribute.md)] is no longer the preferred syntax for creating user-defined attributes. For more information, see [User-Defined Attributes](../../extensions/user-defined-attributes-cpp-component-extensions.md). For CLR code, derive attributes from `System::Attribute`. For Windows Runtime code, derive attributes from `Platform::Metadata`. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4608.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4608.md index 40bb5d55bdb..1296440209d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4608.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4608.md @@ -8,7 +8,7 @@ ms.assetid: 8b8f5f28-8ce9-457e-9d3d-a8c0efce9b6a --- # Compiler Warning (level 3) C4608 -'union_member' has already been initialized by another union member in the initializer list, 'union_member' +> 'union_member' has already been initialized by another union member in the initializer list, 'union_member' Two members of the same union were initialized in an initialization list. You can only access one member of the union. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4619.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4619.md index d088f9e025e..fd0e3612f8f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4619.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4619.md @@ -8,7 +8,7 @@ ms.assetid: 701fea21-01aa-4bea-93d4-1cb8824170b0 --- # Compiler Warning (level 3) C4619 -\#pragma warning : there is no warning number 'number' +> #pragma warning : there is no warning number 'number' An attempt was made to disable a warning that does not exist. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4564.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4564.md index 629202c137e..0f896f97a51 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4564.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4564.md @@ -8,7 +8,7 @@ ms.assetid: 555b301b-313e-4262-9f81-eb878674be60 --- # Compiler Warning (level 4) C4564 -method 'method' of class 'class' defines unsupported default parameter 'parameter' +> method 'method' of class 'class' defines unsupported default parameter 'parameter' The compiler detected a method with one or more parameters with default values. The default value(s) for the parameters will be ignored when the method is invoked; explicitly specify values for those parameters. If you do not explicitly specify values for those parameters, the C++ compiler will generate an error. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4610.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4610.md index 4786d9b171f..54f04013156 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4610.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4610.md @@ -8,7 +8,7 @@ ms.assetid: 23c1a16c-9ca9-4bf6-9911-a72b785560c2 --- # Compiler Warning (level 4) C4610 -object 'class' can never be instantiated - user-defined constructor required +> object 'class' can never be instantiated - user-defined constructor required The class has no user-defined or default constructors. No instantiation is performed. The following sample generates C4610: diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4611.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4611.md index f584d23463c..153348b95c9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4611.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4611.md @@ -8,7 +8,7 @@ ms.assetid: bd90d0a6-75f9-4e97-968d-dda6773e9fd8 --- # Compiler Warning (level 4) C4611 -interaction between 'function' and C++ object destruction is non-portable +> interaction between 'function' and C++ object destruction is non-portable On some platforms, functions that include **`catch`** may not support C++ object semantics of destruction when out of scope. From 802eedce464489a15cbe4acc17070ec06f866092 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 31 Aug 2025 18:45:02 +0800 Subject: [PATCH 1671/2255] Add "Remarks" and "Example" headings for warning references in range [C4561, C4620] --- docs/error-messages/compiler-warnings/c4597.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4561.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4566.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4572.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4577.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4581.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4584.md | 8 +++++++- .../compiler-warnings/compiler-warning-level-1-c4600.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4602.md | 8 +++++++- .../compiler-warnings/compiler-warning-level-1-c4603.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4606.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4613.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4615.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4616.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4618.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4620.md | 4 ++++ .../compiler-warnings/compiler-warning-level-3-c4570.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4580.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4608.md | 4 ++++ .../compiler-warnings/compiler-warning-level-3-c4619.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4564.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4571.md | 4 ++-- .../compiler-warnings/compiler-warning-level-4-c4610.md | 8 +++++++- .../compiler-warnings/compiler-warning-level-4-c4611.md | 2 ++ 24 files changed, 83 insertions(+), 7 deletions(-) diff --git a/docs/error-messages/compiler-warnings/c4597.md b/docs/error-messages/compiler-warnings/c4597.md index 9d3a66071fa..321aab2edd3 100644 --- a/docs/error-messages/compiler-warnings/c4597.md +++ b/docs/error-messages/compiler-warnings/c4597.md @@ -9,10 +9,10 @@ helpviewer_keywords: ["C4597"] > undefined behavior: `offsetof` applied to a member of a virtual base -Using `offsetof(T, m)` where *`m`* refers to a static data member or a member function results in C4597. - ## Remarks +Using `offsetof(T, m)` where *`m`* refers to a static data member or a member function results in C4597. + This warning is new in Visual Studio 2017 version 15.3. It's reported as an error by default. For information on how to disable warnings by compiler version, see [Compiler warnings by compiler version](compiler-warnings-by-compiler-version.md). ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4561.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4561.md index 65435832d38..f030cdc31ec 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4561.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4561.md @@ -10,8 +10,12 @@ ms.assetid: 3a10c12c-601b-4b6c-9861-331fd022e021 > '__fastcall' incompatible with the '/clr' option: converting to '\__stdcall' +## Remarks + The [__fastcall](../../cpp/fastcall.md) function-calling convention cannot be used with the [/clr](../../build/reference/clr-common-language-runtime-compilation.md) compiler option. The compiler ignores the calls to **`__fastcall`**. To fix this warning, either remove the calls to **`__fastcall`** or compile without **/clr**. +## Example + The following sample generates C4561: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4566.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4566.md index ef7cff8797b..aa51117dad2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4566.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4566.md @@ -10,10 +10,14 @@ ms.assetid: 65f40730-e86f-447c-b37b-16caadcfe311 > character represented by universal-character-name 'char' cannot be represented in the current code page (page) +## Remarks + Not every Unicode character can be represented in your current ANSI code page. Narrow strings (one-byte characters) are converted to multi-byte characters whereas wide strings (two-byte characters) are not. +## Example + The following sample generates C4566: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4572.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4572.md index 914b0128025..4c1198fa668 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4572.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4572.md @@ -10,6 +10,8 @@ ms.assetid: 482dee5a-29bd-4fc3-b769-9dfd4cd2a964 > [ParamArray] attribute is deprecated under /clr, use '...' instead +## Remarks + An obsolete style for specifying a variable argument list was used. When compiling for the CLR, use ellipsis syntax instead of . For more information, see [Variable Argument Lists (...) (C++/CLI)](../../extensions/variable-argument-lists-dot-dot-dot-cpp-cli.md). ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4577.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4577.md index f6b51626645..184f42ce9b9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4577.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4577.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4577"] > 'noexcept' used with no exception handling mode specified; termination on exception is not guaranteed. Specify /EHsc +## Remarks + The compiler detected a **`noexcept`** specification, but standard C++ exception handling wasn't specified. The compiler doesn't fully support exception handling according to the C++ standard unless the [/EHsc](../../build/reference/eh-exception-handling-model.md) compiler option is specified. To resolve this issue, set the **/EHsc** compiler option. This warning is new in Visual Studio 2015, and is off by default. For more information, see [Compiler warnings that are off by default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4581.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4581.md index bf0e61d9825..a0a54df35bf 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4581.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4581.md @@ -10,6 +10,8 @@ ms.assetid: 598bcd87-257d-4eb3-94e4-15bb31aadc99 > deprecated behavior: '"string1"' replaced with 'string2' to process attribute +## Remarks + This error can be generated as a result of compiler conformance work that was done for Visual Studio 2005: parameter checking for Visual C++ attributes. In previous versions, attribute values were accepted whether or not they were enclosed in quotation marks. If the value is an enumeration, it must not be enclosed in quotation marks. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4584.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4584.md index daf6c2cff73..d1871239836 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4584.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4584.md @@ -10,7 +10,13 @@ ms.assetid: ad86582f-cb8c-4d21-8c4c-a6c800059e25 > 'class1' : base-class 'class2' is already a base-class of 'class3' -The class you defined inherits from two classes, one of which inherits from the other. For example: +## Remarks + +The class you defined inherits from two classes, one of which inherits from the other. + +## Example + +For example: ```cpp // C4584.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4600.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4600.md index 46ebb500dfc..60cf01cea68 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4600.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4600.md @@ -10,8 +10,12 @@ ms.assetid: f023a2a1-7fc4-463f-a434-dc93fcd3f4e9 > #pragma 'macro name' : expected a valid non-empty string +## Remarks + You cannot specify an empty string when you push or pop a macro name with either the [pop_macro](../../preprocessor/pop-macro.md) or [push_macro](../../preprocessor/push-macro.md). +## Example + The following sample generates C4600: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4602.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4602.md index ea6e86a87a6..aa653a202db 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4602.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4602.md @@ -10,7 +10,13 @@ ms.assetid: c1f0300f-e2a2-4c9e-a7c3-4c7318d10509 > #pragma pop_macro : 'macro name' no previous #pragma push_macro for this identifier -If you use [pop_macro](../../preprocessor/pop-macro.md) for a particular macro, you must first have passed that macro name to [push_macro](../../preprocessor/push-macro.md). For example, the following sample generates C4602: +## Remarks + +If you use [pop_macro](../../preprocessor/pop-macro.md) for a particular macro, you must first have passed that macro name to [push_macro](../../preprocessor/push-macro.md). + +## Example + +For example, the following sample generates C4602: ```cpp // C4602.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4603.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4603.md index 206a324a5de..6e6fa2665c2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4603.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4603.md @@ -10,6 +10,8 @@ ms.assetid: f065994e-e3e5-4694-b868-c124472b3342 > '\' : macro is not defined or definition is different after precompiled header use +## Remarks + The macro specified by the *identifier* placeholder is either different or no longer defined after the precompiler header is used. ## See also diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4606.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4606.md index e565d4cb0c0..29f1dca4909 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4606.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4606.md @@ -10,6 +10,8 @@ ms.assetid: c1b45fb6-672b-42eb-9e1c-c67b3e4150d3 > #pragma warning : 'warning_number' ignored; Code Analysis warnings are not associated with warning levels +## Remarks + For Code Analysis warnings, only `error`, `once`, and `default` are supported with the [warning](../../preprocessor/warning.md) pragma. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4613.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4613.md index a0d1f2077ac..9cc0272de6e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4613.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4613.md @@ -10,4 +10,6 @@ ms.assetid: 399f521b-651c-4997-bc91-f40198e9a4d4 > 'segment' : class of segment cannot be changed +## Remarks + You tried to create a segment with the same class name as a segment used by the compiler. No new segment class was created. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4615.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4615.md index 0688d3337e7..590c9240149 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4615.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4615.md @@ -10,8 +10,12 @@ ms.assetid: 7b107c01-0da2-4e01-8b40-93813e30b94c > #pragma warning : unknown user warning type +## Remarks + An invalid warning specifier was used with **pragma** [warning](../../preprocessor/warning.md). To resolve the error, use a valid warning specifier. +## Example + The following sample generates C4615: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4616.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4616.md index 186cfecc8ab..f82a5f0344e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4616.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4616.md @@ -10,8 +10,12 @@ ms.assetid: 71e15265-c5bc-42ce-a6a9-4879892472b1 > #pragma warning : warning number 'number' not a valid compiler warning +## Remarks + The warning number specified in the [warning](../../preprocessor/warning.md) pragma cannot be reassigned. The pragma was ignored. +## Example + The following sample generates C4616: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4618.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4618.md index 86fd1b5b7b0..dc5891650a6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4618.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4618.md @@ -10,10 +10,14 @@ ms.assetid: 6ff10d0a-6d5b-4373-8196-1d57bb6b1611 > pragma parameters included an empty string; pragma ignored +## Remarks + A null string was given as an argument to a **#pragma**. The pragma was processed without the argument. +## Example + The following sample generates C4618: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4620.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4620.md index ad06013865d..dfd025f2a1c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4620.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4620.md @@ -10,8 +10,12 @@ ms.assetid: fed29934-b797-47e8-bbea-c7e5f8dd6e93 > no postfix form of 'operator ++' found for type 'type', using prefix form +## Remarks + There is no postfix increment operator defined for the given type. The compiler used the overloaded prefix operator. +## Example + This warning can be avoided by defining a postfix `++` operator. Create a two-argument version of the `++` operator as shown here: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4570.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4570.md index fa02f09289c..5ed5fb32dfe 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4570.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4570.md @@ -10,6 +10,8 @@ ms.assetid: feec1225-e6ad-4995-8d96-c22e864a77bd > 'type' : is not explicitly declared as abstract but has abstract functions +## Remarks + A type that contains [abstract](../../extensions/abstract-cpp-component-extensions.md) functions should itself be marked as abstract. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4580.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4580.md index cfaa9eebd65..01c6e8912e2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4580.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4580.md @@ -10,6 +10,8 @@ ms.assetid: fef6e8e0-0d6a-44fa-b22a-2fe7ba2ef379 > [attribute] is deprecated; instead specify System::Attribute or Platform::Metadata as a base class +## Remarks + [[attribute](../../windows/attributes/attribute.md)] is no longer the preferred syntax for creating user-defined attributes. For more information, see [User-Defined Attributes](../../extensions/user-defined-attributes-cpp-component-extensions.md). For CLR code, derive attributes from `System::Attribute`. For Windows Runtime code, derive attributes from `Platform::Metadata`. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4608.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4608.md index 1296440209d..97361c08ad0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4608.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4608.md @@ -10,8 +10,12 @@ ms.assetid: 8b8f5f28-8ce9-457e-9d3d-a8c0efce9b6a > 'union_member' has already been initialized by another union member in the initializer list, 'union_member' +## Remarks + Two members of the same union were initialized in an initialization list. You can only access one member of the union. +## Example + The following sample generates C4608: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4619.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4619.md index fd0e3612f8f..4478f468147 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4619.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4619.md @@ -10,10 +10,14 @@ ms.assetid: 701fea21-01aa-4bea-93d4-1cb8824170b0 > #pragma warning : there is no warning number 'number' +## Remarks + An attempt was made to disable a warning that does not exist. This warning is off by default. See [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md) for more information. +## Example + The following sample generates C4619: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4564.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4564.md index 0f896f97a51..78340d61c40 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4564.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4564.md @@ -10,8 +10,12 @@ ms.assetid: 555b301b-313e-4262-9f81-eb878674be60 > method 'method' of class 'class' defines unsupported default parameter 'parameter' +## Remarks + The compiler detected a method with one or more parameters with default values. The default value(s) for the parameters will be ignored when the method is invoked; explicitly specify values for those parameters. If you do not explicitly specify values for those parameters, the C++ compiler will generate an error. +## Example + Given the following .dll created with Visual Basic, which allows default parameters on method arguments: ```vb diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4571.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4571.md index 54845383a3c..c995c2afe9e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4571.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4571.md @@ -10,10 +10,10 @@ ms.assetid: 07aa17bd-b15c-4266-824c-57cc445e8edd > Informational: `catch(...)` semantics changed since Visual C++ 7.1; structured exceptions (SEH) are no longer caught -C4571 is generated for every `catch(...)` block when you specify the **`/EHs`** compiler option. - ## Remarks +C4571 is generated for every `catch(...)` block when you specify the **`/EHs`** compiler option. + When you specify the **`/EHs`** compiler option, `catch(...)` blocks don't catch structured exceptions. (Divide by zero, or null pointer exceptions, for example.) A `catch(...)` block only catches explicitly thrown C++ exceptions. For more information, see [Exception Handling](../../cpp/exception-handling-in-visual-cpp.md). This warning is off by default. Turn this warning on to ensure that when you compile with **`/EHs`** your `catch (...)` blocks don't catch structured exceptions. For more information, see [Compiler warnings that are off by default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4610.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4610.md index 54f04013156..7fb4975f297 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4610.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4610.md @@ -10,7 +10,13 @@ ms.assetid: 23c1a16c-9ca9-4bf6-9911-a72b785560c2 > object 'class' can never be instantiated - user-defined constructor required -The class has no user-defined or default constructors. No instantiation is performed. The following sample generates C4610: +## Remarks + +The class has no user-defined or default constructors. No instantiation is performed. + +## Example + +The following sample generates C4610: ```cpp // C4610.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4611.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4611.md index 153348b95c9..802ff39b78a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4611.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4611.md @@ -10,6 +10,8 @@ ms.assetid: bd90d0a6-75f9-4e97-968d-dda6773e9fd8 > interaction between 'function' and C++ object destruction is non-portable +## Remarks + On some platforms, functions that include **`catch`** may not support C++ object semantics of destruction when out of scope. To avoid unexpected behavior, avoid using **`catch`** in functions that have constructors and destructors. From 602587308864a8b3d393d62e76cbaa20df859e0c Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 31 Aug 2025 18:46:39 +0800 Subject: [PATCH 1672/2255] Replace term "sample" with "example" for warning references in range [C4561, C4620] --- docs/error-messages/compiler-warnings/c4596.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4561.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4566.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4572.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4581.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4600.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4602.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4606.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4615.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4616.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4618.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4570.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4580.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4608.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4619.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4564.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4565.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4571.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4610.md | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/error-messages/compiler-warnings/c4596.md b/docs/error-messages/compiler-warnings/c4596.md index 9c7afed4d11..2f75d68a92f 100644 --- a/docs/error-messages/compiler-warnings/c4596.md +++ b/docs/error-messages/compiler-warnings/c4596.md @@ -19,7 +19,7 @@ This warning is available starting in Visual Studio 2015 Update 3. Code that com ## Example -This sample generates C4596, and shows a way to fix it: +This example generates C4596, and shows a way to fix it: ```cpp // C4596.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4561.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4561.md index f030cdc31ec..625e053c84a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4561.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4561.md @@ -16,7 +16,7 @@ The [__fastcall](../../cpp/fastcall.md) function-calling convention cannot be us ## Example -The following sample generates C4561: +The following example generates C4561: ```cpp // C4561.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4566.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4566.md index aa51117dad2..0c1451b42a4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4566.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4566.md @@ -18,7 +18,7 @@ Narrow strings (one-byte characters) are converted to multi-byte characters wher ## Example -The following sample generates C4566: +The following example generates C4566: ```cpp // C4566.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4572.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4572.md index 4c1198fa668..6bce2dd093e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4572.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4572.md @@ -16,7 +16,7 @@ An obsolete style for specifying a variable argument list was used. When compili ## Example -The following sample generates C4572. +The following example generates C4572. ```cpp // C4572.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4581.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4581.md index a0a54df35bf..8363bfefc5d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4581.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4581.md @@ -18,7 +18,7 @@ In previous versions, attribute values were accepted whether or not they were en ## Example -The following sample generates C4581. +The following example generates C4581. ```cpp // C4581.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4600.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4600.md index 60cf01cea68..e6becded226 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4600.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4600.md @@ -16,7 +16,7 @@ You cannot specify an empty string when you push or pop a macro name with either ## Example -The following sample generates C4600: +The following example generates C4600: ```cpp // C4600.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4602.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4602.md index aa653a202db..104ca62e71b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4602.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4602.md @@ -16,7 +16,7 @@ If you use [pop_macro](../../preprocessor/pop-macro.md) for a particular macro, ## Example -For example, the following sample generates C4602: +For example, the following example generates C4602: ```cpp // C4602.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4606.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4606.md index 29f1dca4909..1ae23caf9cc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4606.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4606.md @@ -16,7 +16,7 @@ For Code Analysis warnings, only `error`, `once`, and `default` are supported wi ## Example -The following sample generates C4606. +The following example generates C4606. ```cpp // C4606.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4615.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4615.md index 590c9240149..ab8a21388b6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4615.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4615.md @@ -16,7 +16,7 @@ An invalid warning specifier was used with **pragma** [warning](../../preprocess ## Example -The following sample generates C4615: +The following example generates C4615: ```cpp // C4615.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4616.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4616.md index f82a5f0344e..40cef13d645 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4616.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4616.md @@ -16,7 +16,7 @@ The warning number specified in the [warning](../../preprocessor/warning.md) pra ## Example -The following sample generates C4616: +The following example generates C4616: ```cpp // C4616.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4618.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4618.md index dc5891650a6..a75eeeec515 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4618.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4618.md @@ -18,7 +18,7 @@ The pragma was processed without the argument. ## Example -The following sample generates C4618: +The following example generates C4618: ```cpp // C4618.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4570.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4570.md index 5ed5fb32dfe..c0c464ee809 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4570.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4570.md @@ -16,7 +16,7 @@ A type that contains [abstract](../../extensions/abstract-cpp-component-extensio ## Example -The following sample generates C4570. +The following example generates C4570. ```cpp // C4570.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4580.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4580.md index 01c6e8912e2..874bda8e856 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4580.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4580.md @@ -16,7 +16,7 @@ ms.assetid: fef6e8e0-0d6a-44fa-b22a-2fe7ba2ef379 ## Example -The following sample generates C3454 and shows how to fix it. +The following example generates C3454 and shows how to fix it. ```cpp // C4580.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4608.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4608.md index 97361c08ad0..aa1db03d331 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4608.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4608.md @@ -16,7 +16,7 @@ Two members of the same union were initialized in an initialization list. You ca ## Example -The following sample generates C4608: +The following example generates C4608: ```cpp // C4608.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4619.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4619.md index 4478f468147..3715c0dc957 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4619.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4619.md @@ -18,7 +18,7 @@ This warning is off by default. See [Compiler Warnings That Are Off by Default]( ## Example -The following sample generates C4619: +The following example generates C4619: ```cpp // C4619.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4564.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4564.md index 78340d61c40..e2bd7a2c0e3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4564.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4564.md @@ -28,7 +28,7 @@ Public class TestClass End class ``` -And the following C++ sample that uses the .dll created with Visual Basic, +And the following C++ example that uses the .dll created with Visual Basic, ```cpp // C4564.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4565.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4565.md index 293f34c42c8..c1ba82d1b8d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4565.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4565.md @@ -16,7 +16,7 @@ A symbol was redefined or redeclared and the second definition or declaration, u ## Example -The following sample generates C4565: +The following example generates C4565: ```cpp // C4565.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4571.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4571.md index c995c2afe9e..59d362c87da 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4571.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4571.md @@ -28,7 +28,7 @@ You can resolve C4571 in one of the following ways: ## Example -The following sample generates C4571. +The following example generates C4571. ```cpp // C4571.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4610.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4610.md index 7fb4975f297..c1905a4b9a6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4610.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4610.md @@ -16,7 +16,7 @@ The class has no user-defined or default constructors. No instantiation is perfo ## Example -The following sample generates C4610: +The following example generates C4610: ```cpp // C4610.cpp From 9844555e0fa0e5ee7f5efa159d9be26d52a08a6e Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 31 Aug 2025 18:51:24 +0800 Subject: [PATCH 1673/2255] Update metadata for warning references in range [C4561, C4620] --- docs/error-messages/compiler-warnings/c4596.md | 4 ++-- docs/error-messages/compiler-warnings/c4597.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4561.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4566.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4572.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4577.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4581.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4584.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4600.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4602.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4603.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4606.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4612.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4613.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4615.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4616.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4618.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4620.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4570.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4580.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4608.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4619.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4564.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4565.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4571.md | 1 - .../compiler-warnings/compiler-warning-level-4-c4610.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4611.md | 5 ++--- 27 files changed, 51 insertions(+), 75 deletions(-) diff --git a/docs/error-messages/compiler-warnings/c4596.md b/docs/error-messages/compiler-warnings/c4596.md index 2f75d68a92f..1f2156b3c89 100644 --- a/docs/error-messages/compiler-warnings/c4596.md +++ b/docs/error-messages/compiler-warnings/c4596.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4596" title: "Compiler Warning (Level 4) C4596" -ms.date: "08/15/2019" +description: "Learn more about: Compiler Warning (level 4) C4596" +ms.date: 08/15/2019 f1_keywords: ["C4596"] helpviewer_keywords: ["C4596"] --- diff --git a/docs/error-messages/compiler-warnings/c4597.md b/docs/error-messages/compiler-warnings/c4597.md index 321aab2edd3..55790a29b4f 100644 --- a/docs/error-messages/compiler-warnings/c4597.md +++ b/docs/error-messages/compiler-warnings/c4597.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler Warning (error) C4597" title: "Compiler Warning (error) C4597" +description: "Learn more about: Compiler Warning (error) C4597" ms.date: 05/03/2021 f1_keywords: ["C4597"] helpviewer_keywords: ["C4597"] diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4561.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4561.md index 625e053c84a..9c92d5ffb96 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4561.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4561.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4561" title: "Compiler Warning (level 1) C4561" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4561" +ms.date: 11/04/2016 f1_keywords: ["C4561"] helpviewer_keywords: ["C4561"] -ms.assetid: 3a10c12c-601b-4b6c-9861-331fd022e021 --- # Compiler Warning (level 1) C4561 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4566.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4566.md index 0c1451b42a4..b20a4c38cdb 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4566.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4566.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4566" title: "Compiler Warning (level 1) C4566" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4566" +ms.date: 11/04/2016 f1_keywords: ["C4566"] helpviewer_keywords: ["C4566"] -ms.assetid: 65f40730-e86f-447c-b37b-16caadcfe311 --- # Compiler Warning (level 1) C4566 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4572.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4572.md index 6bce2dd093e..6e42a081081 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4572.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4572.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4572" title: "Compiler Warning (level 1) C4572" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4572" +ms.date: 11/04/2016 f1_keywords: ["C4572"] helpviewer_keywords: ["C4572"] -ms.assetid: 482dee5a-29bd-4fc3-b769-9dfd4cd2a964 --- # Compiler Warning (level 1) C4572 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4577.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4577.md index 184f42ce9b9..9ba3d67ccb1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4577.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4577.md @@ -1,7 +1,7 @@ --- title: "Compiler Warning C4577" -description: Compiler warning C4577 description and solution. -ms.date: "09/18/2019" +description: "Compiler warning C4577 description and solution." +ms.date: 09/18/2019 f1_keywords: ["C4577"] helpviewer_keywords: ["C4577"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4581.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4581.md index 8363bfefc5d..f68c67ae615 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4581.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4581.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4581" title: "Compiler Warning (level 1) C4581" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4581" +ms.date: 11/04/2016 f1_keywords: ["C4581"] helpviewer_keywords: ["C4581"] -ms.assetid: 598bcd87-257d-4eb3-94e4-15bb31aadc99 --- # Compiler Warning (level 1) C4581 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4584.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4584.md index d1871239836..92ff0980142 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4584.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4584.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4584" title: "Compiler Warning (level 1) C4584" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4584" +ms.date: 11/04/2016 f1_keywords: ["C4584"] helpviewer_keywords: ["C4584"] -ms.assetid: ad86582f-cb8c-4d21-8c4c-a6c800059e25 --- # Compiler Warning (level 1) C4584 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4600.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4600.md index e6becded226..187cda9ee3e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4600.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4600.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4600" title: "Compiler Warning (level 1) C4600" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4600" +ms.date: 11/04/2016 f1_keywords: ["C4600"] helpviewer_keywords: ["C4600"] -ms.assetid: f023a2a1-7fc4-463f-a434-dc93fcd3f4e9 --- # Compiler Warning (level 1) C4600 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4602.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4602.md index 104ca62e71b..215e76f9799 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4602.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4602.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4602" title: "Compiler Warning (level 1) C4602" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4602" +ms.date: 11/04/2016 f1_keywords: ["C4602"] helpviewer_keywords: ["C4602"] -ms.assetid: c1f0300f-e2a2-4c9e-a7c3-4c7318d10509 --- # Compiler Warning (level 1) C4602 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4603.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4603.md index 6e6fa2665c2..56bb27c36d7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4603.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4603.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4603" title: "Compiler Warning (level 1) C4603" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4603" +ms.date: 11/04/2016 f1_keywords: ["C4603"] helpviewer_keywords: ["C4603"] -ms.assetid: f065994e-e3e5-4694-b868-c124472b3342 --- # Compiler Warning (level 1) C4603 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4606.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4606.md index 1ae23caf9cc..acfb5694aae 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4606.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4606.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4606" title: "Compiler Warning (level 1) C4606" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4606" +ms.date: 11/04/2016 f1_keywords: ["C4606"] helpviewer_keywords: ["C4606"] -ms.assetid: c1b45fb6-672b-42eb-9e1c-c67b3e4150d3 --- # Compiler Warning (level 1) C4606 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4612.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4612.md index 49a8294c0ff..d2adf572c5c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4612.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4612.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4612" title: "Compiler Warning (level 1) C4612" -ms.date: "08/27/2018" +description: "Learn more about: Compiler Warning (level 1) C4612" +ms.date: 08/27/2018 f1_keywords: ["C4612"] helpviewer_keywords: ["C4612"] -ms.assetid: 21ac02b2-51cd-4aff-9b70-d543511d5962 --- # Compiler Warning (level 1) C4612 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4613.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4613.md index 9cc0272de6e..b38c95c4b13 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4613.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4613.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4613" title: "Compiler Warning (level 1) C4613" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4613" +ms.date: 11/04/2016 f1_keywords: ["C4613"] helpviewer_keywords: ["C4613"] -ms.assetid: 399f521b-651c-4997-bc91-f40198e9a4d4 --- # Compiler Warning (level 1) C4613 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4615.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4615.md index ab8a21388b6..9fa4a67263d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4615.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4615.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4615" title: "Compiler Warning (level 1) C4615" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4615" +ms.date: 11/04/2016 f1_keywords: ["C4615"] helpviewer_keywords: ["C4615"] -ms.assetid: 7b107c01-0da2-4e01-8b40-93813e30b94c --- # Compiler Warning (level 1) C4615 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4616.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4616.md index 40cef13d645..1fb7f99a29e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4616.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4616.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4616" title: "Compiler Warning (level 1) C4616" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4616" +ms.date: 11/04/2016 f1_keywords: ["C4616"] helpviewer_keywords: ["C4616"] -ms.assetid: 71e15265-c5bc-42ce-a6a9-4879892472b1 --- # Compiler Warning (level 1) C4616 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4618.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4618.md index a75eeeec515..ef7b1fba645 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4618.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4618.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4618" title: "Compiler Warning (level 1) C4618" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4618" +ms.date: 11/04/2016 f1_keywords: ["C4618"] helpviewer_keywords: ["C4618"] -ms.assetid: 6ff10d0a-6d5b-4373-8196-1d57bb6b1611 --- # Compiler Warning (level 1) C4618 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4620.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4620.md index dfd025f2a1c..76b04214dec 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4620.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4620.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4620" title: "Compiler Warning (level 1) C4620" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4620" +ms.date: 11/04/2016 f1_keywords: ["C4620"] helpviewer_keywords: ["C4620"] -ms.assetid: fed29934-b797-47e8-bbea-c7e5f8dd6e93 --- # Compiler Warning (level 1) C4620 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4570.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4570.md index c0c464ee809..6ae41dad8d9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4570.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4570.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4570" title: "Compiler Warning (level 3) C4570" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4570" +ms.date: 11/04/2016 f1_keywords: ["C4570"] helpviewer_keywords: ["C4570"] -ms.assetid: feec1225-e6ad-4995-8d96-c22e864a77bd --- # Compiler Warning (level 3) C4570 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4580.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4580.md index 874bda8e856..479016f20c6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4580.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4580.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4580" title: "Compiler Warning (level 3) C4580" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4580" +ms.date: 11/04/2016 f1_keywords: ["C4580"] helpviewer_keywords: ["C4580"] -ms.assetid: fef6e8e0-0d6a-44fa-b22a-2fe7ba2ef379 --- # Compiler Warning (level 3) C4580 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4608.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4608.md index aa1db03d331..f924e7ab0e4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4608.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4608.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4608" title: "Compiler Warning (level 3) C4608" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4608" +ms.date: 11/04/2016 f1_keywords: ["C4608"] helpviewer_keywords: ["C4608"] -ms.assetid: 8b8f5f28-8ce9-457e-9d3d-a8c0efce9b6a --- # Compiler Warning (level 3) C4608 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4619.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4619.md index 3715c0dc957..fb98a1c9d61 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4619.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4619.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4619" title: "Compiler Warning (level 3) C4619" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4619" +ms.date: 11/04/2016 f1_keywords: ["C4619"] helpviewer_keywords: ["C4619"] -ms.assetid: 701fea21-01aa-4bea-93d4-1cb8824170b0 --- # Compiler Warning (level 3) C4619 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4564.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4564.md index e2bd7a2c0e3..92a33b38705 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4564.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4564.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4564" title: "Compiler Warning (level 4) C4564" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4564" +ms.date: 11/04/2016 f1_keywords: ["C4564"] helpviewer_keywords: ["C4564"] -ms.assetid: 555b301b-313e-4262-9f81-eb878674be60 --- # Compiler Warning (level 4) C4564 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4565.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4565.md index c1ba82d1b8d..c1f9e7d3e2b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4565.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4565.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4565" title: "Compiler Warning (level 4) C4565" -ms.date: "08/27/2018" +description: "Learn more about: Compiler Warning (level 4) C4565" +ms.date: 08/27/2018 f1_keywords: ["C4565"] helpviewer_keywords: ["C4565"] -ms.assetid: a71f1341-a4a1-4060-ad1e-9322531883ed --- # Compiler Warning (level 4) C4565 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4571.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4571.md index 59d362c87da..a45338491c2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4571.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4571.md @@ -4,7 +4,6 @@ description: "Documents the Microsoft C++ compiler warning C4571." ms.date: 08/24/2020 f1_keywords: ["C4571"] helpviewer_keywords: ["C4571"] -ms.assetid: 07aa17bd-b15c-4266-824c-57cc445e8edd --- # Compiler Warning (level 4) C4571 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4610.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4610.md index c1905a4b9a6..7f3a940728a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4610.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4610.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4610" title: "Compiler Warning (level 4) C4610" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4610" +ms.date: 11/04/2016 f1_keywords: ["C4610"] helpviewer_keywords: ["C4610"] -ms.assetid: 23c1a16c-9ca9-4bf6-9911-a72b785560c2 --- # Compiler Warning (level 4) C4610 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4611.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4611.md index 802ff39b78a..0a08bc7d430 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4611.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4611.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4611" title: "Compiler Warning (level 4) C4611" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4611" +ms.date: 11/04/2016 f1_keywords: ["C4611"] helpviewer_keywords: ["C4611"] -ms.assetid: bd90d0a6-75f9-4e97-968d-dda6773e9fd8 --- # Compiler Warning (level 4) C4611 From 08f9f265caf71f3768fc0aba8337ba6d85eff492 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 31 Aug 2025 18:52:34 +0800 Subject: [PATCH 1674/2255] Add leading example sentence in C4612 warning reference --- .../compiler-warnings/compiler-warning-level-1-c4612.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4612.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4612.md index d2adf572c5c..461fe57021d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4612.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4612.md @@ -17,6 +17,8 @@ The arguments to the **#pragma include_alias** statement can use the quote form ## Example +The following example generates C4612: + ```cpp // C4612.cpp // compile with: /W1 /LD From 9b806299226b5c9c457c8a63685311146152ea0d Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 31 Aug 2025 21:22:44 +0800 Subject: [PATCH 1675/2255] Fix miscellaneous spacing issues --- docs/build/reference/fpcvt.md | 2 +- docs/build/reference/ln-create-msil-module.md | 6 +++--- docs/build/reference/midl-property-pages.md | 2 +- ...pgd-specify-database-for-profile-guided-optimizations.md | 2 +- .../tool-errors/linker-tools-error-lnk2022.md | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/build/reference/fpcvt.md b/docs/build/reference/fpcvt.md index 8661d649c92..5e644c5c7da 100644 --- a/docs/build/reference/fpcvt.md +++ b/docs/build/reference/fpcvt.md @@ -40,7 +40,7 @@ The **`/fpcvt`** options are new in Visual Studio 2019 version 16.8. If you spec ### Intrinsic functions for conversions -You can specify the behavior of a specific conversion independently of the **`/fpcvt `** option, which applies globally. The compiler provides intrinsic sentinel conversion functions for conversions compatible with **`/fpcvt:IA`**. For more information, see [Sentinel conversion functions](../../intrinsics/sentinel-conversion-functions.md). The compiler also provides saturation conversion functions compatible with conversions on ARM or ARM64 target architectures. For more information, see [Saturation conversion functions](../../intrinsics/saturation-conversion-functions.md). +You can specify the behavior of a specific conversion independently of the **`/fpcvt`** option, which applies globally. The compiler provides intrinsic sentinel conversion functions for conversions compatible with **`/fpcvt:IA`**. For more information, see [Sentinel conversion functions](../../intrinsics/sentinel-conversion-functions.md). The compiler also provides saturation conversion functions compatible with conversions on ARM or ARM64 target architectures. For more information, see [Saturation conversion functions](../../intrinsics/saturation-conversion-functions.md). The compiler also supports intrinsic conversion functions that execute as quickly as possible for valid conversions. These functions may generate any value or throw an exception for an invalid conversion. The results depend on the target platform, compiler options, and context. They're useful for handling values that have already been range-checked, or values generated in a way that can't cause an invalid conversion. For more information, see [Fast conversion functions](../../intrinsics/fast-conversion-functions.md). diff --git a/docs/build/reference/ln-create-msil-module.md b/docs/build/reference/ln-create-msil-module.md index b5cd351176f..b8a545e5546 100644 --- a/docs/build/reference/ln-create-msil-module.md +++ b/docs/build/reference/ln-create-msil-module.md @@ -21,15 +21,15 @@ By default, `/LN` isn't in effect, and the compiler inserts an assembly manifest When you use `/LN`, you must also use one of the [/clr (Common Language Runtime Compilation)](clr-common-language-runtime-compilation.md) options. -A managed program that doesn't have assembly metadata in the manifest is called a module. If you compile with [/c (Compile Without Linking)](c-compile-without-linking.md) and `/LN`, specify [`/NOASSEMBLY `(Create a MSIL Module)](noassembly-create-a-msil-module.md) in the linker phase to create the output file. +A managed program that doesn't have assembly metadata in the manifest is called a module. If you compile with [/c (Compile Without Linking)](c-compile-without-linking.md) and `/LN`, specify [`/NOASSEMBLY` (Create a MSIL Module)](noassembly-create-a-msil-module.md) in the linker phase to create the output file. -Create modules if you want to take a component-based approach to building assemblies. You can author types and compile them into modules. Then, you can generate an assembly from one or more modules. For more information on creating assemblies from modules, see [`.netmodule` Files as Linker Input](netmodule-files-as-linker-input.md) or [`Al.exe `(Assembly Linker)](/dotnet/framework/tools/al-exe-assembly-linker). +Create modules if you want to take a component-based approach to building assemblies. You can author types and compile them into modules. Then, you can generate an assembly from one or more modules. For more information on creating assemblies from modules, see [`.netmodule` Files as Linker Input](netmodule-files-as-linker-input.md) or [`Al.exe` (Assembly Linker)](/dotnet/framework/tools/al-exe-assembly-linker). The default file extension for a module is `.netmodule`. In releases before Visual Studio 2005, you created a module with `/clr:noAssembly`. -The MSVC linker accepts `.netmodule` files as input. The output file produced by the linker is an assembly or `.netmodule` with no run-time dependence on any of the `.netmodule`s that you input to the linker. For more information, see [`.netmodule `Files as Linker Input](netmodule-files-as-linker-input.md). +The MSVC linker accepts `.netmodule` files as input. The output file produced by the linker is an assembly or `.netmodule` with no run-time dependence on any of the `.netmodule`s that you input to the linker. For more information, see [`.netmodule` Files as Linker Input](netmodule-files-as-linker-input.md). ### To set this compiler option in the Visual Studio development environment diff --git a/docs/build/reference/midl-property-pages.md b/docs/build/reference/midl-property-pages.md index 66c3955c39a..5c7d64e42e7 100644 --- a/docs/build/reference/midl-property-pages.md +++ b/docs/build/reference/midl-property-pages.md @@ -123,7 +123,7 @@ Specifies which environment to target ([/env](/windows/win32/midl/-env) arm32|wi ### Generate Stubless Proxies -Generate fully interpreted stubs with extensions and stubless proxies for object interfaces ([/Oicf](/windows/win32/midl/-oi), [/Oif](/windows/win32/midl/-oi) ). +Generate fully interpreted stubs with extensions and stubless proxies for object interfaces ([/Oicf](/windows/win32/midl/-oi), [/Oif](/windows/win32/midl/-oi)). ### Suppress Compiler Warnings diff --git a/docs/build/reference/pgd-specify-database-for-profile-guided-optimizations.md b/docs/build/reference/pgd-specify-database-for-profile-guided-optimizations.md index 77539e99b0c..d8461ded773 100644 --- a/docs/build/reference/pgd-specify-database-for-profile-guided-optimizations.md +++ b/docs/build/reference/pgd-specify-database-for-profile-guided-optimizations.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["-PGD linker option", "/PGD linker option"] --- # /PGD (Specify Database for Profile-Guided Optimizations) -**The /PGD option is deprecated.** Starting in Visual Studio 2015, prefer the [`/GENPROFILE`or `/FASTGENPROFILE`](genprofile-fastgenprofile-generate-profiling-instrumented-build.md) linker options instead. This option is used to specify the name of the .pgd file used by the profile-guided optimization process. +**The /PGD option is deprecated.** Starting in Visual Studio 2015, prefer the [`/GENPROFILE` or `/FASTGENPROFILE`](genprofile-fastgenprofile-generate-profiling-instrumented-build.md) linker options instead. This option is used to specify the name of the .pgd file used by the profile-guided optimization process. ## Syntax diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2022.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2022.md index eee9aa2821e..477002d9070 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2022.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2022.md @@ -16,7 +16,7 @@ One way to diagnose this problem is to run **ildasm -tokens** on the object file One reason for LNK2022 is when a type (such as a struct) exists in multiple compilands with the same name, but with conflicting definitions, and when you compile with [/clr](../../build/reference/clr-common-language-runtime-compilation.md). In this case, make sure that the type has an identical definition in all compilands. The type name is listed in `error_message`. -Another possible cause for LNK2022 is when the linker finds a metadata file in a different location than was specified to the compiler (with [#using](../../preprocessor/hash-using-directive-cpp.md) ). Make sure that the metadata file (.dll or .netmodule) is in the same location when passed to the linker, as it was when it was passed to the compiler. +Another possible cause for LNK2022 is when the linker finds a metadata file in a different location than was specified to the compiler (with [#using](../../preprocessor/hash-using-directive-cpp.md)). Make sure that the metadata file (.dll or .netmodule) is in the same location when passed to the linker, as it was when it was passed to the compiler. When building an ATL application, the use of the macro `_ATL_MIXED` is required in all compilands, if it is used in at least one. From 036f251ffd0e583f2b2473374eca99ca9660e47d Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 31 Aug 2025 21:24:00 +0800 Subject: [PATCH 1676/2255] Update metadata in 5 topics --- docs/build/reference/fpcvt.md | 2 +- docs/build/reference/ln-create-msil-module.md | 4 ++-- docs/build/reference/midl-property-pages.md | 5 ++--- .../pgd-specify-database-for-profile-guided-optimizations.md | 2 +- .../error-messages/tool-errors/linker-tools-error-lnk2022.md | 5 ++--- 5 files changed, 8 insertions(+), 10 deletions(-) diff --git a/docs/build/reference/fpcvt.md b/docs/build/reference/fpcvt.md index 5e644c5c7da..85446ad72e1 100644 --- a/docs/build/reference/fpcvt.md +++ b/docs/build/reference/fpcvt.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: /fpcvt (Floating-point to integer conversion compatibility)" title: "/fpcvt (Floating-point to unsigned integer conversion compatibility)" +description: "Learn more about: /fpcvt (Floating-point to integer conversion compatibility)" ms.date: 11/03/2021 f1_keywords: ["/fpcvt", "-fpcvt"] helpviewer_keywords: ["-fpcvt compiler option [C++]", "/fpcvt compiler option [C++]"] diff --git a/docs/build/reference/ln-create-msil-module.md b/docs/build/reference/ln-create-msil-module.md index b8a545e5546..4ec40b38bd7 100644 --- a/docs/build/reference/ln-create-msil-module.md +++ b/docs/build/reference/ln-create-msil-module.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: /LN (Create MSIL Module)" title: "/LN (Create MSIL Module)" -ms.date: "11/04/2016" +description: "Learn more about: /LN (Create MSIL Module)" +ms.date: 11/04/2016 f1_keywords: ["/LN"] helpviewer_keywords: ["-LN compiler option [C++]", "/LN compiler option [C++]"] --- diff --git a/docs/build/reference/midl-property-pages.md b/docs/build/reference/midl-property-pages.md index 5c7d64e42e7..73d39a260e2 100644 --- a/docs/build/reference/midl-property-pages.md +++ b/docs/build/reference/midl-property-pages.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: MIDL Property Pages" title: "MIDL Compiler Property Pages" -ms.date: "07/24/2019" +description: "Learn more about: MIDL Property Pages" +ms.date: 07/24/2019 ms.topic: "article" -ms.assetid: 57498a01-fccc-4a0e-a036-6ff702f83126 f1_keywords: - VC.Project.VCMidlTool.PreprocessorDefinitions - VC.Project.VCMidlTool.AdditionalIncludeDirectories diff --git a/docs/build/reference/pgd-specify-database-for-profile-guided-optimizations.md b/docs/build/reference/pgd-specify-database-for-profile-guided-optimizations.md index d8461ded773..746755ec18f 100644 --- a/docs/build/reference/pgd-specify-database-for-profile-guided-optimizations.md +++ b/docs/build/reference/pgd-specify-database-for-profile-guided-optimizations.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: /PGD (Specify Database for Profile-Guided Optimizations)" title: "/PGD (Specify Database for Profile-Guided Optimizations)" +description: "Learn more about: /PGD (Specify Database for Profile-Guided Optimizations)" ms.date: 03/24/2025 f1_keywords: ["VC.Project.VCLinkerTool.ProfileGuidedDatabase"] helpviewer_keywords: ["-PGD linker option", "/PGD linker option"] diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2022.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2022.md index 477002d9070..56c9f16627b 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2022.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2022.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK2022" title: "Linker Tools Error LNK2022" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK2022" +ms.date: 11/04/2016 f1_keywords: ["LNK2022"] helpviewer_keywords: ["LNK2022"] -ms.assetid: d2128c73-dde3-4b8e-a9b2-0a153acefb3b --- # Linker Tools Error LNK2022 From fbf2609c3fc5189153b3e129e3567b60015b9c8f Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 31 Aug 2025 21:36:40 +0800 Subject: [PATCH 1677/2255] Add blockquotes for warning messages in range [C4621, C4660] --- .../compiler-warnings/compiler-warning-level-1-c4621.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4624.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4628.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4630.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4631.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4632.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4650.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4651.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4652.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4656.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4657.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4659.md | 2 +- .../compiler-warnings/compiler-warning-level-2-c4653.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4622.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4633.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4635.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4636.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4637.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4640.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4641.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4645.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4646.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4625.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4626.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4629.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4634.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4639.md | 2 +- 27 files changed, 27 insertions(+), 27 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4621.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4621.md index 575f6c2d426..e255746972e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4621.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4621.md @@ -8,7 +8,7 @@ ms.assetid: 40931bd9-cb89-497e-86f0-cec9f016c63c --- # Compiler Warning (level 1) C4621 -no postfix form of 'operator --' found for type 'type', using prefix form +> no postfix form of 'operator --' found for type 'type', using prefix form There was no postfix decrement operator defined for the given type. The compiler used the overloaded prefix operator. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4624.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4624.md index 977cd630768..a6613e703bc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4624.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4624.md @@ -8,7 +8,7 @@ ms.assetid: 14f61769-d92e-482b-9515-debd87b30a66 --- # Compiler Warning (level 1) C4624 -'derived class' : destructor was implicitly defined as deleted because a base class destructor is inaccessible or deleted +> 'derived class' : destructor was implicitly defined as deleted because a base class destructor is inaccessible or deleted A destructor was not accessible or deleted in a base class and was therefore not generated for a derived class. Any attempt to create an object of this type on the stack will cause a compiler error. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4628.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4628.md index 98acc3132b9..022b3e5759a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4628.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4628.md @@ -8,7 +8,7 @@ ms.assetid: 20fdc6f8-5f6a-40cc-aff8-c7ccf3d8ec26 --- # Compiler Warning (level 1) C4628 -digraphs not supported with -Ze. Character sequence 'digraph' not interpreted as alternate token for 'char' +> digraphs not supported with -Ze. Character sequence 'digraph' not interpreted as alternate token for 'char' Digraphs are not supported under [/Ze](../../build/reference/za-ze-disable-language-extensions.md). This warning will be followed by an error. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4630.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4630.md index 3f80c7b419e..7933ab13cfa 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4630.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4630.md @@ -8,7 +8,7 @@ ms.assetid: d8926376-7acc-4fc7-8438-6f0de3468870 --- # Compiler Warning (level 1) C4630 -'symbol' : 'extern' storage class specifier illegal on member definition +> 'symbol' : 'extern' storage class specifier illegal on member definition A data member or member function is defined as **`extern`**. Members cannot be external, although entire objects can. The compiler ignores the **`extern`** keyword. The following sample generates C4630: diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4631.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4631.md index 63815b39c47..77af3a4476c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4631.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4631.md @@ -8,6 +8,6 @@ ms.assetid: d8636ff6-29a7-4fec-b9a6-e201d121c3ca --- # Compiler Warning (level 1) C4631 -MSXML or XPath unavailable, XML document comments will not be processed. reason +> MSXML or XPath unavailable, XML document comments will not be processed. reason Your common language runtime installation did not have the necessary files to support processing doc comment. Reinstall the common language runtime. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4632.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4632.md index eb92db81390..43a730a9963 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4632.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4632.md @@ -8,7 +8,7 @@ ms.assetid: 9e35d205-cf21-4e34-8bd5-e1e7b0e2cdd3 --- # Compiler Warning (level 1) C4632 -XML document comment: file - access denied: reason +> XML document comment: file - access denied: reason The path to .xdc file (`file`) was not valid, and no .xdc file created. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4650.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4650.md index 6eb867c876c..0067049701d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4650.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4650.md @@ -8,7 +8,7 @@ ms.assetid: 3190b3e3-dcd6-4846-939b-f900ab652b2a --- # Compiler Warning (level 1) C4650 -debugging information not in precompiled header; only global symbols from the header will be available +> debugging information not in precompiled header; only global symbols from the header will be available The precompiled header file was not compiled with Microsoft symbolic debugging information. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4651.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4651.md index ad0334aba73..6d8c55a2514 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4651.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4651.md @@ -8,7 +8,7 @@ ms.assetid: f1ea82aa-4dc1-4972-b55a-57fdb962f0dd --- # Compiler Warning (level 1) C4651 -'definition' specified for precompiled header but not for current compile +> 'definition' specified for precompiled header but not for current compile The definition was specified when the precompiled header was generated, but not in this compilation. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4652.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4652.md index b8130b1bd48..086cfb47fdc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4652.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4652.md @@ -8,7 +8,7 @@ ms.assetid: 2cf2c666-8cdd-4dd9-bda0-662921498b03 --- # Compiler Warning (level 1) C4652 -compiler option 'option' inconsistent with precompiled header; current command-line option will override that defined in the precompiled header +> compiler option 'option' inconsistent with precompiled header; current command-line option will override that defined in the precompiled header The given command-line option differed from that given when the precompiled header (.pch) was created. The option specified in the current command line was used. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4656.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4656.md index 4d7a41a0736..1c9a80362ee 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4656.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4656.md @@ -8,7 +8,7 @@ ms.assetid: b5aaef74-2320-4345-a6ae-b813881a491c --- # Compiler Warning (level 1) C4656 -'symbol' : data type is new or has changed since the last build, or is defined differently elsewhere +> 'symbol' : data type is new or has changed since the last build, or is defined differently elsewhere You added or changed a data type, making it new to your source code since the last successful build. Edit and Continue does not support changes to existing data types. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4657.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4657.md index 2fe16f7f35d..9d6c51bb979 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4657.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4657.md @@ -8,7 +8,7 @@ ms.assetid: eb750050-cea6-4ead-b80c-d5dcd4971cfc --- # Compiler Warning (level 1) C4657 -expression involves a data type that is new since the last build +> expression involves a data type that is new since the last build You added or changed a data type, making it new to your source code since the last successful build. Edit and Continue does not support changes to existing data types. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4659.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4659.md index 88e61092e69..53316d9adb0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4659.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4659.md @@ -8,7 +8,7 @@ ms.assetid: e29ba8db-7917-43f6-8e34-868b752279ae --- # Compiler Warning (level 1) C4659 -\#pragma 'pragma' : use of reserved segment 'segment' has undefined behavior, use #pragma comment(linker, ...) +> #pragma 'pragma' : use of reserved segment 'segment' has undefined behavior, use #pragma comment(linker, ...) The .drectve option was used to pass an option to the linker. Instead use pragma [comment](../../preprocessor/comment-c-cpp.md) for passing a linker option. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4653.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4653.md index f731d8824bb..5f667b2d121 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4653.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4653.md @@ -8,7 +8,7 @@ ms.assetid: 90ec3317-3d39-4b4c-bcd1-97e7c799e1b6 --- # Compiler Warning (level 2) C4653 -compiler option 'option' inconsistent with precompiled header; current command-line option ignored +> compiler option 'option' inconsistent with precompiled header; current command-line option ignored An option specified with the Use Precompiled Headers ([/Yu](../../build/reference/yu-use-precompiled-header-file.md)) option was inconsistent with the options specified when the precompiled header was created. This compilation used the option specified when the precompiled header was created. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4622.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4622.md index 2a33076a976..b91ef08b4f9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4622.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4622.md @@ -8,7 +8,7 @@ ms.assetid: d3c879f0-4492-4f4b-b26d-230993f3a933 --- # Compiler Warning (level 3) C4622 -Overwriting debug information formed during creation of the precompiled header in object file: 'file' +> Overwriting debug information formed during creation of the precompiled header in object file: 'file' CodeView information in the specified file was lost when it was compiled with the [/Yu](../../build/reference/yu-use-precompiled-header-file.md) (Use Precompiled Headers) option. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4633.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4633.md index 8a008df2686..9e59d51e989 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4633.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4633.md @@ -8,7 +8,7 @@ ms.assetid: 6d76f268-ba8c-448b-8e83-b903a18b583b --- # Compiler Warning (level 3) C4633 -XML document comment target: error: reason +> XML document comment target: error: reason A name passed to the [\](../../build/reference/param-visual-cpp.md) tag was not found by the compiler. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4635.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4635.md index dec16024a92..a4b7510ed82 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4635.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4635.md @@ -8,7 +8,7 @@ ms.assetid: b2ba90de-c093-4a76-8076-b65878467574 --- # Compiler Warning (level 3) C4635 -XML document comment target: badly-formed XML: reason +> XML document comment target: badly-formed XML: reason The compiler found some problem with the XML tags. Fix the problem and recompile diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4636.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4636.md index 4591d9dcc8a..493eb8082e1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4636.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4636.md @@ -8,7 +8,7 @@ ms.assetid: 59112a0f-850f-41c6-bd84-8ae8dc84706a --- # Compiler Warning (level 3) C4636 -XML document comment applied to 'construct': tag requires non-empty '' attribute. +> XML document comment applied to 'construct': tag requires non-empty '' attribute. A tag, such as `cref`, did not have a value. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4637.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4637.md index 3617d5b4ace..09a7b5cd8de 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4637.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4637.md @@ -8,7 +8,7 @@ ms.assetid: 5fd347c1-2de9-408f-9136-1bf1ff273622 --- # Compiler Warning (level 3) C4637 -XML document comment target: \ tag discarded. reason +> XML document comment target: \ tag discarded. reason The syntax of an [\](../../build/reference/include-visual-cpp.md) tag was not correct. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4640.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4640.md index 99e0026cb1a..302706dac17 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4640.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4640.md @@ -8,7 +8,7 @@ ms.assetid: f76871f6-e436-4c35-9793-d2f22f7e1c7f --- # Compiler Warning (level 3) C4640 -'instance' : construction of local static object is not thread-safe +> 'instance' : construction of local static object is not thread-safe A static instance of an object is not thread safe. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4641.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4641.md index 86cf77948f0..2b14a15fbca 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4641.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4641.md @@ -8,7 +8,7 @@ ms.assetid: 28fe5c3e-6039-42da-9100-1312b5b15aea --- # Compiler Warning (level 3) C4641 -XML document comment has an ambiguous cross reference +> XML document comment has an ambiguous cross reference The compiler was unable to unambiguously resolve a reference. To resolve this warning, specify the parameter information necessary to make the reference unambiguous. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4645.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4645.md index 278a1ffe4c4..233c1231248 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4645.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4645.md @@ -8,7 +8,7 @@ ms.assetid: fd7c1ddf-f0d0-4e10-bab9-ccb4c3476298 --- # Compiler Warning (level 3) C4645 -function declared with __declspec(noreturn) has a return statement +> function declared with __declspec(noreturn) has a return statement A [return](../../cpp/program-termination.md) statement was found in a function that is marked with the [noreturn](../../cpp/noreturn.md) **`__declspec`** modifier. The **`return`** statement was ignored. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4646.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4646.md index 427f282b514..b6e22f876da 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4646.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4646.md @@ -8,7 +8,7 @@ ms.assetid: 23677e8e-603e-40e0-b99a-2e4894a1278e --- # Compiler Warning (level 3) C4646 -function declared with __declspec(noreturn) has non-void return type +> function declared with __declspec(noreturn) has non-void return type A function marked with the [noreturn](../../cpp/noreturn.md) **`__declspec`** modifier should have a [void](../../cpp/void-cpp.md) return type. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4625.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4625.md index 769736cbd7b..25126e27485 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4625.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4625.md @@ -8,7 +8,7 @@ ms.assetid: 4cc99e50-846c-4784-97da-48b977067851 --- # Compiler Warning (level 4) C4625 -'derived class' : copy constructor was implicitly defined as deleted because a base class copy constructor is inaccessible or deleted +> 'derived class' : copy constructor was implicitly defined as deleted because a base class copy constructor is inaccessible or deleted A copy constructor was deleted or not accessible in a base class and was therefore not generated for a derived class. Any attempt to copy an object of this type will cause a compiler error. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4626.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4626.md index 277e3e6f834..2f9a47e324c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4626.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4626.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C4626"] --- # Compiler Warning (level 4) C4626 -'derived class' : assignment operator was implicitly defined as deleted because a base class assignment operator is inaccessible or deleted +> 'derived class' : assignment operator was implicitly defined as deleted because a base class assignment operator is inaccessible or deleted An assignment operator was deleted or not accessible in a base class and was therefore not generated for a derived class. Any attempt to assign objects of this type will cause a compiler error. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4629.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4629.md index 31618dd3700..9df628c91c1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4629.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4629.md @@ -8,7 +8,7 @@ ms.assetid: 158cde12-bae5-4d43-b575-b52b35aaa0b9 --- # Compiler Warning (level 4) C4629 -digraph used, character sequence 'digraph' interpreted as token 'char' (insert a space between the two characters if this is not what you intended) +> digraph used, character sequence 'digraph' interpreted as token 'char' (insert a space between the two characters if this is not what you intended) Under [/Za](../../build/reference/za-ze-disable-language-extensions.md), the compiler warns when it detects a digraph. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4634.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4634.md index 9b1ac75158a..7a5ffd8074a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4634.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4634.md @@ -8,7 +8,7 @@ ms.assetid: 3e3496ce-2ac7-43d0-a48a-f514c950e81d --- # Compiler Warning (level 4) C4634 -XML document comment: cannot be applied: reason +> XML document comment: cannot be applied: reason XML documentation tags can not be applied to all C++ constructs. For example, you cannot add a documentation comment to a namespace or template. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4639.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4639.md index 8d5ddea0f74..87bb7983ddb 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4639.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4639.md @@ -8,7 +8,7 @@ ms.assetid: f94f7392-cdbb-4bf4-8a00-20dc90d3efe9 --- # Compiler Warning (level 4) C4639 -MSXML error, XML document comments will not be processed. reason +> MSXML error, XML document comments will not be processed. reason This warning can occur for any number of reasons. From 04a77701c22870f622deaac93cb6a76ded69b516 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 31 Aug 2025 21:43:19 +0800 Subject: [PATCH 1678/2255] Add "Remarks" and "Example" headings for warning references in range [C4621, C4660] --- .../compiler-warnings/compiler-warning-level-1-c4621.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4624.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4627.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4628.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4630.md | 8 +++++++- .../compiler-warnings/compiler-warning-level-1-c4631.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4632.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4650.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4651.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4652.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4656.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4657.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4659.md | 4 ++++ .../compiler-warnings/compiler-warning-level-2-c4653.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4622.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4633.md | 4 ++++ .../compiler-warnings/compiler-warning-level-3-c4635.md | 4 ++++ .../compiler-warnings/compiler-warning-level-3-c4636.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4637.md | 4 ++++ .../compiler-warnings/compiler-warning-level-3-c4640.md | 4 ++++ .../compiler-warnings/compiler-warning-level-3-c4641.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4645.md | 4 ++++ .../compiler-warnings/compiler-warning-level-3-c4646.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4623.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4625.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4626.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4629.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4634.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4639.md | 2 ++ 29 files changed, 89 insertions(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4621.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4621.md index e255746972e..3b5ea0bb3c2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4621.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4621.md @@ -10,8 +10,12 @@ ms.assetid: 40931bd9-cb89-497e-86f0-cec9f016c63c > no postfix form of 'operator --' found for type 'type', using prefix form +## Remarks + There was no postfix decrement operator defined for the given type. The compiler used the overloaded prefix operator. +## Example + This warning can be avoided by defining a postfix `--` operator. Create a two-argument version of the `--` operator as shown below: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4624.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4624.md index a6613e703bc..96a98649128 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4624.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4624.md @@ -10,8 +10,12 @@ ms.assetid: 14f61769-d92e-482b-9515-debd87b30a66 > 'derived class' : destructor was implicitly defined as deleted because a base class destructor is inaccessible or deleted +## Remarks + A destructor was not accessible or deleted in a base class and was therefore not generated for a derived class. Any attempt to create an object of this type on the stack will cause a compiler error. +## Example + The following sample generates C4624 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4627.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4627.md index d8e7bfaf5d0..113514595f9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4627.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4627.md @@ -10,6 +10,8 @@ ms.assetid: 8840f3e6-b496-423a-8635-eb55d5f854a2 > '*header_file*': skipped when looking for precompiled header use +## Remarks + If the current source file has the [/Yu \(Use precompiled header file)](../../build/reference/yu-use-precompiled-header-file.md) option set, then the compiler ignores everything in the file before the precompiled header is included. Warning **C4627** is generated in Visual Studio 2015 and earlier versions if *header_file* is included before the precompiled header file, and if the precompiled header does not also include *header_file*. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4628.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4628.md index 022b3e5759a..9bc3b0e82d0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4628.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4628.md @@ -10,10 +10,14 @@ ms.assetid: 20fdc6f8-5f6a-40cc-aff8-c7ccf3d8ec26 > digraphs not supported with -Ze. Character sequence 'digraph' not interpreted as alternate token for 'char' +## Remarks + Digraphs are not supported under [/Ze](../../build/reference/za-ze-disable-language-extensions.md). This warning will be followed by an error. This warning is off by default. See [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md) for more information. +## Example + The following sample generates C4628: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4630.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4630.md index 7933ab13cfa..e505afb847c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4630.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4630.md @@ -10,7 +10,13 @@ ms.assetid: d8926376-7acc-4fc7-8438-6f0de3468870 > 'symbol' : 'extern' storage class specifier illegal on member definition -A data member or member function is defined as **`extern`**. Members cannot be external, although entire objects can. The compiler ignores the **`extern`** keyword. The following sample generates C4630: +## Remarks + +A data member or member function is defined as **`extern`**. Members cannot be external, although entire objects can. The compiler ignores the **`extern`** keyword. + +## Example + +The following sample generates C4630: ```cpp // C4630.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4631.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4631.md index 77af3a4476c..917ed8abc8a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4631.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4631.md @@ -10,4 +10,6 @@ ms.assetid: d8636ff6-29a7-4fec-b9a6-e201d121c3ca > MSXML or XPath unavailable, XML document comments will not be processed. reason +## Remarks + Your common language runtime installation did not have the necessary files to support processing doc comment. Reinstall the common language runtime. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4632.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4632.md index 43a730a9963..fdafb4e829a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4632.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4632.md @@ -10,8 +10,12 @@ ms.assetid: 9e35d205-cf21-4e34-8bd5-e1e7b0e2cdd3 > XML document comment: file - access denied: reason +## Remarks + The path to .xdc file (`file`) was not valid, and no .xdc file created. +## Example + The following sample generates C4632: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4650.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4650.md index 0067049701d..a1c6fb2726b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4650.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4650.md @@ -10,6 +10,8 @@ ms.assetid: 3190b3e3-dcd6-4846-939b-f900ab652b2a > debugging information not in precompiled header; only global symbols from the header will be available +## Remarks + The precompiled header file was not compiled with Microsoft symbolic debugging information. When linked, the resulting executable or dynamic-link library file will not include debugging information for local symbols contained in the precompiled header. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4651.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4651.md index 6d8c55a2514..0805b2bc904 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4651.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4651.md @@ -10,6 +10,8 @@ ms.assetid: f1ea82aa-4dc1-4972-b55a-57fdb962f0dd > 'definition' specified for precompiled header but not for current compile +## Remarks + The definition was specified when the precompiled header was generated, but not in this compilation. The definition will be in effect inside the precompiled header, but not in the rest of the code. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4652.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4652.md index 086cfb47fdc..75bceeb458b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4652.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4652.md @@ -10,6 +10,8 @@ ms.assetid: 2cf2c666-8cdd-4dd9-bda0-662921498b03 > compiler option 'option' inconsistent with precompiled header; current command-line option will override that defined in the precompiled header +## Remarks + The given command-line option differed from that given when the precompiled header (.pch) was created. The option specified in the current command line was used. This warning can be avoided by regenerating the precompiled header with the given command-line option. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4656.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4656.md index 1c9a80362ee..e21fd07f60a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4656.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4656.md @@ -10,6 +10,8 @@ ms.assetid: b5aaef74-2320-4345-a6ae-b813881a491c > 'symbol' : data type is new or has changed since the last build, or is defined differently elsewhere +## Remarks + You added or changed a data type, making it new to your source code since the last successful build. Edit and Continue does not support changes to existing data types. This warning will always be followed by [Fatal Error C1092](../../error-messages/compiler-errors-1/fatal-error-c1092.md). For further information, see the [Supported Code Changes](/visualstudio/debugger/supported-code-changes-cpp). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4657.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4657.md index 9d6c51bb979..6056fb6201f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4657.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4657.md @@ -10,6 +10,8 @@ ms.assetid: eb750050-cea6-4ead-b80c-d5dcd4971cfc > expression involves a data type that is new since the last build +## Remarks + You added or changed a data type, making it new to your source code since the last successful build. Edit and Continue does not support changes to existing data types. This warning will always be followed by [Fatal Error C1092](../../error-messages/compiler-errors-1/fatal-error-c1092.md). For further information, see the [Supported Code Changes](/visualstudio/debugger/supported-code-changes-cpp). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4659.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4659.md index 53316d9adb0..61dcf3e945d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4659.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4659.md @@ -10,8 +10,12 @@ ms.assetid: e29ba8db-7917-43f6-8e34-868b752279ae > #pragma 'pragma' : use of reserved segment 'segment' has undefined behavior, use #pragma comment(linker, ...) +## Remarks + The .drectve option was used to pass an option to the linker. Instead use pragma [comment](../../preprocessor/comment-c-cpp.md) for passing a linker option. +## Example + ```cpp // C4659.cpp // compile with: /W1 /LD diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4653.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4653.md index 5f667b2d121..ec238dc0aca 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4653.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4653.md @@ -10,6 +10,8 @@ ms.assetid: 90ec3317-3d39-4b4c-bcd1-97e7c799e1b6 > compiler option 'option' inconsistent with precompiled header; current command-line option ignored +## Remarks + An option specified with the Use Precompiled Headers ([/Yu](../../build/reference/yu-use-precompiled-header-file.md)) option was inconsistent with the options specified when the precompiled header was created. This compilation used the option specified when the precompiled header was created. This warning can occur when a different value for the Pack Structures option ([/Zp](../../build/reference/zp-struct-member-alignment.md)) was specified during compilation of the precompiled header. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4622.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4622.md index b91ef08b4f9..e91c002bd56 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4622.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4622.md @@ -10,6 +10,8 @@ ms.assetid: d3c879f0-4492-4f4b-b26d-230993f3a933 > Overwriting debug information formed during creation of the precompiled header in object file: 'file' +## Remarks + CodeView information in the specified file was lost when it was compiled with the [/Yu](../../build/reference/yu-use-precompiled-header-file.md) (Use Precompiled Headers) option. Rename the object file (using [/Fo](../../build/reference/fo-object-file-name.md)) when creating or using the precompiled header file, and link using the new object file. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4633.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4633.md index 9e59d51e989..ccf058bb19a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4633.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4633.md @@ -10,8 +10,12 @@ ms.assetid: 6d76f268-ba8c-448b-8e83-b903a18b583b > XML document comment target: error: reason +## Remarks + A name passed to the [\](../../build/reference/param-visual-cpp.md) tag was not found by the compiler. +## Example + The following sample generates C4633: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4635.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4635.md index a4b7510ed82..b68413cfba2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4635.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4635.md @@ -10,8 +10,12 @@ ms.assetid: b2ba90de-c093-4a76-8076-b65878467574 > XML document comment target: badly-formed XML: reason +## Remarks + The compiler found some problem with the XML tags. Fix the problem and recompile +## Example + The following sample generates C4635: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4636.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4636.md index 493eb8082e1..6f400e9a093 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4636.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4636.md @@ -10,6 +10,8 @@ ms.assetid: 59112a0f-850f-41c6-bd84-8ae8dc84706a > XML document comment applied to 'construct': tag requires non-empty '' attribute. +## Remarks + A tag, such as `cref`, did not have a value. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4637.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4637.md index 09a7b5cd8de..57aa3445964 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4637.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4637.md @@ -10,8 +10,12 @@ ms.assetid: 5fd347c1-2de9-408f-9136-1bf1ff273622 > XML document comment target: \ tag discarded. reason +## Remarks + The syntax of an [\](../../build/reference/include-visual-cpp.md) tag was not correct. +## Example + The following sample generates C4637: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4640.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4640.md index 302706dac17..8cf28a2327f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4640.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4640.md @@ -10,10 +10,14 @@ ms.assetid: f76871f6-e436-4c35-9793-d2f22f7e1c7f > 'instance' : construction of local static object is not thread-safe +## Remarks + A static instance of an object is not thread safe. This warning is off by default. See [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md) for more information. +## Example + The following sample generates C4640: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4641.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4641.md index 2b14a15fbca..ecb11aed7b8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4641.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4641.md @@ -10,6 +10,8 @@ ms.assetid: 28fe5c3e-6039-42da-9100-1312b5b15aea > XML document comment has an ambiguous cross reference +## Remarks + The compiler was unable to unambiguously resolve a reference. To resolve this warning, specify the parameter information necessary to make the reference unambiguous. For more information, see [XML Documentation](../../build/reference/xml-documentation-visual-cpp.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4645.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4645.md index 233c1231248..3e7eca026d2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4645.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4645.md @@ -10,8 +10,12 @@ ms.assetid: fd7c1ddf-f0d0-4e10-bab9-ccb4c3476298 > function declared with __declspec(noreturn) has a return statement +## Remarks + A [return](../../cpp/program-termination.md) statement was found in a function that is marked with the [noreturn](../../cpp/noreturn.md) **`__declspec`** modifier. The **`return`** statement was ignored. +## Example + The following sample generates C4645: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4646.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4646.md index b6e22f876da..309fc321a63 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4646.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4646.md @@ -10,8 +10,12 @@ ms.assetid: 23677e8e-603e-40e0-b99a-2e4894a1278e > function declared with __declspec(noreturn) has non-void return type +## Remarks + A function marked with the [noreturn](../../cpp/noreturn.md) **`__declspec`** modifier should have a [void](../../cpp/void-cpp.md) return type. +## Example + The following sample generates C4646: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4623.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4623.md index 012e0513849..5e823215a80 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4623.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4623.md @@ -10,6 +10,8 @@ ms.assetid: e630d8d0-f6ea-469c-a74f-07b027587225 > '`derived class`' : default constructor was implicitly defined as deleted +## Remarks + Because the default constructor is deleted or inaccessible in a base class, the compiler can't generate a default constructor for the derived class. Attempts to create an object of this type by using the default constructor (for example, in an array) cause a compiler error. This warning is off by default. For more information, see [Compiler warnings that are off by default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4625.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4625.md index 25126e27485..0ebadcaf880 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4625.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4625.md @@ -10,6 +10,8 @@ ms.assetid: 4cc99e50-846c-4784-97da-48b977067851 > 'derived class' : copy constructor was implicitly defined as deleted because a base class copy constructor is inaccessible or deleted +## Remarks + A copy constructor was deleted or not accessible in a base class and was therefore not generated for a derived class. Any attempt to copy an object of this type will cause a compiler error. This warning is off by default. See [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md) for more information. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4626.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4626.md index 2f9a47e324c..a15f46c4c6c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4626.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4626.md @@ -9,10 +9,14 @@ helpviewer_keywords: ["C4626"] > 'derived class' : assignment operator was implicitly defined as deleted because a base class assignment operator is inaccessible or deleted +## Remarks + An assignment operator was deleted or not accessible in a base class and was therefore not generated for a derived class. Any attempt to assign objects of this type will cause a compiler error. This warning is off by default. See [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md) for more information. +## Example + The following sample generates C4626 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4629.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4629.md index 9df628c91c1..047e01368db 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4629.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4629.md @@ -10,8 +10,12 @@ ms.assetid: 158cde12-bae5-4d43-b575-b52b35aaa0b9 > digraph used, character sequence 'digraph' interpreted as token 'char' (insert a space between the two characters if this is not what you intended) +## Remarks + Under [/Za](../../build/reference/za-ze-disable-language-extensions.md), the compiler warns when it detects a digraph. +## Example + The following sample generates C4629: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4634.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4634.md index 7a5ffd8074a..9d8fa237b40 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4634.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4634.md @@ -10,6 +10,8 @@ ms.assetid: 3e3496ce-2ac7-43d0-a48a-f514c950e81d > XML document comment: cannot be applied: reason +## Remarks + XML documentation tags can not be applied to all C++ constructs. For example, you cannot add a documentation comment to a namespace or template. For more information, see [XML Documentation](../../build/reference/xml-documentation-visual-cpp.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4639.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4639.md index 87bb7983ddb..95e01172ac2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4639.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4639.md @@ -10,6 +10,8 @@ ms.assetid: f94f7392-cdbb-4bf4-8a00-20dc90d3efe9 > MSXML error, XML document comments will not be processed. reason +## Remarks + This warning can occur for any number of reasons. To resolve this warning: From 8a22f62d2c61625b3ca42426ccfe10612cc4593d Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 31 Aug 2025 21:44:55 +0800 Subject: [PATCH 1679/2255] Replace term "sample" with "example" for warning references in range [C4621, C4660] --- .../compiler-warnings/compiler-warning-level-1-c4624.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4627.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4628.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4630.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4632.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4633.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4635.md | 6 +++--- .../compiler-warnings/compiler-warning-level-3-c4636.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4637.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4638.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4640.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4641.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4645.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4646.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4623.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4625.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4626.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4629.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4634.md | 4 ++-- 19 files changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4624.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4624.md index 96a98649128..6aafd0ec335 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4624.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4624.md @@ -16,7 +16,7 @@ A destructor was not accessible or deleted in a base class and was therefore not ## Example -The following sample generates C4624 and shows how to fix it: +The following example generates C4624 and shows how to fix it: ```cpp // C4624.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4627.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4627.md index 113514595f9..00f27e72632 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4627.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4627.md @@ -16,7 +16,7 @@ If the current source file has the [/Yu \(Use precompiled header file)](../../bu ## Example -This sample demonstrates how the error can occur, and shows how to fix it: +This example demonstrates how the error can occur, and shows how to fix it: ```cpp // c4627.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4628.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4628.md index 9bc3b0e82d0..20fc41a8db3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4628.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4628.md @@ -18,7 +18,7 @@ This warning is off by default. See [Compiler Warnings That Are Off by Default]( ## Example -The following sample generates C4628: +The following example generates C4628: ```cpp // C4628.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4630.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4630.md index e505afb847c..0131b12b787 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4630.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4630.md @@ -16,7 +16,7 @@ A data member or member function is defined as **`extern`**. Members cannot be e ## Example -The following sample generates C4630: +The following example generates C4630: ```cpp // C4630.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4632.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4632.md index fdafb4e829a..9513c7ec5ee 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4632.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4632.md @@ -16,7 +16,7 @@ The path to .xdc file (`file`) was not valid, and no .xdc file created. ## Example -The following sample generates C4632: +The following example generates C4632: ```cpp // C4632.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4633.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4633.md index ccf058bb19a..7a982a390b0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4633.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4633.md @@ -16,7 +16,7 @@ A name passed to the [\](../../build/reference/param-visual-cpp.md) tag w ## Example -The following sample generates C4633: +The following example generates C4633: ```cpp // C4633.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4635.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4635.md index b68413cfba2..98c13db6004 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4635.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4635.md @@ -16,7 +16,7 @@ The compiler found some problem with the XML tags. Fix the problem and recompil ## Example -The following sample generates C4635: +The following example generates C4635: ```cpp // C4635.cpp @@ -30,6 +30,6 @@ The following sample generates C4635: public ref class Test {}; ``` -Notice that the output for this sample says: **End tag 'member' does not match the start tag 'summary'.** +Notice that the output for this example says: **End tag 'member' does not match the start tag 'summary'.** -The problem with this sample is that the end tag for \

is poorly formed, and the compiler does not recognize it as the \ end tag. The \ tag is embedded in the .xdc file by the compiler in every /doc compilation. So, the problem here is that the end tag \, does not match the previous start tag that the compiler processed (\. +The problem with this example is that the end tag for \ is poorly formed, and the compiler does not recognize it as the \ end tag. The \ tag is embedded in the .xdc file by the compiler in every /doc compilation. So, the problem here is that the end tag \, does not match the previous start tag that the compiler processed (\. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4636.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4636.md index 6f400e9a093..ffc0af62e07 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4636.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4636.md @@ -16,7 +16,7 @@ A tag, such as `cref`, did not have a value. ## Example -The following sample generates C4636. +The following example generates C4636. ```cpp // C4636.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4637.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4637.md index 57aa3445964..c0f18b75d4c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4637.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4637.md @@ -16,7 +16,7 @@ The syntax of an [\](../../build/reference/include-visual-cpp.md) tag w ## Example -The following sample generates C4637: +The following example generates C4637: ```cpp // C4637.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4638.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4638.md index cbe5cbcc601..65e395aa583 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4638.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4638.md @@ -16,7 +16,7 @@ The compiler was unable to resolve a symbol (*symbol*). The symbol must be valid ## Example -The following sample generates C4638: +The following example generates C4638: ```cpp // C4638.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4640.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4640.md index 8cf28a2327f..a5088512b80 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4640.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4640.md @@ -18,7 +18,7 @@ This warning is off by default. See [Compiler Warnings That Are Off by Default]( ## Example -The following sample generates C4640: +The following example generates C4640: ```cpp // C4640.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4641.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4641.md index ecb11aed7b8..3c5ac9f5038 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4641.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4641.md @@ -18,7 +18,7 @@ For more information, see [XML Documentation](../../build/reference/xml-document ## Example -The following sample generates C4641. +The following example generates C4641. ```cpp // C4641.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4645.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4645.md index 3e7eca026d2..6c61c73bbc4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4645.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4645.md @@ -16,7 +16,7 @@ A [return](../../cpp/program-termination.md) statement was found in a function t ## Example -The following sample generates C4645: +The following example generates C4645: ```cpp // C4645.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4646.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4646.md index 309fc321a63..08538b4d9ed 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4646.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4646.md @@ -16,7 +16,7 @@ A function marked with the [noreturn](../../cpp/noreturn.md) **`__declspec`** mo ## Example -The following sample generates C4646: +The following example generates C4646: ```cpp // C4646.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4623.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4623.md index 5e823215a80..eff490bde6e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4623.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4623.md @@ -18,7 +18,7 @@ This warning is off by default. For more information, see [Compiler warnings tha ## Example -The following sample generates C4623. +The following example generates C4623. ```cpp // C4623.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4625.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4625.md index 0ebadcaf880..4bf21870b75 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4625.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4625.md @@ -18,7 +18,7 @@ This warning is off by default. See [Compiler Warnings That Are Off by Default]( ## Example -The following sample generates C4625 and shows how to fix it. +The following example generates C4625 and shows how to fix it. ```cpp // C4625.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4626.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4626.md index a15f46c4c6c..7115d1f328a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4626.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4626.md @@ -17,7 +17,7 @@ This warning is off by default. See [Compiler Warnings That Are Off by Default]( ## Example -The following sample generates C4626 and shows how to fix it: +The following example generates C4626 and shows how to fix it: ```cpp // C4626 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4629.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4629.md index 047e01368db..a6257f70ce9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4629.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4629.md @@ -16,7 +16,7 @@ Under [/Za](../../build/reference/za-ze-disable-language-extensions.md), the com ## Example -The following sample generates C4629: +The following example generates C4629: ```cpp // C4629.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4634.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4634.md index 9d8fa237b40..be8b53e9d55 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4634.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4634.md @@ -18,7 +18,7 @@ For more information, see [XML Documentation](../../build/reference/xml-document ## Examples -The following sample generates C4634. +The following example generates C4634. ```cpp // C4634.cpp @@ -29,7 +29,7 @@ namespace hello { }; ``` -The following sample generates C4634. +The following example generates C4634. ```cpp // C4634_b.cpp From e9677260f82fd86ae4b1cad7989225c5e7389967 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 31 Aug 2025 21:49:38 +0800 Subject: [PATCH 1680/2255] Update metadata for warning references in range [C4621, C4660] --- .../compiler-warnings/compiler-warning-level-1-c4621.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4624.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4627.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4628.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4630.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4631.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4632.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4650.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4651.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4652.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4655.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4656.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4657.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4659.md | 5 ++--- .../compiler-warnings/compiler-warning-level-2-c4653.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4622.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4633.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4635.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4636.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4637.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4638.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4640.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4641.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4645.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4646.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4623.md | 3 +-- .../compiler-warnings/compiler-warning-level-4-c4625.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4629.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4634.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4639.md | 5 ++--- 30 files changed, 59 insertions(+), 89 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4621.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4621.md index 3b5ea0bb3c2..f32fce06aad 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4621.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4621.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4621" title: "Compiler Warning (level 1) C4621" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4621" +ms.date: 11/04/2016 f1_keywords: ["C4621"] helpviewer_keywords: ["C4621"] -ms.assetid: 40931bd9-cb89-497e-86f0-cec9f016c63c --- # Compiler Warning (level 1) C4621 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4624.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4624.md index 6aafd0ec335..d3bb234530d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4624.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4624.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4624" title: "Compiler Warning (level 1) C4624" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4624" +ms.date: 11/04/2016 f1_keywords: ["C4624"] helpviewer_keywords: ["C4624"] -ms.assetid: 14f61769-d92e-482b-9515-debd87b30a66 --- # Compiler Warning (level 1) C4624 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4627.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4627.md index 00f27e72632..6689bdba0b9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4627.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4627.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4627" title: "Compiler Warning (level 1) C4627" -ms.date: "09/09/2018" +description: "Learn more about: Compiler Warning (level 1) C4627" +ms.date: 09/09/2018 f1_keywords: ["C4627"] helpviewer_keywords: ["C4627"] -ms.assetid: 8840f3e6-b496-423a-8635-eb55d5f854a2 --- # Compiler Warning (level 1) C4627 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4628.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4628.md index 20fc41a8db3..e66578e986d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4628.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4628.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4628" title: "Compiler Warning (level 1) C4628" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4628" +ms.date: 11/04/2016 f1_keywords: ["C4628"] helpviewer_keywords: ["C4628"] -ms.assetid: 20fdc6f8-5f6a-40cc-aff8-c7ccf3d8ec26 --- # Compiler Warning (level 1) C4628 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4630.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4630.md index 0131b12b787..43df3fea625 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4630.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4630.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4630" title: "Compiler Warning (level 1) C4630" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4630" +ms.date: 11/04/2016 f1_keywords: ["C4630"] helpviewer_keywords: ["C4630"] -ms.assetid: d8926376-7acc-4fc7-8438-6f0de3468870 --- # Compiler Warning (level 1) C4630 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4631.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4631.md index 917ed8abc8a..894e783d2c9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4631.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4631.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4631" title: "Compiler Warning (level 1) C4631" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4631" +ms.date: 11/04/2016 f1_keywords: ["C4631"] helpviewer_keywords: ["C4631"] -ms.assetid: d8636ff6-29a7-4fec-b9a6-e201d121c3ca --- # Compiler Warning (level 1) C4631 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4632.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4632.md index 9513c7ec5ee..7d4b05da68b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4632.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4632.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4632" title: "Compiler Warning (level 1) C4632" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4632" +ms.date: 11/04/2016 f1_keywords: ["C4632"] helpviewer_keywords: ["C4632"] -ms.assetid: 9e35d205-cf21-4e34-8bd5-e1e7b0e2cdd3 --- # Compiler Warning (level 1) C4632 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4650.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4650.md index a1c6fb2726b..ded99d3b702 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4650.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4650.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4650" title: "Compiler Warning (level 1) C4650" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4650" +ms.date: 11/04/2016 f1_keywords: ["C4650"] helpviewer_keywords: ["C4650"] -ms.assetid: 3190b3e3-dcd6-4846-939b-f900ab652b2a --- # Compiler Warning (level 1) C4650 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4651.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4651.md index 0805b2bc904..34a4d06f1e6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4651.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4651.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4651" title: "Compiler Warning (level 1) C4651" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4651" +ms.date: 11/04/2016 f1_keywords: ["C4651"] helpviewer_keywords: ["C4651"] -ms.assetid: f1ea82aa-4dc1-4972-b55a-57fdb962f0dd --- # Compiler Warning (level 1) C4651 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4652.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4652.md index 75bceeb458b..a70abbd28b7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4652.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4652.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4652" title: "Compiler Warning (level 1) C4652" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4652" +ms.date: 11/04/2016 f1_keywords: ["C4652"] helpviewer_keywords: ["C4652"] -ms.assetid: 2cf2c666-8cdd-4dd9-bda0-662921498b03 --- # Compiler Warning (level 1) C4652 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4655.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4655.md index 7a3e26979a8..f8d307ae981 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4655.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4655.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4655" title: "Compiler Warning (level 1) C4655" -ms.date: "08/27/2018" +description: "Learn more about: Compiler Warning (level 1) C4655" +ms.date: 08/27/2018 f1_keywords: ["C4655"] helpviewer_keywords: ["C4655"] -ms.assetid: 540f2c7a-e4a1-49af-84b4-03eeea1bbf41 --- # Compiler Warning (level 1) C4655 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4656.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4656.md index e21fd07f60a..cf56b54f864 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4656.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4656.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4656" title: "Compiler Warning (level 1) C4656" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4656" +ms.date: 11/04/2016 f1_keywords: ["C4656"] helpviewer_keywords: ["C4656"] -ms.assetid: b5aaef74-2320-4345-a6ae-b813881a491c --- # Compiler Warning (level 1) C4656 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4657.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4657.md index 6056fb6201f..2122b6d551a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4657.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4657.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4657" title: "Compiler Warning (level 1) C4657" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4657" +ms.date: 11/04/2016 f1_keywords: ["C4657"] helpviewer_keywords: ["C4657"] -ms.assetid: eb750050-cea6-4ead-b80c-d5dcd4971cfc --- # Compiler Warning (level 1) C4657 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4659.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4659.md index 61dcf3e945d..8b865284082 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4659.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4659.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4659" title: "Compiler Warning (level 1) C4659" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4659" +ms.date: 11/04/2016 f1_keywords: ["C4659"] helpviewer_keywords: ["C4659"] -ms.assetid: e29ba8db-7917-43f6-8e34-868b752279ae --- # Compiler Warning (level 1) C4659 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4653.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4653.md index ec238dc0aca..45fc49654bb 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4653.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4653.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 2) C4653" title: "Compiler Warning (level 2) C4653" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 2) C4653" +ms.date: 11/04/2016 f1_keywords: ["C4653"] helpviewer_keywords: ["C4653"] -ms.assetid: 90ec3317-3d39-4b4c-bcd1-97e7c799e1b6 --- # Compiler Warning (level 2) C4653 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4622.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4622.md index e91c002bd56..ba45d4c3827 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4622.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4622.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4622" title: "Compiler Warning (level 3) C4622" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4622" +ms.date: 11/04/2016 f1_keywords: ["C4622"] helpviewer_keywords: ["C4622"] -ms.assetid: d3c879f0-4492-4f4b-b26d-230993f3a933 --- # Compiler Warning (level 3) C4622 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4633.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4633.md index 7a982a390b0..5767c5613aa 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4633.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4633.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4633" title: "Compiler Warning (level 3) C4633" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4633" +ms.date: 11/04/2016 f1_keywords: ["C4633"] helpviewer_keywords: ["C4633"] -ms.assetid: 6d76f268-ba8c-448b-8e83-b903a18b583b --- # Compiler Warning (level 3) C4633 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4635.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4635.md index 98c13db6004..ea7c5b80a03 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4635.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4635.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4635" title: "Compiler Warning (level 3) C4635" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4635" +ms.date: 11/04/2016 f1_keywords: ["C4635"] helpviewer_keywords: ["C4635"] -ms.assetid: b2ba90de-c093-4a76-8076-b65878467574 --- # Compiler Warning (level 3) C4635 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4636.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4636.md index ffc0af62e07..ee0b25a5f6b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4636.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4636.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4636" title: "Compiler Warning (level 3) C4636" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4636" +ms.date: 11/04/2016 f1_keywords: ["C4636"] helpviewer_keywords: ["C4636"] -ms.assetid: 59112a0f-850f-41c6-bd84-8ae8dc84706a --- # Compiler Warning (level 3) C4636 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4637.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4637.md index c0f18b75d4c..4426328632f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4637.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4637.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4637" title: "Compiler Warning (level 3) C4637" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4637" +ms.date: 11/04/2016 f1_keywords: ["C4637"] helpviewer_keywords: ["C4637"] -ms.assetid: 5fd347c1-2de9-408f-9136-1bf1ff273622 --- # Compiler Warning (level 3) C4637 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4638.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4638.md index 65e395aa583..1ac1da97a49 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4638.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4638.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4638" title: "Compiler Warning (level 3) C4638" -ms.date: "08/27/2018" +description: "Learn more about: Compiler Warning (level 3) C4638" +ms.date: 08/27/2018 f1_keywords: ["C4638"] helpviewer_keywords: ["C4638"] -ms.assetid: 2c07923a-e103-4e40-bd11-fdfed428a5ec --- # Compiler Warning (level 3) C4638 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4640.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4640.md index a5088512b80..f66a7e4ebda 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4640.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4640.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4640" title: "Compiler Warning (level 3) C4640" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4640" +ms.date: 11/04/2016 f1_keywords: ["C4640"] helpviewer_keywords: ["C4640"] -ms.assetid: f76871f6-e436-4c35-9793-d2f22f7e1c7f --- # Compiler Warning (level 3) C4640 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4641.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4641.md index 3c5ac9f5038..5f110fcce54 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4641.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4641.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4641" title: "Compiler Warning (level 3) C4641" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4641" +ms.date: 11/04/2016 f1_keywords: ["C4641"] helpviewer_keywords: ["C4641"] -ms.assetid: 28fe5c3e-6039-42da-9100-1312b5b15aea --- # Compiler Warning (level 3) C4641 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4645.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4645.md index 6c61c73bbc4..84ffd10a7f4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4645.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4645.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4645" title: "Compiler Warning (level 3) C4645" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4645" +ms.date: 11/04/2016 f1_keywords: ["C4645"] helpviewer_keywords: ["C4645"] -ms.assetid: fd7c1ddf-f0d0-4e10-bab9-ccb4c3476298 --- # Compiler Warning (level 3) C4645 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4646.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4646.md index 08538b4d9ed..84233c3a05e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4646.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4646.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4646" title: "Compiler Warning (level 3) C4646" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4646" +ms.date: 11/04/2016 f1_keywords: ["C4646"] helpviewer_keywords: ["C4646"] -ms.assetid: 23677e8e-603e-40e0-b99a-2e4894a1278e --- # Compiler Warning (level 3) C4646 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4623.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4623.md index eff490bde6e..6cc61710058 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4623.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4623.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4623" title: "Compiler Warning (level 4) C4623" +description: "Learn more about: Compiler Warning (level 4) C4623" ms.date: 10/27/2022 f1_keywords: ["C4623"] helpviewer_keywords: ["C4623"] -ms.assetid: e630d8d0-f6ea-469c-a74f-07b027587225 --- # Compiler Warning (level 4) C4623 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4625.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4625.md index 4bf21870b75..c066dbcd982 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4625.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4625.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4625" title: "Compiler Warning (level 4) C4625" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4625" +ms.date: 11/04/2016 f1_keywords: ["C4625"] helpviewer_keywords: ["C4625"] -ms.assetid: 4cc99e50-846c-4784-97da-48b977067851 --- # Compiler Warning (level 4) C4625 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4629.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4629.md index a6257f70ce9..39e76d38d59 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4629.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4629.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4629" title: "Compiler Warning (level 4) C4629" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4629" +ms.date: 11/04/2016 f1_keywords: ["C4629"] helpviewer_keywords: ["C4629"] -ms.assetid: 158cde12-bae5-4d43-b575-b52b35aaa0b9 --- # Compiler Warning (level 4) C4629 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4634.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4634.md index be8b53e9d55..b0eb31c8844 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4634.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4634.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4634" title: "Compiler Warning (level 4) C4634" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4634" +ms.date: 11/04/2016 f1_keywords: ["C4634"] helpviewer_keywords: ["C4634"] -ms.assetid: 3e3496ce-2ac7-43d0-a48a-f514c950e81d --- # Compiler Warning (level 4) C4634 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4639.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4639.md index 95e01172ac2..0f952a6f795 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4639.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4639.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4639" title: "Compiler Warning (level 4) C4639" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4639" +ms.date: 11/04/2016 f1_keywords: ["C4639"] helpviewer_keywords: ["C4639"] -ms.assetid: f94f7392-cdbb-4bf4-8a00-20dc90d3efe9 --- # Compiler Warning (level 4) C4639 From 8dd6174922a353b94feedb24e27071b324705cf0 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 31 Aug 2025 21:51:01 +0800 Subject: [PATCH 1681/2255] Add leading example sentence in C4659 warning reference --- .../compiler-warnings/compiler-warning-level-1-c4659.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4659.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4659.md index 8b865284082..a38cf4cf7ae 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4659.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4659.md @@ -15,6 +15,8 @@ The .drectve option was used to pass an option to the linker. Instead use pragma ## Example +The following example generates C4659: + ```cpp // C4659.cpp // compile with: /W1 /LD From e0f7543706a4c97e57a523151f29ffdcb0aa6f6a Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Mon, 1 Sep 2025 23:32:39 +0800 Subject: [PATCH 1682/2255] Add blockquotes for warning messages in range [C4661, C4700] --- .../compiler-warnings/compiler-warning-level-1-c4661.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4662.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4667.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4669.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4674.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4677.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4678.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4684.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4685.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4688.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4691.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4692.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4668.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4670.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4672.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4673.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4680.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4681.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4682.md | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4661.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4661.md index e3f0cbbf69d..de85315b9d0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4661.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4661.md @@ -8,7 +8,7 @@ ms.assetid: 603bb8b7-356d-4eef-924b-64d769bac5bd --- # Compiler Warning (level 1) C4661 -'identifier' : no suitable definition provided for explicit template instantiation request +> 'identifier' : no suitable definition provided for explicit template instantiation request A member of the template class is not defined. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4662.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4662.md index 3d92cd2b859..43802f3881d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4662.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4662.md @@ -8,7 +8,7 @@ ms.assetid: 7efda273-d04a-47b7-ad65-ff1ff94b5ffc --- # Compiler Warning (level 1) C4662 -explicit instantiation; template-class 'identifier1' has no definition from which to specialize 'identifier2' +> explicit instantiation; template-class 'identifier1' has no definition from which to specialize 'identifier2' The specified template-class was declared, but not defined. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4667.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4667.md index 2170e220116..e029beedb5e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4667.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4667.md @@ -8,7 +8,7 @@ ms.assetid: 5d2b7fe0-4f0e-4cd6-b432-ca02c3d194ab --- # Compiler Warning (level 1) C4667 -'function' : no function template defined that matches forced instantiation +> 'function' : no function template defined that matches forced instantiation You cannot instantiate a function template that has not been declared. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4669.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4669.md index ff9b92c50a9..b246ffd982b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4669.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4669.md @@ -8,7 +8,7 @@ ms.assetid: 97730679-e3dc-44d4-b2a8-aa65badc17f2 --- # Compiler Warning (level 1) C4669 -'cast' : unsafe conversion: 'class' is a managed or WinRT type object +> 'cast' : unsafe conversion: 'class' is a managed or WinRT type object A cast contains a Windows Runtime or managed type. The compiler completes the cast by performing a bit-wise copy of one pointer to the other, but provides no other checking. To resolve this warning, do not cast classes containing managed members or Windows Runtime types. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4674.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4674.md index 5bdc7b61cab..0a0f8351e7b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4674.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4674.md @@ -8,7 +8,7 @@ ms.assetid: 638dae0b-b82c-4865-9599-72630827ca09 --- # Compiler Warning (level 1) C4674 -'method' should be declared 'static' and have exactly one parameter +> 'method' should be declared 'static' and have exactly one parameter The signature of a conversion operator was not correct. The method is not considered a user-defined conversion. For more information on defining operators, see [User-Defined Operators (C++/CLI)](../../dotnet/user-defined-operators-cpp-cli.md) and [User-Defined Conversions (C++/CLI)](../../dotnet/user-defined-conversions-cpp-cli.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4677.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4677.md index 40eb235d544..35b05f6013f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4677.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4677.md @@ -8,7 +8,7 @@ ms.assetid: a8d656a1-e2ff-4f8b-9028-201765131026 --- # Compiler Warning (level 1) C4677 -'function': signature of non-private member contains assembly private type 'private_type' +> 'function': signature of non-private member contains assembly private type 'private_type' A type that has public accessibility outside the assembly uses a type that has private access outside the assembly. A component that references the public assembly type will not be able to use the type member or members that reference the assembly private type. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4678.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4678.md index ef63fce96f9..f99698d1e82 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4678.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4678.md @@ -8,7 +8,7 @@ ms.assetid: 0c588f34-595d-4e5c-9470-8723fca2cc06 --- # Compiler Warning (level 1) C4678 -base class 'base_type' is less accessible than 'derived_type' +> base class 'base_type' is less accessible than 'derived_type' A public type derives from a private type. If the public type is instantiated in a referenced assembly, members of the private base type will not be accessible. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4684.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4684.md index d48b01c07b8..202c1737f2e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4684.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4684.md @@ -8,7 +8,7 @@ ms.assetid: e95f1a83-2784-4b05-ae94-12148e056e26 --- # Compiler Warning (level 1) C4684 -'attribute' : WARNING!! attribute may cause invalid code generation: use with caution +> 'attribute' : WARNING!! attribute may cause invalid code generation: use with caution You used an attribute that should not commonly be used. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4685.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4685.md index 484436b8714..283981e6476 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4685.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4685.md @@ -8,6 +8,6 @@ ms.assetid: 16e859b8-a8e8-4a0d-a1d0-37ec4e59a9d7 --- # Compiler Warning (level 1) C4685 -expecting '> >' found '>>' when parsing template parameters +> expecting '> >' found '>>' when parsing template parameters A template definition was not terminated correctly. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4688.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4688.md index 59bedf3f0fb..0111e685578 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4688.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4688.md @@ -8,7 +8,7 @@ ms.assetid: a027df3c-b2b8-4c49-8539-c2bc42db74e8 --- # Compiler Warning (level 1) C4688 -'constraint': constraint list contains assembly private type 'type' +> 'constraint': constraint list contains assembly private type 'type' A constraint list has an assembly private type, meaning it will not be available when the type is accessed from outside the assembly. For more information, see [Generics](../../extensions/generics-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4691.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4691.md index 16750c821ca..22bfb9d2c5b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4691.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4691.md @@ -8,7 +8,7 @@ ms.assetid: 722133d9-87f6-46c1-9e86-9825453d6999 --- # Compiler Warning (level 1) C4691 -'type' : type referenced was expected in unreferenced assembly 'file', type defined in current translation unit used instead +> 'type' : type referenced was expected in unreferenced assembly 'file', type defined in current translation unit used instead The metadata file containing the original type definition is not referenced, and the compiler is using a local type definition. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4692.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4692.md index d9421493012..dd13ce2177a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4692.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4692.md @@ -8,7 +8,7 @@ ms.assetid: f6fb3acc-8228-491a-9c30-ce302d8a9c75 --- # Compiler Warning (level 1) C4692 -'function': signature of non-private member contains assembly private native type 'native_type' +> 'function': signature of non-private member contains assembly private native type 'native_type' A type that is visible outside the assembly contains a member function whose signature contains a native type that is not visible outside the assembly. Therefore, the member function should not be called if its containing type is instantiated outside the assembly. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4668.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4668.md index 691fe7a8f4b..cb786b71dc7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4668.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4668.md @@ -8,7 +8,7 @@ ms.assetid: c6585460-bc4a-4a15-9242-4cbfce53c961 --- # Compiler Warning (level 4) C4668 -'symbol' is not defined as a preprocessor macro, replacing with '0' for 'directives' +> 'symbol' is not defined as a preprocessor macro, replacing with '0' for 'directives' A symbol that was not defined was used with a preprocessor directive. The symbol will evaluate to false. To define a symbol, you can use either the [#define directive](../../preprocessor/hash-define-directive-c-cpp.md) or [/D](../../build/reference/d-preprocessor-definitions.md) compiler option. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4670.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4670.md index 16a09cd423c..169030f9249 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4670.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4670.md @@ -8,7 +8,7 @@ ms.assetid: e172b134-b1fb-4dfe-8e9d-209ea08b73c7 --- # Compiler Warning (level 4) C4670 -'identifier' : this base class is inaccessible +> 'identifier' : this base class is inaccessible The specified base class of an object to be thrown in a **`try`** block is not accessible. The object cannot be instantiated if it is thrown. Check that the base class is inherited with the correct access specifier. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4672.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4672.md index 71c8c6eabdb..e9706d55195 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4672.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4672.md @@ -8,6 +8,6 @@ ms.assetid: 3ae1b9cd-e53e-41e7-a330-7238b7aa0679 --- # Compiler Warning (level 4) C4672 -'identifier1' : ambiguous. First seen as 'identifier2' +> 'identifier1' : ambiguous. First seen as 'identifier2' The specified object to be thrown in a **`try`** block is ambiguous. The object cannot be disambiguated if it is thrown. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4673.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4673.md index 72d0d3c2645..226dd6b0331 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4673.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4673.md @@ -8,7 +8,7 @@ ms.assetid: 95626ec6-f05b-43c7-8b9a-a60a6f98dd30 --- # Compiler Warning (level 4) C4673 -throwing 'identifier' the following types will not be considered at the catch site +> throwing 'identifier' the following types will not be considered at the catch site A throw object cannot be handled in the **`catch`** block. Each type that cannot be handled is listed in the error output immediately following the line containing this warning. Each unhandled type has its own warning. Read the warning for each specific type for more information. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4680.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4680.md index 84991356ab2..2519f285ed3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4680.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4680.md @@ -8,7 +8,7 @@ ms.assetid: 6e043f4c-c601-4b77-8130-920cff1d912e --- # Compiler Warning (level 4) C4680 -'class' : coclass does not specify a default interface +> 'class' : coclass does not specify a default interface A [default](../../windows/attributes/default-cpp.md) interface was not specified for a class that was marked with the [coclass](../../windows/attributes/coclass.md) attribute. In order for an object to be useful, it must implement an interface. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4681.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4681.md index 111c36c8bba..d93ed4f5cf3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4681.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4681.md @@ -8,7 +8,7 @@ ms.assetid: a4e6d85f-3e21-4b45-a551-c23d3c554d3f --- # Compiler Warning (level 4) C4681 -'class' : coclass does not specify a default interface that is an event source +> 'class' : coclass does not specify a default interface that is an event source A [source](../../windows/attributes/source-cpp.md) interface was not specified for a class. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4682.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4682.md index b0ca72b2f48..a5ea062b435 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4682.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4682.md @@ -8,7 +8,7 @@ ms.assetid: 858ea157-1244-4a61-85df-97b3de43d418 --- # Compiler Warning (level 4) C4682 -'parameter' : no directional parameter attribute specified, defaulting to [in] +> 'parameter' : no directional parameter attribute specified, defaulting to [in] A method on a parameter in an attributed interface does not have one of the directional attributes: [in](../../windows/attributes/in-cpp.md) or [out](../../windows/attributes/out-cpp.md). The parameter defaults to in. From df6e56d1dbbe3b8740d6a5974d1bf3de741a0dc4 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Mon, 1 Sep 2025 23:54:39 +0800 Subject: [PATCH 1683/2255] Add "Remarks" and "Example" headings for warning references in range [C4661, C4700] --- .../compiler-warnings/compiler-warning-c4693.md | 2 ++ .../compiler-warnings/compiler-warning-c4694.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4661.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4662.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4667.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4669.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4674.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4677.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4678.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4679.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4684.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4685.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4688.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4691.md | 4 +++- .../compiler-warnings/compiler-warning-level-1-c4692.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4668.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4670.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4672.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4673.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4680.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4681.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4682.md | 4 ++++ 22 files changed, 61 insertions(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4693.md b/docs/error-messages/compiler-warnings/compiler-warning-c4693.md index 9603aea04d9..7c328c2093a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4693.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4693.md @@ -10,6 +10,8 @@ ms.assetid: 72d8db01-5e6f-4794-8731-76107e8f064a > 'class': a sealed abstract class cannot have any instance members 'Test' +## Remarks + If a type is marked [sealed](../../extensions/sealed-cpp-component-extensions.md) and [abstract](../../extensions/abstract-cpp-component-extensions.md), it can only have static members. This warning is automatically promoted to an error. If you wish to modify this behavior, use [#pragma warning](../../preprocessor/warning.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4694.md b/docs/error-messages/compiler-warnings/compiler-warning-c4694.md index 69a3a53382e..132c4b76467 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4694.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4694.md @@ -10,6 +10,8 @@ ms.assetid: 5ca122bb-34f3-43ee-a21f-95802cd515f7 > '*class*': a sealed abstract class cannot have a base-class '*base_class*' +## Remarks + An abstract and sealed class cannot inherit from a reference type; a sealed and abstract class can neither implement the base class functions nor allow itself to be used as a base class. For more information, see [abstract](../../extensions/abstract-cpp-component-extensions.md), [sealed](../../extensions/sealed-cpp-component-extensions.md), and [Classes and Structs](../../extensions/classes-and-structs-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4661.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4661.md index de85315b9d0..28728b01376 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4661.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4661.md @@ -10,6 +10,8 @@ ms.assetid: 603bb8b7-356d-4eef-924b-64d769bac5bd > 'identifier' : no suitable definition provided for explicit template instantiation request +## Remarks + A member of the template class is not defined. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4662.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4662.md index 43802f3881d..c6906e512ba 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4662.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4662.md @@ -10,6 +10,8 @@ ms.assetid: 7efda273-d04a-47b7-ad65-ff1ff94b5ffc > explicit instantiation; template-class 'identifier1' has no definition from which to specialize 'identifier2' +## Remarks + The specified template-class was declared, but not defined. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4667.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4667.md index e029beedb5e..910671f0407 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4667.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4667.md @@ -10,8 +10,12 @@ ms.assetid: 5d2b7fe0-4f0e-4cd6-b432-ca02c3d194ab > 'function' : no function template defined that matches forced instantiation +## Remarks + You cannot instantiate a function template that has not been declared. +## Example + The following sample will cause C4667: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4669.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4669.md index b246ffd982b..55612475306 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4669.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4669.md @@ -10,8 +10,12 @@ ms.assetid: 97730679-e3dc-44d4-b2a8-aa65badc17f2 > 'cast' : unsafe conversion: 'class' is a managed or WinRT type object +## Remarks + A cast contains a Windows Runtime or managed type. The compiler completes the cast by performing a bit-wise copy of one pointer to the other, but provides no other checking. To resolve this warning, do not cast classes containing managed members or Windows Runtime types. +## Example + The following sample generates C4669 and shows how to fix it: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4674.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4674.md index 0a0f8351e7b..783b46e7c4c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4674.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4674.md @@ -10,6 +10,8 @@ ms.assetid: 638dae0b-b82c-4865-9599-72630827ca09 > 'method' should be declared 'static' and have exactly one parameter +## Remarks + The signature of a conversion operator was not correct. The method is not considered a user-defined conversion. For more information on defining operators, see [User-Defined Operators (C++/CLI)](../../dotnet/user-defined-operators-cpp-cli.md) and [User-Defined Conversions (C++/CLI)](../../dotnet/user-defined-conversions-cpp-cli.md). ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4677.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4677.md index 35b05f6013f..2428e6a7a94 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4677.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4677.md @@ -10,6 +10,8 @@ ms.assetid: a8d656a1-e2ff-4f8b-9028-201765131026 > 'function': signature of non-private member contains assembly private type 'private_type' +## Remarks + A type that has public accessibility outside the assembly uses a type that has private access outside the assembly. A component that references the public assembly type will not be able to use the type member or members that reference the assembly private type. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4678.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4678.md index f99698d1e82..8206aab6a3b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4678.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4678.md @@ -10,6 +10,8 @@ ms.assetid: 0c588f34-595d-4e5c-9470-8723fca2cc06 > base class 'base_type' is less accessible than 'derived_type' +## Remarks + A public type derives from a private type. If the public type is instantiated in a referenced assembly, members of the private base type will not be accessible. C4678 is only reachable using the obsolete compiler option **/clr:oldSyntax**. It is an error when using **/clr**, to have a base class that is less accessible that its derived class. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4679.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4679.md index 60432e84ec0..e7bb42f3fee 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4679.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4679.md @@ -10,6 +10,8 @@ ms.assetid: 3cc74150-42a8-4116-94cd-4ef0fd6dcf32 > '*member*' : could not import member +## Remarks + The compiler encountered a construct that it cannot support, that cannot be imported from metadata. Do not try to use the construct. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4684.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4684.md index 202c1737f2e..f41042e25fa 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4684.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4684.md @@ -10,8 +10,12 @@ ms.assetid: e95f1a83-2784-4b05-ae94-12148e056e26 > 'attribute' : WARNING!! attribute may cause invalid code generation: use with caution +## Remarks + You used an attribute that should not commonly be used. +## Example + The following sample generates C4684: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4685.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4685.md index 283981e6476..5e159dad6da 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4685.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4685.md @@ -10,4 +10,6 @@ ms.assetid: 16e859b8-a8e8-4a0d-a1d0-37ec4e59a9d7 > expecting '> >' found '>>' when parsing template parameters +## Remarks + A template definition was not terminated correctly. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4688.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4688.md index 0111e685578..4a4056018e3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4688.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4688.md @@ -10,6 +10,8 @@ ms.assetid: a027df3c-b2b8-4c49-8539-c2bc42db74e8 > 'constraint': constraint list contains assembly private type 'type' +## Remarks + A constraint list has an assembly private type, meaning it will not be available when the type is accessed from outside the assembly. For more information, see [Generics](../../extensions/generics-cpp-component-extensions.md). ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4691.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4691.md index 22bfb9d2c5b..bcd7a7059fc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4691.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4691.md @@ -10,13 +10,15 @@ ms.assetid: 722133d9-87f6-46c1-9e86-9825453d6999 > 'type' : type referenced was expected in unreferenced assembly 'file', type defined in current translation unit used instead +## Remarks + The metadata file containing the original type definition is not referenced, and the compiler is using a local type definition. In the case where you are rebuilding *file*, C4691 can be ignored or turned off with pragma [warning](../../preprocessor/warning.md). That is, if the file you are building is the same as the file where the compiler expects to find the type definition, you can ignore C4691. However, unexpected behavior can occur if the compiler uses a definition that is not from the same assembly that is referenced in metadata; CLR types are typed not only by the name of the type, but also by the assembly. That is, a type Z from assembly z.dll is different from a type Z from assembly y.dll. -## Examples +## Example This sample contains the original type definition. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4692.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4692.md index dd13ce2177a..43ca7a29748 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4692.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4692.md @@ -10,6 +10,8 @@ ms.assetid: f6fb3acc-8228-491a-9c30-ce302d8a9c75 > 'function': signature of non-private member contains assembly private native type 'native_type' +## Remarks + A type that is visible outside the assembly contains a member function whose signature contains a native type that is not visible outside the assembly. Therefore, the member function should not be called if its containing type is instantiated outside the assembly. For more information, see [Type visibility](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Type_visibility). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4668.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4668.md index cb786b71dc7..e884005dfe9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4668.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4668.md @@ -10,6 +10,8 @@ ms.assetid: c6585460-bc4a-4a15-9242-4cbfce53c961 > 'symbol' is not defined as a preprocessor macro, replacing with '0' for 'directives' +## Remarks + A symbol that was not defined was used with a preprocessor directive. The symbol will evaluate to false. To define a symbol, you can use either the [#define directive](../../preprocessor/hash-define-directive-c-cpp.md) or [/D](../../build/reference/d-preprocessor-definitions.md) compiler option. This warning is off by default. See [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md) for more information. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4670.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4670.md index 169030f9249..30443e661f9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4670.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4670.md @@ -10,8 +10,12 @@ ms.assetid: e172b134-b1fb-4dfe-8e9d-209ea08b73c7 > 'identifier' : this base class is inaccessible +## Remarks + The specified base class of an object to be thrown in a **`try`** block is not accessible. The object cannot be instantiated if it is thrown. Check that the base class is inherited with the correct access specifier. +## Example + The following sample generates C4670: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4672.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4672.md index e9706d55195..45b5647623f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4672.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4672.md @@ -10,4 +10,6 @@ ms.assetid: 3ae1b9cd-e53e-41e7-a330-7238b7aa0679 > 'identifier1' : ambiguous. First seen as 'identifier2' +## Remarks + The specified object to be thrown in a **`try`** block is ambiguous. The object cannot be disambiguated if it is thrown. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4673.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4673.md index 226dd6b0331..f3487702323 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4673.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4673.md @@ -10,8 +10,12 @@ ms.assetid: 95626ec6-f05b-43c7-8b9a-a60a6f98dd30 > throwing 'identifier' the following types will not be considered at the catch site +## Remarks + A throw object cannot be handled in the **`catch`** block. Each type that cannot be handled is listed in the error output immediately following the line containing this warning. Each unhandled type has its own warning. Read the warning for each specific type for more information. +## Example + The following sample generates C4673: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4680.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4680.md index 2519f285ed3..e4685fdb518 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4680.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4680.md @@ -10,8 +10,12 @@ ms.assetid: 6e043f4c-c601-4b77-8130-920cff1d912e > 'class' : coclass does not specify a default interface +## Remarks + A [default](../../windows/attributes/default-cpp.md) interface was not specified for a class that was marked with the [coclass](../../windows/attributes/coclass.md) attribute. In order for an object to be useful, it must implement an interface. +## Example + The following sample generates C4680: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4681.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4681.md index d93ed4f5cf3..d6ef24e2170 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4681.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4681.md @@ -10,8 +10,12 @@ ms.assetid: a4e6d85f-3e21-4b45-a551-c23d3c554d3f > 'class' : coclass does not specify a default interface that is an event source +## Remarks + A [source](../../windows/attributes/source-cpp.md) interface was not specified for a class. +## Example + The following sample generates C4681: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4682.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4682.md index a5ea062b435..0beb5c808d0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4682.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4682.md @@ -10,10 +10,14 @@ ms.assetid: 858ea157-1244-4a61-85df-97b3de43d418 > 'parameter' : no directional parameter attribute specified, defaulting to [in] +## Remarks + A method on a parameter in an attributed interface does not have one of the directional attributes: [in](../../windows/attributes/in-cpp.md) or [out](../../windows/attributes/out-cpp.md). The parameter defaults to in. This warning is off by default. See [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md) for more information. +## Example + The following sample generates C4682: ```cpp From df988d3d5066545fc1a4575da2b44db76f9e23bd Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Mon, 1 Sep 2025 23:57:18 +0800 Subject: [PATCH 1684/2255] Replace term "sample" with "example" for warning references in range [C4661, C4700] --- .../compiler-warnings/compiler-warning-c4687.md | 2 +- .../compiler-warnings/compiler-warning-c4693.md | 2 +- .../compiler-warnings/compiler-warning-c4694.md | 2 +- .../compiler-warning-level-1-and-level-4-c4700.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4667.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4669.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4674.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4677.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4683.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4684.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4688.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4691.md | 6 +++--- .../compiler-warnings/compiler-warning-level-1-c4692.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4668.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4670.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4673.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4680.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4681.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4682.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4690.md | 2 +- 20 files changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4687.md b/docs/error-messages/compiler-warnings/compiler-warning-c4687.md index 6414748bd3f..416b7b3b00a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4687.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4687.md @@ -20,7 +20,7 @@ C4687 is issued as an error by default. You can suppress C4687 with the [warning ## Example -The following sample generates C4687. +The following example generates C4687. ```cpp // C4687.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4693.md b/docs/error-messages/compiler-warnings/compiler-warning-c4693.md index 7c328c2093a..2034b8583e5 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4693.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4693.md @@ -18,7 +18,7 @@ This warning is automatically promoted to an error. If you wish to modify this b ## Example -The following sample generates C4693. +The following example generates C4693. ```cpp // C4693.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4694.md b/docs/error-messages/compiler-warnings/compiler-warning-c4694.md index 132c4b76467..7a3e710ee3e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4694.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4694.md @@ -20,7 +20,7 @@ This warning is automatically promoted to an error. If you wish to modify this b ## Example -The following sample generates C4694. +The following example generates C4694. ```cpp // C4694.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-and-level-4-c4700.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-and-level-4-c4700.md index db6a5e55dca..f19553a6238 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-and-level-4-c4700.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-and-level-4-c4700.md @@ -20,7 +20,7 @@ The [`/sdl` (Enable Additional Security Checks)](../../build/reference/sdl-enabl ## Example -This sample generates C4700 when variables `t`, `u`, and `v` are used before they're initialized, and shows the kind of garbage value that can result. Variables `x`, `y`, and `z` don't cause the warning, because they're initialized before use: +This example generates C4700 when variables `t`, `u`, and `v` are used before they're initialized, and shows the kind of garbage value that can result. Variables `x`, `y`, and `z` don't cause the warning, because they're initialized before use: ```cpp // c4700.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4667.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4667.md index 910671f0407..afae4170f58 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4667.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4667.md @@ -16,7 +16,7 @@ You cannot instantiate a function template that has not been declared. ## Example -The following sample will cause C4667: +The following example will cause C4667: ```cpp // C4667a.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4669.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4669.md index 55612475306..bef4d1e7a68 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4669.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4669.md @@ -16,7 +16,7 @@ A cast contains a Windows Runtime or managed type. The compiler completes the ca ## Example -The following sample generates C4669 and shows how to fix it: +The following example generates C4669 and shows how to fix it: ```cpp // C4669.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4674.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4674.md index 783b46e7c4c..d8349c5dd90 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4674.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4674.md @@ -16,7 +16,7 @@ The signature of a conversion operator was not correct. The method is not consid ## Example -The following sample generates C4674. +The following example generates C4674. ```cpp // C4674.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4677.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4677.md index 2428e6a7a94..76997ca299f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4677.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4677.md @@ -16,7 +16,7 @@ A type that has public accessibility outside the assembly uses a type that has p ## Example -The following sample generates C4677. +The following example generates C4677. ```cpp // C4677.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4683.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4683.md index 4e49d32e524..624abcb2ed0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4683.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4683.md @@ -24,7 +24,7 @@ The reason for the leak is that the out parameter will be set by more than one h ## Example -The following sample generates C4683 and shows how to fix it: +The following example generates C4683 and shows how to fix it: ```cpp // C4683.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4684.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4684.md index f41042e25fa..673027f0b75 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4684.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4684.md @@ -16,7 +16,7 @@ You used an attribute that should not commonly be used. ## Example -The following sample generates C4684: +The following example generates C4684: ```cpp // C4684.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4688.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4688.md index 4a4056018e3..974fed9627b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4688.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4688.md @@ -16,7 +16,7 @@ A constraint list has an assembly private type, meaning it will not be available ## Example -The following sample generates C4688. +The following example generates C4688. ```cpp // C4688.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4691.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4691.md index bcd7a7059fc..0788da3076f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4691.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4691.md @@ -20,7 +20,7 @@ However, unexpected behavior can occur if the compiler uses a definition that is ## Example -This sample contains the original type definition. +This example contains the original type definition. ```cpp // C4691_a.cpp @@ -28,7 +28,7 @@ This sample contains the original type definition. public ref class Original_Type {}; ``` -This sample references C4691_a.dll and declares a field of type Original_Type. +This example references C4691_a.dll and declares a field of type Original_Type. ```cpp // C4691_b.cpp @@ -40,7 +40,7 @@ public: }; ``` -The following sample generates C4691. Notice this sample contains a definition for Original_Type and does not reference C4691a.dll. +The following example generates C4691. Notice this example contains a definition for Original_Type and does not reference C4691a.dll. To resolve, reference the metadata file that contains the original type definition and remove the local declaration and definition. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4692.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4692.md index 43ca7a29748..21461aaeb35 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4692.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4692.md @@ -20,7 +20,7 @@ This warning is off by default. For more information, see [Compiler Warnings Tha ## Example -The following sample generates C4692. +The following example generates C4692. ```cpp // C4692.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4668.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4668.md index e884005dfe9..c4c27324a93 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4668.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4668.md @@ -18,7 +18,7 @@ This warning is off by default. See [Compiler Warnings That Are Off by Default]( ## Example -The following sample generates C4668: +The following example generates C4668: ```cpp // C4668.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4670.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4670.md index 30443e661f9..7a77dd343aa 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4670.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4670.md @@ -16,7 +16,7 @@ The specified base class of an object to be thrown in a **`try`** block is not a ## Example -The following sample generates C4670: +The following example generates C4670: ```cpp // C4670.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4673.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4673.md index f3487702323..824aed2e75b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4673.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4673.md @@ -16,7 +16,7 @@ A throw object cannot be handled in the **`catch`** block. Each type that cannot ## Example -The following sample generates C4673: +The following example generates C4673: ```cpp // C4673.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4680.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4680.md index e4685fdb518..6e63f74cebb 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4680.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4680.md @@ -16,7 +16,7 @@ A [default](../../windows/attributes/default-cpp.md) interface was not specified ## Example -The following sample generates C4680: +The following example generates C4680: ```cpp // C4680.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4681.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4681.md index d6ef24e2170..60164b44740 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4681.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4681.md @@ -16,7 +16,7 @@ A [source](../../windows/attributes/source-cpp.md) interface was not specified f ## Example -The following sample generates C4681: +The following example generates C4681: ```cpp // C4681.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4682.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4682.md index 0beb5c808d0..f529efb8d3e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4682.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4682.md @@ -18,7 +18,7 @@ This warning is off by default. See [Compiler Warnings That Are Off by Default]( ## Example -The following sample generates C4682: +The following example generates C4682: ```cpp // C4682.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4690.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4690.md index 13c663986aa..dc694bd8833 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4690.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4690.md @@ -16,7 +16,7 @@ The [emitidl](../../windows/attributes/emitidl.md) attribute was popped one more ## Example -The following sample generates C4690. To fix this issue, make sure the attribute is popped exactly as many times as it is pushed. +The following example generates C4690. To fix this issue, make sure the attribute is popped exactly as many times as it is pushed. ```cpp // C4690.cpp From da5cee6daa296a2eff513c086e5861f8f801172a Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 2 Sep 2025 00:05:30 +0800 Subject: [PATCH 1685/2255] Update metadata for warning references in range [C4661, C4700] --- docs/error-messages/compiler-warnings/c4698.md | 2 +- .../compiler-warnings/compiler-warning-c4687.md | 5 ++--- .../compiler-warnings/compiler-warning-c4693.md | 5 ++--- .../compiler-warnings/compiler-warning-c4694.md | 5 ++--- .../compiler-warning-level-1-and-level-4-c4700.md | 3 +-- .../compiler-warnings/compiler-warning-level-1-c4661.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4662.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4667.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4669.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4674.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4677.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4678.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4679.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4683.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4684.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4685.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4688.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4691.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4692.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4686.md | 1 - .../compiler-warnings/compiler-warning-level-4-c4668.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4670.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4672.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4673.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4680.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4681.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4682.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4690.md | 5 ++--- 28 files changed, 52 insertions(+), 79 deletions(-) diff --git a/docs/error-messages/compiler-warnings/c4698.md b/docs/error-messages/compiler-warnings/c4698.md index cc66fdd20a6..91fb47a5c74 100644 --- a/docs/error-messages/compiler-warnings/c4698.md +++ b/docs/error-messages/compiler-warnings/c4698.md @@ -1,6 +1,6 @@ --- -description: "Learn about the cause and fixes for Compiler warning (level 3) C4698." title: "Compiler warning (Level 4) C4698" +description: "Learn about the cause and fixes for Compiler warning (level 3) C4698." ms.date: 04/18/2021 f1_keywords: ["C4698"] helpviewer_keywords: ["C4698"] diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4687.md b/docs/error-messages/compiler-warnings/compiler-warning-c4687.md index 416b7b3b00a..c4d55b15351 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4687.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4687.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning C4687" title: "Compiler Warning C4687" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning C4687" +ms.date: 11/04/2016 f1_keywords: ["C4687"] helpviewer_keywords: ["C4687"] -ms.assetid: 2f28e0b1-7358-4c88-bd70-aad8f0aa004c --- # Compiler Warning C4687 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4693.md b/docs/error-messages/compiler-warnings/compiler-warning-c4693.md index 2034b8583e5..cd9461c3e9a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4693.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4693.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning C4693" title: "Compiler Warning C4693" -ms.date: "10/25/2017" +description: "Learn more about: Compiler Warning C4693" +ms.date: 10/25/2017 f1_keywords: ["C4693"] helpviewer_keywords: ["C4693"] -ms.assetid: 72d8db01-5e6f-4794-8731-76107e8f064a --- # Compiler Warning C4693 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4694.md b/docs/error-messages/compiler-warnings/compiler-warning-c4694.md index 7a3e710ee3e..42b5c6af3af 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4694.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4694.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning C4694" title: "Compiler Warning C4694" -ms.date: "10/25/2017" +description: "Learn more about: Compiler Warning C4694" +ms.date: 10/25/2017 f1_keywords: ["C4694"] helpviewer_keywords: ["C4694"] -ms.assetid: 5ca122bb-34f3-43ee-a21f-95802cd515f7 --- # Compiler Warning C4694 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-and-level-4-c4700.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-and-level-4-c4700.md index f19553a6238..17e3df14c6b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-and-level-4-c4700.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-and-level-4-c4700.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1 and level 4) C4700" title: "Compiler Warning (level 1 and level 4) C4700" +description: "Learn more about: Compiler Warning (level 1 and level 4) C4700" ms.date: 08/30/2022 f1_keywords: ["C4700"] helpviewer_keywords: ["C4700"] -ms.assetid: 2da0deb4-77dd-4b05-98d3-b78d74ac4ca7 --- # Compiler Warning (level 1 and level 4) C4700 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4661.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4661.md index 28728b01376..ebb21a82fc7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4661.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4661.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4661" title: "Compiler Warning (level 1) C4661" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4661" +ms.date: 11/04/2016 f1_keywords: ["C4661"] helpviewer_keywords: ["C4661"] -ms.assetid: 603bb8b7-356d-4eef-924b-64d769bac5bd --- # Compiler Warning (level 1) C4661 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4662.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4662.md index c6906e512ba..dd5d74293e4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4662.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4662.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4662" title: "Compiler Warning (level 1) C4662" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4662" +ms.date: 11/04/2016 f1_keywords: ["C4662"] helpviewer_keywords: ["C4662"] -ms.assetid: 7efda273-d04a-47b7-ad65-ff1ff94b5ffc --- # Compiler Warning (level 1) C4662 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4667.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4667.md index afae4170f58..6de3394c5d8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4667.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4667.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4667" title: "Compiler Warning (level 1) C4667" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4667" +ms.date: 11/04/2016 f1_keywords: ["C4667"] helpviewer_keywords: ["C4667"] -ms.assetid: 5d2b7fe0-4f0e-4cd6-b432-ca02c3d194ab --- # Compiler Warning (level 1) C4667 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4669.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4669.md index bef4d1e7a68..3d19bad6cd0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4669.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4669.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4669" title: "Compiler Warning (level 1) C4669" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4669" +ms.date: 11/04/2016 f1_keywords: ["C4669"] helpviewer_keywords: ["C4669"] -ms.assetid: 97730679-e3dc-44d4-b2a8-aa65badc17f2 --- # Compiler Warning (level 1) C4669 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4674.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4674.md index d8349c5dd90..37e020cd33e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4674.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4674.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4674" title: "Compiler Warning (level 1) C4674" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4674" +ms.date: 11/04/2016 f1_keywords: ["C4674"] helpviewer_keywords: ["C4674"] -ms.assetid: 638dae0b-b82c-4865-9599-72630827ca09 --- # Compiler Warning (level 1) C4674 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4677.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4677.md index 76997ca299f..1a86bd31b69 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4677.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4677.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4677" title: "Compiler Warning (level 1) C4677" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4677" +ms.date: 11/04/2016 f1_keywords: ["C4677"] helpviewer_keywords: ["C4677"] -ms.assetid: a8d656a1-e2ff-4f8b-9028-201765131026 --- # Compiler Warning (level 1) C4677 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4678.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4678.md index 8206aab6a3b..cfe99eaf282 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4678.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4678.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4678" title: "Compiler Warning (level 1) C4678" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4678" +ms.date: 11/04/2016 f1_keywords: ["C4678"] helpviewer_keywords: ["C4678"] -ms.assetid: 0c588f34-595d-4e5c-9470-8723fca2cc06 --- # Compiler Warning (level 1) C4678 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4679.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4679.md index e7bb42f3fee..ada9e31dc9c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4679.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4679.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4679" title: "Compiler Warning (level 1) C4679" -ms.date: "08/27/2018" +description: "Learn more about: Compiler Warning (level 1) C4679" +ms.date: 08/27/2018 f1_keywords: ["C4679"] helpviewer_keywords: ["C4679"] -ms.assetid: 3cc74150-42a8-4116-94cd-4ef0fd6dcf32 --- # Compiler Warning (level 1) C4679 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4683.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4683.md index 624abcb2ed0..f403e48f03d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4683.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4683.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4683" title: "Compiler Warning (level 1) C4683" -ms.date: "08/27/2018" +description: "Learn more about: Compiler Warning (level 1) C4683" +ms.date: 08/27/2018 f1_keywords: ["C4683"] helpviewer_keywords: ["C4683"] -ms.assetid: e6e77364-dba1-46dd-ae1d-03da23070bce --- # Compiler Warning (level 1) C4683 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4684.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4684.md index 673027f0b75..ab66c25bf43 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4684.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4684.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4684" title: "Compiler Warning (level 1) C4684" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4684" +ms.date: 11/04/2016 f1_keywords: ["C4684"] helpviewer_keywords: ["C4684"] -ms.assetid: e95f1a83-2784-4b05-ae94-12148e056e26 --- # Compiler Warning (level 1) C4684 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4685.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4685.md index 5e159dad6da..a9fdc182960 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4685.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4685.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4685" title: "Compiler Warning (level 1) C4685" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4685" +ms.date: 11/04/2016 f1_keywords: ["C4685"] helpviewer_keywords: ["C4685"] -ms.assetid: 16e859b8-a8e8-4a0d-a1d0-37ec4e59a9d7 --- # Compiler Warning (level 1) C4685 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4688.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4688.md index 974fed9627b..d257f2f4acc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4688.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4688.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4688" title: "Compiler Warning (level 1) C4688" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4688" +ms.date: 11/04/2016 f1_keywords: ["C4688"] helpviewer_keywords: ["C4688"] -ms.assetid: a027df3c-b2b8-4c49-8539-c2bc42db74e8 --- # Compiler Warning (level 1) C4688 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4691.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4691.md index 0788da3076f..ae062d85d15 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4691.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4691.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4691" title: "Compiler Warning (level 1) C4691" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4691" +ms.date: 11/04/2016 f1_keywords: ["C4691"] helpviewer_keywords: ["C4691"] -ms.assetid: 722133d9-87f6-46c1-9e86-9825453d6999 --- # Compiler Warning (level 1) C4691 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4692.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4692.md index 21461aaeb35..44cc03e03b4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4692.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4692.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4692" title: "Compiler Warning (level 1) C4692" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4692" +ms.date: 11/04/2016 f1_keywords: ["C4692"] helpviewer_keywords: ["C4692"] -ms.assetid: f6fb3acc-8228-491a-9c30-ce302d8a9c75 --- # Compiler Warning (level 1) C4692 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4686.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4686.md index 28ac87a590c..eeda17ff133 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4686.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4686.md @@ -4,7 +4,6 @@ description: "Microsoft C++ compiler warning C4686." ms.date: 08/29/2020 f1_keywords: ["C4686"] helpviewer_keywords: ["C4686"] -ms.assetid: 767c83c2-9e4b-4f9e-88c8-02128ba563f4 --- # Compiler Warning (level 3) C4686 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4668.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4668.md index c4c27324a93..ac3527c10fa 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4668.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4668.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4668" title: "Compiler Warning (level 4) C4668" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4668" +ms.date: 11/04/2016 f1_keywords: ["C4668"] helpviewer_keywords: ["C4668"] -ms.assetid: c6585460-bc4a-4a15-9242-4cbfce53c961 --- # Compiler Warning (level 4) C4668 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4670.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4670.md index 7a77dd343aa..0fe80da2049 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4670.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4670.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4670" title: "Compiler Warning (level 4) C4670" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4670" +ms.date: 11/04/2016 f1_keywords: ["C4670"] helpviewer_keywords: ["C4670"] -ms.assetid: e172b134-b1fb-4dfe-8e9d-209ea08b73c7 --- # Compiler Warning (level 4) C4670 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4672.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4672.md index 45b5647623f..79592299553 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4672.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4672.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4672" title: "Compiler Warning (level 4) C4672" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4672" +ms.date: 11/04/2016 f1_keywords: ["C4672"] helpviewer_keywords: ["C4672"] -ms.assetid: 3ae1b9cd-e53e-41e7-a330-7238b7aa0679 --- # Compiler Warning (level 4) C4672 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4673.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4673.md index 824aed2e75b..e78645787d5 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4673.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4673.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4673" title: "Compiler Warning (level 4) C4673" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4673" +ms.date: 11/04/2016 f1_keywords: ["C4673"] helpviewer_keywords: ["C4673"] -ms.assetid: 95626ec6-f05b-43c7-8b9a-a60a6f98dd30 --- # Compiler Warning (level 4) C4673 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4680.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4680.md index 6e63f74cebb..b1c2f47d90a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4680.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4680.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4680" title: "Compiler Warning (level 4) C4680" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4680" +ms.date: 11/04/2016 f1_keywords: ["C4680"] helpviewer_keywords: ["C4680"] -ms.assetid: 6e043f4c-c601-4b77-8130-920cff1d912e --- # Compiler Warning (level 4) C4680 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4681.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4681.md index 60164b44740..361aa89790a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4681.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4681.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4681" title: "Compiler Warning (level 4) C4681" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4681" +ms.date: 11/04/2016 f1_keywords: ["C4681"] helpviewer_keywords: ["C4681"] -ms.assetid: a4e6d85f-3e21-4b45-a551-c23d3c554d3f --- # Compiler Warning (level 4) C4681 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4682.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4682.md index f529efb8d3e..24a2e74a7f7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4682.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4682.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4682" title: "Compiler Warning (level 4) C4682" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4682" +ms.date: 11/04/2016 f1_keywords: ["C4682"] helpviewer_keywords: ["C4682"] -ms.assetid: 858ea157-1244-4a61-85df-97b3de43d418 --- # Compiler Warning (level 4) C4682 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4690.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4690.md index dc694bd8833..2b60bad381f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4690.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4690.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4690" title: "Compiler Warning (level 4) C4690" -ms.date: "07/03/2018" +description: "Learn more about: Compiler Warning (level 4) C4690" +ms.date: 07/03/2018 f1_keywords: ["C4690"] helpviewer_keywords: ["C4690"] -ms.assetid: 080a0ea1-458b-477b-a37a-4a34c94709ff --- # Compiler Warning (level 4) C4690 From acea0a30d0aa7bbd2ae0f4df1b9fd441730dabf0 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 2 Sep 2025 00:10:30 +0800 Subject: [PATCH 1686/2255] Add leading example sentence in C4661 and C4662 warning reference --- .../compiler-warnings/compiler-warning-level-1-c4661.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4662.md | 2 ++ 2 files changed, 4 insertions(+) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4661.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4661.md index ebb21a82fc7..b4d9e92a60c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4661.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4661.md @@ -15,6 +15,8 @@ A member of the template class is not defined. ## Example +The following example generates C4661: + ```cpp // C4661.cpp // compile with: /W1 /LD diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4662.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4662.md index dd5d74293e4..68beca85087 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4662.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4662.md @@ -15,6 +15,8 @@ The specified template-class was declared, but not defined. ## Example +The following example generates C4662: + ```cpp // C4662.cpp // compile with: /W1 /LD From 8dd0050d1685cef570c4046ae5574a1842aed3d9 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 2 Sep 2025 17:01:12 +0800 Subject: [PATCH 1687/2255] Add blockquotes for warning messages in range [C4701, C4750] --- docs/error-messages/compiler-warnings/compiler-warning-c4746.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4711.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4715.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4716.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4717.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4722.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4727.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4729.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4730.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4731.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4733.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4739.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4744.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4747.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4723.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4724.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4738.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4701.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4709.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4718.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4725.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4740.md | 2 +- 22 files changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4746.md b/docs/error-messages/compiler-warnings/compiler-warning-c4746.md index 04491bb8f18..3d814bad58e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4746.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4746.md @@ -8,7 +8,7 @@ ms.assetid: 5e79ab46-6031-499a-a986-716c866b6c0e --- # Compiler Warning C4746 -volatile access of '\' is subject to /volatile:[iso\|ms] setting; consider using __iso_volatile_load/store intrinsic functions. +> volatile access of '\' is subject to /volatile:[iso\|ms] setting; consider using __iso_volatile_load/store intrinsic functions. C4746 is emitted whenever a volatile variable is accessed directly. It's intended to help developers identify code locations that are affected by the specific volatile model currently specified (which can be controlled with the [`/volatile`](../../build/reference/volatile-volatile-keyword-interpretation.md) compiler option). In particular, it can be useful in locating compiler-generated hardware memory barriers when `/volatile:ms` is used. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4711.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4711.md index 264ef9afb52..27ee9041ce5 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4711.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4711.md @@ -8,7 +8,7 @@ ms.assetid: 270506ab-fead-4328-b714-2978113be238 --- # Compiler Warning (level 1) C4711 -function 'function' selected for inline expansion +> function 'function' selected for inline expansion The compiler performed inlining on the given function, although it was not marked for inlining. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4715.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4715.md index c4f1d16eda7..f2172394b6a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4715.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4715.md @@ -8,7 +8,7 @@ ms.assetid: 1c819bf7-0d8b-4f5e-b338-9cc292870439 --- # Compiler Warning (level 1) C4715 -'function' : not all control paths return a value +> 'function' : not all control paths return a value The specified function can potentially not return a value. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4716.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4716.md index a01e32efc2c..8e0563e1498 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4716.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4716.md @@ -8,7 +8,7 @@ ms.assetid: d95ecfe5-870f-461f-a746-7913af98414b --- # Compiler Warning (level 1) C4716 -'function' must return a value +> 'function' must return a value The given function did not return a value. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4717.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4717.md index 3a0de8742fd..551e469bcdc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4717.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4717.md @@ -8,7 +8,7 @@ ms.assetid: 5ef3c6c7-8599-4714-a973-0f5b69cdab3c --- # Compiler Warning (level 1) C4717 -'function' : recursive on all control paths, function will cause runtime stack overflow +> 'function' : recursive on all control paths, function will cause runtime stack overflow Every path through a function contains a call to the function. Since there is no way to exit the function without first calling itself recursively, the function will never exit. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4722.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4722.md index 30659c1bb75..7cc2cc00517 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4722.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4722.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C4722"] --- # Compiler Warning (level 1) C4722 -'function' : destructor never returns, potential memory leak +> 'function' : destructor never returns, potential memory leak The flow of control terminates in a destructor. The thread or the entire program will terminate and allocated resources may not be released. Furthermore, if a destructor will be called for stack unwinding during exception processing, the behavior of executable is undefined. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4727.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4727.md index 821b7447a7f..8250351a53f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4727.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4727.md @@ -8,7 +8,7 @@ ms.assetid: 991b0087-3a50-40f5-9cdb-cdc367cd472c --- # Compiler Warning (level 1) C4727 -"PCH named pch_file with same timestamp found in obj_file_1 and obj_file_2. Using first PCH. +> "PCH named pch_file with same timestamp found in obj_file_1 and obj_file_2. Using first PCH. > [!NOTE] > In Visual Studio 2017 and earlier, the precompiled header is called *stdafx.h* by default, and in Visual Studio 2019 and later, it is called *pch.h* by default. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4729.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4729.md index 5bb7c836a4f..300e11f87e9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4729.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4729.md @@ -8,7 +8,7 @@ ms.assetid: 36a0151f-f258-48d9-9444-ae6d41ff70a4 --- # Compiler Warning (Level 1) C4729 -function too big for flow graph based warnings +> function too big for flow graph based warnings This warning is generated when a function is too big to be compiled with reliable checking for situations that would generate a warning. This warning is only generated when the [/Od](../../build/reference/od-disable-debug.md) compiler option used. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4730.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4730.md index 69e3190a359..37614be163d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4730.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4730.md @@ -8,7 +8,7 @@ ms.assetid: 11303e3f-162b-4b19-970a-479686123a68 --- # Compiler Warning (Level 1) C4730 -'main' : mixing _m64 and floating point expressions may result in incorrect code +> 'main' : mixing _m64 and floating point expressions may result in incorrect code A function uses [__m64](../../cpp/m64.md) and **`float`**/**`double`** types. Because the MMX and floating-point registers share the same physical register space (cannot be used simultaneously), using **`__m64`** and **`float`**/**`double`** types in the same function can result in data corruption, possibly causing an exception. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4731.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4731.md index 4e758090b5a..69c35278e13 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4731.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4731.md @@ -8,7 +8,7 @@ ms.assetid: 5658c24c-3e6f-4505-835b-1fb92d47cab0 --- # Compiler Warning (Level 1) C4731 -'pointer' : frame pointer register 'register' modified by inline assembly code +> 'pointer' : frame pointer register 'register' modified by inline assembly code A frame pointer register was modified. You must save and restore the register in your inline assembly block or frame variable (local or parameter, depending on the register modified), or your code may not work properly. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4733.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4733.md index 1c64dd7cbb5..51f7ae0a5ae 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4733.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4733.md @@ -8,7 +8,7 @@ ms.assetid: 7ef4f577-772d-4b66-a7bf-8958a6b250bc --- # Compiler Warning (Level 1) C4733 -Inline asm assigning to 'FS:0' : handler not registered as safe handler +> Inline asm assigning to 'FS:0' : handler not registered as safe handler A function modifying the value at FS:0 to add a new exception handler may not work with Safe Exceptions, because the handler may not be registered as a valid exception handler (see [/SAFESEH](../../build/reference/safeseh-image-has-safe-exception-handlers.md)). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4739.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4739.md index 83340c734c5..1bbb4af6af6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4739.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4739.md @@ -8,7 +8,7 @@ ms.assetid: 600873b3-7c85-4cd4-944e-cd8e01bfcbb0 --- # Compiler Warning (Level 1) C4739 -reference to variable 'var' exceeds its storage space +> reference to variable 'var' exceeds its storage space A value was assigned to a variable, but the value is greater than the size of the variable. Memory will be written beyond the variable's memory location, and data loss is possible. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4744.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4744.md index d8c6e56aafc..53e4aa7b149 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4744.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4744.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C4744"] --- # Compiler Warning (Level 1) C4744 -'var' has different type in 'file1' and 'file2': 'type1' and 'type2' +> 'var' has different type in 'file1' and 'file2': 'type1' and 'type2' An external variable referenced or defined in two files has different types in those files. To resolve, either make the type definitions the same, or change variable name in one of the files. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4747.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4747.md index 4c6c42a9a48..9f8d0b8b59a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4747.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4747.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C4747"] --- # Compiler Warning (level 1) C4747 -Calling managed 'entrypoint': Managed code may not be run under loader lock, including the DLL entrypoint and calls reached from the DLL entrypoint +> Calling managed 'entrypoint': Managed code may not be run under loader lock, including the DLL entrypoint and calls reached from the DLL entrypoint The compiler found a (probable) DLL entry point compiled to MSIL. Because of potential problems with loading a DLL whose entry point has been compiled to MSIL, you are strongly discouraged from compiling a DLL entry point function to MSIL. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4723.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4723.md index 7893ae678ed..24373b9de9f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4723.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4723.md @@ -8,7 +8,7 @@ ms.assetid: 07669d14-3fd8-4a43-94bc-b61c50e58460 --- # Compiler Warning (level 3) C4723 -> `potential divide by 0` +> potential divide by 0 The second operand in a divide operation evaluated to zero at compile time, giving undefined results. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4724.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4724.md index e9bb992d3ad..9126dffa753 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4724.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4724.md @@ -8,6 +8,6 @@ ms.assetid: 3be4305b-e8fe-49a9-abbf-b20dfbd71a19 --- # Compiler Warning (level 3) C4724 -potential mod by 0 +> potential mod by 0 The second operand in a remainder operation evaluated to zero at compile time, giving undefined results. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4738.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4738.md index b8ef08780a1..3908211c704 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4738.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4738.md @@ -8,7 +8,7 @@ ms.assetid: 9094895f-7eec-46c2-83d3-249b761d585e --- # Compiler Warning (Level 3) C4738 -storing 32-bit float result in memory, possible loss of performance +> storing 32-bit float result in memory, possible loss of performance C4738 warns that the result of an assignment, cast, passed argument, or other operation may need to be rounded or that the operation ran out of registers and needed to use memory (spilling). This can result in performance loss. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4701.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4701.md index 9ebcdda802f..9eb660e5662 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4701.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4701.md @@ -8,7 +8,7 @@ ms.assetid: d7c76c66-1f3f-4d3c-abe4-5d94c84a5a1f --- # Compiler Warning (level 4) C4701 -Potentially uninitialized local variable 'name' used +> Potentially uninitialized local variable 'name' used The local variable *name* might have been used without being assigned a value. This could lead to unpredictable results. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4709.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4709.md index ce1711cf545..8f3689ced54 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4709.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4709.md @@ -8,7 +8,7 @@ ms.assetid: 8abfdd45-8c70-4c27-b0fb-ca0c3f0fccf9 --- # Compiler Warning (level 4) C4709 -comma operator within array index expression +> comma operator within array index expression When a comma occurs in an array index expression, the compiler uses the value after the last comma. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4718.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4718.md index f5f3e29ecc3..25256b8812c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4718.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4718.md @@ -8,6 +8,6 @@ ms.assetid: 29507f8a-b024-42c1-a3b8-f35d1f2641f3 --- # Compiler Warning (level 4) C4718 -'function call' : recursive call has no side effects, deleting +> 'function call' : recursive call has no side effects, deleting A function contains a recursive call, but otherwise has no side effects. A call to this function is being deleted. The correctness of the program is not affected, but the behavior is. Whereas leaving the call in could result in a runtime stack overflow exception, deleting the call removes that possibility. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4725.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4725.md index 33d4ee8068d..4381680f5c5 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4725.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4725.md @@ -8,7 +8,7 @@ ms.assetid: effa0335-71c3-4b3b-8618-da4b9b46a95d --- # Compiler Warning (level 4) C4725 -instruction may be inaccurate on some Pentiums +> instruction may be inaccurate on some Pentiums Your code contains an inline assembly instruction that may not produce accurate results on some Pentium microprocessors. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4740.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4740.md index dbd34c62da4..78368f584f7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4740.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4740.md @@ -8,7 +8,7 @@ ms.assetid: 85528969-966a-44b4-8a2f-971704c64477 --- # Compiler Warning (Level 4) C4740 -flow in or out of inline asm code suppresses global optimization +> flow in or out of inline asm code suppresses global optimization When there is a jump in to or out of an **`asm`** block, global optimizations are disabled for that function. From cea02c8a9a4586d88840251c0016dce8d85c2bfd Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 2 Sep 2025 17:08:54 +0800 Subject: [PATCH 1688/2255] Add "Remarks" and "Example" headings for warning references in range [C4701, C4750] --- .../compiler-warnings/compiler-warning-c4746.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4711.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4715.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4716.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4717.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4722.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4727.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4729.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4730.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4731.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4733.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4739.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4742.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4743.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4744.md | 4 +++- .../compiler-warnings/compiler-warning-level-1-c4747.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4723.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4724.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4738.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4701.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4702.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4706.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4709.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4710.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4714.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4718.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4725.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4740.md | 4 ++++ 28 files changed, 79 insertions(+), 5 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4746.md b/docs/error-messages/compiler-warnings/compiler-warning-c4746.md index 3d814bad58e..0fdd3e41e56 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4746.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4746.md @@ -10,6 +10,8 @@ ms.assetid: 5e79ab46-6031-499a-a986-716c866b6c0e > volatile access of '\' is subject to /volatile:[iso\|ms] setting; consider using __iso_volatile_load/store intrinsic functions. +## Remarks + C4746 is emitted whenever a volatile variable is accessed directly. It's intended to help developers identify code locations that are affected by the specific volatile model currently specified (which can be controlled with the [`/volatile`](../../build/reference/volatile-volatile-keyword-interpretation.md) compiler option). In particular, it can be useful in locating compiler-generated hardware memory barriers when `/volatile:ms` is used. The __iso_volatile_load/store intrinsics can be used to explicitly access volatile memory without being affected by the volatile model. Using these intrinsics will not trigger C4746. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4711.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4711.md index 27ee9041ce5..27aacc37133 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4711.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4711.md @@ -10,6 +10,8 @@ ms.assetid: 270506ab-fead-4328-b714-2978113be238 > function 'function' selected for inline expansion +## Remarks + The compiler performed inlining on the given function, although it was not marked for inlining. C4711 is enabled if [/Ob2](../../build/reference/ob-inline-function-expansion.md) is specified. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4715.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4715.md index f2172394b6a..038477736a4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4715.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4715.md @@ -10,6 +10,8 @@ ms.assetid: 1c819bf7-0d8b-4f5e-b338-9cc292870439 > 'function' : not all control paths return a value +## Remarks + The specified function can potentially not return a value. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4716.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4716.md index 8e0563e1498..75500ed62ea 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4716.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4716.md @@ -10,6 +10,8 @@ ms.assetid: d95ecfe5-870f-461f-a746-7913af98414b > 'function' must return a value +## Remarks + The given function did not return a value. Only functions with a return type of void can use the return command without an accompanying return value. @@ -18,6 +20,8 @@ An undefined value will be returned when this function is called. This warning is automatically promoted to an error. If you wish to modify this behavior, use [#pragma warning](../../preprocessor/warning.md). +## Example + The following sample generates C4716: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4717.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4717.md index 551e469bcdc..5480542c57f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4717.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4717.md @@ -10,8 +10,12 @@ ms.assetid: 5ef3c6c7-8599-4714-a973-0f5b69cdab3c > 'function' : recursive on all control paths, function will cause runtime stack overflow +## Remarks + Every path through a function contains a call to the function. Since there is no way to exit the function without first calling itself recursively, the function will never exit. +## Example + The following sample generates C4717: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4722.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4722.md index 7cc2cc00517..079fe6e9f75 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4722.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4722.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4722"] > 'function' : destructor never returns, potential memory leak +## Remarks + The flow of control terminates in a destructor. The thread or the entire program will terminate and allocated resources may not be released. Furthermore, if a destructor will be called for stack unwinding during exception processing, the behavior of executable is undefined. To resolve, remove the function call that causes the destructor to not return. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4727.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4727.md index 8250351a53f..060c9e8811c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4727.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4727.md @@ -10,6 +10,8 @@ ms.assetid: 991b0087-3a50-40f5-9cdb-cdc367cd472c > "PCH named pch_file with same timestamp found in obj_file_1 and obj_file_2. Using first PCH. +## Remarks + > [!NOTE] > In Visual Studio 2017 and earlier, the precompiled header is called *stdafx.h* by default, and in Visual Studio 2019 and later, it is called *pch.h* by default. @@ -17,6 +19,8 @@ C4727 occurs when compiling multiple compilands with **/Yc**, and where the comp To resolve, compile one source file with **/Yc /c** (creates pch), and the others compile separately with **/Yu /c** (uses pch), then link them together. +## Example + So, if you did the following and it generates C4727: ::: moniker range="<=msvc-150" diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4729.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4729.md index 300e11f87e9..4a3a4145f7a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4729.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4729.md @@ -10,6 +10,8 @@ ms.assetid: 36a0151f-f258-48d9-9444-ae6d41ff70a4 > function too big for flow graph based warnings +## Remarks + This warning is generated when a function is too big to be compiled with reliable checking for situations that would generate a warning. This warning is only generated when the [/Od](../../build/reference/od-disable-debug.md) compiler option used. To resolve this warning, break the function into smaller functions. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4730.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4730.md index 37614be163d..c191aa60e41 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4730.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4730.md @@ -10,10 +10,14 @@ ms.assetid: 11303e3f-162b-4b19-970a-479686123a68 > 'main' : mixing _m64 and floating point expressions may result in incorrect code +## Remarks + A function uses [__m64](../../cpp/m64.md) and **`float`**/**`double`** types. Because the MMX and floating-point registers share the same physical register space (cannot be used simultaneously), using **`__m64`** and **`float`**/**`double`** types in the same function can result in data corruption, possibly causing an exception. To safely use **`__m64`** types and floating-point types in the same function, each instruction that uses one of the types should be separated by the **_m_empty()** (for MMX) or **_m_femms()** (for 3DNow!) intrinsic. +## Example + The following sample generates C4730: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4731.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4731.md index 69c35278e13..3694df752f8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4731.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4731.md @@ -10,8 +10,12 @@ ms.assetid: 5658c24c-3e6f-4505-835b-1fb92d47cab0 > 'pointer' : frame pointer register 'register' modified by inline assembly code +## Remarks + A frame pointer register was modified. You must save and restore the register in your inline assembly block or frame variable (local or parameter, depending on the register modified), or your code may not work properly. +## Example + The following sample generates C4731: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4733.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4733.md index 51f7ae0a5ae..194ff6940f2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4733.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4733.md @@ -10,10 +10,14 @@ ms.assetid: 7ef4f577-772d-4b66-a7bf-8958a6b250bc > Inline asm assigning to 'FS:0' : handler not registered as safe handler +## Remarks + A function modifying the value at FS:0 to add a new exception handler may not work with Safe Exceptions, because the handler may not be registered as a valid exception handler (see [/SAFESEH](../../build/reference/safeseh-image-has-safe-exception-handlers.md)). To resolve this warning, either remove the FS:0 definition or turn off this warning and use [.SAFESEH](../../assembler/masm/dot-safeseh.md) to specify the safe exception handlers. +## Example + The following sample generates C4733: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4739.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4739.md index 1bbb4af6af6..ba2621a9665 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4739.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4739.md @@ -10,10 +10,14 @@ ms.assetid: 600873b3-7c85-4cd4-944e-cd8e01bfcbb0 > reference to variable 'var' exceeds its storage space +## Remarks + A value was assigned to a variable, but the value is greater than the size of the variable. Memory will be written beyond the variable's memory location, and data loss is possible. To resolve this warning, only assign a value to a variable whose size can accommodate the value. +## Example + The following sample generates C4739: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4742.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4742.md index c25caf63912..19f09d5f77c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4742.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4742.md @@ -10,10 +10,10 @@ ms.assetid: e520881d-1eeb-48b1-9df0-8017ee8ba076 > '*variable*' has different alignment in '*file1*' and '*file2*': *number1* and *number2* -An external variable that was referenced or defined in two files has different alignment in those files. - ## Remarks +An external variable that was referenced or defined in two files has different alignment in those files. + This warning is emitted when compiler finds that **`alignof`** for the variable in *file1* differs from **`alignof`** for the variable in *file2*. This can be caused by using incompatible types when declaring variable in different files, or by using non-matching `#pragma pack` in different files. To resolve this warning, either use the same type definition or use different names for the variables. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4743.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4743.md index 7587043b9dc..3663a249cff 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4743.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4743.md @@ -10,10 +10,10 @@ ms.assetid: 2ee76ea3-77f3-4c2f-9a57-0751823c89fd > '*type*' has different size in '*file1*' and '*file2*': *size_1* and *size_2* bytes -An external variable referenced or defined in two files has different types in those files, and the compiler determined that the size of the variable in *file1* differs from the size of the variable in *file2*. - ## Remarks +An external variable referenced or defined in two files has different types in those files, and the compiler determined that the size of the variable in *file1* differs from the size of the variable in *file2*. + There's an important case when this warning can be emitted for C++. If you declare class types with the same name in two different files, if those declarations contain virtual functions, and if the declarations aren't the same, then the compiler can emit warning C4744 for the virtual function tables. The warning occurs because there are two different-sized virtual function tables for the same type, and the linker must choose one of them to incorporate into the executable. It's possible that it can result in your program calling the wrong virtual function. To resolve this warning, either use the same type definition or use different names for the types or variables. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4744.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4744.md index 53e4aa7b149..b0eb87ddc3f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4744.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4744.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4744"] > 'var' has different type in 'file1' and 'file2': 'type1' and 'type2' +## Remarks + An external variable referenced or defined in two files has different types in those files. To resolve, either make the type definitions the same, or change variable name in one of the files. C4744 is emitted only when files are compiled with /GL. For more information, see [/GL (Whole Program Optimization)](../../build/reference/gl-whole-program-optimization.md). @@ -16,7 +18,7 @@ C4744 is emitted only when files are compiled with /GL. For more information, s > [!NOTE] > C4744 usually occurs in C (not C++) files, because in C++ a variable name is decorated with type information. When the sample (below) is compiles as C++, you'll get linker error LNK2019. -## Examples +## Example This sample contains the first definition. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4747.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4747.md index 9f8d0b8b59a..26cfa5b6e09 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4747.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4747.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4747"] > Calling managed 'entrypoint': Managed code may not be run under loader lock, including the DLL entrypoint and calls reached from the DLL entrypoint +## Remarks + The compiler found a (probable) DLL entry point compiled to MSIL. Because of potential problems with loading a DLL whose entry point has been compiled to MSIL, you are strongly discouraged from compiling a DLL entry point function to MSIL. For more information, see [Initialization of Mixed Assemblies](../../dotnet/initialization-of-mixed-assemblies.md) and [Linker Tools Error LNK1306](../../error-messages/tool-errors/linker-tools-error-lnk1306.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4723.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4723.md index 24373b9de9f..e7d06ecd2a6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4723.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4723.md @@ -10,6 +10,8 @@ ms.assetid: 07669d14-3fd8-4a43-94bc-b61c50e58460 > potential divide by 0 +## Remarks + The second operand in a divide operation evaluated to zero at compile time, giving undefined results. This warning is issued only when optimizations are enabled. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4724.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4724.md index 9126dffa753..81b9329525d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4724.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4724.md @@ -10,4 +10,6 @@ ms.assetid: 3be4305b-e8fe-49a9-abbf-b20dfbd71a19 > potential mod by 0 +## Remarks + The second operand in a remainder operation evaluated to zero at compile time, giving undefined results. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4738.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4738.md index 3908211c704..01c54150135 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4738.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4738.md @@ -10,6 +10,8 @@ ms.assetid: 9094895f-7eec-46c2-83d3-249b761d585e > storing 32-bit float result in memory, possible loss of performance +## Remarks + C4738 warns that the result of an assignment, cast, passed argument, or other operation may need to be rounded or that the operation ran out of registers and needed to use memory (spilling). This can result in performance loss. To resolve this warning and avoid rounding, compile with [/fp:fast](../../build/reference/fp-specify-floating-point-behavior.md) or use **`double`** instead of **`float`**. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4701.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4701.md index 9eb660e5662..de8b137f7ef 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4701.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4701.md @@ -10,6 +10,8 @@ ms.assetid: d7c76c66-1f3f-4d3c-abe4-5d94c84a5a1f > Potentially uninitialized local variable 'name' used +## Remarks + The local variable *name* might have been used without being assigned a value. This could lead to unpredictable results. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4702.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4702.md index c87a88e66cb..701b03facf1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4702.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4702.md @@ -10,6 +10,8 @@ ms.assetid: d8198c1e-8762-42a6-9e6b-cb568b7a1686 > unreachable code +## Remarks + When the compiler back end detects unreachable code, it generates C4702 as a level 4 warning. To address this warning, remove the unreachable code or assure that all source code is reachable by some flow of execution. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4706.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4706.md index d31d01fd410..04183c4e86b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4706.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4706.md @@ -9,10 +9,14 @@ helpviewer_keywords: ["C4706"] > assignment used as a condition +## Remarks + The test value in a conditional expression is the result of an assignment. An assignment has a value (the value on the left side of the assignment) that can be used legally in another expression, including a test expression. +## Example + The following sample generates C4706: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4709.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4709.md index 8f3689ced54..957d27824b0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4709.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4709.md @@ -10,6 +10,8 @@ ms.assetid: 8abfdd45-8c70-4c27-b0fb-ca0c3f0fccf9 > comma operator within array index expression +## Remarks + When a comma occurs in an array index expression, the compiler uses the value after the last comma. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4710.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4710.md index d2cc5e90759..80c1d4217ce 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4710.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4710.md @@ -10,6 +10,8 @@ ms.assetid: 76381ec7-3fc1-4bee-9a0a-c2c8307b92e2 > '*function*' : function not inlined +## Remarks + The specified function was marked for inline expansion, but the compiler didn't inline the function. Inlining is done at the compiler's discretion. The **`inline`** keyword, like the deprecated (and, in C++17 and later standards, removed) **`register`** keyword, is used as a hint for the compiler. The compiler uses heuristics to determine if it should inline a particular function to speed up the code when it optimizes for speed, or if it should inline a particular function to make the code smaller when it optimizes for space. The compiler inlines only the smallest functions when compiling for space. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4714.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4714.md index 4742aa9d22e..6661b1b1569 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4714.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4714.md @@ -10,6 +10,8 @@ ms.assetid: 22c7fd0c-899d-4e9b-95f3-725b2c49fb46 > function 'function' marked as __forceinline not inlined +## Remarks + The given function was selected for inline expansion, but the compiler did not perform the inlining. Although **`__forceinline`** is a stronger indication to the compiler than **`__inline`**, inlining is still performed at the compiler's discretion, but no heuristics are used to determine the benefits from inlining this function. @@ -28,6 +30,8 @@ In some cases, the compiler will not inline a particular function for mechanical - A function with a **`try`** (C++ exception handling) statement. +## Example + The following sample generates C4714: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4718.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4718.md index 25256b8812c..534705501ee 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4718.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4718.md @@ -10,4 +10,6 @@ ms.assetid: 29507f8a-b024-42c1-a3b8-f35d1f2641f3 > 'function call' : recursive call has no side effects, deleting +## Remarks + A function contains a recursive call, but otherwise has no side effects. A call to this function is being deleted. The correctness of the program is not affected, but the behavior is. Whereas leaving the call in could result in a runtime stack overflow exception, deleting the call removes that possibility. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4725.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4725.md index 4381680f5c5..a342806d519 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4725.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4725.md @@ -10,8 +10,12 @@ ms.assetid: effa0335-71c3-4b3b-8618-da4b9b46a95d > instruction may be inaccurate on some Pentiums +## Remarks + Your code contains an inline assembly instruction that may not produce accurate results on some Pentium microprocessors. +## Example + The following sample generates C4725: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4740.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4740.md index 78368f584f7..2b19c7d9341 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4740.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4740.md @@ -10,8 +10,12 @@ ms.assetid: 85528969-966a-44b4-8a2f-971704c64477 > flow in or out of inline asm code suppresses global optimization +## Remarks + When there is a jump in to or out of an **`asm`** block, global optimizations are disabled for that function. +## Example + The following sample generates C4740: ```cpp From 52c448f825bf50fecfb74a31b7f7d84017d456f2 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 2 Sep 2025 17:11:30 +0800 Subject: [PATCH 1689/2255] Replace term "sample" with "example" for warning references in range [C4701, C4750] --- .../compiler-warnings/compiler-warning-level-1-c4716.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4717.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4722.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4730.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4731.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4733.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4739.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4742.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4743.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4744.md | 6 +++--- .../compiler-warnings/compiler-warning-level-1-c4747.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4738.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4702.md | 4 ++-- .../compiler-warnings/compiler-warning-level-4-c4706.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4709.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4714.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4725.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4740.md | 2 +- 18 files changed, 21 insertions(+), 21 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4716.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4716.md index 75500ed62ea..7a2c54bf0dc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4716.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4716.md @@ -22,7 +22,7 @@ This warning is automatically promoted to an error. If you wish to modify this b ## Example -The following sample generates C4716: +The following example generates C4716: ```cpp // C4716.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4717.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4717.md index 5480542c57f..acab0594192 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4717.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4717.md @@ -16,7 +16,7 @@ Every path through a function contains a call to the function. Since there is no ## Example -The following sample generates C4717: +The following example generates C4717: ```cpp // C4717.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4722.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4722.md index 079fe6e9f75..badb5a14db1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4722.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4722.md @@ -17,7 +17,7 @@ To resolve, remove the function call that causes the destructor to not return. ## Example -The following sample generates C4722: +The following example generates C4722: ```cpp // C4722.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4730.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4730.md index c191aa60e41..b0493e30ede 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4730.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4730.md @@ -18,7 +18,7 @@ To safely use **`__m64`** types and floating-point types in the same function, e ## Example -The following sample generates C4730: +The following example generates C4730: ```cpp // C4730.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4731.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4731.md index 3694df752f8..107a659a8e0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4731.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4731.md @@ -16,7 +16,7 @@ A frame pointer register was modified. You must save and restore the register in ## Example -The following sample generates C4731: +The following example generates C4731: ```cpp // C4731.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4733.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4733.md index 194ff6940f2..87c92038cfb 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4733.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4733.md @@ -18,7 +18,7 @@ To resolve this warning, either remove the FS:0 definition or turn off this warn ## Example -The following sample generates C4733: +The following example generates C4733: ```cpp // C4733.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4739.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4739.md index ba2621a9665..f581ce400bb 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4739.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4739.md @@ -18,7 +18,7 @@ To resolve this warning, only assign a value to a variable whose size can accomm ## Example -The following sample generates C4739: +The following example generates C4739: ```cpp // C4739.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4742.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4742.md index 19f09d5f77c..3071ad16ad6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4742.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4742.md @@ -32,7 +32,7 @@ struct X { } global; ``` -The following sample generates C4742. +The following example generates C4742. ```c // C4742b.c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4743.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4743.md index 3663a249cff..4bb1217c9df 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4743.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4743.md @@ -20,7 +20,7 @@ To resolve this warning, either use the same type definition or use different na ## Example -The following sample generates C4743. To compile it, place both files in the same folder, then run this command in a developer command prompt: +The following example generates C4743. To compile it, place both files in the same folder, then run this command in a developer command prompt: ```cmd cl /EHsc /W1 /GL /O2 C4743a.cpp C4743b.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4744.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4744.md index b0eb87ddc3f..df60c3ad08e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4744.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4744.md @@ -16,11 +16,11 @@ An external variable referenced or defined in two files has different types in t C4744 is emitted only when files are compiled with /GL. For more information, see [/GL (Whole Program Optimization)](../../build/reference/gl-whole-program-optimization.md). > [!NOTE] -> C4744 usually occurs in C (not C++) files, because in C++ a variable name is decorated with type information. When the sample (below) is compiles as C++, you'll get linker error LNK2019. +> C4744 usually occurs in C (not C++) files, because in C++ a variable name is decorated with type information. When the example (below) is compiles as C++, you'll get linker error LNK2019. ## Example -This sample contains the first definition. +This example contains the first definition. ```c // C4744.c @@ -28,7 +28,7 @@ This sample contains the first definition. int global; ``` -The following sample generates C4744. +The following example generates C4744. ```c // C4744b.c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4747.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4747.md index 26cfa5b6e09..4354ddd8827 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4747.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4747.md @@ -23,7 +23,7 @@ For more information, see [Initialization of Mixed Assemblies](../../dotnet/init ## Example -The following sample generates C4747. +The following example generates C4747. ```cpp // C4747.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4738.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4738.md index 01c54150135..05a62944e0f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4738.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4738.md @@ -22,7 +22,7 @@ This warning is off by default. For more information, see [Compiler Warnings Tha ## Example -The following sample generates C4738: +The following example generates C4738: ```cpp // C4738.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4702.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4702.md index 701b03facf1..b1c60fba344 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4702.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4702.md @@ -18,7 +18,7 @@ To address this warning, remove the unreachable code or assure that all source c ## Examples -The following sample generates C4702. To fix it, remove the unreachable code. +The following example generates C4702. To fix it, remove the unreachable code. ```cpp // C4702.cpp @@ -35,7 +35,7 @@ Error C4702 can occur in some versions of the compiler when you compile using th For more information, see [`/EH` (Exception Handling Model)](../../build/reference/eh-exception-handling-model.md). -The following sample generates C4702: +The following example generates C4702: ```cpp // C4702b.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4706.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4706.md index 04183c4e86b..cb34db902d3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4706.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4706.md @@ -17,7 +17,7 @@ An assignment has a value (the value on the left side of the assignment) that ca ## Example -The following sample generates C4706: +The following example generates C4706: ```cpp // compile with: /W4 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4709.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4709.md index 957d27824b0..a73aeda5d78 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4709.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4709.md @@ -16,7 +16,7 @@ When a comma occurs in an array index expression, the compiler uses the value af ## Example -The following sample generates C4709: +The following example generates C4709: ```cpp // C4709.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4714.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4714.md index 6661b1b1569..3f4761478cb 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4714.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4714.md @@ -32,7 +32,7 @@ In some cases, the compiler will not inline a particular function for mechanical ## Example -The following sample generates C4714: +The following example generates C4714: ```cpp // C4714.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4725.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4725.md index a342806d519..63e3daed710 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4725.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4725.md @@ -16,7 +16,7 @@ Your code contains an inline assembly instruction that may not produce accurate ## Example -The following sample generates C4725: +The following example generates C4725: ```cpp // C4725.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4740.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4740.md index 2b19c7d9341..ccdf31df98a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4740.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4740.md @@ -16,7 +16,7 @@ When there is a jump in to or out of an **`asm`** block, global optimizations ar ## Example -The following sample generates C4740: +The following example generates C4740: ```cpp // C4740.cpp From 60c0a43d861012d2ebb6a6e76b0a9ecf0ab146aa Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 2 Sep 2025 17:18:54 +0800 Subject: [PATCH 1690/2255] Update metadata for warning references in range [C4701, C4750] --- .../compiler-warnings/compiler-warning-c4746.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4711.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4715.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4716.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4717.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4727.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4729.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4730.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4731.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4733.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4739.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4742.md | 3 +-- .../compiler-warnings/compiler-warning-level-1-c4743.md | 3 +-- .../compiler-warnings/compiler-warning-level-1-c4750.md | 1 - .../compiler-warnings/compiler-warning-level-3-c4723.md | 1 - .../compiler-warnings/compiler-warning-level-3-c4724.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4738.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4701.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4702.md | 3 +-- .../compiler-warnings/compiler-warning-level-4-c4703.md | 3 +-- .../compiler-warnings/compiler-warning-level-4-c4706.md | 4 ++-- .../compiler-warnings/compiler-warning-level-4-c4709.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4710.md | 3 +-- .../compiler-warnings/compiler-warning-level-4-c4714.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4718.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4725.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4740.md | 5 ++--- 27 files changed, 45 insertions(+), 71 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4746.md b/docs/error-messages/compiler-warnings/compiler-warning-c4746.md index 0fdd3e41e56..529e25e81c6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4746.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4746.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning C4746" title: "Compiler Warning C4746" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning C4746" +ms.date: 11/04/2016 f1_keywords: ["C4746"] helpviewer_keywords: ["C4746"] -ms.assetid: 5e79ab46-6031-499a-a986-716c866b6c0e --- # Compiler Warning C4746 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4711.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4711.md index 27aacc37133..1f8acf57625 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4711.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4711.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4711" title: "Compiler Warning (level 1) C4711" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4711" +ms.date: 11/04/2016 f1_keywords: ["C4711"] helpviewer_keywords: ["C4711"] -ms.assetid: 270506ab-fead-4328-b714-2978113be238 --- # Compiler Warning (level 1) C4711 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4715.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4715.md index 038477736a4..25d7aa33e25 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4715.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4715.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4715" title: "Compiler Warning (level 1) C4715" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4715" +ms.date: 11/04/2016 f1_keywords: ["C4715"] helpviewer_keywords: ["C4715"] -ms.assetid: 1c819bf7-0d8b-4f5e-b338-9cc292870439 --- # Compiler Warning (level 1) C4715 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4716.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4716.md index 7a2c54bf0dc..ed6196b2104 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4716.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4716.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4716" title: "Compiler Warning (level 1) C4716" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4716" +ms.date: 11/04/2016 f1_keywords: ["C4716"] helpviewer_keywords: ["C4716"] -ms.assetid: d95ecfe5-870f-461f-a746-7913af98414b --- # Compiler Warning (level 1) C4716 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4717.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4717.md index acab0594192..a546f804471 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4717.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4717.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4717" title: "Compiler Warning (level 1) C4717" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4717" +ms.date: 11/04/2016 f1_keywords: ["C4717"] helpviewer_keywords: ["C4717"] -ms.assetid: 5ef3c6c7-8599-4714-a973-0f5b69cdab3c --- # Compiler Warning (level 1) C4717 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4727.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4727.md index 060c9e8811c..d791c9190ce 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4727.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4727.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4727" title: "Compiler Warning (level 1) C4727" -ms.date: "08/19/2019" +description: "Learn more about: Compiler Warning (level 1) C4727" +ms.date: 08/19/2019 f1_keywords: ["C4727"] helpviewer_keywords: ["C4727"] -ms.assetid: 991b0087-3a50-40f5-9cdb-cdc367cd472c --- # Compiler Warning (level 1) C4727 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4729.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4729.md index 4a3a4145f7a..d8b24fc3922 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4729.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4729.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (Level 1) C4729" title: "Compiler Warning (Level 1) C4729" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (Level 1) C4729" +ms.date: 11/04/2016 f1_keywords: ["C4729"] helpviewer_keywords: ["C4729"] -ms.assetid: 36a0151f-f258-48d9-9444-ae6d41ff70a4 --- # Compiler Warning (Level 1) C4729 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4730.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4730.md index b0493e30ede..3856100db3a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4730.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4730.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (Level 1) C4730" title: "Compiler Warning (Level 1) C4730" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (Level 1) C4730" +ms.date: 11/04/2016 f1_keywords: ["C4730"] helpviewer_keywords: ["C4730"] -ms.assetid: 11303e3f-162b-4b19-970a-479686123a68 --- # Compiler Warning (Level 1) C4730 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4731.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4731.md index 107a659a8e0..cdefa78d6b8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4731.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4731.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (Level 1) C4731" title: "Compiler Warning (Level 1) C4731" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (Level 1) C4731" +ms.date: 11/04/2016 f1_keywords: ["C4731"] helpviewer_keywords: ["C4731"] -ms.assetid: 5658c24c-3e6f-4505-835b-1fb92d47cab0 --- # Compiler Warning (Level 1) C4731 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4733.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4733.md index 87c92038cfb..d4e0f431ea3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4733.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4733.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (Level 1) C4733" title: "Compiler Warning (Level 1) C4733" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (Level 1) C4733" +ms.date: 11/04/2016 f1_keywords: ["C4733"] helpviewer_keywords: ["C4733"] -ms.assetid: 7ef4f577-772d-4b66-a7bf-8958a6b250bc --- # Compiler Warning (Level 1) C4733 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4739.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4739.md index f581ce400bb..d9fb0cb42b1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4739.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4739.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (Level 1) C4739" title: "Compiler Warning (Level 1) C4739" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (Level 1) C4739" +ms.date: 11/04/2016 f1_keywords: ["C4739"] helpviewer_keywords: ["C4739"] -ms.assetid: 600873b3-7c85-4cd4-944e-cd8e01bfcbb0 --- # Compiler Warning (Level 1) C4739 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4742.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4742.md index 3071ad16ad6..65aee758f44 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4742.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4742.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (Level 1) C4742" title: "Compiler Warning (Level 1) C4742" +description: "Learn more about: Compiler Warning (Level 1) C4742" ms.date: 07/22/2020 f1_keywords: ["C4742"] helpviewer_keywords: ["C4742"] -ms.assetid: e520881d-1eeb-48b1-9df0-8017ee8ba076 --- # Compiler Warning (Level 1) C4742 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4743.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4743.md index 4bb1217c9df..3eb845751b1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4743.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4743.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (Level 1) C4743" title: "Compiler Warning (Level 1) C4743" +description: "Learn more about: Compiler Warning (Level 1) C4743" ms.date: 06/16/2022 f1_keywords: ["C4743"] helpviewer_keywords: ["C4743"] -ms.assetid: 2ee76ea3-77f3-4c2f-9a57-0751823c89fd --- # Compiler Warning (Level 1) C4743 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4750.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4750.md index da0b7a82489..8739b355309 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4750.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4750.md @@ -4,7 +4,6 @@ description: "Describes MSVC compiler warning C4750 about a possible stack overf ms.date: 07/08/2020 f1_keywords: ["C4750"] helpviewer_keywords: ["C4750"] -ms.assetid: b0b2c938-7d2a-4c36-8270-7daee15ffee3 --- # Compiler Warning (level 1) C4750 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4723.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4723.md index e7d06ecd2a6..d41de92232c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4723.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4723.md @@ -4,7 +4,6 @@ description: "Describes the MSVC compiler warning C4723 for potential divide by ms.date: 07/08/2020 f1_keywords: ["C4723"] helpviewer_keywords: ["C4723"] -ms.assetid: 07669d14-3fd8-4a43-94bc-b61c50e58460 --- # Compiler Warning (level 3) C4723 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4724.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4724.md index 81b9329525d..d1cdf080f8a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4724.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4724.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4724" title: "Compiler Warning (level 3) C4724" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4724" +ms.date: 11/04/2016 f1_keywords: ["C4724"] helpviewer_keywords: ["C4724"] -ms.assetid: 3be4305b-e8fe-49a9-abbf-b20dfbd71a19 --- # Compiler Warning (level 3) C4724 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4738.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4738.md index 05a62944e0f..418c5042309 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4738.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4738.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (Level 3) C4738" title: "Compiler Warning (Level 3) C4738" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (Level 3) C4738" +ms.date: 11/04/2016 f1_keywords: ["C4738"] helpviewer_keywords: ["C4738"] -ms.assetid: 9094895f-7eec-46c2-83d3-249b761d585e --- # Compiler Warning (Level 3) C4738 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4701.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4701.md index de8b137f7ef..9200e630f18 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4701.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4701.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4701" title: "Compiler Warning (level 4) C4701" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4701" +ms.date: 11/04/2016 f1_keywords: ["C4701"] helpviewer_keywords: ["C4701"] -ms.assetid: d7c76c66-1f3f-4d3c-abe4-5d94c84a5a1f --- # Compiler Warning (level 4) C4701 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4702.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4702.md index b1c60fba344..04cc02f7efe 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4702.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4702.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4702" title: "Compiler Warning (level 4) C4702" +description: "Learn more about: Compiler Warning (level 4) C4702" ms.date: 09/20/2021 f1_keywords: ["C4702"] helpviewer_keywords: ["C4702"] -ms.assetid: d8198c1e-8762-42a6-9e6b-cb568b7a1686 --- # Compiler Warning (level 4) C4702 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4703.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4703.md index af2e4d53e94..b15a4cd6a68 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4703.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4703.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4703" title: "Compiler Warning (level 4) C4703" +description: "Learn more about: Compiler Warning (level 4) C4703" ms.date: 08/30/2022 f1_keywords: ["C4703"] helpviewer_keywords: ["C4703"] -ms.assetid: 5dad454e-69e3-4931-9168-050a861c05f8 --- # Compiler Warning (level 4) C4703 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4706.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4706.md index cb34db902d3..314f98a8a40 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4706.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4706.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4706" title: "Compiler Warning (level 4) C4706" -ms.date: "3/5/2025" +description: "Learn more about: Compiler Warning (level 4) C4706" +ms.date: 3/5/2025 f1_keywords: ["C4706"] helpviewer_keywords: ["C4706"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4709.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4709.md index a73aeda5d78..4061b8eaabb 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4709.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4709.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4709" title: "Compiler Warning (level 4) C4709" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4709" +ms.date: 11/04/2016 f1_keywords: ["C4709"] helpviewer_keywords: ["C4709"] -ms.assetid: 8abfdd45-8c70-4c27-b0fb-ca0c3f0fccf9 --- # Compiler Warning (level 4) C4709 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4710.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4710.md index 80c1d4217ce..7e6ab51b762 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4710.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4710.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4710" title: "Compiler Warning (level 4) C4710" +description: "Learn more about: Compiler Warning (level 4) C4710" ms.date: 10/19/2021 f1_keywords: ["C4710"] helpviewer_keywords: ["C4710"] -ms.assetid: 76381ec7-3fc1-4bee-9a0a-c2c8307b92e2 --- # Compiler Warning (level 4) C4710 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4714.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4714.md index 3f4761478cb..1e8cb117833 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4714.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4714.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4714" title: "Compiler Warning (level 4) C4714" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4714" +ms.date: 11/04/2016 f1_keywords: ["C4714"] helpviewer_keywords: ["C4714"] -ms.assetid: 22c7fd0c-899d-4e9b-95f3-725b2c49fb46 --- # Compiler Warning (level 4) C4714 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4718.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4718.md index 534705501ee..0d1e87cd79d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4718.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4718.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4718" title: "Compiler Warning (level 4) C4718" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4718" +ms.date: 11/04/2016 f1_keywords: ["C4718"] helpviewer_keywords: ["C4718"] -ms.assetid: 29507f8a-b024-42c1-a3b8-f35d1f2641f3 --- # Compiler Warning (level 4) C4718 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4725.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4725.md index 63e3daed710..e758e619545 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4725.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4725.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4725" title: "Compiler Warning (level 4) C4725" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4725" +ms.date: 11/04/2016 f1_keywords: ["C4725"] helpviewer_keywords: ["C4725"] -ms.assetid: effa0335-71c3-4b3b-8618-da4b9b46a95d --- # Compiler Warning (level 4) C4725 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4740.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4740.md index ccdf31df98a..9caf86e10b1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4740.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4740.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (Level 4) C4740" title: "Compiler Warning (Level 4) C4740" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (Level 4) C4740" +ms.date: 11/04/2016 f1_keywords: ["C4740"] helpviewer_keywords: ["C4740"] -ms.assetid: 85528969-966a-44b4-8a2f-971704c64477 --- # Compiler Warning (Level 4) C4740 From 8e31443d2634e646f1fba03e4219fce0f6ee1e08 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 2 Sep 2025 17:21:02 +0800 Subject: [PATCH 1691/2255] Add leading example sentence in C4715 warning reference --- .../compiler-warnings/compiler-warning-level-1-c4715.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4715.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4715.md index 25d7aa33e25..7350b2edfe6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4715.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4715.md @@ -15,6 +15,8 @@ The specified function can potentially not return a value. ## Example +The following example generates C4715: + ```cpp // C4715a.cpp // compile with: /W1 /LD From 55088aecfe477b359dd22bc532e49bc0257d05de Mon Sep 17 00:00:00 2001 From: Carsten Rudolph <18394207+crud89@users.noreply.github.com> Date: Tue, 2 Sep 2025 14:53:03 +0200 Subject: [PATCH 1692/2255] Use environment variables to specify compiler preferences. The cache variables `CMAKE_C_COMPILER` and `CMAKE_CXX_COMPILER` must only be set during the initial cache creation. Specifying them in a preset will cause them to be reset during subsequent cache configurations, resulting in a cache invalidation, which can break the build. Using the `CC` and `CXX` environment variables to initialize those cache variables is the proper way to avoid this issue. --- docs/build/cmake-presets-vs.md | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/docs/build/cmake-presets-vs.md b/docs/build/cmake-presets-vs.md index 87d3fd71461..1706bdbbe17 100644 --- a/docs/build/cmake-presets-vs.md +++ b/docs/build/cmake-presets-vs.md @@ -205,29 +205,33 @@ The official [CMake documentation](https://cmake.org/cmake/help/latest/manual/cm ### Select your compilers -You can set C and C++ compilers by using `cacheVariables.CMAKE_C_COMPILER` and `cacheVariables.CMAKE_CXX_COMPILER` in a Configure Preset. It's equivalent to passing `-D CMAKE_C_COMPILER=` and `-D CMAKE_CXX_COMPILER=` to CMake from the command line. For more information, see [`CMAKE__COMPILER`](https://cmake.org/cmake/help/latest/variable/CMAKE_LANG_COMPILER.html#cmake-lang-compiler). +You can set C and C++ compilers by using `environmentVariables.CC` and `environmentVariables.CXX` in a Configure Preset. For more information, see [`CC`](https://cmake.org/cmake/help/latest/envvar/CC.html)/[`CXX`](https://cmake.org/cmake/help/latest/envvar/CXX.html). Use the following examples to build with `cl.exe` and `clang-cl.exe` from Visual Studio. The C++ Clang tools for Windows components must be installed for you to build with `clang-cl`. Build with `cl.exe`: ```json +"environmentVariables": { + "CC": "cl", + "CXX": "cl" +}, "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug", - "CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}", - "CMAKE_C_COMPILER": "cl", - "CMAKE_CXX_COMPILER": "cl" + "CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}" }, ``` Build with `clang`: ```json +"environmentVariables": { + "CC": "clang-cl", + "CXX": "clang-cl" +}, "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug", "CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}", - "CMAKE_C_COMPILER": "clang-cl", - "CMAKE_CXX_COMPILER": "clang-cl" }, "vendor": { @@ -264,11 +268,13 @@ To reproduce these builds outside Visual Studio, see [Run CMake from the command To build on Linux or without the Visual C++ toolset, specify the name of a compiler on your `PATH` instance, or an environment variable that evaluates to the full path of a compiler. Full paths are discouraged so that the file can remain shareable. A preset that builds with GCC version 8 might look like this: ```json +"environmentVariables": { + "CC": "gcc-8", + "CXX": "g++-8" +}, "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug", - "CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}", - "CMAKE_C_COMPILER": "gcc-8", - "CMAKE_CXX_COMPILER": "g++-8" + "CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}" }, ``` From a3f18e6b7d5e6ca317dc47c6cf7ed0937928cc9b Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 2 Sep 2025 23:16:06 +0800 Subject: [PATCH 1693/2255] Add blockquotes for warning messages in range [C4751, C4830] --- .../compiler-warnings/compiler-warning-level-1-c4772.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4788.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4794.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4803.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4804.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4805.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4806.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4807.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4810.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4811.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4812.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4813.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4817.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4822.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4829.md | 2 +- .../compiler-warnings/compiler-warning-level-2-c4756.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4792.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4823.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4754.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4764.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4816.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4820.md | 2 +- 22 files changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4772.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4772.md index efe45fc03e2..7ea34f352f9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4772.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4772.md @@ -8,7 +8,7 @@ ms.assetid: dafe6fd8-9faf-41f5-9d66-a55838742c14 --- # Compiler Warning (level 1) C4772 -> \#import referenced a type from a missing type library; '*missing-type*' used as a placeholder +> #import referenced a type from a missing type library; '*missing-type*' used as a placeholder A type library was referenced with the [#import](../../preprocessor/hash-import-directive-cpp.md) directive. However, the type library contained a reference to another type library that was not referenced with `#import`. This other .tlb file was not found by the compiler. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4788.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4788.md index 4d871d446c9..2041d800067 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4788.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4788.md @@ -8,7 +8,7 @@ ms.assetid: 47d75bda-f833-4bdd-93a0-a134df0cd303 --- # Compiler Warning (Level 1) C4788 -'identifier' : identifier was truncated to 'number' characters +> 'identifier' : identifier was truncated to 'number' characters The compiler limits the maximum length allowed for a function name. When the compiler generates funclets for EH/SEH code, it forms the funclet name by prepending the function name with some text, for example "__catch", "\__unwind", or another string. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4794.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4794.md index 909387c2dc9..0431e748acf 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4794.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4794.md @@ -8,7 +8,7 @@ ms.assetid: badc9c36-fa1a-4fec-929b-7bfda7a7b79f --- # Compiler Warning (level 1) C4794 -segment of thread local storage variable 'variable' changed from 'section name' to '.tls$' +> segment of thread local storage variable 'variable' changed from 'section name' to '.tls$' You used [#pragma data_seg](../../preprocessor/data-seg.md) to put a tls variable in a section not starting with .tls$. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4803.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4803.md index 8a242d9c74d..31db90c0f81 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4803.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4803.md @@ -8,7 +8,7 @@ ms.assetid: 2552f3a6-c418-49f4-98a2-a929857be658 --- # Compiler Warning (level 1) C4803 -'method' : the raise method has a different storage class from that of the event, 'event' +> 'method' : the raise method has a different storage class from that of the event, 'event' Event methods must have the same storage class as the event declaration. The compiler adjusts the event's methods so that the storage classes are the same. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4804.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4804.md index 3d6298288d6..16b83d4f166 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4804.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4804.md @@ -8,7 +8,7 @@ ms.assetid: 069e8f44-3ef6-43bb-8524-4116fc6eea83 --- # Compiler Warning (level 1) C4804 -'operation' : unsafe use of type 'bool' in operation +> 'operation' : unsafe use of type 'bool' in operation This warning is for when you used a **`bool`** variable or value in an unexpected way. For example, C4804 is generated if you use operators such as the negative unary operator (**-**) or the complement operator (`~`). The compiler evaluates the expression. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4805.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4805.md index 02304303c4f..f6f1b6922b8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4805.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4805.md @@ -8,7 +8,7 @@ ms.assetid: 99c7b7e2-272e-4ab5-8580-17c42e62e2ef --- # Compiler Warning (level 1) C4805 -'operation' : unsafe mix of type 'type' and type 'type' in operation +> 'operation' : unsafe mix of type 'type' and type 'type' in operation This warning is generated for comparison operations between [bool](../../cpp/bool-cpp.md) and [int](../../c-language/integer-types.md). The following sample generates C4805: diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4806.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4806.md index 276e5adc69e..0dc589a940a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4806.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4806.md @@ -8,7 +8,7 @@ ms.assetid: 79eb74cd-b925-4b5b-84e1-8ae6f33e38b3 --- # Compiler Warning (level 1) C4806 -'operation' : unsafe operation: no value of type 'type' promoted to type 'type' can equal the given constant +> 'operation' : unsafe operation: no value of type 'type' promoted to type 'type' can equal the given constant This message warns against code such as `b == 3`, where `b` has type **`bool`**. The promotion rules cause **`bool`** to be promoted to **`int`**. This is legal, but it can never be **`true`**. The following sample generates C4806: diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4807.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4807.md index 1bfb761d9af..88df85d9540 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4807.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4807.md @@ -8,7 +8,7 @@ ms.assetid: 089c9f87-fd81-402e-9826-66a8ef1ef1fe --- # Compiler Warning (level 1) C4807 -'operation' : unsafe mix of type 'type' and signed bitfield of type 'type' +> 'operation' : unsafe mix of type 'type' and signed bitfield of type 'type' This warning is generated when comparing a one-bit signed bit field to a **`bool`** variable. Because a one-bit, signed bit field can only contain the values -1 or 0, it is dangerous to compare it to **`bool`**. No warnings are generated about mixing **`bool`** and one-bit, unsigned bitfields since they are identical to **`bool`** and can only hold 0 or 1. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4810.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4810.md index 50bdb9be685..56cf1c3e16c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4810.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4810.md @@ -8,7 +8,7 @@ ms.assetid: 39e2cae0-9c1c-4ac1-aaa0-5f661d06085b --- # Compiler Warning (level 1) C4810 -value of pragma pack(show) == n +> value of pragma pack(show) == n This warning is issued when you use the **show** option of the [pack](../../preprocessor/pack.md) pragma. *n* is the current pack value. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4811.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4811.md index 5a5797e5809..cc0165ea39c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4811.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4811.md @@ -8,6 +8,6 @@ ms.assetid: fbd79351-3dc1-45cf-b5b3-411f48c1590f --- # Compiler Warning (level 1) C4811 -value of pragma conform(forScope, show) == value +> value of pragma conform(forScope, show) == value This warning is issued when you use the **show** option of the [conform](../../preprocessor/conform.md) pragma. *value* is the current conform value. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4812.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4812.md index 07221f45109..26ad7348041 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4812.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4812.md @@ -8,7 +8,7 @@ ms.assetid: a7f5721f-2019-44de-ad62-ed30bac8b1f3 --- # Compiler Warning (level 1) C4812 -obsolete declaration style: please use 'new_syntax' instead +> obsolete declaration style: please use 'new_syntax' instead In the current release of Visual C++, the explicit constructor specialization is still supported, but it may not be supported in a future release. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4813.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4813.md index 532b62c42aa..e7426d3f1c2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4813.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4813.md @@ -8,7 +8,7 @@ ms.assetid: c30bf877-ab04-4fe4-897e-8162092426f0 --- # Compiler Warning (level 1) C4813 -'function' : a friend function of a local class must have been previously declared +> 'function' : a friend function of a local class must have been previously declared A friend function in an inner class was not declared in the outer class. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4817.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4817.md index 1bd7d8b68af..5c12a6d5ff3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4817.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4817.md @@ -8,7 +8,7 @@ ms.assetid: a68f5486-6940-4934-9f93-bfd4d71f92a9 --- # Compiler Warning (level 1) C4817 -'member' : illegal use of '.' to access this member; compiler replaced with '->' +> 'member' : illegal use of '.' to access this member; compiler replaced with '->' The wrong member access operator was used. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4822.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4822.md index 51968a971dc..4320b22cc5c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4822.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4822.md @@ -8,7 +8,7 @@ ms.assetid: 0f231a30-2eb0-4722-aaa0-e2d19d3e7eea --- # Compiler Warning (level 1) C4822 -'member' : local class member function does not have a body +> 'member' : local class member function does not have a body ## Remarks diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4829.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4829.md index 42a6d4cced6..20dec7a0f66 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4829.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4829.md @@ -8,7 +8,7 @@ ms.assetid: 4ffabe2b-2ddc-4c52-8564-d1355c93cfa6 --- # Compiler Warning (level 1) C4829 -Possibly incorrect parameters to function main. Consider 'intmain(Platform::Array\^ argv)' +> Possibly incorrect parameters to function main. Consider 'intmain(Platform::Array\^ argv)' Certain functions, such as main, cannot take reference type parameters. While compilation will succeed, the resulting image will probably not run. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4756.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4756.md index 41c25723109..38f368cb2b2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4756.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4756.md @@ -8,7 +8,7 @@ ms.assetid: 5a16df83-6b82-4619-83bd-319af4ef1d1d --- # Compiler Warning (level 2) C4756 -overflow in constant arithmetic +> overflow in constant arithmetic The compiler generated an exception while doing constant arithmetic during compilation. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4792.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4792.md index a4e6e483aea..ab2ff6b8469 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4792.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4792.md @@ -8,7 +8,7 @@ ms.assetid: c047ce69-a622-44e1-9425-d41aa9261c61 --- # Compiler Warning (level 3) C4792 -function 'function' declared using sysimport and referenced from native code; import library required to link +> function 'function' declared using sysimport and referenced from native code; import library required to link A native function that was imported into the program with DllImport was called from an unmanaged function. Therefore, you must link to the import library for the DLL. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4823.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4823.md index 3a8f659d426..13972b205c3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4823.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4823.md @@ -8,7 +8,7 @@ ms.assetid: 8a77560d-dcea-4cae-aebb-8ebf1b4cef85 --- # Compiler Warning (level 3) C4823 -'function' : uses pinning pointers but unwind semantics are not enabled. Consider using /EHa +> 'function' : uses pinning pointers but unwind semantics are not enabled. Consider using /EHa To unpin an object on the managed heap pointed to by a pinning pointer declared in a block scope, the compiler simulates the behavior of destructors of local classes, "pretending" the pinning pointer has a destructor that nullifies the pointer. To enable a call to a destructor after throwing an exception, you must enable object unwinding, which you can do by using [/EHsc](../../build/reference/eh-exception-handling-model.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4754.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4754.md index b5fcf28fe24..3f47a73b361 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4754.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4754.md @@ -8,7 +8,7 @@ ms.assetid: e0e4606a-754a-4f42-a274-21a34978d21d --- # Compiler Warning (level 4) C4754 -Conversion rules for arithmetic operations in a comparison mean that one branch cannot be executed. +> Conversion rules for arithmetic operations in a comparison mean that one branch cannot be executed. The C4754 warning is issued because the result of the comparison is always the same. This indicates that one of the branches of the condition is never executed, most likely because the associated integer expression is incorrect. This code defect often occurs in incorrect integer overflow checks on 64-bit architectures. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4764.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4764.md index d1767d47506..a11948ef358 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4764.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4764.md @@ -8,7 +8,7 @@ ms.assetid: 7bd4296f-966b-484c-bf73-8dbc8e85b4a9 --- # Compiler Warning (level 4) C4764 -Cannot align catch objects to greater than 16 bytes +> Cannot align catch objects to greater than 16 bytes An alignment greater than 16 was specified, but on some platforms, if the function throws an exception, the stack will force an alignment of not greater than 16. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4816.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4816.md index 2adb8e107e5..4365a42356c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4816.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4816.md @@ -8,7 +8,7 @@ ms.assetid: 60f730ae-d942-4db9-ab97-41d4a874d8da --- # Compiler Warning (level 4) C4816 -'param' : parameter has a zero-sized array which will be truncated (unless the object is passed by reference) +> 'param' : parameter has a zero-sized array which will be truncated (unless the object is passed by reference) A parameter to an object with a zero-size array was not passed by reference. The array will not get copied when the object is passed. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4820.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4820.md index 4a2288a609d..2a30c930c2c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4820.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4820.md @@ -8,7 +8,7 @@ ms.assetid: 17aa29f4-c287-49b8-bc43-8ed82ffed5ea --- # Compiler Warning (level 4) C4820 -'bytes' bytes padding added after construct 'member_name' +> 'bytes' bytes padding added after construct 'member_name' The type and order of elements caused the compiler to add padding to the end of a struct. See [align](../../cpp/align-cpp.md) for more information on padding in a struct. From 652ab07f063f122084c25e99b0ec2c9daf28db3b Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 2 Sep 2025 23:24:43 +0800 Subject: [PATCH 1694/2255] Add "Remarks" and "Example" headings for warning references in range [C4751, C4830] --- docs/error-messages/compiler-warnings/c4768.md | 4 ++-- docs/error-messages/compiler-warnings/c4770.md | 4 ++-- .../compiler-warning-level-1-and-3-c4793.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4772.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4788.md | 8 +++++++- .../compiler-warnings/compiler-warning-level-1-c4794.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4799.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4803.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4804.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4805.md | 8 +++++++- .../compiler-warnings/compiler-warning-level-1-c4806.md | 8 +++++++- .../compiler-warnings/compiler-warning-level-1-c4807.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4810.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4811.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4812.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4813.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4817.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4819.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4821.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4829.md | 4 ++++ .../compiler-warnings/compiler-warning-level-2-c4756.md | 4 ++++ .../compiler-warnings/compiler-warning-level-3-c4792.md | 4 ++++ .../compiler-warnings/compiler-warning-level-3-c4800.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4823.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4754.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4764.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4816.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4820.md | 4 ++++ 28 files changed, 84 insertions(+), 8 deletions(-) diff --git a/docs/error-messages/compiler-warnings/c4768.md b/docs/error-messages/compiler-warnings/c4768.md index ac07f56f108..2e6da6eec85 100644 --- a/docs/error-messages/compiler-warnings/c4768.md +++ b/docs/error-messages/compiler-warnings/c4768.md @@ -9,10 +9,10 @@ helpviewer_keywords: ["C4768"] > `__declspec` attributes before linkage specification are ignored -The compiler warns if `__declspec(...)` is applied before the `extern "C"` linkage specification. Previously, the compiler would ignore the attribute, which could have runtime implications. - ## Remarks +The compiler warns if `__declspec(...)` is applied before the `extern "C"` linkage specification. Previously, the compiler would ignore the attribute, which could have runtime implications. + This warning is new in Visual Studio 2017 version 15.3, which left it off by default. It's enabled by default as a level 3 warning starting in Visual Studio 2017 version 15.5. For information on how to disable warnings by compiler version, see [Compiler warnings by compiler version](compiler-warnings-by-compiler-version.md). ## Example diff --git a/docs/error-messages/compiler-warnings/c4770.md b/docs/error-messages/compiler-warnings/c4770.md index 3acd9eddc4f..5afbc067883 100644 --- a/docs/error-messages/compiler-warnings/c4770.md +++ b/docs/error-messages/compiler-warnings/c4770.md @@ -9,10 +9,10 @@ helpviewer_keywords: ["C4770"] > partially validated enum '*symbol*' used as index -The compiler warns if an enum value is cast or aliased to an integer type, but the result isn't checked for non-negative or excessive values. - ## Remarks +The compiler warns if an enum value is cast or aliased to an integer type, but the result isn't checked for non-negative or excessive values. + This warning is new in Visual Studio 2013. It's not enabled by default. To enable it as a level 1 warning, use `/w14770`. For information on how to disable warnings by compiler version, see [Compiler warnings by compiler version](compiler-warnings-by-compiler-version.md). ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-and-3-c4793.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-and-3-c4793.md index ae937e3ff24..fae4a118757 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-and-3-c4793.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-and-3-c4793.md @@ -30,7 +30,7 @@ The following table lists all possible continuation messages. |A non-__clrcall virtual function thunk must be compiled as native|A non-[__clrcall](../../cpp/clrcall.md) virtual function thunk must use an unmanaged address.| |A function using '_setjmp' must be compiled as native|The CLR must be able to control program execution. However, the [setjmp](../../cpp/using-setjmp-longjmp.md) function bypasses regular program execution by saving and restoring low-level information such as registers and execution state.| -## Example +## Examples The following sample generates C4793. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4772.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4772.md index 7ea34f352f9..22d80dab0e3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4772.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4772.md @@ -10,6 +10,8 @@ ms.assetid: dafe6fd8-9faf-41f5-9d66-a55838742c14 > #import referenced a type from a missing type library; '*missing-type*' used as a placeholder +## Remarks + A type library was referenced with the [#import](../../preprocessor/hash-import-directive-cpp.md) directive. However, the type library contained a reference to another type library that was not referenced with `#import`. This other .tlb file was not found by the compiler. Note that the compiler will not find type libraries in different directories if you use the [/I (Additional Include Directories)](../../build/reference/i-additional-include-directories.md) compiler option to specify those directories. If you want the compiler to find type libraries in different directories, add those directories to the PATH environment variable. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4788.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4788.md index 2041d800067..7318f3f079a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4788.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4788.md @@ -10,11 +10,17 @@ ms.assetid: 47d75bda-f833-4bdd-93a0-a134df0cd303 > 'identifier' : identifier was truncated to 'number' characters +## Remarks + The compiler limits the maximum length allowed for a function name. When the compiler generates funclets for EH/SEH code, it forms the funclet name by prepending the function name with some text, for example "__catch", "\__unwind", or another string. The resulting funclet name can be too long, and the compiler will truncate it and generate C4788. -To resolve this warning, shorten the original function name. If the function is a C++ function template or method, use a typedef for part of the name. For example: +To resolve this warning, shorten the original function name. If the function is a C++ function template or method, use a typedef for part of the name. + +## Example + +For example: ```cpp C1>::C2::f diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4794.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4794.md index 0431e748acf..5c3af428901 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4794.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4794.md @@ -10,6 +10,8 @@ ms.assetid: badc9c36-fa1a-4fec-929b-7bfda7a7b79f > segment of thread local storage variable 'variable' changed from 'section name' to '.tls$' +## Remarks + You used [#pragma data_seg](../../preprocessor/data-seg.md) to put a tls variable in a section not starting with .tls$. The .tls$*x* section will exist in the object file where [__declspec(thread)](../../cpp/thread.md) variables are defined. A .tls section in the EXE or DLL will result from these sections. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4799.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4799.md index a5c280ad860..20dc701fdd5 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4799.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4799.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4799"] > function '*function*' has no EMMS instruction +## Remarks + The function has at least one MMX instruction, but does not have an `EMMS` instruction. When a multimedia instruction is used, an `EMMS` instruction or [`_mm_empty`](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_empty) intrinsic should also be used to clear the multimedia tag word at the end of the MMX code. You may get C4799 when using `ivec.h`, indicating that the code does not properly execute the `EMMS` instruction before returning. This is a false warning for these headers. You may turn these off by defining `_SILENCE_IVEC_C4799` in `ivec.h`. However, be aware that this will also keep the compiler from giving correct warnings of this type. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4803.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4803.md index 31db90c0f81..110767c0c8d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4803.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4803.md @@ -10,6 +10,8 @@ ms.assetid: 2552f3a6-c418-49f4-98a2-a929857be658 > 'method' : the raise method has a different storage class from that of the event, 'event' +## Remarks + Event methods must have the same storage class as the event declaration. The compiler adjusts the event's methods so that the storage classes are the same. This warning can occur if you have a class that implements an event from an interface. The compiler does not implicitly generate a raise method for an event in an interface. When you implement that interface in a class, the compiler does implicitly generate a raise method and that method will not be virtual, hence the warning. For more information on events, see [event](../../extensions/event-cpp-component-extensions.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4804.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4804.md index 16b83d4f166..508baa97d3c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4804.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4804.md @@ -10,6 +10,8 @@ ms.assetid: 069e8f44-3ef6-43bb-8524-4116fc6eea83 > 'operation' : unsafe use of type 'bool' in operation +## Remarks + This warning is for when you used a **`bool`** variable or value in an unexpected way. For example, C4804 is generated if you use operators such as the negative unary operator (**-**) or the complement operator (`~`). The compiler evaluates the expression. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4805.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4805.md index f6f1b6922b8..d0fbed526f4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4805.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4805.md @@ -10,7 +10,13 @@ ms.assetid: 99c7b7e2-272e-4ab5-8580-17c42e62e2ef > 'operation' : unsafe mix of type 'type' and type 'type' in operation -This warning is generated for comparison operations between [bool](../../cpp/bool-cpp.md) and [int](../../c-language/integer-types.md). The following sample generates C4805: +## Remarks + +This warning is generated for comparison operations between [bool](../../cpp/bool-cpp.md) and [int](../../c-language/integer-types.md). + +## Example + +The following sample generates C4805: ```cpp // C4805.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4806.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4806.md index 0dc589a940a..2a797ed808c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4806.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4806.md @@ -10,7 +10,13 @@ ms.assetid: 79eb74cd-b925-4b5b-84e1-8ae6f33e38b3 > 'operation' : unsafe operation: no value of type 'type' promoted to type 'type' can equal the given constant -This message warns against code such as `b == 3`, where `b` has type **`bool`**. The promotion rules cause **`bool`** to be promoted to **`int`**. This is legal, but it can never be **`true`**. The following sample generates C4806: +## Remarks + +This message warns against code such as `b == 3`, where `b` has type **`bool`**. The promotion rules cause **`bool`** to be promoted to **`int`**. This is legal, but it can never be **`true`**. + +## Example + +The following sample generates C4806: ```cpp // C4806.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4807.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4807.md index 88df85d9540..b33dc17c937 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4807.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4807.md @@ -10,6 +10,8 @@ ms.assetid: 089c9f87-fd81-402e-9826-66a8ef1ef1fe > 'operation' : unsafe mix of type 'type' and signed bitfield of type 'type' +## Remarks + This warning is generated when comparing a one-bit signed bit field to a **`bool`** variable. Because a one-bit, signed bit field can only contain the values -1 or 0, it is dangerous to compare it to **`bool`**. No warnings are generated about mixing **`bool`** and one-bit, unsigned bitfields since they are identical to **`bool`** and can only hold 0 or 1. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4810.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4810.md index 56cf1c3e16c..e047f841d5f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4810.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4810.md @@ -10,8 +10,12 @@ ms.assetid: 39e2cae0-9c1c-4ac1-aaa0-5f661d06085b > value of pragma pack(show) == n +## Remarks + This warning is issued when you use the **show** option of the [pack](../../preprocessor/pack.md) pragma. *n* is the current pack value. +## Example + For example, the following code shows how the C4810 warning works with the pack pragma: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4811.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4811.md index cc0165ea39c..cce815a0cba 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4811.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4811.md @@ -10,4 +10,6 @@ ms.assetid: fbd79351-3dc1-45cf-b5b3-411f48c1590f > value of pragma conform(forScope, show) == value +## Remarks + This warning is issued when you use the **show** option of the [conform](../../preprocessor/conform.md) pragma. *value* is the current conform value. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4812.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4812.md index 26ad7348041..5bc64cdaaac 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4812.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4812.md @@ -10,8 +10,12 @@ ms.assetid: a7f5721f-2019-44de-ad62-ed30bac8b1f3 > obsolete declaration style: please use 'new_syntax' instead +## Remarks + In the current release of Visual C++, the explicit constructor specialization is still supported, but it may not be supported in a future release. +## Example + The following sample generates C4812: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4813.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4813.md index e7426d3f1c2..9635478c179 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4813.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4813.md @@ -10,8 +10,12 @@ ms.assetid: c30bf877-ab04-4fe4-897e-8162092426f0 > 'function' : a friend function of a local class must have been previously declared +## Remarks + A friend function in an inner class was not declared in the outer class. +## Example + The following sample generates C4813: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4817.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4817.md index 5c12a6d5ff3..7110ac64e9a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4817.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4817.md @@ -10,6 +10,8 @@ ms.assetid: a68f5486-6940-4934-9f93-bfd4d71f92a9 > 'member' : illegal use of '.' to access this member; compiler replaced with '->' +## Remarks + The wrong member access operator was used. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4819.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4819.md index 46f611babf6..a08b5f304b1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4819.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4819.md @@ -10,6 +10,8 @@ ms.assetid: c0316e85-249c-414d-9df0-622d077c6bc2 > The file contains a character that cannot be represented in the current code page (*number*). Save the file in Unicode format to prevent data loss. +## Remarks + C4819 occurs when you compile an ANSI source file on a system using a codepage that can't represent all characters in the file. There are several ways to resolve C4819. One simple way is to remove the offending character, if you don't need it, for example, if it's in a comment. You can set the system codepage in the Control Panel to one that supports the character set used by your source code. You can use Unicode [escape sequences](../../c-language/escape-sequences.md) to create characters or strings that use only the basic ANSI character set in your source code. Finally, you can save the file in a Unicode format with a signature, also known as a byte-order mark (BOM). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4821.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4821.md index 0cb5746cef3..c92c4d56899 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4821.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4821.md @@ -10,4 +10,6 @@ ms.assetid: c7768e77-0ee5-491e-8aa4-3915bf5bcbdf > Unable to determine Unicode encoding type, please save the file with signature (BOM) +## Remarks + The compiler could not determine the encoding type for a file. To resolve this warning, save the file with a byte order marker. See [Manage Files with Encoding](/sql/ssms/solution/manage-files-with-encoding) for more information. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4829.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4829.md index 20dec7a0f66..4889a7a450e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4829.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4829.md @@ -10,8 +10,12 @@ ms.assetid: 4ffabe2b-2ddc-4c52-8564-d1355c93cfa6 > Possibly incorrect parameters to function main. Consider 'intmain(Platform::Array\^ argv)' +## Remarks + Certain functions, such as main, cannot take reference type parameters. While compilation will succeed, the resulting image will probably not run. +## Example + The following sample generates C4829: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4756.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4756.md index 38f368cb2b2..a714aca0e9c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4756.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4756.md @@ -10,8 +10,12 @@ ms.assetid: 5a16df83-6b82-4619-83bd-319af4ef1d1d > overflow in constant arithmetic +## Remarks + The compiler generated an exception while doing constant arithmetic during compilation. +## Example + The following sample generates C4756: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4792.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4792.md index ab2ff6b8469..282a2762119 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4792.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4792.md @@ -10,10 +10,14 @@ ms.assetid: c047ce69-a622-44e1-9425-d41aa9261c61 > function 'function' declared using sysimport and referenced from native code; import library required to link +## Remarks + A native function that was imported into the program with DllImport was called from an unmanaged function. Therefore, you must link to the import library for the DLL. This warning cannot be resolved in code or by changing the way you compile. Use the [warning](../../preprocessor/warning.md) pragma to disable this warning. +## Example + The following sample generates C4792: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4800.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4800.md index 128c92c9bb6..e3e0c8a0ccc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4800.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4800.md @@ -16,6 +16,8 @@ Visual Studio 2019 and later: C4800 is a level 3 warning in Visual Studio 2015 and earlier: > '*type*' : forcing value to bool 'true' or 'false' (performance warning) +## Remarks + This warning is generated when a value is implicitly converted into type **`bool`**. Typically, this message is caused by assigning **`int`** variables to **`bool`** variables where the **`int`** variable contains only values **`true`** and **`false`**, and could be redeclared as type **`bool`**. If you can't rewrite the expression to use type **`bool`**, then you can add "`!=0`" to the expression, which gives the expression type **`bool`**. Casting the expression to type **`bool`** doesn't disable the warning, which is by design. ::: moniker range=">= msvc-150" diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4823.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4823.md index 13972b205c3..44aad2d7360 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4823.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4823.md @@ -10,6 +10,8 @@ ms.assetid: 8a77560d-dcea-4cae-aebb-8ebf1b4cef85 > 'function' : uses pinning pointers but unwind semantics are not enabled. Consider using /EHa +## Remarks + To unpin an object on the managed heap pointed to by a pinning pointer declared in a block scope, the compiler simulates the behavior of destructors of local classes, "pretending" the pinning pointer has a destructor that nullifies the pointer. To enable a call to a destructor after throwing an exception, you must enable object unwinding, which you can do by using [/EHsc](../../build/reference/eh-exception-handling-model.md). You can also manually unpin the object and ignore the warning. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4754.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4754.md index 3f47a73b361..e2e5e442cf4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4754.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4754.md @@ -10,6 +10,8 @@ ms.assetid: e0e4606a-754a-4f42-a274-21a34978d21d > Conversion rules for arithmetic operations in a comparison mean that one branch cannot be executed. +## Remarks + The C4754 warning is issued because the result of the comparison is always the same. This indicates that one of the branches of the condition is never executed, most likely because the associated integer expression is incorrect. This code defect often occurs in incorrect integer overflow checks on 64-bit architectures. Integer conversion rules are complex and there are many subtle pitfalls. As an alternative to fixing each C4754 warning, you can update the code to use the [SafeInt Library](../../safeint/safeint-library.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4764.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4764.md index a11948ef358..df98f8cbafc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4764.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4764.md @@ -10,6 +10,8 @@ ms.assetid: 7bd4296f-966b-484c-bf73-8dbc8e85b4a9 > Cannot align catch objects to greater than 16 bytes +## Remarks + An alignment greater than 16 was specified, but on some platforms, if the function throws an exception, the stack will force an alignment of not greater than 16. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4816.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4816.md index 4365a42356c..bc689d514b7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4816.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4816.md @@ -10,6 +10,8 @@ ms.assetid: 60f730ae-d942-4db9-ab97-41d4a874d8da > 'param' : parameter has a zero-sized array which will be truncated (unless the object is passed by reference) +## Remarks + A parameter to an object with a zero-size array was not passed by reference. The array will not get copied when the object is passed. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4820.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4820.md index 2a30c930c2c..a6df159f0df 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4820.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4820.md @@ -10,10 +10,14 @@ ms.assetid: 17aa29f4-c287-49b8-bc43-8ed82ffed5ea > 'bytes' bytes padding added after construct 'member_name' +## Remarks + The type and order of elements caused the compiler to add padding to the end of a struct. See [align](../../cpp/align-cpp.md) for more information on padding in a struct. This warning is off by default. See [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md) for more information. +## Example + The following sample generates C4820: ```cpp From 46209f2920c552f294593481629d3d6766ab1c73 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 2 Sep 2025 23:26:30 +0800 Subject: [PATCH 1695/2255] Replace term "sample" with "example" for warning references in range [C4751, C4830] --- .../compiler-warnings/compiler-warning-level-1-and-3-c4793.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4772.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4789.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4794.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4803.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4804.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4805.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4806.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4807.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4812.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4813.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4817.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4822.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4829.md | 2 +- .../compiler-warnings/compiler-warning-level-2-c4756.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4792.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4800.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4823.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4754.md | 4 ++-- .../compiler-warnings/compiler-warning-level-4-c4764.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4816.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4820.md | 2 +- 22 files changed, 25 insertions(+), 25 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-and-3-c4793.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-and-3-c4793.md index fae4a118757..0278f38c700 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-and-3-c4793.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-and-3-c4793.md @@ -32,7 +32,7 @@ The following table lists all possible continuation messages. ## Examples -The following sample generates C4793. +The following example generates C4793. ```cpp // C4793.cpp @@ -50,7 +50,7 @@ warning C4793: 'asmfunc' : function is compiled as native code: Inline native assembly ('__asm') is not supported in managed code ``` -The following sample generates C4793. +The following example generates C4793. ```cpp // C4793_b.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4772.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4772.md index 22d80dab0e3..8c1671bb837 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4772.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4772.md @@ -53,7 +53,7 @@ library C4772bLib }; ``` -The following sample generates C4772: +The following example generates C4772: ```cpp // C4772.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4789.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4789.md index 696cc4eacdf..504b06f47e3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4789.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4789.md @@ -38,7 +38,7 @@ The [`/sdl` (Enable Additional Security Checks)](../../build/reference/sdl-enabl ## Examples -The following sample generates C4789: +The following example generates C4789: ```cpp // C4789.cpp @@ -60,7 +60,7 @@ int main() } ``` -The following sample also generates C4789: +The following example also generates C4789: ```cpp // C4789b.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4794.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4794.md index 5c3af428901..5eba3349663 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4794.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4794.md @@ -18,7 +18,7 @@ The .tls$*x* section will exist in the object file where [__declspec(thread)](.. ## Example -The following sample generates C4794: +The following example generates C4794: ```cpp // C4794.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4803.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4803.md index 110767c0c8d..f9781701761 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4803.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4803.md @@ -20,7 +20,7 @@ See [warning](../../preprocessor/warning.md) pragma for information on how to tu ## Example -The following sample generates C4803. +The following example generates C4803. ```cpp // C4803.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4804.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4804.md index 508baa97d3c..48fd9ffd8e9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4804.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4804.md @@ -16,7 +16,7 @@ This warning is for when you used a **`bool`** variable or value in an unexpecte ## Example -The following sample generates C4804: +The following example generates C4804: ```cpp // C4804.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4805.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4805.md index d0fbed526f4..7711dbe3e97 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4805.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4805.md @@ -16,7 +16,7 @@ This warning is generated for comparison operations between [bool](../../cpp/boo ## Example -The following sample generates C4805: +The following example generates C4805: ```cpp // C4805.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4806.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4806.md index 2a797ed808c..4674dd22234 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4806.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4806.md @@ -16,7 +16,7 @@ This message warns against code such as `b == 3`, where `b` has type **`bool`**. ## Example -The following sample generates C4806: +The following example generates C4806: ```cpp // C4806.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4807.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4807.md index b33dc17c937..9c6a61b659c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4807.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4807.md @@ -16,7 +16,7 @@ This warning is generated when comparing a one-bit signed bit field to a **`bool ## Example -The following sample generates C4807: +The following example generates C4807: ```cpp // C4807.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4812.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4812.md index 5bc64cdaaac..ec4b6f9f8a9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4812.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4812.md @@ -16,7 +16,7 @@ In the current release of Visual C++, the explicit constructor specialization is ## Example -The following sample generates C4812: +The following example generates C4812: ```cpp // C4812.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4813.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4813.md index 9635478c179..94fa833ebd9 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4813.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4813.md @@ -16,7 +16,7 @@ A friend function in an inner class was not declared in the outer class. ## Example -The following sample generates C4813: +The following example generates C4813: ```cpp // C4813.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4817.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4817.md index 7110ac64e9a..86ba5cfb487 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4817.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4817.md @@ -16,7 +16,7 @@ The wrong member access operator was used. ## Example -The following sample generates C4817. +The following example generates C4817. ```cpp // C4817.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4822.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4822.md index 4320b22cc5c..9a0904ec622 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4822.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4822.md @@ -20,7 +20,7 @@ In Visual Studio 2019 and later, C4822 is an [off-by-default](../../preprocessor ## Example -The following sample generates C4822: +The following example generates C4822: ```cpp // C4822.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4829.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4829.md index 4889a7a450e..1e8c12861c4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4829.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4829.md @@ -16,7 +16,7 @@ Certain functions, such as main, cannot take reference type parameters. While co ## Example -The following sample generates C4829: +The following example generates C4829: ```cpp // C4829.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4756.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4756.md index a714aca0e9c..e0b37b00240 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4756.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4756.md @@ -16,7 +16,7 @@ The compiler generated an exception while doing constant arithmetic during compi ## Example -The following sample generates C4756: +The following example generates C4756: ```cpp // C4756.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4792.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4792.md index 282a2762119..6bf4dd59267 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4792.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4792.md @@ -18,7 +18,7 @@ This warning cannot be resolved in code or by changing the way you compile. Use ## Example -The following sample generates C4792: +The following example generates C4792: ```cpp // C4792.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4800.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4800.md index e3e0c8a0ccc..a2815e0f2cc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4800.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4800.md @@ -30,7 +30,7 @@ This warning is off by default starting in Visual Studio 2019. Use __/w__*n*__48 ## Example -The following sample generates C4800 and shows how to fix it: +The following example generates C4800 and shows how to fix it: ```cpp // C4800.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4823.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4823.md index 44aad2d7360..b89ece22d76 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4823.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4823.md @@ -18,7 +18,7 @@ You can also manually unpin the object and ignore the warning. ## Example -The following sample generates C4823. +The following example generates C4823. ```cpp // C4823.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4754.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4754.md index e2e5e442cf4..97c290348cc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4754.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4754.md @@ -18,7 +18,7 @@ Integer conversion rules are complex and there are many subtle pitfalls. As an a ## Examples -This sample generates C4754: +This example generates C4754: ```cpp // C4754a.cpp @@ -54,7 +54,7 @@ unsigned long long x = (unsigned long long)a + (unsigned long long)b; ``` -The next sample also generates C4754. +The next example also generates C4754. ```cpp // C4754b.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4764.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4764.md index df98f8cbafc..1a95399b6df 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4764.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4764.md @@ -16,7 +16,7 @@ An alignment greater than 16 was specified, but on some platforms, if the functi ## Example -The following sample generates C4764: +The following example generates C4764: ```cpp // C4764.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4816.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4816.md index bc689d514b7..0ca0e6f1702 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4816.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4816.md @@ -16,7 +16,7 @@ A parameter to an object with a zero-size array was not passed by reference. The ## Example -The following sample generates C4816: +The following example generates C4816: ```cpp // C4816.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4820.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4820.md index a6df159f0df..c66d4c2b885 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4820.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4820.md @@ -18,7 +18,7 @@ This warning is off by default. See [Compiler Warnings That Are Off by Default]( ## Example -The following sample generates C4820: +The following example generates C4820: ```cpp // C4820.cpp From b6229c809767788574f042edaedfaa9878508d37 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 2 Sep 2025 23:31:28 +0800 Subject: [PATCH 1696/2255] Update metadata for warning references in range [C4751, C4830] --- docs/error-messages/compiler-warnings/c4768.md | 2 +- docs/error-messages/compiler-warnings/c4770.md | 2 +- .../compiler-warning-level-1-and-3-c4793.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4772.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4788.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4794.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4799.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4803.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4804.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4805.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4806.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4807.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4810.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4811.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4812.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4813.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4817.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4819.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4821.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4822.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4829.md | 5 ++--- .../compiler-warnings/compiler-warning-level-2-c4756.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4792.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4800.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4823.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4754.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4764.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4816.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4820.md | 5 ++--- 29 files changed, 55 insertions(+), 81 deletions(-) diff --git a/docs/error-messages/compiler-warnings/c4768.md b/docs/error-messages/compiler-warnings/c4768.md index 2e6da6eec85..d2338975995 100644 --- a/docs/error-messages/compiler-warnings/c4768.md +++ b/docs/error-messages/compiler-warnings/c4768.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4768" title: "Compiler Warning (level 3) C4768" +description: "Learn more about: Compiler Warning (level 3) C4768" ms.date: 05/03/2021 f1_keywords: ["C4768"] helpviewer_keywords: ["C4768"] diff --git a/docs/error-messages/compiler-warnings/c4770.md b/docs/error-messages/compiler-warnings/c4770.md index 5afbc067883..f82f6915475 100644 --- a/docs/error-messages/compiler-warnings/c4770.md +++ b/docs/error-messages/compiler-warnings/c4770.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4770" title: "Compiler Warning (level 4) C4770" +description: "Learn more about: Compiler Warning (level 4) C4770" ms.date: 11/02/2022 f1_keywords: ["C4770"] helpviewer_keywords: ["C4770"] diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-and-3-c4793.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-and-3-c4793.md index 0278f38c700..fadac33d1d3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-and-3-c4793.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-and-3-c4793.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1 and 3) C4793" title: "Compiler Warning (level 1 and 3) C4793" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1 and 3) C4793" +ms.date: 11/04/2016 f1_keywords: ["C4793"] helpviewer_keywords: ["C6634", "C6635", "C6640", "C6630", "C6639", "C6636", "C6638", "C6631", "C6637", "C4793"] -ms.assetid: 819ada53-1d9c-49b8-a629-baf8c12314e6 --- # Compiler Warning (level 1 and 3) C4793 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4772.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4772.md index 8c1671bb837..4f8fba1457b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4772.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4772.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4772" title: "Compiler Warning (level 1) C4772" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4772" +ms.date: 11/04/2016 f1_keywords: ["C4772"] helpviewer_keywords: ["C4772"] -ms.assetid: dafe6fd8-9faf-41f5-9d66-a55838742c14 --- # Compiler Warning (level 1) C4772 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4788.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4788.md index 7318f3f079a..a9c8bdd271a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4788.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4788.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (Level 1) C4788" title: "Compiler Warning (Level 1) C4788" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (Level 1) C4788" +ms.date: 11/04/2016 f1_keywords: ["C4788"] helpviewer_keywords: ["C4788"] -ms.assetid: 47d75bda-f833-4bdd-93a0-a134df0cd303 --- # Compiler Warning (Level 1) C4788 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4794.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4794.md index 5eba3349663..fec3c297b94 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4794.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4794.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4794" title: "Compiler Warning (level 1) C4794" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4794" +ms.date: 11/04/2016 f1_keywords: ["C4794"] helpviewer_keywords: ["C4794"] -ms.assetid: badc9c36-fa1a-4fec-929b-7bfda7a7b79f --- # Compiler Warning (level 1) C4794 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4799.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4799.md index 20dc701fdd5..4de2401b823 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4799.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4799.md @@ -1,7 +1,7 @@ --- title: "Compiler Warning (level 1) C4799" description: "Learn more about: Compiler Warning (level 1) C4799" -ms.date: "03/28/2025" +ms.date: 03/28/2025 f1_keywords: ["C4799"] helpviewer_keywords: ["C4799"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4803.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4803.md index f9781701761..160cd494ab1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4803.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4803.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4803" title: "Compiler Warning (level 1) C4803" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4803" +ms.date: 11/04/2016 f1_keywords: ["C4803"] helpviewer_keywords: ["C4803"] -ms.assetid: 2552f3a6-c418-49f4-98a2-a929857be658 --- # Compiler Warning (level 1) C4803 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4804.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4804.md index 48fd9ffd8e9..a8d9c239b19 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4804.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4804.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4804" title: "Compiler Warning (level 1) C4804" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4804" +ms.date: 11/04/2016 f1_keywords: ["C4804"] helpviewer_keywords: ["C4804"] -ms.assetid: 069e8f44-3ef6-43bb-8524-4116fc6eea83 --- # Compiler Warning (level 1) C4804 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4805.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4805.md index 7711dbe3e97..e85756333b8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4805.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4805.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4805" title: "Compiler Warning (level 1) C4805" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4805" +ms.date: 11/04/2016 f1_keywords: ["C4805"] helpviewer_keywords: ["C4805"] -ms.assetid: 99c7b7e2-272e-4ab5-8580-17c42e62e2ef --- # Compiler Warning (level 1) C4805 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4806.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4806.md index 4674dd22234..a86050abde4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4806.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4806.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4806" title: "Compiler Warning (level 1) C4806" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4806" +ms.date: 11/04/2016 f1_keywords: ["C4806"] helpviewer_keywords: ["C4806"] -ms.assetid: 79eb74cd-b925-4b5b-84e1-8ae6f33e38b3 --- # Compiler Warning (level 1) C4806 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4807.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4807.md index 9c6a61b659c..9696970dd32 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4807.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4807.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4807" title: "Compiler Warning (level 1) C4807" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4807" +ms.date: 11/04/2016 f1_keywords: ["C4807"] helpviewer_keywords: ["C4807"] -ms.assetid: 089c9f87-fd81-402e-9826-66a8ef1ef1fe --- # Compiler Warning (level 1) C4807 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4810.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4810.md index e047f841d5f..81d413dedb2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4810.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4810.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4810" title: "Compiler Warning (level 1) C4810" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4810" +ms.date: 11/04/2016 f1_keywords: ["C4810"] helpviewer_keywords: ["C4810"] -ms.assetid: 39e2cae0-9c1c-4ac1-aaa0-5f661d06085b --- # Compiler Warning (level 1) C4810 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4811.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4811.md index cce815a0cba..dc0f0521926 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4811.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4811.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4811" title: "Compiler Warning (level 1) C4811" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4811" +ms.date: 11/04/2016 f1_keywords: ["C4811"] helpviewer_keywords: ["C4811"] -ms.assetid: fbd79351-3dc1-45cf-b5b3-411f48c1590f --- # Compiler Warning (level 1) C4811 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4812.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4812.md index ec4b6f9f8a9..5c5d3d2394d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4812.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4812.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4812" title: "Compiler Warning (level 1) C4812" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4812" +ms.date: 11/04/2016 f1_keywords: ["C4812"] helpviewer_keywords: ["C4812"] -ms.assetid: a7f5721f-2019-44de-ad62-ed30bac8b1f3 --- # Compiler Warning (level 1) C4812 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4813.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4813.md index 94fa833ebd9..a2d30e711ae 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4813.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4813.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4813" title: "Compiler Warning (level 1) C4813" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4813" +ms.date: 11/04/2016 f1_keywords: ["C4813"] helpviewer_keywords: ["C4813"] -ms.assetid: c30bf877-ab04-4fe4-897e-8162092426f0 --- # Compiler Warning (level 1) C4813 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4817.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4817.md index 86ba5cfb487..9273163849b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4817.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4817.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4817" title: "Compiler Warning (level 1) C4817" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4817" +ms.date: 11/04/2016 f1_keywords: ["C4817"] helpviewer_keywords: ["C4817"] -ms.assetid: a68f5486-6940-4934-9f93-bfd4d71f92a9 --- # Compiler Warning (level 1) C4817 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4819.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4819.md index a08b5f304b1..a55bf43ca8c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4819.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4819.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4819" title: "Compiler Warning (level 1) C4819" -ms.date: "04/08/2019" +description: "Learn more about: Compiler Warning (level 1) C4819" +ms.date: 04/08/2019 f1_keywords: ["C4819"] helpviewer_keywords: ["C4819"] -ms.assetid: c0316e85-249c-414d-9df0-622d077c6bc2 --- # Compiler Warning (level 1) C4819 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4821.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4821.md index c92c4d56899..fbd1d0e8f17 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4821.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4821.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4821" title: "Compiler Warning (level 1) C4821" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4821" +ms.date: 11/04/2016 f1_keywords: ["C4821"] helpviewer_keywords: ["C4821"] -ms.assetid: c7768e77-0ee5-491e-8aa4-3915bf5bcbdf --- # Compiler Warning (level 1) C4821 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4822.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4822.md index 9a0904ec622..47a396a2d93 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4822.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4822.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4822" title: "Compiler Warning (level 1) C4822" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4822" +ms.date: 11/04/2016 f1_keywords: ["C4822"] helpviewer_keywords: ["C4822"] -ms.assetid: 0f231a30-2eb0-4722-aaa0-e2d19d3e7eea --- # Compiler Warning (level 1) C4822 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4829.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4829.md index 1e8c12861c4..7b3a1ffe750 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4829.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4829.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4829" title: "Compiler Warning (level 1) C4829" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4829" +ms.date: 11/04/2016 f1_keywords: ["C4829"] helpviewer_keywords: ["C4829"] -ms.assetid: 4ffabe2b-2ddc-4c52-8564-d1355c93cfa6 --- # Compiler Warning (level 1) C4829 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4756.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4756.md index e0b37b00240..1e61db8e9b8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4756.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4756.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 2) C4756" title: "Compiler Warning (level 2) C4756" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 2) C4756" +ms.date: 11/04/2016 f1_keywords: ["C4756"] helpviewer_keywords: ["C4756"] -ms.assetid: 5a16df83-6b82-4619-83bd-319af4ef1d1d --- # Compiler Warning (level 2) C4756 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4792.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4792.md index 6bf4dd59267..ab042b9b95a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4792.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4792.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4792" title: "Compiler Warning (level 3) C4792" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4792" +ms.date: 11/04/2016 f1_keywords: ["C4792"] helpviewer_keywords: ["C4792"] -ms.assetid: c047ce69-a622-44e1-9425-d41aa9261c61 --- # Compiler Warning (level 3) C4792 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4800.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4800.md index a2815e0f2cc..7d0eaddd3ac 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4800.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4800.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4800" title: "Compiler Warning (level 4) C4800" -ms.date: "03/14/2019" +description: "Learn more about: Compiler Warning (level 4) C4800" +ms.date: 03/14/2019 f1_keywords: ["C4800"] helpviewer_keywords: ["C4800"] -ms.assetid: 4f409799-a250-45ed-bb5f-657691b0d9f7 --- # Compiler Warning (level 4) C4800 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4823.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4823.md index b89ece22d76..0e5cbf011de 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4823.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4823.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4823" title: "Compiler Warning (level 3) C4823" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 3) C4823" +ms.date: 11/04/2016 f1_keywords: ["C4823"] helpviewer_keywords: ["C4823"] -ms.assetid: 8a77560d-dcea-4cae-aebb-8ebf1b4cef85 --- # Compiler Warning (level 3) C4823 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4754.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4754.md index 97c290348cc..25e27f20145 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4754.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4754.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4754" title: "Compiler Warning (level 4) C4754" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4754" +ms.date: 11/04/2016 f1_keywords: ["C4754"] helpviewer_keywords: ["C4754"] -ms.assetid: e0e4606a-754a-4f42-a274-21a34978d21d --- # Compiler Warning (level 4) C4754 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4764.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4764.md index 1a95399b6df..7886044e2ab 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4764.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4764.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4764" title: "Compiler Warning (level 4) C4764" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4764" +ms.date: 11/04/2016 f1_keywords: ["C4764"] helpviewer_keywords: ["C4764"] -ms.assetid: 7bd4296f-966b-484c-bf73-8dbc8e85b4a9 --- # Compiler Warning (level 4) C4764 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4816.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4816.md index 0ca0e6f1702..f7046a8be89 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4816.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4816.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4816" title: "Compiler Warning (level 4) C4816" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4816" +ms.date: 11/04/2016 f1_keywords: ["C4816"] helpviewer_keywords: ["C4816"] -ms.assetid: 60f730ae-d942-4db9-ab97-41d4a874d8da --- # Compiler Warning (level 4) C4816 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4820.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4820.md index c66d4c2b885..18f9f82fb36 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4820.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4820.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4820" title: "Compiler Warning (level 4) C4820" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4820" +ms.date: 11/04/2016 f1_keywords: ["C4820"] helpviewer_keywords: ["C4820"] -ms.assetid: 17aa29f4-c287-49b8-bc43-8ed82ffed5ea --- # Compiler Warning (level 4) C4820 From 5287df9e843301a5b97a76cbd98a5574b327ac52 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 3 Sep 2025 00:05:24 +0800 Subject: [PATCH 1697/2255] Add missing semicolon after `struct`/`class` definitions --- docs/data/odbc/recordset-fetching-records-in-bulk-odbc.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2698.md | 2 +- docs/sanitizers/error-new-delete-type-mismatch.md | 2 +- docs/standard-library/gslice-array-class.md | 2 +- docs/standard-library/ratio.md | 2 +- docs/standard-library/scoped-lock-class.md | 2 +- docs/standard-library/slice-array-class.md | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/data/odbc/recordset-fetching-records-in-bulk-odbc.md b/docs/data/odbc/recordset-fetching-records-in-bulk-odbc.md index bea45e7ed94..ebcb7bcf0af 100644 --- a/docs/data/odbc/recordset-fetching-records-in-bulk-odbc.md +++ b/docs/data/odbc/recordset-fetching-records-in-bulk-odbc.md @@ -74,7 +74,7 @@ public: . . . -} +}; ``` You can either allocate these storage buffers manually or have the framework do the allocation. To allocate the buffers yourself, you must specify the `CRecordset::userAllocMultiRowBuffers` option of the *dwOptions* parameter in the `Open` member function. Be sure to set the sizes of the arrays at least equal to the rowset size. If you want to have the framework do the allocation, you should initialize your pointers to NULL. This is typically done in the recordset object's constructor: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2698.md b/docs/error-messages/compiler-errors-2/compiler-error-c2698.md index 464373f1458..dbc7eef8618 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2698.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2698.md @@ -30,5 +30,5 @@ struct B { struct C : A, B { using A::x; using B::x; // C2698 -} +}; ``` diff --git a/docs/sanitizers/error-new-delete-type-mismatch.md b/docs/sanitizers/error-new-delete-type-mismatch.md index 2c19b710af7..097bc08c959 100644 --- a/docs/sanitizers/error-new-delete-type-mismatch.md +++ b/docs/sanitizers/error-new-delete-type-mismatch.md @@ -48,7 +48,7 @@ To fix the example, add: ```cpp struct Base { virtual ~Base() = default; -} +}; ``` To build and test this example, run these commands in a Visual Studio 2019 version 16.9 or later [developer command prompt](../build/building-on-the-command-line.md#developer_command_prompt_shortcuts): diff --git a/docs/standard-library/gslice-array-class.md b/docs/standard-library/gslice-array-class.md index 727afddc3f6..0e3cd70c81e 100644 --- a/docs/standard-library/gslice-array-class.md +++ b/docs/standard-library/gslice-array-class.md @@ -42,7 +42,7 @@ public: void operator>>=(const valarray& x) const; // The rest is private or implementation defined -} +}; ``` ## Remarks diff --git a/docs/standard-library/ratio.md b/docs/standard-library/ratio.md index 05922b7ff4b..b70a7fddfcf 100644 --- a/docs/standard-library/ratio.md +++ b/docs/standard-library/ratio.md @@ -24,7 +24,7 @@ struct ratio // holds the ratio of Numerator to Denominator static constexpr std::intmax_t num; static constexpr std::intmax_t den; typedef ratio type; -} +}; ``` The template `ratio` defines the static constants `num` and `den` such that `num` / `den` == Numerator / Denominator and `num` and `den` have no common factors. `num` / `den` is the value that is represented by the class template. Therefore, `type` designates the instantiation `ratio`. diff --git a/docs/standard-library/scoped-lock-class.md b/docs/standard-library/scoped-lock-class.md index 1cb8e0504b8..436a7359987 100644 --- a/docs/standard-library/scoped-lock-class.md +++ b/docs/standard-library/scoped-lock-class.md @@ -17,5 +17,5 @@ class scoped_lock { ~scoped_lock(); scoped_lock(const scoped_lock&) = delete; scoped_lock& operator=(const scoped_lock&) = delete; -} +}; ``` diff --git a/docs/standard-library/slice-array-class.md b/docs/standard-library/slice-array-class.md index 6bcfaec534d..385f84bdbfc 100644 --- a/docs/standard-library/slice-array-class.md +++ b/docs/standard-library/slice-array-class.md @@ -30,7 +30,7 @@ public: void operator<<=(const valarray& x) const; void operator>>=(const valarray& x) const; // The rest is private or implementation defined -} +}; ``` ## Remarks From 08147a0b3c6fde2e948224a21f02ba1bddbd6a20 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 3 Sep 2025 00:06:35 +0800 Subject: [PATCH 1698/2255] Update metadata in 5 topics --- docs/data/odbc/recordset-fetching-records-in-bulk-odbc.md | 5 ++--- docs/standard-library/gslice-array-class.md | 3 +-- docs/standard-library/ratio.md | 5 ++--- docs/standard-library/scoped-lock-class.md | 4 ++-- docs/standard-library/slice-array-class.md | 3 +-- 5 files changed, 8 insertions(+), 12 deletions(-) diff --git a/docs/data/odbc/recordset-fetching-records-in-bulk-odbc.md b/docs/data/odbc/recordset-fetching-records-in-bulk-odbc.md index ebcb7bcf0af..83ad1f4bc73 100644 --- a/docs/data/odbc/recordset-fetching-records-in-bulk-odbc.md +++ b/docs/data/odbc/recordset-fetching-records-in-bulk-odbc.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Recordset: Fetching Records in Bulk (ODBC)" title: "Recordset: Fetching Records in Bulk (ODBC)" -ms.date: "11/04/2016" +description: "Learn more about: Recordset: Fetching Records in Bulk (ODBC)" +ms.date: 11/04/2016 helpviewer_keywords: ["bulk row fetching, implementing", "ODBC recordsets, bulk row fetching", "bulk record field exchange", "bulk row fetching", "bulk RFX functions", "recordsets, bulk row fetching", "DoBulkFieldExchange method", "fetching ODBC records in bulk", "RFX (ODBC), bulk", "rowsets, bulk row fetching", "RFX (ODBC), bulk row fetching"] -ms.assetid: 20d10fe9-c58a-414a-b675-cdf9aa283e4f --- # Recordset: Fetching Records in Bulk (ODBC) diff --git a/docs/standard-library/gslice-array-class.md b/docs/standard-library/gslice-array-class.md index 0e3cd70c81e..22e90f11d0b 100644 --- a/docs/standard-library/gslice-array-class.md +++ b/docs/standard-library/gslice-array-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: gslice_array class" title: "gslice_array class" +description: "Learn more about: gslice_array class" ms.date: 01/12/2022 f1_keywords: ["valarray/std::gslice_array"] helpviewer_keywords: ["gslice_array class"] -ms.assetid: ad1b4514-b14a-4baf-a293-d5a8e8674c75 --- # `gslice_array` class diff --git a/docs/standard-library/ratio.md b/docs/standard-library/ratio.md index b70a7fddfcf..1df9000050b 100644 --- a/docs/standard-library/ratio.md +++ b/docs/standard-library/ratio.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: " title: "" -ms.date: "11/04/2016" +description: "Learn more about: " +ms.date: 11/04/2016 f1_keywords: ["", "ratio/std::mega", "ratio/std::peta", "ratio/std::ratio_greater", "ratio/std::micro", "ratio/std::ratio_add", "ratio/std::ratio_not_equal", "ratio/std::hecto", "ratio/std::nano", "ratio/std::ratio_less_equal", "ratio/std::ratio_less", "ratio/std::centi", "ratio/std::ratio_greater_equal", "ratio/std::ratio_subtract", "ratio/std::atto", "ratio/std::tera", "ratio/std::milli", "ratio/std::ratio_multiply", "ratio/std::kilo", "ratio/std::ratio_divide", "ratio/std::giga", "ratio/std::pico", "ratio/std::femto", "ratio/std::ratio_equal", "ratio/std::ratio", "ratio/std::exa", "ratio/std::deci", "ratio/std::deca"] -ms.assetid: 8543e912-2d84-45ea-b3c0-bd7bfacee405 --- # `` diff --git a/docs/standard-library/scoped-lock-class.md b/docs/standard-library/scoped-lock-class.md index 436a7359987..42b35183393 100644 --- a/docs/standard-library/scoped-lock-class.md +++ b/docs/standard-library/scoped-lock-class.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: scoped_lock Class" title: "scoped_lock Class" -ms.date: "11/04/2016" +description: "Learn more about: scoped_lock Class" +ms.date: 11/04/2016 f1_keywords: ["mutex/std::scoped_lock"] --- # scoped_lock Class diff --git a/docs/standard-library/slice-array-class.md b/docs/standard-library/slice-array-class.md index 385f84bdbfc..f8520ffb2b5 100644 --- a/docs/standard-library/slice-array-class.md +++ b/docs/standard-library/slice-array-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: slice_array class" title: "slice_array class" +description: "Learn more about: slice_array class" ms.date: 01/12/2022 f1_keywords: ["valarray/std::slice_array"] helpviewer_keywords: ["slice_array class"] -ms.assetid: a182d5f7-f35c-4e76-86f2-b5ac64ddc846 --- # `slice_array` class From ebfa74bbf2ff4a9d19b7e8ea29ea94b8a31eb92c Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 3 Sep 2025 22:33:35 +0800 Subject: [PATCH 1699/2255] Add blockquotes for warning messages in range [C4831, C4940] --- docs/error-messages/compiler-warnings/compiler-warning-c4867.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4835.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4838.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4900.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4905.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4906.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4910.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4912.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4917.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4920.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4925.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4926.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4927.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4928.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4929.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4930.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4935.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4939.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4913.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4918.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4937.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4938.md | 2 +- 22 files changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4867.md b/docs/error-messages/compiler-warnings/compiler-warning-c4867.md index 2d3ddc1217c..7f2f8443b43 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4867.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4867.md @@ -8,7 +8,7 @@ ms.assetid: 8a257d70-c3a7-462d-b285-e57c952a8bf7 --- # Compiler Warning C4867 -'function': function call missing argument list; use 'call' to create a pointer to member +> 'function': function call missing argument list; use 'call' to create a pointer to member A pointer to member function was initialized incorrectly. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4835.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4835.md index 220089e424e..b3afb357344 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4835.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4835.md @@ -8,7 +8,7 @@ ms.assetid: d2e44c62-7b0e-4a45-943d-97903e27ed9d --- # Compiler Warning (level 1) C4835 -'variable' : the initializer for exported data will not be run until managed code is first executed in the host assembly +> 'variable' : the initializer for exported data will not be run until managed code is first executed in the host assembly When accessing data between managed components, it is recommended that you not use native C++ import and export mechanisms. Instead, declare your data members inside a managed type and reference the metadata with `#using` in the client. For more information, see [#using Directive](../../preprocessor/hash-using-directive-cpp.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4838.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4838.md index 0c5faf751c8..66ac24dc278 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4838.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4838.md @@ -8,7 +8,7 @@ ms.assetid: fea07924-5feb-4ed4-99b5-1a8c41d28db6 --- # Compiler Warning (level 1) C4838 -conversion from 'type_1' to 'type_2' requires a narrowing conversion +> conversion from 'type_1' to 'type_2' requires a narrowing conversion An implicit narrowing conversion was found when using aggregate or list initialization. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4900.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4900.md index 7ab98d4f470..3c7c1930148 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4900.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4900.md @@ -8,6 +8,6 @@ ms.assetid: 826997ec-0803-4794-ad35-bb463f679658 --- # Compiler Warning (level 1) C4900 -intermediate language mismatch between 'tool1' version 'version1' and 'tool2' version 'version2' +> intermediate language mismatch between 'tool1' version 'version1' and 'tool2' version 'version2' The intermediate language used in *tool1* and *tool2* did not match. Check that the most current version of each tool has been installed. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4905.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4905.md index c8dd24cadec..6b7f1d0637a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4905.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4905.md @@ -8,7 +8,7 @@ ms.assetid: 40240bf4-b14e-4c22-aeb2-52f2851532f6 --- # Compiler Warning (level 1) C4905 -wide string literal cast to 'LPSTR' +> wide string literal cast to 'LPSTR' The compiler detected an unsafe cast. The cast did succeed, but you should use a conversion routine. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4906.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4906.md index 395fe28c5d5..cc9ec4ece27 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4906.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4906.md @@ -8,7 +8,7 @@ ms.assetid: 05318e74-799b-412a-9dce-f02b8161d762 --- # Compiler Warning (level 1) C4906 -string literal cast to 'LPWSTR' +> string literal cast to 'LPWSTR' The compiler detected an unsafe cast. The cast did succeed, but you should use a conversion routine. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4910.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4910.md index b923b43d27e..5fdd2128b83 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4910.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4910.md @@ -8,7 +8,7 @@ ms.assetid: 67963560-fbca-4ca7-93db-06beaf7055f0 --- # Compiler Warning (level 1) C4910 -'\' : '__declspec(dllexport)' and 'extern' are incompatible on an explicit instantiation +> '\' : '__declspec(dllexport)' and 'extern' are incompatible on an explicit instantiation The explicit template instantiation named *\* is modified by both the `__declspec(dllexport)` and **`extern`** keywords. However, these keywords are mutually exclusive. The `__declspec(dllexport)` keyword means instantiate the template class, while the **`extern`** keyword means do not automatically instantiate the template class. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4912.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4912.md index fbaf6ce0afc..91aeef58787 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4912.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4912.md @@ -8,7 +8,7 @@ ms.assetid: ba1f1a66-8c20-4792-9ac8-43e49f729ae2 --- # Compiler Warning (level 1) C4912 -'attribute': attribute has undefined behavior on a nested UDT +> 'attribute': attribute has undefined behavior on a nested UDT Attributes that apply to nested UDTs (user-defined type, which could be a typedef, union, or struct) may be ignored. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4917.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4917.md index e0be915a7cf..78832b435dc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4917.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4917.md @@ -8,7 +8,7 @@ ms.assetid: c05e2610-4a5d-4f4b-a99b-c15fd7f1d5f1 --- # Compiler Warning (level 1) C4917 -'declarator' : a GUID can only be associated with a class, interface or namespace +> 'declarator' : a GUID can only be associated with a class, interface or namespace A user-defined structure other than [class](../../cpp/class-cpp.md), [interface](../../cpp/interface.md), or [namespace](../../cpp/namespaces-cpp.md) cannot have a GUID. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4920.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4920.md index dc1fc90aba8..4df78b82747 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4920.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4920.md @@ -8,7 +8,7 @@ ms.assetid: 1e501f2e-93c1-4d27-a4fa-54fc86271ae7 --- # Compiler Warning (level 1) C4920 -enum enum member member=value already seen in enum enum as member=value +> enum enum member member=value already seen in enum enum as member=value If a .tlb that you pass to #import has the same symbol defined in two or more enums, this warning indicates that subsequent identical symbols are ignored and will be commented out in the .tlh file. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4925.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4925.md index fefc0eea093..b3a9a0848c1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4925.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4925.md @@ -8,7 +8,7 @@ ms.assetid: a4b206c0-016a-4f28-873a-bb8bb41bad50 --- # Compiler Warning (level 1) C4925 -'method': dispinterface method cannot be called from script +> 'method': dispinterface method cannot be called from script Scripting languages cannot create a VT_BYREF 'in' parameter, it can only create VT_BYREF 'out' parameters. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4926.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4926.md index e1b980f6b58..6b9b474675a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4926.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4926.md @@ -8,7 +8,7 @@ ms.assetid: 5717fce0-146f-4ef2-bde0-e9a01c0922d1 --- # Compiler Warning (level 1) C4926 -'identifier': symbol is already defined: attributes ignored +> 'identifier': symbol is already defined: attributes ignored A forward declaration was found but an attributed construct with the same name already exists. The attributes for the forward declaration are ignored. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4927.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4927.md index 1edc84ab0e3..166093eb863 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4927.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4927.md @@ -8,7 +8,7 @@ ms.assetid: 7009e740-a2ef-4130-96ba-482e092f717a --- # Compiler Warning (level 1) C4927 -illegal conversion; more than one user-defined conversion has been implicitly applied +> illegal conversion; more than one user-defined conversion has been implicitly applied More than one user-defined conversion is implicitly applied to a single value -- the compiler did not find an explicit conversion but did find a conversion, which it used. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4928.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4928.md index 2842251ec40..057e38cdf75 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4928.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4928.md @@ -8,7 +8,7 @@ ms.assetid: 77235d7f-9360-45cb-8348-d148c605c4a3 --- # Compiler Warning (level 1) C4928 -illegal copy-initialization; more than one user-defined conversion has been implicitly applied +> illegal copy-initialization; more than one user-defined conversion has been implicitly applied More than one user-defined conversion routine was found. The compiler executed the code in all such routines. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4929.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4929.md index 96e3168e904..58cf0371291 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4929.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4929.md @@ -8,7 +8,7 @@ ms.assetid: 95f8ab4f-4468-4caa-acd5-8f4592f03b3c --- # Compiler Warning (level 1) C4929 -'file': typelibrary contains a union; ignoring the 'embedded_idl' qualifier +> 'file': typelibrary contains a union; ignoring the 'embedded_idl' qualifier The embedded_idl attribute of [#import](../../preprocessor/hash-import-directive-cpp.md) could not be applied to the type library because a union is present in the type library. To resolve this warning, don't use embedded_idl. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4930.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4930.md index 7d708e9b826..d31fba734b4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4930.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4930.md @@ -8,7 +8,7 @@ ms.assetid: 89a206c9-c536-4186-8e81-1cde3e7f4f5b --- # Compiler Warning (level 1) C4930 -'prototype': prototyped function not called (was a variable definition intended?) +> 'prototype': prototyped function not called (was a variable definition intended?) The compiler detected an unused function prototype. If the prototype was intended as a variable declaration, remove the open/close parentheses. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4935.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4935.md index 09fadd7e4d9..569955ce026 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4935.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4935.md @@ -8,7 +8,7 @@ ms.assetid: a36c56d3-571a-44dd-bb0f-bcc6b020e134 --- # Compiler Warning (level 1) C4935 -assembly access specifier modified from 'access' +> assembly access specifier modified from 'access' The assembly visibility of a type was modified. The compiler uses the last specifier that it encounters. For example, the assembly visibility of a forward declaration may be different from the assembly visibility of the class definition. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4939.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4939.md index 97fffd379e0..1e11d9cedab 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4939.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4939.md @@ -8,7 +8,7 @@ ms.assetid: 07096008-ba47-436c-a84c-2b03ad90d0b3 --- # Compiler Warning (level 1) C4939 -\#pragma vtordisp is deprecated and will be removed in a future release of Visual C++ +> #pragma vtordisp is deprecated and will be removed in a future release of Visual C++ The [vtordisp](../../preprocessor/vtordisp.md) pragma will be removed in a future release of Visual C++. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4913.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4913.md index 4c7e6651a22..4faed32e0dd 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4913.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4913.md @@ -8,7 +8,7 @@ ms.assetid: b94aa52e-6029-4170-9134-017714931546 --- # Compiler Warning (level 4) C4913 -**user defined binary operator ',' exists but no overload could convert all operands, default built-in binary operator ',' used** +> user defined binary operator ',' exists but no overload could convert all operands, default built-in binary operator ',' used A call to the built-in comma operator occurred in a program that also had an overloaded comma operator; a conversion that you thought may have occurred did not. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4918.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4918.md index 1954636c04d..179dfc3b515 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4918.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4918.md @@ -8,7 +8,7 @@ ms.assetid: 1bcf6d35-3467-4aa8-b2ef-cb33f4e70238 --- # Compiler Warning (level 4) C4918 -'character' : invalid character in pragma optimization list +> 'character' : invalid character in pragma optimization list An unknown character was found in the optimization list of an [optimize](../../preprocessor/optimize.md) pragma statement. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4937.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4937.md index f6f28b3469d..3454d9d611d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4937.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4937.md @@ -8,7 +8,7 @@ ms.assetid: 2bb9f0e7-bbd6-4697-84de-95955e32ae29 --- # Compiler Warning (level 4) C4937 -'text1' and 'text2' are indistinguishable as arguments to 'directive' +> 'text1' and 'text2' are indistinguishable as arguments to 'directive' Because of the way the compiler processes arguments to directives, names that have meaning to the compiler, such as keywords with multiple text representations (single and double underscore forms), cannot be distinguished. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4938.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4938.md index 86361dc2f44..79e3c81c756 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4938.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4938.md @@ -8,7 +8,7 @@ ms.assetid: 6acac81a-9d23-465e-b700-ed4b6e8edcd0 --- # Compiler Warning (level 4) C4938 -'var' : Floating point reduction variable may cause inconsistent results under /fp:strict or #pragma fenv_access +> 'var' : Floating point reduction variable may cause inconsistent results under /fp:strict or #pragma fenv_access You should not use [/fp:strict](../../build/reference/fp-specify-floating-point-behavior.md) or [fenv_access](../../preprocessor/fenv-access.md) with OpenMP floating-point reductions, because the sum is computed in a different order. Thus, results can differ from the results without /openmp. From 14e0b60dc29beac570708cdcbc5a8cce935f6bd5 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 3 Sep 2025 22:40:46 +0800 Subject: [PATCH 1700/2255] Add "Remarks" and "Example" headings for warning references in range [C4831, C4940] --- .../compiler-warnings/compiler-warning-c4867.md | 2 ++ .../compiler-warnings/compiler-warning-c4868.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4835.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4838.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4900.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4905.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4906.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4910.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4912.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4917.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4920.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4925.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4926.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4927.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4928.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4929.md | 4 +++- .../compiler-warnings/compiler-warning-level-1-c4930.md | 4 ++++ .../compiler-warnings/compiler-warning-level-1-c4935.md | 2 ++ .../compiler-warnings/compiler-warning-level-1-c4939.md | 2 ++ .../compiler-warnings/compiler-warning-level-3-c4839.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4913.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4918.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4931.md | 2 ++ .../compiler-warnings/compiler-warning-level-4-c4932.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4937.md | 4 ++++ .../compiler-warnings/compiler-warning-level-4-c4938.md | 4 ++++ 26 files changed, 79 insertions(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4867.md b/docs/error-messages/compiler-warnings/compiler-warning-c4867.md index 7f2f8443b43..0b8ea6ea24b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4867.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4867.md @@ -10,6 +10,8 @@ ms.assetid: 8a257d70-c3a7-462d-b285-e57c952a8bf7 > 'function': function call missing argument list; use 'call' to create a pointer to member +## Remarks + A pointer to member function was initialized incorrectly. This warning can be generated as a result of compiler conformance work that was done for Visual Studio 2005: enhanced pointer-to-member conformance. Code that compiled prior to Visual Studio 2005 will now generate C4867. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4868.md b/docs/error-messages/compiler-warnings/compiler-warning-c4868.md index 8857a084f10..fd3b6d4cdb6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4868.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4868.md @@ -10,6 +10,8 @@ ms.assetid: fc6aa7e5-34dd-4ec2-88bd-16e430361dc7 > '_file_(*line_number*)' compiler may not enforce left-to-right evaluation order in braced initializer list +## Remarks + The elements of a braced initializer list are to be evaluated in left-to-right order. There are two cases in which the compiler is unable to guarantee this order: the first is when some of the elements are objects passed by value; the second is when compiling with `/clr` and some of the elements are fields of objects or are array elements. When the compiler can't guarantee left-to-right evaluation it emits warning C4868. This warning can be generated as a result of compiler conformance work that was done for Visual Studio 2015 Update 2. Code that compiled prior to Visual Studio 2015 Update 2 can now generate C4868. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4835.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4835.md index b3afb357344..2db18b82868 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4835.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4835.md @@ -10,6 +10,8 @@ ms.assetid: d2e44c62-7b0e-4a45-943d-97903e27ed9d > 'variable' : the initializer for exported data will not be run until managed code is first executed in the host assembly +## Remarks + When accessing data between managed components, it is recommended that you not use native C++ import and export mechanisms. Instead, declare your data members inside a managed type and reference the metadata with `#using` in the client. For more information, see [#using Directive](../../preprocessor/hash-using-directive-cpp.md). ## Examples diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4838.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4838.md index 66ac24dc278..19b394f9f46 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4838.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4838.md @@ -10,12 +10,16 @@ ms.assetid: fea07924-5feb-4ed4-99b5-1a8c41d28db6 > conversion from 'type_1' to 'type_2' requires a narrowing conversion +## Remarks + An implicit narrowing conversion was found when using aggregate or list initialization. The C language allows implicit narrowing conversions in assignments and initialization, and C++ follows suit, even though unexpected narrowing is a cause of many code errors. To make code safer, the C++ standard requires a diagnostic message when a narrowing conversion occurs in an initialization list. In Visual C++, the diagnostic is [Compiler Error C2397](../../error-messages/compiler-errors-1/compiler-error-c2397.md) when using the uniform initialization syntax supported beginning in Visual Studio 2015. The compiler generates warning C4838 when using the list or aggregate initialization syntax supported by Visual Studio 2013. A narrowing conversion can be okay when you know the possible range of converted values can fit in the target. In this case, you know more than the compiler does. If you make a narrowing conversion intentionally, make your intentions explicit by using a static cast. Otherwise, this warning message almost always indicates that you have a bug in your code. You can fix it by making sure the objects you initialize have types that are large enough to handle the inputs. +## Example + The following sample generates C4838 and shows one way to fix it: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4900.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4900.md index 3c7c1930148..56a59d00efe 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4900.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4900.md @@ -10,4 +10,6 @@ ms.assetid: 826997ec-0803-4794-ad35-bb463f679658 > intermediate language mismatch between 'tool1' version 'version1' and 'tool2' version 'version2' +## Remarks + The intermediate language used in *tool1* and *tool2* did not match. Check that the most current version of each tool has been installed. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4905.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4905.md index 6b7f1d0637a..9a1ba2135ec 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4905.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4905.md @@ -10,6 +10,8 @@ ms.assetid: 40240bf4-b14e-4c22-aeb2-52f2851532f6 > wide string literal cast to 'LPSTR' +## Remarks + The compiler detected an unsafe cast. The cast did succeed, but you should use a conversion routine. This warning is off by default. See [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md) for more information. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4906.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4906.md index cc9ec4ece27..a56a77722a6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4906.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4906.md @@ -10,6 +10,8 @@ ms.assetid: 05318e74-799b-412a-9dce-f02b8161d762 > string literal cast to 'LPWSTR' +## Remarks + The compiler detected an unsafe cast. The cast did succeed, but you should use a conversion routine. This warning is off by default. See [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md) for more information. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4910.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4910.md index 5fdd2128b83..65f5bef7f26 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4910.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4910.md @@ -10,6 +10,8 @@ ms.assetid: 67963560-fbca-4ca7-93db-06beaf7055f0 > '\' : '__declspec(dllexport)' and 'extern' are incompatible on an explicit instantiation +## Remarks + The explicit template instantiation named *\* is modified by both the `__declspec(dllexport)` and **`extern`** keywords. However, these keywords are mutually exclusive. The `__declspec(dllexport)` keyword means instantiate the template class, while the **`extern`** keyword means do not automatically instantiate the template class. ## See also diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4912.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4912.md index 91aeef58787..f05c737356a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4912.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4912.md @@ -10,8 +10,12 @@ ms.assetid: ba1f1a66-8c20-4792-9ac8-43e49f729ae2 > 'attribute': attribute has undefined behavior on a nested UDT +## Remarks + Attributes that apply to nested UDTs (user-defined type, which could be a typedef, union, or struct) may be ignored. +## Example + The following code shows how this warning would be generated: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4917.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4917.md index 78832b435dc..3f6010a2a7f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4917.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4917.md @@ -10,6 +10,8 @@ ms.assetid: c05e2610-4a5d-4f4b-a99b-c15fd7f1d5f1 > 'declarator' : a GUID can only be associated with a class, interface or namespace +## Remarks + A user-defined structure other than [class](../../cpp/class-cpp.md), [interface](../../cpp/interface.md), or [namespace](../../cpp/namespaces-cpp.md) cannot have a GUID. This warning is off by default. See [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md) for more information. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4920.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4920.md index 4df78b82747..c4810e098e3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4920.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4920.md @@ -10,8 +10,12 @@ ms.assetid: 1e501f2e-93c1-4d27-a4fa-54fc86271ae7 > enum enum member member=value already seen in enum enum as member=value +## Remarks + If a .tlb that you pass to #import has the same symbol defined in two or more enums, this warning indicates that subsequent identical symbols are ignored and will be commented out in the .tlh file. +## Example + Assuming a .tlb that contains: ``` diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4925.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4925.md index b3a9a0848c1..189c703a85c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4925.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4925.md @@ -10,10 +10,14 @@ ms.assetid: a4b206c0-016a-4f28-873a-bb8bb41bad50 > 'method': dispinterface method cannot be called from script +## Remarks + Scripting languages cannot create a VT_BYREF 'in' parameter, it can only create VT_BYREF 'out' parameters. Another way to resolve this warning is not make the parameter (in the definition and implementation) a pointer type. +## Example + The following sample generates C4925: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4926.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4926.md index 6b9b474675a..7d3af66acf1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4926.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4926.md @@ -10,8 +10,12 @@ ms.assetid: 5717fce0-146f-4ef2-bde0-e9a01c0922d1 > 'identifier': symbol is already defined: attributes ignored +## Remarks + A forward declaration was found but an attributed construct with the same name already exists. The attributes for the forward declaration are ignored. +## Example + The following sample generates C4926: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4927.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4927.md index 166093eb863..befcfdbf86a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4927.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4927.md @@ -10,8 +10,12 @@ ms.assetid: 7009e740-a2ef-4130-96ba-482e092f717a > illegal conversion; more than one user-defined conversion has been implicitly applied +## Remarks + More than one user-defined conversion is implicitly applied to a single value -- the compiler did not find an explicit conversion but did find a conversion, which it used. +## Example + The following sample generates C4927: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4928.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4928.md index 057e38cdf75..97f975333e8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4928.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4928.md @@ -10,10 +10,14 @@ ms.assetid: 77235d7f-9360-45cb-8348-d148c605c4a3 > illegal copy-initialization; more than one user-defined conversion has been implicitly applied +## Remarks + More than one user-defined conversion routine was found. The compiler executed the code in all such routines. This warning is off by default. See [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md) for more information. +## Example + The following sample generates C4928: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4929.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4929.md index 58cf0371291..762b8aacf74 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4929.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4929.md @@ -10,9 +10,11 @@ ms.assetid: 95f8ab4f-4468-4caa-acd5-8f4592f03b3c > 'file': typelibrary contains a union; ignoring the 'embedded_idl' qualifier +## Remarks + The embedded_idl attribute of [#import](../../preprocessor/hash-import-directive-cpp.md) could not be applied to the type library because a union is present in the type library. To resolve this warning, don't use embedded_idl. -## Examples +## Example The following sample defines a component. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4930.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4930.md index d31fba734b4..aba3ef6d51c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4930.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4930.md @@ -10,8 +10,12 @@ ms.assetid: 89a206c9-c536-4186-8e81-1cde3e7f4f5b > 'prototype': prototyped function not called (was a variable definition intended?) +## Remarks + The compiler detected an unused function prototype. If the prototype was intended as a variable declaration, remove the open/close parentheses. +## Examples + The following sample generates C4930: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4935.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4935.md index 569955ce026..94b8359ac57 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4935.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4935.md @@ -10,6 +10,8 @@ ms.assetid: a36c56d3-571a-44dd-bb0f-bcc6b020e134 > assembly access specifier modified from 'access' +## Remarks + The assembly visibility of a type was modified. The compiler uses the last specifier that it encounters. For example, the assembly visibility of a forward declaration may be different from the assembly visibility of the class definition. C4935 is only reachable using the obsolete compiler option **/clr:oldSyntax**. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4939.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4939.md index 1e11d9cedab..5f4861e1b29 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4939.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4939.md @@ -10,6 +10,8 @@ ms.assetid: 07096008-ba47-436c-a84c-2b03ad90d0b3 > #pragma vtordisp is deprecated and will be removed in a future release of Visual C++ +## Remarks + The [vtordisp](../../preprocessor/vtordisp.md) pragma will be removed in a future release of Visual C++. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4839.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4839.md index 93f5ae72111..b747bed4706 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4839.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4839.md @@ -10,6 +10,8 @@ ms.assetid: f4f99066-9258-4330-81a8-f4a75a1d95ee > non-standard use of class '*type*' as an argument to a variadic function +## Remarks + Classes or structs that are passed to a variadic function such as `printf` must be trivially copyable. When passing such objects, the compiler simply makes a bitwise copy and does not call the constructor or destructor. This warning is available beginning in Visual Studio 2017. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4913.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4913.md index 4faed32e0dd..013124d7ed2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4913.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4913.md @@ -10,8 +10,12 @@ ms.assetid: b94aa52e-6029-4170-9134-017714931546 > user defined binary operator ',' exists but no overload could convert all operands, default built-in binary operator ',' used +## Remarks + A call to the built-in comma operator occurred in a program that also had an overloaded comma operator; a conversion that you thought may have occurred did not. +## Example + The following code sample generates C4913: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4918.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4918.md index 179dfc3b515..a68e1a728b0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4918.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4918.md @@ -10,8 +10,12 @@ ms.assetid: 1bcf6d35-3467-4aa8-b2ef-cb33f4e70238 > 'character' : invalid character in pragma optimization list +## Remarks + An unknown character was found in the optimization list of an [optimize](../../preprocessor/optimize.md) pragma statement. +## Example + For example, the following statement generates C4918: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4931.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4931.md index a6312926814..5d6cd63bec0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4931.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4931.md @@ -10,6 +10,8 @@ ms.assetid: cfbf08c7-94e4-4a91-a691-479d1dbe527a > we are assuming the type library was built for *number*-bit pointers +## Remarks + Explicit information was not supplied with the **ptrsize** attribute of the [#import](../../preprocessor/hash-import-directive-cpp.md) directive; the compiler concluded that pointer size of the type library is *number*. This warning is off by default. See [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md) for more information. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4932.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4932.md index 873855d305f..554852afef4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4932.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4932.md @@ -10,8 +10,12 @@ ms.assetid: 0b8d88cc-21f6-45cb-a9f5-1795b7db0dfa > `__identifier(identifier_1)` and `__identifier(identifier_2)` are indistinguishable +## Remarks + The compiler is unable to distinguish between **`_finally`** and **`__finally`** or **`__try`** and **`_try`** as a parameter passed to [`__identifier`](../../extensions/identifier-cpp-cli.md). You should not attempt to use them both as identifiers in the same program, as it will result in a [C2374](../../error-messages/compiler-errors-1/compiler-error-c2374.md) error. +## Example + The following sample generates C4932: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4937.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4937.md index 3454d9d611d..7adac3e241d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4937.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4937.md @@ -10,10 +10,14 @@ ms.assetid: 2bb9f0e7-bbd6-4697-84de-95955e32ae29 > 'text1' and 'text2' are indistinguishable as arguments to 'directive' +## Remarks + Because of the way the compiler processes arguments to directives, names that have meaning to the compiler, such as keywords with multiple text representations (single and double underscore forms), cannot be distinguished. Examples of such strings are __cdecl and \__forceinline. Note, under /Za, only the double underscore forms are enabled. +## Example + The following sample generates C4937: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4938.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4938.md index 79e3c81c756..7cbb57204d0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4938.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4938.md @@ -10,8 +10,12 @@ ms.assetid: 6acac81a-9d23-465e-b700-ed4b6e8edcd0 > 'var' : Floating point reduction variable may cause inconsistent results under /fp:strict or #pragma fenv_access +## Remarks + You should not use [/fp:strict](../../build/reference/fp-specify-floating-point-behavior.md) or [fenv_access](../../preprocessor/fenv-access.md) with OpenMP floating-point reductions, because the sum is computed in a different order. Thus, results can differ from the results without /openmp. +## Example + The following sample generates C4938: ```cpp From 61b3cee7a9054704246c9d203bd309ed1ca573b8 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 3 Sep 2025 22:43:06 +0800 Subject: [PATCH 1701/2255] Replace term "sample" with "example" for warning references in range [C4831, C4940] --- docs/error-messages/compiler-warnings/c4834.md | 2 +- docs/error-messages/compiler-warnings/c4843.md | 2 +- docs/error-messages/compiler-warnings/c4866.md | 4 ++-- .../compiler-warnings/compiler-warning-c4867.md | 2 +- .../compiler-warnings/compiler-warning-c4868.md | 4 ++-- .../compiler-warnings/compiler-warning-c4936.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4835.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4838.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4905.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4906.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4917.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4920.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4925.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4926.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4927.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4928.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4929.md | 4 ++-- .../compiler-warnings/compiler-warning-level-1-c4930.md | 6 +++--- .../compiler-warnings/compiler-warning-level-1-c4939.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4839.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4840.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4913.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4932.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4937.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4938.md | 2 +- 25 files changed, 31 insertions(+), 31 deletions(-) diff --git a/docs/error-messages/compiler-warnings/c4834.md b/docs/error-messages/compiler-warnings/c4834.md index 62746b0fce4..aca33a0eb14 100644 --- a/docs/error-messages/compiler-warnings/c4834.md +++ b/docs/error-messages/compiler-warnings/c4834.md @@ -30,7 +30,7 @@ To turn off the warning for an entire project in the Visual Studio IDE: ## Example -This sample generates C4834, and shows four ways to fix it: +This example generates C4834, and shows four ways to fix it: ```cpp // C4834.cpp diff --git a/docs/error-messages/compiler-warnings/c4843.md b/docs/error-messages/compiler-warnings/c4843.md index f867eaa11b6..34fe3329bac 100644 --- a/docs/error-messages/compiler-warnings/c4843.md +++ b/docs/error-messages/compiler-warnings/c4843.md @@ -17,7 +17,7 @@ This warning is new in Visual Studio 2017 version 15.5. For information on how t ## Example -This sample shows several **`catch`** statements that cause C4843: +This example shows several **`catch`** statements that cause C4843: ```cpp // C4843_warning.cpp diff --git a/docs/error-messages/compiler-warnings/c4866.md b/docs/error-messages/compiler-warnings/c4866.md index 66c73becda2..36dba1e4867 100644 --- a/docs/error-messages/compiler-warnings/c4866.md +++ b/docs/error-messages/compiler-warnings/c4866.md @@ -25,11 +25,11 @@ This warning was introduced in Visual Studio 2017 version 15.9 as a result of co To resolve this warning, first consider whether left-to-right evaluation of the operator elements is necessary, such as when evaluation of the elements might produce order-dependent side-effects. In many cases, the order in which elements are evaluated does not have an observable effect. -If the order of evaluation must be left-to-right, consider whether you can pass the elements by **`const`** reference instead. This change eliminates the warning in the following code sample. +If the order of evaluation must be left-to-right, consider whether you can pass the elements by **`const`** reference instead. This change eliminates the warning in the following code example. ## Example -This sample generates C4866, and shows a way to fix it: +This example generates C4866, and shows a way to fix it: ```cpp // C4866.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4867.md b/docs/error-messages/compiler-warnings/compiler-warning-c4867.md index 0b8ea6ea24b..89a191c1361 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4867.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4867.md @@ -20,7 +20,7 @@ This warning is always issued as an error. Use the [warning](../../preprocessor/ ## Example -The following sample generates C4867. +The following example generates C4867. ```cpp // C4867.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4868.md b/docs/error-messages/compiler-warnings/compiler-warning-c4868.md index fd3b6d4cdb6..f371c961f45 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4868.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4868.md @@ -20,11 +20,11 @@ This warning is off by default. Use `/Wall` to activate this warning. To resolve this warning, first consider whether left-to-right evaluation of the initializer list elements is necessary, such as when evaluation of the elements might produce order-dependent side-effects. In many cases, the order in which elements are evaluated does not have an observable effect. -If the order of evaluation must be left-to-right, consider if it's possible to pass the elements by **`const`** reference instead. A change such as this eliminates the warning in the following code sample. +If the order of evaluation must be left-to-right, consider if it's possible to pass the elements by **`const`** reference instead. A change such as this eliminates the warning in the following code example. ## Example -This sample generates C4868, and shows a way to fix it: +This example generates C4868, and shows a way to fix it: ```cpp // C4868.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4936.md b/docs/error-messages/compiler-warnings/compiler-warning-c4936.md index bd5d2d26f79..dedc93eda39 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4936.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4936.md @@ -22,7 +22,7 @@ C4936 is always issued as an error. You can disable C4936 with the [warning](.. ## Example -The following sample generates C4936: +The following example generates C4936: ```cpp // C4936.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4835.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4835.md index 2db18b82868..c78fce7be72 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4835.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4835.md @@ -16,7 +16,7 @@ When accessing data between managed components, it is recommended that you not u ## Examples -The following sample generates C4835. +The following example generates C4835. ```cpp // C4835.cpp @@ -28,7 +28,7 @@ __declspec(dllexport) int m = f(); // C4835 __declspec(dllexport) int *p = &n; // C4835 ``` -The following sample consumes the component built in the previous sample, showing that the value of the variables is not as expected. +The following example consumes the component built in the previous example, showing that the value of the variables is not as expected. ```cpp // C4835_b.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4838.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4838.md index 19b394f9f46..64628e86b20 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4838.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4838.md @@ -20,7 +20,7 @@ A narrowing conversion can be okay when you know the possible range of converted ## Example -The following sample generates C4838 and shows one way to fix it: +The following example generates C4838 and shows one way to fix it: ```cpp // C4838.cpp -- C++ narrowing conversion diagnostics diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4905.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4905.md index 9a1ba2135ec..8e12058e449 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4905.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4905.md @@ -18,7 +18,7 @@ This warning is off by default. See [Compiler Warnings That Are Off by Default]( ## Example -The following sample generates C4905. +The following example generates C4905. ```cpp // C4905.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4906.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4906.md index a56a77722a6..93593b92914 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4906.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4906.md @@ -18,7 +18,7 @@ This warning is off by default. See [Compiler Warnings That Are Off by Default]( ## Example -The following sample generates C4906: +The following example generates C4906: ```cpp // C4906.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4917.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4917.md index 3f6010a2a7f..00b5fa25f9c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4917.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4917.md @@ -18,7 +18,7 @@ This warning is off by default. See [Compiler Warnings That Are Off by Default]( ## Example -The following code sample generates C4917: +The following code example generates C4917: ```cpp // C4917.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4920.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4920.md index c4810e098e3..aa83d30ac0c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4920.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4920.md @@ -31,7 +31,7 @@ library MyLib }; ``` -the following samples generates C4920, +the following example generates C4920, ```cpp // C4920.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4925.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4925.md index 189c703a85c..4c2342f2d8d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4925.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4925.md @@ -18,7 +18,7 @@ Another way to resolve this warning is not make the parameter (in the definition ## Example -The following sample generates C4925: +The following example generates C4925: ```cpp // C4925.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4926.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4926.md index 7d3af66acf1..128a354d77a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4926.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4926.md @@ -16,7 +16,7 @@ A forward declaration was found but an attributed construct with the same name a ## Example -The following sample generates C4926: +The following example generates C4926: ```cpp // C4926.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4927.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4927.md index befcfdbf86a..c7cb2b6ed0f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4927.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4927.md @@ -16,7 +16,7 @@ More than one user-defined conversion is implicitly applied to a single value -- ## Example -The following sample generates C4927: +The following example generates C4927: ```cpp // C4927.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4928.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4928.md index 97f975333e8..964db62dbd0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4928.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4928.md @@ -18,7 +18,7 @@ This warning is off by default. See [Compiler Warnings That Are Off by Default]( ## Example -The following sample generates C4928: +The following example generates C4928: ```cpp // C4928.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4929.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4929.md index 762b8aacf74..d137c163c33 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4929.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4929.md @@ -16,7 +16,7 @@ The embedded_idl attribute of [#import](../../preprocessor/hash-import-directive ## Example -The following sample defines a component. +The following example defines a component. ```cpp // C4929a.cpp @@ -48,7 +48,7 @@ struct C : I { }; ``` -The following sample generates C4929. +The following example generates C4929. ```cpp // C4929b.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4930.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4930.md index aba3ef6d51c..60bc64dce71 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4930.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4930.md @@ -16,7 +16,7 @@ The compiler detected an unused function prototype. If the prototype was intende ## Examples -The following sample generates C4930: +The following example generates C4930: ```cpp // C4930.cpp @@ -38,7 +38,7 @@ int main() { C4930 can also occur when the compiler cannot distinguish between a function prototype declaration and a function call. -The following sample generates C4930: +The following example generates C4930: ```cpp // C4930b.cpp @@ -109,4 +109,4 @@ int main() } ``` -In the above sample, the result of a method that takes zero arguments is passed as an argument to the constructor of an unnamed local class variable. The call can be disambiguated by either naming the local variable or prefixing the method call with an object instance along with the appropriate pointer-to-member operator. +In the above example, the result of a method that takes zero arguments is passed as an argument to the constructor of an unnamed local class variable. The call can be disambiguated by either naming the local variable or prefixing the method call with an object instance along with the appropriate pointer-to-member operator. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4939.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4939.md index 5f4861e1b29..c6fcf1d6af1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4939.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4939.md @@ -16,7 +16,7 @@ The [vtordisp](../../preprocessor/vtordisp.md) pragma will be removed in a futur ## Example -The following sample generates C4939. +The following example generates C4939. ```cpp // C4939.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4839.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4839.md index b747bed4706..675e7cb18d0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4839.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4839.md @@ -18,7 +18,7 @@ This warning is available beginning in Visual Studio 2017. ## Example -The following sample generates C4839: +The following example generates C4839: ```cpp // C4839.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4840.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4840.md index 417cd684ad3..2317907a9bb 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4840.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4840.md @@ -17,7 +17,7 @@ This warning is available beginning in Visual Studio 2017. ## Example -The following sample generates C4840 and shows how to fix it: +The following example generates C4840 and shows how to fix it: ```cpp // C4840.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4913.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4913.md index 013124d7ed2..e8d1322f658 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4913.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4913.md @@ -16,7 +16,7 @@ A call to the built-in comma operator occurred in a program that also had an ove ## Example -The following code sample generates C4913: +The following code example generates C4913: ```cpp // C4913.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4932.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4932.md index 554852afef4..d1cd6504e40 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4932.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4932.md @@ -16,7 +16,7 @@ The compiler is unable to distinguish between **`_finally`** and **`__finally`** ## Example -The following sample generates C4932: +The following example generates C4932: ```cpp // C4932.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4937.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4937.md index 7adac3e241d..9b0a2c27619 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4937.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4937.md @@ -18,7 +18,7 @@ Examples of such strings are __cdecl and \__forceinline. Note, under /Za, only ## Example -The following sample generates C4937: +The following example generates C4937: ```cpp // C4937.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4938.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4938.md index 7cbb57204d0..0707e02af28 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4938.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4938.md @@ -16,7 +16,7 @@ You should not use [/fp:strict](../../build/reference/fp-specify-floating-point- ## Example -The following sample generates C4938: +The following example generates C4938: ```cpp // C4938.cpp From 1f16d648278dc1005e4439fcf2642f2254fc6a14 Mon Sep 17 00:00:00 2001 From: Zack Johnson Date: Wed, 3 Sep 2025 10:43:14 -0400 Subject: [PATCH 1702/2255] Update ASan known issues regarding operator overrides Clarified the impact of MFC's custom operator overrides on ASan's error detection capabilities. --- docs/sanitizers/asan-known-issues.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/sanitizers/asan-known-issues.md b/docs/sanitizers/asan-known-issues.md index 41d1292a402..5d0bcd92f1a 100644 --- a/docs/sanitizers/asan-known-issues.md +++ b/docs/sanitizers/asan-known-issues.md @@ -59,8 +59,12 @@ int main() { AddressSanitizer (ASan) uses a custom version of `operator new` and `operator delete` to find allocation errors like [`alloc_dealloc_mismatch`](error-alloc-dealloc-mismatch.md). Running the linker with [`/INFERASANLIBS`](../build/reference/inferasanlibs.md) ensures that ASan's `new`/`delete` override has low precedence, so that the linker chooses any `operator new` or `operator delete` overrides in other libraries over ASan's custom versions. When this happens, ASan may not be able to catch some errors that rely on its custom `operator new` and `operator delete`. -[MFC](../mfc/mfc-concepts.md) includes custom overrides for `operator new` and `operator delete` and might miss errors like [`alloc_dealloc_mismatch`](error-alloc-dealloc-mismatch.md). - +[MFC](../mfc/mfc-concepts.md) includes custom overrides for `operator new` and `operator delete`. Any operation that utilizes these provided operators instead of the ASan provided `operator new` and `operator delete` might miss errors entirely or classify them incorrectly as a result: + - [`alloc_dealloc_mismatch`](error-alloc-dealloc-mismatch.md) + - [`double-free`](error-double-free.md) + - [`heap-use-after-free`](error-heap-use-after-free.md) + - [`heap-buffer-overflow`](error-heap-buffer-overflow.md) + - [`new-delete-type-mismatch`](error-new-delete-type-mismatch.md) ## Memory usage From 9d1b13dd981fb972d8bc9338556b27329f872bdd Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 3 Sep 2025 22:48:14 +0800 Subject: [PATCH 1703/2255] Update metadata for warning references in range [C4831, C4940] --- docs/error-messages/compiler-warnings/c4841.md | 2 +- docs/error-messages/compiler-warnings/c4843.md | 2 +- docs/error-messages/compiler-warnings/c4866.md | 4 ++-- .../compiler-warnings/compiler-warning-c4867.md | 5 ++--- .../compiler-warnings/compiler-warning-c4868.md | 5 ++--- .../compiler-warnings/compiler-warning-c4936.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4835.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4838.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4900.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4905.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4906.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4910.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4912.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4917.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4920.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4925.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4926.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4927.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4928.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4929.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4930.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4935.md | 5 ++--- .../compiler-warnings/compiler-warning-level-1-c4939.md | 5 ++--- .../compiler-warnings/compiler-warning-level-3-c4839.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4840.md | 4 ++-- .../compiler-warnings/compiler-warning-level-4-c4913.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4918.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4931.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4932.md | 1 - .../compiler-warnings/compiler-warning-level-4-c4937.md | 5 ++--- .../compiler-warnings/compiler-warning-level-4-c4938.md | 5 ++--- 31 files changed, 58 insertions(+), 85 deletions(-) diff --git a/docs/error-messages/compiler-warnings/c4841.md b/docs/error-messages/compiler-warnings/c4841.md index 89b7db20d63..d4b9c5b80f3 100644 --- a/docs/error-messages/compiler-warnings/c4841.md +++ b/docs/error-messages/compiler-warnings/c4841.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4841" title: "Compiler Warning (level 4) C4841" +description: "Learn more about: Compiler Warning (level 4) C4841" ms.date: 05/03/2021 f1_keywords: ["C4841"] helpviewer_keywords: ["C4841"] diff --git a/docs/error-messages/compiler-warnings/c4843.md b/docs/error-messages/compiler-warnings/c4843.md index 34fe3329bac..857df4af62d 100644 --- a/docs/error-messages/compiler-warnings/c4843.md +++ b/docs/error-messages/compiler-warnings/c4843.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4843" title: "Compiler Warning (level 4) C4843" +description: "Learn more about: Compiler Warning (level 4) C4843" ms.date: 05/03/2021 f1_keywords: ["C4843"] helpviewer_keywords: ["C4843"] diff --git a/docs/error-messages/compiler-warnings/c4866.md b/docs/error-messages/compiler-warnings/c4866.md index 36dba1e4867..5a5400220b3 100644 --- a/docs/error-messages/compiler-warnings/c4866.md +++ b/docs/error-messages/compiler-warnings/c4866.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4866" title: "Compiler Warning (Level 4) C4866" -ms.date: "09/30/2018" +description: "Learn more about: Compiler Warning (level 4) C4866" +ms.date: 09/30/2018 f1_keywords: ["C4866"] helpviewer_keywords: ["C4866"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4867.md b/docs/error-messages/compiler-warnings/compiler-warning-c4867.md index 89a191c1361..3826e9e0ecc 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4867.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4867.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning C4867" title: "Compiler Warning C4867" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning C4867" +ms.date: 11/04/2016 f1_keywords: ["C4867"] helpviewer_keywords: ["C4867"] -ms.assetid: 8a257d70-c3a7-462d-b285-e57c952a8bf7 --- # Compiler Warning C4867 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4868.md b/docs/error-messages/compiler-warnings/compiler-warning-c4868.md index f371c961f45..d863beaad53 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4868.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4868.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4868" title: "Compiler Warning C4868" -ms.date: "10/26/2017" +description: "Learn more about: Compiler Warning (level 4) C4868" +ms.date: 10/26/2017 f1_keywords: ["C4868"] helpviewer_keywords: ["C4868"] -ms.assetid: fc6aa7e5-34dd-4ec2-88bd-16e430361dc7 --- # Compiler Warning (level 4) C4868 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4936.md b/docs/error-messages/compiler-warnings/compiler-warning-c4936.md index dedc93eda39..73342f7523e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4936.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4936.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning C4936" title: "Compiler Warning C4936" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning C4936" +ms.date: 11/04/2016 f1_keywords: ["C4936"] helpviewer_keywords: ["C4936"] -ms.assetid: 6676de35-bf1b-4d0b-a70f-b5734130336c --- # Compiler Warning C4936 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4835.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4835.md index c78fce7be72..f3b67e23a05 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4835.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4835.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4835" title: "Compiler Warning (level 1) C4835" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4835" +ms.date: 11/04/2016 f1_keywords: ["C4835"] helpviewer_keywords: ["C4835"] -ms.assetid: d2e44c62-7b0e-4a45-943d-97903e27ed9d --- # Compiler Warning (level 1) C4835 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4838.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4838.md index 64628e86b20..ed58e4bc6ab 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4838.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4838.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4838" title: "Compiler Warning (level 1) C4838" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4838" +ms.date: 11/04/2016 f1_keywords: ["C4838"] helpviewer_keywords: ["C4838"] -ms.assetid: fea07924-5feb-4ed4-99b5-1a8c41d28db6 --- # Compiler Warning (level 1) C4838 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4900.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4900.md index 56a59d00efe..9d0a5cc4187 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4900.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4900.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4900" title: "Compiler Warning (level 1) C4900" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4900" +ms.date: 11/04/2016 f1_keywords: ["C4900"] helpviewer_keywords: ["C4900"] -ms.assetid: 826997ec-0803-4794-ad35-bb463f679658 --- # Compiler Warning (level 1) C4900 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4905.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4905.md index 8e12058e449..43a136c259d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4905.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4905.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4905" title: "Compiler Warning (level 1) C4905" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4905" +ms.date: 11/04/2016 f1_keywords: ["C4905"] helpviewer_keywords: ["C4905"] -ms.assetid: 40240bf4-b14e-4c22-aeb2-52f2851532f6 --- # Compiler Warning (level 1) C4905 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4906.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4906.md index 93593b92914..8e2c92d2274 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4906.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4906.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4906" title: "Compiler Warning (level 1) C4906" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4906" +ms.date: 11/04/2016 f1_keywords: ["C4906"] helpviewer_keywords: ["C4906"] -ms.assetid: 05318e74-799b-412a-9dce-f02b8161d762 --- # Compiler Warning (level 1) C4906 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4910.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4910.md index 65f5bef7f26..588f5372c28 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4910.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4910.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4910" title: "Compiler Warning (level 1) C4910" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4910" +ms.date: 11/04/2016 f1_keywords: ["C4910"] helpviewer_keywords: ["C4910"] -ms.assetid: 67963560-fbca-4ca7-93db-06beaf7055f0 --- # Compiler Warning (level 1) C4910 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4912.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4912.md index f05c737356a..1bfd258713c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4912.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4912.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4912" title: "Compiler Warning (level 1) C4912" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4912" +ms.date: 11/04/2016 f1_keywords: ["C4912"] helpviewer_keywords: ["C4912"] -ms.assetid: ba1f1a66-8c20-4792-9ac8-43e49f729ae2 --- # Compiler Warning (level 1) C4912 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4917.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4917.md index 00b5fa25f9c..5174941c517 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4917.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4917.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4917" title: "Compiler Warning (level 1) C4917" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4917" +ms.date: 11/04/2016 f1_keywords: ["C4917"] helpviewer_keywords: ["C4917"] -ms.assetid: c05e2610-4a5d-4f4b-a99b-c15fd7f1d5f1 --- # Compiler Warning (level 1) C4917 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4920.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4920.md index aa83d30ac0c..cd04ce20506 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4920.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4920.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4920" title: "Compiler Warning (level 1) C4920" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4920" +ms.date: 11/04/2016 f1_keywords: ["C4920"] helpviewer_keywords: ["C4920"] -ms.assetid: 1e501f2e-93c1-4d27-a4fa-54fc86271ae7 --- # Compiler Warning (level 1) C4920 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4925.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4925.md index 4c2342f2d8d..70e1c27766b 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4925.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4925.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4925" title: "Compiler Warning (level 1) C4925" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4925" +ms.date: 11/04/2016 f1_keywords: ["C4925"] helpviewer_keywords: ["C4925"] -ms.assetid: a4b206c0-016a-4f28-873a-bb8bb41bad50 --- # Compiler Warning (level 1) C4925 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4926.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4926.md index 128a354d77a..2ef1c363482 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4926.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4926.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4926" title: "Compiler Warning (level 1) C4926" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4926" +ms.date: 11/04/2016 f1_keywords: ["C4926"] helpviewer_keywords: ["C4926"] -ms.assetid: 5717fce0-146f-4ef2-bde0-e9a01c0922d1 --- # Compiler Warning (level 1) C4926 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4927.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4927.md index c7cb2b6ed0f..97680f685f0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4927.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4927.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4927" title: "Compiler Warning (level 1) C4927" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4927" +ms.date: 11/04/2016 f1_keywords: ["C4927"] helpviewer_keywords: ["C4927"] -ms.assetid: 7009e740-a2ef-4130-96ba-482e092f717a --- # Compiler Warning (level 1) C4927 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4928.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4928.md index 964db62dbd0..7ad37a31713 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4928.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4928.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4928" title: "Compiler Warning (level 1) C4928" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4928" +ms.date: 11/04/2016 f1_keywords: ["C4928"] helpviewer_keywords: ["C4928"] -ms.assetid: 77235d7f-9360-45cb-8348-d148c605c4a3 --- # Compiler Warning (level 1) C4928 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4929.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4929.md index d137c163c33..0914856a997 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4929.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4929.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4929" title: "Compiler Warning (level 1) C4929" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4929" +ms.date: 11/04/2016 f1_keywords: ["C4929"] helpviewer_keywords: ["C4929"] -ms.assetid: 95f8ab4f-4468-4caa-acd5-8f4592f03b3c --- # Compiler Warning (level 1) C4929 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4930.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4930.md index 60bc64dce71..261fff84ad3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4930.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4930.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4930" title: "Compiler Warning (level 1) C4930" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4930" +ms.date: 11/04/2016 f1_keywords: ["C4930"] helpviewer_keywords: ["C4930"] -ms.assetid: 89a206c9-c536-4186-8e81-1cde3e7f4f5b --- # Compiler Warning (level 1) C4930 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4935.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4935.md index 94b8359ac57..a37cde7e6c5 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4935.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4935.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4935" title: "Compiler Warning (level 1) C4935" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4935" +ms.date: 11/04/2016 f1_keywords: ["C4935"] helpviewer_keywords: ["C4935"] -ms.assetid: a36c56d3-571a-44dd-bb0f-bcc6b020e134 --- # Compiler Warning (level 1) C4935 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4939.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4939.md index c6fcf1d6af1..4568b2300b1 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4939.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4939.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4939" title: "Compiler Warning (level 1) C4939" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4939" +ms.date: 11/04/2016 f1_keywords: ["C4939"] helpviewer_keywords: ["C4939"] -ms.assetid: 07096008-ba47-436c-a84c-2b03ad90d0b3 --- # Compiler Warning (level 1) C4939 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4839.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4839.md index 675e7cb18d0..0179dad250c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4839.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4839.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4839" title: "Compiler Warning (level 3) C4839" -ms.date: "09/13/2018" +description: "Learn more about: Compiler Warning (level 3) C4839" +ms.date: 09/13/2018 f1_keywords: ["C4839"] helpviewer_keywords: ["C4839"] -ms.assetid: f4f99066-9258-4330-81a8-f4a75a1d95ee --- # Compiler Warning (level 3) C4839 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4840.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4840.md index 2317907a9bb..0c10fc635b5 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4840.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4840.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4840" title: "Compiler Warning (level 4) C4840" -ms.date: "09/13/2018" +description: "Learn more about: Compiler Warning (level 4) C4840" +ms.date: 09/13/2018 f1_keywords: ["C4840"] helpviewer_keywords: ["C4840"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4913.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4913.md index e8d1322f658..15d4c3e2211 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4913.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4913.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4913" title: "Compiler Warning (level 4) C4913" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4913" +ms.date: 11/04/2016 f1_keywords: ["C4913"] helpviewer_keywords: ["C4913"] -ms.assetid: b94aa52e-6029-4170-9134-017714931546 --- # Compiler Warning (level 4) C4913 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4918.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4918.md index a68e1a728b0..2b0b70e3636 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4918.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4918.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4918" title: "Compiler Warning (level 4) C4918" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4918" +ms.date: 11/04/2016 f1_keywords: ["C4918"] helpviewer_keywords: ["C4918"] -ms.assetid: 1bcf6d35-3467-4aa8-b2ef-cb33f4e70238 --- # Compiler Warning (level 4) C4918 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4931.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4931.md index 5d6cd63bec0..26f191977ec 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4931.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4931.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4931" title: "Compiler Warning (level 4) C4931" -ms.date: "08/27/2018" +description: "Learn more about: Compiler Warning (level 4) C4931" +ms.date: 08/27/2018 f1_keywords: ["C4931"] helpviewer_keywords: ["C4931"] -ms.assetid: cfbf08c7-94e4-4a91-a691-479d1dbe527a --- # Compiler Warning (level 4) C4931 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4932.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4932.md index d1cd6504e40..db065cb5d56 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4932.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4932.md @@ -4,7 +4,6 @@ description: "Describes Microsoft C/C++ compiler warning C4932." ms.date: 08/25/2020 f1_keywords: ["C4932"] helpviewer_keywords: ["C4932"] -ms.assetid: 0b8d88cc-21f6-45cb-a9f5-1795b7db0dfa --- # Compiler Warning (level 4) C4932 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4937.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4937.md index 9b0a2c27619..5789faac8d6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4937.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4937.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4937" title: "Compiler Warning (level 4) C4937" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4937" +ms.date: 11/04/2016 f1_keywords: ["C4937"] helpviewer_keywords: ["C4937"] -ms.assetid: 2bb9f0e7-bbd6-4697-84de-95955e32ae29 --- # Compiler Warning (level 4) C4937 diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4938.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4938.md index 0707e02af28..d2fe0f2e961 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4938.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4938.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4938" title: "Compiler Warning (level 4) C4938" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4938" +ms.date: 11/04/2016 f1_keywords: ["C4938"] helpviewer_keywords: ["C4938"] -ms.assetid: 6acac81a-9d23-465e-b700-ed4b6e8edcd0 --- # Compiler Warning (level 4) C4938 From a47c401cae7beebb10bd3398a4764624123d64f6 Mon Sep 17 00:00:00 2001 From: Zack Johnson Date: Wed, 3 Sep 2025 11:39:42 -0400 Subject: [PATCH 1704/2255] Clarify MFC operator overrides impact on ASan --- docs/sanitizers/asan-known-issues.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-known-issues.md b/docs/sanitizers/asan-known-issues.md index 5d0bcd92f1a..5cd2dfd6d0b 100644 --- a/docs/sanitizers/asan-known-issues.md +++ b/docs/sanitizers/asan-known-issues.md @@ -59,7 +59,7 @@ int main() { AddressSanitizer (ASan) uses a custom version of `operator new` and `operator delete` to find allocation errors like [`alloc_dealloc_mismatch`](error-alloc-dealloc-mismatch.md). Running the linker with [`/INFERASANLIBS`](../build/reference/inferasanlibs.md) ensures that ASan's `new`/`delete` override has low precedence, so that the linker chooses any `operator new` or `operator delete` overrides in other libraries over ASan's custom versions. When this happens, ASan may not be able to catch some errors that rely on its custom `operator new` and `operator delete`. -[MFC](../mfc/mfc-concepts.md) includes custom overrides for `operator new` and `operator delete`. Any operation that utilizes these provided operators instead of the ASan provided `operator new` and `operator delete` might miss errors entirely or classify them incorrectly as a result: +[MFC](../mfc/mfc-concepts.md) includes custom overrides for `operator new` and `operator delete`. When `MFC` overrides are used instead of the ASan provided `operator new` and `operator delete`, ASan might miss errors entirely or classify them incorrectly as a result. The following errors may be missed or incorrectly classified: - [`alloc_dealloc_mismatch`](error-alloc-dealloc-mismatch.md) - [`double-free`](error-double-free.md) - [`heap-use-after-free`](error-heap-use-after-free.md) From d3f8b32cb31b81d53c5e2cb027dfa8806c4a473d Mon Sep 17 00:00:00 2001 From: David Justo Date: Wed, 3 Sep 2025 09:43:41 -0700 Subject: [PATCH 1705/2255] clarify that `/hotpatch` is only available in x86 targets --- .../reference/hotpatch-create-hotpatchable-image.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/build/reference/hotpatch-create-hotpatchable-image.md b/docs/build/reference/hotpatch-create-hotpatchable-image.md index ecd2b6467e5..b33cbddb12e 100644 --- a/docs/build/reference/hotpatch-create-hotpatchable-image.md +++ b/docs/build/reference/hotpatch-create-hotpatchable-image.md @@ -16,13 +16,18 @@ Prepares an image for hot patching. /hotpatch ``` +> [!NOTE] +> This option is only available for x86 + ## Remarks -When **/hotpatch** is used in a compilation, the compiler ensures that the first instruction of each function is at least two bytes, and no jump within the function goes to the first instruction. These conditions are required for hot patching. +When **/hotpatch** is used in compilation, the compiler ensures that the first instruction of each function is at least two bytes, and no jump within the function goes to the first instruction. These conditions are required for hot patching. To complete the preparation for making an image hotpatchable, after you use **/hotpatch** to compile, you must use [/FUNCTIONPADMIN (Create Hotpatchable Image)](functionpadmin-create-hotpatchable-image.md) to link. When you compile and link an image by using one invocation of cl.exe, **/hotpatch** implies **/functionpadmin**. -Because instructions are always two bytes or larger on the ARM architecture, and because x64 compilation is always treated as if **/hotpatch** has been specified, you don't have to specify **/hotpatch** when you compile for these targets; however, you must still link by using **/functionpadmin** to create hotpatchable images for them. The **/hotpatch** compiler option only affects x86 compilation. + +> [!TIP] +> ARM and x64 architechtures are always treated as hotpatchable; however, you must still link by using **/functionpadmin** to create hotpatchable images for them. ### To set this compiler option in the Visual Studio development environment From d0b13a3d5a8985197efd88ed8d57ea06d37a270e Mon Sep 17 00:00:00 2001 From: David Justo Date: Wed, 3 Sep 2025 09:46:12 -0700 Subject: [PATCH 1706/2255] remove newline --- docs/build/reference/hotpatch-create-hotpatchable-image.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/build/reference/hotpatch-create-hotpatchable-image.md b/docs/build/reference/hotpatch-create-hotpatchable-image.md index b33cbddb12e..f05f69d538b 100644 --- a/docs/build/reference/hotpatch-create-hotpatchable-image.md +++ b/docs/build/reference/hotpatch-create-hotpatchable-image.md @@ -25,7 +25,6 @@ When **/hotpatch** is used in compilation, the compiler ensures that the first i To complete the preparation for making an image hotpatchable, after you use **/hotpatch** to compile, you must use [/FUNCTIONPADMIN (Create Hotpatchable Image)](functionpadmin-create-hotpatchable-image.md) to link. When you compile and link an image by using one invocation of cl.exe, **/hotpatch** implies **/functionpadmin**. - > [!TIP] > ARM and x64 architechtures are always treated as hotpatchable; however, you must still link by using **/functionpadmin** to create hotpatchable images for them. From 368beecc3630b801ecc82b2aa3aaaf5a2597016b Mon Sep 17 00:00:00 2001 From: David Justo Date: Wed, 3 Sep 2025 09:53:30 -0700 Subject: [PATCH 1707/2255] fix minor acrolynx issues --- docs/build/reference/hotpatch-create-hotpatchable-image.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build/reference/hotpatch-create-hotpatchable-image.md b/docs/build/reference/hotpatch-create-hotpatchable-image.md index f05f69d538b..9534978de74 100644 --- a/docs/build/reference/hotpatch-create-hotpatchable-image.md +++ b/docs/build/reference/hotpatch-create-hotpatchable-image.md @@ -21,12 +21,12 @@ Prepares an image for hot patching. ## Remarks -When **/hotpatch** is used in compilation, the compiler ensures that the first instruction of each function is at least two bytes, and no jump within the function goes to the first instruction. These conditions are required for hot patching. +When **/hotpatch** is used in compilation, the compiler ensures that the first instruction of each function is at least 2 bytes, and no jump within the function goes to the first instruction. These conditions are required for hot patching. To complete the preparation for making an image hotpatchable, after you use **/hotpatch** to compile, you must use [/FUNCTIONPADMIN (Create Hotpatchable Image)](functionpadmin-create-hotpatchable-image.md) to link. When you compile and link an image by using one invocation of cl.exe, **/hotpatch** implies **/functionpadmin**. > [!TIP] -> ARM and x64 architechtures are always treated as hotpatchable; however, you must still link by using **/functionpadmin** to create hotpatchable images for them. +> ARM and x64 architectures are always treated as hotpatchable; however, you must still link by using **/functionpadmin** to create hotpatchable images for them. ### To set this compiler option in the Visual Studio development environment From 0ba02536cc7cb365a5f0c62b302d768dee55d91e Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 3 Sep 2025 15:29:54 -0700 Subject: [PATCH 1708/2255] Update AddressSanitizer options descriptions Minor edit pass. Removed code escape where it isn't necessary (we primarily use it to avoid machine translation errors when the page renders). --- docs/sanitizers/asan-flags.md | 76 +++++++++++++++++------------------ 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index f809824908b..ae5996a75d2 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -7,60 +7,60 @@ helpviewer_keywords: ["AddressSanitizer options", "AddressSanitizer flags", "Add # AddressSanitizer Runtime Options -The following table lists actively supported options for the AddressSanitizer. They can be enabled through the `ASAN_OPTIONS` environment variable or by overriding the `__asan_default_options()` user function, as described [here](./asan-runtime.md#runtime-options). +The following table lists the options for the AddressSanitizer. Enable them via the `ASAN_OPTIONS` environment variable or by overriding the `__asan_default_options()` user function described [here](./asan-runtime.md#runtime-options). > [!NOTE] -> These descriptions may vary from the runtime options in Clang's ASan docs to account for MSVC specific behaviors. +> These descriptions account for MSVC specific behaviors which may vary from Clang's runtime options. | Flag | Default value | Description | |------|---------------|-------------| |`abort_on_error` | `false` | If `true`, ASan calls `abort()` instead of `_exit()` after printing the error report.| -|`alloc_dealloc_mismatch` | `false` | Enables detection of mismatched memory operations such as `malloc`/`delete`, `new[]`/`free`, etc.| -|`allocator_frees_and_returns_null_on_realloc_zero` | `true` | If set to `true`, `realloc(p, 0)` is equivalent to `free(p)` by default (same as the POSIX standard). If set to `false`, `realloc(p, 0)` returns a pointer to an allocated space that can't be used. | +|`alloc_dealloc_mismatch` | `false` | Detects mismatched memory operations such as `malloc`/`delete`, `new[]`/`free`, and so on.| +|`allocator_frees_and_returns_null_on_realloc_zero` | `true` | If set to `true`, `realloc(p, 0)` is the same as `free(p)` by default (which is the same as the POSIX standard). If set to `false`, `realloc(p, 0)` returns a pointer to an allocated space that can't be used. | |`allocator_may_return_null` | `false` | If `true`, the allocator returns `nullptr` when out of memory. Instead of crashing, ASan emits a warning about the allocator's failure and execution continues.| -|`allow_user_poisoning` | `true` | If `true`, you may manually mark memory regions as poisoned or unpoisoned using [these](./asan-runtime.md#poisoning) APIs.| +|`allow_user_poisoning` | `true` | If `true`, you may manually mark memory regions as poisoned or unpoisoned using the [Manual AddressSanitizer poising interface](./asan-runtime.md#poisoning).| |`check_initialization_order` | `false` | If `true`, attempts to catch initialization order issues.| -|`continue_on_error` | `0` | Allows an application to continue running while reporting unique memory safety errors. `0` - disabled, `1` - enabled, and error output is sent to `stdout`, `2` - enabled, and error output is sent to `stderr`. See [continue_on_error](asan-continue-on-error.md).| -|`detect_container_overflow` | `true` | If `true`, honor the container overflow annotations. See [ContainerOverflow](./error-container-overflow.md).| -|`detect_invalid_pointer_pairs` | `false` | If `true`, ASan detects operations like `<`, `<=`, `>`, `>=`, and `-` on invalid pointer pairs, such as pointers that belong to different objects.| -|`detect_stack_use_after_return` | `false` | Experimental. If `true`, ASan enables `stack-use-after-return` checking at runtime. Requires `/fsanitize-address-use-after-return`. See [stack-use-after-return](./error-stack-use-after-return.md).| -|`exitcode` | `1` | Override the program exit status with this value if ASan found an error.| -|`external_symbolizer_path` | `""` | Path to external symbolizer. If empty, ASan searches `$PATH` for the symbolizer.| +|`continue_on_error` | 0 | Allows an application to continue running while reporting memory safety errors. 0-disabled, 1-enabled and error output is sent to `stdout`, 2-enabled and error output is sent to `stderr`. For more information, see [continue_on_error](asan-continue-on-error.md).| +|`detect_container_overflow` | `true` | If `true`, honor the container overflow annotations. For more information, see [ContainerOverflow](./error-container-overflow.md).| +|`detect_invalid_pointer_pairs` | `false` | If `true`, ASan detects operations like `<`, `<=`, `>`, `>=`, and `-` on invalid pointer pairs such as pointers that belong to different objects.| +|`detect_stack_use_after_return` | `false` | Experimental. If `true`, ASan enables `stack-use-after-return` checking at runtime. Requires `/fsanitize-address-use-after-return`. For more information, see [stack-use-after-return](./error-stack-use-after-return.md).| +|`exitcode` | 1 | Overrides the program exit status with this value if ASan finds an error.| +|`external_symbolizer_path` | "" | Path to the external symbolizer. If empty, ASan searches `$PATH` for the symbolizer.| |`fast_unwind_on_malloc` | `true` | If available, ASan uses the fast frame-pointer-based unwinder on `malloc`/`free`.| -|`halt_on_error` | `true` | Not supported. Use `continue_on_error` for full support.| +|`halt_on_error` | `true` | Not supported. Use `continue_on_error` instead.| |`handle_segv` | `true` | If `true`, ASan handles `SEGV` errors.| |`handle_sigfpe` | `true` | If `true`, ASan handles `SIGFPE` errors.| |`handle_sigill` | `true` | If `true`, ASan handles `SIGILL` errors.| |`help` | `false` | If `true`, ASan prints the flag options to console.| -|`iat_overwrite`|`error`|`error` - report an error whenever an overwrite is detected, `protect` - attempt to avoid using the overwritten definition, `ignore` - never attempt to correct any overwritten functions. See [iat_overwrite](./asan-runtime.md#msvc-specific-addresssanitizer-runtime-options).| -|`include_if_exists` | `""` | Takes a path to a file, and reads options from the given file. ASan doesn't fail if file doesn't exist.| +|`iat_overwrite`|`error`|`error`-report an error whenever an overwrite is detected.
`protect`-attempt to avoid using the overwritten definition.
`ignore` - don't attempt to correct any overwritten functions. For more information, see [`iat_overwrite`](./asan-runtime.md#msvc-specific-addresssanitizer-runtime-options).| +|`include_if_exists` | "" | Reads options from the specified file. ASan doesn't fail if the file doesn't exist.| |`intercept_strpbrk` | `true` | If `true`, uses custom wrappers for `strpbrk` function to find more errors.| -|`intercept_strspn` | `true` | If `true`, uses custom wrappers for `strspn` and `strcspn` function to find more errors.| -|`intercept_strstr` | `true` | If `true`, uses custom wrappers for `strstr` and `strcasestr` functions to find more errors.| -|`malloc_context_size` | `1` | Max number of stack frames kept for each allocation/deallocation.| -|`malloc_fill_byte` | `0xbe` | Value used to fill the newly allocated memory.| -|`max_malloc_fill_size` | `4096` | The ASan allocator fills an allocation with `malloc_fill_byte` up to `max_malloc_fill_size` on a call to `malloc`.| -|`max_redzone` | `2048` | Maximal size (in bytes) of redzones around heap objects.| -|`new_delete_type_mismatch` | `true` | Report errors on mismatch between size of `new` and `delete`. See [new-delete-type-mismatch](./error-new-delete-type-mismatch.md).| -|`poison_heap` | `true` | If `true`, poison the heap memory on (de-)allocation. `false` is useful for benchmarking the allocator or instrumentator.| +|`intercept_strspn` | `true` | If `true`, uses custom wrappers for `strspn` and `strcspn` to find more errors.| +|`intercept_strstr` | `true` | If `true`, uses custom wrappers for `strstr` and `strcasestr` to find more errors.| +|`malloc_context_size` | 1 | Maximum number of stack frames to keep for each allocation/deallocation.| +|`malloc_fill_byte` | `0xbe` | Value used to fill newly allocated memory.| +|`max_malloc_fill_size` | 4096 | The ASan allocator fills an allocation with `malloc_fill_byte` up to `max_malloc_fill_size` on a call to `malloc`.| +|`max_redzone` | 2048 | Maximum size (in bytes) of redzones around heap objects.| +|`new_delete_type_mismatch` | `true` | Report errors on mismatch between the size of `new` and `delete`. For more information, see [`new-delete-type-mismatch`](./error-new-delete-type-mismatch.md).| +|`poison_heap` | `true` | If `true`, poison the heap memory on allocation and deallocation. `false` is useful for benchmarking the allocator or instrumentator.| |`poison_partial` | `true` | If `true`, poison partially addressable 8-byte aligned words. This flag affects heap and global buffers, but not stack buffers.| -|`print_cmdline` | `false` | Print command line on crash. With `continue_on_error` set >= `1`, print current working directory as `UTF-16` aware.| -|`print_summary` | `true` | If `false`, disable printing error summaries in addition to error reports.| -|`quarantine_size_mb` | `-1` | Size (in Mb) of quarantine used to detect `use-after-free` errors. Lower value may increase the chance of false negatives.| -|`redzone` | `16` | Minimal size (in bytes) of redzones around heap objects. Requirement: `redzone` >= 16, is a power of two.| -|`replace_str` | `true` | If `true`, uses custom wrappers and replacements for libc string functions to find more errors.| -|`report_globals` | `1` | Controls the way to handle globals: `0` - don't detect buffer overflow on globals, `1` - detect buffer overflow, `2` - detect buffer overflow and print data about registered globals.| -|`sleep_before_dying` | `0` | Number of seconds to sleep between printing an error report and terminating the program.| -|`stack_trace_format` | `DEFAULT` | Format string used to render stack frames. `DEFAULT` - ` #%n %p %F %L`. List of available placeholders:
`%%` - represents a `'%'` character
`%n` - frame number (copy of `frame_no`)
`%p` - `PC`
`%m` - path to module
`%o` - offset in the module
`%f` - function name
`%q` - if available, offset in the function
`%s` - path to source file
`%l` - line in the source file
`%c` - column in the source file
`%F` - if function is known, ASan prints `in `, followed by the offset in this function if source is unknown
`%S` - ASan prints file/line/column information
`%L` - If file information is available, ASan prints file name, line, and column. If module information is available, ASan prints module name, offset, and architecture. If neither are available, ASan prints `()`
`%M` - If known, ASan prints module basename and offset, or `PC`| -|`strict_memcmp` | `true` | If `true`, assume that `memcmp(p1, p2, n)` always reads `n` bytes before comparing `p1` and `p2`.| -|`strict_string_checks` | `false` | If `true` check that string arguments are properly null-terminated.| -|`strip_path_prefix` | `""` | Strips this prefix from file paths in error reports.| -|`symbolize` | `true` | If `true`, use the `llvm-symbolizer` to turn virtual addresses to file or line locations.| +|`print_cmdline` | `false` | Print the command line on crash. With `continue_on_error` set >= 1, prints the current working directory and is `UTF-16` aware.| +|`print_summary` | `true` | If `false`, disables showing error summaries that accompany error reports.| +|`quarantine_size_mb` | -1 | Size (in Mb) of quarantine used to detect `use-after-free` errors. A lower value may increase the chance of false negatives.| +|`redzone` | 16 | Minimum size (in bytes) of redzones around heap objects. Requirement: `redzone >= 16` and must be a power of two.| +|`replace_str` | `true` | If `true`, uses custom wrappers and replacements for `libc` string functions to find more errors.| +|`report_globals` | 1 | How to respond to buffer overflow for globals: 0-don't detect buffer overflow on globals, 1-detect buffer overflow, 2-detect buffer overflow and print data about registered globals.| +|`sleep_before_dying` | 0 | Number of seconds to sleep between printing an error report and terminating the program.| +|`stack_trace_format` | `DEFAULT` | Format string used to render stack frames. `DEFAULT` - ` #%n %p %F %L`. List of available placeholders:
`%%` - represents a `'%'` character
`%n` - frame number (copy of `frame_no`)
`%p` - `PC`
`%m` - path to module
`%o` - offset in the module
`%f` - function name
`%q` - if available, offset in the function
`%s` - path to source file
`%l` - line in the source file
`%c` - column in the source file
`%F` - if the function is known, ASan prints `in ` followed by the offset in this function if source is unknown
`%S` - ASan prints file/line/column information
`%L` - If file information is available, ASan prints the file name, line, and column. If module information is available, ASan prints the module name, offset, and architecture. If neither are available, ASan prints `()`
`%M` - If known, ASan prints module basename and offset, or `PC`| +|`strict_memcmp` | `true` | If `true`, assumes that `memcmp(p1, p2, n)` always reads `n` bytes before comparing `p1` and `p2`.| +|`strict_string_checks` | `false` | If `true` checks that string arguments are properly null-terminated.| +|`strip_path_prefix` | "" | Strips this prefix from file paths in error reports.| +|`symbolize` | `true` | If `true`, use the `llvm-symbolizer` to turn virtual addresses into file or line locations.| |`symbolize_inline_frames` | `true` | Print inlined frames in stacktraces.| -|`verbosity` | `0` | Verbosity level: `0` - default verbosity, `1` - more output, `2` - even more output, `3` - current upper limit verbosity level | -|`windows_fast_fail_on_error`|`false`|If `true`, enable the process to terminate with a `__fastfail(71)` after printing the error report. See [windows_fast_fail_on_error](./asan-runtime.md#msvc-specific-addresssanitizer-runtime-options).| -|`windows_hook_legacy_allocators`|`true`|If `true`, enable hooking of (`Global`/`Local`)(`Alloc`/`Free`/`Size`/`ReAlloc`/`Lock`/`Unlock`) functions.| +|`verbosity` | 0 | Verbosity level: 0-default verbosity, 1-more output, 2-even more output, 3-maximum verbosity. | +|`windows_fast_fail_on_error`| `false` | If `true`, the process can terminate with a `__fastfail(71)` after printing the error report. For more information, see [`windows_fast_fail_on_error`](./asan-runtime.md#msvc-specific-addresssanitizer-runtime-options).| +|`windows_hook_legacy_allocators`| `true` |If `true`, enables hooking of (`Global`/`Local`)(`Alloc`/`Free`/`Size`/`ReAlloc`/`Lock`/`Unlock`) functions.| ## See also @@ -70,4 +70,4 @@ The following table lists actively supported options for the AddressSanitizer. T [AddressSanitizer shadow bytes](./asan-shadow-bytes.md)\ [AddressSanitizer cloud or distributed testing](./asan-offline-crash-dumps.md)\ [AddressSanitizer debugger integration](./asan-debugger-integration.md)\ -[AddressSanitizer error examples](./asan-error-examples.md) \ No newline at end of file +[AddressSanitizer error examples](./asan-error-examples.md) From e56d2dfee781f29670e2cb838e38d4a16a78bf0d Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 3 Sep 2025 15:31:31 -0700 Subject: [PATCH 1709/2255] Reorder runtime reference in table of contents alphabetical (though the entire TOC isn't alphabetical) and knowing what the options are seems to come before wanting the reference. --- docs/sanitizers/toc.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/sanitizers/toc.yml b/docs/sanitizers/toc.yml index 66b72750b80..ac16359f797 100644 --- a/docs/sanitizers/toc.yml +++ b/docs/sanitizers/toc.yml @@ -10,10 +10,10 @@ items: href: ../sanitizers/asan-continue-on-error.md - name: "Build and language reference" href: ../sanitizers/asan-building.md - - name: "Runtime reference" - href: ../sanitizers/asan-runtime.md - name: "Runtime options" href: ../sanitizers/asan-flags.md + - name: "Runtime reference" + href: ../sanitizers/asan-runtime.md - name: "Debugger integration" href: ../sanitizers/asan-debugger-integration.md - name: "Shadow bytes" From 7a1207f69de3136c0191b0e3882091ed38087cf1 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 3 Sep 2025 15:42:07 -0700 Subject: [PATCH 1710/2255] Update ASAN_OPTIONS descriptions for clarity acrolinx --- docs/sanitizers/asan-flags.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index ae5996a75d2..6e9b8d62978 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -10,7 +10,7 @@ helpviewer_keywords: ["AddressSanitizer options", "AddressSanitizer flags", "Add The following table lists the options for the AddressSanitizer. Enable them via the `ASAN_OPTIONS` environment variable or by overriding the `__asan_default_options()` user function described [here](./asan-runtime.md#runtime-options). > [!NOTE] -> These descriptions account for MSVC specific behaviors which may vary from Clang's runtime options. +> These descriptions account for Microsoft Visual C++ (MSVC) specific behaviors, which may vary from Clang's runtime options. | Flag | Default value | Description | @@ -21,7 +21,7 @@ The following table lists the options for the AddressSanitizer. Enable them via |`allocator_may_return_null` | `false` | If `true`, the allocator returns `nullptr` when out of memory. Instead of crashing, ASan emits a warning about the allocator's failure and execution continues.| |`allow_user_poisoning` | `true` | If `true`, you may manually mark memory regions as poisoned or unpoisoned using the [Manual AddressSanitizer poising interface](./asan-runtime.md#poisoning).| |`check_initialization_order` | `false` | If `true`, attempts to catch initialization order issues.| -|`continue_on_error` | 0 | Allows an application to continue running while reporting memory safety errors. 0-disabled, 1-enabled and error output is sent to `stdout`, 2-enabled and error output is sent to `stderr`. For more information, see [continue_on_error](asan-continue-on-error.md).| +|`continue_on_error` | 0 | Allows an application to continue running while reporting memory safety errors.
0-disabled.
1-enabled; errors are sent to `stdout`.
2-enabled; errors are sent to `stderr`.
For more information, see [continue_on_error](asan-continue-on-error.md).| |`detect_container_overflow` | `true` | If `true`, honor the container overflow annotations. For more information, see [ContainerOverflow](./error-container-overflow.md).| |`detect_invalid_pointer_pairs` | `false` | If `true`, ASan detects operations like `<`, `<=`, `>`, `>=`, and `-` on invalid pointer pairs such as pointers that belong to different objects.| |`detect_stack_use_after_return` | `false` | Experimental. If `true`, ASan enables `stack-use-after-return` checking at runtime. Requires `/fsanitize-address-use-after-return`. For more information, see [stack-use-after-return](./error-stack-use-after-return.md).| From c77b36b0f45a3367ba91e2538aeb4d2afd66833e Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 3 Sep 2025 16:01:00 -0700 Subject: [PATCH 1711/2255] Fix formatting and descriptions in asan-flags.md little fixes --- docs/sanitizers/asan-flags.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 6e9b8d62978..87cc4ecc0ee 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -33,9 +33,9 @@ The following table lists the options for the AddressSanitizer. Enable them via |`handle_sigfpe` | `true` | If `true`, ASan handles `SIGFPE` errors.| |`handle_sigill` | `true` | If `true`, ASan handles `SIGILL` errors.| |`help` | `false` | If `true`, ASan prints the flag options to console.| -|`iat_overwrite`|`error`|`error`-report an error whenever an overwrite is detected.
`protect`-attempt to avoid using the overwritten definition.
`ignore` - don't attempt to correct any overwritten functions. For more information, see [`iat_overwrite`](./asan-runtime.md#msvc-specific-addresssanitizer-runtime-options).| +|`iat_overwrite`|`error`|`error` - reports an error whenever an overwrite is detected.
`protect` - trys to avoid using the overwritten definition.
`ignore` - doesn't try to correct any overwritten functions. For more information, see [`iat_overwrite`](./asan-runtime.md#msvc-specific-addresssanitizer-runtime-options).| |`include_if_exists` | "" | Reads options from the specified file. ASan doesn't fail if the file doesn't exist.| -|`intercept_strpbrk` | `true` | If `true`, uses custom wrappers for `strpbrk` function to find more errors.| +|`intercept_strpbrk` | `true` | If `true`, uses custom wrappers for `strpbrk` to find more errors.| |`intercept_strspn` | `true` | If `true`, uses custom wrappers for `strspn` and `strcspn` to find more errors.| |`intercept_strstr` | `true` | If `true`, uses custom wrappers for `strstr` and `strcasestr` to find more errors.| |`malloc_context_size` | 1 | Maximum number of stack frames to keep for each allocation/deallocation.| @@ -50,7 +50,7 @@ The following table lists the options for the AddressSanitizer. Enable them via |`quarantine_size_mb` | -1 | Size (in Mb) of quarantine used to detect `use-after-free` errors. A lower value may increase the chance of false negatives.| |`redzone` | 16 | Minimum size (in bytes) of redzones around heap objects. Requirement: `redzone >= 16` and must be a power of two.| |`replace_str` | `true` | If `true`, uses custom wrappers and replacements for `libc` string functions to find more errors.| -|`report_globals` | 1 | How to respond to buffer overflow for globals: 0-don't detect buffer overflow on globals, 1-detect buffer overflow, 2-detect buffer overflow and print data about registered globals.| +|`report_globals` | 1 | How to respond to buffer overflow for globals:
0-don't detect buffer overflow on globals.
1 - detect buffer overflow.
2 - detect buffer overflow and print registered globals data.| |`sleep_before_dying` | 0 | Number of seconds to sleep between printing an error report and terminating the program.| |`stack_trace_format` | `DEFAULT` | Format string used to render stack frames. `DEFAULT` - ` #%n %p %F %L`. List of available placeholders:
`%%` - represents a `'%'` character
`%n` - frame number (copy of `frame_no`)
`%p` - `PC`
`%m` - path to module
`%o` - offset in the module
`%f` - function name
`%q` - if available, offset in the function
`%s` - path to source file
`%l` - line in the source file
`%c` - column in the source file
`%F` - if the function is known, ASan prints `in ` followed by the offset in this function if source is unknown
`%S` - ASan prints file/line/column information
`%L` - If file information is available, ASan prints the file name, line, and column. If module information is available, ASan prints the module name, offset, and architecture. If neither are available, ASan prints `()`
`%M` - If known, ASan prints module basename and offset, or `PC`| |`strict_memcmp` | `true` | If `true`, assumes that `memcmp(p1, p2, n)` always reads `n` bytes before comparing `p1` and `p2`.| @@ -58,7 +58,7 @@ The following table lists the options for the AddressSanitizer. Enable them via |`strip_path_prefix` | "" | Strips this prefix from file paths in error reports.| |`symbolize` | `true` | If `true`, use the `llvm-symbolizer` to turn virtual addresses into file or line locations.| |`symbolize_inline_frames` | `true` | Print inlined frames in stacktraces.| -|`verbosity` | 0 | Verbosity level: 0-default verbosity, 1-more output, 2-even more output, 3-maximum verbosity. | +|`verbosity` | 0 | Verbosity level:
0 - default verbosity.
1 - more output.
2 - even more output.
3 - maximum verbosity. | |`windows_fast_fail_on_error`| `false` | If `true`, the process can terminate with a `__fastfail(71)` after printing the error report. For more information, see [`windows_fast_fail_on_error`](./asan-runtime.md#msvc-specific-addresssanitizer-runtime-options).| |`windows_hook_legacy_allocators`| `true` |If `true`, enables hooking of (`Global`/`Local`)(`Alloc`/`Free`/`Size`/`ReAlloc`/`Lock`/`Unlock`) functions.| From 7a8a30b62313e993d128cca22be6747b29b0b6c0 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 3 Sep 2025 16:05:20 -0700 Subject: [PATCH 1712/2255] Very small edit. Should have got it earlier. --- docs/sanitizers/asan-flags.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 87cc4ecc0ee..02799d0c66b 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -32,7 +32,7 @@ The following table lists the options for the AddressSanitizer. Enable them via |`handle_segv` | `true` | If `true`, ASan handles `SEGV` errors.| |`handle_sigfpe` | `true` | If `true`, ASan handles `SIGFPE` errors.| |`handle_sigill` | `true` | If `true`, ASan handles `SIGILL` errors.| -|`help` | `false` | If `true`, ASan prints the flag options to console.| +|`help` | `false` | If `true`, ASan prints the flag options to the console.| |`iat_overwrite`|`error`|`error` - reports an error whenever an overwrite is detected.
`protect` - trys to avoid using the overwritten definition.
`ignore` - doesn't try to correct any overwritten functions. For more information, see [`iat_overwrite`](./asan-runtime.md#msvc-specific-addresssanitizer-runtime-options).| |`include_if_exists` | "" | Reads options from the specified file. ASan doesn't fail if the file doesn't exist.| |`intercept_strpbrk` | `true` | If `true`, uses custom wrappers for `strpbrk` to find more errors.| From 2922a7e46e664bacc9ea3ec83087f431b7cce5dc Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Wed, 3 Sep 2025 16:06:51 -0700 Subject: [PATCH 1713/2255] Code escape values --- docs/sanitizers/asan-flags.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 87cc4ecc0ee..3a7438eb8ab 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -21,12 +21,12 @@ The following table lists the options for the AddressSanitizer. Enable them via |`allocator_may_return_null` | `false` | If `true`, the allocator returns `nullptr` when out of memory. Instead of crashing, ASan emits a warning about the allocator's failure and execution continues.| |`allow_user_poisoning` | `true` | If `true`, you may manually mark memory regions as poisoned or unpoisoned using the [Manual AddressSanitizer poising interface](./asan-runtime.md#poisoning).| |`check_initialization_order` | `false` | If `true`, attempts to catch initialization order issues.| -|`continue_on_error` | 0 | Allows an application to continue running while reporting memory safety errors.
0-disabled.
1-enabled; errors are sent to `stdout`.
2-enabled; errors are sent to `stderr`.
For more information, see [continue_on_error](asan-continue-on-error.md).| +|`continue_on_error` | `0` | Allows an application to continue running while reporting memory safety errors.
`0` - disabled.
`1` - enabled. errors are sent to `stdout`.
`2` - enabled. errors are sent to `stderr`.
For more information, see [continue_on_error](asan-continue-on-error.md).| |`detect_container_overflow` | `true` | If `true`, honor the container overflow annotations. For more information, see [ContainerOverflow](./error-container-overflow.md).| |`detect_invalid_pointer_pairs` | `false` | If `true`, ASan detects operations like `<`, `<=`, `>`, `>=`, and `-` on invalid pointer pairs such as pointers that belong to different objects.| |`detect_stack_use_after_return` | `false` | Experimental. If `true`, ASan enables `stack-use-after-return` checking at runtime. Requires `/fsanitize-address-use-after-return`. For more information, see [stack-use-after-return](./error-stack-use-after-return.md).| -|`exitcode` | 1 | Overrides the program exit status with this value if ASan finds an error.| -|`external_symbolizer_path` | "" | Path to the external symbolizer. If empty, ASan searches `$PATH` for the symbolizer.| +|`exitcode` | `1` | Overrides the program exit status with this value if ASan finds an error.| +|`external_symbolizer_path` | `""` | Path to the external symbolizer. If empty, ASan searches `$PATH` for the symbolizer.| |`fast_unwind_on_malloc` | `true` | If available, ASan uses the fast frame-pointer-based unwinder on `malloc`/`free`.| |`halt_on_error` | `true` | Not supported. Use `continue_on_error` instead.| |`handle_segv` | `true` | If `true`, ASan handles `SEGV` errors.| @@ -34,31 +34,31 @@ The following table lists the options for the AddressSanitizer. Enable them via |`handle_sigill` | `true` | If `true`, ASan handles `SIGILL` errors.| |`help` | `false` | If `true`, ASan prints the flag options to console.| |`iat_overwrite`|`error`|`error` - reports an error whenever an overwrite is detected.
`protect` - trys to avoid using the overwritten definition.
`ignore` - doesn't try to correct any overwritten functions. For more information, see [`iat_overwrite`](./asan-runtime.md#msvc-specific-addresssanitizer-runtime-options).| -|`include_if_exists` | "" | Reads options from the specified file. ASan doesn't fail if the file doesn't exist.| +|`include_if_exists` | `""` | Reads options from the specified file. ASan doesn't fail if the file doesn't exist.| |`intercept_strpbrk` | `true` | If `true`, uses custom wrappers for `strpbrk` to find more errors.| |`intercept_strspn` | `true` | If `true`, uses custom wrappers for `strspn` and `strcspn` to find more errors.| |`intercept_strstr` | `true` | If `true`, uses custom wrappers for `strstr` and `strcasestr` to find more errors.| -|`malloc_context_size` | 1 | Maximum number of stack frames to keep for each allocation/deallocation.| +|`malloc_context_size` | `1` | Maximum number of stack frames to keep for each allocation/deallocation.| |`malloc_fill_byte` | `0xbe` | Value used to fill newly allocated memory.| -|`max_malloc_fill_size` | 4096 | The ASan allocator fills an allocation with `malloc_fill_byte` up to `max_malloc_fill_size` on a call to `malloc`.| -|`max_redzone` | 2048 | Maximum size (in bytes) of redzones around heap objects.| +|`max_malloc_fill_size` | `4096` | The ASan allocator fills an allocation with `malloc_fill_byte` up to `max_malloc_fill_size` on a call to `malloc`.| +|`max_redzone` | `2048` | Maximum size (in bytes) of redzones around heap objects.| |`new_delete_type_mismatch` | `true` | Report errors on mismatch between the size of `new` and `delete`. For more information, see [`new-delete-type-mismatch`](./error-new-delete-type-mismatch.md).| |`poison_heap` | `true` | If `true`, poison the heap memory on allocation and deallocation. `false` is useful for benchmarking the allocator or instrumentator.| |`poison_partial` | `true` | If `true`, poison partially addressable 8-byte aligned words. This flag affects heap and global buffers, but not stack buffers.| |`print_cmdline` | `false` | Print the command line on crash. With `continue_on_error` set >= 1, prints the current working directory and is `UTF-16` aware.| |`print_summary` | `true` | If `false`, disables showing error summaries that accompany error reports.| -|`quarantine_size_mb` | -1 | Size (in Mb) of quarantine used to detect `use-after-free` errors. A lower value may increase the chance of false negatives.| -|`redzone` | 16 | Minimum size (in bytes) of redzones around heap objects. Requirement: `redzone >= 16` and must be a power of two.| +|`quarantine_size_mb` | `-1` | Size (in Mb) of quarantine used to detect `use-after-free` errors. A lower value may increase the chance of false negatives.| +|`redzone` | `16` | Minimum size (in bytes) of redzones around heap objects. Requirement: `redzone >= 16` and must be a power of two.| |`replace_str` | `true` | If `true`, uses custom wrappers and replacements for `libc` string functions to find more errors.| -|`report_globals` | 1 | How to respond to buffer overflow for globals:
0-don't detect buffer overflow on globals.
1 - detect buffer overflow.
2 - detect buffer overflow and print registered globals data.| -|`sleep_before_dying` | 0 | Number of seconds to sleep between printing an error report and terminating the program.| +|`report_globals` | `1` | How to respond to buffer overflow for globals:
`0` - don't detect buffer overflow on globals.
`1` - detect buffer overflow.
`2` - detect buffer overflow and print registered globals data.| +|`sleep_before_dying` | `0` | Number of seconds to sleep between printing an error report and terminating the program.| |`stack_trace_format` | `DEFAULT` | Format string used to render stack frames. `DEFAULT` - ` #%n %p %F %L`. List of available placeholders:
`%%` - represents a `'%'` character
`%n` - frame number (copy of `frame_no`)
`%p` - `PC`
`%m` - path to module
`%o` - offset in the module
`%f` - function name
`%q` - if available, offset in the function
`%s` - path to source file
`%l` - line in the source file
`%c` - column in the source file
`%F` - if the function is known, ASan prints `in ` followed by the offset in this function if source is unknown
`%S` - ASan prints file/line/column information
`%L` - If file information is available, ASan prints the file name, line, and column. If module information is available, ASan prints the module name, offset, and architecture. If neither are available, ASan prints `()`
`%M` - If known, ASan prints module basename and offset, or `PC`| |`strict_memcmp` | `true` | If `true`, assumes that `memcmp(p1, p2, n)` always reads `n` bytes before comparing `p1` and `p2`.| |`strict_string_checks` | `false` | If `true` checks that string arguments are properly null-terminated.| -|`strip_path_prefix` | "" | Strips this prefix from file paths in error reports.| +|`strip_path_prefix` | `""` | Strips this prefix from file paths in error reports.| |`symbolize` | `true` | If `true`, use the `llvm-symbolizer` to turn virtual addresses into file or line locations.| |`symbolize_inline_frames` | `true` | Print inlined frames in stacktraces.| -|`verbosity` | 0 | Verbosity level:
0 - default verbosity.
1 - more output.
2 - even more output.
3 - maximum verbosity. | +|`verbosity` | `0` | Verbosity level:
`0` - default verbosity.
`1` - more output.
`2` - even more output.
`3` - maximum verbosity. | |`windows_fast_fail_on_error`| `false` | If `true`, the process can terminate with a `__fastfail(71)` after printing the error report. For more information, see [`windows_fast_fail_on_error`](./asan-runtime.md#msvc-specific-addresssanitizer-runtime-options).| |`windows_hook_legacy_allocators`| `true` |If `true`, enables hooking of (`Global`/`Local`)(`Alloc`/`Free`/`Size`/`ReAlloc`/`Lock`/`Unlock`) functions.| From cdcc4a506dbd1a3c518b1595c1d9e7d660b0dd2e Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Wed, 3 Sep 2025 16:15:18 -0700 Subject: [PATCH 1714/2255] Revert "Code escape values" This reverts commit 2922a7e46e664bacc9ea3ec83087f431b7cce5dc. --- docs/sanitizers/asan-flags.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index abc7ab81db1..02799d0c66b 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -21,12 +21,12 @@ The following table lists the options for the AddressSanitizer. Enable them via |`allocator_may_return_null` | `false` | If `true`, the allocator returns `nullptr` when out of memory. Instead of crashing, ASan emits a warning about the allocator's failure and execution continues.| |`allow_user_poisoning` | `true` | If `true`, you may manually mark memory regions as poisoned or unpoisoned using the [Manual AddressSanitizer poising interface](./asan-runtime.md#poisoning).| |`check_initialization_order` | `false` | If `true`, attempts to catch initialization order issues.| -|`continue_on_error` | `0` | Allows an application to continue running while reporting memory safety errors.
`0` - disabled.
`1` - enabled. errors are sent to `stdout`.
`2` - enabled. errors are sent to `stderr`.
For more information, see [continue_on_error](asan-continue-on-error.md).| +|`continue_on_error` | 0 | Allows an application to continue running while reporting memory safety errors.
0-disabled.
1-enabled; errors are sent to `stdout`.
2-enabled; errors are sent to `stderr`.
For more information, see [continue_on_error](asan-continue-on-error.md).| |`detect_container_overflow` | `true` | If `true`, honor the container overflow annotations. For more information, see [ContainerOverflow](./error-container-overflow.md).| |`detect_invalid_pointer_pairs` | `false` | If `true`, ASan detects operations like `<`, `<=`, `>`, `>=`, and `-` on invalid pointer pairs such as pointers that belong to different objects.| |`detect_stack_use_after_return` | `false` | Experimental. If `true`, ASan enables `stack-use-after-return` checking at runtime. Requires `/fsanitize-address-use-after-return`. For more information, see [stack-use-after-return](./error-stack-use-after-return.md).| -|`exitcode` | `1` | Overrides the program exit status with this value if ASan finds an error.| -|`external_symbolizer_path` | `""` | Path to the external symbolizer. If empty, ASan searches `$PATH` for the symbolizer.| +|`exitcode` | 1 | Overrides the program exit status with this value if ASan finds an error.| +|`external_symbolizer_path` | "" | Path to the external symbolizer. If empty, ASan searches `$PATH` for the symbolizer.| |`fast_unwind_on_malloc` | `true` | If available, ASan uses the fast frame-pointer-based unwinder on `malloc`/`free`.| |`halt_on_error` | `true` | Not supported. Use `continue_on_error` instead.| |`handle_segv` | `true` | If `true`, ASan handles `SEGV` errors.| @@ -34,31 +34,31 @@ The following table lists the options for the AddressSanitizer. Enable them via |`handle_sigill` | `true` | If `true`, ASan handles `SIGILL` errors.| |`help` | `false` | If `true`, ASan prints the flag options to the console.| |`iat_overwrite`|`error`|`error` - reports an error whenever an overwrite is detected.
`protect` - trys to avoid using the overwritten definition.
`ignore` - doesn't try to correct any overwritten functions. For more information, see [`iat_overwrite`](./asan-runtime.md#msvc-specific-addresssanitizer-runtime-options).| -|`include_if_exists` | `""` | Reads options from the specified file. ASan doesn't fail if the file doesn't exist.| +|`include_if_exists` | "" | Reads options from the specified file. ASan doesn't fail if the file doesn't exist.| |`intercept_strpbrk` | `true` | If `true`, uses custom wrappers for `strpbrk` to find more errors.| |`intercept_strspn` | `true` | If `true`, uses custom wrappers for `strspn` and `strcspn` to find more errors.| |`intercept_strstr` | `true` | If `true`, uses custom wrappers for `strstr` and `strcasestr` to find more errors.| -|`malloc_context_size` | `1` | Maximum number of stack frames to keep for each allocation/deallocation.| +|`malloc_context_size` | 1 | Maximum number of stack frames to keep for each allocation/deallocation.| |`malloc_fill_byte` | `0xbe` | Value used to fill newly allocated memory.| -|`max_malloc_fill_size` | `4096` | The ASan allocator fills an allocation with `malloc_fill_byte` up to `max_malloc_fill_size` on a call to `malloc`.| -|`max_redzone` | `2048` | Maximum size (in bytes) of redzones around heap objects.| +|`max_malloc_fill_size` | 4096 | The ASan allocator fills an allocation with `malloc_fill_byte` up to `max_malloc_fill_size` on a call to `malloc`.| +|`max_redzone` | 2048 | Maximum size (in bytes) of redzones around heap objects.| |`new_delete_type_mismatch` | `true` | Report errors on mismatch between the size of `new` and `delete`. For more information, see [`new-delete-type-mismatch`](./error-new-delete-type-mismatch.md).| |`poison_heap` | `true` | If `true`, poison the heap memory on allocation and deallocation. `false` is useful for benchmarking the allocator or instrumentator.| |`poison_partial` | `true` | If `true`, poison partially addressable 8-byte aligned words. This flag affects heap and global buffers, but not stack buffers.| |`print_cmdline` | `false` | Print the command line on crash. With `continue_on_error` set >= 1, prints the current working directory and is `UTF-16` aware.| |`print_summary` | `true` | If `false`, disables showing error summaries that accompany error reports.| -|`quarantine_size_mb` | `-1` | Size (in Mb) of quarantine used to detect `use-after-free` errors. A lower value may increase the chance of false negatives.| -|`redzone` | `16` | Minimum size (in bytes) of redzones around heap objects. Requirement: `redzone >= 16` and must be a power of two.| +|`quarantine_size_mb` | -1 | Size (in Mb) of quarantine used to detect `use-after-free` errors. A lower value may increase the chance of false negatives.| +|`redzone` | 16 | Minimum size (in bytes) of redzones around heap objects. Requirement: `redzone >= 16` and must be a power of two.| |`replace_str` | `true` | If `true`, uses custom wrappers and replacements for `libc` string functions to find more errors.| -|`report_globals` | `1` | How to respond to buffer overflow for globals:
`0` - don't detect buffer overflow on globals.
`1` - detect buffer overflow.
`2` - detect buffer overflow and print registered globals data.| -|`sleep_before_dying` | `0` | Number of seconds to sleep between printing an error report and terminating the program.| +|`report_globals` | 1 | How to respond to buffer overflow for globals:
0-don't detect buffer overflow on globals.
1 - detect buffer overflow.
2 - detect buffer overflow and print registered globals data.| +|`sleep_before_dying` | 0 | Number of seconds to sleep between printing an error report and terminating the program.| |`stack_trace_format` | `DEFAULT` | Format string used to render stack frames. `DEFAULT` - ` #%n %p %F %L`. List of available placeholders:
`%%` - represents a `'%'` character
`%n` - frame number (copy of `frame_no`)
`%p` - `PC`
`%m` - path to module
`%o` - offset in the module
`%f` - function name
`%q` - if available, offset in the function
`%s` - path to source file
`%l` - line in the source file
`%c` - column in the source file
`%F` - if the function is known, ASan prints `in ` followed by the offset in this function if source is unknown
`%S` - ASan prints file/line/column information
`%L` - If file information is available, ASan prints the file name, line, and column. If module information is available, ASan prints the module name, offset, and architecture. If neither are available, ASan prints `()`
`%M` - If known, ASan prints module basename and offset, or `PC`| |`strict_memcmp` | `true` | If `true`, assumes that `memcmp(p1, p2, n)` always reads `n` bytes before comparing `p1` and `p2`.| |`strict_string_checks` | `false` | If `true` checks that string arguments are properly null-terminated.| -|`strip_path_prefix` | `""` | Strips this prefix from file paths in error reports.| +|`strip_path_prefix` | "" | Strips this prefix from file paths in error reports.| |`symbolize` | `true` | If `true`, use the `llvm-symbolizer` to turn virtual addresses into file or line locations.| |`symbolize_inline_frames` | `true` | Print inlined frames in stacktraces.| -|`verbosity` | `0` | Verbosity level:
`0` - default verbosity.
`1` - more output.
`2` - even more output.
`3` - maximum verbosity. | +|`verbosity` | 0 | Verbosity level:
0 - default verbosity.
1 - more output.
2 - even more output.
3 - maximum verbosity. | |`windows_fast_fail_on_error`| `false` | If `true`, the process can terminate with a `__fastfail(71)` after printing the error report. For more information, see [`windows_fast_fail_on_error`](./asan-runtime.md#msvc-specific-addresssanitizer-runtime-options).| |`windows_hook_legacy_allocators`| `true` |If `true`, enables hooking of (`Global`/`Local`)(`Alloc`/`Free`/`Size`/`ReAlloc`/`Lock`/`Unlock`) functions.| From 7da07f6f9578c1b3a0d877b6947832c6dd3f95a7 Mon Sep 17 00:00:00 2001 From: David Justo Date: Thu, 4 Sep 2025 09:09:28 -0700 Subject: [PATCH 1715/2255] ARM -> arm64 --- docs/build/reference/hotpatch-create-hotpatchable-image.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/hotpatch-create-hotpatchable-image.md b/docs/build/reference/hotpatch-create-hotpatchable-image.md index 9534978de74..fa395bdbdb9 100644 --- a/docs/build/reference/hotpatch-create-hotpatchable-image.md +++ b/docs/build/reference/hotpatch-create-hotpatchable-image.md @@ -26,7 +26,7 @@ When **/hotpatch** is used in compilation, the compiler ensures that the first i To complete the preparation for making an image hotpatchable, after you use **/hotpatch** to compile, you must use [/FUNCTIONPADMIN (Create Hotpatchable Image)](functionpadmin-create-hotpatchable-image.md) to link. When you compile and link an image by using one invocation of cl.exe, **/hotpatch** implies **/functionpadmin**. > [!TIP] -> ARM and x64 architectures are always treated as hotpatchable; however, you must still link by using **/functionpadmin** to create hotpatchable images for them. +> Arm64 and x64 architectures are always treated as hotpatchable; however, you must still link by using **/functionpadmin** to create hotpatchable images for them. ### To set this compiler option in the Visual Studio development environment From 502b3494c03a5d756ff6b4e958f9a2f4b4cfec63 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Fri, 5 Sep 2025 02:28:23 +0800 Subject: [PATCH 1716/2255] Tweak "Walkthrough: Create a traditional Windows desktop application (C++)" (#5576) * Fix "does" typo in "Walkthrough: Create a traditional Windows desktop application (C++)" * Replace "length" with "height" in "Walkthrough: Create a traditional Windows desktop application (C++)" * Fix outdated mentions of `CreateWindow` in "Walkthrough: Create a traditional Windows desktop application (C++)" --- ...reating-windows-desktop-applications-cpp.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/windows/walkthrough-creating-windows-desktop-applications-cpp.md b/docs/windows/walkthrough-creating-windows-desktop-applications-cpp.md index e156b5e7b47..fb86016e1c0 100644 --- a/docs/windows/walkthrough-creating-windows-desktop-applications-cpp.md +++ b/docs/windows/walkthrough-creating-windows-desktop-applications-cpp.md @@ -216,7 +216,7 @@ Next, learn how to create the code for a Windows desktop application in Visual S // szTitle: the text that appears in the title bar // WS_OVERLAPPEDWINDOW: the type of window to create // CW_USEDEFAULT, CW_USEDEFAULT: initial position (x, y) - // 500, 100: initial size (width, length) + // 500, 100: initial size (width, height) // NULL: the parent of this window // NULL: this application does not have a menu bar // hInstance: the first parameter from WinMain @@ -250,7 +250,7 @@ Next, learn how to create the code for a Windows desktop application in Visual S ```cpp // The parameters to ShowWindow explained: - // hWnd: the value returned from CreateWindow + // hWnd: the value returned from CreateWindowEx // nCmdShow: the fourth parameter from WinMain ShowWindow(hWnd, nCmdShow); @@ -316,9 +316,9 @@ Next, learn how to create the code for a Windows desktop application in Visual S // szTitle: the text that appears in the title bar // WS_OVERLAPPEDWINDOW: the type of window to create // CW_USEDEFAULT, CW_USEDEFAULT: initial position (x, y) - // 500, 100: initial size (width, length) + // 500, 100: initial size (width, height) // NULL: the parent of this window - // NULL: this application dows not have a menu bar + // NULL: this application does not have a menu bar // hInstance: the first parameter from WinMain // NULL: not used in this application HWND hWnd = CreateWindowEx( @@ -337,7 +337,7 @@ Next, learn how to create the code for a Windows desktop application in Visual S if (!hWnd) { MessageBox(NULL, - _T("Call to CreateWindow failed!"), + _T("Call to CreateWindowEx failed!"), _T("Windows Desktop Guided Tour"), NULL); @@ -345,7 +345,7 @@ Next, learn how to create the code for a Windows desktop application in Visual S } // The parameters to ShowWindow explained: - // hWnd: the value returned from CreateWindow + // hWnd: the value returned from CreateWindowEx // nCmdShow: the fourth parameter from WinMain ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); @@ -503,7 +503,7 @@ As promised, the complete code for the working application follows. // szTitle: the text that appears in the title bar // WS_OVERLAPPEDWINDOW: the type of window to create // CW_USEDEFAULT, CW_USEDEFAULT: initial position (x, y) - // 500, 100: initial size (width, length) + // 500, 100: initial size (width, height) // NULL: the parent of this window // NULL: this application does not have a menu bar // hInstance: the first parameter from WinMain @@ -524,7 +524,7 @@ As promised, the complete code for the working application follows. if (!hWnd) { MessageBox(NULL, - _T("Call to CreateWindow failed!"), + _T("Call to CreateWindowEx failed!"), _T("Windows Desktop Guided Tour"), NULL); @@ -532,7 +532,7 @@ As promised, the complete code for the working application follows. } // The parameters to ShowWindow explained: - // hWnd: the value returned from CreateWindow + // hWnd: the value returned from CreateWindowEx // nCmdShow: the fourth parameter from WinMain ShowWindow(hWnd, nCmdShow); From 303c32ff13c0b80a9e32bed4c76288ee33d54112 Mon Sep 17 00:00:00 2001 From: David Justo Date: Thu, 4 Sep 2025 12:09:14 -0700 Subject: [PATCH 1717/2255] incorporate feedback --- docs/build/reference/hotpatch-create-hotpatchable-image.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/build/reference/hotpatch-create-hotpatchable-image.md b/docs/build/reference/hotpatch-create-hotpatchable-image.md index fa395bdbdb9..585b718aac8 100644 --- a/docs/build/reference/hotpatch-create-hotpatchable-image.md +++ b/docs/build/reference/hotpatch-create-hotpatchable-image.md @@ -21,13 +21,12 @@ Prepares an image for hot patching. ## Remarks -When **/hotpatch** is used in compilation, the compiler ensures that the first instruction of each function is at least 2 bytes, and no jump within the function goes to the first instruction. These conditions are required for hot patching. +When **/hotpatch** is used in compilation, the compiler ensures that the first instruction of each function is at least 2 bytes long, and no jump within the function goes to the first instruction. These conditions are required for hot patching. -To complete the preparation for making an image hotpatchable, after you use **/hotpatch** to compile, you must use [/FUNCTIONPADMIN (Create Hotpatchable Image)](functionpadmin-create-hotpatchable-image.md) to link. When you compile and link an image by using one invocation of cl.exe, **/hotpatch** implies **/functionpadmin**. +To complete the preparation for making an image hotpatchable, after you use **/hotpatch** to compile, you must use [/FUNCTIONPADMIN (Create Hotpatchable Image)](functionpadmin-create-hotpatchable-image.md) to link. When you compile and link an image by using one invocation of cl.exe, `/hotpatch` implies `/functionpadmin`. > [!TIP] -> Arm64 and x64 architectures are always treated as hotpatchable; however, you must still link by using **/functionpadmin** to create hotpatchable images for them. - +> Arm64 and x64 architectures are always treated as hotpatchable. But you must still link by using `/functionpadmin` to create hotpatchable images for them. ### To set this compiler option in the Visual Studio development environment 1. Open the project's **Property Pages** dialog box. For details, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md). From 141b0e2d79f9276f781f16daabbfd31e5e43da36 Mon Sep 17 00:00:00 2001 From: David Justo Date: Thu, 4 Sep 2025 12:11:20 -0700 Subject: [PATCH 1718/2255] use backticks --- docs/build/reference/hotpatch-create-hotpatchable-image.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build/reference/hotpatch-create-hotpatchable-image.md b/docs/build/reference/hotpatch-create-hotpatchable-image.md index 585b718aac8..489835421aa 100644 --- a/docs/build/reference/hotpatch-create-hotpatchable-image.md +++ b/docs/build/reference/hotpatch-create-hotpatchable-image.md @@ -21,9 +21,9 @@ Prepares an image for hot patching. ## Remarks -When **/hotpatch** is used in compilation, the compiler ensures that the first instruction of each function is at least 2 bytes long, and no jump within the function goes to the first instruction. These conditions are required for hot patching. +When `/hotpatch` is used in compilation, the compiler ensures that the first instruction of each function is at least 2 bytes long, and no jump within the function goes to the first instruction. These conditions are required for hot patching. -To complete the preparation for making an image hotpatchable, after you use **/hotpatch** to compile, you must use [/FUNCTIONPADMIN (Create Hotpatchable Image)](functionpadmin-create-hotpatchable-image.md) to link. When you compile and link an image by using one invocation of cl.exe, `/hotpatch` implies `/functionpadmin`. +To complete the preparation for making an image hotpatchable, after you use `/hotpatch` to compile, you must use [/FUNCTIONPADMIN (Create Hotpatchable Image)](functionpadmin-create-hotpatchable-image.md) to link. When you compile and link an image by using one invocation of cl.exe, `/hotpatch` implies `/functionpadmin`. > [!TIP] > Arm64 and x64 architectures are always treated as hotpatchable. But you must still link by using `/functionpadmin` to create hotpatchable images for them. From 22b4ad7baac8837fbcee826920cd4ddb77b9ca04 Mon Sep 17 00:00:00 2001 From: David Justo Date: Thu, 4 Sep 2025 12:14:06 -0700 Subject: [PATCH 1719/2255] use backticks everywhere --- docs/build/reference/hotpatch-create-hotpatchable-image.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/hotpatch-create-hotpatchable-image.md b/docs/build/reference/hotpatch-create-hotpatchable-image.md index 489835421aa..f5ed264bbc8 100644 --- a/docs/build/reference/hotpatch-create-hotpatchable-image.md +++ b/docs/build/reference/hotpatch-create-hotpatchable-image.md @@ -23,7 +23,7 @@ Prepares an image for hot patching. When `/hotpatch` is used in compilation, the compiler ensures that the first instruction of each function is at least 2 bytes long, and no jump within the function goes to the first instruction. These conditions are required for hot patching. -To complete the preparation for making an image hotpatchable, after you use `/hotpatch` to compile, you must use [/FUNCTIONPADMIN (Create Hotpatchable Image)](functionpadmin-create-hotpatchable-image.md) to link. When you compile and link an image by using one invocation of cl.exe, `/hotpatch` implies `/functionpadmin`. +To complete the preparation for making an image hotpatchable, after you use `/hotpatch` to compile, you must use [`functionpadmin`](functionpadmin-create-hotpatchable-image.md) (Create Hotpatchable Image)]to link. When you compile and link an image by using one invocation of cl.exe, `/hotpatch` implies `/functionpadmin`. > [!TIP] > Arm64 and x64 architectures are always treated as hotpatchable. But you must still link by using `/functionpadmin` to create hotpatchable images for them. From 7421eb3ac90d5037064357392ee1dbd367d6b694 Mon Sep 17 00:00:00 2001 From: David Justo Date: Thu, 4 Sep 2025 12:14:26 -0700 Subject: [PATCH 1720/2255] add dropped backslash --- docs/build/reference/hotpatch-create-hotpatchable-image.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/hotpatch-create-hotpatchable-image.md b/docs/build/reference/hotpatch-create-hotpatchable-image.md index f5ed264bbc8..4753a819348 100644 --- a/docs/build/reference/hotpatch-create-hotpatchable-image.md +++ b/docs/build/reference/hotpatch-create-hotpatchable-image.md @@ -23,7 +23,7 @@ Prepares an image for hot patching. When `/hotpatch` is used in compilation, the compiler ensures that the first instruction of each function is at least 2 bytes long, and no jump within the function goes to the first instruction. These conditions are required for hot patching. -To complete the preparation for making an image hotpatchable, after you use `/hotpatch` to compile, you must use [`functionpadmin`](functionpadmin-create-hotpatchable-image.md) (Create Hotpatchable Image)]to link. When you compile and link an image by using one invocation of cl.exe, `/hotpatch` implies `/functionpadmin`. +To complete the preparation for making an image hotpatchable, after you use `/hotpatch` to compile, you must use [`/functionpadmin`](functionpadmin-create-hotpatchable-image.md) (Create Hotpatchable Image)]to link. When you compile and link an image by using one invocation of cl.exe, `/hotpatch` implies `/functionpadmin`. > [!TIP] > Arm64 and x64 architectures are always treated as hotpatchable. But you must still link by using `/functionpadmin` to create hotpatchable images for them. From 26bf721faf120c88601d630ac20fd1ea171e00fb Mon Sep 17 00:00:00 2001 From: Aaron Robinson Date: Thu, 4 Sep 2025 13:15:34 -0700 Subject: [PATCH 1721/2255] Update C++/CLI section with compatibility notes (#5735) * Update C++/CLI section with compatibility notes * Apply suggestions from code review Co-authored-by: Genevieve Warren <24882762+gewarren@users.noreply.github.com> Co-authored-by: Rageking8 --------- Co-authored-by: Genevieve Warren <24882762+gewarren@users.noreply.github.com> Co-authored-by: Rageking8 --- docs/dotnet/dotnet-programming-with-cpp-cli-visual-cpp.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/dotnet/dotnet-programming-with-cpp-cli-visual-cpp.md b/docs/dotnet/dotnet-programming-with-cpp-cli-visual-cpp.md index 5306b90a11b..359bef6d31e 100644 --- a/docs/dotnet/dotnet-programming-with-cpp-cli-visual-cpp.md +++ b/docs/dotnet/dotnet-programming-with-cpp-cli-visual-cpp.md @@ -6,6 +6,13 @@ helpviewer_keywords: ["programming [C++], .NET programming", ".NET Framework [C+ --- # .NET programming with C++/CLI +> [!IMPORTANT] +> C++/CLI is a technology designed during the early years of .NET (2003–2010) and remains supported for compatibility purposes. It's best suited for existing codebases, particularly those being brought forward from .NET Framework to .NET Core, or for maintaining large legacy systems that are unlikely to evolve beyond .NET Framework. +> +> While C++/CLI is reliable and robust, no new feature work is planned beyond what's necessary to ensure continued functionality. Developers should be aware that using C++/CLI pessimizes both C++ and .NET languages, as it's constrained by the language features and APIs available at the time of its design—that is, prior to ISO C++11 and .NET Core. C++/CLI was designed based on C++98, and its [ECMA standard](https://ecma-international.org/publications-and-standards/standards/ecma-372) hasn't been updated to keep up with newer C++ standards since C++11. While some features in C++11 were incorporated, many features from more recent standards, like C++20 and C++23, have no direct support in C++/CLI for compilation to managed code. For more information, see [C++20 Support Comes To C++/CLI](https://devblogs.microsoft.com/cppblog/cpp20-support-comes-to-cpp-cli/). +> +> For new projects, we recommend exploring modern third-party alternatives such as or , which offer more flexibility and better alignment with current language and runtime capabilities. + C++/CLI supplanted Managed C++. C++/CLI is a language specification created by Microsoft that extends C++ to support .NET. It's only supported on Windows. It's not for writing [WinUI](/windows/apps/winui) or Universal Windows Platform [UWP](/windows/uwp/get-started/universal-application-platform-guide) Windows Runtime (WinRT) apps. It's for writing .NET applications and components that run on .NET. C++/CLI is a bridge between native C++ code and managed code. It allows you to use existing C++ libraries in .NET applications and to write new .NET applications in C++. Microsoft provides C++/WinRT for writing WinUI and WinRT apps. It's an entirely standard modern C++17 language projection for Windows Runtime (WinRT) APIs. For more information about using C++ with the Windows Runtime (WinRT), see [C++/WinRT](/windows/uwp/cpp-and-winrt-apis/). From 273d6ad58958fb8aa0b5a6f1ed15bbdd49bfb266 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Thu, 4 Sep 2025 19:11:36 -0700 Subject: [PATCH 1722/2255] Revise hotpatch documentation and update date Some acrolinx and other misc fixes. --- .../hotpatch-create-hotpatchable-image.md | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/docs/build/reference/hotpatch-create-hotpatchable-image.md b/docs/build/reference/hotpatch-create-hotpatchable-image.md index 4753a819348..011a1b31280 100644 --- a/docs/build/reference/hotpatch-create-hotpatchable-image.md +++ b/docs/build/reference/hotpatch-create-hotpatchable-image.md @@ -1,14 +1,13 @@ --- -description: "Learn more about: /hotpatch (Create Hotpatchable Image)" -title: "/hotpatch (Create Hotpatchable Image)" -ms.date: "12/7/2021" +description: "Learn more about: /hotpatch (Create hotpatchable image)" +title: "/hotpatch (Create hotpatchable image)" +ms.date: "9/4/2025" f1_keywords: ["/hotpatch", "VC.Project.VCCLCompilerTool.CreateHotpatchableImage"] -helpviewer_keywords: ["hot patching", "-hotpatch compiler option [C++]", "/hotpatch compiler option [C++]", "hotpatching"] -ms.assetid: aad539b6-c053-4c78-8682-853d98327798 +helpviewer_keywords: ["hot patching", "hotpatching", "-hotpatch compiler option [C++]", "/hotpatch compiler option [C++]"] --- -# /hotpatch (Create Hotpatchable Image) +# /hotpatch (Create hotpatchable image) -Prepares an image for hot patching. +Prepares an image for hotpatching. ## Syntax @@ -21,18 +20,17 @@ Prepares an image for hot patching. ## Remarks -When `/hotpatch` is used in compilation, the compiler ensures that the first instruction of each function is at least 2 bytes long, and no jump within the function goes to the first instruction. These conditions are required for hot patching. +When `/hotpatch` is used during compilation, the compiler ensures that the first instruction of each function is at least 2 bytes long and that no jump within the function goes to the first instruction. These conditions are required for hotpatching. -To complete the preparation for making an image hotpatchable, after you use `/hotpatch` to compile, you must use [`/functionpadmin`](functionpadmin-create-hotpatchable-image.md) (Create Hotpatchable Image)]to link. When you compile and link an image by using one invocation of cl.exe, `/hotpatch` implies `/functionpadmin`. +To complete the preparation for making an image hotpatchable, after you compile with `/hotpatch`, use [`/functionpadmin`](functionpadmin-create-hotpatchable-image.md) to link. When you compile and link an image using one invocation of `cl.exe`, `/hotpatch` implies `/functionpadmin`. > [!TIP] > Arm64 and x64 architectures are always treated as hotpatchable. But you must still link by using `/functionpadmin` to create hotpatchable images for them. + ### To set this compiler option in the Visual Studio development environment 1. Open the project's **Property Pages** dialog box. For details, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md). - 1. Select the **Configuration Properties** > **C/C++** > **Command Line** property page. - 1. Add the compiler option to the **Additional Options** box. ### To set this compiler option programmatically @@ -41,5 +39,5 @@ To complete the preparation for making an image hotpatchable, after you use `/ho ## See also -[MSVC Compiler Options](compiler-options.md)
+[MSVC Compiler Options](compiler-options.md)\ [MSVC Compiler Command-Line Syntax](compiler-command-line-syntax.md) From 796105db345fa9ac870fecc29f93bcd67af701f9 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Fri, 5 Sep 2025 23:13:18 +0800 Subject: [PATCH 1723/2255] Add "Remarks" headings for warning references in range [C6000, C6250] --- docs/code-quality/c6011.md | 2 +- docs/code-quality/c6014.md | 4 ++-- docs/code-quality/c6029.md | 4 ++-- docs/code-quality/c6031.md | 2 +- docs/code-quality/c6053.md | 2 +- docs/code-quality/c6064.md | 4 ++-- docs/code-quality/c6067.md | 2 +- docs/code-quality/c6101.md | 4 ++-- docs/code-quality/c6102.md | 2 ++ docs/code-quality/c6103.md | 2 ++ docs/code-quality/c6200.md | 4 ++-- docs/code-quality/c6201.md | 4 ++-- docs/code-quality/c6211.md | 4 ++-- docs/code-quality/c6214.md | 4 ++-- docs/code-quality/c6215.md | 4 ++-- docs/code-quality/c6216.md | 4 ++-- docs/code-quality/c6220.md | 4 ++-- docs/code-quality/c6221.md | 4 ++-- docs/code-quality/c6225.md | 4 ++-- docs/code-quality/c6226.md | 4 ++-- docs/code-quality/c6235.md | 4 ++-- docs/code-quality/c6236.md | 4 ++-- docs/code-quality/c6237.md | 4 ++-- docs/code-quality/c6239.md | 4 ++-- docs/code-quality/c6240.md | 4 ++-- docs/code-quality/c6242.md | 4 ++-- docs/code-quality/c6250.md | 4 ++-- 27 files changed, 50 insertions(+), 46 deletions(-) diff --git a/docs/code-quality/c6011.md b/docs/code-quality/c6011.md index 2094f73796a..7b5dd898802 100644 --- a/docs/code-quality/c6011.md +++ b/docs/code-quality/c6011.md @@ -16,7 +16,7 @@ This warning indicates that your code dereferences a potentially null pointer. I Code analysis name: `DEREF_NULL_PTR` -## Example +## Examples The following code generates this warning because a call to `malloc` might return null if insufficient memory is available: diff --git a/docs/code-quality/c6014.md b/docs/code-quality/c6014.md index 9806124fb84..f954a159de5 100644 --- a/docs/code-quality/c6014.md +++ b/docs/code-quality/c6014.md @@ -10,10 +10,10 @@ ms.assetid: ef76ec88-74d2-4a3b-b6fe-4b0851ab3372 > Leaking memory '*pointer-name*'. -This warning indicates that the specified pointer points to allocated memory or some other allocated resource that hasn't been freed. - ## Remarks +This warning indicates that the specified pointer points to allocated memory or some other allocated resource that hasn't been freed. + The analyzer checks for this condition only when the `_Analysis_mode_(_Analysis_local_leak_checks_)` SAL annotation is specified. By default, this annotation is specified for Windows kernel mode (driver) code. For more information about SAL annotations, see [Using SAL Annotations to Reduce C/C++ Code Defects](../code-quality/using-sal-annotations-to-reduce-c-cpp-code-defects.md). This warning is reported for both memory and resource leaks when the resource is commonly *aliased* to another location. Memory is aliased when a pointer to the memory escapes the function by using an `_Out_` parameter annotation, global variable, or return value. This warning can be reported on function exit if the argument is annotated that its release is expected. diff --git a/docs/code-quality/c6029.md b/docs/code-quality/c6029.md index 729f39ab08c..7fa2fb56c07 100644 --- a/docs/code-quality/c6029.md +++ b/docs/code-quality/c6029.md @@ -9,10 +9,10 @@ helpviewer_keywords: ["C6029"] > Possible buffer overrun in call to '*function*' -Possible buffer overrun in called function due to an unchecked buffer length/size parameter. - ## Remarks +Possible buffer overrun in called function due to an unchecked buffer length/size parameter. + This warning indicates that code passes an unchecked size to a function that takes a buffer and a size. The code doesn't verify that the data read from some external source is smaller than the buffer size. An attacker might intentionally specify a larger than expected value for the size, which can lead to a buffer overrun. Generally, whenever you read data from an untrusted external source, make sure to verify it for validity. It's appropriate to verify the size to make sure it's in the expected range. Code analysis name: `USING_TAINTED_DATA` diff --git a/docs/code-quality/c6031.md b/docs/code-quality/c6031.md index 541fca4ba56..7431e743474 100644 --- a/docs/code-quality/c6031.md +++ b/docs/code-quality/c6031.md @@ -19,7 +19,7 @@ This warning applies to both C and C++ code. Code analysis name: `RETVAL_IGNORED_FUNC_COULD_FAIL` -## Example +## Examples The following code generates warning C6031: diff --git a/docs/code-quality/c6053.md b/docs/code-quality/c6053.md index 426980c7878..d8511f645c3 100644 --- a/docs/code-quality/c6053.md +++ b/docs/code-quality/c6053.md @@ -18,7 +18,7 @@ Most C standard library and Win32 string handling functions require and produce Code analysis name: `MISSING_ZERO_TERMINATION1` -## Examples +## Example The following sample code generates this warning: diff --git a/docs/code-quality/c6064.md b/docs/code-quality/c6064.md index 645f77ff241..57de5c63e64 100644 --- a/docs/code-quality/c6064.md +++ b/docs/code-quality/c6064.md @@ -9,10 +9,10 @@ helpviewer_keywords: ["C6064"] > Missing integer argument to '*function-name*' corresponding to conversion specifier '*number*' -This warning indicates that the code doesn't provide enough arguments to match a format string and one of the missing arguments is an integer. - ## Remarks +This warning indicates that the code doesn't provide enough arguments to match a format string and one of the missing arguments is an integer. + This defect is likely to cause incorrect output and, in more dangerous cases, can lead to stack overflow. Code analysis name: `MISSING_INTEGER_ARGUMENT_TO_FORMAT_FUNCTION` diff --git a/docs/code-quality/c6067.md b/docs/code-quality/c6067.md index 0a181ff13ab..31e868af661 100644 --- a/docs/code-quality/c6067.md +++ b/docs/code-quality/c6067.md @@ -17,7 +17,7 @@ This defect is likely to cause a crash or corruption of some form. Code analysis name: `NON_STRING_ARGUMENT_TO_FORMAT_FUNCTION` -## Example +## Examples The following code generates this warning because an integer is passed instead of a string: diff --git a/docs/code-quality/c6101.md b/docs/code-quality/c6101.md index ee653b08a8f..0c0f39907df 100644 --- a/docs/code-quality/c6101.md +++ b/docs/code-quality/c6101.md @@ -9,10 +9,10 @@ helpviewer_keywords: ["C6101"] > Returning uninitialized memory '*parameter-name*'. -A successful path through the function doesn't set the `_Out_` annotated parameter. - ## Remarks +A successful path through the function doesn't set the `_Out_` annotated parameter. + The purpose of this warning is to avoid the use of uninitialized values by callers of the function. The analyzer assumes callers don't initialize any parameters annotated with `_Out_` before the function call, and checks that the function initializes them. The analyzer doesn't emit this warning if the function returns a value that indicates it had an error or wasn't successful. To fix this issue, make sure to initialize the `_Out_` parameter under all successful return paths. The error message contains the line numbers of an example path that doesn't initialize the parameter. If the initialization behavior is by design, then incorrect or missing SAL annotations are a likely cause for the warning. You can typically resolve these cases in one of two ways: Either change `_Out_` to a more appropriate annotation, or use the `_Success_()` annotation to help define the success/error states of the function. It's important for the static analysis tools to have correct annotations on the function when analyzing the call sites of the function. diff --git a/docs/code-quality/c6102.md b/docs/code-quality/c6102.md index 9c35f2bc5a7..1f38ea8f591 100644 --- a/docs/code-quality/c6102.md +++ b/docs/code-quality/c6102.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C6102"] > Using '*variable*' from failed function call at line '*location*'. +## Remarks + This warning is reported instead of [C6001](../code-quality/c6001.md) when a variable isn't set because it was marked as an `_Out_` parameter on a prior function call that failed. The problem might be that the prior called function isn't fully annotated. It may require `_Always_`, `_Outptr_result_nullonfailure_` (`_COM_Outptr_` for COM code), or a related annotation. diff --git a/docs/code-quality/c6103.md b/docs/code-quality/c6103.md index 6c9dfdcfcd8..d371d3f178f 100644 --- a/docs/code-quality/c6103.md +++ b/docs/code-quality/c6103.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C6103"] > Returning '*variable*' from failed function call at line '*location*'. +## Remarks + A successful path through the function is returning a variable that was used as an `_Out_` parameter to an internal function call that failed. The problem might be that the called function and the calling function aren't fully annotated. The called function may require `_Always_`, `_Outptr_result_nullonfailure_` (`_COM_Outptr_` for COM code), or a related annotation, and the calling function may require a `_Success_` annotation. Another possible cause for this warning is that the `_Success_` annotation on the called function is incorrect. diff --git a/docs/code-quality/c6200.md b/docs/code-quality/c6200.md index 2106582d1af..d4e40ffe109 100644 --- a/docs/code-quality/c6200.md +++ b/docs/code-quality/c6200.md @@ -10,10 +10,10 @@ ms.assetid: bbeb159b-4e97-4317-9a07-bb83cd03069a > Index '*index*' is out of valid index range '*min*' to '*max*' for nonstack buffer '*parameter-name*' -This warning indicates that an integer offset into the specified nonstack array exceeds the maximum bounds of that array, causing undefined behavior and potentially crashes. - ## Remarks +This warning indicates that an integer offset into the specified nonstack array exceeds the maximum bounds of that array, causing undefined behavior and potentially crashes. + One common cause of this defect is using the size of an array as an index into the array. Because C/C++ array indexing is zero-based, the maximum legal index into an array is one less than the number of array elements. Code analysis name: `INDEX_EXCEEDS_MAX_NONSTACK` diff --git a/docs/code-quality/c6201.md b/docs/code-quality/c6201.md index 85118a0503d..ea7ccab82ac 100644 --- a/docs/code-quality/c6201.md +++ b/docs/code-quality/c6201.md @@ -9,10 +9,10 @@ helpviewer_keywords: ["C6201"] > Index '*index-name*' is out of valid index range '*minimum*' to '*maximum*' for possibly stack allocated buffer '*variable*' -This warning indicates that an integer offset into the specified stack array exceeds the maximum bounds of that array. It might potentially cause stack overflow errors, undefined behavior, or crashes. - ## Remarks +This warning indicates that an integer offset into the specified stack array exceeds the maximum bounds of that array. It might potentially cause stack overflow errors, undefined behavior, or crashes. + One common cause of this defect is using an array's size as an index into the array. Because C/C++ array indexing is zero-based, the maximum legal index into an array is one less than the number of array elements. Code analysis name: `INDEX_EXCEEDS_MAX` diff --git a/docs/code-quality/c6211.md b/docs/code-quality/c6211.md index 10fe4fad3bb..42bc52405aa 100644 --- a/docs/code-quality/c6211.md +++ b/docs/code-quality/c6211.md @@ -10,10 +10,10 @@ ms.assetid: 9b68243b-534c-4a05-b789-bb155dfcba1e > Leaking memory '*pointer*' due to an exception. Consider using a local catch block to clean up memory -This warning indicates that allocated memory isn't freed when an exception is thrown. The statement at the end of the path could throw an exception. - ## Remarks +This warning indicates that allocated memory isn't freed when an exception is thrown. The statement at the end of the path could throw an exception. + The analyzer checks for this condition only when the `_Analysis_mode_(_Analysis_local_leak_checks_)` SAL annotation is specified. By default, this annotation is specified for Windows kernel mode (driver) code. For more information about SAL annotations, see [Using SAL Annotations to Reduce C/C++ Code Defects](../code-quality/using-sal-annotations-to-reduce-c-cpp-code-defects.md). Code analysis name: `MEMORY_LEAK_EXCEPTION` diff --git a/docs/code-quality/c6214.md b/docs/code-quality/c6214.md index 81284cb8b74..a7b35974469 100644 --- a/docs/code-quality/c6214.md +++ b/docs/code-quality/c6214.md @@ -10,10 +10,10 @@ ms.assetid: 233e2395-61c1-4a3b-a54b-f19a9ffc31a8 > Cast between semantically different integer types: HRESULT to a Boolean type -This warning indicates that an `HRESULT` is being cast to a Boolean type. The success value (`S_OK`) of an `HRESULT` equals 0. However, 0 indicates failure for a Boolean type. Casting an `HRESULT` to a Boolean type and then using it in a test expression will yield an incorrect result. - ## Remarks +This warning indicates that an `HRESULT` is being cast to a Boolean type. The success value (`S_OK`) of an `HRESULT` equals 0. However, 0 indicates failure for a Boolean type. Casting an `HRESULT` to a Boolean type and then using it in a test expression will yield an incorrect result. + Sometimes, this warning occurs if an `HRESULT` is being stored in a Boolean variable. Any comparison that uses the Boolean variable to test for `HRESULT` success or failure could lead to incorrect results. Code analysis name: `CAST_HRESULT_TO_BOOL` diff --git a/docs/code-quality/c6215.md b/docs/code-quality/c6215.md index 9e58ca0e1fa..391c1d0d90e 100644 --- a/docs/code-quality/c6215.md +++ b/docs/code-quality/c6215.md @@ -10,10 +10,10 @@ ms.assetid: f20cc258-9c0f-4eaa-828d-74f76580ca78 > Cast between semantically different integer types: a Boolean type to HRESULT -This warning indicates that a Boolean is being cast to an `HRESULT`. Boolean types indicate success by a non-zero value, whereas success (`S_OK`) in `HRESULT` is indicated by a value of 0. Casting a Boolean type to an `HRESULT` and then using it in a test expression will yield an incorrect result. - ## Remarks +This warning indicates that a Boolean is being cast to an `HRESULT`. Boolean types indicate success by a non-zero value, whereas success (`S_OK`) in `HRESULT` is indicated by a value of 0. Casting a Boolean type to an `HRESULT` and then using it in a test expression will yield an incorrect result. + This warning frequently occurs when a Boolean is used as an argument to `SUCCEEDED` or `FAILED` macro, which explicitly casts their arguments to an `HRESULT`. Code analysis name: `CAST_BOOL_TO_HRESULT` diff --git a/docs/code-quality/c6216.md b/docs/code-quality/c6216.md index 4f7cb22742b..10102a8948c 100644 --- a/docs/code-quality/c6216.md +++ b/docs/code-quality/c6216.md @@ -10,10 +10,10 @@ ms.assetid: d5c4dcf9-bfd7-4604-804f-9cc41b08d060 > Compiler-inserted cast between semantically different integral types: a Boolean type to HRESULT -A Boolean type is being used as an `HRESULT` without being explicitly cast. - ## Remarks +A Boolean type is being used as an `HRESULT` without being explicitly cast. + Boolean types indicate success by a non-zero value; success (`S_OK`) in `HRESULT` is indicated by a value of 0. A Boolean `false` value used as an `HRESULT` would indicate `S_OK`, which is frequently a mistake. Code analysis name: `COMPILER_INSERTED_CAST_BOOL_TO_HRESULT` diff --git a/docs/code-quality/c6220.md b/docs/code-quality/c6220.md index aa09af7c416..1d8a9fb470d 100644 --- a/docs/code-quality/c6220.md +++ b/docs/code-quality/c6220.md @@ -10,10 +10,10 @@ ms.assetid: a13524f4-0a1f-4670-b830-70b06e4d39d2 > Implicit cast between semantically different integer types: comparing HRESULT to -1. Consider using `SUCCEEDED` or `FAILED` macro instead -This warning indicates that an `HRESULT` is being compared with an explicit, non-`HRESULT` value of -1, which isn't a well-formed `HRESULT`. - ## Remarks +This warning indicates that an `HRESULT` is being compared with an explicit, non-`HRESULT` value of -1, which isn't a well-formed `HRESULT`. + A failure in `HRESULT` (`E_FAIL`) isn't represented by a -1. Therefore, an implicit cast of an `HRESULT` to an integer will generate an incorrect value and is likely to lead to the wrong result. Code analysis name: `COMPARING_HRESULT_TO_MINUS_ONE` diff --git a/docs/code-quality/c6221.md b/docs/code-quality/c6221.md index 4a6dc472a44..bc42f233547 100644 --- a/docs/code-quality/c6221.md +++ b/docs/code-quality/c6221.md @@ -10,10 +10,10 @@ ms.assetid: b07989b7-f50f-46e0-8ed8-d9269b3d3580 > Implicit cast between semantically different integer types: comparing HRESULT to an integer. Consider using `SUCCEEDED` or `FAILED` macros instead -This warning indicates that an `HRESULT` is being compared to an integer other than zero. - ## Remarks +This warning indicates that an `HRESULT` is being compared to an integer other than zero. + A success in an `HRESULT` (`S_OK`) is represented by a 0. Therefore, an implicit cast of an `HRESULT` to an integer generates an incorrect value and is likely to lead to the wrong result. The error is often caused by mistakenly expecting a function to return an integer when it actually returns an `HRESULT`. Code analysis name: `COMPARING_HRESULT_TO_INT` diff --git a/docs/code-quality/c6225.md b/docs/code-quality/c6225.md index 67997f7decd..db351285ad8 100644 --- a/docs/code-quality/c6225.md +++ b/docs/code-quality/c6225.md @@ -10,10 +10,10 @@ ms.assetid: 2d98ffec-9842-4cd1-b1a9-9ac9d1d2a136 > Implicit cast between semantically different integer types: assigning 1 or `TRUE` to `HRESULT`. Consider using `S_FALSE` instead -This warning indicates that an `HRESULT` is being assigned or initialized with a value of an explicit 1. Boolean types indicate success by a non-zero value; success (`S_OK`) in `HRESULT` is indicated by a value of 0. - ## Remarks +This warning indicates that an `HRESULT` is being assigned or initialized with a value of an explicit 1. Boolean types indicate success by a non-zero value; success (`S_OK`) in `HRESULT` is indicated by a value of 0. + This warning is frequently caused by accidental confusion of Boolean and `HRESULT` types. To indicate success, the symbolic constant `S_OK` should be used. Code analysis name: `ASSIGNING_ONE_TO_HRESULT` diff --git a/docs/code-quality/c6226.md b/docs/code-quality/c6226.md index 2a7ed4d40a3..19e7ac5e7ab 100644 --- a/docs/code-quality/c6226.md +++ b/docs/code-quality/c6226.md @@ -10,10 +10,10 @@ ms.assetid: c18aa576-b316-4f11-b48f-f5183fa49c7c > Implicit cast between semantically different integer types: assigning -1 to HRESULT. Consider using E_FAIL instead. -This warning indicates that an `HRESULT` is assigned or initialized to an explicit value of -1. - ## Remarks +This warning indicates that an `HRESULT` is assigned or initialized to an explicit value of -1. + This warning is frequently caused by accidental confusion of integer and `HRESULT` types. To indicate success, use the symbolic constant `S_OK` instead. To indicate failure, use the symbolic constants that start with E_*constant*, such as `E_FAIL`. For more information, see the [`SUCCEEDED`](/windows/desktop/api/winerror/nf-winerror-succeeded) and [`FAILED`](/windows/desktop/api/winerror/nf-winerror-failed) macros. diff --git a/docs/code-quality/c6235.md b/docs/code-quality/c6235.md index 3259ac77f37..2a4ae4498e0 100644 --- a/docs/code-quality/c6235.md +++ b/docs/code-quality/c6235.md @@ -10,10 +10,10 @@ ms.assetid: e225955e-0bb5-43a4-a83d-83290e209df4 > ('*non-zero constant*' \|\| '*expression*') is always a non-zero constant -This warning indicates that a non-zero constant value, other than one, was detected on the left side of a logical-or operation that occurs in a test context. The right side of the logical-or operation isn't evaluated because the resulting expression always evaluates to true. This language feature is referred to as "short-circuit evaluation." - ## Remarks +This warning indicates that a non-zero constant value, other than one, was detected on the left side of a logical-or operation that occurs in a test context. The right side of the logical-or operation isn't evaluated because the resulting expression always evaluates to true. This language feature is referred to as "short-circuit evaluation." + A non-zero constant value, other than one, suggests that the bitwise-AND operator (`&`) may have been intended. This warning isn't generated for the common idiom when the non-zero constant is 1, because of its use for selectively enabling code paths. However, it's generated if the non-zero constant evaluates to 1, for example `1+0`. Code analysis name: `NONZEROLOGICALOR` diff --git a/docs/code-quality/c6236.md b/docs/code-quality/c6236.md index b75a4c19048..55d7ceea6c5 100644 --- a/docs/code-quality/c6236.md +++ b/docs/code-quality/c6236.md @@ -10,10 +10,10 @@ ms.assetid: 3d5ae268-6f40-4c45-a483-b5b0e6a808fc > ('*expression*' \|\| '*non-zero constant*') is always a non-zero constant -This warning indicates that a non-zero constant value, other than one, was detected on the right side of a logical OR operation that occurs in a test context. Logically, it implies that the test is redundant and can be removed safely. Alternatively, it suggests that the programmer may have intended to use a different operator, for example, the equality (`==`), bitwise-AND (`&`) or bitwise-XOR (`^`) operator, to test for a specific value or flag. - ## Remarks +This warning indicates that a non-zero constant value, other than one, was detected on the right side of a logical OR operation that occurs in a test context. Logically, it implies that the test is redundant and can be removed safely. Alternatively, it suggests that the programmer may have intended to use a different operator, for example, the equality (`==`), bitwise-AND (`&`) or bitwise-XOR (`^`) operator, to test for a specific value or flag. + This warning isn't generated for the common idiom when the non-zero constant is 1, because of its use for selectively enabling code paths at compile time. However, the warning is generated if the non-zero constant is formed by an expression that evaluates to 1, for example, 1 + 0. Code analysis name: `LOGICALORNONZERO` diff --git a/docs/code-quality/c6237.md b/docs/code-quality/c6237.md index e80bb7c8e2c..0f296fb97ea 100644 --- a/docs/code-quality/c6237.md +++ b/docs/code-quality/c6237.md @@ -10,10 +10,10 @@ ms.assetid: a18d8630-e4d6-4132-b976-c1f3e7c5c3f0 > ('*zero*' && '*expression*') is always zero. '*expression*' is never evaluated and may have side effects -This warning indicates that a constant value of zero was detected on the left side of a logical-and operation that occurs in a test context. The resulting expression always evaluates to false. Therefore, the right side of the logical-AND operation isn't evaluated. This language feature is referred to as "short-circuit evaluation." - ## Remarks +This warning indicates that a constant value of zero was detected on the left side of a logical-and operation that occurs in a test context. The resulting expression always evaluates to false. Therefore, the right side of the logical-AND operation isn't evaluated. This language feature is referred to as "short-circuit evaluation." + You should examine the right side of the expression carefully: Ensure that any side effects such as assignment, function call, increment, and decrement operations needed for proper functionality aren't affected by the short-circuit evaluation. The expression (`0 && n`) produces no side effects and is commonly used to selectively choose code paths. diff --git a/docs/code-quality/c6239.md b/docs/code-quality/c6239.md index de5189b9b33..8c4ac68cc57 100644 --- a/docs/code-quality/c6239.md +++ b/docs/code-quality/c6239.md @@ -10,10 +10,10 @@ ms.assetid: c80e02bc-ff54-4fde-8c1c-5852853bed24 > ('*non-zero constant*' && '*expression*') always evaluates to the result of '*expression*'. Did you intend to use the bitwise-and operator? -This warning indicates that a non-zero constant value, other than one, was detected on the left side of a logical-AND operation that occurs in a test context. For example, the expression `( 2 && n )` is reduced to `(!!n)`, which is the Boolean value of `n`. - ## Remarks +This warning indicates that a non-zero constant value, other than one, was detected on the left side of a logical-AND operation that occurs in a test context. For example, the expression `( 2 && n )` is reduced to `(!!n)`, which is the Boolean value of `n`. + This warning typically indicates an attempt to check a bit mask in which the bitwise-AND (`&`) operator should be used, and isn't generated if the non-zero constant evaluates to 1 because of its use for selectively choosing code paths. Code analysis name: `NONZEROLOGICALAND` diff --git a/docs/code-quality/c6240.md b/docs/code-quality/c6240.md index 1e44d46db25..4732da3260b 100644 --- a/docs/code-quality/c6240.md +++ b/docs/code-quality/c6240.md @@ -10,10 +10,10 @@ ms.assetid: b9412ae4-622d-4aed-8c34-b67db1ccd48a > ('*expression*' && '*non-zero constant*') always evaluates to the result of '*expression*'. Did you intend to use the bitwise-and operator? -This warning indicates that a non-zero constant value, other than one, was detected on the right side of a logical-and operation that occurs in a test context. For example, the expression `(n && 3)` reduces to `(!!n)`, which is the Boolean value of `n`. - ## Remarks +This warning indicates that a non-zero constant value, other than one, was detected on the right side of a logical-and operation that occurs in a test context. For example, the expression `(n && 3)` reduces to `(!!n)`, which is the Boolean value of `n`. + This warning typically indicates an attempt to check a bit mask in which the bitwise-AND (`&`) operator should be used. It isn't generated if the non-zero constant evaluates to 1 because of its use for selectively choosing code paths. Code analysis name: `LOGICALANDNONZERO` diff --git a/docs/code-quality/c6242.md b/docs/code-quality/c6242.md index cdb9a7534ca..b5a47d7d4c3 100644 --- a/docs/code-quality/c6242.md +++ b/docs/code-quality/c6242.md @@ -10,10 +10,10 @@ ms.assetid: 523d46ce-8370-434c-a752-2e3a18cca9a5 > A jump out of this try-block forces local unwind. Incurs severe performance penalty -This warning indicates that a jump statement causes control-flow to leave the protected block of a `try-finally` other than by fall-through. - ## Remarks +This warning indicates that a jump statement causes control-flow to leave the protected block of a `try-finally` other than by fall-through. + Leaving the protected block of a `try-finally` other than by falling through from the last statement requires local unwind to occur. Local unwind typically requires approximately 1000 machine instructions, so it's detrimental to performance. Use **`__leave`** to exit the protected block of a try-finally. diff --git a/docs/code-quality/c6250.md b/docs/code-quality/c6250.md index c57c22512c1..629d78c9498 100644 --- a/docs/code-quality/c6250.md +++ b/docs/code-quality/c6250.md @@ -10,10 +10,10 @@ ms.assetid: 6949c9c5-e8bd-4f95-bc80-42073a293357 > Calling 'VirtualFree' without the MEM_RELEASE flag may free memory but not address descriptors (VADs); results in address space leaks -This warning indicates that a call to `VirtualFree` without the `MEM_RELEASE` flag only decommits the pages, and doesn't release them. To both decommit and release pages, use the `MEM_RELEASE` flag in the call to `VirtualFree`. If any pages in the region are committed, the function first decommits and then releases them. After this operation, the pages are in the free state. If you specify this flag, `dwSize` must be zero, and `lpAddress` must point to the base address returned by the `VirtualAlloc` function when the region was reserved. The function fails if either of these conditions isn't met. - ## Remarks +This warning indicates that a call to `VirtualFree` without the `MEM_RELEASE` flag only decommits the pages, and doesn't release them. To both decommit and release pages, use the `MEM_RELEASE` flag in the call to `VirtualFree`. If any pages in the region are committed, the function first decommits and then releases them. After this operation, the pages are in the free state. If you specify this flag, `dwSize` must be zero, and `lpAddress` must point to the base address returned by the `VirtualAlloc` function when the region was reserved. The function fails if either of these conditions isn't met. + You can ignore this warning if your code later frees the address space by calling `VirtualFree` with the `MEM_RELEASE` flag. For more information, see [`VirtualAlloc`](/windows/win32/api/memoryapi/nf-memoryapi-virtualalloc) and [`VirtualFree`](/windows/win32/api/memoryapi/nf-memoryapi-virtualfree). From f50aad3ac7ebeed038841d589a5944ade6833147 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Fri, 5 Sep 2025 23:14:31 +0800 Subject: [PATCH 1724/2255] Replace term "sample" with "example" for warning references in range [C6000, C6250] --- docs/code-quality/c6053.md | 6 +++--- docs/code-quality/c6054.md | 2 +- docs/code-quality/c6220.md | 2 +- docs/code-quality/c6237.md | 2 +- docs/code-quality/c6244.md | 2 +- docs/code-quality/c6250.md | 4 ++-- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/code-quality/c6053.md b/docs/code-quality/c6053.md index d8511f645c3..32d1aa049c7 100644 --- a/docs/code-quality/c6053.md +++ b/docs/code-quality/c6053.md @@ -20,7 +20,7 @@ Code analysis name: `MISSING_ZERO_TERMINATION1` ## Example -The following sample code generates this warning: +The following example code generates this warning: ```cpp #include @@ -36,7 +36,7 @@ size_t f( ) } ``` -To correct this warning, zero-terminate the string as shown in the following sample code: +To correct this warning, zero-terminate the string as shown in the following example code: ```cpp #include @@ -53,7 +53,7 @@ size_t f( ) } ``` -The following sample code corrects this warning using safe string manipulation `strncpy_s` function: +The following example code corrects this warning using safe string manipulation `strncpy_s` function: ```cpp #include diff --git a/docs/code-quality/c6054.md b/docs/code-quality/c6054.md index 511c7f6bfae..7adc5cdcf15 100644 --- a/docs/code-quality/c6054.md +++ b/docs/code-quality/c6054.md @@ -34,7 +34,7 @@ void g ( ) } ``` -To correct this warning, null-terminate `wcArray` before calling function `func()` as shown in the following sample code: +To correct this warning, null-terminate `wcArray` before calling function `func()` as shown in the following example code: ```cpp // C6054_good.cpp diff --git a/docs/code-quality/c6220.md b/docs/code-quality/c6220.md index 1d8a9fb470d..d28f2aa7218 100644 --- a/docs/code-quality/c6220.md +++ b/docs/code-quality/c6220.md @@ -20,7 +20,7 @@ Code analysis name: `COMPARING_HRESULT_TO_MINUS_ONE` ## Example -In most cases, warning C6220 is caused by code that mistakenly expects a function to return an integer, and to use -1 as a failure value, but instead the function returns an `HRESULT`. The following code sample generates this warning: +In most cases, warning C6220 is caused by code that mistakenly expects a function to return an integer, and to use -1 as a failure value, but instead the function returns an `HRESULT`. The following code example generates this warning: ```cpp #include diff --git a/docs/code-quality/c6237.md b/docs/code-quality/c6237.md index 0f296fb97ea..1b2f9b8858a 100644 --- a/docs/code-quality/c6237.md +++ b/docs/code-quality/c6237.md @@ -22,7 +22,7 @@ Code analysis name: `ZEROLOGICALANDLOSINGSIDEEFFECTS` ## Example -The following code shows various code samples that generate this warning: +The following code shows various code examples that generate this warning: ```cpp #include diff --git a/docs/code-quality/c6244.md b/docs/code-quality/c6244.md index b37d7c116d0..49fa103905a 100644 --- a/docs/code-quality/c6244.md +++ b/docs/code-quality/c6244.md @@ -42,7 +42,7 @@ void test() #pragma warning(pop) ``` -To correct this warning, use the following sample code: +To correct this warning, use the following example code: ```cpp #include diff --git a/docs/code-quality/c6250.md b/docs/code-quality/c6250.md index 629d78c9498..1d47aafd12a 100644 --- a/docs/code-quality/c6250.md +++ b/docs/code-quality/c6250.md @@ -24,7 +24,7 @@ Code analysis name: `WIN32UNRELEASEDVADS` ## Example -The following sample code generates warning C6250: +The following example code generates warning C6250: ```cpp #include @@ -70,7 +70,7 @@ VOID f( ) } ``` -To correct this warning, use the following sample code: +To correct this warning, use the following example code: ```cpp #include From 777885975bc21bc689328a93629c6c68ceb297e8 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Fri, 5 Sep 2025 23:20:04 +0800 Subject: [PATCH 1725/2255] Update metadata for warning references in range [C6000, C6250] --- docs/code-quality/c6001.md | 2 +- docs/code-quality/c6011.md | 3 +-- docs/code-quality/c6014.md | 3 +-- docs/code-quality/c6029.md | 2 +- docs/code-quality/c6030.md | 2 +- docs/code-quality/c6031.md | 2 +- docs/code-quality/c6053.md | 3 +-- docs/code-quality/c6054.md | 3 +-- docs/code-quality/c6059.md | 3 +-- docs/code-quality/c6063.md | 2 +- docs/code-quality/c6064.md | 2 +- docs/code-quality/c6065.md | 2 +- docs/code-quality/c6066.md | 2 +- docs/code-quality/c6067.md | 2 +- docs/code-quality/c6101.md | 2 +- docs/code-quality/c6102.md | 2 +- docs/code-quality/c6103.md | 2 +- docs/code-quality/c6200.md | 3 +-- docs/code-quality/c6201.md | 2 +- docs/code-quality/c6211.md | 3 +-- docs/code-quality/c6214.md | 3 +-- docs/code-quality/c6215.md | 3 +-- docs/code-quality/c6216.md | 3 +-- docs/code-quality/c6217.md | 2 +- docs/code-quality/c6219.md | 3 +-- docs/code-quality/c6220.md | 3 +-- docs/code-quality/c6221.md | 3 +-- docs/code-quality/c6225.md | 3 +-- docs/code-quality/c6226.md | 3 +-- docs/code-quality/c6230.md | 3 +-- docs/code-quality/c6235.md | 3 +-- docs/code-quality/c6236.md | 3 +-- docs/code-quality/c6237.md | 3 +-- docs/code-quality/c6239.md | 3 +-- docs/code-quality/c6240.md | 3 +-- docs/code-quality/c6242.md | 3 +-- docs/code-quality/c6244.md | 3 +-- docs/code-quality/c6246.md | 3 +-- docs/code-quality/c6248.md | 3 +-- docs/code-quality/c6250.md | 3 +-- 40 files changed, 40 insertions(+), 66 deletions(-) diff --git a/docs/code-quality/c6001.md b/docs/code-quality/c6001.md index 755bb88cb32..8d57dd9cc84 100644 --- a/docs/code-quality/c6001.md +++ b/docs/code-quality/c6001.md @@ -1,6 +1,6 @@ --- +title: "Warning C6001" description: "Learn more about: Warning C6001" -title: Warning C6001 ms.date: 10/04/2022 f1_keywords: ["C6001", "USING_UNINIT_VAR", "__WARNING_USING_UNINIT_VAR"] helpviewer_keywords: ["C6001"] diff --git a/docs/code-quality/c6011.md b/docs/code-quality/c6011.md index 7b5dd898802..2255b15e363 100644 --- a/docs/code-quality/c6011.md +++ b/docs/code-quality/c6011.md @@ -1,10 +1,9 @@ --- -title: Warning C6011 +title: "Warning C6011" description: "Reference for Visual Studio C++ code analysis warning C6011." ms.date: 10/04/2022 f1_keywords: ["C6011", "DEREF_NULL_PTR", "__WARNING_DEREF_NULL_PTR"] helpviewer_keywords: ["C6011"] -ms.assetid: 54b7bc2b-b8f5-43fc-a9a3-8189b03f249a --- # Warning C6011 diff --git a/docs/code-quality/c6014.md b/docs/code-quality/c6014.md index f954a159de5..6065a8b16c3 100644 --- a/docs/code-quality/c6014.md +++ b/docs/code-quality/c6014.md @@ -1,10 +1,9 @@ --- +title: "Warning C6014" description: "Learn more about: Warning C6014" -title: Warning C6014 ms.date: 10/03/2022 f1_keywords: ["C6014", "MEMORY_LEAK", "__WARNING_MEMORY_LEAK"] helpviewer_keywords: ["C6014"] -ms.assetid: ef76ec88-74d2-4a3b-b6fe-4b0851ab3372 --- # Warning C6014 diff --git a/docs/code-quality/c6029.md b/docs/code-quality/c6029.md index 7fa2fb56c07..2fd6c711b0a 100644 --- a/docs/code-quality/c6029.md +++ b/docs/code-quality/c6029.md @@ -1,5 +1,5 @@ --- -title: Warning C6029 +title: "Warning C6029" description: "Learn more about: Warning C6029" ms.date: 2/07/2023 f1_keywords: ["C6029", "USING_TAINTED_DATA", "__WARNING_USING_TAINTED_DATA"] diff --git a/docs/code-quality/c6030.md b/docs/code-quality/c6030.md index d839858cfaf..ab0f26a88e8 100644 --- a/docs/code-quality/c6030.md +++ b/docs/code-quality/c6030.md @@ -1,5 +1,5 @@ --- -title: Warning C6030 +title: "Warning C6030" description: "Describes C++ Code Analysis warning C6030 and how to resolve it." ms.date: 03/10/2023 f1_keywords: ["C6030", "USE_ATTRIBUTE_NORETURN", "__WARNING_USE_ATTRIBUTE_NORETURN"] diff --git a/docs/code-quality/c6031.md b/docs/code-quality/c6031.md index 7431e743474..f134bddcc00 100644 --- a/docs/code-quality/c6031.md +++ b/docs/code-quality/c6031.md @@ -1,5 +1,5 @@ --- -title: Warning C6031 +title: "Warning C6031" description: "Describes C++ Code Analysis warning C6031 and how to resolve it." ms.date: 4/5/2024 f1_keywords: ["C6031", "RETVAL_IGNORED_FUNC_COULD_FAIL", "__WARNING_RETVAL_IGNORED_FUNC_COULD_FAIL"] diff --git a/docs/code-quality/c6053.md b/docs/code-quality/c6053.md index 32d1aa049c7..80c15b91dd2 100644 --- a/docs/code-quality/c6053.md +++ b/docs/code-quality/c6053.md @@ -1,10 +1,9 @@ --- +title: "Warning C6053" description: "Learn more about: Warning C6053" -title: Warning C6053 ms.date: 10/04/2022 f1_keywords: ["C6053", "MISSING_ZERO_TERMINATION1", "__WARNING_MISSING_ZERO_TERMINATION1"] helpviewer_keywords: ["C6053"] -ms.assetid: 8e25566a-e3b9-470a-820d-64221a877c53 --- # Warning C6053 diff --git a/docs/code-quality/c6054.md b/docs/code-quality/c6054.md index 7adc5cdcf15..32962f45ea6 100644 --- a/docs/code-quality/c6054.md +++ b/docs/code-quality/c6054.md @@ -1,10 +1,9 @@ --- -title: Warning C6054 +title: "Warning C6054" description: "Reference guide to Microsoft C++ code analysis warning C6054." ms.date: 10/04/2022 f1_keywords: ["C6054", "MISSING_ZERO_TERMINATION2", "__WARNING_MISSING_ZERO_TERMINATION2"] helpviewer_keywords: ["C6054"] -ms.assetid: d573a5c1-7e74-402b-92e6-8085f967aa50 --- # Warning C6054 diff --git a/docs/code-quality/c6059.md b/docs/code-quality/c6059.md index d78c0f3f74b..2678b0fd252 100644 --- a/docs/code-quality/c6059.md +++ b/docs/code-quality/c6059.md @@ -1,10 +1,9 @@ --- +title: "Warning C6059" description: "Learn more about: Warning C6059" -title: Warning C6059 ms.date: 12/14/2023 f1_keywords: ["C6059", "BAD_CONCATENATION", "__WARNING_BAD_CONCATENATION"] helpviewer_keywords: ["C6059"] -ms.assetid: 343a4cd1-048a-4edf-bb4b-187097bb6093 --- # Warning C6059 diff --git a/docs/code-quality/c6063.md b/docs/code-quality/c6063.md index e84940d4b23..23882eb5492 100644 --- a/docs/code-quality/c6063.md +++ b/docs/code-quality/c6063.md @@ -1,6 +1,6 @@ --- +title: "Warning C6063" description: "Learn more about: Warning C6063" -title: Warning C6063 ms.date: 2/22/2023 f1_keywords: ["C6063", "MISSING_STRING_ARGUMENT_TO_FORMAT_FUNCTION", "__WARNING_MISSING_STRING_ARGUMENT_TO_FORMAT_FUNCTION"] helpviewer_keywords: ["C6063"] diff --git a/docs/code-quality/c6064.md b/docs/code-quality/c6064.md index 57de5c63e64..12cf98e9efe 100644 --- a/docs/code-quality/c6064.md +++ b/docs/code-quality/c6064.md @@ -1,6 +1,6 @@ --- +title: "Warning C6064" description: "Learn more about: Warning C6064" -title: Warning C6064 ms.date: 2/07/2023 f1_keywords: ["C6064", "MISSING_INTEGER_ARGUMENT_TO_FORMAT_FUNCTION", "__WARNING_MISSING_INTEGER_ARGUMENT_TO_FORMAT_FUNCTION"] helpviewer_keywords: ["C6064"] diff --git a/docs/code-quality/c6065.md b/docs/code-quality/c6065.md index 20ea8e81454..915ba25f3e1 100644 --- a/docs/code-quality/c6065.md +++ b/docs/code-quality/c6065.md @@ -1,6 +1,6 @@ --- +title: "Warning C6065" description: "Learn more about: Warning C6065" -title: Warning C6065 ms.date: 2/22/2023 f1_keywords: ["C6065", "MISSING_COUNTED_STRING_ARGUMENT_TO_FORMAT_FUNCTION", "__MISSING_COUNTED_STRING_ARGUMENT_TO_FORMAT_FUNCTION"] helpviewer_keywords: ["C6065"] diff --git a/docs/code-quality/c6066.md b/docs/code-quality/c6066.md index 8ae5f799022..8bdd672541d 100644 --- a/docs/code-quality/c6066.md +++ b/docs/code-quality/c6066.md @@ -1,6 +1,6 @@ --- +title: "Warning C6066" description: "Learn more about: Warning C6066" -title: Warning C6066 ms.date: 3/02/2023 f1_keywords: ["C6066", "NON_POINTER_ARGUMENT_TO_FORMAT_FUNCTION", "__WARNING_NON_POINTER_ARGUMENT_TO_FORMAT_FUNCTION"] helpviewer_keywords: ["C6066"] diff --git a/docs/code-quality/c6067.md b/docs/code-quality/c6067.md index 31e868af661..e2546bfb680 100644 --- a/docs/code-quality/c6067.md +++ b/docs/code-quality/c6067.md @@ -1,6 +1,6 @@ --- +title: "Warning C6067" description: "Learn more about: Warning C6067" -title: Warning C6067 ms.date: 3/02/2023 f1_keywords: ["C6067", "NON_STRING_ARGUMENT_TO_FORMAT_FUNCTION", "__WARNING_NON_STRING_ARGUMENT_TO_FORMAT_FUNCTION"] helpviewer_keywords: ["C6067"] diff --git a/docs/code-quality/c6101.md b/docs/code-quality/c6101.md index 0c0f39907df..11dd9b17a78 100644 --- a/docs/code-quality/c6101.md +++ b/docs/code-quality/c6101.md @@ -1,6 +1,6 @@ --- +title: "Warning C6101" description: "Learn more about: Warning C6101" -title: Warning C6101 ms.date: 02/7/2023 f1_keywords: ["C6101", "RETURN_UNINIT_VAR", "__WARNING_RETURN_UNINIT_VAR"] helpviewer_keywords: ["C6101"] diff --git a/docs/code-quality/c6102.md b/docs/code-quality/c6102.md index 1f38ea8f591..e003c84636b 100644 --- a/docs/code-quality/c6102.md +++ b/docs/code-quality/c6102.md @@ -1,5 +1,5 @@ --- -title: Warning C6102 +title: "Warning C6102" description: "Learn more about: Warning C6102" ms.date: 11/04/2016 f1_keywords: ["C6102"] diff --git a/docs/code-quality/c6103.md b/docs/code-quality/c6103.md index d371d3f178f..4ab5fd62efe 100644 --- a/docs/code-quality/c6103.md +++ b/docs/code-quality/c6103.md @@ -1,5 +1,5 @@ --- -title: Warning C6103 +title: "Warning C6103" description: "Learn more about: Warning C6103" ms.date: 11/04/2016 f1_keywords: ["C6103"] diff --git a/docs/code-quality/c6200.md b/docs/code-quality/c6200.md index d4e40ffe109..0003197a5fd 100644 --- a/docs/code-quality/c6200.md +++ b/docs/code-quality/c6200.md @@ -1,10 +1,9 @@ --- +title: "Warning C6200" description: "Learn more about: Warning C6200" -title: Warning C6200 ms.date: 08/16/2022 f1_keywords: ["C6200", "INDEX_EXCEEDS_MAX_NONSTACK", "__WARNING_INDEX_EXCEEDS_MAX_NONSTACK"] helpviewer_keywords: ["C6200"] -ms.assetid: bbeb159b-4e97-4317-9a07-bb83cd03069a --- # Warning C6200 diff --git a/docs/code-quality/c6201.md b/docs/code-quality/c6201.md index ea7ccab82ac..c1ec04f38cc 100644 --- a/docs/code-quality/c6201.md +++ b/docs/code-quality/c6201.md @@ -1,6 +1,6 @@ --- +title: "Warning C6201" description: "Learn more about: Warning C6201" -title: Warning C6201 ms.date: 11/17/2023 f1_keywords: ["C6201", "INDEX_EXCEEDS_MAX", "__WARNING_INDEX_EXCEEDS_MAX"] helpviewer_keywords: ["C6201"] diff --git a/docs/code-quality/c6211.md b/docs/code-quality/c6211.md index 42bc52405aa..015ad0081c3 100644 --- a/docs/code-quality/c6211.md +++ b/docs/code-quality/c6211.md @@ -1,10 +1,9 @@ --- +title: "Warning C6211" description: "Learn more about: Warning C6211" -title: Warning C6211 ms.date: 10/03/2022 f1_keywords: ["C6211", "MEMORY_LEAK_EXCEPTION", "__WARNING_MEMORY_LEAK_EXCEPTION"] helpviewer_keywords: ["C6211"] -ms.assetid: 9b68243b-534c-4a05-b789-bb155dfcba1e --- # Warning C6211 diff --git a/docs/code-quality/c6214.md b/docs/code-quality/c6214.md index a7b35974469..719f5333c2d 100644 --- a/docs/code-quality/c6214.md +++ b/docs/code-quality/c6214.md @@ -1,10 +1,9 @@ --- +title: "Warning C6214" description: "Learn more about: Warning C6214" -title: Warning C6214 ms.date: 10/03/2022 f1_keywords: ["C6214", "CAST_HRESULT_TO_BOOL", "__WARNING_CAST_HRESULT_TO_BOOL"] helpviewer_keywords: ["C6214"] -ms.assetid: 233e2395-61c1-4a3b-a54b-f19a9ffc31a8 --- # Warning C6214 diff --git a/docs/code-quality/c6215.md b/docs/code-quality/c6215.md index 391c1d0d90e..ef513041b8b 100644 --- a/docs/code-quality/c6215.md +++ b/docs/code-quality/c6215.md @@ -1,10 +1,9 @@ --- +title: "Warning C6215" description: "Learn more about: Warning C6215" -title: Warning C6215 ms.date: 11/04/2016 f1_keywords: ["C6215", "CAST_BOOL_TO_HRESULT", "__WARNING_CAST_BOOL_TO_HRESULT"] helpviewer_keywords: ["C6215"] -ms.assetid: f20cc258-9c0f-4eaa-828d-74f76580ca78 --- # Warning C6215 diff --git a/docs/code-quality/c6216.md b/docs/code-quality/c6216.md index 10102a8948c..b796a0da137 100644 --- a/docs/code-quality/c6216.md +++ b/docs/code-quality/c6216.md @@ -1,10 +1,9 @@ --- +title: "Warning C6216" description: "Learn more about: Warning C6216" -title: Warning C6216 ms.date: 11/04/2016 f1_keywords: ["C6216", "COMPILER_INSERTED_CAST_BOOL_TO_HRESULT", "__WARNING_COMPILER_INSERTED_CAST_BOOL_TO_HRESULT"] helpviewer_keywords: ["C6216"] -ms.assetid: d5c4dcf9-bfd7-4604-804f-9cc41b08d060 --- # Warning C6216 diff --git a/docs/code-quality/c6217.md b/docs/code-quality/c6217.md index 410cfb0fa56..042364717e6 100644 --- a/docs/code-quality/c6217.md +++ b/docs/code-quality/c6217.md @@ -1,6 +1,6 @@ --- +title: "Warning C6217" description: "Learn more about: Warning C6217" -title: Warning C6217 ms.date: 2/07/2023 f1_keywords: ["C6217", "TESTING_HRESULT_WITH_NOT", "__WARNING_TESTING_HRESULT_WITH_NOT"] helpviewer_keywords: ["C6217"] diff --git a/docs/code-quality/c6219.md b/docs/code-quality/c6219.md index 0533f905121..3dabeed9296 100644 --- a/docs/code-quality/c6219.md +++ b/docs/code-quality/c6219.md @@ -1,10 +1,9 @@ --- +title: "Warning C6219" description: "Learn more about: Warning C6219" -title: Warning C6219 ms.date: 11/04/2016 f1_keywords: ["C6219", "COMPARING_HRESULT_TO_ONE", "__WARNING_COMPARING_HRESULT_TO_ONE"] helpviewer_keywords: ["C6219"] -ms.assetid: 889a2de8-c0dc-4e8e-a46b-735384202675 --- # Warning C6219 diff --git a/docs/code-quality/c6220.md b/docs/code-quality/c6220.md index d28f2aa7218..b0ad41d021d 100644 --- a/docs/code-quality/c6220.md +++ b/docs/code-quality/c6220.md @@ -1,10 +1,9 @@ --- +title: "Warning C6220" description: "Learn more about: Warning C6220" -title: Warning C6220 ms.date: 10/03/2022 f1_keywords: ["C6220", "COMPARING_HRESULT_TO_MINUS_ONE", "__WARNING_COMPARING_HRESULT_TO_MINUS_ONE"] helpviewer_keywords: ["C6220"] -ms.assetid: a13524f4-0a1f-4670-b830-70b06e4d39d2 --- # Warning C6220 diff --git a/docs/code-quality/c6221.md b/docs/code-quality/c6221.md index bc42f233547..c4c2e80c8d5 100644 --- a/docs/code-quality/c6221.md +++ b/docs/code-quality/c6221.md @@ -1,10 +1,9 @@ --- +title: "Warning C6221" description: "Learn more about: Warning C6221" -title: Warning C6221 ms.date: 10/03/2022 f1_keywords: ["C6221", "COMPARING_HRESULT_TO_INT", "__WARNING_COMPARING_HRESULT_TO_INT"] helpviewer_keywords: ["C6221"] -ms.assetid: b07989b7-f50f-46e0-8ed8-d9269b3d3580 --- # Warning C6221 diff --git a/docs/code-quality/c6225.md b/docs/code-quality/c6225.md index db351285ad8..9e792a74553 100644 --- a/docs/code-quality/c6225.md +++ b/docs/code-quality/c6225.md @@ -1,10 +1,9 @@ --- +title: "Warning C6225" description: "Learn more about: Warning C6225" -title: Warning C6225 ms.date: 10/03/2022 f1_keywords: ["C6225", "ASSIGNING_ONE_TO_HRESULT", "__WARNING_ASSIGNING_ONE_TO_HRESULT"] helpviewer_keywords: ["C6225"] -ms.assetid: 2d98ffec-9842-4cd1-b1a9-9ac9d1d2a136 --- # Warning C6225 diff --git a/docs/code-quality/c6226.md b/docs/code-quality/c6226.md index 19e7ac5e7ab..48fcb9f1f07 100644 --- a/docs/code-quality/c6226.md +++ b/docs/code-quality/c6226.md @@ -1,10 +1,9 @@ --- +title: "Warning C6226" description: "Learn more about: Warning C6226" -title: Warning C6226 ms.date: 11/04/2016 f1_keywords: ["C6226", "ASSIGNING_MINUS_ONE_TO_HRESULT", "__WARNING_ASSIGNING_MINUS_ONE_TO_HRESULT"] helpviewer_keywords: ["C6226"] -ms.assetid: c18aa576-b316-4f11-b48f-f5183fa49c7c --- # Warning C6226 diff --git a/docs/code-quality/c6230.md b/docs/code-quality/c6230.md index 69c8b130482..ae8a8308813 100644 --- a/docs/code-quality/c6230.md +++ b/docs/code-quality/c6230.md @@ -1,10 +1,9 @@ --- +title: "Warning C6230" description: "Learn more about: Warning C6230" -title: Warning C6230 ms.date: 11/04/2016 f1_keywords: ["C6230", "USING_HRESULT_IN_BOOLEAN_CONTEXT", "__WARNING_USING_HRESULT_IN_BOOLEAN_CONTEXT"] helpviewer_keywords: ["C6230"] -ms.assetid: aa91291d-cdc5-4720-89d4-194ce0557e99 --- # Warning C6230 diff --git a/docs/code-quality/c6235.md b/docs/code-quality/c6235.md index 2a4ae4498e0..b94279a6979 100644 --- a/docs/code-quality/c6235.md +++ b/docs/code-quality/c6235.md @@ -1,10 +1,9 @@ --- +title: "Warning C6235" description: "Learn more about: Warning C6235" -title: Warning C6235 ms.date: 11/04/2016 f1_keywords: ["C6235", "NONZEROLOGICALOR", "__WARNING_NONZEROLOGICALOR"] helpviewer_keywords: ["C6235"] -ms.assetid: e225955e-0bb5-43a4-a83d-83290e209df4 --- # Warning C6235 diff --git a/docs/code-quality/c6236.md b/docs/code-quality/c6236.md index 55d7ceea6c5..fd1b5c35e91 100644 --- a/docs/code-quality/c6236.md +++ b/docs/code-quality/c6236.md @@ -1,10 +1,9 @@ --- +title: "Warning C6236" description: "Learn more about: Warning C6236" -title: Warning C6236 ms.date: 11/04/2016 f1_keywords: ["C6236", "LOGICALORNONZERO", "__WARNING_LOGICALORNONZERO"] helpviewer_keywords: ["C6236"] -ms.assetid: 3d5ae268-6f40-4c45-a483-b5b0e6a808fc --- # Warning C6236 diff --git a/docs/code-quality/c6237.md b/docs/code-quality/c6237.md index 1b2f9b8858a..8518bd67ad8 100644 --- a/docs/code-quality/c6237.md +++ b/docs/code-quality/c6237.md @@ -1,10 +1,9 @@ --- +title: "Warning C6237" description: "Learn more about: Warning C6237" -title: Warning C6237 ms.date: 11/04/2016 f1_keywords: ["C6237", "ZEROLOGICALANDLOSINGSIDEEFFECTS", "__WARNING_ZEROLOGICALANDLOSINGSIDEEFFECTS"] helpviewer_keywords: ["C6237"] -ms.assetid: a18d8630-e4d6-4132-b976-c1f3e7c5c3f0 --- # Warning C6237 diff --git a/docs/code-quality/c6239.md b/docs/code-quality/c6239.md index 8c4ac68cc57..0bf4cc1cb50 100644 --- a/docs/code-quality/c6239.md +++ b/docs/code-quality/c6239.md @@ -1,10 +1,9 @@ --- +title: "Warning C6239" description: "Learn more about: Warning C6239" -title: Warning C6239 ms.date: 11/04/2016 f1_keywords: ["C6239", "NONZEROLOGICALAND", "__WARNING_NONZEROLOGICALAND"] helpviewer_keywords: ["C6239"] -ms.assetid: c80e02bc-ff54-4fde-8c1c-5852853bed24 --- # Warning C6239 diff --git a/docs/code-quality/c6240.md b/docs/code-quality/c6240.md index 4732da3260b..7ed90bcdd6a 100644 --- a/docs/code-quality/c6240.md +++ b/docs/code-quality/c6240.md @@ -1,10 +1,9 @@ --- +title: "Warning C6240" description: "Learn more about: Warning C6240" -title: Warning C6240 ms.date: 11/04/2016 f1_keywords: ["C6240", "LOGICALANDNONZERO", "__WARNING_LOGICALANDNONZERO"] helpviewer_keywords: ["C6240"] -ms.assetid: b9412ae4-622d-4aed-8c34-b67db1ccd48a --- # Warning C6240 diff --git a/docs/code-quality/c6242.md b/docs/code-quality/c6242.md index b5a47d7d4c3..783981a099c 100644 --- a/docs/code-quality/c6242.md +++ b/docs/code-quality/c6242.md @@ -1,10 +1,9 @@ --- -title: Warning C6242 +title: "Warning C6242" description: "Describes Microsoft C/C++ compiler warning C6242." ms.date: 08/24/2020 f1_keywords: ["C6242", "LOCALUNWINDFORCED", "__WARNING_LOCALUNWINDFORCED"] helpviewer_keywords: ["C6242"] -ms.assetid: 523d46ce-8370-434c-a752-2e3a18cca9a5 --- # Warning C6242 diff --git a/docs/code-quality/c6244.md b/docs/code-quality/c6244.md index 49fa103905a..fa539eeac6c 100644 --- a/docs/code-quality/c6244.md +++ b/docs/code-quality/c6244.md @@ -1,10 +1,9 @@ --- +title: "Warning C6244" description: "Learn more about: Warning C6244" -title: Warning C6244 ms.date: 11/04/2016 f1_keywords: ["C6244", "LOCALDECLHIDESGLOBAL", "__WARNING_LOCALDECLHIDESGLOBAL"] helpviewer_keywords: ["C6244"] -ms.assetid: ce2c853d-3354-40f2-a8c5-569f6e4bfc0a --- # Warning C6244 diff --git a/docs/code-quality/c6246.md b/docs/code-quality/c6246.md index 7e4e33f786d..611da41b47e 100644 --- a/docs/code-quality/c6246.md +++ b/docs/code-quality/c6246.md @@ -1,10 +1,9 @@ --- +title: "Warning C6246" description: "Learn more about: Warning C6246" -title: Warning C6246 ms.date: 11/04/2016 f1_keywords: ["C6246", "LOCALDECLHIDESLOCAL", "__WARNING_LOCALDECLHIDESLOCAL"] helpviewer_keywords: ["C6246"] -ms.assetid: cd895cdb-ab3b-4671-ab43-419228fbf980 --- # Warning C6246 diff --git a/docs/code-quality/c6248.md b/docs/code-quality/c6248.md index f91fd895f45..6b85cdf3699 100644 --- a/docs/code-quality/c6248.md +++ b/docs/code-quality/c6248.md @@ -1,10 +1,9 @@ --- +title: "Warning C6248" description: "Learn more about: Warning C6248" -title: Warning C6248 ms.date: 08/16/2022 f1_keywords: ["C6248", "__WARNING_CREATINGNULLDACL", "CREATINGNULLDACL"] helpviewer_keywords: ["C6248"] -ms.assetid: 75743622-7a79-4fe8-81b9-dbdfa1a12f3d --- # Warning C6248 diff --git a/docs/code-quality/c6250.md b/docs/code-quality/c6250.md index 1d47aafd12a..aab691615a8 100644 --- a/docs/code-quality/c6250.md +++ b/docs/code-quality/c6250.md @@ -1,10 +1,9 @@ --- +title: "Warning C6250" description: "Learn more about: Warning C6250" -title: Warning C6250 ms.date: 10/03/2022 f1_keywords: ["C6250", "WIN32UNRELEASEDVADS", "__WARNING_WIN32UNRELEASEDVADS"] helpviewer_keywords: ["C6250"] -ms.assetid: 6949c9c5-e8bd-4f95-bc80-42073a293357 --- # Warning C6250 From 98365de6786da5694aca5809bfa3b2584d2cba74 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Fri, 5 Sep 2025 23:52:36 +0800 Subject: [PATCH 1726/2255] Fix `title` mix-up in "Math errors (M6101 through M6205)" --- .../tool-errors/math-errors-m6101-through-m6205.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/tool-errors/math-errors-m6101-through-m6205.md b/docs/error-messages/tool-errors/math-errors-m6101-through-m6205.md index b8e002612ab..f376b2a389d 100644 --- a/docs/error-messages/tool-errors/math-errors-m6101-through-m6205.md +++ b/docs/error-messages/tool-errors/math-errors-m6101-through-m6205.md @@ -1,5 +1,5 @@ --- -title: "Learn about math errors M6101 through M6205" +title: "Math errors (M6101 through M6205)" description: "Learn more about: Math errors (Mxxxx)" ms.date: 04/16/2019 --- From e185317fcab4ce54f0a6d8eb0c7e494ae607250b Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 6 Sep 2025 00:13:20 +0800 Subject: [PATCH 1727/2255] Structure error references in range [C2321, C2350] (#5575) * Add blockquotes for error messages in range [C2321, C2350] * Add "Remarks" and "Example" headings for error references in range [C2321, C2350] * Replace term "sample" with "example" for error references in range [C2321, C2350] * Update metadata for error references in range [C2321, C2350] --- .../compiler-errors-1/compiler-error-c2322.md | 9 +++++---- .../compiler-errors-1/compiler-error-c2323.md | 8 ++++++-- .../compiler-errors-1/compiler-error-c2324.md | 13 ++++++++----- .../compiler-errors-1/compiler-error-c2325.md | 13 ++++++++----- .../compiler-errors-1/compiler-error-c2326.md | 11 ++++++----- .../compiler-errors-1/compiler-error-c2327.md | 17 ++++++++++------- .../compiler-errors-1/compiler-error-c2332.md | 13 ++++++++----- .../compiler-errors-1/compiler-error-c2333.md | 13 ++++++++----- .../compiler-errors-1/compiler-error-c2334.md | 11 ++++++----- .../compiler-errors-1/compiler-error-c2337.md | 11 +++++++---- .../compiler-errors-1/compiler-error-c2338.md | 7 +++++-- .../compiler-errors-1/compiler-error-c2341.md | 13 ++++++++----- .../compiler-errors-1/compiler-error-c2344.md | 11 +++++++---- .../compiler-errors-1/compiler-error-c2345.md | 13 ++++++++----- .../compiler-errors-1/compiler-error-c2346.md | 11 ++++++----- .../compiler-errors-1/compiler-error-c2348.md | 13 ++++++++----- .../compiler-errors-1/compiler-error-c2350.md | 9 +++++---- 17 files changed, 119 insertions(+), 77 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2322.md b/docs/error-messages/compiler-errors-1/compiler-error-c2322.md index 3118e5213b8..fb2482086a5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2322.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2322.md @@ -1,13 +1,14 @@ --- -description: "Learn more about: Compiler Error C2322" title: "Compiler Error C2322" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2322" +ms.date: 11/04/2016 f1_keywords: ["C2322"] helpviewer_keywords: ["C2322"] -ms.assetid: f9b92005-618a-42d8-80e9-67ce769a9f3b --- # Compiler Error C2322 -'identifier' : address of dllimport 'dllimport' is not static +> 'identifier' : address of dllimport 'dllimport' is not static + +## Remarks A nonstatic value is given as the address of a function declared with `dllimport`. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2323.md b/docs/error-messages/compiler-errors-1/compiler-error-c2323.md index d17cf401d94..1c00da83503 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2323.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2323.md @@ -1,16 +1,20 @@ --- title: "Compiler Error C2323" description: "Learn more about: Compiler Error C2323" -ms.date: "03/20/2024" +ms.date: 03/20/2024 f1_keywords: ["C2323"] helpviewer_keywords: ["C2323"] --- # Compiler Error C2323 -'identifier': non-member operator `new` or `delete` functions may not be declared `static` or in a namespace other than the global namespace. +> 'identifier': non-member operator `new` or `delete` functions may not be declared `static` or in a namespace other than the global namespace. + +## Remarks The `new` and `delete` overload operators must be non-static, defined in the global namespace or as class members. +## Example + The following generates C2323: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2324.md b/docs/error-messages/compiler-errors-1/compiler-error-c2324.md index d1ef4836f5e..fcb0fd61a1a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2324.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2324.md @@ -1,18 +1,21 @@ --- -description: "Learn more about: Compiler Error C2324" title: "Compiler Error C2324" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2324" +ms.date: 11/04/2016 f1_keywords: ["C2324"] helpviewer_keywords: ["C2324"] -ms.assetid: 215f0544-85b0-452d-825f-17a388b6a61c --- # Compiler Error C2324 -'identifier' : unexpected to the right of 'name' +> 'identifier' : unexpected to the right of 'name' + +## Remarks A destructor is called using an incorrect identifier. -The following sample generates C2324: +## Example + +The following example generates C2324: ```cpp // C2324.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2325.md b/docs/error-messages/compiler-errors-1/compiler-error-c2325.md index 4085db3ee9c..4864fe0c516 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2325.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2325.md @@ -1,18 +1,21 @@ --- -description: "Learn more about: Compiler Error C2325" title: "Compiler Error C2325" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2325" +ms.date: 11/04/2016 f1_keywords: ["C2325"] helpviewer_keywords: ["C2325"] -ms.assetid: e6b0a186-3f2a-4adf-beae-fadd75492bf7 --- # Compiler Error C2325 -'type' : unexpected type to the right of 'name' +> 'type' : unexpected type to the right of 'name' + +## Remarks A call is made to a destructor of incorrect type. -The following sample generates C2325: +## Example + +The following example generates C2325: ```cpp // C2325.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2326.md b/docs/error-messages/compiler-errors-1/compiler-error-c2326.md index ba0c0c01128..5168287dacd 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2326.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2326.md @@ -1,20 +1,21 @@ --- -description: "Learn more about: Compiler Error C2326" title: "Compiler Error C2326" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2326" +ms.date: 11/04/2016 f1_keywords: ["C2326"] helpviewer_keywords: ["C2326"] -ms.assetid: 01a5ea40-de83-4e6f-a4e8-469f441258e0 --- # Compiler Error C2326 -'declarator' : function cannot access 'name' +> 'declarator' : function cannot access 'name' + +## Remarks The code tries to modify a member variable, which is not possible. ## Example -The following sample generates C2326: +The following example generates C2326: ```cpp // C2326.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2327.md b/docs/error-messages/compiler-errors-1/compiler-error-c2327.md index 1a2c9cb18a9..204783d6cb6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2327.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2327.md @@ -1,20 +1,23 @@ --- -description: "Learn more about: Compiler Error C2327" title: "Compiler Error C2327" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2327" +ms.date: 11/04/2016 f1_keywords: ["C2327"] helpviewer_keywords: ["C2327"] -ms.assetid: 95278c95-d1f9-4487-ad27-53311f5e8112 --- # Compiler Error C2327 -'symbol' : is not a type name, static, or enumerator +> 'symbol' : is not a type name, static, or enumerator + +## Remarks Code within a nested class attempts to access a member of the enclosing class that is not a type name, a static member, or an enumerator. When compiling with **/clr**, a common cause for C2327 is a property with the same name as the property type. -The following sample generates C2327: +## Examples + +The following example generates C2327: ```cpp // C2327.cpp @@ -62,7 +65,7 @@ struct B { }; ``` -The following sample generates C2327: +The following example generates C2327: ```cpp // C2327d.cpp @@ -96,7 +99,7 @@ namespace NA { } ``` -The following sample shows C2327 when a property has the same name as the property type: +The following example shows C2327 when a property has the same name as the property type: ```cpp // C2327f.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2332.md b/docs/error-messages/compiler-errors-1/compiler-error-c2332.md index 90d950d5461..8ff2d139da5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2332.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2332.md @@ -1,18 +1,21 @@ --- -description: "Learn more about: Compiler Error C2332" title: "Compiler Error C2332" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2332" +ms.date: 11/04/2016 f1_keywords: ["C2332"] helpviewer_keywords: ["C2332"] -ms.assetid: fb05cd68-e271-4bea-9fb7-ef4edb0a26ac --- # Compiler Error C2332 -'typedef' : missing tag name +> 'typedef' : missing tag name + +## Remarks The compiler found an incomplete type definition. -The following sample generates C2332: +## Example + +The following example generates C2332: ```cpp // C2332.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2333.md b/docs/error-messages/compiler-errors-1/compiler-error-c2333.md index b1be3f36fc8..ef87be83dac 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2333.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2333.md @@ -1,18 +1,21 @@ --- -description: "Learn more about: Compiler Error C2333" title: "Compiler Error C2333" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2333" +ms.date: 11/04/2016 f1_keywords: ["C2333"] helpviewer_keywords: ["C2333"] -ms.assetid: 2636fc1e-d3e7-4e68-8628-3c81a99ba813 --- # Compiler Error C2333 -'function' : error in function declaration; skipping function body +> 'function' : error in function declaration; skipping function body + +## Remarks This error occurs after another error, for member functions defined inside their class. -The following sample generates C2333: +## Example + +The following example generates C2333: ```cpp // C2333.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2334.md b/docs/error-messages/compiler-errors-1/compiler-error-c2334.md index 0ba710e94ac..83f01fe91e8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2334.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2334.md @@ -1,16 +1,17 @@ --- -description: "Learn more about: Compiler Error C2334" title: "Compiler Error C2334" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2334" +ms.date: 11/04/2016 f1_keywords: ["C2334"] helpviewer_keywords: ["C2334"] -ms.assetid: 36142855-e00b-4bbf-80f5-a301edeff46e --- # Compiler Error C2334 -unexpected token(s) preceding ': or {'; skipping apparent function body +> unexpected token(s) preceding ': or {'; skipping apparent function body + +## Example -The following sample generates C2334. This error occurs after error C2059: +The following example generates C2334. This error occurs after error C2059: ```cpp // C2334.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2337.md b/docs/error-messages/compiler-errors-1/compiler-error-c2337.md index ca4fe6be894..9f5f6c91490 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2337.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2337.md @@ -1,18 +1,21 @@ --- -description: "Learn more about: Compiler Error C2337" title: "Compiler Error C2337" -ms.date: "09/19/2019" +description: "Learn more about: Compiler Error C2337" +ms.date: 09/19/2019 f1_keywords: ["C2337"] helpviewer_keywords: ["C2337"] -ms.assetid: eccc9178-a15e-42cd-bbd0-3cea7cf2d55b --- # Compiler Error C2337 > '*attribute-name*' : attribute not found +## Remarks + Your code uses an attribute that isn't supported in this context. Or, the attribute isn't available in this version of the compiler. To resolve this issue, remove the unsupported attribute. -The following sample generates C2337: +## Example + +The following example generates C2337: ```cpp // C2337.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2338.md b/docs/error-messages/compiler-errors-1/compiler-error-c2338.md index 1ab34e8a9b8..db9b460f461 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2338.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2338.md @@ -1,15 +1,16 @@ --- -description: "Learn more about: Compiler Error C2338" title: "Compiler Error C2338" +description: "Learn more about: Compiler Error C2338" ms.date: 02/22/2022 f1_keywords: ["C2338"] helpviewer_keywords: ["C2338"] -ms.assetid: 49bba575-1de4-4963-86c6-ce3226a2ba51 --- # Compiler Error C2338 > *Error message* +## Remarks + Error C2338 can be caused by a **`static_assert`** error during compilation. The message is supplied by the **`static_assert`** parameters. Error C2338 can also be generated by external providers to the compiler. In most cases, these errors are reported by an attribute provider DLL, such as ATLPROV. Some common forms of this message include: @@ -24,6 +25,8 @@ These errors are often unrecoverable, and may be followed by a fatal compiler er To fix these issues, correct the attribute usage. For example, in some cases, attribute parameters must be declared before they can be used. If an ATL error number is provided, check the documentation for that error for more specific information. +## Example + In Standard C++11 and later, **`constexpr`** functions are no longer considered **`noexcept`** by default when used in a constant expression. This behavior change comes from the resolution of Core Working Group (CWG) [CWG 1351](https://wg21.link/cwg1351) and is enabled in [`/permissive-`](../../build/reference/permissive-standards-conformance.md) mode. The following example compiles in Visual Studio 2019 version 16.1 and earlier, but produces C2338 in Visual Studio 2019 version 16.2: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2341.md b/docs/error-messages/compiler-errors-1/compiler-error-c2341.md index 74f459a7bf2..3fe4850bb8d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2341.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2341.md @@ -1,18 +1,21 @@ --- -description: "Learn more about: Compiler Error C2341" title: "Compiler Error C2341" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2341" +ms.date: 11/04/2016 f1_keywords: ["C2341"] helpviewer_keywords: ["C2341"] -ms.assetid: aa2a7da5-e1c8-4225-9939-5bdc50158f31 --- # Compiler Error C2341 -'section name' : segment must be defined using #pragma data_seg, code_seg or section prior to use +> 'section name' : segment must be defined using #pragma data_seg, code_seg or section prior to use + +## Remarks An [allocate](../../cpp/allocate.md) statement refers to a segment not yet defined by [code_seg](../../preprocessor/code-seg.md), [data_seg](../../preprocessor/data-seg.md), or [section](../../preprocessor/section.md) pragmas. -The following sample generates C2341: +## Example + +The following example generates C2341: ```cpp // C2341.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2344.md b/docs/error-messages/compiler-errors-1/compiler-error-c2344.md index 4fb3b3f2f7b..978a21fe0fa 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2344.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2344.md @@ -1,17 +1,20 @@ --- -description: "Learn more about: Compiler Error C2344" title: "Compiler Error C2344" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2344" +ms.date: 11/04/2016 f1_keywords: ["C2344"] helpviewer_keywords: ["C2344"] -ms.assetid: a84c7b37-c84e-4345-8691-c23abb2dc193 --- # Compiler Error C2344 -align(#) : alignment must be power of two +> align(#) : alignment must be power of two + +## Remarks When using the [align](../../cpp/align-cpp.md) keyword, the value you pass must be a power of two. +## Example + For example, the following code generates C2344 because 3 is not a power of two: ```cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2345.md b/docs/error-messages/compiler-errors-1/compiler-error-c2345.md index 4044e32b0e7..6d621a6d8c2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2345.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2345.md @@ -1,18 +1,21 @@ --- -description: "Learn more about: Compiler Error C2345" title: "Compiler Error C2345" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2345" +ms.date: 11/04/2016 f1_keywords: ["C2345"] helpviewer_keywords: ["C2345"] -ms.assetid: e1cc88b0-0223-4d07-975b-fa99956a82bd --- # Compiler Error C2345 -align(value) : illegal alignment value +> align(value) : illegal alignment value + +## Remarks You passed a value to the [align](../../cpp/align-cpp.md) keyword that is outside the allowable range. -The following sample generates C2345: +## Example + +The following example generates C2345: ```cpp // C2345.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2346.md b/docs/error-messages/compiler-errors-1/compiler-error-c2346.md index 6c26eabe752..b4a03aaf133 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2346.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2346.md @@ -1,14 +1,15 @@ --- -description: "Learn more about: Compiler Error C2346" title: "Compiler Error C2346" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2346" +ms.date: 11/04/2016 f1_keywords: ["C2346"] helpviewer_keywords: ["C2346"] -ms.assetid: 246145be-5645-4cd6-867c-e3bc39e33dca --- # Compiler Error C2346 -'function' cannot be compiled as native: reason +> 'function' cannot be compiled as native: reason + +## Remarks The compiler was unable to compile a function to MSIL. @@ -22,7 +23,7 @@ For more information, see [managed, unmanaged](../../preprocessor/managed-unmana ## Example -The following sample generates C2346. +The following example generates C2346. ```cpp // C2346.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2348.md b/docs/error-messages/compiler-errors-1/compiler-error-c2348.md index 66e3378836a..f2d45f255de 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2348.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2348.md @@ -1,18 +1,21 @@ --- -description: "Learn more about: Compiler Error C2348" title: "Compiler Error C2348" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2348" +ms.date: 11/04/2016 f1_keywords: ["C2348"] helpviewer_keywords: ["C2348"] -ms.assetid: 4c4d701f-ccf1-46fe-9ddb-3f341684f269 --- # Compiler Error C2348 -'type name' : is not a C-style aggregate, cannot be exported in embedded-IDL +> 'type name' : is not a C-style aggregate, cannot be exported in embedded-IDL + +## Remarks To place a **`struct`** in a .idl file with the [export](../../windows/attributes/export.md) attribute, the **`struct`** must contain only data. -The following sample generates C2348: +## Example + +The following example generates C2348: ```cpp // C2348.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2350.md b/docs/error-messages/compiler-errors-1/compiler-error-c2350.md index f4ba948e013..8d4160dde22 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2350.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2350.md @@ -1,13 +1,14 @@ --- -description: "Learn more about: Compiler Error C2350" title: "Compiler Error C2350" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2350" +ms.date: 11/04/2016 f1_keywords: ["C2350"] helpviewer_keywords: ["C2350"] -ms.assetid: 3a50cb94-8ced-4df4-b602-c48916fa957d --- # Compiler Error C2350 -'identifier' is not a static member +> 'identifier' is not a static member + +## Remarks Nonstatic members of a class or structure cannot be defined. From 1b91fa610e252ce686964b104dcd424009955252 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 5 Sep 2025 09:24:18 -0700 Subject: [PATCH 1728/2255] code escape and acrolinx updates --- docs/sanitizers/asan-known-issues.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/sanitizers/asan-known-issues.md b/docs/sanitizers/asan-known-issues.md index 5cd2dfd6d0b..b5d899dabc0 100644 --- a/docs/sanitizers/asan-known-issues.md +++ b/docs/sanitizers/asan-known-issues.md @@ -27,7 +27,7 @@ The following options and functionality are incompatible with [`/fsanitize=addre ## Standard library support -The MSVC standard library (STL) makes partial use of the AddressSanitizer and provides other code safety checks. For more information, see [container-overflow error](./error-container-overflow.md). +The Microsoft Visual C++ (MSVC) standard library (STL) makes partial use of the AddressSanitizer and provides other code safety checks. For more information, see [`container-overflow` error](./error-container-overflow.md). When annotations are disabled, or in versions of the Standard Library that don't support them, AddressSanitizer exceptions raised in STL code still identify real bugs. However, they're more precise if annotations are enabled and you use a version of the Standard Library that supports them. @@ -37,7 +37,8 @@ This example demonstrates the lack of precision and the benefits of enabling ann // Compile with: cl /fsanitize=address /Zi #include -int main() { +int main() +{ // Create a vector of size 10, but with a capacity of 20. std::vector v(10); v.reserve(20); @@ -55,11 +56,11 @@ int main() { } ``` -## Overriding operator new and delete +## Overriding `operator new` and `delete` -AddressSanitizer (ASan) uses a custom version of `operator new` and `operator delete` to find allocation errors like [`alloc_dealloc_mismatch`](error-alloc-dealloc-mismatch.md). Running the linker with [`/INFERASANLIBS`](../build/reference/inferasanlibs.md) ensures that ASan's `new`/`delete` override has low precedence, so that the linker chooses any `operator new` or `operator delete` overrides in other libraries over ASan's custom versions. When this happens, ASan may not be able to catch some errors that rely on its custom `operator new` and `operator delete`. +AddressSanitizer (ASan) uses a custom version of `operator new` and `operator delete` to find allocation errors like [`alloc_dealloc_mismatch`](error-alloc-dealloc-mismatch.md). Run the linker with [`/INFERASANLIBS`](../build/reference/inferasanlibs.md) to ensure that ASan's `new`/`delete` override has lower precedence, so that the linker chooses `operator new` or `operator delete` overrides in other libraries over ASan's custom versions. When this happens, ASan might not catch some errors that rely on its custom `operator new` and `operator delete`. -[MFC](../mfc/mfc-concepts.md) includes custom overrides for `operator new` and `operator delete`. When `MFC` overrides are used instead of the ASan provided `operator new` and `operator delete`, ASan might miss errors entirely or classify them incorrectly as a result. The following errors may be missed or incorrectly classified: +[MFC](../mfc/mfc-concepts.md) includes custom overrides for `operator new` and `operator delete`. When Microsoft Foundation Classes (MFC) overrides are used instead of the ASan provided `operator new` and `operator delete`, ASan might miss errors entirely or classify them incorrectly as a result. The following errors may be missed or incorrectly classified: - [`alloc_dealloc_mismatch`](error-alloc-dealloc-mismatch.md) - [`double-free`](error-double-free.md) - [`heap-use-after-free`](error-heap-use-after-free.md) From 08c41c9140bf2b0e1a5e629586fb58b08a092d2e Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 6 Sep 2025 00:35:41 +0800 Subject: [PATCH 1729/2255] Fix mistakes and update "AddressSanitizer Runtime Options" topic (#5738) * Fix mistakes in "AddressSanitizer Runtime Options" topic * Clean up superfluous `./` link prefix and remove empty line in "AddressSanitizer Runtime Options" topic --- docs/sanitizers/asan-flags.md | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 02799d0c66b..1431a0094b5 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -7,24 +7,23 @@ helpviewer_keywords: ["AddressSanitizer options", "AddressSanitizer flags", "Add # AddressSanitizer Runtime Options -The following table lists the options for the AddressSanitizer. Enable them via the `ASAN_OPTIONS` environment variable or by overriding the `__asan_default_options()` user function described [here](./asan-runtime.md#runtime-options). +The following table lists the options for the AddressSanitizer. Enable them via the `ASAN_OPTIONS` environment variable or by overriding the `__asan_default_options()` user function described [here](asan-runtime.md#runtime-options). > [!NOTE] > These descriptions account for Microsoft Visual C++ (MSVC) specific behaviors, which may vary from Clang's runtime options. - | Flag | Default value | Description | |------|---------------|-------------| |`abort_on_error` | `false` | If `true`, ASan calls `abort()` instead of `_exit()` after printing the error report.| |`alloc_dealloc_mismatch` | `false` | Detects mismatched memory operations such as `malloc`/`delete`, `new[]`/`free`, and so on.| |`allocator_frees_and_returns_null_on_realloc_zero` | `true` | If set to `true`, `realloc(p, 0)` is the same as `free(p)` by default (which is the same as the POSIX standard). If set to `false`, `realloc(p, 0)` returns a pointer to an allocated space that can't be used. | |`allocator_may_return_null` | `false` | If `true`, the allocator returns `nullptr` when out of memory. Instead of crashing, ASan emits a warning about the allocator's failure and execution continues.| -|`allow_user_poisoning` | `true` | If `true`, you may manually mark memory regions as poisoned or unpoisoned using the [Manual AddressSanitizer poising interface](./asan-runtime.md#poisoning).| +|`allow_user_poisoning` | `true` | If `true`, you may manually mark memory regions as poisoned or unpoisoned using the [Manual AddressSanitizer poisoning interface](asan-runtime.md#poisoning).| |`check_initialization_order` | `false` | If `true`, attempts to catch initialization order issues.| |`continue_on_error` | 0 | Allows an application to continue running while reporting memory safety errors.
0-disabled.
1-enabled; errors are sent to `stdout`.
2-enabled; errors are sent to `stderr`.
For more information, see [continue_on_error](asan-continue-on-error.md).| -|`detect_container_overflow` | `true` | If `true`, honor the container overflow annotations. For more information, see [ContainerOverflow](./error-container-overflow.md).| +|`detect_container_overflow` | `true` | If `true`, honor the container overflow annotations. For more information, see [ContainerOverflow](error-container-overflow.md).| |`detect_invalid_pointer_pairs` | `false` | If `true`, ASan detects operations like `<`, `<=`, `>`, `>=`, and `-` on invalid pointer pairs such as pointers that belong to different objects.| -|`detect_stack_use_after_return` | `false` | Experimental. If `true`, ASan enables `stack-use-after-return` checking at runtime. Requires `/fsanitize-address-use-after-return`. For more information, see [stack-use-after-return](./error-stack-use-after-return.md).| +|`detect_stack_use_after_return` | `false` | Experimental. If `true`, ASan enables `stack-use-after-return` checking at runtime. Requires `/fsanitize-address-use-after-return`. For more information, see [stack-use-after-return](error-stack-use-after-return.md).| |`exitcode` | 1 | Overrides the program exit status with this value if ASan finds an error.| |`external_symbolizer_path` | "" | Path to the external symbolizer. If empty, ASan searches `$PATH` for the symbolizer.| |`fast_unwind_on_malloc` | `true` | If available, ASan uses the fast frame-pointer-based unwinder on `malloc`/`free`.| @@ -33,7 +32,7 @@ The following table lists the options for the AddressSanitizer. Enable them via |`handle_sigfpe` | `true` | If `true`, ASan handles `SIGFPE` errors.| |`handle_sigill` | `true` | If `true`, ASan handles `SIGILL` errors.| |`help` | `false` | If `true`, ASan prints the flag options to the console.| -|`iat_overwrite`|`error`|`error` - reports an error whenever an overwrite is detected.
`protect` - trys to avoid using the overwritten definition.
`ignore` - doesn't try to correct any overwritten functions. For more information, see [`iat_overwrite`](./asan-runtime.md#msvc-specific-addresssanitizer-runtime-options).| +|`iat_overwrite`|`error`|`error` - reports an error whenever an overwrite is detected.
`protect` - tries to avoid using the overwritten definition.
`ignore` - doesn't try to correct any overwritten functions. For more information, see [`iat_overwrite`](asan-runtime.md#msvc-specific-addresssanitizer-runtime-options).| |`include_if_exists` | "" | Reads options from the specified file. ASan doesn't fail if the file doesn't exist.| |`intercept_strpbrk` | `true` | If `true`, uses custom wrappers for `strpbrk` to find more errors.| |`intercept_strspn` | `true` | If `true`, uses custom wrappers for `strspn` and `strcspn` to find more errors.| @@ -42,7 +41,7 @@ The following table lists the options for the AddressSanitizer. Enable them via |`malloc_fill_byte` | `0xbe` | Value used to fill newly allocated memory.| |`max_malloc_fill_size` | 4096 | The ASan allocator fills an allocation with `malloc_fill_byte` up to `max_malloc_fill_size` on a call to `malloc`.| |`max_redzone` | 2048 | Maximum size (in bytes) of redzones around heap objects.| -|`new_delete_type_mismatch` | `true` | Report errors on mismatch between the size of `new` and `delete`. For more information, see [`new-delete-type-mismatch`](./error-new-delete-type-mismatch.md).| +|`new_delete_type_mismatch` | `true` | Report errors on mismatch between the size of `new` and `delete`. For more information, see [`new-delete-type-mismatch`](error-new-delete-type-mismatch.md).| |`poison_heap` | `true` | If `true`, poison the heap memory on allocation and deallocation. `false` is useful for benchmarking the allocator or instrumentator.| |`poison_partial` | `true` | If `true`, poison partially addressable 8-byte aligned words. This flag affects heap and global buffers, but not stack buffers.| |`print_cmdline` | `false` | Print the command line on crash. With `continue_on_error` set >= 1, prints the current working directory and is `UTF-16` aware.| @@ -54,20 +53,20 @@ The following table lists the options for the AddressSanitizer. Enable them via |`sleep_before_dying` | 0 | Number of seconds to sleep between printing an error report and terminating the program.| |`stack_trace_format` | `DEFAULT` | Format string used to render stack frames. `DEFAULT` - ` #%n %p %F %L`. List of available placeholders:
`%%` - represents a `'%'` character
`%n` - frame number (copy of `frame_no`)
`%p` - `PC`
`%m` - path to module
`%o` - offset in the module
`%f` - function name
`%q` - if available, offset in the function
`%s` - path to source file
`%l` - line in the source file
`%c` - column in the source file
`%F` - if the function is known, ASan prints `in ` followed by the offset in this function if source is unknown
`%S` - ASan prints file/line/column information
`%L` - If file information is available, ASan prints the file name, line, and column. If module information is available, ASan prints the module name, offset, and architecture. If neither are available, ASan prints `()`
`%M` - If known, ASan prints module basename and offset, or `PC`| |`strict_memcmp` | `true` | If `true`, assumes that `memcmp(p1, p2, n)` always reads `n` bytes before comparing `p1` and `p2`.| -|`strict_string_checks` | `false` | If `true` checks that string arguments are properly null-terminated.| +|`strict_string_checks` | `false` | If `true`, checks that string arguments are properly null-terminated.| |`strip_path_prefix` | "" | Strips this prefix from file paths in error reports.| |`symbolize` | `true` | If `true`, use the `llvm-symbolizer` to turn virtual addresses into file or line locations.| |`symbolize_inline_frames` | `true` | Print inlined frames in stacktraces.| |`verbosity` | 0 | Verbosity level:
0 - default verbosity.
1 - more output.
2 - even more output.
3 - maximum verbosity. | -|`windows_fast_fail_on_error`| `false` | If `true`, the process can terminate with a `__fastfail(71)` after printing the error report. For more information, see [`windows_fast_fail_on_error`](./asan-runtime.md#msvc-specific-addresssanitizer-runtime-options).| +|`windows_fast_fail_on_error`| `false` | If `true`, the process can terminate with a `__fastfail(71)` after printing the error report. For more information, see [`windows_fast_fail_on_error`](asan-runtime.md#msvc-specific-addresssanitizer-runtime-options).| |`windows_hook_legacy_allocators`| `true` |If `true`, enables hooking of (`Global`/`Local`)(`Alloc`/`Free`/`Size`/`ReAlloc`/`Lock`/`Unlock`) functions.| ## See also -[AddressSanitizer overview](./asan.md)\ -[AddressSanitizer known issues](./asan-known-issues.md)\ -[AddressSanitizer build and language reference](./asan-building.md)\ -[AddressSanitizer shadow bytes](./asan-shadow-bytes.md)\ -[AddressSanitizer cloud or distributed testing](./asan-offline-crash-dumps.md)\ -[AddressSanitizer debugger integration](./asan-debugger-integration.md)\ -[AddressSanitizer error examples](./asan-error-examples.md) +[AddressSanitizer overview](asan.md)\ +[AddressSanitizer known issues](asan-known-issues.md)\ +[AddressSanitizer build and language reference](asan-building.md)\ +[AddressSanitizer shadow bytes](asan-shadow-bytes.md)\ +[AddressSanitizer cloud or distributed testing](asan-offline-crash-dumps.md)\ +[AddressSanitizer debugger integration](asan-debugger-integration.md)\ +[AddressSanitizer error examples](asan-error-examples.md) From 4e014ebdc92c27cfd8d4d56b3f2d45e82b2959a1 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 6 Sep 2025 00:50:35 +0800 Subject: [PATCH 1730/2255] Structure warning references in range [C5051, C5999] (#5739) * Add "Remarks" headings for warning references in range [C5051, C5999] * Replace term "sample" with "example" for warning references in range [C5051, C5999] * Update metadata for warning references in range [C5051, C5999] --- docs/error-messages/compiler-warnings/c5054.md | 2 +- docs/error-messages/compiler-warnings/c5055.md | 2 +- docs/error-messages/compiler-warnings/c5056.md | 2 +- docs/error-messages/compiler-warnings/c5105.md | 6 +++--- docs/error-messages/compiler-warnings/c5208.md | 4 ++-- docs/error-messages/compiler-warnings/c5240.md | 2 +- docs/error-messages/compiler-warnings/c5243.md | 4 ++-- docs/error-messages/compiler-warnings/c5247.md | 2 +- docs/error-messages/compiler-warnings/c5248.md | 2 +- docs/error-messages/compiler-warnings/c5262.md | 4 ++-- docs/error-messages/compiler-warnings/c5267.md | 2 +- docs/error-messages/compiler-warnings/c5301-c5302.md | 4 ++-- .../compiler-warnings/compiler-warning-c5072.md | 4 +++- .../compiler-warnings/compiler-warning-level-4-c5266.md | 6 ++++-- 14 files changed, 25 insertions(+), 21 deletions(-) diff --git a/docs/error-messages/compiler-warnings/c5054.md b/docs/error-messages/compiler-warnings/c5054.md index ba2e219746f..669dbdd5b40 100644 --- a/docs/error-messages/compiler-warnings/c5054.md +++ b/docs/error-messages/compiler-warnings/c5054.md @@ -1,6 +1,6 @@ --- title: "Compiler Warning C5054" -description: Compiler warning C5054 description and solution. +description: "Compiler warning C5054 description and solution." ms.date: 02/22/2022 f1_keywords: ["C5054"] helpviewer_keywords: ["C5054"] diff --git a/docs/error-messages/compiler-warnings/c5055.md b/docs/error-messages/compiler-warnings/c5055.md index 4cca582e6c3..4a469b06fd3 100644 --- a/docs/error-messages/compiler-warnings/c5055.md +++ b/docs/error-messages/compiler-warnings/c5055.md @@ -1,6 +1,6 @@ --- title: "Compiler Warning C5055" -description: Compiler warning C5055 description and solution. +description: "Compiler warning C5055 description and solution." ms.date: 02/22/2022 f1_keywords: ["C5055"] helpviewer_keywords: ["C5055"] diff --git a/docs/error-messages/compiler-warnings/c5056.md b/docs/error-messages/compiler-warnings/c5056.md index cb757f7ad98..8d775f210eb 100644 --- a/docs/error-messages/compiler-warnings/c5056.md +++ b/docs/error-messages/compiler-warnings/c5056.md @@ -1,6 +1,6 @@ --- title: "Compiler Warning C5056" -description: Compiler warning C5056 description and solution. +description: "Compiler warning C5056 description and solution." ms.date: 02/22/2022 f1_keywords: ["C5056"] helpviewer_keywords: ["C5056"] diff --git a/docs/error-messages/compiler-warnings/c5105.md b/docs/error-messages/compiler-warnings/c5105.md index e7167acca07..e1f17302e9a 100644 --- a/docs/error-messages/compiler-warnings/c5105.md +++ b/docs/error-messages/compiler-warnings/c5105.md @@ -1,7 +1,7 @@ --- title: "Compiler Warning C5105" -description: Compiler warning C5105 description and solution. -ms.date: "09/22/2019" +description: "Compiler warning C5105 description and solution." +ms.date: 09/22/2019 f1_keywords: ["C5105"] helpviewer_keywords: ["C5105"] --- @@ -29,7 +29,7 @@ To turn off the warning for an entire project in the Visual Studio IDE: ## Example -This sample program shows how to generate warning C5105, and how to fix it. +This example program shows how to generate warning C5105, and how to fix it. ```cpp // C5105.cpp diff --git a/docs/error-messages/compiler-warnings/c5208.md b/docs/error-messages/compiler-warnings/c5208.md index 53a7f3b9eaf..a1369dcd380 100644 --- a/docs/error-messages/compiler-warnings/c5208.md +++ b/docs/error-messages/compiler-warnings/c5208.md @@ -1,6 +1,6 @@ --- title: "Compiler Warning C5208, Error C7626" -description: Compiler warning C5208 and error C7626 description and solution. +description: "Compiler warning C5208 and error C7626 description and solution." ms.date: 04/18/2021 f1_keywords: ["C5208", "C7626"] helpviewer_keywords: ["C5208", "C7626"] @@ -33,7 +33,7 @@ To turn off the warning for an entire project in the Visual Studio IDE: ## Example -The following sample shows the constructs that are no longer allowed in unnamed structs. Depending on the standards mode specified, C5208 or C7626 errors or warnings are emitted: +The following example shows the constructs that are no longer allowed in unnamed structs. Depending on the standards mode specified, C5208 or C7626 errors or warnings are emitted: ```cpp struct Base { }; diff --git a/docs/error-messages/compiler-warnings/c5240.md b/docs/error-messages/compiler-warnings/c5240.md index 8389182d68d..942056d2bcd 100644 --- a/docs/error-messages/compiler-warnings/c5240.md +++ b/docs/error-messages/compiler-warnings/c5240.md @@ -1,6 +1,6 @@ --- title: "Compiler Warning C5240" -description: Compiler warning C5240 description and solution. +description: "Compiler warning C5240 description and solution." ms.date: 02/22/2022 f1_keywords: ["C5240"] helpviewer_keywords: ["C5240"] diff --git a/docs/error-messages/compiler-warnings/c5243.md b/docs/error-messages/compiler-warnings/c5243.md index 0679327d677..3a14cbf8fee 100644 --- a/docs/error-messages/compiler-warnings/c5243.md +++ b/docs/error-messages/compiler-warnings/c5243.md @@ -1,6 +1,6 @@ --- -title: Compiler warning C5243 -description: Compiler warning C5243 description and solution. +title: "Compiler warning C5243" +description: "Compiler warning C5243 description and solution." ms.date: 08/09/2021 f1_keywords: ["C5243"] helpviewer_keywords: ["C5243"] diff --git a/docs/error-messages/compiler-warnings/c5247.md b/docs/error-messages/compiler-warnings/c5247.md index 6ac55f629e1..f3d1101d2c1 100644 --- a/docs/error-messages/compiler-warnings/c5247.md +++ b/docs/error-messages/compiler-warnings/c5247.md @@ -1,6 +1,6 @@ --- title: "Compiler Warning C5247" -description: Compiler warning C5247 description and solution. +description: "Compiler warning C5247 description and solution." ms.date: 08/02/2021 f1_keywords: ["C5247"] helpviewer_keywords: ["C5247"] diff --git a/docs/error-messages/compiler-warnings/c5248.md b/docs/error-messages/compiler-warnings/c5248.md index 255771462ec..ea45b79264c 100644 --- a/docs/error-messages/compiler-warnings/c5248.md +++ b/docs/error-messages/compiler-warnings/c5248.md @@ -1,6 +1,6 @@ --- title: "Compiler Warning C5248" -description: Compiler warning C5248 description and solution. +description: "Compiler warning C5248 description and solution." ms.date: 08/02/2021 f1_keywords: ["C5248"] helpviewer_keywords: ["C5248"] diff --git a/docs/error-messages/compiler-warnings/c5262.md b/docs/error-messages/compiler-warnings/c5262.md index d51098ead1a..48fcd340ecc 100644 --- a/docs/error-messages/compiler-warnings/c5262.md +++ b/docs/error-messages/compiler-warnings/c5262.md @@ -1,6 +1,6 @@ --- title: "Compiler warning (level 1, error, off) C5262" -description: Compiler warning C5262 description and solution. +description: "Compiler warning C5262 description and solution." ms.date: 03/01/2023 f1_keywords: ["C5262"] helpviewer_keywords: ["C5262"] @@ -17,7 +17,7 @@ Compiler warning C5262 is new in Visual Studio 2022 version 17.4, and is both of ## Example -The sample code shows diagnostics for `switch` cases that fall through without `break` or `return` statements or the `[[fallthrough]]` attribute. +The example code shows diagnostics for `switch` cases that fall through without `break` or `return` statements or the `[[fallthrough]]` attribute. ```cpp // C5262.cpp diff --git a/docs/error-messages/compiler-warnings/c5267.md b/docs/error-messages/compiler-warnings/c5267.md index 23b1a7a5db6..a43a8ec9824 100644 --- a/docs/error-messages/compiler-warnings/c5267.md +++ b/docs/error-messages/compiler-warnings/c5267.md @@ -1,6 +1,6 @@ --- title: "Compiler warning C5267" -description: Learn about compiler warning C5267 +description: "Learn about compiler warning C5267" ms.date: 11/08/2023 f1_keywords: ["C5267"] helpviewer_keywords: ["C5267"] diff --git a/docs/error-messages/compiler-warnings/c5301-c5302.md b/docs/error-messages/compiler-warnings/c5301-c5302.md index 0283c7f2f6d..4bc84869d81 100644 --- a/docs/error-messages/compiler-warnings/c5301-c5302.md +++ b/docs/error-messages/compiler-warnings/c5301-c5302.md @@ -1,6 +1,6 @@ --- title: "Compiler warnings (level 1) C5301 and C5302" -description: Compiler warnings C5301 and C5302 description and solution. +description: "Compiler warnings C5301 and C5302 description and solution." ms.date: 03/01/2023 f1_keywords: ["C5301", "C5302"] helpviewer_keywords: ["C5301", "C5302"] @@ -19,7 +19,7 @@ These compiler warnings are new in Visual Studio 2022 version 17.4. ## Example -The sample code shows a diagnostic for a `for` loop that decrements the index, but it uses a `<=` comparison that tests whether the index is less than a value higher than the starting value. +The example code shows a diagnostic for a `for` loop that decrements the index, but it uses a `<=` comparison that tests whether the index is less than a value higher than the starting value. ```C // C5302.c diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c5072.md b/docs/error-messages/compiler-warnings/compiler-warning-c5072.md index b3216cb81bb..481bbadd2a5 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c5072.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c5072.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler Warning (level 1) C5072" title: "Compiler Warning (level 1) C5072" +description: "Learn more about: Compiler Warning (level 1) C5072" ms.date: 02/09/2024 f1_keywords: ["C5072"] helpviewer_keywords: ["C5072"] @@ -9,6 +9,8 @@ helpviewer_keywords: ["C5072"] > ASAN enabled without debug information emission. Enable debug info for better ASAN error reporting +## Remarks + This warning occurs when you compile with [Address Sanitizer](/cpp/sanitizers/asan) (ASAN) turned on, but you don't also instruct the compiler to emit debug info. ASAN uses debug info to provide better diagnostics. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c5266.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c5266.md index f4e794516d5..840a8a254bb 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c5266.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c5266.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler Warning (level 4) C5266" title: "Compiler Warning (level 4) C5266" +description: "Learn more about: Compiler Warning (level 4) C5266" ms.date: 01/18/2024 f1_keywords: ["C5266"] helpviewer_keywords: ["C5266"] @@ -9,6 +9,8 @@ helpviewer_keywords: ["C5266"] > 'const' qualifier on return type has no effect +## Remarks + The C++ Standard specifies that a top-level const (or volatile) qualification on a function return type is ignored. This warning is off by default.\ @@ -16,7 +18,7 @@ This warning was introduced in Visual Studio 17.6 ## Example -The following sample generates C5266: +The following example generates C5266: ```cpp // compile with: /W4 /c From cab0bee583f177a658c82c9665abcc170316f60d Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 5 Sep 2025 10:16:24 -0700 Subject: [PATCH 1731/2255] make user name case match --- docs/docfx.json | 66 ++++++++++++++++++++++++------------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/docs/docfx.json b/docs/docfx.json index 23b40c4fd3a..871ff2d1351 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -186,39 +186,39 @@ "windows/**/**.{md,yml}": "1825-days" }, "author": { - "index.md": "tylermsft", - "assembler/**/**.{md,yml}": "tylermsft", - "attributes/**/**.{md,yml}": "tylermsft", - "atl/**/**.{md,yml}": "tylermsft", - "atl-mfc-shared/**/**.{md,yml}": "tylermsft", - "build/**/**.{md,yml}": "tylermsft", - "build-insights/**/**.{md,yml}": "tylermsft", - "c-language/**/**.{md,yml}": "tylermsft", - "c-runtime-library/**/**.{md,yml}": "tylermsft", - "cloud/**/**.{md,yml}": "tylermsft", - "code-quality/**/**.{md,yml}": "tylermsft", - "cpp/**/**.{md,yml}": "tylermsft", - "cppcx/**/**.{md,yml}": "tylermsft", - "cross-platform/**/**.{md,yml}": "tylermsft", - "data/**/**.{md,yml}": "tylermsft", - "dotnet/**/**.{md,yml}": "tylermsft", - "error-messages/**/**.{md,yml}": "tylermsft", - "extensions/**/**.{md,yml}": "tylermsft", - "get-started/**/**.{md,yml}": "tylermsft", - "ide/**/**.{md,yml}": "tylermsft", - "intrinsics/**/**.{md,yml}": "tylermsft", - "linux/**/**.{md,yml}": "tylermsft", - "mfc/**/**.{md,yml}": "tylermsft", - "overview/**/**.{md,yml}": "tylermsft", - "parallel/**/**.{md,yml}": "tylermsft", - "porting/**/**.{md,yml}": "tylermsft", - "preprocessor/**/**.{md,yml}": "tylermsft", - "safeint/**/**.{md,yml}": "tylermsft", - "sanitizers/**/**.{md,yml}": "tylermsft", - "security/**/**.{md,yml}": "tylermsft", - "standard-library/**/**.{md,yml}": "tylermsft", - "text/**/**.{md,yml}": "tylermsft", - "windows/**/**.{md,yml}": "tylermsft" + "index.md": "TylerMSFT", + "assembler/**/**.{md,yml}": "TylerMSFT", + "attributes/**/**.{md,yml}": "TylerMSFT", + "atl/**/**.{md,yml}": "TylerMSFT", + "atl-mfc-shared/**/**.{md,yml}": "TylerMSFT", + "build/**/**.{md,yml}": "TylerMSFT", + "build-insights/**/**.{md,yml}": "TylerMSFT", + "c-language/**/**.{md,yml}": "TylerMSFT", + "c-runtime-library/**/**.{md,yml}": "TylerMSFT", + "cloud/**/**.{md,yml}": "TylerMSFT", + "code-quality/**/**.{md,yml}": "TylerMSFT", + "cpp/**/**.{md,yml}": "TylerMSFT", + "cppcx/**/**.{md,yml}": "TylerMSFT", + "cross-platform/**/**.{md,yml}": "TylerMSFT", + "data/**/**.{md,yml}": "TylerMSFT", + "dotnet/**/**.{md,yml}": "TylerMSFT", + "error-messages/**/**.{md,yml}": "TylerMSFT", + "extensions/**/**.{md,yml}": "TylerMSFT", + "get-started/**/**.{md,yml}": "TylerMSFT", + "ide/**/**.{md,yml}": "TylerMSFT", + "intrinsics/**/**.{md,yml}": "TylerMSFT", + "linux/**/**.{md,yml}": "TylerMSFT", + "mfc/**/**.{md,yml}": "TylerMSFT", + "overview/**/**.{md,yml}": "TylerMSFT", + "parallel/**/**.{md,yml}": "TylerMSFT", + "porting/**/**.{md,yml}": "TylerMSFT", + "preprocessor/**/**.{md,yml}": "TylerMSFT", + "safeint/**/**.{md,yml}": "TylerMSFT", + "sanitizers/**/**.{md,yml}": "TylerMSFT", + "security/**/**.{md,yml}": "TylerMSFT", + "standard-library/**/**.{md,yml}": "TylerMSFT", + "text/**/**.{md,yml}": "TylerMSFT", + "windows/**/**.{md,yml}": "TylerMSFT" }, "ms.author": { "index.md": "twhitney", From 3e1559290a5fc0badd6a66a0ed981483edc9e471 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 6 Sep 2025 02:00:12 +0800 Subject: [PATCH 1732/2255] Structure warning references in range [C4941, C5050] (#5737) * Add blockquotes for warning messages in range [C4941, C5050] * Add "Remarks" and "Example" headings for warning references in range [C4941, C5050] * Replace term "sample" with "example" for warning references in range [C4941, C5050] * Update metadata for warning references in range [C4941, C5050] --- docs/error-messages/compiler-warnings/c5033.md | 6 +++--- docs/error-messages/compiler-warnings/c5037.md | 2 +- docs/error-messages/compiler-warnings/c5038.md | 2 +- docs/error-messages/compiler-warnings/c5045.md | 4 ++-- docs/error-messages/compiler-warnings/c5046.md | 6 +++--- docs/error-messages/compiler-warnings/c5050.md | 2 +- .../compiler-warnings/compiler-warning-c4950.md | 11 ++++++----- .../compiler-warnings/compiler-warning-c4956.md | 7 +++---- .../compiler-warnings/compiler-warning-c4957.md | 7 +++---- .../compiler-warnings/compiler-warning-c4958.md | 11 +++++------ .../compiler-warnings/compiler-warning-c4959.md | 7 +++---- .../compiler-warnings/compiler-warning-c4961.md | 9 +++++---- .../compiler-warnings/compiler-warning-c4962.md | 9 +++++---- .../compiler-warnings/compiler-warning-c4972.md | 11 ++++++----- .../compiler-warnings/compiler-warning-c4984.md | 6 +++--- .../compiler-warnings/compiler-warning-c4986.md | 15 ++++++++------- .../compiler-warning-level-1-and-level-4-c4949.md | 15 +++++++++------ .../compiler-warning-level-1-c4944.md | 15 ++++++++------- .../compiler-warning-level-1-c4945.md | 13 ++++++++----- .../compiler-warning-level-1-c4946.md | 11 +++++++---- .../compiler-warning-level-1-c4947.md | 11 ++++++----- .../compiler-warning-level-1-c4951.md | 7 ++++--- .../compiler-warning-level-1-c4952.md | 7 ++++--- .../compiler-warning-level-1-c4953.md | 7 ++++--- .../compiler-warning-level-1-c4964.md | 13 ++++++++----- .../compiler-warning-level-1-c4965.md | 11 ++++++----- .../compiler-warning-level-1-c4997.md | 13 ++++++++----- .../compiler-warning-level-2-c4948.md | 9 +++++---- .../compiler-warning-level-3-c4995.md | 5 ++--- .../compiler-warning-level-3-c4996.md | 9 ++++----- .../compiler-warning-level-4-c4960.md | 9 +++++---- .../compiler-warning-level-4-c4985.md | 7 ++++--- 32 files changed, 150 insertions(+), 127 deletions(-) diff --git a/docs/error-messages/compiler-warnings/c5033.md b/docs/error-messages/compiler-warnings/c5033.md index d60b67afabf..c816d98078c 100644 --- a/docs/error-messages/compiler-warnings/c5033.md +++ b/docs/error-messages/compiler-warnings/c5033.md @@ -1,6 +1,6 @@ --- title: "Compiler warning C5033" -description: Describes the causes and fixes for compiler warning C5033. +description: "Describes the causes and fixes for compiler warning C5033." ms.date: 05/03/2021 f1_keywords: ["C5033"] helpviewer_keywords: ["C5033"] @@ -9,10 +9,10 @@ helpviewer_keywords: ["C5033"] > '*storage-class-keyword*' is no longer a supported storage class -The **`auto`** and **`register`** storage class keywords have been deprecated or removed from the C++ language. - ## Remarks +The **`auto`** and **`register`** storage class keywords have been deprecated or removed from the C++ language. + **Visual Studio 2010 and later:** In C++11, the **`auto`** keyword is no longer a C++ storage-class specifier, and the **`register`** keyword is deprecated. **Visual Studio 2017 version 15.7 and later:** (available in [`/std:c++17`](../../build/reference/std-specify-language-standard-version.md) mode and later): The **`register`** keyword is removed from the C++ language in C++17 and later standards. diff --git a/docs/error-messages/compiler-warnings/c5037.md b/docs/error-messages/compiler-warnings/c5037.md index 95c12967f23..d55293db78a 100644 --- a/docs/error-messages/compiler-warnings/c5037.md +++ b/docs/error-messages/compiler-warnings/c5037.md @@ -1,6 +1,6 @@ --- title: "Compiler warning C5037" -description: Describes the causes and fixes for compiler warning C5037. +description: "Describes the causes and fixes for compiler warning C5037." ms.date: 04/18/2021 f1_keywords: ["C5037"] helpviewer_keywords: ["C5037"] diff --git a/docs/error-messages/compiler-warnings/c5038.md b/docs/error-messages/compiler-warnings/c5038.md index a5ecba20d56..9046d2792d6 100644 --- a/docs/error-messages/compiler-warnings/c5038.md +++ b/docs/error-messages/compiler-warnings/c5038.md @@ -1,6 +1,6 @@ --- title: "Compiler Warning C5038" -description: Describes the causes and fixes for compiler warning C5038. +description: "Describes the causes and fixes for compiler warning C5038." ms.date: 05/03/2021 f1_keywords: ["C5038"] helpviewer_keywords: ["C5038"] diff --git a/docs/error-messages/compiler-warnings/c5045.md b/docs/error-messages/compiler-warnings/c5045.md index 13e3406a604..d9d9bc3aea7 100644 --- a/docs/error-messages/compiler-warnings/c5045.md +++ b/docs/error-messages/compiler-warnings/c5045.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning C5045" title: "Compiler Warning C5045" -ms.date: "06/21/2018" +description: "Learn more about: Compiler Warning C5045" +ms.date: 06/21/2018 f1_keywords: ["C5045"] helpviewer_keywords: ["C5045"] --- diff --git a/docs/error-messages/compiler-warnings/c5046.md b/docs/error-messages/compiler-warnings/c5046.md index 83c0ba4b116..2cfd74a6498 100644 --- a/docs/error-messages/compiler-warnings/c5046.md +++ b/docs/error-messages/compiler-warnings/c5046.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 2) C5046" title: "Compiler Warning C5046" -ms.date: "03/21/2019" +description: "Learn more about: Compiler Warning (level 2) C5046" +ms.date: 03/21/2019 f1_keywords: ["C5046"] helpviewer_keywords: ["C5046"] --- @@ -25,7 +25,7 @@ This warning is new in Visual Studio 2017 version 15.8. ## Example -This sample shows two C5046 warnings: +This example shows two C5046 warnings: ```cpp // C5046p.cpp diff --git a/docs/error-messages/compiler-warnings/c5050.md b/docs/error-messages/compiler-warnings/c5050.md index 37158601358..7df6abc376f 100644 --- a/docs/error-messages/compiler-warnings/c5050.md +++ b/docs/error-messages/compiler-warnings/c5050.md @@ -1,6 +1,6 @@ --- title: "Compiler Warning C5050" -description: Compiler warning C5050 description and solution. +description: "Compiler warning C5050 description and solution." ms.date: 05/03/2021 f1_keywords: ["C5050"] helpviewer_keywords: ["C5050"] diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4950.md b/docs/error-messages/compiler-warnings/compiler-warning-c4950.md index e4ca8421480..e7fef9ffffd 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4950.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4950.md @@ -1,14 +1,15 @@ --- -description: "Learn more about: Compiler Warning C4950" title: "Compiler Warning C4950" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning C4950" +ms.date: 11/04/2016 f1_keywords: ["C4950"] helpviewer_keywords: ["C4950"] -ms.assetid: 50226a5c-c664-4d09-ac59-e9e874ca244f --- # Compiler Warning C4950 -'type_or_member' : marked as obsolete +> 'type_or_member' : marked as obsolete + +## Remarks A member or type was marked as obsolete with the attribute. @@ -16,7 +17,7 @@ C4950 is always issued as an error. You can turn off this warning by using the [ ## Example -The following sample generates C4950: +The following example generates C4950: ```cpp // C4950.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4956.md b/docs/error-messages/compiler-warnings/compiler-warning-c4956.md index cd8382e9920..d2be88d6b50 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4956.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4956.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning C4956" title: "Compiler Warning C4956" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning C4956" +ms.date: 11/04/2016 f1_keywords: ["C4956"] helpviewer_keywords: ["C4956"] -ms.assetid: 9154f2d1-d49f-4e07-90d2-0e9bc028011a --- # Compiler Warning C4956 @@ -20,7 +19,7 @@ This warning is issued as an error and can be disabled with the [warning](../../ ## Example -The following sample generates C4956: +The following example generates C4956: ```cpp // C4956.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4957.md b/docs/error-messages/compiler-warnings/compiler-warning-c4957.md index 762111b68af..cf4900c21d3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4957.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4957.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning C4957" title: "Compiler Warning C4957" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning C4957" +ms.date: 11/04/2016 f1_keywords: ["C4957"] helpviewer_keywords: ["C4957"] -ms.assetid: a18c52d4-23e2-44f1-b4b5-f7fa5a7f3987 --- # Compiler Warning C4957 @@ -24,7 +23,7 @@ This warning is issued as an error and can be disabled with the [warning](../../ ## Example -The following sample generates C4957: +The following example generates C4957: ```cpp // C4957.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4958.md b/docs/error-messages/compiler-warnings/compiler-warning-c4958.md index dffd446ceec..5f8f2fd50c3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4958.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4958.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning C4958" title: "Compiler Warning C4958" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning C4958" +ms.date: 11/04/2016 f1_keywords: ["C4958"] helpviewer_keywords: ["C4958"] -ms.assetid: e79b9e9c-d572-4a3a-a3b6-60962b70864a --- # Compiler Warning C4958 @@ -20,9 +19,9 @@ The **/clr:safe** compiler option is deprecated in Visual Studio 2015 and unsupp This warning is issued as an error and can be disabled with the [warning](../../preprocessor/warning.md) pragma or the [/wd](../../build/reference/compiler-option-warning-level.md) compiler option. -## Example +## Examples -The following sample generates C4958: +The following example generates C4958: ```cpp // C4958.cpp @@ -39,7 +38,7 @@ int main( ) { The compiler implements array operations with pointer arithmetic. Therefore, native arrays are not verifiable; use a CLR array instead. For more information, see [array](../../extensions/arrays-cpp-component-extensions.md). -The following sample generates C4958: +The following example generates C4958: ```cpp // C4958b.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4959.md b/docs/error-messages/compiler-warnings/compiler-warning-c4959.md index f1ac31d8d2e..98be05f3e47 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4959.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4959.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning C4959" title: "Compiler Warning C4959" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning C4959" +ms.date: 11/04/2016 f1_keywords: ["C4959"] helpviewer_keywords: ["C4959"] -ms.assetid: 3a128f3e-4d8a-4565-ba1a-5d32fdeb5982 --- # Compiler Warning C4959 @@ -22,7 +21,7 @@ This warning is issued as an error and can be disabled with the [warning](../../ ## Example -The following sample generates C4959: +The following example generates C4959: ```cpp // C4959.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4961.md b/docs/error-messages/compiler-warnings/compiler-warning-c4961.md index 59298487148..19f28ac5064 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4961.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4961.md @@ -1,13 +1,14 @@ --- -description: "Learn more about: Compiler Warning C4961" title: "Compiler Warning C4961" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning C4961" +ms.date: 11/04/2016 f1_keywords: ["C4961"] helpviewer_keywords: ["C4961"] -ms.assetid: fe22d99f-5a12-45d3-a7cf-867773a71e16 --- # Compiler Warning C4961 -No profile data was merged into '.pgd file', profile-guided optimizations disabled +> No profile data was merged into '.pgd file', profile-guided optimizations disabled + +## Remarks No profile data (.pgc files) were available, so profile-guided optimizations cannot take place. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4962.md b/docs/error-messages/compiler-warnings/compiler-warning-c4962.md index 3a1468d7299..68e7379ebe0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4962.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4962.md @@ -1,14 +1,15 @@ --- -description: "Learn more about: Compiler Warning C4962" title: "Compiler Warning C4962" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning C4962" +ms.date: 11/04/2016 f1_keywords: ["C4962"] helpviewer_keywords: ["C4962"] -ms.assetid: 62b156fe-04e5-4a6e-9339-6ab148185f87 --- # Compiler Warning C4962 -'function' : Profile-guided optimizations disabled because optimizations caused profile data to become inconsistent" +> 'function' : Profile-guided optimizations disabled because optimizations caused profile data to become inconsistent" + +## Remarks A function was not compiled with /LTCG:PGO, because count (profile) data for the function was unreliable. Redo profiling to regenerate the .pgc file that contains the unreliable profile data for that function. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4972.md b/docs/error-messages/compiler-warnings/compiler-warning-c4972.md index 95e783ed6a2..b115d03e149 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4972.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4972.md @@ -1,14 +1,15 @@ --- -description: "Learn more about: Compiler Warning C4972" title: "Compiler Warning C4972" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning C4972" +ms.date: 11/04/2016 f1_keywords: ["C4972"] helpviewer_keywords: ["C4972"] -ms.assetid: d18e8e65-b2ef-4d75-a207-fbd0c17c9060 --- # Compiler Warning C4972 -Directly modifying or treating the result of an unbox operation as an lvalue is unverifiable +> Directly modifying or treating the result of an unbox operation as an lvalue is unverifiable + +## Remarks Dereferencing a handle to a value type, also known as unboxing, and then assigning to it is not verifiable. @@ -16,7 +17,7 @@ For more information, see [Boxing](../../extensions/boxing-cpp-component-extensi ## Example -The following sample generates C4972. +The following example generates C4972. ```cpp // C4972.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4984.md b/docs/error-messages/compiler-warnings/compiler-warning-c4984.md index 6fb4984b33d..c30dbf85bd3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4984.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4984.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning C4984" title: "Compiler Warning C4984" -ms.date: "08/19/2019" +description: "Learn more about: Compiler Warning C4984" +ms.date: 08/19/2019 f1_keywords: ["C4984"] helpviewer_keywords: ["C4984"] --- @@ -19,7 +19,7 @@ This warning is available starting in Visual Studio 2017 version 15.3. For infor ## Example -This sample generates C4984, and shows ways to fix it: +This example generates C4984, and shows ways to fix it: ```cpp // C4984.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c4986.md b/docs/error-messages/compiler-warnings/compiler-warning-c4986.md index 7cb4e24c1de..975f37ff915 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c4986.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c4986.md @@ -1,22 +1,23 @@ --- -description: "Learn more about: Compiler Warning C4986" title: "Compiler Warning C4986" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning C4986" +ms.date: 11/04/2016 f1_keywords: ["C4986"] helpviewer_keywords: ["C4986"] -ms.assetid: a3a7b008-29dd-4203-85f3-7740ab6790bb --- # Compiler Warning C4986 -'function': exception specification does not match previous declaration +> 'function': exception specification does not match previous declaration + +## Remarks This warning can be generated when there is an exception specification in one declaration and not the other. By default, C4986 is off. For more information, see [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). -## Examples +## Example -The following sample generates C4986. +The following example generates C4986. ```cpp class X { }; @@ -28,7 +29,7 @@ void f1() } ``` -The following sample eliminates this warning. +The following example eliminates this warning. ```cpp class X { }; diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-and-level-4-c4949.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-and-level-4-c4949.md index 896988405d4..e4dd9831b20 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-and-level-4-c4949.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-and-level-4-c4949.md @@ -1,18 +1,21 @@ --- -description: "Learn more about: Compiler Warning (level 1 and level 4) C4949" title: "Compiler Warning (level 1 and level 4) C4949" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1 and level 4) C4949" +ms.date: 11/04/2016 f1_keywords: ["C4949"] helpviewer_keywords: ["C4949"] -ms.assetid: 34f45a05-c115-49cb-9f67-0bd4f0735d9b --- # Compiler Warning (level 1 and level 4) C4949 -pragmas 'managed' and 'unmanaged' are meaningful only when compiled with '/clr[:option]' +> pragmas 'managed' and 'unmanaged' are meaningful only when compiled with '/clr[:option]' + +## Remarks The compiler ignores the [managed](../../preprocessor/managed-unmanaged.md) and unmanaged pragmas if the source code is not compiled with [/clr](../../build/reference/clr-common-language-runtime-compilation.md). This warning is informational. -The following sample generates C4949: +## Example + +The following example generates C4949: ```cpp // C4949.cpp @@ -22,7 +25,7 @@ The following sample generates C4949: When **#pragma unmanaged** is used without **/clr**, C4949 is a level 4 warning. -The following sample generates C4949: +The following example generates C4949: ```cpp // C4949b.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4944.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4944.md index ab27de2d54f..6d314e924af 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4944.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4944.md @@ -1,20 +1,21 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4944" title: "Compiler Warning (level 1) C4944" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4944" +ms.date: 11/04/2016 f1_keywords: ["C4944"] helpviewer_keywords: ["C4944"] -ms.assetid: e2905eb1-2e3b-4fab-a48b-c0cae0fd997f --- # Compiler Warning (level 1) C4944 -'symbol' : cannot import symbol from 'assembly1': as 'symbol' already exists in the current scope +> 'symbol' : cannot import symbol from 'assembly1': as 'symbol' already exists in the current scope + +## Remarks A symbol was defined in a source code file and then a #using statement referenced an assembly that also defined the symbol. The symbol in the assembly is ignored. -## Examples +## Example -The following sample creates a component with a type called ClassA. +The following example creates a component with a type called ClassA. ```csharp // C4944.cs @@ -25,7 +26,7 @@ public class ClassA { } ``` -The following samples generate C4944. +The following example generate C4944. ```cpp // C4944b.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4945.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4945.md index 501700a2582..8b96288228f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4945.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4945.md @@ -1,18 +1,21 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4945" title: "Compiler Warning (level 1) C4945" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4945" +ms.date: 11/04/2016 f1_keywords: ["C4945"] helpviewer_keywords: ["C4945"] -ms.assetid: 6d2079ea-dc59-4611-bc68-9a22c06f7587 --- # Compiler Warning (level 1) C4945 -'symbol' : cannot import symbol from 'assembly2': as 'symbol' has already been imported from another assembly 'assembly1' +> 'symbol' : cannot import symbol from 'assembly2': as 'symbol' has already been imported from another assembly 'assembly1' + +## Remarks A symbol was imported from a referenced assembly but that symbol was already imported from another referenced assembly. Either do not reference one of the assemblies or get the symbol name changed in one of the assemblies. -The following samples generate C4945. +## Example + +The following example generate C4945. ```csharp // C4945a.cs diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4946.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4946.md index 2ef397abc1c..284b2424ac7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4946.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4946.md @@ -1,19 +1,22 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4946" title: "Compiler Warning (level 1) C4946" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4946" +ms.date: 11/04/2016 f1_keywords: ["C4946"] helpviewer_keywords: ["C4946"] -ms.assetid: b85cbef0-e053-4de6-9b14-7b0f82d40495 --- # Compiler Warning (level 1) C4946 -reinterpret_cast used between related classes: 'class1' and 'class2' +> reinterpret_cast used between related classes: 'class1' and 'class2' + +## Remarks Do not use [reinterpret_cast](../../cpp/reinterpret-cast-operator.md) to cast between related types. Use [static_cast](../../cpp/static-cast-operator.md) instead, or for polymorphic types, use [dynamic_cast](../../cpp/dynamic-cast-operator.md). By default, this warning is off. For more information, see [Compiler Warnings That Are Off by Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md). +## Example + The following code example generates C4946: ```cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4947.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4947.md index 84cfafa4c9c..db09f0cf6ad 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4947.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4947.md @@ -1,20 +1,21 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4947" title: "Compiler Warning (level 1) C4947" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4947" +ms.date: 11/04/2016 f1_keywords: ["C4947"] helpviewer_keywords: ["C4947"] -ms.assetid: 5a1d484e-b4c7-4de2-a145-d8dcfc2fc1d2 --- # Compiler Warning (level 1) C4947 -'type_or_member' : marked as obsolete +> 'type_or_member' : marked as obsolete + +## Remarks A member or type was marked as obsolete with the class. ## Example -The following sample generates C4947: +The following example generates C4947: ```cpp // C4947.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4951.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4951.md index ed00316f198..a9b0be26170 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4951.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4951.md @@ -1,15 +1,16 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4951" title: "Compiler Warning (level 1) C4951" -ms.date: "08/27/2018" +description: "Learn more about: Compiler Warning (level 1) C4951" +ms.date: 08/27/2018 f1_keywords: ["C4951"] helpviewer_keywords: ["C4951"] -ms.assetid: 669d8bb7-5efa-4ba9-99db-4e65addbf054 --- # Compiler Warning (level 1) C4951 > '*function*' has been edited since profile data was collected, function profile data not used +## Remarks + A function has been edited in an input module to [/LTCG:PGUPDATE](../../build/reference/ltcg-link-time-code-generation.md), so that the profile data is now not valid. The input module was recompiled after **/LTCG:PGINSTRUMENT** and has a function (*function*) with a different flow of control than was in the module at the time of the **/LTCG:PGINSTRUMENT** operation. This warning is informational. To resolve this warning, run **/LTCG:PGINSTRUMENT**, redo all test runs, and run **/LTCG:PGOPTIMIZE**. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4952.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4952.md index 5ad02204e02..fbf7a1a79f8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4952.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4952.md @@ -1,15 +1,16 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4952" title: "Compiler Warning (level 1) C4952" -ms.date: "08/27/2018" +description: "Learn more about: Compiler Warning (level 1) C4952" +ms.date: 08/27/2018 f1_keywords: ["C4952"] helpviewer_keywords: ["C4952"] -ms.assetid: 593324f0-5cfe-42fb-b221-2f71308765dd --- # Compiler Warning (level 1) C4952 > '*function*' : no profile data found in program database '*pgd_file*' +## Remarks + When using [/LTCG:PGUPDATE](../../build/reference/ltcg-link-time-code-generation.md), the compiler detected an input module that was recompiled after `/LTCG:PGINSTRUMENT` and has a new function (*function*) present. This warning is informational. To resolve this warning, run `/LTCG:PGINSTRUMENT`, redo all test runs, and run `/LTCG:PGOPTIMIZE`. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4953.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4953.md index 4f6f49e7184..4fb025030e8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4953.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4953.md @@ -1,15 +1,16 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4953" title: "Compiler Warning (level 1) C4953" -ms.date: "08/27/2018" +description: "Learn more about: Compiler Warning (level 1) C4953" +ms.date: 08/27/2018 f1_keywords: ["C4953"] helpviewer_keywords: ["C4953"] -ms.assetid: 3c4f6ac6-3976-41ab-8a27-3c41d7472ea7 --- # Compiler Warning (level 1) C4953 > Inlinee '*function*' has been edited since profile data was collected, profile data not used +## Remarks + When using [/LTCG:PGUPDATE](../../build/reference/ltcg-link-time-code-generation.md), the compiler detected an input module that was recompiled after `/LTCG:PGINSTRUMENT` and has a function (*function*) that was edited and where existing test runs identified the function as a candidate for inlining. However, as a result of recompiling the module, the function will no longer be a candidate for inlining. This warning is informational. To resolve this warning, run `/LTCG:PGINSTRUMENT`, redo all test runs, and run `/LTCG:PGOPTIMIZE`. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4964.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4964.md index e97a33d9184..9eb7097fa26 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4964.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4964.md @@ -1,20 +1,23 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4964" title: "Compiler Warning (level 1) C4964" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4964" +ms.date: 11/04/2016 f1_keywords: ["C4964"] helpviewer_keywords: ["C4964"] -ms.assetid: b89c9274-8a92-4b7c-aa30-3fbb1b68ac73 --- # Compiler Warning (level 1) C4964 -No optimization options were specified; profile info will not be collected +> No optimization options were specified; profile info will not be collected + +## Remarks [/GL](../../build/reference/gl-whole-program-optimization.md) and [/LTCG](../../build/reference/ltcg-link-time-code-generation.md) were specified, but no optimizations were requested, so no .pgc files will be generated and, therefore, no profile-guided optimizations will be possible. If you want .pgc files to be generated when you run your application, specify one of the [/O](../../build/reference/o-options-optimize-code.md) compiler options. -The following sample generates C4964: +## Example + +The following example generates C4964: ```cpp // C4964.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4965.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4965.md index b7f9f1365af..384ae158bc3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4965.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4965.md @@ -1,14 +1,15 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4965" title: "Compiler Warning (level 1) C4965" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4965" +ms.date: 11/04/2016 f1_keywords: ["C4965"] helpviewer_keywords: ["C4965"] -ms.assetid: 47f3f6dc-459b-4a25-9947-f394c8966cb5 --- # Compiler Warning (level 1) C4965 -implicit box of integer 0; use nullptr or explicit cast +> implicit box of integer 0; use nullptr or explicit cast + +## Remarks Visual C++ features implicit boxing of value types. An instruction that resulted in a null assignment using Managed Extensions for C++ now becomes an assignment to a boxed int. @@ -16,7 +17,7 @@ For more information, see [Boxing](../../extensions/boxing-cpp-component-extensi ## Example -The following sample generates C4965. +The following example generates C4965. ```cpp // C4965.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4997.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4997.md index 22694be7d30..2741b6f61ef 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4997.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4997.md @@ -1,18 +1,21 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4997" title: "Compiler Warning (level 1) C4997" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4997" +ms.date: 11/04/2016 f1_keywords: ["C4997"] helpviewer_keywords: ["C4997"] -ms.assetid: d39678fd-0c1a-4104-8a45-9e3f20de0407 --- # Compiler Warning (level 1) C4997 -'class': coclass does not implement a COM interface or pseudo-interface +> 'class': coclass does not implement a COM interface or pseudo-interface + +## Remarks A class marked with the [coclass](../../windows/attributes/coclass.md) attribute did not implement an interface. -The following sample generates C4997: +## Example + +The following example generates C4997: ```cpp // C4997.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4948.md b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4948.md index 26347529fbf..0fb05310069 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4948.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-2-c4948.md @@ -1,14 +1,15 @@ --- -description: "Learn more about: Compiler Warning (level 2) C4948" title: "Compiler Warning (level 2) C4948" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 2) C4948" +ms.date: 11/04/2016 f1_keywords: ["C4948"] helpviewer_keywords: ["C4948"] -ms.assetid: d006cb17-754a-4c70-ba7f-c3200e2cd8fa --- # Compiler Warning (level 2) C4948 -return type of 'accessor' does not match the last parameter type of the corresponding setter +> return type of 'accessor' does not match the last parameter type of the corresponding setter + +## Remarks The compiler found a mismatch between what data type is being get and set for an indexed property. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4995.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4995.md index a753799357c..76e0eb019a0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4995.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4995.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 3) C4995" title: "Compiler Warning (level 3) C4995" +description: "Learn more about: Compiler Warning (level 3) C4995" ms.date: 08/30/2022 f1_keywords: ["C4995"] helpviewer_keywords: ["C4995"] -ms.assetid: c6b61755-4730-4947-ad4d-d1c2bc82585a --- # Compiler Warning (level 3) C4995 @@ -18,7 +17,7 @@ The [`/sdl` (Enable Additional Security Checks)](../../build/reference/sdl-enabl ## Example -The following sample generates C4995. Uncomment the `#pragma warning` line to disable the warning. +The following example generates C4995. Uncomment the `#pragma warning` line to disable the warning. ```cpp // C4995.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4996.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4996.md index db12f3841f9..2180d283941 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4996.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4996.md @@ -4,7 +4,6 @@ description: "Explains why Compiler warning C4996 happens, and describes what to ms.date: 08/30/2022 f1_keywords: ["C4996"] helpviewer_keywords: ["C4996"] -ms.assetid: 926c7cc2-921d-43ed-ae75-634f560dd317 --- # Compiler Warning (level 3) C4996 @@ -63,7 +62,7 @@ Here are some of the common sources of C4996 warnings and errors: ## POSIX function names -**`The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name:`** _`new-name.`_ **`See online help for details.`** +> The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: *`new-name`*. See online help for details. Microsoft renamed some POSIX and Microsoft-specific library functions in the CRT to conform with C99 and C++03 constraints on reserved and global implementation-defined names. *Only the names are deprecated, not the functions themselves*. In most cases, a leading underscore was added to the function name to create a conforming name. The compiler issues a deprecation warning for the original function name, and suggests the preferred name. @@ -73,7 +72,7 @@ To turn off deprecation warnings for these functions, define the preprocessor ma ## Unsafe CRT Library functions -**`This function or variable may be unsafe. Consider using`** _`safe-version`_ **`instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.`** +> This function or variable may be unsafe. Consider using *`safe-version`* instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. Microsoft deprecated some CRT and C++ Standard Library functions and globals because more secure versions are available. Most of the deprecated functions allow unchecked read or write access to buffers. Their misuse can lead to serious security issues. The compiler issues a deprecation warning for these functions, and suggests the preferred function. @@ -87,7 +86,7 @@ For more information about these deprecated functions and globals, see [Security ## Unsafe Standard Library functions -**`'std::`** *`function_name`* **`::_Unchecked_iterators::_Deprecate' Call to std::`** *`function_name`* **`with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators'`** +> 'std:: *`function_name`* ::_Unchecked_iterators::_Deprecate' Call to std:: *`function_name`* with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators' In Visual Studio 2015, this warning appears in debug builds because certain C++ Standard Library function templates don't check parameters for correctness. Often it's because not enough information is available to the function to check container bounds. Or, because iterators may be used incorrectly with the function. This warning helps you identify these functions, because they may be a source of serious security holes in your program. For more information, see [Checked iterators](../../standard-library/checked-iterators.md). @@ -248,7 +247,7 @@ For information on how to suppress these warnings, see [`_AFX_SECURE_NO_WARNINGS ## Obsolete CRT functions and variables -**`This function or variable has been superseded by newer library or operating system functionality. Consider using`** *`new_item`* **`instead. See online help for details.`** +> This function or variable has been superseded by newer library or operating system functionality. Consider using *`new_item`* instead. See online help for details. Some library functions and global variables are deprecated as obsolete. These functions and variables may be removed in a future version of the library. The compiler issues a deprecation warning for these items, and suggests the preferred alternative. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4960.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4960.md index b2cef66503f..fb44b5e555c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4960.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4960.md @@ -1,14 +1,15 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4960" title: "Compiler Warning (level 4) C4960" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4960" +ms.date: 11/04/2016 f1_keywords: ["C4960"] helpviewer_keywords: ["C4960"] -ms.assetid: 3b4ed286-9e8d-46f1-af0c-00ba669693a9 --- # Compiler Warning (level 4) C4960 -'function' is too big to be profiled +> 'function' is too big to be profiled + +## Remarks When using [/LTCG:PGOPTIMIZE](../../build/reference/ltcg-link-time-code-generation.md), the compiler detected an input module with a function larger than 65,535 instructions. Such a large function is not available for profile-guided optimizations. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4985.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4985.md index c073d5dd2cd..4be7325fba3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4985.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4985.md @@ -1,15 +1,16 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4985" title: "Compiler Warning (level 4) C4985" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4985" +ms.date: 11/04/2016 f1_keywords: ["C4985"] helpviewer_keywords: ["C4985"] -ms.assetid: 832f001c-afe7-403d-a8b4-02334724c79e --- # Compiler Warning (level 4) C4985 > '*symbol-name*': attributes not present on previous declaration. +## Remarks + The Microsoft source code annotation language (SAL) annotations on the current method declaration or definition differ from the annotations on an earlier declaration. The same SAL annotations must be used in the definition and declarations of a method. The SAL provides a set of annotations that you can use to describe how a function uses its parameters, the assumptions it makes about them, and the guarantees it makes on finishing. The annotations are defined in the sal.h header file. From 69451a230e2dc903735f043a185d6072524de7fe Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 5 Sep 2025 14:52:56 -0700 Subject: [PATCH 1733/2255] simplify glob pattern syntax --- docs/docfx.json | 262 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 175 insertions(+), 87 deletions(-) diff --git a/docs/docfx.json b/docs/docfx.json index 871ff2d1351..6e115ab361d 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -160,100 +160,188 @@ "windows/**.md": "windows-development" }, "ms.update-cycle": { - "assembler/**/**.{md,yml}": "3650-days", - "attributes/**/**.{md,yml}": "3650-days", - "atl/**/**.{md,yml}": "3650-days", - "atl-mfc-shared/**/**.{md,yml}": "3650-days", - "build/**/**.{md,yml}": "1825-days", - "c-language/**/**.{md,yml}": "3650-days", - "c-runtime-library/**/**.{md,yml}": "3650-days", + "assembler/**.md": "3650-days", + "assembler/**.yml": "3650-days", + "attributes/**.md": "3650-days", + "attributes/**.yml": "3650-days", + "atl/**.md": "3650-days", + "atl/**.yml": "3650-days", + "atl-mfc-shared/**.md": "3650-days", + "atl-mfc-shared/**.yml": "3650-days", + "build/**.md": "1825-days", + "build/**.yml": "1825-days", + "c-language/**.md": "3650-days", + "c-language/**.yml": "3650-days", + "c-runtime-library/**.md": "3650-days", + "c-runtime-library/**.yml": "3650-days", "cpp/**.md": "1095-days", - "cppcx/**/**.{md,yml}": "3650-days", - "cross-platform/**/**.{md,yml}": "1825-days", - "data/**/**.{md,yml}": "3650-days", - "dotnet/**/**.{md,yml}": "3650-days", - "embedded/**/**.{md,yml}": "3650-days", - "error-messages/**/**.{md,yml}": "3650-days", - "extensions/**/**.{md,yml}": "3650-days", - "intrinsics/**/**.{md,yml}": "3650-days", - "mfc/**/**.{md,yml}": "3650-days", - "parallel/**/**.{md,yml}": "3650-days", - "porting/**/**.{md,yml}": "1095-days", - "preprocessor/**/**.{md,yml}": "3650-days", - "safeint/**/**.{md,yml}": "3650-days", - "standard-library/**/**.{md,yml}": "3650-days", - "text/**/**.{md,yml}": "3650-days", - "windows/**/**.{md,yml}": "1825-days" + "cpp/**.yml": "1095-days", + "cppcx/**.md": "3650-days", + "cppcx/**.yml": "3650-days", + "cross-platform/**.md": "1825-days", + "cross-platform/**.yml": "1825-days", + "data/**.md": "3650-days", + "data/**.yml": "3650-days", + "dotnet/**.md": "3650-days", + "dotnet/**.yml": "3650-days", + "embedded/**.md": "3650-days", + "embedded/**.yml": "3650-days", + "error-messages/**.md": "3650-days", + "error-messages/**.yml": "3650-days", + "extensions/**.md": "3650-days", + "extensions/**.yml": "3650-days", + "intrinsics/**.md": "3650-days", + "intrinsics/**.yml": "3650-days", + "mfc/**.md": "3650-days", + "mfc/**.yml": "3650-days", + "parallel/**.md": "3650-days", + "parallel/**.yml": "3650-days", + "porting/**.md": "1095-days", + "porting/**.yml": "1095-days", + "preprocessor/**.md": "3650-days", + "preprocessor/**.yml": "3650-days", + "safeint/**.md": "3650-days", + "safeint/**.yml": "3650-days", + "standard-library/**.md": "3650-days", + "standard-library/**.yml": "3650-days", + "text/**.md": "3650-days", + "text/**.yml": "3650-days", + "windows/**.md": "1825-days" + "windows/**.yml": "1825-days" }, "author": { "index.md": "TylerMSFT", - "assembler/**/**.{md,yml}": "TylerMSFT", - "attributes/**/**.{md,yml}": "TylerMSFT", - "atl/**/**.{md,yml}": "TylerMSFT", - "atl-mfc-shared/**/**.{md,yml}": "TylerMSFT", - "build/**/**.{md,yml}": "TylerMSFT", - "build-insights/**/**.{md,yml}": "TylerMSFT", - "c-language/**/**.{md,yml}": "TylerMSFT", - "c-runtime-library/**/**.{md,yml}": "TylerMSFT", - "cloud/**/**.{md,yml}": "TylerMSFT", - "code-quality/**/**.{md,yml}": "TylerMSFT", - "cpp/**/**.{md,yml}": "TylerMSFT", - "cppcx/**/**.{md,yml}": "TylerMSFT", - "cross-platform/**/**.{md,yml}": "TylerMSFT", - "data/**/**.{md,yml}": "TylerMSFT", - "dotnet/**/**.{md,yml}": "TylerMSFT", - "error-messages/**/**.{md,yml}": "TylerMSFT", - "extensions/**/**.{md,yml}": "TylerMSFT", - "get-started/**/**.{md,yml}": "TylerMSFT", - "ide/**/**.{md,yml}": "TylerMSFT", - "intrinsics/**/**.{md,yml}": "TylerMSFT", - "linux/**/**.{md,yml}": "TylerMSFT", - "mfc/**/**.{md,yml}": "TylerMSFT", - "overview/**/**.{md,yml}": "TylerMSFT", - "parallel/**/**.{md,yml}": "TylerMSFT", - "porting/**/**.{md,yml}": "TylerMSFT", - "preprocessor/**/**.{md,yml}": "TylerMSFT", - "safeint/**/**.{md,yml}": "TylerMSFT", - "sanitizers/**/**.{md,yml}": "TylerMSFT", - "security/**/**.{md,yml}": "TylerMSFT", - "standard-library/**/**.{md,yml}": "TylerMSFT", - "text/**/**.{md,yml}": "TylerMSFT", - "windows/**/**.{md,yml}": "TylerMSFT" + "assembler/**.md": "TylerMSFT", + "assembler/**.yml": "TylerMSFT", + "attributes/**.md": "TylerMSFT", + "attributes/**.yml": "TylerMSFT", + "atl/**.md": "TylerMSFT", + "atl/**.yml": "TylerMSFT", + "atl-mfc-shared/**.md": "TylerMSFT", + "atl-mfc-shared/**.yml": "TylerMSFT", + "build/**.md": "TylerMSFT", + "build/**.yml": "TylerMSFT", + "build-insights/**.md": "TylerMSFT", + "build-insights/**.yml": "TylerMSFT", + "c-language/**.md": "TylerMSFT", + "c-language/**.yml": "TylerMSFT", + "c-runtime-library/**.md": "TylerMSFT", + "c-runtime-library/**.yml": "TylerMSFT", + "cloud/**.md": "TylerMSFT", + "cloud/**.yml": "TylerMSFT", + "code-quality/**.md": "TylerMSFT", + "code-quality/**.yml": "TylerMSFT", + "cpp/**.md": "TylerMSFT", + "cpp/**.yml": "TylerMSFT", + "cppcx/**.md": "TylerMSFT", + "cppcx/**.yml": "TylerMSFT", + "cross-platform/**.md": "TylerMSFT", + "cross-platform/**.yml": "TylerMSFT", + "data/**.md": "TylerMSFT", + "data/**.yml": "TylerMSFT", + "dotnet/**.md": "TylerMSFT", + "dotnet/**.yml": "TylerMSFT", + "error-messages/**.md": "TylerMSFT", + "error-messages/**.yml": "TylerMSFT", + "extensions/**.md": "TylerMSFT", + "extensions/**.yml": "TylerMSFT", + "get-started/**.md": "TylerMSFT", + "get-started/**.yml": "TylerMSFT", + "ide/**.md": "TylerMSFT", + "ide/**.yml": "TylerMSFT", + "intrinsics/**.md": "TylerMSFT", + "intrinsics/**.yml": "TylerMSFT", + "linux/**.md": "TylerMSFT", + "linux/**.yml": "TylerMSFT", + "mfc/**.md": "TylerMSFT", + "mfc/**.yml": "TylerMSFT", + "overview/**.md": "TylerMSFT", + "overview/**.yml": "TylerMSFT", + "parallel/**.md": "TylerMSFT", + "parallel/**.yml": "TylerMSFT", + "porting/**.md": "TylerMSFT", + "porting/**.yml": "TylerMSFT", + "preprocessor/**.md": "TylerMSFT", + "preprocessor/**.yml": "TylerMSFT", + "safeint/**.md": "TylerMSFT", + "safeint/**.yml": "TylerMSFT", + "sanitizers/**.md": "TylerMSFT", + "sanitizers/**.yml": "TylerMSFT", + "security/**.md": "TylerMSFT", + "security/**.yml": "TylerMSFT", + "standard-library/**.md": "TylerMSFT", + "standard-library/**.yml": "TylerMSFT", + "text/**.md": "TylerMSFT", + "text/**.yml": "TylerMSFT", + "windows/**.md": "TylerMSFT" + "windows/**.yml": "TylerMSFT" }, "ms.author": { "index.md": "twhitney", - "assembler/**/**.{md,yml}": "twhitney", - "atl/**/**.{md,yml}": "twhitney", - "atl-mfc-shared/**/**.{md,yml}": "twhitney", - "attributes/**/**.{md,yml}": "twhitney", - "build/**/**.{md,yml}": "twhitney", - "build-insights/**/**.{md,yml}": "twhitney", - "c-language/**/**.{md,yml}": "twhitney", - "c-runtime-library/**/**.{md,yml}": "twhitney", - "cloud/**/**.{md,yml}": "twhitney", - "code-quality/**/**.{md,yml}": "twhitney", - "cpp/**/**.{md,yml}": "twhitney", - "cppcx/**/**.{md,yml}": "twhitney", - "cross-platform/**/**.{md,yml}": "twhitney", - "data/**/**.{md,yml}": "twhitney", - "dotnet/**/**.{md,yml}": "twhitney", - "error-messages/**/**.{md,yml}": "twhitney", - "extensions/**/**.{md,yml}": "twhitney", - "get-started/**/**.{md,yml}": "twhitney", - "ide/**/**.{md,yml}": "twhitney", - "intrinsics/**/**.{md,yml}": "twhitney", - "linux/**/**.{md,yml}": "twhitney", - "mfc/**/**.{md,yml}": "twhitney", - "overview/**/**.{md,yml}": "twhitney", - "parallel/**/**.{md,yml}": "twhitney", - "porting/**/**.{md,yml}": "twhitney", - "preprocessor/**/**.{md,yml}": "twhitney", - "safeint/**/**.{md,yml}": "twhitney", - "sanitizers/**/**.{md,yml}": "twhitney", - "security/**/**.{md,yml}": "twhitney", - "standard-library/**/**.{md,yml}": "twhitney", - "text/**/**.{md,yml}": "twhitney", - "windows/**/**.{md,yml}": "twhitney" + "assembler/**.md": "twhitney", + "assembler/**.yml": "twhitney", + "atl/**.md": "twhitney", + "atl/**.yml": "twhitney", + "atl-mfc-shared/**.md": "twhitney", + "atl-mfc-shared/**.yml": "twhitney", + "attributes/**.md": "twhitney", + "attributes/**.yml": "twhitney", + "build/**.md": "twhitney", + "build/**.yml": "twhitney", + "build-insights/**.md": "twhitney", + "build-insights/**.yml": "twhitney", + "c-language/**.md": "twhitney", + "c-language/**.yml": "twhitney", + "c-runtime-library/**.md": "twhitney", + "c-runtime-library/**.yml": "twhitney", + "cloud/**.md": "twhitney", + "cloud/**.yml": "twhitney", + "code-quality/**.md": "twhitney", + "code-quality/**.yml": "twhitney", + "cpp/**.md": "twhitney", + "cpp/**.yml": "twhitney", + "cppcx/**.md": "twhitney", + "cppcx/**.yml": "twhitney", + "cross-platform/**.md": "twhitney", + "cross-platform/**.yml": "twhitney", + "data/**.md": "twhitney", + "data/**.yml": "twhitney", + "dotnet/**.md": "twhitney", + "dotnet/**.yml": "twhitney", + "error-messages/**.md": "twhitney", + "error-messages/**.yml": "twhitney", + "extensions/**.md": "twhitney", + "extensions/**.yml": "twhitney", + "get-started/**.md": "twhitney", + "get-started/**.yml": "twhitney", + "ide/**.md": "twhitney", + "ide/**.yml": "twhitney", + "intrinsics/**.md": "twhitney", + "intrinsics/**.yml": "twhitney", + "linux/**.md": "twhitney", + "linux/**.yml": "twhitney", + "mfc/**.md": "twhitney", + "mfc/**.yml": "twhitney", + "overview/**.md": "twhitney", + "overview/**.yml": "twhitney", + "parallel/**.md": "twhitney", + "parallel/**.yml": "twhitney", + "porting/**.md": "twhitney", + "porting/**.yml": "twhitney", + "preprocessor/**.md": "twhitney", + "preprocessor/**.yml": "twhitney", + "safeint/**.md": "twhitney", + "safeint/**.yml": "twhitney", + "sanitizers/**.md": "twhitney", + "sanitizers/**.yml": "twhitney", + "security/**.md": "twhitney", + "security/**.yml": "twhitney", + "standard-library/**.md": "twhitney", + "standard-library/**.yml": "twhitney", + "text/**.md": "twhitney", + "text/**.yml": "twhitney", + "windows/**.md": "twhitney" + "windows/**.yml": "twhitney" } }, "template": [], From 867f69bf19e2b8b3f10ed3422a54172e5bfccaa0 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 5 Sep 2025 15:07:42 -0700 Subject: [PATCH 1734/2255] fix syntax error --- docs/docfx.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docfx.json b/docs/docfx.json index 6e115ab361d..5fa9b75f885 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -206,7 +206,7 @@ "standard-library/**.yml": "3650-days", "text/**.md": "3650-days", "text/**.yml": "3650-days", - "windows/**.md": "1825-days" + "windows/**.md": "1825-days", "windows/**.yml": "1825-days" }, "author": { From 4898b03cf7ed33d4c41583e8555dac33327b8057 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 5 Sep 2025 15:40:41 -0700 Subject: [PATCH 1735/2255] fix syntax --- docs/docfx.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docfx.json b/docs/docfx.json index 5fa9b75f885..654d0bf2f11 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -273,7 +273,7 @@ "standard-library/**.yml": "TylerMSFT", "text/**.md": "TylerMSFT", "text/**.yml": "TylerMSFT", - "windows/**.md": "TylerMSFT" + "windows/**.md": "TylerMSFT", "windows/**.yml": "TylerMSFT" }, "ms.author": { From 3c75a0216022a1c3b882868c051212136c945b02 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 5 Sep 2025 15:50:23 -0700 Subject: [PATCH 1736/2255] syntax --- docs/docfx.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docfx.json b/docs/docfx.json index 654d0bf2f11..e3765f2f722 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -175,7 +175,7 @@ "c-runtime-library/**.md": "3650-days", "c-runtime-library/**.yml": "3650-days", "cpp/**.md": "1095-days", - "cpp/**.yml": "1095-days", + "cpp/**.yml": "1095-days", "cppcx/**.md": "3650-days", "cppcx/**.yml": "3650-days", "cross-platform/**.md": "1825-days", @@ -340,7 +340,7 @@ "standard-library/**.yml": "twhitney", "text/**.md": "twhitney", "text/**.yml": "twhitney", - "windows/**.md": "twhitney" + "windows/**.md": "twhitney", "windows/**.yml": "twhitney" } }, From bb2e2e9824ae6929df1476903ffbe71e5852a2e9 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 6 Sep 2025 18:25:49 +0800 Subject: [PATCH 1737/2255] Convert `(/cpp` links to relative --- docs/build/arm64-windows-abi-conventions.md | 2 +- docs/c-runtime-library/crt-debugging-techniques.md | 2 +- docs/cpp/char-wchar-t-char16-t-char32-t.md | 4 ++-- docs/cpp/transporting-exceptions-between-threads.md | 2 +- .../compiler-warnings/compiler-warning-c5072.md | 6 +++--- docs/windows/attributes/cpp-attributes-com-net.md | 4 ++-- docs/windows/redist-version-auditing.md | 2 +- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/build/arm64-windows-abi-conventions.md b/docs/build/arm64-windows-abi-conventions.md index db01bfefe2b..0b6f68bea01 100644 --- a/docs/build/arm64-windows-abi-conventions.md +++ b/docs/build/arm64-windows-abi-conventions.md @@ -123,7 +123,7 @@ To determine if an ARM CPU supports exceptions, write a value that enables excep On ARM64, Windows delivers exceptions for processors that support hardware floating-point exceptions. -The [`_set_controlfp`](/cpp/c-runtime-library/reference/controlfp-s) function on ARM platforms correctly changes the FPCR register when unmasking floating-point exceptions. However, instead of raising an unmasked exception, Windows resets the FPCR register to its defaults every time an FP exception is about to be raised. +The [`_set_controlfp`](../c-runtime-library/reference/controlfp-s.md) function on ARM platforms correctly changes the FPCR register when unmasking floating-point exceptions. However, instead of raising an unmasked exception, Windows resets the FPCR register to its defaults every time an FP exception is about to be raised. ## Parameter passing diff --git a/docs/c-runtime-library/crt-debugging-techniques.md b/docs/c-runtime-library/crt-debugging-techniques.md index 323c0d36b96..df4124e24eb 100644 --- a/docs/c-runtime-library/crt-debugging-techniques.md +++ b/docs/c-runtime-library/crt-debugging-techniques.md @@ -16,7 +16,7 @@ When you debug a program that uses the C run-time library, these debugging techn ## CRT debug library use -The C runtime (CRT) library provides extensive debugging support. To use one of the CRT debug libraries, you must link with [`/DEBUG`](/cpp/build/reference/debug-generate-debug-info) and compile with [`/MDd`, `/MTd`, or `/LDd`](../build/reference/md-mt-ld-use-run-time-library.md). +The C runtime (CRT) library provides extensive debugging support. To use one of the CRT debug libraries, you must link with [`/DEBUG`](../build/reference/debug-generate-debug-info.md) and compile with [`/MDd`, `/MTd`, or `/LDd`](../build/reference/md-mt-ld-use-run-time-library.md). The main definitions and macros for CRT debugging can be found in the `` header file. diff --git a/docs/cpp/char-wchar-t-char16-t-char32-t.md b/docs/cpp/char-wchar-t-char16-t-char32-t.md index 5df11da2668..87e22b70234 100644 --- a/docs/cpp/char-wchar-t-char16-t-char32-t.md +++ b/docs/cpp/char-wchar-t-char16-t-char32-t.md @@ -26,6 +26,6 @@ The **`wchar_t`** type is an implementation-defined wide character type. In the The **`char8_t`**, **`char16_t`**, and **`char32_t`** types represent 8-bit, 16-bit, and 32-bit wide characters, respectively. (**`char8_t`** is new in C++20 and requires the [`/std:c++20`](../build/reference/std-specify-language-standard-version.md) or **`/std:c++latest`** compiler option.) Unicode encoded as UTF-8 can be stored in the **`char8_t`** type. Strings of **`char8_t`** and **`char`** type are referred to as *narrow* strings, even when used to encode Unicode or multi-byte characters. Unicode encoded as UTF-16 can be stored in the **`char16_t`** type, and Unicode encoded as UTF-32 can be stored in the **`char32_t`** type. Strings of these types and **`wchar_t`** are all referred to as *wide* strings, though the term often refers specifically to strings of **`wchar_t`** type. -In the C++ standard library, the [`basic_string`](/cpp/standard-library/basic-string-class) type is specialized for both narrow and wide strings. Use `std::string` when the characters are of type **`char`**, `std::u8string` when the characters are of type **`char8_t`**, `std::u16string` when the characters are of type **`char16_t`**, `std::u32string` when the characters are of type **`char32_t`**, and `std::wstring` when the characters are of type **`wchar_t`**. +In the C++ standard library, the [`basic_string`](../standard-library/basic-string-class.md) type is specialized for both narrow and wide strings. Use `std::string` when the characters are of type **`char`**, `std::u8string` when the characters are of type **`char8_t`**, `std::u16string` when the characters are of type **`char16_t`**, `std::u32string` when the characters are of type **`char32_t`**, and `std::wstring` when the characters are of type **`wchar_t`**. -Other types that represent text, including [`std::stringstream`](/cpp/standard-library/sstream-typedefs/#stringstream) and [`std::cout`](/cpp/standard-library/iostream#cout) have specializations for narrow and wide strings. +Other types that represent text, including [`std::stringstream`](../standard-library/sstream-typedefs.md#stringstream) and [`std::cout`](../standard-library/iostream.md#cout) have specializations for narrow and wide strings. diff --git a/docs/cpp/transporting-exceptions-between-threads.md b/docs/cpp/transporting-exceptions-between-threads.md index bddcb01e69c..b05544d78bc 100644 --- a/docs/cpp/transporting-exceptions-between-threads.md +++ b/docs/cpp/transporting-exceptions-between-threads.md @@ -65,7 +65,7 @@ For more information about the C++ Standards committee proposal, search the Inte ### Exception-handling models and compiler options -Your application's exception-handling model determines whether it can catch and transport an exception. Visual C++ supports three models for handling C++ exceptions: [ISO-standard C++ exception handling](/cpp/cpp/errors-and-exception-handling-modern-cpp), [structured exception handling (SEH)](/windows/win32/debug/structured-exception-handling), and [common language runtime (CLR) exceptions](/cpp/extensions/exception-handling-cpp-component-extensions). Use the [`/EH`](../build/reference/eh-exception-handling-model.md) and [`/clr`](../build/reference/clr-common-language-runtime-compilation.md) compiler options to specify your application's exception-handling model. +Your application's exception-handling model determines whether it can catch and transport an exception. Visual C++ supports three models for handling C++ exceptions: [ISO-standard C++ exception handling](errors-and-exception-handling-modern-cpp.md), [structured exception handling (SEH)](/windows/win32/debug/structured-exception-handling), and [common language runtime (CLR) exceptions](../extensions/exception-handling-cpp-component-extensions.md). Use the [`/EH`](../build/reference/eh-exception-handling-model.md) and [`/clr`](../build/reference/clr-common-language-runtime-compilation.md) compiler options to specify your application's exception-handling model. Only the following combination of compiler options and programming statements can transport an exception. Other combinations either can't catch exceptions, or can catch but can't transport exceptions. diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c5072.md b/docs/error-messages/compiler-warnings/compiler-warning-c5072.md index 481bbadd2a5..0ae2c93e6f6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c5072.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c5072.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["C5072"] ## Remarks -This warning occurs when you compile with [Address Sanitizer](/cpp/sanitizers/asan) (ASAN) turned on, but you don't also instruct the compiler to emit debug info. ASAN uses debug info to provide better diagnostics. +This warning occurs when you compile with [Address Sanitizer](../../sanitizers/asan.md) (ASAN) turned on, but you don't also instruct the compiler to emit debug info. ASAN uses debug info to provide better diagnostics. ## Example @@ -21,8 +21,8 @@ The following command line generates warning `C5072`: cl /fsanitize=address /EHsc test.cpp ``` -To fix it, have the compiler generate debug information by using a switch like [`/Zi`](/cpp/build/reference/z7-zi-zi-debug-information-format#zi) or [`/Z7`](/cpp/build/reference/z7-zi-zi-debug-information-format#z7), like this: `cl /fsanitize=address /EHsc /Zi test.cpp` +To fix it, have the compiler generate debug information by using a switch like [`/Zi`](../../build/reference/z7-zi-zi-debug-information-format.md#zi) or [`/Z7`](../../build/reference/z7-zi-zi-debug-information-format.md#z7), like this: `cl /fsanitize=address /EHsc /Zi test.cpp` ## See also -[Address Sanitizer (ASAN)](/cpp/sanitizers/asan) +[Address Sanitizer (ASAN)](../../sanitizers/asan.md) diff --git a/docs/windows/attributes/cpp-attributes-com-net.md b/docs/windows/attributes/cpp-attributes-com-net.md index 20de95ef00e..d17f7e34554 100644 --- a/docs/windows/attributes/cpp-attributes-com-net.md +++ b/docs/windows/attributes/cpp-attributes-com-net.md @@ -96,11 +96,11 @@ This field lists other attributes that are incompatible with the specified attri ## Debug injected code -Using attributes can greatly simplify C++ programming. For more information, see [Concepts](/cpp/windows/attributed-programming-concepts). Some attributes are interpreted directly by the compiler. Other attributes inject code into the program source, which the compiler then compiles. This injected code makes programming easier by reducing the amount of code you have to write. Sometimes, however, a bug may cause your application to fail while it is executing injected code. When this happens, you will probably want to look at the injected code. Visual Studio provides two ways for you to see injected code: +Using attributes can greatly simplify C++ programming. Some attributes are interpreted directly by the compiler. Other attributes inject code into the program source, which the compiler then compiles. This injected code makes programming easier by reducing the amount of code you have to write. Sometimes, however, a bug may cause your application to fail while it is executing injected code. When this happens, you will probably want to look at the injected code. Visual Studio provides two ways for you to see injected code: - You can view injected code in the **Disassembly** window. -- Using [/Fx](/cpp/build/reference/fx-merge-injected-code), you can create a merged source file that contains original and injected code. +- Using [/Fx](../../build/reference/fx-merge-injected-code.md), you can create a merged source file that contains original and injected code. The **Disassembly** window shows assembly-language instructions that correspond to the source code and the code injected by attributes. In addition, the **Disassembly** window can show the source-code annotation. diff --git a/docs/windows/redist-version-auditing.md b/docs/windows/redist-version-auditing.md index a457bcc5f5e..a2cc229117a 100644 --- a/docs/windows/redist-version-auditing.md +++ b/docs/windows/redist-version-auditing.md @@ -16,7 +16,7 @@ ms.topic: how-to The Microsoft Visual C++ Redistributable and the Visual Studio C++ Runtime (collectively, "VC Runtime") are critical components of many applications. Across your network, machines may still be running applications that install and use an out-of-support version of the VC Runtime. You can use NTFS file auditing to identify such usage as a step towards replacing those applications with ones that use a supported version of the VC Runtime. This guide walks you through setting up NTFS file auditing, provides troubleshooting tips, and highlights the benefits of regular audits. -For more information about the versions of VC Runtime that are no longer supported, see [Microsoft Visual C++ Redistributable latest supported downloads](/cpp/windows/latest-supported-vc-redist). +For more information about the versions of VC Runtime that are no longer supported, see [Microsoft Visual C++ Redistributable latest supported downloads](latest-supported-vc-redist.md). ## Enable NTFS file auditing to determine VC Runtime usage From 0d4dc23708504d5fbf906f01a7fe29c26f9f950d Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 6 Sep 2025 18:27:34 +0800 Subject: [PATCH 1738/2255] Update metadata in 3 topics --- docs/build/arm64-windows-abi-conventions.md | 2 +- docs/cpp/char-wchar-t-char16-t-char32-t.md | 2 +- docs/windows/attributes/cpp-attributes-com-net.md | 5 ++--- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/docs/build/arm64-windows-abi-conventions.md b/docs/build/arm64-windows-abi-conventions.md index 0b6f68bea01..b5357e9bf3f 100644 --- a/docs/build/arm64-windows-abi-conventions.md +++ b/docs/build/arm64-windows-abi-conventions.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Overview of ARM64 ABI conventions" title: "Overview of ARM64 ABI conventions" +description: "Learn more about: Overview of ARM64 ABI conventions" ms.date: 04/08/2025 --- # Overview of ARM64 ABI conventions diff --git a/docs/cpp/char-wchar-t-char16-t-char32-t.md b/docs/cpp/char-wchar-t-char16-t-char32-t.md index 87e22b70234..4a4e7703852 100644 --- a/docs/cpp/char-wchar-t-char16-t-char32-t.md +++ b/docs/cpp/char-wchar-t-char16-t-char32-t.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: char, wchar_t, char8_t, char16_t, char32_t" title: "char, wchar_t, char8_t, char16_t, char32_t" +description: "Learn more about: char, wchar_t, char8_t, char16_t, char32_t" ms.date: 04/23/2021 --- # char, wchar_t, char8_t, char16_t, char32_t diff --git a/docs/windows/attributes/cpp-attributes-com-net.md b/docs/windows/attributes/cpp-attributes-com-net.md index d17f7e34554..3ca2ca8b5b9 100644 --- a/docs/windows/attributes/cpp-attributes-com-net.md +++ b/docs/windows/attributes/cpp-attributes-com-net.md @@ -1,11 +1,10 @@ --- -description: "Learn more about: C++ Attributes for COM and .NET" title: "C++ Attributes for COM and .NET" +description: "Learn more about: C++ Attributes for COM and .NET" +ms.date: 11/19/2018 ms.custom: "index-page" -ms.date: "11/19/2018" ms.topic: "concept-article" helpviewer_keywords: ["attributes [C++/CLI], reference topics"] -ms.assetid: 613a3611-b3eb-4347-aa38-99b654600e1c --- # C++ Attributes for COM and .NET From b50636761b04707c4b234286def143461932a62e Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 6 Sep 2025 22:15:08 +0800 Subject: [PATCH 1739/2255] Add "Remarks" headings for warning references in range [C6251, C6310] --- docs/code-quality/c6255.md | 4 ++-- docs/code-quality/c6258.md | 4 ++-- docs/code-quality/c6260.md | 4 ++-- docs/code-quality/c6268.md | 4 ++-- docs/code-quality/c6269.md | 4 ++-- docs/code-quality/c6276.md | 4 ++-- docs/code-quality/c6277.md | 4 ++-- docs/code-quality/c6279.md | 4 ++-- docs/code-quality/c6280.md | 4 ++-- docs/code-quality/c6283.md | 4 ++-- docs/code-quality/c6285.md | 4 ++-- docs/code-quality/c6290.md | 4 ++-- docs/code-quality/c6291.md | 2 ++ 13 files changed, 26 insertions(+), 24 deletions(-) diff --git a/docs/code-quality/c6255.md b/docs/code-quality/c6255.md index 43f53740cee..8c79c955c8f 100644 --- a/docs/code-quality/c6255.md +++ b/docs/code-quality/c6255.md @@ -10,10 +10,10 @@ ms.assetid: bb6430b2-782a-4410-a8e1-609df06007de > _alloca indicates failure by raising a stack overflow exception. Consider using _malloca instead -This warning indicates that a call to `_alloca` has been detected outside of local exception handling. - ## Remarks +This warning indicates that a call to `_alloca` has been detected outside of local exception handling. + `_alloca` should always be called from within the protected range of an exception handler because it can raise a stack overflow exception on failure. If possible, instead of using `_alloca`, consider using `_malloca`, which is a more secure version of `_alloca`. Code analysis name: `UNPROTECTEDUSEOFALLOCA` diff --git a/docs/code-quality/c6258.md b/docs/code-quality/c6258.md index c6c0716a6d0..833dd35e708 100644 --- a/docs/code-quality/c6258.md +++ b/docs/code-quality/c6258.md @@ -10,10 +10,10 @@ ms.assetid: 62f3eed7-d9cd-46eb-8c38-0bc4f647941f > Using `TerminateThread` does not allow proper thread clean up. -This warning indicates that a call to `TerminateThread` has been detected. - ## Remarks +This warning indicates that a call to `TerminateThread` has been detected. + `TerminateThread` is a dangerous function that should only be used in the most extreme cases. For more information about problems associated with TerminateThread call, see [`TerminateThread` function](/windows/desktop/api/processthreadsapi/nf-processthreadsapi-terminatethread). Code analysis name: `USINGTERMINATETHREAD` diff --git a/docs/code-quality/c6260.md b/docs/code-quality/c6260.md index ed765072581..5def9c1bcb9 100644 --- a/docs/code-quality/c6260.md +++ b/docs/code-quality/c6260.md @@ -10,10 +10,10 @@ ms.assetid: 9cbedfcb-32b2-4fe4-99f7-a2d4a7f4422a > `sizeof` * `sizeof` is almost always wrong, did you intend to use a character count or a byte count? -This warning indicates that the results of two **`sizeof`** operations have been multiplied together. - ## Remarks +This warning indicates that the results of two **`sizeof`** operations have been multiplied together. + The C/C++ **`sizeof`** operator returns the number of bytes of storage an object uses. It's typically incorrect to multiply it by another **`sizeof`** operation. Usually, you're interested in the number of bytes in an object or the number of elements in an array (for example, the number of wide-characters in an array). There's some unintuitive behavior associated with **`sizeof`** operator. For example, in C, `sizeof ('\0') == 4`, because a character is of an integral type. In C++, the type of a character literal is **`char`**, so `sizeof ('\0') == 1`. However, in both C and C++, the following relation is true: diff --git a/docs/code-quality/c6268.md b/docs/code-quality/c6268.md index 49ae372e517..a45953a8c6d 100644 --- a/docs/code-quality/c6268.md +++ b/docs/code-quality/c6268.md @@ -10,10 +10,10 @@ ms.assetid: fd81e00a-de2f-498b-b3fe-53ce056042d7 > Incorrect order of operations: ('*TYPE1*')('*TYPE2*')x + y. Possible missing parentheses in ('*TYPE1*')(('*TYPE2*')x + y) -This warning indicates that a complex cast expression might involve a precedence problem when performing pointer arithmetic. Because casts group more closely than binary operators, the result might not be what the programmer intended. In some cases, this defect causes incorrect behavior or a program crash. - ## Remarks +This warning indicates that a complex cast expression might involve a precedence problem when performing pointer arithmetic. Because casts group more closely than binary operators, the result might not be what the programmer intended. In some cases, this defect causes incorrect behavior or a program crash. + In an expression such as: ```cpp diff --git a/docs/code-quality/c6269.md b/docs/code-quality/c6269.md index d910880ed70..91d890e7ac6 100644 --- a/docs/code-quality/c6269.md +++ b/docs/code-quality/c6269.md @@ -10,10 +10,10 @@ ms.assetid: a01fa7fa-fc6c-4af7-ac8c-585e44e60cca > Possible incorrect order of operations: dereference ignored -This warning indicates that the result of a pointer dereference is being ignored, which raises the question of why the pointer is being dereferenced in the first place. - ## Remarks +This warning indicates that the result of a pointer dereference is being ignored, which raises the question of why the pointer is being dereferenced in the first place. + The compiler will correctly optimize away the gratuitous dereference. In some cases, however, this defect may reflect a precedence or logic error. One common cause for this defect is an expression statement of the form: diff --git a/docs/code-quality/c6276.md b/docs/code-quality/c6276.md index 88eb047af53..b116e8871a1 100644 --- a/docs/code-quality/c6276.md +++ b/docs/code-quality/c6276.md @@ -10,10 +10,10 @@ ms.assetid: 88f288da-da81-4d32-ab0f-be9d01a2606a > Cast between semantically different string types. Use of invalid string can lead to undefined behavior. -This warning indicates a potentially incorrect cast from a narrow character string (`char*`) to a wide character string (`wchar_t*`). - ## Remarks +This warning indicates a potentially incorrect cast from a narrow character string (`char*`) to a wide character string (`wchar_t*`). + Because the Microsoft compiler implements wide strings with a character size of 2 bytes, casting from a narrow string might produce strings that aren't correctly terminated. If you use such strings with the `wcs*` functions in the runtime library, they could cause buffer overruns and access violations. Code analysis name: `CHAR_TO_WCHAR_CAST` diff --git a/docs/code-quality/c6277.md b/docs/code-quality/c6277.md index c01fd781f8a..30dfabbba6e 100644 --- a/docs/code-quality/c6277.md +++ b/docs/code-quality/c6277.md @@ -10,10 +10,10 @@ ms.assetid: 2b41252a-68c2-4e92-b005-0458db5f4430 > NULL application name with an unquoted path in call to '*function-name*': results in a security vulnerability if the path contains spaces -This warning indicates that the application name parameter is null and that there might be spaces in the executable path name. - ## Remarks +This warning indicates that the application name parameter is null and that there might be spaces in the executable path name. + Unless the executable name is fully qualified, there's likely to be a security problem. A malicious user could insert a rogue executable with the same name earlier in the path. To correct this warning, you can specify the application name instead of passing null. Alternatively, if you do pass null for the application name, use quotation marks around the executable path. Code analysis name: `CREATEPROCESS_ESCAPE` diff --git a/docs/code-quality/c6279.md b/docs/code-quality/c6279.md index ab28f2ecd13..398e1a0bc76 100644 --- a/docs/code-quality/c6279.md +++ b/docs/code-quality/c6279.md @@ -10,10 +10,10 @@ ms.assetid: 0af88b58-35df-456f-8c02-e8eeffe3b7de > '*variable-name*' is allocated with scalar new, deleted with array delete [] -This warning appears only in C++ code and indicates that the calling function has inconsistently allocated memory with the scalar `new` operator, but freed it with the array `delete[]` operator. If memory is allocated with scalar `new`, it should typically be freed with scalar `delete`. - ## Remarks +This warning appears only in C++ code and indicates that the calling function has inconsistently allocated memory with the scalar `new` operator, but freed it with the array `delete[]` operator. If memory is allocated with scalar `new`, it should typically be freed with scalar `delete`. + The exact ramifications of this defect are difficult to predict. It might cause random behavior or crashes due to usage of uninitialized memory as constructors aren't invoked. Or, it might cause memory allocations and crashes in situations where operators have been overridden. The analysis tool doesn't currently distinguish between these situations. To avoid these kinds of allocation problems altogether, use the mechanisms that are provided by the C++ Standard Library (STL). These include [`shared_ptr`](../standard-library/shared-ptr-class.md), [`unique_ptr`](../standard-library/unique-ptr-class.md), and containers such as [`vector`](../standard-library/vector.md). For more information, see [Smart pointers](../cpp/smart-pointers-modern-cpp.md) and [C++ Standard Library](../standard-library/cpp-standard-library-reference.md). diff --git a/docs/code-quality/c6280.md b/docs/code-quality/c6280.md index f03214777df..046e53583a4 100644 --- a/docs/code-quality/c6280.md +++ b/docs/code-quality/c6280.md @@ -10,10 +10,10 @@ ms.assetid: b91f2966-0876-4c9b-843a-e142f35be864 > '*variable-name*' is allocated with '*function-name-1*', but deleted with '*function-name-2*' -This warning indicates that the calling function has inconsistently allocated memory by using a function from one family and freed it by using a function from another. - ## Remarks +This warning indicates that the calling function has inconsistently allocated memory by using a function from one family and freed it by using a function from another. + The analyzer checks for this condition only when the `_Analysis_mode_(_Analysis_local_leak_checks_)` SAL annotation is specified. By default, this annotation is specified for Windows kernel mode (driver) code. For more information about SAL annotations, see [Using SAL Annotations to Reduce C/C++ Code Defects](../code-quality/using-sal-annotations-to-reduce-c-cpp-code-defects.md). For example, this warning would be produced if memory is allocated by using `malloc` but freed by using `GlobalFree` or `delete`. In the specific cases of mismatches between array `new[]` and scalar `delete`, more precise warnings are reported instead of this one. diff --git a/docs/code-quality/c6283.md b/docs/code-quality/c6283.md index 436a46f1f52..12cb8a4095b 100644 --- a/docs/code-quality/c6283.md +++ b/docs/code-quality/c6283.md @@ -10,10 +10,10 @@ ms.assetid: 7760d32e-6d71-4c81-a6d2-719c9c76c2bb > '*variable-name*' is allocated with array new [], but deleted with scalar delete -This warning appears only in C++ code and indicates that the calling function has inconsistently allocated memory with the array `new []` operator, but freed it with the scalar `delete` operator. - ## Remarks +This warning appears only in C++ code and indicates that the calling function has inconsistently allocated memory with the array `new []` operator, but freed it with the scalar `delete` operator. + This defect might cause leaks, memory corruptions, and, in situations where operators have been overridden, crashes. If memory is allocated with array `new []`, it should typically be freed with array `delete[]`. Warning C6283 only applies to arrays of primitive types such as integers or characters. If elements of the array are objects of class type then warning [C6278](../code-quality/c6278.md) is issued. diff --git a/docs/code-quality/c6285.md b/docs/code-quality/c6285.md index 44221b6a57e..c867f27ea19 100644 --- a/docs/code-quality/c6285.md +++ b/docs/code-quality/c6285.md @@ -10,10 +10,10 @@ ms.assetid: f5bc6d3d-d33b-42c8-98d2-92ec8ab17193 > ('*non-zero constant*' \|\| '*non-zero constant*') is always a non-zero constant. Did you intend to use the bitwise-and operator? -This warning indicates that two constant values, both greater than one, were detected as arguments to a logical-or operation that occurs in a test context. This expression is always TRUE. - ## Remarks +This warning indicates that two constant values, both greater than one, were detected as arguments to a logical-or operation that occurs in a test context. This expression is always TRUE. + Constant values greater than one suggest that the arguments to logical-or could be bit fields. Consider whether a bitwise operator might be a more appropriate operator in this case. Code analysis name: `LOGICALOROFCONSTANTS` diff --git a/docs/code-quality/c6290.md b/docs/code-quality/c6290.md index 2557e2d286a..df7afb644e7 100644 --- a/docs/code-quality/c6290.md +++ b/docs/code-quality/c6290.md @@ -10,10 +10,10 @@ ms.assetid: 96a1acc4-724b-4b56-b091-661ddcc03884 > Bitwise operation on logical result: ! has higher precedence than &. Use && or (!(x & y)) instead -This warning indicates possible confusion in the use of an operator or an operator precedence. - ## Remarks +This warning indicates possible confusion in the use of an operator or an operator precedence. + The `!` operator yields a Boolean result, and it has higher precedence than the `&`. The bitwise-and (&) operator takes two arithmetic arguments. Therefore, one of the following errors has been detected: - The expression is mis-parenthesized: diff --git a/docs/code-quality/c6291.md b/docs/code-quality/c6291.md index 9e2421a92b6..28e40de030f 100644 --- a/docs/code-quality/c6291.md +++ b/docs/code-quality/c6291.md @@ -10,6 +10,8 @@ ms.assetid: d0457386-e403-43fa-b959-5b6a495fab42 > Bitwise operation on logical result: ! has higher precedence than \|. Use \|\| or (!(x \| y)) instead +## Remarks + The `!` operator yields a Boolean result, and the `|` (bitwise-or) operator takes two arithmetic arguments. The `!` operator also has higher precedence than `|`. Therefore, one of the following errors has been detected: From a1c5af69f07a1bef74085664dc304fa3b19eca6b Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 6 Sep 2025 22:16:30 +0800 Subject: [PATCH 1740/2255] Replace term "sample" with "example" for warning references in range [C6251, C6310] --- docs/code-quality/c6259.md | 2 +- docs/code-quality/c6271.md | 4 ++-- docs/code-quality/c6277.md | 2 +- docs/code-quality/c6278.md | 4 ++-- docs/code-quality/c6280.md | 2 +- docs/code-quality/c6290.md | 2 +- docs/code-quality/c6293.md | 2 +- docs/code-quality/c6294.md | 4 ++-- docs/code-quality/c6298.md | 4 ++-- docs/code-quality/c6302.md | 2 +- docs/code-quality/c6303.md | 4 ++-- docs/code-quality/c6308.md | 2 +- 12 files changed, 17 insertions(+), 17 deletions(-) diff --git a/docs/code-quality/c6259.md b/docs/code-quality/c6259.md index 6819a938cdc..70153b87448 100644 --- a/docs/code-quality/c6259.md +++ b/docs/code-quality/c6259.md @@ -18,7 +18,7 @@ Code analysis name: `DEADCODEINBITORLIMITEDSWITCH` ## Example -The following sample code generates this warning because the 'switch' expression `(rand() & 3)` can't evaluate to case label (`case 4`): +The following example code generates this warning because the 'switch' expression `(rand() & 3)` can't evaluate to case label (`case 4`): ```cpp #include diff --git a/docs/code-quality/c6271.md b/docs/code-quality/c6271.md index 29c26267883..8f3a327731b 100644 --- a/docs/code-quality/c6271.md +++ b/docs/code-quality/c6271.md @@ -17,7 +17,7 @@ Code analysis name: `EXTRA_ARGUMENT_TO_FORMAT_FUNCTION` ## Example -The following sample code generates this warning: +The following example code generates this warning: ```cpp #include @@ -43,7 +43,7 @@ void f() } ``` -The following sample code calls the safe string manipulation function, `sprintf_s`, to correct this warning: +The following example code calls the safe string manipulation function, `sprintf_s`, to correct this warning: ```cpp #include diff --git a/docs/code-quality/c6277.md b/docs/code-quality/c6277.md index 30dfabbba6e..2af6a6c2da0 100644 --- a/docs/code-quality/c6277.md +++ b/docs/code-quality/c6277.md @@ -20,7 +20,7 @@ Code analysis name: `CREATEPROCESS_ESCAPE` ## Example -The following sample code generates warning C6277. The warning is caused by the NULL application name and from the executable path name having a space. Due to how the function parses spaces, there's a risk that a different executable could be run. For more information, see [`CreateProcessA`](/windows/desktop/api/processthreadsapi/nf-processthreadsapi-createprocessa). +The following example code generates warning C6277. The warning is caused by the NULL application name and from the executable path name having a space. Due to how the function parses spaces, there's a risk that a different executable could be run. For more information, see [`CreateProcessA`](/windows/desktop/api/processthreadsapi/nf-processthreadsapi-createprocessa). ```cpp #include diff --git a/docs/code-quality/c6278.md b/docs/code-quality/c6278.md index 8ae400a83c7..80e6343773c 100644 --- a/docs/code-quality/c6278.md +++ b/docs/code-quality/c6278.md @@ -30,7 +30,7 @@ Code analysis name: `ARRAY_NEW_DELETE_MISMATCH` ## Example -The following sample code generates warning C6278: +The following example code generates warning C6278: ```cpp class A @@ -46,7 +46,7 @@ void f( ) } ``` -To correct this warning, use the following sample code: +To correct this warning, use the following example code: ```cpp void f( ) diff --git a/docs/code-quality/c6280.md b/docs/code-quality/c6280.md index 046e53583a4..0d70a20e38e 100644 --- a/docs/code-quality/c6280.md +++ b/docs/code-quality/c6280.md @@ -22,7 +22,7 @@ Code analysis name: `MEMORY_ALLOCATION_MISMATCH` ## Example -The following sample code generates this warning. `pInt` is allocated using `calloc` but is freed using the mismatched function `delete`: +The following example code generates this warning. `pInt` is allocated using `calloc` but is freed using the mismatched function `delete`: ```cpp // C6280a_warning.cpp diff --git a/docs/code-quality/c6290.md b/docs/code-quality/c6290.md index df7afb644e7..b68eea38c13 100644 --- a/docs/code-quality/c6290.md +++ b/docs/code-quality/c6290.md @@ -46,7 +46,7 @@ void f(int x, int y) } ``` -To correct this warning, use the following sample code: +To correct this warning, use the following example code: ```cpp void f(int x, int y) diff --git a/docs/code-quality/c6293.md b/docs/code-quality/c6293.md index ae4618266c7..aab3bd7008b 100644 --- a/docs/code-quality/c6293.md +++ b/docs/code-quality/c6293.md @@ -20,7 +20,7 @@ Code analysis name: `LOOP_INDEX_GOES_NEGATIVE` ## Example -The following sample code generates this warning: +The following example code generates this warning: ```cpp void f( ) diff --git a/docs/code-quality/c6294.md b/docs/code-quality/c6294.md index c67163e3f5f..feea1e9fd8a 100644 --- a/docs/code-quality/c6294.md +++ b/docs/code-quality/c6294.md @@ -18,7 +18,7 @@ Code analysis name: `LOOP_BODY_NEVER_EXECUTED` ## Example -The following sample code generates this warning because MAX_VALUE is 0: +The following example code generates this warning because MAX_VALUE is 0: ```cpp #define MAX_VALUE 0 @@ -32,7 +32,7 @@ void f() } ``` -The following sample code corrects this warning by changing the value of MAX_VALUE to 25 +The following example code corrects this warning by changing the value of MAX_VALUE to 25 ```cpp #define MAX_VALUE 25 diff --git a/docs/code-quality/c6298.md b/docs/code-quality/c6298.md index 7887a8ee7c9..c77350238ff 100644 --- a/docs/code-quality/c6298.md +++ b/docs/code-quality/c6298.md @@ -20,7 +20,7 @@ Code analysis name: `CONST_STRING_TO_WRITABLE_STRING` ## Example -The following sample code generates this warning: +The following example code generates this warning: ```cpp #include @@ -58,7 +58,7 @@ void f() } ``` -To correct this warning, use the following sample code: +To correct this warning, use the following example code: ```cpp #include diff --git a/docs/code-quality/c6302.md b/docs/code-quality/c6302.md index e7e9a30709a..1c03b1fe8e5 100644 --- a/docs/code-quality/c6302.md +++ b/docs/code-quality/c6302.md @@ -27,7 +27,7 @@ void f() } ``` -The following sample code remediates this issue by using `%hs` to specify a single-byte character string. Alternatively it could have switched to `%S`, which is a narrow string when used with `wprintf` like functions. See [Format specification syntax: `printf` and `wprintf` functions](../c-runtime-library/format-specification-syntax-printf-and-wprintf-functions.md#type-field-characters) for more options. +The following example code remediates this issue by using `%hs` to specify a single-byte character string. Alternatively it could have switched to `%S`, which is a narrow string when used with `wprintf` like functions. See [Format specification syntax: `printf` and `wprintf` functions](../c-runtime-library/format-specification-syntax-printf-and-wprintf-functions.md#type-field-characters) for more options. ```cpp void f() diff --git a/docs/code-quality/c6303.md b/docs/code-quality/c6303.md index bb481fe624c..65391970ea7 100644 --- a/docs/code-quality/c6303.md +++ b/docs/code-quality/c6303.md @@ -17,7 +17,7 @@ Code analysis name: `WCHAR_CHAR_ARGUMENT_TO_FORMAT_FUNCTION` ## Example -The following sample code generates this warning. `buff` is a wide character string, but the `printf_s` call expects a short string as denoted by `%s`: +The following example code generates this warning. `buff` is a wide character string, but the `printf_s` call expects a short string as denoted by `%s`: ```cpp #include @@ -29,7 +29,7 @@ void f() } ``` -The following sample code remediates this issue by using `%ls` to specify a wide character string. Alternatively it could have switched to `%S`, which is a wide string when used with `printf` like functions. See [Format specification syntax: `printf` and `wprintf` functions](../c-runtime-library/format-specification-syntax-printf-and-wprintf-functions.md#type-field-characters) for more options. +The following example code remediates this issue by using `%ls` to specify a wide character string. Alternatively it could have switched to `%S`, which is a wide string when used with `printf` like functions. See [Format specification syntax: `printf` and `wprintf` functions](../c-runtime-library/format-specification-syntax-printf-and-wprintf-functions.md#type-field-characters) for more options. ```cpp #include diff --git a/docs/code-quality/c6308.md b/docs/code-quality/c6308.md index 07cba3b71f4..bfcdecf06d3 100644 --- a/docs/code-quality/c6308.md +++ b/docs/code-quality/c6308.md @@ -18,7 +18,7 @@ Code analysis name: `REALLOCLEAK` ## Example -The following sample code generates warning C6308. This issue stems from the assignment of the return value from `realloc` to `x`. If `realloc` fails and returns a null pointer, then the original memory pointed to by `x` won't be freed: +The following example code generates warning C6308. This issue stems from the assignment of the return value from `realloc` to `x`. If `realloc` fails and returns a null pointer, then the original memory pointed to by `x` won't be freed: ```cpp #include From 02fda7c1658d9fd387ba895eccad9f99e07c0e0b Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 6 Sep 2025 22:23:19 +0800 Subject: [PATCH 1741/2255] Update metadata for warning references in range [C6251, C6310] --- docs/code-quality/c6255.md | 3 +-- docs/code-quality/c6258.md | 3 +-- docs/code-quality/c6259.md | 3 +-- docs/code-quality/c6260.md | 3 +-- docs/code-quality/c6262.md | 2 +- docs/code-quality/c6263.md | 3 +-- docs/code-quality/c6268.md | 3 +-- docs/code-quality/c6269.md | 3 +-- docs/code-quality/c6270.md | 2 +- docs/code-quality/c6271.md | 2 +- docs/code-quality/c6272.md | 2 +- docs/code-quality/c6273.md | 2 +- docs/code-quality/c6274.md | 2 +- docs/code-quality/c6276.md | 3 +-- docs/code-quality/c6277.md | 3 +-- docs/code-quality/c6278.md | 3 +-- docs/code-quality/c6279.md | 3 +-- docs/code-quality/c6280.md | 3 +-- docs/code-quality/c6281.md | 3 +-- docs/code-quality/c6282.md | 3 +-- docs/code-quality/c6283.md | 3 +-- docs/code-quality/c6284.md | 2 +- docs/code-quality/c6285.md | 3 +-- docs/code-quality/c6286.md | 3 +-- docs/code-quality/c6287.md | 3 +-- docs/code-quality/c6288.md | 3 +-- docs/code-quality/c6289.md | 3 +-- docs/code-quality/c6290.md | 3 +-- docs/code-quality/c6291.md | 3 +-- docs/code-quality/c6292.md | 3 +-- docs/code-quality/c6293.md | 3 +-- docs/code-quality/c6294.md | 3 +-- docs/code-quality/c6295.md | 3 +-- docs/code-quality/c6296.md | 2 +- docs/code-quality/c6297.md | 3 +-- docs/code-quality/c6298.md | 3 +-- docs/code-quality/c6299.md | 3 +-- docs/code-quality/c6302.md | 2 +- docs/code-quality/c6303.md | 2 +- docs/code-quality/c6305.md | 3 +-- docs/code-quality/c6306.md | 3 +-- docs/code-quality/c6308.md | 3 +-- docs/code-quality/c6310.md | 3 +-- 43 files changed, 43 insertions(+), 76 deletions(-) diff --git a/docs/code-quality/c6255.md b/docs/code-quality/c6255.md index 8c79c955c8f..c8859f60aea 100644 --- a/docs/code-quality/c6255.md +++ b/docs/code-quality/c6255.md @@ -1,10 +1,9 @@ --- +title: "Warning C6255" description: "Learn more about: Warning C6255" -title: Warning C6255 ms.date: 11/04/2016 f1_keywords: ["C6255", "UNPROTECTEDUSEOFALLOCA", "__WARNING_UNPROTECTEDUSEOFALLOCA"] helpviewer_keywords: ["C6255"] -ms.assetid: bb6430b2-782a-4410-a8e1-609df06007de --- # Warning C6255 diff --git a/docs/code-quality/c6258.md b/docs/code-quality/c6258.md index 833dd35e708..e9efa609a9d 100644 --- a/docs/code-quality/c6258.md +++ b/docs/code-quality/c6258.md @@ -1,10 +1,9 @@ --- +title: "Warning C6258" description: "Learn more about: Warning C6258" -title: Warning C6258 ms.date: 11/04/2016 f1_keywords: ["C6258", "USINGTERMINATETHREAD", "__WARNING_USINGTERMINATETHREAD"] helpviewer_keywords: ["C6258"] -ms.assetid: 62f3eed7-d9cd-46eb-8c38-0bc4f647941f --- # Warning C6258 diff --git a/docs/code-quality/c6259.md b/docs/code-quality/c6259.md index 70153b87448..07203450c55 100644 --- a/docs/code-quality/c6259.md +++ b/docs/code-quality/c6259.md @@ -1,10 +1,9 @@ --- +title: "Warning C6259" description: "Learn more about: Warning C6259" -title: Warning C6259 ms.date: 11/04/2016 f1_keywords: ["C6259", "DEADCODEINBITORLIMITEDSWITCH", "__WARNING_DEADCODEINBITORLIMITEDSWITCH"] helpviewer_keywords: ["C6259"] -ms.assetid: a370bfd2-6634-402c-84c7-3d83fa0009b7 --- # Warning C6259 diff --git a/docs/code-quality/c6260.md b/docs/code-quality/c6260.md index 5def9c1bcb9..41c4541cf36 100644 --- a/docs/code-quality/c6260.md +++ b/docs/code-quality/c6260.md @@ -1,10 +1,9 @@ --- +title: "Warning C6260" description: "Learn more about: Warning C6260" -title: Warning C6260 ms.date: 11/04/2016 f1_keywords: ["C6260", "USEOFBYTEAREA", "__WARNING_USEOFBYTEAREA"] helpviewer_keywords: ["C6260"] -ms.assetid: 9cbedfcb-32b2-4fe4-99f7-a2d4a7f4422a --- # Warning C6260 diff --git a/docs/code-quality/c6262.md b/docs/code-quality/c6262.md index 775784567c4..1280eed743c 100644 --- a/docs/code-quality/c6262.md +++ b/docs/code-quality/c6262.md @@ -1,5 +1,5 @@ --- -title: Warning C6262 +title: "Warning C6262" description: "Visual Studio C++ Code Analysis warning C6262 description and resolution." ms.date: 10/14/2020 f1_keywords: ["C6262", "EXCESSIVESTACKUSAGE", "__WARNING_EXCESSIVESTACKUSAGE"] diff --git a/docs/code-quality/c6263.md b/docs/code-quality/c6263.md index a232723446f..3d8b854aa72 100644 --- a/docs/code-quality/c6263.md +++ b/docs/code-quality/c6263.md @@ -1,10 +1,9 @@ --- +title: "Warning C6263" description: "Learn more about: Warning C6263" -title: Warning C6263 ms.date: 11/04/2016 f1_keywords: ["C6263", "USINGALLOCAINLOOP", "__WARNING_USINGALLOCAINLOOP"] helpviewer_keywords: ["C6263"] -ms.assetid: bc360ad7-5f59-4480-a642-6c7e6beeb5f6 --- # Warning C6263 diff --git a/docs/code-quality/c6268.md b/docs/code-quality/c6268.md index a45953a8c6d..758c5b3a36b 100644 --- a/docs/code-quality/c6268.md +++ b/docs/code-quality/c6268.md @@ -1,10 +1,9 @@ --- +title: "Warning C6268" description: "Learn more about: Warning C6268" -title: Warning C6268 ms.date: 11/04/2016 f1_keywords: ["C6268", "MISPARENTHESIZED_CASTS", "__WARNING_MISPARENTHESIZED_CASTS"] helpviewer_keywords: ["C6268"] -ms.assetid: fd81e00a-de2f-498b-b3fe-53ce056042d7 --- # Warning C6268 diff --git a/docs/code-quality/c6269.md b/docs/code-quality/c6269.md index 91d890e7ac6..d7b26922a15 100644 --- a/docs/code-quality/c6269.md +++ b/docs/code-quality/c6269.md @@ -1,10 +1,9 @@ --- +title: "Warning C6269" description: "Learn more about: Warning C6269" -title: Warning C6269 ms.date: 11/04/2016 f1_keywords: ["C6269", "POINTER_DEREF_DISCARDED", "__WARNING_POINTER_DEREF_DISCARDED"] helpviewer_keywords: ["C6269"] -ms.assetid: a01fa7fa-fc6c-4af7-ac8c-585e44e60cca --- # Warning C6269 diff --git a/docs/code-quality/c6270.md b/docs/code-quality/c6270.md index 6a23a7f3057..ce3f1f68a54 100644 --- a/docs/code-quality/c6270.md +++ b/docs/code-quality/c6270.md @@ -1,6 +1,6 @@ --- +title: "Warning C6270" description: "Learn more about: Warning C6270" -title: Warning C6270 ms.date: 3/03/2023 f1_keywords: ["C6270", "MISSING_FLOAT_ARGUMENT_TO_FORMAT_FUNCTION", "__WARNING_MISSING_FLOAT_ARGUMENT_TO_FORMAT_FUNCTION"] helpviewer_keywords: ["C6270"] diff --git a/docs/code-quality/c6271.md b/docs/code-quality/c6271.md index 8f3a327731b..059c2c969f0 100644 --- a/docs/code-quality/c6271.md +++ b/docs/code-quality/c6271.md @@ -1,6 +1,6 @@ --- +title: "Warning C6271" description: "Learn more about: Warning C6271" -title: Warning C6271 ms.date: 3/06/2023 f1_keywords: ["C6271", "EXTRA_ARGUMENT_TO_FORMAT_FUNCTION", "__WARNING_EXTRA_ARGUMENT_TO_FORMAT_FUNCTION"] helpviewer_keywords: ["C6271"] diff --git a/docs/code-quality/c6272.md b/docs/code-quality/c6272.md index 5a25de9b994..98cc4975756 100644 --- a/docs/code-quality/c6272.md +++ b/docs/code-quality/c6272.md @@ -1,6 +1,6 @@ --- +title: "Warning C6272" description: "Learn more about: Warning C6272" -title: Warning C6272 ms.date: 03/07/2023 f1_keywords: ["C6272", "NON_FLOAT_ARGUMENT_TO_FORMAT_FUNCTION", "__WARNING_NON_FLOAT_ARGUMENT_TO_FORMAT_FUNCTION"] helpviewer_keywords: ["C6272"] diff --git a/docs/code-quality/c6273.md b/docs/code-quality/c6273.md index 7bf741fbf4b..4a84e4345b0 100644 --- a/docs/code-quality/c6273.md +++ b/docs/code-quality/c6273.md @@ -1,6 +1,6 @@ --- +title: "Warning C6273" description: "Learn more about: Warning C6273" -title: Warning C6273 ms.date: 03/07/2023 f1_keywords: ["C6273", "NON_INTEGER_ARGUMENT_TO_FORMAT_FUNCTION", "__WARNING_NON_INTEGER_ARGUMENT_TO_FORMAT_FUNCTION"] helpviewer_keywords: ["C6273"] diff --git a/docs/code-quality/c6274.md b/docs/code-quality/c6274.md index 79412891722..8a324e84008 100644 --- a/docs/code-quality/c6274.md +++ b/docs/code-quality/c6274.md @@ -1,6 +1,6 @@ --- +title: "Warning C6274" description: "Learn more about: Warning C6274" -title: Warning C6274 ms.date: 03/07/2023 f1_keywords: ["C6274", "NON_CHAR_ARGUMENT_TO_FORMAT_FUNCTION", "__WARNING_NON_CHAR_ARGUMENT_TO_FORMAT_FUNCTION"] helpviewer_keywords: ["C6274"] diff --git a/docs/code-quality/c6276.md b/docs/code-quality/c6276.md index b116e8871a1..e31ce0bf0a4 100644 --- a/docs/code-quality/c6276.md +++ b/docs/code-quality/c6276.md @@ -1,10 +1,9 @@ --- +title: "Warning C6276" description: "Learn more about: Warning C6276" -title: Warning C6276 ms.date: 09/28/2022 f1_keywords: ["C6276", "CHAR_TO_WCHAR_CAST", "__WARNING_CHAR_TO_WCHAR_CAST"] helpviewer_keywords: ["C6276"] -ms.assetid: 88f288da-da81-4d32-ab0f-be9d01a2606a --- # Warning C6276 diff --git a/docs/code-quality/c6277.md b/docs/code-quality/c6277.md index 2af6a6c2da0..9b80fad0fba 100644 --- a/docs/code-quality/c6277.md +++ b/docs/code-quality/c6277.md @@ -1,10 +1,9 @@ --- +title: "Warning C6277" description: "Learn more about: Warning C6277" -title: Warning C6277 ms.date: 09/28/2022 f1_keywords: ["C6277", "CREATEPROCESS_ESCAPE", "__WARNING_CREATEPROCESS_ESCAPE"] helpviewer_keywords: ["C6277"] -ms.assetid: 2b41252a-68c2-4e92-b005-0458db5f4430 --- # Warning C6277 diff --git a/docs/code-quality/c6278.md b/docs/code-quality/c6278.md index 80e6343773c..55e0ddb1a28 100644 --- a/docs/code-quality/c6278.md +++ b/docs/code-quality/c6278.md @@ -1,10 +1,9 @@ --- +title: "Warning C6278" description: "Learn more about: Warning C6278" -title: Warning C6278 ms.date: 10/03/2022 f1_keywords: ["C6278", "ARRAY_NEW_DELETE_MISMATCH", "__WARNING_ARRAY_NEW_DELETE_MISMATCH"] helpviewer_keywords: ["C6278"] -ms.assetid: 5cc3c393-c48a-4f91-9f38-03d7868be5e5 --- # Warning C6278 diff --git a/docs/code-quality/c6279.md b/docs/code-quality/c6279.md index 398e1a0bc76..8c9b92fc129 100644 --- a/docs/code-quality/c6279.md +++ b/docs/code-quality/c6279.md @@ -1,10 +1,9 @@ --- +title: "Warning C6279" description: "Learn more about: Warning C6279" -title: Warning C6279 ms.date: 10/03/2022 f1_keywords: ["C6279", "NEW_ARRAY_DELETE_MISMATCH", "__WARNING_NEW_ARRAY_DELETE_MISMATCH"] helpviewer_keywords: ["C6279"] -ms.assetid: 0af88b58-35df-456f-8c02-e8eeffe3b7de --- # Warning C6279 diff --git a/docs/code-quality/c6280.md b/docs/code-quality/c6280.md index 0d70a20e38e..0fa6146b704 100644 --- a/docs/code-quality/c6280.md +++ b/docs/code-quality/c6280.md @@ -1,10 +1,9 @@ --- +title: "Warning C6280" description: "Learn more about: Warning C6280" -title: Warning C6280 ms.date: 10/03/2022 f1_keywords: ["C6280", "MEMORY_ALLOCATION_MISMATCH", "__WARNING_MEMORY_ALLOCATION_MISMATCH"] helpviewer_keywords: ["C6280"] -ms.assetid: b91f2966-0876-4c9b-843a-e142f35be864 --- # Warning C6280 diff --git a/docs/code-quality/c6281.md b/docs/code-quality/c6281.md index f16c015ee52..4481fe9fc2e 100644 --- a/docs/code-quality/c6281.md +++ b/docs/code-quality/c6281.md @@ -1,10 +1,9 @@ --- +title: "Warning C6281" description: "Learn more about: Warning C6281" -title: Warning C6281 ms.date: 11/04/2016 f1_keywords: ["C6281", "BITWISERELATIONPRECEDENCEERROR", "__WARNING_BITWISERELATIONPRECEDENCEERROR"] helpviewer_keywords: ["C6281"] -ms.assetid: d0182269-8403-486b-ac3f-325522871bb1 --- # Warning C6281 diff --git a/docs/code-quality/c6282.md b/docs/code-quality/c6282.md index c48e6166325..c068864b18e 100644 --- a/docs/code-quality/c6282.md +++ b/docs/code-quality/c6282.md @@ -1,10 +1,9 @@ --- +title: "Warning C6282" description: "Learn more about: Warning C6282" -title: Warning C6282 ms.date: 11/04/2016 f1_keywords: ["C6282", "ASSIGNMENTREPLACESTEST", "__WARNING_ASSIGNMENTREPLACESTEST"] helpviewer_keywords: ["C6282"] -ms.assetid: 7dc153d5-fb9f-424a-8afa-4e2661efa51c --- # Warning C6282 diff --git a/docs/code-quality/c6283.md b/docs/code-quality/c6283.md index 12cb8a4095b..4607e25d0ce 100644 --- a/docs/code-quality/c6283.md +++ b/docs/code-quality/c6283.md @@ -1,10 +1,9 @@ --- +title: "Warning C6283" description: "Learn more about: Warning C6283" -title: Warning C6283 ms.date: 10/03/2022 f1_keywords: ["C6283", "PRIMITIVE_ARRAY_NEW_DELETE_MISMATCH", "__WARNING_PRIMITIVE_ARRAY_NEW_DELETE_MISMATCH"] helpviewer_keywords: ["C6283"] -ms.assetid: 7760d32e-6d71-4c81-a6d2-719c9c76c2bb --- # Warning C6283 diff --git a/docs/code-quality/c6284.md b/docs/code-quality/c6284.md index 4c29d20e333..7bb131248f1 100644 --- a/docs/code-quality/c6284.md +++ b/docs/code-quality/c6284.md @@ -1,6 +1,6 @@ --- +title: "Warning C6284" description: "Learn more about: Warning C6284" -title: Warning C6284 ms.date: 03/07/2023 f1_keywords: ["C6284", "OBJECT_AS_STRING_ARGUMENT_TO_FORMAT_FUNCTION", "__WARNING_OBJECT_AS_STRING_ARGUMENT_TO_FORMAT_FUNCTION"] helpviewer_keywords: ["C6284"] diff --git a/docs/code-quality/c6285.md b/docs/code-quality/c6285.md index c867f27ea19..d7b4077b96d 100644 --- a/docs/code-quality/c6285.md +++ b/docs/code-quality/c6285.md @@ -1,10 +1,9 @@ --- +title: "Warning C6285" description: "Learn more about: Warning C6285" -title: Warning C6285 ms.date: 11/04/2016 f1_keywords: ["C6285", "LOGICALOROFCONSTANTS", "__WARNING_LOGICALOROFCONSTANTS"] helpviewer_keywords: ["C6285"] -ms.assetid: f5bc6d3d-d33b-42c8-98d2-92ec8ab17193 --- # Warning C6285 diff --git a/docs/code-quality/c6286.md b/docs/code-quality/c6286.md index aeedbe05d59..5c850b5e3c2 100644 --- a/docs/code-quality/c6286.md +++ b/docs/code-quality/c6286.md @@ -1,10 +1,9 @@ --- +title: "Warning C6286" description: "Learn more about: Warning C6286" -title: Warning C6286 ms.date: 11/04/2016 f1_keywords: ["C6286", "NONZEROLOGICALORLOSINGSIDEEFFECTS", "__WARNING_NONZEROLOGICALORLOSINGSIDEEFFECTS"] helpviewer_keywords: ["C6286"] -ms.assetid: c79c5d4a-c02b-4b98-891a-d79e471f9da7 --- # Warning C6286 diff --git a/docs/code-quality/c6287.md b/docs/code-quality/c6287.md index 2847f5e85ec..ecf799346b7 100644 --- a/docs/code-quality/c6287.md +++ b/docs/code-quality/c6287.md @@ -1,10 +1,9 @@ --- +title: "Warning C6287" description: "Learn more about: Warning C6287" -title: Warning C6287 ms.date: 12/17/2019 f1_keywords: ["C6287", "REDUNDANTTEST", "__WARNING_REDUNDANTTEST"] helpviewer_keywords: ["C6287"] -ms.assetid: 9cb12641-8853-413a-b89e-f8b32c8dc5d3 --- # Warning C6287 diff --git a/docs/code-quality/c6288.md b/docs/code-quality/c6288.md index ffa9ae3b713..0057b6c8fea 100644 --- a/docs/code-quality/c6288.md +++ b/docs/code-quality/c6288.md @@ -1,10 +1,9 @@ --- +title: "Warning C6288" description: "Learn more about: Warning C6288" -title: Warning C6288 ms.date: 11/04/2016 f1_keywords: ["C6288", "MUTUALINCLUSIONOVERANDISFALSE", "__WARNING_MUTUALINCLUSIONOVERANDISFALSE"] helpviewer_keywords: ["C6288"] -ms.assetid: 3856b80a-c9f2-4e86-97fc-c913b0186788 --- # Warning C6288 diff --git a/docs/code-quality/c6289.md b/docs/code-quality/c6289.md index c5d8c1e205a..500153072b2 100644 --- a/docs/code-quality/c6289.md +++ b/docs/code-quality/c6289.md @@ -1,10 +1,9 @@ --- +title: "Warning C6289" description: "Learn more about: Warning C6289" -title: Warning C6289 ms.date: 11/04/2016 f1_keywords: ["C6289", "MUTUALEXCLUSIONOVERORISTRUE", "__WARNING_MUTUALEXCLUSIONOVERORISTRUE"] helpviewer_keywords: ["C6289"] -ms.assetid: 0fe09974-7577-468b-91a0-62dbe915443e --- # Warning C6289 diff --git a/docs/code-quality/c6290.md b/docs/code-quality/c6290.md index b68eea38c13..61854f30eed 100644 --- a/docs/code-quality/c6290.md +++ b/docs/code-quality/c6290.md @@ -1,10 +1,9 @@ --- +title: "Warning C6290" description: "Learn more about: Warning C6290" -title: Warning C6290 ms.date: 11/04/2016 f1_keywords: ["C6290", "LOGICALNOTBITWISEAND", "__WARNING_LOGICALNOTBITWISEAND"] helpviewer_keywords: ["C6290"] -ms.assetid: 96a1acc4-724b-4b56-b091-661ddcc03884 --- # Warning C6290 diff --git a/docs/code-quality/c6291.md b/docs/code-quality/c6291.md index 28e40de030f..cfdb0e86e6f 100644 --- a/docs/code-quality/c6291.md +++ b/docs/code-quality/c6291.md @@ -1,10 +1,9 @@ --- +title: "Warning C6291" description: "Learn more about: Warning C6291" -title: Warning C6291 ms.date: 11/04/2016 f1_keywords: ["C6291", "LOGICALNOTBITWISEOR", "__WARNING_LOGICALNOTBITWISEOR"] helpviewer_keywords: ["C6291"] -ms.assetid: d0457386-e403-43fa-b959-5b6a495fab42 --- # Warning C6291 diff --git a/docs/code-quality/c6292.md b/docs/code-quality/c6292.md index 9b1926a741c..d3f8731f944 100644 --- a/docs/code-quality/c6292.md +++ b/docs/code-quality/c6292.md @@ -1,10 +1,9 @@ --- +title: "Warning C6292" description: "Learn more about: Warning C6292" -title: Warning C6292 ms.date: 11/04/2016 f1_keywords: ["C6292", "LOOP_COUNTS_UP_FROM_MAX", "__WARNING_LOOP_COUNTS_UP_FROM_MAX"] helpviewer_keywords: ["C6292"] -ms.assetid: 23998c78-ebd7-4ba1-a391-7b31b170f8fe --- # Warning C6292 diff --git a/docs/code-quality/c6293.md b/docs/code-quality/c6293.md index aab3bd7008b..1624ad4ff61 100644 --- a/docs/code-quality/c6293.md +++ b/docs/code-quality/c6293.md @@ -1,10 +1,9 @@ --- +title: "Warning C6293" description: "Learn more about: Warning C6293" -title: Warning C6293 ms.date: 11/04/2016 f1_keywords: ["C6293", "LOOP_INDEX_GOES_NEGATIVE", "__WARNING_LOOP_INDEX_GOES_NEGATIVE"] helpviewer_keywords: ["C6293"] -ms.assetid: 24a475f6-fd93-4778-856a-9dd7941f7520 --- # Warning C6293 diff --git a/docs/code-quality/c6294.md b/docs/code-quality/c6294.md index feea1e9fd8a..d747530e5a5 100644 --- a/docs/code-quality/c6294.md +++ b/docs/code-quality/c6294.md @@ -1,10 +1,9 @@ --- +title: "Warning C6294" description: "Learn more about: Warning C6294" -title: Warning C6294 ms.date: 11/04/2016 f1_keywords: ["C6294", "LOOP_BODY_NEVER_EXECUTED", "__WARNING_LOOP_BODY_NEVER_EXECUTED"] helpviewer_keywords: ["C6294"] -ms.assetid: 1171d76f-b862-416d-b7c0-7a29be5c132d --- # Warning C6294 diff --git a/docs/code-quality/c6295.md b/docs/code-quality/c6295.md index f0c587ef8ed..80b75b427cb 100644 --- a/docs/code-quality/c6295.md +++ b/docs/code-quality/c6295.md @@ -1,10 +1,9 @@ --- +title: "Warning C6295" description: "Learn more about: Warning C6295" -title: Warning C6295 ms.date: 11/04/2016 f1_keywords: ["C6295", "INFINITE_LOOP", "__WARNING_INFINITE_LOOP"] helpviewer_keywords: ["C6295"] -ms.assetid: 64e890ee-b688-4487-938d-3928762b83a4 --- # Warning C6295 diff --git a/docs/code-quality/c6296.md b/docs/code-quality/c6296.md index e6f7da03400..a12e1eaafb5 100644 --- a/docs/code-quality/c6296.md +++ b/docs/code-quality/c6296.md @@ -1,5 +1,5 @@ --- -title: Warning C6296 +title: "Warning C6296" description: "Learn more about: Warning C6296" ms.date: 03/30/2025 f1_keywords: ["C6296", "LOOP_ONLY_EXECUTED_ONCE", "__WARNING_LOOP_ONLY_EXECUTED_ONCE"] diff --git a/docs/code-quality/c6297.md b/docs/code-quality/c6297.md index 2bbd49a68b4..d048cd48b79 100644 --- a/docs/code-quality/c6297.md +++ b/docs/code-quality/c6297.md @@ -1,10 +1,9 @@ --- -title: Warning C6297 +title: "Warning C6297" description: "Describes causes of MSVC Code analysis warning C6297, and how to fix the issue." ms.date: 07/15/2020 f1_keywords: ["C6297", "RESULTOFSHIFTCASTTOLARGERSIZE", "__WARNING_RESULTOFSHIFTCASTTOLARGERSIZE"] helpviewer_keywords: ["C6297"] -ms.assetid: 17b585f0-75e5-4fc0-935a-143ec67659f4 --- # Warning C6297 diff --git a/docs/code-quality/c6298.md b/docs/code-quality/c6298.md index c77350238ff..e86e5e4b260 100644 --- a/docs/code-quality/c6298.md +++ b/docs/code-quality/c6298.md @@ -1,10 +1,9 @@ --- +title: "Warning C6298" description: "Learn more about: Warning C6298" -title: Warning C6298 ms.date: 11/04/2016 f1_keywords: ["C6298", "CONST_STRING_TO_WRITABLE_STRING", "__WARNING_CONST_STRING_TO_WRITABLE_STRING"] helpviewer_keywords: ["C6298"] -ms.assetid: 986dc8e7-8596-4223-a66f-8616357d4399 --- # Warning C6298 diff --git a/docs/code-quality/c6299.md b/docs/code-quality/c6299.md index 43c347fecea..2a56ce73b7b 100644 --- a/docs/code-quality/c6299.md +++ b/docs/code-quality/c6299.md @@ -1,10 +1,9 @@ --- +title: "Warning C6299" description: "Learn more about: Warning C6299" -title: Warning C6299 ms.date: 11/04/2016 f1_keywords: ["C6299", "BITFIELD_TO_BOOL_COMPARISON", "__WARNING_BITFIELD_TO_BOOL_COMPARISON"] helpviewer_keywords: ["C6299"] -ms.assetid: 5129ac34-0d4f-4056-aea2-b0df2127dead --- # Warning C6299 diff --git a/docs/code-quality/c6302.md b/docs/code-quality/c6302.md index 1c03b1fe8e5..1de8b8f8611 100644 --- a/docs/code-quality/c6302.md +++ b/docs/code-quality/c6302.md @@ -1,6 +1,6 @@ --- +title: "Warning C6302" description: "Learn more about: Warning C6302" -title: Warning C6302 ms.date: 03/07/2023 f1_keywords: ["C6302", "CHAR_WCHAR_ARGUMENT_TO_FORMAT_FUNCTION", "__WARNING_CHAR_WCHAR_ARGUMENT_TO_FORMAT_FUNCTION"] helpviewer_keywords: ["C6302"] diff --git a/docs/code-quality/c6303.md b/docs/code-quality/c6303.md index 65391970ea7..003309b49f4 100644 --- a/docs/code-quality/c6303.md +++ b/docs/code-quality/c6303.md @@ -1,6 +1,6 @@ --- +title: "Warning C6303" description: "Learn more about: Warning C6303" -title: Warning C6303 ms.date: 03/07/2023 f1_keywords: ["C6303", "WCHAR_CHAR_ARGUMENT_TO_FORMAT_FUNCTION", "__WARNING_WCHAR_CHAR_ARGUMENT_TO_FORMAT_FUNCTION"] helpviewer_keywords: ["C6303"] diff --git a/docs/code-quality/c6305.md b/docs/code-quality/c6305.md index 72f3f0ec9d7..9ffba3948ee 100644 --- a/docs/code-quality/c6305.md +++ b/docs/code-quality/c6305.md @@ -1,10 +1,9 @@ --- +title: "Warning C6305" description: "Learn more about: Warning C6305" -title: Warning C6305 ms.date: 11/04/2016 f1_keywords: ["C6305", "SIZEOF_COUNTOF_MISMATCH", "__WARNING_SIZEOF_COUNTOF_MISMATCH"] helpviewer_keywords: ["C6305"] -ms.assetid: 4b3bdf86-b593-425e-89cb-9282878b21bd --- # Warning C6305 diff --git a/docs/code-quality/c6306.md b/docs/code-quality/c6306.md index 7235deeb6eb..c4d0f81a096 100644 --- a/docs/code-quality/c6306.md +++ b/docs/code-quality/c6306.md @@ -1,10 +1,9 @@ --- +title: "Warning C6306" description: "Learn more about: Warning C6306" -title: Warning C6306 ms.date: 11/04/2016 f1_keywords: ["C6306", "INCORRECT_VARARG_FUNCTIONCALL", "__WARNING_INCORRECT_VARARG_FUNCTIONCALL"] helpviewer_keywords: ["C6306"] -ms.assetid: 7502710c-7e0e-4412-aecc-b6821cb8c182 --- # Warning C6306 diff --git a/docs/code-quality/c6308.md b/docs/code-quality/c6308.md index bfcdecf06d3..0a92764dc8b 100644 --- a/docs/code-quality/c6308.md +++ b/docs/code-quality/c6308.md @@ -1,10 +1,9 @@ --- -title: Warning C6308 +title: "Warning C6308" description: "Understand the causes of Microsoft C/C++ code analysis warning C6308, and learn how to fix them." ms.date: 09/28/2022 f1_keywords: ["C6308", "REALLOCLEAK", "__WARNING_REALLOCLEAK"] helpviewer_keywords: ["C6308"] -ms.assetid: 1162cd96-9037-4576-9858-0c8361a12559 --- # Warning C6308 diff --git a/docs/code-quality/c6310.md b/docs/code-quality/c6310.md index 88dd7cb3800..30516b4684d 100644 --- a/docs/code-quality/c6310.md +++ b/docs/code-quality/c6310.md @@ -1,10 +1,9 @@ --- +title: "Warning C6310" description: "Learn more about: Warning C6310" -title: Warning C6310 ms.date: 11/04/2016 f1_keywords: ["C6310", "ILLEGALEXCEPTEXPRCONST", "__WARNING_ILLEGALEXCEPTEXPRCONST"] helpviewer_keywords: ["C6310"] -ms.assetid: e759eb63-883f-4c3e-bf2f-b924ff511405 --- # Warning C6310 From 08758007a8c80a3f6fa4861719bf4baec891d5f0 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 6 Sep 2025 22:25:04 +0800 Subject: [PATCH 1742/2255] Add leading example sentence in C6284 warning reference --- docs/code-quality/c6284.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/code-quality/c6284.md b/docs/code-quality/c6284.md index 7bb131248f1..81aeb042c5f 100644 --- a/docs/code-quality/c6284.md +++ b/docs/code-quality/c6284.md @@ -19,6 +19,8 @@ Code analysis name: `OBJECT_AS_STRING_ARGUMENT_TO_FORMAT_FUNCTION` ## Example +The following example generates C6284: + ```cpp #include #include From 2b974057a80efce075fa8c02e58418af6fd1a613 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 7 Sep 2025 18:46:09 +0800 Subject: [PATCH 1743/2255] Add "Remarks" headings for warning references in range [C6311, C6400] --- docs/code-quality/c6329.md | 2 +- docs/code-quality/c6330.md | 2 ++ docs/code-quality/c6331.md | 4 ++-- docs/code-quality/c6332.md | 4 ++-- docs/code-quality/c6383.md | 4 ++-- docs/code-quality/c6384.md | 4 ++-- docs/code-quality/c6392.md | 4 ++-- docs/code-quality/c6393.md | 4 ++-- docs/code-quality/c6394.md | 4 ++-- 9 files changed, 17 insertions(+), 15 deletions(-) diff --git a/docs/code-quality/c6329.md b/docs/code-quality/c6329.md index b34263a856d..6a190440063 100644 --- a/docs/code-quality/c6329.md +++ b/docs/code-quality/c6329.md @@ -16,7 +16,7 @@ The program is comparing a number against the return value from a call to `Creat Code analysis name: `POTENTIAL_INCORRECT_RETVAL_CHECK` -## Examples +## Example This code could cause the warning: diff --git a/docs/code-quality/c6330.md b/docs/code-quality/c6330.md index d94d00c081e..a7c0499a438 100644 --- a/docs/code-quality/c6330.md +++ b/docs/code-quality/c6330.md @@ -10,4 +10,6 @@ ms.assetid: 48594e1c-0a4b-4848-8598-ae6d7e08b4e9 > '*type1*' passed as Parameter('*number*') when '*type2*' is required in call to '*function*' +## Remarks + Code analysis name: `POTENTIAL_ARGUMENT_TYPE_MISMATCH` diff --git a/docs/code-quality/c6331.md b/docs/code-quality/c6331.md index b0e322a1d49..b0ba127fcf7 100644 --- a/docs/code-quality/c6331.md +++ b/docs/code-quality/c6331.md @@ -9,10 +9,10 @@ helpviewer_keywords: ["C6331"] > Invalid parameter: passing MEM_RELEASE and MEM_DECOMMIT in conjunction to *`function`* is not allowed. This results in the failure of this call -This message indicates that an invalid parameter is passed to `VirtualFree` or `VirtualFreeEx`. `VirtualFree` and `VirtualFreeEx` both reject the flags (`MEM_RELEASE | MEM_DECOMMIT`) in combination. Therefore, the values `MEM_DECOMMIT` and `MEM_RELEASE` may not be used together in the same call. - ## Remarks +This message indicates that an invalid parameter is passed to `VirtualFree` or `VirtualFreeEx`. `VirtualFree` and `VirtualFreeEx` both reject the flags (`MEM_RELEASE | MEM_DECOMMIT`) in combination. Therefore, the values `MEM_DECOMMIT` and `MEM_RELEASE` may not be used together in the same call. + It's not required for decommit and release to occur as independent steps. Releasing committed memory will decommit the pages as well. Also, ensure the return value of this function isn't ignored. Code analysis name: `VirtualFreeInvalidParam1` diff --git a/docs/code-quality/c6332.md b/docs/code-quality/c6332.md index acf5ef2d951..2e6ec8cae69 100644 --- a/docs/code-quality/c6332.md +++ b/docs/code-quality/c6332.md @@ -10,10 +10,10 @@ ms.assetid: 93d74b3f-4070-4b48-807e-52b1dfee1330 > Invalid parameter: passing zero as the dwFreeType parameter to '*function*' is not allowed. This results in the failure of this call -This warning indicates that an invalid parameter is being passed to `VirtualFree` or `VirtualFreeEx`. - ## Remarks +This warning indicates that an invalid parameter is being passed to `VirtualFree` or `VirtualFreeEx`. + `VirtualFree` and `VirtualFreeEx` both reject a `dwFreeType` parameter of zero. The `dwFreeType` parameter can be either `MEM_DECOMMIT` or `MEM_RELEASE`. However, the values `MEM_DECOMMIT` and `MEM_RELEASE` may not be used together in the same call. Also, make sure that the return value of the `VirtualFree` function isn't ignored. Code analysis name: `VirtualFreeInvalidParam2` diff --git a/docs/code-quality/c6383.md b/docs/code-quality/c6383.md index 72d0ef8b4fb..61df5f99552 100644 --- a/docs/code-quality/c6383.md +++ b/docs/code-quality/c6383.md @@ -9,10 +9,10 @@ helpviewer_keywords: ["C6383"] > Buffer overrun due to conversion of an element count into a byte count: an element count is expected for parameter *`parameter_name`* in call to *`function_name`* -This warning indicates that a non-constant byte count is being passed when an element count is instead required. - ## Remarks +This warning indicates that a non-constant byte count is being passed when an element count is instead required. + Typically, this warning occurs when a variable is multiplied by the `sizeof` a type. This issue will likely result in more bytes being copied to the buffer than it can hold. Code analysis name: `ELEMENTS_TO_BYTES` diff --git a/docs/code-quality/c6384.md b/docs/code-quality/c6384.md index 75067282fa5..178e82c949e 100644 --- a/docs/code-quality/c6384.md +++ b/docs/code-quality/c6384.md @@ -10,10 +10,10 @@ ms.assetid: 9c605b61-1485-49a8-847b-41170193dbf4 > Dividing sizeof a pointer by another value -This warning indicates that a size calculation might be incorrect. To calculate the number of elements in an array, you sometimes divide the size of the array by the size of the first element. However, when the array is actually a pointer, the result is typically different than intended. - ## Remarks +This warning indicates that a size calculation might be incorrect. To calculate the number of elements in an array, you sometimes divide the size of the array by the size of the first element. However, when the array is actually a pointer, the result is typically different than intended. + If the pointer is a function parameter and the size of the buffer wasn't passed, it isn't possible to calculate the maximum buffer available. When the pointer is allocated locally, the size used in the allocation should be used. Code analysis name: `DIVIDING_SIZEOF_POINTER` diff --git a/docs/code-quality/c6392.md b/docs/code-quality/c6392.md index b8dc3b2ff4f..882d844c5be 100644 --- a/docs/code-quality/c6392.md +++ b/docs/code-quality/c6392.md @@ -9,10 +9,10 @@ helpviewer_keywords: ["C6392"] > This expression writes the value of the pointer to the stream. If this is intentional, add an explicit cast to 'void *' -This rule was added in Visual Studio 2022 17.8. - ## Remarks +This rule was added in Visual Studio 2022 17.8. + C++ supports wide character streams such as `std::wostringstream`, and nonwide character streams such as `std::ostringstream`. Trying to print a wide string to a nonwide stream calls the `void*` overload of `operator<<`. This overload prints the address of the wide string instead of the value. Code analysis name: `STREAM_OUTPUT_VOID_PTR` diff --git a/docs/code-quality/c6393.md b/docs/code-quality/c6393.md index a905c012a25..2dc859f2b73 100644 --- a/docs/code-quality/c6393.md +++ b/docs/code-quality/c6393.md @@ -9,10 +9,10 @@ helpviewer_keywords: ["C6393"] > A lookup table of size 365 isn't sufficient to handle leap years -This rule was added in Visual Studio 2022 17.8. - ## Remarks +This rule was added in Visual Studio 2022 17.8. + In the Gregorian calendar, every year exactly divisible by four is a leap year--except for years that are exactly divisible by 100. The centurial years are also leap years if they're exactly divisible by 400. A leap year bug occurs when software doesn't account for this leap year logic, or uses flawed logic. The can affect reliability, availability, or even the security of the affected system. diff --git a/docs/code-quality/c6394.md b/docs/code-quality/c6394.md index d4a4fe66689..6235fc87555 100644 --- a/docs/code-quality/c6394.md +++ b/docs/code-quality/c6394.md @@ -9,10 +9,10 @@ helpviewer_keywords: ["C6394"] > A lookup table of size 365 isn't sufficient to handle leap years -This rule was added in Visual Studio 2022 17.8. - ## Remarks +This rule was added in Visual Studio 2022 17.8. + In the Gregorian calendar, every year exactly divisible by four is a leap year--except for years that are exactly divisible by 100. The centurial years are also leap years if they're exactly divisible by 400. A leap year bug occurs when software doesn't account for this leap year logic, or uses flawed logic. The can affect reliability, availability, or even the security of the affected system. From 907d7a720886685977fd8bdb91842410dcefc88e Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 7 Sep 2025 18:46:44 +0800 Subject: [PATCH 1744/2255] Replace term "sample" with "example" for warning references in range [C6311, C6400] --- docs/code-quality/c6331.md | 2 +- docs/code-quality/c6333.md | 2 +- docs/code-quality/c6388.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/code-quality/c6331.md b/docs/code-quality/c6331.md index b0ba127fcf7..cac738ebf89 100644 --- a/docs/code-quality/c6331.md +++ b/docs/code-quality/c6331.md @@ -19,7 +19,7 @@ Code analysis name: `VirtualFreeInvalidParam1` ## Example -The following sample code generates warning C6331: +The following example code generates warning C6331: ```cpp #include diff --git a/docs/code-quality/c6333.md b/docs/code-quality/c6333.md index 3f917962eda..de17123196b 100644 --- a/docs/code-quality/c6333.md +++ b/docs/code-quality/c6333.md @@ -18,7 +18,7 @@ Code analysis name: `VIRTUALFREEINVALIDPARAM3` ## Example -The following code sample generates this warning: +The following code example generates this warning: ```cpp #include diff --git a/docs/code-quality/c6388.md b/docs/code-quality/c6388.md index 540db622f9a..bcc5cf9deb0 100644 --- a/docs/code-quality/c6388.md +++ b/docs/code-quality/c6388.md @@ -37,7 +37,7 @@ void f() } ``` -To correct this warning, use the following sample code: +To correct this warning, use the following example code: ```cpp // C6388_no_warning.cpp From 5173b8b616e048eb7c6183e9112b6e53212e1716 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 7 Sep 2025 18:52:04 +0800 Subject: [PATCH 1745/2255] Update metadata for warning references in range [C6311, C6400] --- docs/code-quality/c6312.md | 3 +-- docs/code-quality/c6313.md | 3 +-- docs/code-quality/c6314.md | 3 +-- docs/code-quality/c6315.md | 3 +-- docs/code-quality/c6316.md | 3 +-- docs/code-quality/c6317.md | 3 +-- docs/code-quality/c6318.md | 3 +-- docs/code-quality/c6319.md | 3 +-- docs/code-quality/c6320.md | 3 +-- docs/code-quality/c6322.md | 3 +-- docs/code-quality/c6323.md | 3 +-- docs/code-quality/c6324.md | 3 +-- docs/code-quality/c6326.md | 3 +-- docs/code-quality/c6328.md | 3 +-- docs/code-quality/c6329.md | 3 +-- docs/code-quality/c6330.md | 3 +-- docs/code-quality/c6331.md | 2 +- docs/code-quality/c6332.md | 3 +-- docs/code-quality/c6333.md | 3 +-- docs/code-quality/c6334.md | 3 +-- docs/code-quality/c6335.md | 2 +- docs/code-quality/c6336.md | 3 +-- docs/code-quality/c6340.md | 3 +-- docs/code-quality/c6381.md | 3 +-- docs/code-quality/c6383.md | 2 +- docs/code-quality/c6384.md | 3 +-- docs/code-quality/c6385.md | 3 +-- docs/code-quality/c6386.md | 2 +- docs/code-quality/c6387.md | 2 +- docs/code-quality/c6388.md | 3 +-- docs/code-quality/c6389.md | 2 +- docs/code-quality/c6390.md | 2 +- docs/code-quality/c6392.md | 2 +- docs/code-quality/c6393.md | 2 +- docs/code-quality/c6394.md | 2 +- docs/code-quality/c6395.md | 2 +- docs/code-quality/c6396.md | 2 +- docs/code-quality/c6397.md | 2 +- docs/code-quality/c6398.md | 2 +- docs/code-quality/c6400.md | 3 +-- 40 files changed, 40 insertions(+), 66 deletions(-) diff --git a/docs/code-quality/c6312.md b/docs/code-quality/c6312.md index eada1991cc4..c63f31ea716 100644 --- a/docs/code-quality/c6312.md +++ b/docs/code-quality/c6312.md @@ -1,10 +1,9 @@ --- +title: "Warning C6312" description: "Learn more about: Warning C6312" -title: Warning C6312 ms.date: 11/04/2016 f1_keywords: ["C6312", "EXCEPTIONCONTINUEEXECUTION", "__WARNING_EXCEPTIONCONTINUEEXECUTION"] helpviewer_keywords: ["C6312"] -ms.assetid: 1fc8b9a1-e6ba-4799-84c3-31f289576cca --- # Warning C6312 diff --git a/docs/code-quality/c6313.md b/docs/code-quality/c6313.md index b8b7bc12968..c57dfc2e09e 100644 --- a/docs/code-quality/c6313.md +++ b/docs/code-quality/c6313.md @@ -1,10 +1,9 @@ --- +title: "Warning C6313" description: "Learn more about: Warning C6313" -title: Warning C6313 ms.date: 11/04/2016 f1_keywords: ["C6313", "BITANDVSZEROVALUEDFLAG", "__WARNING_BITANDVSZEROVALUEDFLAG"] helpviewer_keywords: ["C6313"] -ms.assetid: 2fb95c62-d81e-4525-9ec7-7723844c806c --- # Warning C6313 diff --git a/docs/code-quality/c6314.md b/docs/code-quality/c6314.md index a0f47a7fee6..8f7303162c3 100644 --- a/docs/code-quality/c6314.md +++ b/docs/code-quality/c6314.md @@ -1,10 +1,9 @@ --- +title: "Warning C6314" description: "Learn more about: Warning C6314" -title: Warning C6314 ms.date: 11/04/2016 f1_keywords: ["C6314", "BITORVSQUESTION", "__WARNING_BITORVSQUESTION"] helpviewer_keywords: ["C6314"] -ms.assetid: 2145ca62-967c-4223-b582-f1481b74f181 --- # Warning C6314 diff --git a/docs/code-quality/c6315.md b/docs/code-quality/c6315.md index e367214b1d6..edb8a62c4c9 100644 --- a/docs/code-quality/c6315.md +++ b/docs/code-quality/c6315.md @@ -1,10 +1,9 @@ --- +title: "Warning C6315" description: "Learn more about: Warning C6315" -title: Warning C6315 ms.date: 11/04/2016 f1_keywords: ["C6315", "BITORVSBITAND", "__WARNING_BITORVSBITAND"] helpviewer_keywords: ["C6315"] -ms.assetid: 4bc932d5-04fd-440d-b3af-e32a8bbc0618 --- # Warning C6315 diff --git a/docs/code-quality/c6316.md b/docs/code-quality/c6316.md index b5c33835081..11ff13efa2d 100644 --- a/docs/code-quality/c6316.md +++ b/docs/code-quality/c6316.md @@ -1,10 +1,9 @@ --- +title: "Warning C6316" description: "Learn more about: Warning C6316" -title: Warning C6316 ms.date: 11/04/2016 f1_keywords: ["C6316", "INAPPROPRIATEUSEOFBITOR", "__WARNING_INAPPROPRIATEUSEOFBITOR"] helpviewer_keywords: ["C6316"] -ms.assetid: ddd6a928-76b1-4d1b-9a9d-af1efcf02e3a --- # Warning C6316 diff --git a/docs/code-quality/c6317.md b/docs/code-quality/c6317.md index 62319ef781f..04b7fef3f49 100644 --- a/docs/code-quality/c6317.md +++ b/docs/code-quality/c6317.md @@ -1,10 +1,9 @@ --- +title: "Warning C6317" description: "Learn more about: Warning C6317" -title: Warning C6317 ms.date: 11/04/2016 f1_keywords: ["C6317", "NOTNOTCOMPLEMENT", "__WARNING_NOTNOTCOMPLEMENT"] helpviewer_keywords: ["C6317"] -ms.assetid: dc771bb8-f596-4514-af0f-4b39658af365 --- # Warning C6317 diff --git a/docs/code-quality/c6318.md b/docs/code-quality/c6318.md index 07cb2c8ccf6..420919c91b0 100644 --- a/docs/code-quality/c6318.md +++ b/docs/code-quality/c6318.md @@ -1,10 +1,9 @@ --- +title: "Warning C6318" description: "Learn more about: Warning C6318" -title: Warning C6318 ms.date: 11/04/2016 f1_keywords: ["C6318", "EXCEPTIONCONTINUESEARCH", "__WARNING_EXCEPTIONCONTINUESEARCH"] helpviewer_keywords: ["C6318"] -ms.assetid: 3284a83e-bb8e-461c-adcc-cfc66ceea05e --- # Warning C6318 diff --git a/docs/code-quality/c6319.md b/docs/code-quality/c6319.md index 4d6642ab6fc..22249d73224 100644 --- a/docs/code-quality/c6319.md +++ b/docs/code-quality/c6319.md @@ -1,10 +1,9 @@ --- +title: "Warning C6319" description: "Learn more about: Warning C6319" -title: Warning C6319 ms.date: 11/04/2016 f1_keywords: ["C6319", "IGNOREDBYCOMMA", "__WARNING_IGNOREDBYCOMMA"] helpviewer_keywords: ["C6319"] -ms.assetid: 3ccfc1d4-820d-48f0-8ff0-8fcfc87c45d6 --- # Warning C6319 diff --git a/docs/code-quality/c6320.md b/docs/code-quality/c6320.md index 9229dc3c398..2f566ee530c 100644 --- a/docs/code-quality/c6320.md +++ b/docs/code-quality/c6320.md @@ -1,10 +1,9 @@ --- +title: "Warning C6320" description: "Learn more about: Warning C6320" -title: Warning C6320 ms.date: 11/04/2016 f1_keywords: ["C6320", "EXCEPTIONEXECUTEHANDLER", "__WARNING_EXCEPTIONEXECUTEHANDLER"] helpviewer_keywords: ["C6320"] -ms.assetid: fb9e568e-b3d4-4ce2-a276-a64ad74d7b1e --- # Warning C6320 diff --git a/docs/code-quality/c6322.md b/docs/code-quality/c6322.md index cd3a8ac4329..e555f1801bd 100644 --- a/docs/code-quality/c6322.md +++ b/docs/code-quality/c6322.md @@ -1,10 +1,9 @@ --- +title: "Warning C6322" description: "Learn more about: Warning C6322" -title: Warning C6322 ms.date: 11/04/2016 f1_keywords: ["C6322", "EXCEPT_BLOCK_EMPTY", "__WARNING_EXCEPT_BLOCK_EMPTY"] helpviewer_keywords: ["C6322"] -ms.assetid: fb23d2b1-b2a0-465c-8bf5-ec039c6c7757 --- # Warning C6322 diff --git a/docs/code-quality/c6323.md b/docs/code-quality/c6323.md index ad59ba354e2..cca253b079b 100644 --- a/docs/code-quality/c6323.md +++ b/docs/code-quality/c6323.md @@ -1,10 +1,9 @@ --- +title: "Warning C6323" description: "Learn more about: Warning C6323" -title: Warning C6323 ms.date: 11/04/2016 f1_keywords: ["C6323", "ARITH_OP_ON_BOOL", "__WARNING_ARITH_OP_ON_BOOL"] helpviewer_keywords: ["C6323"] -ms.assetid: e9ab47d7-21e1-4204-8dad-ed7ec6127647 --- # Warning C6323 diff --git a/docs/code-quality/c6324.md b/docs/code-quality/c6324.md index 063ee638a82..89539cd2214 100644 --- a/docs/code-quality/c6324.md +++ b/docs/code-quality/c6324.md @@ -1,10 +1,9 @@ --- +title: "Warning C6324" description: "Learn more about: Warning C6324" -title: Warning C6324 ms.date: 11/04/2016 f1_keywords: ["C6324", "STRCPY_INSTEAD_OF_STRCMP", "__WARNING_STRCPY_INSTEAD_OF_STRCMP"] helpviewer_keywords: ["C6324"] -ms.assetid: 08675af3-8957-4640-9bd6-01de71ea1042 --- # Warning C6324 diff --git a/docs/code-quality/c6326.md b/docs/code-quality/c6326.md index ed317497b11..9d023afa3ed 100644 --- a/docs/code-quality/c6326.md +++ b/docs/code-quality/c6326.md @@ -1,10 +1,9 @@ --- +title: "Warning C6326" description: "Learn more about: Warning C6326" -title: Warning C6326 ms.date: 11/04/2016 f1_keywords: ["C6326", "CONST_CONST_COMP", "__WARNING_CONST_CONST_COMP"] helpviewer_keywords: ["C6326"] -ms.assetid: 0b606d29-e3c2-48b5-b520-b71b670c19a1 --- # Warning C6326 diff --git a/docs/code-quality/c6328.md b/docs/code-quality/c6328.md index 87bb1426d81..ddaaa046cbe 100644 --- a/docs/code-quality/c6328.md +++ b/docs/code-quality/c6328.md @@ -1,10 +1,9 @@ --- +title: "Warning C6328" description: "Learn more about: Warning C6328" -title: Warning C6328 ms.date: 02/14/2024 f1_keywords: ["C6328", "FORMAT_SIZE_MISMATCH", "__WARNING_FORMAT_SIZE_MISMATCH"] helpviewer_keywords: ["C6328"] -ms.assetid: e25b00fa-d344-4dc9-b322-b4f1ae06f315 --- # Warning C6328 diff --git a/docs/code-quality/c6329.md b/docs/code-quality/c6329.md index 6a190440063..6f3223f7f8b 100644 --- a/docs/code-quality/c6329.md +++ b/docs/code-quality/c6329.md @@ -1,10 +1,9 @@ --- +title: "Warning C6329" description: "Learn more about: Warning C6329" -title: Warning C6329 ms.date: 11/04/2016 f1_keywords: ["C6329", "POTENTIAL_INCORRECT_RETVAL_CHECK", "__WARNING_POTENTIAL_INCORRECT_RETVAL_CHECK"] helpviewer_keywords: ["C6329"] -ms.assetid: 5765bd4d-5fa1-4e51-82d6-c1837b4743db --- # Warning C6329 diff --git a/docs/code-quality/c6330.md b/docs/code-quality/c6330.md index a7c0499a438..2bd84f26fb1 100644 --- a/docs/code-quality/c6330.md +++ b/docs/code-quality/c6330.md @@ -1,10 +1,9 @@ --- +title: "Warning C6330" description: "Learn more about: Warning C6330" -title: Warning C6330 ms.date: 11/04/2016 f1_keywords: ["C6330", "POTENTIAL_ARGUMENT_TYPE_MISMATCH", "__WARNING_POTENTIAL_ARGUMENT_TYPE_MISMATCH"] helpviewer_keywords: ["C6330"] -ms.assetid: 48594e1c-0a4b-4848-8598-ae6d7e08b4e9 --- # Warning C6330 diff --git a/docs/code-quality/c6331.md b/docs/code-quality/c6331.md index cac738ebf89..0b7c6f2ee12 100644 --- a/docs/code-quality/c6331.md +++ b/docs/code-quality/c6331.md @@ -1,5 +1,5 @@ --- -title: Warning C6331 +title: "Warning C6331" description: "Learn more about: Warning C6331" ms.date: 10/03/2022 f1_keywords: ["C6331", "VirtualFreeInvalidParam1", "__WARNING_VIRTUALFREEINVALIDPARAM1"] diff --git a/docs/code-quality/c6332.md b/docs/code-quality/c6332.md index 2e6ec8cae69..392d45b1f78 100644 --- a/docs/code-quality/c6332.md +++ b/docs/code-quality/c6332.md @@ -1,10 +1,9 @@ --- +title: "Warning C6332" description: "Learn more about: Warning C6332" -title: Warning C6332 ms.date: 10/03/2022 f1_keywords: ["C6332", "VirtualFreeInvalidParam2", "__WARNING_VIRTUALFREEINVALIDPARAM2"] helpviewer_keywords: ["C6332"] -ms.assetid: 93d74b3f-4070-4b48-807e-52b1dfee1330 --- # Warning C6332 diff --git a/docs/code-quality/c6333.md b/docs/code-quality/c6333.md index de17123196b..2a8dac30c9c 100644 --- a/docs/code-quality/c6333.md +++ b/docs/code-quality/c6333.md @@ -1,10 +1,9 @@ --- +title: "Warning C6333" description: "Learn more about: Warning C6333" -title: Warning C6333 ms.date: 08/25/2022 f1_keywords: ["C6333", "VIRTUALFREEINVALIDPARAM3", "__WARNING_VIRTUALFREEINVALIDPARAM3"] helpviewer_keywords: ["C6333"] -ms.assetid: 4b8fa4b2-a3a0-4d00-bec7-76686b66fcf9 --- # Warning C6333 diff --git a/docs/code-quality/c6334.md b/docs/code-quality/c6334.md index 5499f3ab135..96de5d6dbbe 100644 --- a/docs/code-quality/c6334.md +++ b/docs/code-quality/c6334.md @@ -1,10 +1,9 @@ --- +title: "Warning C6334" description: "Learn more about: Warning C6334" -title: Warning C6334 ms.date: 08/25/2022 f1_keywords: ["C6334", "SIZEOFEXPR", "__WARNING_SIZEOFEXPR"] helpviewer_keywords: ["C6334"] -ms.assetid: 83c8abfb-b11e-4573-8c6f-95b205d32137 --- # Warning C6334 diff --git a/docs/code-quality/c6335.md b/docs/code-quality/c6335.md index a5f62fe5fe6..662ee5f946e 100644 --- a/docs/code-quality/c6335.md +++ b/docs/code-quality/c6335.md @@ -1,5 +1,5 @@ --- -title: Warning C6335 +title: "Warning C6335" description: "Learn more about: Warning C6335" ms.date: 11/04/2016 f1_keywords: ["C6335", "LEAKING_PROCESS_HANDLE", "__WARNING_LEAKING_PROCESS_HANDLE"] diff --git a/docs/code-quality/c6336.md b/docs/code-quality/c6336.md index a2264c13e82..1f3cc67146d 100644 --- a/docs/code-quality/c6336.md +++ b/docs/code-quality/c6336.md @@ -1,10 +1,9 @@ --- +title: "Warning C6336" description: "Learn more about: Warning C6336" -title: Warning C6336 ms.date: 11/04/2016 f1_keywords: ["C6336", "QUESTIONPRECEDENCE", "__WARNING_QUESTIONPRECEDENCE"] helpviewer_keywords: ["C6336"] -ms.assetid: cf402433-9940-4466-ac15-f94288f51f74 --- # Warning C6336 diff --git a/docs/code-quality/c6340.md b/docs/code-quality/c6340.md index baf564d0267..0e44b1d3988 100644 --- a/docs/code-quality/c6340.md +++ b/docs/code-quality/c6340.md @@ -1,10 +1,9 @@ --- +title: "Warning C6340" description: "Learn more about: Warning C6340" -title: Warning C6340 ms.date: 02/14/2024 f1_keywords: ["C6340", "FORMAT_SIGN_MISMATCH"] helpviewer_keywords: ["C6340"] -ms.assetid: c4fe474f-5a27-4148-ba35-1ef021371e13 --- # Warning C6340 diff --git a/docs/code-quality/c6381.md b/docs/code-quality/c6381.md index 1a753fdbdea..b374965fd48 100644 --- a/docs/code-quality/c6381.md +++ b/docs/code-quality/c6381.md @@ -1,10 +1,9 @@ --- +title: "Warning C6381" description: "Learn more about: Warning C6381" -title: Warning C6381 ms.date: 11/04/2016 f1_keywords: ["C6381", "SHUTDOWN_API", "__WARNING_SHUTDOWN_API"] helpviewer_keywords: ["C6381"] -ms.assetid: c01a3040-26d4-47ac-b72d-7e1292ca435f --- # Warning C6381 diff --git a/docs/code-quality/c6383.md b/docs/code-quality/c6383.md index 61df5f99552..ee46f686092 100644 --- a/docs/code-quality/c6383.md +++ b/docs/code-quality/c6383.md @@ -1,5 +1,5 @@ --- -title: Warning C6383 +title: "Warning C6383" description: "Learn more about: Warning C6383" ms.date: 09/07/2022 f1_keywords: ["C6383", "ELEMENTS_TO_BYTES", "__WARNING_ELEMENTS_TO_BYTES"] diff --git a/docs/code-quality/c6384.md b/docs/code-quality/c6384.md index 178e82c949e..23a603be8b1 100644 --- a/docs/code-quality/c6384.md +++ b/docs/code-quality/c6384.md @@ -1,10 +1,9 @@ --- +title: "Warning C6384" description: "Learn more about: Warning C6384" -title: Warning C6384 ms.date: 10/03/2022 f1_keywords: ["C6384", "DIVIDING_SIZEOF_POINTER", "__WARNING_DIVIDING_SIZEOF_POINTER"] helpviewer_keywords: ["C6384"] -ms.assetid: 9c605b61-1485-49a8-847b-41170193dbf4 --- # Warning C6384 diff --git a/docs/code-quality/c6385.md b/docs/code-quality/c6385.md index ef43fb923b0..8e6446f76b7 100644 --- a/docs/code-quality/c6385.md +++ b/docs/code-quality/c6385.md @@ -1,10 +1,9 @@ --- -title: Warning C6385 +title: "Warning C6385" description: "Describes C++ Code Analysis warning C6385 and how to resolve it." ms.date: 03/16/2020 f1_keywords: ["C6385", "READ_OVERRUN", "__WARNING_READ_OVERRUN"] helpviewer_keywords: ["C6385"] -ms.assetid: 3e4961e7-0f09-42a8-8cc2-151109dfdbda --- # Warning C6385 diff --git a/docs/code-quality/c6386.md b/docs/code-quality/c6386.md index 7aa56f9f9f8..1b08ddf6bdf 100644 --- a/docs/code-quality/c6386.md +++ b/docs/code-quality/c6386.md @@ -1,6 +1,6 @@ --- +title: "Warning C6386" description: "Learn more about: Warning C6386" -title: Warning C6386 ms.date: 4/30/2025 f1_keywords: ["C6386", "WRITE_OVERRUN", "__WARNING_WRITE_OVERRUN"] helpviewer_keywords: ["C6386"] diff --git a/docs/code-quality/c6387.md b/docs/code-quality/c6387.md index a925d0b3977..fc082680d9d 100644 --- a/docs/code-quality/c6387.md +++ b/docs/code-quality/c6387.md @@ -1,5 +1,5 @@ --- -title: Warning C6387 +title: "Warning C6387" description: "Learn more about: Warning C6387" ms.date: 11/04/2016 f1_keywords: ["C6387", "INVALID_PARAM_VALUE_1", "__WARNING_INVALID_PARAM_VALUE_1"] diff --git a/docs/code-quality/c6388.md b/docs/code-quality/c6388.md index bcc5cf9deb0..229efeee446 100644 --- a/docs/code-quality/c6388.md +++ b/docs/code-quality/c6388.md @@ -1,10 +1,9 @@ --- +title: "Warning C6388" description: "Learn more about: Warning C6388" -title: Warning C6388 ms.date: 11/04/2016 f1_keywords: ["C6388", "INVALID_PARAM_VALUE_2", "__WARNING_INVALID_PARAM_VALUE_2"] helpviewer_keywords: ["C6388"] -ms.assetid: 667fe9cf-cc53-49f9-b6c0-6ee87c397568 --- # Warning C6388 diff --git a/docs/code-quality/c6389.md b/docs/code-quality/c6389.md index 5838f22f32a..8c786b91f4b 100644 --- a/docs/code-quality/c6389.md +++ b/docs/code-quality/c6389.md @@ -1,5 +1,5 @@ --- -title: Warning C6389 +title: "Warning C6389" description: "Describes the Microsoft C/C++ code analysis warning C6389, its causes, and how to address it." ms.date: 06/09/2021 f1_keywords: ["C6389", "MARK_INTERNAL_OR_MISSING_COMMON_DECL"] diff --git a/docs/code-quality/c6390.md b/docs/code-quality/c6390.md index f5895dc43fc..d0ea5f23556 100644 --- a/docs/code-quality/c6390.md +++ b/docs/code-quality/c6390.md @@ -1,5 +1,5 @@ --- -title: Warning C6390 +title: "Warning C6390" description: "Describes the Microsoft C/C++ code analysis warning C6390, its causes, and how to address it." ms.date: 06/17/2022 f1_keywords: ["C6390", "NO_NULLCHECK_FOR_THIS"] diff --git a/docs/code-quality/c6392.md b/docs/code-quality/c6392.md index 882d844c5be..63f9a7c3139 100644 --- a/docs/code-quality/c6392.md +++ b/docs/code-quality/c6392.md @@ -1,6 +1,6 @@ --- +title: "Warning C6392" description: "Learn more about: Warning C6392" -title: Warning C6392 ms.date: 03/06/2024 f1_keywords: ["C6392", "STREAM_OUTPUT_VOID_PTR", "__STREAM_OUTPUT_VOID_PTR"] helpviewer_keywords: ["C6392"] diff --git a/docs/code-quality/c6393.md b/docs/code-quality/c6393.md index 2dc859f2b73..2de6638f3ab 100644 --- a/docs/code-quality/c6393.md +++ b/docs/code-quality/c6393.md @@ -1,5 +1,5 @@ --- -title: Warning C6393 +title: "Warning C6393" description: "Learn more about: Warning C6393" ms.date: 11/29/2023 f1_keywords: ["C6393", "LEAP_YEAR_INVALID_DATE_KEYED_LOOKUP", "__WARNING_LEAP_YEAR_INVALID_DATE_KEYED_LOOKUP"] diff --git a/docs/code-quality/c6394.md b/docs/code-quality/c6394.md index 6235fc87555..913accff0e0 100644 --- a/docs/code-quality/c6394.md +++ b/docs/code-quality/c6394.md @@ -1,5 +1,5 @@ --- -title: Warning C6394 +title: "Warning C6394" description: "Learn more about: Warning C6394" ms.date: 11/29/2023 f1_keywords: ["C6394", "LEAP_YEAR_INVALID_DATE_KEYED_LOOKUP_MUTABLE", "__WARNING_LEAP_YEAR_INVALID_DATE_KEYED_LOOKUP_MUTABLE"] diff --git a/docs/code-quality/c6395.md b/docs/code-quality/c6395.md index fba3e04720f..9c39bf5d499 100644 --- a/docs/code-quality/c6395.md +++ b/docs/code-quality/c6395.md @@ -1,5 +1,5 @@ --- -title: Warning C6395 +title: "Warning C6395" description: "Describes the Microsoft C/C++ code analysis warning C6395, its causes, and how to address it." ms.date: 10/12/2023 f1_keywords: ["C6395", "EVAL_ORDER_CHANGE"] diff --git a/docs/code-quality/c6396.md b/docs/code-quality/c6396.md index 6bd3b0952bf..3e7a8dfb0c5 100644 --- a/docs/code-quality/c6396.md +++ b/docs/code-quality/c6396.md @@ -1,6 +1,6 @@ --- +title: "Warning C6396" description: "Learn more about: Warning C6396: sizeof('integerConstant') always returns the size of the underlying integer type" -title: Warning C6396 ms.date: 02/05/2024 f1_keywords: ["C6396", "SIZEOF_CONSTANT"] helpviewer_keywords: ["C6396"] diff --git a/docs/code-quality/c6397.md b/docs/code-quality/c6397.md index 4247b431616..4b0da9bc420 100644 --- a/docs/code-quality/c6397.md +++ b/docs/code-quality/c6397.md @@ -1,6 +1,6 @@ --- +title: "Warning C6397" description: "Learn more about: Warning C6397: The address-of operator cannot return null pointer in well-defined code" -title: Warning C6397 ms.date: 02/05/2024 f1_keywords: ["C6397", "DUBIOUS_NULL_CHECK"] helpviewer_keywords: ["C6397"] diff --git a/docs/code-quality/c6398.md b/docs/code-quality/c6398.md index 5ee996202d7..6acd592bc83 100644 --- a/docs/code-quality/c6398.md +++ b/docs/code-quality/c6398.md @@ -1,6 +1,6 @@ --- +title: "Warning C6398" description: "Learn more about: Warning C6398: The address-of a field cannot be null in well-defined code" -title: Warning C6398 ms.date: 02/05/2024 f1_keywords: ["C6398", "DUBIOUS_NULL_CHECK_FIELD"] helpviewer_keywords: ["C6398"] diff --git a/docs/code-quality/c6400.md b/docs/code-quality/c6400.md index 2d2d4ac5590..ed5d187c376 100644 --- a/docs/code-quality/c6400.md +++ b/docs/code-quality/c6400.md @@ -1,10 +1,9 @@ --- +title: "Warning C6400" description: "Learn more about: Warning C6400" -title: Warning C6400 ms.date: 11/04/2016 f1_keywords: ["C6400", "LOCALE_DEPENDENT_CONSTANT_STRING_COMPARISON", "__WARNING_LOCALE_DEPENDENT_CONSTANT_STRING_COMPARISON"] helpviewer_keywords: ["C6400"] -ms.assetid: 35808969-1d43-41e8-bcda-33635637fb26 --- # Warning C6400 From 0c2f3c810bbf7893279d69488d83c98e49153a8e Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 7 Sep 2025 18:58:56 +0800 Subject: [PATCH 1746/2255] Add leading example sentence for warning references in range [C6311, C6400] --- docs/code-quality/c6328.md | 2 ++ docs/code-quality/c6340.md | 2 ++ docs/code-quality/c6389.md | 2 ++ docs/code-quality/c6390.md | 2 ++ docs/code-quality/c6395.md | 2 ++ docs/code-quality/c6396.md | 2 ++ docs/code-quality/c6397.md | 2 ++ docs/code-quality/c6398.md | 2 ++ 8 files changed, 16 insertions(+) diff --git a/docs/code-quality/c6328.md b/docs/code-quality/c6328.md index ddaaa046cbe..6c6c6dd36a0 100644 --- a/docs/code-quality/c6328.md +++ b/docs/code-quality/c6328.md @@ -18,6 +18,8 @@ Code analysis name: `FORMAT_SIZE_MISMATCH` ## Example +The following example generates C6328: + ```cpp #include diff --git a/docs/code-quality/c6340.md b/docs/code-quality/c6340.md index 0e44b1d3988..7733f30f873 100644 --- a/docs/code-quality/c6340.md +++ b/docs/code-quality/c6340.md @@ -18,6 +18,8 @@ Code analysis name: `FORMAT_SIGN_MISMATCH` ## Example +The following example generates C6340: + ```cpp #include diff --git a/docs/code-quality/c6389.md b/docs/code-quality/c6389.md index 8c786b91f4b..0b4fb2a1d54 100644 --- a/docs/code-quality/c6389.md +++ b/docs/code-quality/c6389.md @@ -21,6 +21,8 @@ Code analysis name: `MARK_INTERNAL_OR_MISSING_COMMON_DECL` ## Example +The following example generates C6389: + ```cpp // A.h struct X; diff --git a/docs/code-quality/c6390.md b/docs/code-quality/c6390.md index d0ea5f23556..225bfd16e4f 100644 --- a/docs/code-quality/c6390.md +++ b/docs/code-quality/c6390.md @@ -17,6 +17,8 @@ Code analysis name: `NO_NULLCHECK_FOR_THIS` ## Example +The following example generates C6390: + ```cpp struct X { diff --git a/docs/code-quality/c6395.md b/docs/code-quality/c6395.md index 9c39bf5d499..52a0feeb35a 100644 --- a/docs/code-quality/c6395.md +++ b/docs/code-quality/c6395.md @@ -17,6 +17,8 @@ Code analysis name: `EVAL_ORDER_CHANGE` ## Example +The following example generates C6395: + ```cpp void foo(int* a, int i) { diff --git a/docs/code-quality/c6396.md b/docs/code-quality/c6396.md index 3e7a8dfb0c5..210935d9f60 100644 --- a/docs/code-quality/c6396.md +++ b/docs/code-quality/c6396.md @@ -17,6 +17,8 @@ This check ignores character literals because `buffer_size += sizeof(UNICODE_NUL ## Example +The following example generates C6396: + ```cpp void f() { diff --git a/docs/code-quality/c6397.md b/docs/code-quality/c6397.md index 4b0da9bc420..a45d0582c08 100644 --- a/docs/code-quality/c6397.md +++ b/docs/code-quality/c6397.md @@ -17,6 +17,8 @@ The address-of operator returns the address of its operand. This value should ne ## Example +The following example generates C6397: + ```cpp bool isNull(int *a) { diff --git a/docs/code-quality/c6398.md b/docs/code-quality/c6398.md index 6acd592bc83..072a3669b65 100644 --- a/docs/code-quality/c6398.md +++ b/docs/code-quality/c6398.md @@ -17,6 +17,8 @@ The address-of operator returns the address of its operand. This value should ne ## Example +The following example generates C6398: + ```cpp struct A { int* x; }; From ee62f20b2d557b4fb17bc34fa0406dcd5bc4741c Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 7 Sep 2025 22:14:19 +0800 Subject: [PATCH 1747/2255] Fix some typos in "Troubleshoot function inlining impact on build time" --- .../tutorials/build-insights-function-view.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/build-insights/tutorials/build-insights-function-view.md b/docs/build-insights/tutorials/build-insights-function-view.md index bd0ccd9e319..162df2e6c9e 100644 --- a/docs/build-insights/tutorials/build-insights-function-view.md +++ b/docs/build-insights/tutorials/build-insights-function-view.md @@ -53,7 +53,7 @@ Set the optimization level to maximum optimizations: ## Run Build Insights -On a project of your choosing, and using the **Release** build options set in the previous section, run Build Insights by choosing from the main menu **Build** > **Run Build Insights on Selection** > **Rebuild**. You can also right-click a project in the solution explorer and choose **Run Build Insights** > **Rebuild**. Choose **Rebuild** instead of **Build** to measure the build time for the entire project and not for just the few files may be dirty right now. +On a project of your choosing, and using the **Release** build options set in the previous section, run Build Insights by choosing from the main menu **Build** > **Run Build Insights on Selection** > **Rebuild**. You can also right-click a project in the solution explorer and choose **Run Build Insights** > **Rebuild**. Choose **Rebuild** instead of **Build** to measure the build time for the entire project and not for just the few files that may be dirty right now. :::image type="content" source="./media/build-insights-rebuild-project.png" alt-text="Screenshot of the main menu with Run Build Insights on Selection > Rebuild selected."::: @@ -69,9 +69,9 @@ In the Function Name column, performPhysicsCalculations() is highlighted and mar The **Time [sec, %]** column shows how long it took to compile each function in [wall clock responsibility time (WCTR)](https://devblogs.microsoft.com/cppblog/faster-cpp-builds-simplified-a-new-metric-for-time/#:~:text=Today%2C%20we%E2%80%99d%20like%20to%20teach%20you%20about%20a,your%20build%2C%20even%20in%20the%20presence%20of%20parallelism). This metric distributes the wall clock time among functions based on their use of parallel compiler threads. For example, if two different threads are compiling two different functions simultaneously within a one-second period, each function's WCTR is recorded as 0.5 seconds. This reflects each function's proportional share of the total compilation time, taking into account the resources each consumed during parallel execution. Thus, WCTR provides a better measure of the impact each function has on the overall build time in environments where multiple compilation activities occur simultaneously. -The **Forceinline Size** column shows roughly how many instructions were generated for the function. Click the chevron before the function name to see the individual inlined functions that were expanded in that function how roughly how many instructions were generated for each. +The **Forceinline Size** column shows roughly how many instructions were generated for the function. Click the chevron before the function name to see the individual inlined functions that were expanded in that function and roughly how many instructions were generated for each. -You can sort the list by clicking on the **Time** column to see which functions are taking the most time to compile. A 'fire' icon indicates that cost of generating that function is high and is worth investigating. Excessive use of `__forceinline` functions can significantly slow compilation. +You can sort the list by clicking on the **Time** column to see which functions are taking the most time to compile. A 'fire' icon indicates that the cost of generating that function is high and is worth investigating. Excessive use of `__forceinline` functions can significantly slow compilation. You can search for a specific function by using the **Filter Functions** box. If a function's code generation time is too small, it doesn't appear in the **Functions** View. @@ -89,7 +89,7 @@ By selecting the chevron before that function, and then sorting the **Forceinlin performPhysicsCalculations() is expanded and shows a long list of functions that were inlined inside it. There are multiple instances of functions such as complexOperation(), recursiveHelper(), and sin() shown. The Forceinline Size column shows that complexOperation() is the largest inlined function at 315 instructions. recursiveHelper() has 119 instructions. Sin() has 75 instructions, but there are many more instances of it than the other functions. :::image-end::: -There are some larger inlined functions, such as `Vector2D::complexOperation()` and `Vector2D::recursiveHelper()` that are contributing to the problem. But there are many more instances (not all shown here) of `Vector2d::sin(float)`, `Vector2d::cos(float)`, `Vector2D::power(float,int)`, and `Vector2D::factorial(int)`. When you add those up, the total number of generated instructions quickly exceeds the few larger generated functions. +There are some larger inlined functions, such as `Vector2D::complexOperation()` and `Vector2D::recursiveHelper()` that are contributing to the problem. But there are many more instances (not all shown here) of `Vector2D::sin(float)`, `Vector2D::cos(float)`, `Vector2D::power(float,int)`, and `Vector2D::factorial(int)`. When you add those up, the total number of generated instructions quickly exceeds the few larger generated functions. Looking at those functions in the source code, we see that execution time is going to be spent inside loops. For example, here's the code for `factorial()`: @@ -108,7 +108,7 @@ static __forceinline T factorial(int n) Perhaps the overall cost of calling this function is insignificant compared to the cost of the function itself. Making a function inline is most beneficial when the time it takes to call the function (pushing arguments on the stack, jumping to the function, popping return arguments, and returning from the function) is roughly similar to the time it takes to execute the function, and when the function is called a lot. When that's not the case, there may be diminishing returns on making it inline. We can try removing the `__forceinline` directive from it to see if it helps the build time. The code for `power`, `sin()`, and `cos()` is similar in that the code consists of a loop that executes many times. We can try removing the `__forceinline` directive from those functions as well. -We rerun Build Insights from the main menu by choosing **Build** > **Run Build Insights on Selection** > **Rebuild**. You can also right-click a project in the solution explorer and choose **Run Build Insights** > **Rebuild**. We choose **Rebuild** instead of **Build** to measure the build time for the entire project, as before, and not for just the few files may be dirty right now. +We rerun Build Insights from the main menu by choosing **Build** > **Run Build Insights on Selection** > **Rebuild**. You can also right-click a project in the solution explorer and choose **Run Build Insights** > **Rebuild**. We choose **Rebuild** instead of **Build** to measure the build time for the entire project, as before, and not for just the few files that may be dirty right now. The build time goes from 25.181 seconds to 13.376 seconds and the `performPhysicsCalculations` function doesn't show up anymore in the **Functions** view because it doesn't contribute enough to the build time to be counted. @@ -116,7 +116,7 @@ The build time goes from 25.181 seconds to 13.376 seconds and the `performPhysic In the Function Name column, performPhysicsCalculations() is highlighted and marked with a fire icon. :::image-end::: -The Diagnostics Session time is the overall time it took do the build plus any overhead for gathering the Build Insights data. +The Diagnostics Session time is the overall time it took to do the build plus any overhead for gathering the Build Insights data. The next step would be to profile the application to see if the performance of the application is negatively impacted by the change. If it is, we can selectively add `__forceinline` back as needed. From 5dfea9110e4e705578807a4e717bb7e6e5f2ad3f Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 7 Sep 2025 22:20:35 +0800 Subject: [PATCH 1748/2255] Fix wrong link target for `/O2` in "Troubleshoot function inlining impact on build time" --- docs/build-insights/tutorials/build-insights-function-view.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build-insights/tutorials/build-insights-function-view.md b/docs/build-insights/tutorials/build-insights-function-view.md index 162df2e6c9e..621e3344928 100644 --- a/docs/build-insights/tutorials/build-insights-function-view.md +++ b/docs/build-insights/tutorials/build-insights-function-view.md @@ -45,7 +45,7 @@ Set the optimization level to maximum optimizations: 1. In the **Solution Explorer**, right-click the project name and select **Properties**. 1. In the project properties, navigate to **C/C++** > **Optimization**. -1. Set the **Optimization** dropdown to **Maximum Optimization (Favor Speed) ([`/O2`](../../build/reference/ob-inline-function-expansion.md))**. +1. Set the **Optimization** dropdown to **Maximum Optimization (Favor Speed) ([`/O2`](../../build/reference/o1-o2-minimize-size-maximize-speed.md))**. :::image type="content" source="./media/max-optimization-setting.png" alt-text="Screenshot of the project property pages dialog. The settings are open to Configuration Properties > C/C++ > Optimization. The Optimization dropdown is set to Maximum Optimization (Favor Speed) (/O2)."::: From 508659d6cdf450a2e8aa053902661f068ceb158d Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 7 Sep 2025 22:40:39 +0800 Subject: [PATCH 1749/2255] Add missing leading underscore for `_MBCS` and `_mbsrev` in "Using generic-text mappings" topic --- docs/c-runtime-library/using-generic-text-mappings.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/c-runtime-library/using-generic-text-mappings.md b/docs/c-runtime-library/using-generic-text-mappings.md index 388ffd33974..5b2ef0c7e67 100644 --- a/docs/c-runtime-library/using-generic-text-mappings.md +++ b/docs/c-runtime-library/using-generic-text-mappings.md @@ -21,7 +21,7 @@ To simplify code development for various international markets, the Microsoft ru | `_MBCS` | Multibyte-character | `_tcsrev` maps to `_mbsrev` | | None (the default: both `_UNICODE` and `_MBCS` not defined) | SBCS (ASCII) | `_tcsrev` maps to `strrev` | -For example, the generic-text function `_tcsrev`, defined in TCHAR.H, maps to `mbsrev` if `MBCS` has been defined in your program, or to `_wcsrev` if `_UNICODE` has been defined. Otherwise `_tcsrev` maps to `strrev`. +For example, the generic-text function `_tcsrev`, defined in TCHAR.H, maps to `_mbsrev` if `_MBCS` has been defined in your program, or to `_wcsrev` if `_UNICODE` has been defined. Otherwise `_tcsrev` maps to `strrev`. The generic-text data type `_TCHAR`, also defined in TCHAR.H, maps to type **`char`** if `_MBCS` is defined, to type **`wchar_t`** if `_UNICODE` is defined, and to type **`char`** if neither constant is defined. Other data type mappings are provided in TCHAR.H for programming convenience, but `_TCHAR` is the type that is most useful. @@ -45,7 +45,7 @@ _TCHAR *RetVal, *szString; RetVal = _tcsrev(szString); ``` -If `MBCS` has been defined, the preprocessor maps the preceding fragment to the following code: +If `_MBCS` has been defined, the preprocessor maps the preceding fragment to the following code: ```C char *RetVal, *szString; From fa38646ce5f8badf1904999dfe48ef0034c3df8a Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 7 Sep 2025 22:43:22 +0800 Subject: [PATCH 1750/2255] Add backticks in "Using generic-text mappings" topic --- docs/c-runtime-library/using-generic-text-mappings.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/c-runtime-library/using-generic-text-mappings.md b/docs/c-runtime-library/using-generic-text-mappings.md index 5b2ef0c7e67..c55c47f89e8 100644 --- a/docs/c-runtime-library/using-generic-text-mappings.md +++ b/docs/c-runtime-library/using-generic-text-mappings.md @@ -11,7 +11,7 @@ ms.assetid: 2848121c-e51f-4b9b-a2e6-833ece4b0cb3 **Microsoft Specific** -To simplify code development for various international markets, the Microsoft run-time library provides Microsoft-specific "generic-text" mappings for many data types, routines, and other objects. These mappings are defined in TCHAR.H. You can use these name mappings to write generic code that can be compiled for any of the three kinds of character sets: ASCII (SBCS), MBCS, or Unicode, depending on a manifest constant you define using a `#define` statement. Generic-text mappings are Microsoft extensions that aren't ANSI compatible. +To simplify code development for various international markets, the Microsoft run-time library provides Microsoft-specific "generic-text" mappings for many data types, routines, and other objects. These mappings are defined in `TCHAR.H`. You can use these name mappings to write generic code that can be compiled for any of the three kinds of character sets: ASCII (SBCS), MBCS, or Unicode, depending on a manifest constant you define using a `#define` statement. Generic-text mappings are Microsoft extensions that aren't ANSI compatible. ### Preprocessor directives for generic-text mappings @@ -21,13 +21,13 @@ To simplify code development for various international markets, the Microsoft ru | `_MBCS` | Multibyte-character | `_tcsrev` maps to `_mbsrev` | | None (the default: both `_UNICODE` and `_MBCS` not defined) | SBCS (ASCII) | `_tcsrev` maps to `strrev` | -For example, the generic-text function `_tcsrev`, defined in TCHAR.H, maps to `_mbsrev` if `_MBCS` has been defined in your program, or to `_wcsrev` if `_UNICODE` has been defined. Otherwise `_tcsrev` maps to `strrev`. +For example, the generic-text function `_tcsrev`, defined in `TCHAR.H`, maps to `_mbsrev` if `_MBCS` has been defined in your program, or to `_wcsrev` if `_UNICODE` has been defined. Otherwise `_tcsrev` maps to `strrev`. -The generic-text data type `_TCHAR`, also defined in TCHAR.H, maps to type **`char`** if `_MBCS` is defined, to type **`wchar_t`** if `_UNICODE` is defined, and to type **`char`** if neither constant is defined. Other data type mappings are provided in TCHAR.H for programming convenience, but `_TCHAR` is the type that is most useful. +The generic-text data type `_TCHAR`, also defined in `TCHAR.H`, maps to type **`char`** if `_MBCS` is defined, to type **`wchar_t`** if `_UNICODE` is defined, and to type **`char`** if neither constant is defined. Other data type mappings are provided in `TCHAR.H` for programming convenience, but `_TCHAR` is the type that is most useful. ### Generic-Text Data Type Mappings -| Generic-text data type name | SBCS (_UNICODE, _MBCS not defined) | _MBCS defined | _UNICODE defined | +| Generic-text data type name | SBCS (`_UNICODE`, `_MBCS` not defined) | `_MBCS` defined | `_UNICODE` defined | |---|---|---|---| | `_TCHAR` | **`char`** | **`char`** | **`wchar_t`** | | `_TINT` | **`int`** | **`int`** | `wint_t` | From e05522ca4a62cd5973699514f3a51d2fea2e5555 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 7 Sep 2025 22:44:41 +0800 Subject: [PATCH 1751/2255] Clean up unneeded `./` link prefix in "Using generic-text mappings" topic --- .../c-runtime-library/using-generic-text-mappings.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/c-runtime-library/using-generic-text-mappings.md b/docs/c-runtime-library/using-generic-text-mappings.md index c55c47f89e8..d2d9e78c71b 100644 --- a/docs/c-runtime-library/using-generic-text-mappings.md +++ b/docs/c-runtime-library/using-generic-text-mappings.md @@ -36,7 +36,7 @@ The generic-text data type `_TCHAR`, also defined in `TCHAR.H`, maps to type **` | `_TXCHAR` | **`char`** | **`unsigned char`** | **`wchar_t`** | | `_T` or `_TEXT` | No effect (removed by preprocessor) | No effect (removed by preprocessor) | `L` (converts following character or string to its Unicode counterpart) | -For a complete list of generic-text mappings of routines, variables, and other objects, see [Generic-text mappings](./generic-text-mappings.md). +For a complete list of generic-text mappings of routines, variables, and other objects, see [Generic-text mappings](generic-text-mappings.md). The following code fragments illustrate the use of `_TCHAR` and `_tcsrev` for mapping to the MBCS, Unicode, and SBCS models. @@ -72,8 +72,8 @@ These macros let you write, maintain, and compile a single source code file usin ## See also -[Generic-text mappings](./generic-text-mappings.md)\ -[Data type mappings](./data-type-mappings.md)\ -[Constant and global variable mappings](./constant-and-global-variable-mappings.md)\ -[Routine mappings](./routine-mappings.md)\ -[A sample generic-text program](./a-sample-generic-text-program.md) +[Generic-text mappings](generic-text-mappings.md)\ +[Data type mappings](data-type-mappings.md)\ +[Constant and global variable mappings](constant-and-global-variable-mappings.md)\ +[Routine mappings](routine-mappings.md)\ +[A sample generic-text program](a-sample-generic-text-program.md) From 2270f667375f337301093040e2c8c2d9aa66eade Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 7 Sep 2025 22:45:44 +0800 Subject: [PATCH 1752/2255] Update metadata in "Using generic-text mappings" topic --- docs/c-runtime-library/using-generic-text-mappings.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/c-runtime-library/using-generic-text-mappings.md b/docs/c-runtime-library/using-generic-text-mappings.md index d2d9e78c71b..c40da0e91c3 100644 --- a/docs/c-runtime-library/using-generic-text-mappings.md +++ b/docs/c-runtime-library/using-generic-text-mappings.md @@ -1,11 +1,10 @@ --- title: "Using Generic-Text Mappings" description: "An introduction to Microsoft-specific mappings for data types, routines, and other objects in the C runtime." +ms.date: 11/04/2016 ms.topic: "concept-article" -ms.date: "11/04/2016" f1_keywords: ["_UNICODE"] helpviewer_keywords: ["_TXCHAR type", "TINT type", "_TCHAR type", "TSCHAR type", "TEXT type", "TCHAR type", "TCHAR.H data types, mappings defined in", "generic-text data types", "_TINT type", "TUCHAR type", "_UNICODE constant", "TXCHAR type", "generic-text mappings", "_TSCHAR type", "T type", "mappings, generic-text", "_TUCHAR type", "MBCS data type", "_MBCS data type", "_TEXT type", "UNICODE constant", "_T type"] -ms.assetid: 2848121c-e51f-4b9b-a2e6-833ece4b0cb3 --- # Using generic-text mappings From 028ba9aeb6edca52936adafaadbb28621b3ba917 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 7 Sep 2025 23:00:36 +0800 Subject: [PATCH 1753/2255] Add "Remarks" headings for warning references in range [C6401, C6999] --- docs/code-quality/c6500.md | 4 ++-- docs/code-quality/c6501.md | 4 ++-- docs/code-quality/c6503.md | 4 ++-- docs/code-quality/c6504.md | 4 ++-- docs/code-quality/c6508.md | 4 ++-- docs/code-quality/c6511.md | 4 ++-- docs/code-quality/c6513.md | 4 ++-- docs/code-quality/c6516.md | 4 ++-- docs/code-quality/c6517.md | 4 ++-- docs/code-quality/c6522.md | 4 ++-- docs/code-quality/c6525.md | 4 ++-- docs/code-quality/c6530.md | 4 ++-- docs/code-quality/c6551.md | 2 ++ docs/code-quality/c6552.md | 2 ++ docs/code-quality/c6701.md | 2 ++ docs/code-quality/c6702.md | 2 ++ docs/code-quality/c6703.md | 2 ++ docs/code-quality/c6704.md | 2 ++ docs/code-quality/c6705.md | 2 ++ docs/code-quality/c6706.md | 2 ++ docs/code-quality/c6993.md | 2 ++ docs/code-quality/c6995.md | 2 ++ 22 files changed, 44 insertions(+), 24 deletions(-) diff --git a/docs/code-quality/c6500.md b/docs/code-quality/c6500.md index db2024951ba..1c98588c2c6 100644 --- a/docs/code-quality/c6500.md +++ b/docs/code-quality/c6500.md @@ -10,11 +10,11 @@ ms.assetid: bfc61ec1-8ac5-4465-a23c-91418fbc4552 > Invalid annotation: value for '*name*' property is invalid +## Remarks + > [!NOTE] > This warning occurs only in code that is using a deprecated version of the source-code annotation language (SAL). We recommend that you port your code to use the latest version of SAL. For more information, see [Using SAL Annotations to Reduce C/C++ Code Defects](../code-quality/using-sal-annotations-to-reduce-c-cpp-code-defects.md). -## Remarks - This warning indicates that a property value used in the annotation isn't valid. For example, it can occur if an incorrect level of dereference is used in the `Deref` property, or if you use a constant value that is larger than `size_t` for properties like `ElementSize`. Code analysis name: `INVALID_ATTRIBUTE_PROPERTY` diff --git a/docs/code-quality/c6501.md b/docs/code-quality/c6501.md index 437e4e78f41..1c8d91a6e82 100644 --- a/docs/code-quality/c6501.md +++ b/docs/code-quality/c6501.md @@ -10,11 +10,11 @@ ms.assetid: f9e8b847-2516-4bbb-bb1c-c87cfbacf254 > Annotation conflict: '*name*' property conflicts with previously specified property +## Remarks + > [!NOTE] > This warning occurs only in code that is using a deprecated version of the source-code annotation language (SAL). We recommend that you port your code to use the latest version of SAL. For more information, see [Using SAL Annotations to Reduce C/C++ Code Defects](../code-quality/using-sal-annotations-to-reduce-c-cpp-code-defects.md). -## Remarks - This warning indicates the presence of conflicting properties in the annotation. The warning typically occurs when multiple properties that serve similar purpose are used to annotate a parameter or return value. To correct the warning, you must choose the property that best addresses your need. Code analysis name: `CONFLICTING_ATTRIBUTE_PROPERTY_VALUES` diff --git a/docs/code-quality/c6503.md b/docs/code-quality/c6503.md index 919cad1a16e..7f5f7797d87 100644 --- a/docs/code-quality/c6503.md +++ b/docs/code-quality/c6503.md @@ -10,11 +10,11 @@ ms.assetid: a6212938-bef9-4830-becb-6baa70b53e97 > Invalid annotation: references and arrays may not be marked `Null=Yes` or `Null=Maybe` +## Remarks + > [!NOTE] > This warning occurs only in code that is using a deprecated version of the source-code annotation language (SAL). We recommend that you port your code to use the latest version of SAL. For more information, see [Using SAL Annotations to Reduce C/C++ Code Defects](../code-quality/using-sal-annotations-to-reduce-c-cpp-code-defects.md). -## Remarks - This warning indicates that `Null` property is incorrectly used on a reference or array type. A reference or array type holds the address of an object and must point to a valid object. Because reference and array types can't be null, you must correct the error by either removing the `Null` property or by setting the `Null` property value to `No`. Code analysis name: `REFERENCES_CANT_BE_NULL` diff --git a/docs/code-quality/c6504.md b/docs/code-quality/c6504.md index d7683b709d0..2039768ccea 100644 --- a/docs/code-quality/c6504.md +++ b/docs/code-quality/c6504.md @@ -9,10 +9,10 @@ helpviewer_keywords: ["C6504"] > Invalid annotation: property may only be used on values of pointer, pointer-to-member, or array type -This warning indicates the use of a pointer-specific SAL annotation on a non-pointer data type. - ## Remarks +This warning indicates the use of a pointer-specific SAL annotation on a non-pointer data type. + For more information about what data types are supported by properties, see [Annotation Properties](using-sal-annotations-to-reduce-c-cpp-code-defects.md). Code analysis name: `NULL_ON_NON_POINTER` diff --git a/docs/code-quality/c6508.md b/docs/code-quality/c6508.md index 3915b736ae7..7a834ab3fef 100644 --- a/docs/code-quality/c6508.md +++ b/docs/code-quality/c6508.md @@ -10,11 +10,11 @@ ms.assetid: ac5b23c8-ab9e-481b-bc97-8404f0b63100 > Invalid annotation: write access is not allowed on const values +## Remarks + > [!NOTE] > This warning occurs only in code that is using a deprecated version of the source-code annotation language (SAL). We recommend that you port your code to use the latest version of SAL. For more information, see [Using SAL Annotations to Reduce C/C++ Code Defects](../code-quality/using-sal-annotations-to-reduce-c-cpp-code-defects.md). -## Remarks - This warning indicates that the Access property specified on a const parameter implies that it can be written to. For constant values, Access=Read is the only valid setting. Code analysis name: `WRITE_ACCESS_ON_CONST` diff --git a/docs/code-quality/c6511.md b/docs/code-quality/c6511.md index 262a03838f3..41553d3024e 100644 --- a/docs/code-quality/c6511.md +++ b/docs/code-quality/c6511.md @@ -10,11 +10,11 @@ ms.assetid: 1a0ac213-c205-4fb1-9bc3-3dc7885329fa > Invalid annotation: MustCheck property must be Yes or No +## Remarks + > [!NOTE] > This warning occurs only in code that is using a deprecated version of the source-code annotation language (SAL). We recommend that you port your code to use the latest version of SAL. For more information, see [Using SAL Annotations to Reduce C/C++ Code Defects](../code-quality/using-sal-annotations-to-reduce-c-cpp-code-defects.md). -## Remarks - This warning indicates an invalid value for `MustCheck` property was specified. The only valid values for this property are: Yes and No. Code analysis name: `MUSTCHECK_MAYBE` diff --git a/docs/code-quality/c6513.md b/docs/code-quality/c6513.md index be19005461a..7127c046f3c 100644 --- a/docs/code-quality/c6513.md +++ b/docs/code-quality/c6513.md @@ -10,11 +10,11 @@ ms.assetid: b27780ac-b237-4b26-a796-68a920da73a3 > Invalid annotation: ElementSizeConst requires additional size properties +## Remarks + > [!NOTE] > This warning occurs only in code that is using a deprecated version of the source-code annotation language (SAL). We recommend that you port your code to use the latest version of SAL. For more information, see [Using SAL Annotations to Reduce C/C++ Code Defects](../code-quality/using-sal-annotations-to-reduce-c-cpp-code-defects.md). -## Remarks - This warning indicates that `ElementSizeConst` requires other properties that are missing from the annotation. Specifying `ElementSizeConst` alone doesn't provide any benefit to the analysis process. In addition to specifying `ElementSize`, other properties such as `ValidElementsConst` or `WritableElementsConst` must also be specified. Code analysis name: `ELEMENT_SIZE_WITHOUT_BUFFER_SIZE` diff --git a/docs/code-quality/c6516.md b/docs/code-quality/c6516.md index 7bb9fb56826..02f2456b7bd 100644 --- a/docs/code-quality/c6516.md +++ b/docs/code-quality/c6516.md @@ -10,11 +10,11 @@ ms.assetid: 461078c8-18d4-49ca-80a2-a15736f429a0 > Invalid annotation: no properties specified for '*name*' attribute +## Remarks + > [!NOTE] > This warning occurs only in code that is using a deprecated version of the source-code annotation language (SAL). We recommend that you port your code to use the latest version of SAL. For more information, see [Using SAL Annotations to Reduce C/C++ Code Defects](../code-quality/using-sal-annotations-to-reduce-c-cpp-code-defects.md). -## Remarks - This warning indicates that either no property was specified in the attribute or the property that was specified is invalid; therefore, the attribute can't be considered complete. Code analysis name: `NO_PROPERTIES_ON_ATTRIBUTE` diff --git a/docs/code-quality/c6517.md b/docs/code-quality/c6517.md index b7ce49aa83f..7cefd9e4e01 100644 --- a/docs/code-quality/c6517.md +++ b/docs/code-quality/c6517.md @@ -10,11 +10,11 @@ ms.assetid: 96822155-8b2a-4699-980f-744afff84ca8 > Invalid annotation: 'SAL_readableTo' property may not be specified on buffers that are not readable: '*Parameter*'. +## Remarks + > [!NOTE] > This warning occurs only in code that is using a deprecated version of the source-code annotation language (SAL). We recommend that you port your code to use the latest version of SAL. For more information, see [Using SAL Annotations to Reduce C/C++ Code Defects](../code-quality/using-sal-annotations-to-reduce-c-cpp-code-defects.md). -## Remarks - This warning indicates that `SAL_readableTo` property doesn't have the required read access. You can't use this property to annotate a parameter without providing read access. Code analysis name: `VALID_SIZE_ON_NON_READABLE_BUFFER` diff --git a/docs/code-quality/c6522.md b/docs/code-quality/c6522.md index 3f7b9cbb6d4..5b4630bd8a8 100644 --- a/docs/code-quality/c6522.md +++ b/docs/code-quality/c6522.md @@ -10,11 +10,11 @@ ms.assetid: ac482f63-b27f-4807-968a-1c449033d2dd > Invalid size specification: expression must be of integral type: annotation '*annotation*' on function '*function*' '*parameter*' +## Remarks + > [!NOTE] > This warning occurs only in code that is using a deprecated version of the source-code annotation language (SAL). We recommend that you port your code to use the latest version of SAL. For more information, see [Using SAL Annotations to Reduce C/C++ Code Defects](../code-quality/using-sal-annotations-to-reduce-c-cpp-code-defects.md). -## Remarks - This warning indicates that an integral type was expected, but an incorrect data type was used. You can use annotation properties that accept the size of a parameter in terms of another parameter, but you must use correct data type. For a list of annotation properties, see [Using SAL Annotations to reduce code defects](using-sal-annotations-to-reduce-c-cpp-code-defects.md). Code analysis name: `INVALID_SIZE_STRING_TYPE` diff --git a/docs/code-quality/c6525.md b/docs/code-quality/c6525.md index 360aa708d94..3faa9a9a2ae 100644 --- a/docs/code-quality/c6525.md +++ b/docs/code-quality/c6525.md @@ -10,11 +10,11 @@ ms.assetid: a7af4dc7-d5a4-455f-a414-0c389ffd9aa9 > Invalid size specification: property value may not be valid +## Remarks + > [!NOTE] > This warning occurs only in code that is using a deprecated version of the source-code annotation language (SAL). We recommend that you port your code to use the latest version of SAL. For more information, see [Using SAL Annotations to Reduce C/C++ Code Defects](../code-quality/using-sal-annotations-to-reduce-c-cpp-code-defects.md). -## Remarks - This warning indicates that the property value used to specify the size isn't valid. The warning occurs if the size parameter is annotated using `Valid=No`. Code analysis name: `INVALID_SIZE_STRING_UNREACHABLE_LOCATION` diff --git a/docs/code-quality/c6530.md b/docs/code-quality/c6530.md index 4bf05cf3e30..56131370ca0 100644 --- a/docs/code-quality/c6530.md +++ b/docs/code-quality/c6530.md @@ -10,11 +10,11 @@ ms.assetid: 60e9dc58-e0f1-4a34-8c75-efebaa6cadd2 > Unrecognized format string style '*name*' +## Remarks + > [!NOTE] > This warning occurs only in code that is using a deprecated version of the source-code annotation language (SAL). We recommend that you port your code to use the latest version of SAL. For more information, see [Using SAL Annotations to Reduce C/C++ Code Defects](../code-quality/using-sal-annotations-to-reduce-c-cpp-code-defects.md). -## Remarks - This warning indicates that the `FormatString` property is using a value other than `scanf` or `printf`. To correct this warning, review your code and use a valid value for the `Style` property. Code analysis name: `UNRECOGNIZED_FORMAT_STRING_STYLE` diff --git a/docs/code-quality/c6551.md b/docs/code-quality/c6551.md index d6b47b6f155..38d0907d739 100644 --- a/docs/code-quality/c6551.md +++ b/docs/code-quality/c6551.md @@ -10,5 +10,7 @@ ms.assetid: cfd02698-7ba7-4564-841d-208999b1561d > Invalid size specification: expression not parsable +## Remarks + > [!NOTE] > This warning occurs only in code that is using a deprecated version of the source-code annotation language (SAL). We recommend that you port your code to use the latest version of SAL. For more information, see [Using SAL Annotations to Reduce C/C++ Code Defects](../code-quality/using-sal-annotations-to-reduce-c-cpp-code-defects.md). diff --git a/docs/code-quality/c6552.md b/docs/code-quality/c6552.md index 9ccb714199a..7ca29467875 100644 --- a/docs/code-quality/c6552.md +++ b/docs/code-quality/c6552.md @@ -10,5 +10,7 @@ ms.assetid: 6c6f17d8-4ddd-4fad-b81f-e32285e7afa8 > Invalid `Deref=` or `Notref=`: expression not parsable +## Remarks + > [!NOTE] > This warning occurs only in code that is using a deprecated version of the source-code annotation language (SAL). We recommend that you port your code to use the latest version of SAL. For more information, see [Using SAL Annotations to Reduce C/C++ Code Defects](../code-quality/using-sal-annotations-to-reduce-c-cpp-code-defects.md). diff --git a/docs/code-quality/c6701.md b/docs/code-quality/c6701.md index 386d29a099b..7def9d2a483 100644 --- a/docs/code-quality/c6701.md +++ b/docs/code-quality/c6701.md @@ -9,4 +9,6 @@ helpviewer_keywords: ["C6701"] > The value is not a valid Yes/No/Maybe value: '*string*' +## Remarks + This warning is reported when there's an error in the annotations. diff --git a/docs/code-quality/c6702.md b/docs/code-quality/c6702.md index 6fb0c5520df..06c1b8bd82b 100644 --- a/docs/code-quality/c6702.md +++ b/docs/code-quality/c6702.md @@ -10,4 +10,6 @@ ms.assetid: 6d373843-4ab4-4a94-bb83-5fec9214c625 > The value is not a string value: '*string*' +## Remarks + This warning is reported when there's an error in the annotations. diff --git a/docs/code-quality/c6703.md b/docs/code-quality/c6703.md index f8b5ad7669f..dbeda03fcdd 100644 --- a/docs/code-quality/c6703.md +++ b/docs/code-quality/c6703.md @@ -10,4 +10,6 @@ ms.assetid: 8ec4f403-e63e-4930-8266-569c9cd263b4 > The value is not a number: '*string*' +## Remarks + This warning is reported when there's an error in the annotations. diff --git a/docs/code-quality/c6704.md b/docs/code-quality/c6704.md index c15266ab7fe..c681b0887da 100644 --- a/docs/code-quality/c6704.md +++ b/docs/code-quality/c6704.md @@ -10,4 +10,6 @@ ms.assetid: fc25543d-746e-415e-b0a8-d5134461af41 > Unexpected Annotation Expression Error: '*annotation*' ['*why*'] +## Remarks + This warning is reported when there's an error in the annotations. diff --git a/docs/code-quality/c6705.md b/docs/code-quality/c6705.md index 6d6c84dcc51..e107a8cd2d5 100644 --- a/docs/code-quality/c6705.md +++ b/docs/code-quality/c6705.md @@ -10,4 +10,6 @@ ms.assetid: 5d81e7ac-0c51-4cca-aaa8-df1aa599f175 > Annotation error expected arguments for annotation '*parameter*' found . +## Remarks + This warning is reported when there's an error in the annotations. diff --git a/docs/code-quality/c6706.md b/docs/code-quality/c6706.md index 317a1bb989d..7fbc597ad4e 100644 --- a/docs/code-quality/c6706.md +++ b/docs/code-quality/c6706.md @@ -10,4 +10,6 @@ ms.assetid: 20f3fd01-4993-4f7f-bd3f-57706356cf1d > Unexpected Annotation Error for annotation '*annotation*': '*why*' +## Remarks + This warning is reported when there's an error in the annotations. diff --git a/docs/code-quality/c6993.md b/docs/code-quality/c6993.md index 54f78c56c90..95695fe832a 100644 --- a/docs/code-quality/c6993.md +++ b/docs/code-quality/c6993.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C6993"] > Code analysis ignores OpenMP constructs; analyzing single-threaded code +## Remarks + This warning indicates that the static analysis tools don't support Open MP pragmas. The static analysis tools could generate incorrect results because they assume the code is single-threaded, not multi-threaded. Your code doesn't necessarily need to be 'fixed' to resolve this diagnostic because this warning indicates what the toolset supports and not an issue with your code. \ No newline at end of file diff --git a/docs/code-quality/c6995.md b/docs/code-quality/c6995.md index 4ca022014e5..1aeadbee3e9 100644 --- a/docs/code-quality/c6995.md +++ b/docs/code-quality/c6995.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C6995"] > Failed to save XML Log file +## Remarks + This warning indicates that the Code Analysis tool can't create the defect log, which is the output of the code analysis. This error might indicate a disk error or indicate that you don't have permission to create a file in the specified directory. From ba620320638561ffcef759fc9eddbefbb2a7fd39 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 7 Sep 2025 23:01:21 +0800 Subject: [PATCH 1754/2255] Replace term "sample" with "example" for warning references in range [C6401, C6999] --- docs/code-quality/c6500.md | 2 +- docs/code-quality/c6506.md | 2 +- docs/code-quality/c6514.md | 2 +- docs/code-quality/c6522.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/code-quality/c6500.md b/docs/code-quality/c6500.md index 1c98588c2c6..4a577730a0e 100644 --- a/docs/code-quality/c6500.md +++ b/docs/code-quality/c6500.md @@ -35,7 +35,7 @@ using namespace vc_attributes; void f( [Pre( Deref=2, Access=Read )] char buffer[] ); ``` -To correct this warning, specify the correct level of dereference, as shown in the following sample code: +To correct this warning, specify the correct level of dereference, as shown in the following example code: ```cpp // C diff --git a/docs/code-quality/c6506.md b/docs/code-quality/c6506.md index 377aef78138..a2ce79eeed9 100644 --- a/docs/code-quality/c6506.md +++ b/docs/code-quality/c6506.md @@ -27,7 +27,7 @@ void f(_Out_ char c) } ``` -To correct this warning, use a pointer or an array type, as shown in the following sample code: +To correct this warning, use a pointer or an array type, as shown in the following example code: ```cpp #include diff --git a/docs/code-quality/c6514.md b/docs/code-quality/c6514.md index cad312ecf26..aefc536fd2b 100644 --- a/docs/code-quality/c6514.md +++ b/docs/code-quality/c6514.md @@ -31,7 +31,7 @@ using namespace vc_attributes; void f( [Pre(Deref=1, ValidElementsConst=8)] char(*matrix) [6] ); ``` -To correct this warning, make sure the size of specified in ValidElementsConst is less than or equal to the size of the array, as shown in the following sample code: +To correct this warning, make sure the size of specified in ValidElementsConst is less than or equal to the size of the array, as shown in the following example code: ```cpp // C diff --git a/docs/code-quality/c6522.md b/docs/code-quality/c6522.md index 5b4630bd8a8..89db830412b 100644 --- a/docs/code-quality/c6522.md +++ b/docs/code-quality/c6522.md @@ -34,7 +34,7 @@ using namespace vc_attributes; void f ([Pre(ValidBytes="c")] char *pc, double c); ``` -To correct this warning, use `size_t` for the `ValidBytesParam` parameter data type, as shown in the following sample code: +To correct this warning, use `size_t` for the `ValidBytesParam` parameter data type, as shown in the following example code: ```cpp // C From 869f17c8c8c11f603d3f75bd1f55649b7d6fffd3 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 7 Sep 2025 23:06:25 +0800 Subject: [PATCH 1755/2255] Update metadata for warning references in range [C6401, C6999] --- docs/code-quality/c6401.md | 3 +-- docs/code-quality/c6411.md | 2 +- docs/code-quality/c6412.md | 2 +- docs/code-quality/c6500.md | 3 +-- docs/code-quality/c6501.md | 3 +-- docs/code-quality/c6503.md | 3 +-- docs/code-quality/c6504.md | 2 +- docs/code-quality/c6505.md | 3 +-- docs/code-quality/c6506.md | 2 +- docs/code-quality/c6508.md | 3 +-- docs/code-quality/c6509.md | 3 +-- docs/code-quality/c6510.md | 3 +-- docs/code-quality/c6511.md | 3 +-- docs/code-quality/c6513.md | 3 +-- docs/code-quality/c6514.md | 3 +-- docs/code-quality/c6515.md | 3 +-- docs/code-quality/c6516.md | 3 +-- docs/code-quality/c6517.md | 3 +-- docs/code-quality/c6518.md | 3 +-- docs/code-quality/c6522.md | 3 +-- docs/code-quality/c6525.md | 3 +-- docs/code-quality/c6527.md | 3 +-- docs/code-quality/c6530.md | 3 +-- docs/code-quality/c6540.md | 3 +-- docs/code-quality/c6551.md | 3 +-- docs/code-quality/c6552.md | 3 +-- docs/code-quality/c6701.md | 2 +- docs/code-quality/c6702.md | 3 +-- docs/code-quality/c6703.md | 3 +-- docs/code-quality/c6704.md | 3 +-- docs/code-quality/c6705.md | 3 +-- docs/code-quality/c6706.md | 3 +-- docs/code-quality/c6707.md | 3 +-- docs/code-quality/c6993.md | 2 +- docs/code-quality/c6995.md | 2 +- docs/code-quality/c6997.md | 2 +- 36 files changed, 36 insertions(+), 64 deletions(-) diff --git a/docs/code-quality/c6401.md b/docs/code-quality/c6401.md index 954dbdddef9..071f30b46bc 100644 --- a/docs/code-quality/c6401.md +++ b/docs/code-quality/c6401.md @@ -1,10 +1,9 @@ --- +title: "Warning C6401" description: "Learn more about: Warning C6401" -title: Warning C6401 ms.date: 11/04/2016 f1_keywords: ["C6401", "DEFAULT_LOCALE_CONSTANT_STRING_COMPARISON", "__WARNING_DEFAULT_LOCALE_CONSTANT_STRING_COMPARISON"] helpviewer_keywords: ["C6401"] -ms.assetid: d57b1c94-57a3-4d4b-a7de-8b9ffbac3ebe --- # Warning C6401 diff --git a/docs/code-quality/c6411.md b/docs/code-quality/c6411.md index a4a99565a83..4e1627384d3 100644 --- a/docs/code-quality/c6411.md +++ b/docs/code-quality/c6411.md @@ -1,5 +1,5 @@ --- -title: Warning C6411 +title: "Warning C6411" description: "Learn more about: Warning C6411" ms.date: 11/04/2016 f1_keywords: ["C6411", "POTENTIAL_READ_OVERRUN"] diff --git a/docs/code-quality/c6412.md b/docs/code-quality/c6412.md index 230011ec6ec..cd387c66074 100644 --- a/docs/code-quality/c6412.md +++ b/docs/code-quality/c6412.md @@ -1,5 +1,5 @@ --- -title: Warning C6412 +title: "Warning C6412" description: "Learn more about: Warning C6412" ms.date: 11/04/2016 f1_keywords: ["C6412", "POTENTIAL_WRITE_OVERRUN"] diff --git a/docs/code-quality/c6500.md b/docs/code-quality/c6500.md index 4a577730a0e..4b2373b63d5 100644 --- a/docs/code-quality/c6500.md +++ b/docs/code-quality/c6500.md @@ -1,10 +1,9 @@ --- +title: "Warning C6500" description: "Learn more about: Warning C6500" -title: Warning C6500 ms.date: 11/04/2016 f1_keywords: ["C6500", "INVALID_ATTRIBUTE_PROPERTY", "__WARNING_INVALID_ATTRIBUTE_PROPERTY"] helpviewer_keywords: ["C6500"] -ms.assetid: bfc61ec1-8ac5-4465-a23c-91418fbc4552 --- # Warning C6500 diff --git a/docs/code-quality/c6501.md b/docs/code-quality/c6501.md index 1c8d91a6e82..6b552356726 100644 --- a/docs/code-quality/c6501.md +++ b/docs/code-quality/c6501.md @@ -1,10 +1,9 @@ --- +title: "Warning C6501" description: "Learn more about: Warning C6501" -title: Warning C6501 ms.date: 11/04/2016 f1_keywords: ["C6501", "CONFLICTING_ATTRIBUTE_PROPERTY_VALUES", "__WARNING_CONFLICTING_ATTRIBUTE_PROPERTY_VALUES"] helpviewer_keywords: ["C6501"] -ms.assetid: f9e8b847-2516-4bbb-bb1c-c87cfbacf254 --- # Warning C6501 diff --git a/docs/code-quality/c6503.md b/docs/code-quality/c6503.md index 7f5f7797d87..5c320d0eaed 100644 --- a/docs/code-quality/c6503.md +++ b/docs/code-quality/c6503.md @@ -1,10 +1,9 @@ --- +title: "Warning C6503" description: "Learn more about: Warning C6503" -title: Warning C6503 ms.date: 11/04/2016 f1_keywords: ["C6503", "REFERENCES_CANT_BE_NULL", "__WARNING_REFERENCES_CANT_BE_NULL"] helpviewer_keywords: ["C6503"] -ms.assetid: a6212938-bef9-4830-becb-6baa70b53e97 --- # Warning C6503 diff --git a/docs/code-quality/c6504.md b/docs/code-quality/c6504.md index 2039768ccea..eb9d24fa536 100644 --- a/docs/code-quality/c6504.md +++ b/docs/code-quality/c6504.md @@ -1,5 +1,5 @@ --- -title: Warning C6504 +title: "Warning C6504" description: "Learn more about: Warning C6504" ms.date: 10/03/2022 f1_keywords: ["C6504", "NULL_ON_NON_POINTER", "__WARNING_NULL_ON_NON_POINTER"] diff --git a/docs/code-quality/c6505.md b/docs/code-quality/c6505.md index 3edfe826bbf..317778e442c 100644 --- a/docs/code-quality/c6505.md +++ b/docs/code-quality/c6505.md @@ -1,10 +1,9 @@ --- +title: "Warning C6505" description: "Learn more about: Warning C6505" -title: Warning C6505 ms.date: 11/04/2016 f1_keywords: ["C6505", "MUSTCHECK_ON_VOID", "__WARNING_MUSTCHECK_ON_VOID"] helpviewer_keywords: ["C6505"] -ms.assetid: 1883ce60-48d7-41c8-add8-814e4b8b908b --- # Warning C6505 diff --git a/docs/code-quality/c6506.md b/docs/code-quality/c6506.md index a2ce79eeed9..6cd1cf750b2 100644 --- a/docs/code-quality/c6506.md +++ b/docs/code-quality/c6506.md @@ -1,5 +1,5 @@ --- -title: Warning C6506 +title: "Warning C6506" description: "Learn more about: Warning C6506" ms.date: 11/04/2016 f1_keywords: ["C6506", "BUFFER_SIZE_ON_NON_POINTER_OR_ARRAY", "__WARNING_BUFFER_SIZE_ON_NON_POINTER_OR_ARRAY"] diff --git a/docs/code-quality/c6508.md b/docs/code-quality/c6508.md index 7a834ab3fef..f48ec901cc3 100644 --- a/docs/code-quality/c6508.md +++ b/docs/code-quality/c6508.md @@ -1,10 +1,9 @@ --- +title: "Warning C6508" description: "Learn more about: Warning C6508" -title: Warning C6508 ms.date: 11/04/2016 f1_keywords: ["C6508", "WRITE_ACCESS_ON_CONST", "__WARNING_WRITE_ACCESS_ON_CONST"] helpviewer_keywords: ["C6508"] -ms.assetid: ac5b23c8-ab9e-481b-bc97-8404f0b63100 --- # Warning C6508 diff --git a/docs/code-quality/c6509.md b/docs/code-quality/c6509.md index 5266f53e763..e969a7c5d47 100644 --- a/docs/code-quality/c6509.md +++ b/docs/code-quality/c6509.md @@ -1,10 +1,9 @@ --- +title: "Warning C6509" description: "Learn more about: Warning C6509" -title: Warning C6509 ms.date: 11/04/2016 f1_keywords: ["C6509", "RETURN_USED_ON_PRECONDITION", "__WARNING_RETURN_USED_ON_PRECONDITION"] helpviewer_keywords: ["C6509"] -ms.assetid: 6311bfd9-8372-48da-b01b-1c8775c38449 --- # Warning C6509 diff --git a/docs/code-quality/c6510.md b/docs/code-quality/c6510.md index e6d2366a4cf..b390495e5f6 100644 --- a/docs/code-quality/c6510.md +++ b/docs/code-quality/c6510.md @@ -1,10 +1,9 @@ --- +title: "Warning C6510" description: "Learn more about: Warning C6510" -title: Warning C6510 ms.date: 11/04/2016 f1_keywords: ["C6510", "NULLTERMINATED_ON_NON_POINTER", "__WARNING_NULLTERMINATED_ON_NON_POINTER"] helpviewer_keywords: ["C6510"] -ms.assetid: b7fc5eb4-3311-442c-ac79-401e88ef2129 --- # Warning C6510 diff --git a/docs/code-quality/c6511.md b/docs/code-quality/c6511.md index 41553d3024e..37d75c8a480 100644 --- a/docs/code-quality/c6511.md +++ b/docs/code-quality/c6511.md @@ -1,10 +1,9 @@ --- +title: "Warning C6511" description: "Learn more about: Warning C6511" -title: Warning C6511 ms.date: 11/04/2016 f1_keywords: ["C6511", "MUSTCHECK_MAYBE", "__WARNING_MUSTCHECK_MAYBE"] helpviewer_keywords: ["C6511"] -ms.assetid: 1a0ac213-c205-4fb1-9bc3-3dc7885329fa --- # Warning C6511 diff --git a/docs/code-quality/c6513.md b/docs/code-quality/c6513.md index 7127c046f3c..7f4d110c621 100644 --- a/docs/code-quality/c6513.md +++ b/docs/code-quality/c6513.md @@ -1,10 +1,9 @@ --- +title: "Warning C6513" description: "Learn more about: Warning C6513" -title: Warning C6513 ms.date: 11/04/2016 f1_keywords: ["C6513", "ELEMENT_SIZE_WITHOUT_BUFFER_SIZE", "__WARNING_ELEMENT_SIZE_WITHOUT_BUFFER_SIZE"] helpviewer_keywords: ["C6513"] -ms.assetid: b27780ac-b237-4b26-a796-68a920da73a3 --- # Warning C6513 diff --git a/docs/code-quality/c6514.md b/docs/code-quality/c6514.md index aefc536fd2b..b0826ee86ce 100644 --- a/docs/code-quality/c6514.md +++ b/docs/code-quality/c6514.md @@ -1,10 +1,9 @@ --- +title: "Warning C6514" description: "Learn more about: Warning C6514" -title: Warning C6514 ms.date: 11/04/2016 f1_keywords: ["C6514", "BUFFER_SIZE_EXCEEDS_ARRAY_SIZE", "__WARNING_BUFFER_SIZE_EXCEEDS_ARRAY_SIZE"] helpviewer_keywords: ["C6514"] -ms.assetid: 4930a9f9-c721-437f-8754-cf39b30ea2db --- # Warning C6514 diff --git a/docs/code-quality/c6515.md b/docs/code-quality/c6515.md index 1f329099e64..b8d51042420 100644 --- a/docs/code-quality/c6515.md +++ b/docs/code-quality/c6515.md @@ -1,10 +1,9 @@ --- +title: "Warning C6515" description: "Learn more about: Warning C6515" -title: Warning C6515 ms.date: 11/04/2016 f1_keywords: ["C6515", "BUFFER_SIZE_ON_NON_POINTER", "__WARNING_BUFFER_SIZE_ON_NON_POINTER"] helpviewer_keywords: ["C6515"] -ms.assetid: e0f21858-0fea-427b-965a-a7eff62e1371 --- # Warning C6515 diff --git a/docs/code-quality/c6516.md b/docs/code-quality/c6516.md index 02f2456b7bd..128900e3e6b 100644 --- a/docs/code-quality/c6516.md +++ b/docs/code-quality/c6516.md @@ -1,10 +1,9 @@ --- +title: "Warning C6516" description: "Learn more about: Warning C6516" -title: Warning C6516 ms.date: 11/04/2016 f1_keywords: ["C6516", "NO_PROPERTIES_ON_ATTRIBUTE", "__WARNING_NO_PROPERTIES_ON_ATTRIBUTE"] helpviewer_keywords: ["C6516"] -ms.assetid: 461078c8-18d4-49ca-80a2-a15736f429a0 --- # Warning C6516 diff --git a/docs/code-quality/c6517.md b/docs/code-quality/c6517.md index 7cefd9e4e01..45b7ea115d8 100644 --- a/docs/code-quality/c6517.md +++ b/docs/code-quality/c6517.md @@ -1,10 +1,9 @@ --- +title: "Warning C6517" description: "Learn more about: Warning C6517" -title: Warning C6517 ms.date: 11/04/2016 f1_keywords: ["C6517", "VALID_SIZE_ON_NON_READABLE_BUFFER", "__WARNING_VALID_SIZE_ON_NON_READABLE_BUFFER"] helpviewer_keywords: ["C6517"] -ms.assetid: 96822155-8b2a-4699-980f-744afff84ca8 --- # Warning C6517 diff --git a/docs/code-quality/c6518.md b/docs/code-quality/c6518.md index 179ef86f930..de6c364ac96 100644 --- a/docs/code-quality/c6518.md +++ b/docs/code-quality/c6518.md @@ -1,10 +1,9 @@ --- +title: "Warning C6518" description: "Learn more about: Warning C6518" -title: Warning C6518 ms.date: 11/04/2016 f1_keywords: ["C6518", "WRITABLE_SIZE_ON_NON_WRITABLE_BUFFER", "__WARNING_WRITABLE_SIZE_ON_NON_WRITABLE_BUFFER"] helpviewer_keywords: ["C6518"] -ms.assetid: c391a75b-9f16-43a5-a7cd-c5a233002850 --- # Warning C6518 diff --git a/docs/code-quality/c6522.md b/docs/code-quality/c6522.md index 89db830412b..b4d4d9f5bc2 100644 --- a/docs/code-quality/c6522.md +++ b/docs/code-quality/c6522.md @@ -1,10 +1,9 @@ --- +title: "Warning C6522" description: "Learn more about: Warning C6522" -title: Warning C6522 ms.date: 11/04/2016 f1_keywords: ["C6522", "INVALID_SIZE_STRING_TYPE", "__WARNING_INVALID_SIZE_STRING_TYPE"] helpviewer_keywords: ["C6522"] -ms.assetid: ac482f63-b27f-4807-968a-1c449033d2dd --- # Warning C6522 diff --git a/docs/code-quality/c6525.md b/docs/code-quality/c6525.md index 3faa9a9a2ae..36a6e2cd5e0 100644 --- a/docs/code-quality/c6525.md +++ b/docs/code-quality/c6525.md @@ -1,10 +1,9 @@ --- +title: "Warning C6525" description: "Learn more about: Warning C6525" -title: Warning C6525 ms.date: 11/04/2016 f1_keywords: ["C6525", "INVALID_SIZE_STRING_UNREACHABLE_LOCATION", "__WARNING_INVALID_SIZE_STRING_UNREACHABLE_LOCATION"] helpviewer_keywords: ["C6525"] -ms.assetid: a7af4dc7-d5a4-455f-a414-0c389ffd9aa9 --- # Warning C6525 diff --git a/docs/code-quality/c6527.md b/docs/code-quality/c6527.md index 4c6c08810c6..0df3ea2dd62 100644 --- a/docs/code-quality/c6527.md +++ b/docs/code-quality/c6527.md @@ -1,10 +1,9 @@ --- +title: "Warning C6527" description: "Learn more about: Warning C6527" -title: Warning C6527 ms.date: 11/04/2016 f1_keywords: ["C6527"] helpviewer_keywords: ["C6527"] -ms.assetid: 5ebb6279-0f75-4566-a5f3-a47834de9625 --- # Warning C6527 diff --git a/docs/code-quality/c6530.md b/docs/code-quality/c6530.md index 56131370ca0..fcaaaee3b72 100644 --- a/docs/code-quality/c6530.md +++ b/docs/code-quality/c6530.md @@ -1,10 +1,9 @@ --- +title: "Warning C6530" description: "Learn more about: Warning C6530" -title: Warning C6530 ms.date: 11/04/2016 f1_keywords: ["C6530", "UNRECOGNIZED_FORMAT_STRING_STYLE", "__WARNING_UNRECOGNIZED_FORMAT_STRING_STYLE"] helpviewer_keywords: ["C6530"] -ms.assetid: 60e9dc58-e0f1-4a34-8c75-efebaa6cadd2 --- # Warning C6530 diff --git a/docs/code-quality/c6540.md b/docs/code-quality/c6540.md index 77790ec3ea0..65e63f09ada 100644 --- a/docs/code-quality/c6540.md +++ b/docs/code-quality/c6540.md @@ -1,10 +1,9 @@ --- +title: "Warning C6540" description: "Learn more about: Warning C6540" -title: Warning C6540 ms.date: 11/04/2016 f1_keywords: ["C6540"] helpviewer_keywords: ["C6540"] -ms.assetid: b047084c-9187-443e-8bcd-8f42064003f7 --- # Warning C6540 diff --git a/docs/code-quality/c6551.md b/docs/code-quality/c6551.md index 38d0907d739..6a4e0b3c4a9 100644 --- a/docs/code-quality/c6551.md +++ b/docs/code-quality/c6551.md @@ -1,10 +1,9 @@ --- +title: "Warning C6551" description: "Learn more about: Warning C6551" -title: Warning C6551 ms.date: 11/04/2016 f1_keywords: ["C6551"] helpviewer_keywords: ["C6551"] -ms.assetid: cfd02698-7ba7-4564-841d-208999b1561d --- # Warning C6551 diff --git a/docs/code-quality/c6552.md b/docs/code-quality/c6552.md index 7ca29467875..ebdf48ef39d 100644 --- a/docs/code-quality/c6552.md +++ b/docs/code-quality/c6552.md @@ -1,10 +1,9 @@ --- +title: "Warning C6552" description: "Learn more about: Warning C6552" -title: Warning C6552 ms.date: 11/04/2016 f1_keywords: ["C6552"] helpviewer_keywords: ["C6552"] -ms.assetid: 6c6f17d8-4ddd-4fad-b81f-e32285e7afa8 --- # Warning C6552 diff --git a/docs/code-quality/c6701.md b/docs/code-quality/c6701.md index 7def9d2a483..35aa86ba49d 100644 --- a/docs/code-quality/c6701.md +++ b/docs/code-quality/c6701.md @@ -1,5 +1,5 @@ --- -title: Warning C6701 +title: "Warning C6701" description: "Learn more about: Warning C6701" ms.date: 11/04/2016 f1_keywords: ["C6701"] diff --git a/docs/code-quality/c6702.md b/docs/code-quality/c6702.md index 06c1b8bd82b..ecb9a87a5dc 100644 --- a/docs/code-quality/c6702.md +++ b/docs/code-quality/c6702.md @@ -1,10 +1,9 @@ --- +title: "Warning C6702" description: "Learn more about: Warning C6702" -title: Warning C6702 ms.date: 11/04/2016 f1_keywords: ["C6702"] helpviewer_keywords: ["C6702"] -ms.assetid: 6d373843-4ab4-4a94-bb83-5fec9214c625 --- # Warning C6702 diff --git a/docs/code-quality/c6703.md b/docs/code-quality/c6703.md index dbeda03fcdd..40f198dc2e5 100644 --- a/docs/code-quality/c6703.md +++ b/docs/code-quality/c6703.md @@ -1,10 +1,9 @@ --- +title: "Warning C6703" description: "Learn more about: Warning C6703" -title: Warning C6703 ms.date: 11/04/2016 f1_keywords: ["C6703"] helpviewer_keywords: ["C6703"] -ms.assetid: 8ec4f403-e63e-4930-8266-569c9cd263b4 --- # Warning C6703 diff --git a/docs/code-quality/c6704.md b/docs/code-quality/c6704.md index c681b0887da..5a68ddfee58 100644 --- a/docs/code-quality/c6704.md +++ b/docs/code-quality/c6704.md @@ -1,10 +1,9 @@ --- +title: "Warning C6704" description: "Learn more about: Warning C6704" -title: Warning C6704 ms.date: 11/04/2016 f1_keywords: ["C6704"] helpviewer_keywords: ["C6704"] -ms.assetid: fc25543d-746e-415e-b0a8-d5134461af41 --- # Warning C6704 diff --git a/docs/code-quality/c6705.md b/docs/code-quality/c6705.md index e107a8cd2d5..17a2222150d 100644 --- a/docs/code-quality/c6705.md +++ b/docs/code-quality/c6705.md @@ -1,10 +1,9 @@ --- +title: "Warning C6705" description: "Learn more about: Warning C6705" -title: Warning C6705 ms.date: 11/04/2016 f1_keywords: ["C6705"] helpviewer_keywords: ["C6705"] -ms.assetid: 5d81e7ac-0c51-4cca-aaa8-df1aa599f175 --- # Warning C6705 diff --git a/docs/code-quality/c6706.md b/docs/code-quality/c6706.md index 7fbc597ad4e..7f430a9c48b 100644 --- a/docs/code-quality/c6706.md +++ b/docs/code-quality/c6706.md @@ -1,10 +1,9 @@ --- +title: "Warning C6706" description: "Learn more about: Warning C6706" -title: Warning C6706 ms.date: 11/04/2016 f1_keywords: ["C6706"] helpviewer_keywords: ["C6706"] -ms.assetid: 20f3fd01-4993-4f7f-bd3f-57706356cf1d --- # Warning C6706 diff --git a/docs/code-quality/c6707.md b/docs/code-quality/c6707.md index 8a12d79df99..24441240b1d 100644 --- a/docs/code-quality/c6707.md +++ b/docs/code-quality/c6707.md @@ -1,10 +1,9 @@ --- +title: "Warning C6707" description: "Learn more about: Warning C6707" -title: Warning C6707 ms.date: 11/04/2016 f1_keywords: ["C6707"] helpviewer_keywords: ["C6707"] -ms.assetid: a6610464-9bc5-4f24-b0a5-7fa29581874d --- # Warning C6707 diff --git a/docs/code-quality/c6993.md b/docs/code-quality/c6993.md index 95695fe832a..a2b72c3ae86 100644 --- a/docs/code-quality/c6993.md +++ b/docs/code-quality/c6993.md @@ -1,5 +1,5 @@ --- -title: Warning C6993 +title: "Warning C6993" description: "Learn more about: Warning C6993" ms.date: 2/25/2025 f1_keywords: ["C6993"] diff --git a/docs/code-quality/c6995.md b/docs/code-quality/c6995.md index 1aeadbee3e9..a7183235967 100644 --- a/docs/code-quality/c6995.md +++ b/docs/code-quality/c6995.md @@ -1,5 +1,5 @@ --- -title: Warning C6995 +title: "Warning C6995" description: "Learn more about: Warning C6995" ms.date: 11/04/2016 f1_keywords: ["C6995"] diff --git a/docs/code-quality/c6997.md b/docs/code-quality/c6997.md index 8cbfc9bd5ed..693cd3ffb47 100644 --- a/docs/code-quality/c6997.md +++ b/docs/code-quality/c6997.md @@ -1,5 +1,5 @@ --- -title: Warning C6997 +title: "Warning C6997" description: "Learn more about: Warning C6997" ms.date: 11/04/2016 f1_keywords: ["C6997", "IGNORED_ANNOTATIONS"] From ac703ef66d0ce141205cc55f7aa9cc70727e9cf7 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Mon, 8 Sep 2025 23:20:11 +0800 Subject: [PATCH 1756/2255] Add "Remarks" and "Example" headings for error references in range [C7000, C7999] --- docs/error-messages/compiler-errors-2/compiler-error-c7510.md | 4 ++-- docs/error-messages/compiler-errors-2/compiler-error-c7536.md | 2 ++ docs/error-messages/compiler-errors-2/compiler-error-c7742.md | 4 ++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c7510.md b/docs/error-messages/compiler-errors-2/compiler-error-c7510.md index 4d310b7a6f2..507edb548f8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c7510.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c7510.md @@ -10,10 +10,10 @@ helpviewer_keywords: ["C7510"] > '*type-name*': use of dependent template name must be prefixed with 'template'\ > '*type-name*': use of dependent type name must be prefixed with 'typename' -In [`/permissive-`](../../build/reference/permissive-standards-conformance.md) mode, the compiler requires the **`template`** keyword to precede a template name when it comes after a dependent [`nested-name-specifier`](../../cpp/scope-resolution-operator.md). Similar rules hold for types qualified by **`typename`**. - ## Remarks +In [`/permissive-`](../../build/reference/permissive-standards-conformance.md) mode, the compiler requires the **`template`** keyword to precede a template name when it comes after a dependent [`nested-name-specifier`](../../cpp/scope-resolution-operator.md). Similar rules hold for types qualified by **`typename`**. + Compiler behavior has changed starting in Visual Studio 2017 version 15.8 under [`/permissive-`](../../build/reference/permissive-standards-conformance.md) mode. The compiler requires the **`template`** or **`typename`** keyword to precede a template or type name when it comes after a dependent *`nested-name-specifier`*. For more information, see [Name resolution for dependent types](../../cpp/name-resolution-for-dependent-types.md) and [Templates and name resolution](../../cpp/templates-and-name-resolution.md). ## Examples diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c7536.md b/docs/error-messages/compiler-errors-2/compiler-error-c7536.md index a2f4751a33a..bc23be1abd2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c7536.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c7536.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C7536"] > ifc failed integrity checks. Expected SHA2: '*hash-value*' +## Remarks + The compiler raises C7536 whenever the *`.ifc`* file has been tampered with. The header of the module interface contains an SHA2 hash of the contents below it. On import, the *`.ifc`* file is hashed, then checked against the hash provided in the header. If these don't match, error C7536 is raised: ```Output diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c7742.md b/docs/error-messages/compiler-errors-2/compiler-error-c7742.md index 32847771dd2..2ee6ceb6a8f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c7742.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c7742.md @@ -10,8 +10,12 @@ helpviewer_keywords: ["C7742"] > *Identifier*: a forward declaration of an enum can only use a simple identifier +## Remarks + The C++ Standard doesn't allow declaring an opaque enumeration using a qualified-id. An opaque enum declaration specifies the name and the underlying type, but doesn't list the enumerators or their values. +## Example + The following example generates C7742: ```cpp From 54f9308d2f7af278835d50a30b69d1077a81cbf2 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Mon, 8 Sep 2025 23:20:50 +0800 Subject: [PATCH 1757/2255] Replace term "sample" with "example" for error references in range [C7000, C7999] --- docs/error-messages/compiler-errors-2/compiler-error-c7688.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c7688.md b/docs/error-messages/compiler-errors-2/compiler-error-c7688.md index 8716a20d4fe..5f5097d138c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c7688.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c7688.md @@ -17,7 +17,7 @@ Compiler error C7688 is new in Visual Studio 2022 version 17.4. In previous comp ## Example -The sample code shows diagnostics generated for non-scalar types in `#pragma omp atomic` constructs. +The example code shows diagnostics generated for non-scalar types in `#pragma omp atomic` constructs. ```cpp // C7688.cpp From 02c9098548125ff870d484e8a9308b76b11f3ca9 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Mon, 8 Sep 2025 23:23:19 +0800 Subject: [PATCH 1758/2255] Update metadata for error references in range [C7000, C7999] --- docs/error-messages/compiler-errors-2/compiler-error-c7510.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c7536.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c7553.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c7688.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c7742.md | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c7510.md b/docs/error-messages/compiler-errors-2/compiler-error-c7510.md index 507edb548f8..b22fad3bdd3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c7510.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c7510.md @@ -1,6 +1,6 @@ --- -description: "Learn about the causes of Compiler error C7510 and how to fix it." title: "Compiler Error C7510" +description: "Learn about the causes of Compiler error C7510 and how to fix it." ms.date: 04/21/2021 f1_keywords: ["C7510"] helpviewer_keywords: ["C7510"] diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c7536.md b/docs/error-messages/compiler-errors-2/compiler-error-c7536.md index bc23be1abd2..dad516b4b11 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c7536.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c7536.md @@ -1,6 +1,6 @@ --- -description: "Learn about the causes of Compiler error C7536 and how to fix it." title: "Compiler Error C7536" +description: "Learn about the causes of Compiler error C7536 and how to fix it." ms.date: 05/03/2021 f1_keywords: ["C7536"] helpviewer_keywords: ["C7536"] diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c7553.md b/docs/error-messages/compiler-errors-2/compiler-error-c7553.md index 63cd4464c52..c0f40017200 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c7553.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c7553.md @@ -1,6 +1,6 @@ --- title: "Compiler Error C7553" -description: Compiler Error C7553 description and solution. +description: "Compiler Error C7553 description and solution." ms.date: 02/22/2022 f1_keywords: ["C7553"] helpviewer_keywords: ["C7553"] diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c7688.md b/docs/error-messages/compiler-errors-2/compiler-error-c7688.md index 5f5097d138c..bad39dc8ab9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c7688.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c7688.md @@ -1,6 +1,6 @@ --- title: "Compiler error C7688" -description: Compiler error C7688 description and solution. +description: "Compiler error C7688 description and solution." ms.date: 03/01/2023 f1_keywords: ["C7688"] helpviewer_keywords: ["C7688"] diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c7742.md b/docs/error-messages/compiler-errors-2/compiler-error-c7742.md index 2ee6ceb6a8f..dd7fd0b64fd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c7742.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c7742.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Error C7742" title: "Compiler Error C7742" -ms.date: "07/02/2025" +description: "Learn more about: Compiler Error C7742" +ms.date: 07/02/2025 ai-usage: ai-assisted f1_keywords: ["C7742"] helpviewer_keywords: ["C7742"] From 33b65bf956cc2f3d430261838043f16cf294e6f0 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 9 Sep 2025 00:50:01 +0800 Subject: [PATCH 1759/2255] Add blockquotes for error messages in range [CXX0000, CXX0034] --- .../tool-errors/expression-evaluator-error-cxx0000.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0001.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0002.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0004.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0005.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0006.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0007.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0008.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0009.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0010.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0011.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0012.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0013.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0014.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0015.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0016.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0017.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0018.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0019.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0020.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0021.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0022.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0023.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0024.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0025.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0026.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0027.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0028.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0029.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0030.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0031.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0032.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0033.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0034.md | 2 +- 34 files changed, 34 insertions(+), 34 deletions(-) diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0000.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0000.md index cfc74ee7552..e34b4fe80f9 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0000.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0000.md @@ -8,7 +8,7 @@ ms.assetid: 95a7f17d-88ea-4a6c-a3af-2289bf0529fe --- # Expression Evaluator Error CXX0000 -no error condition +> no error condition No error has occurred. You can continue debugging normally. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0001.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0001.md index 73944dbf0b0..2e94bc6345c 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0001.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0001.md @@ -8,6 +8,6 @@ ms.assetid: 39cdf175-e4b8-49c1-bf84-ed41e0fd8600 --- # Expression Evaluator Error CXX0001 -exception executing user function +> exception executing user function The code being executed caused a general protection fault. This error is identical to CAN0001. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0002.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0002.md index 8070e98c160..cbb52adabb7 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0002.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0002.md @@ -8,7 +8,7 @@ ms.assetid: 5f136470-505f-4224-a29a-2d34e896d78b --- # Expression Evaluator Error CXX0002 -error accessing user memory +> error accessing user memory The expression attempts to reference memory that is not allocated to the program being debugged. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0004.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0004.md index 1bac7f4b77c..ca0b51ca494 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0004.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0004.md @@ -8,7 +8,7 @@ ms.assetid: a4063eda-0335-4ae7-9595-29cf10669376 --- # Expression Evaluator Error CXX0004 -syntax error +> syntax error The syntax of the expression is incorrect. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0005.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0005.md index b7c786053a7..176963b62d6 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0005.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0005.md @@ -8,7 +8,7 @@ ms.assetid: b88e83e4-10aa-4e9c-94d3-92aa8c688748 --- # Expression Evaluator Error CXX0005 -operator not supported +> operator not supported An unsupported C operator was specified in an expression. Write an equivalent expression using the supported C operators. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0006.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0006.md index bd78c131518..f89cdfdce72 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0006.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0006.md @@ -8,7 +8,7 @@ ms.assetid: 34a8e21c-5443-4817-aad9-bb3143cfcaa6 --- # Expression Evaluator Error CXX0006 -missing left parenthesis +> missing left parenthesis Unbalanced parentheses were found in the expression. Retype the expression with balanced parentheses. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0007.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0007.md index 27956d6b228..1096674637f 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0007.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0007.md @@ -8,7 +8,7 @@ ms.assetid: 270a6d2d-ea6b-4a94-9871-841a6a133292 --- # Expression Evaluator Error CXX0007 -missing right parenthesis +> missing right parenthesis Unbalanced parentheses were found in the expression. Retype the expression with balanced parentheses. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0008.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0008.md index bca96bf5fa0..cf817b8ecfb 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0008.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0008.md @@ -8,7 +8,7 @@ ms.assetid: 49e0968c-a6ce-4ba9-9762-02a55c08124e --- # Expression Evaluator Error CXX0008 -**missing " at end of string** +> missing " at end of string The double quote expected at the end of the string literal was missing. Retype the expression, enclosing the string literal in double quotation marks. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0009.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0009.md index 74dc99854fd..7ddcb08e12d 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0009.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0009.md @@ -8,7 +8,7 @@ ms.assetid: b6f26a46-56f3-430f-a6db-b42934ddf331 --- # Expression Evaluator Error CXX0009 -missing ' after character constant +> missing ' after character constant The single quote expected at the end of the character constant was missing. Retype the expression, enclosing the character constant in single quotation marks. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0010.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0010.md index 9412b3c4c7b..9b437aadece 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0010.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0010.md @@ -8,7 +8,7 @@ ms.assetid: 8bd474b0-da12-4990-8569-6392f09f05f6 --- # Expression Evaluator Error CXX0010 -missing left bracket +> missing left bracket The expression contains unbalanced square brackets. Retype the expression with balanced square brackets. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0011.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0011.md index f2eda30c029..079a24fc844 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0011.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0011.md @@ -8,7 +8,7 @@ ms.assetid: c2252e89-ad66-43fc-93e4-b886dcbd3f19 --- # Expression Evaluator Error CXX0011 -missing right bracket +> missing right bracket The expression contains unbalanced square brackets. Retype the expression with balanced square brackets. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0012.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0012.md index f35e2ee2907..9fcbd43516e 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0012.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0012.md @@ -8,7 +8,7 @@ ms.assetid: bf547e21-6708-4854-ad23-2ae5a889fd82 --- # Expression Evaluator Error CXX0012 -missing left curly brace +> missing left curly brace The expression contains an unbalanced curly brace. Retype the expression with balanced curly braces. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0013.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0013.md index 0b88ec11273..6f6b87b3165 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0013.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0013.md @@ -8,7 +8,7 @@ ms.assetid: cf571e37-008d-47cd-80fa-59e96b1146e1 --- # Expression Evaluator Error CXX0013 -missing operator +> missing operator An operator was expected in the expression but was not found. Check the syntax of the expression. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0014.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0014.md index 640a86da34f..42876228154 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0014.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0014.md @@ -8,7 +8,7 @@ ms.assetid: 3bb0278d-3dd6-4626-9945-3cf29afbbacb --- # Expression Evaluator Error CXX0014 -missing operand +> missing operand An operator was specified without a required operand. Check the syntax of the expression. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0015.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0015.md index 31160b46a72..dc87286f579 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0015.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0015.md @@ -8,7 +8,7 @@ ms.assetid: 35efaf77-d578-48d8-bfc5-fdeb2a46a8b5 --- # Expression Evaluator Error CXX0015 -expression too complex (stack overflow) +> expression too complex (stack overflow) The expression entered was too complex or nested too deeply for the amount of storage available to the C expression evaluator. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0016.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0016.md index 4feb05578b6..959aa65d9f0 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0016.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0016.md @@ -8,7 +8,7 @@ ms.assetid: af94a2ae-e835-4da6-8d2f-5c879f72eda2 --- # Expression Evaluator Error CXX0016 -constant too big +> constant too big The C expression evaluator cannot accept an unsigned integer constant larger than 4,294,967,295 (0FFFFFFFF hexadecimal), or a floating-point constant whose magnitude is larger than approximately 1.8E+308. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0017.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0017.md index f6c81de30cc..6dba3c0c4d0 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0017.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0017.md @@ -8,7 +8,7 @@ ms.assetid: af74db02-a64d-49ca-8363-3e044a107580 --- # Expression Evaluator Error CXX0017 -symbol not found +> symbol not found A symbol specified in an expression could not be found. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0018.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0018.md index 9f7e92345ca..3eddc4847e7 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0018.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0018.md @@ -8,7 +8,7 @@ ms.assetid: d3d115d6-8981-4651-b615-566de867a263 --- # Expression Evaluator Error CXX0018 -bad register name +> bad register name A specified register does not exist or cannot be displayed. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0019.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0019.md index 680e0ee45f5..2b20fd17abf 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0019.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0019.md @@ -8,7 +8,7 @@ ms.assetid: 4c6431fd-3310-4a61-934d-58b070b330fe --- # Expression Evaluator Error CXX0019 -bad type cast +> bad type cast The C expression evaluator cannot perform the type cast as written. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0020.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0020.md index c34f0f55823..dcc86dd4985 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0020.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0020.md @@ -8,7 +8,7 @@ ms.assetid: 9dc57c25-e976-44e8-9a4e-db5a79e35bd7 --- # Expression Evaluator Error CXX0020 -operand types bad for this operation +> operand types bad for this operation An operator was applied to an expression with an invalid type for that operator. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0021.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0021.md index 162380237e5..01eb11f86d0 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0021.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0021.md @@ -8,7 +8,7 @@ ms.assetid: d6c0c35a-16c2-42c0-a7d2-e910350a47f0 --- # Expression Evaluator Error CXX0021 -struct or union used as scalar +> struct or union used as scalar A structure or union was used in an expression, but no element was specified. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0022.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0022.md index 1c06fe8c2a0..aa455ac80b5 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0022.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0022.md @@ -8,7 +8,7 @@ ms.assetid: f6b299ac-a4ee-492c-bd9f-6fff005bc537 --- # Expression Evaluator Error CXX0022 -function call before _main +> function call before _main The C expression evaluator cannot evaluate a function before the debugger has entered the function **_main**. The program is not properly initialized until **_main** has been called. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0023.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0023.md index d71fb7f9703..fb0d22e6577 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0023.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0023.md @@ -8,7 +8,7 @@ ms.assetid: 2de27692-dfb5-433f-82b3-80f118756eec --- # Expression Evaluator Error CXX0023 -bad radix +> bad radix The C expression evaluator does not recognize the radix specified. Only decimal, hexadecimal, and octal radixes are valid. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0024.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0024.md index 92cf0e9e802..be0da678a54 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0024.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0024.md @@ -8,7 +8,7 @@ ms.assetid: eca6adbd-8ff2-4f51-a1cc-a2e9d5d0a47d --- # Expression Evaluator Error CXX0024 -operation needs l-value +> operation needs l-value An expression that does not evaluate to an l-value was specified for an operation that requires an l-value. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0025.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0025.md index 10467f5b2ab..d28aa8c9818 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0025.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0025.md @@ -8,7 +8,7 @@ ms.assetid: 3e2fb541-63b3-46ac-9f93-3dadb253bcf6 --- # Expression Evaluator Error CXX0025 -operator needs struct/union +> operator needs struct/union An operator that takes an expression of **`struct`** or **`union`** type was applied to an expression that is not a **`struct`** or **`union`**. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0026.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0026.md index ed489fd094c..96f86472a1f 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0026.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0026.md @@ -8,7 +8,7 @@ ms.assetid: b5bc15f2-f179-4b87-ae88-a57e08e43bfa --- # Expression Evaluator Error CXX0026 -bad format string +> bad format string A format string was improperly specified. Check the syntax of the expression. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0027.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0027.md index 20755a40dbe..9c8e6b54cc4 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0027.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0027.md @@ -8,7 +8,7 @@ ms.assetid: 0127cfc0-c292-4923-a58b-25542343cdad --- # Expression Evaluator Error CXX0027 -tp addr not l-value +> tp addr not l-value Check the syntax of the expression. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0028.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0028.md index 78d2a0aa519..82fedc18d3f 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0028.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0028.md @@ -8,7 +8,7 @@ ms.assetid: 172eb81f-c0b0-43b1-b418-766f35f1a561 --- # Expression Evaluator Error CXX0028 -not struct/union element +> not struct/union element An expression of the form 'Struct.Member' or 'pStruct->Member' was specified, but \ is not an element of the structure. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0029.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0029.md index 2e7ea0170bb..be063af8445 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0029.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0029.md @@ -8,7 +8,7 @@ ms.assetid: 562b2132-e9cb-4591-a5bf-bc7179a7f40e --- # Expression Evaluator Error CXX0029 -not struct pointer +> not struct pointer The member-selection operator (**->**) was applied to an expression that is not a pointer to a structure. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0030.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0030.md index 64a58f4ddbf..89f85232bd4 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0030.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0030.md @@ -8,7 +8,7 @@ ms.assetid: ada8b48c-09c8-49bf-ae23-313ed663c4fe --- # Expression Evaluator Error CXX0030 -expression not evaluatable +> expression not evaluatable The debugger's expression evaluator could not obtain a value for the expression as written. One likely cause is that the expression refers to memory that is outside the program's address space (dereferencing a null pointer is one example). Windows does not allow access to memory that is outside of the program's address space. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0031.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0031.md index 255307a8bbf..ba3e1312144 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0031.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0031.md @@ -8,7 +8,7 @@ ms.assetid: adafbcb7-982f-495f-a34d-72e95d7e54c7 --- # Expression Evaluator Error CXX0031 -expression not expandable +> expression not expandable The expression evaluator encountered an internal error. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0032.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0032.md index a9902fe416c..a24b7142d3e 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0032.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0032.md @@ -8,7 +8,7 @@ ms.assetid: 78f56977-6b6d-42e2-b71d-c392525bb18b --- # Expression Evaluator Error CXX0032 -divide by 0 +> divide by 0 The expression contains a divisor of zero, which is illegal. This divisor may be the literal number zero, or it may be an expression that evaluates to zero. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0033.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0033.md index 198a6def252..9e9f10c2aed 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0033.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0033.md @@ -8,7 +8,7 @@ ms.assetid: 0bd62c5b-de89-481f-9b12-88fe84805afe --- # Expression Evaluator Error CXX0033 -error in OMF type information +> error in OMF type information The executable file did not have a valid object module format (OMF) for debugging. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0034.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0034.md index 829dacf515a..e91335a6193 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0034.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0034.md @@ -8,7 +8,7 @@ ms.assetid: afcee5f1-beff-489f-aea6-04f55e76364f --- # Expression Evaluator Error CXX0034 -**types incompatible with operator** +> types incompatible with operator The operand types specified are not legal for the operation. From 2da7f7dc07e64ff28521c50b5c80ae2bb07a5507 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 9 Sep 2025 00:53:59 +0800 Subject: [PATCH 1760/2255] Add "Remarks" headings for error references in range [CXX0000, CXX0034] --- .../tool-errors/expression-evaluator-error-cxx0000.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0001.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0002.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0004.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0005.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0006.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0007.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0008.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0009.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0010.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0011.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0012.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0013.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0014.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0015.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0016.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0017.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0018.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0019.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0020.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0021.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0022.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0023.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0024.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0025.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0026.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0027.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0028.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0029.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0030.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0031.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0032.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0033.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0034.md | 2 ++ 34 files changed, 68 insertions(+) diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0000.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0000.md index e34b4fe80f9..7e7c2799c9a 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0000.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0000.md @@ -10,6 +10,8 @@ ms.assetid: 95a7f17d-88ea-4a6c-a3af-2289bf0529fe > no error condition +## Remarks + No error has occurred. You can continue debugging normally. Note the circumstances and notify Microsoft Product Support Services. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0001.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0001.md index 2e94bc6345c..cb6dcceee1d 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0001.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0001.md @@ -10,4 +10,6 @@ ms.assetid: 39cdf175-e4b8-49c1-bf84-ed41e0fd8600 > exception executing user function +## Remarks + The code being executed caused a general protection fault. This error is identical to CAN0001. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0002.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0002.md index cbb52adabb7..7869e915dd8 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0002.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0002.md @@ -10,6 +10,8 @@ ms.assetid: 5f136470-505f-4224-a29a-2d34e896d78b > error accessing user memory +## Remarks + The expression attempts to reference memory that is not allocated to the program being debugged. This error is identical to CAN0002. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0004.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0004.md index ca0b51ca494..3c775433ed7 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0004.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0004.md @@ -10,6 +10,8 @@ ms.assetid: a4063eda-0335-4ae7-9595-29cf10669376 > syntax error +## Remarks + The syntax of the expression is incorrect. Retype the expression with the correct syntax. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0005.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0005.md index 176963b62d6..8ef8f2b3416 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0005.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0005.md @@ -10,6 +10,8 @@ ms.assetid: b88e83e4-10aa-4e9c-94d3-92aa8c688748 > operator not supported +## Remarks + An unsupported C operator was specified in an expression. Write an equivalent expression using the supported C operators. This error is identical to CAN0005. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0006.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0006.md index f89cdfdce72..5cae50aae1e 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0006.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0006.md @@ -10,6 +10,8 @@ ms.assetid: 34a8e21c-5443-4817-aad9-bb3143cfcaa6 > missing left parenthesis +## Remarks + Unbalanced parentheses were found in the expression. Retype the expression with balanced parentheses. This error is identical to CAN0006. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0007.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0007.md index 1096674637f..f62a80d0154 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0007.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0007.md @@ -10,6 +10,8 @@ ms.assetid: 270a6d2d-ea6b-4a94-9871-841a6a133292 > missing right parenthesis +## Remarks + Unbalanced parentheses were found in the expression. Retype the expression with balanced parentheses. This error is identical to CAN0007. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0008.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0008.md index cf817b8ecfb..c800cc756b0 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0008.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0008.md @@ -10,6 +10,8 @@ ms.assetid: 49e0968c-a6ce-4ba9-9762-02a55c08124e > missing " at end of string +## Remarks + The double quote expected at the end of the string literal was missing. Retype the expression, enclosing the string literal in double quotation marks. This error is identical to CAN0008. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0009.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0009.md index 7ddcb08e12d..f3357c696f8 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0009.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0009.md @@ -10,6 +10,8 @@ ms.assetid: b6f26a46-56f3-430f-a6db-b42934ddf331 > missing ' after character constant +## Remarks + The single quote expected at the end of the character constant was missing. Retype the expression, enclosing the character constant in single quotation marks. This error is identical to CAN0009. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0010.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0010.md index 9b437aadece..427a1e77b44 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0010.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0010.md @@ -10,6 +10,8 @@ ms.assetid: 8bd474b0-da12-4990-8569-6392f09f05f6 > missing left bracket +## Remarks + The expression contains unbalanced square brackets. Retype the expression with balanced square brackets. This error is identical to CAN0010. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0011.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0011.md index 079a24fc844..7606a2393bf 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0011.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0011.md @@ -10,6 +10,8 @@ ms.assetid: c2252e89-ad66-43fc-93e4-b886dcbd3f19 > missing right bracket +## Remarks + The expression contains unbalanced square brackets. Retype the expression with balanced square brackets. This error is identical to CAN0011. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0012.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0012.md index 9fcbd43516e..879fdb0e553 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0012.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0012.md @@ -10,6 +10,8 @@ ms.assetid: bf547e21-6708-4854-ad23-2ae5a889fd82 > missing left curly brace +## Remarks + The expression contains an unbalanced curly brace. Retype the expression with balanced curly braces. This error is identical to CAN0012. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0013.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0013.md index 6f6b87b3165..5f1227500c8 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0013.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0013.md @@ -10,6 +10,8 @@ ms.assetid: cf571e37-008d-47cd-80fa-59e96b1146e1 > missing operator +## Remarks + An operator was expected in the expression but was not found. Check the syntax of the expression. This error is identical to CAN0013. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0014.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0014.md index 42876228154..e445338e9e0 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0014.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0014.md @@ -10,6 +10,8 @@ ms.assetid: 3bb0278d-3dd6-4626-9945-3cf29afbbacb > missing operand +## Remarks + An operator was specified without a required operand. Check the syntax of the expression. This error is identical to CAN0014. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0015.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0015.md index dc87286f579..52e014037fe 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0015.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0015.md @@ -10,6 +10,8 @@ ms.assetid: 35efaf77-d578-48d8-bfc5-fdeb2a46a8b5 > expression too complex (stack overflow) +## Remarks + The expression entered was too complex or nested too deeply for the amount of storage available to the C expression evaluator. Overflow usually occurs because of too many pending calculations. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0016.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0016.md index 959aa65d9f0..fb491fc71ae 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0016.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0016.md @@ -10,6 +10,8 @@ ms.assetid: af94a2ae-e835-4da6-8d2f-5c879f72eda2 > constant too big +## Remarks + The C expression evaluator cannot accept an unsigned integer constant larger than 4,294,967,295 (0FFFFFFFF hexadecimal), or a floating-point constant whose magnitude is larger than approximately 1.8E+308. This error is identical to CAN0016. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0017.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0017.md index 6dba3c0c4d0..c0243c04360 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0017.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0017.md @@ -10,6 +10,8 @@ ms.assetid: af74db02-a64d-49ca-8363-3e044a107580 > symbol not found +## Remarks + A symbol specified in an expression could not be found. One possible cause of this error is a case mismatch in the symbol name. Because C and C++ are case-sensitive languages, a symbol name must be given in the exact case in which it is defined in the source. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0018.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0018.md index 3eddc4847e7..d8d13712359 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0018.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0018.md @@ -10,6 +10,8 @@ ms.assetid: d3d115d6-8981-4651-b615-566de867a263 > bad register name +## Remarks + A specified register does not exist or cannot be displayed. The Watch window can display the following registers: diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0019.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0019.md index 2b20fd17abf..2d6455f48a6 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0019.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0019.md @@ -10,6 +10,8 @@ ms.assetid: 4c6431fd-3310-4a61-934d-58b070b330fe > bad type cast +## Remarks + The C expression evaluator cannot perform the type cast as written. This error is identical to CAN0019. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0020.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0020.md index dcc86dd4985..29032f0ce51 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0020.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0020.md @@ -10,6 +10,8 @@ ms.assetid: 9dc57c25-e976-44e8-9a4e-db5a79e35bd7 > operand types bad for this operation +## Remarks + An operator was applied to an expression with an invalid type for that operator. For example, it is not valid to take the address of a register or subscript an array with a floating-point expression. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0021.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0021.md index 01eb11f86d0..2d860fbae11 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0021.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0021.md @@ -10,6 +10,8 @@ ms.assetid: d6c0c35a-16c2-42c0-a7d2-e910350a47f0 > struct or union used as scalar +## Remarks + A structure or union was used in an expression, but no element was specified. When manipulating a structure or union variable, the name of the variable may appear by itself, without a field qualifier. If a structure or union is used in an expression, it must be qualified with the specific element desired. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0022.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0022.md index aa455ac80b5..ff3d1aa6d27 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0022.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0022.md @@ -10,6 +10,8 @@ ms.assetid: f6b299ac-a4ee-492c-bd9f-6fff005bc537 > function call before _main +## Remarks + The C expression evaluator cannot evaluate a function before the debugger has entered the function **_main**. The program is not properly initialized until **_main** has been called. This error is identical to CAN0022. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0023.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0023.md index fb0d22e6577..a9024dcd116 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0023.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0023.md @@ -10,6 +10,8 @@ ms.assetid: 2de27692-dfb5-433f-82b3-80f118756eec > bad radix +## Remarks + The C expression evaluator does not recognize the radix specified. Only decimal, hexadecimal, and octal radixes are valid. This error is identical to CAN0023. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0024.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0024.md index be0da678a54..b6de68fc800 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0024.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0024.md @@ -10,6 +10,8 @@ ms.assetid: eca6adbd-8ff2-4f51-a1cc-a2e9d5d0a47d > operation needs l-value +## Remarks + An expression that does not evaluate to an l-value was specified for an operation that requires an l-value. An l-value (so called because it appears on the left side of an assignment statement) is an expression that refers to a memory location. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0025.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0025.md index d28aa8c9818..155304e0595 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0025.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0025.md @@ -10,6 +10,8 @@ ms.assetid: 3e2fb541-63b3-46ac-9f93-3dadb253bcf6 > operator needs struct/union +## Remarks + An operator that takes an expression of **`struct`** or **`union`** type was applied to an expression that is not a **`struct`** or **`union`**. Components of class, structure, or union variables must have a fully qualified name. Components cannot be entered without full specification. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0026.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0026.md index 96f86472a1f..c2a18088295 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0026.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0026.md @@ -10,6 +10,8 @@ ms.assetid: b5bc15f2-f179-4b87-ae88-a57e08e43bfa > bad format string +## Remarks + A format string was improperly specified. Check the syntax of the expression. This error is identical to CAN0026. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0027.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0027.md index 9c8e6b54cc4..6c6c8830647 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0027.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0027.md @@ -10,6 +10,8 @@ ms.assetid: 0127cfc0-c292-4923-a58b-25542343cdad > tp addr not l-value +## Remarks + Check the syntax of the expression. This error is identical to CAN0027. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0028.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0028.md index 82fedc18d3f..cdecf73f118 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0028.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0028.md @@ -10,6 +10,8 @@ ms.assetid: 172eb81f-c0b0-43b1-b418-766f35f1a561 > not struct/union element +## Remarks + An expression of the form 'Struct.Member' or 'pStruct->Member' was specified, but \ is not an element of the structure. The expression may not be parenthesized correctly. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0029.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0029.md index be063af8445..c888e70820b 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0029.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0029.md @@ -10,6 +10,8 @@ ms.assetid: 562b2132-e9cb-4591-a5bf-bc7179a7f40e > not struct pointer +## Remarks + The member-selection operator (**->**) was applied to an expression that is not a pointer to a structure. Check that the entire expression is parenthesized correctly, or type cast the address expression to the appropriate structure pointer type. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0030.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0030.md index 89f85232bd4..c5b68d59e49 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0030.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0030.md @@ -10,6 +10,8 @@ ms.assetid: ada8b48c-09c8-49bf-ae23-313ed663c4fe > expression not evaluatable +## Remarks + The debugger's expression evaluator could not obtain a value for the expression as written. One likely cause is that the expression refers to memory that is outside the program's address space (dereferencing a null pointer is one example). Windows does not allow access to memory that is outside of the program's address space. You may want to rewrite your expression using parentheses to control the order of evaluation. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0031.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0031.md index ba3e1312144..efe7dc7b4aa 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0031.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0031.md @@ -10,6 +10,8 @@ ms.assetid: adafbcb7-982f-495f-a34d-72e95d7e54c7 > expression not expandable +## Remarks + The expression evaluator encountered an internal error. You may be able to write an equivalent expression that can be evaluated correctly. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0032.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0032.md index a24b7142d3e..b6366d55d12 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0032.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0032.md @@ -10,6 +10,8 @@ ms.assetid: 78f56977-6b6d-42e2-b71d-c392525bb18b > divide by 0 +## Remarks + The expression contains a divisor of zero, which is illegal. This divisor may be the literal number zero, or it may be an expression that evaluates to zero. This error is identical to CAN0032. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0033.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0033.md index 9e9f10c2aed..8f42f3539c1 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0033.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0033.md @@ -10,6 +10,8 @@ ms.assetid: 0bd62c5b-de89-481f-9b12-88fe84805afe > error in OMF type information +## Remarks + The executable file did not have a valid object module format (OMF) for debugging. This error is identical to CAN0033. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0034.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0034.md index e91335a6193..dedf3a6ee43 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0034.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0034.md @@ -10,6 +10,8 @@ ms.assetid: afcee5f1-beff-489f-aea6-04f55e76364f > types incompatible with operator +## Remarks + The operand types specified are not legal for the operation. For example, a pointer cannot be multiplied by any value. From e8ef4a4f50a7a3fc486697b1dba9870fd5f1cafa Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 9 Sep 2025 00:59:43 +0800 Subject: [PATCH 1761/2255] Update metadata for error references in range [CXX0000, CXX0034] --- .../tool-errors/expression-evaluator-error-cxx0000.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0001.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0002.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0004.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0005.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0006.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0007.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0008.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0009.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0010.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0011.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0012.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0013.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0014.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0015.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0016.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0017.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0018.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0019.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0020.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0021.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0022.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0023.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0024.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0025.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0026.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0027.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0028.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0029.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0030.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0031.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0032.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0033.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0034.md | 5 ++--- 34 files changed, 68 insertions(+), 102 deletions(-) diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0000.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0000.md index 7e7c2799c9a..36257d65814 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0000.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0000.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0000" title: "Expression Evaluator Error CXX0000" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0000" +ms.date: 11/04/2016 f1_keywords: ["CXX0000"] helpviewer_keywords: ["CAN0000", "CXX0000"] -ms.assetid: 95a7f17d-88ea-4a6c-a3af-2289bf0529fe --- # Expression Evaluator Error CXX0000 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0001.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0001.md index cb6dcceee1d..6eaffca2052 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0001.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0001.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0001" title: "Expression Evaluator Error CXX0001" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0001" +ms.date: 11/04/2016 f1_keywords: ["CXX0001"] helpviewer_keywords: ["CXX0001", "CAN0001"] -ms.assetid: 39cdf175-e4b8-49c1-bf84-ed41e0fd8600 --- # Expression Evaluator Error CXX0001 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0002.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0002.md index 7869e915dd8..5cdf941c8d9 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0002.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0002.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0002" title: "Expression Evaluator Error CXX0002" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0002" +ms.date: 11/04/2016 f1_keywords: ["CXX0002"] helpviewer_keywords: ["CXX0002", "CAN0002"] -ms.assetid: 5f136470-505f-4224-a29a-2d34e896d78b --- # Expression Evaluator Error CXX0002 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0004.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0004.md index 3c775433ed7..dbf174f51fe 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0004.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0004.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0004" title: "Expression Evaluator Error CXX0004" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0004" +ms.date: 11/04/2016 f1_keywords: ["CXX0004"] helpviewer_keywords: ["CAN0004", "CXX0004"] -ms.assetid: a4063eda-0335-4ae7-9595-29cf10669376 --- # Expression Evaluator Error CXX0004 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0005.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0005.md index 8ef8f2b3416..9aac32814d1 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0005.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0005.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0005" title: "Expression Evaluator Error CXX0005" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0005" +ms.date: 11/04/2016 f1_keywords: ["CXX0005"] helpviewer_keywords: ["CXX0005", "CAN0005"] -ms.assetid: b88e83e4-10aa-4e9c-94d3-92aa8c688748 --- # Expression Evaluator Error CXX0005 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0006.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0006.md index 5cae50aae1e..2a172e02f87 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0006.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0006.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0006" title: "Expression Evaluator Error CXX0006" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0006" +ms.date: 11/04/2016 f1_keywords: ["CXX0006"] helpviewer_keywords: ["CAN0006", "CXX0006"] -ms.assetid: 34a8e21c-5443-4817-aad9-bb3143cfcaa6 --- # Expression Evaluator Error CXX0006 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0007.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0007.md index f62a80d0154..886c1987ad8 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0007.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0007.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0007" title: "Expression Evaluator Error CXX0007" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0007" +ms.date: 11/04/2016 f1_keywords: ["CXX0007"] helpviewer_keywords: ["CXX0007", "CAN0007"] -ms.assetid: 270a6d2d-ea6b-4a94-9871-841a6a133292 --- # Expression Evaluator Error CXX0007 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0008.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0008.md index c800cc756b0..201553ebca2 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0008.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0008.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0008" title: "Expression Evaluator Error CXX0008" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0008" +ms.date: 11/04/2016 f1_keywords: ["CXX0008"] helpviewer_keywords: ["CXX0008", "CAN0008"] -ms.assetid: 49e0968c-a6ce-4ba9-9762-02a55c08124e --- # Expression Evaluator Error CXX0008 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0009.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0009.md index f3357c696f8..22cebf0aa8c 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0009.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0009.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0009" title: "Expression Evaluator Error CXX0009" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0009" +ms.date: 11/04/2016 f1_keywords: ["CXX0009"] helpviewer_keywords: ["CXX0009", "CAN0009"] -ms.assetid: b6f26a46-56f3-430f-a6db-b42934ddf331 --- # Expression Evaluator Error CXX0009 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0010.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0010.md index 427a1e77b44..d3eb52bb8cc 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0010.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0010.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0010" title: "Expression Evaluator Error CXX0010" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0010" +ms.date: 11/04/2016 f1_keywords: ["CXX0010"] helpviewer_keywords: ["CAN0010", "CXX0010"] -ms.assetid: 8bd474b0-da12-4990-8569-6392f09f05f6 --- # Expression Evaluator Error CXX0010 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0011.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0011.md index 7606a2393bf..73e96763e91 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0011.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0011.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0011" title: "Expression Evaluator Error CXX0011" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0011" +ms.date: 11/04/2016 f1_keywords: ["CXX0011"] helpviewer_keywords: ["CAN0011", "CXX0011"] -ms.assetid: c2252e89-ad66-43fc-93e4-b886dcbd3f19 --- # Expression Evaluator Error CXX0011 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0012.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0012.md index 879fdb0e553..367224bbc98 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0012.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0012.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0012" title: "Expression Evaluator Error CXX0012" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0012" +ms.date: 11/04/2016 f1_keywords: ["CXX0012"] helpviewer_keywords: ["CXX0012", "CAN0012"] -ms.assetid: bf547e21-6708-4854-ad23-2ae5a889fd82 --- # Expression Evaluator Error CXX0012 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0013.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0013.md index 5f1227500c8..91bcbb1a834 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0013.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0013.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0013" title: "Expression Evaluator Error CXX0013" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0013" +ms.date: 11/04/2016 f1_keywords: ["CXX0013"] helpviewer_keywords: ["CAN0013", "CXX0013"] -ms.assetid: cf571e37-008d-47cd-80fa-59e96b1146e1 --- # Expression Evaluator Error CXX0013 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0014.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0014.md index e445338e9e0..9876536b5c0 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0014.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0014.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0014" title: "Expression Evaluator Error CXX0014" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0014" +ms.date: 11/04/2016 f1_keywords: ["CXX0014"] helpviewer_keywords: ["CAN0014", "CXX0014"] -ms.assetid: 3bb0278d-3dd6-4626-9945-3cf29afbbacb --- # Expression Evaluator Error CXX0014 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0015.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0015.md index 52e014037fe..bb5d1ed5373 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0015.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0015.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0015" title: "Expression Evaluator Error CXX0015" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0015" +ms.date: 11/04/2016 f1_keywords: ["CXX0015"] helpviewer_keywords: ["CXX0015", "CAN0015"] -ms.assetid: 35efaf77-d578-48d8-bfc5-fdeb2a46a8b5 --- # Expression Evaluator Error CXX0015 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0016.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0016.md index fb491fc71ae..b1707a48dd8 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0016.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0016.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0016" title: "Expression Evaluator Error CXX0016" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0016" +ms.date: 11/04/2016 f1_keywords: ["CXX0016"] helpviewer_keywords: ["CAN0016", "CXX0016"] -ms.assetid: af94a2ae-e835-4da6-8d2f-5c879f72eda2 --- # Expression Evaluator Error CXX0016 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0017.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0017.md index c0243c04360..6c938f71ef0 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0017.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0017.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0017" title: "Expression Evaluator Error CXX0017" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0017" +ms.date: 11/04/2016 f1_keywords: ["CXX0017"] helpviewer_keywords: ["CAN0017", "CXX0017"] -ms.assetid: af74db02-a64d-49ca-8363-3e044a107580 --- # Expression Evaluator Error CXX0017 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0018.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0018.md index d8d13712359..dac98b60f4d 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0018.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0018.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0018" title: "Expression Evaluator Error CXX0018" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0018" +ms.date: 11/04/2016 f1_keywords: ["CXX0018"] helpviewer_keywords: ["CAN0018", "CXX0018"] -ms.assetid: d3d115d6-8981-4651-b615-566de867a263 --- # Expression Evaluator Error CXX0018 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0019.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0019.md index 2d6455f48a6..80ad76d78e5 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0019.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0019.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0019" title: "Expression Evaluator Error CXX0019" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0019" +ms.date: 11/04/2016 f1_keywords: ["CXX0019"] helpviewer_keywords: ["CXX0019", "CAN0019"] -ms.assetid: 4c6431fd-3310-4a61-934d-58b070b330fe --- # Expression Evaluator Error CXX0019 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0020.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0020.md index 29032f0ce51..2b553478ee1 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0020.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0020.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0020" title: "Expression Evaluator Error CXX0020" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0020" +ms.date: 11/04/2016 f1_keywords: ["CXX0020"] helpviewer_keywords: ["CXX0020", "CAN0020"] -ms.assetid: 9dc57c25-e976-44e8-9a4e-db5a79e35bd7 --- # Expression Evaluator Error CXX0020 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0021.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0021.md index 2d860fbae11..1b1bbf92e52 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0021.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0021.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0021" title: "Expression Evaluator Error CXX0021" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0021" +ms.date: 11/04/2016 f1_keywords: ["CXX0021"] helpviewer_keywords: ["CXX0021", "CAN0021"] -ms.assetid: d6c0c35a-16c2-42c0-a7d2-e910350a47f0 --- # Expression Evaluator Error CXX0021 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0022.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0022.md index ff3d1aa6d27..9e22b714a45 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0022.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0022.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0022" title: "Expression Evaluator Error CXX0022" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0022" +ms.date: 11/04/2016 f1_keywords: ["CXX0022"] helpviewer_keywords: ["CXX0022", "CAN0022"] -ms.assetid: f6b299ac-a4ee-492c-bd9f-6fff005bc537 --- # Expression Evaluator Error CXX0022 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0023.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0023.md index a9024dcd116..b052cd60af5 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0023.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0023.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0023" title: "Expression Evaluator Error CXX0023" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0023" +ms.date: 11/04/2016 f1_keywords: ["CXX0023"] helpviewer_keywords: ["CXX0023", "CAN0023"] -ms.assetid: 2de27692-dfb5-433f-82b3-80f118756eec --- # Expression Evaluator Error CXX0023 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0024.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0024.md index b6de68fc800..e43cd889199 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0024.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0024.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0024" title: "Expression Evaluator Error CXX0024" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0024" +ms.date: 11/04/2016 f1_keywords: ["CXX0024"] helpviewer_keywords: ["CXX0024", "CAN0024"] -ms.assetid: eca6adbd-8ff2-4f51-a1cc-a2e9d5d0a47d --- # Expression Evaluator Error CXX0024 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0025.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0025.md index 155304e0595..ed2c8ec0b45 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0025.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0025.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0025" title: "Expression Evaluator Error CXX0025" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0025" +ms.date: 11/04/2016 f1_keywords: ["CXX0025"] helpviewer_keywords: ["CAN0025", "CXX0025"] -ms.assetid: 3e2fb541-63b3-46ac-9f93-3dadb253bcf6 --- # Expression Evaluator Error CXX0025 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0026.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0026.md index c2a18088295..2cc930c9869 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0026.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0026.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0026" title: "Expression Evaluator Error CXX0026" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0026" +ms.date: 11/04/2016 f1_keywords: ["CXX0026"] helpviewer_keywords: ["CXX0026", "CAN0026"] -ms.assetid: b5bc15f2-f179-4b87-ae88-a57e08e43bfa --- # Expression Evaluator Error CXX0026 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0027.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0027.md index 6c6c8830647..d69c9d7659d 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0027.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0027.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0027" title: "Expression Evaluator Error CXX0027" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0027" +ms.date: 11/04/2016 f1_keywords: ["CXX0027"] helpviewer_keywords: ["CAN0027", "CXX0027"] -ms.assetid: 0127cfc0-c292-4923-a58b-25542343cdad --- # Expression Evaluator Error CXX0027 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0028.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0028.md index cdecf73f118..8cfb6900d31 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0028.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0028.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0028" title: "Expression Evaluator Error CXX0028" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0028" +ms.date: 11/04/2016 f1_keywords: ["CXX0028"] helpviewer_keywords: ["CAN0028", "CXX0028"] -ms.assetid: 172eb81f-c0b0-43b1-b418-766f35f1a561 --- # Expression Evaluator Error CXX0028 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0029.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0029.md index c888e70820b..6ca03e1d0e0 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0029.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0029.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0029" title: "Expression Evaluator Error CXX0029" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0029" +ms.date: 11/04/2016 f1_keywords: ["CXX0029"] helpviewer_keywords: ["CXX0029", "CAN0029"] -ms.assetid: 562b2132-e9cb-4591-a5bf-bc7179a7f40e --- # Expression Evaluator Error CXX0029 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0030.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0030.md index c5b68d59e49..8c980d87cca 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0030.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0030.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0030" title: "Expression Evaluator Error CXX0030" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0030" +ms.date: 11/04/2016 f1_keywords: ["CXX0030"] helpviewer_keywords: ["CAN0030", "CXX0030"] -ms.assetid: ada8b48c-09c8-49bf-ae23-313ed663c4fe --- # Expression Evaluator Error CXX0030 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0031.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0031.md index efe7dc7b4aa..6b95122dad0 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0031.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0031.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0031" title: "Expression Evaluator Error CXX0031" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0031" +ms.date: 11/04/2016 f1_keywords: ["CXX0031"] helpviewer_keywords: ["CAN0031", "CXX0031"] -ms.assetid: adafbcb7-982f-495f-a34d-72e95d7e54c7 --- # Expression Evaluator Error CXX0031 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0032.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0032.md index b6366d55d12..505f99fbb2b 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0032.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0032.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0032" title: "Expression Evaluator Error CXX0032" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0032" +ms.date: 11/04/2016 f1_keywords: ["CXX0032"] helpviewer_keywords: ["CXX0032", "CAN0032"] -ms.assetid: 78f56977-6b6d-42e2-b71d-c392525bb18b --- # Expression Evaluator Error CXX0032 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0033.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0033.md index 8f42f3539c1..759e150bbef 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0033.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0033.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0033" title: "Expression Evaluator Error CXX0033" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0033" +ms.date: 11/04/2016 f1_keywords: ["CXX0033"] helpviewer_keywords: ["CAN0033", "CXX0033"] -ms.assetid: 0bd62c5b-de89-481f-9b12-88fe84805afe --- # Expression Evaluator Error CXX0033 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0034.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0034.md index dedf3a6ee43..ef6ccecab13 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0034.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0034.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0034" title: "Expression Evaluator Error CXX0034" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0034" +ms.date: 11/04/2016 f1_keywords: ["CXX0034"] helpviewer_keywords: ["CAN0034", "CXX0034"] -ms.assetid: afcee5f1-beff-489f-aea6-04f55e76364f --- # Expression Evaluator Error CXX0034 From 8cdb0e37b76322a7cd4426a8ffd227b819c84798 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 9 Sep 2025 01:06:25 +0800 Subject: [PATCH 1762/2255] Add blockquotes for error messages in range [CXX0035, CXX0072] --- .../tool-errors/expression-evaluator-error-cxx0036.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0037.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0038.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0039.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0040.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0041.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0043.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0044.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0045.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0046.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0047.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0048.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0049.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0050.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0051.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0052.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0053.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0054.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0055.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0056.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0057.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0058.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0059.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0060.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0061.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0062.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0063.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0064.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0065.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0066.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0067.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0069.md | 2 +- .../tool-errors/expression-evaluator-error-cxx0072.md | 2 +- 33 files changed, 33 insertions(+), 33 deletions(-) diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0036.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0036.md index 6c86cd2b0b7..d63434e3e68 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0036.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0036.md @@ -8,7 +8,7 @@ ms.assetid: 383404be-df5b-4eec-b113-df21bb5d269d --- # Expression Evaluator Error CXX0036 -bad context {...} specification +> bad context {...} specification This message can be generated by any of several errors in the use of the context operator (**{}**). diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0037.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0037.md index 48e93579abb..b2176e3b020 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0037.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0037.md @@ -8,7 +8,7 @@ ms.assetid: 8059ad65-78b7-465a-98fa-387fd5873ea6 --- # Expression Evaluator Error CXX0037 -out of memory +> out of memory The C expression evaluator ran out of memory evaluating the expression. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0038.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0038.md index 51969d57d34..c9db043cc13 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0038.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0038.md @@ -8,7 +8,7 @@ ms.assetid: 3327dc4e-1726-4924-a519-6ffd766a389c --- # Expression Evaluator Error CXX0038 -function argument count and/or type mismatch +> function argument count and/or type mismatch The function call as specified does not match the prototype for the function. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0039.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0039.md index 8b0274bd435..54a3d5b7d59 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0039.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0039.md @@ -8,7 +8,7 @@ ms.assetid: 8bf698d2-e015-4595-944f-72b81aa43d22 --- # Expression Evaluator Error CXX0039 -symbol is ambiguous +> symbol is ambiguous The C expression evaluator cannot determine which instance of a symbol to use in an expression. The symbol occurs more than once in the inheritance tree. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0040.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0040.md index b1cb02f95b6..fc8dd2fa3cd 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0040.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0040.md @@ -8,7 +8,7 @@ ms.assetid: 1914e605-d80b-4abc-9e8f-dbcbefec095b --- # Expression Evaluator Error CXX0040 -function requires implicit conversion +> function requires implicit conversion The C expression evaluator does not support implicit conversions involving constructor calls. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0041.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0041.md index cd956d21484..21959b1c2fb 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0041.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0041.md @@ -8,7 +8,7 @@ ms.assetid: ce8a2366-758f-481b-8c03-ed7d779091b2 --- # Expression Evaluator Error CXX0041 -class element must be static member or member function +> class element must be static member or member function A nonstatic member of a class (or structure or union) was used without specifying which instantiation of the class to use. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0043.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0043.md index 9ee2d06229f..5af4e5e1621 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0043.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0043.md @@ -8,7 +8,7 @@ ms.assetid: 5e5d55bb-0f3e-40e6-b3c3-d0dfb701a65c --- # Expression Evaluator Error CXX0043 -this pointer used outside member function +> this pointer used outside member function The **`this`** pointer can only be used for nonstatic member functions. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0044.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0044.md index b71528aecc9..8ef40fa35b0 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0044.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0044.md @@ -8,7 +8,7 @@ ms.assetid: d59868b5-c1ec-46ac-91d6-5d575a4d6b49 --- # Expression Evaluator Error CXX0044 -use of _based(void) pointer requires :> operator +> use of _based(void) pointer requires :> operator A pointer based on **`void`** cannot be used directly. You must form a complete pointer using the **:>** operator. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0045.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0045.md index b6e4004e883..01067595a10 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0045.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0045.md @@ -8,7 +8,7 @@ ms.assetid: 32181bc8-e79c-4ad7-a82f-47c62ec06d7d --- # Expression Evaluator Error CXX0045 -not a function +> not a function An argument list was supplied for a symbol in the program that is not the name of a function. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0046.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0046.md index cd6e216b644..3df7f9dac49 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0046.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0046.md @@ -8,7 +8,7 @@ ms.assetid: a76e657b-c018-415b-b426-ce9e72eb645d --- # Expression Evaluator Error CXX0046 -argument list required for member function +> argument list required for member function An expression called a member function but did not specify any actual parameters. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0047.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0047.md index 09112a2f074..a205dc40cb2 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0047.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0047.md @@ -8,7 +8,7 @@ ms.assetid: db23d0db-fce2-4d86-b391-6e1d6ad13fd4 --- # Expression Evaluator Error CXX0047 -argument list does not match a function +> argument list does not match a function An expression called a function with an actual parameter list that did not match the formal parameter list of any function with the same name defined in the program. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0048.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0048.md index 5effef18e61..53b46ff8915 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0048.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0048.md @@ -8,7 +8,7 @@ ms.assetid: 294416f9-5e38-4450-8713-c13bcbaaf615 --- # Expression Evaluator Error CXX0048 -calling sequence not supported +> calling sequence not supported A function specified in the expression uses a calling sequence not supported by the C expression evaluator. You cannot call this function in a Watch window expression. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0049.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0049.md index 621a8825611..76632478896 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0049.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0049.md @@ -8,7 +8,7 @@ ms.assetid: 6dcfece4-39ed-489d-b7be-2a17c7b94656 --- # Expression Evaluator Error CXX0049 -obsolete OMF - please relink program +> obsolete OMF - please relink program The program used an old OMF (Object Module Format). diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0050.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0050.md index e096ec70438..bf67b72b6b3 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0050.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0050.md @@ -8,7 +8,7 @@ ms.assetid: 214cd193-c6dc-41b9-9ebe-5a4b1689d3ab --- # Expression Evaluator Error CXX0050 -left side of :: must be class/struct/union +> left side of :: must be class/struct/union The symbol on the left side of the scope-resolution operator (`::`) was not a class, structure, or union. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0051.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0051.md index 5b1d1ec0327..5d55ddcd237 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0051.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0051.md @@ -8,7 +8,7 @@ ms.assetid: 031cd2ed-d9bb-4aa5-9858-71581bcca49c --- # Expression Evaluator Error CXX0051 -more than one overloaded symbol specified in breakpoint +> more than one overloaded symbol specified in breakpoint The expression evaluator could not determine which of more than one overloaded symbol to use as a breakpoint. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0052.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0052.md index d8b78b97660..9f16d0e5700 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0052.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0052.md @@ -8,7 +8,7 @@ ms.assetid: 5060d479-d0a4-4682-b858-c8b9a4f324e6 --- # Expression Evaluator Error CXX0052 -member function not present +> member function not present A member function was specified as a breakpoint but could not be found. Setting a breakpoint at a function that has been inlined can cause this error. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0053.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0053.md index 7760402f7fc..03f42933f02 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0053.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0053.md @@ -8,7 +8,7 @@ ms.assetid: fe74ed9e-9241-4df1-881f-104348e296c6 --- # Expression Evaluator Error CXX0053 -nonfunction symbol match while binding breakpoints +> nonfunction symbol match while binding breakpoints A symbol used as a breakpoint was not a function. Specifying a data member as a breakpoint can cause this error. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0054.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0054.md index 2e504742e30..8dee786cd44 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0054.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0054.md @@ -8,7 +8,7 @@ ms.assetid: d5d4a093-6a7a-45c0-8aa7-e555023353ef --- # Expression Evaluator Error CXX0054 -register in breakpoint expression illegal +> register in breakpoint expression illegal A register cannot be used in a breakpoint expression. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0055.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0055.md index 3a625d08968..4566389abda 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0055.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0055.md @@ -8,7 +8,7 @@ ms.assetid: bb2a81f9-35ea-4b02-a49e-6b2c7023aebd --- # Expression Evaluator Error CXX0055 -ambiguous symbol in context operator +> ambiguous symbol in context operator A symbol in the context operator (**{}**) referred to more than one symbol in the program. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0056.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0056.md index 5c0937c856a..0ff346c7f6a 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0056.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0056.md @@ -8,7 +8,7 @@ ms.assetid: a67c90e0-933c-43f2-a548-0ba272920331 --- # Expression Evaluator Error CXX0056 -error in line number +> error in line number An invalid line number was specified. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0057.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0057.md index b3fec54b4e8..13af4b1b29a 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0057.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0057.md @@ -8,7 +8,7 @@ ms.assetid: b1a86998-c642-4061-9f37-9c493f3852cc --- # Expression Evaluator Error CXX0057 -no code at line number +> no code at line number No code was generated for the specified line number. It cannot be used as a breakpoint. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0058.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0058.md index 01b1de640fd..fddcd2927c7 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0058.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0058.md @@ -8,7 +8,7 @@ ms.assetid: b6246c6e-5845-4ad5-ac2a-e6c4faf8f3f9 --- # Expression Evaluator Error CXX0058 -overloaded operator not found +> overloaded operator not found A class type was specified as the left operand in an expression, but an overloaded operator was not defined for the class. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0059.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0059.md index bf9ea31ecda..c7b074e6873 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0059.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0059.md @@ -8,7 +8,7 @@ ms.assetid: e8bdcb74-1315-4083-b24d-e47eac7d1ec0 --- # Expression Evaluator Error CXX0059 -left operand is class not a function name +> left operand is class not a function name The left operand of a function call was a class name and could not be resolved to a function call. Omitting the name of a member function in an expression can cause this error. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0060.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0060.md index d4796731c77..068aee4fc13 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0060.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0060.md @@ -8,7 +8,7 @@ ms.assetid: 40c0ff02-ca6b-4232-b1e3-1f3a213ee2a3 --- # Expression Evaluator Error CXX0060 -register is not available +> register is not available An expression specified a register that cannot be used. This error can be caused by trying to access a register that does not exist on the machine running. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0061.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0061.md index 7afc6294ae4..6d5e6dc49db 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0061.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0061.md @@ -8,7 +8,7 @@ ms.assetid: fa84dcca-87ef-4546-9dce-636ed39e0713 --- # Expression Evaluator Error CXX0061 -function nesting depth exceeded +> function nesting depth exceeded The expression contains a function nesting depth greater than the limit. Modify the expression to reduce the nesting depth. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0062.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0062.md index 72ec432ce17..93a15834081 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0062.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0062.md @@ -8,7 +8,7 @@ ms.assetid: 8e4165c4-7753-4f45-90e9-4542cbb9fc7a --- # Expression Evaluator Error CXX0062 -constructor calls not supported +> constructor calls not supported An expression made a call to a constructor. Expressions cannot make explicit calls to constructors or make conversions that require a call to a constructor. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0063.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0063.md index 34e824c32bd..62ed2824402 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0063.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0063.md @@ -8,7 +8,7 @@ ms.assetid: 2e131b7a-9c8f-4aa1-acac-8d87f602c24c --- # Expression Evaluator Error CXX0063 -overloaded operator -> not supported +> overloaded operator -> not supported The expression used an overloaded class member access operator (**->**). diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0064.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0064.md index 74c67df4ac8..f6d9e630c13 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0064.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0064.md @@ -8,7 +8,7 @@ ms.assetid: aa509e71-0616-41ca-a94e-6c376b041e57 --- # Expression Evaluator Error CXX0064 -can't set breakpoint on bound virtual member function +> can't set breakpoint on bound virtual member function A breakpoint was set on a virtual member function through a pointer to an object, such as: diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0065.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0065.md index f768cdc47b6..7eea5413b94 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0065.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0065.md @@ -8,7 +8,7 @@ ms.assetid: aac68f87-0b90-4c19-afa6-1c587625a5fd --- # Expression Evaluator Error CXX0065 -variable needs stack frame +> variable needs stack frame An expression contained a variable that exists within the current scope but hasn't been created yet. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0066.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0066.md index 0ef4bf1d8c0..0bec4bde65f 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0066.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0066.md @@ -8,7 +8,7 @@ ms.assetid: 1321e4e1-b441-424b-9e76-c208d4a6f6ea --- # Expression Evaluator Error CXX0066 -static member not present +> static member not present A static member of a class could not be found or was not defined. This error can result from a static class member that is declared but not defined, or is only defined and referenced in modules that do not contain debug information. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0067.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0067.md index daa7e12991d..adfef37dc35 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0067.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0067.md @@ -8,7 +8,7 @@ ms.assetid: 9a3e642b-4746-41ac-b665-bd98a6fa0cb3 --- # Expression Evaluator Error CXX0067 -function evaluation not supported +> function evaluation not supported The expression contained a function call. Some expression evaluators do not support function calls. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0069.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0069.md index 70808d356e4..153e183ef87 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0069.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0069.md @@ -8,6 +8,6 @@ ms.assetid: cf334b23-1e17-4d37-acc5-18597ee84164 --- # Expression Evaluator Error CXX0069 -variable needs stack frame +> variable needs stack frame The expression evaluator cannot evaluate the variable because it does not occur in a stack frame. This may be caused by variables declared as part of an inline function. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0072.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0072.md index b731c03e1db..0d8aa7c2c46 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0072.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0072.md @@ -8,7 +8,7 @@ ms.assetid: fd04e197-cfa9-4097-a070-8fa2111e876d --- # Expression Evaluator Error CXX0072 -Error: type information missing or unknown +> Error: type information missing or unknown The .pch file did not get linked in, or the code has a reference to a type that is in a module not compiled with /Zi. From 22fad926f43abbdea47fb8f8fa29906b2a452df0 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 9 Sep 2025 01:11:54 +0800 Subject: [PATCH 1763/2255] Add "Remarks" and "Example" headings for error references in range [CXX0035, CXX0072] --- .../tool-errors/expression-evaluator-error-cxx0036.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0037.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0038.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0039.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0040.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0041.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0043.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0044.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0045.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0046.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0047.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0048.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0049.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0050.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0051.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0052.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0053.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0054.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0055.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0056.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0057.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0058.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0059.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0060.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0061.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0062.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0063.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0064.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0065.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0066.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0067.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0069.md | 2 ++ .../tool-errors/expression-evaluator-error-cxx0072.md | 2 ++ 33 files changed, 66 insertions(+) diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0036.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0036.md index d63434e3e68..cf4ab72f2e0 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0036.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0036.md @@ -10,6 +10,8 @@ ms.assetid: 383404be-df5b-4eec-b113-df21bb5d269d > bad context {...} specification +## Remarks + This message can be generated by any of several errors in the use of the context operator (**{}**). - The syntax of the context operator (**{}**) was given incorrectly. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0037.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0037.md index b2176e3b020..02bb07d5f4d 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0037.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0037.md @@ -10,6 +10,8 @@ ms.assetid: 8059ad65-78b7-465a-98fa-387fd5873ea6 > out of memory +## Remarks + The C expression evaluator ran out of memory evaluating the expression. This error is identical to CAN0037. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0038.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0038.md index c9db043cc13..823128b2f46 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0038.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0038.md @@ -10,6 +10,8 @@ ms.assetid: 3327dc4e-1726-4924-a519-6ffd766a389c > function argument count and/or type mismatch +## Remarks + The function call as specified does not match the prototype for the function. Retype the call with the correct number of arguments. Type cast each argument to match the prototype, as necessary. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0039.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0039.md index 54a3d5b7d59..16f5c992f33 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0039.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0039.md @@ -10,6 +10,8 @@ ms.assetid: 8bf698d2-e015-4595-944f-72b81aa43d22 > symbol is ambiguous +## Remarks + The C expression evaluator cannot determine which instance of a symbol to use in an expression. The symbol occurs more than once in the inheritance tree. You must use the scope resolution operator (`::`) to explicitly specify the instance to use in the expression. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0040.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0040.md index fc8dd2fa3cd..1d7d86afb9e 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0040.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0040.md @@ -10,6 +10,8 @@ ms.assetid: 1914e605-d80b-4abc-9e8f-dbcbefec095b > function requires implicit conversion +## Remarks + The C expression evaluator does not support implicit conversions involving constructor calls. This error is identical to CAN0040. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0041.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0041.md index 21959b1c2fb..6d23ee2c700 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0041.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0041.md @@ -10,6 +10,8 @@ ms.assetid: ce8a2366-758f-481b-8c03-ed7d779091b2 > class element must be static member or member function +## Remarks + A nonstatic member of a class (or structure or union) was used without specifying which instantiation of the class to use. Only static data members or member functions can be used without specifying an instantiation. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0043.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0043.md index 5af4e5e1621..c2cb481141d 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0043.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0043.md @@ -10,6 +10,8 @@ ms.assetid: 5e5d55bb-0f3e-40e6-b3c3-d0dfb701a65c > this pointer used outside member function +## Remarks + The **`this`** pointer can only be used for nonstatic member functions. This error is identical to CAN0043. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0044.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0044.md index 8ef40fa35b0..7d3afba1dd8 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0044.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0044.md @@ -10,6 +10,8 @@ ms.assetid: d59868b5-c1ec-46ac-91d6-5d575a4d6b49 > use of _based(void) pointer requires :> operator +## Remarks + A pointer based on **`void`** cannot be used directly. You must form a complete pointer using the **:>** operator. This error is identical to CAN0044. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0045.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0045.md index 01067595a10..a4230c53897 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0045.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0045.md @@ -10,6 +10,8 @@ ms.assetid: 32181bc8-e79c-4ad7-a82f-47c62ec06d7d > not a function +## Remarks + An argument list was supplied for a symbol in the program that is not the name of a function. ## Example diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0046.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0046.md index 3df7f9dac49..79f16aa7e61 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0046.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0046.md @@ -10,6 +10,8 @@ ms.assetid: a76e657b-c018-415b-b426-ce9e72eb645d > argument list required for member function +## Remarks + An expression called a member function but did not specify any actual parameters. This error is identical to CAN0046. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0047.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0047.md index a205dc40cb2..8b9820d1fcf 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0047.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0047.md @@ -10,6 +10,8 @@ ms.assetid: db23d0db-fce2-4d86-b391-6e1d6ad13fd4 > argument list does not match a function +## Remarks + An expression called a function with an actual parameter list that did not match the formal parameter list of any function with the same name defined in the program. Overloaded functions can be called only if there is an exact parameter match or a match that does not require the construction of an object. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0048.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0048.md index 53b46ff8915..5e740cc54ee 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0048.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0048.md @@ -10,6 +10,8 @@ ms.assetid: 294416f9-5e38-4450-8713-c13bcbaaf615 > calling sequence not supported +## Remarks + A function specified in the expression uses a calling sequence not supported by the C expression evaluator. You cannot call this function in a Watch window expression. This error is identical to CAN0048. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0049.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0049.md index 76632478896..353545e736f 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0049.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0049.md @@ -10,6 +10,8 @@ ms.assetid: 6dcfece4-39ed-489d-b7be-2a17c7b94656 > obsolete OMF - please relink program +## Remarks + The program used an old OMF (Object Module Format). Relink the program using the current linker version. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0050.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0050.md index bf67b72b6b3..a04eb67bbeb 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0050.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0050.md @@ -10,6 +10,8 @@ ms.assetid: 214cd193-c6dc-41b9-9ebe-5a4b1689d3ab > left side of :: must be class/struct/union +## Remarks + The symbol on the left side of the scope-resolution operator (`::`) was not a class, structure, or union. This error is identical to CAN0050. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0051.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0051.md index 5d55ddcd237..4038a36aa14 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0051.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0051.md @@ -10,6 +10,8 @@ ms.assetid: 031cd2ed-d9bb-4aa5-9858-71581bcca49c > more than one overloaded symbol specified in breakpoint +## Remarks + The expression evaluator could not determine which of more than one overloaded symbol to use as a breakpoint. This error is identical to CAN0051. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0052.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0052.md index 9f16d0e5700..68560cbaf06 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0052.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0052.md @@ -10,6 +10,8 @@ ms.assetid: 5060d479-d0a4-4682-b858-c8b9a4f324e6 > member function not present +## Remarks + A member function was specified as a breakpoint but could not be found. Setting a breakpoint at a function that has been inlined can cause this error. Recompile the file with inlining forced off (/Ob0) to set a breakpoint in this function. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0053.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0053.md index 03f42933f02..857f6f1d024 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0053.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0053.md @@ -10,6 +10,8 @@ ms.assetid: fe74ed9e-9241-4df1-881f-104348e296c6 > nonfunction symbol match while binding breakpoints +## Remarks + A symbol used as a breakpoint was not a function. Specifying a data member as a breakpoint can cause this error. This error is identical to CAN0053. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0054.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0054.md index 8dee786cd44..d794c5b267f 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0054.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0054.md @@ -10,6 +10,8 @@ ms.assetid: d5d4a093-6a7a-45c0-8aa7-e555023353ef > register in breakpoint expression illegal +## Remarks + A register cannot be used in a breakpoint expression. This error is identical to CAN0054. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0055.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0055.md index 4566389abda..20b6a9b4de6 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0055.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0055.md @@ -10,6 +10,8 @@ ms.assetid: bb2a81f9-35ea-4b02-a49e-6b2c7023aebd > ambiguous symbol in context operator +## Remarks + A symbol in the context operator (**{}**) referred to more than one symbol in the program. The scope resolution operator (`::`) may be able to resolve the ambiguity. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0056.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0056.md index 0ff346c7f6a..853d62a5cd8 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0056.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0056.md @@ -10,6 +10,8 @@ ms.assetid: a67c90e0-933c-43f2-a548-0ba272920331 > error in line number +## Remarks + An invalid line number was specified. This error is identical to CAN0056. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0057.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0057.md index 13af4b1b29a..9b63f8643e9 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0057.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0057.md @@ -10,6 +10,8 @@ ms.assetid: b1a86998-c642-4061-9f37-9c493f3852cc > no code at line number +## Remarks + No code was generated for the specified line number. It cannot be used as a breakpoint. This error is identical to CAN0057. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0058.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0058.md index fddcd2927c7..53866dbe0dd 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0058.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0058.md @@ -10,6 +10,8 @@ ms.assetid: b6246c6e-5845-4ad5-ac2a-e6c4faf8f3f9 > overloaded operator not found +## Remarks + A class type was specified as the left operand in an expression, but an overloaded operator was not defined for the class. This error is identical to CAN0058. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0059.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0059.md index c7b074e6873..53da2c611aa 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0059.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0059.md @@ -10,6 +10,8 @@ ms.assetid: e8bdcb74-1315-4083-b24d-e47eac7d1ec0 > left operand is class not a function name +## Remarks + The left operand of a function call was a class name and could not be resolved to a function call. Omitting the name of a member function in an expression can cause this error. This error is identical to CAN0059. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0060.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0060.md index 068aee4fc13..00c18c9ef18 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0060.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0060.md @@ -10,6 +10,8 @@ ms.assetid: 40c0ff02-ca6b-4232-b1e3-1f3a213ee2a3 > register is not available +## Remarks + An expression specified a register that cannot be used. This error can be caused by trying to access a register that does not exist on the machine running. This error is identical to CAN0060. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0061.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0061.md index 6d5e6dc49db..da09df79e34 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0061.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0061.md @@ -10,6 +10,8 @@ ms.assetid: fa84dcca-87ef-4546-9dce-636ed39e0713 > function nesting depth exceeded +## Remarks + The expression contains a function nesting depth greater than the limit. Modify the expression to reduce the nesting depth. This error is identical to CAN0061. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0062.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0062.md index 93a15834081..a91c8cab401 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0062.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0062.md @@ -10,6 +10,8 @@ ms.assetid: 8e4165c4-7753-4f45-90e9-4542cbb9fc7a > constructor calls not supported +## Remarks + An expression made a call to a constructor. Expressions cannot make explicit calls to constructors or make conversions that require a call to a constructor. This error is identical to CAN0062. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0063.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0063.md index 62ed2824402..b931d856259 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0063.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0063.md @@ -10,6 +10,8 @@ ms.assetid: 2e131b7a-9c8f-4aa1-acac-8d87f602c24c > overloaded operator -> not supported +## Remarks + The expression used an overloaded class member access operator (**->**). This error is identical to CAN0063. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0064.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0064.md index f6d9e630c13..321f7d3cf7a 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0064.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0064.md @@ -10,6 +10,8 @@ ms.assetid: aa509e71-0616-41ca-a94e-6c376b041e57 > can't set breakpoint on bound virtual member function +## Example + A breakpoint was set on a virtual member function through a pointer to an object, such as: ``` diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0065.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0065.md index 7eea5413b94..43bb69b19e7 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0065.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0065.md @@ -10,6 +10,8 @@ ms.assetid: aac68f87-0b90-4c19-afa6-1c587625a5fd > variable needs stack frame +## Remarks + An expression contained a variable that exists within the current scope but hasn't been created yet. This error can occur when you have stepped into the prolog of a function but not yet set up the stack frame for the function, or if you have stepped into the exit code for the function. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0066.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0066.md index 0bec4bde65f..3fc027592b8 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0066.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0066.md @@ -10,6 +10,8 @@ ms.assetid: 1321e4e1-b441-424b-9e76-c208d4a6f6ea > static member not present +## Remarks + A static member of a class could not be found or was not defined. This error can result from a static class member that is declared but not defined, or is only defined and referenced in modules that do not contain debug information. This error is identical to CAN0066. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0067.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0067.md index adfef37dc35..d95be75387a 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0067.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0067.md @@ -10,6 +10,8 @@ ms.assetid: 9a3e642b-4746-41ac-b665-bd98a6fa0cb3 > function evaluation not supported +## Remarks + The expression contained a function call. Some expression evaluators do not support function calls. This error is identical to CAN0067. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0069.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0069.md index 153e183ef87..d1c67ddc974 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0069.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0069.md @@ -10,4 +10,6 @@ ms.assetid: cf334b23-1e17-4d37-acc5-18597ee84164 > variable needs stack frame +## Remarks + The expression evaluator cannot evaluate the variable because it does not occur in a stack frame. This may be caused by variables declared as part of an inline function. diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0072.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0072.md index 0d8aa7c2c46..61166349bac 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0072.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0072.md @@ -10,6 +10,8 @@ ms.assetid: fd04e197-cfa9-4097-a070-8fa2111e876d > Error: type information missing or unknown +## Remarks + The .pch file did not get linked in, or the code has a reference to a type that is in a module not compiled with /Zi. This error is identical to CAN0067. From 3f46b4b6897cd93263382bc608b1a9e2a8d1e7b3 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 9 Sep 2025 01:16:20 +0800 Subject: [PATCH 1764/2255] Update metadata for error references in range [CXX0035, CXX0072] --- .../tool-errors/expression-evaluator-error-cxx0036.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0037.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0038.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0039.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0040.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0041.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0043.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0044.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0045.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0046.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0047.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0048.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0049.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0050.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0051.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0052.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0053.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0054.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0055.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0056.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0057.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0058.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0059.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0060.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0061.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0062.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0063.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0064.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0065.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0066.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0067.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0069.md | 5 ++--- .../tool-errors/expression-evaluator-error-cxx0072.md | 5 ++--- 33 files changed, 66 insertions(+), 99 deletions(-) diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0036.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0036.md index cf4ab72f2e0..d9f203ab553 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0036.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0036.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0036" title: "Expression Evaluator Error CXX0036" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0036" +ms.date: 11/04/2016 f1_keywords: ["CXX0036"] helpviewer_keywords: ["CXX0036", "CAN0036"] -ms.assetid: 383404be-df5b-4eec-b113-df21bb5d269d --- # Expression Evaluator Error CXX0036 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0037.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0037.md index 02bb07d5f4d..f09a73432f8 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0037.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0037.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0037" title: "Expression Evaluator Error CXX0037" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0037" +ms.date: 11/04/2016 f1_keywords: ["CXX0037"] helpviewer_keywords: ["CAN0037", "CXX0037"] -ms.assetid: 8059ad65-78b7-465a-98fa-387fd5873ea6 --- # Expression Evaluator Error CXX0037 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0038.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0038.md index 823128b2f46..e1dfdca5443 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0038.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0038.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0038" title: "Expression Evaluator Error CXX0038" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0038" +ms.date: 11/04/2016 f1_keywords: ["CXX0038"] helpviewer_keywords: ["CXX0038", "CAN0038"] -ms.assetid: 3327dc4e-1726-4924-a519-6ffd766a389c --- # Expression Evaluator Error CXX0038 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0039.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0039.md index 16f5c992f33..b6aeebdb00f 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0039.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0039.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0039" title: "Expression Evaluator Error CXX0039" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0039" +ms.date: 11/04/2016 f1_keywords: ["CXX0039"] helpviewer_keywords: ["CXX0039", "CAN0039"] -ms.assetid: 8bf698d2-e015-4595-944f-72b81aa43d22 --- # Expression Evaluator Error CXX0039 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0040.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0040.md index 1d7d86afb9e..448fd76bc9e 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0040.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0040.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0040" title: "Expression Evaluator Error CXX0040" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0040" +ms.date: 11/04/2016 f1_keywords: ["CXX0040"] helpviewer_keywords: ["CXX0040", "CAN0040"] -ms.assetid: 1914e605-d80b-4abc-9e8f-dbcbefec095b --- # Expression Evaluator Error CXX0040 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0041.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0041.md index 6d23ee2c700..37a50b38381 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0041.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0041.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0041" title: "Expression Evaluator Error CXX0041" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0041" +ms.date: 11/04/2016 f1_keywords: ["CXX0041"] helpviewer_keywords: ["CAN0041", "CXX0041"] -ms.assetid: ce8a2366-758f-481b-8c03-ed7d779091b2 --- # Expression Evaluator Error CXX0041 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0043.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0043.md index c2cb481141d..97a455ab4d8 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0043.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0043.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0043" title: "Expression Evaluator Error CXX0043" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0043" +ms.date: 11/04/2016 f1_keywords: ["CXX0043"] helpviewer_keywords: ["CXX0043", "CAN0043"] -ms.assetid: 5e5d55bb-0f3e-40e6-b3c3-d0dfb701a65c --- # Expression Evaluator Error CXX0043 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0044.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0044.md index 7d3afba1dd8..ebb048927d8 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0044.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0044.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0044" title: "Expression Evaluator Error CXX0044" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0044" +ms.date: 11/04/2016 f1_keywords: ["CXX0044"] helpviewer_keywords: ["CXX0044", "CAN0044"] -ms.assetid: d59868b5-c1ec-46ac-91d6-5d575a4d6b49 --- # Expression Evaluator Error CXX0044 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0045.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0045.md index a4230c53897..1bf5578f642 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0045.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0045.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0045" title: "Expression Evaluator Error CXX0045" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0045" +ms.date: 11/04/2016 f1_keywords: ["CXX0045"] helpviewer_keywords: ["CXX0045", "CAN0045"] -ms.assetid: 32181bc8-e79c-4ad7-a82f-47c62ec06d7d --- # Expression Evaluator Error CXX0045 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0046.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0046.md index 79f16aa7e61..e3d1398c1d7 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0046.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0046.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0046" title: "Expression Evaluator Error CXX0046" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0046" +ms.date: 11/04/2016 f1_keywords: ["CXX0046"] helpviewer_keywords: ["CXX0046", "CAN0046"] -ms.assetid: a76e657b-c018-415b-b426-ce9e72eb645d --- # Expression Evaluator Error CXX0046 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0047.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0047.md index 8b9820d1fcf..ac89429f3cf 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0047.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0047.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0047" title: "Expression Evaluator Error CXX0047" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0047" +ms.date: 11/04/2016 f1_keywords: ["CXX0047"] helpviewer_keywords: ["CAN0047", "CXX0047"] -ms.assetid: db23d0db-fce2-4d86-b391-6e1d6ad13fd4 --- # Expression Evaluator Error CXX0047 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0048.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0048.md index 5e740cc54ee..c081babcfb8 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0048.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0048.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0048" title: "Expression Evaluator Error CXX0048" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0048" +ms.date: 11/04/2016 f1_keywords: ["CXX0048"] helpviewer_keywords: ["CAN0048", "CXX0048"] -ms.assetid: 294416f9-5e38-4450-8713-c13bcbaaf615 --- # Expression Evaluator Error CXX0048 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0049.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0049.md index 353545e736f..a064fa348cd 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0049.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0049.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0049" title: "Expression Evaluator Error CXX0049" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0049" +ms.date: 11/04/2016 f1_keywords: ["CXX0049"] helpviewer_keywords: ["CXX0049", "CAN0049"] -ms.assetid: 6dcfece4-39ed-489d-b7be-2a17c7b94656 --- # Expression Evaluator Error CXX0049 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0050.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0050.md index a04eb67bbeb..689436e2b00 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0050.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0050.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0050" title: "Expression Evaluator Error CXX0050" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0050" +ms.date: 11/04/2016 f1_keywords: ["CXX0050"] helpviewer_keywords: ["CAN0050", "CXX0050"] -ms.assetid: 214cd193-c6dc-41b9-9ebe-5a4b1689d3ab --- # Expression Evaluator Error CXX0050 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0051.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0051.md index 4038a36aa14..fc6eec58a37 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0051.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0051.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0051" title: "Expression Evaluator Error CXX0051" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0051" +ms.date: 11/04/2016 f1_keywords: ["CXX0051"] helpviewer_keywords: ["CAN0051", "CXX0051"] -ms.assetid: 031cd2ed-d9bb-4aa5-9858-71581bcca49c --- # Expression Evaluator Error CXX0051 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0052.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0052.md index 68560cbaf06..dc68472dc00 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0052.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0052.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0052" title: "Expression Evaluator Error CXX0052" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0052" +ms.date: 11/04/2016 f1_keywords: ["CXX0052"] helpviewer_keywords: ["CXX0052", "CAN0052"] -ms.assetid: 5060d479-d0a4-4682-b858-c8b9a4f324e6 --- # Expression Evaluator Error CXX0052 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0053.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0053.md index 857f6f1d024..377bf54a6d7 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0053.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0053.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0053" title: "Expression Evaluator Error CXX0053" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0053" +ms.date: 11/04/2016 f1_keywords: ["CXX0053"] helpviewer_keywords: ["CAN0053", "CXX0053"] -ms.assetid: fe74ed9e-9241-4df1-881f-104348e296c6 --- # Expression Evaluator Error CXX0053 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0054.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0054.md index d794c5b267f..d8c42073585 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0054.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0054.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0054" title: "Expression Evaluator Error CXX0054" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0054" +ms.date: 11/04/2016 f1_keywords: ["CXX0054"] helpviewer_keywords: ["CXX0054", "CAN0054"] -ms.assetid: d5d4a093-6a7a-45c0-8aa7-e555023353ef --- # Expression Evaluator Error CXX0054 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0055.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0055.md index 20b6a9b4de6..c0539bf5118 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0055.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0055.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0055" title: "Expression Evaluator Error CXX0055" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0055" +ms.date: 11/04/2016 f1_keywords: ["CXX0055"] helpviewer_keywords: ["CAN0055", "CXX0055"] -ms.assetid: bb2a81f9-35ea-4b02-a49e-6b2c7023aebd --- # Expression Evaluator Error CXX0055 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0056.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0056.md index 853d62a5cd8..2c5f48a2a20 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0056.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0056.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0056" title: "Expression Evaluator Error CXX0056" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0056" +ms.date: 11/04/2016 f1_keywords: ["CXX0056"] helpviewer_keywords: ["CXX0056", "CAN0056"] -ms.assetid: a67c90e0-933c-43f2-a548-0ba272920331 --- # Expression Evaluator Error CXX0056 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0057.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0057.md index 9b63f8643e9..5b31455260d 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0057.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0057.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0057" title: "Expression Evaluator Error CXX0057" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0057" +ms.date: 11/04/2016 f1_keywords: ["CXX0057"] helpviewer_keywords: ["CAN0057", "CXX0057"] -ms.assetid: b1a86998-c642-4061-9f37-9c493f3852cc --- # Expression Evaluator Error CXX0057 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0058.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0058.md index 53866dbe0dd..e96576696fb 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0058.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0058.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0058" title: "Expression Evaluator Error CXX0058" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0058" +ms.date: 11/04/2016 f1_keywords: ["CXX0058"] helpviewer_keywords: ["CXX0058", "CAN0058"] -ms.assetid: b6246c6e-5845-4ad5-ac2a-e6c4faf8f3f9 --- # Expression Evaluator Error CXX0058 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0059.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0059.md index 53da2c611aa..67c0a953c68 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0059.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0059.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0059" title: "Expression Evaluator Error CXX0059" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0059" +ms.date: 11/04/2016 f1_keywords: ["CXX0059"] helpviewer_keywords: ["CXX0059", "CAN0059"] -ms.assetid: e8bdcb74-1315-4083-b24d-e47eac7d1ec0 --- # Expression Evaluator Error CXX0059 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0060.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0060.md index 00c18c9ef18..e3daf580ae6 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0060.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0060.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0060" title: "Expression Evaluator Error CXX0060" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0060" +ms.date: 11/04/2016 f1_keywords: ["CXX0060"] helpviewer_keywords: ["CAN0060", "CXX0060"] -ms.assetid: 40c0ff02-ca6b-4232-b1e3-1f3a213ee2a3 --- # Expression Evaluator Error CXX0060 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0061.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0061.md index da09df79e34..35275227563 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0061.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0061.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0061" title: "Expression Evaluator Error CXX0061" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0061" +ms.date: 11/04/2016 f1_keywords: ["CXX0061"] helpviewer_keywords: ["CXX0061", "CAN0061"] -ms.assetid: fa84dcca-87ef-4546-9dce-636ed39e0713 --- # Expression Evaluator Error CXX0061 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0062.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0062.md index a91c8cab401..3265d6746bc 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0062.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0062.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0062" title: "Expression Evaluator Error CXX0062" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0062" +ms.date: 11/04/2016 f1_keywords: ["CXX0062"] helpviewer_keywords: ["CAN0062", "CGopherFile class, operations"] -ms.assetid: 8e4165c4-7753-4f45-90e9-4542cbb9fc7a --- # Expression Evaluator Error CXX0062 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0063.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0063.md index b931d856259..4e753d841e6 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0063.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0063.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0063" title: "Expression Evaluator Error CXX0063" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0063" +ms.date: 11/04/2016 f1_keywords: ["CXX0063"] helpviewer_keywords: ["CXX0063", "CAN0063"] -ms.assetid: 2e131b7a-9c8f-4aa1-acac-8d87f602c24c --- # Expression Evaluator Error CXX0063 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0064.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0064.md index 321f7d3cf7a..ceebc4c6727 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0064.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0064.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0064" title: "Expression Evaluator Error CXX0064" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0064" +ms.date: 11/04/2016 f1_keywords: ["CXX0064"] helpviewer_keywords: ["CAN0064", "CXX0064"] -ms.assetid: aa509e71-0616-41ca-a94e-6c376b041e57 --- # Expression Evaluator Error CXX0064 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0065.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0065.md index 43bb69b19e7..494f6ff1bfc 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0065.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0065.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0065" title: "Expression Evaluator Error CXX0065" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0065" +ms.date: 11/04/2016 f1_keywords: ["CXX0065"] helpviewer_keywords: ["CAN0065", "CXX0065"] -ms.assetid: aac68f87-0b90-4c19-afa6-1c587625a5fd --- # Expression Evaluator Error CXX0065 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0066.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0066.md index 3fc027592b8..e31743fe4a9 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0066.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0066.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0066" title: "Expression Evaluator Error CXX0066" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0066" +ms.date: 11/04/2016 f1_keywords: ["CXX0066"] helpviewer_keywords: ["CXX0066", "CAN0066"] -ms.assetid: 1321e4e1-b441-424b-9e76-c208d4a6f6ea --- # Expression Evaluator Error CXX0066 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0067.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0067.md index d95be75387a..27d75853cce 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0067.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0067.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0067" title: "Expression Evaluator Error CXX0067" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0067" +ms.date: 11/04/2016 f1_keywords: ["CXX0067"] helpviewer_keywords: ["CXX0067", "CAN0067"] -ms.assetid: 9a3e642b-4746-41ac-b665-bd98a6fa0cb3 --- # Expression Evaluator Error CXX0067 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0069.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0069.md index d1c67ddc974..0fefde08dbf 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0069.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0069.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0069" title: "Expression Evaluator Error CXX0069" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0069" +ms.date: 11/04/2016 f1_keywords: ["CXX0069"] helpviewer_keywords: ["CXX0069"] -ms.assetid: cf334b23-1e17-4d37-acc5-18597ee84164 --- # Expression Evaluator Error CXX0069 diff --git a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0072.md b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0072.md index 61166349bac..e7abb58a2dd 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-error-cxx0072.md +++ b/docs/error-messages/tool-errors/expression-evaluator-error-cxx0072.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Expression Evaluator Error CXX0072" title: "Expression Evaluator Error CXX0072" -ms.date: "11/04/2016" +description: "Learn more about: Expression Evaluator Error CXX0072" +ms.date: 11/04/2016 f1_keywords: ["CXX0072"] helpviewer_keywords: ["CAN0072", "CXX0072"] -ms.assetid: fd04e197-cfa9-4097-a070-8fa2111e876d --- # Expression Evaluator Error CXX0072 From ff361a7530163011f26f966f3fbc0d3e60521633 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 8 Sep 2025 10:50:38 -0700 Subject: [PATCH 1765/2255] Update docs/error-messages/compiler-errors-1/compiler-error-c2390.md Co-authored-by: Courtney Wales <62625502+Court72@users.noreply.github.com> --- docs/error-messages/compiler-errors-1/compiler-error-c2390.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2390.md b/docs/error-messages/compiler-errors-1/compiler-error-c2390.md index 8754be37546..8cb77912ec8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2390.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2390.md @@ -23,7 +23,7 @@ Possible resolutions: ## Example -- The following example generates C2390: +The following example generates C2390: ```cpp // C2390.cpp From 06eab07b8f7950b89b70287bda9cd24bec482c77 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Mon, 8 Sep 2025 14:29:21 -0700 Subject: [PATCH 1766/2255] Add print_legend and print_stats to table --- docs/sanitizers/asan-flags.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 1431a0094b5..0fdee43acae 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -45,6 +45,8 @@ The following table lists the options for the AddressSanitizer. Enable them via |`poison_heap` | `true` | If `true`, poison the heap memory on allocation and deallocation. `false` is useful for benchmarking the allocator or instrumentator.| |`poison_partial` | `true` | If `true`, poison partially addressable 8-byte aligned words. This flag affects heap and global buffers, but not stack buffers.| |`print_cmdline` | `false` | Print the command line on crash. With `continue_on_error` set >= 1, prints the current working directory and is `UTF-16` aware.| +|`print_legend` | `true` | If `true`, print the shadow memory map legend. | +|`print_stats`| `true` | If `true`, print allocator stats on exit. | |`print_summary` | `true` | If `false`, disables showing error summaries that accompany error reports.| |`quarantine_size_mb` | -1 | Size (in Mb) of quarantine used to detect `use-after-free` errors. A lower value may increase the chance of false negatives.| |`redzone` | 16 | Minimum size (in bytes) of redzones around heap objects. Requirement: `redzone >= 16` and must be a power of two.| From d68366d0fed0880091d78c14f2801f74dd9b9d33 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Mon, 8 Sep 2025 14:41:12 -0700 Subject: [PATCH 1767/2255] Enter more specific description for print_stats --- docs/sanitizers/asan-flags.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 0fdee43acae..beea79ff296 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -46,7 +46,7 @@ The following table lists the options for the AddressSanitizer. Enable them via |`poison_partial` | `true` | If `true`, poison partially addressable 8-byte aligned words. This flag affects heap and global buffers, but not stack buffers.| |`print_cmdline` | `false` | Print the command line on crash. With `continue_on_error` set >= 1, prints the current working directory and is `UTF-16` aware.| |`print_legend` | `true` | If `true`, print the shadow memory map legend. | -|`print_stats`| `true` | If `true`, print allocator stats on exit. | +|`print_stats`| `false` | If `true`, print allocator stats after printing ASan report. | |`print_summary` | `true` | If `false`, disables showing error summaries that accompany error reports.| |`quarantine_size_mb` | -1 | Size (in Mb) of quarantine used to detect `use-after-free` errors. A lower value may increase the chance of false negatives.| |`redzone` | 16 | Minimum size (in bytes) of redzones around heap objects. Requirement: `redzone >= 16` and must be a power of two.| From 9050e03cd7dae1d6723d6afc3a9fb6be7a0ab01d Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Mon, 8 Sep 2025 14:47:45 -0700 Subject: [PATCH 1768/2255] State that the legend will only get printed when the ASan report gets printed --- docs/sanitizers/asan-flags.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index beea79ff296..63633fa5e46 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -45,7 +45,7 @@ The following table lists the options for the AddressSanitizer. Enable them via |`poison_heap` | `true` | If `true`, poison the heap memory on allocation and deallocation. `false` is useful for benchmarking the allocator or instrumentator.| |`poison_partial` | `true` | If `true`, poison partially addressable 8-byte aligned words. This flag affects heap and global buffers, but not stack buffers.| |`print_cmdline` | `false` | Print the command line on crash. With `continue_on_error` set >= 1, prints the current working directory and is `UTF-16` aware.| -|`print_legend` | `true` | If `true`, print the shadow memory map legend. | +|`print_legend` | `true` | If `true`, print the shadow memory map legend to accompany the ASan report. | |`print_stats`| `false` | If `true`, print allocator stats after printing ASan report. | |`print_summary` | `true` | If `false`, disables showing error summaries that accompany error reports.| |`quarantine_size_mb` | -1 | Size (in Mb) of quarantine used to detect `use-after-free` errors. A lower value may increase the chance of false negatives.| From 0768c37c2a782b4f5e25222eb681265abdfd5817 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Mon, 8 Sep 2025 17:18:17 -0700 Subject: [PATCH 1769/2255] add alt-text --- docs/cpp/cpp-type-system-modern-cpp.md | 3 +-- ...he-windows-10-sdk-in-a-windows-desktop-application.md | 9 ++++----- docs/windows/windows-desktop-wizard.md | 2 ++ 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/cpp/cpp-type-system-modern-cpp.md b/docs/cpp/cpp-type-system-modern-cpp.md index a6245411472..67772c31a07 100644 --- a/docs/cpp/cpp-type-system-modern-cpp.md +++ b/docs/cpp/cpp-type-system-modern-cpp.md @@ -3,7 +3,6 @@ description: "Learn more about: C++ type system" title: "C++ type system" ms.date: 11/04/2022 ms.topic: "concept-article" -ms.assetid: 553c0ed6-77c4-43e9-87b1-c903eec53e80 --- # C++ type system @@ -56,7 +55,7 @@ The compiler recognizes these built-in types, and it has built-in rules that gov The following illustration shows the relative sizes of the built-in types in the Microsoft C++ implementation: -![Diagram of the relative size in bytes of several built in types.](../cpp/media/built-intypesizes.png) +:::image type="content" source="../cpp/media/built-intypesizes.png" alt-text="Diagram showing the relative sizes in bytes of C++ built-in types: bool and char (1 byte), short (2 bytes), int, long, and float (4 bytes), double and long long (8 bytes)"::: The following table lists the most frequently used fundamental types, and their sizes in the Microsoft C++ implementation: diff --git a/docs/windows/how-to-use-the-windows-10-sdk-in-a-windows-desktop-application.md b/docs/windows/how-to-use-the-windows-10-sdk-in-a-windows-desktop-application.md index 80c51d392a9..8998b1d37b4 100644 --- a/docs/windows/how-to-use-the-windows-10-sdk-in-a-windows-desktop-application.md +++ b/docs/windows/how-to-use-the-windows-10-sdk-in-a-windows-desktop-application.md @@ -3,7 +3,6 @@ title: "How to: Use the Windows SDK in a Windows Desktop application" description: "How to set the target SDK version in a Windows Desktop application project to use the latest Windows SDK." ms.custom: "get-started-article" ms.date: "01/22/2020" -ms.assetid: eed6421e-9355-44a6-9582-3f1d453a6d44 --- # How to: Use the Windows SDK in a Windows Desktop application @@ -25,7 +24,7 @@ To retarget your projects to use the latest Windows SDK when you upgrade from a 1. Open the shortcut menu for the project node, and choose **Retarget projects**. (In earlier versions of Visual Studio, choose **Retarget SDK Version**.) The **Review Solution Actions** dialog appears. - ![Review Solution Actions.](../windows/media/retargetingwindowssdk2.PNG "RetargetingWindowsSDK2") + :::image type="content" source="../windows/media/retargetingwindowssdk2.PNG" alt-text="Screenshot of the Review Solution Actions dialog. Target Platform Versions is set to 10.0.10156.0"::: 1. In the **Target Platform Version** dropdown list, choose the version of the Windows SDK you want to target. Generally speaking, we recommend you choose the latest installed version. Choose the **OK** button to apply the change. @@ -37,15 +36,15 @@ To retarget your projects to use the latest Windows SDK when you upgrade from a 1. Open the project properties dialog. In the **Configuration Properties** > **General** section, notice the values of **Windows Target Platform Version**. Changing the value here has the same effect as following this procedure. For more information, see [General Property Page (Project)](../build/reference/general-property-page-project.md). - ![Target Platform property in the Property Pages dialog.](../windows/media/retargetingwindowssdk3.PNG "RetargetingWindowsSDK3") + :::image type="content" source="../windows/media/retargetingwindowssdk3.PNG" alt-text="Screenshot of the Property Pages dialog. Target Platform Version is set to 8.1." lightbox="../windows/media/retargetingwindowssdk3.PNG"::: This action changes the values of project macros that include paths to header files and library files. To see what changed, open the **Visual C++ Directories** section of the **Project Properties** dialog. Select one of the properties, such as **Include Directories**. Then, open the property value's dropdown list, and choose **\**. The **Include Directories** dialog appears. - ![Include Directories dialog box.](../windows/media/retargetingwindowssdk4.PNG "RetargetingWindowsSDK4") + :::image type="content" source="../windows/media/retargetingwindowssdk4.PNG" alt-text="Screenshot of the Include Directories dialog showing paths to Windows SDK includes such as C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/Include." lightbox="../windows/media/retargetingwindowssdk4.PNG"::: Choose the **Macros >>** button, and scroll down the list of macros to the Windows SDK macros to see all the new values. - ![List of Windows SDK Macros.](../windows/media/retargetingwindowssdk5.PNG "RetargetingWindowsSDK5") + :::image type="content" source="../windows/media/retargetingwindowssdk5.PNG" alt-text="Screenshot of the macros dialog showing Windows SDK-related macros and their values. For example, $(windir) is c:/Windows." lightbox="../windows/media/retargetingwindowssdk5.PNG"::: 1. Repeat the retargeting procedure for other solution projects, as needed, and rebuild the solution. diff --git a/docs/windows/windows-desktop-wizard.md b/docs/windows/windows-desktop-wizard.md index f16945a7412..6b57672f3df 100644 --- a/docs/windows/windows-desktop-wizard.md +++ b/docs/windows/windows-desktop-wizard.md @@ -12,6 +12,8 @@ The Windows Desktop Wizard replaces the Win32 Application Wizard in Visual Studi ![Screenshot of the Windows Desktop Project wizard.](media/windows-desktop-wizard.png) +:::image type="content" source="media/windows-desktop-wizard.png" alt-text="Screenshot of the Windows Desktop Project wizard. Application type is set to Console Application (.exe) Precompiled Header and Security Development Lifecycle (SDL) checks are selected."::: + The following table indicates which options are available for each application type. |Type of support|Console application|Executable (Windows) application|Dynamic-link library|Static library| From d6366d7483ac2a7fbceb83ac45bde7ac9d77b1fa Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 8 Sep 2025 18:38:56 -0700 Subject: [PATCH 1770/2255] deprecation notes for 2026 (#6077) * deprecation notes for 2026 * edits * acrolinx * edits --- docs/build/overview-of-arm-abi-conventions.md | 14 ++++++++------ .../reference/await-enable-coroutine-support.md | 10 ++++++---- docs/build/reference/debug-generate-debug-info.md | 10 +++++----- docs/build/reference/midl-property-pages.md | 4 +++- 4 files changed, 22 insertions(+), 16 deletions(-) diff --git a/docs/build/overview-of-arm-abi-conventions.md b/docs/build/overview-of-arm-abi-conventions.md index 3e61981e84e..5ab221541eb 100644 --- a/docs/build/overview-of-arm-abi-conventions.md +++ b/docs/build/overview-of-arm-abi-conventions.md @@ -2,12 +2,14 @@ description: "Learn more about: Overview of ARM32 ABI Conventions" title: "Overview of ARM ABI Conventions" ms.date: "07/11/2018" -ms.assetid: 23f4ae8c-3148-4657-8c47-e933a9f387de --- # Overview of ARM32 ABI Conventions The application binary interface (ABI) for code compiled for Windows on ARM processors is based on the standard ARM EABI. This article highlights key differences between Windows on ARM and the standard. This document covers the ARM32 ABI. For information about the ARM64 ABI, see [Overview of ARM64 ABI conventions](arm64-windows-abi-conventions.md). For more information about the standard ARM EABI, see [Application Binary Interface (ABI) for the ARM Architecture](https://github.com/ARM-software/abi-aa) (external link). +> [!NOTE] +> Using the Microsoft Visual C++ (MSVC) build tools to target ARM32 is deprecated starting with Visual Studio 2026. If you need to target ARM32, use the Visual Studio 2022 v143 build tools. + ## Base Requirements Windows on ARM always presumes that it's running on an ARMv7 architecture. Floating-point support in the form of VFPv3-D32 or later must be present in hardware. The VFP must support both single-precision and double-precision floating-point in hardware. The Windows runtime doesn't support emulation of floating-point to enable running on non-VFP hardware. @@ -124,7 +126,7 @@ Initialization is performed exactly once, before argument processing begins: For each argument in the list, the first matching rule from the following list is applied: -1. If the argument is a composite type whose size cannot be statically determined by both the caller and the callee, the argument is copied to memory and replaced by a pointer to the copy. +1. If the argument is a composite type whose size can't be statically determined by both the caller and the callee, the argument is copied to memory and replaced by a pointer to the copy. 1. If the argument is a byte or 16-bit half-word, then it is zero-extended or sign-extended to a 32-bit full word and treated as a 4-byte argument. @@ -136,11 +138,11 @@ For each argument in the list, the following rules are applied in turn until the 1. If the argument is a VFP type and there are enough consecutive unallocated VFP registers of the appropriate type, then the argument is allocated to the lowest-numbered sequence of such registers. -1. If the argument is a VFP type, all remaining unallocated registers are marked as unavailable. The NSAA is adjusted upwards until it is correctly aligned for the argument type and the argument is copied to the stack at the adjusted NSAA. The NSAA is then incremented by the size of the argument. +1. If the argument is a VFP type, all remaining unallocated registers are marked as unavailable. The NSAA is adjusted upwards until it's correctly aligned for the argument type and the argument is copied to the stack at the adjusted NSAA. The NSAA is then incremented by the size of the argument. 1. If the argument requires 8-byte alignment, the NCRN is rounded up to the next even register number. -1. If the size of the argument in 32-bit words is not more than r4 minus NCRN, the argument is copied into core registers, starting at the NCRN, with the least significant bits occupying the lower-numbered registers. The NCRN is incremented by the number of registers used. +1. If the size of the argument in 32-bit words isn't more than r4 minus NCRN, the argument is copied into core registers, starting at the NCRN, with the least significant bits occupying the lower-numbered registers. The NCRN is incremented by the number of registers used. 1. If the NCRN is less than r4 and the NSAA is equal to the SP, the argument is split between core registers and the stack. The first part of the argument is copied into the core registers, starting at the NCRN, up to and including r3. The rest of the argument is copied onto the stack, starting at the NSAA. The NCRN is set to r4 and the NSAA is incremented by the size of the argument minus the amount passed in registers. @@ -148,7 +150,7 @@ For each argument in the list, the following rules are applied in turn until the 1. The argument is copied into memory at the NSAA. The NSAA is incremented by the size of the argument. -The VFP registers aren't used for variadic functions, and Stage C rules 1 and 2 are ignored. It means that a variadic function can begin with an optional push {r0-r3} to prepend the register arguments to any additional arguments passed by the caller, and then access the entire argument list directly from the stack. +The VFP registers aren't used for variadic functions, and Stage C rules 1 and 2 are ignored. It means that a variadic function can begin with an optional push {r0-r3} to prepend the register arguments to any other arguments passed by the caller, and then access the entire argument list directly from the stack. Integer type values are returned in r0, optionally extended to r1 for 64-bit return values. VFP/NEON floating-point or SIMD type values are returned in s0, d0, or q0, as appropriate. @@ -158,7 +160,7 @@ The stack must always remain 4-byte aligned, and must be 8-byte aligned at any f Functions that have to use a frame pointer—for example, functions that call `alloca` or that change the stack pointer dynamically—must set up the frame pointer in r11 in the function prologue and leave it unchanged until the epilogue. Functions that don't require a frame pointer must perform all stack updates in the prologue and leave the stack pointer unchanged until the epilogue. -Functions that allocate 4 KB or more on the stack must ensure that each page prior to the final page is touched in order. This order ensures that no code can "leap over" the guard pages that Windows uses to expand the stack. Typically, the expansion is done by the `__chkstk` helper, which is passed the total stack allocation in bytes divided by 4 in r4, and which returns the final stack allocation amount in bytes back in r4. +Functions that allocate 4 KB or more on the stack must ensure that each page before the final page is touched in order. This order ensures that no code can "leap over" the guard pages that Windows uses to expand the stack. Typically, the expansion is done by the `__chkstk` helper, which is passed the total stack allocation in bytes divided by 4 in r4, and which returns the final stack allocation amount in bytes back in r4. ### Red zone diff --git a/docs/build/reference/await-enable-coroutine-support.md b/docs/build/reference/await-enable-coroutine-support.md index 9595a434ffc..6ce254876f8 100644 --- a/docs/build/reference/await-enable-coroutine-support.md +++ b/docs/build/reference/await-enable-coroutine-support.md @@ -1,15 +1,17 @@ --- description: "Learn more about: /await (Enable coroutine support)" title: "/await (Enable coroutine support)" -ms.date: "08/15/2017" +ms.date: 09/08/2025 f1_keywords: ["/await", "-await"] helpviewer_keywords: ["/await enable coroutine support [C++]", "-await enable coroutine support [C++]", "await enable coroutine support [C++]"] -ms.assetid: 302c8e69-09b6-4c58-bcdd-0a6a8713a8df --- -# `/await` (Enable coroutine support) +# `/await` (Enable coroutine support) Deprecated. Use the **`/await`** compiler option to enable compiler support for coroutines. +> [!NOTE] +> The **`/await`** option is deprecated starting with Visual Studio 2026 and will be removed in a future release. Standard C++ coroutines are available by default in C++20 or later. Or use **`/await:strict`** option when using earlier versions of the C++ language. + ## Syntax > **`/await`**\ @@ -19,7 +21,7 @@ Use the **`/await`** compiler option to enable compiler support for coroutines. The **`/await`** compiler option enables compiler support for C++ coroutines and the keywords **`co_await`**, **`co_yield`**, and **`co_return`**. This option is off by default. For information about support for coroutines in Visual Studio, see the [Visual Studio Team Blog](https://devblogs.microsoft.com/cppblog/category/coroutine/). For more information about the coroutines standard proposal, see [N4628 Working Draft, Technical Specification for C++ Extensions for Coroutines](https://wg21.link/n4628). -The **`/await`** option is available beginning in Visual Studio 2015. +The **`/await`** option is available beginning in Visual Studio 2015 and is deprecated starting with Visual Studio 2026. Starting in Visual Studio 2019 version 16.10, the **`/await:strict`** option can be used in place of **`/await`**. The option provides C++20-compatible coroutine support in projects that build in C++14 or C++17 mode. In **`/await:strict`** mode, library support is provided in \ and in the `std` namespace. diff --git a/docs/build/reference/debug-generate-debug-info.md b/docs/build/reference/debug-generate-debug-info.md index 85a515debab..9716f477b56 100644 --- a/docs/build/reference/debug-generate-debug-info.md +++ b/docs/build/reference/debug-generate-debug-info.md @@ -1,7 +1,7 @@ --- description: "Learn more about: /DEBUG (Generate debug info)" title: "/DEBUG (Generate Debug Info)" -ms.date: 10/26/2023 +ms.date: 09/08/2025 f1_keywords: ["VC.Project.VCLinkerTool.GenerateDebugInformation", "/debug"] helpviewer_keywords: ["DEBUG linker option", "/DEBUG linker option", "-DEBUG linker option", "PDB files", "debugging [C++], debug information files", "generate debug info linker option", "pdb files, generating debug info", ".pdb files, generating debug info", "debugging [C++], linker option", "program databases [C++]"] ms.assetid: 1af389ae-3f8b-4d76-a087-1cdf861e9103 @@ -20,7 +20,10 @@ The **`/DEBUG`** option puts the debugging information from linked object and li An executable (an EXE or DLL file) created for debugging contains the name and path of the corresponding PDB. The debugger reads the embedded name and uses the PDB when you debug the program. The linker uses the base name of the program and the extension *`.pdb`* to name the program database, and embeds the path where it was created. To override this default, set the [`/PDB`](pdb-use-program-database.md) option and specify a different file name. -The **`/DEBUG:FASTLINK`** option is available in Visual Studio 2017 and later. This option generates a limited PDB that indexes into the debug information in the object files and libraries used to build the executable instead of making a full copy. You can only use this limited PDB to debug from the computer where the binary and its libraries were built. If you deploy the binary elsewhere, you may debug it remotely from the build computer, but not directly on the test computer. Since Visual Studio 2019, **`/DEBUG:FULL`** linking times have improved significantly, and **`/DEBUG:FASTLINK`** isn't always faster than **`/DEBUG:FULL`**. Since **`/DEBUG:FASTLINK`** no longer provides large build time improvements and results in a slower debugging experience versus **`/DEBUG:FULL`**, this option is no longer recommended. +> [!Note] +> The **`/DEBUG:FASTLINK`** option is **deprecated and removed** starting in Visual Studio 2026. It was available in Visual Studio 2017 through Visual Studio 2022. + +**`/DEBUG:FASTLINK`** generated a limited PDB that indexes into the debug information in the object files and libraries used to build the executable instead of making a full copy. You can only use this limited PDB to debug from the computer where the binary and its libraries were built. If you deploy the binary elsewhere, you may debug it remotely from the build computer, but not directly on the test computer. Since Visual Studio 2019, **`/DEBUG:FULL`** linking times have improved significantly, and **`/DEBUG:FASTLINK`** isn't always faster than **`/DEBUG:FULL`**. Since **`/DEBUG:FASTLINK`** no longer provides large build time improvements and results in a slower debugging experience versus **`/DEBUG:FULL`**, this option is no longer recommended, and is removed in Visual Studio 2026. Prefer using **`/DEBUG:FULL`**. A **`/DEBUG:FASTLINK`** PDB can be converted to a full PDB that you can deploy to a test machine for local debugging. In Visual Studio, use the **Property Pages** dialog as described below to create a full PDB for the project or solution. In a developer command prompt, you can use the `mspdbcmf.exe` tool to create a full PDB. @@ -41,11 +44,8 @@ It isn't possible to create an EXE or DLL that contains debug information. Debug ### To set this linker option in the Visual Studio development environment 1. Open the project's **Property Pages** dialog box. For details, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md). - 1. Select the **Linker** > **Debugging** property page. - 1. Modify the **Generate Debug Info** property to enable or disable PDB generation. This property enables **`/DEBUG:FASTLINK`** by default in Visual Studio 2017 and later. - 1. Modify the **Generate Full Program Database File** property to enable **`/DEBUG:FULL`** for full PDB generation for every incremental build. ### To set this linker option programmatically diff --git a/docs/build/reference/midl-property-pages.md b/docs/build/reference/midl-property-pages.md index 66c3955c39a..8d68b2e9f03 100644 --- a/docs/build/reference/midl-property-pages.md +++ b/docs/build/reference/midl-property-pages.md @@ -3,7 +3,6 @@ description: "Learn more about: MIDL Property Pages" title: "MIDL Compiler Property Pages" ms.date: "07/24/2019" ms.topic: "article" -ms.assetid: 57498a01-fccc-4a0e-a036-6ff702f83126 f1_keywords: - VC.Project.VCMidlTool.PreprocessorDefinitions - VC.Project.VCMidlTool.AdditionalIncludeDirectories @@ -112,6 +111,9 @@ Specifies the default character type of the C compiler that will be used to comp Specifies which environment to target ([/env](/windows/win32/midl/-env) arm32|win32|ia64|x64). +> [!NOTE] +> Starting with Visual Studio 2026, the **`/env:arm32`** option is deprecated and removed. If you need to target ARM32, use the Visual Studio 2022 v143 build tools. + **Choices** - **Not Set** - Win32 From bc6285ca61cc63a904ad5e3c6845f20d8c295e40 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Mon, 8 Sep 2025 18:45:32 -0700 Subject: [PATCH 1771/2255] fix alt+text and old image format --- docs/build/clang-support-cmake.md | 14 +++++++------- ...ual-cpp-application-by-using-a-setup-project.md | 11 +++++------ 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/docs/build/clang-support-cmake.md b/docs/build/clang-support-cmake.md index 157c3259d95..8a2eadec580 100644 --- a/docs/build/clang-support-cmake.md +++ b/docs/build/clang-support-cmake.md @@ -26,14 +26,14 @@ You can use Visual Studio with Clang to edit and debug C++ CMake projects that t For the best IDE support in Visual Studio, we recommend using the latest Clang compiler tools for Windows. If you don't already have those, you can install them by opening the Visual Studio Installer and choosing **C++ Clang compiler for Windows** under **Desktop development with C++** optional components. You may prefer to use an existing Clang installation on your machine; if so, choose the **C++ Clang-cl for v142 build tools** or **C++ Clang-cl for v143 build tools** component. -![Screenshot of the Visual Studio Installer Individual Components page that shows Clang components available for installation.](media/clang-install-vs2019.png) +:::image type="content" source="media/clang-install-vs2019.png" alt-text="Screenshot of the Visual Studio Installer Individual Components page. C++ Clang Compiler For Windows and C++ Clang-cl for v142 build tools are selected."::: ::: moniker-end ::: moniker range="msvc-170" For the best IDE support in Visual Studio, we recommend using the latest Clang compiler tools for Windows. If you don't already have those, you can install them by opening the Visual Studio Installer and choosing **C++ Clang compiler for Windows** under **Desktop development with C++** optional components. You may prefer to use an existing Clang installation on your machine; if so, choose the **MSBuild support for LLVM (clang-cl) toolset** component. -![Screenshot of the Visual Studio Installer Individual Components page that shows Clang components available for installation.](media/clang-install-vs2022.png) +:::image type="content" source="media/clang-install-vs2022.png" alt-text="Screenshot of the Visual Studio Installer Individual Components page. C++ Clang Compiler For Windows and MSBuild support for LLVM are selected."::: ::: moniker-end ::: moniker range=">=msvc-160" @@ -47,11 +47,11 @@ To add a new Clang configuration to a CMake project: 1. Under **Configurations**, press the **Add Configuration** button: - ![Screenshot of the controls at the top of the C Make Settings dialog, with the Add Configuration control highlighted.](media/cmake-add-config-icon.png) + :::image type="content" source="media/cmake-add-config-icon.png" alt-text="Screenshot of the controls at the top of the C Make Settings dialog, with the Add Configuration button highlighted."::: 1. Choose the desired Clang configuration (note that separate Clang configurations are provided for Windows and Linux), then press **Select**: - ![Screenshot of the Add Configuration to C Make Settings dialog for Clang configuration.](media/cmake-clang-configuration.png) + :::image type="content" source="media/cmake-clang-configuration.png" alt-text="Screenshot of the Add Configuration to C Make Settings dialog for Clang configuration. Contains entries such as Mingw64-Release, x86-Debug/Release, x64-Debug/Release, x86-Clang Debug/Release."::: 1. To make modifications to this configuration, use the **CMake Settings Editor**. For more information, see [Customize CMake build settings in Visual Studio](customize-cmake-settings.md). @@ -63,7 +63,7 @@ To modify an existing configuration to use Clang, follow these steps: 1. Under **General** select the **Toolset** dropdown and choose the desired Clang toolset: - ![Screenshot of the General dialog box showing that the Toolset is selected and clang cl x 86 is highlighted.](media/cmake-clang-toolset.png) + ![Screenshot of the General dialog box showing the Toolset drop-down and clang cl x 86 is highlighted.](media/cmake-clang-toolset.png) ## Custom Clang locations @@ -74,7 +74,7 @@ By default, Visual Studio looks for Clang in two places: You can specify another location by setting the **CMAKE_C_COMPILER** and **CMAKE_CXX_COMPILER** CMake variables in **CMake Settings**: -![Screenshot of the C Make Settings dialog box with the C Make C X X Compiler highlighted.](media/clang-location-cmake.png) +:::image type="content" source="media/clang-location-cmake.png" alt-text="Screenshot of the C Make Settings dialog box with the C Make C X X Compiler highlighted. C Make configurations are listed such as x64-Clang-Debug, Linx-Clang-Release, and so on." Lightbox="media/clang-location-cmake.png"::: ## Clang compatibility modes @@ -88,6 +88,6 @@ After you have set up a Clang configuration, you can build and debug the project When debugging, you can use breakpoints, memory and data visualization, and most other debugging features. Some compiler-dependent features such as Edit and Continue aren't available for Clang configurations. -![Screenshot of the Visual Studio debugger debugging a CMake Clang project.](media/clang-debug-visualize.png) +:::image type="content" source="media/clang-debug-visualize.png" alt-text="Screenshot of the Visual Studio debugger debugging a CMake Clang project. The Autos window is visible, showing variables and their values."::: ::: moniker-end diff --git a/docs/windows/walkthrough-deploying-a-visual-cpp-application-by-using-a-setup-project.md b/docs/windows/walkthrough-deploying-a-visual-cpp-application-by-using-a-setup-project.md index 5878dda4372..99e286e2a67 100644 --- a/docs/windows/walkthrough-deploying-a-visual-cpp-application-by-using-a-setup-project.md +++ b/docs/windows/walkthrough-deploying-a-visual-cpp-application-by-using-a-setup-project.md @@ -3,7 +3,6 @@ description: "Learn more about: Walkthrough: Deploy a Visual C++ application by title: "Deploy a Visual C++ application by using a setup project" ms.date: 06/28/2022 helpviewer_keywords: ["deployment for Visual C++"] -ms.assetid: 66735cda-8fe3-4211-a19a-2cf717a12a3f ms.custom: intro-deployment ms.topic: install-set-up-deploy --- @@ -45,7 +44,7 @@ If you have Visual Studio installed, but you don't have the C++ or MFC component 1. In the Manage Extensions dialog, expand **Online** > **Visual Studio Marketplace** > **Tools** and select **Setup & Deployment**. - ![The Manage Extensions dialog showing the Visual Studio setup project extension.](media/vs2019-extension-dialog-installer-project.png "Name the client project") + :::image type="content" source="media/vs2019-extension-dialog-installer-project.png" alt-text="Screenshot of the Manage Extensions dialog Microsoft Visual Studio Installer Projects item selected."::: 1. In the list of extensions, select **Microsoft Visual Studio Installer Projects 2022**. Choose the **Download** button. @@ -85,7 +84,7 @@ If you have Visual Studio installed, but you don't have the C++ or MFC component 1. In the Manage Extensions dialog, expand **Online** > **Visual Studio Marketplace** > **Tools** and select **Setup & Deployment**. - ![The Manage Extensions dialog showing the Visual Studio setup project extension.](media/vs2019-extension-dialog-installer-project.png "Name the client project") + :::image type="content" source="media/vs2019-extension-dialog-installer-project.png" alt-text="Screenshot of the Manage Extensions dialog Microsoft Visual Studio Installer Projects item selected."::: 1. In the list of extensions, select **Microsoft Visual Studio Installer Projects**. Choose the **Download** button. @@ -125,7 +124,7 @@ If you have Visual Studio 2017 installed, but you don't have the C++ or MFC comp 1. In the Extensions and Updates dialog, expand **Online** > **Visual Studio Marketplace** > **Tools** and select **Setup & Deployment**. Set the **Sort by** dropdown to **Most Downloads**. - ![The Manage Extensions dialog showing the Visual Studio setup project extension.](media/vs2019-extension-dialog-installer-project.png "Name the client project") + :::image type="content" source="media/vs2019-extension-dialog-installer-project.png" alt-text="Screenshot of the Manage Extensions dialog Microsoft Visual Studio Installer Projects item selected."::: 1. In the list of extensions, select **Microsoft Visual Studio Installer Projects**. Choose the **Download** button. @@ -183,7 +182,7 @@ To create a deployable application setup, first you'll create a sample app to de 1. Launch Visual Studio. By default, it opens the **Create a New Project** dialog box. If Visual Studio is already open, on the menu bar, choose **File** > **New** > **Project** to open the **Create a New Project** dialog box. - ![Screenshot of the Create a new project dialog showing an MFC App project template.](media/vs2019-mfc-app-new-project.png "New MFC app") + :::image type="content" source="media/vs2019-mfc-app-new-project.png" alt-text="Screenshot of the Create a new project dialog in Visual Studio with MFC entered in the search box and the MFC App project template selected." lightbox="media/vs2019-mfc-app-new-project.png"::: 1. At the top of the dialog, type `MFC` in the search box and then choose **MFC App** from the results list. (If the MFC App template is missing, see [To install C++ and MFC in Visual Studio 2022](#install-mfc-2022).) Choose the **Next** button to continue. @@ -203,7 +202,7 @@ To create a deployable application setup, first you'll create a sample app to de 1. On the menu bar, choose **File** > **New** > **Project** to open the **Create a New Project** dialog box. - ![Screenshot of the Create a new project dialog showing an MFC App project template.](media/vs2019-mfc-app-new-project.png "New MFC app") + :::image type="content" source="media/vs2019-mfc-app-new-project.png" alt-text="Screenshot of the Create a new project dialog in Visual Studio with MFC entered in the search box and the MFC App project template selected." lightbox="media/vs2019-mfc-app-new-project.png"::: 1. At the top of the dialog, type `MFC` in the search box and then choose **MFC App** from the results list. (If the MFC App template is missing, see [To install C++ and MFC in Visual Studio 2019](#install-mfc-2019).) Choose the **Next** button to continue. From 88ef5185fbd0484e199da761db26935b2f9b100e Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Mon, 8 Sep 2025 19:05:48 -0700 Subject: [PATCH 1772/2255] fixes --- docs/build/clang-support-cmake.md | 5 ++--- ...the-windows-10-sdk-in-a-windows-desktop-application.md | 8 ++++---- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/docs/build/clang-support-cmake.md b/docs/build/clang-support-cmake.md index 8a2eadec580..f0b27f2a3d7 100644 --- a/docs/build/clang-support-cmake.md +++ b/docs/build/clang-support-cmake.md @@ -38,7 +38,6 @@ For the best IDE support in Visual Studio, we recommend using the latest Clang c ::: moniker-end ::: moniker range=">=msvc-160" - ## Create a new configuration To add a new Clang configuration to a CMake project: @@ -47,11 +46,11 @@ To add a new Clang configuration to a CMake project: 1. Under **Configurations**, press the **Add Configuration** button: - :::image type="content" source="media/cmake-add-config-icon.png" alt-text="Screenshot of the controls at the top of the C Make Settings dialog, with the Add Configuration button highlighted."::: + :::image type="content" source="media/cmake-add-config-icon.png" alt-text="Screenshot of the controls at the top of the C Make Settings dialog. The Add Configuration button is highlighted."::: 1. Choose the desired Clang configuration (note that separate Clang configurations are provided for Windows and Linux), then press **Select**: - :::image type="content" source="media/cmake-clang-configuration.png" alt-text="Screenshot of the Add Configuration to C Make Settings dialog for Clang configuration. Contains entries such as Mingw64-Release, x86-Debug/Release, x64-Debug/Release, x86-Clang Debug/Release."::: + :::image type="content" source="media/cmake-clang-configuration.png" alt-text="Screenshot of the Add Configuration to C Make Settings dialog for Clang configuration. Contains entries such as Mingw64-Release, x86-Debug, x64-Debug, x86-Clang Debug/Release, and so on."::: 1. To make modifications to this configuration, use the **CMake Settings Editor**. For more information, see [Customize CMake build settings in Visual Studio](customize-cmake-settings.md). diff --git a/docs/windows/how-to-use-the-windows-10-sdk-in-a-windows-desktop-application.md b/docs/windows/how-to-use-the-windows-10-sdk-in-a-windows-desktop-application.md index 8998b1d37b4..5fab4c2c2aa 100644 --- a/docs/windows/how-to-use-the-windows-10-sdk-in-a-windows-desktop-application.md +++ b/docs/windows/how-to-use-the-windows-10-sdk-in-a-windows-desktop-application.md @@ -24,7 +24,7 @@ To retarget your projects to use the latest Windows SDK when you upgrade from a 1. Open the shortcut menu for the project node, and choose **Retarget projects**. (In earlier versions of Visual Studio, choose **Retarget SDK Version**.) The **Review Solution Actions** dialog appears. - :::image type="content" source="../windows/media/retargetingwindowssdk2.PNG" alt-text="Screenshot of the Review Solution Actions dialog. Target Platform Versions is set to 10.0.10156.0"::: + :::image type="content" source="media/retargetingwindowssdk2.PNG" alt-text="Screenshot of the Review Solution Actions dialog. Target Platform Versions is set to 10.0.10156.0"::: 1. In the **Target Platform Version** dropdown list, choose the version of the Windows SDK you want to target. Generally speaking, we recommend you choose the latest installed version. Choose the **OK** button to apply the change. @@ -36,15 +36,15 @@ To retarget your projects to use the latest Windows SDK when you upgrade from a 1. Open the project properties dialog. In the **Configuration Properties** > **General** section, notice the values of **Windows Target Platform Version**. Changing the value here has the same effect as following this procedure. For more information, see [General Property Page (Project)](../build/reference/general-property-page-project.md). - :::image type="content" source="../windows/media/retargetingwindowssdk3.PNG" alt-text="Screenshot of the Property Pages dialog. Target Platform Version is set to 8.1." lightbox="../windows/media/retargetingwindowssdk3.PNG"::: + :::image type="content" source="media/retargetingwindowssdk3.PNG" alt-text="Screenshot of the Property Pages dialog. Target Platform Version is set to 8.1." lightbox="media/retargetingwindowssdk3.PNG"::: This action changes the values of project macros that include paths to header files and library files. To see what changed, open the **Visual C++ Directories** section of the **Project Properties** dialog. Select one of the properties, such as **Include Directories**. Then, open the property value's dropdown list, and choose **\**. The **Include Directories** dialog appears. - :::image type="content" source="../windows/media/retargetingwindowssdk4.PNG" alt-text="Screenshot of the Include Directories dialog showing paths to Windows SDK includes such as C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/Include." lightbox="../windows/media/retargetingwindowssdk4.PNG"::: + :::image type="content" source="media/retargetingwindowssdk4.PNG" alt-text="Screenshot of the Include Directories dialog showing paths to Windows SDK includes such as C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/Include." lightbox="media/retargetingwindowssdk4.PNG"::: Choose the **Macros >>** button, and scroll down the list of macros to the Windows SDK macros to see all the new values. - :::image type="content" source="../windows/media/retargetingwindowssdk5.PNG" alt-text="Screenshot of the macros dialog showing Windows SDK-related macros and their values. For example, $(windir) is c:/Windows." lightbox="../windows/media/retargetingwindowssdk5.PNG"::: + :::image type="content" source="media/retargetingwindowssdk5.PNG" alt-text="Screenshot of the macros dialog showing Windows SDK-related macros and their values. For example, $(windir) is c:/Windows." lightbox="media/retargetingwindowssdk5.PNG"::: 1. Repeat the retargeting procedure for other solution projects, as needed, and rebuild the solution. From 757992564713049bde553f3b14e5b081ec169b95 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Mon, 8 Sep 2025 19:30:19 -0700 Subject: [PATCH 1773/2255] lightbox --- ...ing-a-visual-cpp-application-by-using-a-setup-project.md | 6 +++--- docs/windows/windows-desktop-wizard.md | 4 +--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/docs/windows/walkthrough-deploying-a-visual-cpp-application-by-using-a-setup-project.md b/docs/windows/walkthrough-deploying-a-visual-cpp-application-by-using-a-setup-project.md index 99e286e2a67..ace07229458 100644 --- a/docs/windows/walkthrough-deploying-a-visual-cpp-application-by-using-a-setup-project.md +++ b/docs/windows/walkthrough-deploying-a-visual-cpp-application-by-using-a-setup-project.md @@ -44,7 +44,7 @@ If you have Visual Studio installed, but you don't have the C++ or MFC component 1. In the Manage Extensions dialog, expand **Online** > **Visual Studio Marketplace** > **Tools** and select **Setup & Deployment**. - :::image type="content" source="media/vs2019-extension-dialog-installer-project.png" alt-text="Screenshot of the Manage Extensions dialog Microsoft Visual Studio Installer Projects item selected."::: + :::image type="content" source="media/vs2019-extension-dialog-installer-project.png" alt-text="Screenshot of the Manage Extensions dialog Microsoft Visual Studio Installer Projects item selected." Lightbox="media/vs2019-extension-dialog-installer-project.png"::: 1. In the list of extensions, select **Microsoft Visual Studio Installer Projects 2022**. Choose the **Download** button. @@ -84,7 +84,7 @@ If you have Visual Studio installed, but you don't have the C++ or MFC component 1. In the Manage Extensions dialog, expand **Online** > **Visual Studio Marketplace** > **Tools** and select **Setup & Deployment**. - :::image type="content" source="media/vs2019-extension-dialog-installer-project.png" alt-text="Screenshot of the Manage Extensions dialog Microsoft Visual Studio Installer Projects item selected."::: + :::image type="content" source="media/vs2019-extension-dialog-installer-project.png" alt-text="Screenshot of the Manage Extensions dialog Microsoft Visual Studio Installer Projects item selected." Lightbox="media/vs2019-extension-dialog-installer-project.png"::: 1. In the list of extensions, select **Microsoft Visual Studio Installer Projects**. Choose the **Download** button. @@ -124,7 +124,7 @@ If you have Visual Studio 2017 installed, but you don't have the C++ or MFC comp 1. In the Extensions and Updates dialog, expand **Online** > **Visual Studio Marketplace** > **Tools** and select **Setup & Deployment**. Set the **Sort by** dropdown to **Most Downloads**. - :::image type="content" source="media/vs2019-extension-dialog-installer-project.png" alt-text="Screenshot of the Manage Extensions dialog Microsoft Visual Studio Installer Projects item selected."::: + :::image type="content" source="media/vs2019-extension-dialog-installer-project.png" alt-text="Screenshot of the Manage Extensions dialog Microsoft Visual Studio Installer Projects item selected." Lightbox="media/vs2019-extension-dialog-installer-project.png"::: 1. In the list of extensions, select **Microsoft Visual Studio Installer Projects**. Choose the **Download** button. diff --git a/docs/windows/windows-desktop-wizard.md b/docs/windows/windows-desktop-wizard.md index 6b57672f3df..3509d67f7a4 100644 --- a/docs/windows/windows-desktop-wizard.md +++ b/docs/windows/windows-desktop-wizard.md @@ -10,9 +10,7 @@ ms.assetid: 5d7b3a5e-8461-479a-969a-67b7883725b9 The Windows Desktop Wizard replaces the Win32 Application Wizard in Visual Studio 2017 and later. The wizard allows you to create any of four types of C++ projects (listed in the heading in the table below). In each case, you can specify additional options that are appropriate for the type of project you open. - ![Screenshot of the Windows Desktop Project wizard.](media/windows-desktop-wizard.png) - -:::image type="content" source="media/windows-desktop-wizard.png" alt-text="Screenshot of the Windows Desktop Project wizard. Application type is set to Console Application (.exe) Precompiled Header and Security Development Lifecycle (SDL) checks are selected."::: +:::image type="content" source="media/windows-desktop-wizard.png" alt-text="Screenshot of the Windows Desktop Project wizard. Application type is set to Console Application (.exe) Precompiled Header and Security Development Lifecycle (SDL) checks are selected." Lightbox="media/windows-desktop-wizard.png"::: The following table indicates which options are available for each application type. From ad753654275b28a527843219cbf8271f93e198e3 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Mon, 8 Sep 2025 19:40:04 -0700 Subject: [PATCH 1774/2255] edits --- docs/build/clang-support-cmake.md | 6 +++--- ...e-the-windows-10-sdk-in-a-windows-desktop-application.md | 2 +- ...ing-a-visual-cpp-application-by-using-a-setup-project.md | 6 +++--- docs/windows/windows-desktop-wizard.md | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/build/clang-support-cmake.md b/docs/build/clang-support-cmake.md index f0b27f2a3d7..4b74bd679fc 100644 --- a/docs/build/clang-support-cmake.md +++ b/docs/build/clang-support-cmake.md @@ -50,7 +50,7 @@ To add a new Clang configuration to a CMake project: 1. Choose the desired Clang configuration (note that separate Clang configurations are provided for Windows and Linux), then press **Select**: - :::image type="content" source="media/cmake-clang-configuration.png" alt-text="Screenshot of the Add Configuration to C Make Settings dialog for Clang configuration. Contains entries such as Mingw64-Release, x86-Debug, x64-Debug, x86-Clang Debug/Release, and so on."::: + :::image type="content" source="media/cmake-clang-configuration.png" alt-text="Screenshot of the Add Configuration to C Make Settings dialog for Clang configuration. Contains entries such as Mingw64-Release, x86-Debug, x64-Debug, x86-Clang Debug, and so on."::: 1. To make modifications to this configuration, use the **CMake Settings Editor**. For more information, see [Customize CMake build settings in Visual Studio](customize-cmake-settings.md). @@ -73,7 +73,7 @@ By default, Visual Studio looks for Clang in two places: You can specify another location by setting the **CMAKE_C_COMPILER** and **CMAKE_CXX_COMPILER** CMake variables in **CMake Settings**: -:::image type="content" source="media/clang-location-cmake.png" alt-text="Screenshot of the C Make Settings dialog box with the C Make C X X Compiler highlighted. C Make configurations are listed such as x64-Clang-Debug, Linx-Clang-Release, and so on." Lightbox="media/clang-location-cmake.png"::: +:::image type="content" source="media/clang-location-cmake.png" alt-text="Screenshot of the C Make Settings dialog box with the C Make C X X Compiler highlighted. C Make configurations are listed such as x64-Clang-Debug, Linux-Clang-Release, and so on." Lightbox="media/clang-location-cmake.png"::: ## Clang compatibility modes @@ -87,6 +87,6 @@ After you have set up a Clang configuration, you can build and debug the project When debugging, you can use breakpoints, memory and data visualization, and most other debugging features. Some compiler-dependent features such as Edit and Continue aren't available for Clang configurations. -:::image type="content" source="media/clang-debug-visualize.png" alt-text="Screenshot of the Visual Studio debugger debugging a CMake Clang project. The Autos window is visible, showing variables and their values."::: +:::image type="content" source="media/clang-debug-visualize.png" alt-text="Screenshot of the Visual Studio debugger debugging a CMake Clang project."::: ::: moniker-end diff --git a/docs/windows/how-to-use-the-windows-10-sdk-in-a-windows-desktop-application.md b/docs/windows/how-to-use-the-windows-10-sdk-in-a-windows-desktop-application.md index 5fab4c2c2aa..d9158b617c8 100644 --- a/docs/windows/how-to-use-the-windows-10-sdk-in-a-windows-desktop-application.md +++ b/docs/windows/how-to-use-the-windows-10-sdk-in-a-windows-desktop-application.md @@ -40,7 +40,7 @@ To retarget your projects to use the latest Windows SDK when you upgrade from a This action changes the values of project macros that include paths to header files and library files. To see what changed, open the **Visual C++ Directories** section of the **Project Properties** dialog. Select one of the properties, such as **Include Directories**. Then, open the property value's dropdown list, and choose **\**. The **Include Directories** dialog appears. - :::image type="content" source="media/retargetingwindowssdk4.PNG" alt-text="Screenshot of the Include Directories dialog showing paths to Windows SDK includes such as C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/Include." lightbox="media/retargetingwindowssdk4.PNG"::: + :::image type="content" source="media/retargetingwindowssdk4.PNG" alt-text="Screenshot of the Include Directories dialog showing paths to Windows SDK includes such as C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/Include, and so on." lightbox="media/retargetingwindowssdk4.PNG"::: Choose the **Macros >>** button, and scroll down the list of macros to the Windows SDK macros to see all the new values. diff --git a/docs/windows/walkthrough-deploying-a-visual-cpp-application-by-using-a-setup-project.md b/docs/windows/walkthrough-deploying-a-visual-cpp-application-by-using-a-setup-project.md index ace07229458..5b2af3d9365 100644 --- a/docs/windows/walkthrough-deploying-a-visual-cpp-application-by-using-a-setup-project.md +++ b/docs/windows/walkthrough-deploying-a-visual-cpp-application-by-using-a-setup-project.md @@ -44,7 +44,7 @@ If you have Visual Studio installed, but you don't have the C++ or MFC component 1. In the Manage Extensions dialog, expand **Online** > **Visual Studio Marketplace** > **Tools** and select **Setup & Deployment**. - :::image type="content" source="media/vs2019-extension-dialog-installer-project.png" alt-text="Screenshot of the Manage Extensions dialog Microsoft Visual Studio Installer Projects item selected." Lightbox="media/vs2019-extension-dialog-installer-project.png"::: + :::image type="content" source="media/vs2019-extension-dialog-installer-project.png" alt-text="Screenshot of the Manage Extensions dialog with Microsoft Visual Studio Installer Projects selected." Lightbox="media/vs2019-extension-dialog-installer-project.png"::: 1. In the list of extensions, select **Microsoft Visual Studio Installer Projects 2022**. Choose the **Download** button. @@ -84,7 +84,7 @@ If you have Visual Studio installed, but you don't have the C++ or MFC component 1. In the Manage Extensions dialog, expand **Online** > **Visual Studio Marketplace** > **Tools** and select **Setup & Deployment**. - :::image type="content" source="media/vs2019-extension-dialog-installer-project.png" alt-text="Screenshot of the Manage Extensions dialog Microsoft Visual Studio Installer Projects item selected." Lightbox="media/vs2019-extension-dialog-installer-project.png"::: + :::image type="content" source="media/vs2019-extension-dialog-installer-project.png" alt-text="Screenshot of the Manage Extensions dialog with Microsoft Visual Studio Installer Projects selected." Lightbox="media/vs2019-extension-dialog-installer-project.png"::: 1. In the list of extensions, select **Microsoft Visual Studio Installer Projects**. Choose the **Download** button. @@ -124,7 +124,7 @@ If you have Visual Studio 2017 installed, but you don't have the C++ or MFC comp 1. In the Extensions and Updates dialog, expand **Online** > **Visual Studio Marketplace** > **Tools** and select **Setup & Deployment**. Set the **Sort by** dropdown to **Most Downloads**. - :::image type="content" source="media/vs2019-extension-dialog-installer-project.png" alt-text="Screenshot of the Manage Extensions dialog Microsoft Visual Studio Installer Projects item selected." Lightbox="media/vs2019-extension-dialog-installer-project.png"::: + :::image type="content" source="media/vs2019-extension-dialog-installer-project.png" alt-text="Screenshot of the Manage Extensions dialog with Microsoft Visual Studio Installer Projects selected." Lightbox="media/vs2019-extension-dialog-installer-project.png"::: 1. In the list of extensions, select **Microsoft Visual Studio Installer Projects**. Choose the **Download** button. diff --git a/docs/windows/windows-desktop-wizard.md b/docs/windows/windows-desktop-wizard.md index 3509d67f7a4..ff53b068d36 100644 --- a/docs/windows/windows-desktop-wizard.md +++ b/docs/windows/windows-desktop-wizard.md @@ -10,7 +10,7 @@ ms.assetid: 5d7b3a5e-8461-479a-969a-67b7883725b9 The Windows Desktop Wizard replaces the Win32 Application Wizard in Visual Studio 2017 and later. The wizard allows you to create any of four types of C++ projects (listed in the heading in the table below). In each case, you can specify additional options that are appropriate for the type of project you open. -:::image type="content" source="media/windows-desktop-wizard.png" alt-text="Screenshot of the Windows Desktop Project wizard. Application type is set to Console Application (.exe) Precompiled Header and Security Development Lifecycle (SDL) checks are selected." Lightbox="media/windows-desktop-wizard.png"::: +:::image type="content" source="media/windows-desktop-wizard.png" alt-text="Screenshot of the Windows Desktop Project wizard. Application type is set to Console Application (.exe). The Precompiled Header and the Security Development Lifecycle (SDL) checkboxes are selected." Lightbox="media/windows-desktop-wizard.png"::: The following table indicates which options are available for each application type. From c4876849411d7a91b14a9ecb7deec040ec125c52 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 9 Sep 2025 21:14:14 +0800 Subject: [PATCH 1775/2255] Tweak wording in "C/C++ projects and build systems in Visual Studio" topic --- docs/build/projects-and-build-systems-cpp.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/build/projects-and-build-systems-cpp.md b/docs/build/projects-and-build-systems-cpp.md index 156cd4acfd8..e66f186177e 100644 --- a/docs/build/projects-and-build-systems-cpp.md +++ b/docs/build/projects-and-build-systems-cpp.md @@ -13,7 +13,7 @@ You can use Visual Studio to edit, compile, and build any C++ code base with ful ## C++ compilation -To *build* a C++ program means to compile source code from one or more files and then link those files into an executable file (.exe), a dynamic-load library (.dll) or a static library (.lib). +To *build* a C++ program means to compile source code from one or more files and then link those files into an executable file (.exe), a dynamic-link library (.dll) or a static library (.lib). Basic C++ compilation involves three main steps: @@ -39,13 +39,13 @@ Most real-world programs use some kind of *build system* to manage complexities The following list shows various options for Visual Studio Projects - C++: -- create a Visual Studio project by using the Visual Studio IDE and configure it by using property pages. Visual Studio projects produce programs that run on Windows. For an overview, see [Compiling and Building](/visualstudio/ide/compiling-and-building-in-visual-studio) in the Visual Studio documentation. +- Create a Visual Studio project by using the Visual Studio IDE and configure it by using property pages. Visual Studio projects produce programs that run on Windows. For an overview, see [Compiling and Building](/visualstudio/ide/compiling-and-building-in-visual-studio) in the Visual Studio documentation. -- open a folder that contains a CMakeLists.txt file. CMake support is integrated into Visual Studio. You can use the IDE to edit, test, and debug without modifying the CMake files in any way. This enables you to work in the same CMake project as others who might be using different editors. CMake is the recommended approach for cross-platform development. For more information, see [CMake projects](cmake-projects-in-visual-studio.md). +- Open a folder that contains a CMakeLists.txt file. CMake support is integrated into Visual Studio. You can use the IDE to edit, test, and debug without modifying the CMake files in any way. This enables you to work in the same CMake project as others who might be using different editors. CMake is the recommended approach for cross-platform development. For more information, see [CMake projects](cmake-projects-in-visual-studio.md). -- open a loose folder of source files with no project file. Visual Studio will use heuristics to build the files. This is an easy way to compile and run small console applications. For more information, see [Open Folder projects](open-folder-projects-cpp.md). +- Open a loose folder of source files with no project file. Visual Studio will use heuristics to build the files. This is an easy way to compile and run small console applications. For more information, see [Open Folder projects](open-folder-projects-cpp.md). -- open a folder that contains a makefile, or any other build system configuration file. You can configure Visual Studio to invoke any arbitrary build commands by adding JSON files to the folder. For more information, see [Open Folder projects](open-folder-projects-cpp.md). +- Open a folder that contains a makefile, or any other build system configuration file. You can configure Visual Studio to invoke any arbitrary build commands by adding JSON files to the folder. For more information, see [Open Folder projects](open-folder-projects-cpp.md). - Open a Windows makefile in Visual Studio. For more information, see [NMAKE Reference](reference/nmake-reference.md). @@ -86,7 +86,7 @@ How to target 64-bit x64 hardware with the MSVC build tools. How to use the MSVC build tools to target ARM hardware. [Optimizing Your Code](optimizing-your-code.md)\ -How to optimize your code in various ways including program guided optimizations. +How to optimize your code in various ways including profile-guided optimization (PGO). [Configuring Programs for Windows XP](configuring-programs-for-windows-xp.md)\ How to target Windows XP with the MSVC build tools. From 439ffbd982fe3b9e5093a3a6faabcb78910989b6 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 9 Sep 2025 21:18:13 +0800 Subject: [PATCH 1776/2255] Add backticks in "C/C++ projects and build systems in Visual Studio" topic --- docs/build/projects-and-build-systems-cpp.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/build/projects-and-build-systems-cpp.md b/docs/build/projects-and-build-systems-cpp.md index e66f186177e..901d969c248 100644 --- a/docs/build/projects-and-build-systems-cpp.md +++ b/docs/build/projects-and-build-systems-cpp.md @@ -13,25 +13,25 @@ You can use Visual Studio to edit, compile, and build any C++ code base with ful ## C++ compilation -To *build* a C++ program means to compile source code from one or more files and then link those files into an executable file (.exe), a dynamic-link library (.dll) or a static library (.lib). +To *build* a C++ program means to compile source code from one or more files and then link those files into an executable file (`.exe`), a dynamic-link library (`.dll`) or a static library (`.lib`). Basic C++ compilation involves three main steps: - The C++ preprocessor transforms all the #directives and macro definitions in each source file. This creates a *translation unit*. -- The C++ compiler compiles each translation unit into object files (.obj), applying whatever compiler options have been set. +- The C++ compiler compiles each translation unit into object files (`.obj`), applying whatever compiler options have been set. - The *linker* merges the object files into a single executable, applying the linker options that have been set. ## The MSVC toolset The Microsoft C++ compiler, linker, standard libraries, and related utilities make up the MSVC compiler toolset (also called a toolchain or "build tools"). These are included in Visual Studio. You can also download and use the command-line toolset as a free standalone package. For more information, see [Build Tools for Visual Studio](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) on the Visual Studio Downloads page. -You can build simple programs by invoking the MSVC compiler (cl.exe) directly from the command line. The following command accepts a single source code file, and invokes cl.exe to build an executable called *hello.exe*: +You can build simple programs by invoking the MSVC compiler (`cl.exe`) directly from the command line. The following command accepts a single source code file, and invokes `cl.exe` to build an executable called *`hello.exe`*: ```cmd cl /EHsc hello.cpp ``` -Here the compiler (cl.exe) automatically invokes the C++ preprocessor and the linker to produce the final output file. For more information, see [Building on the command line](building-on-the-command-line.md). +Here the compiler (`cl.exe`) automatically invokes the C++ preprocessor and the linker to produce the final output file. For more information, see [Building on the command line](building-on-the-command-line.md). ## Build systems and projects @@ -41,7 +41,7 @@ The following list shows various options for Visual Studio Projects - C++: - Create a Visual Studio project by using the Visual Studio IDE and configure it by using property pages. Visual Studio projects produce programs that run on Windows. For an overview, see [Compiling and Building](/visualstudio/ide/compiling-and-building-in-visual-studio) in the Visual Studio documentation. -- Open a folder that contains a CMakeLists.txt file. CMake support is integrated into Visual Studio. You can use the IDE to edit, test, and debug without modifying the CMake files in any way. This enables you to work in the same CMake project as others who might be using different editors. CMake is the recommended approach for cross-platform development. For more information, see [CMake projects](cmake-projects-in-visual-studio.md). +- Open a folder that contains a `CMakeLists.txt` file. CMake support is integrated into Visual Studio. You can use the IDE to edit, test, and debug without modifying the CMake files in any way. This enables you to work in the same CMake project as others who might be using different editors. CMake is the recommended approach for cross-platform development. For more information, see [CMake projects](cmake-projects-in-visual-studio.md). - Open a loose folder of source files with no project file. Visual Studio will use heuristics to build the files. This is an easy way to compile and run small console applications. For more information, see [Open Folder projects](open-folder-projects-cpp.md). @@ -51,7 +51,7 @@ The following list shows various options for Visual Studio Projects - C++: ## MSBuild from the command line -You can invoke MSBuild from the command line by passing it a .vcxproj file along with command-line options. This approach requires a good understanding of MSBuild, and is recommended only when necessary. For more information, see [MSBuild](msbuild-visual-cpp.md). +You can invoke MSBuild from the command line by passing it a `.vcxproj` file along with command-line options. This approach requires a good understanding of MSBuild, and is recommended only when necessary. For more information, see [MSBuild](msbuild-visual-cpp.md). ## In This Section @@ -74,7 +74,7 @@ Discusses how to use the C/C++ compiler and build tools directly from the comman How to create, debug, and deploy C/C++ DLLs (shared libraries) in Visual Studio. [Walkthrough: Creating and Using a Static Library](walkthrough-creating-and-using-a-static-library-cpp.md)\ -How to create a **.lib** binary file. +How to create a `.lib` binary file. [Building C/C++ Isolated Applications and Side-by-side Assemblies](building-c-cpp-isolated-applications-and-side-by-side-assemblies.md)\ Describes the deployment model for Windows Desktop applications, based on the idea of isolated applications and side-by-side assemblies. From 9bd711021949917f395f384a5a77df4b63499d30 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 9 Sep 2025 21:19:22 +0800 Subject: [PATCH 1777/2255] Update metadata in "C/C++ projects and build systems in Visual Studio" topic --- docs/build/projects-and-build-systems-cpp.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/build/projects-and-build-systems-cpp.md b/docs/build/projects-and-build-systems-cpp.md index 901d969c248..0b2403238fb 100644 --- a/docs/build/projects-and-build-systems-cpp.md +++ b/docs/build/projects-and-build-systems-cpp.md @@ -1,11 +1,10 @@ --- title: "C/C++ projects and build systems in Visual Studio" description: "Use Visual Studio to compile and build C++ projects for Windows, ARM, or Linux based on any project system." -ms.date: "07/17/2019" -helpviewer_keywords: ["builds [C++]", "C++ projects, building", "projects [C++], building", "builds [C++], options", "C++, build options"] -ms.assetid: fa6ed4ff-334a-4d99-b5e2-a1f83d2b3008 +ms.date: 07/17/2019 ms.topic: "overview" ms.custom: intro-overview +helpviewer_keywords: ["builds [C++]", "C++ projects, building", "projects [C++], building", "builds [C++], options", "C++, build options"] --- # C/C++ projects and build systems in Visual Studio From 4bd66dbdb98c4ee053b98a720fef86dc1532fc47 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 9 Sep 2025 21:38:51 +0800 Subject: [PATCH 1778/2255] Add "Remarks" heading in AddressSanitizer error references --- docs/sanitizers/error-alloc-dealloc-mismatch.md | 2 ++ docs/sanitizers/error-allocation-size-too-big.md | 2 ++ docs/sanitizers/error-calloc-overflow.md | 2 ++ docs/sanitizers/error-container-overflow.md | 2 ++ docs/sanitizers/error-double-free.md | 2 ++ docs/sanitizers/error-dynamic-stack-buffer-overflow.md | 2 ++ docs/sanitizers/error-global-buffer-overflow.md | 2 ++ docs/sanitizers/error-heap-buffer-overflow.md | 2 ++ docs/sanitizers/error-heap-use-after-free.md | 2 ++ docs/sanitizers/error-invalid-allocation-alignment.md | 2 ++ docs/sanitizers/error-memcpy-param-overlap.md | 2 ++ docs/sanitizers/error-new-delete-type-mismatch.md | 2 ++ docs/sanitizers/error-stack-buffer-overflow.md | 2 ++ docs/sanitizers/error-stack-buffer-underflow.md | 2 ++ docs/sanitizers/error-stack-use-after-return.md | 2 ++ docs/sanitizers/error-stack-use-after-scope.md | 2 ++ docs/sanitizers/error-strncat-param-overlap.md | 2 ++ docs/sanitizers/error-use-after-poison.md | 2 ++ 18 files changed, 36 insertions(+) diff --git a/docs/sanitizers/error-alloc-dealloc-mismatch.md b/docs/sanitizers/error-alloc-dealloc-mismatch.md index 22cf7f620f0..ad48d631fc4 100644 --- a/docs/sanitizers/error-alloc-dealloc-mismatch.md +++ b/docs/sanitizers/error-alloc-dealloc-mismatch.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["alloc-dealloc-mismatch error", "AddressSanitizer error al > Address Sanitizer Error: Mismatch between allocation and deallocation APIs +## Remarks + Enables runtime detection of mismatched memory operations that may lead to undefined behavior, such as: - `malloc` must be paired with `free`, not `delete` or `delete[]`. - `new` must be paired with `delete`, not `free` or `delete[]`. diff --git a/docs/sanitizers/error-allocation-size-too-big.md b/docs/sanitizers/error-allocation-size-too-big.md index 80638c6880a..0a7d7a95820 100644 --- a/docs/sanitizers/error-allocation-size-too-big.md +++ b/docs/sanitizers/error-allocation-size-too-big.md @@ -10,6 +10,8 @@ helpviewer_keywords: ["allocation-size-too-big error", "AddressSanitizer error a > Address Sanitizer Error: allocation-size-too-big +## Remarks + This example shows the error found when an allocation is too large for the heap. Example sourced from [LLVM compiler-rt test suite](https://github.com/llvm/llvm-project/tree/main/compiler-rt/test/asan/TestCases). ## Example diff --git a/docs/sanitizers/error-calloc-overflow.md b/docs/sanitizers/error-calloc-overflow.md index 5b944307d82..ba5e6c01ace 100644 --- a/docs/sanitizers/error-calloc-overflow.md +++ b/docs/sanitizers/error-calloc-overflow.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["calloc-overflow error", "AddressSanitizer error calloc-ov > Address Sanitizer Error: calloc-overflow +## Remarks + The CRT function [`calloc`](../c-runtime-library/reference/calloc.md) creates an array in memory with elements initialized to 0. The arguments can create an internal error that leads to a NULL pointer as the return value. ## Example diff --git a/docs/sanitizers/error-container-overflow.md b/docs/sanitizers/error-container-overflow.md index b4c1e4c7832..13a4d0a88dd 100644 --- a/docs/sanitizers/error-container-overflow.md +++ b/docs/sanitizers/error-container-overflow.md @@ -10,6 +10,8 @@ helpviewer_keywords: ["container-overflow error", "AddressSanitizer error contai > Address Sanitizer Error: Container overflow +## Remarks + In Visual Studio 2022 version 17.2 and later, the Microsoft Visual C++ standard library (STL) is partially enlightened to work with the AddressSanitizer. The following container types have annotations to detect memory access issues: | Standard container type | Disable annotations macro | Supported in version | diff --git a/docs/sanitizers/error-double-free.md b/docs/sanitizers/error-double-free.md index 84b4dd42741..2e51fd7df25 100644 --- a/docs/sanitizers/error-double-free.md +++ b/docs/sanitizers/error-double-free.md @@ -11,6 +11,8 @@ ms.custom: sfi-image-nochange > Address Sanitizer Error: Deallocation of freed memory +## Remarks + In C, you can call `free` erroneously. In C++, you can call `delete` more than once. In these examples, we show errors with `delete`, `free`, and `HeapCreate`. ## Example C++ - double `operator delete` diff --git a/docs/sanitizers/error-dynamic-stack-buffer-overflow.md b/docs/sanitizers/error-dynamic-stack-buffer-overflow.md index 4b0da9350d6..24ea4bc8e64 100644 --- a/docs/sanitizers/error-dynamic-stack-buffer-overflow.md +++ b/docs/sanitizers/error-dynamic-stack-buffer-overflow.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["dynamic-stack-buffer-overflow error", "AddressSanitizer e > Address Sanitizer Error: dynamic-stack-buffer-overflow +## Remarks + This example shows the error that results from a buffer access outside the bounds of a stack-allocated object. ## Example - `alloca` overflow (right) diff --git a/docs/sanitizers/error-global-buffer-overflow.md b/docs/sanitizers/error-global-buffer-overflow.md index 1f7885ddf8a..fe184786721 100644 --- a/docs/sanitizers/error-global-buffer-overflow.md +++ b/docs/sanitizers/error-global-buffer-overflow.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["global-buffer-overflow error", "AddressSanitizer error gl > Address Sanitizer Error: Global buffer overflow +## Remarks + The compiler generates metadata for any variable in the `.data` or `.bss` sections. These variables have language scope of global or file static. They're allocated in memory before `main()` starts. Global variables in C are treated much differently than in C++. This difference is because of the complex rules for linking C. In C, a global variable can be declared in several source files, and each definition can have different types. The compiler can't see all the possible definitions at once, but the linker can. For C, the linker defaults to selecting the largest-sized variable out of all the different declarations. diff --git a/docs/sanitizers/error-heap-buffer-overflow.md b/docs/sanitizers/error-heap-buffer-overflow.md index 497f9847db7..9366c9d6507 100644 --- a/docs/sanitizers/error-heap-buffer-overflow.md +++ b/docs/sanitizers/error-heap-buffer-overflow.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["heap-buffer-overflow error", "AddressSanitizer error heap > Address Sanitizer Error: Heap buffer overflow +## Remarks + This example demonstrates the error that results when a memory access occurs outside the bounds of a heap-allocated object. ## Example - classic heap buffer overflow diff --git a/docs/sanitizers/error-heap-use-after-free.md b/docs/sanitizers/error-heap-use-after-free.md index f0c827d5d28..ddbbc72ce85 100644 --- a/docs/sanitizers/error-heap-use-after-free.md +++ b/docs/sanitizers/error-heap-use-after-free.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["heap-use-after-free error", "AddressSanitizer error heap- > Address Sanitizer Error: Use of deallocated memory +## Remarks + We show three examples where storage in the heap can be allocated via `malloc`, `realloc` (C), and `new` (C++), along with a mistaken use of `volatile`. ## Example - `malloc` diff --git a/docs/sanitizers/error-invalid-allocation-alignment.md b/docs/sanitizers/error-invalid-allocation-alignment.md index 87b091b869d..7202890640e 100644 --- a/docs/sanitizers/error-invalid-allocation-alignment.md +++ b/docs/sanitizers/error-invalid-allocation-alignment.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["invalid-allocation-alignment error", "AddressSanitizer er > Address Sanitizer Error: invalid-allocation-alignment +## Remarks + The [`_aligned_malloc`](../c-runtime-library/reference/aligned-malloc.md) function requires a power of 2 for expressing the alignment. We simulate the "external" calculation of some alignment factor using an unoptimized global variable. ## Example diff --git a/docs/sanitizers/error-memcpy-param-overlap.md b/docs/sanitizers/error-memcpy-param-overlap.md index 5c5c46173de..c3151c02a52 100644 --- a/docs/sanitizers/error-memcpy-param-overlap.md +++ b/docs/sanitizers/error-memcpy-param-overlap.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["memcpy-param-overlap error", "AddressSanitizer error memc > Address Sanitizer Error: memcpy-param-overlap +## Remarks + > [!NOTE] > The `/Oi` flag is required to reliably detect `memcpy-param-overlap` errors. This flag tells the compiler to treat `memcpy` and other functions as intrinsics, which is necessary because some versions of the standard library implement them as such. Since ASan is a dynamic analysis tool, it can only detect errors with an observable runtime effect. Note that when `/O2` is also set, ASan may not be able to reliably detect `memcpy-param-overlap` errors because the intrinsic variant of these functions isn't guaranteed to be used. For more information, see [`/Oi` docs](../build/reference/oi-generate-intrinsic-functions.md). diff --git a/docs/sanitizers/error-new-delete-type-mismatch.md b/docs/sanitizers/error-new-delete-type-mismatch.md index 2c19b710af7..3ba02bb4cb6 100644 --- a/docs/sanitizers/error-new-delete-type-mismatch.md +++ b/docs/sanitizers/error-new-delete-type-mismatch.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["new-delete-type-mismatch error", "AddressSanitizer error > Address Sanitizer Error: Deallocation size different from allocation size +## Remarks + In this example, only `~Base`, and not `~Derived`, is called. The compiler generates a call to `~Base()` because the `Base` destructor isn't **`virtual`**. When we call `delete b`, the object's destructor is bound to the default definition. The code deletes an empty base class (or 1 byte on Windows). A missing **`virtual`** keyword on the destructor declaration is a common C++ error when using inheritance. ## Example - virtual destructor diff --git a/docs/sanitizers/error-stack-buffer-overflow.md b/docs/sanitizers/error-stack-buffer-overflow.md index c02011aaef5..ebac5b87faa 100644 --- a/docs/sanitizers/error-stack-buffer-overflow.md +++ b/docs/sanitizers/error-stack-buffer-overflow.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["stack-buffer-overflow error", "AddressSanitizer error sta > Address Sanitizer Error: Stack buffer overflow +## Remarks + A stack buffer overflow can happen many ways in C or C++. We provide several examples for this category of error that you can catch by a simple recompile. ## Example - stack buffer overflow diff --git a/docs/sanitizers/error-stack-buffer-underflow.md b/docs/sanitizers/error-stack-buffer-underflow.md index a780be1f668..32dcce7df39 100644 --- a/docs/sanitizers/error-stack-buffer-underflow.md +++ b/docs/sanitizers/error-stack-buffer-underflow.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["stack-buffer-underflow error", "AddressSanitizer error st > Address Sanitizer Error: Stack buffer underflow +## Remarks + These error messages indicate a memory access to somewhere before the beginning of a stack variable. ## Example - local array underflow diff --git a/docs/sanitizers/error-stack-use-after-return.md b/docs/sanitizers/error-stack-use-after-return.md index 5f6154e217b..e2e05d22498 100644 --- a/docs/sanitizers/error-stack-use-after-return.md +++ b/docs/sanitizers/error-stack-use-after-return.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["stack-use-after-return error", "AddressSanitizer error st > Address Sanitizer Error: Use of stack memory after return +## Remarks + This check requires code generation that's activated by an extra compiler option, [`/fsanitize-address-use-after-return`](../build/reference/fsanitize.md), and by setting the environment variable `ASAN_OPTIONS=detect_stack_use_after_return=1`. This check can slow your application down substantially. Consider the [Clang summary](https://github.com/google/sanitizers/wiki/AddressSanitizerUseAfterReturn) of the algorithm that supports use after return, and the larger performance costs. diff --git a/docs/sanitizers/error-stack-use-after-scope.md b/docs/sanitizers/error-stack-use-after-scope.md index fb2ff6df9c9..86c5f3f546e 100644 --- a/docs/sanitizers/error-stack-use-after-scope.md +++ b/docs/sanitizers/error-stack-use-after-scope.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["stack-use-after-scope error", "AddressSanitizer error sta > Address Sanitizer Error: Use of out-of-scope stack memory +## Remarks + The use of a stack address outside the lexical scope of a variable's lifetime can happen many ways in C or C++. ## Example 1 - simple nested local diff --git a/docs/sanitizers/error-strncat-param-overlap.md b/docs/sanitizers/error-strncat-param-overlap.md index 52c5f31142c..7b488eaa132 100644 --- a/docs/sanitizers/error-strncat-param-overlap.md +++ b/docs/sanitizers/error-strncat-param-overlap.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["strncat-param-overlap error", "AddressSanitizer error str > Address Sanitizer Error: strncat-param-overlap +## Remarks + Code that moves memory in overlapping buffer can cause hard-to-diagnose errors. ## Example diff --git a/docs/sanitizers/error-use-after-poison.md b/docs/sanitizers/error-use-after-poison.md index f6c58a86017..e38a24c55e7 100644 --- a/docs/sanitizers/error-use-after-poison.md +++ b/docs/sanitizers/error-use-after-poison.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["use-after-poison error", "AddressSanitizer error use-afte > Address Sanitizer Error: Use of poisoned memory +## Remarks + A developer can manually poison memory to customize debugging. ## Example From 764ef4ed78db55a75b9f9aad20ae5544f5c820da Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 9 Sep 2025 21:48:37 +0800 Subject: [PATCH 1779/2255] Clean up superfluous `./` link prefix in AddressSanitizer error references --- docs/sanitizers/error-allocation-size-too-big.md | 16 ++++++++-------- docs/sanitizers/error-calloc-overflow.md | 16 ++++++++-------- docs/sanitizers/error-container-overflow.md | 16 ++++++++-------- docs/sanitizers/error-double-free.md | 16 ++++++++-------- .../error-dynamic-stack-buffer-overflow.md | 16 ++++++++-------- docs/sanitizers/error-global-buffer-overflow.md | 16 ++++++++-------- docs/sanitizers/error-heap-buffer-overflow.md | 16 ++++++++-------- docs/sanitizers/error-heap-use-after-free.md | 16 ++++++++-------- .../error-invalid-allocation-alignment.md | 16 ++++++++-------- docs/sanitizers/error-memcpy-param-overlap.md | 16 ++++++++-------- .../sanitizers/error-new-delete-type-mismatch.md | 16 ++++++++-------- docs/sanitizers/error-stack-buffer-overflow.md | 16 ++++++++-------- docs/sanitizers/error-stack-buffer-underflow.md | 16 ++++++++-------- docs/sanitizers/error-stack-use-after-return.md | 16 ++++++++-------- docs/sanitizers/error-stack-use-after-scope.md | 16 ++++++++-------- docs/sanitizers/error-strncat-param-overlap.md | 16 ++++++++-------- docs/sanitizers/error-use-after-poison.md | 16 ++++++++-------- 17 files changed, 136 insertions(+), 136 deletions(-) diff --git a/docs/sanitizers/error-allocation-size-too-big.md b/docs/sanitizers/error-allocation-size-too-big.md index 0a7d7a95820..8cfe9d85383 100644 --- a/docs/sanitizers/error-allocation-size-too-big.md +++ b/docs/sanitizers/error-allocation-size-too-big.md @@ -52,11 +52,11 @@ devenv /debugexe example1.exe ## See also -[AddressSanitizer overview](./asan.md)\ -[AddressSanitizer known issues](./asan-known-issues.md)\ -[AddressSanitizer build and language reference](./asan-building.md)\ -[AddressSanitizer runtime reference](./asan-runtime.md)\ -[AddressSanitizer shadow bytes](./asan-shadow-bytes.md)\ -[AddressSanitizer cloud or distributed testing](./asan-offline-crash-dumps.md)\ -[AddressSanitizer debugger integration](./asan-debugger-integration.md)\ -[AddressSanitizer error examples](./asan-error-examples.md) +[AddressSanitizer overview](asan.md)\ +[AddressSanitizer known issues](asan-known-issues.md)\ +[AddressSanitizer build and language reference](asan-building.md)\ +[AddressSanitizer runtime reference](asan-runtime.md)\ +[AddressSanitizer shadow bytes](asan-shadow-bytes.md)\ +[AddressSanitizer cloud or distributed testing](asan-offline-crash-dumps.md)\ +[AddressSanitizer debugger integration](asan-debugger-integration.md)\ +[AddressSanitizer error examples](asan-error-examples.md) diff --git a/docs/sanitizers/error-calloc-overflow.md b/docs/sanitizers/error-calloc-overflow.md index ba5e6c01ace..eff22183f37 100644 --- a/docs/sanitizers/error-calloc-overflow.md +++ b/docs/sanitizers/error-calloc-overflow.md @@ -47,11 +47,11 @@ devenv /debugexe example1.exe ## See also -[AddressSanitizer overview](./asan.md)\ -[AddressSanitizer known issues](./asan-known-issues.md)\ -[AddressSanitizer build and language reference](./asan-building.md)\ -[AddressSanitizer runtime reference](./asan-runtime.md)\ -[AddressSanitizer shadow bytes](./asan-shadow-bytes.md)\ -[AddressSanitizer cloud or distributed testing](./asan-offline-crash-dumps.md)\ -[AddressSanitizer debugger integration](./asan-debugger-integration.md)\ -[AddressSanitizer error examples](./asan-error-examples.md) +[AddressSanitizer overview](asan.md)\ +[AddressSanitizer known issues](asan-known-issues.md)\ +[AddressSanitizer build and language reference](asan-building.md)\ +[AddressSanitizer runtime reference](asan-runtime.md)\ +[AddressSanitizer shadow bytes](asan-shadow-bytes.md)\ +[AddressSanitizer cloud or distributed testing](asan-offline-crash-dumps.md)\ +[AddressSanitizer debugger integration](asan-debugger-integration.md)\ +[AddressSanitizer error examples](asan-error-examples.md) diff --git a/docs/sanitizers/error-container-overflow.md b/docs/sanitizers/error-container-overflow.md index 13a4d0a88dd..39b471251df 100644 --- a/docs/sanitizers/error-container-overflow.md +++ b/docs/sanitizers/error-container-overflow.md @@ -92,11 +92,11 @@ If you want the implementation to trust that your custom allocator is handling t ## See also -[AddressSanitizer overview](./asan.md)\ -[AddressSanitizer known issues](./asan-known-issues.md)\ -[AddressSanitizer build and language reference](./asan-building.md)\ -[AddressSanitizer runtime reference](./asan-runtime.md)\ -[AddressSanitizer shadow bytes](./asan-shadow-bytes.md)\ -[AddressSanitizer cloud or distributed testing](./asan-offline-crash-dumps.md)\ -[AddressSanitizer debugger integration](./asan-debugger-integration.md)\ -[AddressSanitizer error examples](./asan-error-examples.md) +[AddressSanitizer overview](asan.md)\ +[AddressSanitizer known issues](asan-known-issues.md)\ +[AddressSanitizer build and language reference](asan-building.md)\ +[AddressSanitizer runtime reference](asan-runtime.md)\ +[AddressSanitizer shadow bytes](asan-shadow-bytes.md)\ +[AddressSanitizer cloud or distributed testing](asan-offline-crash-dumps.md)\ +[AddressSanitizer debugger integration](asan-debugger-integration.md)\ +[AddressSanitizer error examples](asan-error-examples.md) diff --git a/docs/sanitizers/error-double-free.md b/docs/sanitizers/error-double-free.md index 2e51fd7df25..7623468b3fe 100644 --- a/docs/sanitizers/error-double-free.md +++ b/docs/sanitizers/error-double-free.md @@ -108,11 +108,11 @@ devenv /debugexe example3.exe ## See also -[AddressSanitizer overview](./asan.md)\ -[AddressSanitizer known issues](./asan-known-issues.md)\ -[AddressSanitizer build and language reference](./asan-building.md)\ -[AddressSanitizer runtime reference](./asan-runtime.md)\ -[AddressSanitizer shadow bytes](./asan-shadow-bytes.md)\ -[AddressSanitizer cloud or distributed testing](./asan-offline-crash-dumps.md)\ -[AddressSanitizer debugger integration](./asan-debugger-integration.md)\ -[AddressSanitizer error examples](./asan-error-examples.md) +[AddressSanitizer overview](asan.md)\ +[AddressSanitizer known issues](asan-known-issues.md)\ +[AddressSanitizer build and language reference](asan-building.md)\ +[AddressSanitizer runtime reference](asan-runtime.md)\ +[AddressSanitizer shadow bytes](asan-shadow-bytes.md)\ +[AddressSanitizer cloud or distributed testing](asan-offline-crash-dumps.md)\ +[AddressSanitizer debugger integration](asan-debugger-integration.md)\ +[AddressSanitizer error examples](asan-error-examples.md) diff --git a/docs/sanitizers/error-dynamic-stack-buffer-overflow.md b/docs/sanitizers/error-dynamic-stack-buffer-overflow.md index 24ea4bc8e64..3ff4780ae61 100644 --- a/docs/sanitizers/error-dynamic-stack-buffer-overflow.md +++ b/docs/sanitizers/error-dynamic-stack-buffer-overflow.md @@ -172,11 +172,11 @@ devenv /debugexe example3.exe ## See also -[AddressSanitizer overview](./asan.md)\ -[AddressSanitizer known issues](./asan-known-issues.md)\ -[AddressSanitizer build and language reference](./asan-building.md)\ -[AddressSanitizer runtime reference](./asan-runtime.md)\ -[AddressSanitizer shadow bytes](./asan-shadow-bytes.md)\ -[AddressSanitizer cloud or distributed testing](./asan-offline-crash-dumps.md)\ -[AddressSanitizer debugger integration](./asan-debugger-integration.md)\ -[AddressSanitizer error examples](./asan-error-examples.md) +[AddressSanitizer overview](asan.md)\ +[AddressSanitizer known issues](asan-known-issues.md)\ +[AddressSanitizer build and language reference](asan-building.md)\ +[AddressSanitizer runtime reference](asan-runtime.md)\ +[AddressSanitizer shadow bytes](asan-shadow-bytes.md)\ +[AddressSanitizer cloud or distributed testing](asan-offline-crash-dumps.md)\ +[AddressSanitizer debugger integration](asan-debugger-integration.md)\ +[AddressSanitizer error examples](asan-error-examples.md) diff --git a/docs/sanitizers/error-global-buffer-overflow.md b/docs/sanitizers/error-global-buffer-overflow.md index fe184786721..68f2fbb17d9 100644 --- a/docs/sanitizers/error-global-buffer-overflow.md +++ b/docs/sanitizers/error-global-buffer-overflow.md @@ -154,11 +154,11 @@ devenv /debugexe example3.exe -l ## See also -[AddressSanitizer overview](./asan.md)\ -[AddressSanitizer known issues](./asan-known-issues.md)\ -[AddressSanitizer build and language reference](./asan-building.md)\ -[AddressSanitizer runtime reference](./asan-runtime.md)\ -[AddressSanitizer shadow bytes](./asan-shadow-bytes.md)\ -[AddressSanitizer cloud or distributed testing](./asan-offline-crash-dumps.md)\ -[AddressSanitizer debugger integration](./asan-debugger-integration.md)\ -[AddressSanitizer error examples](./asan-error-examples.md) +[AddressSanitizer overview](asan.md)\ +[AddressSanitizer known issues](asan-known-issues.md)\ +[AddressSanitizer build and language reference](asan-building.md)\ +[AddressSanitizer runtime reference](asan-runtime.md)\ +[AddressSanitizer shadow bytes](asan-shadow-bytes.md)\ +[AddressSanitizer cloud or distributed testing](asan-offline-crash-dumps.md)\ +[AddressSanitizer debugger integration](asan-debugger-integration.md)\ +[AddressSanitizer error examples](asan-error-examples.md) diff --git a/docs/sanitizers/error-heap-buffer-overflow.md b/docs/sanitizers/error-heap-buffer-overflow.md index 9366c9d6507..728edfe0575 100644 --- a/docs/sanitizers/error-heap-buffer-overflow.md +++ b/docs/sanitizers/error-heap-buffer-overflow.md @@ -111,11 +111,11 @@ devenv /debugexe example3.exe ## See also -[AddressSanitizer overview](./asan.md)\ -[AddressSanitizer known issues](./asan-known-issues.md)\ -[AddressSanitizer build and language reference](./asan-building.md)\ -[AddressSanitizer runtime reference](./asan-runtime.md)\ -[AddressSanitizer shadow bytes](./asan-shadow-bytes.md)\ -[AddressSanitizer cloud or distributed testing](./asan-offline-crash-dumps.md)\ -[AddressSanitizer debugger integration](./asan-debugger-integration.md)\ -[AddressSanitizer error examples](./asan-error-examples.md) +[AddressSanitizer overview](asan.md)\ +[AddressSanitizer known issues](asan-known-issues.md)\ +[AddressSanitizer build and language reference](asan-building.md)\ +[AddressSanitizer runtime reference](asan-runtime.md)\ +[AddressSanitizer shadow bytes](asan-shadow-bytes.md)\ +[AddressSanitizer cloud or distributed testing](asan-offline-crash-dumps.md)\ +[AddressSanitizer debugger integration](asan-debugger-integration.md)\ +[AddressSanitizer error examples](asan-error-examples.md) diff --git a/docs/sanitizers/error-heap-use-after-free.md b/docs/sanitizers/error-heap-use-after-free.md index ddbbc72ce85..6ddd65cbb5e 100644 --- a/docs/sanitizers/error-heap-use-after-free.md +++ b/docs/sanitizers/error-heap-use-after-free.md @@ -146,11 +146,11 @@ The exception thrown dialog points to line 12, *x = 42, and says: Address Saniti ## See also -[AddressSanitizer overview](./asan.md)\ -[AddressSanitizer known issues](./asan-known-issues.md)\ -[AddressSanitizer build and language reference](./asan-building.md)\ -[AddressSanitizer runtime reference](./asan-runtime.md)\ -[AddressSanitizer shadow bytes](./asan-shadow-bytes.md)\ -[AddressSanitizer cloud or distributed testing](./asan-offline-crash-dumps.md)\ -[AddressSanitizer debugger integration](./asan-debugger-integration.md)\ -[AddressSanitizer error examples](./asan-error-examples.md) +[AddressSanitizer overview](asan.md)\ +[AddressSanitizer known issues](asan-known-issues.md)\ +[AddressSanitizer build and language reference](asan-building.md)\ +[AddressSanitizer runtime reference](asan-runtime.md)\ +[AddressSanitizer shadow bytes](asan-shadow-bytes.md)\ +[AddressSanitizer cloud or distributed testing](asan-offline-crash-dumps.md)\ +[AddressSanitizer debugger integration](asan-debugger-integration.md)\ +[AddressSanitizer error examples](asan-error-examples.md) diff --git a/docs/sanitizers/error-invalid-allocation-alignment.md b/docs/sanitizers/error-invalid-allocation-alignment.md index 7202890640e..bb3a05c022f 100644 --- a/docs/sanitizers/error-invalid-allocation-alignment.md +++ b/docs/sanitizers/error-invalid-allocation-alignment.md @@ -44,11 +44,11 @@ devenv /debugexe example1.exe ## See also -[AddressSanitizer overview](./asan.md)\ -[AddressSanitizer known issues](./asan-known-issues.md)\ -[AddressSanitizer build and language reference](./asan-building.md)\ -[AddressSanitizer runtime reference](./asan-runtime.md)\ -[AddressSanitizer shadow bytes](./asan-shadow-bytes.md)\ -[AddressSanitizer cloud or distributed testing](./asan-offline-crash-dumps.md)\ -[AddressSanitizer debugger integration](./asan-debugger-integration.md)\ -[AddressSanitizer error examples](./asan-error-examples.md) +[AddressSanitizer overview](asan.md)\ +[AddressSanitizer known issues](asan-known-issues.md)\ +[AddressSanitizer build and language reference](asan-building.md)\ +[AddressSanitizer runtime reference](asan-runtime.md)\ +[AddressSanitizer shadow bytes](asan-shadow-bytes.md)\ +[AddressSanitizer cloud or distributed testing](asan-offline-crash-dumps.md)\ +[AddressSanitizer debugger integration](asan-debugger-integration.md)\ +[AddressSanitizer error examples](asan-error-examples.md) diff --git a/docs/sanitizers/error-memcpy-param-overlap.md b/docs/sanitizers/error-memcpy-param-overlap.md index c3151c02a52..419cbeb8037 100644 --- a/docs/sanitizers/error-memcpy-param-overlap.md +++ b/docs/sanitizers/error-memcpy-param-overlap.md @@ -50,11 +50,11 @@ devenv /debugexe example1.exe ## See also -[AddressSanitizer overview](./asan.md)\ -[AddressSanitizer known issues](./asan-known-issues.md)\ -[AddressSanitizer build and language reference](./asan-building.md)\ -[AddressSanitizer runtime reference](./asan-runtime.md)\ -[AddressSanitizer shadow bytes](./asan-shadow-bytes.md)\ -[AddressSanitizer cloud or distributed testing](./asan-offline-crash-dumps.md)\ -[AddressSanitizer debugger integration](./asan-debugger-integration.md)\ -[AddressSanitizer error examples](./asan-error-examples.md) +[AddressSanitizer overview](asan.md)\ +[AddressSanitizer known issues](asan-known-issues.md)\ +[AddressSanitizer build and language reference](asan-building.md)\ +[AddressSanitizer runtime reference](asan-runtime.md)\ +[AddressSanitizer shadow bytes](asan-shadow-bytes.md)\ +[AddressSanitizer cloud or distributed testing](asan-offline-crash-dumps.md)\ +[AddressSanitizer debugger integration](asan-debugger-integration.md)\ +[AddressSanitizer error examples](asan-error-examples.md) diff --git a/docs/sanitizers/error-new-delete-type-mismatch.md b/docs/sanitizers/error-new-delete-type-mismatch.md index 3ba02bb4cb6..708b39a76c6 100644 --- a/docs/sanitizers/error-new-delete-type-mismatch.md +++ b/docs/sanitizers/error-new-delete-type-mismatch.md @@ -66,11 +66,11 @@ devenv /debugexe example1.exe ## See also -[AddressSanitizer overview](./asan.md)\ -[AddressSanitizer known issues](./asan-known-issues.md)\ -[AddressSanitizer build and language reference](./asan-building.md)\ -[AddressSanitizer runtime reference](./asan-runtime.md)\ -[AddressSanitizer shadow bytes](./asan-shadow-bytes.md)\ -[AddressSanitizer cloud or distributed testing](./asan-offline-crash-dumps.md)\ -[AddressSanitizer debugger integration](./asan-debugger-integration.md)\ -[AddressSanitizer error examples](./asan-error-examples.md) +[AddressSanitizer overview](asan.md)\ +[AddressSanitizer known issues](asan-known-issues.md)\ +[AddressSanitizer build and language reference](asan-building.md)\ +[AddressSanitizer runtime reference](asan-runtime.md)\ +[AddressSanitizer shadow bytes](asan-shadow-bytes.md)\ +[AddressSanitizer cloud or distributed testing](asan-offline-crash-dumps.md)\ +[AddressSanitizer debugger integration](asan-debugger-integration.md)\ +[AddressSanitizer error examples](asan-error-examples.md) diff --git a/docs/sanitizers/error-stack-buffer-overflow.md b/docs/sanitizers/error-stack-buffer-overflow.md index ebac5b87faa..403ee7b16bb 100644 --- a/docs/sanitizers/error-stack-buffer-overflow.md +++ b/docs/sanitizers/error-stack-buffer-overflow.md @@ -114,11 +114,11 @@ devenv /debugexe example3.exe ## See also -[AddressSanitizer overview](./asan.md)\ -[AddressSanitizer known issues](./asan-known-issues.md)\ -[AddressSanitizer build and language reference](./asan-building.md)\ -[AddressSanitizer runtime reference](./asan-runtime.md)\ -[AddressSanitizer shadow bytes](./asan-shadow-bytes.md)\ -[AddressSanitizer cloud or distributed testing](./asan-offline-crash-dumps.md)\ -[AddressSanitizer debugger integration](./asan-debugger-integration.md)\ -[AddressSanitizer error examples](./asan-error-examples.md) +[AddressSanitizer overview](asan.md)\ +[AddressSanitizer known issues](asan-known-issues.md)\ +[AddressSanitizer build and language reference](asan-building.md)\ +[AddressSanitizer runtime reference](asan-runtime.md)\ +[AddressSanitizer shadow bytes](asan-shadow-bytes.md)\ +[AddressSanitizer cloud or distributed testing](asan-offline-crash-dumps.md)\ +[AddressSanitizer debugger integration](asan-debugger-integration.md)\ +[AddressSanitizer error examples](asan-error-examples.md) diff --git a/docs/sanitizers/error-stack-buffer-underflow.md b/docs/sanitizers/error-stack-buffer-underflow.md index 32dcce7df39..c8cf463ff24 100644 --- a/docs/sanitizers/error-stack-buffer-underflow.md +++ b/docs/sanitizers/error-stack-buffer-underflow.md @@ -82,11 +82,11 @@ devenv /debugexe example2.exe ## See also -[AddressSanitizer overview](./asan.md)\ -[AddressSanitizer known issues](./asan-known-issues.md)\ -[AddressSanitizer build and language reference](./asan-building.md)\ -[AddressSanitizer runtime reference](./asan-runtime.md)\ -[AddressSanitizer shadow bytes](./asan-shadow-bytes.md)\ -[AddressSanitizer cloud or distributed testing](./asan-offline-crash-dumps.md)\ -[AddressSanitizer debugger integration](./asan-debugger-integration.md)\ -[AddressSanitizer error examples](./asan-error-examples.md) +[AddressSanitizer overview](asan.md)\ +[AddressSanitizer known issues](asan-known-issues.md)\ +[AddressSanitizer build and language reference](asan-building.md)\ +[AddressSanitizer runtime reference](asan-runtime.md)\ +[AddressSanitizer shadow bytes](asan-shadow-bytes.md)\ +[AddressSanitizer cloud or distributed testing](asan-offline-crash-dumps.md)\ +[AddressSanitizer debugger integration](asan-debugger-integration.md)\ +[AddressSanitizer error examples](asan-error-examples.md) diff --git a/docs/sanitizers/error-stack-use-after-return.md b/docs/sanitizers/error-stack-use-after-return.md index e2e05d22498..f3ee909411e 100644 --- a/docs/sanitizers/error-stack-use-after-return.md +++ b/docs/sanitizers/error-stack-use-after-return.md @@ -111,11 +111,11 @@ ASAN is a form of dynamic analysis, which means it can only detect bad code that ## See also -[AddressSanitizer overview](./asan.md)\ -[AddressSanitizer known issues](./asan-known-issues.md)\ -[AddressSanitizer build and language reference](./asan-building.md)\ -[AddressSanitizer runtime reference](./asan-runtime.md)\ -[AddressSanitizer shadow bytes](./asan-shadow-bytes.md)\ -[AddressSanitizer cloud or distributed testing](./asan-offline-crash-dumps.md)\ -[AddressSanitizer debugger integration](./asan-debugger-integration.md)\ -[AddressSanitizer error examples](./asan-error-examples.md) +[AddressSanitizer overview](asan.md)\ +[AddressSanitizer known issues](asan-known-issues.md)\ +[AddressSanitizer build and language reference](asan-building.md)\ +[AddressSanitizer runtime reference](asan-runtime.md)\ +[AddressSanitizer shadow bytes](asan-shadow-bytes.md)\ +[AddressSanitizer cloud or distributed testing](asan-offline-crash-dumps.md)\ +[AddressSanitizer debugger integration](asan-debugger-integration.md)\ +[AddressSanitizer error examples](asan-error-examples.md) diff --git a/docs/sanitizers/error-stack-use-after-scope.md b/docs/sanitizers/error-stack-use-after-scope.md index 86c5f3f546e..951ca39bb4c 100644 --- a/docs/sanitizers/error-stack-use-after-scope.md +++ b/docs/sanitizers/error-stack-use-after-scope.md @@ -161,11 +161,11 @@ ASAN is a form of dynamic analysis, which means it can only detect bad code that ## See also -[AddressSanitizer overview](./asan.md)\ -[AddressSanitizer known issues](./asan-known-issues.md)\ -[AddressSanitizer build and language reference](./asan-building.md)\ -[AddressSanitizer runtime reference](./asan-runtime.md)\ -[AddressSanitizer shadow bytes](./asan-shadow-bytes.md)\ -[AddressSanitizer cloud or distributed testing](./asan-offline-crash-dumps.md)\ -[AddressSanitizer debugger integration](./asan-debugger-integration.md)\ -[AddressSanitizer error examples](./asan-error-examples.md) +[AddressSanitizer overview](asan.md)\ +[AddressSanitizer known issues](asan-known-issues.md)\ +[AddressSanitizer build and language reference](asan-building.md)\ +[AddressSanitizer runtime reference](asan-runtime.md)\ +[AddressSanitizer shadow bytes](asan-shadow-bytes.md)\ +[AddressSanitizer cloud or distributed testing](asan-offline-crash-dumps.md)\ +[AddressSanitizer debugger integration](asan-debugger-integration.md)\ +[AddressSanitizer error examples](asan-error-examples.md) diff --git a/docs/sanitizers/error-strncat-param-overlap.md b/docs/sanitizers/error-strncat-param-overlap.md index 7b488eaa132..e5569f4faba 100644 --- a/docs/sanitizers/error-strncat-param-overlap.md +++ b/docs/sanitizers/error-strncat-param-overlap.md @@ -49,11 +49,11 @@ devenv /debugexe example1.exe ## See also -[AddressSanitizer overview](./asan.md)\ -[AddressSanitizer known issues](./asan-known-issues.md)\ -[AddressSanitizer build and language reference](./asan-building.md)\ -[AddressSanitizer runtime reference](./asan-runtime.md)\ -[AddressSanitizer shadow bytes](./asan-shadow-bytes.md)\ -[AddressSanitizer cloud or distributed testing](./asan-offline-crash-dumps.md)\ -[AddressSanitizer debugger integration](./asan-debugger-integration.md)\ -[AddressSanitizer error examples](./asan-error-examples.md) +[AddressSanitizer overview](asan.md)\ +[AddressSanitizer known issues](asan-known-issues.md)\ +[AddressSanitizer build and language reference](asan-building.md)\ +[AddressSanitizer runtime reference](asan-runtime.md)\ +[AddressSanitizer shadow bytes](asan-shadow-bytes.md)\ +[AddressSanitizer cloud or distributed testing](asan-offline-crash-dumps.md)\ +[AddressSanitizer debugger integration](asan-debugger-integration.md)\ +[AddressSanitizer error examples](asan-error-examples.md) diff --git a/docs/sanitizers/error-use-after-poison.md b/docs/sanitizers/error-use-after-poison.md index e38a24c55e7..d8347318d35 100644 --- a/docs/sanitizers/error-use-after-poison.md +++ b/docs/sanitizers/error-use-after-poison.md @@ -47,11 +47,11 @@ devenv /debugexe example1.exe ## See also -[AddressSanitizer overview](./asan.md)\ -[AddressSanitizer known issues](./asan-known-issues.md)\ -[AddressSanitizer build and language reference](./asan-building.md)\ -[AddressSanitizer runtime reference](./asan-runtime.md)\ -[AddressSanitizer shadow bytes](./asan-shadow-bytes.md)\ -[AddressSanitizer cloud or distributed testing](./asan-offline-crash-dumps.md)\ -[AddressSanitizer debugger integration](./asan-debugger-integration.md)\ -[AddressSanitizer error examples](./asan-error-examples.md) +[AddressSanitizer overview](asan.md)\ +[AddressSanitizer known issues](asan-known-issues.md)\ +[AddressSanitizer build and language reference](asan-building.md)\ +[AddressSanitizer runtime reference](asan-runtime.md)\ +[AddressSanitizer shadow bytes](asan-shadow-bytes.md)\ +[AddressSanitizer cloud or distributed testing](asan-offline-crash-dumps.md)\ +[AddressSanitizer debugger integration](asan-debugger-integration.md)\ +[AddressSanitizer error examples](asan-error-examples.md) From cdbe99c03a327260094ecbf108d13134248a98cf Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 9 Sep 2025 22:02:57 +0800 Subject: [PATCH 1780/2255] Add blockquotes for error messages in range [U1000, U1100] --- docs/error-messages/tool-errors/nmake-fatal-error-u1001.md | 2 +- docs/error-messages/tool-errors/nmake-fatal-error-u1007.md | 2 +- docs/error-messages/tool-errors/nmake-fatal-error-u1023.md | 2 +- docs/error-messages/tool-errors/nmake-fatal-error-u1033.md | 2 +- docs/error-messages/tool-errors/nmake-fatal-error-u1034.md | 2 +- docs/error-messages/tool-errors/nmake-fatal-error-u1035.md | 2 +- docs/error-messages/tool-errors/nmake-fatal-error-u1036.md | 2 +- docs/error-messages/tool-errors/nmake-fatal-error-u1050.md | 2 +- docs/error-messages/tool-errors/nmake-fatal-error-u1051.md | 2 +- docs/error-messages/tool-errors/nmake-fatal-error-u1055.md | 2 +- docs/error-messages/tool-errors/nmake-fatal-error-u1056.md | 2 +- docs/error-messages/tool-errors/nmake-fatal-error-u1064.md | 2 +- docs/error-messages/tool-errors/nmake-fatal-error-u1065.md | 2 +- docs/error-messages/tool-errors/nmake-fatal-error-u1070.md | 2 +- docs/error-messages/tool-errors/nmake-fatal-error-u1071.md | 2 +- docs/error-messages/tool-errors/nmake-fatal-error-u1073.md | 2 +- docs/error-messages/tool-errors/nmake-fatal-error-u1076.md | 2 +- docs/error-messages/tool-errors/nmake-fatal-error-u1077.md | 2 +- docs/error-messages/tool-errors/nmake-fatal-error-u1078.md | 2 +- docs/error-messages/tool-errors/nmake-fatal-error-u1083.md | 2 +- docs/error-messages/tool-errors/nmake-fatal-error-u1086.md | 2 +- docs/error-messages/tool-errors/nmake-fatal-error-u1087.md | 2 +- docs/error-messages/tool-errors/nmake-fatal-error-u1088.md | 2 +- docs/error-messages/tool-errors/nmake-fatal-error-u1095.md | 2 +- docs/error-messages/tool-errors/nmake-fatal-error-u1097.md | 2 +- docs/error-messages/tool-errors/nmake-fatal-error-u1099.md | 2 +- 26 files changed, 26 insertions(+), 26 deletions(-) diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1001.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1001.md index 2b0e13a756c..4e79c1e3c92 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1001.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1001.md @@ -8,7 +8,7 @@ ms.assetid: 5d7da559-6cbd-44d6-848c-aaf54cae0d1a --- # NMAKE Fatal Error U1001 -syntax error : illegal character 'character' in macro +> syntax error : illegal character 'character' in macro The given character appears in a macro but is not a letter, number, or underscore. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1007.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1007.md index 2b2e8d222f2..1e322fcabfa 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1007.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1007.md @@ -8,7 +8,7 @@ ms.assetid: 64fd78a6-5b27-4aa8-92ea-f1c55e6e5edd --- # NMAKE Fatal Error U1007 -double quotation mark not allowed in name +> double quotation mark not allowed in name The specified target name or filename contained a double quotation mark (**"**). diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1023.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1023.md index a3bbd00e45e..4bda99b584f 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1023.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1023.md @@ -8,7 +8,7 @@ ms.assetid: 22d4c469-85da-43ee-86d1-171b1b99217d --- # NMAKE Fatal Error U1023 -syntax error in expression +> syntax error in expression An expression is invalid. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1033.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1033.md index 5eff0091be8..8f0a817c631 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1033.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1033.md @@ -8,7 +8,7 @@ ms.assetid: c146f7b5-7d5c-4329-a522-28a648546016 --- # NMAKE Fatal Error U1033 -syntax error : 'string' unexpected +> syntax error : 'string' unexpected The string is not part of the valid syntax for a makefile. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1034.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1034.md index 5388c11124a..136eb30cb0e 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1034.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1034.md @@ -8,6 +8,6 @@ ms.assetid: 27e678c2-23e2-4247-87f7-66493784af33 --- # NMAKE Fatal Error U1034 -syntax error : separator missing +> syntax error : separator missing The colon (**:**) that separates targets and dependents is missing. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1035.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1035.md index 88c3fedee2d..2b662d24788 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1035.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1035.md @@ -8,7 +8,7 @@ ms.assetid: 68f0cc59-007e-4109-ac30-7ac4ac447e6d --- # NMAKE Fatal Error U1035 -syntax error : expected ':' or '=' separator +> syntax error : expected ':' or '=' separator Either a colon (**:**) or an equal sign (**=**) was expected. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1036.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1036.md index 4d738221c3b..b29875997a8 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1036.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1036.md @@ -8,6 +8,6 @@ ms.assetid: b1d03b6b-ce82-4bbb-9904-d392ba72b437 --- # NMAKE Fatal Error U1036 -syntax error : too many names to left of '=' +> syntax error : too many names to left of '=' Only one string is allowed to the left of a macro definition. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1050.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1050.md index a8872865701..f327bf54b18 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1050.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1050.md @@ -8,6 +8,6 @@ ms.assetid: 3bb2937e-a804-4592-a9e6-afb63360f554 --- # NMAKE Fatal Error U1050 -message +> message The message specified with the **!ERROR** directive was displayed. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1051.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1051.md index 4d4aa782c14..e8b5e45b571 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1051.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1051.md @@ -8,7 +8,7 @@ ms.assetid: fede5cd5-dac3-47b7-b86d-e1acfb78699f --- # NMAKE Fatal Error U1051 -out of memory +> out of memory NMAKE ran out of memory, including virtual memory, because the makefile was too large or complex. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1055.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1055.md index 2d6990c1b7d..500264d37ce 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1055.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1055.md @@ -8,7 +8,7 @@ ms.assetid: 1d453922-ba7e-497f-a795-d8d959c40555 --- # NMAKE Fatal Error U1055 -out of environment space +> out of environment space The operating system ran out of room for environment variables. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1056.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1056.md index 21829ca80bb..a1cf15fa454 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1056.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1056.md @@ -8,7 +8,7 @@ ms.assetid: da855728-b69e-413c-83ed-df912126215e --- # NMAKE Fatal Error U1056 -cannot find command processor +> cannot find command processor The command processor was not in the path specified in the **COMSPEC** or **PATH** environment variables. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1064.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1064.md index cd17c2018a2..4a137e7868c 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1064.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1064.md @@ -8,7 +8,7 @@ ms.assetid: 7141e66e-cde6-4173-84df-a391f3ebcdd1 --- # NMAKE Fatal Error U1064 -MAKEFILE not found and no target specified +> MAKEFILE not found and no target specified The NMAKE command line did not specify a makefile or a target, and the current directory did not contain a file named MAKEFILE. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1065.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1065.md index be07276b6aa..1f86e98aee4 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1065.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1065.md @@ -8,6 +8,6 @@ ms.assetid: bc890f20-ff46-4073-ab3b-4a5db879f9bd --- # NMAKE Fatal Error U1065 -invalid option 'option' +> invalid option 'option' The option is not valid for NMAKE. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1070.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1070.md index 3636b2a3f10..b97d51f8eb0 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1070.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1070.md @@ -8,7 +8,7 @@ ms.assetid: 8639fc39-b4b1-48f5-ac91-0e9fb61680fd --- # NMAKE Fatal Error U1070 -cycle in macro definition 'macroname' +> cycle in macro definition 'macroname' The given macro definition contained a macro whose definition contained the given macro. Circular macro definitions are invalid. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1071.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1071.md index fd851f84ff0..ffafe6a5c6c 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1071.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1071.md @@ -8,6 +8,6 @@ ms.assetid: 328a0c1f-a867-410e-943d-7b6b75a975ab --- # NMAKE Fatal Error U1071 -cycle in dependency tree for target 'targetname' +> cycle in dependency tree for target 'targetname' A circular dependency exists in the dependency tree for the given target. The given target is a dependent of one of the dependents of the given target. Circular dependencies are invalid. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1073.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1073.md index 572d421d61a..3167e22b994 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1073.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1073.md @@ -8,7 +8,7 @@ ms.assetid: d46bf2dd-400a-4802-9db2-f832e1c97f02 --- # NMAKE Fatal Error U1073 -don't know how to make 'targetname' +> don't know how to make 'targetname' The specified target does not exist, and there is no command to execute or inference rule to apply. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1076.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1076.md index 8c95ad3f7dd..bcd0170c191 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1076.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1076.md @@ -8,7 +8,7 @@ ms.assetid: f8a6c646-0c49-4ee3-bb74-ab916a7aa6ff --- # NMAKE Fatal Error U1076 -name too long +> name too long A string exceeded one of the following limits: diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1077.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1077.md index 57120c5e205..c95d8ad0497 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1077.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1077.md @@ -8,7 +8,7 @@ ms.assetid: 70d989f8-ef34-4ad7-8fe0-5b800556b2a1 --- # NMAKE Fatal Error U1077 -'program' : return code 'value' +> 'program' : return code 'value' The given command or program called by NMAKE failed and returned the given exit code. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1078.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1078.md index efcae0f8b0d..970cac7825a 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1078.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1078.md @@ -8,7 +8,7 @@ ms.assetid: 24087955-9362-4ddf-9966-e0de43ea4647 --- # NMAKE Fatal Error U1078 -constant overflow at 'expression' +> constant overflow at 'expression' The given expression contained a constant that exceeded the range - 2,147,483,648 to 2,147,483,647. The constant appeared in one of the following situations: diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1083.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1083.md index 2b42dcbecf5..22b8b100ad1 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1083.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1083.md @@ -8,6 +8,6 @@ ms.assetid: b09bc34d-35d5-4676-b000-fd7d434400d9 --- # NMAKE Fatal Error U1083 -target macro 'target' expands to nothing +> target macro 'target' expands to nothing The given target is an invocation of a macro that has not been defined or has a null value. NMAKE cannot process a null target. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1086.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1086.md index 6143eaf3d76..ed6b67e1575 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1086.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1086.md @@ -8,7 +8,7 @@ ms.assetid: 6d3cd68a-ead6-4a6d-a205-01324785de7e --- # NMAKE Fatal Error U1086 -**inference rule cannot have dependents** +> inference rule cannot have dependents The colon (**:**) in an inference rule must be followed by one of these: diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1087.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1087.md index 6f5406a2315..012818bf9df 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1087.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1087.md @@ -8,7 +8,7 @@ ms.assetid: 5236ab54-e117-484d-99c3-852b061fd3d0 --- # NMAKE Fatal Error U1087 -cannot have : and :: dependents for same target +> cannot have : and :: dependents for same target A target cannot be specified in both a single-colon (**:**) and a double-colon (`::`) dependency. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1088.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1088.md index 6ed23ef6eef..c81d1443aff 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1088.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1088.md @@ -8,6 +8,6 @@ ms.assetid: 75f3527b-9923-408b-a66e-701322c63803 --- # NMAKE Fatal Error U1088 -invalid separator '::' on inference rule +> invalid separator '::' on inference rule An inference rule must be followed by a single colon (**:**). diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1095.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1095.md index 012f7e0d104..e4963638ab0 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1095.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1095.md @@ -8,7 +8,7 @@ ms.assetid: a392582b-06db-4568-9c13-450293a4fbda --- # NMAKE Fatal Error U1095 -expanded command line 'commandline' too long +> expanded command line 'commandline' too long After macro expansion, the given command line exceeded the limit on length of command lines for the operating system. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1097.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1097.md index 1dd82ea7b90..7af6662b8df 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1097.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1097.md @@ -8,6 +8,6 @@ ms.assetid: dc6868b3-8425-4920-858a-774ad0c4c5f1 --- # NMAKE Fatal Error U1097 -filename-parts syntax requires dependent +> filename-parts syntax requires dependent The current dependency does not have either an explicit dependent or an implicit dependent. Filename-parts syntax, which uses the percent (`%`) specifier, represents components of the first dependent of the current target. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1099.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1099.md index bd672f6cf98..285e21816b2 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1099.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1099.md @@ -8,7 +8,7 @@ ms.assetid: 6688a805-43e6-4247-a2d0-14be082f0b13 --- # NMAKE Fatal Error U1099 -stack overflow +> stack overflow The makefile being processed was too complex for the current stack allocation in NMAKE. NMAKE has an allocation of 0x3000 (12K). From cced98c5342cf5893bcbada1758b734789aed635 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 9 Sep 2025 22:06:43 +0800 Subject: [PATCH 1781/2255] Add "Remarks" headings for error references in range [U1000, U1100] --- docs/error-messages/tool-errors/nmake-fatal-error-u1000.md | 2 ++ docs/error-messages/tool-errors/nmake-fatal-error-u1001.md | 2 ++ docs/error-messages/tool-errors/nmake-fatal-error-u1007.md | 2 ++ docs/error-messages/tool-errors/nmake-fatal-error-u1023.md | 2 ++ docs/error-messages/tool-errors/nmake-fatal-error-u1033.md | 2 ++ docs/error-messages/tool-errors/nmake-fatal-error-u1034.md | 2 ++ docs/error-messages/tool-errors/nmake-fatal-error-u1035.md | 2 ++ docs/error-messages/tool-errors/nmake-fatal-error-u1036.md | 2 ++ docs/error-messages/tool-errors/nmake-fatal-error-u1045.md | 2 ++ docs/error-messages/tool-errors/nmake-fatal-error-u1050.md | 2 ++ docs/error-messages/tool-errors/nmake-fatal-error-u1051.md | 2 ++ docs/error-messages/tool-errors/nmake-fatal-error-u1052.md | 2 ++ docs/error-messages/tool-errors/nmake-fatal-error-u1055.md | 2 ++ docs/error-messages/tool-errors/nmake-fatal-error-u1056.md | 2 ++ docs/error-messages/tool-errors/nmake-fatal-error-u1059.md | 2 ++ docs/error-messages/tool-errors/nmake-fatal-error-u1064.md | 2 ++ docs/error-messages/tool-errors/nmake-fatal-error-u1065.md | 2 ++ docs/error-messages/tool-errors/nmake-fatal-error-u1070.md | 2 ++ docs/error-messages/tool-errors/nmake-fatal-error-u1071.md | 2 ++ docs/error-messages/tool-errors/nmake-fatal-error-u1073.md | 2 ++ docs/error-messages/tool-errors/nmake-fatal-error-u1076.md | 2 ++ docs/error-messages/tool-errors/nmake-fatal-error-u1077.md | 2 ++ docs/error-messages/tool-errors/nmake-fatal-error-u1078.md | 2 ++ docs/error-messages/tool-errors/nmake-fatal-error-u1083.md | 2 ++ docs/error-messages/tool-errors/nmake-fatal-error-u1086.md | 2 ++ docs/error-messages/tool-errors/nmake-fatal-error-u1087.md | 2 ++ docs/error-messages/tool-errors/nmake-fatal-error-u1088.md | 2 ++ docs/error-messages/tool-errors/nmake-fatal-error-u1095.md | 2 ++ docs/error-messages/tool-errors/nmake-fatal-error-u1097.md | 2 ++ docs/error-messages/tool-errors/nmake-fatal-error-u1099.md | 2 ++ docs/error-messages/tool-errors/nmake-fatal-error-u1100.md | 2 ++ 31 files changed, 62 insertions(+) diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1000.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1000.md index f30b782f076..039dc8dfd0b 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1000.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1000.md @@ -10,4 +10,6 @@ ms.assetid: 49b9bd9e-f1bc-4b55-a171-c748e40b195e > syntax error : ')' missing in macro invocation +## Remarks + A left parenthesis, **(**, appeared without a matching right parenthesis, **)**, in a macro invocation. The correct form is **$(**name**)**; **$**n is allowed for one-character names. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1001.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1001.md index 4e79c1e3c92..cedf6501e14 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1001.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1001.md @@ -10,6 +10,8 @@ ms.assetid: 5d7da559-6cbd-44d6-848c-aaf54cae0d1a > syntax error : illegal character 'character' in macro +## Remarks + The given character appears in a macro but is not a letter, number, or underscore. This error can be caused by a missing colon in a macro expansion: diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1007.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1007.md index 1e322fcabfa..68f56dd474e 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1007.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1007.md @@ -10,6 +10,8 @@ ms.assetid: 64fd78a6-5b27-4aa8-92ea-f1c55e6e5edd > double quotation mark not allowed in name +## Remarks + The specified target name or filename contained a double quotation mark (**"**). Double quotation marks can surround a filename but cannot be contained within it. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1023.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1023.md index 4bda99b584f..8fff6bd8570 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1023.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1023.md @@ -10,6 +10,8 @@ ms.assetid: 22d4c469-85da-43ee-86d1-171b1b99217d > syntax error in expression +## Remarks + An expression is invalid. Check the allowed operators and operator precedence. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1033.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1033.md index 8f0a817c631..2a0678fb12d 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1033.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1033.md @@ -10,6 +10,8 @@ ms.assetid: c146f7b5-7d5c-4329-a522-28a648546016 > syntax error : 'string' unexpected +## Remarks + The string is not part of the valid syntax for a makefile. ### To fix by checking the following possible causes diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1034.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1034.md index 136eb30cb0e..c85a0f8320b 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1034.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1034.md @@ -10,4 +10,6 @@ ms.assetid: 27e678c2-23e2-4247-87f7-66493784af33 > syntax error : separator missing +## Remarks + The colon (**:**) that separates targets and dependents is missing. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1035.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1035.md index 2b662d24788..c1326ab739f 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1035.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1035.md @@ -10,6 +10,8 @@ ms.assetid: 68f0cc59-007e-4109-ac30-7ac4ac447e6d > syntax error : expected ':' or '=' separator +## Remarks + Either a colon (**:**) or an equal sign (**=**) was expected. ### To fix by checking the following possible causes diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1036.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1036.md index b29875997a8..144869996d7 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1036.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1036.md @@ -10,4 +10,6 @@ ms.assetid: b1d03b6b-ce82-4bbb-9904-d392ba72b437 > syntax error : too many names to left of '=' +## Remarks + Only one string is allowed to the left of a macro definition. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1045.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1045.md index 06ea660ec4e..3ff98d9c40b 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1045.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1045.md @@ -10,6 +10,8 @@ ms.assetid: dc70d162-14b9-4107-9237-7514044d72e3 > spawn failed : *message* +## Remarks + A program or command called by NMAKE failed for reason in *message*. When NMAKE calls another program, for example, the compiler or linker, the call may fail. Or, an error may be returned by the called program. This message is used to report the error. To fix this issue, first determine the cause of the error. You can use the commands reported by the NMAKE [/N](../../build/reference/running-nmake.md#nmake-options) option to verify the environment settings and to repeat the actions done by NMAKE on the command line. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1050.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1050.md index f327bf54b18..6eec314e28b 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1050.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1050.md @@ -10,4 +10,6 @@ ms.assetid: 3bb2937e-a804-4592-a9e6-afb63360f554 > message +## Remarks + The message specified with the **!ERROR** directive was displayed. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1051.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1051.md index e8b5e45b571..0b211637712 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1051.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1051.md @@ -10,6 +10,8 @@ ms.assetid: fede5cd5-dac3-47b7-b86d-e1acfb78699f > out of memory +## Remarks + NMAKE ran out of memory, including virtual memory, because the makefile was too large or complex. ### To fix by using the following possible solutions diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1052.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1052.md index 2db5efd3c49..8d026e4dbe5 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1052.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1052.md @@ -10,6 +10,8 @@ ms.assetid: b19b3691-e60b-46bd-8822-8426740a9bc7 > file '*filename*' not found +## Remarks + NMAKE could not find the file specified with one of the following: - **/F** option diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1055.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1055.md index 500264d37ce..a13aa238130 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1055.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1055.md @@ -10,6 +10,8 @@ ms.assetid: 1d453922-ba7e-497f-a795-d8d959c40555 > out of environment space +## Remarks + The operating system ran out of room for environment variables. Either increase the environment space or set fewer environment variables. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1056.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1056.md index a1cf15fa454..3f3dac64535 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1056.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1056.md @@ -10,6 +10,8 @@ ms.assetid: da855728-b69e-413c-83ed-df912126215e > cannot find command processor +## Remarks + The command processor was not in the path specified in the **COMSPEC** or **PATH** environment variables. NMAKE uses COMMAND.COM or CMD.EXE as a command processor when executing commands. It looks for the command processor first in the path set in **COMSPEC**. If **COMSPEC** does not exist, NMAKE searches the directories specified in **PATH**. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1059.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1059.md index b6492fff8af..9e8697a85ff 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1059.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1059.md @@ -10,6 +10,8 @@ ms.assetid: b21d9198-9c63-40d0-b589-80e17294ce24 > syntax error : '}' missing in dependent +## Remarks + A search path for a dependent was incorrectly specified. Either a space existed in the path or the closing brace (**}**) was omitted. The syntax for a directory specification for a dependent is diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1064.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1064.md index 4a137e7868c..96ddd1ae9dc 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1064.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1064.md @@ -10,6 +10,8 @@ ms.assetid: 7141e66e-cde6-4173-84df-a391f3ebcdd1 > MAKEFILE not found and no target specified +## Remarks + The NMAKE command line did not specify a makefile or a target, and the current directory did not contain a file named MAKEFILE. NMAKE requires either a makefile or a command-line target (or both). To make a makefile available to NMAKE, either specify the /F option or place a file named MAKEFILE in the current directory. NMAKE can create a command-line target by using an inference rule if a makefile is not provided. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1065.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1065.md index 1f86e98aee4..2fd0d897d65 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1065.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1065.md @@ -10,4 +10,6 @@ ms.assetid: bc890f20-ff46-4073-ab3b-4a5db879f9bd > invalid option 'option' +## Remarks + The option is not valid for NMAKE. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1070.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1070.md index b97d51f8eb0..2103f050f93 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1070.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1070.md @@ -10,6 +10,8 @@ ms.assetid: 8639fc39-b4b1-48f5-ac91-0e9fb61680fd > cycle in macro definition 'macroname' +## Remarks + The given macro definition contained a macro whose definition contained the given macro. Circular macro definitions are invalid. ## Example diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1071.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1071.md index ffafe6a5c6c..f78bba9d4fa 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1071.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1071.md @@ -10,4 +10,6 @@ ms.assetid: 328a0c1f-a867-410e-943d-7b6b75a975ab > cycle in dependency tree for target 'targetname' +## Remarks + A circular dependency exists in the dependency tree for the given target. The given target is a dependent of one of the dependents of the given target. Circular dependencies are invalid. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1073.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1073.md index 3167e22b994..5dba7d8011f 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1073.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1073.md @@ -10,6 +10,8 @@ ms.assetid: d46bf2dd-400a-4802-9db2-f832e1c97f02 > don't know how to make 'targetname' +## Remarks + The specified target does not exist, and there is no command to execute or inference rule to apply. ### To fix by using the following possible solutions diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1076.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1076.md index bcd0170c191..21e4b315505 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1076.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1076.md @@ -10,6 +10,8 @@ ms.assetid: f8a6c646-0c49-4ee3-bb74-ab916a7aa6ff > name too long +## Remarks + A string exceeded one of the following limits: - 1024 characters for a macro name. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1077.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1077.md index c95d8ad0497..c3a0719f1ff 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1077.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1077.md @@ -10,6 +10,8 @@ ms.assetid: 70d989f8-ef34-4ad7-8fe0-5b800556b2a1 > 'program' : return code 'value' +## Remarks + The given command or program called by NMAKE failed and returned the given exit code. To suppress this error and continue the NMAKE session, use the /I option, the **.IGNORE** dot directive, or the dash (**-**) command modifier. To continue the NMAKE session for unrelated parts of the dependency tree, use the /K option. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1078.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1078.md index 970cac7825a..f4ccb2efd93 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1078.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1078.md @@ -10,6 +10,8 @@ ms.assetid: 24087955-9362-4ddf-9966-e0de43ea4647 > constant overflow at 'expression' +## Remarks + The given expression contained a constant that exceeded the range - 2,147,483,648 to 2,147,483,647. The constant appeared in one of the following situations: - An expression specified with a preprocessing directive diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1083.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1083.md index 22b8b100ad1..29469713349 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1083.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1083.md @@ -10,4 +10,6 @@ ms.assetid: b09bc34d-35d5-4676-b000-fd7d434400d9 > target macro 'target' expands to nothing +## Remarks + The given target is an invocation of a macro that has not been defined or has a null value. NMAKE cannot process a null target. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1086.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1086.md index ed6b67e1575..c961700326b 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1086.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1086.md @@ -10,6 +10,8 @@ ms.assetid: 6d3cd68a-ead6-4a6d-a205-01324785de7e > inference rule cannot have dependents +## Remarks + The colon (**:**) in an inference rule must be followed by one of these: - Newline character diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1087.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1087.md index 012818bf9df..b4c31811b99 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1087.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1087.md @@ -10,6 +10,8 @@ ms.assetid: 5236ab54-e117-484d-99c3-852b061fd3d0 > cannot have : and :: dependents for same target +## Remarks + A target cannot be specified in both a single-colon (**:**) and a double-colon (`::`) dependency. To specify a target in multiple description blocks, use `::` in each dependency line. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1088.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1088.md index c81d1443aff..0039978c5f4 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1088.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1088.md @@ -10,4 +10,6 @@ ms.assetid: 75f3527b-9923-408b-a66e-701322c63803 > invalid separator '::' on inference rule +## Remarks + An inference rule must be followed by a single colon (**:**). diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1095.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1095.md index e4963638ab0..6074ec8c661 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1095.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1095.md @@ -10,6 +10,8 @@ ms.assetid: a392582b-06db-4568-9c13-450293a4fbda > expanded command line 'commandline' too long +## Remarks + After macro expansion, the given command line exceeded the limit on length of command lines for the operating system. MS-DOS permits up to 128 characters on a command line. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1097.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1097.md index 7af6662b8df..bef2695a84b 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1097.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1097.md @@ -10,4 +10,6 @@ ms.assetid: dc6868b3-8425-4920-858a-774ad0c4c5f1 > filename-parts syntax requires dependent +## Remarks + The current dependency does not have either an explicit dependent or an implicit dependent. Filename-parts syntax, which uses the percent (`%`) specifier, represents components of the first dependent of the current target. diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1099.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1099.md index 285e21816b2..0ea73b2e524 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1099.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1099.md @@ -10,6 +10,8 @@ ms.assetid: 6688a805-43e6-4247-a2d0-14be082f0b13 > stack overflow +## Remarks + The makefile being processed was too complex for the current stack allocation in NMAKE. NMAKE has an allocation of 0x3000 (12K). To increase NMAKE's stack allocation, run the [editbin /stack](../../build/reference/stack.md) utility with a larger stack option: diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1100.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1100.md index 497a02ea3dc..e1a552be313 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1100.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1100.md @@ -10,6 +10,8 @@ ms.assetid: c71910a7-c581-4d9c-a38c-d2d557d56289 > macro '*macro-name*' is illegal in the context of batch rule '*rule-name*' +## Remarks + NMAKE generates this error when the command block of a batch-mode rule directly or indirectly references a special file macro that isn't `$<`. `$<` is the only allowed macro for batch-mode rules. From 7db853e75234590c0c98e4d79c832014d83649c0 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 9 Sep 2025 22:12:20 +0800 Subject: [PATCH 1782/2255] Update metadata for error references in range [U1000, U1100] --- docs/error-messages/tool-errors/nmake-fatal-error-u1000.md | 5 ++--- docs/error-messages/tool-errors/nmake-fatal-error-u1001.md | 5 ++--- docs/error-messages/tool-errors/nmake-fatal-error-u1007.md | 5 ++--- docs/error-messages/tool-errors/nmake-fatal-error-u1023.md | 5 ++--- docs/error-messages/tool-errors/nmake-fatal-error-u1033.md | 5 ++--- docs/error-messages/tool-errors/nmake-fatal-error-u1034.md | 5 ++--- docs/error-messages/tool-errors/nmake-fatal-error-u1035.md | 5 ++--- docs/error-messages/tool-errors/nmake-fatal-error-u1036.md | 5 ++--- docs/error-messages/tool-errors/nmake-fatal-error-u1045.md | 5 ++--- docs/error-messages/tool-errors/nmake-fatal-error-u1050.md | 5 ++--- docs/error-messages/tool-errors/nmake-fatal-error-u1051.md | 5 ++--- docs/error-messages/tool-errors/nmake-fatal-error-u1052.md | 5 ++--- docs/error-messages/tool-errors/nmake-fatal-error-u1055.md | 5 ++--- docs/error-messages/tool-errors/nmake-fatal-error-u1056.md | 5 ++--- docs/error-messages/tool-errors/nmake-fatal-error-u1059.md | 5 ++--- docs/error-messages/tool-errors/nmake-fatal-error-u1064.md | 5 ++--- docs/error-messages/tool-errors/nmake-fatal-error-u1065.md | 5 ++--- docs/error-messages/tool-errors/nmake-fatal-error-u1070.md | 5 ++--- docs/error-messages/tool-errors/nmake-fatal-error-u1071.md | 5 ++--- docs/error-messages/tool-errors/nmake-fatal-error-u1073.md | 5 ++--- docs/error-messages/tool-errors/nmake-fatal-error-u1076.md | 5 ++--- docs/error-messages/tool-errors/nmake-fatal-error-u1077.md | 5 ++--- docs/error-messages/tool-errors/nmake-fatal-error-u1078.md | 5 ++--- docs/error-messages/tool-errors/nmake-fatal-error-u1083.md | 5 ++--- docs/error-messages/tool-errors/nmake-fatal-error-u1086.md | 5 ++--- docs/error-messages/tool-errors/nmake-fatal-error-u1087.md | 5 ++--- docs/error-messages/tool-errors/nmake-fatal-error-u1088.md | 5 ++--- docs/error-messages/tool-errors/nmake-fatal-error-u1095.md | 5 ++--- docs/error-messages/tool-errors/nmake-fatal-error-u1097.md | 5 ++--- docs/error-messages/tool-errors/nmake-fatal-error-u1099.md | 5 ++--- docs/error-messages/tool-errors/nmake-fatal-error-u1100.md | 1 - 31 files changed, 60 insertions(+), 91 deletions(-) diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1000.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1000.md index 039dc8dfd0b..24a842f48bd 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1000.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1000.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Fatal Error U1000" title: "NMAKE Fatal Error U1000" -ms.date: "08/27/2018" +description: "Learn more about: NMAKE Fatal Error U1000" +ms.date: 08/27/2018 f1_keywords: ["U1000"] helpviewer_keywords: ["U1000"] -ms.assetid: 49b9bd9e-f1bc-4b55-a171-c748e40b195e --- # NMAKE Fatal Error U1000 diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1001.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1001.md index cedf6501e14..08ea984cff1 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1001.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1001.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Fatal Error U1001" title: "NMAKE Fatal Error U1001" -ms.date: "11/04/2016" +description: "Learn more about: NMAKE Fatal Error U1001" +ms.date: 11/04/2016 f1_keywords: ["U1001"] helpviewer_keywords: ["U1001"] -ms.assetid: 5d7da559-6cbd-44d6-848c-aaf54cae0d1a --- # NMAKE Fatal Error U1001 diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1007.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1007.md index 68f56dd474e..60ea2b957f9 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1007.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1007.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Fatal Error U1007" title: "NMAKE Fatal Error U1007" -ms.date: "11/04/2016" +description: "Learn more about: NMAKE Fatal Error U1007" +ms.date: 11/04/2016 f1_keywords: ["U1007"] helpviewer_keywords: ["U1007"] -ms.assetid: 64fd78a6-5b27-4aa8-92ea-f1c55e6e5edd --- # NMAKE Fatal Error U1007 diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1023.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1023.md index 8fff6bd8570..9588301e045 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1023.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1023.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Fatal Error U1023" title: "NMAKE Fatal Error U1023" -ms.date: "11/04/2016" +description: "Learn more about: NMAKE Fatal Error U1023" +ms.date: 11/04/2016 f1_keywords: ["U1023"] helpviewer_keywords: ["U1023"] -ms.assetid: 22d4c469-85da-43ee-86d1-171b1b99217d --- # NMAKE Fatal Error U1023 diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1033.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1033.md index 2a0678fb12d..ddb90f3b15f 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1033.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1033.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Fatal Error U1033" title: "NMAKE Fatal Error U1033" -ms.date: "11/04/2016" +description: "Learn more about: NMAKE Fatal Error U1033" +ms.date: 11/04/2016 f1_keywords: ["U1033"] helpviewer_keywords: ["U1033"] -ms.assetid: c146f7b5-7d5c-4329-a522-28a648546016 --- # NMAKE Fatal Error U1033 diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1034.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1034.md index c85a0f8320b..038db41936b 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1034.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1034.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Fatal Error U1034" title: "NMAKE Fatal Error U1034" -ms.date: "11/04/2016" +description: "Learn more about: NMAKE Fatal Error U1034" +ms.date: 11/04/2016 f1_keywords: ["U1034"] helpviewer_keywords: ["U1034"] -ms.assetid: 27e678c2-23e2-4247-87f7-66493784af33 --- # NMAKE Fatal Error U1034 diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1035.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1035.md index c1326ab739f..3b552b7199a 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1035.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1035.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Fatal Error U1035" title: "NMAKE Fatal Error U1035" -ms.date: "11/04/2016" +description: "Learn more about: NMAKE Fatal Error U1035" +ms.date: 11/04/2016 f1_keywords: ["U1035"] helpviewer_keywords: ["U1035"] -ms.assetid: 68f0cc59-007e-4109-ac30-7ac4ac447e6d --- # NMAKE Fatal Error U1035 diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1036.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1036.md index 144869996d7..23cb6149762 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1036.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1036.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Fatal Error U1036" title: "NMAKE Fatal Error U1036" -ms.date: "11/04/2016" +description: "Learn more about: NMAKE Fatal Error U1036" +ms.date: 11/04/2016 f1_keywords: ["U1036"] helpviewer_keywords: ["U1036"] -ms.assetid: b1d03b6b-ce82-4bbb-9904-d392ba72b437 --- # NMAKE Fatal Error U1036 diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1045.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1045.md index 3ff98d9c40b..28278195d4d 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1045.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1045.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Fatal Error U1045" title: "NMAKE Fatal Error U1045" -ms.date: "08/11/2019" +description: "Learn more about: NMAKE Fatal Error U1045" +ms.date: 08/11/2019 f1_keywords: ["U1045"] helpviewer_keywords: ["U1045"] -ms.assetid: dc70d162-14b9-4107-9237-7514044d72e3 --- # NMAKE Fatal Error U1045 diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1050.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1050.md index 6eec314e28b..a1e59028650 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1050.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1050.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Fatal Error U1050" title: "NMAKE Fatal Error U1050" -ms.date: "11/04/2016" +description: "Learn more about: NMAKE Fatal Error U1050" +ms.date: 11/04/2016 f1_keywords: ["U1050"] helpviewer_keywords: ["U1050"] -ms.assetid: 3bb2937e-a804-4592-a9e6-afb63360f554 --- # NMAKE Fatal Error U1050 diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1051.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1051.md index 0b211637712..14d5188d58a 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1051.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1051.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Fatal Error U1051" title: "NMAKE Fatal Error U1051" -ms.date: "11/04/2016" +description: "Learn more about: NMAKE Fatal Error U1051" +ms.date: 11/04/2016 f1_keywords: ["U1051"] helpviewer_keywords: ["U1051"] -ms.assetid: fede5cd5-dac3-47b7-b86d-e1acfb78699f --- # NMAKE Fatal Error U1051 diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1052.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1052.md index 8d026e4dbe5..3a75ff6737c 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1052.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1052.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Fatal Error U1052" title: "NMAKE Fatal Error U1052" -ms.date: "09/05/2018" +description: "Learn more about: NMAKE Fatal Error U1052" +ms.date: 09/05/2018 f1_keywords: ["U1052"] helpviewer_keywords: ["U1052"] -ms.assetid: b19b3691-e60b-46bd-8822-8426740a9bc7 --- # NMAKE Fatal Error U1052 diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1055.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1055.md index a13aa238130..de37ff89129 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1055.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1055.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Fatal Error U1055" title: "NMAKE Fatal Error U1055" -ms.date: "11/04/2016" +description: "Learn more about: NMAKE Fatal Error U1055" +ms.date: 11/04/2016 f1_keywords: ["U1055"] helpviewer_keywords: ["U1055"] -ms.assetid: 1d453922-ba7e-497f-a795-d8d959c40555 --- # NMAKE Fatal Error U1055 diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1056.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1056.md index 3f3dac64535..06285d3dc4d 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1056.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1056.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Fatal Error U1056" title: "NMAKE Fatal Error U1056" -ms.date: "11/04/2016" +description: "Learn more about: NMAKE Fatal Error U1056" +ms.date: 11/04/2016 f1_keywords: ["U1056"] helpviewer_keywords: ["U1056"] -ms.assetid: da855728-b69e-413c-83ed-df912126215e --- # NMAKE Fatal Error U1056 diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1059.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1059.md index 9e8697a85ff..2918a3f6507 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1059.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1059.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Fatal Error U1059" title: "NMAKE Fatal Error U1059" -ms.date: "08/27/2018" +description: "Learn more about: NMAKE Fatal Error U1059" +ms.date: 08/27/2018 f1_keywords: ["U1059"] helpviewer_keywords: ["U1059"] -ms.assetid: b21d9198-9c63-40d0-b589-80e17294ce24 --- # NMAKE Fatal Error U1059 diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1064.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1064.md index 96ddd1ae9dc..79fe444306d 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1064.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1064.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Fatal Error U1064" title: "NMAKE Fatal Error U1064" -ms.date: "11/04/2016" +description: "Learn more about: NMAKE Fatal Error U1064" +ms.date: 11/04/2016 f1_keywords: ["U1064"] helpviewer_keywords: ["U1064"] -ms.assetid: 7141e66e-cde6-4173-84df-a391f3ebcdd1 --- # NMAKE Fatal Error U1064 diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1065.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1065.md index 2fd0d897d65..77762393f2b 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1065.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1065.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Fatal Error U1065" title: "NMAKE Fatal Error U1065" -ms.date: "11/04/2016" +description: "Learn more about: NMAKE Fatal Error U1065" +ms.date: 11/04/2016 f1_keywords: ["U1065"] helpviewer_keywords: ["U1065"] -ms.assetid: bc890f20-ff46-4073-ab3b-4a5db879f9bd --- # NMAKE Fatal Error U1065 diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1070.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1070.md index 2103f050f93..b2691ac1dfa 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1070.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1070.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Fatal Error U1070" title: "NMAKE Fatal Error U1070" -ms.date: "11/04/2016" +description: "Learn more about: NMAKE Fatal Error U1070" +ms.date: 11/04/2016 f1_keywords: ["U1070"] helpviewer_keywords: ["U1070"] -ms.assetid: 8639fc39-b4b1-48f5-ac91-0e9fb61680fd --- # NMAKE Fatal Error U1070 diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1071.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1071.md index f78bba9d4fa..1f2a4cedcee 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1071.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1071.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Fatal Error U1071" title: "NMAKE Fatal Error U1071" -ms.date: "11/04/2016" +description: "Learn more about: NMAKE Fatal Error U1071" +ms.date: 11/04/2016 f1_keywords: ["U1071"] helpviewer_keywords: ["U1071"] -ms.assetid: 328a0c1f-a867-410e-943d-7b6b75a975ab --- # NMAKE Fatal Error U1071 diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1073.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1073.md index 5dba7d8011f..84cb579e0ce 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1073.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1073.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Fatal Error U1073" title: "NMAKE Fatal Error U1073" -ms.date: "11/04/2016" +description: "Learn more about: NMAKE Fatal Error U1073" +ms.date: 11/04/2016 f1_keywords: ["U1073"] helpviewer_keywords: ["U1073"] -ms.assetid: d46bf2dd-400a-4802-9db2-f832e1c97f02 --- # NMAKE Fatal Error U1073 diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1076.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1076.md index 21e4b315505..5015af36911 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1076.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1076.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Fatal Error U1076" title: "NMAKE Fatal Error U1076" -ms.date: "11/04/2016" +description: "Learn more about: NMAKE Fatal Error U1076" +ms.date: 11/04/2016 f1_keywords: ["U1076"] helpviewer_keywords: ["U1076"] -ms.assetid: f8a6c646-0c49-4ee3-bb74-ab916a7aa6ff --- # NMAKE Fatal Error U1076 diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1077.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1077.md index c3a0719f1ff..cf389cf8dd7 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1077.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1077.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Fatal Error U1077" title: "NMAKE Fatal Error U1077" -ms.date: "11/04/2016" +description: "Learn more about: NMAKE Fatal Error U1077" +ms.date: 11/04/2016 f1_keywords: ["U1077"] helpviewer_keywords: ["U1077"] -ms.assetid: 70d989f8-ef34-4ad7-8fe0-5b800556b2a1 --- # NMAKE Fatal Error U1077 diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1078.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1078.md index f4ccb2efd93..ee1e637a341 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1078.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1078.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Fatal Error U1078" title: "NMAKE Fatal Error U1078" -ms.date: "11/04/2016" +description: "Learn more about: NMAKE Fatal Error U1078" +ms.date: 11/04/2016 f1_keywords: ["U1078"] helpviewer_keywords: ["U1078"] -ms.assetid: 24087955-9362-4ddf-9966-e0de43ea4647 --- # NMAKE Fatal Error U1078 diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1083.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1083.md index 29469713349..22be01d0e95 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1083.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1083.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Fatal Error U1083" title: "NMAKE Fatal Error U1083" -ms.date: "11/04/2016" +description: "Learn more about: NMAKE Fatal Error U1083" +ms.date: 11/04/2016 f1_keywords: ["U1083"] helpviewer_keywords: ["U1083"] -ms.assetid: b09bc34d-35d5-4676-b000-fd7d434400d9 --- # NMAKE Fatal Error U1083 diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1086.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1086.md index c961700326b..4705fc28e11 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1086.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1086.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Fatal Error U1086" title: "NMAKE Fatal Error U1086" -ms.date: "11/04/2016" +description: "Learn more about: NMAKE Fatal Error U1086" +ms.date: 11/04/2016 f1_keywords: ["U1086"] helpviewer_keywords: ["U1086"] -ms.assetid: 6d3cd68a-ead6-4a6d-a205-01324785de7e --- # NMAKE Fatal Error U1086 diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1087.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1087.md index b4c31811b99..7082f6c6d19 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1087.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1087.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Fatal Error U1087" title: "NMAKE Fatal Error U1087" -ms.date: "11/04/2016" +description: "Learn more about: NMAKE Fatal Error U1087" +ms.date: 11/04/2016 f1_keywords: ["U1087"] helpviewer_keywords: ["U1087"] -ms.assetid: 5236ab54-e117-484d-99c3-852b061fd3d0 --- # NMAKE Fatal Error U1087 diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1088.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1088.md index 0039978c5f4..5f62fb6e7af 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1088.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1088.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Fatal Error U1088" title: "NMAKE Fatal Error U1088" -ms.date: "11/04/2016" +description: "Learn more about: NMAKE Fatal Error U1088" +ms.date: 11/04/2016 f1_keywords: ["U1088"] helpviewer_keywords: ["U1088"] -ms.assetid: 75f3527b-9923-408b-a66e-701322c63803 --- # NMAKE Fatal Error U1088 diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1095.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1095.md index 6074ec8c661..87e702a9d06 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1095.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1095.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Fatal Error U1095" title: "NMAKE Fatal Error U1095" -ms.date: "11/04/2016" +description: "Learn more about: NMAKE Fatal Error U1095" +ms.date: 11/04/2016 f1_keywords: ["U1095"] helpviewer_keywords: ["U1095"] -ms.assetid: a392582b-06db-4568-9c13-450293a4fbda --- # NMAKE Fatal Error U1095 diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1097.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1097.md index bef2695a84b..7c9958d77e2 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1097.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1097.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Fatal Error U1097" title: "NMAKE Fatal Error U1097" -ms.date: "11/04/2016" +description: "Learn more about: NMAKE Fatal Error U1097" +ms.date: 11/04/2016 f1_keywords: ["U1097"] helpviewer_keywords: ["U1097"] -ms.assetid: dc6868b3-8425-4920-858a-774ad0c4c5f1 --- # NMAKE Fatal Error U1097 diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1099.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1099.md index 0ea73b2e524..d2645925c72 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1099.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1099.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Fatal Error U1099" title: "NMAKE Fatal Error U1099" -ms.date: "11/04/2016" +description: "Learn more about: NMAKE Fatal Error U1099" +ms.date: 11/04/2016 f1_keywords: ["U1099"] helpviewer_keywords: ["U1099"] -ms.assetid: 6688a805-43e6-4247-a2d0-14be082f0b13 --- # NMAKE Fatal Error U1099 diff --git a/docs/error-messages/tool-errors/nmake-fatal-error-u1100.md b/docs/error-messages/tool-errors/nmake-fatal-error-u1100.md index e1a552be313..4ae01cd7b7e 100644 --- a/docs/error-messages/tool-errors/nmake-fatal-error-u1100.md +++ b/docs/error-messages/tool-errors/nmake-fatal-error-u1100.md @@ -4,7 +4,6 @@ description: "A description of the causes of Microsoft NMAKE fatal error U1100." ms.date: 07/17/2020 f1_keywords: ["U1100"] helpviewer_keywords: ["U1100"] -ms.assetid: c71910a7-c581-4d9c-a38c-d2d557d56289 --- # NMAKE Fatal Error U1100 From 453dc40afd8602834b44741cdf173a50919bbff6 Mon Sep 17 00:00:00 2001 From: Carsten Rudolph <18394207+crud89@users.noreply.github.com> Date: Tue, 9 Sep 2025 17:42:48 +0200 Subject: [PATCH 1783/2255] Fix `environment` name. --- docs/build/cmake-presets-vs.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/build/cmake-presets-vs.md b/docs/build/cmake-presets-vs.md index 1706bdbbe17..5d99333e4c8 100644 --- a/docs/build/cmake-presets-vs.md +++ b/docs/build/cmake-presets-vs.md @@ -205,14 +205,14 @@ The official [CMake documentation](https://cmake.org/cmake/help/latest/manual/cm ### Select your compilers -You can set C and C++ compilers by using `environmentVariables.CC` and `environmentVariables.CXX` in a Configure Preset. For more information, see [`CC`](https://cmake.org/cmake/help/latest/envvar/CC.html)/[`CXX`](https://cmake.org/cmake/help/latest/envvar/CXX.html). +You can set C and C++ compilers by using `environment.CC` and `environment.CXX` in a Configure Preset. For more information, see [`CC`](https://cmake.org/cmake/help/latest/envvar/CC.html)/[`CXX`](https://cmake.org/cmake/help/latest/envvar/CXX.html). Use the following examples to build with `cl.exe` and `clang-cl.exe` from Visual Studio. The C++ Clang tools for Windows components must be installed for you to build with `clang-cl`. Build with `cl.exe`: ```json -"environmentVariables": { +"environment": { "CC": "cl", "CXX": "cl" }, @@ -225,7 +225,7 @@ Build with `cl.exe`: Build with `clang`: ```json -"environmentVariables": { +"environment": { "CC": "clang-cl", "CXX": "clang-cl" }, @@ -268,7 +268,7 @@ To reproduce these builds outside Visual Studio, see [Run CMake from the command To build on Linux or without the Visual C++ toolset, specify the name of a compiler on your `PATH` instance, or an environment variable that evaluates to the full path of a compiler. Full paths are discouraged so that the file can remain shareable. A preset that builds with GCC version 8 might look like this: ```json -"environmentVariables": { +"environment": { "CC": "gcc-8", "CXX": "g++-8" }, From d94e023b0f8e6603c51f6a0ffbb7dd1e6f3956f4 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 9 Sep 2025 17:47:42 -0700 Subject: [PATCH 1784/2255] intro github copilot --- docs/build/vscpp-step-0-installation.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/docs/build/vscpp-step-0-installation.md b/docs/build/vscpp-step-0-installation.md index 5ce61195dc8..b5751335727 100644 --- a/docs/build/vscpp-step-0-installation.md +++ b/docs/build/vscpp-step-0-installation.md @@ -1,13 +1,14 @@ --- title: Install C and C++ support in Visual Studio description: "Learn how to install Visual Studio with support for Microsoft C and C++ and related workloads." -ms.date: 03/18/2025 +ms.date: 09/09/2025 ms.topic: tutorial ms.devlang: "cpp" ms.custom: - vs-acquisition - intro-installation - sfi-image-nochange + - copilot-scenario-highlight --- # Install C and C++ support in Visual Studio @@ -114,6 +115,21 @@ You can reduce the installation footprint of Visual Studio on your system drive. 1. Visual Studio opens your new project, and you're ready to code! +### Step 9 - Learn how to use GitHub Copilot + +You can use GitHub Copilot in Visual Studio to help with your C++ development. Copilot is an AI-powered coding assistant that helps you write code faster, reduce errors, and explore new solutions. + +Some benefits of using Copilot for your C++ coding scenarios: +- Generate entire C++ functions or classes as you type. +- Suggest code completions based on plain-language comments or prompts. +- Get help with complex algorithms, data structures, and standard library usage. +- Learn new APIs and modern C++ patterns through in-context examples. +- Receive context-aware suggestions based on your comments or code. +- Debug errors in your code. +- Simplify and refactor existing code. + +To get started, see [GitHub Copilot in Visual Studio](/visualstudio/ide/visual-studio-github-copilot-install-and-states). + ::: moniker-end ::: moniker range="msvc-160" From de4b076175bc621e53848d250a3d4312cd3b66fc Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 9 Sep 2025 18:07:11 -0700 Subject: [PATCH 1785/2255] edit --- docs/build/vscpp-step-0-installation.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build/vscpp-step-0-installation.md b/docs/build/vscpp-step-0-installation.md index b5751335727..0a5311c1fd1 100644 --- a/docs/build/vscpp-step-0-installation.md +++ b/docs/build/vscpp-step-0-installation.md @@ -115,7 +115,7 @@ You can reduce the installation footprint of Visual Studio on your system drive. 1. Visual Studio opens your new project, and you're ready to code! -### Step 9 - Learn how to use GitHub Copilot +### Step 9 - Install GitHub Copilot You can use GitHub Copilot in Visual Studio to help with your C++ development. Copilot is an AI-powered coding assistant that helps you write code faster, reduce errors, and explore new solutions. @@ -128,7 +128,7 @@ Some benefits of using Copilot for your C++ coding scenarios: - Debug errors in your code. - Simplify and refactor existing code. -To get started, see [GitHub Copilot in Visual Studio](/visualstudio/ide/visual-studio-github-copilot-install-and-states). +To install GitHub Copilot, see [Manage GitHub Copilot installation and state](/visualstudio/ide/visual-studio-github-copilot-install-and-states). ::: moniker-end From 8d8aa5a4e6e47a726a3154a1c76c4585fba514d9 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 10 Sep 2025 17:13:49 +0800 Subject: [PATCH 1786/2255] Tweak C5072 "Example" section --- .../compiler-warnings/compiler-warning-c5072.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c5072.md b/docs/error-messages/compiler-warnings/compiler-warning-c5072.md index 0ae2c93e6f6..a58a4df49f8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c5072.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c5072.md @@ -15,13 +15,17 @@ This warning occurs when you compile with [Address Sanitizer](../../sanitizers/a ## Example -The following command line generates warning `C5072`: +The following command line generates warning C5072: -```cpp - cl /fsanitize=address /EHsc test.cpp +```cmd +cl /fsanitize=address /EHsc test.cpp ``` -To fix it, have the compiler generate debug information by using a switch like [`/Zi`](../../build/reference/z7-zi-zi-debug-information-format.md#zi) or [`/Z7`](../../build/reference/z7-zi-zi-debug-information-format.md#z7), like this: `cl /fsanitize=address /EHsc /Zi test.cpp` +To fix it, have the compiler generate debug information by using a switch like [`/Zi`](../../build/reference/z7-zi-zi-debug-information-format.md#zi) or [`/Z7`](../../build/reference/z7-zi-zi-debug-information-format.md#z7), like this: + +```cmd +cl /fsanitize=address /EHsc /Zi test.cpp +``` ## See also From ac5ba4887004cba6311788cfe6f56c5ec1e73c2d Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 10 Sep 2025 17:15:43 +0800 Subject: [PATCH 1787/2255] Update `ms.date` metadata in C5072 warning reference --- docs/error-messages/compiler-warnings/compiler-warning-c5072.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c5072.md b/docs/error-messages/compiler-warnings/compiler-warning-c5072.md index a58a4df49f8..ad186122f61 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-c5072.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-c5072.md @@ -1,7 +1,7 @@ --- title: "Compiler Warning (level 1) C5072" description: "Learn more about: Compiler Warning (level 1) C5072" -ms.date: 02/09/2024 +ms.date: 09/10/2025 f1_keywords: ["C5072"] helpviewer_keywords: ["C5072"] --- From d9cfa54d118f44ea6c7027499b8bde301d896ec1 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 10 Sep 2025 17:32:27 +0800 Subject: [PATCH 1788/2255] Add blockquotes for warning messages in range [U4001, U4011] --- docs/error-messages/tool-errors/nmake-warning-u4004.md | 2 +- docs/error-messages/tool-errors/nmake-warning-u4006.md | 2 +- docs/error-messages/tool-errors/nmake-warning-u4007.md | 2 +- docs/error-messages/tool-errors/nmake-warning-u4010.md | 2 +- docs/error-messages/tool-errors/nmake-warning-u4011.md | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/error-messages/tool-errors/nmake-warning-u4004.md b/docs/error-messages/tool-errors/nmake-warning-u4004.md index 4ab084062d1..00b4b886686 100644 --- a/docs/error-messages/tool-errors/nmake-warning-u4004.md +++ b/docs/error-messages/tool-errors/nmake-warning-u4004.md @@ -8,7 +8,7 @@ ms.assetid: 5086bbcb-42d7-4677-a877-1a02202a86a2 --- # NMAKE Warning U4004 -too many rules for target 'targetname' +> too many rules for target 'targetname' More than one description block was specified for the given target using single colons (**:**) as separators. NMAKE executed the commands in the first description block and ignored later blocks. diff --git a/docs/error-messages/tool-errors/nmake-warning-u4006.md b/docs/error-messages/tool-errors/nmake-warning-u4006.md index 8ed54357ead..728ac53b418 100644 --- a/docs/error-messages/tool-errors/nmake-warning-u4006.md +++ b/docs/error-messages/tool-errors/nmake-warning-u4006.md @@ -8,6 +8,6 @@ ms.assetid: 830ad63c-d454-47a3-840c-c272f29ef3d2 --- # NMAKE Warning U4006 -special macro undefined : 'macroname' +> special macro undefined : 'macroname' The given special macro name is undefined and expands to nothing. diff --git a/docs/error-messages/tool-errors/nmake-warning-u4007.md b/docs/error-messages/tool-errors/nmake-warning-u4007.md index 15e4b79e462..092e8369650 100644 --- a/docs/error-messages/tool-errors/nmake-warning-u4007.md +++ b/docs/error-messages/tool-errors/nmake-warning-u4007.md @@ -8,7 +8,7 @@ ms.assetid: 61ec0417-6961-43c1-ade8-f9d6e93289e9 --- # NMAKE Warning U4007 -filename 'filename' too long; truncating to 8.3 +> filename 'filename' too long; truncating to 8.3 The base name of the given file has more than eight characters, or the extension has more than three characters. NMAKE truncated the name to an eight-character base and a three-character extension. diff --git a/docs/error-messages/tool-errors/nmake-warning-u4010.md b/docs/error-messages/tool-errors/nmake-warning-u4010.md index 99cc38a56ff..205a12ff706 100644 --- a/docs/error-messages/tool-errors/nmake-warning-u4010.md +++ b/docs/error-messages/tool-errors/nmake-warning-u4010.md @@ -8,7 +8,7 @@ ms.assetid: 99d8eb9a-ae31-40d1-b8c5-8c66732127d3 --- # NMAKE Warning U4010 -'target' : build failed; /K specified, continuing ... +> 'target' : build failed; /K specified, continuing ... A command in the commands block for the given target returned a nonzero exit code. The /K option told NMAKE to continue processing unrelated parts of the build and to issue an exit code 1 when the NMAKE session is finished. diff --git a/docs/error-messages/tool-errors/nmake-warning-u4011.md b/docs/error-messages/tool-errors/nmake-warning-u4011.md index cde7c27e7d4..9aca4474910 100644 --- a/docs/error-messages/tool-errors/nmake-warning-u4011.md +++ b/docs/error-messages/tool-errors/nmake-warning-u4011.md @@ -8,7 +8,7 @@ ms.assetid: e8244514-eba6-4285-8853-7baeefdcd8a4 --- # NMAKE Warning U4011 -'target' : not all dependents available; target not built +> 'target' : not all dependents available; target not built A dependent of the given target either did not exist or was out-of-date, and a command for updating the dependent returned a nonzero exit code. The /K option told NMAKE to continue processing unrelated parts of the build and to issue an exit code 1 when the NMAKE session is finished. From 5103e112f52ae0bcffcc65780aecf2002b9a8387 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 10 Sep 2025 17:33:58 +0800 Subject: [PATCH 1789/2255] Add "Remarks" headings for warning references in range [U4001, U4011] --- docs/error-messages/tool-errors/nmake-warning-u4001.md | 2 ++ docs/error-messages/tool-errors/nmake-warning-u4004.md | 2 ++ docs/error-messages/tool-errors/nmake-warning-u4006.md | 2 ++ docs/error-messages/tool-errors/nmake-warning-u4007.md | 2 ++ docs/error-messages/tool-errors/nmake-warning-u4010.md | 2 ++ docs/error-messages/tool-errors/nmake-warning-u4011.md | 2 ++ 6 files changed, 12 insertions(+) diff --git a/docs/error-messages/tool-errors/nmake-warning-u4001.md b/docs/error-messages/tool-errors/nmake-warning-u4001.md index 950ef74f800..fa9c66d5b0c 100644 --- a/docs/error-messages/tool-errors/nmake-warning-u4001.md +++ b/docs/error-messages/tool-errors/nmake-warning-u4001.md @@ -10,4 +10,6 @@ ms.assetid: ed3b4068-2ad8-4ffc-b7c7-33897d2a55d7 > command file can be invoked only from command line +## Remarks + A command file, which is invoked by the at sign (**\@**) specifier, cannot contain a specification for another command file. Such nesting is not allowed. The specification was ignored. diff --git a/docs/error-messages/tool-errors/nmake-warning-u4004.md b/docs/error-messages/tool-errors/nmake-warning-u4004.md index 00b4b886686..a90e24f5671 100644 --- a/docs/error-messages/tool-errors/nmake-warning-u4004.md +++ b/docs/error-messages/tool-errors/nmake-warning-u4004.md @@ -10,6 +10,8 @@ ms.assetid: 5086bbcb-42d7-4677-a877-1a02202a86a2 > too many rules for target 'targetname' +## Remarks + More than one description block was specified for the given target using single colons (**:**) as separators. NMAKE executed the commands in the first description block and ignored later blocks. To specify the same target in multiple dependencies, use double colons (`::`) as the separator in each dependency line. diff --git a/docs/error-messages/tool-errors/nmake-warning-u4006.md b/docs/error-messages/tool-errors/nmake-warning-u4006.md index 728ac53b418..5c84c82f4dc 100644 --- a/docs/error-messages/tool-errors/nmake-warning-u4006.md +++ b/docs/error-messages/tool-errors/nmake-warning-u4006.md @@ -10,4 +10,6 @@ ms.assetid: 830ad63c-d454-47a3-840c-c272f29ef3d2 > special macro undefined : 'macroname' +## Remarks + The given special macro name is undefined and expands to nothing. diff --git a/docs/error-messages/tool-errors/nmake-warning-u4007.md b/docs/error-messages/tool-errors/nmake-warning-u4007.md index 092e8369650..82e200adc37 100644 --- a/docs/error-messages/tool-errors/nmake-warning-u4007.md +++ b/docs/error-messages/tool-errors/nmake-warning-u4007.md @@ -10,6 +10,8 @@ ms.assetid: 61ec0417-6961-43c1-ade8-f9d6e93289e9 > filename 'filename' too long; truncating to 8.3 +## Remarks + The base name of the given file has more than eight characters, or the extension has more than three characters. NMAKE truncated the name to an eight-character base and a three-character extension. If long filenames are supported by your file system, enclose the name in double quotation marks (**"**). diff --git a/docs/error-messages/tool-errors/nmake-warning-u4010.md b/docs/error-messages/tool-errors/nmake-warning-u4010.md index 205a12ff706..906908cba0a 100644 --- a/docs/error-messages/tool-errors/nmake-warning-u4010.md +++ b/docs/error-messages/tool-errors/nmake-warning-u4010.md @@ -10,6 +10,8 @@ ms.assetid: 99d8eb9a-ae31-40d1-b8c5-8c66732127d3 > 'target' : build failed; /K specified, continuing ... +## Remarks + A command in the commands block for the given target returned a nonzero exit code. The /K option told NMAKE to continue processing unrelated parts of the build and to issue an exit code 1 when the NMAKE session is finished. If the given target is, itself, a dependent for another target, NMAKE issues warning [U4011](../../error-messages/tool-errors/nmake-warning-u4011.md) after this warning. diff --git a/docs/error-messages/tool-errors/nmake-warning-u4011.md b/docs/error-messages/tool-errors/nmake-warning-u4011.md index 9aca4474910..65164253c36 100644 --- a/docs/error-messages/tool-errors/nmake-warning-u4011.md +++ b/docs/error-messages/tool-errors/nmake-warning-u4011.md @@ -10,6 +10,8 @@ ms.assetid: e8244514-eba6-4285-8853-7baeefdcd8a4 > 'target' : not all dependents available; target not built +## Remarks + A dependent of the given target either did not exist or was out-of-date, and a command for updating the dependent returned a nonzero exit code. The /K option told NMAKE to continue processing unrelated parts of the build and to issue an exit code 1 when the NMAKE session is finished. This warning is preceded by warning [U4010](../../error-messages/tool-errors/nmake-warning-u4010.md) for each dependent that failed to be created or updated. From 093c1037001553ee7e051929ce422a11b4bf42fc Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 10 Sep 2025 17:35:41 +0800 Subject: [PATCH 1790/2255] Update metadata for warning references in range [U4001, U4011] --- docs/error-messages/tool-errors/nmake-warning-u4001.md | 5 ++--- docs/error-messages/tool-errors/nmake-warning-u4004.md | 5 ++--- docs/error-messages/tool-errors/nmake-warning-u4006.md | 5 ++--- docs/error-messages/tool-errors/nmake-warning-u4007.md | 5 ++--- docs/error-messages/tool-errors/nmake-warning-u4010.md | 5 ++--- docs/error-messages/tool-errors/nmake-warning-u4011.md | 5 ++--- 6 files changed, 12 insertions(+), 18 deletions(-) diff --git a/docs/error-messages/tool-errors/nmake-warning-u4001.md b/docs/error-messages/tool-errors/nmake-warning-u4001.md index fa9c66d5b0c..a23091484ad 100644 --- a/docs/error-messages/tool-errors/nmake-warning-u4001.md +++ b/docs/error-messages/tool-errors/nmake-warning-u4001.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Warning U4001" title: "NMAKE Warning U4001" -ms.date: "09/05/2018" +description: "Learn more about: NMAKE Warning U4001" +ms.date: 09/05/2018 f1_keywords: ["U4001"] helpviewer_keywords: ["U4001"] -ms.assetid: ed3b4068-2ad8-4ffc-b7c7-33897d2a55d7 --- # NMAKE Warning U4001 diff --git a/docs/error-messages/tool-errors/nmake-warning-u4004.md b/docs/error-messages/tool-errors/nmake-warning-u4004.md index a90e24f5671..93f0ea200fe 100644 --- a/docs/error-messages/tool-errors/nmake-warning-u4004.md +++ b/docs/error-messages/tool-errors/nmake-warning-u4004.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Warning U4004" title: "NMAKE Warning U4004" -ms.date: "11/04/2016" +description: "Learn more about: NMAKE Warning U4004" +ms.date: 11/04/2016 f1_keywords: ["U4004"] helpviewer_keywords: ["U4004"] -ms.assetid: 5086bbcb-42d7-4677-a877-1a02202a86a2 --- # NMAKE Warning U4004 diff --git a/docs/error-messages/tool-errors/nmake-warning-u4006.md b/docs/error-messages/tool-errors/nmake-warning-u4006.md index 5c84c82f4dc..7a0b31901f0 100644 --- a/docs/error-messages/tool-errors/nmake-warning-u4006.md +++ b/docs/error-messages/tool-errors/nmake-warning-u4006.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Warning U4006" title: "NMAKE Warning U4006" -ms.date: "11/04/2016" +description: "Learn more about: NMAKE Warning U4006" +ms.date: 11/04/2016 f1_keywords: ["U4006"] helpviewer_keywords: ["U4006"] -ms.assetid: 830ad63c-d454-47a3-840c-c272f29ef3d2 --- # NMAKE Warning U4006 diff --git a/docs/error-messages/tool-errors/nmake-warning-u4007.md b/docs/error-messages/tool-errors/nmake-warning-u4007.md index 82e200adc37..392d4529ecd 100644 --- a/docs/error-messages/tool-errors/nmake-warning-u4007.md +++ b/docs/error-messages/tool-errors/nmake-warning-u4007.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Warning U4007" title: "NMAKE Warning U4007" -ms.date: "11/04/2016" +description: "Learn more about: NMAKE Warning U4007" +ms.date: 11/04/2016 f1_keywords: ["U4007"] helpviewer_keywords: ["U4007"] -ms.assetid: 61ec0417-6961-43c1-ade8-f9d6e93289e9 --- # NMAKE Warning U4007 diff --git a/docs/error-messages/tool-errors/nmake-warning-u4010.md b/docs/error-messages/tool-errors/nmake-warning-u4010.md index 906908cba0a..44fa515eee6 100644 --- a/docs/error-messages/tool-errors/nmake-warning-u4010.md +++ b/docs/error-messages/tool-errors/nmake-warning-u4010.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Warning U4010" title: "NMAKE Warning U4010" -ms.date: "11/04/2016" +description: "Learn more about: NMAKE Warning U4010" +ms.date: 11/04/2016 f1_keywords: ["U4010"] helpviewer_keywords: ["U4010"] -ms.assetid: 99d8eb9a-ae31-40d1-b8c5-8c66732127d3 --- # NMAKE Warning U4010 diff --git a/docs/error-messages/tool-errors/nmake-warning-u4011.md b/docs/error-messages/tool-errors/nmake-warning-u4011.md index 65164253c36..9e8040a5f54 100644 --- a/docs/error-messages/tool-errors/nmake-warning-u4011.md +++ b/docs/error-messages/tool-errors/nmake-warning-u4011.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: NMAKE Warning U4011" title: "NMAKE Warning U4011" -ms.date: "11/04/2016" +description: "Learn more about: NMAKE Warning U4011" +ms.date: 11/04/2016 f1_keywords: ["U4011"] helpviewer_keywords: ["U4011"] -ms.assetid: e8244514-eba6-4285-8853-7baeefdcd8a4 --- # NMAKE Warning U4011 From 4e492ee18f6b28ff92f695d966bc34b77d341bb2 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 10 Sep 2025 18:30:42 +0800 Subject: [PATCH 1791/2255] Update error message in C2033 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2033.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2033.md b/docs/error-messages/compiler-errors-1/compiler-error-c2033.md index 87aaa08b7b5..5c6ac01b365 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2033.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2033.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2033"] --- # Compiler Error C2033 -> 'identifier' : bit field cannot have indirection +> '*identifier*': bit field cannot have indirection ## Remarks From 9be0d114b3b8d71d1399daf8f3009c2ed3039705 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 10 Sep 2025 18:34:41 +0800 Subject: [PATCH 1792/2255] Augment remarks in C2033 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2033.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2033.md b/docs/error-messages/compiler-errors-1/compiler-error-c2033.md index 5c6ac01b365..8f8642d5691 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2033.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2033.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["C2033"] ## Remarks -The bit field was declared as a pointer, which is not allowed. +Bit fields can't be declared as a pointer, reference, or array. For more information, see [C++ Bit Fields](../../cpp/cpp-bit-fields.md). ## Example From cdaacdd0ebcd7c0c21f501826e402fcbdbf063f3 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 10 Sep 2025 18:42:55 +0800 Subject: [PATCH 1793/2255] Overhaul example in C2033 error reference --- .../compiler-errors-1/compiler-error-c2033.md | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2033.md b/docs/error-messages/compiler-errors-1/compiler-error-c2033.md index 8f8642d5691..4114819b531 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2033.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2033.md @@ -19,17 +19,12 @@ The following example generates C2033: ```cpp // C2033.cpp -struct S { - int *b : 1; // C2033 -}; -``` - -Possible resolution: - -```cpp -// C2033b.cpp // compile with: /c -struct S { - int b : 1; + +struct S +{ + int* ptr : 1; // C2033 + int& ref : 1; // C2033 + int arr[3] : 1; // C2033 }; ``` From 98d1599b872de4fd420d1776bec9fa9a2836707b Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 10 Sep 2025 18:45:47 +0800 Subject: [PATCH 1794/2255] Add C2531 "See also" link in C2033 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2033.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2033.md b/docs/error-messages/compiler-errors-1/compiler-error-c2033.md index 4114819b531..f9dde57a5ea 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2033.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2033.md @@ -28,3 +28,7 @@ struct S int arr[3] : 1; // C2033 }; ``` + +## See also + +[Compiler Error C2531](../compiler-errors-2/compiler-error-c2531.md) From 297acdfbf0c2524e122c0b4ea10cf2f7f5a260e1 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 10 Sep 2025 18:46:30 +0800 Subject: [PATCH 1795/2255] Update `ms.date` metadata in C2033 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2033.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2033.md b/docs/error-messages/compiler-errors-1/compiler-error-c2033.md index f9dde57a5ea..3af050bc1ef 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2033.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2033.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C2033" description: "Learn more about: Compiler Error C2033" -ms.date: 11/04/2016 +ms.date: 09/10/2025 f1_keywords: ["C2033"] helpviewer_keywords: ["C2033"] --- From 9ef1f17614e3a0d587dd210e58137c55666fed9e Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 10 Sep 2025 22:28:37 +0800 Subject: [PATCH 1796/2255] Add blockquotes for error messages in range [BK1503, BK1517] --- docs/error-messages/tool-errors/bscmake-error-bk1503.md | 2 +- docs/error-messages/tool-errors/bscmake-error-bk1504.md | 2 +- docs/error-messages/tool-errors/bscmake-error-bk1505.md | 2 +- docs/error-messages/tool-errors/bscmake-error-bk1506.md | 2 +- docs/error-messages/tool-errors/bscmake-error-bk1507.md | 2 +- docs/error-messages/tool-errors/bscmake-error-bk1508.md | 2 +- docs/error-messages/tool-errors/bscmake-error-bk1509.md | 2 +- docs/error-messages/tool-errors/bscmake-error-bk1510.md | 2 +- docs/error-messages/tool-errors/bscmake-error-bk1512.md | 2 +- docs/error-messages/tool-errors/bscmake-error-bk1513.md | 2 +- docs/error-messages/tool-errors/bscmake-error-bk1514.md | 2 +- docs/error-messages/tool-errors/bscmake-error-bk1515.md | 2 +- docs/error-messages/tool-errors/bscmake-error-bk1516.md | 2 +- docs/error-messages/tool-errors/bscmake-error-bk1517.md | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1503.md b/docs/error-messages/tool-errors/bscmake-error-bk1503.md index 64c12bd2413..b0b10522aee 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1503.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1503.md @@ -8,7 +8,7 @@ ms.assetid: e6582344-b91e-486f-baf3-4f9028d83c3b --- # BSCMAKE Error BK1503 -cannot write to file 'filename' [: reason] +> cannot write to file 'filename' [: reason] BSCMAKE combines the .sbr files generated during compilation into one browser database. If the resulting browser database exceeds 64 MB, or if the number of input (.sbr) files exceeds 4092, this error will be emitted. diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1504.md b/docs/error-messages/tool-errors/bscmake-error-bk1504.md index ec37c7671e0..87fbd11e80e 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1504.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1504.md @@ -8,7 +8,7 @@ ms.assetid: e6d1a171-1472-4b7e-a04b-1a68a561675f --- # BSCMAKE Error BK1504 -cannot position in file 'filename' [: reason] +> cannot position in file 'filename' [: reason] BSCMAKE could not move to a location in the file. diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1505.md b/docs/error-messages/tool-errors/bscmake-error-bk1505.md index 5d63471bec0..7d13d03fd06 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1505.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1505.md @@ -8,7 +8,7 @@ ms.assetid: a25765f8-e950-4ca8-9f16-419d779e2744 --- # BSCMAKE Error BK1505 -cannot read from file 'filename' [: reason] +> cannot read from file 'filename' [: reason] BSCMAKE cannot read from the file. diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1506.md b/docs/error-messages/tool-errors/bscmake-error-bk1506.md index 158a93e679f..cd5e7f6469d 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1506.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1506.md @@ -8,7 +8,7 @@ ms.assetid: f51f8cea-f8fc-4323-bcf2-b7bd119792ee --- # BSCMAKE Error BK1506 -cannot open file 'filename' [: reason] +> cannot open file 'filename' [: reason] BSCMAKE cannot open the file. diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1507.md b/docs/error-messages/tool-errors/bscmake-error-bk1507.md index 6ad648f99d8..f6a9c98c8bc 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1507.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1507.md @@ -8,7 +8,7 @@ ms.assetid: 3c5220d7-ccb3-45b4-9da0-cb06147311f6 --- # BSCMAKE Error BK1507 -cannot open temporary file 'filename' [: reason] +> cannot open temporary file 'filename' [: reason] BSCMAKE cannot open a temporary file. diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1508.md b/docs/error-messages/tool-errors/bscmake-error-bk1508.md index 1e278052eca..6ea5ca37af8 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1508.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1508.md @@ -8,7 +8,7 @@ ms.assetid: 03ea22b8-c7b4-4e73-8553-35b41112e066 --- # BSCMAKE Error BK1508 -cannot delete temporary file 'filename' [: reason] +> cannot delete temporary file 'filename' [: reason] BSCMAKE cannot delete one of its temporary files. diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1509.md b/docs/error-messages/tool-errors/bscmake-error-bk1509.md index c998612a2ef..a2152631863 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1509.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1509.md @@ -8,7 +8,7 @@ ms.assetid: 53df7037-1913-4b63-b425-c0bf44081792 --- # BSCMAKE Error BK1509 -out of heap space +> out of heap space BSCMAKE ran out of memory, including virtual memory. diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1510.md b/docs/error-messages/tool-errors/bscmake-error-bk1510.md index c4ec735b4ff..0c1fb6ae61a 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1510.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1510.md @@ -8,6 +8,6 @@ ms.assetid: e67290c0-58cf-44da-ad01-f8dffc34ea2d --- # BSCMAKE Error BK1510 -corrupt .SBR file filename +> corrupt .SBR file filename The given .sbr file does not have the expected format. Recompile to create a new .sbr. diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1512.md b/docs/error-messages/tool-errors/bscmake-error-bk1512.md index 0b701544058..bd67fa388c9 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1512.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1512.md @@ -8,7 +8,7 @@ ms.assetid: 0a626ff3-63db-4797-abe4-31545ce2c2c1 --- # BSCMAKE Error BK1512 -filename: capacity exceeded +> filename: capacity exceeded BSCMAKE cannot build a browse information file because the number of definitions, references, modules, or other information exceeds the limit. diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1513.md b/docs/error-messages/tool-errors/bscmake-error-bk1513.md index 0ebe59771f8..bfa7be4b8b6 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1513.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1513.md @@ -8,7 +8,7 @@ ms.assetid: 9ba87c09-8d82-4c80-b0cf-a8de63dcf9da --- # BSCMAKE Error BK1513 -nonincremental update requires all .SBR files +> nonincremental update requires all .SBR files BSCMAKE cannot build a new browse information (.bsc) file because one or more .sbr files are truncated. To find the names of the truncated .sbr files, read the [BK4502](../../error-messages/tool-errors/bscmake-warning-bk4502.md) warnings that accompany this error. diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1514.md b/docs/error-messages/tool-errors/bscmake-error-bk1514.md index ab008394b13..87d76815d0d 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1514.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1514.md @@ -8,7 +8,7 @@ ms.assetid: 7c7e2504-a490-44ab-bb1f-47385ee2f4b0 --- # BSCMAKE Error BK1514 -all .SBR files truncated, none found in filename +> all .SBR files truncated, none found in filename None of the .sbr files specified for an update were part of the original browse information (.bsc) file. To find the names of the .sbr files that caused this error, read the [BK4502](../../error-messages/tool-errors/bscmake-warning-bk4502.md) warnings that precede it. diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1515.md b/docs/error-messages/tool-errors/bscmake-error-bk1515.md index 23050c88db7..6ab9ef2fe3e 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1515.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1515.md @@ -8,6 +8,6 @@ ms.assetid: 4cf2aedb-10c4-4ae8-abe6-c681fd4d617d --- # BSCMAKE Error BK1515 -bscfile: incompatible version: cannot incrementally update +> bscfile: incompatible version: cannot incrementally update The .bsc file was created with another version of BSCMAKE. Recreate the .bsc file. diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1516.md b/docs/error-messages/tool-errors/bscmake-error-bk1516.md index a21e9704718..b0d58aa5c70 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1516.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1516.md @@ -8,6 +8,6 @@ ms.assetid: 7f4a8391-f857-4ee8-8e26-34868ca84e29 --- # BSCMAKE Error BK1516 -bscfile corrupt; cannot incrementally update +> bscfile corrupt; cannot incrementally update The .bsc file was corrupted, possibly due to a system failure during the build. Delete the .bsc file, rebuild all .sbr files, then rebuild the .bsc file. diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1517.md b/docs/error-messages/tool-errors/bscmake-error-bk1517.md index a8d301b2354..a5a42368437 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1517.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1517.md @@ -8,6 +8,6 @@ ms.assetid: 24391f42-0a3e-40a9-9991-c8b9a6a7b1c7 --- # BSCMAKE Error BK1517 -source file for sbrfile compiled with both /Yc and /Yu +> source file for sbrfile compiled with both /Yc and /Yu The .sbr file refers to itself. It was probably recompiled with /Yu after compiling with /Yc. Reset the compiler option for the source file to /Yc, then select **Rebuild** to generate new .sbr files. Do not recompile the source file with /Yu. From 3bc1c39aa449a51662b1cd6c4dd394060dea8d1e Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 10 Sep 2025 22:31:17 +0800 Subject: [PATCH 1797/2255] Add "Remarks" headings for error references in range [BK1503, BK1517] --- docs/error-messages/tool-errors/bscmake-error-bk1503.md | 2 ++ docs/error-messages/tool-errors/bscmake-error-bk1504.md | 2 ++ docs/error-messages/tool-errors/bscmake-error-bk1505.md | 2 ++ docs/error-messages/tool-errors/bscmake-error-bk1506.md | 2 ++ docs/error-messages/tool-errors/bscmake-error-bk1507.md | 2 ++ docs/error-messages/tool-errors/bscmake-error-bk1508.md | 2 ++ docs/error-messages/tool-errors/bscmake-error-bk1509.md | 2 ++ docs/error-messages/tool-errors/bscmake-error-bk1510.md | 2 ++ docs/error-messages/tool-errors/bscmake-error-bk1512.md | 2 ++ docs/error-messages/tool-errors/bscmake-error-bk1513.md | 2 ++ docs/error-messages/tool-errors/bscmake-error-bk1514.md | 2 ++ docs/error-messages/tool-errors/bscmake-error-bk1515.md | 2 ++ docs/error-messages/tool-errors/bscmake-error-bk1516.md | 2 ++ docs/error-messages/tool-errors/bscmake-error-bk1517.md | 2 ++ 14 files changed, 28 insertions(+) diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1503.md b/docs/error-messages/tool-errors/bscmake-error-bk1503.md index b0b10522aee..fa4de8926db 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1503.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1503.md @@ -10,6 +10,8 @@ ms.assetid: e6582344-b91e-486f-baf3-4f9028d83c3b > cannot write to file 'filename' [: reason] +## Remarks + BSCMAKE combines the .sbr files generated during compilation into one browser database. If the resulting browser database exceeds 64 MB, or if the number of input (.sbr) files exceeds 4092, this error will be emitted. If the problem is caused by more than 4092 .sbr files, you must reduce the number of input files. From within Visual Studio, this can be accomplished by [/FR](../../build/reference/fr-fr-create-dot-sbr-file.md) your entire project, then recheck on a file by file basis. diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1504.md b/docs/error-messages/tool-errors/bscmake-error-bk1504.md index 87fbd11e80e..18258e2f1fb 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1504.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1504.md @@ -10,6 +10,8 @@ ms.assetid: e6d1a171-1472-4b7e-a04b-1a68a561675f > cannot position in file 'filename' [: reason] +## Remarks + BSCMAKE could not move to a location in the file. ### To fix by checking the following possible causes diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1505.md b/docs/error-messages/tool-errors/bscmake-error-bk1505.md index 7d13d03fd06..ff367451d40 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1505.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1505.md @@ -10,6 +10,8 @@ ms.assetid: a25765f8-e950-4ca8-9f16-419d779e2744 > cannot read from file 'filename' [: reason] +## Remarks + BSCMAKE cannot read from the file. ### To fix by checking the following possible causes diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1506.md b/docs/error-messages/tool-errors/bscmake-error-bk1506.md index cd5e7f6469d..e1bd1941972 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1506.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1506.md @@ -10,6 +10,8 @@ ms.assetid: f51f8cea-f8fc-4323-bcf2-b7bd119792ee > cannot open file 'filename' [: reason] +## Remarks + BSCMAKE cannot open the file. ### To fix by checking the following possible causes diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1507.md b/docs/error-messages/tool-errors/bscmake-error-bk1507.md index f6a9c98c8bc..bdd78507677 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1507.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1507.md @@ -10,6 +10,8 @@ ms.assetid: 3c5220d7-ccb3-45b4-9da0-cb06147311f6 > cannot open temporary file 'filename' [: reason] +## Remarks + BSCMAKE cannot open a temporary file. ### To fix by checking the following possible causes diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1508.md b/docs/error-messages/tool-errors/bscmake-error-bk1508.md index 6ea5ca37af8..e37f52dd6e5 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1508.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1508.md @@ -10,6 +10,8 @@ ms.assetid: 03ea22b8-c7b4-4e73-8553-35b41112e066 > cannot delete temporary file 'filename' [: reason] +## Remarks + BSCMAKE cannot delete one of its temporary files. ### To fix by checking the following possible causes diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1509.md b/docs/error-messages/tool-errors/bscmake-error-bk1509.md index a2152631863..7a1a95c6779 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1509.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1509.md @@ -10,6 +10,8 @@ ms.assetid: 53df7037-1913-4b63-b425-c0bf44081792 > out of heap space +## Remarks + BSCMAKE ran out of memory, including virtual memory. ### To fix by using the following possible solutions diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1510.md b/docs/error-messages/tool-errors/bscmake-error-bk1510.md index 0c1fb6ae61a..4156ccee474 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1510.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1510.md @@ -10,4 +10,6 @@ ms.assetid: e67290c0-58cf-44da-ad01-f8dffc34ea2d > corrupt .SBR file filename +## Remarks + The given .sbr file does not have the expected format. Recompile to create a new .sbr. diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1512.md b/docs/error-messages/tool-errors/bscmake-error-bk1512.md index bd67fa388c9..23518ac2de8 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1512.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1512.md @@ -10,6 +10,8 @@ ms.assetid: 0a626ff3-63db-4797-abe4-31545ce2c2c1 > filename: capacity exceeded +## Remarks + BSCMAKE cannot build a browse information file because the number of definitions, references, modules, or other information exceeds the limit. ### To fix by using the following possible solutions diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1513.md b/docs/error-messages/tool-errors/bscmake-error-bk1513.md index bfa7be4b8b6..a2229119de8 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1513.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1513.md @@ -10,6 +10,8 @@ ms.assetid: 9ba87c09-8d82-4c80-b0cf-a8de63dcf9da > nonincremental update requires all .SBR files +## Remarks + BSCMAKE cannot build a new browse information (.bsc) file because one or more .sbr files are truncated. To find the names of the truncated .sbr files, read the [BK4502](../../error-messages/tool-errors/bscmake-warning-bk4502.md) warnings that accompany this error. BSCMAKE can update a .bsc file with a truncated .sbr file but cannot build a new one. BSCMAKE may build a new .bsc file for the following reasons: diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1514.md b/docs/error-messages/tool-errors/bscmake-error-bk1514.md index 87d76815d0d..b4bb71e3a82 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1514.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1514.md @@ -10,6 +10,8 @@ ms.assetid: 7c7e2504-a490-44ab-bb1f-47385ee2f4b0 > all .SBR files truncated, none found in filename +## Remarks + None of the .sbr files specified for an update were part of the original browse information (.bsc) file. To find the names of the .sbr files that caused this error, read the [BK4502](../../error-messages/tool-errors/bscmake-warning-bk4502.md) warnings that precede it. ### To fix by checking the following possible causes diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1515.md b/docs/error-messages/tool-errors/bscmake-error-bk1515.md index 6ab9ef2fe3e..09b9c770804 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1515.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1515.md @@ -10,4 +10,6 @@ ms.assetid: 4cf2aedb-10c4-4ae8-abe6-c681fd4d617d > bscfile: incompatible version: cannot incrementally update +## Remarks + The .bsc file was created with another version of BSCMAKE. Recreate the .bsc file. diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1516.md b/docs/error-messages/tool-errors/bscmake-error-bk1516.md index b0d58aa5c70..1e0d4bb2db5 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1516.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1516.md @@ -10,4 +10,6 @@ ms.assetid: 7f4a8391-f857-4ee8-8e26-34868ca84e29 > bscfile corrupt; cannot incrementally update +## Remarks + The .bsc file was corrupted, possibly due to a system failure during the build. Delete the .bsc file, rebuild all .sbr files, then rebuild the .bsc file. diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1517.md b/docs/error-messages/tool-errors/bscmake-error-bk1517.md index a5a42368437..6e40aa445da 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1517.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1517.md @@ -10,4 +10,6 @@ ms.assetid: 24391f42-0a3e-40a9-9991-c8b9a6a7b1c7 > source file for sbrfile compiled with both /Yc and /Yu +## Remarks + The .sbr file refers to itself. It was probably recompiled with /Yu after compiling with /Yc. Reset the compiler option for the source file to /Yc, then select **Rebuild** to generate new .sbr files. Do not recompile the source file with /Yu. From e697cc38cb9cbb0be7cfb9fafae56d4da87ee1b1 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 10 Sep 2025 22:34:27 +0800 Subject: [PATCH 1798/2255] Update metadata for error references in range [BK1503, BK1517] --- docs/error-messages/tool-errors/bscmake-error-bk1503.md | 5 ++--- docs/error-messages/tool-errors/bscmake-error-bk1504.md | 5 ++--- docs/error-messages/tool-errors/bscmake-error-bk1505.md | 5 ++--- docs/error-messages/tool-errors/bscmake-error-bk1506.md | 5 ++--- docs/error-messages/tool-errors/bscmake-error-bk1507.md | 5 ++--- docs/error-messages/tool-errors/bscmake-error-bk1508.md | 5 ++--- docs/error-messages/tool-errors/bscmake-error-bk1509.md | 5 ++--- docs/error-messages/tool-errors/bscmake-error-bk1510.md | 5 ++--- docs/error-messages/tool-errors/bscmake-error-bk1512.md | 5 ++--- docs/error-messages/tool-errors/bscmake-error-bk1513.md | 5 ++--- docs/error-messages/tool-errors/bscmake-error-bk1514.md | 5 ++--- docs/error-messages/tool-errors/bscmake-error-bk1515.md | 5 ++--- docs/error-messages/tool-errors/bscmake-error-bk1516.md | 5 ++--- docs/error-messages/tool-errors/bscmake-error-bk1517.md | 5 ++--- 14 files changed, 28 insertions(+), 42 deletions(-) diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1503.md b/docs/error-messages/tool-errors/bscmake-error-bk1503.md index fa4de8926db..2a3e2f43d4e 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1503.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1503.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: BSCMAKE Error BK1503" title: "BSCMAKE Error BK1503" -ms.date: "11/04/2016" +description: "Learn more about: BSCMAKE Error BK1503" +ms.date: 11/04/2016 f1_keywords: ["BK1503"] helpviewer_keywords: ["BK1503"] -ms.assetid: e6582344-b91e-486f-baf3-4f9028d83c3b --- # BSCMAKE Error BK1503 diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1504.md b/docs/error-messages/tool-errors/bscmake-error-bk1504.md index 18258e2f1fb..80c657373fe 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1504.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1504.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: BSCMAKE Error BK1504" title: "BSCMAKE Error BK1504" -ms.date: "11/04/2016" +description: "Learn more about: BSCMAKE Error BK1504" +ms.date: 11/04/2016 f1_keywords: ["BK1504"] helpviewer_keywords: ["BK1504"] -ms.assetid: e6d1a171-1472-4b7e-a04b-1a68a561675f --- # BSCMAKE Error BK1504 diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1505.md b/docs/error-messages/tool-errors/bscmake-error-bk1505.md index ff367451d40..2b06a6fcb9b 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1505.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1505.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: BSCMAKE Error BK1505" title: "BSCMAKE Error BK1505" -ms.date: "11/04/2016" +description: "Learn more about: BSCMAKE Error BK1505" +ms.date: 11/04/2016 f1_keywords: ["BK1505"] helpviewer_keywords: ["BK1505"] -ms.assetid: a25765f8-e950-4ca8-9f16-419d779e2744 --- # BSCMAKE Error BK1505 diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1506.md b/docs/error-messages/tool-errors/bscmake-error-bk1506.md index e1bd1941972..b95c897bc0a 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1506.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1506.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: BSCMAKE Error BK1506" title: "BSCMAKE Error BK1506" -ms.date: "11/04/2016" +description: "Learn more about: BSCMAKE Error BK1506" +ms.date: 11/04/2016 f1_keywords: ["BK1506"] helpviewer_keywords: ["BK1506"] -ms.assetid: f51f8cea-f8fc-4323-bcf2-b7bd119792ee --- # BSCMAKE Error BK1506 diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1507.md b/docs/error-messages/tool-errors/bscmake-error-bk1507.md index bdd78507677..520aed46343 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1507.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1507.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: BSCMAKE Error BK1507" title: "BSCMAKE Error BK1507" -ms.date: "11/04/2016" +description: "Learn more about: BSCMAKE Error BK1507" +ms.date: 11/04/2016 f1_keywords: ["BK1507"] helpviewer_keywords: ["BK1507"] -ms.assetid: 3c5220d7-ccb3-45b4-9da0-cb06147311f6 --- # BSCMAKE Error BK1507 diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1508.md b/docs/error-messages/tool-errors/bscmake-error-bk1508.md index e37f52dd6e5..123e73b57ce 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1508.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1508.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: BSCMAKE Error BK1508" title: "BSCMAKE Error BK1508" -ms.date: "11/04/2016" +description: "Learn more about: BSCMAKE Error BK1508" +ms.date: 11/04/2016 f1_keywords: ["BK1508"] helpviewer_keywords: ["BK1508"] -ms.assetid: 03ea22b8-c7b4-4e73-8553-35b41112e066 --- # BSCMAKE Error BK1508 diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1509.md b/docs/error-messages/tool-errors/bscmake-error-bk1509.md index 7a1a95c6779..b25c7cf5d4a 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1509.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1509.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: BSCMAKE Error BK1509" title: "BSCMAKE Error BK1509" -ms.date: "11/04/2016" +description: "Learn more about: BSCMAKE Error BK1509" +ms.date: 11/04/2016 f1_keywords: ["BK1509"] helpviewer_keywords: ["BK1509"] -ms.assetid: 53df7037-1913-4b63-b425-c0bf44081792 --- # BSCMAKE Error BK1509 diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1510.md b/docs/error-messages/tool-errors/bscmake-error-bk1510.md index 4156ccee474..59159959d58 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1510.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1510.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: BSCMAKE Error BK1510" title: "BSCMAKE Error BK1510" -ms.date: "11/04/2016" +description: "Learn more about: BSCMAKE Error BK1510" +ms.date: 11/04/2016 f1_keywords: ["BK1510"] helpviewer_keywords: ["BK1510"] -ms.assetid: e67290c0-58cf-44da-ad01-f8dffc34ea2d --- # BSCMAKE Error BK1510 diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1512.md b/docs/error-messages/tool-errors/bscmake-error-bk1512.md index 23518ac2de8..912758c02a0 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1512.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1512.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: BSCMAKE Error BK1512" title: "BSCMAKE Error BK1512" -ms.date: "11/04/2016" +description: "Learn more about: BSCMAKE Error BK1512" +ms.date: 11/04/2016 f1_keywords: ["BK1512"] helpviewer_keywords: ["BK1512"] -ms.assetid: 0a626ff3-63db-4797-abe4-31545ce2c2c1 --- # BSCMAKE Error BK1512 diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1513.md b/docs/error-messages/tool-errors/bscmake-error-bk1513.md index a2229119de8..c08f45b6cce 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1513.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1513.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: BSCMAKE Error BK1513" title: "BSCMAKE Error BK1513" -ms.date: "11/04/2016" +description: "Learn more about: BSCMAKE Error BK1513" +ms.date: 11/04/2016 f1_keywords: ["BK1513"] helpviewer_keywords: ["BK1513"] -ms.assetid: 9ba87c09-8d82-4c80-b0cf-a8de63dcf9da --- # BSCMAKE Error BK1513 diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1514.md b/docs/error-messages/tool-errors/bscmake-error-bk1514.md index b4bb71e3a82..4ee5c208140 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1514.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1514.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: BSCMAKE Error BK1514" title: "BSCMAKE Error BK1514" -ms.date: "11/04/2016" +description: "Learn more about: BSCMAKE Error BK1514" +ms.date: 11/04/2016 f1_keywords: ["BK1514"] helpviewer_keywords: ["BK1514"] -ms.assetid: 7c7e2504-a490-44ab-bb1f-47385ee2f4b0 --- # BSCMAKE Error BK1514 diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1515.md b/docs/error-messages/tool-errors/bscmake-error-bk1515.md index 09b9c770804..d0a082d2e7a 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1515.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1515.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: BSCMAKE Error BK1515" title: "BSCMAKE Error BK1515" -ms.date: "11/04/2016" +description: "Learn more about: BSCMAKE Error BK1515" +ms.date: 11/04/2016 f1_keywords: ["BK1515"] helpviewer_keywords: ["BK1515"] -ms.assetid: 4cf2aedb-10c4-4ae8-abe6-c681fd4d617d --- # BSCMAKE Error BK1515 diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1516.md b/docs/error-messages/tool-errors/bscmake-error-bk1516.md index 1e0d4bb2db5..2b9fce5d192 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1516.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1516.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: BSCMAKE Error BK1516" title: "BSCMAKE Error BK1516" -ms.date: "11/04/2016" +description: "Learn more about: BSCMAKE Error BK1516" +ms.date: 11/04/2016 f1_keywords: ["BK1516"] helpviewer_keywords: ["BK1516"] -ms.assetid: 7f4a8391-f857-4ee8-8e26-34868ca84e29 --- # BSCMAKE Error BK1516 diff --git a/docs/error-messages/tool-errors/bscmake-error-bk1517.md b/docs/error-messages/tool-errors/bscmake-error-bk1517.md index 6e40aa445da..e4a4b9fa70f 100644 --- a/docs/error-messages/tool-errors/bscmake-error-bk1517.md +++ b/docs/error-messages/tool-errors/bscmake-error-bk1517.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: BSCMAKE Error BK1517" title: "BSCMAKE Error BK1517" -ms.date: "11/04/2016" +description: "Learn more about: BSCMAKE Error BK1517" +ms.date: 11/04/2016 f1_keywords: ["BK1517"] helpviewer_keywords: ["BK1517"] -ms.assetid: 24391f42-0a3e-40a9-9991-c8b9a6a7b1c7 --- # BSCMAKE Error BK1517 From 302ada0520472d6fcd33a5cfbebc8b58208c784d Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Thu, 11 Sep 2025 00:40:23 +0800 Subject: [PATCH 1799/2255] Convert Linker tools errors and warnings list into a table --- .../linker-tools-errors-and-warnings.md | 252 +++++++++--------- 1 file changed, 128 insertions(+), 124 deletions(-) diff --git a/docs/error-messages/tool-errors/linker-tools-errors-and-warnings.md b/docs/error-messages/tool-errors/linker-tools-errors-and-warnings.md index 2e90c8b062a..ae8a5f2791e 100644 --- a/docs/error-messages/tool-errors/linker-tools-errors-and-warnings.md +++ b/docs/error-messages/tool-errors/linker-tools-errors-and-warnings.md @@ -13,133 +13,137 @@ The linker tools LINK, LIB, DUMPBIN, and EDITBIN share a common executable that ## Linker tools errors -[Linker Tools Error LNK1000](../../error-messages/tool-errors/linker-tools-error-lnk1000.md) \ -[Linker Tools Error LNK1103](../../error-messages/tool-errors/linker-tools-error-lnk1103.md) \ -[Linker Tools Error LNK1104](../../error-messages/tool-errors/linker-tools-error-lnk1104.md) \ -[Linker Tools Error LNK1106](../../error-messages/tool-errors/linker-tools-error-lnk1106.md) \ -[Linker Tools Error LNK1107](../../error-messages/tool-errors/linker-tools-error-lnk1107.md) \ -[Linker Tools Error LNK1112](../../error-messages/tool-errors/linker-tools-error-lnk1112.md) \ -[Linker Tools Error LNK1113](../../error-messages/tool-errors/linker-tools-error-lnk1113.md) \ -[Linker Tools Error LNK1120](../../error-messages/tool-errors/linker-tools-error-lnk1120.md) \ -[Linker Tools Error LNK1123](../../error-messages/tool-errors/linker-tools-error-lnk1123.md) \ -[Linker Tools Error LNK1127](../../error-messages/tool-errors/linker-tools-error-lnk1127.md) \ -[Linker Tools Error LNK1136](../../error-messages/tool-errors/linker-tools-error-lnk1136.md) \ -[Linker Tools Error LNK1140](../../error-messages/tool-errors/linker-tools-error-lnk1140.md) \ -[Linker Tools Error LNK1141](../../error-messages/tool-errors/linker-tools-error-lnk1141.md) \ -[Linker Tools Error LNK1143](../../error-messages/tool-errors/linker-tools-error-lnk1143.md) \ -[Linker Tools Error LNK1152](../../error-messages/tool-errors/linker-tools-error-lnk1152.md) \ -[Linker Tools Error LNK1158](../../error-messages/tool-errors/linker-tools-error-lnk1158.md) \ -[Linker Tools Error LNK1164](../../error-messages/tool-errors/linker-tools-error-lnk1164.md) \ -[Linker Tools Error LNK1166](../../error-messages/tool-errors/linker-tools-error-lnk1166.md) \ -[Linker Tools Error LNK1168](../../error-messages/tool-errors/linker-tools-error-lnk1168.md) \ -[Linker Tools Error LNK1169](../../error-messages/tool-errors/linker-tools-error-lnk1169.md) \ -[Linker Tools Error LNK1170](../../error-messages/tool-errors/linker-tools-error-lnk1170.md) \ -[Linker Tools Error LNK1179](../../error-messages/tool-errors/linker-tools-error-lnk1179.md) \ -[Linker Tools Error LNK1181](../../error-messages/tool-errors/linker-tools-error-lnk1181.md) \ -[Linker Tools Error LNK1188](../../error-messages/tool-errors/linker-tools-error-lnk1188.md) \ -[Linker Tools Error LNK1189](../../error-messages/tool-errors/linker-tools-error-lnk1189.md) \ -[Linker Tools Error LNK1196](../../error-messages/tool-errors/linker-tools-error-lnk1196.md) \ -[Linker Tools Error LNK1200](../../error-messages/tool-errors/linker-tools-error-lnk1200.md) \ -[Linker Tools Error LNK1201](../../error-messages/tool-errors/linker-tools-error-lnk1201.md) \ -[Linker Tools Error LNK1211](../../error-messages/tool-errors/linker-tools-error-lnk1211.md) \ -[Linker Tools Error LNK1215](../../error-messages/tool-errors/linker-tools-error-lnk1215.md) \ -[Linker Tools Error LNK1218](../../error-messages/tool-errors/linker-tools-error-lnk1218.md) \ -[Linker Tools Error LNK1221](../../error-messages/tool-errors/linker-tools-error-lnk1221.md) \ -[Linker Tools Error LNK1223](../../error-messages/tool-errors/linker-tools-error-lnk1223.md) \ -[Linker Tools Error LNK1224](../../error-messages/tool-errors/linker-tools-error-lnk1224.md) \ -[Linker Tools Error LNK1237](../../error-messages/tool-errors/linker-tools-error-lnk1237.md) \ -[Linker Tools Error LNK1240](../../error-messages/tool-errors/linker-tools-error-lnk1240.md) \ -[Linker Tools Error LNK1241](../../error-messages/tool-errors/linker-tools-error-lnk1241.md) \ -[Linker Tools Error LNK1245](../../error-messages/tool-errors/linker-tools-error-lnk1245.md) \ -[Linker Tools Error LNK1248](../../error-messages/tool-errors/linker-tools-error-lnk1248.md) \ -[Linker Tools Error LNK1256](../../error-messages/tool-errors/linker-tools-error-lnk1256.md) \ -[Linker Tools Error LNK1264](../../error-messages/tool-errors/linker-tools-error-lnk1264.md) \ -[Linker Tools Error LNK1277](../../error-messages/tool-errors/linker-tools-error-lnk1277.md) \ -[Linker Tools Error LNK1282](../../error-messages/tool-errors/linker-tools-error-lnk1282.md) \ -[Linker Tools Error LNK1287](../../error-messages/tool-errors/linker-tools-error-lnk1287.md) \ -[Linker Tools Error LNK1296](../../error-messages/tool-errors/linker-tools-error-lnk1296.md) \ -[Linker Tools Error LNK1301](../../error-messages/tool-errors/linker-tools-error-lnk1301.md) \ -[Linker Tools Error LNK1302](../../error-messages/tool-errors/linker-tools-error-lnk1302.md) \ -[Linker Tools Error LNK1306](../../error-messages/tool-errors/linker-tools-error-lnk1306.md) \ -[Linker Tools Error LNK1309](../../error-messages/tool-errors/linker-tools-error-lnk1309.md) \ -[Linker Tools Error LNK1312](../../error-messages/tool-errors/linker-tools-error-lnk1312.md) \ -[Linker Tools Error LNK1313](../../error-messages/tool-errors/linker-tools-error-lnk1313.md) \ -[Linker Tools Error LNK1314](../../error-messages/tool-errors/linker-tools-error-lnk1314.md) \ -[Linker Tools Error LNK1318](../../error-messages/tool-errors/linker-tools-error-lnk1318.md) \ -[Linker Tools Error LNK1332](../../error-messages/tool-errors/linker-tools-error-lnk1332.md) \ -[Linker Tools Error LNK1352](../../error-messages/tool-errors/linker-tools-error-lnk1352.md) \ -[Linker Tools Error LNK1561](../../error-messages/tool-errors/linker-tools-error-lnk1561.md) \ -[Linker Tools Error LNK2001](../../error-messages/tool-errors/linker-tools-error-lnk2001.md) \ -[Linker Tools Error LNK2004](../../error-messages/tool-errors/linker-tools-error-lnk2004.md) \ -[Linker Tools Error LNK2005](../../error-messages/tool-errors/linker-tools-error-lnk2005.md) \ -[Linker Tools Error LNK2008](../../error-messages/tool-errors/linker-tools-error-lnk2008.md) \ -[Linker Tools Error LNK2011](../../error-messages/tool-errors/linker-tools-error-lnk2011.md) \ -[Linker Tools Error LNK2013](../../error-messages/tool-errors/linker-tools-error-lnk2013.md) \ -[Linker Tools Error LNK2017](../../error-messages/tool-errors/linker-tools-error-lnk2017.md) \ -[Linker Tools Error LNK2019](../../error-messages/tool-errors/linker-tools-error-lnk2019.md) \ -[Linker Tools Error LNK2020](../../error-messages/tool-errors/linker-tools-error-lnk2020.md) \ -[Linker Tools Error LNK2022](../../error-messages/tool-errors/linker-tools-error-lnk2022.md) \ -[Linker Tools Error LNK2023](../../error-messages/tool-errors/linker-tools-error-lnk2023.md) \ -[Linker Tools Error LNK2026](../../error-messages/tool-errors/linker-tools-error-lnk2026.md) \ -[Linker Tools Error LNK2027](../../error-messages/tool-errors/linker-tools-error-lnk2027.md) \ -[Linker Tools Error LNK2028](../../error-messages/tool-errors/linker-tools-error-lnk2028.md) \ -[Linker Tools Error LNK2031](../../error-messages/tool-errors/linker-tools-error-lnk2031.md) \ -[Linker Tools Error LNK2033](../../error-messages/tool-errors/linker-tools-error-lnk2033.md) \ -[Linker Tools Error LNK2038](../../error-messages/tool-errors/linker-tools-error-lnk2038.md) \ -[Linker Tools Error LNK2039](../../error-messages/tool-errors/linker-tools-error-lnk2039.md) +| Error | Message | +|--|--| +| [Linker Tools Error LNK1000](../../error-messages/tool-errors/linker-tools-error-lnk1000.md) | unknown error; consult documentation for technical support options | +| [Linker Tools Error LNK1103](../../error-messages/tool-errors/linker-tools-error-lnk1103.md) | debugging information corrupt; recompile module | +| [Linker Tools Error LNK1104](../../error-messages/tool-errors/linker-tools-error-lnk1104.md) | cannot open file '*filename*' | +| [Linker Tools Error LNK1106](../../error-messages/tool-errors/linker-tools-error-lnk1106.md) | invalid file or disk full: cannot seek to location | +| [Linker Tools Error LNK1107](../../error-messages/tool-errors/linker-tools-error-lnk1107.md) | invalid or corrupt file: cannot read at location *address* | +| [Linker Tools Error LNK1112](../../error-messages/tool-errors/linker-tools-error-lnk1112.md) | module machine type '*type1*' conflicts with target machine type '*type2*' | +| [Linker Tools Error LNK1113](../../error-messages/tool-errors/linker-tools-error-lnk1113.md) | invalid machine type type | +| [Linker Tools Error LNK1120](../../error-messages/tool-errors/linker-tools-error-lnk1120.md) | *number* unresolved externals | +| [Linker Tools Error LNK1123](../../error-messages/tool-errors/linker-tools-error-lnk1123.md) | failure during conversion to COFF: file invalid or corrupt | +| [Linker Tools Error LNK1127](../../error-messages/tool-errors/linker-tools-error-lnk1127.md) | library is corrupt | +| [Linker Tools Error LNK1136](../../error-messages/tool-errors/linker-tools-error-lnk1136.md) | invalid or corrupt file | +| [Linker Tools Error LNK1140](../../error-messages/tool-errors/linker-tools-error-lnk1140.md) | too many modules for program database; link with /PDB:NONE | +| [Linker Tools Error LNK1141](../../error-messages/tool-errors/linker-tools-error-lnk1141.md) | failure during build of exports file | +| [Linker Tools Error LNK1143](../../error-messages/tool-errors/linker-tools-error-lnk1143.md) | invalid or corrupt file: no symbol for COMDAT section number | +| [Linker Tools Error LNK1152](../../error-messages/tool-errors/linker-tools-error-lnk1152.md) | cannot resolve one or more undecorated symbols | +| [Linker Tools Error LNK1158](../../error-messages/tool-errors/linker-tools-error-lnk1158.md) | cannot run 'filename' | +| [Linker Tools Error LNK1164](../../error-messages/tool-errors/linker-tools-error-lnk1164.md) | section section alignment (number) greater than /ALIGN value | +| [Linker Tools Error LNK1166](../../error-messages/tool-errors/linker-tools-error-lnk1166.md) | cannot adjust code at offset=offset, va=value | +| [Linker Tools Error LNK1168](../../error-messages/tool-errors/linker-tools-error-lnk1168.md) | cannot open filename for writing | +| [Linker Tools Error LNK1169](../../error-messages/tool-errors/linker-tools-error-lnk1169.md) | one or more multiply defined symbols found | +| [Linker Tools Error LNK1170](../../error-messages/tool-errors/linker-tools-error-lnk1170.md) | line in command file contains *maximum-length* or more characters | +| [Linker Tools Error LNK1179](../../error-messages/tool-errors/linker-tools-error-lnk1179.md) | invalid or corrupt file: duplicate COMDAT 'filename' | +| [Linker Tools Error LNK1181](../../error-messages/tool-errors/linker-tools-error-lnk1181.md) | cannot open input file 'filename' | +| [Linker Tools Error LNK1188](../../error-messages/tool-errors/linker-tools-error-lnk1188.md) | BADFIXUPSECTION:: invalid fixup target 'symbol'; possible zero length section | +| [Linker Tools Error LNK1189](../../error-messages/tool-errors/linker-tools-error-lnk1189.md) | LIBTOOMANYMEMBERS:: library limit of number objects exceeded | +| [Linker Tools Error LNK1196](../../error-messages/tool-errors/linker-tools-error-lnk1196.md) | invalid or corrupt import object: unknown version | +| [Linker Tools Error LNK1200](../../error-messages/tool-errors/linker-tools-error-lnk1200.md) | error reading program database 'filename' | +| [Linker Tools Error LNK1201](../../error-messages/tool-errors/linker-tools-error-lnk1201.md) | error writing to program database 'filename'; check for insufficient disk space, invalid path, or insufficient privilege | +| [Linker Tools Error LNK1211](../../error-messages/tool-errors/linker-tools-error-lnk1211.md) | precompiled type information not found; '*filename*' not linked or overwritten | +| [Linker Tools Error LNK1215](../../error-messages/tool-errors/linker-tools-error-lnk1215.md) | metadata operation failed (HRESULT) : error | +| [Linker Tools Error LNK1218](../../error-messages/tool-errors/linker-tools-error-lnk1218.md) | warning treated as error; no output file generated | +| [Linker Tools Error LNK1221](../../error-messages/tool-errors/linker-tools-error-lnk1221.md) | a subsystem can't be inferred and must be defined | +| [Linker Tools Error LNK1223](../../error-messages/tool-errors/linker-tools-error-lnk1223.md) | invalid or corrupt file: file contains invalid .pdata contributions | +| [Linker Tools Error LNK1224](../../error-messages/tool-errors/linker-tools-error-lnk1224.md) | invalid image base address | +| [Linker Tools Error LNK1237](../../error-messages/tool-errors/linker-tools-error-lnk1237.md) | during code generation, compiler introduced reference to symbol 'symbol' defined in module 'module' compiled with /GL | +| [Linker Tools Error LNK1240](../../error-messages/tool-errors/linker-tools-error-lnk1240.md) | failed to compile IDL content | +| [Linker Tools Error LNK1241](../../error-messages/tool-errors/linker-tools-error-lnk1241.md) | resource file 'resource file' already specified | +| [Linker Tools Error LNK1245](../../error-messages/tool-errors/linker-tools-error-lnk1245.md) | invalid subsystem 'subsystem' specified; /SUBSYSTEM must be WINDOWS, WINDOWSCE, or CONSOLE | +| [Linker Tools Error LNK1248](../../error-messages/tool-errors/linker-tools-error-lnk1248.md) | image size ('*output_size*') exceeds maximum allowable size (*maximum_size*) | +| [Linker Tools Error LNK1256](../../error-messages/tool-errors/linker-tools-error-lnk1256.md) | ALINK operation failed : reason | +| [Linker Tools Error LNK1264](../../error-messages/tool-errors/linker-tools-error-lnk1264.md) | /LTCG:PGINSTRUMENT specified but no code generation required; instrumentation failed | +| [Linker Tools Error LNK1277](../../error-messages/tool-errors/linker-tools-error-lnk1277.md) | object record not found in pgd (filename) | +| [Linker Tools Error LNK1282](../../error-messages/tool-errors/linker-tools-error-lnk1282.md) | unable to /REBASE file; it has been signed | +| [Linker Tools Error LNK1287](../../error-messages/tool-errors/linker-tools-error-lnk1287.md) | invalid managed entry point function | +| [Linker Tools Error LNK1296](../../error-messages/tool-errors/linker-tools-error-lnk1296.md) | unable to load filename | +| [Linker Tools Error LNK1301](../../error-messages/tool-errors/linker-tools-error-lnk1301.md) | LTCG clr modules found, incompatible with /LTCG:parameter | +| [Linker Tools Error LNK1302](../../error-messages/tool-errors/linker-tools-error-lnk1302.md) | only support linking safe .netmodules; unable to link file .netmodule | +| [Linker Tools Error LNK1306](../../error-messages/tool-errors/linker-tools-error-lnk1306.md) | DLL entry point function cannot be managed; compile to native | +| [Linker Tools Error LNK1309](../../error-messages/tool-errors/linker-tools-error-lnk1309.md) | *type1* module detected; invalid with switch /CLRIMAGETYPE:*type2* | +| [Linker Tools Error LNK1312](../../error-messages/tool-errors/linker-tools-error-lnk1312.md) | invalid or corrupt file: unable to import assembly | +| [Linker Tools Error LNK1313](../../error-messages/tool-errors/linker-tools-error-lnk1313.md) | ijw/native module detected; cannot link with pure modules | +| [Linker Tools Error LNK1314](../../error-messages/tool-errors/linker-tools-error-lnk1314.md) | corrupt or invalid COFF symbol table (undefined static or label symbol) | +| [Linker Tools Error LNK1318](../../error-messages/tool-errors/linker-tools-error-lnk1318.md) | Unexpected PDB error; *cause* '*details*' | +| [Linker Tools Error LNK1332](../../error-messages/tool-errors/linker-tools-error-lnk1332.md) | detected\ Windows Runtime types imported in one module and defined in another module | +| [Linker Tools Error LNK1352](../../error-messages/tool-errors/linker-tools-error-lnk1352.md) | '*section_name_1*' and '*section_name_2*' cannot be merged into different sections | +| [Linker Tools Error LNK1561](../../error-messages/tool-errors/linker-tools-error-lnk1561.md) | entry point must be defined | +| [Linker Tools Error LNK2001](../../error-messages/tool-errors/linker-tools-error-lnk2001.md) | unresolved external symbol "*symbol*" | +| [Linker Tools Error LNK2004](../../error-messages/tool-errors/linker-tools-error-lnk2004.md) | gp relative fixup overflow to 'target'; short section 'section' is too large or out of range. | +| [Linker Tools Error LNK2005](../../error-messages/tool-errors/linker-tools-error-lnk2005.md) | *symbol* already defined in object | +| [Linker Tools Error LNK2008](../../error-messages/tool-errors/linker-tools-error-lnk2008.md) | Fixup target is not aligned 'symbol_name' | +| [Linker Tools Error LNK2011](../../error-messages/tool-errors/linker-tools-error-lnk2011.md) | precompiled object not linked in; image may not run | +| [Linker Tools Error LNK2013](../../error-messages/tool-errors/linker-tools-error-lnk2013.md) | fixup type fixup overflow. Target 'symbol name' is out of range | +| [Linker Tools Error LNK2017](../../error-messages/tool-errors/linker-tools-error-lnk2017.md) | 'symbol' relocation to 'segment' invalid without /LARGEADDRESSAWARE:NO | +| [Linker Tools Error LNK2019](../../error-messages/tool-errors/linker-tools-error-lnk2019.md) | unresolved external symbol '*symbol*' referenced in function '*function*' | +| [Linker Tools Error LNK2020](../../error-messages/tool-errors/linker-tools-error-lnk2020.md) | unresolved token 'token' | +| [Linker Tools Error LNK2022](../../error-messages/tool-errors/linker-tools-error-lnk2022.md) | metadata operation failed (*HRESULT*) : *error_message* | +| [Linker Tools Error LNK2023](../../error-messages/tool-errors/linker-tools-error-lnk2023.md) | bad dll or entry point \ | +| [Linker Tools Error LNK2026](../../error-messages/tool-errors/linker-tools-error-lnk2026.md) | module unsafe for SAFESEH image | +| [Linker Tools Error LNK2027](../../error-messages/tool-errors/linker-tools-error-lnk2027.md) | unresolved module reference 'module' | +| [Linker Tools Error LNK2028](../../error-messages/tool-errors/linker-tools-error-lnk2028.md) | "*exported_function*" (*decorated_name*) referenced in function "*function_containing_function_call*" (*decorated_name*) | +| [Linker Tools Error LNK2031](../../error-messages/tool-errors/linker-tools-error-lnk2031.md) | unable to generate p/invoke for "*function_declaration*" *decorated_name*; calling convention missing in metadata | +| [Linker Tools Error LNK2033](../../error-messages/tool-errors/linker-tools-error-lnk2033.md) | unresolved typeref token (token) for 'type' | +| [Linker Tools Error LNK2038](../../error-messages/tool-errors/linker-tools-error-lnk2038.md) | mismatch detected for '*name*': value '*value_1*' doesn't match value '*value_2*' in *filename.obj* | +| [Linker Tools Error LNK2039](../../error-messages/tool-errors/linker-tools-error-lnk2039.md) | importing ref class '\' that is defined in another.obj; it should be either imported or defined, but not both | ## Linker tools warnings -[Linker Tools Warning LNK4001](../../error-messages/tool-errors/linker-tools-warning-lnk4001.md) \ -[Linker Tools Warning LNK4002](../../error-messages/tool-errors/linker-tools-warning-lnk4002.md) \ -[Linker Tools Warning LNK4006](../../error-messages/tool-errors/linker-tools-warning-lnk4006.md) \ -[Linker Tools Warning LNK4010](../../error-messages/tool-errors/linker-tools-warning-lnk4010.md) \ -[Linker Tools Warning LNK4014](../../error-messages/tool-errors/linker-tools-warning-lnk4014.md) \ -[Linker Tools Warning LNK4020](../../error-messages/tool-errors/linker-tools-warning-lnk4020.md) \ -[Linker Tools Warning LNK4022](../../error-messages/tool-errors/linker-tools-warning-lnk4022.md) \ -[Linker Tools Warning LNK4039](../../error-messages/tool-errors/linker-tools-warning-lnk4039.md) \ -[Linker Tools Warning LNK4044](../../error-messages/tool-errors/linker-tools-warning-lnk4044.md) \ -[Linker Tools Warning LNK4049](../../error-messages/tool-errors/linker-tools-warning-lnk4049.md) \ -[Linker Tools Warning LNK4065](../../error-messages/tool-errors/linker-tools-warning-lnk4065.md) \ -[Linker Tools Warning LNK4070](../../error-messages/tool-errors/linker-tools-warning-lnk4070.md) \ -[Linker Tools Warning LNK4071](../../error-messages/tool-errors/linker-tools-warning-lnk4071.md) \ -[Linker Tools Warning LNK4073](../../error-messages/tool-errors/linker-tools-warning-lnk4073.md) \ -[Linker Tools Warning LNK4075](../../error-messages/tool-errors/linker-tools-warning-lnk4075.md) \ -[Linker Tools Warning LNK4076](../../error-messages/tool-errors/linker-tools-warning-lnk4076.md) \ -[Linker Tools Warning LNK4078](../../error-messages/tool-errors/linker-tools-warning-lnk4078.md) \ -[Linker Tools Warning LNK4086](../../error-messages/tool-errors/linker-tools-warning-lnk4086.md) \ -[Linker Tools Warning LNK4092](../../error-messages/tool-errors/linker-tools-warning-lnk4092.md) \ -[Linker Tools Warning LNK4096](../../error-messages/tool-errors/linker-tools-warning-lnk4096.md) \ -[Linker Tools Warning LNK4098](../../error-messages/tool-errors/linker-tools-warning-lnk4098.md) \ -[Linker Tools Warning LNK4099](../../error-messages/tool-errors/linker-tools-warning-lnk4099.md) \ -[Linker Tools Warning LNK4102](../../error-messages/tool-errors/linker-tools-warning-lnk4102.md) \ -[Linker Tools Warning LNK4104](../../error-messages/tool-errors/linker-tools-warning-lnk4104.md) \ -[Linker Tools Warning LNK4105](../../error-messages/tool-errors/linker-tools-warning-lnk4105.md) \ -[Linker Tools Warning LNK4194](../../error-messages/tool-errors/linker-tools-warning-lnk4194.md) \ -[Linker Tools Warning LNK4197](../../error-messages/tool-errors/linker-tools-warning-lnk4197.md) \ -[Linker Tools Warning LNK4199](../../error-messages/tool-errors/linker-tools-warning-lnk4199.md) \ -[Linker Tools Warning LNK4200](../../error-messages/tool-errors/linker-tools-warning-lnk4200.md) \ -[Linker Tools Warning LNK4204](../../error-messages/tool-errors/linker-tools-warning-lnk4204.md) \ -[Linker Tools Warning LNK4205](../../error-messages/tool-errors/linker-tools-warning-lnk4205.md) \ -[Linker Tools Warning LNK4206](../../error-messages/tool-errors/linker-tools-warning-lnk4206.md) \ -[Linker Tools Warning LNK4210](../../error-messages/tool-errors/linker-tools-warning-lnk4210.md) \ -[Linker Tools Warning LNK4216](../../error-messages/tool-errors/linker-tools-warning-lnk4216.md) \ -[Linker Tools Warning LNK4217](../../error-messages/tool-errors/linker-tools-warning-lnk4217.md) \ -[Linker Tools Warning LNK4219](../../error-messages/tool-errors/linker-tools-warning-lnk4219.md) \ -[Linker Tools Warning LNK4220](../../error-messages/tool-errors/linker-tools-warning-lnk4220.md) \ -[Linker Tools Warning LNK4221](../../error-messages/tool-errors/linker-tools-warning-lnk4221.md) \ -[Linker Tools Warning LNK4222](../../error-messages/tool-errors/linker-tools-warning-lnk4222.md) \ -[Linker Tools Warning LNK4224](../../error-messages/tool-errors/linker-tools-warning-lnk4224.md) \ -[Linker Tools Warning LNK4227](../../error-messages/tool-errors/linker-tools-warning-lnk4227.md) \ -[Linker Tools Warning LNK4229](../../error-messages/tool-errors/linker-tools-warning-lnk4229.md) \ -[Linker Tools Warning LNK4237](../../error-messages/tool-errors/linker-tools-warning-lnk4237.md) \ -[Linker Tools Warning LNK4247](../../error-messages/tool-errors/linker-tools-warning-lnk4247.md) \ -[Linker Tools Warning LNK4248](../../error-messages/tool-errors/linker-tools-warning-lnk4248.md) \ -[Linker Tools Warning LNK4253](../../error-messages/tool-errors/linker-tools-warning-lnk4253.md) \ -[Linker Tools Warning LNK4254](../../error-messages/tool-errors/linker-tools-warning-lnk4254.md) \ -[Linker Tools Warning LNK4286](../../error-messages/tool-errors/linker-tools-warning-lnk4286.md) \ -[Linker Tools Warning LNK4306](../../error-messages/tool-errors/linker-tools-warning-lnk4306.md) \ -[Linker Tools Warning LNK4307](../../error-messages/tool-errors/linker-tools-warning-lnk4307.md) +| Warning | Message | +|--|--| +| [Linker Tools Warning LNK4001](../../error-messages/tool-errors/linker-tools-warning-lnk4001.md) | no object files specified; libraries used | +| [Linker Tools Warning LNK4002](../../error-messages/tool-errors/linker-tools-warning-lnk4002.md) | symbol defined in object | +| [Linker Tools Warning LNK4006](../../error-messages/tool-errors/linker-tools-warning-lnk4006.md) | symbol already defined in object; second definition ignored | +| [Linker Tools Warning LNK4010](../../error-messages/tool-errors/linker-tools-warning-lnk4010.md) | invalid subsystem version number number; default subsystem version assumed | +| [Linker Tools Warning LNK4014](../../error-messages/tool-errors/linker-tools-warning-lnk4014.md) | cannot find member object "objectname" | +| [Linker Tools Warning LNK4020](../../error-messages/tool-errors/linker-tools-warning-lnk4020.md) | a type record in '*filename*' is corrupted; some symbols and types may not be accessible from the debugger | +| [Linker Tools Warning LNK4022](../../error-messages/tool-errors/linker-tools-warning-lnk4022.md) | cannot find unique match for symbol 'symbol' | +| [Linker Tools Warning LNK4039](../../error-messages/tool-errors/linker-tools-warning-lnk4039.md) | section 'name' specified with /SECTION option does not exist | +| [Linker Tools Warning LNK4044](../../error-messages/tool-errors/linker-tools-warning-lnk4044.md) | unrecognized option 'option'; ignored | +| [Linker Tools Warning LNK4049](../../error-messages/tool-errors/linker-tools-warning-lnk4049.md) | symbol '*symbol*' defined in '*filename.obj*' is imported | +| [Linker Tools Warning LNK4065](../../error-messages/tool-errors/linker-tools-warning-lnk4065.md) | 'function' cannot be ordered; ignored | +| [Linker Tools Warning LNK4070](../../error-messages/tool-errors/linker-tools-warning-lnk4070.md) | /OUT:filename directive in .EXP differs from output filename 'filename'; ignoring directive | +| [Linker Tools Warning LNK4071](../../error-messages/tool-errors/linker-tools-warning-lnk4071.md) | cannot be incrementally linked on subsequent links | +| [Linker Tools Warning LNK4073](../../error-messages/tool-errors/linker-tools-warning-lnk4073.md) | cannot create map for .ilk file; linking nonincrementally | +| [Linker Tools Warning LNK4075](../../error-messages/tool-errors/linker-tools-warning-lnk4075.md) | ignoring "option1" due to "option2" specification | +| [Linker Tools Warning LNK4076](../../error-messages/tool-errors/linker-tools-warning-lnk4076.md) | invalid incremental status file 'filename'; linking nonincrementally | +| [Linker Tools Warning LNK4078](../../error-messages/tool-errors/linker-tools-warning-lnk4078.md) | multiple 'section name' sections found with different attributes | +| [Linker Tools Warning LNK4086](../../error-messages/tool-errors/linker-tools-warning-lnk4086.md) | entrypoint 'function' is not __stdcall with 'number' bytes of arguments; image may not run | +| [Linker Tools Warning LNK4092](../../error-messages/tool-errors/linker-tools-warning-lnk4092.md) | shared writable section 'section' contains relocations; image may not run correctly | +| [Linker Tools Warning LNK4096](../../error-messages/tool-errors/linker-tools-warning-lnk4096.md) | /BASE value "number" is invalid for Windows 95 and Windows 98; image may not run | +| [Linker Tools Warning LNK4098](../../error-messages/tool-errors/linker-tools-warning-lnk4098.md) | defaultlib '*library*' conflicts with use of other libs; use /NODEFAULTLIB:*library* | +| [Linker Tools Warning LNK4099](../../error-messages/tool-errors/linker-tools-warning-lnk4099.md) | PDB 'filename' was not found with 'object/library' or at 'path'; linking object as if no debug info | +| [Linker Tools Warning LNK4102](../../error-messages/tool-errors/linker-tools-warning-lnk4102.md) | export of deleting destructor 'name'; image may not run correctly | +| [Linker Tools Warning LNK4104](../../error-messages/tool-errors/linker-tools-warning-lnk4104.md) | export of symbol 'symbol' should be PRIVATE | +| [Linker Tools Warning LNK4105](../../error-messages/tool-errors/linker-tools-warning-lnk4105.md) | no argument specified with option 'option'; ignoring option | +| [Linker Tools Warning LNK4194](../../error-messages/tool-errors/linker-tools-warning-lnk4194.md) | /DELAYLOAD:dll name ignored | +| [Linker Tools Warning LNK4197](../../error-messages/tool-errors/linker-tools-warning-lnk4197.md) | export '*exportname*' specified multiple times; using first specification | +| [Linker Tools Warning LNK4199](../../error-messages/tool-errors/linker-tools-warning-lnk4199.md) | /DELAYLOAD:dllname ignored; no imports found from dllname | +| [Linker Tools Warning LNK4200](../../error-messages/tool-errors/linker-tools-warning-lnk4200.md) | corrupt line number information in object file; ignored | +| [Linker Tools Warning LNK4204](../../error-messages/tool-errors/linker-tools-warning-lnk4204.md) | 'filename' is missing debugging information for referencing module; linking object as if no debug info | +| [Linker Tools Warning LNK4205](../../error-messages/tool-errors/linker-tools-warning-lnk4205.md) | 'filename' is missing current debugging information for referencing module; linking object as if no debug info | +| [Linker Tools Warning LNK4206](../../error-messages/tool-errors/linker-tools-warning-lnk4206.md) | precompiled type information not found; '*filename*' not linked or overwritten; linking object as if no debug info | +| [Linker Tools Warning LNK4210](../../error-messages/tool-errors/linker-tools-warning-lnk4210.md) | section *section* exists; there may be unhandled static initializers or terminators | +| [Linker Tools Warning LNK4216](../../error-messages/tool-errors/linker-tools-warning-lnk4216.md) | Exported entry point entry | +| [Linker Tools Warning LNK4217](../../error-messages/tool-errors/linker-tools-warning-lnk4217.md) | symbol '*symbol*' defined in '*filename_1.obj*' is imported by '*filename_2.obj*' in function '*function*' | +| [Linker Tools Warning LNK4219](../../error-messages/tool-errors/linker-tools-warning-lnk4219.md) | fixup name fixup overflow. Target 'target symbol name' is out of range, inserting thunk | +| [Linker Tools Warning LNK4220](../../error-messages/tool-errors/linker-tools-warning-lnk4220.md) | invalid 'linker option' value 'value'; assumed default | +| [Linker Tools Warning LNK4221](../../error-messages/tool-errors/linker-tools-warning-lnk4221.md) | This object file does not define any previously undefined public symbols, so it will not be used by any link operation that consumes this library | +| [Linker Tools Warning LNK4222](../../error-messages/tool-errors/linker-tools-warning-lnk4222.md) | exported symbol 'symbol' should not be assigned an ordinal | +| [Linker Tools Warning LNK4224](../../error-messages/tool-errors/linker-tools-warning-lnk4224.md) | *option* is no longer supported; ignored | +| [Linker Tools Warning LNK4227](../../error-messages/tool-errors/linker-tools-warning-lnk4227.md) | metadata operation warning (*HRESULT*) : *warning_message* | +| [Linker Tools Warning LNK4229](../../error-messages/tool-errors/linker-tools-warning-lnk4229.md) | invalid directive /directive found; ignored | +| [Linker Tools Warning LNK4237](../../error-messages/tool-errors/linker-tools-warning-lnk4237.md) | /SUBSYSTEM:NATIVE specified when importing from 'dll'; Use /SUBSYSTEM:CONSOLE or /SUBSYSTEM:WINDOWS. | +| [Linker Tools Warning LNK4247](../../error-messages/tool-errors/linker-tools-warning-lnk4247.md) | entry point 'decorated_function_name' already has a thread attribute; 'attribute' ignored | +| [Linker Tools Warning LNK4248](../../error-messages/tool-errors/linker-tools-warning-lnk4248.md) | unresolved typeref token (token) for 'type'; image may not run | +| [Linker Tools Warning LNK4253](../../error-messages/tool-errors/linker-tools-warning-lnk4253.md) | section 'section1' not merged into 'section2'; already merged into 'section3' | +| [Linker Tools Warning LNK4254](../../error-messages/tool-errors/linker-tools-warning-lnk4254.md) | section 'section1' (offset) merged into 'section2' (offset) with different attributes | +| [Linker Tools Warning LNK4286](../../error-messages/tool-errors/linker-tools-warning-lnk4286.md) | symbol '*symbol*' defined in '*filename_1.obj*' is imported by '*filename_2.obj*' | +| [Linker Tools Warning LNK4306](../../error-messages/tool-errors/linker-tools-warning-lnk4306.md) | The auxiliary delayload import address table is not properly aligned with the primary delayload import address table. This may have negative perf impact. | +| [Linker Tools Warning LNK4307](../../error-messages/tool-errors/linker-tools-warning-lnk4307.md) | The auxiliary delayload import address table copy is not properly aligned with the auxiliary delayload import address table. This may have negative perf impact. | ## See also From b21bf5eb49d68df7225522fae2a069d463be87c6 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Thu, 11 Sep 2025 00:45:04 +0800 Subject: [PATCH 1800/2255] Simplify superfluous relative links in "Linker tools errors and warnings (LNKxxxx)" --- .../linker-tools-errors-and-warnings.md | 250 +++++++++--------- 1 file changed, 125 insertions(+), 125 deletions(-) diff --git a/docs/error-messages/tool-errors/linker-tools-errors-and-warnings.md b/docs/error-messages/tool-errors/linker-tools-errors-and-warnings.md index ae8a5f2791e..cec2c86b223 100644 --- a/docs/error-messages/tool-errors/linker-tools-errors-and-warnings.md +++ b/docs/error-messages/tool-errors/linker-tools-errors-and-warnings.md @@ -9,141 +9,141 @@ helpviewer_keywords: ["errors [C++]", "linker [C++], errors and warnings", "erro The linker tools LINK, LIB, DUMPBIN, and EDITBIN share a common executable that generates these errors and warnings. The tools generate warnings of the form LNK*xxxx*, where *xxxx* is a four-digit number. -[!INCLUDE[error-boilerplate](../../error-messages/includes/error-boilerplate.md)] +[!INCLUDE[error-boilerplate](../includes/error-boilerplate.md)] ## Linker tools errors | Error | Message | |--|--| -| [Linker Tools Error LNK1000](../../error-messages/tool-errors/linker-tools-error-lnk1000.md) | unknown error; consult documentation for technical support options | -| [Linker Tools Error LNK1103](../../error-messages/tool-errors/linker-tools-error-lnk1103.md) | debugging information corrupt; recompile module | -| [Linker Tools Error LNK1104](../../error-messages/tool-errors/linker-tools-error-lnk1104.md) | cannot open file '*filename*' | -| [Linker Tools Error LNK1106](../../error-messages/tool-errors/linker-tools-error-lnk1106.md) | invalid file or disk full: cannot seek to location | -| [Linker Tools Error LNK1107](../../error-messages/tool-errors/linker-tools-error-lnk1107.md) | invalid or corrupt file: cannot read at location *address* | -| [Linker Tools Error LNK1112](../../error-messages/tool-errors/linker-tools-error-lnk1112.md) | module machine type '*type1*' conflicts with target machine type '*type2*' | -| [Linker Tools Error LNK1113](../../error-messages/tool-errors/linker-tools-error-lnk1113.md) | invalid machine type type | -| [Linker Tools Error LNK1120](../../error-messages/tool-errors/linker-tools-error-lnk1120.md) | *number* unresolved externals | -| [Linker Tools Error LNK1123](../../error-messages/tool-errors/linker-tools-error-lnk1123.md) | failure during conversion to COFF: file invalid or corrupt | -| [Linker Tools Error LNK1127](../../error-messages/tool-errors/linker-tools-error-lnk1127.md) | library is corrupt | -| [Linker Tools Error LNK1136](../../error-messages/tool-errors/linker-tools-error-lnk1136.md) | invalid or corrupt file | -| [Linker Tools Error LNK1140](../../error-messages/tool-errors/linker-tools-error-lnk1140.md) | too many modules for program database; link with /PDB:NONE | -| [Linker Tools Error LNK1141](../../error-messages/tool-errors/linker-tools-error-lnk1141.md) | failure during build of exports file | -| [Linker Tools Error LNK1143](../../error-messages/tool-errors/linker-tools-error-lnk1143.md) | invalid or corrupt file: no symbol for COMDAT section number | -| [Linker Tools Error LNK1152](../../error-messages/tool-errors/linker-tools-error-lnk1152.md) | cannot resolve one or more undecorated symbols | -| [Linker Tools Error LNK1158](../../error-messages/tool-errors/linker-tools-error-lnk1158.md) | cannot run 'filename' | -| [Linker Tools Error LNK1164](../../error-messages/tool-errors/linker-tools-error-lnk1164.md) | section section alignment (number) greater than /ALIGN value | -| [Linker Tools Error LNK1166](../../error-messages/tool-errors/linker-tools-error-lnk1166.md) | cannot adjust code at offset=offset, va=value | -| [Linker Tools Error LNK1168](../../error-messages/tool-errors/linker-tools-error-lnk1168.md) | cannot open filename for writing | -| [Linker Tools Error LNK1169](../../error-messages/tool-errors/linker-tools-error-lnk1169.md) | one or more multiply defined symbols found | -| [Linker Tools Error LNK1170](../../error-messages/tool-errors/linker-tools-error-lnk1170.md) | line in command file contains *maximum-length* or more characters | -| [Linker Tools Error LNK1179](../../error-messages/tool-errors/linker-tools-error-lnk1179.md) | invalid or corrupt file: duplicate COMDAT 'filename' | -| [Linker Tools Error LNK1181](../../error-messages/tool-errors/linker-tools-error-lnk1181.md) | cannot open input file 'filename' | -| [Linker Tools Error LNK1188](../../error-messages/tool-errors/linker-tools-error-lnk1188.md) | BADFIXUPSECTION:: invalid fixup target 'symbol'; possible zero length section | -| [Linker Tools Error LNK1189](../../error-messages/tool-errors/linker-tools-error-lnk1189.md) | LIBTOOMANYMEMBERS:: library limit of number objects exceeded | -| [Linker Tools Error LNK1196](../../error-messages/tool-errors/linker-tools-error-lnk1196.md) | invalid or corrupt import object: unknown version | -| [Linker Tools Error LNK1200](../../error-messages/tool-errors/linker-tools-error-lnk1200.md) | error reading program database 'filename' | -| [Linker Tools Error LNK1201](../../error-messages/tool-errors/linker-tools-error-lnk1201.md) | error writing to program database 'filename'; check for insufficient disk space, invalid path, or insufficient privilege | -| [Linker Tools Error LNK1211](../../error-messages/tool-errors/linker-tools-error-lnk1211.md) | precompiled type information not found; '*filename*' not linked or overwritten | -| [Linker Tools Error LNK1215](../../error-messages/tool-errors/linker-tools-error-lnk1215.md) | metadata operation failed (HRESULT) : error | -| [Linker Tools Error LNK1218](../../error-messages/tool-errors/linker-tools-error-lnk1218.md) | warning treated as error; no output file generated | -| [Linker Tools Error LNK1221](../../error-messages/tool-errors/linker-tools-error-lnk1221.md) | a subsystem can't be inferred and must be defined | -| [Linker Tools Error LNK1223](../../error-messages/tool-errors/linker-tools-error-lnk1223.md) | invalid or corrupt file: file contains invalid .pdata contributions | -| [Linker Tools Error LNK1224](../../error-messages/tool-errors/linker-tools-error-lnk1224.md) | invalid image base address | -| [Linker Tools Error LNK1237](../../error-messages/tool-errors/linker-tools-error-lnk1237.md) | during code generation, compiler introduced reference to symbol 'symbol' defined in module 'module' compiled with /GL | -| [Linker Tools Error LNK1240](../../error-messages/tool-errors/linker-tools-error-lnk1240.md) | failed to compile IDL content | -| [Linker Tools Error LNK1241](../../error-messages/tool-errors/linker-tools-error-lnk1241.md) | resource file 'resource file' already specified | -| [Linker Tools Error LNK1245](../../error-messages/tool-errors/linker-tools-error-lnk1245.md) | invalid subsystem 'subsystem' specified; /SUBSYSTEM must be WINDOWS, WINDOWSCE, or CONSOLE | -| [Linker Tools Error LNK1248](../../error-messages/tool-errors/linker-tools-error-lnk1248.md) | image size ('*output_size*') exceeds maximum allowable size (*maximum_size*) | -| [Linker Tools Error LNK1256](../../error-messages/tool-errors/linker-tools-error-lnk1256.md) | ALINK operation failed : reason | -| [Linker Tools Error LNK1264](../../error-messages/tool-errors/linker-tools-error-lnk1264.md) | /LTCG:PGINSTRUMENT specified but no code generation required; instrumentation failed | -| [Linker Tools Error LNK1277](../../error-messages/tool-errors/linker-tools-error-lnk1277.md) | object record not found in pgd (filename) | -| [Linker Tools Error LNK1282](../../error-messages/tool-errors/linker-tools-error-lnk1282.md) | unable to /REBASE file; it has been signed | -| [Linker Tools Error LNK1287](../../error-messages/tool-errors/linker-tools-error-lnk1287.md) | invalid managed entry point function | -| [Linker Tools Error LNK1296](../../error-messages/tool-errors/linker-tools-error-lnk1296.md) | unable to load filename | -| [Linker Tools Error LNK1301](../../error-messages/tool-errors/linker-tools-error-lnk1301.md) | LTCG clr modules found, incompatible with /LTCG:parameter | -| [Linker Tools Error LNK1302](../../error-messages/tool-errors/linker-tools-error-lnk1302.md) | only support linking safe .netmodules; unable to link file .netmodule | -| [Linker Tools Error LNK1306](../../error-messages/tool-errors/linker-tools-error-lnk1306.md) | DLL entry point function cannot be managed; compile to native | -| [Linker Tools Error LNK1309](../../error-messages/tool-errors/linker-tools-error-lnk1309.md) | *type1* module detected; invalid with switch /CLRIMAGETYPE:*type2* | -| [Linker Tools Error LNK1312](../../error-messages/tool-errors/linker-tools-error-lnk1312.md) | invalid or corrupt file: unable to import assembly | -| [Linker Tools Error LNK1313](../../error-messages/tool-errors/linker-tools-error-lnk1313.md) | ijw/native module detected; cannot link with pure modules | -| [Linker Tools Error LNK1314](../../error-messages/tool-errors/linker-tools-error-lnk1314.md) | corrupt or invalid COFF symbol table (undefined static or label symbol) | -| [Linker Tools Error LNK1318](../../error-messages/tool-errors/linker-tools-error-lnk1318.md) | Unexpected PDB error; *cause* '*details*' | -| [Linker Tools Error LNK1332](../../error-messages/tool-errors/linker-tools-error-lnk1332.md) | detected\ Windows Runtime types imported in one module and defined in another module | -| [Linker Tools Error LNK1352](../../error-messages/tool-errors/linker-tools-error-lnk1352.md) | '*section_name_1*' and '*section_name_2*' cannot be merged into different sections | -| [Linker Tools Error LNK1561](../../error-messages/tool-errors/linker-tools-error-lnk1561.md) | entry point must be defined | -| [Linker Tools Error LNK2001](../../error-messages/tool-errors/linker-tools-error-lnk2001.md) | unresolved external symbol "*symbol*" | -| [Linker Tools Error LNK2004](../../error-messages/tool-errors/linker-tools-error-lnk2004.md) | gp relative fixup overflow to 'target'; short section 'section' is too large or out of range. | -| [Linker Tools Error LNK2005](../../error-messages/tool-errors/linker-tools-error-lnk2005.md) | *symbol* already defined in object | -| [Linker Tools Error LNK2008](../../error-messages/tool-errors/linker-tools-error-lnk2008.md) | Fixup target is not aligned 'symbol_name' | -| [Linker Tools Error LNK2011](../../error-messages/tool-errors/linker-tools-error-lnk2011.md) | precompiled object not linked in; image may not run | -| [Linker Tools Error LNK2013](../../error-messages/tool-errors/linker-tools-error-lnk2013.md) | fixup type fixup overflow. Target 'symbol name' is out of range | -| [Linker Tools Error LNK2017](../../error-messages/tool-errors/linker-tools-error-lnk2017.md) | 'symbol' relocation to 'segment' invalid without /LARGEADDRESSAWARE:NO | -| [Linker Tools Error LNK2019](../../error-messages/tool-errors/linker-tools-error-lnk2019.md) | unresolved external symbol '*symbol*' referenced in function '*function*' | -| [Linker Tools Error LNK2020](../../error-messages/tool-errors/linker-tools-error-lnk2020.md) | unresolved token 'token' | -| [Linker Tools Error LNK2022](../../error-messages/tool-errors/linker-tools-error-lnk2022.md) | metadata operation failed (*HRESULT*) : *error_message* | -| [Linker Tools Error LNK2023](../../error-messages/tool-errors/linker-tools-error-lnk2023.md) | bad dll or entry point \ | -| [Linker Tools Error LNK2026](../../error-messages/tool-errors/linker-tools-error-lnk2026.md) | module unsafe for SAFESEH image | -| [Linker Tools Error LNK2027](../../error-messages/tool-errors/linker-tools-error-lnk2027.md) | unresolved module reference 'module' | -| [Linker Tools Error LNK2028](../../error-messages/tool-errors/linker-tools-error-lnk2028.md) | "*exported_function*" (*decorated_name*) referenced in function "*function_containing_function_call*" (*decorated_name*) | -| [Linker Tools Error LNK2031](../../error-messages/tool-errors/linker-tools-error-lnk2031.md) | unable to generate p/invoke for "*function_declaration*" *decorated_name*; calling convention missing in metadata | -| [Linker Tools Error LNK2033](../../error-messages/tool-errors/linker-tools-error-lnk2033.md) | unresolved typeref token (token) for 'type' | -| [Linker Tools Error LNK2038](../../error-messages/tool-errors/linker-tools-error-lnk2038.md) | mismatch detected for '*name*': value '*value_1*' doesn't match value '*value_2*' in *filename.obj* | -| [Linker Tools Error LNK2039](../../error-messages/tool-errors/linker-tools-error-lnk2039.md) | importing ref class '\' that is defined in another.obj; it should be either imported or defined, but not both | +| [Linker Tools Error LNK1000](linker-tools-error-lnk1000.md) | unknown error; consult documentation for technical support options | +| [Linker Tools Error LNK1103](linker-tools-error-lnk1103.md) | debugging information corrupt; recompile module | +| [Linker Tools Error LNK1104](linker-tools-error-lnk1104.md) | cannot open file '*filename*' | +| [Linker Tools Error LNK1106](linker-tools-error-lnk1106.md) | invalid file or disk full: cannot seek to location | +| [Linker Tools Error LNK1107](linker-tools-error-lnk1107.md) | invalid or corrupt file: cannot read at location *address* | +| [Linker Tools Error LNK1112](linker-tools-error-lnk1112.md) | module machine type '*type1*' conflicts with target machine type '*type2*' | +| [Linker Tools Error LNK1113](linker-tools-error-lnk1113.md) | invalid machine type type | +| [Linker Tools Error LNK1120](linker-tools-error-lnk1120.md) | *number* unresolved externals | +| [Linker Tools Error LNK1123](linker-tools-error-lnk1123.md) | failure during conversion to COFF: file invalid or corrupt | +| [Linker Tools Error LNK1127](linker-tools-error-lnk1127.md) | library is corrupt | +| [Linker Tools Error LNK1136](linker-tools-error-lnk1136.md) | invalid or corrupt file | +| [Linker Tools Error LNK1140](linker-tools-error-lnk1140.md) | too many modules for program database; link with /PDB:NONE | +| [Linker Tools Error LNK1141](linker-tools-error-lnk1141.md) | failure during build of exports file | +| [Linker Tools Error LNK1143](linker-tools-error-lnk1143.md) | invalid or corrupt file: no symbol for COMDAT section number | +| [Linker Tools Error LNK1152](linker-tools-error-lnk1152.md) | cannot resolve one or more undecorated symbols | +| [Linker Tools Error LNK1158](linker-tools-error-lnk1158.md) | cannot run 'filename' | +| [Linker Tools Error LNK1164](linker-tools-error-lnk1164.md) | section section alignment (number) greater than /ALIGN value | +| [Linker Tools Error LNK1166](linker-tools-error-lnk1166.md) | cannot adjust code at offset=offset, va=value | +| [Linker Tools Error LNK1168](linker-tools-error-lnk1168.md) | cannot open filename for writing | +| [Linker Tools Error LNK1169](linker-tools-error-lnk1169.md) | one or more multiply defined symbols found | +| [Linker Tools Error LNK1170](linker-tools-error-lnk1170.md) | line in command file contains *maximum-length* or more characters | +| [Linker Tools Error LNK1179](linker-tools-error-lnk1179.md) | invalid or corrupt file: duplicate COMDAT 'filename' | +| [Linker Tools Error LNK1181](linker-tools-error-lnk1181.md) | cannot open input file 'filename' | +| [Linker Tools Error LNK1188](linker-tools-error-lnk1188.md) | BADFIXUPSECTION:: invalid fixup target 'symbol'; possible zero length section | +| [Linker Tools Error LNK1189](linker-tools-error-lnk1189.md) | LIBTOOMANYMEMBERS:: library limit of number objects exceeded | +| [Linker Tools Error LNK1196](linker-tools-error-lnk1196.md) | invalid or corrupt import object: unknown version | +| [Linker Tools Error LNK1200](linker-tools-error-lnk1200.md) | error reading program database 'filename' | +| [Linker Tools Error LNK1201](linker-tools-error-lnk1201.md) | error writing to program database 'filename'; check for insufficient disk space, invalid path, or insufficient privilege | +| [Linker Tools Error LNK1211](linker-tools-error-lnk1211.md) | precompiled type information not found; '*filename*' not linked or overwritten | +| [Linker Tools Error LNK1215](linker-tools-error-lnk1215.md) | metadata operation failed (HRESULT) : error | +| [Linker Tools Error LNK1218](linker-tools-error-lnk1218.md) | warning treated as error; no output file generated | +| [Linker Tools Error LNK1221](linker-tools-error-lnk1221.md) | a subsystem can't be inferred and must be defined | +| [Linker Tools Error LNK1223](linker-tools-error-lnk1223.md) | invalid or corrupt file: file contains invalid .pdata contributions | +| [Linker Tools Error LNK1224](linker-tools-error-lnk1224.md) | invalid image base address | +| [Linker Tools Error LNK1237](linker-tools-error-lnk1237.md) | during code generation, compiler introduced reference to symbol 'symbol' defined in module 'module' compiled with /GL | +| [Linker Tools Error LNK1240](linker-tools-error-lnk1240.md) | failed to compile IDL content | +| [Linker Tools Error LNK1241](linker-tools-error-lnk1241.md) | resource file 'resource file' already specified | +| [Linker Tools Error LNK1245](linker-tools-error-lnk1245.md) | invalid subsystem 'subsystem' specified; /SUBSYSTEM must be WINDOWS, WINDOWSCE, or CONSOLE | +| [Linker Tools Error LNK1248](linker-tools-error-lnk1248.md) | image size ('*output_size*') exceeds maximum allowable size (*maximum_size*) | +| [Linker Tools Error LNK1256](linker-tools-error-lnk1256.md) | ALINK operation failed : reason | +| [Linker Tools Error LNK1264](linker-tools-error-lnk1264.md) | /LTCG:PGINSTRUMENT specified but no code generation required; instrumentation failed | +| [Linker Tools Error LNK1277](linker-tools-error-lnk1277.md) | object record not found in pgd (filename) | +| [Linker Tools Error LNK1282](linker-tools-error-lnk1282.md) | unable to /REBASE file; it has been signed | +| [Linker Tools Error LNK1287](linker-tools-error-lnk1287.md) | invalid managed entry point function | +| [Linker Tools Error LNK1296](linker-tools-error-lnk1296.md) | unable to load filename | +| [Linker Tools Error LNK1301](linker-tools-error-lnk1301.md) | LTCG clr modules found, incompatible with /LTCG:parameter | +| [Linker Tools Error LNK1302](linker-tools-error-lnk1302.md) | only support linking safe .netmodules; unable to link file .netmodule | +| [Linker Tools Error LNK1306](linker-tools-error-lnk1306.md) | DLL entry point function cannot be managed; compile to native | +| [Linker Tools Error LNK1309](linker-tools-error-lnk1309.md) | *type1* module detected; invalid with switch /CLRIMAGETYPE:*type2* | +| [Linker Tools Error LNK1312](linker-tools-error-lnk1312.md) | invalid or corrupt file: unable to import assembly | +| [Linker Tools Error LNK1313](linker-tools-error-lnk1313.md) | ijw/native module detected; cannot link with pure modules | +| [Linker Tools Error LNK1314](linker-tools-error-lnk1314.md) | corrupt or invalid COFF symbol table (undefined static or label symbol) | +| [Linker Tools Error LNK1318](linker-tools-error-lnk1318.md) | Unexpected PDB error; *cause* '*details*' | +| [Linker Tools Error LNK1332](linker-tools-error-lnk1332.md) | detected\ Windows Runtime types imported in one module and defined in another module | +| [Linker Tools Error LNK1352](linker-tools-error-lnk1352.md) | '*section_name_1*' and '*section_name_2*' cannot be merged into different sections | +| [Linker Tools Error LNK1561](linker-tools-error-lnk1561.md) | entry point must be defined | +| [Linker Tools Error LNK2001](linker-tools-error-lnk2001.md) | unresolved external symbol "*symbol*" | +| [Linker Tools Error LNK2004](linker-tools-error-lnk2004.md) | gp relative fixup overflow to 'target'; short section 'section' is too large or out of range. | +| [Linker Tools Error LNK2005](linker-tools-error-lnk2005.md) | *symbol* already defined in object | +| [Linker Tools Error LNK2008](linker-tools-error-lnk2008.md) | Fixup target is not aligned 'symbol_name' | +| [Linker Tools Error LNK2011](linker-tools-error-lnk2011.md) | precompiled object not linked in; image may not run | +| [Linker Tools Error LNK2013](linker-tools-error-lnk2013.md) | fixup type fixup overflow. Target 'symbol name' is out of range | +| [Linker Tools Error LNK2017](linker-tools-error-lnk2017.md) | 'symbol' relocation to 'segment' invalid without /LARGEADDRESSAWARE:NO | +| [Linker Tools Error LNK2019](linker-tools-error-lnk2019.md) | unresolved external symbol '*symbol*' referenced in function '*function*' | +| [Linker Tools Error LNK2020](linker-tools-error-lnk2020.md) | unresolved token 'token' | +| [Linker Tools Error LNK2022](linker-tools-error-lnk2022.md) | metadata operation failed (*HRESULT*) : *error_message* | +| [Linker Tools Error LNK2023](linker-tools-error-lnk2023.md) | bad dll or entry point \ | +| [Linker Tools Error LNK2026](linker-tools-error-lnk2026.md) | module unsafe for SAFESEH image | +| [Linker Tools Error LNK2027](linker-tools-error-lnk2027.md) | unresolved module reference 'module' | +| [Linker Tools Error LNK2028](linker-tools-error-lnk2028.md) | "*exported_function*" (*decorated_name*) referenced in function "*function_containing_function_call*" (*decorated_name*) | +| [Linker Tools Error LNK2031](linker-tools-error-lnk2031.md) | unable to generate p/invoke for "*function_declaration*" *decorated_name*; calling convention missing in metadata | +| [Linker Tools Error LNK2033](linker-tools-error-lnk2033.md) | unresolved typeref token (token) for 'type' | +| [Linker Tools Error LNK2038](linker-tools-error-lnk2038.md) | mismatch detected for '*name*': value '*value_1*' doesn't match value '*value_2*' in *filename.obj* | +| [Linker Tools Error LNK2039](linker-tools-error-lnk2039.md) | importing ref class '\' that is defined in another.obj; it should be either imported or defined, but not both | ## Linker tools warnings | Warning | Message | |--|--| -| [Linker Tools Warning LNK4001](../../error-messages/tool-errors/linker-tools-warning-lnk4001.md) | no object files specified; libraries used | -| [Linker Tools Warning LNK4002](../../error-messages/tool-errors/linker-tools-warning-lnk4002.md) | symbol defined in object | -| [Linker Tools Warning LNK4006](../../error-messages/tool-errors/linker-tools-warning-lnk4006.md) | symbol already defined in object; second definition ignored | -| [Linker Tools Warning LNK4010](../../error-messages/tool-errors/linker-tools-warning-lnk4010.md) | invalid subsystem version number number; default subsystem version assumed | -| [Linker Tools Warning LNK4014](../../error-messages/tool-errors/linker-tools-warning-lnk4014.md) | cannot find member object "objectname" | -| [Linker Tools Warning LNK4020](../../error-messages/tool-errors/linker-tools-warning-lnk4020.md) | a type record in '*filename*' is corrupted; some symbols and types may not be accessible from the debugger | -| [Linker Tools Warning LNK4022](../../error-messages/tool-errors/linker-tools-warning-lnk4022.md) | cannot find unique match for symbol 'symbol' | -| [Linker Tools Warning LNK4039](../../error-messages/tool-errors/linker-tools-warning-lnk4039.md) | section 'name' specified with /SECTION option does not exist | -| [Linker Tools Warning LNK4044](../../error-messages/tool-errors/linker-tools-warning-lnk4044.md) | unrecognized option 'option'; ignored | -| [Linker Tools Warning LNK4049](../../error-messages/tool-errors/linker-tools-warning-lnk4049.md) | symbol '*symbol*' defined in '*filename.obj*' is imported | -| [Linker Tools Warning LNK4065](../../error-messages/tool-errors/linker-tools-warning-lnk4065.md) | 'function' cannot be ordered; ignored | -| [Linker Tools Warning LNK4070](../../error-messages/tool-errors/linker-tools-warning-lnk4070.md) | /OUT:filename directive in .EXP differs from output filename 'filename'; ignoring directive | -| [Linker Tools Warning LNK4071](../../error-messages/tool-errors/linker-tools-warning-lnk4071.md) | cannot be incrementally linked on subsequent links | -| [Linker Tools Warning LNK4073](../../error-messages/tool-errors/linker-tools-warning-lnk4073.md) | cannot create map for .ilk file; linking nonincrementally | -| [Linker Tools Warning LNK4075](../../error-messages/tool-errors/linker-tools-warning-lnk4075.md) | ignoring "option1" due to "option2" specification | -| [Linker Tools Warning LNK4076](../../error-messages/tool-errors/linker-tools-warning-lnk4076.md) | invalid incremental status file 'filename'; linking nonincrementally | -| [Linker Tools Warning LNK4078](../../error-messages/tool-errors/linker-tools-warning-lnk4078.md) | multiple 'section name' sections found with different attributes | -| [Linker Tools Warning LNK4086](../../error-messages/tool-errors/linker-tools-warning-lnk4086.md) | entrypoint 'function' is not __stdcall with 'number' bytes of arguments; image may not run | -| [Linker Tools Warning LNK4092](../../error-messages/tool-errors/linker-tools-warning-lnk4092.md) | shared writable section 'section' contains relocations; image may not run correctly | -| [Linker Tools Warning LNK4096](../../error-messages/tool-errors/linker-tools-warning-lnk4096.md) | /BASE value "number" is invalid for Windows 95 and Windows 98; image may not run | -| [Linker Tools Warning LNK4098](../../error-messages/tool-errors/linker-tools-warning-lnk4098.md) | defaultlib '*library*' conflicts with use of other libs; use /NODEFAULTLIB:*library* | -| [Linker Tools Warning LNK4099](../../error-messages/tool-errors/linker-tools-warning-lnk4099.md) | PDB 'filename' was not found with 'object/library' or at 'path'; linking object as if no debug info | -| [Linker Tools Warning LNK4102](../../error-messages/tool-errors/linker-tools-warning-lnk4102.md) | export of deleting destructor 'name'; image may not run correctly | -| [Linker Tools Warning LNK4104](../../error-messages/tool-errors/linker-tools-warning-lnk4104.md) | export of symbol 'symbol' should be PRIVATE | -| [Linker Tools Warning LNK4105](../../error-messages/tool-errors/linker-tools-warning-lnk4105.md) | no argument specified with option 'option'; ignoring option | -| [Linker Tools Warning LNK4194](../../error-messages/tool-errors/linker-tools-warning-lnk4194.md) | /DELAYLOAD:dll name ignored | -| [Linker Tools Warning LNK4197](../../error-messages/tool-errors/linker-tools-warning-lnk4197.md) | export '*exportname*' specified multiple times; using first specification | -| [Linker Tools Warning LNK4199](../../error-messages/tool-errors/linker-tools-warning-lnk4199.md) | /DELAYLOAD:dllname ignored; no imports found from dllname | -| [Linker Tools Warning LNK4200](../../error-messages/tool-errors/linker-tools-warning-lnk4200.md) | corrupt line number information in object file; ignored | -| [Linker Tools Warning LNK4204](../../error-messages/tool-errors/linker-tools-warning-lnk4204.md) | 'filename' is missing debugging information for referencing module; linking object as if no debug info | -| [Linker Tools Warning LNK4205](../../error-messages/tool-errors/linker-tools-warning-lnk4205.md) | 'filename' is missing current debugging information for referencing module; linking object as if no debug info | -| [Linker Tools Warning LNK4206](../../error-messages/tool-errors/linker-tools-warning-lnk4206.md) | precompiled type information not found; '*filename*' not linked or overwritten; linking object as if no debug info | -| [Linker Tools Warning LNK4210](../../error-messages/tool-errors/linker-tools-warning-lnk4210.md) | section *section* exists; there may be unhandled static initializers or terminators | -| [Linker Tools Warning LNK4216](../../error-messages/tool-errors/linker-tools-warning-lnk4216.md) | Exported entry point entry | -| [Linker Tools Warning LNK4217](../../error-messages/tool-errors/linker-tools-warning-lnk4217.md) | symbol '*symbol*' defined in '*filename_1.obj*' is imported by '*filename_2.obj*' in function '*function*' | -| [Linker Tools Warning LNK4219](../../error-messages/tool-errors/linker-tools-warning-lnk4219.md) | fixup name fixup overflow. Target 'target symbol name' is out of range, inserting thunk | -| [Linker Tools Warning LNK4220](../../error-messages/tool-errors/linker-tools-warning-lnk4220.md) | invalid 'linker option' value 'value'; assumed default | -| [Linker Tools Warning LNK4221](../../error-messages/tool-errors/linker-tools-warning-lnk4221.md) | This object file does not define any previously undefined public symbols, so it will not be used by any link operation that consumes this library | -| [Linker Tools Warning LNK4222](../../error-messages/tool-errors/linker-tools-warning-lnk4222.md) | exported symbol 'symbol' should not be assigned an ordinal | -| [Linker Tools Warning LNK4224](../../error-messages/tool-errors/linker-tools-warning-lnk4224.md) | *option* is no longer supported; ignored | -| [Linker Tools Warning LNK4227](../../error-messages/tool-errors/linker-tools-warning-lnk4227.md) | metadata operation warning (*HRESULT*) : *warning_message* | -| [Linker Tools Warning LNK4229](../../error-messages/tool-errors/linker-tools-warning-lnk4229.md) | invalid directive /directive found; ignored | -| [Linker Tools Warning LNK4237](../../error-messages/tool-errors/linker-tools-warning-lnk4237.md) | /SUBSYSTEM:NATIVE specified when importing from 'dll'; Use /SUBSYSTEM:CONSOLE or /SUBSYSTEM:WINDOWS. | -| [Linker Tools Warning LNK4247](../../error-messages/tool-errors/linker-tools-warning-lnk4247.md) | entry point 'decorated_function_name' already has a thread attribute; 'attribute' ignored | -| [Linker Tools Warning LNK4248](../../error-messages/tool-errors/linker-tools-warning-lnk4248.md) | unresolved typeref token (token) for 'type'; image may not run | -| [Linker Tools Warning LNK4253](../../error-messages/tool-errors/linker-tools-warning-lnk4253.md) | section 'section1' not merged into 'section2'; already merged into 'section3' | -| [Linker Tools Warning LNK4254](../../error-messages/tool-errors/linker-tools-warning-lnk4254.md) | section 'section1' (offset) merged into 'section2' (offset) with different attributes | -| [Linker Tools Warning LNK4286](../../error-messages/tool-errors/linker-tools-warning-lnk4286.md) | symbol '*symbol*' defined in '*filename_1.obj*' is imported by '*filename_2.obj*' | -| [Linker Tools Warning LNK4306](../../error-messages/tool-errors/linker-tools-warning-lnk4306.md) | The auxiliary delayload import address table is not properly aligned with the primary delayload import address table. This may have negative perf impact. | -| [Linker Tools Warning LNK4307](../../error-messages/tool-errors/linker-tools-warning-lnk4307.md) | The auxiliary delayload import address table copy is not properly aligned with the auxiliary delayload import address table. This may have negative perf impact. | +| [Linker Tools Warning LNK4001](linker-tools-warning-lnk4001.md) | no object files specified; libraries used | +| [Linker Tools Warning LNK4002](linker-tools-warning-lnk4002.md) | symbol defined in object | +| [Linker Tools Warning LNK4006](linker-tools-warning-lnk4006.md) | symbol already defined in object; second definition ignored | +| [Linker Tools Warning LNK4010](linker-tools-warning-lnk4010.md) | invalid subsystem version number number; default subsystem version assumed | +| [Linker Tools Warning LNK4014](linker-tools-warning-lnk4014.md) | cannot find member object "objectname" | +| [Linker Tools Warning LNK4020](linker-tools-warning-lnk4020.md) | a type record in '*filename*' is corrupted; some symbols and types may not be accessible from the debugger | +| [Linker Tools Warning LNK4022](linker-tools-warning-lnk4022.md) | cannot find unique match for symbol 'symbol' | +| [Linker Tools Warning LNK4039](linker-tools-warning-lnk4039.md) | section 'name' specified with /SECTION option does not exist | +| [Linker Tools Warning LNK4044](linker-tools-warning-lnk4044.md) | unrecognized option 'option'; ignored | +| [Linker Tools Warning LNK4049](linker-tools-warning-lnk4049.md) | symbol '*symbol*' defined in '*filename.obj*' is imported | +| [Linker Tools Warning LNK4065](linker-tools-warning-lnk4065.md) | 'function' cannot be ordered; ignored | +| [Linker Tools Warning LNK4070](linker-tools-warning-lnk4070.md) | /OUT:filename directive in .EXP differs from output filename 'filename'; ignoring directive | +| [Linker Tools Warning LNK4071](linker-tools-warning-lnk4071.md) | cannot be incrementally linked on subsequent links | +| [Linker Tools Warning LNK4073](linker-tools-warning-lnk4073.md) | cannot create map for .ilk file; linking nonincrementally | +| [Linker Tools Warning LNK4075](linker-tools-warning-lnk4075.md) | ignoring "option1" due to "option2" specification | +| [Linker Tools Warning LNK4076](linker-tools-warning-lnk4076.md) | invalid incremental status file 'filename'; linking nonincrementally | +| [Linker Tools Warning LNK4078](linker-tools-warning-lnk4078.md) | multiple 'section name' sections found with different attributes | +| [Linker Tools Warning LNK4086](linker-tools-warning-lnk4086.md) | entrypoint 'function' is not __stdcall with 'number' bytes of arguments; image may not run | +| [Linker Tools Warning LNK4092](linker-tools-warning-lnk4092.md) | shared writable section 'section' contains relocations; image may not run correctly | +| [Linker Tools Warning LNK4096](linker-tools-warning-lnk4096.md) | /BASE value "number" is invalid for Windows 95 and Windows 98; image may not run | +| [Linker Tools Warning LNK4098](linker-tools-warning-lnk4098.md) | defaultlib '*library*' conflicts with use of other libs; use /NODEFAULTLIB:*library* | +| [Linker Tools Warning LNK4099](linker-tools-warning-lnk4099.md) | PDB 'filename' was not found with 'object/library' or at 'path'; linking object as if no debug info | +| [Linker Tools Warning LNK4102](linker-tools-warning-lnk4102.md) | export of deleting destructor 'name'; image may not run correctly | +| [Linker Tools Warning LNK4104](linker-tools-warning-lnk4104.md) | export of symbol 'symbol' should be PRIVATE | +| [Linker Tools Warning LNK4105](linker-tools-warning-lnk4105.md) | no argument specified with option 'option'; ignoring option | +| [Linker Tools Warning LNK4194](linker-tools-warning-lnk4194.md) | /DELAYLOAD:dll name ignored | +| [Linker Tools Warning LNK4197](linker-tools-warning-lnk4197.md) | export '*exportname*' specified multiple times; using first specification | +| [Linker Tools Warning LNK4199](linker-tools-warning-lnk4199.md) | /DELAYLOAD:dllname ignored; no imports found from dllname | +| [Linker Tools Warning LNK4200](linker-tools-warning-lnk4200.md) | corrupt line number information in object file; ignored | +| [Linker Tools Warning LNK4204](linker-tools-warning-lnk4204.md) | 'filename' is missing debugging information for referencing module; linking object as if no debug info | +| [Linker Tools Warning LNK4205](linker-tools-warning-lnk4205.md) | 'filename' is missing current debugging information for referencing module; linking object as if no debug info | +| [Linker Tools Warning LNK4206](linker-tools-warning-lnk4206.md) | precompiled type information not found; '*filename*' not linked or overwritten; linking object as if no debug info | +| [Linker Tools Warning LNK4210](linker-tools-warning-lnk4210.md) | section *section* exists; there may be unhandled static initializers or terminators | +| [Linker Tools Warning LNK4216](linker-tools-warning-lnk4216.md) | Exported entry point entry | +| [Linker Tools Warning LNK4217](linker-tools-warning-lnk4217.md) | symbol '*symbol*' defined in '*filename_1.obj*' is imported by '*filename_2.obj*' in function '*function*' | +| [Linker Tools Warning LNK4219](linker-tools-warning-lnk4219.md) | fixup name fixup overflow. Target 'target symbol name' is out of range, inserting thunk | +| [Linker Tools Warning LNK4220](linker-tools-warning-lnk4220.md) | invalid 'linker option' value 'value'; assumed default | +| [Linker Tools Warning LNK4221](linker-tools-warning-lnk4221.md) | This object file does not define any previously undefined public symbols, so it will not be used by any link operation that consumes this library | +| [Linker Tools Warning LNK4222](linker-tools-warning-lnk4222.md) | exported symbol 'symbol' should not be assigned an ordinal | +| [Linker Tools Warning LNK4224](linker-tools-warning-lnk4224.md) | *option* is no longer supported; ignored | +| [Linker Tools Warning LNK4227](linker-tools-warning-lnk4227.md) | metadata operation warning (*HRESULT*) : *warning_message* | +| [Linker Tools Warning LNK4229](linker-tools-warning-lnk4229.md) | invalid directive /directive found; ignored | +| [Linker Tools Warning LNK4237](linker-tools-warning-lnk4237.md) | /SUBSYSTEM:NATIVE specified when importing from 'dll'; Use /SUBSYSTEM:CONSOLE or /SUBSYSTEM:WINDOWS. | +| [Linker Tools Warning LNK4247](linker-tools-warning-lnk4247.md) | entry point 'decorated_function_name' already has a thread attribute; 'attribute' ignored | +| [Linker Tools Warning LNK4248](linker-tools-warning-lnk4248.md) | unresolved typeref token (token) for 'type'; image may not run | +| [Linker Tools Warning LNK4253](linker-tools-warning-lnk4253.md) | section 'section1' not merged into 'section2'; already merged into 'section3' | +| [Linker Tools Warning LNK4254](linker-tools-warning-lnk4254.md) | section 'section1' (offset) merged into 'section2' (offset) with different attributes | +| [Linker Tools Warning LNK4286](linker-tools-warning-lnk4286.md) | symbol '*symbol*' defined in '*filename_1.obj*' is imported by '*filename_2.obj*' | +| [Linker Tools Warning LNK4306](linker-tools-warning-lnk4306.md) | The auxiliary delayload import address table is not properly aligned with the primary delayload import address table. This may have negative perf impact. | +| [Linker Tools Warning LNK4307](linker-tools-warning-lnk4307.md) | The auxiliary delayload import address table copy is not properly aligned with the auxiliary delayload import address table. This may have negative perf impact. | ## See also From 8d4e032ad0fe0d3be6f465565ae5a1e3286eb6d9 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Thu, 11 Sep 2025 22:52:21 +0800 Subject: [PATCH 1801/2255] Fix more typos --- .../strtok-strtok-l-wcstok-wcstok-l-mbstok-mbstok-l.md | 2 +- docs/code-quality/c26402.md | 2 +- docs/cppcx/platform-collections-vector-class.md | 2 +- docs/cppcx/platform-comexception-class.md | 2 +- docs/cppcx/platform-exception-class.md | 2 +- docs/cppcx/wrl/hstring-class.md | 2 +- docs/dotnet/deque-stl-clr.md | 2 +- docs/dotnet/priority-queue-stl-clr.md | 6 +++--- docs/dotnet/vector-stl-clr.md | 2 +- .../concrt/reference/concurrency-namespace-functions.md | 4 ++-- docs/sanitizers/error-alloc-dealloc-mismatch.md | 2 +- docs/standard-library/file-status-class.md | 2 +- docs/standard-library/regex-constants-class.md | 2 +- 13 files changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/c-runtime-library/reference/strtok-strtok-l-wcstok-wcstok-l-mbstok-mbstok-l.md b/docs/c-runtime-library/reference/strtok-strtok-l-wcstok-wcstok-l-mbstok-mbstok-l.md index 00ad10086c7..f71886451f9 100644 --- a/docs/c-runtime-library/reference/strtok-strtok-l-wcstok-wcstok-l-mbstok-mbstok-l.md +++ b/docs/c-runtime-library/reference/strtok-strtok-l-wcstok-wcstok-l-mbstok-mbstok-l.md @@ -74,7 +74,7 @@ Returns a pointer to the next token found in *`strToken`*. The functions return ## Remarks -The **`strtok`** function finds the next token in *`strToken`*. The set of characters in *`strDelimit`* specifies possible delimiters of the token to be found in *`strToken`* on the current call. **`wcstok`** and **`_mbstok`** are wide-character and multibyte-character versions of **`strtok`**. The arguments and return value of **`wcstok`** are wide-character strings. The argumets and return value of **`_mbstok`** are multibyte-character strings. These three functions behave identically otherwise. +The **`strtok`** function finds the next token in *`strToken`*. The set of characters in *`strDelimit`* specifies possible delimiters of the token to be found in *`strToken`* on the current call. **`wcstok`** and **`_mbstok`** are wide-character and multibyte-character versions of **`strtok`**. The arguments and return value of **`wcstok`** are wide-character strings. The arguments and return value of **`_mbstok`** are multibyte-character strings. These three functions behave identically otherwise. The two argument version of **`wcstok`** isn't standard. If you need to use that version, you'll need to define `_CRT_NON_CONFORMING_WCSTOK` before you `#include ` (or `#include `). diff --git a/docs/code-quality/c26402.md b/docs/code-quality/c26402.md index 16f0f248d2b..4b7a5f3daee 100644 --- a/docs/code-quality/c26402.md +++ b/docs/code-quality/c26402.md @@ -34,7 +34,7 @@ S* bad_example() return s; // C26402 } -// Prefer returning objects with move contructors by value instead of unnecessarily heap-allocating the object. +// Prefer returning objects with move constructors by value instead of unnecessarily heap-allocating the object. S good_example() noexcept { S s; diff --git a/docs/cppcx/platform-collections-vector-class.md b/docs/cppcx/platform-collections-vector-class.md index 56d9181e80a..47c1c014d54 100644 --- a/docs/cppcx/platform-collections-vector-class.md +++ b/docs/cppcx/platform-collections-vector-class.md @@ -176,7 +176,7 @@ The number of items retrieved. ### Remarks -This function is not intended for use directly by client code. It is used internally in the [to_vector Function](../cppcx/to-vector-function.md) to enable efficient conversion of Platform::Vector intances to std::vector instances. +This function is not intended for use directly by client code. It is used internally in the [to_vector Function](../cppcx/to-vector-function.md) to enable efficient conversion of Platform::Vector instances to std::vector instances. ## Vector::GetView Method diff --git a/docs/cppcx/platform-comexception-class.md b/docs/cppcx/platform-comexception-class.md index e76f69daed7..2c1311c0c18 100644 --- a/docs/cppcx/platform-comexception-class.md +++ b/docs/cppcx/platform-comexception-class.md @@ -73,7 +73,7 @@ The following predefined exceptions are derived from COMException. They differ f ## COMException::COMException Constructor -Intializes a new instance of the COMException class. +Initializes a new instance of the COMException class. ### Syntax diff --git a/docs/cppcx/platform-exception-class.md b/docs/cppcx/platform-exception-class.md index 4eb7e70d3dd..492cb3e3246 100644 --- a/docs/cppcx/platform-exception-class.md +++ b/docs/cppcx/platform-exception-class.md @@ -86,7 +86,7 @@ It is strongly recommended to use CreateException to create a strongly-typed exc ## Exception::Exception Constructor -Intializes a new instance of the Exception class. +Initializes a new instance of the Exception class. ### Syntax diff --git a/docs/cppcx/wrl/hstring-class.md b/docs/cppcx/wrl/hstring-class.md index c29a4a6cff1..e806bcc18c3 100644 --- a/docs/cppcx/wrl/hstring-class.md +++ b/docs/cppcx/wrl/hstring-class.md @@ -340,7 +340,7 @@ The second parameter to compare. *rhs* can be a reference to an `HString`. ## HString::Release -Deletes the underlying string value and intializes the current `HString` object to an empty value. +Deletes the underlying string value and initializes the current `HString` object to an empty value. ```cpp void Release() throw() diff --git a/docs/dotnet/deque-stl-clr.md b/docs/dotnet/deque-stl-clr.md index 9961dd1c212..75526331ca5 100644 --- a/docs/dotnet/deque-stl-clr.md +++ b/docs/dotnet/deque-stl-clr.md @@ -1567,7 +1567,7 @@ Position of element to access. ### Remarks -The member operator returns a referene to the element at position *pos*. You use it to access an element whose position you know. +The member operator returns a reference to the element at position *pos*. You use it to access an element whose position you know. ### Example diff --git a/docs/dotnet/priority-queue-stl-clr.md b/docs/dotnet/priority-queue-stl-clr.md index 3dc4e67eb65..2ce9a39c28c 100644 --- a/docs/dotnet/priority-queue-stl-clr.md +++ b/docs/dotnet/priority-queue-stl-clr.md @@ -701,19 +701,19 @@ The constructor: `template priority_queue(InIt first, InIt last);` -creates an empty wrapped container, with the default ordering predicate, then pushes the sequence [`first`, `last`). You use it to specify an initial controlled sequence from a specified eqeuence, with the specified ordering predicate. +creates an empty wrapped container, with the default ordering predicate, then pushes the sequence [`first`, `last`). You use it to specify an initial controlled sequence from a specified sequence, with the specified ordering predicate. The constructor: `template priority_queue(InIt first, InIt last, value_compare^ pred);` -creates an empty wrapped container, with the ordering predicate *pred*, then pushes the sequence [`first`, `last`). You use it to specify an initial controlled sequence from a specified seqeuence, with the specified ordering predicate. +creates an empty wrapped container, with the ordering predicate *pred*, then pushes the sequence [`first`, `last`). You use it to specify an initial controlled sequence from a specified sequence, with the specified ordering predicate. The constructor: `template priority_queue(InIt first, InIt last, value_compare^ pred, container_type% cont);` -creates an empty wrapped container, with the ordering predicate *pred*, then pushes all the elements of *cont* plus the sequence [`first`, `last`). You use it to specify an initial controlled sequence from an existing container and a specified seqeuence, with the specified ordering predicate. +creates an empty wrapped container, with the ordering predicate *pred*, then pushes all the elements of *cont* plus the sequence [`first`, `last`). You use it to specify an initial controlled sequence from an existing container and a specified sequence, with the specified ordering predicate. ### Example diff --git a/docs/dotnet/vector-stl-clr.md b/docs/dotnet/vector-stl-clr.md index c6c3fd953cd..975c260d850 100644 --- a/docs/dotnet/vector-stl-clr.md +++ b/docs/dotnet/vector-stl-clr.md @@ -1454,7 +1454,7 @@ Position of element to access. ### Remarks -The member operator returns a referene to the element at position *pos*. You use it to access an element whose position you know. +The member operator returns a reference to the element at position *pos*. You use it to access an element whose position you know. ### Example diff --git a/docs/parallel/concrt/reference/concurrency-namespace-functions.md b/docs/parallel/concrt/reference/concurrency-namespace-functions.md index 10f4a1627f6..76ea97d01de 100644 --- a/docs/parallel/concrt/reference/concurrency-namespace-functions.md +++ b/docs/parallel/concrt/reference/concurrency-namespace-functions.md @@ -168,11 +168,11 @@ The return type of the lambda determines whether the construct is an action or a Lambdas that return void cause the creation of actions. Lambdas that return a result of type `TResult` cause the creation of operations of TResult. -The lambda may also return a `task` which encapsulates the aysnchronous work within itself or is the continuation of a chain of tasks that represent the asynchronous work. In this case, the lambda itself is executed inline, since the tasks are the ones that execute asynchronously, and the return type of the lambda is unwrapped to produce the asynchronous construct returned by `create_async`. This implies that a lambda that returns a task\ will cause the creation of actions, and a lambda that returns a task\ will cause the creation of operations of TResult. +The lambda may also return a `task` which encapsulates the asynchronous work within itself or is the continuation of a chain of tasks that represent the asynchronous work. In this case, the lambda itself is executed inline, since the tasks are the ones that execute asynchronously, and the return type of the lambda is unwrapped to produce the asynchronous construct returned by `create_async`. This implies that a lambda that returns a task\ will cause the creation of actions, and a lambda that returns a task\ will cause the creation of operations of TResult. The lambda may take either zero, one or two arguments. The valid arguments are `progress_reporter` and `cancellation_token`, in that order if both are used. A lambda without arguments causes the creation of an asynchronous construct without the capability for progress reporting. A lambda that takes a progress_reporter\ will cause `create_async` to return an asynchronous construct which reports progress of type TProgress each time the `report` method of the progress_reporter object is called. A lambda that takes a cancellation_token may use that token to check for cancellation, or pass it to tasks that it creates so that cancellation of the asynchronous construct causes cancellation of those tasks. -If the body of the lambda or function object returns a result (and not a task\), the lamdba will be executed asynchronously within the process MTA in the context of a task the Runtime implicitly creates for it. The `IAsyncInfo::Cancel` method will cause cancellation of the implicit task. +If the body of the lambda or function object returns a result (and not a task\), the lambda will be executed asynchronously within the process MTA in the context of a task the Runtime implicitly creates for it. The `IAsyncInfo::Cancel` method will cause cancellation of the implicit task. If the body of the lambda returns a task, the lambda executes inline, and by declaring the lambda to take an argument of type `cancellation_token` you can trigger cancellation of any tasks you create within the lambda by passing that token in when you create them. You may also use the `register_callback` method on the token to cause the Runtime to invoke a callback when you call `IAsyncInfo::Cancel` on the async operation or action produced. diff --git a/docs/sanitizers/error-alloc-dealloc-mismatch.md b/docs/sanitizers/error-alloc-dealloc-mismatch.md index 22cf7f620f0..b68efaf0413 100644 --- a/docs/sanitizers/error-alloc-dealloc-mismatch.md +++ b/docs/sanitizers/error-alloc-dealloc-mismatch.md @@ -44,7 +44,7 @@ int main(int argc, char* argv[]) } ``` -In a Visual Studio 2019 version 16.9 or later [developer command prompt](../build/building-on-the-command-line.md#developer_command_prompt_shortcuts), run the following commands to see an exampe of `alloc_dealloc_mismatch`: +In a Visual Studio 2019 version 16.9 or later [developer command prompt](../build/building-on-the-command-line.md#developer_command_prompt_shortcuts), run the following commands to see an example of `alloc_dealloc_mismatch`: ```cmd cl example1.cpp /fsanitize=address /Zi diff --git a/docs/standard-library/file-status-class.md b/docs/standard-library/file-status-class.md index 1dbed5fb4bb..916449263c2 100644 --- a/docs/standard-library/file-status-class.md +++ b/docs/standard-library/file-status-class.md @@ -74,7 +74,7 @@ The defaulted member assignment operators behave as expected. ```cpp file_status& operator=(const file_status&) noexcept = default; -file_status& operator=(file_status&&) nexcept = default; +file_status& operator=(file_status&&) noexcept = default; ``` ### Parameters diff --git a/docs/standard-library/regex-constants-class.md b/docs/standard-library/regex-constants-class.md index 63ef9ea01f1..9dc501614ad 100644 --- a/docs/standard-library/regex-constants-class.md +++ b/docs/standard-library/regex-constants-class.md @@ -199,7 +199,7 @@ The syntax modifiers are: `icase` -- make matches case-insensitive -`nosubs` -- the implementaton need not keep track of the contents of capture groups +`nosubs` -- the implementation need not keep track of the contents of capture groups `optimize` -- the implementation should emphasize speed of matching rather than speed of regular expression compilation From cb5ccb99fcae5e412254dbf4ef2b0abd83602419 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Thu, 11 Sep 2025 22:58:44 +0800 Subject: [PATCH 1802/2255] Update metadata in 11 topics --- .../strtok-strtok-l-wcstok-wcstok-l-mbstok-mbstok-l.md | 5 ++--- docs/code-quality/c26402.md | 3 +-- docs/cppcx/platform-collections-vector-class.md | 5 ++--- docs/cppcx/platform-comexception-class.md | 2 +- docs/cppcx/platform-exception-class.md | 2 +- docs/cppcx/wrl/hstring-class.md | 5 ++--- docs/dotnet/deque-stl-clr.md | 2 +- docs/dotnet/priority-queue-stl-clr.md | 5 ++--- docs/dotnet/vector-stl-clr.md | 2 +- docs/standard-library/file-status-class.md | 5 ++--- docs/standard-library/regex-constants-class.md | 5 ++--- 11 files changed, 17 insertions(+), 24 deletions(-) diff --git a/docs/c-runtime-library/reference/strtok-strtok-l-wcstok-wcstok-l-mbstok-mbstok-l.md b/docs/c-runtime-library/reference/strtok-strtok-l-wcstok-wcstok-l-mbstok-mbstok-l.md index f71886451f9..d257087249c 100644 --- a/docs/c-runtime-library/reference/strtok-strtok-l-wcstok-wcstok-l-mbstok-mbstok-l.md +++ b/docs/c-runtime-library/reference/strtok-strtok-l-wcstok-wcstok-l-mbstok-mbstok-l.md @@ -1,14 +1,13 @@ --- -description: "Learn more about: strtok, _strtok_l, wcstok, _wcstok_l, _mbstok, _mbstok_l" title: "strtok, _strtok_l, wcstok, _wcstok_l, _mbstok, _mbstok_l" -ms.date: "6/24/2020" +description: "Learn more about: strtok, _strtok_l, wcstok, _wcstok_l, _mbstok, _mbstok_l" +ms.date: 6/24/2020 api_name: ["_mbstok_l", "_mbstok", "wcstok", "_mbstok", "strtok", "_wcstok_l", "_o__mbstok", "_o__mbstok_l", "_o_strtok", "_o_wcstok"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll"] api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["STRING/strtok", "TCHAR/_strtok_l", "MBSTRING/_mbstok", "MBSTRING/_mbstok_l", "CORECRT_WSTRING/wcstok", "TCHAR/_wcstok_l", "TCHAR/_tcstok", "TCHAR/_tcstok_l", "strtok", "strtok_l", "_mbstok", "_mbstok_l", "wcstok", "_wcstok_l", "_tcstok", "_tcstok_l"] helpviewer_keywords: ["mbstok_l function", "strings [C++], searching", "tcstok function", "_tcstok function", "_strtok_l function", "strtok function", "mbstok function", "wcstok_l function", "_mbstok function", "tcstok_l function", "tokens, finding in strings", "_mbstok_l function", "wcstok function", "_wcstok_l function", "_tcstok_l function", "strtok_l function"] -ms.assetid: 904cb734-f0d7-4d77-ba81-4791ddf461ae --- # `strtok`, `_strtok_l`, `wcstok`, `_wcstok_l`, `_mbstok`, `_mbstok_l` diff --git a/docs/code-quality/c26402.md b/docs/code-quality/c26402.md index 4b7a5f3daee..d375a3128c5 100644 --- a/docs/code-quality/c26402.md +++ b/docs/code-quality/c26402.md @@ -1,10 +1,9 @@ --- +title: "Warning C26402" description: "Learn more about: Warning C26402 DONT_HEAP_ALLOCATE_MOVABLE_RESULT" -title: Warning C26402 ms.date: 08/20/2020 f1_keywords: ["C26402", "DONT_HEAP_ALLOCATE_MOVABLE_RESULT"] helpviewer_keywords: ["C26402"] -ms.assetid: b9d3d398-697a-4a5d-8bfe-9c667dffb90b --- # Warning C26402 diff --git a/docs/cppcx/platform-collections-vector-class.md b/docs/cppcx/platform-collections-vector-class.md index 47c1c014d54..4bb382e37ef 100644 --- a/docs/cppcx/platform-collections-vector-class.md +++ b/docs/cppcx/platform-collections-vector-class.md @@ -1,11 +1,10 @@ --- -description: "Learn more about: Platform::Collections::Vector Class" title: "Platform::Collections::Vector Class" -ms.date: "12/04/2019" +description: "Learn more about: Platform::Collections::Vector Class" +ms.date: 12/04/2019 ms.topic: "reference" f1_keywords: ["COLLECTION/Platform::Collections::Vector::Vector", "COLLECTION/Platform::Collections::Vector::Append", "COLLECTION/Platform::Collections::Vector::Clear", "COLLECTION/Platform::Collections::Vector::First", "COLLECTION/Platform::Collections::Vector::GetAt", "COLLECTION/Platform::Collections::Vector::GetMany", "COLLECTION/Platform::Collections::Vector::GetView", "COLLECTION/Platform::Collections::Vector::IndexOf", "COLLECTION/Platform::Collections::Vector::InsertAt", "COLLECTION/Platform::Collections::Vector::ReplaceAll", "COLLECTION/Platform::Collections::Vector::RemoveAt", "COLLECTION/Platform::Collections::Vector::RemoveAtEnd", "COLLECTION/Platform::Collections::Vector::SetAt", "COLLECTION/Platform::Collections::Vector::Size", "COLLECTION/Platform::Collections::Vector::VectorChanged"] helpviewer_keywords: ["Vector Class (C++/Cx)"] -ms.assetid: aee8c076-9700-47c3-99b6-799fd3edb0ca --- # Platform::Collections::Vector Class diff --git a/docs/cppcx/platform-comexception-class.md b/docs/cppcx/platform-comexception-class.md index 2c1311c0c18..42aaeb78ad9 100644 --- a/docs/cppcx/platform-comexception-class.md +++ b/docs/cppcx/platform-comexception-class.md @@ -1,7 +1,7 @@ --- title: "Platform::COMException Class" description: "Learn more about: Platform::COMException Class" -ms.date: "12/30/2016" +ms.date: 12/30/2016 ms.topic: "reference" f1_keywords: ["VCCORLIB/Platform::COMException", "VCCORLIB/Platform::COMException::HResult", "VCCORLIB/Platform::COMException::Message"] helpviewer_keywords: ["Platform::COMException Class"] diff --git a/docs/cppcx/platform-exception-class.md b/docs/cppcx/platform-exception-class.md index 492cb3e3246..32f89702c67 100644 --- a/docs/cppcx/platform-exception-class.md +++ b/docs/cppcx/platform-exception-class.md @@ -1,7 +1,7 @@ --- title: "Platform::Exception Class" description: "Learn more about: Platform::Exception Class" -ms.date: "12/30/2016" +ms.date: 12/30/2016 ms.topic: "reference" f1_keywords: ["VCCORLIB/Platform::Exception::Exception", "VCCORLIB/Platform::Exception::CreateException", "VCCORLIB/Platform::Exception::HResult", "VCCORLIB/Platform::Exception::Message"] helpviewer_keywords: ["Platform::Exception Class"] diff --git a/docs/cppcx/wrl/hstring-class.md b/docs/cppcx/wrl/hstring-class.md index e806bcc18c3..1d9df0ceedf 100644 --- a/docs/cppcx/wrl/hstring-class.md +++ b/docs/cppcx/wrl/hstring-class.md @@ -1,11 +1,10 @@ --- -description: "Learn more about: HString Class" title: "HString Class" -ms.date: "07/15/2019" +description: "Learn more about: HString Class" +ms.date: 07/15/2019 ms.topic: "reference" f1_keywords: ["corewrappers/Microsoft::WRL::Wrappers::HString", "corewrappers/Microsoft::WRL::Wrappers::HString::Attach", "corewrappers/Microsoft::WRL::Wrappers::HString::CopyTo", "corewrappers/Microsoft::WRL::Wrappers::HString::Detach", "corewrappers/Microsoft::WRL::Wrappers::HString::Get", "corewrappers/Microsoft::WRL::Wrappers::HString::GetRawBuffer","corewrappers/Microsoft::WRL::Wrappers::HString::GetAddressOf", "corewrappers/Microsoft::WRL::Wrappers::HString::HString", "corewrappers/Microsoft::WRL::Wrappers::HString::IsValid", "corewrappers/Microsoft::WRL::Wrappers::HString::MakeReference", "corewrappers/Microsoft::WRL::Wrappers::HString::operator=", "corewrappers/Microsoft::WRL::Wrappers::HString::operator==", "corewrappers/Microsoft::WRL::Wrappers::HString::operator!=", "corewrappers/Microsoft::WRL::Wrappers::HString::operator<", "corewrappers/Microsoft::WRL::Wrappers::HString::Release", "corewrappers/Microsoft::WRL::Wrappers::HString::Set", "corewrappers/Microsoft::WRL::Wrappers::HString::~HString"] helpviewer_keywords: ["Microsoft::WRL::Wrappers::HString class", "Microsoft::WRL::Wrappers::HString::Attach method", "Microsoft::WRL::Wrappers::HString::CopyTo method", "Microsoft::WRL::Wrappers::HString::Detach method", "Microsoft::WRL::Wrappers::HString::Get method", "Microsoft::WRL::Wrappers::HString::GetAddressOf method", "Microsoft::WRL::Wrappers::HString::HString, constructor", "Microsoft::WRL::Wrappers::HString::IsValid method", "Microsoft::WRL::Wrappers::HString::MakeReference method", "Microsoft::WRL::Wrappers::HString::operator= operator", "Microsoft::WRL::Wrappers::HString::operator== operator", "Microsoft::WRL::Wrappers::HString::operator!= operator", "Microsoft::WRL::Wrappers::HString::operator< operator", "Microsoft::WRL::Wrappers::HString::Release method", "Microsoft::WRL::Wrappers::HString::Set method", "Microsoft::WRL::Wrappers::HString::~HString, destructor"] -ms.assetid: 6709dd2e-8d72-4675-8ec7-1baa7d71854d --- # HString Class diff --git a/docs/dotnet/deque-stl-clr.md b/docs/dotnet/deque-stl-clr.md index 75526331ca5..8a4ef045094 100644 --- a/docs/dotnet/deque-stl-clr.md +++ b/docs/dotnet/deque-stl-clr.md @@ -1,7 +1,7 @@ --- title: "deque (STL/CLR)" description: "Learn more about: deque (STL/CLR)" -ms.date: "11/04/2016" +ms.date: 11/04/2016 ms.topic: "reference" f1_keywords: ["cliext::deque", "cliext::deque::assign", "cliext::deque::at", "cliext::deque::back", "cliext::deque::back_item", "cliext::deque::begin", "cliext::deque::clear", "cliext::deque::const_iterator", "cliext::deque::const_reference", "cliext::deque::const_reverse_iterator", "cliext::deque::deque", "cliext::deque::difference_type", "cliext::deque::empty", "cliext::deque::end", "cliext::deque::erase", "cliext::deque::front", "cliext::deque::front_item", "cliext::deque::generic_container", "cliext::deque::generic_iterator", "cliext::deque::generic_reverse_iterator", "cliext::deque::generic_value", "cliext::deque::insert", "cliext::deque::iterator", "cliext::deque::operator!=", "cliext::deque::operator[]", "cliext::deque::pop_back", "cliext::deque::pop_front", "cliext::deque::push_back", "cliext::deque::push_front", "cliext::deque::rbegin", "cliext::deque::reference", "cliext::deque::rend", "cliext::deque::resize", "cliext::deque::reverse_iterator", "cliext::deque::size", "cliext::deque::size_type", "cliext::deque::swap", "cliext::deque::to_array", "cliext::deque::value_type", "cliext::deque::operator<", "cliext::deque::operator<=", "cliext::deque::operator=", "cliext::deque::operator==", "cliext::deque::operator>", "cliext::deque::operator>="] helpviewer_keywords: ["deque class [STL/CLR]", " header [STL/CLR]", " header [STL/CLR]", "assign member [STL/CLR]", "assign member [STL/CLR]", "at member [STL/CLR]", "back member [STL/CLR]", "back_item member [STL/CLR]", "begin member [STL/CLR]", "clear member [STL/CLR]", "const_iterator member [STL/CLR]", "const_reference member [STL/CLR]", "const_reverse_iterator member [STL/CLR]", "deque member [STL/CLR]", "difference_type member [STL/CLR]", "empty member [STL/CLR]", "end member [STL/CLR]", "erase member [STL/CLR]", "front member [STL/CLR]", "front_item member [STL/CLR]", "generic_container member [STL/CLR]", "generic_iterator member [STL/CLR]", "generic_reverse_iterator member [STL/CLR]", "generic_value member [STL/CLR]", "insert member [STL/CLR]", "iterator member [STL/CLR]", "operator!= member [STL/CLR]", "operator member [] [STL/CLR]", "pop_back member [STL/CLR]", "pop_front member [STL/CLR]", "push_back member [STL/CLR]", "push_front member [STL/CLR]", "rbegin member [STL/CLR]", "reference member [STL/CLR]", "rend member [STL/CLR]", "resize member [STL/CLR]", "reverse_iterator member [STL/CLR]", "size member [STL/CLR]", "size_type member [STL/CLR]", "swap member [STL/CLR]", "to_array member [STL/CLR]", "value_type member [STL/CLR]", "operator< member [STL/CLR]", "operator<= member [STL/CLR]", "operator= member [STL/CLR]", "operator== member [STL/CLR]", "operator> member [STL/CLR]", "operator>= member [STL/CLR]"] diff --git a/docs/dotnet/priority-queue-stl-clr.md b/docs/dotnet/priority-queue-stl-clr.md index 2ce9a39c28c..220f5b91d1b 100644 --- a/docs/dotnet/priority-queue-stl-clr.md +++ b/docs/dotnet/priority-queue-stl-clr.md @@ -1,11 +1,10 @@ --- -description: "Learn more about: priority_queue (STL/CLR)" title: "priority_queue (STL/CLR)" -ms.date: "11/04/2016" +description: "Learn more about: priority_queue (STL/CLR)" +ms.date: 11/04/2016 ms.topic: "reference" f1_keywords: ["cliext::priority_queue", "cliext::priority_queue::assign", "cliext::priority_queue::const_reference", "cliext::priority_queue::container_type", "cliext::priority_queue::difference_type", "cliext::priority_queue::empty", "cliext::priority_queue::generic_container", "cliext::priority_queue::generic_value", "cliext::priority_queue::get_container", "cliext::priority_queue::operator=", "cliext::priority_queue::pop", "cliext::priority_queue::priority_queue", "cliext::priority_queue::push", "cliext::priority_queue::reference", "cliext::priority_queue::size", "cliext::priority_queue::size_type", "cliext::priority_queue::to_array", "cliext::priority_queue::top", "cliext::priority_queue::top_item", "cliext::priority_queue::value_comp", "cliext::priority_queue::value_compare", "cliext::priority_queue::value_type"] helpviewer_keywords: ["priority_queue class [STL/CLR]", " header [STL/CLR]", " header [STL/CLR]", "assign member [STL/CLR]", "const_reference member [STL/CLR]", "container_type member [STL/CLR]", "difference_type member [STL/CLR]", "empty member [STL/CLR]", "generic_container member [STL/CLR]", "generic_value member [STL/CLR]", "get_container member [STL/CLR]", "operator= member [STL/CLR]", "pop member [STL/CLR]", "priority_queue member [STL/CLR]", "push member [STL/CLR]", "reference member [STL/CLR]", "size member [STL/CLR]", "size_type member [STL/CLR]", "to_array member [STL/CLR]", "top member [STL/CLR]", "top_item member [STL/CLR]", "value_comp member [STL/CLR]", "value_compare member [STL/CLR]", "value_type member [STL/CLR]"] -ms.assetid: 4d0000d3-68ff-4c4b-8157-7060540136f5 --- # priority_queue (STL/CLR) diff --git a/docs/dotnet/vector-stl-clr.md b/docs/dotnet/vector-stl-clr.md index 975c260d850..c9469c0b712 100644 --- a/docs/dotnet/vector-stl-clr.md +++ b/docs/dotnet/vector-stl-clr.md @@ -1,7 +1,7 @@ --- title: "vector (STL/CLR)" description: "Learn more about: vector (STL/CLR)" -ms.date: "11/04/2016" +ms.date: 11/04/2016 ms.topic: "reference" f1_keywords: ["cliext::vector", "cliext::vector::assign", "cliext::vector::at", "cliext::vector::back", "cliext::vector::back_item", "cliext::vector::begin", "cliext::vector::capacity", "cliext::vector::clear", "cliext::vector::const_iterator", "cliext::vector::const_reference", "cliext::vector::const_reverse_iterator", "cliext::vector::difference_type", "cliext::vector::empty", "cliext::vector::end", "cliext::vector::erase", "cliext::vector::front", "cliext::vector::front_item", "cliext::vector::generic_container", "cliext::vector::generic_iterator", "cliext::vector::generic_reverse_iterator", "cliext::vector::generic_value", "cliext::vector::insert", "cliext::vector::iterator", "cliext::vector::operator=", "cliext::vector::operator", "cliext::vector::pop_back", "cliext::vector::push_back", "cliext::vector::rbegin", "cliext::vector::reference", "cliext::vector::rend", "cliext::vector::reserve", "cliext::vector::resize", "cliext::vector::reverse_iterator", "cliext::vector::size", "cliext::vector::size_type", "cliext::vector::swap", "cliext::vector::to_array", "cliext::vector::value_type", "cliext::vector::vector"] helpviewer_keywords: ["vector class [STL/CLR]", " header [STL/CLR]", " header [STL/CLR]", "operator!= member [STL/CLR]", "operator< member [STL/CLR]", "operator<= member [STL/CLR]", "operator== member [STL/CLR]", "operator> (vector) member [STL/CLR]", "operator>= member [STL/CLR]", "assign member [STL/CLR]", "at member [STL/CLR]", "back member [STL/CLR]", "back_item member [STL/CLR]", "begin member [STL/CLR]", "capacity member [STL/CLR]", "clear member [STL/CLR]", "const_iterator member [STL/CLR]", "const_reference member [STL/CLR]", "const_reverse_iterator member [STL/CLR]", "difference_type member [STL/CLR]", "empty member [STL/CLR]", "end member [STL/CLR]", "erase member [STL/CLR]", "front member [STL/CLR]", "front_item member [STL/CLR]", "generic_container member [STL/CLR]", "generic_iterator member [STL/CLR]", "generic_reverse_iterator member [STL/CLR]", "generic_value member [STL/CLR]", "insert member [STL/CLR]", "iterator member [STL/CLR]", "operator= member [STL/CLR]", "operator member [STL/CLR]", "pop_back member [STL/CLR]", "push_back member [STL/CLR]", "rbegin member [STL/CLR]", "reference member [STL/CLR]", "rend member [STL/CLR]", "reserve member [STL/CLR]", "resize member [STL/CLR]", "reverse_iterator member [STL/CLR]", "size member [STL/CLR]", "size_type member [STL/CLR]", "swap member [STL/CLR]", "to_array member [STL/CLR]", "value_type member [STL/CLR]", "vector member [STL/CLR]"] diff --git a/docs/standard-library/file-status-class.md b/docs/standard-library/file-status-class.md index 916449263c2..02d399d3cd9 100644 --- a/docs/standard-library/file-status-class.md +++ b/docs/standard-library/file-status-class.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: file_status Class" title: "file_status Class" -ms.date: "09/10/2018" +description: "Learn more about: file_status Class" +ms.date: 09/10/2018 f1_keywords: ["filesystem/std::experimental::filesystem::file_status", "filesystem/std::experimental::filesystem::file_status::operator=", "filesystem/std::experimental::filesystem::file_status::type", "filesystem/std::experimental::filesystem::file_status::permissions"] -ms.assetid: 9781840e-ad22-44dd-ad79-0fabaa94bac4 helpviewer_keywords: ["std::experimental::filesystem::file_status", "std::experimental::filesystem::file_status::operator=", "std::experimental::filesystem::file_status::type", "std::experimental::filesystem::file_status::permissions"] --- # file_status Class diff --git a/docs/standard-library/regex-constants-class.md b/docs/standard-library/regex-constants-class.md index 9dc501614ad..df849bdbf67 100644 --- a/docs/standard-library/regex-constants-class.md +++ b/docs/standard-library/regex-constants-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: regex_constants namespace" title: "regex_constants Class" -ms.date: "09/10/2018" +description: "Learn more about: regex_constants namespace" +ms.date: 09/10/2018 f1_keywords: ["regex/std::regex_constants", "regex/std::regex_constants::error_collate", "regex/std::regex_constants::error_ctype", "regex/std::regex_constants::error_escape", "regex/std::regex_constants::error_backref", "regex/std::regex_constants::error_brack", "regex/std::regex_constants::error_paren", "regex/std::regex_constants::error_brace", "regex/std::regex_constants::error_badbrace", "regex/std::regex_constants::error_range", "regex/std::regex_constants::error_space", "regex/std::regex_constants::error_badrepeat", "regex/std::regex_constants::error_complexity", "regex/std::regex_constants::error_stack", "regex/std::regex_constants::error_parse", "regex/std::regex_constants::error_syntax", "regex/std::regex_constants::match_default", "regex/std::regex_constants::match_not_bol", "regex/std::regex_constants::match_not_eol", "regex/std::regex_constants::match_not_bow", "regex/std::regex_constants::match_not_eow", "regex/std::regex_constants::match_any", "regex/std::regex_constants::match_not_null", "regex/std::regex_constants::match_continuous", "regex/std::regex_constants::match_prev_avail", "regex/std::regex_constants::format_default", "regex/std::regex_constants::format_sed", "regex/std::regex_constants::format_no_copy", "regex/std::regex_constants::format_first_only", "regex/std::regex_constants::ECMAScript", "regex/std::regex_constants::basic", "regex/std::regex_constants::extended", "regex/std::regex_constants::awk", "regex/std::regex_constants::grep", "regex/std::regex_constants::egrep", "regex/std::regex_constants::icase", "regex/std::regex_constants::nosubs", "regex/std::regex_constants::optimize", "regex/std::regex_constants::collate"] helpviewer_keywords: ["std::regex_constants [C++]", "std::regex_constants [C++], error_collate", "std::regex_constants [C++], error_ctype", "std::regex_constants [C++], error_escape", "std::regex_constants [C++], error_backref", "std::regex_constants [C++], error_brack", "std::regex_constants [C++], error_paren", "std::regex_constants [C++], error_brace", "std::regex_constants [C++], error_badbrace", "std::regex_constants [C++], error_range", "std::regex_constants [C++], error_space", "std::regex_constants [C++], error_badrepeat", "std::regex_constants [C++], error_complexity", "std::regex_constants [C++], error_stack", "std::regex_constants [C++], error_parse", "std::regex_constants [C++], error_syntax", "std::regex_constants [C++], match_default", "std::regex_constants [C++], match_not_bol", "std::regex_constants [C++], match_not_eol", "std::regex_constants [C++], match_not_bow", "std::regex_constants [C++], match_not_eow", "std::regex_constants [C++], match_any", "std::regex_constants [C++], match_not_null", "std::regex_constants [C++], match_continuous", "std::regex_constants [C++], match_prev_avail", "std::regex_constants [C++], format_default", "std::regex_constants [C++], format_sed", "std::regex_constants [C++], format_no_copy", "std::regex_constants [C++], format_first_only", "std::regex_constants [C++], ECMAScript", "std::regex_constants [C++], basic", "std::regex_constants [C++], extended", "std::regex_constants [C++], awk", "std::regex_constants [C++], grep", "std::regex_constants [C++], egrep", "std::regex_constants [C++], icase", "std::regex_constants [C++], nosubs", "std::regex_constants [C++], optimize", "std::regex_constants [C++], collate"] -ms.assetid: 4a69c0ba-c46d-46e4-bd29-6f4efb805f26 --- # regex_constants namespace From 06f02a3b822ce70a3c282aef3d5a324660c4aadc Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Thu, 11 Sep 2025 23:08:27 +0800 Subject: [PATCH 1803/2255] Add blockquotes for warning messages in range [BK4502, BK4504] --- docs/error-messages/tool-errors/bscmake-warning-bk4502.md | 2 +- docs/error-messages/tool-errors/bscmake-warning-bk4503.md | 2 +- docs/error-messages/tool-errors/bscmake-warning-bk4504.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/error-messages/tool-errors/bscmake-warning-bk4502.md b/docs/error-messages/tool-errors/bscmake-warning-bk4502.md index 3833aaf85e3..ca60292fbc3 100644 --- a/docs/error-messages/tool-errors/bscmake-warning-bk4502.md +++ b/docs/error-messages/tool-errors/bscmake-warning-bk4502.md @@ -8,7 +8,7 @@ ms.assetid: ee412ec8-df03-4cdb-91ee-5d609ded8691 --- # BSCMAKE Warning BK4502 -truncated .SBR file 'filename' not in filename +> truncated .SBR file 'filename' not in filename A zero-length .sbr file that was not originally part of the .bsc file was specified during an update. diff --git a/docs/error-messages/tool-errors/bscmake-warning-bk4503.md b/docs/error-messages/tool-errors/bscmake-warning-bk4503.md index cf38c46292b..dbe8ccf97b0 100644 --- a/docs/error-messages/tool-errors/bscmake-warning-bk4503.md +++ b/docs/error-messages/tool-errors/bscmake-warning-bk4503.md @@ -8,6 +8,6 @@ ms.assetid: 68abcf23-6987-4bc5-9745-8b65d2578bbc --- # BSCMAKE Warning BK4503 -minor error in .SBR file filename ignored +> minor error in .SBR file filename ignored The .sbr file contained an error that did not halt the build, but the resulting .bsc file may be incorrect. To fix this issue, recompile to create a new .sbr. diff --git a/docs/error-messages/tool-errors/bscmake-warning-bk4504.md b/docs/error-messages/tool-errors/bscmake-warning-bk4504.md index 7bb4fbdd2d2..c78f7baa5f7 100644 --- a/docs/error-messages/tool-errors/bscmake-warning-bk4504.md +++ b/docs/error-messages/tool-errors/bscmake-warning-bk4504.md @@ -8,7 +8,7 @@ ms.assetid: b56ee2d4-ad44-40f4-98c0-75934ea44a6c --- # BSCMAKE Warning BK4504 -file contains too many references; ignoring further references from this source +> file contains too many references; ignoring further references from this source The .cpp file contains more than 64,000 symbol references. When BSCMAKE has encountered 64,000 references in a file, it ignores all further references. From 8f1816ccde840929b783d71e591da2adf7b32409 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Thu, 11 Sep 2025 23:09:18 +0800 Subject: [PATCH 1804/2255] Add "Remarks" headings for warning references in range [BK4502, BK4504] --- docs/error-messages/tool-errors/bscmake-warning-bk4502.md | 2 ++ docs/error-messages/tool-errors/bscmake-warning-bk4503.md | 2 ++ docs/error-messages/tool-errors/bscmake-warning-bk4504.md | 2 ++ 3 files changed, 6 insertions(+) diff --git a/docs/error-messages/tool-errors/bscmake-warning-bk4502.md b/docs/error-messages/tool-errors/bscmake-warning-bk4502.md index ca60292fbc3..8ef2e3cb875 100644 --- a/docs/error-messages/tool-errors/bscmake-warning-bk4502.md +++ b/docs/error-messages/tool-errors/bscmake-warning-bk4502.md @@ -10,6 +10,8 @@ ms.assetid: ee412ec8-df03-4cdb-91ee-5d609ded8691 > truncated .SBR file 'filename' not in filename +## Remarks + A zero-length .sbr file that was not originally part of the .bsc file was specified during an update. ### To fix by checking the following possible causes diff --git a/docs/error-messages/tool-errors/bscmake-warning-bk4503.md b/docs/error-messages/tool-errors/bscmake-warning-bk4503.md index dbe8ccf97b0..8af2a1b3ac8 100644 --- a/docs/error-messages/tool-errors/bscmake-warning-bk4503.md +++ b/docs/error-messages/tool-errors/bscmake-warning-bk4503.md @@ -10,4 +10,6 @@ ms.assetid: 68abcf23-6987-4bc5-9745-8b65d2578bbc > minor error in .SBR file filename ignored +## Remarks + The .sbr file contained an error that did not halt the build, but the resulting .bsc file may be incorrect. To fix this issue, recompile to create a new .sbr. diff --git a/docs/error-messages/tool-errors/bscmake-warning-bk4504.md b/docs/error-messages/tool-errors/bscmake-warning-bk4504.md index c78f7baa5f7..edf755b5631 100644 --- a/docs/error-messages/tool-errors/bscmake-warning-bk4504.md +++ b/docs/error-messages/tool-errors/bscmake-warning-bk4504.md @@ -10,6 +10,8 @@ ms.assetid: b56ee2d4-ad44-40f4-98c0-75934ea44a6c > file contains too many references; ignoring further references from this source +## Remarks + The .cpp file contains more than 64,000 symbol references. When BSCMAKE has encountered 64,000 references in a file, it ignores all further references. To correct the problem, either split the file into two or more files, each of which has fewer than 64,000 symbol references, or use the `#pragma component(browser)` preprocessor directive to limit symbols that are generated for particular references. For more information, see [component](../../preprocessor/component.md). From 30510df0cf838821ebd5b9781999e6bd8eb83d19 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Thu, 11 Sep 2025 23:13:19 +0800 Subject: [PATCH 1805/2255] Update metadata for warning references in range [BK4502, BK4504] --- docs/error-messages/tool-errors/bscmake-warning-bk4502.md | 5 ++--- docs/error-messages/tool-errors/bscmake-warning-bk4503.md | 5 ++--- docs/error-messages/tool-errors/bscmake-warning-bk4504.md | 5 ++--- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/docs/error-messages/tool-errors/bscmake-warning-bk4502.md b/docs/error-messages/tool-errors/bscmake-warning-bk4502.md index 8ef2e3cb875..611b37bdcf7 100644 --- a/docs/error-messages/tool-errors/bscmake-warning-bk4502.md +++ b/docs/error-messages/tool-errors/bscmake-warning-bk4502.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: BSCMAKE Warning BK4502" title: "BSCMAKE Warning BK4502" -ms.date: "11/04/2016" +description: "Learn more about: BSCMAKE Warning BK4502" +ms.date: 11/04/2016 f1_keywords: ["BK4502"] helpviewer_keywords: ["BK4502"] -ms.assetid: ee412ec8-df03-4cdb-91ee-5d609ded8691 --- # BSCMAKE Warning BK4502 diff --git a/docs/error-messages/tool-errors/bscmake-warning-bk4503.md b/docs/error-messages/tool-errors/bscmake-warning-bk4503.md index 8af2a1b3ac8..3baa637cf37 100644 --- a/docs/error-messages/tool-errors/bscmake-warning-bk4503.md +++ b/docs/error-messages/tool-errors/bscmake-warning-bk4503.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: BSCMAKE Warning BK4503" title: "BSCMAKE Warning BK4503" -ms.date: "11/04/2016" +description: "Learn more about: BSCMAKE Warning BK4503" +ms.date: 11/04/2016 f1_keywords: ["BK4503"] helpviewer_keywords: ["BK4503"] -ms.assetid: 68abcf23-6987-4bc5-9745-8b65d2578bbc --- # BSCMAKE Warning BK4503 diff --git a/docs/error-messages/tool-errors/bscmake-warning-bk4504.md b/docs/error-messages/tool-errors/bscmake-warning-bk4504.md index edf755b5631..de69a7e2c05 100644 --- a/docs/error-messages/tool-errors/bscmake-warning-bk4504.md +++ b/docs/error-messages/tool-errors/bscmake-warning-bk4504.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: BSCMAKE Warning BK4504" title: "BSCMAKE Warning BK4504" -ms.date: "11/04/2016" +description: "Learn more about: BSCMAKE Warning BK4504" +ms.date: 11/04/2016 f1_keywords: ["BK4504"] helpviewer_keywords: ["BK4504"] -ms.assetid: b56ee2d4-ad44-40f4-98c0-75934ea44a6c --- # BSCMAKE Warning BK4504 From e55daff3ffc578d225af3c793796cd90d12b054b Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Fri, 12 Sep 2025 16:33:27 +0800 Subject: [PATCH 1806/2255] Add blockquotes for error messages in range [PRJ0002, PRJ0050] --- docs/error-messages/tool-errors/project-build-error-prj0005.md | 2 +- docs/error-messages/tool-errors/project-build-error-prj0006.md | 2 +- docs/error-messages/tool-errors/project-build-error-prj0007.md | 2 +- docs/error-messages/tool-errors/project-build-error-prj0008.md | 2 +- docs/error-messages/tool-errors/project-build-error-prj0009.md | 2 +- docs/error-messages/tool-errors/project-build-error-prj0013.md | 2 +- docs/error-messages/tool-errors/project-build-error-prj0014.md | 2 +- docs/error-messages/tool-errors/project-build-error-prj0015.md | 2 +- docs/error-messages/tool-errors/project-build-error-prj0016.md | 2 +- docs/error-messages/tool-errors/project-build-error-prj0017.md | 2 +- docs/error-messages/tool-errors/project-build-error-prj0019.md | 2 +- docs/error-messages/tool-errors/project-build-error-prj0027.md | 2 +- docs/error-messages/tool-errors/project-build-error-prj0028.md | 2 +- docs/error-messages/tool-errors/project-build-error-prj0030.md | 2 +- docs/error-messages/tool-errors/project-build-error-prj0031.md | 2 +- docs/error-messages/tool-errors/project-build-error-prj0032.md | 2 +- docs/error-messages/tool-errors/project-build-error-prj0033.md | 2 +- docs/error-messages/tool-errors/project-build-error-prj0034.md | 2 +- docs/error-messages/tool-errors/project-build-error-prj0036.md | 2 +- docs/error-messages/tool-errors/project-build-error-prj0040.md | 2 +- docs/error-messages/tool-errors/project-build-error-prj0044.md | 2 +- docs/error-messages/tool-errors/project-build-error-prj0046.md | 2 +- docs/error-messages/tool-errors/project-build-error-prj0047.md | 2 +- docs/error-messages/tool-errors/project-build-error-prj0050.md | 2 +- 24 files changed, 24 insertions(+), 24 deletions(-) diff --git a/docs/error-messages/tool-errors/project-build-error-prj0005.md b/docs/error-messages/tool-errors/project-build-error-prj0005.md index 8e2e34587c2..395c314ef98 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0005.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0005.md @@ -8,7 +8,7 @@ ms.assetid: 00c1821b-16aa-4bd9-9cf6-a778e5ed4ad9 --- # Project Build Error PRJ0005 -Unable to create a temporary file in directory 'directory'. +> Unable to create a temporary file in directory 'directory'. The call to create a temporary file failed. Reasons for failure include: diff --git a/docs/error-messages/tool-errors/project-build-error-prj0006.md b/docs/error-messages/tool-errors/project-build-error-prj0006.md index 9a98972aba4..1570fd3604f 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0006.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0006.md @@ -8,7 +8,7 @@ ms.assetid: ce092be4-1652-414f-8cb5-b97ef5841f89 --- # Project Build Error PRJ0006 -Could not open the temporary file 'file'. Make sure the file exists and that the directory is not write-protected. +> Could not open the temporary file 'file'. Make sure the file exists and that the directory is not write-protected. Visual C++ could not create a temporary file during the build process. Reasons for this include: diff --git a/docs/error-messages/tool-errors/project-build-error-prj0007.md b/docs/error-messages/tool-errors/project-build-error-prj0007.md index 5c661e392d1..1da3fba3bbc 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0007.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0007.md @@ -8,7 +8,7 @@ ms.assetid: d923948b-acc9-498f-bf3b-f14e41bed61a --- # Project Build Error PRJ0007 -Could not create output directory 'directory'. +> Could not create output directory 'directory'. Visual C++ failed to create an output directory. Possible reasons include: diff --git a/docs/error-messages/tool-errors/project-build-error-prj0008.md b/docs/error-messages/tool-errors/project-build-error-prj0008.md index 9371e7b0056..d08e664a1b6 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0008.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0008.md @@ -8,7 +8,7 @@ ms.assetid: 6bf7f17a-d2a8-4826-99c7-d600d846952f --- # Project Build Error PRJ0008 -Could not delete file 'file'. +> Could not delete file 'file'. **Make sure that the file is not open by another process and is not write-protected.** diff --git a/docs/error-messages/tool-errors/project-build-error-prj0009.md b/docs/error-messages/tool-errors/project-build-error-prj0009.md index e2ba86e6546..912ac4ecee3 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0009.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0009.md @@ -8,7 +8,7 @@ ms.assetid: 89291778-cda4-495d-983f-ddcc06dfc98b --- # Project Build Error PRJ0009 -Build log could not be opened for writing. +> Build log could not be opened for writing. **Make sure that the file is not open by another process and is not write-protected.** diff --git a/docs/error-messages/tool-errors/project-build-error-prj0013.md b/docs/error-messages/tool-errors/project-build-error-prj0013.md index 9c83ecf9f8b..e38672d39bc 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0013.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0013.md @@ -8,7 +8,7 @@ ms.assetid: 95e7bafd-63c8-4b2d-b778-f19cdf9ba36c --- # Project Build Error PRJ0013 -System resource could be critically low. Unable to create a pipe required to launch a build. +> System resource could be critically low. Unable to create a pipe required to launch a build. This error indicates that system resources are low. To resolve this error, decrease system resource usage by other processes/applications. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0014.md b/docs/error-messages/tool-errors/project-build-error-prj0014.md index c865d37ae13..81835d0933f 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0014.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0014.md @@ -8,7 +8,7 @@ ms.assetid: b08c6df1-1df1-4573-9fca-49de6c5a0c17 --- # Project Build Error PRJ0014 -The job object used to control the spawned processes has failed. The build cannot continue. +> The job object used to control the spawned processes has failed. The build cannot continue. An error occurred in the development environment. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0015.md b/docs/error-messages/tool-errors/project-build-error-prj0015.md index 06083644403..190df47757e 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0015.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0015.md @@ -8,7 +8,7 @@ ms.assetid: 2096c8f1-e96c-49a4-a690-1cb893a8bf6f --- # Project Build Error PRJ0015 -The NULL device is missing from your system. We are unable to launch a build. +> The NULL device is missing from your system. We are unable to launch a build. This error can be caused by low system resources. Close some applications or reboot. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0016.md b/docs/error-messages/tool-errors/project-build-error-prj0016.md index d187b7b7db7..40660b33fd7 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0016.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0016.md @@ -8,7 +8,7 @@ ms.assetid: e9745336-883a-4c70-9c40-7753e02f0325 --- # Project Build Error PRJ0016 -The user's security settings prevent the process from being created. These settings are required for building. +> The user's security settings prevent the process from being created. These settings are required for building. You are logged in as a user who does not have permissions to create processes using a process. You must change the permission levels for this user account, or contact your account administrator. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0017.md b/docs/error-messages/tool-errors/project-build-error-prj0017.md index 58cc800c983..6b4c22420dc 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0017.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0017.md @@ -8,6 +8,6 @@ ms.assetid: a192729f-bb10-486a-bfda-a7843fa259b2 --- # Project Build Error PRJ0017 -The current working directory is invalid. +> The current working directory is invalid. The path to the current working directory is longer than _MAXPATH. To resolve this error, do not create your project at such a deep level. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0019.md b/docs/error-messages/tool-errors/project-build-error-prj0019.md index 1945c29a55c..c10b46b2221 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0019.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0019.md @@ -8,7 +8,7 @@ ms.assetid: 5390a62b-aacf-4bc8-b9d7-08f1e0233423 --- # Project Build Error PRJ0019 -A tool returned an error code from +> A tool returned an error code from An error level was nonzero for a custom build step or build event. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0027.md b/docs/error-messages/tool-errors/project-build-error-prj0027.md index 36d7d27b448..9e3f140af84 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0027.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0027.md @@ -8,7 +8,7 @@ ms.assetid: 85d73a78-4b9e-4553-9f5d-2d76c48a790a --- # Project Build Error PRJ0027 -Unicode log message 'contents' contains content that could not be translated to the user's ANSI code page. +> Unicode log message 'contents' contains content that could not be translated to the user's ANSI code page. You will typically only see this warning in conjunction with errors in creating batch and/or response files. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0028.md b/docs/error-messages/tool-errors/project-build-error-prj0028.md index f6beac1e882..f9e6775ce12 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0028.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0028.md @@ -8,7 +8,7 @@ ms.assetid: 0a6e0da7-cb3d-40b6-81a6-6196a9c2526b --- # Project Build Error PRJ0028 -Temporary file 'file' contains Unicode contents that could not be translated to user's ANSI code page. +> Temporary file 'file' contains Unicode contents that could not be translated to user's ANSI code page. A value was specified with the [/MIDL (Specify MIDL Command Line Options)](../../build/reference/midl-specify-midl-command-line-options.md) linker option that could not be resolved by the system code page. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0030.md b/docs/error-messages/tool-errors/project-build-error-prj0030.md index 74d695229ae..fbb4b869c60 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0030.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0030.md @@ -8,7 +8,7 @@ ms.assetid: c48b3727-e166-46e7-bcd7-3e5b2ac5c1d4 --- # Project Build Error PRJ0030 -Macro expansion error. Evaluate recursion exceeded 32 levels for $(macro). +> Macro expansion error. Evaluate recursion exceeded 32 levels for $(macro). This error is caused by recursion in your macros. For example, if you set the **Intermediate Directory** property (see [General Property Page (Project)](../../build/reference/general-property-page-project.md)) to $(IntDir), you will have recursion. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0031.md b/docs/error-messages/tool-errors/project-build-error-prj0031.md index 5b40281db8b..b7c058732d4 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0031.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0031.md @@ -8,7 +8,7 @@ ms.assetid: b42435c6-e570-4f8e-9ad5-12a7ea69ccb2 --- # Project Build Error PRJ0031 -The 'Outputs' property for the custom build step for file 'file' contained 'macro' which evaluates out to 'macro_expansion'. +> The 'Outputs' property for the custom build step for file 'file' contained 'macro' which evaluates out to 'macro_expansion'. A custom build step on a file had bad output probably due to a macro evaluation problem. This error could also mean that the path is badly formed, containing characters or combinations of characters that are illegal in a file path. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0032.md b/docs/error-messages/tool-errors/project-build-error-prj0032.md index 2659dca6ce3..d7943c348f2 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0032.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0032.md @@ -8,7 +8,7 @@ ms.assetid: bc6acbea-4041-4237-8b5a-f0434705d89f --- # Project Build Error PRJ0032 -The 'Outputs' property for the project-level custom build step contained 'macro' which evaluates out to 'macro_expansion'. +> The 'Outputs' property for the project-level custom build step contained 'macro' which evaluates out to 'macro_expansion'. A custom build step on a project had bad output probably due to a macro evaluation problem. This error could also mean that the path is badly formed, containing characters or combinations of characters that are illegal in a file path. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0033.md b/docs/error-messages/tool-errors/project-build-error-prj0033.md index 445a667d8d8..1605749acee 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0033.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0033.md @@ -8,7 +8,7 @@ ms.assetid: 84d4a052-0586-4b78-9315-81c1e8386c1e --- # Project Build Error PRJ0033 -The 'Additional Dependencies' property for the custom build step for file 'file' contained 'macro' which evaluates out to 'macro_expansion'. +> The 'Additional Dependencies' property for the custom build step for file 'file' contained 'macro' which evaluates out to 'macro_expansion'. A custom build step on a file contained an error in its additional dependency probably due to a macro evaluation problem. This error could also mean that the path is badly formed, containing characters or combinations of characters that are illegal in a file path. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0034.md b/docs/error-messages/tool-errors/project-build-error-prj0034.md index dcfc2b8fb53..3894bcb87d1 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0034.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0034.md @@ -8,7 +8,7 @@ ms.assetid: 1da4a55b-231b-4476-8545-6997628fbc00 --- # Project Build Error PRJ0034 -The 'Additional Dependencies' property for the project-level custom build step contained 'macro' which evaluates out to 'macro_expansion'. +> The 'Additional Dependencies' property for the project-level custom build step contained 'macro' which evaluates out to 'macro_expansion'. A custom build step on a project contained an error in its additional dependency probably due to a macro evaluation problem. This error could also mean that the path is badly formed, containing characters or combinations of characters that are illegal in a file path. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0036.md b/docs/error-messages/tool-errors/project-build-error-prj0036.md index 078ae4b5220..3af0e4b078d 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0036.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0036.md @@ -8,7 +8,7 @@ ms.assetid: ee215cd1-2d66-474d-9a63-b9096f1c4923 --- # Project Build Error PRJ0036 -The 'Additional Files' property for the Web Deployment Tool contained an invalid entry. +> The 'Additional Files' property for the Web Deployment Tool contained an invalid entry. The Additional Files property on the Web Deployment property page contained an error, possibly due to a macro evaluation problem. This error could also mean that the path is badly formed, containing characters or combinations of characters that are illegal in a file path. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0040.md b/docs/error-messages/tool-errors/project-build-error-prj0040.md index c9d2860e395..ebfcb509da2 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0040.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0040.md @@ -8,7 +8,7 @@ ms.assetid: 6549ac62-c87b-4edf-b541-32221abe97ec --- # Project Build Error PRJ0040 -Internal error on build. Cannot continue. Please reload project and try again. +> Internal error on build. Cannot continue. Please reload project and try again. The project system was unable to process your project. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0044.md b/docs/error-messages/tool-errors/project-build-error-prj0044.md index 0168bd57f8d..faf3d219b20 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0044.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0044.md @@ -8,7 +8,7 @@ ms.assetid: 5d78c45a-f9e9-4d2b-a3b6-5a5d1421ab84 --- # Project Build Error PRJ0044 -The 'Additional Dependencies' property for custom build rule 'rule' assigned to file 'file' is invalid. The property contained 'string' which evaluates to 'value'. +> The 'Additional Dependencies' property for custom build rule 'rule' assigned to file 'file' is invalid. The property contained 'string' which evaluates to 'value'. The **Additional Dependencies** property evaluated to an empty string, or to a string that contained invalid characters (any character that could not be in a file or directory name). Custom build rules need the output of the build action. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0046.md b/docs/error-messages/tool-errors/project-build-error-prj0046.md index 4c773d14331..c9e9e87831d 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0046.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0046.md @@ -8,6 +8,6 @@ ms.assetid: 59442319-4481-4b97-a4a5-16f52fc718e7 --- # Project Build Error PRJ0046 -Could not spawn command line because the one specified was empty. +> Could not spawn command line because the one specified was empty. An empty command line was specified for a makefile configuration; the command line is required. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0047.md b/docs/error-messages/tool-errors/project-build-error-prj0047.md index 77037f5823a..48281839c8a 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0047.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0047.md @@ -8,7 +8,7 @@ ms.assetid: 7c79149d-4b7c-4a24-830e-904d92c1f0b4 --- # Project Build Error PRJ0047 -Could not resume the suspended process. The build has failed. +> Could not resume the suspended process. The build has failed. An error occurred in the development environment. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0050.md b/docs/error-messages/tool-errors/project-build-error-prj0050.md index 1d7c06e4027..5ac4ac7572b 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0050.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0050.md @@ -8,7 +8,7 @@ ms.assetid: ceef3b37-0acf-4abd-ac62-aa830b4fa145 --- # Project Build Error PRJ0050 -Failed to register output. Please ensure you have the appropriate permissions to modify the registry. +> Failed to register output. Please ensure you have the appropriate permissions to modify the registry. The Visual C++ build system was not able to register the output of the build (dll or .exe). You need to be logged on as an administrator to modify the registry. From d621c69576fc7b351d721eda066fbc5d9f54774f Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Fri, 12 Sep 2025 16:38:04 +0800 Subject: [PATCH 1807/2255] Add "Remarks" headings for error references in range [PRJ0002, PRJ0050] --- docs/error-messages/tool-errors/project-build-error-prj0002.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0003.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0004.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0005.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0006.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0007.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0008.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0009.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0013.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0014.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0015.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0016.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0017.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0019.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0020.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0021.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0022.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0023.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0024.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0025.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0026.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0027.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0028.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0030.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0031.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0032.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0033.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0034.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0035.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0036.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0040.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0044.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0046.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0047.md | 2 ++ docs/error-messages/tool-errors/project-build-error-prj0050.md | 2 ++ 35 files changed, 70 insertions(+) diff --git a/docs/error-messages/tool-errors/project-build-error-prj0002.md b/docs/error-messages/tool-errors/project-build-error-prj0002.md index b61c38b32bb..ad2545f54a0 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0002.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0002.md @@ -10,6 +10,8 @@ ms.assetid: 1c820b1f-9a24-4681-80ed-4fcbfd7caa00 > error result returned from '*command line*'. +## Remarks + A command, *command line*, which was formed from user input in the **Property Pages** dialog box, returned an error code but no information will appear in the **Output** window. The resolution to this error depends on which tool generated the error. For MIDL, you will get an idea of what went wrong if /o (Redirect Output) is defined. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0003.md b/docs/error-messages/tool-errors/project-build-error-prj0003.md index 0ae0473610d..5c6b667ba41 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0003.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0003.md @@ -10,6 +10,8 @@ ms.assetid: fc5a84bb-c6d3-41d6-8dd6-475455820778 > Error spawning '*command line*'. +## Remarks + The *command line* command formed from input in the **Property Pages** dialog box returned an error code, but no information appears in the **Output** window. Possible reasons for this error include: diff --git a/docs/error-messages/tool-errors/project-build-error-prj0004.md b/docs/error-messages/tool-errors/project-build-error-prj0004.md index 387c00e6be2..6756e9fb299 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0004.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0004.md @@ -10,6 +10,8 @@ ms.assetid: 1858769f-0be4-40ed-ab70-2cee550488c7 > Could not generate command line for the '*tool*' tool. +## Remarks + One or more properties were specified in such a way as to make the syntax of the call to *tool* illegal: - You may have specified badly formed or unknown macros. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0005.md b/docs/error-messages/tool-errors/project-build-error-prj0005.md index 395c314ef98..9ca2cc8f1b8 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0005.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0005.md @@ -10,6 +10,8 @@ ms.assetid: 00c1821b-16aa-4bd9-9cf6-a778e5ed4ad9 > Unable to create a temporary file in directory 'directory'. +## Remarks + The call to create a temporary file failed. Reasons for failure include: - Ran out of temporary file names. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0006.md b/docs/error-messages/tool-errors/project-build-error-prj0006.md index 1570fd3604f..1154ec5dff9 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0006.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0006.md @@ -10,6 +10,8 @@ ms.assetid: ce092be4-1652-414f-8cb5-b97ef5841f89 > Could not open the temporary file 'file'. Make sure the file exists and that the directory is not write-protected. +## Remarks + Visual C++ could not create a temporary file during the build process. Reasons for this include: - No temp directory. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0007.md b/docs/error-messages/tool-errors/project-build-error-prj0007.md index 1da3fba3bbc..75062a8faa2 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0007.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0007.md @@ -10,6 +10,8 @@ ms.assetid: d923948b-acc9-498f-bf3b-f14e41bed61a > Could not create output directory 'directory'. +## Remarks + Visual C++ failed to create an output directory. Possible reasons include: - The directory in which the output directory was to be created is read-only. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0008.md b/docs/error-messages/tool-errors/project-build-error-prj0008.md index d08e664a1b6..4d45d277b25 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0008.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0008.md @@ -10,6 +10,8 @@ ms.assetid: 6bf7f17a-d2a8-4826-99c7-d600d846952f > Could not delete file 'file'. +## Remarks + **Make sure that the file is not open by another process and is not write-protected.** During a rebuild or clean, Visual C++ deletes all known intermediate and output files for the build, as well as any files that meet the wildcard specifications in the **Extensions to Delete on Clean** property in the [General Configuration Settings Property Page](../../build/reference/general-property-page-project.md). diff --git a/docs/error-messages/tool-errors/project-build-error-prj0009.md b/docs/error-messages/tool-errors/project-build-error-prj0009.md index 912ac4ecee3..5d8b5b4bdcf 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0009.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0009.md @@ -10,6 +10,8 @@ ms.assetid: 89291778-cda4-495d-983f-ddcc06dfc98b > Build log could not be opened for writing. +## Remarks + **Make sure that the file is not open by another process and is not write-protected.** After setting the **Build Logging** property to **Yes** and performing a build or rebuild, Visual C++ was unable to open the build log in exclusive mode. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0013.md b/docs/error-messages/tool-errors/project-build-error-prj0013.md index e38672d39bc..977365694ae 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0013.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0013.md @@ -10,6 +10,8 @@ ms.assetid: 95e7bafd-63c8-4b2d-b778-f19cdf9ba36c > System resource could be critically low. Unable to create a pipe required to launch a build. +## Remarks + This error indicates that system resources are low. To resolve this error, decrease system resource usage by other processes/applications. This error can also occur if your security level is insufficient to create pipes (see [CreatePipe](/windows/win32/api/namedpipeapi/nf-namedpipeapi-createpipe)). diff --git a/docs/error-messages/tool-errors/project-build-error-prj0014.md b/docs/error-messages/tool-errors/project-build-error-prj0014.md index 81835d0933f..fd220d03603 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0014.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0014.md @@ -10,6 +10,8 @@ ms.assetid: b08c6df1-1df1-4573-9fca-49de6c5a0c17 > The job object used to control the spawned processes has failed. The build cannot continue. +## Remarks + An error occurred in the development environment. To resolve this error, close and reload the project. If necessary, exit and restart Visual Studio. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0015.md b/docs/error-messages/tool-errors/project-build-error-prj0015.md index 190df47757e..096f0c87df0 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0015.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0015.md @@ -10,6 +10,8 @@ ms.assetid: 2096c8f1-e96c-49a4-a690-1cb893a8bf6f > The NULL device is missing from your system. We are unable to launch a build. +## Remarks + This error can be caused by low system resources. Close some applications or reboot. It can also be caused if you do not have sufficient privileges to the NULL device on the computer. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0016.md b/docs/error-messages/tool-errors/project-build-error-prj0016.md index 40660b33fd7..f92fcc13dcf 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0016.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0016.md @@ -10,6 +10,8 @@ ms.assetid: e9745336-883a-4c70-9c40-7753e02f0325 > The user's security settings prevent the process from being created. These settings are required for building. +## Remarks + You are logged in as a user who does not have permissions to create processes using a process. You must change the permission levels for this user account, or contact your account administrator. This error can also occur if the following registry key is set: diff --git a/docs/error-messages/tool-errors/project-build-error-prj0017.md b/docs/error-messages/tool-errors/project-build-error-prj0017.md index 6b4c22420dc..d00ba56d612 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0017.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0017.md @@ -10,4 +10,6 @@ ms.assetid: a192729f-bb10-486a-bfda-a7843fa259b2 > The current working directory is invalid. +## Remarks + The path to the current working directory is longer than _MAXPATH. To resolve this error, do not create your project at such a deep level. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0019.md b/docs/error-messages/tool-errors/project-build-error-prj0019.md index c10b46b2221..d0fb68f6092 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0019.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0019.md @@ -10,6 +10,8 @@ ms.assetid: 5390a62b-aacf-4bc8-b9d7-08f1e0233423 > A tool returned an error code from +## Remarks + An error level was nonzero for a custom build step or build event. You will also see PRJ0019 when a tool returned an error code but no error message. This can happen, for example, if you redirect the output of MIDL to NUL. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0020.md b/docs/error-messages/tool-errors/project-build-error-prj0020.md index f853411257b..30feb757ebd 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0020.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0020.md @@ -10,6 +10,8 @@ ms.assetid: 54bb8cd4-af7c-4d62-8125-3ab5ff5f2cc4 > Tool '*tool*', Property '*property*' contains invalid file name '*file*'. +## Remarks + The file name *file*, specified in the property *property* for the tool *tool*, was invalid. You may have used an unknown or invalid macro. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0021.md b/docs/error-messages/tool-errors/project-build-error-prj0021.md index 335cba2b63a..14b45137f7f 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0021.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0021.md @@ -10,6 +10,8 @@ ms.assetid: bcab794d-4a6d-4b4d-aaca-73676c0cec75 > Tool '*tool*', Property '*property*' contains invalid file name. +## Remarks + The file name specified in the property *property* for the tool *tool* was invalid. You may have used an unknown or invalid macro. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0022.md b/docs/error-messages/tool-errors/project-build-error-prj0022.md index 7d1cf48c185..a72042988ea 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0022.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0022.md @@ -10,6 +10,8 @@ ms.assetid: 691344a8-fc70-4aeb-9372-dde72f4588a4 > Unknown Tool, Property '*property*' contains invalid file name '*file*'. +## Remarks + The file name *file* specified in the property *property* was invalid. You may have used an unknown or invalid macro. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0023.md b/docs/error-messages/tool-errors/project-build-error-prj0023.md index 377423e3135..76f31dd63de 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0023.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0023.md @@ -10,6 +10,8 @@ ms.assetid: ed55a320-e7c8-489f-886e-825feee0d576 > Tool '*tool*', Unknown Property contains invalid file name '*file*'. +## Remarks + The file name *file* specified for the tool *tool* was invalid. You may have used an unknown or invalid macro. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0024.md b/docs/error-messages/tool-errors/project-build-error-prj0024.md index 600cb4212a7..6673bd9968d 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0024.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0024.md @@ -10,6 +10,8 @@ ms.assetid: 8bde6368-6c1b-4e04-bc5e-3c6d0b8fa1d7 > Unicode path '*path*' could not be translated to user's ANSI code page. +## Remarks + *path* is the original Unicode version of the path string. This error can occur in cases where there is a Unicode path that cannot be directly translated to ANSI for the current system code page. This error may occur if you are working with a project that was developed on a system using a code page that is not on your computer. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0025.md b/docs/error-messages/tool-errors/project-build-error-prj0025.md index 835df947fff..9da11d804ee 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0025.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0025.md @@ -12,6 +12,8 @@ ms.assetid: 57725c78-bc63-44f3-9667-2969b2d7c41d > > *UNICODE contents of file* +## Remarks + The project system found Unicode contents in a custom build rule or build event that cannot be translated properly to the user's current ANSI code page. The resolution for this error is to update the contents of the build rule or build event to use ANSI or to install the code page on your computer and set it as the system default. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0026.md b/docs/error-messages/tool-errors/project-build-error-prj0026.md index b839afbf8bf..01f60793977 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0026.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0026.md @@ -12,6 +12,8 @@ ms.assetid: c52bc9b5-8b22-4015-b477-8645ae56c489 > > *UNICODE contents of file* +## Remarks + The project system found Unicode contents in a response file that cannot be translated properly to the user's current ANSI code page. The resolution for this error is to update the contents of the response file to use ANSI or to install the code page on your computer and set it as the system default. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0027.md b/docs/error-messages/tool-errors/project-build-error-prj0027.md index 9e3f140af84..ba78685c8a1 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0027.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0027.md @@ -10,6 +10,8 @@ ms.assetid: 85d73a78-4b9e-4553-9f5d-2d76c48a790a > Unicode log message 'contents' contains content that could not be translated to the user's ANSI code page. +## Remarks + You will typically only see this warning in conjunction with errors in creating batch and/or response files. The resolution for this error is to update the contents of the build log to use ANSI or to install the code page on your computer and set it as the system default. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0028.md b/docs/error-messages/tool-errors/project-build-error-prj0028.md index f9e6775ce12..aca6ed3549b 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0028.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0028.md @@ -10,6 +10,8 @@ ms.assetid: 0a6e0da7-cb3d-40b6-81a6-6196a9c2526b > Temporary file 'file' contains Unicode contents that could not be translated to user's ANSI code page. +## Remarks + A value was specified with the [/MIDL (Specify MIDL Command Line Options)](../../build/reference/midl-specify-midl-command-line-options.md) linker option that could not be resolved by the system code page. The code page used when you specify the MIDL command (the input code page) must be the same as the system code page. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0030.md b/docs/error-messages/tool-errors/project-build-error-prj0030.md index fbb4b869c60..56d9e5340ee 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0030.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0030.md @@ -10,6 +10,8 @@ ms.assetid: c48b3727-e166-46e7-bcd7-3e5b2ac5c1d4 > Macro expansion error. Evaluate recursion exceeded 32 levels for $(macro). +## Remarks + This error is caused by recursion in your macros. For example, if you set the **Intermediate Directory** property (see [General Property Page (Project)](../../build/reference/general-property-page-project.md)) to $(IntDir), you will have recursion. To resolve this error, do not define macros or properties in terms of macros they are used to define. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0031.md b/docs/error-messages/tool-errors/project-build-error-prj0031.md index b7c058732d4..27599412ef8 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0031.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0031.md @@ -10,6 +10,8 @@ ms.assetid: b42435c6-e570-4f8e-9ad5-12a7ea69ccb2 > The 'Outputs' property for the custom build step for file 'file' contained 'macro' which evaluates out to 'macro_expansion'. +## Remarks + A custom build step on a file had bad output probably due to a macro evaluation problem. This error could also mean that the path is badly formed, containing characters or combinations of characters that are illegal in a file path. To resolve this error, fix the macro or fix the path specification. The evaluated path is an absolute path from the project directory. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0032.md b/docs/error-messages/tool-errors/project-build-error-prj0032.md index d7943c348f2..5ec07057e40 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0032.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0032.md @@ -10,6 +10,8 @@ ms.assetid: bc6acbea-4041-4237-8b5a-f0434705d89f > The 'Outputs' property for the project-level custom build step contained 'macro' which evaluates out to 'macro_expansion'. +## Remarks + A custom build step on a project had bad output probably due to a macro evaluation problem. This error could also mean that the path is badly formed, containing characters or combinations of characters that are illegal in a file path. To resolve this error, fix the macro or fix the path specification. The evaluated path is an absolute path from the project directory. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0033.md b/docs/error-messages/tool-errors/project-build-error-prj0033.md index 1605749acee..1704e69a604 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0033.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0033.md @@ -10,6 +10,8 @@ ms.assetid: 84d4a052-0586-4b78-9315-81c1e8386c1e > The 'Additional Dependencies' property for the custom build step for file 'file' contained 'macro' which evaluates out to 'macro_expansion'. +## Remarks + A custom build step on a file contained an error in its additional dependency probably due to a macro evaluation problem. This error could also mean that the path is badly formed, containing characters or combinations of characters that are illegal in a file path. To resolve this error, fix the macro or fix the path specification. The evaluated path is an absolute path from the project directory. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0034.md b/docs/error-messages/tool-errors/project-build-error-prj0034.md index 3894bcb87d1..1551c6a5197 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0034.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0034.md @@ -10,6 +10,8 @@ ms.assetid: 1da4a55b-231b-4476-8545-6997628fbc00 > The 'Additional Dependencies' property for the project-level custom build step contained 'macro' which evaluates out to 'macro_expansion'. +## Remarks + A custom build step on a project contained an error in its additional dependency probably due to a macro evaluation problem. This error could also mean that the path is badly formed, containing characters or combinations of characters that are illegal in a file path. To resolve this error, fix the macro or fix the path specification. The evaluated path is an absolute path from the project directory. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0035.md b/docs/error-messages/tool-errors/project-build-error-prj0035.md index ecfd160c80a..3c2e46ab62d 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0035.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0035.md @@ -12,6 +12,8 @@ ms.assetid: 0667116d-338c-40a4-972c-da875f778cb5 > > *UNICODE contents of file* +## Remarks + *file* is the XML file created as the command line to the Web Deployment tool. The project system found Unicode characters in some property on the Web Deployment property page that can't properly be translated to ANSI. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0036.md b/docs/error-messages/tool-errors/project-build-error-prj0036.md index 3af0e4b078d..1da78f0d908 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0036.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0036.md @@ -10,6 +10,8 @@ ms.assetid: ee215cd1-2d66-474d-9a63-b9096f1c4923 > The 'Additional Files' property for the Web Deployment Tool contained an invalid entry. +## Remarks + The Additional Files property on the Web Deployment property page contained an error, possibly due to a macro evaluation problem. This error could also mean that the path is badly formed, containing characters or combinations of characters that are illegal in a file path. To resolve this error, fix the macro or fix the path specification. The evaluated path is an absolute path from the project directory. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0040.md b/docs/error-messages/tool-errors/project-build-error-prj0040.md index ebfcb509da2..c3b1bc277bb 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0040.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0040.md @@ -10,6 +10,8 @@ ms.assetid: 6549ac62-c87b-4edf-b541-32221abe97ec > Internal error on build. Cannot continue. Please reload project and try again. +## Remarks + The project system was unable to process your project. Try reloading the project. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0044.md b/docs/error-messages/tool-errors/project-build-error-prj0044.md index faf3d219b20..da32f43c1f1 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0044.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0044.md @@ -10,6 +10,8 @@ ms.assetid: 5d78c45a-f9e9-4d2b-a3b6-5a5d1421ab84 > The 'Additional Dependencies' property for custom build rule 'rule' assigned to file 'file' is invalid. The property contained 'string' which evaluates to 'value'. +## Remarks + The **Additional Dependencies** property evaluated to an empty string, or to a string that contained invalid characters (any character that could not be in a file or directory name). Custom build rules need the output of the build action. For more information, see [Specifying Custom Build Tools](../../build/specifying-custom-build-tools.md). diff --git a/docs/error-messages/tool-errors/project-build-error-prj0046.md b/docs/error-messages/tool-errors/project-build-error-prj0046.md index c9e9e87831d..01281149b3a 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0046.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0046.md @@ -10,4 +10,6 @@ ms.assetid: 59442319-4481-4b97-a4a5-16f52fc718e7 > Could not spawn command line because the one specified was empty. +## Remarks + An empty command line was specified for a makefile configuration; the command line is required. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0047.md b/docs/error-messages/tool-errors/project-build-error-prj0047.md index 48281839c8a..ef71f29d1a8 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0047.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0047.md @@ -10,6 +10,8 @@ ms.assetid: 7c79149d-4b7c-4a24-830e-904d92c1f0b4 > Could not resume the suspended process. The build has failed. +## Remarks + An error occurred in the development environment. To resolve this error, close and reload the project. If necessary, exit and restart Visual Studio. diff --git a/docs/error-messages/tool-errors/project-build-error-prj0050.md b/docs/error-messages/tool-errors/project-build-error-prj0050.md index 5ac4ac7572b..e7de4e0423d 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0050.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0050.md @@ -10,6 +10,8 @@ ms.assetid: ceef3b37-0acf-4abd-ac62-aa830b4fa145 > Failed to register output. Please ensure you have the appropriate permissions to modify the registry. +## Remarks + The Visual C++ build system was not able to register the output of the build (dll or .exe). You need to be logged on as an administrator to modify the registry. If you are building a .dll, you can try to register the .dll manually using regsvr32.exe, this should display information about why the build failed. From 030288ea71458367582f944bb9ce779a2934cc39 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Fri, 12 Sep 2025 16:45:14 +0800 Subject: [PATCH 1808/2255] Update metadata for error references in range [PRJ0002, PRJ0050] --- .../tool-errors/project-build-error-prj0002.md | 5 ++--- .../tool-errors/project-build-error-prj0003.md | 5 ++--- .../tool-errors/project-build-error-prj0004.md | 5 ++--- .../tool-errors/project-build-error-prj0005.md | 5 ++--- .../tool-errors/project-build-error-prj0006.md | 5 ++--- .../tool-errors/project-build-error-prj0007.md | 5 ++--- .../tool-errors/project-build-error-prj0008.md | 5 ++--- .../tool-errors/project-build-error-prj0009.md | 5 ++--- .../tool-errors/project-build-error-prj0013.md | 5 ++--- .../tool-errors/project-build-error-prj0014.md | 5 ++--- .../tool-errors/project-build-error-prj0015.md | 5 ++--- .../tool-errors/project-build-error-prj0016.md | 5 ++--- .../tool-errors/project-build-error-prj0017.md | 5 ++--- .../tool-errors/project-build-error-prj0019.md | 5 ++--- .../tool-errors/project-build-error-prj0020.md | 5 ++--- .../tool-errors/project-build-error-prj0021.md | 5 ++--- .../tool-errors/project-build-error-prj0022.md | 5 ++--- .../tool-errors/project-build-error-prj0023.md | 5 ++--- .../tool-errors/project-build-error-prj0024.md | 5 ++--- .../tool-errors/project-build-error-prj0025.md | 5 ++--- .../tool-errors/project-build-error-prj0026.md | 5 ++--- .../tool-errors/project-build-error-prj0027.md | 5 ++--- .../tool-errors/project-build-error-prj0028.md | 5 ++--- .../tool-errors/project-build-error-prj0030.md | 5 ++--- .../tool-errors/project-build-error-prj0031.md | 5 ++--- .../tool-errors/project-build-error-prj0032.md | 5 ++--- .../tool-errors/project-build-error-prj0033.md | 5 ++--- .../tool-errors/project-build-error-prj0034.md | 5 ++--- .../tool-errors/project-build-error-prj0035.md | 5 ++--- .../tool-errors/project-build-error-prj0036.md | 5 ++--- .../tool-errors/project-build-error-prj0040.md | 5 ++--- .../tool-errors/project-build-error-prj0044.md | 5 ++--- .../tool-errors/project-build-error-prj0046.md | 5 ++--- .../tool-errors/project-build-error-prj0047.md | 5 ++--- .../tool-errors/project-build-error-prj0050.md | 5 ++--- 35 files changed, 70 insertions(+), 105 deletions(-) diff --git a/docs/error-messages/tool-errors/project-build-error-prj0002.md b/docs/error-messages/tool-errors/project-build-error-prj0002.md index ad2545f54a0..25cdd328c58 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0002.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0002.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0002" title: "Project Build Error PRJ0002" -ms.date: "08/27/2018" +description: "Learn more about: Project Build Error PRJ0002" +ms.date: 08/27/2018 f1_keywords: ["PRJ0002"] helpviewer_keywords: ["PRJ0002"] -ms.assetid: 1c820b1f-9a24-4681-80ed-4fcbfd7caa00 --- # Project Build Error PRJ0002 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0003.md b/docs/error-messages/tool-errors/project-build-error-prj0003.md index 5c6b667ba41..3a8e09419da 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0003.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0003.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0003" title: "Project Build Error PRJ0003" -ms.date: "11/04/2016" +description: "Learn more about: Project Build Error PRJ0003" +ms.date: 11/04/2016 f1_keywords: ["PRJ0003"] helpviewer_keywords: ["PRJ0003"] -ms.assetid: fc5a84bb-c6d3-41d6-8dd6-475455820778 --- # Project Build Error PRJ0003 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0004.md b/docs/error-messages/tool-errors/project-build-error-prj0004.md index 6756e9fb299..07cfd3b1d1c 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0004.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0004.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0004" title: "Project Build Error PRJ0004" -ms.date: "08/27/2018" +description: "Learn more about: Project Build Error PRJ0004" +ms.date: 08/27/2018 f1_keywords: ["PRJ0004"] helpviewer_keywords: ["PRJ0004"] -ms.assetid: 1858769f-0be4-40ed-ab70-2cee550488c7 --- # Project Build Error PRJ0004 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0005.md b/docs/error-messages/tool-errors/project-build-error-prj0005.md index 9ca2cc8f1b8..1daca41960c 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0005.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0005.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0005" title: "Project Build Error PRJ0005" -ms.date: "11/04/2016" +description: "Learn more about: Project Build Error PRJ0005" +ms.date: 11/04/2016 f1_keywords: ["PRJ0005"] helpviewer_keywords: ["PRJ0005"] -ms.assetid: 00c1821b-16aa-4bd9-9cf6-a778e5ed4ad9 --- # Project Build Error PRJ0005 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0006.md b/docs/error-messages/tool-errors/project-build-error-prj0006.md index 1154ec5dff9..c5ddbebb489 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0006.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0006.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0006" title: "Project Build Error PRJ0006" -ms.date: "11/04/2016" +description: "Learn more about: Project Build Error PRJ0006" +ms.date: 11/04/2016 f1_keywords: ["PRJ0006"] helpviewer_keywords: ["PRJ0006"] -ms.assetid: ce092be4-1652-414f-8cb5-b97ef5841f89 --- # Project Build Error PRJ0006 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0007.md b/docs/error-messages/tool-errors/project-build-error-prj0007.md index 75062a8faa2..315b84e1a2e 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0007.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0007.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0007" title: "Project Build Error PRJ0007" -ms.date: "11/04/2016" +description: "Learn more about: Project Build Error PRJ0007" +ms.date: 11/04/2016 f1_keywords: ["PRJ0007"] helpviewer_keywords: ["PRJ0007"] -ms.assetid: d923948b-acc9-498f-bf3b-f14e41bed61a --- # Project Build Error PRJ0007 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0008.md b/docs/error-messages/tool-errors/project-build-error-prj0008.md index 4d45d277b25..ab916e188be 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0008.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0008.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0008" title: "Project Build Error PRJ0008" -ms.date: "11/04/2016" +description: "Learn more about: Project Build Error PRJ0008" +ms.date: 11/04/2016 f1_keywords: ["PRJ0008"] helpviewer_keywords: ["PRJ0008"] -ms.assetid: 6bf7f17a-d2a8-4826-99c7-d600d846952f --- # Project Build Error PRJ0008 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0009.md b/docs/error-messages/tool-errors/project-build-error-prj0009.md index 5d8b5b4bdcf..cb3d58ba79c 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0009.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0009.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0009" title: "Project Build Error PRJ0009" -ms.date: "11/04/2016" +description: "Learn more about: Project Build Error PRJ0009" +ms.date: 11/04/2016 f1_keywords: ["PRJ0009"] helpviewer_keywords: ["PRJ0009"] -ms.assetid: 89291778-cda4-495d-983f-ddcc06dfc98b --- # Project Build Error PRJ0009 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0013.md b/docs/error-messages/tool-errors/project-build-error-prj0013.md index 977365694ae..004cd1fa41c 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0013.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0013.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0013" title: "Project Build Error PRJ0013" -ms.date: "11/04/2016" +description: "Learn more about: Project Build Error PRJ0013" +ms.date: 11/04/2016 f1_keywords: ["PRJ0013"] helpviewer_keywords: ["PRJ0013"] -ms.assetid: 95e7bafd-63c8-4b2d-b778-f19cdf9ba36c --- # Project Build Error PRJ0013 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0014.md b/docs/error-messages/tool-errors/project-build-error-prj0014.md index fd220d03603..e2a69bf636d 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0014.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0014.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0014" title: "Project Build Error PRJ0014" -ms.date: "11/04/2016" +description: "Learn more about: Project Build Error PRJ0014" +ms.date: 11/04/2016 f1_keywords: ["PRJ0014"] helpviewer_keywords: ["PRJ0014"] -ms.assetid: b08c6df1-1df1-4573-9fca-49de6c5a0c17 --- # Project Build Error PRJ0014 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0015.md b/docs/error-messages/tool-errors/project-build-error-prj0015.md index 096f0c87df0..7cf85655166 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0015.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0015.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0015" title: "Project Build Error PRJ0015" -ms.date: "11/04/2016" +description: "Learn more about: Project Build Error PRJ0015" +ms.date: 11/04/2016 f1_keywords: ["PRJ0015"] helpviewer_keywords: ["PRJ0015"] -ms.assetid: 2096c8f1-e96c-49a4-a690-1cb893a8bf6f --- # Project Build Error PRJ0015 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0016.md b/docs/error-messages/tool-errors/project-build-error-prj0016.md index f92fcc13dcf..a4432287490 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0016.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0016.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0016" title: "Project Build Error PRJ0016" -ms.date: "11/04/2016" +description: "Learn more about: Project Build Error PRJ0016" +ms.date: 11/04/2016 f1_keywords: ["PRJ0016"] helpviewer_keywords: ["PRJ0016"] -ms.assetid: e9745336-883a-4c70-9c40-7753e02f0325 --- # Project Build Error PRJ0016 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0017.md b/docs/error-messages/tool-errors/project-build-error-prj0017.md index d00ba56d612..4f5d3e8d954 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0017.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0017.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0017" title: "Project Build Error PRJ0017" -ms.date: "11/04/2016" +description: "Learn more about: Project Build Error PRJ0017" +ms.date: 11/04/2016 f1_keywords: ["PRJ0017"] helpviewer_keywords: ["PRJ0017"] -ms.assetid: a192729f-bb10-486a-bfda-a7843fa259b2 --- # Project Build Error PRJ0017 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0019.md b/docs/error-messages/tool-errors/project-build-error-prj0019.md index d0fb68f6092..5780072ddec 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0019.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0019.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0019" title: "Project Build Error PRJ0019" -ms.date: "11/04/2016" +description: "Learn more about: Project Build Error PRJ0019" +ms.date: 11/04/2016 f1_keywords: ["PRJ0019"] helpviewer_keywords: ["PRJ0019"] -ms.assetid: 5390a62b-aacf-4bc8-b9d7-08f1e0233423 --- # Project Build Error PRJ0019 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0020.md b/docs/error-messages/tool-errors/project-build-error-prj0020.md index 30feb757ebd..2dbf934ea7d 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0020.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0020.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0020" title: "Project Build Error PRJ0020" -ms.date: "08/27/2018" +description: "Learn more about: Project Build Error PRJ0020" +ms.date: 08/27/2018 f1_keywords: ["PRJ0020"] helpviewer_keywords: ["PRJ0020"] -ms.assetid: 54bb8cd4-af7c-4d62-8125-3ab5ff5f2cc4 --- # Project Build Error PRJ0020 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0021.md b/docs/error-messages/tool-errors/project-build-error-prj0021.md index 14b45137f7f..ca4900c35c4 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0021.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0021.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0021" title: "Project Build Error PRJ0021" -ms.date: "08/27/2018" +description: "Learn more about: Project Build Error PRJ0021" +ms.date: 08/27/2018 f1_keywords: ["PRJ0021"] helpviewer_keywords: ["PRJ0021"] -ms.assetid: bcab794d-4a6d-4b4d-aaca-73676c0cec75 --- # Project Build Error PRJ0021 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0022.md b/docs/error-messages/tool-errors/project-build-error-prj0022.md index a72042988ea..2dd36de88b6 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0022.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0022.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0022" title: "Project Build Error PRJ0022" -ms.date: "08/27/2018" +description: "Learn more about: Project Build Error PRJ0022" +ms.date: 08/27/2018 f1_keywords: ["PRJ0022"] helpviewer_keywords: ["PRJ0022"] -ms.assetid: 691344a8-fc70-4aeb-9372-dde72f4588a4 --- # Project Build Error PRJ0022 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0023.md b/docs/error-messages/tool-errors/project-build-error-prj0023.md index 76f31dd63de..a0604f9e768 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0023.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0023.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0023" title: "Project Build Error PRJ0023" -ms.date: "08/27/2018" +description: "Learn more about: Project Build Error PRJ0023" +ms.date: 08/27/2018 f1_keywords: ["PRJ0023"] helpviewer_keywords: ["PRJ0023"] -ms.assetid: ed55a320-e7c8-489f-886e-825feee0d576 --- # Project Build Error PRJ0023 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0024.md b/docs/error-messages/tool-errors/project-build-error-prj0024.md index 6673bd9968d..0511d1e1f07 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0024.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0024.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0024" title: "Project Build Error PRJ0024" -ms.date: "08/27/2018" +description: "Learn more about: Project Build Error PRJ0024" +ms.date: 08/27/2018 f1_keywords: ["PRJ0024"] helpviewer_keywords: ["PRJ0024"] -ms.assetid: 8bde6368-6c1b-4e04-bc5e-3c6d0b8fa1d7 --- # Project Build Error PRJ0024 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0025.md b/docs/error-messages/tool-errors/project-build-error-prj0025.md index 9da11d804ee..44c275ba9e7 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0025.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0025.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0025" title: "Project Build Error PRJ0025" -ms.date: "08/27/2018" +description: "Learn more about: Project Build Error PRJ0025" +ms.date: 08/27/2018 f1_keywords: ["PRJ0025"] helpviewer_keywords: ["PRJ0025"] -ms.assetid: 57725c78-bc63-44f3-9667-2969b2d7c41d --- # Project Build Error PRJ0025 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0026.md b/docs/error-messages/tool-errors/project-build-error-prj0026.md index 01f60793977..3e31ffebaf3 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0026.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0026.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0026" title: "Project Build Error PRJ0026" -ms.date: "08/27/2018" +description: "Learn more about: Project Build Error PRJ0026" +ms.date: 08/27/2018 f1_keywords: ["PRJ0026"] helpviewer_keywords: ["PRJ0026"] -ms.assetid: c52bc9b5-8b22-4015-b477-8645ae56c489 --- # Project Build Error PRJ0026 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0027.md b/docs/error-messages/tool-errors/project-build-error-prj0027.md index ba78685c8a1..d6a3617908f 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0027.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0027.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0027" title: "Project Build Error PRJ0027" -ms.date: "11/04/2016" +description: "Learn more about: Project Build Error PRJ0027" +ms.date: 11/04/2016 f1_keywords: ["PRJ0027"] helpviewer_keywords: ["PRJ0027"] -ms.assetid: 85d73a78-4b9e-4553-9f5d-2d76c48a790a --- # Project Build Error PRJ0027 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0028.md b/docs/error-messages/tool-errors/project-build-error-prj0028.md index aca6ed3549b..a161469f323 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0028.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0028.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0028" title: "Project Build Error PRJ0028" -ms.date: "11/04/2016" +description: "Learn more about: Project Build Error PRJ0028" +ms.date: 11/04/2016 f1_keywords: ["PRJ0028"] helpviewer_keywords: ["PRJ0028"] -ms.assetid: 0a6e0da7-cb3d-40b6-81a6-6196a9c2526b --- # Project Build Error PRJ0028 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0030.md b/docs/error-messages/tool-errors/project-build-error-prj0030.md index 56d9e5340ee..0484a509b7f 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0030.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0030.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0030" title: "Project Build Error PRJ0030" -ms.date: "11/04/2016" +description: "Learn more about: Project Build Error PRJ0030" +ms.date: 11/04/2016 f1_keywords: ["PRJ0030"] helpviewer_keywords: ["PRJ0030"] -ms.assetid: c48b3727-e166-46e7-bcd7-3e5b2ac5c1d4 --- # Project Build Error PRJ0030 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0031.md b/docs/error-messages/tool-errors/project-build-error-prj0031.md index 27599412ef8..7584eabdb47 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0031.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0031.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0031" title: "Project Build Error PRJ0031" -ms.date: "11/04/2016" +description: "Learn more about: Project Build Error PRJ0031" +ms.date: 11/04/2016 f1_keywords: ["PRJ0031"] helpviewer_keywords: ["PRJ0031"] -ms.assetid: b42435c6-e570-4f8e-9ad5-12a7ea69ccb2 --- # Project Build Error PRJ0031 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0032.md b/docs/error-messages/tool-errors/project-build-error-prj0032.md index 5ec07057e40..d324d45d78c 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0032.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0032.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0032" title: "Project Build Error PRJ0032" -ms.date: "11/04/2016" +description: "Learn more about: Project Build Error PRJ0032" +ms.date: 11/04/2016 f1_keywords: ["PRJ0032"] helpviewer_keywords: ["PRJ0032"] -ms.assetid: bc6acbea-4041-4237-8b5a-f0434705d89f --- # Project Build Error PRJ0032 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0033.md b/docs/error-messages/tool-errors/project-build-error-prj0033.md index 1704e69a604..66b3196d043 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0033.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0033.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0033" title: "Project Build Error PRJ0033" -ms.date: "11/04/2016" +description: "Learn more about: Project Build Error PRJ0033" +ms.date: 11/04/2016 f1_keywords: ["PRJ0033"] helpviewer_keywords: ["PRJ0033"] -ms.assetid: 84d4a052-0586-4b78-9315-81c1e8386c1e --- # Project Build Error PRJ0033 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0034.md b/docs/error-messages/tool-errors/project-build-error-prj0034.md index 1551c6a5197..00b59e0ae24 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0034.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0034.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0034" title: "Project Build Error PRJ0034" -ms.date: "11/04/2016" +description: "Learn more about: Project Build Error PRJ0034" +ms.date: 11/04/2016 f1_keywords: ["PRJ0034"] helpviewer_keywords: ["PRJ0034"] -ms.assetid: 1da4a55b-231b-4476-8545-6997628fbc00 --- # Project Build Error PRJ0034 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0035.md b/docs/error-messages/tool-errors/project-build-error-prj0035.md index 3c2e46ab62d..0bfd95e4b65 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0035.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0035.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0035" title: "Project Build Error PRJ0035" -ms.date: "08/27/2018" +description: "Learn more about: Project Build Error PRJ0035" +ms.date: 08/27/2018 f1_keywords: ["PRJ0035"] helpviewer_keywords: ["PRJ0035"] -ms.assetid: 0667116d-338c-40a4-972c-da875f778cb5 --- # Project Build Error PRJ0035 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0036.md b/docs/error-messages/tool-errors/project-build-error-prj0036.md index 1da78f0d908..51622101d0b 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0036.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0036.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0036" title: "Project Build Error PRJ0036" -ms.date: "11/04/2016" +description: "Learn more about: Project Build Error PRJ0036" +ms.date: 11/04/2016 f1_keywords: ["PRJ0036"] helpviewer_keywords: ["PRJ0036"] -ms.assetid: ee215cd1-2d66-474d-9a63-b9096f1c4923 --- # Project Build Error PRJ0036 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0040.md b/docs/error-messages/tool-errors/project-build-error-prj0040.md index c3b1bc277bb..5007bb30d4d 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0040.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0040.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0040" title: "Project Build Error PRJ0040" -ms.date: "11/04/2016" +description: "Learn more about: Project Build Error PRJ0040" +ms.date: 11/04/2016 f1_keywords: ["PRJ0040"] helpviewer_keywords: ["PRJ0040"] -ms.assetid: 6549ac62-c87b-4edf-b541-32221abe97ec --- # Project Build Error PRJ0040 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0044.md b/docs/error-messages/tool-errors/project-build-error-prj0044.md index da32f43c1f1..1521e028e80 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0044.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0044.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0044" title: "Project Build Error PRJ0044" -ms.date: "11/04/2016" +description: "Learn more about: Project Build Error PRJ0044" +ms.date: 11/04/2016 f1_keywords: ["PRJ0044"] helpviewer_keywords: ["PRJ0044"] -ms.assetid: 5d78c45a-f9e9-4d2b-a3b6-5a5d1421ab84 --- # Project Build Error PRJ0044 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0046.md b/docs/error-messages/tool-errors/project-build-error-prj0046.md index 01281149b3a..85972cd2536 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0046.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0046.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0046" title: "Project Build Error PRJ0046" -ms.date: "11/04/2016" +description: "Learn more about: Project Build Error PRJ0046" +ms.date: 11/04/2016 f1_keywords: ["PRJ0046"] helpviewer_keywords: ["PRJ0046"] -ms.assetid: 59442319-4481-4b97-a4a5-16f52fc718e7 --- # Project Build Error PRJ0046 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0047.md b/docs/error-messages/tool-errors/project-build-error-prj0047.md index ef71f29d1a8..74eeb76498a 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0047.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0047.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0047" title: "Project Build Error PRJ0047" -ms.date: "11/04/2016" +description: "Learn more about: Project Build Error PRJ0047" +ms.date: 11/04/2016 f1_keywords: ["PRJ0047"] helpviewer_keywords: ["PRJ0047"] -ms.assetid: 7c79149d-4b7c-4a24-830e-904d92c1f0b4 --- # Project Build Error PRJ0047 diff --git a/docs/error-messages/tool-errors/project-build-error-prj0050.md b/docs/error-messages/tool-errors/project-build-error-prj0050.md index e7de4e0423d..842578f2ae6 100644 --- a/docs/error-messages/tool-errors/project-build-error-prj0050.md +++ b/docs/error-messages/tool-errors/project-build-error-prj0050.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Error PRJ0050" title: "Project Build Error PRJ0050" -ms.date: "11/04/2016" +description: "Learn more about: Project Build Error PRJ0050" +ms.date: 11/04/2016 f1_keywords: ["PRJ0050"] helpviewer_keywords: ["PRJ0050"] -ms.assetid: ceef3b37-0acf-4abd-ac62-aa830b4fa145 --- # Project Build Error PRJ0050 From 86e85c2af04c83a094c60859d0b3357ea8d269c9 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Fri, 12 Sep 2025 17:45:39 +0800 Subject: [PATCH 1809/2255] Update error message in C2735 error reference --- docs/error-messages/compiler-errors-2/compiler-error-c2735.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2735.md b/docs/error-messages/compiler-errors-2/compiler-error-c2735.md index 91def172aa9..329da9634b7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2735.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2735.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2735"] --- # Compiler Error C2735 -> 'keyword' keyword is not permitted in formal parameter type specifier +> '*keyword*' keyword is not permitted in formal parameter type specifier ## Remarks From 57144f5bb7d1a3401c4f26f5eac36ac242a3a1c5 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Fri, 12 Sep 2025 17:49:35 +0800 Subject: [PATCH 1810/2255] Fix defunct example in C2735 error reference --- docs/error-messages/compiler-errors-2/compiler-error-c2735.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2735.md b/docs/error-messages/compiler-errors-2/compiler-error-c2735.md index 329da9634b7..b9983716347 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2735.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2735.md @@ -19,5 +19,7 @@ The following example generates C2735: ```cpp // C2735.cpp -void f(inline int){} // C2735 +// compile with: /c + +void func(virtual int) {} // C2735 ``` From 5bdc1c781a1f2c2903a0ead3f3c00eafc6f5b402 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Fri, 12 Sep 2025 17:50:27 +0800 Subject: [PATCH 1811/2255] Update `ms.date` metadata in C2735 error reference --- docs/error-messages/compiler-errors-2/compiler-error-c2735.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2735.md b/docs/error-messages/compiler-errors-2/compiler-error-c2735.md index b9983716347..8f363b12b84 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2735.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2735.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C2735" description: "Learn more about: Compiler Error C2735" -ms.date: 11/04/2016 +ms.date: 09/12/2025 f1_keywords: ["C2735"] helpviewer_keywords: ["C2735"] --- From 8fedaa916ef4d7845eec65f541747f13d6da892d Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Fri, 12 Sep 2025 23:00:33 +0800 Subject: [PATCH 1812/2255] Add blockquotes for warning messages in range [PRJ0018, PRJ0049] --- .../error-messages/tool-errors/project-build-warning-prj0018.md | 2 +- .../error-messages/tool-errors/project-build-warning-prj0029.md | 2 +- .../error-messages/tool-errors/project-build-warning-prj0041.md | 2 +- .../error-messages/tool-errors/project-build-warning-prj0049.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/error-messages/tool-errors/project-build-warning-prj0018.md b/docs/error-messages/tool-errors/project-build-warning-prj0018.md index e02b3c1b322..2484e029cff 100644 --- a/docs/error-messages/tool-errors/project-build-warning-prj0018.md +++ b/docs/error-messages/tool-errors/project-build-warning-prj0018.md @@ -8,7 +8,7 @@ ms.assetid: 1a3d9e40-6a35-4a74-b6ba-8079f7a82217 --- # Project Build Warning PRJ0018 -The following environment variables were not found: +> The following environment variables were not found: An environment variable is not defined. This error lists the environment variables that were not defined. diff --git a/docs/error-messages/tool-errors/project-build-warning-prj0029.md b/docs/error-messages/tool-errors/project-build-warning-prj0029.md index cebf87396e8..682d2e3b3a6 100644 --- a/docs/error-messages/tool-errors/project-build-warning-prj0029.md +++ b/docs/error-messages/tool-errors/project-build-warning-prj0029.md @@ -8,7 +8,7 @@ ms.assetid: f02c09c6-09f3-4d44-8cd4-9a25336be1ea --- # Project Build Warning PRJ0029 -The 'Outputs' property for the project-level custom build step is not set. The custom build step will be skipped. +> The 'Outputs' property for the project-level custom build step is not set. The custom build step will be skipped. A custom build step was not executed because no output was specified. diff --git a/docs/error-messages/tool-errors/project-build-warning-prj0041.md b/docs/error-messages/tool-errors/project-build-warning-prj0041.md index 7241c771d4a..d9f4e3fb1b9 100644 --- a/docs/error-messages/tool-errors/project-build-warning-prj0041.md +++ b/docs/error-messages/tool-errors/project-build-warning-prj0041.md @@ -8,7 +8,7 @@ ms.assetid: dc9f4cf9-6bd5-4222-89e8-7802a59bb96b --- # Project Build Warning PRJ0041 -Cannot find missing dependency 'dependency' for file 'file'. Your project may still build, but may continue to appear out of date until this file is found. +> Cannot find missing dependency 'dependency' for file 'file'. Your project may still build, but may continue to appear out of date until this file is found. A file (resource file or .idl/.odl file, for example, contained an include statement that the project system could not resolve. diff --git a/docs/error-messages/tool-errors/project-build-warning-prj0049.md b/docs/error-messages/tool-errors/project-build-warning-prj0049.md index ee21f0e2b2a..b94d307392b 100644 --- a/docs/error-messages/tool-errors/project-build-warning-prj0049.md +++ b/docs/error-messages/tool-errors/project-build-warning-prj0049.md @@ -7,7 +7,7 @@ ms.assetid: 8b38afa1-e080-4efd-ae89-776cfd044413 --- # Project Build Warning PRJ0049 -Referenced target '\' requires .NET Framework \ and will fail to run on this project's target framework +> Referenced target '\' requires .NET Framework \ and will fail to run on this project's target framework Applications created by using Visual Studio 2008 can specify which version of the .NET Framework they should target. If you add a reference to an assembly or project that depends on a version of the .NET Framework that is later than the targeted version, you will get this warning at compile time. From c586ebb9dd90c6bdaaa6cf94fc7704e828c5b9d6 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Fri, 12 Sep 2025 23:01:52 +0800 Subject: [PATCH 1813/2255] Add "Remarks" headings for warning references in range [PRJ0018, PRJ0049] --- .../error-messages/tool-errors/project-build-warning-prj0018.md | 2 ++ .../error-messages/tool-errors/project-build-warning-prj0029.md | 2 ++ .../error-messages/tool-errors/project-build-warning-prj0041.md | 2 ++ .../error-messages/tool-errors/project-build-warning-prj0042.md | 2 ++ .../error-messages/tool-errors/project-build-warning-prj0049.md | 2 ++ 5 files changed, 10 insertions(+) diff --git a/docs/error-messages/tool-errors/project-build-warning-prj0018.md b/docs/error-messages/tool-errors/project-build-warning-prj0018.md index 2484e029cff..20a63acad9a 100644 --- a/docs/error-messages/tool-errors/project-build-warning-prj0018.md +++ b/docs/error-messages/tool-errors/project-build-warning-prj0018.md @@ -10,6 +10,8 @@ ms.assetid: 1a3d9e40-6a35-4a74-b6ba-8079f7a82217 > The following environment variables were not found: +## Remarks + An environment variable is not defined. This error lists the environment variables that were not defined. See [Macros for Custom Build Commands](../../build/reference/common-macros-for-build-commands-and-properties.md) for information on macros in the build process. diff --git a/docs/error-messages/tool-errors/project-build-warning-prj0029.md b/docs/error-messages/tool-errors/project-build-warning-prj0029.md index 682d2e3b3a6..5eed81946f8 100644 --- a/docs/error-messages/tool-errors/project-build-warning-prj0029.md +++ b/docs/error-messages/tool-errors/project-build-warning-prj0029.md @@ -10,6 +10,8 @@ ms.assetid: f02c09c6-09f3-4d44-8cd4-9a25336be1ea > The 'Outputs' property for the project-level custom build step is not set. The custom build step will be skipped. +## Remarks + A custom build step was not executed because no output was specified. To resolve this error, do one the following: diff --git a/docs/error-messages/tool-errors/project-build-warning-prj0041.md b/docs/error-messages/tool-errors/project-build-warning-prj0041.md index d9f4e3fb1b9..2366186e611 100644 --- a/docs/error-messages/tool-errors/project-build-warning-prj0041.md +++ b/docs/error-messages/tool-errors/project-build-warning-prj0041.md @@ -10,6 +10,8 @@ ms.assetid: dc9f4cf9-6bd5-4222-89e8-7802a59bb96b > Cannot find missing dependency 'dependency' for file 'file'. Your project may still build, but may continue to appear out of date until this file is found. +## Remarks + A file (resource file or .idl/.odl file, for example, contained an include statement that the project system could not resolve. Because the project system does not process preprocessor statements (#if, for example), the offending statement may not actually be part of the build. diff --git a/docs/error-messages/tool-errors/project-build-warning-prj0042.md b/docs/error-messages/tool-errors/project-build-warning-prj0042.md index 3951812d71c..4827a8768ee 100644 --- a/docs/error-messages/tool-errors/project-build-warning-prj0042.md +++ b/docs/error-messages/tool-errors/project-build-warning-prj0042.md @@ -10,6 +10,8 @@ ms.assetid: 682c9999-6f85-409f-b102-00c93243f74f > The 'Outputs' property for the custom build step for file '*file*' is not set. The custom build step will be skipped. +## Remarks + A custom build step was not executed because no output was specified. To resolve this error, do one the following: diff --git a/docs/error-messages/tool-errors/project-build-warning-prj0049.md b/docs/error-messages/tool-errors/project-build-warning-prj0049.md index b94d307392b..97f9b481b2b 100644 --- a/docs/error-messages/tool-errors/project-build-warning-prj0049.md +++ b/docs/error-messages/tool-errors/project-build-warning-prj0049.md @@ -9,6 +9,8 @@ ms.assetid: 8b38afa1-e080-4efd-ae89-776cfd044413 > Referenced target '\' requires .NET Framework \ and will fail to run on this project's target framework +## Remarks + Applications created by using Visual Studio 2008 can specify which version of the .NET Framework they should target. If you add a reference to an assembly or project that depends on a version of the .NET Framework that is later than the targeted version, you will get this warning at compile time. ### To correct this warning From eee2cc1e48d62d8a24858a8d98e4145f5ee57ebd Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Fri, 12 Sep 2025 23:05:00 +0800 Subject: [PATCH 1814/2255] Update metadata for warning references in range [PRJ0018, PRJ0049] --- .../tool-errors/project-build-warning-prj0018.md | 5 ++--- .../tool-errors/project-build-warning-prj0029.md | 5 ++--- .../tool-errors/project-build-warning-prj0041.md | 5 ++--- .../tool-errors/project-build-warning-prj0042.md | 5 ++--- .../tool-errors/project-build-warning-prj0049.md | 5 ++--- 5 files changed, 10 insertions(+), 15 deletions(-) diff --git a/docs/error-messages/tool-errors/project-build-warning-prj0018.md b/docs/error-messages/tool-errors/project-build-warning-prj0018.md index 20a63acad9a..a5ec336c93a 100644 --- a/docs/error-messages/tool-errors/project-build-warning-prj0018.md +++ b/docs/error-messages/tool-errors/project-build-warning-prj0018.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Warning PRJ0018" title: "Project Build Warning PRJ0018" -ms.date: "11/04/2016" +description: "Learn more about: Project Build Warning PRJ0018" +ms.date: 11/04/2016 f1_keywords: ["PRJ0018"] helpviewer_keywords: ["PRJ0018"] -ms.assetid: 1a3d9e40-6a35-4a74-b6ba-8079f7a82217 --- # Project Build Warning PRJ0018 diff --git a/docs/error-messages/tool-errors/project-build-warning-prj0029.md b/docs/error-messages/tool-errors/project-build-warning-prj0029.md index 5eed81946f8..78a22ac3bac 100644 --- a/docs/error-messages/tool-errors/project-build-warning-prj0029.md +++ b/docs/error-messages/tool-errors/project-build-warning-prj0029.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Warning PRJ0029" title: "Project Build Warning PRJ0029" -ms.date: "11/04/2016" +description: "Learn more about: Project Build Warning PRJ0029" +ms.date: 11/04/2016 f1_keywords: ["PRJ0029"] helpviewer_keywords: ["PRJ0029"] -ms.assetid: f02c09c6-09f3-4d44-8cd4-9a25336be1ea --- # Project Build Warning PRJ0029 diff --git a/docs/error-messages/tool-errors/project-build-warning-prj0041.md b/docs/error-messages/tool-errors/project-build-warning-prj0041.md index 2366186e611..4a500c4ce83 100644 --- a/docs/error-messages/tool-errors/project-build-warning-prj0041.md +++ b/docs/error-messages/tool-errors/project-build-warning-prj0041.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Warning PRJ0041" title: "Project Build Warning PRJ0041" -ms.date: "11/04/2016" +description: "Learn more about: Project Build Warning PRJ0041" +ms.date: 11/04/2016 f1_keywords: ["PRJ0041"] helpviewer_keywords: ["PRJ0041"] -ms.assetid: dc9f4cf9-6bd5-4222-89e8-7802a59bb96b --- # Project Build Warning PRJ0041 diff --git a/docs/error-messages/tool-errors/project-build-warning-prj0042.md b/docs/error-messages/tool-errors/project-build-warning-prj0042.md index 4827a8768ee..a85189952fa 100644 --- a/docs/error-messages/tool-errors/project-build-warning-prj0042.md +++ b/docs/error-messages/tool-errors/project-build-warning-prj0042.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Project Build Warning PRJ0042" title: "Project Build Warning PRJ0042" -ms.date: "08/27/2018" +description: "Learn more about: Project Build Warning PRJ0042" +ms.date: 08/27/2018 f1_keywords: ["PRJ0042"] helpviewer_keywords: ["PRJ0042"] -ms.assetid: 682c9999-6f85-409f-b102-00c93243f74f --- # Project Build Warning PRJ0042 diff --git a/docs/error-messages/tool-errors/project-build-warning-prj0049.md b/docs/error-messages/tool-errors/project-build-warning-prj0049.md index 97f9b481b2b..64d660a8f08 100644 --- a/docs/error-messages/tool-errors/project-build-warning-prj0049.md +++ b/docs/error-messages/tool-errors/project-build-warning-prj0049.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Project Build Warning PRJ0049" title: "Project Build Warning PRJ0049" -ms.date: "11/04/2016" +description: "Learn more about: Project Build Warning PRJ0049" +ms.date: 11/04/2016 helpviewer_keywords: ["PRJ0049"] -ms.assetid: 8b38afa1-e080-4efd-ae89-776cfd044413 --- # Project Build Warning PRJ0049 From e1d055995e777970d00b6cf9b3cb899880a9fe17 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Fri, 12 Sep 2025 23:07:29 +0800 Subject: [PATCH 1815/2255] Add missing `f1_keywords` metadata in PRJ0049 warning reference --- docs/error-messages/tool-errors/project-build-warning-prj0049.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/error-messages/tool-errors/project-build-warning-prj0049.md b/docs/error-messages/tool-errors/project-build-warning-prj0049.md index 64d660a8f08..0073df2310b 100644 --- a/docs/error-messages/tool-errors/project-build-warning-prj0049.md +++ b/docs/error-messages/tool-errors/project-build-warning-prj0049.md @@ -2,6 +2,7 @@ title: "Project Build Warning PRJ0049" description: "Learn more about: Project Build Warning PRJ0049" ms.date: 11/04/2016 +f1_keywords: ["PRJ0049"] helpviewer_keywords: ["PRJ0049"] --- # Project Build Warning PRJ0049 From e94dda38cb0ae1c3cc4e9f84b72ea843b46e2161 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 13 Sep 2025 22:16:29 +0800 Subject: [PATCH 1816/2255] Add blockquotes for error messages in range [D8016, D8049] --- docs/error-messages/tool-errors/command-line-error-d8016.md | 2 +- docs/error-messages/tool-errors/command-line-error-d8021.md | 2 +- docs/error-messages/tool-errors/command-line-error-d8022.md | 2 +- docs/error-messages/tool-errors/command-line-error-d8027.md | 2 +- docs/error-messages/tool-errors/command-line-error-d8036.md | 2 +- docs/error-messages/tool-errors/command-line-error-d8037.md | 2 +- docs/error-messages/tool-errors/command-line-error-d8045.md | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/error-messages/tool-errors/command-line-error-d8016.md b/docs/error-messages/tool-errors/command-line-error-d8016.md index e71b3d6cd07..c9d4ad5b508 100644 --- a/docs/error-messages/tool-errors/command-line-error-d8016.md +++ b/docs/error-messages/tool-errors/command-line-error-d8016.md @@ -8,7 +8,7 @@ ms.assetid: eec51312-7471-4f92-94b2-d517cafc8ef5 --- # Command-Line Error D8016 -'option1' and 'option2' command-line options are incompatible +> 'option1' and 'option2' command-line options are incompatible The command-line options cannot be specified together. diff --git a/docs/error-messages/tool-errors/command-line-error-d8021.md b/docs/error-messages/tool-errors/command-line-error-d8021.md index 5daada8340c..4623eb4eedc 100644 --- a/docs/error-messages/tool-errors/command-line-error-d8021.md +++ b/docs/error-messages/tool-errors/command-line-error-d8021.md @@ -8,6 +8,6 @@ ms.assetid: 8ec85441-d0d8-42d8-b777-1e4636ea9878 --- # Command-Line Error D8021 -invalid numeric argument 'number' +> invalid numeric argument 'number' A number greater than 65,534 was specified as a numeric argument. diff --git a/docs/error-messages/tool-errors/command-line-error-d8022.md b/docs/error-messages/tool-errors/command-line-error-d8022.md index 0fde42f9251..a96fc7f0267 100644 --- a/docs/error-messages/tool-errors/command-line-error-d8022.md +++ b/docs/error-messages/tool-errors/command-line-error-d8022.md @@ -8,7 +8,7 @@ ms.assetid: eb18ec34-d32d-4636-a852-abf2063e886b --- # Command-Line Error D8022 -cannot open 'messagefile' +> cannot open 'messagefile' The given file was not in the current directory or in a directory specified in the PATH environment variable. The message file contains a brief summary of compiler command-line syntax and options. diff --git a/docs/error-messages/tool-errors/command-line-error-d8027.md b/docs/error-messages/tool-errors/command-line-error-d8027.md index 9fb55846634..2c3ddadf48d 100644 --- a/docs/error-messages/tool-errors/command-line-error-d8027.md +++ b/docs/error-messages/tool-errors/command-line-error-d8027.md @@ -8,7 +8,7 @@ ms.assetid: f228220f-0c7f-49a6-a6e0-1f7bd4745aa6 --- # Command-Line Error D8027 -cannot execute 'component' +> cannot execute 'component' The compiler could not run the given compiler component or linker. diff --git a/docs/error-messages/tool-errors/command-line-error-d8036.md b/docs/error-messages/tool-errors/command-line-error-d8036.md index 86973440583..3e3a1c40d2d 100644 --- a/docs/error-messages/tool-errors/command-line-error-d8036.md +++ b/docs/error-messages/tool-errors/command-line-error-d8036.md @@ -8,7 +8,7 @@ ms.assetid: 420a8daf-1873-49cd-95ea-a603d77b9410 --- # Command-Line Error D8036 -'/option' not allowed with multiple source files +> '/option' not allowed with multiple source files These compiler options cannot be used with multiple source files: diff --git a/docs/error-messages/tool-errors/command-line-error-d8037.md b/docs/error-messages/tool-errors/command-line-error-d8037.md index d85b75168da..a1481b4c3b0 100644 --- a/docs/error-messages/tool-errors/command-line-error-d8037.md +++ b/docs/error-messages/tool-errors/command-line-error-d8037.md @@ -8,7 +8,7 @@ ms.assetid: acddaaa0-bd84-426f-a37b-8f680b379c9d --- # Command-Line Error D8037 -cannot create temporary il file; clean temp directory of old il files +> cannot create temporary il file; clean temp directory of old il files There is not enough space to create temporary compiler intermediate files. To remedy this error, remove any old MSIL files in the directory specified by the **TMP** environment variable. These files will be of the form _CL_hhhhhhhh.ss, where h represents a random hexadecimal digit and ss represents the type of IL file. Also, be sure to update your machine with the latest operating system patches. diff --git a/docs/error-messages/tool-errors/command-line-error-d8045.md b/docs/error-messages/tool-errors/command-line-error-d8045.md index fad1a656cf8..9eeb050064f 100644 --- a/docs/error-messages/tool-errors/command-line-error-d8045.md +++ b/docs/error-messages/tool-errors/command-line-error-d8045.md @@ -8,7 +8,7 @@ ms.assetid: 01c8808c-bac1-4b4d-8a90-b595f95e9318 --- # Command-Line Error D8045 -cannot compile C file 'file' with the /clr option +> cannot compile C file 'file' with the /clr option Only C++ source code files can be passed to a compilation that uses **/clr**. Use **/TP** to compile a .c file as a .cpp file; see [/Tc, /Tp, /TC, /TP (Specify Source File Type)](../../build/reference/tc-tp-tc-tp-specify-source-file-type.md) for more information. From 489e93eb6063f42dd97dea0d64ff9172ca92eff2 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 13 Sep 2025 22:18:21 +0800 Subject: [PATCH 1817/2255] Add "Remarks" headings for error references in range [D8016, D8049] --- docs/error-messages/tool-errors/command-line-error-d8016.md | 2 ++ docs/error-messages/tool-errors/command-line-error-d8021.md | 2 ++ docs/error-messages/tool-errors/command-line-error-d8022.md | 2 ++ docs/error-messages/tool-errors/command-line-error-d8027.md | 2 ++ docs/error-messages/tool-errors/command-line-error-d8036.md | 2 ++ docs/error-messages/tool-errors/command-line-error-d8037.md | 2 ++ docs/error-messages/tool-errors/command-line-error-d8045.md | 2 ++ docs/error-messages/tool-errors/command-line-error-d8048.md | 4 ++-- docs/error-messages/tool-errors/command-line-error-d8049.md | 4 ++-- 9 files changed, 18 insertions(+), 4 deletions(-) diff --git a/docs/error-messages/tool-errors/command-line-error-d8016.md b/docs/error-messages/tool-errors/command-line-error-d8016.md index c9d4ad5b508..1fe996958e8 100644 --- a/docs/error-messages/tool-errors/command-line-error-d8016.md +++ b/docs/error-messages/tool-errors/command-line-error-d8016.md @@ -10,6 +10,8 @@ ms.assetid: eec51312-7471-4f92-94b2-d517cafc8ef5 > 'option1' and 'option2' command-line options are incompatible +## Remarks + The command-line options cannot be specified together. Check environment variables, such as CL, for option specifications. diff --git a/docs/error-messages/tool-errors/command-line-error-d8021.md b/docs/error-messages/tool-errors/command-line-error-d8021.md index 4623eb4eedc..2e0b943bf5e 100644 --- a/docs/error-messages/tool-errors/command-line-error-d8021.md +++ b/docs/error-messages/tool-errors/command-line-error-d8021.md @@ -10,4 +10,6 @@ ms.assetid: 8ec85441-d0d8-42d8-b777-1e4636ea9878 > invalid numeric argument 'number' +## Remarks + A number greater than 65,534 was specified as a numeric argument. diff --git a/docs/error-messages/tool-errors/command-line-error-d8022.md b/docs/error-messages/tool-errors/command-line-error-d8022.md index a96fc7f0267..e4528f28403 100644 --- a/docs/error-messages/tool-errors/command-line-error-d8022.md +++ b/docs/error-messages/tool-errors/command-line-error-d8022.md @@ -10,6 +10,8 @@ ms.assetid: eb18ec34-d32d-4636-a852-abf2063e886b > cannot open 'messagefile' +## Remarks + The given file was not in the current directory or in a directory specified in the PATH environment variable. The message file contains a brief summary of compiler command-line syntax and options. Move this file to the current directory or a directory in the current path. If this file cannot be found, run the SETUP program to copy it from the distribution disks. diff --git a/docs/error-messages/tool-errors/command-line-error-d8027.md b/docs/error-messages/tool-errors/command-line-error-d8027.md index 2c3ddadf48d..a59a6e4acb4 100644 --- a/docs/error-messages/tool-errors/command-line-error-d8027.md +++ b/docs/error-messages/tool-errors/command-line-error-d8027.md @@ -10,6 +10,8 @@ ms.assetid: f228220f-0c7f-49a6-a6e0-1f7bd4745aa6 > cannot execute 'component' +## Remarks + The compiler could not run the given compiler component or linker. ### To fix by checking the following possible causes diff --git a/docs/error-messages/tool-errors/command-line-error-d8036.md b/docs/error-messages/tool-errors/command-line-error-d8036.md index 3e3a1c40d2d..3fc557944f4 100644 --- a/docs/error-messages/tool-errors/command-line-error-d8036.md +++ b/docs/error-messages/tool-errors/command-line-error-d8036.md @@ -10,6 +10,8 @@ ms.assetid: 420a8daf-1873-49cd-95ea-a603d77b9410 > '/option' not allowed with multiple source files +## Remarks + These compiler options cannot be used with multiple source files: - Name assembly file listing (/Fa) diff --git a/docs/error-messages/tool-errors/command-line-error-d8037.md b/docs/error-messages/tool-errors/command-line-error-d8037.md index a1481b4c3b0..48cb2eeff43 100644 --- a/docs/error-messages/tool-errors/command-line-error-d8037.md +++ b/docs/error-messages/tool-errors/command-line-error-d8037.md @@ -10,6 +10,8 @@ ms.assetid: acddaaa0-bd84-426f-a37b-8f680b379c9d > cannot create temporary il file; clean temp directory of old il files +## Remarks + There is not enough space to create temporary compiler intermediate files. To remedy this error, remove any old MSIL files in the directory specified by the **TMP** environment variable. These files will be of the form _CL_hhhhhhhh.ss, where h represents a random hexadecimal digit and ss represents the type of IL file. Also, be sure to update your machine with the latest operating system patches. ## See also diff --git a/docs/error-messages/tool-errors/command-line-error-d8045.md b/docs/error-messages/tool-errors/command-line-error-d8045.md index 9eeb050064f..03fda0dd403 100644 --- a/docs/error-messages/tool-errors/command-line-error-d8045.md +++ b/docs/error-messages/tool-errors/command-line-error-d8045.md @@ -10,6 +10,8 @@ ms.assetid: 01c8808c-bac1-4b4d-8a90-b595f95e9318 > cannot compile C file 'file' with the /clr option +## Remarks + Only C++ source code files can be passed to a compilation that uses **/clr**. Use **/TP** to compile a .c file as a .cpp file; see [/Tc, /Tp, /TC, /TP (Specify Source File Type)](../../build/reference/tc-tp-tc-tp-specify-source-file-type.md) for more information. For more information, see [/clr (Common Language Runtime Compilation)](../../build/reference/clr-common-language-runtime-compilation.md). diff --git a/docs/error-messages/tool-errors/command-line-error-d8048.md b/docs/error-messages/tool-errors/command-line-error-d8048.md index 65fa5514cab..9f126105634 100644 --- a/docs/error-messages/tool-errors/command-line-error-d8048.md +++ b/docs/error-messages/tool-errors/command-line-error-d8048.md @@ -9,10 +9,10 @@ helpviewer_keywords: ["D8048"] > cannot compile C file '*file-name*' with /ZW option -Only C++ source code files can be passed to the compiler when you use the [`/ZW` (Windows Runtime compilation)](../../build/reference/zw-windows-runtime-compilation.md) compiler option. - ## Remarks +Only C++ source code files can be passed to the compiler when you use the [`/ZW` (Windows Runtime compilation)](../../build/reference/zw-windows-runtime-compilation.md) compiler option. + By default, all files in a C++ Universal Windows platform (UWP) project are compiled by using the **`/ZW`** compiler option. The **`/ZW`** option enables the Windows Runtime compiler extensions, or C++/CX. Unfortunately, **`/ZW`** doesn't work on C source files. You can disable C++/CX compilation selectively for C files in Visual Studio projects. Select your C file in Solution Explorer, then right-click to choose **Properties** from the shortcut menu. In the **Property Pages** dialog, select the **Configuration Properties** > **C/C++** -> **General** property page. Set the **Consume Windows Runtime Extension** property to *`No`*. Choose **OK** to save your changes. diff --git a/docs/error-messages/tool-errors/command-line-error-d8049.md b/docs/error-messages/tool-errors/command-line-error-d8049.md index ec848363813..a4322d5ba1b 100644 --- a/docs/error-messages/tool-errors/command-line-error-d8049.md +++ b/docs/error-messages/tool-errors/command-line-error-d8049.md @@ -9,10 +9,10 @@ helpviewer_keywords: ["D8049"] > cannot execute '*compiler-component*': command line is too long to fit in debug record -An internal length limit on debug record include paths was exceeded. - ## Remarks +An internal length limit on debug record include paths was exceeded. + When the compiler creates debug records in an object file, it uses the full path for each included file. Absolute paths are recorded as specified. For relative include paths, the debug record prepends the build's current working directory to the relative path. If your build runs in a relatively deep path, the corresponding path records get longer. The total length of too many long paths can exceed the internal limits of the compiler. ## To resolve this issue From da0ebf9968271ef6dcac8562326f0a99cfe1a198 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 13 Sep 2025 22:20:37 +0800 Subject: [PATCH 1818/2255] Update metadata for error references in range [D8016, D8049] --- docs/error-messages/tool-errors/command-line-error-d8016.md | 5 ++--- docs/error-messages/tool-errors/command-line-error-d8021.md | 5 ++--- docs/error-messages/tool-errors/command-line-error-d8022.md | 5 ++--- docs/error-messages/tool-errors/command-line-error-d8027.md | 5 ++--- docs/error-messages/tool-errors/command-line-error-d8036.md | 5 ++--- docs/error-messages/tool-errors/command-line-error-d8037.md | 5 ++--- docs/error-messages/tool-errors/command-line-error-d8045.md | 5 ++--- docs/error-messages/tool-errors/command-line-error-d8048.md | 2 +- docs/error-messages/tool-errors/command-line-error-d8049.md | 2 +- 9 files changed, 16 insertions(+), 23 deletions(-) diff --git a/docs/error-messages/tool-errors/command-line-error-d8016.md b/docs/error-messages/tool-errors/command-line-error-d8016.md index 1fe996958e8..6378c6f5ad7 100644 --- a/docs/error-messages/tool-errors/command-line-error-d8016.md +++ b/docs/error-messages/tool-errors/command-line-error-d8016.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Command-Line Error D8016" title: "Command-Line Error D8016" -ms.date: "11/04/2016" +description: "Learn more about: Command-Line Error D8016" +ms.date: 11/04/2016 f1_keywords: ["D8016"] helpviewer_keywords: ["D8016"] -ms.assetid: eec51312-7471-4f92-94b2-d517cafc8ef5 --- # Command-Line Error D8016 diff --git a/docs/error-messages/tool-errors/command-line-error-d8021.md b/docs/error-messages/tool-errors/command-line-error-d8021.md index 2e0b943bf5e..67f23270441 100644 --- a/docs/error-messages/tool-errors/command-line-error-d8021.md +++ b/docs/error-messages/tool-errors/command-line-error-d8021.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Command-Line Error D8021" title: "Command-Line Error D8021" -ms.date: "11/04/2016" +description: "Learn more about: Command-Line Error D8021" +ms.date: 11/04/2016 f1_keywords: ["D8021"] helpviewer_keywords: ["D8021"] -ms.assetid: 8ec85441-d0d8-42d8-b777-1e4636ea9878 --- # Command-Line Error D8021 diff --git a/docs/error-messages/tool-errors/command-line-error-d8022.md b/docs/error-messages/tool-errors/command-line-error-d8022.md index e4528f28403..430d8c3d87a 100644 --- a/docs/error-messages/tool-errors/command-line-error-d8022.md +++ b/docs/error-messages/tool-errors/command-line-error-d8022.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Command-Line Error D8022" title: "Command-Line Error D8022" -ms.date: "11/04/2016" +description: "Learn more about: Command-Line Error D8022" +ms.date: 11/04/2016 f1_keywords: ["D8022"] helpviewer_keywords: ["D8022"] -ms.assetid: eb18ec34-d32d-4636-a852-abf2063e886b --- # Command-Line Error D8022 diff --git a/docs/error-messages/tool-errors/command-line-error-d8027.md b/docs/error-messages/tool-errors/command-line-error-d8027.md index a59a6e4acb4..886b134653b 100644 --- a/docs/error-messages/tool-errors/command-line-error-d8027.md +++ b/docs/error-messages/tool-errors/command-line-error-d8027.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Command-Line Error D8027" title: "Command-Line Error D8027" -ms.date: "11/04/2016" +description: "Learn more about: Command-Line Error D8027" +ms.date: 11/04/2016 f1_keywords: ["D8027"] helpviewer_keywords: ["D8027"] -ms.assetid: f228220f-0c7f-49a6-a6e0-1f7bd4745aa6 --- # Command-Line Error D8027 diff --git a/docs/error-messages/tool-errors/command-line-error-d8036.md b/docs/error-messages/tool-errors/command-line-error-d8036.md index 3fc557944f4..986134ce3d3 100644 --- a/docs/error-messages/tool-errors/command-line-error-d8036.md +++ b/docs/error-messages/tool-errors/command-line-error-d8036.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Command-Line Error D8036" title: "Command-Line Error D8036" -ms.date: "11/04/2016" +description: "Learn more about: Command-Line Error D8036" +ms.date: 11/04/2016 f1_keywords: ["D8036"] helpviewer_keywords: ["D8036"] -ms.assetid: 420a8daf-1873-49cd-95ea-a603d77b9410 --- # Command-Line Error D8036 diff --git a/docs/error-messages/tool-errors/command-line-error-d8037.md b/docs/error-messages/tool-errors/command-line-error-d8037.md index 48cb2eeff43..be3f25d3a85 100644 --- a/docs/error-messages/tool-errors/command-line-error-d8037.md +++ b/docs/error-messages/tool-errors/command-line-error-d8037.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Command-Line Error D8037" title: "Command-Line Error D8037" -ms.date: "11/04/2016" +description: "Learn more about: Command-Line Error D8037" +ms.date: 11/04/2016 f1_keywords: ["D8037"] helpviewer_keywords: ["D8037"] -ms.assetid: acddaaa0-bd84-426f-a37b-8f680b379c9d --- # Command-Line Error D8037 diff --git a/docs/error-messages/tool-errors/command-line-error-d8045.md b/docs/error-messages/tool-errors/command-line-error-d8045.md index 03fda0dd403..0297b0dbfcc 100644 --- a/docs/error-messages/tool-errors/command-line-error-d8045.md +++ b/docs/error-messages/tool-errors/command-line-error-d8045.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Command-Line Error D8045" title: "Command-Line Error D8045" -ms.date: "11/04/2016" +description: "Learn more about: Command-Line Error D8045" +ms.date: 11/04/2016 f1_keywords: ["D8045"] helpviewer_keywords: ["D8045"] -ms.assetid: 01c8808c-bac1-4b4d-8a90-b595f95e9318 --- # Command-Line Error D8045 diff --git a/docs/error-messages/tool-errors/command-line-error-d8048.md b/docs/error-messages/tool-errors/command-line-error-d8048.md index 9f126105634..39dcd944558 100644 --- a/docs/error-messages/tool-errors/command-line-error-d8048.md +++ b/docs/error-messages/tool-errors/command-line-error-d8048.md @@ -1,6 +1,6 @@ --- -description: "Learn about causes and solutions for command-line error D8048" title: "Command-Line Error D8048" +description: "Learn about causes and solutions for command-line error D8048" ms.date: 04/18/2021 f1_keywords: ["D8048"] helpviewer_keywords: ["D8048"] diff --git a/docs/error-messages/tool-errors/command-line-error-d8049.md b/docs/error-messages/tool-errors/command-line-error-d8049.md index a4322d5ba1b..24c359f7583 100644 --- a/docs/error-messages/tool-errors/command-line-error-d8049.md +++ b/docs/error-messages/tool-errors/command-line-error-d8049.md @@ -1,6 +1,6 @@ --- -description: "Learn about the cause and solutions for command-line error D8049" title: "Command-Line Error D8049" +description: "Learn about the cause and solutions for command-line error D8049" ms.date: 10/28/2021 f1_keywords: ["D8049"] helpviewer_keywords: ["D8049"] From d07aceae9da213e392820e89a1dc75df90a4f644 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 13 Sep 2025 22:26:50 +0800 Subject: [PATCH 1819/2255] Add blockquotes for warning messages in range [D9024, D9043] --- docs/error-messages/tool-errors/command-line-warning-d9024.md | 2 +- docs/error-messages/tool-errors/command-line-warning-d9025.md | 2 +- docs/error-messages/tool-errors/command-line-warning-d9027.md | 2 +- docs/error-messages/tool-errors/command-line-warning-d9043.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/error-messages/tool-errors/command-line-warning-d9024.md b/docs/error-messages/tool-errors/command-line-warning-d9024.md index e161eb89438..2018e8843c3 100644 --- a/docs/error-messages/tool-errors/command-line-warning-d9024.md +++ b/docs/error-messages/tool-errors/command-line-warning-d9024.md @@ -8,7 +8,7 @@ ms.assetid: daf4896d-223d-4af0-9b6d-89109cf3d1bb --- # Command-Line Warning D9024 -unrecognized source file type 'filename', object file assumed +> unrecognized source file type 'filename', object file assumed The extension of the specified file was not recognized. The file was assumed to be an object file and was passed to the linker. diff --git a/docs/error-messages/tool-errors/command-line-warning-d9025.md b/docs/error-messages/tool-errors/command-line-warning-d9025.md index 156400af5db..ecd77b9feef 100644 --- a/docs/error-messages/tool-errors/command-line-warning-d9025.md +++ b/docs/error-messages/tool-errors/command-line-warning-d9025.md @@ -8,7 +8,7 @@ ms.assetid: 6edff72c-1508-46c2-99f4-0e4b3c5e60c9 --- # Command-Line Warning D9025 -overriding 'option1' with 'option2' +> overriding 'option1' with 'option2' The *option1* option was specified but was then overridden by *option2*. The *option2* option was used. diff --git a/docs/error-messages/tool-errors/command-line-warning-d9027.md b/docs/error-messages/tool-errors/command-line-warning-d9027.md index a50befaedea..718599bd182 100644 --- a/docs/error-messages/tool-errors/command-line-warning-d9027.md +++ b/docs/error-messages/tool-errors/command-line-warning-d9027.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["D9027"] --- # Command-Line Warning D9027 -source file '\' ignored +> source file '\' ignored CL.exe ignored the input source file. diff --git a/docs/error-messages/tool-errors/command-line-warning-d9043.md b/docs/error-messages/tool-errors/command-line-warning-d9043.md index 44bc3eb9b8f..664bfc3b802 100644 --- a/docs/error-messages/tool-errors/command-line-warning-d9043.md +++ b/docs/error-messages/tool-errors/command-line-warning-d9043.md @@ -8,7 +8,7 @@ ms.assetid: 9263e28d-217b-414c-bfb6-86efd3c27a77 --- # Command-Line Warning D9043 -invalid value 'warning_level' for 'compiler_option'; assuming '4999'; Code Analysis warnings are not associated with warning levels +> invalid value 'warning_level' for 'compiler_option'; assuming '4999'; Code Analysis warnings are not associated with warning levels ## Example From 7d86ccfce17686ba8ff75898e6022b83412820e5 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 13 Sep 2025 22:30:54 +0800 Subject: [PATCH 1820/2255] Add "Remarks" and "Example" headings for warning references in range [D9024, D9043] --- .../tool-errors/command-line-warning-d9024.md | 2 ++ .../tool-errors/command-line-warning-d9025.md | 2 ++ .../tool-errors/command-line-warning-d9026.md | 4 ++++ .../tool-errors/command-line-warning-d9027.md | 8 +++++++- .../tool-errors/command-line-warning-d9028.md | 2 ++ .../tool-errors/command-line-warning-d9040.md | 2 ++ .../tool-errors/command-line-warning-d9041.md | 2 ++ 7 files changed, 21 insertions(+), 1 deletion(-) diff --git a/docs/error-messages/tool-errors/command-line-warning-d9024.md b/docs/error-messages/tool-errors/command-line-warning-d9024.md index 2018e8843c3..c24383473b1 100644 --- a/docs/error-messages/tool-errors/command-line-warning-d9024.md +++ b/docs/error-messages/tool-errors/command-line-warning-d9024.md @@ -10,6 +10,8 @@ ms.assetid: daf4896d-223d-4af0-9b6d-89109cf3d1bb > unrecognized source file type 'filename', object file assumed +## Remarks + The extension of the specified file was not recognized. The file was assumed to be an object file and was passed to the linker. The following extensions are recognized: diff --git a/docs/error-messages/tool-errors/command-line-warning-d9025.md b/docs/error-messages/tool-errors/command-line-warning-d9025.md index ecd77b9feef..3d4789046e7 100644 --- a/docs/error-messages/tool-errors/command-line-warning-d9025.md +++ b/docs/error-messages/tool-errors/command-line-warning-d9025.md @@ -10,6 +10,8 @@ ms.assetid: 6edff72c-1508-46c2-99f4-0e4b3c5e60c9 > overriding 'option1' with 'option2' +## Remarks + The *option1* option was specified but was then overridden by *option2*. The *option2* option was used. If two options specify contradictory or incompatible directives, the directive specified or implied in the option farthest to the right on the command line is used. diff --git a/docs/error-messages/tool-errors/command-line-warning-d9026.md b/docs/error-messages/tool-errors/command-line-warning-d9026.md index 1b28c6a30e2..92dc69cb428 100644 --- a/docs/error-messages/tool-errors/command-line-warning-d9026.md +++ b/docs/error-messages/tool-errors/command-line-warning-d9026.md @@ -10,8 +10,12 @@ ms.assetid: 149fe5e3-5329-4be8-b871-49dfd423aaba > options apply to entire command line +## Remarks + A global option was specified after one or more filenames were specified. The option was also applied to the files that preceded it. +## Example + For example, consider this command line: `CL verdi.c /O2 puccini.c` diff --git a/docs/error-messages/tool-errors/command-line-warning-d9027.md b/docs/error-messages/tool-errors/command-line-warning-d9027.md index 718599bd182..89064f31aa7 100644 --- a/docs/error-messages/tool-errors/command-line-warning-d9027.md +++ b/docs/error-messages/tool-errors/command-line-warning-d9027.md @@ -9,9 +9,15 @@ helpviewer_keywords: ["D9027"] > source file '\' ignored +## Remarks + CL.exe ignored the input source file. -This warning can be caused by a space between the /Fo option and an output filename on a command line with the /c option. For example: +This warning can be caused by a space between the /Fo option and an output filename on a command line with the /c option. + +## Example + +For example: ```cmd cl /c /Fo output.obj input.c diff --git a/docs/error-messages/tool-errors/command-line-warning-d9028.md b/docs/error-messages/tool-errors/command-line-warning-d9028.md index 0c538f76ea5..8511f7691ff 100644 --- a/docs/error-messages/tool-errors/command-line-warning-d9028.md +++ b/docs/error-messages/tool-errors/command-line-warning-d9028.md @@ -10,6 +10,8 @@ ms.assetid: 03852b51-fa59-4114-ab1f-2af0509119af > minimal rebuild failure, reverting to normal build +## Remarks + The project .idb file is corrupt. Delete the file and rebuild. For more information on minimal rebuilds and the .idb file, see the deprecated [/Gm compiler option](../../build/reference/gm-enable-minimal-rebuild.md). diff --git a/docs/error-messages/tool-errors/command-line-warning-d9040.md b/docs/error-messages/tool-errors/command-line-warning-d9040.md index 3f9c925fb41..c18ecb3f41d 100644 --- a/docs/error-messages/tool-errors/command-line-warning-d9040.md +++ b/docs/error-messages/tool-errors/command-line-warning-d9040.md @@ -10,6 +10,8 @@ ms.assetid: 415e7f04-c1bd-4ac1-924a-03efa4645140 > ignoring option '/analyze'; Code Analysis warnings are not available in this edition of the compiler +## Remarks + The **`/analyze`** command line option is not available in all editions of Visual Studio. To remedy this warning, either switch to a supported edition of Visual Studio, or remove the command line option. ## See also diff --git a/docs/error-messages/tool-errors/command-line-warning-d9041.md b/docs/error-messages/tool-errors/command-line-warning-d9041.md index b477d13c8c7..15acde80990 100644 --- a/docs/error-messages/tool-errors/command-line-warning-d9041.md +++ b/docs/error-messages/tool-errors/command-line-warning-d9041.md @@ -10,6 +10,8 @@ ms.assetid: ada8815f-4246-4e25-b57d-a7f16fa107cc > invalid value '*option-value*' for '/*option-name*'; assuming '*assumed-value*'; add '/analyze' to command-line options when specifying this warning +## Remarks + A Code Analysis warning number was added to the **`/wd`**, **`/we`**, **`/wo`**, or **`/wl`** command line option without also specifying the **`/analyze`** command line option. To remedy this error, either add the **`/analyze`** command line option, or remove the invalid warning number from the appropriate **`/w`** command line option. ## Example From b7aa19946ccbe8aa73f366b7d2bf8c6619e8856f Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 13 Sep 2025 22:31:25 +0800 Subject: [PATCH 1821/2255] Replace term "sample" with "example" for warning references in range [D9024, D9043] --- docs/error-messages/tool-errors/command-line-warning-d9043.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/tool-errors/command-line-warning-d9043.md b/docs/error-messages/tool-errors/command-line-warning-d9043.md index 664bfc3b802..df407747d65 100644 --- a/docs/error-messages/tool-errors/command-line-warning-d9043.md +++ b/docs/error-messages/tool-errors/command-line-warning-d9043.md @@ -12,7 +12,7 @@ ms.assetid: 9263e28d-217b-414c-bfb6-86efd3c27a77 ## Example -The following sample generates C9043. +The following example generates C9043. ```cpp // D9043.cpp From 1cff297dace1339dc534aa2fd1d5361a8e73cf43 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 13 Sep 2025 22:33:39 +0800 Subject: [PATCH 1822/2255] Update metadata for warning references in range [D9024, D9043] --- .../error-messages/tool-errors/command-line-warning-d9024.md | 5 ++--- .../error-messages/tool-errors/command-line-warning-d9025.md | 5 ++--- .../error-messages/tool-errors/command-line-warning-d9026.md | 3 +-- .../error-messages/tool-errors/command-line-warning-d9028.md | 5 ++--- .../error-messages/tool-errors/command-line-warning-d9035.md | 5 ++--- .../error-messages/tool-errors/command-line-warning-d9036.md | 5 ++--- .../error-messages/tool-errors/command-line-warning-d9040.md | 5 ++--- .../error-messages/tool-errors/command-line-warning-d9041.md | 5 ++--- .../error-messages/tool-errors/command-line-warning-d9043.md | 5 ++--- 9 files changed, 17 insertions(+), 26 deletions(-) diff --git a/docs/error-messages/tool-errors/command-line-warning-d9024.md b/docs/error-messages/tool-errors/command-line-warning-d9024.md index c24383473b1..5af7073689e 100644 --- a/docs/error-messages/tool-errors/command-line-warning-d9024.md +++ b/docs/error-messages/tool-errors/command-line-warning-d9024.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Command-Line Warning D9024" title: "Command-Line Warning D9024" -ms.date: "11/04/2016" +description: "Learn more about: Command-Line Warning D9024" +ms.date: 11/04/2016 f1_keywords: ["D9024"] helpviewer_keywords: ["D9024"] -ms.assetid: daf4896d-223d-4af0-9b6d-89109cf3d1bb --- # Command-Line Warning D9024 diff --git a/docs/error-messages/tool-errors/command-line-warning-d9025.md b/docs/error-messages/tool-errors/command-line-warning-d9025.md index 3d4789046e7..43d872d40fc 100644 --- a/docs/error-messages/tool-errors/command-line-warning-d9025.md +++ b/docs/error-messages/tool-errors/command-line-warning-d9025.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Command-Line Warning D9025" title: "Command-Line Warning D9025" -ms.date: "11/04/2016" +description: "Learn more about: Command-Line Warning D9025" +ms.date: 11/04/2016 f1_keywords: ["D9025"] helpviewer_keywords: ["D9025"] -ms.assetid: 6edff72c-1508-46c2-99f4-0e4b3c5e60c9 --- # Command-Line Warning D9025 diff --git a/docs/error-messages/tool-errors/command-line-warning-d9026.md b/docs/error-messages/tool-errors/command-line-warning-d9026.md index 92dc69cb428..ec76878b14d 100644 --- a/docs/error-messages/tool-errors/command-line-warning-d9026.md +++ b/docs/error-messages/tool-errors/command-line-warning-d9026.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Command-line warning D9026" title: "Command-line warning D9026" +description: "Learn more about: Command-line warning D9026" ms.date: 12/09/2021 f1_keywords: ["D9026"] helpviewer_keywords: ["D9026"] -ms.assetid: 149fe5e3-5329-4be8-b871-49dfd423aaba --- # Command-line warning D9026 diff --git a/docs/error-messages/tool-errors/command-line-warning-d9028.md b/docs/error-messages/tool-errors/command-line-warning-d9028.md index 8511f7691ff..35b38a28518 100644 --- a/docs/error-messages/tool-errors/command-line-warning-d9028.md +++ b/docs/error-messages/tool-errors/command-line-warning-d9028.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Command-Line Warning D9028" title: "Command-Line Warning D9028" -ms.date: "04/08/2019" +description: "Learn more about: Command-Line Warning D9028" +ms.date: 04/08/2019 f1_keywords: ["D9028"] helpviewer_keywords: ["D9028"] -ms.assetid: 03852b51-fa59-4114-ab1f-2af0509119af --- # Command-Line Warning D9028 diff --git a/docs/error-messages/tool-errors/command-line-warning-d9035.md b/docs/error-messages/tool-errors/command-line-warning-d9035.md index d7d3262869e..eb8cf111ac6 100644 --- a/docs/error-messages/tool-errors/command-line-warning-d9035.md +++ b/docs/error-messages/tool-errors/command-line-warning-d9035.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Command-Line Warning D9035" title: "Command-Line Warning D9035" -ms.date: "12/10/2018" +description: "Learn more about: Command-Line Warning D9035" +ms.date: 12/10/2018 f1_keywords: ["D9035"] helpviewer_keywords: ["D9035"] -ms.assetid: 6254f933-e37a-45ba-b860-1a870d1bc8e8 --- # Command-Line Warning D9035 diff --git a/docs/error-messages/tool-errors/command-line-warning-d9036.md b/docs/error-messages/tool-errors/command-line-warning-d9036.md index d26818460c1..6f1363ee3b9 100644 --- a/docs/error-messages/tool-errors/command-line-warning-d9036.md +++ b/docs/error-messages/tool-errors/command-line-warning-d9036.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Command-Line Warning D9036" title: "Command-Line Warning D9036" -ms.date: "12/10/2018" +description: "Learn more about: Command-Line Warning D9036" +ms.date: 12/10/2018 f1_keywords: ["D9036"] helpviewer_keywords: ["D9036"] -ms.assetid: 68276e84-8d4e-4d4a-a9db-2874c81dfe66 --- # Command-Line Warning D9036 diff --git a/docs/error-messages/tool-errors/command-line-warning-d9040.md b/docs/error-messages/tool-errors/command-line-warning-d9040.md index c18ecb3f41d..900922a82cd 100644 --- a/docs/error-messages/tool-errors/command-line-warning-d9040.md +++ b/docs/error-messages/tool-errors/command-line-warning-d9040.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Command-Line Warning D9040" title: "Command-Line Warning D9040" -ms.date: "11/04/2016" +description: "Learn more about: Command-Line Warning D9040" +ms.date: 11/04/2016 f1_keywords: ["D9040"] helpviewer_keywords: ["D9040"] -ms.assetid: 415e7f04-c1bd-4ac1-924a-03efa4645140 --- # Command-Line Warning D9040 diff --git a/docs/error-messages/tool-errors/command-line-warning-d9041.md b/docs/error-messages/tool-errors/command-line-warning-d9041.md index 15acde80990..80f0bb4e6da 100644 --- a/docs/error-messages/tool-errors/command-line-warning-d9041.md +++ b/docs/error-messages/tool-errors/command-line-warning-d9041.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Command-Line Warning D9041" title: "Command-Line Warning D9041" -ms.date: "11/04/2016" +description: "Learn more about: Command-Line Warning D9041" +ms.date: 11/04/2016 f1_keywords: ["D9041"] helpviewer_keywords: ["D9041"] -ms.assetid: ada8815f-4246-4e25-b57d-a7f16fa107cc --- # Command-Line Warning D9041 diff --git a/docs/error-messages/tool-errors/command-line-warning-d9043.md b/docs/error-messages/tool-errors/command-line-warning-d9043.md index df407747d65..73931bcab16 100644 --- a/docs/error-messages/tool-errors/command-line-warning-d9043.md +++ b/docs/error-messages/tool-errors/command-line-warning-d9043.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Command-Line Warning D9043" title: "Command-Line Warning D9043" -ms.date: "11/04/2016" +description: "Learn more about: Command-Line Warning D9043" +ms.date: 11/04/2016 f1_keywords: ["D9043"] helpviewer_keywords: ["D9043"] -ms.assetid: 9263e28d-217b-414c-bfb6-86efd3c27a77 --- # Command-Line Warning D9043 From 5a6d620c42b7e28b32850d7f0552778aa3ccc80a Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 14 Sep 2025 20:49:14 +0800 Subject: [PATCH 1823/2255] Add blockquotes for error messages in range [R6002, R6035] --- docs/error-messages/tool-errors/c-runtime-error-r6002.md | 2 +- docs/error-messages/tool-errors/c-runtime-error-r6008.md | 2 +- docs/error-messages/tool-errors/c-runtime-error-r6009.md | 2 +- docs/error-messages/tool-errors/c-runtime-error-r6016.md | 2 +- docs/error-messages/tool-errors/c-runtime-error-r6017.md | 2 +- docs/error-messages/tool-errors/c-runtime-error-r6018.md | 2 +- docs/error-messages/tool-errors/c-runtime-error-r6019.md | 2 +- docs/error-messages/tool-errors/c-runtime-error-r6024.md | 2 +- docs/error-messages/tool-errors/c-runtime-error-r6025.md | 2 +- docs/error-messages/tool-errors/c-runtime-error-r6026.md | 2 +- docs/error-messages/tool-errors/c-runtime-error-r6027.md | 2 +- docs/error-messages/tool-errors/c-runtime-error-r6028.md | 2 +- docs/error-messages/tool-errors/c-runtime-error-r6030.md | 2 +- docs/error-messages/tool-errors/c-runtime-error-r6031.md | 2 +- docs/error-messages/tool-errors/c-runtime-error-r6032.md | 2 +- docs/error-messages/tool-errors/c-runtime-error-r6033.md | 2 +- docs/error-messages/tool-errors/c-runtime-error-r6035.md | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6002.md b/docs/error-messages/tool-errors/c-runtime-error-r6002.md index c6ecb60c462..b412fdfc17f 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6002.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6002.md @@ -8,7 +8,7 @@ ms.assetid: 8fbbe65a-9c43-459e-8342-e1f6d1cef7d0 --- # C Runtime Error R6002 -floating-point support not loaded +> floating-point support not loaded The necessary floating-point library was not linked. diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6008.md b/docs/error-messages/tool-errors/c-runtime-error-r6008.md index 16ca16630ab..e0c7ec558e4 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6008.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6008.md @@ -8,7 +8,7 @@ ms.assetid: f0f304fc-709a-4843-bc7e-bad1ae0d1649 --- # C Runtime Error R6008 -not enough space for arguments +> not enough space for arguments > [!NOTE] > If you encounter this error message while running an app, the app was shut down because it has an internal memory problem. There are several possible reasons for this error, but often it's caused by an extremely low memory condition, too much memory taken by environment variables, or a bug in the program. diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6009.md b/docs/error-messages/tool-errors/c-runtime-error-r6009.md index 9b67d996f5f..563943aae96 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6009.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6009.md @@ -8,7 +8,7 @@ ms.assetid: edfb1f8b-3807-48f4-a994-318923b747ae --- # C Runtime Error R6009 -not enough space for environment +> not enough space for environment > [!NOTE] > If you encounter this error message while running an app, the app was shut down because it has an internal memory problem. There are several possible reasons for this error, but often it's caused by an extremely low memory condition, too much memory taken by environment variables, or a bug in the program. diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6016.md b/docs/error-messages/tool-errors/c-runtime-error-r6016.md index 245c9bae9df..f06834755b1 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6016.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6016.md @@ -8,7 +8,7 @@ ms.assetid: 7bd3f274-d9c4-4bc4-8252-80bf168c4c3a --- # C Runtime Error R6016 -not enough space for thread data +> not enough space for thread data > [!NOTE] > If you encounter this error message while running an app, the app was shut down because it has an internal memory problem. There are many possible reasons for this error, but often it's caused by an extremely low memory condition, a bug in the app, or by a bug in an add-in or extension used by the app. diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6017.md b/docs/error-messages/tool-errors/c-runtime-error-r6017.md index b6c878e78a5..d3fa3b21c91 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6017.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6017.md @@ -8,7 +8,7 @@ ms.assetid: df3ec5f5-6771-4648-ba06-0e26c6a1cc6a --- # C Runtime Error R6017 -unexpected multithread lock error +> unexpected multithread lock error > [!NOTE] > If you encounter this error message while running an app, the app was shut down because it has an internal problem. There are several possible reasons for this error, but often it's caused by a defect in the app's code. diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6018.md b/docs/error-messages/tool-errors/c-runtime-error-r6018.md index 97361514101..3423f76fae5 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6018.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6018.md @@ -8,7 +8,7 @@ ms.assetid: f6dd40d1-a119-4d8b-b39e-97350ea23349 --- # C Runtime Error R6018 -unexpected heap error +> unexpected heap error > [!NOTE] > If you encounter this error message while running an app, the app was shut down because it has an internal problem. There are several possible reasons for this error, but often it's caused by a defect in the app's code. diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6019.md b/docs/error-messages/tool-errors/c-runtime-error-r6019.md index 5c5bd53c170..3896be0b1b1 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6019.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6019.md @@ -8,7 +8,7 @@ ms.assetid: 8129923e-7db2-40ee-9602-def9365f8d28 --- # C Runtime Error R6019 -unable to open console device +> unable to open console device > [!NOTE] > If you encounter this error message while running an app, the app was shut down because it attempted to access the console, but it didn't have sufficient permission. There are several possible reasons for this error, but it's usually because the program must be run as an administrator, or there is a bug in the program. diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6024.md b/docs/error-messages/tool-errors/c-runtime-error-r6024.md index 7df58f0607f..2528619186b 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6024.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6024.md @@ -8,7 +8,7 @@ ms.assetid: 0fb11c0f-9b81-4cab-81bd-4785742946a5 --- # C Runtime Error R6024 -not enough space for _onexit/atexit table +> not enough space for _onexit/atexit table > [!NOTE] > If you encounter this error message while running an app, the app was shut down because it has an internal memory problem. This error is usually caused by an extremely low memory condition, or rarely, by a bug in the program or by corruption of the Visual C++ libraries that it uses. diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6025.md b/docs/error-messages/tool-errors/c-runtime-error-r6025.md index 42a2c6f4a3a..cf17845f25a 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6025.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6025.md @@ -8,7 +8,7 @@ ms.assetid: afa06d98-9c36-445b-b3e7-b6409bc8e779 --- # C Runtime Error R6025 -pure virtual function call +> pure virtual function call > [!NOTE] > If you encounter this error message while running an app, the app was shut down because it has an internal problem. The most common reason for this error is a bug in the app, or a corrupted installation. diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6026.md b/docs/error-messages/tool-errors/c-runtime-error-r6026.md index b1074266a4b..799307880b8 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6026.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6026.md @@ -8,7 +8,7 @@ ms.assetid: 7ea751f8-fc20-46ab-99ef-84c95ca0b6b4 --- # C Runtime Error R6026 -not enough space for stdio initialization +> not enough space for stdio initialization > [!NOTE] > If you encounter this error message while running an app, the app was shut down because it has an internal memory problem. There are several possible reasons for this error, but usually it's caused by an extremely low memory condition. It can also be caused by a bug in the app, by corruption of the Visual C++ libraries that it uses, or by a driver. diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6027.md b/docs/error-messages/tool-errors/c-runtime-error-r6027.md index 69dae0ca617..eb378f6279a 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6027.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6027.md @@ -8,7 +8,7 @@ ms.assetid: c06a62b3-08d9-4bf5-bcad-8340ec552f69 --- # C Runtime Error R6027 -not enough space for lowio initialization +> not enough space for lowio initialization > [!NOTE] > If you encounter this error message while running an app, the app was shut down because it has an internal memory problem. There are several possible reasons for this error, but usually it's caused by an extremely low memory condition. It can also be caused by a bug in the app, by corruption of the Visual C++ libraries that it uses, or by a driver. diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6028.md b/docs/error-messages/tool-errors/c-runtime-error-r6028.md index 1f93ef783ed..71a8fec4cbf 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6028.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6028.md @@ -8,7 +8,7 @@ ms.assetid: 81e99079-4388-4244-a4f7-4641c508871c --- # C Runtime Error R6028 -unable to initialize heap +> unable to initialize heap > [!NOTE] > If you encounter this error message while running an app, the app was shut down because it has an internal memory problem. There are many possible reasons for this error, but often it's caused by an extremely low memory condition, a bug in the program, or by defective hardware drivers. diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6030.md b/docs/error-messages/tool-errors/c-runtime-error-r6030.md index f190792505a..b3a5443d50f 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6030.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6030.md @@ -8,7 +8,7 @@ ms.assetid: 0238a6c3-a033-4046-8adc-f8f99d961153 --- # C Runtime Error R6030 -CRT not initialized +> CRT not initialized > [!NOTE] > If you encounter this error message while running an app, the app was shut down because it has an internal problem. This problem is most often caused by certain security software programs, or rarely, by a bug in the program. diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6031.md b/docs/error-messages/tool-errors/c-runtime-error-r6031.md index 94855e80c82..f7af78e8e9a 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6031.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6031.md @@ -8,7 +8,7 @@ ms.assetid: 805d4cd1-cb2f-43fe-87e6-e7bd5b7329c5 --- # C Runtime Error R6031 -Attempt to initialize the CRT more than once. This indicates a bug in your application. +> Attempt to initialize the CRT more than once. This indicates a bug in your application. > [!NOTE] > If you encounter this error message while running an app, the app was shut down because it has an internal problem. This may be caused bug in the app, or by a bug in an add-on or extension that the app uses. diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6032.md b/docs/error-messages/tool-errors/c-runtime-error-r6032.md index 85bf96da8f0..d2a326cc74c 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6032.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6032.md @@ -8,7 +8,7 @@ ms.assetid: 52092a63-cc51-444a-bfc3-fad965a3558e --- # C Runtime Error R6032 -Not enough space for locale information +> Not enough space for locale information > [!NOTE] > If you encounter this error message while running an app, the app was shut down because it has an internal memory problem. There are several possible reasons for this error, but often it's caused by an extremely low memory condition, or by a bug in the program. diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6033.md b/docs/error-messages/tool-errors/c-runtime-error-r6033.md index fd113c60325..7463dbaa5e3 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6033.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6033.md @@ -8,7 +8,7 @@ ms.assetid: f9cffdc9-81bd-4a64-a698-02762cbd82c9 --- # C Runtime Error R6033 -Attempt to use MSIL code from this assembly during native code initialization. This indicates a bug in your application. It is most likely the result of calling an MSIL-compiled (/clr) function from a native constructor or from DllMain. +> Attempt to use MSIL code from this assembly during native code initialization. This indicates a bug in your application. It is most likely the result of calling an MSIL-compiled (/clr) function from a native constructor or from DllMain. > [!NOTE] > If you encounter this error message while running an app, the app was shut down because it has an internal problem. This error can be caused by a bug in the app, or by a bug in an add-in or extension that it uses. diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6035.md b/docs/error-messages/tool-errors/c-runtime-error-r6035.md index 7fba797b1e2..36d803b50ae 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6035.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6035.md @@ -8,7 +8,7 @@ ms.assetid: f8fb50b8-18bf-4258-b96a-b0a9de468d16 --- # C Runtime Error R6035 -Microsoft Visual C++ Runtime Library, Error R6035 - A module in this application is initializing the module's global security cookie while a function relying on that security cookie is active. Call __security_init_cookie earlier. +> Microsoft Visual C++ Runtime Library, Error R6035 - A module in this application is initializing the module's global security cookie while a function relying on that security cookie is active. Call __security_init_cookie earlier. [__security_init_cookie](../../c-runtime-library/reference/security-init-cookie.md) must be called before the first use of the global security cookie. From 28d668f720634e948e59466c0376fb6286577c3b Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 14 Sep 2025 20:52:48 +0800 Subject: [PATCH 1824/2255] Add "Remarks" and "Example" headings for error references in range [R6002, R6035] --- docs/error-messages/tool-errors/c-runtime-error-r6002.md | 2 ++ docs/error-messages/tool-errors/c-runtime-error-r6008.md | 2 ++ docs/error-messages/tool-errors/c-runtime-error-r6009.md | 2 ++ docs/error-messages/tool-errors/c-runtime-error-r6016.md | 2 ++ docs/error-messages/tool-errors/c-runtime-error-r6017.md | 2 ++ docs/error-messages/tool-errors/c-runtime-error-r6018.md | 2 ++ docs/error-messages/tool-errors/c-runtime-error-r6019.md | 2 ++ docs/error-messages/tool-errors/c-runtime-error-r6024.md | 2 ++ docs/error-messages/tool-errors/c-runtime-error-r6025.md | 2 ++ docs/error-messages/tool-errors/c-runtime-error-r6026.md | 2 ++ docs/error-messages/tool-errors/c-runtime-error-r6027.md | 2 ++ docs/error-messages/tool-errors/c-runtime-error-r6028.md | 2 ++ docs/error-messages/tool-errors/c-runtime-error-r6030.md | 2 ++ docs/error-messages/tool-errors/c-runtime-error-r6031.md | 2 ++ docs/error-messages/tool-errors/c-runtime-error-r6032.md | 2 ++ docs/error-messages/tool-errors/c-runtime-error-r6033.md | 2 ++ docs/error-messages/tool-errors/c-runtime-error-r6035.md | 4 ++++ 17 files changed, 36 insertions(+) diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6002.md b/docs/error-messages/tool-errors/c-runtime-error-r6002.md index b412fdfc17f..8b21825dec0 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6002.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6002.md @@ -10,6 +10,8 @@ ms.assetid: 8fbbe65a-9c43-459e-8342-e1f6d1cef7d0 > floating-point support not loaded +## Remarks + The necessary floating-point library was not linked. > [!NOTE] diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6008.md b/docs/error-messages/tool-errors/c-runtime-error-r6008.md index e0c7ec558e4..4dc549ffdb8 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6008.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6008.md @@ -10,6 +10,8 @@ ms.assetid: f0f304fc-709a-4843-bc7e-bad1ae0d1649 > not enough space for arguments +## Remarks + > [!NOTE] > If you encounter this error message while running an app, the app was shut down because it has an internal memory problem. There are several possible reasons for this error, but often it's caused by an extremely low memory condition, too much memory taken by environment variables, or a bug in the program. > diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6009.md b/docs/error-messages/tool-errors/c-runtime-error-r6009.md index 563943aae96..c506353c267 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6009.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6009.md @@ -10,6 +10,8 @@ ms.assetid: edfb1f8b-3807-48f4-a994-318923b747ae > not enough space for environment +## Remarks + > [!NOTE] > If you encounter this error message while running an app, the app was shut down because it has an internal memory problem. There are several possible reasons for this error, but often it's caused by an extremely low memory condition, too much memory taken by environment variables, or a bug in the program. > diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6016.md b/docs/error-messages/tool-errors/c-runtime-error-r6016.md index f06834755b1..e51eda4c951 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6016.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6016.md @@ -10,6 +10,8 @@ ms.assetid: 7bd3f274-d9c4-4bc4-8252-80bf168c4c3a > not enough space for thread data +## Remarks + > [!NOTE] > If you encounter this error message while running an app, the app was shut down because it has an internal memory problem. There are many possible reasons for this error, but often it's caused by an extremely low memory condition, a bug in the app, or by a bug in an add-in or extension used by the app. > diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6017.md b/docs/error-messages/tool-errors/c-runtime-error-r6017.md index d3fa3b21c91..5828863fad3 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6017.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6017.md @@ -10,6 +10,8 @@ ms.assetid: df3ec5f5-6771-4648-ba06-0e26c6a1cc6a > unexpected multithread lock error +## Remarks + > [!NOTE] > If you encounter this error message while running an app, the app was shut down because it has an internal problem. There are several possible reasons for this error, but often it's caused by a defect in the app's code. > diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6018.md b/docs/error-messages/tool-errors/c-runtime-error-r6018.md index 3423f76fae5..b6203ce3083 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6018.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6018.md @@ -10,6 +10,8 @@ ms.assetid: f6dd40d1-a119-4d8b-b39e-97350ea23349 > unexpected heap error +## Remarks + > [!NOTE] > If you encounter this error message while running an app, the app was shut down because it has an internal problem. There are several possible reasons for this error, but often it's caused by a defect in the app's code. > diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6019.md b/docs/error-messages/tool-errors/c-runtime-error-r6019.md index 3896be0b1b1..f2bb7953e7d 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6019.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6019.md @@ -10,6 +10,8 @@ ms.assetid: 8129923e-7db2-40ee-9602-def9365f8d28 > unable to open console device +## Remarks + > [!NOTE] > If you encounter this error message while running an app, the app was shut down because it attempted to access the console, but it didn't have sufficient permission. There are several possible reasons for this error, but it's usually because the program must be run as an administrator, or there is a bug in the program. > diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6024.md b/docs/error-messages/tool-errors/c-runtime-error-r6024.md index 2528619186b..7f9334ff89f 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6024.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6024.md @@ -10,6 +10,8 @@ ms.assetid: 0fb11c0f-9b81-4cab-81bd-4785742946a5 > not enough space for _onexit/atexit table +## Remarks + > [!NOTE] > If you encounter this error message while running an app, the app was shut down because it has an internal memory problem. This error is usually caused by an extremely low memory condition, or rarely, by a bug in the program or by corruption of the Visual C++ libraries that it uses. > diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6025.md b/docs/error-messages/tool-errors/c-runtime-error-r6025.md index cf17845f25a..d340ed8041a 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6025.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6025.md @@ -10,6 +10,8 @@ ms.assetid: afa06d98-9c36-445b-b3e7-b6409bc8e779 > pure virtual function call +## Remarks + > [!NOTE] > If you encounter this error message while running an app, the app was shut down because it has an internal problem. The most common reason for this error is a bug in the app, or a corrupted installation. > diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6026.md b/docs/error-messages/tool-errors/c-runtime-error-r6026.md index 799307880b8..3f9f67e505e 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6026.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6026.md @@ -10,6 +10,8 @@ ms.assetid: 7ea751f8-fc20-46ab-99ef-84c95ca0b6b4 > not enough space for stdio initialization +## Remarks + > [!NOTE] > If you encounter this error message while running an app, the app was shut down because it has an internal memory problem. There are several possible reasons for this error, but usually it's caused by an extremely low memory condition. It can also be caused by a bug in the app, by corruption of the Visual C++ libraries that it uses, or by a driver. > diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6027.md b/docs/error-messages/tool-errors/c-runtime-error-r6027.md index eb378f6279a..62d57f46655 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6027.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6027.md @@ -10,6 +10,8 @@ ms.assetid: c06a62b3-08d9-4bf5-bcad-8340ec552f69 > not enough space for lowio initialization +## Remarks + > [!NOTE] > If you encounter this error message while running an app, the app was shut down because it has an internal memory problem. There are several possible reasons for this error, but usually it's caused by an extremely low memory condition. It can also be caused by a bug in the app, by corruption of the Visual C++ libraries that it uses, or by a driver. > diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6028.md b/docs/error-messages/tool-errors/c-runtime-error-r6028.md index 71a8fec4cbf..cfa2d993c66 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6028.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6028.md @@ -10,6 +10,8 @@ ms.assetid: 81e99079-4388-4244-a4f7-4641c508871c > unable to initialize heap +## Remarks + > [!NOTE] > If you encounter this error message while running an app, the app was shut down because it has an internal memory problem. There are many possible reasons for this error, but often it's caused by an extremely low memory condition, a bug in the program, or by defective hardware drivers. > diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6030.md b/docs/error-messages/tool-errors/c-runtime-error-r6030.md index b3a5443d50f..b07c71f5b57 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6030.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6030.md @@ -10,6 +10,8 @@ ms.assetid: 0238a6c3-a033-4046-8adc-f8f99d961153 > CRT not initialized +## Remarks + > [!NOTE] > If you encounter this error message while running an app, the app was shut down because it has an internal problem. This problem is most often caused by certain security software programs, or rarely, by a bug in the program. > diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6031.md b/docs/error-messages/tool-errors/c-runtime-error-r6031.md index f7af78e8e9a..819d8b623fb 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6031.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6031.md @@ -10,6 +10,8 @@ ms.assetid: 805d4cd1-cb2f-43fe-87e6-e7bd5b7329c5 > Attempt to initialize the CRT more than once. This indicates a bug in your application. +## Remarks + > [!NOTE] > If you encounter this error message while running an app, the app was shut down because it has an internal problem. This may be caused bug in the app, or by a bug in an add-on or extension that the app uses. > diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6032.md b/docs/error-messages/tool-errors/c-runtime-error-r6032.md index d2a326cc74c..253d07fe610 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6032.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6032.md @@ -10,6 +10,8 @@ ms.assetid: 52092a63-cc51-444a-bfc3-fad965a3558e > Not enough space for locale information +## Remarks + > [!NOTE] > If you encounter this error message while running an app, the app was shut down because it has an internal memory problem. There are several possible reasons for this error, but often it's caused by an extremely low memory condition, or by a bug in the program. > diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6033.md b/docs/error-messages/tool-errors/c-runtime-error-r6033.md index 7463dbaa5e3..9ace30a6ef1 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6033.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6033.md @@ -10,6 +10,8 @@ ms.assetid: f9cffdc9-81bd-4a64-a698-02762cbd82c9 > Attempt to use MSIL code from this assembly during native code initialization. This indicates a bug in your application. It is most likely the result of calling an MSIL-compiled (/clr) function from a native constructor or from DllMain. +## Remarks + > [!NOTE] > If you encounter this error message while running an app, the app was shut down because it has an internal problem. This error can be caused by a bug in the app, or by a bug in an add-in or extension that it uses. > diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6035.md b/docs/error-messages/tool-errors/c-runtime-error-r6035.md index 36d803b50ae..146e097b506 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6035.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6035.md @@ -10,12 +10,16 @@ ms.assetid: f8fb50b8-18bf-4258-b96a-b0a9de468d16 > Microsoft Visual C++ Runtime Library, Error R6035 - A module in this application is initializing the module's global security cookie while a function relying on that security cookie is active. Call __security_init_cookie earlier. +## Remarks + [__security_init_cookie](../../c-runtime-library/reference/security-init-cookie.md) must be called before the first use of the global security cookie. The global security cookie is used for buffer overrun protection in code compiled with [/GS (Buffer Security Check)](../../build/reference/gs-buffer-security-check.md) and in code that uses structured exception handling. Essentially, on entry to an overrun-protected function, the cookie is put on the stack, and on exit, the value on the stack is compared against the global cookie. Any difference between them indicates that a buffer overrun has occurred and results in immediate termination of the program. Error R6035 indicates that a call to `__security_init_cookie` was made after a protected function was entered. If execution were to continue, a spurious buffer overrun would be detected because the cookie on the stack would no longer match the global cookie. +## Example + Consider the following DLL example. The DLL entry point is set to DllEntryPoint through the linker [/ENTRY (Entry-Point Symbol)](../../build/reference/entry-entry-point-symbol.md) option. This bypasses the CRT's initialization which would ordinarily initialize the global security cookie, so the DLL itself must call `__security_init_cookie`. ``` From 842ee186a14b1b55eb28e90cd80a97bcc204795c Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 14 Sep 2025 20:56:08 +0800 Subject: [PATCH 1825/2255] Update metadata for error references in range [R6002, R6035] --- docs/error-messages/tool-errors/c-runtime-error-r6002.md | 5 ++--- docs/error-messages/tool-errors/c-runtime-error-r6008.md | 5 ++--- docs/error-messages/tool-errors/c-runtime-error-r6009.md | 5 ++--- docs/error-messages/tool-errors/c-runtime-error-r6016.md | 5 ++--- docs/error-messages/tool-errors/c-runtime-error-r6017.md | 5 ++--- docs/error-messages/tool-errors/c-runtime-error-r6018.md | 5 ++--- docs/error-messages/tool-errors/c-runtime-error-r6019.md | 5 ++--- docs/error-messages/tool-errors/c-runtime-error-r6024.md | 5 ++--- docs/error-messages/tool-errors/c-runtime-error-r6025.md | 5 ++--- docs/error-messages/tool-errors/c-runtime-error-r6026.md | 5 ++--- docs/error-messages/tool-errors/c-runtime-error-r6027.md | 5 ++--- docs/error-messages/tool-errors/c-runtime-error-r6028.md | 5 ++--- docs/error-messages/tool-errors/c-runtime-error-r6030.md | 5 ++--- docs/error-messages/tool-errors/c-runtime-error-r6031.md | 5 ++--- docs/error-messages/tool-errors/c-runtime-error-r6032.md | 5 ++--- docs/error-messages/tool-errors/c-runtime-error-r6033.md | 5 ++--- docs/error-messages/tool-errors/c-runtime-error-r6035.md | 5 ++--- 17 files changed, 34 insertions(+), 51 deletions(-) diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6002.md b/docs/error-messages/tool-errors/c-runtime-error-r6002.md index 8b21825dec0..99e8028297a 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6002.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6002.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: C Runtime Error R6002" title: "C Runtime Error R6002" -ms.date: "11/04/2016" +description: "Learn more about: C Runtime Error R6002" +ms.date: 11/04/2016 f1_keywords: ["R6002"] helpviewer_keywords: ["R6002"] -ms.assetid: 8fbbe65a-9c43-459e-8342-e1f6d1cef7d0 --- # C Runtime Error R6002 diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6008.md b/docs/error-messages/tool-errors/c-runtime-error-r6008.md index 4dc549ffdb8..d2cd9fc478a 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6008.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6008.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: C Runtime Error R6008" title: "C Runtime Error R6008" -ms.date: "11/04/2016" +description: "Learn more about: C Runtime Error R6008" +ms.date: 11/04/2016 f1_keywords: ["R6008"] helpviewer_keywords: ["R6008"] -ms.assetid: f0f304fc-709a-4843-bc7e-bad1ae0d1649 --- # C Runtime Error R6008 diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6009.md b/docs/error-messages/tool-errors/c-runtime-error-r6009.md index c506353c267..e064cc34025 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6009.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6009.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: C Runtime Error R6009" title: "C Runtime Error R6009" -ms.date: "11/04/2016" +description: "Learn more about: C Runtime Error R6009" +ms.date: 11/04/2016 f1_keywords: ["R6009"] helpviewer_keywords: ["R6009"] -ms.assetid: edfb1f8b-3807-48f4-a994-318923b747ae --- # C Runtime Error R6009 diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6016.md b/docs/error-messages/tool-errors/c-runtime-error-r6016.md index e51eda4c951..2398a1e6028 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6016.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6016.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: C Runtime Error R6016" title: "C Runtime Error R6016" -ms.date: "11/04/2016" +description: "Learn more about: C Runtime Error R6016" +ms.date: 11/04/2016 f1_keywords: ["R6016"] helpviewer_keywords: ["R6016"] -ms.assetid: 7bd3f274-d9c4-4bc4-8252-80bf168c4c3a --- # C Runtime Error R6016 diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6017.md b/docs/error-messages/tool-errors/c-runtime-error-r6017.md index 5828863fad3..737bf6e90f6 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6017.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6017.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: C Runtime Error R6017" title: "C Runtime Error R6017" -ms.date: "11/04/2016" +description: "Learn more about: C Runtime Error R6017" +ms.date: 11/04/2016 f1_keywords: ["R6017"] helpviewer_keywords: ["R6017"] -ms.assetid: df3ec5f5-6771-4648-ba06-0e26c6a1cc6a --- # C Runtime Error R6017 diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6018.md b/docs/error-messages/tool-errors/c-runtime-error-r6018.md index b6203ce3083..e2010a13a18 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6018.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6018.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: C Runtime Error R6018" title: "C Runtime Error R6018" -ms.date: "11/04/2016" +description: "Learn more about: C Runtime Error R6018" +ms.date: 11/04/2016 f1_keywords: ["R6018"] helpviewer_keywords: ["R6018"] -ms.assetid: f6dd40d1-a119-4d8b-b39e-97350ea23349 --- # C Runtime Error R6018 diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6019.md b/docs/error-messages/tool-errors/c-runtime-error-r6019.md index f2bb7953e7d..51987fa5a60 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6019.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6019.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: C Runtime Error R6019" title: "C Runtime Error R6019" -ms.date: "11/04/2016" +description: "Learn more about: C Runtime Error R6019" +ms.date: 11/04/2016 f1_keywords: ["R6019"] helpviewer_keywords: ["R6019"] -ms.assetid: 8129923e-7db2-40ee-9602-def9365f8d28 --- # C Runtime Error R6019 diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6024.md b/docs/error-messages/tool-errors/c-runtime-error-r6024.md index 7f9334ff89f..d9657a8a397 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6024.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6024.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: C Runtime Error R6024" title: "C Runtime Error R6024" -ms.date: "11/04/2016" +description: "Learn more about: C Runtime Error R6024" +ms.date: 11/04/2016 f1_keywords: ["R6024"] helpviewer_keywords: ["R6024"] -ms.assetid: 0fb11c0f-9b81-4cab-81bd-4785742946a5 --- # C Runtime Error R6024 diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6025.md b/docs/error-messages/tool-errors/c-runtime-error-r6025.md index d340ed8041a..c081ab74720 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6025.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6025.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: C Runtime Error R6025" title: "C Runtime Error R6025" -ms.date: "11/04/2016" +description: "Learn more about: C Runtime Error R6025" +ms.date: 11/04/2016 f1_keywords: ["R6025"] helpviewer_keywords: ["R6025"] -ms.assetid: afa06d98-9c36-445b-b3e7-b6409bc8e779 --- # C Runtime Error R6025 diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6026.md b/docs/error-messages/tool-errors/c-runtime-error-r6026.md index 3f9f67e505e..f54bf8f33ba 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6026.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6026.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: C Runtime Error R6026" title: "C Runtime Error R6026" -ms.date: "11/04/2016" +description: "Learn more about: C Runtime Error R6026" +ms.date: 11/04/2016 f1_keywords: ["R6026"] helpviewer_keywords: ["R6026"] -ms.assetid: 7ea751f8-fc20-46ab-99ef-84c95ca0b6b4 --- # C Runtime Error R6026 diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6027.md b/docs/error-messages/tool-errors/c-runtime-error-r6027.md index 62d57f46655..f399ec1a9ad 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6027.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6027.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: C Runtime Error R6027" title: "C Runtime Error R6027" -ms.date: "11/04/2016" +description: "Learn more about: C Runtime Error R6027" +ms.date: 11/04/2016 f1_keywords: ["R6027"] helpviewer_keywords: ["R6027"] -ms.assetid: c06a62b3-08d9-4bf5-bcad-8340ec552f69 --- # C Runtime Error R6027 diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6028.md b/docs/error-messages/tool-errors/c-runtime-error-r6028.md index cfa2d993c66..cb4c0697bf0 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6028.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6028.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: C Runtime Error R6028" title: "C Runtime Error R6028" -ms.date: "11/04/2016" +description: "Learn more about: C Runtime Error R6028" +ms.date: 11/04/2016 f1_keywords: ["R6028"] helpviewer_keywords: ["R6028"] -ms.assetid: 81e99079-4388-4244-a4f7-4641c508871c --- # C Runtime Error R6028 diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6030.md b/docs/error-messages/tool-errors/c-runtime-error-r6030.md index b07c71f5b57..ad7dc5bd756 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6030.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6030.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: C Runtime Error R6030" title: "C Runtime Error R6030" -ms.date: "11/04/2016" +description: "Learn more about: C Runtime Error R6030" +ms.date: 11/04/2016 f1_keywords: ["R6030"] helpviewer_keywords: ["R6030"] -ms.assetid: 0238a6c3-a033-4046-8adc-f8f99d961153 --- # C Runtime Error R6030 diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6031.md b/docs/error-messages/tool-errors/c-runtime-error-r6031.md index 819d8b623fb..2a362dcdfad 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6031.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6031.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: C Runtime Error R6031" title: "C Runtime Error R6031" -ms.date: "11/04/2016" +description: "Learn more about: C Runtime Error R6031" +ms.date: 11/04/2016 f1_keywords: ["R6031"] helpviewer_keywords: ["R6031"] -ms.assetid: 805d4cd1-cb2f-43fe-87e6-e7bd5b7329c5 --- # C Runtime Error R6031 diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6032.md b/docs/error-messages/tool-errors/c-runtime-error-r6032.md index 253d07fe610..e50b73b5f87 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6032.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6032.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: C Runtime Error R6032" title: "C Runtime Error R6032" -ms.date: "11/04/2016" +description: "Learn more about: C Runtime Error R6032" +ms.date: 11/04/2016 f1_keywords: ["R6032"] helpviewer_keywords: ["R6032"] -ms.assetid: 52092a63-cc51-444a-bfc3-fad965a3558e --- # C Runtime Error R6032 diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6033.md b/docs/error-messages/tool-errors/c-runtime-error-r6033.md index 9ace30a6ef1..b308f6db468 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6033.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6033.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: C Runtime Error R6033" title: "C Runtime Error R6033" -ms.date: "11/04/2016" +description: "Learn more about: C Runtime Error R6033" +ms.date: 11/04/2016 f1_keywords: ["R6033"] helpviewer_keywords: ["R6033"] -ms.assetid: f9cffdc9-81bd-4a64-a698-02762cbd82c9 --- # C Runtime Error R6033 diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6035.md b/docs/error-messages/tool-errors/c-runtime-error-r6035.md index 146e097b506..7ba41e73eab 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6035.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6035.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: C Runtime Error R6035" title: "C Runtime Error R6035" -ms.date: "11/04/2016" +description: "Learn more about: C Runtime Error R6035" +ms.date: 11/04/2016 f1_keywords: ["R6035"] helpviewer_keywords: ["R6035"] -ms.assetid: f8fb50b8-18bf-4258-b96a-b0a9de468d16 --- # C Runtime Error R6035 From 21f004c046ba76daab37e0961b98798eec05c886 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 14 Sep 2025 20:57:44 +0800 Subject: [PATCH 1826/2255] Trim error message in R6035 error reference --- docs/error-messages/tool-errors/c-runtime-error-r6035.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/tool-errors/c-runtime-error-r6035.md b/docs/error-messages/tool-errors/c-runtime-error-r6035.md index 7ba41e73eab..4dd704a367b 100644 --- a/docs/error-messages/tool-errors/c-runtime-error-r6035.md +++ b/docs/error-messages/tool-errors/c-runtime-error-r6035.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["R6035"] --- # C Runtime Error R6035 -> Microsoft Visual C++ Runtime Library, Error R6035 - A module in this application is initializing the module's global security cookie while a function relying on that security cookie is active. Call __security_init_cookie earlier. +> A module in this application is initializing the module's global security cookie while a function relying on that security cookie is active. Call __security_init_cookie earlier. ## Remarks From 2667a3ba18bc755d4ee081a2a56b920a88ed268a Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 14 Sep 2025 21:10:11 +0800 Subject: [PATCH 1827/2255] Add missing R6026 and R6027 in C Runtime errors index topic --- .../tool-errors/c-runtime-errors-r6002-through-r6035.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/error-messages/tool-errors/c-runtime-errors-r6002-through-r6035.md b/docs/error-messages/tool-errors/c-runtime-errors-r6002-through-r6035.md index cbac9569743..8eac48f7d14 100644 --- a/docs/error-messages/tool-errors/c-runtime-errors-r6002-through-r6035.md +++ b/docs/error-messages/tool-errors/c-runtime-errors-r6002-through-r6035.md @@ -23,6 +23,8 @@ The C Runtime library (CRT) may report a runtime error when your app is loaded o | [C Runtime Error R6019](c-runtime-error-r6019.md) | unable to open console device | | [C Runtime Error R6024](c-runtime-error-r6024.md) | not enough space for _onexit/atexit table | | [C Runtime Error R6025](c-runtime-error-r6025.md) | pure virtual function call | +| [C Runtime Error R6026](c-runtime-error-r6026.md) | not enough space for stdio initialization | +| [C Runtime Error R6027](c-runtime-error-r6027.md) | not enough space for lowio initialization | | [C Runtime Error R6028](c-runtime-error-r6028.md) | unable to initialize heap | | [C Runtime Error R6030](c-runtime-error-r6030.md) | CRT not initialized | | [C Runtime Error R6031](c-runtime-error-r6031.md) | Attempt to initialize the CRT more than once. This indicates a bug in your application. | From 29400ddaae5239215bfd3491f0e8d562b01652c2 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 14 Sep 2025 21:26:40 +0800 Subject: [PATCH 1828/2255] Add blockquotes for error messages in range [RW1004, RW2003] --- .../tool-errors/resource-compiler-error-rw2001.md | 2 +- .../tool-errors/resource-compiler-error-rw2002.md | 2 +- .../tool-errors/resource-compiler-error-rw2003.md | 2 +- .../tool-errors/resource-compiler-fatal-error-rw1004.md | 2 +- .../tool-errors/resource-compiler-fatal-error-rw1009.md | 2 +- .../tool-errors/resource-compiler-fatal-error-rw1016.md | 2 +- .../tool-errors/resource-compiler-fatal-error-rw1022.md | 2 +- .../tool-errors/resource-compiler-fatal-error-rw1023.md | 2 +- .../tool-errors/resource-compiler-fatal-error-rw1025.md | 2 +- .../tool-errors/resource-compiler-fatal-error-rw1030.md | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rw2001.md b/docs/error-messages/tool-errors/resource-compiler-error-rw2001.md index 197696abe86..8d6b30ba3e8 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rw2001.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rw2001.md @@ -8,7 +8,7 @@ ms.assetid: 963bdc7d-6ebe-4378-8bbc-47dfcf5d330c --- # Resource Compiler Error RW2001 -Invalid directive in preprocessed RC file +> Invalid directive in preprocessed RC file The RC file contains a **#pragma** directive. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rw2002.md b/docs/error-messages/tool-errors/resource-compiler-error-rw2002.md index c2e99143b32..b129e7a266e 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rw2002.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rw2002.md @@ -8,7 +8,7 @@ ms.assetid: b1d1a49b-b50b-4b0b-9f09-c7762e2dbe8f --- # Resource Compiler Error RW2002 -Parsing error +> Parsing error ### To fix by checking the following possible causes diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rw2003.md b/docs/error-messages/tool-errors/resource-compiler-error-rw2003.md index 13968d07395..52c26140026 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rw2003.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rw2003.md @@ -8,7 +8,7 @@ ms.assetid: 9dc0ba70-6776-4aef-b316-5f1711d8e42e --- # Resource Compiler Error RW2003 -Generation Error +> Generation Error ### To fix by checking the following possible causes diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1004.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1004.md index 9c5b2e88282..2549881b64b 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1004.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1004.md @@ -8,6 +8,6 @@ ms.assetid: 89cfcb02-a5d3-4271-be4f-df2ec3f94f3e --- # Resource Compiler Fatal Error RW1004 -Unexpected end of file +> Unexpected end of file This error can be caused by missing line feed and carriage-return characters on the last line of a text file. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1009.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1009.md index b67063c43d9..9eba47f7701 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1009.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1009.md @@ -8,6 +8,6 @@ ms.assetid: c11aceaf-3527-4509-867d-e7b22254e276 --- # Resource Compiler Fatal Error RW1009 -Error creating resource-name +> Error creating resource-name Could not create specified .res file. Make sure it is not being created on a read-only drive. Use /V to find out whether the file is being created. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1016.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1016.md index a7267fa6023..91f81cb1933 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1016.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1016.md @@ -8,6 +8,6 @@ ms.assetid: 7c93b6b6-3684-4b09-b71d-160c400f75a5 --- # Resource Compiler Fatal Error RW1016 -RC terminating after preprocessor errors +> RC terminating after preprocessor errors The Resource Compiler halted due to other errors. Fix the other errors and recompile. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1022.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1022.md index 1831781a0d5..a67767aa9a2 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1022.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1022.md @@ -8,7 +8,7 @@ ms.assetid: 6747c8a9-9c9b-4422-b414-0645d22092d0 --- # Resource Compiler Fatal Error RW1022 -**I/O error writing file** +> I/O error writing file The Resource Compiler could not write to a file. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1023.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1023.md index 6a5c84c99e7..7e43fea9c59 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1023.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1023.md @@ -8,6 +8,6 @@ ms.assetid: 1fe0964a-a8cc-4ffa-a427-dbce39f23173 --- # Resource Compiler Fatal Error RW1023 -I/O error writing file, drive full +> I/O error writing file, drive full Free space must equal at least twice the size of the executable file you are creating. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1025.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1025.md index 4e3a45b966d..3890c3fb567 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1025.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1025.md @@ -8,7 +8,7 @@ ms.assetid: 561a02af-e7e0-442a-8ad3-a00b2ca1b62e --- # Resource Compiler Fatal Error RW1025 -Out of far heap memory +> Out of far heap memory Check for memory-resident software that might be taking up too much space. Use the CHKDSK program to find out how much memory you have. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1030.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1030.md index b737df8c45d..43a0b97f782 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1030.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1030.md @@ -8,6 +8,6 @@ ms.assetid: 10727997-9ded-4afc-93b3-58fb435c3da8 --- # Resource Compiler Fatal Error RW1030 -Output Error +> Output Error This error can be caused if the Resource Compiler was not able to create the destination file. Make sure that there is enough disk space and that you have write permission on the volume. From 9947d9cd078a4dcb8be4e087aadf353236fc5f1c Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 14 Sep 2025 21:29:30 +0800 Subject: [PATCH 1829/2255] Add "Remarks" headings for error references in range [RW1004, RW2003] --- .../tool-errors/resource-compiler-error-rw2001.md | 2 ++ .../tool-errors/resource-compiler-fatal-error-rw1004.md | 2 ++ .../tool-errors/resource-compiler-fatal-error-rw1009.md | 2 ++ .../tool-errors/resource-compiler-fatal-error-rw1016.md | 2 ++ .../tool-errors/resource-compiler-fatal-error-rw1022.md | 2 ++ .../tool-errors/resource-compiler-fatal-error-rw1023.md | 2 ++ .../tool-errors/resource-compiler-fatal-error-rw1025.md | 2 ++ .../tool-errors/resource-compiler-fatal-error-rw1030.md | 2 ++ 8 files changed, 16 insertions(+) diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rw2001.md b/docs/error-messages/tool-errors/resource-compiler-error-rw2001.md index 8d6b30ba3e8..bb164dd72b5 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rw2001.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rw2001.md @@ -10,6 +10,8 @@ ms.assetid: 963bdc7d-6ebe-4378-8bbc-47dfcf5d330c > Invalid directive in preprocessed RC file +## Remarks + The RC file contains a **#pragma** directive. Use the **#ifndef** preprocessor directive with the **RC_INVOKED** constant that the Resource Compiler defines when it processes an include file. Place the **#pragma** directive inside a block of code that is not processed when the **RC_INVOKED** constant is defined. Code in the block is processed only by the C/C++ compiler and not by the Resource Compiler. The following sample code demonstrates this technique: diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1004.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1004.md index 2549881b64b..b6176580e8d 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1004.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1004.md @@ -10,4 +10,6 @@ ms.assetid: 89cfcb02-a5d3-4271-be4f-df2ec3f94f3e > Unexpected end of file +## Remarks + This error can be caused by missing line feed and carriage-return characters on the last line of a text file. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1009.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1009.md index 9eba47f7701..bce51133b10 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1009.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1009.md @@ -10,4 +10,6 @@ ms.assetid: c11aceaf-3527-4509-867d-e7b22254e276 > Error creating resource-name +## Remarks + Could not create specified .res file. Make sure it is not being created on a read-only drive. Use /V to find out whether the file is being created. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1016.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1016.md index 91f81cb1933..fdfd84f572f 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1016.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1016.md @@ -10,4 +10,6 @@ ms.assetid: 7c93b6b6-3684-4b09-b71d-160c400f75a5 > RC terminating after preprocessor errors +## Remarks + The Resource Compiler halted due to other errors. Fix the other errors and recompile. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1022.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1022.md index a67767aa9a2..f543436d203 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1022.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1022.md @@ -10,6 +10,8 @@ ms.assetid: 6747c8a9-9c9b-4422-b414-0645d22092d0 > I/O error writing file +## Remarks + The Resource Compiler could not write to a file. ### To fix by checking the following possible causes diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1023.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1023.md index 7e43fea9c59..5548b0d4d6e 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1023.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1023.md @@ -10,4 +10,6 @@ ms.assetid: 1fe0964a-a8cc-4ffa-a427-dbce39f23173 > I/O error writing file, drive full +## Remarks + Free space must equal at least twice the size of the executable file you are creating. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1025.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1025.md index 3890c3fb567..feab4d74eb1 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1025.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1025.md @@ -10,6 +10,8 @@ ms.assetid: 561a02af-e7e0-442a-8ad3-a00b2ca1b62e > Out of far heap memory +## Remarks + Check for memory-resident software that might be taking up too much space. Use the CHKDSK program to find out how much memory you have. If you are creating a large resource file, split the resource script into two files. After creating two .res files, use the MS-DOS command line to join them together: diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1030.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1030.md index 43a0b97f782..be393b0a414 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1030.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1030.md @@ -10,4 +10,6 @@ ms.assetid: 10727997-9ded-4afc-93b3-58fb435c3da8 > Output Error +## Remarks + This error can be caused if the Resource Compiler was not able to create the destination file. Make sure that there is enough disk space and that you have write permission on the volume. From dc1bda36f845269d8be2481433f82200dc0aa59e Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 14 Sep 2025 21:34:05 +0800 Subject: [PATCH 1830/2255] Update metadata for error references in range [RW1004, RW2003] --- .../tool-errors/resource-compiler-error-rw2001.md | 5 ++--- .../tool-errors/resource-compiler-error-rw2002.md | 5 ++--- .../tool-errors/resource-compiler-error-rw2003.md | 5 ++--- .../tool-errors/resource-compiler-fatal-error-rw1004.md | 5 ++--- .../tool-errors/resource-compiler-fatal-error-rw1009.md | 5 ++--- .../tool-errors/resource-compiler-fatal-error-rw1016.md | 5 ++--- .../tool-errors/resource-compiler-fatal-error-rw1022.md | 5 ++--- .../tool-errors/resource-compiler-fatal-error-rw1023.md | 5 ++--- .../tool-errors/resource-compiler-fatal-error-rw1025.md | 5 ++--- .../tool-errors/resource-compiler-fatal-error-rw1030.md | 5 ++--- 10 files changed, 20 insertions(+), 30 deletions(-) diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rw2001.md b/docs/error-messages/tool-errors/resource-compiler-error-rw2001.md index bb164dd72b5..c4ae99cc7aa 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rw2001.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rw2001.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RW2001" title: "Resource Compiler Error RW2001" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RW2001" +ms.date: 11/04/2016 f1_keywords: ["RW2001"] helpviewer_keywords: ["RW2001"] -ms.assetid: 963bdc7d-6ebe-4378-8bbc-47dfcf5d330c --- # Resource Compiler Error RW2001 diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rw2002.md b/docs/error-messages/tool-errors/resource-compiler-error-rw2002.md index b129e7a266e..f840e80f4ea 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rw2002.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rw2002.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RW2002" title: "Resource Compiler Error RW2002" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RW2002" +ms.date: 11/04/2016 f1_keywords: ["RW2002"] helpviewer_keywords: ["RW2002"] -ms.assetid: b1d1a49b-b50b-4b0b-9f09-c7762e2dbe8f --- # Resource Compiler Error RW2002 diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rw2003.md b/docs/error-messages/tool-errors/resource-compiler-error-rw2003.md index 52c26140026..22346f8261c 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rw2003.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rw2003.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RW2003" title: "Resource Compiler Error RW2003" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RW2003" +ms.date: 11/04/2016 f1_keywords: ["RW2003"] helpviewer_keywords: ["RW2003"] -ms.assetid: 9dc0ba70-6776-4aef-b316-5f1711d8e42e --- # Resource Compiler Error RW2003 diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1004.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1004.md index b6176580e8d..be2236c6d44 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1004.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1004.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Fatal Error RW1004" title: "Resource Compiler Fatal Error RW1004" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Fatal Error RW1004" +ms.date: 11/04/2016 f1_keywords: ["RW1004"] helpviewer_keywords: ["RW1004"] -ms.assetid: 89cfcb02-a5d3-4271-be4f-df2ec3f94f3e --- # Resource Compiler Fatal Error RW1004 diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1009.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1009.md index bce51133b10..c3865536102 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1009.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1009.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Fatal Error RW1009" title: "Resource Compiler Fatal Error RW1009" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Fatal Error RW1009" +ms.date: 11/04/2016 f1_keywords: ["RW1009"] helpviewer_keywords: ["RW1009"] -ms.assetid: c11aceaf-3527-4509-867d-e7b22254e276 --- # Resource Compiler Fatal Error RW1009 diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1016.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1016.md index fdfd84f572f..1475a9c5de5 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1016.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1016.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Fatal Error RW1016" title: "Resource Compiler Fatal Error RW1016" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Fatal Error RW1016" +ms.date: 11/04/2016 f1_keywords: ["RW1016"] helpviewer_keywords: ["RW1016"] -ms.assetid: 7c93b6b6-3684-4b09-b71d-160c400f75a5 --- # Resource Compiler Fatal Error RW1016 diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1022.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1022.md index f543436d203..c30a6760206 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1022.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1022.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Fatal Error RW1022" title: "Resource Compiler Fatal Error RW1022" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Fatal Error RW1022" +ms.date: 11/04/2016 f1_keywords: ["RW1022"] helpviewer_keywords: ["RW1022"] -ms.assetid: 6747c8a9-9c9b-4422-b414-0645d22092d0 --- # Resource Compiler Fatal Error RW1022 diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1023.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1023.md index 5548b0d4d6e..1d72a674995 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1023.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1023.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Fatal Error RW1023" title: "Resource Compiler Fatal Error RW1023" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Fatal Error RW1023" +ms.date: 11/04/2016 f1_keywords: ["RW1023"] helpviewer_keywords: ["RW1023"] -ms.assetid: 1fe0964a-a8cc-4ffa-a427-dbce39f23173 --- # Resource Compiler Fatal Error RW1023 diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1025.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1025.md index feab4d74eb1..036bafa0f34 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1025.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1025.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Fatal Error RW1025" title: "Resource Compiler Fatal Error RW1025" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Fatal Error RW1025" +ms.date: 11/04/2016 f1_keywords: ["RW1025"] helpviewer_keywords: ["RW1025"] -ms.assetid: 561a02af-e7e0-442a-8ad3-a00b2ca1b62e --- # Resource Compiler Fatal Error RW1025 diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1030.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1030.md index be393b0a414..35842f821ab 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1030.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rw1030.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Fatal Error RW1030" title: "Resource Compiler Fatal Error RW1030" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Fatal Error RW1030" +ms.date: 11/04/2016 f1_keywords: ["RW1030"] helpviewer_keywords: ["RW1030"] -ms.assetid: 10727997-9ded-4afc-93b3-58fb435c3da8 --- # Resource Compiler Fatal Error RW1030 From 60aeb126f40d7c63c73128c07358ab302af8320c Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Mon, 15 Sep 2025 23:26:16 +0800 Subject: [PATCH 1831/2255] Add blockquotes for error messages in range [RC1002, RC1208] --- .../tool-errors/resource-compiler-fatal-error-rc1002.md | 2 +- .../tool-errors/resource-compiler-fatal-error-rc1004.md | 2 +- .../tool-errors/resource-compiler-fatal-error-rc1009.md | 2 +- .../tool-errors/resource-compiler-fatal-error-rc1011.md | 2 +- .../tool-errors/resource-compiler-fatal-error-rc1015.md | 2 +- .../tool-errors/resource-compiler-fatal-error-rc1017.md | 2 +- .../tool-errors/resource-compiler-fatal-error-rc1018.md | 2 +- .../tool-errors/resource-compiler-fatal-error-rc1019.md | 2 +- .../tool-errors/resource-compiler-fatal-error-rc1020.md | 2 +- .../tool-errors/resource-compiler-fatal-error-rc1021.md | 2 +- .../tool-errors/resource-compiler-fatal-error-rc1022.md | 2 +- .../tool-errors/resource-compiler-fatal-error-rc1047.md | 2 +- .../tool-errors/resource-compiler-fatal-error-rc1052.md | 2 +- .../tool-errors/resource-compiler-fatal-error-rc1067.md | 2 +- .../tool-errors/resource-compiler-fatal-error-rc1102.md | 2 +- .../tool-errors/resource-compiler-fatal-error-rc1105.md | 2 +- .../tool-errors/resource-compiler-fatal-error-rc1109.md | 2 +- .../tool-errors/resource-compiler-fatal-error-rc1116.md | 2 +- .../tool-errors/resource-compiler-fatal-error-rc1120.md | 2 +- .../tool-errors/resource-compiler-fatal-error-rc1121.md | 2 +- .../tool-errors/resource-compiler-fatal-error-rc1203.md | 2 +- .../tool-errors/resource-compiler-fatal-error-rc1205.md | 2 +- .../tool-errors/resource-compiler-fatal-error-rc1208.md | 2 +- 23 files changed, 23 insertions(+), 23 deletions(-) diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1002.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1002.md index fbff190aed7..3d045dc2827 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1002.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1002.md @@ -8,7 +8,7 @@ ms.assetid: b43dfece-0dc3-4d0b-9d8f-509699b9ae80 --- # Resource Compiler Fatal Error RC1002 -out of heap space +> out of heap space ### To fix by using the following possible solutions diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1004.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1004.md index 22db02bbda8..06594310e94 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1004.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1004.md @@ -8,6 +8,6 @@ ms.assetid: f9b703d4-6767-4721-9450-37079bcc7152 --- # Resource Compiler Fatal Error RC1004 -unexpected end of file found +> unexpected end of file found This error can be caused by missing line feed and carriage return characters on the last line of a text file. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1009.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1009.md index 2f39079e129..8ca37af2efd 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1009.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1009.md @@ -8,6 +8,6 @@ ms.assetid: c377a068-bcc3-4ec4-b725-eb6927e10128 --- # Resource Compiler Fatal Error RC1009 -compiler limit : macros too deeply nested 'macro' +> compiler limit : macros too deeply nested 'macro' The file exceeds the Resource Compiler limit for macro nesting. Revise the specified source file to decrease the nesting depth of its macros. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1011.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1011.md index b734e138b82..6abbf5b97ab 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1011.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1011.md @@ -8,6 +8,6 @@ ms.assetid: ae0b89ec-0a31-4f8e-b9d0-f974152c185e --- # Resource Compiler Fatal Error RC1011 -compiler limit : 'identifier' : macro definition too big +> compiler limit : 'identifier' : macro definition too big Try to split the definition into shorter definitions. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1015.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1015.md index b7031ac9c68..550820dfe4a 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1015.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1015.md @@ -8,7 +8,7 @@ ms.assetid: 23f187e1-5538-40b5-9042-edd2888f55c2 --- # Resource Compiler Fatal Error RC1015 -cannot open include file 'filename' +> cannot open include file 'filename' The given include file does not exist, could not be opened, or was not found. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1017.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1017.md index d27bdb374da..ab3f37bb22a 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1017.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1017.md @@ -8,6 +8,6 @@ ms.assetid: 62ac1356-4481-49a0-8873-36daf42ffdcd --- # Resource Compiler Fatal Error RC1017 -invalid integer constant expression +> invalid integer constant expression The expression in an `#if` directive either did not exist or does not evaluate to a constant. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1018.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1018.md index 0917185e27d..f6a466ff323 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1018.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1018.md @@ -8,7 +8,7 @@ ms.assetid: bb1d2efd-6898-412f-bb03-9ff94c54e4dc --- # Resource Compiler Fatal Error RC1018 -unexpected '#elif' +> unexpected '#elif' The `#elif` directive did not appear within an `#if`, **#ifdef**, or **#ifndef** construct. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1019.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1019.md index b6056dd12f1..5c392fc4190 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1019.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1019.md @@ -8,7 +8,7 @@ ms.assetid: 432fff44-04a9-4e13-91c6-870df6f0b4e4 --- # Resource Compiler Fatal Error RC1019 -unexpected '#else' +> unexpected '#else' The `#else` directive did not appear within an `#if`, **#ifdef**, or **#ifndef** construct. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1020.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1020.md index bc34220daff..b444a89b50c 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1020.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1020.md @@ -8,7 +8,7 @@ ms.assetid: 3e073ebf-9136-4bf8-ac6a-3c642ed64594 --- # Resource Compiler Fatal Error RC1020 -unexpected '#endif' +> unexpected '#endif' An `#endif` directive appeared without a matching `#if`, **#ifdef**, or **#ifndef** directive. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1021.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1021.md index 1a2f34d860e..67b31864a49 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1021.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1021.md @@ -8,7 +8,7 @@ ms.assetid: 9bc8858c-aa50-4b94-b60e-daf75ab45d77 --- # Resource Compiler Fatal Error RC1021 -invalid preprocessor command 'string' +> invalid preprocessor command 'string' The characters following the number sign (**#**) did not form a valid preprocessor directive. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1022.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1022.md index dc3ef2c2b15..2c297f4fcae 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1022.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1022.md @@ -8,7 +8,7 @@ ms.assetid: 30a0f3c7-08a8-4c40-b0de-46ee5feb789d --- # Resource Compiler Fatal Error RC1022 -expected '#endif' +> expected '#endif' An `#if`, **#ifdef**, or **#ifndef** directive was not terminated with an `#endif` directive. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1047.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1047.md index 08e433d25b4..4588843a8a6 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1047.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1047.md @@ -8,6 +8,6 @@ ms.assetid: cd794a87-2634-4d25-9fd3-8c934e3c4d1e --- # Resource Compiler Fatal Error RC1047 -"too many option options, 'string'" +> "too many option options, 'string'" The given option was specified too many times. The given string is the argument to the option that caused the error. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1052.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1052.md index c537dcb4165..489eb0b52e4 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1052.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1052.md @@ -8,7 +8,7 @@ ms.assetid: 59803673-492b-44fa-80fa-df93b8aaf9fb --- # Resource Compiler Fatal Error RC1052 -compiler limit : #if or #ifdef blocks nested too deeply +> compiler limit : #if or #ifdef blocks nested too deeply The program exceeded the maximum allowable nesting levels for `#if` and `#ifdef` directives. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1067.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1067.md index 56528097fbf..271a552c37d 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1067.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1067.md @@ -8,6 +8,6 @@ ms.assetid: 6b23677d-428d-47c6-9207-8b85f7718e03 --- # Resource Compiler Fatal Error RC1067 -compiler limit : identifier overflowed internal buffer +> compiler limit : identifier overflowed internal buffer An internal compiler limit was exceeded. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1102.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1102.md index ff54132abfa..16df41d0010 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1102.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1102.md @@ -8,6 +8,6 @@ ms.assetid: bd2091f8-ef5e-4151-a8d6-98043e9422b6 --- # Resource Compiler Fatal Error RC1102 -internal error : too many arguments to RCPP +> internal error : too many arguments to RCPP Too many arguments were passed to the Resource Compiler preprocessor. Reduce the number of symbols defined with the Define Symbols (/d) option by defining them in your source. This error can also be caused by specifying too many include file search paths using the Include Search Path option (/i). diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1105.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1105.md index 1bdddf86718..7d4d31cc215 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1105.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1105.md @@ -8,6 +8,6 @@ ms.assetid: 80ce18e7-44ee-4844-bede-321fe0844d56 --- # Resource Compiler Fatal Error RC1105 -invalid switch, option: too many /d switches +> invalid switch, option: too many /d switches Too many symbols were defined using the Define Symbols (/d) option. Define some symbols in your source and recompile. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1109.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1109.md index 37e4d29ac92..f6f4be10592 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1109.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1109.md @@ -8,6 +8,6 @@ ms.assetid: 2d3ec1c9-86fd-4d53-aa52-840c310b8328 --- # Resource Compiler Fatal Error RC1109 -error creating resource-name +> error creating resource-name Could not create specified .res file. Make sure it is not being created on a read-only drive. Use the /V option to find out whether the file is being created. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1116.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1116.md index a2799212719..59444297f7e 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1116.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1116.md @@ -8,6 +8,6 @@ ms.assetid: 1eacc5c3-d946-4615-83e4-1b8ebd472139 --- # Resource Compiler Fatal Error RC1116 -RC terminating after preprocessor errors +> RC terminating after preprocessor errors The Resource Compiler halted due to other errors. Fix the other errors and recompile. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1120.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1120.md index 383bf936aee..3a34d56b0cc 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1120.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1120.md @@ -8,7 +8,7 @@ ms.assetid: 4e462931-e42e-42e3-8bfc-847677194286 --- # Resource Compiler Fatal Error RC1120 -out of memory, needed number bytes +> out of memory, needed number bytes The Resource Compiler ran out of storage for items that it stores in its heap. Usually this is the result of having too many symbols. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1121.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1121.md index e8530fad72c..961d4d97e6d 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1121.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1121.md @@ -8,6 +8,6 @@ ms.assetid: 19ed8c71-d63a-4ff4-8652-a3ef52318a55 --- # Resource Compiler Fatal Error RC1121 -I/O error reading file +> I/O error reading file The Resource Compiler was not able to read a file. Check that the drive containing the file is available and that the file is valid. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1203.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1203.md index 963dc534d54..156a1d7ccd8 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1203.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1203.md @@ -8,6 +8,6 @@ ms.assetid: 60d08fb1-6a51-407c-854e-9a68080cfe2d --- # Resource Compiler Fatal Error RC1203 -invalid hexadecimal default language ID specified. +> invalid hexadecimal default language ID specified. The Specify Default Language (/l) option was followed by an invalid hexadecimal language ID. See [Language and Country/Region Strings](../../c-runtime-library/locale-names-languages-and-country-region-strings.md) in the *Run-Time Library Reference* for a list of valid language IDs. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1205.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1205.md index abdce3697b0..a31245cbf14 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1205.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1205.md @@ -8,6 +8,6 @@ ms.assetid: 6cfbe019-ad8a-4267-b4b9-0d675bb3819a --- # Resource Compiler Fatal Error RC1205 -invalid code page +> invalid code page The Specify Code Page (/c) option was followed by an invalid code page. See [Code Pages](../../c-runtime-library/code-pages.md) in the *Run-Time Library Reference* for more information. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1208.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1208.md index 1ceb943027e..53bf726d2ac 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1208.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1208.md @@ -8,6 +8,6 @@ ms.assetid: 7dacc4ec-3ebd-49b3-ba4c-1a2982bac720 --- # Resource Compiler Fatal Error RC1208 -input file has .RES extension +> input file has .RES extension The .RES extension is used for Resource Compiler output. The .RC extension should be used for Resource Compiler scripts. From 98c80402da7ba93575bebee7c1f66231e7d7db0b Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Mon, 15 Sep 2025 23:28:55 +0800 Subject: [PATCH 1832/2255] Add "Remarks" headings for error references in range [RC1002, RC1208] --- .../tool-errors/resource-compiler-fatal-error-rc1004.md | 2 ++ .../tool-errors/resource-compiler-fatal-error-rc1009.md | 2 ++ .../tool-errors/resource-compiler-fatal-error-rc1011.md | 2 ++ .../tool-errors/resource-compiler-fatal-error-rc1015.md | 2 ++ .../tool-errors/resource-compiler-fatal-error-rc1017.md | 2 ++ .../tool-errors/resource-compiler-fatal-error-rc1018.md | 2 ++ .../tool-errors/resource-compiler-fatal-error-rc1019.md | 2 ++ .../tool-errors/resource-compiler-fatal-error-rc1020.md | 2 ++ .../tool-errors/resource-compiler-fatal-error-rc1021.md | 2 ++ .../tool-errors/resource-compiler-fatal-error-rc1022.md | 2 ++ .../tool-errors/resource-compiler-fatal-error-rc1047.md | 2 ++ .../tool-errors/resource-compiler-fatal-error-rc1052.md | 2 ++ .../tool-errors/resource-compiler-fatal-error-rc1067.md | 2 ++ .../tool-errors/resource-compiler-fatal-error-rc1101.md | 2 ++ .../tool-errors/resource-compiler-fatal-error-rc1102.md | 2 ++ .../tool-errors/resource-compiler-fatal-error-rc1105.md | 2 ++ .../tool-errors/resource-compiler-fatal-error-rc1109.md | 2 ++ .../tool-errors/resource-compiler-fatal-error-rc1116.md | 2 ++ .../tool-errors/resource-compiler-fatal-error-rc1120.md | 2 ++ .../tool-errors/resource-compiler-fatal-error-rc1121.md | 2 ++ .../tool-errors/resource-compiler-fatal-error-rc1203.md | 2 ++ .../tool-errors/resource-compiler-fatal-error-rc1205.md | 2 ++ .../tool-errors/resource-compiler-fatal-error-rc1208.md | 2 ++ 23 files changed, 46 insertions(+) diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1004.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1004.md index 06594310e94..b50184d65c6 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1004.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1004.md @@ -10,4 +10,6 @@ ms.assetid: f9b703d4-6767-4721-9450-37079bcc7152 > unexpected end of file found +## Remarks + This error can be caused by missing line feed and carriage return characters on the last line of a text file. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1009.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1009.md index 8ca37af2efd..15a813b4f2c 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1009.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1009.md @@ -10,4 +10,6 @@ ms.assetid: c377a068-bcc3-4ec4-b725-eb6927e10128 > compiler limit : macros too deeply nested 'macro' +## Remarks + The file exceeds the Resource Compiler limit for macro nesting. Revise the specified source file to decrease the nesting depth of its macros. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1011.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1011.md index 6abbf5b97ab..abf231dc8b1 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1011.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1011.md @@ -10,4 +10,6 @@ ms.assetid: ae0b89ec-0a31-4f8e-b9d0-f974152c185e > compiler limit : 'identifier' : macro definition too big +## Remarks + Try to split the definition into shorter definitions. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1015.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1015.md index 550820dfe4a..444ac9dfc0f 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1015.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1015.md @@ -10,6 +10,8 @@ ms.assetid: 23f187e1-5538-40b5-9042-edd2888f55c2 > cannot open include file 'filename' +## Remarks + The given include file does not exist, could not be opened, or was not found. Make sure that the environment settings are valid and that the correct path for the file is specified. Ensure that sufficient file handles are available to the Resource Compiler. If the file is on a network drive, make sure that you have permissions to open the file. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1017.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1017.md index ab3f37bb22a..f23905beb01 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1017.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1017.md @@ -10,4 +10,6 @@ ms.assetid: 62ac1356-4481-49a0-8873-36daf42ffdcd > invalid integer constant expression +## Remarks + The expression in an `#if` directive either did not exist or does not evaluate to a constant. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1018.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1018.md index f6a466ff323..22cd9d010c9 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1018.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1018.md @@ -10,6 +10,8 @@ ms.assetid: bb1d2efd-6898-412f-bb03-9ff94c54e4dc > unexpected '#elif' +## Remarks + The `#elif` directive did not appear within an `#if`, **#ifdef**, or **#ifndef** construct. Make sure that there is an `#if`, **#ifdef**, or **#ifndef** statement in effect before this statement. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1019.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1019.md index 5c392fc4190..bade3a6bea7 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1019.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1019.md @@ -10,6 +10,8 @@ ms.assetid: 432fff44-04a9-4e13-91c6-870df6f0b4e4 > unexpected '#else' +## Remarks + The `#else` directive did not appear within an `#if`, **#ifdef**, or **#ifndef** construct. Make sure that there is an `#if`, **#ifdef**, or **#ifndef** statement in effect before this statement. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1020.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1020.md index b444a89b50c..69c83089073 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1020.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1020.md @@ -10,6 +10,8 @@ ms.assetid: 3e073ebf-9136-4bf8-ac6a-3c642ed64594 > unexpected '#endif' +## Remarks + An `#endif` directive appeared without a matching `#if`, **#ifdef**, or **#ifndef** directive. Make sure that there is a matching `#endif` for each `#if`, **#ifdef**, and **#ifndef** statement. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1021.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1021.md index 67b31864a49..7835a489e3e 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1021.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1021.md @@ -10,6 +10,8 @@ ms.assetid: 9bc8858c-aa50-4b94-b60e-daf75ab45d77 > invalid preprocessor command 'string' +## Remarks + The characters following the number sign (**#**) did not form a valid preprocessor directive. The number sign cannot be used as the first character in an identifier. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1022.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1022.md index 2c297f4fcae..42a1ecd4aa3 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1022.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1022.md @@ -10,6 +10,8 @@ ms.assetid: 30a0f3c7-08a8-4c40-b0de-46ee5feb789d > expected '#endif' +## Remarks + An `#if`, **#ifdef**, or **#ifndef** directive was not terminated with an `#endif` directive. Make sure that there is an `#if`, **#ifdef**, or **#ifndef** statement in effect before this statement. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1047.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1047.md index 4588843a8a6..50527be0f8d 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1047.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1047.md @@ -10,4 +10,6 @@ ms.assetid: cd794a87-2634-4d25-9fd3-8c934e3c4d1e > "too many option options, 'string'" +## Remarks + The given option was specified too many times. The given string is the argument to the option that caused the error. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1052.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1052.md index 489eb0b52e4..8f45b429a50 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1052.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1052.md @@ -10,6 +10,8 @@ ms.assetid: 59803673-492b-44fa-80fa-df93b8aaf9fb > compiler limit : #if or #ifdef blocks nested too deeply +## Remarks + The program exceeded the maximum allowable nesting levels for `#if` and `#ifdef` directives. This error can be caused by include files that use these preprocessor directives. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1067.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1067.md index 271a552c37d..deee3f379b3 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1067.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1067.md @@ -10,4 +10,6 @@ ms.assetid: 6b23677d-428d-47c6-9207-8b85f7718e03 > compiler limit : identifier overflowed internal buffer +## Remarks + An internal compiler limit was exceeded. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1101.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1101.md index df4bef463ad..bb2141703ff 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1101.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1101.md @@ -10,6 +10,8 @@ ms.assetid: ff273384-b819-464a-8c0e-d5951e4a28b4 > no resource binary filename specified +## Remarks + The Rename Output (/fo) option was not followed by a filename. Use the following syntax for the /fo option: diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1102.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1102.md index 16df41d0010..42301f8d21e 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1102.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1102.md @@ -10,4 +10,6 @@ ms.assetid: bd2091f8-ef5e-4151-a8d6-98043e9422b6 > internal error : too many arguments to RCPP +## Remarks + Too many arguments were passed to the Resource Compiler preprocessor. Reduce the number of symbols defined with the Define Symbols (/d) option by defining them in your source. This error can also be caused by specifying too many include file search paths using the Include Search Path option (/i). diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1105.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1105.md index 7d4d31cc215..c4733e28ab7 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1105.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1105.md @@ -10,4 +10,6 @@ ms.assetid: 80ce18e7-44ee-4844-bede-321fe0844d56 > invalid switch, option: too many /d switches +## Remarks + Too many symbols were defined using the Define Symbols (/d) option. Define some symbols in your source and recompile. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1109.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1109.md index f6f4be10592..3a4d869b2ba 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1109.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1109.md @@ -10,4 +10,6 @@ ms.assetid: 2d3ec1c9-86fd-4d53-aa52-840c310b8328 > error creating resource-name +## Remarks + Could not create specified .res file. Make sure it is not being created on a read-only drive. Use the /V option to find out whether the file is being created. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1116.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1116.md index 59444297f7e..1f39f6b23e0 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1116.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1116.md @@ -10,4 +10,6 @@ ms.assetid: 1eacc5c3-d946-4615-83e4-1b8ebd472139 > RC terminating after preprocessor errors +## Remarks + The Resource Compiler halted due to other errors. Fix the other errors and recompile. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1120.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1120.md index 3a34d56b0cc..1e8df7b33c8 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1120.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1120.md @@ -10,6 +10,8 @@ ms.assetid: 4e462931-e42e-42e3-8bfc-847677194286 > out of memory, needed number bytes +## Remarks + The Resource Compiler ran out of storage for items that it stores in its heap. Usually this is the result of having too many symbols. ### To fix by using the following possible solutions diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1121.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1121.md index 961d4d97e6d..bb55dfa220e 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1121.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1121.md @@ -10,4 +10,6 @@ ms.assetid: 19ed8c71-d63a-4ff4-8652-a3ef52318a55 > I/O error reading file +## Remarks + The Resource Compiler was not able to read a file. Check that the drive containing the file is available and that the file is valid. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1203.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1203.md index 156a1d7ccd8..1798bbe8161 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1203.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1203.md @@ -10,4 +10,6 @@ ms.assetid: 60d08fb1-6a51-407c-854e-9a68080cfe2d > invalid hexadecimal default language ID specified. +## Remarks + The Specify Default Language (/l) option was followed by an invalid hexadecimal language ID. See [Language and Country/Region Strings](../../c-runtime-library/locale-names-languages-and-country-region-strings.md) in the *Run-Time Library Reference* for a list of valid language IDs. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1205.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1205.md index a31245cbf14..a36c83307f0 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1205.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1205.md @@ -10,4 +10,6 @@ ms.assetid: 6cfbe019-ad8a-4267-b4b9-0d675bb3819a > invalid code page +## Remarks + The Specify Code Page (/c) option was followed by an invalid code page. See [Code Pages](../../c-runtime-library/code-pages.md) in the *Run-Time Library Reference* for more information. diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1208.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1208.md index 53bf726d2ac..47c88f3ad85 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1208.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1208.md @@ -10,4 +10,6 @@ ms.assetid: 7dacc4ec-3ebd-49b3-ba4c-1a2982bac720 > input file has .RES extension +## Remarks + The .RES extension is used for Resource Compiler output. The .RC extension should be used for Resource Compiler scripts. From dfa547f589161aba5ac6890d9b1d30a586542cd3 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Mon, 15 Sep 2025 23:33:05 +0800 Subject: [PATCH 1833/2255] Update metadata for error references in range [RC1002, RC1208] --- .../tool-errors/resource-compiler-fatal-error-rc1002.md | 5 ++--- .../tool-errors/resource-compiler-fatal-error-rc1004.md | 5 ++--- .../tool-errors/resource-compiler-fatal-error-rc1009.md | 5 ++--- .../tool-errors/resource-compiler-fatal-error-rc1011.md | 5 ++--- .../tool-errors/resource-compiler-fatal-error-rc1015.md | 5 ++--- .../tool-errors/resource-compiler-fatal-error-rc1017.md | 5 ++--- .../tool-errors/resource-compiler-fatal-error-rc1018.md | 5 ++--- .../tool-errors/resource-compiler-fatal-error-rc1019.md | 5 ++--- .../tool-errors/resource-compiler-fatal-error-rc1020.md | 5 ++--- .../tool-errors/resource-compiler-fatal-error-rc1021.md | 5 ++--- .../tool-errors/resource-compiler-fatal-error-rc1022.md | 5 ++--- .../tool-errors/resource-compiler-fatal-error-rc1047.md | 5 ++--- .../tool-errors/resource-compiler-fatal-error-rc1052.md | 5 ++--- .../tool-errors/resource-compiler-fatal-error-rc1067.md | 5 ++--- .../tool-errors/resource-compiler-fatal-error-rc1101.md | 5 ++--- .../tool-errors/resource-compiler-fatal-error-rc1102.md | 5 ++--- .../tool-errors/resource-compiler-fatal-error-rc1105.md | 5 ++--- .../tool-errors/resource-compiler-fatal-error-rc1109.md | 5 ++--- .../tool-errors/resource-compiler-fatal-error-rc1116.md | 5 ++--- .../tool-errors/resource-compiler-fatal-error-rc1120.md | 5 ++--- .../tool-errors/resource-compiler-fatal-error-rc1121.md | 5 ++--- .../tool-errors/resource-compiler-fatal-error-rc1203.md | 5 ++--- .../tool-errors/resource-compiler-fatal-error-rc1205.md | 5 ++--- .../tool-errors/resource-compiler-fatal-error-rc1208.md | 5 ++--- 24 files changed, 48 insertions(+), 72 deletions(-) diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1002.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1002.md index 3d045dc2827..7c7a2f888cc 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1002.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1002.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Fatal Error RC1002" title: "Resource Compiler Fatal Error RC1002" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Fatal Error RC1002" +ms.date: 11/04/2016 f1_keywords: ["RC1002"] helpviewer_keywords: ["RC1002"] -ms.assetid: b43dfece-0dc3-4d0b-9d8f-509699b9ae80 --- # Resource Compiler Fatal Error RC1002 diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1004.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1004.md index b50184d65c6..ad47b438b10 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1004.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1004.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Fatal Error RC1004" title: "Resource Compiler Fatal Error RC1004" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Fatal Error RC1004" +ms.date: 11/04/2016 f1_keywords: ["RC1004"] helpviewer_keywords: ["RC1004"] -ms.assetid: f9b703d4-6767-4721-9450-37079bcc7152 --- # Resource Compiler Fatal Error RC1004 diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1009.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1009.md index 15a813b4f2c..edebbfee426 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1009.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1009.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Fatal Error RC1009" title: "Resource Compiler Fatal Error RC1009" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Fatal Error RC1009" +ms.date: 11/04/2016 f1_keywords: ["RC1009"] helpviewer_keywords: ["RC1009"] -ms.assetid: c377a068-bcc3-4ec4-b725-eb6927e10128 --- # Resource Compiler Fatal Error RC1009 diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1011.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1011.md index abf231dc8b1..bcfe253dd25 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1011.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1011.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Fatal Error RC1011" title: "Resource Compiler Fatal Error RC1011" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Fatal Error RC1011" +ms.date: 11/04/2016 f1_keywords: ["RC1011"] helpviewer_keywords: ["RC1011"] -ms.assetid: ae0b89ec-0a31-4f8e-b9d0-f974152c185e --- # Resource Compiler Fatal Error RC1011 diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1015.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1015.md index 444ac9dfc0f..71057ea62f5 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1015.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1015.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Fatal Error RC1015" title: "Resource Compiler Fatal Error RC1015" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Fatal Error RC1015" +ms.date: 11/04/2016 f1_keywords: ["RC1015"] helpviewer_keywords: ["RC1015"] -ms.assetid: 23f187e1-5538-40b5-9042-edd2888f55c2 --- # Resource Compiler Fatal Error RC1015 diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1017.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1017.md index f23905beb01..361883e2bc9 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1017.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1017.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Fatal Error RC1017" title: "Resource Compiler Fatal Error RC1017" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Fatal Error RC1017" +ms.date: 11/04/2016 f1_keywords: ["RC1017"] helpviewer_keywords: ["RC1017"] -ms.assetid: 62ac1356-4481-49a0-8873-36daf42ffdcd --- # Resource Compiler Fatal Error RC1017 diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1018.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1018.md index 22cd9d010c9..1f3808ee3ee 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1018.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1018.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Fatal Error RC1018" title: "Resource Compiler Fatal Error RC1018" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Fatal Error RC1018" +ms.date: 11/04/2016 f1_keywords: ["RC1018"] helpviewer_keywords: ["RC1018"] -ms.assetid: bb1d2efd-6898-412f-bb03-9ff94c54e4dc --- # Resource Compiler Fatal Error RC1018 diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1019.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1019.md index bade3a6bea7..2ce46126549 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1019.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1019.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Fatal Error RC1019" title: "Resource Compiler Fatal Error RC1019" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Fatal Error RC1019" +ms.date: 11/04/2016 f1_keywords: ["RC1019"] helpviewer_keywords: ["RC1019"] -ms.assetid: 432fff44-04a9-4e13-91c6-870df6f0b4e4 --- # Resource Compiler Fatal Error RC1019 diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1020.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1020.md index 69c83089073..5454a1ef52e 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1020.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1020.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Fatal Error RC1020" title: "Resource Compiler Fatal Error RC1020" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Fatal Error RC1020" +ms.date: 11/04/2016 f1_keywords: ["RC1020"] helpviewer_keywords: ["RC1020"] -ms.assetid: 3e073ebf-9136-4bf8-ac6a-3c642ed64594 --- # Resource Compiler Fatal Error RC1020 diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1021.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1021.md index 7835a489e3e..ccaa3ab1152 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1021.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1021.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Fatal Error RC1021" title: "Resource Compiler Fatal Error RC1021" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Fatal Error RC1021" +ms.date: 11/04/2016 f1_keywords: ["RC1021"] helpviewer_keywords: ["RC1021"] -ms.assetid: 9bc8858c-aa50-4b94-b60e-daf75ab45d77 --- # Resource Compiler Fatal Error RC1021 diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1022.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1022.md index 42a1ecd4aa3..b85384b0a86 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1022.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1022.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Fatal Error RC1022" title: "Resource Compiler Fatal Error RC1022" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Fatal Error RC1022" +ms.date: 11/04/2016 f1_keywords: ["RC1022"] helpviewer_keywords: ["RC1022"] -ms.assetid: 30a0f3c7-08a8-4c40-b0de-46ee5feb789d --- # Resource Compiler Fatal Error RC1022 diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1047.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1047.md index 50527be0f8d..a3b544b8fb5 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1047.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1047.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Fatal Error RC1047" title: "Resource Compiler Fatal Error RC1047" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Fatal Error RC1047" +ms.date: 11/04/2016 f1_keywords: ["RC1047"] helpviewer_keywords: ["RC1047"] -ms.assetid: cd794a87-2634-4d25-9fd3-8c934e3c4d1e --- # Resource Compiler Fatal Error RC1047 diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1052.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1052.md index 8f45b429a50..ddda49f8d46 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1052.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1052.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Fatal Error RC1052" title: "Resource Compiler Fatal Error RC1052" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Fatal Error RC1052" +ms.date: 11/04/2016 f1_keywords: ["RC1052"] helpviewer_keywords: ["RC1052"] -ms.assetid: 59803673-492b-44fa-80fa-df93b8aaf9fb --- # Resource Compiler Fatal Error RC1052 diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1067.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1067.md index deee3f379b3..a8a87351368 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1067.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1067.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Fatal Error RC1067" title: "Resource Compiler Fatal Error RC1067" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Fatal Error RC1067" +ms.date: 11/04/2016 f1_keywords: ["RC1067"] helpviewer_keywords: ["RC1067"] -ms.assetid: 6b23677d-428d-47c6-9207-8b85f7718e03 --- # Resource Compiler Fatal Error RC1067 diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1101.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1101.md index bb2141703ff..889f6601ddd 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1101.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1101.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Fatal Error RC1101" title: "Resource Compiler Fatal Error RC1101" -ms.date: "08/27/2018" +description: "Learn more about: Resource Compiler Fatal Error RC1101" +ms.date: 08/27/2018 f1_keywords: ["RC1101"] helpviewer_keywords: ["RC1101"] -ms.assetid: ff273384-b819-464a-8c0e-d5951e4a28b4 --- # Resource Compiler Fatal Error RC1101 diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1102.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1102.md index 42301f8d21e..9074d14d03f 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1102.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1102.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Fatal Error RC1102" title: "Resource Compiler Fatal Error RC1102" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Fatal Error RC1102" +ms.date: 11/04/2016 f1_keywords: ["RC1102"] helpviewer_keywords: ["RC1102"] -ms.assetid: bd2091f8-ef5e-4151-a8d6-98043e9422b6 --- # Resource Compiler Fatal Error RC1102 diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1105.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1105.md index c4733e28ab7..0e0c81d1668 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1105.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1105.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Fatal Error RC1105" title: "Resource Compiler Fatal Error RC1105" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Fatal Error RC1105" +ms.date: 11/04/2016 f1_keywords: ["RC1105"] helpviewer_keywords: ["RC1105"] -ms.assetid: 80ce18e7-44ee-4844-bede-321fe0844d56 --- # Resource Compiler Fatal Error RC1105 diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1109.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1109.md index 3a4d869b2ba..0e23c8176dd 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1109.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1109.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Fatal Error RC1109" title: "Resource Compiler Fatal Error RC1109" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Fatal Error RC1109" +ms.date: 11/04/2016 f1_keywords: ["RC1109"] helpviewer_keywords: ["RC1109"] -ms.assetid: 2d3ec1c9-86fd-4d53-aa52-840c310b8328 --- # Resource Compiler Fatal Error RC1109 diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1116.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1116.md index 1f39f6b23e0..50acf9d9525 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1116.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1116.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Fatal Error RC1116" title: "Resource Compiler Fatal Error RC1116" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Fatal Error RC1116" +ms.date: 11/04/2016 f1_keywords: ["RC1116"] helpviewer_keywords: ["RC1116"] -ms.assetid: 1eacc5c3-d946-4615-83e4-1b8ebd472139 --- # Resource Compiler Fatal Error RC1116 diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1120.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1120.md index 1e8df7b33c8..cda7bd1fa63 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1120.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1120.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Fatal Error RC1120" title: "Resource Compiler Fatal Error RC1120" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Fatal Error RC1120" +ms.date: 11/04/2016 f1_keywords: ["RC1120"] helpviewer_keywords: ["RC1120"] -ms.assetid: 4e462931-e42e-42e3-8bfc-847677194286 --- # Resource Compiler Fatal Error RC1120 diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1121.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1121.md index bb55dfa220e..c9fc4d8f16a 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1121.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1121.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Fatal Error RC1121" title: "Resource Compiler Fatal Error RC1121" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Fatal Error RC1121" +ms.date: 11/04/2016 f1_keywords: ["RC1121"] helpviewer_keywords: ["RC1121"] -ms.assetid: 19ed8c71-d63a-4ff4-8652-a3ef52318a55 --- # Resource Compiler Fatal Error RC1121 diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1203.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1203.md index 1798bbe8161..405a2606b77 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1203.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1203.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Fatal Error RC1203" title: "Resource Compiler Fatal Error RC1203" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Fatal Error RC1203" +ms.date: 11/04/2016 f1_keywords: ["RC1203"] helpviewer_keywords: ["RC1203"] -ms.assetid: 60d08fb1-6a51-407c-854e-9a68080cfe2d --- # Resource Compiler Fatal Error RC1203 diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1205.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1205.md index a36c83307f0..445ae2739e7 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1205.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1205.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Fatal Error RC1205" title: "Resource Compiler Fatal Error RC1205" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Fatal Error RC1205" +ms.date: 11/04/2016 f1_keywords: ["RC1205"] helpviewer_keywords: ["RC1205"] -ms.assetid: 6cfbe019-ad8a-4267-b4b9-0d675bb3819a --- # Resource Compiler Fatal Error RC1205 diff --git a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1208.md b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1208.md index 47c88f3ad85..4e98e6ab616 100644 --- a/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1208.md +++ b/docs/error-messages/tool-errors/resource-compiler-fatal-error-rc1208.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Fatal Error RC1208" title: "Resource Compiler Fatal Error RC1208" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Fatal Error RC1208" +ms.date: 11/04/2016 f1_keywords: ["RC1208"] helpviewer_keywords: ["RC1208"] -ms.assetid: 7dacc4ec-3ebd-49b3-ba4c-1a2982bac720 --- # Resource Compiler Fatal Error RC1208 From 114088f53ccace67ee7fad8cfe4f0c21b3ceaad1 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Mon, 15 Sep 2025 23:42:46 +0800 Subject: [PATCH 1834/2255] Add blockquotes for error messages in range [RC2001, RC2175] --- .../tool-errors/resource-compiler-error-rc2001.md | 2 +- .../tool-errors/resource-compiler-error-rc2007.md | 2 +- .../tool-errors/resource-compiler-error-rc2015.md | 2 +- .../tool-errors/resource-compiler-error-rc2017.md | 2 +- .../tool-errors/resource-compiler-error-rc2101.md | 2 +- .../tool-errors/resource-compiler-error-rc2103.md | 2 +- .../tool-errors/resource-compiler-error-rc2104.md | 2 +- .../tool-errors/resource-compiler-error-rc2107.md | 2 +- .../tool-errors/resource-compiler-error-rc2109.md | 2 +- .../tool-errors/resource-compiler-error-rc2111.md | 2 +- .../tool-errors/resource-compiler-error-rc2112.md | 2 +- .../tool-errors/resource-compiler-error-rc2113.md | 2 +- .../tool-errors/resource-compiler-error-rc2114.md | 2 +- .../tool-errors/resource-compiler-error-rc2116.md | 2 +- .../tool-errors/resource-compiler-error-rc2122.md | 2 +- .../tool-errors/resource-compiler-error-rc2124.md | 2 +- .../tool-errors/resource-compiler-error-rc2127.md | 2 +- .../tool-errors/resource-compiler-error-rc2135.md | 2 +- .../tool-errors/resource-compiler-error-rc2144.md | 2 +- .../tool-errors/resource-compiler-error-rc2147.md | 2 +- .../tool-errors/resource-compiler-error-rc2148.md | 2 +- .../tool-errors/resource-compiler-error-rc2151.md | 2 +- .../tool-errors/resource-compiler-error-rc2152.md | 2 +- .../tool-errors/resource-compiler-error-rc2162.md | 2 +- .../tool-errors/resource-compiler-error-rc2163.md | 2 +- .../tool-errors/resource-compiler-error-rc2164.md | 2 +- .../tool-errors/resource-compiler-error-rc2165.md | 2 +- .../tool-errors/resource-compiler-error-rc2167.md | 2 +- .../tool-errors/resource-compiler-error-rc2169.md | 2 +- .../tool-errors/resource-compiler-error-rc2170.md | 2 +- .../tool-errors/resource-compiler-error-rc2171.md | 2 +- .../tool-errors/resource-compiler-error-rc2175.md | 2 +- 32 files changed, 32 insertions(+), 32 deletions(-) diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2001.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2001.md index a6dc03c0ac6..f098bd563cc 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2001.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2001.md @@ -8,7 +8,7 @@ ms.assetid: 92bfb4c0-1879-4606-bb9f-ef7368707b4a --- # Resource Compiler Error RC2001 -newline in constant +> newline in constant A string constant was continued on a second line without either a backslash (**\\**) or closing and opening double quotation marks (**"**). diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2007.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2007.md index 7273ed71fdf..e0845bcb88f 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2007.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2007.md @@ -8,6 +8,6 @@ ms.assetid: a616e506-bef2-4155-9fe0-dbccac8954d3 --- # Resource Compiler Error RC2007 -\#define syntax +> #define syntax An identifier was expected following `#define` in a preprocessing directive. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2015.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2015.md index 5b717ab7cbc..7e91ea37264 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2015.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2015.md @@ -8,7 +8,7 @@ ms.assetid: 99691683-fb9e-4e61-beb1-12e484858570 --- # Resource Compiler Error RC2015 -too many chars in constant +> too many chars in constant A character constant contained more than two characters. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2017.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2017.md index abba418bcbe..353df868297 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2017.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2017.md @@ -8,7 +8,7 @@ ms.assetid: 5fcc0135-cd60-4b1d-a7dd-8a4f2312697b --- # Resource Compiler Error RC2017 -illegal escape sequence +> illegal escape sequence An escape sequence appeared where one was not expected. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2101.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2101.md index 90d7026affd..7d96582cbea 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2101.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2101.md @@ -8,7 +8,7 @@ ms.assetid: 580f9d74-162f-41e9-9438-ddbe3457c359 --- # Resource Compiler Error RC2101 -Invalid directive in preprocessed RC file +> Invalid directive in preprocessed RC file The Resource Compiler file contains a **#pragma** directive. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2103.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2103.md index c49524f2c12..99df8f5159b 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2103.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2103.md @@ -8,6 +8,6 @@ ms.assetid: eedf2366-d1c3-4e7e-815c-d367d976b3f6 --- # Resource Compiler Error RC2103 -unexpected end of file in string literal +> unexpected end of file in string literal An end of file was found before the end of a string. The string is probably missing a closing double quotation mark (**"**). diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2104.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2104.md index eb9bbcda543..60f6f2c94dd 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2104.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2104.md @@ -8,7 +8,7 @@ ms.assetid: 792a3bd8-cb4c-4817-b288-4ce37082b582 --- # Resource Compiler Error RC2104 -undefined keyword or key name: key +> undefined keyword or key name: key The specified keyword or key name is not defined. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2107.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2107.md index 329977b1988..204cfbbb3dd 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2107.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2107.md @@ -8,6 +8,6 @@ ms.assetid: f1786128-aa86-4cdb-a095-05a0b66b5608 --- # Resource Compiler Error RC2107 -**expected numeric command value** +> expected numeric command value The Resource Compiler was expecting a numeric *idvalue* field in the **ACCELERATORS** statement. Make sure that you have used a `#define` constant to specify the value and that the constant is spelled correctly. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2109.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2109.md index f94aac2e868..c6c95200bba 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2109.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2109.md @@ -8,6 +8,6 @@ ms.assetid: b800aa67-33c0-42f5-81a2-7a64a3b6b824 --- # Resource Compiler Error RC2109 -expected numerical dialog constant +> expected numerical dialog constant A **DIALOG** statement requires integer values for the *x, y, width*, and *height* fields. Make sure these values are included after the **DIALOG** keyword and that they are not negative. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2111.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2111.md index 20b4cc9b36d..2a69bda3471 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2111.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2111.md @@ -8,7 +8,7 @@ ms.assetid: 118cba57-82a4-4199-acf4-9d9561946218 --- # Resource Compiler Error RC2111 -invalid control type +> invalid control type Each CONTROL statement in a **DIALOG** statement must be one of the following: 3STATE, AUTO3, AUTOCHECK, AUTORADIO, BEDIT, CHECKBOX, COMBOBOX, CONTROL, CTEXT, DEFPUSHBUTTON, EDITTEXT, GROUPBOX, HEDIT, ICON, IEDIT, LISTBOX, LTEXT, PUSHBOX, PUSHBUTTON, RADIOBUTTON, RTEXT, SCROLLBAR, USERBUTTON. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2112.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2112.md index 452c0280680..c1e6baa8343 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2112.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2112.md @@ -8,6 +8,6 @@ ms.assetid: e9f29540-a90d-4989-a6e8-5f8f32015bd9 --- # Resource Compiler Error RC2112 -BEGIN expected in dialog +> BEGIN expected in dialog The **BEGIN** keyword must immediately follow the **DIALOG** keyword. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2113.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2113.md index c62fc7fcbf1..f34891360a5 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2113.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2113.md @@ -8,6 +8,6 @@ ms.assetid: cbf52e93-ab14-49b7-9ce8-fb55877602ec --- # Resource Compiler Error RC2113 -END expected in dialog +> END expected in dialog The **END** keyword must occur at the end of a **DIALOG** statement. Make sure there are no open quotes left from the preceding statement. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2114.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2114.md index 87705494bec..6a8edae5751 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2114.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2114.md @@ -8,6 +8,6 @@ ms.assetid: abdfdc46-6601-451f-8e81-81e92bcd2208 --- # Resource Compiler Error RC2114 -expected control class name +> expected control class name The `class` field of a CONTROL statement in the **DIALOG** statement must be one of the following types: BUTTON, COMBOBOX, EDIT, LISTBOX, SCROLLBAR, STATIC, or user-defined. Make sure the class is spelled correctly. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2116.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2116.md index c43b2deabbb..e43f5b77f66 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2116.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2116.md @@ -8,6 +8,6 @@ ms.assetid: d9203ddf-798d-490b-be41-0dd3f7d53653 --- # Resource Compiler Error RC2116 -expecting number for ID +> expecting number for ID Expecting a number for the `id` field of a control statement in the **DIALOG** statement. Make sure you have a number or `#define` statement for the control ID. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2122.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2122.md index 7a8d7e682d3..c1aca269209 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2122.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2122.md @@ -8,6 +8,6 @@ ms.assetid: c2f02ec1-1ce8-4a13-b35e-7cd416fa9f41 --- # Resource Compiler Error RC2122 -unknown menu subtype +> unknown menu subtype The *item-definition* field of the **MENU** statement can contain only **MENUITEM** and **POPUP** statements. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2124.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2124.md index a7b4b921d33..4b0e82b97ed 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2124.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2124.md @@ -8,6 +8,6 @@ ms.assetid: 4eb5c4ec-ca9b-46a0-805b-35e040e9ed41 --- # Resource Compiler Error RC2124 -empty menus not allowed +> empty menus not allowed An **END** keyword appears before any menu items are defined in the **MENU** statement. The Resource Compiler does not permit empty menus. Make sure you do not have any open quotation marks within the **MENU** statement. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2127.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2127.md index c3a1a1018d4..57591cd1a7a 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2127.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2127.md @@ -8,6 +8,6 @@ ms.assetid: 13c1599d-ac4c-4044-a59a-48e69511ef7e --- # Resource Compiler Error RC2127 -version WORDs separated by commas expected +> version WORDs separated by commas expected Version numbers in a version resource should be of type **WORD**, and separated by commas. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2135.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2135.md index 81091b335fb..54c923b5494 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2135.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2135.md @@ -8,7 +8,7 @@ ms.assetid: 1509a0fa-1cb7-4654-bcb3-ad5ac973e659 --- # Resource Compiler Error RC2135 -file not found: filename +> file not found: filename The file specified in the Resource Compiler command line was not found. Check to see whether the file has been moved to another directory and whether the file name and path are typed correctly. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2144.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2144.md index 18382c57438..b5e2a50a7e1 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2144.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2144.md @@ -8,7 +8,7 @@ ms.assetid: 1b3ff39a-92cd-4a04-b1a3-b1fa6a805813 --- # Resource Compiler Error RC2144 -PRIMARY LANGUAGE ID not a number +> PRIMARY LANGUAGE ID not a number The PRIMARY LANGUAGE ID must be a hexadecimal language ID. See [Language and Country/Region Strings](../../c-runtime-library/locale-names-languages-and-country-region-strings.md) in the *Run-Time Library Reference* for a list of valid Language IDs. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2147.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2147.md index 6e29e0a636e..c455734931c 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2147.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2147.md @@ -8,7 +8,7 @@ ms.assetid: 09974f06-1731-4e70-b373-f9218e0ee8d9 --- # Resource Compiler Error RC2147 -SUBLANGUAGE ID not a number +> SUBLANGUAGE ID not a number The SUBLANGUAGE ID value must be a number. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2148.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2148.md index a5db826be2f..91afdc072f7 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2148.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2148.md @@ -8,7 +8,7 @@ ms.assetid: 0290065c-35d3-4815-80c5-40bf7132ae1d --- # Resource Compiler Error RC2148 -SUBLANGUAGE ID too large +> SUBLANGUAGE ID too large The SUBLANGUAGE ID value was out of range. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2151.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2151.md index 5f5b597acdd..cd4bedbcba6 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2151.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2151.md @@ -8,7 +8,7 @@ ms.assetid: 3c47e535-c78d-4338-aab9-9b47e2c34728 --- # Resource Compiler Error RC2151 -cannot re-use string constants +> cannot re-use string constants You are using the same value twice in a **STRINGTABLE** statement. Make sure you are not mixing overlapping decimal and hexadecimal values. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2152.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2152.md index 543e1ca9945..22e682d2e22 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2152.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2152.md @@ -8,6 +8,6 @@ ms.assetid: 8efcba8f-9971-43cc-a1cd-8d7c9aec133c --- # Resource Compiler Error RC2152 -invalid control character +> invalid control character A control character in the **ACCELERATORS** statement is invalid. A valid control character consists of one letter (only) following a caret (**^**). diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2162.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2162.md index b88dac5c06d..58b4b2b50fa 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2162.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2162.md @@ -8,6 +8,6 @@ ms.assetid: 4ac713b7-3067-436c-83fd-4180438c4f2c --- # Resource Compiler Error RC2162 -expected macro formal parameter +> expected macro formal parameter The token following a stringizing operator (**#**) was not a formal parameter name. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2163.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2163.md index 236af060128..d3e0b36192f 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2163.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2163.md @@ -8,6 +8,6 @@ ms.assetid: a7e95939-9267-4262-9b49-90dc4157a7da --- # Resource Compiler Error RC2163 -accelerator type required [ASCII or VIRTKEY] +> accelerator type required [ASCII or VIRTKEY] The `type` field in the **ACCELERATORS** statement must contain either the ASCII or VIRTKEY value. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2164.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2164.md index b6ea0321840..19595c375cf 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2164.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2164.md @@ -8,6 +8,6 @@ ms.assetid: 23d7691d-80f3-4979-a519-378e5498d2d1 --- # Resource Compiler Error RC2164 -unexpected value in RCDATA +> unexpected value in RCDATA The *raw-data* values in the **RCDATA** statement must be integers or strings, each separated by a comma. Make sure you did not leave out a comma or leave out a quotation mark around a string. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2165.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2165.md index d0fc2be2f2b..960753d8b03 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2165.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2165.md @@ -8,7 +8,7 @@ ms.assetid: bf7d4630-9355-47e3-87fa-6693fcf0ef0d --- # Resource Compiler Error RC2165 -string not found in DLGINCLUDE statement +> string not found in DLGINCLUDE statement The statement did not specify a valid include file. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2167.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2167.md index 930bd48228a..9f4a3a105dc 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2167.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2167.md @@ -8,6 +8,6 @@ ms.assetid: 9b24a8eb-367b-4ff6-8266-b0c215f32d6a --- # Resource Compiler Error RC2167 -unrecognized VERSIONINFO field; BEGIN or comma expected +> unrecognized VERSIONINFO field; BEGIN or comma expected An unrecognized field was found in the **FIXED** part of a **VERSIONINFO** structure declaration. A **VERSIONINFO** field must be DWORDS separated by a comma. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2169.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2169.md index 361c09d9706..f5fc11164e0 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2169.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2169.md @@ -8,6 +8,6 @@ ms.assetid: 832c19ad-a2e2-4f50-b493-26b791877600 --- # Resource Compiler Error RC2169 -resource file filename is not in 2.03 format +> resource file filename is not in 2.03 format The specified resource used a format earlier than version 2.03. The resource file must be converted or recreated using the format for version 3.00 or later. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2170.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2170.md index 4aba900e450..64a9e6d1155 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2170.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2170.md @@ -8,7 +8,7 @@ ms.assetid: 6ea80c98-0942-41a8-b0b2-2c16c255adf5 --- # Resource Compiler Error RC2170 -bitmap file filename is not in 3.00 format +> bitmap file filename is not in 3.00 format Bitmaps using the Windows version 2.x format cannot be used in version 3.x resource files. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2171.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2171.md index 13e76b8e9c9..2140f4e345f 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2171.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2171.md @@ -8,6 +8,6 @@ ms.assetid: 0c959938-e744-43f3-b460-f05547ffea2a --- # Resource Compiler Error RC2171 -unknown DIB header format +> unknown DIB header format The bitmap header is not a **BITMAPCOREHEADER** or **BITMAPINFOHEADER** structure. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2175.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2175.md index 41d4e56fa14..3004d85368e 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2175.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2175.md @@ -8,6 +8,6 @@ ms.assetid: 3864a371-dba8-41a7-962c-e792709774f1 --- # Resource Compiler Error RC2175 -resource file filename is not in 3.00 format +> resource file filename is not in 3.00 format The specified resource used a format earlier than version 3.00. The resource file must be converted or recreated using the format for version 3.00 or later. From 82f8ef25ca3d682f358127b95fa1a60e8b3f85fc Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Mon, 15 Sep 2025 23:45:52 +0800 Subject: [PATCH 1835/2255] Add "Remarks" headings for error references in range [RC2001, RC2175] --- .../tool-errors/resource-compiler-error-rc2001.md | 2 ++ .../tool-errors/resource-compiler-error-rc2007.md | 2 ++ .../tool-errors/resource-compiler-error-rc2015.md | 2 ++ .../tool-errors/resource-compiler-error-rc2017.md | 2 ++ .../tool-errors/resource-compiler-error-rc2101.md | 2 ++ .../tool-errors/resource-compiler-error-rc2103.md | 2 ++ .../tool-errors/resource-compiler-error-rc2104.md | 2 ++ .../tool-errors/resource-compiler-error-rc2107.md | 2 ++ .../tool-errors/resource-compiler-error-rc2109.md | 2 ++ .../tool-errors/resource-compiler-error-rc2111.md | 2 ++ .../tool-errors/resource-compiler-error-rc2112.md | 2 ++ .../tool-errors/resource-compiler-error-rc2113.md | 2 ++ .../tool-errors/resource-compiler-error-rc2114.md | 2 ++ .../tool-errors/resource-compiler-error-rc2116.md | 2 ++ .../tool-errors/resource-compiler-error-rc2122.md | 2 ++ .../tool-errors/resource-compiler-error-rc2124.md | 2 ++ .../tool-errors/resource-compiler-error-rc2127.md | 2 ++ .../tool-errors/resource-compiler-error-rc2135.md | 2 ++ .../tool-errors/resource-compiler-error-rc2144.md | 2 ++ .../tool-errors/resource-compiler-error-rc2147.md | 2 ++ .../tool-errors/resource-compiler-error-rc2148.md | 2 ++ .../tool-errors/resource-compiler-error-rc2151.md | 2 ++ .../tool-errors/resource-compiler-error-rc2152.md | 2 ++ .../tool-errors/resource-compiler-error-rc2162.md | 2 ++ .../tool-errors/resource-compiler-error-rc2163.md | 2 ++ .../tool-errors/resource-compiler-error-rc2164.md | 2 ++ .../tool-errors/resource-compiler-error-rc2165.md | 2 ++ .../tool-errors/resource-compiler-error-rc2167.md | 2 ++ .../tool-errors/resource-compiler-error-rc2169.md | 2 ++ .../tool-errors/resource-compiler-error-rc2170.md | 2 ++ .../tool-errors/resource-compiler-error-rc2171.md | 2 ++ .../tool-errors/resource-compiler-error-rc2175.md | 2 ++ 32 files changed, 64 insertions(+) diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2001.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2001.md index f098bd563cc..333581fbeb3 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2001.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2001.md @@ -10,6 +10,8 @@ ms.assetid: 92bfb4c0-1879-4606-bb9f-ef7368707b4a > newline in constant +## Remarks + A string constant was continued on a second line without either a backslash (**\\**) or closing and opening double quotation marks (**"**). To break a string constant that is on two lines in the source file, do one of the following: diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2007.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2007.md index e0845bcb88f..e142ab41fd5 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2007.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2007.md @@ -10,4 +10,6 @@ ms.assetid: a616e506-bef2-4155-9fe0-dbccac8954d3 > #define syntax +## Remarks + An identifier was expected following `#define` in a preprocessing directive. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2015.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2015.md index 7e91ea37264..38c4b02a859 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2015.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2015.md @@ -10,6 +10,8 @@ ms.assetid: 99691683-fb9e-4e61-beb1-12e484858570 > too many chars in constant +## Remarks + A character constant contained more than two characters. Character constants are limited to one character (standard character constants) or two characters (long character constants). diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2017.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2017.md index 353df868297..b4248abc322 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2017.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2017.md @@ -10,6 +10,8 @@ ms.assetid: 5fcc0135-cd60-4b1d-a7dd-8a4f2312697b > illegal escape sequence +## Remarks + An escape sequence appeared where one was not expected. An escape sequence — a backslash ( **\\** ) followed by a number or letter — may occur only in a character or string constant. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2101.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2101.md index 7d96582cbea..1d160c15ffd 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2101.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2101.md @@ -10,6 +10,8 @@ ms.assetid: 580f9d74-162f-41e9-9438-ddbe3457c359 > Invalid directive in preprocessed RC file +## Remarks + The Resource Compiler file contains a **#pragma** directive. Use the **#ifndef** preprocessor directive with the RC_INVOKED constant that the Resource Compiler defines when it processes an include file. Place the **#pragma** directive inside a block of code that is not processed when the RC_INVOKED constant is defined. Code in the block is processed only by the C/C++ compiler and not by the Resource Compiler. The following sample code demonstrates this technique: diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2103.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2103.md index 99df8f5159b..3cb9c5d9dd4 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2103.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2103.md @@ -10,4 +10,6 @@ ms.assetid: eedf2366-d1c3-4e7e-815c-d367d976b3f6 > unexpected end of file in string literal +## Remarks + An end of file was found before the end of a string. The string is probably missing a closing double quotation mark (**"**). diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2104.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2104.md index 60f6f2c94dd..be773d79419 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2104.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2104.md @@ -10,6 +10,8 @@ ms.assetid: 792a3bd8-cb4c-4817-b288-4ce37082b582 > undefined keyword or key name: key +## Remarks + The specified keyword or key name is not defined. This error is often caused by a typo in the resource definition, or in the included header file. It can also be caused by a missing header file. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2107.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2107.md index 204cfbbb3dd..3e7774c2ae6 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2107.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2107.md @@ -10,4 +10,6 @@ ms.assetid: f1786128-aa86-4cdb-a095-05a0b66b5608 > expected numeric command value +## Remarks + The Resource Compiler was expecting a numeric *idvalue* field in the **ACCELERATORS** statement. Make sure that you have used a `#define` constant to specify the value and that the constant is spelled correctly. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2109.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2109.md index c6c95200bba..c6bf457bb64 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2109.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2109.md @@ -10,4 +10,6 @@ ms.assetid: b800aa67-33c0-42f5-81a2-7a64a3b6b824 > expected numerical dialog constant +## Remarks + A **DIALOG** statement requires integer values for the *x, y, width*, and *height* fields. Make sure these values are included after the **DIALOG** keyword and that they are not negative. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2111.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2111.md index 2a69bda3471..d7f2218019b 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2111.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2111.md @@ -10,6 +10,8 @@ ms.assetid: 118cba57-82a4-4199-acf4-9d9561946218 > invalid control type +## Remarks + Each CONTROL statement in a **DIALOG** statement must be one of the following: 3STATE, AUTO3, AUTOCHECK, AUTORADIO, BEDIT, CHECKBOX, COMBOBOX, CONTROL, CTEXT, DEFPUSHBUTTON, EDITTEXT, GROUPBOX, HEDIT, ICON, IEDIT, LISTBOX, LTEXT, PUSHBOX, PUSHBUTTON, RADIOBUTTON, RTEXT, SCROLLBAR, USERBUTTON. Make sure these CONTROL statements are spelled correctly. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2112.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2112.md index c1e6baa8343..024b2b6ca03 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2112.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2112.md @@ -10,4 +10,6 @@ ms.assetid: e9f29540-a90d-4989-a6e8-5f8f32015bd9 > BEGIN expected in dialog +## Remarks + The **BEGIN** keyword must immediately follow the **DIALOG** keyword. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2113.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2113.md index f34891360a5..a14e73b2fa5 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2113.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2113.md @@ -10,4 +10,6 @@ ms.assetid: cbf52e93-ab14-49b7-9ce8-fb55877602ec > END expected in dialog +## Remarks + The **END** keyword must occur at the end of a **DIALOG** statement. Make sure there are no open quotes left from the preceding statement. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2114.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2114.md index 6a8edae5751..ded2dcefa15 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2114.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2114.md @@ -10,4 +10,6 @@ ms.assetid: abdfdc46-6601-451f-8e81-81e92bcd2208 > expected control class name +## Remarks + The `class` field of a CONTROL statement in the **DIALOG** statement must be one of the following types: BUTTON, COMBOBOX, EDIT, LISTBOX, SCROLLBAR, STATIC, or user-defined. Make sure the class is spelled correctly. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2116.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2116.md index e43f5b77f66..be11e81688b 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2116.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2116.md @@ -10,4 +10,6 @@ ms.assetid: d9203ddf-798d-490b-be41-0dd3f7d53653 > expecting number for ID +## Remarks + Expecting a number for the `id` field of a control statement in the **DIALOG** statement. Make sure you have a number or `#define` statement for the control ID. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2122.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2122.md index c1aca269209..e15e32699ae 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2122.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2122.md @@ -10,4 +10,6 @@ ms.assetid: c2f02ec1-1ce8-4a13-b35e-7cd416fa9f41 > unknown menu subtype +## Remarks + The *item-definition* field of the **MENU** statement can contain only **MENUITEM** and **POPUP** statements. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2124.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2124.md index 4b0e82b97ed..933ec01d478 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2124.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2124.md @@ -10,4 +10,6 @@ ms.assetid: 4eb5c4ec-ca9b-46a0-805b-35e040e9ed41 > empty menus not allowed +## Remarks + An **END** keyword appears before any menu items are defined in the **MENU** statement. The Resource Compiler does not permit empty menus. Make sure you do not have any open quotation marks within the **MENU** statement. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2127.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2127.md index 57591cd1a7a..c1483b512de 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2127.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2127.md @@ -10,4 +10,6 @@ ms.assetid: 13c1599d-ac4c-4044-a59a-48e69511ef7e > version WORDs separated by commas expected +## Remarks + Version numbers in a version resource should be of type **WORD**, and separated by commas. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2135.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2135.md index 54c923b5494..86caa57a5fe 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2135.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2135.md @@ -10,6 +10,8 @@ ms.assetid: 1509a0fa-1cb7-4654-bcb3-ad5ac973e659 > file not found: filename +## Remarks + The file specified in the Resource Compiler command line was not found. Check to see whether the file has been moved to another directory and whether the file name and path are typed correctly. Files are searched for using the **INCLUDE** environment variable or the Visual C++ **INCLUDE** setting. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2144.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2144.md index b5e2a50a7e1..509c798322c 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2144.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2144.md @@ -10,6 +10,8 @@ ms.assetid: 1b3ff39a-92cd-4a04-b1a3-b1fa6a805813 > PRIMARY LANGUAGE ID not a number +## Remarks + The PRIMARY LANGUAGE ID must be a hexadecimal language ID. See [Language and Country/Region Strings](../../c-runtime-library/locale-names-languages-and-country-region-strings.md) in the *Run-Time Library Reference* for a list of valid Language IDs. This error can also occur if resources have been added and deleted from the .RC file using a tool. To fix this issue, open the .RC file in a text editor and clean up any unused resources manually. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2147.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2147.md index c455734931c..28a307b8719 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2147.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2147.md @@ -10,6 +10,8 @@ ms.assetid: 09974f06-1731-4e70-b373-f9218e0ee8d9 > SUBLANGUAGE ID not a number +## Remarks + The SUBLANGUAGE ID value must be a number. The **LANGUAGE** statement must use the following syntax: diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2148.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2148.md index 91afdc072f7..55ba52219ca 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2148.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2148.md @@ -10,6 +10,8 @@ ms.assetid: 0290065c-35d3-4815-80c5-40bf7132ae1d > SUBLANGUAGE ID too large +## Remarks + The SUBLANGUAGE ID value was out of range. The **LANGUAGE** statement must use the following syntax: diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2151.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2151.md index cd4bedbcba6..db1ea9893fe 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2151.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2151.md @@ -10,6 +10,8 @@ ms.assetid: 3c47e535-c78d-4338-aab9-9b47e2c34728 > cannot re-use string constants +## Remarks + You are using the same value twice in a **STRINGTABLE** statement. Make sure you are not mixing overlapping decimal and hexadecimal values. Each ID in a **STRINGTABLE** must be unique. For maximum efficiency use contiguous constants that start on a multiple of 16. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2152.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2152.md index 22e682d2e22..c4231e10a6a 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2152.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2152.md @@ -10,4 +10,6 @@ ms.assetid: 8efcba8f-9971-43cc-a1cd-8d7c9aec133c > invalid control character +## Remarks + A control character in the **ACCELERATORS** statement is invalid. A valid control character consists of one letter (only) following a caret (**^**). diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2162.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2162.md index 58b4b2b50fa..4522edffc51 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2162.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2162.md @@ -10,4 +10,6 @@ ms.assetid: 4ac713b7-3067-436c-83fd-4180438c4f2c > expected macro formal parameter +## Remarks + The token following a stringizing operator (**#**) was not a formal parameter name. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2163.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2163.md index d3e0b36192f..8242b24f00e 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2163.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2163.md @@ -10,4 +10,6 @@ ms.assetid: a7e95939-9267-4262-9b49-90dc4157a7da > accelerator type required [ASCII or VIRTKEY] +## Remarks + The `type` field in the **ACCELERATORS** statement must contain either the ASCII or VIRTKEY value. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2164.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2164.md index 19595c375cf..2a93f8532f5 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2164.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2164.md @@ -10,4 +10,6 @@ ms.assetid: 23d7691d-80f3-4979-a519-378e5498d2d1 > unexpected value in RCDATA +## Remarks + The *raw-data* values in the **RCDATA** statement must be integers or strings, each separated by a comma. Make sure you did not leave out a comma or leave out a quotation mark around a string. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2165.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2165.md index 960753d8b03..815d3657294 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2165.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2165.md @@ -10,6 +10,8 @@ ms.assetid: bf7d4630-9355-47e3-87fa-6693fcf0ef0d > string not found in DLGINCLUDE statement +## Remarks + The statement did not specify a valid include file. The **DLGINCLUDE** statement must use the following syntax: diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2167.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2167.md index 9f4a3a105dc..d2df5e714c8 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2167.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2167.md @@ -10,4 +10,6 @@ ms.assetid: 9b24a8eb-367b-4ff6-8266-b0c215f32d6a > unrecognized VERSIONINFO field; BEGIN or comma expected +## Remarks + An unrecognized field was found in the **FIXED** part of a **VERSIONINFO** structure declaration. A **VERSIONINFO** field must be DWORDS separated by a comma. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2169.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2169.md index f5fc11164e0..584ebbfed1a 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2169.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2169.md @@ -10,4 +10,6 @@ ms.assetid: 832c19ad-a2e2-4f50-b493-26b791877600 > resource file filename is not in 2.03 format +## Remarks + The specified resource used a format earlier than version 2.03. The resource file must be converted or recreated using the format for version 3.00 or later. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2170.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2170.md index 64a9e6d1155..176b9291984 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2170.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2170.md @@ -10,6 +10,8 @@ ms.assetid: 6ea80c98-0942-41a8-b0b2-2c16c255adf5 > bitmap file filename is not in 3.00 format +## Remarks + Bitmaps using the Windows version 2.x format cannot be used in version 3.x resource files. To fix this issue, redraw or convert the bitmap to 3.x format. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2171.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2171.md index 2140f4e345f..4871e1cc9c7 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2171.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2171.md @@ -10,4 +10,6 @@ ms.assetid: 0c959938-e744-43f3-b460-f05547ffea2a > unknown DIB header format +## Remarks + The bitmap header is not a **BITMAPCOREHEADER** or **BITMAPINFOHEADER** structure. diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2175.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2175.md index 3004d85368e..690b53ef92a 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2175.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2175.md @@ -10,4 +10,6 @@ ms.assetid: 3864a371-dba8-41a7-962c-e792709774f1 > resource file filename is not in 3.00 format +## Remarks + The specified resource used a format earlier than version 3.00. The resource file must be converted or recreated using the format for version 3.00 or later. From 50a0dc369acb3e3aaa83caaba4746fdeaa925ae9 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Mon, 15 Sep 2025 23:51:41 +0800 Subject: [PATCH 1836/2255] Update metadata for error references in range [RC2001, RC2175] --- .../tool-errors/resource-compiler-error-rc2001.md | 5 ++--- .../tool-errors/resource-compiler-error-rc2007.md | 5 ++--- .../tool-errors/resource-compiler-error-rc2015.md | 5 ++--- .../tool-errors/resource-compiler-error-rc2017.md | 5 ++--- .../tool-errors/resource-compiler-error-rc2101.md | 5 ++--- .../tool-errors/resource-compiler-error-rc2103.md | 5 ++--- .../tool-errors/resource-compiler-error-rc2104.md | 5 ++--- .../tool-errors/resource-compiler-error-rc2107.md | 5 ++--- .../tool-errors/resource-compiler-error-rc2109.md | 5 ++--- .../tool-errors/resource-compiler-error-rc2111.md | 5 ++--- .../tool-errors/resource-compiler-error-rc2112.md | 5 ++--- .../tool-errors/resource-compiler-error-rc2113.md | 5 ++--- .../tool-errors/resource-compiler-error-rc2114.md | 5 ++--- .../tool-errors/resource-compiler-error-rc2116.md | 5 ++--- .../tool-errors/resource-compiler-error-rc2122.md | 5 ++--- .../tool-errors/resource-compiler-error-rc2124.md | 5 ++--- .../tool-errors/resource-compiler-error-rc2127.md | 5 ++--- .../tool-errors/resource-compiler-error-rc2135.md | 5 ++--- .../tool-errors/resource-compiler-error-rc2144.md | 5 ++--- .../tool-errors/resource-compiler-error-rc2147.md | 5 ++--- .../tool-errors/resource-compiler-error-rc2148.md | 5 ++--- .../tool-errors/resource-compiler-error-rc2151.md | 5 ++--- .../tool-errors/resource-compiler-error-rc2152.md | 5 ++--- .../tool-errors/resource-compiler-error-rc2162.md | 5 ++--- .../tool-errors/resource-compiler-error-rc2163.md | 5 ++--- .../tool-errors/resource-compiler-error-rc2164.md | 5 ++--- .../tool-errors/resource-compiler-error-rc2165.md | 5 ++--- .../tool-errors/resource-compiler-error-rc2167.md | 5 ++--- .../tool-errors/resource-compiler-error-rc2169.md | 5 ++--- .../tool-errors/resource-compiler-error-rc2170.md | 5 ++--- .../tool-errors/resource-compiler-error-rc2171.md | 5 ++--- .../tool-errors/resource-compiler-error-rc2175.md | 5 ++--- 32 files changed, 64 insertions(+), 96 deletions(-) diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2001.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2001.md index 333581fbeb3..b807eea4e4a 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2001.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2001.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RC2001" title: "Resource Compiler Error RC2001" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RC2001" +ms.date: 11/04/2016 f1_keywords: ["RC2001"] helpviewer_keywords: ["RC2001"] -ms.assetid: 92bfb4c0-1879-4606-bb9f-ef7368707b4a --- # Resource Compiler Error RC2001 diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2007.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2007.md index e142ab41fd5..dbfac5c5bfb 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2007.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2007.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RC2007" title: "Resource Compiler Error RC2007" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RC2007" +ms.date: 11/04/2016 f1_keywords: ["RC2007"] helpviewer_keywords: ["RC2007"] -ms.assetid: a616e506-bef2-4155-9fe0-dbccac8954d3 --- # Resource Compiler Error RC2007 diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2015.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2015.md index 38c4b02a859..035bfd9f4fd 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2015.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2015.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RC2015" title: "Resource Compiler Error RC2015" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RC2015" +ms.date: 11/04/2016 f1_keywords: ["RC2015"] helpviewer_keywords: ["RC2015"] -ms.assetid: 99691683-fb9e-4e61-beb1-12e484858570 --- # Resource Compiler Error RC2015 diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2017.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2017.md index b4248abc322..f0ea17ecac3 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2017.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2017.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RC2017" title: "Resource Compiler Error RC2017" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RC2017" +ms.date: 11/04/2016 f1_keywords: ["RC2017"] helpviewer_keywords: ["RC2017"] -ms.assetid: 5fcc0135-cd60-4b1d-a7dd-8a4f2312697b --- # Resource Compiler Error RC2017 diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2101.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2101.md index 1d160c15ffd..95a520dc668 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2101.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2101.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RC2101" title: "Resource Compiler Error RC2101" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RC2101" +ms.date: 11/04/2016 f1_keywords: ["RC2101"] helpviewer_keywords: ["RC2101"] -ms.assetid: 580f9d74-162f-41e9-9438-ddbe3457c359 --- # Resource Compiler Error RC2101 diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2103.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2103.md index 3cb9c5d9dd4..2399c255c57 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2103.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2103.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RC2103" title: "Resource Compiler Error RC2103" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RC2103" +ms.date: 11/04/2016 f1_keywords: ["RC2103"] helpviewer_keywords: ["RC2103"] -ms.assetid: eedf2366-d1c3-4e7e-815c-d367d976b3f6 --- # Resource Compiler Error RC2103 diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2104.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2104.md index be773d79419..1ce67b04525 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2104.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2104.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RC2104" title: "Resource Compiler Error RC2104" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RC2104" +ms.date: 11/04/2016 f1_keywords: ["RC2104"] helpviewer_keywords: ["RC2104"] -ms.assetid: 792a3bd8-cb4c-4817-b288-4ce37082b582 --- # Resource Compiler Error RC2104 diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2107.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2107.md index 3e7774c2ae6..9258f3d82c9 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2107.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2107.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RC2107" title: "Resource Compiler Error RC2107" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RC2107" +ms.date: 11/04/2016 f1_keywords: ["RC2107"] helpviewer_keywords: ["RC2107"] -ms.assetid: f1786128-aa86-4cdb-a095-05a0b66b5608 --- # Resource Compiler Error RC2107 diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2109.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2109.md index c6bf457bb64..28eaffebead 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2109.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2109.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RC2109" title: "Resource Compiler Error RC2109" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RC2109" +ms.date: 11/04/2016 f1_keywords: ["RC2109"] helpviewer_keywords: ["RC2109"] -ms.assetid: b800aa67-33c0-42f5-81a2-7a64a3b6b824 --- # Resource Compiler Error RC2109 diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2111.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2111.md index d7f2218019b..159bd5e1ed8 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2111.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2111.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RC2111" title: "Resource Compiler Error RC2111" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RC2111" +ms.date: 11/04/2016 f1_keywords: ["RC2111"] helpviewer_keywords: ["RC2111"] -ms.assetid: 118cba57-82a4-4199-acf4-9d9561946218 --- # Resource Compiler Error RC2111 diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2112.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2112.md index 024b2b6ca03..e03480d20e3 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2112.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2112.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RC2112" title: "Resource Compiler Error RC2112" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RC2112" +ms.date: 11/04/2016 f1_keywords: ["RC2112"] helpviewer_keywords: ["RC2112"] -ms.assetid: e9f29540-a90d-4989-a6e8-5f8f32015bd9 --- # Resource Compiler Error RC2112 diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2113.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2113.md index a14e73b2fa5..d33a9cd82ca 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2113.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2113.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RC2113" title: "Resource Compiler Error RC2113" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RC2113" +ms.date: 11/04/2016 f1_keywords: ["RC2113"] helpviewer_keywords: ["RC2113"] -ms.assetid: cbf52e93-ab14-49b7-9ce8-fb55877602ec --- # Resource Compiler Error RC2113 diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2114.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2114.md index ded2dcefa15..d43e41ab86f 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2114.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2114.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RC2114" title: "Resource Compiler Error RC2114" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RC2114" +ms.date: 11/04/2016 f1_keywords: ["RC2114"] helpviewer_keywords: ["RC2114"] -ms.assetid: abdfdc46-6601-451f-8e81-81e92bcd2208 --- # Resource Compiler Error RC2114 diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2116.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2116.md index be11e81688b..1b227079bfe 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2116.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2116.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RC2116" title: "Resource Compiler Error RC2116" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RC2116" +ms.date: 11/04/2016 f1_keywords: ["RC2116"] helpviewer_keywords: ["RC2116"] -ms.assetid: d9203ddf-798d-490b-be41-0dd3f7d53653 --- # Resource Compiler Error RC2116 diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2122.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2122.md index e15e32699ae..d275f06f2a9 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2122.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2122.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RC2122" title: "Resource Compiler Error RC2122" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RC2122" +ms.date: 11/04/2016 f1_keywords: ["RC2122"] helpviewer_keywords: ["RC2122"] -ms.assetid: c2f02ec1-1ce8-4a13-b35e-7cd416fa9f41 --- # Resource Compiler Error RC2122 diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2124.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2124.md index 933ec01d478..eb59025dd5f 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2124.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2124.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RC2124" title: "Resource Compiler Error RC2124" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RC2124" +ms.date: 11/04/2016 f1_keywords: ["RC2124"] helpviewer_keywords: ["RC2124"] -ms.assetid: 4eb5c4ec-ca9b-46a0-805b-35e040e9ed41 --- # Resource Compiler Error RC2124 diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2127.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2127.md index c1483b512de..a82cf52c6db 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2127.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2127.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RC2127" title: "Resource Compiler Error RC2127" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RC2127" +ms.date: 11/04/2016 f1_keywords: ["RC2127"] helpviewer_keywords: ["RC2127"] -ms.assetid: 13c1599d-ac4c-4044-a59a-48e69511ef7e --- # Resource Compiler Error RC2127 diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2135.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2135.md index 86caa57a5fe..e4a11942710 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2135.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2135.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RC2135" title: "Resource Compiler Error RC2135" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RC2135" +ms.date: 11/04/2016 f1_keywords: ["RC2135"] helpviewer_keywords: ["RC2135"] -ms.assetid: 1509a0fa-1cb7-4654-bcb3-ad5ac973e659 --- # Resource Compiler Error RC2135 diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2144.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2144.md index 509c798322c..7fe5c107fca 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2144.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2144.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RC2144" title: "Resource Compiler Error RC2144" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RC2144" +ms.date: 11/04/2016 f1_keywords: ["RC2144"] helpviewer_keywords: ["RC2144"] -ms.assetid: 1b3ff39a-92cd-4a04-b1a3-b1fa6a805813 --- # Resource Compiler Error RC2144 diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2147.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2147.md index 28a307b8719..09009bcb002 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2147.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2147.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RC2147" title: "Resource Compiler Error RC2147" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RC2147" +ms.date: 11/04/2016 f1_keywords: ["RC2147"] helpviewer_keywords: ["RC2147"] -ms.assetid: 09974f06-1731-4e70-b373-f9218e0ee8d9 --- # Resource Compiler Error RC2147 diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2148.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2148.md index 55ba52219ca..40d6110c5cc 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2148.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2148.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RC2148" title: "Resource Compiler Error RC2148" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RC2148" +ms.date: 11/04/2016 f1_keywords: ["RC2148"] helpviewer_keywords: ["RC2148"] -ms.assetid: 0290065c-35d3-4815-80c5-40bf7132ae1d --- # Resource Compiler Error RC2148 diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2151.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2151.md index db1ea9893fe..3ed804bfabf 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2151.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2151.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RC2151" title: "Resource Compiler Error RC2151" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RC2151" +ms.date: 11/04/2016 f1_keywords: ["RC2151"] helpviewer_keywords: ["RC2151"] -ms.assetid: 3c47e535-c78d-4338-aab9-9b47e2c34728 --- # Resource Compiler Error RC2151 diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2152.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2152.md index c4231e10a6a..ff275d02746 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2152.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2152.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RC2152" title: "Resource Compiler Error RC2152" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RC2152" +ms.date: 11/04/2016 f1_keywords: ["RC2152"] helpviewer_keywords: ["RC2152"] -ms.assetid: 8efcba8f-9971-43cc-a1cd-8d7c9aec133c --- # Resource Compiler Error RC2152 diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2162.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2162.md index 4522edffc51..9a45dc6be3e 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2162.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2162.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RC2162" title: "Resource Compiler Error RC2162" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RC2162" +ms.date: 11/04/2016 f1_keywords: ["RC2162"] helpviewer_keywords: ["RC2162"] -ms.assetid: 4ac713b7-3067-436c-83fd-4180438c4f2c --- # Resource Compiler Error RC2162 diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2163.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2163.md index 8242b24f00e..6db89f5ffed 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2163.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2163.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RC2163" title: "Resource Compiler Error RC2163" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RC2163" +ms.date: 11/04/2016 f1_keywords: ["RC2163"] helpviewer_keywords: ["RC2163"] -ms.assetid: a7e95939-9267-4262-9b49-90dc4157a7da --- # Resource Compiler Error RC2163 diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2164.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2164.md index 2a93f8532f5..532f85db497 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2164.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2164.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RC2164" title: "Resource Compiler Error RC2164" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RC2164" +ms.date: 11/04/2016 f1_keywords: ["RC2164"] helpviewer_keywords: ["RC2164"] -ms.assetid: 23d7691d-80f3-4979-a519-378e5498d2d1 --- # Resource Compiler Error RC2164 diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2165.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2165.md index 815d3657294..f18cebc686b 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2165.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2165.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RC2165" title: "Resource Compiler Error RC2165" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RC2165" +ms.date: 11/04/2016 f1_keywords: ["RC2165"] helpviewer_keywords: ["RC2165"] -ms.assetid: bf7d4630-9355-47e3-87fa-6693fcf0ef0d --- # Resource Compiler Error RC2165 diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2167.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2167.md index d2df5e714c8..ac84004be8e 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2167.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2167.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RC2167" title: "Resource Compiler Error RC2167" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RC2167" +ms.date: 11/04/2016 f1_keywords: ["RC2167"] helpviewer_keywords: ["RC2167"] -ms.assetid: 9b24a8eb-367b-4ff6-8266-b0c215f32d6a --- # Resource Compiler Error RC2167 diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2169.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2169.md index 584ebbfed1a..78767f39494 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2169.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2169.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RC2169" title: "Resource Compiler Error RC2169" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RC2169" +ms.date: 11/04/2016 f1_keywords: ["RC2169"] helpviewer_keywords: ["RC2169"] -ms.assetid: 832c19ad-a2e2-4f50-b493-26b791877600 --- # Resource Compiler Error RC2169 diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2170.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2170.md index 176b9291984..c0ed41f444d 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2170.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2170.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RC2170" title: "Resource Compiler Error RC2170" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RC2170" +ms.date: 11/04/2016 f1_keywords: ["RC2170"] helpviewer_keywords: ["RC2170"] -ms.assetid: 6ea80c98-0942-41a8-b0b2-2c16c255adf5 --- # Resource Compiler Error RC2170 diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2171.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2171.md index 4871e1cc9c7..c8b1c0605d8 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2171.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2171.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RC2171" title: "Resource Compiler Error RC2171" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RC2171" +ms.date: 11/04/2016 f1_keywords: ["RC2171"] helpviewer_keywords: ["RC2171"] -ms.assetid: 0c959938-e744-43f3-b460-f05547ffea2a --- # Resource Compiler Error RC2171 diff --git a/docs/error-messages/tool-errors/resource-compiler-error-rc2175.md b/docs/error-messages/tool-errors/resource-compiler-error-rc2175.md index 690b53ef92a..3c74a7ea3c4 100644 --- a/docs/error-messages/tool-errors/resource-compiler-error-rc2175.md +++ b/docs/error-messages/tool-errors/resource-compiler-error-rc2175.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Error RC2175" title: "Resource Compiler Error RC2175" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Error RC2175" +ms.date: 11/04/2016 f1_keywords: ["RC2175"] helpviewer_keywords: ["RC2175"] -ms.assetid: 3864a371-dba8-41a7-962c-e792709774f1 --- # Resource Compiler Error RC2175 From bb3908d2a4e4293da328cd2955d5e5845044560e Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 16 Sep 2025 21:01:44 +0800 Subject: [PATCH 1837/2255] Fix `countr_one` link in `` header reference --- docs/standard-library/bit.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard-library/bit.md b/docs/standard-library/bit.md index ed42bc8ac34..eb98ce2a93f 100644 --- a/docs/standard-library/bit.md +++ b/docs/standard-library/bit.md @@ -38,7 +38,7 @@ For example, there are functions to rotate bits, find the number of consecutive |[countl_zero](bit-functions.md#countl_zero) | Count the number of consecutive bits set to zero, starting from the most significant bit. | |[countl_one](bit-functions.md#countl_one) | Count the number of consecutive bits set to one, starting from the most significant bit. | |[countr_zero](bit-functions.md#countr_zero) | Count the number of consecutive bits set to zero, starting from the least significant bit. | -|[countr_one](bit-functions.md#countl_one) | Count the number of consecutive bits set to one, starting from the least significant bit. | +|[countr_one](bit-functions.md#countr_one) | Count the number of consecutive bits set to one, starting from the least significant bit. | |[has_single_bit](bit-functions.md#has_single_bit) | Check if a value has only a single bit set to one. This is the same as testing whether a value is a power of two. | |[popcount](bit-functions.md#popcount) | Count the number of bits set to one. | |[rotl](bit-functions.md#rotl) | Compute the result of a bitwise left-rotation. | From bbb60d0e6bb8582bdff713f4757c584f9091e364 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 16 Sep 2025 21:05:09 +0800 Subject: [PATCH 1838/2255] Add backticks in `` header reference --- docs/standard-library/bit.md | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/standard-library/bit.md b/docs/standard-library/bit.md index eb98ce2a93f..f9412edb405 100644 --- a/docs/standard-library/bit.md +++ b/docs/standard-library/bit.md @@ -13,9 +13,9 @@ For example, there are functions to rotate bits, find the number of consecutive ## Requirements -**Header:** \ +**Header:** `` -**Namespace:** std +**Namespace:** `std` [`/std:c++20`](../build/reference/std-specify-language-standard-version.md) or later is required. @@ -25,24 +25,24 @@ For example, there are functions to rotate bits, find the number of consecutive | Type | Description | |--------|----------| -| [endian](bit-enum.md) | Specifies the endianness of scalar types. | +| [`endian`](bit-enum.md) | Specifies the endianness of scalar types. | ### Functions | Function | Description | |-----|-----| -|[bit_cast](bit-functions.md#bit_cast) | Reinterpret the object representation from one type to another. | -|[bit_ceil](bit-functions.md#bit_ceil) | Find the smallest power of two greater than or equal to a value. | -|[bit_floor](bit-functions.md#bit_floor) | Find the largest integral power of two not greater than a value. | -|[bit_width](bit-functions.md#bit_width) | Find the smallest number of bits needed to represent a value. | -|[countl_zero](bit-functions.md#countl_zero) | Count the number of consecutive bits set to zero, starting from the most significant bit. | -|[countl_one](bit-functions.md#countl_one) | Count the number of consecutive bits set to one, starting from the most significant bit. | -|[countr_zero](bit-functions.md#countr_zero) | Count the number of consecutive bits set to zero, starting from the least significant bit. | -|[countr_one](bit-functions.md#countr_one) | Count the number of consecutive bits set to one, starting from the least significant bit. | -|[has_single_bit](bit-functions.md#has_single_bit) | Check if a value has only a single bit set to one. This is the same as testing whether a value is a power of two. | -|[popcount](bit-functions.md#popcount) | Count the number of bits set to one. | -|[rotl](bit-functions.md#rotl) | Compute the result of a bitwise left-rotation. | -|[rotr](bit-functions.md#rotr) | Compute the result of a bitwise right-rotation. | +|[`bit_cast`](bit-functions.md#bit_cast) | Reinterpret the object representation from one type to another. | +|[`bit_ceil`](bit-functions.md#bit_ceil) | Find the smallest power of two greater than or equal to a value. | +|[`bit_floor`](bit-functions.md#bit_floor) | Find the largest integral power of two not greater than a value. | +|[`bit_width`](bit-functions.md#bit_width) | Find the smallest number of bits needed to represent a value. | +|[`countl_zero`](bit-functions.md#countl_zero) | Count the number of consecutive bits set to zero, starting from the most significant bit. | +|[`countl_one`](bit-functions.md#countl_one) | Count the number of consecutive bits set to one, starting from the most significant bit. | +|[`countr_zero`](bit-functions.md#countr_zero) | Count the number of consecutive bits set to zero, starting from the least significant bit. | +|[`countr_one`](bit-functions.md#countr_one) | Count the number of consecutive bits set to one, starting from the least significant bit. | +|[`has_single_bit`](bit-functions.md#has_single_bit) | Check if a value has only a single bit set to one. This is the same as testing whether a value is a power of two. | +|[`popcount`](bit-functions.md#popcount) | Count the number of bits set to one. | +|[`rotl`](bit-functions.md#rotl) | Compute the result of a bitwise left-rotation. | +|[`rotr`](bit-functions.md#rotr) | Compute the result of a bitwise right-rotation. | ## See also From 27bc14da03aa22213e8fb2d0f43442fc55d5743a Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 16 Sep 2025 21:06:18 +0800 Subject: [PATCH 1839/2255] Remove double quotes for `ms.date` in `` header reference --- docs/standard-library/bit.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard-library/bit.md b/docs/standard-library/bit.md index f9412edb405..5f6ca69bb1f 100644 --- a/docs/standard-library/bit.md +++ b/docs/standard-library/bit.md @@ -1,7 +1,7 @@ --- title: "" description: "Functions to access, manipulate, and process individual bits and sequences of bits." -ms.date: "08/28/2020" +ms.date: 08/28/2020 f1_keywords: [""] helpviewer_keywords: ["bit header"] --- From 2aec683c08eb9da3b4ebf6f32bee8bc74d3ef3bb Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 16 Sep 2025 22:02:29 +0800 Subject: [PATCH 1840/2255] Fix a couple of errors in `` concepts --- docs/standard-library/range-concepts.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/standard-library/range-concepts.md b/docs/standard-library/range-concepts.md index a00aec4ef20..65151dd31bf 100644 --- a/docs/standard-library/range-concepts.md +++ b/docs/standard-library/range-concepts.md @@ -43,7 +43,7 @@ int main() DivideEmUp dividerOfInts; std::cout << dividerOfInts.Divide(6, 3); // outputs 2 // The following line will not compile because the template can't be instantiated - // with char* because char* can be divided + // with char* because char* can't be divided DivideEmUp dividerOfCharPtrs; // compiler error: cannot deduce template arguments } ``` @@ -163,7 +163,7 @@ The type to test to see if it's a `contiguous_range`. ### Remarks -A `contiguous_range` can be accessed by pointer arithmetic because the elements are laid out sequentially in memory and are the same size. This kind of range supports [`continguous_iterator`](iterator-concepts.md#contiguous_iterator), which is the most flexible of all the iterators. +A `contiguous_range` can be accessed by pointer arithmetic because the elements are laid out sequentially in memory and are the same size. This kind of range supports [`contiguous_iterator`](iterator-concepts.md#contiguous_iterator), which is the most flexible of all the iterators. Some examples of a `contiguous_range` are `std::array`, `std::vector`, and `std::string`. @@ -270,7 +270,7 @@ bidirectional_range && random_access_iterator>; ### Parameters *`T`*\ -The type to test to see if it's a `sized_range`. +The type to test to see if it's a `random_access_range`. ### Remarks From 96e99f951e95cdd88b6971fa12a6744feba2b926 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 16 Sep 2025 22:03:23 +0800 Subject: [PATCH 1841/2255] Move `title` metadata above `description` in `` concepts --- docs/standard-library/range-concepts.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard-library/range-concepts.md b/docs/standard-library/range-concepts.md index 65151dd31bf..dc21a897949 100644 --- a/docs/standard-library/range-concepts.md +++ b/docs/standard-library/range-concepts.md @@ -1,6 +1,6 @@ --- -description: "Learn more about range concepts." title: " concepts" +description: "Learn more about range concepts." ms.date: 12/16/2022 f1_keywords: ["ranges/std::ranges::range", "ranges/std::ranges::bidirectional_range", "ranges/std::ranges::borrowed_range", "ranges/std::ranges::common_range", "ranges/std::ranges::contiguous_range", "ranges/std::ranges::forward_range", "ranges/std::ranges::input_range", "ranges/std::ranges::output_range", "ranges/std::ranges::random_access_range", "ranges/std::ranges::simple_view", "ranges/std::ranges::sized_range", "ranges/std::ranges::view", "ranges/std::ranges::viewable_range"] helpviewer_keywords: ["std::ranges [C++], ranges::range", "std::ranges [C++], ranges::bidirectional_range", "std::ranges [C++], ranges::borrowed_range", "std::ranges [C++], ranges::common_range", "std::ranges [C++], ranges::contiguous_range", "std::ranges [C++], ranges::forward_range", "std::ranges [C++], ranges::input_range", "std::ranges [C++], ranges::output_range", "std::ranges [C++], ranges::random_access_range", "std::ranges [C++], ranges::simple_view", "std::ranges [C++], ranges::sized_range", "std::ranges [C++], ranges::view", "std::ranges [C++], ranges::viewable_range"] From e018ae3f4a073e88fecbe14e1416be84b0c5ab2f Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 16 Sep 2025 22:10:11 +0800 Subject: [PATCH 1842/2255] Add blockquotes for warning messages in range [RC4002, RC4214] --- .../tool-errors/resource-compiler-warning-rc4002.md | 2 +- .../tool-errors/resource-compiler-warning-rc4005.md | 2 +- .../tool-errors/resource-compiler-warning-rc4093.md | 2 +- .../tool-errors/resource-compiler-warning-rc4214.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/error-messages/tool-errors/resource-compiler-warning-rc4002.md b/docs/error-messages/tool-errors/resource-compiler-warning-rc4002.md index 7c41643dbe8..68b100c38f6 100644 --- a/docs/error-messages/tool-errors/resource-compiler-warning-rc4002.md +++ b/docs/error-messages/tool-errors/resource-compiler-warning-rc4002.md @@ -8,7 +8,7 @@ ms.assetid: a157bc55-1a75-4337-aee4-e2ba61ff8cfa --- # Resource Compiler Warning RC4002 -too many actual parameters for macro 'identifier' +> too many actual parameters for macro 'identifier' The number of actual parameters specified with the given identifier was greater than the number of formal parameters given in the macro definition of the identifier. diff --git a/docs/error-messages/tool-errors/resource-compiler-warning-rc4005.md b/docs/error-messages/tool-errors/resource-compiler-warning-rc4005.md index 15f614c9056..0fcb0b73fca 100644 --- a/docs/error-messages/tool-errors/resource-compiler-warning-rc4005.md +++ b/docs/error-messages/tool-errors/resource-compiler-warning-rc4005.md @@ -8,7 +8,7 @@ ms.assetid: 71f03b4a-c9a9-415d-920f-bf2e58507f93 --- # Resource Compiler Warning RC4005 -'identifier' : macro redefinition +> 'identifier' : macro redefinition The identifier is defined twice. The compiler used the second macro definition. diff --git a/docs/error-messages/tool-errors/resource-compiler-warning-rc4093.md b/docs/error-messages/tool-errors/resource-compiler-warning-rc4093.md index ac1b20c66e7..3beb38c11c7 100644 --- a/docs/error-messages/tool-errors/resource-compiler-warning-rc4093.md +++ b/docs/error-messages/tool-errors/resource-compiler-warning-rc4093.md @@ -8,7 +8,7 @@ ms.assetid: 3c61b4a4-b418-465b-a4fd-cb1ff0adb8dd --- # Resource Compiler Warning RC4093 -unescaped newline in character constant in inactive code +> unescaped newline in character constant in inactive code The constant expression of an `#if`, `#elif`, **#ifdef**, or **#ifndef** preprocessor directive evaluated to zero, making the code that follows inactive. Within that inactive code, a newline character appeared within a set of single or double quotation marks. diff --git a/docs/error-messages/tool-errors/resource-compiler-warning-rc4214.md b/docs/error-messages/tool-errors/resource-compiler-warning-rc4214.md index d1ba52ccd48..79e44d6d782 100644 --- a/docs/error-messages/tool-errors/resource-compiler-warning-rc4214.md +++ b/docs/error-messages/tool-errors/resource-compiler-warning-rc4214.md @@ -8,6 +8,6 @@ ms.assetid: 79a8bf0d-8cc7-4159-a6a2-d0e543749069 --- # Resource Compiler Warning RC4214 -Codepage not valid : ignored +> Codepage not valid : ignored The .rc file contained a codepage argument and the codepage specified is invalid. See [IsValidCodePage](/windows/win32/api/winnls/nf-winnls-isvalidcodepage) for more information. From 915ec8ea5090413b399a33b78e2af0583225145b Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 16 Sep 2025 22:11:38 +0800 Subject: [PATCH 1843/2255] Add "Remarks" headings for warning references in range [RC4002, RC4214] --- .../tool-errors/resource-compiler-warning-rc4002.md | 2 ++ .../tool-errors/resource-compiler-warning-rc4005.md | 2 ++ .../tool-errors/resource-compiler-warning-rc4093.md | 2 ++ .../tool-errors/resource-compiler-warning-rc4214.md | 2 ++ 4 files changed, 8 insertions(+) diff --git a/docs/error-messages/tool-errors/resource-compiler-warning-rc4002.md b/docs/error-messages/tool-errors/resource-compiler-warning-rc4002.md index 68b100c38f6..05c0e9d7fe2 100644 --- a/docs/error-messages/tool-errors/resource-compiler-warning-rc4002.md +++ b/docs/error-messages/tool-errors/resource-compiler-warning-rc4002.md @@ -10,6 +10,8 @@ ms.assetid: a157bc55-1a75-4337-aee4-e2ba61ff8cfa > too many actual parameters for macro 'identifier' +## Remarks + The number of actual parameters specified with the given identifier was greater than the number of formal parameters given in the macro definition of the identifier. The additional actual parameters were collected but ignored during expansion of the macro. diff --git a/docs/error-messages/tool-errors/resource-compiler-warning-rc4005.md b/docs/error-messages/tool-errors/resource-compiler-warning-rc4005.md index 0fcb0b73fca..db2b29364a9 100644 --- a/docs/error-messages/tool-errors/resource-compiler-warning-rc4005.md +++ b/docs/error-messages/tool-errors/resource-compiler-warning-rc4005.md @@ -10,6 +10,8 @@ ms.assetid: 71f03b4a-c9a9-415d-920f-bf2e58507f93 > 'identifier' : macro redefinition +## Remarks + The identifier is defined twice. The compiler used the second macro definition. This warning can be caused by defining a macro on the command line and in the code with a `#define` directive. It also can be caused by macros imported from include files. diff --git a/docs/error-messages/tool-errors/resource-compiler-warning-rc4093.md b/docs/error-messages/tool-errors/resource-compiler-warning-rc4093.md index 3beb38c11c7..5a18bbfc430 100644 --- a/docs/error-messages/tool-errors/resource-compiler-warning-rc4093.md +++ b/docs/error-messages/tool-errors/resource-compiler-warning-rc4093.md @@ -10,6 +10,8 @@ ms.assetid: 3c61b4a4-b418-465b-a4fd-cb1ff0adb8dd > unescaped newline in character constant in inactive code +## Remarks + The constant expression of an `#if`, `#elif`, **#ifdef**, or **#ifndef** preprocessor directive evaluated to zero, making the code that follows inactive. Within that inactive code, a newline character appeared within a set of single or double quotation marks. All text until the next double quotation mark was considered to be within a character constant. diff --git a/docs/error-messages/tool-errors/resource-compiler-warning-rc4214.md b/docs/error-messages/tool-errors/resource-compiler-warning-rc4214.md index 79e44d6d782..9695f81a2b3 100644 --- a/docs/error-messages/tool-errors/resource-compiler-warning-rc4214.md +++ b/docs/error-messages/tool-errors/resource-compiler-warning-rc4214.md @@ -10,4 +10,6 @@ ms.assetid: 79a8bf0d-8cc7-4159-a6a2-d0e543749069 > Codepage not valid : ignored +## Remarks + The .rc file contained a codepage argument and the codepage specified is invalid. See [IsValidCodePage](/windows/win32/api/winnls/nf-winnls-isvalidcodepage) for more information. From 6c0357fe3a84fa3dce7d04c09e514fb52b67c916 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 16 Sep 2025 22:13:35 +0800 Subject: [PATCH 1844/2255] Update metadata for warning references in range [RC4002, RC4214] --- .../tool-errors/resource-compiler-warning-rc4002.md | 5 ++--- .../tool-errors/resource-compiler-warning-rc4005.md | 5 ++--- .../tool-errors/resource-compiler-warning-rc4093.md | 5 ++--- .../tool-errors/resource-compiler-warning-rc4214.md | 5 ++--- 4 files changed, 8 insertions(+), 12 deletions(-) diff --git a/docs/error-messages/tool-errors/resource-compiler-warning-rc4002.md b/docs/error-messages/tool-errors/resource-compiler-warning-rc4002.md index 05c0e9d7fe2..e85fed2d962 100644 --- a/docs/error-messages/tool-errors/resource-compiler-warning-rc4002.md +++ b/docs/error-messages/tool-errors/resource-compiler-warning-rc4002.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Warning RC4002" title: "Resource Compiler Warning RC4002" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Warning RC4002" +ms.date: 11/04/2016 f1_keywords: ["RC4002"] helpviewer_keywords: ["RC4002"] -ms.assetid: a157bc55-1a75-4337-aee4-e2ba61ff8cfa --- # Resource Compiler Warning RC4002 diff --git a/docs/error-messages/tool-errors/resource-compiler-warning-rc4005.md b/docs/error-messages/tool-errors/resource-compiler-warning-rc4005.md index db2b29364a9..fba7a496464 100644 --- a/docs/error-messages/tool-errors/resource-compiler-warning-rc4005.md +++ b/docs/error-messages/tool-errors/resource-compiler-warning-rc4005.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Warning RC4005" title: "Resource Compiler Warning RC4005" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Warning RC4005" +ms.date: 11/04/2016 f1_keywords: ["RC4005"] helpviewer_keywords: ["RC4005"] -ms.assetid: 71f03b4a-c9a9-415d-920f-bf2e58507f93 --- # Resource Compiler Warning RC4005 diff --git a/docs/error-messages/tool-errors/resource-compiler-warning-rc4093.md b/docs/error-messages/tool-errors/resource-compiler-warning-rc4093.md index 5a18bbfc430..a5729c8a6bf 100644 --- a/docs/error-messages/tool-errors/resource-compiler-warning-rc4093.md +++ b/docs/error-messages/tool-errors/resource-compiler-warning-rc4093.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Warning RC4093" title: "Resource Compiler Warning RC4093" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Warning RC4093" +ms.date: 11/04/2016 f1_keywords: ["RC4093"] helpviewer_keywords: ["RC4093"] -ms.assetid: 3c61b4a4-b418-465b-a4fd-cb1ff0adb8dd --- # Resource Compiler Warning RC4093 diff --git a/docs/error-messages/tool-errors/resource-compiler-warning-rc4214.md b/docs/error-messages/tool-errors/resource-compiler-warning-rc4214.md index 9695f81a2b3..e8612428191 100644 --- a/docs/error-messages/tool-errors/resource-compiler-warning-rc4214.md +++ b/docs/error-messages/tool-errors/resource-compiler-warning-rc4214.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Warning RC4214" title: "Resource Compiler Warning RC4214" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Warning RC4214" +ms.date: 11/04/2016 f1_keywords: ["RC4214"] helpviewer_keywords: ["RC4214"] -ms.assetid: 79a8bf0d-8cc7-4159-a6a2-d0e543749069 --- # Resource Compiler Warning RC4214 From 285b4cbb776764ba8420be8a633e76120196c1c3 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 16 Sep 2025 22:17:45 +0800 Subject: [PATCH 1845/2255] Add blockquotes for warning messages in range [RW4001, RW4004] --- .../tool-errors/resource-compiler-warning-rw4001.md | 2 +- .../tool-errors/resource-compiler-warning-rw4003.md | 2 +- .../tool-errors/resource-compiler-warning-rw4004.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/error-messages/tool-errors/resource-compiler-warning-rw4001.md b/docs/error-messages/tool-errors/resource-compiler-warning-rw4001.md index 1218c5f7b8a..72251fa375f 100644 --- a/docs/error-messages/tool-errors/resource-compiler-warning-rw4001.md +++ b/docs/error-messages/tool-errors/resource-compiler-warning-rw4001.md @@ -8,6 +8,6 @@ ms.assetid: 7c2d35eb-9899-46f5-848d-7ef49c39d706 --- # Resource Compiler Warning RW4001 -.EXE processing options (/L /M /P /T /K /E /31 or /30) +> .EXE processing options (/L /M /P /T /K /E /31 or /30) You specified EXE processing options, but there was no executable file to process. Don't use these options with a .res file. diff --git a/docs/error-messages/tool-errors/resource-compiler-warning-rw4003.md b/docs/error-messages/tool-errors/resource-compiler-warning-rw4003.md index 2ff11e08bfe..9a0c856ab43 100644 --- a/docs/error-messages/tool-errors/resource-compiler-warning-rw4003.md +++ b/docs/error-messages/tool-errors/resource-compiler-warning-rw4003.md @@ -8,6 +8,6 @@ ms.assetid: e9c289f2-c065-4f26-bc24-991953742abc --- # Resource Compiler Warning RW4003 -SHIFT or CONTROL used without VIRTKEY +> SHIFT or CONTROL used without VIRTKEY In an accelerator table resource, SHIFT or CONTROL requires VIRTKEY. Because SHIFT and CONTROL are indicated as flag bits in a VIRTKEY type accelerator, they cannot exist independent from a VIRTKEY. diff --git a/docs/error-messages/tool-errors/resource-compiler-warning-rw4004.md b/docs/error-messages/tool-errors/resource-compiler-warning-rw4004.md index 16d53e49d0d..f889e2a0453 100644 --- a/docs/error-messages/tool-errors/resource-compiler-warning-rw4004.md +++ b/docs/error-messages/tool-errors/resource-compiler-warning-rw4004.md @@ -8,7 +8,7 @@ ms.assetid: 596b6a89-9ce7-4ba7-bdcb-e8054c7efafa --- # Resource Compiler Warning RW4004 -ASCII character not equivalent to virtual key code +> ASCII character not equivalent to virtual key code A string literal was used for the virtual key code in a VIRTKEY type accelerator. From 177feb6d33e959372a971eb00dba89a0ba935970 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 16 Sep 2025 22:19:04 +0800 Subject: [PATCH 1846/2255] Add "Remarks" headings for warning references in range [RW4001, RW4004] --- .../tool-errors/resource-compiler-warning-rw4001.md | 2 ++ .../tool-errors/resource-compiler-warning-rw4003.md | 2 ++ .../tool-errors/resource-compiler-warning-rw4004.md | 2 ++ 3 files changed, 6 insertions(+) diff --git a/docs/error-messages/tool-errors/resource-compiler-warning-rw4001.md b/docs/error-messages/tool-errors/resource-compiler-warning-rw4001.md index 72251fa375f..1f330099575 100644 --- a/docs/error-messages/tool-errors/resource-compiler-warning-rw4001.md +++ b/docs/error-messages/tool-errors/resource-compiler-warning-rw4001.md @@ -10,4 +10,6 @@ ms.assetid: 7c2d35eb-9899-46f5-848d-7ef49c39d706 > .EXE processing options (/L /M /P /T /K /E /31 or /30) +## Remarks + You specified EXE processing options, but there was no executable file to process. Don't use these options with a .res file. diff --git a/docs/error-messages/tool-errors/resource-compiler-warning-rw4003.md b/docs/error-messages/tool-errors/resource-compiler-warning-rw4003.md index 9a0c856ab43..28f060bcadf 100644 --- a/docs/error-messages/tool-errors/resource-compiler-warning-rw4003.md +++ b/docs/error-messages/tool-errors/resource-compiler-warning-rw4003.md @@ -10,4 +10,6 @@ ms.assetid: e9c289f2-c065-4f26-bc24-991953742abc > SHIFT or CONTROL used without VIRTKEY +## Remarks + In an accelerator table resource, SHIFT or CONTROL requires VIRTKEY. Because SHIFT and CONTROL are indicated as flag bits in a VIRTKEY type accelerator, they cannot exist independent from a VIRTKEY. diff --git a/docs/error-messages/tool-errors/resource-compiler-warning-rw4004.md b/docs/error-messages/tool-errors/resource-compiler-warning-rw4004.md index f889e2a0453..b8cee421676 100644 --- a/docs/error-messages/tool-errors/resource-compiler-warning-rw4004.md +++ b/docs/error-messages/tool-errors/resource-compiler-warning-rw4004.md @@ -10,6 +10,8 @@ ms.assetid: 596b6a89-9ce7-4ba7-bdcb-e8054c7efafa > ASCII character not equivalent to virtual key code +## Remarks + A string literal was used for the virtual key code in a VIRTKEY type accelerator. This warning allows you to continue, but be aware that the accelerator keys generated may not match the string you indicated. (VIRTKEYs use different key codes than ASCII accelerators.) From 405cb1353035256ae6888c47a7167f4da9e08e57 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 16 Sep 2025 22:19:53 +0800 Subject: [PATCH 1847/2255] Update metadata for warning references in range [RW4001, RW4004] --- .../tool-errors/resource-compiler-warning-rw4001.md | 5 ++--- .../tool-errors/resource-compiler-warning-rw4003.md | 5 ++--- .../tool-errors/resource-compiler-warning-rw4004.md | 5 ++--- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/docs/error-messages/tool-errors/resource-compiler-warning-rw4001.md b/docs/error-messages/tool-errors/resource-compiler-warning-rw4001.md index 1f330099575..e800d8c2c8b 100644 --- a/docs/error-messages/tool-errors/resource-compiler-warning-rw4001.md +++ b/docs/error-messages/tool-errors/resource-compiler-warning-rw4001.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Warning RW4001" title: "Resource Compiler Warning RW4001" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Warning RW4001" +ms.date: 11/04/2016 f1_keywords: ["RW4001"] helpviewer_keywords: ["RW4001"] -ms.assetid: 7c2d35eb-9899-46f5-848d-7ef49c39d706 --- # Resource Compiler Warning RW4001 diff --git a/docs/error-messages/tool-errors/resource-compiler-warning-rw4003.md b/docs/error-messages/tool-errors/resource-compiler-warning-rw4003.md index 28f060bcadf..5d5c68ffcc1 100644 --- a/docs/error-messages/tool-errors/resource-compiler-warning-rw4003.md +++ b/docs/error-messages/tool-errors/resource-compiler-warning-rw4003.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Warning RW4003" title: "Resource Compiler Warning RW4003" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Warning RW4003" +ms.date: 11/04/2016 f1_keywords: ["RW4003"] helpviewer_keywords: ["RW4003"] -ms.assetid: e9c289f2-c065-4f26-bc24-991953742abc --- # Resource Compiler Warning RW4003 diff --git a/docs/error-messages/tool-errors/resource-compiler-warning-rw4004.md b/docs/error-messages/tool-errors/resource-compiler-warning-rw4004.md index b8cee421676..e54b5ee855d 100644 --- a/docs/error-messages/tool-errors/resource-compiler-warning-rw4004.md +++ b/docs/error-messages/tool-errors/resource-compiler-warning-rw4004.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Resource Compiler Warning RW4004" title: "Resource Compiler Warning RW4004" -ms.date: "11/04/2016" +description: "Learn more about: Resource Compiler Warning RW4004" +ms.date: 11/04/2016 f1_keywords: ["RW4004"] helpviewer_keywords: ["RW4004"] -ms.assetid: 596b6a89-9ce7-4ba7-bdcb-e8054c7efafa --- # Resource Compiler Warning RW4004 From 4171a71cbc8ea66b1ee99ab31f4e804f50633a0c Mon Sep 17 00:00:00 2001 From: David Justo Date: Tue, 16 Sep 2025 12:03:51 -0700 Subject: [PATCH 1848/2255] Note that the state of ASan shadow bytes is 'addressable' (#6084) * Note that the state of ASan shadow bytes is 'addressable' * typo: populate -> populated --- docs/sanitizers/asan-shadow-bytes.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/sanitizers/asan-shadow-bytes.md b/docs/sanitizers/asan-shadow-bytes.md index a4d57f7c9f0..a59597629b8 100644 --- a/docs/sanitizers/asan-shadow-bytes.md +++ b/docs/sanitizers/asan-shadow-bytes.md @@ -19,6 +19,9 @@ One shadow byte describes how many bytes are currently accessible as follows: - 1-7 means one to seven bytes - Negative numbers encode context for the runtime to use for reporting diagnostics. +> [!NOTE] +> By default, entries in the shadow memory are zero-initialized. Therefore, ASan assumes that the memory is _addressable_ by default, i.e. valid to read and write. The shadow bytes will be populated with non-zero values as the program executes and the lifetime of variables and other allocations come to an end. + ### Shadow byte legend Consider this shadow byte legend where all negative numbers are defined: From 478f714c40df8368104c0ec786bcfe556f994b92 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 17 Sep 2025 16:28:16 +0800 Subject: [PATCH 1849/2255] Add blockquotes for error messages in range [CVT1100, CVT1105] --- docs/error-messages/tool-errors/cvtres-fatal-error-cvt1100.md | 2 +- docs/error-messages/tool-errors/cvtres-fatal-error-cvt1103.md | 2 +- docs/error-messages/tool-errors/cvtres-fatal-error-cvt1105.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1100.md b/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1100.md index d4f1ee842da..fc18b169b5e 100644 --- a/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1100.md +++ b/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1100.md @@ -8,7 +8,7 @@ ms.assetid: 886e88dd-5818-4b5f-84f2-d2a3d75f0aaf --- # CVTRES Fatal Error CVT1100 -duplicate resource — type:type, name:name, language:language, flags:flags, size:size +> duplicate resource — type:type, name:name, language:language, flags:flags, size:size The given resource was specified more than once. diff --git a/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1103.md b/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1103.md index 5ca0766f957..e2e3d80586c 100644 --- a/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1103.md +++ b/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1103.md @@ -8,7 +8,7 @@ ms.assetid: 5ba5f44c-c3c3-4861-92c5-13c51ee667ef --- # CVTRES Fatal Error CVT1103 -cannot read filename +> cannot read filename An unrecoverable error occurred when CVTRES attempted to read the given file. diff --git a/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1105.md b/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1105.md index bc43ec10d2a..36135ce39a3 100644 --- a/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1105.md +++ b/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1105.md @@ -8,7 +8,7 @@ ms.assetid: 6fb98e2b-836e-4e1e-9bd8-4e1465ad4e85 --- # CVTRES Fatal Error CVT1105 -cannot seek in file +> cannot seek in file CVTRES could not go to a location in the file. From 8b3b6ee8c08ba6c1f3ddf12b95befc2cd8d5af52 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 17 Sep 2025 16:29:19 +0800 Subject: [PATCH 1850/2255] Add "Remarks" headings for error references in range [CVT1100, CVT1105] --- docs/error-messages/tool-errors/cvtres-fatal-error-cvt1100.md | 2 ++ docs/error-messages/tool-errors/cvtres-fatal-error-cvt1103.md | 2 ++ docs/error-messages/tool-errors/cvtres-fatal-error-cvt1105.md | 2 ++ 3 files changed, 6 insertions(+) diff --git a/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1100.md b/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1100.md index fc18b169b5e..2e538d4365b 100644 --- a/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1100.md +++ b/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1100.md @@ -10,6 +10,8 @@ ms.assetid: 886e88dd-5818-4b5f-84f2-d2a3d75f0aaf > duplicate resource — type:type, name:name, language:language, flags:flags, size:size +## Remarks + The given resource was specified more than once. You can get this error if the linker is creating a type library and you did not specify [/TLBID](../../build/reference/tlbid-specify-resource-id-for-typelib.md) and a resource in your project already uses 1. In this case, specify /TLBID and specify another number up to 65535. diff --git a/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1103.md b/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1103.md index e2e3d80586c..3e2c0498233 100644 --- a/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1103.md +++ b/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1103.md @@ -10,6 +10,8 @@ ms.assetid: 5ba5f44c-c3c3-4861-92c5-13c51ee667ef > cannot read filename +## Remarks + An unrecoverable error occurred when CVTRES attempted to read the given file. This error can be caused by file corruption. diff --git a/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1105.md b/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1105.md index 36135ce39a3..b6972c69657 100644 --- a/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1105.md +++ b/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1105.md @@ -10,6 +10,8 @@ ms.assetid: 6fb98e2b-836e-4e1e-9bd8-4e1465ad4e85 > cannot seek in file +## Remarks + CVTRES could not go to a location in the file. This error can be caused by file corruption. From d692a428b7e109768a36b59a0c735319ff641d39 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 17 Sep 2025 16:30:40 +0800 Subject: [PATCH 1851/2255] Update metadata for error references in range [CVT1100, CVT1105] --- .../error-messages/tool-errors/cvtres-fatal-error-cvt1100.md | 5 ++--- .../error-messages/tool-errors/cvtres-fatal-error-cvt1103.md | 5 ++--- .../error-messages/tool-errors/cvtres-fatal-error-cvt1105.md | 5 ++--- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1100.md b/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1100.md index 2e538d4365b..29fd15d3c3d 100644 --- a/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1100.md +++ b/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1100.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: CVTRES Fatal Error CVT1100" title: "CVTRES Fatal Error CVT1100" -ms.date: "11/04/2016" +description: "Learn more about: CVTRES Fatal Error CVT1100" +ms.date: 11/04/2016 f1_keywords: ["CVT1100"] helpviewer_keywords: ["CVT1100"] -ms.assetid: 886e88dd-5818-4b5f-84f2-d2a3d75f0aaf --- # CVTRES Fatal Error CVT1100 diff --git a/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1103.md b/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1103.md index 3e2c0498233..b73038b1032 100644 --- a/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1103.md +++ b/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1103.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: CVTRES Fatal Error CVT1103" title: "CVTRES Fatal Error CVT1103" -ms.date: "11/04/2016" +description: "Learn more about: CVTRES Fatal Error CVT1103" +ms.date: 11/04/2016 f1_keywords: ["CVT1103"] helpviewer_keywords: ["CVT1103"] -ms.assetid: 5ba5f44c-c3c3-4861-92c5-13c51ee667ef --- # CVTRES Fatal Error CVT1103 diff --git a/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1105.md b/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1105.md index b6972c69657..8bedfeeb3eb 100644 --- a/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1105.md +++ b/docs/error-messages/tool-errors/cvtres-fatal-error-cvt1105.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: CVTRES Fatal Error CVT1105" title: "CVTRES Fatal Error CVT1105" -ms.date: "11/04/2016" +description: "Learn more about: CVTRES Fatal Error CVT1105" +ms.date: 11/04/2016 f1_keywords: ["CVT1105"] helpviewer_keywords: ["CVT1105"] -ms.assetid: 6fb98e2b-836e-4e1e-9bd8-4e1465ad4e85 --- # CVTRES Fatal Error CVT1105 From 04c64c1c636469e3f6e6c7cbf96c1351d443f499 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 17 Sep 2025 17:11:47 +0800 Subject: [PATCH 1852/2255] Add missing word "by" in `` header reference --- docs/standard-library/stdexcept.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard-library/stdexcept.md b/docs/standard-library/stdexcept.md index 6ad13bbc2dd..72b7568ba35 100644 --- a/docs/standard-library/stdexcept.md +++ b/docs/standard-library/stdexcept.md @@ -8,7 +8,7 @@ ms.assetid: 495c10b1-1e60-4514-9f8f-7fda11a2f522 --- # `` -Defines several standard classes used for reporting exceptions. The classes form a derivation hierarchy all derived from class [exception](../standard-library/exception-class.md) and include two general types of exceptions: logical errors and run-time errors. The logical errors are caused programmer mistakes. They derive from the base class logic_error and include: +Defines several standard classes used for reporting exceptions. The classes form a derivation hierarchy all derived from class [exception](../standard-library/exception-class.md) and include two general types of exceptions: logical errors and run-time errors. The logical errors are caused by programmer mistakes. They derive from the base class logic_error and include: - `domain_error` From 7760f6f365ac3200056888ceaa11f8514942d1f2 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 17 Sep 2025 17:14:10 +0800 Subject: [PATCH 1853/2255] Add backticks in `` header reference --- docs/standard-library/stdexcept.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/standard-library/stdexcept.md b/docs/standard-library/stdexcept.md index 72b7568ba35..df927d32130 100644 --- a/docs/standard-library/stdexcept.md +++ b/docs/standard-library/stdexcept.md @@ -8,7 +8,7 @@ ms.assetid: 495c10b1-1e60-4514-9f8f-7fda11a2f522 --- # `` -Defines several standard classes used for reporting exceptions. The classes form a derivation hierarchy all derived from class [exception](../standard-library/exception-class.md) and include two general types of exceptions: logical errors and run-time errors. The logical errors are caused by programmer mistakes. They derive from the base class logic_error and include: +Defines several standard classes used for reporting exceptions. The classes form a derivation hierarchy all derived from class [`exception`](../standard-library/exception-class.md) and include two general types of exceptions: logical errors and run-time errors. The logical errors are caused by programmer mistakes. They derive from the base class `logic_error` and include: - `domain_error` @@ -18,7 +18,7 @@ Defines several standard classes used for reporting exceptions. The classes form - `out_of_range` -The run-time errors occur because of mistakes in either the library functions or in the run-time system. They derive from the base class runtime_error and include: +The run-time errors occur because of mistakes in either the library functions or in the run-time system. They derive from the base class `runtime_error` and include: - `overflow_error` @@ -30,15 +30,15 @@ The run-time errors occur because of mistakes in either the library functions or |Class|Description| |-|-| -|[domain_error Class](../standard-library/domain-error-class.md)|The class serves as the base class for all exceptions thrown to report a domain error.| -|[invalid_argument Class](../standard-library/invalid-argument-class.md)|The class serves as the base class for all exceptions thrown to report an invalid argument.| -|[length_error Class](../standard-library/length-error-class.md)|The class serves as the base class for all exceptions thrown to report an attempt to generate an object too long to be specified.| -|[logic_error Class](../standard-library/logic-error-class.md)|The class serves as the base class for all exceptions thrown to report errors presumably detectable before the program executes, such as violations of logical preconditions.| -|[out_of_range Class](../standard-library/out-of-range-class.md)|The class serves as the base class for all exceptions thrown to report an argument that is out of its valid range.| -|[overflow_error Class](../standard-library/overflow-error-class.md)|The class serves as the base class for all exceptions thrown to report an arithmetic overflow.| -|[range_error Class](../standard-library/range-error-class.md)|The class serves as the base class for all exceptions thrown to report a range error.| -|[runtime_error Class](../standard-library/runtime-error-class.md)|The class serves as the base class for all exceptions thrown to report errors presumably detectable only when the program executes.| -|[underflow_error Class](../standard-library/underflow-error-class.md)|The class serves as the base class for all exceptions thrown to report an arithmetic underflow.| +|[`domain_error` Class](../standard-library/domain-error-class.md)|The class serves as the base class for all exceptions thrown to report a domain error.| +|[`invalid_argument` Class](../standard-library/invalid-argument-class.md)|The class serves as the base class for all exceptions thrown to report an invalid argument.| +|[`length_error` Class](../standard-library/length-error-class.md)|The class serves as the base class for all exceptions thrown to report an attempt to generate an object too long to be specified.| +|[`logic_error` Class](../standard-library/logic-error-class.md)|The class serves as the base class for all exceptions thrown to report errors presumably detectable before the program executes, such as violations of logical preconditions.| +|[`out_of_range` Class](../standard-library/out-of-range-class.md)|The class serves as the base class for all exceptions thrown to report an argument that is out of its valid range.| +|[`overflow_error` Class](../standard-library/overflow-error-class.md)|The class serves as the base class for all exceptions thrown to report an arithmetic overflow.| +|[`range_error` Class](../standard-library/range-error-class.md)|The class serves as the base class for all exceptions thrown to report a range error.| +|[`runtime_error` Class](../standard-library/runtime-error-class.md)|The class serves as the base class for all exceptions thrown to report errors presumably detectable only when the program executes.| +|[`underflow_error` Class](../standard-library/underflow-error-class.md)|The class serves as the base class for all exceptions thrown to report an arithmetic underflow.| ## See also From 87e714a6225c798689b033462fb0835e8940fc3a Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 17 Sep 2025 17:17:12 +0800 Subject: [PATCH 1854/2255] Compact unordered lists and remove capitalization of "Class" in `` header reference --- docs/standard-library/stdexcept.md | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/docs/standard-library/stdexcept.md b/docs/standard-library/stdexcept.md index df927d32130..6189de4fdb9 100644 --- a/docs/standard-library/stdexcept.md +++ b/docs/standard-library/stdexcept.md @@ -11,34 +11,29 @@ ms.assetid: 495c10b1-1e60-4514-9f8f-7fda11a2f522 Defines several standard classes used for reporting exceptions. The classes form a derivation hierarchy all derived from class [`exception`](../standard-library/exception-class.md) and include two general types of exceptions: logical errors and run-time errors. The logical errors are caused by programmer mistakes. They derive from the base class `logic_error` and include: - `domain_error` - - `invalid_argument` - - `length_error` - - `out_of_range` The run-time errors occur because of mistakes in either the library functions or in the run-time system. They derive from the base class `runtime_error` and include: - `overflow_error` - - `range_error` - - `underflow_error` ### Classes |Class|Description| |-|-| -|[`domain_error` Class](../standard-library/domain-error-class.md)|The class serves as the base class for all exceptions thrown to report a domain error.| -|[`invalid_argument` Class](../standard-library/invalid-argument-class.md)|The class serves as the base class for all exceptions thrown to report an invalid argument.| -|[`length_error` Class](../standard-library/length-error-class.md)|The class serves as the base class for all exceptions thrown to report an attempt to generate an object too long to be specified.| -|[`logic_error` Class](../standard-library/logic-error-class.md)|The class serves as the base class for all exceptions thrown to report errors presumably detectable before the program executes, such as violations of logical preconditions.| -|[`out_of_range` Class](../standard-library/out-of-range-class.md)|The class serves as the base class for all exceptions thrown to report an argument that is out of its valid range.| -|[`overflow_error` Class](../standard-library/overflow-error-class.md)|The class serves as the base class for all exceptions thrown to report an arithmetic overflow.| -|[`range_error` Class](../standard-library/range-error-class.md)|The class serves as the base class for all exceptions thrown to report a range error.| -|[`runtime_error` Class](../standard-library/runtime-error-class.md)|The class serves as the base class for all exceptions thrown to report errors presumably detectable only when the program executes.| -|[`underflow_error` Class](../standard-library/underflow-error-class.md)|The class serves as the base class for all exceptions thrown to report an arithmetic underflow.| +|[`domain_error` class](../standard-library/domain-error-class.md)|The class serves as the base class for all exceptions thrown to report a domain error.| +|[`invalid_argument` class](../standard-library/invalid-argument-class.md)|The class serves as the base class for all exceptions thrown to report an invalid argument.| +|[`length_error` class](../standard-library/length-error-class.md)|The class serves as the base class for all exceptions thrown to report an attempt to generate an object too long to be specified.| +|[`logic_error` class](../standard-library/logic-error-class.md)|The class serves as the base class for all exceptions thrown to report errors presumably detectable before the program executes, such as violations of logical preconditions.| +|[`out_of_range` class](../standard-library/out-of-range-class.md)|The class serves as the base class for all exceptions thrown to report an argument that is out of its valid range.| +|[`overflow_error` class](../standard-library/overflow-error-class.md)|The class serves as the base class for all exceptions thrown to report an arithmetic overflow.| +|[`range_error` class](../standard-library/range-error-class.md)|The class serves as the base class for all exceptions thrown to report a range error.| +|[`runtime_error` class](../standard-library/runtime-error-class.md)|The class serves as the base class for all exceptions thrown to report errors presumably detectable only when the program executes.| +|[`underflow_error` class](../standard-library/underflow-error-class.md)|The class serves as the base class for all exceptions thrown to report an arithmetic underflow.| ## See also From cefc1539da297e7a8269014324dbbf167d0799c3 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 17 Sep 2025 17:23:02 +0800 Subject: [PATCH 1855/2255] Simplify redundant relative links in `` header reference --- docs/standard-library/stdexcept.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/standard-library/stdexcept.md b/docs/standard-library/stdexcept.md index 6189de4fdb9..52f34560afc 100644 --- a/docs/standard-library/stdexcept.md +++ b/docs/standard-library/stdexcept.md @@ -8,7 +8,7 @@ ms.assetid: 495c10b1-1e60-4514-9f8f-7fda11a2f522 --- # `` -Defines several standard classes used for reporting exceptions. The classes form a derivation hierarchy all derived from class [`exception`](../standard-library/exception-class.md) and include two general types of exceptions: logical errors and run-time errors. The logical errors are caused by programmer mistakes. They derive from the base class `logic_error` and include: +Defines several standard classes used for reporting exceptions. The classes form a derivation hierarchy all derived from class [`exception`](exception-class.md) and include two general types of exceptions: logical errors and run-time errors. The logical errors are caused by programmer mistakes. They derive from the base class `logic_error` and include: - `domain_error` - `invalid_argument` @@ -25,17 +25,17 @@ The run-time errors occur because of mistakes in either the library functions or |Class|Description| |-|-| -|[`domain_error` class](../standard-library/domain-error-class.md)|The class serves as the base class for all exceptions thrown to report a domain error.| -|[`invalid_argument` class](../standard-library/invalid-argument-class.md)|The class serves as the base class for all exceptions thrown to report an invalid argument.| -|[`length_error` class](../standard-library/length-error-class.md)|The class serves as the base class for all exceptions thrown to report an attempt to generate an object too long to be specified.| -|[`logic_error` class](../standard-library/logic-error-class.md)|The class serves as the base class for all exceptions thrown to report errors presumably detectable before the program executes, such as violations of logical preconditions.| -|[`out_of_range` class](../standard-library/out-of-range-class.md)|The class serves as the base class for all exceptions thrown to report an argument that is out of its valid range.| -|[`overflow_error` class](../standard-library/overflow-error-class.md)|The class serves as the base class for all exceptions thrown to report an arithmetic overflow.| -|[`range_error` class](../standard-library/range-error-class.md)|The class serves as the base class for all exceptions thrown to report a range error.| -|[`runtime_error` class](../standard-library/runtime-error-class.md)|The class serves as the base class for all exceptions thrown to report errors presumably detectable only when the program executes.| -|[`underflow_error` class](../standard-library/underflow-error-class.md)|The class serves as the base class for all exceptions thrown to report an arithmetic underflow.| +|[`domain_error` class](domain-error-class.md)|The class serves as the base class for all exceptions thrown to report a domain error.| +|[`invalid_argument` class](invalid-argument-class.md)|The class serves as the base class for all exceptions thrown to report an invalid argument.| +|[`length_error` class](length-error-class.md)|The class serves as the base class for all exceptions thrown to report an attempt to generate an object too long to be specified.| +|[`logic_error` class](logic-error-class.md)|The class serves as the base class for all exceptions thrown to report errors presumably detectable before the program executes, such as violations of logical preconditions.| +|[`out_of_range` class](out-of-range-class.md)|The class serves as the base class for all exceptions thrown to report an argument that is out of its valid range.| +|[`overflow_error` class](overflow-error-class.md)|The class serves as the base class for all exceptions thrown to report an arithmetic overflow.| +|[`range_error` class](range-error-class.md)|The class serves as the base class for all exceptions thrown to report a range error.| +|[`runtime_error` class](runtime-error-class.md)|The class serves as the base class for all exceptions thrown to report errors presumably detectable only when the program executes.| +|[`underflow_error` class](underflow-error-class.md)|The class serves as the base class for all exceptions thrown to report an arithmetic underflow.| ## See also -[Header Files Reference](../standard-library/cpp-standard-library-header-files.md)\ -[Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) +[Header Files Reference](cpp-standard-library-header-files.md)\ +[Thread Safety in the C++ Standard Library](thread-safety-in-the-cpp-standard-library.md) From 974ceb7001286f9b25f2fb33d1f2651e8c2abd43 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 17 Sep 2025 17:23:56 +0800 Subject: [PATCH 1856/2255] Update metadata in `` header reference --- docs/standard-library/stdexcept.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/standard-library/stdexcept.md b/docs/standard-library/stdexcept.md index 52f34560afc..ac7cf23aeb6 100644 --- a/docs/standard-library/stdexcept.md +++ b/docs/standard-library/stdexcept.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: " title: "" -ms.date: "11/04/2016" +description: "Learn more about: " +ms.date: 11/04/2016 f1_keywords: [""] helpviewer_keywords: ["stdexcept header"] -ms.assetid: 495c10b1-1e60-4514-9f8f-7fda11a2f522 --- # `` From deab1743de33abfd718c4e47e80e7d0336a33b1a Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 17 Sep 2025 17:45:20 +0800 Subject: [PATCH 1857/2255] Add backticks in all `` class references --- docs/standard-library/domain-error-class.md | 8 ++++---- docs/standard-library/invalid-argument-class.md | 8 ++++---- docs/standard-library/length-error-class.md | 8 ++++---- docs/standard-library/logic-error-class.md | 8 ++++---- docs/standard-library/out-of-range-class.md | 8 ++++---- docs/standard-library/overflow-error-class.md | 8 ++++---- docs/standard-library/range-error-class.md | 10 +++++----- docs/standard-library/runtime-error-class.md | 8 ++++---- docs/standard-library/underflow-error-class.md | 8 ++++---- 9 files changed, 37 insertions(+), 37 deletions(-) diff --git a/docs/standard-library/domain-error-class.md b/docs/standard-library/domain-error-class.md index fe6bc72dfe1..18a25cccfcf 100644 --- a/docs/standard-library/domain-error-class.md +++ b/docs/standard-library/domain-error-class.md @@ -6,7 +6,7 @@ f1_keywords: ["stdexcept/std::domain_error"] helpviewer_keywords: ["domain_error class"] ms.assetid: a1d8245d-61c2-4d1e-973f-073bd5dd5fa3 --- -# domain_error Class +# `domain_error` Class The class serves as the base class for all exceptions thrown to report a domain error (as in mathematics, not networking). @@ -59,11 +59,11 @@ Type: class std::domain_error ## Requirements -**Header:** \ +**Header:** `` -**Namespace:** std +**Namespace:** `std` ## See also -[logic_error Class](../standard-library/logic-error-class.md)\ +[`logic_error` Class](../standard-library/logic-error-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/invalid-argument-class.md b/docs/standard-library/invalid-argument-class.md index 9a3babf927a..e6034d84aef 100644 --- a/docs/standard-library/invalid-argument-class.md +++ b/docs/standard-library/invalid-argument-class.md @@ -6,7 +6,7 @@ f1_keywords: ["stdexcept/std::invalid_argument"] helpviewer_keywords: ["invalid_argument class"] ms.assetid: af6c227d-ad7c-4e63-9dee-67af81d83506 --- -# invalid_argument Class +# `invalid_argument` Class The class serves as the base class for all exceptions thrown to report an invalid argument. @@ -57,11 +57,11 @@ Type: class std::invalid_argument ## Requirements -**Header:** \ +**Header:** `` -**Namespace:** std +**Namespace:** `std` ## See also -[logic_error Class](../standard-library/logic-error-class.md)\ +[`logic_error` Class](../standard-library/logic-error-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/length-error-class.md b/docs/standard-library/length-error-class.md index 7df63ed20bc..30721427a42 100644 --- a/docs/standard-library/length-error-class.md +++ b/docs/standard-library/length-error-class.md @@ -6,7 +6,7 @@ f1_keywords: ["stdexcept/std::length_error"] helpviewer_keywords: ["length_error class"] ms.assetid: d53c46c5-4626-400d-bd76-bf3e1e0f64ae --- -# length_error Class +# `length_error` Class The class serves as the base class for all exceptions thrown to report an attempt to generate an object too long to be specified. @@ -58,11 +58,11 @@ Type: class std::length_error ## Requirements -**Header:** \ +**Header:** `` -**Namespace:** std +**Namespace:** `std` ## See also -[logic_error Class](../standard-library/logic-error-class.md)\ +[`logic_error` Class](../standard-library/logic-error-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/logic-error-class.md b/docs/standard-library/logic-error-class.md index 63f9e82219b..eafaee25958 100644 --- a/docs/standard-library/logic-error-class.md +++ b/docs/standard-library/logic-error-class.md @@ -6,7 +6,7 @@ f1_keywords: ["stdexcept/std::logic_error"] helpviewer_keywords: ["logic_error class"] ms.assetid: b290d73d-94e1-4288-af86-2bb5d71f677a --- -# logic_error Class +# `logic_error` Class The class serves as the base class for all exceptions thrown to report errors presumably detectable before the program executes, such as violations of logical preconditions. @@ -57,11 +57,11 @@ Type: class std::logic_error ## Requirements -**Header:** \ +**Header:** `` -**Namespace:** std +**Namespace:** `std` ## See also -[exception Class](../standard-library/exception-class.md)\ +[`exception` Class](../standard-library/exception-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/out-of-range-class.md b/docs/standard-library/out-of-range-class.md index 0fb2d3cb673..6558b9baffe 100644 --- a/docs/standard-library/out-of-range-class.md +++ b/docs/standard-library/out-of-range-class.md @@ -6,7 +6,7 @@ f1_keywords: ["stdexcept/std::out_of_range"] helpviewer_keywords: ["out_of_range class"] ms.assetid: d0e14dc0-065e-4666-9ac9-51e52223c503 --- -# out_of_range Class +# `out_of_range` Class The class serves as the base class for all exceptions thrown to report an argument that is out of its valid range. @@ -60,11 +60,11 @@ Type: class std::out_of_range ## Requirements -**Header:** \ +**Header:** `` -**Namespace:** std +**Namespace:** `std` ## See also -[logic_error Class](../standard-library/logic-error-class.md)\ +[`logic_error` Class](../standard-library/logic-error-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/overflow-error-class.md b/docs/standard-library/overflow-error-class.md index 0ba3c520d48..6744f7ab4de 100644 --- a/docs/standard-library/overflow-error-class.md +++ b/docs/standard-library/overflow-error-class.md @@ -6,7 +6,7 @@ f1_keywords: ["stdexcept/std::overflow_error"] helpviewer_keywords: ["overflow_error class"] ms.assetid: bae7128d-e36b-4a45-84f1-2f89da441d20 --- -# overflow_error Class +# `overflow_error` Class The class serves as the base class for all exceptions thrown to report an arithmetic overflow. @@ -60,11 +60,11 @@ Type: class std::overflow_error ## Requirements -**Header:** \ +**Header:** `` -**Namespace:** std +**Namespace:** `std` ## See also -[runtime_error Class](../standard-library/runtime-error-class.md)\ +[`runtime_error` Class](../standard-library/runtime-error-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/range-error-class.md b/docs/standard-library/range-error-class.md index a8b6485bcf3..51632bec296 100644 --- a/docs/standard-library/range-error-class.md +++ b/docs/standard-library/range-error-class.md @@ -6,7 +6,7 @@ f1_keywords: ["stdexcept/std::range_error"] helpviewer_keywords: ["range_error class"] ms.assetid: 8afb3e88-fc49-4213-b096-ed63d7aea37c --- -# range_error Class +# `range_error` Class The class serves as the base class for all exceptions thrown to report a range error (as in mathematics, not iterators). @@ -22,7 +22,7 @@ public: ## Remarks -The value returned by [what](../standard-library/exception-class.md) is a copy of `message.data()`. For more information, see [basic_string::data](../standard-library/basic-string-class.md#data). +The value returned by [`what`](../standard-library/exception-class.md) is a copy of `message.data()`. For more information, see [`basic_string::data`](../standard-library/basic-string-class.md#data). ## Example @@ -55,11 +55,11 @@ Type: class std::range_error ## Requirements -**Header:** \ +**Header:** `` -**Namespace:** std +**Namespace:** `std` ## See also -[runtime_error Class](../standard-library/runtime-error-class.md)\ +[`runtime_error` Class](../standard-library/runtime-error-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/runtime-error-class.md b/docs/standard-library/runtime-error-class.md index e71e28e5ddf..e3281edc1df 100644 --- a/docs/standard-library/runtime-error-class.md +++ b/docs/standard-library/runtime-error-class.md @@ -6,7 +6,7 @@ f1_keywords: ["stdexcept/std::runtime_error"] helpviewer_keywords: ["runtime_error class"] ms.assetid: 4d0227bf-847b-45a2-a320-2351ebf98368 --- -# runtime_error Class +# `runtime_error` Class The class serves as the base class for all exceptions thrown to report errors presumably detectable only when the program executes. @@ -57,11 +57,11 @@ Type: class std::runtime_error ## Requirements -**Header:** \ +**Header:** `` -**Namespace:** std +**Namespace:** `std` ## See also -[exception Class](../standard-library/exception-class.md)\ +[`exception` Class](../standard-library/exception-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/underflow-error-class.md b/docs/standard-library/underflow-error-class.md index eee569a3f7b..fb27348ae17 100644 --- a/docs/standard-library/underflow-error-class.md +++ b/docs/standard-library/underflow-error-class.md @@ -6,7 +6,7 @@ f1_keywords: ["stdexcept/std::underflow_error"] helpviewer_keywords: ["underflow_error class"] ms.assetid: d632f1f9-9c6c-4954-b96b-03041bfab22d --- -# underflow_error Class +# `underflow_error` Class The class serves as the base class for all exceptions thrown to report an arithmetic underflow. @@ -59,11 +59,11 @@ Type: class std::underflow_error ## Requirements -**Header:** \ +**Header:** `` -**Namespace:** std +**Namespace:** `std` ## See also -[runtime_error Class](../standard-library/runtime-error-class.md)\ +[`runtime_error` Class](../standard-library/runtime-error-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) From af365e4c78cf6b18a20e381f9c8f7aa200126809 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 17 Sep 2025 17:54:04 +0800 Subject: [PATCH 1858/2255] Split output into another code block for all `` class references --- docs/standard-library/domain-error-class.md | 5 +++-- docs/standard-library/invalid-argument-class.md | 5 +++-- docs/standard-library/length-error-class.md | 5 +++-- docs/standard-library/logic-error-class.md | 5 +++-- docs/standard-library/out-of-range-class.md | 5 +++-- docs/standard-library/overflow-error-class.md | 5 +++-- docs/standard-library/range-error-class.md | 5 +++-- docs/standard-library/runtime-error-class.md | 5 +++-- docs/standard-library/underflow-error-class.md | 5 +++-- 9 files changed, 27 insertions(+), 18 deletions(-) diff --git a/docs/standard-library/domain-error-class.md b/docs/standard-library/domain-error-class.md index 18a25cccfcf..1affd02c32a 100644 --- a/docs/standard-library/domain-error-class.md +++ b/docs/standard-library/domain-error-class.md @@ -51,10 +51,11 @@ int main() cerr << "Type: " << typeid(e).name() << endl; } } -/* Output: +``` + +```Output Caught: Your domain is in error! Type: class std::domain_error -*/ ``` ## Requirements diff --git a/docs/standard-library/invalid-argument-class.md b/docs/standard-library/invalid-argument-class.md index e6034d84aef..6cfa99b7da6 100644 --- a/docs/standard-library/invalid-argument-class.md +++ b/docs/standard-library/invalid-argument-class.md @@ -49,10 +49,11 @@ int main() cerr << "Type: " << typeid(e).name() << endl; } } -/* Output: +``` + +```Output Caught: invalid bitset char Type: class std::invalid_argument -*/ ``` ## Requirements diff --git a/docs/standard-library/length-error-class.md b/docs/standard-library/length-error-class.md index 30721427a42..f340c17be62 100644 --- a/docs/standard-library/length-error-class.md +++ b/docs/standard-library/length-error-class.md @@ -50,10 +50,11 @@ int main() cerr << "Type: " << typeid(e).name() << endl; } } -/* Output: +``` + +```Output Caught: vector too long Type: class std::length_error -*/ ``` ## Requirements diff --git a/docs/standard-library/logic-error-class.md b/docs/standard-library/logic-error-class.md index eafaee25958..032ba515aba 100644 --- a/docs/standard-library/logic-error-class.md +++ b/docs/standard-library/logic-error-class.md @@ -49,10 +49,11 @@ int main() cerr << "Type: " << typeid(e).name() << endl; } } -/* Output: +``` + +```Output Caught: Does not compute! Type: class std::logic_error -*/ ``` ## Requirements diff --git a/docs/standard-library/out-of-range-class.md b/docs/standard-library/out-of-range-class.md index 6558b9baffe..4094107ab89 100644 --- a/docs/standard-library/out-of-range-class.md +++ b/docs/standard-library/out-of-range-class.md @@ -52,10 +52,11 @@ int main() cerr << "Type: " << typeid(e).name() << endl; } } -/* Output: +``` + +```Output Caught: invalid string position Type: class std::out_of_range -*/ ``` ## Requirements diff --git a/docs/standard-library/overflow-error-class.md b/docs/standard-library/overflow-error-class.md index 6744f7ab4de..d5193d7df92 100644 --- a/docs/standard-library/overflow-error-class.md +++ b/docs/standard-library/overflow-error-class.md @@ -52,10 +52,11 @@ int main() cerr << "Type: " << typeid(e).name() << endl; } } -/* Output: +``` + +```Output Caught: bitset overflow Type: class std::overflow_error -*/ ``` ## Requirements diff --git a/docs/standard-library/range-error-class.md b/docs/standard-library/range-error-class.md index 51632bec296..c7471ab1571 100644 --- a/docs/standard-library/range-error-class.md +++ b/docs/standard-library/range-error-class.md @@ -47,10 +47,11 @@ int main() cerr << "Type: " << typeid(e).name() << endl; } } -/* Output: +``` + +```Output Caught: The range is in error! Type: class std::range_error -*/ ``` ## Requirements diff --git a/docs/standard-library/runtime-error-class.md b/docs/standard-library/runtime-error-class.md index e3281edc1df..a5367a1a939 100644 --- a/docs/standard-library/runtime-error-class.md +++ b/docs/standard-library/runtime-error-class.md @@ -49,10 +49,11 @@ int main() cerr << "Type: " << typeid(e).name() << endl; } } -/* Output: +``` + +```Output Caught: bad locale name Type: class std::runtime_error -*/ ``` ## Requirements diff --git a/docs/standard-library/underflow-error-class.md b/docs/standard-library/underflow-error-class.md index fb27348ae17..9f5e9ae9bfb 100644 --- a/docs/standard-library/underflow-error-class.md +++ b/docs/standard-library/underflow-error-class.md @@ -51,10 +51,11 @@ int main() cerr << "Type: " << typeid(e).name() << endl; } } -/* Output: +``` + +```Output Caught: The number's a bit small, captain! Type: class std::underflow_error -*/ ``` ## Requirements From 78718da229b64ee12a8d05c0e4805ef4d75cad93 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 17 Sep 2025 17:56:48 +0800 Subject: [PATCH 1859/2255] Change "Class" to "class" in all `` class references --- docs/standard-library/domain-error-class.md | 8 ++++---- docs/standard-library/invalid-argument-class.md | 8 ++++---- docs/standard-library/length-error-class.md | 8 ++++---- docs/standard-library/logic-error-class.md | 8 ++++---- docs/standard-library/out-of-range-class.md | 8 ++++---- docs/standard-library/overflow-error-class.md | 8 ++++---- docs/standard-library/range-error-class.md | 8 ++++---- docs/standard-library/runtime-error-class.md | 8 ++++---- docs/standard-library/underflow-error-class.md | 8 ++++---- 9 files changed, 36 insertions(+), 36 deletions(-) diff --git a/docs/standard-library/domain-error-class.md b/docs/standard-library/domain-error-class.md index 1affd02c32a..deecb530dd2 100644 --- a/docs/standard-library/domain-error-class.md +++ b/docs/standard-library/domain-error-class.md @@ -1,12 +1,12 @@ --- -description: "Learn more about: domain_error Class" -title: "domain_error Class" +description: "Learn more about: domain_error class" +title: "domain_error class" ms.date: "09/09/2021" f1_keywords: ["stdexcept/std::domain_error"] helpviewer_keywords: ["domain_error class"] ms.assetid: a1d8245d-61c2-4d1e-973f-073bd5dd5fa3 --- -# `domain_error` Class +# `domain_error` class The class serves as the base class for all exceptions thrown to report a domain error (as in mathematics, not networking). @@ -66,5 +66,5 @@ Type: class std::domain_error ## See also -[`logic_error` Class](../standard-library/logic-error-class.md)\ +[`logic_error` class](../standard-library/logic-error-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/invalid-argument-class.md b/docs/standard-library/invalid-argument-class.md index 6cfa99b7da6..4243101510d 100644 --- a/docs/standard-library/invalid-argument-class.md +++ b/docs/standard-library/invalid-argument-class.md @@ -1,12 +1,12 @@ --- -description: "Learn more about: invalid_argument Class" -title: "invalid_argument Class" +description: "Learn more about: invalid_argument class" +title: "invalid_argument class" ms.date: "09/09/2021" f1_keywords: ["stdexcept/std::invalid_argument"] helpviewer_keywords: ["invalid_argument class"] ms.assetid: af6c227d-ad7c-4e63-9dee-67af81d83506 --- -# `invalid_argument` Class +# `invalid_argument` class The class serves as the base class for all exceptions thrown to report an invalid argument. @@ -64,5 +64,5 @@ Type: class std::invalid_argument ## See also -[`logic_error` Class](../standard-library/logic-error-class.md)\ +[`logic_error` class](../standard-library/logic-error-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/length-error-class.md b/docs/standard-library/length-error-class.md index f340c17be62..93a9ea92de4 100644 --- a/docs/standard-library/length-error-class.md +++ b/docs/standard-library/length-error-class.md @@ -1,12 +1,12 @@ --- -description: "Learn more about: length_error Class" -title: "length_error Class" +description: "Learn more about: length_error class" +title: "length_error class" ms.date: "09/09/2021" f1_keywords: ["stdexcept/std::length_error"] helpviewer_keywords: ["length_error class"] ms.assetid: d53c46c5-4626-400d-bd76-bf3e1e0f64ae --- -# `length_error` Class +# `length_error` class The class serves as the base class for all exceptions thrown to report an attempt to generate an object too long to be specified. @@ -65,5 +65,5 @@ Type: class std::length_error ## See also -[`logic_error` Class](../standard-library/logic-error-class.md)\ +[`logic_error` class](../standard-library/logic-error-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/logic-error-class.md b/docs/standard-library/logic-error-class.md index 032ba515aba..957f80c7b2b 100644 --- a/docs/standard-library/logic-error-class.md +++ b/docs/standard-library/logic-error-class.md @@ -1,12 +1,12 @@ --- -description: "Learn more about: logic_error Class" -title: "logic_error Class" +description: "Learn more about: logic_error class" +title: "logic_error class" ms.date: "09/09/2021" f1_keywords: ["stdexcept/std::logic_error"] helpviewer_keywords: ["logic_error class"] ms.assetid: b290d73d-94e1-4288-af86-2bb5d71f677a --- -# `logic_error` Class +# `logic_error` class The class serves as the base class for all exceptions thrown to report errors presumably detectable before the program executes, such as violations of logical preconditions. @@ -64,5 +64,5 @@ Type: class std::logic_error ## See also -[`exception` Class](../standard-library/exception-class.md)\ +[`exception` class](../standard-library/exception-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/out-of-range-class.md b/docs/standard-library/out-of-range-class.md index 4094107ab89..98f8ffd101d 100644 --- a/docs/standard-library/out-of-range-class.md +++ b/docs/standard-library/out-of-range-class.md @@ -1,12 +1,12 @@ --- -description: "Learn more about: out_of_range Class" -title: "out_of_range Class" +description: "Learn more about: out_of_range class" +title: "out_of_range class" ms.date: "09/09/2021" f1_keywords: ["stdexcept/std::out_of_range"] helpviewer_keywords: ["out_of_range class"] ms.assetid: d0e14dc0-065e-4666-9ac9-51e52223c503 --- -# `out_of_range` Class +# `out_of_range` class The class serves as the base class for all exceptions thrown to report an argument that is out of its valid range. @@ -67,5 +67,5 @@ Type: class std::out_of_range ## See also -[`logic_error` Class](../standard-library/logic-error-class.md)\ +[`logic_error` class](../standard-library/logic-error-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/overflow-error-class.md b/docs/standard-library/overflow-error-class.md index d5193d7df92..13b8da626c7 100644 --- a/docs/standard-library/overflow-error-class.md +++ b/docs/standard-library/overflow-error-class.md @@ -1,12 +1,12 @@ --- -description: "Learn more about: overflow_error Class" -title: "overflow_error Class" +description: "Learn more about: overflow_error class" +title: "overflow_error class" ms.date: "09/09/2021" f1_keywords: ["stdexcept/std::overflow_error"] helpviewer_keywords: ["overflow_error class"] ms.assetid: bae7128d-e36b-4a45-84f1-2f89da441d20 --- -# `overflow_error` Class +# `overflow_error` class The class serves as the base class for all exceptions thrown to report an arithmetic overflow. @@ -67,5 +67,5 @@ Type: class std::overflow_error ## See also -[`runtime_error` Class](../standard-library/runtime-error-class.md)\ +[`runtime_error` class](../standard-library/runtime-error-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/range-error-class.md b/docs/standard-library/range-error-class.md index c7471ab1571..b4f54c2087d 100644 --- a/docs/standard-library/range-error-class.md +++ b/docs/standard-library/range-error-class.md @@ -1,12 +1,12 @@ --- -description: "Learn more about: range_error Class" -title: "range_error Class" +description: "Learn more about: range_error class" +title: "range_error class" ms.date: "09/09/2021" f1_keywords: ["stdexcept/std::range_error"] helpviewer_keywords: ["range_error class"] ms.assetid: 8afb3e88-fc49-4213-b096-ed63d7aea37c --- -# `range_error` Class +# `range_error` class The class serves as the base class for all exceptions thrown to report a range error (as in mathematics, not iterators). @@ -62,5 +62,5 @@ Type: class std::range_error ## See also -[`runtime_error` Class](../standard-library/runtime-error-class.md)\ +[`runtime_error` class](../standard-library/runtime-error-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/runtime-error-class.md b/docs/standard-library/runtime-error-class.md index a5367a1a939..108070bf791 100644 --- a/docs/standard-library/runtime-error-class.md +++ b/docs/standard-library/runtime-error-class.md @@ -1,12 +1,12 @@ --- -description: "Learn more about: runtime_error Class" -title: "runtime_error Class" +description: "Learn more about: runtime_error class" +title: "runtime_error class" ms.date: "09/09/2021" f1_keywords: ["stdexcept/std::runtime_error"] helpviewer_keywords: ["runtime_error class"] ms.assetid: 4d0227bf-847b-45a2-a320-2351ebf98368 --- -# `runtime_error` Class +# `runtime_error` class The class serves as the base class for all exceptions thrown to report errors presumably detectable only when the program executes. @@ -64,5 +64,5 @@ Type: class std::runtime_error ## See also -[`exception` Class](../standard-library/exception-class.md)\ +[`exception` class](../standard-library/exception-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/underflow-error-class.md b/docs/standard-library/underflow-error-class.md index 9f5e9ae9bfb..87098ec04dc 100644 --- a/docs/standard-library/underflow-error-class.md +++ b/docs/standard-library/underflow-error-class.md @@ -1,12 +1,12 @@ --- -description: "Learn more about: underflow_error Class" -title: "underflow_error Class" +description: "Learn more about: underflow_error class" +title: "underflow_error class" ms.date: "09/09/2021" f1_keywords: ["stdexcept/std::underflow_error"] helpviewer_keywords: ["underflow_error class"] ms.assetid: d632f1f9-9c6c-4954-b96b-03041bfab22d --- -# `underflow_error` Class +# `underflow_error` class The class serves as the base class for all exceptions thrown to report an arithmetic underflow. @@ -66,5 +66,5 @@ Type: class std::underflow_error ## See also -[`runtime_error` Class](../standard-library/runtime-error-class.md)\ +[`runtime_error` class](../standard-library/runtime-error-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) From b53ea75d4bc62344e71d730263c0c9e2678be78d Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 17 Sep 2025 18:05:04 +0800 Subject: [PATCH 1860/2255] Simplify redundant relative links in all `` class references --- docs/standard-library/domain-error-class.md | 6 +++--- docs/standard-library/invalid-argument-class.md | 6 +++--- docs/standard-library/length-error-class.md | 6 +++--- docs/standard-library/logic-error-class.md | 6 +++--- docs/standard-library/out-of-range-class.md | 6 +++--- docs/standard-library/overflow-error-class.md | 6 +++--- docs/standard-library/range-error-class.md | 6 +++--- docs/standard-library/runtime-error-class.md | 6 +++--- docs/standard-library/underflow-error-class.md | 6 +++--- 9 files changed, 27 insertions(+), 27 deletions(-) diff --git a/docs/standard-library/domain-error-class.md b/docs/standard-library/domain-error-class.md index deecb530dd2..ae2ee7468d3 100644 --- a/docs/standard-library/domain-error-class.md +++ b/docs/standard-library/domain-error-class.md @@ -24,7 +24,7 @@ public: ## Remarks -The value returned by `what()` is a copy of `message.data()`. For more information, see [`what`](../standard-library/exception-class.md) and [`data`](../standard-library/basic-string-class.md#data). +The value returned by `what()` is a copy of `message.data()`. For more information, see [`what`](exception-class.md) and [`data`](basic-string-class.md#data). `domain_error` isn't thrown by any functions in the Microsoft implementation of the C++ Standard Library, but it might be thrown by third-party libraries or user code. @@ -66,5 +66,5 @@ Type: class std::domain_error ## See also -[`logic_error` class](../standard-library/logic-error-class.md)\ -[Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) +[`logic_error` class](logic-error-class.md)\ +[Thread Safety in the C++ Standard Library](thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/invalid-argument-class.md b/docs/standard-library/invalid-argument-class.md index 4243101510d..61fec61895c 100644 --- a/docs/standard-library/invalid-argument-class.md +++ b/docs/standard-library/invalid-argument-class.md @@ -24,7 +24,7 @@ public: ## Remarks -The value returned by `what()` is a copy of `message.data()`. For more information, see [`what`](../standard-library/exception-class.md) and [`data`](../standard-library/basic-string-class.md#data). +The value returned by `what()` is a copy of `message.data()`. For more information, see [`what`](exception-class.md) and [`data`](basic-string-class.md#data). ## Example @@ -64,5 +64,5 @@ Type: class std::invalid_argument ## See also -[`logic_error` class](../standard-library/logic-error-class.md)\ -[Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) +[`logic_error` class](logic-error-class.md)\ +[Thread Safety in the C++ Standard Library](thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/length-error-class.md b/docs/standard-library/length-error-class.md index 93a9ea92de4..6cfb2bd9640 100644 --- a/docs/standard-library/length-error-class.md +++ b/docs/standard-library/length-error-class.md @@ -24,7 +24,7 @@ public: ## Remarks -The value returned by `what()` is a copy of `message.data()`. For more information, see [`what`](../standard-library/exception-class.md) and [`data`](../standard-library/basic-string-class.md#data). +The value returned by `what()` is a copy of `message.data()`. For more information, see [`what`](exception-class.md) and [`data`](basic-string-class.md#data). ## Example @@ -65,5 +65,5 @@ Type: class std::length_error ## See also -[`logic_error` class](../standard-library/logic-error-class.md)\ -[Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) +[`logic_error` class](logic-error-class.md)\ +[Thread Safety in the C++ Standard Library](thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/logic-error-class.md b/docs/standard-library/logic-error-class.md index 957f80c7b2b..6dfedeed2df 100644 --- a/docs/standard-library/logic-error-class.md +++ b/docs/standard-library/logic-error-class.md @@ -24,7 +24,7 @@ public: ## Remarks -The value returned by `what()` is a copy of `message.data()`. For more information, see [`what`](../standard-library/exception-class.md) and [`data`](../standard-library/basic-string-class.md#data). +The value returned by `what()` is a copy of `message.data()`. For more information, see [`what`](exception-class.md) and [`data`](basic-string-class.md#data). ## Example @@ -64,5 +64,5 @@ Type: class std::logic_error ## See also -[`exception` class](../standard-library/exception-class.md)\ -[Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) +[`exception` class](exception-class.md)\ +[Thread Safety in the C++ Standard Library](thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/out-of-range-class.md b/docs/standard-library/out-of-range-class.md index 98f8ffd101d..11c837e5500 100644 --- a/docs/standard-library/out-of-range-class.md +++ b/docs/standard-library/out-of-range-class.md @@ -24,7 +24,7 @@ public: ## Remarks -The value returned by `what()` is a copy of `message.data()`. For more information, see [`what`](../standard-library/exception-class.md) and [`data`](../standard-library/basic-string-class.md#data). +The value returned by `what()` is a copy of `message.data()`. For more information, see [`what`](exception-class.md) and [`data`](basic-string-class.md#data). ## Example @@ -67,5 +67,5 @@ Type: class std::out_of_range ## See also -[`logic_error` class](../standard-library/logic-error-class.md)\ -[Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) +[`logic_error` class](logic-error-class.md)\ +[Thread Safety in the C++ Standard Library](thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/overflow-error-class.md b/docs/standard-library/overflow-error-class.md index 13b8da626c7..32ddd799899 100644 --- a/docs/standard-library/overflow-error-class.md +++ b/docs/standard-library/overflow-error-class.md @@ -24,7 +24,7 @@ public: ## Remarks -The value returned by `what()` is a copy of `message.data()`. For more information, see [`what`](../standard-library/exception-class.md) and [`data`](../standard-library/basic-string-class.md#data). +The value returned by `what()` is a copy of `message.data()`. For more information, see [`what`](exception-class.md) and [`data`](basic-string-class.md#data). ## Example @@ -67,5 +67,5 @@ Type: class std::overflow_error ## See also -[`runtime_error` class](../standard-library/runtime-error-class.md)\ -[Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) +[`runtime_error` class](runtime-error-class.md)\ +[Thread Safety in the C++ Standard Library](thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/range-error-class.md b/docs/standard-library/range-error-class.md index b4f54c2087d..a9fd6135bc2 100644 --- a/docs/standard-library/range-error-class.md +++ b/docs/standard-library/range-error-class.md @@ -22,7 +22,7 @@ public: ## Remarks -The value returned by [`what`](../standard-library/exception-class.md) is a copy of `message.data()`. For more information, see [`basic_string::data`](../standard-library/basic-string-class.md#data). +The value returned by [`what`](exception-class.md) is a copy of `message.data()`. For more information, see [`basic_string::data`](basic-string-class.md#data). ## Example @@ -62,5 +62,5 @@ Type: class std::range_error ## See also -[`runtime_error` class](../standard-library/runtime-error-class.md)\ -[Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) +[`runtime_error` class](runtime-error-class.md)\ +[Thread Safety in the C++ Standard Library](thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/runtime-error-class.md b/docs/standard-library/runtime-error-class.md index 108070bf791..2ffcb27f3ff 100644 --- a/docs/standard-library/runtime-error-class.md +++ b/docs/standard-library/runtime-error-class.md @@ -24,7 +24,7 @@ public: ## Remarks -The value returned by `what()` is a copy of `message.data()`. For more information, see [`what`](../standard-library/exception-class.md) and [`data`](../standard-library/basic-string-class.md#data). +The value returned by `what()` is a copy of `message.data()`. For more information, see [`what`](exception-class.md) and [`data`](basic-string-class.md#data). ## Example @@ -64,5 +64,5 @@ Type: class std::runtime_error ## See also -[`exception` class](../standard-library/exception-class.md)\ -[Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) +[`exception` class](exception-class.md)\ +[Thread Safety in the C++ Standard Library](thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/underflow-error-class.md b/docs/standard-library/underflow-error-class.md index 87098ec04dc..a07486f555d 100644 --- a/docs/standard-library/underflow-error-class.md +++ b/docs/standard-library/underflow-error-class.md @@ -24,7 +24,7 @@ public: ## Remarks -The value returned by `what()` is a copy of `message.data()`. For more information, see [`what`](../standard-library/exception-class.md) and [`data`](../standard-library/basic-string-class.md#data). +The value returned by `what()` is a copy of `message.data()`. For more information, see [`what`](exception-class.md) and [`data`](basic-string-class.md#data). `underflow_error` isn't thrown by any functions in the Microsoft implementation of the C++ Standard Library, but it might be thrown by third-party libraries or user code. @@ -66,5 +66,5 @@ Type: class std::underflow_error ## See also -[`runtime_error` class](../standard-library/runtime-error-class.md)\ -[Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) +[`runtime_error` class](runtime-error-class.md)\ +[Thread Safety in the C++ Standard Library](thread-safety-in-the-cpp-standard-library.md) From b292e17de66f0d0101d2a16c5055c2d37ee8ee39 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 17 Sep 2025 18:11:08 +0800 Subject: [PATCH 1861/2255] Remove trailing empty syntax lines in all `` class references --- docs/standard-library/domain-error-class.md | 1 - docs/standard-library/invalid-argument-class.md | 1 - docs/standard-library/length-error-class.md | 1 - docs/standard-library/logic-error-class.md | 1 - docs/standard-library/out-of-range-class.md | 1 - docs/standard-library/overflow-error-class.md | 1 - docs/standard-library/runtime-error-class.md | 1 - docs/standard-library/underflow-error-class.md | 1 - 8 files changed, 8 deletions(-) diff --git a/docs/standard-library/domain-error-class.md b/docs/standard-library/domain-error-class.md index ae2ee7468d3..a7ec04a0b5a 100644 --- a/docs/standard-library/domain-error-class.md +++ b/docs/standard-library/domain-error-class.md @@ -18,7 +18,6 @@ public: explicit domain_error(const string& message); explicit domain_error(const char *message); - }; ``` diff --git a/docs/standard-library/invalid-argument-class.md b/docs/standard-library/invalid-argument-class.md index 61fec61895c..9eb24629250 100644 --- a/docs/standard-library/invalid-argument-class.md +++ b/docs/standard-library/invalid-argument-class.md @@ -18,7 +18,6 @@ public: explicit invalid_argument(const string& message); explicit invalid_argument(const char *message); - }; ``` diff --git a/docs/standard-library/length-error-class.md b/docs/standard-library/length-error-class.md index 6cfb2bd9640..aa7963f1c21 100644 --- a/docs/standard-library/length-error-class.md +++ b/docs/standard-library/length-error-class.md @@ -18,7 +18,6 @@ public: explicit length_error(const string& message); explicit length_error(const char *message); - }; ``` diff --git a/docs/standard-library/logic-error-class.md b/docs/standard-library/logic-error-class.md index 6dfedeed2df..a3f6de0ad30 100644 --- a/docs/standard-library/logic-error-class.md +++ b/docs/standard-library/logic-error-class.md @@ -18,7 +18,6 @@ public: explicit logic_error(const string& message); explicit logic_error(const char *message); - }; ``` diff --git a/docs/standard-library/out-of-range-class.md b/docs/standard-library/out-of-range-class.md index 11c837e5500..8781b499f7e 100644 --- a/docs/standard-library/out-of-range-class.md +++ b/docs/standard-library/out-of-range-class.md @@ -18,7 +18,6 @@ public: explicit out_of_range(const string& message); explicit out_of_range(const char *message); - }; ``` diff --git a/docs/standard-library/overflow-error-class.md b/docs/standard-library/overflow-error-class.md index 32ddd799899..30373fb33d3 100644 --- a/docs/standard-library/overflow-error-class.md +++ b/docs/standard-library/overflow-error-class.md @@ -18,7 +18,6 @@ public: explicit overflow_error(const string& message); explicit overflow_error(const char *message); - }; ``` diff --git a/docs/standard-library/runtime-error-class.md b/docs/standard-library/runtime-error-class.md index 2ffcb27f3ff..575a981066a 100644 --- a/docs/standard-library/runtime-error-class.md +++ b/docs/standard-library/runtime-error-class.md @@ -18,7 +18,6 @@ public: explicit runtime_error(const string& message); explicit runtime_error(const char *message); - }; ``` diff --git a/docs/standard-library/underflow-error-class.md b/docs/standard-library/underflow-error-class.md index a07486f555d..f0db72e1561 100644 --- a/docs/standard-library/underflow-error-class.md +++ b/docs/standard-library/underflow-error-class.md @@ -18,7 +18,6 @@ public: explicit underflow_error(const string& message); explicit underflow_error(const char *message); - }; ``` From cad9532de44db0dcce74437d88bf020fcdd5bf76 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 17 Sep 2025 18:13:16 +0800 Subject: [PATCH 1862/2255] Update metadata in all `` class references --- docs/standard-library/domain-error-class.md | 5 ++--- docs/standard-library/invalid-argument-class.md | 5 ++--- docs/standard-library/length-error-class.md | 5 ++--- docs/standard-library/logic-error-class.md | 5 ++--- docs/standard-library/out-of-range-class.md | 5 ++--- docs/standard-library/overflow-error-class.md | 5 ++--- docs/standard-library/range-error-class.md | 5 ++--- docs/standard-library/runtime-error-class.md | 5 ++--- docs/standard-library/underflow-error-class.md | 5 ++--- 9 files changed, 18 insertions(+), 27 deletions(-) diff --git a/docs/standard-library/domain-error-class.md b/docs/standard-library/domain-error-class.md index a7ec04a0b5a..c976e9d9d67 100644 --- a/docs/standard-library/domain-error-class.md +++ b/docs/standard-library/domain-error-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: domain_error class" title: "domain_error class" -ms.date: "09/09/2021" +description: "Learn more about: domain_error class" +ms.date: 09/09/2021 f1_keywords: ["stdexcept/std::domain_error"] helpviewer_keywords: ["domain_error class"] -ms.assetid: a1d8245d-61c2-4d1e-973f-073bd5dd5fa3 --- # `domain_error` class diff --git a/docs/standard-library/invalid-argument-class.md b/docs/standard-library/invalid-argument-class.md index 9eb24629250..f2a22f505cb 100644 --- a/docs/standard-library/invalid-argument-class.md +++ b/docs/standard-library/invalid-argument-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: invalid_argument class" title: "invalid_argument class" -ms.date: "09/09/2021" +description: "Learn more about: invalid_argument class" +ms.date: 09/09/2021 f1_keywords: ["stdexcept/std::invalid_argument"] helpviewer_keywords: ["invalid_argument class"] -ms.assetid: af6c227d-ad7c-4e63-9dee-67af81d83506 --- # `invalid_argument` class diff --git a/docs/standard-library/length-error-class.md b/docs/standard-library/length-error-class.md index aa7963f1c21..7230d8b628f 100644 --- a/docs/standard-library/length-error-class.md +++ b/docs/standard-library/length-error-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: length_error class" title: "length_error class" -ms.date: "09/09/2021" +description: "Learn more about: length_error class" +ms.date: 09/09/2021 f1_keywords: ["stdexcept/std::length_error"] helpviewer_keywords: ["length_error class"] -ms.assetid: d53c46c5-4626-400d-bd76-bf3e1e0f64ae --- # `length_error` class diff --git a/docs/standard-library/logic-error-class.md b/docs/standard-library/logic-error-class.md index a3f6de0ad30..6d096245bda 100644 --- a/docs/standard-library/logic-error-class.md +++ b/docs/standard-library/logic-error-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: logic_error class" title: "logic_error class" -ms.date: "09/09/2021" +description: "Learn more about: logic_error class" +ms.date: 09/09/2021 f1_keywords: ["stdexcept/std::logic_error"] helpviewer_keywords: ["logic_error class"] -ms.assetid: b290d73d-94e1-4288-af86-2bb5d71f677a --- # `logic_error` class diff --git a/docs/standard-library/out-of-range-class.md b/docs/standard-library/out-of-range-class.md index 8781b499f7e..cf5e79dfc81 100644 --- a/docs/standard-library/out-of-range-class.md +++ b/docs/standard-library/out-of-range-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: out_of_range class" title: "out_of_range class" -ms.date: "09/09/2021" +description: "Learn more about: out_of_range class" +ms.date: 09/09/2021 f1_keywords: ["stdexcept/std::out_of_range"] helpviewer_keywords: ["out_of_range class"] -ms.assetid: d0e14dc0-065e-4666-9ac9-51e52223c503 --- # `out_of_range` class diff --git a/docs/standard-library/overflow-error-class.md b/docs/standard-library/overflow-error-class.md index 30373fb33d3..b4291d01a31 100644 --- a/docs/standard-library/overflow-error-class.md +++ b/docs/standard-library/overflow-error-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: overflow_error class" title: "overflow_error class" -ms.date: "09/09/2021" +description: "Learn more about: overflow_error class" +ms.date: 09/09/2021 f1_keywords: ["stdexcept/std::overflow_error"] helpviewer_keywords: ["overflow_error class"] -ms.assetid: bae7128d-e36b-4a45-84f1-2f89da441d20 --- # `overflow_error` class diff --git a/docs/standard-library/range-error-class.md b/docs/standard-library/range-error-class.md index a9fd6135bc2..35559c39d45 100644 --- a/docs/standard-library/range-error-class.md +++ b/docs/standard-library/range-error-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: range_error class" title: "range_error class" -ms.date: "09/09/2021" +description: "Learn more about: range_error class" +ms.date: 09/09/2021 f1_keywords: ["stdexcept/std::range_error"] helpviewer_keywords: ["range_error class"] -ms.assetid: 8afb3e88-fc49-4213-b096-ed63d7aea37c --- # `range_error` class diff --git a/docs/standard-library/runtime-error-class.md b/docs/standard-library/runtime-error-class.md index 575a981066a..9ae07afd607 100644 --- a/docs/standard-library/runtime-error-class.md +++ b/docs/standard-library/runtime-error-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: runtime_error class" title: "runtime_error class" -ms.date: "09/09/2021" +description: "Learn more about: runtime_error class" +ms.date: 09/09/2021 f1_keywords: ["stdexcept/std::runtime_error"] helpviewer_keywords: ["runtime_error class"] -ms.assetid: 4d0227bf-847b-45a2-a320-2351ebf98368 --- # `runtime_error` class diff --git a/docs/standard-library/underflow-error-class.md b/docs/standard-library/underflow-error-class.md index f0db72e1561..3b1d405babc 100644 --- a/docs/standard-library/underflow-error-class.md +++ b/docs/standard-library/underflow-error-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: underflow_error class" title: "underflow_error class" -ms.date: "09/09/2021" +description: "Learn more about: underflow_error class" +ms.date: 09/09/2021 f1_keywords: ["stdexcept/std::underflow_error"] helpviewer_keywords: ["underflow_error class"] -ms.assetid: d632f1f9-9c6c-4954-b96b-03041bfab22d --- # `underflow_error` class From 3abb2c479c67800f5a843644643abd0f1aa93868 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 17 Sep 2025 22:50:39 +0800 Subject: [PATCH 1863/2255] Add "Remarks" headings for warning references in range [CVT4001, CVT4001] --- docs/error-messages/tool-errors/cvtres-warning-cvt4001.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/error-messages/tool-errors/cvtres-warning-cvt4001.md b/docs/error-messages/tool-errors/cvtres-warning-cvt4001.md index c5a1257e706..c4fb0fbe573 100644 --- a/docs/error-messages/tool-errors/cvtres-warning-cvt4001.md +++ b/docs/error-messages/tool-errors/cvtres-warning-cvt4001.md @@ -10,4 +10,6 @@ ms.assetid: 39c13bc2-92fa-4d79-8171-039b27329dcc > machine type not specified; assumed *type* +## Remarks + CVTRES did not find a machine specification. It assumed the given machine type. If the default is incorrect, rerun CVTRES using the /MACHINE option. From ae6b52f11b4404cc1d3625612311a9b84b637ed2 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 17 Sep 2025 22:51:17 +0800 Subject: [PATCH 1864/2255] Update metadata for warning references in range [CVT4001, CVT4001] --- docs/error-messages/tool-errors/cvtres-warning-cvt4001.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/error-messages/tool-errors/cvtres-warning-cvt4001.md b/docs/error-messages/tool-errors/cvtres-warning-cvt4001.md index c4fb0fbe573..31ce4a14981 100644 --- a/docs/error-messages/tool-errors/cvtres-warning-cvt4001.md +++ b/docs/error-messages/tool-errors/cvtres-warning-cvt4001.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: CVTRES Warning CVT4001" title: "CVTRES Warning CVT4001" -ms.date: "08/27/2018" +description: "Learn more about: CVTRES Warning CVT4001" +ms.date: 08/27/2018 f1_keywords: ["CVT4001"] helpviewer_keywords: ["CVT4001"] -ms.assetid: 39c13bc2-92fa-4d79-8171-039b27329dcc --- # CVTRES Warning CVT4001 From 6082833aa07ebc40cbacdd12679021f9958e7b42 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Thu, 18 Sep 2025 22:06:52 +0800 Subject: [PATCH 1865/2255] Add blockquotes for error messages in range [M6101, M6205] --- docs/error-messages/tool-errors/math-error-m6101.md | 2 +- docs/error-messages/tool-errors/math-error-m6102.md | 2 +- docs/error-messages/tool-errors/math-error-m6107.md | 2 +- docs/error-messages/tool-errors/math-error-m6108.md | 2 +- docs/error-messages/tool-errors/math-error-m6110.md | 2 +- docs/error-messages/tool-errors/math-error-m6111.md | 2 +- docs/error-messages/tool-errors/math-error-m6201.md | 2 +- docs/error-messages/tool-errors/math-error-m6202.md | 2 +- docs/error-messages/tool-errors/math-error-m6203.md | 2 +- docs/error-messages/tool-errors/math-error-m6205.md | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/error-messages/tool-errors/math-error-m6101.md b/docs/error-messages/tool-errors/math-error-m6101.md index 2a134c383a9..16f02b39134 100644 --- a/docs/error-messages/tool-errors/math-error-m6101.md +++ b/docs/error-messages/tool-errors/math-error-m6101.md @@ -8,7 +8,7 @@ ms.assetid: 8c8d5097-d725-4a2c-92e9-fcf28c871d74 --- # Math Error M6101 -invalid +> invalid Invalid operation. diff --git a/docs/error-messages/tool-errors/math-error-m6102.md b/docs/error-messages/tool-errors/math-error-m6102.md index 0500853cac0..1f13bafccca 100644 --- a/docs/error-messages/tool-errors/math-error-m6102.md +++ b/docs/error-messages/tool-errors/math-error-m6102.md @@ -8,7 +8,7 @@ ms.assetid: dbd2241f-6595-431e-9597-d9dbdb3a0ca2 --- # Math Error M6102 -denormal +> denormal An operation generated a very small floating-point number, which be invalid due loss of significance. Denormal floating-point exceptions are usually masked, causing them to be trapped and operated upon. diff --git a/docs/error-messages/tool-errors/math-error-m6107.md b/docs/error-messages/tool-errors/math-error-m6107.md index bf01ca4d03e..d1ab7b75aff 100644 --- a/docs/error-messages/tool-errors/math-error-m6107.md +++ b/docs/error-messages/tool-errors/math-error-m6107.md @@ -8,7 +8,7 @@ ms.assetid: a827a2a4-40b7-4e28-8e8d-530c6ffcf0c9 --- # Math Error M6107 -unemulated +> unemulated An attempt was made to execute a coprocessor instruction that is invalid or is not supported by the emulator. diff --git a/docs/error-messages/tool-errors/math-error-m6108.md b/docs/error-messages/tool-errors/math-error-m6108.md index 7155419b33d..052216baf72 100644 --- a/docs/error-messages/tool-errors/math-error-m6108.md +++ b/docs/error-messages/tool-errors/math-error-m6108.md @@ -8,7 +8,7 @@ ms.assetid: 054893b4-49bc-45d9-882f-7cb50ba387c0 --- # Math Error M6108 -square root +> square root The operand in a square-root operation was negative. diff --git a/docs/error-messages/tool-errors/math-error-m6110.md b/docs/error-messages/tool-errors/math-error-m6110.md index cbc7337ca7b..06257b2b615 100644 --- a/docs/error-messages/tool-errors/math-error-m6110.md +++ b/docs/error-messages/tool-errors/math-error-m6110.md @@ -8,7 +8,7 @@ ms.assetid: aac9ae37-6a6d-46e9-85d4-dfe03f1c3e11 --- # Math Error M6110 -stack overflow +> stack overflow A floating-point expression caused a floating-point stack overflow. diff --git a/docs/error-messages/tool-errors/math-error-m6111.md b/docs/error-messages/tool-errors/math-error-m6111.md index 1c1196f7cdb..f64dd11d51b 100644 --- a/docs/error-messages/tool-errors/math-error-m6111.md +++ b/docs/error-messages/tool-errors/math-error-m6111.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["M6111"] --- # Math Error M6111 -stack underflow +> stack underflow A floating-point operation resulted in a stack underflow on the 8087/287/387 coprocessor or the emulator. diff --git a/docs/error-messages/tool-errors/math-error-m6201.md b/docs/error-messages/tool-errors/math-error-m6201.md index 5bc92535e0e..59c559cf487 100644 --- a/docs/error-messages/tool-errors/math-error-m6201.md +++ b/docs/error-messages/tool-errors/math-error-m6201.md @@ -8,7 +8,7 @@ ms.assetid: 4041c331-d9aa-4dd4-b565-7dbe0218538c --- # Math Error M6201 -'function' : _DOMAIN error +> 'function' : _DOMAIN error An argument to the given function was outside the domain of legal input values for that function. diff --git a/docs/error-messages/tool-errors/math-error-m6202.md b/docs/error-messages/tool-errors/math-error-m6202.md index 1f9514fda1c..74dbbd4373b 100644 --- a/docs/error-messages/tool-errors/math-error-m6202.md +++ b/docs/error-messages/tool-errors/math-error-m6202.md @@ -8,7 +8,7 @@ ms.assetid: 4d17045f-c6dc-4705-9512-e9af12c35fb4 --- # Math Error M6202 -'function' : _SING error +> 'function' : _SING error An argument to the given function was a singularity value for this function. The function is not defined for that argument. diff --git a/docs/error-messages/tool-errors/math-error-m6203.md b/docs/error-messages/tool-errors/math-error-m6203.md index 7677ddc0174..e6d25d1e37f 100644 --- a/docs/error-messages/tool-errors/math-error-m6203.md +++ b/docs/error-messages/tool-errors/math-error-m6203.md @@ -8,7 +8,7 @@ ms.assetid: bd7fdd1c-83e4-4d6a-901e-10a0308bf5be --- # Math Error M6203 -'function' : _OVERFLOW error +> 'function' : _OVERFLOW error The given function result was too large to be represented. diff --git a/docs/error-messages/tool-errors/math-error-m6205.md b/docs/error-messages/tool-errors/math-error-m6205.md index a65999a49ef..ce76b474e47 100644 --- a/docs/error-messages/tool-errors/math-error-m6205.md +++ b/docs/error-messages/tool-errors/math-error-m6205.md @@ -8,7 +8,7 @@ ms.assetid: fd28e7c9-a463-4a9c-a863-cc9e75315550 --- # Math Error M6205 -'function' : _TLOSS error +> 'function' : _TLOSS error A total loss of significance (precision) occurred. From fefad8af9e2dcf7f2c83a114c851f944822f68b2 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Thu, 18 Sep 2025 22:09:24 +0800 Subject: [PATCH 1866/2255] Add "Remarks" and "Example" headings for error references in range [M6101, M6205] --- docs/error-messages/tool-errors/math-error-m6101.md | 2 ++ docs/error-messages/tool-errors/math-error-m6102.md | 2 ++ docs/error-messages/tool-errors/math-error-m6107.md | 2 ++ docs/error-messages/tool-errors/math-error-m6108.md | 2 ++ docs/error-messages/tool-errors/math-error-m6110.md | 2 ++ docs/error-messages/tool-errors/math-error-m6111.md | 8 +++++++- docs/error-messages/tool-errors/math-error-m6201.md | 2 ++ docs/error-messages/tool-errors/math-error-m6202.md | 2 ++ docs/error-messages/tool-errors/math-error-m6203.md | 2 ++ docs/error-messages/tool-errors/math-error-m6205.md | 2 ++ 10 files changed, 25 insertions(+), 1 deletion(-) diff --git a/docs/error-messages/tool-errors/math-error-m6101.md b/docs/error-messages/tool-errors/math-error-m6101.md index 16f02b39134..768404f9982 100644 --- a/docs/error-messages/tool-errors/math-error-m6101.md +++ b/docs/error-messages/tool-errors/math-error-m6101.md @@ -10,6 +10,8 @@ ms.assetid: 8c8d5097-d725-4a2c-92e9-fcf28c871d74 > invalid +## Remarks + Invalid operation. This error can be caused when an operand is NaN (not a number) or infinity. diff --git a/docs/error-messages/tool-errors/math-error-m6102.md b/docs/error-messages/tool-errors/math-error-m6102.md index 1f13bafccca..03ca2198b64 100644 --- a/docs/error-messages/tool-errors/math-error-m6102.md +++ b/docs/error-messages/tool-errors/math-error-m6102.md @@ -10,6 +10,8 @@ ms.assetid: dbd2241f-6595-431e-9597-d9dbdb3a0ca2 > denormal +## Remarks + An operation generated a very small floating-point number, which be invalid due loss of significance. Denormal floating-point exceptions are usually masked, causing them to be trapped and operated upon. Program terminates with exit code 130. diff --git a/docs/error-messages/tool-errors/math-error-m6107.md b/docs/error-messages/tool-errors/math-error-m6107.md index d1ab7b75aff..bcd5ede617a 100644 --- a/docs/error-messages/tool-errors/math-error-m6107.md +++ b/docs/error-messages/tool-errors/math-error-m6107.md @@ -10,6 +10,8 @@ ms.assetid: a827a2a4-40b7-4e28-8e8d-530c6ffcf0c9 > unemulated +## Remarks + An attempt was made to execute a coprocessor instruction that is invalid or is not supported by the emulator. Program terminates with exit code 135. diff --git a/docs/error-messages/tool-errors/math-error-m6108.md b/docs/error-messages/tool-errors/math-error-m6108.md index 052216baf72..dfadc04c651 100644 --- a/docs/error-messages/tool-errors/math-error-m6108.md +++ b/docs/error-messages/tool-errors/math-error-m6108.md @@ -10,6 +10,8 @@ ms.assetid: 054893b4-49bc-45d9-882f-7cb50ba387c0 > square root +## Remarks + The operand in a square-root operation was negative. Program terminates with exit code 136. diff --git a/docs/error-messages/tool-errors/math-error-m6110.md b/docs/error-messages/tool-errors/math-error-m6110.md index 06257b2b615..0d4d4b171ec 100644 --- a/docs/error-messages/tool-errors/math-error-m6110.md +++ b/docs/error-messages/tool-errors/math-error-m6110.md @@ -10,6 +10,8 @@ ms.assetid: aac9ae37-6a6d-46e9-85d4-dfe03f1c3e11 > stack overflow +## Remarks + A floating-point expression caused a floating-point stack overflow. Stack-overflow floating-point exceptions are trapped up to a limit of seven levels in addition to the eight levels usually supported by the 8087/287/387 coprocessor. diff --git a/docs/error-messages/tool-errors/math-error-m6111.md b/docs/error-messages/tool-errors/math-error-m6111.md index f64dd11d51b..a63eb57ba48 100644 --- a/docs/error-messages/tool-errors/math-error-m6111.md +++ b/docs/error-messages/tool-errors/math-error-m6111.md @@ -9,9 +9,15 @@ helpviewer_keywords: ["M6111"] > stack underflow +## Remarks + A floating-point operation resulted in a stack underflow on the 8087/287/387 coprocessor or the emulator. -This error is often caused by a call to a **`long double`** function that does not return a value. For example, the following generates this error when compiled and run: +This error is often caused by a call to a **`long double`** function that does not return a value. + +## Example + +For example, the following generates this error when compiled and run: ```c long double ld() {} diff --git a/docs/error-messages/tool-errors/math-error-m6201.md b/docs/error-messages/tool-errors/math-error-m6201.md index 59c559cf487..39795d497f4 100644 --- a/docs/error-messages/tool-errors/math-error-m6201.md +++ b/docs/error-messages/tool-errors/math-error-m6201.md @@ -10,6 +10,8 @@ ms.assetid: 4041c331-d9aa-4dd4-b565-7dbe0218538c > 'function' : _DOMAIN error +## Remarks + An argument to the given function was outside the domain of legal input values for that function. ## Example diff --git a/docs/error-messages/tool-errors/math-error-m6202.md b/docs/error-messages/tool-errors/math-error-m6202.md index 74dbbd4373b..1008fdb1c2d 100644 --- a/docs/error-messages/tool-errors/math-error-m6202.md +++ b/docs/error-messages/tool-errors/math-error-m6202.md @@ -10,6 +10,8 @@ ms.assetid: 4d17045f-c6dc-4705-9512-e9af12c35fb4 > 'function' : _SING error +## Remarks + An argument to the given function was a singularity value for this function. The function is not defined for that argument. This error calls the `_matherr` function with the function name, its arguments, and the error type. You can rewrite the `_matherr` function to customize the handling of certain run-time floating-point math errors. diff --git a/docs/error-messages/tool-errors/math-error-m6203.md b/docs/error-messages/tool-errors/math-error-m6203.md index e6d25d1e37f..7adc0cb5816 100644 --- a/docs/error-messages/tool-errors/math-error-m6203.md +++ b/docs/error-messages/tool-errors/math-error-m6203.md @@ -10,6 +10,8 @@ ms.assetid: bd7fdd1c-83e4-4d6a-901e-10a0308bf5be > 'function' : _OVERFLOW error +## Remarks + The given function result was too large to be represented. This error calls the `_matherr` function with the function name, its arguments, and the error type. You can rewrite the `_matherr` function to customize the handling of certain run-time floating-point math errors. diff --git a/docs/error-messages/tool-errors/math-error-m6205.md b/docs/error-messages/tool-errors/math-error-m6205.md index ce76b474e47..376653e3467 100644 --- a/docs/error-messages/tool-errors/math-error-m6205.md +++ b/docs/error-messages/tool-errors/math-error-m6205.md @@ -10,6 +10,8 @@ ms.assetid: fd28e7c9-a463-4a9c-a863-cc9e75315550 > 'function' : _TLOSS error +## Remarks + A total loss of significance (precision) occurred. This error may be caused by giving a very large number as the operand of sin, cos, or tan because the operand must be reduced to a number between 0 and 2*pi. From c81a8cae657ad3f1a2b0115d85172302787a5a33 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Thu, 18 Sep 2025 22:13:00 +0800 Subject: [PATCH 1867/2255] Update metadata for error references in range [M6101, M6205] --- docs/error-messages/tool-errors/math-error-m6101.md | 5 ++--- docs/error-messages/tool-errors/math-error-m6102.md | 5 ++--- docs/error-messages/tool-errors/math-error-m6107.md | 5 ++--- docs/error-messages/tool-errors/math-error-m6108.md | 5 ++--- docs/error-messages/tool-errors/math-error-m6110.md | 5 ++--- docs/error-messages/tool-errors/math-error-m6201.md | 5 ++--- docs/error-messages/tool-errors/math-error-m6202.md | 5 ++--- docs/error-messages/tool-errors/math-error-m6203.md | 5 ++--- docs/error-messages/tool-errors/math-error-m6205.md | 5 ++--- 9 files changed, 18 insertions(+), 27 deletions(-) diff --git a/docs/error-messages/tool-errors/math-error-m6101.md b/docs/error-messages/tool-errors/math-error-m6101.md index 768404f9982..97393e3598c 100644 --- a/docs/error-messages/tool-errors/math-error-m6101.md +++ b/docs/error-messages/tool-errors/math-error-m6101.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Math Error M6101" title: "Math Error M6101" -ms.date: "11/04/2016" +description: "Learn more about: Math Error M6101" +ms.date: 11/04/2016 f1_keywords: ["M6101"] helpviewer_keywords: ["M6101"] -ms.assetid: 8c8d5097-d725-4a2c-92e9-fcf28c871d74 --- # Math Error M6101 diff --git a/docs/error-messages/tool-errors/math-error-m6102.md b/docs/error-messages/tool-errors/math-error-m6102.md index 03ca2198b64..fe151670999 100644 --- a/docs/error-messages/tool-errors/math-error-m6102.md +++ b/docs/error-messages/tool-errors/math-error-m6102.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Math Error M6102" title: "Math Error M6102" -ms.date: "11/04/2016" +description: "Learn more about: Math Error M6102" +ms.date: 11/04/2016 f1_keywords: ["M6102"] helpviewer_keywords: ["M6102"] -ms.assetid: dbd2241f-6595-431e-9597-d9dbdb3a0ca2 --- # Math Error M6102 diff --git a/docs/error-messages/tool-errors/math-error-m6107.md b/docs/error-messages/tool-errors/math-error-m6107.md index bcd5ede617a..96e69ec23ae 100644 --- a/docs/error-messages/tool-errors/math-error-m6107.md +++ b/docs/error-messages/tool-errors/math-error-m6107.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Math Error M6107" title: "Math Error M6107" -ms.date: "11/04/2016" +description: "Learn more about: Math Error M6107" +ms.date: 11/04/2016 f1_keywords: ["M6107"] helpviewer_keywords: ["M6107"] -ms.assetid: a827a2a4-40b7-4e28-8e8d-530c6ffcf0c9 --- # Math Error M6107 diff --git a/docs/error-messages/tool-errors/math-error-m6108.md b/docs/error-messages/tool-errors/math-error-m6108.md index dfadc04c651..c0fd950f914 100644 --- a/docs/error-messages/tool-errors/math-error-m6108.md +++ b/docs/error-messages/tool-errors/math-error-m6108.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Math Error M6108" title: "Math Error M6108" -ms.date: "11/04/2016" +description: "Learn more about: Math Error M6108" +ms.date: 11/04/2016 f1_keywords: ["M6108"] helpviewer_keywords: ["M6108"] -ms.assetid: 054893b4-49bc-45d9-882f-7cb50ba387c0 --- # Math Error M6108 diff --git a/docs/error-messages/tool-errors/math-error-m6110.md b/docs/error-messages/tool-errors/math-error-m6110.md index 0d4d4b171ec..6d6b24e2d75 100644 --- a/docs/error-messages/tool-errors/math-error-m6110.md +++ b/docs/error-messages/tool-errors/math-error-m6110.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Math Error M6110" title: "Math Error M6110" -ms.date: "11/04/2016" +description: "Learn more about: Math Error M6110" +ms.date: 11/04/2016 f1_keywords: ["M6110"] helpviewer_keywords: ["M6110"] -ms.assetid: aac9ae37-6a6d-46e9-85d4-dfe03f1c3e11 --- # Math Error M6110 diff --git a/docs/error-messages/tool-errors/math-error-m6201.md b/docs/error-messages/tool-errors/math-error-m6201.md index 39795d497f4..02fe9b07f20 100644 --- a/docs/error-messages/tool-errors/math-error-m6201.md +++ b/docs/error-messages/tool-errors/math-error-m6201.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Math Error M6201" title: "Math Error M6201" -ms.date: "11/04/2016" +description: "Learn more about: Math Error M6201" +ms.date: 11/04/2016 f1_keywords: ["M6201"] helpviewer_keywords: ["M6201"] -ms.assetid: 4041c331-d9aa-4dd4-b565-7dbe0218538c --- # Math Error M6201 diff --git a/docs/error-messages/tool-errors/math-error-m6202.md b/docs/error-messages/tool-errors/math-error-m6202.md index 1008fdb1c2d..b26b2653ddc 100644 --- a/docs/error-messages/tool-errors/math-error-m6202.md +++ b/docs/error-messages/tool-errors/math-error-m6202.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Math Error M6202" title: "Math Error M6202" -ms.date: "11/04/2016" +description: "Learn more about: Math Error M6202" +ms.date: 11/04/2016 f1_keywords: ["M6202"] helpviewer_keywords: ["M6202"] -ms.assetid: 4d17045f-c6dc-4705-9512-e9af12c35fb4 --- # Math Error M6202 diff --git a/docs/error-messages/tool-errors/math-error-m6203.md b/docs/error-messages/tool-errors/math-error-m6203.md index 7adc0cb5816..d2d66863f38 100644 --- a/docs/error-messages/tool-errors/math-error-m6203.md +++ b/docs/error-messages/tool-errors/math-error-m6203.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Math Error M6203" title: "Math Error M6203" -ms.date: "11/04/2016" +description: "Learn more about: Math Error M6203" +ms.date: 11/04/2016 f1_keywords: ["M6203"] helpviewer_keywords: ["M6203"] -ms.assetid: bd7fdd1c-83e4-4d6a-901e-10a0308bf5be --- # Math Error M6203 diff --git a/docs/error-messages/tool-errors/math-error-m6205.md b/docs/error-messages/tool-errors/math-error-m6205.md index 376653e3467..2b92bda1950 100644 --- a/docs/error-messages/tool-errors/math-error-m6205.md +++ b/docs/error-messages/tool-errors/math-error-m6205.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Math Error M6205" title: "Math Error M6205" -ms.date: "11/04/2016" +description: "Learn more about: Math Error M6205" +ms.date: 11/04/2016 f1_keywords: ["M6205"] helpviewer_keywords: ["M6205"] -ms.assetid: fd28e7c9-a463-4a9c-a863-cc9e75315550 --- # Math Error M6205 From 3b8a3e78da7148d5d68bbd71c07cd1bd93762de7 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Thu, 18 Sep 2025 16:05:26 -0700 Subject: [PATCH 1868/2255] Update docs/error-messages/compiler-errors-2/compiler-error-c3417.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/error-messages/compiler-errors-2/compiler-error-c3417.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3417.md b/docs/error-messages/compiler-errors-2/compiler-error-c3417.md index 6be953cb0e6..e7fdaddf9e7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3417.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3417.md @@ -15,7 +15,7 @@ Value types cannot contain functions such as a default instance constructor, des ## Example -The following example generates C3517: +The following example generates C3417: ```cpp // C3417.cpp From c2ad252d39aff6ee325efcb1f4c634f81e393855 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Thu, 18 Sep 2025 17:20:47 -0700 Subject: [PATCH 1869/2255] Update docs/error-messages/compiler-errors-2/compiler-error-c3851.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/error-messages/compiler-errors-2/compiler-error-c3851.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3851.md b/docs/error-messages/compiler-errors-2/compiler-error-c3851.md index b711d0114d7..a505013ce14 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3851.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3851.md @@ -15,7 +15,7 @@ In code compiled as C++, you cannot use a universal character name that represen ## Example -The following example generate C3851, and show how to fix it: +The following example generates C3851, and show how to fix it: ```cpp // C3851.cpp From 6ab213b7df23f29cb19eb5f4aa284ba7d95b105f Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Thu, 18 Sep 2025 17:21:04 -0700 Subject: [PATCH 1870/2255] Update docs/error-messages/compiler-errors-2/compiler-error-c3853.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/error-messages/compiler-errors-2/compiler-error-c3853.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3853.md b/docs/error-messages/compiler-errors-2/compiler-error-c3853.md index 935ffefaaa3..49307be38a6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3853.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3853.md @@ -15,7 +15,7 @@ Cannot assign to a reference through a function because functions are not lvalue ## Example -The following example generate C3853: +The following example generates C3853: ```cpp // C3853.cpp From 3745eb47d60819107f188f656025bba0e7b152d4 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Thu, 18 Sep 2025 17:25:02 -0700 Subject: [PATCH 1871/2255] Update docs/error-messages/compiler-errors-2/compiler-error-c3909.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/error-messages/compiler-errors-2/compiler-error-c3909.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3909.md b/docs/error-messages/compiler-errors-2/compiler-error-c3909.md index 5e4bc912e93..205c07d12ce 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3909.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3909.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C3909"] --- # Compiler Error C3909 -> aWinRT or managed event declaration must occur in a WinRT or managed type +> a WinRT or managed event declaration must occur in a WinRT or managed type ## Remarks From 6639ae8375105d87e4ace171a200d7babb574b83 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Thu, 18 Sep 2025 17:28:22 -0700 Subject: [PATCH 1872/2255] Fix header title in compiler warning documentation Corrected the section header from 'Examples' to 'Example' for consistency. --- .../compiler-warnings/compiler-warning-level-1-c4002.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4002.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4002.md index be577e0b73b..c97bb7d1227 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4002.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4002.md @@ -15,7 +15,7 @@ The number of actual parameters in the macro exceeds the number of formal parame C4002 can occur when incorrectly using [variadic macros](../../preprocessor/variadic-macros.md). -## Examples +## Example The following example generates C4002: From 0e7d9bf00195f933b8872096dfe3e39374238e7a Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Thu, 18 Sep 2025 17:31:07 -0700 Subject: [PATCH 1873/2255] Enhance C4036 warning example explanation Clarify example for C4036 warning resolution. --- .../compiler-warnings/compiler-warning-level-1-c4036.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4036.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4036.md index aa7a3ae06af..6cd5d9f50a5 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4036.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4036.md @@ -17,7 +17,7 @@ Specify a type name to resolve this warning. ## Example -The following example generates C4036. +The following example generates C4036 and shows how to fix it by providing a type name. ```c // C4036.c From c20eee1ceea9fea2601d59e87e4ae76935625940 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Thu, 18 Sep 2025 17:37:41 -0700 Subject: [PATCH 1874/2255] Update docs/error-messages/compiler-warnings/compiler-warning-level-1-c4042.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../compiler-warnings/compiler-warning-level-1-c4042.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4042.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4042.md index 2111f2a26b4..aad89002ff8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4042.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4042.md @@ -23,7 +23,7 @@ This warning can be caused by specifying a storage class other than **`register` ## Example -The following example generates C4042 +The following example generates C4042: ```cpp // C4042.cpp From 0c5741f84d5de4cf70824957bc4e580f3ac9627c Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Thu, 18 Sep 2025 17:42:37 -0700 Subject: [PATCH 1875/2255] Fix formatting in C4162 warning documentation Added a colon to the example generation statement for clarity. --- .../compiler-warnings/compiler-warning-level-1-c4162.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4162.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4162.md index e48b464d475..41936b10c1f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4162.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4162.md @@ -17,7 +17,7 @@ To resolve this warning, compile in a .c file (invoke the C compiler). If you m ## Example -The following example generates C4162 +The following example generates C4162: ```cpp // C4162.cpp From 484d71b715b773329608f46b43486f353cd45d1c Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Fri, 19 Sep 2025 23:30:20 +0800 Subject: [PATCH 1876/2255] Add blockquotes for warning messages in range [PG1039, PG1087] --- .../tool-errors/profile-guided-optimization-warning-pg1039.md | 2 +- .../tool-errors/profile-guided-optimization-warning-pg1087.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/tool-errors/profile-guided-optimization-warning-pg1039.md b/docs/error-messages/tool-errors/profile-guided-optimization-warning-pg1039.md index 1bab31de79d..96924083dd1 100644 --- a/docs/error-messages/tool-errors/profile-guided-optimization-warning-pg1039.md +++ b/docs/error-messages/tool-errors/profile-guided-optimization-warning-pg1039.md @@ -8,6 +8,6 @@ ms.assetid: a67dfd66-b610-4d78-9658-2bcf7a506b9f --- # Profile-Guided Optimization Warning PG1039 -Failed waiting for quiet time to sweep. +> Failed waiting for quiet time to sweep. The application did not allow [pgosweep](../../build/pgosweep.md) to run. If possible, run pgosweep when the application is in an idle state. diff --git a/docs/error-messages/tool-errors/profile-guided-optimization-warning-pg1087.md b/docs/error-messages/tool-errors/profile-guided-optimization-warning-pg1087.md index 873b38173a2..8ea3fc3b407 100644 --- a/docs/error-messages/tool-errors/profile-guided-optimization-warning-pg1087.md +++ b/docs/error-messages/tool-errors/profile-guided-optimization-warning-pg1087.md @@ -8,6 +8,6 @@ ms.assetid: 50785d68-17a2-4d82-bee2-8c514faf61c6 --- # Profile-Guided Optimization Warning PG1087 -The PGC file 'file' is not valid. +> The PGC file 'file' is not valid. A .pgc file is corrupt, possibly due to an abnormal end to a profiling session. Rerun the profiling scenario and terminate normally. From 88e6724e6f42f0ca4c36057f66f12955f32c16ad Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Fri, 19 Sep 2025 23:31:10 +0800 Subject: [PATCH 1877/2255] Add "Remarks" headings for warning references in range [PG1039, PG1087] --- .../tool-errors/profile-guided-optimization-warning-pg1039.md | 2 ++ .../tool-errors/profile-guided-optimization-warning-pg1087.md | 2 ++ 2 files changed, 4 insertions(+) diff --git a/docs/error-messages/tool-errors/profile-guided-optimization-warning-pg1039.md b/docs/error-messages/tool-errors/profile-guided-optimization-warning-pg1039.md index 96924083dd1..636ddc20239 100644 --- a/docs/error-messages/tool-errors/profile-guided-optimization-warning-pg1039.md +++ b/docs/error-messages/tool-errors/profile-guided-optimization-warning-pg1039.md @@ -10,4 +10,6 @@ ms.assetid: a67dfd66-b610-4d78-9658-2bcf7a506b9f > Failed waiting for quiet time to sweep. +## Remarks + The application did not allow [pgosweep](../../build/pgosweep.md) to run. If possible, run pgosweep when the application is in an idle state. diff --git a/docs/error-messages/tool-errors/profile-guided-optimization-warning-pg1087.md b/docs/error-messages/tool-errors/profile-guided-optimization-warning-pg1087.md index 8ea3fc3b407..ca40a52823c 100644 --- a/docs/error-messages/tool-errors/profile-guided-optimization-warning-pg1087.md +++ b/docs/error-messages/tool-errors/profile-guided-optimization-warning-pg1087.md @@ -10,4 +10,6 @@ ms.assetid: 50785d68-17a2-4d82-bee2-8c514faf61c6 > The PGC file 'file' is not valid. +## Remarks + A .pgc file is corrupt, possibly due to an abnormal end to a profiling session. Rerun the profiling scenario and terminate normally. From 8644d4951a3c23e63edfa6f917756a5310c5f7db Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Fri, 19 Sep 2025 23:32:07 +0800 Subject: [PATCH 1878/2255] Update metadata for warning references in range [PG1039, PG1087] --- .../profile-guided-optimization-warning-pg1039.md | 5 ++--- .../profile-guided-optimization-warning-pg1087.md | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/docs/error-messages/tool-errors/profile-guided-optimization-warning-pg1039.md b/docs/error-messages/tool-errors/profile-guided-optimization-warning-pg1039.md index 636ddc20239..1205a811698 100644 --- a/docs/error-messages/tool-errors/profile-guided-optimization-warning-pg1039.md +++ b/docs/error-messages/tool-errors/profile-guided-optimization-warning-pg1039.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Profile-Guided Optimization Warning PG1039" title: "Profile-Guided Optimization Warning PG1039" -ms.date: "11/04/2016" +description: "Learn more about: Profile-Guided Optimization Warning PG1039" +ms.date: 11/04/2016 f1_keywords: ["PG1039"] helpviewer_keywords: ["PG1039"] -ms.assetid: a67dfd66-b610-4d78-9658-2bcf7a506b9f --- # Profile-Guided Optimization Warning PG1039 diff --git a/docs/error-messages/tool-errors/profile-guided-optimization-warning-pg1087.md b/docs/error-messages/tool-errors/profile-guided-optimization-warning-pg1087.md index ca40a52823c..d68d8413ca6 100644 --- a/docs/error-messages/tool-errors/profile-guided-optimization-warning-pg1087.md +++ b/docs/error-messages/tool-errors/profile-guided-optimization-warning-pg1087.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Profile-Guided Optimization Warning PG1087" title: "Profile-Guided Optimization Warning PG1087" -ms.date: "11/04/2016" +description: "Learn more about: Profile-Guided Optimization Warning PG1087" +ms.date: 11/04/2016 f1_keywords: ["PG1087"] helpviewer_keywords: ["PG1087"] -ms.assetid: 50785d68-17a2-4d82-bee2-8c514faf61c6 --- # Profile-Guided Optimization Warning PG1087 From 814cd8f511ec0b3e3961800ce71cd46a3d4eb8a7 Mon Sep 17 00:00:00 2001 From: Alex Guteniev Date: Fri, 19 Sep 2025 20:21:42 +0300 Subject: [PATCH 1879/2255] Document vectorized STL algorithms --- docs/standard-library/toc.yml | 3 + .../vectorized-stl-algoritms.md | 86 +++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 docs/standard-library/vectorized-stl-algoritms.md diff --git a/docs/standard-library/toc.yml b/docs/standard-library/toc.yml index ce3cb76ff56..b05a170940f 100644 --- a/docs/standard-library/toc.yml +++ b/docs/standard-library/toc.yml @@ -1588,6 +1588,9 @@ items: href: iterators.md - name: Algorithms href: algorithms.md + expanded: false + - name: Vectorized STL Algorithms + href: vectorized-stl-algorithms.md - name: Allocators href: allocators.md - name: Function objects in the C++ Standard Library diff --git a/docs/standard-library/vectorized-stl-algoritms.md b/docs/standard-library/vectorized-stl-algoritms.md new file mode 100644 index 00000000000..5bb6cd68f3d --- /dev/null +++ b/docs/standard-library/vectorized-stl-algoritms.md @@ -0,0 +1,86 @@ +--- +title: "Vectorized STL Algorithms" +ms.date: "09/19/2025" +helpviewer_keywords: ["Vector Algorithms", "Vectorization", "SIMD"] +--- +# Vectorized STL Algorithms + +Under certain conditions, STL algorithms execute not element-wise, but multiple element at once on a single CPU core. This is possible due to SIMD (single instruction, multiple data). The use of such approach instead of +element-wise approach is called vectorization. The implementation that is not vectorized is called scalar. + +The conditions for vectorization are: + - The container or range is contigous. `array`, `vector`, and `basic_string` are contigous containers, `span` and `basic_string_view` provide conditions ranges. + - There are such SIMD insstructions available for the target platform that implement the particular algorithm on particular element types efficiently. Usually this is true for plain types (like built-in integers) and simple operations. + - Either of the following: + - The compiler is capable emiting vectorized machine code for an implementation written as scalar code (auto-vectorization) + - The implementation itself is written as vectorized code (manual vectorization) + +## Auto-vectorization in STL + +See [Auto-Vectorizer](../parallel/auto-parallelization-and-auto-vectorization.md#auto-vectorizer). It applies to the STL implementation code the same way as to user code. + +Algorithms like `transform`, `reduce`, `accumulate` heavily benefit from auto-vectorization. + +## Manual vectorization in STL + +For x64 and x86 targets, certain algorithms have manual vectorization implemented. This implementation is pre-compiled, and uses runtime CPU dispatch, so it is engaged on suitable CPUs only. + +The manually vectorized algorithms use template meta-programming to detect the suitable element types, so they only vectorized for simple types, like standard integer types. + +Generally, programs either benefit in performance from this manual vectorization or are unaffected by it. In case of any problem, you can disable manual vectorization by defining `_USE_STD_VECTOR_ALGORITHMS` macro set to 0. + +The following algorithms have manual vectorization controlled via `_USE_STD_VECTOR_ALGORITHMS` macro: + - `contains` + - `contains_subrange` + - `find` + - `find_last` + - `find_end` + - `find_first_of` + - `adjacent_find` + - `count` + - `mismatch` + - `search` + - `search_n` + - `swap_ranges` + - `replace` + - `remove` + - `remove_copy` + - `unique` + - `unique_copy` + - `reverse` + - `rotate` + - `is_sorted` + - `is_sorted_until` + - `minmax_element` + - `minmax` + - `lexicographical_compare` + - `lexicographical_compare_three_way` + +In addition to algorithms, the macro controls the manual vectorization of: + - `basic_string` and `basic_string_view` members: + - `find` + - `rfind` + - `find_first_of` + - `find_first_not_of` + - `find_last_of` + - `find_last_not_of` + - `bitset` constructors from string and `bitset::to_string` + +## Manually vectorized algorithms for floating point types + +Vectorization of floating point types is connected with extra difficulties: + - For floating point results, the order of operations may matter. Some reordering may yield a different result, whether more precise, or less precise. Vecotization may need operations reordering, so it may affect that. + - Floating point types may contain NaN values, which don't behave transitively while comparing. + - Floating point operations may raise exceptions. + +The STL deals with the first two difficulties safely. Only `minmax_element`, `minmax`, `is_sorted`, and `is_sorted_until` are manually vectorized. These algorithms: + - Do not compute new floating point values, only compare the existing values, so different order does not affect precision. + - As sorting algorithms, require elements transitivity, so NaNs are not allowed as elements. + +There's `_USE_STD_VECTOR_FLOATING_ALGORITHMS` to control the use of these vectorized algorithms for floating point types. Set it to 0 to disable the vectorization. The macro has no effect if `_USE_STD_VECTOR_ALGORITHMS` is set to 0. + +`_USE_STD_VECTOR_FLOATING_ALGORITHMS` defaults to 0 when `/fp:except` option is set. This is to avoid problems with exceptions. + +## See also + +[Auto-Vectorizer](../parallel/auto-parallelization-and-auto-vectorization.md#auto-vectorizer) From 4272d7e48c4e459057854ea43a6790ac528fea09 Mon Sep 17 00:00:00 2001 From: Alex Guteniev Date: Fri, 19 Sep 2025 20:31:06 +0300 Subject: [PATCH 1880/2255] validation errors fix --- docs/standard-library/toc.yml | 1 + docs/standard-library/vectorized-stl-algoritms.md | 1 + 2 files changed, 2 insertions(+) diff --git a/docs/standard-library/toc.yml b/docs/standard-library/toc.yml index b05a170940f..e85567f4724 100644 --- a/docs/standard-library/toc.yml +++ b/docs/standard-library/toc.yml @@ -1589,6 +1589,7 @@ items: - name: Algorithms href: algorithms.md expanded: false + items: - name: Vectorized STL Algorithms href: vectorized-stl-algorithms.md - name: Allocators diff --git a/docs/standard-library/vectorized-stl-algoritms.md b/docs/standard-library/vectorized-stl-algoritms.md index 5bb6cd68f3d..e8e0b6a136e 100644 --- a/docs/standard-library/vectorized-stl-algoritms.md +++ b/docs/standard-library/vectorized-stl-algoritms.md @@ -1,4 +1,5 @@ --- +description: "Vectorized STL Algorithms" title: "Vectorized STL Algorithms" ms.date: "09/19/2025" helpviewer_keywords: ["Vector Algorithms", "Vectorization", "SIMD"] From cc385c5f0dcf78ffeafd16af30cc2cb75efbb8ca Mon Sep 17 00:00:00 2001 From: Alex Guteniev Date: Fri, 19 Sep 2025 20:36:47 +0300 Subject: [PATCH 1881/2255] Un-nest to make that work --- docs/standard-library/toc.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/standard-library/toc.yml b/docs/standard-library/toc.yml index e85567f4724..a9a033ccd84 100644 --- a/docs/standard-library/toc.yml +++ b/docs/standard-library/toc.yml @@ -1588,10 +1588,8 @@ items: href: iterators.md - name: Algorithms href: algorithms.md - expanded: false - items: - - name: Vectorized STL Algorithms - href: vectorized-stl-algorithms.md +- name: Vectorized STL Algorithms + href: vectorized-stl-algorithms.md - name: Allocators href: allocators.md - name: Function objects in the C++ Standard Library From 86a3e29eff5f0cff3c8c2fa91c02e931a3bb3069 Mon Sep 17 00:00:00 2001 From: Alex Guteniev Date: Fri, 19 Sep 2025 20:42:50 +0300 Subject: [PATCH 1882/2255] Typo in file name --- ...vectorized-stl-algoritms.md => vectorized-stl-algorithms.md} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename docs/standard-library/{vectorized-stl-algoritms.md => vectorized-stl-algorithms.md} (96%) diff --git a/docs/standard-library/vectorized-stl-algoritms.md b/docs/standard-library/vectorized-stl-algorithms.md similarity index 96% rename from docs/standard-library/vectorized-stl-algoritms.md rename to docs/standard-library/vectorized-stl-algorithms.md index e8e0b6a136e..dbe8f30073d 100644 --- a/docs/standard-library/vectorized-stl-algoritms.md +++ b/docs/standard-library/vectorized-stl-algorithms.md @@ -28,7 +28,7 @@ For x64 and x86 targets, certain algorithms have manual vectorization implemente The manually vectorized algorithms use template meta-programming to detect the suitable element types, so they only vectorized for simple types, like standard integer types. -Generally, programs either benefit in performance from this manual vectorization or are unaffected by it. In case of any problem, you can disable manual vectorization by defining `_USE_STD_VECTOR_ALGORITHMS` macro set to 0. +Generally, programs either benefit in performance from this manual vectorization or are unaffected by it. In case of any problem, you can disable manual vectorization by defining `_USE_STD_VECTOR_ALGORITHMS` macro set to 0. It defaults to 1 on x64 and x86, which means that manually vectorized algorithms are enabled by default. The following algorithms have manual vectorization controlled via `_USE_STD_VECTOR_ALGORITHMS` macro: - `contains` From 53ae06f3ccc8576df13079077758633c2543e4d5 Mon Sep 17 00:00:00 2001 From: Alex Guteniev Date: Fri, 19 Sep 2025 20:52:14 +0300 Subject: [PATCH 1883/2255] Typoes --- docs/standard-library/vectorized-stl-algorithms.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/standard-library/vectorized-stl-algorithms.md b/docs/standard-library/vectorized-stl-algorithms.md index dbe8f30073d..f42e7065a94 100644 --- a/docs/standard-library/vectorized-stl-algorithms.md +++ b/docs/standard-library/vectorized-stl-algorithms.md @@ -7,13 +7,13 @@ helpviewer_keywords: ["Vector Algorithms", "Vectorization", "SIMD"] # Vectorized STL Algorithms Under certain conditions, STL algorithms execute not element-wise, but multiple element at once on a single CPU core. This is possible due to SIMD (single instruction, multiple data). The use of such approach instead of -element-wise approach is called vectorization. The implementation that is not vectorized is called scalar. +element-wise approach is called vectorization. An implementation that is not vectorized is called scalar. The conditions for vectorization are: - - The container or range is contigous. `array`, `vector`, and `basic_string` are contigous containers, `span` and `basic_string_view` provide conditions ranges. - - There are such SIMD insstructions available for the target platform that implement the particular algorithm on particular element types efficiently. Usually this is true for plain types (like built-in integers) and simple operations. + - The container or range is contigous. `array`, `vector`, and `basic_string` are contigous containers, `span` and `basic_string_view` provide contiguous ranges. + - There are such SIMD instructions available for the target platform that implement the particular algorithm on particular element types efficiently. Often this is true for plain types (like built-in integers) and simple operations. - Either of the following: - - The compiler is capable emiting vectorized machine code for an implementation written as scalar code (auto-vectorization) + - The compiler is capable of emitting vectorized machine code for an implementation written as scalar code (auto-vectorization) - The implementation itself is written as vectorized code (manual vectorization) ## Auto-vectorization in STL @@ -76,7 +76,7 @@ Vectorization of floating point types is connected with extra difficulties: The STL deals with the first two difficulties safely. Only `minmax_element`, `minmax`, `is_sorted`, and `is_sorted_until` are manually vectorized. These algorithms: - Do not compute new floating point values, only compare the existing values, so different order does not affect precision. - - As sorting algorithms, require elements transitivity, so NaNs are not allowed as elements. + - As sorting algorithms, require transitivity of comparisons, so NaNs are not allowed as elements. There's `_USE_STD_VECTOR_FLOATING_ALGORITHMS` to control the use of these vectorized algorithms for floating point types. Set it to 0 to disable the vectorization. The macro has no effect if `_USE_STD_VECTOR_ALGORITHMS` is set to 0. From 7c4f6c6db78677fcd5936fe19fecca229531751c Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 19 Sep 2025 15:10:15 -0700 Subject: [PATCH 1884/2255] Update docs/error-messages/tool-errors/math-error-m6102.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/error-messages/tool-errors/math-error-m6102.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/tool-errors/math-error-m6102.md b/docs/error-messages/tool-errors/math-error-m6102.md index fe151670999..d9503b18f96 100644 --- a/docs/error-messages/tool-errors/math-error-m6102.md +++ b/docs/error-messages/tool-errors/math-error-m6102.md @@ -11,6 +11,6 @@ helpviewer_keywords: ["M6102"] ## Remarks -An operation generated a very small floating-point number, which be invalid due loss of significance. Denormal floating-point exceptions are usually masked, causing them to be trapped and operated upon. +An operation generated a very small floating-point number, which may be invalid due to loss of significance. Denormal floating-point exceptions are usually masked, causing them to be trapped and operated upon. Program terminates with exit code 130. From de8f2e447b34cfa2bf0256f628e1fc257bc56198 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 19 Sep 2025 16:25:04 -0700 Subject: [PATCH 1885/2255] Fix formatting in linker tools error messages --- .../tool-errors/linker-tools-errors-and-warnings.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/tool-errors/linker-tools-errors-and-warnings.md b/docs/error-messages/tool-errors/linker-tools-errors-and-warnings.md index cec2c86b223..102d426b6e8 100644 --- a/docs/error-messages/tool-errors/linker-tools-errors-and-warnings.md +++ b/docs/error-messages/tool-errors/linker-tools-errors-and-warnings.md @@ -68,7 +68,7 @@ The linker tools LINK, LIB, DUMPBIN, and EDITBIN share a common executable that | [Linker Tools Error LNK1313](linker-tools-error-lnk1313.md) | ijw/native module detected; cannot link with pure modules | | [Linker Tools Error LNK1314](linker-tools-error-lnk1314.md) | corrupt or invalid COFF symbol table (undefined static or label symbol) | | [Linker Tools Error LNK1318](linker-tools-error-lnk1318.md) | Unexpected PDB error; *cause* '*details*' | -| [Linker Tools Error LNK1332](linker-tools-error-lnk1332.md) | detected\ Windows Runtime types imported in one module and defined in another module | +| [Linker Tools Error LNK1332](linker-tools-error-lnk1332.md) | detected \ Windows Runtime types imported in one module and defined in another module | | [Linker Tools Error LNK1352](linker-tools-error-lnk1352.md) | '*section_name_1*' and '*section_name_2*' cannot be merged into different sections | | [Linker Tools Error LNK1561](linker-tools-error-lnk1561.md) | entry point must be defined | | [Linker Tools Error LNK2001](linker-tools-error-lnk2001.md) | unresolved external symbol "*symbol*" | @@ -88,7 +88,7 @@ The linker tools LINK, LIB, DUMPBIN, and EDITBIN share a common executable that | [Linker Tools Error LNK2031](linker-tools-error-lnk2031.md) | unable to generate p/invoke for "*function_declaration*" *decorated_name*; calling convention missing in metadata | | [Linker Tools Error LNK2033](linker-tools-error-lnk2033.md) | unresolved typeref token (token) for 'type' | | [Linker Tools Error LNK2038](linker-tools-error-lnk2038.md) | mismatch detected for '*name*': value '*value_1*' doesn't match value '*value_2*' in *filename.obj* | -| [Linker Tools Error LNK2039](linker-tools-error-lnk2039.md) | importing ref class '\' that is defined in another.obj; it should be either imported or defined, but not both | +| [Linker Tools Error LNK2039](linker-tools-error-lnk2039.md) | importing ref class \ that is defined in another.obj; it should be either imported or defined, but not both | ## Linker tools warnings From 09237930c5c9a743f4dcf8b1921ffa08fde55b87 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 20 Sep 2025 18:42:09 +0800 Subject: [PATCH 1886/2255] Fix mismatched error/warning code in example leading sentences --- docs/error-messages/compiler-errors-1/compiler-error-c2201.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2250.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2380.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2391.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2449.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2652.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3239.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3469.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4544.md | 2 +- .../compiler-warnings/compiler-warning-level-3-c4580.md | 2 +- docs/error-messages/tool-errors/command-line-warning-d9043.md | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2201.md b/docs/error-messages/compiler-errors-1/compiler-error-c2201.md index 01983a4cf4a..4be33f800de 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2201.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2201.md @@ -15,7 +15,7 @@ The exported identifier is **`static`**. ## Example -The following example generates C2286, and shows how to fix it: +The following example generates C2201, and shows how to fix it: ```cpp // C2201.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2250.md b/docs/error-messages/compiler-errors-1/compiler-error-c2250.md index 90762d9a529..5e30d649e82 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2250.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2250.md @@ -15,7 +15,7 @@ The derived class inherits more than one override of a virtual function of a vir ## Example -The following example generates C2286: +The following example generates C2250: ```cpp // C2250.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2380.md b/docs/error-messages/compiler-errors-1/compiler-error-c2380.md index 9b317bd13db..a0745e12c88 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2380.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2380.md @@ -15,7 +15,7 @@ A constructor returns a value or redefines the class name. ## Example -The following example generates C2326: +The following example generates C2380: ```cpp // C2380.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2391.md b/docs/error-messages/compiler-errors-1/compiler-error-c2391.md index dcf10dedd8e..283aeb7e762 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2391.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2391.md @@ -15,7 +15,7 @@ The **`friend`** declaration includes a complete class declaration. A **`friend` ## Example -The following example generates C2326: +The following example generates C2391: ```cpp // C2391.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2449.md b/docs/error-messages/compiler-errors-1/compiler-error-c2449.md index aee2034191e..b99392c66d8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2449.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2449.md @@ -17,7 +17,7 @@ This error can be caused by a semicolon between a function header and the openin ## Example -The following example generates C2499: +The following example generates C2449: ```c // C2449.c diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2652.md b/docs/error-messages/compiler-errors-2/compiler-error-c2652.md index 062e00a09ed..5e7e2f0ee85 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2652.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2652.md @@ -15,7 +15,7 @@ The first parameter in the copy constructor has the same type as the class, stru ## Example -The following example generates C2651: +The following example generates C2652: ```cpp // C2652.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3239.md b/docs/error-messages/compiler-errors-2/compiler-error-c3239.md index 58302dfdb41..c214f06fe32 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3239.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3239.md @@ -15,7 +15,7 @@ The compiler encountered an invalid type. ## Example -The following example generates C3229: +The following example generates C3239: ```cpp // C3239.cpp diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3469.md b/docs/error-messages/compiler-errors-2/compiler-error-c3469.md index 3977e7f2c58..e835ecfbecf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3469.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3469.md @@ -28,7 +28,7 @@ public ref class GR {}; public ref class GR2 {}; ``` -The following example generates C3466. +The following example generates C3469. ```cpp // C3469_b.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4544.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4544.md index 0ba1ee5249a..d8c3396c024 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4544.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4544.md @@ -15,7 +15,7 @@ A default template argument was specified in an incorrect location and was ignor ## Example -This example generates C4545, and the next example shows how to fix it: +This example generates C4544, and the next example shows how to fix it: ```cpp // C4544.cpp diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4580.md b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4580.md index 479016f20c6..f8d07e1f61a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4580.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-3-c4580.md @@ -15,7 +15,7 @@ helpviewer_keywords: ["C4580"] ## Example -The following example generates C3454 and shows how to fix it. +The following example generates C4580 and shows how to fix it. ```cpp // C4580.cpp diff --git a/docs/error-messages/tool-errors/command-line-warning-d9043.md b/docs/error-messages/tool-errors/command-line-warning-d9043.md index 73931bcab16..099489e25ac 100644 --- a/docs/error-messages/tool-errors/command-line-warning-d9043.md +++ b/docs/error-messages/tool-errors/command-line-warning-d9043.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["D9043"] ## Example -The following example generates C9043. +The following example generates D9043. ```cpp // D9043.cpp From a36c5a8ef181ee51c34b7124930b329d5df075f9 Mon Sep 17 00:00:00 2001 From: Alex Guteniev Date: Sat, 20 Sep 2025 16:14:12 +0300 Subject: [PATCH 1887/2255] Spelling --- docs/standard-library/vectorized-stl-algorithms.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/standard-library/vectorized-stl-algorithms.md b/docs/standard-library/vectorized-stl-algorithms.md index f42e7065a94..01cf8e48e2c 100644 --- a/docs/standard-library/vectorized-stl-algorithms.md +++ b/docs/standard-library/vectorized-stl-algorithms.md @@ -10,7 +10,7 @@ Under certain conditions, STL algorithms execute not element-wise, but multiple element-wise approach is called vectorization. An implementation that is not vectorized is called scalar. The conditions for vectorization are: - - The container or range is contigous. `array`, `vector`, and `basic_string` are contigous containers, `span` and `basic_string_view` provide contiguous ranges. + - The container or range is contiguous. `array`, `vector`, and `basic_string` are contiguous containers, `span` and `basic_string_view` provide contiguous ranges. - There are such SIMD instructions available for the target platform that implement the particular algorithm on particular element types efficiently. Often this is true for plain types (like built-in integers) and simple operations. - Either of the following: - The compiler is capable of emitting vectorized machine code for an implementation written as scalar code (auto-vectorization) @@ -70,7 +70,7 @@ In addition to algorithms, the macro controls the manual vectorization of: ## Manually vectorized algorithms for floating point types Vectorization of floating point types is connected with extra difficulties: - - For floating point results, the order of operations may matter. Some reordering may yield a different result, whether more precise, or less precise. Vecotization may need operations reordering, so it may affect that. + - For floating point results, the order of operations may matter. Some reordering may yield a different result, whether more precise, or less precise. Vectotization may need operations reordering, so it may affect that. - Floating point types may contain NaN values, which don't behave transitively while comparing. - Floating point operations may raise exceptions. From 6c10dc3d959d1c4fba7a4334cc3be332d0fe2001 Mon Sep 17 00:00:00 2001 From: Alex Guteniev Date: Sat, 20 Sep 2025 16:20:38 +0300 Subject: [PATCH 1888/2255] Complete the lists --- docs/standard-library/vectorized-stl-algorithms.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/standard-library/vectorized-stl-algorithms.md b/docs/standard-library/vectorized-stl-algorithms.md index 01cf8e48e2c..b2266592808 100644 --- a/docs/standard-library/vectorized-stl-algorithms.md +++ b/docs/standard-library/vectorized-stl-algorithms.md @@ -49,10 +49,15 @@ The following algorithms have manual vectorization controlled via `_USE_STD_VECT - `unique` - `unique_copy` - `reverse` + - `reverse_copy` - `rotate` - `is_sorted` - `is_sorted_until` + - `max_element` + - `min_element` - `minmax_element` + - `max` + - `min` - `minmax` - `lexicographical_compare` - `lexicographical_compare_three_way` @@ -74,7 +79,7 @@ Vectorization of floating point types is connected with extra difficulties: - Floating point types may contain NaN values, which don't behave transitively while comparing. - Floating point operations may raise exceptions. -The STL deals with the first two difficulties safely. Only `minmax_element`, `minmax`, `is_sorted`, and `is_sorted_until` are manually vectorized. These algorithms: +The STL deals with the first two difficulties safely. Only `max_element`, `min_element`, `minmax_element`, `max`, `min`, `minmax`, `is_sorted`, and `is_sorted_until` are manually vectorized. These algorithms: - Do not compute new floating point values, only compare the existing values, so different order does not affect precision. - As sorting algorithms, require transitivity of comparisons, so NaNs are not allowed as elements. From b1600d8e3cf80cfa66563faa548ba8b14bf8fbcf Mon Sep 17 00:00:00 2001 From: Alex Guteniev Date: Sat, 20 Sep 2025 17:27:07 +0300 Subject: [PATCH 1889/2255] Update docs/standard-library/vectorized-stl-algorithms.md Co-authored-by: Rageking8 --- docs/standard-library/vectorized-stl-algorithms.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/standard-library/vectorized-stl-algorithms.md b/docs/standard-library/vectorized-stl-algorithms.md index b2266592808..eb94e128209 100644 --- a/docs/standard-library/vectorized-stl-algorithms.md +++ b/docs/standard-library/vectorized-stl-algorithms.md @@ -1,8 +1,9 @@ --- -description: "Vectorized STL Algorithms" title: "Vectorized STL Algorithms" -ms.date: "09/19/2025" -helpviewer_keywords: ["Vector Algorithms", "Vectorization", "SIMD"] +description: "Learn more about: Vectorized STL Algorithms" +ms.date: 09/19/2025 +f1_keywords: ["_USE_STD_VECTOR_ALGORITHMS", "_USE_STD_VECTOR_FLOATING_ALGORITHMS"] +helpviewer_keywords: ["_USE_STD_VECTOR_ALGORITHMS", "_USE_STD_VECTOR_FLOATING_ALGORITHMS", "Vector Algorithms", "Vectorization", "SIMD"] --- # Vectorized STL Algorithms From becc300baab1cdf3dae36f50ba33c1380ac7f4f4 Mon Sep 17 00:00:00 2001 From: Alex Guteniev Date: Sat, 20 Sep 2025 17:31:10 +0300 Subject: [PATCH 1890/2255] Review comments Co-authored-by: Rageking8 --- docs/standard-library/vectorized-stl-algorithms.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/docs/standard-library/vectorized-stl-algorithms.md b/docs/standard-library/vectorized-stl-algorithms.md index eb94e128209..05ecd40526a 100644 --- a/docs/standard-library/vectorized-stl-algorithms.md +++ b/docs/standard-library/vectorized-stl-algorithms.md @@ -7,8 +7,7 @@ helpviewer_keywords: ["_USE_STD_VECTOR_ALGORITHMS", "_USE_STD_VECTOR_FLOATING_AL --- # Vectorized STL Algorithms -Under certain conditions, STL algorithms execute not element-wise, but multiple element at once on a single CPU core. This is possible due to SIMD (single instruction, multiple data). The use of such approach instead of -element-wise approach is called vectorization. An implementation that is not vectorized is called scalar. +Under certain conditions, STL algorithms execute not element-wise, but multiple element at once on a single CPU core. This is possible due to SIMD (single instruction, multiple data). The use of such approach instead of element-wise approach is called vectorization. An implementation that is not vectorized is called scalar. The conditions for vectorization are: - The container or range is contiguous. `array`, `vector`, and `basic_string` are contiguous containers, `span` and `basic_string_view` provide contiguous ranges. @@ -52,7 +51,7 @@ The following algorithms have manual vectorization controlled via `_USE_STD_VECT - `reverse` - `reverse_copy` - `rotate` - - `is_sorted` + - `is_sorted` - `is_sorted_until` - `max_element` - `min_element` @@ -76,7 +75,7 @@ In addition to algorithms, the macro controls the manual vectorization of: ## Manually vectorized algorithms for floating point types Vectorization of floating point types is connected with extra difficulties: - - For floating point results, the order of operations may matter. Some reordering may yield a different result, whether more precise, or less precise. Vectotization may need operations reordering, so it may affect that. + - For floating point results, the order of operations may matter. Some reordering may yield a different result, whether more precise, or less precise. Vectorization may need operations reordering, so it may affect that. - Floating point types may contain NaN values, which don't behave transitively while comparing. - Floating point operations may raise exceptions. @@ -86,7 +85,7 @@ The STL deals with the first two difficulties safely. Only `max_element`, `min_e There's `_USE_STD_VECTOR_FLOATING_ALGORITHMS` to control the use of these vectorized algorithms for floating point types. Set it to 0 to disable the vectorization. The macro has no effect if `_USE_STD_VECTOR_ALGORITHMS` is set to 0. -`_USE_STD_VECTOR_FLOATING_ALGORITHMS` defaults to 0 when `/fp:except` option is set. This is to avoid problems with exceptions. +`_USE_STD_VECTOR_FLOATING_ALGORITHMS` defaults to 0 when [`/fp:except`](../build/reference/fp-specify-floating-point-behavior.md#except) option is set. This is to avoid problems with exceptions. ## See also From 6436e1e6ef3c5ab64a15557e05221240ea7374f7 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 20 Sep 2025 22:32:42 +0800 Subject: [PATCH 1891/2255] Add blockquotes for error messages in range [LNK1000, LNK1220] --- docs/error-messages/tool-errors/linker-tools-error-lnk1103.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1106.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1113.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1127.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1136.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1140.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1141.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1143.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1152.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1158.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1164.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1166.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1168.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1169.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1179.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1181.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1188.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1189.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1196.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1200.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1201.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1215.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1218.md | 2 +- 23 files changed, 23 insertions(+), 23 deletions(-) diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1103.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1103.md index 69a19334cb3..b8df816904d 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1103.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1103.md @@ -8,7 +8,7 @@ ms.assetid: c8e9bc54-6a71-471c-899e-6f98122ee3c4 --- # Linker Tools Error LNK1103 -debugging information corrupt; recompile module +> debugging information corrupt; recompile module This error can be caused because the compilation was terminated before a valid object file was created. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1106.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1106.md index f1227a53aa8..442b06e4ddb 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1106.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1106.md @@ -8,7 +8,7 @@ ms.assetid: 528f7e65-04be-4966-b8af-9276837c7cda --- # Linker Tools Error LNK1106 -invalid file or disk full: cannot seek to location +> invalid file or disk full: cannot seek to location The tool could not read or write to `location` in a memory-mapped file. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1113.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1113.md index aaafcbbcded..67b37c07638 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1113.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1113.md @@ -8,7 +8,7 @@ ms.assetid: 269ff166-b143-48e9-bdf7-db6a0db59fe4 --- # Linker Tools Error LNK1113 -invalid machine type type +> invalid machine type type The machine type specified in the object header is not valid. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1127.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1127.md index 85695de1e0c..a5116e4e93c 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1127.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1127.md @@ -8,6 +8,6 @@ ms.assetid: 45404700-1420-4f24-97e1-efb7252ffd8f --- # Linker Tools Error LNK1127 -library is corrupt +> library is corrupt The library file is corrupt. Rebuild the library. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1136.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1136.md index 3178558c899..1e3c1d44aa9 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1136.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1136.md @@ -8,7 +8,7 @@ ms.assetid: 40c6d909-eb3f-4045-a0fc-4caa2f6db506 --- # Linker Tools Error LNK1136 -invalid or corrupt file +> invalid or corrupt file The input file either has a corrupt header or is zero size or abnormally small. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1140.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1140.md index 122f869f78d..726796e4357 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1140.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1140.md @@ -8,7 +8,7 @@ ms.assetid: 468d7651-a7cd-47b9-aead-5bb2fab56121 --- # Linker Tools Error LNK1140 -too many modules for program database; link with /PDB:NONE +> too many modules for program database; link with /PDB:NONE The project contains more than 4096 modules. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1141.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1141.md index 6f75fcc90a4..f8c40c36e25 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1141.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1141.md @@ -8,7 +8,7 @@ ms.assetid: 83b78606-6dd3-43a7-88e2-152f5359cbd8 --- # Linker Tools Error LNK1141 -failure during build of exports file +> failure during build of exports file [LINK](../../build/reference/linking.md) could not build the exports (.exp) file. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1143.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1143.md index 0e06f04ee32..8ed3e0b10e8 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1143.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1143.md @@ -8,7 +8,7 @@ ms.assetid: 5dc6b634-d142-4448-b5ea-48e8fb10c10a --- # Linker Tools Error LNK1143 -invalid or corrupt file: no symbol for COMDAT section number +> invalid or corrupt file: no symbol for COMDAT section number This error can be caused if the object file is corrupt. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1152.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1152.md index 5929d7abbf6..ff27052c79e 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1152.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1152.md @@ -8,6 +8,6 @@ ms.assetid: 2523b61a-1359-4612-9c16-7d1f705f32e6 --- # Linker Tools Error LNK1152 -cannot resolve one or more undecorated symbols +> cannot resolve one or more undecorated symbols This error is preceded by one warning [LNK4022](../../error-messages/tool-errors/linker-tools-warning-lnk4022.md) for each undecorated symbol that could not be resolved and by at least two warnings [LNK4002](../../error-messages/tool-errors/linker-tools-warning-lnk4002.md) for the duplicate symbols found for the undecorated symbol. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1158.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1158.md index f2350017bc0..ebbd8261824 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1158.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1158.md @@ -8,7 +8,7 @@ ms.assetid: 45febf16-d9e1-42db-af91-532e2717fd6a --- # Linker Tools Error LNK1158 -cannot run 'filename' +> cannot run 'filename' The given executable file called by [LINK](../../build/reference/linking.md) is not in the directory that contains LINK nor in a directory specified in the PATH environment variable. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1164.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1164.md index dbcffd442ea..a0ceb437276 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1164.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1164.md @@ -8,7 +8,7 @@ ms.assetid: da89765c-affa-4f88-b170-6d6b19a577cf --- # Linker Tools Error LNK1164 -section section alignment (number) greater than /ALIGN value +> section section alignment (number) greater than /ALIGN value The alignment size for the given section in the object file exceeds the value specified with the [/ALIGN](../../build/reference/align-section-alignment.md) option. The **/ALIGN** value must be a power of 2 and must equal or exceed the section alignment given in the object file. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1166.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1166.md index b67c5fb58e5..736756fce51 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1166.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1166.md @@ -8,7 +8,7 @@ ms.assetid: d69548a8-0efb-44e1-90b7-b27636a4b575 --- # Linker Tools Error LNK1166 -cannot adjust code at offset=offset, va=value +> cannot adjust code at offset=offset, va=value LINK was unable to pad the code as required. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1168.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1168.md index 78fddef3f0a..273d662b5d7 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1168.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1168.md @@ -8,7 +8,7 @@ ms.assetid: 97ead151-fd99-46fe-9a1d-7e84dc0b8cc8 --- # Linker Tools Error LNK1168 -cannot open filename for writing +> cannot open filename for writing The linker can't write to `filename`. The file may be in use and its file handle locked by another process, or you may not have write permission for the file, or for the directory or network share it is located in. This error is often caused by a transient condition—for example, a lock held by an anti-virus program, a file search indexing process, or a delay in releasing a lock held by the Visual Studio build system. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1169.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1169.md index f3355d082cd..f06dabc9782 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1169.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1169.md @@ -8,7 +8,7 @@ ms.assetid: e079d518-f184-48cd-8b38-969bf137af54 --- # Linker Tools Error LNK1169 -one or more multiply defined symbols found +> one or more multiply defined symbols found The build failed due to multiple definitions of one or more symbols. This error is preceded by error [LNK2005](../../error-messages/tool-errors/linker-tools-error-lnk2005.md). diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1179.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1179.md index 6b95e3bc95d..e131b61f1f5 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1179.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1179.md @@ -8,7 +8,7 @@ ms.assetid: 4b1536d7-0d3d-4f29-a9c1-6fa5cf6cb665 --- # Linker Tools Error LNK1179 -invalid or corrupt file: duplicate COMDAT 'filename' +> invalid or corrupt file: duplicate COMDAT 'filename' An object module contains two or more COMDATs with the same name. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1181.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1181.md index 0a8bdc45693..9308870843a 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1181.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1181.md @@ -8,7 +8,7 @@ ms.assetid: 984b0db6-e331-4284-b2a7-a212fe96c486 --- # Linker Tools Error LNK1181 -cannot open input file 'filename' +> cannot open input file 'filename' The linker could not find `filename` because it does not exist or the path was not found. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1188.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1188.md index f5800616ee0..6ff1bc26fc8 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1188.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1188.md @@ -8,6 +8,6 @@ ms.assetid: 4af574b0-5b41-4580-9a37-52a634add995 --- # Linker Tools Error LNK1188 -BADFIXUPSECTION:: invalid fixup target 'symbol'; possible zero length section +> BADFIXUPSECTION:: invalid fixup target 'symbol'; possible zero length section During a VxD link, the target of a relocation did not have a section. With LINK386 (an older version), an OMF GROUP record (generated by a MASM GROUP directive) may have been used to combine the zero length section with another non-zero length section. COFF format does not support the GROUP directive and zero-length sections. When LINK automatically converts this type of OMF objects to COFF, this error may occur. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1189.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1189.md index fc1bfb4f8d4..7bd85921eb5 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1189.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1189.md @@ -8,7 +8,7 @@ ms.assetid: 40c45302-6967-497e-9a6e-c2ca039fc1ed --- # Linker Tools Error LNK1189 -LIBTOOMANYMEMBERS:: library limit of number objects exceeded +> LIBTOOMANYMEMBERS:: library limit of number objects exceeded The limit of 65535 objects or members in a library has been exceeded. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1196.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1196.md index 050af899a89..425506541af 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1196.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1196.md @@ -8,6 +8,6 @@ ms.assetid: d0c6859b-85aa-45cc-9f5f-fc1f7070ab5a --- # Linker Tools Error LNK1196 -invalid or corrupt import object: unknown version +> invalid or corrupt import object: unknown version The import library is corrupted. Rebuild the library. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1200.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1200.md index c07c0b16e83..cda3198afdf 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1200.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1200.md @@ -8,7 +8,7 @@ ms.assetid: 55771145-915e-4006-ac6c-ac702041eb2f --- # Linker Tools Error LNK1200 -error reading program database 'filename' +> error reading program database 'filename' The program database (PDB) could not be read. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1201.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1201.md index 8e8f1888c04..31f25970faf 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1201.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1201.md @@ -8,7 +8,7 @@ ms.assetid: 64c3f496-a428-4b54-981e-faa82ef9c8a1 --- # Linker Tools Error LNK1201 -error writing to program database 'filename'; check for insufficient disk space, invalid path, or insufficient privilege +> error writing to program database 'filename'; check for insufficient disk space, invalid path, or insufficient privilege LINK could not write to the program database (PDB) for the output file. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1215.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1215.md index 2323a27f564..35901c0c6e7 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1215.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1215.md @@ -8,7 +8,7 @@ ms.assetid: 0774d8e6-f0c1-4efb-8723-7e1be6863d81 --- # Linker Tools Error LNK1215 -metadata operation failed (HRESULT) : error +> metadata operation failed (HRESULT) : error The linker received an error from the .NET runtime while attempting to do a metadata update through the .NET runtime. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1218.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1218.md index 624fcb6ca33..7f35a629126 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1218.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1218.md @@ -8,7 +8,7 @@ ms.assetid: bf599350-be03-4344-be43-91e29c4f1556 --- # Linker Tools Error LNK1218 -warning treated as error; no output file generated +> warning treated as error; no output file generated When you link with **/WX**, any linker warnings will be treated as errors, and no output file will be created. From 1a601e97054e13865f2b074b9b881d4bd005e1e9 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 20 Sep 2025 22:36:51 +0800 Subject: [PATCH 1892/2255] Add "Remarks" headings for error references in range [LNK1000, LNK1220] --- docs/error-messages/tool-errors/linker-tools-error-lnk1000.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1103.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1104.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1106.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1107.md | 4 ++-- docs/error-messages/tool-errors/linker-tools-error-lnk1113.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1120.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1123.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1127.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1136.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1140.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1141.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1143.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1152.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1158.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1164.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1166.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1168.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1169.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1170.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1179.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1181.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1188.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1189.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1196.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1200.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1201.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1211.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1215.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1218.md | 2 ++ 30 files changed, 60 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1000.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1000.md index 31e9114a632..12800cd9829 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1000.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1000.md @@ -10,6 +10,8 @@ ms.assetid: 86421b9a-460a-4285-8dce-9b8257d78122 > unknown error; consult documentation for technical support options +## Remarks + Note the circumstances of the error, then try to isolate the problem and create a reproducible test case. For information on how to investigate and report these errors, see [How to report a problem with the Visual C++ toolset or documentation](../../overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md). You may get this error if you mix standard header files (for example, Windows.h) and your own files. Include a precompiled header, if any, first, then the standard headers, followed by your own header files. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1103.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1103.md index b8df816904d..5e0b787a210 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1103.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1103.md @@ -10,6 +10,8 @@ ms.assetid: c8e9bc54-6a71-471c-899e-6f98122ee3c4 > debugging information corrupt; recompile module +## Remarks + This error can be caused because the compilation was terminated before a valid object file was created. Recompile the given object file. If recompiling does not correct the problem, note the circumstances of the error, try to isolate the problem, and create a reproducible test case. Then consult the technical-support help file, or the technical-support section in one of your manuals. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1104.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1104.md index dd6c44187f2..408a3424262 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1104.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1104.md @@ -10,6 +10,8 @@ ms.assetid: 9ca6f929-0efc-4055-8354-3cf5b4e636dc > cannot open file '*filename*' +## Remarks + This error is reported when the linker fails to open a file, either for reading or for writing. The two most common causes of the issue are: - your program is already running or is loaded in the debugger, and diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1106.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1106.md index 442b06e4ddb..8609fb21f4e 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1106.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1106.md @@ -10,6 +10,8 @@ ms.assetid: 528f7e65-04be-4966-b8af-9276837c7cda > invalid file or disk full: cannot seek to location +## Remarks + The tool could not read or write to `location` in a memory-mapped file. ### To fix by checking the following possible causes diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1107.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1107.md index af391885733..4933bd196f4 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1107.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1107.md @@ -9,10 +9,10 @@ helpviewer_keywords: ["LNK1107"] > invalid or corrupt file: cannot read at location *address* -The tool couldn't read the file. The file may be corrupt, or have an unexpected file type. - ## Remarks +The tool couldn't read the file. The file may be corrupt, or have an unexpected file type. + LNK1107 can occur if a file passed to the linker or related tools is corrupt. To resolve this issue, rebuild the file. LNK1107 can also occur if your build process puts an unexpected file type in the list of files passed to the tool. The linker and related tools expect to work on specific file types. For example, the linker can use object files, library files, compiled resources, and manifests to create an executable. It can't create an executable by using source files or DLLs. To resolve this issue, verify that your build process passes only the expected file types to the tool. For example, pass *`.obj`*, *`.lib`*, and *`.res`* files, not *`.cpp`*, *`.h`*, *`.dll`*, or *`.rc`* files. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1113.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1113.md index 67b37c07638..44a0f634a12 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1113.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1113.md @@ -10,6 +10,8 @@ ms.assetid: 269ff166-b143-48e9-bdf7-db6a0db59fe4 > invalid machine type type +## Remarks + The machine type specified in the object header is not valid. This error can be caused if the file is corrupt. Rebuild the object. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1120.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1120.md index 62a290603e5..614cc9034c1 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1120.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1120.md @@ -10,6 +10,8 @@ ms.assetid: 56aa7d36-921f-4daf-b44d-cca0d4fb1b51 > *number* unresolved externals +## Remarks + Error LNK1120 reports the number of [unresolved external symbol](linker-tools-error-lnk2001.md#what-is-an-unresolved-external-symbol) errors in the current link. Each unresolved external symbol first gets reported by a [LNK2001](linker-tools-error-lnk2001.md) or [LNK2019](linker-tools-error-lnk2019.md) error. The LNK1120 message comes last, and shows the unresolved symbol error count. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1123.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1123.md index 07bfa2d8cc8..1d4d923ecf8 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1123.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1123.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["LNK1123"] > failure during conversion to COFF: file invalid or corrupt +## Remarks + Input files must have the Common Object File Format (COFF) format. If an input file is not COFF, the linker automatically tries to convert 32-bit OMF objects to COFF, or runs CVTRES.EXE to convert resource files. This message indicates that the linker could not convert the file. This can also occur when using an incompatible version of CVTRES.EXE from another installation of Visual Studio, the Windows Development Kit, or .NET Framework. > [!NOTE] diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1127.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1127.md index a5116e4e93c..0c57c055ea7 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1127.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1127.md @@ -10,4 +10,6 @@ ms.assetid: 45404700-1420-4f24-97e1-efb7252ffd8f > library is corrupt +## Remarks + The library file is corrupt. Rebuild the library. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1136.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1136.md index 1e3c1d44aa9..65bfc5c2499 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1136.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1136.md @@ -10,6 +10,8 @@ ms.assetid: 40c6d909-eb3f-4045-a0fc-4caa2f6db506 > invalid or corrupt file +## Remarks + The input file either has a corrupt header or is zero size or abnormally small. LNK1136 may also be caused if the file was incorrectly specified as an additional dependency. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1140.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1140.md index 726796e4357..8410c19e59e 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1140.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1140.md @@ -10,6 +10,8 @@ ms.assetid: 468d7651-a7cd-47b9-aead-5bb2fab56121 > too many modules for program database; link with /PDB:NONE +## Remarks + The project contains more than 4096 modules. ### To fix by using the following possible solutions diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1141.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1141.md index f8c40c36e25..0db826ead4e 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1141.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1141.md @@ -10,6 +10,8 @@ ms.assetid: 83b78606-6dd3-43a7-88e2-152f5359cbd8 > failure during build of exports file +## Remarks + [LINK](../../build/reference/linking.md) could not build the exports (.exp) file. Causes of this error include system problems such as insufficient memory and syntax errors in options or module-definition statements. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1143.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1143.md index 8ed3e0b10e8..55c29d4569d 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1143.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1143.md @@ -10,6 +10,8 @@ ms.assetid: 5dc6b634-d142-4448-b5ea-48e8fb10c10a > invalid or corrupt file: no symbol for COMDAT section number +## Remarks + This error can be caused if the object file is corrupt. Rebuild the file. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1152.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1152.md index ff27052c79e..d4297c40e50 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1152.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1152.md @@ -10,4 +10,6 @@ ms.assetid: 2523b61a-1359-4612-9c16-7d1f705f32e6 > cannot resolve one or more undecorated symbols +## Remarks + This error is preceded by one warning [LNK4022](../../error-messages/tool-errors/linker-tools-warning-lnk4022.md) for each undecorated symbol that could not be resolved and by at least two warnings [LNK4002](../../error-messages/tool-errors/linker-tools-warning-lnk4002.md) for the duplicate symbols found for the undecorated symbol. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1158.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1158.md index ebbd8261824..10a01aaccbb 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1158.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1158.md @@ -10,6 +10,8 @@ ms.assetid: 45febf16-d9e1-42db-af91-532e2717fd6a > cannot run 'filename' +## Remarks + The given executable file called by [LINK](../../build/reference/linking.md) is not in the directory that contains LINK nor in a directory specified in the PATH environment variable. For example, you will get this error if you try to use the PGOPTIMIZE parameter to the [/LTCG](../../build/reference/ltcg-link-time-code-generation.md) linker option on a machine with a 32-bit operating system. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1164.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1164.md index a0ceb437276..4946654a889 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1164.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1164.md @@ -10,6 +10,8 @@ ms.assetid: da89765c-affa-4f88-b170-6d6b19a577cf > section section alignment (number) greater than /ALIGN value +## Remarks + The alignment size for the given section in the object file exceeds the value specified with the [/ALIGN](../../build/reference/align-section-alignment.md) option. The **/ALIGN** value must be a power of 2 and must equal or exceed the section alignment given in the object file. Either recompile with a smaller section alignment or increase the **/ALIGN** value. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1166.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1166.md index 736756fce51..4c829eadb87 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1166.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1166.md @@ -10,6 +10,8 @@ ms.assetid: d69548a8-0efb-44e1-90b7-b27636a4b575 > cannot adjust code at offset=offset, va=value +## Remarks + LINK was unable to pad the code as required. Certain instructions are not allowed to cross page boundaries on some processors. LINK attempts to add pads to correct this situation. In this case, LINK could not work around the problem. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1168.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1168.md index 273d662b5d7..32fb85103cf 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1168.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1168.md @@ -10,6 +10,8 @@ ms.assetid: 97ead151-fd99-46fe-9a1d-7e84dc0b8cc8 > cannot open filename for writing +## Remarks + The linker can't write to `filename`. The file may be in use and its file handle locked by another process, or you may not have write permission for the file, or for the directory or network share it is located in. This error is often caused by a transient condition—for example, a lock held by an anti-virus program, a file search indexing process, or a delay in releasing a lock held by the Visual Studio build system. To fix this issue, verify that the `filename` file handle is not locked, and that you have write permission for the file. If it is an executable, verify that it is not already running. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1169.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1169.md index f06dabc9782..b2ae304069c 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1169.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1169.md @@ -10,6 +10,8 @@ ms.assetid: e079d518-f184-48cd-8b38-969bf137af54 > one or more multiply defined symbols found +## Remarks + The build failed due to multiple definitions of one or more symbols. This error is preceded by error [LNK2005](../../error-messages/tool-errors/linker-tools-error-lnk2005.md). The [/FORCE](../../build/reference/force-force-file-output.md) or **/FORCE:MULTIPLE** option overrides this error. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1170.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1170.md index 7b4979f8e5b..0de2b0a6e32 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1170.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1170.md @@ -10,6 +10,8 @@ ms.assetid: e079d518-f184-48cd-8b38-969bf137af54 > line in command file contains *maximum-length* or more characters +## Remarks + The build failed because a line in a command response file was too long. A line in an automatically generated response file may be too long for many reasons. For example, this error may occur if the number of object file names is too high. Or, if the combined lengths of the paths included in object file names is too long. The appropriate fix for this issue depends on the cause. For example, if it's caused by long paths in object file names, you may try to shorten the directory names in the path. Or, move the project tree into a directory closer to the root of the drive. You may want to break up how response files are generated and consumed by your build system, for instance, by generating some code as static libraries. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1179.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1179.md index e131b61f1f5..f1b8d37e0d4 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1179.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1179.md @@ -10,6 +10,8 @@ ms.assetid: 4b1536d7-0d3d-4f29-a9c1-6fa5cf6cb665 > invalid or corrupt file: duplicate COMDAT 'filename' +## Remarks + An object module contains two or more COMDATs with the same name. This error can be caused by using [/H](../../build/reference/h-restrict-length-of-external-names.md), which limits the length of external names, and [/Gy](../../build/reference/gy-enable-function-level-linking.md), which packages functions in COMDATs. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1181.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1181.md index 9308870843a..cc641ba3823 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1181.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1181.md @@ -10,6 +10,8 @@ ms.assetid: 984b0db6-e331-4284-b2a7-a212fe96c486 > cannot open input file 'filename' +## Remarks + The linker could not find `filename` because it does not exist or the path was not found. Some common causes for error LNK1181 include: diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1188.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1188.md index 6ff1bc26fc8..3702c3efd3b 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1188.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1188.md @@ -10,4 +10,6 @@ ms.assetid: 4af574b0-5b41-4580-9a37-52a634add995 > BADFIXUPSECTION:: invalid fixup target 'symbol'; possible zero length section +## Remarks + During a VxD link, the target of a relocation did not have a section. With LINK386 (an older version), an OMF GROUP record (generated by a MASM GROUP directive) may have been used to combine the zero length section with another non-zero length section. COFF format does not support the GROUP directive and zero-length sections. When LINK automatically converts this type of OMF objects to COFF, this error may occur. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1189.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1189.md index 7bd85921eb5..ba74f99ed08 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1189.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1189.md @@ -10,6 +10,8 @@ ms.assetid: 40c45302-6967-497e-9a6e-c2ca039fc1ed > LIBTOOMANYMEMBERS:: library limit of number objects exceeded +## Remarks + The limit of 65535 objects or members in a library has been exceeded. To fix this issue, split your library into two or more libraries with fewer objects or members. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1196.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1196.md index 425506541af..4974338f5ac 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1196.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1196.md @@ -10,4 +10,6 @@ ms.assetid: d0c6859b-85aa-45cc-9f5f-fc1f7070ab5a > invalid or corrupt import object: unknown version +## Remarks + The import library is corrupted. Rebuild the library. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1200.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1200.md index cda3198afdf..1be547f32a2 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1200.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1200.md @@ -10,6 +10,8 @@ ms.assetid: 55771145-915e-4006-ac6c-ac702041eb2f > error reading program database 'filename' +## Remarks + The program database (PDB) could not be read. This error can be caused by file corruption. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1201.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1201.md index 31f25970faf..bab142fed66 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1201.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1201.md @@ -10,6 +10,8 @@ ms.assetid: 64c3f496-a428-4b54-981e-faa82ef9c8a1 > error writing to program database 'filename'; check for insufficient disk space, invalid path, or insufficient privilege +## Remarks + LINK could not write to the program database (PDB) for the output file. ### To fix by checking the following possible causes diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1211.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1211.md index 0cdaf996a71..5a939ce270f 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1211.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1211.md @@ -10,6 +10,8 @@ ms.assetid: 607400eb-4180-4892-817f-eedfa628af61 > precompiled type information not found; '*filename*' not linked or overwritten +## Remarks + The *filename* object file, compiled by using [/Yc](../../build/reference/yc-create-precompiled-header-file.md), was not specified in the LINK command or was overwritten. If you are creating a debug library that uses precompiled headers and if you specify **/Yc** and [/Z7](../../build/reference/z7-zi-zi-debug-information-format.md), Visual C++ generates a precompiled object file that contains debug information. The error occurs only when you store the precompiled object file in a library, use the library to build an executable image, and the object files that are referenced have no transitive references to any of the functions the precompiled object file defines. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1215.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1215.md index 35901c0c6e7..0a591c7454a 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1215.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1215.md @@ -10,6 +10,8 @@ ms.assetid: 0774d8e6-f0c1-4efb-8723-7e1be6863d81 > metadata operation failed (HRESULT) : error +## Remarks + The linker received an error from the .NET runtime while attempting to do a metadata update through the .NET runtime. `HRESULT` is the HRESULT from the .NET runtime method. `error` is the .NET-supplied text. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1218.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1218.md index 7f35a629126..254d5fc21fa 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1218.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1218.md @@ -10,6 +10,8 @@ ms.assetid: bf599350-be03-4344-be43-91e29c4f1556 > warning treated as error; no output file generated +## Remarks + When you link with **/WX**, any linker warnings will be treated as errors, and no output file will be created. See [/WX (Treat Linker Warnings as Errors)](../../build/reference/wx-treat-linker-warnings-as-errors.md) for more information. From a90437ce598ff978ddf82b5fce9446089fd3f39a Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 20 Sep 2025 22:42:14 +0800 Subject: [PATCH 1893/2255] Update metadata for error references in range [LNK1000, LNK1220] --- .../error-messages/tool-errors/linker-tools-error-lnk1000.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1103.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1104.md | 3 +-- .../error-messages/tool-errors/linker-tools-error-lnk1106.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1107.md | 2 +- .../error-messages/tool-errors/linker-tools-error-lnk1112.md | 3 +-- .../error-messages/tool-errors/linker-tools-error-lnk1113.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1120.md | 3 +-- .../error-messages/tool-errors/linker-tools-error-lnk1123.md | 4 ++-- .../error-messages/tool-errors/linker-tools-error-lnk1127.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1136.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1140.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1141.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1143.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1152.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1158.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1164.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1166.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1168.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1169.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1170.md | 3 +-- .../error-messages/tool-errors/linker-tools-error-lnk1179.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1181.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1188.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1189.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1196.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1200.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1201.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1211.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1215.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1218.md | 5 ++--- 31 files changed, 57 insertions(+), 86 deletions(-) diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1000.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1000.md index 12800cd9829..d769aac9547 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1000.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1000.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1000" title: "Linker Tools Error LNK1000" -ms.date: "06/18/2018" +description: "Learn more about: Linker Tools Error LNK1000" +ms.date: 06/18/2018 f1_keywords: ["LNK1000"] helpviewer_keywords: ["LNK1000"] -ms.assetid: 86421b9a-460a-4285-8dce-9b8257d78122 --- # Linker Tools Error LNK1000 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1103.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1103.md index 5e0b787a210..f49a578deee 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1103.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1103.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1103" title: "Linker Tools Error LNK1103" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1103" +ms.date: 11/04/2016 f1_keywords: ["LNK1103"] helpviewer_keywords: ["LNK1103"] -ms.assetid: c8e9bc54-6a71-471c-899e-6f98122ee3c4 --- # Linker Tools Error LNK1103 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1104.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1104.md index 408a3424262..cade1e6b606 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1104.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1104.md @@ -1,10 +1,9 @@ --- title: "Linker Tools Error LNK1104" description: "Describes the Microsoft C and C++ (MSVC) linker error LNK1104, its causes, and possible solutions." -ms.date: "12/13/2019" +ms.date: 12/13/2019 f1_keywords: ["LNK1104"] helpviewer_keywords: ["LNK1104"] -ms.assetid: 9ca6f929-0efc-4055-8354-3cf5b4e636dc --- # Linker Tools Error LNK1104 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1106.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1106.md index 8609fb21f4e..662214bd59b 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1106.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1106.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1106" title: "Linker Tools Error LNK1106" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1106" +ms.date: 11/04/2016 f1_keywords: ["LNK1106"] helpviewer_keywords: ["LNK1106"] -ms.assetid: 528f7e65-04be-4966-b8af-9276837c7cda --- # Linker Tools Error LNK1106 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1107.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1107.md index 4933bd196f4..75ae3cc8c30 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1107.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1107.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Linker tools error LNK1107" title: "Linker tools error LNK1107" +description: "Learn more about: Linker tools error LNK1107" ms.date: 12/10/2021 f1_keywords: ["LNK1107"] helpviewer_keywords: ["LNK1107"] diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1112.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1112.md index 0e62d587977..67286e66572 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1112.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1112.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1112" title: "Linker Tools Error LNK1112" +description: "Learn more about: Linker Tools Error LNK1112" ms.date: 05/23/2022 f1_keywords: ["LNK1112"] helpviewer_keywords: ["LNK1112"] -ms.assetid: 425793d8-37e6-4072-9b6e-c3d4e9c12562 --- # Linker Tools Error LNK1112 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1113.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1113.md index 44a0f634a12..feb9df5031f 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1113.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1113.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1113" title: "Linker Tools Error LNK1113" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1113" +ms.date: 11/04/2016 f1_keywords: ["LNK1113"] helpviewer_keywords: ["LNK1113"] -ms.assetid: 269ff166-b143-48e9-bdf7-db6a0db59fe4 --- # Linker Tools Error LNK1113 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1120.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1120.md index 614cc9034c1..852a5668232 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1120.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1120.md @@ -1,10 +1,9 @@ --- title: "Linker tools error LNK1120" description: "Describes the LNK1120 linker error, which reports the number of unresolved external symbol errors in the link." -ms.date: "10/31/2019" +ms.date: 10/31/2019 f1_keywords: ["LNK1120"] helpviewer_keywords: ["LNK1120"] -ms.assetid: 56aa7d36-921f-4daf-b44d-cca0d4fb1b51 --- # Linker tools error LNK1120 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1123.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1123.md index 1d4d923ecf8..3059a757de8 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1123.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1123.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Linker Tools Error LNK1123" title: "Linker Tools Error LNK1123" -ms.date: "12/29/2017" +description: "Learn more about: Linker Tools Error LNK1123" +ms.date: 12/29/2017 f1_keywords: ["LNK1123"] helpviewer_keywords: ["LNK1123"] --- diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1127.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1127.md index 0c57c055ea7..d2acd271220 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1127.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1127.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1127" title: "Linker Tools Error LNK1127" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1127" +ms.date: 11/04/2016 f1_keywords: ["LNK1127"] helpviewer_keywords: ["LNK1127"] -ms.assetid: 45404700-1420-4f24-97e1-efb7252ffd8f --- # Linker Tools Error LNK1127 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1136.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1136.md index 65bfc5c2499..0c4dee8bb92 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1136.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1136.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1136" title: "Linker Tools Error LNK1136" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1136" +ms.date: 11/04/2016 f1_keywords: ["LNK1136"] helpviewer_keywords: ["LNK1136"] -ms.assetid: 40c6d909-eb3f-4045-a0fc-4caa2f6db506 --- # Linker Tools Error LNK1136 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1140.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1140.md index 8410c19e59e..32776a589dc 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1140.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1140.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1140" title: "Linker Tools Error LNK1140" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1140" +ms.date: 11/04/2016 f1_keywords: ["LNK1140"] helpviewer_keywords: ["LNK1140"] -ms.assetid: 468d7651-a7cd-47b9-aead-5bb2fab56121 --- # Linker Tools Error LNK1140 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1141.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1141.md index 0db826ead4e..11f1c42106c 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1141.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1141.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1141" title: "Linker Tools Error LNK1141" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1141" +ms.date: 11/04/2016 f1_keywords: ["LNK1141"] helpviewer_keywords: ["LNK1141"] -ms.assetid: 83b78606-6dd3-43a7-88e2-152f5359cbd8 --- # Linker Tools Error LNK1141 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1143.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1143.md index 55c29d4569d..3d852635bb1 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1143.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1143.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1143" title: "Linker Tools Error LNK1143" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1143" +ms.date: 11/04/2016 f1_keywords: ["LNK1143"] helpviewer_keywords: ["LNK1143"] -ms.assetid: 5dc6b634-d142-4448-b5ea-48e8fb10c10a --- # Linker Tools Error LNK1143 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1152.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1152.md index d4297c40e50..94733880e80 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1152.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1152.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1152" title: "Linker Tools Error LNK1152" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1152" +ms.date: 11/04/2016 f1_keywords: ["LNK1152"] helpviewer_keywords: ["LNK1152"] -ms.assetid: 2523b61a-1359-4612-9c16-7d1f705f32e6 --- # Linker Tools Error LNK1152 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1158.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1158.md index 10a01aaccbb..c439b181dde 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1158.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1158.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1158" title: "Linker Tools Error LNK1158" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1158" +ms.date: 11/04/2016 f1_keywords: ["LNK1158"] helpviewer_keywords: ["LNK1158"] -ms.assetid: 45febf16-d9e1-42db-af91-532e2717fd6a --- # Linker Tools Error LNK1158 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1164.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1164.md index 4946654a889..065ff3d8f75 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1164.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1164.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1164" title: "Linker Tools Error LNK1164" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1164" +ms.date: 11/04/2016 f1_keywords: ["LNK1164"] helpviewer_keywords: ["LNK1164"] -ms.assetid: da89765c-affa-4f88-b170-6d6b19a577cf --- # Linker Tools Error LNK1164 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1166.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1166.md index 4c829eadb87..e9afdd5624e 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1166.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1166.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1166" title: "Linker Tools Error LNK1166" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1166" +ms.date: 11/04/2016 f1_keywords: ["LNK1166"] helpviewer_keywords: ["LNK1166"] -ms.assetid: d69548a8-0efb-44e1-90b7-b27636a4b575 --- # Linker Tools Error LNK1166 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1168.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1168.md index 32fb85103cf..fd72aa34b40 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1168.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1168.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1168" title: "Linker Tools Error LNK1168" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1168" +ms.date: 11/04/2016 f1_keywords: ["LNK1168"] helpviewer_keywords: ["LNK1168"] -ms.assetid: 97ead151-fd99-46fe-9a1d-7e84dc0b8cc8 --- # Linker Tools Error LNK1168 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1169.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1169.md index b2ae304069c..20e35c0d767 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1169.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1169.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1169" title: "Linker Tools Error LNK1169" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1169" +ms.date: 11/04/2016 f1_keywords: ["LNK1169"] helpviewer_keywords: ["LNK1169"] -ms.assetid: e079d518-f184-48cd-8b38-969bf137af54 --- # Linker Tools Error LNK1169 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1170.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1170.md index 0de2b0a6e32..1bfdd6a7cb1 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1170.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1170.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker tools Error LNK1170" title: "Linker tools Error LNK1170" +description: "Learn more about: Linker tools Error LNK1170" ms.date: 05/17/2022 f1_keywords: ["LNK1170"] helpviewer_keywords: ["LNK1170"] -ms.assetid: e079d518-f184-48cd-8b38-969bf137af54 --- # Linker tools Error LNK1170 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1179.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1179.md index f1b8d37e0d4..9007d33d95c 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1179.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1179.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1179" title: "Linker Tools Error LNK1179" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1179" +ms.date: 11/04/2016 f1_keywords: ["LNK1179"] helpviewer_keywords: ["LNK1179"] -ms.assetid: 4b1536d7-0d3d-4f29-a9c1-6fa5cf6cb665 --- # Linker Tools Error LNK1179 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1181.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1181.md index cc641ba3823..3212fbf52a1 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1181.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1181.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1181" title: "Linker Tools Error LNK1181" -ms.date: "08/22/2018" +description: "Learn more about: Linker Tools Error LNK1181" +ms.date: 08/22/2018 f1_keywords: ["LNK1181"] helpviewer_keywords: ["LNK1181"] -ms.assetid: 984b0db6-e331-4284-b2a7-a212fe96c486 --- # Linker Tools Error LNK1181 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1188.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1188.md index 3702c3efd3b..fa68aa2479c 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1188.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1188.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1188" title: "Linker Tools Error LNK1188" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1188" +ms.date: 11/04/2016 f1_keywords: ["LNK1188"] helpviewer_keywords: ["LNK1188"] -ms.assetid: 4af574b0-5b41-4580-9a37-52a634add995 --- # Linker Tools Error LNK1188 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1189.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1189.md index ba74f99ed08..3638265d0cc 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1189.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1189.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1189" title: "Linker Tools Error LNK1189" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1189" +ms.date: 11/04/2016 f1_keywords: ["LNK1189"] helpviewer_keywords: ["LNK1189"] -ms.assetid: 40c45302-6967-497e-9a6e-c2ca039fc1ed --- # Linker Tools Error LNK1189 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1196.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1196.md index 4974338f5ac..8b9f7cff7de 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1196.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1196.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1196" title: "Linker Tools Error LNK1196" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1196" +ms.date: 11/04/2016 f1_keywords: ["LNK1196"] helpviewer_keywords: ["LNK1196"] -ms.assetid: d0c6859b-85aa-45cc-9f5f-fc1f7070ab5a --- # Linker Tools Error LNK1196 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1200.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1200.md index 1be547f32a2..cbf43a2a49b 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1200.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1200.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1200" title: "Linker Tools Error LNK1200" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1200" +ms.date: 11/04/2016 f1_keywords: ["LNK1200"] helpviewer_keywords: ["LNK1200"] -ms.assetid: 55771145-915e-4006-ac6c-ac702041eb2f --- # Linker Tools Error LNK1200 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1201.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1201.md index bab142fed66..4dc5e1a5bce 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1201.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1201.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1201" title: "Linker Tools Error LNK1201" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1201" +ms.date: 11/04/2016 f1_keywords: ["LNK1201"] helpviewer_keywords: ["LNK1201"] -ms.assetid: 64c3f496-a428-4b54-981e-faa82ef9c8a1 --- # Linker Tools Error LNK1201 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1211.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1211.md index 5a939ce270f..dffce63c093 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1211.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1211.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1211" title: "Linker Tools Error LNK1211" -ms.date: "12/05/2017" +description: "Learn more about: Linker Tools Error LNK1211" +ms.date: 12/05/2017 f1_keywords: ["LNK1211"] helpviewer_keywords: ["LNK1211"] -ms.assetid: 607400eb-4180-4892-817f-eedfa628af61 --- # Linker Tools Error LNK1211 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1215.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1215.md index 0a591c7454a..96a368bdc10 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1215.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1215.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1215" title: "Linker Tools Error LNK1215" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1215" +ms.date: 11/04/2016 f1_keywords: ["LNK1215"] helpviewer_keywords: ["LNK1215"] -ms.assetid: 0774d8e6-f0c1-4efb-8723-7e1be6863d81 --- # Linker Tools Error LNK1215 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1218.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1218.md index 254d5fc21fa..cd40d43678a 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1218.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1218.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1218" title: "Linker Tools Error LNK1218" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1218" +ms.date: 11/04/2016 f1_keywords: ["LNK1218"] helpviewer_keywords: ["LNK1218"] -ms.assetid: bf599350-be03-4344-be43-91e29c4f1556 --- # Linker Tools Error LNK1218 From 1ff225f2f7e14d5dabff033353b21980049f2dae Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 21 Sep 2025 17:45:20 +0800 Subject: [PATCH 1894/2255] Add blockquotes for error messages in range [LNK1221, LNK2000] --- docs/error-messages/tool-errors/linker-tools-error-lnk1221.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1223.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1224.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1240.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1241.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1245.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1256.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1264.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1277.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1282.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1287.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1296.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1301.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1302.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1312.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1314.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1332.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1561.md | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1221.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1221.md index f200e10465f..fcd29355272 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1221.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1221.md @@ -8,7 +8,7 @@ ms.assetid: 70654bf9-1520-4fa3-a063-1219dd88abf7 --- # Linker Tools Error LNK1221 -a subsystem can't be inferred and must be defined +> a subsystem can't be inferred and must be defined The linker does not have enough information to infer which subsystem you want to target. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1223.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1223.md index 54a615674d0..0490467d55d 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1223.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1223.md @@ -8,7 +8,7 @@ ms.assetid: c4728c36-daee-462f-a1c7-8733dcdec88e --- # Linker Tools Error LNK1223 -invalid or corrupt file: file contains invalid .pdata contributions +> invalid or corrupt file: file contains invalid .pdata contributions For RISC platforms that use pdata, this error will occur if the compiler emitted a .pdata section with unsorted entries. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1224.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1224.md index 36dd5b331dc..9d440957782 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1224.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1224.md @@ -8,6 +8,6 @@ ms.assetid: e190b5d0-ce0c-4f65-8cc0-753f1cc9758a --- # Linker Tools Error LNK1224 -invalid image base address +> invalid image base address You specified an invalid base address for the image. Base addresses must be 64KB aligned (the last four hex digits must be zero) and image base must fit within a 32-bit signed or unsigned value. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1240.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1240.md index d899064a26b..9a3762702cb 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1240.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1240.md @@ -8,6 +8,6 @@ ms.assetid: 7d0e065d-1015-4df0-8370-79c3cf045e1c --- # Linker Tools Error LNK1240 -failed to compile IDL content +> failed to compile IDL content The linker spawned MIDL to compile embedded IDL but there was a problem. Check the errors specified by MIDL. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1241.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1241.md index 2b423a6bec7..b7c99b8b1bf 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1241.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1241.md @@ -8,7 +8,7 @@ ms.assetid: 7b8b52eb-0231-4521-b52a-2bce8d3e8956 --- # Linker Tools Error LNK1241 -resource file 'resource file' already specified +> resource file 'resource file' already specified This error is generated if you run **cvtres** manually from the command line and if you then pass the resulting .obj file to the linker in addition to other .res files. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1245.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1245.md index 4622d688ed5..7f289001952 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1245.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1245.md @@ -8,7 +8,7 @@ ms.assetid: 179c8165-ffbb-44cd-9f24-5250f29577cc --- # Linker Tools Error LNK1245 -invalid subsystem 'subsystem' specified; /SUBSYSTEM must be WINDOWS, WINDOWSCE, or CONSOLE +> invalid subsystem 'subsystem' specified; /SUBSYSTEM must be WINDOWS, WINDOWSCE, or CONSOLE [/clr](../../build/reference/clr-common-language-runtime-compilation.md) was used to compile the object and one of the following conditions was true: diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1256.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1256.md index 8d1a5d87b2d..d4b8e0529f7 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1256.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1256.md @@ -8,7 +8,7 @@ ms.assetid: 55b64b2b-a56b-436c-a55e-ec9c6dcb050e --- # Linker Tools Error LNK1256 -ALINK operation failed : reason +> ALINK operation failed : reason A common reason for LNK1256 is an incorrect version number for an assembly. The value 65535 is not allowed for any part of the assembly version number. The valid range for assembly versions is 0 - 65534. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1264.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1264.md index 56602f576dc..96c142c292b 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1264.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1264.md @@ -8,7 +8,7 @@ ms.assetid: 23b1aad7-d382-42c1-bae8-db68575c57a8 --- # Linker Tools Error LNK1264 -/LTCG:PGINSTRUMENT specified but no code generation required; instrumentation failed +> /LTCG:PGINSTRUMENT specified but no code generation required; instrumentation failed **/LTCG:PGINSTRUMENT** was specified but no .obj files were found that were compiled with [/GL](../../build/reference/gl-whole-program-optimization.md). Instrumentation cannot take place and the link failed. There must be at least one .obj file on the command line that is compiled with **/GL** so that the instrumentation can occur. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1277.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1277.md index b7b4ad87f8b..0d9fa0fe973 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1277.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1277.md @@ -8,7 +8,7 @@ ms.assetid: afca3de0-50cc-4140-af7a-13493a170835 --- # Linker Tools Error LNK1277 -object record not found in pgd (filename) +> object record not found in pgd (filename) When using [/LTCG:PGOPTIMZE](../../build/reference/ltcg-link-time-code-generation.md), the path of one of the input .lib, def, or .obj files was different from the path on which they were found during /LTCG:PGINSTRUMENT. This may be explained by a change in the LIB environment variable after /LTCG:PGINSTRUMENT. The full path to the input files is stored in the .pgd file. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1282.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1282.md index f5a4ef3c70b..964e33d0022 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1282.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1282.md @@ -8,6 +8,6 @@ ms.assetid: 99c13f52-eb80-46ce-a5b9-4537583e32a9 --- # Linker Tools Error LNK1282 -unable to /REBASE file; it has been signed +> unable to /REBASE file; it has been signed You attempted to change the base address of a signed assembly with the /REBASE option for [editbin](../../build/reference/editbin-reference.md). To do this, first change the base address and then sign the assembly. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1287.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1287.md index 0e007f7611e..60b127d93f6 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1287.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1287.md @@ -8,6 +8,6 @@ ms.assetid: 48dc379d-370c-42f6-8028-5bbcf1cc88bd --- # Linker Tools Error LNK1287 -invalid managed entry point function +> invalid managed entry point function The entry point is not valid for a managed image. The return type of a managed entry point function can only be **`void`** or **`int`**. The type of the parameter of a managed entry point function can only be **`void`** or `String []`. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1296.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1296.md index ae48da8e2e0..30ed2a4af50 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1296.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1296.md @@ -8,7 +8,7 @@ ms.assetid: f94a3d18-5411-456b-966f-89810fdcfe60 --- # Linker Tools Error LNK1296 -unable to load filename +> unable to load filename The given DLL was unavailable. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1301.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1301.md index 32ddbeb1ea6..25a5312b3fd 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1301.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1301.md @@ -8,7 +8,7 @@ ms.assetid: 760da428-7182-4b25-b20a-de90d4b9a9cd --- # Linker Tools Error LNK1301 -LTCG clr modules found, incompatible with /LTCG:parameter +> LTCG clr modules found, incompatible with /LTCG:parameter A module compiled with /clr and /GL was passed to the linker along with one of the profile guided optimizations (PGO) parameters of /LTCG. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1302.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1302.md index 575fa0381d0..c78404ae92b 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1302.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1302.md @@ -8,7 +8,7 @@ ms.assetid: aea3c753-c2c4-4249-bbc3-f2d4f0164b5e --- # Linker Tools Error LNK1302 -only support linking safe .netmodules; unable to link file .netmodule +> only support linking safe .netmodules; unable to link file .netmodule A .netmodule (compiled with **/LN**) was passed to the linker in a user attempt to invoke MSIL linking. A C++ module is valid for MSIL linking if it is compiled with **/clr:safe**. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1312.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1312.md index c4a7b56c971..bf749a129a4 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1312.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1312.md @@ -8,7 +8,7 @@ ms.assetid: 48284abb-d849-43fc-ab53-45aded14fd8a --- # Linker Tools Error LNK1312 -invalid or corrupt file: unable to import assembly +> invalid or corrupt file: unable to import assembly When building an assembly, a file other than a module or assembly compiled with **/clr** was passed to the **/ASSEMBLYMODULE** linker option. If you passed an object file to **/ASSEMBLYMODULE**, just pass the object directly to the linker, instead of to **/ASSEMBLYMODULE**. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1314.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1314.md index 91bcd50de0c..63b7ec94775 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1314.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1314.md @@ -8,7 +8,7 @@ ms.assetid: 0b5cd599-61ea-4ac7-8f25-c6d3a8b14655 --- # Linker Tools Error LNK1314 -corrupt or invalid COFF symbol table (undefined static or label symbol) +> corrupt or invalid COFF symbol table (undefined static or label symbol) The compiler-generated content for a section in the given object appears to be corrupt. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1332.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1332.md index ff537294c8d..76daff2a88e 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1332.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1332.md @@ -8,7 +8,7 @@ ms.assetid: b31d5ca0-c27f-4177-896b-2637dccbde24 --- # Linker Tools Error LNK1332 -detected\ Windows Runtime types imported in one module and defined in another module +> detected\ Windows Runtime types imported in one module and defined in another module When it produced the current target, the linker detected <`count`> Windows Runtime types, each of which is imported in one module and also defined in another module. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1561.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1561.md index 02cda93ab58..cd063749af0 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1561.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1561.md @@ -8,7 +8,7 @@ ms.assetid: cb0b709b-7c9c-4496-8a4e-9e1e4aefe447 --- # Linker Tools Error LNK1561 -entry point must be defined +> entry point must be defined The linker did not find an *entry point*, the initial function to call in your executable. By default, the linker looks for a `main` or `wmain` function for a console app, a `WinMain` or `wWinMain` function for a Windows app, or `DllMain` for a DLL that requires initialization. You can specify another function by using the [/ENTRY](../../build/reference/entry-entry-point-symbol.md) linker option. From 9f000cf993b94d3e7d8515d6965bfeb93c925b46 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 21 Sep 2025 17:52:00 +0800 Subject: [PATCH 1895/2255] Add "Remarks" and "Example" headings for error references in range [LNK1221, LNK2000] --- docs/error-messages/tool-errors/linker-tools-error-lnk1221.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1223.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1224.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1240.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1241.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1245.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1256.md | 4 ++++ docs/error-messages/tool-errors/linker-tools-error-lnk1264.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1277.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1282.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1287.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1296.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1301.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1302.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1306.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1312.md | 4 +++- docs/error-messages/tool-errors/linker-tools-error-lnk1313.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1314.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1318.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1332.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk1561.md | 2 ++ 21 files changed, 44 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1221.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1221.md index fcd29355272..93a42689582 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1221.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1221.md @@ -10,6 +10,8 @@ ms.assetid: 70654bf9-1520-4fa3-a063-1219dd88abf7 > a subsystem can't be inferred and must be defined +## Remarks + The linker does not have enough information to infer which subsystem you want to target. To fix this error, use [/SUBSYSTEM](../../build/reference/subsystem-specify-subsystem.md). diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1223.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1223.md index 0490467d55d..86a2b0958ec 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1223.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1223.md @@ -10,6 +10,8 @@ ms.assetid: c4728c36-daee-462f-a1c7-8733dcdec88e > invalid or corrupt file: file contains invalid .pdata contributions +## Remarks + For RISC platforms that use pdata, this error will occur if the compiler emitted a .pdata section with unsorted entries. To fix this issue, try compiling without [/GL (Whole Program Optimization)](../../error-messages/tool-errors/linker-tools-error-lnk1223.md) enabled. Empty function bodies can also cause this error in some cases. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1224.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1224.md index 9d440957782..a66d18efd78 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1224.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1224.md @@ -10,4 +10,6 @@ ms.assetid: e190b5d0-ce0c-4f65-8cc0-753f1cc9758a > invalid image base address +## Remarks + You specified an invalid base address for the image. Base addresses must be 64KB aligned (the last four hex digits must be zero) and image base must fit within a 32-bit signed or unsigned value. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1240.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1240.md index 9a3762702cb..943a77844f5 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1240.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1240.md @@ -10,4 +10,6 @@ ms.assetid: 7d0e065d-1015-4df0-8370-79c3cf045e1c > failed to compile IDL content +## Remarks + The linker spawned MIDL to compile embedded IDL but there was a problem. Check the errors specified by MIDL. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1241.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1241.md index b7c99b8b1bf..3e05f713541 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1241.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1241.md @@ -10,6 +10,8 @@ ms.assetid: 7b8b52eb-0231-4521-b52a-2bce8d3e8956 > resource file 'resource file' already specified +## Remarks + This error is generated if you run **cvtres** manually from the command line and if you then pass the resulting .obj file to the linker in addition to other .res files. To specify multiple .res files, pass them all to the linker as .res files, not from within .obj files created by **cvtres**. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1245.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1245.md index 7f289001952..4e2841b6659 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1245.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1245.md @@ -10,6 +10,8 @@ ms.assetid: 179c8165-ffbb-44cd-9f24-5250f29577cc > invalid subsystem 'subsystem' specified; /SUBSYSTEM must be WINDOWS, WINDOWSCE, or CONSOLE +## Remarks + [/clr](../../build/reference/clr-common-language-runtime-compilation.md) was used to compile the object and one of the following conditions was true: - A custom entry point was defined ([/ENTRY](../../build/reference/entry-entry-point-symbol.md)), such that, the linker could not infer a subsystem. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1256.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1256.md index d4b8e0529f7..f6f8c4463bb 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1256.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1256.md @@ -10,12 +10,16 @@ ms.assetid: 55b64b2b-a56b-436c-a55e-ec9c6dcb050e > ALINK operation failed : reason +## Remarks + A common reason for LNK1256 is an incorrect version number for an assembly. The value 65535 is not allowed for any part of the assembly version number. The valid range for assembly versions is 0 - 65534. LNK1256 can also be caused if ALINK could not find the named key container. Delete the key container and add it again to the strong name CSP by using [Sn.exe (Strong Name Tool)](/dotnet/framework/tools/sn-exe-strong-name-tool). Another reason for LNK1256 is a version mismatch between the linker and Alink.dll. This can be caused by a corrupted Visual Studio installation. Use **Programs and Features** in the Windows Control Panel to repair or reinstall Visual Studio. +## Example + The following sample generates LNK1256: ```cpp diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1264.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1264.md index 96c142c292b..c1d08ff641f 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1264.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1264.md @@ -10,6 +10,8 @@ ms.assetid: 23b1aad7-d382-42c1-bae8-db68575c57a8 > /LTCG:PGINSTRUMENT specified but no code generation required; instrumentation failed +## Remarks + **/LTCG:PGINSTRUMENT** was specified but no .obj files were found that were compiled with [/GL](../../build/reference/gl-whole-program-optimization.md). Instrumentation cannot take place and the link failed. There must be at least one .obj file on the command line that is compiled with **/GL** so that the instrumentation can occur. Profile guided optimization (PGO) is only available in 64-bit compilers. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1277.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1277.md index 0d9fa0fe973..e9260876f57 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1277.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1277.md @@ -10,6 +10,8 @@ ms.assetid: afca3de0-50cc-4140-af7a-13493a170835 > object record not found in pgd (filename) +## Remarks + When using [/LTCG:PGOPTIMZE](../../build/reference/ltcg-link-time-code-generation.md), the path of one of the input .lib, def, or .obj files was different from the path on which they were found during /LTCG:PGINSTRUMENT. This may be explained by a change in the LIB environment variable after /LTCG:PGINSTRUMENT. The full path to the input files is stored in the .pgd file. /LTCG:PGOPTIMIZE requires that the inputs be identical to the /LTCG:PGINSTRUMENT phase. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1282.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1282.md index 964e33d0022..5ce594e5525 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1282.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1282.md @@ -10,4 +10,6 @@ ms.assetid: 99c13f52-eb80-46ce-a5b9-4537583e32a9 > unable to /REBASE file; it has been signed +## Remarks + You attempted to change the base address of a signed assembly with the /REBASE option for [editbin](../../build/reference/editbin-reference.md). To do this, first change the base address and then sign the assembly. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1287.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1287.md index 60b127d93f6..66cd6aea56d 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1287.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1287.md @@ -10,4 +10,6 @@ ms.assetid: 48dc379d-370c-42f6-8028-5bbcf1cc88bd > invalid managed entry point function +## Remarks + The entry point is not valid for a managed image. The return type of a managed entry point function can only be **`void`** or **`int`**. The type of the parameter of a managed entry point function can only be **`void`** or `String []`. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1296.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1296.md index 30ed2a4af50..1a26baf7a70 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1296.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1296.md @@ -10,6 +10,8 @@ ms.assetid: f94a3d18-5411-456b-966f-89810fdcfe60 > unable to load filename +## Remarks + The given DLL was unavailable. The possible locations for the DLL are the current directory, the system directory, the Windows directory, and the directories specified in the PATH environment variable. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1301.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1301.md index 25a5312b3fd..d9d55788f58 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1301.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1301.md @@ -10,6 +10,8 @@ ms.assetid: 760da428-7182-4b25-b20a-de90d4b9a9cd > LTCG clr modules found, incompatible with /LTCG:parameter +## Remarks + A module compiled with /clr and /GL was passed to the linker along with one of the profile guided optimizations (PGO) parameters of /LTCG. Profile guided optimizations are not supported for /clr modules. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1302.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1302.md index c78404ae92b..d7b00366943 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1302.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1302.md @@ -10,6 +10,8 @@ ms.assetid: aea3c753-c2c4-4249-bbc3-f2d4f0164b5e > only support linking safe .netmodules; unable to link file .netmodule +## Remarks + A .netmodule (compiled with **/LN**) was passed to the linker in a user attempt to invoke MSIL linking. A C++ module is valid for MSIL linking if it is compiled with **/clr:safe**. To correct this error, compile with **/clr:safe** to enable MSIL linking, or pass the **/clr** or **/clr:pure** .obj file to the linker instead of the module. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1306.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1306.md index 81531f6bc3c..10e0be78b35 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1306.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1306.md @@ -10,6 +10,8 @@ ms.assetid: fad1df6a-0bd9-412f-b0d1-7c9bc749c584 > DLL entry point function cannot be managed; compile to native +## Remarks + `DllMain` cannot be compiled to MSIL; it must be compiled to native. To resolve this issue, diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1312.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1312.md index bf749a129a4..6fc3c67a2e0 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1312.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1312.md @@ -10,9 +10,11 @@ ms.assetid: 48284abb-d849-43fc-ab53-45aded14fd8a > invalid or corrupt file: unable to import assembly +## Remarks + When building an assembly, a file other than a module or assembly compiled with **/clr** was passed to the **/ASSEMBLYMODULE** linker option. If you passed an object file to **/ASSEMBLYMODULE**, just pass the object directly to the linker, instead of to **/ASSEMBLYMODULE**. -## Examples +## Example The following sample created the .obj file. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1313.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1313.md index 0028bd2e487..0c2d50dc575 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1313.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1313.md @@ -16,7 +16,7 @@ The current version of Visual C++ does not support linking native or mixed manag The **`/clr:pure`** compiler option is deprecated in Visual Studio 2015 and unsupported in Visual Studio 2017 and later. -## Examples +## Example Source file `LNK1313.cpp`: diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1314.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1314.md index 63b7ec94775..e58a071dbe5 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1314.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1314.md @@ -10,6 +10,8 @@ ms.assetid: 0b5cd599-61ea-4ac7-8f25-c6d3a8b14655 > corrupt or invalid COFF symbol table (undefined static or label symbol) +## Remarks + The compiler-generated content for a section in the given object appears to be corrupt. This error may represent a failure of the compiler. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1318.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1318.md index 8724382c59b..ff326cfc8c0 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1318.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1318.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["LNK1318"] > Unexpected PDB error; *cause* '*details*' +## Remarks + The linker encountered an unexpected error when opening, reading, or writing to a PDB file. This error message is produced for uncommon issues in PDB files. The *cause* and *details* represent the information available to the linker when the failure occurred. This may not be very useful, as common errors when dealing with PDB files have separate, more informative error messages. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1332.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1332.md index 76daff2a88e..98df94d79a2 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1332.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1332.md @@ -10,6 +10,8 @@ ms.assetid: b31d5ca0-c27f-4177-896b-2637dccbde24 > detected\ Windows Runtime types imported in one module and defined in another module +## Remarks + When it produced the current target, the linker detected <`count`> Windows Runtime types, each of which is imported in one module and also defined in another module. ### To correct this error diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1561.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1561.md index cd063749af0..1f4d21b8799 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1561.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1561.md @@ -10,6 +10,8 @@ ms.assetid: cb0b709b-7c9c-4496-8a4e-9e1e4aefe447 > entry point must be defined +## Remarks + The linker did not find an *entry point*, the initial function to call in your executable. By default, the linker looks for a `main` or `wmain` function for a console app, a `WinMain` or `wWinMain` function for a Windows app, or `DllMain` for a DLL that requires initialization. You can specify another function by using the [/ENTRY](../../build/reference/entry-entry-point-symbol.md) linker option. This error can have several causes: From 6eac69aa7d7f3826f3a4e377c74b085efdc78e38 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 21 Sep 2025 17:53:16 +0800 Subject: [PATCH 1896/2255] Replace term "sample" with "example" for error references in range [LNK1221, LNK2000] --- docs/error-messages/tool-errors/linker-tools-error-lnk1237.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1256.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1301.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1306.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1312.md | 4 ++-- docs/error-messages/tool-errors/linker-tools-error-lnk1313.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk1561.md | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1237.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1237.md index 46248f9a0b2..513b0c9d844 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1237.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1237.md @@ -20,7 +20,7 @@ To resolve LNK1237, don't use **`/GL`** to compile the symbol, or use [`/INCLUDE ## Example -The following sample generates LNK1237. To resolve this error, don't initialize the array in `LNK1237_a.cpp` and add **`/include:__chkstk`** to the link command. +The following example generates LNK1237. To resolve this error, don't initialize the array in `LNK1237_a.cpp` and add **`/include:__chkstk`** to the link command. Source file `LNK1237_a.cpp`: diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1256.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1256.md index f6f8c4463bb..a5c596f4890 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1256.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1256.md @@ -20,7 +20,7 @@ Another reason for LNK1256 is a version mismatch between the linker and Alink.dl ## Example -The following sample generates LNK1256: +The following example generates LNK1256: ```cpp // LNK1256.cpp diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1301.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1301.md index d9d55788f58..1127206f9e1 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1301.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1301.md @@ -32,7 +32,7 @@ For more information, see: ## Example -The following sample generates LNK1301: +The following example generates LNK1301: ```cpp // LNK1301.cpp diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1306.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1306.md index 10e0be78b35..680e223b3d4 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1306.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1306.md @@ -32,7 +32,7 @@ For more information, see: ## Example -The following sample generates LNK1306. +The following example generates LNK1306. ```cpp // LNK1306.cpp diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1312.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1312.md index 6fc3c67a2e0..cb0e7b1bc13 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1312.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1312.md @@ -16,7 +16,7 @@ When building an assembly, a file other than a module or assembly compiled with ## Example -The following sample created the .obj file. +The following example created the .obj file. ```cpp // LNK1312.cpp @@ -27,7 +27,7 @@ public: }; ``` -The following sample generates LNK1312. +The following example generates LNK1312. ```cpp // LNK1312_b.cpp diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1313.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1313.md index 0c2d50dc575..bd33db8a61f 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1313.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1313.md @@ -36,7 +36,7 @@ Source file `LNK1313_b.cpp`: void test(){} ``` -The following sample will generate LNK1313. +The following example will generate LNK1313. ```cpp // LNK1313_c.cpp diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1561.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1561.md index 1f4d21b8799..85854ae8bfc 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1561.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1561.md @@ -26,7 +26,7 @@ When building an app, the linker looks for an entry point function to call to st ## Example -The following sample generates LNK1561: +The following example generates LNK1561: ```cpp // LNK1561.cpp From 7870efa150a3e28a807a5dce399573975e3a6c59 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 21 Sep 2025 17:58:19 +0800 Subject: [PATCH 1897/2255] Update metadata for error references in range [LNK1221, LNK2000] --- .../error-messages/tool-errors/linker-tools-error-lnk1221.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1223.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1224.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1237.md | 3 +-- .../error-messages/tool-errors/linker-tools-error-lnk1240.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1241.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1245.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1248.md | 2 +- .../error-messages/tool-errors/linker-tools-error-lnk1256.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1264.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1277.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1282.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1287.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1296.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1301.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1302.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1306.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1309.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1312.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1313.md | 3 +-- .../error-messages/tool-errors/linker-tools-error-lnk1314.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1318.md | 4 ++-- .../error-messages/tool-errors/linker-tools-error-lnk1332.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk1352.md | 4 ++-- .../error-messages/tool-errors/linker-tools-error-lnk1561.md | 5 ++--- 25 files changed, 47 insertions(+), 69 deletions(-) diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1221.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1221.md index 93a42689582..cf0e8c002f1 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1221.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1221.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1221" title: "Linker Tools Error LNK1221" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1221" +ms.date: 11/04/2016 f1_keywords: ["LNK1221"] helpviewer_keywords: ["LNK1221"] -ms.assetid: 70654bf9-1520-4fa3-a063-1219dd88abf7 --- # Linker Tools Error LNK1221 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1223.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1223.md index 86a2b0958ec..5f13930590d 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1223.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1223.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1223" title: "Linker Tools Error LNK1223" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1223" +ms.date: 11/04/2016 f1_keywords: ["LNK1223"] helpviewer_keywords: ["LNK1223"] -ms.assetid: c4728c36-daee-462f-a1c7-8733dcdec88e --- # Linker Tools Error LNK1223 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1224.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1224.md index a66d18efd78..49e0c86b868 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1224.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1224.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1224" title: "Linker Tools Error LNK1224" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1224" +ms.date: 11/04/2016 f1_keywords: ["LNK1224"] helpviewer_keywords: ["LNK1224"] -ms.assetid: e190b5d0-ce0c-4f65-8cc0-753f1cc9758a --- # Linker Tools Error LNK1224 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1237.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1237.md index 513b0c9d844..153938e7ce3 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1237.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1237.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1237" title: "Linker Tools Error LNK1237" +description: "Learn more about: Linker Tools Error LNK1237" ms.date: 06/29/2022 f1_keywords: ["LNK1237"] helpviewer_keywords: ["LNK1237"] -ms.assetid: 8722ffa8-096a-4bb0-85f9-f3aa0e10872a --- # Linker Tools Error LNK1237 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1240.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1240.md index 943a77844f5..74f3f8900d1 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1240.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1240.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1240" title: "Linker Tools Error LNK1240" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1240" +ms.date: 11/04/2016 f1_keywords: ["LNK1240"] helpviewer_keywords: ["LNK1240"] -ms.assetid: 7d0e065d-1015-4df0-8370-79c3cf045e1c --- # Linker Tools Error LNK1240 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1241.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1241.md index 3e05f713541..1c3975105b1 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1241.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1241.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1241" title: "Linker Tools Error LNK1241" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1241" +ms.date: 11/04/2016 f1_keywords: ["LNK1241"] helpviewer_keywords: ["LNK1241"] -ms.assetid: 7b8b52eb-0231-4521-b52a-2bce8d3e8956 --- # Linker Tools Error LNK1241 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1245.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1245.md index 4e2841b6659..5ef7756cbed 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1245.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1245.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1245" title: "Linker Tools Error LNK1245" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1245" +ms.date: 11/04/2016 f1_keywords: ["LNK1245"] helpviewer_keywords: ["LNK1245"] -ms.assetid: 179c8165-ffbb-44cd-9f24-5250f29577cc --- # Linker Tools Error LNK1245 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1248.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1248.md index dcdb91e7292..f0beb0694ef 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1248.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1248.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Linker Tools Error LNK1248" title: "Linker Tools Error LNK1248" +description: "Learn more about: Linker Tools Error LNK1248" ms.date: 08/31/2022 f1_keywords: ["LNK1248"] helpviewer_keywords: ["LNK1248"] diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1256.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1256.md index a5c596f4890..f2b1838e570 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1256.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1256.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1256" title: "Linker Tools Error LNK1256" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1256" +ms.date: 11/04/2016 f1_keywords: ["LNK1256"] helpviewer_keywords: ["LNK1256"] -ms.assetid: 55b64b2b-a56b-436c-a55e-ec9c6dcb050e --- # Linker Tools Error LNK1256 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1264.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1264.md index c1d08ff641f..b95262a2d15 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1264.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1264.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1264" title: "Linker Tools Error LNK1264" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1264" +ms.date: 11/04/2016 f1_keywords: ["LNK1264"] helpviewer_keywords: ["LNK1264"] -ms.assetid: 23b1aad7-d382-42c1-bae8-db68575c57a8 --- # Linker Tools Error LNK1264 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1277.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1277.md index e9260876f57..79b41ded64f 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1277.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1277.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1277" title: "Linker Tools Error LNK1277" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1277" +ms.date: 11/04/2016 f1_keywords: ["LNK1277"] helpviewer_keywords: ["LNK1277"] -ms.assetid: afca3de0-50cc-4140-af7a-13493a170835 --- # Linker Tools Error LNK1277 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1282.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1282.md index 5ce594e5525..2b61b724474 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1282.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1282.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1282" title: "Linker Tools Error LNK1282" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1282" +ms.date: 11/04/2016 f1_keywords: ["LNK1282"] helpviewer_keywords: ["LNK1282"] -ms.assetid: 99c13f52-eb80-46ce-a5b9-4537583e32a9 --- # Linker Tools Error LNK1282 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1287.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1287.md index 66cd6aea56d..00f78ebdfb7 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1287.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1287.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1287" title: "Linker Tools Error LNK1287" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1287" +ms.date: 11/04/2016 f1_keywords: ["LNK1287"] helpviewer_keywords: ["LNK1287"] -ms.assetid: 48dc379d-370c-42f6-8028-5bbcf1cc88bd --- # Linker Tools Error LNK1287 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1296.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1296.md index 1a26baf7a70..608d27548f6 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1296.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1296.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1296" title: "Linker Tools Error LNK1296" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1296" +ms.date: 11/04/2016 f1_keywords: ["LNK1296"] helpviewer_keywords: ["LNK1296"] -ms.assetid: f94a3d18-5411-456b-966f-89810fdcfe60 --- # Linker Tools Error LNK1296 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1301.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1301.md index 1127206f9e1..7cb0c945cef 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1301.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1301.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1301" title: "Linker Tools Error LNK1301" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1301" +ms.date: 11/04/2016 f1_keywords: ["LNK1301"] helpviewer_keywords: ["LNK1301"] -ms.assetid: 760da428-7182-4b25-b20a-de90d4b9a9cd --- # Linker Tools Error LNK1301 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1302.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1302.md index d7b00366943..8a3ef7ae5a2 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1302.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1302.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1302" title: "Linker Tools Error LNK1302" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1302" +ms.date: 11/04/2016 f1_keywords: ["LNK1302"] helpviewer_keywords: ["LNK1302"] -ms.assetid: aea3c753-c2c4-4249-bbc3-f2d4f0164b5e --- # Linker Tools Error LNK1302 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1306.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1306.md index 680e223b3d4..eb8fec1dbf8 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1306.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1306.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1306" title: "Linker Tools Error LNK1306" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1306" +ms.date: 11/04/2016 f1_keywords: ["LNK1306"] helpviewer_keywords: ["LNK1306"] -ms.assetid: fad1df6a-0bd9-412f-b0d1-7c9bc749c584 --- # Linker Tools Error LNK1306 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1309.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1309.md index 3d4c3acd986..821728c7960 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1309.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1309.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1309" title: "Linker Tools Error LNK1309" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1309" +ms.date: 11/04/2016 f1_keywords: ["LNK1309"] helpviewer_keywords: ["LNK1309"] -ms.assetid: 10146071-883f-4849-97d1-c7468f90efbb --- # Linker Tools Error LNK1309 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1312.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1312.md index cb0e7b1bc13..06fc1cabccd 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1312.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1312.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1312" title: "Linker Tools Error LNK1312" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1312" +ms.date: 11/04/2016 f1_keywords: ["LNK1312"] helpviewer_keywords: ["LNK1312"] -ms.assetid: 48284abb-d849-43fc-ab53-45aded14fd8a --- # Linker Tools Error LNK1312 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1313.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1313.md index bd33db8a61f..d32e1e04cdd 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1313.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1313.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1313" title: "Linker Tools Error LNK1313" +description: "Learn more about: Linker Tools Error LNK1313" ms.date: 06/29/2022 f1_keywords: ["LNK1313"] helpviewer_keywords: ["LNK1313"] -ms.assetid: 5df0b72e-bb3f-428c-8d84-6084238f9827 --- # Linker Tools Error LNK1313 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1314.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1314.md index e58a071dbe5..aaa27458f30 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1314.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1314.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1314" title: "Linker Tools Error LNK1314" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1314" +ms.date: 11/04/2016 f1_keywords: ["LNK1314"] helpviewer_keywords: ["LNK1314"] -ms.assetid: 0b5cd599-61ea-4ac7-8f25-c6d3a8b14655 --- # Linker Tools Error LNK1314 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1318.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1318.md index ff326cfc8c0..cf8a6f59de0 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1318.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1318.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Linker Tools Error LNK1318" title: "Linker Tools Error LNK1318" -ms.date: "05/29/2018" +description: "Learn more about: Linker Tools Error LNK1318" +ms.date: 05/29/2018 f1_keywords: ["LNK1318"] helpviewer_keywords: ["LNK1318"] --- diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1332.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1332.md index 98df94d79a2..1c650843fc0 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1332.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1332.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1332" title: "Linker Tools Error LNK1332" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1332" +ms.date: 11/04/2016 f1_keywords: ["LNK1332"] helpviewer_keywords: ["LNK1332"] -ms.assetid: b31d5ca0-c27f-4177-896b-2637dccbde24 --- # Linker Tools Error LNK1332 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1352.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1352.md index c3d83f4fe6f..387d5699946 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1352.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1352.md @@ -1,7 +1,7 @@ --- title: "Linker Tools Error LNK1352" -description: Linker Tools Error LNK1352 occurs when an unsupported section merge is attempted. -ms.date: "09/10/2019" +description: "Linker Tools Error LNK1352 occurs when an unsupported section merge is attempted." +ms.date: 09/10/2019 f1_keywords: ["LNK1352"] helpviewer_keywords: ["LNK1352"] --- diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1561.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1561.md index 85854ae8bfc..38e2cf273a2 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1561.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1561.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK1561" title: "Linker Tools Error LNK1561" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK1561" +ms.date: 11/04/2016 f1_keywords: ["LNK1561"] helpviewer_keywords: ["LNK1561"] -ms.assetid: cb0b709b-7c9c-4496-8a4e-9e1e4aefe447 --- # Linker Tools Error LNK1561 From 9a341508b0a5c6180280281be661fcfe38172ba0 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 21 Sep 2025 21:20:55 +0800 Subject: [PATCH 1898/2255] Update C2154 error message --- docs/error-messages/compiler-errors-1/compiler-error-c2154.md | 2 +- .../compiler-errors-1/compiler-errors-c2100-through-c2199.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2154.md b/docs/error-messages/compiler-errors-1/compiler-error-c2154.md index 021703b64ec..857a965dae8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2154.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2154.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2154"] --- # Compiler Error C2154 -> 'type' : only enumeration type is allowed as an argument to compiler intrinsic type trait '__underlying_type' +> '*type*': only enumeration type is allowed as an argument to compiler intrinsic type trait '__underlying_type' ## Remarks diff --git a/docs/error-messages/compiler-errors-1/compiler-errors-c2100-through-c2199.md b/docs/error-messages/compiler-errors-1/compiler-errors-c2100-through-c2199.md index ef2e8e4b3f9..676b397bbbf 100644 --- a/docs/error-messages/compiler-errors-1/compiler-errors-c2100-through-c2199.md +++ b/docs/error-messages/compiler-errors-1/compiler-errors-c2100-through-c2199.md @@ -69,7 +69,7 @@ The articles in this section of the documentation explain a subset of the error |[Compiler error C2151](compiler-error-c2151.md)|more than one language attribute| |[Compiler error C2152](compiler-error-c2152.md)|'*identifier*': pointers to functions with different attributes| |[Compiler error C2153](compiler-error-c2153.md)|integer literals must have at least one digit| -|[Compiler error C2154](compiler-error-c2154.md)|'*type*': only enumeration type is allowed as an argument to compiler intrinsic type trait '*trait*'| +|[Compiler error C2154](compiler-error-c2154.md)|'*type*': only enumeration type is allowed as an argument to compiler intrinsic type trait '__underlying_type'| |[Compiler error C2155](compiler-error-c2155.md)|'?': invalid left operand, expected arithmetic or pointer type| |[Compiler error C2156](compiler-error-c2156.md)|pragma must be outside function| |[Compiler error C2157](compiler-error-c2157.md)|'*identifier*': must be declared before use in pragma list| From adb67a2fb7ff743e3933477b3480cf7f1b77016d Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 21 Sep 2025 21:26:21 +0800 Subject: [PATCH 1899/2255] Update remarks in C2154 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2154.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2154.md b/docs/error-messages/compiler-errors-1/compiler-error-c2154.md index 857a965dae8..095171b4ea2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2154.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2154.md @@ -11,6 +11,4 @@ helpviewer_keywords: ["C2154"] ## Remarks -You can only get the underlying type of an enumeration type. - -For more information, see [Compiler Support for Type Traits](../../extensions/compiler-support-for-type-traits-cpp-component-extensions.md). +You can only get the underlying type of an [enumeration](../../cpp/enumerations-cpp.md) type. From 99d7aee2fcd94b09b366123f12f91b747b108207 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 21 Sep 2025 21:35:30 +0800 Subject: [PATCH 1900/2255] Add example in C2154 error reference --- .../compiler-errors-1/compiler-error-c2154.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2154.md b/docs/error-messages/compiler-errors-1/compiler-error-c2154.md index 095171b4ea2..635b2dc2d6d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2154.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2154.md @@ -12,3 +12,21 @@ helpviewer_keywords: ["C2154"] ## Remarks You can only get the underlying type of an [enumeration](../../cpp/enumerations-cpp.md) type. + +## Example + +The following example generates C2154: + +```cpp +// C2154.cpp +// compile with: /c + +struct S {}; +enum E {}; +enum class EC {}; + +__underlying_type(S) s; // C2154 +__underlying_type(int) i; // C2154 +__underlying_type(E) e; // OK +__underlying_type(EC) ec; // OK +``` From fade1318e60a192bb7d25d812f097a6cd84789cd Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 21 Sep 2025 21:38:27 +0800 Subject: [PATCH 1901/2255] Add `std::underlying_type` "See also" link in C2154 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2154.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2154.md b/docs/error-messages/compiler-errors-1/compiler-error-c2154.md index 635b2dc2d6d..2140d751a01 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2154.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2154.md @@ -30,3 +30,7 @@ __underlying_type(int) i; // C2154 __underlying_type(E) e; // OK __underlying_type(EC) ec; // OK ``` + +## See also + +[`underlying_type` class](../../standard-library/underlying-type-class.md) From 72be0ba0133af9f56815ec74c83d0e35edeb89ea Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 21 Sep 2025 21:39:26 +0800 Subject: [PATCH 1902/2255] Update `ms.date` metadata in C2154 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2154.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2154.md b/docs/error-messages/compiler-errors-1/compiler-error-c2154.md index 2140d751a01..38192df4ca8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2154.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2154.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C2154" description: "Learn more about: Compiler Error C2154" -ms.date: 11/04/2016 +ms.date: 09/21/2025 f1_keywords: ["C2154"] helpviewer_keywords: ["C2154"] --- From e73699551d98dfe10518d4417e1e12009804a76a Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 21 Sep 2025 22:15:29 +0800 Subject: [PATCH 1903/2255] Add blockquotes for error messages in range [LNK2001, LNK2039] --- docs/error-messages/tool-errors/linker-tools-error-lnk2004.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk2008.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk2011.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk2013.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk2017.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk2020.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk2023.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk2026.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk2027.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk2028.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk2033.md | 2 +- docs/error-messages/tool-errors/linker-tools-error-lnk2039.md | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2004.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2004.md index 79d704a0dc4..4d276ff8208 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2004.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2004.md @@ -8,7 +8,7 @@ ms.assetid: 07645371-e67b-4a2c-b0e0-dde24c94ef7e --- # Linker Tools Error LNK2004 -gp relative fixup overflow to 'target'; short section 'section' is too large or out of range. +> gp relative fixup overflow to 'target'; short section 'section' is too large or out of range. The section was too large. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2008.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2008.md index 1d56c3f3aaf..b97dab486bf 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2008.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2008.md @@ -8,7 +8,7 @@ ms.assetid: bbcd83c5-c8ae-439e-a033-63643a5bb373 --- # Linker Tools Error LNK2008 -Fixup target is not aligned 'symbol_name' +> Fixup target is not aligned 'symbol_name' LINK found a fixup target in your object file that was not aligned properly. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2011.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2011.md index d19042b921a..08bfb04d65c 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2011.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2011.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["LNK2011"] --- # Linker Tools Error LNK2011 -precompiled object not linked in; image may not run +> precompiled object not linked in; image may not run If you use precompiled headers, LINK requires that all of the object files created with precompiled headers must be linked in. If you have a source file that you use to generate a precompiled header for use with other source files, you now must include the object file created along with the precompiled header. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2013.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2013.md index c977734a5a8..16964e9ff53 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2013.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2013.md @@ -8,7 +8,7 @@ ms.assetid: 21408e2d-3f56-4d1f-a031-00df70785ed4 --- # Linker Tools Error LNK2013 -fixup type fixup overflow. Target 'symbol name' is out of range +> fixup type fixup overflow. Target 'symbol name' is out of range The linker cannot fit the necessary address or offset into the given instruction because the target symbol is too far away from the instruction's location. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2017.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2017.md index b0b30a605a4..e27fe6cc63b 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2017.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2017.md @@ -8,7 +8,7 @@ ms.assetid: f7c21733-b0fb-4888-a295-9b453ba6ee77 --- # Linker Tools Error LNK2017 -'symbol' relocation to 'segment' invalid without /LARGEADDRESSAWARE:NO +> 'symbol' relocation to 'segment' invalid without /LARGEADDRESSAWARE:NO You are trying to build a 64-bit image with 32-bit addresses. To do this, you must: diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2020.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2020.md index e9711b9f715..b46c8fca6e0 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2020.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2020.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["LNK2020"] --- # Linker Tools Error LNK2020 -unresolved token 'token' +> unresolved token 'token' Similar to an undefined external error, except that the reference is via metadata. In metadata, all functions and data must be defined. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2023.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2023.md index 3294c30bff2..ac647624419 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2023.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2023.md @@ -8,7 +8,7 @@ ms.assetid: c99e35a8-739a-4a20-a715-29b8c3744703 --- # Linker Tools Error LNK2023 -bad dll or entry point \ +> bad dll or entry point \ The linker is loading an incorrect version of msobj90.dll. Ensure that link.exe and msobj90.dll in your path have the same version. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2026.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2026.md index f1018137f86..d1280af2d02 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2026.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2026.md @@ -8,6 +8,6 @@ ms.assetid: 9955bf7c-59b5-4fa1-8481-147db0d7df45 --- # Linker Tools Error LNK2026 -module unsafe for SAFESEH image +> module unsafe for SAFESEH image [/SAFESEH](../../build/reference/safeseh-image-has-safe-exception-handlers.md) was specified, but a module was not compatible with the safe exception handling feature. If you want to use this module with **/SAFESEH**, then you will need to recompile the module. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2027.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2027.md index 7b2c24ce08e..f70a1bd5ad9 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2027.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2027.md @@ -8,7 +8,7 @@ ms.assetid: e2f857a8-8e8a-4697-bbff-12ccb84a35c1 --- # Linker Tools Error LNK2027 -unresolved module reference 'module' +> unresolved module reference 'module' A file passed to the linker has a dependency on a module that was neither specified with **/ASSEMBLYMODULE** nor passed directly to the linker. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2028.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2028.md index a43928ba548..9205379e804 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2028.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2028.md @@ -8,7 +8,7 @@ ms.assetid: e2b03293-6066-464d-a050-ce747bcf7f0e --- # Linker Tools Error LNK2028 -"*exported_function*" (*decorated_name*) referenced in function "*function_containing_function_call*" (*decorated_name*) +> "*exported_function*" (*decorated_name*) referenced in function "*function_containing_function_call*" (*decorated_name*) ## Remarks diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2033.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2033.md index ca0deb3ce26..c42a45c5741 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2033.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2033.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["LNK2033"] --- # Linker Tools Error LNK2033 -unresolved typeref token (token) for 'type' +> unresolved typeref token (token) for 'type' A type doesn't have a definition in MSIL metadata. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2039.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2039.md index 1f0ffa47935..1146fca23f0 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2039.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2039.md @@ -8,7 +8,7 @@ ms.assetid: eaa296bd-4901-41f6-8410-6d03ee827144 --- # Linker Tools Error LNK2039 -importing ref class '\' that is defined in another.obj; it should be either imported or defined, but not both +> importing ref class '\' that is defined in another.obj; it should be either imported or defined, but not both The ref class '<`type`>' is imported in the specified .obj file but is also defined in another .obj file. This condition can cause runtime failure or other unexpected behavior. From 6fbee14a917b793ce368bb1986c5345d03f885ef Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 21 Sep 2025 22:21:22 +0800 Subject: [PATCH 1904/2255] Add "Remarks" and "Example" headings for error references in range [LNK2001, LNK2039] --- docs/error-messages/tool-errors/linker-tools-error-lnk2001.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk2004.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk2005.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk2008.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk2011.md | 4 ++++ docs/error-messages/tool-errors/linker-tools-error-lnk2013.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk2017.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk2019.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk2020.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk2023.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk2026.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk2027.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk2033.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk2038.md | 2 ++ docs/error-messages/tool-errors/linker-tools-error-lnk2039.md | 2 ++ 15 files changed, 32 insertions(+) diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2001.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2001.md index 4b3626bc8fe..55c731e83c2 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2001.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2001.md @@ -10,6 +10,8 @@ ms.assetid: dc1cf267-c984-486c-abd2-fd07c799f7ef > unresolved external symbol "*symbol*" +## Remarks + The compiled code makes a reference or call to *symbol*. The symbol isn't defined in any libraries or object files searched by the linker. This error message is followed by fatal error [LNK1120](../../error-messages/tool-errors/linker-tools-error-lnk1120.md). To fix error LNK1120, first fix all LNK2001 and LNK2019 errors. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2004.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2004.md index 4d276ff8208..e3d53eb5455 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2004.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2004.md @@ -10,6 +10,8 @@ ms.assetid: 07645371-e67b-4a2c-b0e0-dde24c94ef7e > gp relative fixup overflow to 'target'; short section 'section' is too large or out of range. +## Remarks + The section was too large. To resolve this error, reduce the size of the short section, either by explicitly putting data in the long sections via #pragma section(".sectionname", read, write, long) and using `__declspec(allocate(".sectionname"))` on data definitions and declarations. For example, diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2005.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2005.md index 68ddf0e345b..136f527eb13 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2005.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2005.md @@ -10,6 +10,8 @@ ms.assetid: d9587adc-68be-425c-8a30-15dbc86717a4 > *symbol* already defined in object +## Remarks + The symbol *symbol* was defined more than once. This error is followed by fatal error [LNK1169](../../error-messages/tool-errors/linker-tools-error-lnk1169.md). diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2008.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2008.md index b97dab486bf..d2356d8a669 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2008.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2008.md @@ -10,6 +10,8 @@ ms.assetid: bbcd83c5-c8ae-439e-a033-63643a5bb373 > Fixup target is not aligned 'symbol_name' +## Remarks + LINK found a fixup target in your object file that was not aligned properly. This error can be caused by custom secton alignment (for example, #pragma [pack](../../preprocessor/pack.md)), [align](../../cpp/align-cpp.md) modifier, or by using assembly language code that modifies secton alignment. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2011.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2011.md index 08bfb04d65c..1e4c6ffb5ee 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2011.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2011.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["LNK2011"] > precompiled object not linked in; image may not run +## Remarks + If you use precompiled headers, LINK requires that all of the object files created with precompiled headers must be linked in. If you have a source file that you use to generate a precompiled header for use with other source files, you now must include the object file created along with the precompiled header. +## Example + For example, if you compile a file called STUB.cpp to create a precompiled header for use with other source files, you must link with STUB.obj or you will get this error. In the following command lines, line one is used to create a precompiled header, COMMON.pch, which is used with PROG1.cpp and PROG2.cpp in lines two and three. The file STUB.cpp contains only `#include` lines (the same `#include` lines as in PROG1.cpp and PROG2.cpp) and is used only to generate precompiled headers. In the last line, STUB.obj must be linked in to avoid LNK2011. ```cmd diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2013.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2013.md index 16964e9ff53..033ebcd3ec3 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2013.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2013.md @@ -10,6 +10,8 @@ ms.assetid: 21408e2d-3f56-4d1f-a031-00df70785ed4 > fixup type fixup overflow. Target 'symbol name' is out of range +## Remarks + The linker cannot fit the necessary address or offset into the given instruction because the target symbol is too far away from the instruction's location. You can resolve this problem by creating multiple images or by using the [/ORDER](../../build/reference/order-put-functions-in-order.md) option so the instruction and target are closer together. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2017.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2017.md index e27fe6cc63b..553dd780069 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2017.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2017.md @@ -10,6 +10,8 @@ ms.assetid: f7c21733-b0fb-4888-a295-9b453ba6ee77 > 'symbol' relocation to 'segment' invalid without /LARGEADDRESSAWARE:NO +## Remarks + You are trying to build a 64-bit image with 32-bit addresses. To do this, you must: - Use a fixed load address. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2019.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2019.md index a12ad9a170c..127ed81886f 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2019.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2019.md @@ -10,6 +10,8 @@ no-loc: [main, WinMain, wmain, wWinMain, __cdecl, __stdcall, __fastcall, __vecto > unresolved external symbol '*symbol*' referenced in function '*function*' +## Remarks + The compiled code for *function* makes a reference or call to *symbol*, but the linker can't find the symbol definition in any of the libraries or object files. This error message is followed by fatal error [LNK1120](../../error-messages/tool-errors/linker-tools-error-lnk1120.md). To fix error LNK1120, you must fix all LNK2001 and LNK2019 errors first. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2020.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2020.md index b46c8fca6e0..2ab4cf04ce0 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2020.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2020.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["LNK2020"] > unresolved token 'token' +## Remarks + Similar to an undefined external error, except that the reference is via metadata. In metadata, all functions and data must be defined. To resolve: diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2023.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2023.md index ac647624419..6c61d5141db 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2023.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2023.md @@ -10,6 +10,8 @@ ms.assetid: c99e35a8-739a-4a20-a715-29b8c3744703 > bad dll or entry point \ +## Remarks + The linker is loading an incorrect version of msobj90.dll. Ensure that link.exe and msobj90.dll in your path have the same version. A dependency of msobj90.dll may not be present. The dependency list for msobj90.dll is: diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2026.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2026.md index d1280af2d02..43ca5a14f3f 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2026.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2026.md @@ -10,4 +10,6 @@ ms.assetid: 9955bf7c-59b5-4fa1-8481-147db0d7df45 > module unsafe for SAFESEH image +## Remarks + [/SAFESEH](../../build/reference/safeseh-image-has-safe-exception-handlers.md) was specified, but a module was not compatible with the safe exception handling feature. If you want to use this module with **/SAFESEH**, then you will need to recompile the module. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2027.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2027.md index f70a1bd5ad9..46178544ba1 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2027.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2027.md @@ -10,6 +10,8 @@ ms.assetid: e2f857a8-8e8a-4697-bbff-12ccb84a35c1 > unresolved module reference 'module' +## Remarks + A file passed to the linker has a dependency on a module that was neither specified with **/ASSEMBLYMODULE** nor passed directly to the linker. To resolve LNK2027, do one of the following: diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2033.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2033.md index c42a45c5741..61b6bf7d427 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2033.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2033.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["LNK2033"] > unresolved typeref token (token) for 'type' +## Remarks + A type doesn't have a definition in MSIL metadata. LNK2033 can occur when compiling with **/clr:safe** and where there is only a forward declaration for a type in an MSIL module, where the type is referenced in the MSIL module. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2038.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2038.md index 8162a57997d..d57b2b4cbcd 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2038.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2038.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["LNK2038"] > mismatch detected for '*name*': value '*value_1*' doesn't match value '*value_2*' in *filename.obj* +## Remarks + A symbol mismatch has been detected by the linker. This error indicates that different parts of an app, including libraries or other object code that the app links to, use conflicting definitions of the symbol. The [detect mismatch](../../preprocessor/detect-mismatch.md) pragma is used to define such symbols and detect their conflicting values. ## Possible causes and solutions diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2039.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2039.md index 1146fca23f0..5b565e432dd 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2039.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2039.md @@ -10,6 +10,8 @@ ms.assetid: eaa296bd-4901-41f6-8410-6d03ee827144 > importing ref class '\' that is defined in another.obj; it should be either imported or defined, but not both +## Remarks + The ref class '<`type`>' is imported in the specified .obj file but is also defined in another .obj file. This condition can cause runtime failure or other unexpected behavior. ### To correct this error From 14631c5b3cbf628bdc46499de8dbb6e4e7a592f7 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 21 Sep 2025 22:23:29 +0800 Subject: [PATCH 1905/2255] Replace term "sample" with "example" for error references in range [LNK2001, LNK2039] --- .../tool-errors/linker-tools-error-lnk2019.md | 8 ++++---- .../tool-errors/linker-tools-error-lnk2020.md | 4 ++-- .../tool-errors/linker-tools-error-lnk2028.md | 4 ++-- .../tool-errors/linker-tools-error-lnk2031.md | 6 +++--- .../tool-errors/linker-tools-error-lnk2033.md | 2 +- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2019.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2019.md index 127ed81886f..8c07ef83d0f 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2019.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2019.md @@ -145,7 +145,7 @@ Unless `i` and `g` are defined in one of the files included in the build, the li ### A static data member is declared but not defined -LNK2019 can also occur when a static data member is declared but not defined. The following sample generates LNK2019, and shows how to fix it. +LNK2019 can also occur when a static data member is declared but not defined. The following example generates LNK2019, and shows how to fix it. ```cpp // LNK2019b.cpp @@ -166,7 +166,7 @@ int main() { ### Declaration parameters don't match the definition -Code that invokes function templates must have matching function template declarations. Declarations must include the same template parameters as the definition. The following sample generates LNK2019 on a user-defined operator, and shows how to fix it. +Code that invokes function templates must have matching function template declarations. Declarations must include the same template parameters as the definition. The following example generates LNK2019 on a user-defined operator, and shows how to fix it. ```cpp // LNK2019e.cpp @@ -196,7 +196,7 @@ int main() { ### Inconsistent wchar_t type definitions -This sample creates a DLL that has an export that uses `WCHAR`, which resolves to **`wchar_t`**. +This example creates a DLL that has an export that uses `WCHAR`, which resolves to **`wchar_t`**. ```cpp // LNK2019g.cpp @@ -206,7 +206,7 @@ This sample creates a DLL that has an export that uses `WCHAR`, which resolves t __declspec(dllexport) void func(WCHAR*) {} ``` -The next sample uses the DLL in the previous sample, and generates LNK2019 because the types `unsigned short*` and `WCHAR*` aren't the same. +The next example uses the DLL in the previous example, and generates LNK2019 because the types `unsigned short*` and `WCHAR*` aren't the same. ```cpp // LNK2019h.cpp diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2020.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2020.md index 2ab4cf04ce0..67a107c88ec 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2020.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2020.md @@ -21,7 +21,7 @@ To resolve: ## Examples -The following sample generates LNK2020. +The following example generates LNK2020. ```cpp // LNK2020.cpp @@ -40,7 +40,7 @@ ref struct B { LNK2020 will also occur if you create a variable of a managed template type, but do not also instantiate the type. -The following sample generates LNK2020. +The following example generates LNK2020. ```cpp // LNK2020_b.cpp diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2028.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2028.md index 9205379e804..a38c878f50f 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2028.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2028.md @@ -18,7 +18,7 @@ The **/clr:pure** compiler option is deprecated in Visual Studio 2015 and unsupp ## Examples -This code sample generates a component with an exported, native, function whose calling convention is implicitly [__cdecl](../../cpp/cdecl.md). +This code example generates a component with an exported, native, function whose calling convention is implicitly [__cdecl](../../cpp/cdecl.md). ```cpp // LNK2028.cpp @@ -28,7 +28,7 @@ __declspec(dllexport) int func() { } ``` -The following sample creates a pure client that consumes the native function. However, the calling convention under **/clr:pure** is [__clrcall](../../cpp/clrcall.md). The following sample generates LNK2028. +The following example creates a pure client that consumes the native function. However, the calling convention under **/clr:pure** is [__clrcall](../../cpp/clrcall.md). The following example generates LNK2028. ```cpp // LNK2028_b.cpp diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2031.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2031.md index f95b8cc24b0..4a4c562eee3 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2031.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2031.md @@ -18,7 +18,7 @@ The **/clr:pure** compiler option is deprecated in Visual Studio 2015 and unsupp ## Examples -This code sample generates a component with an exported, native, function whose calling convention is implicitly [__cdecl](../../cpp/cdecl.md). +This code example generates a component with an exported, native, function whose calling convention is implicitly [__cdecl](../../cpp/cdecl.md). ```cpp // LNK2031.cpp @@ -28,7 +28,7 @@ extern "C" { }; ``` -The following sample creates a pure client that consumes the native function. However, the calling convention under **/clr:pure** is [__clrcall](../../cpp/clrcall.md). The following sample generates LNK2031. +The following example creates a pure client that consumes the native function. However, the calling convention under **/clr:pure** is [__clrcall](../../cpp/clrcall.md). The following example generates LNK2031. ```cpp // LNK2031_b.cpp @@ -41,7 +41,7 @@ int main() { } ``` -The following sample shows how to consume the native function from a pure image. Note the explicit **`__cdecl`** calling convention specifier. +The following example shows how to consume the native function from a pure image. Note the explicit **`__cdecl`** calling convention specifier. ```cpp // LNK2031_c.cpp diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2033.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2033.md index 61b6bf7d427..2e84c4cfbc7 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2033.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2033.md @@ -21,7 +21,7 @@ For more information, see [/clr (Common Language Runtime Compilation)](../../bui ## Example -The following sample generates LNK2033. +The following example generates LNK2033. ```cpp // LNK2033.cpp From 4c42cd4f16607a0551311d5074340585a6eeae60 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 21 Sep 2025 22:26:38 +0800 Subject: [PATCH 1906/2255] Update metadata for error references in range [LNK2001, LNK2039] --- .../error-messages/tool-errors/linker-tools-error-lnk2001.md | 3 +-- .../error-messages/tool-errors/linker-tools-error-lnk2004.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk2005.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk2008.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk2013.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk2017.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk2023.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk2026.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk2027.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk2028.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk2031.md | 5 ++--- .../error-messages/tool-errors/linker-tools-error-lnk2038.md | 4 ++-- .../error-messages/tool-errors/linker-tools-error-lnk2039.md | 5 ++--- 13 files changed, 25 insertions(+), 37 deletions(-) diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2001.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2001.md index 55c731e83c2..15a53502f97 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2001.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2001.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK2001" title: "Linker Tools Error LNK2001" +description: "Learn more about: Linker Tools Error LNK2001" ms.date: 10/22/2021 f1_keywords: ["LNK2001"] helpviewer_keywords: ["LNK2001"] -ms.assetid: dc1cf267-c984-486c-abd2-fd07c799f7ef --- # Linker Tools Error LNK2001 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2004.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2004.md index e3d53eb5455..2d6d59c7ec4 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2004.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2004.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK2004" title: "Linker Tools Error LNK2004" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK2004" +ms.date: 11/04/2016 f1_keywords: ["LNK2004"] helpviewer_keywords: ["LNK2004"] -ms.assetid: 07645371-e67b-4a2c-b0e0-dde24c94ef7e --- # Linker Tools Error LNK2004 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2005.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2005.md index 136f527eb13..32354e573ea 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2005.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2005.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK2005" title: "Linker Tools Error LNK2005" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK2005" +ms.date: 11/04/2016 f1_keywords: ["LNK2005"] helpviewer_keywords: ["LNK2005"] -ms.assetid: d9587adc-68be-425c-8a30-15dbc86717a4 --- # Linker Tools Error LNK2005 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2008.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2008.md index d2356d8a669..e5cf01c5917 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2008.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2008.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK2008" title: "Linker Tools Error LNK2008" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK2008" +ms.date: 11/04/2016 f1_keywords: ["LNK2008"] helpviewer_keywords: ["LNK2008"] -ms.assetid: bbcd83c5-c8ae-439e-a033-63643a5bb373 --- # Linker Tools Error LNK2008 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2013.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2013.md index 033ebcd3ec3..c45fba1baeb 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2013.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2013.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK2013" title: "Linker Tools Error LNK2013" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK2013" +ms.date: 11/04/2016 f1_keywords: ["LNK2013"] helpviewer_keywords: ["LNK2013"] -ms.assetid: 21408e2d-3f56-4d1f-a031-00df70785ed4 --- # Linker Tools Error LNK2013 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2017.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2017.md index 553dd780069..8ec341849b6 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2017.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2017.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK2017" title: "Linker Tools Error LNK2017" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK2017" +ms.date: 11/04/2016 f1_keywords: ["LNK2017"] helpviewer_keywords: ["LNK2017"] -ms.assetid: f7c21733-b0fb-4888-a295-9b453ba6ee77 --- # Linker Tools Error LNK2017 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2023.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2023.md index 6c61d5141db..9cafc696e3a 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2023.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2023.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK2023" title: "Linker Tools Error LNK2023" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK2023" +ms.date: 11/04/2016 f1_keywords: ["LNK2023"] helpviewer_keywords: ["LNK2023"] -ms.assetid: c99e35a8-739a-4a20-a715-29b8c3744703 --- # Linker Tools Error LNK2023 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2026.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2026.md index 43ca5a14f3f..13bf2776bd7 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2026.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2026.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK2026" title: "Linker Tools Error LNK2026" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK2026" +ms.date: 11/04/2016 f1_keywords: ["LNK2026"] helpviewer_keywords: ["LNK2026"] -ms.assetid: 9955bf7c-59b5-4fa1-8481-147db0d7df45 --- # Linker Tools Error LNK2026 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2027.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2027.md index 46178544ba1..c95f4d0ad62 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2027.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2027.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK2027" title: "Linker Tools Error LNK2027" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK2027" +ms.date: 11/04/2016 f1_keywords: ["LNK2027"] helpviewer_keywords: ["LNK2027"] -ms.assetid: e2f857a8-8e8a-4697-bbff-12ccb84a35c1 --- # Linker Tools Error LNK2027 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2028.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2028.md index a38c878f50f..82760815f9d 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2028.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2028.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK2028" title: "Linker Tools Error LNK2028" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK2028" +ms.date: 11/04/2016 f1_keywords: ["LNK2028"] helpviewer_keywords: ["LNK2028"] -ms.assetid: e2b03293-6066-464d-a050-ce747bcf7f0e --- # Linker Tools Error LNK2028 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2031.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2031.md index 4a4c562eee3..69581fa9667 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2031.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2031.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK2031" title: "Linker Tools Error LNK2031" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK2031" +ms.date: 11/04/2016 f1_keywords: ["LNK2031"] helpviewer_keywords: ["LNK2031"] -ms.assetid: 18ed4b6e-3e75-443c-bbd8-2f6030dc89ee --- # Linker Tools Error LNK2031 diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2038.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2038.md index d57b2b4cbcd..64c8c87a92e 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2038.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2038.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Linker Tools Error LNK2038" title: "Linker Tools Error LNK2038" -ms.date: "12/15/2017" +description: "Learn more about: Linker Tools Error LNK2038" +ms.date: 12/15/2017 f1_keywords: ["LNK2038"] helpviewer_keywords: ["LNK2038"] --- diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk2039.md b/docs/error-messages/tool-errors/linker-tools-error-lnk2039.md index 5b565e432dd..6f441c91161 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk2039.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk2039.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Error LNK2039" title: "Linker Tools Error LNK2039" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Error LNK2039" +ms.date: 11/04/2016 f1_keywords: ["LNK2039"] helpviewer_keywords: ["LNK2039"] -ms.assetid: eaa296bd-4901-41f6-8410-6d03ee827144 --- # Linker Tools Error LNK2039 From 94eff3456d3374d388d6be95f786dca941a2feb3 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Mon, 22 Sep 2025 22:39:41 +0800 Subject: [PATCH 1907/2255] Add blockquotes for warning messages in range [LNK4001, LNK4105] --- docs/error-messages/tool-errors/linker-tools-warning-lnk4001.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4002.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4006.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4010.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4014.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4022.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4037.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4039.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4044.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4065.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4070.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4071.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4073.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4075.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4076.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4078.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4086.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4092.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4096.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4099.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4102.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4104.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4105.md | 2 +- 23 files changed, 23 insertions(+), 23 deletions(-) diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4001.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4001.md index acead2979da..06cf586b281 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4001.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4001.md @@ -8,7 +8,7 @@ ms.assetid: 0a8b1c3a-64ce-4311-b7c0-065995059246 --- # Linker Tools Warning LNK4001 -no object files specified; libraries used +> no object files specified; libraries used The linker was passed one or more .lib files, but no .obj files. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4002.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4002.md index ac15b1573cc..27ad399e6be 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4002.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4002.md @@ -8,6 +8,6 @@ ms.assetid: 09f81af5-e51c-496c-a6eb-2863e85375c3 --- # Linker Tools Warning LNK4002 -symbol defined in object +> symbol defined in object The symbol, displayed in its decorated form, was specified in its undecorated form in `object`, but a unique match to a decorated symbol could not be found. This warning is always preceded by warning [LNK4022](../../error-messages/tool-errors/linker-tools-warning-lnk4022.md) and followed by fatal error [LNK1152](../../error-messages/tool-errors/linker-tools-error-lnk1152.md). diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4006.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4006.md index b53d91f7c4a..33284094cde 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4006.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4006.md @@ -8,7 +8,7 @@ ms.assetid: 3a637d17-1676-4ea6-bd8b-290137d28d3b --- # Linker Tools Warning LNK4006 -symbol already defined in object; second definition ignored +> symbol already defined in object; second definition ignored The given `symbol`, displayed in its decorated form, was multiply defined. When this warning is encountered, `symbol` will be added twice, but only its first form will be used. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4010.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4010.md index 64f217c9de3..64839f0e4fe 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4010.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4010.md @@ -8,6 +8,6 @@ ms.assetid: 2824cf99-4174-4b60-a6e2-c01e9f1ee52d --- # Linker Tools Warning LNK4010 -invalid subsystem version number number; default subsystem version assumed +> invalid subsystem version number number; default subsystem version assumed You can specify a version for the image's subsystem ([/SUBSYSTEM](../../build/reference/subsystem-specify-subsystem.md)). Each subsystem has a minimum version requirement. If the specified version is lower than the minimum, this warning will occur and the linker will just use the default subsystem. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4014.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4014.md index fed59984e71..d547f50a91b 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4014.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4014.md @@ -8,7 +8,7 @@ ms.assetid: 394903e9-3ded-4ea4-b7c0-a3535d4b4da4 --- # Linker Tools Warning LNK4014 -cannot find member object "objectname" +> cannot find member object "objectname" LIB could not find `objectname` in the library. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4022.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4022.md index 49b2a8b1866..472f2a6f56e 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4022.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4022.md @@ -8,7 +8,7 @@ ms.assetid: 890f487e-db98-45dd-a226-c7ccead82b1e --- # Linker Tools Warning LNK4022 -cannot find unique match for symbol 'symbol' +> cannot find unique match for symbol 'symbol' LINK or LIB found multiple matches for the given undecorated symbol and it could not resolve the ambiguity. No output file (.exe, .dll, .exp, or .lib) is produced. This warning is followed by one warning [LNK4002](../../error-messages/tool-errors/linker-tools-warning-lnk4002.md) for each duplicate symbol and is finally followed by fatal error [LNK1152](../../error-messages/tool-errors/linker-tools-error-lnk1152.md). diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4037.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4037.md index 271d321252a..e9351139923 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4037.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4037.md @@ -8,7 +8,7 @@ ms.assetid: 9ba02fd3-b04f-4679-bab9-26fa82cf09bb --- # Linker Tools Warning LNK4037 ->'*symbol*' does not exist; ignored +> '*symbol*' does not exist; ignored The decorated name *symbol* could not be ordered by using the [/ORDER](../../build/reference/order-put-functions-in-order.md) option because it could not be found in the program. Check the specification of *symbol* in the order response file. For more information, see the [/ORDER (Put functions in order)](../../build/reference/order-put-functions-in-order.md) linker option. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4039.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4039.md index 408939d9f3f..b60c604ec91 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4039.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4039.md @@ -8,7 +8,7 @@ ms.assetid: ed7b1783-a7b2-4d3e-8afb-ca1648dae2c2 --- # Linker Tools Warning LNK4039 -section 'name' specified with /SECTION option does not exist +> section 'name' specified with /SECTION option does not exist [DUMPBIN](../../build/reference/dumpbin-reference.md) or [EDITBIN](../../build/reference/editbin-reference.md) could not find a section called `name` in the input file. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4044.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4044.md index 6f46ad0a097..dbf17074b7c 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4044.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4044.md @@ -8,7 +8,7 @@ ms.assetid: f3a67a15-98c0-42ed-afcb-f5f9540e2671 --- # Linker Tools Warning LNK4044 -unrecognized option 'option'; ignored +> unrecognized option 'option'; ignored The given option is not a valid option for this tool. The tool ignored the option. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4065.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4065.md index 0313df14016..c08cf9e68ad 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4065.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4065.md @@ -8,6 +8,6 @@ ms.assetid: aa5c9e2c-9ad3-4460-8605-4c12bbc6d423 --- # Linker Tools Warning LNK4065 -'function' cannot be ordered; ignored +> 'function' cannot be ordered; ignored The given function was not compiled as a packaged function. Recompile using [/Gy](../../build/reference/gy-enable-function-level-linking.md). diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4070.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4070.md index 2d4a8c774ae..965dcc80f53 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4070.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4070.md @@ -8,7 +8,7 @@ ms.assetid: f95f179a-fff9-427e-bd51-466b3934517f --- # Linker Tools Warning LNK4070 -/OUT:filename directive in .EXP differs from output filename 'filename'; ignoring directive +> /OUT:filename directive in .EXP differs from output filename 'filename'; ignoring directive The `filename` specified in the [NAME](../../build/reference/name-c-cpp.md) or [LIBRARY](../../build/reference/library.md) statement when the .exp file was created differs from the output `filename` that was either assumed by default or specified with the [/OUT](../../build/reference/out-output-file-name.md) option. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4071.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4071.md index 83437b5126a..b488f5dedf4 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4071.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4071.md @@ -8,6 +8,6 @@ ms.assetid: 803f8c34-8219-4f55-a4ae-7133ceff2ba3 --- # Linker Tools Warning LNK4071 -cannot be incrementally linked on subsequent links +> cannot be incrementally linked on subsequent links LINK found multiple definitions for one or more symbols, but [/FORCE](../../build/reference/force-force-file-output.md) or **/FORCE:MULTIPLE** was used to create an output file regardless of errors. LINK deleted the incremental status (.ilk) file. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4073.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4073.md index 121c6eaadbc..ac2193be713 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4073.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4073.md @@ -8,6 +8,6 @@ ms.assetid: a0c80242-3395-45bd-bbe7-4f31d7ac9e3a --- # Linker Tools Warning LNK4073 -cannot create map for .ilk file; linking nonincrementally +> cannot create map for .ilk file; linking nonincrementally There was not a large enough contiguous space in shared memory for LINK to create the incremental status (.ilk) file. LINK performed a nonincremental build. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4075.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4075.md index d68c11580e0..30f0cac408f 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4075.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4075.md @@ -8,7 +8,7 @@ ms.assetid: f39ad3f9-c263-4cf0-9d70-259fc56ac96d --- # Linker Tools Warning LNK4075 -ignoring "option1" due to "option2" specification +> ignoring "option1" due to "option2" specification The second option overrides the first. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4076.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4076.md index 34b7ca35901..b2d7adb6578 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4076.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4076.md @@ -8,6 +8,6 @@ ms.assetid: c424d43b-abb3-4df4-be66-8907b859a555 --- # Linker Tools Warning LNK4076 -invalid incremental status file 'filename'; linking nonincrementally +> invalid incremental status file 'filename'; linking nonincrementally LINK cannot write to the incremental status (.ilk) file. Either `filename` is corrupt or it is not an incremental linking database. Remove the file and relink. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4078.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4078.md index 407078f7750..7b2a90535da 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4078.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4078.md @@ -8,7 +8,7 @@ ms.assetid: 5a16796d-6caf-42d9-8f65-b042843eafb8 --- # Linker Tools Warning LNK4078 -multiple 'section name' sections found with different attributes +> multiple 'section name' sections found with different attributes LINK found two or more sections that have the same name but different attributes. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4086.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4086.md index c41c539e819..e8e1018f2ea 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4086.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4086.md @@ -8,6 +8,6 @@ ms.assetid: ea1eecbb-ba2c-41bb-9a4f-fa0808a4b92d --- # Linker Tools Warning LNK4086 -entrypoint 'function' is not __stdcall with 'number' bytes of arguments; image may not run +> entrypoint 'function' is not __stdcall with 'number' bytes of arguments; image may not run The entry point for a DLL must be **`__stdcall`**. Either recompile the function with the [/Gz](../../build/reference/gd-gr-gv-gz-calling-convention.md) option or specify **`__stdcall`** or WINAPI when you define the function. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4092.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4092.md index 952fb421cd8..096ed29b875 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4092.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4092.md @@ -8,7 +8,7 @@ ms.assetid: d569ec47-a338-40e1-940b-8a8061459acb --- # Linker Tools Warning LNK4092 -shared writable section 'section' contains relocations; image may not run correctly +> shared writable section 'section' contains relocations; image may not run correctly The linker emits this warning whenever you have a shared section to warn you of a potentially serious problem. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4096.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4096.md index 51afe7b4cf2..e42a95d3bd6 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4096.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4096.md @@ -8,6 +8,6 @@ ms.assetid: ef6fba38-59a1-4d86-bcac-cadf44d87a36 --- # Linker Tools Warning LNK4096 -/BASE value "number" is invalid for Windows 95 and Windows 98; image may not run +> /BASE value "number" is invalid for Windows 95 and Windows 98; image may not run The base address you specified is invalid. Windows 95 and Windows 98 executable files must have a base address greater than 0x400000. For more information on base addresses, see the [/BASE](../../build/reference/base-base-address.md) linker option. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4099.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4099.md index 1883d934dfa..73c42ce6f4a 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4099.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4099.md @@ -8,7 +8,7 @@ ms.assetid: 358170a4-07cd-43fe-918f-82c32757ffc5 --- # Linker Tools Warning LNK4099 -PDB 'filename' was not found with 'object/library' or at 'path'; linking object as if no debug info +> PDB 'filename' was not found with 'object/library' or at 'path'; linking object as if no debug info The linker was unable to find your .pdb file. Copy it into the directory that contains `object/library`. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4102.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4102.md index 126e92d5743..6979bf753e0 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4102.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4102.md @@ -8,7 +8,7 @@ ms.assetid: bfd1b17e-05c7-4bc2-80d6-2888b1a425b2 --- # Linker Tools Warning LNK4102 -export of deleting destructor 'name'; image may not run correctly +> export of deleting destructor 'name'; image may not run correctly The program has attempted to export a deleting destructor. The resulting delete may occur across a DLL boundary such that a process can free memory that it does not own. Make sure that the given symbol is not listed in your .def file, and that the symbol is not listed as an argument of the **/IMPORT** or **/EXPORT** option in the linker command line. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4104.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4104.md index 3b3226b097e..b6729975052 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4104.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4104.md @@ -8,7 +8,7 @@ ms.assetid: ca6728db-d616-419a-a570-65e8445c6079 --- # Linker Tools Warning LNK4104 -export of symbol 'symbol' should be PRIVATE +> export of symbol 'symbol' should be PRIVATE The `symbol` can be one of the following: diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4105.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4105.md index 260ed1245f6..b08a98299bb 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4105.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4105.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["LNK4105"] --- # Linker Tools Warning LNK4105 -no argument specified with option 'option'; ignoring option +> no argument specified with option 'option'; ignoring option This warning occurs only when the [/LIBPATH](../../build/reference/libpath-additional-libpath.md) option is set. If no directory is specified with this option, then the linker ignores the option and generates this warning message. From 6db3e20542dad84b95c28b03048fee9b613bdaad Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Mon, 22 Sep 2025 22:43:29 +0800 Subject: [PATCH 1908/2255] Add "Remarks" headings for warning references in range [LNK4001, LNK4105] --- .../tool-errors/linker-tools-warning-lnk4001.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4002.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4006.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4010.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4014.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4020.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4022.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4037.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4039.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4044.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4049.md | 4 ++-- .../tool-errors/linker-tools-warning-lnk4065.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4070.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4071.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4073.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4075.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4076.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4078.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4086.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4092.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4096.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4098.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4099.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4102.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4104.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4105.md | 2 ++ 26 files changed, 52 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4001.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4001.md index 06cf586b281..48e1299152e 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4001.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4001.md @@ -10,6 +10,8 @@ ms.assetid: 0a8b1c3a-64ce-4311-b7c0-065995059246 > no object files specified; libraries used +## Remarks + The linker was passed one or more .lib files, but no .obj files. Because the linker is not able to access information in a .lib file that it is able to access in an .obj file, this warning indicates that you will have to explicitly specify other linker options. For example, you may have to specify the [/MACHINE](../../build/reference/machine-specify-target-platform.md), [/OUT](../../build/reference/out-output-file-name.md), or [/ENTRY](../../build/reference/entry-entry-point-symbol.md) options. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4002.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4002.md index 27ad399e6be..53a1575a327 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4002.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4002.md @@ -10,4 +10,6 @@ ms.assetid: 09f81af5-e51c-496c-a6eb-2863e85375c3 > symbol defined in object +## Remarks + The symbol, displayed in its decorated form, was specified in its undecorated form in `object`, but a unique match to a decorated symbol could not be found. This warning is always preceded by warning [LNK4022](../../error-messages/tool-errors/linker-tools-warning-lnk4022.md) and followed by fatal error [LNK1152](../../error-messages/tool-errors/linker-tools-error-lnk1152.md). diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4006.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4006.md index 33284094cde..5f620a003ba 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4006.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4006.md @@ -10,6 +10,8 @@ ms.assetid: 3a637d17-1676-4ea6-bd8b-290137d28d3b > symbol already defined in object; second definition ignored +## Remarks + The given `symbol`, displayed in its decorated form, was multiply defined. When this warning is encountered, `symbol` will be added twice, but only its first form will be used. You can get this warning if you try to merge two import libs into one. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4010.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4010.md index 64839f0e4fe..49270a282f4 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4010.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4010.md @@ -10,4 +10,6 @@ ms.assetid: 2824cf99-4174-4b60-a6e2-c01e9f1ee52d > invalid subsystem version number number; default subsystem version assumed +## Remarks + You can specify a version for the image's subsystem ([/SUBSYSTEM](../../build/reference/subsystem-specify-subsystem.md)). Each subsystem has a minimum version requirement. If the specified version is lower than the minimum, this warning will occur and the linker will just use the default subsystem. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4014.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4014.md index d547f50a91b..9e24ac64a00 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4014.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4014.md @@ -10,6 +10,8 @@ ms.assetid: 394903e9-3ded-4ea4-b7c0-a3535d4b4da4 > cannot find member object "objectname" +## Remarks + LIB could not find `objectname` in the library. The **/REMOVE** and **/EXTRACT** options require the full name of the member object that is to be deleted or copied to a file. The full name includes the path of the original object file. To see the full names of member objects in a library, use DUMPBIN [/ARCHIVEMEMBERS](../../build/reference/archivemembers.md) or LIB [/LIST](../../build/reference/managing-a-library.md). diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4020.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4020.md index 264bda4b079..b8527b4e8f8 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4020.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4020.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["LNK4020"] > a type record in '*filename*' is corrupted; some symbols and types may not be accessible from the debugger +## Remarks + The PDB file *filename* has a corrupted type record. This issue is often secondary to other build issues; unless this is the first reported build issue, deal with the other errors and warnings first. If this is the first reported issue, you may need to clean your build directories and rebuild your project. If you use parallel build processes, see if the error persists when you serialize your build. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4022.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4022.md index 472f2a6f56e..9efbb357bf4 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4022.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4022.md @@ -10,6 +10,8 @@ ms.assetid: 890f487e-db98-45dd-a226-c7ccead82b1e > cannot find unique match for symbol 'symbol' +## Remarks + LINK or LIB found multiple matches for the given undecorated symbol and it could not resolve the ambiguity. No output file (.exe, .dll, .exp, or .lib) is produced. This warning is followed by one warning [LNK4002](../../error-messages/tool-errors/linker-tools-warning-lnk4002.md) for each duplicate symbol and is finally followed by fatal error [LNK1152](../../error-messages/tool-errors/linker-tools-error-lnk1152.md). To prevent this warning, specify the symbol in its decorated form. Run [DUMPBIN](../../build/reference/dumpbin-options.md) on the object to see decorated names. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4037.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4037.md index e9351139923..54e082e4a34 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4037.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4037.md @@ -10,6 +10,8 @@ ms.assetid: 9ba02fd3-b04f-4679-bab9-26fa82cf09bb > '*symbol*' does not exist; ignored +## Remarks + The decorated name *symbol* could not be ordered by using the [/ORDER](../../build/reference/order-put-functions-in-order.md) option because it could not be found in the program. Check the specification of *symbol* in the order response file. For more information, see the [/ORDER (Put functions in order)](../../build/reference/order-put-functions-in-order.md) linker option. > [!NOTE] diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4039.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4039.md index b60c604ec91..ab1f8f0eee6 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4039.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4039.md @@ -10,6 +10,8 @@ ms.assetid: ed7b1783-a7b2-4d3e-8afb-ca1648dae2c2 > section 'name' specified with /SECTION option does not exist +## Remarks + [DUMPBIN](../../build/reference/dumpbin-reference.md) or [EDITBIN](../../build/reference/editbin-reference.md) could not find a section called `name` in the input file. To see the sections in a file, run DUMPBIN with the [/HEADERS](../../build/reference/headers.md) option. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4044.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4044.md index dbf17074b7c..1df4cd87c6b 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4044.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4044.md @@ -10,6 +10,8 @@ ms.assetid: f3a67a15-98c0-42ed-afcb-f5f9540e2671 > unrecognized option 'option'; ignored +## Remarks + The given option is not a valid option for this tool. The tool ignored the option. To see a list of valid options, run the tool with no arguments or options. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4049.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4049.md index 2a99ccb7648..1345c6e964a 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4049.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4049.md @@ -10,10 +10,10 @@ ms.assetid: 5fd5fb24-c860-4149-a557-0ac26a65d97c > symbol '*symbol*' defined in '*filename.obj*' is imported -[__declspec(dllimport)](../../cpp/dllexport-dllimport.md) was specified for *symbol* even though the symbol is defined in object file *filename.obj* in the same image. Remove the `__declspec(dllimport)` modifier to resolve this warning. - ## Remarks +[__declspec(dllimport)](../../cpp/dllexport-dllimport.md) was specified for *symbol* even though the symbol is defined in object file *filename.obj* in the same image. Remove the `__declspec(dllimport)` modifier to resolve this warning. + This warning is generated by the linker when you define a symbol in one object file and reference it by using the `__declspec(dllimport)` declaration modifier in another. Warning LNK4049 is a more general version of [Linker Tools Warning LNK4217](linker-tools-warning-lnk4217.md). The linker generates warning LNK4049 when it can't determine which function or object file referenced the imported symbol. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4065.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4065.md index c08cf9e68ad..ce47348437a 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4065.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4065.md @@ -10,4 +10,6 @@ ms.assetid: aa5c9e2c-9ad3-4460-8605-4c12bbc6d423 > 'function' cannot be ordered; ignored +## Remarks + The given function was not compiled as a packaged function. Recompile using [/Gy](../../build/reference/gy-enable-function-level-linking.md). diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4070.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4070.md index 965dcc80f53..87cadb8db1f 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4070.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4070.md @@ -10,6 +10,8 @@ ms.assetid: f95f179a-fff9-427e-bd51-466b3934517f > /OUT:filename directive in .EXP differs from output filename 'filename'; ignoring directive +## Remarks + The `filename` specified in the [NAME](../../build/reference/name-c-cpp.md) or [LIBRARY](../../build/reference/library.md) statement when the .exp file was created differs from the output `filename` that was either assumed by default or specified with the [/OUT](../../build/reference/out-output-file-name.md) option. You will see this warning if you change the name of an output file in the development environment and where the project's .def file was not updated. Manually update the .def file to resolve this warning. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4071.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4071.md index b488f5dedf4..23ec8476710 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4071.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4071.md @@ -10,4 +10,6 @@ ms.assetid: 803f8c34-8219-4f55-a4ae-7133ceff2ba3 > cannot be incrementally linked on subsequent links +## Remarks + LINK found multiple definitions for one or more symbols, but [/FORCE](../../build/reference/force-force-file-output.md) or **/FORCE:MULTIPLE** was used to create an output file regardless of errors. LINK deleted the incremental status (.ilk) file. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4073.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4073.md index ac2193be713..2bac04906cb 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4073.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4073.md @@ -10,4 +10,6 @@ ms.assetid: a0c80242-3395-45bd-bbe7-4f31d7ac9e3a > cannot create map for .ilk file; linking nonincrementally +## Remarks + There was not a large enough contiguous space in shared memory for LINK to create the incremental status (.ilk) file. LINK performed a nonincremental build. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4075.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4075.md index 30f0cac408f..a63142f5a3a 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4075.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4075.md @@ -10,6 +10,8 @@ ms.assetid: f39ad3f9-c263-4cf0-9d70-259fc56ac96d > ignoring "option1" due to "option2" specification +## Remarks + The second option overrides the first. Mutually exclusive linker options are being specified. Examine your linker options. Where linker options are specified depends on how you are building your project. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4076.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4076.md index b2d7adb6578..cf26698b1ff 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4076.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4076.md @@ -10,4 +10,6 @@ ms.assetid: c424d43b-abb3-4df4-be66-8907b859a555 > invalid incremental status file 'filename'; linking nonincrementally +## Remarks + LINK cannot write to the incremental status (.ilk) file. Either `filename` is corrupt or it is not an incremental linking database. Remove the file and relink. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4078.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4078.md index 7b2a90535da..8235ed6716e 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4078.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4078.md @@ -10,6 +10,8 @@ ms.assetid: 5a16796d-6caf-42d9-8f65-b042843eafb8 > multiple 'section name' sections found with different attributes +## Remarks + LINK found two or more sections that have the same name but different attributes. This warning can be caused by an import library or exports file that was created by a previous version of LINK or LIB. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4086.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4086.md index e8e1018f2ea..20a14d19d2f 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4086.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4086.md @@ -10,4 +10,6 @@ ms.assetid: ea1eecbb-ba2c-41bb-9a4f-fa0808a4b92d > entrypoint 'function' is not __stdcall with 'number' bytes of arguments; image may not run +## Remarks + The entry point for a DLL must be **`__stdcall`**. Either recompile the function with the [/Gz](../../build/reference/gd-gr-gv-gz-calling-convention.md) option or specify **`__stdcall`** or WINAPI when you define the function. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4092.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4092.md index 096ed29b875..c536d05d2d4 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4092.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4092.md @@ -10,6 +10,8 @@ ms.assetid: d569ec47-a338-40e1-940b-8a8061459acb > shared writable section 'section' contains relocations; image may not run correctly +## Remarks + The linker emits this warning whenever you have a shared section to warn you of a potentially serious problem. One way to share data between multiple processes is to mark a section as "shared." However, marking a section as shared can cause problems. For example, you have a DLL that contains declarations like this in a shared data section: diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4096.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4096.md index e42a95d3bd6..f176fbb3991 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4096.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4096.md @@ -10,4 +10,6 @@ ms.assetid: ef6fba38-59a1-4d86-bcac-cadf44d87a36 > /BASE value "number" is invalid for Windows 95 and Windows 98; image may not run +## Remarks + The base address you specified is invalid. Windows 95 and Windows 98 executable files must have a base address greater than 0x400000. For more information on base addresses, see the [/BASE](../../build/reference/base-base-address.md) linker option. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4098.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4098.md index 114be4256bc..023f069ac8e 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4098.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4098.md @@ -10,6 +10,8 @@ ms.assetid: 1f1b1408-1316-4e34-80f5-6a02f2db0ac1 > defaultlib '*library*' conflicts with use of other libs; use /NODEFAULTLIB:*library* +## Remarks + You're trying to link with incompatible libraries. > [!NOTE] diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4099.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4099.md index 73c42ce6f4a..b185f6de11b 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4099.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4099.md @@ -10,6 +10,8 @@ ms.assetid: 358170a4-07cd-43fe-918f-82c32757ffc5 > PDB 'filename' was not found with 'object/library' or at 'path'; linking object as if no debug info +## Remarks + The linker was unable to find your .pdb file. Copy it into the directory that contains `object/library`. To find the name of the .pdb file associated with the object file: diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4102.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4102.md index 6979bf753e0..bb4934c900a 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4102.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4102.md @@ -10,6 +10,8 @@ ms.assetid: bfd1b17e-05c7-4bc2-80d6-2888b1a425b2 > export of deleting destructor 'name'; image may not run correctly +## Remarks + The program has attempted to export a deleting destructor. The resulting delete may occur across a DLL boundary such that a process can free memory that it does not own. Make sure that the given symbol is not listed in your .def file, and that the symbol is not listed as an argument of the **/IMPORT** or **/EXPORT** option in the linker command line. If you are rebuilding the C run-time library, you can ignore this message. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4104.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4104.md index b6729975052..90d6643bfad 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4104.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4104.md @@ -10,6 +10,8 @@ ms.assetid: ca6728db-d616-419a-a570-65e8445c6079 > export of symbol 'symbol' should be PRIVATE +## Remarks + The `symbol` can be one of the following: - `DllCanUnloadNow` diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4105.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4105.md index b08a98299bb..aebda983258 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4105.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4105.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["LNK4105"] > no argument specified with option 'option'; ignoring option +## Remarks + This warning occurs only when the [/LIBPATH](../../build/reference/libpath-additional-libpath.md) option is set. If no directory is specified with this option, then the linker ignores the option and generates this warning message. If you do not need to override the existing environmental library settings, remove the /LIBPATH option from the linker command line. If you want to use an alternate search path for libraries, specify the alternate path following the /LIBPATH option. From 89501900f8f919910aa3c2d8d660cec1399e90b1 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Mon, 22 Sep 2025 22:44:14 +0800 Subject: [PATCH 1909/2255] Replace term "sample" with "example" for warning references in range [LNK4001, LNK4105] --- docs/error-messages/tool-errors/linker-tools-warning-lnk4078.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4078.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4078.md index 8235ed6716e..d4da251c384 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4078.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4078.md @@ -22,7 +22,7 @@ Recreate the file and relink. LNK4078 can also be caused by a breaking change: the section named by [init_seg](../../preprocessor/init-seg.md) on x86 was read/write, it is now read only. -The following sample generates LNK4078. +The following example generates LNK4078. ```cpp // LNK4078.cpp From 6a773d63f6ec8d4908a4584f2fb041237fec3f36 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Mon, 22 Sep 2025 22:49:20 +0800 Subject: [PATCH 1910/2255] Update metadata for warning references in range [LNK4001, LNK4105] --- .../tool-errors/linker-tools-warning-lnk4001.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4002.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4006.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4010.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4014.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4020.md | 4 ++-- .../tool-errors/linker-tools-warning-lnk4022.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4037.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4039.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4044.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4049.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4065.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4070.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4071.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4073.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4075.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4076.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4078.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4086.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4092.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4096.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4098.md | 3 +-- .../tool-errors/linker-tools-warning-lnk4099.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4102.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4104.md | 5 ++--- 25 files changed, 49 insertions(+), 73 deletions(-) diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4001.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4001.md index 48e1299152e..5a3f63068cc 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4001.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4001.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4001" title: "Linker Tools Warning LNK4001" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4001" +ms.date: 11/04/2016 f1_keywords: ["LNK4001"] helpviewer_keywords: ["LNK4001"] -ms.assetid: 0a8b1c3a-64ce-4311-b7c0-065995059246 --- # Linker Tools Warning LNK4001 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4002.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4002.md index 53a1575a327..71cff124cea 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4002.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4002.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4002" title: "Linker Tools Warning LNK4002" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4002" +ms.date: 11/04/2016 f1_keywords: ["LNK4002"] helpviewer_keywords: ["LNK4002"] -ms.assetid: 09f81af5-e51c-496c-a6eb-2863e85375c3 --- # Linker Tools Warning LNK4002 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4006.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4006.md index 5f620a003ba..8fd9e721fe0 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4006.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4006.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4006" title: "Linker Tools Warning LNK4006" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4006" +ms.date: 11/04/2016 f1_keywords: ["LNK4006"] helpviewer_keywords: ["LNK4006"] -ms.assetid: 3a637d17-1676-4ea6-bd8b-290137d28d3b --- # Linker Tools Warning LNK4006 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4010.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4010.md index 49270a282f4..a586214ca26 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4010.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4010.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4010" title: "Linker Tools Warning LNK4010" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4010" +ms.date: 11/04/2016 f1_keywords: ["LNK4010"] helpviewer_keywords: ["LNK4010"] -ms.assetid: 2824cf99-4174-4b60-a6e2-c01e9f1ee52d --- # Linker Tools Warning LNK4010 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4014.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4014.md index 9e24ac64a00..d073124ac8c 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4014.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4014.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4014" title: "Linker Tools Warning LNK4014" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4014" +ms.date: 11/04/2016 f1_keywords: ["LNK4014"] helpviewer_keywords: ["LNK4014"] -ms.assetid: 394903e9-3ded-4ea4-b7c0-a3535d4b4da4 --- # Linker Tools Warning LNK4014 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4020.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4020.md index b8527b4e8f8..913227f12fa 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4020.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4020.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Linker Tools Warning LNK4020" title: "Linker Tools Warning LNK4020" -ms.date: "05/29/2018" +description: "Learn more about: Linker Tools Warning LNK4020" +ms.date: 05/29/2018 f1_keywords: ["LNK4020"] helpviewer_keywords: ["LNK4020"] --- diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4022.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4022.md index 9efbb357bf4..b8629ec6796 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4022.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4022.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4022" title: "Linker Tools Warning LNK4022" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4022" +ms.date: 11/04/2016 f1_keywords: ["LNK4022"] helpviewer_keywords: ["LNK4022"] -ms.assetid: 890f487e-db98-45dd-a226-c7ccead82b1e --- # Linker Tools Warning LNK4022 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4037.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4037.md index 54e082e4a34..2eafbb1026b 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4037.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4037.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4037" title: "Linker Tools Warning LNK4037" -ms.date: "10/04/2017" +description: "Learn more about: Linker Tools Warning LNK4037" +ms.date: 10/04/2017 f1_keywords: ["LNK4037"] helpviewer_keywords: ["LNK4037"] -ms.assetid: 9ba02fd3-b04f-4679-bab9-26fa82cf09bb --- # Linker Tools Warning LNK4037 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4039.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4039.md index ab1f8f0eee6..c86c2783939 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4039.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4039.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4039" title: "Linker Tools Warning LNK4039" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4039" +ms.date: 11/04/2016 f1_keywords: ["LNK4039"] helpviewer_keywords: ["LNK4039"] -ms.assetid: ed7b1783-a7b2-4d3e-8afb-ca1648dae2c2 --- # Linker Tools Warning LNK4039 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4044.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4044.md index 1df4cd87c6b..3852e8bb3b7 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4044.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4044.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4044" title: "Linker Tools Warning LNK4044" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4044" +ms.date: 11/04/2016 f1_keywords: ["LNK4044"] helpviewer_keywords: ["LNK4044"] -ms.assetid: f3a67a15-98c0-42ed-afcb-f5f9540e2671 --- # Linker Tools Warning LNK4044 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4049.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4049.md index 1345c6e964a..7f6c8738fa3 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4049.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4049.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4049" title: "Linker Tools Warning LNK4049" -ms.date: "04/15/2019" +description: "Learn more about: Linker Tools Warning LNK4049" +ms.date: 04/15/2019 f1_keywords: ["LNK4049"] helpviewer_keywords: ["LNK4049"] -ms.assetid: 5fd5fb24-c860-4149-a557-0ac26a65d97c --- # Linker Tools Warning LNK4049 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4065.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4065.md index ce47348437a..866c8e515fb 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4065.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4065.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4065" title: "Linker Tools Warning LNK4065" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4065" +ms.date: 11/04/2016 f1_keywords: ["LNK4065"] helpviewer_keywords: ["LNK4065"] -ms.assetid: aa5c9e2c-9ad3-4460-8605-4c12bbc6d423 --- # Linker Tools Warning LNK4065 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4070.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4070.md index 87cadb8db1f..73002b55e0a 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4070.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4070.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4070" title: "Linker Tools Warning LNK4070" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4070" +ms.date: 11/04/2016 f1_keywords: ["LNK4070"] helpviewer_keywords: ["LNK4070"] -ms.assetid: f95f179a-fff9-427e-bd51-466b3934517f --- # Linker Tools Warning LNK4070 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4071.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4071.md index 23ec8476710..f11ad7b9b8f 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4071.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4071.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4071" title: "Linker Tools Warning LNK4071" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4071" +ms.date: 11/04/2016 f1_keywords: ["LNK4071"] helpviewer_keywords: ["LNK4071"] -ms.assetid: 803f8c34-8219-4f55-a4ae-7133ceff2ba3 --- # Linker Tools Warning LNK4071 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4073.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4073.md index 2bac04906cb..0347c6cd330 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4073.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4073.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4073" title: "Linker Tools Warning LNK4073" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4073" +ms.date: 11/04/2016 f1_keywords: ["LNK4073"] helpviewer_keywords: ["LNK4073"] -ms.assetid: a0c80242-3395-45bd-bbe7-4f31d7ac9e3a --- # Linker Tools Warning LNK4073 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4075.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4075.md index a63142f5a3a..30c7c247f9c 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4075.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4075.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4075" title: "Linker Tools Warning LNK4075" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4075" +ms.date: 11/04/2016 f1_keywords: ["LNK4075"] helpviewer_keywords: ["LNK4075"] -ms.assetid: f39ad3f9-c263-4cf0-9d70-259fc56ac96d --- # Linker Tools Warning LNK4075 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4076.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4076.md index cf26698b1ff..2f5ab3ac799 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4076.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4076.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4076" title: "Linker Tools Warning LNK4076" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4076" +ms.date: 11/04/2016 f1_keywords: ["LNK4076"] helpviewer_keywords: ["LNK4076"] -ms.assetid: c424d43b-abb3-4df4-be66-8907b859a555 --- # Linker Tools Warning LNK4076 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4078.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4078.md index d4da251c384..977fec14c67 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4078.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4078.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4078" title: "Linker Tools Warning LNK4078" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4078" +ms.date: 11/04/2016 f1_keywords: ["LNK4078"] helpviewer_keywords: ["LNK4078"] -ms.assetid: 5a16796d-6caf-42d9-8f65-b042843eafb8 --- # Linker Tools Warning LNK4078 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4086.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4086.md index 20a14d19d2f..3e04f4741cd 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4086.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4086.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4086" title: "Linker Tools Warning LNK4086" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4086" +ms.date: 11/04/2016 f1_keywords: ["LNK4086"] helpviewer_keywords: ["LNK4086"] -ms.assetid: ea1eecbb-ba2c-41bb-9a4f-fa0808a4b92d --- # Linker Tools Warning LNK4086 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4092.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4092.md index c536d05d2d4..8db800d129a 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4092.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4092.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4092" title: "Linker Tools Warning LNK4092" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4092" +ms.date: 11/04/2016 f1_keywords: ["LNK4092"] helpviewer_keywords: ["LNK4092"] -ms.assetid: d569ec47-a338-40e1-940b-8a8061459acb --- # Linker Tools Warning LNK4092 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4096.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4096.md index f176fbb3991..239b7d127b1 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4096.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4096.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4096" title: "Linker Tools Warning LNK4096" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4096" +ms.date: 11/04/2016 f1_keywords: ["LNK4096"] helpviewer_keywords: ["LNK4096"] -ms.assetid: ef6fba38-59a1-4d86-bcac-cadf44d87a36 --- # Linker Tools Warning LNK4096 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4098.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4098.md index 023f069ac8e..d978b129442 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4098.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4098.md @@ -1,10 +1,9 @@ --- title: "Linker Tools Warning LNK4098" description: "Describes how incompatible libraries cause linker tools warning LNK4098, and how to use /NODEFAULTLIB to fix it." -ms.date: "12/02/2019" +ms.date: 12/02/2019 f1_keywords: ["LNK4098"] helpviewer_keywords: ["LNK4098"] -ms.assetid: 1f1b1408-1316-4e34-80f5-6a02f2db0ac1 --- # Linker Tools Warning LNK4098 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4099.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4099.md index b185f6de11b..658a4303a78 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4099.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4099.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4099" title: "Linker Tools Warning LNK4099" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4099" +ms.date: 11/04/2016 f1_keywords: ["LNK4099"] helpviewer_keywords: ["LNK4099"] -ms.assetid: 358170a4-07cd-43fe-918f-82c32757ffc5 --- # Linker Tools Warning LNK4099 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4102.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4102.md index bb4934c900a..946bbf5a630 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4102.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4102.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4102" title: "Linker Tools Warning LNK4102" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4102" +ms.date: 11/04/2016 f1_keywords: ["LNK4102"] helpviewer_keywords: ["LNK4102"] -ms.assetid: bfd1b17e-05c7-4bc2-80d6-2888b1a425b2 --- # Linker Tools Warning LNK4102 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4104.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4104.md index 90d6643bfad..f606c690933 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4104.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4104.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4104" title: "Linker Tools Warning LNK4104" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4104" +ms.date: 11/04/2016 f1_keywords: ["LNK4104"] helpviewer_keywords: ["LNK4104"] -ms.assetid: ca6728db-d616-419a-a570-65e8445c6079 --- # Linker Tools Warning LNK4104 From 2cd99bef82b3ef8f1fd131300b422e1608c926bb Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Mon, 22 Sep 2025 22:58:21 +0800 Subject: [PATCH 1911/2255] Add blockquotes for warning messages in range [LNK4106, LNK4307] --- docs/error-messages/tool-errors/linker-tools-warning-lnk4194.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4199.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4200.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4204.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4205.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4216.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4219.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4220.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4222.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4229.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4237.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4247.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4248.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4253.md | 2 +- docs/error-messages/tool-errors/linker-tools-warning-lnk4254.md | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4194.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4194.md index f22bd2a4fc2..2639e0769ee 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4194.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4194.md @@ -8,6 +8,6 @@ ms.assetid: a45f437e-33b5-487e-b3cd-ff1560041e7e --- # Linker Tools Warning LNK4194 -/DELAYLOAD:dll name ignored +> /DELAYLOAD:dll name ignored The linker cannot [delay load](../../build/reference/delayload-delay-load-import.md) the requested DLL. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4199.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4199.md index 04a8983c778..b81309940eb 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4199.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4199.md @@ -8,6 +8,6 @@ ms.assetid: 724f1ca8-ee9a-4ca3-b5c6-c0284a5195e7 --- # Linker Tools Warning LNK4199 -/DELAYLOAD:dllname ignored; no imports found from dllname +> /DELAYLOAD:dllname ignored; no imports found from dllname The linker ignores `dllname` because it does not need any of the functions that `dllname` exports. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4200.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4200.md index 558e5ec0f5e..05864bf7b98 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4200.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4200.md @@ -8,6 +8,6 @@ ms.assetid: 0d335e69-8766-455b-beb5-a3ba6247274e --- # Linker Tools Warning LNK4200 -corrupt line number information in object file; ignored +> corrupt line number information in object file; ignored The line number information in the object file is corrupt. Rebuild. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4204.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4204.md index f9949c94b46..6ee94836b30 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4204.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4204.md @@ -8,7 +8,7 @@ ms.assetid: 14adda20-0cbe-407b-90f6-9f81c93530e2 --- # Linker Tools Warning LNK4204 -'filename' is missing debugging information for referencing module; linking object as if no debug info +> 'filename' is missing debugging information for referencing module; linking object as if no debug info The .pdb file has an erroneous signature. The linker will continue to link the object without debug information. You may want to recompile the object file using the [/Zi](../../build/reference/z7-zi-zi-debug-information-format.md) option. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4205.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4205.md index 6f77534f6fc..dba0f80639e 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4205.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4205.md @@ -8,6 +8,6 @@ ms.assetid: d63b9d18-ef3c-4081-9d8d-93077dad13c2 --- # Linker Tools Warning LNK4205 -'filename' is missing current debugging information for referencing module; linking object as if no debug info +> 'filename' is missing current debugging information for referencing module; linking object as if no debug info The .pdb file has out-of-date information. The linker will continue to link object without debug information. You may want to recompile the object file using the [/Zi](../../build/reference/z7-zi-zi-debug-information-format.md) option. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4216.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4216.md index 167ab652430..1c62a118f25 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4216.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4216.md @@ -8,6 +8,6 @@ ms.assetid: 68512095-acbc-47aa-96bf-9eb0e73b24a3 --- # Linker Tools Warning LNK4216 -Exported entry point entry +> Exported entry point entry An entry point was exported from a DLL. The entry point of a DLL does not need to be exported. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4219.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4219.md index ca1f30a8c38..40f03e4a4af 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4219.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4219.md @@ -8,7 +8,7 @@ ms.assetid: 363fedf4-b10c-4985-811a-55a9fba688d6 --- # Linker Tools Warning LNK4219 -fixup name fixup overflow. Target 'target symbol name' is out of range, inserting thunk +> fixup name fixup overflow. Target 'target symbol name' is out of range, inserting thunk The linker inserted a thunk in a situation where the address or offset was unable to fit in the given instruction because the target symbol is too far away from the instruction's location. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4220.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4220.md index 3bd2a43b6ec..45c6d870014 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4220.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4220.md @@ -8,6 +8,6 @@ ms.assetid: ba0cddfc-9c56-4a09-8207-f7b840a24b4d --- # Linker Tools Warning LNK4220 -invalid 'linker option' value 'value'; assumed default +> invalid 'linker option' value 'value'; assumed default An out-of-range value was specified with the [/TLBID](../../build/reference/tlbid-specify-resource-id-for-typelib.md) option. The default value for **/TLBID** is 1. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4222.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4222.md index e55acea5515..281e31106a5 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4222.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4222.md @@ -8,7 +8,7 @@ ms.assetid: b7bb1794-41fb-4c83-b9b0-59c0d786a7da --- # Linker Tools Warning LNK4222 -exported symbol 'symbol' should not be assigned an ordinal +> exported symbol 'symbol' should not be assigned an ordinal The following symbols should not be exported by ordinal: diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4229.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4229.md index 1000e70de37..b81cfead1d4 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4229.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4229.md @@ -8,6 +8,6 @@ ms.assetid: 00e70d09-efd8-4e4e-8d48-6ba282c32ec1 --- # Linker Tools Warning LNK4229 -invalid directive /directive found; ignored +> invalid directive /directive found; ignored A directive passed via the [comment](../../preprocessor/comment-c-cpp.md) pragma was not valid. The linker ignores `/directive`. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4237.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4237.md index 412f1348d52..4f914ec0c62 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4237.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4237.md @@ -8,7 +8,7 @@ ms.assetid: 87bfec39-5241-464f-9feb-517b49f352ea --- # Linker Tools Warning LNK4237 -/SUBSYSTEM:NATIVE specified when importing from 'dll'; Use /SUBSYSTEM:CONSOLE or /SUBSYSTEM:WINDOWS. +> /SUBSYSTEM:NATIVE specified when importing from 'dll'; Use /SUBSYSTEM:CONSOLE or /SUBSYSTEM:WINDOWS. [/SUBSYSTEM:NATIVE](../../build/reference/subsystem-specify-subsystem.md) was specified when building a windows (Win32) application that directly uses one or more of the following: diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4247.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4247.md index f0f4ec5f2ce..ff11db96da9 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4247.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4247.md @@ -8,7 +8,7 @@ ms.assetid: 085d7fdf-9eaf-4641-8473-6eaadd073c7b --- # Linker Tools Warning LNK4247 -entry point 'decorated_function_name' already has a thread attribute; 'attribute' ignored +> entry point 'decorated_function_name' already has a thread attribute; 'attribute' ignored An entry point, specified with [/ENTRY (Entry-Point Symbol)](../../build/reference/entry-entry-point-symbol.md), had a threading attribute, but [/CLRTHREADATTRIBUTE (Set CLR Thread Attribute)](../../build/reference/clrthreadattribute-set-clr-thread-attribute.md) was also specified, with a different threading model. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4248.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4248.md index 17b02f0c4fd..9f4b5191b15 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4248.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4248.md @@ -8,7 +8,7 @@ ms.assetid: e40523ff-e3cb-4ba6-ab79-23f0f339f6cf --- # Linker Tools Warning LNK4248 -unresolved typeref token (token) for 'type'; image may not run +> unresolved typeref token (token) for 'type'; image may not run A type doesn't have a definition in MSIL metadata. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4253.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4253.md index 38406cb0aca..9168f8d3e69 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4253.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4253.md @@ -8,7 +8,7 @@ ms.assetid: ec7433a9-aa9c-495a-a9f2-075e7bc3e7bc --- # Linker Tools Warning LNK4253 -section 'section1' not merged into 'section2'; already merged into 'section3' +> section 'section1' not merged into 'section2'; already merged into 'section3' The linker detected multiple, conflicting merge requests. The linker will ignore one of the requests. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4254.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4254.md index cad2b204d0a..8bb5c356aa4 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4254.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4254.md @@ -8,7 +8,7 @@ ms.assetid: 6f41dfb3-ca21-40d3-bac7-b637e578efa4 --- # Linker Tools Warning LNK4254 -section 'section1' (offset) merged into 'section2' (offset) with different attributes +> section 'section1' (offset) merged into 'section2' (offset) with different attributes The contents of one section were merged into another, but the attributes of the two sections are different. Your program may give unexpected results. For example, data you wanted to be read only may now be in a writable section. From 754cc5ebbd0a4943f950f505b7790877f9b600b0 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Mon, 22 Sep 2025 23:04:41 +0800 Subject: [PATCH 1912/2255] Add "Remarks" and "Example" headings for warning references in range [LNK4106, LNK4307] --- .../tool-errors/linker-tools-warning-lnk4194.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4197.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4199.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4200.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4204.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4205.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4206.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4216.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4217.md | 6 ++++-- .../tool-errors/linker-tools-warning-lnk4219.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4220.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4221.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4222.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4227.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4229.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4237.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4247.md | 4 ++++ .../tool-errors/linker-tools-warning-lnk4248.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4253.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4254.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4286.md | 4 ++-- .../tool-errors/linker-tools-warning-lnk4306.md | 2 ++ .../tool-errors/linker-tools-warning-lnk4307.md | 2 ++ 23 files changed, 50 insertions(+), 4 deletions(-) diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4194.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4194.md index 2639e0769ee..7cacdbadb5c 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4194.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4194.md @@ -10,4 +10,6 @@ ms.assetid: a45f437e-33b5-487e-b3cd-ff1560041e7e > /DELAYLOAD:dll name ignored +## Remarks + The linker cannot [delay load](../../build/reference/delayload-delay-load-import.md) the requested DLL. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4197.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4197.md index 2bddca715ac..91ab7e20fd4 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4197.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4197.md @@ -10,6 +10,8 @@ ms.assetid: 8a976fd7-a74b-4c83-ab66-a9e7d7073c4a > export '*exportname*' specified multiple times; using first specification +## Remarks + An export is specified in multiple and different ways. The linker uses the first specification and ignores the rest. If you are rebuilding the C run-time library, you can ignore this message. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4199.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4199.md index b81309940eb..fbf791879e5 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4199.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4199.md @@ -10,4 +10,6 @@ ms.assetid: 724f1ca8-ee9a-4ca3-b5c6-c0284a5195e7 > /DELAYLOAD:dllname ignored; no imports found from dllname +## Remarks + The linker ignores `dllname` because it does not need any of the functions that `dllname` exports. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4200.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4200.md index 05864bf7b98..293230e906c 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4200.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4200.md @@ -10,4 +10,6 @@ ms.assetid: 0d335e69-8766-455b-beb5-a3ba6247274e > corrupt line number information in object file; ignored +## Remarks + The line number information in the object file is corrupt. Rebuild. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4204.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4204.md index 6ee94836b30..5dcc96f82b6 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4204.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4204.md @@ -10,6 +10,8 @@ ms.assetid: 14adda20-0cbe-407b-90f6-9f81c93530e2 > 'filename' is missing debugging information for referencing module; linking object as if no debug info +## Remarks + The .pdb file has an erroneous signature. The linker will continue to link the object without debug information. You may want to recompile the object file using the [/Zi](../../build/reference/z7-zi-zi-debug-information-format.md) option. LNK4204 can occur if some of the objects in the library refer to a file that no longer exists. This could happen when rebuilding the solution, for example; an object file might be deleted and not rebuilt because of a compilation error. In this case, either compile with **/Z7**, or **/Fd**, to update the objects to refer to a single file per-library (that is not the default .pdb file name). For more information, see [/Fd (Program Database File Name)](../../build/reference/fd-program-database-file-name.md). Ensure that the .pdb is saved with the library every time it is updated in the source control system. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4205.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4205.md index dba0f80639e..9e0d8450655 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4205.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4205.md @@ -10,4 +10,6 @@ ms.assetid: d63b9d18-ef3c-4081-9d8d-93077dad13c2 > 'filename' is missing current debugging information for referencing module; linking object as if no debug info +## Remarks + The .pdb file has out-of-date information. The linker will continue to link object without debug information. You may want to recompile the object file using the [/Zi](../../build/reference/z7-zi-zi-debug-information-format.md) option. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4206.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4206.md index 6d954982e46..3a4e7dc3c9c 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4206.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4206.md @@ -10,6 +10,8 @@ ms.assetid: 6c108e33-00cf-4c5a-830d-d65d470930a7 > precompiled type information not found; '*filename*' not linked or overwritten; linking object as if no debug info +## Remarks + The *filename* object file, compiled by using [/Yc](../../build/reference/yc-create-precompiled-header-file.md), was either not specified in the LINK command or was overwritten. A common scenario for this warning is when the .obj that was compiled with /Yc is in a library, and where there are no symbol references to that .obj from your code. In that case, the linker will not use (or even see) the .obj file. In this situation, you should recompile your code and use [/Yl](../../build/reference/yl-inject-pch-reference-for-debug-library.md) for the objects compiled by using [/Yu](../../build/reference/yu-use-precompiled-header-file.md). diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4216.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4216.md index 1c62a118f25..8fe1b5873b4 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4216.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4216.md @@ -10,4 +10,6 @@ ms.assetid: 68512095-acbc-47aa-96bf-9eb0e73b24a3 > Exported entry point entry +## Remarks + An entry point was exported from a DLL. The entry point of a DLL does not need to be exported. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4217.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4217.md index 94497411316..134c5b993f3 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4217.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4217.md @@ -10,14 +10,16 @@ ms.assetid: 280dc03e-5933-4e8d-bb8c-891fbe788738 > symbol '*symbol*' defined in '*filename_1.obj*' is imported by '*filename_2.obj*' in function '*function*' -[__declspec(dllimport)](../../cpp/dllexport-dllimport.md) was specified for a symbol even though the symbol is defined in an object file in the same image. Remove the `__declspec(dllimport)` modifier to resolve this warning. - ## Remarks +[__declspec(dllimport)](../../cpp/dllexport-dllimport.md) was specified for a symbol even though the symbol is defined in an object file in the same image. Remove the `__declspec(dllimport)` modifier to resolve this warning. + *symbol* is the symbol name that's defined within the image. *function* is the function that's importing the symbol. This warning doesn't appear when you compile by using the [/clr](../../build/reference/clr-common-language-runtime-compilation.md) option. +## Example + LNK4217 can also occur if you attempt to link two modules together, when instead you should compile the second module with the import library of the first module. ```cpp diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4219.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4219.md index 40f03e4a4af..78d3c8b8711 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4219.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4219.md @@ -10,6 +10,8 @@ ms.assetid: 363fedf4-b10c-4985-811a-55a9fba688d6 > fixup name fixup overflow. Target 'target symbol name' is out of range, inserting thunk +## Remarks + The linker inserted a thunk in a situation where the address or offset was unable to fit in the given instruction because the target symbol is too far away from the instruction's location. You may want to reorder the image (using the [/ORDER](../../build/reference/order-put-functions-in-order.md) option, for example) to avoid the extra level of indirection. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4220.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4220.md index 45c6d870014..34c3b7e524c 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4220.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4220.md @@ -10,4 +10,6 @@ ms.assetid: ba0cddfc-9c56-4a09-8207-f7b840a24b4d > invalid 'linker option' value 'value'; assumed default +## Remarks + An out-of-range value was specified with the [/TLBID](../../build/reference/tlbid-specify-resource-id-for-typelib.md) option. The default value for **/TLBID** is 1. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4221.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4221.md index 9fae0c56fd9..894d302cb07 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4221.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4221.md @@ -10,6 +10,8 @@ ms.assetid: 8e2eb2de-9532-4b85-908a-8c9ff5c4cccb > This object file does not define any previously undefined public symbols, so it will not be used by any link operation that consumes this library +## Example + Consider the following two code snippets, `a.cpp`: ```cpp diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4222.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4222.md index 281e31106a5..c17b20efad3 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4222.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4222.md @@ -10,6 +10,8 @@ ms.assetid: b7bb1794-41fb-4c83-b9b0-59c0d786a7da > exported symbol 'symbol' should not be assigned an ordinal +## Remarks + The following symbols should not be exported by ordinal: - `DllCanUnloadNow` diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4227.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4227.md index 4437621ee75..90a6e07eff6 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4227.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4227.md @@ -10,6 +10,8 @@ ms.assetid: 941a0414-9964-4e02-8487-f9daa42ef7f9 > metadata operation warning (*HRESULT*) : *warning_message* +## Remarks + The linker detected metadata differences when merging: - One or more referenced assemblies with the assembly currently being built. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4229.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4229.md index b81cfead1d4..fc77eed7aeb 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4229.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4229.md @@ -10,4 +10,6 @@ ms.assetid: 00e70d09-efd8-4e4e-8d48-6ba282c32ec1 > invalid directive /directive found; ignored +## Remarks + A directive passed via the [comment](../../preprocessor/comment-c-cpp.md) pragma was not valid. The linker ignores `/directive`. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4237.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4237.md index 4f914ec0c62..b46559f5001 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4237.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4237.md @@ -10,6 +10,8 @@ ms.assetid: 87bfec39-5241-464f-9feb-517b49f352ea > /SUBSYSTEM:NATIVE specified when importing from 'dll'; Use /SUBSYSTEM:CONSOLE or /SUBSYSTEM:WINDOWS. +## Remarks + [/SUBSYSTEM:NATIVE](../../build/reference/subsystem-specify-subsystem.md) was specified when building a windows (Win32) application that directly uses one or more of the following: - kernel32.dll diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4247.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4247.md index ff11db96da9..dc36d49adee 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4247.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4247.md @@ -10,6 +10,8 @@ ms.assetid: 085d7fdf-9eaf-4641-8473-6eaadd073c7b > entry point 'decorated_function_name' already has a thread attribute; 'attribute' ignored +## Remarks + An entry point, specified with [/ENTRY (Entry-Point Symbol)](../../build/reference/entry-entry-point-symbol.md), had a threading attribute, but [/CLRTHREADATTRIBUTE (Set CLR Thread Attribute)](../../build/reference/clrthreadattribute-set-clr-thread-attribute.md) was also specified, with a different threading model. The linker ignored the value specified with /CLRTHREADATTRIBUTE. @@ -26,6 +28,8 @@ To resolve this warning: - Change the attribute in source, such that, it agrees with the value passed to /CLRTHREADATTRIBUTE. +## Example + The following sample generates LNK4247 ```cpp diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4248.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4248.md index 9f4b5191b15..4f33ecd759a 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4248.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4248.md @@ -10,6 +10,8 @@ ms.assetid: e40523ff-e3cb-4ba6-ab79-23f0f339f6cf > unresolved typeref token (token) for 'type'; image may not run +## Remarks + A type doesn't have a definition in MSIL metadata. LNK4248 can occur when there is only a forward declaration for a type in an MSIL module (compiled with **/clr**), where the type is referenced in the MSIL module, and where the MSIL module is linked with a native module that has a definition for the type. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4253.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4253.md index 9168f8d3e69..49e9afcdf66 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4253.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4253.md @@ -10,6 +10,8 @@ ms.assetid: ec7433a9-aa9c-495a-a9f2-075e7bc3e7bc > section 'section1' not merged into 'section2'; already merged into 'section3' +## Remarks + The linker detected multiple, conflicting merge requests. The linker will ignore one of the requests. A **/MERGE** option or directive is encountered and the `from` section has already been merged into a different section due to a previous **/MERGE** option or directive (or due to an implicit merge from the linker). diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4254.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4254.md index 8bb5c356aa4..e8b7a01ceff 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4254.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4254.md @@ -10,6 +10,8 @@ ms.assetid: 6f41dfb3-ca21-40d3-bac7-b637e578efa4 > section 'section1' (offset) merged into 'section2' (offset) with different attributes +## Remarks + The contents of one section were merged into another, but the attributes of the two sections are different. Your program may give unexpected results. For example, data you wanted to be read only may now be in a writable section. To resolve LNK4254, modify or remove the merge request. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4286.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4286.md index 7ba15860964..708f7418026 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4286.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4286.md @@ -9,10 +9,10 @@ helpviewer_keywords: ["LNK4286"] > symbol '*symbol*' defined in '*filename_1.obj*' is imported by '*filename_2.obj*' -[__declspec(dllimport)](../../cpp/dllexport-dllimport.md) was specified for *symbol* even though the symbol is defined in object file *filename_1.obj* in the same image. Remove the `__declspec(dllimport)` modifier to resolve this warning. - ## Remarks +[__declspec(dllimport)](../../cpp/dllexport-dllimport.md) was specified for *symbol* even though the symbol is defined in object file *filename_1.obj* in the same image. Remove the `__declspec(dllimport)` modifier to resolve this warning. + Warning LNK4286 is a more general version of [Linker Tools Warning LNK4217](linker-tools-warning-lnk4217.md). The linker generates Warning LNK4286 when it can tell which object file referenced the symbol, but not which function. To resolve LNK4286, remove the `__declspec(dllimport)` declaration modifier from the forward declaration of *symbol* referenced in *filename_2.obj*. diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4306.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4306.md index 585f5078112..fea9a5abab9 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4306.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4306.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["LNK4306"] > The auxiliary delayload import address table is not properly aligned with the primary delayload import address table. This may have negative perf impact. +## Remarks + This warning indicates a problem has occurred within the linker. Please report the issue and how you ran into it in the [C++ Developer Community channel](https://developercommunity.visualstudio.com/cpp). Add the tag `ARM64EC` to your issue to help us find the issue. \ No newline at end of file diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4307.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4307.md index 97bf46196a6..d6aa7c99683 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4307.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4307.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["LNK4307"] > The auxiliary delayload import address table copy is not properly aligned with the auxiliary delayload import address table. This may have negative perf impact. +## Remarks + This warning indicates a problem has occurred within the linker. Please report the issue and how you ran into it in the [C++ Developer Community channel](https://developercommunity.visualstudio.com/cpp). Add the tag `ARM64EC` to your issue to help us find the issue. \ No newline at end of file From c15104990bf275c1e7b771d004bc13e8fa50827d Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Mon, 22 Sep 2025 23:05:39 +0800 Subject: [PATCH 1913/2255] Replace term "sample" with "example" for warning references in range [LNK4106, LNK4307] --- .../tool-errors/linker-tools-warning-lnk4224.md | 2 +- .../tool-errors/linker-tools-warning-lnk4227.md | 4 ++-- .../tool-errors/linker-tools-warning-lnk4247.md | 2 +- .../tool-errors/linker-tools-warning-lnk4248.md | 6 +++--- .../tool-errors/linker-tools-warning-lnk4253.md | 2 +- .../tool-errors/linker-tools-warning-lnk4254.md | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4224.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4224.md index 0c52b3130a7..7cafda88288 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4224.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4224.md @@ -20,7 +20,7 @@ If possible, modify the source for the .obj and remove the pragma. If you do ign ## Example -The following sample generates LNK4224. +The following example generates LNK4224. ```cpp // LNK4224.cpp diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4227.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4227.md index 90a6e07eff6..55595308a94 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4227.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4227.md @@ -28,7 +28,7 @@ The metadata problems must be fixed to resolve the warning. LNK4227 is generated when a referenced assembly was signed differently than the assembly that references it. -The following sample generates LNK4227: +The following example generates LNK4227: ```cpp // LNK4227.cpp @@ -59,7 +59,7 @@ ref class MyClass LNK4227 can also be generated when version numbers in the wrong format are passed to assembly attributes. The '*' notation is specific to the `AssemblyVersionAttribute`. To resolve this warning, use only numbers in the version attributes other than `AssemblyVersionAttribute`. -The following sample generates LNK4227: +The following example generates LNK4227: ```cpp // LNK4227e.cpp diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4247.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4247.md index dc36d49adee..72cde3c4ef7 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4247.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4247.md @@ -30,7 +30,7 @@ To resolve this warning: ## Example -The following sample generates LNK4247 +The following example generates LNK4247 ```cpp // LNK4247.cpp diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4248.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4248.md index 4f33ecd759a..7f425183e6b 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4248.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4248.md @@ -28,7 +28,7 @@ For more information, see [/clr (Common Language Runtime Compilation)](../../bui ## Examples -The following sample generates LNK4248. Define struct A to resolve. +The following example generates LNK4248. Define struct A to resolve. ```cpp // LNK4248.cpp @@ -42,7 +42,7 @@ int main() { } ``` -The following sample has a forward definition of a type. +The following example has a forward definition of a type. ```cpp // LNK4248_2.cpp @@ -57,7 +57,7 @@ int main() { } ``` -The following sample generates LNK4248. +The following example generates LNK4248. ```cpp // LNK4248_3.cpp diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4253.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4253.md index 49e9afcdf66..5a689902df5 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4253.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4253.md @@ -28,7 +28,7 @@ For more information, see, ## Example -In the following sample, the linker is instructed to merge the `.rdata` section twice, but into different sections. The following sample generates LNK4253. +In the following example, the linker is instructed to merge the `.rdata` section twice, but into different sections. The following example generates LNK4253. ```cpp // LNK4253.cpp diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4254.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4254.md index e8b7a01ceff..135662e1d8a 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4254.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4254.md @@ -26,7 +26,7 @@ For more information, see, ## Example -The following sample generates LNK4254. +The following example generates LNK4254. ```cpp // LNK4254.cpp From 0be27937518642bb9979bde1fe25a2d6b5dd4627 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Mon, 22 Sep 2025 23:10:40 +0800 Subject: [PATCH 1914/2255] Update metadata for warning references in range [LNK4106, LNK4307] --- .../tool-errors/linker-tools-warning-lnk4194.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4197.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4199.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4200.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4204.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4205.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4206.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4210.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4216.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4217.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4219.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4220.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4221.md | 3 +-- .../tool-errors/linker-tools-warning-lnk4222.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4224.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4227.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4229.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4237.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4247.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4248.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4253.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4254.md | 5 ++--- .../tool-errors/linker-tools-warning-lnk4286.md | 4 ++-- .../tool-errors/linker-tools-warning-lnk4306.md | 2 +- .../tool-errors/linker-tools-warning-lnk4307.md | 2 +- 25 files changed, 47 insertions(+), 69 deletions(-) diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4194.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4194.md index 7cacdbadb5c..c9c5896215b 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4194.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4194.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4194" title: "Linker Tools Warning LNK4194" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4194" +ms.date: 11/04/2016 f1_keywords: ["LNK4194"] helpviewer_keywords: ["LNK4194"] -ms.assetid: a45f437e-33b5-487e-b3cd-ff1560041e7e --- # Linker Tools Warning LNK4194 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4197.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4197.md index 91ab7e20fd4..9bbeb584794 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4197.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4197.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4197" title: "Linker Tools Warning LNK4197" -ms.date: "09/05/2018" +description: "Learn more about: Linker Tools Warning LNK4197" +ms.date: 09/05/2018 f1_keywords: ["LNK4197"] helpviewer_keywords: ["LNK4197"] -ms.assetid: 8a976fd7-a74b-4c83-ab66-a9e7d7073c4a --- # Linker Tools Warning LNK4197 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4199.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4199.md index fbf791879e5..e4656fa2516 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4199.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4199.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4199" title: "Linker Tools Warning LNK4199" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4199" +ms.date: 11/04/2016 f1_keywords: ["LNK4199"] helpviewer_keywords: ["LNK4199"] -ms.assetid: 724f1ca8-ee9a-4ca3-b5c6-c0284a5195e7 --- # Linker Tools Warning LNK4199 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4200.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4200.md index 293230e906c..d9c40abaeb2 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4200.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4200.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4200" title: "Linker Tools Warning LNK4200" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4200" +ms.date: 11/04/2016 f1_keywords: ["LNK4200"] helpviewer_keywords: ["LNK4200"] -ms.assetid: 0d335e69-8766-455b-beb5-a3ba6247274e --- # Linker Tools Warning LNK4200 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4204.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4204.md index 5dcc96f82b6..96f393a24fa 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4204.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4204.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4204" title: "Linker Tools Warning LNK4204" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4204" +ms.date: 11/04/2016 f1_keywords: ["LNK4204"] helpviewer_keywords: ["LNK4204"] -ms.assetid: 14adda20-0cbe-407b-90f6-9f81c93530e2 --- # Linker Tools Warning LNK4204 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4205.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4205.md index 9e0d8450655..f693330b8d4 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4205.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4205.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4205" title: "Linker Tools Warning LNK4205" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4205" +ms.date: 11/04/2016 f1_keywords: ["LNK4205"] helpviewer_keywords: ["LNK4205"] -ms.assetid: d63b9d18-ef3c-4081-9d8d-93077dad13c2 --- # Linker Tools Warning LNK4205 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4206.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4206.md index 3a4e7dc3c9c..61b490f8294 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4206.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4206.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4206" title: "Linker Tools Warning LNK4206" -ms.date: "12/05/2017" +description: "Learn more about: Linker Tools Warning LNK4206" +ms.date: 12/05/2017 f1_keywords: ["LNK4206"] helpviewer_keywords: ["LNK4206"] -ms.assetid: 6c108e33-00cf-4c5a-830d-d65d470930a7 --- # Linker Tools Warning LNK4206 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4210.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4210.md index 437489e9ad0..56405b00d56 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4210.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4210.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4210" title: "Linker Tools Warning LNK4210" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4210" +ms.date: 11/04/2016 f1_keywords: ["LNK4210"] helpviewer_keywords: ["LNK4210"] -ms.assetid: db48cff8-a2be-4a77-8d03-552b42c228fa --- # Linker Tools Warning LNK4210 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4216.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4216.md index 8fe1b5873b4..4b1dddb3f23 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4216.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4216.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4216" title: "Linker Tools Warning LNK4216" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4216" +ms.date: 11/04/2016 f1_keywords: ["LNK4216"] helpviewer_keywords: ["LNK4216"] -ms.assetid: 68512095-acbc-47aa-96bf-9eb0e73b24a3 --- # Linker Tools Warning LNK4216 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4217.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4217.md index 134c5b993f3..b1dfa793fb4 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4217.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4217.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4217" title: "Linker Tools Warning LNK4217" -ms.date: "07/23/2019" +description: "Learn more about: Linker Tools Warning LNK4217" +ms.date: 07/23/2019 f1_keywords: ["LNK4217"] helpviewer_keywords: ["LNK4217"] -ms.assetid: 280dc03e-5933-4e8d-bb8c-891fbe788738 --- # Linker Tools Warning LNK4217 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4219.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4219.md index 78d3c8b8711..1088a47bd68 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4219.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4219.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4219" title: "Linker Tools Warning LNK4219" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4219" +ms.date: 11/04/2016 f1_keywords: ["LNK4219"] helpviewer_keywords: ["LNK4219"] -ms.assetid: 363fedf4-b10c-4985-811a-55a9fba688d6 --- # Linker Tools Warning LNK4219 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4220.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4220.md index 34c3b7e524c..11b83b45f5e 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4220.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4220.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4220" title: "Linker Tools Warning LNK4220" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4220" +ms.date: 11/04/2016 f1_keywords: ["LNK4220"] helpviewer_keywords: ["LNK4220"] -ms.assetid: ba0cddfc-9c56-4a09-8207-f7b840a24b4d --- # Linker Tools Warning LNK4220 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4221.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4221.md index 894d302cb07..e137bfa2f46 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4221.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4221.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4221" title: "Linker Tools Warning LNK4221" +description: "Learn more about: Linker Tools Warning LNK4221" ms.date: 06/29/2022 f1_keywords: ["LNK4221"] helpviewer_keywords: ["LNK4221"] -ms.assetid: 8e2eb2de-9532-4b85-908a-8c9ff5c4cccb --- # Linker Tools Warning LNK4221 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4222.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4222.md index c17b20efad3..3f20f3c7ae0 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4222.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4222.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4222" title: "Linker Tools Warning LNK4222" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4222" +ms.date: 11/04/2016 f1_keywords: ["LNK4222"] helpviewer_keywords: ["LNK4222"] -ms.assetid: b7bb1794-41fb-4c83-b9b0-59c0d786a7da --- # Linker Tools Warning LNK4222 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4224.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4224.md index 7cafda88288..a9794db869a 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4224.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4224.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4224" title: "Linker Tools Warning LNK4224" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4224" +ms.date: 11/04/2016 f1_keywords: ["LNK4224"] helpviewer_keywords: ["LNK4224"] -ms.assetid: 8624b70e-0b93-43cf-b457-834d38632d0b --- # Linker Tools Warning LNK4224 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4227.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4227.md index 55595308a94..6cab69aeb42 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4227.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4227.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4227" title: "Linker Tools Warning LNK4227" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4227" +ms.date: 11/04/2016 f1_keywords: ["LNK4227"] helpviewer_keywords: ["LNK4227"] -ms.assetid: 941a0414-9964-4e02-8487-f9daa42ef7f9 --- # Linker Tools Warning LNK4227 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4229.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4229.md index fc77eed7aeb..7452fa173e5 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4229.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4229.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4229" title: "Linker Tools Warning LNK4229" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4229" +ms.date: 11/04/2016 f1_keywords: ["LNK4229"] helpviewer_keywords: ["LNK4229"] -ms.assetid: 00e70d09-efd8-4e4e-8d48-6ba282c32ec1 --- # Linker Tools Warning LNK4229 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4237.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4237.md index b46559f5001..3cc9490ee77 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4237.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4237.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4237" title: "Linker Tools Warning LNK4237" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4237" +ms.date: 11/04/2016 f1_keywords: ["LNK4237"] helpviewer_keywords: ["LNK4237"] -ms.assetid: 87bfec39-5241-464f-9feb-517b49f352ea --- # Linker Tools Warning LNK4237 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4247.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4247.md index 72cde3c4ef7..c72d8eb71d3 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4247.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4247.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4247" title: "Linker Tools Warning LNK4247" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4247" +ms.date: 11/04/2016 f1_keywords: ["LNK4247"] helpviewer_keywords: ["LNK4247"] -ms.assetid: 085d7fdf-9eaf-4641-8473-6eaadd073c7b --- # Linker Tools Warning LNK4247 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4248.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4248.md index 7f425183e6b..6cf871ff31f 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4248.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4248.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4248" title: "Linker Tools Warning LNK4248" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4248" +ms.date: 11/04/2016 f1_keywords: ["LNK4248"] helpviewer_keywords: ["LNK4248"] -ms.assetid: e40523ff-e3cb-4ba6-ab79-23f0f339f6cf --- # Linker Tools Warning LNK4248 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4253.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4253.md index 5a689902df5..5ccccd7822f 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4253.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4253.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4253" title: "Linker Tools Warning LNK4253" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4253" +ms.date: 11/04/2016 f1_keywords: ["LNK4253"] helpviewer_keywords: ["LNK4253"] -ms.assetid: ec7433a9-aa9c-495a-a9f2-075e7bc3e7bc --- # Linker Tools Warning LNK4253 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4254.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4254.md index 135662e1d8a..a43282f7879 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4254.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4254.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Linker Tools Warning LNK4254" title: "Linker Tools Warning LNK4254" -ms.date: "11/04/2016" +description: "Learn more about: Linker Tools Warning LNK4254" +ms.date: 11/04/2016 f1_keywords: ["LNK4254"] helpviewer_keywords: ["LNK4254"] -ms.assetid: 6f41dfb3-ca21-40d3-bac7-b637e578efa4 --- # Linker Tools Warning LNK4254 diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4286.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4286.md index 708f7418026..41cd2a2ed46 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4286.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4286.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Linker Tools Warning LNK4286" title: "Linker Tools Warning LNK4286" -ms.date: "04/15/2019" +description: "Learn more about: Linker Tools Warning LNK4286" +ms.date: 04/15/2019 f1_keywords: ["LNK4286"] helpviewer_keywords: ["LNK4286"] --- diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4306.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4306.md index fea9a5abab9..399ff2c7d4c 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4306.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4306.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Linker tools warning LNK4306" title: "Linker tools warning LNK4306" +description: "Learn more about: Linker tools warning LNK4306" ms.date: 01/30/2024 f1_keywords: ["LNK4306"] helpviewer_keywords: ["LNK4306"] diff --git a/docs/error-messages/tool-errors/linker-tools-warning-lnk4307.md b/docs/error-messages/tool-errors/linker-tools-warning-lnk4307.md index d6aa7c99683..3c9e72ff11c 100644 --- a/docs/error-messages/tool-errors/linker-tools-warning-lnk4307.md +++ b/docs/error-messages/tool-errors/linker-tools-warning-lnk4307.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Linker Tools warning LNK4307" title: "Linker Tools warning LNK4307" +description: "Learn more about: Linker Tools warning LNK4307" ms.date: 01/30/2024 f1_keywords: ["LNK4307"] helpviewer_keywords: ["LNK4307"] From 053dac29f43d62d3a44725d708a738bbb0f6acf6 Mon Sep 17 00:00:00 2001 From: Alex Guteniev Date: Mon, 22 Sep 2025 20:20:02 +0300 Subject: [PATCH 1915/2255] Update docs/standard-library/vectorized-stl-algorithms.md Co-authored-by: David Justo --- docs/standard-library/vectorized-stl-algorithms.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard-library/vectorized-stl-algorithms.md b/docs/standard-library/vectorized-stl-algorithms.md index 05ecd40526a..549e8119296 100644 --- a/docs/standard-library/vectorized-stl-algorithms.md +++ b/docs/standard-library/vectorized-stl-algorithms.md @@ -75,7 +75,7 @@ In addition to algorithms, the macro controls the manual vectorization of: ## Manually vectorized algorithms for floating point types Vectorization of floating point types is connected with extra difficulties: - - For floating point results, the order of operations may matter. Some reordering may yield a different result, whether more precise, or less precise. Vectorization may need operations reordering, so it may affect that. + - Vectorization may reorder operations, which can affect the precision of floating point results. - Floating point types may contain NaN values, which don't behave transitively while comparing. - Floating point operations may raise exceptions. From 8f4b39fd0f00554174452af43f67e469d76127c1 Mon Sep 17 00:00:00 2001 From: Alex Guteniev Date: Mon, 22 Sep 2025 20:23:29 +0300 Subject: [PATCH 1916/2255] Review feedback Co-authored-by: David Justo --- docs/standard-library/vectorized-stl-algorithms.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/standard-library/vectorized-stl-algorithms.md b/docs/standard-library/vectorized-stl-algorithms.md index 549e8119296..3425add3bcc 100644 --- a/docs/standard-library/vectorized-stl-algorithms.md +++ b/docs/standard-library/vectorized-stl-algorithms.md @@ -74,14 +74,14 @@ In addition to algorithms, the macro controls the manual vectorization of: ## Manually vectorized algorithms for floating point types -Vectorization of floating point types is connected with extra difficulties: +Vectorization of floating point types comes with extra difficulties: - Vectorization may reorder operations, which can affect the precision of floating point results. - - Floating point types may contain NaN values, which don't behave transitively while comparing. + - Floating point types may contain `NaN` values, which don't behave transitively on comparisons. - Floating point operations may raise exceptions. The STL deals with the first two difficulties safely. Only `max_element`, `min_element`, `minmax_element`, `max`, `min`, `minmax`, `is_sorted`, and `is_sorted_until` are manually vectorized. These algorithms: - Do not compute new floating point values, only compare the existing values, so different order does not affect precision. - - As sorting algorithms, require transitivity of comparisons, so NaNs are not allowed as elements. + - Because they are sorting algorithms, `NaNs` are not allowed amongst the operands. There's `_USE_STD_VECTOR_FLOATING_ALGORITHMS` to control the use of these vectorized algorithms for floating point types. Set it to 0 to disable the vectorization. The macro has no effect if `_USE_STD_VECTOR_ALGORITHMS` is set to 0. From 06faaec1ac920c8f4a133aa18a954e39cf1f25a4 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 24 Sep 2025 16:29:37 +0800 Subject: [PATCH 1917/2255] Move leading underscore into the link text --- docs/c-runtime-library/reference/expand-dbg.md | 2 +- docs/c-runtime-library/reference/msize-dbg.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/c-runtime-library/reference/expand-dbg.md b/docs/c-runtime-library/reference/expand-dbg.md index 5998a4195c7..e389be30708 100644 --- a/docs/c-runtime-library/reference/expand-dbg.md +++ b/docs/c-runtime-library/reference/expand-dbg.md @@ -51,7 +51,7 @@ On successful completion, **`_expand_dbg`** returns a pointer to the resized mem ## Remarks -The **`_expand_dbg`** function is a debug version of the _[`expand`](expand.md) function. When [`_DEBUG`](../debug.md) isn't defined, each call to **`_expand_dbg`** is reduced to a call to `_expand`. Both `_expand` and **`_expand_dbg`** resize a memory block in the base heap, but **`_expand_dbg`** accommodates several debugging features: buffers on either side of the user portion of the block to test for leaks, a block type parameter to track specific allocation types, and *`filename`*/*`lineNumber`* information to determine the origin of allocation requests. +The **`_expand_dbg`** function is a debug version of the [`_expand`](expand.md) function. When [`_DEBUG`](../debug.md) isn't defined, each call to **`_expand_dbg`** is reduced to a call to `_expand`. Both `_expand` and **`_expand_dbg`** resize a memory block in the base heap, but **`_expand_dbg`** accommodates several debugging features: buffers on either side of the user portion of the block to test for leaks, a block type parameter to track specific allocation types, and *`filename`*/*`lineNumber`* information to determine the origin of allocation requests. **`_expand_dbg`** resizes the specified memory block with slightly more space than the requested *`newSize`*. *`newSize`* might be greater or less than the size of the originally allocated memory block. The extra space is used by the debug heap manager to link the debug memory blocks and to provide the application with debug header information and overwrite buffers. The resize is accomplished by either expanding or contracting the original memory block. **`_expand_dbg`** doesn't move the memory block, as does the [`_realloc_dbg`](realloc-dbg.md) function. diff --git a/docs/c-runtime-library/reference/msize-dbg.md b/docs/c-runtime-library/reference/msize-dbg.md index 01ea05ea499..cbb39bcb58e 100644 --- a/docs/c-runtime-library/reference/msize-dbg.md +++ b/docs/c-runtime-library/reference/msize-dbg.md @@ -36,7 +36,7 @@ On successful completion, **`_msize_dbg`** returns the size (in bytes) of the sp ## Remarks -**`_msize_dbg`** is a debug version of the _[`msize`](msize.md) function. When [`_DEBUG`](../debug.md) isn't defined, each call to **`_msize_dbg`** is reduced to a call to `_msize`. Both `_msize` and **`_msize_dbg`** calculate the size of a memory block in the base heap, but **`_msize_dbg`** adds two debugging features: It includes the buffers on either side of the user portion of the memory block in the returned size and it allows size calculations for specific block types. +**`_msize_dbg`** is a debug version of the [`_msize`](msize.md) function. When [`_DEBUG`](../debug.md) isn't defined, each call to **`_msize_dbg`** is reduced to a call to `_msize`. Both `_msize` and **`_msize_dbg`** calculate the size of a memory block in the base heap, but **`_msize_dbg`** adds two debugging features: It includes the buffers on either side of the user portion of the memory block in the returned size and it allows size calculations for specific block types. For information about how memory blocks are allocated, initialized, and managed in the debug version of the base heap, see [CRT debug heap details](../crt-debug-heap-details.md). For information about the allocation block types and how they're used, see [Types of blocks on the debug heap](../crt-debug-heap-details.md#types-of-blocks-on-the-debug-heap). For information about the differences between standard heap functions and the debug versions, see [Debug versions of heap allocation functions](../debug-versions-of-heap-allocation-functions.md). From 9a7c645d0ea7b143ea0c8a8a3c3b10c473490e71 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 24 Sep 2025 16:31:29 +0800 Subject: [PATCH 1918/2255] Update metadata in 2 C runtime topics --- docs/c-runtime-library/reference/expand-dbg.md | 5 ++--- docs/c-runtime-library/reference/msize-dbg.md | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/docs/c-runtime-library/reference/expand-dbg.md b/docs/c-runtime-library/reference/expand-dbg.md index e389be30708..04f87e4d632 100644 --- a/docs/c-runtime-library/reference/expand-dbg.md +++ b/docs/c-runtime-library/reference/expand-dbg.md @@ -1,14 +1,13 @@ --- -description: "Learn more about: _expand_dbg" title: "_expand_dbg" -ms.date: "11/04/2016" +description: "Learn more about: _expand_dbg" +ms.date: 11/04/2016 api_name: ["_expand_dbg"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"] api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["expand_dbg", "_expand_dbg"] helpviewer_keywords: ["memory blocks, changing size", "expand_dbg function", "_expand_dbg function"] -ms.assetid: dc58c91f-72a8-48c6-b643-fe130fb6c1fd --- # `_expand_dbg` diff --git a/docs/c-runtime-library/reference/msize-dbg.md b/docs/c-runtime-library/reference/msize-dbg.md index cbb39bcb58e..14b02c921cb 100644 --- a/docs/c-runtime-library/reference/msize-dbg.md +++ b/docs/c-runtime-library/reference/msize-dbg.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: _msize_dbg" title: "_msize_dbg" -ms.date: "11/04/2016" +description: "Learn more about: _msize_dbg" +ms.date: 11/04/2016 api_name: ["_msize_dbg"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"] api_type: ["DLLExport"] From 69cbdd1305dd9671bd69c32913ad0bf9436c716d Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 24 Sep 2025 16:54:03 +0800 Subject: [PATCH 1919/2255] Add missing space around links --- docs/c-runtime-library/reference/alloca.md | 2 +- docs/data/oledb/cdatasource-class.md | 2 +- docs/dotnet/multimap-stl-clr.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2813.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/c-runtime-library/reference/alloca.md b/docs/c-runtime-library/reference/alloca.md index 693bcebda9f..dc7f6cd543d 100644 --- a/docs/c-runtime-library/reference/alloca.md +++ b/docs/c-runtime-library/reference/alloca.md @@ -49,7 +49,7 @@ However, **`_alloca`** can be called directly from within an EH routine or from > [!IMPORTANT] > If **`_alloca`** is called inside a try block, you must call [`_resetstkoflw`](resetstkoflw.md) in the catch block. -In addition to the above restrictions, when using the[`/clr` (Common Language Runtime Compilation)](../../build/reference/clr-common-language-runtime-compilation.md) option, **`_alloca`** can't be used in **`__except`** blocks. For more information, see [`/clr` Restrictions](../../build/reference/clr-restrictions.md). +In addition to the above restrictions, when using the [`/clr` (Common Language Runtime Compilation)](../../build/reference/clr-common-language-runtime-compilation.md) option, **`_alloca`** can't be used in **`__except`** blocks. For more information, see [`/clr` Restrictions](../../build/reference/clr-restrictions.md). ## Requirements diff --git a/docs/data/oledb/cdatasource-class.md b/docs/data/oledb/cdatasource-class.md index befd0149817..a79a4fccc33 100644 --- a/docs/data/oledb/cdatasource-class.md +++ b/docs/data/oledb/cdatasource-class.md @@ -201,7 +201,7 @@ HRESULT Open(LPCSTR szProgID, [in] The user's password. *nInitMode*
-[in] Database initialization mode. See [Initialization Properties](/previous-versions/windows/desktop/ms723127(v=vs.85))in the *OLE DB Programmer's Reference* in the Windows SDK for a list of valid initialization modes. If *nInitMode* is zero, no initialization mode is included in the property set used to open the connection. +[in] Database initialization mode. See [Initialization Properties](/previous-versions/windows/desktop/ms723127(v=vs.85)) in the *OLE DB Programmer's Reference* in the Windows SDK for a list of valid initialization modes. If *nInitMode* is zero, no initialization mode is included in the property set used to open the connection. *szProgID*
[in] A program identifier. diff --git a/docs/dotnet/multimap-stl-clr.md b/docs/dotnet/multimap-stl-clr.md index 5579077cd35..d3fcda8bd0b 100644 --- a/docs/dotnet/multimap-stl-clr.md +++ b/docs/dotnet/multimap-stl-clr.md @@ -770,7 +770,7 @@ Key value to search for. ### Remarks -If at least one element in the controlled sequence has equivalent ordering with *`key`*, the member function returns an iterator designating one of those elements; otherwise it returns[`end()`](#end). You use it to locate an element currently in the controlled sequence that matches a specified key. +If at least one element in the controlled sequence has equivalent ordering with *`key`*, the member function returns an iterator designating one of those elements; otherwise it returns [`end()`](#end). You use it to locate an element currently in the controlled sequence that matches a specified key. ### Example diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2813.md b/docs/error-messages/compiler-errors-2/compiler-error-c2813.md index ac5acab6159..d2c6623c52b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2813.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2813.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["C2813"] ## Remarks -C2813 is emitted if in a compiler command you specify the **/MP** compiler option and two or more files to compile, and one or more of the files contains the[#import](../../preprocessor/hash-import-directive-cpp.md) preprocessor directive. The [#import](../../preprocessor/hash-import-directive-cpp.md) directive generates C++ classes from the types in the specified type library, and then writes those classes to two header files. The [#import](../../preprocessor/hash-import-directive-cpp.md) directive is not supported because if multiple compilation units import the same type library, those units conflict when they try to write the same header files at the same time. +C2813 is emitted if in a compiler command you specify the **/MP** compiler option and two or more files to compile, and one or more of the files contains the [#import](../../preprocessor/hash-import-directive-cpp.md) preprocessor directive. The [#import](../../preprocessor/hash-import-directive-cpp.md) directive generates C++ classes from the types in the specified type library, and then writes those classes to two header files. The [#import](../../preprocessor/hash-import-directive-cpp.md) directive is not supported because if multiple compilation units import the same type library, those units conflict when they try to write the same header files at the same time. This compiler error and the **/MP** compiler option are new in Visual Studio 2008. From db45945588d1b5108b56c704787b1d4902e031c5 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 24 Sep 2025 16:55:41 +0800 Subject: [PATCH 1920/2255] Update metadata in 3 topics --- docs/c-runtime-library/reference/alloca.md | 2 +- docs/data/oledb/cdatasource-class.md | 5 ++--- docs/dotnet/multimap-stl-clr.md | 5 ++--- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/docs/c-runtime-library/reference/alloca.md b/docs/c-runtime-library/reference/alloca.md index dc7f6cd543d..7c78844e4d9 100644 --- a/docs/c-runtime-library/reference/alloca.md +++ b/docs/c-runtime-library/reference/alloca.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: _alloca" title: "_alloca" +description: "Learn more about: _alloca" ms.date: 01/05/2022 api_name: ["_alloca"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"] diff --git a/docs/data/oledb/cdatasource-class.md b/docs/data/oledb/cdatasource-class.md index a79a4fccc33..d85b974a3cb 100644 --- a/docs/data/oledb/cdatasource-class.md +++ b/docs/data/oledb/cdatasource-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: CDataSource Class" title: "CDataSource Class" -ms.date: "11/04/2016" +description: "Learn more about: CDataSource Class" +ms.date: 11/04/2016 f1_keywords: ["ATL.CDataSource", "ATL::CDataSource", "CDataSource", "ATL::CDataSource::Close", "ATL.CDataSource.Close", "CDataSource::Close", "CDataSource.Close", "ATL::CDataSource::GetInitializationString", "CDataSource.GetInitializationString", "GetInitializationString", "CDataSource::GetInitializationString", "ATL.CDataSource.GetInitializationString", "CDataSource::GetProperties", "ATL.CDataSource.GetProperties", "CDataSource.GetProperties", "ATL::CDataSource::GetProperties", "ATL::CDataSource::GetProperty", "ATL.CDataSource.GetProperty", "CDataSource.GetProperty", "CDataSource::GetProperty", "ATL::CDataSource::Open", "ATL.CDataSource.Open", "CDataSource::Open", "CDataSource.Open", "CDataSource::OpenFromFileName", "ATL::CDataSource::OpenFromFileName", "OpenFromFileName", "CDataSource.OpenFromFileName", "ATL.CDataSource.OpenFromFileName", "CDataSource.OpenFromInitializationString", "OpenFromInitializationString", "CDataSource::OpenFromInitializationString", "ATL::CDataSource::OpenFromInitializationString", "ATL.CDataSource.OpenFromInitializationString", "CDataSource.OpenWithPromptFileName", "OpenWithPromptFileName", "ATL::CDataSource::OpenWithPromptFileName", "ATL.CDataSource.OpenWithPromptFileName", "CDataSource::OpenWithPromptFileName", "CDataSource::OpenWithServiceComponents", "OpenWithServiceComponents", "CDataSource.OpenWithServiceComponents"] helpviewer_keywords: ["CDataSource class", "Close method", "GetInitializationString method", "GetProperties method", "GetProperty method", "Open method", "OpenFromFileName method", "OpenFromInitializationString method", "OpenWithPromptFileName method", "OpenWithServiceComponents method"] -ms.assetid: 99bf862c-9d5c-4117-9501-aa0e2672085c --- # CDataSource Class diff --git a/docs/dotnet/multimap-stl-clr.md b/docs/dotnet/multimap-stl-clr.md index d3fcda8bd0b..16acca22db6 100644 --- a/docs/dotnet/multimap-stl-clr.md +++ b/docs/dotnet/multimap-stl-clr.md @@ -1,11 +1,10 @@ --- -description: "Learn more about: multimap (STL/CLR)" title: "multimap (STL/CLR)" -ms.date: "11/04/2016" +description: "Learn more about: multimap (STL/CLR)" +ms.date: 11/04/2016 ms.topic: "reference" f1_keywords: ["cliext::multimap", "cliext::multimap::begin", "cliext::multimap::clear", "cliext::multimap::const_iterator", "cliext::multimap::const_reference", "cliext::multimap::const_reverse_iterator", "cliext::multimap::count", "cliext::multimap::difference_type", "cliext::multimap::empty", "cliext::multimap::end", "cliext::multimap::equal_range", "cliext::multimap::erase", "cliext::multimap::find", "cliext::multimap::generic_container", "cliext::multimap::generic_iterator", "cliext::multimap::generic_reverse_iterator", "cliext::multimap::generic_value", "cliext::multimap::insert", "cliext::multimap::iterator", "cliext::multimap::key_comp", "cliext::multimap::key_compare", "cliext::multimap::key_type", "cliext::multimap::lower_bound", "cliext::multimap::make_value", "cliext::multimap::mapped_type", "cliext::multimap::multimap", "cliext::multimap::operator=", "cliext::multimap::rbegin", "cliext::multimap::reference", "cliext::multimap::rend", "cliext::multimap::reverse_iterator", "cliext::multimap::size", "cliext::multimap::size_type", "cliext::multimap::swap", "cliext::multimap::to_array", "cliext::multimap::upper_bound", "cliext::multimap::value_comp", "cliext::multimap::value_compare", "cliext::multimap::value_type", "cliext::mutlimap::operator!=", "cliext::mutlimap::operator<", "cliext::mutlimap::operator<=", "cliext::mutlimap::operator==", "cliext::mutlimap::operator>", "cliext::mutlimap::operator>="] helpviewer_keywords: [" header [STL/CLR]", " header [STL/CLR]", "multimap class [STL/CLR]", "begin member [STL/CLR]", "clear member [STL/CLR]", "const_iterator member [STL/CLR]", "const_reference member [STL/CLR]", "const_reverse_iterator member [STL/CLR]", "count member [STL/CLR]", "difference_type member [STL/CLR]", "empty member [STL/CLR]", "end member [STL/CLR]", "equal_range member [STL/CLR]", "erase member [STL/CLR]", "find member [STL/CLR]", "generic_container member [STL/CLR]", "generic_iterator member [STL/CLR]", "generic_reverse_iterator member [STL/CLR]", "generic_value member [STL/CLR]", "insert member [STL/CLR]", "iterator member [STL/CLR]", "key_comp member [STL/CLR]", "key_compare member [STL/CLR]", "key_type member [STL/CLR]", "lower_bound member [STL/CLR]", "make_value member [STL/CLR]", "mapped_type member [STL/CLR]", "multimap member [STL/CLR]", "operator= member [STL/CLR]", "rbegin member [STL/CLR]", "reference member [STL/CLR]", "rend member [STL/CLR]", "reverse_iterator member [STL/CLR]", "size member [STL/CLR]", "size_type member [STL/CLR]", "swap member [STL/CLR]", "to_array member [STL/CLR]", "upper_bound member [STL/CLR]", "value_comp member [STL/CLR]", "value_compare member [STL/CLR]", "value_type member [STL/CLR]", "operator!= member [STL/CLR]", "operator< member [STL/CLR]", "operator<= member [STL/CLR]", "operator== member [STL/CLR]", "operator> member [STL/CLR]", "operator>= member [STL/CLR]"] -ms.assetid: 3dfe329d-a078-462a-b050-7999ce6110ad --- # `multimap` (STL/CLR) From 6d98a0e94135c1d34a7f6b5ba5eb1a209035a229 Mon Sep 17 00:00:00 2001 From: Alex Guteniev Date: Wed, 24 Sep 2025 20:36:51 +0300 Subject: [PATCH 1921/2255] STL review feedback Co-authored-by: StephanTLavavej --- docs/standard-library/vectorized-stl-algorithms.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/standard-library/vectorized-stl-algorithms.md b/docs/standard-library/vectorized-stl-algorithms.md index 3425add3bcc..9a02386a275 100644 --- a/docs/standard-library/vectorized-stl-algorithms.md +++ b/docs/standard-library/vectorized-stl-algorithms.md @@ -10,7 +10,7 @@ helpviewer_keywords: ["_USE_STD_VECTOR_ALGORITHMS", "_USE_STD_VECTOR_FLOATING_AL Under certain conditions, STL algorithms execute not element-wise, but multiple element at once on a single CPU core. This is possible due to SIMD (single instruction, multiple data). The use of such approach instead of element-wise approach is called vectorization. An implementation that is not vectorized is called scalar. The conditions for vectorization are: - - The container or range is contiguous. `array`, `vector`, and `basic_string` are contiguous containers, `span` and `basic_string_view` provide contiguous ranges. + - The container or range is contiguous. `array`, `vector`, and `basic_string` are contiguous containers, `span` and `basic_string_view` provide contiguous ranges. Built-in array elements also form contiguous range. In contrast, `list` and `map` are not contiguous containers. - There are such SIMD instructions available for the target platform that implement the particular algorithm on particular element types efficiently. Often this is true for plain types (like built-in integers) and simple operations. - Either of the following: - The compiler is capable of emitting vectorized machine code for an implementation written as scalar code (auto-vectorization) @@ -18,15 +18,15 @@ The conditions for vectorization are: ## Auto-vectorization in STL -See [Auto-Vectorizer](../parallel/auto-parallelization-and-auto-vectorization.md#auto-vectorizer). It applies to the STL implementation code the same way as to user code. +See [Auto-Vectorizer](../parallel/auto-parallelization-and-auto-vectorization.md#auto-vectorizer) and the discussion of [`/arch`](../build/reference/arch-minimum-cpu-architecture.md) switch there. It applies to the STL implementation code the same way as to user code. Algorithms like `transform`, `reduce`, `accumulate` heavily benefit from auto-vectorization. ## Manual vectorization in STL -For x64 and x86 targets, certain algorithms have manual vectorization implemented. This implementation is pre-compiled, and uses runtime CPU dispatch, so it is engaged on suitable CPUs only. +For x64 and x86 targets, certain algorithms have manual vectorization implemented. This implementation is separately compiled, and uses runtime CPU dispatch, so it is engaged on suitable CPUs only. -The manually vectorized algorithms use template meta-programming to detect the suitable element types, so they only vectorized for simple types, like standard integer types. +The manually vectorized algorithms use template meta-programming to detect the suitable element types, so they are only vectorized for simple types, like standard integer types. Generally, programs either benefit in performance from this manual vectorization or are unaffected by it. In case of any problem, you can disable manual vectorization by defining `_USE_STD_VECTOR_ALGORITHMS` macro set to 0. It defaults to 1 on x64 and x86, which means that manually vectorized algorithms are enabled by default. From 59f997725c8db06fee2bfeaf7d0b0c5efd31afb4 Mon Sep 17 00:00:00 2001 From: Alex Guteniev Date: Wed, 24 Sep 2025 21:01:49 +0300 Subject: [PATCH 1922/2255] Spelling --- docs/standard-library/vectorized-stl-algorithms.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/standard-library/vectorized-stl-algorithms.md b/docs/standard-library/vectorized-stl-algorithms.md index 9a02386a275..ad709792fb1 100644 --- a/docs/standard-library/vectorized-stl-algorithms.md +++ b/docs/standard-library/vectorized-stl-algorithms.md @@ -7,10 +7,10 @@ helpviewer_keywords: ["_USE_STD_VECTOR_ALGORITHMS", "_USE_STD_VECTOR_FLOATING_AL --- # Vectorized STL Algorithms -Under certain conditions, STL algorithms execute not element-wise, but multiple element at once on a single CPU core. This is possible due to SIMD (single instruction, multiple data). The use of such approach instead of element-wise approach is called vectorization. An implementation that is not vectorized is called scalar. +Under certain conditions, STL algorithms execute not element-wise, but multiple elements at once on a single CPU core. This is possible due to SIMD (single instruction, multiple data). The use of such an approach instead of element-wise approach is called vectorization. An implementation that is not vectorized is called scalar. The conditions for vectorization are: - - The container or range is contiguous. `array`, `vector`, and `basic_string` are contiguous containers, `span` and `basic_string_view` provide contiguous ranges. Built-in array elements also form contiguous range. In contrast, `list` and `map` are not contiguous containers. + - The container or range is contiguous. `array`, `vector`, and `basic_string` are contiguous containers, `span` and `basic_string_view` provide contiguous ranges. Built-in array elements also form contiguous ranges. In contrast, `list` and `map` are not contiguous containers. - There are such SIMD instructions available for the target platform that implement the particular algorithm on particular element types efficiently. Often this is true for plain types (like built-in integers) and simple operations. - Either of the following: - The compiler is capable of emitting vectorized machine code for an implementation written as scalar code (auto-vectorization) @@ -28,7 +28,7 @@ For x64 and x86 targets, certain algorithms have manual vectorization implemente The manually vectorized algorithms use template meta-programming to detect the suitable element types, so they are only vectorized for simple types, like standard integer types. -Generally, programs either benefit in performance from this manual vectorization or are unaffected by it. In case of any problem, you can disable manual vectorization by defining `_USE_STD_VECTOR_ALGORITHMS` macro set to 0. It defaults to 1 on x64 and x86, which means that manually vectorized algorithms are enabled by default. +Generally, programs either benefit in performance from this manual vectorization or are unaffected by it. In case of any problem, you can disable manual vectorization by defining the `_USE_STD_VECTOR_ALGORITHMS` macro set to 0. It defaults to 1 on x64 and x86, which means that manually vectorized algorithms are enabled by default. The following algorithms have manual vectorization controlled via `_USE_STD_VECTOR_ALGORITHMS` macro: - `contains` From ce5dca49a827caa3abbf4d7a85f096f9fa1e6f71 Mon Sep 17 00:00:00 2001 From: Alex Guteniev Date: Thu, 25 Sep 2025 14:58:08 +0300 Subject: [PATCH 1923/2255] Global macro --- docs/standard-library/vectorized-stl-algorithms.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/standard-library/vectorized-stl-algorithms.md b/docs/standard-library/vectorized-stl-algorithms.md index ad709792fb1..65e7d3b6659 100644 --- a/docs/standard-library/vectorized-stl-algorithms.md +++ b/docs/standard-library/vectorized-stl-algorithms.md @@ -30,6 +30,8 @@ The manually vectorized algorithms use template meta-programming to detect the s Generally, programs either benefit in performance from this manual vectorization or are unaffected by it. In case of any problem, you can disable manual vectorization by defining the `_USE_STD_VECTOR_ALGORITHMS` macro set to 0. It defaults to 1 on x64 and x86, which means that manually vectorized algorithms are enabled by default. +When overriding `_USE_STD_VECTOR_ALGORITHMS` make sure to set the same value for all linked translation units that use algorithms. Reliable way to achieve that is using project properties rather than defining it in the source. + The following algorithms have manual vectorization controlled via `_USE_STD_VECTOR_ALGORITHMS` macro: - `contains` - `contains_subrange` @@ -87,6 +89,8 @@ There's `_USE_STD_VECTOR_FLOATING_ALGORITHMS` to control the use of these vector `_USE_STD_VECTOR_FLOATING_ALGORITHMS` defaults to 0 when [`/fp:except`](../build/reference/fp-specify-floating-point-behavior.md#except) option is set. This is to avoid problems with exceptions. +When overriding `_USE_STD_VECTOR_FLOATING_ALGORITHMS` make sure to set the same value for all linked translation units that use algorithms. Reliable way to achieve that is using project properties rather than defining it in the source. + ## See also [Auto-Vectorizer](../parallel/auto-parallelization-and-auto-vectorization.md#auto-vectorizer) From b281ff0a6556d413c6c76ce698b304db5e89ed39 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Thu, 25 Sep 2025 22:40:23 +0800 Subject: [PATCH 1924/2255] Adjust spacing around commas --- docs/build/arm64-exception-handling.md | 2 +- docs/build/reference/guard-enable-control-flow-guard.md | 2 +- docs/build/reference/module-exportheader.md | 2 +- docs/build/reference/property-page-xml-files.md | 2 +- docs/build/reference/translateinclude.md | 2 +- docs/c-language/generic-selection.md | 2 +- docs/c-runtime-library/cgets-cgetws.md | 2 +- docs/c-runtime-library/gets-getws.md | 2 +- docs/c-runtime-library/global-state.md | 2 +- docs/c-runtime-library/parameter-validation.md | 2 +- .../reference/assert-asserte-assert-expr-macros.md | 2 +- docs/c-runtime-library/reference/ctan-ctanf-ctanl.md | 2 +- docs/c-runtime-library/reference/exit-exit-exit.md | 2 +- docs/c-runtime-library/reference/mbrtoc16-mbrtoc323.md | 2 +- docs/c-runtime-library/reference/nextafter-functions.md | 2 +- .../snprintf-snprintf-snprintf-l-snwprintf-snwprintf-l.md | 2 +- .../reference/strtoumax-strtoumax-l-wcstoumax-wcstoumax-l.md | 2 +- docs/c-runtime-library/reference/tgamma-tgammaf-tgammal.md | 2 +- ...s-vsnprintf-s-vsnprintf-s-l-vsnwprintf-s-vsnwprintf-s-l.md | 2 +- .../using-rule-sets-to-specify-the-cpp-rules-to-run.md | 2 +- docs/cpp/floating-limits.md | 2 +- docs/cpp/restrict-cpp-amp.md | 2 +- docs/cpp/templates-cpp.md | 2 +- docs/cppcx/attributes-c-cx.md | 2 +- docs/cppcx/platform-collections-unorderedmap-class.md | 2 +- docs/extensions/partial-cpp-component-extensions.md | 2 +- docs/extensions/typeid-cpp-component-extensions.md | 2 +- docs/get-started/tutorial-console-cpp.md | 2 +- docs/parallel/amp/cpp-amp-overview.md | 2 +- docs/porting/visual-cpp-change-history-2003-2015.md | 2 +- docs/porting/visual-cpp-what-s-new-2003-through-2015.md | 2 +- docs/preprocessor/pack.md | 2 +- docs/standard-library/ambiguous-local-time.md | 2 +- docs/standard-library/basic-string-class.md | 2 +- docs/standard-library/basic-string-view-class.md | 2 +- docs/standard-library/chrono-functions.md | 2 +- docs/standard-library/chrono-operators.md | 4 ++-- docs/standard-library/duration-class.md | 2 +- docs/standard-library/file-clock-class.md | 2 +- docs/standard-library/filter-view-class.md | 2 +- docs/standard-library/subrange-class.md | 2 +- docs/standard-library/time-point-class.md | 2 +- docs/standard-library/view-interface.md | 2 +- 43 files changed, 44 insertions(+), 44 deletions(-) diff --git a/docs/build/arm64-exception-handling.md b/docs/build/arm64-exception-handling.md index 9bad5d2883f..ed0f9cc58ae 100644 --- a/docs/build/arm64-exception-handling.md +++ b/docs/build/arm64-exception-handling.md @@ -287,7 +287,7 @@ The unwind codes are encoded according to the table below. All unwind codes are |--|--| | `alloc_s` | 000xxxxx: allocate small stack with size \< 512 (2^5 * 16). | | `save_r19r20_x` | 001zzzzz: save `` pair at `[sp-#Z*8]!`, pre-indexed offset >= -248 | -| `save_fplr` | 01zzzzzz: save `` pair at `[sp+#Z*8]`, offset \<= 504. | +| `save_fplr` | 01zzzzzz: save `` pair at `[sp+#Z*8]`, offset \<= 504. | | `save_fplr_x` | 10zzzzzz: save `` pair at `[sp-(#Z+1)*8]!`, pre-indexed offset >= -512 | | `alloc_m` | 11000xxx'xxxxxxxx: allocate large stack with size \< 32K (2^11 * 16). | | `save_regp` | 110010xx'xxzzzzzz: save `x(19+#X)` pair at `[sp+#Z*8]`, offset \<= 504 | diff --git a/docs/build/reference/guard-enable-control-flow-guard.md b/docs/build/reference/guard-enable-control-flow-guard.md index 61a24b9f5aa..1b51ece0e96 100644 --- a/docs/build/reference/guard-enable-control-flow-guard.md +++ b/docs/build/reference/guard-enable-control-flow-guard.md @@ -21,7 +21,7 @@ The **`/guard:cf`** option causes the compiler to analyze control flow for indir When the **`/guard:cf`** Control Flow Guard (CFG) option is specified, the compiler and linker insert extra runtime security checks to detect attempts to compromise your code. During compiling and linking, all indirect calls in your code are analyzed to find every location that the code can reach when it runs correctly. This information is stored in extra structures in the headers of your binaries. The compiler also injects a check before every indirect call in your code that ensures the target is one of the verified locations. If the check fails at runtime on a CFG-aware operating system, the operating system closes the program. -A common attack on software takes advantage of bugs in handling extreme or unexpected inputs. Carefully crafted input to the application may overwrite a location that contains a pointer to executable code. This technique can be used to redirect control flow to code controlled by the attacker. The CFG runtime checks don't fix the data corruption bugs in your executable. They instead make it more difficult for an attacker to use them to execute arbitrary code. CFG is a mitigation tool that prevents calls to locations other than function entry points in your code. It's similar to how Data Execution Prevention (DEP), [/GS](gs-buffer-security-check.md) stack checks, and [`/DYNAMICBASE`](dynamicbase-use-address-space-layout-randomization.md) and [/HIGHENTROPYVA](highentropyva-support-64-bit-aslr.md) address space layout randomization (ASLR) lower the chances that your code becomes an exploit vector. +A common attack on software takes advantage of bugs in handling extreme or unexpected inputs. Carefully crafted input to the application may overwrite a location that contains a pointer to executable code. This technique can be used to redirect control flow to code controlled by the attacker. The CFG runtime checks don't fix the data corruption bugs in your executable. They instead make it more difficult for an attacker to use them to execute arbitrary code. CFG is a mitigation tool that prevents calls to locations other than function entry points in your code. It's similar to how Data Execution Prevention (DEP), [/GS](gs-buffer-security-check.md) stack checks, and [`/DYNAMICBASE`](dynamicbase-use-address-space-layout-randomization.md) and [/HIGHENTROPYVA](highentropyva-support-64-bit-aslr.md) address space layout randomization (ASLR) lower the chances that your code becomes an exploit vector. To use the CFG exploit mitigation technique, pass **`/guard:cf`** to the compiler and **`/GUARD:CF`** to the linker. diff --git a/docs/build/reference/module-exportheader.md b/docs/build/reference/module-exportheader.md index 5c1b8a839c3..f4f558ca283 100644 --- a/docs/build/reference/module-exportheader.md +++ b/docs/build/reference/module-exportheader.md @@ -19,7 +19,7 @@ Tells the compiler to create the header units specified by the input arguments. ### Arguments -The argument to `/exportHeader` is a `/headerName` command-line option that specifies the name, *`header-name`*, of the header file to export. +The argument to `/exportHeader` is a `/headerName` command-line option that specifies the name, *`header-name`*, of the header file to export. ## Remarks diff --git a/docs/build/reference/property-page-xml-files.md b/docs/build/reference/property-page-xml-files.md index b7d32df9fbf..7ed46f8cc98 100644 --- a/docs/build/reference/property-page-xml-files.md +++ b/docs/build/reference/property-page-xml-files.md @@ -128,7 +128,7 @@ A **``** element is the root node in the XML file. It can have many attrib - `Label=""` indicates that when the properties are written as `ItemDefinition` metadata, the label of the parent ItemDefinitionGroup will be empty (every MSBuild element can have a Label). Visual Studio 2017 and later use labeled groups to navigate the .vcxproj project file. The groups that contain most `Rule` properties have an empty string as a label. - - `HasConfigurationCondition="true"` tells the project system to affix a configuration condition to the value so that it takes effect only for the current project configuration (the condition could be affixed to the parent group or the value itself). For example, open the property pages off the project node and set the value of the property **Treat Warnings As Error** under **Configuration Properties > C/C++ General** to "Yes". The following value is written to the project file. Notice the configuration condition attached to the parent ItemDefinitionGroup. + - `HasConfigurationCondition="true"` tells the project system to affix a configuration condition to the value so that it takes effect only for the current project configuration (the condition could be affixed to the parent group or the value itself). For example, open the property pages off the project node and set the value of the property **Treat Warnings As Error** under **Configuration Properties > C/C++ General** to "Yes". The following value is written to the project file. Notice the configuration condition attached to the parent ItemDefinitionGroup. ```xml diff --git a/docs/build/reference/translateinclude.md b/docs/build/reference/translateinclude.md index fa5cadac9e8..814d97b06fc 100644 --- a/docs/build/reference/translateinclude.md +++ b/docs/build/reference/translateinclude.md @@ -13,7 +13,7 @@ This switch instructs the compiler to treat `#include` as `import` for header fi When used with [`/scanDependencies`](scandependencies.md) or [`/sourceDependencies-directives`](sourcedependencies-directives.md), the compiler lists as imported header units in the generated dependency file those headers that are both included in the source and have a corresponding entry in a `header-units.json` file. This dependency info is used by the build system to generate compiled header unit `.ifc` files. Once the header units are built, they're treated by the compiler as an `import` instead of an `#include`. -The `header-units.json` file is only consulted when `/translateInclude` is specified. For more information about the format and purpose of the `header-units.json` file, see [`header-units.json`](header-unit-json-reference.md). +The `header-units.json` file is only consulted when `/translateInclude` is specified. For more information about the format and purpose of the `header-units.json` file, see [`header-units.json`](header-unit-json-reference.md). If an `#include` file isn't listed in the `header-units.json` file, it's treated as a normal `#include`. diff --git a/docs/c-language/generic-selection.md b/docs/c-language/generic-selection.md index 2e9872209a6..15a8a2cbf78 100644 --- a/docs/c-language/generic-selection.md +++ b/docs/c-language/generic-selection.md @@ -26,7 +26,7 @@ For example, the expression `_Generic(42, int: "integer", char: "character", def The first *`assignment-expression`* is called the controlling expression. The type of the controlling expression is determined at compile time and matched against the *`assoc-list`* to find which expression to evaluate and return. The controlling expression isn't evaluated. For example, `_Generic(intFunc(), int: "integer", default: "error");` doesn't result in a call at runtime to `intFunc`. -When the type of the controlling expression is determined, `const`, `volatile`, and `restrict` are removed before matching against *`assoc-list`*. +When the type of the controlling expression is determined, `const`, `volatile`, and `restrict` are removed before matching against *`assoc-list`*. Entries in the `assoc-list` that aren't chosen aren't evaluated. diff --git a/docs/c-runtime-library/cgets-cgetws.md b/docs/c-runtime-library/cgets-cgetws.md index 3869e4230ca..875efdfdd5d 100644 --- a/docs/c-runtime-library/cgets-cgetws.md +++ b/docs/c-runtime-library/cgets-cgetws.md @@ -15,7 +15,7 @@ ms.assetid: 4d5e134a-58c3-4f62-befd-5d235b0212f4 Gets a character string from the console. More secure versions of these functions are available; see [`_cgets_s`, `_cgetws_s`](./reference/cgets-s-cgetws-s.md). > [!IMPORTANT] -> These functions are obsolete. Beginning in Visual Studio 2015, they are not available in the CRT. The secure versions of these functions, _cgets_s and _cgetws_s, are still available. For information on these alternative functions, see [`_cgets_s`, `_cgetws_s`](./reference/cgets-s-cgetws-s.md). +> These functions are obsolete. Beginning in Visual Studio 2015, they are not available in the CRT. The secure versions of these functions, _cgets_s and _cgetws_s, are still available. For information on these alternative functions, see [`_cgets_s`, `_cgetws_s`](./reference/cgets-s-cgetws-s.md). > [!IMPORTANT] > This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md). diff --git a/docs/c-runtime-library/gets-getws.md b/docs/c-runtime-library/gets-getws.md index f3da079669f..f3df496be63 100644 --- a/docs/c-runtime-library/gets-getws.md +++ b/docs/c-runtime-library/gets-getws.md @@ -14,7 +14,7 @@ helpviewer_keywords: ["getws function", "getts function", "_getws function", "li Gets a line from the **`stdin`** stream. More secure versions of these functions are available; see [`gets_s`, `_getws_s`](./reference/gets-s-getws-s.md). > [!IMPORTANT] -> These functions are obsolete. Beginning in Visual Studio 2015, they are not available in the CRT. The secure versions of these functions, `gets_s` and `_getws_s`, are still available. For information on these alternative functions, see [`gets_s`, `_getws_s`](./reference/gets-s-getws-s.md). +> These functions are obsolete. Beginning in Visual Studio 2015, they are not available in the CRT. The secure versions of these functions, `gets_s` and `_getws_s`, are still available. For information on these alternative functions, see [`gets_s`, `_getws_s`](./reference/gets-s-getws-s.md). > [!IMPORTANT] > This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md). diff --git a/docs/c-runtime-library/global-state.md b/docs/c-runtime-library/global-state.md index 9a8a36b10de..a34a614e1a4 100644 --- a/docs/c-runtime-library/global-state.md +++ b/docs/c-runtime-library/global-state.md @@ -29,7 +29,7 @@ There are two ways to isolate your component's CRT state from an app's CRT state - Starting in Windows versions beginning with Windows 10 version 2004, dynamically link to the CRT but call the OS-mode exports (the functions that begin with _o_). To call the OS-mode exports, statically link as before, but ignore the static UCRT by using linker option `/NODEFAULTLIB:libucrt.lib` (release) or `/NODEFAULTLIB:libucrtd.lib` (debug). And add `ucrt.osmode.lib` to the linker input. See [`/NODEFAULTLIB` (Ignore Libraries)](../build/reference/nodefaultlib-ignore-libraries.md) for details. > [!NOTE] -> In source code, write `setlocale()`, not `_o_setlocale()`. When you link against `ucrt.osmode.lib`, the linker will automatically substitute the OS-specific version of the function. That is, `setlocale()` will be substituted with `_o_setlocale()`. +> In source code, write `setlocale()`, not `_o_setlocale()`. When you link against `ucrt.osmode.lib`, the linker will automatically substitute the OS-specific version of the function. That is, `setlocale()` will be substituted with `_o_setlocale()`. Linking against `ucrt.osmode.lib` disables some UCRT calls that are only available in app mode. Attempting to call these functions will result in a link error. diff --git a/docs/c-runtime-library/parameter-validation.md b/docs/c-runtime-library/parameter-validation.md index f63a50cc02c..46053fc1e57 100644 --- a/docs/c-runtime-library/parameter-validation.md +++ b/docs/c-runtime-library/parameter-validation.md @@ -8,7 +8,7 @@ ms.assetid: 019dd5f0-dc61-4d2e-b4e9-b66409ddf1f2 --- # Parameter validation -Most of the security-enhanced CRT functions, and many that aren't, validate their parameters for things like checking pointers for `NULL`, that integers fall into a valid range, or that enumeration values are valid. If an invalid parameter is found, the invalid parameter handler is called. +Most of the security-enhanced CRT functions, and many that aren't, validate their parameters for things like checking pointers for `NULL`, that integers fall into a valid range, or that enumeration values are valid. If an invalid parameter is found, the invalid parameter handler is called. ## Invalid parameter handler routine diff --git a/docs/c-runtime-library/reference/assert-asserte-assert-expr-macros.md b/docs/c-runtime-library/reference/assert-asserte-assert-expr-macros.md index d2d73958108..407364ac2a3 100644 --- a/docs/c-runtime-library/reference/assert-asserte-assert-expr-macros.md +++ b/docs/c-runtime-library/reference/assert-asserte-assert-expr-macros.md @@ -33,7 +33,7 @@ A wide string to display as part of the report. The `_ASSERT_EXPR`, `_ASSERT` and `_ASSERTE` macros provide an application with a clean and simple mechanism for checking assumptions during the debugging process. They're flexible because they don't need to be enclosed in `#ifdef` statements to prevent them from being called in a retail build of an application. This flexibility is achieved by using the [`_DEBUG`](../debug.md) macro. `_ASSERT_EXPR`, `_ASSERT` and `_ASSERTE` are only available when `_DEBUG` is defined at compile time. When `_DEBUG` isn't defined, calls to these macros are removed during preprocessing. -`_ASSERT_EXPR`, `_ASSERT` and `_ASSERTE` evaluate their *`booleanExpression`* argument and when the result is **`false`** (0), they print a diagnostic message and call [`_CrtDbgReportW`](crtdbgreport-crtdbgreportw.md) to generate a debug report. The `_ASSERT` macro prints a simple diagnostic message, `_ASSERTE` includes a string representation of the failed expression in the message, and `_ASSERT_EXPR` includes the *`message`* string in the diagnostic message. These macros do nothing when *`booleanExpression`* evaluates to nonzero. +`_ASSERT_EXPR`, `_ASSERT` and `_ASSERTE` evaluate their *`booleanExpression`* argument and when the result is **`false`** (0), they print a diagnostic message and call [`_CrtDbgReportW`](crtdbgreport-crtdbgreportw.md) to generate a debug report. The `_ASSERT` macro prints a simple diagnostic message, `_ASSERTE` includes a string representation of the failed expression in the message, and `_ASSERT_EXPR` includes the *`message`* string in the diagnostic message. These macros do nothing when *`booleanExpression`* evaluates to nonzero. `_ASSERT_EXPR`, `_ASSERT` and `_ASSERTE` invoke `_CrtDbgReportW`, which causes all output to be in wide characters. `_ASSERTE` properly prints Unicode characters in *`booleanExpression`* and `_ASSERT_EXPR` prints Unicode characters in *`message`*. diff --git a/docs/c-runtime-library/reference/ctan-ctanf-ctanl.md b/docs/c-runtime-library/reference/ctan-ctanf-ctanl.md index a88bd27f839..cbb5fa5b176 100644 --- a/docs/c-runtime-library/reference/ctan-ctanf-ctanl.md +++ b/docs/c-runtime-library/reference/ctan-ctanf-ctanl.md @@ -56,7 +56,7 @@ Because C++ allows overloading, you can call overloads of **`ctan`** that take a | Routine | C header | C++ header | |---|---|---| -| **`ctan`**, **`ctanf`**, **`ctanl`** | \ | \ | +| **`ctan`**, **`ctanf`**, **`ctanl`** | \ | \ | For more compatibility information, see [Compatibility](../compatibility.md). diff --git a/docs/c-runtime-library/reference/exit-exit-exit.md b/docs/c-runtime-library/reference/exit-exit-exit.md index bcec154714b..304f2ce76f0 100644 --- a/docs/c-runtime-library/reference/exit-exit-exit.md +++ b/docs/c-runtime-library/reference/exit-exit-exit.md @@ -52,7 +52,7 @@ The **`exit`**, **`_Exit`**, **`_exit`**, **`quick_exit`**, **`_cexit`**, and ** | **`_cexit`** | Performs complete C library termination procedures and returns to the caller. Doesn't terminate the process. | | **`_c_exit`** | Performs minimal C library termination procedures and returns to the caller. Doesn't terminate the process. | -When you call the **`exit`**, **`_Exit`** or **`_exit`** function, the destructors for any temporary or automatic objects that exist at the time of the call aren't called. An automatic object is a non-static local object defined in a function. A temporary object is an object that's created by the compiler, such as a value returned by a function call. To destroy an automatic object before you call **`exit`**, **`_Exit`**, or **`_exit`**, explicitly call the destructor for the object, as shown here: +When you call the **`exit`**, **`_Exit`** or **`_exit`** function, the destructors for any temporary or automatic objects that exist at the time of the call aren't called. An automatic object is a non-static local object defined in a function. A temporary object is an object that's created by the compiler, such as a value returned by a function call. To destroy an automatic object before you call **`exit`**, **`_Exit`**, or **`_exit`**, explicitly call the destructor for the object, as shown here: ```cpp void last_fn() {} diff --git a/docs/c-runtime-library/reference/mbrtoc16-mbrtoc323.md b/docs/c-runtime-library/reference/mbrtoc16-mbrtoc323.md index f30c701ea5f..9b812930430 100644 --- a/docs/c-runtime-library/reference/mbrtoc16-mbrtoc323.md +++ b/docs/c-runtime-library/reference/mbrtoc16-mbrtoc323.md @@ -62,7 +62,7 @@ On success, returns the value of the first of these conditions that applies, giv The **`mbrtoc16`** function reads up to *`max_bytes`* bytes from *`source`* to find the first complete, valid UTF-8 multibyte character, and then stores the equivalent UTF-16 character in *`destination`*. If the character requires more than one UTF-16 output character, such as a surrogate pair, then the *`state`* value is set to store the next UTF-16 character in *`destination`* on the next call to **`mbrtoc16`**. The **`mbrtoc32`** function is identical, but output is stored as a UTF-32 character. -If *`source`* is null, these functions return the equivalent of a call made using arguments of `NULL` for *`destination`*, `""` (an empty, null-terminated string) for *`source`*, and 1 for *`max_bytes`*. The passed values of *`destination`* and *`max_bytes`* are ignored. +If *`source`* is null, these functions return the equivalent of a call made using arguments of `NULL` for *`destination`*, `""` (an empty, null-terminated string) for *`source`*, and 1 for *`max_bytes`*. The passed values of *`destination`* and *`max_bytes`* are ignored. If *`source`* isn't null, the function starts at the beginning of the string and inspects up to *`max_bytes`* bytes to determine the number of bytes required to complete the next UTF-8 multibyte character, including any shift sequences. If the examined bytes contain a valid and complete UTF-8 multibyte character, the function converts the character into the equivalent 16-bit or 32-bit wide character or characters. If *`destination`* isn't null, the function stores the first (and possibly only) result character in destination. If extra output characters are required, a value is set in *`state`*, so that subsequent calls to the function output the extra characters and return the value -3. If no more output characters are required, then *`state`* is set to the initial shift state. diff --git a/docs/c-runtime-library/reference/nextafter-functions.md b/docs/c-runtime-library/reference/nextafter-functions.md index e2b6758121d..1e4d8da31d0 100644 --- a/docs/c-runtime-library/reference/nextafter-functions.md +++ b/docs/c-runtime-library/reference/nextafter-functions.md @@ -68,7 +68,7 @@ By default, this function's global state is scoped to the application. To change |---|---|---| | **`nextafter`**, **`nextafterf`**, **`nextafterl`**, **`_nextafterf`**, **`nexttoward`**, **`nexttowardf`**, **`nexttowardl`** | `` | `` or `` | | **`_nextafter`** | `` | `` or `` | -| **`nextafter`** macro, **`nexttoward`** macro | `` | | +| **`nextafter`** macro, **`nexttoward`** macro | `` | | For more compatibility information, see [Compatibility](../compatibility.md). diff --git a/docs/c-runtime-library/reference/snprintf-snprintf-snprintf-l-snwprintf-snwprintf-l.md b/docs/c-runtime-library/reference/snprintf-snprintf-snprintf-l-snwprintf-snwprintf-l.md index 6043ec459e8..a9ceb9d7a60 100644 --- a/docs/c-runtime-library/reference/snprintf-snprintf-snprintf-l-snwprintf-snwprintf-l.md +++ b/docs/c-runtime-library/reference/snprintf-snprintf-snprintf-l-snwprintf-snwprintf-l.md @@ -175,7 +175,7 @@ In C++, these functions have template overloads that invoke the newer, more secu | Routine | Required header | |---|---| -| **`snprintf`**, **`_snprintf`**, **`_snprintf_l`** | `` | +| **`snprintf`**, **`_snprintf`**, **`_snprintf_l`** | `` | | **`_snwprintf`**, **`_snwprintf_l`** | `` or `` | For more compatibility information, see [Compatibility](../compatibility.md). diff --git a/docs/c-runtime-library/reference/strtoumax-strtoumax-l-wcstoumax-wcstoumax-l.md b/docs/c-runtime-library/reference/strtoumax-strtoumax-l-wcstoumax-wcstoumax-l.md index 39b89feffc5..620cdd63710 100644 --- a/docs/c-runtime-library/reference/strtoumax-strtoumax-l-wcstoumax-wcstoumax-l.md +++ b/docs/c-runtime-library/reference/strtoumax-strtoumax-l-wcstoumax-wcstoumax-l.md @@ -88,7 +88,7 @@ A *`whitespace`* may consist of space and tab characters, which are ignored. *`d | Routine | Required header | |---|---| -| **`strtoumax`**, **`wcstoumax`**, **`_strtoumax_l`**, **`_wcstoumax_l`** | \ | +| **`strtoumax`**, **`wcstoumax`**, **`_strtoumax_l`**, **`_wcstoumax_l`** | \ | For more compatibility information, see [Compatibility](../compatibility.md). diff --git a/docs/c-runtime-library/reference/tgamma-tgammaf-tgammal.md b/docs/c-runtime-library/reference/tgamma-tgammaf-tgammal.md index 820761ba8b9..a8bb3f757de 100644 --- a/docs/c-runtime-library/reference/tgamma-tgammaf-tgammal.md +++ b/docs/c-runtime-library/reference/tgamma-tgammaf-tgammal.md @@ -78,7 +78,7 @@ By default, this function's global state is scoped to the application. To change | Function | C header | C++ header | |---|---|---| -| **`tgamma`**, **`tgammaf`**, **`tgammal`** | \ | \ | +| **`tgamma`**, **`tgammaf`**, **`tgammal`** | \ | \ | | **`tgamma`** macro | \ | | For more compatibility information, see [Compatibility](../compatibility.md). diff --git a/docs/c-runtime-library/reference/vsnprintf-s-vsnprintf-s-vsnprintf-s-l-vsnwprintf-s-vsnwprintf-s-l.md b/docs/c-runtime-library/reference/vsnprintf-s-vsnprintf-s-vsnprintf-s-l-vsnwprintf-s-vsnwprintf-s-l.md index 341e63eaa5e..0cdb13f915d 100644 --- a/docs/c-runtime-library/reference/vsnprintf-s-vsnprintf-s-vsnprintf-s-l-vsnwprintf-s-vsnwprintf-s-l.md +++ b/docs/c-runtime-library/reference/vsnprintf-s-vsnprintf-s-vsnprintf-s-l-vsnwprintf-s-vsnwprintf-s-l.md @@ -6,7 +6,7 @@ api_name: ["_vsnwprintf_s", "_vsnwprintf_s_l", "_vsnprintf_s", "vsnprintf_s", "_ api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntdll.dll", "ucrtbase.dll", "ntoskrnl.exe"] api_type: ["DLLExport"] topic_type: ["apiref"] -f1_keywords: ["STDIO/vsnprintf_s", "STDIO/_vsnprintf_s", "CORECRT_WSTDIO/_vsnwprintf_s", "TCHAR/_vsntprintf_s", "STDIO/_vsnprintf_s_l", "CORECRT_WSTDIO/_vsnwprintf_s_l", "TCHAR/_vsntprintf_s_l", "vsnprintf_s", "_vsnprintf_s", "_vsnwprintf_s", "_vsntprintf_s", "_vsnprintf_s_l", "_vsnwprintf_s_l", "_vsntprintf_s_l"] +f1_keywords: ["STDIO/vsnprintf_s", "STDIO/_vsnprintf_s", "CORECRT_WSTDIO/_vsnwprintf_s", "TCHAR/_vsntprintf_s", "STDIO/_vsnprintf_s_l", "CORECRT_WSTDIO/_vsnwprintf_s_l", "TCHAR/_vsntprintf_s_l", "vsnprintf_s", "_vsnprintf_s", "_vsnwprintf_s", "_vsntprintf_s", "_vsnprintf_s_l", "_vsnwprintf_s_l", "_vsntprintf_s_l"] helpviewer_keywords: ["vsnwprintf_s function", "_vsntprintf_s function", "_vsntprintf_s_l function", "vsntprintf_s function", "vsnwprintf_s_l function", "vsnprintf_s_l function", "vsntprintf_s_l function", "_vsnwprintf_s_l function", "_vsnprintf_s function", "vsnprintf_s function", "_vsnprintf_s_l function", "_vsnwprintf_s function", "formatted text [C++]"] --- # `vsnprintf_s`, `_vsnprintf_s`, `_vsnprintf_s_l`, `_vsnwprintf_s`, `_vsnwprintf_s_l` diff --git a/docs/code-quality/using-rule-sets-to-specify-the-cpp-rules-to-run.md b/docs/code-quality/using-rule-sets-to-specify-the-cpp-rules-to-run.md index 363cce16f68..e98971d9707 100644 --- a/docs/code-quality/using-rule-sets-to-specify-the-cpp-rules-to-run.md +++ b/docs/code-quality/using-rule-sets-to-specify-the-cpp-rules-to-run.md @@ -243,7 +243,7 @@ Schema element details: | `TIncludeAll` | Rule action for all rules | | `TRule` | Rule ID with rule action | | `TRules` | Collection of one or more rules | -| `TRuleSet` | Ruleset file format consisting of localization information, rule hint paths, include all information, include information, rules information, name, description, and tools version information | +| `TRuleSet` | Ruleset file format consisting of localization information, rule hint paths, include all information, include information, rules information, name, description, and tools version information | | `TRuleAction` | Enumeration describing a rule action such as an error, warning, info, hidden, or none | | `TIncludeAction` | Enumeration describing a rule action such as an error, warning, info, hidden, none, or default | | `TIncludeAllAction` | Enumeration describing a rule action such as an error, warning, info, or hidden | diff --git a/docs/cpp/floating-limits.md b/docs/cpp/floating-limits.md index 475ad5b18ba..10b244a46dc 100644 --- a/docs/cpp/floating-limits.md +++ b/docs/cpp/floating-limits.md @@ -15,7 +15,7 @@ The following table lists the limits on the values of floating-point constants. |Constant|Meaning|Value| |--------------|-------------|-----------| -|`FLT_DIG`
`DBL_DIG`
`LDBL_DIG`|Number of digits, q, such that a floating-point number with q decimal digits can be rounded into a floating-point representation and back without loss of precision.|6
15
15| +|`FLT_DIG`
`DBL_DIG`
`LDBL_DIG`|Number of digits, q, such that a floating-point number with q decimal digits can be rounded into a floating-point representation and back without loss of precision.|6
15
15| |`FLT_EPSILON`
`DBL_EPSILON`
`LDBL_EPSILON`|Smallest positive number x, such that x + 1.0 is not equal to 1.0.|1.192092896e-07F
2.2204460492503131e-016
2.2204460492503131e-016| |`FLT_GUARD`||0| |`FLT_MANT_DIG`
`DBL_MANT_DIG`
`LDBL_MANT_DIG`|Number of digits in the radix specified by `FLT_RADIX` in the floating-point significand. The radix is 2; hence these values specify bits.|24
53
53| diff --git a/docs/cpp/restrict-cpp-amp.md b/docs/cpp/restrict-cpp-amp.md index 5255fa72ffd..bd1b63c3b1f 100644 --- a/docs/cpp/restrict-cpp-amp.md +++ b/docs/cpp/restrict-cpp-amp.md @@ -19,7 +19,7 @@ The **`restrict`** clause takes the following forms: |------------|-----------------| |`restrict(cpu)`|The function can use the full C++ language. Only other functions that are declared by using restrict(cpu) functions can call the function.| |`restrict(amp)`|The function can only use the subset of the C++ language that C++ AMP can accelerate.| -|A sequence of `restrict(cpu)` and `restrict(amp)`.|The function must adhere to the limitations of both `restrict(cpu)` and `restrict(amp)`. The function can be called by functions that are declared by using `restrict(cpu)`, `restrict(amp)`, `restrict(cpu, amp)`, or `restrict(amp, cpu)`.

The form `restrict(A) restrict(B)` can be written as `restrict(A,B)`.| +|A sequence of `restrict(cpu)` and `restrict(amp)`.|The function must adhere to the limitations of both `restrict(cpu)` and `restrict(amp)`. The function can be called by functions that are declared by using `restrict(cpu)`, `restrict(amp)`, `restrict(cpu, amp)`, or `restrict(amp, cpu)`.

The form `restrict(A) restrict(B)` can be written as `restrict(A,B)`.| ## Remarks diff --git a/docs/cpp/templates-cpp.md b/docs/cpp/templates-cpp.md index 93e8ddb0948..aa7e68bec68 100644 --- a/docs/cpp/templates-cpp.md +++ b/docs/cpp/templates-cpp.md @@ -157,7 +157,7 @@ class MyClass2 }; ``` -Because the *Arr* parameter itself has no body, its parameter names are not needed. In fact, it is an error to refer to *Arr*'s typename or class parameter names from within the body of `MyClass2`. For this reason, *Arr*'s type parameter names can be omitted, as shown in this example: +Because the *Arr* parameter itself has no body, its parameter names are not needed. In fact, it is an error to refer to *Arr*'s typename or class parameter names from within the body of `MyClass2`. For this reason, *Arr*'s type parameter names can be omitted, as shown in this example: ```cpp template class Arr> diff --git a/docs/cppcx/attributes-c-cx.md b/docs/cppcx/attributes-c-cx.md index 38b2c2a6ec3..0fbe7a494e0 100644 --- a/docs/cppcx/attributes-c-cx.md +++ b/docs/cppcx/attributes-c-cx.md @@ -6,7 +6,7 @@ ms.assetid: 4438e03c-4de3-433d-abcc-31aa863bc0e0 --- # Attributes (C++/CX) -An attribute is a special kind of ref class that can be prepended in square brackets to Windows Runtime types and methods to specify certain behaviors in metadata creation. Several predefined attributes—for example, [Windows::Foundation::Metadata::WebHostHidden](/uwp/api/windows.foundation.metadata.webhosthiddenattribute)—are commonly used in C++/CX code. This example shows how the attribute is applied to a class: +An attribute is a special kind of ref class that can be prepended in square brackets to Windows Runtime types and methods to specify certain behaviors in metadata creation. Several predefined attributes—for example, [Windows::Foundation::Metadata::WebHostHidden](/uwp/api/windows.foundation.metadata.webhosthiddenattribute)—are commonly used in C++/CX code. This example shows how the attribute is applied to a class: [!code-cpp[cx_attributes#01](../cppcx/codesnippet/CPP/cx_attributes/class1.h#01)] diff --git a/docs/cppcx/platform-collections-unorderedmap-class.md b/docs/cppcx/platform-collections-unorderedmap-class.md index a2a55e71329..056468abaca 100644 --- a/docs/cppcx/platform-collections-unorderedmap-class.md +++ b/docs/cppcx/platform-collections-unorderedmap-class.md @@ -30,7 +30,7 @@ The type of the key in the key-value pair. The type of the value in the key-value pair. *C*
-A type that provides a function object that can compare two element values as sort keys to determine their relative order in the Map. By default, [std::equal_to\](../standard-library/equal-to-struct.md). +A type that provides a function object that can compare two element values as sort keys to determine their relative order in the Map. By default, [std::equal_to\](../standard-library/equal-to-struct.md). ### Remarks diff --git a/docs/extensions/partial-cpp-component-extensions.md b/docs/extensions/partial-cpp-component-extensions.md index 495d65b25cd..4a133fd0ded 100644 --- a/docs/extensions/partial-cpp-component-extensions.md +++ b/docs/extensions/partial-cpp-component-extensions.md @@ -44,7 +44,7 @@ The name of the defined type. A partial class supports scenarios where you modify one part of a class definition in one file, and automatic code-generating software—for example, the XAML designer—modifies code in the same class in another file. By using a partial class, you can prevent the automatic code generator from overwriting your code. In a Visual Studio project, the **partial** modifier is applied automatically to the generated file. -Contents: With two exceptions, a partial class definition can contain anything that the full class definition could contain if the **partial** keyword was omitted. However, you can't specify class accessibility (for example, `public partial class X { ... };`), or a **declspec**. +Contents: With two exceptions, a partial class definition can contain anything that the full class definition could contain if the **partial** keyword was omitted. However, you can't specify class accessibility (for example, `public partial class X { ... };`), or a **declspec**. Access specifiers used in a partial class definition for *identifier* do not affect the default accessibility in a subsequent partial or full class definition for *identifier*. Inline definitions of static data members are allowed. diff --git a/docs/extensions/typeid-cpp-component-extensions.md b/docs/extensions/typeid-cpp-component-extensions.md index 33c7d5fe5d0..fe3b1ffcb1e 100644 --- a/docs/extensions/typeid-cpp-component-extensions.md +++ b/docs/extensions/typeid-cpp-component-extensions.md @@ -40,7 +40,7 @@ A type name. ### Remarks -In C++/CX, typeid returns a [Platform::Type](../cppcx/platform-type-class.md) that is constructed from runtime type information. +In C++/CX, typeid returns a [Platform::Type](../cppcx/platform-type-class.md) that is constructed from runtime type information. ### Requirements diff --git a/docs/get-started/tutorial-console-cpp.md b/docs/get-started/tutorial-console-cpp.md index 5a251dca67d..db968eefaa5 100644 --- a/docs/get-started/tutorial-console-cpp.md +++ b/docs/get-started/tutorial-console-cpp.md @@ -27,7 +27,7 @@ Visual Studio uses *projects* to organize the code for an app, and *solutions* t The dialog has options to clone a repository, open a project or solution, open a local folder, and create a new project." :::image-end::: -1. In the **Create a new project** dialog, set the language dropdown to **C++**, set the platform dropdown to **Windows**, select **Console App** from the list of project types, then select **Next**. +1. In the **Create a new project** dialog, set the language dropdown to **C++**, set the platform dropdown to **Windows**, select **Console App** from the list of project types, then select **Next**. :::image type="complex" source="./media/calc-vs2022-choose-console-app.png" alt-text="Screenshot of the Visual Studio Create a new project dialog."::: The language dropdown is set to C++, the platform dropdown is set to Windows, and project types like Empty Project, Console App, CMake Project, Windows Desktop Wizard, and so on, appear in the list of project types." diff --git a/docs/parallel/amp/cpp-amp-overview.md b/docs/parallel/amp/cpp-amp-overview.md index 3fdac7ec564..452f22396fd 100644 --- a/docs/parallel/amp/cpp-amp-overview.md +++ b/docs/parallel/amp/cpp-amp-overview.md @@ -425,7 +425,7 @@ for (int i = 0; i <4; i++) { ## Math Libraries -C++ AMP includes two math libraries. The double-precision library in the [Concurrency::precise_math Namespace](../../parallel/amp/reference/concurrency-precise-math-namespace.md) provides support for double-precision functions. It also provides support for single-precision functions, although double-precision support on the hardware is still required. It conforms to the [C99 Specification (ISO/IEC 9899)](https://go.microsoft.com/fwlink/p/?linkid=225887). The accelerator must support full double precision. You can determine whether it does by checking the value of the [accelerator::supports_double_precision Data Member](reference/accelerator-class.md#supports_double_precision). The fast math library, in the [Concurrency::fast_math Namespace](../../parallel/amp/reference/concurrency-fast-math-namespace.md), contains another set of math functions. These functions, which support only **`float`** operands, execute more quickly but aren't as precise as those in the double-precision math library. The functions are contained in the \ header file and all are declared with `restrict(amp)`. The functions in the \ header file are imported into both the `fast_math` and `precise_math` namespaces. The **`restrict`** keyword is used to distinguish the \ version and the C++ AMP version. The following code calculates the base-10 logarithm, using the fast method, of each value that is in the compute domain. +C++ AMP includes two math libraries. The double-precision library in the [Concurrency::precise_math Namespace](../../parallel/amp/reference/concurrency-precise-math-namespace.md) provides support for double-precision functions. It also provides support for single-precision functions, although double-precision support on the hardware is still required. It conforms to the [C99 Specification (ISO/IEC 9899)](https://go.microsoft.com/fwlink/p/?linkid=225887). The accelerator must support full double precision. You can determine whether it does by checking the value of the [accelerator::supports_double_precision Data Member](reference/accelerator-class.md#supports_double_precision). The fast math library, in the [Concurrency::fast_math Namespace](../../parallel/amp/reference/concurrency-fast-math-namespace.md), contains another set of math functions. These functions, which support only **`float`** operands, execute more quickly but aren't as precise as those in the double-precision math library. The functions are contained in the \ header file and all are declared with `restrict(amp)`. The functions in the \ header file are imported into both the `fast_math` and `precise_math` namespaces. The **`restrict`** keyword is used to distinguish the \ version and the C++ AMP version. The following code calculates the base-10 logarithm, using the fast method, of each value that is in the compute domain. ```cpp #include diff --git a/docs/porting/visual-cpp-change-history-2003-2015.md b/docs/porting/visual-cpp-change-history-2003-2015.md index 456a327ecc7..83f15d02849 100644 --- a/docs/porting/visual-cpp-change-history-2003-2015.md +++ b/docs/porting/visual-cpp-change-history-2003-2015.md @@ -404,7 +404,7 @@ When upgrading code from previous versions, you might also encounter compiler er In Visual Studio 2015, ongoing improvements to compiler conformance can sometimes change how the compiler understands your existing source code. As a result, you might encounter new or different errors during your build, or even behavioral differences in code that previously built and seemed to run correctly. -Fortunately, these differences have little or no impact on most of your source code. When source code or other changes are needed to address these differences, the fixes tend to be small and straight-forward. We've included many examples of previously acceptable source code that might need to be changed *(before)* and the fixes to correct them *(after)*. +Fortunately, these differences have little or no impact on most of your source code. When source code or other changes are needed to address these differences, the fixes tend to be small and straight-forward. We've included many examples of previously acceptable source code that might need to be changed *(before)* and the fixes to correct them *(after)*. Although these differences can affect your source code or other build artifacts, they don't affect binary compatibility between updates to Visual Studio versions. A *breaking change* is more severe, and can affect binary compatibility, but these kinds of binary compatibility breaks only occur between major versions of Visual Studio, for example, between Visual Studio 2013 and Visual Studio 2015. For information on the breaking changes that occurred between Visual Studio 2013 and Visual Studio 2015, see [Visual Studio 2015 Conformance Changes](#VC_2015). diff --git a/docs/porting/visual-cpp-what-s-new-2003-through-2015.md b/docs/porting/visual-cpp-what-s-new-2003-through-2015.md index 711377d790e..039c2b627c3 100644 --- a/docs/porting/visual-cpp-what-s-new-2003-through-2015.md +++ b/docs/porting/visual-cpp-what-s-new-2003-through-2015.md @@ -15,7 +15,7 @@ This page gathers all the "What's New" pages for all versions of Visual C++ from In Visual Studio 2015 and later, ongoing improvements to compiler conformance can sometimes change how the compiler understands your existing source code. When this happens, you might encounter new or different errors during your build, or even behavioral differences in code that previously built and seemed to run correctly. -Fortunately, these differences have little or no impact on most of your source code and when source code or other changes are needed to address these differences, fixes are usually small and straight-forward. We've included many examples of previously-acceptable source code that might need to be changed *(before)* and the fixes to correct them *(after)*. +Fortunately, these differences have little or no impact on most of your source code and when source code or other changes are needed to address these differences, fixes are usually small and straight-forward. We've included many examples of previously-acceptable source code that might need to be changed *(before)* and the fixes to correct them *(after)*. Although these differences can affect your source code or other build artifacts, they don't affect binary compatibility between updates to Visual C++ versions. A more-severe kind of change, the *breaking change* can affect binary compatibility, but these kinds of binary compatibility breaks only occur between major versions of Visual C++. For example, between Visual C++ 2013 and Visual C++ 2015. For information on the breaking changes that occurred between Visual C++ 2013 and Visual C++ 2015, see [Visual C++ change history 2003 - 2015](../porting/visual-cpp-change-history-2003-2015.md). diff --git a/docs/preprocessor/pack.md b/docs/preprocessor/pack.md index 6c153a81912..c15e48f89c1 100644 --- a/docs/preprocessor/pack.md +++ b/docs/preprocessor/pack.md @@ -107,7 +107,7 @@ The following sample shows how to use the *push*, *pop*, and *show* syntax. // pop to the identifier and then set // the value of the current packing alignment: -#pragma pack(pop, r1, 2) // n = 2 , stack popped +#pragma pack(pop, r1, 2) // n = 2, stack popped #pragma pack(show) // C4810 ``` diff --git a/docs/standard-library/ambiguous-local-time.md b/docs/standard-library/ambiguous-local-time.md index 72dba2eb717..69d255b0ab3 100644 --- a/docs/standard-library/ambiguous-local-time.md +++ b/docs/standard-library/ambiguous-local-time.md @@ -3,7 +3,7 @@ description: "Learn more about: ambiguous_local_time class" title: "ambiguous_local_time class" ms.date: 10/08/2021 f1_keywords: ["chrono/std::chrono::ambiguous_local_time", "chrono/std::chrono::ambiguous_local_time::what"] -helpviewer_keywords: ["std::chrono [C++], ambiguous_local_time"] +helpviewer_keywords: ["std::chrono [C++], ambiguous_local_time"] dev_langs: ["C++"] --- diff --git a/docs/standard-library/basic-string-class.md b/docs/standard-library/basic-string-class.md index 4cfe39831e2..a449f52bf78 100644 --- a/docs/standard-library/basic-string-class.md +++ b/docs/standard-library/basic-string-class.md @@ -675,7 +675,7 @@ A reference to the string object that is being constructed by the constructors. All constructors store a [`basic_string::allocator_type`](#allocator_type) and initialize the controlled sequence. The allocator object is the argument `al`, if present. For the copy constructor, it's `right.get_allocator()`, a call to [`basic_string::get_allocator`](#get_allocator). Otherwise, the allocator is `Alloc()`. -The controlled sequence is initialized to a copy of the operand sequence specified by the remaining operands. A constructor without an operand sequence specifies an empty initial controlled sequence. If `InputIterator` is an integer type in a template constructor, the operand sequence `first, last` behaves the same as `(size_type) first, (value_type) last`. +The controlled sequence is initialized to a copy of the operand sequence specified by the remaining operands. A constructor without an operand sequence specifies an empty initial controlled sequence. If `InputIterator` is an integer type in a template constructor, the operand sequence `first, last` behaves the same as `(size_type) first, (value_type) last`. ### Example diff --git a/docs/standard-library/basic-string-view-class.md b/docs/standard-library/basic-string-view-class.md index d1b682c1a90..c92f5cb34cf 100644 --- a/docs/standard-library/basic-string-view-class.md +++ b/docs/standard-library/basic-string-view-class.md @@ -3,7 +3,7 @@ title: "basic_string_view Class" description: "API reference for `basic_string_view`, which refers to a constant contiguous sequence of char-like objects." ms.date: 9/8/2020 f1_keywords: ["xstring/std::basic_string_view", "xstring/std::basic_string_view::allocator_type", "xstring/std::basic_string_view::const_iterator", "xstring/std::basic_string_view::const_pointer", "xstring/std::basic_string_view::const_reference", "xstring/std::basic_string_view::const_reverse_iterator", "xstring/std::basic_string_view::difference_type", "xstring/std::basic_string_view::ends_with", "xstring/std::basic_string_view::starts_with", "xstring/std::basic_string_view::iterator", "xstring/std::basic_string_view::npos", "xstring/std::basic_string_view::pointer", "xstring/std::basic_string_view::reference", "xstring/std::basic_string_view::reverse_iterator", "xstring/std::basic_string_view::size_type", "xstring/std::basic_string_view::traits_type", "xstring/std::basic_string_view::value_type", "xstring/std::basic_string_view::append", "xstring/std::basic_string_view::assign", "xstring/std::basic_string_view::at", "xstring/std::basic_string_view::back", "xstring/std::basic_string_view::begin", "xstring/std::basic_string_view::c_str", "xstring/std::basic_string_view::capacity", "xstring/std::basic_string_view::cbegin", "xstring/std::basic_string_view::cend", "xstring/std::basic_string_view::clear", "xstring/std::basic_string_view::compare", "xstring/std::basic_string_view::copy", "xstring/std::basic_string_view::_Copy_s", "xstring/std::basic_string_view::crbegin", "xstring/std::basic_string_view::crend", "xstring/std::basic_string_view::data", "xstring/std::basic_string_view::empty", "xstring/std::basic_string_view::end", "xstring/std::basic_string_view::erase", "xstring/std::basic_string_view::find", "xstring/std::basic_string_view::find_first_not_of", "xstring/std::basic_string_view::find_first_of", "xstring/std::basic_string_view::find_last_not_of", "xstring/std::basic_string_view::find_last_of", "xstring/std::basic_string_view::front", "xstring/std::basic_string_view::get_allocator", "xstring/std::basic_string_view::insert", "xstring/std::basic_string_view::length", "xstring/std::basic_string_view::max_size", "xstring/std::basic_string_view::pop_back", "xstring/std::basic_string_view::push_back", "xstring/std::basic_string_view::rbegin", "xstring/std::basic_string_view::rend", "xstring/std::basic_string_view::remove_prefix","xstring/std::basic_string_view::remove_suffix", "xstring/std::basic_string_view::replace", "xstring/std::basic_string_view::reserve", "xstring/std::basic_string_view::resize", "xstring/std::basic_string_view::rfind", "xstring/std::basic_string_view::shrink_to_fit", "xstring/std::basic_string_view::size", "xstring/std::basic_string_view::substr", "xstring/std::basic_string_view::swap"] -helpviewer_keywords: ["std::basic_string_view", "std::basic_string_view, allocator_type", "std::basic_string_view, const_iterator", "std::basic_string_view, const_pointer", "std::basic_string_view, const_reference", "std::basic_string_view, const_reverse_iterator", "std::basic_string_view, difference_type", "std::basic_string_view, iterator", "std::basic_string_view, npos", "std::basic_string_view, pointer", "std::basic_string_view, reference", "std::basic_string_view, reverse_iterator", "std::basic_string_view, size_type", "std::basic_string_view, traits_type", "std::basic_string_view, value_type", "std::basic_string_view, append", "std::basic_string_view, assign", "std::basic_string_view, at", "std::basic_string_view, back", "std::basic_string_view, begin", "std::basic_string_view, c_str", "std::basic_string_view, capacity", "std::basic_string_view, cbegin", "std::basic_string_view, cend", "std::basic_string_view, clear", "std::basic_string_view, compare", "std::basic_string_view, copy", "std::basic_string_view, crbegin", "std::basic_string_view, crend", "std::basic_string_view, data", "std::basic_string_view, empty", "std::basic_string_view, end", "std::basic_string_view, ends_with", "std::basic_string_view, erase", "std::basic_string_view, find", "std::basic_string_view, find_first_not_of", "std::basic_string_view, find_first_of", "std::basic_string_view, find_last_not_of", "std::basic_string_view, find_last_of", "std::basic_string_view, front", "std::basic_string_view, get_allocator", "std::basic_string_view, insert", "std::basic_string_view, length", "std::basic_string_view, max_size", "std::basic_string_view, pop_back", "std::basic_string_view, push_back", "std::basic_string_view, rbegin", "std::basic_string_view, rend", "std::basic_string_view, remove_prefix","std::basic_string_view, remove_suffix","std::basic_string_view, replace", "std::basic_string_view, reserve", "std::basic_string_view, resize", "std::basic_string_view, rfind", "std::basic_string_view, shrink_to_fit", "std::basic_string_view, size", "std::basic_string_view, starts_with", "std::basic_string_view, substr", "std::basic_string_view, swap"] +helpviewer_keywords: ["std::basic_string_view", "std::basic_string_view, allocator_type", "std::basic_string_view, const_iterator", "std::basic_string_view, const_pointer", "std::basic_string_view, const_reference", "std::basic_string_view, const_reverse_iterator", "std::basic_string_view, difference_type", "std::basic_string_view, iterator", "std::basic_string_view, npos", "std::basic_string_view, pointer", "std::basic_string_view, reference", "std::basic_string_view, reverse_iterator", "std::basic_string_view, size_type", "std::basic_string_view, traits_type", "std::basic_string_view, value_type", "std::basic_string_view, append", "std::basic_string_view, assign", "std::basic_string_view, at", "std::basic_string_view, back", "std::basic_string_view, begin", "std::basic_string_view, c_str", "std::basic_string_view, capacity", "std::basic_string_view, cbegin", "std::basic_string_view, cend", "std::basic_string_view, clear", "std::basic_string_view, compare", "std::basic_string_view, copy", "std::basic_string_view, crbegin", "std::basic_string_view, crend", "std::basic_string_view, data", "std::basic_string_view, empty", "std::basic_string_view, end", "std::basic_string_view, ends_with", "std::basic_string_view, erase", "std::basic_string_view, find", "std::basic_string_view, find_first_not_of", "std::basic_string_view, find_first_of", "std::basic_string_view, find_last_not_of", "std::basic_string_view, find_last_of", "std::basic_string_view, front", "std::basic_string_view, get_allocator", "std::basic_string_view, insert", "std::basic_string_view, length", "std::basic_string_view, max_size", "std::basic_string_view, pop_back", "std::basic_string_view, push_back", "std::basic_string_view, rbegin", "std::basic_string_view, rend", "std::basic_string_view, remove_prefix","std::basic_string_view, remove_suffix","std::basic_string_view, replace", "std::basic_string_view, reserve", "std::basic_string_view, resize", "std::basic_string_view, rfind", "std::basic_string_view, shrink_to_fit", "std::basic_string_view, size", "std::basic_string_view, starts_with", "std::basic_string_view, substr", "std::basic_string_view, swap"] --- # `basic_string_view` class diff --git a/docs/standard-library/chrono-functions.md b/docs/standard-library/chrono-functions.md index e1812b1d349..d8131672ac2 100644 --- a/docs/standard-library/chrono-functions.md +++ b/docs/standard-library/chrono-functions.md @@ -3,7 +3,7 @@ title: " functions" description: "Learn more about: functions" ms.date: 10/15/2021 f1_keywords: ["chrono/std::duration_cast", "chrono/std::time_point_cast", "chrono/std::chrono::clock_cast", "chrono/std::chrono::duration_cast", "chrono/std::chrono::time_point_cast", "chrono/std::chrono::from_stream", "chrono/std::chrono::abs", "chrono/std::chrono::floor", "chrono/std::chrono::ceil", "chrono/std::chrono::round", "chrono/std::chrono::is_am", "chrono/std::chrono::is_pm", "chrono/std::chrono::make12", "chrono/std::chrono::make24", "chrono/std::chrono::get_leap_second_info", "chrono/std::chrono::get_tzdb", "chrono/std::chrono::get_tzdb_list", "chrono/std::chrono::locate_zone", "chrono/std::chrono::current_zone", "chrono/std::chrono::reload_tzdb", "chrono/std::chrono::remote_version"] -helpviewer_keywords: ["std::duration_cast function", "std::time_point_cast function", "std::chrono::clock_cast", "std::chrono::duration_cast function", "std::chrono::time_point_cast function", "std::chrono::from_stream function", "std::chrono::floor function", "std::chrono::ceil function", "std::chrono::round function", "std::chrono::is_am function", "std::chrono::is_pm function", "std::chrono::make12 function", "std::chrono::make24 function", "std::chrono::get_leap_second_info function", "std::chrono::get_tzdb function", "std::chrono::get_tzdb_list function", "std::chrono::locate_zone function", "std::chrono::current_zone function", "std::chrono::reload_tzdb function", "std::chrono::remote_version function"] +helpviewer_keywords: ["std::duration_cast function", "std::time_point_cast function", "std::chrono::clock_cast", "std::chrono::duration_cast function", "std::chrono::time_point_cast function", "std::chrono::from_stream function", "std::chrono::floor function", "std::chrono::ceil function", "std::chrono::round function", "std::chrono::is_am function", "std::chrono::is_pm function", "std::chrono::make12 function", "std::chrono::make24 function", "std::chrono::get_leap_second_info function", "std::chrono::get_tzdb function", "std::chrono::get_tzdb_list function", "std::chrono::locate_zone function", "std::chrono::current_zone function", "std::chrono::reload_tzdb function", "std::chrono::remote_version function"] --- # `` functions diff --git a/docs/standard-library/chrono-operators.md b/docs/standard-library/chrono-operators.md index 64931b76072..1d07f765074 100644 --- a/docs/standard-library/chrono-operators.md +++ b/docs/standard-library/chrono-operators.md @@ -2,7 +2,7 @@ title: " operators" description: "Learn more about: operators" ms.date: 09/17/2021 -f1_keywords: ["chrono/std::operator modulo", "chrono/std::operator+", "chrono/std::chrono::day::operator+", "chrono/std::chrono::duration::operator+", "chrono/std::chrono::month::operator+", "chrono/std::chrono::time_point::operator+", "chrono/std::chrono::weekday::operator+", "chrono/std::chrono::year_month::operator+", "chrono/std::chrono::year::operator+", "chrono/std::chrono::year_month_day::operator+", "chrono/std::chrono::year_month_day_last::operator+", "chrono/std::chrono::year_month_weekday::operator+", "chrono/std::chrono::year_month_weekday_last::operator+", "chrono/std::operator!=", "chrono/std::operator*", "chrono/std::operator/", "chrono/std::operator-", "chrono/std::operator<", "chrono/std::operator<=", "chrono/std::operator<", "chrono/std::operator==", "chrono/std::operator>>", "chrono/std::operator<=>", "chrono/std::chrono::day::operator<=>", "chrono/std::chrono::month::operator<=>", "chrono/std::chrono::year::operator<=>", "chrono/std::chrono::year_month::operator<=>", "chrono/std::chrono::time_point::operator<=>", "chrono/std::chrono::time_zone_link::operator<=>", "chrono/std::chrono::time_zone_link::operator==", "chrono/std::chrono::duration::operator<=>", "chrono/std::chrono::month_day_last::operator<=>", "chrono/std::chrono::year_month_day_last::operator<=>", "chrono/std::operator==", "chrono/std::chrono::year::operator<==>", "chrono/std::chrono::day::operator==", "chrono/std::chrono::duration::operator==", "chrono/std::chrono::month::operator==", "chrono/std::chrono::month_day::operator==", "chrono/std::chrono::month_day_last::operator==", "chrono/std::chrono::month_weekday::operator==", "chrono/std::chrono::month_weekday_last::operator==", "chrono/std::chrono::time_point::operator==", "chrono/std::chrono::weekday::operator==", "chrono/std::chrono::year_month::operator==", "chrono/std::chrono::year::operator==", "chrono/std::chrono::year_month_day::operator==", "chrono/std::chrono::year_month_day_last::operator==", "chrono/std::chrono::year_month_weekday_last::operator==", "chrono/std::chrono::year_month_weekday::operator==", "chrono/std::chrono::month_weekday_last::operator==", "chrono/std::chrono::weekday::operator==", "chrono/std::chrono::weekday_last::operator==", "chrono/std::chrono::year_month_weekday_indexed::operator==", "chrono/std::chrono::year_month_weekday_last::operator==", "chrono/std::chrono::year::operator==", "chrono/std::chrono::year_month::operator==", "chrono/std::chrono::year_month_day::operator==", "chrono/std::chrono::year_month_day_last::operator==", "chrono/std::chrono::zoned_time::operator==", "chrono/std::operator-", "chrono/std::chrono::day::operator-", "chrono/std::chrono::duration::operator-", "chrono/std::chrono::month::operator-", "chrono/std::chrono::time_point::operator-", "chrono/std::chrono::weekday::operator-", "chrono/std::chrono::year_month::operator-", "chrono/std::chrono::year::operator-", "chrono/std::chrono::year_month_day::operator-", "chrono/std::chrono::year_month_day_last::operator-", "chrono/std::chrono::year_month_weekday::operator-", "chrono/std::chrono::year_month_weekday_last::operator-", "chrono/std::chrono::day::operator<<", "chrono/std::chrono::hh_mm_ss::operator<<", "chrono/std::chrono::month_day::operator<<", "chrono/std::chrono::month_day_last::operator<<", "chrono/std::chrono::month_weekday::operator<<", "chrono/std::chrono::month_weekday_last::operator<<", "chrono/std::chrono::weekday::operator<<", "chrono/std::chrono::weekday_indexed::operator<<", "chrono/std::chrono::weekday_last::operator<<", "chrono/std::chrono::year::operator<<", "chrono/std::chrono::year_month_day::operator<<", "chrono/std::chrono::year_month_day_last::operator<<", "chrono/std::chrono::year_month_weekday::operator<<", "chrono/std::chrono::utc_time::operator<<", "chrono/std::chrono::tai_time::operator<<", "chrono/std::chrono::gps_time::operator<<", "chrono/std::chrono::local_time::operator<<", "chrono/std::chrono::file_time::operator<<", "chrono/std::chrono::sys_info::operator<<", "chrono/std::chrono::local_info::operator<<", "chrono/std::chrono::zoned_time::operator<<"] +f1_keywords: ["chrono/std::operator modulo", "chrono/std::operator+", "chrono/std::chrono::day::operator+", "chrono/std::chrono::duration::operator+", "chrono/std::chrono::month::operator+", "chrono/std::chrono::time_point::operator+", "chrono/std::chrono::weekday::operator+", "chrono/std::chrono::year_month::operator+", "chrono/std::chrono::year::operator+", "chrono/std::chrono::year_month_day::operator+", "chrono/std::chrono::year_month_day_last::operator+", "chrono/std::chrono::year_month_weekday::operator+", "chrono/std::chrono::year_month_weekday_last::operator+", "chrono/std::operator!=", "chrono/std::operator*", "chrono/std::operator/", "chrono/std::operator-", "chrono/std::operator<", "chrono/std::operator<=", "chrono/std::operator<", "chrono/std::operator==", "chrono/std::operator>>", "chrono/std::operator<=>", "chrono/std::chrono::day::operator<=>", "chrono/std::chrono::month::operator<=>", "chrono/std::chrono::year::operator<=>", "chrono/std::chrono::year_month::operator<=>", "chrono/std::chrono::time_point::operator<=>", "chrono/std::chrono::time_zone_link::operator<=>", "chrono/std::chrono::time_zone_link::operator==", "chrono/std::chrono::duration::operator<=>", "chrono/std::chrono::month_day_last::operator<=>", "chrono/std::chrono::year_month_day_last::operator<=>", "chrono/std::operator==", "chrono/std::chrono::year::operator<==>", "chrono/std::chrono::day::operator==", "chrono/std::chrono::duration::operator==", "chrono/std::chrono::month::operator==", "chrono/std::chrono::month_day::operator==", "chrono/std::chrono::month_day_last::operator==", "chrono/std::chrono::month_weekday::operator==", "chrono/std::chrono::month_weekday_last::operator==", "chrono/std::chrono::time_point::operator==", "chrono/std::chrono::weekday::operator==", "chrono/std::chrono::year_month::operator==", "chrono/std::chrono::year::operator==", "chrono/std::chrono::year_month_day::operator==", "chrono/std::chrono::year_month_day_last::operator==", "chrono/std::chrono::year_month_weekday_last::operator==", "chrono/std::chrono::year_month_weekday::operator==", "chrono/std::chrono::month_weekday_last::operator==", "chrono/std::chrono::weekday::operator==", "chrono/std::chrono::weekday_last::operator==", "chrono/std::chrono::year_month_weekday_indexed::operator==", "chrono/std::chrono::year_month_weekday_last::operator==", "chrono/std::chrono::year::operator==", "chrono/std::chrono::year_month::operator==", "chrono/std::chrono::year_month_day::operator==", "chrono/std::chrono::year_month_day_last::operator==", "chrono/std::chrono::zoned_time::operator==", "chrono/std::operator-", "chrono/std::chrono::day::operator-", "chrono/std::chrono::duration::operator-", "chrono/std::chrono::month::operator-", "chrono/std::chrono::time_point::operator-", "chrono/std::chrono::weekday::operator-", "chrono/std::chrono::year_month::operator-", "chrono/std::chrono::year::operator-", "chrono/std::chrono::year_month_day::operator-", "chrono/std::chrono::year_month_day_last::operator-", "chrono/std::chrono::year_month_weekday::operator-", "chrono/std::chrono::year_month_weekday_last::operator-", "chrono/std::chrono::day::operator<<", "chrono/std::chrono::hh_mm_ss::operator<<", "chrono/std::chrono::month_day::operator<<", "chrono/std::chrono::month_day_last::operator<<", "chrono/std::chrono::month_weekday::operator<<", "chrono/std::chrono::month_weekday_last::operator<<", "chrono/std::chrono::weekday::operator<<", "chrono/std::chrono::weekday_indexed::operator<<", "chrono/std::chrono::weekday_last::operator<<", "chrono/std::chrono::year::operator<<", "chrono/std::chrono::year_month_day::operator<<", "chrono/std::chrono::year_month_day_last::operator<<", "chrono/std::chrono::year_month_weekday::operator<<", "chrono/std::chrono::utc_time::operator<<", "chrono/std::chrono::tai_time::operator<<", "chrono/std::chrono::gps_time::operator<<", "chrono/std::chrono::local_time::operator<<", "chrono/std::chrono::file_time::operator<<", "chrono/std::chrono::sys_info::operator<<", "chrono/std::chrono::local_info::operator<<", "chrono/std::chrono::zoned_time::operator<<"] --- # `` operators @@ -786,7 +786,7 @@ strong_ordering operator<=>(const time_zone_link& Left, const time_zone_link& Ri ### Parameters *`Left`, `Right`*\ -The [`day`](day-class.md), [`duration`](duration-class.md), [`month`](month-class.md), [`month_day`](month-day-class.md), [`month_day_last`](month-day-last-class.md), [`time_point`](time-point-class.md), [`time_zone_link`](time-zone-link-class.md), [`year`](year-class.md), [`year_month`](year-month-class.md), [`year_month_day`](year-month-day-class.md), [`year_month_day_last`](year-month-day-last-class.md) to compare. +The [`day`](day-class.md), [`duration`](duration-class.md), [`month`](month-class.md), [`month_day`](month-day-class.md), [`month_day_last`](month-day-last-class.md), [`time_point`](time-point-class.md), [`time_zone_link`](time-zone-link-class.md), [`year`](year-class.md), [`year_month`](year-month-class.md), [`year_month_day`](year-month-day-class.md), [`year_month_day_last`](year-month-day-last-class.md) to compare. ### Return value diff --git a/docs/standard-library/duration-class.md b/docs/standard-library/duration-class.md index d0fa6d8e030..706491c042e 100644 --- a/docs/standard-library/duration-class.md +++ b/docs/standard-library/duration-class.md @@ -156,7 +156,7 @@ A duration type `D1` is *incommensurable* with another duration type `D2` if `D2 Unless *`Rep2`* is implicitly convertible to `rep` and either `treat_as_floating_point`*holds true* or `treat_as_floating_point`*holds false*, the second constructor doesn't participate in overload resolution. For more information, see [](type-traits.md). -Unless no overflow is induced in the conversion and `treat_as_floating_point`*holds true*, or both `ratio_divide::den` equals 1 and `treat_as_floating_point`*holds false*, the third constructor doesn't participate in overload resolution. For more information, see [](type-traits.md). +Unless no overflow is induced in the conversion and `treat_as_floating_point`*holds true*, or both `ratio_divide::den` equals 1 and `treat_as_floating_point`*holds false*, the third constructor doesn't participate in overload resolution. For more information, see [](type-traits.md). ## Example: Create a `duration` diff --git a/docs/standard-library/file-clock-class.md b/docs/standard-library/file-clock-class.md index fe87f0ce9ea..289bcce89bf 100644 --- a/docs/standard-library/file-clock-class.md +++ b/docs/standard-library/file-clock-class.md @@ -17,7 +17,7 @@ using file_clock = std::filesystem::_File_time_clock; // C++20 ## Remarks -In the Microsoft implementation, the epoch, or the time from which the `file_clock` starts measuring time, is 1/1/1601 00:00:00. +In the Microsoft implementation, the epoch, or the time from which the `file_clock` starts measuring time, is 1/1/1601 00:00:00. The ISO C++ Standard provides a choice between providing `to_sys()` and `from_sys()`, or `to_utc()` and `from_utc()`. The Microsoft implementation chose [to_utc](#to_utc) and [from_utc](#from_utc). diff --git a/docs/standard-library/filter-view-class.md b/docs/standard-library/filter-view-class.md index f99b3791bb5..c0bd7389f52 100644 --- a/docs/standard-library/filter-view-class.md +++ b/docs/standard-library/filter-view-class.md @@ -2,7 +2,7 @@ title: filter_view class (C++ Standard Library) description: "API reference for the Standard Template Library (STL) filter_view class, which is a view that filters out elements of a range that don't match a predicate." ms.date: 09/27/2022 -f1_keywords: ["ranges/std::filter_view", "ranges/std::filter_view::base", "ranges/std::filter_view::begin", "ranges/std::filter_view::empty", "ranges/std::filter_view::end", "ranges/std::filter_view::operator bool", "ranges/std::filter_view::pred", "ranges/std::filter_view::back", "ranges/std::filter_view::front"] +f1_keywords: ["ranges/std::filter_view", "ranges/std::filter_view::base", "ranges/std::filter_view::begin", "ranges/std::filter_view::empty", "ranges/std::filter_view::end", "ranges/std::filter_view::operator bool", "ranges/std::filter_view::pred", "ranges/std::filter_view::back", "ranges/std::filter_view::front"] helpviewer_keywords: ["std::ranges::filter_view [C++]", "std::ranges::filter_view::base [C++]", "std::ranges::filter_view::begin [C++]", "std::ranges::filter_view::empty [C++]", "std::ranges::filter_view::end [C++]", "std::ranges::filter_view::pred [C++]", "std::ranges::filter_view::back [C++]", "std::ranges::filter_view::front [C++]", "std::ranges::filter_view::operator bool [C++]"] dev_langs: ["C++"] --- diff --git a/docs/standard-library/subrange-class.md b/docs/standard-library/subrange-class.md index 7f269483d0e..1a38bf37d1d 100644 --- a/docs/standard-library/subrange-class.md +++ b/docs/standard-library/subrange-class.md @@ -3,7 +3,7 @@ title: subrange class (C++ Standard Library) description: "API reference for the Standard Template Library (STL) subrange class, which is a view of the elements of a range as defined by a begin iterator and a sentinel." ms.date: 10/05/2022 f1_keywords: ["ranges/std::subrange", "ranges/std::subrange::begin", "ranges/std::subrange::data", "ranges/std::subrange::empty", "ranges/std::subrange::end", "ranges/std::subrange::get", "ranges/std::subrange::size", "ranges/std::subrange::operator bool", "ranges/std::subrange::operator PairLike", "ranges/std::subrange::back", "ranges/std::subrange::front", "ranges/std::subrange::operator[]", "ranges/std::subrange::advance", "ranges/std::subrange::prev", "ranges/std::subrange::next"] -helpviewer_keywords: ["std::ranges::subrange [C++]", "std::ranges::subrange::begin [C++]", "std::ranges::subrange::data [C++]", "std::ranges::subrange::empty [C++]", "std::ranges::subrange::end [C++]", "std::ranges::subrange::size [C++]", "std::ranges::subrange::back [C++]", "std::ranges::subrange::front [C++]", "std::ranges::subrange::advance [C++]", "std::ranges::subrange::prev [C++]", "std::ranges::subrange::next [C++]", "std::ranges::subrange::get [C++]", "std::ranges::subrange::operator[] [C++]", "std::ranges::subrange::operator bool [C++]", "std::ranges::subrange::operator PairLike [C++]"] +helpviewer_keywords: ["std::ranges::subrange [C++]", "std::ranges::subrange::begin [C++]", "std::ranges::subrange::data [C++]", "std::ranges::subrange::empty [C++]", "std::ranges::subrange::end [C++]", "std::ranges::subrange::size [C++]", "std::ranges::subrange::back [C++]", "std::ranges::subrange::front [C++]", "std::ranges::subrange::advance [C++]", "std::ranges::subrange::prev [C++]", "std::ranges::subrange::next [C++]", "std::ranges::subrange::get [C++]", "std::ranges::subrange::operator[] [C++]", "std::ranges::subrange::operator bool [C++]", "std::ranges::subrange::operator PairLike [C++]"] dev_langs: ["C++"] --- # `subrange` class (C++ Standard Library) diff --git a/docs/standard-library/time-point-class.md b/docs/standard-library/time-point-class.md index b5b9baf42b6..24818d11dcd 100644 --- a/docs/standard-library/time-point-class.md +++ b/docs/standard-library/time-point-class.md @@ -2,7 +2,7 @@ description: "Learn more about: time_point Class" title: "time_point Class" ms.date: 01/05/2022 -f1_keywords: ["chrono/std::chrono::time_point", "chrono/std::chrono::time_point::operator +=", "chrono/std::chrono::time_point::operator -=", "chrono/std::chrono::time_point::max", "chrono/std::chrono::time_point::min", "chrono/std::chrono::time_point::time_since_epoch"] +f1_keywords: ["chrono/std::chrono::time_point", "chrono/std::chrono::time_point::operator +=", "chrono/std::chrono::time_point::operator -=", "chrono/std::chrono::time_point::max", "chrono/std::chrono::time_point::min", "chrono/std::chrono::time_point::time_since_epoch"] helpviewer_keywords: ["std::chrono [C++], time_point"] dev_langs: ["C++"] --- diff --git a/docs/standard-library/view-interface.md b/docs/standard-library/view-interface.md index 67bf457cb5f..b042f9f80cd 100644 --- a/docs/standard-library/view-interface.md +++ b/docs/standard-library/view-interface.md @@ -3,7 +3,7 @@ title: view_interface class (C++ Standard Library) description: "API reference for the Standard Template Library (STL) view_interface class, which is the base class for the ranges view classes." ms.date: 10/07/2022 f1_keywords: ["ranges/std::view_interface::back", "ranges/std::view_interface::data","ranges/std::view_interface::empty", "ranges/std::view_interface::front", "ranges/std::view_interface::size", "ranges/std::view_interface::operator[]", "ranges/std::view_interface::operator bool"] -helpviewer_keywords: ["std::ranges::view_interface [C++]", "std::ranges::view_interface [C++], back", "std::ranges::view_interface [C++], data", "std::ranges::view_interface [C++], empty", "std::ranges::view_interface [C++], front", "std::ranges::view_interface [C++], size", "std::ranges::view_interface [C++], operator[]", "std::ranges::view_interface [C++], operator bool"] +helpviewer_keywords: ["std::ranges::view_interface [C++]", "std::ranges::view_interface [C++], back", "std::ranges::view_interface [C++], data", "std::ranges::view_interface [C++], empty", "std::ranges::view_interface [C++], front", "std::ranges::view_interface [C++], size", "std::ranges::view_interface [C++], operator[]", "std::ranges::view_interface [C++], operator bool"] dev_langs: ["C++"] --- # `view_interface` class (C++ Standard Library) From b96b32beb7ec33569a43045c93e14e267b791c15 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Thu, 25 Sep 2025 22:46:32 +0800 Subject: [PATCH 1925/2255] Update metadata in 26 topics --- docs/build/arm64-exception-handling.md | 2 +- docs/build/reference/guard-enable-control-flow-guard.md | 2 +- docs/c-language/generic-selection.md | 2 +- docs/c-runtime-library/cgets-cgetws.md | 5 ++--- docs/c-runtime-library/gets-getws.md | 4 ++-- docs/c-runtime-library/parameter-validation.md | 3 +-- .../reference/assert-asserte-assert-expr-macros.md | 4 ++-- docs/c-runtime-library/reference/ctan-ctanf-ctanl.md | 3 +-- docs/c-runtime-library/reference/exit-exit-exit.md | 4 ++-- docs/c-runtime-library/reference/mbrtoc16-mbrtoc323.md | 5 ++--- .../strtoumax-strtoumax-l-wcstoumax-wcstoumax-l.md | 5 ++--- .../using-rule-sets-to-specify-the-cpp-rules-to-run.md | 2 +- docs/cpp/floating-limits.md | 5 ++--- docs/cpp/restrict-cpp-amp.md | 5 ++--- docs/cpp/templates-cpp.md | 5 ++--- docs/cppcx/attributes-c-cx.md | 5 ++--- docs/cppcx/platform-collections-unorderedmap-class.md | 5 ++--- docs/parallel/amp/cpp-amp-overview.md | 6 +++--- docs/preprocessor/pack.md | 2 +- docs/standard-library/ambiguous-local-time.md | 2 +- docs/standard-library/duration-class.md | 2 +- docs/standard-library/file-clock-class.md | 2 +- docs/standard-library/filter-view-class.md | 2 +- docs/standard-library/subrange-class.md | 2 +- docs/standard-library/time-point-class.md | 2 +- docs/standard-library/view-interface.md | 2 +- 26 files changed, 39 insertions(+), 49 deletions(-) diff --git a/docs/build/arm64-exception-handling.md b/docs/build/arm64-exception-handling.md index ed0f9cc58ae..d459965ede4 100644 --- a/docs/build/arm64-exception-handling.md +++ b/docs/build/arm64-exception-handling.md @@ -1,6 +1,6 @@ --- title: "ARM64 exception handling" -description: Describes the exception handling conventions and data used by windows on ARM64. +description: "Describes the exception handling conventions and data used by windows on ARM64." ms.date: 01/13/2023 --- # ARM64 exception handling diff --git a/docs/build/reference/guard-enable-control-flow-guard.md b/docs/build/reference/guard-enable-control-flow-guard.md index 1b51ece0e96..1da0931bd13 100644 --- a/docs/build/reference/guard-enable-control-flow-guard.md +++ b/docs/build/reference/guard-enable-control-flow-guard.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: /guard (Enable Control Flow Guard)" title: "/guard (Enable Control Flow Guard)" +description: "Learn more about: /guard (Enable Control Flow Guard)" ms.date: 2/24/2025 f1_keywords: ["/guard", "VC.Project.VCCLCompilerTool.ControlFlowGuard"] --- diff --git a/docs/c-language/generic-selection.md b/docs/c-language/generic-selection.md index 15a8a2cbf78..0eba6388e33 100644 --- a/docs/c-language/generic-selection.md +++ b/docs/c-language/generic-selection.md @@ -1,7 +1,7 @@ --- title: "Generic selection (C11)" description: "Describes the C11 _Generic keyword used in the Microsoft Visual C compiler" -ms.date: "6/29/2021" +ms.date: 6/29/2021 helpviewer_keywords: ["_Generic keyword [C]"] --- diff --git a/docs/c-runtime-library/cgets-cgetws.md b/docs/c-runtime-library/cgets-cgetws.md index 875efdfdd5d..04390142f6d 100644 --- a/docs/c-runtime-library/cgets-cgetws.md +++ b/docs/c-runtime-library/cgets-cgetws.md @@ -1,14 +1,13 @@ --- -description: "Learn more about: _cgets, _cgetws" title: "_cgets, _cgetws" -ms.date: "4/2/2020" +description: "Learn more about: _cgets, _cgetws" +ms.date: 4/2/2020 api_name: ["_cgetws", "_cgets", "_o__cgets", "_o__cgetws"] api_location: ["msvcr100.dll", "msvcr110.dll", "msvcr80.dll", "msvcr120.dll", "msvcr90.dll", "msvcrt.dll", "msvcr110_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-conio-l1-1-0.dll"] api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["cgetws", "_cgetws", "_cgets"] helpviewer_keywords: ["_cgetws function", "strings [C++], getting from console", "console, getting strings from", "_cgets function", "cgetws function", "cgets function"] -ms.assetid: 4d5e134a-58c3-4f62-befd-5d235b0212f4 --- # `_cgets`, `_cgetws` diff --git a/docs/c-runtime-library/gets-getws.md b/docs/c-runtime-library/gets-getws.md index f3df496be63..d688cef1fbf 100644 --- a/docs/c-runtime-library/gets-getws.md +++ b/docs/c-runtime-library/gets-getws.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: gets, _getws" title: "gets, _getws" -ms.date: "4/2/2020" +description: "Learn more about: gets, _getws" +ms.date: 4/2/2020 api_name: ["_getws", "gets", "_o__getws", "_o_gets"] api_location: ["msvcr80.dll", "msvcr90.dll", "msvcr120.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcrt.dll", "msvcr100.dll", "api-ms-win-crt-stdio-l1-1-0.dll"] api_type: ["DLLExport"] diff --git a/docs/c-runtime-library/parameter-validation.md b/docs/c-runtime-library/parameter-validation.md index 46053fc1e57..c16c5b84dd5 100644 --- a/docs/c-runtime-library/parameter-validation.md +++ b/docs/c-runtime-library/parameter-validation.md @@ -1,10 +1,9 @@ --- title: "Parameter Validation" description: "A description of parameter validation in the Microsoft C runtime library." -ms.date: "11/04/2016" +ms.date: 11/04/2016 ms.topic: "concept-article" helpviewer_keywords: ["parameters, validation"] -ms.assetid: 019dd5f0-dc61-4d2e-b4e9-b66409ddf1f2 --- # Parameter validation diff --git a/docs/c-runtime-library/reference/assert-asserte-assert-expr-macros.md b/docs/c-runtime-library/reference/assert-asserte-assert-expr-macros.md index 407364ac2a3..b728bbd517c 100644 --- a/docs/c-runtime-library/reference/assert-asserte-assert-expr-macros.md +++ b/docs/c-runtime-library/reference/assert-asserte-assert-expr-macros.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: _ASSERT, _ASSERTE, _ASSERT_EXPR Macros" title: "_ASSERT, _ASSERTE, _ASSERT_EXPR Macros" -ms.date: "11/04/2016" +description: "Learn more about: _ASSERT, _ASSERTE, _ASSERT_EXPR Macros" +ms.date: 11/04/2016 api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"] api_type: ["DLLExport"] topic_type: ["apiref"] diff --git a/docs/c-runtime-library/reference/ctan-ctanf-ctanl.md b/docs/c-runtime-library/reference/ctan-ctanf-ctanl.md index cbb5fa5b176..8272c80111f 100644 --- a/docs/c-runtime-library/reference/ctan-ctanf-ctanl.md +++ b/docs/c-runtime-library/reference/ctan-ctanf-ctanl.md @@ -1,14 +1,13 @@ --- title: "ctan, ctanf, ctanl" description: "API reference for ctan, ctanf, and ctanl; which retrieve the tangent of a complex number." -ms.date: "11/04/2016" +ms.date: 11/04/2016 api_name: ["ctan", "ctanf", "ctanl"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"] api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["ctan", "ctanf", "ctanl", "complex/ctan", "complex/ctanf", "complex/ctanl"] helpviewer_keywords: ["ctan function", "ctanf function", "ctanl function"] -ms.assetid: d3cbd25c-1e93-4a6d-8154-da42921f7223 --- # `ctan`, `ctanf`, `ctanl` diff --git a/docs/c-runtime-library/reference/exit-exit-exit.md b/docs/c-runtime-library/reference/exit-exit-exit.md index 304f2ce76f0..1736f05b272 100644 --- a/docs/c-runtime-library/reference/exit-exit-exit.md +++ b/docs/c-runtime-library/reference/exit-exit-exit.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: exit, _Exit, _exit" title: "exit, _Exit, _exit" -ms.date: "4/2/2020" +description: "Learn more about: exit, _Exit, _exit" +ms.date: 4/2/2020 api_name: ["_exit", "exit", "_o__exit", "_o_exit"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"] api_type: ["DLLExport"] diff --git a/docs/c-runtime-library/reference/mbrtoc16-mbrtoc323.md b/docs/c-runtime-library/reference/mbrtoc16-mbrtoc323.md index 9b812930430..f8f8f24a703 100644 --- a/docs/c-runtime-library/reference/mbrtoc16-mbrtoc323.md +++ b/docs/c-runtime-library/reference/mbrtoc16-mbrtoc323.md @@ -1,14 +1,13 @@ --- -description: "Learn more about: mbrtoc16, mbrtoc32" title: "mbrtoc16, mbrtoc323" -ms.date: "4/2/2020" +description: "Learn more about: mbrtoc16, mbrtoc32" +ms.date: 4/2/2020 api_name: ["mbrtoc16", "mbrtoc32", "_o_mbrtoc16", "_o_mbrtoc32"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"] api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["mbrtoc16", "mbrtoc32", "uchar/mbrtoc16", "uchar/mbrtoc32"] helpviewer_keywords: ["mbrtoc16 function", "mbrtoc32 function"] -ms.assetid: 099ade4d-56f7-4e61-8b45-493f1d7a64bd --- # `mbrtoc16`, `mbrtoc32` diff --git a/docs/c-runtime-library/reference/strtoumax-strtoumax-l-wcstoumax-wcstoumax-l.md b/docs/c-runtime-library/reference/strtoumax-strtoumax-l-wcstoumax-wcstoumax-l.md index 620cdd63710..e43cfdbd12d 100644 --- a/docs/c-runtime-library/reference/strtoumax-strtoumax-l-wcstoumax-wcstoumax-l.md +++ b/docs/c-runtime-library/reference/strtoumax-strtoumax-l-wcstoumax-wcstoumax-l.md @@ -1,14 +1,13 @@ --- -description: "Learn more about: strtoumax, _strtoumax_l, wcstoumax, _wcstoumax_l" title: "strtoumax, _strtoumax_l, wcstoumax, _wcstoumax_l" -ms.date: "11/04/2016" +description: "Learn more about: strtoumax, _strtoumax_l, wcstoumax, _wcstoumax_l" +ms.date: 11/04/2016 api_name: ["_wcstoumax_l", "_strtoumax_l", "wcstoumax", "strtoumax"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"] api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["INTTYPES/strtoumax", "INTTYPES/_strtoumax_l", "INTTYPES/wcstoumax", "INTTYPES/_wcstoumax_l", "TCHAR/_tcstoumax", "TCHAR/_tcstoumax_l", "strtoumax", "_strtoumax_l", "wcstoumax", "_wcstoumax_l", "_tcstoumax", "_tcstoumax_l"] helpviewer_keywords: ["_strtoumax_l function", "conversion functions", "wcstoumax function", "_wcstoumax_l function", "strtoumax function"] -ms.assetid: 566769f9-495b-4508-b9c6-02217a578897 --- # `strtoumax`, `_strtoumax_l`, `wcstoumax`, `_wcstoumax_l` diff --git a/docs/code-quality/using-rule-sets-to-specify-the-cpp-rules-to-run.md b/docs/code-quality/using-rule-sets-to-specify-the-cpp-rules-to-run.md index e98971d9707..a9884d1794c 100644 --- a/docs/code-quality/using-rule-sets-to-specify-the-cpp-rules-to-run.md +++ b/docs/code-quality/using-rule-sets-to-specify-the-cpp-rules-to-run.md @@ -1,6 +1,6 @@ --- +title: "Using Rule Sets to Specify the C++ Rules to Run" description: "Learn more about: Use Rule Sets to Specify the C++ Rules to Run" -title: Using Rule Sets to Specify the C++ Rules to Run ms.date: 07/27/2020 ms.topic: "how-to" f1_keywords: diff --git a/docs/cpp/floating-limits.md b/docs/cpp/floating-limits.md index 10b244a46dc..60762ecfb15 100644 --- a/docs/cpp/floating-limits.md +++ b/docs/cpp/floating-limits.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Floating Limits" title: "Floating Limits" -ms.date: "08/03/2018" +description: "Learn more about: Floating Limits" +ms.date: 08/03/2018 helpviewer_keywords: ["ranges, floating-point constants", "floating-point constants, limits", "float.h header file", "limits, floating-point constants", "floating-point numbers [C++]", "floating limits"] -ms.assetid: fc718652-1f4c-4ed8-af60-0e769637459c --- # Floating Limits diff --git a/docs/cpp/restrict-cpp-amp.md b/docs/cpp/restrict-cpp-amp.md index bd1b63c3b1f..97dcc8e1286 100644 --- a/docs/cpp/restrict-cpp-amp.md +++ b/docs/cpp/restrict-cpp-amp.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: restrict (C++ AMP)" title: "restrict (C++ AMP)" -ms.date: "11/04/2016" +description: "Learn more about: restrict (C++ AMP)" +ms.date: 11/04/2016 f1_keywords: ["cpu_CPP", "amp_CPP"] helpviewer_keywords: ["restrict clause (C++ AMP)"] -ms.assetid: 07d3291f-7edf-456b-8828-283ac8673661 --- # restrict (C++ AMP) diff --git a/docs/cpp/templates-cpp.md b/docs/cpp/templates-cpp.md index aa7e68bec68..bc964932988 100644 --- a/docs/cpp/templates-cpp.md +++ b/docs/cpp/templates-cpp.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Templates (C++)" title: "Templates (C++)" -ms.date: "12/27/2019" +description: "Learn more about: Templates (C++)" +ms.date: 12/27/2019 f1_keywords: ["template_cpp"] helpviewer_keywords: ["templates, C++", "templates [C++]"] -ms.assetid: 90fcc14a-2092-47af-9d2e-dba26d25b872 --- # Templates (C++) diff --git a/docs/cppcx/attributes-c-cx.md b/docs/cppcx/attributes-c-cx.md index 0fbe7a494e0..f7c87dca2b2 100644 --- a/docs/cppcx/attributes-c-cx.md +++ b/docs/cppcx/attributes-c-cx.md @@ -1,8 +1,7 @@ --- -description: "Learn more about: Attributes (C++/CX)" title: "Attributes (C++/CX)" -ms.date: "12/30/2016" -ms.assetid: 4438e03c-4de3-433d-abcc-31aa863bc0e0 +description: "Learn more about: Attributes (C++/CX)" +ms.date: 12/30/2016 --- # Attributes (C++/CX) diff --git a/docs/cppcx/platform-collections-unorderedmap-class.md b/docs/cppcx/platform-collections-unorderedmap-class.md index 056468abaca..a65c9b4d548 100644 --- a/docs/cppcx/platform-collections-unorderedmap-class.md +++ b/docs/cppcx/platform-collections-unorderedmap-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Platform::Collections::UnorderedMap Class" title: "Platform::Collections::UnorderedMap Class" -ms.date: "12/30/2016" +description: "Learn more about: Platform::Collections::UnorderedMap Class" +ms.date: 12/30/2016 ms.topic: "reference" f1_keywords: ["collection/Platform::Collections::UnorderedMap"] -ms.assetid: dc84f261-b13c-4c0a-9b57-30dcb9e3065e --- # Platform::Collections::UnorderedMap Class diff --git a/docs/parallel/amp/cpp-amp-overview.md b/docs/parallel/amp/cpp-amp-overview.md index 452f22396fd..71492d2b0f3 100644 --- a/docs/parallel/amp/cpp-amp-overview.md +++ b/docs/parallel/amp/cpp-amp-overview.md @@ -1,9 +1,9 @@ --- -description: "Learn more about: C++ AMP Overview" title: "C++ AMP Overview" -ms.date: "11/19/2018" -helpviewer_keywords: ["C++ Accelerated Massive Parallelism, requirements", "C++ Accelerated Massive Parallelism, architecture", "C++ AMP", "C++ Accelerated Massive Parallelism, overview", "C++ Accelerated Massive Parallelism"] +description: "Learn more about: C++ AMP Overview" +ms.date: 11/19/2018 ms.topic: concept-article +helpviewer_keywords: ["C++ Accelerated Massive Parallelism, requirements", "C++ Accelerated Massive Parallelism, architecture", "C++ AMP", "C++ Accelerated Massive Parallelism, overview", "C++ Accelerated Massive Parallelism"] --- # C++ AMP Overview diff --git a/docs/preprocessor/pack.md b/docs/preprocessor/pack.md index c15e48f89c1..9941cdcd092 100644 --- a/docs/preprocessor/pack.md +++ b/docs/preprocessor/pack.md @@ -1,6 +1,6 @@ --- -description: "Learn more about the pack pragma directive in Microsoft C/C++" title: "pack pragma" +description: "Learn more about the pack pragma directive in Microsoft C/C++" ms.date: 01/22/2021 f1_keywords: ["pack_CPP", "vc-pragma.pack"] helpviewer_keywords: ["pragma, pack", "pack pragma"] diff --git a/docs/standard-library/ambiguous-local-time.md b/docs/standard-library/ambiguous-local-time.md index 69d255b0ab3..d90b87dcedc 100644 --- a/docs/standard-library/ambiguous-local-time.md +++ b/docs/standard-library/ambiguous-local-time.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: ambiguous_local_time class" title: "ambiguous_local_time class" +description: "Learn more about: ambiguous_local_time class" ms.date: 10/08/2021 f1_keywords: ["chrono/std::chrono::ambiguous_local_time", "chrono/std::chrono::ambiguous_local_time::what"] helpviewer_keywords: ["std::chrono [C++], ambiguous_local_time"] diff --git a/docs/standard-library/duration-class.md b/docs/standard-library/duration-class.md index 706491c042e..e3269876783 100644 --- a/docs/standard-library/duration-class.md +++ b/docs/standard-library/duration-class.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: duration class" title: "duration Class" +description: "Learn more about: duration class" ms.date: 01/05/2022 f1_keywords: ["chrono/std::chrono::duration", "chrono/std::chrono::duration::duration", "chrono/std::chrono::duration::count", "chrono/std::chrono::duration::max", "chrono/std::chrono::duration::min", "chrono/std::chrono::duration::zero","chrono/std::chrono::duration::operator-", "chrono/std::chrono::duration::operator--", "chrono/std::chrono::duration::operator%=", "chrono/std::chrono::duration::operator*=", "chrono/std::chrono::duration::operator+", "chrono/std::chrono::duration::operator++", "chrono/std::chrono::duration::operator+=", "chrono/std::chrono::duration::operator-=", "chrono/std::chrono::duration::operator="] helpviewer_keywords: ["std::chrono [C++], duration"] diff --git a/docs/standard-library/file-clock-class.md b/docs/standard-library/file-clock-class.md index 289bcce89bf..6f9b2251cec 100644 --- a/docs/standard-library/file-clock-class.md +++ b/docs/standard-library/file-clock-class.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: file_clock class" title: "file_clock class" +description: "Learn more about: file_clock class" ms.date: 3/8/2024 f1_keywords: ["chrono/std::chrono::file_clock", "chrono/std::chrono::file_clock::now", "chrono/std::chrono::file_clock::to_utc", "chrono/std::chrono::file_clock::from_utc", "chrono/std::chrono::file_clock::is_steady Constant"] --- diff --git a/docs/standard-library/filter-view-class.md b/docs/standard-library/filter-view-class.md index c0bd7389f52..2e36ae8a983 100644 --- a/docs/standard-library/filter-view-class.md +++ b/docs/standard-library/filter-view-class.md @@ -1,5 +1,5 @@ --- -title: filter_view class (C++ Standard Library) +title: "filter_view class (C++ Standard Library)" description: "API reference for the Standard Template Library (STL) filter_view class, which is a view that filters out elements of a range that don't match a predicate." ms.date: 09/27/2022 f1_keywords: ["ranges/std::filter_view", "ranges/std::filter_view::base", "ranges/std::filter_view::begin", "ranges/std::filter_view::empty", "ranges/std::filter_view::end", "ranges/std::filter_view::operator bool", "ranges/std::filter_view::pred", "ranges/std::filter_view::back", "ranges/std::filter_view::front"] diff --git a/docs/standard-library/subrange-class.md b/docs/standard-library/subrange-class.md index 1a38bf37d1d..98576c1de55 100644 --- a/docs/standard-library/subrange-class.md +++ b/docs/standard-library/subrange-class.md @@ -1,5 +1,5 @@ --- -title: subrange class (C++ Standard Library) +title: "subrange class (C++ Standard Library)" description: "API reference for the Standard Template Library (STL) subrange class, which is a view of the elements of a range as defined by a begin iterator and a sentinel." ms.date: 10/05/2022 f1_keywords: ["ranges/std::subrange", "ranges/std::subrange::begin", "ranges/std::subrange::data", "ranges/std::subrange::empty", "ranges/std::subrange::end", "ranges/std::subrange::get", "ranges/std::subrange::size", "ranges/std::subrange::operator bool", "ranges/std::subrange::operator PairLike", "ranges/std::subrange::back", "ranges/std::subrange::front", "ranges/std::subrange::operator[]", "ranges/std::subrange::advance", "ranges/std::subrange::prev", "ranges/std::subrange::next"] diff --git a/docs/standard-library/time-point-class.md b/docs/standard-library/time-point-class.md index 24818d11dcd..5535d23dd92 100644 --- a/docs/standard-library/time-point-class.md +++ b/docs/standard-library/time-point-class.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: time_point Class" title: "time_point Class" +description: "Learn more about: time_point Class" ms.date: 01/05/2022 f1_keywords: ["chrono/std::chrono::time_point", "chrono/std::chrono::time_point::operator +=", "chrono/std::chrono::time_point::operator -=", "chrono/std::chrono::time_point::max", "chrono/std::chrono::time_point::min", "chrono/std::chrono::time_point::time_since_epoch"] helpviewer_keywords: ["std::chrono [C++], time_point"] diff --git a/docs/standard-library/view-interface.md b/docs/standard-library/view-interface.md index b042f9f80cd..2b77da6fd37 100644 --- a/docs/standard-library/view-interface.md +++ b/docs/standard-library/view-interface.md @@ -1,5 +1,5 @@ --- -title: view_interface class (C++ Standard Library) +title: "view_interface class (C++ Standard Library)" description: "API reference for the Standard Template Library (STL) view_interface class, which is the base class for the ranges view classes." ms.date: 10/07/2022 f1_keywords: ["ranges/std::view_interface::back", "ranges/std::view_interface::data","ranges/std::view_interface::empty", "ranges/std::view_interface::front", "ranges/std::view_interface::size", "ranges/std::view_interface::operator[]", "ranges/std::view_interface::operator bool"] From a6028b5432887020e2f12a2237ed0c9d7321d11b Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 25 Sep 2025 18:09:10 -0700 Subject: [PATCH 1926/2255] make redist topic easier to navigate --- docs/windows/latest-supported-vc-redist.md | 54 +++++++++++-------- .../redistributing-visual-cpp-files.md | 3 ++ 2 files changed, 34 insertions(+), 23 deletions(-) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index 974db314854..aaea9cfce78 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -1,7 +1,7 @@ --- title: "Latest supported Visual C++ Redistributable downloads" -description: "This article lists the download links for the latest versions of Visual C++ Redistributable packages." -ms.date: 5/28/2025 +description: "This article provides download links for the latest Visual C++ Redistributable packages." +ms.date: 09/23/2025 helpviewer_keywords: [ "redist", @@ -9,7 +9,7 @@ helpviewer_keywords: "Visual [C++] redistributable", "Visual [C++] downloads", "MSVC downloads", - "[C++] downloads", + "[C++] downloads" ] author: MahmoudGSaleh ms.author: msaleh @@ -17,23 +17,33 @@ ms.author: msaleh # Microsoft Visual C++ Redistributable latest supported downloads -The Visual C++ Redistributable installs Microsoft C and C++ (MSVC) runtime libraries. Many applications built using Microsoft C and C++ tools require these libraries. If your app uses those libraries, a Microsoft Visual C++ Redistributable package must be installed on the target system before you install your app. The Redistributable package architecture must match your app's target architecture. The Redistributable version must be at least as recent as the MSVC build toolset used to build your app. We recommend you use the latest Redistributable available for your version of Visual Studio, with some exceptions noted later in this article. +> [!NOTE] +> Are you here to download Visual Studio? Go to [Visual Studio downloads](https://visualstudio.microsoft.com/downloads/). -Distribution of the Visual C++ Runtime Redistributable package, merge modules, and individual binaries is limited to licensed Visual Studio users and is subject to such License Terms. +This topic is for developers who need to install the Visual C++ runtime libraries on the system that their apps runs on. If you're an end user trying to fix an app by updating the Visual C++ runtime libraries, contact the app vendor for instructions. -For details on how to install and redistribute Visual Studio components, see [Redistributing Visual C++ Files](redistributing-visual-cpp-files.md). +To quickly find the download you need, choose your version of Visual Studio from the table below. Each link takes you to the appropriate download section. -## Visual Studio 2015, 2017, 2019, and 2022 +| Visual Studio version | Download section | +|--|--| +| Latest supported (2015–2022) | [Latest supported Redistributable version](#latest-supported-redistributable-version) | +| Visual Studio 2013 | [Visual Studio 2013 (VC++ 12.0)](#visual-studio-2013-vc-120-no-longer-supported) | +| Visual Studio 2012 | [Visual Studio 2012 (VC++ 11.0)](#visual-studio-2012-vc-110-update-4-no-longer-supported) | +| Visual Studio 2010 | [Visual Studio 2010 (VC++ 10.0)](#visual-studio-2010-vc-100-sp1-no-longer-supported) | +| Visual Studio 2008 | [Visual Studio 2008 (VC++ 9.0)](#visual-studio-2008-vc-90-sp1-no-longer-supported) | +| Visual Studio 2005 | [Visual Studio 2005 (VC++ 8.0)](#visual-studio-2005-vc-80-sp1-no-longer-supported) | -This table lists the latest supported English (en-US) Microsoft Visual C++ Redistributable packages for Visual Studio 2015, 2017, 2019, and 2022. The latest supported version has the most recently implemented C++ features, security, reliability, and performance improvements. It also includes the latest C++ standard language and library standards conformance updates. We recommend that you install this version for all applications created using Visual Studio 2015, 2017, 2019, or 2022. +Redistribution is permitted only for licensed Visual Studio users, as described in the [Visual Studio license terms](https://visualstudio.microsoft.com/license-terms/). For details on redistributing Visual C++ files, see [Redistributing Visual C++ Files](redistributing-visual-cpp-files.md). -Unlike older versions of Visual Studio, which have infrequent redist updates, the version number isn't listed in the following table for Visual Studio 2015-2022 because the redist is updated frequently. To find the version number of the latest redist, download the redist you're interested in using one of the following links. Then, look at its properties using Windows File Explorer. In the **Details** pane, the **File version** contains the version of the redist. +A Visual C++ Redistributable installs Microsoft C and C++ (MSVC) runtime libraries. Many applications built using Microsoft C and C++ tools require these libraries. If your app is built using those libraries, a Microsoft Visual C++ Redistributable package at least as recent as the MSVC build toolset used to build your app must be installed on the target system along with the app. The Redistributable package architecture must match your app's target architecture (you can't install an ARM redistributable on an x86 system, or an x64 redistributable on an x86 system, for example). We recommend you use the latest Redistributable available for your version of Visual Studio, with some exceptions noted in this article. -## Latest Microsoft Visual C++ Redistributable version +## Visual Studio 2015-2022 -The latest version is `v14.44.35211.0` +This table lists the latest supported English (en-US) Microsoft Visual C++ Redistributable packages for Visual Studio 2015, 2017, 2019, and 2022. The latest supported version has the most recently implemented C++ features, security, reliability, and performance improvements. It also includes the latest C++ standard language and library standards conformance updates. We recommend that you install this version for all applications created using Visual Studio 2015, 2017, 2019, or 2022. -Use the following links to download this version for each supported architecture: +Unlike older versions of Visual Studio that have infrequent redist updates, the version number isn't listed in the following table for Visual Studio 2015-2022 because the redist is updated frequently. To find the version number of the latest redist, download the redist you're interested in using one of the following links. Then, look at its properties using Windows File Explorer. In the **Details** pane, the **File version** contains the version of the redist. + +### Latest supported Redistributable version: | Architecture | Link | Notes | |--|--|--| @@ -46,31 +56,29 @@ Download other versions, including long term servicing release channel (LTSC) ve ### Notes - The Visual C++ Redistributable for Visual Studio 2015-2022 doesn't have separate packages for different languages. It contains EULAs for all supported languages. - - Some of the downloads that are mentioned in this article are currently available on [my.visualstudio.com](https://my.visualstudio.com/). Log in using a Visual Studio Subscription account so that you can access the download links. If you're asked for credentials, use your existing Visual Studio subscription account. Or, create a free account by choosing the **No account? Create one!** link. - - Visual Studio versions since Visual Studio 2015 share the same Redistributable files. For example, any apps built by the Visual Studio 2015, 2017, 2019, or 2022 toolsets can use the latest Microsoft Visual C++ Redistributable. However, the version of the Microsoft Visual C++ Redistributable installed on the machine must be the same or higher than the version of the Visual C++ toolset used to create your application. For more information about which version of the Redistributable to install, see [Determining which DLLs to redistribute](determining-which-dlls-to-redistribute.md). For more information about binary compatibility, see [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md). - - **Windows XP Support**: Microsoft ended support for Windows XP on April 8, 2014. Current versions of the Visual C++ Redistributable for Visual Studio 2015-2022 only support Windows 7, 8.1, 10, and 11. The last version of the Visual C++ Redistributable that works on Windows XP shipped in Visual Studio 2019 version 16.7 (file versions starting with **14.27**). The Redistributable is available in the [my.visualstudio.com Downloads](https://my.visualstudio.com/Downloads/) section as **Visual C++ Redistributable for Visual Studio 2019 (version 16.7)**. Use the Search box to find this version. To download the files, select the platform and language you need, and then choose the **Download** button. - - The Visual C++ Redistributable supports several command-line options. For more information, see [Command-line options for the Redistributable packages](./redistributing-visual-cpp-files.md#command-line-options-for-the-redistributable-packages). -## Visual Studio 2013 (VC++ 12.0) (no longer supported) +## Unsupported legacy versions + +### Visual Studio 2013 (VC++ 12.0) (no longer supported) These links download the latest available en-US Microsoft Visual C++ Redistributable packages for Visual Studio 2013. You can download other versions and languages from [Update for Visual C++ 2013 Redistributable Package](https://support.microsoft.com/topic/update-for-visual-c-2013-redistributable-package-d8ccd6a5-4e26-c290-517b-8da6cfdf4f10) or from [my.visualstudio.com](https://my.visualstudio.com/). -| Architecture | Version | Link | +| Architecture | Version | Link | | ------------ | :----------: | ------------------------------------------------------: | | X86 | 12.0.40664.0 | [vcredist_x86.exe](https://aka.ms/highdpimfc2013x86enu) | | X64 | 12.0.40664.0 | [vcredist_x64.exe](https://aka.ms/highdpimfc2013x64enu) | -### Other versions +### Other 2013 versions - [Multibyte MFC Library for Visual Studio 2013](https://my.visualstudio.com/Downloads?pid=1430). This MFC add-on for Visual Studio 2013 contains the multibyte character set (MBCS) version of the Microsoft Foundation Class (MFC) Library. - [Visual C++ 2013 Runtime for Sideloaded Windows 8.1 apps](https://download.microsoft.com/download/5/f/0/5f0f8404-9329-44a9-8176-ed6f7f746f25/vclibs_redist_packages.zip). For more information, see [C++ Runtime for Sideloaded Windows 8.1 apps](https://devblogs.microsoft.com/cppblog/c-runtime-for-sideloaded-windows-8-1-apps/) on the C++ Team Blog. -## Visual Studio 2012 (VC++ 11.0) Update 4 (no longer supported) +### Visual Studio 2012 (VC++ 11.0) Update 4 (no longer supported) > [!NOTE] > Visual Studio 2012 [reached end of extended support on Jan 10, 2023](/lifecycle/products/visual-studio-2012) @@ -82,7 +90,7 @@ These links download the latest available en-US Microsoft Visual C++ Redistribut | X86 | 11.0.61030.0 | [en_visual_cpp_redistributable_for_visual_studio_2012_update_4_x86_3161523.exe](https://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x86.exe) | | X64 | 11.0.61030.0 | [en_visual_cpp_redistributable_for_visual_studio_2012_update_4_x64_3161523.exe](https://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x64.exe) | -## Visual Studio 2010 (VC++ 10.0) SP1 (no longer supported) +### Visual Studio 2010 (VC++ 10.0) SP1 (no longer supported) > [!NOTE] > Visual Studio 2010 Service Pack 1 [reached end of extended support on July 14, 2020](/lifecycle/products/visual-studio-2010) @@ -96,7 +104,7 @@ Download Redistributable files for other languages and architectures from: - [Microsoft Visual C++ 2010 SP1 Redistributable Package MFC Security Update](https://www.microsoft.com/download/details.aspx?id=26999) -## Visual Studio 2008 (VC++ 9.0) SP1 (no longer supported) +### Visual Studio 2008 (VC++ 9.0) SP1 (no longer supported) > [!NOTE] > Visual Studio 2008 Service Pack 1 [reached end of extended support on April 10, 2018](/lifecycle/products/visual-studio-2008) @@ -110,7 +118,7 @@ Download Redistributable files for other languages and architectures from: - [Microsoft Visual C++ 2008 Service Pack 1 Redistributable Package MFC Security Update](https://www.microsoft.com/download/details.aspx?id=26368) -## Visual Studio 2005 (VC++ 8.0) SP1 (no longer supported) +### Visual Studio 2005 (VC++ 8.0) SP1 (no longer supported) > [!NOTE] > Visual Studio 2005 [reached end of extended support on April 12, 2016](/lifecycle/products/microsoft-visual-studio-2005) diff --git a/docs/windows/redistributing-visual-cpp-files.md b/docs/windows/redistributing-visual-cpp-files.md index 97ba8cbcdd9..f96f06bd799 100644 --- a/docs/windows/redistributing-visual-cpp-files.md +++ b/docs/windows/redistributing-visual-cpp-files.md @@ -102,3 +102,6 @@ Links to examples that demonstrate how to deploy Visual C++ applications. [Deploying Desktop Applications](deploying-native-desktop-applications-visual-cpp.md)\ Introduces Visual C++ deployment concepts and technologies. + +[Latest supported Visual C++ Redistributable downloads](latest-supported-vc-redist.md)\ +Links to the latest supported Visual C++ Redistributable downloads. \ No newline at end of file From 7557e30c42598c90c517691d9a9a0a9fafecb020 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 25 Sep 2025 18:46:21 -0700 Subject: [PATCH 1927/2255] tweaks --- docs/windows/latest-supported-vc-redist.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index aaea9cfce78..d557a38efb2 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -20,11 +20,11 @@ ms.author: msaleh > [!NOTE] > Are you here to download Visual Studio? Go to [Visual Studio downloads](https://visualstudio.microsoft.com/downloads/). -This topic is for developers who need to install the Visual C++ runtime libraries on the system that their apps runs on. If you're an end user trying to fix an app by updating the Visual C++ runtime libraries, contact the app vendor for instructions. +This topic is for developers who need to install the Visual C++ runtime libraries with their app. If you're an end user trying to fix an app by updating the Visual C++ runtime libraries, contact the app vendor for instructions. -To quickly find the download you need, choose your version of Visual Studio from the table below. Each link takes you to the appropriate download section. +To find the download you need, choose your version of Visual Studio from the table below. Each link takes you to the appropriate download section. -| Visual Studio version | Download section | +| Visual Studio version | Section | |--|--| | Latest supported (2015–2022) | [Latest supported Redistributable version](#latest-supported-redistributable-version) | | Visual Studio 2013 | [Visual Studio 2013 (VC++ 12.0)](#visual-studio-2013-vc-120-no-longer-supported) | From 8deb7d7579501895f82ec93b7fd26747bdbdcb3b Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 25 Sep 2025 19:44:33 -0700 Subject: [PATCH 1928/2255] add note for vs 2022 --- docs/build/reference/fpcvt.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/build/reference/fpcvt.md b/docs/build/reference/fpcvt.md index 8661d649c92..30d2b7361b2 100644 --- a/docs/build/reference/fpcvt.md +++ b/docs/build/reference/fpcvt.md @@ -1,7 +1,7 @@ --- description: "Learn more about: /fpcvt (Floating-point to integer conversion compatibility)" title: "/fpcvt (Floating-point to unsigned integer conversion compatibility)" -ms.date: 11/03/2021 +ms.date: 09/25/2025 f1_keywords: ["/fpcvt", "-fpcvt"] helpviewer_keywords: ["-fpcvt compiler option [C++]", "/fpcvt compiler option [C++]"] --- @@ -30,6 +30,8 @@ In Visual Studio 2019 version 16.8 and later versions, the **`/fpcvt`** compiler For Visual Studio 2019, the default behavior for x64 targets is consistent with **`/fpcvt:BC`** unless **`/arch:AVX512`** is specified. Usually, the behavior for x86 targets is consistent with **`/fpcvt:IA`**, except under **`/arch:IA32`**, **`/arch:SSE`**, or sometimes where the result of a function call is directly converted to an unsigned integer. Use of **`/fpcvt`** overrides the default, so all conversions are handled consistently on either target. The behavior of conversions for ARM and ARM64 targets isn't consistent with either **`/fpcvt:BC`** or **`/fpcvt:IA`**. +Starting with Visual Studio 2022, the default behavior for x64 targets is consistent with `/fpcvt:BC` even when `/arch:AVX512` is specified. To use AVX512 conversion behavior with `/arch:AVX512`, specify `/fpcvt:IA`. + Standard C++ specifies that if a truncated floating-point value is exactly representable in an integer type, it must have that value when converted to that type. Otherwise, any behavior at all is allowed. Both **`/fpcvt`** options conform with Standard C++. The only difference is in what values are returned for invalid source values. The **`/fpcvt:IA`** option causes any invalid conversion to return a single *sentinel* value, which is the destination value farthest from zero. For conversion to signed types, the sentinel is the minimum value for that type. Unsigned types use the maximum value. Floating-point operations may return a Not-a-Number (NaN) value to indicate an invalid operation. That indicator isn't an option for conversion to integer types, which don't have NaN values. The sentinel is used as a proxy for a NaN value, although it can also be the result of a valid conversion. From 57d157830d8a117d053552d9b815205aab0d3b47 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Fri, 26 Sep 2025 18:14:21 +0800 Subject: [PATCH 1929/2255] Add "Remarks" headings for warning references in range [C26100, C26167] --- docs/code-quality/c26101.md | 2 ++ docs/code-quality/c26105.md | 2 ++ docs/code-quality/c26110.md | 2 ++ docs/code-quality/c26111.md | 2 ++ docs/code-quality/c26112.md | 2 ++ docs/code-quality/c26115.md | 2 ++ docs/code-quality/c26117.md | 2 ++ docs/code-quality/c26130.md | 2 ++ docs/code-quality/c26135.md | 2 ++ docs/code-quality/c26160.md | 2 ++ docs/code-quality/c26165.md | 2 ++ docs/code-quality/c26166.md | 2 ++ docs/code-quality/c26167.md | 2 ++ 13 files changed, 26 insertions(+) diff --git a/docs/code-quality/c26101.md b/docs/code-quality/c26101.md index aefe6357eb3..73572cf80f8 100644 --- a/docs/code-quality/c26101.md +++ b/docs/code-quality/c26101.md @@ -10,6 +10,8 @@ ms.assetid: 86046553-09ec-40ce-82b3-fd641928f0b0 > Failing to use interlocked operation properly for variable '*var*'. +## Remarks + Windows APIs offer various interlocked operations. Annotation `_Interlocked_` specifies that a variable should only be accessed through an interlocked operation. Warning C26101 is issued when a variable access isn't consistent with the `_Interlocked_` annotation. ## Example diff --git a/docs/code-quality/c26105.md b/docs/code-quality/c26105.md index 72dbc32d32a..e99176a6169 100644 --- a/docs/code-quality/c26105.md +++ b/docs/code-quality/c26105.md @@ -10,6 +10,8 @@ ms.assetid: 5558a3db-0513-43b4-8579-ccdc17e2b92f > Lock order violation. Acquiring lock '*lock*' with level '*level*' causes order inversion. +## Remarks + Concurrency SAL supports *lock levels*. To declare a lock level, which is denoted by a string literal without double quotes, use `_Create_lock_level_`. You can impose an order of acquisition between two lock levels by using the annotation `_Set_lock_level_order_(A,B)`, which states that locks that have level `A` must be acquired before locks that have level `B`. To establish a lock order hierarchy (a partial order among lock levels), use multiple `_Set_lock_level_order_` annotations. To associate a lock with a lock level, use the `_Set_lock_level_` annotation when you declare the lock. Warning C26105 is issued when a lock ordering violation is detected. ## Example diff --git a/docs/code-quality/c26110.md b/docs/code-quality/c26110.md index d1981b15768..ff34b83e1f4 100644 --- a/docs/code-quality/c26110.md +++ b/docs/code-quality/c26110.md @@ -10,6 +10,8 @@ ms.assetid: d82b79ec-6d7f-438b-bd6a-da874a3e08e5 > Caller failing to hold lock '*lock*' before calling function '*func*'. +## Remarks + When a lock is required, make sure to clarify whether the function itself, or its caller, should acquire the lock. Warning C26110 is issued when there's a violation of the `_Requires_lock_held_` annotation, or other lock-related annotations. For more information, see [Annotating Locking Behavior](annotating-locking-behavior.md) ## Example diff --git a/docs/code-quality/c26111.md b/docs/code-quality/c26111.md index 5fdbec7c476..326529c0428 100644 --- a/docs/code-quality/c26111.md +++ b/docs/code-quality/c26111.md @@ -10,6 +10,8 @@ ms.assetid: 85fc740a-3bbb-41b8-a848-95e243a08da9 > Caller failing to release lock '*lock*' before calling function '*func*'. +## Remarks + The annotation `_Requires_lock_not_held_` imposes a precondition that the lock count for the specified lock can't be greater than zero when the function is called. Warning C26111 is issued when a function fails to release the lock before it calls another function. ## Example diff --git a/docs/code-quality/c26112.md b/docs/code-quality/c26112.md index 7794bf4ef5b..683cc6eeee3 100644 --- a/docs/code-quality/c26112.md +++ b/docs/code-quality/c26112.md @@ -10,6 +10,8 @@ ms.assetid: 926de738-b9b0-43d7-9137-ab2daa44ad4d > Caller cannot hold any lock before calling '*func*'. +## Remarks + The annotation `_Requires_no_locks_held_` imposes a precondition that the caller must not hold any lock while it calls the function. Warning C26112 is issued when a function fails to release all locks before it calls another function. ## Example diff --git a/docs/code-quality/c26115.md b/docs/code-quality/c26115.md index 402dd0aea97..1fd85a631f5 100644 --- a/docs/code-quality/c26115.md +++ b/docs/code-quality/c26115.md @@ -10,6 +10,8 @@ ms.assetid: 3977a2bb-d1fe-4510-89dd-07fdc69e911c > Failing to release lock '*lock*' in function '*func*'. +## Remarks + Enforcement of syntactically scoped lock *acquire* and lock *release* pairs in C/C++ programs isn't performed by the language. A function may introduce a locking side effect by making an observable modification to the concurrency state. For example, a lock wrapper function increments the number of lock acquisitions, or lock count, for a given lock. You can annotate a function that has a side effect from a lock acquire or lock release by using `_Acquires_lock_` or `_Releases_lock_`, respectively. Without such annotations, a function is expected not to change any lock count after it returns. If acquires and releases aren't balanced, they're considered to be *orphaned*. Warning C26115 is issued when a function introduces an orphaned lock. diff --git a/docs/code-quality/c26117.md b/docs/code-quality/c26117.md index 235b47f14f4..7678d030ee7 100644 --- a/docs/code-quality/c26117.md +++ b/docs/code-quality/c26117.md @@ -10,6 +10,8 @@ ms.assetid: cc7ebc8d-9826-4cad-a4d5-2d3ad5896734 > Releasing unheld lock '*lock*' in function '*func*'. +## Remarks + Enforcement of syntactically scoped lock *acquire* and lock *release* pairs in C/C++ programs isn't performed by the language. A function may introduce a locking side effect by making an observable modification to the concurrency state. For example, a lock wrapper function increments the number of lock acquisitions, or lock count, for a given lock. You can annotate a function that has a side effect from a lock acquire or lock release by using `_Acquires_lock_` or `_Releases_lock_`, respectively. Without such annotations, a function is expected not to change any lock count after it returns. If acquires and releases aren't balanced, they're considered to be *orphaned*. Warning C26117 is issued when a function that hasn't been annotated with `_Releases_lock_` releases a lock that it doesn't hold, because the function must own the lock before it releases it. ## Examples diff --git a/docs/code-quality/c26130.md b/docs/code-quality/c26130.md index fb1912520c6..2f17638b274 100644 --- a/docs/code-quality/c26130.md +++ b/docs/code-quality/c26130.md @@ -10,6 +10,8 @@ ms.assetid: 535e2356-bc84-4549-983d-7d29aee2249c > Missing annotation \_Requires\_lock\_held\_('*lock*') or \_No\_competing\_thread\_ at function '*func*'. Otherwise it could be a race condition. Variable '*var*' should be protected by lock '*lock*'. +## Remarks + Warning C26130 is issued when the analyzer detects a potential race condition but infers that the function is likely to be run in a single threaded mode. For example, when the function is in the initialization stage, based on certain heuristics. ## Examples diff --git a/docs/code-quality/c26135.md b/docs/code-quality/c26135.md index 96db147d013..4f9b9f55578 100644 --- a/docs/code-quality/c26135.md +++ b/docs/code-quality/c26135.md @@ -10,6 +10,8 @@ ms.assetid: e9515189-8d21-473b-89f4-8b92ebd3a4f1 > Missing annotation '*annotation*' at function '*func*'. +## Remarks + Warning C26135 is issued when the analyzer infers that a function is a lock wrapper function that has a "lock acquire" or "lock release" side effect. If the code isn't intended to be a wrapper function, then either the lock is leaking (if it's being acquired), or it's being released incorrectly (if the lock is being released). ## Examples diff --git a/docs/code-quality/c26160.md b/docs/code-quality/c26160.md index 2d8df17126b..92fe961b146 100644 --- a/docs/code-quality/c26160.md +++ b/docs/code-quality/c26160.md @@ -10,6 +10,8 @@ ms.assetid: e6518687-36b4-4eae-a732-758881638295 > Caller possibly failing to hold lock '*lock*' before calling function '*func*'. +## Remarks + Warning C26160 resembles warning [C26110](../code-quality/c26110.md) except that the confidence level is lower. For example, the function may contain annotation errors. ## Examples diff --git a/docs/code-quality/c26165.md b/docs/code-quality/c26165.md index 973b4745d96..684a10f0e43 100644 --- a/docs/code-quality/c26165.md +++ b/docs/code-quality/c26165.md @@ -10,6 +10,8 @@ ms.assetid: a1d89bd6-08f3-4215-8a0c-b8ecfeb0cffc > Possibly failing to release lock '*lock*' in function '*func*'. +## Remarks + Warning C26165 resembles warning [C26115](../code-quality/c26115.md) except that the confidence level is lower. For example, the function may contain annotation errors. ## Examples diff --git a/docs/code-quality/c26166.md b/docs/code-quality/c26166.md index 04809e0a941..139f22bf559 100644 --- a/docs/code-quality/c26166.md +++ b/docs/code-quality/c26166.md @@ -10,6 +10,8 @@ ms.assetid: a3d21838-07da-40f6-8d2e-1ada72765af2 > Possibly failing to acquire or to hold lock '*lock*' in function '*func*'. +## Remarks + Warning C26166 resembles warning [C26116](../code-quality/c26116.md) except that the confidence level is lower. For example, the function may contain annotation errors. ## Example diff --git a/docs/code-quality/c26167.md b/docs/code-quality/c26167.md index 8e7eea235ba..24c07fc7e1e 100644 --- a/docs/code-quality/c26167.md +++ b/docs/code-quality/c26167.md @@ -10,6 +10,8 @@ ms.assetid: 5a3d767f-31fa-45e0-8c9b-1aa776acaa45 > Possibly releasing unheld lock '*lock*' in function '*func*'. +## Remarks + Warning C26167 resembles warning [C26117](../code-quality/c26117.md) except that the confidence level is lower. For example, the function may contain annotation errors. ## Examples From 1e38532b82816a2e5b4c2f1ddd627b9311c8ba33 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Fri, 26 Sep 2025 18:19:28 +0800 Subject: [PATCH 1930/2255] Update metadata for warning references in range [C26100, C26167] --- docs/code-quality/c26100.md | 3 +-- docs/code-quality/c26101.md | 3 +-- docs/code-quality/c26105.md | 3 +-- docs/code-quality/c26110.md | 3 +-- docs/code-quality/c26111.md | 3 +-- docs/code-quality/c26112.md | 3 +-- docs/code-quality/c26115.md | 3 +-- docs/code-quality/c26117.md | 3 +-- docs/code-quality/c26130.md | 3 +-- docs/code-quality/c26135.md | 3 +-- docs/code-quality/c26138.md | 2 +- docs/code-quality/c26140.md | 3 +-- docs/code-quality/c26160.md | 3 +-- docs/code-quality/c26165.md | 3 +-- docs/code-quality/c26166.md | 3 +-- docs/code-quality/c26167.md | 3 +-- 16 files changed, 16 insertions(+), 31 deletions(-) diff --git a/docs/code-quality/c26100.md b/docs/code-quality/c26100.md index f3ab41f0209..c0a64ac0408 100644 --- a/docs/code-quality/c26100.md +++ b/docs/code-quality/c26100.md @@ -1,10 +1,9 @@ --- +title: "Warning C26100" description: "Learn more about: Warning C26100" -title: Warning C26100 ms.date: 11/04/2016 f1_keywords: ["C26100", "RACE_CONDITION", "__WARNING_RACE_CONDITION"] helpviewer_keywords: ["C26100"] -ms.assetid: 470ab2b2-5b55-424f-b192-3863a773c892 --- # Warning C26100 diff --git a/docs/code-quality/c26101.md b/docs/code-quality/c26101.md index 73572cf80f8..c89fbe4543c 100644 --- a/docs/code-quality/c26101.md +++ b/docs/code-quality/c26101.md @@ -1,10 +1,9 @@ --- +title: "Warning C26101" description: "Learn more about: Warning C26101" -title: Warning C26101 ms.date: 11/04/2016 f1_keywords: ["C26101"] helpviewer_keywords: ["C26101"] -ms.assetid: 86046553-09ec-40ce-82b3-fd641928f0b0 --- # Warning C26101 diff --git a/docs/code-quality/c26105.md b/docs/code-quality/c26105.md index e99176a6169..0381c3feec2 100644 --- a/docs/code-quality/c26105.md +++ b/docs/code-quality/c26105.md @@ -1,10 +1,9 @@ --- +title: "Warning C26105" description: "Learn more about: Warning C26105" -title: Warning C26105 ms.date: 11/04/2016 f1_keywords: ["C26105"] helpviewer_keywords: ["C26105"] -ms.assetid: 5558a3db-0513-43b4-8579-ccdc17e2b92f --- # Warning C26105 diff --git a/docs/code-quality/c26110.md b/docs/code-quality/c26110.md index ff34b83e1f4..67d89e3cefe 100644 --- a/docs/code-quality/c26110.md +++ b/docs/code-quality/c26110.md @@ -1,10 +1,9 @@ --- +title: "Warning C26110" description: "Learn more about: Warning C26110" -title: Warning C26110 ms.date: 10/01/2019 f1_keywords: ["C26110"] helpviewer_keywords: ["C26110"] -ms.assetid: d82b79ec-6d7f-438b-bd6a-da874a3e08e5 --- # Warning C26110 diff --git a/docs/code-quality/c26111.md b/docs/code-quality/c26111.md index 326529c0428..c7bf8bee694 100644 --- a/docs/code-quality/c26111.md +++ b/docs/code-quality/c26111.md @@ -1,10 +1,9 @@ --- +title: "Warning C26111" description: "Learn more about: Warning C26111" -title: Warning C26111 ms.date: 11/04/2016 f1_keywords: ["C26111"] helpviewer_keywords: ["C26111"] -ms.assetid: 85fc740a-3bbb-41b8-a848-95e243a08da9 --- # Warning C26111 diff --git a/docs/code-quality/c26112.md b/docs/code-quality/c26112.md index 683cc6eeee3..58554638b08 100644 --- a/docs/code-quality/c26112.md +++ b/docs/code-quality/c26112.md @@ -1,10 +1,9 @@ --- +title: "Warning C26112" description: "Learn more about: Warning C26112" -title: Warning C26112 ms.date: 11/04/2016 f1_keywords: ["C26112"] helpviewer_keywords: ["C26112"] -ms.assetid: 926de738-b9b0-43d7-9137-ab2daa44ad4d --- # Warning C26112 diff --git a/docs/code-quality/c26115.md b/docs/code-quality/c26115.md index 1fd85a631f5..3c634459d07 100644 --- a/docs/code-quality/c26115.md +++ b/docs/code-quality/c26115.md @@ -1,10 +1,9 @@ --- +title: "Warning C26115" description: "Learn more about: Warning C26115" -title: Warning C26115 ms.date: 11/04/2016 f1_keywords: ["C26115"] helpviewer_keywords: ["C26115"] -ms.assetid: 3977a2bb-d1fe-4510-89dd-07fdc69e911c --- # Warning C26115 diff --git a/docs/code-quality/c26117.md b/docs/code-quality/c26117.md index 7678d030ee7..16ebb6bff74 100644 --- a/docs/code-quality/c26117.md +++ b/docs/code-quality/c26117.md @@ -1,10 +1,9 @@ --- +title: "Warning C26117" description: "Learn more about: Warning C26117" -title: Warning C26117 ms.date: 11/04/2016 f1_keywords: ["C26117"] helpviewer_keywords: ["C26117"] -ms.assetid: cc7ebc8d-9826-4cad-a4d5-2d3ad5896734 --- # Warning C26117 diff --git a/docs/code-quality/c26130.md b/docs/code-quality/c26130.md index 2f17638b274..990d87c2b3e 100644 --- a/docs/code-quality/c26130.md +++ b/docs/code-quality/c26130.md @@ -1,10 +1,9 @@ --- +title: "Warning C26130" description: "Learn more about: Warning C26130" -title: Warning C26130 ms.date: 11/04/2016 f1_keywords: ["C26130"] helpviewer_keywords: ["C26130"] -ms.assetid: 535e2356-bc84-4549-983d-7d29aee2249c --- # Warning C26130 diff --git a/docs/code-quality/c26135.md b/docs/code-quality/c26135.md index 4f9b9f55578..aee06179d65 100644 --- a/docs/code-quality/c26135.md +++ b/docs/code-quality/c26135.md @@ -1,10 +1,9 @@ --- +title: "Warning C26135" description: "Learn more about: Warning C26135" -title: Warning C26135 ms.date: 11/04/2016 f1_keywords: ["C26135"] helpviewer_keywords: ["C26135"] -ms.assetid: e9515189-8d21-473b-89f4-8b92ebd3a4f1 --- # Warning C26135 diff --git a/docs/code-quality/c26138.md b/docs/code-quality/c26138.md index 08c847a5b02..12838bac4d8 100644 --- a/docs/code-quality/c26138.md +++ b/docs/code-quality/c26138.md @@ -1,6 +1,6 @@ --- +title: "Warning C26138" description: "Learn more about: Warning C26138" -title: Warning C26138 ms.date: 01/14/2019 f1_keywords: ["C26138", "SUSPENDED_WITH_LOCK"] helpviewer_keywords: ["C26138"] diff --git a/docs/code-quality/c26140.md b/docs/code-quality/c26140.md index dd11953d3e0..33e63f3b518 100644 --- a/docs/code-quality/c26140.md +++ b/docs/code-quality/c26140.md @@ -1,10 +1,9 @@ --- +title: "Warning C26140" description: "Learn more about: Warning C26140" -title: Warning C26140 ms.date: 11/04/2016 f1_keywords: ["C26140"] helpviewer_keywords: ["C26140"] -ms.assetid: a0b521b4-0c2f-470a-8904-f7bbb8014536 --- # Warning C26140 diff --git a/docs/code-quality/c26160.md b/docs/code-quality/c26160.md index 92fe961b146..9fb21be939c 100644 --- a/docs/code-quality/c26160.md +++ b/docs/code-quality/c26160.md @@ -1,10 +1,9 @@ --- +title: "Warning C26160" description: "Learn more about: Warning C26160" -title: Warning C26160 ms.date: 11/04/2016 f1_keywords: ["C26160"] helpviewer_keywords: ["C26160"] -ms.assetid: e6518687-36b4-4eae-a732-758881638295 --- # Warning C26160 diff --git a/docs/code-quality/c26165.md b/docs/code-quality/c26165.md index 684a10f0e43..a87f5b15e94 100644 --- a/docs/code-quality/c26165.md +++ b/docs/code-quality/c26165.md @@ -1,10 +1,9 @@ --- +title: "Warning C26165" description: "Learn more about: Warning C26165" -title: Warning C26165 ms.date: 11/04/2016 f1_keywords: ["C26165"] helpviewer_keywords: ["C26165"] -ms.assetid: a1d89bd6-08f3-4215-8a0c-b8ecfeb0cffc --- # Warning C26165 diff --git a/docs/code-quality/c26166.md b/docs/code-quality/c26166.md index 139f22bf559..93176e6a086 100644 --- a/docs/code-quality/c26166.md +++ b/docs/code-quality/c26166.md @@ -1,10 +1,9 @@ --- +title: "Warning C26166" description: "Learn more about: Warning C26166" -title: Warning C26166 ms.date: 11/04/2016 f1_keywords: ["C26166"] helpviewer_keywords: ["C26166"] -ms.assetid: a3d21838-07da-40f6-8d2e-1ada72765af2 --- # Warning C26166 diff --git a/docs/code-quality/c26167.md b/docs/code-quality/c26167.md index 24c07fc7e1e..24c4e950d2e 100644 --- a/docs/code-quality/c26167.md +++ b/docs/code-quality/c26167.md @@ -1,10 +1,9 @@ --- +title: "Warning C26167" description: "Learn more about: Warning C26167" -title: Warning C26167 ms.date: 11/04/2016 f1_keywords: ["C26167"] helpviewer_keywords: ["C26167"] -ms.assetid: 5a3d767f-31fa-45e0-8c9b-1aa776acaa45 --- # Warning C26167 From 4032d5af0cb4818ffd4372e38a62d562cfbc39ee Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 27 Sep 2025 00:06:48 +0800 Subject: [PATCH 1931/2255] Remove stray backslash in "Multiple Base Classes" topic --- docs/cpp/multiple-base-classes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cpp/multiple-base-classes.md b/docs/cpp/multiple-base-classes.md index 2ed89233621..1308afc2695 100644 --- a/docs/cpp/multiple-base-classes.md +++ b/docs/cpp/multiple-base-classes.md @@ -96,7 +96,7 @@ The `/vd` compiler option affects an entire compilation module. Use the `vtordis ```cpp #pragma vtordisp( off ) class GetReal : virtual public { ... }; -\#pragma vtordisp( on ) +#pragma vtordisp( on ) ``` ## Name ambiguities From c98f946a4baa910d6b347c797d82fcb2c43e1690 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 27 Sep 2025 00:09:11 +0800 Subject: [PATCH 1932/2255] Nits for "Multiple Base Classes" topic --- docs/cpp/multiple-base-classes.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/cpp/multiple-base-classes.md b/docs/cpp/multiple-base-classes.md index 1308afc2695..54565970f28 100644 --- a/docs/cpp/multiple-base-classes.md +++ b/docs/cpp/multiple-base-classes.md @@ -11,8 +11,7 @@ A class can be derived from more than one base class. In a multiple-inheritance ```cpp // deriv_MultipleBaseClasses.cpp // compile with: /LD -class Collection { -}; +class Collection {}; class Book {}; class CollectionOfBook : public Book, public Collection { // New members @@ -26,7 +25,7 @@ The order in which base classes are specified isn't significant except in certai - The order in which destructors are invoked to clean up. Again, if a particular "part" of the class must be present when the other part is being destroyed, the order is significant. Destructors are called in the reverse order of the classes specified in the *base-list*. > [!NOTE] - > The order of specification of base classes can affect the memory layout of the class. Do not make any programming decisions based on the order of base members in memory. + > The order of specification of base classes can affect the memory layout of the class. Do not make any programming decisions based on the order of base members in memory. When specifying the *base-list*, you can't specify the same class name more than once. However, it's possible for a class to be an indirect base to a derived class more than once. @@ -188,7 +187,7 @@ Explicit and implicit conversions from pointers or references to class types can - The declaration of an object of type `D`. -- The effect of applying the address-of operator (**&**) to that object. The address-of operator always supplies the base address of the object. +- The effect of applying the address-of operator (`&`) to that object. The address-of operator always supplies the base address of the object. - The effect of explicitly converting the pointer obtained using the address-of operator to the base-class type `A`. Coercing the address of the object to type `A*` doesn't always provide the compiler with enough information as to which subobject of type `A` to select; in this case, two subobjects exist. From 2c564280ac2d03c8e52be0bfe19688b371b1373a Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 27 Sep 2025 00:11:25 +0800 Subject: [PATCH 1933/2255] Simplify redundant relative links in "Multiple Base Classes" topic --- docs/cpp/multiple-base-classes.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/cpp/multiple-base-classes.md b/docs/cpp/multiple-base-classes.md index 54565970f28..55314b726c7 100644 --- a/docs/cpp/multiple-base-classes.md +++ b/docs/cpp/multiple-base-classes.md @@ -41,14 +41,14 @@ When declaring a virtual base class, the **`virtual`** keyword appears in the ba Consider the class hierarchy in the following figure, which illustrates a simulated lunch line: -:::image type="complex" source="../cpp/media/vc38xp1.gif" alt-text="Diagram of a simulated lunch line." border="false"::: +:::image type="complex" source="media/vc38xp1.gif" alt-text="Diagram of a simulated lunch line." border="false"::: The base class is Queue. Cashier Queue and Lunch Queue both inherit from Queue. Finally, Lunch Cashier Queue inherits from both Cashier Queue and Lunch Queue. :::image-end::: *Simulated lunch-line graph* In the figure, `Queue` is the base class for both `CashierQueue` and `LunchQueue`. However, when both classes are combined to form `LunchCashierQueue`, the following problem arises: the new class contains two subobjects of type `Queue`, one from `CashierQueue` and the other from `LunchQueue`. The following figure shows the conceptual memory layout (the actual memory layout might be optimized): -:::image type="complex" source="../cpp/media/vc38xp2.gif" alt-text="Diagram of a simulated lunch line object." border="false"::: +:::image type="complex" source="media/vc38xp2.gif" alt-text="Diagram of a simulated lunch line object." border="false"::: The figure shows a Lunch Cashier Queue object with two subobjects in it: Cashier Queue and Lunch Queue. Both Cashier Queue and Lunch Queue contain a Queue subobject." :::image-end::: *Simulated lunch-line object* @@ -66,21 +66,21 @@ class LunchCashierQueue : public LunchQueue, public CashierQueue {}; The **`virtual`** keyword ensures that only one copy of the subobject `Queue` is included (see the following figure). -:::image type="complex" source="../cpp/media/vc38xp3.gif" alt-text="Diagram of a simulated lunch line object, with virtual base classes depicted." border="false"::: +:::image type="complex" source="media/vc38xp3.gif" alt-text="Diagram of a simulated lunch line object, with virtual base classes depicted." border="false"::: The diagram shows a Lunch Cashier Queue object, which contains a Cashier Queue subobject and a Lunch Queue subobject. Both Cashier Queue and Lunch Queue share the same Queue subobject. :::image-end::: *Simulated lunch-line object with virtual base classes* A class can have both a virtual component and a nonvirtual component of a given type. This happens in the conditions illustrated in the following figure: -:::image type="complex" source="../cpp/media/vc38xp4.gif" alt-text="Diagram of virtual and non virtual components of a class." border="false"::: +:::image type="complex" source="media/vc38xp4.gif" alt-text="Diagram of virtual and non virtual components of a class." border="false"::: The diagram shows a queue base class. A Cashier Queue class and Lunch Queue class inherit virtually from Queue. A third class, Takeout Queue, inherits non virtually from queue. Lunch Cashier Queue inherits from both Cashier Queue and Lunch Queue. Lunch Takeout Cashier Queue inherits from both Lunch Cashier Queue and Takeout Queue. :::image-end::: *Virtual and nonvirtual components of the same class* In the figure, `CashierQueue` and `LunchQueue` use `Queue` as a virtual base class. However, `TakeoutQueue` specifies `Queue` as a base class, not a virtual base class. Therefore, `LunchTakeoutCashierQueue` has two subobjects of type `Queue`: one from the inheritance path that includes `LunchCashierQueue` and one from the path that includes `TakeoutQueue`. This is illustrated in the following figure. -:::image type="complex" source="../cpp/media/vc38xp5.gif" alt-text="Diagram of the object layout for virtual and non virtual inheritance." border="false"::: +:::image type="complex" source="media/vc38xp5.gif" alt-text="Diagram of the object layout for virtual and non virtual inheritance." border="false"::: A Lunch Takeout Cashier Queue object is shown that contains two subobjects: a Takeout Queue (which contains a Queue subobject) and a Lunch Cashier Queue. The Lunch Cashier Queue subobject contains a Cashier Queue subobject and a Lunch Queue subobject, both of which share a Queue sub object. :::image-end::: *Object layout with virtual and nonvirtual inheritance* @@ -141,7 +141,7 @@ The compiler detects ambiguities by performing tests in this order: 1. If overloaded functions are unambiguous, they're resolved. -1. If access to the name violates member-access permission, an error message is generated. For more information, see [Member-Access Control](../cpp/member-access-control-cpp.md). +1. If access to the name violates member-access permission, an error message is generated. For more information, see [Member-Access Control](member-access-control-cpp.md). When an expression produces an ambiguity through inheritance, you can manually resolve it by qualifying the name in question with its class name. To make the preceding example compile properly with no ambiguities, use code such as: @@ -191,7 +191,7 @@ Explicit and implicit conversions from pointers or references to class types can - The effect of explicitly converting the pointer obtained using the address-of operator to the base-class type `A`. Coercing the address of the object to type `A*` doesn't always provide the compiler with enough information as to which subobject of type `A` to select; in this case, two subobjects exist. -:::image type="complex" source="../cpp/media/vc38xt1.gif" alt-text="Diagram showing how the conversion of pointers to base classes can be ambiguous." border="false"::: +:::image type="complex" source="media/vc38xt1.gif" alt-text="Diagram showing how the conversion of pointers to base classes can be ambiguous." border="false"::: The diagram first shows an inheritance hierarchy: A is the base class. B and C inherit from A. D inherits from B and C. Then, the memory layout is shown for object D. There are three subobjects in D: B (which includes a subobject A) and C (which includes a subobject A). The code & d points to the A in subobject B. The code ( * A ) & d points to both subobject B and subobject C. :::image-end::: *Ambiguous conversion of pointers to base classes* @@ -209,7 +209,7 @@ If virtual base classes are used, functions, objects, types, and enumerators can The following figure shows how objects are composed using virtual and nonvirtual inheritance. -:::image type="complex" source="../cpp/media/vc38xr1.gif" alt-text="Diagram showing virtual derivation and nonvirtual derivation." border="false"::: +:::image type="complex" source="media/vc38xr1.gif" alt-text="Diagram showing virtual derivation and nonvirtual derivation." border="false"::: The diagram first shows an inheritance hierarchy: A is the base class. B and C virtually inherit from A. D virtually inherits from B and C. Then, the layout of D is shown. D contains subobjects B and C, which share subobject A. Then the layout is shown as though the same hierarchy had been derived using nonvirtual inheritance. In that case, D contains the subobjects B and C. Both B and C contain their own copy of subobject A. :::image-end::: *Virtual and nonvirtual derivation* @@ -218,4 +218,4 @@ In the figure, accessing any member of class `A` through nonvirtual base classes ## See also -[Inheritance](../cpp/inheritance-cpp.md) +[Inheritance](inheritance-cpp.md) From 5b953218f68c79b5ae47d01948a289303a9430cd Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 27 Sep 2025 00:39:57 +0800 Subject: [PATCH 1934/2255] Add "Remarks" headings for warning references in range [C26800, C26830] --- docs/code-quality/c26817.md | 2 ++ docs/code-quality/c26820.md | 4 ++-- docs/code-quality/c26826.md | 4 ++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/code-quality/c26817.md b/docs/code-quality/c26817.md index 470b699dd2e..616e4876f1f 100644 --- a/docs/code-quality/c26817.md +++ b/docs/code-quality/c26817.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C26817"] > Potentially expensive copy of variable *name* in range-for loop. Consider making it a const reference (es.71). +## Remarks + For more information, see [ES.71: Prefer a range-`for`-statement to a `for`-statement when there is a choice](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Res-for-range) in the C++ Core Guidelines. ## Example diff --git a/docs/code-quality/c26820.md b/docs/code-quality/c26820.md index 291f3abc21c..db7807cbf4c 100644 --- a/docs/code-quality/c26820.md +++ b/docs/code-quality/c26820.md @@ -9,12 +9,12 @@ helpviewer_keywords: ["C26820"] > This is a potentially expensive copy operation. Consider using a reference unless a copy is required (p.9) +## Remarks + For more information, see [P.9: Don't waste time or space](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rp-waste) in the C++ Core Guidelines. This check covers nonobvious and easy-to-miss behavior when assigning a reference to a variable marked **`auto`**. The type of the **`auto`** variable is resolved to a value rather than a reference, and an implicit copy is made. -## Remarks - - This warning isn't raised for scalars, smart pointers, or views. It's also not raised for types whose size isn't more than twice the platform-dependent pointer size. - This warning isn't raised when the variable gets mutated, as marking it `auto&` would introduce side-effects to the mutation. - This warning isn't raised when the reference comes from a temporary object, because that results in a dangling reference. For example: diff --git a/docs/code-quality/c26826.md b/docs/code-quality/c26826.md index 8c0f827e9d5..4015cf675e4 100644 --- a/docs/code-quality/c26826.md +++ b/docs/code-quality/c26826.md @@ -9,10 +9,10 @@ helpviewer_keywords: ["C26826"] > Don't use C-style variable arguments (f.55). -For more information, see [F.55: Don't use `va_arg` arguments](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#F-varargs) in the C++ Core Guidelines. - ## Remarks +For more information, see [F.55: Don't use `va_arg` arguments](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#F-varargs) in the C++ Core Guidelines. + This check warns on all usages of `va_list`, `va_start`, `va_arg`, and `va_end`, discouraging the use of C-style variable arguments. C-style variable arguments are unsafe because they require the programmer to assume that the arguments are all passed and read with the correct types. Warning C26826 is available starting in Visual Studio 2022 version 17.1. From a8a8761acd51224b938a55b709922813488940b4 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 27 Sep 2025 00:42:35 +0800 Subject: [PATCH 1935/2255] Update metadata for warning references in range [C26800, C26830] --- docs/code-quality/c26800.md | 2 +- docs/code-quality/c26810.md | 2 +- docs/code-quality/c26811.md | 2 +- docs/code-quality/c26812.md | 2 +- docs/code-quality/c26813.md | 2 +- docs/code-quality/c26814.md | 2 +- docs/code-quality/c26815.md | 4 ++-- docs/code-quality/c26816.md | 4 ++-- docs/code-quality/c26817.md | 2 +- docs/code-quality/c26818.md | 2 +- docs/code-quality/c26819.md | 2 +- docs/code-quality/c26820.md | 2 +- docs/code-quality/c26822.md | 2 +- docs/code-quality/c26823.md | 2 +- docs/code-quality/c26824.md | 2 +- docs/code-quality/c26825.md | 2 +- docs/code-quality/c26826.md | 2 +- docs/code-quality/c26827.md | 2 +- docs/code-quality/c26828.md | 2 +- docs/code-quality/c26829.md | 2 +- docs/code-quality/c26830.md | 2 +- 21 files changed, 23 insertions(+), 23 deletions(-) diff --git a/docs/code-quality/c26800.md b/docs/code-quality/c26800.md index 1052f0f0db6..81d9a17805f 100644 --- a/docs/code-quality/c26800.md +++ b/docs/code-quality/c26800.md @@ -1,5 +1,5 @@ --- -title: Warning C26800 +title: "Warning C26800" description: "Learn more about: Warning C26800" ms.date: 01/14/2019 f1_keywords: ["C26800", "USE_OF_A_MOVED_FROM_OBJECT"] diff --git a/docs/code-quality/c26810.md b/docs/code-quality/c26810.md index 95c9c836440..027f55e32eb 100644 --- a/docs/code-quality/c26810.md +++ b/docs/code-quality/c26810.md @@ -1,5 +1,5 @@ --- -title: Warning C26810 +title: "Warning C26810" description: "Learn more about: Warning C26810." ms.date: 05/11/2023 f1_keywords: ["C26810", "COROUTINES_USE_AFTER_FREE_CAPTURE"] diff --git a/docs/code-quality/c26811.md b/docs/code-quality/c26811.md index ebdc5bcc40c..7651fbbf469 100644 --- a/docs/code-quality/c26811.md +++ b/docs/code-quality/c26811.md @@ -1,5 +1,5 @@ --- -title: Warning C26811 +title: "Warning C26811" description: "Learn more about: Warning C26811." ms.date: 05/11/2023 f1_keywords: ["C26811", "COROUTINES_USE_AFTER_FREE_PARAM"] diff --git a/docs/code-quality/c26812.md b/docs/code-quality/c26812.md index d7a3ef1038b..3ea3543dc18 100644 --- a/docs/code-quality/c26812.md +++ b/docs/code-quality/c26812.md @@ -1,6 +1,6 @@ --- +title: "Warning C26812" description: "Learn more about: Warning C26812" -title: Warning C26812 ms.date: 02/14/2022 f1_keywords: ["C26812", "PreferScopedEnum"] helpviewer_keywords: ["C26812"] diff --git a/docs/code-quality/c26813.md b/docs/code-quality/c26813.md index eabce1bfec4..cbaa14e3863 100644 --- a/docs/code-quality/c26813.md +++ b/docs/code-quality/c26813.md @@ -1,5 +1,5 @@ --- -title: Warning C26813 +title: "Warning C26813" description: "Learn more about: Warning C26813" ms.date: 05/17/2022 f1_keywords: ["C26813", "USE_BITWISE_AND_TO_CHEK_ENUM_FLAGS", "USE_BITWISE_AND_TO_CHECK_ENUM_FLAGS"] diff --git a/docs/code-quality/c26814.md b/docs/code-quality/c26814.md index f446f2644b0..363b3c50732 100644 --- a/docs/code-quality/c26814.md +++ b/docs/code-quality/c26814.md @@ -1,6 +1,6 @@ --- +title: "Warning C26814" description: "Learn more about: Warning C26814" -title: Warning C26814 ms.date: 07/15/2019 f1_keywords: ["C26814", "USE_CONSTEXPR_RATHER_THAN_CONST"] helpviewer_keywords: ["C26814"] diff --git a/docs/code-quality/c26815.md b/docs/code-quality/c26815.md index 8778703ae41..bab51260def 100644 --- a/docs/code-quality/c26815.md +++ b/docs/code-quality/c26815.md @@ -1,9 +1,9 @@ --- -title: Warning C26815 +title: "Warning C26815" description: "Learn more about: Warning C26815." +ms.date: 01/27/2020 author: Rastaban ms.author: philc -ms.date: 01/27/2020 f1_keywords: ["C26815", "LIFETIME_LOCAL_USE_AFTER_FREE_TEMP"] helpviewer_keywords: ["C26815"] --- diff --git a/docs/code-quality/c26816.md b/docs/code-quality/c26816.md index f01ea3bc00d..0dd97234962 100644 --- a/docs/code-quality/c26816.md +++ b/docs/code-quality/c26816.md @@ -1,9 +1,9 @@ --- -title: Warning C26816 +title: "Warning C26816" description: "Learn more about: Warning C26816." +ms.date: 01/27/2020 author: Rastaban ms.author: philc -ms.date: 01/27/2020 f1_keywords: ["C26816", "LIFETIME_LOCAL_USE_AFTER_FREE_STACK"] helpviewer_keywords: ["C26816"] --- diff --git a/docs/code-quality/c26817.md b/docs/code-quality/c26817.md index 616e4876f1f..9e8bcb7a9b2 100644 --- a/docs/code-quality/c26817.md +++ b/docs/code-quality/c26817.md @@ -1,5 +1,5 @@ --- -title: Warning C26817 +title: "Warning C26817" description: "Reference for Microsoft C++ Code Analysis warning C26817 in Visual Studio." ms.date: 10/12/2023 f1_keywords: ["C26817"] diff --git a/docs/code-quality/c26818.md b/docs/code-quality/c26818.md index 52adf70f5b6..46d89915db4 100644 --- a/docs/code-quality/c26818.md +++ b/docs/code-quality/c26818.md @@ -1,5 +1,5 @@ --- -title: Warning C26818 +title: "Warning C26818" description: "Reference for Microsoft C++ Code Analysis warning C26818 in Visual Studio." ms.date: 04/22/2020 f1_keywords: ["C26818"] diff --git a/docs/code-quality/c26819.md b/docs/code-quality/c26819.md index 2e2007c9ff0..19dd7513510 100644 --- a/docs/code-quality/c26819.md +++ b/docs/code-quality/c26819.md @@ -1,5 +1,5 @@ --- -title: Warning C26819 +title: "Warning C26819" description: "Reference for Microsoft C++ Code Analysis warning C26819 in Visual Studio." ms.date: 04/22/2020 f1_keywords: ["C26819"] diff --git a/docs/code-quality/c26820.md b/docs/code-quality/c26820.md index db7807cbf4c..bec99f63c72 100644 --- a/docs/code-quality/c26820.md +++ b/docs/code-quality/c26820.md @@ -1,5 +1,5 @@ --- -title: Warning C26820 +title: "Warning C26820" description: "Reference for Microsoft C++ Code Analysis warning C26820 in Visual Studio." ms.date: 10/12/2023 f1_keywords: ["C26820"] diff --git a/docs/code-quality/c26822.md b/docs/code-quality/c26822.md index fd661eafff1..15e355ba209 100644 --- a/docs/code-quality/c26822.md +++ b/docs/code-quality/c26822.md @@ -1,5 +1,5 @@ --- -title: Warning C26822 +title: "Warning C26822" description: "Describes the Microsoft C/C++ code analysis warning C26822, its causes, and how to address it." ms.date: 06/27/2022 f1_keywords: ["C26822", "NULLPTR_DEREFERENCE"] diff --git a/docs/code-quality/c26823.md b/docs/code-quality/c26823.md index 0ac7318a8a6..e89b46c2e42 100644 --- a/docs/code-quality/c26823.md +++ b/docs/code-quality/c26823.md @@ -1,5 +1,5 @@ --- -title: Warning C26823 +title: "Warning C26823" description: "Describes the Microsoft C/C++ code analysis warning C26823, its causes, and how to address it." ms.date: 06/27/2022 f1_keywords: ["C26823", "NULLPTR_DEREFERENCE_MAYBE"] diff --git a/docs/code-quality/c26824.md b/docs/code-quality/c26824.md index 0513c2c3f27..c2e9cea848d 100644 --- a/docs/code-quality/c26824.md +++ b/docs/code-quality/c26824.md @@ -1,5 +1,5 @@ --- -title: Warning C26824 +title: "Warning C26824" description: "Describes the Microsoft C/C++ code analysis warning C26824, its causes, and how to address it." ms.date: 06/27/2022 f1_keywords: ["C26824", "NULLPTR_POSTCONDITION_VIOLATION"] diff --git a/docs/code-quality/c26825.md b/docs/code-quality/c26825.md index 7945aeb3d0d..0c438deafb8 100644 --- a/docs/code-quality/c26825.md +++ b/docs/code-quality/c26825.md @@ -1,5 +1,5 @@ --- -title: Warning C26825 +title: "Warning C26825" description: "Describes the Microsoft C/C++ code analysis warning C26825, its causes, and how to address it." ms.date: 06/27/2022 f1_keywords: ["C26825", "NULLPTR_POSTCONDITION_VIOLATION_MAYBE"] diff --git a/docs/code-quality/c26826.md b/docs/code-quality/c26826.md index 4015cf675e4..d1da079af20 100644 --- a/docs/code-quality/c26826.md +++ b/docs/code-quality/c26826.md @@ -1,5 +1,5 @@ --- -title: Warning C26826 +title: "Warning C26826" description: "Reference for Microsoft C++ Code Analysis warning C26826 in Visual Studio." ms.date: 10/25/2021 f1_keywords: ["C26826"] diff --git a/docs/code-quality/c26827.md b/docs/code-quality/c26827.md index 7f80abb5325..6f806ba3939 100644 --- a/docs/code-quality/c26827.md +++ b/docs/code-quality/c26827.md @@ -1,5 +1,5 @@ --- -title: Warning C26827 +title: "Warning C26827" description: "Learn more about: Warning C26827" ms.date: 05/17/2023 f1_keywords: ["C26827", "ALMOST_BITWISE_ENUM"] diff --git a/docs/code-quality/c26828.md b/docs/code-quality/c26828.md index 5c0a9d474d4..ad057d7aa97 100644 --- a/docs/code-quality/c26828.md +++ b/docs/code-quality/c26828.md @@ -1,5 +1,5 @@ --- -title: Warning C26828 +title: "Warning C26828" description: "Learn more about: Warning C26828" ms.date: 05/17/2023 f1_keywords: ["C26828", "MIXING_OVERLAPPING_ENUMS"] diff --git a/docs/code-quality/c26829.md b/docs/code-quality/c26829.md index a19bd224a37..9eb04b47e84 100644 --- a/docs/code-quality/c26829.md +++ b/docs/code-quality/c26829.md @@ -1,5 +1,5 @@ --- -title: Warning C26829 +title: "Warning C26829" description: "Describes the Microsoft C/C++ code analysis warning C26829, its causes, and how to address it." ms.date: 06/23/2022 f1_keywords: ["C26829", "UNWRAP_EMPTY_OPTIONAL"] diff --git a/docs/code-quality/c26830.md b/docs/code-quality/c26830.md index 686b4b17127..513cf97632c 100644 --- a/docs/code-quality/c26830.md +++ b/docs/code-quality/c26830.md @@ -1,5 +1,5 @@ --- -title: Warning C26830 +title: "Warning C26830" description: "Describes the Microsoft C/C++ code analysis warning C26830, its causes, and how to address it." ms.date: 06/23/2022 f1_keywords: ["C26830", "UNWRAP_EMPTY_OPTIONAL_MAYBE"] From 82d723e20227603fdbf5d8cfce45c06972831913 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 26 Sep 2025 14:39:30 -0700 Subject: [PATCH 1936/2255] minor edit --- docs/sanitizers/asan-building.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-building.md b/docs/sanitizers/asan-building.md index cbeba6747dc..b04ac105607 100644 --- a/docs/sanitizers/asan-building.md +++ b/docs/sanitizers/asan-building.md @@ -131,7 +131,7 @@ The **`/fsanitize=address`** compiler option marks objects to specify which Addr | `/MT` or `/MTd` | *`clang_rt.asan_dynamic-{arch}.lib`*, *`/wholearchive:clang_rt.asan_static_runtime_thunk-{arch}.lib`* | *`clang_rt.asan_dynamic-{arch}.dll`* | `/MD` or `/MDd` | *`clang_rt.asan_dynamic-{arch}.lib`*, *`/wholearchive:clang_rt.asan_dynamic_runtime_thunk-{arch}.lib`* | *`clang_rt.asan_dynamic-{arch}.dll`* -The linker option [`/INFERASANLIBS:NO`](../build/reference/inferasanlibs.md) prevents the linker from linking a *`clang_rt.asan*`* library file from the default location. Add the library path in your build scripts if you use this option. Otherwise, the linker reports an unresolved external symbol error. Note that the runtime thunk libraries **must** be linked with `/wholearchive` option applied. +The linker option [`/INFERASANLIBS:NO`](../build/reference/inferasanlibs.md) prevents the linker from linking a *`clang_rt.asan*`* library file from the default location. Add the library path in your build scripts if you use this option. Otherwise, the linker reports an unresolved external symbol error. The runtime thunk libraries **must** be linked with the `/wholearchive` option applied. **Previous Versions** From e397c593e2629bfbe010680f8e8f4c9ce53a8f16 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 27 Sep 2025 21:46:24 +0800 Subject: [PATCH 1937/2255] Capitalize first letter of "Dominance" section in "Multiple Base Classes" topic --- docs/cpp/multiple-base-classes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cpp/multiple-base-classes.md b/docs/cpp/multiple-base-classes.md index 55314b726c7..26bdbee6881 100644 --- a/docs/cpp/multiple-base-classes.md +++ b/docs/cpp/multiple-base-classes.md @@ -156,7 +156,7 @@ pc->B::a(); ### Dominance -it's possible for more than one name (function, object, or enumerator) to be reached through an inheritance graph. Such cases are considered ambiguous with nonvirtual base classes. They're also ambiguous with virtual base classes, unless one of the names "dominates" the others. +It's possible for more than one name (function, object, or enumerator) to be reached through an inheritance graph. Such cases are considered ambiguous with nonvirtual base classes. They're also ambiguous with virtual base classes, unless one of the names "dominates" the others. A name dominates another name if it's defined in both classes and one class is derived from the other. The dominant name is the name in the derived class; this name is used when an ambiguity would otherwise have arisen, as shown in the following example: From e4a205eaaba1ba2401ab96cae01a4f26f1cd41dc Mon Sep 17 00:00:00 2001 From: v-ccolin <72402153+v-ccolin@users.noreply.github.com> Date: Sun, 28 Sep 2025 08:25:52 +0100 Subject: [PATCH 1938/2255] Update docs/windows/latest-supported-vc-redist.md --- docs/windows/latest-supported-vc-redist.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index d557a38efb2..9217788e655 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -43,7 +43,7 @@ This table lists the latest supported English (en-US) Microsoft Visual C++ Redis Unlike older versions of Visual Studio that have infrequent redist updates, the version number isn't listed in the following table for Visual Studio 2015-2022 because the redist is updated frequently. To find the version number of the latest redist, download the redist you're interested in using one of the following links. Then, look at its properties using Windows File Explorer. In the **Details** pane, the **File version** contains the version of the redist. -### Latest supported Redistributable version: +### Latest supported redistributable version | Architecture | Link | Notes | |--|--|--| From fd38dab57c533751d0dccee5abce9a149fe8e479 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 28 Sep 2025 21:55:13 +0800 Subject: [PATCH 1939/2255] Tweak "`launch.vs.json` schema reference (C++)" topic --- docs/build/launch-vs-schema-reference-cpp.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/build/launch-vs-schema-reference-cpp.md b/docs/build/launch-vs-schema-reference-cpp.md index 290cc1a1ce6..e7d4f24ef18 100644 --- a/docs/build/launch-vs-schema-reference-cpp.md +++ b/docs/build/launch-vs-schema-reference-cpp.md @@ -17,7 +17,7 @@ To create the file, right-click on an executable file in **Solution Explorer** a | `args` | array | Specifies the command-line arguments passed to the launched program. | | `buildConfigurations` | array | A key-value pair that specifies the name of the build mode to apply the configurations. For example, `Debug` or `Release` and the configurations to use according to the selected build mode. | | `currentDir` | string | Specifies the full directory path to the Build Target. The directory is detected automatically unless this parameter is set. | -| `cwd` | string | Full path to the directory on the remote system where the program will run. Defaults to `"${debugInfo.defaultWorkingDirectory}"` | +| `cwd` | string | Full path to the directory on the remote system where the program will run. Defaults to `"${debugInfo.defaultWorkingDirectory}"`. | | `debugType` | string | Specifies the debugging mode according to the type of code (native, managed, or mixed). The mode is automatically detected unless this parameter is set. Allowed values: `"native"`, `"managed"`, `"mixed"`. | | `env` | array | Specifies a key-value list of custom environment variables. For example: `env:{"myEnv":"myVal"}`. | | `inheritEnvironments` | array | Specifies a set of environment variables inherited from multiple sources. You can define some variables in files like *`CMakeSettings.json`* or *`CppProperties.json`* and make them available to debug context. **Visual Studio 16.4:** Specify environment variables on a per-target basis using the `env.VARIABLE_NAME` syntax. To unset a variable, set it to `"null"`. | @@ -27,9 +27,9 @@ To create the file, right-click on an executable file in **Solution Explorer** a | `program` | string | The debug command to execute. Defaults to `"${debugInfo.fullTargetPath}"`. | | `project` | string | Specifies the relative path to the project file. Normally, you don't need to change this value when debugging a CMake project. | | `projectTarget` | string | Specifies the optional target invoked when building `project`. The target must match the name in the **Startup Item** dropdown. | -| `stopOnEntry` | boolean | Specifies whether to break a soon as the process is launched and the debugger attaches. The default value for this parameter is **`false`**. | +| `stopOnEntry` | boolean | Specifies whether to break as soon as the process is launched and the debugger attaches. The default value for this parameter is **`false`**. | | `remoteMachine` | string | Specifies the name of the remote machine where the program is launched. | -| `type` | string | Specifies whether the project is a `dll` or `exe` Defaults to .exe | +| `type` | string | Specifies whether the project is a `dll` or `exe`. Defaults to `"exe"`. | ## C++ Linux properties @@ -64,7 +64,7 @@ The following macros provide information about the debugging environment. They'r | Macro | Description | Example | |--|--|--| -| `addressSanitizerRuntimeFlags` | Runtime flags used to customize behavior of the address sanitizer. Used to set the environment variable `"ASAN_OPTIONS"`. | `"env": {"ASAN_OPTIONS": "${addressSanitizerRuntimeFlags}:anotherFlag=true"`} | +| `addressSanitizerRuntimeFlags` | Runtime flags used to customize behavior of the address sanitizer. Used to set the environment variable `"ASAN_OPTIONS"`. | `"env": {"ASAN_OPTIONS": "${addressSanitizerRuntimeFlags}:anotherFlag=true"}` | | `defaultWorkingDirectory` | Set to the directory part of `"fullTargetPath"`. If the CMake variable `VS_DEBUGGER_WORKING_DIRECTORY` is defined, then `defaultWorkingDirectory` is set to that value, instead. | `"cwd":"${debugInfo.defaultWorkingDirectory}"` | | `fullTargetPath` | The full path to the binary being debugged. | `"program": "${debugInfo.fullTargetPath}"` | | `linuxNatvisPath` | The full windows path to the VS linux `.natvis` file. Usually appears as the value `"visualizerFile"`. | | @@ -98,7 +98,7 @@ The pipeTransport example below shows how to use some of the `debugInfo` macros "/c", "${debuggerCommand}" ] - } +} ``` ## C++ Windows remote debug and deploy properties @@ -109,8 +109,8 @@ Used when debugging and deploying an app on a remote machine. |--|--|--| | `cwd` | string | The working directory of the target on the remote machine. When using CMake, the macro `${debugInfo.defaultWorkingDirectory}` can be used as the value of this field. The default value is the directory of the debug program/command. | | `deploy` | string | Specifies extra files or directories to deploy. For example:
`"deploy": {"sourcePath":"", "targetPath":""}` | -| `deployDirectory` | string | The location on the remote machine where project outputs are automatically deployed to. Defaults to "`C:\Windows Default Deploy Directory\` | -| `deployDebugRuntimeLibraries` | string | Specifies whether to deploy the debug runtime libraries for the active platform. Defaults to `"true"` if the active configurationType is `"Debug"` | +| `deployDirectory` | string | The location on the remote machine where project outputs are automatically deployed to. Defaults to `"C:\Windows Default Deploy Directory\"`. | +| `deployDebugRuntimeLibraries` | string | Specifies whether to deploy the debug runtime libraries for the active platform. Defaults to `"true"` if the active configurationType is `"Debug"`. | | `deployRuntimeLibraries` | string | Specifies whether to deploy the runtime libraries for the active platform. Defaults to `"true"` if the active configurationType is `"MinSizeRel"`, `"RelWithDebInfo"`, or `"Release"`. | | `disableDeploy` | boolean | Specifies whether files should be deployed. | | `remoteMachineName` | string | Specifies the name of the remote ARM64 Windows machine where the program is launched. May be the server name or the remote machine's IP address. | From 99a4e277270d531342050307ffb5f555ab4b0dd2 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Mon, 29 Sep 2025 23:12:26 +0800 Subject: [PATCH 1940/2255] Fix erroneous `_dlog` triplicate heading in "Floating-point primitives" topic --- docs/c-runtime-library/reference/floating-point-primitives.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/c-runtime-library/reference/floating-point-primitives.md b/docs/c-runtime-library/reference/floating-point-primitives.md index 27f5ef5e1fa..f2ca3b89eae 100644 --- a/docs/c-runtime-library/reference/floating-point-primitives.md +++ b/docs/c-runtime-library/reference/floating-point-primitives.md @@ -253,7 +253,7 @@ Order of the polynomial to evaluate. These floating-point primitives return the evaluation of *`x`* in the polynomial of order *`n`* whose coefficients are represented by the corresponding constant values in *`table`*. For example, if *`table[0]`* = 3.0, *`table[1]`* = 4.0, *`table[2]`* = 5.0, and *`n`* = 2, it represents the polynomial 5.0x2 + 4.0x + 3.0. If this polynomial is evaluated for *`x`* of 2.0, the result is 31.0. These functions aren't used internally. -## _dlog, _dlog, _dlog +## _dlog, _ldlog, _fdlog ### Syntax From 9f22b12b1b0d85e6e5634f51be0a6aa65477c4c3 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Mon, 29 Sep 2025 23:16:26 +0800 Subject: [PATCH 1941/2255] Fix invalid `_float` type for `_fdpoly` syntax in "Floating-point primitives" topic --- docs/c-runtime-library/reference/floating-point-primitives.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/c-runtime-library/reference/floating-point-primitives.md b/docs/c-runtime-library/reference/floating-point-primitives.md index f2ca3b89eae..8a023d0dfd2 100644 --- a/docs/c-runtime-library/reference/floating-point-primitives.md +++ b/docs/c-runtime-library/reference/floating-point-primitives.md @@ -235,7 +235,7 @@ These floating-point primitives normalize the fractional part of an underflowed ```C double __cdecl _dpoly(double x, double const* table, int n); long double __cdecl _ldpoly(long double x, long double const* table, int n); -float __cdecl _fdpoly(float x, _float const* table, int n); +float __cdecl _fdpoly(float x, float const* table, int n); ``` ### Parameters From ec006189ade2dcbcbd767c29ba6b4d9078197e19 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Mon, 29 Sep 2025 23:28:41 +0800 Subject: [PATCH 1942/2255] Add backticks in "Floating-point primitives" topic --- .../reference/floating-point-primitives.md | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/c-runtime-library/reference/floating-point-primitives.md b/docs/c-runtime-library/reference/floating-point-primitives.md index 8a023d0dfd2..9310bfe846a 100644 --- a/docs/c-runtime-library/reference/floating-point-primitives.md +++ b/docs/c-runtime-library/reference/floating-point-primitives.md @@ -32,7 +32,7 @@ Floating-point function argument. ### Remarks -These floating-point primitives implement the C versions of the CRT macro [`fpclassify`](fpclassify.md) for floating-point types. The classification of the argument *`x`* is returned as one of these constants, defined in math.h: +These floating-point primitives implement the C versions of the CRT macro [`fpclassify`](fpclassify.md) for floating-point types. The classification of the argument *`x`* is returned as one of these constants, defined in `math.h`: | Value | Description | |---|---| @@ -63,7 +63,7 @@ Floating-point function argument. These floating-point primitives implement the [`signbit`](signbit.md) macro or function in the CRT. They return a non-zero value if the sign bit is set in the significand (mantissa) of the argument *`x`*. Otherwise, they return 0 if the sign bit isn't set. -## _dpcomp, _ldpcomp, _fdpcomp +## `_dpcomp`, `_ldpcomp`, `_fdpcomp` ### Syntax @@ -80,7 +80,7 @@ Floating-point function arguments. ### Remarks -These floating-point primitives take two arguments, *`x`* and *`y`*, and return a value that shows their ordering relationship, expressed as the bitwise or of these constants, defined in math.h: +These floating-point primitives take two arguments, *`x`* and *`y`*, and return a value that shows their ordering relationship, expressed as the bitwise or of these constants, defined in `math.h`: | Value | Description | |------------|-----------------| @@ -90,7 +90,7 @@ These floating-point primitives take two arguments, *`x`* and *`y`*, and return These primitives implement the [`isgreater`, `isgreaterequal`, `isless`, `islessequal`, `islessgreater`, and `isunordered`](floating-point-ordering.md) macros and functions in the CRT. -## _dtest, _ldtest, _fdtest +## `_dtest`, `_ldtest`, `_fdtest` ### Syntax @@ -107,7 +107,7 @@ Pointer to a floating-point argument. ### Remarks -These floating-point primitives implement the C++ versions of the CRT function [`fpclassify`](fpclassify.md) for floating-point types. The argument *`x`* is evaluated and the classification is returned as one of these constants, defined in math.h: +These floating-point primitives implement the C++ versions of the CRT function [`fpclassify`](fpclassify.md) for floating-point types. The argument *`x`* is evaluated and the classification is returned as one of these constants, defined in `math.h`: | Value | Description | |---|---| @@ -119,7 +119,7 @@ These floating-point primitives implement the C++ versions of the CRT function [ For more detail, you can use the Microsoft-specific [`_fpclass`, `_fpclassf`](fpclass-fpclassf.md) functions. Use the [`fpclassify`](fpclassify.md) function for portability. -## _d_int, _ld_int, _fd_int +## `_d_int`, `_ld_int`, `_fd_int` ### Syntax @@ -141,7 +141,7 @@ An exponent as an integral type. These floating-point primitives take a pointer to a floating-point value *`px`* and an exponent value *`exp`*, and remove the fractional part of the floating-point value below the given exponent, if possible. The value returned is the result of `fpclassify` on the input value in *`px`* if it's a NaN or infinity, and on the output value in *`px`* otherwise. -## _dscale, _ldscale, _fdscale +## `_dscale`, `_ldscale`, `_fdscale` ### Syntax @@ -163,7 +163,7 @@ An exponent as an integral type. These floating-point primitives take a pointer to a floating-point value *`px`* and an exponent value *`exp`*, and scale the value in *`px`* by 2*`exp`*, if possible. The value returned is the result of `fpclassify` on the input value in *`px`* if it's a NaN or infinity, and on the output value in *`px`* otherwise. For portability, prefer the [`ldexp`, `ldexpf`, `ldexpl`](ldexp.md) functions. -## _dunscale, _ldunscale, _fdunscale +## `_dunscale`, `_ldunscale`, `_fdunscale` ### Syntax @@ -185,7 +185,7 @@ Pointer to a floating-point argument. These floating-point primitives break down the floating-point value pointed at by *`px`* into a significand (mantissa) and an exponent, if possible. The significand is scaled such that the absolute value is greater than or equal to 0.5 and less than 1.0. The exponent is the value *`n`*, where the original floating-point value is equal to the scaled significand times 2n. This integer exponent *`n`* is stored at the location pointed to by *`pexp`*. The value returned is the result of `fpclassify` on the input value in *`px`* if it's a NaN or infinity, and on the output value otherwise. For portability, prefer the [`frexp`, `frexpf`, `frexpl`](frexp.md) functions. -## _dexp, _ldexp, _fdexp +## `_dexp`, `_ldexp`, `_fdexp` ### Syntax @@ -210,7 +210,7 @@ An exponent as an integral type. These floating-point primitives construct a floating-point value in the location pointed at by *`px`* equal to *`y`* * 2exp. The value returned is the result of `fpclassify` on the input value in *`y`* if it's a NaN or infinity, and on the output value in *`px`* otherwise. For portability, prefer the [`ldexp`, `ldexpf`, `ldexpl`](ldexp.md) functions. -## _dnorm, _fdnorm +## `_dnorm`, `_fdnorm` ### Syntax @@ -226,9 +226,9 @@ Pointer to the bitwise representation of a floating-point value expressed as an ### Remarks -These floating-point primitives normalize the fractional part of an underflowed floating-point value and adjust the *characteristic*, or biased exponent, to match. The value is passed as the bitwise representation of the floating-point type converted to an array of **`unsigned short`** through the `_double_val`, `_ldouble_val`, or `_float_val` type-punning union declared in math.h. The return value is the result of `fpclassify` on the input floating-point value if it's a NaN or infinity, and on the output value otherwise. +These floating-point primitives normalize the fractional part of an underflowed floating-point value and adjust the *characteristic*, or biased exponent, to match. The value is passed as the bitwise representation of the floating-point type converted to an array of **`unsigned short`** through the `_double_val`, `_ldouble_val`, or `_float_val` type-punning union declared in `math.h`. The return value is the result of `fpclassify` on the input floating-point value if it's a NaN or infinity, and on the output value otherwise. -## _dpoly, _ldpoly, _fdpoly +## `_dpoly`, `_ldpoly`, `_fdpoly` ### Syntax @@ -253,7 +253,7 @@ Order of the polynomial to evaluate. These floating-point primitives return the evaluation of *`x`* in the polynomial of order *`n`* whose coefficients are represented by the corresponding constant values in *`table`*. For example, if *`table[0]`* = 3.0, *`table[1]`* = 4.0, *`table[2]`* = 5.0, and *`n`* = 2, it represents the polynomial 5.0x2 + 4.0x + 3.0. If this polynomial is evaluated for *`x`* of 2.0, the result is 31.0. These functions aren't used internally. -## _dlog, _ldlog, _fdlog +## `_dlog`, `_ldlog`, `_fdlog` ### Syntax @@ -275,7 +275,7 @@ Flag that controls the base to use, 0 for base *e* and non-zero for base 10. These floating-point primitives return the natural log of *`x`* (ln(x) or log*e*(x)), when *`base_flag`* is 0. They return the log base 10 of *`x`*, or log10(x), when *`base_flag`* is non-zero. These functions aren't used internally. For portability, prefer the functions [`log`, `logf`, `logl`, `log10`, `log10f`, and `log10l`](log-logf-log10-log10f.md). -## _dsin, _ldsin, _fdsin +## `_dsin`, `_ldsin`, `_fdsin` ### Syntax @@ -299,7 +299,7 @@ These floating-point primitives return the sine of *`x`* offset by the *`quadran ## Requirements -Header: \ +Header: `` For more compatibility information, see [Compatibility](../compatibility.md). From 6b8aaa126eae26912a13134103dc9b5876ea043c Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Mon, 29 Sep 2025 23:29:25 +0800 Subject: [PATCH 1943/2255] Update metadata in "Floating-point primitives" topic --- docs/c-runtime-library/reference/floating-point-primitives.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/c-runtime-library/reference/floating-point-primitives.md b/docs/c-runtime-library/reference/floating-point-primitives.md index 9310bfe846a..965ac7ec2db 100644 --- a/docs/c-runtime-library/reference/floating-point-primitives.md +++ b/docs/c-runtime-library/reference/floating-point-primitives.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Floating-point primitives" title: "Floating-point primitives" -ms.date: "4/2/2020" +description: "Learn more about: Floating-point primitives" +ms.date: 4/2/2020 api_name: ["_dclass", "_ldclass", "_fdclass", "_dsign", "_ldsign", "_fdsign", "_dpcomp", "_ldpcomp", "_fdpcomp", "_dtest", "_ldtest", "_fdtest", "_d_int", "_ld_int", "_fd_int", "_dscale", "_ldscale", "_fdscale", "_dunscale", "_ldunscale", "_fdunscale", "_dexp", "_ldexp", "_fdexp", "_dnorm", "_fdnorm", "_dpoly", "_ldpoly", "_fdpoly", "_dlog", "_ldlog", "_fdlog", "_dsin", "_ldsin", "_fdsin", "_o__d_int", "_o__dclass", "_o__dlog", "_o__dnorm", "_o__dpcomp", "_o__dpoly", "_o__dscale", "_o__dsign", "_o__dsin", "_o__dtest", "_o__dunscale", "_o__fd_int", "_o__fdclass", "_o__fdexp", "_o__fdlog", "_o__fdpcomp", "_o__fdpoly", "_o__fdscale", "_o__fdsign", "_o__fdsin", "_o__ld_int", "_o__ldclass", "_o__ldexp", "_o__ldlog", "_o__ldpcomp", "_o__ldpoly", "_o__ldscale", "_o__ldsign", "_o__ldsin", "_o__ldtest", "_o__ldunscale"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"] api_type: ["DLLExport"] From 5f82740f3043d0ba313350cc430362a4043721cd Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 30 Sep 2025 00:53:35 +0800 Subject: [PATCH 1944/2255] Update some `http` links to `https` --- docs/code-quality/using-the-cpp-core-guidelines-checkers.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3066.md | 2 +- docs/overview/cpp-conformance-improvements-2017.md | 2 +- docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/code-quality/using-the-cpp-core-guidelines-checkers.md b/docs/code-quality/using-the-cpp-core-guidelines-checkers.md index 0010cfda987..a463b7bb77a 100644 --- a/docs/code-quality/using-the-cpp-core-guidelines-checkers.md +++ b/docs/code-quality/using-the-cpp-core-guidelines-checkers.md @@ -305,7 +305,7 @@ The Guideline Support Library (GSL) is designed to help you follow the Core Guid ## Use the C++ Core Check guidelines in Visual Studio 2015 projects -If you use Visual Studio 2015, the C++ Core Check code analysis rule sets aren't installed by default. Other steps are needed before you can enable the C++ Core Check code analysis tools in Visual Studio 2015. Microsoft provides support for Visual Studio 2015 projects by using a NuGet package. The package is named Microsoft.CppCoreCheck, and it's available at [http://www.nuget.org/packages/Microsoft.CppCoreCheck](https://www.nuget.org/packages/Microsoft.CppCoreCheck). This package requires you have at least Visual Studio 2015 with Update 1 installed. +If you use Visual Studio 2015, the C++ Core Check code analysis rule sets aren't installed by default. Other steps are needed before you can enable the C++ Core Check code analysis tools in Visual Studio 2015. Microsoft provides support for Visual Studio 2015 projects by using a NuGet package. The package is named Microsoft.CppCoreCheck, and it's available at [https://www.nuget.org/packages/Microsoft.CppCoreCheck](https://www.nuget.org/packages/Microsoft.CppCoreCheck). This package requires you have at least Visual Studio 2015 with Update 1 installed. The package also installs another package as a dependency, the header-only Guideline Support Library (GSL). The GSL is also available on GitHub at [https://github.com/Microsoft/GSL](https://github.com/Microsoft/GSL). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3066.md b/docs/error-messages/compiler-errors-2/compiler-error-c3066.md index abba7aee354..2829acc296f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3066.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3066.md @@ -54,7 +54,7 @@ int main() { In Visual Studio 2015, the compiler erroneously treated copy-list-initialization in the same way as regular copy-initialization; it considered only converting constructors for overload resolution. In the following example, Visual Studio 2015 chooses MyInt(23) but Visual Studio 2017 correctly raises the error. ``` -// From http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#1228 +// From https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#1228 struct MyList { explicit MyStore(int initialCapacity); }; diff --git a/docs/overview/cpp-conformance-improvements-2017.md b/docs/overview/cpp-conformance-improvements-2017.md index af33b89fb3f..84382c2a25b 100644 --- a/docs/overview/cpp-conformance-improvements-2017.md +++ b/docs/overview/cpp-conformance-improvements-2017.md @@ -70,7 +70,7 @@ const A& a2{ 1 }; In Visual Studio 2015, the compiler erroneously treated copy-list-initialization in the same way as regular copy-initialization: it considered only converting constructors for overload resolution. In the following example, Visual Studio 2015 chooses `MyInt(23)`. Visual Studio 2017 correctly raises the error. ```cpp -// From http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#1228 +// From https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#1228 struct MyStore { explicit MyStore(int initialCapacity); }; 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 8d0e875857f..4f546d1d8c0 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 @@ -519,7 +519,7 @@ The responsiveness of **Go To All** is improved. Previously, results appeared af A partial list of new features in 17.2: - Added compiler support for C++23 feature [deducing `this`](https://wg21.link/p0847), available under the **`/std:c++latest`** option. -- Added IntelliSense support for C++23 features [deducing `this`](https://wg21.link/p0847) and [`if consteval`](http://wg21.link/p1938). +- Added IntelliSense support for C++23 features [deducing `this`](https://wg21.link/p0847) and [`if consteval`](https://wg21.link/p1938). - Added inline parameter name and type hint support, toggled by pressing **Alt+F1** or double-tapping **Ctrl**. This behavior can be customized under **Tools > Options > Text Editors > C/C++ > IntelliSense**. - Added experimental support for C++20 modules in CMake projects. This support is currently only available with the Visual Studio (MSBuild) generator. - In 17.1, we introduced peripheral register and RTOS views for embedded developers. We continue to improve the capabilities of those views with usability improvements in 17.2: From 26510c1bb47118a1f626bfdc6552d36c67715d99 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 29 Sep 2025 14:54:35 -0700 Subject: [PATCH 1945/2255] Revise Warning C6064 documentation Updated the date and improved wording for clarity. --- docs/code-quality/c6064.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/code-quality/c6064.md b/docs/code-quality/c6064.md index fe97e65dea7..9b9da081f91 100644 --- a/docs/code-quality/c6064.md +++ b/docs/code-quality/c6064.md @@ -1,7 +1,7 @@ --- description: "Learn more about: Warning C6064" title: Warning C6064 -ms.date: 2/07/2023 +ms.date: 9/29/2025 f1_keywords: ["C6064", "MISSING_INTEGER_ARGUMENT_TO_FORMAT_FUNCTION", "__WARNING_MISSING_INTEGER_ARGUMENT_TO_FORMAT_FUNCTION"] helpviewer_keywords: ["C6064"] --- @@ -13,13 +13,13 @@ This warning indicates that the code doesn't provide enough arguments to match a ## Remarks -Supplying too few arguments to a format function leads to undefined behavior, because the function attempts to read values that were never passed. Possible consequences include incorrect output, crashes, or even security vulnerabilities such as information leaks. To ensure stability and safety, always match the number and types of arguments to the format specifiers in the string. +Supplying too few arguments to a format function leads to undefined behavior because the function attempts to read values that aren't passed. Possible consequences include incorrect output, crashes, or even security vulnerabilities such as information leaks. To ensure stability and safety, always match the number and types of arguments to the format specifiers in the string. Code analysis name: `MISSING_INTEGER_ARGUMENT_TO_FORMAT_FUNCTION` ## Example -The following code generates this warning because it uses an incorrect number of arguments in the call to `sprintf_s` and the missing argument is an integer. If the unsafe function `sprintf` was used instead of the safer variant `sprintf_s`, this code would likely cause a stack overflow instead of just an unexpected output: +The following code generates this warning by using an incorrect number of arguments in the call to `sprintf_s` and the missing argument is an integer. If the unsafe function `sprintf` was used instead of the safer variant `sprintf_s`, this code would likely cause a stack overflow instead of just unexpected output: ```cpp void f() @@ -34,7 +34,7 @@ void f() } ``` -To correct this warning, specify missing arguments or adjust the format string. In this example, we add the missing integer value. +To correct this warning, specify the missing arguments or adjust the format string. In this example, we add the missing integer value. ```cpp void f() From 03ac7e24cde3c8bf7af61b53fb78b4b0881d48eb Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 29 Sep 2025 15:06:08 -0700 Subject: [PATCH 1946/2255] Update C6064 warning message for clarity Clarified the warning message about missing integer arguments and emphasized the importance of matching argument types. --- docs/code-quality/c6064.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/code-quality/c6064.md b/docs/code-quality/c6064.md index 6f91224977d..48f04cb99aa 100644 --- a/docs/code-quality/c6064.md +++ b/docs/code-quality/c6064.md @@ -9,11 +9,11 @@ helpviewer_keywords: ["C6064"] > Missing integer argument to '*function-name*' corresponding to conversion specifier '*number*' -This warning indicates that the code doesn't provide enough arguments to match a format string and one of the missing arguments is an integer. - ## Remarks -Supplying too few arguments to a format function leads to undefined behavior because the function attempts to read values that aren't passed. Possible consequences include incorrect output, crashes, or even security vulnerabilities such as information leaks. +This warning indicates that the code doesn't provide enough arguments to match a format string and one of the missing arguments is an integer. + +Providing too few arguments to a format function leads to undefined behavior because the function attempts to read values that aren't passed. Possible consequences include incorrect output, crashes, or even security vulnerabilities such as information leaks. To ensure stability and safety, always match the number and types of arguments to the format specifiers in the string. From d083529d0ef691c259517dad8b27949db82ceaf2 Mon Sep 17 00:00:00 2001 From: Sinem Akinci <99284450+sinemakinci1@users.noreply.github.com> Date: Tue, 30 Sep 2025 13:25:36 -0700 Subject: [PATCH 1947/2255] Delete docs/build/media/cmake-projects-in-visual-studio directory --- .../screenshot-2023-07-14-153155.png | Bin 58875 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 docs/build/media/cmake-projects-in-visual-studio/screenshot-2023-07-14-153155.png diff --git a/docs/build/media/cmake-projects-in-visual-studio/screenshot-2023-07-14-153155.png b/docs/build/media/cmake-projects-in-visual-studio/screenshot-2023-07-14-153155.png deleted file mode 100644 index 781528af193dde831cddd6a35542f447c9bc7bcb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58875 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 Date: Tue, 30 Sep 2025 13:26:07 -0700 Subject: [PATCH 1948/2255] Add files via upload --- .../media/screenshot-2023-07-14-153155.png | Bin 0 -> 58875 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/build/media/screenshot-2023-07-14-153155.png diff --git a/docs/build/media/screenshot-2023-07-14-153155.png b/docs/build/media/screenshot-2023-07-14-153155.png new file mode 100644 index 0000000000000000000000000000000000000000..781528af193dde831cddd6a35542f447c9bc7bcb GIT binary patch literal 58875 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 Date: Tue, 30 Sep 2025 13:26:52 -0700 Subject: [PATCH 1949/2255] Rename screenshot-2023-07-14-153155.png to visual-studio-switch-cmake-targets-view.png --- ... => visual-studio-switch-cmake-targets-view.png} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/build/media/{screenshot-2023-07-14-153155.png => visual-studio-switch-cmake-targets-view.png} (100%) diff --git a/docs/build/media/screenshot-2023-07-14-153155.png b/docs/build/media/visual-studio-switch-cmake-targets-view.png similarity index 100% rename from docs/build/media/screenshot-2023-07-14-153155.png rename to docs/build/media/visual-studio-switch-cmake-targets-view.png From 3b67b3a70e28a311902f3d2dd8f7908e7b6f6fcb Mon Sep 17 00:00:00 2001 From: Sinem Akinci <99284450+sinemakinci1@users.noreply.github.com> Date: Tue, 30 Sep 2025 13:27:45 -0700 Subject: [PATCH 1950/2255] Update cmake-projects-in-visual-studio.md --- docs/build/cmake-projects-in-visual-studio.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build/cmake-projects-in-visual-studio.md b/docs/build/cmake-projects-in-visual-studio.md index 0f090058efe..6372d15cbdf 100644 --- a/docs/build/cmake-projects-in-visual-studio.md +++ b/docs/build/cmake-projects-in-visual-studio.md @@ -53,7 +53,7 @@ Once CMake cache generation has succeeded, you can also view your projects organ You can also switch views by right-clicking on any file or folder in your Solution Explorer and selecting **Switch to CMake Targets View**. -![A screenshot of right-clicking a file or folder in the Solution explorer. The context menu item to Switch to CMake Targets View is visible](media/cmake-projects-in-visual-studio/screenshot-2023-07-14-153155.png) +![A screenshot of right-clicking a file or folder in the Solution explorer. The context menu item to Switch to CMake Targets View is visible](media/visual-studio-switch-cmake-targets-view.png) Choose the **Show All Files** button at the top of **Solution Explorer** to see all the CMake-generated output in the *`out/build/`* folders. @@ -447,4 +447,4 @@ In Visual Studio 2015, Visual Studio users can use a [CMake generator](https://c - [Deploy, run, and debug your Linux project](../linux/deploy-run-and-debug-your-linux-project.md) - [CMake predefined configuration reference](cmake-predefined-configuration-reference.md) - [vcpkg in CMake projects](/vcpkg/users/buildsystems/cmake-integration) -- [Install and use packages with CMake in Visual Studio](/vcpkg/get_started/get-started-vs) \ No newline at end of file +- [Install and use packages with CMake in Visual Studio](/vcpkg/get_started/get-started-vs) From c72cacd4b57a60664fb262b54c0f7ad62ae68df1 Mon Sep 17 00:00:00 2001 From: Dennis Rea Date: Tue, 30 Sep 2025 14:06:30 -0700 Subject: [PATCH 1951/2255] Add end period to metadata description so screen readers know where to stop. --- docs/build/cmake-projects-in-visual-studio.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/cmake-projects-in-visual-studio.md b/docs/build/cmake-projects-in-visual-studio.md index 6372d15cbdf..c0c295243c4 100644 --- a/docs/build/cmake-projects-in-visual-studio.md +++ b/docs/build/cmake-projects-in-visual-studio.md @@ -53,7 +53,7 @@ Once CMake cache generation has succeeded, you can also view your projects organ You can also switch views by right-clicking on any file or folder in your Solution Explorer and selecting **Switch to CMake Targets View**. -![A screenshot of right-clicking a file or folder in the Solution explorer. The context menu item to Switch to CMake Targets View is visible](media/visual-studio-switch-cmake-targets-view.png) +![A screenshot of right-clicking a file or folder in the Solution explorer. The context menu item to Switch to CMake Targets View is visible.](media/visual-studio-switch-cmake-targets-view.png) Choose the **Show All Files** button at the top of **Solution Explorer** to see all the CMake-generated output in the *`out/build/`* folders. From 5cd85428b20dba21ed3298dc69df2e4812d66486 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 1 Oct 2025 07:09:22 +0800 Subject: [PATCH 1952/2255] Set CMake code block language to `txt` as a fallback --- docs/build/cmake-presets-vs.md | 2 +- docs/build/cmake-projects-in-visual-studio.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build/cmake-presets-vs.md b/docs/build/cmake-presets-vs.md index 63055d93fb2..b5f46cac1be 100644 --- a/docs/build/cmake-presets-vs.md +++ b/docs/build/cmake-presets-vs.md @@ -443,7 +443,7 @@ Instead, enable and disable AddressSanitizer by setting the required compiler an You can add the following sample to *`CMakeLists.txt`* to enable or disable AddressSanitizer for a target: -```cmd +```txt option(ASAN_ENABLED "Build this target with AddressSanitizer" ON) if(ASAN_ENABLED) diff --git a/docs/build/cmake-projects-in-visual-studio.md b/docs/build/cmake-projects-in-visual-studio.md index b56efcce7e5..78e64870018 100644 --- a/docs/build/cmake-projects-in-visual-studio.md +++ b/docs/build/cmake-projects-in-visual-studio.md @@ -148,7 +148,7 @@ When you build for Windows using the MSVC compiler, CMake projects have support When you build for Windows with the MSVC compiler, CMake projects have support for Edit and Continue. Add the following code to your *`CMakeLists.txt`* file to enable Edit and Continue. -``` +```txt if(MSVC) target_compile_options( PUBLIC "/ZI") target_link_options( PUBLIC "/INCREMENTAL") From 10ba6a7ccd5c66672d508818ee6afc282d4bc212 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 1 Oct 2025 07:39:27 +0800 Subject: [PATCH 1953/2255] Elide trailing colon in headings --- docs/build/cmake-predefined-configuration-reference.md | 2 +- docs/c-runtime-library/reference/strdate-s-wstrdate-s.md | 2 +- .../using-the-cpp-core-guidelines-checkers.md | 2 +- ...o-sink-windows-forms-events-from-native-cpp-classes.md | 2 +- docs/ide/adding-a-generic-cpp-class.md | 2 +- docs/standard-library/indirect-array-class.md | 2 +- docs/windows/windows-desktop-wizard.md | 2 +- styleguide/voice-tone.md | 8 ++++---- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/build/cmake-predefined-configuration-reference.md b/docs/build/cmake-predefined-configuration-reference.md index d9597573d8d..702bb64d066 100644 --- a/docs/build/cmake-predefined-configuration-reference.md +++ b/docs/build/cmake-predefined-configuration-reference.md @@ -30,7 +30,7 @@ In a CMake project, build configurations are stored in a *`CMakeSettings.json`* When you choose a configuration, it's added to the *`CMakeSettings.json`* file in the project's root folder. You can then use it to build your project. For information about the configuration properties, see [CMakeSettings reference](cmakesettings-reference.md). -## Linux predefined build configurations: +## Linux predefined build configurations ```json { diff --git a/docs/c-runtime-library/reference/strdate-s-wstrdate-s.md b/docs/c-runtime-library/reference/strdate-s-wstrdate-s.md index 765db826128..6cea74da858 100644 --- a/docs/c-runtime-library/reference/strdate-s-wstrdate-s.md +++ b/docs/c-runtime-library/reference/strdate-s-wstrdate-s.md @@ -76,7 +76,7 @@ The debug library versions of these functions first fill the buffer with 0xFE. T By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). -### Generic-text routine mapping: +### Generic-text routine mapping | TCHAR.H routine | `_UNICODE` and `_MBCS` not defined | `_MBCS` defined | `_UNICODE` defined | |---|---|---|---| diff --git a/docs/code-quality/using-the-cpp-core-guidelines-checkers.md b/docs/code-quality/using-the-cpp-core-guidelines-checkers.md index a463b7bb77a..fefa3144ce2 100644 --- a/docs/code-quality/using-the-cpp-core-guidelines-checkers.md +++ b/docs/code-quality/using-the-cpp-core-guidelines-checkers.md @@ -39,7 +39,7 @@ To enable more Core Check rules, open the dropdown list and choose which rule se A subset of C++ Core Check rules is included in the Microsoft Native Recommended rule set. It's the ruleset that runs by default when Microsoft code analysis is enabled. -### To enable code analysis on your project: +### To enable code analysis on your project 1. Open the **Property Pages** dialog for your project. diff --git a/docs/dotnet/how-to-sink-windows-forms-events-from-native-cpp-classes.md b/docs/dotnet/how-to-sink-windows-forms-events-from-native-cpp-classes.md index 07a8fd3dcc9..af52b7b7635 100644 --- a/docs/dotnet/how-to-sink-windows-forms-events-from-native-cpp-classes.md +++ b/docs/dotnet/how-to-sink-windows-forms-events-from-native-cpp-classes.md @@ -20,7 +20,7 @@ This sample continues the work you did in [How to: Do DDX/DDV Data Binding with Now, you will associate your MFC control (`m_MyControl`) with a managed event handler delegate called `OnClick` for the managed event. -### To attach the OnClick event handler: +### To attach the OnClick event handler 1. Add the following code to the implementation of BOOL CMFC01Dlg::OnInitDialog: diff --git a/docs/ide/adding-a-generic-cpp-class.md b/docs/ide/adding-a-generic-cpp-class.md index aa08041e151..6d7a33e4c9e 100644 --- a/docs/ide/adding-a-generic-cpp-class.md +++ b/docs/ide/adding-a-generic-cpp-class.md @@ -13,7 +13,7 @@ You can add a generic C++ class by using **Class View**. A generic C++ class is ::: moniker range="msvc-140" -## To add a generic C++ class to a project: +## To add a generic C++ class to a project 1. In **Class View**, right-click the project to which you want to add the new class, choose **Add**, and then choose **Class**. diff --git a/docs/standard-library/indirect-array-class.md b/docs/standard-library/indirect-array-class.md index 90054b40f03..f123ae4e00b 100644 --- a/docs/standard-library/indirect-array-class.md +++ b/docs/standard-library/indirect-array-class.md @@ -20,7 +20,7 @@ You construct an `indirect_array` object only by writing an expression of The sequence consists of [`xa.size`](../standard-library/valarray-class.md#size) elements, where element `I` becomes the index `xa[I]` within `va`. -## Example: +## Example ```cpp // indirect_array.cpp diff --git a/docs/windows/windows-desktop-wizard.md b/docs/windows/windows-desktop-wizard.md index ff53b068d36..8a68d0885af 100644 --- a/docs/windows/windows-desktop-wizard.md +++ b/docs/windows/windows-desktop-wizard.md @@ -58,7 +58,7 @@ Defines the support and options for the application, depending on its type. |**Precompiled header**|Specifies that the static library project uses a pre-compiled header.| |**Security Development Lifecycle (SDL) checks**|For more information about SDL, see [Microsoft Security Development Lifecycle (SDL) Process Guidance](../build/reference/sdl-enable-additional-security-checks.md)| -## Add common headers for: +## Add common headers for Add support for one of the libraries supplied in Visual C++. diff --git a/styleguide/voice-tone.md b/styleguide/voice-tone.md index aa691c592e6..60fa9ce7626 100644 --- a/styleguide/voice-tone.md +++ b/styleguide/voice-tone.md @@ -19,14 +19,14 @@ like when you don't follow our guidelines. Here are the details on what we recom ## Use a conversational tone -### Appropriate style: +### Appropriate style We want our documentation to have a conversational tone. Hopefully, you'll feel as though you're having a conversation with the author as you read any of our tutorials or explanations. For you, the experience ought to be informal, conversational, and informative. Readers should feel as though they're listening to the author explain the concepts to them. -### Inappropriate style: +### Inappropriate style One might see the contrast between a conversational style, and the style one finds with more academic treatments of technical subjects. Those resources are useful, but the authors @@ -39,14 +39,14 @@ is a more academic style. You can see the difference immediately. ## Write in second person -### Appropriate style: +### Appropriate style Write your articles as though you're speaking directly to the reader. Use the second person often as you write (as I just have in these two sentences). Second person doesn't always mean using the word 'you'. Write directly to the reader. Write imperative sentences. Tell your reader what you want them to learn. -### Inappropriate style: +### Inappropriate style An author could also choose to write in third person. In that model, an author must find some pronoun or noun to use when referring to the reader. A reader might often find this third From 1ab87b8ebbf7b31303253d3fe608eec5bdeb02a8 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 1 Oct 2025 07:41:29 +0800 Subject: [PATCH 1954/2255] Update metadata in 6 topics --- docs/build/cmake-predefined-configuration-reference.md | 2 +- docs/c-runtime-library/reference/strdate-s-wstrdate-s.md | 3 +-- ...to-sink-windows-forms-events-from-native-cpp-classes.md | 5 ++--- docs/ide/adding-a-generic-cpp-class.md | 7 +++---- docs/standard-library/indirect-array-class.md | 3 +-- docs/windows/windows-desktop-wizard.md | 5 ++--- 6 files changed, 10 insertions(+), 15 deletions(-) diff --git a/docs/build/cmake-predefined-configuration-reference.md b/docs/build/cmake-predefined-configuration-reference.md index 702bb64d066..36e2fa06ee1 100644 --- a/docs/build/cmake-predefined-configuration-reference.md +++ b/docs/build/cmake-predefined-configuration-reference.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: CMake predefined build configurations" title: "CMake predefined configuration reference" +description: "Learn more about: CMake predefined build configurations" ms.description: "Visual Studio provides several predefined build configurations for CMake projects on Linux, Windows, ARM, and IoT." ms.date: 08/03/2021 helpviewer_keywords: ["CMake redefined configurations"] diff --git a/docs/c-runtime-library/reference/strdate-s-wstrdate-s.md b/docs/c-runtime-library/reference/strdate-s-wstrdate-s.md index 6cea74da858..78db9567430 100644 --- a/docs/c-runtime-library/reference/strdate-s-wstrdate-s.md +++ b/docs/c-runtime-library/reference/strdate-s-wstrdate-s.md @@ -1,14 +1,13 @@ --- title: "_strdate_s, _wstrdate_s" description: "_strdate_s and _wstrdate_s are secure CRT versions of the _strdate and _wstrdate functions that put the current date in a buffer." -ms.date: "4/2/2020" +ms.date: 4/2/2020 api_name: ["_strdate_s", "_wstrdate_s", "_o__strdate_s", "_o__wstrdate_s"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"] api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["_strdate_s", "wstrdate_s", "_wstrdate_s", "strdate_s", "_tstrdate_s"] helpviewer_keywords: ["dates, copying", "tstrdate_s function", "wstrdate_s function", "_tstrdate_s function", "strdate_s function", "copying dates", "_strdate_s function", "_wstrdate_s function"] -ms.assetid: d41d8ea9-e5ce-40d4-864e-1ac29b455991 --- # `_strdate_s`, `_wstrdate_s` diff --git a/docs/dotnet/how-to-sink-windows-forms-events-from-native-cpp-classes.md b/docs/dotnet/how-to-sink-windows-forms-events-from-native-cpp-classes.md index af52b7b7635..71f5f0f5e8c 100644 --- a/docs/dotnet/how-to-sink-windows-forms-events-from-native-cpp-classes.md +++ b/docs/dotnet/how-to-sink-windows-forms-events-from-native-cpp-classes.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: How to: Sink Windows Forms Events from Native C++ Classes" title: "How to: Sink Windows Forms Events from Native C++ Classes" +description: "Learn more about: How to: Sink Windows Forms Events from Native C++ Classes" +ms.date: 11/04/2016 ms.custom: "get-started-article" -ms.date: "11/04/2016" helpviewer_keywords: ["event handling, managed/native interop", "event handling, sinking .NET in C++", "event handling, .NET/native interop", "event handling, Windows Forms in C++"] -ms.assetid: 6e30ddee-d058-4c8d-9956-2a43d86f19d5 --- # How to: Sink Windows Forms Events from Native C++ Classes diff --git a/docs/ide/adding-a-generic-cpp-class.md b/docs/ide/adding-a-generic-cpp-class.md index 6d7a33e4c9e..48e95baf99b 100644 --- a/docs/ide/adding-a-generic-cpp-class.md +++ b/docs/ide/adding-a-generic-cpp-class.md @@ -1,11 +1,10 @@ --- -description: "Learn more about: Add a generic C++ class" title: "Add a generic C++ class" -ms.date: "11/09/2018" +description: "Learn more about: Add a generic C++ class" +ms.date: 11/09/2018 +ms.topic: how-to f1_keywords: ["vc.codewiz.classes.adding.generic", "vc.codewiz.class.generic"] helpviewer_keywords: ["Visual C++, classes", "generic classes, adding", "generic classes", "generic C++ class wizard [C++]"] -ms.assetid: e95a5a14-dbed-4edc-8551-344fe48613cb -ms.topic: how-to --- # Add a generic C++ class diff --git a/docs/standard-library/indirect-array-class.md b/docs/standard-library/indirect-array-class.md index f123ae4e00b..8b49ff5f8fe 100644 --- a/docs/standard-library/indirect-array-class.md +++ b/docs/standard-library/indirect-array-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: indirect_array class" title: "indirect_array class" +description: "Learn more about: indirect_array class" ms.date: 01/12/2022 f1_keywords: ["valarray/std::indirect_array"] helpviewer_keywords: ["indirect_array class"] -ms.assetid: 10e1eaea-ba5a-405c-a25e-7bdd3eee7fc7 --- # `indirect_array` class diff --git a/docs/windows/windows-desktop-wizard.md b/docs/windows/windows-desktop-wizard.md index 8a68d0885af..7a46ed9de10 100644 --- a/docs/windows/windows-desktop-wizard.md +++ b/docs/windows/windows-desktop-wizard.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Windows Desktop Wizard" title: "Windows Desktop Wizard" -ms.date: "03/29/2019" +description: "Learn more about: Windows Desktop Wizard" +ms.date: 03/29/2019 f1_keywords: ["vc.appwiz.win32.overview", "vc.appwiz.win32.appset"] helpviewer_keywords: ["Windows Desktop Wizard", "Win32 Project Wizard"] -ms.assetid: 5d7b3a5e-8461-479a-969a-67b7883725b9 --- # Windows Desktop Wizard From 55f0210cfa00b5e2f6423f4f005615b049502c75 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 30 Sep 2025 16:48:51 -0700 Subject: [PATCH 1955/2255] annotate new linkage info --- .../ctime-ctime32-ctime64-wctime-wctime32-wctime64.md | 10 ++++++++-- ...me32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md | 10 ++++++++-- .../reference/difftime-difftime32-difftime64.md | 9 ++++++++- ...-fstat32-fstat64-fstati64-fstat32i64-fstat64i32.md | 8 +++++++- .../reference/ftime-ftime32-ftime64.md | 8 +++++++- .../reference/futime-futime32-futime64.md | 8 +++++++- .../reference/gmtime-gmtime32-gmtime64.md | 9 ++++++++- .../reference/gmtime-s-gmtime32-s-gmtime64-s.md | 9 ++++++++- .../reference/localtime-localtime32-localtime64.md | 9 ++++++++- .../localtime-s-localtime32-s-localtime64-s.md | 9 ++++++++- .../reference/mkgmtime-mkgmtime32-mkgmtime64.md | 9 ++++++++- .../reference/mktime-mktime32-mktime64.md | 9 ++++++++- docs/c-runtime-library/reference/stat-functions.md | 8 +++++++- docs/c-runtime-library/reference/strnlen-strnlen-s.md | 10 ++++++++-- .../c-runtime-library/reference/time-time32-time64.md | 9 ++++++++- .../timespec-get-timespec32-get-timespec64-get1.md | 9 ++++++++- .../utime-utime32-utime64-wutime-wutime32-wutime64.md | 11 +++++++++-- 17 files changed, 133 insertions(+), 21 deletions(-) diff --git a/docs/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md b/docs/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md index 0b2cc7c948b..f14ab2c8924 100644 --- a/docs/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md +++ b/docs/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md @@ -17,10 +17,10 @@ Convert a time value to a string and adjust for local time zone settings. More s ## Syntax ```C -char *ctime( const time_t *sourceTime ); +char *ctime( const time_t *sourceTime ); // See note in remarks section about linkage char *_ctime32( const __time32_t *sourceTime ); char *_ctime64( const __time64_t *sourceTime ); -wchar_t *_wctime( const time_t *sourceTime ); +wchar_t *_wctime( const time_t *sourceTime ); // See note in remarks section about linkage wchar_t *_wctime32( const __time32_t *sourceTime ); wchar_t *_wctime64( const __time64_t *sourceTime ); ``` @@ -62,6 +62,12 @@ These functions validate their parameters. If *`sourceTime`* is a null pointer, By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). +> [!Note] +> Starting with Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are now declared as `inline` (external linkage).\ +> To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1`before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ +> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ +> This applies to the following functions: ctime, _wctime + ### Generic-text routine mappings | TCHAR.H routine | `_UNICODE` and `_MBCS` not defined | `_MBCS` defined | `_UNICODE` defined | diff --git a/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md b/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md index fcf23eb2ceb..669ca4102de 100644 --- a/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md +++ b/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md @@ -16,7 +16,7 @@ Convert a time value to a string and adjust for local time zone settings. These ## Syntax ```C -errno_t ctime_s( +errno_t ctime_s( // See note in remarks section about linkage char* buffer, size_t numberOfElements, const time_t *sourceTime @@ -31,7 +31,7 @@ errno_t _ctime64_s( size_t numberOfElements, const __time64_t *sourceTime ); -errno_t _wctime_s( +errno_t _wctime_s( // See note in remarks section about linkage wchar_t* buffer, size_t numberOfElements, const time_t *sourceTime @@ -124,6 +124,12 @@ The debug library versions of these functions first fill the buffer with 0xFE. T By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). +> [!Note] +> Starting with Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are now declared as `inline` (external linkage).\ +> To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1`before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ +> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ +> This applies to the following functions: ctime_s, _wctime_s + ### Generic-text routine mappings | TCHAR.H routine | `_UNICODE` and `_MBCS` not defined | `_MBCS` defined | `_UNICODE` defined | diff --git a/docs/c-runtime-library/reference/difftime-difftime32-difftime64.md b/docs/c-runtime-library/reference/difftime-difftime32-difftime64.md index b5825758e25..ef234072630 100644 --- a/docs/c-runtime-library/reference/difftime-difftime32-difftime64.md +++ b/docs/c-runtime-library/reference/difftime-difftime32-difftime64.md @@ -17,7 +17,7 @@ Finds the difference between two times. ## Syntax ```C -double difftime( time_t timeEnd, time_t timeStart ); +double difftime( time_t timeEnd, time_t timeStart ); // See note in remarks section about linkage double _difftime32( __time32_t timeEnd, __time32_t timeStart ); double _difftime64( __time64_t timeEnd, __time64_t timeStart ); ``` @@ -46,6 +46,13 @@ These functions validate their parameters. If either of the parameters is zero o By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). +> [!Note] +> Starting in Visual Studio 2025 and the Windows SDK 26000, this function changes from declaring the function (or functions for multi-function pages) with `static inline` to `inline`.\ +> You can opt-out of the change for your project by defining `_STATIC_INLINE_UCRT_FUNCTIONS=1`.\ +> You can adopt the change early by defining `_STATIC_INLINE_UCRT_FUNCTIONS=0`.\ +> This change improves conformance and helps avoid One Definition Rule (ODR) violations, especially when using modules.\ +> This applies to the following functions: difftime + ## Requirements | Routine | Required header | diff --git a/docs/c-runtime-library/reference/fstat-fstat32-fstat64-fstati64-fstat32i64-fstat64i32.md b/docs/c-runtime-library/reference/fstat-fstat32-fstat64-fstati64-fstat32i64-fstat64i32.md index 41ce094bccc..1d9c6e67532 100644 --- a/docs/c-runtime-library/reference/fstat-fstat32-fstat64-fstati64-fstat32i64-fstat64i32.md +++ b/docs/c-runtime-library/reference/fstat-fstat32-fstat64-fstati64-fstat32i64-fstat64i32.md @@ -16,7 +16,7 @@ Gets information about an open file. ## Syntax ```C -int _fstat( +int _fstat( // See note in remarks section about linkage int fd, struct _stat *buffer ); @@ -81,6 +81,12 @@ Unless `_USE_32BIT_TIME_T` is defined, **`_fstat`** is equivalent to **`_fstat64 By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). +> [!Note] +> Starting with Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are now declared as `inline` (external linkage).\ +> To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1`before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ +> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ +> This applies to the following functions: _fstat + ### Time type and file length type variations of `_stat` | Functions | `_USE_32BIT_TIME_T` defined? | Time type | File length type | diff --git a/docs/c-runtime-library/reference/ftime-ftime32-ftime64.md b/docs/c-runtime-library/reference/ftime-ftime32-ftime64.md index 7cb0247f80a..692dfa3aa2a 100644 --- a/docs/c-runtime-library/reference/ftime-ftime32-ftime64.md +++ b/docs/c-runtime-library/reference/ftime-ftime32-ftime64.md @@ -17,7 +17,7 @@ Get the current time. More secure versions of these functions are available; see ## Syntax ```C -void _ftime( struct _timeb *timeptr ); +void _ftime( struct _timeb *timeptr ); // See note in remarks section about linkage void _ftime32( struct __timeb32 *timeptr ); void _ftime64( struct __timeb64 *timeptr ); ``` @@ -46,6 +46,12 @@ The **`_ftime`** function is equivalent to **`_ftime64`**, and `_timeb` contains By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). +> [!Note] +> Starting with Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are now declared as `inline` (external linkage).\ +> To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1`before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ +> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ +> This applies to the following functions: _ftime + ## Requirements | Function | Required header | diff --git a/docs/c-runtime-library/reference/futime-futime32-futime64.md b/docs/c-runtime-library/reference/futime-futime32-futime64.md index a8b38058097..d43295df933 100644 --- a/docs/c-runtime-library/reference/futime-futime32-futime64.md +++ b/docs/c-runtime-library/reference/futime-futime32-futime64.md @@ -17,7 +17,7 @@ Sets the modification time on an open file. ## Syntax ```C -int _futime( +int _futime( // See note in remarks section about linkage int fd, struct _utimbuf *filetime ); @@ -51,6 +51,12 @@ The **`_futime`** routine sets the modification date and the access time on the By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). +> [!Note] +> Starting with Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are now declared as `inline` (external linkage).\ +> To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1`before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ +> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ +> This applies to the following functions: _futime + ## Requirements | Function | Required header | Optional header | diff --git a/docs/c-runtime-library/reference/gmtime-gmtime32-gmtime64.md b/docs/c-runtime-library/reference/gmtime-gmtime32-gmtime64.md index 1d0656b3f72..331aee5237a 100644 --- a/docs/c-runtime-library/reference/gmtime-gmtime32-gmtime64.md +++ b/docs/c-runtime-library/reference/gmtime-gmtime32-gmtime64.md @@ -16,7 +16,7 @@ Converts a `time_t` time value to a `tm` structure. More secure versions of thes ## Syntax ```C -struct tm *gmtime( const time_t *sourceTime ); +struct tm *gmtime( const time_t *sourceTime ); // See note in remarks section about linkage struct tm *_gmtime32( const __time32_t *sourceTime ); struct tm *_gmtime64( const __time64_t *sourceTime ); ``` @@ -56,6 +56,13 @@ The **`_gmtime32`** function breaks down the *`sourceTime`* value and stores it By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). +> [!Note] +> Starting in Visual Studio 2025 and the Windows SDK 26000, this function changes from declaring the function (or functions for multi-function pages) with `static inline` to `inline`.\ +> You can opt-out of the change for your project by defining `_STATIC_INLINE_UCRT_FUNCTIONS=1`.\ +> You can adopt the change early by defining `_STATIC_INLINE_UCRT_FUNCTIONS=0`.\ +> This change improves conformance and helps avoid One Definition Rule (ODR) violations, especially when using modules.\ +> This applies to the following functions: gmtime + ## Requirements | Routine | Required C header | Required C++ header | diff --git a/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md b/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md index 91517017143..4510a2090bf 100644 --- a/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md +++ b/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md @@ -16,7 +16,7 @@ Converts a time value to a `tm` structure. These functions are versions of [`_gm ## Syntax ```C -errno_t gmtime_s( +errno_t gmtime_s( // See note in remarks section about linkage struct tm* tmDest, const __time_t* sourceTime ); @@ -76,6 +76,13 @@ Each of the structure fields is of type **`int`**, as shown in the following tab By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). +> [!Note] +> Starting in Visual Studio 2025 and the Windows SDK 26000, this function changes from declaring the function (or functions for multi-function pages) with `static inline` to `inline`.\ +> You can opt-out of the change for your project by defining `_STATIC_INLINE_UCRT_FUNCTIONS=1`.\ +> You can adopt the change early by defining `_STATIC_INLINE_UCRT_FUNCTIONS=0`.\ +> This change improves conformance and helps avoid One Definition Rule (ODR) violations, especially when using modules.\ +> This applies to the following functions: gmtime_s + ## Requirements | Routine | Required C header | Required C++ header | diff --git a/docs/c-runtime-library/reference/localtime-localtime32-localtime64.md b/docs/c-runtime-library/reference/localtime-localtime32-localtime64.md index 746082c2ad8..c3c19a20dcc 100644 --- a/docs/c-runtime-library/reference/localtime-localtime32-localtime64.md +++ b/docs/c-runtime-library/reference/localtime-localtime32-localtime64.md @@ -17,7 +17,7 @@ Converts a time value and corrects for the local time zone. More secure versions ## Syntax ```C -struct tm *localtime( const time_t *sourceTime ); +struct tm *localtime( const time_t *sourceTime ); // See note in remarks section about linkage struct tm *_localtime32( const __time32_t *sourceTime ); struct tm *_localtime64( const __time64_t *sourceTime ); ``` @@ -72,6 +72,13 @@ These functions validate their parameters. If *`sourceTime`* is a null pointer, By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). +> [!Note] +> Starting in Visual Studio 2025 and the Windows SDK 26000, this function changes from declaring the function (or functions for multi-function pages) with `static inline` to `inline`.\ +> You can opt-out of the change for your project by defining `_STATIC_INLINE_UCRT_FUNCTIONS=1`.\ +> You can adopt the change early by defining `_STATIC_INLINE_UCRT_FUNCTIONS=0`.\ +> This change improves conformance and helps avoid One Definition Rule (ODR) violations, especially when using modules.\ +> This applies to the following functions: localtime + ## Requirements | Routine | Required C header | Required C++ header | diff --git a/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md b/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md index 64aebc449d6..943d9fa96db 100644 --- a/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md +++ b/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md @@ -17,7 +17,7 @@ Converts a **`time_t`** time value to a **`tm`** structure, and corrects for the ## Syntax ```C -errno_t localtime_s( +errno_t localtime_s( // See note in remarks section about linkage struct tm* const tmDest, time_t const* const sourceTime ); @@ -84,6 +84,13 @@ If the **`TZ`** environment variable is set, the C run-time library assumes rule By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). +> [!Note] +> Starting in Visual Studio 2025 and the Windows SDK 26000, this function changes from declaring the function (or functions for multi-function pages) with `static inline` to `inline`.\ +> You can opt-out of the change for your project by defining `_STATIC_INLINE_UCRT_FUNCTIONS=1`.\ +> You can adopt the change early by defining `_STATIC_INLINE_UCRT_FUNCTIONS=0`.\ +> This change improves conformance and helps avoid One Definition Rule (ODR) violations, especially when using modules.\ +> This applies to the following functions: localtime_s + ## Requirements | Routine | Required C header | Required C++ header | diff --git a/docs/c-runtime-library/reference/mkgmtime-mkgmtime32-mkgmtime64.md b/docs/c-runtime-library/reference/mkgmtime-mkgmtime32-mkgmtime64.md index c692db99002..d7970373b52 100644 --- a/docs/c-runtime-library/reference/mkgmtime-mkgmtime32-mkgmtime64.md +++ b/docs/c-runtime-library/reference/mkgmtime-mkgmtime32-mkgmtime64.md @@ -16,7 +16,7 @@ Converts a UTC time represented by a **`struct tm`** to a UTC time represented b ## Syntax ```C -time_t _mkgmtime( +time_t _mkgmtime( // See note in remarks section about linkage struct tm* timeptr ); __time32_t _mkgmtime32( @@ -48,6 +48,13 @@ The range of the **`_mkgmtime32`** function is from midnight, January 1, 1970, U Both **`gmtime`** and **`localtime`** use a common static buffer for the conversion. If you supply this buffer to **`_mkgmtime`**, the previous contents are destroyed. +> [!Note] +> Starting in Visual Studio 2025 and the Windows SDK 26000, this function changes from declaring the function (or functions for multi-function pages) with `static inline` to `inline`.\ +> You can opt-out of the change for your project by defining `_STATIC_INLINE_UCRT_FUNCTIONS=1`.\ +> You can adopt the change early by defining `_STATIC_INLINE_UCRT_FUNCTIONS=0`.\ +> This change improves conformance and helps avoid One Definition Rule (ODR) violations, especially when using modules.\ +> This applies to the following functions: _mkgmtime + ## Examples ```C diff --git a/docs/c-runtime-library/reference/mktime-mktime32-mktime64.md b/docs/c-runtime-library/reference/mktime-mktime32-mktime64.md index 51d9a4265a6..13214c3d9f4 100644 --- a/docs/c-runtime-library/reference/mktime-mktime32-mktime64.md +++ b/docs/c-runtime-library/reference/mktime-mktime32-mktime64.md @@ -16,7 +16,7 @@ Convert the local time to a calendar value. ## Syntax ```C -time_t mktime( +time_t mktime( // See note in remarks section about linkage struct tm *timeptr ); __time32_t _mktime32( @@ -62,6 +62,13 @@ These functions validate their parameter. If *`timeptr`* is a null pointer, the By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). +> [!Note] +> Starting in Visual Studio 2025 and the Windows SDK 26000, this function changes from declaring the function (or functions for multi-function pages) with `static inline` to `inline`.\ +> You can opt-out of the change for your project by defining `_STATIC_INLINE_UCRT_FUNCTIONS=1`.\ +> You can adopt the change early by defining `_STATIC_INLINE_UCRT_FUNCTIONS=0`.\ +> This change improves conformance and helps avoid One Definition Rule (ODR) violations, especially when using modules.\ +> This applies to the following functions: mktime + ## Requirements | Routine | Required header | diff --git a/docs/c-runtime-library/reference/stat-functions.md b/docs/c-runtime-library/reference/stat-functions.md index b1a5efc58ff..cf2f96d442f 100644 --- a/docs/c-runtime-library/reference/stat-functions.md +++ b/docs/c-runtime-library/reference/stat-functions.md @@ -16,7 +16,7 @@ Get status information on a file. ## Syntax ```C -int _stat( +int _stat( // See note in remarks section about linkage const char *path, struct _stat *buffer ); @@ -100,6 +100,12 @@ This function validates its parameters. If either *`path`* or *`buffer`* is `NUL By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). +> [!Note] +> Starting with Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are now declared as `inline` (external linkage).\ +> To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1`before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ +> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ +> This applies to the following functions: _stat + ### Time type and file length type variations of `_stat` | Functions | `_USE_32BIT_TIME_T` defined | Time type | File length type | diff --git a/docs/c-runtime-library/reference/strnlen-strnlen-s.md b/docs/c-runtime-library/reference/strnlen-strnlen-s.md index d74f2d71dc1..9be6378f434 100644 --- a/docs/c-runtime-library/reference/strnlen-strnlen-s.md +++ b/docs/c-runtime-library/reference/strnlen-strnlen-s.md @@ -24,7 +24,7 @@ size_t strnlen( const char *str, size_t numberOfElements ); -size_t strnlen_s( +size_t strnlen_s( // See note in remarks section about linkage const char *str, size_t numberOfElements ); @@ -32,7 +32,7 @@ size_t wcsnlen( const wchar_t *str, size_t numberOfElements ); -size_t wcsnlen_s( +size_t wcsnlen_s( // See note in remarks section about linkage const wchar_t *str, size_t numberOfElements ); @@ -88,6 +88,12 @@ Each of these functions returns the number of characters in *`str`*, not includi By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). +> [!Note] +> Starting with Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are now declared as `inline` (external linkage).\ +> To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1`before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ +> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ +> This applies to the following functions: strnlen_s, wcsnlen_s + ### Generic-text routine mappings | `TCHAR.H` routine | `_UNICODE` and `_MBCS` not defined | `_MBCS` defined | `_UNICODE` defined | diff --git a/docs/c-runtime-library/reference/time-time32-time64.md b/docs/c-runtime-library/reference/time-time32-time64.md index 782e7aa8359..e6618981943 100644 --- a/docs/c-runtime-library/reference/time-time32-time64.md +++ b/docs/c-runtime-library/reference/time-time32-time64.md @@ -17,7 +17,7 @@ Gets the system time. ## Syntax ```C -time_t time( time_t *destTime ); +time_t time( time_t *destTime ); // See note in remarks section about linkage __time32_t _time32( __time32_t *destTime ); __time64_t _time64( __time64_t *destTime ); ``` @@ -37,6 +37,13 @@ The **`time`** function returns the number of seconds elapsed since midnight (00 **`time`** is a wrapper for **`_time64`** and **`time_t`** is, by default, equivalent to **`__time64_t`**. If you need to force the compiler to interpret **`time_t`** as the old 32-bit **`time_t`**, you can define `_USE_32BIT_TIME_T`. We don't recommend `_USE_32BIT_TIME_T`, because your application may fail after January 18, 2038; the use of this macro isn't allowed on 64-bit platforms. +> [!Note] +> Starting in Visual Studio 2025 and the Windows SDK 26000, this function changes from declaring the function (or functions for multi-function pages) with `static inline` to `inline`.\ +> You can opt-out of the change for your project by defining `_STATIC_INLINE_UCRT_FUNCTIONS=1`.\ +> You can adopt the change early by defining `_STATIC_INLINE_UCRT_FUNCTIONS=0`.\ +> This change improves conformance and helps avoid One Definition Rule (ODR) violations, especially when using modules.\ +> This applies to the following functions: time + ## Requirements | Routine | Required C header | Required C++ header | diff --git a/docs/c-runtime-library/reference/timespec-get-timespec32-get-timespec64-get1.md b/docs/c-runtime-library/reference/timespec-get-timespec32-get-timespec64-get1.md index e14e404ae67..7f77bc722ea 100644 --- a/docs/c-runtime-library/reference/timespec-get-timespec32-get-timespec64-get1.md +++ b/docs/c-runtime-library/reference/timespec-get-timespec32-get-timespec64-get1.md @@ -17,7 +17,7 @@ Sets the interval pointed to by the first argument to the current calendar time, ## Syntax ```C -int timespec_get( +int timespec_get( // See note in remarks section about linkage struct timespec* const time_spec, int const base ); @@ -55,6 +55,13 @@ These functions support only `TIME_UTC` as the *`base`* value. `TIME_UTC` sets t By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). +> [!Note] +> Starting in Visual Studio 2025 and the Windows SDK 26000, this function changes from declaring the function (or functions for multi-function pages) with `static inline` to `inline`.\ +> You can opt-out of the change for your project by defining `_STATIC_INLINE_UCRT_FUNCTIONS=1`.\ +> You can adopt the change early by defining `_STATIC_INLINE_UCRT_FUNCTIONS=0`.\ +> This change improves conformance and helps avoid One Definition Rule (ODR) violations, especially when using modules.\ +> This applies to the following functions: timespec_get + ## Requirements | Routine | Required header | diff --git a/docs/c-runtime-library/reference/utime-utime32-utime64-wutime-wutime32-wutime64.md b/docs/c-runtime-library/reference/utime-utime32-utime64-wutime-wutime32-wutime64.md index d5a82ee0b63..7f57cbfe0bb 100644 --- a/docs/c-runtime-library/reference/utime-utime32-utime64-wutime-wutime32-wutime64.md +++ b/docs/c-runtime-library/reference/utime-utime32-utime64-wutime-wutime32-wutime64.md @@ -17,7 +17,7 @@ Set the file modification time. ## Syntax ```C -int _utime( +int _utime( // See note in remarks section about linkage const char *filename, struct _utimbuf *times ); @@ -29,7 +29,7 @@ int _utime64( const char *filename, struct __utimbuf64 *times ); -int _wutime( +int _wutime( // See note in remarks section about linkage const wchar_t *filename, struct _utimbuf *times ); @@ -85,6 +85,13 @@ Specific versions of the `_utimbuf` structure (`__utimbuf32` and `__utimbuf64`) By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). +> [!Note] +> Starting in Visual Studio 2025 and the Windows SDK 26000, this function changes from declaring the function (or functions for multi-function pages) with `static inline` to `inline`.\ +> You can opt-out of the change for your project by defining `_STATIC_INLINE_UCRT_FUNCTIONS=1`.\ +> You can adopt the change early by defining `_STATIC_INLINE_UCRT_FUNCTIONS=0`.\ +> This change improves conformance and helps avoid One Definition Rule (ODR) violations, especially when using modules.\ +> This applies to the following functions: _utime, _wutime + ### Generic-text routine mappings | TCHAR.H routine | `_UNICODE` and `_MBCS` not defined | `_MBCS` defined | `_UNICODE` defined | From 6fb63f0aeb97a32332b6f7509346bed36a566604 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 1 Oct 2025 09:39:09 +0800 Subject: [PATCH 1956/2255] Remove bunch of stray characters in "`` operators" reference --- docs/standard-library/chrono-operators.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/standard-library/chrono-operators.md b/docs/standard-library/chrono-operators.md index 64931b76072..f5effbda16a 100644 --- a/docs/standard-library/chrono-operators.md +++ b/docs/standard-library/chrono-operators.md @@ -303,7 +303,7 @@ constexpr year_month_weekday_last operator-(const year_month_weekday_last& ymwdl 8\) Returns the number of days between two weekdays. -9\) Returns `year(int(y)-ys.count)())` +9\) Returns `year(int(y)-ys.count())` 10\) Returns `years(int(y) - int(y2))`. Subtracting two `year` values results in a `std::chrono::years`, which represents the difference in years between `y` and `y2`. For example, `2021y-2000y` produces `years(21)`. @@ -669,7 +669,7 @@ The right object to compare. 2\) Returns **`true`** if *`Left`* and *`Right`* represent the same point in time. Otherwise, returns **`false`**.\ 3-17\) Returns **`true`** if *`Left`* and *`Right`* have the same value. Otherwise, returns **`false`**.\ 18\) Returns **`true`** if `Left.name() == Right.name()`. Otherwise, returns **`false`**.\ -19\) Returns **`true`** if `Left.get_time_zone() == _Right.get_time_zone() && Left.get_sys_time() == Right.get_sys_time();` +19\) Returns **`true`** if `Left.get_time_zone() == Right.get_time_zone() && Left.get_sys_time() == Right.get_sys_time();` ## `operator>` @@ -1118,7 +1118,7 @@ The output stream you passed in, `os` 21\) In Microsoft's implementation, a `sys_info` is output as its `begin`, `end`, `offset`, `save`, and `abbrev` fields. For example: `begin: 2021-03-14 10:00:00, end: 2021-11-07 09:00:00, offset: -25200s, save: 60min, abbrev: PDT` -22\) In Microsoft's implementation, a `local_info` is output as yyyy-mm-dd hh:mm::ss.ssssss. For example, `2021-09-17 13:55:59.6590120` +22\) In Microsoft's implementation, a `local_info` is output as yyyy-mm-dd hh:mm:ss.ssssss. For example, `2021-09-17 13:55:59.6590120` 23\) The local time in the `zoned_time` (obtained as `zt.get_local_time()`) is output using the format yyyy-mm-dd hh:mm:ss timezone. For example, `2021-09-15 10:45:00 GMT-6` @@ -1160,7 +1160,7 @@ constexpr duration::type 2) template -constexpr typename common_type, duration>::type +constexpr typename common_type, duration>::type operator%( const duration& Left, const duration& Right); @@ -1214,7 +1214,7 @@ A `duration` object. *`Div`*\ An integral value. -*`Left`*\w +*`Left`*\ The left `duration` object. *`Right`*\ From dd8311c691ea0f4326b31de62c276096f47db5d8 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 1 Oct 2025 09:42:16 +0800 Subject: [PATCH 1957/2255] Fix comment in `operator-` example in "`` operators" reference --- docs/standard-library/chrono-operators.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard-library/chrono-operators.md b/docs/standard-library/chrono-operators.md index f5effbda16a..2744ff09e22 100644 --- a/docs/standard-library/chrono-operators.md +++ b/docs/standard-library/chrono-operators.md @@ -362,7 +362,7 @@ int main() // year_month_day_last year_month_day_last ymdl = June / last / 2021; - std::cout << ymdl - years{1} - months{1} << '\n'; // 2022/Jul/last + std::cout << ymdl - years{1} - months{1} << '\n'; // 2020/May/last // year_month_weekday year_month_weekday ymw{ year(1997) / January / Wednesday[1] }; From aab742ad1cbd3aee01a5076d5b9b824989762f54 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 1 Oct 2025 09:42:43 +0800 Subject: [PATCH 1958/2255] Fix "a" typo in "`` operators" reference --- docs/standard-library/chrono-operators.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard-library/chrono-operators.md b/docs/standard-library/chrono-operators.md index 2744ff09e22..5314f3aefcb 100644 --- a/docs/standard-library/chrono-operators.md +++ b/docs/standard-library/chrono-operators.md @@ -1438,7 +1438,7 @@ operator/(const month_weekday_last& mwdl, int y) noexcept; // C++20 The day. Provided either as an integer in the range [1,31], or as a [`day`](day-class.md). *`lastspec`*\ -An empty tag type that indicates the last item in s sequence. For example, `2021y/May/last` is the last day of May 2021. +An empty tag type that indicates the last item in a sequence. For example, `2021y/May/last` is the last day of May 2021. *`m`*\ The month. Provided either as an integer in the range [1,12], or as a [`month`](month-class.md). From da0761be656f232a55ce8d3e2bf3f7b028b53e38 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 1 Oct 2025 09:50:24 +0800 Subject: [PATCH 1959/2255] Fix wrong `operator<=>` example output in "`` operators" reference --- docs/standard-library/chrono-operators.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/standard-library/chrono-operators.md b/docs/standard-library/chrono-operators.md index 5314f3aefcb..cd24d6622b6 100644 --- a/docs/standard-library/chrono-operators.md +++ b/docs/standard-library/chrono-operators.md @@ -846,8 +846,8 @@ int main() ``` ```output -d1 < d2 -true true false +d1 > d2 +true true false ``` ## `operator<<` From abc900884e9b4334ce60ef02a87c4d445df56a3b Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 1 Oct 2025 09:54:28 +0800 Subject: [PATCH 1960/2255] Trim unnecessary spaces in "`` operators" reference --- docs/standard-library/chrono-operators.md | 32 +++++++++++------------ 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/standard-library/chrono-operators.md b/docs/standard-library/chrono-operators.md index cd24d6622b6..f8621ffba27 100644 --- a/docs/standard-library/chrono-operators.md +++ b/docs/standard-library/chrono-operators.md @@ -23,7 +23,7 @@ Addition operator for the following types: - [`year_month_weekday_last`](year-month-weekday-last-class.md) ```cpp -1) +1) template constexpr typename common_type, duration>::type operator+( @@ -46,7 +46,7 @@ time_point, Durati 4) constexpr day operator+(const day& d, const days& ds) noexcept; // C++20 -constexpr day operator+(const days& ds, const day& d) noexcept; // C++20 +constexpr day operator+(const days& ds, const day& d) noexcept; // C++20 5) constexpr month operator+(const month& m, const months& ms) noexcept; // C++20 @@ -107,7 +107,7 @@ constexpr year_month_weekday_last operator+(const years& dy, const year_month_we 2-3\) Return a `time_point` object that represents a point in time that is displaced by the interval *`Dur`* from the point in time *`Time`*. -4\) Returns the result of `d+ds.count()`. If the result is out of the range [0, 255], then the result is unspecified. +4\) Returns the result of `d+ds.count()`. If the result is out of the range [0, 255], then the result is unspecified. 5\) Returns the result of `m+ms.count()`. If the result is out of the range [1, 12], it's reduced modulo 12 and then +1. @@ -117,13 +117,13 @@ constexpr year_month_weekday_last operator+(const years& dy, const year_month_we 8\) Returns the result of adding the number of months and years to the specified month and year. -9\) Returns the result of adding months or years to a `year_month_day`. If `ymd.month()` is `February` and `ymd.day()` is not in the range [1d, 28d], `ok()` may return `false` for the result of the addition. +9\) Returns the result of adding months or years to a `year_month_day`. If `ymd.month()` is `February` and `ymd.day()` is not in the range [1d, 28d], `ok()` may return `false` for the result of the addition. 10\) Returns `(ymdl.year() / ymdl.month() + dm) / last`. Note: The `/` used here isn't a division operator. It's the date operator. 11\) Returns `ymdl + dm`. -12\) Returns `{ymdl.year()+dy, ymdl.month_day_last()}` +12\) Returns `{ymdl.year()+dy, ymdl.month_day_last()}` 13\) Returns `ymwd + dm.count()`. @@ -163,12 +163,12 @@ int main() // year_month_weekday year_month_weekday ymw{ year(1997) / January / Wednesday[1] }; std::cout << ymw + months{1} << '\n'; // 1997/Feb/Wed[1] - std::cout << ymw + years{1} << '\n'; // 1998/Jan/Wed[1] + std::cout << ymw + years{1} << '\n'; // 1998/Jan/Wed[1] // year_month_weekday_last year_month_weekday_last ymwl{ year(1997) / January / Wednesday[last] }; std::cout << ymwl + months{ 1 } << '\n'; // 1997/Feb/Wed[last] - std::cout << ymwl + years{ 1 } << '\n'; // 1998/Jan/Wed[last] + std::cout << ymwl + years{ 1 } << '\n'; // 1998/Jan/Wed[last] return 0; } @@ -295,7 +295,7 @@ constexpr year_month_weekday_last operator-(const year_month_weekday_last& ymwdl 4\) Returns the result of `d-ds.count()`. If the result is out of the range [0, 255], then the result is unspecified. -5\) If `m.ok() == true` and `ms.ok() == true`, returns the result of subtracting the two month values, or subtracting the number of months. The result will be in the range [1, 12]. If the result is negative, it wraps around. For example, subtracting one month from January (`month m1{1} - months{1};` results in 12 (December). +5\) If `m.ok() == true` and `ms.ok() == true`, returns the result of subtracting the two month values, or subtracting the number of months. The result will be in the range [1, 12]. If the result is negative, it wraps around. For example, subtracting one month from January (`month m1{1} - months{1};` results in 12 (December). 6\) Returns the difference in months between *`Left`* and *`Right`* @@ -336,10 +336,10 @@ int main() { // day day d{10}; - d = d - days(5); + d = d - days(5); std::cout << d << '\n'; // 05 - // month + // month month m{2}; m = m - months{1}; std::cout << m << '\n'; // Jan @@ -367,13 +367,13 @@ int main() // year_month_weekday year_month_weekday ymw{ year(1997) / January / Wednesday[1] }; std::cout << ymw - months{1} << '\n'; // 1996/Dec/Wed[1] - std::cout << ymw - years{1} << '\n'; // 1996/Jan/Wed[1] + std::cout << ymw - years{1} << '\n'; // 1996/Jan/Wed[1] // year_month_weekday_last year_month_weekday_last ymwl{ year(1997) / January / Wednesday[last] }; std::cout << ymwl - months{ 1 } << '\n'; // 1996/Dec/Wed[last] std::cout << ymwl - years{ 1 } << '\n'; // 1996/Jan/Wed[last] - + return 0; } ``` @@ -458,7 +458,7 @@ The right `duration` or `time_point` object. ### Return value 1\) Returns **`true`** if the number of ticks for the type common to *`Left`* and *`Right`* aren't equal. Otherwise, returns **`false`**.\ -2\) Returns **`true`** if the two [`time_point`](time-point-class.md) objects don't represent the same point in time. Otherwise, returns **`false`**. +2\) Returns **`true`** if the two [`time_point`](time-point-class.md) objects don't represent the same point in time. Otherwise, returns **`false`**. ## `operator*` @@ -644,7 +644,7 @@ constexpr bool operator==(const year_month_day_last& Left, const year_month_day_ // 16) year_month_weekday constexpr bool operator==(const year_month_weekday& Left, const year_month_weekday& Right) noexcept; // C++20 -// 17) year_month_weekday_last +// 17) year_month_weekday_last constexpr bool operator==(const year_month_weekday_last& Left, const year_month_weekday_last& Right) noexcept; // C++20 // 18) time_zone_link @@ -678,7 +678,7 @@ The right object to compare. 2\) Determines if the point in time since the epoch of the `Left`[`time_point`](../standard-library/time-point-class.md) is greater than the time since the epoch of the `time_point` in `Right`. ```cpp -1) +1) template constexpr bool operator>( const duration& Left, @@ -1262,7 +1262,7 @@ operator/(const year& y, const month& m) noexcept; // C++20 // 2 constexpr year_month operator/(const year& y, int m) noexcept; // C++20 - + ///////// returns month_day // 3 From eff4d936720032e6e8cbb20a7b0b5b24a85e16da Mon Sep 17 00:00:00 2001 From: Alex Guteniev Date: Wed, 1 Oct 2025 16:59:02 +0300 Subject: [PATCH 1961/2255] Link to documentation on how to set macro globally --- docs/standard-library/vectorized-stl-algorithms.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard-library/vectorized-stl-algorithms.md b/docs/standard-library/vectorized-stl-algorithms.md index 65e7d3b6659..df6b030e196 100644 --- a/docs/standard-library/vectorized-stl-algorithms.md +++ b/docs/standard-library/vectorized-stl-algorithms.md @@ -30,7 +30,7 @@ The manually vectorized algorithms use template meta-programming to detect the s Generally, programs either benefit in performance from this manual vectorization or are unaffected by it. In case of any problem, you can disable manual vectorization by defining the `_USE_STD_VECTOR_ALGORITHMS` macro set to 0. It defaults to 1 on x64 and x86, which means that manually vectorized algorithms are enabled by default. -When overriding `_USE_STD_VECTOR_ALGORITHMS` make sure to set the same value for all linked translation units that use algorithms. Reliable way to achieve that is using project properties rather than defining it in the source. +When overriding `_USE_STD_VECTOR_ALGORITHMS` make sure to set the same value for all linked translation units that use algorithms. Reliable way to achieve that is using project properties rather than defining it in the source. See [/D (Preprocessor Definitions)](../build/reference/d-preprocessor-definitions.md) compiler option. The following algorithms have manual vectorization controlled via `_USE_STD_VECTOR_ALGORITHMS` macro: - `contains` From 3bea6da38e00cdbedcc24fb0a1f675a9ce6f7322 Mon Sep 17 00:00:00 2001 From: Carson Radtke Date: Wed, 27 Aug 2025 10:25:48 -0600 Subject: [PATCH 1962/2255] [dev18] new docs for new alloc/dealloc mismatch warning ADO feature PR: https://devdiv.visualstudio.com/DevDiv/_git/msvc/pullrequest/641019 Dev18 introduced a new C26840 warning that encompasses what was previously warned by C6278, C6279, C6280, and C6283. This new warning uses the more precise path-sensitive analysis and should be preferred over the C6XXX family of warnings. --- docs/code-quality/c26840.md | 52 +++++++++++++++++++++++++++++++++++++ docs/code-quality/c6278.md | 4 +++ docs/code-quality/c6279.md | 6 +++++ docs/code-quality/c6280.md | 6 +++++ docs/code-quality/c6283.md | 6 +++++ 5 files changed, 74 insertions(+) create mode 100644 docs/code-quality/c26840.md diff --git a/docs/code-quality/c26840.md b/docs/code-quality/c26840.md new file mode 100644 index 00000000000..7175588d5c2 --- /dev/null +++ b/docs/code-quality/c26840.md @@ -0,0 +1,52 @@ +--- +description: "Learn more about: Warning C26840" +title: Warning C26840 +ms.date: 10/03/2022 +f1_keywords: ["C26840", "ALLOCATION_DEALLOCATION_MISMATCH", "__WARNING_ALLOCATION_DEALLOCATION_MISMATCH"] +helpviewer_keywords: ["C26840"] +ms.assetid: 2fbe9dc5-fa43-47b9-97a7-3f8215da1d40 # TODO (@carsonradtke): I generated this with `PS > (New-Guid).ToString()`. Is that OK? +--- +# Warning C26840 + +> Memory allocated with '' is being deallocated with ''. Use '' instead. + +## Remarks + +This warning indicates that the calling function has inconsistently allocated memory with one family of allocation functions, but freed it was a deallocation function from a different family. This usage is undefined behavior according to the C++ standard and the Microsoft C++ implementation. + +The exact ramifications of this defect are difficult to predict. It might result in leaks for classes with destructors that perform memory de-allocation. It could cause inconsistent behavior for classes with destructors that perform some semantically significant operation, or memory corruptions and crashes when operators have been overridden. In other cases the mismatch might be unimportant, depending on the implementation of the compiler and its libraries. Analysis tools can't always distinguish between these situations. + +If memory is allocated with one family of allocation functions, it should be freed with a matching deallocation function. + +C26840 covers the following allocation/deallocation pairs: + +- C++ scalar new (`new`) must be deallocated with scalar delete (`delete`). +- C++ array new (`new[]`) must be deallocated with array delete (`delete[]`). +- C/C++ `malloc`/`calloc`/`realloc` must be deallocated with `free` (or `realloc`). +- Windows `HeapAlloc` must be deallocated with `HeapFree`. +- Windows `GlobalAlloc` must be deallocated with `GlobalFree`. +- Windows `LocalAlloc` must be deallocated with `LocalFree`. +- Windows `MIDL_user_allocate` must be deallocated with `MIDL_user_free`. +- COM `CoTaskMemAlloc` must be deallocated with `CoTaskMemFree`. + +Code analysis name: `ALLOCATION_DEALLOCATION_MISMATCH` + +## Example + +The following sample code generates warning C6278: + +```cpp +void f() { + int *pInt = (int *)calloc(10, sizeof(int)); + // code ... + delete pInt; // C26840: Memory allocated with 'calloc' is being deallocated with 'delete'. Use 'free' instead. +} + +void g() { + char * str = new char[50]; + // code ... + delete str; // C26840: Memory allocated with 'new[]' is being deallocated with 'delete'. Use 'delete[]' instead. +} +``` + +Manual memory management has many pitfalls in terms of memory leaks and exceptions. To avoid these kinds of potential leaks altogether, use the mechanisms that are provided by the C++ Standard Library (STL). These include [`shared_ptr`](../standard-library/shared-ptr-class.md), [`unique_ptr`](../standard-library/unique-ptr-class.md), and containers such as [`vector`](../standard-library/vector.md). For more information, see [Smart pointers](../cpp/smart-pointers-modern-cpp.md) and [C++ Standard Library](../standard-library/cpp-standard-library-reference.md). diff --git a/docs/code-quality/c6278.md b/docs/code-quality/c6278.md index 55e0ddb1a28..28732c2803b 100644 --- a/docs/code-quality/c6278.md +++ b/docs/code-quality/c6278.md @@ -9,6 +9,10 @@ helpviewer_keywords: ["C6278"] > '*variable*' is allocated with array new [], but deleted with scalar delete. Destructors will not be called. +## Notice + +Warning C6278 was removed in Visual Studio 18. Use the more generic warning [`C26840`](../code-quality/c26840.md) instead. + ## Remarks This warning appears only in C++ code and indicates that the calling function has inconsistently allocated memory with the array **`new []`** operator, but freed it with the scalar **`delete`** operator. This usage is undefined behavior according to the C++ standard and the Microsoft C++ implementation. diff --git a/docs/code-quality/c6279.md b/docs/code-quality/c6279.md index 8c9b92fc129..1bc960b991b 100644 --- a/docs/code-quality/c6279.md +++ b/docs/code-quality/c6279.md @@ -9,6 +9,12 @@ helpviewer_keywords: ["C6279"] > '*variable-name*' is allocated with scalar new, deleted with array delete [] +This warning appears only in C++ code and indicates that the calling function has inconsistently allocated memory with the scalar `new` operator, but freed it with the array `delete[]` operator. If memory is allocated with scalar `new`, it should typically be freed with scalar `delete`. + +## Notice + +Warning C6279 was removed in Visual Studio 18. Use the more generic warning [`C26840`](../code-quality/c26840.md) instead. + ## Remarks This warning appears only in C++ code and indicates that the calling function has inconsistently allocated memory with the scalar `new` operator, but freed it with the array `delete[]` operator. If memory is allocated with scalar `new`, it should typically be freed with scalar `delete`. diff --git a/docs/code-quality/c6280.md b/docs/code-quality/c6280.md index 0fa6146b704..65436df2366 100644 --- a/docs/code-quality/c6280.md +++ b/docs/code-quality/c6280.md @@ -9,6 +9,12 @@ helpviewer_keywords: ["C6280"] > '*variable-name*' is allocated with '*function-name-1*', but deleted with '*function-name-2*' +This warning indicates that the calling function has inconsistently allocated memory by using a function from one family and freed it by using a function from another. + +## Notice + +Warning C6280 was removed in Visual Studio 18. Use the more generic warning [`C26840`](../code-quality/c26840.md) instead. + ## Remarks This warning indicates that the calling function has inconsistently allocated memory by using a function from one family and freed it by using a function from another. diff --git a/docs/code-quality/c6283.md b/docs/code-quality/c6283.md index 4607e25d0ce..f4642ecb76c 100644 --- a/docs/code-quality/c6283.md +++ b/docs/code-quality/c6283.md @@ -9,6 +9,12 @@ helpviewer_keywords: ["C6283"] > '*variable-name*' is allocated with array new [], but deleted with scalar delete +This warning appears only in C++ code and indicates that the calling function has inconsistently allocated memory with the array `new []` operator, but freed it with the scalar `delete` operator. + +## Notice + +Warning C6283 was removed in Visual Studio 18. Use the more generic warning [`C26840`](../code-quality/c26840.md) instead. + ## Remarks This warning appears only in C++ code and indicates that the calling function has inconsistently allocated memory with the array `new []` operator, but freed it with the scalar `delete` operator. From 414dd27f9c1c53eeb64cb9728aa425f42d8b7788 Mon Sep 17 00:00:00 2001 From: Carson Radtke Date: Wed, 27 Aug 2025 10:41:23 -0600 Subject: [PATCH 1963/2255] address warnings from validation bot --- docs/code-quality/c26840.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/code-quality/c26840.md b/docs/code-quality/c26840.md index 7175588d5c2..b1ef90a944d 100644 --- a/docs/code-quality/c26840.md +++ b/docs/code-quality/c26840.md @@ -8,7 +8,7 @@ ms.assetid: 2fbe9dc5-fa43-47b9-97a7-3f8215da1d40 # TODO (@carsonradtke): I gener --- # Warning C26840 -> Memory allocated with '' is being deallocated with ''. Use '' instead. +> Memory allocated with '\' is being deallocated with '\'. Use '\' instead. ## Remarks From b5ebc65a7296f0063eae353dd5d878b1cf55178f Mon Sep 17 00:00:00 2001 From: Carson Radtke Date: Wed, 27 Aug 2025 10:46:44 -0600 Subject: [PATCH 1964/2255] modifications a higher acrolinx score --- docs/code-quality/c26840.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/code-quality/c26840.md b/docs/code-quality/c26840.md index b1ef90a944d..aaa020904d8 100644 --- a/docs/code-quality/c26840.md +++ b/docs/code-quality/c26840.md @@ -12,9 +12,9 @@ ms.assetid: 2fbe9dc5-fa43-47b9-97a7-3f8215da1d40 # TODO (@carsonradtke): I gener ## Remarks -This warning indicates that the calling function has inconsistently allocated memory with one family of allocation functions, but freed it was a deallocation function from a different family. This usage is undefined behavior according to the C++ standard and the Microsoft C++ implementation. +This warning indicates that the memory was allocated with one family of allocation functions, but was freed with a deallocation function from a different family. This usage is undefined behavior according to the C++ standard and the Microsoft C++ implementation. -The exact ramifications of this defect are difficult to predict. It might result in leaks for classes with destructors that perform memory de-allocation. It could cause inconsistent behavior for classes with destructors that perform some semantically significant operation, or memory corruptions and crashes when operators have been overridden. In other cases the mismatch might be unimportant, depending on the implementation of the compiler and its libraries. Analysis tools can't always distinguish between these situations. +The exact ramifications of this defect are difficult to predict. It might result in leaks for classes with destructors that perform memory deallocation. It could cause inconsistent behavior for classes with destructors that perform semantically significant operations, or memory corruptions and crashes. In other cases the mismatch might be unimportant, depending on the implementation of the compiler and its libraries. Analysis tools can not always distinguish between these situations. If memory is allocated with one family of allocation functions, it should be freed with a matching deallocation function. @@ -49,4 +49,4 @@ void g() { } ``` -Manual memory management has many pitfalls in terms of memory leaks and exceptions. To avoid these kinds of potential leaks altogether, use the mechanisms that are provided by the C++ Standard Library (STL). These include [`shared_ptr`](../standard-library/shared-ptr-class.md), [`unique_ptr`](../standard-library/unique-ptr-class.md), and containers such as [`vector`](../standard-library/vector.md). For more information, see [Smart pointers](../cpp/smart-pointers-modern-cpp.md) and [C++ Standard Library](../standard-library/cpp-standard-library-reference.md). +Manual memory management has many pitfalls in terms of memory leaks and exceptions. To avoid these kinds of potential leaks altogether, use the mechanisms that are provided by the C++ Standard Library (STL). These mechanisms include [`shared_ptr`](../standard-library/shared-ptr-class.md), [`unique_ptr`](../standard-library/unique-ptr-class.md), and containers such as [`vector`](../standard-library/vector.md). For more information, see [Smart pointers](../cpp/smart-pointers-modern-cpp.md) and [C++ Standard Library](../standard-library/cpp-standard-library-reference.md). From 98d4d95e77d676ab88a49e3432564ba261613642 Mon Sep 17 00:00:00 2001 From: Carson Radtke Date: Wed, 27 Aug 2025 10:52:34 -0600 Subject: [PATCH 1965/2255] fix last couple warning from bots --- docs/code-quality/c26840.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/code-quality/c26840.md b/docs/code-quality/c26840.md index aaa020904d8..bf20f3d5bf8 100644 --- a/docs/code-quality/c26840.md +++ b/docs/code-quality/c26840.md @@ -14,7 +14,7 @@ ms.assetid: 2fbe9dc5-fa43-47b9-97a7-3f8215da1d40 # TODO (@carsonradtke): I gener This warning indicates that the memory was allocated with one family of allocation functions, but was freed with a deallocation function from a different family. This usage is undefined behavior according to the C++ standard and the Microsoft C++ implementation. -The exact ramifications of this defect are difficult to predict. It might result in leaks for classes with destructors that perform memory deallocation. It could cause inconsistent behavior for classes with destructors that perform semantically significant operations, or memory corruptions and crashes. In other cases the mismatch might be unimportant, depending on the implementation of the compiler and its libraries. Analysis tools can not always distinguish between these situations. +The exact ramifications of this defect are difficult to predict. It might result in leaks for classes with destructors that perform memory deallocation. It could cause inconsistent behavior for classes with destructors that perform semantically significant operations, or memory corruptions and crashes. In other cases the mismatch might be unimportant, depending on the implementation of the compiler and its libraries. Analysis tools cannot always distinguish between these situations. If memory is allocated with one family of allocation functions, it should be freed with a matching deallocation function. @@ -27,7 +27,7 @@ C26840 covers the following allocation/deallocation pairs: - Windows `GlobalAlloc` must be deallocated with `GlobalFree`. - Windows `LocalAlloc` must be deallocated with `LocalFree`. - Windows `MIDL_user_allocate` must be deallocated with `MIDL_user_free`. -- COM `CoTaskMemAlloc` must be deallocated with `CoTaskMemFree`. +- Component Object Model (COM) `CoTaskMemAlloc` must be deallocated with `CoTaskMemFree`. Code analysis name: `ALLOCATION_DEALLOCATION_MISMATCH` From 1c0e97d26e13e24ed0b546de8799645cad98278e Mon Sep 17 00:00:00 2001 From: Carson Radtke Date: Wed, 27 Aug 2025 10:56:10 -0600 Subject: [PATCH 1966/2255] fix last warnin from bots --- docs/code-quality/c26840.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/code-quality/c26840.md b/docs/code-quality/c26840.md index bf20f3d5bf8..1ac16e5cb4d 100644 --- a/docs/code-quality/c26840.md +++ b/docs/code-quality/c26840.md @@ -14,7 +14,7 @@ ms.assetid: 2fbe9dc5-fa43-47b9-97a7-3f8215da1d40 # TODO (@carsonradtke): I gener This warning indicates that the memory was allocated with one family of allocation functions, but was freed with a deallocation function from a different family. This usage is undefined behavior according to the C++ standard and the Microsoft C++ implementation. -The exact ramifications of this defect are difficult to predict. It might result in leaks for classes with destructors that perform memory deallocation. It could cause inconsistent behavior for classes with destructors that perform semantically significant operations, or memory corruptions and crashes. In other cases the mismatch might be unimportant, depending on the implementation of the compiler and its libraries. Analysis tools cannot always distinguish between these situations. +The exact ramifications of this defect are difficult to predict. It might result in leaks for classes with destructors that perform memory deallocation. It could cause inconsistent behavior for classes with destructors that perform semantically significant operations, or memory corruptions and crashes. In other cases the mismatch might be unimportant, depending on the implementation of the compiler and its libraries. Analysis tools can't always distinguish between these situations. If memory is allocated with one family of allocation functions, it should be freed with a matching deallocation function. From 201a05153bd6b42a8bb8bd6e274dd3d5b650c090 Mon Sep 17 00:00:00 2001 From: Carson Radtke Date: Wed, 27 Aug 2025 11:01:40 -0600 Subject: [PATCH 1967/2255] warning is C26865, not C26840. oops --- docs/code-quality/c26840.md | 52 ------------------------------------- docs/code-quality/c6278.md | 2 +- docs/code-quality/c6279.md | 2 +- docs/code-quality/c6280.md | 2 +- docs/code-quality/c6283.md | 2 +- 5 files changed, 4 insertions(+), 56 deletions(-) delete mode 100644 docs/code-quality/c26840.md diff --git a/docs/code-quality/c26840.md b/docs/code-quality/c26840.md deleted file mode 100644 index 1ac16e5cb4d..00000000000 --- a/docs/code-quality/c26840.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -description: "Learn more about: Warning C26840" -title: Warning C26840 -ms.date: 10/03/2022 -f1_keywords: ["C26840", "ALLOCATION_DEALLOCATION_MISMATCH", "__WARNING_ALLOCATION_DEALLOCATION_MISMATCH"] -helpviewer_keywords: ["C26840"] -ms.assetid: 2fbe9dc5-fa43-47b9-97a7-3f8215da1d40 # TODO (@carsonradtke): I generated this with `PS > (New-Guid).ToString()`. Is that OK? ---- -# Warning C26840 - -> Memory allocated with '\' is being deallocated with '\'. Use '\' instead. - -## Remarks - -This warning indicates that the memory was allocated with one family of allocation functions, but was freed with a deallocation function from a different family. This usage is undefined behavior according to the C++ standard and the Microsoft C++ implementation. - -The exact ramifications of this defect are difficult to predict. It might result in leaks for classes with destructors that perform memory deallocation. It could cause inconsistent behavior for classes with destructors that perform semantically significant operations, or memory corruptions and crashes. In other cases the mismatch might be unimportant, depending on the implementation of the compiler and its libraries. Analysis tools can't always distinguish between these situations. - -If memory is allocated with one family of allocation functions, it should be freed with a matching deallocation function. - -C26840 covers the following allocation/deallocation pairs: - -- C++ scalar new (`new`) must be deallocated with scalar delete (`delete`). -- C++ array new (`new[]`) must be deallocated with array delete (`delete[]`). -- C/C++ `malloc`/`calloc`/`realloc` must be deallocated with `free` (or `realloc`). -- Windows `HeapAlloc` must be deallocated with `HeapFree`. -- Windows `GlobalAlloc` must be deallocated with `GlobalFree`. -- Windows `LocalAlloc` must be deallocated with `LocalFree`. -- Windows `MIDL_user_allocate` must be deallocated with `MIDL_user_free`. -- Component Object Model (COM) `CoTaskMemAlloc` must be deallocated with `CoTaskMemFree`. - -Code analysis name: `ALLOCATION_DEALLOCATION_MISMATCH` - -## Example - -The following sample code generates warning C6278: - -```cpp -void f() { - int *pInt = (int *)calloc(10, sizeof(int)); - // code ... - delete pInt; // C26840: Memory allocated with 'calloc' is being deallocated with 'delete'. Use 'free' instead. -} - -void g() { - char * str = new char[50]; - // code ... - delete str; // C26840: Memory allocated with 'new[]' is being deallocated with 'delete'. Use 'delete[]' instead. -} -``` - -Manual memory management has many pitfalls in terms of memory leaks and exceptions. To avoid these kinds of potential leaks altogether, use the mechanisms that are provided by the C++ Standard Library (STL). These mechanisms include [`shared_ptr`](../standard-library/shared-ptr-class.md), [`unique_ptr`](../standard-library/unique-ptr-class.md), and containers such as [`vector`](../standard-library/vector.md). For more information, see [Smart pointers](../cpp/smart-pointers-modern-cpp.md) and [C++ Standard Library](../standard-library/cpp-standard-library-reference.md). diff --git a/docs/code-quality/c6278.md b/docs/code-quality/c6278.md index 28732c2803b..0ca2e0f711e 100644 --- a/docs/code-quality/c6278.md +++ b/docs/code-quality/c6278.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["C6278"] ## Notice -Warning C6278 was removed in Visual Studio 18. Use the more generic warning [`C26840`](../code-quality/c26840.md) instead. +Warning C6278 was removed in Visual Studio 18. Use the more generic warning [`C26865`](../code-quality/C26865.md) instead. ## Remarks diff --git a/docs/code-quality/c6279.md b/docs/code-quality/c6279.md index 1bc960b991b..14e351303b0 100644 --- a/docs/code-quality/c6279.md +++ b/docs/code-quality/c6279.md @@ -13,7 +13,7 @@ This warning appears only in C++ code and indicates that the calling function ha ## Notice -Warning C6279 was removed in Visual Studio 18. Use the more generic warning [`C26840`](../code-quality/c26840.md) instead. +Warning C6279 was removed in Visual Studio 18. Use the more generic warning [`C26865`](../code-quality/C26865.md) instead. ## Remarks diff --git a/docs/code-quality/c6280.md b/docs/code-quality/c6280.md index 65436df2366..24563a216c3 100644 --- a/docs/code-quality/c6280.md +++ b/docs/code-quality/c6280.md @@ -13,7 +13,7 @@ This warning indicates that the calling function has inconsistently allocated me ## Notice -Warning C6280 was removed in Visual Studio 18. Use the more generic warning [`C26840`](../code-quality/c26840.md) instead. +Warning C6280 was removed in Visual Studio 18. Use the more generic warning [`C26865`](../code-quality/C26865.md) instead. ## Remarks diff --git a/docs/code-quality/c6283.md b/docs/code-quality/c6283.md index f4642ecb76c..b6df584e4ff 100644 --- a/docs/code-quality/c6283.md +++ b/docs/code-quality/c6283.md @@ -13,7 +13,7 @@ This warning appears only in C++ code and indicates that the calling function ha ## Notice -Warning C6283 was removed in Visual Studio 18. Use the more generic warning [`C26840`](../code-quality/c26840.md) instead. +Warning C6283 was removed in Visual Studio 18. Use the more generic warning [`C26865`](../code-quality/C26865.md) instead. ## Remarks From 96269665565f6822ac4d58300d028090915927e1 Mon Sep 17 00:00:00 2001 From: Carson Radtke Date: Wed, 27 Aug 2025 11:20:20 -0600 Subject: [PATCH 1968/2255] forgot to git add c26865.md --- docs/code-quality/c26865.md | 52 +++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 docs/code-quality/c26865.md diff --git a/docs/code-quality/c26865.md b/docs/code-quality/c26865.md new file mode 100644 index 00000000000..0e2c4f6268a --- /dev/null +++ b/docs/code-quality/c26865.md @@ -0,0 +1,52 @@ +--- +description: "Learn more about: Warning C26865" +title: Warning C26865 +ms.date: 10/03/2022 +f1_keywords: ["C26865", "ALLOCATION_DEALLOCATION_MISMATCH", "__WARNING_ALLOCATION_DEALLOCATION_MISMATCH"] +helpviewer_keywords: ["C26865"] +ms.assetid: 2fbe9dc5-fa43-47b9-97a7-3f8215da1d40 # TODO (@carsonradtke): I generated this with `PS > (New-Guid).ToString()`. Is that OK? +--- +# Warning C26865 + +> Memory allocated with '\' is being deallocated with '\'. Use '\' instead. + +## Remarks + +This warning indicates that the memory was allocated with one family of allocation functions, but was freed with a deallocation function from a different family. This usage is undefined behavior according to the C++ standard and the Microsoft C++ implementation. + +The exact ramifications of this defect are difficult to predict. It might result in leaks for classes with destructors that perform memory deallocation. It could cause inconsistent behavior for classes with destructors that perform semantically significant operations, or memory corruptions and crashes. In other cases the mismatch might be unimportant, depending on the implementation of the compiler and its libraries. Analysis tools can't always distinguish between these situations. + +If memory is allocated with one family of allocation functions, it should be freed with a matching deallocation function. + +C26865 covers the following allocation/deallocation pairs: + +- C++ scalar new (`new`) must be deallocated with scalar delete (`delete`). +- C++ array new (`new[]`) must be deallocated with array delete (`delete[]`). +- C/C++ `malloc`/`calloc`/`realloc` must be deallocated with `free` (or `realloc`). +- Windows `HeapAlloc` must be deallocated with `HeapFree`. +- Windows `GlobalAlloc` must be deallocated with `GlobalFree`. +- Windows `LocalAlloc` must be deallocated with `LocalFree`. +- Windows `MIDL_user_allocate` must be deallocated with `MIDL_user_free`. +- Component Object Model (COM) `CoTaskMemAlloc` must be deallocated with `CoTaskMemFree`. + +Code analysis name: `ALLOCATION_DEALLOCATION_MISMATCH` + +## Example + +The following sample code generates warning C26865: + +```cpp +void f() { + int *pInt = (int *)calloc(10, sizeof(int)); + // code ... + delete pInt; // C26865: Memory allocated with 'calloc' is being deallocated with 'delete'. Use 'free' instead. +} + +void g() { + char * str = new char[50]; + // code ... + delete str; // C26865: Memory allocated with 'new[]' is being deallocated with 'delete'. Use 'delete[]' instead. +} +``` + +Manual memory management has many pitfalls in terms of memory leaks and exceptions. To avoid these kinds of potential leaks altogether, use the mechanisms that are provided by the C++ Standard Library (STL). These mechanisms include [`shared_ptr`](../standard-library/shared-ptr-class.md), [`unique_ptr`](../standard-library/unique-ptr-class.md), and containers such as [`vector`](../standard-library/vector.md). For more information, see [Smart pointers](../cpp/smart-pointers-modern-cpp.md) and [C++ Standard Library](../standard-library/cpp-standard-library-reference.md). From 0a7a10333b6fdcc189c1d0a40037deac99c8e22b Mon Sep 17 00:00:00 2001 From: Carson Radtke Date: Wed, 1 Oct 2025 10:41:34 -0600 Subject: [PATCH 1969/2255] VS18 -> 2026 --- docs/code-quality/c6278.md | 2 +- docs/code-quality/c6279.md | 2 +- docs/code-quality/c6280.md | 2 +- docs/code-quality/c6283.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/code-quality/c6278.md b/docs/code-quality/c6278.md index 0ca2e0f711e..44f9604a392 100644 --- a/docs/code-quality/c6278.md +++ b/docs/code-quality/c6278.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["C6278"] ## Notice -Warning C6278 was removed in Visual Studio 18. Use the more generic warning [`C26865`](../code-quality/C26865.md) instead. +Warning C6278 was removed in Visual Studio 2026. Use the more generic warning [`C26865`](../code-quality/C26865.md) instead. ## Remarks diff --git a/docs/code-quality/c6279.md b/docs/code-quality/c6279.md index 14e351303b0..4107dd19b22 100644 --- a/docs/code-quality/c6279.md +++ b/docs/code-quality/c6279.md @@ -13,7 +13,7 @@ This warning appears only in C++ code and indicates that the calling function ha ## Notice -Warning C6279 was removed in Visual Studio 18. Use the more generic warning [`C26865`](../code-quality/C26865.md) instead. +Warning C6279 was removed in Visual Studio 2026. Use the more generic warning [`C26865`](../code-quality/C26865.md) instead. ## Remarks diff --git a/docs/code-quality/c6280.md b/docs/code-quality/c6280.md index 24563a216c3..8d30cbf344f 100644 --- a/docs/code-quality/c6280.md +++ b/docs/code-quality/c6280.md @@ -13,7 +13,7 @@ This warning indicates that the calling function has inconsistently allocated me ## Notice -Warning C6280 was removed in Visual Studio 18. Use the more generic warning [`C26865`](../code-quality/C26865.md) instead. +Warning C6280 was removed in Visual Studio 2026. Use the more generic warning [`C26865`](../code-quality/C26865.md) instead. ## Remarks diff --git a/docs/code-quality/c6283.md b/docs/code-quality/c6283.md index b6df584e4ff..5ae2a64d214 100644 --- a/docs/code-quality/c6283.md +++ b/docs/code-quality/c6283.md @@ -13,7 +13,7 @@ This warning appears only in C++ code and indicates that the calling function ha ## Notice -Warning C6283 was removed in Visual Studio 18. Use the more generic warning [`C26865`](../code-quality/C26865.md) instead. +Warning C6283 was removed in Visual Studio 2026. Use the more generic warning [`C26865`](../code-quality/C26865.md) instead. ## Remarks From 5dce96608911459b90dffb749fffda551b70c191 Mon Sep 17 00:00:00 2001 From: Carson Radtke Date: Wed, 1 Oct 2025 10:46:56 -0600 Subject: [PATCH 1970/2255] address various PR feedback --- docs/code-quality/c26865.md | 4 ++-- docs/code-quality/toc.yml | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/code-quality/c26865.md b/docs/code-quality/c26865.md index 0e2c4f6268a..172a0f79d29 100644 --- a/docs/code-quality/c26865.md +++ b/docs/code-quality/c26865.md @@ -4,7 +4,7 @@ title: Warning C26865 ms.date: 10/03/2022 f1_keywords: ["C26865", "ALLOCATION_DEALLOCATION_MISMATCH", "__WARNING_ALLOCATION_DEALLOCATION_MISMATCH"] helpviewer_keywords: ["C26865"] -ms.assetid: 2fbe9dc5-fa43-47b9-97a7-3f8215da1d40 # TODO (@carsonradtke): I generated this with `PS > (New-Guid).ToString()`. Is that OK? +ms.assetid: 2fbe9dc5-fa43-47b9-97a7-3f8215da1d40 --- # Warning C26865 @@ -12,7 +12,7 @@ ms.assetid: 2fbe9dc5-fa43-47b9-97a7-3f8215da1d40 # TODO (@carsonradtke): I gener ## Remarks -This warning indicates that the memory was allocated with one family of allocation functions, but was freed with a deallocation function from a different family. This usage is undefined behavior according to the C++ standard and the Microsoft C++ implementation. +This warning indicates that the memory was allocated with one family of allocation functions, but was freed with a deallocation function from a different family. This usage results in undefined behavior according to C/C++ and the Microsoft MSVC implementation. The exact ramifications of this defect are difficult to predict. It might result in leaks for classes with destructors that perform memory deallocation. It could cause inconsistent behavior for classes with destructors that perform semantically significant operations, or memory corruptions and crashes. In other cases the mismatch might be unimportant, depending on the implementation of the compiler and its libraries. Analysis tools can't always distinguish between these situations. diff --git a/docs/code-quality/toc.yml b/docs/code-quality/toc.yml index 61bafc57ca1..477bb054caa 100644 --- a/docs/code-quality/toc.yml +++ b/docs/code-quality/toc.yml @@ -661,6 +661,8 @@ items: href: ../code-quality/c26863.md - name: Warning C26864 href: ../code-quality/c26864.md + - name: Warning C26864 + href: ../code-quality/c26865.md - name: Warning C28020 href: ../code-quality/c28020.md - name: Warning C28021 From 76c6ddec0dd1804f21539f183cf3bf039cdfe1be Mon Sep 17 00:00:00 2001 From: Carson Radtke Date: Wed, 1 Oct 2025 10:48:47 -0600 Subject: [PATCH 1971/2255] mention when c26865 was added to VS --- docs/code-quality/c26865.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/code-quality/c26865.md b/docs/code-quality/c26865.md index 172a0f79d29..0e9bd9d213a 100644 --- a/docs/code-quality/c26865.md +++ b/docs/code-quality/c26865.md @@ -10,6 +10,8 @@ ms.assetid: 2fbe9dc5-fa43-47b9-97a7-3f8215da1d40 > Memory allocated with '\' is being deallocated with '\'. Use '\' instead. +This rule was added in Visual Studio 2026 18.0. + ## Remarks This warning indicates that the memory was allocated with one family of allocation functions, but was freed with a deallocation function from a different family. This usage results in undefined behavior according to C/C++ and the Microsoft MSVC implementation. From d6f6bd92d63a4abc3aa48972ea2f7dd5cb860070 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 1 Oct 2025 16:13:57 -0700 Subject: [PATCH 1972/2255] touch --- docs/standard-library/vectorized-stl-algorithms.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard-library/vectorized-stl-algorithms.md b/docs/standard-library/vectorized-stl-algorithms.md index df6b030e196..a71b3813405 100644 --- a/docs/standard-library/vectorized-stl-algorithms.md +++ b/docs/standard-library/vectorized-stl-algorithms.md @@ -1,7 +1,7 @@ --- title: "Vectorized STL Algorithms" description: "Learn more about: Vectorized STL Algorithms" -ms.date: 09/19/2025 +ms.date: 10/1/2025 f1_keywords: ["_USE_STD_VECTOR_ALGORITHMS", "_USE_STD_VECTOR_FLOATING_ALGORITHMS"] helpviewer_keywords: ["_USE_STD_VECTOR_ALGORITHMS", "_USE_STD_VECTOR_FLOATING_ALGORITHMS", "Vector Algorithms", "Vectorization", "SIMD"] --- From f8904208ab97b59070fe9c2aeb64adc5bf1ab9bd Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 1 Oct 2025 17:11:57 -0700 Subject: [PATCH 1973/2255] edit pass --- .../vectorized-stl-algorithms.md | 90 ++++++++----------- 1 file changed, 37 insertions(+), 53 deletions(-) diff --git a/docs/standard-library/vectorized-stl-algorithms.md b/docs/standard-library/vectorized-stl-algorithms.md index a71b3813405..6f5110236f7 100644 --- a/docs/standard-library/vectorized-stl-algorithms.md +++ b/docs/standard-library/vectorized-stl-algorithms.md @@ -7,89 +7,73 @@ helpviewer_keywords: ["_USE_STD_VECTOR_ALGORITHMS", "_USE_STD_VECTOR_FLOATING_AL --- # Vectorized STL Algorithms -Under certain conditions, STL algorithms execute not element-wise, but multiple elements at once on a single CPU core. This is possible due to SIMD (single instruction, multiple data). The use of such an approach instead of element-wise approach is called vectorization. An implementation that is not vectorized is called scalar. +Under specific conditions, algorithms in the C++ Standard Template Library (STL) can process multiple elements simultaneously on a single CPU core, rather than handling each element individually. This optimization leverages single instruction, multiple data (SIMD) instructions provided by the CPU, a technique known as vectorization. When this optimization isn't applied, the implementation is referred to as scalar. -The conditions for vectorization are: - - The container or range is contiguous. `array`, `vector`, and `basic_string` are contiguous containers, `span` and `basic_string_view` provide contiguous ranges. Built-in array elements also form contiguous ranges. In contrast, `list` and `map` are not contiguous containers. - - There are such SIMD instructions available for the target platform that implement the particular algorithm on particular element types efficiently. Often this is true for plain types (like built-in integers) and simple operations. - - Either of the following: - - The compiler is capable of emitting vectorized machine code for an implementation written as scalar code (auto-vectorization) - - The implementation itself is written as vectorized code (manual vectorization) +The conditions required for vectorization are: + - The container or range must be contiguous. Examples of contiguous containers include `array`, `vector`, and `basic_string`. Contiguous ranges are provided by types like `span` and `basic_string_view`. Built-in arrays also form contiguous ranges. In contrast, containers like `list` and `map` aren't contiguous. + - The target platform must support the necessary SIMD instructions to implement the algorithm for the element types. This is typically true for intrinsic types (like built-in integers) and simple operations. + - One of the following conditions must be met: + - The compiler can emit vectorized machine code for an implementation written as scalar code (auto-vectorization). + - The algorithm's implementation is explicitly written to use vectorized code (manual vectorization). -## Auto-vectorization in STL +## Auto-vectorization in the STL -See [Auto-Vectorizer](../parallel/auto-parallelization-and-auto-vectorization.md#auto-vectorizer) and the discussion of [`/arch`](../build/reference/arch-minimum-cpu-architecture.md) switch there. It applies to the STL implementation code the same way as to user code. +For more information about automatic vectorization, see [Auto-Vectorizer](../parallel/auto-parallelization-and-auto-vectorization.md#auto-vectorizer) and the discussion about in that article about the [`/arch`](../build/reference/arch-minimum-cpu-architecture.md) switch. This applies to the STL implementation code the same way as to user code. Algorithms like `transform`, `reduce`, `accumulate` heavily benefit from auto-vectorization. -## Manual vectorization in STL +## Manual vectorization in the STL -For x64 and x86 targets, certain algorithms have manual vectorization implemented. This implementation is separately compiled, and uses runtime CPU dispatch, so it is engaged on suitable CPUs only. +For x64 and x86, certain algorithms include manual vectorization. This implementation is separately compiled, and uses runtime CPU dispatch, so it's only used on suitable CPUs. -The manually vectorized algorithms use template meta-programming to detect the suitable element types, so they are only vectorized for simple types, like standard integer types. +Manually vectorized algorithms use template meta-programming to detect whether the element type is suitable for vectorization. As a result, they're only vectorized for simple types such as standard integer types. -Generally, programs either benefit in performance from this manual vectorization or are unaffected by it. In case of any problem, you can disable manual vectorization by defining the `_USE_STD_VECTOR_ALGORITHMS` macro set to 0. It defaults to 1 on x64 and x86, which means that manually vectorized algorithms are enabled by default. +Generally, programs either benefit in performance from this manual vectorization or are unaffected by it. You can disable manual vectorization with `#define _USE_STD_VECTOR_ALGORITHMS=0'. Manually vectorized algorithms are enabled by default on x64 and x86 because it defaults to 1 on those platforms. -When overriding `_USE_STD_VECTOR_ALGORITHMS` make sure to set the same value for all linked translation units that use algorithms. Reliable way to achieve that is using project properties rather than defining it in the source. See [/D (Preprocessor Definitions)](../build/reference/d-preprocessor-definitions.md) compiler option. +To set `_USE_STD_VECTOR_ALGORITHMS` ensure that it's set to the same value for all linked translation units that use algorithms. A reliable way to achieve this to set it using in the project properties instead of in source. For more information about how to do that, see [/D (Preprocessor Definitions)](../build/reference/d-preprocessor-definitions.md). -The following algorithms have manual vectorization controlled via `_USE_STD_VECTOR_ALGORITHMS` macro: - - `contains` - - `contains_subrange` - - `find` - - `find_last` - - `find_end` - - `find_first_of` - - `adjacent_find` +The following algorithms are manually vectorized and their behavior is controlled by the `_USE_STD_VECTOR_ALGORITHMS` macro: + - `contains`, `contains_subrange` + - `find`, `find_last`, `find_end`, `find_first_of`, `adjacent_find` - `count` - `mismatch` - - `search` - - `search_n` + - `search`, `search_n` - `swap_ranges` - `replace` - - `remove` - - `remove_copy` - - `unique` - - `unique_copy` - - `reverse` - - `reverse_copy` + - `remove`, `remove_copy` + - `unique`, `unique_copy` + - `reverse`, `reverse_copy` - `rotate` - - `is_sorted` - - `is_sorted_until` - - `max_element` - - `min_element` - - `minmax_element` - - `max` - - `min` - - `minmax` - - `lexicographical_compare` - - `lexicographical_compare_three_way` - -In addition to algorithms, the macro controls the manual vectorization of: + - `is_sorted`, `is_sorted_until` + - `lexicographical_compare`, `lexicographical_compare_three_way` + - `max`, `min`, `minmax` + - `max_element`, `min_element`, `minmax_element` + +In addition to algorithms, the `_USE_STD_VECTOR_ALGORITHMS` macro controls the manual vectorization of: + - `basic_string` and `basic_string_view` members: - `find` - `rfind` - - `find_first_of` - - `find_first_not_of` - - `find_last_of` - - `find_last_not_of` + - `find_first_of`, `find_first_not_of` + - `find_last_of`, `find_last_not_of` - `bitset` constructors from string and `bitset::to_string` ## Manually vectorized algorithms for floating point types -Vectorization of floating point types comes with extra difficulties: +Vectorization of floating point types requires additional considerations: - Vectorization may reorder operations, which can affect the precision of floating point results. - Floating point types may contain `NaN` values, which don't behave transitively on comparisons. - Floating point operations may raise exceptions. -The STL deals with the first two difficulties safely. Only `max_element`, `min_element`, `minmax_element`, `max`, `min`, `minmax`, `is_sorted`, and `is_sorted_until` are manually vectorized. These algorithms: - - Do not compute new floating point values, only compare the existing values, so different order does not affect precision. - - Because they are sorting algorithms, `NaNs` are not allowed amongst the operands. +The STL deals with the first two considerations safely. Only `max_element`, `min_element`, `minmax_element`, `max`, `min`, `minmax`, `is_sorted`, and `is_sorted_until` are manually vectorized. These algorithms: + - Don't compute new floating point values, only compare the existing values, so different order does not affect precision. + - Because they're sorting algorithms, `NaNs` isn't an allowed operand. -There's `_USE_STD_VECTOR_FLOATING_ALGORITHMS` to control the use of these vectorized algorithms for floating point types. Set it to 0 to disable the vectorization. The macro has no effect if `_USE_STD_VECTOR_ALGORITHMS` is set to 0. +Use `_USE_STD_VECTOR_FLOATING_ALGORITHMS` to control the use of these vectorized algorithms for floating point types. Set it to 0 to disable vectorization. `_USE_STD_VECTOR_FLOATING_ALGORITHMS` has no effect if `_USE_STD_VECTOR_ALGORITHMS` is set to 0. -`_USE_STD_VECTOR_FLOATING_ALGORITHMS` defaults to 0 when [`/fp:except`](../build/reference/fp-specify-floating-point-behavior.md#except) option is set. This is to avoid problems with exceptions. +`_USE_STD_VECTOR_FLOATING_ALGORITHMS` defaults to 0 when [`/fp:except`](../build/reference/fp-specify-floating-point-behavior.md#except) is set. -When overriding `_USE_STD_VECTOR_FLOATING_ALGORITHMS` make sure to set the same value for all linked translation units that use algorithms. Reliable way to achieve that is using project properties rather than defining it in the source. +To set `_USE_STD_VECTOR_FLOATING_ALGORITHMS` ensure that it's set to the same value for all linked translation units that use algorithms. A reliable way to achieve this to set it using in the project properties instead of in source. For more information about how to do that, see [/D (Preprocessor Definitions)](../build/reference/d-preprocessor-definitions.md). ## See also From bc3d9cf59086304f7b68802b3d66537b55139726 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 1 Oct 2025 17:39:24 -0700 Subject: [PATCH 1974/2255] edits --- docs/standard-library/vectorized-stl-algorithms.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/standard-library/vectorized-stl-algorithms.md b/docs/standard-library/vectorized-stl-algorithms.md index 6f5110236f7..cbfe7078965 100644 --- a/docs/standard-library/vectorized-stl-algorithms.md +++ b/docs/standard-library/vectorized-stl-algorithms.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["_USE_STD_VECTOR_ALGORITHMS", "_USE_STD_VECTOR_FLOATING_AL --- # Vectorized STL Algorithms -Under specific conditions, algorithms in the C++ Standard Template Library (STL) can process multiple elements simultaneously on a single CPU core, rather than handling each element individually. This optimization leverages single instruction, multiple data (SIMD) instructions provided by the CPU, a technique known as vectorization. When this optimization isn't applied, the implementation is referred to as scalar. +Under specific conditions, algorithms in the C++ Standard Template Library (STL) can process multiple elements simultaneously on a single CPU core, rather than handling each element individually. This optimization uses single instruction, multiple data (SIMD) instructions provided by the CPU, a technique known as vectorization. When this optimization isn't applied, the implementation is referred to as scalar. The conditions required for vectorization are: - The container or range must be contiguous. Examples of contiguous containers include `array`, `vector`, and `basic_string`. Contiguous ranges are provided by types like `span` and `basic_string_view`. Built-in arrays also form contiguous ranges. In contrast, containers like `list` and `map` aren't contiguous. @@ -24,15 +24,16 @@ Algorithms like `transform`, `reduce`, `accumulate` heavily benefit from auto-ve ## Manual vectorization in the STL -For x64 and x86, certain algorithms include manual vectorization. This implementation is separately compiled, and uses runtime CPU dispatch, so it's only used on suitable CPUs. +For x64 and x86, certain algorithms include manual vectorization. This implementation is separately compiled and relies on runtime CPU dispatch, so it applies only to suitable CPUs. Manually vectorized algorithms use template meta-programming to detect whether the element type is suitable for vectorization. As a result, they're only vectorized for simple types such as standard integer types. Generally, programs either benefit in performance from this manual vectorization or are unaffected by it. You can disable manual vectorization with `#define _USE_STD_VECTOR_ALGORITHMS=0'. Manually vectorized algorithms are enabled by default on x64 and x86 because it defaults to 1 on those platforms. -To set `_USE_STD_VECTOR_ALGORITHMS` ensure that it's set to the same value for all linked translation units that use algorithms. A reliable way to achieve this to set it using in the project properties instead of in source. For more information about how to do that, see [/D (Preprocessor Definitions)](../build/reference/d-preprocessor-definitions.md). +Ensure that you assign the same value to `_USE_STD_VECTOR_ALGORITHMS` for all linked translation units that use algorithms. A reliable way to do this is by configuring it in the project properties instead of in the source code. For more information about how to configure it, see [/D (Preprocessor Definitions)](../build/reference/d-preprocessor-definitions.md). -The following algorithms are manually vectorized and their behavior is controlled by the `_USE_STD_VECTOR_ALGORITHMS` macro: + +The `_USE_STD_VECTOR_ALGORITHMS` macro determines the behavior of the following manually vectorized algorithms: - `contains`, `contains_subrange` - `find`, `find_last`, `find_end`, `find_first_of`, `adjacent_find` - `count` @@ -60,7 +61,7 @@ In addition to algorithms, the `_USE_STD_VECTOR_ALGORITHMS` macro controls the m ## Manually vectorized algorithms for floating point types -Vectorization of floating point types requires additional considerations: +Vectorization of floating-point types involves specific considerations: - Vectorization may reorder operations, which can affect the precision of floating point results. - Floating point types may contain `NaN` values, which don't behave transitively on comparisons. - Floating point operations may raise exceptions. @@ -73,7 +74,7 @@ Use `_USE_STD_VECTOR_FLOATING_ALGORITHMS` to control the use of these vectorized `_USE_STD_VECTOR_FLOATING_ALGORITHMS` defaults to 0 when [`/fp:except`](../build/reference/fp-specify-floating-point-behavior.md#except) is set. -To set `_USE_STD_VECTOR_FLOATING_ALGORITHMS` ensure that it's set to the same value for all linked translation units that use algorithms. A reliable way to achieve this to set it using in the project properties instead of in source. For more information about how to do that, see [/D (Preprocessor Definitions)](../build/reference/d-preprocessor-definitions.md). +Ensure that you assign the same value to `_USE_STD_VECTOR_FLOATING_ALGORITHMS` for all linked translation units that use algorithms. A reliable way to do this is by configuring it in the project properties instead of in the source code. For more information about how to configure it, see [/D (Preprocessor Definitions)](../build/reference/d-preprocessor-definitions.md). ## See also From a5604957090df3838bdfaae137d785137b336816 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 1 Oct 2025 18:32:53 -0700 Subject: [PATCH 1975/2255] edits --- ...ctime32-ctime64-wctime-wctime32-wctime64.md | 18 +++++++++--------- ...ctime64-s-wctime-s-wctime32-s-wctime64-s.md | 4 ++-- .../difftime-difftime32-difftime64.md | 9 ++++----- .../reference/ftime-ftime32-ftime64.md | 4 ++-- .../reference/futime-futime32-futime64.md | 4 ++-- .../reference/gmtime-gmtime32-gmtime64.md | 2 +- .../gmtime-s-gmtime32-s-gmtime64-s.md | 2 +- .../localtime-localtime32-localtime64.md | 2 +- .../localtime-s-localtime32-s-localtime64-s.md | 2 +- .../mkgmtime-mkgmtime32-mkgmtime64.md | 2 +- .../reference/mktime-mktime32-mktime64.md | 2 +- .../reference/strnlen-strnlen-s.md | 4 ++-- .../reference/time-time32-time64.md | 2 +- ...espec-get-timespec32-get-timespec64-get1.md | 2 +- ...utime32-utime64-wutime-wutime32-wutime64.md | 2 +- 15 files changed, 30 insertions(+), 31 deletions(-) diff --git a/docs/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md b/docs/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md index f14ab2c8924..afaf3eb46b8 100644 --- a/docs/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md +++ b/docs/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md @@ -64,13 +64,13 @@ By default, this function's global state is scoped to the application. To change > [!Note] > Starting with Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are now declared as `inline` (external linkage).\ -> To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1`before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ +> To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ > This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ -> This applies to the following functions: ctime, _wctime +> This applies to the following functions: `ctime`, `_wctime` ### Generic-text routine mappings -| TCHAR.H routine | `_UNICODE` and `_MBCS` not defined | `_MBCS` defined | `_UNICODE` defined | +| `TCHAR.H` routine | `_UNICODE` and `_MBCS` not defined | `_MBCS` defined | `_UNICODE` defined | |---|---|---|---| | `_tctime` | **`ctime`** | **`ctime`** | **`_wctime`** | | `_tctime32` | **`_ctime32`** | **`_ctime32`** | **`_wctime32`** | @@ -80,12 +80,12 @@ By default, this function's global state is scoped to the application. To change | Routine | Required header | |---|---| -| **`ctime`** | \ | -| **`_ctime32`** | \ | -| **`_ctime64`** | \ | -| **`_wctime`** | \ or \ | -| **`_wctime32`** | \ or \ | -| **`_wctime64`** | \ or \ | +| **`ctime`** | `` | +| **`_ctime32`** | `` | +| **`_ctime64`** | `` | +| **`_wctime`** | `` or `` | +| **`_wctime32`** | `` or `` | +| **`_wctime64`** | `` or `` | For more compatibility information, see [Compatibility](../compatibility.md). diff --git a/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md b/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md index 669ca4102de..4f2921f1d44 100644 --- a/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md +++ b/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md @@ -126,9 +126,9 @@ By default, this function's global state is scoped to the application. To change > [!Note] > Starting with Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are now declared as `inline` (external linkage).\ -> To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1`before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ +> To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ > This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ -> This applies to the following functions: ctime_s, _wctime_s +> This applies to the following functions: `ctime_s`, `_wctime_s` ### Generic-text routine mappings diff --git a/docs/c-runtime-library/reference/difftime-difftime32-difftime64.md b/docs/c-runtime-library/reference/difftime-difftime32-difftime64.md index ef234072630..3748e01284f 100644 --- a/docs/c-runtime-library/reference/difftime-difftime32-difftime64.md +++ b/docs/c-runtime-library/reference/difftime-difftime32-difftime64.md @@ -8,7 +8,6 @@ api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["_difftime64", "difftime", "difftime64", "_difftime32", "difftime32"] helpviewer_keywords: ["_difftime32 function", "difftime function", "time, finding the difference", "difftime64 function", "_difftime64 function", "difftime32 function"] -ms.assetid: 4cc0ac2b-fc7b-42c0-8283-8c9d10c566d0 --- # `difftime`, `_difftime32`, `_difftime64` @@ -51,15 +50,15 @@ By default, this function's global state is scoped to the application. To change > You can opt-out of the change for your project by defining `_STATIC_INLINE_UCRT_FUNCTIONS=1`.\ > You can adopt the change early by defining `_STATIC_INLINE_UCRT_FUNCTIONS=0`.\ > This change improves conformance and helps avoid One Definition Rule (ODR) violations, especially when using modules.\ -> This applies to the following functions: difftime +> This applies to the following function: `difftime` ## Requirements | Routine | Required header | |---|---| -| **`difftime`** | \ | -| **`_difftime32`** | \ | -| **`_difftime64`** | \ | +| **`difftime`** | `` | +| **`_difftime32`** | `` | +| **`_difftime64`** | `` | For more compatibility information, see [Compatibility](../compatibility.md). diff --git a/docs/c-runtime-library/reference/ftime-ftime32-ftime64.md b/docs/c-runtime-library/reference/ftime-ftime32-ftime64.md index 692dfa3aa2a..49ff94a5f59 100644 --- a/docs/c-runtime-library/reference/ftime-ftime32-ftime64.md +++ b/docs/c-runtime-library/reference/ftime-ftime32-ftime64.md @@ -48,9 +48,9 @@ By default, this function's global state is scoped to the application. To change > [!Note] > Starting with Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are now declared as `inline` (external linkage).\ -> To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1`before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ +> To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ > This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ -> This applies to the following functions: _ftime +> This applies to the following function: _ftime ## Requirements diff --git a/docs/c-runtime-library/reference/futime-futime32-futime64.md b/docs/c-runtime-library/reference/futime-futime32-futime64.md index d43295df933..516c5d29ed3 100644 --- a/docs/c-runtime-library/reference/futime-futime32-futime64.md +++ b/docs/c-runtime-library/reference/futime-futime32-futime64.md @@ -53,9 +53,9 @@ By default, this function's global state is scoped to the application. To change > [!Note] > Starting with Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are now declared as `inline` (external linkage).\ -> To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1`before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ +> To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ > This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ -> This applies to the following functions: _futime +> This applies to the following function: `_futime` ## Requirements diff --git a/docs/c-runtime-library/reference/gmtime-gmtime32-gmtime64.md b/docs/c-runtime-library/reference/gmtime-gmtime32-gmtime64.md index 331aee5237a..e20714f43fc 100644 --- a/docs/c-runtime-library/reference/gmtime-gmtime32-gmtime64.md +++ b/docs/c-runtime-library/reference/gmtime-gmtime32-gmtime64.md @@ -61,7 +61,7 @@ By default, this function's global state is scoped to the application. To change > You can opt-out of the change for your project by defining `_STATIC_INLINE_UCRT_FUNCTIONS=1`.\ > You can adopt the change early by defining `_STATIC_INLINE_UCRT_FUNCTIONS=0`.\ > This change improves conformance and helps avoid One Definition Rule (ODR) violations, especially when using modules.\ -> This applies to the following functions: gmtime +> This applies to the following function: `gmtime` ## Requirements diff --git a/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md b/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md index 4510a2090bf..08e47287e5a 100644 --- a/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md +++ b/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md @@ -81,7 +81,7 @@ By default, this function's global state is scoped to the application. To change > You can opt-out of the change for your project by defining `_STATIC_INLINE_UCRT_FUNCTIONS=1`.\ > You can adopt the change early by defining `_STATIC_INLINE_UCRT_FUNCTIONS=0`.\ > This change improves conformance and helps avoid One Definition Rule (ODR) violations, especially when using modules.\ -> This applies to the following functions: gmtime_s +> This applies to the following function: `gmtime_s` ## Requirements diff --git a/docs/c-runtime-library/reference/localtime-localtime32-localtime64.md b/docs/c-runtime-library/reference/localtime-localtime32-localtime64.md index c3c19a20dcc..bdc4a3d545b 100644 --- a/docs/c-runtime-library/reference/localtime-localtime32-localtime64.md +++ b/docs/c-runtime-library/reference/localtime-localtime32-localtime64.md @@ -77,7 +77,7 @@ By default, this function's global state is scoped to the application. To change > You can opt-out of the change for your project by defining `_STATIC_INLINE_UCRT_FUNCTIONS=1`.\ > You can adopt the change early by defining `_STATIC_INLINE_UCRT_FUNCTIONS=0`.\ > This change improves conformance and helps avoid One Definition Rule (ODR) violations, especially when using modules.\ -> This applies to the following functions: localtime +> This applies to the following function: `localtime` ## Requirements diff --git a/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md b/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md index 943d9fa96db..0ed83432d92 100644 --- a/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md +++ b/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md @@ -89,7 +89,7 @@ By default, this function's global state is scoped to the application. To change > You can opt-out of the change for your project by defining `_STATIC_INLINE_UCRT_FUNCTIONS=1`.\ > You can adopt the change early by defining `_STATIC_INLINE_UCRT_FUNCTIONS=0`.\ > This change improves conformance and helps avoid One Definition Rule (ODR) violations, especially when using modules.\ -> This applies to the following functions: localtime_s +> This applies to the following function: `localtime_s` ## Requirements diff --git a/docs/c-runtime-library/reference/mkgmtime-mkgmtime32-mkgmtime64.md b/docs/c-runtime-library/reference/mkgmtime-mkgmtime32-mkgmtime64.md index d7970373b52..01a0c7f841e 100644 --- a/docs/c-runtime-library/reference/mkgmtime-mkgmtime32-mkgmtime64.md +++ b/docs/c-runtime-library/reference/mkgmtime-mkgmtime32-mkgmtime64.md @@ -53,7 +53,7 @@ Both **`gmtime`** and **`localtime`** use a common static buffer for the convers > You can opt-out of the change for your project by defining `_STATIC_INLINE_UCRT_FUNCTIONS=1`.\ > You can adopt the change early by defining `_STATIC_INLINE_UCRT_FUNCTIONS=0`.\ > This change improves conformance and helps avoid One Definition Rule (ODR) violations, especially when using modules.\ -> This applies to the following functions: _mkgmtime +> This applies to the following function: `_mkgmtime` ## Examples diff --git a/docs/c-runtime-library/reference/mktime-mktime32-mktime64.md b/docs/c-runtime-library/reference/mktime-mktime32-mktime64.md index 13214c3d9f4..e59f3af154e 100644 --- a/docs/c-runtime-library/reference/mktime-mktime32-mktime64.md +++ b/docs/c-runtime-library/reference/mktime-mktime32-mktime64.md @@ -67,7 +67,7 @@ By default, this function's global state is scoped to the application. To change > You can opt-out of the change for your project by defining `_STATIC_INLINE_UCRT_FUNCTIONS=1`.\ > You can adopt the change early by defining `_STATIC_INLINE_UCRT_FUNCTIONS=0`.\ > This change improves conformance and helps avoid One Definition Rule (ODR) violations, especially when using modules.\ -> This applies to the following functions: mktime +> This applies to the following function: `mktime` ## Requirements diff --git a/docs/c-runtime-library/reference/strnlen-strnlen-s.md b/docs/c-runtime-library/reference/strnlen-strnlen-s.md index 9be6378f434..aaed1512438 100644 --- a/docs/c-runtime-library/reference/strnlen-strnlen-s.md +++ b/docs/c-runtime-library/reference/strnlen-strnlen-s.md @@ -90,9 +90,9 @@ By default, this function's global state is scoped to the application. To change > [!Note] > Starting with Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are now declared as `inline` (external linkage).\ -> To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1`before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ +> To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ > This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ -> This applies to the following functions: strnlen_s, wcsnlen_s +> This applies to the following functions: `strnlen_s`, `wcsnlen_s` ### Generic-text routine mappings diff --git a/docs/c-runtime-library/reference/time-time32-time64.md b/docs/c-runtime-library/reference/time-time32-time64.md index e6618981943..039dd0766a0 100644 --- a/docs/c-runtime-library/reference/time-time32-time64.md +++ b/docs/c-runtime-library/reference/time-time32-time64.md @@ -42,7 +42,7 @@ The **`time`** function returns the number of seconds elapsed since midnight (00 > You can opt-out of the change for your project by defining `_STATIC_INLINE_UCRT_FUNCTIONS=1`.\ > You can adopt the change early by defining `_STATIC_INLINE_UCRT_FUNCTIONS=0`.\ > This change improves conformance and helps avoid One Definition Rule (ODR) violations, especially when using modules.\ -> This applies to the following functions: time +> This applies to the following function: `time` ## Requirements diff --git a/docs/c-runtime-library/reference/timespec-get-timespec32-get-timespec64-get1.md b/docs/c-runtime-library/reference/timespec-get-timespec32-get-timespec64-get1.md index 7f77bc722ea..101fb52c6b9 100644 --- a/docs/c-runtime-library/reference/timespec-get-timespec32-get-timespec64-get1.md +++ b/docs/c-runtime-library/reference/timespec-get-timespec32-get-timespec64-get1.md @@ -60,7 +60,7 @@ By default, this function's global state is scoped to the application. To change > You can opt-out of the change for your project by defining `_STATIC_INLINE_UCRT_FUNCTIONS=1`.\ > You can adopt the change early by defining `_STATIC_INLINE_UCRT_FUNCTIONS=0`.\ > This change improves conformance and helps avoid One Definition Rule (ODR) violations, especially when using modules.\ -> This applies to the following functions: timespec_get +> This applies to the following function: `timespec_get` ## Requirements diff --git a/docs/c-runtime-library/reference/utime-utime32-utime64-wutime-wutime32-wutime64.md b/docs/c-runtime-library/reference/utime-utime32-utime64-wutime-wutime32-wutime64.md index 7f57cbfe0bb..f12ecd9a9dd 100644 --- a/docs/c-runtime-library/reference/utime-utime32-utime64-wutime-wutime32-wutime64.md +++ b/docs/c-runtime-library/reference/utime-utime32-utime64-wutime-wutime32-wutime64.md @@ -90,7 +90,7 @@ By default, this function's global state is scoped to the application. To change > You can opt-out of the change for your project by defining `_STATIC_INLINE_UCRT_FUNCTIONS=1`.\ > You can adopt the change early by defining `_STATIC_INLINE_UCRT_FUNCTIONS=0`.\ > This change improves conformance and helps avoid One Definition Rule (ODR) violations, especially when using modules.\ -> This applies to the following functions: _utime, _wutime +> This applies to the following functions: `_utime`, `_wutime` ### Generic-text routine mappings From cffe2080657d7f058f9564f119ac50c738d84739 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 1 Oct 2025 18:57:35 -0700 Subject: [PATCH 1976/2255] remove changes from _fstat and _stat --- ...stat-fstat32-fstat64-fstati64-fstat32i64-fstat64i32.md | 8 +------- docs/c-runtime-library/reference/stat-functions.md | 8 +------- 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/docs/c-runtime-library/reference/fstat-fstat32-fstat64-fstati64-fstat32i64-fstat64i32.md b/docs/c-runtime-library/reference/fstat-fstat32-fstat64-fstati64-fstat32i64-fstat64i32.md index 1d9c6e67532..41ce094bccc 100644 --- a/docs/c-runtime-library/reference/fstat-fstat32-fstat64-fstati64-fstat32i64-fstat64i32.md +++ b/docs/c-runtime-library/reference/fstat-fstat32-fstat64-fstati64-fstat32i64-fstat64i32.md @@ -16,7 +16,7 @@ Gets information about an open file. ## Syntax ```C -int _fstat( // See note in remarks section about linkage +int _fstat( int fd, struct _stat *buffer ); @@ -81,12 +81,6 @@ Unless `_USE_32BIT_TIME_T` is defined, **`_fstat`** is equivalent to **`_fstat64 By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). -> [!Note] -> Starting with Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are now declared as `inline` (external linkage).\ -> To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1`before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ -> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ -> This applies to the following functions: _fstat - ### Time type and file length type variations of `_stat` | Functions | `_USE_32BIT_TIME_T` defined? | Time type | File length type | diff --git a/docs/c-runtime-library/reference/stat-functions.md b/docs/c-runtime-library/reference/stat-functions.md index cf2f96d442f..b1a5efc58ff 100644 --- a/docs/c-runtime-library/reference/stat-functions.md +++ b/docs/c-runtime-library/reference/stat-functions.md @@ -16,7 +16,7 @@ Get status information on a file. ## Syntax ```C -int _stat( // See note in remarks section about linkage +int _stat( const char *path, struct _stat *buffer ); @@ -100,12 +100,6 @@ This function validates its parameters. If either *`path`* or *`buffer`* is `NUL By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). -> [!Note] -> Starting with Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are now declared as `inline` (external linkage).\ -> To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1`before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ -> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ -> This applies to the following functions: _stat - ### Time type and file length type variations of `_stat` | Functions | `_USE_32BIT_TIME_T` defined | Time type | File length type | From 09cc7d71af0dc5f64a18586ee9b1d67f1ab93251 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 1 Oct 2025 19:21:17 -0700 Subject: [PATCH 1977/2255] remove another --- docs/c-runtime-library/reference/ftime-ftime32-ftime64.md | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/docs/c-runtime-library/reference/ftime-ftime32-ftime64.md b/docs/c-runtime-library/reference/ftime-ftime32-ftime64.md index 49ff94a5f59..7cb0247f80a 100644 --- a/docs/c-runtime-library/reference/ftime-ftime32-ftime64.md +++ b/docs/c-runtime-library/reference/ftime-ftime32-ftime64.md @@ -17,7 +17,7 @@ Get the current time. More secure versions of these functions are available; see ## Syntax ```C -void _ftime( struct _timeb *timeptr ); // See note in remarks section about linkage +void _ftime( struct _timeb *timeptr ); void _ftime32( struct __timeb32 *timeptr ); void _ftime64( struct __timeb64 *timeptr ); ``` @@ -46,12 +46,6 @@ The **`_ftime`** function is equivalent to **`_ftime64`**, and `_timeb` contains By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). -> [!Note] -> Starting with Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are now declared as `inline` (external linkage).\ -> To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ -> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ -> This applies to the following function: _ftime - ## Requirements | Function | Required header | From 279a1dc0830a2454e2b86c17d8ef0a8da345815b Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 3 Oct 2025 10:30:33 -0700 Subject: [PATCH 1978/2255] tech review --- docs/standard-library/vectorized-stl-algorithms.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/standard-library/vectorized-stl-algorithms.md b/docs/standard-library/vectorized-stl-algorithms.md index cbfe7078965..9e2ce9826a4 100644 --- a/docs/standard-library/vectorized-stl-algorithms.md +++ b/docs/standard-library/vectorized-stl-algorithms.md @@ -1,7 +1,7 @@ --- title: "Vectorized STL Algorithms" description: "Learn more about: Vectorized STL Algorithms" -ms.date: 10/1/2025 +ms.date: 10/03/2025 f1_keywords: ["_USE_STD_VECTOR_ALGORITHMS", "_USE_STD_VECTOR_FLOATING_ALGORITHMS"] helpviewer_keywords: ["_USE_STD_VECTOR_ALGORITHMS", "_USE_STD_VECTOR_FLOATING_ALGORITHMS", "Vector Algorithms", "Vectorization", "SIMD"] --- @@ -11,14 +11,14 @@ Under specific conditions, algorithms in the C++ Standard Template Library (STL) The conditions required for vectorization are: - The container or range must be contiguous. Examples of contiguous containers include `array`, `vector`, and `basic_string`. Contiguous ranges are provided by types like `span` and `basic_string_view`. Built-in arrays also form contiguous ranges. In contrast, containers like `list` and `map` aren't contiguous. - - The target platform must support the necessary SIMD instructions to implement the algorithm for the element types. This is typically true for intrinsic types (like built-in integers) and simple operations. + - The target platform must support the necessary SIMD instructions to implement the algorithm for the element types. This is typically true for arithmetic types and simple operations. - One of the following conditions must be met: - The compiler can emit vectorized machine code for an implementation written as scalar code (auto-vectorization). - The algorithm's implementation is explicitly written to use vectorized code (manual vectorization). ## Auto-vectorization in the STL -For more information about automatic vectorization, see [Auto-Vectorizer](../parallel/auto-parallelization-and-auto-vectorization.md#auto-vectorizer) and the discussion about in that article about the [`/arch`](../build/reference/arch-minimum-cpu-architecture.md) switch. This applies to the STL implementation code the same way as to user code. +For more information about automatic vectorization, see [Auto-Vectorizer](../parallel/auto-parallelization-and-auto-vectorization.md#auto-vectorizer) and the discussion in that article about the [`/arch`](../build/reference/arch-minimum-cpu-architecture.md) switch. This applies to the STL implementation code the same way it does to user code. Algorithms like `transform`, `reduce`, `accumulate` heavily benefit from auto-vectorization. @@ -28,7 +28,7 @@ For x64 and x86, certain algorithms include manual vectorization. This implement Manually vectorized algorithms use template meta-programming to detect whether the element type is suitable for vectorization. As a result, they're only vectorized for simple types such as standard integer types. -Generally, programs either benefit in performance from this manual vectorization or are unaffected by it. You can disable manual vectorization with `#define _USE_STD_VECTOR_ALGORITHMS=0'. Manually vectorized algorithms are enabled by default on x64 and x86 because it defaults to 1 on those platforms. +Generally, programs either benefit in performance from this manual vectorization or are unaffected by it. You can disable manual vectorization by defining `_USE_STD_VECTOR_ALGORITHMS=0` in your project. Manually vectorized algorithms are enabled by default on x64 and x86 because it defaults to 1 on those platforms. Ensure that you assign the same value to `_USE_STD_VECTOR_ALGORITHMS` for all linked translation units that use algorithms. A reliable way to do this is by configuring it in the project properties instead of in the source code. For more information about how to configure it, see [/D (Preprocessor Definitions)](../build/reference/d-preprocessor-definitions.md). @@ -67,8 +67,8 @@ Vectorization of floating-point types involves specific considerations: - Floating point operations may raise exceptions. The STL deals with the first two considerations safely. Only `max_element`, `min_element`, `minmax_element`, `max`, `min`, `minmax`, `is_sorted`, and `is_sorted_until` are manually vectorized. These algorithms: - - Don't compute new floating point values, only compare the existing values, so different order does not affect precision. - - Because they're sorting algorithms, `NaNs` isn't an allowed operand. +- Avoid computing new floating-point values; instead, they compare existing values to ensure that differences in operation order don't impact precision. +- Since these are sorting algorithms, `NaN` values aren't allowed inputs. Use `_USE_STD_VECTOR_FLOATING_ALGORITHMS` to control the use of these vectorized algorithms for floating point types. Set it to 0 to disable vectorization. `_USE_STD_VECTOR_FLOATING_ALGORITHMS` has no effect if `_USE_STD_VECTOR_ALGORITHMS` is set to 0. From 27b7e12a1fb239c83d845c68979b3e86f65f7c00 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 3 Oct 2025 10:33:06 -0700 Subject: [PATCH 1979/2255] edit --- docs/standard-library/vectorized-stl-algorithms.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard-library/vectorized-stl-algorithms.md b/docs/standard-library/vectorized-stl-algorithms.md index 9e2ce9826a4..47356b389ff 100644 --- a/docs/standard-library/vectorized-stl-algorithms.md +++ b/docs/standard-library/vectorized-stl-algorithms.md @@ -67,7 +67,7 @@ Vectorization of floating-point types involves specific considerations: - Floating point operations may raise exceptions. The STL deals with the first two considerations safely. Only `max_element`, `min_element`, `minmax_element`, `max`, `min`, `minmax`, `is_sorted`, and `is_sorted_until` are manually vectorized. These algorithms: -- Avoid computing new floating-point values; instead, they compare existing values to ensure that differences in operation order don't impact precision. +- Don’t compute new floating-point values. Instead, they only compare existing values to ensure that differences in operation order don't impact precision. - Since these are sorting algorithms, `NaN` values aren't allowed inputs. Use `_USE_STD_VECTOR_FLOATING_ALGORITHMS` to control the use of these vectorized algorithms for floating point types. Set it to 0 to disable vectorization. `_USE_STD_VECTOR_FLOATING_ALGORITHMS` has no effect if `_USE_STD_VECTOR_ALGORITHMS` is set to 0. From 70e0fe5f1be98ba9d1fdf412cd383dbb785e01a3 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 3 Oct 2025 10:56:48 -0700 Subject: [PATCH 1980/2255] edit pass --- .../vectorized-stl-algorithms.md | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/standard-library/vectorized-stl-algorithms.md b/docs/standard-library/vectorized-stl-algorithms.md index 47356b389ff..ff4bceb6546 100644 --- a/docs/standard-library/vectorized-stl-algorithms.md +++ b/docs/standard-library/vectorized-stl-algorithms.md @@ -7,33 +7,33 @@ helpviewer_keywords: ["_USE_STD_VECTOR_ALGORITHMS", "_USE_STD_VECTOR_FLOATING_AL --- # Vectorized STL Algorithms -Under specific conditions, algorithms in the C++ Standard Template Library (STL) can process multiple elements simultaneously on a single CPU core, rather than handling each element individually. This optimization uses single instruction, multiple data (SIMD) instructions provided by the CPU, a technique known as vectorization. When this optimization isn't applied, the implementation is referred to as scalar. +Under specific conditions, algorithms in the C++ Standard Template Library (STL) can process multiple elements simultaneously on a single CPU core, rather than handling each element individually. This optimization uses single instruction, multiple data (SIMD) instructions provided by the CPU, a technique called vectorization. When this optimization isn't applied, the implementation is referred to as scalar. The conditions required for vectorization are: - - The container or range must be contiguous. Examples of contiguous containers include `array`, `vector`, and `basic_string`. Contiguous ranges are provided by types like `span` and `basic_string_view`. Built-in arrays also form contiguous ranges. In contrast, containers like `list` and `map` aren't contiguous. + - The container or range must be contiguous. Examples include `array`, `vector`, and `basic_string`. Types like `span` and `basic_string_view` provide contiguous ranges. Built-in arrays also form contiguous ranges. Containers like `list` and `map` aren't contiguous. - The target platform must support the necessary SIMD instructions to implement the algorithm for the element types. This is typically true for arithmetic types and simple operations. - - One of the following conditions must be met: + - One of these conditions must be met: - The compiler can emit vectorized machine code for an implementation written as scalar code (auto-vectorization). - - The algorithm's implementation is explicitly written to use vectorized code (manual vectorization). + - The algorithm's implementation explicitly uses vectorized code (manual vectorization). ## Auto-vectorization in the STL -For more information about automatic vectorization, see [Auto-Vectorizer](../parallel/auto-parallelization-and-auto-vectorization.md#auto-vectorizer) and the discussion in that article about the [`/arch`](../build/reference/arch-minimum-cpu-architecture.md) switch. This applies to the STL implementation code the same way it does to user code. +For more information about automatic vectorization, see [Auto-Vectorizer](../parallel/auto-parallelization-and-auto-vectorization.md#auto-vectorizer) and the discussion in that article about the [`/arch`](../build/reference/arch-minimum-cpu-architecture.md) switch. This applies to the STL implementation code the same way it applies to user code. -Algorithms like `transform`, `reduce`, `accumulate` heavily benefit from auto-vectorization. +Algorithms like `transform`, `reduce`, and `accumulate` heavily benefit from auto-vectorization. ## Manual vectorization in the STL -For x64 and x86, certain algorithms include manual vectorization. This implementation is separately compiled and relies on runtime CPU dispatch, so it applies only to suitable CPUs. +Certain algorithms for x64 and x86 include manual vectorization. This implementation is separately compiled and relies on runtime CPU dispatch, so it applies only to suitable CPUs. -Manually vectorized algorithms use template meta-programming to detect whether the element type is suitable for vectorization. As a result, they're only vectorized for simple types such as standard integer types. +Manually vectorized algorithms use template metaprogramming to detect if the element type is suitable for vectorization. As a result, they're only vectorized for simple types such as standard integer types. -Generally, programs either benefit in performance from this manual vectorization or are unaffected by it. You can disable manual vectorization by defining `_USE_STD_VECTOR_ALGORITHMS=0` in your project. Manually vectorized algorithms are enabled by default on x64 and x86 because it defaults to 1 on those platforms. +Programs generally either benefit in performance from manual vectorization or remain unaffected by it. Disable manual vectorization by defining `_USE_STD_VECTOR_ALGORITHMS=0` in your project. Manually vectorized algorithms are enabled by default on x64 and x86 because it defaults to 1 on those platforms. -Ensure that you assign the same value to `_USE_STD_VECTOR_ALGORITHMS` for all linked translation units that use algorithms. A reliable way to do this is by configuring it in the project properties instead of in the source code. For more information about how to configure it, see [/D (Preprocessor Definitions)](../build/reference/d-preprocessor-definitions.md). +Assign the same value to `_USE_STD_VECTOR_ALGORITHMS` for all linked translation units that use algorithms. Configure it in the project properties instead of in the source code for consistency. For more information about how to configure it, see [/D (Preprocessor Definitions)](../build/reference/d-preprocessor-definitions.md). -The `_USE_STD_VECTOR_ALGORITHMS` macro determines the behavior of the following manually vectorized algorithms: +The `_USE_STD_VECTOR_ALGORITHMS` macro controls the behavior of these manually vectorized algorithms: - `contains`, `contains_subrange` - `find`, `find_last`, `find_end`, `find_first_of`, `adjacent_find` - `count` @@ -50,7 +50,7 @@ The `_USE_STD_VECTOR_ALGORITHMS` macro determines the behavior of the following - `max`, `min`, `minmax` - `max_element`, `min_element`, `minmax_element` -In addition to algorithms, the `_USE_STD_VECTOR_ALGORITHMS` macro controls the manual vectorization of: +The `_USE_STD_VECTOR_ALGORITHMS` macro also controls the manual vectorization of: - `basic_string` and `basic_string_view` members: - `find` @@ -62,19 +62,19 @@ In addition to algorithms, the `_USE_STD_VECTOR_ALGORITHMS` macro controls the m ## Manually vectorized algorithms for floating point types Vectorization of floating-point types involves specific considerations: - - Vectorization may reorder operations, which can affect the precision of floating point results. - - Floating point types may contain `NaN` values, which don't behave transitively on comparisons. - - Floating point operations may raise exceptions. + - Vectorization might reorder operations, which can affect the precision of floating-point results. + - Floating-point types might contain `NaN` values, which don't behave transitively in comparisons. + - Floating-point operations might raise exceptions. -The STL deals with the first two considerations safely. Only `max_element`, `min_element`, `minmax_element`, `max`, `min`, `minmax`, `is_sorted`, and `is_sorted_until` are manually vectorized. These algorithms: -- Don’t compute new floating-point values. Instead, they only compare existing values to ensure that differences in operation order don't impact precision. -- Since these are sorting algorithms, `NaN` values aren't allowed inputs. +The STL addresses the first two considerations safely. Only `max_element`, `min_element`, `minmax_element`, `max`, `min`, `minmax`, `is_sorted`, and `is_sorted_until` are manually vectorized. These algorithms: +- Don’t compute new floating-point values. Instead, they compare existing values to ensure that differences in operation order don't impact precision. +- Because these are sorting algorithms, `NaN` values aren't allowed as inputs. -Use `_USE_STD_VECTOR_FLOATING_ALGORITHMS` to control the use of these vectorized algorithms for floating point types. Set it to 0 to disable vectorization. `_USE_STD_VECTOR_FLOATING_ALGORITHMS` has no effect if `_USE_STD_VECTOR_ALGORITHMS` is set to 0. +Use `_USE_STD_VECTOR_FLOATING_ALGORITHMS` to control the use of these vectorized algorithms for floating-point types. Set it to 0 to disable vectorization. `_USE_STD_VECTOR_FLOATING_ALGORITHMS` doesn't affect anything if `_USE_STD_VECTOR_ALGORITHMS` is set to 0. `_USE_STD_VECTOR_FLOATING_ALGORITHMS` defaults to 0 when [`/fp:except`](../build/reference/fp-specify-floating-point-behavior.md#except) is set. -Ensure that you assign the same value to `_USE_STD_VECTOR_FLOATING_ALGORITHMS` for all linked translation units that use algorithms. A reliable way to do this is by configuring it in the project properties instead of in the source code. For more information about how to configure it, see [/D (Preprocessor Definitions)](../build/reference/d-preprocessor-definitions.md). +Assign the same value to `_USE_STD_VECTOR_FLOATING_ALGORITHMS` for all linked translation units that use algorithms. Configure it in the project properties instead of in the source code for consistency. For more information about how to configure it, see [/D (Preprocessor Definitions)](../build/reference/d-preprocessor-definitions.md). ## See also From 3b81dc015a69fb2279169bc0b48ef1c3411685b1 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 3 Oct 2025 11:11:56 -0700 Subject: [PATCH 1981/2255] last small edits --- docs/standard-library/vectorized-stl-algorithms.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/standard-library/vectorized-stl-algorithms.md b/docs/standard-library/vectorized-stl-algorithms.md index ff4bceb6546..958b852db64 100644 --- a/docs/standard-library/vectorized-stl-algorithms.md +++ b/docs/standard-library/vectorized-stl-algorithms.md @@ -7,20 +7,20 @@ helpviewer_keywords: ["_USE_STD_VECTOR_ALGORITHMS", "_USE_STD_VECTOR_FLOATING_AL --- # Vectorized STL Algorithms -Under specific conditions, algorithms in the C++ Standard Template Library (STL) can process multiple elements simultaneously on a single CPU core, rather than handling each element individually. This optimization uses single instruction, multiple data (SIMD) instructions provided by the CPU, a technique called vectorization. When this optimization isn't applied, the implementation is referred to as scalar. +Under specific conditions, algorithms in the MSVC Standard Template Library (STL) can process multiple elements simultaneously on a single CPU core, rather than handling each element individually. This optimization uses single instruction, multiple data (SIMD) instructions provided by the CPU, a technique called vectorization. When this optimization isn't applied, the implementation is referred to as scalar. The conditions required for vectorization are: - The container or range must be contiguous. Examples include `array`, `vector`, and `basic_string`. Types like `span` and `basic_string_view` provide contiguous ranges. Built-in arrays also form contiguous ranges. Containers like `list` and `map` aren't contiguous. - The target platform must support the necessary SIMD instructions to implement the algorithm for the element types. This is typically true for arithmetic types and simple operations. - One of these conditions must be met: - - The compiler can emit vectorized machine code for an implementation written as scalar code (auto-vectorization). - - The algorithm's implementation explicitly uses vectorized code (manual vectorization). + - The compiler can emit vectorized machine code for an implementation written as scalar code (auto-vectorization). + - The algorithm's implementation explicitly uses vectorized code (manual vectorization). ## Auto-vectorization in the STL For more information about automatic vectorization, see [Auto-Vectorizer](../parallel/auto-parallelization-and-auto-vectorization.md#auto-vectorizer) and the discussion in that article about the [`/arch`](../build/reference/arch-minimum-cpu-architecture.md) switch. This applies to the STL implementation code the same way it applies to user code. -Algorithms like `transform`, `reduce`, and `accumulate` heavily benefit from auto-vectorization. +Algorithms like `transform`, `reduce`, and `accumulate` benefit heavily from auto-vectorization. ## Manual vectorization in the STL @@ -28,7 +28,7 @@ Certain algorithms for x64 and x86 include manual vectorization. This implementa Manually vectorized algorithms use template metaprogramming to detect if the element type is suitable for vectorization. As a result, they're only vectorized for simple types such as standard integer types. -Programs generally either benefit in performance from manual vectorization or remain unaffected by it. Disable manual vectorization by defining `_USE_STD_VECTOR_ALGORITHMS=0` in your project. Manually vectorized algorithms are enabled by default on x64 and x86 because it defaults to 1 on those platforms. +Programs either benefit in performance from manual vectorization or remain unaffected by it. Disable manual vectorization by defining `_USE_STD_VECTOR_ALGORITHMS=0` in your project. Manually vectorized algorithms are enabled by default on x64 and x86 because `_USE_STD_VECTOR_ALGORITHMS` defaults to 1 on those platforms. Assign the same value to `_USE_STD_VECTOR_ALGORITHMS` for all linked translation units that use algorithms. Configure it in the project properties instead of in the source code for consistency. For more information about how to configure it, see [/D (Preprocessor Definitions)](../build/reference/d-preprocessor-definitions.md). @@ -72,7 +72,7 @@ The STL addresses the first two considerations safely. Only `max_element`, `min_ Use `_USE_STD_VECTOR_FLOATING_ALGORITHMS` to control the use of these vectorized algorithms for floating-point types. Set it to 0 to disable vectorization. `_USE_STD_VECTOR_FLOATING_ALGORITHMS` doesn't affect anything if `_USE_STD_VECTOR_ALGORITHMS` is set to 0. -`_USE_STD_VECTOR_FLOATING_ALGORITHMS` defaults to 0 when [`/fp:except`](../build/reference/fp-specify-floating-point-behavior.md#except) is set. +The `_USE_STD_VECTOR_FLOATING_ALGORITHMS` macro defaults to 0 when [`/fp:except`](../build/reference/fp-specify-floating-point-behavior.md#except) is set. Assign the same value to `_USE_STD_VECTOR_FLOATING_ALGORITHMS` for all linked translation units that use algorithms. Configure it in the project properties instead of in the source code for consistency. For more information about how to configure it, see [/D (Preprocessor Definitions)](../build/reference/d-preprocessor-definitions.md). From fd1aa69a9ad8d391590ce855a105a9cec829a63b Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 3 Oct 2025 11:33:58 -0700 Subject: [PATCH 1982/2255] add branding --- docs/standard-library/vectorized-stl-algorithms.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/standard-library/vectorized-stl-algorithms.md b/docs/standard-library/vectorized-stl-algorithms.md index 958b852db64..13cad087a01 100644 --- a/docs/standard-library/vectorized-stl-algorithms.md +++ b/docs/standard-library/vectorized-stl-algorithms.md @@ -1,11 +1,11 @@ --- -title: "Vectorized STL Algorithms" +title: "Vectorized MSVC STL Algorithms" description: "Learn more about: Vectorized STL Algorithms" ms.date: 10/03/2025 f1_keywords: ["_USE_STD_VECTOR_ALGORITHMS", "_USE_STD_VECTOR_FLOATING_ALGORITHMS"] helpviewer_keywords: ["_USE_STD_VECTOR_ALGORITHMS", "_USE_STD_VECTOR_FLOATING_ALGORITHMS", "Vector Algorithms", "Vectorization", "SIMD"] --- -# Vectorized STL Algorithms +# Vectorized MSVC STL Algorithms Under specific conditions, algorithms in the MSVC Standard Template Library (STL) can process multiple elements simultaneously on a single CPU core, rather than handling each element individually. This optimization uses single instruction, multiple data (SIMD) instructions provided by the CPU, a technique called vectorization. When this optimization isn't applied, the implementation is referred to as scalar. @@ -16,13 +16,13 @@ The conditions required for vectorization are: - The compiler can emit vectorized machine code for an implementation written as scalar code (auto-vectorization). - The algorithm's implementation explicitly uses vectorized code (manual vectorization). -## Auto-vectorization in the STL +## Auto-vectorization in the MSVC STL For more information about automatic vectorization, see [Auto-Vectorizer](../parallel/auto-parallelization-and-auto-vectorization.md#auto-vectorizer) and the discussion in that article about the [`/arch`](../build/reference/arch-minimum-cpu-architecture.md) switch. This applies to the STL implementation code the same way it applies to user code. Algorithms like `transform`, `reduce`, and `accumulate` benefit heavily from auto-vectorization. -## Manual vectorization in the STL +## Manual vectorization in the MSVC STL Certain algorithms for x64 and x86 include manual vectorization. This implementation is separately compiled and relies on runtime CPU dispatch, so it applies only to suitable CPUs. From c67cfc80a9782e6dc35bae0782af5fa1a83ebe25 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 7 Oct 2025 14:25:20 -0700 Subject: [PATCH 1983/2255] more uniform wording --- .../ctime-ctime32-ctime64-wctime-wctime32-wctime64.md | 4 ++-- ...-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md | 2 +- .../reference/difftime-difftime32-difftime64.md | 7 +++---- .../reference/futime-futime32-futime64.md | 2 +- .../reference/gmtime-gmtime32-gmtime64.md | 7 +++---- .../reference/gmtime-s-gmtime32-s-gmtime64-s.md | 7 +++---- .../reference/localtime-localtime32-localtime64.md | 7 +++---- .../reference/localtime-s-localtime32-s-localtime64-s.md | 7 +++---- .../reference/mkgmtime-mkgmtime32-mkgmtime64.md | 8 +++----- .../reference/mktime-mktime32-mktime64.md | 7 +++---- docs/c-runtime-library/reference/strnlen-strnlen-s.md | 4 ++-- docs/c-runtime-library/reference/time-time32-time64.md | 7 +++---- .../timespec-get-timespec32-get-timespec64-get1.md | 7 +++---- .../utime-utime32-utime64-wutime-wutime32-wutime64.md | 7 +++---- 14 files changed, 36 insertions(+), 47 deletions(-) diff --git a/docs/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md b/docs/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md index afaf3eb46b8..a01f93a70b2 100644 --- a/docs/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md +++ b/docs/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md @@ -62,8 +62,8 @@ These functions validate their parameters. If *`sourceTime`* is a null pointer, By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). -> [!Note] -> Starting with Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are now declared as `inline` (external linkage).\ +>> [!Note] +> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are declared as `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ > This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ > This applies to the following functions: `ctime`, `_wctime` diff --git a/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md b/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md index 4f2921f1d44..503448e71d6 100644 --- a/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md +++ b/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md @@ -125,7 +125,7 @@ The debug library versions of these functions first fill the buffer with 0xFE. T By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> Starting with Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are now declared as `inline` (external linkage).\ +> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are declared as `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ > This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ > This applies to the following functions: `ctime_s`, `_wctime_s` diff --git a/docs/c-runtime-library/reference/difftime-difftime32-difftime64.md b/docs/c-runtime-library/reference/difftime-difftime32-difftime64.md index 3748e01284f..c6967a50310 100644 --- a/docs/c-runtime-library/reference/difftime-difftime32-difftime64.md +++ b/docs/c-runtime-library/reference/difftime-difftime32-difftime64.md @@ -46,10 +46,9 @@ These functions validate their parameters. If either of the parameters is zero o By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> Starting in Visual Studio 2025 and the Windows SDK 26000, this function changes from declaring the function (or functions for multi-function pages) with `static inline` to `inline`.\ -> You can opt-out of the change for your project by defining `_STATIC_INLINE_UCRT_FUNCTIONS=1`.\ -> You can adopt the change early by defining `_STATIC_INLINE_UCRT_FUNCTIONS=0`.\ -> This change improves conformance and helps avoid One Definition Rule (ODR) violations, especially when using modules.\ +> If you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are declared as `inline` (external linkage).\ +> To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ +> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ > This applies to the following function: `difftime` ## Requirements diff --git a/docs/c-runtime-library/reference/futime-futime32-futime64.md b/docs/c-runtime-library/reference/futime-futime32-futime64.md index 516c5d29ed3..900ff0928b5 100644 --- a/docs/c-runtime-library/reference/futime-futime32-futime64.md +++ b/docs/c-runtime-library/reference/futime-futime32-futime64.md @@ -52,7 +52,7 @@ The **`_futime`** routine sets the modification date and the access time on the By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> Starting with Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are now declared as `inline` (external linkage).\ +> If you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are declared as `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ > This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ > This applies to the following function: `_futime` diff --git a/docs/c-runtime-library/reference/gmtime-gmtime32-gmtime64.md b/docs/c-runtime-library/reference/gmtime-gmtime32-gmtime64.md index e20714f43fc..0cfc741f854 100644 --- a/docs/c-runtime-library/reference/gmtime-gmtime32-gmtime64.md +++ b/docs/c-runtime-library/reference/gmtime-gmtime32-gmtime64.md @@ -57,10 +57,9 @@ The **`_gmtime32`** function breaks down the *`sourceTime`* value and stores it By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> Starting in Visual Studio 2025 and the Windows SDK 26000, this function changes from declaring the function (or functions for multi-function pages) with `static inline` to `inline`.\ -> You can opt-out of the change for your project by defining `_STATIC_INLINE_UCRT_FUNCTIONS=1`.\ -> You can adopt the change early by defining `_STATIC_INLINE_UCRT_FUNCTIONS=0`.\ -> This change improves conformance and helps avoid One Definition Rule (ODR) violations, especially when using modules.\ +> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are declared as `inline` (external linkage).\ +> To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ +> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ > This applies to the following function: `gmtime` ## Requirements diff --git a/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md b/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md index 08e47287e5a..32875956867 100644 --- a/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md +++ b/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md @@ -77,10 +77,9 @@ Each of the structure fields is of type **`int`**, as shown in the following tab By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> Starting in Visual Studio 2025 and the Windows SDK 26000, this function changes from declaring the function (or functions for multi-function pages) with `static inline` to `inline`.\ -> You can opt-out of the change for your project by defining `_STATIC_INLINE_UCRT_FUNCTIONS=1`.\ -> You can adopt the change early by defining `_STATIC_INLINE_UCRT_FUNCTIONS=0`.\ -> This change improves conformance and helps avoid One Definition Rule (ODR) violations, especially when using modules.\ +> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are declared as `inline` (external linkage).\ +> To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ +> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ > This applies to the following function: `gmtime_s` ## Requirements diff --git a/docs/c-runtime-library/reference/localtime-localtime32-localtime64.md b/docs/c-runtime-library/reference/localtime-localtime32-localtime64.md index bdc4a3d545b..2d3dbc27eb4 100644 --- a/docs/c-runtime-library/reference/localtime-localtime32-localtime64.md +++ b/docs/c-runtime-library/reference/localtime-localtime32-localtime64.md @@ -73,10 +73,9 @@ These functions validate their parameters. If *`sourceTime`* is a null pointer, By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> Starting in Visual Studio 2025 and the Windows SDK 26000, this function changes from declaring the function (or functions for multi-function pages) with `static inline` to `inline`.\ -> You can opt-out of the change for your project by defining `_STATIC_INLINE_UCRT_FUNCTIONS=1`.\ -> You can adopt the change early by defining `_STATIC_INLINE_UCRT_FUNCTIONS=0`.\ -> This change improves conformance and helps avoid One Definition Rule (ODR) violations, especially when using modules.\ +> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are declared as `inline` (external linkage).\ +> To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ +> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ > This applies to the following function: `localtime` ## Requirements diff --git a/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md b/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md index 0ed83432d92..581c2ca842b 100644 --- a/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md +++ b/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md @@ -85,10 +85,9 @@ If the **`TZ`** environment variable is set, the C run-time library assumes rule By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> Starting in Visual Studio 2025 and the Windows SDK 26000, this function changes from declaring the function (or functions for multi-function pages) with `static inline` to `inline`.\ -> You can opt-out of the change for your project by defining `_STATIC_INLINE_UCRT_FUNCTIONS=1`.\ -> You can adopt the change early by defining `_STATIC_INLINE_UCRT_FUNCTIONS=0`.\ -> This change improves conformance and helps avoid One Definition Rule (ODR) violations, especially when using modules.\ +> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are declared as `inline` (external linkage).\ +> To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ +> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ > This applies to the following function: `localtime_s` ## Requirements diff --git a/docs/c-runtime-library/reference/mkgmtime-mkgmtime32-mkgmtime64.md b/docs/c-runtime-library/reference/mkgmtime-mkgmtime32-mkgmtime64.md index 01a0c7f841e..84451aaddbe 100644 --- a/docs/c-runtime-library/reference/mkgmtime-mkgmtime32-mkgmtime64.md +++ b/docs/c-runtime-library/reference/mkgmtime-mkgmtime32-mkgmtime64.md @@ -49,11 +49,9 @@ The range of the **`_mkgmtime32`** function is from midnight, January 1, 1970, U Both **`gmtime`** and **`localtime`** use a common static buffer for the conversion. If you supply this buffer to **`_mkgmtime`**, the previous contents are destroyed. > [!Note] -> Starting in Visual Studio 2025 and the Windows SDK 26000, this function changes from declaring the function (or functions for multi-function pages) with `static inline` to `inline`.\ -> You can opt-out of the change for your project by defining `_STATIC_INLINE_UCRT_FUNCTIONS=1`.\ -> You can adopt the change early by defining `_STATIC_INLINE_UCRT_FUNCTIONS=0`.\ -> This change improves conformance and helps avoid One Definition Rule (ODR) violations, especially when using modules.\ -> This applies to the following function: `_mkgmtime` +> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are declared as `inline` (external linkage).\ +> To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ +> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\> This applies to the following function: `_mkgmtime` ## Examples diff --git a/docs/c-runtime-library/reference/mktime-mktime32-mktime64.md b/docs/c-runtime-library/reference/mktime-mktime32-mktime64.md index e59f3af154e..330bd1b43e7 100644 --- a/docs/c-runtime-library/reference/mktime-mktime32-mktime64.md +++ b/docs/c-runtime-library/reference/mktime-mktime32-mktime64.md @@ -63,10 +63,9 @@ These functions validate their parameter. If *`timeptr`* is a null pointer, the By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> Starting in Visual Studio 2025 and the Windows SDK 26000, this function changes from declaring the function (or functions for multi-function pages) with `static inline` to `inline`.\ -> You can opt-out of the change for your project by defining `_STATIC_INLINE_UCRT_FUNCTIONS=1`.\ -> You can adopt the change early by defining `_STATIC_INLINE_UCRT_FUNCTIONS=0`.\ -> This change improves conformance and helps avoid One Definition Rule (ODR) violations, especially when using modules.\ +> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are declared as `inline` (external linkage).\ +> To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ +> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ > This applies to the following function: `mktime` ## Requirements diff --git a/docs/c-runtime-library/reference/strnlen-strnlen-s.md b/docs/c-runtime-library/reference/strnlen-strnlen-s.md index aaed1512438..12bc64a65c6 100644 --- a/docs/c-runtime-library/reference/strnlen-strnlen-s.md +++ b/docs/c-runtime-library/reference/strnlen-strnlen-s.md @@ -89,9 +89,9 @@ Each of these functions returns the number of characters in *`str`*, not includi By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> Starting with Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are now declared as `inline` (external linkage).\ +> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are declared as `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ -> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ +> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\> This applies to the following functions: `strnlen_s`, `wcsnlen_s` > This applies to the following functions: `strnlen_s`, `wcsnlen_s` ### Generic-text routine mappings diff --git a/docs/c-runtime-library/reference/time-time32-time64.md b/docs/c-runtime-library/reference/time-time32-time64.md index 039dd0766a0..ca0e2ca4f54 100644 --- a/docs/c-runtime-library/reference/time-time32-time64.md +++ b/docs/c-runtime-library/reference/time-time32-time64.md @@ -38,10 +38,9 @@ The **`time`** function returns the number of seconds elapsed since midnight (00 **`time`** is a wrapper for **`_time64`** and **`time_t`** is, by default, equivalent to **`__time64_t`**. If you need to force the compiler to interpret **`time_t`** as the old 32-bit **`time_t`**, you can define `_USE_32BIT_TIME_T`. We don't recommend `_USE_32BIT_TIME_T`, because your application may fail after January 18, 2038; the use of this macro isn't allowed on 64-bit platforms. > [!Note] -> Starting in Visual Studio 2025 and the Windows SDK 26000, this function changes from declaring the function (or functions for multi-function pages) with `static inline` to `inline`.\ -> You can opt-out of the change for your project by defining `_STATIC_INLINE_UCRT_FUNCTIONS=1`.\ -> You can adopt the change early by defining `_STATIC_INLINE_UCRT_FUNCTIONS=0`.\ -> This change improves conformance and helps avoid One Definition Rule (ODR) violations, especially when using modules.\ +> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are declared as `inline` (external linkage).\ +> To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ +> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ > This applies to the following function: `time` ## Requirements diff --git a/docs/c-runtime-library/reference/timespec-get-timespec32-get-timespec64-get1.md b/docs/c-runtime-library/reference/timespec-get-timespec32-get-timespec64-get1.md index 101fb52c6b9..65d4234deff 100644 --- a/docs/c-runtime-library/reference/timespec-get-timespec32-get-timespec64-get1.md +++ b/docs/c-runtime-library/reference/timespec-get-timespec32-get-timespec64-get1.md @@ -56,10 +56,9 @@ These functions support only `TIME_UTC` as the *`base`* value. `TIME_UTC` sets t By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> Starting in Visual Studio 2025 and the Windows SDK 26000, this function changes from declaring the function (or functions for multi-function pages) with `static inline` to `inline`.\ -> You can opt-out of the change for your project by defining `_STATIC_INLINE_UCRT_FUNCTIONS=1`.\ -> You can adopt the change early by defining `_STATIC_INLINE_UCRT_FUNCTIONS=0`.\ -> This change improves conformance and helps avoid One Definition Rule (ODR) violations, especially when using modules.\ +> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are declared as `inline` (external linkage).\ +> To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ +> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ > This applies to the following function: `timespec_get` ## Requirements diff --git a/docs/c-runtime-library/reference/utime-utime32-utime64-wutime-wutime32-wutime64.md b/docs/c-runtime-library/reference/utime-utime32-utime64-wutime-wutime32-wutime64.md index f12ecd9a9dd..4b032490d1d 100644 --- a/docs/c-runtime-library/reference/utime-utime32-utime64-wutime-wutime32-wutime64.md +++ b/docs/c-runtime-library/reference/utime-utime32-utime64-wutime-wutime32-wutime64.md @@ -86,10 +86,9 @@ Specific versions of the `_utimbuf` structure (`__utimbuf32` and `__utimbuf64`) By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> Starting in Visual Studio 2025 and the Windows SDK 26000, this function changes from declaring the function (or functions for multi-function pages) with `static inline` to `inline`.\ -> You can opt-out of the change for your project by defining `_STATIC_INLINE_UCRT_FUNCTIONS=1`.\ -> You can adopt the change early by defining `_STATIC_INLINE_UCRT_FUNCTIONS=0`.\ -> This change improves conformance and helps avoid One Definition Rule (ODR) violations, especially when using modules.\ +> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are declared as `inline` (external linkage).\ +> To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ +> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ > This applies to the following functions: `_utime`, `_wutime` ### Generic-text routine mappings From 6b125cbc4823dfb12acb935dc042e43a86253030 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 7 Oct 2025 14:50:27 -0700 Subject: [PATCH 1984/2255] more finesse --- .../ctime-ctime32-ctime64-wctime-wctime32-wctime64.md | 6 ++---- ...-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md | 5 ++--- .../reference/difftime-difftime32-difftime64.md | 5 ++--- .../c-runtime-library/reference/futime-futime32-futime64.md | 5 ++--- .../c-runtime-library/reference/gmtime-gmtime32-gmtime64.md | 5 ++--- .../reference/gmtime-s-gmtime32-s-gmtime64-s.md | 5 ++--- .../reference/localtime-localtime32-localtime64.md | 5 ++--- .../reference/localtime-s-localtime32-s-localtime64-s.md | 5 ++--- .../reference/mkgmtime-mkgmtime32-mkgmtime64.md | 4 ++-- .../c-runtime-library/reference/mktime-mktime32-mktime64.md | 5 ++--- docs/c-runtime-library/reference/strnlen-strnlen-s.md | 5 ++--- docs/c-runtime-library/reference/time-time32-time64.md | 6 ++---- .../timespec-get-timespec32-get-timespec64-get1.md | 5 ++--- .../utime-utime32-utime64-wutime-wutime32-wutime64.md | 6 ++---- 14 files changed, 28 insertions(+), 44 deletions(-) diff --git a/docs/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md b/docs/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md index a01f93a70b2..2d49bc3a153 100644 --- a/docs/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md +++ b/docs/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md @@ -8,7 +8,6 @@ api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["_wctime64", "_ctime32", "_tctime", "_wctime", "_wctime32", "_tctime64", "_ctime64", "ctime"] helpviewer_keywords: ["tctime64 function", "_ctime32 function", "ctime32 function", "_wctime function", "wctime64 function", "_tctime64 function", "_tctime32 function", "_ctime64 function", "_wctime64 function", "ctime function", "wctime32 function", "ctime64 function", "_wctime32 function", "_tctime function", "tctime32 function", "tctime function", "wctime function", "time, converting"] -ms.assetid: 2423de37-a35c-4f0a-a378-3116bc120a9d --- # `ctime`, `_ctime32`, `_ctime64`, `_wctime`, `_wctime32`, `_wctime64` @@ -63,10 +62,9 @@ These functions validate their parameters. If *`sourceTime`* is a null pointer, By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). >> [!Note] -> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are declared as `inline` (external linkage).\ +> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `ctime` and `_wctime` are no longer `static inline` (internal linkage). Instead, they're `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ -> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ -> This applies to the following functions: `ctime`, `_wctime` +> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules. ### Generic-text routine mappings diff --git a/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md b/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md index 503448e71d6..00f36630373 100644 --- a/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md +++ b/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md @@ -125,10 +125,9 @@ The debug library versions of these functions first fill the buffer with 0xFE. T By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are declared as `inline` (external linkage).\ +> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `ctime_s` and `_wctime_s` are no longer `static inline` (internal linkage). Instead, they're `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ -> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ -> This applies to the following functions: `ctime_s`, `_wctime_s` +> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules. ### Generic-text routine mappings diff --git a/docs/c-runtime-library/reference/difftime-difftime32-difftime64.md b/docs/c-runtime-library/reference/difftime-difftime32-difftime64.md index c6967a50310..4abb115de76 100644 --- a/docs/c-runtime-library/reference/difftime-difftime32-difftime64.md +++ b/docs/c-runtime-library/reference/difftime-difftime32-difftime64.md @@ -46,10 +46,9 @@ These functions validate their parameters. If either of the parameters is zero o By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> If you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are declared as `inline` (external linkage).\ +> If you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `difftime` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ -> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ -> This applies to the following function: `difftime` +> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules. ## Requirements diff --git a/docs/c-runtime-library/reference/futime-futime32-futime64.md b/docs/c-runtime-library/reference/futime-futime32-futime64.md index 900ff0928b5..24adf3ac898 100644 --- a/docs/c-runtime-library/reference/futime-futime32-futime64.md +++ b/docs/c-runtime-library/reference/futime-futime32-futime64.md @@ -52,10 +52,9 @@ The **`_futime`** routine sets the modification date and the access time on the By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> If you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are declared as `inline` (external linkage).\ +> If you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `_futime` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ -> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ -> This applies to the following function: `_futime` +> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules. ## Requirements diff --git a/docs/c-runtime-library/reference/gmtime-gmtime32-gmtime64.md b/docs/c-runtime-library/reference/gmtime-gmtime32-gmtime64.md index 0cfc741f854..f180708ab73 100644 --- a/docs/c-runtime-library/reference/gmtime-gmtime32-gmtime64.md +++ b/docs/c-runtime-library/reference/gmtime-gmtime32-gmtime64.md @@ -57,10 +57,9 @@ The **`_gmtime32`** function breaks down the *`sourceTime`* value and stores it By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are declared as `inline` (external linkage).\ +> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `gmtime` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ -> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ -> This applies to the following function: `gmtime` +> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules. ## Requirements diff --git a/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md b/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md index 32875956867..5fa95ab1bdb 100644 --- a/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md +++ b/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md @@ -77,10 +77,9 @@ Each of the structure fields is of type **`int`**, as shown in the following tab By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are declared as `inline` (external linkage).\ +> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `gmtime_s` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ -> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ -> This applies to the following function: `gmtime_s` +> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules. ## Requirements diff --git a/docs/c-runtime-library/reference/localtime-localtime32-localtime64.md b/docs/c-runtime-library/reference/localtime-localtime32-localtime64.md index 2d3dbc27eb4..7c94fbd8479 100644 --- a/docs/c-runtime-library/reference/localtime-localtime32-localtime64.md +++ b/docs/c-runtime-library/reference/localtime-localtime32-localtime64.md @@ -73,10 +73,9 @@ These functions validate their parameters. If *`sourceTime`* is a null pointer, By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are declared as `inline` (external linkage).\ +> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `localtime` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ -> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ -> This applies to the following function: `localtime` +> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules. ## Requirements diff --git a/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md b/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md index 581c2ca842b..81137b6dbd7 100644 --- a/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md +++ b/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md @@ -85,10 +85,9 @@ If the **`TZ`** environment variable is set, the C run-time library assumes rule By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are declared as `inline` (external linkage).\ +> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `localtime_s` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ -> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ -> This applies to the following function: `localtime_s` +> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules. ## Requirements diff --git a/docs/c-runtime-library/reference/mkgmtime-mkgmtime32-mkgmtime64.md b/docs/c-runtime-library/reference/mkgmtime-mkgmtime32-mkgmtime64.md index 84451aaddbe..098f806f2a5 100644 --- a/docs/c-runtime-library/reference/mkgmtime-mkgmtime32-mkgmtime64.md +++ b/docs/c-runtime-library/reference/mkgmtime-mkgmtime32-mkgmtime64.md @@ -49,9 +49,9 @@ The range of the **`_mkgmtime32`** function is from midnight, January 1, 1970, U Both **`gmtime`** and **`localtime`** use a common static buffer for the conversion. If you supply this buffer to **`_mkgmtime`**, the previous contents are destroyed. > [!Note] -> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are declared as `inline` (external linkage).\ +> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `_mkgmtime` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ -> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\> This applies to the following function: `_mkgmtime` +> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules. ## Examples diff --git a/docs/c-runtime-library/reference/mktime-mktime32-mktime64.md b/docs/c-runtime-library/reference/mktime-mktime32-mktime64.md index 330bd1b43e7..4c0571ac8a6 100644 --- a/docs/c-runtime-library/reference/mktime-mktime32-mktime64.md +++ b/docs/c-runtime-library/reference/mktime-mktime32-mktime64.md @@ -63,10 +63,9 @@ These functions validate their parameter. If *`timeptr`* is a null pointer, the By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are declared as `inline` (external linkage).\ +> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `mktime` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ -> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ -> This applies to the following function: `mktime` +> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules. ## Requirements diff --git a/docs/c-runtime-library/reference/strnlen-strnlen-s.md b/docs/c-runtime-library/reference/strnlen-strnlen-s.md index 12bc64a65c6..c4da83ce486 100644 --- a/docs/c-runtime-library/reference/strnlen-strnlen-s.md +++ b/docs/c-runtime-library/reference/strnlen-strnlen-s.md @@ -89,10 +89,9 @@ Each of these functions returns the number of characters in *`str`*, not includi By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are declared as `inline` (external linkage).\ +> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `strnlen_s` and `wcsnlen_s` are no longer `static inline` (internal linkage). Instead, they are `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ -> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\> This applies to the following functions: `strnlen_s`, `wcsnlen_s` -> This applies to the following functions: `strnlen_s`, `wcsnlen_s` +> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules. ### Generic-text routine mappings diff --git a/docs/c-runtime-library/reference/time-time32-time64.md b/docs/c-runtime-library/reference/time-time32-time64.md index ca0e2ca4f54..a017ab031aa 100644 --- a/docs/c-runtime-library/reference/time-time32-time64.md +++ b/docs/c-runtime-library/reference/time-time32-time64.md @@ -8,7 +8,6 @@ api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["TIME/time", "TIME/_time32", "TIME/_time64", "time", "_time32", "_time64"] helpviewer_keywords: ["time32 function", "_time32 function", "_time64 function", "time functions", "system time", "time64 function"] -ms.assetid: 280e00f2-2b93-4ece-94cd-e048484c6cc7 --- # `time`, `_time32`, `_time64` @@ -38,10 +37,9 @@ The **`time`** function returns the number of seconds elapsed since midnight (00 **`time`** is a wrapper for **`_time64`** and **`time_t`** is, by default, equivalent to **`__time64_t`**. If you need to force the compiler to interpret **`time_t`** as the old 32-bit **`time_t`**, you can define `_USE_32BIT_TIME_T`. We don't recommend `_USE_32BIT_TIME_T`, because your application may fail after January 18, 2038; the use of this macro isn't allowed on 64-bit platforms. > [!Note] -> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are declared as `inline` (external linkage).\ +> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `time` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ -> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ -> This applies to the following function: `time` +> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules. ## Requirements diff --git a/docs/c-runtime-library/reference/timespec-get-timespec32-get-timespec64-get1.md b/docs/c-runtime-library/reference/timespec-get-timespec32-get-timespec64-get1.md index 65d4234deff..1bb336cebac 100644 --- a/docs/c-runtime-library/reference/timespec-get-timespec32-get-timespec64-get1.md +++ b/docs/c-runtime-library/reference/timespec-get-timespec32-get-timespec64-get1.md @@ -56,10 +56,9 @@ These functions support only `TIME_UTC` as the *`base`* value. `TIME_UTC` sets t By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are declared as `inline` (external linkage).\ +> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `timespec_get` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ -> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ -> This applies to the following function: `timespec_get` +> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules. ## Requirements diff --git a/docs/c-runtime-library/reference/utime-utime32-utime64-wutime-wutime32-wutime64.md b/docs/c-runtime-library/reference/utime-utime32-utime64-wutime-wutime32-wutime64.md index 4b032490d1d..d451db3be4b 100644 --- a/docs/c-runtime-library/reference/utime-utime32-utime64-wutime-wutime32-wutime64.md +++ b/docs/c-runtime-library/reference/utime-utime32-utime64-wutime-wutime32-wutime64.md @@ -8,7 +8,6 @@ api_type: ["DLLExport"] topic_type: ["apiref"] f1_keywords: ["UTIME/_utime", "UTIME/_utime32", "UTIME/_utime64", "UTIME/_wutime", "UTIME/_wutime32", "UTIME/_wutime64", "TCHAR/_tutime", "TCHAR/_tutime32", "TCHAR/_tutime64", "_utime", "_utime32", "_utime64", "_wutime", "_wutime32", "_wutime64", "_tutime", "_tutime32", "_tutime64"] helpviewer_keywords: ["tutime function", "utime32 function", "utime64 function", "_utime function", "_tutime32 function", "time [C++], file modification", "wutime function", "_wutime function", "_wutime32 function", "_tutime64 function", "_tutime function", "files [C++], modification time", "_wutime64 function", "_utime32 function", "utime function", "_utime64 function", "wutime64 function", "wutime32 function", "tutime64 function", "tutime32 function"] -ms.assetid: 8d482d40-19b9-4591-bfee-5d7f601d1a9e --- # `_utime`, `_utime32`, `_utime64`, `_wutime`, `_wutime32`, `_wutime64` @@ -86,10 +85,9 @@ Specific versions of the `_utimbuf` structure (`__utimbuf32` and `__utimbuf64`) By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, the following functions are no longer declared as `static inline` (internal linkage). Instead, they are declared as `inline` (external linkage).\ +> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `_utime` and `_wutime` are no longer `static inline` (internal linkage). Instead, they are `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ -> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules.\ -> This applies to the following functions: `_utime`, `_wutime` +> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules. ### Generic-text routine mappings From c575f428325a83b9cf9e647011dc2949f155933f Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 7 Oct 2025 15:00:00 -0700 Subject: [PATCH 1985/2255] edit --- .../reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md | 2 +- ...time-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md | 2 +- .../reference/difftime-difftime32-difftime64.md | 2 +- docs/c-runtime-library/reference/futime-futime32-futime64.md | 2 +- docs/c-runtime-library/reference/gmtime-gmtime32-gmtime64.md | 2 +- .../reference/gmtime-s-gmtime32-s-gmtime64-s.md | 2 +- .../reference/localtime-localtime32-localtime64.md | 2 +- .../reference/localtime-s-localtime32-s-localtime64-s.md | 2 +- .../reference/mkgmtime-mkgmtime32-mkgmtime64.md | 2 +- docs/c-runtime-library/reference/mktime-mktime32-mktime64.md | 2 +- docs/c-runtime-library/reference/strnlen-strnlen-s.md | 2 +- docs/c-runtime-library/reference/time-time32-time64.md | 2 +- .../reference/timespec-get-timespec32-get-timespec64-get1.md | 2 +- .../reference/utime-utime32-utime64-wutime-wutime32-wutime64.md | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md b/docs/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md index 2d49bc3a153..94fb51c5db2 100644 --- a/docs/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md +++ b/docs/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md @@ -64,7 +64,7 @@ By default, this function's global state is scoped to the application. To change >> [!Note] > When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `ctime` and `_wctime` are no longer `static inline` (internal linkage). Instead, they're `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ -> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules. +> This change increases UCRT conformance with the C++ standard and improves compatibility with C++ modules. ### Generic-text routine mappings diff --git a/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md b/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md index 00f36630373..344332fb27b 100644 --- a/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md +++ b/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md @@ -127,7 +127,7 @@ By default, this function's global state is scoped to the application. To change > [!Note] > When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `ctime_s` and `_wctime_s` are no longer `static inline` (internal linkage). Instead, they're `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ -> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules. +> This change increases UCRT conformance with the C++ standard and improves compatibility with C++ modules. ### Generic-text routine mappings diff --git a/docs/c-runtime-library/reference/difftime-difftime32-difftime64.md b/docs/c-runtime-library/reference/difftime-difftime32-difftime64.md index 4abb115de76..1eb22965f30 100644 --- a/docs/c-runtime-library/reference/difftime-difftime32-difftime64.md +++ b/docs/c-runtime-library/reference/difftime-difftime32-difftime64.md @@ -48,7 +48,7 @@ By default, this function's global state is scoped to the application. To change > [!Note] > If you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `difftime` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ -> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules. +> This change increases UCRT conformance with the C++ standard and improves compatibility with C++ modules. ## Requirements diff --git a/docs/c-runtime-library/reference/futime-futime32-futime64.md b/docs/c-runtime-library/reference/futime-futime32-futime64.md index 24adf3ac898..71e48e02fdc 100644 --- a/docs/c-runtime-library/reference/futime-futime32-futime64.md +++ b/docs/c-runtime-library/reference/futime-futime32-futime64.md @@ -54,7 +54,7 @@ By default, this function's global state is scoped to the application. To change > [!Note] > If you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `_futime` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ -> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules. +> This change increases UCRT conformance with the C++ standard and improves compatibility with C++ modules. ## Requirements diff --git a/docs/c-runtime-library/reference/gmtime-gmtime32-gmtime64.md b/docs/c-runtime-library/reference/gmtime-gmtime32-gmtime64.md index f180708ab73..aaf84a4d8cc 100644 --- a/docs/c-runtime-library/reference/gmtime-gmtime32-gmtime64.md +++ b/docs/c-runtime-library/reference/gmtime-gmtime32-gmtime64.md @@ -59,7 +59,7 @@ By default, this function's global state is scoped to the application. To change > [!Note] > When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `gmtime` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ -> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules. +> This change increases UCRT conformance with the C++ standard and improves compatibility with C++ modules. ## Requirements diff --git a/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md b/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md index 5fa95ab1bdb..dd7a15de33e 100644 --- a/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md +++ b/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md @@ -79,7 +79,7 @@ By default, this function's global state is scoped to the application. To change > [!Note] > When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `gmtime_s` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ -> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules. +> This change increases UCRT conformance with the C++ standard and improves compatibility with C++ modules. ## Requirements diff --git a/docs/c-runtime-library/reference/localtime-localtime32-localtime64.md b/docs/c-runtime-library/reference/localtime-localtime32-localtime64.md index 7c94fbd8479..fbd9bbc8ae2 100644 --- a/docs/c-runtime-library/reference/localtime-localtime32-localtime64.md +++ b/docs/c-runtime-library/reference/localtime-localtime32-localtime64.md @@ -75,7 +75,7 @@ By default, this function's global state is scoped to the application. To change > [!Note] > When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `localtime` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ -> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules. +> This change increases UCRT conformance with the C++ standard and improves compatibility with C++ modules. ## Requirements diff --git a/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md b/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md index 81137b6dbd7..4907ef32f45 100644 --- a/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md +++ b/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md @@ -87,7 +87,7 @@ By default, this function's global state is scoped to the application. To change > [!Note] > When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `localtime_s` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ -> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules. +> This change increases UCRT conformance with the C++ standard and improves compatibility with C++ modules. ## Requirements diff --git a/docs/c-runtime-library/reference/mkgmtime-mkgmtime32-mkgmtime64.md b/docs/c-runtime-library/reference/mkgmtime-mkgmtime32-mkgmtime64.md index 098f806f2a5..63e68cc2503 100644 --- a/docs/c-runtime-library/reference/mkgmtime-mkgmtime32-mkgmtime64.md +++ b/docs/c-runtime-library/reference/mkgmtime-mkgmtime32-mkgmtime64.md @@ -51,7 +51,7 @@ Both **`gmtime`** and **`localtime`** use a common static buffer for the convers > [!Note] > When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `_mkgmtime` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ -> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules. +> This change increases UCRT conformance with the C++ standard and improves compatibility with C++ modules. ## Examples diff --git a/docs/c-runtime-library/reference/mktime-mktime32-mktime64.md b/docs/c-runtime-library/reference/mktime-mktime32-mktime64.md index 4c0571ac8a6..eb4af0a38fc 100644 --- a/docs/c-runtime-library/reference/mktime-mktime32-mktime64.md +++ b/docs/c-runtime-library/reference/mktime-mktime32-mktime64.md @@ -65,7 +65,7 @@ By default, this function's global state is scoped to the application. To change > [!Note] > When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `mktime` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ -> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules. +> This change increases UCRT conformance with the C++ standard and improves compatibility with C++ modules. ## Requirements diff --git a/docs/c-runtime-library/reference/strnlen-strnlen-s.md b/docs/c-runtime-library/reference/strnlen-strnlen-s.md index c4da83ce486..12b2cedae88 100644 --- a/docs/c-runtime-library/reference/strnlen-strnlen-s.md +++ b/docs/c-runtime-library/reference/strnlen-strnlen-s.md @@ -91,7 +91,7 @@ By default, this function's global state is scoped to the application. To change > [!Note] > When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `strnlen_s` and `wcsnlen_s` are no longer `static inline` (internal linkage). Instead, they are `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ -> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules. +> This change increases UCRT conformance with the C++ standard and improves compatibility with C++ modules. ### Generic-text routine mappings diff --git a/docs/c-runtime-library/reference/time-time32-time64.md b/docs/c-runtime-library/reference/time-time32-time64.md index a017ab031aa..049d5450138 100644 --- a/docs/c-runtime-library/reference/time-time32-time64.md +++ b/docs/c-runtime-library/reference/time-time32-time64.md @@ -39,7 +39,7 @@ The **`time`** function returns the number of seconds elapsed since midnight (00 > [!Note] > When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `time` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ -> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules. +> This change increases UCRT conformance with the C++ standard and improves compatibility with C++ modules. ## Requirements diff --git a/docs/c-runtime-library/reference/timespec-get-timespec32-get-timespec64-get1.md b/docs/c-runtime-library/reference/timespec-get-timespec32-get-timespec64-get1.md index 1bb336cebac..ebc60ea0b92 100644 --- a/docs/c-runtime-library/reference/timespec-get-timespec32-get-timespec64-get1.md +++ b/docs/c-runtime-library/reference/timespec-get-timespec32-get-timespec64-get1.md @@ -58,7 +58,7 @@ By default, this function's global state is scoped to the application. To change > [!Note] > When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `timespec_get` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ -> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules. +> This change increases UCRT conformance with the C++ standard and improves compatibility with C++ modules. ## Requirements diff --git a/docs/c-runtime-library/reference/utime-utime32-utime64-wutime-wutime32-wutime64.md b/docs/c-runtime-library/reference/utime-utime32-utime64-wutime-wutime32-wutime64.md index d451db3be4b..5b00d4e1d83 100644 --- a/docs/c-runtime-library/reference/utime-utime32-utime64-wutime-wutime32-wutime64.md +++ b/docs/c-runtime-library/reference/utime-utime32-utime64-wutime-wutime32-wutime64.md @@ -87,7 +87,7 @@ By default, this function's global state is scoped to the application. To change > [!Note] > When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `_utime` and `_wutime` are no longer `static inline` (internal linkage). Instead, they are `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ -> This change increases UCRT conformance with the C++ standard, while also improving compatibility with C++ modules. +> This change increases UCRT conformance with the C++ standard and improves compatibility with C++ modules. ### Generic-text routine mappings From d4bc3177059431a376dadde8d231e06c15f08674 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 7 Oct 2025 15:29:32 -0700 Subject: [PATCH 1986/2255] edits --- ...time-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md | 2 +- .../reference/utime-utime32-utime64-wutime-wutime32-wutime64.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md b/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md index 344332fb27b..af343d723c7 100644 --- a/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md +++ b/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md @@ -125,7 +125,7 @@ The debug library versions of these functions first fill the buffer with 0xFE. T By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `ctime_s` and `_wctime_s` are no longer `static inline` (internal linkage). Instead, they're `inline` (external linkage).\ +> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `ctime_s` and `_wctime_s` are no longer `static inline` (internal linkage). Instead, they're `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ > This change increases UCRT conformance with the C++ standard and improves compatibility with C++ modules. diff --git a/docs/c-runtime-library/reference/utime-utime32-utime64-wutime-wutime32-wutime64.md b/docs/c-runtime-library/reference/utime-utime32-utime64-wutime-wutime32-wutime64.md index 5b00d4e1d83..07641eeece6 100644 --- a/docs/c-runtime-library/reference/utime-utime32-utime64-wutime-wutime32-wutime64.md +++ b/docs/c-runtime-library/reference/utime-utime32-utime64-wutime-wutime32-wutime64.md @@ -85,7 +85,7 @@ Specific versions of the `_utimbuf` structure (`__utimbuf32` and `__utimbuf64`) By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `_utime` and `_wutime` are no longer `static inline` (internal linkage). Instead, they are `inline` (external linkage).\ +> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `_utime` and `_wutime` are no longer `static inline` (internal linkage). Instead, they're `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ > This change increases UCRT conformance with the C++ standard and improves compatibility with C++ modules. From e1cc89bb1c59a2c4ed7c841d6d334012ad4e4bf7 Mon Sep 17 00:00:00 2001 From: David Ringo Date: Wed, 8 Oct 2025 14:39:51 -0400 Subject: [PATCH 1987/2255] Tweak example in configuration combinations Swaps the platform for one project configuration in the Configuration X Platform matrix example, so it's clearer why the first set requires the existence of the second set. Otherwise, it's not obvious why three Win32 configurations require three x64 configurations (but not three ARM configurations). --- docs/build/reference/vcxproj-file-structure.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build/reference/vcxproj-file-structure.md b/docs/build/reference/vcxproj-file-structure.md index 0ce1e28fb50..9bc67d8b8d9 100644 --- a/docs/build/reference/vcxproj-file-structure.md +++ b/docs/build/reference/vcxproj-file-structure.md @@ -126,7 +126,7 @@ The IDE expects to find a project configuration for any combination of `Configur - Debug|Win32 -- Retail|Win32 +- Retail|x64 - Special 32-bit Optimization|Win32 @@ -134,7 +134,7 @@ then it must also have these configurations, even though "Special 32-bit Optimiz - Debug|x64 -- Retail|x64 +- Retail|Win32 - Special 32-bit Optimization|x64 From 6f66c4fc452dfe2b25e9359835dbb9d8c79878a2 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 8 Oct 2025 20:05:14 -0700 Subject: [PATCH 1988/2255] Update vcxproj file structure documentation Updated per conversation with dev owner. --- docs/build/reference/vcxproj-file-structure.md | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/docs/build/reference/vcxproj-file-structure.md b/docs/build/reference/vcxproj-file-structure.md index 9bc67d8b8d9..d2ba07e23ff 100644 --- a/docs/build/reference/vcxproj-file-structure.md +++ b/docs/build/reference/vcxproj-file-structure.md @@ -125,18 +125,11 @@ The following snippet shows a project configuration. In this example, 'Debug|x64 The IDE expects to find a project configuration for any combination of `Configuration` and `Platform` values used in all `ProjectConfiguration` items. Often, it means that a project might have meaningless project configurations to fulfill this requirement. For instance, if a project has these configurations: - Debug|Win32 - - Retail|x64 - -- Special 32-bit Optimization|Win32 - -then it must also have these configurations, even though "Special 32-bit Optimization" is meaningless for x64: - - Debug|x64 - - Retail|Win32 -- Special 32-bit Optimization|x64 +Then if you add a new configuration to the project, say "Special 32-bit Optimization|Win32", then you must also add the configuration "Special 32-bit Optimization|x64", even though "Special 32-bit Optimization" is meaningless for x64. You can disable the build and deploy commands for any configuration in the **Solution Configuration Manager**. From 9abe04906e519895a675802cf91edc090d4d02ac Mon Sep 17 00:00:00 2001 From: Alcaro Date: Thu, 9 Oct 2025 20:40:16 +0200 Subject: [PATCH 1989/2255] Update zc-conformance.md --- docs/build/reference/zc-conformance.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/zc-conformance.md b/docs/build/reference/zc-conformance.md index efa980dbb7f..e63eb3d9269 100644 --- a/docs/build/reference/zc-conformance.md +++ b/docs/build/reference/zc-conformance.md @@ -30,7 +30,7 @@ Here are the **`/Zc`** compiler options: | [`/Zc:checkGwOdr[-]`](zc-check-gwodr.md) | Enforce Standard C++ ODR violations under `/Gw`. | | [`/Zc:enumTypes[-]`](zc-enumtypes.md) | Enable Standard C++ rules for `enum` type deduction. Off by default. | | [`/Zc:externC[-]`](zc-externc.md) | Enforce Standard C++ rules for `extern "C"` functions. Off by default unless **`/permissive-`** is specified. | -| [`/Zc:externConstexpr[-]`](zc-externconstexpr.md) | Enable external linkage for **`constexpr`** variables. Off by default. | +| [`/Zc:externConstexpr[-]`](zc-externconstexpr.md) | Enable external linkage for **`constexpr`** variables. Off by default unless **`/permissive-`** is specified. | | [`/Zc:forScope[-]`](zc-forscope-force-conformance-in-for-loop-scope.md) | Enforce Standard C++ **`for`** scoping rules. On by default. | | [`/Zc:gotoScope[-]`](zc-gotoscope.md) | Enforce Standard C++ **`goto`** rules around local variable initialization. Off by default unless **`/permissive-`** is specified. | | [`/Zc:hiddenFriend[-]`](zc-hiddenfriend.md) | Enforce Standard C++ hidden friend rules. Off by default unless **`/permissive-`** is specified. | From 62d5ffb0ebe43d36643ee37a9ac9ede0bbece4d5 Mon Sep 17 00:00:00 2001 From: integerbang Date: Thu, 9 Oct 2025 15:32:45 -0400 Subject: [PATCH 1990/2255] Update zc-conformance.md --- docs/build/reference/zc-conformance.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/zc-conformance.md b/docs/build/reference/zc-conformance.md index efa980dbb7f..7c3d4f27a88 100644 --- a/docs/build/reference/zc-conformance.md +++ b/docs/build/reference/zc-conformance.md @@ -36,7 +36,7 @@ Here are the **`/Zc`** compiler options: | [`/Zc:hiddenFriend[-]`](zc-hiddenfriend.md) | Enforce Standard C++ hidden friend rules. Off by default unless **`/permissive-`** is specified. | | [`/Zc:implicitNoexcept[-]`](zc-implicitnoexcept-implicit-exception-specifiers.md) | Enable implicit **`noexcept`** on required functions. On by default. | | [`/Zc:inline[-]`](zc-inline-remove-unreferenced-comdat.md) | Remove unreferenced functions or data if they're COMDAT or have internal linkage only. Off by default. | -| [`/Zc:lambda[-]`](zc-lambda.md) | Enable new lambda processor for conformance-mode syntactic checks in generic lambdas. Off by default unless **`/std:c++20`** or later is specified. | +| [`/Zc:lambda[-]`](zc-lambda.md) | Enable new lambda processor for conformance-mode syntactic checks in generic lambdas. Off by default unless **`/permissive-`** or **`/std:c++20`** or later is specified. | | [`/Zc:noexceptTypes[-]`](zc-noexcepttypes.md) | Enforce C++17 **`noexcept`** rules. Off by default unless **`/std:c++17`** or later is specified. | | [`/Zc:nrvo[-]`](zc-nrvo.md) | Enable optional copy and move elisions. Off by default unless **`/O2`**, **`/permissive-`**, or **`/std:c++20`** or later is specified. | | [`/Zc:preprocessor[-]`](zc-preprocessor.md) | Use the new conforming preprocessor. Off by default unless **`/std:c11`** or later is specified. | From 433c15dd0b156e9b784fea9fe322533a55fbb5a7 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 9 Oct 2025 16:03:15 -0700 Subject: [PATCH 1991/2255] draft support update --- .../supported-platforms-visual-cpp.md | 6 ++- docs/overview/toc.yml | 4 +- docs/overview/what-s-new-for-msvc.md | 38 +++++++++++++++++++ ...t-s-new-for-visual-cpp-in-visual-studio.md | 10 ++++- 4 files changed, 54 insertions(+), 4 deletions(-) create mode 100644 docs/overview/what-s-new-for-msvc.md diff --git a/docs/overview/supported-platforms-visual-cpp.md b/docs/overview/supported-platforms-visual-cpp.md index 8c6f293023c..89a8064adf1 100644 --- a/docs/overview/supported-platforms-visual-cpp.md +++ b/docs/overview/supported-platforms-visual-cpp.md @@ -1,7 +1,7 @@ --- description: "Learn more about: Supported Platforms (Visual C++)" title: "Supported Platforms (Visual C++)" -ms.date: 11/09/2021 +ms.date: 10/09/2025 ms.service: "visual-cpp" ms.subservice: "tools" helpviewer_keywords: ["Visual C++, platforms supported", "platforms [C++]"] @@ -16,7 +16,7 @@ Apps built by using Visual Studio can be targeted to various platforms. |--|--|--|--|--| | Windows XP b | X | X | | | | Windows Vista | X | X | | | -| Windows 7 | X | X | | | +| Windows 7 | Xe | Xe | | | | Windows 8 | X | X | X | | | Windows 8.1 | X | X | X | | | Windows 10 | X | X | X | X | @@ -39,6 +39,8 @@ Apps built by using Visual Studio can be targeted to various platforms. d You can install the **Linux development with C++** workload in the installer for Visual Studio 2017 and later to target Linux platforms. For instructions, see [Download, install, and setup the Linux Workload](../linux/download-install-and-setup-the-linux-development-workload.md). This toolset compiles your executable on the target machine, so you can build for any supported architecture. +e Visual Studio 2026 18.0 and later no longer support targeting Windows 7 and Windows Server 2008 R2, which have stopped receiving security updates. + For information about how to set the target platform configuration, see [How to: Configure Visual C++ projects to target 64-bit, x64 platforms](../build/how-to-configure-visual-cpp-projects-to-target-64-bit-platforms.md). ## See also diff --git a/docs/overview/toc.yml b/docs/overview/toc.yml index 66d418921eb..792c8638e27 100644 --- a/docs/overview/toc.yml +++ b/docs/overview/toc.yml @@ -6,7 +6,9 @@ items: href: ../overview/visual-cpp-in-visual-studio.md - name: Overview of C++ development in Visual Studio href: ../overview/overview-of-cpp-development.md - - name: What's new for C++ in Visual Studio 2022 + - name: What's new for MSVC + href: ../overview/what-s-new-for-msvc.md + - name: What's new for C++ in Visual Studio href: ../overview/what-s-new-for-visual-cpp-in-visual-studio.md - name: What's new for C++ in Visual Studio 2019 href: ../overview/what-s-new-for-cpp-2019.md diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md new file mode 100644 index 00000000000..ee0ff78b78e --- /dev/null +++ b/docs/overview/what-s-new-for-msvc.md @@ -0,0 +1,38 @@ +--- +title: "What's new for MSVC" +description: "The new features and fixes in the Microsoft C/C++ compiler and tools (MSVC)." +ms.date: 10/09/2025 +ms.service: "visual-cpp" +ms.subservice: "compiler" +ms.custom: intro-whats-new +--- + +# What's new for MSVC + +Microsoft C++ (MSVC) brings many updates and fixes to the Microsoft C++ compiler and tools. + +- For more information on what's new in all of Visual Studio, see [What's new in Visual Studio 2022](/visualstudio/ide/whats-new-visual-studio-2022). +- For information about version build dates, see [Visual Studio 2022 Release History](/visualstudio/releases/2022/release-history). + +## What's new for MSVC version x.y + +*Released November 2025* + +| For more information about | See | +|---|---| +| What's new for C++ developers | [What's New for C++ Developers in Visual Studio 2022 17.14](https://devblogs.microsoft.com/cppblog/whats-new-for-c-developers-in-visual-studio-2022-17-14/) | +| Standard Library (STL) merged C++26 and C++23 features, Language Working Group (LWG) issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.14](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-1714) | +| C++ language updates | [C++ Language Updates in MSVC in Visual Studio 2022 17.14](https://devblogs.microsoft.com/cppblog/c-language-updates-in-msvc-in-visual-studio-2022-17-14/) | +| C++ language conformance improvements | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022 17.14](cpp-conformance-improvements.md#improvements_1714) | + +A quick highlight of some of the new features: + +TBD + +## Feedback and suggestions + +We'd love to hear from you! You can [Report a Problem or Suggest a Feature](/visualstudio/ide/how-to-report-a-problem-with-visual-studio) by using the Send Feedback icon in the upper right-hand corner of either the installer or the Visual Studio IDE, or from **Help** > **Send Feedback**. You can track your issues by using [Visual Studio Developer Community](https://developercommunity.visualstudio.com/), where you add comments or find solutions. You can also get free installation help through our [Live Chat support](https://visualstudio.microsoft.com/vs/support/#talktous). + +## Blogs + +Take advantage of the insights and recommendations available in the [Microsoft Developer Blogs](https://devblogs.microsoft.com/) site to stay up to date on all new releases. The blogs include deep dive posts on a broad range of features. The [C++ Team Blog](https://devblogs.microsoft.com/cppblog) and the [Visual Studio Blog](https://devblogs.microsoft.com/visualstudio) are of particular interest. \ No newline at end of file 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 4f546d1d8c0..92546434fb0 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,13 +1,21 @@ --- 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: 05/13/2025 +ms.date: 10/09/2025 ms.service: "visual-cpp" ms.subservice: "ide" ms.custom: intro-whats-new ai-usage: ai-assisted --- +# What's new for C++ in Visual Studio + +MSVC now ships on it's own cadence, independent of Visual Studio. For the latest updates to MSVC, see [What's new for MSVC](/cpp/overview/what-s-new-for-msvc.md). + +# What's new for C++ in Visual Studio 2026 + +VS 2026 18.0 and later no longer support targeting Windows 7 and Windows Server 2008 R2, which have stopped receiving security updates. + # What's new for C++ in Visual Studio 2022 Visual Studio 2022 brings many updates and fixes to the Microsoft C++ compiler and tools. The Visual Studio IDE also offers significant improvements in performance and productivity, and now runs natively as a 64-bit application. From e95b76ce43db8b11334d05e7848d7320920a6258 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 9 Oct 2025 16:14:11 -0700 Subject: [PATCH 1992/2255] update --- docs/overview/supported-platforms-visual-cpp.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/overview/supported-platforms-visual-cpp.md b/docs/overview/supported-platforms-visual-cpp.md index 89a8064adf1..e7fce871079 100644 --- a/docs/overview/supported-platforms-visual-cpp.md +++ b/docs/overview/supported-platforms-visual-cpp.md @@ -17,13 +17,13 @@ Apps built by using Visual Studio can be targeted to various platforms. | Windows XP b | X | X | | | | Windows Vista | X | X | | | | Windows 7 | Xe | Xe | | | -| Windows 8 | X | X | X | | -| Windows 8.1 | X | X | X | | +| Windows 8 | Xe | Xe | Xe | | +| Windows 8.1 | Xe | Xe | Xe | | | Windows 10 | X | X | X | X | | Windows 11 | X | X | X | X | | Windows Server 2003 b | X | X | | | -| Windows Server 2008 R2 | X | X | | | -| Windows Server 2012 R2 | X | X | | | +| Windows Server 2008 R2 | Xe | Xe | | | +| Windows Server 2012 R2 | Xe | Xe | | | | Windows Server 2016 | X | X | | | | Windows Server 2019 | X | X | | | | Windows Server 2022 | X | X | | | @@ -39,7 +39,7 @@ Apps built by using Visual Studio can be targeted to various platforms. d You can install the **Linux development with C++** workload in the installer for Visual Studio 2017 and later to target Linux platforms. For instructions, see [Download, install, and setup the Linux Workload](../linux/download-install-and-setup-the-linux-development-workload.md). This toolset compiles your executable on the target machine, so you can build for any supported architecture. -e Visual Studio 2026 18.0 and later no longer support targeting Windows 7 and Windows Server 2008 R2, which have stopped receiving security updates. +e Visual Studio 2026 18.0 and later no longer support targeting Windows 7/8/8.1 or Windows Server 2008 R2/2012/2012 R2. The minimum OS version that Visual Studio 2026 and later can target is Windows 10 or later and Windows Server 2016 or later. For information about how to set the target platform configuration, see [How to: Configure Visual C++ projects to target 64-bit, x64 platforms](../build/how-to-configure-visual-cpp-projects-to-target-64-bit-platforms.md). From 4423a0b9b23f56285790ba925a198e422e539a2a Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 9 Oct 2025 16:28:10 -0700 Subject: [PATCH 1993/2255] small edit --- docs/overview/supported-platforms-visual-cpp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/supported-platforms-visual-cpp.md b/docs/overview/supported-platforms-visual-cpp.md index e7fce871079..3ceead7215b 100644 --- a/docs/overview/supported-platforms-visual-cpp.md +++ b/docs/overview/supported-platforms-visual-cpp.md @@ -39,7 +39,7 @@ Apps built by using Visual Studio can be targeted to various platforms. d You can install the **Linux development with C++** workload in the installer for Visual Studio 2017 and later to target Linux platforms. For instructions, see [Download, install, and setup the Linux Workload](../linux/download-install-and-setup-the-linux-development-workload.md). This toolset compiles your executable on the target machine, so you can build for any supported architecture. -e Visual Studio 2026 18.0 and later no longer support targeting Windows 7/8/8.1 or Windows Server 2008 R2/2012/2012 R2. The minimum OS version that Visual Studio 2026 and later can target is Windows 10 or later and Windows Server 2016 or later. +e Visual Studio 2026 18.0 and later no longer support targeting Windows 7/8/8.1 or Windows Server 2008 R2/2012/2012 R2. Visual Studio 2026 and later target Windows 10 or later and Windows Server 2016 or later. For information about how to set the target platform configuration, see [How to: Configure Visual C++ projects to target 64-bit, x64 platforms](../build/how-to-configure-visual-cpp-projects-to-target-64-bit-platforms.md). From 5a77f0cb555f504e127229bd5770af122c37c05e Mon Sep 17 00:00:00 2001 From: David Justo Date: Tue, 14 Oct 2025 12:44:20 -0700 Subject: [PATCH 1994/2255] show '#ifdef' pattern for `__declspec(no_sanitize_address)` --- docs/sanitizers/asan-building.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/docs/sanitizers/asan-building.md b/docs/sanitizers/asan-building.md index b04ac105607..383eb40b291 100644 --- a/docs/sanitizers/asan-building.md +++ b/docs/sanitizers/asan-building.md @@ -35,18 +35,24 @@ int main() { The [`__declspec(no_sanitize_address)`](../cpp/no-sanitize-address.md) specifier can be used to selectively disable the sanitizer on functions, local variables, or global variables. This `__declspec` affects _compiler_ behavior, not _runtime_ behavior. ```cpp -__declspec(no_sanitize_address) +#ifdef __SANITIZE_ADDRESS__ +#define NO_SANITIZE_ADDRESS __declspec(no_sanitize_address) +#else +#define NO_SANITIZE_ADDRESS +#endif + +NO_SANITIZE_ADDRESS void test1() { int x[100]; x[100] = 5; // ASan exception not caught } void test2() { - __declspec(no_sanitize_address) int x[100]; + NO_SANITIZE_ADDRESS int x[100]; x[100] = 5; // ASan exception not caught } -__declspec(no_sanitize_address) int g[100]; +NO_SANITIZE_ADDRESS int g[100]; void test3() { g[100] = 5; // ASan exception not caught } From 8575d50d970c7fc05633052c30e33e74287ba6ad Mon Sep 17 00:00:00 2001 From: David Justo Date: Tue, 14 Oct 2025 17:36:06 -0700 Subject: [PATCH 1995/2255] add more context to sample --- docs/sanitizers/asan-building.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/sanitizers/asan-building.md b/docs/sanitizers/asan-building.md index 383eb40b291..67def513490 100644 --- a/docs/sanitizers/asan-building.md +++ b/docs/sanitizers/asan-building.md @@ -36,6 +36,9 @@ The [`__declspec(no_sanitize_address)`](../cpp/no-sanitize-address.md) specifier ```cpp #ifdef __SANITIZE_ADDRESS__ +// `no_sanitize_address` is only defined when compiling with ASan. +// You can guard against this by checking if `__SANITIZE_ADDRESS__` +// is defined. #define NO_SANITIZE_ADDRESS __declspec(no_sanitize_address) #else #define NO_SANITIZE_ADDRESS From 4aab6801c102ac440abcc23b8d70ec2d8458ff92 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Tue, 14 Oct 2025 19:55:52 -0700 Subject: [PATCH 1996/2255] Change AddressSanitizer references to MSVC AddressSanitizer Getting a head start on the new branding. --- docs/sanitizers/asan-building.md | 65 +++++++++++++++++--------------- 1 file changed, 34 insertions(+), 31 deletions(-) diff --git a/docs/sanitizers/asan-building.md b/docs/sanitizers/asan-building.md index 67def513490..09140d51c92 100644 --- a/docs/sanitizers/asan-building.md +++ b/docs/sanitizers/asan-building.md @@ -1,30 +1,31 @@ --- -title: "AddressSanitizer language, build, and debugging reference" -description: "Technical description of building for the AddressSanitizer" +title: "MSVC AddressSanitizer language, build, and debugging reference" +description: "Technical description of building for the MSVC AddressSanitizer" ms.date: 02/05/2024 f1_keywords: ["__SANITIZE_ADDRESS__", "ASAN_VCASAN_DEBUGGING"] -helpviewer_keywords: ["ASan reference", "AddressSanitizer reference", "Address Sanitizer reference"] +helpviewer_keywords: ["ASan reference", "MSVC AddressSanitizer reference", "MSVC Address Sanitizer reference"] --- -# AddressSanitizer language, build, and debugging reference +# MSVC AddressSanitizer language, build, and debugging reference -This article describes the AddressSanitizer language specification, compiler options, linker options, and the options that control Visual Studio debugger integration specific to the AddressSanitizer. +This article describes the MSVC AddressSanitizer language specification, compiler options, linker options, and the options that control Visual Studio debugger integration specific to the MSVC AddressSanitizer. -For more information on the AddressSanitizer runtime, see the [runtime reference](asan-runtime.md). It includes information on intercepted functions and how to hook custom allocators. For more information on saving crash dumps from AddressSanitizer failures, see the [crash dump reference](asan-offline-crash-dumps.md). +For more information on the MSVC AddressSanitizer runtime, see the [runtime reference](asan-runtime.md). It includes information on intercepted functions and how to hook custom allocators. For more information on saving crash dumps from MSVC AddressSanitizer failures, see the [crash dump reference](asan-offline-crash-dumps.md). ## Language specification ### `__SANITIZE_ADDRESS__` -The `__SANITIZE_ADDRESS__` preprocessor macro is defined as `1` when [`/fsanitize=address`](../build/reference/fsanitize.md) is set. This macro is useful for advanced users to conditionally specify source code for the presence of the AddressSanitizer runtime. +The `__SANITIZE_ADDRESS__` preprocessor macro is defined as `1` when [`/fsanitize=address`](../build/reference/fsanitize.md) is set. This macro is useful to conditionally specify source code for the presence of the MSVC AddressSanitizer runtime. ```cpp #include -int main() { +int main() +{ #ifdef __SANITIZE_ADDRESS__ - printf("Address sanitizer enabled"); + printf("MSVC AddressSanitizer enabled"); #else - printf("Address sanitizer not enabled"); + printf("MSVC AddressSanitizer not enabled"); #endif return 1; } @@ -36,27 +37,29 @@ The [`__declspec(no_sanitize_address)`](../cpp/no-sanitize-address.md) specifier ```cpp #ifdef __SANITIZE_ADDRESS__ -// `no_sanitize_address` is only defined when compiling with ASan. -// You can guard against this by checking if `__SANITIZE_ADDRESS__` -// is defined. +// no_sanitize_address is only defined when compiling with MSVC AddressSanitizer. +// Guard against this by checking if `__SANITIZE_ADDRESS__` is defined. #define NO_SANITIZE_ADDRESS __declspec(no_sanitize_address) #else #define NO_SANITIZE_ADDRESS #endif NO_SANITIZE_ADDRESS -void test1() { +void test1() +{ int x[100]; x[100] = 5; // ASan exception not caught } -void test2() { +void test2() +{ NO_SANITIZE_ADDRESS int x[100]; x[100] = 5; // ASan exception not caught } NO_SANITIZE_ADDRESS int g[100]; -void test3() { +void test3() +{ g[100] = 5; // ASan exception not caught } ``` @@ -65,11 +68,11 @@ void test3() { ### `/fsanitize=address` compiler option -The [**`/fsanitize=address`**](../build/reference/fsanitize.md) compiler option instruments memory references in your code to catch memory safety errors at runtime. The instrumentation hooks loads, stores, scopes, `alloca`, and CRT functions. It can detect hidden bugs such as out-of-bounds, use-after-free, use-after-scope, and so on. For a nonexhaustive list of errors detected at runtime, see [AddressSanitizer error examples](asan-error-examples.md). +The [**`/fsanitize=address`**](../build/reference/fsanitize.md) compiler option instruments memory references in your code to catch memory safety errors at runtime. The instrumentation hooks loads, stores, scopes, `alloca`, and CRT functions. It can detect hidden bugs such as out-of-bounds, use-after-free, use-after-scope, and so on. For a nonexhaustive list of errors detected at runtime, see [MSVC AddressSanitizer error examples](asan-error-examples.md). **`/fsanitize=address`** is compatible with all existing C++ or C optimization levels (for example, **`/Od`**, **`/O1`**, **`/O2`**, and **`/O2 /GL`**). The code produced with this option works with static and dynamic CRTs (for example, **`/MD`**, **`/MDd`**, **`/MT`**, and **`/MTd`**). This compiler option can be used to create an .EXE or .DLL targeting x86 or x64. Debug information is required for optimal formatting of call stacks. This compiler option isn't supported with profile guided optimization. -For examples of code that demonstrates several kinds of error detection, see [AddressSanitizer error examples](asan-error-examples.md). +For examples of code that demonstrates several kinds of error detection, see [MSVC AddressSanitizer error examples](asan-error-examples.md). ### `/fsanitize=fuzzer` compiler option (experimental) @@ -104,7 +107,7 @@ If you specify **`/NODEFAULTLIB`** and you don't specify one of these libraries, ### `/fsanitize-address-use-after-return` compiler option (experimental) -By default, the MSVC compiler (unlike Clang) doesn't generate code to allocate frames in the heap to catch use-after-return errors. To catch these errors using AddressSanitizer, you must: +By default, the MSVC compiler (unlike Clang) doesn't generate code to allocate frames in the heap to catch use-after-return errors. To catch these errors using MSVC AddressSanitizer, you must: 1. Compile using the [`/fsanitize-address-use-after-return`](../build/reference/fsanitize.md) option. 2. Before executing your program, run `set ASAN_OPTIONS=detect_stack_use_after_return=1` to set the runtime check option. @@ -129,13 +132,13 @@ Using **`/fsanitize-address-asan-compat-lib`** to link a newer compiler with an ### `/INFERASANLIBS[:NO]` linker option -The **`/fsanitize=address`** compiler option marks objects to specify which AddressSanitizer library to link into your executable. The libraries have names that begin with *`clang_rt.asan*`*. The [`/INFERASANLIBS`](../build/reference/inferasanlibs.md) linker option (on by default) links these libraries from their default locations automatically. Here are the libraries chosen and automatically linked in. +The **`/fsanitize=address`** compiler option marks objects to specify which MSVC AddressSanitizer library to link into your executable. The libraries have names that begin with *`clang_rt.asan*`*. The [`/INFERASANLIBS`](../build/reference/inferasanlibs.md) linker option (on by default) links these libraries from their default locations automatically. Here are the libraries chosen and automatically linked in. > [!NOTE] > In the following table, *`{arch}`* is either *`i386`* or *`x86_64`*. > These libraries use Clang conventions for architecture names. MSVC conventions are normally `x86` and `x64` rather than `i386` and `x86_64`. They refer to the same architectures. -| CRT option | AddressSanitizer runtime library (.lib) | Address runtime binary (.dll) +| CRT option | MSVC AddressSanitizer runtime library (.lib) | Address runtime binary (.dll) |--|--|--| | `/MT` or `/MTd` | *`clang_rt.asan_dynamic-{arch}.lib`*, *`/wholearchive:clang_rt.asan_static_runtime_thunk-{arch}.lib`* | *`clang_rt.asan_dynamic-{arch}.dll`* | `/MD` or `/MDd` | *`clang_rt.asan_dynamic-{arch}.lib`*, *`/wholearchive:clang_rt.asan_dynamic_runtime_thunk-{arch}.lib`* | *`clang_rt.asan_dynamic-{arch}.dll`* @@ -144,10 +147,10 @@ The linker option [`/INFERASANLIBS:NO`](../build/reference/inferasanlibs.md) pre **Previous Versions** -Prior to Visual Studio 17.7 Preview 3, statically linked (**`/MT`** or **`/MTd`**) builds didn't use a DLL dependency. Instead, the AddressSanitizer runtime was statically linked into the user's EXE. DLL projects would then load exports from the user's EXE to access ASan functionality. Also, dynamically linked projects (**`/MD`** or **`/MTd`**) used different libraries and DLLs depending on whether the project was configured for debug or release. For more information about these changes and their motivations, see [MSVC Address Sanitizer – One DLL for all Runtime Configurations](https://devblogs.microsoft.com/cppblog/msvc-address-sanitizer-one-dll-for-all-runtime-configurations/). +Prior to Visual Studio 17.7 Preview 3, statically linked (**`/MT`** or **`/MTd`**) builds didn't use a DLL dependency. Instead, the MSVC AddressSanitizer runtime was statically linked into the user's EXE. DLL projects would then load exports from the user's EXE to access ASan functionality. Also, dynamically linked projects (**`/MD`** or **`/MTd`**) used different libraries and DLLs depending on whether the project was configured for debug or release. For more information about these changes and their motivations, see [MSVC AddressSanitizer – One DLL for all Runtime Configurations](https://devblogs.microsoft.com/cppblog/msvc-address-sanitizer-one-dll-for-all-runtime-configurations/). -| CRT runtime option | DLL or EXE | AddressSanitizer runtime libraries | +| CRT runtime option | DLL or EXE | MSVC AddressSanitizer runtime libraries | |--|--|--| | **`/MT`** | EXE | *`/wholearchive:clang_rt.asan-{arch}.lib`*, *`clang_rt.asan_cxx-{arch}.lib`* | | **`/MT`** | DLL | *`/wholearchive:clang_rt.asan_dll_thunk-{arch}.lib`* | @@ -160,7 +163,7 @@ Prior to Visual Studio 17.7 Preview 3, statically linked (**`/MT`** or **`/MTd`* ### `/fno-sanitize-address-vcasan-lib` compiler option -The **`/fsanitize=address`** option links in extra libraries for an improved Visual Studio debugging experience when an AddressSanitizer exception is thrown. These libraries are called **VCAsan**. The libraries enable Visual Studio to display AddressSanitizer errors on your source code. They also enable the executable to generate crash dumps when an AddressSanitizer error report is created. For more information, see [Visual Studio AddressSanitizer extended functionality library](asan-debugger-integration.md). +The **`/fsanitize=address`** option links in extra libraries for an improved Visual Studio debugging experience when an MSVC AddressSanitizer exception is thrown. These libraries are called **VCAsan**. The libraries enable Visual Studio to display MSVC AddressSanitizer errors on your source code. They also enable the executable to generate crash dumps when an MSVC AddressSanitizer error report is created. For more information, see [Visual Studio MSVC AddressSanitizer extended functionality library](asan-debugger-integration.md). The library chosen depends on the compiler options, and is automatically linked in. @@ -188,10 +191,10 @@ To enable this behavior, run the command `set ASAN_VCASAN_DEBUGGING=1` before yo ## See also -[AddressSanitizer overview](asan.md)\ -[AddressSanitizer known issues](asan-known-issues.md)\ -[AddressSanitizer runtime reference](asan-runtime.md)\ -[AddressSanitizer shadow bytes](asan-shadow-bytes.md)\ -[AddressSanitizer cloud or distributed testing](asan-offline-crash-dumps.md)\ -[AddressSanitizer debugger integration](asan-debugger-integration.md)\ -[AddressSanitizer error examples](asan-error-examples.md) +[MSVC AddressSanitizer overview](asan.md)\ +[MSVC AddressSanitizer known issues](asan-known-issues.md)\ +[MSVC AddressSanitizer runtime reference](asan-runtime.md)\ +[MSVC AddressSanitizer shadow bytes](asan-shadow-bytes.md)\ +[MSVC AddressSanitizer cloud or distributed testing](asan-offline-crash-dumps.md)\ +[MSVC AddressSanitizer debugger integration](asan-debugger-integration.md)\ +[MSVC AddressSanitizer error examples](asan-error-examples.md) From 7d0c3bf5c610b8c91285616a124026d0acf0e508 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 15 Oct 2025 10:15:59 -0700 Subject: [PATCH 1997/2255] new article for #warning --- .../hash-error-directive-c-cpp.md | 6 ++-- .../hash-warning-directive-c-cpp.md | 29 +++++++++++++++++++ docs/preprocessor/preprocessor-directives.md | 8 ++--- docs/preprocessor/toc.yml | 2 ++ 4 files changed, 38 insertions(+), 7 deletions(-) create mode 100644 docs/preprocessor/hash-warning-directive-c-cpp.md diff --git a/docs/preprocessor/hash-error-directive-c-cpp.md b/docs/preprocessor/hash-error-directive-c-cpp.md index 2a5ec7bfe95..f98fd41b1fd 100644 --- a/docs/preprocessor/hash-error-directive-c-cpp.md +++ b/docs/preprocessor/hash-error-directive-c-cpp.md @@ -4,11 +4,10 @@ title: "#error directive (C/C++)" ms.date: "08/29/2019" f1_keywords: ["#error"] helpviewer_keywords: ["#error directive", "preprocessor, directives", "error directive (#error directive)"] -ms.assetid: d550a802-ff19-4347-9597-688935d23b2b --- # #error directive (C/C++) -The **#error** directive emits a user-specified error message at compile time, and then terminates the compilation. +The `#error` directive emits a user-specified error message at compile time. Then it terminates the compilation. ## Syntax @@ -26,4 +25,5 @@ The error message that this directive emits includes the *token-string* paramete ## See also -[Preprocessor directives](../preprocessor/preprocessor-directives.md) +[Preprocessor directives](../preprocessor/preprocessor-directives.md)\ +[#warning directive](../preprocessor/hash-warning-directive-c-cpp.md) diff --git a/docs/preprocessor/hash-warning-directive-c-cpp.md b/docs/preprocessor/hash-warning-directive-c-cpp.md new file mode 100644 index 00000000000..0f2763c0172 --- /dev/null +++ b/docs/preprocessor/hash-warning-directive-c-cpp.md @@ -0,0 +1,29 @@ +--- +description: "Learn more about: #warning directive (C/C++)" +title: "#warning directive (C/C++)" +ms.date: "11/08/2023" +f1_keywords: ["#warning"] +helpviewer_keywords: ["#warning directive", "preprocessor, directives", "warning directive (#warning directive)"] +--- +# #warning directive (C/C++) + +The **#warning** directive emits a user-specified warning message at compile time, and does not stop the compilation. This directive is a standard feature since C23 and C++23. + +## Syntax + +> **#warning** *token-string* + +## Remarks + +The warning message that this directive emits includes the *token-string* parameter. The *token-string* parameter is not subject to macro expansion and can be optionally enclosed in quotes. This directive is used to inform the developer of a non-fatal issue that may have occured, or to disseminate important information. The following example shows how the **#warning** directive is used: + +```cpp +#if defined(_LEGACY_FEATURE_FLAG) +#warning "_LEGACY_FEATURE is deprecated and should not be used." +#endif +``` + +## See also + +[Preprocessor directives](../preprocessor/preprocessor-directives.md)\ +[#error directive](../preprocessor/hash-error-directive-c-cpp.md) \ No newline at end of file diff --git a/docs/preprocessor/preprocessor-directives.md b/docs/preprocessor/preprocessor-directives.md index 38d13833a81..f3c11dd326f 100644 --- a/docs/preprocessor/preprocessor-directives.md +++ b/docs/preprocessor/preprocessor-directives.md @@ -1,13 +1,12 @@ --- description: "Learn more about: Preprocessor directives" title: "Preprocessor directives" -ms.date: "08/29/2019" +ms.date: 10/15/2025 helpviewer_keywords: ["directives, preprocessor", "preprocessor, directives"] -ms.assetid: e0fc4564-b6cf-4a36-bf51-6ccd7abd0a94 --- # Preprocessor directives -Preprocessor directives, such as `#define` and `#ifdef`, are typically used to make source programs easy to change and easy to compile in different execution environments. Directives in the source file tell the preprocessor to take specific actions. For example, the preprocessor can replace tokens in the text, insert the contents of other files into the source file, or suppress compilation of part of the file by removing sections of text. Preprocessor lines are recognized and carried out before macro expansion. Therefore, if a macro expands into something that looks like a preprocessor command, it isn't recognized by the preprocessor. +Preprocessor directives, such as `#define` and `#ifdef`, are used to make source programs easy to change and compile in different execution environments. Directives in the source file tell the preprocessor to take specific actions. For example, the preprocessor can replace tokens in the text, insert the contents of other files into the source file, or suppress compilation of part of the file by removing sections of text. Preprocessor directives are processed before macro expansion. Therefore, if a macro expands into something that looks like a preprocessor command, it isn't recognized by the preprocessor. Preprocessor statements use the same character set as source file statements, with the exception that escape sequences aren't supported. The character set used in preprocessor statements is the same as the execution character set. The preprocessor also recognizes negative character values. @@ -29,7 +28,8 @@ The preprocessor recognizes the following directives: :::column span=""::: [`#import`](../preprocessor/hash-import-directive-cpp.md)\ [`#include`](../preprocessor/hash-include-directive-c-cpp.md)\ - [`#line`](../preprocessor/hash-line-directive-c-cpp.md) + [`#line`](../preprocessor/hash-line-directive-c-cpp.md)\ + [`#warning`](../preprocessor/hash-warning-directive-c-cpp.md) :::column-end::: :::column span=""::: [`#pragma`](../preprocessor/pragma-directives-and-the-pragma-keyword.md)\ diff --git a/docs/preprocessor/toc.yml b/docs/preprocessor/toc.yml index 4535a25eb64..aa4066ec4e0 100644 --- a/docs/preprocessor/toc.yml +++ b/docs/preprocessor/toc.yml @@ -92,6 +92,8 @@ items: href: ../preprocessor/hash-undef-directive-c-cpp.md - name: "#using directive (C++/CLI)" href: ../preprocessor/hash-using-directive-cpp.md + - name: "#warning directive (C/C++)" + href: ../preprocessor/hash-warning-directive-c-cpp.md - name: Preprocessor operators expanded: false items: From 895556a39467595fc1d8c987516a351d3bc474a2 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 15 Oct 2025 10:36:56 -0700 Subject: [PATCH 1998/2255] acrolinx --- docs/preprocessor/hash-warning-directive-c-cpp.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/preprocessor/hash-warning-directive-c-cpp.md b/docs/preprocessor/hash-warning-directive-c-cpp.md index 0f2763c0172..108d3518e93 100644 --- a/docs/preprocessor/hash-warning-directive-c-cpp.md +++ b/docs/preprocessor/hash-warning-directive-c-cpp.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["#warning directive", "preprocessor, directives", "warning --- # #warning directive (C/C++) -The **#warning** directive emits a user-specified warning message at compile time, and does not stop the compilation. This directive is a standard feature since C23 and C++23. +The **#warning** directive emits a user-specified warning message at compile time, and doesn't stop compilation. This directive is available starting in C23 and C++23. ## Syntax @@ -15,7 +15,7 @@ The **#warning** directive emits a user-specified warning message at compile tim ## Remarks -The warning message that this directive emits includes the *token-string* parameter. The *token-string* parameter is not subject to macro expansion and can be optionally enclosed in quotes. This directive is used to inform the developer of a non-fatal issue that may have occured, or to disseminate important information. The following example shows how the **#warning** directive is used: +The warning message that this directive emits includes the *token-string* parameter. The *token-string* parameter isn't subject to macro expansion and can be optionally enclosed in quotes. This directive is used to inform the developer of a nonfatal issue that may occur, or to disseminate important information. The following example shows how to use the **#warning** directive: ```cpp #if defined(_LEGACY_FEATURE_FLAG) From e771bbc32e6e1b8553cbf05a8d70e835c0f8990d Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 15 Oct 2025 10:46:07 -0700 Subject: [PATCH 1999/2255] wording --- docs/preprocessor/hash-warning-directive-c-cpp.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/preprocessor/hash-warning-directive-c-cpp.md b/docs/preprocessor/hash-warning-directive-c-cpp.md index 108d3518e93..a8475612c57 100644 --- a/docs/preprocessor/hash-warning-directive-c-cpp.md +++ b/docs/preprocessor/hash-warning-directive-c-cpp.md @@ -1,13 +1,13 @@ --- description: "Learn more about: #warning directive (C/C++)" title: "#warning directive (C/C++)" -ms.date: "11/08/2023" +ms.date: 10/15/2025 f1_keywords: ["#warning"] helpviewer_keywords: ["#warning directive", "preprocessor, directives", "warning directive (#warning directive)"] --- # #warning directive (C/C++) -The **#warning** directive emits a user-specified warning message at compile time, and doesn't stop compilation. This directive is available starting in C23 and C++23. +The **#warning** directive emits a user-specified warning message at compile time. It doesn't stop compilation. This directive is available starting in C23 and C++23. ## Syntax @@ -15,7 +15,10 @@ The **#warning** directive emits a user-specified warning message at compile tim ## Remarks -The warning message that this directive emits includes the *token-string* parameter. The *token-string* parameter isn't subject to macro expansion and can be optionally enclosed in quotes. This directive is used to inform the developer of a nonfatal issue that may occur, or to disseminate important information. The following example shows how to use the **#warning** directive: +The warning message is the *token-string* parameter. The *token-string* parameter isn't subject to macro expansion and can be optionally enclosed in quotes.\ +Use this directive to inform the developer of a nonfatal issue or to communicate other important information during compilation. + +The following example shows how to use the **#warning** directive: ```cpp #if defined(_LEGACY_FEATURE_FLAG) From ed81a241ce9e6ad251d475e873a5a8a521045412 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 15 Oct 2025 11:05:01 -0700 Subject: [PATCH 2000/2255] small edit --- docs/preprocessor/hash-warning-directive-c-cpp.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/preprocessor/hash-warning-directive-c-cpp.md b/docs/preprocessor/hash-warning-directive-c-cpp.md index a8475612c57..83c36ab7418 100644 --- a/docs/preprocessor/hash-warning-directive-c-cpp.md +++ b/docs/preprocessor/hash-warning-directive-c-cpp.md @@ -15,7 +15,8 @@ The **#warning** directive emits a user-specified warning message at compile tim ## Remarks -The warning message is the *token-string* parameter. The *token-string* parameter isn't subject to macro expansion and can be optionally enclosed in quotes.\ +The warning message is the *token-string* parameter. The *token-string* parameter isn't subject to macro expansion and can be optionally enclosed in quotes. + Use this directive to inform the developer of a nonfatal issue or to communicate other important information during compilation. The following example shows how to use the **#warning** directive: From e50b998580831209857e086e92f6122a156fd1d0 Mon Sep 17 00:00:00 2001 From: Avasam Date: Sun, 19 Oct 2025 00:36:06 -0400 Subject: [PATCH 2001/2255] Removed mention of inexistant `CSliderCtrl::VerifyPos` --- docs/mfc/slider-control-member-functions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/mfc/slider-control-member-functions.md b/docs/mfc/slider-control-member-functions.md index 10e1c674727..2e0e2228d90 100644 --- a/docs/mfc/slider-control-member-functions.md +++ b/docs/mfc/slider-control-member-functions.md @@ -9,7 +9,7 @@ ms.assetid: dbde49ee-7306-4d14-a6ce-d09aa198178f An application can call the slider control's member functions to retrieve information about the slider control ([CSliderCtrl](../mfc/reference/csliderctrl-class.md)) and to change its characteristics. -To retrieve the position of the slider (that is, the value the user has chosen), use the [GetPos](../mfc/reference/csliderctrl-class.md#getpos) member function. To set the position of the slider, use the [SetPos](../mfc/reference/csliderctrl-class.md#setpos) member function. At any time you can use the `VerifyPos` member function to make sure that the slider is between the minimum and maximum values. +To retrieve the position of the slider (that is, the value the user has chosen), use the [GetPos](../mfc/reference/csliderctrl-class.md#getpos) member function. To set the position of the slider, use the [SetPos](../mfc/reference/csliderctrl-class.md#setpos) member function. The range of a slider control is the set of contiguous values that the slider control can represent. Most applications use the [SetRange](../mfc/reference/csliderctrl-class.md#setrange) member function to set the range of a slider control when it is first created. Applications can dynamically alter the range after the slider control has been created by using the [SetRangeMax](../mfc/reference/csliderctrl-class.md#setrangemax) and [SetRangeMin](../mfc/reference/csliderctrl-class.md#setrangemin) member functions. An application that allows the range to be changed dynamically typically retrieves the final range settings when the user has finished working with the slider control. To retrieve these settings, use the [GetRange](../mfc/reference/csliderctrl-class.md#getrange), [GetRangeMax](../mfc/reference/csliderctrl-class.md#getrangemax), and [GetRangeMin](../mfc/reference/csliderctrl-class.md#getrangemin) member functions. From a074e1ab25e56c88a94001586b11b9902d4eb453 Mon Sep 17 00:00:00 2001 From: Mahmoud Saleh <12202790+MahmoudGSaleh@users.noreply.github.com> Date: Mon, 20 Oct 2025 13:57:13 -0700 Subject: [PATCH 2002/2255] Revise Visual C++ Redistributable support details Updated Windows XP support information and added note on Visual Studio 2015 support lifecycle. --- docs/windows/latest-supported-vc-redist.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index 9217788e655..7a1405a5465 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -58,8 +58,9 @@ Download other versions, including long term servicing release channel (LTSC) ve - The Visual C++ Redistributable for Visual Studio 2015-2022 doesn't have separate packages for different languages. It contains EULAs for all supported languages. - Some of the downloads that are mentioned in this article are currently available on [my.visualstudio.com](https://my.visualstudio.com/). Log in using a Visual Studio Subscription account so that you can access the download links. If you're asked for credentials, use your existing Visual Studio subscription account. Or, create a free account by choosing the **No account? Create one!** link. - Visual Studio versions since Visual Studio 2015 share the same Redistributable files. For example, any apps built by the Visual Studio 2015, 2017, 2019, or 2022 toolsets can use the latest Microsoft Visual C++ Redistributable. However, the version of the Microsoft Visual C++ Redistributable installed on the machine must be the same or higher than the version of the Visual C++ toolset used to create your application. For more information about which version of the Redistributable to install, see [Determining which DLLs to redistribute](determining-which-dlls-to-redistribute.md). For more information about binary compatibility, see [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md). -- **Windows XP Support**: Microsoft ended support for Windows XP on April 8, 2014. Current versions of the Visual C++ Redistributable for Visual Studio 2015-2022 only support Windows 7, 8.1, 10, and 11. The last version of the Visual C++ Redistributable that works on Windows XP shipped in Visual Studio 2019 version 16.7 (file versions starting with **14.27**). The Redistributable is available in the [my.visualstudio.com Downloads](https://my.visualstudio.com/Downloads/) section as **Visual C++ Redistributable for Visual Studio 2019 (version 16.7)**. Use the Search box to find this version. To download the files, select the platform and language you need, and then choose the **Download** button. -- The Visual C++ Redistributable supports several command-line options. For more information, see [Command-line options for the Redistributable packages](./redistributing-visual-cpp-files.md#command-line-options-for-the-redistributable-packages). +- **Windows XP Support**: Microsoft ended support for Windows XP on April 8, 2014. Current versions of the Visual C++ Redistributable for Visual Studio 2015-2022 only support Windows 7, 8.1, 10, and 11. +- Support for Visual Studio 2015 has ended on October 15, 2025. Since the support lifecycle of Visual C++ Redistributable follows the version of Visual Studio in which they first ship, support for Visual C++ Redistributable 2015 (version 14.0.24212) has also ended on the same date. +- The Visual C++ Redistributable supports several command-line options. For more information, see [Command-line options for the Redistributable packages](./redistributing-visual-cpp-files.md#command-line-options-for-the-redistributable-packages). ## Unsupported legacy versions From 7eb1ddd8e5a3b0721ca9bd58b62f81331450d9d2 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Tue, 21 Oct 2025 13:00:31 -0700 Subject: [PATCH 2003/2255] edit --- docs/windows/latest-supported-vc-redist.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index 7a1405a5465..878325159a6 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -59,7 +59,7 @@ Download other versions, including long term servicing release channel (LTSC) ve - Some of the downloads that are mentioned in this article are currently available on [my.visualstudio.com](https://my.visualstudio.com/). Log in using a Visual Studio Subscription account so that you can access the download links. If you're asked for credentials, use your existing Visual Studio subscription account. Or, create a free account by choosing the **No account? Create one!** link. - Visual Studio versions since Visual Studio 2015 share the same Redistributable files. For example, any apps built by the Visual Studio 2015, 2017, 2019, or 2022 toolsets can use the latest Microsoft Visual C++ Redistributable. However, the version of the Microsoft Visual C++ Redistributable installed on the machine must be the same or higher than the version of the Visual C++ toolset used to create your application. For more information about which version of the Redistributable to install, see [Determining which DLLs to redistribute](determining-which-dlls-to-redistribute.md). For more information about binary compatibility, see [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md). - **Windows XP Support**: Microsoft ended support for Windows XP on April 8, 2014. Current versions of the Visual C++ Redistributable for Visual Studio 2015-2022 only support Windows 7, 8.1, 10, and 11. -- Support for Visual Studio 2015 has ended on October 15, 2025. Since the support lifecycle of Visual C++ Redistributable follows the version of Visual Studio in which they first ship, support for Visual C++ Redistributable 2015 (version 14.0.24212) has also ended on the same date. +- Support for Visual Studio 2015 ended on October 15, 2025. Because support for the Visual C++ Redistributable is connected to the version of Visual Studio in which they first ship, support for Visual C++ Redistributable 2015 (version 14.0.24212) also ended October 15, 2025. - The Visual C++ Redistributable supports several command-line options. For more information, see [Command-line options for the Redistributable packages](./redistributing-visual-cpp-files.md#command-line-options-for-the-redistributable-packages). ## Unsupported legacy versions From c867a5e49cc45a909acf6ce794b147c76fabd551 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 21 Oct 2025 14:35:31 -0700 Subject: [PATCH 2004/2255] edits --- docs/overview/supported-platforms-visual-cpp.md | 2 +- docs/overview/what-s-new-for-msvc.md | 4 ++-- docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/overview/supported-platforms-visual-cpp.md b/docs/overview/supported-platforms-visual-cpp.md index 3ceead7215b..17c444bd70b 100644 --- a/docs/overview/supported-platforms-visual-cpp.md +++ b/docs/overview/supported-platforms-visual-cpp.md @@ -1,7 +1,7 @@ --- description: "Learn more about: Supported Platforms (Visual C++)" title: "Supported Platforms (Visual C++)" -ms.date: 10/09/2025 +ms.date: 10/17/2025 ms.service: "visual-cpp" ms.subservice: "tools" helpviewer_keywords: ["Visual C++, platforms supported", "platforms [C++]"] diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md index ee0ff78b78e..bd24a7c88a3 100644 --- a/docs/overview/what-s-new-for-msvc.md +++ b/docs/overview/what-s-new-for-msvc.md @@ -9,7 +9,7 @@ ms.custom: intro-whats-new # What's new for MSVC -Microsoft C++ (MSVC) brings many updates and fixes to the Microsoft C++ compiler and tools. +Version x.y.z. brings many updates and fixes to the Microsoft C++ compiler and tools. - For more information on what's new in all of Visual Studio, see [What's new in Visual Studio 2022](/visualstudio/ide/whats-new-visual-studio-2022). - For information about version build dates, see [Visual Studio 2022 Release History](/visualstudio/releases/2022/release-history). @@ -21,7 +21,7 @@ Microsoft C++ (MSVC) brings many updates and fixes to the Microsoft C++ compiler | For more information about | See | |---|---| | What's new for C++ developers | [What's New for C++ Developers in Visual Studio 2022 17.14](https://devblogs.microsoft.com/cppblog/whats-new-for-c-developers-in-visual-studio-2022-17-14/) | -| Standard Library (STL) merged C++26 and C++23 features, Language Working Group (LWG) issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.14](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-1714) | +| Standard Library (STL) merged C++26 and C++23 features, Language Working Group (CWG) issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.14](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-1714) | | C++ language updates | [C++ Language Updates in MSVC in Visual Studio 2022 17.14](https://devblogs.microsoft.com/cppblog/c-language-updates-in-msvc-in-visual-studio-2022-17-14/) | | C++ language conformance improvements | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022 17.14](cpp-conformance-improvements.md#improvements_1714) | 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 92546434fb0..68de088af23 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 @@ -10,11 +10,11 @@ ai-usage: ai-assisted # What's new for C++ in Visual Studio -MSVC now ships on it's own cadence, independent of Visual Studio. For the latest updates to MSVC, see [What's new for MSVC](/cpp/overview/what-s-new-for-msvc.md). +MSVC now ships on its own cadence, independent of Visual Studio. For the latest updates to MSVC, see [What's new for MSVC](/cpp/overview/what-s-new-for-msvc.md). # What's new for C++ in Visual Studio 2026 -VS 2026 18.0 and later no longer support targeting Windows 7 and Windows Server 2008 R2, which have stopped receiving security updates. +VS 2026 18.0 and later no longer support targeting Windows 7/8/8.1 or Windows Server 2008 R2/2012/2012 R2, which have stopped receiving security updates. # What's new for C++ in Visual Studio 2022 From 776a2042c67b08de2e1a2991012f99c02116270e Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 21 Oct 2025 14:57:38 -0700 Subject: [PATCH 2005/2255] new avx10.2 flag --- docs/build/reference/arch-x64.md | 16 +++++++++++----- docs/build/reference/arch-x86.md | 16 +++++++++++----- docs/build/reference/vlen.md | 9 ++++++--- docs/preprocessor/predefined-macros.md | 20 +++++++++----------- 4 files changed, 37 insertions(+), 24 deletions(-) diff --git a/docs/build/reference/arch-x64.md b/docs/build/reference/arch-x64.md index 0bcf4ff2022..625ee1411f8 100644 --- a/docs/build/reference/arch-x64.md +++ b/docs/build/reference/arch-x64.md @@ -1,9 +1,9 @@ --- description: "Learn more about: /arch (x64)" title: "/arch (x64)" -ms.date: 06/30/2022 -f1_keywords: ["/arch:SSE2", "/arch:SSE4.2", "/arch:AVX", "/arch:AVX2", "/arch:AVX512", "/arch:AVX10.1"] -helpviewer_keywords: ["/arch:SSE2 compiler option [C++]", "/arch:SSE4.2 compiler option [C++]", "/arch:AVX compiler option [C++]", "/arch:AVX2 compiler option [C++]", "/arch:AVX512 compiler option [C++]", "/arch:AVX10.1 compiler option [C++]"] +ms.date: 10/21/2025 +f1_keywords: ["/arch:SSE2", "/arch:SSE4.2", "/arch:AVX", "/arch:AVX2", "/arch:AVX512", "/arch:AVX10.1", /arch:AVX10.2"] +helpviewer_keywords: ["/arch:SSE2 compiler option [C++]", "/arch:SSE4.2 compiler option [C++]", "/arch:AVX compiler option [C++]", "/arch:AVX2 compiler option [C++]", "/arch:AVX512 compiler option [C++]", "/arch:AVX10.1 compiler option [C++]", "/arch:AVX10.2 compiler option [C++]"] --- # `/arch` (x64) @@ -11,7 +11,7 @@ Specifies the architecture for code generation on x64. These switches apply to t ## Syntax -> **`/arch:`**\[**`SSE2`**|**`SSE4.2`**|**`AVX`**|**`AVX2`**|**`AVX512`**|**`AVX10.1`**] +> **`/arch:`**\[**`SSE2`**|**`SSE4.2`**|**`AVX`**|**`AVX2`**|**`AVX512`**|**`AVX10.1`**|**`AVX10.2`**] ## Arguments @@ -33,6 +33,9 @@ Enables Intel Advanced Vector Extensions 512. **`/arch:AVX10.1`**\ Enables Intel Advanced Vector Extensions 10 version 1. +**`/arch:AVX10.2`**\ +Enables Intel Advanced Vector Extensions 10 version 2. + ## Remarks The **`/arch`** option enables the use of certain instruction set extensions, particularly for vector calculation, available in processors from Intel and AMD. In general, more recently introduced processors may support extensions beyond the ones supported by older processors, although you should consult the documentation for a particular processor or test for instruction set extension support using [`__cpuid`](../../intrinsics/cpuid-cpuidex.md) before executing code using an instruction set extension. You can also use the [`__check_isa_support`](../../intrinsics/check-isa-arch-support.md) intrinsic to check for more frequently used CPU features. @@ -51,7 +54,10 @@ The processor extensions have the following characteristics: - **`AVX-512`** introduced another instruction encoding form that allows 512-bit vectors, masking, embedded rounding/broadcast, and new instructions. The default vector length for **`AVX-512`** is 512 bits and can be changed to 256 bits using the [`/vlen`](vlen.md) flag. -- **`AVX10.1`** adds more instructions on top of **`AVX-512`**. The default vector length for **`AVX10.1`** is 256 bits and can be changed to 512 bits using the [`/vlen`](vlen.md) flag. +- **`AVX10.1`** adds more instructions on top of **`AVX-512`**. The default vector length for **`AVX10.1`** is 256 bits and can be changed to 512 bits using the [`/vlen`](vlen.md) flag. This option was introduced in Visual Studio 2022 17.13. + +- **`AVX10.2`** expands the instruction set introduced in `AVX10.1`. The default vector length for **`AVX10.2`** is 256 bits and can be increased to 512 bits using the [`/vlen`](vlen.md) flag. +`AVX10.2` adds instructions that are enhancements of legacy instructions and media acceleration instructions. For more information about the new instructions, see section 3.1.4 in the [Intel Advanced Vector Extensions 10.2 Architecture Specification](https://www.intel.com/content/www/us/en/content-details/856721/intel-advanced-vector-extensions-10-2-intel-avx10-2-architecture-specification.html) The AI related instructions in that document are supported via MSVC intrinsics instead of being directly emitted because their data types aren’t supported by MSVC. This compiler option was introduced in Visual Studio 2026. Each **`/arch`** option may also enable the use of other non-vector instructions that are associated with that option. An example is the use of certain BMI instructions when **`/arch:AVX2`** is specified. diff --git a/docs/build/reference/arch-x86.md b/docs/build/reference/arch-x86.md index cb71ce0716b..d03ab298b42 100644 --- a/docs/build/reference/arch-x86.md +++ b/docs/build/reference/arch-x86.md @@ -1,9 +1,9 @@ --- description: "Learn more about: /arch (x86)" title: "/arch (x86)" -ms.date: 06/30/2022 -f1_keywords: ["/arch:IA32", "/arch:SSE", "/arch:SSE2", "/arch:AVX", "/arch:AVX2", "/arch:AVX512", "/arch:AVX10.1"] -helpviewer_keywords: ["/arch:IA32 compiler option [C++]", "/arch:SSE compiler option [C++]", "/arch:SSE2 compiler option [C++]", "/arch:AVX compiler option [C++]", "/arch:AVX2 compiler option [C++]", "/arch:AVX512 compiler option [C++]", "/arch:AVX10.1 compiler option [C++]"] +ms.date: 10/21/2025 +f1_keywords: ["/arch:IA32", "/arch:SSE", "/arch:SSE2", "/arch:AVX", "/arch:AVX2", "/arch:AVX512", "/arch:AVX10.1", /arch:AVX10.2"] +helpviewer_keywords: ["/arch:IA32 compiler option [C++]", "/arch:SSE compiler option [C++]", "/arch:SSE2 compiler option [C++]", "/arch:AVX compiler option [C++]", "/arch:AVX2 compiler option [C++]", "/arch:AVX512 compiler option [C++]", "/arch:AVX10.1 compiler option [C++]", "/arch:AVX10.2 compiler option [C++]"] --- # `/arch` (x86) @@ -11,7 +11,7 @@ Specifies the architecture for code generation on x86. These switches apply to t ## Syntax -> **`/arch:`**\[**`IA32`**|**`SSE`**|**`SSE2`**|**`AVX`**|**`AVX2`**|**`AVX512`**|**`AVX10.1`**] +> **`/arch:`**\[**`IA32`**|**`SSE`**|**`SSE2`**|**`AVX`**|**`AVX2`**|**`AVX512`**|**`AVX10.1`**|**`AVX10.2`**] ## Arguments @@ -36,6 +36,9 @@ Enables Intel Advanced Vector Extensions 512. **`/arch:AVX10.1`**\ Enables Intel Advanced Vector Extensions 10 version 1. +**`/arch:AVX10.2`**\ +Enables Intel Advanced Vector Extensions 10 version 2. + ## Remarks The **`/arch`** option enables or disables the use of certain instruction set extensions, particularly for vector calculation, available in processors from Intel and AMD. In general, more recently introduced processors may support extensions beyond the ones supported by older processors. You should consult the documentation for a particular processor or test for instruction set extension support using [`__cpuid`](../../intrinsics/cpuid-cpuidex.md) before executing code using an instruction set extension. You can also use the [`__check_isa_support`](../../intrinsics/check-isa-arch-support.md) intrinsic to check for more frequently used CPU features. @@ -56,7 +59,10 @@ The **`/arch`** options refer to instruction set extensions with the following c - **`AVX512`** introduced another instruction encoding form that allows 512-bit vectors, masking, embedded rounding/broadcast, and new instructions. The default vector length for **`AVX512`** is 512 bits and can be changed to 256 bits using the [`/vlen`](vlen.md) flag. -- **`AVX10.1`** adds more instructions on top of **`AVX-512`**. The default vector length for **`AVX10.1`** is 256 bits and can be changed to 512 bits using the [`/vlen`](vlen.md) flag. +- **`AVX10.1`** adds more instructions on top of **`AVX-512`**. The default vector length for **`AVX10.1`** is 256 bits and can be changed to 512 bits using the [`/vlen`](vlen.md) flag. This option was introduced in Visual Studio 2022 17.13. + +- **`AVX10.2`** expands the instruction set introduced in `AVX10.1`. The default vector length for **`AVX10.2`** is 256 bits and can be increased to 512 bits using the [`/vlen`](vlen.md) flag. +`AVX10.2` adds instructions that are enhancements of legacy instructions and media acceleration instructions. For more information about the new instructions, see section 3.1.4 in the [Intel Advanced Vector Extensions 10.2 Architecture Specification](https://www.intel.com/content/www/us/en/content-details/856721/intel-advanced-vector-extensions-10-2-intel-avx10-2-architecture-specification.html) The AI related instructions in that document are supported via MSVC intrinsics instead of being directly emitted because their data types aren’t supported by MSVC. This compiler option was introduced in Visual Studio 2026. The optimizer chooses when and how to use vector instructions depending on which **`/arch`** is specified. Scalar floating-point computations are usually performed with SSE or AVX instructions when available. Some calling conventions specify passing floating-point arguments on the x87 stack, and as a result, your code may use a mixture of both x87 and SSE/AVX instructions for floating-point computations. Integer vector instructions can also be used for some 64-bit integer operations when available. diff --git a/docs/build/reference/vlen.md b/docs/build/reference/vlen.md index 6557c219ef9..cc9030c1b32 100644 --- a/docs/build/reference/vlen.md +++ b/docs/build/reference/vlen.md @@ -9,6 +9,7 @@ helpviewer_keywords: ["specify vector length", "-vlen compiler option [C++]", "v Specifies the vector length for code generation on x86 and x64. For more information about **`/arch`** for x86 and x64, see [`/arch` (x86)](arch-x86.md) and [`/arch` (x64)](arch-x64.md). + ## Syntax > **`/vlen=`**\[**`256`**|**`512`**] @@ -28,14 +29,16 @@ Specify the default vector length for the selected **`/arch`** setting. ## Remarks -If a specific **`/vlen`** value isn't specified, the default vector length depends on the **`/arch`** flag setting. The **`/vlen`** flag can override the default vector length specified by **`/arch:AVX512`** or **`/arch:AVX10.1`** flag. For example: +This compiler option was introduced in Visual Studio 2022 17.13. + +If a specific **`/vlen`** value isn't specified, the default vector length depends on the **`/arch`** compiler option setting. The **`/vlen`** compiler option can override the default vector length specified by **`/arch:AVX512`**, **`/arch:AVX10.1`**, or **`/arch:AVX10.2`** compiler option. For example: - **`/arch:AVX512 /vlen=256`** overrides the default vector length of 512 bits specified by **`/arch:AVX512`** to be 256 bits. - **`/arch:AVX10.1 /vlen=512`** overrides the default vector length of 256 bits specified by **`/arch:AVX10.1`** to be 512 bits. -When the specified **`/vlen`** value is incompatible with specified **`/arch`** flag, a warning is generated and default vector length for the **`/arch`** setting is used. For example: +When the specified **`/vlen`** value is incompatible with specified **`/arch`** compiler option, a warning is generated and default vector length for the **`/arch`** setting is used. For example: -- **`/arch:AVX2 /vlen=512`** generates a warning because AVX2 doesn't support 512-bit vectors. Vector length of 256 bits is used in this case. +- **`/arch:AVX2 /vlen=512`** generates a warning because AVX2 doesn't support 512-bit vectors. A 256-bit vector length is used in this case. ### To set the `/vlen=256` or `/vlen=512` compiler option in Visual Studio diff --git a/docs/preprocessor/predefined-macros.md b/docs/preprocessor/predefined-macros.md index 501dfdd2bed..6eb0a48ee0f 100644 --- a/docs/preprocessor/predefined-macros.md +++ b/docs/preprocessor/predefined-macros.md @@ -69,21 +69,21 @@ MSVC supports other predefined macros: - `__ATOM__` Defined as 1 when the [`/favor:ATOM`](../build/reference/favor-optimize-for-architecture-specifics.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. -- `__AVX__` Defined as 1 when the [`/arch:AVX`](../build/reference/arch-x86.md), [`/arch:AVX2`](../build/reference/arch-x86.md), [`/arch:AVX512`](../build/reference/arch-x86.md) or [`/arch:AVX10.1`](../build/reference/arch-x86.md) compiler options are set and the compiler target is x86 or x64. Otherwise, undefined. +- `__AVX__` Defined as 1 when the [`/arch:AVX`](../build/reference/arch-x86.md), [`/arch:AVX2`](../build/reference/arch-x86.md), [`/arch:AVX512`](../build/reference/arch-x86.md), [`/arch:AVX10.1`](../build/reference/arch-x86.md) or [`/arch:AVX10.2`](../build/reference/arch-x86.md) compiler options are set and the compiler target is x86 or x64. Otherwise, undefined. -- `__AVX2__` Defined as 1 when the [`/arch:AVX2`](../build/reference/arch-x86.md), [`/arch:AVX512`](../build/reference/arch-x86.md) or [`/arch:AVX10.1`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. +- `__AVX2__` Defined as 1 when the [`/arch:AVX2`](../build/reference/arch-x86.md), [`/arch:AVX512`](../build/reference/arch-x86.md), [`/arch:AVX10.1`](../build/reference/arch-x86.md), or [`/arch:AVX10.2`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. -- `__AVX512BW__` Defined as 1 when the [`/arch:AVX512`](../build/reference/arch-x86.md) or [`/arch:AVX10.1`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. +- `__AVX512BW__` Defined as 1 when the [`/arch:AVX512`](../build/reference/arch-x86.md), [`/arch:AVX10.1`](../build/reference/arch-x86.md), or [`/arch:AVX10.2`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. -- `__AVX512CD__` Defined as 1 when the [`/arch:AVX512`](../build/reference/arch-x86.md) or [`/arch:AVX10.1`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. +- `__AVX512CD__` Defined as 1 when the [`/arch:AVX512`](../build/reference/arch-x86.md), [`/arch:AVX10.1`](../build/reference/arch-x86.md), or [`/arch:AVX10.2`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. -- `__AVX512DQ__` Defined as 1 when the [`/arch:AVX512`](../build/reference/arch-x86.md) or [`/arch:AVX10.1`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. +- `__AVX512DQ__` Defined as 1 when the [`/arch:AVX512`](../build/reference/arch-x86.md), [`/arch:AVX10.1`](../build/reference/arch-x86.md), or [`/arch:AVX10.2`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. -- `__AVX512F__` Defined as 1 when the [`/arch:AVX512`](../build/reference/arch-x86.md) or [`/arch:AVX10.1`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. +- `__AVX512F__` Defined as 1 when the [`/arch:AVX512`](../build/reference/arch-x86.md), [`/arch:AVX10.1`](../build/reference/arch-x86.md), or [`/arch:AVX10.2`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. -- `__AVX512VL__` Defined as 1 when the [`/arch:AVX512`](../build/reference/arch-x86.md) or [`/arch:AVX10.1`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. +- `__AVX512VL__` Defined as 1 when the [`/arch:AVX512`](../build/reference/arch-x86.md), [`/arch:AVX10.1`](../build/reference/arch-x86.md), or [`/arch:AVX10.2`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. -- `__AVX10_VER__` Defined as an integer that represents version of AVX10 when the [`/arch:AVX10.1`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. +- `__AVX10_VER__` Defined as an integer that represents version of AVX10 when the [`/arch:AVX10.1`](../build/reference/arch-x86.md) or or [`/arch:AVX10.2`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. - `_CHAR_UNSIGNED` Defined as 1 if the default **`char`** type is unsigned. This value is defined when the [**`/J`** (Default char type is unsigned)](../build/reference/j-default-char-type-is-unsigned.md) compiler option is set. Otherwise, undefined. @@ -234,10 +234,8 @@ MSVC supports other predefined macros: - `_M_IX86_FP` Defined as an integer literal value that indicates the [`/arch`](../build/reference/arch-arm.md) compiler option that was set, or the default. This macro is always defined when the compilation target is an x86 processor. Otherwise, undefined. When defined, the value is: - 0 if the `/arch:IA32` compiler option was set. - - 1 if the `/arch:SSE` compiler option was set. - - - 2 if the `/arch:SSE2`, `/arch:AVX`, `/arch:AVX2`, `/arch:AVX512` or `/arch:AVX10.1` compiler option was set. This value is the default if an `/arch` compiler option wasn't specified. When `/arch:AVX` is specified, the macro `__AVX__` is also defined. When `/arch:AVX2` is specified, both `__AVX__` and `__AVX2__` are also defined. When `/arch:AVX512` is specified, `__AVX__`, `__AVX2__`, `__AVX512BW__`, `__AVX512CD__`, `__AVX512DQ__`, `__AVX512F__`, and `__AVX512VL__` are also defined. When `/arch:AVX10.1` is specified, `__AVX__`, `__AVX2__`, `__AVX512BW__`, `__AVX512CD__`, `__AVX512DQ__`, `__AVX512F__`, `__AVX512VL__` and `__AVX10_VER__` are also defined. + - 2 if the `/arch:SSE2`, `/arch:AVX`, `/arch:AVX2`, `/arch:AVX512`, `/arch:AVX10.1`, or `/arch:AVX10.2` compiler option was set. This value is the default if an `/arch` compiler option wasn't specified. When `/arch:AVX` is specified, the macro `__AVX__` is also defined. When `/arch:AVX2` is specified, both `__AVX__` and `__AVX2__` are also defined. When `/arch:AVX512` is specified, `__AVX__`, `__AVX2__`, `__AVX512BW__`, `__AVX512CD__`, `__AVX512DQ__`, `__AVX512F__`, and `__AVX512VL__` are also defined. When `/arch:AVX10.1` or `/arch:AVX10.2` is specified, `__AVX__`, `__AVX2__`, `__AVX512BW__`, `__AVX512CD__`, `__AVX512DQ__`, `__AVX512F__`, `__AVX512VL__` and `__AVX10_VER__` are also defined. - For more information, see [**`/arch`** (x86)](../build/reference/arch-x86.md). From 5a75b32f751dea47441617305f7f6baaeff3ba05 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 21 Oct 2025 16:07:46 -0700 Subject: [PATCH 2006/2255] typo --- docs/build/reference/arch-x64.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/build/reference/arch-x64.md b/docs/build/reference/arch-x64.md index 625ee1411f8..d720f0ecb98 100644 --- a/docs/build/reference/arch-x64.md +++ b/docs/build/reference/arch-x64.md @@ -2,7 +2,7 @@ description: "Learn more about: /arch (x64)" title: "/arch (x64)" ms.date: 10/21/2025 -f1_keywords: ["/arch:SSE2", "/arch:SSE4.2", "/arch:AVX", "/arch:AVX2", "/arch:AVX512", "/arch:AVX10.1", /arch:AVX10.2"] +f1_keywords: ["/arch:SSE2", "/arch:SSE4.2", "/arch:AVX", "/arch:AVX2", "/arch:AVX512", "/arch:AVX10.1", "/arch:AVX10.2"] helpviewer_keywords: ["/arch:SSE2 compiler option [C++]", "/arch:SSE4.2 compiler option [C++]", "/arch:AVX compiler option [C++]", "/arch:AVX2 compiler option [C++]", "/arch:AVX512 compiler option [C++]", "/arch:AVX10.1 compiler option [C++]", "/arch:AVX10.2 compiler option [C++]"] --- # `/arch` (x64) @@ -61,13 +61,13 @@ The processor extensions have the following characteristics: Each **`/arch`** option may also enable the use of other non-vector instructions that are associated with that option. An example is the use of certain BMI instructions when **`/arch:AVX2`** is specified. -The `__AVX__` preprocessor symbol is defined when the **`/arch:AVX`**, **`/arch:AVX2`**, **`/arch:AVX512`**, or **`/arch:AVX10.1`** compiler option is specified. -The `__AVX2__` preprocessor symbol is defined when the **`/arch:AVX2`**, **`/arch:AVX512`**, or **`/arch:AVX10.1`** compiler option is specified. -The `__AVX512F__`, `__AVX512CD__`, `__AVX512BW__`, `__AVX512DQ__`, and `__AVX512VL__` preprocessor symbols are defined when the **`/arch:AVX512`**, or **`/arch:AVX10.1`** compiler option is specified. -The `__AVX10_VER__` preprocessor symbol is defined when the **`/arch:AVX10.1`** compiler option is specified. It indicates the AVX10 version the compiler is targeting. For more information, see [Predefined macros](../../preprocessor/predefined-macros.md). +The `__AVX__` preprocessor symbol is defined when the **`/arch:AVX`**, **`/arch:AVX2`**, **`/arch:AVX512`**, **`/arch:AVX10.1`**, or **`/arch:AVX10.2`** compiler option is specified. +The `__AVX2__` preprocessor symbol is defined when the **`/arch:AVX2`**, **`/arch:AVX512`**, **`/arch:AVX10.1`**, or **`/arch:AVX10.2`** compiler option is specified. +The `__AVX512F__`, `__AVX512CD__`, `__AVX512BW__`, `__AVX512DQ__`, and `__AVX512VL__` preprocessor symbols are defined when the **`/arch:AVX512`**, **`/arch:AVX10.1`**, or **`/arch:AVX10.2`** compiler option is specified. +The `__AVX10_VER__` preprocessor symbol is defined when the **`/arch:AVX10.1`** or **`/arch:AVX10.2`** compiler option is specified. It indicates the AVX10 version the compiler is targeting. For more information, see [Predefined macros](../../preprocessor/predefined-macros.md). The **`/arch:AVX2`** option was introduced in Visual Studio 2013 Update 2, version 12.0.34567.1. Limited support for **`/arch:AVX512`** was added in Visual Studio 2017, and expanded in Visual Studio 2019. -Support for **`/arch:AVX10.1`** was added in Visual Studio 2022. +Support for **`/arch:AVX10.1`** was added in Visual Studio 2022. Support for **`/arch:AVX10.2`** was added in Visual Studio 2026. ### To set the `/arch` compiler option in Visual Studio From b2a72acc0167593a6e62e89cb033878021812a37 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Tue, 21 Oct 2025 16:42:59 -0700 Subject: [PATCH 2007/2255] Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/cpp/tutorial-import-stl-named-module.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cpp/tutorial-import-stl-named-module.md b/docs/cpp/tutorial-import-stl-named-module.md index f90f02c7ff7..717ad7e3d43 100644 --- a/docs/cpp/tutorial-import-stl-named-module.md +++ b/docs/cpp/tutorial-import-stl-named-module.md @@ -1,6 +1,6 @@ --- title: "Tutorial: Import the standard library (STL) using modules from the command line (C++)" -description: "Learn how to import the C++ standard library (STL) using modules from the command line" +description: "Learn how to import the C++ standard library (STL) using modules from the command line." ms.date: 01/29/2024 ms.topic: "tutorial" author: "tylermsft" From f63fe29c28fd6246a8071831b31135178aee86b1 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 21 Oct 2025 18:23:32 -0700 Subject: [PATCH 2008/2255] edit --- docs/build/reference/arch-x64.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/arch-x64.md b/docs/build/reference/arch-x64.md index d720f0ecb98..6f9e2f857ba 100644 --- a/docs/build/reference/arch-x64.md +++ b/docs/build/reference/arch-x64.md @@ -57,7 +57,7 @@ The processor extensions have the following characteristics: - **`AVX10.1`** adds more instructions on top of **`AVX-512`**. The default vector length for **`AVX10.1`** is 256 bits and can be changed to 512 bits using the [`/vlen`](vlen.md) flag. This option was introduced in Visual Studio 2022 17.13. - **`AVX10.2`** expands the instruction set introduced in `AVX10.1`. The default vector length for **`AVX10.2`** is 256 bits and can be increased to 512 bits using the [`/vlen`](vlen.md) flag. -`AVX10.2` adds instructions that are enhancements of legacy instructions and media acceleration instructions. For more information about the new instructions, see section 3.1.4 in the [Intel Advanced Vector Extensions 10.2 Architecture Specification](https://www.intel.com/content/www/us/en/content-details/856721/intel-advanced-vector-extensions-10-2-intel-avx10-2-architecture-specification.html) The AI related instructions in that document are supported via MSVC intrinsics instead of being directly emitted because their data types aren’t supported by MSVC. This compiler option was introduced in Visual Studio 2026. +`AVX10.2` adds instructions that are enhancements of legacy instructions and media acceleration instructions. For more information about the new instructions, see section 3.1.4 in the [Intel Advanced Vector Extensions 10.2 Architecture Specification](https://www.intel.com/content/www/us/en/content-details/856721/intel-advanced-vector-extensions-10-2-intel-avx10-2-architecture-specification.html). The AI related instructions in that document are supported via MSVC intrinsics instead of being directly emitted because their data types aren’t supported by MSVC. This compiler option was introduced in Visual Studio 2026. Each **`/arch`** option may also enable the use of other non-vector instructions that are associated with that option. An example is the use of certain BMI instructions when **`/arch:AVX2`** is specified. From 1a38410889152df1dda6fddf6ff1d2911ea556f8 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 21 Oct 2025 18:33:15 -0700 Subject: [PATCH 2009/2255] remove other files --- docs/overview/toc.yml | 4 +- docs/overview/what-s-new-for-msvc.md | 38 ------------------- ...t-s-new-for-visual-cpp-in-visual-studio.md | 10 +---- 3 files changed, 2 insertions(+), 50 deletions(-) delete mode 100644 docs/overview/what-s-new-for-msvc.md diff --git a/docs/overview/toc.yml b/docs/overview/toc.yml index 792c8638e27..66d418921eb 100644 --- a/docs/overview/toc.yml +++ b/docs/overview/toc.yml @@ -6,9 +6,7 @@ items: href: ../overview/visual-cpp-in-visual-studio.md - name: Overview of C++ development in Visual Studio href: ../overview/overview-of-cpp-development.md - - name: What's new for MSVC - href: ../overview/what-s-new-for-msvc.md - - name: What's new for C++ in Visual Studio + - name: What's new for C++ in Visual Studio 2022 href: ../overview/what-s-new-for-visual-cpp-in-visual-studio.md - name: What's new for C++ in Visual Studio 2019 href: ../overview/what-s-new-for-cpp-2019.md diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md deleted file mode 100644 index bd24a7c88a3..00000000000 --- a/docs/overview/what-s-new-for-msvc.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: "What's new for MSVC" -description: "The new features and fixes in the Microsoft C/C++ compiler and tools (MSVC)." -ms.date: 10/09/2025 -ms.service: "visual-cpp" -ms.subservice: "compiler" -ms.custom: intro-whats-new ---- - -# What's new for MSVC - -Version x.y.z. brings many updates and fixes to the Microsoft C++ compiler and tools. - -- For more information on what's new in all of Visual Studio, see [What's new in Visual Studio 2022](/visualstudio/ide/whats-new-visual-studio-2022). -- For information about version build dates, see [Visual Studio 2022 Release History](/visualstudio/releases/2022/release-history). - -## What's new for MSVC version x.y - -*Released November 2025* - -| For more information about | See | -|---|---| -| What's new for C++ developers | [What's New for C++ Developers in Visual Studio 2022 17.14](https://devblogs.microsoft.com/cppblog/whats-new-for-c-developers-in-visual-studio-2022-17-14/) | -| Standard Library (STL) merged C++26 and C++23 features, Language Working Group (CWG) issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog 17.14](https://github.com/microsoft/STL/wiki/Changelog#vs-2022-1714) | -| C++ language updates | [C++ Language Updates in MSVC in Visual Studio 2022 17.14](https://devblogs.microsoft.com/cppblog/c-language-updates-in-msvc-in-visual-studio-2022-17-14/) | -| C++ language conformance improvements | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022 17.14](cpp-conformance-improvements.md#improvements_1714) | - -A quick highlight of some of the new features: - -TBD - -## Feedback and suggestions - -We'd love to hear from you! You can [Report a Problem or Suggest a Feature](/visualstudio/ide/how-to-report-a-problem-with-visual-studio) by using the Send Feedback icon in the upper right-hand corner of either the installer or the Visual Studio IDE, or from **Help** > **Send Feedback**. You can track your issues by using [Visual Studio Developer Community](https://developercommunity.visualstudio.com/), where you add comments or find solutions. You can also get free installation help through our [Live Chat support](https://visualstudio.microsoft.com/vs/support/#talktous). - -## Blogs - -Take advantage of the insights and recommendations available in the [Microsoft Developer Blogs](https://devblogs.microsoft.com/) site to stay up to date on all new releases. The blogs include deep dive posts on a broad range of features. The [C++ Team Blog](https://devblogs.microsoft.com/cppblog) and the [Visual Studio Blog](https://devblogs.microsoft.com/visualstudio) are of particular interest. \ No newline at end of file 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 68de088af23..4f546d1d8c0 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,21 +1,13 @@ --- 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: 10/09/2025 +ms.date: 05/13/2025 ms.service: "visual-cpp" ms.subservice: "ide" ms.custom: intro-whats-new ai-usage: ai-assisted --- -# What's new for C++ in Visual Studio - -MSVC now ships on its own cadence, independent of Visual Studio. For the latest updates to MSVC, see [What's new for MSVC](/cpp/overview/what-s-new-for-msvc.md). - -# What's new for C++ in Visual Studio 2026 - -VS 2026 18.0 and later no longer support targeting Windows 7/8/8.1 or Windows Server 2008 R2/2012/2012 R2, which have stopped receiving security updates. - # What's new for C++ in Visual Studio 2022 Visual Studio 2022 brings many updates and fixes to the Microsoft C++ compiler and tools. The Visual Studio IDE also offers significant improvements in performance and productivity, and now runs natively as a 64-bit application. From a639ee46f5ec34455b8d8d5c1e6dd5f0bc07451f Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 21 Oct 2025 18:43:03 -0700 Subject: [PATCH 2010/2255] acrolinx --- docs/build/reference/arch-x64.md | 4 ++-- docs/build/reference/arch-x86.md | 4 ++-- docs/build/reference/vlen.md | 4 ++-- docs/preprocessor/predefined-macros.md | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/build/reference/arch-x64.md b/docs/build/reference/arch-x64.md index 6f9e2f857ba..696f055f190 100644 --- a/docs/build/reference/arch-x64.md +++ b/docs/build/reference/arch-x64.md @@ -57,9 +57,9 @@ The processor extensions have the following characteristics: - **`AVX10.1`** adds more instructions on top of **`AVX-512`**. The default vector length for **`AVX10.1`** is 256 bits and can be changed to 512 bits using the [`/vlen`](vlen.md) flag. This option was introduced in Visual Studio 2022 17.13. - **`AVX10.2`** expands the instruction set introduced in `AVX10.1`. The default vector length for **`AVX10.2`** is 256 bits and can be increased to 512 bits using the [`/vlen`](vlen.md) flag. -`AVX10.2` adds instructions that are enhancements of legacy instructions and media acceleration instructions. For more information about the new instructions, see section 3.1.4 in the [Intel Advanced Vector Extensions 10.2 Architecture Specification](https://www.intel.com/content/www/us/en/content-details/856721/intel-advanced-vector-extensions-10-2-intel-avx10-2-architecture-specification.html). The AI related instructions in that document are supported via MSVC intrinsics instead of being directly emitted because their data types aren’t supported by MSVC. This compiler option was introduced in Visual Studio 2026. +`AVX10.2` adds instructions that are enhancements of legacy instructions and media acceleration instructions. For more information about the new instructions, see section 3.1.4 in the [Intel Advanced Vector Extensions 10.2 Architecture Specification](https://www.intel.com/content/www/us/en/content-details/856721/intel-advanced-vector-extensions-10-2-intel-avx10-2-architecture-specification.html). The AI related instructions in that document are supported via MSVC intrinsics instead of being directly emitted because MSVC doesn't support their data types. This compiler option was introduced in Visual Studio 2026. -Each **`/arch`** option may also enable the use of other non-vector instructions that are associated with that option. An example is the use of certain BMI instructions when **`/arch:AVX2`** is specified. +Each **`/arch`** option may also enable the use of other nonvector instructions that are associated with that option. An example is the use of certain BMI instructions when **`/arch:AVX2`** is specified. The `__AVX__` preprocessor symbol is defined when the **`/arch:AVX`**, **`/arch:AVX2`**, **`/arch:AVX512`**, **`/arch:AVX10.1`**, or **`/arch:AVX10.2`** compiler option is specified. The `__AVX2__` preprocessor symbol is defined when the **`/arch:AVX2`**, **`/arch:AVX512`**, **`/arch:AVX10.1`**, or **`/arch:AVX10.2`** compiler option is specified. diff --git a/docs/build/reference/arch-x86.md b/docs/build/reference/arch-x86.md index d03ab298b42..a133eda92db 100644 --- a/docs/build/reference/arch-x86.md +++ b/docs/build/reference/arch-x86.md @@ -62,11 +62,11 @@ The **`/arch`** options refer to instruction set extensions with the following c - **`AVX10.1`** adds more instructions on top of **`AVX-512`**. The default vector length for **`AVX10.1`** is 256 bits and can be changed to 512 bits using the [`/vlen`](vlen.md) flag. This option was introduced in Visual Studio 2022 17.13. - **`AVX10.2`** expands the instruction set introduced in `AVX10.1`. The default vector length for **`AVX10.2`** is 256 bits and can be increased to 512 bits using the [`/vlen`](vlen.md) flag. -`AVX10.2` adds instructions that are enhancements of legacy instructions and media acceleration instructions. For more information about the new instructions, see section 3.1.4 in the [Intel Advanced Vector Extensions 10.2 Architecture Specification](https://www.intel.com/content/www/us/en/content-details/856721/intel-advanced-vector-extensions-10-2-intel-avx10-2-architecture-specification.html) The AI related instructions in that document are supported via MSVC intrinsics instead of being directly emitted because their data types aren’t supported by MSVC. This compiler option was introduced in Visual Studio 2026. +`AVX10.2` adds instructions that are enhancements of legacy instructions and media acceleration instructions. For more information about the new instructions, see section 3.1.4 in the [Intel Advanced Vector Extensions 10.2 Architecture Specification](https://www.intel.com/content/www/us/en/content-details/856721/intel-advanced-vector-extensions-10-2-intel-avx10-2-architecture-specification.html) The AI related instructions in that document are supported via MSVC intrinsics instead of being directly emitted because MSVC doesn't support their data types. This compiler option was introduced in Visual Studio 2026. The optimizer chooses when and how to use vector instructions depending on which **`/arch`** is specified. Scalar floating-point computations are usually performed with SSE or AVX instructions when available. Some calling conventions specify passing floating-point arguments on the x87 stack, and as a result, your code may use a mixture of both x87 and SSE/AVX instructions for floating-point computations. Integer vector instructions can also be used for some 64-bit integer operations when available. -In addition to the vector and floating-point scalar instructions, each **`/arch`** option may also enable the use of other non-vector instructions that are associated with that option. An example is the CMOVcc instruction family that first appeared on the Intel Pentium Pro processors. Because SSE instructions were introduced with the subsequent Intel Pentium III processor, CMOVcc instructions may be generated except when **`/arch:IA32`** is specified. +In addition to the vector and floating-point scalar instructions, each **`/arch`** option may also enable the use of other nonvector instructions that are associated with that option. An example is the CMOVcc instruction family that first appeared on the Intel Pentium Pro processors. Because SSE instructions were introduced with the subsequent Intel Pentium III processor, CMOVcc instructions may be generated except when **`/arch:IA32`** is specified. Floating-point operations are normally rounded to double-precision (64-bit) in x87 code, but you can use `_controlfp` to modify the FP control word, including setting the precision control to extended precision (80-bit) or single-precision (32-bit). For more information, see [`_control87`, `_controlfp`, `__control87_2`](../../c-runtime-library/reference/control87-controlfp-control87-2.md). SSE and AVX have separate single-precision and double-precision instructions for each operation, so there's no equivalent for SSE/AVX code. It can change how results are rounded when the result of a floating-point operation is used directly in further calculation instead of assigning it to a user variable. Consider the following operations: diff --git a/docs/build/reference/vlen.md b/docs/build/reference/vlen.md index cc9030c1b32..fbc7abdf60e 100644 --- a/docs/build/reference/vlen.md +++ b/docs/build/reference/vlen.md @@ -19,10 +19,10 @@ Specifies the vector length for code generation on x86 and x64. For more informa ## Arguments **`/vlen=256`**\ -Specify a vector length of 256 bits for auto-vectorization and other optimizations. +Specify a vector length of 256 bits for autovectorization and other optimizations. **`/vlen=512`**\ -Specify a vector length of 512 bits for auto-vectorization and other optimizations. +Specify a vector length of 512 bits for autovectorization and other optimizations. **`/vlen`**\ Specify the default vector length for the selected **`/arch`** setting. diff --git a/docs/preprocessor/predefined-macros.md b/docs/preprocessor/predefined-macros.md index 6eb0a48ee0f..f7a79ba86cc 100644 --- a/docs/preprocessor/predefined-macros.md +++ b/docs/preprocessor/predefined-macros.md @@ -69,7 +69,7 @@ MSVC supports other predefined macros: - `__ATOM__` Defined as 1 when the [`/favor:ATOM`](../build/reference/favor-optimize-for-architecture-specifics.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. -- `__AVX__` Defined as 1 when the [`/arch:AVX`](../build/reference/arch-x86.md), [`/arch:AVX2`](../build/reference/arch-x86.md), [`/arch:AVX512`](../build/reference/arch-x86.md), [`/arch:AVX10.1`](../build/reference/arch-x86.md) or [`/arch:AVX10.2`](../build/reference/arch-x86.md) compiler options are set and the compiler target is x86 or x64. Otherwise, undefined. +- `__AVX__` Defined as 1 when the [`/arch:AVX`](../build/reference/arch-x86.md), [`/arch:AVX2`](../build/reference/arch-x86.md), [`/arch:AVX512`](../build/reference/arch-x86.md), [`/arch:AVX10.1`](../build/reference/arch-x86.md), or [`/arch:AVX10.2`](../build/reference/arch-x86.md) compiler options are set and the compiler target is x86 or x64. Otherwise, undefined. - `__AVX2__` Defined as 1 when the [`/arch:AVX2`](../build/reference/arch-x86.md), [`/arch:AVX512`](../build/reference/arch-x86.md), [`/arch:AVX10.1`](../build/reference/arch-x86.md), or [`/arch:AVX10.2`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. @@ -179,7 +179,7 @@ MSVC supports other predefined macros: - `__FUNCTION__` Defined as a string literal that contains the undecorated name of the enclosing function. The macro is defined only within a function. The `__FUNCTION__` macro isn't expanded if you use the [`/EP`](../build/reference/ep-preprocess-to-stdout-without-hash-line-directives.md) or [`/P`](../build/reference/p-preprocess-to-a-file.md) compiler option. For an example of usage, see the `__FUNCDNAME__` macro. -- `_INTEGRAL_MAX_BITS` Defined as the integer literal value 64, the maximum size (in bits) for a non-vector integral type. This macro is always defined. +- `_INTEGRAL_MAX_BITS` Defined as the integer literal value 64, the maximum size (in bits) for a nonvector integral type. This macro is always defined. ```cpp // integral_max_bits.cpp From 5f93c02555eedba6b8a24e250f0fbfddd5220d56 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 21 Oct 2025 19:16:18 -0700 Subject: [PATCH 2011/2255] review --- .../supported-platforms-visual-cpp.md | 49 +++++++++++-------- 1 file changed, 28 insertions(+), 21 deletions(-) diff --git a/docs/overview/supported-platforms-visual-cpp.md b/docs/overview/supported-platforms-visual-cpp.md index 17c444bd70b..5fd557438e2 100644 --- a/docs/overview/supported-platforms-visual-cpp.md +++ b/docs/overview/supported-platforms-visual-cpp.md @@ -1,7 +1,7 @@ --- description: "Learn more about: Supported Platforms (Visual C++)" title: "Supported Platforms (Visual C++)" -ms.date: 10/17/2025 +ms.date: 10/21/2025 ms.service: "visual-cpp" ms.subservice: "tools" helpviewer_keywords: ["Visual C++, platforms supported", "platforms [C++]"] @@ -10,36 +10,43 @@ helpviewer_keywords: ["Visual C++, platforms supported", "platforms [C++]"] Apps built by using Visual Studio can be targeted to various platforms. +Support for targeting 32-bit ARM was permanently removed in VS 2026 18.0. + ## Visual Studio target OS and architecture support -| Operating System | x86 | x64 | ARM | ARM64a | -|--|--|--|--|--| -| Windows XP b | X | X | | | -| Windows Vista | X | X | | | -| Windows 7 | Xe | Xe | | | -| Windows 8 | Xe | Xe | Xe | | -| Windows 8.1 | Xe | Xe | Xe | | -| Windows 10 | X | X | X | X | -| Windows 11 | X | X | X | X | -| Windows Server 2003 b | X | X | | | -| Windows Server 2008 R2 | Xe | Xe | | | -| Windows Server 2012 R2 | Xe | Xe | | | -| Windows Server 2016 | X | X | | | -| Windows Server 2019 | X | X | | | -| Windows Server 2022 | X | X | | | -| Android c | X | X | X | X | -| iOS c | X | X | X | X | -| Linux d | X | X | X | X | +| Operating System | x86 | x64 | ARM64a | +|--|--|--|--| +| Windows XP b | X | X | | +| Windows Vistaf | X | X | | +| Windows 7e | X | X | | +| Windows 8e | X | X | | +| Windows 8.1e | X | X | | +| Windows 10 | X | X | X | +| Windows 11 | X | X | X | +| Windows Server 2003 b | X | X | | +| Windows Server 2008e | X | X | | +| Windows Server 2008 R2e | X | X | | +| Windows Server 2012e | X | X | | +| Windows Server 2012 R2e | X | X | | +| Windows Server 2016 | X | X | | +| Windows Server 2019 | X | X | | +| Windows Server 2022 | X | X | | +| Windows Server 2025 | X | X | | +| Android c | X | X | X | +| iOS c | X | X | X | +| Linux d | X | X | X | a ARM64 support is available in Visual Studio 2017 and later. -b You can use the Windows XP platform toolsets included in Visual Studio 2017, Visual Studio 2015, Visual Studio 2013, and Visual Studio 2012 Update 1 to build Windows XP and Windows Server 2003 projects. For information on how to use these platform toolsets, see [Configuring Programs for Windows XP](../build/configuring-programs-for-windows-xp.md). For more information on changing the platform toolset, see [How to: Modify the Target Framework and Platform Toolset](../build/how-to-modify-the-target-framework-and-platform-toolset.md). +b Visual Studio no longer supports targeting Windows XP. If you must target Windows XP, use the Windows XP platform toolsets included in Visual Studio 2017, Visual Studio 2015, Visual Studio 2013, and Visual Studio 2012 Update 1 to build Windows XP and Windows Server 2003 projects. c You can install the **Mobile development with C++** workload in the installer for Visual Studio 2017 and later. In Visual Studio 2015 setup, choose the optional **Visual C++ for Cross Platform Mobile Development** component to target iOS or Android platforms. For instructions, see [Install Visual C++ for Cross-Platform Mobile Development](/visualstudio/cross-platform/install-visual-cpp-for-cross-platform-mobile-development). To build iOS code, you must have a Mac computer and meet other requirements. For a list of prerequisites and installation instructions, see [Install And Configure Tools to Build using iOS](/visualstudio/cross-platform/install-and-configure-tools-to-build-using-ios). You can build x86 or ARM code to match the target hardware. Use x86 configurations to build for some Android devices. Use ARM configurations to build for iOS devices and most Android devices. d You can install the **Linux development with C++** workload in the installer for Visual Studio 2017 and later to target Linux platforms. For instructions, see [Download, install, and setup the Linux Workload](../linux/download-install-and-setup-the-linux-development-workload.md). This toolset compiles your executable on the target machine, so you can build for any supported architecture. -e Visual Studio 2026 18.0 and later no longer support targeting Windows 7/8/8.1 or Windows Server 2008 R2/2012/2012 R2. Visual Studio 2026 and later target Windows 10 or later and Windows Server 2016 or later. +e Visual Studio 2026 18.0 and later no longer support targeting Windows 7/8/8.1 or Windows Server 2008/2008 R2/2012/2012 R2. Visual Studio 2026 and later target Windows 10 or later and Windows Server 2016 or later. + +f Visual Studio 2022 17.0 and later no longer support targeting Windows Vista or Windows Server 2008. For information about how to set the target platform configuration, see [How to: Configure Visual C++ projects to target 64-bit, x64 platforms](../build/how-to-configure-visual-cpp-projects-to-target-64-bit-platforms.md). From 5edf6e3df0c5f576db92ab389502f136a777da31 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 22 Oct 2025 10:24:14 -0700 Subject: [PATCH 2012/2255] review --- .../supported-platforms-visual-cpp.md | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/overview/supported-platforms-visual-cpp.md b/docs/overview/supported-platforms-visual-cpp.md index 5fd557438e2..080b26fe693 100644 --- a/docs/overview/supported-platforms-visual-cpp.md +++ b/docs/overview/supported-platforms-visual-cpp.md @@ -1,7 +1,7 @@ --- description: "Learn more about: Supported Platforms (Visual C++)" title: "Supported Platforms (Visual C++)" -ms.date: 10/21/2025 +ms.date: 10/22/2025 ms.service: "visual-cpp" ms.subservice: "tools" helpviewer_keywords: ["Visual C++, platforms supported", "platforms [C++]"] @@ -17,36 +17,36 @@ Support for targeting 32-bit ARM was permanently removed in VS 2026 18.0. | Operating System | x86 | x64 | ARM64a | |--|--|--|--| | Windows XP b | X | X | | -| Windows Vistaf | X | X | | -| Windows 7e | X | X | | -| Windows 8e | X | X | | -| Windows 8.1e | X | X | | +| Windows Vistac | X | X | | +| Windows 7d | X | X | | +| Windows 8d | X | X | | +| Windows 8.1d | X | X | | | Windows 10 | X | X | X | | Windows 11 | X | X | X | | Windows Server 2003 b | X | X | | -| Windows Server 2008e | X | X | | -| Windows Server 2008 R2e | X | X | | -| Windows Server 2012e | X | X | | -| Windows Server 2012 R2e | X | X | | +| Windows Server 2008d | X | X | | +| Windows Server 2008 R2d | X | X | | +| Windows Server 2012d | X | X | | +| Windows Server 2012 R2d | X | X | | | Windows Server 2016 | X | X | | | Windows Server 2019 | X | X | | | Windows Server 2022 | X | X | | | Windows Server 2025 | X | X | | -| Android c | X | X | X | -| iOS c | X | X | X | -| Linux d | X | X | X | +| Android e | X | X | X | +| iOS e | | | X | +| Linux f | X | X | X | a ARM64 support is available in Visual Studio 2017 and later. b Visual Studio no longer supports targeting Windows XP. If you must target Windows XP, use the Windows XP platform toolsets included in Visual Studio 2017, Visual Studio 2015, Visual Studio 2013, and Visual Studio 2012 Update 1 to build Windows XP and Windows Server 2003 projects. -c You can install the **Mobile development with C++** workload in the installer for Visual Studio 2017 and later. In Visual Studio 2015 setup, choose the optional **Visual C++ for Cross Platform Mobile Development** component to target iOS or Android platforms. For instructions, see [Install Visual C++ for Cross-Platform Mobile Development](/visualstudio/cross-platform/install-visual-cpp-for-cross-platform-mobile-development). To build iOS code, you must have a Mac computer and meet other requirements. For a list of prerequisites and installation instructions, see [Install And Configure Tools to Build using iOS](/visualstudio/cross-platform/install-and-configure-tools-to-build-using-ios). You can build x86 or ARM code to match the target hardware. Use x86 configurations to build for some Android devices. Use ARM configurations to build for iOS devices and most Android devices. +c Visual Studio 2022 17.0 and later no longer support targeting Windows Vista or Windows Server 2008. -d You can install the **Linux development with C++** workload in the installer for Visual Studio 2017 and later to target Linux platforms. For instructions, see [Download, install, and setup the Linux Workload](../linux/download-install-and-setup-the-linux-development-workload.md). This toolset compiles your executable on the target machine, so you can build for any supported architecture. +d Visual Studio 2026 18.0 and later no longer support targeting Windows 7/8/8.1 or Windows Server 2008 R2/2012/2012 R2. Visual Studio 2026 and later target Windows 10 or later and Windows Server 2016 or later. -e Visual Studio 2026 18.0 and later no longer support targeting Windows 7/8/8.1 or Windows Server 2008/2008 R2/2012/2012 R2. Visual Studio 2026 and later target Windows 10 or later and Windows Server 2016 or later. +e You can install the **Mobile development with C++** workload in the installer for Visual Studio 2017 and later. In Visual Studio 2015 setup, choose the optional **Visual C++ for Cross Platform Mobile Development** component to target iOS or Android platforms. For instructions, see [Install Visual C++ for Cross-Platform Mobile Development](/visualstudio/cross-platform/install-visual-cpp-for-cross-platform-mobile-development). To build iOS code, you must have a Mac computer and meet other requirements. For a list of prerequisites and installation instructions, see [Install And Configure Tools to Build using iOS](/visualstudio/cross-platform/install-and-configure-tools-to-build-using-ios). You can build x86 or ARM code to match the target hardware. Use x86 configurations to build for some Android devices. Use ARM configurations to build for iOS devices and most Android devices. -f Visual Studio 2022 17.0 and later no longer support targeting Windows Vista or Windows Server 2008. +f You can install the **Linux development with C++** workload in the installer for Visual Studio 2017 and later to target Linux platforms. For instructions, see [Download, install, and setup the Linux Workload](../linux/download-install-and-setup-the-linux-development-workload.md). This toolset compiles your executable on the target machine, so you can build for any supported architecture. For information about how to set the target platform configuration, see [How to: Configure Visual C++ projects to target 64-bit, x64 platforms](../build/how-to-configure-visual-cpp-projects-to-target-64-bit-platforms.md). From 0da78075479e8517a01bd209237b14365039c407 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 22 Oct 2025 10:28:23 -0700 Subject: [PATCH 2013/2255] Fix duplicate 'or' in AVX10_VER definition --- docs/preprocessor/predefined-macros.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/preprocessor/predefined-macros.md b/docs/preprocessor/predefined-macros.md index f7a79ba86cc..f76713d42fa 100644 --- a/docs/preprocessor/predefined-macros.md +++ b/docs/preprocessor/predefined-macros.md @@ -83,7 +83,7 @@ MSVC supports other predefined macros: - `__AVX512VL__` Defined as 1 when the [`/arch:AVX512`](../build/reference/arch-x86.md), [`/arch:AVX10.1`](../build/reference/arch-x86.md), or [`/arch:AVX10.2`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. -- `__AVX10_VER__` Defined as an integer that represents version of AVX10 when the [`/arch:AVX10.1`](../build/reference/arch-x86.md) or or [`/arch:AVX10.2`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. +- `__AVX10_VER__` Defined as an integer that represents version of AVX10 when the [`/arch:AVX10.1`](../build/reference/arch-x86.md) or [`/arch:AVX10.2`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. - `_CHAR_UNSIGNED` Defined as 1 if the default **`char`** type is unsigned. This value is defined when the [**`/J`** (Default char type is unsigned)](../build/reference/j-default-char-type-is-unsigned.md) compiler option is set. Otherwise, undefined. From ee1bb71b835213f652c2b0f3f7ebb00d8373622e Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 22 Oct 2025 15:24:57 -0700 Subject: [PATCH 2014/2255] clarify --- docs/overview/supported-platforms-visual-cpp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/supported-platforms-visual-cpp.md b/docs/overview/supported-platforms-visual-cpp.md index 080b26fe693..73baebad113 100644 --- a/docs/overview/supported-platforms-visual-cpp.md +++ b/docs/overview/supported-platforms-visual-cpp.md @@ -38,7 +38,7 @@ Support for targeting 32-bit ARM was permanently removed in VS 2026 18.0. a ARM64 support is available in Visual Studio 2017 and later. -b Visual Studio no longer supports targeting Windows XP. If you must target Windows XP, use the Windows XP platform toolsets included in Visual Studio 2017, Visual Studio 2015, Visual Studio 2013, and Visual Studio 2012 Update 1 to build Windows XP and Windows Server 2003 projects. +b Visual Studio no longer supports targeting Windows XP or Windows Server 2003. Use the Windows XP platform toolsets included in Visual Studio 2017, Visual Studio 2015, Visual Studio 2013, and Visual Studio 2012 Update 1 to build Windows XP and Windows Server 2003 projects. c Visual Studio 2022 17.0 and later no longer support targeting Windows Vista or Windows Server 2008. From 76a4ec23a70e2056ad87c9211c4fec92df1e8e0c Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 22 Oct 2025 15:35:59 -0700 Subject: [PATCH 2015/2255] edit --- docs/overview/supported-platforms-visual-cpp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/supported-platforms-visual-cpp.md b/docs/overview/supported-platforms-visual-cpp.md index 73baebad113..1e369fd7e73 100644 --- a/docs/overview/supported-platforms-visual-cpp.md +++ b/docs/overview/supported-platforms-visual-cpp.md @@ -38,7 +38,7 @@ Support for targeting 32-bit ARM was permanently removed in VS 2026 18.0. a ARM64 support is available in Visual Studio 2017 and later. -b Visual Studio no longer supports targeting Windows XP or Windows Server 2003. Use the Windows XP platform toolsets included in Visual Studio 2017, Visual Studio 2015, Visual Studio 2013, and Visual Studio 2012 Update 1 to build Windows XP and Windows Server 2003 projects. +b Visual Studio no longer supports targeting Windows XP. Use the Windows XP platform toolsets included in Visual Studio 2017, Visual Studio 2015, Visual Studio 2013, and Visual Studio 2012 Update 1 to build Windows XP and Windows Server 2003 projects. c Visual Studio 2022 17.0 and later no longer support targeting Windows Vista or Windows Server 2008. From b33610859ded8295e5e36b48fefdca2a8c44e42e Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 22 Oct 2025 19:31:50 -0700 Subject: [PATCH 2016/2255] stubs --- .../create-cpp-app-with-github-copilot.md | 190 ++++++++++++++++++ docs/get-started/toc.yml | 2 + 2 files changed, 192 insertions(+) create mode 100644 docs/build/create-cpp-app-with-github-copilot.md diff --git a/docs/build/create-cpp-app-with-github-copilot.md b/docs/build/create-cpp-app-with-github-copilot.md new file mode 100644 index 00000000000..8ad4b6af3ff --- /dev/null +++ b/docs/build/create-cpp-app-with-github-copilot.md @@ -0,0 +1,190 @@ +--- +title: Create a C++ app with Copilot +description: "Learn how to use Copilot to create your first C++ app using Microsoft C++ in Visual Studio." +ms.date: 10/22/2025 +ms.topic: "tutorial" +ms.custom: + - "mvc" + - copilot-scenario-highlight +--- +# Create a C++ app with Copilot + +The usual starting point for a C++ programmer is a "Hello, world!" application that runs on the command line. That's what you create in Visual Studio in this step. + +## Prerequisites + +- The **Desktop development with C++** workload must be installed to make the **Console App (C++)** project type available. If it's not installed, see [Install C++ support in Visual Studio](vscpp-step-0-installation.md). + +## Create your project + +Visual Studio uses *projects* to organize the code for an app, and *solutions* to organize your projects. A project contains all the options, configurations, and rules used to build your apps. It manages the relationship between all the project's files and any external files. To create your app, first, create a new project and solution. + +1. In Visual Studio, open the **File** menu and choose **New > Project** to open the **Create a new Project** dialog. Select the **Console App** template that has **C++**, **Windows**, and **Console** tags, and then choose **Next**. + + :::image type="complex" source="media/vs2019-choose-console-app.png" alt-text="Screenshot of the create a new project dialog."::: + The create a new project dialog with the Console App template selected. That template says: Run code in a windows terminal. Prints hello world by default. Has the tags c++, Windows, and Console. + :::image-end::: + + The **Desktop development with C++** workload must be installed for the C++ Console App template to show up. See [Install C++ support in Visual Studio](vscpp-step-0-installation.md) if you haven't already installed it. + +1. In the **Configure your new project** dialog, enter *HelloCopilot* in the **Project name** edit box. Choose **Create** to create the project. + + :::image type="complex" source="media/vs2019-configure-new-project-hello-world.png" alt-text="Screenshot of Configure your new project dialog."::: + The Configure your new project dialog with HelloWorld entered into the Project name field. + :::image-end::: + + Visual Studio creates a new project. It's ready for you to add and edit your source code. By default, the Console App template provides source code for a "Hello World" app, like this: + + :::image type="complex" source="media/vs2019-hello-world-code.png" alt-text="Screenshot of the NEW Hello World project."::: + Shows the new project. The HelloWorld.cpp file is open, showing the default code that is included with this template. That code consists of #include iostream and a main() function that contains the line: std::cout << quote hello world!\n quote; + :::image-end::: + + When the code looks like this in the editor, you're ready to go on to the next step and use Copilot top build an app. + +You can use GitHub Copilot in Visual Studio to help with your C++ development. Copilot is an AI-powered coding assistant that helps you write code faster, reduce errors, and explore new solutions. + +Some benefits of using Copilot when coding in C++: +- Generate entire C++ functions or classes as you type. +- Suggest code completions based on plain-language comments or prompts. +- Get help with complex algorithms, data structures, and standard library usage. +- Learn new APIs and modern C++ patterns through in-context examples. +- Receive context-aware suggestions based on your comments or code. +- Debug errors in your code. +- Simplify and refactor existing code. + +To install GitHub Copilot, see [GitHub Copilot in Visual Studio](/visualstudio/ide/visual-studio-github-copilot-install-and-states). + +## Use Copilot to create a Conway Life app + + +## Prompting + +Replace the default "Hello, World!" code with a simple implementation of Conway's Game of Life. You can do this by prompting Copilot with comments that describe the functionality you want. Here's an example of how to prompt Copilot to generate the code: + + +```cpp +// Code generated by GitHub Copilot +#include +#include +#include +#include // for _kbhit and _getch + +using namespace std; + +int step = 0; +const int rows = 20; +const int cols = 40; + +void printGrid(int grid[rows][cols]) +{ + cout << "Step: " << step << endl; + for (int i = 0; i < rows; ++i) + { + for (int j = 0; j < cols; ++j) + { + cout << (grid[i][j] ? '*' : ' '); + } + cout << endl; + } +} + +int countNeighbors(int grid[rows][cols], int x, int y) +{ + int count = 0; + for (int i = -1; i <= 1; ++i) + { + for (int j = -1; j <= 1; ++j) + { + if (i == 0 && j == 0) + { + continue; + } + + int ni = x + i; + int nj = y + j; + if (ni >= 0 && ni < rows && nj >= 0 && nj < cols) + { + count += grid[ni][nj]; + } + } + } + return count; +} + +void updateGrid(int grid[rows][cols]) +{ + int newGrid[rows][cols] = { 0 }; + for (int i = 0; i < rows; ++i) + { + for (int j = 0; j < cols; ++j) + { + int neighbors = countNeighbors(grid, i, j); + if (grid[i][j] == 1) + { + newGrid[i][j] = (neighbors < 2 || neighbors > 3) ? 0 : 1; + } + else + { + newGrid[i][j] = (neighbors == 3) ? 1 : 0; + } + } + } + // Copy newGrid back to grid + for (int i = 0; i < rows; ++i) + { + for (int j = 0; j < cols; ++j) + { + grid[i][j] = newGrid[i][j]; + } + } +} + +int main() +{ + int grid[rows][cols] = { 0 }; + + // Initial configuration (a simple glider) + grid[1][2] = 1; + grid[2][3] = 1; + grid[3][1] = 1; + grid[3][2] = 1; + grid[3][3] = 1; + + while (true) + { + if (_kbhit()) // Check if a key has been pressed + { + _getch(); // Consume the key + break; // Exit the loop + } + printGrid(grid); + updateGrid(grid); + std::this_thread::sleep_for(std::chrono::milliseconds(100)); + cout << "\033[H\033[J"; // Clear the screen + step++; + } + + return 0; +} +``` + + +## Next steps + +> [!div class="nextstepaction"] +> [Build and run a C++ project](vscpp-step-2-build.md) + +## Troubleshooting guide + +Come here for solutions to common issues when you create your first C++ project. + +### Create your app project: issues + +The **New Project** dialog should show a **Console App** template that has **C++**, **Windows**, and **Console** tags. If you don't see it, there are two possible causes. It might be filtered out of the list, or it might not be installed. First, check the filter dropdowns at the top of the list of templates. Set them to **C++**, **Windows**, and **Console**. The C++ **Console App** template should appear; otherwise, the **Desktop development with C++** workload isn't installed. + +To install **Desktop development with C++**, you can run the installer right from the **New Project** dialog. Choose the **Install more tools and features** link at the bottom of the template list to start the installer. If the **User Account Control** dialog requests permissions, choose **Yes**. In the installer, make sure the **Desktop development with C++** workload is checked. Then choose **Modify** to update your Visual Studio installation. + +If another project with the same name already exists, choose another name for your project. Or, delete the existing project and try again. To delete an existing project, delete the solution folder (the folder that contains the `helloworld.sln` file) in File Explorer. + +[Go back](#create-your-app-project). + diff --git a/docs/get-started/toc.yml b/docs/get-started/toc.yml index 49961e13203..2944683f36f 100644 --- a/docs/get-started/toc.yml +++ b/docs/get-started/toc.yml @@ -6,6 +6,8 @@ items: href: ../build/vscpp-step-0-installation.md - name: Visual Studio guided tour href: /visualstudio/get-started/visual-studio-ide + - name: Create a C++ app with Copilot + href: ../build/create-cpp-app-with-github-copilot.md - name: Create and edit a C++ console app project href: ../build/vscpp-step-1-create.md - name: Build and run a C++ console app project From f4ca46e7f6fefaa804248625f13eac7a3e05255c Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 23 Oct 2025 16:28:06 -0700 Subject: [PATCH 2017/2255] new topic --- .../create-cpp-app-with-github-copilot.md | 190 -------------- docs/build/image.png | Bin 0 -> 27687 bytes docs/build/media/Conway-Life-exe.png | Bin 0 -> 5189 bytes .../github-copilot-fix-warning-accept.png | Bin 0 -> 16661 bytes .../media/github-copilot-fix-warning.png | Bin 0 -> 22327 bytes docs/build/media/github-copilot-open-chat.png | Bin 0 -> 11248 bytes ...e-github-copilot-create-cpp-console-app.md | 247 ++++++++++++++++++ docs/get-started/toc.yml | 4 +- 8 files changed, 249 insertions(+), 192 deletions(-) delete mode 100644 docs/build/create-cpp-app-with-github-copilot.md create mode 100644 docs/build/image.png create mode 100644 docs/build/media/Conway-Life-exe.png create mode 100644 docs/build/media/github-copilot-fix-warning-accept.png create mode 100644 docs/build/media/github-copilot-fix-warning.png create mode 100644 docs/build/media/github-copilot-open-chat.png create mode 100644 docs/build/use-github-copilot-create-cpp-console-app.md diff --git a/docs/build/create-cpp-app-with-github-copilot.md b/docs/build/create-cpp-app-with-github-copilot.md deleted file mode 100644 index 8ad4b6af3ff..00000000000 --- a/docs/build/create-cpp-app-with-github-copilot.md +++ /dev/null @@ -1,190 +0,0 @@ ---- -title: Create a C++ app with Copilot -description: "Learn how to use Copilot to create your first C++ app using Microsoft C++ in Visual Studio." -ms.date: 10/22/2025 -ms.topic: "tutorial" -ms.custom: - - "mvc" - - copilot-scenario-highlight ---- -# Create a C++ app with Copilot - -The usual starting point for a C++ programmer is a "Hello, world!" application that runs on the command line. That's what you create in Visual Studio in this step. - -## Prerequisites - -- The **Desktop development with C++** workload must be installed to make the **Console App (C++)** project type available. If it's not installed, see [Install C++ support in Visual Studio](vscpp-step-0-installation.md). - -## Create your project - -Visual Studio uses *projects* to organize the code for an app, and *solutions* to organize your projects. A project contains all the options, configurations, and rules used to build your apps. It manages the relationship between all the project's files and any external files. To create your app, first, create a new project and solution. - -1. In Visual Studio, open the **File** menu and choose **New > Project** to open the **Create a new Project** dialog. Select the **Console App** template that has **C++**, **Windows**, and **Console** tags, and then choose **Next**. - - :::image type="complex" source="media/vs2019-choose-console-app.png" alt-text="Screenshot of the create a new project dialog."::: - The create a new project dialog with the Console App template selected. That template says: Run code in a windows terminal. Prints hello world by default. Has the tags c++, Windows, and Console. - :::image-end::: - - The **Desktop development with C++** workload must be installed for the C++ Console App template to show up. See [Install C++ support in Visual Studio](vscpp-step-0-installation.md) if you haven't already installed it. - -1. In the **Configure your new project** dialog, enter *HelloCopilot* in the **Project name** edit box. Choose **Create** to create the project. - - :::image type="complex" source="media/vs2019-configure-new-project-hello-world.png" alt-text="Screenshot of Configure your new project dialog."::: - The Configure your new project dialog with HelloWorld entered into the Project name field. - :::image-end::: - - Visual Studio creates a new project. It's ready for you to add and edit your source code. By default, the Console App template provides source code for a "Hello World" app, like this: - - :::image type="complex" source="media/vs2019-hello-world-code.png" alt-text="Screenshot of the NEW Hello World project."::: - Shows the new project. The HelloWorld.cpp file is open, showing the default code that is included with this template. That code consists of #include iostream and a main() function that contains the line: std::cout << quote hello world!\n quote; - :::image-end::: - - When the code looks like this in the editor, you're ready to go on to the next step and use Copilot top build an app. - -You can use GitHub Copilot in Visual Studio to help with your C++ development. Copilot is an AI-powered coding assistant that helps you write code faster, reduce errors, and explore new solutions. - -Some benefits of using Copilot when coding in C++: -- Generate entire C++ functions or classes as you type. -- Suggest code completions based on plain-language comments or prompts. -- Get help with complex algorithms, data structures, and standard library usage. -- Learn new APIs and modern C++ patterns through in-context examples. -- Receive context-aware suggestions based on your comments or code. -- Debug errors in your code. -- Simplify and refactor existing code. - -To install GitHub Copilot, see [GitHub Copilot in Visual Studio](/visualstudio/ide/visual-studio-github-copilot-install-and-states). - -## Use Copilot to create a Conway Life app - - -## Prompting - -Replace the default "Hello, World!" code with a simple implementation of Conway's Game of Life. You can do this by prompting Copilot with comments that describe the functionality you want. Here's an example of how to prompt Copilot to generate the code: - - -```cpp -// Code generated by GitHub Copilot -#include -#include -#include -#include // for _kbhit and _getch - -using namespace std; - -int step = 0; -const int rows = 20; -const int cols = 40; - -void printGrid(int grid[rows][cols]) -{ - cout << "Step: " << step << endl; - for (int i = 0; i < rows; ++i) - { - for (int j = 0; j < cols; ++j) - { - cout << (grid[i][j] ? '*' : ' '); - } - cout << endl; - } -} - -int countNeighbors(int grid[rows][cols], int x, int y) -{ - int count = 0; - for (int i = -1; i <= 1; ++i) - { - for (int j = -1; j <= 1; ++j) - { - if (i == 0 && j == 0) - { - continue; - } - - int ni = x + i; - int nj = y + j; - if (ni >= 0 && ni < rows && nj >= 0 && nj < cols) - { - count += grid[ni][nj]; - } - } - } - return count; -} - -void updateGrid(int grid[rows][cols]) -{ - int newGrid[rows][cols] = { 0 }; - for (int i = 0; i < rows; ++i) - { - for (int j = 0; j < cols; ++j) - { - int neighbors = countNeighbors(grid, i, j); - if (grid[i][j] == 1) - { - newGrid[i][j] = (neighbors < 2 || neighbors > 3) ? 0 : 1; - } - else - { - newGrid[i][j] = (neighbors == 3) ? 1 : 0; - } - } - } - // Copy newGrid back to grid - for (int i = 0; i < rows; ++i) - { - for (int j = 0; j < cols; ++j) - { - grid[i][j] = newGrid[i][j]; - } - } -} - -int main() -{ - int grid[rows][cols] = { 0 }; - - // Initial configuration (a simple glider) - grid[1][2] = 1; - grid[2][3] = 1; - grid[3][1] = 1; - grid[3][2] = 1; - grid[3][3] = 1; - - while (true) - { - if (_kbhit()) // Check if a key has been pressed - { - _getch(); // Consume the key - break; // Exit the loop - } - printGrid(grid); - updateGrid(grid); - std::this_thread::sleep_for(std::chrono::milliseconds(100)); - cout << "\033[H\033[J"; // Clear the screen - step++; - } - - return 0; -} -``` - - -## Next steps - -> [!div class="nextstepaction"] -> [Build and run a C++ project](vscpp-step-2-build.md) - -## Troubleshooting guide - -Come here for solutions to common issues when you create your first C++ project. - -### Create your app project: issues - -The **New Project** dialog should show a **Console App** template that has **C++**, **Windows**, and **Console** tags. If you don't see it, there are two possible causes. It might be filtered out of the list, or it might not be installed. First, check the filter dropdowns at the top of the list of templates. Set them to **C++**, **Windows**, and **Console**. The C++ **Console App** template should appear; otherwise, the **Desktop development with C++** workload isn't installed. - -To install **Desktop development with C++**, you can run the installer right from the **New Project** dialog. Choose the **Install more tools and features** link at the bottom of the template list to start the installer. If the **User Account Control** dialog requests permissions, choose **Yes**. In the installer, make sure the **Desktop development with C++** workload is checked. Then choose **Modify** to update your Visual Studio installation. - -If another project with the same name already exists, choose another name for your project. Or, delete the existing project and try again. To delete an existing project, delete the solution folder (the folder that contains the `helloworld.sln` file) in File Explorer. - -[Go back](#create-your-app-project). - diff --git a/docs/build/image.png b/docs/build/image.png new file mode 100644 index 0000000000000000000000000000000000000000..f892839fa3f9ea0082189b31a12fa82c2e223b3b GIT binary patch literal 27687 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 literal 0 HcmV?d00001 diff --git a/docs/build/media/Conway-Life-exe.png b/docs/build/media/Conway-Life-exe.png new file mode 100644 index 0000000000000000000000000000000000000000..94bad16e7d632701d1446043694e08bc0c931935 GIT binary patch literal 5189 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 X=a(3EYx%67{(zImt&SBNJKy*p0g6FD literal 0 HcmV?d00001 diff --git a/docs/build/media/github-copilot-fix-warning-accept.png b/docs/build/media/github-copilot-fix-warning-accept.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8f3ded8765e3cdfdc9b23d5fd86eaf0b05c42d GIT binary patch literal 16661 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 literal 0 HcmV?d00001 diff --git a/docs/build/media/github-copilot-open-chat.png b/docs/build/media/github-copilot-open-chat.png new file mode 100644 index 0000000000000000000000000000000000000000..c89019f9abcc81ebc04b57df1a05b2a6cf47f28f GIT binary patch literal 11248 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 literal 0 HcmV?d00001 diff --git a/docs/build/use-github-copilot-create-cpp-console-app.md b/docs/build/use-github-copilot-create-cpp-console-app.md new file mode 100644 index 00000000000..5cce63448bb --- /dev/null +++ b/docs/build/use-github-copilot-create-cpp-console-app.md @@ -0,0 +1,247 @@ +--- +title: Use GitHub Copilot to create a C++ console application in Visual Studio +description: "Learn how to use GitHub Copilot to create a C++ app using Microsoft C++ in Visual Studio." +ms.date: 10/23/2025 +ms.topic: "tutorial" +ms.custom: + - ai-assisted + - copilot-scenario-highlight +--- + +# Use GitHub Copilot to create a C++ console application in Visual Studio + +This tutorial shows you how to use GitHub Copilot to quickly create a C++ console application in Visual Studio. You'll create a console based version of Conway's Game of Life, a classic cellular automaton. + +Github Copilot is an AI-powered coding assistant that helps you write code faster, reduce errors, and explore new solutions. Some benefits of using Copilot when coding in C++: +- Generate entire C++ functions or classes as you type. +- Suggest code completions based on plain-language comments or prompts. +- Get help with complex algorithms, data structures, and standard library usage. +- Learn new APIs and modern C++ patterns through in-context examples. +- Receive context-aware suggestions based on your comments or code. +- Debug errors in your code. +- Simplify and refactor existing code. + +## Prerequisites + +- Visual Studio 2022 or later with the **Desktop development with C++** workload installed. +- GitHub Copilot subscription and extension enabled in Visual Studio. + +To verify you have the C++ workload installed: +1. Open Visual Studio Installer +1. Select **Modify** next to your Visual Studio installation +1. Ensure **Desktop development with C++** is checked + +:::image type="complex" source="media/vs2019-choose-console-app.png" alt-text="Screenshot of the create a new project dialog."::: +The create a new project dialog with the Console App template selected. That template says: Run code in a windows terminal. Prints hello world by default. Has the tags c++, Windows, and Console. +:::image-end::: + +1. If not installed, select it and Select **Modify** + +- You'll need to install GitHub Copilot and have a GitHub copilot license. For more information, see [GitHub Copilot in Visual Studio](/visualstudio/ide/visual-studio-github-copilot-install-and-states). + +## Create a project + +1. Open Visual Studio and select **Create a new project**. +1. Search for "Console App" and select the **Console App** template for C++. + +:::image type="complex" source="media/vs2019-choose-console-app.png" alt-text="Screenshot of the create a new project dialog."::: +The create a new project dialog with the Console App template selected. That template says: Run code in a windows terminal. Prints hello world by default. Has the tags c++, Windows, and Console. +:::image-end::: + +1. Select **Next**. +1. Set the project name to **ConwayLife** and choose your desired location. +1. Select **Create**. +1. Once the project opens, locate the `ConwayLife.cpp` file in Solution Explorer. +1. Open `ConwayLife.cpp` and delete all the existing code to start with a clean slate. + +## Use Copilot to create an app + +Now you'll use GitHub Copilot to generate the Conway's Game of Life implementation. + +1. Open the Copilot Chat window by selecting the Copilot icon in the toolbar: + +:::image type="content" source="./media/github-copilot-open-chat.png" alt-text="Screenshot of the Github icon dropdown. Open Chat Window is selected."::: + +1. In the chat window, enter the following prompt: + +``` +Create a C++ console application that implements Conway's Game of Life. The program should: +- Use a 40x20 grid displayed with asterisks (*) for live cells and spaces for dead cells +- Start with a random initial pattern +- Display each generation for 500ms before showing the next +- Allow the user to press any key to exit the program +- Include proper headers and use standard C++ practices +- Clear the console between generations to provide an animation effect +``` + +3. Copilot generates C++ code for Conway's Game of Life. +4. Copy the generated code and paste it into your empty `life.cpp` file. +5. Build the project by pressing **F6** or selecting **Build > Build Solution**. +6. Run the program by pressing **F5** or **Ctrl+F5**. + +> [!NOTE] +> The exact code generated by Copilot may vary slightly from run to run and model to model, but the core functionality should be consistent. If the generated code doesn't compile immediately, you can ask Copilot to fix any compilation errors. GitHub Copilot is powered by AI, so surprises and mistakes are possible. For more information, see [Copilot FAQs](https://aka.ms/copilot-general-use-faqs). + +### Example of typical generated code structure + +Your generated code will likely include these components: + +- Headers for console manipulation, random number generation, and timing +- A 2D array or vector to represent the game grid +- Functions to initialize the grid, apply Conway's rules, and display the current state +- A main loop that continues until a key is pressed + +Here is an example of the code that GitHub Copilot generated given the previous prompt: + +```cpp +// Code generated by GitHub Copilot +#include +#include +#include +#include // for _kbhit and _getch + +using namespace std; + +int step = 0; +const int rows = 20; +const int cols = 40; + +void printGrid(int grid[rows][cols]) +{ + cout << "Step: " << step << endl; + for (int i = 0; i < rows; ++i) + { + for (int j = 0; j < cols; ++j) + { + cout << (grid[i][j] ? '*' : ' '); + } + cout << endl; + } +} + +int countNeighbors(int grid[rows][cols], int x, int y) +{ + int count = 0; + for (int i = -1; i <= 1; ++i) + { + for (int j = -1; j <= 1; ++j) + { + if (i == 0 && j == 0) + { + continue; + } + + int ni = x + i; + int nj = y + j; + if (ni >= 0 && ni < rows && nj >= 0 && nj < cols) + { + count += grid[ni][nj]; + } + } + } + return count; +} + +void updateGrid(int grid[rows][cols]) +{ + int newGrid[rows][cols] = { 0 }; + for (int i = 0; i < rows; ++i) + { + for (int j = 0; j < cols; ++j) + { + int neighbors = countNeighbors(grid, i, j); + if (grid[i][j] == 1) + { + newGrid[i][j] = (neighbors < 2 || neighbors > 3) ? 0 : 1; + } + else + { + newGrid[i][j] = (neighbors == 3) ? 1 : 0; + } + } + } + // Copy newGrid back to grid + for (int i = 0; i < rows; ++i) + { + for (int j = 0; j < cols; ++j) + { + grid[i][j] = newGrid[i][j]; + } + } +} + +int main() +{ + int grid[rows][cols] = { 0 }; + + // Initial configuration (a simple glider) + grid[1][2] = 1; + grid[2][3] = 1; + grid[3][1] = 1; + grid[3][2] = 1; + grid[3][3] = 1; + + while (true) + { + if (_kbhit()) // Check if a key has been pressed + { + _getch(); // Consume the key + break; // Exit the loop + } + printGrid(grid); + updateGrid(grid); + std::this_thread::sleep_for(std::chrono::milliseconds(100)); + cout << "\033[H\033[J"; // Clear the screen + step++; + } + + return 0; +} +``` +When you run the application, you should see an animated display of Conway's Game of Life with patterns evolving over time. Press a key to exit the program. + +:::image type="content" source="./media/conway-life-exe.png" alt-text="Screenshot of Conway Life running in a command window, displaying the evolving grid of cells."::: + +In the code example, the code generates a warning: `Return value ignored: '_getch'`. You can ask GitHub Copilot to fix it. Select the code editor and press **Alt+/** (Windows) to open the Copilot chat, then enter: + +:::image type="content" source="./media/github-copilot-fix-warning.png" alt-text="Screenshot of the GitHub Copilot chat window. The text: Fix warning C6031 is in the chat window."::: + +GitHub Copilot will suggest a fix to handle the return value properly. Press Tab to accept the changes: + +:::image type="content" source="./media/github-copilot-fix-warning-accept.png" alt-text="Screenshot of the GitHub Copilot proposed changes. Tab to accept. Alt+Del to discard."::: + +Congratulations! You've successfully used GitHub Copilot to create a fully functional Conway's Game of Life console application in C++. You've learned how to: + +- Craft an effective prompt to generate C++ code +- Use Copilot's chat interface to create an entire application from scratch +- Fix compilation warnings with AI assistance + +## Improve your prompting skills + +For better results with GitHub Copilot, consider these prompting resources: + +- [GitHub Copilot documentation](https://docs.github.com/en/copilot) - Official best practices and tips +- [OpenAI's GPT best practices](https://platform.openai.com/docs/guides/prompt-engineering) - General AI prompting techniques +- [Copilot prompting guide](https://github.blog/2023-06-20-how-to-write-better-prompts-for-github-copilot/) - Specific guidance for code generation + +## Troubleshooting + +### Missing C++ desktop workload +If you can't find the Console App template: +1. Install the **Desktop development with C++** workload through Visual Studio Installer +2. Restart Visual Studio after installation + +### Copilot not responding +- Ensure you have an active GitHub Copilot subscription +- Check that the GitHub Copilot extension is enabled in Visual Studio +- Try signing out and back into your GitHub account in Visual Studio + +### Generated code won't compile +- Ask Copilot to fix specific compilation errors by pasting the error message +- Try refining your prompt to be more specific about C++ standards or requirements +- Ensure all necessary headers are included (Copilot usually handles this automatically) + +## Next steps + +- [GitHub Copilot documentation](https://docs.github.com/en/copilot) - Dive deeper into AI-assisted development +- [Awesome ChatGPT Prompts](https://github.com/f/awesome-chatgpt-prompts) - Community-driven prompting examples for inspiration \ No newline at end of file diff --git a/docs/get-started/toc.yml b/docs/get-started/toc.yml index 2944683f36f..382c539cf83 100644 --- a/docs/get-started/toc.yml +++ b/docs/get-started/toc.yml @@ -6,8 +6,8 @@ items: href: ../build/vscpp-step-0-installation.md - name: Visual Studio guided tour href: /visualstudio/get-started/visual-studio-ide - - name: Create a C++ app with Copilot - href: ../build/create-cpp-app-with-github-copilot.md + - name: Use GitHub Copilot to create a C++ console application in Visual Studio + href: ../build/use-github-copilot-create-cpp-console-app.md - name: Create and edit a C++ console app project href: ../build/vscpp-step-1-create.md - name: Build and run a C++ console app project From f011312104479e01fac3534fcb8886c7c8f4a42a Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 23 Oct 2025 16:49:16 -0700 Subject: [PATCH 2018/2255] formatting --- .../desktop-development-cpp-workload.png | Bin 0 -> 7316 bytes ...e-github-copilot-create-cpp-console-app.md | 38 +++++++++--------- 2 files changed, 18 insertions(+), 20 deletions(-) create mode 100644 docs/build/media/desktop-development-cpp-workload.png diff --git a/docs/build/media/desktop-development-cpp-workload.png b/docs/build/media/desktop-development-cpp-workload.png new file mode 100644 index 0000000000000000000000000000000000000000..a321200feb51a93b0febf1a84503e2e99d000159 GIT binary patch literal 7316 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

-EIr>$2_gy&-?;KK;AamKY|fhmq3tG;ww z{)&TPM1mJTx5i?Fj#$>6GT5c*3}o-eFWVjJHBz357Prx}=HNU49AXGHQvgJkNNiMM3it z+P(b%cnDkA3-OmU813&Yo{%`->Z`JSp+{=3Y z_DAaB9b2nESpm-3CiU=M4R4osS~~)(a;D6OdR@zl$qW@ck?g#2=E?4mPEJCeZHFhz zj)M$S1gnh=*FITkghm=fKdb45=cUVt_I$!^sBWCPCQSY`bHb?9a348bvE&n+!|RS5 zEn8Lm9v**SU_1qH&#z%VGVgBB5A#Wr{Sp~4)4;rS-Z?dR9MWOKWaW$V)F`VZ8#&tF znWD_Ea0t8Xl=YO()9jQ7!|Q^<8)ZGGuWovwjohmr z5g3q(ZDEMnVP$2z2(^ydSGk@er`>j(UJqg#6tXp_V_M$G{;@(%Hbt}4J=B~RvkZyk z8X=5d9J)DiFwoI8*lATm1AZ-*PAt!+?Y@)7&6;Hi@9wENeJE&q2TycG^#o7eE`NUS zSM=&zujy+)`^WX6R@4x3=TnQIz_g(7KLjyF8$X^BXCXhyZyCZ z;2IaIm@!AvGgjYy?0FQ%Iep%QLsg-4ST-=flTIxw(9$vnov5E@Et4>P!SwQ*#OIKn zemM0blK!oK^4IGh`h#!j{_voWpWTU?aHrbp*M+4RzYZf^^Rt)iIR+j(7er;-{LK?q zKt_?HH7m4Sb^n(ybSataNK*NL#OKeR>BoNf)B3l6{wMSg{m>`WA3oKY@jE9R$FOtA z*S2(pX_xQ?5xs^!L*Q#Q~WaXcKN+x5b|$OJFS5n33GJh%~^M>ja>CSK3;> zdntAYQNA5LWWMNTmoWhWL|lfVG}$sA1C8P>J3%Xhrefz5{I>Z2gb$!yGG5swgaL52 zB{~WDXzM!HL{Kjgy^?1GHgtgFt+0`iuB-4mj-zGO^m1EhKi$Rwqh+bUi5*G7|I=sW zpr>j%o5|EX(R};cdi||8^wppJ(;Bb+h@QXmwhb=*)Hozw^#Z!q#)9ahDVbX~88zP; zJtgs;M0CE@z$Q!P2lFPllIg2%X@a9@v+`E+ZUc15gPoyd7yP)LAM>Sk%)|Rn^~P`e zX?@~H-qQKO2guFz$;yn|&@{_6Vtx|KEG77mqdvl4CiK$XW+w+B#*3X#>moZ*CGV_s zQG04%C>t1dUb?f}%43f9p^QUuoXMVJOMJ(H!94HAQSbr{x`i&4r07kl&eJj=>hiYv z8rRmNw$oaNo0^V;_bIy1^+~PUakEo5@eja}0}Sk7p>qd?``Eso50>`|KEyoXqx5+k zcsVf0nnBMiCF~TBZ|$5a2-{bh%b(om;*LdbGi#imtz8t?x^Q0FTxJ+|kZXKL2$$eI zLTX*@yERS>){vDW=K;*g*%-r_ol!#vuRo|NP7Xy$(!ZBA5H885H47qfHbOER5`qj& z-JbtETF>5p(2w-gzxhXhz5ec>{Gy&cd#3xH+LhMk;P7KO>YA{!^90r*p6V#9<{51&SKZ)l*;;UgJms`Fh&fK>5Kt8*d3B!CdxB-Lk?VM z3Eo00QJ}n>MzTT68DTJL^N*d zx8K%lZ+%u@`MGaNuYFTb-+Rxyy&7k=jcdzF;CE&qR>bm$y1djB^K$(L-57TSCH~kE z@O>ku&jd2Y!y`SxbMqvlWkOm1Ok>R%81c@$$R{#3%v1B>sp|H5edZ7SjE??Ddbm4F zhb~-!CP$@&f5J=gC?l7RoL;yH{B2~0nQ4}l-i=Y7in6$0aV`+GA$jFmZQb3|}jT36c; zDSep($PQ75u-X*Q^+KM?(X9~XbuZ(V5D>;}#*i7&*E0qn;6Y|^gKr^Cg2{oC`?HY@ zqk-lV?|ckr>g6agX+cNfWF1&`(O|hHpe>1Z=BbXMhYwDD^OXLrKl&T>JAcdP_59hh z#r!mt%8m=wV$@&$3fche<{@` zPY%udsej|&`>*sjpPqVhb5C9p0hX4Xk6}Y%r-th=y_x@t$UGg7+1Xh({I=-JP}{Ir zws9i4HpYRmFhSB@D`H83GR~B?0>%n9JckRv&_3_B;(r5l8O^}9jnnH$1n^rCwdSlN z>yN;gG5x$1W9FI97|D?042kz%Rm>>#ga(Zv7|eHwj9Yn}b6)3Pb;C=H;SAW&JZ(g3 zGj?-M2g~L8nD2`Kp_!~{>$Ep@9Na5Wha+@Sm9rQVho+1>1krLCC7E|6mHEp&=_TxL zIlIM@pw$TcL}pGECPb!M)Et;jkzlc`T@o+?eq(4t{DnLB)$%g0I`1R0gJp-vIEDnk z4d59VJcSk z{m1q2-n;5Lv45Gg`OR52UmM4!m~1bF)v& z_Tlz+(pt02OJ3#T?4B;(c9tv|K{9aYwPf#9Lw38X?BvAJkrlg+LS+RN9#RAiyPck7#CGClTB1FN7`*Z)d+f5%mo%+(#yZ*I5^6T~6|Blb= z`O{|<3oCAimHT8~iHfqmNwi*>yKJZ%1!6xbo^McFHG;LVtD`y-nD~cAl3>j3W*B zb9#O?Y@Rv>yaOxvFHTR9 zaYC}}2zF=ZjAgcto0Ki{3;y6IW1@fIMTFpT2xZ!M9^kE~ok$||hh zenW5m+#lER+K=kt?RT~S!sA;Pn&0(Sstow8(G?_3tQ(1~>z#a_q*r>z7*?HHf&+BtP^M^F_ky;L-!q35% z;lUw?t-bqdU;dQ2KMn)BrMgvl0WL6h8?aXU)jrcpZL?V-LXO5bcqjh_7)BoxJ@z?dw{@?$G9zOe$ULI!JbZVA}BV>G8aeKtJie9`JmSh?> zmdVC&&C3)2f4crW?$+cg4?~|-@1DNzoYURsoF3J!7MhR*YB31Z(14IYAc%!zFtM=# zTZCX6FoWa-JFy5d;>Ni)j(>J?A;A|Lf`K^31{`cB#KB=Q7=w(2m;^!ts9W8A=JO5v z+xvZM-9Mh^sd`WQceix<+xs1=R;_uhT2)2GHUy*CQh4wpbp8-G#7C@#>7$;jP zs)M3#cdBfjZ9}#Qn)IQ7$@nD|79%rIff$YY7J?7fb*8b5QX8iP*byUAnK_eH>E@qoRk z!QBuBrsmOUFHqe!SFFd=^d*^WMe#Z%Asj{#-NJ)q`%Knw2pd%@>A|J7= zG4}wFIHJ5%W*PNtP1ao1q+GI?yz7cI3eD$eA|#mXIQ5JdIg!_E%RT~ABu;N0tg>%rGQ%L<&C37-og?4G0Hag|bN;5$}x-Bo$%s@f_*eAwH6o%e^sby0JO2 zgr!!?fdd~p6qqJuf{B=jpaZS|3epjjcTR6LoygE%)`51=>0Qb&`8lB@p;FHlP7RaJ zmW7lc^^ zSYmUq!RBy-^}z<4%?6u;4b}$>Y}N}b7lo&HHz5^TRZgRji3AXPvdR> z==X4RVU5kgI3s^ClVXES!jv*#C~7|$;W4vC_E$X4VTxDnjAmu3bUP(Zwi8Zw7293K zc3*LPHsSPa!gg12x=Wns`|&<;ysMZ(nS!F|LdF|5--Kn3=PGqIWZFd1dG&X0@E^x)l;k08BvLoo%#x()dW!i znsXssrHtkf+;a$4EuweO9U=~k&iHaa09UCLF$Ty>5N!g|ImJBLc?qq4k9|=V$yu3l zz%}NCY7neGQchL%iXU#4*dDHS&=}|tj}CZL7+bsLC0uewgU%VRu`N1j%1CKbMrbN5 z4OH!Vlv4*nfX8Ba^8eH)ydp7^&aS6gYs`$>67||MIC$P&c<3A6iQ)W9Fy6R9*SJ7< zl0K?5V#HzBmHJQHiz&rJlctR_xywDobD5-_<+0LE%Q<1dfpFap>6kzZD4h|o4ImtB zcajkfuylc}B!&+?WQTJnE3&0rU&2T^GJG&nJk>P(^L}(rmT?(oL0gd_$K#rVdhqbL(w|6I3f9h9!vdVwD2UNohAZKpYC|E3AZ&OhKOAI>Tq& zRq&JF{%N@X@(SB6H+ZBGBtA%r=t@ucqq0GBkc{c{7;0iDf#sUYciICtZf^0+wHZm8Fe=qfRNeNGS59a_#C{M$IxZhozdPbW*4rvN-{)VCrM+Mu~Wd(8`pm zs8sZvJN2G^5D0<`%viL@Sw_J8Rh>030n9s;6WGW#JaVd{WtyODBRG8nxDHWpngv6@ zB+MB!B+yuzOx?VKg9pyzp>O;SEbe&)cGs_=4wyNd%9Kk^0pY3=mSGs=L|cb(Y|?@< zssxAk34{B0)UPL~ckSRfiy@^$91(^hy<7&>7A2@-GBu4t2>e|CkQYO&LlDSM4YmrD zF=%HGd+dOsbR?OqR)rPcv9!BokDBxm&Iofsvktkcyj% zh*=EYhw4cpfwLO8aQy^7@lBtA*FW(PPEXEcoHb74MlE*y@_r&wQp!%RFfsy$Qn21E zfUNkyAD-ZsfAc#2&2L=8zx&7$o;p3l(G=KMkQ*x7j0!B51sB!@FS)eAYaTto>mIv| z&wTksJaGR3kP~*>QKTV!H1@sDVtuf{hd*+HKlwM`i(k35$NKK2>PI+^VKJ!wNd`k` zC3$5y&2|lsVh!D3fg_#J3}z9Ir^G{<`0;P}1U&rU8sp9de^e@s2Z8344g=kmzy6Ou zgztOLb(}xH)Uz{1?tTT05gnmaelu-t5E59Wuft>S&KiR0`Y3L%^AX_d0JK#A(c}mb zxN$t<(=V>@kN&e4;ob`cyS-`wWQfc@)+-T-MFc7a{KX&s5PsrAC%AZiMQ}w!2$%5h z^eN|3?A1F$S7kM+%w1QMirD$X=m@0eoGkZBJ<}0Tf2AN+hscxP#g)JRov8amU@1AA z88$X*OwXptd|S9}vIeN%=7Caf#TSILJH+#Mh{Ji1;f#!&rZz?!a*u`|DtB?O4I4sE zikwa9FguFYKdC7g1RWf*hyz5kGU?SYVmRDRK*g?T97;pRH|$5a1)w5_0j1J4sn@Py z^Uwu6^iA);aPbo{UT2WVpo7y>%$Cl8QpUtM>Uid}jCzFsq`fFbwRd1tPCi1ziD?6( zy5XP<*3ELFVVM)nAYMpk6^MfnVDcG+XZI_@wGOZHK-Wr0}ky%dZ9`*Dp; z6Jq{jT8y4!1-)4cgoWDYj#x0rW^Md@n;_6DK&awBAwjHxS_<-Lhp&C&e!TuOAH@D_ zr#CxtlIDztB#pP3up?BbVgUdO0*C7*)|(aH`~F+_w(t8Lyy?5%jj#G&-jDBp&vm?S zTXA*0#{T>o<*qf#-AlyX3k>&c5SKSNyK9AKmj%D{>?!{4FFcDs@jw0!zVu!1#&`d( zzlV=}>xUr6tY{oLf$_b>kPA6d6<&B2!7H6%_|U$3R9hg6G9m$wvvw1>032ap9Or z%gU92Y9Fdckk1H!&NNf<|SXh?J=b6)LE;qX+UZYlQ%e znsQ2Qc@dzaLqNrI<_EP~WzC^J#4CJW4uo|@r3{hIU7vLxlLH$)RZiOW@tR>N$GpMF zoMUpId{j&IBTzL3Mtx&h=3YHD1VfQwl+J+Y-JCV4>RMIMjbQBxq$80t(JGk>^L)lLOrG7$7gVEJ9^a zT2s>@s(YgPCvKUk)wsIKlaBK=HGk6ylN=@S)P}7Us&+t38j_b8QIb&fojba!NoxH^ zufz23@x~E0uXqCIANzRJlOw`tXCug14j#x)Vm7%EbY?tO73E5YwYoG<%>wXBQ4fM3 z8}s@ogOhE_ic@iQ;$A`Bj;W4S*~2IUS5|3tGm?u6qVSo7oOS7ftQB?KlfJ6S!LV#v z#qi(po^+jMpFyFrJW;raAqg{aBN_x$-;~6U_T?kK$gd6#dPc~268`j`EQ2-+4fa_l z7GT#A$zWD5HYY>KZ4xs>He2PtI@`M-$$YYmYD2=(1X-Uum{Y`@a~`dP+G-C<5$W04 zW&Rehsf$UaK=_1Fjf;vabrb>*=Oc*S@!?7&!kt-BLvBg&5_+amUE71;oT8OML}`YM zjuye$?J7R*V8FM$<%K|2j1%u0MVaWUA*`@HuC&rpf21`cfc3!=*KeNTJHP*T@g@K7 z_uy~+?9=$28W`?fV|8hT%{s6NV1>W}fkg$D;DMEkTCuK)O$ltyEwQ?HgS>x@Upm?2 zzx=6>;E%oQ-T0sW$p^991MAHS0C9qv*sK@WZGm@u-|yh3K6r%Xr4?fIl3Yf5p$#Po zv$7s8IE>J8g|6hC@{S-MxmJc0^4K-+A1sDD9V<|Qvt8nBpEx_?-`#G)ZlBogf!)a3 zpmAS;37F)t6UVcaB`vM&tb$jADPl>bXF-Et8j;-Oj|7FiAapDQ>E;z;hM&#Q=-NP( zV5Do@QGxM$W@0}wrMn*!yRl+7C3X|ApORx81N#we`f^tjlMi6Dp%go%a4rlW<)|T4 z#Av{i(LC$mSYIIFklawNSf3!Lk3(Y{RL!d85S}a3_;hwu*Fb=HuTUt=CkgK4&0$DC zsCmmTujzVqpeAE$r;ZpUcp6s(l{!NS%Oo98RP80B_vXr(>WEGsEUOwZaYpYUQ_f2i z@+`bci;xtM*KORo(K3#NkE)etpq_0RgCt)@fKz$mUBb(y&n5}`PDa>6LBs;}`W37% zE%D&je>;YIJ^}mdSE(`q_5~PMq!>k=le6l6LD@+@7ke~fn)p9V(q&l4Y#N3ri9xE zW{#Hs8Gb3m2wme?s`ktXMZTF@g#j`Kn|DNz5`6c^h`d&9ORt(84>Q1VG_olzSZiV| z0B&sYji2)XUhwES>~^C>vw!%@Q3BgY-5`TE3?LI2hQw;U#LxfxXYt4X`n&NR|JO(G zk;Q=J#WmIk16Dcks0z`F%1CMbVc-G1+MSpJLqoBOz~;gR!#!)fZ&&dR|J(25PrmCv z;C;V)3+v4aQ4-5#piY7B`2OF<_x|d$SlqY4qDs)^K&F~3nmXd}QsXl#kv<7Ba00xq zXJ~63`@)OA#~kusj*M*u*PQEklN<>DNNImhHg68~_rmztUV$RN9* z&@0ZYyb#b1w-zZG0?ECdseo}|eIYzqq#bE%j3@=eu%Il33SyJEVryM_t0mr>$)_(P znBHfmK^LRTA;n%1rxb5uro_?V<#)-w6s=_@f?H^W=p1UJ75b`Q;#{z&_$gJVVZ5iJ z>ZUHMiOEmUXr}SibS0f2?&YFKt=N;Rf?#-57)#!uA!78aF(s4j)3qyDUOvEsfAPP@ z^4?eC?Ai@XqGhI>;zAn znN&e1h!o~aM1jU@8u|_EcaNu%CmMbdguV8R8J&EAk%>fN9~HZs$2j+j$8q;3eLU)| zt8%;yCx5se6rq#TwQv9~?iC%HuJQh1$yHw2R@zYxX%3X#N;=TgRdR@{W(`8qL8=R5 zo4i+pyb=vrwv)6sMGk>wjsXbenkZ2fm$rf6|2zfG=jh0CaS`ooiXVx0?(A%SH@OQ7 zopV3Km$Nu_h^zw>F)Z2h#53fWWh1`nB#XvoF5%b#79GU-MzZry5+EW$(#h8JPlb0D z#)P=h&v~~>$lp{u763D)1eFn*wX54y)D}#SHBTQ>Dx{$L?8;8q zrpiix@)a8(k%h=0tA(5dPlM5u4Q7wTm_-}GrRFD@MWRzxhQN3{;gy%x_{z_J9-w}` z5s6n(HD=fNNK6|9UZ>3tEEfgK^%6hwQy<2k`tJAP=WdNy+<%D8f=j&t;)llD%DIoR z&Qg|IScvqLPX;h11_aid0rAiwe)7Y&@#X*Buj8kG;bT~D4lyhj_`Cn>2k|&Gt&^Q*D~`5|K<{*2PKPv+F=0O*;QlZAQVeB>X}c$ni4~2P zYUd{8I?hkT^GS!#w`MdhptZGs5Gr+TvLOTEt zi-o|S?SCT1feeEZ3>1oqNR0?gIv0f*P8rIPiZv0y>4^XIGw#Df4;^B!VqJo*@k?p* zAZ;mNI}%NylaYrZFszpN{vZ1Y{`^1ueLQv7605tGh)J*(Dph;LHn>tVE$cuhgSe{N z2ZD-+gCyAt)&SP`9^iK)@KxXcyZG1t?kW7lzj+ex_&+|1dTEW-pea%C9n+TrLE1D0 z793Ny=#sE{s*AND-h*al)O|m>mbGXDz{E_sirh$!wXNpTHFZdVO8_}xs^r%a%qFot zzCd=>RF;%1vo`!4plzbUC-2pn^X4fp;@tl{-9x^mLejrr#L`^;6i>7W+H>m`BReG> zUh_HWNT;3A9C<(IbkVroUi$<$6U(Z7U*yE?MzbJ z8)v4Vz)@(RGVqOl&~_1W9;%2NmYB|8kl~>4ke)(4)9`LrDS2lQ0?KH31&+GN(6nt* zKnM=uARm$sY)HuS9gcvOGpo;35Ewvr`cv7yq_U?Yrc76mj+{E^D|i4;Rmh+PtVD?S5EPX5k zNBj`!A!D0q@Yq+%ftlkI(qW~LmK;ACjmdl|2iZwi>k|byP!=v6paKXPc8~_vh2~M} z8QLP!k2XRZR$)5c;@nGKgNv_z74qnIt5J#6o>R`W)KP`P>TDY26>Fz?>F0_>$T1~g z#z~(hRm3bTi?1Z3Wf1>?8QYZZ%Sn6mG~FvF!;Vz7v(aUf*_T9O(losG8?t^B?dUiW zFPSP2k$$ltMte{V#8r)L2X(aiIE4pkyoB>W~FC!wY z2YsryL;zT*T%{)m$w=flDOuv0m)!|}=(>b7LagWe^XIH6h-AIc|F{nn4nEzM0EG;z z2F?5W4&CRd)u!8?!|$8(pFW69{$J=Uno0sBQo~D>GBly)v&I#>bEYkt(`W)STN6l} zjTMg^2LAZt_X9|60Y4i*(>m^1*dq=CPGfUSB?8OU5iqGOS40W&m;o^t~uL)%Vn%AsoHnXgr`}5}M;8Acc2+X8fWAq)_Y@1*4r3;@*nU zP7xgi?~Y2`Cs?RFNQkI#>umoI!oj7xK-Jk{=7|i~U`QsUkm{@;8&HPS&NFn9I)*!V zoA~X0wsD!YIMYHj4BTZ0axRhDZ$*4plT#a>((yhmX7E}W;ugh8-rFRhD3`1+krUd0 z)O3n!?aUeC^LpbN78ert{e^GC;-Ob#cl8Qt(X>f5^5i5#*QCddGqaxA*t8bLx?F-h zF^z09f;-}Ky9Pd!5YMCDnhYAZx~da_Ys<>T`y(pshqwu2~xe zL|HJvl!H%Na$v*_6A9!Q=?LMP^1z^gCfWKE3V`}7LzCx#`U)TiHX+-h8b`O1!V%y50V!zKAG5iU?}IDWT}_h;SVS_o3gRXB)9ixcRdH z%0h4{W1)jA>o{lff*81}rw^MRD5t^fWT@|%cV60xmrx2mfa4LL{c(5Uv6r03xEmEG z@jiuEjFwz{$B4){BB^gi?-t79fKUh7ZIC{Q((h z8Tf#wl_(s}0wt9CP0uF>q9!)OfREL{(-~MV3Nr|x!Wx<*XCo;bIilB;SIm~Pl0sB| zjKnvYOCUDC*9e+48WlA2B%=ia89#O5$Y`fP^uj*>yS;yMDH8f)?n8Z~?GcDNZ?5tS(?D%7@c0%x%+9rzUe^5_W5i;3rb z{eOkShd&$B^&7xKVxh4YWjPIRrm|0nEN05mqjPkq5vg>IX?Asr-M z$m$w6%3W42)M!)H$>4(gWqN3Pi==#)K>|v?Wm^lg;UOM^V5mOBOi76dA37{~BlC38(u%sQ6LQ>Z)g)B2q|9RF{W?v|pwSvgC!Nj0_f(&wq19Rug{yp*Q^i|8?LHoU zI+~ywx?XV0Aq8Ls#8J~2uhs*uTs_6N{m}2@nKEE?Zb_jm63)gfpit@EmRictX_P}uQ9+MYZEhxdAM(x2-SZiV>l;{cvU_o|- zra(*wJ&z!rc#X~+B2;M2I)uP;oQ4p)&Wr@m3!j_TfQFKE7(#qdz&(?S#KY5dY>GOc(L|A-B6TvX=o!9G ze#ol989(AN5r8;VjgGS~u%SUk6v|g~__UhF4q7Nv!M-XIbe7mhrPEwhz#8bQacm@# z*GmBpx~&xvaz>3mNSRmg+$Ql02pOlb>`={U1ey-%&;UYtjufwjrVUU~Z(Yag?!<#% z_ib1`{8<>U-2}kZf<^q;)GIh%%Cn~z2oJk6zNs(lnA8cFCh8$RPdyl*L#S_>Dkg4+ z!Sbqpjq9+}$FTreK&HR)zMP*(>LhTSP1f19cv85tLoa@8vOQ_GLp6R#(Nyi1fpVNx zj+$hLfms4)2YB!c-h{t`_>^+1=4a3t@A(ym!8fIPJ0D7=4j%mYqB+VCQynT$|@ct9zqLL zvQ`#G*D4*seb+K8?S<%49SB81lm&5wYdX!$XJJ*r1mbMfiqu8r9NM#&W9Ln(BtNNUMAby;iFmI2QL>Jl~kc0SY*tPB033k zLPFjYuy+OKeJ(rZlk;x-ck?z=-$)iEIz^7Q>|X3!IA#~X&qky!W{6EL#kFHbrR(n5 zj?|*i#%Rf{G!_m`1*vGW$~nS7IyESo0k^`WIC{+Nvyl%0M(Dol50xX|GHh*pvv&Oo zWkWcZ;epw#Le8|DYsD4JAP9z*x#Lt~)Io#ysn_i#4Tj(Ot^orDU(-&_83NjrIfEO% z)Qn?5o}_4Ko^C3LJVoMr@CK#V2kB*^S3KzEGzdCLFwioJ=9x@d5+}?(MGZ7OL~?0< z%1AVLgN}sxi$+A_P_d^d#Npal+`5Uy`NRWX_m{DJ_z9dndj(V7q1K8?`%fi&V6%dm zBom}X-FVg3AxIie3L$?t6&>t58!wAiCgfZ`LB8NC?4!xKd5q1eEz+V+;w8h^8YL5_ z>_~**bTiT?gw<2_35K|QH(+x{`JyA!cc`DTVt4xpn-{+t7eD<~$eXvDaffxO5n-Bm zT2Clw&*Yr91SAA+C_|Fy)5v&^(@~-wNx^^~)Tx@fv1A3bUzBHR zt~yOzahp6kq&ZqS8?@ynm|SRb0Mf$KVn{kf{75fm4|dq3j*>B__^dJoRg^Qmqw6h- z@lNSg=bb4-&umq48=R~teFHLUKBuK-R04rlXe@w?eDC&YA)Irz-}k-QUon~=<6q7F zDKZp2^zpv@vuA1jp3|r9Wy(83XQoDCBABwtL(!1EVAONd5zG!b1#RA>F{EIXP=OpE zVWogIWBi5DE=zRL#~M|#sklkAJpln4#Ov$eiJg+IkO2?4|9V~Z9gGT6CG)LoC!6=V-lCiGD zJsaV73rVdKa?oOP8lh(l%!iINv|y8+=hSl+ol;n zCQXg0{RSPgvJ_5&GzvLS#1*G~ZHUAUl8f#bN0a|HEGbB5Csf-d{Dg`Z5k9{Msuv?{ ztvQX!r=fdn4u(iW8N;AaVPGYgtmGSBY(UH}%!KsJjr%um%1EVPXKw;79BCmIOUa9! z=GGf&DaFiZtfORzA{6yI*}zl4IVSL3@hXEV%4f?ED8t|>j|l1H0^yxJRZ}%a+GAz9 zbrXw&5f6RsU&Z=)uf_h_Ew1*G-fufBSFgBntrKM|v=3SeUmiFOijpqEdjx52*&U>d zD!QXa9^=2v)V@7>xhTVvqySGPSN%qKg(BPLl)3wpe1iDya!+0451(MRwMg$kZB1ZC zDwDcvQkIDIMG8M83*(fS>K|nuv^^vgg zJ+cl`eKk3A`7{;PpU;d>FRwdfHTiAz*afn_Gjj3H6vAO>31 zyg`7SfS~mm>j3N$uYc?k7OTFuM2C|&B12Q%!sry<0%TYO@DG3b5Ao5HiuK`=^_@yp zGDCr;5Hp#+Wn09nnUjix*R4#roRP*|LnT8tBd^tX#Tf}1%=xs2fe(p)@=UUn!&J2L z#Ss^$R|c&z>P9ls;hqwL)a$)kjryg-xePPN!iN>txkxEeS>-cw(>= ze5Q-mNo0{$Q-d5dOX*nn=QilrP_Y1VQdMW=X_%tAn*f+1wv#cFA$}t+#J&74EmeCW zKsvPus_|@hQoS)9r(t@FCc0tb%1HAh`O*d{v(CZ_;>2}e#YR8p(|I)5^y%1U3CT%` zw&gvQl1ZpyWjQ0JtNFVT+rw8a9l|TDlo6%Jt!HR(FgN0sxu8O2lf2e3YyAcBBbU{h z?}O<*-WVSe!HHuX2M=Dt!;Ik0V768dpyY0jwJpId>JUW`9lW8uw zz+!F!hK)&b}XO&ICjrIizu2-2KnA{LjLBM2yeDcD!X0_OcV72S7Fjwk|Cje zG;U?sQ%(xR|LWST(y~fKx~9H0#zf4_4D}ATk^mri;l0_|BU(YO_tv4#mp=FRnS7A; z(QFKBBzfNsC8v*jb}A6alPwNj_-b7I>`%dTd>ybZs3ZALQ%BHr7-1AY$w6R^k8mL; zmsuG(`SdqBo#gxmqAjW*66CBI7fn`p4Cr~d>(q$nfz?S&W#(I9AJArkj5>OPTL4=}_){dpYQJ0lj?M_r{Nca8I1an{V z`e?=cuAY~Y;e8Ia!GP?}QA(j|J~Gg=5@F$-|JC;PDml84Oms}vbn5{-JLi3yBgRs9DvouylbT;G%_dJY+pG>FxXqatAeOhq#?#m|j& z=}52<^^z(h7d!T-kOE2i2@pZ#EJ^1H-|FyF;1skcBNaX`Iz@lKIS@(r1X7wL4V6fy z>aX-aSk^UFLD6CRrFa#dqEK}e;bK;Z$JMrsGEpNQmAEyUh!GfRN$l7?-4`RdEI8*8W_<5axLf1THSoyO2a5Pvcn(sQ&GMFAPd#FdDY3GtB}4mvi*J6I$u z+mp>O^5goV)+g9z3XLhhqWT$843!RCAX-++lyMfh`6MbysCC5tWQn^!|IJw4wLtE7 zgv25dA=@SBR4|+gI>4cNEjB7T3eTFZ;rk92#82VJf`Pj-fF5^18^nqR#Kj1R-vQ0G z7&o3)l>-dfHugi>H1Aehe6--jJQ&K>*(XqYjaQ&rHsf{hzJlFJ6u@_qLm?W@Zebj7{=#_vXRz1ej+2nfF}5hi>mN ztQW}20&GS}?2mlT-xX8}gr5pI3Uq*=lrYFl7O)cDc&a}$DEE?(BFf}8?d@GXFZhW= zWjuVrt4gd&f=09^ST9w44h-Rr;w6ppTSNUP+e&RFKV@Q)lR_ijl_Z~6f2rt1I*1ts zIRpczeH__2@}xt<$g>njza*YlWf>+qjHFeEnMTo!m+Ac|_-XB1pNri^Ou)8!;EEHm zUQcn09Ruclb?*2JV8 zZM#F)^#%D;x+E>fe2yW%5o72i50;OVgCQ9pf;golX5l|6zJ#ZUG=(IdAYhdaj*KN_ z{236Gwmm;46*sdL!Q%jsSwntTv8#E+Fc-m7$+xLG2;z@pOdE}?gkQA`mA6) z()RqB>62wpZ{NhQsd(^fz7+?Lz82H>`J~99Ox{QD0-MLOmAM)e<|4NxxXeS-LTn7iYP27wmu7H zjHgM{)?hH~p_I_VnAtQK^&x}ZEQ$TmZLA*oWL*5LPe(nvF1e9>DPx|o5F8UT_Fl~@ zry`1`d{W<)jVVx_qk=q!ewsG(n1!0I{|J1hro$EJuz;J6ba60+8Grh>NLZ}1f~(bB z7e=~CSI7K))5;2$SsrAn2wXvzpf(?doFAd?$E%5ISVER$vc{V?$h z9YZoavqZkF43L@DoH}zdY(0wZlWMYH^NylYWvY&vXJ#HQEaeG^F`((te<2`O3Pq=kjaqDEl&Etw2CnIj2?s4O2hnpuOZXEA$ z>v+Uj<%%b0y8s*cJE9~NPjlZLIvBTi6*o^RZf}8GrxR{(D{h`lxOF_@)@jAfv&4;U z#f{TSIF3i$-cHEl5vM2nMtah;i->V=I*>Aa_-I=(o=oiLWa2nZ_PD*BaCFMwH%}{W z9!)qp18$vyFrFoDoK6^(p<EEaKkn&%ocnPLzzcRQ?(lW1z)payv zKo7%#jEx{^F3nHAL=y(y7lN31kMw-VeiP9oO`s3|(-%B#QzU zeFx|?1J0ZU4Sk5WgV*dtk<_YD)N9mt;PxMK)Poj|^e0t2-?pXmmQ^`sGPupvFVu^5 zB9A#+3ps}|B=RV6>GQq>>$?`nvt4sKH2h}LJZ(f7k*+4Qb#Tsr#@BY30e%KF;!@VqK^Op z+ltiYx*@u0+*yRTG(}ZQ9DSoh=$*8q6VQqA@lhp+I<$F;yD!G8+stf>|RgtenwU42A~7EW!f-WiaMS3)u?>NhT=rJAciG&wc@^*@OQrEedQL578hP?2{4ue@i4i{}PRZO7-7VRBlVbWg}|gNqDKwj*A3&l3O5 zmp_7whk@PRk+q|Dem5-u9y2i}@LfOkG5p&W&M9kF5>4*gjgDmuTM7NLTkri$Oa znRxcBV(D2Ygra+8L_!M7hO1D~GYe)uBogfuWdLP)fV}lPxcU#i3w2roizQ{rtQSIH zNF7+eB%?aOdH~9-=*2H%_G#{ zxnQL%#Bp-gAZJfO4S=?KlYP^Hub2frF@uHB(@^<}3W_;x!S-uTt;Vi7osG1TFON+S zG8?ZBXX?t|)9lb>T=J>xOMp`}Tx`d-?$Fm^cv(|a24%tPotYH|b97>fX2NbA$7kuN zukJgCXMgPP;^}|-FR^&=5#HBn0UB(>0rfC>k-9cjh)kZ$%Kg%qu~OzUh#O%|I)ZIP zIJg(^!FO}2RC*JS)?g##-Bi{)L8sl{Q+VWejo(3k(>d;k$8eB;(X*@|U-mw;1qsya zVz`i~xZ=5%C8KW;0peDDq6&vWx}jEJSa1jK;;ggeSbP<@_cP{}P927T zw&TIU5MZ;0A=A%F4-mg;h?#hmm?)MvFdbM4X&W+4PbI^RMZYB^~*Pf{j z4#`l2nb8iA!0B}?U-1Msf9!8yx^)8;VhSl0Bf82_v*H4n4oo{9`p(hFn727pMt=JW z47bkkKmVDR;A_74VQf!yW{f|^TccSx7$=ce!YrIv*zDfffRRNKd)Y*FLyT6!n(8k>-n746 z2JVgHLT<84&YX1n?uGrPH*gHZBJgcL^g;ZsU%8G87giWRCFkf@sFz`5@$p#&&W$5} z?5kgd*FJU^a@-S;G;IDp<144}A*BJXOi3%f#yzASQuGD-v_@h7C520gk#S`np)pnV zMhY$#1*iLpul|vz@Dm?6#l`arEyh%j!F__Jl=GnR07d*kMbEwnZzkVI1QzRa$eX{7 zEC1kKsM88qtUB-K#7#>xTI~Xc1@+40)u$qK()c41n3UzT%on{Q-4rPWJ43cag7k_$ zMb$IO45%VXTcOvs@elF{39p9y-rV7<trCMaP3udsx8;z#2WrK`f z1p}PsFbEniK5o7?uRG4R&LNBy3r}$+LJFa|f;Lv?+BVeAbC8 zh|@5U<`tB4>hDfH+D_6g2htv{5A;~4sl_It0D`Yn>Y1=(Lnn$w%nSyYDK*~IC$#EI z&NXF0?^rf6!TgfFz8_VI(D`VWDR4`pmSbS7H?_acdJj+}>|e z-0xdT{4UL}{z>zoHEXbgDEe5>kz5@VYdN-jllUWEl0pUEVV4OdSiVr+>jI&8Q*Fv-s3K{Y6dIXc! z36iL^NJmU(G^wAE1CyY!vfz91Cbw3gQx`~PDMQYYNRTa~Kn7-=iX%ATRrey$jOP%A z2b)8J6~skq$!%4=OVu@BpTv?THESL`B_M^EYD+W>vzHLd3|N(8&0390~?+MiWBrG0O3W*Qy?+A~7xH>>y>y zJO3acg+a$ALyAS&EL5IBBuXNcc_3CulM3K$oKSpb5;$H`SD6IKZ-Kwtk)kYw>@Og{ zr7&v(W%KBii?6G)w#v#d`>QB#QXyTLW!K;cQ23BKf|RYDA7M=Jn}L)mjR3S1oQ_UV zQDy>Kh6~l|c=Zc~!v?^5i@Ji@XYp87`^5@biXAc-5y)w5P8S_fJ!;B`7a4po8(?Eb zs0(m(gvDx)`~KY9u==>q#dzha^bvIcomI(wFq=wx1CcskOu8erG(WWwsNo3dsZ1Va z0m(C(BSC|dx)*j9RY$|0Y+EGKG(2^S<~KGqKqjc5Pd4P z%Y?=nq#ec87ywH4#SFIbW~-{{pcJpWCN4@rJ>6n``DM8Dy4NC4ZV?xN%0M9fLmEe@ zQOH@4ya$*WDuZuIfdN33)4)6w0^+?;wkJGQt?Z7by>j9S?FeOFR1T3|bfEU_2thWH z^rg!}9cC-3{u0V2qSfAUI!d9cf`qpExwR=95_Hg96n2pVf1Q%i5PeP~qvQnFpOfdec1#Y$G(?SH2yLAX46TZ2~_t zoJry@hl=$^iq8@xC!sZ#>^u#&m0$&n!=}J*KD`A3Sa^q7$l!?4dZaDU7LAM&CFsd$ z>{w*50qX)~7%Ws)yw2wEIngRY@Xj_t6fLS~kf1YY99yse$ng~pGBH+QoLJz^eKvq` zOzfw`I03tf_xF|G_hZF4s!u_pkrICO>D5ctIGMmyqqQ|o=zWibV_y?v(&p|b{@yG3 z091@}!tG#CJj_p8)-Py6SrYRMkl0VaSlQQ9fqmuPBI5+?Y9Tz8eUHM;Gzq6Nf~J>x z(HLjQwth)qL}FhH#u^waal5a9-K_tq7ECoTWnh%NO|@c5ZjT?SQ{Gd00py{8=&Iot zMQ05^Qd~4#oT|1`%1|8w#0z#5#6RI0Ld&vvR*cP0(<|V0$sm`dL+yDVF}D@n0;RGp zc4X!twCs%eihS1BAeTQWj*ID*@<8~!bsB@U~cV?I+-#^B@@ z%3_O4fA(9kdCBWBUB8MN6O&~Vr9TZ@N@pqX;yuE|+B}&K4R%5Rdr+_Ob z&0G+(fZ8@P!c(fk1B43%;m)iy{FC;w^RrcsMhMR#$KEvJlL}C1-*VClF+i)kI-kL| z&2PG{O)_PWNh6j3cq)&>X28U;J789V!y+h{AbWx^O&A1GSIAZf8d&}uoIo*$;Oggapf&jsf35sz~glRZ>0bNg%oxjhRz98)0Wl zTqZ%~y;)z-y9N&Z6U>y>GZYor;Nj*90T7scNNJZJ!a9gay{ZO0{-IiVY3zQ{ zm?E`04Xk_wG@lY_^h<374Q~Te4ns2POGM)ff*_>{&@eQ-$>EFO>WdU#1B}!F(pHX7 zW83V?D0G97o%r74YAh|9IFTBi`$#SwNddtH+Wu}f%ujBEGQ>L&CW)xDh#5n{cR4mW zu9nM`k#ka529Pb<>C?2543pc62-I-abT&Pz;%FLJrs5kL2;fK&CN(7mA-C8$$zJ1U zU4v9cPez77YWOO=EHc32L6Jf4OqA!L$jOkr!8|TLFs-4zN{BScFZ)j-l`&im<6oNAd2G%1Asd1r4t2(c(UvM*{qJ7`>H;v zrwU?NXwygHp1egIAScz~YX6^>(Ls|jWNI^8UJda(kH^qiXc6*Nr2mH5>deYo;ex6n zLR#g{gdUz~-9BkeWlgGo$Oa7HYrc*<9T6mz&5V)TdzK6dn>4*{&m5b1b5Q$+yEHD) zeZgXZkwUD==#v6TnCxXn;k<5gyKF?!oG9ETBNcj}M!wR)4OQsH{UjrCQAO$XFQkkDGq zz-VYwQoKk7PK7~(;lf(M0oAJAiD^xBS|;5gVIrN`MzP|8A}%c;XxG#~s^mztXL5&% zOFcH4H~Prw=3u1hTNc8XW(JakXs{Akc^y)IY+TAU7+5vdu%i=>XH+a1(b526p~>1- zc*%AOP12i1yZEXI~3(NJ~=+du-xIkKle5q zzTyp-u3txmR>G)YpU-z%C)Ae=Bs`VTWS6*RVJn>?J06_wp$xWXBZWL7#0xB3gJxbO ztwks4o~$(d92@yHGTM=z9=(TM}%NX@sD+CfVLEsXN1{)7W*Fv9_wMY5^X7qx|pi1vj7Fh(QufA zn}Lq@9uj5I(STC*VtA%~)eSX;bTThW=7}0o8c5)9 zJ>X!aWrvYnp{p(e0g9vRfo5o7TQZ=f0>i9M$WO`eQV`XqKUL4qu7y*DK5bnxOJ?cq zSw7*J@l>H^q8U**iWBNgGDZzllsR#yO$9j($5dh(vl0$-x>6O2R&5M2ziAw^KM${w z5Rj6X-?yR$0S&^@KN1vc011oXbDIs70WH<`Q(eu&N?M9CL%2yPK{sL}7_!@Uw$jFE zkO1&OEjDQIXsj80(O}Jaflv~*);;97ft~RA{s5n6Jy6w@M{;n0j9}kBLhrclOgL$D zNREvBMqnEs6^$W`N6}?IAd@QftU608y!MV2qMkQmLidDQ-cmiEqRaMfWkw5D+WJt& zJuZ!@=^^1IHKx{{jCYa;ICkp*fvxvE@`U6O(3F>Y75o4rS)AO$usFfxKl^s9U;Ozv zeda3mbuZ_EZEuYvhY%8atsX;>>yO4o?nIBS9#Fu_>U`ch*^>pl?A zmBALzl2Th5nnwsIYctVV%b*cP(s8NMc{wrb=qWMFgmFkXX<+Nb;FM$4fL#k?BdzzU zR%klNV_T|!nz(r+m&EIN%@~AGe0FjRs|R0(%ddMK^7b{+UUc{0s-@Wp_V1x50NByi zRHb0!A-Qx4nvQA+luSAE0`6OtV5TE6i6u=dW%QI?lSfJ3v%Dguyd{-khoq7>+f+XR zA^r;kfy%>2y~!>D%6fA8*JEa7qexO`d)tlL0X@b0m2yqk70BCppGNYp*qpEstgKr2 z0pgkXw~lfsTCFjgHBwK;aEg&M00}6sLy8%EPsYz4YJWxuv_n)mI5wl3F;gHx@Pq+9 zqi5T9TV25!wlEq`8Y`VCG6KV}z>utIxP!RpnGp6P;)DcJf^Ee~*!XNz%_W0EiwLaC zfMo$0ncTxe4y}~bPZULz8jBSM+X99PrUktRg?Dh(Ts@o8=2`+hf(DClYjB}fH3nuW z1aJGO*tyVIVpa)!t}wHaSpje2DVcN1w0Ly{7%@&(jv*mdB-ELLDQu3GIHnOJjHEB= zSi~QV1zK&7*hZ}wwYoqYBjjmFsN6Rgy;09AVc(wT6FH9_Wb}$M1#XW^Y$-oBU{xy> z+tOkpk}Wl-fOKq%%zT>Shk$t7_ci6Dab_x01>(b9WzsMwoTVd8j05)0-^7=ZmVis? z>HV}RIVuoMl-K3#wnx12uY&6U#;tNxs zdLR+n4uSW)ZwqxC>xGnQHr^!b9GCe|txn{0?N5%***BdlJq$O0dc)fU9gs}!&I}c&r)5Dawle6@Ql3Z%a>UFE!3D4PRyK~)PE@1 zQbcA%5eDAuP##tRk!I;@5Q@P=ipX|1)Mi>6S&#%nYfiuYKDCA5*L+~8zjQITl%^GE zR@8CN!nG753%t@09&KrA6)g7s2&y&_gm%9b904iCWF&cZHex>+K8?SSxh*{GobV=; zwoLLXKZ-afVBvzyh6-h@0#q<95&{q^JVc^+t8ojVP{dUeO8vGfes$b7yrY)MOia^= zG7Q{nq45hz7A+M_9*Id2V{j!!TlNV$Nz{XC8vv5bYd&i$n*=Nsg6Hi?2Q^2$%E6+t z>~A9Mv_QgQ;W061O~3}IM-aN(44zq%N>o!z5f}!}k3-Q~DMOnEm`1G%k~1t$X|R}$ zsU<+5fvyz6zUO{wXlL5wV~rmOp0PznN)o=0#r&tXIo7$XDhs04(uv=YbE_#Cr=9Hx zIh*1sEK`BeCL8LCORF-n5co3m{d=IuG{jtT00N#epg3V?!~PBDR_<`N?<%a#p2>iaPf7oL!RCy z{!*EYhF9u*iJW#f=5$gvokIqsli;Z_5D#){E!&N^WRpmG+R5L2Q_prW$0l9?%%h#p>rTyZ1O#?C^WLU4E< zPi>F~`}GEc-ftfnh7{waewY$|1`=++Z#ZVn@DVX=>S0GmR^~Peo+p z#3(*ZJ_4s_dz_w)8WIiV{8^)J{$alqj*!vYtf(kk3Ob;=ioPH+y$Zq#$wCAQQOYZ~ z*Eu4gz}gxOPJ8Qg)cT!fhmR=*RR&I~1-GdR~R>X{097t!9_)Ej#_qO^ll>h+ya{ZYdQP4e?M(H+=w0E$m z4O+weF1#3yVZpu>#B~Q~ur+o#Y3Ih?t_u9%IS+ABLIdl}NUjo+TAL0d2`u1t^&W^g zMrJ0OlxRW%EAQ7#Wa%>lL1SoxSG#kqAK((WdAeBXIwZila4M84Bn7Czq3lIb;TnZl zgl)ni!AIh3syI4RdQnCda)1nR7XZSVkV7T(mLc)br4>-L_l#1)9?@LEar#Mn%+!ej zst6~XRY~>@o!ta^@C{93&K?;_sHK!Fl#n7}*EUA#YoJ3c*5mlKvScWnYN$v|<~8#T zp=r)kAEd~g67aN7q?_snZOE(0G~S6ixK;FF$E+A*32h@Lf+4be{2OWU!@B)Q}8_c+PU9_jo&K zJZ&ZFj5f+JTG_i%uR0_S1fTbk5gkhjOqINlns&?TOwMdscp;BB9btSG7X#}%AbLp0 z1fxA8GTVP{J4xxxysTHI!u}Etr`$UF6=-ff7vY zkDLat95XsX(+WvRA&Hdv^_2Pyrf}vD%5;{(gdd5B3X++qRc2PTi3mAYo(==~y)3AQ zvZ|QY4vhl9Od0W{PO{!I4iKy)z3W)Zd^&+h{v0*03r(QN+__HR8$NW^p^IbN)Dju(oo>)BIoAt z6hs*q$iUNV4yV};dD{i}bcmZQB;;Tde?ex@#)F>9roTYQoM2GVv~5Nh$66g)f-9Xh zejh!91YsT)YO^ZX(%u7-fASH78Nx(9)qiC6HCqv(W&5^|!~suaBS+DT3k#=)@4rG4 z6}LG?o+7EPerMm~xtSq(iH?RfSh{s`NE`*unWLmE-YlB4;xK%fg3l+1qX zZE}%X(sV|HP-vr4pkw5>j6dQ_$~*XW=ykS1r34U98KJEo92&_{P8M6%s@<7|@3sOk zG^MKy5-PK)r3{Rt7}QJtO>-$>GNRz%==)eS`o<^V`_19&I*1tsjWMBig)#f!(m$Du zEcrvUa#MDAl6sF_6W{#X<{|~JQtruJXZ0X)1ku%aDclV=8oj7HV^M&UV+?VGd*Ax4 zIDFX~FgjZ?GafomtMGk{jS^=Vo(4%PEd>J7BWHS5X1CzUuQy+$KrQr$}R)oeI zGoD;ACfuvv_Kct=4v8bKAnbg~EC`ydk!S&OVj`KXPJx&ppOr$VC0cgbSpn&%6fRP$ zX_Io@Fya1{IOLSRc$c>X5A`pE2kUzRt#KrPp<;jQ6n8)VC0IXr8TIr`@N=rF*Z~Hb zTTB>foO#a)0m8@3F7;^yr^F(;su^k*AU~z?pOrc_L7iK)99(!M{Rst;>V+)PWS~vW zsYVH4(Bh1DI}Rp_>S5{h1dV8;qaDZy;vOORr%814^LB>1(;ko=-&d0TB|?PK4Fa_U9V>XRC3O|_~W)IA-Xur z0=3U`4alrtE4VHVGq`5`gA7}A8nAU0Uvp}Z3NWNBnc@@E0aO&pInK}y(N=y=-ICJ^ zwqxS<(XPGEdmXIV*FGM>(1xCgM;|!A{pjYN$S5n?f+PU%}25_;x#YFB;z-nEvS{AJJceN^5FAG+y z;Jx*L)jF_V2G;9>^{QaG9)K9IXly74LW(l0&}zY|Kp2K!#DI=#eBCWK_#-8<5~mDpT0_v}bB} zG}?E)?7o|>0)MA z9xlG_^MT_VTttw5hwo*2D$Dg%YPG7CCuHnPke>>(l2EoMtM(Ft_z`HwYM9PB?sbiy zu+9S7Q4%3OWP2K_@!r^7{OZ63lEKCTTpvbUILj@(=t!F=g#kg#vYibW@&m}72!NY? z7Pb+=>qzPnII9JDt`1%!C}&M4DG8zXJta2a@Zooom_n+6;ONw_{xpoF_A5y6o#N}z z%d@{`Vi{&)YIa}D26*}_q}1HMVRN&(mylB?SYyV7I^uxWMIZ#Q-=f_2C>Ae%9qN9^ z%s^Anz2LA&flIWT0w>QCuGGFJ;+dA-3_XtkPH*k-nnw=s_$x1A(vHQc$jr}BP>l$U zi-%MJ2`mb*SuXH@|JpTt`1TnVnt{qLdetW{zTNADyjktO=;`;49Zl3IMxE{cSgB2zDAz->`oKl{M!1d!1S8naG z-6f7sD~`4m$NG1&P24`6aI~Fpd{%LLTXA$c;rJ|ZbP8;DiGTguH}USL&#+kfhyn6? zS$GPMD`%{5YbjXP319ruyK&z=OWZt}aB>QqoK+m3RUB`p*7xyg#mR2M$ywrLJL2># zakK??`w6Rs1%cy~OzW5WYmd;>T{#+Y?Wp4RcEXJlo-lvwbi$3(3Ac|Y+&ZbaaWdiN zF;Awyajf5`iI3f!@UMR77#}*Cuo_4^qzf5!Mv(f3_KKli*J>6S<$xVU;)@%ut&rmt zoc`+1BkK}a&ZgOCpMa*+n{kkQfG~)2dmVxikj_B+yY5DGXT;A+mZq9*i3{GAH6 znxf(ROz}&2{2nZ$ATPSVJK!eIV3?hZt?@(*$dhA~@dhscxo^S2C%y^$D_6PNs}Yzr zEJ#k#GrPkxu-ZzW?6^wFgEOKb{6rLHZcBfL&oc``zax39i*-n&tEwp2F!7<)qLvBj z&(52ElX|D?I^PSKfCR@e?}x@!{kP}YZ>>NXlK`~k#|Oc z2~Fe8t^=J=+Z$NC;xn;&<2zAr-b8rOiS|1QNAE!)fDFitQ`H>PlQAgmoMhfs=$Sk@ ze!RZNU-_&D@ZWvo%W!r!VVa?NjyCpWeCZil7?e`6TowG)zyE&x&Hv|VEH57bs=LUn zVziDn(w4Zg5Sx7Ln+l~B>FP#kzPkZXl?D|a01BVK7b#k^MZ#GE)<$q}Rye&4Ks6J| z<7^Ya^VYzH3hbsp7H%n!N%xb2U|FIv;%4i>I91$_iXVOZEAi-q8=RdH!6BNZ5E38{ zX9Si5+xw0m`4IledvD;b3u_iF7DahdYAI!xf|mmgE!;5 zXX8FIu^0+=S@6w2_(A;Q2TySB!a`G(q|z{5}#IXAr_USxl@I}RZw>^6~7h`LmD z5_Ee;A1hWEU)B-i&M|ONf$AGM3h8=Hr+dl%po3Xk-4}HU+tVw~2?!6ClZZfM z!NI+EKV6b6tOaPHxE5*r?fv7?Mg zkQgocYJwo4Vr%``^u3N~19r#fj&}T_xyKDk2+UdGYx>(d_HR9R$7lB3{uJfDM^Ik+ z2H@-r8Dcy+R!wKA2^*uv%mpy&5Q+-SD7q6N@Jm5G+v9Qp-t_o=SS<^t*%0_%W7qbf z;*gRSY|Hf$!<6`mU%P_SMPM(eBG3tDDDh|Id2BcHQK6nO?95DeyWh3Pnfr!MlUE=9o;_8&Ry05r8R$QHcYZbU! zdF{%SxHYU0Xn!j-cL*J@zDEBM+c?#DfM4{gdRAl{S+%9jKZ7-aN+{OLuPyN8KJnyP;;B9Gt*C8G(fhIAw5rU~ZFRNWs}S2^KnJyj~#X8l+JSOVs@poWA?# zfVuz{J^)qvC}ogZW?1936Jl+qD4$F!LeKG$cL`bKwE~LSDbc{0H#Ko`tW*j{BCX83F0T|l}+ia!>EuocqY>B^J z^AaIvR&v^=$f0+vFNF`n!AmxPH7n^Y+2yc;(iPH=!oB6Y!;?DflV@`I6SLr}8~M2| zp6e{pE4Y1zouGzq!z+0=n$@CU^fL}P2q*67L;5&+o7R(VljGKVpq{a=L{e7ZER8Nk zCSnXMA9)DJ@B1a}Z=V8-rJNOyogIWSc~JR+@$0OJox)HZk4JLHXAT1_AHuV3i}@Jj z>Ck(u?P7}w^L!r*AB(p1Jd&_5$x zugEbCjzxoMQ*L~Q@3SsSbOV^|SYJhtYTjv-xkht^xnSk(ldm4JS z&X%k40E$3$zh(6)VKi)hCx{$`p3_fYrX1V5YR9?{^zJiRT;)`4(cS}Wj>zRI0M!F% zI>XDxvx;cYnLw3Npw2}#7}3{K2He{hgk}yal~glb_tI^ z{}9+2H=J&$-f^=n4<%Dhm307NBPq0071)&+I9`ppHU^f+E2CAFCbdAdl`7Wugg*2A>$l)P*Jw`51T>&^)791=K&aD?XTooKH1Bc6k%@8#g`(VKhE`{IDn&NYdL}Nf=Apx9QEpXSG?VMW%&MgDySHSsI;M^i` zZdGu&EV!^NxUk~C^NT=P1`e0qu?SGET96LWXf7%ejKgKYVl&{}YQW(laBfj>VcEYQ zE&}J)1?QFpheHsy1>reda2g>k3qzn_Q0+30MauAga2_m^c>h8vaMX@)ROh1_+8m? z>H|Bzno=S_YKC}8u|gwDP>wjBR5l`j?I{Xw;PO}fB^KOzBF6t1r$@da~ifRWhLFN`GoN^+5 z1KN#QaG=SiWQYlc8O=pv!*0V|0#mYJn^W7Af8v-yoNFKZ7?K$Q!A{*vij@d0EP+;3 zvhJoTGZEoZ0P4xcJetOB_CbpwI3DWs>Sg!=)U#s@=O4jculs!D_7+=89ULm|A#R8l zDl?8P+Efl5EYc^LjZqy8KZJ{vRaPxXR;0!P(OIa@BL3Dw83dSBmcx~k&I<$i&bpfp z2YEg#SDGa#7km!nn?fCt!7Li5?VO1saIJ6VbT2ThnY1DKVlL~?0#*5&y>G8@w zsUgB&xCtU**O;>s@2Zhfnm```LV}x7&5**PnIY!sW)hHXxE&1;HahyJL7NDoOwTa2 zM#X52db64o_mPmIR2veM*0-AI&ysO!&Z^f{=!Z+;tp0%J zG(n7taY7s{@cyGc-v7~CO;NScCCJEvjqj^pNm8gnes@-Jc(}mVeC|UiM`sw(BQL|A zV3c+TJ>`H{`2tc}qG?ub{Vy6BhDI(`^v8^zB!fj3fYQv|Sd0QvLYPh}LDneAaW^|8 zGm|xeq44Y%gJyWp#KbVtIL?>odv7KH+WSNbG5Op0O-LCKWQ~cb->lqOJHW9uK5H`` zOeV!LeNx{A%rQYE??;9J;J@5co`=<1fLQ4zj+cD9n|O=R`x} zOE{xq;_l3l()XC6>Rnw6@d0Eo$WIy%?+_-RZoowYNcZFR zDw=L$TWVjt=6*Via{jESg+vBCGC-$Wl>H4{{EEMX^(VdwGbbTrENW$z*1-;C#?v3tCz;y0ml=#&sZWSv&iC{z0{Mw%UvdIEbww+O z%-@mTB0=w_WJMVOW~&p^SQ~WSW`W~2>expOWmv-SQCBeO#Q=*=NQjkmrd5O{N`T13 zP=?00#usr&o~pIN;^VC+NXCv=vwW>=Gh9rcz!boA>lBw>^F=uK@O`MKM{Q3U^Hgg` z{N-OlDp1E+A1u-?We|Uub-hep?Fv_VO;c~YTx&&4V-p`HBItOKek%0{+9aeZ`q*|mgQPvTN)#TS5zM~R z$?2QhHtLc%X9`y589$|>}&Wvdqru`hbM;Fv*`)z?0HNx+z zJs}UUvY9=X`Um%+`!bkRR_aEpzwFr)KaL2%;!S8*Wg)pr$v_6(`WIjwOu|Z(3aNtQ zS}Y3A_K9EqZB_rPh>%ob3q;$U4g~;ZsQ64opzcS!<%tLIdCxyUy}i>;&ooRFW<}e| zToo0hq9%)`TiaCVy-*r0MQ-7zQ{kyFh`~K*!dfTdrA|DegLxL?pY!+)O(IV<-GZ$| z1Qx1)NRTMb@oQA8A!)7@AC?MTg zlgraJHRqs(3RT{y3@MVkwi1`UP5r+cI`J*hD}Jp|1nh{`%1-+~*^0Qah%T>4HgLxn zXZ=I4R%M5RbmPO^O9ytgQ-P7+Y47ttazpft`9bZb)MfBm1BJ)}Qkyb@4w^SUZ2i`` z!qIq>w4|d+`V#fjQ+aZVGG4{SulRZ#JoXk$SFWLAPfBXZ6^Fr$ta;Y_Hl;GtF#qrw zj=b{*XCdr#(+Q&1Fpdmsmq~%E58GzHT_!@Pq|S84fIH?hQzKjmnfy(|6vbIajWGtq zLhl$B1%;H+ZW~0AMs~`O+6DD&5E*m^wR5z$zd(wQZO@2Sv4H}c87YB4RgEIREkg)5 zX++s}L;gct?$1t<>j!Z83%&^D^a!ZbeV#t$n=Wp4u%$hF60B(vyEptN`IL0(RE*Nx zCnJV{I^Z|1NGQJ5bd2<+13MZC+Ci;;=C0~=TxfgcoE!e+>a@JW_y*gtZpca;f~(m8 z?gf^eIJVWis1=bzWIB1z$8WPYa�hG5+LzL};{S!zS3UOeY9 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ÜhAMp@<&HK-pX? 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 Vmf+#gfM);z002ovPDHLkV1nQwh^znr literal 0 HcmV?d00001 diff --git a/docs/porting/visual-cpp-porting-and-upgrading-guide.md b/docs/porting/visual-cpp-porting-and-upgrading-guide.md index a37ba527a58..8cd4255be49 100644 --- a/docs/porting/visual-cpp-porting-and-upgrading-guide.md +++ b/docs/porting/visual-cpp-porting-and-upgrading-guide.md @@ -1,60 +1,151 @@ --- title: "Microsoft C++ porting and upgrading guide" -description: "Upgrade Microsoft C++ code to the latest version of Visual Studio." -ms.date: 09/10/2020 -ms.assetid: f5fbcc3d-aa72-41a6-ad9a-a706af2166fb +description: "Your comprehensive hub for upgrading and modernizing Microsoft C++ code to the latest version of Visual Studio. Find tools, guides, success stories, and best practices." +ms.date: 11/06/2025 ms.topic: "overview" -ms.custom: intro-overview +ms.custom: intro-hub +author: tylermsft +ms.author: twhitney --- -# Microsoft C++ porting and upgrading guide - -This article provides a guide for upgrading Microsoft C++ code to the latest version of Visual Studio. For projects created in Visual Studio 2010 through 2017, just open the project in Visual Studio 2019. You can upgrade a Visual Studio 2008 or earlier project in two steps. Use Visual Studio 2010 to convert the project to MSBuild format first. Then open the project in Visual Studio 2019. For complete instructions, see [Upgrading C++ projects from earlier versions of Visual Studio](upgrading-projects-from-earlier-versions-of-visual-cpp.md). - -The toolsets in Visual Studio 2015, Visual Studio 2017, and Visual Studio 2019 are binary-compatible. Now you can upgrade to a more recent version of the compiler without having to upgrade your library dependencies. For more information, see [C++ binary compatibility between Visual Studio versions](binary-compat-2015-2017.md). - -When upgrading projects that use open-source libraries or are meant to run on multiple platforms, we recommended migrating to a CMake-based project. For more information, see [CMake projects in Visual Studio](../build/cmake-projects-in-visual-studio.md) - -## Reasons to upgrade C++ code - -If a legacy application is running satisfactorily, in a secure environment, and isn't under active development, there might not be much incentive to upgrade it. However, consider an upgrade in these cases: Your application requires ongoing maintenance. Or, you're doing new feature development, or making performance or security improvements. An upgrade brings these benefits: - -- The same code can run faster, because we've improved compiler optimizations. - -- Modern C++ features and programming practices eliminate many common causes of bugs, and produce code that's far easier to maintain than older C-style idioms. - -- Build times are faster, because of performance improvements in the compiler and linker. -- Better standards conformance. The [/permissive-](../build/reference/permissive-standards-conformance.md) compiler option helps you identify code that doesn't conform to the current C++ standard. The [new preprocessor](../preprocessor/preprocessor-experimental-overview.md) supports code conformance, too. - -- Better run-time security, including more secure [C Runtime library](../c-runtime-library/security-features-in-the-crt.md) features. And, compiler features such as [guard checking](../build/reference/guard-enable-guard-checks.md) and address sanitizers (new in Visual Studio 2019 version 16.4). - -## Multitargeting vs. upgrading - -Perhaps upgrading your code base to a new toolset isn't an option for you. You can still use the latest Visual Studio to build and edit projects that use older toolsets and libraries. In Visual Studio 2019, you can take advantage of features such as: - -- modern static analysis tools, including the C++ Core Guidelines checkers and Clang-Tidy, to help identify potential problems in your source code. - -- automatic formatting according to your choice of modern styles can help make legacy code much more readable. - -For more information, see [Use native multi-targeting in Visual Studio to build old projects](use-native-multi-targeting.md). - -## In this section +# Microsoft C++ porting and upgrading guide -| Title | Description | -|--|--| -| [Upgrading C++ projects from earlier versions of Visual Studio](upgrading-projects-from-earlier-versions-of-visual-cpp.md) | How to upgrade your code base to the latest version of Visual Studio and the compiler. | -| [IDE tools for upgrading C++ code](ide-tools-for-upgrading-code.md) | Useful IDE features that help in the upgrade process. | -| [C++ binary compatibility between Visual Studio versions](binary-compat-2015-2017.md) | Consume v140 and later libraries as-is from v140 and later projects. | -| [Use native multi-targeting in Visual Studio to build old projects](use-native-multi-targeting.md) | Use Visual Studio with older compilers and libraries. | -| [Visual C++ change history 2003 - 2015](visual-cpp-change-history-2003-2015.md) | A list of all the changes in the Microsoft C++ libraries and build tools from Visual Studio 2003 through 2015 that might require changes in your code. | -| [Visual C++ What's New 2003 through 2015](visual-cpp-what-s-new-2003-through-2015.md) | All the "what's new" information for Microsoft C++ from Visual Studio 2003 through Visual Studio 2015. | -| [Porting and Upgrading: Examples and Case Studies](porting-and-upgrading-examples-and-case-studies.md) | For this section, we ported and upgrades several samples and applications and discussed the experiences and results. These articles give you a sense of what's involved in the porting and upgrading process. Throughout the process, we discuss tips and tricks for upgrading and show how specific errors were fixed. | -| [Porting to the Universal Windows Platform](porting-to-the-universal-windows-platform-cpp.md) | Contains information about porting app code to Windows 10 and later | -| [Introduction to Visual C++ for UNIX Users](introduction-to-visual-cpp-for-unix-users.md) | Provides information for UNIX users who are new to Visual C++ and want to become productive with it. | -| [Running Linux programs on Windows](porting-from-unix-to-win32.md) | Discusses options for migrating UNIX applications to Windows. | +**Transform your legacy C++ applications with confidence.** Whether you're upgrading from Visual Studio 2008 or modernizing to take advantage of the latest C++ features, this comprehensive guide provides everything you need for a successful upgrade journey. + +:::row::: +:::column span="2"::: +## 🚀 Quick start + +**Most projects upgrade seamlessly:** For projects created in Visual Studio 2010-2017, simply open them in the latest Visual Studio. For Visual Studio 2008 or earlier projects, use our [two-step upgrade process](upgrading-projects-from-earlier-versions-of-visual-cpp.md). + +**Binary compatibility:** Visual Studio 2015, 2017, 2019, 2022, and 2026 build tools are binary-compatible, so you can upgrade without rebuilding library dependencies. [Learn more](binary-compat-2015-2017.md). + +**CMake projects:** For projects using open-source libraries or targeting multiple platforms, consider migrating to CMake. [Learn more](../build/cmake-projects-in-visual-studio.md). +:::column-end::: +:::column span="2"::: +## 💡 Why upgrade? + +- **🏃‍♂️ Better Performance:** Faster execution and build times +- **🔒 Enhanced Security:** Address sanitizers and security features +- **📐 Standards Compliance:** Modern C++ features and conformance +- **🛠️ Better Tools:** Advanced debugging and analysis capabilities +:::column-end::: +:::row-end::: + +## 🎯 Choose your upgrade path + +:::row::: +:::column::: +### 📋 Assess & plan +**Evaluate your current codebase and plan your strategy** + +- [🔍 Overview of potential upgrade issues](overview-of-potential-upgrade-issues-visual-cpp.md) +- [🔗 C++ binary compatibility between versions](binary-compat-2015-2017.md) +- [📜 Visual C++ change history 2003-2015](visual-cpp-change-history-2003-2015.md) +- [⚠️ Features deprecated in Visual Studio](features-deprecated-in-visual-studio.md) +- [🎯 Use native multi-targeting for old projects](use-native-multi-targeting.md) +:::column-end::: +:::column::: +### 🔧 Upgrade & modernize +**Step-by-step guides and tools for upgrading** + +- [⬆️ Upgrade projects from earlier versions](upgrading-projects-from-earlier-versions-of-visual-cpp.md) +- [🛠️ IDE tools for upgrading C++ code](ide-tools-for-upgrading-code.md) +- [🔄 Upgrade to Universal CRT](upgrade-your-code-to-the-universal-crt.md) +- [🔧 Update WINVER and _WIN32_WINNT](modifying-winver-and-win32-winnt.md) +- [🔗 Fix dependencies on library internals](fix-your-dependencies-on-library-internals.md) +- [📊 Floating-point migration issues](floating-point-migration-issues.md) +:::column-end::: +:::row-end::: + +:::row::: +:::column::: +### 🌐 Platform migration +**Move your applications to modern platforms** + +- [📱 Port to Universal Windows Platform](porting-to-the-universal-windows-platform-cpp.md) +- [🔗 Use existing C++ code in UWP apps](how-to-use-existing-cpp-code-in-a-universal-windows-platform-app.md) +- [🐧 Visual C++ for UNIX users](introduction-to-visual-cpp-for-unix-users.md) +- [🪟 Running Linux programs on Windows](porting-from-unix-to-win32.md) +- [📦 Port third-party libraries](porting-third-party-libraries.md) +:::column-end::: +:::column::: +### ✨ Success stories & examples +**Learn from real-world upgrade experiences** + +- [📖 Examples and case studies overview](porting-and-upgrading-examples-and-case-studies.md) +- [📝 Case study: MFC Scribble upgrade](porting-guide-mfc-scribble.md) +- [🕵️ Case study: COM Spy upgrade](porting-guide-com-spy.md) +- [🔍 Case study: Spy++ upgrade](porting-guide-spy-increment.md) +- [🏗️ VCBuild vs. MSBuild migration](build-system-changes.md) +:::column-end::: +:::row-end::: + +[📚 Read more case studies](porting-and-upgrading-examples-and-case-studies.md) + +:::row::: +:::column span=""::: +:::column-end::: +:::column span="2"::: +![C++ logo with an upward arrow and abstract code on a blue background suggesting improvements from upgrading.](media/upgrade-cpp.png) +:::column-end::: +:::column span=""::: +:::column-end::: +:::row-end::: + +## 🛠️ Upgrade benefits + +:::row::: +:::column span="2"::: +### Performance & optimization +- **Faster execution** with improved compiler optimizations +- **Reduced build times** through compiler and linker improvements +- **Better memory usage** with modern runtime optimizations +:::column-end::: +:::column span="2"::: +### Security & reliability +- **Enhanced security** with address sanitizers and [guard checking](../build/reference/guard-enable-guard-checks.md) +- **Secure runtime libraries** with improved [CRT security features](../c-runtime-library/security-features-in-the-crt.md)) +- **Better error detection** with static analysis tools +:::column-end::: +:::row-end::: + +:::row::: +:::column span="2"::: +### Developer experience +- **Modern IDE features** with IntelliSense improvements +- **Advanced debugging** with better visualizers and diagnostics +- **Code analysis** with Core Guidelines checkers and Clang-Tidy +:::column-end::: +:::column span="2"::: +### Standards & compatibility +- **Better C++ standards conformance** with [`/permissive-`](../build/reference/permissive-standards-conformance.md) mode +- **Modern preprocessor** for improved code conformance. [Learn more](../preprocessor/preprocessor-experimental-overview.md) +- **Cross-platform support** with CMake integration +:::column-end::: +:::row-end::: + +## 🤔 Multitargeting vs. upgrading + +**Not ready for a full upgrade?** You can still use the latest Visual Studio with older build tools and libraries: + +- ✅ **Modern static analysis tools** including C++ Core Guidelines checkers and Clang-Tidy +- ✅ **Automatic code formatting** to improve legacy code readability +- ✅ **Latest IDE features** while maintaining compatibility + +[Learn about native multi-targeting →](use-native-multi-targeting.md) + +## 🚀 Ready to start? + +1. **📊 Assess your current project** with our [upgrade issues overview](overview-of-potential-upgrade-issues-visual-cpp.md) +2. **🔄 Follow our step-by-step guide** to [upgrade from earlier versions](upgrading-projects-from-earlier-versions-of-visual-cpp.md) +3. **🛠️ Use our IDE tools** to [streamline the upgrade process](ide-tools-for-upgrading-code.md) +4. **📖 Learn from others** with our [real-world case studies](porting-and-upgrading-examples-and-case-studies.md) + +**Questions?** Join the conversation in [Microsoft Learn Q&A](/answers/topics/c%2B%2B.html) or check out the [C++ Team Blog](https://devblogs.microsoft.com/cppblog/) for the latest updates. ## See also -[C++ in Visual Studio](../overview/visual-cpp-in-visual-studio.md)
-[What's New for The C++ compiler in Visual Studio](../overview/what-s-new-for-visual-cpp-in-visual-studio.md)
-[C++ conformance improvements in Visual Studio](../overview/cpp-conformance-improvements.md)
+[C++ in Visual Studio](../overview/visual-cpp-in-visual-studio.md)\ +[What's new for the C++ compiler in Visual Studio](../overview/what-s-new-for-visual-cpp-in-visual-studio.md)\ +[C++ conformance improvements in Visual Studio](../overview/cpp-conformance-improvements.md) \ No newline at end of file From 48d2bdb01ae68192875426c39d8ef0d58747755b Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 6 Nov 2025 15:56:46 -0800 Subject: [PATCH 2080/2255] put image back at top --- .../visual-cpp-porting-and-upgrading-guide.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/porting/visual-cpp-porting-and-upgrading-guide.md b/docs/porting/visual-cpp-porting-and-upgrading-guide.md index 8cd4255be49..87a10484b8c 100644 --- a/docs/porting/visual-cpp-porting-and-upgrading-guide.md +++ b/docs/porting/visual-cpp-porting-and-upgrading-guide.md @@ -12,6 +12,16 @@ ms.author: twhitney **Transform your legacy C++ applications with confidence.** Whether you're upgrading from Visual Studio 2008 or modernizing to take advantage of the latest C++ features, this comprehensive guide provides everything you need for a successful upgrade journey. +:::row::: +:::column span=""::: +:::column-end::: +:::column span="2"::: +![C++ logo with an upward arrow and abstract code on a blue background suggesting improvements from upgrading.](media/upgrade-cpp.png) +:::column-end::: +:::column span=""::: +:::column-end::: +:::row-end::: + :::row::: :::column span="2"::: ## 🚀 Quick start @@ -83,16 +93,6 @@ ms.author: twhitney [📚 Read more case studies](porting-and-upgrading-examples-and-case-studies.md) -:::row::: -:::column span=""::: -:::column-end::: -:::column span="2"::: -![C++ logo with an upward arrow and abstract code on a blue background suggesting improvements from upgrading.](media/upgrade-cpp.png) -:::column-end::: -:::column span=""::: -:::column-end::: -:::row-end::: - ## 🛠️ Upgrade benefits :::row::: From 186f736300bdcdac860e92eb990b48b44a34cb0c Mon Sep 17 00:00:00 2001 From: Takashi Takebayashi Date: Fri, 7 Nov 2025 10:04:24 +0900 Subject: [PATCH 2081/2255] Fix typo: cancelation -> cancellation --- docs/parallel/concrt/cancellation-in-the-ppl.md | 2 +- .../concrt/codesnippet/CPP/cancellation-in-the-ppl_12.cpp | 2 +- .../concrt/codesnippet/CPP/cancellation-in-the-ppl_14.cpp | 2 +- .../concrt/codesnippet/CPP/cancellation-in-the-ppl_6.cpp | 2 +- docs/parallel/concrt/task-parallelism-concurrency-runtime.md | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/parallel/concrt/cancellation-in-the-ppl.md b/docs/parallel/concrt/cancellation-in-the-ppl.md index 3d97190376d..66e4150037a 100644 --- a/docs/parallel/concrt/cancellation-in-the-ppl.md +++ b/docs/parallel/concrt/cancellation-in-the-ppl.md @@ -215,7 +215,7 @@ This example produces the following output. Caught 50 ``` -The following example uses a Boolean flag to coordinate cancellation in a `parallel_for` loop. Every task runs because this example does not use the `cancel` method or exception handling to cancel the overall set of tasks. Therefore, this technique can have more computational overhead than a cancelation mechanism. +The following example uses a Boolean flag to coordinate cancellation in a `parallel_for` loop. Every task runs because this example does not use the `cancel` method or exception handling to cancel the overall set of tasks. Therefore, this technique can have more computational overhead than a cancellation mechanism. [!code-cpp[concrt-task-tree#8](../../parallel/concrt/codesnippet/cpp/cancellation-in-the-ppl_14.cpp)] diff --git a/docs/parallel/concrt/codesnippet/CPP/cancellation-in-the-ppl_12.cpp b/docs/parallel/concrt/codesnippet/CPP/cancellation-in-the-ppl_12.cpp index 54a60e82783..93413d211ca 100644 --- a/docs/parallel/concrt/codesnippet/CPP/cancellation-in-the-ppl_12.cpp +++ b/docs/parallel/concrt/codesnippet/CPP/cancellation-in-the-ppl_12.cpp @@ -1,4 +1,4 @@ - // To enable cancelation, call parallel_for in a task group. + // To enable cancellation, call parallel_for in a task group. structured_task_group tg; task_group_status status = tg.run_and_wait([&] { diff --git a/docs/parallel/concrt/codesnippet/CPP/cancellation-in-the-ppl_14.cpp b/docs/parallel/concrt/codesnippet/CPP/cancellation-in-the-ppl_14.cpp index 501bef3171f..20dc01ea24a 100644 --- a/docs/parallel/concrt/codesnippet/CPP/cancellation-in-the-ppl_14.cpp +++ b/docs/parallel/concrt/codesnippet/CPP/cancellation-in-the-ppl_14.cpp @@ -1,4 +1,4 @@ - // Create a Boolean flag to coordinate cancelation. + // Create a Boolean flag to coordinate cancellation. bool canceled = false; parallel_for(0, 100, [&](int i) { diff --git a/docs/parallel/concrt/codesnippet/CPP/cancellation-in-the-ppl_6.cpp b/docs/parallel/concrt/codesnippet/CPP/cancellation-in-the-ppl_6.cpp index a2fd7307692..64bd96b60aa 100644 --- a/docs/parallel/concrt/codesnippet/CPP/cancellation-in-the-ppl_6.cpp +++ b/docs/parallel/concrt/codesnippet/CPP/cancellation-in-the-ppl_6.cpp @@ -23,7 +23,7 @@ for (int i = 0; i < 1000; ++i) { // To reduce overhead, occasionally check for - // cancelation. + // cancellation. if ((i%100) == 0) { if (tg2.is_canceling()) diff --git a/docs/parallel/concrt/task-parallelism-concurrency-runtime.md b/docs/parallel/concrt/task-parallelism-concurrency-runtime.md index 23e2ad45736..d6ab7f02cc6 100644 --- a/docs/parallel/concrt/task-parallelism-concurrency-runtime.md +++ b/docs/parallel/concrt/task-parallelism-concurrency-runtime.md @@ -257,7 +257,7 @@ The runtime also provides an exception-handling model that enables you to throw Although we recommend that you use `task_group` or `parallel_invoke` instead of the `structured_task_group` class, there are cases where you want to use `structured_task_group`, for example, when you write a parallel algorithm that performs a variable number of tasks or requires support for cancellation. This section explains the differences between the `task_group` and `structured_task_group` classes. -The `task_group` class is thread-safe. Therefore you can add tasks to a `task_group` object from multiple threads and wait on or cancel a `task_group` object from multiple threads. The construction and destruction of a `structured_task_group` object must occur in the same lexical scope. In addition, all operations on a `structured_task_group` object must occur on the same thread. The exception to this rule is the [concurrency::structured_task_group::cancel](reference/structured-task-group-class.md#cancel) and [concurrency::structured_task_group::is_canceling](reference/structured-task-group-class.md#is_canceling) methods. A child task can call these methods to cancel the parent task group or check for cancelation at any time. +The `task_group` class is thread-safe. Therefore you can add tasks to a `task_group` object from multiple threads and wait on or cancel a `task_group` object from multiple threads. The construction and destruction of a `structured_task_group` object must occur in the same lexical scope. In addition, all operations on a `structured_task_group` object must occur on the same thread. The exception to this rule is the [concurrency::structured_task_group::cancel](reference/structured-task-group-class.md#cancel) and [concurrency::structured_task_group::is_canceling](reference/structured-task-group-class.md#is_canceling) methods. A child task can call these methods to cancel the parent task group or check for cancellation at any time. You can run additional tasks on a `task_group` object after you call the [concurrency::task_group::wait](reference/task-group-class.md#wait) or [concurrency::task_group::run_and_wait](reference/task-group-class.md#run_and_wait) method. Conversely, if you run additional tasks on a `structured_task_group` object after you call the [concurrency::structured_task_group::wait](reference/structured-task-group-class.md#wait) or [concurrency::structured_task_group::run_and_wait](reference/structured-task-group-class.md#run_and_wait) methods, then the behavior is undefined. From f7f268b30935dfad6e6e46d34983b5acf3cbd4ba Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 6 Nov 2025 17:53:18 -0800 Subject: [PATCH 2082/2255] update perf info --- docs/overview/what-s-new-for-msvc.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md index 5085a6beeef..b471afa8297 100644 --- a/docs/overview/what-s-new-for-msvc.md +++ b/docs/overview/what-s-new-for-msvc.md @@ -52,7 +52,7 @@ MSVC Build Tools version 14.50 preserves binary compatibility with code built wi - Visual Studio 2026 now includes CMake 4.1.1 by default. CMake also includes a Visual Studio 2026 generator and modern SLNX projects, so you can build Visual Studio C++ projects directly from CMake. - Includes the latest version of the IncrediBuild engine and an updated extension that works with Visual Studio 2026 version 18.0. -- Compiler backend runtime performance improvements. Up to 6% as measured on Unreal Engine's City Sample RenderThread. For more information, see [Why you should upgrade your C++ build tools](https://devblogs.microsoft.com/cppblog/upgrading-c-projects-to-visual-studio-2026/#why-you-should-upgrade-your-c++-build-tools). +- Compiler backend runtime performance improvements. Compared to Visual Studio version 17.14, up to 6% improvement on Unreal Engine's City Sample RenderThread and up to +3% improvements on Unreal Engine's City Sample GameThread benchmark. For more information, see [Why you should upgrade your C++ build tools](https://devblogs.microsoft.com/cppblog/upgrading-c-projects-to-visual-studio-2026/#why-you-should-upgrade-your-c++-build-tools). - The Visual Studio setup assistant can help you retarget your projects, so they build with the latest MSVC Build Tools. For more information, see [Retarget your projects with the setup assistant](https://devblogs.microsoft.com/cppblog/upgrading-c-projects-to-visual-studio-2026/#retarget-your-projects-with-the-setup-assistant). **Code analysis enhancements** From 6794f9b7b4093ca7ed48edefa8d32c71c56e478f Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 6 Nov 2025 18:52:43 -0800 Subject: [PATCH 2083/2255] add links --- docs/overview/what-s-new-for-msvc.md | 3 ++- docs/porting/visual-cpp-porting-and-upgrading-guide.md | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md index b471afa8297..f509fdb496b 100644 --- a/docs/overview/what-s-new-for-msvc.md +++ b/docs/overview/what-s-new-for-msvc.md @@ -1,7 +1,7 @@ --- title: "What's new for MSVC Build Tools" description: "The new features and fixes in the Microsoft C/C++ compiler and tools (MSVC)." -ms.date: 11/05/2025 +ms.date: 11/06/2025 ms.service: "visual-cpp" ms.subservice: "cpp-lang" ms.custom: intro-whats-new @@ -47,6 +47,7 @@ MSVC Build Tools version 14.50 preserves binary compatibility with code built wi - Copilot Chat is smarter with improved context for everyday tasks. Expect better results when searching your codebase and referencing specific lines in your code. - A **Copilot Actions** option was added to the right-click context menu in the Visual Studio editor. Use it to quickly bring a specific file or lines of code you select to the attention of Copilot Chat. You can then ask Copilot to explain what the code does, make optimizations, generate comments, unit tests, and so on. - Better AI code completions for C++. GitHub Copilot uses context from relevant files to improve inline autocomplete for C++. GitHub Copilot includes other relevant files as context which reduces hallucinations while offering more relevant and accurate suggestions. +- Read about [New GitHub Copilot capabilities for C++ developers: Upgrade MSVC, improve build performance, and refactor C++ code](https://devblogs.microsoft.com/cppblog/new-github-copilot-capabilities-for-c-developers-upgrade-msvc-improve-build-performance-and-refactor-c-code/). **Build enhancements** diff --git a/docs/porting/visual-cpp-porting-and-upgrading-guide.md b/docs/porting/visual-cpp-porting-and-upgrading-guide.md index 87a10484b8c..1b8b32c3e46 100644 --- a/docs/porting/visual-cpp-porting-and-upgrading-guide.md +++ b/docs/porting/visual-cpp-porting-and-upgrading-guide.md @@ -59,6 +59,7 @@ ms.author: twhitney ### 🔧 Upgrade & modernize **Step-by-step guides and tools for upgrading** +- [⬆️ Upgrading C++ Projects to Visual Studio 2026](https://devblogs.microsoft.com/cppblog/upgrading-c-projects-to-visual-studio-2026/) - [⬆️ Upgrade projects from earlier versions](upgrading-projects-from-earlier-versions-of-visual-cpp.md) - [🛠️ IDE tools for upgrading C++ code](ide-tools-for-upgrading-code.md) - [🔄 Upgrade to Universal CRT](upgrade-your-code-to-the-universal-crt.md) From 1b69374a1541a51012a5d77b7ebd45686fd84ef7 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 7 Nov 2025 10:49:13 -0800 Subject: [PATCH 2084/2255] add notice --- .../build-an-opengl-es-application-on-android-and-ios.md | 7 ++++--- .../create-an-android-native-activity-app.md | 4 +++- .../cross-platform-mobile-development-examples.md | 3 +++ docs/cross-platform/general-android-prop-page.md | 4 +++- docs/cross-platform/import-an-xcode-project.md | 4 +++- .../install-and-configure-tools-to-build-using-ios.md | 4 +++- ...ll-visual-cpp-for-cross-platform-mobile-development.md | 3 +++ .../sync-changes-between-xcode-and-visual-studio.md | 4 +++- .../visual-cpp-for-cross-platform-mobile-development.md | 6 ++++-- .../embedded/download-and-install-the-embedded-tooling.md | 3 +++ docs/overview/overview-of-cpp-development.md | 2 +- docs/overview/supported-platforms-visual-cpp.md | 2 +- ...al-cpp-tools-and-features-in-visual-studio-editions.md | 7 ++++++- docs/porting/features-deprecated-in-visual-studio.md | 8 ++------ docs/porting/introduction-to-visual-cpp-for-unix-users.md | 4 +++- 15 files changed, 45 insertions(+), 20 deletions(-) diff --git a/docs/cross-platform/build-an-opengl-es-application-on-android-and-ios.md b/docs/cross-platform/build-an-opengl-es-application-on-android-and-ios.md index 319b56d17d1..fb0ef5ab3f3 100644 --- a/docs/cross-platform/build-an-opengl-es-application-on-android-and-ios.md +++ b/docs/cross-platform/build-an-opengl-es-application-on-android-and-ios.md @@ -8,13 +8,14 @@ ms.custom: sfi-image-nochange # Build an OpenGL ES application on Android and iOS +> [!IMPORTANT] +> Starting with Visual Studio 2026 (version 18.0), the **Mobile development with C++** workload for iOS and Android targeting in the Visual Studio installer and the **Embedded and IoT tools**--including RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import--are no longer supported and will be removed in a future update. However, the Android NDKs listed in the Mobile development with C++ workload continue to be supported. +> OpenGL support is no longer available. It was last available in Visual Studio 17.3. + You can create Visual Studio solutions and projects for iOS apps and Android apps that share common code. This article guides you through a combined solution template. It creates both an iOS app, and an Android Native Activity app. The apps have C++ code in common that uses OpenGL ES to display the same animated rotating cube on each platform. OpenGL ES (OpenGL for Embedded Systems or GLES) is a 2D and 3D graphics API. It's supported on many mobile devices. ## Requirements -> [!IMPORTANT] -> OpenGL support is no longer available. It was last available in Visual Studio 17.3. - Here are the system requirements to create an OpenGL ES app for iOS and Android. If you haven't already, install the Mobile Development with C++ workload in the Visual Studio Installer. To get the OpenGL ES templates, and to build for iOS, include the optional C++ iOS development tools. To build for Android, install the C++ Android development tools and the required third-party tools: Android NDK, Apache Ant, and Google Android Emulator. For better emulator performance on Intel platforms, one option is to install the Intel Hardware Accelerated Execution Manager (HAXM). For detailed instructions, see [Install cross-platform mobile development with C++](../cross-platform/install-visual-cpp-for-cross-platform-mobile-development.md). diff --git a/docs/cross-platform/create-an-android-native-activity-app.md b/docs/cross-platform/create-an-android-native-activity-app.md index d8741577f0b..b4b60604d3f 100644 --- a/docs/cross-platform/create-an-android-native-activity-app.md +++ b/docs/cross-platform/create-an-android-native-activity-app.md @@ -2,11 +2,13 @@ description: "Learn more about: Create an Android Native Activity App" title: "Create an Android Native Activity App" ms.date: "10/17/2019" -ms.assetid: 884014b1-5208-45ec-b0da-ad0070d2c24d ms.topic: how-to --- # Create an Android Native Activity App +> [!IMPORTANT] +> Starting with Visual Studio 2026 (version 18.0), the **Mobile development with C++** workload for iOS and Android targeting in the Visual Studio installer and the **Embedded and IoT tools**--including RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import--are no longer supported and will be removed in a future update. However, the Android NDKs listed in the Mobile development with C++ workload continue to be supported. + When you install the cross-platform **Mobile development with C++** workload, Visual Studio can be used to create fully functional Android Native Activity apps. The Android Native Development Kit (NDK) is a toolset that allows you to implement the majority of your Android app using pure C/C++ code. Some Java JNI code acts as glue to allow your C/C++ code to interact with Android. The Android NDK introduced the ability to create Native Activity apps with Android API Level 9. Native Activity code is popular for creating gaming and graphic intensive apps that use Unreal Engine or OpenGL. This topic will guide you through creation of a simple Native Activity app that uses OpenGL. Additional topics walk through the developer lifecycle of editing, building, debugging and deploying Native Activity code. ## Requirements diff --git a/docs/cross-platform/cross-platform-mobile-development-examples.md b/docs/cross-platform/cross-platform-mobile-development-examples.md index 7eb5ea368ab..07d0b920e86 100644 --- a/docs/cross-platform/cross-platform-mobile-development-examples.md +++ b/docs/cross-platform/cross-platform-mobile-development-examples.md @@ -5,6 +5,9 @@ ms.date: 03/04/2024 --- # Cross-platform mobile development examples +> [!IMPORTANT] +> Starting with Visual Studio 2026 (version 18.0), the **Mobile development with C++** workload for iOS and Android targeting in the Visual Studio installer and the **Embedded and IoT tools**--including RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import--are no longer supported and will be removed in a future update. However, the Android NDKs listed in the Mobile development with C++ workload continue to be supported. + Several of the templates installed by the **Mobile development with C++** workload generate complete examples that you can use to learn from. Additionally, here are some example applications that you can download and try out in Visual Studio. - [hello-jni Android Application Sample](https://github.com/android/ndk-samples/tree/master/hello-jni) diff --git a/docs/cross-platform/general-android-prop-page.md b/docs/cross-platform/general-android-prop-page.md index 3bbadb70d3a..24c73cf5937 100644 --- a/docs/cross-platform/general-android-prop-page.md +++ b/docs/cross-platform/general-android-prop-page.md @@ -2,7 +2,6 @@ description: "Learn more about: General Project Properties (Android C++)" title: "General Project Properties (Android C++)" ms.date: "10/23/2017" -ms.assetid: 65f4868b-b864-4989-a275-1e51869ef599 f1_keywords: - VC.Project.VCConfiguration.Android.OutputDirectory - VC.Project.VCConfiguration.Android.IntermediateDirectory @@ -17,6 +16,9 @@ f1_keywords: --- # General Project Properties (Android C++) +> [!IMPORTANT] +> Starting with Visual Studio 2026 (version 18.0), the **Mobile development with C++** workload for iOS and Android targeting in the Visual Studio installer and the **Embedded and IoT tools**--including RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import--are no longer supported and will be removed in a future update. However, the Android NDKs listed in the Mobile development with C++ workload continue to be supported. + | Property | Description | Choices | |--|--|--| | Output Directory | Specifies a relative path to the output file directory; can include environment variables. | diff --git a/docs/cross-platform/import-an-xcode-project.md b/docs/cross-platform/import-an-xcode-project.md index b4bff9ac579..e58f2a47ec2 100644 --- a/docs/cross-platform/import-an-xcode-project.md +++ b/docs/cross-platform/import-an-xcode-project.md @@ -2,11 +2,13 @@ description: "Learn more about: Import an Xcode project" title: "Import an Xcode project" ms.date: "10/17/2019" -ms.assetid: aa4b8161-d98f-4a1a-9db3-520133bfc82f ms.topic: how-to --- # Import an Xcode project +> [!IMPORTANT] +> Starting with Visual Studio 2026 (version 18.0), the **Mobile development with C++** workload for iOS and Android targeting in the Visual Studio installer and the **Embedded and IoT tools**--including RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import--are no longer supported and will be removed in a future update. However, the Android NDKs listed in the Mobile development with C++ workload continue to be supported. + The Visual Studio tools for cross-platform mobile development with C++ include support for moving your Xcode projects into Visual Studio, where you can create cross-platform libraries and share code with other projects. The Import from Xcode wizard simplifies the process of importing projects and splitting out the C++ code in your Xcode targets for use as a static library or shared code project. You can manage your iOS-specific code in Visual Studio and still use Xcode to do storyboards and builds. For information on how to easily move code back and forth between Visual Studio and Xcode, see [Sync changes between Xcode and Visual Studio](sync-changes-between-xcode-and-visual-studio.md). ## Use the Import From Xcode wizard diff --git a/docs/cross-platform/install-and-configure-tools-to-build-using-ios.md b/docs/cross-platform/install-and-configure-tools-to-build-using-ios.md index 4e7f878b3a2..f0d0033c58f 100644 --- a/docs/cross-platform/install-and-configure-tools-to-build-using-ios.md +++ b/docs/cross-platform/install-and-configure-tools-to-build-using-ios.md @@ -2,7 +2,6 @@ description: "Learn more about: Install and configure tools to build using iOS" title: "Install and configure tools to build using iOS" ms.date: 12/18/2022 -ms.assetid: d0c311c9-9eb9-42c5-ba07-25604362cd28 ms.topic: install-set-up-deploy ms.custom: - intro-installation @@ -10,6 +9,9 @@ ms.custom: --- # Install and configure tools to build using iOS +> [!IMPORTANT] +> Starting with Visual Studio 2026 (version 18.0), the **Mobile development with C++** workload for iOS and Android targeting in the Visual Studio installer and the **Embedded and IoT tools**--including RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import--are no longer supported and will be removed in a future update. However, the Android NDKs listed in the Mobile development with C++ workload continue to be supported. + You can use Visual Studio with the cross-platform **Mobile development with C++** tools to edit, debug, and deploy iOS code to the iOS Simulator or to an iOS device. But, because of licensing restrictions, the code must be built and run remotely on a Mac. To build and run iOS apps using Visual Studio, you need to set up and configure the remote agent, [vcremote](https://www.npmjs.com/package/vcremote), on your Mac. The vcremote remote agent handles build requests from Visual Studio and runs the app on an iOS device connected to the Mac, or in the iOS Simulator on the Mac. > [!NOTE] diff --git a/docs/cross-platform/install-visual-cpp-for-cross-platform-mobile-development.md b/docs/cross-platform/install-visual-cpp-for-cross-platform-mobile-development.md index 08239a91208..2255328d963 100644 --- a/docs/cross-platform/install-visual-cpp-for-cross-platform-mobile-development.md +++ b/docs/cross-platform/install-visual-cpp-for-cross-platform-mobile-development.md @@ -7,6 +7,9 @@ ms.topic: install-set-up-deploy --- # Install cross-platform mobile development with C++ +> [!IMPORTANT] +> Starting with Visual Studio 2026 (version 18.0), the **Mobile development with C++** workload for iOS and Android targeting in the Visual Studio installer and the **Embedded and IoT tools**--including RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import--are no longer supported and will be removed in a future update. However, the Android NDKs listed in the Mobile development with C++ workload continue to be supported. + You can use C++ in Visual Studio to build Windows Desktop apps, Universal Windows Platform (UWP) apps, and Linux apps. And now, you can build C++ apps for Android and iOS. The **Mobile development with C++** workload is an installable set of components in Visual Studio. It includes cross-platform iOS, Android, and UWP Visual Studio templates. The workload installs the cross-platform tools and SDKs you need to get started quickly. You don't have to locate, download, and configure them yourself. You can use these tools in Visual Studio to easily create, edit, debug, and test your cross-platform projects. This article describes how to install the tools and third-party software required to develop cross-platform apps in C++ using Visual Studio. For an overview, see [Visual C++ cross-platform mobile](https://visualstudio.microsoft.com/vs/features/cplusplus-mdd/) diff --git a/docs/cross-platform/sync-changes-between-xcode-and-visual-studio.md b/docs/cross-platform/sync-changes-between-xcode-and-visual-studio.md index 834a4af4463..0c124d1afcc 100644 --- a/docs/cross-platform/sync-changes-between-xcode-and-visual-studio.md +++ b/docs/cross-platform/sync-changes-between-xcode-and-visual-studio.md @@ -2,10 +2,12 @@ description: "Learn more about: Sync changes between Xcode and Visual Studio" title: "Sync changes between Xcode and Visual Studio" ms.date: "10/17/2019" -ms.assetid: c71a4d7c-120e-4559-a114-3a99c4b860a9 --- # Sync changes between Xcode and Visual Studio +> [!IMPORTANT] +> Starting with Visual Studio 2026 (version 18.0), the **Mobile development with C++** workload for iOS and Android targeting in the Visual Studio installer and the **Embedded and IoT tools**--including RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import--are no longer supported and will be removed in a future update. However, the Android NDKs listed in the Mobile development with C++ workload continue to be supported. + The mobile development with C++ components in Visual Studio include remote capabilities for syncing your work between your PC and your Mac. When your Visual Studio and Mac machines are paired, new options are available for iOS Application projects in Visual Studio that you can use to open your project in Xcode, move your code between Xcode and Visual Studio, and clean the temporary Xcode project directory. To use the Remote Machine options, your project must be an iOS Application project, and Visual Studio must be paired with your Mac. For prerequisites and instructions on how to pair a Mac, see [Install and configure tools to build using iOS](../cross-platform/install-and-configure-tools-to-build-using-ios.md). diff --git a/docs/cross-platform/visual-cpp-for-cross-platform-mobile-development.md b/docs/cross-platform/visual-cpp-for-cross-platform-mobile-development.md index 561a0d7c2d8..42e3870beb1 100644 --- a/docs/cross-platform/visual-cpp-for-cross-platform-mobile-development.md +++ b/docs/cross-platform/visual-cpp-for-cross-platform-mobile-development.md @@ -1,11 +1,13 @@ --- description: "Learn more about: Cross-platform mobile development with C++" title: "Cross-platform mobile development with C++" -ms.date: "11/14/2019" -ms.assetid: 0bb872d6-981b-4c96-9143-fcec5336bf0d +ms.date: 11/07/2025 --- # Cross-platform mobile development with C++ +> [!IMPORTANT] +> Starting with Visual Studio 2026 (version 18.0), the **Mobile development with C++** workload for iOS and Android targeting in the Visual Studio installer and the **Embedded and IoT tools**--including RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import--are no longer supported and will be removed in a future update. However, the Android NDKs listed in the Mobile development with C++ workload continue to be supported. + You can build native C++ apps for iOS, Android, and Windows devices by using the cross-platform tools available in Visual Studio. **Mobile development with C++** is a workload available in the Visual Studio installer. It installs the SDKs and tools you need for cross-platform development of shared libraries and native apps. When it's installed, you can use C++ to create code that runs on iOS and Android devices and platforms, Windows, Windows Store, and Xbox. Writing code for multiple platforms is often frustrating. The primary development languages and tools for iOS, Android, and Windows are different on each platform. However, all platforms support writing code in C++. It's the common denominator that can enable reuse of core code across platforms. Native code written in C++ can be both more performant and resistant to reverse engineering. Code reuse can save both time and effort when creating apps for multiple platforms. diff --git a/docs/embedded/download-and-install-the-embedded-tooling.md b/docs/embedded/download-and-install-the-embedded-tooling.md index e16dae943ea..c59cbbdcc61 100644 --- a/docs/embedded/download-and-install-the-embedded-tooling.md +++ b/docs/embedded/download-and-install-the-embedded-tooling.md @@ -15,6 +15,9 @@ ms.topic: install-set-up-deploy In Visual Studio 2022 and later versions, you can use the Visual Studio IDE on Windows to edit and debug embedded projects. Use tools such as the [Peripheral View](./peripheral-view.md), [RTOS View](./rtos-view.md), and the [Serial Monitor](./serial-monitor.md) to help interact with and debug your embedded projects. +> [!IMPORTANT] +> Starting with Visual Studio 2026 (version 18.0), the **Mobile development with C++** workload for iOS and Android targeting in the Visual Studio installer and the **Embedded and IoT tools**--including RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import--are no longer supported and will be removed in a future update. However, the Android NDKs listed in the Mobile development with C++ workload continue to be supported. + To use the embedded development tools in Visual Studio, you must install the required **Linux and embedded development with C++** workload. ## To install the Linux and embedded development with C++ workload diff --git a/docs/overview/overview-of-cpp-development.md b/docs/overview/overview-of-cpp-development.md index ca4cb394b97..ac46ec8f83c 100644 --- a/docs/overview/overview-of-cpp-development.md +++ b/docs/overview/overview-of-cpp-development.md @@ -1,6 +1,6 @@ --- title: "Overview of C++ development in Visual Studio" -description: "The Visual Studio IDE supports C++ development on Windows, Linux, Android and iOS with a code editor, debugger, test frameworks, static analyzers, and other programming tools." +description: "The Visual Studio IDE supports C++ development on Windows and Linux with a code editor, debugger, test frameworks, static analyzers, and other programming tools." ms.date: 12/02/2019 helpviewer_keywords: ["Visual C++, development tools"] author: "tylermsft" diff --git a/docs/overview/supported-platforms-visual-cpp.md b/docs/overview/supported-platforms-visual-cpp.md index 2b52a32f94e..afcfd94885f 100644 --- a/docs/overview/supported-platforms-visual-cpp.md +++ b/docs/overview/supported-platforms-visual-cpp.md @@ -44,7 +44,7 @@ Support for targeting 32-bit ARM was permanently removed in VS 2026 18.0. d Visual Studio 2026 18.0 and later no longer support targeting Windows 7/8/8.1 or Windows Server 2008 R2/2012/2012 R2. Visual Studio 2026 and later target Windows 10 or later and Windows Server 2016 or later. -e You can install the **Mobile development with C++** workload in the installer for Visual Studio 2017 and later. In Visual Studio 2015 setup, choose the optional **Visual C++ for Cross Platform Mobile Development** component to target iOS or Android platforms. For instructions, see [Install Visual C++ for Cross-Platform Mobile Development](/visualstudio/cross-platform/install-visual-cpp-for-cross-platform-mobile-development). To build iOS code, you must have a Mac computer and meet other requirements. For a list of prerequisites and installation instructions, see [Install And Configure Tools to Build using iOS](/visualstudio/cross-platform/install-and-configure-tools-to-build-using-ios). You can build x86 or ARM code to match the target hardware. Use x86 configurations to build for some Android devices. Use ARM configurations to build for iOS devices and most Android devices. +e You can install the **Mobile development with C++** workload in the installer for Visual Studio 2017 and later. In Visual Studio 2015 setup, choose the optional **Visual C++ for Cross Platform Mobile Development** component to target iOS or Android platforms. For instructions, see [Install Visual C++ for Cross-Platform Mobile Development](/visualstudio/cross-platform/install-visual-cpp-for-cross-platform-mobile-development). To build iOS code, you must have a Mac computer and meet other requirements. For a list of prerequisites and installation instructions, see [Install And Configure Tools to Build using iOS](/visualstudio/cross-platform/install-and-configure-tools-to-build-using-ios). You can build x86 or ARM code to match the target hardware. Use x86 configurations to build for some Android devices. Use ARM configurations to build for iOS devices and most Android devices. **IMPORTANT**: Starting with Visual Studio 2026 (version 18.0), the **Mobile development with C++** workload for iOS and Android targeting in the Visual Studio installer and the **Embedded and IoT tools**--including RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import--are no longer supported and will be removed in a future update. However, the Android NDKs listed in the Mobile development with C++ workload continue to be supported. f You can install the **Linux development with C++** workload in the installer for Visual Studio 2017 and later to target Linux platforms. For instructions, see [Download, install, and setup the Linux Workload](../linux/download-install-and-setup-the-linux-development-workload.md). This toolset compiles your executable on the target machine, so you can build for any supported architecture. diff --git a/docs/overview/visual-cpp-tools-and-features-in-visual-studio-editions.md b/docs/overview/visual-cpp-tools-and-features-in-visual-studio-editions.md index f05857da1e0..dcdea408105 100644 --- a/docs/overview/visual-cpp-tools-and-features-in-visual-studio-editions.md +++ b/docs/overview/visual-cpp-tools-and-features-in-visual-studio-editions.md @@ -3,7 +3,6 @@ description: "Learn more about: C++ Tools and Features in Visual Studio Editions title: "C++ Tools and Features in Visual Studio Editions" ms.date: 10/27/2021 helpviewer_keywords: ["tools and platforms [C++]"] -ms.assetid: 3d88607b-9cc4-490a-8d4c-31ee7610a26f --- # C++ Tools and Features in Visual Studio Editions @@ -29,6 +28,9 @@ The following tables show C++ features that are available in Visual Studio 2017. - Android - iOS +> [!IMPORTANT] +> Starting with Visual Studio 2026 (version 18.0), the **Mobile development with C++** workload for iOS and Android targeting in the Visual Studio installer and the **Embedded and IoT tools**--including RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import--are no longer supported and will be removed in a future update. However, the Android NDKs listed in the Mobile development with C++ workload continue to be supported. + ::: moniker-end ::: moniker range="<=msvc-150" @@ -257,6 +259,9 @@ Optional Components: ### Mobile development with C++ +> [!IMPORTANT] +> Starting with Visual Studio 2026 (version 18.0), the **Mobile development with C++** workload for iOS and Android targeting in the Visual Studio installer and the **Embedded and IoT tools**--including RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import--are no longer supported and will be removed in a future update. However, the Android NDKs listed in the Mobile development with C++ workload continue to be supported. + Included: - C++ core features diff --git a/docs/porting/features-deprecated-in-visual-studio.md b/docs/porting/features-deprecated-in-visual-studio.md index 21e2344e522..c4054812aae 100644 --- a/docs/porting/features-deprecated-in-visual-studio.md +++ b/docs/porting/features-deprecated-in-visual-studio.md @@ -42,10 +42,6 @@ To build applications using the latest C++ tools, your target platform must be * These changes allow for better performance, enhanced security, and alignment with the most recent Windows platform capabilities. -### Support for Mobile development with C++ workload +### Support for Mobile development with C++ and Embedded and IoT tools -The Mobile development with C++ workload for iOS and Android targeting in the Visual Studio installer is no longer being supported and will be removed in a future Visual Studio update. This includes new projects, building, and debugging. - -### Support for Embedded and IoT tools - -The Embedded and IoT tools component in the Visual Studio installer is no longer being supported and will be removed in a future Visual Studio update. This includes the RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import. +Starting with Visual Studio 2026 (version 18.0), the **Mobile development with C++** workload for iOS and Android targeting in the Visual Studio installer and the **Embedded and IoT tools**--including RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import--are no longer supported and will be removed in a future update. However, the Android NDKs listed in the Mobile development with C++ workload continue to be supported. \ No newline at end of file diff --git a/docs/porting/introduction-to-visual-cpp-for-unix-users.md b/docs/porting/introduction-to-visual-cpp-for-unix-users.md index 4aa29e40e1a..84dd584cdcb 100644 --- a/docs/porting/introduction-to-visual-cpp-for-unix-users.md +++ b/docs/porting/introduction-to-visual-cpp-for-unix-users.md @@ -3,13 +3,15 @@ description: "Learn more about: Introduction to Microsoft C++ for UNIX Users" title: "Introduction to Microsoft C++ for UNIX Users" ms.date: 06/22/2021 helpviewer_keywords: ["UNIX [C++]"] -ms.assetid: 36108b31-e7fa-49a8-a1f7-7077fcbec873 ms.topic: concept-article --- # Introduction to Microsoft C++ for UNIX Users This topic provides information for users of all flavors of UNIX who are new to Visual Studio and want to become productive with C++ either from the command line or by using Visual Studio. You can use Visual Studio with the Microsoft C++ compiler to target Windows. You can also use the Visual Studio IDE with GCC or Clang in UNIX environments such as remote Linux machines, MinGW-w64, and Windows Subsystem for Linux. To use C++ in Visual Studio, the **Desktop Development with C++** workload must be installed. Open the Visual Studio Installer to install the workload or add or remove optional components. Also install the **Linux Development with C++** workload if you'll be targeting a remote Linux machine. For Android or iOS development, install the **Mobile Development with C++** workload. +> [!IMPORTANT] +> Starting with Visual Studio 2026 (version 18.0), the **Mobile development with C++** workload for iOS and Android targeting in the Visual Studio installer and the **Embedded and IoT tools**--including RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import--are no longer supported and will be removed in a future update. However, the Android NDKs listed in the Mobile development with C++ workload continue to be supported. + ## Getting started on the command line You can use the Microsoft C++ compiler from the command line in a similar way that you would use a UNIX command-line environment. You compile from the command prompt by using the command-line C and C++ compiler (CL.EXE), linker (LINK.EXE), and other tools, including NMAKE.EXE, the Microsoft version of the UNIX make utility. From 5a7969ba4afab5937db0c1bb4410034571dffe36 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 7 Nov 2025 14:28:41 -0800 Subject: [PATCH 2085/2255] optimize wording --- .../build-an-opengl-es-application-on-android-and-ios.md | 2 +- docs/cross-platform/create-an-android-native-activity-app.md | 2 +- .../cross-platform-mobile-development-examples.md | 2 +- docs/cross-platform/general-android-prop-page.md | 2 +- docs/cross-platform/import-an-xcode-project.md | 2 +- .../install-and-configure-tools-to-build-using-ios.md | 2 +- ...nstall-visual-cpp-for-cross-platform-mobile-development.md | 2 +- .../sync-changes-between-xcode-and-visual-studio.md | 2 +- .../visual-cpp-for-cross-platform-mobile-development.md | 2 +- docs/embedded/download-and-install-the-embedded-tooling.md | 2 +- ...visual-cpp-tools-and-features-in-visual-studio-editions.md | 4 ++-- docs/porting/introduction-to-visual-cpp-for-unix-users.md | 2 +- 12 files changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/cross-platform/build-an-opengl-es-application-on-android-and-ios.md b/docs/cross-platform/build-an-opengl-es-application-on-android-and-ios.md index fb0ef5ab3f3..8f2c0764404 100644 --- a/docs/cross-platform/build-an-opengl-es-application-on-android-and-ios.md +++ b/docs/cross-platform/build-an-opengl-es-application-on-android-and-ios.md @@ -9,7 +9,7 @@ ms.custom: sfi-image-nochange # Build an OpenGL ES application on Android and iOS > [!IMPORTANT] -> Starting with Visual Studio 2026 (version 18.0), the **Mobile development with C++** workload for iOS and Android targeting in the Visual Studio installer and the **Embedded and IoT tools**--including RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import--are no longer supported and will be removed in a future update. However, the Android NDKs listed in the Mobile development with C++ workload continue to be supported. +> Starting with Visual Studio 2026 (version 18.0), the Mobile development with C++ workload for iOS and Android, as well as the Embedded and IoT tools (RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import), are no longer supported and will be removed in a future update. The Android NDKs included in the Mobile development with C++ workload remain supported. > OpenGL support is no longer available. It was last available in Visual Studio 17.3. You can create Visual Studio solutions and projects for iOS apps and Android apps that share common code. This article guides you through a combined solution template. It creates both an iOS app, and an Android Native Activity app. The apps have C++ code in common that uses OpenGL ES to display the same animated rotating cube on each platform. OpenGL ES (OpenGL for Embedded Systems or GLES) is a 2D and 3D graphics API. It's supported on many mobile devices. diff --git a/docs/cross-platform/create-an-android-native-activity-app.md b/docs/cross-platform/create-an-android-native-activity-app.md index b4b60604d3f..095a2a7735a 100644 --- a/docs/cross-platform/create-an-android-native-activity-app.md +++ b/docs/cross-platform/create-an-android-native-activity-app.md @@ -7,7 +7,7 @@ ms.topic: how-to # Create an Android Native Activity App > [!IMPORTANT] -> Starting with Visual Studio 2026 (version 18.0), the **Mobile development with C++** workload for iOS and Android targeting in the Visual Studio installer and the **Embedded and IoT tools**--including RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import--are no longer supported and will be removed in a future update. However, the Android NDKs listed in the Mobile development with C++ workload continue to be supported. +> Starting with Visual Studio 2026 (version 18.0), the Mobile development with C++ workload for iOS and Android, as well as the Embedded and IoT tools (RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import), are no longer supported and will be removed in a future update. The Android NDKs included in the Mobile development with C++ workload remain supported. When you install the cross-platform **Mobile development with C++** workload, Visual Studio can be used to create fully functional Android Native Activity apps. The Android Native Development Kit (NDK) is a toolset that allows you to implement the majority of your Android app using pure C/C++ code. Some Java JNI code acts as glue to allow your C/C++ code to interact with Android. The Android NDK introduced the ability to create Native Activity apps with Android API Level 9. Native Activity code is popular for creating gaming and graphic intensive apps that use Unreal Engine or OpenGL. This topic will guide you through creation of a simple Native Activity app that uses OpenGL. Additional topics walk through the developer lifecycle of editing, building, debugging and deploying Native Activity code. diff --git a/docs/cross-platform/cross-platform-mobile-development-examples.md b/docs/cross-platform/cross-platform-mobile-development-examples.md index 07d0b920e86..4a53fea00e5 100644 --- a/docs/cross-platform/cross-platform-mobile-development-examples.md +++ b/docs/cross-platform/cross-platform-mobile-development-examples.md @@ -6,7 +6,7 @@ ms.date: 03/04/2024 # Cross-platform mobile development examples > [!IMPORTANT] -> Starting with Visual Studio 2026 (version 18.0), the **Mobile development with C++** workload for iOS and Android targeting in the Visual Studio installer and the **Embedded and IoT tools**--including RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import--are no longer supported and will be removed in a future update. However, the Android NDKs listed in the Mobile development with C++ workload continue to be supported. +> Starting with Visual Studio 2026 (version 18.0), the Mobile development with C++ workload for iOS and Android, as well as the Embedded and IoT tools (RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import), are no longer supported and will be removed in a future update. The Android NDKs included in the Mobile development with C++ workload remain supported. Several of the templates installed by the **Mobile development with C++** workload generate complete examples that you can use to learn from. Additionally, here are some example applications that you can download and try out in Visual Studio. diff --git a/docs/cross-platform/general-android-prop-page.md b/docs/cross-platform/general-android-prop-page.md index 24c73cf5937..df6f9dd5a42 100644 --- a/docs/cross-platform/general-android-prop-page.md +++ b/docs/cross-platform/general-android-prop-page.md @@ -17,7 +17,7 @@ f1_keywords: # General Project Properties (Android C++) > [!IMPORTANT] -> Starting with Visual Studio 2026 (version 18.0), the **Mobile development with C++** workload for iOS and Android targeting in the Visual Studio installer and the **Embedded and IoT tools**--including RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import--are no longer supported and will be removed in a future update. However, the Android NDKs listed in the Mobile development with C++ workload continue to be supported. +> Starting with Visual Studio 2026 (version 18.0), the Mobile development with C++ workload for iOS and Android, as well as the Embedded and IoT tools (RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import), are no longer supported and will be removed in a future update. The Android NDKs included in the Mobile development with C++ workload remain supported. | Property | Description | Choices | |--|--|--| diff --git a/docs/cross-platform/import-an-xcode-project.md b/docs/cross-platform/import-an-xcode-project.md index e58f2a47ec2..1ea0c5c2e8b 100644 --- a/docs/cross-platform/import-an-xcode-project.md +++ b/docs/cross-platform/import-an-xcode-project.md @@ -7,7 +7,7 @@ ms.topic: how-to # Import an Xcode project > [!IMPORTANT] -> Starting with Visual Studio 2026 (version 18.0), the **Mobile development with C++** workload for iOS and Android targeting in the Visual Studio installer and the **Embedded and IoT tools**--including RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import--are no longer supported and will be removed in a future update. However, the Android NDKs listed in the Mobile development with C++ workload continue to be supported. +> Starting with Visual Studio 2026 (version 18.0), the Mobile development with C++ workload for iOS and Android, as well as the Embedded and IoT tools (RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import), are no longer supported and will be removed in a future update. The Android NDKs included in the Mobile development with C++ workload remain supported. The Visual Studio tools for cross-platform mobile development with C++ include support for moving your Xcode projects into Visual Studio, where you can create cross-platform libraries and share code with other projects. The Import from Xcode wizard simplifies the process of importing projects and splitting out the C++ code in your Xcode targets for use as a static library or shared code project. You can manage your iOS-specific code in Visual Studio and still use Xcode to do storyboards and builds. For information on how to easily move code back and forth between Visual Studio and Xcode, see [Sync changes between Xcode and Visual Studio](sync-changes-between-xcode-and-visual-studio.md). diff --git a/docs/cross-platform/install-and-configure-tools-to-build-using-ios.md b/docs/cross-platform/install-and-configure-tools-to-build-using-ios.md index f0d0033c58f..b0adf51b595 100644 --- a/docs/cross-platform/install-and-configure-tools-to-build-using-ios.md +++ b/docs/cross-platform/install-and-configure-tools-to-build-using-ios.md @@ -10,7 +10,7 @@ ms.custom: # Install and configure tools to build using iOS > [!IMPORTANT] -> Starting with Visual Studio 2026 (version 18.0), the **Mobile development with C++** workload for iOS and Android targeting in the Visual Studio installer and the **Embedded and IoT tools**--including RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import--are no longer supported and will be removed in a future update. However, the Android NDKs listed in the Mobile development with C++ workload continue to be supported. +> Starting with Visual Studio 2026 (version 18.0), the Mobile development with C++ workload for iOS and Android, as well as the Embedded and IoT tools (RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import), are no longer supported and will be removed in a future update. The Android NDKs included in the Mobile development with C++ workload remain supported. You can use Visual Studio with the cross-platform **Mobile development with C++** tools to edit, debug, and deploy iOS code to the iOS Simulator or to an iOS device. But, because of licensing restrictions, the code must be built and run remotely on a Mac. To build and run iOS apps using Visual Studio, you need to set up and configure the remote agent, [vcremote](https://www.npmjs.com/package/vcremote), on your Mac. The vcremote remote agent handles build requests from Visual Studio and runs the app on an iOS device connected to the Mac, or in the iOS Simulator on the Mac. diff --git a/docs/cross-platform/install-visual-cpp-for-cross-platform-mobile-development.md b/docs/cross-platform/install-visual-cpp-for-cross-platform-mobile-development.md index 2255328d963..abd451551b8 100644 --- a/docs/cross-platform/install-visual-cpp-for-cross-platform-mobile-development.md +++ b/docs/cross-platform/install-visual-cpp-for-cross-platform-mobile-development.md @@ -8,7 +8,7 @@ ms.topic: install-set-up-deploy # Install cross-platform mobile development with C++ > [!IMPORTANT] -> Starting with Visual Studio 2026 (version 18.0), the **Mobile development with C++** workload for iOS and Android targeting in the Visual Studio installer and the **Embedded and IoT tools**--including RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import--are no longer supported and will be removed in a future update. However, the Android NDKs listed in the Mobile development with C++ workload continue to be supported. +> Starting with Visual Studio 2026 (version 18.0), the Mobile development with C++ workload for iOS and Android, as well as the Embedded and IoT tools (RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import), are no longer supported and will be removed in a future update. The Android NDKs included in the Mobile development with C++ workload remain supported. You can use C++ in Visual Studio to build Windows Desktop apps, Universal Windows Platform (UWP) apps, and Linux apps. And now, you can build C++ apps for Android and iOS. The **Mobile development with C++** workload is an installable set of components in Visual Studio. It includes cross-platform iOS, Android, and UWP Visual Studio templates. The workload installs the cross-platform tools and SDKs you need to get started quickly. You don't have to locate, download, and configure them yourself. You can use these tools in Visual Studio to easily create, edit, debug, and test your cross-platform projects. diff --git a/docs/cross-platform/sync-changes-between-xcode-and-visual-studio.md b/docs/cross-platform/sync-changes-between-xcode-and-visual-studio.md index 0c124d1afcc..415ec583ea6 100644 --- a/docs/cross-platform/sync-changes-between-xcode-and-visual-studio.md +++ b/docs/cross-platform/sync-changes-between-xcode-and-visual-studio.md @@ -6,7 +6,7 @@ ms.date: "10/17/2019" # Sync changes between Xcode and Visual Studio > [!IMPORTANT] -> Starting with Visual Studio 2026 (version 18.0), the **Mobile development with C++** workload for iOS and Android targeting in the Visual Studio installer and the **Embedded and IoT tools**--including RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import--are no longer supported and will be removed in a future update. However, the Android NDKs listed in the Mobile development with C++ workload continue to be supported. +> Starting with Visual Studio 2026 (version 18.0), the Mobile development with C++ workload for iOS and Android, as well as the Embedded and IoT tools (RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import), are no longer supported and will be removed in a future update. The Android NDKs included in the Mobile development with C++ workload remain supported. The mobile development with C++ components in Visual Studio include remote capabilities for syncing your work between your PC and your Mac. When your Visual Studio and Mac machines are paired, new options are available for iOS Application projects in Visual Studio that you can use to open your project in Xcode, move your code between Xcode and Visual Studio, and clean the temporary Xcode project directory. diff --git a/docs/cross-platform/visual-cpp-for-cross-platform-mobile-development.md b/docs/cross-platform/visual-cpp-for-cross-platform-mobile-development.md index 42e3870beb1..997d8893371 100644 --- a/docs/cross-platform/visual-cpp-for-cross-platform-mobile-development.md +++ b/docs/cross-platform/visual-cpp-for-cross-platform-mobile-development.md @@ -6,7 +6,7 @@ ms.date: 11/07/2025 # Cross-platform mobile development with C++ > [!IMPORTANT] -> Starting with Visual Studio 2026 (version 18.0), the **Mobile development with C++** workload for iOS and Android targeting in the Visual Studio installer and the **Embedded and IoT tools**--including RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import--are no longer supported and will be removed in a future update. However, the Android NDKs listed in the Mobile development with C++ workload continue to be supported. +> Starting with Visual Studio 2026 (version 18.0), the Mobile development with C++ workload for iOS and Android, as well as the Embedded and IoT tools (RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import), are no longer supported and will be removed in a future update. The Android NDKs included in the Mobile development with C++ workload remain supported. You can build native C++ apps for iOS, Android, and Windows devices by using the cross-platform tools available in Visual Studio. **Mobile development with C++** is a workload available in the Visual Studio installer. It installs the SDKs and tools you need for cross-platform development of shared libraries and native apps. When it's installed, you can use C++ to create code that runs on iOS and Android devices and platforms, Windows, Windows Store, and Xbox. diff --git a/docs/embedded/download-and-install-the-embedded-tooling.md b/docs/embedded/download-and-install-the-embedded-tooling.md index c59cbbdcc61..3e7d613e7ae 100644 --- a/docs/embedded/download-and-install-the-embedded-tooling.md +++ b/docs/embedded/download-and-install-the-embedded-tooling.md @@ -16,7 +16,7 @@ ms.topic: install-set-up-deploy In Visual Studio 2022 and later versions, you can use the Visual Studio IDE on Windows to edit and debug embedded projects. Use tools such as the [Peripheral View](./peripheral-view.md), [RTOS View](./rtos-view.md), and the [Serial Monitor](./serial-monitor.md) to help interact with and debug your embedded projects. > [!IMPORTANT] -> Starting with Visual Studio 2026 (version 18.0), the **Mobile development with C++** workload for iOS and Android targeting in the Visual Studio installer and the **Embedded and IoT tools**--including RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import--are no longer supported and will be removed in a future update. However, the Android NDKs listed in the Mobile development with C++ workload continue to be supported. +> Starting with Visual Studio 2026 (version 18.0), the Mobile development with C++ workload for iOS and Android, as well as the Embedded and IoT tools (RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import), are no longer supported and will be removed in a future update. The Android NDKs included in the Mobile development with C++ workload remain supported. To use the embedded development tools in Visual Studio, you must install the required **Linux and embedded development with C++** workload. diff --git a/docs/overview/visual-cpp-tools-and-features-in-visual-studio-editions.md b/docs/overview/visual-cpp-tools-and-features-in-visual-studio-editions.md index dcdea408105..05aadb31dd0 100644 --- a/docs/overview/visual-cpp-tools-and-features-in-visual-studio-editions.md +++ b/docs/overview/visual-cpp-tools-and-features-in-visual-studio-editions.md @@ -29,7 +29,7 @@ The following tables show C++ features that are available in Visual Studio 2017. - iOS > [!IMPORTANT] -> Starting with Visual Studio 2026 (version 18.0), the **Mobile development with C++** workload for iOS and Android targeting in the Visual Studio installer and the **Embedded and IoT tools**--including RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import--are no longer supported and will be removed in a future update. However, the Android NDKs listed in the Mobile development with C++ workload continue to be supported. +> Starting with Visual Studio 2026 (version 18.0), the Mobile development with C++ workload for iOS and Android, as well as the Embedded and IoT tools (RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import), are no longer supported and will be removed in a future update. The Android NDKs included in the Mobile development with C++ workload remain supported. ::: moniker-end @@ -260,7 +260,7 @@ Optional Components: ### Mobile development with C++ > [!IMPORTANT] -> Starting with Visual Studio 2026 (version 18.0), the **Mobile development with C++** workload for iOS and Android targeting in the Visual Studio installer and the **Embedded and IoT tools**--including RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import--are no longer supported and will be removed in a future update. However, the Android NDKs listed in the Mobile development with C++ workload continue to be supported. +> Starting with Visual Studio 2026 (version 18.0), the Mobile development with C++ workload for iOS and Android, as well as the Embedded and IoT tools (RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import), are no longer supported and will be removed in a future update. The Android NDKs included in the Mobile development with C++ workload remain supported. Included: diff --git a/docs/porting/introduction-to-visual-cpp-for-unix-users.md b/docs/porting/introduction-to-visual-cpp-for-unix-users.md index 84dd584cdcb..e70d60b5806 100644 --- a/docs/porting/introduction-to-visual-cpp-for-unix-users.md +++ b/docs/porting/introduction-to-visual-cpp-for-unix-users.md @@ -10,7 +10,7 @@ ms.topic: concept-article This topic provides information for users of all flavors of UNIX who are new to Visual Studio and want to become productive with C++ either from the command line or by using Visual Studio. You can use Visual Studio with the Microsoft C++ compiler to target Windows. You can also use the Visual Studio IDE with GCC or Clang in UNIX environments such as remote Linux machines, MinGW-w64, and Windows Subsystem for Linux. To use C++ in Visual Studio, the **Desktop Development with C++** workload must be installed. Open the Visual Studio Installer to install the workload or add or remove optional components. Also install the **Linux Development with C++** workload if you'll be targeting a remote Linux machine. For Android or iOS development, install the **Mobile Development with C++** workload. > [!IMPORTANT] -> Starting with Visual Studio 2026 (version 18.0), the **Mobile development with C++** workload for iOS and Android targeting in the Visual Studio installer and the **Embedded and IoT tools**--including RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import--are no longer supported and will be removed in a future update. However, the Android NDKs listed in the Mobile development with C++ workload continue to be supported. +> Starting with Visual Studio 2026 (version 18.0), the Mobile development with C++ workload for iOS and Android, as well as the Embedded and IoT tools (RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import), are no longer supported and will be removed in a future update. The Android NDKs included in the Mobile development with C++ workload remain supported. ## Getting started on the command line From 94ee44ecdb07de20dddc16735b6efee30ef782e1 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 7 Nov 2025 14:38:39 -0800 Subject: [PATCH 2086/2255] wording --- docs/overview/what-s-new-for-msvc.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md index f509fdb496b..50ab77113c1 100644 --- a/docs/overview/what-s-new-for-msvc.md +++ b/docs/overview/what-s-new-for-msvc.md @@ -1,7 +1,7 @@ --- title: "What's new for MSVC Build Tools" description: "The new features and fixes in the Microsoft C/C++ compiler and tools (MSVC)." -ms.date: 11/06/2025 +ms.date: 11/07/2025 ms.service: "visual-cpp" ms.subservice: "cpp-lang" ms.custom: intro-whats-new @@ -85,7 +85,7 @@ MSVC Build Tools version 14.50 preserves binary compatibility with code built wi The MSVC compiler switch [`/await`](/cpp/build/reference/await-enable-coroutine-support) is being deprecated and will be removed in a future release. This switch enabled an early draft implementation of C++ coroutines using the `` header. Developers should transition to standard C++ coroutines by using the `` header available in C++20 and later. For C++14/17 projects, use `/await:strict` (which isn't being deprecated) to access the standard `` header without enabling other C++20 features. -The mobile development and embedded and IoT development tools are no longer supported. The mobile development with C++ workload and Android NDK component in the Visual Studio installer are no longer supported and will be removed in a future Visual Studio update. This impacts tooling support for iOS and Android development, including new projects, building, and debugging. +The Mobile development with C++ workload for iOS and Android, as well as the Embedded and IoT tools (RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import), are no longer supported and will be removed in a future update. The Android NDKs included in the Mobile development with C++ workload remain supported. This impacts tooling support for iOS and Android development, including new projects, building, and debugging. **The following features have been removed and are no longer available:** From f57550697cfe236359891691ee833c1ee71fba49 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 7 Nov 2025 14:50:10 -0800 Subject: [PATCH 2087/2255] add links to stl cpp23 and 26 work --- docs/overview/visual-cpp-language-conformance.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/overview/visual-cpp-language-conformance.md b/docs/overview/visual-cpp-language-conformance.md index 301128b5ac5..a80c29ceb30 100644 --- a/docs/overview/visual-cpp-language-conformance.md +++ b/docs/overview/visual-cpp-language-conformance.md @@ -1,7 +1,7 @@ --- title: "Microsoft C/C++ language conformance" description: "Microsoft C and C++ conformance updates by Visual Studio version." -ms.date: 11/04/2025 +ms.date: 11/07/2025 ms.service: "visual-cpp" ms.subservice: "cpp-lang" --- @@ -222,7 +222,9 @@ For details on conformance improvements, see [C++ conformance improvements in Vi ## C++ Standard library features -A more detailed listing of Standard Library features and bug fixes by product version is available on the [GitHub Microsoft STL wiki Changelog](https://github.com/microsoft/STL/wiki/Changelog) page. +A more detailed listing of Standard Library features and bug fixes by product version is available on the [GitHub Microsoft STL wiki Changelog](https://github.com/microsoft/STL/wiki/Changelog) page.\ +For the latest details on ongoing C++23 Standard Library conformance work, see [STL C++23 Features](https://github.com/orgs/microsoft/projects/1142/views/2).\ +For the latest details on ongoing C++26 Standard Library conformance work, see [STL C++26 Features](https://github.com/orgs/microsoft/projects/1142/views/2). | Feature | Supported | |--|--| From afc38e63de34c8c0ea5e83555a20a79f6ea529e1 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 7 Nov 2025 15:01:47 -0800 Subject: [PATCH 2088/2255] typo --- docs/overview/visual-cpp-language-conformance.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/overview/visual-cpp-language-conformance.md b/docs/overview/visual-cpp-language-conformance.md index a80c29ceb30..de57a8dc128 100644 --- a/docs/overview/visual-cpp-language-conformance.md +++ b/docs/overview/visual-cpp-language-conformance.md @@ -222,9 +222,11 @@ For details on conformance improvements, see [C++ conformance improvements in Vi ## C++ Standard library features -A more detailed listing of Standard Library features and bug fixes by product version is available on the [GitHub Microsoft STL wiki Changelog](https://github.com/microsoft/STL/wiki/Changelog) page.\ -For the latest details on ongoing C++23 Standard Library conformance work, see [STL C++23 Features](https://github.com/orgs/microsoft/projects/1142/views/2).\ -For the latest details on ongoing C++26 Standard Library conformance work, see [STL C++26 Features](https://github.com/orgs/microsoft/projects/1142/views/2). +A more detailed listing of Standard Library features and bug fixes by product version is available on the [GitHub Microsoft STL wiki Changelog](https://github.com/microsoft/STL/wiki/Changelog) page. + +For the latest details about ongoing conformance work, see: +- [STL C++23 Features](https://github.com/orgs/microsoft/projects/1142/views/2). +- [STL C++26 Features](https://github.com/orgs/microsoft/projects/1143/views/2). | Feature | Supported | |--|--| From 8e911ff21c335e2a0138d1dd2082ef09d30bf057 Mon Sep 17 00:00:00 2001 From: Mahmoud Saleh <12202790+MahmoudGSaleh@users.noreply.github.com> Date: Fri, 7 Nov 2025 16:10:35 -0800 Subject: [PATCH 2089/2255] Address feedback review Feedback review --- docs/windows/latest-supported-vc-redist.md | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index 67d25d2f0f0..5465d47255a 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -36,33 +36,33 @@ To find the download you need, choose your version of Visual Studio from the tab Redistribution is permitted only for licensed Visual Studio users, as described in the [Visual Studio license terms](https://visualstudio.microsoft.com/license-terms/). For details on redistributing Visual C++ files, see [Redistributing Visual C++ Files](redistributing-visual-cpp-files.md). -A Visual C++ Redistributable installs Microsoft C and C++ runtime libraries. Many applications built using Microsoft C++ (MSVC) Build Tools require these libraries. If your app is built using those libraries, a Microsoft Visual C++ Redistributable package at least as recent as the build tools used to build your app must be installed on the target system along with the app. The Redistributable package architecture must match your app's target architecture (you can't install an ARM64 redistributable on an x86 system, or an x64 redistributable on an x86 system, for example). We recommend you use the latest Redistributable available for your version of Visual Studio. +A Visual C++ Redistributable installs Microsoft C and C++ runtime libraries. Many applications built using Microsoft C++ (MSVC) Build Tools require these libraries. If your app is built using those libraries, a Microsoft Visual C++ Redistributable package at least as recent as the build tools used to build your app must be installed on the target system along with the app. The Redistributable package architecture must match your app's target architecture (you can't install an ARM64 Redistributable on an x86 system, or an x64 Redistributable on an x86 system, for example). We recommend you use the latest Redistributable available for your version of Visual Studio. ## Visual C++ Redistributable v14 -This table lists the latest supported Microsoft Visual C++ Redistributable v14 packages. The latest supported version has the most recently implemented C++ features, security, reliability, and performance improvements. It also includes the latest C++ standard language and library standards conformance updates. We recommend that you install this version for all applications created using MSVC C and C++ build tools available in Visual Studio 2017, 2019, 2022, or 2026. +This table lists the latest supported Microsoft Visual C++ Redistributable v14 packages. The latest supported version has the most recently implemented C++ features, security, reliability, and performance improvements. It also includes the latest C++ standard language and library standards conformance updates. We recommend that you install this version for all applications created using MSVC C and C++ Build Tools available in Visual Studio 2017, 2019, 2022, or 2026. -Unlike older versions of Visual Studio that have infrequent redist updates, the version number isn't listed in the following table for Visual C++ redistributable v14 because the redist is updated frequently. To find the version number of the latest redist, download the redist you're interested in using one of the following links. Then, look at its properties using Windows File Explorer. In the **Details** pane, the **File version** contains the version of the redist. +Unlike older versions of Visual Studio that have infrequent redistributable updates, the version number isn't listed in the following table for the Visual C++ v14 Redistributable because it is updated frequently. To find the version number of the latest redistributable, download the one you're interested in using one of the following links. Then, look at its properties using Windows File Explorer. In the **Details** pane, the **File version** contains the version of the redistributable. ### Latest supported redistributable version | Architecture | Link | Notes | |--|--|--| -| ARM64 | [https://aka.ms/vs/18/release/vc_redist.arm64.exe](https://aka.ms/vs/18/release/vc_redist.arm64.exe) | Permalink for latest supported ARM64 version | -| X86 | [https://aka.ms/vs/18/release/vc_redist.x86.exe](https://aka.ms/vs/18/release/vc_redist.x86.exe) | Permalink for latest supported x86 version | -| X64 | [https://aka.ms/vs/18/release/vc_redist.x64.exe](https://aka.ms/vs/18/release/vc_redist.x64.exe) | Permalink for latest supported x64 version. The X64 Redistributable package contains both ARM64 and X64 binaries. This package makes it easy to install required Visual C++ ARM64 binaries when the X64 Redistributable is installed on an ARM64 device. | +| ARM64 | [https://aka.ms/vc14/release/vc_redist.arm64.exe](https://aka.ms/vc14/release/vc_redist.arm64.exe) | Permalink for latest supported ARM64 version | +| X86 | [https://aka.ms/vc14/release/vc_redist.x86.exe](https://aka.ms/vc14/release/vc_redist.x86.exe) | Permalink for latest supported x86 version | +| X64 | [https://aka.ms/vc14/release/vc_redist.x64.exe](https://aka.ms/vc14/release/vc_redist.x64.exe) | Permalink for latest supported x64 version. The X64 Redistributable package contains both ARM64 and X64 binaries. This package makes it easy to install required Visual C++ ARM64 binaries when the X64 Redistributable is installed on an ARM64 device. | Download other versions, including long term servicing release channel (LTSC) versions, from [my.visualstudio.com](https://my.visualstudio.com/). ### Notes -- The Visual C++ Redistributable v14 doesn't have separate packages for different languages. License terms for different languages are available at https://aka.ms/VCRedistLicense. - Some of the downloads that are mentioned in this article are currently available on [my.visualstudio.com](https://my.visualstudio.com/). Log in using a Visual Studio Subscription account so that you can access the download links. If you're asked for credentials, use your existing Visual Studio subscription account. Or, create a free account by choosing the [**No account? Create one!**](https://my.visualstudio.com/). -- Visual Studio versions since Visual Studio 2017 share the same Redistributable files. Any apps built by MSVC build tools v14.* available in Visual Studio 2017, 2019, 2022, or 2026 can use the latest Visual C++ Redistributable v14. However, the version of the Microsoft Visual C++ Redistributable installed on the machine must be the same or higher than the version of the Visual C++ toolset used to create your application. For more information about which version of the Redistributable to install, see [Determining which DLLs to redistribute](determining-which-dlls-to-redistribute.md). For more information about binary compatibility, see [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md). -- The latest version of the Visual C++ Redistributable v14 distributed with Visual Studio 2026 only supports the following operating systems: +- The Visual C++ v14 Redistributable doesn't have separate packages for different languages. License terms for different languages are available at [https://aka.ms/VCRedistLicense](https://aka.ms/VCRedistLicense). +- Visual Studio 2017 and later share the same Redistributable files. Any apps built by Microsoft C++ (MSVC) Build Tools v14.* available in Visual Studio 2017, 2019, 2022, or 2026 can use the latest Visual C++ v14 Redistributable. However, the version of the redistributable installed on the machine must be the same or higher than the version of the MSVC Build Tools used to create your application. For more information about which version of the Redistributable to install, see [Determining which DLLs to redistribute](determining-which-dlls-to-redistribute.md). For more information about binary compatibility, see [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md). +- The latest version of the Visual C++ v14 Redistributable included with Visual Studio 2026 only supports the following operating systems: * Windows 10 and 11 * Windows Server 2016, 2019, 2022, and 2025 -- Support for Visual Studio 2015 ended on October 15, 2025. Because support for the Visual C++ Redistributable is connected to the version of Visual Studio in which they first ship, support for Visual C++ Redistributable 2015 (version 14.0.24212) also ended October 15, 2025. See [Visual Studio 2015 (VC++ 14.0)](#visual-studio-2015-vc-140-no-longer-supported) section below for the latest available version. +- Support for Visual Studio 2015 ended on October 15, 2025. Because support for the Visual C++ Redistributable is connected to the version of Visual Studio in which it first ships, support for Visual C++ 2015 Redistributable (version 14.0.24212) also ended October 15, 2025. See [Visual Studio 2015 (VC++ 14.0)](#visual-studio-2015-vc-140-no-longer-supported) section below for the latest available version. - The Visual C++ Redistributable supports several command-line options. For more information, see [Command-line options for the Redistributable packages](./redistributing-visual-cpp-files.md#command-line-options-for-the-redistributable-packages). ## Unsupported legacy versions @@ -146,7 +146,6 @@ Download Redistributable files for other languages and architectures from: - [Visual Studio 2026 release notes](/visualstudio/releases/2026/release-notes) - [What's new for C++ in Visual Studio](../overview//what-s-new-for-visual-cpp-in-visual-studio.md) - [Visual C++ What's New 2003 through 2015](../porting/visual-cpp-what-s-new-2003-through-2015.md) -- [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/) - [Standard Template Library (STL) changelog](https://github.com/microsoft/STL/wiki/Changelog) - [A year of C++ improvements](https://devblogs.microsoft.com/cppblog/a-year-of-cpp-improvements-in-visual-studio-vs-code-and-vcpkg) - [Microsoft Visual C++ compiler versioning](../overview/compiler-versions.md) From 865289df3a20fabb594c9d939e510c1cbea14fdf Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Mon, 10 Nov 2025 13:45:42 -0800 Subject: [PATCH 2090/2255] incorp feedback --- docs/overview/visual-cpp-language-conformance.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/overview/visual-cpp-language-conformance.md b/docs/overview/visual-cpp-language-conformance.md index de57a8dc128..221c9e92868 100644 --- a/docs/overview/visual-cpp-language-conformance.md +++ b/docs/overview/visual-cpp-language-conformance.md @@ -1,7 +1,7 @@ --- title: "Microsoft C/C++ language conformance" description: "Microsoft C and C++ conformance updates by Visual Studio version." -ms.date: 11/07/2025 +ms.date: 11/10/2025 ms.service: "visual-cpp" ms.subservice: "cpp-lang" --- @@ -174,8 +174,8 @@ For details on conformance improvements, see [C++ conformance improvements in Vi |  [`P1073R3 Immediate functions`](https://wg21.link/P1073R3) | VS 2019 16.10 [20](#note_20) | |  [`P1143R2 constinit`](https://wg21.link/P1143R2) | VS 2019 16.10 [20](#note_20) | |  [`P1353R0 Missing feature-test macros`](https://wg21.link/P1353R0) | VS 2019 16.10 [20](#note_20) | -|  [`P0735R1 Interaction of memory_order_consume with release sequences`](https://wg21.link/P0735R1) | N/A | -|  [`P1236R1 Signed integers are two's complement`](https://wg21.link/P1236R1) | N/A | +|  [`P0735R1 Interaction of memory_order_consume with release sequences`](https://wg21.link/P0735R1) | VS 2022 v17.14 | +|  [`P1236R1 Signed integers are two's complement`](https://wg21.link/P1236R1) | VS 2022 v17.14 | | **C++23 Core language features** | **Supported** | |  [`P0330R8 Literal Suffix for (signed) size_t`](https://wg21.link/p0330r8) | VS 2022 17.13 [23](#note_23) | |  [`P0847R7 Deducing this`](https://wg21.link/p0847r7) | VS 2022 17.13 [23](#note_23) | @@ -207,13 +207,13 @@ For details on conformance improvements, see [C++ conformance improvements in Vi |  [`P2314R4 Character sets and encodings`](https://wg21.link/p2314r4) | no | |  [`P2316R2 Consistent character literal encoding`](https://wg21.link/p2316r2) | VS 2022 17.0 [23](#note_23) | |  [`P2324R2 Labels at the end of compound statements (C compatibility)`](https://wg21.link/p2324r2) | no | -|  [`P2327R1 De-deprecating volatile compound operations`](https://wg21.link/p2327r1) | N/A | +|  [`P2327R1 De-deprecating volatile compound operations`](https://wg21.link/p2327r1) | VS 2022 v17.14 | |  [`P2334R1 preprocessing directives elifdef and elifndef`](https://wg21.link/p2334r1) | VS 2022 17.10 [23](#note_23) | |  [`P2360R0 Extend init-statement to allow alias-declaration`](https://wg21.link/p2360r0) | MSVC Build Tools version 14.50 [24](#note_24) | |  [`P2362R3 Remove non-encodable wide character literals and multicharacter wide character literals`](https://wg21.link/p2362r3) | no | |  [`P2437R1 Support for #warning`](https://wg21.link/p2437r1) | MSVC Build Tools version 14.50 [24](#note_24) | |  [`P2448R2 Relaxing some constexpr restrictions`](https://wg21.link/p2448r2) | no | -|  [`P2460R2 Relax requirements on wchar_t to match existing practices`](https://wg21.link/p2460r2) | N/A | +|  [`P2460R2 Relax requirements on wchar_t to match existing practices`](https://wg21.link/p2460r2) | VS 2022 v17.14 | |  [`P2468R2 The Equality Operator You Are Looking For`](https://wg21.link/p2468r2) | VS 2022 17.6 [23](#note_23) | |  [`P2493R0 Missing feature test macros for C++20 core papers`](https://wg21.link/p2493r0) | MSVC Build Tools version 14.50 [24](#note_24) | |  [`P2513R4 char8_t Compatibility and Portability Fix`](https://wg21.link/p2513r4) | VS 2022 17.4 [DR](#note_DR) | @@ -442,7 +442,7 @@ For the latest details about ongoing conformance work, see: |  [`P1208R6 `](https://wg21.link/P1208R6) | VS 2019 16.10 [20](#note_20) | |  [`P1502R1 Standard Library Header Units`](https://wg21.link/P1502R1) | VS 2019 16.10 [20](#note_20) | |  [`P1614R2 Adding Spaceship <=> To The Library`](https://wg21.link/P1614R2) | VS 2019 16.10 [20](#note_20) | -|  [`P1285R0 Improving Completeness Requirements For Type Traits`](https://wg21.link/P1285R0) | N/A | +|  [`P1285R0 Improving Completeness Requirements For Type Traits`](https://wg21.link/P1285R0) | VS 2022 v17.14 | | **C++20 Standard library features (Defect reports)** | **Supported** | |  [`P2325R3 Views Should Not Be Required To Be Default Constructible`](https://wg21.link/P2325r3) | VS 2022 17.0 [20abi](#note_20abi) | |  [`P2328R1 join_view should join all views of ranges`](https://wg21.link/P2328R1) | VS 2022 17.0 [20abi](#note_20abi) | From b16c31e9305def473565ac01478a1a87b2bdb066 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Mon, 10 Nov 2025 14:58:28 -0800 Subject: [PATCH 2091/2255] edits --- docs/overview/what-s-new-for-msvc.md | 55 ++++++++++++++-------------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md index 50ab77113c1..5a347d2c568 100644 --- a/docs/overview/what-s-new-for-msvc.md +++ b/docs/overview/what-s-new-for-msvc.md @@ -1,7 +1,7 @@ --- title: "What's new for MSVC Build Tools" description: "The new features and fixes in the Microsoft C/C++ compiler and tools (MSVC)." -ms.date: 11/07/2025 +ms.date: 11/10/2025 ms.service: "visual-cpp" ms.subservice: "cpp-lang" ms.custom: intro-whats-new @@ -11,13 +11,13 @@ ms.custom: intro-whats-new Version 14.50 brings many updates and fixes to the Microsoft C++ compiler and other build tools. -- For more information on what's new in all of Visual Studio, see [What's new in Visual Studio](/visualstudio/ide/whats-new-visual-studio). +- For more information about what's new in all of Visual Studio, see [What's new in Visual Studio](/visualstudio/ide/whats-new-visual-studio). ## What's new for MSVC Build Tools version 14.50 * Introduced in Visual Studio 2026 version 18.0 released November 2025. -Visual Studio 2026 version 18.0 ships with the v145 platform toolset for MSBuild C++ projects and Microsoft C++ (MSVC) Build Tools version 14.50, which offers the best conformance, build performance, and runtime performance story yet. To access to all the new language features, build with `/std:c++latest`, or use `/std:c++23preview` if you want to be restricted to features up to C++23. +Visual Studio 2026 version 18.0 ships with the v145 platform toolset for MSBuild C++ projects and Microsoft C++ (MSVC) Build Tools version 14.50, which offers the best conformance, build performance, and runtime performance story yet. To access all the new language features, build with `/std:c++latest`. Or, if you want to be restricted to features up to C++23, use `/std:c++23preview`. MSVC Build Tools version 14.50 preserves binary compatibility with code built with MSVC tools shipped in Visual Studio 2015 or later. For more information about binary compatibility, see [C++ binary compatibility between Visual Studio versions](/cpp/porting/binary-compat-2015-2017). @@ -28,51 +28,52 @@ MSVC Build Tools version 14.50 preserves binary compatibility with code built wi | C++ language updates | [C++ Language Updates in MSVC Build Tools v14.50](https://devblogs.microsoft.com/cppblog/c-language-updates-in-msvc-build-tools-v14-50/) | | C++ language conformance improvements | [C/C++ Conformance improvements, behavior changes, and bug fixes in Microsoft C++ (MSVC) Build Tools](msvc-conformance-improvements.md) | -**A quick highlight of some of the new features in MSVC Build Tools version 14.50 and Visual Studio 2026 version 18.0:** +Here's a quick highlight of some of the new features in MSVC Build Tools version 14.50 and Visual Studio 2026 version 18.0: -**C++ language enhancements** +### C++ language enhancements - C++20 is the default for new Console App, Windows Desktop Application, Dynamic-Link Library, and Static Library C++ projects. -- C++23 preprocessing directive `#warning` allows you to generate a diagnostic message without stopping translation like `#error` does. For more information, see [`#warning` directive](/cpp/preprocessor/hash-warning-directive-c-cpp). -- Easily set debugger command line arguments for any C++ project using the toolbar for `.vcxproj`, CMake, and Unreal Engine projects. This feature is no longer tied to the Game Development with C++ workload, and is available to all C++ developers without installing any other workloads or components. For more information, see [Pass command-line arguments](/visualstudio/debugger/getting-started-with-the-debugger-cpp?view=visualstudio&preserve-view=true). +- C++23 preprocessing directive `#warning` allows you to generate a diagnostic message without stopping translation as `#error` does. For more information, see [`#warning` directive](/cpp/preprocessor/hash-warning-directive-c-cpp). +- Easily set debugger command-line arguments for any C++ project using the toolbar for `.vcxproj`, CMake, and Unreal Engine projects. This feature is no longer tied to the Game Development with C++ workload, and is available to all C++ developers without installing any other workloads or components. For more information, see [Pass command-line arguments](/visualstudio/debugger/getting-started-with-the-debugger-cpp?view=visualstudio&preserve-view=true). -**Standard Library enhancements** +### Standard Library enhancements -- `` addressed several issues, enhancing both reliability and speed. [LWG-2503](https://cplusplus.github.io/LWG/issue2503) added a multiline option to `syntax_option_type`. This is a `regex` behavioral change. By default, `_REGEX_LEGACY_MULTILINE_MODE` is 0, which requests Standard behavior. Set `_REGEX_LEGACY_MULTILINE_MODE` to 1 to request legacy behavior. For more information, see [STL Changelog](https://github.com/microsoft/STL/wiki/Changelog#msvc-build-tools-1450). +- Enhanced `` reliability and speed. [LWG-2503](https://cplusplus.github.io/LWG/issue2503) added a multiline option to `syntax_option_type`. This is a `regex` behavioral change. By default, `_REGEX_LEGACY_MULTILINE_MODE` is 0, which requests Standard behavior. Set `_REGEX_LEGACY_MULTILINE_MODE` to 1 to request legacy behavior. For more information, see [STL Changelog](https://github.com/microsoft/STL/wiki/Changelog#msvc-build-tools-1450). - Added and improved vectorized implementations of many types and functions. -**GitHub Copilot enhancements** +### GitHub Copilot enhancements - Copilot Chat allows you to use natural language to get answers to questions (Ask mode) or even implement changes for you automatically (Agent Mode). - Copilot Chat is smarter with improved context for everyday tasks. Expect better results when searching your codebase and referencing specific lines in your code. -- A **Copilot Actions** option was added to the right-click context menu in the Visual Studio editor. Use it to quickly bring a specific file or lines of code you select to the attention of Copilot Chat. You can then ask Copilot to explain what the code does, make optimizations, generate comments, unit tests, and so on. +- A **Copilot Actions** option was added to the right-click context menu in the Visual Studio editor. Use it to quickly bring a specific file or lines of code you select to the attention of Copilot Chat. You can then ask Copilot to explain what the code does, make optimizations, generate comments, generate unit tests, and more. - Better AI code completions for C++. GitHub Copilot uses context from relevant files to improve inline autocomplete for C++. GitHub Copilot includes other relevant files as context which reduces hallucinations while offering more relevant and accurate suggestions. -- Read about [New GitHub Copilot capabilities for C++ developers: Upgrade MSVC, improve build performance, and refactor C++ code](https://devblogs.microsoft.com/cppblog/new-github-copilot-capabilities-for-c-developers-upgrade-msvc-improve-build-performance-and-refactor-c-code/). +- For more information, see [New GitHub Copilot capabilities for C++ developers: Upgrade MSVC, improve build performance, and refactor C++ code](https://devblogs.microsoft.com/cppblog/new-github-copilot-capabilities-for-c-developers-upgrade-msvc-improve-build-performance-and-refactor-c-code/). -**Build enhancements** +### Build enhancements -- Visual Studio 2026 now includes CMake 4.1.1 by default. CMake also includes a Visual Studio 2026 generator and modern SLNX projects, so you can build Visual Studio C++ projects directly from CMake. +- Visual Studio 2026 now includes CMake 4.1.1 by default. CMake also includes a Visual Studio 2026 generator and supports modern SLNX projects, so you can build Visual Studio C++ projects directly from CMake. - Includes the latest version of the IncrediBuild engine and an updated extension that works with Visual Studio 2026 version 18.0. -- Compiler backend runtime performance improvements. Compared to Visual Studio version 17.14, up to 6% improvement on Unreal Engine's City Sample RenderThread and up to +3% improvements on Unreal Engine's City Sample GameThread benchmark. For more information, see [Why you should upgrade your C++ build tools](https://devblogs.microsoft.com/cppblog/upgrading-c-projects-to-visual-studio-2026/#why-you-should-upgrade-your-c++-build-tools). -- The Visual Studio setup assistant can help you retarget your projects, so they build with the latest MSVC Build Tools. For more information, see [Retarget your projects with the setup assistant](https://devblogs.microsoft.com/cppblog/upgrading-c-projects-to-visual-studio-2026/#retarget-your-projects-with-the-setup-assistant). +- Compiler backend runtime performance improvements. Compared to Visual Studio version 17.14, there's up to a 6% improvement on Unreal Engine's City Sample RenderThread and up to +3% improvements on Unreal Engine's City Sample GameThread benchmark. For more information, see [Why you should upgrade your C++ build tools](https://devblogs.microsoft.com/cppblog/upgrading-c-projects-to-visual-studio-2026/#why-you-should-upgrade-your-c++-build-tools). +- The Visual Studio setup assistant can help you retarget your projects to build with the latest MSVC Build Tools. For more information, see [Retarget your projects with the setup assistant](https://devblogs.microsoft.com/cppblog/upgrading-c-projects-to-visual-studio-2026/#retarget-your-projects-with-the-setup-assistant). -**Code analysis enhancements** +### Code analysis enhancements -- Clang-Tidy code analysis improvements provide enhanced configuration options for faster builds and custom workflows. - - Code analysis has new configuration options: You can now allocate more processors to run code analysis as part of your build, speeding up your development workflow. Plus, you can add custom arguments to the command line used to invoke `clang-tidy`, giving you complete control over your analysis setup. +- Clang-Tidy code analysis improvements provide enhanced configuration options for faster builds and custom workflows: + - Code analysis has new configuration options. You can now allocate more processors to run code analysis as part of your build, speeding up your development workflow. + - You can add custom arguments to the command line used to invoke `clang-tidy`, giving you complete control over your analysis setup. - Access the new options from **Project Properties** > **Code Analysis** > **Clang-Tidy**: ![Screenshot of Project Properties dialog showing clang-tidy configuration options including processor allocation and custom command line arguments](./media/clang-tidy-improvements.png). - AddressSanitizer support for ARM64 Builds (Preview): For some time, the MSVC Build Tools have supported building projects that target x64 and x86 with [AddressSanitizer](/cpp/sanitizers/asan), which allows you to identify hard-to-find memory safety issues with zero false positives at runtime and increase memory safety. Now you can use AddressSanitizer to target ARM64. This feature is in preview. -**Productivity enhancements** +### Productivity enhancements -- Generate preprocessed output for any C++ file. In Visual Studio, right-click a C++ file to instantly generate its preprocessed output, making it easy to debug macros and includes, and see errors immediately. ![Screenshot showing the right-click context menu for a C++ file with the Preprocess option highlighted.](./media/cpp-preprocess-menu-entry.png) -- Inline post-return values: The Visual Studio debugger now shows the actual return values of functions. This provides real-time visibility into function behavior without stepping into code or setting up watches, making it faster to catch logic issues or unexpected results. ![Screenshot showing inline post-return values displayed in the debugger next to function call."](./media/inline-post-return-value.png) +- Generate preprocessed output for a C++ file. In Visual Studio, right-click a C++ file to instantly generate its preprocessed output, making it easy to debug macros and includes, and see errors immediately: ![Screenshot showing the right-click context menu for a C++ file with the Preprocess option highlighted.](./media/cpp-preprocess-menu-entry.png) +- The Visual Studio debugger now shows the return values of functions inline. This provides real-time visibility into function behavior without stepping into code or setting up watches, making it faster to catch logic issues or unexpected results: ![Screenshot showing inline post-return values displayed in the debugger next to function call."](./media/inline-post-return-value.png) -**Other** +### Other changes -- In the Visual Studio installer, the C++ Linux workload is renamed to "Linux, Mac, and embedded development with C++". +- In the Visual Studio installer, the *C++ Linux* workload is renamed *Linux, Mac, and embedded development with C++*. -**Deprecations** +### Deprecations - The minimum supported target operating systems for the MSVC Build Tools version 14.50 are Windows 10 or Windows Server 2016. - MSVC Build Tools version 14.50 no longer targets: @@ -83,11 +84,11 @@ MSVC Build Tools version 14.50 preserves binary compatibility with code built wi These changes allow for better performance, enhanced security, and alignment with the most recent Windows platform capabilities. -The MSVC compiler switch [`/await`](/cpp/build/reference/await-enable-coroutine-support) is being deprecated and will be removed in a future release. This switch enabled an early draft implementation of C++ coroutines using the `` header. Developers should transition to standard C++ coroutines by using the `` header available in C++20 and later. For C++14/17 projects, use `/await:strict` (which isn't being deprecated) to access the standard `` header without enabling other C++20 features. +The MSVC compiler switch [`/await`](/cpp/build/reference/await-enable-coroutine-support) is deprecated and will be removed in a future release. This switch enabled an early draft implementation of C++ coroutines using the `` header. Developers should transition to standard C++ coroutines by using the `` header available in C++20 and later. For C++14/17 projects, use `/await:strict` (which isn't being deprecated) to access the standard `` header without enabling other C++20 features. The Mobile development with C++ workload for iOS and Android, as well as the Embedded and IoT tools (RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import), are no longer supported and will be removed in a future update. The Android NDKs included in the Mobile development with C++ workload remain supported. This impacts tooling support for iOS and Android development, including new projects, building, and debugging. -**The following features have been removed and are no longer available:** +### Removed features - C++AMP - ARM32 toolchain: if you still need to build for ARM32, use an older version of the MSVC Build Tools. For more information, see [Side-by-side Minor Version MSVC Toolsets in Visual Studio 2019](https://devblogs.microsoft.com/cppblog/side-by-side-minor-version-msvc-toolsets-in-visual-studio-2019/). From f0809491d53ee1ab5a40d7ee1d70719d39496c8c Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Mon, 10 Nov 2025 15:15:04 -0800 Subject: [PATCH 2092/2255] edits --- docs/overview/visual-cpp-language-conformance.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/overview/visual-cpp-language-conformance.md b/docs/overview/visual-cpp-language-conformance.md index 221c9e92868..ed623aaf45c 100644 --- a/docs/overview/visual-cpp-language-conformance.md +++ b/docs/overview/visual-cpp-language-conformance.md @@ -196,7 +196,7 @@ For details on conformance improvements, see [C++ conformance improvements in Vi |  [`P2156R1 Allow Duplicate Attributes`](https://wg21.link/p2156r1) | MSVC Build Tools version 14.50 [24](#note_24) | |  [`P2173R1 Attributes on Lambda-Expressions`](https://wg21.link/p2173r1) | VS 2022 17.14 [23](#note_23) | |  [`P2186R2 Remove Garbage Collection Support`](https://wg21.link/p2186r2) | VS 2022 17.0 [23](#note_23) | -|  [`P2201R1 Mixed string literal concatenation`](https://wg21.link/p2201r1) | No change required | +|  [`P2201R1 Mixed string literal concatenation`](https://wg21.link/p2201r1) | VS 2022 17.14 | |  [`P2223R2 Trimming whitespaces before line splicing`](https://wg21.link/p2223r2) | MSVC Build Tools version 14.50 [24](#note_24) | |  [`P2242R3 Non-literal variables (and labels and gotos) in constexpr functions`](https://wg21.link/p2242r3) | VS 2022 17.14 [23](#note_23) | |  [`P2246R1 Character encoding of diagnostic text`](https://wg21.link/p2246r1) | VS 2022 17.0 [23](#note_23) | @@ -224,7 +224,7 @@ For details on conformance improvements, see [C++ conformance improvements in Vi A more detailed listing of Standard Library features and bug fixes by product version is available on the [GitHub Microsoft STL wiki Changelog](https://github.com/microsoft/STL/wiki/Changelog) page. -For the latest details about ongoing conformance work, see: +For the latest information about ongoing conformance work, see: - [STL C++23 Features](https://github.com/orgs/microsoft/projects/1142/views/2). - [STL C++26 Features](https://github.com/orgs/microsoft/projects/1143/views/2). @@ -640,7 +640,7 @@ These algorithms aren't presently parallelized:
**T** `` is currently supported when compiled as C++ (`/std:c++latest`). It isn't yet supported when compiled as C (`/std:c11` and `/std:c17`) - **U** Extended floating-point types are an optional C++23 feature. MSVC doesn't plan to support this feature before the completion of C++23 standardization. + **U** Extended floating-point types are an optional C++23 feature. This feature won't be implemented until C++23 standardization is finalized. **V** Use the compiler options `/source-charset:utf-8` and `/we4828` to treat source files as UTF-8 encoded. From 147b67b7a1c7023b36e617e55affa61935159eda Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 10 Nov 2025 15:22:31 -0800 Subject: [PATCH 2093/2255] Fix duplicate entry for Warning C26864 in toc.yml --- docs/code-quality/toc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/code-quality/toc.yml b/docs/code-quality/toc.yml index 477bb054caa..948d04dcb78 100644 --- a/docs/code-quality/toc.yml +++ b/docs/code-quality/toc.yml @@ -661,7 +661,7 @@ items: href: ../code-quality/c26863.md - name: Warning C26864 href: ../code-quality/c26864.md - - name: Warning C26864 + - name: Warning C26865 href: ../code-quality/c26865.md - name: Warning C28020 href: ../code-quality/c28020.md From 61c95ca870b5328b612a87f34e32f29d92f46973 Mon Sep 17 00:00:00 2001 From: James Barnett Date: Mon, 10 Nov 2025 17:00:41 -0700 Subject: [PATCH 2094/2255] Update what-s-new-for-msvc.md --- docs/overview/what-s-new-for-msvc.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md index 5a347d2c568..8a8844fac47 100644 --- a/docs/overview/what-s-new-for-msvc.md +++ b/docs/overview/what-s-new-for-msvc.md @@ -61,7 +61,9 @@ Here's a quick highlight of some of the new features in MSVC Build Tools version - Clang-Tidy code analysis improvements provide enhanced configuration options for faster builds and custom workflows: - Code analysis has new configuration options. You can now allocate more processors to run code analysis as part of your build, speeding up your development workflow. - You can add custom arguments to the command line used to invoke `clang-tidy`, giving you complete control over your analysis setup. - - Access the new options from **Project Properties** > **Code Analysis** > **Clang-Tidy**: ![Screenshot of Project Properties dialog showing clang-tidy configuration options including processor allocation and custom command line arguments](./media/clang-tidy-improvements.png). + - Access the new options from **Project Properties** > **Code Analysis** > **Clang-Tidy**: + +![Screenshot of Project Properties dialog showing clang-tidy configuration options including processor allocation and custom command line arguments](./media/clang-tidy-improvements.png) - AddressSanitizer support for ARM64 Builds (Preview): For some time, the MSVC Build Tools have supported building projects that target x64 and x86 with [AddressSanitizer](/cpp/sanitizers/asan), which allows you to identify hard-to-find memory safety issues with zero false positives at runtime and increase memory safety. Now you can use AddressSanitizer to target ARM64. This feature is in preview. ### Productivity enhancements @@ -100,4 +102,4 @@ We'd love to hear from you! You can [Report a Problem or Suggest a Feature](/vis ## Blogs -Take advantage of the insights and recommendations available in the [Microsoft Developer Blogs](https://devblogs.microsoft.com/) site to stay up to date on all new releases. The blogs include deep dive posts on a broad range of features. The [C++ Team Blog](https://devblogs.microsoft.com/cppblog) and the [Visual Studio Blog](https://devblogs.microsoft.com/visualstudio) are of particular interest. \ No newline at end of file +Take advantage of the insights and recommendations available in the [Microsoft Developer Blogs](https://devblogs.microsoft.com/) site to stay up to date on all new releases. The blogs include deep dive posts on a broad range of features. The [C++ Team Blog](https://devblogs.microsoft.com/cppblog) and the [Visual Studio Blog](https://devblogs.microsoft.com/visualstudio) are of particular interest. From f26307549cb61764515ee971f6ec1af5f85becfd Mon Sep 17 00:00:00 2001 From: Paul Chapman Date: Tue, 11 Nov 2025 09:18:48 -0800 Subject: [PATCH 2095/2255] Update links for VC++ redistributable packages (#6145) Fixed evergreen links to the latest redist --- docs/windows/latest-supported-vc-redist.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index 5465d47255a..e6d58668abf 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -48,9 +48,9 @@ Unlike older versions of Visual Studio that have infrequent redistributable upda | Architecture | Link | Notes | |--|--|--| -| ARM64 | [https://aka.ms/vc14/release/vc_redist.arm64.exe](https://aka.ms/vc14/release/vc_redist.arm64.exe) | Permalink for latest supported ARM64 version | -| X86 | [https://aka.ms/vc14/release/vc_redist.x86.exe](https://aka.ms/vc14/release/vc_redist.x86.exe) | Permalink for latest supported x86 version | -| X64 | [https://aka.ms/vc14/release/vc_redist.x64.exe](https://aka.ms/vc14/release/vc_redist.x64.exe) | Permalink for latest supported x64 version. The X64 Redistributable package contains both ARM64 and X64 binaries. This package makes it easy to install required Visual C++ ARM64 binaries when the X64 Redistributable is installed on an ARM64 device. | +| ARM64 | [https://aka.ms/vc14/vc_redist.arm64.exe](https://aka.ms/vc14/vc_redist.arm64.exe) | Permalink for latest supported ARM64 version | +| X86 | [https://aka.ms/vc14/vc_redist.x86.exe](https://aka.ms/vc14/vc_redist.x86.exe) | Permalink for latest supported x86 version | +| X64 | [https://aka.ms/vc14/vc_redist.x64.exe](https://aka.ms/vc14/vc_redist.x64.exe) | Permalink for latest supported x64 version. The X64 Redistributable package contains both ARM64 and X64 binaries. This package makes it easy to install required Visual C++ ARM64 binaries when the X64 Redistributable is installed on an ARM64 device. | Download other versions, including long term servicing release channel (LTSC) versions, from [my.visualstudio.com](https://my.visualstudio.com/). From b520eb9fda994454fa5a55cc99597e64929e41cd Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 11 Nov 2025 12:59:30 -0800 Subject: [PATCH 2096/2255] fix link --- docs/overview/what-s-new-for-msvc.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md index 8a8844fac47..e9563fdf67e 100644 --- a/docs/overview/what-s-new-for-msvc.md +++ b/docs/overview/what-s-new-for-msvc.md @@ -1,7 +1,7 @@ --- title: "What's new for MSVC Build Tools" description: "The new features and fixes in the Microsoft C/C++ compiler and tools (MSVC)." -ms.date: 11/10/2025 +ms.date: 11/11/2025 ms.service: "visual-cpp" ms.subservice: "cpp-lang" ms.custom: intro-whats-new @@ -11,7 +11,7 @@ ms.custom: intro-whats-new Version 14.50 brings many updates and fixes to the Microsoft C++ compiler and other build tools. -- For more information about what's new in all of Visual Studio, see [What's new in Visual Studio](/visualstudio/ide/whats-new-visual-studio). +- For more information about what's new in all of Visual Studio, see [Visual Studio 2026 release notes](/visualstudio/releases/2026/release-notes). ## What's new for MSVC Build Tools version 14.50 From 27114572131de0eb93bebdafea2968444df8d1c6 Mon Sep 17 00:00:00 2001 From: Pat Altimore <17440249+PatAltimore@users.noreply.github.com> Date: Wed, 12 Nov 2025 12:50:33 -0800 Subject: [PATCH 2097/2255] Remove Azure Storage Client library --- docs/cloud/cloud-and-web-programming-in-visual-cpp.md | 10 ---------- docs/data/data-access-in-cpp.md | 4 ++-- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/docs/cloud/cloud-and-web-programming-in-visual-cpp.md b/docs/cloud/cloud-and-web-programming-in-visual-cpp.md index fd87a91b844..d02d3a11cda 100644 --- a/docs/cloud/cloud-and-web-programming-in-visual-cpp.md +++ b/docs/cloud/cloud-and-web-programming-in-visual-cpp.md @@ -24,16 +24,6 @@ In C++, you have several options for connecting to the web and the cloud. To get started, see [Install and integrate from the Azure SDK for C++](/azure/developer/cpp/sdk/install-and-integrate-the-sdk/). -- [Microsoft Azure Storage Client Library for C++](https://azure.github.io/azure-storage-cpp/) - - The Azure Storage Client Library for C++ provides a comprehensive API for working with Azure storage, including but not limited to the following abilities: - - - Create, read, delete, and list blob containers, tables, and queues. - - Create, read, delete, list, and copy blobs plus read and write blob ranges. - - Insert, delete, replace, merge, and query entities in an Azure table. - - Enqueue and dequeue messages in an Azure queue. - - Lazily list containers, blobs, tables, and queues, and lazily query entities - - The ANSI C99 [Azure IoT Hub SDKs](/azure/iot-hub/iot-hub-devguide-sdks) for Internet of Things enable IoT applications to run on the device or on the backend. - [OneDrive and SharePoint in Microsoft Graph](https://dev.onedrive.com/README.htm) diff --git a/docs/data/data-access-in-cpp.md b/docs/data/data-access-in-cpp.md index 30bf4163522..cad81a78284 100644 --- a/docs/data/data-access-in-cpp.md +++ b/docs/data/data-access-in-cpp.md @@ -27,8 +27,8 @@ A mostly legacy interface which is still required in some scenarios, specificall [Connect to SQL Database using C and C++](/azure/sql-database/sql-database-develop-cplusplus-simple)
Connect to Azure SQL Database from C or C++ applications. -[Microsoft Azure Storage Client Library for C++](https://github.com/Azure/azure-storage-cpp)
-[Azure Storage](/azure/storage/common/storage-introduction) is a cloud storage solution for modern applications that rely on durability, availability, and scalability to meet the needs of their customers. Connect to Azure Storage from C++ by using the Azure Storage Client Library for C++. +[Azure SDK for C++](/azure/developer/cpp/sdk/overview)
+[Azure Storage](/azure/storage/common/storage-introduction) is a cloud storage solution for modern applications that rely on durability, availability, and scalability to meet the needs of their customers. Connect to Azure Storage from C++ by using the Azure SDK for C++. [ODBC Driver for SQL Server](/sql/connect/odbc/microsoft-odbc-driver-for-sql-server)
The latest ODBC driver provides robust data access to Microsoft SQL Server and Microsoft Azure SQL Database for C/C++ based applications. Provides support for features including always encrypted, Azure Active Directory, and AlwaysOn Availability Groups. Also available for macOS and Linux. From a16edc8bbc6db7f1817d4cec41be7b2673c285ad Mon Sep 17 00:00:00 2001 From: Pat Altimore <17440249+PatAltimore@users.noreply.github.com> Date: Wed, 12 Nov 2025 13:29:29 -0800 Subject: [PATCH 2098/2255] Fix branding --- docs/cloud/cloud-and-web-programming-in-visual-cpp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cloud/cloud-and-web-programming-in-visual-cpp.md b/docs/cloud/cloud-and-web-programming-in-visual-cpp.md index d02d3a11cda..3259d2638e5 100644 --- a/docs/cloud/cloud-and-web-programming-in-visual-cpp.md +++ b/docs/cloud/cloud-and-web-programming-in-visual-cpp.md @@ -1,6 +1,6 @@ --- title: "Cloud and Web Programming in Microsoft C++" -description: "Learn more about: Cloud and Web Programming in Visual C++" +description: "Learn more about: Cloud and Web Programming in Microsoft C++" ms.date: "11/06/2025" ms.topic: "overview" ms.custom: intro-overview From e92475f74ce7d63ccf1f1be1b6b0abf3156f74bf Mon Sep 17 00:00:00 2001 From: Diana Richards Date: Wed, 12 Nov 2025 16:25:31 -0600 Subject: [PATCH 2099/2255] raising acrolinx Corrected a typographical error in the OLE DB Programming section. --- docs/data/data-access-in-cpp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/data/data-access-in-cpp.md b/docs/data/data-access-in-cpp.md index cad81a78284..f9f8add32c0 100644 --- a/docs/data/data-access-in-cpp.md +++ b/docs/data/data-access-in-cpp.md @@ -20,7 +20,7 @@ Describes legacy data access programming with Visual C++, where the preferred wa The Microsoft Foundation Classes (MFC) library supplies classes for programming with Open Database Connectivity (ODBC). [OLE DB Programming](oledb/ole-db-programming.md)
-A mostly legacy interface which is still required in some scenarios, specifically when you are programming against linked servers. +A mostly legacy interface which is still required in some scenarios, specifically when you're programming against linked servers. ## Related Topics From 8a98c39c2c5e7937cbedf2097a1af5a0e8d79402 Mon Sep 17 00:00:00 2001 From: Bzychkin Egor Date: Thu, 13 Nov 2025 21:49:57 +0300 Subject: [PATCH 2100/2255] Clarify random_device usage in test function Updated comments in the test function to clarify the use of random_device. --- docs/standard-library/normal-distribution-class.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard-library/normal-distribution-class.md b/docs/standard-library/normal-distribution-class.md index db8ba64c3be..e9e4be15c45 100644 --- a/docs/standard-library/normal-distribution-class.md +++ b/docs/standard-library/normal-distribution-class.md @@ -83,7 +83,7 @@ using namespace std; void test(const double m, const double s, const int samples) { // uncomment to use a non-deterministic seed - // random_device gen; + // random_device rd; // mt19937 gen(rd()); mt19937 gen(1701); From 08c9a393b79d58ac83e4d2512afdbb3ca9508d3d Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 13 Nov 2025 16:24:04 -0800 Subject: [PATCH 2101/2255] note local::empty deprecated --- docs/standard-library/locale-class.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/standard-library/locale-class.md b/docs/standard-library/locale-class.md index b627b01ac3b..96b2151a0f3 100644 --- a/docs/standard-library/locale-class.md +++ b/docs/standard-library/locale-class.md @@ -1,10 +1,9 @@ --- description: "Learn more about: locale Class" title: "locale Class" -ms.date: 06/15/2022 +ms.date: 11/13/2025 f1_keywords: ["xlocale/std::locale", "xlocale/std::locale::category", "xlocale/std::locale::combine", "xlocale/std::locale::name", "xlocale/std::locale::classic", "xlocale/std::locale::global", "xlocale/std::locale::operator( )", "xlocale/std::locale::facet", "xlocale/std::locale::id"] helpviewer_keywords: ["std::locale [C++]", "std::locale [C++], category", "std::locale [C++], combine", "std::locale [C++], name", "std::locale [C++], classic", "std::locale [C++], global", "std::locale [C++], facet", "std::locale [C++], id"] -ms.assetid: 7dd6d271-472d-4750-8fb5-ea8f55fbef62 ms.custom: devdivchpfy22 --- @@ -92,15 +91,16 @@ messages Some of these predefined facets are used by the `iostream` classes, to control the conversion of numeric values to and from text sequences. -An object of class locale also stores a locale name as an object of class [string](../standard-library/string-typedefs.md#string). Using an invalid locale name to construct a locale facet or a locale object throws an object of class [runtime_error](../standard-library/runtime-error-class.md). The stored locale name is `"*"` if the locale object can't be certain that a C-style locale corresponds exactly to the one represented by the object. Otherwise, you can establish a matching locale within the Standard C Library, for some locale object `locale_object`, by calling `setlocale(LC_ALL , locale_object.`[name](#name)`().c_str())`. - -In this implementation, you can also call the static member function: +An object of class `locale` also stores a locale name as an object of class [string](../standard-library/string-typedefs.md#string). Using an invalid locale name to construct a locale facet or a locale object throws an object of class [runtime_error](../standard-library/runtime-error-class.md). The stored locale name is `"*"` if the locale object can't be certain that a C-style locale corresponds exactly to the one represented by the object. Otherwise, you can establish a matching locale within the Standard C Library, for some locale object `locale_object`, by calling `setlocale(LC_ALL , locale_object.`[name](#name)`().c_str())`. ```cpp static locale empty(); ``` -to construct a locale object that has no facets. It's also a transparent locale. If the template functions [has_facet](../standard-library/locale-functions.md#has_facet) and [use_facet](../standard-library/locale-functions.md#use_facet) can't find the requested facet in a transparent locale, they consult first the global locale and then, if that is transparent, the classic locale. So, you can write: +> [!NOTE] +> `locale::empty()` was deprecated starting with Visual Studio 2022 17.14. It'll be removed starting with MSVC Build Tools 14.51. For more information, see [#5834](https://github.com/microsoft/STL/pull/5834). + +In this implementation, you can also call the static member function `empty()` to construct a locale object that has no facets. It's also a transparent locale. If the template functions [has_facet](../standard-library/locale-functions.md#has_facet) and [use_facet](../standard-library/locale-functions.md#use_facet) can't find the requested facet in a transparent locale, they consult first the global locale and then, if that is transparent, the classic locale. So, you can write: ```cpp cout.imbue(locale::empty()); From c38b53522d2ec987383f1140ce6ba706ea8149dd Mon Sep 17 00:00:00 2001 From: Mahmoud Saleh <12202790+MahmoudGSaleh@users.noreply.github.com> Date: Fri, 14 Nov 2025 09:34:54 -0800 Subject: [PATCH 2102/2255] Update Note for VS 2015 Clarified support status for Visual C++ Redistributable versions and compatibility guidance for Visual Studio 2015. --- docs/windows/latest-supported-vc-redist.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index e6d58668abf..54c6d5c17c0 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -63,6 +63,7 @@ Download other versions, including long term servicing release channel (LTSC) ve * Windows 10 and 11 * Windows Server 2016, 2019, 2022, and 2025 - Support for Visual Studio 2015 ended on October 15, 2025. Because support for the Visual C++ Redistributable is connected to the version of Visual Studio in which it first ships, support for Visual C++ 2015 Redistributable (version 14.0.24212) also ended October 15, 2025. See [Visual Studio 2015 (VC++ 14.0)](#visual-studio-2015-vc-140-no-longer-supported) section below for the latest available version. +As of the time Visual Studio 2015 support ended, the v14 runtime is binary compatible with applications created with the VS 2015 MSVC Build Tools. Over time, Microsoft may no longer support that compatibility. Because Visual Studio 2015 is out of support, our guidance is that you update your projects to build with a supported MSVC Build Tools. If you are statically linking the Visual Studio 2015 C++ runtime, we recommend updating to a supported version of the runtime. - The Visual C++ Redistributable supports several command-line options. For more information, see [Command-line options for the Redistributable packages](./redistributing-visual-cpp-files.md#command-line-options-for-the-redistributable-packages). ## Unsupported legacy versions From 93300a3e96e5d4a874e321c7aa2eff3ca13b908e Mon Sep 17 00:00:00 2001 From: Mahmoud Saleh <12202790+MahmoudGSaleh@users.noreply.github.com> Date: Fri, 14 Nov 2025 10:09:36 -0800 Subject: [PATCH 2103/2255] Clarify support status for Visual Studio 2015 Removed duplicate information regarding the end of support for Visual Studio 2015 and its Redistributable. --- docs/windows/latest-supported-vc-redist.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index 54c6d5c17c0..6df83b16c7a 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -62,8 +62,8 @@ Download other versions, including long term servicing release channel (LTSC) ve - The latest version of the Visual C++ v14 Redistributable included with Visual Studio 2026 only supports the following operating systems: * Windows 10 and 11 * Windows Server 2016, 2019, 2022, and 2025 -- Support for Visual Studio 2015 ended on October 15, 2025. Because support for the Visual C++ Redistributable is connected to the version of Visual Studio in which it first ships, support for Visual C++ 2015 Redistributable (version 14.0.24212) also ended October 15, 2025. See [Visual Studio 2015 (VC++ 14.0)](#visual-studio-2015-vc-140-no-longer-supported) section below for the latest available version. -As of the time Visual Studio 2015 support ended, the v14 runtime is binary compatible with applications created with the VS 2015 MSVC Build Tools. Over time, Microsoft may no longer support that compatibility. Because Visual Studio 2015 is out of support, our guidance is that you update your projects to build with a supported MSVC Build Tools. If you are statically linking the Visual Studio 2015 C++ runtime, we recommend updating to a supported version of the runtime. +- Support for Visual Studio 2015 ended on October 15, 2025. Because support for the Visual C++ Redistributable is connected to the version of Visual Studio in which it first ships, support for Visual C++ 2015 Redistributable (version 14.0.24212) also ended October 15, 2025. See [Visual Studio 2015 (VC++ 14.0)](#visual-studio-2015-vc-140-no-longer-supported) section below for the latest available version.
+As of the time Visual Studio 2015 support ended, the v14 runtime is binary compatible with applications created with the VS 2015 MSVC Build Tools. Over time, Microsoft may no longer support that compatibility. Because Visual Studio 2015 is out of support, our guidance is that you update your projects to build with a supported MSVC Build Tools. If you are statically linking the Visual Studio 2015 C++ runtime, we recommend updating to a supported version. - The Visual C++ Redistributable supports several command-line options. For more information, see [Command-line options for the Redistributable packages](./redistributing-visual-cpp-files.md#command-line-options-for-the-redistributable-packages). ## Unsupported legacy versions From 796bc48133b42f3d5475ec0568c0ae478eae1fc9 Mon Sep 17 00:00:00 2001 From: David Justo Date: Tue, 18 Nov 2025 10:56:38 -0800 Subject: [PATCH 2104/2255] document ASan x64 debug spew --- docs/sanitizers/asan-known-issues.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/sanitizers/asan-known-issues.md b/docs/sanitizers/asan-known-issues.md index 273389bad95..e82862095f7 100644 --- a/docs/sanitizers/asan-known-issues.md +++ b/docs/sanitizers/asan-known-issues.md @@ -99,6 +99,12 @@ If all of the DLLs compiled with ASan are unloaded from the process before the p Please report any bugs to our [Developer Community](https://aka.ms/feedback/report?space=62). +## ASan generates a large amount of benign first chance exceptions in 64-bit architectures + +ASan reserves about one third of the process virtual memory for its [shadow bytes](./asan-shadow-bytes.md). In a 64-bit address space, this corresponds to several terabytes of memory, making it impractical for ASan to pre-commit these pages during initialization. Therefore, ASan in 64-bit architectures uses an on-demand shadow byte paging scheme: when a shadow bytes page is accessed for the first time, ASan is notified through a first-chance exception, and only commits the page at that moment. As a result, some debuggers may display a large amount of benign 'first chance' exceptions when running under ASan. + +The Visual Studio debugger has been enlightened to handle this gracefully, and does not show these traces. However, debuggers like WinDbgX may break on every exception by default. Disabling breaking on first-chance exceptions is recommended. For example, in WinDbgX, this corresponds to the [`sxd av`](https://learn.microsoft.com/en-us/windows-hardware/drivers/debuggercmds/sx--sxd--sxe--sxi--sxn--sxr--sx---set-exceptions-) command. + ## See also [AddressSanitizer overview](asan.md)\ From 52ecf7190156928989ed7de2d4bc6d9ffc472324 Mon Sep 17 00:00:00 2001 From: Mahmoud Saleh <12202790+MahmoudGSaleh@users.noreply.github.com> Date: Tue, 18 Nov 2025 13:37:36 -0800 Subject: [PATCH 2105/2255] Clarify guidance on Visual Studio 2015 support Reworded guidance on Visual Studio 2015 support and compatibility. --- docs/windows/latest-supported-vc-redist.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index 6df83b16c7a..eb11eb2f471 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -63,7 +63,7 @@ Download other versions, including long term servicing release channel (LTSC) ve * Windows 10 and 11 * Windows Server 2016, 2019, 2022, and 2025 - Support for Visual Studio 2015 ended on October 15, 2025. Because support for the Visual C++ Redistributable is connected to the version of Visual Studio in which it first ships, support for Visual C++ 2015 Redistributable (version 14.0.24212) also ended October 15, 2025. See [Visual Studio 2015 (VC++ 14.0)](#visual-studio-2015-vc-140-no-longer-supported) section below for the latest available version.
-As of the time Visual Studio 2015 support ended, the v14 runtime is binary compatible with applications created with the VS 2015 MSVC Build Tools. Over time, Microsoft may no longer support that compatibility. Because Visual Studio 2015 is out of support, our guidance is that you update your projects to build with a supported MSVC Build Tools. If you are statically linking the Visual Studio 2015 C++ runtime, we recommend updating to a supported version. +When Visual Studio 2015 support ended, the v14 runtime was binary compatible with applications built using the VS 2015 MSVC Build Tools. Since VS 2015 is no longer supported, we recommend updating your projects to use a supported MSVC Build Tools version and the latest v14 runtime. - The Visual C++ Redistributable supports several command-line options. For more information, see [Command-line options for the Redistributable packages](./redistributing-visual-cpp-files.md#command-line-options-for-the-redistributable-packages). ## Unsupported legacy versions From 3fcb276fbef69bd2161b616d7dbfce7ced5e9dc0 Mon Sep 17 00:00:00 2001 From: David Justo Date: Tue, 18 Nov 2025 16:10:33 -0800 Subject: [PATCH 2106/2255] apply feedback: do not use 'enlightened' --- docs/sanitizers/asan-known-issues.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-known-issues.md b/docs/sanitizers/asan-known-issues.md index e82862095f7..657243e90a8 100644 --- a/docs/sanitizers/asan-known-issues.md +++ b/docs/sanitizers/asan-known-issues.md @@ -103,7 +103,7 @@ Please report any bugs to our [Developer Community](https://aka.ms/feedback/repo ASan reserves about one third of the process virtual memory for its [shadow bytes](./asan-shadow-bytes.md). In a 64-bit address space, this corresponds to several terabytes of memory, making it impractical for ASan to pre-commit these pages during initialization. Therefore, ASan in 64-bit architectures uses an on-demand shadow byte paging scheme: when a shadow bytes page is accessed for the first time, ASan is notified through a first-chance exception, and only commits the page at that moment. As a result, some debuggers may display a large amount of benign 'first chance' exceptions when running under ASan. -The Visual Studio debugger has been enlightened to handle this gracefully, and does not show these traces. However, debuggers like WinDbgX may break on every exception by default. Disabling breaking on first-chance exceptions is recommended. For example, in WinDbgX, this corresponds to the [`sxd av`](https://learn.microsoft.com/en-us/windows-hardware/drivers/debuggercmds/sx--sxd--sxe--sxi--sxn--sxr--sx---set-exceptions-) command. +The Visual Studio debugger handles this gracefully, and doesn't show these traces. However, debuggers like WinDbgX may break on every exception by default. Disabling breaking on first-chance exceptions is recommended. For example, in WinDbgX, this corresponds to the [`sxd av`](https://learn.microsoft.com/en-us/windows-hardware/drivers/debuggercmds/sx--sxd--sxe--sxi--sxn--sxr--sx---set-exceptions-) command. ## See also From 59b72dfcb1e2624d5f06d67c768753d5ce48a22d Mon Sep 17 00:00:00 2001 From: David Justo Date: Tue, 18 Nov 2025 16:13:04 -0800 Subject: [PATCH 2107/2255] simplify title --- docs/sanitizers/asan-known-issues.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-known-issues.md b/docs/sanitizers/asan-known-issues.md index 657243e90a8..ba29182e98f 100644 --- a/docs/sanitizers/asan-known-issues.md +++ b/docs/sanitizers/asan-known-issues.md @@ -99,7 +99,7 @@ If all of the DLLs compiled with ASan are unloaded from the process before the p Please report any bugs to our [Developer Community](https://aka.ms/feedback/report?space=62). -## ASan generates a large amount of benign first chance exceptions in 64-bit architectures +## ASan 64-bit first chance exceptions ASan reserves about one third of the process virtual memory for its [shadow bytes](./asan-shadow-bytes.md). In a 64-bit address space, this corresponds to several terabytes of memory, making it impractical for ASan to pre-commit these pages during initialization. Therefore, ASan in 64-bit architectures uses an on-demand shadow byte paging scheme: when a shadow bytes page is accessed for the first time, ASan is notified through a first-chance exception, and only commits the page at that moment. As a result, some debuggers may display a large amount of benign 'first chance' exceptions when running under ASan. From 27c2efe77b3a2ae76869147ae0d83490a96a9a13 Mon Sep 17 00:00:00 2001 From: David Justo Date: Tue, 18 Nov 2025 16:17:28 -0800 Subject: [PATCH 2108/2255] provide a higher-level explanation --- docs/sanitizers/asan-known-issues.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-known-issues.md b/docs/sanitizers/asan-known-issues.md index ba29182e98f..2732dfdd65b 100644 --- a/docs/sanitizers/asan-known-issues.md +++ b/docs/sanitizers/asan-known-issues.md @@ -101,7 +101,7 @@ Please report any bugs to our [Developer Community](https://aka.ms/feedback/repo ## ASan 64-bit first chance exceptions -ASan reserves about one third of the process virtual memory for its [shadow bytes](./asan-shadow-bytes.md). In a 64-bit address space, this corresponds to several terabytes of memory, making it impractical for ASan to pre-commit these pages during initialization. Therefore, ASan in 64-bit architectures uses an on-demand shadow byte paging scheme: when a shadow bytes page is accessed for the first time, ASan is notified through a first-chance exception, and only commits the page at that moment. As a result, some debuggers may display a large amount of benign 'first chance' exceptions when running under ASan. +In 64-bit systems, MSVC ASan's [shadow bytes](./asan-shadow-bytes.md) region occupies several terabytes of virtual address space. ASan does not pre-commit this memory; instead, it uses on demand paging. When a shadow page is accessed for the first time, a first-chance page-fault exception occurs and is handled by ASan, which commits the page. The Visual Studio debugger handles this gracefully, and doesn't show these traces. However, debuggers like WinDbgX may break on every exception by default. Disabling breaking on first-chance exceptions is recommended. For example, in WinDbgX, this corresponds to the [`sxd av`](https://learn.microsoft.com/en-us/windows-hardware/drivers/debuggercmds/sx--sxd--sxe--sxi--sxn--sxr--sx---set-exceptions-) command. From d0e9b95e6bf868d0ff8ed779b108215096b690d2 Mon Sep 17 00:00:00 2001 From: David Justo Date: Tue, 18 Nov 2025 16:23:32 -0800 Subject: [PATCH 2109/2255] remove localization from URI --- docs/sanitizers/asan-known-issues.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-known-issues.md b/docs/sanitizers/asan-known-issues.md index 2732dfdd65b..1d82b591fb0 100644 --- a/docs/sanitizers/asan-known-issues.md +++ b/docs/sanitizers/asan-known-issues.md @@ -103,7 +103,7 @@ Please report any bugs to our [Developer Community](https://aka.ms/feedback/repo In 64-bit systems, MSVC ASan's [shadow bytes](./asan-shadow-bytes.md) region occupies several terabytes of virtual address space. ASan does not pre-commit this memory; instead, it uses on demand paging. When a shadow page is accessed for the first time, a first-chance page-fault exception occurs and is handled by ASan, which commits the page. -The Visual Studio debugger handles this gracefully, and doesn't show these traces. However, debuggers like WinDbgX may break on every exception by default. Disabling breaking on first-chance exceptions is recommended. For example, in WinDbgX, this corresponds to the [`sxd av`](https://learn.microsoft.com/en-us/windows-hardware/drivers/debuggercmds/sx--sxd--sxe--sxi--sxn--sxr--sx---set-exceptions-) command. +The Visual Studio debugger handles this gracefully, and doesn't show these traces. However, debuggers like WinDbgX may break on every exception by default. Disabling breaking on first-chance exceptions is recommended. For example, in WinDbgX, this corresponds to the [`sxd av`](https://learn.microsoft.com/windows-hardware/drivers/debuggercmds/sx--sxd--sxe--sxi--sxn--sxr--sx---set-exceptions-) command. ## See also From 76bf79d0e56212f6317c6af50f4df5c1ccaf5f18 Mon Sep 17 00:00:00 2001 From: David Justo Date: Wed, 19 Nov 2025 13:49:41 -0800 Subject: [PATCH 2110/2255] apply feedback --- docs/sanitizers/asan-known-issues.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-known-issues.md b/docs/sanitizers/asan-known-issues.md index 1d82b591fb0..2d44999caba 100644 --- a/docs/sanitizers/asan-known-issues.md +++ b/docs/sanitizers/asan-known-issues.md @@ -101,7 +101,7 @@ Please report any bugs to our [Developer Community](https://aka.ms/feedback/repo ## ASan 64-bit first chance exceptions -In 64-bit systems, MSVC ASan's [shadow bytes](./asan-shadow-bytes.md) region occupies several terabytes of virtual address space. ASan does not pre-commit this memory; instead, it uses on demand paging. When a shadow page is accessed for the first time, a first-chance page-fault exception occurs and is handled by ASan, which commits the page. +On x64, MSVC ASan's [shadow bytes](./asan-shadow-bytes.md) region occupies several terabytes of virtual address space. ASan doesn't pre-commit this memory. Instead, it uses on-demand paging. When a shadow page is accessed for the first time, a first-chance page fault exception occurs and is handled by ASan, which commits the page. The Visual Studio debugger handles this gracefully, and doesn't show these traces. However, debuggers like WinDbgX may break on every exception by default. Disabling breaking on first-chance exceptions is recommended. For example, in WinDbgX, this corresponds to the [`sxd av`](https://learn.microsoft.com/windows-hardware/drivers/debuggercmds/sx--sxd--sxe--sxi--sxn--sxr--sx---set-exceptions-) command. From e228a3cacf67429e55694bb6d44e7ea6a6f79e7d Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 19 Nov 2025 14:01:54 -0800 Subject: [PATCH 2111/2255] Update link Updated the date for AddressSanitizer known issues documentation. --- docs/sanitizers/asan-known-issues.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/sanitizers/asan-known-issues.md b/docs/sanitizers/asan-known-issues.md index 2d44999caba..7d3b22a2e7a 100644 --- a/docs/sanitizers/asan-known-issues.md +++ b/docs/sanitizers/asan-known-issues.md @@ -1,7 +1,7 @@ --- title: "AddressSanitizer known issues and limitations" description: "Technical description of the AddressSanitizer for Microsoft C/C++ known issues." -ms.date: 5/21/2025 +ms.date: 11/19/2025 helpviewer_keywords: ["AddressSanitizer known issues"] --- @@ -103,7 +103,7 @@ Please report any bugs to our [Developer Community](https://aka.ms/feedback/repo On x64, MSVC ASan's [shadow bytes](./asan-shadow-bytes.md) region occupies several terabytes of virtual address space. ASan doesn't pre-commit this memory. Instead, it uses on-demand paging. When a shadow page is accessed for the first time, a first-chance page fault exception occurs and is handled by ASan, which commits the page. -The Visual Studio debugger handles this gracefully, and doesn't show these traces. However, debuggers like WinDbgX may break on every exception by default. Disabling breaking on first-chance exceptions is recommended. For example, in WinDbgX, this corresponds to the [`sxd av`](https://learn.microsoft.com/windows-hardware/drivers/debuggercmds/sx--sxd--sxe--sxi--sxn--sxr--sx---set-exceptions-) command. +The Visual Studio debugger handles this gracefully, and doesn't show these traces. However, debuggers like WinDbgX may break on every exception by default. Disabling breaking on first-chance exceptions is recommended. For example, in WinDbgX, this corresponds to the [`sxd av`](/windows-hardware/drivers/debuggercmds/sx--sxd--sxe--sxi--sxn--sxr--sx---set-exceptions-) command. ## See also From 67afcae695bca6bba93270085e3e2f73ad541c08 Mon Sep 17 00:00:00 2001 From: Raymond Chen Date: Wed, 19 Nov 2025 19:21:36 -0800 Subject: [PATCH 2112/2255] Clarify CListBox::InitStorage parameters The meaning of the lParam has been a source of confusion. Clarified the text for lParam and cleaned up the wParam, return value, and blurb. (Also avoid overselling the message. Change "the shortest possible time" to just "more efficient". Because it's still not "the shortest possible time", but it's shorter than it would be without the message.) https://groups.google.com/g/comp.os.ms-windows.programmer.win32/c/MtviqqbHDQs/m/2a2PGs0xmJMJ This is the MFC counterpart to win32-pr#3259 --- docs/mfc/reference/clistbox-class.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/mfc/reference/clistbox-class.md b/docs/mfc/reference/clistbox-class.md index 93f4efc5532..a027c88be44 100644 --- a/docs/mfc/reference/clistbox-class.md +++ b/docs/mfc/reference/clistbox-class.md @@ -873,10 +873,10 @@ int InitStorage( ### Parameters *`nItems`*
-Specifies the number of items to add. +Specifies the number of items to for which to reserve space. *`nBytes`*
-Specifies the amount of memory, in bytes, to allocate for item strings. +Specifies the amount of additional memory, in bytes, to allocate for item strings. ### Return Value @@ -884,9 +884,9 @@ If successful, the maximum number of items that the list box can store before a ### Remarks -Call this function before adding a large number of items to a `CListBox`. +You can call this function before adding a large number of items to a `CListBox`. -This function helps speed up the initialization of list boxes that have a large number of items (more than 100). It preallocates the specified amount of memory so that subsequent [`AddString`](#addstring), [`InsertString`](#insertstring), and [`Dir`](#dir) functions take the shortest possible time. You can use estimates for the parameters. If you overestimate, some extra memory is allocated; if you underestimate, the normal allocation is used for items that exceed the preallocated amount. +This function helps speed up the initialization of list boxes that have a large number of items (more than 100). It preallocates the specified amount of memory so that subsequent [`AddString`](#addstring), [`InsertString`](#insertstring), and [`Dir`](#dir) functions are more efficient. You can use estimates for the parameters. If you overestimate, the extra rmemory remains allocated; if you underestimate, the list box will allocate additional memory as necessary. Windows 95/98 only: The *`nItems`* parameter is limited to 16-bit values. This means list boxes cannot contain more than 32,767 items. Although the number of items is restricted, the total size of the items in a list box is limited only by available memory. From df73a673bb42be358a95a1fe41e5657464d6267c Mon Sep 17 00:00:00 2001 From: Raymond Chen Date: Wed, 19 Nov 2025 19:26:38 -0800 Subject: [PATCH 2113/2255] Fix sample associated with CListBox::InitStorage --- docs/mfc/codesnippet/CPP/clistbox-class_23.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/mfc/codesnippet/CPP/clistbox-class_23.cpp b/docs/mfc/codesnippet/CPP/clistbox-class_23.cpp index 7301b4da087..f7c839534b6 100644 --- a/docs/mfc/codesnippet/CPP/clistbox-class_23.cpp +++ b/docs/mfc/codesnippet/CPP/clistbox-class_23.cpp @@ -1,6 +1,6 @@ -// Initialize the storage of the list box to be 256 strings with -// about 10 characters per string, performance improvement. -int n = m_myListBox.InitStorage(256, 16 * sizeof(TCHAR)); +// Reserve space in the list box for 256 additional strings with +// about 15 characters per string. +int n = m_myListBox.InitStorage(256, 256 * (15 + 1) * sizeof(TCHAR)); ASSERT(n != LB_ERRSPACE); // Add 256 items to the list box. From b754c12a31d6c02bd9a79d6318968f5bdd1f0a38 Mon Sep 17 00:00:00 2001 From: Raymond Chen Date: Thu, 20 Nov 2025 09:18:06 -0800 Subject: [PATCH 2114/2255] Typos and give specific calculation formula --- docs/mfc/reference/clistbox-class.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/mfc/reference/clistbox-class.md b/docs/mfc/reference/clistbox-class.md index a027c88be44..ffdca49e04e 100644 --- a/docs/mfc/reference/clistbox-class.md +++ b/docs/mfc/reference/clistbox-class.md @@ -886,7 +886,9 @@ If successful, the maximum number of items that the list box can store before a You can call this function before adding a large number of items to a `CListBox`. -This function helps speed up the initialization of list boxes that have a large number of items (more than 100). It preallocates the specified amount of memory so that subsequent [`AddString`](#addstring), [`InsertString`](#insertstring), and [`Dir`](#dir) functions are more efficient. You can use estimates for the parameters. If you overestimate, the extra rmemory remains allocated; if you underestimate, the list box will allocate additional memory as necessary. +This function helps speed up the initialization of list boxes that have a large number of items (more than 100). It preallocates the specified amount of memory so that subsequent [`AddString`](#addstring), [`InsertString`](#insertstring), and [`Dir`](#dir) functions are more efficient. You can use estimates for the parameters. If you overestimate, the extra memory remains allocated; if you underestimate, the list box will allocate additional memory as necessary. + +The memory required to store a string includes the null terminator. Therefore, if you plan to add 100 strings, each with a length of 10 characters, you would pass a *wParam* of 100 and an *lParam* of 100 × (10 + 1) × sizeof(TCHAR). Windows 95/98 only: The *`nItems`* parameter is limited to 16-bit values. This means list boxes cannot contain more than 32,767 items. Although the number of items is restricted, the total size of the items in a list box is limited only by available memory. From 06e9d609d40837a537feeb4328b9c35012c46f8c Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 20 Nov 2025 14:52:53 -0800 Subject: [PATCH 2115/2255] update instructions --- .github/copilot-instructions.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 75dc5da1e0a..3f4b335d6c1 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -11,6 +11,7 @@ When writing documentation, follow these guidelines: ## Grammar +* Avoid "we"/"our" referring to documentation authors * Use present tense verbs (is, open) instead of past tense (was, opened). For example, "The method returns a value" instead of "The method will return a value." * Write factual statements and direct commands. Avoid hypotheticals. * Use active voice where the subject performs the action. @@ -81,7 +82,8 @@ When writing documentation, follow these guidelines: ## Adding links -* Add links to related topics and resources where appropriate. +* Add links to related topics and resources where appropriate. +* Use relative links for files in this repo * Links to other documentation articles should be relative, not absolute. Start relative links with `/docs/` and include the `.md` suffix. If you add a link to another page on learn.microsoft.com that's not in this repo, remove https://learn.microsoft.com/en-us from the link. * Links to bookmarks within the same article should be relative and start with `#`. * Link descriptions should be descriptive and make sense on their own. Don't use "click here" or "this link" or "here". From 0b92d03a224486982ee2432778833c328ec8ef99 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 24 Nov 2025 21:25:32 +0000 Subject: [PATCH 2116/2255] Initial plan From f37c90a774d8902c1ace6fc6f7316790c2d539fb Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 24 Nov 2025 21:30:18 +0000 Subject: [PATCH 2117/2255] Update x64 calling convention terminology for stack argument passing Co-authored-by: TylerMSFT <12305055+TylerMSFT@users.noreply.github.com> --- docs/build/x64-calling-convention.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/build/x64-calling-convention.md b/docs/build/x64-calling-convention.md index bf4a575b47f..d9bf0d97b40 100644 --- a/docs/build/x64-calling-convention.md +++ b/docs/build/x64-calling-convention.md @@ -34,7 +34,7 @@ Prologs and epilogs are highly restricted so that they can be properly described ## Parameter passing -By default, the x64 calling convention passes the first four arguments to a function in registers. The registers used for these arguments depend on the position and type of the argument. Remaining arguments get pushed on the stack in right-to-left order. All arguments passed on the stack are 8-byte aligned. +By default, the x64 calling convention passes the first four arguments to a function in registers. The registers used for these arguments depend on the position and type of the argument. Remaining arguments are passed on the stack in right-to-left order. The caller reserves the required stack space and writes these arguments to stack memory using store or move instructions, maintaining 8-byte alignment for each argument. Integer valued arguments in the leftmost four positions are passed in left-to-right order in RCX, RDX, R8, and R9, respectively. The fifth and higher arguments are passed on the stack as previously described. All integer arguments in registers are right-justified, so the callee can ignore the upper bits of the register and access only the portion of the register necessary. @@ -60,21 +60,21 @@ The following table summarizes how parameters are passed, by type and position f ```cpp func1(int a, int b, int c, int d, int e, int f); -// a in RCX, b in RDX, c in R8, d in R9, f then e pushed on stack +// a in RCX, b in RDX, c in R8, d in R9, f then e passed on stack ``` ### Example of argument passing 2 - all floats ```cpp func2(float a, double b, float c, double d, float e, float f); -// a in XMM0, b in XMM1, c in XMM2, d in XMM3, f then e pushed on stack +// a in XMM0, b in XMM1, c in XMM2, d in XMM3, f then e passed on stack ``` ### Example of argument passing 3 - mixed ints and floats ```cpp func3(int a, double b, int c, float d, int e, float f); -// a in RCX, b in XMM1, c in R8, d in XMM3, f then e pushed on stack +// a in RCX, b in XMM1, c in R8, d in XMM3, f then e passed on stack ``` ### Example of argument passing 4 - `__m64`, `__m128`, and aggregates @@ -82,7 +82,7 @@ func3(int a, double b, int c, float d, int e, float f); ```cpp func4(__m64 a, __m128 b, struct c, float d, __m128 e, __m128 f); // a in RCX, ptr to b in RDX, ptr to c in R8, d in XMM3, -// ptr to f pushed on stack, then ptr to e pushed on stack +// ptr to f passed on stack, then ptr to e passed on stack ``` ## Varargs @@ -112,7 +112,7 @@ These examples show how parameters and return values are passed for functions wi ```cpp __int64 func1(int a, float b, int c, int d, int e); -// Caller passes a in RCX, b in XMM1, c in R8, d in R9, e pushed on stack, +// Caller passes a in RCX, b in XMM1, c in R8, d in R9, e passed on stack, // callee returns __int64 result in RAX. ``` @@ -132,7 +132,7 @@ struct Struct1 { }; Struct1 func3(int a, double b, int c, float d); // Caller allocates memory for Struct1 returned and passes pointer in RCX, -// a in RDX, b in XMM2, c in R9, d pushed on the stack; +// a in RDX, b in XMM2, c in R9, d passed on the stack; // callee returns pointer to Struct1 result in RAX. ``` From a0e0ce49a2913f0221a430fe5fdf2ff5f349239e Mon Sep 17 00:00:00 2001 From: speryt-microsoft <245959870+speryt-microsoft@users.noreply.github.com> Date: Mon, 24 Nov 2025 14:01:36 -0800 Subject: [PATCH 2118/2255] Learn Editor: Update vectorizer-and-parallelizer-messages.md --- .../tool-errors/vectorizer-and-parallelizer-messages.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/error-messages/tool-errors/vectorizer-and-parallelizer-messages.md b/docs/error-messages/tool-errors/vectorizer-and-parallelizer-messages.md index 07ff21fb4e3..3cab6214659 100644 --- a/docs/error-messages/tool-errors/vectorizer-and-parallelizer-messages.md +++ b/docs/error-messages/tool-errors/vectorizer-and-parallelizer-messages.md @@ -30,12 +30,16 @@ The 5*xx* reason codes apply to both the parallelizer and the vectorizer. | Reason code | Explanation | |--|--| -| 500 | A generic message that covers several cases: For example, the loop includes multiple exits, or the loop header doesn't end by incrementing the induction variable. | +| 500 | Induction variable discovery or recurrence failure. | | 501 | Induction variable isn't local; or upper bound isn't loop-invariant. | | 502 | Induction variable is stepped in some manner other than a simple +1. | | 503 | Loop includes exception-handling or switch statements. | | 504 | Loop body may throw an exception that requires destruction of a C++ object. | | 505 | Outer loop has a pre-incremented induction variable. Exiting analysis. | +| 506 | Loop structural / canonical form failure. | +| 507 | Bounds / initialization / termination / compare consistency failure. | +| 508 | Stride derivation or usage failure | +| 509 | Loop direction acceptability failure. | ```cpp void code_500(int *A) From c0fb8feac34d7841ffc219fcf13638d5cfa95f54 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 24 Nov 2025 16:24:03 -0800 Subject: [PATCH 2119/2255] Fix error message formatting and wording --- .../tool-errors/vectorizer-and-parallelizer-messages.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/tool-errors/vectorizer-and-parallelizer-messages.md b/docs/error-messages/tool-errors/vectorizer-and-parallelizer-messages.md index 3cab6214659..c364ea1966d 100644 --- a/docs/error-messages/tool-errors/vectorizer-and-parallelizer-messages.md +++ b/docs/error-messages/tool-errors/vectorizer-and-parallelizer-messages.md @@ -36,8 +36,8 @@ The 5*xx* reason codes apply to both the parallelizer and the vectorizer. | 503 | Loop includes exception-handling or switch statements. | | 504 | Loop body may throw an exception that requires destruction of a C++ object. | | 505 | Outer loop has a pre-incremented induction variable. Exiting analysis. | -| 506 | Loop structural / canonical form failure. | -| 507 | Bounds / initialization / termination / compare consistency failure. | +| 506 | Loop structural or canonical form failure. | +| 507 | Bounds, initialization, termination, or compare consistency failure. | | 508 | Stride derivation or usage failure | | 509 | Loop direction acceptability failure. | From 23d975a5ff2979b83b7e0b483f205e9919d83278 Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Thu, 27 Nov 2025 22:17:49 -0800 Subject: [PATCH 2120/2255] Learn Editor: Update rtc-run-time-error-checks.md --- docs/build/reference/rtc-run-time-error-checks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/rtc-run-time-error-checks.md b/docs/build/reference/rtc-run-time-error-checks.md index 265e61d945e..0bff5139a6e 100644 --- a/docs/build/reference/rtc-run-time-error-checks.md +++ b/docs/build/reference/rtc-run-time-error-checks.md @@ -42,7 +42,7 @@ int main() { } ``` -Because **`/RTCc`** rejects code that conforms to the standard, it's not supported by the C++ Standard Library. Code that uses **`/RTCc`** and the C++ Standard Library may cause compiler error [C1189](../../error-messages/compiler-errors-1/fatal-error-c1189.md). You can define `_ALLOW_RTCc_IN_STL` to silence the warning and use the **`/RTCc`** option. +Because **`/RTCc`** rejects code that conforms to the standard, it's not supported by the C++ Standard Library. Code that uses **`/RTCc`** and the C++ Standard Library may cause compiler error [C1189](../../error-messages/compiler-errors-1/fatal-error-c1189.md) or [C2338](../../error-messages/compiler-errors-1/compiler-error-c2338.md). Remove the **`/RTCc`** option to use the C++ Standard Library. **`/RTCs`**
Enables stack frame run-time error checking, as follows: From dc90fbfe45074739f3ba494528db033737eab4ba Mon Sep 17 00:00:00 2001 From: "Stephan T. Lavavej" Date: Thu, 27 Nov 2025 22:18:18 -0800 Subject: [PATCH 2121/2255] Learn Editor: Update rtc-run-time-error-checks.md From 35f7490046991de1b133c2ba953366cfca53fe5e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 3 Dec 2025 02:22:50 +0000 Subject: [PATCH 2122/2255] Initial plan From 6cd5f319fde9dadadc2f2e0af6b4bf2a8484676f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 3 Dec 2025 02:26:48 +0000 Subject: [PATCH 2123/2255] Add module trace file collection guidance to C++ Modules repros section Co-authored-by: TylerMSFT <12305055+TylerMSFT@users.noreply.github.com> --- ...-report-a-problem-with-the-visual-cpp-toolset.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md b/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md index b917c543d08..86eacb9c832 100644 --- a/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md +++ b/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md @@ -311,6 +311,19 @@ After you generate the preprocessed files, it's a good idea to make sure the pro Finally, attach the preprocessed repro files (*filename*.i and *modulename*.i) along with the .ifc output to your report. +#### To generate a module trace file + +When issues involve C++ modules, providing a module trace file along with the preprocessed repro improves diagnostic quality and reduces turnaround time. A module trace file records detailed information about module operations during compilation. + +1. In the developer command prompt console window, enter the command **cl /d1module:enableLogging** *trace.json* *arguments* *filename.cpp*. The *trace.json* is the desired output file name for the module trace. The *arguments* are the compilation arguments, and *filename.cpp* is the source file that reproduces the problem. + + > [!IMPORTANT] + > You must compile exactly one source file to collect a module trace. Don't use the **/MP** (multi-processor compilation) option or invoke the compiler with multiple source files. Using **/MP** or multi-source invocations can cause the trace to represent only the last compiled file or be incomplete. + +1. If multiple translation units are involved in the problem, run separate single-file invocations to collect a trace for each relevant file. Focus on the specific file that reproduces the problem, and optionally collect one trace per relevant file. + +Finally, attach the generated *trace.json* file along with the preprocessed repro to your report. + ### Link repros A *link repro* is the linker-generated contents of a directory, specified either by the **link\_repro** environment variable, or as an argument to the [/LINKREPRO](../build/reference/linkrepro.md) linker option. It contains build artifacts that collectively demonstrate a problem that occurs at link time. Examples include a backend crash involving Link-Time Code Generation (LTCG), or a linker crash. These build artifacts are the ones needed as linker input so the problem can be reproduced. A link repro can be created easily by using this environment variable. It enables the linker's built-in repro generation capability. From da1b2f33104e3aa9cd7497c61428b98646e757ee Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 3 Dec 2025 02:28:06 +0000 Subject: [PATCH 2124/2255] Improve clarity and remove redundancy in module trace guidance Co-authored-by: TylerMSFT <12305055+TylerMSFT@users.noreply.github.com> --- .../how-to-report-a-problem-with-the-visual-cpp-toolset.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md b/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md index 86eacb9c832..e994c9a6475 100644 --- a/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md +++ b/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md @@ -315,12 +315,12 @@ Finally, attach the preprocessed repro files (*filename*.i and *modulename*.i) a When issues involve C++ modules, providing a module trace file along with the preprocessed repro improves diagnostic quality and reduces turnaround time. A module trace file records detailed information about module operations during compilation. -1. In the developer command prompt console window, enter the command **cl /d1module:enableLogging** *trace.json* *arguments* *filename.cpp*. The *trace.json* is the desired output file name for the module trace. The *arguments* are the compilation arguments, and *filename.cpp* is the source file that reproduces the problem. +1. In the developer command prompt console window, enter the command **cl /d1module:enableLogging** *trace.json* *arguments* *filename.cpp*. For *trace.json*, specify the desired output file name for the module trace. For *arguments*, use the compilation arguments. For *filename.cpp*, specify the source file that reproduces the problem. > [!IMPORTANT] > You must compile exactly one source file to collect a module trace. Don't use the **/MP** (multi-processor compilation) option or invoke the compiler with multiple source files. Using **/MP** or multi-source invocations can cause the trace to represent only the last compiled file or be incomplete. -1. If multiple translation units are involved in the problem, run separate single-file invocations to collect a trace for each relevant file. Focus on the specific file that reproduces the problem, and optionally collect one trace per relevant file. +1. If multiple translation units are involved in the problem, run separate single-file invocations to collect a trace for the specific file that reproduces the problem. You can collect traces for additional relevant files if needed. Finally, attach the generated *trace.json* file along with the preprocessed repro to your report. From 53b89086f980b20c3224849f54d4bfbf79bc398e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 3 Dec 2025 02:29:16 +0000 Subject: [PATCH 2125/2255] Refine command syntax to match specification and improve clarity Co-authored-by: TylerMSFT <12305055+TylerMSFT@users.noreply.github.com> --- .../how-to-report-a-problem-with-the-visual-cpp-toolset.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md b/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md index e994c9a6475..d3a723c3715 100644 --- a/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md +++ b/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md @@ -315,7 +315,7 @@ Finally, attach the preprocessed repro files (*filename*.i and *modulename*.i) a When issues involve C++ modules, providing a module trace file along with the preprocessed repro improves diagnostic quality and reduces turnaround time. A module trace file records detailed information about module operations during compilation. -1. In the developer command prompt console window, enter the command **cl /d1module:enableLogging** *trace.json* *arguments* *filename.cpp*. For *trace.json*, specify the desired output file name for the module trace. For *arguments*, use the compilation arguments. For *filename.cpp*, specify the source file that reproduces the problem. +1. In the developer command prompt console window, enter the command **cl /d1module:enableLogging** *trace.json* [*other-args*] *filename.cpp*. For *trace.json*, specify the desired output file name for the module trace. For [*other-args*], include any additional compilation arguments. For *filename.cpp*, specify the source file that reproduces the problem. > [!IMPORTANT] > You must compile exactly one source file to collect a module trace. Don't use the **/MP** (multi-processor compilation) option or invoke the compiler with multiple source files. Using **/MP** or multi-source invocations can cause the trace to represent only the last compiled file or be incomplete. From 5ba90ff24cfe20b92edc491ed6120d120d1cabef Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 3 Dec 2025 14:59:22 -0800 Subject: [PATCH 2126/2255] customer question --- docs/windows/latest-supported-vc-redist.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index eb11eb2f471..52e25ecf47b 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -1,7 +1,7 @@ --- title: "Latest supported Visual C++ Redistributable downloads" description: "This article provides download links for the latest Visual C++ Redistributable packages." -ms.date: 11/03/2025 +ms.date: 12/03/2025 helpviewer_keywords: [ "redist", @@ -58,12 +58,12 @@ Download other versions, including long term servicing release channel (LTSC) ve - Some of the downloads that are mentioned in this article are currently available on [my.visualstudio.com](https://my.visualstudio.com/). Log in using a Visual Studio Subscription account so that you can access the download links. If you're asked for credentials, use your existing Visual Studio subscription account. Or, create a free account by choosing the [**No account? Create one!**](https://my.visualstudio.com/). - The Visual C++ v14 Redistributable doesn't have separate packages for different languages. License terms for different languages are available at [https://aka.ms/VCRedistLicense](https://aka.ms/VCRedistLicense). -- Visual Studio 2017 and later share the same Redistributable files. Any apps built by Microsoft C++ (MSVC) Build Tools v14.* available in Visual Studio 2017, 2019, 2022, or 2026 can use the latest Visual C++ v14 Redistributable. However, the version of the redistributable installed on the machine must be the same or higher than the version of the MSVC Build Tools used to create your application. For more information about which version of the Redistributable to install, see [Determining which DLLs to redistribute](determining-which-dlls-to-redistribute.md). For more information about binary compatibility, see [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md). +- Visual Studio 2017 and later share the same Redistributable files. Any apps built by Microsoft C++ (MSVC) Build Tools v14.* available in Visual Studio 2017, 2019, 2022, or 2026 can use the latest Visual C++ v14 Redistributable. The version of the redistributable installed on the machine must be the same or higher than the version of the MSVC Build Tools used to create your application. For more information about which version of the Redistributable to install, see [Determining which DLLs to redistribute](determining-which-dlls-to-redistribute.md). For more information about binary compatibility, see [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md). - The latest version of the Visual C++ v14 Redistributable included with Visual Studio 2026 only supports the following operating systems: * Windows 10 and 11 * Windows Server 2016, 2019, 2022, and 2025 - Support for Visual Studio 2015 ended on October 15, 2025. Because support for the Visual C++ Redistributable is connected to the version of Visual Studio in which it first ships, support for Visual C++ 2015 Redistributable (version 14.0.24212) also ended October 15, 2025. See [Visual Studio 2015 (VC++ 14.0)](#visual-studio-2015-vc-140-no-longer-supported) section below for the latest available version.
-When Visual Studio 2015 support ended, the v14 runtime was binary compatible with applications built using the VS 2015 MSVC Build Tools. Since VS 2015 is no longer supported, we recommend updating your projects to use a supported MSVC Build Tools version and the latest v14 runtime. +When Visual Studio 2015 support ended, the v14 runtime was binary compatible with applications built using the VS 2015 MSVC Build Tools. Since VS 2015 is no longer supported, we recommend updating your projects to use a supported MSVC Build Tools version and the latest v14 runtime. The Visual C++ Redistributable for 2017 and beyond is an in-place upgrade of the Visual C++ 2015 Redistributable (14.0.24212.0). - The Visual C++ Redistributable supports several command-line options. For more information, see [Command-line options for the Redistributable packages](./redistributing-visual-cpp-files.md#command-line-options-for-the-redistributable-packages). ## Unsupported legacy versions From c001077cccf98c3f227890699a4c9cb05f955927 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 3 Dec 2025 15:05:24 -0800 Subject: [PATCH 2127/2255] edit --- docs/windows/latest-supported-vc-redist.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index 52e25ecf47b..33c92e2fa76 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -63,7 +63,8 @@ Download other versions, including long term servicing release channel (LTSC) ve * Windows 10 and 11 * Windows Server 2016, 2019, 2022, and 2025 - Support for Visual Studio 2015 ended on October 15, 2025. Because support for the Visual C++ Redistributable is connected to the version of Visual Studio in which it first ships, support for Visual C++ 2015 Redistributable (version 14.0.24212) also ended October 15, 2025. See [Visual Studio 2015 (VC++ 14.0)](#visual-studio-2015-vc-140-no-longer-supported) section below for the latest available version.
-When Visual Studio 2015 support ended, the v14 runtime was binary compatible with applications built using the VS 2015 MSVC Build Tools. Since VS 2015 is no longer supported, we recommend updating your projects to use a supported MSVC Build Tools version and the latest v14 runtime. The Visual C++ Redistributable for 2017 and beyond is an in-place upgrade of the Visual C++ 2015 Redistributable (14.0.24212.0). +When Visual Studio 2015 support ended, the v14 runtime was binary compatible with applications built using the VS 2015 MSVC Build Tools. Since VS 2015 is no longer supported, we recommend updating your projects to use a supported MSVC Build Tools version and the latest v14 runtime. The Visual C++ Redistributable for 2017, and later, in-place upgrade the Visual C++ 2015 Redistributable (14.0.24212.0). Redistributables for 2013 and earlier remain installed side-by-side. + - The Visual C++ Redistributable supports several command-line options. For more information, see [Command-line options for the Redistributable packages](./redistributing-visual-cpp-files.md#command-line-options-for-the-redistributable-packages). ## Unsupported legacy versions From 34c613e966151b32ead7cf3f0c1fc7748f73d4cf Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 3 Dec 2025 16:01:58 -0800 Subject: [PATCH 2128/2255] Improve clarity on generating module trace files Clarified instructions for generating a module trace file and emphasized the importance of reducing code complexity for diagnostics. --- ...ow-to-report-a-problem-with-the-visual-cpp-toolset.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md b/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md index d3a723c3715..80a3991a305 100644 --- a/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md +++ b/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md @@ -313,13 +313,14 @@ Finally, attach the preprocessed repro files (*filename*.i and *modulename*.i) a #### To generate a module trace file -When issues involve C++ modules, providing a module trace file along with the preprocessed repro improves diagnostic quality and reduces turnaround time. A module trace file records detailed information about module operations during compilation. +When issues involve C++ modules, provide a module trace file along with the preprocessed repro improves diagnostic quality to reduce turnaround time. A module trace file records detailed information about module operations during compilation. -1. In the developer command prompt console window, enter the command **cl /d1module:enableLogging** *trace.json* [*other-args*] *filename.cpp*. For *trace.json*, specify the desired output file name for the module trace. For [*other-args*], include any additional compilation arguments. For *filename.cpp*, specify the source file that reproduces the problem. +It's ideal if the example can be condensed to a single source code file, without reference to any user headers. - > [!IMPORTANT] - > You must compile exactly one source file to collect a module trace. Don't use the **/MP** (multi-processor compilation) option or invoke the compiler with multiple source files. Using **/MP** or multi-source invocations can cause the trace to represent only the last compiled file or be incomplete. +Reducing the amount of code we have to consider as a possible contributor to the problem is enormously helpful to us. Using **/MP** or multi-source invocations can cause the trace to represent only the last compiled file or be incomplete. If you can't reduce the problem to a single source file, package your code into a .zip file or similar, or consider using an IDE project repro. For more information, see [Other repros](#other-repros). +1. Open the **Developer Command Prompt** that matches the Visual Studio version and configuration architecture used to build your project. +1. Enter the command `cl /d1module:enableLogging` *trace.json* [*other-args*] *filename.cpp*. For *trace.json*, specify the desired output file name for the module trace. For [*other-args*], include any additional compilation arguments. For *filename.cpp*, specify the source file that reproduces the problem. 1. If multiple translation units are involved in the problem, run separate single-file invocations to collect a trace for the specific file that reproduces the problem. You can collect traces for additional relevant files if needed. Finally, attach the generated *trace.json* file along with the preprocessed repro to your report. From e928b2871e7e34d0e4572e6c6cf9898995ae775a Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 3 Dec 2025 16:28:14 -0800 Subject: [PATCH 2129/2255] incorp feedback Clarified command syntax --- .../how-to-report-a-problem-with-the-visual-cpp-toolset.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md b/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md index 80a3991a305..5664f47bcee 100644 --- a/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md +++ b/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md @@ -320,7 +320,7 @@ It's ideal if the example can be condensed to a single source code file, without Reducing the amount of code we have to consider as a possible contributor to the problem is enormously helpful to us. Using **/MP** or multi-source invocations can cause the trace to represent only the last compiled file or be incomplete. If you can't reduce the problem to a single source file, package your code into a .zip file or similar, or consider using an IDE project repro. For more information, see [Other repros](#other-repros). 1. Open the **Developer Command Prompt** that matches the Visual Studio version and configuration architecture used to build your project. -1. Enter the command `cl /d1module:enableLogging` *trace.json* [*other-args*] *filename.cpp*. For *trace.json*, specify the desired output file name for the module trace. For [*other-args*], include any additional compilation arguments. For *filename.cpp*, specify the source file that reproduces the problem. +1. Enter the command `cl /d1module:enableLogging`*trace.json* [*other-args*] *filename.cpp*. For *trace.json*, specify the desired output file name for the module trace. There can't be a space between `/d1module:enableLogging` and the output file name. For [*other-args*], include any additional compilation arguments. For *filename.cpp*, specify the source file that reproduces the problem. 1. If multiple translation units are involved in the problem, run separate single-file invocations to collect a trace for the specific file that reproduces the problem. You can collect traces for additional relevant files if needed. Finally, attach the generated *trace.json* file along with the preprocessed repro to your report. From a5893860a9ccff2d53f568cd8d11b8465617b629 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Thu, 4 Dec 2025 15:16:32 -0800 Subject: [PATCH 2130/2255] update style instructions (#6175) --- .github/copilot-instructions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 3f4b335d6c1..7f841f10a41 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -58,7 +58,7 @@ When writing documentation, follow these guidelines: * Code elements, like method names, property names, and language keywords. * SQL commands. * NuGet package names. - * Command-line commands. + * Command-line commands. The style in some articles uses **bold** for command-line commands, but use `code style` instead. * Database table and column names. * Resource names (like virtual machine names) that shouldn't be localized. * URLs that you don't want to be selectable. From a423eba3993d8776f84b6971917159a04daa7782 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 4 Dec 2025 16:40:54 -0800 Subject: [PATCH 2131/2255] draft --- docs/build-insights/elevate-note.md | 23 ++++++++++++++++++ .../build-insights/media/elevation-prompt.png | Bin 0 -> 39001 bytes 2 files changed, 23 insertions(+) create mode 100644 docs/build-insights/elevate-note.md create mode 100644 docs/build-insights/media/elevation-prompt.png diff --git a/docs/build-insights/elevate-note.md b/docs/build-insights/elevate-note.md new file mode 100644 index 00000000000..db97a2378e4 --- /dev/null +++ b/docs/build-insights/elevate-note.md @@ -0,0 +1,23 @@ +--- +title: "Build Insights needs additional permissions" +description: "To capture trace files, Build Insights needs additional permissions as described in this topic." +ms.topic: article +ms.date: 12/04/2025 +ms.update-cycle: 365-days +ms.topic: tutorial +f1_keywords: + - bi_permissions +--- +# Build Insights needs additional permissions + +Starting with Visual Studio 2026, Build Insights and `vcperf` need additional permissions to capture traces. + +To allow build trace capture by `vcperf`, please accept the one time, per user, elevated prompt that appears when you first attempt to capture a trace: + +:::image type="content" source="./media/elevation-prompt.png" alt-text="A screenshot of the elevation prompt. It says: To capture trace files, Build Insights needs additional permisisons. Allow this one-time elevated request?"::: + +After you accept the elevation request, you'll be able to capture trace files with `vcperf`. Once you accept this elevation request, you won't need to do it again. Accepting this request doesn't elevate permissions for Visual Studio. It only elevates permissions for `vcperf` to capture traces. + +## See also + +[Get started with C++ Build Insights](../get-started-with-cpp-build-insights.md) \ No newline at end of file diff --git a/docs/build-insights/media/elevation-prompt.png b/docs/build-insights/media/elevation-prompt.png new file mode 100644 index 0000000000000000000000000000000000000000..619c2999d87d8616b750446d6504e7df80725a30 GIT binary patch literal 39001 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 M%`9O}CeAVc4{ZLM=Kufz literal 0 HcmV?d00001 From cc4b27fae8aeb3970f1798941d091d8f40fc3407 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 4 Dec 2025 16:53:16 -0800 Subject: [PATCH 2132/2255] fix links --- docs/build-insights/elevate-note.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/build-insights/elevate-note.md b/docs/build-insights/elevate-note.md index db97a2378e4..a7bef19b663 100644 --- a/docs/build-insights/elevate-note.md +++ b/docs/build-insights/elevate-note.md @@ -4,7 +4,6 @@ description: "To capture trace files, Build Insights needs additional permission ms.topic: article ms.date: 12/04/2025 ms.update-cycle: 365-days -ms.topic: tutorial f1_keywords: - bi_permissions --- @@ -20,4 +19,4 @@ After you accept the elevation request, you'll be able to capture trace files wi ## See also -[Get started with C++ Build Insights](../get-started-with-cpp-build-insights.md) \ No newline at end of file +[Get started with C++ Build Insights](get-started-with-cpp-build-insights.md) \ No newline at end of file From 7d5b27e69c35f5c398ffb27f52464e617df41003 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 5 Dec 2025 13:50:41 -0800 Subject: [PATCH 2133/2255] Update date and wording in C2290 error documentation minor edit --- .../compiler-errors-1/compiler-error-c2290.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2290.md b/docs/error-messages/compiler-errors-1/compiler-error-c2290.md index 66b814f4caf..41f755959b1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2290.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2290.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C2290" description: "Learn more about: Compiler Error C2290" -ms.date: 08/23/2025 +ms.date: 12/5/2025 f1_keywords: ["C2290"] helpviewer_keywords: ["C2290"] --- @@ -11,7 +11,7 @@ helpviewer_keywords: ["C2290"] ## Remarks -The **`asm`** syntax is reserved for future use, try [`__asm`](../../assembler/inline/asm.md) instead. For more information, see [Inline Assembler](../../assembler/inline/inline-assembler.md). +The **`asm`** syntax is reserved for future use. Try [`__asm`](../../assembler/inline/asm.md) instead. For more information, see [Inline Assembler](../../assembler/inline/inline-assembler.md). ## Example @@ -19,11 +19,11 @@ The following example generates C2290: ```cpp // C2290.cpp -// processor: x86 +// Compile for 32 bit, i.e. x86 instead of x64 int main() { asm("nop"); // C2290 - __asm nop // OK + __asm { nop } // OK } ``` From 3b3f65c5b12da8c993281681ab3725bf3fee644c Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 5 Dec 2025 15:10:28 -0800 Subject: [PATCH 2134/2255] Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/standard-library/basic-string-class.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard-library/basic-string-class.md b/docs/standard-library/basic-string-class.md index bb063741d04..d3fcc17efe1 100644 --- a/docs/standard-library/basic-string-class.md +++ b/docs/standard-library/basic-string-class.md @@ -417,7 +417,7 @@ int main( ) << str1a << "." << endl << endl; // The second member function assigning a specific - // number of the characters of a C-string to a string + // number of characters of a C-string to a string string str1b; const char *cstr1b = "Out There"; cout << "The C-string cstr1b is: " << cstr1b << endl; From 5dd06e81bd06afa5c93315f9996f880acb22cbe5 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 5 Dec 2025 15:47:13 -0800 Subject: [PATCH 2135/2255] Update compiler-error-c2033.md For clarity, removed example that generates two errors: C2531 and C2033 --- docs/error-messages/compiler-errors-1/compiler-error-c2033.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2033.md b/docs/error-messages/compiler-errors-1/compiler-error-c2033.md index 3af050bc1ef..110b499acd5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2033.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2033.md @@ -24,7 +24,6 @@ The following example generates C2033: struct S { int* ptr : 1; // C2033 - int& ref : 1; // C2033 int arr[3] : 1; // C2033 }; ``` From 5175ad67713c4c368a8aa9b707b0dec0444dad01 Mon Sep 17 00:00:00 2001 From: jdp_ <42700985+jdpatdiscord@users.noreply.github.com> Date: Mon, 8 Dec 2025 12:22:53 -0500 Subject: [PATCH 2136/2255] add clarification to example --- docs/cpp/ptr32-ptr64.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cpp/ptr32-ptr64.md b/docs/cpp/ptr32-ptr64.md index 08fc2cedc23..065deb056e2 100644 --- a/docs/cpp/ptr32-ptr64.md +++ b/docs/cpp/ptr32-ptr64.md @@ -28,7 +28,7 @@ For compatibility with previous versions, **_ptr32** and **_ptr64** are synonyms ## Example -The following example shows how to declare and allocate pointers with the **`__ptr32`** and **`__ptr64`** keywords. +The following example shows how to declare and allocate pointers with the **`__ptr32`** and **`__ptr64`** keywords. This code will crash when compiled for 64-bit due to the pointer from `malloc` being truncated to 32-bit. Since 32-bit pointers can be represented in 64-bit, when compiled for 32-bit this code does not necessarily crash. ```cpp #include From ae515d700ed5ec666d3142e632d772e6dc93779f Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Mon, 8 Dec 2025 16:06:12 -0800 Subject: [PATCH 2137/2255] Document $(ShortProjectName). Created an entry in the list and added to helpviewer_keywords --- .../common-macros-for-build-commands-and-properties.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/build/reference/common-macros-for-build-commands-and-properties.md b/docs/build/reference/common-macros-for-build-commands-and-properties.md index dfe8c6a5c01..bb52c1458b4 100644 --- a/docs/build/reference/common-macros-for-build-commands-and-properties.md +++ b/docs/build/reference/common-macros-for-build-commands-and-properties.md @@ -2,7 +2,7 @@ description: "Learn more about: Common macros for MSBuild commands and properties" title: "Common macros for MSBuild commands and properties" ms.date: 01/12/2024 -helpviewer_keywords: ["$(FrameworkSDKDir) macro", "ProjectName macro $(ProjectName)", "DevEnvDir macro $(DevEnvDir)", "$(DevEnvDir) macro", "TargetPath macro $(TargetPath)", "VSInstallDir macro $(VSInstallDir)", "$(InputFileName) macro", "$(SolutionFileName) macro", "macros [C++], build macros", "InputFileName macro $(InputFileName)", "$(VCInstallDir) macro", "$(IntDir) macro", "$(ConfigurationName) macro", "SolutionDir macro $(SolutionDir)", "$(TargetPath) macro", "$(Inherit) macro", "$(SolutionPath) macro", "WebDeployRoot macro $(WebDeployRoot)", "WebDeployPath macro $(WebDeployPath)", "StopEvaluating macro $(StopEvaluating)", "$(RootNamespace) macro", "$(WebDeployRoot) macro", "ProjectPath macro $(ProjectPath)", "$(ProjectPath) macro", "$(InputDir) macro", "SolutionName macro $(SolutionName)", "ProjectExt macro $(ProjectExt)", "$(TargetExt) macro", "$(ProjectFileName) macro", "TargetName macro $(TargetName)", "$(References) macro", "References macro $(References)", "TargetExt macro $(TargetExt)", "ProjectDir macro $(ProjectDir)", "$(TargetDir) macro", "SolutionExt macro $(SolutionExt)", "$(SolutionDir) macro", "ProjectFileName macro $(ProjectFileName)", "VCInstallDir macro $(VCInstallDir)", "$(InputExt) macro", "$(TargetFileName) macro", "$(SolutionExt) macro", "PlatformName macro $(PlatformName)", "IntDir macro $(IntDir)", "$(FrameworkVersion) macro", "$(ProjectDir) macro", "build macros [C++]", "InputPath macro $(InputPath)", "$(VSInstallDir) macro", "$(WebDeployPath) macro", "TargetFileName macro $(TargetFileName)", "NoInherit macro $(NoInherit)", "ConfigurationName macro $(ConfigurationName)", "$(ProjectExt) macro", "TargetDir macro $(TargetDir)", "InputName macro $(InputName)", "$(ProjectName) macro", "FrameworkSDKDir macro $(FrameworkSDKDir)", "$(ParentName) macro", "InputExt macro $(InputExt)", "$(SafeRootNamespace) macro", "InputDir macro $(InputDir)", "$(FxCopDir) macro", "$(RemoteMachine) macro", "Inherit macro $(Inherit)", "FrameworkVersion macro $(FrameworkVersion)", "$(StopEvaluating) macro", "$(OutDir) macro", "FrameworkDir macro $(FrameworkDir)", "SolutionFileName macro $(SolutionFileName)", "$(NoInherit) macro", "RemoteMachine macro $(RemoteMachine)", "properties [C++], build property macros", "$(TargetName) macro", "$(SolutionName) macro", "$(InputPath) macro", "ParentName macro $(ParentName)", "OutDir macro $(OutDir)", "SafeRootNamespace macro $(SafeRootNamespace)", "FxCopDir macro $(FxCopDir)", "$(InputName) macro", "RootNamespace macro $(RootNamespace)", "builds [C++], macros", "$(FrameworkDir) macro", "$(PlatformName) macro", "$(PlatformShortName) macro","SolutionPath macro $(SolutionPath)"] +helpviewer_keywords: ["$(FrameworkSDKDir) macro", "ProjectName macro $(ProjectName)", "DevEnvDir macro $(DevEnvDir)", "$(DevEnvDir) macro", "TargetPath macro $(TargetPath)", "VSInstallDir macro $(VSInstallDir)", "$(InputFileName) macro", "$(SolutionFileName) macro", "macros [C++], build macros", "InputFileName macro $(InputFileName)", "$(VCInstallDir) macro", "$(IntDir) macro", "$(ConfigurationName) macro", "SolutionDir macro $(SolutionDir)", "$(TargetPath) macro", "$(Inherit) macro", "$(SolutionPath) macro", "WebDeployRoot macro $(WebDeployRoot)", "WebDeployPath macro $(WebDeployPath)", "StopEvaluating macro $(StopEvaluating)", "$(RootNamespace) macro", "$(WebDeployRoot) macro", "ProjectPath macro $(ProjectPath)", "$(ProjectPath) macro", "$(InputDir) macro", "SolutionName macro $(SolutionName)", "ProjectExt macro $(ProjectExt)", "$(TargetExt) macro", "$(ProjectFileName) macro", "TargetName macro $(TargetName)", "$(References) macro", "References macro $(References)", "TargetExt macro $(TargetExt)", "ProjectDir macro $(ProjectDir)", "$(TargetDir) macro", "SolutionExt macro $(SolutionExt)", "$(SolutionDir) macro", "ProjectFileName macro $(ProjectFileName)", "VCInstallDir macro $(VCInstallDir)", "$(InputExt) macro", "$(TargetFileName) macro", "$(SolutionExt) macro", "PlatformName macro $(PlatformName)", "IntDir macro $(IntDir)", "$(FrameworkVersion) macro", "$(ProjectDir) macro", "build macros [C++]", "InputPath macro $(InputPath)", "$(VSInstallDir) macro", "$(WebDeployPath) macro", "TargetFileName macro $(TargetFileName)", "NoInherit macro $(NoInherit)", "ConfigurationName macro $(ConfigurationName)", "$(ProjectExt) macro", "TargetDir macro $(TargetDir)", "InputName macro $(InputName)", "$(ProjectName) macro", "FrameworkSDKDir macro $(FrameworkSDKDir)", "$(ParentName) macro", "InputExt macro $(InputExt)", "$(SafeRootNamespace) macro", "InputDir macro $(InputDir)", "$(FxCopDir) macro", "$(RemoteMachine) macro", "Inherit macro $(Inherit)", "FrameworkVersion macro $(FrameworkVersion)", "$(StopEvaluating) macro", "$(OutDir) macro", "FrameworkDir macro $(FrameworkDir)", "SolutionFileName macro $(SolutionFileName)", "$(NoInherit) macro", "RemoteMachine macro $(RemoteMachine)", "properties [C++], build property macros", "$(TargetName) macro", "$(SolutionName) macro", "$(InputPath) macro", "ParentName macro $(ParentName)", "OutDir macro $(OutDir)", "SafeRootNamespace macro $(SafeRootNamespace)", "FxCopDir macro $(FxCopDir)", "$(InputName) macro", "RootNamespace macro $(RootNamespace)", "builds [C++], macros", "$(FrameworkDir) macro", "$(PlatformName) macro", "$(PlatformShortName) macro","SolutionPath macro $(SolutionPath)", "ShortProjectName macro $(ShortProjectName)"] --- # Common macros for MSBuild commands and properties @@ -44,6 +44,7 @@ This table describes a commonly used subset of the available macros; there are m | **`$(ProjectExt)`** | The file extension of the project. It includes the '.' before the file extension. | | **`$(ProjectFileName)`** | The file name of the project (defined as base name + file extension). | | **`$(ProjectName)`** | The base name of the project. | +| **`$(ShortProjectName)`** | Shortened project name used when `IntDir` is unset; defaults to `$(ProjectName)` but truncates long names to `ProjectName.Substring(0,8).ProjectGuid.Substring(1,8)` to keep intermediate paths short and unique. | | **`$(ProjectPath)`** | The absolute path name of the project (defined as drive + path + base name + file extension). | | **`$(PublishDir)`** | The output location for the publish target; includes the trailing backslash (\\). Defaults to the **`$(OutDir)app.publish\`** folder. | | **`$(RemoteMachine)`** | Set to the value of the **Remote Machine** property on the Debug property page. For more information, see [Changing Project Settings for a C/C++ Debug Configuration](/visualstudio/debugger/project-settings-for-a-cpp-debug-configuration). | From 774abf6864f160d3b89fd05c1c911da20f85630f Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 9 Dec 2025 09:31:40 -0800 Subject: [PATCH 2138/2255] acrolinx --- docs/build-insights/elevate-note.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/build-insights/elevate-note.md b/docs/build-insights/elevate-note.md index a7bef19b663..5712680839b 100644 --- a/docs/build-insights/elevate-note.md +++ b/docs/build-insights/elevate-note.md @@ -2,20 +2,20 @@ title: "Build Insights needs additional permissions" description: "To capture trace files, Build Insights needs additional permissions as described in this topic." ms.topic: article -ms.date: 12/04/2025 +ms.date: 12/9/2025 ms.update-cycle: 365-days f1_keywords: - bi_permissions --- # Build Insights needs additional permissions -Starting with Visual Studio 2026, Build Insights and `vcperf` need additional permissions to capture traces. +Starting with Visual Studio 2026, Build Insights and `vcperf` need extra permissions to capture traces. -To allow build trace capture by `vcperf`, please accept the one time, per user, elevated prompt that appears when you first attempt to capture a trace: +To allow `vcperf` to capture build traces, please accept the one time, per user, elevated prompt that appears when you first attempt to capture a trace: :::image type="content" source="./media/elevation-prompt.png" alt-text="A screenshot of the elevation prompt. It says: To capture trace files, Build Insights needs additional permisisons. Allow this one-time elevated request?"::: -After you accept the elevation request, you'll be able to capture trace files with `vcperf`. Once you accept this elevation request, you won't need to do it again. Accepting this request doesn't elevate permissions for Visual Studio. It only elevates permissions for `vcperf` to capture traces. +Once you accept this elevation request, you can capture trace files with `vcperf`. You won't be prompted again to elevate permissions again. Accepting this request doesn't elevate permissions for Visual Studio--only for `vcperf` so it can to capture traces. ## See also From ef0304f7fca7eddab3dd264f1d2e5b2509c9b805 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 9 Dec 2025 09:32:23 -0800 Subject: [PATCH 2139/2255] spelling --- docs/build-insights/elevate-note.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build-insights/elevate-note.md b/docs/build-insights/elevate-note.md index 5712680839b..058252e52ba 100644 --- a/docs/build-insights/elevate-note.md +++ b/docs/build-insights/elevate-note.md @@ -13,7 +13,7 @@ Starting with Visual Studio 2026, Build Insights and `vcperf` need extra permiss To allow `vcperf` to capture build traces, please accept the one time, per user, elevated prompt that appears when you first attempt to capture a trace: -:::image type="content" source="./media/elevation-prompt.png" alt-text="A screenshot of the elevation prompt. It says: To capture trace files, Build Insights needs additional permisisons. Allow this one-time elevated request?"::: +:::image type="content" source="./media/elevation-prompt.png" alt-text="A screenshot of the elevation prompt. It says: To capture trace files, Build Insights needs additional permissions. Allow this one-time elevated request?"::: Once you accept this elevation request, you can capture trace files with `vcperf`. You won't be prompted again to elevate permissions again. Accepting this request doesn't elevate permissions for Visual Studio--only for `vcperf` so it can to capture traces. From 615815f97b45874deaf7c50d097b1e664f997462 Mon Sep 17 00:00:00 2001 From: Hulon Jenkins <109993038+HulonJenkins@users.noreply.github.com> Date: Tue, 9 Dec 2025 13:16:08 -0800 Subject: [PATCH 2140/2255] Add documentation for [[msvc::musttail]] attribute (#5862) * Add documentation for [[msvc::musttail]] attribute --------- Co-authored-by: Tyler Whitney --- docs/cpp/attributes.md | 56 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 53 insertions(+), 3 deletions(-) diff --git a/docs/cpp/attributes.md b/docs/cpp/attributes.md index 8ed976529a0..9a45ef04e6f 100644 --- a/docs/cpp/attributes.md +++ b/docs/cpp/attributes.md @@ -1,9 +1,9 @@ --- title: "Attributes in C++" description: "Learn more about: Attributes in C++" -f1_keywords: ["deprecated", "noreturn", "carries_dependency", "fallthrough", "nodiscard", "maybe_unused", "likely", "unlikely", "gsl::suppress", "msvc::flatten", "msvc::forceinline", "msvc::forceinline_calls", "msvc::intrinsic", "msvc::noinline", "msvc::noinline_calls", "msvc::no_tls_guard"] -helpviewer_keywords: ["deprecated", "noreturn", "carries_dependency", "fallthrough", "nodiscard", "maybe_unused", "likely", "unlikely", "gsl::suppress", "msvc::flatten", "msvc::forceinline", "msvc::forceinline_calls", "msvc::intrinsic", "msvc::noinline", "msvc::noinline_calls", "msvc::no_tls_guard"] -ms.date: 4/13/2023 +f1_keywords: ["deprecated", "noreturn", "carries_dependency", "fallthrough", "nodiscard", "maybe_unused", "likely", "unlikely", "gsl::suppress", "msvc::flatten", "msvc::forceinline", "msvc::forceinline_calls", "msvc::intrinsic", "msvc::noinline", "msvc::noinline_calls", "msvc::no_tls_guard", "msvc::musttail"] +helpviewer_keywords: ["deprecated", "noreturn", "carries_dependency", "fallthrough", "nodiscard", "maybe_unused", "likely", "unlikely", "gsl::suppress", "msvc::flatten", "msvc::forceinline", "msvc::forceinline_calls", "msvc::intrinsic", "msvc::noinline", "msvc::noinline_calls", "msvc::no_tls_guard", "msvc::musttail"] +ms.date: 12/9/2025 --- # Attributes in C++ @@ -159,6 +159,56 @@ void f() { } ``` +### `[[msvc::musttail]]` + +The `[[msvc::musttail]]` attribute, introduced in [MSVC Build Tools version 14.50](../overview/what-s-new-for-msvc.md#whats-new-for-msvc-build-tools-version-1450), is an experimental x64-only Microsoft-specific attribute that enforces tail-call optimization. When applied to a qualifying return statement, it instructs the compiler to emit the call as a tail call. If the compiler can't emit the tail call, it produces a compilation error. The `[[msvc::musttail]]` attribute enforces a tail call instead of inlining the function. + +`[[msvc::musttail]]` requirements: +- The caller and callee must have matching return types. +- The calling conventions must be compatible. +- The tail call must be the final action in the calling function. +- The callee can't use more stack space than the calling function. +- If more than four integer parameters are passed, the calling function must allocate enough stack space for those additional arguments. +- Compile with `/O2` or `/O2 /GL` optimization level. + +#### Example + +Tail calls are a compiler optimization that is possible when a function call is the last action performed before returning. Instead of creating a new stack frame to call the function, the current function's stack frame is reused. This reduces stack usage and improves performance—especially in recursive scenarios. + +In the following code, the `[[msvc::musttail]]` attribute applied to `return increment(x)` causes control to transfer directly to `increment`. When `increment` reaches the `return x+1;` statement, its result is provided directly to the caller of `incrementIfPositive`, that is `main`. This replaces inlining `increment` into `incrementIfPositive` or calling `increment` from `incrementIfPositive` and returning to `incrementIfPositive` before returning to `main`. The tail call optimization eliminates the need for `incrementIfPositive` to regain control after `increment` finishes. This is a performance optimization that reduces stack usage, especially useful in recursive scenarios. + +```cpp +// compile with /O2 +#include + +int increment(int x) +{ + return x + 1; +} + +int incrementIfPositive(int x) +{ + if (x > 0) + { + [[msvc::musttail]] + return increment(x); + } + return -1; +} + +int main() +{ + int result = incrementIfPositive(42); + if (result < 0) + { + return -1; + } + + std::cout << result; // outputs 43 + return 0; +} +``` + ### `[[msvc::noinline]]` When placed before a function declaration, the Microsoft-specific attribute `[[msvc::noinline]]` has the same meaning as `__declspec(noinline)`. From ca52ece856a120af87a99f3228d555c283e80fcf Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 11 Dec 2025 09:05:17 -0800 Subject: [PATCH 2141/2255] add metadata --- docs/build/use-github-copilot-create-cpp-console-app.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/build/use-github-copilot-create-cpp-console-app.md b/docs/build/use-github-copilot-create-cpp-console-app.md index b70ab460381..1af34386ebc 100644 --- a/docs/build/use-github-copilot-create-cpp-console-app.md +++ b/docs/build/use-github-copilot-create-cpp-console-app.md @@ -6,6 +6,8 @@ ms.topic: "tutorial" ms.custom: - ai-assisted - copilot-scenario-highlight + - ce-skilling-ai-copilot + - ms.update-cycle: 180 days --- # Use AI to create a C++ console application in Visual Studio From e57fbfc2bcee00edcf8c6ced0bafb8ca43ebc7bc Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Thu, 11 Dec 2025 09:20:06 -0800 Subject: [PATCH 2142/2255] update metadata (#6186) --- docs/build-insights/elevate-note.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build-insights/elevate-note.md b/docs/build-insights/elevate-note.md index 058252e52ba..502e2087fef 100644 --- a/docs/build-insights/elevate-note.md +++ b/docs/build-insights/elevate-note.md @@ -3,7 +3,7 @@ title: "Build Insights needs additional permissions" description: "To capture trace files, Build Insights needs additional permissions as described in this topic." ms.topic: article ms.date: 12/9/2025 -ms.update-cycle: 365-days +ms.update-cycle: 3650-days f1_keywords: - bi_permissions --- From 8402f01dad74a9b3c234f597df5bdfb0d93fa9c1 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 11 Dec 2025 11:20:02 -0800 Subject: [PATCH 2143/2255] add PM note --- docs/build/clang-support-msbuild.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/build/clang-support-msbuild.md b/docs/build/clang-support-msbuild.md index 6e44fbb42ab..c8e52173a4a 100644 --- a/docs/build/clang-support-msbuild.md +++ b/docs/build/clang-support-msbuild.md @@ -1,7 +1,7 @@ --- title: "Clang/LLVM support in Visual Studio projects" description: "Learn more about: Clang/LLVM support in Visual Studio projects" -ms.date: 03/13/2024 +ms.date: 12/11/2025 ms.description: "Configure a Visual Studio MSBuild project to use the Clang/LLVM toolchain." helpviewer_keywords: ["Clang support for C++ MSBuild projects"] --- @@ -49,6 +49,10 @@ The Individual components tab is selected in the installer. C++ Clang Compiler f ::: moniker range=">=msvc-160" Later versions of Visual Studio provide newer versions of the Clang toolset. The bundled version of Clang gets updated automatically to stay current with updates in the Microsoft implementation of the Standard Library. For example, Visual Studio 2019 version 16.11 includes Clang v12. +The LLVM experience in Visual Studio delivers seamless build support, project system integration, and design-time features that work with your choice of LLVM distributions. For acquisition convenience, we provide an optional LLVM binary distribution with Visual Studio. This LLVM toolset is provided as-is, sourced directly from the [LLVM Foundation’s release page](https://github.com/llvm/llvm-project/releases) without modifications by Microsoft. The installed binaries, are digitally signed with a third-party Microsoft code signing certificate to mark their third-party status and to confirm that they were obtained from the LLVM Foundation’s release page. + +LLVM updates in Visual Studio are typically aligned with major LLVM releases ahead of a Visual Studio general release. However, if the community or partners report security or critical blocking issues that were addressed in a minor LLVM release, we prioritize updating the bundled LLVM toolset to a newer minor version containing the fix. Visual Studio’s build and project system supports using your own custom LLVM installation if needed. + ## Configure a Windows project to use Clang tools To configure a Visual Studio project to use Clang, right-click on the project node in **Solution Explorer** and choose **Properties**. Typically, you should first choose **All configurations** at the top of the dialog. Then, under **General** > **Platform Toolset**, choose **LLVM (clang-cl)** and then **OK**. From d97a5ae668efc9d865ddd02197a3e4c962b2d539 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 11 Dec 2025 14:59:46 -0800 Subject: [PATCH 2144/2255] metadata update --- docs/build/use-github-copilot-create-cpp-console-app.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build/use-github-copilot-create-cpp-console-app.md b/docs/build/use-github-copilot-create-cpp-console-app.md index 1af34386ebc..49d4b8c3687 100644 --- a/docs/build/use-github-copilot-create-cpp-console-app.md +++ b/docs/build/use-github-copilot-create-cpp-console-app.md @@ -3,11 +3,11 @@ title: Use AI to create a C++ console application in Visual Studio description: "Learn how to use GitHub Copilot to create a C++ app using Microsoft C++ in Visual Studio." ms.date: 10/24/2025 ms.topic: "tutorial" +ms.collection: ce-skilling-ai-copilot ms.custom: - ai-assisted - copilot-scenario-highlight - - ce-skilling-ai-copilot - - ms.update-cycle: 180 days +ms.update-cycle: "180 days" --- # Use AI to create a C++ console application in Visual Studio From d21d6349860b2002d2ca829a08c6974d906d9be2 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 11 Dec 2025 15:09:24 -0800 Subject: [PATCH 2145/2255] fix metadata --- docs/build/use-github-copilot-create-cpp-console-app.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/use-github-copilot-create-cpp-console-app.md b/docs/build/use-github-copilot-create-cpp-console-app.md index 49d4b8c3687..ab3637cfa2b 100644 --- a/docs/build/use-github-copilot-create-cpp-console-app.md +++ b/docs/build/use-github-copilot-create-cpp-console-app.md @@ -7,7 +7,7 @@ ms.collection: ce-skilling-ai-copilot ms.custom: - ai-assisted - copilot-scenario-highlight -ms.update-cycle: "180 days" +ms.update-cycle: 180-days --- # Use AI to create a C++ console application in Visual Studio From d10db64b9b10aadbd045de9cd098d8bb56a171da Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 11 Dec 2025 16:42:38 -0800 Subject: [PATCH 2146/2255] acronlix --- docs/build/clang-support-msbuild.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/build/clang-support-msbuild.md b/docs/build/clang-support-msbuild.md index c8e52173a4a..a4150714fb9 100644 --- a/docs/build/clang-support-msbuild.md +++ b/docs/build/clang-support-msbuild.md @@ -49,9 +49,9 @@ The Individual components tab is selected in the installer. C++ Clang Compiler f ::: moniker range=">=msvc-160" Later versions of Visual Studio provide newer versions of the Clang toolset. The bundled version of Clang gets updated automatically to stay current with updates in the Microsoft implementation of the Standard Library. For example, Visual Studio 2019 version 16.11 includes Clang v12. -The LLVM experience in Visual Studio delivers seamless build support, project system integration, and design-time features that work with your choice of LLVM distributions. For acquisition convenience, we provide an optional LLVM binary distribution with Visual Studio. This LLVM toolset is provided as-is, sourced directly from the [LLVM Foundation’s release page](https://github.com/llvm/llvm-project/releases) without modifications by Microsoft. The installed binaries, are digitally signed with a third-party Microsoft code signing certificate to mark their third-party status and to confirm that they were obtained from the LLVM Foundation’s release page. +The LLVM experience in Visual Studio delivers seamless build support, project system integration, and design-time features that work with your choice of LLVM distributions. For acquisition convenience, we provide an optional LLVM binary distribution with Visual Studio. This LLVM toolset is provided as-is, sourced directly from the [LLVM Foundation’s release page](https://github.com/llvm/llvm-project/releases) without modifications by Microsoft. The installed binaries are digitally signed with a third-party Microsoft code signing certificate to mark their third-party status and to confirm that they were obtained from the LLVM Foundation’s release page. -LLVM updates in Visual Studio are typically aligned with major LLVM releases ahead of a Visual Studio general release. However, if the community or partners report security or critical blocking issues that were addressed in a minor LLVM release, we prioritize updating the bundled LLVM toolset to a newer minor version containing the fix. Visual Studio’s build and project system supports using your own custom LLVM installation if needed. +LLVM updates in Visual Studio are typically aligned with major LLVM releases ahead of a Visual Studio general release. However, if the community or partners report security or critical blocking issues that addressed in a minor LLVM release, we prioritize updating the bundled LLVM toolset to a newer minor version containing the fix. Visual Studio’s build and project system supports using your own custom LLVM installation if needed. ## Configure a Windows project to use Clang tools @@ -115,12 +115,12 @@ When you add a `Directory.build.props` file to a project or solution, the settin ## Set properties, edit, build, and debug -After you have set up a Clang configuration, right-click again on the project node and choose **Reload project**. You can now build and debug the project using the Clang tools. Visual Studio detects that you're using the Clang compiler and provides IntelliSense, highlighting, navigation, and other editing features. Errors and warnings are displayed in the **Output Window**. The project property pages for a Clang configuration are similar to the ones for MSVC. However, some compiler-dependent features such as Edit and Continue aren't available for Clang configurations. You can set a Clang compiler or linker option that isn't available in the property pages. Add it manually in the property pages under **Configuration Properties** > **C/C++ (or Linker)** > **Command Line** > **Additional Options**. +After you set up a Clang configuration, right-click again on the project node and choose **Reload project**. You can now build and debug the project using the Clang tools. Visual Studio detects that you're using the Clang compiler and provides IntelliSense, highlighting, navigation, and other editing features. Errors and warnings are displayed in the **Output Window**. The project property pages for a Clang configuration are similar to the ones for MSVC. However, some compiler-dependent features such as Edit and Continue aren't available for Clang configurations. You can set a Clang compiler or linker option that isn't available in the property pages. Add it manually in the property pages under **Configuration Properties** > **C/C++ (or Linker)** > **Command Line** > **Additional Options**. When debugging, you can use breakpoints, memory and data visualization, and most other debugging features. :::image type="complex" source="media/clang-debug-msbuild.png" alt-text="Screenshot of Visual Studio debugging a sample app"::: -The portion of the app that is visible creates a string vector and adds some strings to it. Execution has stopped on a breakpoint for the code: v.push_back("Clang/LLVM");. +The portion of the app that's visible creates a string vector and adds some strings to it. Execution stopped on a breakpoint for the code v.push_back("Clang/LLVM");. :::image-end::: ::: moniker-end From b518ede11fd5b04026bb8c1dd48b7e4c4f27c07f Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 11 Dec 2025 16:43:57 -0800 Subject: [PATCH 2147/2255] typo --- docs/build/clang-support-msbuild.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/clang-support-msbuild.md b/docs/build/clang-support-msbuild.md index a4150714fb9..8741b608e9b 100644 --- a/docs/build/clang-support-msbuild.md +++ b/docs/build/clang-support-msbuild.md @@ -51,7 +51,7 @@ Later versions of Visual Studio provide newer versions of the Clang toolset. The The LLVM experience in Visual Studio delivers seamless build support, project system integration, and design-time features that work with your choice of LLVM distributions. For acquisition convenience, we provide an optional LLVM binary distribution with Visual Studio. This LLVM toolset is provided as-is, sourced directly from the [LLVM Foundation’s release page](https://github.com/llvm/llvm-project/releases) without modifications by Microsoft. The installed binaries are digitally signed with a third-party Microsoft code signing certificate to mark their third-party status and to confirm that they were obtained from the LLVM Foundation’s release page. -LLVM updates in Visual Studio are typically aligned with major LLVM releases ahead of a Visual Studio general release. However, if the community or partners report security or critical blocking issues that addressed in a minor LLVM release, we prioritize updating the bundled LLVM toolset to a newer minor version containing the fix. Visual Studio’s build and project system supports using your own custom LLVM installation if needed. +LLVM updates in Visual Studio are typically aligned with major LLVM releases ahead of a Visual Studio general release. However, if the community or partners report security or critical blocking issues addressed in a minor LLVM release, we prioritize updating the bundled LLVM toolset to a newer minor version containing the fix. Visual Studio’s build and project system supports using your own custom LLVM installation if needed. ## Configure a Windows project to use Clang tools From 3a662519b92860feba06a923ddf2355f086b85f9 Mon Sep 17 00:00:00 2001 From: Takashi Takebayashi Date: Sat, 13 Dec 2025 10:40:39 +0900 Subject: [PATCH 2148/2255] Fix typo: trough -> through (#5867) --- docs/build-insights/reference/sdk/functions/relog.md | 2 +- .../reference/sdk/functions/stop-and-relog-tracing-session.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build-insights/reference/sdk/functions/relog.md b/docs/build-insights/reference/sdk/functions/relog.md index 4bf0bb1dcee..c68f319545d 100644 --- a/docs/build-insights/reference/sdk/functions/relog.md +++ b/docs/build-insights/reference/sdk/functions/relog.md @@ -75,7 +75,7 @@ A result code from the [`RESULT_CODE`](../other-types/result-code-enum.md) enum. ### Remarks -The input trace is passed through the analyzer group *`numberOfAnalysisPasses`* times. There's no similar option for relogging passes. The trace is passed trough the relogger group only once, after all analysis passes are complete. +The input trace is passed through the analyzer group *`numberOfAnalysisPasses`* times. There's no similar option for relogging passes. The trace is passed through the relogger group only once, after all analysis passes are complete. The relogging of system events like CPU samples from within a relogger class isn't supported. Use the *`systemEventsRetentionFlags`* parameter to decide which system events to keep in the output trace. diff --git a/docs/build-insights/reference/sdk/functions/stop-and-relog-tracing-session.md b/docs/build-insights/reference/sdk/functions/stop-and-relog-tracing-session.md index b89dc7f62f5..10f6b58ae14 100644 --- a/docs/build-insights/reference/sdk/functions/stop-and-relog-tracing-session.md +++ b/docs/build-insights/reference/sdk/functions/stop-and-relog-tracing-session.md @@ -72,7 +72,7 @@ A result code from the [RESULT_CODE](../other-types/result-code-enum.md) enum. ### Remarks -The input trace is passed through the analyzer group *numberOfAnalysisPasses* times. There's no similar option for relogging passes. The trace is passed trough the relogger group only once, after all analysis passes are complete. +The input trace is passed through the analyzer group *numberOfAnalysisPasses* times. There's no similar option for relogging passes. The trace is passed through the relogger group only once, after all analysis passes are complete. The relogging of system events like CPU samples from within a relogger class isn't supported. Use the *systemEventsRetentionFlags* parameter to decide which system events to keep in the output trace. From 4fd4f59f533788f20b190f79f1efb445faed9c0b Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 12 Dec 2025 18:37:08 -0800 Subject: [PATCH 2149/2255] Copilotinstructions (#6194) * draft1 * new copilot instructions. Includes for triaging issues. --- .github/copilot-instructions.md | 253 +++++++++++------- .../copilot-issue-verification-action-plan.md | 220 +++++++++++++++ .vscode/settings.json | 5 +- 3 files changed, 382 insertions(+), 96 deletions(-) create mode 100644 .github/copilot-issue-verification-action-plan.md diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 7f841f10a41..417f80a8da9 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -1,120 +1,183 @@ -When writing documentation, follow these guidelines: - -## General style tips - -* Get to the point fast. Be concise and clear. -* Talk like a person. -* Simpler is better. -* Be brief. Give customers just enough information to make decisions confidently. Prune excess words. -* Break up long sentences. -* Follow the style of the [Microsoft Writing Style Guide](https://learn.microsoft.com/style-guide/welcome/). If there's a conflict between the following guidelines and the Microsoft Writing Style Guide, ask how to resolve it. - -## Grammar - -* Avoid "we"/"our" referring to documentation authors -* Use present tense verbs (is, open) instead of past tense (was, opened). For example, "The method returns a value" instead of "The method will return a value." -* Write factual statements and direct commands. Avoid hypotheticals. -* Use active voice where the subject performs the action. -* Write in second person (you) to speak directly to readers. -* Use gender-neutral language. -* Avoid multiple -ing words that could create ambiguity. -* Keep prepositional phrases simple and clear. -* Place modifiers close to what they modify. -* Use a conversational tone with contractions. -* Don't use "we" or "our" to refer to the authors of the documentation. -* Use the imperative mood for instructions. For example, "Call the method" instead of "You should call the method." -* Use "might" instead of "may" to indicate possibility. For example, "This method might throw an exception" instead of "This method may throw an exception." -* Use the Oxford comma in lists of three or more items. +# Copilot Instructions for `cpp-docs-pr` + +## Introduction + +This document contains general and repository-specific instructions for GitHub Copilot when assisting with the `cpp-docs-pr` repository. + +## Priority Levels + +This document uses the following markers to indicate instruction priority: + +- **[REQUIRED]** - Must be followed. May cause build failures or PR blocks if violated +- **[STYLE]** - Microsoft Writing Style Guide requirement for consistency +- **[C++-SPECIFIC]** - C++ documentation convention that overrides general guidance +- No marker - Best practice recommendation; use judgment based on context + +## General Guidelines + +### 1. Issue Handling +When creating a PR for an issue: +- [ ] Read the full issue and all linked references + - [ ] **new-feature:** State which version introduced the feature + - [ ] **bug:** Focus on correcting technical inaccuracies +- [ ] When you're assigned an issue, after you've completed your work and the workflows (status checks) have run, ensure there are no build warnings under the OpenPublishing.Build status check. If there are, open the build report (under View Details) and resolve any build warnings you introduced. +- [ ] When starting work on an issue, document your understanding in a comment: state the issue's purpose, expected outcome, and your implementation approach. + +### 2. Issue Discussion Analysis +When working on an issue: +- [ ] **Read the complete issue discussion** - Don't rely solely on the initial issue description +- [ ] **Prioritize maintainer guidance** - Comments from repository maintainers (especially those with "MEMBER" association) should take precedence over the original issue description +- [ ] **Look for updated analysis** - Later comments may contain revised understanding, additional context, or modified resolution approaches +- [ ] **Check for explicit instructions** - Look for phrases like "Action required by GitHub Copilot" or direct "@copilot" mentions that provide specific guidance +- [ ] **Validate your understanding** - If the discussion seems to contradict the initial issue description, follow the most recent maintainer guidance + +### 3. File Naming and Organization +**Naming conventions:** +- [ ] Name new Markdown files in all lowercase with hyphens separating words +- [ ] Omit filler words like "the" or "a" from file names + +**Folder structure:** +- [ ] Linux topics → `docs/linux/` +- [ ] C++ STL → `docs/standard-library/` +- [ ] C runtime → `docs/c-runtime-library/` +- [ ] C++ language → `docs/cpp/` +- [ ] Visual Studio IDE features → `docs/ide/` +- [ ] Build process/modules → `docs/build/reference/` +- [ ] Build Insights → `docs/build-insights/` + +### 4. Links and References +- [ ] Add links to related topics and resources where appropriate. +- [ ] Use relative links for files in this repo +- [ ] **[REQUIRED]** Links to other documentation articles should be relative, not absolute. Start relative links with `/docs/` and include the `.md` suffix. If you add a link to another page on learn.microsoft.com that's not in this repo, remove https://learn.microsoft.com/en-us from the link. +- [ ] **[REQUIRED]** Links to bookmarks within the same article should be relative and start with `#`. +- [ ] **[REQUIRED]** Link descriptions should be descriptive and make sense on their own. Don't use "click here" or "this link" or "here". +- [ ] **[STYLE]** When you are going to refer to another file or an article on the web, use this format: "For more information, see [descriptive name of link](link path)." The exception to this is the See Also links at the end of an article. Those should be markdown links and contain the title of the article you link to as the descriptive portion of the link. +- [ ] For external links to non-Microsoft sites: + - [ ] **[REQUIRED]** Use absolute URLs + - [ ] **[REQUIRED]** Remove any language or culture segment from the URL path (such as `/en-us/`, `/fr-fr/`, `/en/`, etc.) + - [ ] Example (MDN): + - [ ] Original: `https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event` + - [ ] Correct: `https://developer.mozilla.org/docs/Web/API/Element/click_event` + +- [ ] For links to Microsoft Learn content in other repositories: + - [ ] **[REQUIRED]** Use the relative URL starting with a forward slash + - [ ] Don't include the scheme and the host (example: `https://learn.microsoft.com`) and don't include the locale (example: `en-us`) + - [ ] Example: For the target Learn website URL `https://learn.microsoft.com/en-us/dotnet/core/introduction`, use the relative URL `/dotnet/core/introduction` for the link destination + +## Repository-Specific Guidelines +- [ ] **[REQUIRED]** Follow the [Microsoft Writing Style Guide](https://learn.microsoft.com/en-us/style-guide/welcome/) + - [ ] Use contractions following the guidance in [Use contractions](https://learn.microsoft.com/en-us/style-guide/word-choice/use-contractions) +- [ ] **Repository Exceptions**: + - [ ] **[REQUIRED]** Use **bold** text for UI elements like menu items, dialog names, and names of text boxes. + - [ ] **[REQUIRED]** Number ordered lists as "1." for every item (don't use sequential numbers) + - [ ] **[REQUIRED]** Use backticks around content specifically for file names (`file.txt`), folders (`folder`), file paths (`folder/file.txt`), custom types (`myVariable`, `MyClass`), raw URLs in the text (`https://www.contoso.com`), file extensions (`.cpp`), and code like method names, property names, and language keywords. Also use for text that should never be localized. + - [ ] **[REQUIRED]** Use `code style` for resource names (like virtual machine names) that shouldn't be localized. + - [ ] **[C++-SPECIFIC]** Use `code style` for command-line commands. The style in some articles uses **bold** for command-line commands, but use `code style` instead. + - [ ] **[STYLE]** Use placeholders with braces in the format `{PLACEHOLDER NAME}` when used code examples and other contexts where placeholders are used. Use uppercase letters with spaces between words for the placeholder name inside the braces. + - [ ] Wrong: "Launch the app and navigate to `https://localhost:/openapi/v1.json` to view the generated OpenAPI document." + - [ ] Correct: "Launch the app and navigate to `https://localhost:{PORT}/openapi/v1.json` to view the generated OpenAPI document, where the `{PORT}` placeholder is the port." + - [ ] For any new or updated .md file added to the repository, ensure the following frontmatter (metadata) is included as specified in [Metadata for Microsoft Learn documentation.](https://learn.microsoft.com/en-us/contribute/content/metadata): + - [ ] **[REQUIRED]** Metadata `ai-usage: ai-assisted` if any AI assistance was used. + - [ ] **[REQUIRED]** When updating a topic that has the ms.assetid: metadata, remove the entire ms.assetid line. + - [ ] **[REQUIRED]** Place the title metadata first, followed by the remaining metadata lines as shown in the following example: +**Example:** + ```yaml + --- + title: "Understanding C++ modules" + description: "Learn how to use C++ modules in Visual Studio" + author: github-username + ms.author: ms-alias + ms.date: 12/11/2025 + ms.topic: conceptual + ai-usage: ai-assisted + --- + ``` + +### 5. Content Writing Guidelines +- [ ] **[STYLE]** Get to the point fast. Be concise and clear. +- [ ] **[STYLE]** Talk like a person. +- [ ] **[STYLE]** Simpler is better. +- [ ] **[STYLE]** Be brief. Give customers just enough information to make decisions confidently. Prune excess words. +- [ ] **[STYLE]** Break up long sentences. +- [ ] **[STYLE]** Use present tense verbs (is, open) instead of past tense (was, opened). For example, "The method returns a value" instead of "The method will return a value." +- [ ] **[STYLE]** Write factual statements and direct commands. Avoid hypotheticals. +- [ ] **[STYLE]** Use active voice where the subject performs the action. +- [ ] **[STYLE]** Write in second person (you) to speak directly to readers. +- [ ] **[STYLE]** Use gender-neutral language. +- [ ] **[STYLE]** Avoid multiple -ing words that could create ambiguity. +- [ ] **[STYLE]** Keep prepositional phrases simple and clear. +- [ ] **[STYLE]** Place modifiers close to what they modify. +- [ ] **[STYLE]** Use a conversational tone with contractions. +- [ ] **[STYLE]** Don't use "we" or "our" to refer to the authors of the documentation. +- [ ] **[STYLE]** Use the imperative mood for instructions. For example, "Call the method" instead of "You should call the method." +- [ ] **[STYLE]** Use "might" instead of "may" to indicate possibility. For example, "This method might throw an exception" instead of "This method may throw an exception." +- [ ] **[STYLE]** Use the Oxford comma in lists of three or more items. +- [ ] Introductory paragraph: + - [ ] When drafting the first paragraph of any new article, or when significantly updating an existing article: + - [ ] Explain why and when the topic matters in practical C++ development scenarios. + - [ ] Give a concise summary of what the article covers or enables, so readers know what to expect. + - [ ] When significantly updating, revise the introductory paragraph to match the new scope and content. + +### 6. PR Description Requirements +- [ ] ALWAYS include "Fixes #[issue-number]" in the PR description, at the first line of the description to link back to the original issue +- [ ] Include a clear summary of changes made +- [ ] List all files that were modified with brief descriptions ## Capitalization -* Use sentence-style capitalization for everything except proper nouns. -* Always capitalize proper nouns. -* Don’t capitalize the spelled-out form of an acronym unless it's a proper noun. -* Use title-style capitalization for product and service names. -* Don't use all uppercase for emphasis. +- [ ] Use sentence-style capitalization for everything except proper nouns. +- [ ] Always capitalize proper nouns. +- [ ] Don’t capitalize the spelled-out form of an acronym unless it's a proper noun. +- [ ] Use title-style capitalization for product and service names. +- [ ] Don't use all uppercase for emphasis. ## Numbers -* Spell out numbers for zero through nine, unless space is limited. Use numerals for 10 and above. -* Spell out numbers at the beginning of a sentence. -* Spell out ordinal numbers such as first, second, and third. Don't add -ly to form adverbs from ordinal numbers. -* Number ordered list items all as "1." instead of "1.", "2.", etc. Use bullets for unordered lists. +The following does NOT apply to step numbers but applies to all other numbers: +- [ ] Spell out numbers for zero through nine, unless space is limited. Use numerals for 10 and above. +- [ ] Spell out numbers at the beginning of a sentence. +- [ ] Spell out ordinal numbers such as first, second, and third. Don't add -ly to form adverbs from ordinal numbers. +- [ ] Number ordered list items all as 1. instead of sequentially as 1., 2., etc. Use bullets for unordered lists. ## Punctuation -* Use short, simple sentences. -* End all sentences with a period. -* Use one space after punctuation marks. -* After a colon, capitalize only proper nouns. -* Avoid semicolons - use separate sentences instead. -* Use question marks sparingly. -* Don't use slashes (/) - use "or" instead. - -## Text formatting - -* UI elements, like menu items, dialog names, and names of text boxes, should be in **bold** text. -* Use `code style` for: - * Code elements, like method names, property names, and language keywords. - * SQL commands. - * NuGet package names. - * Command-line commands. The style in some articles uses **bold** for command-line commands, but use `code style` instead. - * Database table and column names. - * Resource names (like virtual machine names) that shouldn't be localized. - * URLs that you don't want to be selectable. - * File names and folders, custom types, and other text that should never be localized. -* For code placeholders, if you want users to replace part of an input string with their own values, use angle brackets (less than < and greater than > characters) on that placeholder text. +- [ ] Use short, simple sentences. +- [ ] End all sentences with a period. +- [ ] Use one space after punctuation marks. +- [ ] After a colon, capitalize only proper nouns. +- [ ] Avoid semicolons - use separate sentences instead. +- [ ] Use question marks sparingly. +- [ ] Don't use slashes (/) - use "or" instead. ## Headings -* Headings should be in sentence case, not title case. Don't use gerunds in titles. -* Don't apply an inline style like italic, or bold to headings. But do use inline code style for headings that are code elements, like method names or property names. +- [ ] Headings should be in sentence case, not title case. Don't use gerunds in titles. +- [ ] Don't apply an inline style like italic, or bold to headings. But do use inline code style for headings that are code elements, like method names or property names. ## Alerts -* Alerts are a Markdown extension to create block quotes that render with colors and icons that indicate the significance of the content. The following alert types are supported: +- [ ] Alerts are a Markdown extension to create block quotes that render with colors and icons that indicate the significance of the content. The following alert types are supported: - * `[!NOTE]` Information the user should notice even if skimming. - * `[!TIP]` Optional information to help a user be more successful. - * `[!IMPORTANT]` Essential information required for user success. - * `[!CAUTION]` Negative potential consequences of an action. - * `[!WARNING]` Dangerous certain consequences of an action. - -## Adding links - -* Add links to related topics and resources where appropriate. -* Use relative links for files in this repo -* Links to other documentation articles should be relative, not absolute. Start relative links with `/docs/` and include the `.md` suffix. If you add a link to another page on learn.microsoft.com that's not in this repo, remove https://learn.microsoft.com/en-us from the link. -* Links to bookmarks within the same article should be relative and start with `#`. -* Link descriptions should be descriptive and make sense on their own. Don't use "click here" or "this link" or "here". -* When you are going to refer to another file or an article on the web, use this format: "For more information, see [descriptive name of link](link path)." The exception to this is the See Also links at the end of an article. Those should be markdown links and contain the title of the article you link to as the descriptive portion of the link. - -## Adding new files - -* If you add a new Markdown file, it should be named in all lowercase with hyphens separating words. Also, omit any filler words such as "the" or "a" from the file name. -* If you're adding a new Markdown file, the following indicates where it should go the folder structure. If you aren't sure, ask. - If the new file is about Linux, put it in the docs/linux folder. - If the new file is about the C++ Standard Template Library (STL), put it in the docs/standard-library folder. - If the new file is about the C runtime, put it in the docs/c-runtime-library folder. - If the new file is about the C++ language, put it in the docs/cpp folder. - If the new file is about a C++ feature specific to the Visual Studio IDE, put it in the docs/ide folder. - If the new file is about the build process or modules, put it in the docs/build\reference folder. - If the new file is about Build Insights, put it in the docs/build-insights folder. + - [ ] `[!NOTE]` Information the user should notice even if skimming. + - [ ] `[!TIP]` Optional information to help a user be more successful. + - [ ] `[!IMPORTANT]` Essential information required for user success. + - [ ] `[!CAUTION]` Negative potential consequences of an action. + - [ ] `[!WARNING]` Dangerous certain consequences of an action. ## Images -* Use images only when they add value. -* Images have a descriptive and meaningful alt text that starts with "Screenshot showing" and ends with ".". -* Videos have a descriptive and meaningful alt text or title that starts with "Video showing" and ends with ".". +- [ ] Use images only when they add value. +- [ ] Images have a descriptive and meaningful alt text that starts with "Screenshot showing" and ends with ".". +- [ ] Videos have a descriptive and meaningful alt text or title that starts with "Video showing" and ends with ".". ## Numbered steps -* Write complete sentences with capitalization and periods -* Use imperative verbs -* Clearly indicate where actions take place (UI location) -* For single steps, use a bullet instead of a number -* When allowed, use angle brackets for menu sequences (File > Open) +- [ ] Write complete sentences with capitalization and periods +- [ ] Use imperative verbs +- [ ] Clearly indicate where actions take place (UI location) +- [ ] For single steps, use a bullet instead of a number +- [ ] When allowed, use angle brackets for menu sequences (File > Open) ## Terminology -* Use "Select" instead of "Click" for UI elements like buttons, menu items, links, dropdowns, and checkboxes. \ No newline at end of file +- [ ] Use "Select" instead of "Click" for UI elements like buttons, menu items, links, dropdowns, and checkboxes. \ No newline at end of file diff --git a/.github/copilot-issue-verification-action-plan.md b/.github/copilot-issue-verification-action-plan.md new file mode 100644 index 00000000000..3f6d7e270e6 --- /dev/null +++ b/.github/copilot-issue-verification-action-plan.md @@ -0,0 +1,220 @@ +--- +ai-usage: ai-assisted +author: TylerMSFT +ms.author: twhitney +ms.date: 11/13/2025 +--- + +# GitHub issue analysis and action plan prompt for C++ documentation + +## Goal +Analyze the GitHub issue and provide a **structured report** determining: +1. Whether the issue is valid and actionable. +2. Whether the issue is within scope of the articles the issue relates to, or if a new article is needed. +3. The exact documentation changes required (if applicable). +4. A clear action plan that can guide PR creation. + +The report should be suitable for posting directly in the issue discussion. + +--- + +## Analysis Steps + +### 1. Information Gathering +Collect and review: +* The **issue title, description, and all comments**. +* The **published documentation** (via the provided URL). +* The **source file(s)** in the repository. +* Any **linked issues, PRs, or external references**. +* **Environment details**: .NET version, tooling versions (VS, VS Code, CLI, EF Core, etc.). +* **Code samples or error messages** mentioned in the issue. + +### 1.5 Source File Analysis +When examining source files: +* **Provide direct GitHub permalinks** to specific lines or sections. +* **Note exact line numbers** for proposed changes. +* **Include line number ranges** in GitHub URLs using `#L-L` format. +* **Quote current content** from specific lines before proposing changes. +* **Use permalinks with commit SHA** when referencing specific versions. + +Example format for file references: +* Single line: `https://github.com/owner/repo/blob/main/file.md#L123`. +* Line range: `https://github.com/owner/repo/blob/main/file.md#L123-L145`. +* Permalink: `https://github.com/owner/repo/blob//file.md#L123`. + +### 2. Validation Criteria +Determine if the issue is: +* **In scope**: Related to ASP.NET Core documentation (not product bugs). +* **Accurate**: The reported problem genuinely exists. +* **Clear**: Sufficient information to take action. +* **Current**: Applies to supported .NET versions. + +### 3. Translation Requirements +If any content is not in English: +* Include the original text in a quote block. +* Provide complete English translation. +* Label clearly as "Original" and "Translation". + +--- + +## Output Format + +### File Naming +`-analysis-report.md` + +### Report Structure + +#### Header +```markdown +## AI Analysis Report +**Analyzed by:** @ +**Date:** +**Issue:** # +**Model:** GitHub Copilot +--- +``` + +#### For Valid Issues + +```markdown +# Issue Analysis: + +## ✅ Issue Validation +**Status:** Valid and actionable + +## 📋 Issue Summary + + +## 📁 Affected Files +| File | Path | Lines | Section | +|------|------|-------|---------| +| Main article | [`aspnetcore/path/to/file.md`](https://github.com/dotnet/AspNetCore.Docs/blob/main/aspnetcore/path/to/file.md#L123-L145) | 123-145 | "Section Heading" | +| Code sample | [`aspnetcore/path/to/sample.cs`](https://github.com/dotnet/AspNetCore.Docs/blob/main/aspnetcore/path/to/sample.cs#L45-L67) | 45-67 | `MethodName()` method | + +## 📝 Proposed Changes + +### Documentation Updates +**File:** [`aspnetcore/path/to/file.md`](https://github.com/dotnet/AspNetCore.Docs/blob/main/aspnetcore/path/to/file.md#L123-L145) +**Location:** Lines 123-145 (after the paragraph containing "[specific anchor text]") +**Type:** [New paragraph / Note block / Code example / Replacement] + +**Current content (lines 123-125):** +```markdown +[Current text that will be replaced or followed] +``` + +**Proposed change:** +```markdown +[Proposed documentation text here] +``` + +### Code Sample Updates (if applicable) +**File:** [`sample.cs`](https://github.com/dotnet/AspNetCore.Docs/blob/main/path/to/sample.cs#L45-L67) +**Lines:** 45-67 +**Change:** [Add/Modify/Remove] + +**Current code:** +```csharp +// Current code at specified lines +``` + +**Proposed code:** +```csharp +// Proposed code changes +``` + +## 🎯 Action Plan +1. **Edit file:** [`aspnetcore/path/to/file.md`](https://github.com/dotnet/AspNetCore.Docs/blob/main/aspnetcore/path/to/file.md) + * Navigate to: [Line 123](https://github.com/dotnet/AspNetCore.Docs/blob/main/aspnetcore/path/to/file.md#L123) + * Find section: "Exact Section Heading" + * After text: "last sentence before insertion point" + * Insert: [!NOTE] block with explanation + +2. **Update sample:** [`path/to/sample.cs`](https://github.com/dotnet/AspNetCore.Docs/blob/main/path/to/sample.cs) + * Navigate to: [Lines 45-67](https://github.com/dotnet/AspNetCore.Docs/blob/main/path/to/sample.cs#L45-L67) + * Modify method: `MethodName()` + * Change: Update to use new pattern + +## ⚠️ Considerations +* Verify change applies to .NET [version] +* Check if similar updates needed in related articles +* Consider adding cross-references to [related topic] + +## 🔗 References +* Published article: [URL] +* Related issue: #[number] +* Microsoft Learn docs: [relevant MS docs link] +``` + +#### For Invalid Issues + +```markdown +# Issue Analysis: + +## ❌ Issue Validation +**Status:** Not actionable as is +**Reason:** [Out of scope / Insufficient information / Product issue / Already addressed] + +## 📋 Explanation + + +## 💡 Recommendation +* [Close with explanation] +* [Redirect to appropriate repository] +* [Request additional information] +* [Convert to discussion] + +## 🔗 Alternative Resources +* [Link to relevant documentation] +* [Link to appropriate repository for product issues] +``` + +--- + +## Special Instructions + +### Line Number Guidelines +* **Always inspect the actual source file** to determine accurate line numbers. +* **Provide line ranges** rather than single lines when changes affect multiple lines. +* **Use GitHub's line highlighting** format in URLs (#L123 for single, #L123-L145 for range). +* **Quote the existing content** at those lines to confirm accuracy. +* **Consider context lines** - include a few lines before/after for clarity. +* **Update line numbers** if the file has changed since issue creation. + +### Content Block Usage +Only recommend using special blocks when truly appropriate, they should not be overused: +* `[!IMPORTANT]`: Security issues, breaking changes, data loss risks +* `[!WARNING]`: Common mistakes, deprecation notices +* `[!NOTE]`: Helpful clarifications, version-specific info +* `[!TIP]`: Best practices, productivity hints + +### Code Samples +* Use appropriate language identifier for syntax highlighting. +* Include necessary `using` statements or imports. +* Add comments for complex logic. +* Ensure samples are complete and runnable. + +### Scope Boundaries +**DO:** +* Focus on documentation clarity and accuracy. +* Address missing information. +* Fix technical inaccuracies. +* Improve code samples. + +**DON'T:** +* Attempt to fix product bugs through documentation. +* Make architectural recommendations. +* Add opinions or preferences. +* Modify unrelated sections. + +## Issue labels +* Upon completion of the report, set the `ai-reviewed-issue-reported-action-plan` label for the issue. + +### Common Issue Types +1. **Missing information**: Add clarifying content +2. **Outdated content**: Update to current version +3. **Broken samples**: Fix or replace code +4. **Unclear instructions**: Rewrite for clarity +5. **Missing prerequisites**: Add setup steps + +--- \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 7eaad279a3d..60de5be0fe6 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -13,5 +13,8 @@ "Makefile", "VB.NET", "XML" - ] + ], + "python-envs.defaultEnvManager": "ms-python.python:conda", + "python-envs.defaultPackageManager": "ms-python.python:conda", + "python-envs.pythonProjects": [] } \ No newline at end of file From 5b6b51bfddc719dbbdb81b070c22e342e374aac3 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Tue, 16 Dec 2025 16:43:22 -0800 Subject: [PATCH 2150/2255] Revise ptr32 and ptr64 documentation Updated to address Copilot suggestions. --- docs/cpp/ptr32-ptr64.md | 40 +++++++++++++++++++++++----------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/docs/cpp/ptr32-ptr64.md b/docs/cpp/ptr32-ptr64.md index 065deb056e2..a41c67307da 100644 --- a/docs/cpp/ptr32-ptr64.md +++ b/docs/cpp/ptr32-ptr64.md @@ -1,16 +1,17 @@ --- description: "Learn more about: __ptr32, __ptr64" title: "__ptr32, __ptr64" -ms.date: "10/09/2018" +ms.date: 12/16/2025 f1_keywords: ["__ptr32_cpp", "__ptr64_cpp", "__ptr32", "__ptr64", "_ptr32", "_ptr64"] helpviewer_keywords: ["__ptr64 keyword [C++]", "_ptr32 keyword [C++]", "ptr32 keyword [C++]", "ptr64 keyword [C++]", "_ptr64 keyword [C++]", "__ptr32 keyword [C++]"] -ms.assetid: afb563d8-7458-4fe7-9c30-bd4b5385a59f --- # __ptr32, __ptr64 -**Microsoft Specific** +**Microsoft specific** -**`__ptr32`** represents a native pointer on a 32-bit system, while **`__ptr64`** represents a native pointer on a 64-bit system. +Use **`__ptr32`** to represent a native pointer on a 32-bit system. Use **`__ptr64`** to represent a native pointer on a 64-bit system. + +The `__ptr32` and `__ptr64` modifiers are Microsoft-specific extensions for interop scenarios. For standard 32-bit (x86) or standard x64 code, use native pointers, instead. The following example shows how to declare each of these pointer types: @@ -19,16 +20,21 @@ int * __ptr32 p32; int * __ptr64 p64; ``` -On a 32-bit system, a pointer declared with **`__ptr64`** is truncated to a 32-bit pointer. On a 64-bit system, a pointer declared with **`__ptr32`** is coerced to a 64-bit pointer. +On a 32-bit system, a pointer declared with **`__ptr64`** is treated as a 32-bit pointer and truncates the upper 32 bits of any 64-bit address assigned to it. On a 64-bit system, a pointer declared with **`__ptr32`** is treated as a 32-bit pointer and truncates the upper 32 bits of any 64-bit address assigned to it. This truncation can lead to an invalid pointer if the 64-bit address is above 4GB. > [!NOTE] -> You cannot use **`__ptr32`** or **`__ptr64`** when compiling with **/clr:pure**. Otherwise, Compiler Error C2472 will be generated. The **/clr:pure** and **/clr:safe** compiler options are deprecated in Visual Studio 2015 and unsupported in Visual Studio 2017. +> You can't use **`__ptr32`** or **`__ptr64`** when compiling with **`/clr:pure`**. Otherwise, the compiler generates error C2472. The **/clr:pure** and **/clr:safe** compiler options are deprecated in Microsoft Visual Studio 2015 and unsupported in Microsoft Visual Studio 2017. -For compatibility with previous versions, **_ptr32** and **_ptr64** are synonyms for **`__ptr32`** and **`__ptr64`** unless compiler option [/Za \(Disable language extensions)](../build/reference/za-ze-disable-language-extensions.md) is specified. +For compatibility with previous versions, **`_ptr32`** and **`_ptr64`** are synonyms for **`__ptr32`** and **`__ptr64`** unless you specify compiler option [/Za \(Disable language extensions)](../build/reference/za-ze-disable-language-extensions.md). ## Example -The following example shows how to declare and allocate pointers with the **`__ptr32`** and **`__ptr64`** keywords. This code will crash when compiled for 64-bit due to the pointer from `malloc` being truncated to 32-bit. Since 32-bit pointers can be represented in 64-bit, when compiled for 32-bit this code does not necessarily crash. +The following example shows how to declare and allocate pointers with the **`__ptr32`** and **`__ptr64`** keywords. + +This code works on x86 but might crash on x64. + +- It works when compiled for 32-bit because **`__ptr64`** pointers are treated as 32-bit pointers on x86. On x86 (32-bit), `malloc` returns a 32-bit address which fits in `p64`. +- It might crash when compiled for 64-bit because on x64, `malloc` returns a 64-bit pointer which is truncated to 32 bits by this line: `p32 = (int* __ptr32)malloc(4);`. Truncating a 64-bit address to a 32-bit address could result in an invalid pointer if the allocation happened above 4GB. In that case, `*p32 = 32` could attempt to access a truncated address that isn't part of your process's address space, causing an access violation. Even if it works once, it could fail later if the memory allocator returns a higher address. ```cpp #include @@ -38,22 +44,22 @@ int main() { using namespace std; - int * __ptr32 p32; - int * __ptr64 p64; + int* __ptr32 p32; + int* __ptr64 p64; - p32 = (int * __ptr32)malloc(4); - *p32 = 32; + p64 = (int* __ptr64)malloc(4); + *p64 = 64; // Works on x86 and x64 + cout << *p64 << endl; + + p32 = (int* __ptr32)malloc(4); + *p32 = 32; // Works on x86. Possible exception on x64 cout << *p32 << endl; - - p64 = (int * __ptr64)malloc(4); - *p64 = 64; - cout << *p64 << endl; } ``` ```Output -32 64 +32 ``` **END Microsoft Specific** From 897a33545a6b2c9cd524ba362062aa37e7369218 Mon Sep 17 00:00:00 2001 From: David Justo Date: Tue, 6 Jan 2026 10:32:37 -0800 Subject: [PATCH 2151/2255] remove "Microsoft specific" dividers from unary operator docs --- docs/cpp/unary-plus-and-negation-operators-plus-and.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/cpp/unary-plus-and-negation-operators-plus-and.md b/docs/cpp/unary-plus-and-negation-operators-plus-and.md index be1f3402345..16c5a8ce9d8 100644 --- a/docs/cpp/unary-plus-and-negation-operators-plus-and.md +++ b/docs/cpp/unary-plus-and-negation-operators-plus-and.md @@ -27,12 +27,8 @@ The unary negation operator (**`-`**) produces the negative of its operand. The Integral promotion is performed on integral operands, and the resultant type is the type to which the operand is promoted. See [Standard Conversions](standard-conversions.md) for more information about how the promotion is performed. -**Microsoft Specific** - Unary negation of unsigned quantities is performed by subtracting the value of the operand from 2^n, where n is the number of bits in an object of the given unsigned type. -**END Microsoft Specific** - ## See also [Expressions with Unary Operators](../cpp/expressions-with-unary-operators.md)\ From 4e9fd26515f35e6ee0feaa3b219e3201bc4325e3 Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Tue, 6 Jan 2026 16:07:16 -0800 Subject: [PATCH 2152/2255] Add CMAKE --- docs/build/walkthrough-build-debug-wsl2.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/walkthrough-build-debug-wsl2.md b/docs/build/walkthrough-build-debug-wsl2.md index 66dfa46bd3b..33e08ae4dcf 100644 --- a/docs/build/walkthrough-build-debug-wsl2.md +++ b/docs/build/walkthrough-build-debug-wsl2.md @@ -31,7 +31,7 @@ Install the tools necessary to build and debug on WSL 2. You'll install a recent ```bash sudo apt update - sudo apt install g++ gdb make ninja-build rsync zip + sudo apt install cmake g++ gdb make ninja-build rsync zip ``` The `apt` commands above install: From 2708ee4de23308d5643d7450a1a7541bd9aa1706 Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Wed, 7 Jan 2026 13:42:20 -0800 Subject: [PATCH 2153/2255] Fix json --- docs/build/cppproperties-schema-reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/cppproperties-schema-reference.md b/docs/build/cppproperties-schema-reference.md index cafd37a1e78..8ab040779a0 100644 --- a/docs/build/cppproperties-schema-reference.md +++ b/docs/build/cppproperties-schema-reference.md @@ -93,7 +93,7 @@ You can optionally use the `environments` property to define sets of variables i "mingw_64" ], "name": "Mingw64", - "includePath ,": [ + "includePath": [ "${env.INCLUDE}", "${workspaceRoot}\\**", ], From 71697e68cf4008c6b59d243168191fe2600fe77f Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Wed, 7 Jan 2026 16:43:25 -0800 Subject: [PATCH 2154/2255] Add settings note --- docs/build/customize-cmake-settings.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/build/customize-cmake-settings.md b/docs/build/customize-cmake-settings.md index 6b56804360f..3d17e37a068 100644 --- a/docs/build/customize-cmake-settings.md +++ b/docs/build/customize-cmake-settings.md @@ -23,6 +23,9 @@ Now you see the **Settings Editor** with the installed configurations on the lef The left pane shows the installed configurations (x86-Debug). The right pane shows the settings for the selected configuration. The settings include the configuration name, configuration type (set to Debug), toolset (set to msvc_x86), CMake toolchain file (empty), build root (contains ${env:USERPROFILE}\CMakeBuilds\${workspaceHash}\build\${name}), CMake command arguments (empty), and build command arguments (-v). :::image-end::: +> [!NOTE] +> If a JSON editor opens instead of the **Settings Editor** when you select **Manage Configurations**, you need to enable the CMakeSettings mode. Under **Tools** > **Options** > **CMake**, select **Never use CMake Presets**, and then close and reopen your CMake project. Alternatively, you can choose **Use CMake Presets if available, otherwise use CMakeSettings.json**, and then delete the *CMakePresets.json* file from the project folder. + Visual Studio provides one `x64-Debug` configuration by default. You can add more configurations by choosing the green plus sign. The settings that you see in the editor might vary depending on which configuration is selected. The options that you choose in the editor are written to a file called *`CMakeSettings.json`*. This file provides command-line arguments and environment variables that are passed to CMake when you build the projects. Visual Studio never modifies *`CMakeLists.txt`* automatically; by using *`CMakeSettings.json`* you can customize the build through Visual Studio while leaving the CMake project files untouched so that others on your team can consume them with whatever tools they're using. From 9d224b2ced98633a4fad08c74f7bee7fe7284ace Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Wed, 7 Jan 2026 16:51:04 -0800 Subject: [PATCH 2155/2255] Add screenshot --- docs/build/customize-cmake-settings.md | 1 + docs/build/media/cmake-options-file.png | Bin 0 -> 28009 bytes 2 files changed, 1 insertion(+) create mode 100644 docs/build/media/cmake-options-file.png diff --git a/docs/build/customize-cmake-settings.md b/docs/build/customize-cmake-settings.md index 3d17e37a068..08f168e6d54 100644 --- a/docs/build/customize-cmake-settings.md +++ b/docs/build/customize-cmake-settings.md @@ -25,6 +25,7 @@ The left pane shows the installed configurations (x86-Debug). The right pane sho > [!NOTE] > If a JSON editor opens instead of the **Settings Editor** when you select **Manage Configurations**, you need to enable the CMakeSettings mode. Under **Tools** > **Options** > **CMake**, select **Never use CMake Presets**, and then close and reopen your CMake project. Alternatively, you can choose **Use CMake Presets if available, otherwise use CMakeSettings.json**, and then delete the *CMakePresets.json* file from the project folder. +> :::image type="content" source="media/cmake-options-file.png" alt-text="Screenshot of the C make options pane."::: Visual Studio provides one `x64-Debug` configuration by default. You can add more configurations by choosing the green plus sign. The settings that you see in the editor might vary depending on which configuration is selected. diff --git a/docs/build/media/cmake-options-file.png b/docs/build/media/cmake-options-file.png new file mode 100644 index 0000000000000000000000000000000000000000..43f6ec1e6069799475335f9aff5e42a1a621478a GIT binary patch literal 28009 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 Date: Wed, 7 Jan 2026 17:02:37 -0800 Subject: [PATCH 2156/2255] Rename image file --- docs/build/customize-cmake-settings.md | 2 +- ...ions-file.png => options-configuration-file.png} | Bin 2 files changed, 1 insertion(+), 1 deletion(-) rename docs/build/media/{cmake-options-file.png => options-configuration-file.png} (100%) diff --git a/docs/build/customize-cmake-settings.md b/docs/build/customize-cmake-settings.md index 08f168e6d54..4634014ab9d 100644 --- a/docs/build/customize-cmake-settings.md +++ b/docs/build/customize-cmake-settings.md @@ -25,7 +25,7 @@ The left pane shows the installed configurations (x86-Debug). The right pane sho > [!NOTE] > If a JSON editor opens instead of the **Settings Editor** when you select **Manage Configurations**, you need to enable the CMakeSettings mode. Under **Tools** > **Options** > **CMake**, select **Never use CMake Presets**, and then close and reopen your CMake project. Alternatively, you can choose **Use CMake Presets if available, otherwise use CMakeSettings.json**, and then delete the *CMakePresets.json* file from the project folder. -> :::image type="content" source="media/cmake-options-file.png" alt-text="Screenshot of the C make options pane."::: +> :::image type="content" source="media/options-configuration-file.png" alt-text="Screenshot of the C make options pane."::: Visual Studio provides one `x64-Debug` configuration by default. You can add more configurations by choosing the green plus sign. The settings that you see in the editor might vary depending on which configuration is selected. diff --git a/docs/build/media/cmake-options-file.png b/docs/build/media/options-configuration-file.png similarity index 100% rename from docs/build/media/cmake-options-file.png rename to docs/build/media/options-configuration-file.png From 3665741206b2b2d4a7bc298a718b8dd445140b05 Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Thu, 8 Jan 2026 10:47:21 -0800 Subject: [PATCH 2157/2255] Minor edits --- docs/code-quality/quick-start-code-analysis-for-c-cpp.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/code-quality/quick-start-code-analysis-for-c-cpp.md b/docs/code-quality/quick-start-code-analysis-for-c-cpp.md index 7c2a7c05f31..1a8f22e7f2c 100644 --- a/docs/code-quality/quick-start-code-analysis-for-c-cpp.md +++ b/docs/code-quality/quick-start-code-analysis-for-c-cpp.md @@ -17,7 +17,7 @@ You can improve the quality of your application by running code analysis regular 1. Optionally, in the **Configuration** and **Platform** lists, choose the build configuration and target platform. -1. To run code analysis every time the project is built using the selected configuration, select the **Enable Code Analysis on Build** check box. You can also run code analysis manually by opening the **Analyze** menu and then choosing **Run Code Analysis on** *ProjectName* or **Run Code Analysis on File**. +1. To run code analysis every time the project is built using the selected configuration, select **Configuration Properties** > **Code Analysis**, then select the **Enable Code Analysis on Build** check box. You can also run code analysis manually by opening the **Analyze** menu and then choosing **Run Code Analysis on** *ProjectName* or **Run Code Analysis on File**. 1. Choose the [rule set](using-rule-sets-to-specify-the-cpp-rules-to-run.md) that you want to use or create a [custom rule set](using-rule-sets-to-specify-the-cpp-rules-to-run.md#to-create-a-rule-set-in-a-text-editor). If using LLVM/clang-cl, see [Using Clang-Tidy in Visual Studio](clang-tidy.md) to configure Clang-Tidy analysis options. @@ -92,7 +92,7 @@ To run code analysis on a file: 1. In the **Build** menu, choose **Run Code Analysis on File** or press **Ctrl+Shift+Alt+F7**. - The project or solution is compiled and code analysis runs. Results appear in the Error List window. +The project or solution is compiled and code analysis runs. Results appear in the **Error List** window. ## Analyze and resolve code analysis warnings From ab41f8c13512e2e3742938a4b5e886939d555655 Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Thu, 8 Jan 2026 11:59:40 -0800 Subject: [PATCH 2158/2255] Add warning --- .../tool-errors/command-line-errors-d8000-through-d9999.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md b/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md index af66c940222..d87c3bbd718 100644 --- a/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md +++ b/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md @@ -27,6 +27,7 @@ The articles in this section provide a reference to the command-line errors and | Warning | Message | |--|--| +| Command-Line Warning D9014 | invalid value | | [Command-Line Warning D9024](command-line-warning-d9024.md) | unrecognized source file type 'filename', object file assumed | | [Command-Line Warning D9025](command-line-warning-d9025.md) | overriding 'option1' with 'option2' | | [Command-Line Warning D9026](command-line-warning-d9026.md) | options apply to entire command line | From c283db18e1b72d80c3638d66f983993ed2a610a5 Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Thu, 8 Jan 2026 12:10:42 -0800 Subject: [PATCH 2159/2255] Add wording --- .../tool-errors/command-line-errors-d8000-through-d9999.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md b/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md index d87c3bbd718..d36c18a179d 100644 --- a/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md +++ b/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md @@ -27,7 +27,7 @@ The articles in this section provide a reference to the command-line errors and | Warning | Message | |--|--| -| Command-Line Warning D9014 | invalid value | +| Command-Line Warning D9014 | invalid value for 'processMax' | | [Command-Line Warning D9024](command-line-warning-d9024.md) | unrecognized source file type 'filename', object file assumed | | [Command-Line Warning D9025](command-line-warning-d9025.md) | overriding 'option1' with 'option2' | | [Command-Line Warning D9026](command-line-warning-d9026.md) | options apply to entire command line | From 8965a6c5e45f9cfc3041dbb2d2cdaa0fa0ecdca9 Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Thu, 8 Jan 2026 12:58:17 -0800 Subject: [PATCH 2160/2255] Add instructions --- docs/code-quality/c6200.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/code-quality/c6200.md b/docs/code-quality/c6200.md index 0003197a5fd..020939f0198 100644 --- a/docs/code-quality/c6200.md +++ b/docs/code-quality/c6200.md @@ -70,3 +70,13 @@ void f() ``` Code analysis doesn't warn with just `rand()` because it doesn't have any information about its return value. On the other hand, `rand() % 15` and `rand() % 14` provide hints as to the range of the return value of `rand()` and code analysis can use that information to determine that the index is out of bounds in the first case but not the second. + +### Disable warning + +If you believe the warning message is inaccurate, you can modify it's behavior by using one of the following pragma directives. + +- `#pragma warning(disable : 6200)` +- `#pragma warning( push [ , n ] )` +- `#pragma warning( pop )` + +To learn more about pragma directives, see [warning pragma](../preprocessor/warning.md). From cb719e700b7ba3f47c53db208b3d76031fa109a9 Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Thu, 8 Jan 2026 13:20:34 -0800 Subject: [PATCH 2161/2255] Reword text --- docs/code-quality/c6200.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/code-quality/c6200.md b/docs/code-quality/c6200.md index 020939f0198..40c81ae3a9c 100644 --- a/docs/code-quality/c6200.md +++ b/docs/code-quality/c6200.md @@ -73,7 +73,7 @@ Code analysis doesn't warn with just `rand()` because it doesn't have any inform ### Disable warning -If you believe the warning message is inaccurate, you can modify it's behavior by using one of the following pragma directives. +You can modify the behavior of a warning message by using one of the following pragma directives. - `#pragma warning(disable : 6200)` - `#pragma warning( push [ , n ] )` From 38a2d765bbd4181c0ac23600a1261e8e582b9f68 Mon Sep 17 00:00:00 2001 From: Meera Dietzel Date: Thu, 8 Jan 2026 14:52:30 -0700 Subject: [PATCH 2162/2255] Updates --- .github/copilot-instructions.md | 2 +- docs/build-insights/elevate-note.md | 2 +- docs/build-insights/tutorials/build-insights-tips.md | 2 +- docs/ide/cpp-linter-overview.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 417f80a8da9..75e32e18c89 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -88,7 +88,7 @@ When working on an issue: author: github-username ms.author: ms-alias ms.date: 12/11/2025 - ms.topic: conceptual + ms.topic: concept-article ai-usage: ai-assisted --- ``` diff --git a/docs/build-insights/elevate-note.md b/docs/build-insights/elevate-note.md index 502e2087fef..f13849c4b32 100644 --- a/docs/build-insights/elevate-note.md +++ b/docs/build-insights/elevate-note.md @@ -1,7 +1,7 @@ --- title: "Build Insights needs additional permissions" description: "To capture trace files, Build Insights needs additional permissions as described in this topic." -ms.topic: article +ms.topic: concept-article ms.date: 12/9/2025 ms.update-cycle: 3650-days f1_keywords: diff --git a/docs/build-insights/tutorials/build-insights-tips.md b/docs/build-insights/tutorials/build-insights-tips.md index b9c2b0e6f6c..45b4517777f 100644 --- a/docs/build-insights/tutorials/build-insights-tips.md +++ b/docs/build-insights/tutorials/build-insights-tips.md @@ -4,7 +4,7 @@ description: "Learn time-saving tips for using Build Insights." ms.date: 1/8/2025 author: tylermsft ms.author: twhitney -ms.topic: article +ms.topic: concept-article helpviewer_keywords: ["C++ Build Insights tips and tricks"] --- # Build Insights tips and tricks diff --git a/docs/ide/cpp-linter-overview.md b/docs/ide/cpp-linter-overview.md index 07057453ac3..e6c987576c8 100644 --- a/docs/ide/cpp-linter-overview.md +++ b/docs/ide/cpp-linter-overview.md @@ -2,7 +2,7 @@ description: "Learn more about: IntelliSense code linter for C++" title: IntelliSense code linter for C++ overview ms.date: 09/30/2021 -ms.topic: conceptual +ms.topic: overview helpviewer_keywords: - "C/C++, linter" - "C++, linter" From ac1f8ad5e5acc64d32905509338a519b349f9dcd Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Thu, 8 Jan 2026 13:54:08 -0800 Subject: [PATCH 2163/2255] Add instructions --- docs/embedded/serial-monitor.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/embedded/serial-monitor.md b/docs/embedded/serial-monitor.md index 6ec62acf7ed..581430e7832 100644 --- a/docs/embedded/serial-monitor.md +++ b/docs/embedded/serial-monitor.md @@ -14,6 +14,8 @@ The Serial Monitor allows users to configure, monitor, and communicate with seri # [Visual Studio](#tab/visual-studio) +To install Serial Monitor in Visual Studio, go to **Extensions** > **Manage Extensions**. Search for **Serial Monitor 2** in the extensions marketplace. Select **Install** and then restart Visual Studio to complete the installation. + :::image type="complex" source="./media/serial-monitor.png" alt-text="Screenshot of the Visual Studio Serial Monitor window."::: The window is split into two sections. The top section shows the monitoring mode (serial), Port (virtual COM port COM3), baud rate (115200), line ending (None), and a Stop monitoring button. The bottom section shows the messages, consisting of four lines of the text Hello, World! :::image-end::: @@ -44,6 +46,8 @@ The window is split into two sections. The top section shows the monitoring mode # [Visual Studio Code](#tab/visual-studio-code) +To install Serial Monitor in Visual Studio Code, open the extensions marketplace and then search for **Serial Monitor**. Select **Install**. + :::image type="complex" source="./media/serial-monitor-vscode.png" alt-text="Screenshot of the VS Code Serial Monitor window."::: The window is split into two sections. The top section shows the monitoring mode (serial), Port (virtual COM port COM3), baud rate (115200), line ending (None), and a Stop monitoring button. The bottom section where messages are displayed is empty. :::image-end::: From 9794d8f6f6ff5b29ac25b60a78123eac43439cc9 Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Thu, 8 Jan 2026 17:40:38 -0800 Subject: [PATCH 2164/2255] Add screenshots --- .../reference/creating-a-makefile-project.md | 8 +++++++- docs/build/reference/media/create-project.png | Bin 0 -> 25659 bytes docs/build/reference/media/file-new-project.png | Bin 0 -> 27281 bytes 3 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 docs/build/reference/media/create-project.png create mode 100644 docs/build/reference/media/file-new-project.png diff --git a/docs/build/reference/creating-a-makefile-project.md b/docs/build/reference/creating-a-makefile-project.md index 1f88156dfd8..bdec06056bd 100644 --- a/docs/build/reference/creating-a-makefile-project.md +++ b/docs/build/reference/creating-a-makefile-project.md @@ -30,7 +30,13 @@ The output file that you specify in the project has no effect on the name that t ### To create a makefile project in Visual Studio -1. From the Visual Studio main menu, choose **File** > **New** > **Project** and type "makefile" into the search box. If you see more than one project template, select from the options depending on your target platform. +1. From the Visual Studio main menu, choose **File** > **New** > **Project**. + +:::image type="content" source="media/file-new-project.png" alt-text="Screenshot of the menu dropdown item to create a new project highlighted"::: + +1. Type *makefile* into the search box. If you see more than one project template, select the option for your target platform. + +:::image type="content" source="media/create-project.png" alt-text="Screenshot of the search bar with makefile entered."::: 1. **Windows only**: In the Makefile project **Debug Configuration Settings** page, provide the command, output, clean, and rebuild information for debug and retail builds. Choose **Next** if you want to specify different settings for a Release configuration. diff --git a/docs/build/reference/media/create-project.png b/docs/build/reference/media/create-project.png new file mode 100644 index 0000000000000000000000000000000000000000..3cb1a61de5d58fb91eadc9cf6c9c945b939efc67 GIT binary patch literal 25659 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 literal 0 HcmV?d00001 diff --git a/docs/build/reference/media/file-new-project.png b/docs/build/reference/media/file-new-project.png new file mode 100644 index 0000000000000000000000000000000000000000..6e6767d5d8ffc3b3e39837c1c1c0df6a95208fa3 GIT binary patch literal 27281 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 literal 0 HcmV?d00001 From 7cabb6f7194a0b302231e0144bb70b66a197c38a Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Thu, 8 Jan 2026 17:50:45 -0800 Subject: [PATCH 2165/2255] Indent images --- .../reference/creating-a-makefile-project.md | 4 ++-- docs/build/reference/media/create-project.png | Bin 25659 -> 20664 bytes .../reference/media/file-new-project.png | Bin 27281 -> 13011 bytes 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build/reference/creating-a-makefile-project.md b/docs/build/reference/creating-a-makefile-project.md index bdec06056bd..437700d4a94 100644 --- a/docs/build/reference/creating-a-makefile-project.md +++ b/docs/build/reference/creating-a-makefile-project.md @@ -32,11 +32,11 @@ The output file that you specify in the project has no effect on the name that t 1. From the Visual Studio main menu, choose **File** > **New** > **Project**. -:::image type="content" source="media/file-new-project.png" alt-text="Screenshot of the menu dropdown item to create a new project highlighted"::: + :::image type="content" source="media/file-new-project.png" alt-text="Screenshot of the menu dropdown item to create a new project highlighted"::: 1. Type *makefile* into the search box. If you see more than one project template, select the option for your target platform. -:::image type="content" source="media/create-project.png" alt-text="Screenshot of the search bar with makefile entered."::: + :::image type="content" source="media/create-project.png" alt-text="Screenshot of the project template search bar with makefile entered."::: 1. **Windows only**: In the Makefile project **Debug Configuration Settings** page, provide the command, output, clean, and rebuild information for debug and retail builds. Choose **Next** if you want to specify different settings for a Release configuration. diff --git a/docs/build/reference/media/create-project.png b/docs/build/reference/media/create-project.png index 3cb1a61de5d58fb91eadc9cf6c9c945b939efc67..1ab81f0bfbc74852e9ad6724058f8bbeefcc6b4b 100644 GIT binary patch literal 20664 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 jG-_kc9S?av+(VJncVF)*WNotE6g}9 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 literal 25659 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 diff --git a/docs/build/reference/media/file-new-project.png b/docs/build/reference/media/file-new-project.png index 6e6767d5d8ffc3b3e39837c1c1c0df6a95208fa3..df61ed8476eba4e3b2e0145eced1ef092585915d 100644 GIT binary patch literal 13011 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 WuYGbI0)MUmypdLxDwi<)_`d*O8V6DU literal 27281 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 From f3f9e594fa68e6335a23d47a25dcc43543e4f5f0 Mon Sep 17 00:00:00 2001 From: Nick Bassett Date: Mon, 12 Jan 2026 15:29:20 -0800 Subject: [PATCH 2166/2255] Update signing guidance for /INTEGRITYCHECK files (#5875) * Update signing guidance for /INTEGRITYCHECK files The trusted signing service has a new name. * Update docs/build/reference/integritycheck-require-signature-check.md --------- Co-authored-by: Regan Downer --- docs/build/reference/integritycheck-require-signature-check.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/integritycheck-require-signature-check.md b/docs/build/reference/integritycheck-require-signature-check.md index 2e154fe9607..0820e55c26c 100644 --- a/docs/build/reference/integritycheck-require-signature-check.md +++ b/docs/build/reference/integritycheck-require-signature-check.md @@ -17,7 +17,7 @@ The **`/INTEGRITYCHECK`** linker option sets a flag, `IMAGE_DLLCHARACTERISTICS_F ### Signing `/INTEGRITYCHECK` files -Microsoft has new signing guidance for DLL and executable files linked by using **`/INTEGRITYCHECK`**. The guidance used to recommend a cross-signed certificate from the [cross-signing program](/windows-hardware/drivers/install/cross-certificates-for-kernel-mode-code-signing). However, the [cross-signing program is now deprecated](/windows-hardware/drivers/install/deprecation-of-software-publisher-certificates-and-commercial-release-certificates). You must now sign your **`/INTEGRITYCHECK`** files by using the Microsoft [Trusted Signing service](/azure/trusted-signing/) program instead. +Microsoft has new signing guidance for DLL and executable files linked by using **`/INTEGRITYCHECK`**. The guidance used to recommend a cross-signed certificate from the [cross-signing program](/windows-hardware/drivers/install/cross-certificates-for-kernel-mode-code-signing). However, the [cross-signing program is now deprecated](/windows-hardware/drivers/install/deprecation-of-software-publisher-certificates-and-commercial-release-certificates). You must now sign your **`/INTEGRITYCHECK`** files by using the [Azure Artifact Signing service](https://azure.microsoft.com/products/artifact-signing) program instead. ### To set this linker option in Visual Studio From e9723d2064a8cad446d7c232799bc0a87b772b1b Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 12 Jan 2026 17:06:03 -0800 Subject: [PATCH 2167/2255] Enhance command-line warning messages with details Added explanations for Command-Line Warnings D9014 and D9024. --- .../tool-errors/command-line-errors-d8000-through-d9999.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md b/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md index d36c18a179d..95eb607c2b7 100644 --- a/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md +++ b/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md @@ -27,8 +27,8 @@ The articles in this section provide a reference to the command-line errors and | Warning | Message | |--|--| -| Command-Line Warning D9014 | invalid value for 'processMax' | -| [Command-Line Warning D9024](command-line-warning-d9024.md) | unrecognized source file type 'filename', object file assumed | +| Command-Line Warning D9014 | invalid value for 'processMax' | The compiler ignores the invalid value and assumes a value of 1.| +| [Command-Line Warning D9024](command-line-warning-d9024.md) | unrecognized source file type 'filename', object file assumed. Occurs when a command‑line argument looks like a filename but doesn’t match a recognized source or object file extension. The compiler assumes it's an object file and passes it to the linker. | | [Command-Line Warning D9025](command-line-warning-d9025.md) | overriding 'option1' with 'option2' | | [Command-Line Warning D9026](command-line-warning-d9026.md) | options apply to entire command line | | [Command-Line Warning D9027](command-line-warning-d9027.md) | source file '\' ignored | From 80eec8691568d8dfcb80af4dd8249baf7112e704 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 12 Jan 2026 17:07:24 -0800 Subject: [PATCH 2168/2255] Fix formatting of Command-Line Warning D9014 message --- .../tool-errors/command-line-errors-d8000-through-d9999.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md b/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md index 95eb607c2b7..14a992e335f 100644 --- a/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md +++ b/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md @@ -27,7 +27,7 @@ The articles in this section provide a reference to the command-line errors and | Warning | Message | |--|--| -| Command-Line Warning D9014 | invalid value for 'processMax' | The compiler ignores the invalid value and assumes a value of 1.| +| Command-Line Warning D9014 | invalid value for 'processMax'. The compiler ignores the invalid value and assumes a value of 1.| | [Command-Line Warning D9024](command-line-warning-d9024.md) | unrecognized source file type 'filename', object file assumed. Occurs when a command‑line argument looks like a filename but doesn’t match a recognized source or object file extension. The compiler assumes it's an object file and passes it to the linker. | | [Command-Line Warning D9025](command-line-warning-d9025.md) | overriding 'option1' with 'option2' | | [Command-Line Warning D9026](command-line-warning-d9026.md) | options apply to entire command line | From ede29fabe4eac5649aaff3e17f35ca55e14100b7 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 12 Jan 2026 17:32:07 -0800 Subject: [PATCH 2169/2255] Enhance documentation for disabling warning C6200 Updated the section on disabling warning C6200 with additional details and code examples. --- docs/code-quality/c6200.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/docs/code-quality/c6200.md b/docs/code-quality/c6200.md index 40c81ae3a9c..9ec6fc83017 100644 --- a/docs/code-quality/c6200.md +++ b/docs/code-quality/c6200.md @@ -71,12 +71,15 @@ void f() Code analysis doesn't warn with just `rand()` because it doesn't have any information about its return value. On the other hand, `rand() % 15` and `rand() % 14` provide hints as to the range of the return value of `rand()` and code analysis can use that information to determine that the index is out of bounds in the first case but not the second. -### Disable warning +## Disable warning C6200 -You can modify the behavior of a warning message by using one of the following pragma directives. +You can disable this warning project-wide by passing the compiler switch `/wd6200`. If you want a more targeted solution, surround the code that generates the warning with: -- `#pragma warning(disable : 6200)` -- `#pragma warning( push [ , n ] )` -- `#pragma warning( pop )` +`cpp + #pragma warning(push) // save which warnings are enabled/disabled + #pragma warning(disable: 6200) // suppress this warning only in this block + // ... code that intentionally generates C6200 + #pragma warning(pop) // restore the warning state saved with the previous push +``` To learn more about pragma directives, see [warning pragma](../preprocessor/warning.md). From 36a1da921af5fc148ca039ebacd2f3fe0baa576a Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 12 Jan 2026 17:35:52 -0800 Subject: [PATCH 2170/2255] Fix code block formatting for warning C6200 Corrected the formatting of code block for disabling warning C6200. --- docs/code-quality/c6200.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/code-quality/c6200.md b/docs/code-quality/c6200.md index 9ec6fc83017..945df12b0be 100644 --- a/docs/code-quality/c6200.md +++ b/docs/code-quality/c6200.md @@ -75,7 +75,7 @@ Code analysis doesn't warn with just `rand()` because it doesn't have any inform You can disable this warning project-wide by passing the compiler switch `/wd6200`. If you want a more targeted solution, surround the code that generates the warning with: -`cpp +```cpp #pragma warning(push) // save which warnings are enabled/disabled #pragma warning(disable: 6200) // suppress this warning only in this block // ... code that intentionally generates C6200 From dfa0c167dd647b57506452e0f2a1ca96325877ab Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Tue, 13 Jan 2026 14:30:05 -0800 Subject: [PATCH 2171/2255] Use vs2026 --- docs/build/customize-cmake-settings.md | 4 ++-- .../media/options-configuration-file.png | Bin 28009 -> 34449 bytes .../vs2026-cmake-manage-configurations.png | Bin 0 -> 10542 bytes 3 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 docs/build/media/vs2026-cmake-manage-configurations.png diff --git a/docs/build/customize-cmake-settings.md b/docs/build/customize-cmake-settings.md index 4634014ab9d..5312290a772 100644 --- a/docs/build/customize-cmake-settings.md +++ b/docs/build/customize-cmake-settings.md @@ -15,7 +15,7 @@ If you maintain projects that use a *`CMakeSettings.json`* file for CMake build To open the CMake settings editor, select the **Configuration** drop-down in the main toolbar and choose **Manage Configurations**. -![Screenshot of the CMake configuration drop-down. Manage Configurations is highlighted.](media/vs2019-cmake-manage-configurations.png) +![Screenshot of the CMake configuration drop-down. Manage Configurations is highlighted.](media/vs2026-cmake-manage-configurations.png) Now you see the **Settings Editor** with the installed configurations on the left. @@ -24,7 +24,7 @@ The left pane shows the installed configurations (x86-Debug). The right pane sho :::image-end::: > [!NOTE] -> If a JSON editor opens instead of the **Settings Editor** when you select **Manage Configurations**, you need to enable the CMakeSettings mode. Under **Tools** > **Options** > **CMake**, select **Never use CMake Presets**, and then close and reopen your CMake project. Alternatively, you can choose **Use CMake Presets if available, otherwise use CMakeSettings.json**, and then delete the *CMakePresets.json* file from the project folder. +> If a JSON editor opens instead of the **Settings Editor** when you select **Manage Configurations**, you need to enable the CMakeSettings mode. In Visual Studio 2026, under **Tools** > **Options** > **CMake**, select **Never use CMake Presets**, and then close and reopen your CMake project. Alternatively, you can choose **Use CMake Presets if available, otherwise use CMakeSettings.json**, and then delete the *CMakePresets.json* file from the project folder. > :::image type="content" source="media/options-configuration-file.png" alt-text="Screenshot of the C make options pane."::: Visual Studio provides one `x64-Debug` configuration by default. You can add more configurations by choosing the green plus sign. The settings that you see in the editor might vary depending on which configuration is selected. diff --git a/docs/build/media/options-configuration-file.png b/docs/build/media/options-configuration-file.png index 43f6ec1e6069799475335f9aff5e42a1a621478a..2a22a033a179ce9b580b0a94e87cdf06e20f29be 100644 GIT binary patch literal 34449 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 a+}zEMKESSae#HO*o6Ji^SgH8i5C0GL)4SpT literal 28009 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 NQc=)&RV8N@^gp9A Date: Tue, 13 Jan 2026 14:59:24 -0800 Subject: [PATCH 2172/2255] Change image name --- docs/build/customize-cmake-settings.md | 2 +- ....png => vs-2026-cmake-manage-configurations.png} | Bin 2 files changed, 1 insertion(+), 1 deletion(-) rename docs/build/media/{vs2026-cmake-manage-configurations.png => vs-2026-cmake-manage-configurations.png} (100%) diff --git a/docs/build/customize-cmake-settings.md b/docs/build/customize-cmake-settings.md index 5312290a772..abcbfa224fc 100644 --- a/docs/build/customize-cmake-settings.md +++ b/docs/build/customize-cmake-settings.md @@ -15,7 +15,7 @@ If you maintain projects that use a *`CMakeSettings.json`* file for CMake build To open the CMake settings editor, select the **Configuration** drop-down in the main toolbar and choose **Manage Configurations**. -![Screenshot of the CMake configuration drop-down. Manage Configurations is highlighted.](media/vs2026-cmake-manage-configurations.png) +![Screenshot of the CMake configuration drop-down. Manage Configurations is highlighted.](media/vs-2026-cmake-manage-configurations.png) Now you see the **Settings Editor** with the installed configurations on the left. diff --git a/docs/build/media/vs2026-cmake-manage-configurations.png b/docs/build/media/vs-2026-cmake-manage-configurations.png similarity index 100% rename from docs/build/media/vs2026-cmake-manage-configurations.png rename to docs/build/media/vs-2026-cmake-manage-configurations.png From f300874275d4644f7eedb2ab590974797aa40b10 Mon Sep 17 00:00:00 2001 From: Eve Silfanus Date: Thu, 15 Jan 2026 11:30:05 -0800 Subject: [PATCH 2173/2255] Getting Started with GitHub Copilot build performance for Windows --- .../copilot_build_performance_windows.md | 193 ++++++++++++++++++ .../media/build-analysis-complete.png | Bin 0 -> 8173 bytes .../media/build-insights-options.png | Bin 0 -> 52877 bytes .../media/build-insights-permission.png | Bin 0 -> 10780 bytes .../media/build-menu-improve.png | Bin 0 -> 20425 bytes docs/build-insights/media/build-summary.png | Bin 0 -> 46290 bytes .../media/copilot-build-perf-select.png | Bin 0 -> 27834 bytes .../media/copilot-build-request.png | Bin 0 -> 17604 bytes .../media/copilot-improve-includes.png | Bin 0 -> 13898 bytes .../media/copilot-improve-prompt.png | Bin 0 -> 12298 bytes docs/build-insights/media/copilot-signin.png | Bin 0 -> 34001 bytes .../media/copilot-subscription.png | Bin 0 -> 28848 bytes .../media/copilot-usage-menu.png | Bin 0 -> 7298 bytes .../media/insights-improve-button.png | Bin 0 -> 13118 bytes docs/build-insights/media/model-select.png | Bin 0 -> 38362 bytes docs/build-insights/media/msvc-elevation.png | Bin 0 -> 15758 bytes .../media/solution-menu-improve.png | Bin 0 -> 6398 bytes .../media/terminal-permission.png | Bin 0 -> 10480 bytes docs/build-insights/media/vs-account-auth.png | Bin 0 -> 13967 bytes .../media/vs-installer-options.png | Bin 0 -> 19853 bytes docs/build-insights/media/windows-uac.png | Bin 0 -> 37564 bytes 21 files changed, 193 insertions(+) create mode 100644 docs/build-insights/copilot_build_performance_windows.md create mode 100644 docs/build-insights/media/build-analysis-complete.png create mode 100644 docs/build-insights/media/build-insights-options.png create mode 100644 docs/build-insights/media/build-insights-permission.png create mode 100644 docs/build-insights/media/build-menu-improve.png create mode 100644 docs/build-insights/media/build-summary.png create mode 100644 docs/build-insights/media/copilot-build-perf-select.png create mode 100644 docs/build-insights/media/copilot-build-request.png create mode 100644 docs/build-insights/media/copilot-improve-includes.png create mode 100644 docs/build-insights/media/copilot-improve-prompt.png create mode 100644 docs/build-insights/media/copilot-signin.png create mode 100644 docs/build-insights/media/copilot-subscription.png create mode 100644 docs/build-insights/media/copilot-usage-menu.png create mode 100644 docs/build-insights/media/insights-improve-button.png create mode 100644 docs/build-insights/media/model-select.png create mode 100644 docs/build-insights/media/msvc-elevation.png create mode 100644 docs/build-insights/media/solution-menu-improve.png create mode 100644 docs/build-insights/media/terminal-permission.png create mode 100644 docs/build-insights/media/vs-account-auth.png create mode 100644 docs/build-insights/media/vs-installer-options.png create mode 100644 docs/build-insights/media/windows-uac.png diff --git a/docs/build-insights/copilot_build_performance_windows.md b/docs/build-insights/copilot_build_performance_windows.md new file mode 100644 index 00000000000..d5024193c4d --- /dev/null +++ b/docs/build-insights/copilot_build_performance_windows.md @@ -0,0 +1,193 @@ +# Getting Started with GitHub Copilot build performance for Windows  + +The GitHub Copilot build performance for Windows analyzes your C++ builds and highlights expensive headers, templates, and functions so you can identify and fix build time bottlenecks. GitHub Copilot integrates seamlessly with Visual Studio, reducing complexity and improving developer productivity. + +## Prerequisites  + +- Windows 10 or later. +- An MSBuild or CMake project. +- MSVC Build Tools version 14.50. + +## Installing Visual Studio 2026 + +To use GitHub Copilot build performance for Windows, you must install the latest available **Visual Studio 2026**. + +[Installation Guide](https://learn.microsoft.com/en-us/visualstudio/install/install-visual-studio?view=visualstudio) + +Visual Studio 2026 supports **side-by-side installation** with older versions. You do not need to uninstall previous versions or other release channels. Installing Visual Studio 2026 will not interfere with your existing development environment.  + +### Before you begin  + +After installing the Visual Studio Installer, ensure the following components are selected under the **Desktop development with C++** [workload](https://learn.microsoft.com/en-us/visualstudio/install/install-visual-studio?view=visualstudio#step-5---choose-individual-components-optional:~:text=proceeding%20with%20installation.-,Step%204%20%2D%20Choose%20workloads,-After%20you%20install) during installation: + +- C++ Build Insights +- C++ profiling tools +- C++ CMake tools for Windows (required for CMake projects)  + +:::image type="complex" source="./media/vs-installer-options.png" alt-text="Screenshot of Visual Studio Installer showing selected options for Desktop development with C++."::: +The list shows C++ Build Insights, C++ profiling tools, and C++ CMake tools for Windows are all selected for installation. +:::image-end::: + +## Verify GitHub Copilot subscription + +GitHub Copilot build performance for Windows is available to users on GitHub Copilot Pro, Pro+, Business, and Enterprise plans.   + +- Verify your subscription  + + - Log in to [https://github.com](https://github.com/) and access the [Copilot features](https://github.com/settings/copilot/features) + + - Your plan type will appear near the top of the page.  + +:::image type="complex" source="./media/copilot-subscription.png" alt-text="Banner in GitHub settings indicating Copilot Enterprise is active."::: +The banner shows buttons for Copilot in IDE, CLI, Mobile, GitHub.com, and more features. +:::image-end::: + +- Authenticate in Visual Studio 2026 +Before proceeding, ensure you are signed in to your GitHub account in Visual Studio. + + - Click on your profile picture in the upper-right corner of Visual Studio to confirm your GitHub login status. + + :::image type="complex" source="./media/vs-account-auth.png" alt-text="Visual Studio account dropdown showing GitHub EMU account."::: + The dropdown displays the GitHub EMU account with active status and sync indicator. + :::image-end::: + + - If you are not signed in, open the GitHub Copilot Chat and follow the sign-in instructions from the pop-up window. + + :::image type="complex" source="./media/copilot-signin.png" alt-text="GitHub Copilot sign-in window with authentication options."::: + The window shows options to continue with GitHub or Google, and links to terms and privacy policy. + :::image-end::: + + - Once authenticated, you can verify your plan by selecting Copilot Usage from the dropdown menu under the GitHub Copilot badge. + + :::image type="complex" source="./media/copilot-usage-menu.png" alt-text="Visual Studio dropdown menu under Copilot badge."::: + The menu lists options like Copilot Usage, Open Chat Window, Settings, Learn More, GitHub Copilot Walkthrough, and Manage Copilot Subscription. + :::image-end::: + +### Enable Template Collection + +Template instantiation time collection is off by default to minimize analysis overhead. To turn it on: + + 1. In Visual Studio, go to **Tools** \> **Options**. + + 2. In the **Options** dialog, expand **Build Insights** in the left navigation. + + 3. Select **Collect Template Instantiation**. + +:::image type="complex" source="./media/build-insights-options.png" alt-text="Visual Studio Build Insights options dialog."::: +The dialog shows trace collection settings with the Collect template instantiation checkbox selected. +:::image-end::: + +*Learn more:* [Troubleshoot template instantiation impact on build time | Microsoft Learn](https://learn.microsoft.com/en-us/cpp/build-insights/tutorials/build-insights-template-view?view=msvc-170) + +## Workflow + +GitHub Copilot build performance on Windows is available via the GitHub Copilot chat pane. Users can access this functionality through the Agent feature within the chat interface. + +:::image type="complex" source="./media/copilot-build-perf-select.png" alt-text="GitHub Copilot chat pane showing agent selection."::: +The pane shows GitHub Copilot build performance for Windows selected to optimize C++ build, with other agents listed. +:::image-end::: + +Before submitting a request to the GitHub Copilot, select your preferred model. + +:::image type="complex" source="./media/model-select.png" alt-text="Dropdown menu in Copilot chat for selecting AI models."::: +The menu includes GPT-5, GPT-5.1, Claude, Gemini, and other available AI models. +:::image-end::: + +Instruct GitHub Copilot to improve the build performance of your selected project. You can add additional context and information so that GitHub Copilot can create suggestions that match the needs of your project. + +:::image type="complex" source="./media/copilot-build-request.png" alt-text="Copilot chat window with build performance request."::: +The window shows GitHub Copilot build performance for Windows with user message requesting build performance improvement for the project. +:::image-end::: + +### Enable Build Insights + +To analyze the build performance of the selected project, Visual Studio needs elevated permissions. The Build Insights tool needs to be enabled for a first-time user to kickstart the build performance analysis. + +*Learn more:* [Build Insights needs additional permissions | Microsoft Learn](https://learn.microsoft.com/en-us/cpp/build-insights/elevate-note?view=msvc-170&f1url=%3FappId%3DDev18IDEF1%26l%3DEN-US%26k%3Dk(bi_permissions)%26rd%3Dtrue) + +:::image type="complex" source="./media/build-insights-permission.png" alt-text="Visual Studio dialog asking to run Build Insights tool."::: +The dialog requests permission to analyze build performance, with Confirm and Deny buttons. +:::image-end::: + +A one-time elevated request is then needed to capture the MSVC compiler traces. + +:::image type="complex" source="./media/msvc-elevation.png" alt-text="Microsoft Visual Studio dialog requesting permission to capture MSVC compiler traces."::: +The dialog shows options for Yes and No to allow trace capture. +:::image-end::: + +:::image type="complex" source="./media/windows-uac.png" alt-text="User Account Control dialog for Windows Command Processor."::: +The UAC dialog asks to allow Windows Command Processor to make changes to the device, with Yes and No buttons. +:::image-end::: + +If the one-time elevated request is denied, the Build Insights operation is cancelled due to lack of rights to continue. + + +You will guide GitHub Copilot through the process of improving the build time by providing permission, as needed, to run tools. Additional permissions may be required to run PowerShell scripts. + +:::image type="complex" source="./media/terminal-permission.png" alt-text="Copilot chat window prompting user to confirm running a terminal command."::: +The prompt shows options to always allow or allow in this session. +:::image-end::: + +The GitHub Copilot build performance for Windows goes through multiple iterations of code implementation to make the build faster. + +:::image type="complex" source="./media/build-analysis-complete.png" alt-text="Screenshot showing analysis complete status and performance improvement summary."::: +The display shows build time improved from 78.6 seconds to 70.5 seconds (8.1 seconds faster, ~10.3% improvement), with a note that further improvement is possible. +:::image-end::: + +After GitHub Copilot completes the request, a summary of the changes and build performance impact is displayed. The build performance summary changes depending on each iteration of the agent. + +:::image type="complex" source="./media/build-summary.png" alt-text="Screenshot of build performance summary showing before and after optimization metrics."::: +The summary displays top bottlenecks and quantitative results of the performance improvements. +:::image-end::: + +In this case, build time dropped from **110.7s to 34.1s** after enabling precompiled headers for costly includes, delivering a **69% improvement** and **3.2× faster builds** with near-instant incremental rebuilds. + +### Additional entry points + +The GitHub Copilot build performance for Windows can be accessed through other entry points. + +- Button from build menu + + :::image type="complex" source="./media/build-menu-improve.png" alt-text="Visual Studio Build menu with Improve build performance option highlighted."::: + The menu shows the Improve build performance option under Run Build Insights. + :::image-end::: + +Clicking the Improve build performance button prompts GitHub Copilot chat + + :::image type="complex" source="./media/copilot-improve-prompt.png" alt-text="Copilot chat window with Improve Build Performance prompt."::: + The window shows GitHub Copilot build performance for Windows ready to assist with optimization. + :::image-end::: + +- Button from solution context menu + + :::image type="complex" source="./media/solution-menu-improve.png" alt-text="Visual Studio solution context menu showing Improve build performance option."::: + The context menu displays the Improve build performance on Solution option. + :::image-end::: + +Clicking the Improve build performance on Solution button prompts the GitHub Copilot chat + + :::image type="complex" source="./media/copilot-improve-prompt.png" alt-text="Copilot chat window with Improve Build Performance prompt."::: + The window shows GitHub Copilot build performance for Windows ready to assist with optimization. + :::image-end::: + +- Button from Build Insights view + + :::image type="complex" source="./media/insights-improve-button.png" alt-text="Build Insights diagnostics session view with Improve button highlighted."::: + The view shows the diagnostics session with the Improve button available for optimization. + :::image-end::: + +Clicking the Improve button prompts the GitHub Copilot chat. This button uses data from the existing build insights trace results and does not trigger a new build insights tool execution until the current proposed changes have been processed. + + :::image type="complex" source="./media/copilot-improve-includes.png" alt-text="Copilot chat window with GitHub Copilot build performance for Windows focusing on includes optimization."::: + The chat shows a user message focusing on improving build performance of includes. + :::image-end::: + +## See Also + +[Build Insights function view](https://learn.microsoft.com/en-us/cpp/build-insights/tutorials/build-insights-function-view?view=msvc-170) + +[Build Insights included files view](https://learn.microsoft.com/en-us/cpp/build-insights/tutorials/build-insights-included-files-view?view=msvc-170) + +[vcperf and Windows Performance Analyzer](https://learn.microsoft.com/en-us/cpp/build-insights/tutorials/vcperf-and-wpa?view=msvc-170) + +[Windows Performance Analyzer basics](https://learn.microsoft.com/en-us/cpp/build-insights/tutorials/wpa-basics?view=msvc-170) diff --git a/docs/build-insights/media/build-analysis-complete.png b/docs/build-insights/media/build-analysis-complete.png new file mode 100644 index 0000000000000000000000000000000000000000..10bd55a02352caef4752fc5807a83412cfd5f838 GIT binary patch literal 8173 zcmd6McT`jV(G=HATblg!MWdFGjSMg}?z*SM}xQBg5G zd93-2it54{<#Xy48p@eJhRe zOH=%A&G&EZ%A5ZfKv+IWqFVB#vt9tCabJpEQ}-*Sn==XNeQx|U!|svcS_z1WAmIK$ z!?^KmXp@%XF+n%{G(@?&8DjbUCutXomLrIw+l{ibrCXte#}kydS@mTO0yT+fDn zqMGC^QftbBt=LRkIHP-t-5u=;%viVzGh!|;TJo@CxV#~KGA>qiwcIh#~=vx{sppXg;iy`SZtxN8U^XV=>O z{gvCsQ6q)eDN{~ySkLbfuH*O4%3^xXm5Xm3*XvP>M^|7PKRHdh3P%;PFPKqD>48e4pgN&I`2w2T&YdUhA{Td;#=T)!qMB? zKuJS8>xrr4=44{Cz4z6_%D{!!;p+IZm;5PhOf+cGg(oqgmDyRF48xL{K-9+k@;A+@ zT@@K)lx>r(Enkr+q(;Kb%h0U$T$x2nI=qWkiWqQn{;BA7qZqf?(W}grui_Xc(zz*4Lm;>u znX6Mm5S~=Ma#N)ctOTSOXxV(m?0aF)a2)RJ@)u;aGsu}*v{7T9Pds%M#Wdr>-O$}! z=7!Mxoyfk&Ae36xW@Q>kLwkkl%W`b23tQgStB+N4ma6J4v|V~au0R;;Ma;L@HEm`$ zo??;U2cA@Yty8|w!$}hNcvh_(xjyO9z|kQOb{LmAX+FMM-|>h73_7;%VHk%T{gI+` zo)@5X6THB&i@Qg5)pO&|NoXwzxC5!^^nJ;4Y!)KM`u)@}O*YDf2b<&whohsvs5*tA zlrBi`NLSmQR2;X~6ae8mN@XNYaQI^Yua&|+xc9`KMK=0m@_YhkII6nKU+mZTKABy# zw#WtkuE5YMU+JLzsAtE$IT95Nr<>4+zS=ATrG6YRepSBn?3)`xI~=XuG4Nk`0=f;roRA&09=kLH8!Nbl!96$&wpLP*1Fy{cxnfqt2~y)kY2 zuEBGsV4$$TSKA7DjK8f4`r81zqRQy``}WQkBj9)U#?JLdi$0oU3V6>8!lx=cHEl~b z5+6F#0+M&XNyJgjNYS&3 zaYN^ev@g4f=VyeWGJP~pilyRg285sxj3hi64mZW zDIx~#^>w*@4L2$h1ANMc{Dj>TonHWCJ!+9;X10ArPhk6WX1&sMDidh0=p)L?49n`5 z2&0s$%PYM9kG1LlRNOTA#BpVX;U7epSK)?gSt88LFm^ffE_+MMG!c`x9pR+U7YY-$ zK0D<6xAyKTr9QK$wHwM%Zz@>q$B2l7_U9UYPIuIA#**A0w89uI5Oc5NJ8#k z1;TE__+Gr)*@flMgJfmvDl*i=!I8a+t_y8{y6-6{D9E+ibMf2(*w!As!pA}t-;-2)fGrm)NX88a&q z7L5ff$0V-c;`jwpH`wsG(^ie;oegLJbS{;K4URmtjy^Gbez9YL^l;u3dJ4sCE-zsa zh7&B}XF^2kaJln%A6)qEw61Tf!>5FVty6GXBpKlYS?!Ld{pr8Scz!wy8E)u3is<&Z zw_qn-I*Lke`&6=;Q|EP+GuLg_b~^&djZ@$`VL)U&ozz`$e7u6I z>$KcQp*hCwFD@&(ocviGAaHk@WP7>IM?)@+lW%Mlx3u87=+qF1hHxso^MPM#-}!y* z&#p$Oy-Bi%40&Wb8(w3E>C3<($+!qIceV?IzJD}nZEcOvy@VcvT!KqEa0pWjJYE%j zi(zC1J#9rSZ1A^y8;dunW)UZjk$rZLy~NRB zY!3!cNcMZDZ?4*h7ku~ziI2TKqBwtlggvx1;62_>MwW2eHtxtpBL#>jt{GbX{QXrR zYZT%s#j8VBxySPx(Z-KB+S}9Np}oQ7tVjv5W?`;9++u5VZRhDQ-KlpS`Jj-@^EVjO zk4~h|@fh1$Ya+IVd@1i1ulAw4<>^JjImWs@EF`klb^SI~@1XOM2c0Atu0vLnbZotO zW8+%**^xzPJVdl@S7#LBrhd2=PEdlnUR{QSp^xOwPWA2Vx|o4~cTS<~+%QjpHMJ3| zRkfWxRTi~-E8UlrLkZU-PN4SdS|zXeoqRStcnBBMdE4Xhid7LO4td-=J2PAlLnV3B%;N)@dIy3aTF3DYO4#ES=l~@VaA@=S z>jvKJBt}fXroe4~j7c} zYNM*PhxAi2)Llbi!D2DDwIIT5GRc^K(?#Vke7{?NVVRhJCQ@6!(#dH^Sy-c9x6sL% zlC5Az>2rWk%6I;8>=F?ad`d<0SGer(uMk;pw;=T4PpOJvFL;BXG4V zlCn%D6+PkqE5VsI6jtTr=YEZXohXM%lG$NQ+D(A0!1FtXS+Eb2-dSZv-VER7q2k30 z2l^ga(q`Tua?Vwl`bpk?n0e*?d+3r*hQ3DQa5PCJ>M*0)jE_g{9Mb2G8zHJ;PtQrb z+1hi;YON%_Nzk`2=AIqjtp{z92PU;(4!3x3>zK7roPmYkLBY@qsZ!Bpv$bp_zu{Q# zpwbQT%rIazG&OW70j}MDjZkdS*KtCV=%ch1unR$Y-aHk)ZaepAMd4rM%%`^%H1A&& zZV*`a&&$1X&|8DDXwo#)qrufncE1zg5$rf7i-EE|7<+#pS=b83X>0Wqg|gfxFs3PfHv2 zxgv4uTK6yxVi8gGD{q@}fuKpkx{|j-y(`Bc`=$ez@J6B{M?c>gzER`Hc71fa{d#2T zxd4|A^v=kztS6Q|ytO?+v`lPinRneFdg}gPhg&Fy^h+18f759Do&H&anStk+wp&Fd zN4t3`U=mjplBu=u4qvHEc@nLORga5OcZv@azL*_@pPHgiK|%MwcfUqubL{l|35ps* z9Z&x8+O+$Q*3a3jIGE4?`uzkv?nLaD)mwfKK4?c(M%VmY_5P-18q!PDp2k!UUy?&j zd-8R3x7qdf*U4XPIGtGQpooJ;L(%|~xp{eEx z(V>Ga2-nFr6VJ3pxnL=YOH5TgeY^+;TC_K+CNS|cYHrVn`{7GnB+07}GxI={oVM2c zXef8HblY0E?kxV2@xIqMImifn`zh_1(wGeGZIS%w4?oS6u6(T>jrKWtxKJ_!91evJ z^~OhkAZ(SS(g1ypSX#WZenpwaIkaND3Y3nNY|4c8Z=oX24t*GQpgGG9T$7!DHmufA z$nJ0p5;dHwLm$Z132wGaY%B8eF?u=u!|_PEl0gh@BkeU+n0M~5;F~)+o%%y%5KTK= zgGhBGo6lPKwmH7i0T^7|c7t*#VCul>_>ON3$)K?`I9DyB(8d!9>&GgDmTfOYuqgI4 zMb`(MkwO%~(UE1a&B(c1k|9Q5_B$;(KKRfTXguCWl<^J1f5xxHLWv{OdJH7qQZB}J^s=hs?ec3d^PDy}hg1<>(^beR8-u$;={=uHAfc*o#o{3jZ&c+%=7UI4UrJIld@baPb2dqg1%)gKh7&COwL*nVsimS$$I)5%~BFmGD-;lB&8U`5L^cIk7P7>9tLyF zsCll;N!9JPg#{HtlS=c8TnS)#?;u_7$D{1hLYfYcPuo27_DnQXwYrE7|9lDM-g>wT zW@AWy78Urt4FqgaIP}h$I`RS%qmD)b#&T;%5LaFY4~G)UcOEc?KrUUGFI0kE3cs7Y zJI8I=pK|c_Q5n3u?YpvOZDNQ=*Vxci1B1_VJX0svd!_2Zr6AF6P|7m)xkgqpwrK4n zOo}NyE`8wiTP)@|KWRa}x~QMM6Z@bz8*oRN>6lIrw|DXO3t?E6vcMlGcQTO$dO|k? z`D=zT9Vs@D6BJ9&QT!APMi(z1u=kqG2HS~22V0D2~xf=7mMwH!yfx@%72xM4+DJX;gNnTcE3Q8ihH7R0}l4{%1FJ+yqaK}8Y zko!^Y+$L-*a0q@dTuMPk0G5ymoFlEE+ zw(C%q&bwHlZKEJ#+iLRaMe5x-KZ$F^CQLVSj{_uSfro|4v4$SAW}pA_b;D>xbiZ5- z_lXdm%zSL{&cp{B+q`8~ZyS`&Tc)Z#MftBJcuzsnfQ+EpC2+7z`q&Bf3PL|@-uCy@ z>_3_k&Ng6hdQ4N1-#BMRWiK-*QI`^oK&n>3GyGF;snH-`)DDe2yD+4Eu+=*5|&I)%JoWoP?VmM#iR2kuNr?cceFKsxTzvC8yyPeV3fp*wt#r8p=fexI;G!U|9wR_f`z{K z*Kn2Xi!ji=mYC*tN9~pb{HT+^{61(b;dy+?`wXtio{(2Q)uCHEbMs|^oOIzvTS(GH@b1(OvJBTi*Dr&9GbB$I-Slc-`=wuq%gYOTKZXo~mzA^Z-#!IzY1E=P|Ia z>aGAKD4i`%01LTF|9IHE27C-VrRj@v=btbW!9lC^#?U~3#Q1A$e$21SXPu-`+qSnv zTgx$>kVU4rLHi^*de$l;ZUXe2qrlJEW=$&3c>)_B$O_yP(v3S{e~hDZXY3sm!qMPN zxjq+h@`O!2we?hH2)~`A-JrIUq18vq<6(Yfv(&2ax~rwO`fV@maPLjKz9I&sV?cad z*kRn9R}tsIK_*zjIifW_Zt#8G*+c-|-CR2KdwW5|pguBi7u4p$-*#EX_H(67jD8Dza##1E;x8Gw?TVeJO?j*I`rce|%{)ti7Z0LAS%|JXCHtbA z8VWv(zoE7|KrC-lazi783Peyw7P=F<&@zoh`Qxiamyu_&46fzYv$l163=uT5H-Vl&<)h#$7!JNECj#dd<)l@HEZNWhR;rCdAAy)IPR;Z zd4D;7OJ=N*+%$pD2#zGZ4yA69+*AwYe%+CelHBL*d`;-`P--mNGV`mw-0rLW@~&L8 zMNWEooaQuRdIhJp{BT-MWzmb?xJ6Tx$7PgJv+*P>>m~=^f^5ue!*9r1!2}*o!5$%( zYt&gyJ_DkTe|vqkucm4WiK_DK@QV}dh!L^y|aopUa0$k{W#0(^RV&MoHqw7v-K^N%{Ad=t2jE_ zzkGOA!9Cpbwd#E@anFJbgRj5E^kTezc}HA>UFvkAI7_Kbk@bxH`y(eHSuQEZ33 z{^>Nd;_9eTGYtOD-j33Ncp(tj_9xDWR^O47H~oS^t5DlB86illZC@J~rTLPVulwLG zX1|^*=jRgtB43kBC4f|7RzQpMv*FgSN@$%|WP@qdMkLUjmBdp+{m+3M$=EkZPa|x0 zhQH+USxg=Fra~WAm-{NKWoC$eO{}5Y9$C*4KRx^ zwDM9J+{)k^=##GGd*-jT;B$-_7veIiHQCGXbmE zt)iFw4hqeAPrP~q{53m!Ay|5UcF9DB5j8%tl}dgxGCw>VX&P{{kh*C+S- zJ4IUVi@OzQsl4b~?daYY#}RhV7h-o_sot-U2=WE&^G5hydEyGLRCW#*eV>rvoicbq zZR<*wSIDo{jQrcX-wjJ*Zf-pw<0I@N+~zlgzC7Cp#`1SRg>xX;hzZbyHKfZ?n+w_tJk?QKgjnr!{of2v<4z8 zy`Ja&@xA}wbsQYBw=2$du6fQm<``oU{z+aE>nZ6|5D0`NEhVM|0zF{`fe_KrP=Ig5 zNC)?Ue-NCNBtL*E#>sbq56I>sav~s5bu7l6;S=C9x`ULaGYEv;1OGu7urD?NfyQa1 z#Y9xx^!69MbqHr3P>(0*tx7ZtOA2(mP!q7eSGXRSF{UY4kVqL8xQg$qi6wo2gdTt1 zlSx8X3sK=lcvDxV9zgRd4*5-8a~fSEJ)?nD$<3Ed(Wg8e!e-{KX0Al8hQvg7t@@ST zZL_@Q<`Ws3W}iDe$FI=L$20Im#Qts@hG{$8xOjgzcSID{@UZ`GgS2dJ(tmdpqYUqo zrTM#^N__xhT!!WPiQfA5G-xZVmB|g9_lec5{c6K{xJ$-v^tCWwSUBYKX8U_)E`0S$ zJypBJ#6*~psB2(y0QE}mgzrlEjqu9ot}t*c%gm1gVme`ORM_&ewEn-Bjs7Su{)CZ{ zkvbwIM>=?MWpijf`NWrP84+~YSVKXX`V)hDX__4Lv%Tk{c}{Gc7kr8jTImjU@_LX) zZ@+<>gF2@zd@;%AG}Y7p-WO^5@UVmQDi#={ z7)zZwgn>C?+23p|eN7+TSA0NQ8(Q{vo)l@FH-{4$i@uPt%sN{<+VeQWa26cR`B7L( zkKM?yg{`>osXg0) zO9I&6J!yblIoU837%^oxRr@x{lf}RyK5dTv^#9!<*E*0I4JJn#^1mKPE=yvdf9Grn~B7tu$eo_nE9rwIVAA?!3 z^sJa7fp>ns_^#VR^yJAC7)`_VX0m>jbAJ9=7dsqN3ynuIj;A= z;Nnu%@7r|UpY`u}ygy3ew$ExGteBow`IyFuuBoZ{zvc(TqTe1B5%F}>M_L+PtJcCl zKmR4OP9yGO%V$YP$LcLMViujB3zb;OsI0O|-TCixVO#y*a_P4WjYBqL+yzf%z|Tli zf#XNhxG*yLKlg`Vk-atQMH@}$o;W}l{q~LeV=DWTl9CeaCvP`B@+4#X2^0i!Sn2-G zAI|5SQ&Z$8PYjP&x-=RcUI@Wg+Fv?qHhJJ zod!5bMZFSoB^Wq32>SZ^!lI*tD=S%-d~R){Cr>9fu zFa8~3gUhZ`1|Rt8J?uhMON&&`=f?E>aFHxLJX|JoDE@UG@Oa=uPh!>#&};L^F&#;A zTaV`Eye(x|9ZltUhu2s1+6DpSmGC^DmHlOeyW0@q6L*k_#gFG_p=e5)(oZQV<3SAh zmLK+;>%#Ww5_v^yvVWQoj#1@SPVMNndp$=&#TH9u(LEk|olQT_#K?GjcQ#=R3`WLp zGIQhoZUTey+s}tOa+`MpO>)y9epmJ)A^2K6bT#RgwQQ>miMKm4sc5I zi7fFV`OI@wgpm(IZ?x;h(%;!0?-pen^+!FIQcxJs{k&LEX|+C8APbXwnjFN`Z* z$k|t+jF=3fc8TnrGjX@be~!*t*lhdM-55SWcc&w)*8{>2Ie!i}Hw&Ko-;8lDTMX-t zEuoFhp|Jdo>p>2$lRjdZPJ9qN)Z{bya&mJKWs_ON9UR^U1O&jJvWkkzH{~LEi(iFU zpcP>LKz{o+mS41Nr}^AUhIqq2i7Bw9G*Ix6J6$V{%Q8f~l0uI^Ga47k5_qN4UQ!sc zJ$4c({k#pGnpUR7xP{8vKqb|zqG@+;hpMvOKE3jnTehJTgQLRxdf>vqO?OY1D4+b+ zwqITHJnCz^S}LnVVP$1CTlNwL&&d#aFL4)jaYXo)=K{1%yc!j$#V3?=uY z@i*ytOZm=}V-QV^M91j#8bMl*B% z0ZuTJz*mwH!%WpjK5N!U**M4p59Lb0`i&p0H?qfj7~!XNI~qtb5oxJA-kw*EieQj*s_O>t&Vg-N2a2F*_3Pfe=gK zvL*sjOh{$N11T`AY0t73%7L{zyqw7gHu|3%4e_}>;NConBxe2X*1}Y0zf4KYs@Jh=dyf9ivFjw(gcPbIl&mxmn4d5Jp(;I(GCoo*Y_A0T| zud;-Fg;21`!_LoL1WtMh2FJ$wg3t-hXBH#`*QV%E>Hd}sUb{{|1SuJrZZi8;|4>Sg z;{JJE)04Hn>z%wJ%C#G4`1nX!+plSaZudE&$Srl<+^>&U2gk?z z7n+LY_;(T@Sv=RX=!MxfDmHVYt{Ip zr(B1vXLY7&M$J&CqKz;Y_XUk2=0(7sB*X8-7iR?}Yi4qU97u{uttp4p3S(-hDC*@} z!P@q1&oGEt#2^*#L^T&>s2UR7z*wqmZuviy9FMFqTT0|1PIR>t445`qa ztue;|7N14@ypp`-Y^A>N*kxKV_!u9ASfq6(nnuuXLDYkHw$+(GF3ijIiJ|5PieTSY z!q(#NDFhL#5;IrH7HXh|9IeHLj4GAq&ln=yHMADn%RYU@FC?dX9sE|pW^to(#xKcurUBX6RCjlGwf-Yu>w~Qj z&eu_K&{*kDM15?1@^vv&(;pQYK0@kiNSmlJyUK1tkR2 zB0=m;Q8ay}QdWuMzO!0M<3&?2TD{=cJ> zENxgRpmq^8@xY6Si1?(!nSJwbWe$_dTM9@PQ{@E!`2D}|thxWKn>6LFRYCFc-$98% zNKjaZ@?0(~kwA@Z)gS(+zxdC8ESy2)L4Fg$3^T-kFFeTw;OkR*B&wY#weqyp`AXmZ zEZriYQTgxYf@OI8RbY7RprU7^=m-RA<$CnYr#tFv(y!bp`=67%=W*VO8XKlpP?$vo zUDI<&>5Hknez#587m+}7=NR7fZ@WcWbESqoWv}G0@yb2FtEZXTXA%^JdD#zK;1}^< zSU<_-NBi#)Va4NePlr%=PXCt5urN}Z|2@OBGgfnM@b-y`Nl{NP2B;nIe(br$TrERu zYik18e?~c3H)#8-zf!L);%s|jy*n7=dOcQ{r12$<(+5-2S8${a>q&9RK&1F(YI9ouj)EhY*YKqcl=2=q z?!_RraxH`;YbHy_1mU<_2V}SP9&5U|+v7B8F_n%CQg=;7MSozR-zTFlqKK^FO$ zK!6u_HlE2J%A{Vg0#rE3v#qgBQ zo5Rn%+1z>bIKrVs@VNj_l&lm8oPO=tz=t0xu1skA!%ZiC<0=gp@rf*tB1N1e{`31V zC+IW-fbL~FQU#EKBE7Cr&z}`oLzkAi0sw_+`8hT^A%SOfQ&|xSqJ!!TJxIPZVy`k zJT#^LIu`{fm0&bX%wAwZFU0fLk`#C)V=4P4^CU0+Hh_aMy}e>VAt7sZ5WSwSuVgtJ z06a>Tlamt`9*iEeO<^P<+?5&^lwBJ1toY%k)9u-yW`ataZT3@8w>CkJ({aH3|Riopt zVWg2j9>KD2yCBN)fmvccXGg{nx~7IF-0$C+y;c9|Fk)+L=ih-k_y5#PwtIVevw;i% zJfl%-f#>Ax{Jis}l^+ngCztc~v;e@YY(0Gnv{%}-7L$memF;cwE8j=00ib>6a$EK~ z!;*+54epC1&inoy(;Id!0<zfzM1!6$5!iJp; zP_Y?yBew!iB!$P3rv2_zwiS4cJU(|ku*-u;;3nUrn><`~JoaTj-kB#P9Q$Hp>d9Pw zPl?&ZaCQi=ZxzED=U(;-1W+_Nyc_{Ti~(>NBD@?WvFJtsZ7>ZB3$}KHow%DD4~t%F zv9DX+tF1Br?Ck7STlp+BMP?BhjrE5QtP$yN%ghzd_jxhWb-bc-H3AB91Se~XE{U3_ zy{T9dwl|2yt^77v+kAYSzo^GnE?ck8K{V(gt(xiQ;?a7dtxFtVG`RsTB%(~c5)lRA zqvY(P*UnvCDnuF5sCKK!d&ukFKM$@{^b|R3<*f%_+$Jzo`to}p9D=-oe3a$;;0`nk zB=A^)KUE+c;W>-soehc5^$HTO7?nzdZD!xXSLNj7B(`rXxc-q8zX6q1`~=yFNPgga zcW%Brg8){FrRGhZcbb9OJjJyS1Zq#zbB>k0y+{S28)Uk8Y5gb4g&(_sUeXZ&4Xr2r zWUw`f@t|3-8R4^MmUd^MQcNall0Hb;@sRhGZ0@{LS689JQ*p+3&kH4bk>9=&_eCfGaZG* z^M!5ZftU95JrI}E`IspZtYR+oU*Zy=Umpk39Cqfm8BrbwHb^!}h0cyhpoeEF$>d&g zjTatA24oqp&=%jiM0JcT*$>UuObA5+oxY_S^>UjhH^^Whh5`n)Gj$UL|Jp0-0;U*c z9_#jm^rf%bdkgj{T5xuC=qSX7piiKclMZ3)r%8He%R=^0j@ip7_aOr@NBR$<{!#RK z>{kp73|&A54n-%RTVeIRiEN*(fOn`=kJqTDXJ>Kg>1C{HJimOg66XVwb2Y-F$y^b= zX^+>!V$#@iCdAThvEt~n91hsB1Y)u;<_%hParumTBkkA5h$X+Rb9u$(SfHkHpk ztQ{~YlZu)e&>d>&tCWWmyv_xpYj9|2lDLFt=|8vMshV*o-BDi6>xe~88@J7#K8F2- z1)&oHAqIWY(fQ6=`pjHtpHI1gMWrrGe2H8*rT=9oCN=G_NxZN`R%yy zkBgh<42!kc!4Jl7r%^k2}m??m-D{g)TU2LlA1ri;2xXWJZnX99(T|E z@&y-YHQ>1jMk5Y@uK$#uHC|;~*|Xn0Hl)!ngn(9#=C?_|N8paBv`osYqcq!gx_d%? zb13w=?rmvHAw#S(q&i+116xOQlP~Rl*J-?oA1AFXC>D2i@>&n;j`V# zRpO)o{KYep%{R4M3H4cJ3Ha*^(K8guSqFQa*KFg5kT9T&JN^WEE`3?#sXdp_u!I?e zUCBP<-zt0t69{ys2rH>Bw8|byygXct6u#e80I*qkd$E>W`nx{wtHn^D>;MrGbDsSG zru*f);VV*@DLEky_|Z2) z!RJ+1<-B~6**#rx3NLi)m~KY)lyA+A0$V%Qu2#L?DL94B&T0U6h7?aH$KJXHFqYH+ zHN(rx`w!9Hs265LnM9XjNGd3H<4evyhwR*~#Q&>~9oN(YPs3tNzmDa15WpRYe40va zzEu4z7cZP5c@W#jC#(0ShWELu>6g+|QmdQXk|ljbMZB+~9Kdn2hsiOpwLx%B^Im4I z1A@d>)RziT)sNvU{1$B?Bl&x?Qp`IA?J+aQFq29Ol=)1)dd7-AdHwlll{500%reIL zFIV<*EZb{qS9nPe35E{Sl$-aL2C41EdYrx1W^w>QrWY?-`L6dXp@0o(V33}YkI-%! zakQv$?w6d(?@BY^%0lv{2er>w>N`Toq`JO3CtjDZt|ix&QFM|snyOEBl1}ua=*FB! z_ESv}A0#Yhwuj@^*%LZc;)N$|< zCfbL0dit6MJ3V+EPvVZ79HbxR)v{?MNrMJc} z<=eARz|8vC*M;}wL7Jxz=l2pSv2d7S4Pm)A6Lo4kTx{8kwA$<=*6)3MxDx)D!83V? zx^ABBO$0D#@4dWQ+h@m^?e(Dg-Iz;*87}~m+gov%jdoieFUT&1=GBj1-n+l$w~K2s zgaEh{%4w>z#o-b)LUf21l;d{aiC~km%jz9>UWa8A0n~gWqHmuP$&_)MUnt3R?*1&6 z8@Mqx%Pmz1y`$i`_jj4;+Pe2dczO@Sx78|!2uTElS>LEU-}1z8Li6f1n&?S$jegb8 z8;MxTXh0g;Uuv7*8fk>dx+y8)1K*Xq+q4ZWhha)7_nQidN~kwEC|I0oiMiJ3(Kd@0 z(*BXJ_-GC#b=*&*^Hx;yErxTe`ZLMnj2j(oiSMl*;G&#og^f_~&-M@Q&6x;t5mo{v74xiy3B2A*xadnN3zXzdwYL z;Is(`(c{ur$7&6w?GJpeSjnn_V;XD2+huPEjEGB@Uc-wFvPtoh0EMu+Dpj%|OeefP z@40ooz9+IF+LpFYSP(CQ@kbO99@(XzdW%-v%pY)@4TrlmQlbLf?T!J$CI?8)urcfw zr%jneYk|(V2M#wZk<=FiktJ!qv1uI-Rvr&!>%Rd~=De$yd%5@fxB2{UbC~m>Z2GLu zew><BMisqnfCTd(<)M7QUf$MvupCE(y<09p3Sv`iY&^5=Z8Z#@v1 zz5r7cTVp=427t$DVoLx@tN|@<|C@$|0H1r=1KJ zPxD7gqu%1#BmM)&L1;nIKik|rul$6cu1<+CG#ft)vfKGR0^3w19Klvsy~LTW2^ z>=4;=t%Ml??SUE`&WW!oN0}HA740ff@H^S60%Kg~2(vI?KJUSZQGZ}sq)Dq9f_?8= z6jKhhu9j7~C7;PCvl^u3-n3j-C<)!-A1q40)GcV|ss&Qz{m?vWyc*>Po8Ph5t3|Tc zSC{(7gQrL^DrciGFeW3fn zj$NpQ_)27RoO75EVz)nV=5Z~KmUqc&4&bq_$;tV#c9B-`-yr#1qwma1k~xSCU^ik3 zi%{@SE8NR-q@DU|qZTI*;q?j5)+m$tak$K9Hr51QR8YH!6=@^fc`Y1T$Z)As7?-O$ zlRNn?xNc|G-%sWc*v;7Ngkd)z@c&X7_^=@Y5SDLUc0RRU&RNekgUi}Us*qXq0XdYA zkk9~NIO|}2Bb0d{vwKvQMcJVl{tm|2@S2_;{Wp^-Eeb$f0Ukobv zSe13lplNimehF$U<$ST)w(eRhsPa0*3m$D88aWLtO&7B|gOkptCcl_>+mr;sclV@Y zLstS=n`xTL&(y^~YPq9j6W*2nX}{{FO1s61%Y!VJR;-Q}?`@Yc#ZV^eEs^gEY72q| zG`U_k7T$tY8U|fPI8A2G?PLvp@4wH#uHx)y9sUMZ#kg&p0z}f_qmD;CY16ImK*m9M zc$m9Unqh+qXERKqsZRL7^I{NDX=zpl}rjef{dc`EA zXKX9hoAYTAV)~Q4jUdbE&YwPQdBX1fEPB(_a zVq+ymL=fP7BCu|a03C;f+m2kVLI)j0&+M|Sj^z!iVMArf8K22(8KY9_ixmTZtQR1_$2@@fjFgmAKs3TyUNcgymZO*%Rh%lYi)svLY5fB?ObUB7;PB0#~QJY>H9I z8E?qJ4dLGT8Hr@BGT>?D0YO!{n92ByREwcVUM94LgO4?-L<%a|d|+r0oY^6u`}iJc zxG6n$UR>YYL(>92ew|427_uQQCP|{4mCT(s*%(4Z@fvY&QWYq z`SkMcbg}9Ai=W1{7^ZoQN&iB_isfgOtTBkq`f1B3nYuwv9qqj$%VXSvKH5b;xFS8HLi)hU7PVlg8fZOuvDd;DhdWP^0hvPb#7^=X{EN7 zfu-9F!fWFxPJ=w_1kMj5T>Fm`GQ5Nb)lCn-S4a<|ntg<}r|)$BkS7P0wy^Lt=*zZ$ zyeITR3I(%1b+0u^@KK~oyi3j{r&P4iZGAmtn}>dXclXwAfd|g@%(i(p0G&BJP5~7R z&Uyl5%XuGm^{()4Alm7va$JJphwtzH6c|HSeRIYGlR*w^`Btrlq5O_TEU)uu#ZHi8 z_}TM+gxprXQ76yylv3`pbq+?PpUu;(l2q8?L9E8}_Rsd|#Cd&DAa+p%H(%UrCRdw| z5WzXU6gFcNIJH$En`{IK=4j~XB04%cnNQvd13nWkK*_`scCbuM%Avfcp_d-Yt1TM~ zcTZ6stNboAo?!)@NoiX!Aqr?6{D9ToJ0#{vV0MvVT4UAJXi1bMgL-HFKq2~uiBT4V zPoO~eLVF=d6N>j1#an0dlC+Al!4<3nZzp!~)56#2MyKT1I7eT|P{OGo7Hz}d1^b&% zYCcuGdZ+I&Dn*hvCYbm*Me;Hwnn=r`u!0R(U%4rvyv>#lAx#1o`*&2R@`*%fBxhBw ziZ8t97k$Q%-M2_gV>sbT35fq@n<`P|PxU`eXuNY7jF870#9n<9H6|ilO8QY+j8Q zV-gra+MqvU{R4iu#r`S(_4s%*;oA*x69DJP1BNCPe$>kYOa@YaT-SQh1*-~WNKn1?YuuP1bSaqBoMhq`Mr3P&_Z!xz1cX3 zYkOm2030XcIdA>maztTnW}%OOSL!D~Swr&>84L^QD(T{i0DTcdB8tR+XU9U|W+NW3 zdKA+QnCd=xOE!XPEJ6~X9xrMrPm(ueNQ;?@m}>h+e+BX?x%bMz|F<1UG;D_O?i1|Bf6AzwqN>?JSC2r z-k_^#Xe$iLsnjmQ8MX}vy4mGWIT;Ss%q&6AwUT>|>Qw^bH(x~{QFjICZ|5~XN#gP7 z4EN+~ZgCI}?KRU%C(?2-(h?4t<*`zaPuET4SZhfn&~<1|`^?XDU+n9Nwg5u3JB3ls z*b~w^VWPbZ8&6wwQT>6C)Q4g4Fy!+~Y@r4Ojtk4W(k2!jr#9yhg$BKMmOQ|CWN(6J zAZ*J;)cWTXLPW2dPG@zzZMjtzo7gP^0jkKl`6}$QhfT4_xU6NqwXHfrVd;#JgJsoR zV|F%v6hX*ngZyJ+WjHG$#@NuO0)9@Dqh@n4z{0R+BsW|KF(C~Uo!rAM)1PWh+p83X zIG8uC{D)@Y+MI4G-D*7NMEEdb{I$9A*G4OH#(X8AK|C~CdMDT<-Q#(fQX4Dm=BA6V zj;eakrl zNUw6gTDcX(VLm>4M}Bf1^akV?%O1!%Kat6g3ToU;(&n7M0Pr57BJ)7N@c@>@>0-z? z&1#ZK#d(pntY;}X7+Dw58u=efh!i%cMG|RG>%VD|xSxXa;SFZ>l#zg^+DFKOIzgYH z1~0ALFG}~vOGx27Wj@oa>4{73Sep7U%r`xJ~ftekoA&82j zJ+g)L)PMF*+<7X+;m$RHVuJguK%Hk3!m(In?^YCiVFb;t2XN(O4Un-&cpRwpJP+zf zb!AJ}Ewl6Jf=!S>OWM3r`uPsp$N2BdlLCsGU!yYRU=-tXNjQPd0Owo3@WTm?w_~R9 z@l+|B58jo^TA^l=VqUgEDM5$4^7=*$>)N=(R$wg$n5?DWW32Tzq9Il$xq}|JnP@rj zy(K+x8w&uvP3e8Ecz0m$3ztBC=89v;-K^HA|9qVT@=dVr=;m;cwgQsiNLWjqe6&!0 z^JhSN#H17;0j#`m?H8a39JVt*uT}cqGa(`^as(*KOuj`yZ~Lmq*-^@14IYSFDVQ&e zRz^~(LgjZP8wEu|9^~6WG{YxN5 z!Gy-_LwZ@VfcnyYoQ7YjRMbYo$z0=JMax^WQ4(hTcJj|l?yo(r4x^XaJlFkEDM28w zs{5Bn$@%os=%N}ChiAHgBQ2NRAVPPr(-i3^Aoek9)uO?q@ytfiw_g7dcivLJdn z@5z$8m8^iS5$m7f8NnJUd6`z!3bGwFXOz3Z%iCv5gE{ z6nDPxFoEFzDi6o7Pu_U$-*PIcI{l+c$Y1Rt0%lA2S_HI&vIVoz6a09Gf9-`3Nw?T+0?n8BN`m>k#U6uVlYP zflM(KZXVkO=zqodf24BD?&aAq=$5U^FCnyCy65wimDIP1UCG-~nTh7JB zHt2lsPEfzW9`iy1As=&_2LNeZanXs;|}qUFs?Sgmp90+0?Y)pM#~^3r``QfUi#r0R-rk zVavXc6hKVkil;Nb7E{3herR{|tH$7;46^`wR>;d2o8~}H7p8MGrY|UB??t;*39h`g+v!g>p)T*}`qWVPok7kbo z*X%1cPcxFCmJEP}VHz-M#Kpr~9KieH2#xaxJP&IjWOki!>z>(InxhL6;5mR~>{WJ9 zaxXX_bp&xE!hH}p@bg@Zl*A>2zL0bfw0zE(wx^@X)!KpnLaBVY5LzgAWBOl{Rs|Ld zl{-2JZ(_lJ>4AHXn*dJ{3w&W2Se()V_iX&LO*!(pxjVP)9V>bHiV3X83Vm*nEK|$a zk`mkazE^Se!TvEFPpE`gPr4DO0USr9P5ocrEmKiZ^k1h59^OoncH#g27|bZCr?>n< z^nbiFVk*|j@*#-i?*H?a0G47RE$gq}*pPpHG{A|pdV9zaV*b_oX>voty8il8X=qNR z{tvqkT*Uvo3E&6*>njr5i2MJwu)DwfKWs1mm)92l-@6nkp7SL>v!+o~`CJG=ZgE2R z8oG^k0pr9wYf4$M%gv4jRKQd}^~Q$bQn&8Go_D?TbO3iH;9h5h(|d;-l{ax;6nMJ1 z{Za54Z{ErjK7RF3(>Ke&u)*G zXWvGVvLVJ3ZLJoK{Bs(bQbG7c3q)P-VSi7Qlw{EicqJ>;o0OOJ3>lY+W%au2(eSM3 zvFp^7YDE|9xvbE2nz*acaDz(Tv7>qLjz*8Uvv9$i$NNEG{LzE(asK$3%=5-lg0#sf zlm?+IEYY25-xr%B-aP7u?ank2+sAzYme(uuJv>e(R8D%{*s|^5<+GU(Hv?WujH*k; z*(vWv=!;5qXXwY)*72ww$ruAk=$YH*FJoN6d|S9pYuW)G3LA#wgvl#GW+O-Rf^K3p z1wxsu^C6?pM!vMK@)J@DMxPN^tdur?=%eC!+;dELb|^k{1VvN;Kg)%I7;^+EOSw1A zV-1&o$Hw7OMEDz4(jFC!z!+Ja>wf5fmqrvda~SAQRg%j1%gHzIB>!1S#0EeN4+e&< zq3;V{NBVG#Q_aRAJ-ZMN*loSR_&&B2oXs+=uadhq#X!FFIvS>PxopqrE_hLq@raK4 z*;Z5@CX>H0J9OfHPtjQPXlpTp><5wCp_rvwd?KPBxlnHExd1qYhs$MKh|+KvHc^Gd zrsI!{ipUCSFuJ2jZZ>qH8rza@A?k8qu=mSA@PUZ`@ zW@#5Sa34hFhvk~-|0pEcCi-+32cnigE# z_Gx|R39|3tMYdj;!r;DW#laD}dYmbnd?V0?)6uskNz3NB`qYMj51qTW4{qikd;-rPr_`@*uSByf7h9D<9-qIk z{!(|SDn=tNBQf1^4ITO9G~{s=!XNO~=UR8i!`T`922Br=H)iY8Xg^AFSCChP$|_~6 ze>gD6z~j$!al@zF)b5G4HQ|YPkf^}4d2Ltu$Jj~WANOM1?LWcyqBjDGo*_=X*)GOz zNpNL;M!V^gzMxu!Xz7Y!W{cMoD7evn*MYy4hp$|*Ny`TXwf?*K@aabzez$(wfD}1? zmk-1~&V&F>|M^V!Y7d3I#l-unyQX1^?J&wD<`V8%?y-<;d7=<;B z#S*6vuRHRyIy5_7Ud15Wy@x|mDw|hR9Sgy<+qGo{VY$!$B+ZOM4wdA{ zgjz7HGQO!&X%cOkVZkm1MbBs6D!Q2_nlv{W&oAkZA zo}k{FSxu+=B-d8sDtq(yw*C*~qax;k;dAo+>yzAv7uc3GQs&pt;Or{vo&hQCI?Cn5 zjItT`in`&a#h%lUc~m(S5$6NwyrD+(1W%%0$|F0Bo+)+yH-FU~8#4W-^A}~!8siEc zMZeMBqPKR(f{i^Bz`IA@4$HG88jTf=@)GiqYY5D~%$?0vw;ALr5j2eQUZIb@a{b4* zM_=b=wuPcHn{oFd4m#AtPVi%Vvcr3e`ZcM{HJ|wO=5NQZA}oj_q4bZQyzMa*cj zNV!R_7G4}VGZ(Vxgsw&A_H3)jedqB%dLRfL>Nx^lOwoXO&%PYhtELd%-3lDpo-^@4 zDH|!D=g7KJFL$l<#tJif;xnHeTH828Qjno7e0@O?hL@v!Qu*i=TLX6Rfd_AeIJ|bb zgA`lCasy3=tp>(g++`#CIWPPh8o*kY;a`n1Dk@nAeW6j~rJtjhueOZt598%y#|fCm z4Ih)4;_6)qToW_e=+aO{a$KcmM+3}xxZ=Q!eDw$7*(8Og2uVtd|x+hN}N}ua$ zJ67P5sWFSf3U%rEy_aBjAjSutSp8V4_a~ESZ_bviXH9~zpyBE1vag%hAnbRnp3kNp zYVe-Co?f@x3!ztAY55*&m=s&xL*VA3qOJR8!qH>zg8=)f;;3Hp6YpF*=Z!iR}#&qQWog{2r^Voy;TV=|}vmNi&^5Y>4T-9sHPU}>?-y9X) zXz#Vj)yCiWMHV@jEUS6lEgu;k^CQ81woRbGWR%nOyH%>J5Ty}R-Ft5un&cK2&@0J= zpRbzTKO-?m4qdx>ilXa3IN{zZ41b0u{bUE-AGK><^gE(U)|V$rZ1eK;X%J52Ss3#< zUEN!uFSxIU$S>_o=An9=@8lwnIb3k>kBoJ{dxhqP#CN{q58(0@1t@v?n07dw+k6w{{ixD$sT#vzgpCDP8dR*)yUb9Mb-Xks{{ zydk81@tufS_1bHjiQ&HXWtG(|y0OVpuyw7S?Vo`He4C|O9O7vl6+9-NUP!iG{|nQZ zm*B?>zt2VQzO+=)Ay@8AG8iCJMt?$Ot6UpSMVkHb?#T#y{p!l|D^xb|YQzqT2g>aJ z(A5&tf&BN1HT)<0xkZkT;H=crZ$`^bt+;KNxA}w5LEkjz$CGA$wS3c!q~p1fW;Xg2 z!$WagmdK$`b8=&{f4$CEdn5>=MS)qWJFyCf)KwN5?3wO~ik)!&9+2xLoA+&~t$RMV z#ETd!c$wlt=8nTx>-rE(r?%e{$|`33N64C*aBMEO#x(c_yF4BAT3E!!hBRTsux@;1 z#9hH~GDg@z_jZ2Lz7uo}wkW^x^E{1DKKU)N7k2P&Nfh^C*4S;ox@)JRbk=qy@3*nn zK8p)sK4dNH>M@2`jiMe|+&^gv>8)A?F*|NM^x+?vp4_q}WF2lKw03vDdPEiKh1zbx zFG?sIM|6ne>wEAlg&z;`NjS76Pwhpi3n)0c><67YG6a@mgFE!W2O(`osL z$Xaz_t!NtFs=}7^YN%%`O-*?|pHYx-STfQH!*D4*&h1m!4KeRjkPs`gc>It$im9Gt z+_6x#j1S_a(phYJQ&GlbL=5@fl095DbQsEPh#@aJayaaMrE4heUq#~ihFNNZebfbg zAPZ+RjDO2@%7%GSZfNqmo3z)9-1w*lg^l&D7K2PkzGs+xzU00x=|td8jt#54dqHh~g|5+#`sIDaJa4$8FMf?P$*8bIx!dGM5z9!3UEfee7Y)@hYx=R+< z@dAtW?t(9a&%N0$Fgabg$6QWwr4BrQtlF>CdVi$wCH|2?k78yV_TqSBV75wbrZnFD znt2=DEtTV8dB|gn@&mDWEw$V{wec|9%_}bYWMWad6 zJ23g(=h6F)$DW0z*j#<(y{tnoo^g+;N8%X%bTp7F&9*RVV!H)dM%exZm4Uy`QJpXC zS=qttG4!nikP(6H%3+Jce7%a7IF*jzChP8k&UbC!(hq7>U{ui_*ASd3&921xQ`E?W_yD zF`7J9UlZDBMb@g4DY^~6t9lh7d2){DHrLHjMXDbKnYA+{>v&|zP8MQQ3 zLU%jOrOUf3aCLFcBPQtg5{XM}B{+zAd}W_u6I<*=l8~Y*=FZCLY!Qvro0#vN`a#d0 z#5E>%|NEJy`W#Kpl2>-kn$HI7aMPBfo#pFs)t3JZW$15C(|xc+VeR&z{~v zz83vzOUv0!MY@KS9niP$9B!B91dxCKL))>HzFO%_Wc(YcA+G@XI9s-^e|*JFyn?qk zwF}NC%hEdM`_NqXsUA&F_vB}k#ksmqFnws#h9CIZ)iTQpcfq@#ZL-|8Ki`bMa;p=m z%xVyIaF}FKTnNnI@=Q=cA3My5$%hPdH59;nztJ9sdtlfHl_Hj5TaXFhgvTLRm|8|s zyX8O#YK}kR?CA|(J%;sgdEDr92Rr|kg1!-K&TT6s#|_$>ENI}K6UIg!^k9F?L!vT zfDwR0^P4c&K@QpLIw!T*kguK!HL)=XJlr^H2ED#Pn)R(xQZ8bF1Mz)Vstoh)#kvD0shal@A=?s{rvd&SO+f^?`J)5X*i+@c= z>DJYw7xF;Dp#|a*|7}iQ7ne4!)_Tm+qKe3;Ojqu1zRP3v{TnBwr!o3Yw*h=kxMwGW z;Uu1w+*$~oGZ;Kg_89F8tGNOwZ|1cNHMH$?=W@geK#gI_lCIPoFGz8o2u44qsGg+@ z_C7pru1oT^&+Ll`z&@$>e9LlJ$3>1-Ez&DSD*P1HJiqd6rZ1@7_eXuN&M9qzdYpp# zxzfG9`5QL`*@g#=mM5W?k2p8K<+}rwDaDWIP`qE(_EfEeQsZ=1EFGXx2|uMc?^0dG zUU2UytsHxGT`e(ogqh9%-FPfA-fTVb;?}XERe~RQJ&-1s)ZscWr$yj&kQVO5XVIxj zUd1RbF75<0+)zAPiJiy{<)m1f8gvo=B@zK<dEe|>x)v&Xm! z)pnYL{AM_B3}B)pDr-LJcRglD`?v}-y9|s;GwyiOuuzy*RtkZ6Fz{I9_vl_bU+pEf zsQdBhl0%d%b9Ams(@3nD2U$eDgGxd~v$$(-~or!jv#V~DM(piWKq@v#OxcQN!vDuWN-`!>3NIyl>48}F7WVIF*kcB##e z?p=EL(uK_~&A(;EnqA<1@_8NgxtP?n+n$l>CTbPkJHo3=3O`BnqLmTv?N53W5F_~X z_gBdu*P5_{Qzm6&J>q z8g~$|Q$USuq=Du)YLcI*_K2XyEGOE?$69FT_|0!cECs zpn02ZxXp45fpNJzPL0v_7i1##*XCKRfH2-nhK3{PcBafq|4%6ESKC03p`-0@8i{Bp z!(F*n>ID@{0g#KG4Q{j-1XKf6OSa$bnbju@APvEFWaTsTbst8^F6PN;(cVm2oAC56 zc$0BfuQ8c_s<$SXN-lrjUyq+r=AfIc&+AOm;v^(7_rt}8ktbrADgT>k=u+UZ!^ZMk zx)r*6Q5}iKc8rI+9k2XRsQp-t*4K#hF<%QNkFWCF>uUG)D8&OooF?tO=nv3fca|hW zYp84rj}dkMy|wO}!jsS4V=Q|wS>68J&vbIxk&}eZP>uJ7&Cg&^WcJ~tqK9Eqgnio~ zw0Rur@iB$}Q2{G4sGu9K)iizU%~tv~;P$pbOo4W8!r!n~%#*OB+{08Hm6XYSUij_( zH5wvv7plJqT?&D+4&ZfNahFE(e;(e2pvsa(n^b7%+8 zeptYFk`z$T%V$ze9P3C2b`2vLVJoSf0f;4bB1&kZ;azE7sYaHh{itHJ9508`@@lA` zh6d!tmCPl!(tmPs#Qd>w|LkSgjZKzVzPhGX2zyIejmjz%FTqWNU8)PHBiI!F{4*F3 za{dsinMA^dPT(bU6kdn3y<%S*(a+D+%hE3N8MKOyNO6OHAGfm-`bK(T;w(YPGVMOS z$#%Iw^qEVHK93gXvETL{#LLz2mmR=3Hid;s-CjG}@H?QWS0ElYBj_TAtgQ}qtj3`t za`N&omdGx59jkAeFFdXrTKh;SoXv}8{Ia+9L+--Rl^pF#JD874y~7Dwe5J6C>K925 z;~~OPknUO{jSeV(FRlt{8-BVcrG_(Eab(h3XUPBVyBC%+Dmajvr9iMHp+V{n_ zi5x5d&XtxbA9cyjq8l``JD_V2LH*(8N(z#VAHkl;FK|zSg9jtnr2Tt9^VEg(Nk)H0 z#Zpw8*q(Hu#up%G{D0iNWmuJM7dE(QkQNlALrOqGx{)rC?w0QEknT_fB$bj9q`Ra+ zK)R&68wr8AHatG>`_1=#GsiK<%%8b`;70bo?`vPV*167gE{v#Yr&JUcRBEkbeT-<) zNR)16;+?g4(Ih#R?qp7NphfXE$rRzA;SrsKerVl%v=>*xC zxE=Id3Ki(vYB^-=-l%89w>l3fdW8EzrQFP7_0kX+A7LPsV=NrVci!SO>*VRo?G&(` zTA1)R&*QaP{ell&;>O*d+FmGiLu@TX_dpL5`qQOn)RnuMbkXv)w>07Q8$LZTF~ZC! zYJdEz=_o_bH28&T5tA`o$3b%BiLAa15v=1I9Zvat19BtsD^*2BK5n z2LA$sc-*G=(QN4he@rhg7~I56WnA*`i`Y6*g0O2$TYNNao3!fDr|KQZ=F)`b|wErz6E2{?8l+vb`AFmF$6VXmua51$_b6m%KGwf7#pUykn#@Y~HnrRQi-$2|YCnfrA2{8PYwsu_ zl-pR(!^o}tF6Q|9Q=E>j>-XBr6v#VTlGe^aj?V=!C6$Xa^%_c-NT2&x7+*#DpYBHaNYfCvCXeYYWVbH2hkL8nQy`rV$#f0= zv2vS>M4oW%%Bw+e8+b!}QKWGKT?C=poksqNKM|O9p47y{IroN2$_#Y+`RPARhSK-Y zGD6uC^2bb`4vZFC6t5J;&lvO=Z|1K&>VN-|VPxs!{=06f0o*+`M%fXfxjBJO)Yd$w z?J1nEA3U4&=jV))9jXhsqWpJM)Jt7(Zd?y&QkxAMi^B{No~QAI?q;kSmRR^{y&p(B zq`7#dq<4O)iI;NWZTnncM%N-KqjYK59(Sdv&2YD)%hm}$)-5u6BQ)%QS;~X5$;gUiWwfwQft~y3`O+)-GvB&0+n)^ zn`?rE$LgLh0Wft-HP~9HcWXe5uwzIZ972|t^DDT#JDDBb*7o*EqRRetB8IWyt5J#_ z4gqfxF}`X{PYisfUM2SxuF(K3TdP?Dj7AosfI&u-2Ux?;5SRIF{yHr4f@VoGsJe9zoaWFU?p z5njE{DPIOCwY;ukc=8ch_#KsA)+P07oKydIeh+`F&~AJjeF6B>PtsJTIeU*uH>OD4 z;g(gr6P{SVU`)?r;kH|VfJk5v2%v69XurgjUw-{@%hKT(P;;}wALSWW|MnY1AFppt z{IFn_c0;P$5%m7*U^W8>-=h`)s$YK1*z{QK%Ud;+sPDSk<2Y}A7{QIRz)M+ z4PxQA+83$vl%eCM(u7aOoWC|yLiS|{*T~IQB!Pg=cL&1A=3i5!{Op;U z{T2&Go*{cPQ#8al3uhdW9;}@UQnN&w#itbQ<6!pBk^8G>ERUAG$xSbbfS4(qr$4-$FGCm&cn4dW37S!C9 zS8lTB@JH-fw-PvdCI&$|oDUPR8}wUDI%z0iGPxxtZ_8*aP&$ej38ee{TSEdK8m^4% zbJGSo8PIe>7&ycY;26>-Q0OHWMhRtM#wX-2ukCnM!!KcwDn{iywXvNhzt8n2B>BCj z-R}=(mOQ*FO%P6OeV`!C7&)kB#8BfV|oXy0%Sz}&+mj1b&DQhD%I4qxER$E`52xA+{cnS`mW zH2}%}U_l{O;5G!e!fF^-ytF*G$#vs4csb9LeLc(0Z>S_2XUctgvU zo25{d%GJ1mhkS7&wTn!V4{zXSY7x%xd)YPwHz`Ykf}os+T6mSg^g}_e1et0MBw7Z3aL%MaMMU%wJh~Cs$AI5N?>^`wKj(cv(pmb$@i@9G?;98Tud2F z#$|0q{3v!iT&-cs*RVk>yS3_ezjrKKHHC2SoE^z((xR@7Qee@9UxXgVlxtLK z|A-NBqSg-&6a8cyRw6XI5~I#dby6Xya33UqOEJa@z_Im;k*QZU|IVNR}DA!!R%R z6+*psgwg8iIU9Iq1INE67tV<`*y(Ji{Op+_{mp-lPeF~aIB?b}@}*&VK5Phh1Cv*O zhH`W)wZ9aMXS>r^*i0Za?vsRn>oGW&L7LI`TW}`4A>hCW@NoSuSAgWHXM+lFg+i46SNgAVSqJAepKG*c?@-w^&OHd!&tn%d z-+1dAvq*22<`H(CA~@O2=N@o6Z-v!|1RET+#~m~e)$9`{n^^NMpZQQ8>=cqx+RlW8 z?%5L7z(ZOKInyPtV9jsQL~frS6-@U3ta20#Y={q!!HWsWNXatr|B3OI$(YQ$M-Xeg z8Fg9%)~SEmMZ7sSG4`^9=Lg}C@GbM;=x4#)A4#FYJ~~6KbwwOM%Nkd`ii8H#NDVDA zRJSC!vu9(u-efbi3Vy%L0-?-d_G}F;r#(FXM8)QoI$!iIM$=bIX2jPuc8>Z)0(D*nC^+nBJD>S*JNeKe5RViRqvwUoN!zfm(;oh^CtY#Z8nwzkhsTYSnZo zz;A#GA+z4K^HvCWPr4qn@dNAWqaQCw+|5x2`q4whO(Y*aScc2#!tElntgNW3x@k&3 za`T3f4eim4LMGicYX8FpzX2OaE`^Y6zMRaH;4(E+Y@2b@^uw%PJvsPrD>Wq-|IODk zVQC?@aHFzs)Ze?#&t$Z10-pKv8z$UGH_@p-&x^ z9m*%`pVu2*HBg0m@;EFBT^ag5Dl)h(pTlTN$qS+sEl%hS)Cj z`N8#zhox|K#J5OL8?M+qmBRFZ*Jy#qT4MS3;3B;ux?)M0!ru?$M# z(TR}(QK}%p0g-w$Pn=&~zeU_uN~(e2VbmQvfb@4AZmQK3Np^&8)k z|I9eEd^QJnpl%0Pf3(g#Agq&*sBflzg&(C_Tn2espHS;jfEhydU5XE+lB#v;zCme(x8zcj@*=9Be)u_19zoY>|BM zmYYSrXNt>B9a;aCXs^laa_>=`HR8)m>KP!M_Da-lkC|>F*I2qX6^FHs3sECsoq>Tt zR8f*T6Rwl;t8yZJS@M~NF$E79UfYU?1`D&XI3*t+5lm|cR?d9!1D^04b9~ZNptA!Bt-U<(XxQ=MNz<0Z~Y1?@OnZwY4Q6yVwqF zw-c4rH{yohjNw1cDuhtCGrUG1Lz1BAgnzT93F~@!_1O4giaEs)i(9>1g9cvexZ)AV zV3c?+9im2IrSM?uaT%5oE9DTiw5HtE=xNy+T?96Y0CwmDm>(wiwu1v;b9#v@Q)*>G z@q=7S9cPhp4BLyD`x$(<>^OoFu{G-7S*Bx2;C!G+T0_Kc5#J<@j$g!4Op0O#ki=?` zcy`{>g(qZBCoP8UzYx$uh7irXCmxG2B4$wU5`tnv#8WiAW~cRcEH^Yq%mNbkP_*l! zUG=eKy8~HU>>Qu7V*BUy)aB_jx?i1dagIHqlE_)5UN8QuDo5cUnuV_G;jr+qAbjsbzgT`aZo;$u2-yi z0iS_f^!yGyB+|Fmf`We!iVFQFsK}W~5TwYH8xmn)hJ?_gm9Su0nCRfw+Vy!0>;KXk z6^x!j71gM>&hF^!6_stLVqmQX0u3K}U-=XcIVJIb+E9u2U#IYYQyl+KLdgF!qcATH zyTc)M@_oq84&M&9Lh(Psu@=mC{6$!@@Y>MhQ$`XHyIt_ z?(jhm1;nn+My*ndp5r7oyYxlcpEgFBEFC3OehCLDN3bMY`6c%P(4)*yrk66NrmH6e z8Wul0ThK8p9Nh?hdwJAF(w0WdR{z;@SheBeK>3GEZ)-G2Mh=2NK3_u`&U;?rKH6=k zVZspd6#n^-?5qXWeM_s+-3dTo^!7__zqbQE4?X*y`1vmo(InYyBg4I4W;(ogeeus! zyptnVfTLLJ)WACk>kFby$l8f;cROhkI5^%8piw0%8*g-i=Y5f|a3Mv>ywfDmyL^d( z)-f9NWYRHHyWF->M#6={Xi+&3qaM?HWqpSii;|i@#&~96t5AeN@GbunR2Ft8vP;da z-?g^*)cqP^wgv9R1(IE*SV|%xi%kMYOJd$EcI{93nym;2wj2aN63)QxOkh0sduBs@ zz15nlUz}*4mGCHx22tV(SHhfvj&MA)1(edOG4}{LP#jf#0&rH(GL&$cfUqSRLn=W5 zuNo!u=7sU3i>mTKW6ufE@CS+9W$yPqCc-qOTnI7U>pO9{xHH_kSL<#ViX6l(Q~_O2 zzBcIkED;u^zCeMyDj2wGIOVeIIXk=`*#Rh_Fb{_JdX@fs=0xRu(Tdy8LAws5PGWVG zVENu6%ci~$OeL1E+bLpqb2}Uru#!s)I9x0t`yFp>Cxy%OS$}l|pWTpRE!(D}$;k9G z-{le=(NtW3v)J@%VV}I$TQ&b+qd%$2R5Iw_dEe10K&L#+!Bt{c{`{1%0d^I82Z9$6jPH8!i!L z+suC9Rg?HeX-e!gt7AEqv5fYVkN0s_x<)|eGyh`9>rz|vbkrCjuTG5a5FMX0e3znd z;mP<>3sU*JzEXY!HG~KXj%*KaZgZBieRv@Ytk3n}lPeo>C^Od$6^@xru)L~oK+ad9CY$q!Js@Fz zJmiRHFqC-_ns$UQeqtH%81j=I7l@30&lHni)HTNZy#x}37-sOuD-sp;6L-0709hhB zHr>&OAvf|sL`G)zeTrV^NQsw**e6#(#hZO&D}nuxpOY6r9PN27?KN8b{;L*$b_u5# zsO?Na;gD*#_Tx#4?bADTLrE=OZ9oopl2dPRD?R!R(g@g$_b48JA^YgO7=hGPbJZX%j?sHdwB;J)6Y70A$~{JsLTuwA8}(XUGUPS+>u81 z%uC`U47p#~xFIZ#toqsdwp&ZK1q$|9_jhO;OIKCh7BbM!2Xh9Cz2s@fK=z~|K5SDS zETsD_vGc_eYm=V8ifa{{?+w3X3I}0+0i!hWsryMx#}~`o7B!pwn8L%A045_#ZirLM z#zf-sX{pYTY-NlL0;zs)pxC4i2E>}he$%9ZP3VD?MFy!*2y?@G0n9drb#YvIgSMj5 zq??aal`VdWhpR}7HT?sY_trwO4mPGOJfxx8A+|}fH4ZT4(N(w)5)%~<#m#Kx79K+2 z4alg)XDxAnM_*EpXt=VQz`J^7Uo)y%#ZTGsum*lQ+B>Vag$nY?@WpsZyaYPpQV?Dd z$cDiRG&$d%4BN1-)k~@;4%vxbQkqJCi)$%zAkO|)24s7!ozj08%AC!;fg3!r{E|-!1g3=`B&Wfd9l)o|JApV zcGwo4$E7`ErMZv(^=C$^`=x~sJfQM3l3e?74!@~da) zwQvGQLK1M*RoibG9XFDUD1{5{rZ3wkFOT3jy7qy*VcJ%S%MNqV>@KQAblI6tYd&b! z_2Nwb04g$Mx>~~YV*gs=6Q67r&h%`-JmSK*%j;9tyE9!O3QBh#eSNxBu)?B@(@{S8 z$AT;U)wQr@T73>DA|FY_MZ~+(rDN?C-(wWR!l-!m0JTTTi@Jtu;HCUl1SE=K&)UQu;V!Pw5WzG^5!Z`BPU7=Fmv?U-6FpQwC~V|EyBt7%3nJX13o;w)=f(WG!wkJUjH%mm+)uf#=t zJ6nmvV<7{L`GtmV!9&L=DykNuwc5O2JIH~#TGBzwhPF2gP_}O0eUY`!S=y54pVqcR zn!9~(OYkLle+2{1f||W$$Tl(Z<2iF{B!h;kX2mCnxu4~1K)ti4N#XgC{!#JCeyou`Az-C|n}U%aYw z*2gN+Ie7edpX+Oh;ZCkFz5%~v!_{~C^QFLslNeFlKKrGJ)o#8wCGyPy?$th8V|xVb zx;-WC9Nr`k(FYDmgZd6S70p$gT1b~AW^?Fh?v_gdJ=6|o=g5U@kM2;)VDnPJ6qc38 zr8Pc4iHkApG!;TJ4zC=S%Q7{ZL+1YE@^Et`#OT0?Nx!GS>W!%>nejjtKA#tlfS?YF zy7*C)_l^56V|U5LVH#$KllSU1&j_ccju_$SP&2x+-yX+q>+36-@gkP5N4}buC@2@0V3nV##FShkeRNW%RbGHO|&wJbuq?r(1l) z4901we7$vgb~8!9i_2e(>%2dk z`7>IY4Oh>k*STm}N$8#oTfXTzUIq{e#m;jiKa(2zGd;J=FFrK)cBXTd0wU93I)6l| zQJ3NRK-wjRg^(x*T_ceZ9@PSh@e^}KVY8T0l)}R!eHkpQRjw-$jCX7O;7yLPu?8COk~tssp3Z5o zk)$!oyOmneE3QNTc4Uq5P|@+*@~H7HT;Y(76|8DAAHKBAz>QyOwmVc7VeRRg1tc92 zc#xKJzV7LE@pd4=s5vw<_37s1`cwU}Go#og`!wu7mkxi9VXnO{ld*w_9RDgY1A(pg zT-jHL3@sbShq1}!aF@@qrUe57$C%otXH5?S3i_W2rhb?%@`<$Ld`W>syI%cgGSSU+ z0PTlV_jhb0lk~n_Z`W{AO;|{;z17vTr$6F!DW$l@VjpMQhIyvTwDKx>c%B))yz9i# zJm9*n0`XwK1V$|iR@UJh7+DrUjGLPq4o)?s2|(d9Uqnmi7TJ8knURvbaFJa{jqpV= zF8!SA(%Hrm#i3I4%I9;aj8=fJz^9@~LrJqWQ1_>~#Z<=d@Z4|Cj7h8}+xvvXuWMPL zC9|ti%!akM-$~Mpr%}stsigKb5n`cq0XUl%IB)p94yPWr3lz`V z_MJ7dEF5xqecQ0_58r# zR9vq9&d#x87O@dih-OvSZX?pd;iPDh&p;JY@N=J!3M0vUBA~!!5?en=*{b*|9 zoOz3+!qq_Vez)S5fhuRqv8`^RXh9(6V8@IgfGSawv9dk{;=m%((hq>}ZDGk08|Yn_ zp^kgVezPwX3e2~LF^4?;%q;NwHkJUpLy>`yG*Yyk%<}ZjdCf*d7VVmmjSyR`vfsJT z#Lh_C%Gu+tHwJQnF-_{^X^FB)PNx9&k7SA}Ix0PbLT+`F7dM<+My_e{4kiCLI6;)d z3KgWnV(h_Rq)|e@0Dw^HSVpj{@8eW0aFB|zg%5<=lV9Q%huK+wDlEe7xU@!31+*Lu z2WqT$Z*a14VVA9|YSV;C>vz5G5M|IE><&>JZecuV`W{G#t#_=E#MrAlrOkgdyun)# zqj=m<0w5*^2A`XxcZmhyo&U&c?1&A-<@Y%!k$xHM#}Dz+c`llTVAMX$7FbAX8Y?oy z{M$%d03;<~W2GX$@cXd=F|PlSD_6iud6q6A$Bn2{A9eJ4dXI^yulJG2P-@aiXAZUaNQ~0mjjE|!ri)Y%tE8F+?e;Nouj${%QRz;JAynM$nNKBdszc6b3 zj#Me9pROC@-E<}&^^0kaPbRNK4`lVF0gF+q?vN(v=sZxjG~<2`1yS*7Z?KfZvbTdFPb6HQpSNpMEj|h{|L;#)-aR6 zr~M+Is51sReeVFCrB=|@@Bc_Eo*!MEBC$b&ak_?KYm0IOi(8i{=DPTdtN6{Bc zc8<~%KR^&EKV1zA7TcD_k2)?_Cqz_ZM)}&v>R76mlB|E~qHf_cplB&~@p3(6p(cAV z;Zbxp%|G}MxhR?po}%d+mIezoT{oUSQG1d3ZGFJ8b$&6ar3=ZukrEopr;&xBy9Jk+ zB_1`bmJid1EZA3}ZGLJWFjg=3AFwjXAJ+P@H8wmcJmN>cAKEE&Z4kdQuQw@gvHE|$ z0@x*eEywD0VSrlnX80ax!?b>d9{Y(>V^&nKRI)$ThIJ!7vcSP1!fWktMTMd=y#>Ht z+D&+NAzCE-nL5;*Ker(L%k+(FDM4jUvQN=}O%r7>wKvmSsIsx`G{()Ff`Tlu7MEqe z{YXTGwEoFe`3wG zt4W=ZOU|ui5#zB{LxUYCB-)t-IVR^SLvFac-^gRr0m}Qm2|MnKWqfNNlqs-1{*~lW zO+^NdVzN&fQ$Om&YJbH6Mj+dJ^$aA1jyN6+EH8?0JakYN@ci4cCSwqxNbdNRy*VI$ z?cZOE!8mC&xF|BtzF;|WTcuQCte7rkI+n{AU9kC|h4d7JJ*I$mffpz(LxNKij~*TQ zwg=E752y2gq^u)S4q4T=#Qdn^lCN<2U;|F;ggECdo~_OA(1^xG6II9?`+WA~9J=aB z2C6rsE9#@)b|lI-27c*39jA>oHLsr1Uv+AGnyfioFl*0I`>f*+m#8UhZjvMwviisk zl3#0EHb?LFMyMfOLKLSu`s}BesL@T}S!8sg?|-wBkrBKuc}|SawCeFAa(uj$;e--!3lni+9Sy&6&}0@g4U^11 zo3!YaUMT3IavdzNACMtup5y7)u=y>kFD(3!XvUa2Q{{TIL{n0#oWg_gN|3%Y`@~mB zh#5o7m|VP?sBTtZJYP<0$KmKdtCr`knia}ndipm6NNkl$O;hNWqz_Smyy&Sps94iG z4|K>z;{O>{g0Ob(KUaM9@X#^sl$Tm=ay##C%KZAe*+mL&+;+_Y91lGCnazI=t zpa-O*WjrI1ar(N@-Ix3xE-{fwPaMdJL({E(xy)E^jOM>@Dp2ydSj8g}^dSPWHB_Jz zer8MI@ZJ77-k2)?()8?~uMC;k>6QV-gR--;Ke_JDK|`QD$Uj=nU*bNNuKr7)rk#0! zx?G5c&-0Q5`$?iLj(k;HU=o8fq4o&IXda`e=&<>V_Mln!14q6JJMEakO5d|w9RtRWrXp^)!)t4#aZdZ@N{A@pBQiY|^R^@%=0)`NmnAfEp6c-$7aCh|nplLarjRLKg0M&T{nj#&EdOrCj_eQg5 z6f}aB`5BQJV7K4O%2**Spq|$3!y08meh)SX^Y8m5qCh#G7m&z|tpE7&`Z@E^qqE(b=0Q3LCp5t0rG-_nAEd-{ocVTZF$fZD9fF?=aKPBoi z#WO(!6Xp|8TY~B!K~+;gEudF=I}h(j>NKz{8j89<{2AKGuv;BD;UItmOhyMnjk>w; z2Y-W>$B2~7b7YAoUZ3_fQtycILd*}n-xpo*pk~_9auJBjTz3~(L=f3UJ&zVveak*? z@^3U2FO`jkg3C2YS)QLUEtG)DUBzB)rKTvFuk1bdKjmQvO8$5D3cCVBN7+ZHfedV3 zO#L28?zdPje+(H4Cwx=BH_6!KM3d0m&ET;{ z5E36ndM*(~kW;cmV0_Wd0Y~2EBwTkd!J4fRueiWW2mi6hk;T=70;?Q?Ex?Yh{oSq7 zehj(imuw3zt{EZG>Dk*7mk5!9=`UpGWX#4Ce_7rymuYxigFMeAuQJjMEUFtHl3_1$vg8igL)267OuO zS+N5U-Zwhupr=&J%e~A5vMlmofrCS)EFgQ7RJtH48_SZoZ{wvJ(wqeoyi_t9iOEw$ z!tBFOn#aE;{5*9EyX2s2CH*tt18jp;a>^D z+||7Zo;$$2K|^Jk`*O#W^|1#9e`?#fvPl6w$;x6Ikg zZZXm|R-u!=S7c+UY5phz^#kKbI^66{p$EG17zbsgJ7auqke06ArK5qbMYY@&k(YOF z?Rm}Jlt>)|%#%}LFbzOnB=x?rkPsUd)z{v%yDcBbkRoRxo$Ory$R9t6HR}V@>mz>w z5L!lRhCmqtmrE2-J4eO?BS-GVTLc8DZzlFHOiCD`^isSxalWJ$Hy`w%mQ54 zp>Ym2kGm%{PBFDHuz**a@)5cGkI2V}Fev!~D^hg+sip2ue_Emk(ZxfdK0(~rt)MLl zH}u~cZoBtQ9a@xUyAZ}25~Zv^_^>(UeMPkP+v1;|v;0JDtu(q-85?G{DW}8TRD_Si zngwU&EBUo!`^9(S`}w>AkH};xbP(1;pz~Zt-9P9k5%z+50tI+qz?$jbS~~I>D@JkPx9GDi|7 z@wnQkeUr6nr6*(H)34)R#Rp;P0ofp(a*BsHv#Lb?%EIy2-TaR>0zuc%?(Z~)=nvS1 zWdq{OpMkY?zYQIWM1kGswRC7vTDs*{bn#ZW@kOj6;x?@KU0O#$RNAI0AyfB*mo9dG za9O|8l*USX^TjQG;06krC-CZT@{-cIhEXBYtlAGm7GHXGTa1od%;?8BT94$7S(3wF zT0nkQ)}t_!eqXe>Y+aoAqEpFbbBA-%Km#74*~>VkovaAsk?kL+iJAuv&REdiKT-Tb zeE7S1?TJ&u0?u0m7V5S*5A+XwOM-NwAD(w~v`!^ENX%%TYUV}1D3RxPCE|o`$#K|s zv@tZ~mt+(`ZeJKhDbyqI3hzjki@VC}eS z`T5yEgTSu+s{I|Y;t42)2D&P`Eu?^CpSncZ25dDblfY#-%HeKNVKP}GMm9ey7Wl2- zFC|Q;ckZUfey!1~vB71Y{B5Yz(6RWC0(?Ed!E;tb)*ldWT9jTtofzMmQAPNoi`qdu zwySrW?AWtCB3#LH*9)1??s{Q@&76IW%X&@_V(3GZ`2t2sHXHX>>54SNxL72jL}$wz z;P$)io*eZ%2E>^a`yAqI`!ftx6^c&i7U-o0e2#ejp&gc*|_I5VFi!Ac8@eQH^6Fy*TnDK+)i+39qfvaW|77$^D{7bdW% z58h#Amh4y*tSeutRr^;Z^G;jrvoBc96fB*C*(9Yg8&~AhZyZb}^&8rc;DfXF- zk!aC8C)pZ|IBez%gK!N$WYTE$JIu)f`TnzqhjB*?z?@F3fy&HH<}`s)GZ4RO0KSrI z&Ak=&OU+W~K`Q7sy0>Z5W1wm}4j-Xq(Ez6N0@&W5f>#!k%SUK=YM_QM2DIZ?fPOeA zod+cz(J_dAUaQJgh^#pQ`^NY0Zfo_>r)OHiLW3(StN`y4dh_OKGMl+SRD@Y3fkD{Z zoUT~AHnU`_;^@c$Y8I3F{$T-`AQ+G&W&>E8x=reT>XK1dJgu4L!j6L}=FsIu!XOd? z=C{xFshW43478jT5Oi(+`AqC|N4I>v1S2a z5~z$aC_FM*>-YsK-1pB#5GwwppM3{MZ>iiiNbAhnL;0o3 zi8yS4v$_5k?xYyDJb{u$LATq~u0DqPS0I2gf>%GVhWiG|7>Z#A1qIR4O1_jdsgP^I zTmuwI_{X@olBe%p>c2u0*KT6ppn+z`3bC<@yi>l4`2Kmp?2U!X8a&eU`j6wk{7T8I zzj?E+<;pfF3F3HNWHJKd01DkW6S=qBL`C0Z|8MA(+TzHOUCGF#+ur0@Z7(5?E=@LU znb73VHVLfk`T$C708=~Wd?JNdy^;!?!VM^L5BOjWlCRtW;ge1)by@O?$QuOG|8XDa zu5jT=WuqU!K%wntuw0QMCS*^0J&M2w&d-I$(*O28G>?#Sb5UQ63Zcl3vX~I%PukCW*Zp z1+pB%t&l13P?pZ%Qf+Q;9AM_RI1lF zzqtcRQ^E!j;Dx65cwtQ*=HImurwiQTbWm&^RL}cb-jc%)oPS{8t4c_Ye6@BohMi0; z)Zmg3T>T~8%c=2b=8XHM;Q&K4_PM;NGjvON1t_Xh-Ap5i|4w0Z5JEBrL5@Rcb!_W} z;deNS_lTV;ju2ZWgO^cN@h^0DXWM|M$pIl!&Pog_Vn7+9b6XY3^^^AiUx_m`=jGWZ zNNQoAq!$AQd!6}GN=|lia%#rkIU*_!l?Cq7* z9rmU}nC*3r`64t{X@zsVjD?kkqVxk+^t{IO#OS}?7)KJ2 zNYcy8j4X*Zz7l~J`dnOA6$VIXY!ueZ{ts_+gl?7k1OIN7hX20&|6;5Be@pmsRC2X{ z6CIRP4$O()im(cGcLZfCL*^WhPQ=iIfxky3%d^Jqp4pVNrD5b21?@eB**jA=52FW$ z==!VcK6f{cC5auq9Eu~?YYoCZ9}?I73_jGsJBv{z1bSXlV3Hv}aqHYS$c`Up@Y8TH zEAdeZP)_V3U+Wj%pEF?JJMPSGy3Bk&Sgq?#`~vz6?z_)rdXNQ!V#|5Rph6mR%6n|E z=HXwA+ddmnbMB74xO%Ou9C#v03X*jc)w;;Tb0p<1MVl{@l{35*)Yi311Y$ly7iwx7 z6fsrc#|b3I7kG79uf}N$t!oReA@&Gp>oPq6l25jYBZMo$!uPXIN7qiG`8-k~UFgf> zbvij=b=&-=teE`pI{vX;t;W3Qcl$3G5ONZ{GR~sg%$mm-A(YiJw?shlI7v1uPX93( zGN|Im(JDVSI953nnv1#OlAkf6pK)oVoMD@_JoaMxi^AS$!Sq^mlV94gar=gs+L-R7 z`TL=psIAlV_iDQ=Gu}l?-j?1CP1X+cT*EQY71+LD91u&oj(K~)whC8#BLL!ed@n)0 zDO{GQS1ohAx}q*ah4>W6mj%zEB{>v(Q9#$`G=TS*-m;a^o`l+~4%|?Ki%L z6}&+Ba>p+9EDl>Qlq{Sdy*jO_exDML*i|A&E26?hNEa4OD@NivhC!9AZ}N`c&6Zm% zr3wrL3j*}d&ghVzgtC6Lf}QiTpD9orY04YAU^V=y>)G{nU&izFTQmF^mC3i?>g$)| zgi4t?i=&Z~^fMJCCc-VmSs~xM`fvB4UnmMDAn_Fz$Zy!&kE!tr!2EhD3e~c* zK{r|Jx@enkF3=)6dU6897rFeoVT65{rXqJ7sGQRUy$9sHmfT+VkvNJYdNk7SJMtUK z4VQYA4LxLIpl|hoWYRs}?l;Mqi)gI4QYbV}5xjtxtm5msRDW;0EWQ#(5lDXg;Vdi@ zrF1*T<2VGF-6AWQn-b2Ag%C`z$wU$q+jw$z)d!-%)G}8iCxbLn9H^aMWp@1HrZT6X z&Sfmovk&_^=P*a23R^gR0%N<%6W34a#?~ZWdCz#kx2}3Cj2s(_&g)8C4eQ?0T4Q>R z?Xk>wTFG5Le%l7-Zp++htkP7tAsxrpc~k{7u@l_fP-u>W1KpOz zea%ZLot(b2zW(K7m6s$Z?m;vj4%ViTcX5l_{0D#i$(VPnIvGW2ndXU#YLA%TPgQ*- zVBd@&NN1v~+I9ZMw0k07X&rLim5Jz0k1TSq65(oww^X)6x*S~Z9nTI{oPts7g0T)A zRCFi>75T5`kmwj`XIN;r5sE)%?$ZWZgh@15%IB^Ut~EwKCWvPX=L(_UZED#5!5Vxd z$H$-bu1WpfA|kJRMZXo6bEY|>}_N);ouPpNB_Zh3jM#~Nz;$y@>U3#saHx8d6nY};rMYin`{ENqk{Mz0^MHn;M%N(l0xFR3ScP>--G*xm1 z=f|-_8b5_u5}bs2IAzk0)-a(>uN54x+Ue~v+^&O*^vdBZ60a z-GzPfx}t+=!OUlitfD%PO8&>dtBB(nB-z7{`dlZhy@dc$YPmyu^A^om-3h+MzBN^j zmvw*Z8;-YkmWG4+6b0ZoEe1J7AjB^GHeRa?0Nnr>qiQzRZxFue zaoePEEoDPr4#0Vv#IRZVZy29H3>Dyksl2ilA$+r5jt>C5$|1RXXB|@`)884wP&B;a zbad6(n*lH(<4r2YuQqXTt+krO&p0Wh5VOtRuardmt_|8A&*S zijtM%abziiE9b@{>|vcZg0}ISu5wIsLZfmQ)is?-;z}`1PwCdT>Zks}m&>Ht;pzl^ z3-On*XG<87E^J44J_(R`EH-@k!@p-7v+N&Zx)5VJ3`9=*WdpgNqF7R7Kivm$z#av1 zArsc&f|PeEM&yz}Wu;sUIZ|yJ0s)q@0l6PHuig{qZ&0vZ39U>y=24(fdl%C9aw!%z zJI0Z+`e}ulLAO`ZdlB~2&c^!3@-7or4&m}|>YPulBkcE!JK}AU<@U%+nu;ir4dZl9 zEIv>U?Nqww89l*5H$RFj82c8b5~q6ds%o~xMuD*7K#jeNKAgHCsZq5&G-d%OtWxag zrGToUR;6>{@>bI~*Cy>l0>=ubAo61aT~bR&*`pXZmzb#zZ&VrPu_N93 z$c-bG<}WVSLYcFykN=0XolTf{z9fL}la@bU1x+9$Q-9&iCzXzg(WNHyJJ5(6$Vug} zQOSPnESjTUzp2nkOX+s(cDE=@wz)&W&sf~OU@H;n9Z(XT_9mf9M z@x$KgA(UZxBSSM*iLy9}XL2a-9jwKTA&|~Sty3pY=mKHwTrl=N0tP=^Ez5QQZ9=9p z|7clVm8#k+kf|&(r<7@Zgb6ETR`%p-4Rgqr`iLv_IrxjHvLo0-9@&zf!_q!yRN~OU zs|Zt7rAC4Pp(Sm%ANOgH znS&T2yeOPP73x+^1i)5x0mp-Ck=($(Nx8x&R|*meutBg%ceFCc)iB zfLYA(O7x8%6q~raYVp(v?@5}VFESDDEHr4hP+Z=g?Fn)fTs7TZZ%dM)iH8#(WwC}) zJyDDMO@Hx5D{pgR= zl1%g^DJdP;>Do1sN%9tRrLyb0!--L7%93kxquZH`q}FdrJ);NGubo{g-??-gvt*Sz z378IEq?QZ5X*~CuBZYL!1OjgQ-F5VEk?Q`HUxO%MFx_2bOxU`x_b>nZt?%p)m&8UI z?XT9}zso*r!>mbxEChcu9VEHBg2p~8U}{+f1d2;bS-gQ}R&r939f$?Kjs=#7GN@n- zR39wo8r=6xAP}n=5Sm@0a5FH(pjLtT&7TWaw6;c&@s9po2GR|_M{b09G6MLp#~iwlz_~{qVrs*E;}p?g;D*RP)<%x~g`8a{Y_oO!b5H~qIZji;&~;^SAW?eaIw`rf^JIP0_OAbvmomy_gwnoqdjK2PWk(U+u8AUmHqbZ+yr_mel? z^wN8r{t2z8+jncEhCq&@z|`ufnb)1+%!q$lN$S%w3lHH8$A z%uI~$pXI&W3h{yFg1sAsiE%}h5}m^OUJ6ur$#>iiy0f#_nhjn7ds;lTv*s&*3b#m} zPfS;`KZ|(&T%V;M`_$RB(D%^6y1~|5c1HHdfq3obHjjhNWTS>+ZGvr$8jq*wdNAcY zle5m3%+GC8lvCUFFdR^OO@K3Yv|o8O?x|7VG9d>Yt8XKST&&u$}4Qf zz0WcB{F>nQ<3`YRx@zTht=aqte8&4%<5z2n$-jM{Kix8=ZqOZZa{oQ+N+o4%95z3w zbV2-4eprVFLN;E76eIQSj6{9cri|qXj4+=`)K(Zg6=8+_viOyyd#$H!4{g0n23=xs z$ecarBi#K7g@Uch(%;6*omUm3%uX}I4pME>9-*$mYz+Bco7T}$Jux)&%-q9Y7mq6c zkIvpZuBm4G7siUBf{KEIfC{LH^d=~vj|$Q|2nZ;>gFvJPPy`E2iu5WFAe2Z6J)j`H zmk?S&q_edUy!|%S$oaev)1~q@5~61?VoO$cbx6N(z~N) z^6^wTYN8^XB0C3Atex?-chnySp6xDIWgGxLOW3l~=PbS%zxMo7Hy~qW+B1sm{xu>%*ylpS7IZMlueB0ESsSgr zp-g5A&{w0D^*u|7`Id-njWi|%v8Sr6Z(}B+XFjyHCeFb2k`ly3G>1bb_Q@?Vsjo^n z2X+sX(@xH3GA_CkGWL4a<%^wm!y|?9vkI5w;&G%uat?p~7?lWL@6EfsWEHc@N<#xX zHED6YLp|8m&Tgt!9LZ4Oo-7WNOe3fu;n;z~H~QNd*N3HZ3JP?TtY^tbXk3S_Cs-qR zYKUISm^WIZdiP*azx+D=qK8}kn6Unn} z5E?KmaMpChsdXkxFRrZUI5{D_q`(gLa_F*mWB0mV77@RbYzv5_=2QvTWzAFRxBOY7 zZNjXrJqENYELB*`m`nvjg!%Xc(DQ5RU2@%2n>F@qT*s5tm8-#Pg^(IG3jS;8)RWUF zc1+6hP-R6}rdIRB<-Tu6+;JmugJJ_!KATfsPS^Q-^Qbe8g}MP zUKKx0B)2fSHrrc3O$HH>+lZ5ClpaUxArQg&g`85R&ad>jTFY0H$(y%-ycP%^{wd3h zfD7z8M1F?)U?>WuJ!)f1H&kQ`Y{t8MlQ|TMKKEFg^v&HulbdYS1|{}KbmqckozX3y z617DSjg=#8!|Y zjunhHEnMF(KebxB0NFd@!YY0zwxm7-c{dQw3Arj^|18fIpGVGLn$DmsvKz4Esu6dp zwc)*`%_$oYu6U{4uAXn^fso7Jj^>xkP3G1E6S0EU zQ9%$~i)5OIp>NM;8s?V2SuQ|NE=m~$t7m!U z-ybX2&KGRm83`LOzcN_KS=2w#8L_!2bKZ!neVD_JmH`TBFI!ESXlDTz9~s!9oG`k1 zZre%5fc3?;z>c;W8=WF8u0SGMA;2U_U3j}vA5T^0)*>$76q$@(oU4lfYxID1T~&8$ zVSnXI&q_IR^@<%~!*hvgAy&uu=cBswTMyaCC5E@o(D*;UR@3pOjRe`?$uH-x0POZS z7Q3Sww?8hX>2spT(v4=XYh|^|id0G!yu5>k_MUCIeCZh{&6x~kv55MQh37uuc-C^m z9Vkg8sjm-BBO@LJ6={p1vkK37NAOJPK4a#ktmA@@^RcYx5hKQe;$ULJXfe~<=YvoQ z=nvhcL_sM!eSc|C-<9Ni^n-HxFeJT%CbWJl#OhR5~b0ADT z-*cTSbd9&JQx3OVS){m_wCIrAOzk z&8{nuXlVkk7XNzUgKF-GhL?&qn)39X`&z{NTIn{QPHwfFxlQg;_=0G2m?D&IomYD_ zV<}&H?BVmb-yAhbQ#>rC&oUaXU$b1aTdNm+??xE=COxtsl7Wr-F@Nt7%b=-eOEIG& zgn=>aFFqsqMx1&h&-!(F5GwV}=a_PSRwm%D6WA-V*He`44%`tE2v>njL@HbiGt4k3 zFf$-a9Z7#o)#g;K)rPU^nn6fNh)S_Eu9C1@^%Tlhlo#ss%&>40$0?cGmb56TV-wHR z?5NO%mk|jO{=ygIX2ZoY#p-*p=)Pj;Nh;1bW@Ae3^B7(%iLMO$=*quHM z1ca!ri_?yv2ZnBlxyvnD5ZvJU4z@lU@3?GK0!--2ZA_+{6#}k70=f4x3>j4~5?_z; z2Ohu4A#!O^^Ob3}vDe+rqMbf1p-YV51VPNRnf9CVr51NurAwLli{&B=x>J#FJ;y#&4~s}iu`v1@ z@)q37))pY%eUIKWiyAA>y~XGHSdm>9LKxF4ze7&x^!7BcaAuPmHZm|aO3*`$DtqiI zCmq`vlc4!NChsBn#4_hesKd*hfbJZbSq8egx82G?{=frL!pnJ<85VoWZYxB-)V5j5 z*lqQSw`11@lj>deL}U7(stW|MrOBi5U(2V&TM*x>t}M(1me+4cNVGHiDiQ37jLqmt z`j?D!c?CjJEPY}wy;^=;m+=L!z0Fg-o(St&#U-55zt5oiVd+HhnGEBC;dj|IpScCJ z9`(1{{s^8w!RrqFkww(!OuR0(Jf@YkGGbjQAb_0fW4l+q6nEj?2w&sVtUJS6{nE$l zTQ6C-FKn`|2A{lDa4yAo)k3%xmyY_1GTTbPU(EH6^_WbFw+u_du!hZbk}7?6f}&3` zaYweAMPbWxFR>{w>#4S7A{>Va(A%ps3!fJtKi@SRyN$K_ZQnKr3~!ddzCEPzxI5&H zub4aGC!%!45JorGJvgu6F8r*hqcGOyk`CNtE=nql_W~uArvJ2!iQ%(a2>ztJk=H#( z(MusrGoqcJ!`!z^^J^8+i=V%Ip{L(!Cf-Xwnipz#>V)Tfcq2IVx@XeoL0AQ%S!?fh zX~#{-(F9BLb2n(7&Xy(EehDKiCA~i<-x|%&r?)WwEonz&$7W6KVlJDQm@IN!ingJ@HSpy+SEqW_?mGip z9X-q?fN|Un*euq9_22rn)D^L5`A=Caby-wh}!rC2V?3 zq~T-u>J#(cB+QiUYWyR_(%3g`10zP}s_Cc-@3{P?m(i55ra;Dw#Z?(rSB`PX(SltK z;#=i5=Lru2UAGILFC$;xuhS#fo0EO=MJr8|ca9;#LqAnJu|L~e>%p=aDt?EqbP>Z{ z=?W?1E#DB1@mo|Y>i~LP^P;9Hi#U!@Pl0g|6T9R;b4=h|R4O~~em-h7aOewWrMu%w z>$HeQ|1jd{YN9eZhGDFZwV!gDrp4r4tVl=U#5}23&XGlD^g{fP8j~ZiT*l^mTz&y| zie5Et&7mQ8Lf(D78RkB8Z6@J(UA@t@GxR|N7YQ~-(8bRKdD;{q+7Y~|ygA3*z*r=~^_0y1>eHS!uODXl6zTxe<0n@@AI)yT^)t_SwKHogr&_#vf0b zT%d6J*?3M{W~B(H;5?%8SVu8lxJWq0D|wK0Z#(`^!>}jA#KIEBIxH76`$WIyCh>>qat4}}{Vqj=wYtj#>+$@w110C<}WjEoNaS2JC5t-Cd zp9U9;HMh*zA68#sxh5aSB{Zp-&sDvUU}k|PN@@q8^Cq{#%6krH32aY?x{_PM_K)Zc zJ`e~r8q=!|DvNd=T5+<~HiQVS)Qb>2-!2VYobQvu>?AcK2GX*p4CYo1F!_sR{CvUe zBE=pmv4diIc?EX*%BhSB?hG~0vym@UA9E zHqInT*u2=h*r_&g5t^v7Gf1>IVcvPow!_b{im6_$HWYq^;$+<5|1YgRLFpECM{5JNJTt_xEh5MEEltnU`Frw?g;4?+L zkI_u?+C7Y)lz>&R5bh-MVuTVa-VgIklXY95?g`*uv#6))jNa=LBPRxx)5>l@)QOwwpbv44}GOFq_hvO7CAj{=-}|@geuJ~ zQ44pdjN_uiHL4{4Z^0szs4zp`9499e-vMOtEDPPfLTaR;xgZP+J@VkNGHbJ29Iw`I z=czXHHm4ip-%UT3u9s8iI2=xInMD=Ep4H;3Z`7O1hw0epfqbgl|1z0>MqjI z+Q1aqFVhGfqvDwzp8+g*af<^WjOJ~Z7qjRD z&NTGY2cF_q003Jrd9@A!ph@pGPZ?nqE$~AuY;5RxYxCjEM8_(gnG;$x4`!czqoq0j z;s?8OEI|B>s@xPlg$e6}?Oi?v2Wt%;Izp57IS!V)zW&Mx<)wouG>YN^C}m3uOG+C6 z6bp^2b)E6)pi31AY_xFNF`A#7#V;8CrC`&**g-fP2x$@YavngBy88O@bLT$7Y!(4d z*R#D{apT5~jn`XQFE8D`eOnVK3!Gbf--Lta1r<*-|G0L(p9<|&xy*b59l_Su*J~*I z`nepG4nR&SItezu>3e(Z)L1nQ%~dLTNjM>Jh>GFH85`FtH6ejwsqLS5?*9*}1K0lx z^!tBztNHU9k6t&YvD%$Xu3XC65nw45*ZwibR0;|U{~kX|mFvO7TfDrkPHk=fA6$!i zjpl*z^_rha;ytwr$ixw`7fojbj~{%V0zi*Qo1g(r!@Q9Zra-zomqchskhx{L$dd;k zO{&BI_63FigDIb}gf%K`HW1)fHvuC^5@dUz%iL~@XopLdFS(z?h zddHDRygi+>Mf<(b__I!0Fe$q}Ae$_IcEWCY4G2JLD*RNHmBd55kOac*`BiC_XTpr(a}eI$cQIafAK|_-DOJq zcu$RxJJnuZXsi=-tszH~B9&V2KsIHH5rUU3s4Gjis)~`hb`tP^2HWDyyv{pnO|1vD ztkXMaeR`Je0btqH=8 zx%n8W)PV>tlqd*xJV01JJGatv$E?-@?!0^dlBV9X4GHDr36YtfEcQ{1pN?IsNca`Z zLJEv+-WiuT0{Z!cnKB-l$ZRV6_UA|IFU^G9fA;fT^pVu~x#W5y=7ObXhIv(0a>&3h z&Y3CF#R8)Xzio!_+y%9dmsC~JATttrW0S+}lH6r8^002{p@Q;EQLcxKV};6_vTxH2 zaHPyDkNZZ%a|f0=4DA2=uU%&JwYs;`y$NAm2{Az9Jie1DxoXU6orMAmBt@n^&zJP2 zOO5oy5b1(c%8yp52xArSqvmeUO-iH!e0iQocPvzd`|CL|7!Qs+)ul7nJ^@?Dg67XS znI#WWJau#5qD98Q&%L=*U0%V1ZtE4fZM{{WbkLC`+UNMo0`q(VJ5LgF7l${bGzUa! zMSE7q7dxq{Z<{Lgl#||ffklUAMX~Z%8TY#Dc2(!RCooRF(u)VcU%%+Ub?v{q|8AYv_ROC5r3~Jd4Rf&JNX)$xW;aj{FBxWLe4*M5Jt_>T zB|?e7b%A!ZwF1zFnRY}Xw>P3B{J|;3iI*LkCeX0Q|LWMA7db(@x$Esc9Xz9IIyAXqXSIyV0b zews6n{GrkTY*9iW-g~|L!KOVhBH|pG+{{jLCzF|tN%<6LIx9zNk3bit-1nY`Lc=3H zvHNall#-mx`b~)iHAll7HJ!11ZyY5@k?BIU`@TQu@CPdniLiWo@3lBCo7FdH+zo2Y z2ZRBVVynBm3G^J7l3ZTIckprW^}_gcNZO6p-5IG`dXdm+?$KKMispeTicGd6)fvxY z)_QcXRhf_5;Y#?M<$MD*p2OkhDH7d1%`%=*F%+9z8GYZV@j4HqiBkl-Uj<4yqkR!v zPk;`uS~WG_bld)(R_G^K*mjR;DZp;ZE6-1RZ>LKqG_>)|77+vz1Adg+wPzQy5n5PD_=l;~en)g6~npaqq>YrT%WeT~{!jF9PZ~WHnN&?k;hH z@S$Dy&n~?1c^CBC_7CJq6n?3_YDFtpbfcL8Z!k~98Bu?S#`P!=szU<`g>H~3Ui0bi zFPu2Kg+}=5uu3=%43}78t7ki$XgT{UWUI`7lpc+ZS>gy8?eFn(pZo+u5YPnW&l(^8 zeg)rdva1QIYX&GUB)ixAH455<@`Y&C`Jj77$qWZeBCiHxxE1QiD;9sN zHw@JE{3RDx$|qvDb|}8m;K;2JuvsbB0;X;kY1chgRNuZwY7leR>Ix0>x%DJFV&A3D z-T;-mxFacEi#*bVA#hmc^oQN;W?8BN(0PbjI4B~b2L}}+L0D00-g-V+(p9dGghsgG z7j-DpH)VSn)$XS^vwJIJ5b|=uv-R3cbMZ>5$ikja1p-TNFIRHlQX?)AsdZuhKu}1e z8w30MLzahxlBK%pfHz_kdROc-Xre`0pImt77h*!VPzE0?6=PB zMOw&)Y)mUqzcjJav|1x>_86)L;&?2lvIh2?{S@f& z>3eFALtwE&_Nvd^z1uuIy?_&s?|H=z zA}*$Q<9cU16Y#dysf-U}zlAKfCj5g5ASJzroU6Fwr zSal^8)xAczuO`dp`LV`F9 z7e8^IfR?j+PM=%BR_h6%wjzNN#;TPf#qEdEz!H*&KVGPt?2#}!hK6}7qvcAGzH0#- z74E4zXZA`o{fI>3LhZ#FU<|^YT3)YbRN0K`46V9Kt-qYpZyhU!Thx_l|8#6;bz)dl zA(oj75102$uZ^6}_{)%x+8a+X)SmR>Q`V;^$7{cJHHWJFE#t9$8J%j@gSc#7ym+98 zkYj3p1@eGFutm?-oZs%;NU2Q}J%`Nl_!D5JbnhD?Gk14=-8b`Xwo|{1Y|T_}?bYt4 zdf|tTxx1>OpufDO;P?^LlJDPU%0vw=4|xM!YlDZv;T$R02}&{u_gBimKPw|hrMjI? zCv6Rl^a%>iodgcQEb!Zj_4_E<1a?!BotKv-MF3me3g6of7jh_Ry!?E3;)jW~sSgR3 zpD=rjvh0ysS}WuD)8clv0Tv=;2)P|h@|z8eMWQ{EjzW&Eump5b4Ad61m*@)Y>ELR8 zy~(^QD<3mQC5&XRBOid!{3Fwe;K53YNXBdm2{kLN)vmd){g2HLMRF@`)t?fuZv1o+ zygI&F)TH?JXf2e?r9gcLsAD=m6KkRivJsR~WLJ`82G9idRWsX2wL1bl>~h(#aMX`1 zu7#D<1&>s1tsNV8rN4B~d{1^d?$)Eh>PjSKj8wW9%AF#|F&ht-!O||=%@MKcn%`Oo zpu3d=voZZc|By4YOY5ph4_uS}OW74@-+V}K= zv^h|?e%d2&$to?t(MPwz9!mcnXJ?iJr+a=;Q&3YIFAsRb!iKFBhWPJ{5Fs_!`XtCC zw&w0mq-PJacE46%{~!csjHrDPg>~mW?N%$EKc{FzRh5Gc>GQ@FN1Lwr)*@kFlgvtL znDG5CzzjI%I9VSE=FLbmmK~7HNdI=hFQOwe@8K#Q5yxD^3yo3m$;p?kLMmgc#3fFS zoe$8C1?sCPy}qSLX?2jOPP7+ce=aqq?^*4w^%p|AT1(#Uu+&hkBy4vO!6HxSA7xGfsv z`*`4%vvaKUU+A2nukwRRP^e-JWxM;g+-$)FmR(D>)U@4q#Tfj+_?rqSUlW|E+Ub+A zA2f36p2ceioGQkJc%0MiAiW$pchNpG`Enfg6A~foEPqy}camN{>++m$&b&9%72-^sCX7x>V>z(LWx)@Z$kd-<)L)ouDgAG3QZ@t+T05NY%*7h@g` zh_4d2yNJUskuTVPLZIT?v=KtAB9Jcoapr%&zTl|J?5LY+)YML(X6-E#|8whd>Fr+u zbVm>0=I0*-hi8Za-co0xgdJFgBGkN{?MJ$a_1mNDzw6*Z8%t+K{Ayh#_eFI1q-B8} zXYaUgTWWW*s@6bPrT=L=*G3kHBbcP{sEmkR$?UsUrZ9wqj?(nD?n?LLQ=@lhezS;( zMa^~0LaFi3Gmx35`9rrdIKFUEW=wXoV(#ewb{veY-QuR&4VuAk`_cX%!0|)82eK@{ zyJc%{AI*hzY3CDi=>Ku~h0OX^oBkPoKBAvwT0(7FiqvPXEem*>$dpdI(_Yf`5*w|7 z?aktD?arT)_D*fm-^HfLOwf?*`}T4Oz7&n3Co9z$C1^9gWI&+cZVE!^eX+Ea>cqav zPEk$xn@Xa1E*LiI42}oBcClG@w+Ngkd=fgvI?-c?P&qC>Gc)trdS^3r@41>RrIZ?e zu*vv51Ku~~?T<7r8?cU$UL$|Fnk9^Ajv%TV7MV$7MZgo)lMK^JW zV51kaNUOvP%Z3PSSRh0*{`p-?s}8z$VDJUKGIxouRAt3GwQP~TUFIX+Z=t9yPIuA; zdoOVq;pGUKX{AKOKji)mOT_&Oam?m(}vQOcH2s4=(H`$UYZm!vNJ!GrC; zo8Q2qMCgK&Nne&yER`uEO&VIM9={HOfU0R(HhFh5x!voJ-)ai}SD$IVZSO)q?L~EU6<#wtF5G>o z%B!JNMV};$?pQvcRZ}ahSP3kGKgo7Sgy*(axXh@wRvO^pOvy4R!=-Rs2=->xiO`q% zef+#00G<*W2D5nt>k^XuBCB?;#z`Jy=l+Roc`2{7J;9d^+CjX{(1f;3qSytyY`F&F ztDN({C+DOZBYN{5&pB^;sR}e}h8;Y1)IPJS?ozpv43C1X>>vN?lQfPeya~%ibrVHq z^2&z%pyoO>Axls!|M|^amm~XUlEDjCIj3!GTu6P#s;dpD@4b=$YM&a%kQ(7@neOF zK>sYq=xzt*-Y!I+90akWVAEb;T#J(XL7|y4Mv*QKOD768lNb z?1}pJJMorJ`H)C>frCa4&7<4>SJcTc1N2~%uY)az^Qsiz@@BVli{5;<;SI|T_U`G* zUq;}WxE8?fFJ6RUE6A_!hZHo8jFLgHzoXsQ8JVdRD>LvXa)EqNOWWLfvcBa*yPACW zK1nmq8@4LYUWo&U$+pi%?xSY43f9fU%eERuMj2Iu5O{exW_R%<30vJIE$K6!f3=ib zl>8E_Ot84o9hh4=m*TzErzEg2Y?X=zc;XgVdu+Eljxs<=dGbZ%R?UrvFUEw&%o7_h zZdUl;Ht~H%+UD~(Z$~s@;u898;-}Kzt{m>GZ|`dtS=4nU*`$wCIi&s}08#lNN?W?u zNWU{EjgY5kHV2bWS(e75-FE_{O8JDd222Oan;a7PgEX=n-g}|FtrOvv^9;jDvQ7a< z7Tui^`A(9A9f%%4MxMOf++Kk5;(>E{$Z&tnA6H9uB=Sq@6sJ8)EYr@-Y3bP+KgYK- zbQo*wS)%AF80s_m)sr-^5?s2h#=OKl$FCUqN97`^g)d@Z3J6EzU-|w&<8eNahfaam zQOC2#C^d%yr?f5xZ+%&Dhc9z(f?WCu6%?6od5^;izs9%4`4R~iy?%q5VakY&o zKnw$UF+E_o)W674dP%KQDjIBlOMt$FRB8%RsT)|zi zer)eC75;%ttr+RQi4P5y#p760XG#iM;fg?yN%;! z{}~-Td^y85kzR610njIgZ?vh-bY9eNEdumf`&FGr))88s`i+L z&hM?U)T1>rPR8hR0zA7!Uq)f~g<57^0Y2*9yU~H|iY*_t%z~R#@Kxw#(%h1QbH1}- zhLNkVgUOXXtXc99v(_nO_RU*$855V2c@0=adM5I_tS7v^y)SOL-%`h1;7G}?RK1Xr z$i%cHFo=aA?CZ3uQz#Q#;SPS{S%{duO-JeTIfEu*{1))LRNahS1-K~{J-!g{WuKdG z68rj4+z(249^bOo=H|zM>a9O?G9^vBt<*PQT|AHt$$KV4(U7z8%2dEL+J+oGJ12xx zA~fQA4!_LLj^*tlXmE&awA6D6F5!(LeTI9lAyP#Mm6rgMV`~-$z;fB3)llluVxRHi zIj_PDBG;e6V?0yj#O-G|^3oHycm7d`T0unBWTATB=X>#tYR3mA?R4jU3}OBxSV^Im zPv!CPW4o{rri3<&ESw5eej5KZVOLP-eL6T`rUXi9Sts;6-n^C`XNp1Wcsk^@-KdD3 zKA!&E8YcMm>=QqI6b+Vvy!lnp0a>N#SiT=|I9`YL+ z@t5&8-`J;=^SnxK7ldo;@a6hlJ%8BJMS3A@Mq|YL%1nwB`@HjNL<*$vaku+d%=_r- zr8|%J+UvAa@0jEmI$DTc+m}%FUF_v=hcA1Vnu?C)=Gkc*-hIWU;Qh|1tiQ4U+Y-G2 z^y46B$76Kaqu$(xmq=;$>cj43&Ec$Q4=^gzn2c83!?zdn8Czkp!}py;xD%IJ6W)7Y zvHdv442suj(%JXjZ|A|WiH_E(I~*Lnd+Wqu>0Otk`=3X+flA_@)}M zegihwC_p2EU-+Fn452kLDZs~r=Uc=(n;VxT1?(0}*J>bDA};qt2yRh<Jq4$?TV-g0Dt-8XSgxl7w@!pIYo)ANzyRn(9@Yu?B|GwHK164kQhnYgj} zTPFr1!mXdwFG?G&(iI2SwH%q-cWg9QKdtrUnTye7EH~=b8_}I<;%|wxzhJ~QmiYY3 zC@|4Fo~r`f$8R#bpZuBMWS?*inQ8EF>~wBc8MkAg1As3dyq~u7eTMHvSCmNlhWxuK zTfL-Gb+=n@^n7u7B5-zm>C5D($xWDYN^INhCoWwb@(z|z=~j<X^X<-v~I)(Xv%Cr%?cMm@l z00U=UL*PbBgX)fS|L~pEjFm=<(y4i1_MM)wtcrs`LH#V)c4I8DxOnA0spt=-{uQmqR8rf`&<{j|QyBg=q$@5#ai9o0Rk9xs`5%skcz6O#&if}f%`_`-zUb*k zpf*kV6~I8Ph=S&SKNjMlz$Qtv(+hkVYr;onbN`K)w%mUw(s|0ub7?EcgNlwp8tITJZ7b_mUswO`Z_=V^(2ls!F9kN1 zrlvRhIr2!1j{nDj{By8MdXxRAl}7#2tg?rsl+@yQwDt`$%yq92Yk-hp+Z!Im!J_{G zHNL!ro2?NygZg=^J5`k*eD_z7kX3yMis1Jv;LeFX$^`EPx&@F~I7?UwfP-AS+D5spq+15H zgsQnma2As+dJ$XIrB>F;5f4U%Lu78ezrH=H2FczJtI9agq--YIZ`DxEoVMku^9#>TkkP4?SG z!#YF0JQrE$NX=StS%JOgS{L?pXlH*mNAHV%RW`_K(#P7ggp|mXutD5?lsAg>R^_#W z0{c2ve{e;Z6!0PU|dA0uX|~ebvryCu;8f8 zzh2a;UWxmppex67c7V)9MELXSiSrEUWqglabzhBUL_lS8Y7_kFaS8WpL1I{FofC^< zIhHbhUmvltE5NJH$#w?C{Mq_(oXyD~e$$4UYX6NbF*jDCG~JsVTa{G;WSHY;_@6NU z%B|7rOAP3>`IV|`5egotTxXzU(QZVBD@q?wmZ?o0oObQOqvsz#`b(G!EvV7jW@bzz zio8rfCT!#IP&)BOOk$D>l}NhZrU#Qw3tT)S81N(Q?T=rj$6{kfc^Sj_?s()GD#2j30N0Az9;7GqPtGU{sv+S#L)i)6W0AKF zR@Zk)cuf=aiSR-{vjk?h7lx5K(@*0?02TpJY4qjO z91w=7W?77oSPEiyW`CLAj<@+Ab$~EJymDmw(?#A=mpP4s38(?NTzkm-Ql5dEpn68e zy_cp+fav|DN=R_c>eP(p#%Sqb43Uq->iE=eSuO>1vnkQgW$* z?m2$b*8p#LbupcT?fT#_W4A*DXhZ)ad<%yiL$qD~X{%ExlwywyF5ckO%ut0>Yu-1@M;k2zF^ zy6!J=|Cb-6v`f__$@=+rJiT#PnPvx8Q8C2tq@h{=)^z{+g@pVDr3S%L=gGf#q)2@u zavx5<5Z6zA1l%0JL1MYEZv86Ctoy~rG#Zr!#155kv%fs?iLgrl?qUC7Qz*SYCqDpq za{wk$?S5ct$6hE-W_?8pIMwc0f;D{r1&xaU&hQIh`0(>nO9hVL!rKGSNf)<|(xgZJ z*Y$7vk}6~W!H!Y!1iSAawEyZ_{!^szU%b%&!L2_-=#T^O*IL!bl|?4I4@3afL6;yZ zj$)X&nD^w`+nOX$wMRN#zjbW?`YkTNM9l|`5ELo`L1m9}?F2{@%Erfa(X2t_mo5GW zB%YYF*AAZP!8OjBpJO6-(|j>E8glx|9-$VcOI38 zL*=S1GfHGEm0BokrR4Y{D{A}(U8x>cXA~mBWshdj{grhU7Cw{)Ontf26u*ibe zWedS}508U&1@dA2{r$O?R7wmZLFl}K_n38P>jS?MDeoIg?#C%?bOU0!(C^;<3t8d0 zB&~^rv>0nUXouvT%fx$Qu%_m$xePMlD21+EOw(|`-VO@xXN_mM0nk&K3UFsE$j*&)R?)}5+cQJcL{F`xCj43j3K-N%a{x~@Jeg~O|%gD+%R5+n<=Mr z8Zdw&VQ99fQ0NKM>a6`XLdc?*=QAe970Mc0j60Nv#Eq(9~;J&SdbTP zClPWRjo4IRYo3C=yg8j7zCfDN(WMXyw4fHtzWdaX->|O-Z_10s69T6m=Va+ZAfZB9 z%>jco4&25s@13irH{WW9GsH(XPuk#w;!s^mFRoW(baO$5tTuH!z3?X&m86&NeTw3l)`4k zW26M%KGTK0ViBdhuIkF)IwiwCUHbQ=9>?@9HZZMN5&h}Rvg-Ze9PwtK)z(0V!*GX_ z!=qFxN(@*i=L)g!Kb>o#<^9~>O2PfPg2AS9i4RzRBEAwXshSzS9?ZZ!l@)GGGQ%Qv z-#o0Aj(Cp$J3#3VSSzNvB!@~_u#Z7-zQDZk0R&R}&i46F(}0z>!$t-fOXmFHyK>Mx zueZB#36T)UA)e0P5;oz6NEKRdDRjQL*q{pgJu1SHVkOLin$HTiA)5^>#iyA}mNh-C z=A3qGv#2|W1U`E=fkn$xL1PXRKAMpOzT1aDVR!5-VR_ihuMX@f9w)x9TS3S_R%ti2 j{O@NX|5x+N!X7OCOVPUCGU_W?x9JoK} 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 literal 0 HcmV?d00001 diff --git a/docs/build-insights/media/build-menu-improve.png b/docs/build-insights/media/build-menu-improve.png new file mode 100644 index 0000000000000000000000000000000000000000..14fd3cbe2fa457f0ee7d88aa7a4a841391cba13c GIT binary patch literal 20425 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 G9s3V$;Qb%~ literal 0 HcmV?d00001 diff --git a/docs/build-insights/media/build-summary.png b/docs/build-insights/media/build-summary.png new file mode 100644 index 0000000000000000000000000000000000000000..fc7e0a51bffa026ae5b0e644ff964911510f43f0 GIT binary patch literal 46290 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

rneWTid`Kk?g z6F)yBghKeJ+N~&)PF&;n;--4{7LLxfTjpsW0eFf0M$27xjORE=<=lOySoBr4M(XgT zx={Y|Lz=B_deWLp%Tu>b>cD!)P*R}ioW^RPOB@5Ll;bfrlPK#*rEgJc^ zOrnc4skuctw`q$%6;_$sdd)raLu4-#KSQE4s%EjI(ps=es#(gGsBiy8)nqpR7UKi>vZ zCR6s^%5$QwMb`?w)}KH7^A>wpCU|479P2P*`i7>Rh??#efyptn>N4(#yM4A-K5jdn zjB%LQHs9o~9x_MMx*HAf@h_!OmxgPI=`rc^llL8b#_qi<%gdli@PnwO_o7n>QMu=s zE0N(Un?U2k1UQ&wJRe$G&tLq)O%XD^-Wr&}t)Wwno~k06(KkFiBToNkH>>ktCd$an zoEgwDeDfc5)b;LbkJHU?@7KfDYq1!9RN5pRtfS;Ax@q|&jWm&aRAjq~px#CdST%#F zwy~6zlBT$D%(i3jq|CN?rJ!yi3lqDnYj7^u=nY)BPW3yira_e;#WFwpn!1SH{qrY* zMD*?cSbMkIpLkt)ciFe-F3Q@iDIo8Ra4HTx4G9XwS8l=@DjJQZ_f)jPlLqI}9Gy=Wok@!;2b#R5Z~ewFqF z7Ni-<1paRYclLitt8KdD%e_jBZxB%p14Yh$uO6I^c_6T|Fc%d|`J*4iyns=kNaz`cKqB>+S!JGZ4E;GMuey#PVA#8hIb}rJzuN;2V*H z0bLdYReLm0F!Sy%4+iRIyb%72KR+>0ZyBU$5Z4e1WT22QNwdzCnxCIXtagN9-4;z! zeZ)-x9$|-WjV54^kF#s4ptAt??FlGtnSJ%I1Xqk^D;u?0EaxgUcGowq;9WL=Su~U^ z<>B)*f~2d+q-BovXQCK6s_^+Bk65n0K|$I0Q)Kf2P~#||5Hz`NCqlKznZh}-`^hKv zHgfoYcll9Mptr^EXl1ER_o>NTM0swtafsSa`LNejR8ZsYNy>jWD=v`;a)hu5B7Qm+ zXlrWvzI#U|R-ptX6v}pMTk!I-6(U7e=)4f6vlpdv6xc0XE9dd5GgQ4$X=&JhlS*(W z6=FEEMJ)`C*>7(*+UE;r4A4p_BF8&X{=IG^oTDI@Elw~a2)2JF{hQ+50GCgN<6JZ?^;1}l<)U%kPnG#<>?r{a5xV!s!M%Jyfot=?43 zdt7p71f2~a3IU_w7`AqGDT1z|JjdG(qUm?zB7_`6F^v~c&AR#Q0Kk;?c5y^P0)D|@ z?g^dkB$RFV6>YE5Ve9y0jI6#OxH@wS3xF@0@6;+AmRf)KbGo&sQ1R~FyNH)LIg=c* zQ7f0ZQo3<~6a%yd=@;O~&t$15WpBYrf}tO`4SFATl zVwM@J-I-u9#7VC+Ps>AlY*nnP{zFD{Ina+DKD^?!;m4Q?^M+VzheW%;AQZ6(k(m#^ z@Ed@dQ>CM}jdkazcF58|xCclxK`K$~MlcKr9|N7}B38;Y5=e5VT)oE0dCSP?W8&NS zj#w7Z^;ETCk-%o04p-bAmQRCmkp-Fuggwxa_+Y!guUqruv0&H5ix=;REqdC6Q~?Es zqNJoG{>LaJ7TVsiwR?mF2g5v~a+y#BktI_VUW7>vKal-Wa$e4ZEB`=SyS)tx*d;u& zejrc?I|E=0S~wJ-U!D+7kVDO z4>1+^B!59HUl^YLwk0Rf78^kj#3G;{P`LpU*emJqs#hH&{D5wFC%$)^D#(68>Cg6I zL~?Tea2e1E{oa{>!x5kK%*@P`(}zBMoql~>Ln{8cYTQ;QY#h)v^~p0o7GT`tL<<#?O$NEJd#51=lv058KwAeoC z+mU4)2st^d8?ainpYVSSW(ZJRGup_072GmIekFM&oW&a!PgPXm6RVBK1MUF@_-=1Dl&Emnl9WVbhQCY>?>gmOzEFrp$pQ{~&uf^U@#Rs`1+Y@!sov--U??

9ghb2Y;oGGWFk@jdKmWDUKRAeFLtx&v z3p3|vnFlG}vt4Y)`N-f9o2B$KisXAtOxcYKS1O?R3ZPOU$f6Q8c|Fdr2FnWewfKGi z+5KY;UELs78Km5#gS?=fJe*6s=wXxN~i_~u| zG%;e1rktNFxcx0^$#6|70e?~~N8feK0SAC9EXNqr_l|Ow4>F?oO+zSo{UIV{fNrE3 zH-ZHiZ-iH}mahep<*!>ue&fs2(()3_H2qy$SSk2S|Go=6UA|m@wtjIfjw1TrsX*`D z(t@nqg9Z{HrMVxth=!md7IEj<2pYfhfDoGQtiRC<$ua#@o_LRHQ$4+lh zRa_5$Jt0kECgVu|M!9`?>90Gn&VHD@BfWSdU19?-ez~6b;!(l&tbf`=6DuhnG^*D$f2|yIc<}I^IQ=NKw2e{f9i^|o$ zATudn#xqRItMt%5`|tOH<0!7{w|%=wUP6pBXioAoCW)+pF<@x^gE2gm3+`bSDu)VXpm)V!DV32mJ8gDbv|Iu$Qh`NE6 z;OL0^!agUBsvxFsAW!=`@W*MFsu*mw=qR1kK>yL%O$%u!iS3UzuPrXm{h<2nys!Ty z%Hr=X+KyQ&9O0+vq1C-Y@^_*3SSc|~VN#HQ8xH?DZU0)2w<7E|t7#+Yt3=5LjYQXU z=Q5m>4s~5!yytNXtT5Vd-(lV_?ph{T7MC7VVS7)!04{aCX{>(c4j*_+#CElZ?8)9| z?qiT1y=9*>pRJK@e{$f^$@m8WQL~{UGay^r>`Pn^JYw0!3`eIcFEgs>E*ty<1c+UO zF`+DFXJ@Pb(1ZDcAKURpV!fIiDuK2y2LGfHC_@L+#NL6Q?#8C&=M#BD8W@D)rNAF? zqNGbE5P4v~AO9LeD&v9A56ic^B#>MtsvgNcBe)$<`YkOja-;<9PkJ+U%bZI>VkOP< zr7)>w&_imp{)~J-gs9PRR90?BOIe!%GAFWK?97;u?*Qp==%HGFr)ZY!C*E)spdI^5 z9jiDCNM>H6>Hkw<{vX2f|DCx1FJW5wL0#c;2X9>yLMLoSOO3$u6Ls52)nm;s`SuNk zf@n3XIi$Vc2)#UVLftYpPD>nMfi$FFj#k!8S_sc~-;4NsE`J|Y1R5>#<^@0Q+1PAh zob^6i@V4KWk_GG8s4G#de99Mp&e&lULi8xaWkzxtoOzHHLe+0fH_qoV6xmHm0|H5_ zuBLUOuK+5JomeU_eQIyit_6;W(;T`1 z-Zp#m^gsszBHr))9X>eh_U17!yZ%|W@pONZII8Wnd9u4=*RnGl9LNN$?CdiTor*0c zXzT87kvTt9^W5oGa?~CJ%^6fiY!qw)?ZfZ@tX)MFm7qig`F`MHZ{RW`xV&qbbdy04 zRlnUW6TZ7LI15pt;=}ogz$KVZ(|{5HKJ{Dh3fP_^0yD5dy=Yue8^QY7 z-g1+4EXsDM8rL`-58vAhtZe*d*;n}T*hNf?S)Yi8h(U5_?OM?9-`aE%E(9EE$xYD1 z5n~#Y0Mf0vi$a0T)*PalUG7{Bjt-l4#_KArX!sbRsOo^&ldU+lHif0@gs6CT^v~X5RfEE;v{)kE4gV%kMdU6WbBG@7!s*r zF?X&?QgSigGpq~y^V=-1)|T+>_&PPp2j@CNeLQ`ENu@h>HKBp0=Sp2etS3i z*sj2<-vcfbD+fmzt>9JBNhH`@5mk_#eG9lScwl3;Wtk!kKn=i=UXKc3gN@~{i$~R{ z6MWeGsaIWQi(Cf&@@kvuKtK8ZoTFKB#rVXfiY_Z-iDk)}*;o&!@A{Zx`hO)@STGsF zvl=Uz%L#W&dL_*12h<|U=3zA8im=~SM60Ifh}?TUR%nC?Fh|&SjMKd2`e$;cM$%b! zC^t3CPZuq_tNur8-4Z-|c1>iqAMQ%9vmxpV$cdIMWFq81_*$Jz#>d^`Q?T1wTP>=3Z*7PI zHxzURlS)6HWd<;~mR5SApZ!UL`!xiYpXO43F)X)Px@ejtmUX$pmYC-8lPB}s7wk`I z2WP6Uw6(AB3VAo|^PVwmWu0R&{>}Z4lcMv{ZPd^q?GVd0;ppYiyR7Nu=;s@C=O-Vw zlI^O0mwZwLXb5pIc@2%o#4Epgz;zt2LdSMoOz8B#a$VcvmxKvmY@~a`^XfbjFt3PM zQK|{Cph7GQ?nW@d;QY3>!3{Agd5mx^E=s)J_2gk|2$#PBW&VCaPL9T}{~=F4FveyM z$^v*fHvM0;um3cA(dw0(n;Rp}G^D&dZWOXT5VPH<(Q^^?pA5O_Kn;cB3Z?CnEsx%| z7k468_EKNf5FFK-91^Y7oygAb7JoSR^DU5iyRLsC^{H$+CSGRtYf-F8dxZ@nc6hh@ zg^M>6+dXQ{Pm`;MiA>GSuXo&NwtrI@i_yS@q3htl54zCYGt@0rRn^uAg$$q^)4OPX zy9vqrN6^%TVcGS@;56IS%EBTdihw*c<8iqGUV6VQuJ0&*tnD)yVB8RJ10nfADH9qS z1pF4+&4B(YG@u)Ngrg-Fld$uF+Hf2t^_txfR{e-r|xuR|dxoDV0KgB=M)r~Mm> zo+jYY>7TV16`X(Bprp|OOA$g<)60L>i%H~X7q$;?hpBM)efykD`LQeZ|CNhoE^k+^ zZX#0>g0u|x!-s=RV`3uTX*|DYd7h-@NB&mBdY?81a?|bhpsz47pWQ2y8e3A{pk=`! zq{&bTe_ywX#_5pJ_b)35F>rO^W?b7zm^{G-#=~8E*l7n+X6x|k5wsc>fggrw9|#GW zvrdz~e|k0ZEO_DS*-k8ENk>wrb2`QB#{iu(c6qnsk*(|0u_O>HU@3eAt56~8QysmlXwptnDLB3Y{Dod z)juz&0B9R$!y|b1@)O9wjwKU^P1U3fOh-}fO+TBZ7E1t7Zw3pY=p}8P{P1|mkj6-0 zXvh8(?{Lc0c$HP*tX)9Qul{S4$QNnD2i&@=b=@V#`_=e5qvG?sC{)h~S$#nGy5jTa zquua;rXIdvrY68;s$0kUhlfnA-+8gg=NrI9oEc%BXMf7MG9klQpR3~??0mO0ox6_W z{6Lo;HMLC~p5`!$cX%WCCdZS)^lzkgr-j%!GN+ndnYc*T=c-Fb+hwJH2X5}!@`dmg z^8LDffQ%p~gBfrYK6@@?m1ASXIc28NaQ#P{ocY4F{?k>G(zE%iwF1vsyAt?sZ!<`J zx&LM8*yvc+4}|Y#ZVG%rrtFZ!pri;<*bZ(XrjG4s#%@MIFd=rZfEP4z`ZJzN zJs$96QYrPxAxC?X6r`gj_@`#xbJrAzV5=Ai!=T^jf0)NT?H$3ZCuV`%;kcIv}ka+cNOKr z`99~pYU6Ku1fip_d}7CR8IwSodrGrCT_il%m;c%Xey|e8)R%!O6iURi?6k-Zi7VyT zouTi=@ySLp;9~WRjS--rVLZOtZJ@s&3q>XHEHLqkkjJ?@*0D%wr>w=vUo6dhnoxYR zaK+ta{|F=O^Y^n<9&Pr>Fcc+?al$q<>}t}Z zRT>5cVIq^BStF;gU!ULw_toC2B4W z59< z7xVEZ7N$SgPr!LU)uIRG^UKhNip#mG&({;78*mnSv6i&(i3j8gb0S|veIcYEX73S>+|It zqiL{-=mMcxAB>0n_*ACfkDp*3OvP65Z}~Qq&y{Y^S)=NYWhR5(XKE8rlZ)>&kxlz^ z!c>RmQRr?cZoF#DtONaRjxSz3{4{&l)bx{?wJ1REm(}<|d(TI? zS5x$!&!1l>BO{xU_6c-9^-ULz75}l)r7P;bNO0}UuqJVg3&ejWxy#_xLd>r>1LKyB z%?(I%K_&#etr;FSlF-*jwhAYPwzptyffXWXIW0W|^)}k)V-2w@R*Od`K=RT`fj^aC zp+)e|{gZW)p2y^SH)|OV2J)~qQBDCcAMm1*SOoqPX?ob#=%@PozO+FkyGW(_z2i{1g-?`Cf~t>l{N z5SX)J=P2tmwY0E6F^eX{eE?*9YlI!sIa2JfR@j%>+MP;mZ3n(eyHEN~c={j#w>`=w z2WK2Hp8ElH%PvS`&Sukt;Z+ZuPYD~ID7Yfk;Oz2Q1PL_l~zL3 z3<4^WV~Imtqzj3vXOpZYpGt7%?;dZ(OG!mF247;ms>0zK;;64(4TtAnWJIRZv-YNx zPq{#k`8S!=PV#1==QRVVB&z-$+ugap3`}d)%{XapP_sMr#e8?m9)D@a$*#;b1X_t0 zuVD1r#2L4d>#gt_Y$YW{&MsXe&6fXs)0w;_cTIIY|9Q{wY;ZJP{qn^MwD^m&9j8ID zD-D>wHO8CV+JlvKOM9sp4L{sqnNkT`Qz6~((3{pg|GX)Xv_0aEtIF~33Q@Zw+{E)q z7Ka=YNdzjqq^)hr;$3a&Jx~0ehrq*vV-_Wm!?1$1-rm%lG|MZw^3z4-M^la5Bn_iVL&Ay@f*mp6Z%iU{`%vmy*6W0kUL~m!hG{)pZe6*z4VFNli~;l&#>1=e(LK)n)lGr zGJFH3^Q#>#EN279_1fgSu`5hJ`safz6`dZ4d{EZ$-Y65vw9Ckkq>JrcG2Ti195lOk zG37DM8eO)t)7jg8kzX%H7-G9vikjEWA+6riRl%>RBY*Ip6Nw|D7r%`1VI1F*Mm>#L zu&TIM1^GfGe*p4WyKYSvH2L}1da3$71|&H;X;sg0eSdl}xfCz%_j*{fw~Qd3#F-23 zx>WyW(rGY_P3o`B0zY}24D zeprc# zV2pFA(yw^Fyy$k-MlKOD6A*jwkN9d^_M|U$(S~=-W8R6yIjU`e?_ZB4el_^Tg1x9y zcNqgq%Ntb#N(WU5=F%JIJh)KU6qldRCAJ^`W*JnnSI!Ojo-K$Ebv*VhdB3K{Z@*#aTuV~ zJ3?1~NSz)*@>h)0`N4|xPdwDSF6zL3yJXDg$YZu~x_(X)a?EUL&9Y8lsuDx=3sTJ(4j^O{Hw1 z(5i_f{v-2mT}5S&MAW{O^=q$xWn)M-Fg7;E%d7~5r1GZuNUfXtH>Q`=@LR}jfa-lP zpn2ZN4*V2nP7+)sDFQd-fjbICB#tla9Hllq6PSjmS4@xV;(jY<@CxbW(hPXoNs5^nnQDHQq=mnpZY>r-VX zQ)T_4>!%^&bcfYa-~-hyxCxNf%=Y=u4>yrcQ!>85y)>EsyMNfFGmakGRE;2JUw$uPdm!Fd0U zin1OS;j8-5N0;?JkZe8PDb-5^vWUJFj!nq?NLjfRThbLw)aR**1+@d*+!5hpYNG&P3Oyo**&(PyiNdqr76HwQo<;YYf_2bKCf6Do1 z+iY<2sujD4j0E)k(tc}-3Qq)tP?UAfup(~^cJCp}Ja3~oTh`P-O5uv%*d+idLhif6Lb}UKDk)$f zEg&kPQX(xS(ug1k$R(t_aOpx)l?)WjnJ+^DwSve=DY?pW`L3^)rlak~C&exbvsx33k z3PrTxFYVVMMJ8M6MI0!UFip0ed zVMeL-F-~VU5iU?!yePhLsaj@;z~cPtO2=arx+#gy!Hmx0swt&ZaO?1r;?(SLqD8e1 z5k6bZ->Tg#_?K(_Q`g_OjpWrwXuf@wHv1I0r+51>!*i#o_cswF7hVC5LjCx-;PR2G zYOVcUMG?v8er`qv@K?K?H*3{YtRvMn3t~7w>O3J2k6id?(yZf`kds1hz+V3R*lMslh?mSI=R z9`3JM4h#lyL!Afq$@w2WmqI!=FT5I3X7LN8Zy0+FH-=`@s5itSK^1lsj`OdoR&pwS zQLPK{+LiqbJOksFZ?|dRdpxD+WlR}9q2GF6MUIfcP96Q-Y+a{d?>F;E z)2)Tsu)PDWfax~!8|b{TAuZSzC79F5QIh|Ut=NCHbpPwx_V00Lf3Mj5t%Li&J#32z zV#32Ge69aYDd_+7!H;OyD%RH43Ez0l{)aqZ?B_tA{4h>fqdDH&-bF^h zt~pT*#owyia!=c}Wsais4H_16Q|QPcmLBNIPD5K1$(&o`xniLLfGGVK1@+WaR2G;0 z4}%oP{c&82BjuC`he4#_z$3$V++Vyt7zHCzpbMEvVrV0E5FFe?sA_v zLGvkPKuEI;+mn_TGT%9H`;m4ZR`b>hozPaEK;IYl56@Y`HFX+SXS}32 z^5U0U`Y`E_Bo5>ra7yWdY$4|&6RhO!(;9L+qn>~C44eJ>)2ViuO(0!y-<&hhNtdLa zI9&E!D|E$B%K9uSfd*4AOF`H**BC+H6%-Vth*=W;ktD;d(F7S`0~L3GX|LO;dH7Y$ z-{F=WXv@`n${8olvEQflxQp7NHgYZ7rJu|?K_t2wxU<}%c(g`~NP>4k|D_snB7&AD z9@^l@a3jM2@oz@gD;?V0{L<2FAWG5F)oq~-S|u9w$2~g~@tZSMR?TK^W3PN(UQN;b zSX5=IkvDBIslUzLYr-}|p)X`GssG{!oa)`ueWDDxbsl0u;k0*;$cYDE92cf`a3C?_ zA#eZAr0Ok%?Ne_0+D~mplViu4-c=G zDp^`du)k%C2zWOLcR1eDM!qjOLfNgGBu?aE)x5E?it^;^DJh!5yeL2 z`bhmb+7@1PYeZycPZHK_o32EH!+~Uh0AhA?MEk*LYd1cOop(j9G%y^=(UsC|+!HRDw!g@OqENRJJ8+ zdS-ZHG0yt!Rsa>ZIE^{?E|caCCM@Z^;LKD6F`>7c;#DeadDrR_x$IpwDZES-QCz_@ z*}sJIw!}jl1LV9W`IvBp1J2#LhAdW^(BG3tJ?%}OByU3$lVvH2GRUxZa{2_Iwm8sb zkQUePok0Y`h!7Z*Es(r@Y&hBym5`LY6LA81tSD3@El+DbX5a0n&SGZUlcb~w*wtqj z6^Yo`zic4>bAtv;sO|K)nqVGLaWd4L19XbbgNBQ=XwzS(1k8eDBQl=ESX!Ue(yKkD zs-c@0%Tczm;@9QaTyChVF(|cxS~1=YTohPp{nYnDbM|Ek-)RnE*|9I#to}yT652g6 z?K5wR?o*pN6(@VjIN)fmHAhfhoq5m`J9D6MCFvA5mz*D6;Pzq@OanxS3Fc4c-+Mz1 zB@X=p2;u~~V&=a(4JA|=V1iW5Jl00IDIY-EH2lHevzvVix$dtoFAdiPO5qo_6t(sO zR(l=8B7XL_xqT>QAtI%2E18K!-CH@5_gtr3#NwOKwLz8&id12F>5AY4N2?6%t#1GALsF4XgT^#e=75+z+-$nj{J`N51}W$#r^nZQ3I#2a^&eoS|*k48>r@eTN7anF3shJQQ< z|I1jzhTk_Bn0`TaH~gGghTJ=jELVSK?4V-I7{}Pf@ha1+MdiPk*nJMTAYM>uXNFNE zkKSwI7qstWJ;{C+TW-kv%_giPG3HHCc~h;Idi#lLrLoJyPenF=82#GLvIyMfV{*Jq z+GQ(B!hMD^NvK)XC}uJ8rMv&i6&q24B$Bq(%Hr;DUx$iw!IPaT&(?NnYUa1(RvU?S z=UyZr(ExwMASER=-KKaXK91QjmD?V+_VC#`M$<5ZDRZo&LX~)GUI>v>v%KnzuLNCF zk}VmL95JT!AEpDD4q(J_zww;OD3hu~kDbte*%}#nwMKXt5tLbIQ&&kL!wB?L^?*yBn^b zW+Z?ABUYZrYUSs3)`t=dIQ`$;5rX=CPJ(>1D> zba5|UJ9NrGZ4Y&sH8$(mkejIyM)$iQ_O*s!TgF&_T0P5w$GQTSA)F7vU639c?=0Q0XK&rs2@IR1t-4*$a&f@;?`srcNul zjhk3YGQ{;r&wlJ(^KqDfA^e()${+7@A^Of15O-Zp>I$AT@OEYfr4pW?%FW;c_Ze*b zN1-?}sy*#9&7v(5sYRc@!Wczb$xRRPd_0#^X-b*Xb6HEP@$Jnr3*d?REZw@hI~jR- z1@inxgwqPtUqm7Y;IM%9ho9#9UbrK|*fhr?Wm8kGqxIwli+vyG6;BBa2x*6_Jq3|E zV@5{CLnY6cK7@dRIFkI?U;6pWaW76Z@bGIq=;eA$7mD=t zE1bTEfgaVzxbk=K(FPBayrNCq2n6&8gZ;ASZjz(V-i4g96(rFJ#;VhGi8(;GH`@m? zJKZ)~E2DLFEp`RH)Lp;)BTPp6IkM@z5plP6>2)k$PWNzfCPj(r%^{v3m6!C-9rv+j zk47nc$-J$ZY2y-M292;39?0YCgw{mHi%1N7wcws@&i5lgRTJMaZ&qseB0hmSMm_n$Ga->En9LD(iC=pkp$~x(ZCYRSq!JdicLOF_vR7hidM>|33laB?QM8N zMPrcR+#cqe96)XSt9B&%p-eN!8t5I!-rOks2&TrVoJXBC)4anUv`b%7njVQWat6Iq zci^)90FT}>GNZs{cXy|Dq6J)nZ$2Q|GenBFz^0|(?2+Fw8RLzH%+d-7*ibYWJ6DX< zZ;%HKs_`L^z`(H@-pyGBPS@dxmy=E> z4ApKMG+~L+u}yZ88HYD(3Hko2WY|_8DQC13lo$D`uy?V9n}kc}XaBeP<^Ao?nerR} z+e~^Acn|Uwxu&Q5>yN*}Wy=Q4&EN1AqLfg*hNL%%W0Jf+sj3YN@6J!n-=g!*13ly< zMD*s9$tGd2hH!%Iuj%7`N>Byid80u%XaSeMXh%?gXBqp@ZLfUvbHYSJD3ehJt7lLDzc|!&@p7G zpf+X_m66rAq$qLPzudmDiTqA}&*(z&kJJfT2bn=W-*gAW@mAugryMo+gT zOd~|W`mI7&%gwpo$lu=AVKvxZnMeS^3Q33fL66aLOT1_Wi2bg zym4IrhNTYvy1g`pGt%dXXxdq7>Y&S|xseyw*%FxHM||#vhNNd!RMZI6@|>_0)QHKl z#Czd}iT~`=s-wLHq`CzSRLBnzA$kjpIU#X)oc$fZa`GIll7WHm7;Joy3LA2Eu%IEZ z3*h|-fU=xvC-ft1RH0dpY^%T}Nx8IwLIv&Mr0a_Fcr6=`6B8EN=VQ>3KJ}5FS8S(0 z#ClGjvq1GIEbv}d9aU31j31r;3w&L9SwZYw$)cLjr_0rQ76U`jXmd_o9xAx1ku(Sc zmyDJhc#)U}{LP13HQAP%_lhmMXU{2U@16c3Ds%Hf7hor%lX0f-SXy0Aw~~mXPB=M zwA(}|_-Mo;k^h8M;;*a|0`f7^R8VaL)5$-d@_{^e;Bgvk{{15V@#lv@%n}2KK?H9H zBMrF8+i%w0_|<&F2z|iq?e3+sW+aHO5iXXCB1P_JiEG2N+GBo~W&Xlkv~|M!c#Qh-5|U!M-Q$@if!r)CEK}f3F*LhR znP>fENT@-bcU*`tHvWBO@%{eUuWAEX-ZJ*&#GPwp1-{Qu>`3q4ZBR+-c-bL!`|w!3 z`R($e{IDT0 zq48>R*!5uv3@>-^fq>4F-xaxI_u5?32DgLzFLs-*U*tAFhn`le4kzo~mg|o9eqZb$ zCEPUXKIUc`oo|Tu>Mhy0Z)Xr@BDd2eH1k&BjUsnhZ&rf*Ak7hmOVUz?C1^;%PTlnE zj=EZ%d0tqAQa0zZUp;Dp>ZNb;L!N&%?oUYTadw65-y1sc1gdXEwuqLHyOE&*Xg;?-EcB zc$53aeN2pg`Hw+e7+NOE#i}gtH5=&vHM-sze#*~7c$;AO{p)OJvyVc?GnMdSlTf1J zcPHOr2v9UfTwMbj+%K1eHqMTmelhT?QRZ_+QlV`2X|ivt(LR~##%U%B$DQ?Ei`tS5 zM~XSLoy1s+$swi)devds2W z_OD8gi)Y)g#-RlcPi8nxt5Qc3Kq`?;Uu$|n8-^GRRtzeJ<^4mG@} z`Q&_1je~*@H&Ck!7F-ny$&`ts_emOxWsQHzOO4m(UMrX$Ed0W2cwHbzW}CU``ThBd zp0Qv0we#*w<5INK1Ulxd8Ci6ko#gIrlog9at?6x@(vwTZv4ZBLE;K!uQzjR=hTmVt z`UMVIcfH^5>1jG;5;gC^Hs|U%F(P=uQ=E`&aMI!Su9}mp$bo**M}g0+VYjnPD7zi8 zzLt}il*n?wby4RHMK!UqJHO>d1-EZj(PdO9+nC_OBE&{+DC94*Q;*UwU}FS5!hDmy zYLEK+s4siAq^<1?V9nb+tCc#+M7@kAHU~O99vAHd`JgZ7jwgJb;<@va$7HSR%BZ5Z zP^Md?9>db*x_do~L#JM}joY4C{$2i>#_*!s?`swd@urt4u7cKdZ>hj8Sn@WnEP8m) zr+RXFNtDpotZ$raVN}_7(0`hboL!82!=)a-ctC-Dnj*zLj8n`{6w|Gx(Eb@OyIVb?`Wi~*jL-Tf}dQrA6|+Ymx{n?URiIj_*_i&Zg-UwAa|4`Rj@R^;NGrvu9XWsnh`Kch|%t zpu95Rg}UIK7NW$RQ}t$MF>nrq&FNFt>dm_jDY-G?I=SwwzT6>)WD*3Sa%!cQmsynB zu*Zli8fz(76`e=EH>$A8(%=e$X|~huZT3F6U@f=(TsW7Fa>LJ}|8-vVgT(wNGH3}M zJ#{SZx1My~O3akFzMgLK6RVv5{kW;pH-F}6fpi*gOc6;sMyW)6H2BBjv%t#vT#U2- ztTGdmTmf57)b;Ea-P7dtpAKm9Z={{gsHb(zatf{|qn}^6*4xWd`{;##x9mcIExo1P z4##I}G@*AxTiHoxPv!wtrbE-+qJz1Gcnk^6+vXZw=Z(|w%hH_g>4#=gy0X}-;!C+d zMx*wBS{~$HH{ina;umC?!7audzc22+!07km{@gf5EGA3DGNP$W*z0wrOpUi!Qf%aGbDHtrcTusC0ZdeeJ!(rK!c2ZP!P> zp+klJPWqXIHnM!+d#3M-eM#|o^cdf<;(leKUdc80g~2PM=AOwu_nQYe7vIba+O=j5zCEFty>w} z4V+&%%g)nLQt1>_zA(x&!Cuj-!*~~(shrr4+hk{z_u<#cJ$vwOGe}2RdcStV>6Sx# zMugVFuwhE>*g%Di+wU_=teB=JMz#94ypM~g=1$h~(TRz<6faUbuGxh8=rz99#qmCF zVeagV(6w8r>$z*5hm(L~y?j`eGs2TY)4h`}r@=>UM>&7{5D^x3J>*U~@inafYSWMP zuE6FjZN9Jn35UamxAkr?r#n!HY$qf>=KB1Q3)L9=rs1@m0nc&n;JEwu(|#RO8^8d( z=zBTH2y(b5x2zaj`5)u1&>H~U;CN1zx5e1Ihk}<#D?Y$Cri%rQe?B-ToWqLHfZQDy z-#dh)r1Snf4QxvPovrT2dO1fTHhRtH8@_z3wkGYGjS65!h}$tDW75=x!t`g0A(6}p zQl(%Q$bEo9aViFBJkuXoh?YH;USm~2pAa^jM7R zL;!tJ9dDTCH3kr=K)(cD6h+|C3tjcqFFUkTqN0OS10A+ofl&eXKdCXgRCRoWO!Cw* z@Mt0Lu)3`mE?`f`ewepr_8qso3qtLMs?Z6HIF(9oOu!u9d*hBO0CdU zh09U*EUO?=miogNe|%pq59u{)(f%Xnp7~95AgvRj%BrOa?;As1QrA-}Qn3j87cr)+ A_y7O^ literal 0 HcmV?d00001 diff --git a/docs/build-insights/media/copilot-build-request.png b/docs/build-insights/media/copilot-build-request.png new file mode 100644 index 0000000000000000000000000000000000000000..325ec315daa6c5139c6565b219b73d03d43bf5bd GIT binary patch literal 17604 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 bex%ecrKDAU>Iw|@5Qwt8np}~LX~6#ghZLu| literal 0 HcmV?d00001 diff --git a/docs/build-insights/media/copilot-improve-includes.png b/docs/build-insights/media/copilot-improve-includes.png new file mode 100644 index 0000000000000000000000000000000000000000..2a39818263432a409114fcba9aade963241ec992 GIT binary patch literal 13898 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 literal 0 HcmV?d00001 diff --git a/docs/build-insights/media/copilot-improve-prompt.png b/docs/build-insights/media/copilot-improve-prompt.png new file mode 100644 index 0000000000000000000000000000000000000000..43a5194dc4a81bfdf6ead24857f1deecf89bed22 GIT binary patch literal 12298 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 literal 0 HcmV?d00001 diff --git a/docs/build-insights/media/copilot-signin.png b/docs/build-insights/media/copilot-signin.png new file mode 100644 index 0000000000000000000000000000000000000000..05ae12cad457ebb15227f832d38ab9d1887c4f16 GIT binary patch literal 34001 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¬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 literal 0 HcmV?d00001 diff --git a/docs/build-insights/media/insights-improve-button.png b/docs/build-insights/media/insights-improve-button.png new file mode 100644 index 0000000000000000000000000000000000000000..ba4a0383b823a97df31917d17ed1fbb61fc492a9 GIT binary patch literal 13118 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 a7gCV?^!-4l3;fRuNL*M(sO*cL-~R!UK0WgQ literal 0 HcmV?d00001 diff --git a/docs/build-insights/media/model-select.png b/docs/build-insights/media/model-select.png new file mode 100644 index 0000000000000000000000000000000000000000..4c3db683c85f154299c557684e354621966cfc68 GIT binary patch literal 38362 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 L?42x0ZIAy2=hXN= literal 0 HcmV?d00001 diff --git a/docs/build-insights/media/msvc-elevation.png b/docs/build-insights/media/msvc-elevation.png new file mode 100644 index 0000000000000000000000000000000000000000..7404b6f41ab81471e7c4ce48cb3a9437b956e59c GIT binary patch literal 15758 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 literal 0 HcmV?d00001 diff --git a/docs/build-insights/media/terminal-permission.png b/docs/build-insights/media/terminal-permission.png new file mode 100644 index 0000000000000000000000000000000000000000..4baf7683bf5d676253dfdbd42a29737d37baf4e4 GIT binary patch literal 10480 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 K`RbPz@BRlQlr&EO literal 0 HcmV?d00001 diff --git a/docs/build-insights/media/vs-account-auth.png b/docs/build-insights/media/vs-account-auth.png new file mode 100644 index 0000000000000000000000000000000000000000..ae395549d004f2c89e83661937d17992ac2c6f0e GIT binary patch literal 13967 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 ZU0kIxi>pu_0w0lq6l7GSE1|H^{{!uu69NDL literal 0 HcmV?d00001 diff --git a/docs/build-insights/media/vs-installer-options.png b/docs/build-insights/media/vs-installer-options.png new file mode 100644 index 0000000000000000000000000000000000000000..6bd7c59e9f80cd20870b271028a142f8f001b36d GIT binary patch literal 19853 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 literal 0 HcmV?d00001 diff --git a/docs/build-insights/media/windows-uac.png b/docs/build-insights/media/windows-uac.png new file mode 100644 index 0000000000000000000000000000000000000000..add461eb50fd62ad8f0b77384242b80fa0a2f2f0 GIT binary patch literal 37564 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 literal 0 HcmV?d00001 From 585322bd6e3121ef145418571a4ed28c25b6ee0c Mon Sep 17 00:00:00 2001 From: Eve Silfanus Date: Thu, 15 Jan 2026 13:50:00 -0800 Subject: [PATCH 2174/2255] Updated copilot-usage-menu and vs-account-auth images --- .../media/copilot-usage-menu.png | Bin 7298 -> 13063 bytes docs/build-insights/media/vs-account-auth.png | Bin 13967 -> 14132 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/build-insights/media/copilot-usage-menu.png b/docs/build-insights/media/copilot-usage-menu.png index 9ca861d75b6b19181e409dc0f99240582cba0aea..6fbb212ac934ee24f531afd26aa206221f89884a 100644 GIT binary patch literal 13063 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 literal 7298 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 diff --git a/docs/build-insights/media/vs-account-auth.png b/docs/build-insights/media/vs-account-auth.png index ae395549d004f2c89e83661937d17992ac2c6f0e..3e62cf49c70838a226e5bb7a1174e92ffaf1f9cb 100644 GIT binary patch literal 14132 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 ZU0kIxi>pu_0w0lq6l7GSE1|H^{{!uu69NDL From 62551c68e9c5e32d88d458759b81cbcabe69fa08 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 16 Jan 2026 14:12:01 -0800 Subject: [PATCH 2175/2255] draft --- docs/standard-library/priority-queue-class.md | 343 ++++++++++-------- 1 file changed, 198 insertions(+), 145 deletions(-) diff --git a/docs/standard-library/priority-queue-class.md b/docs/standard-library/priority-queue-class.md index 8e22659fb47..d9c96fa37be 100644 --- a/docs/standard-library/priority-queue-class.md +++ b/docs/standard-library/priority-queue-class.md @@ -1,13 +1,13 @@ --- description: "Learn more about: priority_queue Class" title: "priority_queue Class" -ms.date: "11/04/2016" +ms.date: 01/18/2026 f1_keywords: ["queue/std::priority_queue::container_type", "queue/std::priority_queue::size_type", "queue/std::priority_queue::value_type", "queue/std::priority_queue::empty", "queue/std::priority_queue::pop", "queue/std::priority_queue::push", "queue/std::priority_queue::size", "queue/std::priority_queue::top"] helpviewer_keywords: ["std::priority_queue [C++], container_type", "std::priority_queue [C++], size_type", "std::priority_queue [C++], value_type", "std::priority_queue [C++], empty", "std::priority_queue [C++], pop", "std::priority_queue [C++], push", "std::priority_queue [C++], size", "std::priority_queue [C++], top"] --- -# `priority_queue` Class +# `priority_queue` class -A template container adaptor class that provides a restriction of functionality limiting access to the top element of some underlying container type, which is always the largest or of the highest priority. New elements can be added to the `priority_queue` and the top element of the `priority_queue` can be inspected or removed. +A container adaptor that maintains a collection of elements where the largest (or highest priority) element is always accessible at the top. You can add new elements and remove or examine the top element, but you can't directly access elements in the middle of the collection. ## Syntax @@ -19,31 +19,29 @@ class priority_queue ### Parameters *`Type`*\ -The element data type to be stored in the `priority_queue`. +The element data type to store in the `priority_queue`. *`Container`*\ -The type of the underlying container used to implement the `priority_queue`. +The type of the underlying container that stores the elements for the `priority_queue`. *`Compare`*\ -The type that provides a function object that can compare two element values as sort keys to determine their relative order in the `priority_queue`. This argument is optional and the binary predicate `less` is the default value. +The type that provides a function object that compares two element values as sort keys to determine their relative order in the `priority_queue`. This argument is optional. The binary predicate `less` is the default. ## Remarks -The elements of class `Type` stipulated in the first template parameter of a queue object are synonymous with [`value_type`](#value_type) and must match the type of element in the underlying container class `Container` stipulated by the second template parameter. The `Type` must be assignable, so that it's possible to copy objects of that type and to assign values to variables of that type. +Elements of class `Type` specified in the first template parameter of a `priority_queue` object are equivalent to [`value_type`](#value_type) and must match the element type in the underlying container class `Container` specified by the second template parameter. The `Type` must be assignable, which means you can copy objects of that type and assign values to variables of that type. -The `priority_queue` orders the sequence it controls by calling a stored function object of class `Traits`. In general, the elements need be merely less than comparable to establish this order: so that, given any two elements, it may be determined either that they're equivalent (in the sense that neither is less than the other) or that one is less than the other. This results in an ordering between the nonequivalent elements. On a more technical note, the comparison function is a binary predicate that induces a strict weak ordering in the standard mathematical sense. +The `priority_queue` uses a comparison function to determine which elements have higher priority. This comparison function is a function object of class `Traits`. To work with `priority_queue`, your elements only need to support comparison using the less-than operator (`<`) so that it can arrange the elements in order. -Suitable underlying container classes for `priority_queue` include [`deque` Class](../standard-library/deque-class.md) and the default [`vector` Class](../standard-library/vector-class.md) or any other sequence container that supports the operations of `front`, `push_back`, and `pop_back` and a random-access iterator. The underlying container class is encapsulated within the container adaptor, which exposes only the limited set of the sequence container member functions as a public interface. +Suitable underlying container classes for `priority_queue` include [`deque` Class](../standard-library/deque-class.md), the default [`vector` Class](../standard-library/vector-class.md), or any other sequence container that supports the operations of `front`, `push_back`, and `pop_back` and a random-access iterator. The container adaptor encapsulates the underlying container class and exposes only a limited set of the sequence container member functions as a public interface. -Adding elements to and removing elements from a `priority_queue` both have logarithmic complexity. Accessing elements in a `priority_queue` has constant complexity. +Adding and removing elements from a `priority_queue` both have logarithmic complexity. Accessing elements in a `priority_queue` has constant complexity. -There are three types of container adaptors defined by the C++ Standard Library: `stack`, `queue`, and `priority_queue`. Each restricts the functionality of some underlying container class to provide a precisely controlled interface to a standard data structure. +The C++ Standard Library defines other container adaptors that you can use to store the elements in your `priority_queue`: `stack`, `queue`, and `priority_queue`: -- The [`stack` Class](../standard-library/stack-class.md) supports a last-in, first-out (LIFO) data structure. A good analogue to keep in mind would be a stack of plates. Elements (plates) may be inserted, inspected, or removed only from the top of the stack, which is the last element at the end of the base container. The restriction to accessing only the top element is the reason for using the `stack` class. - -- The [`queue` Class](../standard-library/queue-class.md) supports a first-in, first-out (FIFO) data structure. A good analogue to keep in mind would be people lining up for a bank teller. Elements (people) may be added to the back of the line and are removed from the front of the line. Both the front and the back of a line may be inspected. The restriction to accessing only the front and back elements in this way is the reason for using the `queue` class. - -- The `priority_queue` class orders its elements so that the largest element is always at the top position. It supports insertion of an element and the inspection and removal of the top element. A good analogue to keep in mind would be people lining up where they're arranged by age, height, or some other criterion. +- The [`stack` Class](../standard-library/stack-class.md) supports a last-in, first-out (LIFO) data structure. Consider a stack of plates: you can insert, inspect, or remove elements (plates) only from the top of the stack, which is the last element at the end of the base container. +- The [`queue` Class](../standard-library/queue-class.md) supports a first-in, first-out (FIFO) data structure. Consider people in a line. You add elements (people) to the back of the line and remove them from the front of the line. Both the front and the back of a line can be inspected. +- The `priority_queue` class orders its elements so that the largest element is always at the top. It supports insertion of an element and the inspection and removal of the top element. ### Constructors @@ -75,6 +73,17 @@ There are three types of container adaptors defined by the C++ Standard Library: **Namespace:** `std` +## Examples index + +- [Check if the `priority_queue` is empty](#check-if-a-priority_queue-is-empty) +- [Pop elements and inspect size](#pop-elements-and-inspect-size) +- [Use custom containers and comparers](#construct-priority_queue-with-custom-containers-and-comparers) +- [Push elements and read the top](#push-elements-and-read-the-top) +- [Get the number of elements in the `priority_queue`](#get-priority_queue-size) +- [Access the top element](#access-the-top-element) +- [Use the `value_type` alias](#use-the-priority_queue-value_type-alias) +- [Use a user-defined data type](#use-a-user-defined-data-type-with-the-priority_queue) + ## `priority_queue::container_type` A type that provides the base container to be adapted. @@ -87,11 +96,8 @@ typedef Container container_type; The type is a synonym for the template parameter `Container`. The C++ Standard Library sequence container class `deque` and the default class `vector` meet the requirements to be used as the base container for a `priority_queue` object. User-defined types satisfying the requirements may also be used. -For more information on `Container`, see the Remarks section of the [`priority_queue` Class](../standard-library/priority-queue-class.md) topic. - -### Example - -See the example for [`priority_queue`](#priority_queue) for an example of how to declare and use `container_type`. +For more information about `Container`, see the Remarks section of the [`priority_queue` Class](../standard-library/priority-queue-class.md) topic. +To specify a different STL container as the base container for a `priority_queue`, see [`priority_queue`](#priority_queue) for an example of how to declare and use `container_type`. ## `priority_queue::empty` @@ -105,29 +111,28 @@ bool empty() const; **`true`** if the `priority_queue` is empty; **`false`** if the `priority_queue` is nonempty. -### Example +### Example: Check if the `priority_queue` is empty ```cpp -// pqueue_empty.cpp // compile with: /EHsc #include #include -int main( ) +int main() { using namespace std; // Declares priority_queues with default deque base container priority_queue q1, s2; - q1.push( 1 ); + q1.push(1); - if ( q1.empty( ) ) + if (q1.empty()) cout << "The priority_queue q1 is empty." << endl; else cout << "The priority_queue q1 is not empty." << endl; - if ( s2.empty( ) ) + if (s2.empty()) cout << "The priority_queue s2 is empty." << endl; else cout << "The priority_queue s2 is not empty." << endl; @@ -149,42 +154,38 @@ void pop(); ### Remarks -The `priority_queue` must be nonempty to apply the member function. The top of the `priority_queue` is always occupied by the largest element in the container. +The `priority_queue` must be nonempty to use this member function. The top of the `priority_queue` always holds the largest element in the container. -### Example +### Example: Pop elements and check size ```cpp -// pqueue_pop.cpp // compile with: /EHsc #include #include -int main( ) +int main() { using namespace std; priority_queue q1, s2; - q1.push( 10 ); - q1.push( 20 ); - q1.push( 30 ); + q1.push(10); + q1.push(20); + q1.push(30); priority_queue ::size_type i, iii; - i = q1.size( ); + i = q1.size(); cout << "The priority_queue length is " << i << "." << endl; - const int& ii = q1.top( ); - cout << "The element at the top of the priority_queue is " - << ii << "." << endl; + const int& ii = q1.top(); + cout << "The element at the top of the priority_queue is " << ii << "." << endl; - q1.pop( ); + q1.pop(); - iii = q1.size( ); - cout << "After a pop, the priority_queue length is " - << iii << "." << endl; + iii = q1.size(); + cout << "After a pop, the priority_queue length is " << iii << "." << endl; - const int& iv = q1.top( ); - cout << "After a pop, the element at the top of the " - << "priority_queue is " << iv << "." << endl; + const int& iv = q1.top(); + cout << "After a pop, the element at the top of the " << "priority_queue is " << iv << "." << endl; } ``` @@ -197,7 +198,7 @@ After a pop, the element at the top of the priority_queue is 20. ## `priority_queue::priority_queue` -Constructs a `priority_queue` that is empty or that is a copy of a range of a base container object or of another `priority_queue`. +Creates a `priority_queue` that is empty or that copies a range from a base container object or from another `priority_queue`. ```cpp priority_queue(); @@ -243,10 +244,9 @@ The fourth constructor specifies a copy of the `priority_queue right`. The last three constructors copy the range `[first, last)` of some container and use the values to initialize a `priority_queue` with increasing explicitness in specifying the type of comparison function of class `Traits` and `container_type`. -### Example +### Example: Use custom containers and comparers ```cpp -// pqueue_ctor.cpp // compile with: /EHsc #include #include @@ -254,101 +254,94 @@ The last three constructors copy the range `[first, last)` of some container and #include #include -int main( ) +int main() { using namespace std; - // The first member function declares priority_queue - // with a default vector base container + // Declares a priority_queue with a default vector base container priority_queue q1; cout << "q1 = ( "; - while ( !q1.empty( ) ) + while (!q1.empty()) { - cout << q1.top( ) << " "; - q1.pop( ); + cout << q1.top() << " "; + q1.pop(); } cout << ")" << endl; - // Explicitly declares a priority_queue with nondefault - // deque base container - priority_queue > q2; - q2.push( 5 ); - q2.push( 15 ); - q2.push( 10 ); + // Declares a priority_queue with nondefault deque base container + priority_queue > q2; + q2.push(5); + q2.push(15); + q2.push(10); cout << "q2 = ( "; - while ( !q2.empty( ) ) + while (!q2.empty()) { - cout << q2.top( ) << " "; - q2.pop( ); + cout << q2.top() << " "; + q2.pop(); } cout << ")" << endl; - - // This method of printing out the elements of a priority_queue - // removes the elements from the priority queue, leaving it empty - cout << "After printing, q2 has " << q2.size( ) << " elements." << endl; - - // The third member function declares a priority_queue - // with a vector base container and specifies that the comparison - // function greater is to be used for ordering elements - priority_queue , greater > q3; - q3.push( 2 ); - q3.push( 1 ); - q3.push( 3 ); + cout << "After printing, q2 has " << q2.size() << " elements." << endl; + + // Declares a priority_queue with a vector base container and specifies that + // the comparison function greater is to be used for ordering elements + priority_queue , greater> q3; + q3.push(2); + q3.push(1); + q3.push(3); cout << "q3 = ( "; - while ( !q3.empty( ) ) + + while (!q3.empty()) { - cout << q3.top( ) << " "; - q3.pop( ); + cout << q3.top() << " "; + q3.pop(); } cout << ")" << endl; - // The fourth member function declares a priority_queue and - // initializes it with elements copied from another container: - // first, inserting elements into q1, then copying q1 elements into q4 - q1.push( 100 ); - q1.push( 200 ); - priority_queue q4( q1 ); + // Declares a priority_queue and initializes it with elements copied from another + // container by first inserting elements into q1 and then copying q1 elements into q4 + q1.push(100); + q1.push(200); + priority_queue q4(q1); cout << "q4 = ( "; - while ( !q4.empty( ) ) + while (!q4.empty()) { - cout << q4.top( ) << " "; - q4.pop( ); + cout << q4.top() << " "; + q4.pop(); } cout << ")" << endl; // Creates an auxiliary vector object v5 to be used to initialize q5 vector v5; vector ::iterator v5_Iter; - v5.push_back( 10 ); - v5.push_back( 30 ); - v5.push_back( 20 ); + v5.push_back(10); + v5.push_back(30); + v5.push_back(20); cout << "v5 = ( " ; - for ( v5_Iter = v5.begin( ) ; v5_Iter != v5.end( ) ; v5_Iter++ ) + for (v5_Iter = v5.begin() ; v5_Iter != v5.end() ; v5_Iter++) + { cout << *v5_Iter << " "; + } cout << ")" << endl; - // The fifth member function declares and - // initializes a priority_queue q5 by copying the + // Declares and initializes a priority_queue q5 by copying the // range v5[ first, last) from vector v5 - priority_queue q5( v5.begin( ), v5.begin( ) + 2 ); + priority_queue q5(v5.begin(), v5.begin() + 2); cout << "q5 = ( "; - while ( !q5.empty( ) ) + while (!q5.empty()) { - cout << q5.top( ) << " "; - q5.pop( ); + cout << q5.top() << " "; + q5.pop(); } cout << ")" << endl; - // The sixth member function declares a priority_queue q6 - // with a comparison function greater and initializes q6 - // by copying the range v5[ first, last) from vector v5 - priority_queue , greater > - q6( v5.begin( ), v5.begin( ) + 2 ); + // Declares a priority_queue q6 with a comparison function greater and + // initializes q6 by copying the range v5[ first, last) from vector v5 + priority_queue , greater> q6(v5.begin(), v5.begin() + 2); cout << "q6 = ( "; - while ( !q6.empty( ) ) + while (!q6.empty()) { - cout << q6.top( ) << " "; - q6.pop( ); + cout << q6.top() << " "; + q6.pop(); } cout << ")" << endl; } @@ -365,36 +358,34 @@ void push(const Type& val); ### Parameters *`val`*\ -The element added to the top of the `priority_queue`. +The element to add to the top of the `priority_queue`. ### Remarks -The top of the `priority_queue` is the position occupied by the largest element in the container. +The top of the `priority_queue` contains the largest element in the container. -### Example +### Example: Push elements and read the top ```cpp -// pqueue_push.cpp // compile with: /EHsc #include #include -int main( ) +int main() { using namespace std; priority_queue q1; - q1.push( 10 ); - q1.push( 30 ); - q1.push( 20 ); + q1.push(10); + q1.push(30); + q1.push(20); priority_queue::size_type i; - i = q1.size( ); + i = q1.size(); cout << "The priority_queue length is " << i << "." << endl; - const int& ii = q1.top( ); - cout << "The element at the top of the priority_queue is " - << ii << "." << endl; + const int& ii = q1.top(); + cout << "The element at the top of the priority_queue is " << ii << "." << endl; } ``` @@ -415,26 +406,25 @@ size_type size() const; The current length of the `priority_queue`. -### Example +### Example: Get the number of elements in the `priority_queue` ```cpp -// pqueue_size.cpp // compile with: /EHsc #include #include -int main( ) +int main() { using namespace std; priority_queue q1, q2; priority_queue ::size_type i; - q1.push( 1 ); - i = q1.size( ); + q1.push(1); + i = q1.size(); cout << "The priority_queue length is " << i << "." << endl; - q1.push( 2 ); - i = q1.size( ); + q1.push(2); + i = q1.size(); cout << "The priority_queue length is now " << i << "." << endl; } ``` @@ -446,7 +436,7 @@ The priority_queue length is now 2. ## `priority_queue::size_type` -An unsigned integer type that can represent the number of elements in a `priority_queue`. +An unsigned integer type that represents the number of elements in a `priority_queue`. ```cpp typedef typename Container::size_type size_type; @@ -454,9 +444,9 @@ typedef typename Container::size_type size_type; ### Remarks -The type is a synonym for the `size_type` of the base container adapted by the `priority_queue`. +This type is a synonym for the `size_type` of the base container that the `priority_queue` adapts. -### Example +### Example: Access the top element See the example for [`size`](#size) for an example of how to declare and use `size_type`. @@ -474,32 +464,30 @@ A reference to the largest element, as determined by the `Traits` function, obje ### Remarks -The `priority_queue` must be nonempty to apply the member function. +The `priority_queue` must be nonempty to use this member function. -### Example +### Example: Use the `value_type` alias ```cpp -// pqueue_top.cpp // compile with: /EHsc #include #include -int main( ) +int main() { using namespace std; priority_queue q1; - q1.push( 10 ); - q1.push( 30 ); - q1.push( 20 ); + q1.push(10); + q1.push(30); + q1.push(20); priority_queue::size_type i; - i = q1.size( ); + i = q1.size(); cout << "The priority_queue length is " << i << "." << endl; - const int& ii = q1.top( ); - cout << "The element at the top of the priority_queue is " - << ii << "." << endl; + const int& ii = q1.top(); + cout << "The element at the top of the priority_queue is " << ii << "." << endl; } ``` @@ -518,17 +506,16 @@ typedef typename Container::value_type value_type; ### Remarks -The type is a synonym for the `value_type` of the base container adapted by the `priority_queue`. +This type is a synonym for the `value_type` of the base container that the `priority_queue` adapts. -### Example +### Example: Use the priority_queue value_type alias ```cpp -// pqueue_value_type.cpp // compile with: /EHsc #include #include -int main( ) +int main() { using namespace std; @@ -539,9 +526,8 @@ int main( ) cout << "The value_type is AnInt = " << AnInt << endl; priority_queue q1; - q1.push( AnInt ); - cout << "The element at the top of the priority_queue is " - << q1.top( ) << "." << endl; + q1.push(AnInt); + cout << "The element at the top of the priority_queue is " << q1.top() << "." << endl; } ``` @@ -550,6 +536,73 @@ The value_type is AnInt = 69 The element at the top of the priority_queue is 69. ``` +## Example: Use a user-defined data type + +To use `priority_queue` with user-defined type elements, you must provide a way to compare the elements. You can either define `operator<` for your type or provide a custom comparison function object. + +The following example demonstrates a `priority_queue` that stores `Task` objects, ordered by priority level. Tasks with higher priority values are at the top of the queue. + +```cpp +// compile with: /EHsc +#include +#include +#include + +struct Task +{ + int priority; + std::string name; + + // Define operator< for priority_queue ordering + // Returns true if this task has LOWER priority than other + // (priority_queue puts the "largest" element at the top) + bool operator<(const Task& other) const + { + return priority < other.priority; + } +}; + +int main() +{ + std::priority_queue tasks; + + tasks.push({3, "Low priority task"}); + tasks.push({10, "High priority task"}); + tasks.push({5, "Medium priority task"}); + + std::cout << "Processing tasks by priority:\n"; + while (!tasks.empty()) + { + const Task& t = tasks.top(); + std::cout << " Priority " << t.priority << ": " << t.name << "\n"; + tasks.pop(); + } +} +``` + +```Output +Processing tasks by priority: + Priority 10: High priority task + Priority 5: Medium priority task + Priority 3: Low priority task +``` + +### Remarks + +If you want different ordering (for example, lower values first), provide a custom comparator: + +```cpp +struct ComparePriority +{ + bool operator()(const Task& a, const Task& b) + { + return a.priority > b.priority; // Lower priority value means higher priority + } +}; + +std::priority_queue, ComparePriority> minQueue; +``` + ## See also [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md)\ From 015629ff43ee22665d3c9c1bfa30c3f02319dba1 Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Fri, 16 Jan 2026 14:39:19 -0800 Subject: [PATCH 2176/2255] Add new moniker --- docs/build/customize-cmake-settings.md | 74 +++++------------- .../vs-2026-cmake-manage-configurations.png | Bin 10542 -> 0 bytes 2 files changed, 20 insertions(+), 54 deletions(-) delete mode 100644 docs/build/media/vs-2026-cmake-manage-configurations.png diff --git a/docs/build/customize-cmake-settings.md b/docs/build/customize-cmake-settings.md index abcbfa224fc..b56f85cd753 100644 --- a/docs/build/customize-cmake-settings.md +++ b/docs/build/customize-cmake-settings.md @@ -7,7 +7,17 @@ ms.topic: how-to --- # Customize CMake build settings -::: moniker range=">=msvc-160" +::: moniker range="=visual-studio" + +The CMake settings editor has been deprecated in Visual Studio 2026. + +To learn about changing the *`CMakePresets.json`* file, see [CMakePresets.json and CMakeUserPresets.json Microsoft vendor maps](/cpp/build/cmake-presets-json-reference). + +For Visual Studio 2019 to 2022, select your version by using the version selector in the sidebar menu. + +::: moniker-end + +::: moniker range="<=msvc-170" Visual Studio uses a CMake configuration file to drive CMake generation and build. *`CMakePresets.json`* is supported by Visual Studio 2019 version 16.10 or later and is the recommended CMake configuration file. *`CMakePresets.json`* is supported directly by CMake and can be used to drive CMake generation and build from Visual Studio, from VS Code, in a Continuous Integration pipeline, and from the command line on Windows, Linux, and Mac. For more information on *`CMakePresets.json`*, see [Configure and build with CMake Presets](cmake-presets-vs.md). @@ -15,7 +25,7 @@ If you maintain projects that use a *`CMakeSettings.json`* file for CMake build To open the CMake settings editor, select the **Configuration** drop-down in the main toolbar and choose **Manage Configurations**. -![Screenshot of the CMake configuration drop-down. Manage Configurations is highlighted.](media/vs-2026-cmake-manage-configurations.png) +![Screenshot of the CMake configuration drop-down. Manage Configurations is highlighted.](media/vs2019-cmake-manage-configurations.png) Now you see the **Settings Editor** with the installed configurations on the left. @@ -24,7 +34,7 @@ The left pane shows the installed configurations (x86-Debug). The right pane sho :::image-end::: > [!NOTE] -> If a JSON editor opens instead of the **Settings Editor** when you select **Manage Configurations**, you need to enable the CMakeSettings mode. In Visual Studio 2026, under **Tools** > **Options** > **CMake**, select **Never use CMake Presets**, and then close and reopen your CMake project. Alternatively, you can choose **Use CMake Presets if available, otherwise use CMakeSettings.json**, and then delete the *CMakePresets.json* file from the project folder. +> If a JSON editor opens instead of the **Settings Editor** when you select **Manage Configurations**, you need to enable the CMakeSettings mode. Under **Tools** > **Options** > **CMake**, select **Never use CMake Presets**, and then close and reopen your CMake project. Alternatively, you can choose **Use CMake Presets if available, otherwise use CMakeSettings.json**, and then delete the *CMakePresets.json* file from the project folder. > :::image type="content" source="media/options-configuration-file.png" alt-text="Screenshot of the C make options pane."::: Visual Studio provides one `x64-Debug` configuration by default. You can add more configurations by choosing the green plus sign. The settings that you see in the editor might vary depending on which configuration is selected. @@ -161,55 +171,11 @@ For more information about each of the properties in the file, see [CMakeSetting ::: moniker-end -::: moniker range="<=msvc-150" - -Visual Studio 2017 provides several CMake configurations that define how CMake is invoked to create the CMake cache for a given project. To add a new configuration, select the configuration drop-down in the toolbar and choose **Manage Configurations**: - - ![Screenshot of Manage configurations selected in the drop-down.](media/cmake-manage-configurations.png) - -You can choose from the list of predefined configurations: - - ![Add Configuration to CMake Settings dialog list of predefined configurations.](media/cmake-configurations.png) - -The first time you select a configuration, Visual Studio creates a *`CMakeSettings.json`* file in your project's root folder. This file is used to re-create the CMake cache file, for example after a **Clean** operation. - -To add another configuration, right-click *`CMakeSettings.json`* and choose **Add Configuration**. - - ![Screenshot of the shortcut menu with Add configuration selected.](media/cmake-add-configuration.png "CMake Add Configuration") - -You can also edit the file using the **CMake Settings Editor**. Right-click on *`CMakeSettings.json`* in **Solution Explorer** and choose **Edit CMake Settings**. Or, select **Manage Configurations** from the configuration drop-down at the top of the editor window. - -You can also directly edit *`CMakeSettings.json`* to create custom configurations. The following example shows a sample configuration, which you can use as a starting point: - -```json - { - "name": "x86-Debug", - "generator": "Ninja", - "configurationType": "Debug", - "inheritEnvironments": [ "msvc_x86" ], - "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}", - "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}", - "cmakeCommandArgs": "", - "buildCommandArgs": "-v", - "ctestCommandArgs": "" - }, -``` - -JSON IntelliSense helps you edit the *`CMakeSettings.json`* file: - - :::image type="complex" source="media/cmake-json-intellisense.png" alt-text="Screenshot of the CMake JSON IntelliSense pop-up in the editor."::: - The JSON IntelliSense pop-up for "configurations" shows buildCommandArgs, buildRoot, cmakeCommandArgs, configurationType, among several others. - :::image-end::: - -For more information about each of the properties in the file, see [`CMakeSettings.json` schema reference](cmakesettings-reference.md). - -::: moniker-end - -## See also +## Related content -[CMake Projects in Visual Studio](cmake-projects-in-visual-studio.md)
-[Configure a Linux CMake project](../linux/cmake-linux-project.md)
-[Connect to your remote Linux computer](../linux/connect-to-your-remote-linux-computer.md)
-[Configure CMake debugging sessions](configure-cmake-debugging-sessions.md)
-[Deploy, run, and debug your Linux project](../linux/deploy-run-and-debug-your-linux-project.md)
-[CMake predefined configuration reference](cmake-predefined-configuration-reference.md) +- [CMake Projects in Visual Studio](cmake-projects-in-visual-studio.md) +- [Configure a Linux CMake project](../linux/cmake-linux-project.md) +- [Connect to your remote Linux computer](../linux/connect-to-your-remote-linux-computer.md) +- [Configure CMake debugging sessions](configure-cmake-debugging-sessions.md) +- [Deploy, run, and debug your Linux project](../linux/deploy-run-and-debug-your-linux-project.md) +- [CMake predefined configuration reference](cmake-predefined-configuration-reference.md) diff --git a/docs/build/media/vs-2026-cmake-manage-configurations.png b/docs/build/media/vs-2026-cmake-manage-configurations.png deleted file mode 100644 index ca06469ab2f761491b67696040af63a568727e78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10542 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 NQc=)&RV8N@^gp9A Date: Fri, 16 Jan 2026 14:44:10 -0800 Subject: [PATCH 2177/2255] link --- docs/standard-library/priority-queue-class.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/standard-library/priority-queue-class.md b/docs/standard-library/priority-queue-class.md index d9c96fa37be..f8d63d9f60f 100644 --- a/docs/standard-library/priority-queue-class.md +++ b/docs/standard-library/priority-queue-class.md @@ -33,7 +33,7 @@ Elements of class `Type` specified in the first template parameter of a `priorit The `priority_queue` uses a comparison function to determine which elements have higher priority. This comparison function is a function object of class `Traits`. To work with `priority_queue`, your elements only need to support comparison using the less-than operator (`<`) so that it can arrange the elements in order. -Suitable underlying container classes for `priority_queue` include [`deque` Class](../standard-library/deque-class.md), the default [`vector` Class](../standard-library/vector-class.md), or any other sequence container that supports the operations of `front`, `push_back`, and `pop_back` and a random-access iterator. The container adaptor encapsulates the underlying container class and exposes only a limited set of the sequence container member functions as a public interface. +For more information about suitable underlying container classes, see [container_type](#container_type). Adding and removing elements from a `priority_queue` both have logarithmic complexity. Accessing elements in a `priority_queue` has constant complexity. @@ -94,10 +94,11 @@ typedef Container container_type; ### Remarks -The type is a synonym for the template parameter `Container`. The C++ Standard Library sequence container class `deque` and the default class `vector` meet the requirements to be used as the base container for a `priority_queue` object. User-defined types satisfying the requirements may also be used. +The type is a synonym for the template parameter `Container`. + +Suitable underlying container classes for `priority_queue` include [`deque` Class](../standard-library/deque-class.md), the default [`vector` Class](../standard-library/vector-class.md), or any other sequence container that supports the operations of `front`, `push_back`, and `pop_back` and a random-access iterator. The container adaptor encapsulates the underlying container class and exposes only a limited set of the sequence container member functions as a public interface. -For more information about `Container`, see the Remarks section of the [`priority_queue` Class](../standard-library/priority-queue-class.md) topic. -To specify a different STL container as the base container for a `priority_queue`, see [`priority_queue`](#priority_queue) for an example of how to declare and use `container_type`. +For an example of how to declare and use `container_type`, see [Use custom containers and comparers](#construct-priority_queue-with-custom-containers-and-comparers) ## `priority_queue::empty` From 0fd890e2748037f3822579f18a40546f011ba9e8 Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Fri, 16 Jan 2026 14:46:00 -0800 Subject: [PATCH 2178/2255] Fix new moniker --- docs/build/customize-cmake-settings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/customize-cmake-settings.md b/docs/build/customize-cmake-settings.md index b56f85cd753..d49e435c42b 100644 --- a/docs/build/customize-cmake-settings.md +++ b/docs/build/customize-cmake-settings.md @@ -7,7 +7,7 @@ ms.topic: how-to --- # Customize CMake build settings -::: moniker range="=visual-studio" +::: moniker range=">=msvc-180" The CMake settings editor has been deprecated in Visual Studio 2026. From 8095dee92137c35c10a4c29c6ee61e0782768efd Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 16 Jan 2026 15:33:37 -0800 Subject: [PATCH 2179/2255] draft --- docs/standard-library/priority-queue-class.md | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/standard-library/priority-queue-class.md b/docs/standard-library/priority-queue-class.md index f8d63d9f60f..2ed920229e7 100644 --- a/docs/standard-library/priority-queue-class.md +++ b/docs/standard-library/priority-queue-class.md @@ -33,7 +33,7 @@ Elements of class `Type` specified in the first template parameter of a `priorit The `priority_queue` uses a comparison function to determine which elements have higher priority. This comparison function is a function object of class `Traits`. To work with `priority_queue`, your elements only need to support comparison using the less-than operator (`<`) so that it can arrange the elements in order. -For more information about suitable underlying container classes, see [container_type](#container_type). +You can change the underlying container type used by the `priority_queue`. You may want to do that for performance reasons. The default, `vector`, is usually best for cache locality because elements are stored in contiguous storage, and does fewer allocations as it grows. But perhaps you would consider `deque` if you have very large or unbounded queues and moving elements is expensive. For more information about suitable underlying container classes, see [container_type](#container_type). Adding and removing elements from a `priority_queue` both have logarithmic complexity. Accessing elements in a `priority_queue` has constant complexity. @@ -43,6 +43,17 @@ The C++ Standard Library defines other container adaptors that you can use to st - The [`queue` Class](../standard-library/queue-class.md) supports a first-in, first-out (FIFO) data structure. Consider people in a line. You add elements (people) to the back of the line and remove them from the front of the line. Both the front and the back of a line can be inspected. - The `priority_queue` class orders its elements so that the largest element is always at the top. It supports insertion of an element and the inspection and removal of the top element. +## Examples + +- [Check if the `priority_queue` is empty](#check-if-a-priority_queue-is-empty) +- [Pop elements and check queue size](#pop-elements-and-inspect-size) +- [Use custom containers and comparers](#construct-priority_queue-with-custom-containers-and-comparers) +- [Push elements and read the top](#push-elements-and-read-the-top) +- [Get the number of elements](#get-priority_queue-size) +- [Access the top element](#access-the-top-element) +- [Get the top element of the `priority_queue`](#use-the-priority_queue-value_type-alias) +- [Use a user-defined data type](#use-a-user-defined-data-type-with-the-priority_queue) + ### Constructors |Constructor|Description| @@ -73,17 +84,6 @@ The C++ Standard Library defines other container adaptors that you can use to st **Namespace:** `std` -## Examples index - -- [Check if the `priority_queue` is empty](#check-if-a-priority_queue-is-empty) -- [Pop elements and inspect size](#pop-elements-and-inspect-size) -- [Use custom containers and comparers](#construct-priority_queue-with-custom-containers-and-comparers) -- [Push elements and read the top](#push-elements-and-read-the-top) -- [Get the number of elements in the `priority_queue`](#get-priority_queue-size) -- [Access the top element](#access-the-top-element) -- [Use the `value_type` alias](#use-the-priority_queue-value_type-alias) -- [Use a user-defined data type](#use-a-user-defined-data-type-with-the-priority_queue) - ## `priority_queue::container_type` A type that provides the base container to be adapted. @@ -449,7 +449,7 @@ This type is a synonym for the `size_type` of the base container that the `prior ### Example: Access the top element -See the example for [`size`](#size) for an example of how to declare and use `size_type`. +For an example of how to declare and use `size_type`, see [Get the number of elements](#get-priority_queue-size) ## `priority_queue::top` @@ -467,7 +467,7 @@ A reference to the largest element, as determined by the `Traits` function, obje The `priority_queue` must be nonempty to use this member function. -### Example: Use the `value_type` alias +### Example: Get the top element of the `priority_queue` ```cpp // compile with: /EHsc From 93c5a1cf9eae694a0816cb90925291309f6968ad Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 16 Jan 2026 15:51:21 -0800 Subject: [PATCH 2180/2255] fix link --- docs/standard-library/priority-queue-class.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/standard-library/priority-queue-class.md b/docs/standard-library/priority-queue-class.md index 2ed920229e7..54de3d14480 100644 --- a/docs/standard-library/priority-queue-class.md +++ b/docs/standard-library/priority-queue-class.md @@ -51,7 +51,7 @@ The C++ Standard Library defines other container adaptors that you can use to st - [Push elements and read the top](#push-elements-and-read-the-top) - [Get the number of elements](#get-priority_queue-size) - [Access the top element](#access-the-top-element) -- [Get the top element of the `priority_queue`](#use-the-priority_queue-value_type-alias) +- [Use the priority_queue value_type alias](#use-the-priority_queue-value_type-alias) - [Use a user-defined data type](#use-a-user-defined-data-type-with-the-priority_queue) ### Constructors @@ -64,7 +64,7 @@ The C++ Standard Library defines other container adaptors that you can use to st |Type name|Description| |-|-| -|[`container_type`](#container_type)|A type that provides the base container to be adapted by a `priority_queue`.| +|[`container_type`](#container_type)|A type that provides the base container that the `priority_queue` adapts.| |[`size_type`](#size_type)|An unsigned integer type that can represent the number of elements in a `priority_queue`.| |[`value_type`](#value_type)|A type that represents the type of object stored as an element in a `priority_queue`.| From 5a03e2aa903e5f20729ee2b063ae4d502d57486a Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 16 Jan 2026 16:49:34 -0800 Subject: [PATCH 2181/2255] update example --- docs/standard-library/set-class.md | 89 +++++++++++++----------------- 1 file changed, 38 insertions(+), 51 deletions(-) diff --git a/docs/standard-library/set-class.md b/docs/standard-library/set-class.md index a311d618735..0d8b7a74316 100644 --- a/docs/standard-library/set-class.md +++ b/docs/standard-library/set-class.md @@ -1080,9 +1080,9 @@ An iterator that refers to the location of an element with a specified key, or t ### Remarks -The member function returns an iterator that refers to an element in the set whose key is equivalent to the argument *key* under a binary predicate that induces an ordering based on a less than comparability relation. +The member function returns an iterator that points to the element in the set that has a key equal to the argument *key*. If no such element exists, the function returns `end()`. The comparison uses a binary predicate based on a less-than ordering relation. -If the return value of `find` is assigned to a `const_iterator`, the set object can't be modified. If the return value of `find` is assigned to an `iterator`, the set object can be modified +If the return value of `find` is assigned to a `const_iterator`, the set object can't be modified. If the return value of `find` is assigned to an `iterator`, the set object can be modified. ### Example @@ -1090,61 +1090,48 @@ If the return value of `find` is assigned to a `const_iterator`, the set object // compile with: /EHsc /W4 /MTd #include #include -#include -#include - -using namespace std; - -template void print_elem(const T& t) { - cout << "(" << t << ") "; -} - -template void print_collection(const T& t) { - cout << t.size() << " elements: "; - for (const auto& p : t) { - print_elem(p); - } - cout << endl; -} - -template void findit(const C& c, T val) { - cout << "Trying find() on value " << val << endl; - auto result = c.find(val); - if (result != c.end()) { - cout << "Element found: "; print_elem(*result); cout << endl; - } else { - cout << "Element not found." << endl; - } -} +using namespace std; // std c++ libs implemented in std -int main() +void main() { - set s1({ 40, 45 }); - cout << "The starting set s1 is: " << endl; - print_collection(s1); - - vector v; - v.push_back(43); - v.push_back(41); - v.push_back(46); - v.push_back(42); - v.push_back(44); - v.push_back(44); // attempt a duplicate - - cout << "Inserting the following vector data into s1: " << endl; - print_collection(v); - - s1.insert(v.begin(), v.end()); - - cout << "The modified set s1 is: " << endl; - print_collection(s1); - cout << endl; - findit(s1, 45); - findit(s1, 6); + set, allocator> s1{5, 8, 12}; + + // find() returns an iterator that points to the first element + // that has the same key as the value passed to the find function. + // If no such element exists, the iterator equals end(). + + set, allocator>::iterator it; + + // Is 8 in the set? + it = s1.find(8); + if (it != s1.end()) + { + cout << "Found 8" << endl; + } + else + { + cout << "Didn't find 8" << endl; + } + + // Is 6 in the set? + it = s1.find(6); + if (it != s1.end()) + { + cout << "Found 6" << endl; + } + else + { + cout << "Didn't find 6" << endl; + } } ``` +```output +Found 8 +Didn't find 6 +``` + ## `get_allocator` Returns a copy of the allocator object used to construct the set. From 3d1e773645d6fb0aef7a5e71123781d426915c44 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 16 Jan 2026 16:50:35 -0800 Subject: [PATCH 2182/2255] update header --- docs/standard-library/set-class.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard-library/set-class.md b/docs/standard-library/set-class.md index 0d8b7a74316..3fb4d1f5de9 100644 --- a/docs/standard-library/set-class.md +++ b/docs/standard-library/set-class.md @@ -1084,7 +1084,7 @@ The member function returns an iterator that points to the element in the set th If the return value of `find` is assigned to a `const_iterator`, the set object can't be modified. If the return value of `find` is assigned to an `iterator`, the set object can be modified. -### Example +### Example of set::find() ```cpp // compile with: /EHsc /W4 /MTd From 7a2a3aca5f2dd25a1a455c6e1564510f720f82a1 Mon Sep 17 00:00:00 2001 From: Eve Silfanus Date: Tue, 20 Jan 2026 16:25:27 -0800 Subject: [PATCH 2183/2255] File and images update --- ...indows.md => build_performance_windows.md} | 111 +++++++++--------- docs/build-insights/media/copilot-signin.png | Bin 34001 -> 0 bytes .../media/copilot-usage-menu.png | Bin 13063 -> 0 bytes ...auth.png => vs-account-authentication.png} | Bin docs/build-insights/media/windows-uac.png | Bin 37564 -> 0 bytes .../media/windows-user-account-control.png | Bin 0 -> 37212 bytes 6 files changed, 56 insertions(+), 55 deletions(-) rename docs/build-insights/{copilot_build_performance_windows.md => build_performance_windows.md} (50%) delete mode 100644 docs/build-insights/media/copilot-signin.png delete mode 100644 docs/build-insights/media/copilot-usage-menu.png rename docs/build-insights/media/{vs-account-auth.png => vs-account-authentication.png} (100%) delete mode 100644 docs/build-insights/media/windows-uac.png create mode 100644 docs/build-insights/media/windows-user-account-control.png diff --git a/docs/build-insights/copilot_build_performance_windows.md b/docs/build-insights/build_performance_windows.md similarity index 50% rename from docs/build-insights/copilot_build_performance_windows.md rename to docs/build-insights/build_performance_windows.md index d5024193c4d..64265d93c7b 100644 --- a/docs/build-insights/copilot_build_performance_windows.md +++ b/docs/build-insights/build_performance_windows.md @@ -1,4 +1,12 @@ -# Getting Started with GitHub Copilot build performance for Windows  +--- +title: "Get Started with GitHub Copilot build performance for Windows" +description: "Learn how to use GitHub Copilot build performance for Windows to analyze C++ builds, identify expensive headers and templates, and automatically optimize build times in Visual Studio 2026." +ms.date: 1/20/2026 +helpviewer_keywords: ["GitHub Copilot build performance", "C++ Build Insights", "build time optimization", "header file analysis", "template instantiation", "Visual Studio build performance"] +ms.topic: how-to +--- + +# Get Started with GitHub Copilot build performance for Windows  The GitHub Copilot build performance for Windows analyzes your C++ builds and highlights expensive headers, templates, and functions so you can identify and fix build time bottlenecks. GitHub Copilot integrates seamlessly with Visual Studio, reducing complexity and improving developer productivity. @@ -12,19 +20,19 @@ The GitHub Copilot build performance for Windows analyzes your C++ builds and hi To use GitHub Copilot build performance for Windows, you must install the latest available **Visual Studio 2026**. -[Installation Guide](https://learn.microsoft.com/en-us/visualstudio/install/install-visual-studio?view=visualstudio) +[Installation Guide](/visualstudio/install/install-visual-studio) Visual Studio 2026 supports **side-by-side installation** with older versions. You do not need to uninstall previous versions or other release channels. Installing Visual Studio 2026 will not interfere with your existing development environment.  ### Before you begin  -After installing the Visual Studio Installer, ensure the following components are selected under the **Desktop development with C++** [workload](https://learn.microsoft.com/en-us/visualstudio/install/install-visual-studio?view=visualstudio#step-5---choose-individual-components-optional:~:text=proceeding%20with%20installation.-,Step%204%20%2D%20Choose%20workloads,-After%20you%20install) during installation: +After installing the Visual Studio Installer, ensure the following components are selected under the **Desktop development with C++** [workload](/visualstudio/install/install-visual-studio#step-4---choose-workloads) during installation: - C++ Build Insights - C++ profiling tools - C++ CMake tools for Windows (required for CMake projects)  -:::image type="complex" source="./media/vs-installer-options.png" alt-text="Screenshot of Visual Studio Installer showing selected options for Desktop development with C++."::: +:::image type="complex" source="./media/vs-installer-options.png" alt-text="This installer view highlights the available optional components within the Desktop development with C++ workload, helping users confirm that tools required for build analysis and performance optimization are included during setup."::: The list shows C++ Build Insights, C++ profiling tools, and C++ CMake tools for Windows are all selected for installation. :::image-end::: @@ -38,31 +46,24 @@ GitHub Copilot build performance for Windows is available to users on GitHub Cop - Your plan type will appear near the top of the page.  -:::image type="complex" source="./media/copilot-subscription.png" alt-text="Banner in GitHub settings indicating Copilot Enterprise is active."::: -The banner shows buttons for Copilot in IDE, CLI, Mobile, GitHub.com, and more features. -:::image-end::: + :::image type="complex" source="./media/copilot-subscription.png" alt-text="Banner in GitHub account settings confirming that GitHub Copilot Enterprise is active, with quick-access buttons for various Copilot features including IDE, CLI, mobile, GitHub.com, and more."::: + This banner provides context for where subscription details are displayed within GitHub’s account settings interface. + :::image-end::: + +- Authenticate in Visual Studio 2026 -- Authenticate in Visual Studio 2026 -Before proceeding, ensure you are signed in to your GitHub account in Visual Studio. + Before proceeding, ensure you are signed in to your GitHub account in Visual Studio. - Click on your profile picture in the upper-right corner of Visual Studio to confirm your GitHub login status. - :::image type="complex" source="./media/vs-account-auth.png" alt-text="Visual Studio account dropdown showing GitHub EMU account."::: - The dropdown displays the GitHub EMU account with active status and sync indicator. - :::image-end::: + :::image type="complex" source="./media/vs-account-authentication.png" alt-text="Visual Studio account dropdown showing an active login session with a Microsoft account and a connected GitHub account, both marked as active and synced."::: + The dropdown displays the GitHub account with active status and sync indicator. + :::image-end::: - If you are not signed in, open the GitHub Copilot Chat and follow the sign-in instructions from the pop-up window. - :::image type="complex" source="./media/copilot-signin.png" alt-text="GitHub Copilot sign-in window with authentication options."::: - The window shows options to continue with GitHub or Google, and links to terms and privacy policy. - :::image-end::: - - Once authenticated, you can verify your plan by selecting Copilot Usage from the dropdown menu under the GitHub Copilot badge. - :::image type="complex" source="./media/copilot-usage-menu.png" alt-text="Visual Studio dropdown menu under Copilot badge."::: - The menu lists options like Copilot Usage, Open Chat Window, Settings, Learn More, GitHub Copilot Walkthrough, and Manage Copilot Subscription. - :::image-end::: - ### Enable Template Collection Template instantiation time collection is off by default to minimize analysis overhead. To turn it on: @@ -73,29 +74,29 @@ Template instantiation time collection is off by default to minimize analysis ov 3. Select **Collect Template Instantiation**. -:::image type="complex" source="./media/build-insights-options.png" alt-text="Visual Studio Build Insights options dialog."::: +:::image type="complex" source="./media/build-insights-options.png" alt-text="Build Insights settings page in Visual Studio Options with the Collect template instantiation checkbox enabled, displaying trace collection configurations for analysis."::: The dialog shows trace collection settings with the Collect template instantiation checkbox selected. :::image-end::: -*Learn more:* [Troubleshoot template instantiation impact on build time | Microsoft Learn](https://learn.microsoft.com/en-us/cpp/build-insights/tutorials/build-insights-template-view?view=msvc-170) +*Learn more:* [Troubleshoot template instantiation impact on build time | Microsoft Learn](/cpp/build-insights/tutorials/build-insights-template-view) ## Workflow GitHub Copilot build performance on Windows is available via the GitHub Copilot chat pane. Users can access this functionality through the Agent feature within the chat interface. -:::image type="complex" source="./media/copilot-build-perf-select.png" alt-text="GitHub Copilot chat pane showing agent selection."::: +:::image type="complex" source="./media/copilot-build-perf-select.png" alt-text="GitHub Copilot chat pane showing agent selection. The GitHub Copilot build performance on Windows is highlighted as the option to select."::: The pane shows GitHub Copilot build performance for Windows selected to optimize C++ build, with other agents listed. :::image-end::: Before submitting a request to the GitHub Copilot, select your preferred model. -:::image type="complex" source="./media/model-select.png" alt-text="Dropdown menu in Copilot chat for selecting AI models."::: -The menu includes GPT-5, GPT-5.1, Claude, Gemini, and other available AI models. +:::image type="complex" source="./media/model-select.png" alt-text="Model selection menu in Copilot Chat showing available AI models including GPT-5, GPT-5.1, Claude, and Gemini, with usage rate indicators."::: +This dropdown provides context on the range of AI models available when initiating a performance analysis. :::image-end::: Instruct GitHub Copilot to improve the build performance of your selected project. You can add additional context and information so that GitHub Copilot can create suggestions that match the needs of your project. -:::image type="complex" source="./media/copilot-build-request.png" alt-text="Copilot chat window with build performance request."::: +:::image type="complex" source="./media/copilot-build-request.png" alt-text="Copilot Chat interface where the user has entered a request for build performance improvement using GitHub Copilot build performance on Windows."::: The window shows GitHub Copilot build performance for Windows with user message requesting build performance improvement for the project. :::image-end::: @@ -103,20 +104,20 @@ The window shows GitHub Copilot build performance for Windows with user message To analyze the build performance of the selected project, Visual Studio needs elevated permissions. The Build Insights tool needs to be enabled for a first-time user to kickstart the build performance analysis. -*Learn more:* [Build Insights needs additional permissions | Microsoft Learn](https://learn.microsoft.com/en-us/cpp/build-insights/elevate-note?view=msvc-170&f1url=%3FappId%3DDev18IDEF1%26l%3DEN-US%26k%3Dk(bi_permissions)%26rd%3Dtrue) +*Learn more:* [Build Insights needs additional permissions | Microsoft Learn](/cpp/build-insights/elevate-note) -:::image type="complex" source="./media/build-insights-permission.png" alt-text="Visual Studio dialog asking to run Build Insights tool."::: -The dialog requests permission to analyze build performance, with Confirm and Deny buttons. +:::image type="complex" source="./media/build-insights-permission.png" alt-text="Visual Studio dialog titled Run Build Insights requesting permission to start build analysis, with Confirm and Deny buttons."::: +This dialog appears when Visual Studio is preparing to launch the profiling tools necessary for trace generation. :::image-end::: A one-time elevated request is then needed to capture the MSVC compiler traces. -:::image type="complex" source="./media/msvc-elevation.png" alt-text="Microsoft Visual Studio dialog requesting permission to capture MSVC compiler traces."::: -The dialog shows options for Yes and No to allow trace capture. +:::image type="complex" source="./media/msvc-elevation.png" alt-text="Microsoft Visual Studio prompt requesting elevated permissions for Build Insights to collect MSVC compiler traces, displaying Yes and No options."::: +This prompt provides system-level acknowledgment of the resource access required for tracing. :::image-end::: -:::image type="complex" source="./media/windows-uac.png" alt-text="User Account Control dialog for Windows Command Processor."::: -The UAC dialog asks to allow Windows Command Processor to make changes to the device, with Yes and No buttons. +:::image type="complex" source="./media/windows-user-account-control.png" alt-text="Windows User Account Control dialog asking whether to allow the Windows Command Processor to make changes, with Yes and No choices."::: +This UAC dialog is part of Windows’ layer of elevation confirmation and appears when enabling Build Insights for the first time. :::image-end::: If the one-time elevated request is denied, the Build Insights operation is cancelled due to lack of rights to continue. @@ -124,19 +125,19 @@ If the one-time elevated request is denied, the Build Insights operation is canc You will guide GitHub Copilot through the process of improving the build time by providing permission, as needed, to run tools. Additional permissions may be required to run PowerShell scripts. -:::image type="complex" source="./media/terminal-permission.png" alt-text="Copilot chat window prompting user to confirm running a terminal command."::: -The prompt shows options to always allow or allow in this session. +:::image type="complex" source="./media/terminal-permission.png" alt-text="Copilot Chat notification prompting the user to authorize execution of a terminal command, offering Confirm, Always allow, and Allow in this session."::: +This prompt appears within the chat flow when Copilot requires permission to run terminal commands necessary for optimization. :::image-end::: The GitHub Copilot build performance for Windows goes through multiple iterations of code implementation to make the build faster. -:::image type="complex" source="./media/build-analysis-complete.png" alt-text="Screenshot showing analysis complete status and performance improvement summary."::: -The display shows build time improved from 78.6 seconds to 70.5 seconds (8.1 seconds faster, ~10.3% improvement), with a note that further improvement is possible. +:::image type="complex" source="./media/build-analysis-complete.png" alt-text="The display shows build time improved from 78.6 seconds to 70.5 seconds (8.1 seconds faster, ~10.3% improvement), with a note that further improvement is possible."::: +This image provides contextual insight into how build metrics are presented after an optimization iteration. :::image-end::: After GitHub Copilot completes the request, a summary of the changes and build performance impact is displayed. The build performance summary changes depending on each iteration of the agent. -:::image type="complex" source="./media/build-summary.png" alt-text="Screenshot of build performance summary showing before and after optimization metrics."::: +:::image type="complex" source="./media/build-summary.png" alt-text="A summary view comparing build performance before and after optimization. The report shows build time dropping from about 110.7 seconds to 34.1 seconds, with major header bottlenecks significantly reduced. It highlights a 69% overall improvement and faster incremental rebuilds after precompiled headers were enabled."::: The summary displays top bottlenecks and quantitative results of the performance improvements. :::image-end::: @@ -148,46 +149,46 @@ The GitHub Copilot build performance for Windows can be accessed through other e - Button from build menu - :::image type="complex" source="./media/build-menu-improve.png" alt-text="Visual Studio Build menu with Improve build performance option highlighted."::: + :::image type="complex" source="./media/build-menu-improve.png" alt-text="Visual Studio Build menu expanded with the Improve build performance option highlighted under Run Build Insights."::: The menu shows the Improve build performance option under Run Build Insights. :::image-end::: -Clicking the Improve build performance button prompts GitHub Copilot chat + Clicking the Improve build performance button prompts GitHub Copilot chat - :::image type="complex" source="./media/copilot-improve-prompt.png" alt-text="Copilot chat window with Improve Build Performance prompt."::: - The window shows GitHub Copilot build performance for Windows ready to assist with optimization. - :::image-end::: + :::image type="complex" source="./media/copilot-improve-prompt.png" alt-text="Copilot chat window with Improve Build Performance prompt."::: + The window shows GitHub Copilot build performance for Windows ready to assist with optimization. + :::image-end::: - Button from solution context menu - :::image type="complex" source="./media/solution-menu-improve.png" alt-text="Visual Studio solution context menu showing Improve build performance option."::: + :::image type="complex" source="./media/solution-menu-improve.png" alt-text="Solution context menu in Visual Studio showing Improve build performance on Solution among the available commands."::: The context menu displays the Improve build performance on Solution option. :::image-end::: -Clicking the Improve build performance on Solution button prompts the GitHub Copilot chat + Clicking the Improve build performance on Solution button prompts the GitHub Copilot chat - :::image type="complex" source="./media/copilot-improve-prompt.png" alt-text="Copilot chat window with Improve Build Performance prompt."::: - The window shows GitHub Copilot build performance for Windows ready to assist with optimization. + :::image type="complex" source="./media/copilot-improve-prompt.png" alt-text="Copilot chat window with a request to help improve the build performance of this project."::: + The window shows GitHub Copilot build performance for Windows request to assist with build optimization. :::image-end::: - Button from Build Insights view - :::image type="complex" source="./media/insights-improve-button.png" alt-text="Build Insights diagnostics session view with Improve button highlighted."::: + :::image type="complex" source="./media/insights-improve-button.png" alt-text="Build Insights diagnostics session interface with the Improve button visible for triggering optimization using existing trace data."::: The view shows the diagnostics session with the Improve button available for optimization. :::image-end::: -Clicking the Improve button prompts the GitHub Copilot chat. This button uses data from the existing build insights trace results and does not trigger a new build insights tool execution until the current proposed changes have been processed. + Clicking the Improve button prompts the GitHub Copilot chat. This button uses data from the existing build insights trace results and does not trigger a new build insights tool execution until the current proposed changes have been processed. - :::image type="complex" source="./media/copilot-improve-includes.png" alt-text="Copilot chat window with GitHub Copilot build performance for Windows focusing on includes optimization."::: - The chat shows a user message focusing on improving build performance of includes. + :::image type="complex" source="./media/copilot-improve-includes.png" alt-text="Copilot chat with request to help improve the build performance of this project, focusing on includes."::: + Copilot Chat showing a user request specifically targeting include file optimization as part of the build performance improvements. :::image-end::: ## See Also -[Build Insights function view](https://learn.microsoft.com/en-us/cpp/build-insights/tutorials/build-insights-function-view?view=msvc-170) +[Build Insights function view](/cpp/build-insights/tutorials/build-insights-function-view) -[Build Insights included files view](https://learn.microsoft.com/en-us/cpp/build-insights/tutorials/build-insights-included-files-view?view=msvc-170) +[Build Insights included files view](/cpp/build-insights/tutorials/build-insights-included-files-view) -[vcperf and Windows Performance Analyzer](https://learn.microsoft.com/en-us/cpp/build-insights/tutorials/vcperf-and-wpa?view=msvc-170) +[vcperf and Windows Performance Analyzer](/cpp/build-insights/tutorials/vcperf-and-wpa) -[Windows Performance Analyzer basics](https://learn.microsoft.com/en-us/cpp/build-insights/tutorials/wpa-basics?view=msvc-170) +[Windows Performance Analyzer basics](/cpp/build-insights/tutorials/wpa-basics) \ No newline at end of file diff --git a/docs/build-insights/media/copilot-signin.png b/docs/build-insights/media/copilot-signin.png deleted file mode 100644 index 05ae12cad457ebb15227f832d38ab9d1887c4f16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34001 zcma&N1yo$Y^Da2JTL|t13+^t#EkFqF782auT|$5WL4r$ydvKS82@sgz?htfvnSlZJ z^85eK?t5?FdAsMp>6try>sEJHef3p!-}pD0%6Qn6*dP!HPgO?VSfd(kZInL{ZDAvnD0;SHT=i!euk>~4u^MB9itc(sb-jJPy$yU>E25Yr3p_mv z5A|0%ydCdmYfSXs8X0{Bff!IZAB`U@DDq!#4U6WVGSQU`ohg`&g7X%$2^{>*^UED~ zieltbnV^N@b;6^jCKvn;(#>C!wYU5R(t;!@lt=j!nN-g$09kJ^p6lUp|9Stz=W}G` z_95=Y#0Lf1{7T1*^LM$or3~D}m42rk+SBh>{P=mahWI`bUGOs!2(AZpb#*mGQtR59 zXA}GaXio?(x8HrUBfXjtr@8Cs73#D@n!o9B3~22jh8l+4X(A5LRs zEGNIIE`D>k*nCkA$i>rn_m1h`Sk5k?r6F=c>uLawd<S0`C=-<+QG4 z(SJ+R!5|l+F${Zp_(WonUX{MxbU9J2Stq)TjEr+*5xFTL5s{GFfeFL-ttENlQ#Wmt zQm9Q4G*X-RzkYnP*f&sIih_$y_Vn;+*x42hG7gS+n3W(8h&N{p_*)cYWMr%ax45hv z2-erfefsoswL7pmvg*@GJ3S*~F{O4{M8d~ODcC={$3Bs-ADUF>R$6Wti6|)If8Vs& zryX!Hu)pcpr9y1ct5zG<7Y##N=W>WI;!K^vx@`i>^Q_3Q=W28^65QlV5^ z#_o~1t_3Mwze@vUd;cOHejM7oqL@FsfXt^f&?Y?QePWH6X@2X;^pY?ca);mP6O^!x zRMRv(b14yGEKat6r@2un3^)O06D1aREfmhm68a?(8%FPiK<4~76ZzGWRo255BVuQw^Y7Jc&c+MX({{MNSNEYd zVrL9YRE}K>_|O6IU?dL1xXoeX<0cbm8IEioEc~aIWPrq3S*`&prJ$t5=$@V%vRA^I z-h*{wWg>LPWGHSY-Tm`HKY=w^kUeCyk2Q_<7fMFRGYI5Wzyt}@4!`!k?U@BNT38GD z)v>Mu9B!xVURmr#(Br@BFUb!xH(C2s#c;4jPKK?Ew(s$@(u-P%q zCsqry2&wP0fxP%zoiBcpJpUdVp{n)ks1M3Z9qSbV#w*AM$s{2&@}uUE17 zTu_&?>B_04&-@Hn>IC|Qda=TGG3uhtC%q~m2U;+hJjy6EkzOcvO_8GWUY7g#%4*<7;vzKcjq)K z#^NK{Rs7T(TlD%oXR`GEv;~p@*uv-RK*+B;uvI(ywd=|(_wcP~*#TsRu&K`#1%9L^ZUji`BH1~_E%k}g(hqc1DC#k%~O2U zTwx!bI1L{J*mHCDkY2^TMP!F+K1_5I%Sqae5s`GBL59zrzqCxaZX9yuoI*#^4V&$8 zdO|oTowdUwc%=L0#1>zMFDEWw=CqUM%+>XcxQf`QAE;wqA-Q=_ycMCHOFEuC({p9? zpHb~&eZIBJ4zFDf8*|*X4k{;bI}Z%1w-gx12~T?Q-s;!KWL|E=eBs+>lJkHZA!HgU zLl*$*);C=Z()j7li$KYVV+bW3K{Rca&X$pf0E{RTyF&+ZkRv? zc1%n%QJNwzgZ01V{5>loJ9DA~iGG|}!nb2p98J+V-IQ|PDEV?x>Y`;cB0vKIb@nbr zzs;lnO~HU&?+w?~1?|C>EqM6`AlY@v7O44oqR+UHbe$GI(bz6l#K-L^*#x<{dwMqM zKA89nKfD%Luj{OL%tVMdW|_Th#>-)ri7&ptgYO#gdg-^qiz5FWEQyq3$br_E(M+4v zwL58`DCv(Gxz~H!4~KQi+e>W0w~Whk(i*Aa^oUhLP+vn@8I&05@`Tt555(Ewv(Nmv zyR2whukOAp@|+eqEMsr2Do2|3P+lOa z1jb;HrFyY$D&0g9gniVY+uVYFXfBz48H*kIgYL6IROGe%QM#E2W|oJ?18Xa96uNwT zRqg>|UFGruDQqR{e(3GCej9$5ORJ#w(Q2~%+|g8&Xyl7K4JTZfs>8?TRs0px}o=t*5t?1({NO$VX}IlIi1J_91?(CIodXp!J+6xq&d zq+z-!HWp6n)+q&CTZ5r?{m%w;-djN;J<#7s*=?vW!0^ijl!gm!;i6&R5T@X$_`>e0M?$l>Q{|kG69HD`m*9tDeQv$Rc4=xFuhhV%q z&cvx#^Ow|*!_Hm4<&$34MJi-gQo5Q+I!O0G^Rus9yZ&}kgr&hAre2cMc=n!O z4&BF5NTEHJb)gicwBE%MbA`Y9l_A0_8G;%E9xJ~NtJ`%5O zOuZ~2qGRsu-CQmA`;>o9q`#X!y46Y^Mz$9897(!wSWlJw{FNXrg*5eGF~;UutMCTX zV)5gl>w5h7q8Jhv)rS{5XNEuV=#q#AH~A#((-AGxR<4`vJxQ&vm-i7rsZ@?uaLa!W z$qX$gV{FFQz)nSRY59q88adX9MX^Ie&qA8&(G6O+uDQ>Dlq-|Heubzf^4o?yf^Pr@ zC1fdd!&WKhK$7%fw{+uhfoCf|P_Fu<5)|~8zYrw=FFUT4G$bKZ%0Ko#O4BQ36R%5J zl#nYpOuZ~=Notsv+-Vwq4igA8bVez9(v0?ub_w9SE8%$-n8HFz=FmV zqC{jOZCJ;PijAl)1FR`C9u8k7ukJIb)(}1{OMVNM!Xw7Gk_+3hB^(KqlsooE*0D$$ zf{xVdqokg#eV;o0BgJ61<%!RlL^Bw#K1S#V5%4=qfbazy*2{x6Kz1??!qRt3^r)t6 zzZ!^l!!p9j5$C2s(pMqL77nE>@Tm3S(2&G-9Xh4Du#9q1Z(MLv9`fSlz#tD~Xp)Cz z>sY@fh{I?*+^$?_Ts6f7ts$ zqMH!K);IZKTf}A+er^Es__A~M93YI@SKIPcr^%3$a3)ouIgckYEyD62`uUFSe{JyM zn9!`JGtV6%3t!XX;%dow%JbEkpZF-dI%j_d4)BTpdF21!=1b;+Q_O zT&m9y_lWhAljN{4AG^TAnni6O(Xe)t^@{8ag7f23OGZTu$eDHr=;b(N4JA^QY|;1@ zD&I(K93EC_uoR;!(3sXk&?fM{RafIm_#FRiB;jypV=Yrc!2z-H@F=^O)9TllN7DHq z;-)@~+bJ^?qyHYAbkNQ#eZyF}#BJIYMetd-WJ)p>B? z2LR}V+9-X1BdyS%<6zeZj4d8M(-plqtn0NJ>$nniJAISKMnFW7+>fS>;(c|X=d|=7 z<%4J=o~t#RVzDrg!#rB(B+HpM2TyeDCq+-8$WZ&}kbGi`RYWJd30u@8o7s2D40pZfJR zJI>W#bvn0P!=-y^_G6B#OVTwGbfR*G%WkHU#29v4teVEMI6)uPw?Fma zb7ny@A_6(R6|7{uB%;Pr^|d~q)}WeH3W zAt~j@z`HB?t)awb)%1UWz59swN7mKxAWQhp;@1kgy1D{FlLAln%QTQd+tkvV6Hp4q zN(sPTX5?8vCgg>bZCx+9%KI6X`?xhXxvrT5LfuSa@ncqNF|l!f=B;$tV{D!8jIxOz zbVbL+9Xz4Z)f-vaA|FB~)q$0i6d;YCHQjxg`fn_cpe|{(dmzt8(7UBeLDv@mj>=fT zGr!YBjpvEa{7xeYNG_lK$vWNL-96E)9_PawBIEs$XO6K_`AHptot+&`x-DExyE2-0 zaqq>so+k!Zu9Xdb4f8=-lx_2YQjVXhS1Me^kkz5b9b^KFVUK|XGH!MF4s<_1_khxa z!U*3(>E)YTph04=uRg^ckY_seJHTX31hW3*YF#b{I%4Oo7nkLDqZo@ro*L8MKy(+13bw+^wEi=pVD zBsQoFk~@pf|7n$&T|rld7XZsl&3uFzFn_0=<8F+M|M8-oQG=#PT+eggUD==Q7rWjP zf%;@J?V7s1Pm}W@xBFdXsd;kn?H>x$seMl*(05iX2MmgVcRr@HA4WA4yosMIa!9@G z;=P7sx3=+txZmGS+qX1wn5JERsuJYp=Hr<;aR;^F7X;+9I+*($tl~WSIAm)h#gX38IKrR9x%_g>7y=gBCgrkB!O$ zMJM1MU@oag+#kGWE5)@0gIHEz1B4pwyOcRP?g0JCT%rh({o!bf{rUjn41`Bw0ELowkkxKl z3|y8ptj>qlrO$n(h4pW4_Md}b&{mru9ae3rz9%CW^+AYon|U1VmACK+;3#`|Hb+Xm z=l^;-1?dFF7biUYy`&cr0bP51Q}aO9`*2GYa_gVzQ%}QyijBQ+6H#7k1K<a$Q z_3EYXB2GCb$vYgQ%mN=V~H**u9j{es1pr13Cm-K z|HSG%`%g_RZcm)|>ucEBvD9xKw({9P&ZjWep~oTUvP`a#BixKH^0jtjWTr|q^tfx( zgb4H(2yu}ZcugUL+p#n<9nP{(*zmVh!*O}~8&+30l~Jrky9e41$&P5?wP|y{TM84F z?{bL5?aB&SBGufV-L?4No==hS$GEEREm<;vzcXV!-WcTBlGc(^*iKDKM!XKflB^r%Wjfyx5QZNvpc(ba4 zZo+hbbmn*B45GY-xboZaJelMsjhq#9QqcOz9H~1W-+v-4lYG;~jV~r=VH4%@+M~2r z*A{-~hLZh4F`BhavHKmg)iI4)x3nj&{QcLl_hCQ<@gT!-uGVVl`h;VqpwND*G>%ph zQ>tSP3ji-?kEa0g{AP8EU?LJj43(5LmC35_{@(pD_=aNEfnN0)fTl!bRFN56#&&7m zM#ce>&_h`Tp#;F8Y0fVm9}K>SU;-f_Zf}JuIgvX2w4PV6YLj);q}3rB_$fzN9~5=3mj|WE6y{X5C$ya&H!z@RGXt>HvTT`p2 z*Vpd>>n8&i*WoH#Z3RC(XT6xAT+MBw&E4h``L#;Au}oa~!E`^GYXad65?XY0IzH!b zF?b+rkcQ~Q)lb0x@I`~ZdAR;$n)A3gZ;Fg7C-paSiLWPqK5^xFeIy1gH1@teGNK+C z?w_y-sW`{!92p(eeq$JyJE&Y6$bnlx$vO|0cSzv0^yR)_@;Q&9P1xK|*&e3CB`_P-AXLzEnc+ zS0kUT_8-0$r7OxaQH1kXy(@DwJ%_2RDSb07kufOs*$PA6&{$)M|$PcFI~y4G#C*i_+dXt_JSw@}i#;&%*0dKWUw z{|NDgbo*>g$0YeKhj-pyP5_2s%yNHwST}HPJN-@Oc+lW5#vaU2Z2Tp?o9?Soe(=(Z z_owu*yE{h=gKR?N599fY0P(K$=GdD2t_~1hk?LQY0M#^X@JRQm*D;fm`zvx@d*~4u z9~Z_-XB@r%c#Ouw!vojW9i<~O3k7Cl;^er8Hjim^G||7ig-O+JrBbgM;5v4*)nBc` z(Y~Cd`7v?|KKH#zyeuD&EB|Lm$>C=bRgRC1g|GByz2BuE0OoS%b2Q&hY-?+~_$>em zFpwu0o&VgTo%5~?V1j;beW0k=XooZaV*y&Ps|<%X|N0E`^E#LYdN4=53JF01DEbtA z1g`p<2J4wt(JyIR=V?$R=%Ur0{8`)m^-`0nf>+*C93Fgf^}CZ!f}52<0!kr=ZyGIc zF(@cZdIw#>Ni$U@dCbhr^ACdrv}h!$Obo@ouDG;tlgNOhz8d@|h8a~iV-t7(j6B`RA_;uyAKgqnkLsnQ`j=4KtFvlX{4ZvZM z*2${3hku-l*AsTXe8i6ZFYL|%QVUB+emB7Vsx>BOfH2^7JdFiiYE>R3u|J<1K#FTS83$T?oD;JGH4AEYL8jE$xef)WkRR}Z)`U&zX~ieWo8RI1Bty1 z><-?)w$`f@nFuh~;{VE-*j~QukH#TuE@|67JWQznn;-O&^uMAo5*#4*)Z$+vH&dTE zrz&&yD=nEU72A%I0<2gu{g(fUN!Z$wxm_K68_!JN0Mdd*ZFVR?R0s3SI?t~$w52YeU=CVfb$WgdEdTW1CoRNclb=Y*bb_)@ z4#4%FjK9`QZeBaBoK^>eEa-W9dAR*z)60MxZ1AZv?a=4gO(N1o;u@3Y$s`{$`0eeJ zixE-LBq}T8g3W>%$qfmG=z(0gLl#JYit6{+lIUcTfHi3g%8Z%-l8!19mwx9~?>=bj zn)z-74P&MBDk(!pzmc@A&%yM|T&Y0P@84P7{~awj+|1PfCz4;!n&>^YM76fI`Uo;Q zyaJ#j1to1b3ZSyX7Q!`b;3u%>|LP8;!$4+Z+8*>v{1}K55v{Ev*&>ekuC6>!u`n^1 za;vmdq-ch#wJj)zjY#M4m1v57BHx=Q2hIe9uB*h`5y|g{x>X-8GA{Z06Uy zZ`vHWNV}wvw4|RU-hDw)0X7wnX<)oDGD27fBm?%OujiTzv zAbsjQK@kOzxnyUp(9jMt6gt|ZGM3=5X$_3C&I%VUNV>fGXTutrTFgODYcV>$8iF(@jEPiy1;)1rN2kNL&Si$4bL=j%Szrl-OzlGl=N zlTRJgQjO`IV1~FZbL6LIgD6`Ca=k6rTbNT~&yO|1q0(x7S!JurL*8B3B>yf%VFe0^ z-d&ygeUULPYC4Oi!@o#0h#+mxK%Fai3?6vCANrSE`ZUl|GJjIv53efzezMbu3Y87a zAKM$2VfQxE0Q1S_gjBL1>$_r*tzYe5>ji^uVJnFrR_~}CdzX^9s(@`3HMlD@BX9oe z8JBc{7{v>@Z28G;Jt@`{=`A!ShFS zq8&maKCZqH*nQ&;N@#xs2}deQJbQ3kD)vEarSw1fvj)QgXH^k^Dj-FpRaM-)!-bc{TT;Tj-4|={ZyBqc56t zz%i27l_R?AjPwitwNGL7hOdJzAbx$xch9t)ZQQhVxM})C3W6eSMj%5gLpHN(1q#U- zNwR1}?JR$O!MMG#@J)<4jlr8&Mp$tjH4X1yGgjh|n@)fJ5oll&y`!?XLKLb3Lm9xe zdw5~=uh(hDR1NVib?A@H+&HJdWBWf4OX({4+A|Ik2 z4U46=HwsE_jYqeRQe>vSMyll8u@4z$Hq+6@-Jv{_UWgmi9I;{eL-wW#iqm!9Ws1M# zm6PH-@uOpw9isJ1bhHsah@vXg^AET&_X&uo&#fxobd-AaYE$uO;_jrq6jZ3utR z)^0-MXfe|bfp0#@X!RBP=*a|OJ-H78osL;DQMvd;C!-9|Gw}JAMP5Qv0ib|WS;e&h+W6Umed9?@9uV;2`{hgu;%tVq1 zcT;XIAfgqBYkcaD{TpL~HhTH{+sQD$KW`*2=FsMIbw2XjuJM|QM|Yj{_8me#_0j1N z=-&20v8<#c%?dvC|NZd5elyO)_2b&8oQ*^2IC-?esm?Z@V|TMB)aGaqvRU`|K)FUI z9{yu?OA&1($=3Q_<{4kW9}E?ljay4g={o`Ghpl&iR{U{oS^9KC&`4@o-PJIOH6KJV zY+|G%d%5R7Q6DyDyY1`J_B?KSOA2fz!#sL--j!uvA80$lmULjD@dcJ+((TkO`{utq zd4j`HGMjbUcRlaA$>(+8+8L2j@G|IRbla!3>wC!J+ZbYrl>4d`wm!HdHQSfR!<94X zsFfmBk+;8i427;9H{ds!HYeIUs`yjPxg&S97G1a0=C=bEP+d#`&EutTC&wzqP~7%A zpUx%vboZ-PXV~sfBEQY=&pF`_gqnsTqQu;Jw`gB;$kyv1pMK68Ex8Y@*i@6S)(hEk zK3Ht_Ho)t5;z?{f@AtI)Hlum!dp{z5r@eqj8a^y;`N53tgWZP;=zi7ztV^*u?ZW#Y zolqe2@PY-h5^r;^nZPlk$q_|C=8?&;KLI`~qo{;pzEWJ^dsq928A^FZzN#)`<*UuC zWpWjqRhe91TE~}p>X?7Uo7~dfSsX0nxES=0H3$Jlo#J&~?97rZ zW;G5(;Z3(X=`|nh^~q0Xb(o;qD%BWlvaj2kuvFLV*%SJQ_c})yZwk10_@c8Y+Ch38 z(@JT-bYJCx-(a;p81eVRHWNZ)cx&ZliJL`XT@A4V^R8o$4@ss*nAV{LpP$pS)x4+s zyOZa@%KeiEX71K_|2Q8gK6q)V7<}&ZKMn-Rs-+kI!p!Co?`PFNFM;0P!!;wt5+Yso& zxVq{#um~wNidB)kgl+jD&aB#a{*oE|koiURxNMU*WFrlo*j**u0lz#NeIPNI_SSZ% z?)2SW49Q8d@lA53LJhm{Ul8>p0(H5A!!W%(erUApNom#=%+W)ZGq3SJrwl_wqx zXyH8gex$|c{ZD_;80F^-ay4S9fRAgXF%e#Pm8VVqkJpuW{DGG$UZ7v3~c3a0baDcT&|4 zf;9JKYV&fnkr2fR_a#WqQj09km|jMU|C_rqmr}A#NgtkDka{|CnQJd9!ttTg&u5Pw zm-2b6c3sHFP}Zwh9#EF1<<5ZM_E*$z@AHVn>JzzI`g5}M>r`R9ux#hFQ_wc#0|3Ho2|P; zrt5-|qTW$*;ghDFxnv8cb%meSUY z)??zghaM1UDn8vXE5o(hp_0usvV9i6YmD#~+z#_ukU8^t`z$r};UmH01=riM)ySO6 zzqyR68tx`_o%D0OZq^@!r}2nMdXM`u?m;eCvMM0Z7lsd7(wauDQf5O9M^c|5yGZ1J z>k^i(R;xXk(D4B6?mPNgC{g~F6ntMrFEohFIbuZyec8I)XNmJa=`}n%Y5n}=OVsua z+2*5kz@%}=7hCJQkb4vM>!Zl49F)bvcC(HTO?N4+YnBM_Gx2J~+>(l#n%ra+o#krf z6%4VX;%_m){0{PnS#@z`>^=I%ZJY5JerR27Qe+Mp<=w4FnoSGZA7Y*_&WYWPVgvIy z$_#TCT5X&e*?>A5|Z8R*OC=$ zEkV2yzeZSV2xnn^2$dm#I)*aUfys*B}m)w?Wfe*?K_9QNn_$^+IJTj;9SU; zj<7K6BCK$4JwdT(30o`_|W~b7PpaVkC76dNuh$k$1&)9=}|~d#EyEuo(V`euWbQ z$A*^ok$$c+i$HQ0GZQW9*ohN#=6g--7wmj_Zc&A`pE<<1K9Zfuy~YsKKhR9=a#R0_ zDe2JO9QlJyJVaAUbxh|(c@@d;vQCwp)Tx)7sg88-0mebTrfwg|wwCPL3z?CEHzj?I zh*FL?Y9*@E-;>zTkfbTcW#j1^m!}n(+Urb>Of> zVVQIdg3vG4j*GN|#+tZuZB#=Lwf-NzzOMvkdOVn2U-ZCb+if>Qa6|ncq?a99d79<6 ziM2MkZH3a0=dHR=%K`QPq?6jjLD_=_GrtDBpxJ4WX=K^J6Ba(LCNzy;6VNL!K)NJk z!lY$2^>a?3d(-CdP<_=Z1&PbJD7YJ&Jeh zU?2HtwFQeq<_?ptOB_iHKNOX3@ZqD^sPn`*PMdDg*S{lVDOx}Es-~(5ceVZKmBsu5 zOD<4?39GUEKz%pYn)P~D48Qe)@x=nUTA70;0)Ka7dhv4s=aE)sG$f`4S}*&8@4wuM z``mMD+B`z;tRh6jS8qU@$H!cC9NxVNQyBHE$`7uGt3;ToJj)Khx!NR32^JkuBnw*h zNFAIz%cGR+RtHE?vp8OtkLZ`JCKD1y?ya`k4ZVSR4TSBPj}Q=lyxC#rk~VgBJ1I0j zo#JK%2_8oM?&KOZjsZ4DT6+`qNOnCemwpD={O-=nL!U^U#x6p^V0;A+7QZ7*GKu&@ zxp}~B?3^d*Ox=!!`8xAt8#QdIcL_~5md$rwI_5W*;-c6T{KSc` z+cYFH$mCz7xXV3jB5KQA=B6r;R81m| zZYXg!pYn~gZG{qwlBuS((X~RJZgA~LRGl+lBSrKso;KHR;w53LQHUw~uZn~5Wjq6( ziCb7aJ#0U46il(t?LQ(34(0<&!$O8cfSx-z#_u@-gbjuDeTp8Vx-RAF+E5!vLwej0^K1`Po zf4)2x{9_KYsD{61p{;ZI^XAZHU~J55+;nETtOnu`=-mzH&?Bv-NY$oRr6Hm;wj&9+?D4DO=J?*W^L|WzE643F#klOeysU< z+u7hMAbOZ5H~ogMtsE(Jn!I(53~$ugrG;=>g~JS-aYeMreCI;r3m2)EXj!0KHESJ&v1as~_`1iZnx zn@0jL@Ts!O5bH0C*8|-}Y6ktA!M~;4f8Am_bOzqh*JFj{xX9OaZpR%>_c$Q};DR3f zI3Q4B>eDLjbx>QKgW?j|?0j)^|J&ES-=n7-)N2&d)P;gHM2GM2cMP*_ zZ1yA7={#;w$;t`!gY-~I-ka{=EZiNmumY1hBqua~CqYK0$-}+iM+eg|j)pNt@tV%b)?*I>=k{ghm(qa~_Jx#7 z#*neQU$^Ahp?5AKp36fd>hk8hqMkOXQ~d9lkIaaGOG(PR_6o;deGg^9P7|vS z4ZC;u;}R2QBfn+B;p@^wc6gxg zUqwCaWI|S5k^hqW;(vUl(X(1S)N~xn`uKO|fe3QbQ!}kTJbg!`>GbOcBX8~K)vr33 zf9#|zTH-{7FD4=n9i6q_d6%dx_@%-yL}kq$x*i@<)ap1?E?J@Y!K-1lYFKV))gte5 zC)JgMdf}}5O5dsTH*H%Dt(lU8t9srDm(s5qmuvaQmQ!a=Jy$vwc}xaN;hY5zZ5<{c zR^2UE`Kg7l;PR$h->>Bl!3gv%Ar0!+u9MGMa(PCE^5w_t?7p`I^ZxZf=P`@EDU*;X z$G$*&?ravt6XF&!!`T_O#R`#-V%sO$WY&~8r4NNdhU{in(xss}Cr!VGgNiUs$bi%8 z)fSk}iKj@xH5xZ%BI84>*_Lm!G&jLoYyFushV-fqpRR+CqY*<1Q@>X`keBeqR*&1h zgID%es9(W(<{S1Uw#`x3SBUNd#ZFN78gRhw=RsF=Rn?rT4oS4h-BGMucf_yRRuHuL zA&f{ky`#TgYJjaTW;{hR(qr0Bf+9}7cr&3b$Hta?`A0CN%^C6n%|4r_3K;u#@EwtK zgJi{eAc4~5$vcsxM6BpXIHvlKqgF@vW)O$Yd&a>$f2qqPt}_&NVTDSdDX8@5>~`IC4Q$?O>FN#WLjY7`=lTiA(i$u=hW; zsEUV+uojyf@zw>yJl=&!Qt;3QfWpT{-Fp`9vo1G5A~cBc_0Co$>*MH$xFp)JRp?Hp zV%F$+{eA*ZN>LN1;IS}y@Dcal<*^&usHo^ZiD0_dAT@*Ta5A2xAsua+iE=@z!-qQ| zpG+Y|&sY2RW*Q>RN=y1-%d2J|^<2B+)-bLkdT%I9F+)gCBx#WgB&^St%Xj9*PIzCJ zzI6(574+f!*jLD)y+<`qDNXWS6t+U@wA@1QO9VXlb|!Tj?Gaj;}Y!BN>UcXXzs`OP`1nVL+9u zZ_{ynk5qTc!<0Ru-YHFzbKU&XWY){_ zij_oho-QGXEB}=>M9}UjWm8WrdZ2GiLtW78^ z+0BxBrO%}Pt$EAbuFg`w5=%N+jmSeAS)%T~=iRBu%V-fk7G0|Owk4hw8UlxKSGrHPTb9-E!}nh{p5b!^5G7Z45Z{-S z@D=(73JPUz?5)B>3h?$*ywGj$fr+yvyogiM^Kn2wn*ADRIzak z0h{k`NAr9dmcZy~j=}QXP>B_xLpY~2!c9<)Gnks2X0UeVg7-cVphmsn3l=UJ1a_;5 z?rF*QTtuo4(W?Y_+UC_Lg~iW1=YkXKdd;KFzRw*E%@~AF#qyudfL&jRiBSv>5Bot+ za6T8A!r`btw`O{!la4DR%kSW~g*phorJ3>y+;;oNp(UW3&Gj=xP%Q>ak2wBHjhKEK z1WL|p9d;hU)Tf(~;9S)+G&d^p!oVIY^=bN!VqtDxag9B%+q|5}^dUJ(BB^O9h#{w- zc7M9<${wtP%8cyT&3)h0v#=|@FCKX{x5oM4o=qjp;EiA=-0FXL=4-WW7VXsndb)j4 zLzo?{Wx;iU6+#`+Cgx4_Kdy(%t4#v7iWo97<&a3ecQza!)}38dnw|Px@Wrh@F!j#D zQIlvSN(1s*ONMCZ`tK4}Wlh5x1xaj0Z@0vQ?wh;J9xSmqgOCXy=fq&6eLmdA0mjzr z9Il%cOWX{;O9n8Q^GpaPXti~{=jD&nk;ozM!gS;1Xc@>OD@%-tu_bqrUvFb#a5r@h zS9o+Qk6b}c_`XfReD@X-Ei`kkfXTm~=hpj=Mo8c7`?-%(v7gUozJU-lF zJpb|)RKQ|ay-HBk0MsFXIy7<}=?dTG$>`@6gie=`J6iw-`a0=M$^^KTMm%acGM2R~ zMofLqdg`MQIk8J{G%e^=YS+Yd{;-PK1==c=47o4*vb99pEv(pV*A18U4*ehZ9k$Mi zZ;<48D6?F@RxnM0HWW znbXRrdm+c@$7@li?`w1ZpCh z{voJKxRFepE&9}D7QO$zpnt6whW>-LH8ebpsLS}O-_z4zz4sA@qjZh0+f4_?=z+?) zL4KqDG44RVU{zY|_EQ^M2{9u3&6AgtWNYz=6H2i_6+Y{%9RVhtuTpWEU$<<&P*NK5$BFw(R@53ADGAU!_VSbPu z$?E-{rb_D1|2hjz`d??Ezhv&vkOj>>y}hUx`=5gy|Kod%z-xdhvEN8jvKl?ee4vZb zW}TC;Z?AGrV6%{rA5X1Azieyci9h=P3kED#Om=Gss)Rw%b@J)_sS^TGWQBkrTaK}k`(C4q0Vo0n&d>hxaFM=kj0;UN8(in;}-c^8$5PmQp*uGr~0PNvNQ)nVIb)Zr~D0w%>-*#eHv4*cry&}SVVvFpW6U(1&=k}(c|+b63=*VxS-9@}`}Z+7mpUaa?L~f^#mfV#i;N0JSc*U6 zn$s+c(bq9F>xX(vqTDYoG#N6kS(voK7SFTBW-qNS&TIDfbs}rv4pU?Qyi%S^zW&4G zCJjOOC&wx4`a6GhkjW60V5$zo zGawZ+zeDk%xBb;0y6ZTbJsCmMqr0yI-WIOhHo57a)Xt@aWOJMcAuGP^*z!9# zKXleg&#ODWKKQKFlO^)!$NkSVs8T2QWd@ic)?Ui+#vy%SsCugWaCJ<$+}Fun3D};{ ztTXcsI2<`&>d{>0l4ow+Rja1MF@R&)=45p!4x7AGww+DvyfR;~oqh{3pf$+Xm-gw% z@!dJ>?eS*}`Tl!&m?)Njj`XT$2U)HU8rh_{Z|G^s^iT7LnUpWB43(-i-eiK)ewyx$ zNC^v5QRfbLwq1otHLK>E`sAyhNs?hg`--z?X7QAD9W;a_2`L!oZ&2Hh27<`Z)PyJd z!pX}!oGro56o1IY?7LQ+F(kAb$lEzJlA;nO8%ht~y*_TiwKv&`6L(%v`Pt!O`er}r zTN6RGZDMv-)UguaWG#N4u5SxsjEf4QVE zo*Qi_>WdfiN1qNNX(~cnbEC#tlHt=cg0L=;%xjf!N!q%K%d8h(*gIPHHY>Bdl*~#l zS=?|?^cVdrMV{o#m!1^gv5(DQDJ@FVVAf%%#Y>!-BULM)ZD;=vTQ-xMxWRNkhzU(P zIXx%FQsYx@ow*M6x++D$z?Ji&CZ@j6$Kp#N!u~u$5{YMGaK%^J(jKN6V4MU1{Y>CDfeAWSR z$~dfjXf^esjVfBnv>KNq!vHZ@`glipW`qdRVa)V)vMxyNf6mEC)`MVFg5A{KF_oyl zre%3KMJvWn_Cjy}?fQjb1uhwJN874wl_7e$&&ON@u0H}XBoJ!`E?wl&K2r-k?2dX;ZOL%KurN@Pacz&G&Rt%tkS z;6u$DbSP_pS0*@*z2=VH$>vy;BerFHd7?rm^Ke8({6bl8E;#`a^}DaD*=)ia`dp&` zn_w>S$L)1g0>8aCt&EX9+IZjc^Bu#F4u3ksD*@C6UQ9y7suI5B!%sE?qLsf*a(3MI z@hI1rV`!$30Hkpvum!MJU zha!&5kcWEe_n@%J#=?s>hDsxJ#a&r>hFK;{&G9$52i3W-UzC50N)}~t-~YZv0#U#E zc+fuc6sw4a-4?W_OM>wJ0V7vQt9x}NQK6{uTIt4?m|FZosGjBnJ6}=vpU9;%hI`BcT z8@C)gozm0i_C>dn^|1hY!BDhsp!^=EIX*=&my?Z zp3$=~7nL!G+S8ZPd`+lT>p+zKxUf^yP~dmcaKW;UgB}#y5PGou9_;jr|8?ndk;4Di z=kbzHPwT`Xy}$T^9+w1zKIV7La}URuKBOX4s&Ts!ZIT%?nZ}eXs2Pq zo_Aio6scr}o}TWnyT85G-g~VN7`@0-rw`^Bd71keRi{fgHW+FxV@Zt*T{|45w$Dr} z=xy%Z&2j>vbFJl^yAhFO5f+eSlY+AR^j2@}!Uq`F?qD2sw+m>?Q61|a6`7&7xSg1b z(<{?64SKaQ{N7}9H@PS=hhb5Byp>$e_%Le6?q~POLGoo$x1IBxFMqfO)egyha;5eK z6gghDT7+KS-rUguL@e_cH(#HLxX^Z#RGrd#MW8b+mAphOWLuV_hx`LDs1VHa7kdxP zQLnejCptC7rn}5(!g3V|uPYJEx)O&9dC0-2T|Yrmx^6pRZ-%~;qI+JD1P_uTl+_;44gkY2$I0meSo^)Tcgq^i z47ZUun$APGO|*r;6qaYMpP7U}Q?jh;)Y}{l-XIH#DXh!rLD{Mqd^`Ike%>dBGO^zS z`t_6m*clbc)!|Tebg|R5c^_KhP}7SC;LkGHa^?pZ7bWM{20I$l;y$LF+Nv!Vp7j>W zvT-7VuL_IW!ulNqzu66@+}`lAElnD)n5I-pw3sDaX=%3Hvpl(;{c`rb`$-Sk@H5ah zy*h8yl7m%AvHObo;d?g9p&CO_dCHJ5MY{!)0XwN79V;r+2~?}SEmvK*7&gUk(7F0& zPtUPQU4N>^4v-B3U*6!CzKrkVzFEVJwNwOitCweq60d#`TFCx>Ub*5pU2$zO*q9_P zE{+qQ`E5udqw}FoV0$Nk^M0xyc=U@&c-Yp`vxT{JP((OYwglvOGp3}}j@danyOcF|B&mICV)91*tefF#!VpkOH{;ON+l$wdNJ*~9M6Q&xmU z&fktTAW~J*|I&^`M#TyTFdrcQoNRPwRl|zzUAAthHhL=jD3}*HSu4%ec6PNOi)Z`Q z2t`yb=WPd=TgXNnuSGw=E-UIqT*!ia3k{~^{vfhWf-0UTJ^|o>r zb>%jw{`(^1=Q$y6Gn1ghWHjOX`BaCgnH08E7i^oOW=h* zFcF%ndAg~j+ut);15-cgsb~AXWprl2O>|Sa{inevPYDZD&{A7b^AkM0RLQaUNU#d0 z@*G;k(NeLMW$aQ|XNzVdAW+cGPz&XthaV7{s7f-3-(8;~j-I-S$;zU&xTS?dAF};FdkP>X-~yICTWR|26G=u=`dkVz3LYCULP;vo}Q*0R){c7qv%EChbC=yNxZ8n^EY;Z~6U=;IOHdKUb= zOb`G-e*q(cu}RSOX6}vWB~1a@yP)M|11OvEIl9@>3>5;JYIsnO=v*qVUuNt%C3n&r*da^$0MB!ow{ALgmR89#w=|yty&!GgWH4 zvhhlPr)a%vP$x_n<8M$X;J@=lJ-sEaK$I6gmkIbl)cS5b2UY^q4U_adzJTrfTQJd} zS+DyKr8UNNS2JkIg#C0NQ#46`C}e<{2i z$IwE7ws5#~hZl%ir@bCzwGR=?fZpx@7=BKXC?w!A@!u=rz%bx*8f3{{|0u-&-!zl|lX=a!(Own zVP9Wg4~~z^tU|6+Grp0v+5iw|B|;@KJ#_g_6JSzxB-K?vlU4K|%4%j^4{5fT+%t1> zKy9Pd;=^x{Y(92K7L4O500LeI9Rbh7?+rT3z-fE!*A5)-7U%qm;a%+_acujnB69x% zBy>UK(0afliY`sSqE|4~H!-VCzYdE#i|gF;Mv-qwXn(JY1P*_w_{R0`?B5fvACW+*sYAY&KD$ zQXTc$Q#5BENUukfXa{G?KrMGOAv|TY*%^ABv4i{KMM$ZBh#|PGbvKK9!?yZ2OC?hB zsnW`?HVbuMg>UdYUrCD8khYMD6|`|-@B4^e_8hqQ%zZS0KcN(IbmM`cDghXo{dLMH z2$C`~fLLz|w~4Ik|D{P6E`IDQlp*H|`0j2UZKe7<1N`6FIA7&3^b!4Au#L8I+EQ1ra@2 z*$foX{x49I^l{*EBu3P8ON<=JPDwvBuJ!`)Q^55bRZHwWU4_7ot_SN04}YGZpdj|E zV7t@<7pEN(K?=J!fvZ6R976oMyrNV#gG2^DF{>*o6a{2c=>1ujndAr3k*PTX(+>)k zcAK#|H1&f2h(o>}%C5e}L{3^_!dA|V{F!+t?}k>{|3`m^N{VKq=j1d^KRyrV_P1C? z?aQ(4A3B09f=a@l2@1`W=7v)Jc3cW92DNXkA=2Xb`c3a+IBf+ywCc|6#?9Y-ReQ7# z;Qk(uI+*PN9SFwf;MS;mo=2hty&%hb+B=!jJsGqy3<&rUpac;LSwRzK(o6zz^~rr2qME0^*hdYljd?>UyxW6zZln4vej2)#NuW z4equJH;J!hv{Lc>)FmWe6OL#YsBPBa;{b6H*t)wuOXaePof=Rb&k+G#uKJFrZwogO zg?tlAHXB3YrBA$fK>7-+wBqC`&2}3aA0H^&L9RCwi|04{`ICHbh)q(JoZaocRjxXF z4ILTruI=kktUB1V4Ur10SqmykCIeuGJJQ??{$GGr$xF=JEd-P|8M8ehL-7P5nuHfC zgU7!66C(2d>frS#@7jm1Pl#9h;PHwcU>-BS@8pV~CLZ_adpY^%BZ@WuEx_BG@xM(P zR2{0khevor`nk#c0vFq0XfN~Mj2&it{DGNVhz}E;JiAE%^VKtJB_v_~w~~j*6V^DP z^0w?&^NKsI`+@()Zic-(mT%HuQHXW$a0b0s4@iW%Cv?LQ-LlL zSaeuO@^8K@r&DgcHgIdIkiKSdgLxm@U|c)3oe?B3jm;Tm4UzZU&Bx3JPy~zo1~7vA zFhKd_fQj}6AXW!rMxY97@89Z4&go{?ou73U3J2>jOTcDAr@@Z+<{TCVs1p~?`@Hr_ zixFsRQU$&1EamfVzEvH#PO}REp{eacjNZ%F7Yq&h2%P(Dqf?naliv4_p9Ai1Om-&= zf!Onx%i;`wDHadD=g}&BZY?zo8-))R@cZ9$)j2Col9F4m;2{T)Ht&lnYAA%@9H0LB zmTg1W$XDhLxTJK?lxx=qN0dC((9q}_7?2T2Es^GE%GH|#q@!?cS-VdX3y~zZB-&>{ z?GKNJaLFni{tUxz*Jorv#eQauTjs7^W$**A0r|k021q3}lz@18d~zZN1kyco5qcXh zc%{WCXO{S{I187I-TW;k{@?Yq|E0*bE%)YuAK=can!3Nx8~!U9?tlHUD>T6L5tlgP zZ?hQ&>&J(C;DCGVcsB2~qyF}?4F3;=z?pW1$4iAQ7motO@vEz=T<6XHMf1E@f7yR5 zqGqi_p?&K?RUm~FRm4pI01UOy*wAS#g>xU${BV|0w++V(Y31EW=4|d#{PryT#o0lj4?**{p zOq(|q(@>z13mP(?#G)%x73@~8ERV|K9VHxgI)PmCWn3WzPzdADqh9u@n7 zf^22zsi+7men=S#uH(;y+Fpk_TmJfJaN{D(#Ca)d(3FcI67+^-ZvD^ijix&1N)Jvd zs>#0?elAIR=@s7?-2?7+JpQan43fk;J^^BNhCd?0>cL_Uy`VUEk`){T$iBx3Vh-%t z&d&`E@`4wRa!pc=-*a7Sr?j4;tA;=6IiE6gF4@U_jgeuTOI9h3_8)K|siXsdiM-#z z5rN+uG_FFVa?j&6KXN;wJEYw+E>|z(Wj1!=et-F!@6f5_PNs_UOab&}d9t0I9cst3@~@|n-}CWRS>WHye3o|f)9%>A ztDZT`v-P6M;-VN!OcE^fxXwP3RavdvHAlTe9XNA_mS{)s%V_gT?dj|&(63=$xs&+W zqo;6evsR5OI^2dZ_<4&-M8aD4PVDnzvZSyKe8_$hM*tVl;6M}29yUb}X zgMB>NHIHccls;X9KFVoQvtVrHE<97?M*PS4#>HbAjgd1qJWSUTkmDl^Z?80)G zDVO-HvP^@AbW#OxUT7>}z(8xzWYZOq$3SKaAAwgHN+Ysj-t~i*tw$^pho+B?(X_%F=61?2d2+q<>im5dw(4KJ$o|p{T<7c-51g1sP@{2$}gcCqL&}s zCb6m&E>tAkoNDU51MlW64~Qa_(GDq5@uh$e93()=bfHQ*#)cAk8mF!f*)7Nx02xOZ z6iO7IZyi-tm1k5zoq;d61M+npn?Vk;M)njxvLkuCPL}<>03)H+?=rVH>uHEFCnKNw z(VC=Q8eAg`xoIub6WrpFQl*&~hP-G(Kt4;NDnSRYRj)J^ zXko8|>F}Mpr!i#42sYT(R0d9>3OzRclCr+AHKZUTEY|<&_BS*{B}}$-wf1=%^cJKS z2>^oNH8_r%?hp~1=te1U%Q8>^#Sd3vCgX!~fXa{+amCy`cK@%5;Hj_cLlGpR#XzdQ zQm#uTEOgNSH9uzeduz!p zK*v=bg)X>4E3fg52CqoqfAh2igVRvgekAcIARxdm*(h(b$hAV&fLUMMsMqAkBPH-YnFE%yczy`6UiU!g%gbJgCWzt0Qd z`KvO2LnW8hoxDll$Un&~EG+yJdxGa;fBo%lM!dJ&?D}z`uF&Jy-SyWmxwfw-ykT0; z>(M=9`_4=x>VtQm(s0I4SV&;Fz$RMX?kx(-U`{1qS9X^ld4>R_6QI^e>5YBA=83QL z*9dW4qLzp75f-^^qeMakLuhNch;?vs+XjBkpc@Ma8YxI#07$C-5I~q8C-S~{u&ZX7 z`D05rRHpQqot?R@vZ#61LW69O^;v(noL*dPM$1loSno zPy}xCPrw+-pnY#!DMiveJTmeb5HkU;JHrqP)_|qIwMGKu>VQj0-IL&wP&7)o%@*+L zFJ~?wsL~#+bs7Wc;-WcM&l5WQ(xBA?lP*Cn1F(nNf{-^}Jt65xpgbE1D5E&$^zc;5vOu>ZS%fWBSh5o%zEJpg_D?>7E- ze=1e@0CX{-ku&`tw{=A2=mYVYD*u0yS~;!rbI8gugny3ue{ht4pS%So>(wsYq@)ZB zA^-+%0brc|uhRa15;_0obAH{j0K+nfmYn)eN~VOL*ub1EJBU$zIxs4(vhBRQ3U48b z!(v#`j;S=@UCc<7jrLGcTDraGGfM|1L_veS9I-2m1X~o-(K5Nq!<<+t6@|6pg$f=^J z6mD-AM+TSF9;B2?-71hHBT8!V&n{Kvymt%vS%Z5w>?o{0n1s~TIXzWas8X5CaSsXn zPA0lDuu{jDY_HF53@-{FPqG{1_S|$#k68^I%>rs;gB^+JZCCVR-PUSp*#u49w|s*) z3(U8AR?jy&=9DC`5bAw1!JWNKnj=QSDKWFiE93ZJcxYUQ=1bLYdhwgRbt66y<4`HthUZblXvkaDMW#2szIY*wHh`%rU$%D(0-r#*KH9%taPhCK)4VU zm%0rqjR-#A5oA#6%CIW@aPJKHiWZ&0{Y*&JMx@QZ&E3a4UE_lyv%DIC3CO19y_`63 zRnc~&yx0= z1wP~{d9#y^-|UUWxhKUYT8D+gmxl_e zo}DPbooG7!lv$%6jQL1L5wnI6joBZ#dPUrd8^lcRq$T^d(TaB3NHmUXHZSI-u7(jHI#v7`CH?%m=10d z2$$Ho3-z&U?a=F)2&iKw-D>q$-|uwX=$_|?(myXre*TUzpzTYp7Cc%znYb$SqFv*( zK+BFA>JwH9FunD8d(-w3i>-;|N7-rXn^wVCOL8&)%4;-dB7E|}f$*bWxF7>sHgA7E zMeU)wW-56eGp%7G?2Br=0zlHmPk&p1v!Iin8d0NrDqO2iE>@qVGs!aW^7_$a_*#^0 zEq;_M&Q$5A$Qb<5#|$`qr>Hb0@RF*5kdv?yEYQGGpFDLkUzFm}{ugn*36KG_EQakY z@n64wxK-y?P3KaV5*IHUth?hOjEdpHle8%^!%wDFTG24fOs3<^!pbpeKd0g)p$|vV zoYJwh2{N2YdB-(Vm8Q4y;=sYjYIJt*jwvOjjhQQvju+glQ!rXn%_UT|H|f1n3L8A< zBLN<<;fg|~cVoDl6tXYD zp!6>bz`L(_WxRx1B}i+lxNc2OuUtdskV{Rq;snRyrZr%dgl7{JQd`IkmR@HKq$_mZ z+Dlp%7ZkQFV>gM8m?OAG*cIwYww1>|AF_0;X7wGG4p7dUT+$7~HXDaJ=L*Y;mKwCY zgl_W(HBYnd_enPj%O0sq1$y;(uS>nvJO;cA%7%0Guv#AlGOAoGT>CQXbv*rnYCxZ9 zf=A9uiLeo4Bg@Q^PqKZ^`?Y7akDV~T%IhY+Lv+GMsfvMD?g7Js_5;<-t!5cUdWIi7 z^$W&U9Nwe!D)sFzfH{0G>_#G4q~w3$H3utweESRO;QjoCrIY?$U@)ggOX05 zAd;EP0^YruDNdPUKKUV`&{JnBeBHuiO2qICCYdS(oL6LFfK{Np8+qB`9~;(FwPael zMQnuEau4C;_+bc2Sjx?13ZT6b7x8>erSxwm;e19xYV+GrA7T_LQw{C-TV9j)@E#)A zTNAV>zSxlpwK?nTlKr~p1JbIku~|v`ZbhpXEP?8qf_nK(7faDSEe&`$c|^3sE^;O& z4c5!o0fa`laXOr3m_U1Pi>c%v>pQC@MhleBRs$Cj;f4W~9GgnssWk3VlUK9hL=<6+ zWKidzBW!WW2kR|#L^MPb;h3JzVRiXS&pru$i>Z|cgs>K;`bV9q%Fayd7-Hkzh2hCg zHcOOk)4t1OH!Dcx&)8dA@&{_FxM|}DVv!s2CAa(FW4j09E%8#=-G_>R$|zd;kmwH7 zld)3>c0U@ehz#p+m123e%y9|d2#&W-Wd(9E#+wXs?2D{PyZxy{aPYuu@|yv-Khe^D zzE-y(kuujl+r6PLG{cl{v1V{N%Csi#GitH+HnkbLD+hQ8t=$24xp zEzt2X!oF%l_+*7*c+Z3h|tCOF6T61n1Nqqrl&c2t{FC0X_kTS3Xjbs<+9@I7|5!Ff3Qp7|JZa09;p ze>7|#tz#U@pz#Iz6D+bH)>IYV7j`bkyS*VNpMUkd5z;8k16Tu?ehBBz#p&FaG%jQ% zkt*Ea0v8HD8Tnj^W15m-7I3|E`nvye2D95B`TjTYz6U3ElaL#+CJ$M_1J-Q{^2&M1 zDtXpE{=s^U%KQn?5I1l9wk@wkiugmIT`)rI5=AG$L2U)Hwza#$JsK+lG@9~poQ@h;P7)-Y?UF<&?G#cO-;fci9&zAeh@wIvqDr;FDDhi`zW zZ=^blPC%>0+JzP^sobx?Zl6_fr_|3nBXqGB&%YX+)2Q5CAFUJ4`>^r0%c+gYlJV2B%7zmn&Z?@z4`=$Thu4yJBLhCpC~tV4ZrT?@W$cVW(keMW^yU4HAmM%B z#fU64@|O`-Nq0qT2oFx3ynl=3z2>_O+| zEXEVNBH&8>6bD#IJS5jzifN^7V)66X3MU`be8nem8@&(7v1V=zEUH01k-ij0beNWMLG@yW2MLb1Z@z@evYR5yB#_D$68ZK#eiJEnc8*E&RG1ugM} z?5L}z_K1VVb0H$2yrVo#+i`{u7!(5HX7v@vni+f_J5pb!Mt!50FMgyQRLXvu zsFY~eubAc81w1NGK@q5#`^Hqh5pDNOjePqT3x6~!9E(@2xNjwWm}V)*Omb>ARXd)- zh-1;(H&e>L^B2W=hys=v63>e4YVIPtbP9K>q(17P2tWE^Q}xHzVNJysut%qJ6DZ)R zvs<)t*7%baVO>a!Yxn29b;d2y5l9^{vB@j1RHS~3;V=A1s(zu9O)wFgJMO|ctXP{^ zF7)dc)%&Dlo%n8c8yix~va?qtVHeiJXoa+VUla6!!6%gtI(Vg;Xq2*n$Z^^fyJwiDSVJ zU-k4;4O#6G2m+lX%a=>?2eb)RGSsV_$D|_$tiEPLP96j!BByH=k=NogYQ%MkVLzPqQM3=A6WN z5m+H0#BUW;1yjZ4@7K8mG<#hbdU97Ad#r2GFh}=&E5SToEh#{iqO$s2$@Yb-KT!#R z)qz{~VL~?ZW$5VQ{ToweOHeYK$5Z-Pi3o^450Y6=UFIRa4@@auaIn#ekBVSuH)#QM zE~~~MJ^HHH_0A{+4qsN!FlVbZ-Uw2sv5k zejk@J75{`qq9GwntsO(s{mYH>i2Nm4iJ0jvzZZ+m7wYHk{P9Kub-rp1>6YGpOQ&9p zGtqGS#jVaYL`TP?8)5^URk07=mroXSvKI#Cb%`oHpOmQ)!s_ZEqTIHy4zuv|HUojH z7O$F1`@yS^As$YZB?{;7a|}W5gX?)7)39~mNm>@ra=_Zutn7hgBS?CAsa3sk*Uhqc zU8Xb#+cO@&xfJRD8H12#X5!Oc&aXJWkGiyb%U98{>vH{ z&QC@D%PjtXe$!!oT^vC7iiA1cV@7t@Z>!E!ws_vcspQB_W3)Kwj}X*3v-U9`jpC>S z*v9?3soz!9nX_&Bl?DBcaHIM|<`t%-Ia}%FEr?-Z|I|zDT;IOR7?@$ai~NkznoA`! zmOpqQesYuO(2x{un*WLtvO@1-6=NTE&IsN+N1P=4=C{`pfQvIbt|nlnka7qLvxa@7 zS$589@T7Efy|J(-lDxoc#a5L2mj5;c^#DiJI# zrl~y2`I|ZL;uoXrS&j|ilPGu$JM-j!j8_7P082sTeuiZLx*%DY+6w=4TakXf-y&xs zK=BhtoNQYLjiP%;oJPp)A1zej%t=F7+8o713LsD@2;cih*kmX-u;h}+!@LyUHB`&w zABeHH&q|%k1Cl>C{`P~Ufs?^{h(h?kBuDMlbyRlpwa)Jt!Z7uVp5U8b$3d;Qc9qrC zsUKPJkC(528IQ%BYerXVo#xhhFrWB^>!)%Pvz*dYyE1Q#q1p8QaAgiqKg$O@t z@&&~2pi#o=%>6=2Hm)5dB8r)|QN*YzBdo_|U?ATsr;CVwAZni$AkW2%7rek%3!gVQ z>eFLg@A*kh>GjVW4H|qOJG}akVdU%Q)X}zhsym=`=E^5L2z6~&+MVevhHO^}1~9nS z`ZuxWn69yMugJfx^fo&!Tm-!MD={&RYYR0jr2Sy~ps z(+6Ha8lePI$5Rwx3f4uV40*?;Ni#Cf5IJfI^fpF)-$kdQq|`KL+D$73{>QCAK4-wp zGbW3}H5pmyZBaxQ9-J^Dh3{S+yd2+b?s-uwH(!uAH&061ZTqJyTxA z@$oUi^aAV}k`fQX5hs;fG2x}442e3)#8i1{H2%QgqIoS-l>NP^`u>)5gWDmD?-$LA z-MhD38It`MWF4LrT{E$Z6F!d~rwP4{BpdCJ*O=0+TGbCy{Vqd`b{wnylF zL#NK_Mg4UdOdX;pZJP!r1!0qL51_U~M_mMk?Is0;o0f{)_Bz!d+j)YAjo7@;|wAFwhU{DPKfH%f`;o7t&)d?ccZ zP3iJTph9p~x2GsXkBOBKb*^0&D}MVtZGajF|GC`Lqc*({ioUx z0F5<$5*l2tHZM=49qEV@rF<>PA)m+zP^vNu7vr!N2;r;HaG|uphUg_$f?D~skU{Bf z^7c~%QQMI#s<8`>!Uum2YIedm9doh8#m}Y!JD*o?p_-lB8de00ORsHSiO~aE-N4bF zz_&fYGJPhYgFSo3hzz@qF*asOAc~g}Xb{km=f+Fi2wI@Q)V(kK_te#RgZk`=Jqp4M z|8vc1E<$;5txElh!e3}f##d$P(y^bv*Cd)-=*0$ZvVQQ)n}ijQw_X^(zOAb4H}+&t zoP2a#!4}MM{QY6(VUlYZdeZGcp6-MADLYv6Ja2}}p#H$h%(#`P)n3H5vF@O?Ld6OR zhgZ5ID5>DR?_^Tp+eWoghN zuP|O|nO0pmsT4FYN`a`$%#{BfqoC$FsaNkV(0DyNn91Da6`TaSu#?&$g@-@i`Cfb+ z6{`^1cgWZs%TFh}(#VSblWYuNS90=CLc^GJshiJl@#ix;RHOOVMd8MJ2Sr5i#9Eu()%vmC}7t~v#aIy9Ba1D4$voP!Uj{F`J#!7F2-`eh?hEs9+RHP2V_9uSXEMM5uwDKv_ljo8wd6SVf+4{#!h~a-QQgLEf^%r zG#;+lQFtKjgGTjQ&T1yg6@-$=*5n(R_n_`zL3fRIbXLg=Q<|d0*Os%)*Sj&gX7<{j z579(38R|ha3JT8R_pL3NqdlUB$!l!6^JyP=)!Z!{g92+jFBzy@OQd_R-nZht3KcfRp5%d)zYoW=Q(oHK|EcHxZ6X|dK3GbD+1_7tcU!{_ zExaDc{zYX#QwrEar1r(O;}!QKe&!Sp8ddNU-S)6`8J>Z^x1e>w1&N7Jq{*O0rCx8P=FQScxNk7Yh=e%bqk;s?HC@ z=_lOpW}r1j7}Rf@I`Jpw-?aa|MhHf7<@keqd;LJmfTzwcf9keva5q}D+{~^o?Gay1 z9@j2eKX$jiX0%GqtUUru%I-etHs!yGW5e-DzS^WX?7C@PyK&!hHh+5?v1Bi^TdK3B z9GIbb=GTGr{)lbYI-7#cCzKiqn7CVgoV(eWNr6*Xj9|A|!j|CUjB8MF|K$b@^Nx=< zbm_(EiHWCVbX1E65QS$0X;YLM1sxi(=b&fdOXsi_Rx)6yUp7MY1Gy)$O2FdzxH-u| ziM^NzpDvu8!;jfl69AGWAKNpM_(D+^8{q(#mj~-$>bsd%7R@#FO;Rlb05uqAQTczd zbJxoA@{oDg+yUwRtGhFya3XG~<0vn-=Z0Ld|M>kvp{ptjrYlTpU>X5iYYh`qTYWJp>AfioW+L{Pzq@&2)7HX7cG2@mYeb+S;WQ zFWrAD%7rFSEIserpDx54w4#z#y{4Rd*wRQK@MIwjS^FG(K1)CbrYpmR6 zx{uEK58!ZnH+vjo9{gBsq}WMMqbfeYx5hQIp0U{Om4a}KI(Ute!QDyK zkz5LBu+F>rXN}xp$Z0?n$=}V-<~09@8s;y49NG*H*KImjalCEhpb=1jvouwg8y(w` zPHs1UR>V9uizPj@otCQh9M;qTuj_EZb{aHtAcwK@9ptOnto>n~Z`&-&(FN&dfrXpq zzI-~AVPg_AXLI&31%DNnF}c{+#xWch`J}$IJX5YW4&?JpRnk{}$S2xK@3nXkW$-nL zwa@Bk?1AUzK;Uz24AxpYBf3(6b?8rw*~N22qa`a^>_UAN^I>Nn1~Kz_49=3o93uTE*|OX)hnPul25i3gAwRXCX` zE7yYXk}y-8#{gxe6XDMs)sj8fw@KcM9pnswf=n1-8HjPetDll9%CF6++JN?h_EFqT zOB1(}`=OBr!DP-d2x}m&`z%Aru;p!}iPE&xMLfWRG9tC}?AP!Z76kDbZ@W3Toomzx z%Y4+5hn$V7AXrxJRim~*DNLQTm<7H?*`(fdzXb zOx~B)Mbz5jVvwUZHoI1mT{ypAwa(eK<9K4~X6U4MZE<^3i6g_#VS`M- z#5mr5i?_YPraQp#yZzW^CmqLR`yU={mHQmH z4h{Hq?cb(=7W?_mz|KJ+kKucH_)?{}`UNlNzopg?jW}x_NKYM5h6SoYoEcvh{$?WR zTs)Dc3N6h#cIk1i@zl5~uU`N(glr&Qn7VR4J-ePyj7CvKeG&`+`hadu6*5GS z@PdP&)wH)Q#6f?Sn5t4I+Y`XlaDu~K`NRENx{*)-P-YSuI?JKtArKgY_%8?zD%2b3 zmZHyEe<^wpqE!K_+G!-qc&Sl1%(f?=-EG-Z+9tFKp(~J=9gMG>mhF!B_zP>Y1aID` z^*0_;FS;$=xJm1WCFOM5_%g22Sk50Hr_J8WIlf}~yW(Tpr>8)^1@-xZrEq{S?@}J$JpbW zTN4X|gFEF&-SIJ8qfL)+YD=)gyQ~TQx!E=TrJ66Re;nqLqRhepKA~}x`um!{Q&kA4 zc*85-=9ZSvRtcPOJ~fr*+bJyy<>RgeU~}46u7-!JN(~k+%zOS-yQzA6{}d!9$Qh?; zqX3Gy02f`7l7cQ~jUD#aqTSQ)?(@yc=C{Z{HF3BsK)3HM(85WAiJ%Yp#yWh9goNe% zl&=g37k3rFwb;(#SenWB&P4gs2{d1*1b^{yg5{Iq-l%%0oT{;CkN@@>b4|pqD_$mHPuHWBQ?{<7V5!uZbNC%)iCvT-==(Y$x=yz2=(1;Y?whmM50$zZBS9@Xv4fY~&CyGyU?2Gq{ zs}pBaPoy%>sXv|MQ{%=3zVa4F=-l2Ax&Gk=;qTOsJGP{uVoumgnnIt0Eeg#|wd!aC zw>7}2w%fjqBTJKO%f|fp5{&R2+=uv;Ch)s0Dp1N$Rt(r zWgrgnxtcxHPI_mN5^JnB?gb^1IAeA&-Lhe^pcH>>8matn*(SR8O4%P~YE^QPyJL z^g2-xl>OtdOABqH=*=I20mo%RNsuY2}{`!@sh{UOPQLFrkCTLLnaUX#5F-BcmphVvsf zj+IJ_!QLtW|-4N zHIJpsiR16{XmiJ_vgj3WJHcLx5Mal9N6hx)yLU;F-JEHR#MVN*tKzbcBFf9k*`&vWs8);ezEQv ztCoWvJbk_|wrF|%f?5)Na*BE7GeQ^k!@=c;e8UzS&!fK)W?2EU=n&vYTb1Oru-@_> zYq}QK_iHl^ek*k%oh6^~7!wyKn@&|-*|A;Q(v1`Nus)Mn8`yrn+S;B$Nd+umq7iv0 zxLhht{PxUkUM4ef=soKx;evuj<;#F$$Ld~j)}je`u|av#-pML=GXAFs+U9c)lj-=q z<)@`6qjw=!WEB3{wwQcwklox@uvaA)e@+k3ARILPK6a(fth3%gmjEVF@N-mLB9dea z`wMy9IV`iJ?8h;9839N&_hw5qSYLcGDRUXuix=mxu@S5hma;}t{1RTfqSCNz+@OFB z?mK}4I&lBDta#QPwslksv$eD4qUKrI{@E{5Ip3{$ zFmO%l%%O-R9D*dKrkWn8Z@Rpy6ma;_!Mml88Iza%i%rZqHLw#!ZZFcCxE9U0X4*%; z_x8uRj^hxVJ2=XNJEb=4Qp4bY)*l!B+eo$Q^waR#xF!f^kn%gSCjGg?y|tA;z2wB zfk6XLK-zz1Z(r5S&?tsi>Xz5TN~?bx@4r6)3r6lip%%|sfwiet1M9mF(nhD(Mw_G@<4ZKigDU{walO)eRH3wt` z^`4E338zHdvGfoqD~0E7_GtlgcJ!v4w+$CXet)UFcUxNN+b%p(BA|o_NHa)CHz-IsfJ!+?w+KiNp%M}Tf^>*<3CPeb9RngQCEeZK zIqC~ zA+k*&5P_uUFd20h!>uVVdzz(WsohFb@hj4=AJVZo{snE{ii=xGS zp301KADQQh_rD4Wp^`?2!*>{l%Qhv)qcyKeG=H2}%L{gtg`dRcSEishna7-#|HN|z zP>e1vJ`ji}`nx9dckO3g702M%5>1my$gHa8ye_?DYylWUeEsZ=`aRQ zcCHO%-GFq(^2Snji|?7#zgr_iB9Rb?va)h^K|yrwa&j$;V$Ao#LOVkr?!<0rREM#Z z6~RhxDsK%UN1b3{VIeywN9N5NW@>8cL(+Zy9ldIj6?Sl!i3t`ZuOaMlvi#Ghz7OBs zuli{mg8CLr$;%T=xgd*I7}0Ic&(H5oNXY|ip_@YEuuV-vQ(`kF(A70^27c*qb?G|c z(PdtSS+WE@aSWG^Pit#yok!8T`7?3nZCYSX3SPr}DXDDumsLxPvGpd zpqweA-FG2jVU4BWzqj^$qOE_ zE{mRaBRsJe4G+Dgr5S9Mm6T>1y|JHVszE*pTMy5+(jd6jT8!=p>ob=~DaP^)P5iFD zXjhOF*nltQyvq8XYh`E&feaTK1oL{Gb!8V7#ZumYcwS%3U{hRZ8X1LK7gn1OUufRC z+WjI0jzLyR0k{uICf>GSuY|8b?T5L`vjgNYIMrFbnRAN5hI6aS(>AGL>=zam7LCi@ zi6yQF<_b+8S#Y-%q|V{>wycJ3Yb-WXHNuE*RzFQz2#D_7NvPl@CzvGmI&Jn(84C7R zG)w!|=&=~7usirlb?w@y+L2{_ecc{xxC>%f^X?(=DEs}z=k@4{3A<(~^ng_Sxo!@! z5j{TA;J;B=dna7-JbQ`#c(mlrX{T0$&lh?({F6zi@VYqfjZd^y`EzPI7h4Fg;QEgz zSP-8kMtOPp-Tf}!g%(Pq-|g-AcGXK1^*c51H~0hud?=0FNqJG10+@S}cieA6{<*U~ zlG)7&i!2alxIpji{R)UZ`e+2(zb|X-&8(Wv$L;Eshz`?YyQ#;QQ#0sf%S9bvMOBaW zSLfFwMMemM@TIQUg{zC5HrvW6Jjf`@3)K)}!Ng~ulV5+aT`O&Os2egA$^bcCWRtoD zaal=rUX;7HQ&2hm%NccHU^7~L!@$7c*#olk(u9Nr+-pzY&Gs4Nshal#;YHUt2(vBD zBxbLujY>PZEA!tqsSX|=Jf_b(MoPeP+|g`^HCq)=6`Pq;r%V&D*1HVM<%tLmtox9w z4b)ZF&;0RZapyZH(;s;~&$^7}f$RM4&rsL{)}q;|KcR=rs$MOs?p_}BE@Z|UVmS&= zOw~GXgnwc1q=MKlgo-8%iz9xr(_dFlig72>HQms#>ppRM%69aryEEwJwSZ3~R+ALX zFscP+X40J?4Ea>{wzo5QclzVb+)}L3@bz_`5&A`{fcYUX4mL#cYA?Jim}7jd`O6;W zmVO0>mN(%~{IgQr2v&NMoBR4mAhTbjE}1~~*{k32Aih2?x(+JxJjxp_dmDcBQsW*t zbYi>uBTd(#gI1mgGut!1Ca!s3N~Hq6GkkJ0_HW9W=Vczg;MXJ4=dd0z{KyS4HZ{fh zc)Zz^SJV)sW#n;B^~n+W)n)HBEl5yprDk2bCE*@KAP*#pB3fUmKFK`!c)8bBf|!vs zzO%hP5&8B7x!Q}Fv4prd2vHgSqH1A*K`jLx9UbHo#sx)Z+yxE2(CdBn8{x5`2a;iW-Lu#inY$PRI!`)$sk4~=Sy5rK_BV61<~?V6 zKf4HGI^_J^E#C-bxZ`v*q=gOHu0JvSZNmTL+my4o$QSf5)7e2A=@7)rMbJ)^x8JM` zk>(Xn&=?+eWWAd?krkywL;Fyhvd3B6%}WSfww`iD=2anv#}m!XFN^zWdD+~3SunL< zN~6NOn|kv7h=I%T*xS9cUN8EM;ezG{j|=;gDd&vp>idR8l(%o+uA1|w>6@G+f}B=* zU5H9tUmhTB|M*?(pcqhBM@5)a)77V(spc~4ebat-R_1bR=Bl91WjbHG1gk`wXhh#B z)RX>XbIiBgdSu-L1S&nz?b~xVrB1!Yna8k(^LIYYKp$jnln%&PZETSeSwSx8v{87C zu_DY8^#UQ^#M+PYuf0y;_BBY_m}ajSsw(xEFxp2xsMBCnpF)QDVe)51g$SeQi>oGL&+j9AE1k*C z(}4;M9^{C+J$b`b>gHpN(}Rna=VNCd29!l#&op>Y(b2Vls$uw~0*P!TZzQzpc6;}X z=}g8zgz|^TH2wYG@1_gebi;4b_v+@S8s5iKRMv+Wt)oeif}$a*b;8aW`oQ>^E2&-$ zv)?kMK#+;q&q8<%YJOB^4p`EP*-P_29gPn^tI|xXjd=YL7;zv3`)uzQA@8d2wBy`f zzTAot?hT88Wh7@nqFEDa{kLx7j``{LR%?3PiO{&@U6+l$Z)L(YRorGoz3vY)p=f(Loq^SCT^t?YI_eXrEDgi7*b zKT1Ov8N(KzeV5@k=bo`a*yw7;+tXo3A{lyAowtt7H8sJu(gmqg=vfpP+Vr|Ts}(yi zhYwK7B9gNeb8Kx4UbNv-S5>7T$K3*KOAg8{>M^rFOo0l=WNIa&i zY+_(JEZQLthuO6@DRmM+W_2#;U`}Oh>D60*@UUY$zs50GtsGAv6rMiC*45QLtdM5> zaEi$wsh5jv6{0t<7o@JR ziKQ<2Fu9gJ2+C_{&oC)*VLa?jht8-IF}oT5*2B)T2%R+=#2-Up9z63!k?>c?$sBUP z@^V!{O4i6IRr1a2rOxQ8g)njZHah27!PK*mOJ?cqB3W7q7ZTpOT`bR&+L^U2=NS*t zE0E=>LqkK6SMt%j9#wbm-d$Z^|K)YH;w1|wpL{ox49~{uO5M!kFX3_M4P3BiD=LUZJU<^u#dp=8@Ea^dwK%qsZU03MP zeqLMUBl9&Ih0Wz7hIw9H+BsBJJ^#MB%6<+DAbxYd%jo@55BA)X zEdE8EL!+Gc<)W46+B<4M56(kN{QdpwP%EsdwO~`mj*gCoybEPxTmTgAwn<&VubmV$ zFP4wo-~e=~bND%}^sLP!Xx{F%7D<%ji2j?3%E@^+I5Lu0h~+X6LZQwP{R_ac6=AMI z7=8FnP+?q|pJn(xc2+sIb#(lzP8O+19L*8cv5Me3IywU2Sd{xMunyo6aY;!SHu5;R zFsMJ`9$501D0Uk1h2iSN4h$n0XwbkgE|+>kF5RE)`^x^_im=76^N3e4m=K$dLKWCe zj{1utg(?F!C{)+Nutq8Zox+P$3J*iSfUY$Kw<68WNRGs*cV!)QT^eRGLE5b}?_gspBf9pGS z3rlYgm}X8->|^zH;R70HVP*C8f`k;V0=UoBZOfJ`*`I%$)(3Mo!D8l)+)4nVpNK4Q zz;Y^AGGR?$hi+>P4G*u+5WZd+%y|V!iG_^~*J+M8bJ1x+Ie0|R-(D`mizJex)TaGNV|C%CMd`Q&(8BjNc&~MQMt7Sa(dS8*id*|m;VXVnly{*x|QzE z_$wwLTQ^|#$gRHJRKV#tx!bL?GZPD58!-_Wkn8R6Q!hJ4kDxbo`l^fzB7wdfQ6>y2 z*9)@`%%%>!yz69d=5-wHbrUi;q@tRI9?fMr-CWU}^;b3URV~!>S0BH;ck66`%n_C@ zXcL&N8+hrI;ENJ>pzpoD&~sT#8`(wgpvhLIMQ0cek|bOOf+yMjg#1qJXN0C-hJ0pX zYbjOd@O662#$UC=U3WO?FgWP4>)e0syELLQV_ZfzM@9;_w6darwjm-0-zUYj-P(ggXH?a)>6)Axq1fo}ICueQFku+kw zoD_{4vmioy=e-tefj8S^R7t6cW8<5#J;nDr$#F*b%kik((ez*b#U6t)vZY&$1z zW*A-0Q(9PC3v$l@7WWV)_bG@h%q2jSAmc8Z3L`ne>#i7Xk z3os;IQ2OGK9)tU?4116dTdMot!7%;Z`__#ZE??rXAdex?B1fF2tP{z^fiNt9fKzk2 zsa7!zqT#F?kr0EJtRii0Za%+Gb>Dx^9`yA@o^hHz#PhV70b^t2`)N>=FvM~xkp_Hq zRpWcB>nk)^XjI}22tcWrUrmN2A{un;ekBN7M?8D5Xs#zXw(b6s92XdpoBBg*sZSl^ zLmPA^j$DgjW28v5-0O0I;U?trxDq8?epe$m=$8H-RFySqKmF??I+ot@F}uodvtILo zY{g*xpJkbT>JGk@^BB?AWG|QGxm#|rSIqH*M57curmer zkPPwmzOgxjGC~EupZ|Red}06u<_{<5AOCE*F5*1So9Qpq;ocbDP7?@&?rc{@%g)(| zPBg9WPZSm<$J>kq@_OzCOK+RUD*X(UEY--Y4NaTLs(y97XhnQxW@ccyJk5f?7x%H%HdFgOPNu%Vps#gf zM^lt08KauDC5d6t`6ei0=K-X$>x~=IsbLS=(fQ^io50g+KWzPKY?L-!?cA7X@DLB9 z6Gs+3y+X~J*0zUI$bGV%tSYgnqPZZ%7^Kz)5xtD=oS+=2`pm6YF}qbc(<4q%ovN*B zZOvI>GiJi^Tx?1--SNTO2V4!rBc0diaS{k)#mR8z?aAr~SXy_qN=L@WJNYt$pl=_T zlT_W)Q2V~m*okK{PD!f#X7+E$)>N(N4qhfZjm=mo3qq0yUXHoyu@`LgyU?Ik$;rCX zZYs#z+xt8ZhqxZ@h}x@HzMy(EZyW&$kukA*ACH<;gDcX(#B^eC z@N-Sg3+J}bgtXJWrtpd7D=^r6sL zKKsCc<^I&GF}6c5LGW4s7v}j}*s%faEdS$%|Kr6I0*XKw34!0@a&9I&!TH6-l6iXR zTtPvBoULuaq-RSo4EmD15J zPsG(o4x*V0qO8x&1&)twTU}lCxf$~c+)f?3O!t(J>RWBkeK|Nuc-xYB6kwi^;!Wq( zJ|;-x?CkftXHqNkD}lN27F@fJAH{(zMi%(F4j&sE8z0Zt0)dF7jJ_uaw+T*0 zviN&gN@m(S8|a9S{nVBT{T4wc>Vnyy__FXJcUNGi~X7|evJ*8 zJ>6Syo7mmu1IB`U&&sr@dbYk@>&dh9iC-K1yDhKC#{Mc%ph6qoY zX=->l<^<0~D|}ce^u0ww2}q(@yz8l`ip^{(iUz4(H7{ zd|vo9_wRM>kcqX84d0oa-j7d75LEJ!&u~0ZQbn4R6BC4h6*e?THWnM1NJVmbe{Oy~ zKvRbA$<`)gnrVWiRa_Il@NI~&LyVe&`K9Y;W;>kw3htUmFI*QzDPN3*?Fr~>Xt+8& z$8g&B0S8d|hIxsggSnqd^NZSxe?K!`(-IuwegY0L@Cf)Ea)wSr<7k0YhI73SCaA&h z&1q<_g5_MnOAB8iC$8-pQ;T*a$|Mn1dZW|y96|w|e)qNGhopdze~N>tu2uZ++xu5P z%gfhp(1y1i?TX^<0Ux*hboUXQ-#d7cy``hQps&5{7JTI!gC_H$TKBTr%nO0|&$+n) zEhesJeq(%w{^6maOSn~3GC}=mRNOIyXUfX@nZFkth=_?3JDGu#x@Nef$7g3Z-h2P# z3@;{9+x(uS<86w+OT`*nj)j1F$qf9gt6gyF&Ru-T!GHcrL%8S<)aUu6Qd!Mn>Mhg^ z;>_Rly9i<@mJHskM zMK`p_O+K>+9OdK&#l%nyl#Z>gtzn)Q9WoUN#JIQ=)pXtBfyGfBRFs2(mR1Ni4}ac5 z=y6^i6sm4Ad+sjzfb7=KpFbD7>&b#MwiA#`xOt~2{Sy|B=#@Y5f;tfGI+v2Ve5=EglZ_cYY1rc6SlL_9 zVT$1fsb(-Md~Pgj24=HU5G{&H%3A+(&h1tveS?k(Sf=^^kc}~UJFJ0w^Kfmz@h&O6 zMX$lVdeZb40@MbMS7Gv1FxaAQLyR%dV+qb#`)DcJi-@f$ef{dy<+AoTvPNJgsb~PQk%pzpy7pE+?a)a1-R` zE8wk;S_B!+XS?YL#flM2o4_m8{f;y1bJQLB0wFmNbm<$bD%fhu$~%Xe|hTg>cZv} z?Fpjqm7by^Az0MWb>2TE?G*#WRqD&+c};EY%B8Y*Hd&_HLjb67!I!&imbBS-aaXn* z=xarKa|X=H*{NGUuqvK^{r;Ab9UdMY2@ziZ^mNZTH~fa8l-o=9EmviD%}xYuz(M~41H~o?SXW2 zbNgjcFj{ zGY~4Zxni{1qTfOSEcG4h2Maw|vAjPS(vw^;A-{Hnc#z9At*)|5P05=U1D&95ua(9O zw9jTAx$c`%Kw`M{Sa~yWk?aH}CE8;n(Sfd61AH~lx?3CQl&&d!%~cE^KzO!VPT;pBiwxx!PPJ;3@GYLkO$Y=NX$1)7|@lxOOakLIuVc|IE(i5WP$KDN`{vJtyZD$N&f(e;(}0Kfp&p)#~c5dHUr})6Pj( zHw@={MFoWvdQCNr{l&lTdH3#}w1&omsOPSv5C9j`Gcuk6wx0wrcC78Hrok+DJ$q2P zRK685?PdEQ8(Cmni~^MOvus*jO`b(;W&g|!;`~fj#AXz-C|@c7w_4rY{6@J3^B6ge z7~7JfO<_oP)GAEV)9_9NJ~cfZ2H+J8>J5Y5Sj2h;BvJrX`(oM1Zh>k?nUH`4&PD}@ zFF>EjV+`Dqq6uyx36&=tHZz;Er|P#*w`&C&0VxsQl6i7EJLrfAZ++yW`kc=0%50v8 zc6RgxP||Ug{)wCV_Iyn)!6bMG6G$KO0hmx%Je6jQ5cMI#^92ziRDMGmfhd~9fq-`L zm#ZCV#+N^NIPYfYzj?;?PsD@n+S6WQ7?c!P@zp7FWjM$o9v&XZ4<&!vJIjadCauvkS7h361x>f#hXwWmNAb{14(oegGK7O7qiHC?{%$IJNh!m9?cM2!!mM z0+Q6;FCaT(+NieRtpNA9ZcwOeloxCT)f7k8U1wqp2l{ixW?dBE3>Qk;=$pAKC!x*` z217W7eIPh<;T4sYi7~;{*(LceR|Py9Krax)IygxWjyPI>6=6})F6D}#WQKH3Z`z8b z{g3+Zy@55AgjM$Naj@KqTTDvoN_{5WB~uLvNM1F8aGmUqEGgly?$As-c>0coeWX}U z7_j7GHLD!ihfANTAFO8q^i#2f)l}F+1OXrA6xPZfNx_zW=r>agkyr8I#7Vr7R`MV_ zg1=b>cC$!8Ue73-sOMPf_LEk!%d`(v{l4lFZOoiD@T zU;P7Q>Jn|PB9*a$fsE@-(CAgy7>WfOp`@eh$+8#Qw738iB(>E{LWE!W&n>omhn(6p+LtIo+B;s*DnRUfdCUwY=MGBlT|q5?;!^*Eg{AshDpN67wn zx#QmvPneHFF$ATzcWeE8_8|S*@|-i-oePad3rdQ(8fYbOdR%wOwBQxu3!ISxxGD)k zte^L#1U*Ov&w#`Ng-8p;|Is^UPJ^zLsFm*p1-IMl?|0szdyE6Y z)CtNpgyj6nN^sPh@9VD|Kz$(i4+aR%qQ1WV{Q4#y9v>gy_iL{P1)qb=KK_&AV^CN+ zx}9D~hL_D9J_61J`2_sNl@yHC%${7NStisyBVHKF)9MOd4jI6_7w*l;!xWmPyOz5b z=V#1k@hC_`;~wBkpIY#>KkvDtZjtJM6c{R>!D1jwgTMm51DF>!1QgM?1}lVqvN2MK zk+8{9HR~eabu4s(L`SL%PtEJ%*>+-SO;iv_@(H_~UKuARK_O+qWVRASa&q$S1=^M6 z!5gaP`B4Jf-Y~Jkt1C~1Hb$#IA126GUQLQe^xBpj1Yn`we%RVSCm3o9-jW*2i)&1_ zwJiih_vzE85Kz(lVbHntY&e`8^wpmh)%!QU2J2e!ON0Z)@Gt5}Ii^OA;c~9;4fmi? zI$K)K&dyEf(s|R`Ov#%xA~p~Rt(2!ef`*>ne`e<<1fXf-ckk4VSSy%&v?S;i6coN# zrh=#^x-SmcR&K5dDD7bJa^WD5Z6+#|XAHS0$|jLWODcMLd1xeGv~^Nan_9pwIm^R6 z5(KqC)`jXY2dn*70Nlr=J;P58EH81Gh5iF7DH9+>WY;91ggCx3o743ZgS|lmjiE3o z#xO_2)6<3^tsNd6#gFrMp~=ik4cOczji%W@fYmWHRg{;<%QvQba;~F*7k~ww_ohq7 z|9au&g`%&>{Kozt+_G`!L~l5KNi^|HEF2^;%&RBJ5Y(DU+fqw;r;WF9u#l0BHlWiU zFMnemz8X95kQ7UP{;O+Yd+dNbIRBR#8g?mB=!A|B$ySz@{a%J4r!DPTo3&IoCZdf( z%y6?V{?5#VTL>kb_^XF#ptb1(nMYJb7*_i2lJ_MER8CU!HI!z9jC`!zvXZ;re0cmK z#ky>&ke!JIO6nTPnWf-P6d5z70=EEE3U1l&BxpHBUzO$=^c+ik6$fykTTLu)$iIYy3@0hd7mvbKysj@jQA>{%>mR=8QCG*1FSMMoutv)|WuFBPZ-2{e zngw3FG@1|lp_Kp?C=cx0nYV|u*_2;_wDJXs|F+sF&9?g;D&)o3wo-~On69YzeCYLE zCSO%U14H4;X%JO`Xa^1wd`8+kD}LKbVNHQ*JsATtsFW0Xiv)AGdQdmsIXfqw_fG<9 z>o>x@J`ov=NFWK8}|6d9m_fOI_)oZa6v#@O36@OLut})g|NsCXf)bfnj)fj zUHyOzdPC20Bt3|FCDE)V9}xw0K;`RBVV7%Xp-xB+x&@*J`IR0f^vbaa~) z{kx>V!a&EQb-{r>XnwVYHW2omonU^isxI3kurY$6!&Ghiah7aaM8=9~0|u?V*#-rp z)_`<*LBFT%afdEYzkvTXF)Fi0VZyM`;vcmT(2F?wCgYdey2nWk@F3Ayj4H$5X2M@> zJ!J2;ZQ%(h>-m31mG>0ke&r*V0S9=rz5CvC{l}orbOv*zAT1s5 z_WR_vH%@0m>9x`Y8H?v~aoU}Zx;|uxP@c>X@4Da%6NB^35 z&KlJxbi2E|dmpM7ln%O-?ksi%+e4qp#$W~IZO#mGg4F3R0pCXtk z@)kh+h+17{<|Fs%E$Oc#JLUg@@z| z*C*<=LAUiGV64OkX$kPxvt^`DN1E9KE6rB5PX=dcan<^!|SL;bYN+03<0(TNAvQ>d4U1G(XHkEvuyc$bX5SjqHxGwHRa1=@%`xz z1!`mFC$;XSnh@BQvgat>U9L_lL1D_YCwC7@4EX;hBLMaSNREn{+9x;HNv%iQ;$Y8R zJu2vqKGk{>28PEz_xrPC7Fovw6vg}g``vhZt^835aa2oPqF4Fk1aE7{?r3HR*EW1G zFP$2Tc-p+ZKf?1(@rgO$9ok$-Birufv!AclCGX82AHbD4B<)*PRR@0hWGFkF*}9Vg z1U5lwz@#!VG%$b-iVcrwZEdYG+Sp|wqPc1``+40c&}PhLKdn&HAZ$( z`<;(JG^@@0_MAM}QVD3{xw%lFpMyiP?faq1)_GyFxEQxI#thUDq;8gr->l8NKw1zGua#T zp4v;ZW2*fwFAPwtF;ykvQUM{MZ{NDH0Jtr_6!}dIBz3 zAzF|`TekP;UYkkX25-t;P(D8r`H79OiAgwTN-``att@s#0S&UkCcZ9&A_4&G78Bf! zGQu1b%IMk-Pgl&Ho?`fatwCX=+tKp+<3W~2F!lQYm?b78m>+551HkVpS~kBY2ErM{ z|G}~dS$}ka36`_FySrw%U-9c^y!sSYdQD+@XfDzJz6jMB@(Kct^0r}k8#V-tI_wKT zp`}a$uS~P=PJ?k1h%`s^*H}{0$WSF#YzWEy_0N@sg?Au)j~+ebWrjj&z_b(u5}Bsr zVr^{=I%2`<94&o7pk$1G@fwWbgAq$G-2asl%z8+J5qvPVgBc4XjtT@y+vz*293#Tn zmP2)1At50M1PqUa=j7ykC1?V}C*b+H$!aIC9xx%po8w8iATcQyOtF?GE-4uXMzI)^ zRhSdI1>6I(t-xOrfWi8Z@bCpN2jn&yRLAA_*2LtO5Caz&@&}_UYwyNKC3soc*!U0s z+V|Uf?4PSPdNtoZpuYs8O}uv)8iBg8D8~xcDSJU@%Yv%y{#_#4whKml-i=SkisrZd z%~V`6hbBA)n*ll~OZ_pSXROc2MvI1)fghNF0TW8y*6l3e47}78qUfD#KN|Fv>lAU* z!d~Obthj~LRmsMS$8%*4Xto50u5KfCw@XBQ^0jC|fWJ1Z z?-jw^k`pfx1+8+S_1Oc-gEiHz?t}F|@h1+mOR=EK#*1s$QqHN>2`-K%zBxVGC;~DJ zI4GOTP6L)HewOqzE&I{6V8z|H+Qq3--C!`H;+siRbj qRt2ej(rTSpm8?gdEF4bP4Bn%@e177WKH!g6AkXDgV1=^AKK~E8*TWM4 diff --git a/docs/build-insights/media/vs-account-auth.png b/docs/build-insights/media/vs-account-authentication.png similarity index 100% rename from docs/build-insights/media/vs-account-auth.png rename to docs/build-insights/media/vs-account-authentication.png diff --git a/docs/build-insights/media/windows-uac.png b/docs/build-insights/media/windows-uac.png deleted file mode 100644 index add461eb50fd62ad8f0b77384242b80fa0a2f2f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37564 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 diff --git a/docs/build-insights/media/windows-user-account-control.png b/docs/build-insights/media/windows-user-account-control.png new file mode 100644 index 0000000000000000000000000000000000000000..59a96159289fe7a8e74a755dfc0b9df9cf7372d6 GIT binary patch literal 37212 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 Date: Tue, 20 Jan 2026 16:32:16 -0800 Subject: [PATCH 2184/2255] Renamed markdown file --- .../{build_performance_windows.md => build-performance.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/build-insights/{build_performance_windows.md => build-performance.md} (100%) diff --git a/docs/build-insights/build_performance_windows.md b/docs/build-insights/build-performance.md similarity index 100% rename from docs/build-insights/build_performance_windows.md rename to docs/build-insights/build-performance.md From d72280a8be53619a57097c0dab1f4bc24693f093 Mon Sep 17 00:00:00 2001 From: Eve Silfanus Date: Wed, 21 Jan 2026 10:24:56 -0800 Subject: [PATCH 2185/2255] Adjusted uac image --- .../media/windows-user-account-control.png | Bin 37212 -> 121314 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/build-insights/media/windows-user-account-control.png b/docs/build-insights/media/windows-user-account-control.png index 59a96159289fe7a8e74a755dfc0b9df9cf7372d6..7bee87290d720d248cddfd10fa160fb8a6ae3c65 100644 GIT binary patch literal 121314 zcmd3OWmHvL^zWgOMhWQ@kXDhDZbd?oMmi-Wr5mI%P^3WtrKLq$1f`|Bluqe>b9?{q zeShP9d3Sin)hp-hefC;w&R@;*TwPU>5RV!Ug+dW3E6F`Tq0lSgUn5*>_&(30qYhDb@4%2PFmCR z@mi{fk7nywoBv{p{jxX{)&nKRkjq{PY>e_h_YP0htn59;$Ky0!j5J)s z<*YlfL|+bNWo5dwZ1J*d$Yn~>-BMUr5KB%zwK)Au$z3h=IN2)gnL@i{|9k6B!Yu($ zDHKZH*$;*5bZ+E)E`7do)r(v4zW4Rvse_cV-sSvDFf@e}&g)3B&5vGA6oo&F@J z(`yY?2m0RAwZ8`Eg;S=lWaj0__vyy;+6n{|NM$rvV&plkALca(7GVUs%r;l9p58PW zU!cTFO?14y{=93yKG$`>_T7$1V$1C5?WIoH4P*HiXm7MBwdaH4XE#%BYz* zRG%@vxbVQFtW0eQU2pw8hpR9BdSa1_O-!^tdwRfiue!+TMse$`lb<1P4#(O`g{Wvz z_OyWr@-Fw#a!V=%WCIA$f*vyGeY5vQk8#i6y(kLT*dDi-P$5nqzU{YsRIN0;bh+qb z+w#@SNtGp)kxvbe@b&Lnq4({5N~N0~-Q1{-cM+!TPEW=seMOhr-{-jQ%(UnvyrE7O z`kGxnktrf;mB}z@{|(*i`}Y{w(xAdx2}s>OJr@KpT$J&v2Cm02hbyqTN=yxf(}$nG%$(rzrX zZrN9rq@H5!CM4H+(8u!Sl!~0$j%rx(tKHUyk=hHPFBKM1V z@>Dpb0h?0a=keOAvv3hdWdB*CLsgS$Y1XKR>_ke zpE0_=TaK)|d!8IhW%rdl!3{!bkf3IRf83FFQgt@y{BGpiwJ(7@ zxX>pwy;F;(&ZWg|v(+uje#W7yxxtegQmU#%X`X+TQ|=@YOOwpZ&Z5PzO0PZD)iy4D ztD*lesw-K@?9b2F96Z-e+R84{i-frJ?%iVSP?-|V?Hk|!Yfq`6!S~C>Vj`5c@;INV zG0Epn4KH>xU*(AVoXD@ReT76?qHve%zv|Uzoc!pllU~Y^261G4{CMeL+Fw%8ZY;u2 z*>`*FNpYs*bUleu`X>%m!{wEFMqJhYd|7v?L<<2Sq4`?JhL*qNT#QQ06cb)F8+8Yd z2UF2BE@MW#STZnS!?Vh!t-gz;{Up&={L8V<@aB0W1Dt}Q7;X{x*av}C8Y$B>oLY3B z32G;af|~-Y(w||ogb~SVS+Z@^Zc3P2S~lC2Hf}gI4vgW+Cywhl{sTt>uA{(rs4ZNNLBqA8E{yzc88lZ?hO>NUg7Rpx%dyD+;?Z*FQ=R~QJ3jgb zA0=lAit(bx!Y^?7ssMcL?hnz7xbYTL)XG6!4zg};x6hAyLJyBdZtSj)Q}TU1WIo)N{MRyko2yI;>s{_c+0FS)^KIZ9uzFncycUy`n07X9$GH#qQ-WO z?D*F&V-)FqF+YC%STeru&{4*S60D`0E;NjKl&{rfTVc8}QFC}QeL=)vWaM#^Oy*hk zqduLkfHf3ZlJ9_6T&j4&`Mtfanw}=-;-j8G_DMc@@#q;R;eTt)l$S*=g(g6K$+C

7qCs5oR<%;4i{D~nOz6;L_|CoA>py1UqTL^2 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 z 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 z zGsSQ3HMQY_v+h9$R*use_u+66d2{sbpHD82xg1(K+U{7jv0Q&kw#cI1Q<2O{F{78b z6(Qj&)w*^8X&;*+V;9?WfFF;Dg`Rn55WAaE5)U6}Z@a|NYh%aBrt^4yczeh#_l6 z-S1Xxe4c#^S|~9a|MXxEE`95=V6u^S>uu%GXBs8`??-9}&07vT?1PqGzERd7QY(13 z3wPbtQgfY-g542{zTR@{+J>Ji9iOMcmoe48$kFSjd%$)E&$a5~_Hxs=KUr$zrFDeA zy?f`xkF!b%M>`?bo-WN{yxHpb6rK{nKZ^t=u7-UczDN}~da?CyKXJR9xhV4CPTcm+ zZI*NGAMNwEZSd!lem*@M)-=)9->b3XGK*PbY4N2|G(^J9|&Q2TLazvsb(oP_^nC zFzghUoy>hI$93dDUG=HE1g%5W1jxK4A)`t0=uzHV_w&HLXCu33lMaXVT^he1uv%sh z{%SDzy-y=yykoKKRQ-(zW7p5)ja-TPGf1` z2FG9QEMkvDY|KW95KXeT^kGda^WPUD)oW5p4MK!u()y+kA8>SF*RyJsY8cv4kk-^G z9_qk86tttkI;3~9es~FVXctObS+rQ5kY2lxR$Z&hY~0Zq8y~n2UCpDtYPCL_U+-1dfme*f4e4kh z5J{FW1ezuR78CL$69+ZkI|694kvS5o1yenXWzaCYrDl6&M9slcYrEB2d|ZS zIVf`%qQ(TX(-10>dm#U#B51YVaiS%C>7+rMBG0gM%AW48vvued^C;Hp8y%R1HY`S^ zLFZK$r`omi$+74#q^ujVEGI1@G!=($ezc24in>0{nX;7Un zWHFcd)vw+7PcEsH`}L;>2RdS%csNSSW>1EPt7`lZSi0mi@4C3SD-#=5x%5Wg;7UiX zbp@VDtLO2kw#@N+y)IfgFsG7j^^0d&(ige?6o(KMY;Xgl`y_R{F za?ZKpm!3y^?JjqI{L1<2S7FusxtU+9m9Nd%Ee#a-2+dN?ANvxp(phzukl%WXpWf_K z8F)2VRRTA^i=J9taX}n^!LcToxx@Ey?4;av@$YAF)2=rXZ!bG0_XJg{AU(5hxgCOLal$liD6y;gyo+fBU7&hjC-s8zFd6ZHRCIJ^?@_r zjvuks6b}8KyvV?GyNGi?Czlh;v;Xca)91+_>la4~m#a$cJ>9=fX6AnB8FZU$3k=fy~KsaLt>}sr`H3KUO(zFyq-PSbyff zn^(CpF`2laeY|nG%m01%!y-RrrZpi+JTOA~=jHqmaB{4P5(Wh%bKq1j(=B`_`Uj{*M-HP;1c`aElw0UxlD6sEa|oS`;B2yQ->Bt%vmo8CQ8u{O)Xs(+5a_qk=6U@Bqd%gc?^1q+TvfjivyW`$}?{AYZH>;pu z=d*wR{n+QC=3pT>j{SR0nZK@eY|0K!tkpdF@6Gx~o_+l9zjGb?{69Y|!j=Eubua|~ ze=mVH?92r?t1>^X*uB?hVY#Ne!}ay%szuQmOM^rt-~RLEJ4`1YBz=6`Q>*W!>&bP# zm{o7>|E+-?+cQUM7c=pCe1J<9bOgZ1Vdn1)=^{~GT* zFLeH&)qibApG-P0iwhS?V$nr_`Vbh+sg7UMJSsbTclI`S=(eA3jLI$c6H$l}UDaHm zrXue602L(Y>7atbpn4YSR-FLX|Fc*-=93Tg2@PvQ6$;^^yRt^X*hI7LrZ}F6j>T|{ z2GIi28d7lq<$*5XZv+qB3MaV20RVv;Jj|L&B=dI<0T{(94Cn2V*Z?5#=?Y*xi|8z-!H7?|Fz`NnDOI8Jdlu;o+dL)XbQa%`} zATL11jd?1HXax2=gZmswOo3@~adXcGs`@GC-`BgtVf_w6RhH|p1lH5zgG~pq0^oCf zskCZ(BBlOJy~8z$=RSYa3vWX83@`!=XpjsgU+Gp@0X{MIachrl!De1 ztClhWNe%vq!nL*;+zR}`Hvn6s&Jx}do+fSv=#lWhOYoIb^OcQhs!mi}! z=BB2^+>aa@idy0a9k}DelsCydUBec#zr$R7i&@#BO+7f`G8#Y~!&%pIK8uM7uMFIN zSOH>k;ygkj&;SL!7{CwvzZ+&iI8)Fy0i;yuZqfWA#UeHR(0;<>He#;k4txDrt8;Lm zrtG4;&4cNNujilf>)IdKgsCoYOb<%3$vQ^d0eAOT1XZ2=yaTN$wtqj|`cCK7W7DQC z8S2sS8~en58o!iMw;!$&Ifc^>yE<*4zd-}_5@6o#a;bS;SHYTsqX6Y{&;XN}#2p9> z$ST3%aZ$AMQSsz|PXoC-cnyOG#*aiU91-_`A^8F<1462>T4q3O|GK|q$AI<(fcrkYWoi!iU@unt?h)fyl+=PKV zXey)u_y<{ov4U&l{Z&w$q5DrY791Po@pREIBC!Hku#yME2focKmk@s|@Rz_UwZ{U( zJ1xCa|2;ek&nd9$T}}#|>jd!yAaI3%Q)t+yM>6qvf;d7ur_SOg1X|#UlXVNcWynMx zz~9-vGb&=PybtQfQ^!ts^@KHjV85pOQ@UF`Zw|5#rRTN?x5v)E!iRS@-u|0WiAiJd z2%HBXfC=x&!gK?WMKpxbQ$pVyXg)>(@e*ep9S;`M#VwDIYW0XETqD;XO-m};cm z6W9`?6wLc~@LRufy|!UP;J^?b0O;u0uMiw)LgWt;h)G*Lnv{@EP4y2km8J8j|h3J+y2>eb46@$bhE9|52cP#*F_@`$;byC*aY@; zcw+WTtHhT_ll-LY-~uPf>SZQ+Tl3j#jb*!n_vwnKuh&Y2H|)8Hh)Jgi=c9brkQ+>e zkE}J&@UT4~$ThL-VxHabkHTDIr;n?7i9dk2NRxmCjE$Ls z)>m?98UB$w{V+?_$eFHW{fW06sgk(9Hh8IL(vLU(%#{Ad+V&WzC8KWrYlcz)!wG6XHN{ zM6W3GXAnP{v#8t5B#(ZU?9Z0j5G>77tQ}?Tt$6g6ybwqZ z1=A3^`^rjYCLGl??i(gU6gr^|MqKttofPPRDh7&o=ZE(%sY6#P;5e~KP1Jw%lWZNX ziN-sk_>&(pRNqCL0=G<7r9w(KX-tjBX{p^cGH_Q4TzXKIQ|P*seC0XkQPXQRK!}kx z+)I+N8+;g?}z{4|Fkp+D+RC7VM+NV3VYqxA?fRN|Hg~ZGz*^ z0s)`k;F7)ywgxob$p&9LFA(0};S-X11 z`p`dmMMEZ$TF4J=ddJ>?tcw&4&@7YT0d$V2bgzDzg3+nxY}=ECQ>7PvGa|hH^p3nw zlM(QOn8De3|LBP35}aTZ`5}-;c%U>5`vooow~=hE98!VzMZHdUbOaX`3PqI&xOip zpO3Eri{mX=n8-sK!`jU8Xu&asDGL)56iv%O|HJu1%LwXA^bHYPPeLCCRqkJ(+#hfx zXa`p7?^Wn8KmQCyJ49jm3AN50$H^W8;uPS5ZUT8IN=DL*gbI@N+r&5k_kx^o$VDi@ z-+5ZoOvY|~d7l((+7Qkk@`E7YqB2_b$NMd1Ep6U%OB?R9&k5Wp*Dn#aC7j1Ib=9gT zxodl`Ml0UlFWA%Bd15q+l$J=eRGqdV>Lnz2sqcmh4~`W$PL6!Bmx8UN$XS~?y*3(< zYh8Wg9?7F47XTe0=$t9~MAeUojos_O7X>_L_3G7N7G2n708Rp;sP_*isfW$*RZM?TIdvaOn=$&rRs%CPl8-i+PfIML~O zVR>N6b?>n(wt}F~U8Q9&!m7S`2W&ZBQ`tP;b+z7lu(jWNSI2#_j)LO207Fq`=7fR- zC}slHIqnsPbs)Q;JvZa21jwnPuI{l-q{iM2Hd0>;-!>e|o?4dLH(X=cD^uT*TH|;& zwRIP_sY71Nmo{hK^f1Bh`V^eKsI_olgTRk9ri3;jcQUP2{5Os@QUj;y)_KfLt>Fo= z{1o(hb#9Y^VZ+g%zs{Hrj=8mOnBs%J^RJi}dEXfGV!V$>i7v-? zz${j}bl6#I0Bn|A!hDAXhDK#t7}7i(o;X%?rpaU3-;>&%SGhw*V7gbyS2VG*J+ zYoN+`5#hmGW^@_9%j@bntF9+1!5zAC zzk2E?+AFdP3OXLdSeut=W^`V-5~WZeKOJ+;elX|hMsuP2th&z;Qa{r>nfoU2g=xL1bVP#Z<*^Unj+ZyFf3Q4#^Oc)h)1Ky?zca-0 zFomMr;W6KYoh*Out8sJ;fLf;j2cCxZ zO^PgFy;0(fngb^=ofA1Z4ZYD)RVCpG;bn8KF1l94F7%jtHThnFCrso?Qq*CR2{^Z? zy+7D%4FnNYPhe_bJ_tC>2YSzfL})0Xn|dqSYk$lQ$V`yF5i!YwUv%EWUlU*9bj|yKuMn?N!4uW<~NXC{eRqCI~ zw+OULr|i||4>j&-<#JA*PHG~{U ztN zZAiAn#4vb!5bYGl0Vz>%q9J?UF2^E7?tMVTD;gU)$ZJa(HZ;Mtd#f4VSlpEAArV3d zC*KkTQj}oW(s&QV&_phZBL8p37}4I4mf#J5IWd>9?Nt|t?prXgam_Fd{Q=${nM}EG z!SSi()qH{1pb#M+?H<*?{La5g@N|@Mnl24BdiQSMs3GQULJ=P9vXqy1KDZm+t%>lV zLl`N?KwTA0XyH9UQ-Sml4wYmYAoUvdHALco2?WxjlxVFITP1`)rX_} zh{;K4&Fu5k5#%1qPe9rOV-!pBdaQ{q7+QEw3h*7lqN^QW|5(5hFAyB#8MY-`K4^SI z`2gZ$k)K%d)fs+Dpcdj3ga*G@H0$8l&m<^xQTe3UMk5n~M>fy_a7S)=dMeRqz2szV zyD-_Szjp>nkAm{wA~5~aZB&v=F$q>hL>`G>PbOPPY@jnCViw#HQB*ziawP3NNbdxl zfqhIKX^>Ep!y&R7C-FAmh;S>QCk6;-%Q$VvvFAyJRP z>^oD2Crg%6(2am3_^P2{eCu|c>KNdqt<&GvH&18|2!#|GL5c!y1PfG~`d#~)XGw8J zBi~1p63X$iGVfn2LH*CoJ|kvBL?TdwyL$lf06;`3NbDA5o{+ELc@_5B#Tsq^fgX;O@+{Yjjfr(e^$ob_fBp3rO-Mok zh48gY+<(n0mA!{Jh1Sm(Qf|HTV7Xg?0wRAAB0(|OvJ8HQ@0-p;5#fh%$i6!-eDgsX z><@8;ANX>Mmn>06Zs>a|sAas%inkp*1m-3pLPFPxT4;=U^~M-{YK(mJVOCZUz$wek z6J`LUiZPx~?@LdQsxaKNSNT-5Bnf#t`>P zsGrgi1w~o-QcftX)F~)G_u}OA6>$f5b1=Ah;wIQk+$x&4BG){`^ZSg^zR=8a`xh(2 zUsRPyqU&8;Q04k!`$krE?L|qF1#KfJL#%cX02Sl-Wndw0TDD*g6Jy`LRp1DT(yTss zo|>F1KX~MbO4HS`;~2)6;R6dFUqnQBX#N-*6GL-ZjAp80&Vp?bD6wiHj8%RjzQAgd zLCZJFXmF2Q^SbNeVnr61?E|WEwWv+HPCZ>?7`KVY%7%eKXS8wIt^F~=pq#a%#uTHI ztQa=8dx1!(&W`)Ik0zxr{^JidJTZi{c9b>iE zI)GWuWgUAM9_|FTV)8}Dq0;RP~$cD zT#nFH(KGV;#6}-1QSD7jpropYa&QtxD z0MP|O)nV7_%3Fluf}Xyg2we?&_a0SEZc_tTP5vO6k1mvhfv|+c)+@vPSg-!z1g~N& zo+Xc?st7x}?ke2QRv~i7zej22N%UN*N8s~w6A^Rsg>P!f(44`c;#O6c2sR*;n7;7P zbS9~RFkG8f0ltw?$9%uN=g)5r0@7j!VM;MXt$Tp>Y4a~u{{?*eA*|eHR?M~WUSseT zabkJn)3NmTBFYw*lnCcxib*lfmUDl|N3%jLY1Lw?3X;P5Y}%X6%ok?NoV0`8k~$JlC2-66lc9j9EH7_aYV{6W<+AQ}@COIM$M683|K0?2EfgzEEnh=?k{OqR{<&5O8Q9_G5^6oZoys?~9qPzFB4$(QYKJ%7YLLBwDqnhU;U(Q(^G705!$25;TOk-=dMFf9JL7wjHpf+mC+u6i+5i=rxu`Y7x`h9MlM zm9Pqx|9h*oiy!Bqk~q7=ZSh6Evv}FEBH3Y#RVn`P zL6nSlwe6z%8Bnp_8GxuuYEVP^ASNnS zpWk`rlZ0sdYQ`#Z%EYypjFlv-!Bk)`R7fu;;20@JE|d(M^Wsmp=5{JPK+jSXoMsX6 zqlv}>r=BN092p=qV06*@n(g)@vlR~R+6z6r;{K2wufEiL`m|f?slNJ*>5>UWC!G1L z3l@mXyK#N5pEB~M;<7R^lG%c~E+K)YneiJB9uc^mb$;}g13Q@#9Qb%?Uu{RSGBq3{ z=L>dBWGr(o4pxftuS-fi?|y{_WATa=@48p&1TerJ-U(5W>IL0vkfJC98-68wKf=RY zcm1ivDFHY{P^jLEUQRM3f}^)vDwW3uPI}9o z{gz%W$wU$2M%-{_ zW*QkR$GNK?iFqqIX276Yq67uuOHiaStd=v@{5TAU2n#_4gXT+t5~mEgQlj96ZQ8 zBNHb(IN0!rtX@rwa*xPxpy=pP_#EE#3F#O4J_B1e5;q1MO*-Vu1FzLqoyW1_^}7%>L~*nRH6tYC!;Gc&i2#~B;6XrnM|S0Kjm5YEpub3x$b}X9 z1}w*KF@G}+v3;K*F@g7l5MCw>)97WQIfrUT{_ur3GyuqV5$UPK1_%>fa6Yvn^`mMU zO9c{g8hB4Wjp*LNJA>vF*nGpXtlPDLu^7l<-NBo~D|cL**a1;6yiT1^k2_>e=Xy1{RB25kmaj(SDlse#dkbHor~nrwssoT5LI^3_esP6F!yZZwVN z1>L5kL#BcrhOICZA&cEV4?RlSs0q9qyJ8**ZIdOG;42FAyUeybyO`1>5`mSVd=-3B zO!{duI|5zu;iE^ZU}_n7{L*sRYieiFWWX7JBs6E3obc3;ZqkeoY)F#55D6|Q8Ag;j zw*7C>;a|kZS7MBD5v0ou@P|R-+rKrAUv@!o5ntTg{ww^1rUhl zg;3603x`Ged6=R=+CmP2mbaOiNH`3n06UA6dk_pM9aOiWiED((JgpJNtAi3!1$ifI z&=xIQ#-hkVW8ttK(M5F08iR}XeDX_1X-`t)z`(-FwJ6s?wE)i?0*OLkU@az3(y)a{ z$WDz1q!P%;RSTdgqc=v1`kc_9CfXV(;0TexWr}bAN7c`!$b!g=-@#N7HVhm?cDi8M zMkZAFnO%>9KRjt#e9Wb~f#q2a%Q@eEZzN42a`<5!ib7b*LUc~(Bpb5^!Bc~(G%Tj? zJ-*YMUzBrpnRY+3G&2(<1y)ZT9c)xtj8~>@kPlw03x6T4efL%cNI(Vc+|}_$ABL3Mkg=@cS!@x({fA zte}G)#-HNi!X8r3r>N6}8Yn5u4H+aFR!cL4a!IjFwxw6Uy4}3#hjKcI>QD4#xr0l0 zqdipwyES>*nf8h;5rv;{qC#5Z2j$bJ*^Bx4_n*z_l^jGt=>ut`B8w10vN5uAW59Cp zfjWL7$uOlpkMTT`ugB0P;Yz7fL)udO?%gWXGACr@P^!TD)(;HrF5Wau@gFdJ0Ji>xT#zD zLCc5dmiEIUE(}3EsmY&!zlZ7RS`H3*RNZE0-={f7@70l&B7zj1d78T$KJ^R`d#E5q zl{Nvf-D+e}#xf@Xs#2CFNP_K@A!NXCA($r-_LsGKIskIswJ-c~XMFt=7!FDGf|R5GdHZasDQ~ONcKnU+bLixLDr=NB7hP$D%A`K*fWJL&WJfo zNMViPr`3+A_dXZbKlsISgC79J$fKp}fom0UYe*}=L0=8Y=~7QuG_7w;bRW%Ig?wA$ zEQ(9H?81QTk%0ovl))#lQRI_1bFZj&B@zi0z#B8|!*q&uy(^=C!J)C>y(bX#y-==q zeg95n8`X7?KmAp7y6iG49@8Wu_Q_sru5dHyvfJt-1gQ}N;0MvoAFfLN*us+Us_W_))KDC3_t)@)hB%-}+0p?Cm;&qe`Jn1TQ@5PZSp6Del{4p{@5W*2@ z-l`uLSoKsii_jic0;`3!TIk~*emj>VW?+c40|2H(6y6p-*d+nm*x;-hYnTgu+NlYL45h_$Q@BMoK!MCoSA)W{rN_lnoSBQr;8A2 zif>L>O7hu#e^$5`pq6S6Cg{3S70MBK5J%rkp@}OB%F{JGlTud%_PvATAF)+kMYB1j zvCoG7>2n~xcNSVD#%>hw1g2>VhlGZz z!_wm316m%)5#oh(pblprqTx5X`pDSc%O2Hy!^N{r&IKj%0|elWi-s#zH~4}N)N48U z7BLXP!3Q8Q7h~l<%wJmd;Ob~lp>^e3IW!;K8_?%*|3mt+&)0Q4>032sGcy08CW^PMx4G3f-vu-E2fPXeFp0TZhBVQm%aIA_9a42I;s%l z=cgEE_iZ_c}c@T&dE8kPtmbZg9e<>3IV|6*U8=zF={1Ypm5Ky8^6d})We|16- z3k^C>3fLw$y2MR&jka#^YQJK$jLexz?#kLfc)8mpxuJcuO_|$sE9i zH-i`z^_K<0FIU>J?UIt4a}G272*=R@1p~{_&~9JF3qIV$bJ+S(5v;7G(uITTWuo{K zrXz=k{Hgj2awk!L)-=6IVC8r!475$}wamvls0d{G|2#j->SUEYx2%*`s=faLZ zVAJ6C@$1Be^?{zS_q|zq#7D#(DP$ct1oI%bxz+kX6n3f-P-Q;28d6k${n_^B9(%3IbzseXb5Ld zEUp$J+hE{E@+%Xgw=iJ!LaHw=8?7!H3hv_tyIwTM!G^$iW9#;!Mc_>;`HA2uBe{8Y z>cxk7`RnEimu$wPqzvnl*TPpN$z-}-0M4Xx=vDQjs!UG!g71wvyg&ebL|Bo#WWt;i z_SKM6v`Dtq!@Pk*Z?M2f8oE8YkMM4=)^)L_T+W#Wpq^8h;z5)4&$K z{Aj&*?`G({w47XX(TbRH9k?q*!yix(aVes5at470-W^P2tc=qeDFJ9NH{p0Df1Kg+ zL2;fF_H`Q&A@UuENpD4EW&WV&1k+F`>V=H2w)T2c3IC6=FAwK>-=a>bRD@C_V zL=lywLM0IyA|YdjOc9YOM8hdEq!g7hXD(x?3=PTwTX0Joh~J zoD;v_cldnvXYaMwTDt_tE~tRnX4Xj0z;rRkQor}K;jta%MR4Fe(MP2qzUO+xjLa1w zK{)S%L1E#!bJ60(G>2oyyOw5jNZ}ce@enVqJryxpgy4a${e{2wo$^6(z=2T@#2GGv z+ZC1zS&ZdF3fvjGF>U*yLvO8pdV6{b>i9+m2TxeUCwn2fzwzPP8sW`{ z4~u#8R?5jeopYpQnXAS8LYpc;c{J>8*v240$#~Ug&$BBOy0VHgo4NS&v*h=uxvX);<-rV3XIbF zZ9QOZJKl+Np%OJ8{(!~N)&Oe&$s1T;Aveld_?3Am7WJ-qC!QFyirRg6w+pn7Xv2kK z5(sbeHn;)Nth5uZ#zTnyD}mSrw%ED3u*US%h7|sp!~&#&eZa(WtySP-M6^Vt?O>@e z!3#?r@7B=V2zE;-im)3l>5hxuA92MSC0ZF4UX*yk-Xm?d%ogNj&67J|YhzOmZ2PZw z4ZLW{&$njovbrl~C~kqH1fU70+TPg%JVFiI9w68OnVPW3$Z8lMB6LF2y7(G~C?qC+ zdi>-(cgfwmLNxVSj2C064HX6QPj6AYlbpcxNBH17ac66bhk?bN{&bS>M%8yqZ#U*l zk~xX*2(|;h4{1!T+v1ewTWfSsWFd~)wLHQ+zTD5ch>Up22Ofskulz7d(j-%|Ch+}s10Zm_L3%8?Mfkt?n(J=1Txw3WvJ6E z*H|F6LIod$=D10EHH|X5abuCeb$q-Z@z+R2j<9+G_|1H(pmlXuc>S^axZ3{Dw~Oys zLDoz}MSsP{%VE=GG+pAI>?5s?FkQph(u#)R@oP%Y=#bJdmHwxtMVJ!IrQ0Kp^(^exk18;^G2I zNAsz#_h4$cMM^E_{WfIn)bo0R#EOQAI-)s6J^OrMyqQkjyV)Fc<{X$(`+Z$#5o((A znBU7b-h@xae5IOC`IM%ycX2`z<8%^MMWz=Arie{&m?AG%V3&_kSc&rfy%h4W%sFnl0Zf z52|hY&4wU}v0SFH3o+lN#Ud(m|6Kc)b0Tfjob4lM*qris{U z7@+`k!-oaGImsx?e|knR|NH2pm6B{9_SbC&!-0aL&|aW7j}v|UiHf`kkohK$|Q)ob=%QP*ze1QwQ- zR&T#h7ElDd%NVRg*WFA*+Z;uHX2;_uwO97t-nm#$Kx)owx!G7-m!ZqEgJ}mwQ6hG; zfWZhV0Wta;?j5k2dj}Ic;a7t@I&Dvp$#17OTZHx5jmQ5|tr7A$w|eIHm92ZixxTAm6rz zmw)!pb@N{gJ&Tl2J+|JMFYCyeYb7D6vi|q_(%%JrzVQGx;hVyS7)A42F$4;59`Zl1 z-kA0d>C(1X&T?gI0E{~-HcVniU|1zHkeQt>E;0k{Ko7R2N-G*pE>2dtb}_fCX;`8u zVR1(K0KB{v-UYT!S^XMdeK!=SbLbF-LJZI_G}PADf38PtRU+!c`DN+fd74WSCvxqZ zGZ_B0ql1D7N*Xp^-iyFu6yvg6+bwjwFDpc3Y_N+qv(PraUB2TAPecQU!o*hs-=7T^= zbl#Hb_K{JXx``lKAaMi;T#e6=0=u#evvz6F3Q?-_P~;X{6-I^5J-Qq9Qpnct^(qft zt99ah#2yc}p;1ZRfk0YG(layZgmFA8siQ?CK(sESHIp04KQAioyRdM&qx1_M(#mNDjfI2IDsXOculyWMIrNtV6crcVG20 zB|TW)hA&gF{cuGD{sK1X#1I(??I*{;{DCllj8_26oX30-@*2wrKp_qLq{i-}IE7(I zSoC9G!Ucp`%ZIy}$XXCA==z`?(_wcfn0~=63H|u^BkzQpAOCziYvDQ>{~=~yid187 zSyBW@Sv2z#?0<|`!-$(j@IMzN6E|Q7RO$4hWWPD0o6sR)6PA7lb$?=5Q zaGU{B;|ZYmqg+~mZnTBj>j$|{&0le8@)Kt}b}wHF2V6?{TgBWrY6 zUIZFZvtIH|U_O^kP&(LfW`ffPV7wW8RKOaP1YlAk(D%Fy zw)a(+Hanlb@(%nkb&~Ip%U9iSzjof;VOFe5oZESA&PxovnlKFpcvdBi;3E)Xt%K-S zp@V$DOkZBS8&e3p=!4dr*CyM!6TrbIV?NNI9~pgXl}V6%+|zyUmb^+N&z8T*f-|A$ zVkS?x-~**Ox|(^x1iNFgV1NJ&;Si1w9$tPG%s#YFG6!a++Zr3Ia$hSqz0P_z+itk^ zrugEY>^vMC&y*8|_m-1EF!GQ{ANHLG!Tm?)J;MbB6%|=c4~&(5KSiekn=kT*Kv!=( ziajJLo2K>dubBqB=H8<1_xZmpTlY(7KiAs}jyTpOTn9#gU<3Z(EB%mT>ja#4Eo|oS zCs@f2y-c!32fYdb7dq9+HFW}RCaxlFG4#}t@SzYy^^1ydv$l46Q}!F74Gs^yywB#s zmXHJqQ>*y-Uk$cQ?=)O6KT5eH>T5%XdYNzl=EN^ux*JDut2|9R1qwWD5FEWWdq4{zr`2STTvNda3B;2Vxg-ixtVz&@ zs6qIB&6*PimSI&Gt8fQ2LCL4zmjSzNYjeK8d_B1UB4f-j`BYo0Nhx${Fp)tG3=C>b z@(}(0wNgcXLzTbY1&u4u&bV6`R3SUaFt1*U=3D0PdSFX!<>m65fKK#WMxqTuBUE^| zn+96cm$2CS8f2Idk^Ah`4At4?~q2JjC#OHQ0b?~hShzs#WUZ(eLFs~?p>sw z&mBg1%i^m*lV`=)u(yavXgY33KYid$2f!i1!M9%wOLTCA&VmddFvl{>YC3cvGD$wq zOVL;4zP{$3J=?**C4=5TdW@s9Es7%w8&k3wRAln(MxJJ8WPJZP|L$J)jhR)Vp%?aw zUC=f^o_Ku6^5y1XzYLC#h@YFk_&!iZ;bzTvZ^YIN?LWtw7&b) ziIIOA`r_O_j^F$Vbr<8du33dvSc-xww1&&6`q?w;j}H9AhE0|2FRaI;F^8uE zySra&p0Ci~#kG7njSd7=17t3@;WmO)AF1i~7TxFiUEm1SBvN~>vu zGHeBG0$~3Gxnqf2N~uT2?Fj?S1Q*q!;m0X8!Lbqy23`0G3MwX}6~56W}jJ z;8EF{(oFgSMu!fS<2$H}#rViz@>I#}m8;8D<1LtXaeXjk_{A!8YftfN&D(SD=wz>2 za*OD*DJi%!{iZf{9yL5FmHWJlFYC+MDfu?Mb6$3JDw#v!nXz+SnG`V%`1L-DDA2B?DH$S9ZQGhC4 zDp=%cCjBV5;oo4KO8=aJc2&K~tT%>S)gZUC96B9%+hVqT#D_){mP_#$;Oz2*wu|U- zG0B+wWnGLu zq72@cScEx}^)@m%JE;1lE@d#&QA_>cjZvNX{=N&BaqY(SV)JAq`=E0407mYC?@e`2 z2OEiI^sIKs_XF{4{=%Q}w`LY{f4H-avspelDai>RErY-qFxE9uzC@Co`!bQ!gN!li zp+uM*HJhLliH8*Iu&yvt51@jECTqd`1y^Uz5hJJhSlQP*J?QB~`p%q(UF@eZ59H}I z=8=$XWOr35-~hJ)cZB9Y^aSF8NFj5(YJQ*T}4K}aLLCJ38#0BDM8ALB%E zDx1&wSL;S|n17r}^?3(e>#^R+M_0OPb;2w1PEYXp zwO%>|VR_!W#)}lp4(Xd*qW3rpvM4Uyl$qOwU(WPp=9mNC6ORB(VqBf_Q&g z-;1~GnL5c+v+WB1s%s8{Tjh*B0@zFh0}gQRYzTZ^oV51m$Xu77akz^x0RG3~e17#C z^Ef4h2NzhE{w&y`dh3p(nZltG{Fc5jJbLsQ z$b@Tvdj%XH%;sCUQUokKf?L4E~E2+I-z@BzeZbLkuH6 zu25s&9IJ&x6yLr3>_frxM@`6| z;i$O*9X7QyX9^*@UWQ7cv6l_B&QC}i*l_L|e|U-C6hv4t3zTyoHUd0pXD@5od;7tI zy`;D_F8BI!JJ{cOK)uQJP2Qi|{B3sZDm??xX)4ah|2P+4U5g<~szeBCclhVlK;a}}j8&jKHm>av#q_3) zMiNmFA3lgy^2~a_d&sQ_Y6W)SiEGxc-wUKR1W-A>06g#$*P@cCQZ_8F@e7X8G&1F(;BK8m(7{|v97K{M8 z3~CMzX&%_TfvrO;l@ku+w>ymC@D2qfX>nzU^nMz+#nfHWxaJ<#-&4 zr#gxW())x+#{ry{mL1%pmK3#1fHC?EWPnHB1BDXGe_KAnxr+q@%HCxt)B}*uJ8*(YD&j= zWyYfSvMk0;7sA8u9xL%_w{ensJojF_TTIf$6%0CM$=3x(pDeqj#nNcUE3tIE1v7Lc z`sR+XzI%Q;&t?ls1LR;aF7;c2;m#2t{X_TIu~WP__P!6bM#13r8t{AfMHP>C$k1pp zC>*MZe}S`rt!hmO_=phsh#ye|7jDv98Sjp2Y8rhdUYGgcsgztCvik1>O_6&l{7RYz zAhYsEQmt>jx#4cg1}akfPaj3U#E!OMm}~7O8+-etoSbW*ZXhis&C$an>Ag^8_R&lS z6f{7BV69JcEoqFb_|L7?p~p2fZn`!aD2><302}IX-j|-TK_aT==$?kQHccRR;7NEq zHQ}h(GK)r4QS&+&kB&i~b&W=M&NcG8QLGIfG18!FTe~$d#UUbC0@&FP_9S0qbr$C=k^<6xVMU;Tjndh_rE+nDosM5NNA4Wf1#U&ZGqS}+ zHk)VOtnSWyob6U&WDT~kk?-#xm~{4W!>Me()!f`-v7JC9vyl@#d=!v*@~vG*^*+;W z(YF+vlFmMkdJIYh1t9sudXw< z)xjLJ22(qsLr0IkL@=$xNDl)r{1C~nPrZTV!IptX*$C%Mf?^4;Aqhjs9tGQC{Ll2r zI7s5z=%fy8Q$|#xJ|9};>P$P3upnyceRK!$`dd$pC;EJtYIrdxUshN+5b#1IHmuu= zX~@HAZ{NVYcZ6rWUSM_Tmn6YS2qh0-vy%`fh>3+Sk;p#>quouw4bg>Gu3%ZiFru=1 zn#r!?lb56Xx-Cv$imRh$M1gVVCbQJ-5Zk=@I+4RUIjt7W_meE~bimYRdKgUsnU1w> znLz?&JDEsJ2k0YwMWtJXi7ZP0*04 zIBYIZ-x62%G5{9obuXFb#hh+p=L6#~ps~>!ol+Hg%)a>u8Rl?jZo>%g#-*ys!G4IV z=&HQ{;paK@{ndDU2Yh^#q3Sb!DI>*?1C<$Fv-gfq_;Jnl&)GuK1~8v5Eo{z*hesrx zot>GaS6-V6S2Mt(qe;HR{hPt@VhLYqD1(t8YcnsL#t9`&Fb-y|NTS*ce&#MzyGbuR zG7?FJ6FMN@Fu{-p(@8_ofRXB{o8HM@M5q7_unq$nUBEi>%>?lu6Qy5DjHRUP)6=^y z_kNNX{MhSIO$iHFo;X1RyM{|vyjBU}@F0u3i>2Y_ikwx7mS!I8Quq4Lqtkc& zHFRALi_W6bZkOVfwrAn3N^`)$dYx_8_JaFCmo(4W=9_YK{~n$4)@zR~f7m{Hxy?8Z zaa%9;2uC0+eVuX1&Y13ew5Z)vi4UZL$@l3#m5@Bv3P&03giXha-1U?5uV1rHc*s?h z&bvrwRIcVF$4f1lSQJUvvGs^IuVCtElX|zwH6Hv(n*YS>-c|uM#eRD<9)v2_Y-(lj@hl1)lD?2K z;|W&$_0{6Kx~Z)5!gIS%Z^dE8>N{0)jOLQ$!(JZqpYP^0V16grdDlo3g=1b^91fkg zN4+0#+ltmJPur33=+8u6iBsDj1#pE=MVwccRo8 zGVz(Rs0Z~&;_M9vyThAcO++LNK95cYR45wYhNQOtsh#)(1TY38Bd(ypqUsg7ytv}W zQda#UvlMgr&1a>@IgNa;@XPN@G7Ql#Dox%XdTvc^&WX7{7TPc)sfIyHjl?$yR;>{7 zt9x#K*;TUbLm~9 zOU;SG1sdQ{e-cWAV;RiEU3mM4t%C#VnfZCG7wasE|BSu)cecYd%p0I`=FC&Vpzl0u79}8t>{5o8a}r2YdD+| zSX=D(aB=qmGkn;ls;WwKOfj+A4g4}sxi+6l-raJ#H5vQq83d(+r`_-lT8X6jkGgN}z!p^=!Q!_kA z%hs_KPX_o1P)BkjkQuyQXKz(EVNvxSho`mmgB7RnN-ujFrFC<{mHhvNWFf`aTSmqCN=uN>?Ko0ZRt$NvRF9$qrbb{M6JZtOfkT{gv zX!u#D+`muLbt0?D1Rq2xJul%~b!QO&V`DL68E<2rR>PwSt70##B5<7_E;Tnd$3q-m zbC++CPLUyaaZuw43*Z(EW1ig!WY^rg_d-$~$IjR3$4b^tRIlkg|DkUj90@?HVR9O` z2ex8)kW|e&Uv-Jx%-&dgsf>=r%y}qz(FB6O66l%W+#Kasu#EQO*SF+~$uxZzmm{6< zW6B%v;ONM4v?23`S8d~CMM8z-<&A?K?~tRyqn`>A5@{Oz7K<;&Bx6nN07V*k3O*{) znj66#XAaUFi>I@eH`rg7#14HJ%+?ypaPZDojNgyEgw8AFt^YW*{g&Ij`KX~?>yR66 zJykqkc-AoPwf_*&?I4xIG~3F^eHp;?#Aw%S+&ECOp?Sgb=2fxrzM}$`ZhGxzZW+m) z$*YTY%wOJYcB3Rvx~G}fZ{Fpp@F~TNwTGFtZnfOL(NtK}q{Po<(s{Pm)Zx!kiQv)> z#=9DF$%=IYWmByCbp-s(qNA;)70vwv0@kuj^nO=re|OLFviH>Z!FiVH zg+=S6N_w~Xxw3oIJ!!I=*WRP3z;|`{SNt&Bj=6aT^}TY2r3;g8i~kdm+5VdgkC1(=c=G z4#9kLg=PCIe(W=~GH=u|t+qT~WhRpxR=9SurL_L#jN+)fX^U%9Ci}Y=Zc(p>%LPxC zE~;WyXJpoIf8YJ)Er)mA6BT{7PfX>P_ug_mp8P_o)>-~l?9^9@j@d<)1<}5-W3BU& z)3j}&alb=}DuvoSy4)S22Z<8c_>RyH)`c>clE6VC&t z9_@kFRn{g;(#)@xmef6t{uwiJ(=*aQBsfe`iur2kWMNpsEjLF6|At45kE@5vnMI^d zwfB@gtJN^Q8L@lxY*`7bx@lqLKgFGo7xc+zc+aZ|xaGEL#z>&7$-lMyja2v2@FqJ+ zzo8%cz)99iNRYrG zzkOIjvi3s6)UprEiuH&dFhHn;`r^+(GLv7lWd034m)FdAZf#vmOZ$oh6h3w;%=KN^ zv3if=I=B4kKRW&m?qZC|;*$m4>t~0*3{S1C{AtV{_p!4hxcg)er}uBbNuT$aopzUq zu4rGb-&@9bQ{~W1@SUPFvK2~)JQpSl;}gB+Evm2R8dfwZ)HvYI81?=_>E)LLjyw|l zWoEqn%HuO#UxyrD`5a-ac7HtX$D{GVzm>b%(RcKRx%H9uZR@5wx&l_%+1lE+0K7&c zAL*}SXDLICPoE?A<>l<-J#R0n38Fj#p$~lo^Okz>TU|4Arcbd?X1V|TnR$9a^;=I~ z$+EEp)$EgslOMN7BvnjHFzxTibk6UKxHnUDr>L(aGK*>dsnL-Nr+jCrMa4c(y54FT z_Dh5h*Uxv!_nKRy6g~V&$w;A{eTJv~^Sa66Qm=jy?5zdM;({yM-JhI}x;e~L+nwon z_lfrr?^cCEFNw*vu5Ycz#_m7uMqN6DgO|)Y_Gv}rrOn&&;dfb6q;T5s&8ssbjyo6U zBEk}#W4OHrJa3?JjT86%CN8!=6>k$?wURv*ovMK4h@6hMDHrSTfH_KI?uPQI_SUhnCaly&C8dG^@F^zT_X1~ zef7^s4m;s1S2>g3itmaOYN3;*}Gqtg6S1>gOO-eKX&+I2TApji7(3&Ei~@QAJ)+#sx9_(Mwwoh|CQ%T%O&)yjkT^ z{DWO<{$6I@oiNjfqZds#PK_M5aZH->`}e=QSG>q>D2rt7ky1ReR|p@BA1~%jSrgz} z7VRXkJtVE6_sXoqA;XRIDfrriJ0BSD@0`?PV=h~{{+-XMJ-7A#e!+#$MLTi?4+d^$ zFCSUNAZTwV{GZPfTF0BxaVk|xHm5A=zyImV)p@!M9D+$l|9%^u;fsrz9nt@}pbNX4 zox6X^3nv-=_Ye0*e3joRC1kk1bKk$$xBt*#W9f-kERKr8chCKMVQaR$IQV;Maq*7D zIsbm~m8-`V1C^A-FvP(Mszn?2O*yG0h-=E>1*Wsad>09c*U;bHWcMi;nnF`d; z|L?!3RW`e5a+PqrKYc|&H~+uCcy%E@{CkkVe;y0IJySN9%a^JB)D?ld#{U2N! zSO0wyGJhA_-+!ACz2yJDFID%$68iUtR2JVg{qLntX$#E%-(!fJOH1@WKjp)*r|jRy zzU$ka?N|u^d01EY=l?&yV(~4}Ta3s4z1+)t_OB7UnEHRecAd<1(~Y$%%!`g_-@X6e z@89BikRd>d(XdiVcb_siqF@4x-N z-8s=oi2tQ};Y0!(R~p+VmC!zwvwwoiHQgNz_7tm}@YKK>^9?dm64`Ql5#N{dz8XR* zBKx0BoV_bM-wNPRWRzN7SU($#q3cHPc`T(Y(4XEkjOyUm7CWu=zcyza^+;xWkvggG@2O>`Ri91LJXhl{N| zr3P(m#2sW`=ncziRaj=vS2@FEsc(66g&Kxe>s#1Y-L~c~Ohd7z%`rdWRa4Ub2t9dA zwAj7T=Y`m+FwOAC*(}ps_3>llyl-8f)=ZzcK9DDv;ZyhX)3n{}x_N#*wz=AZj0iSG z?GbPt*42HOnv(J>e!?By(o2^vISdF%DQCx@c2BsFHUKnDRtqxE&x%@oZ$P9S^S~D& zFFc#>q#<;Lf8`2>P$|IQbND~5+5V+Lw(i&T$>{RRE`>(Nh-(lLzDYl(LPa8`+BNmW zz@%u%EgQ5LiNY^yP%J$mlxR2NpA{c^9S6D0Lw@Ya46XhY{jRrrfzec%lVby?)hfi(fQQd8?T9MfvJfB$|b(HOx}#Rwul5E}_s0GXlmi&e3$ zUtO0YV?q{FxMcptSpG|vv*H1!7~V_wV^JQkh*Y+EiocY96=C$R;|t*^DYWzS9_h1t z8?3oJ6QaFh`;J9YIopc;21;NfwS{CeC~u4$%jTCw6{#_mp>siV+Mp92NETR zyw-hriK5hGJl%hY26w};5xs-!B7^$fo8(GUQW6KY0($dMx@mr9;v|p8s@S=^q}t=V znfm5o6{k08;B*BzM2;Y6AI;5c<@FvgTQ4R?dO1K=&W#3E)UDf?iVuOp`5H82**LO4 zLdV@%ePB;S(qKej#rqqHq7Ww;{)F~OqTutgKY*AHVd^ki*1$C)<<_!=NGbExvW5(o z%OkzBME4mko@7&~-#4#=CHptV9mt>|jIImeAMmNn8D@Pp@Z%ePf`)(%%sZsb@z)Zd zr-stQKu(j%`oPh(J=xGD!kUi?HeBCm&+KCLjb0I#dMo0i_6Su+rZCO%V_O$czEVva zp5LaJDTZ>4X3l|Q==P4Y!yyj_9^53FN5Toeh4bc^VHV+btn-IVy~24wT<|&4Eb;mM zhym>xP)iMp+{B@zCX)~1I)Stj-GRZYgm0TXJ%jOod!bJO5&pX%@1Hks$Lyu=Ezs2! zhV*;#o3vT-P|^N7QnF`46ZNfibl-1cSK#*Rm%ewZZrrlC?!n%3p!mTxlXOQIRJTT6 zzA3a%Kc`&e%(=Z4?z$4ySNhhDCEP_tbP_}<@H$~>PAvI!QqIw-Zed0 zX<#b60saRr((@ND%+QW7zPXL3n%iBVdVHAw!pNHN?j713SX|f@B5BxY&^m!Iclp_-DX2mi)nf~oR1KC(y zoN9XKxYIx7abb~of! zo7vd22B!@GZIS^KAJGMju{#!x+YfFXa#JKa1!U7-3hTjqf{DstE;H!%aGKe!s|(~A z#(xNvn8N1?Z-PlM5dQZ5&IX^iwzVB_j+}~ExUBgVV=$*tUwgZY5GrfOU8P=je}*NV z4A;9>cimhk$~>;Bq%gAV!sjns$xIzQrL1X%fSXVW5+6c|j}_v|$3Oht^E&r3m0{E@ z7;_eYwXr_kGFL3&II4MCRbZ2%q0G#722okr$2Bs32vJvKV)h~8rKEfspK>f}|59}v z#$>4vY+M9nRk)zseq>b_$ld#!anWm$vWe5`u@bDsv#pN#OQS28_M$}-@}Yiv*(NSE zZM^oz4!@tCOU=pdzVIIx(=$aH2?l?-tS^Lw2!O-T+}tejbAF$q)Padxf&Pr|kC<+Y z4SNxBted{-DNJLLAtoQvcuDRDdXA4~i2)=oG=Ew2Z zw|0Qj1DU;;eL}m#I)IK4>A{^nb*l=upDQr5LVH%f=${Kqn%djVP28~<8;>~Nco_6z z@$OcIL$Rz?n(B_xWlXBKoE3PCm1Cp>ZUU3UIo1E=%Xayd8~Mb=(J4Yh?beR-=wMbL zNr3ICM3YvVgFFlzs9lFm2ucx5PK@);HlTY-?joSa!$xmo9Po0WvgjoXDk(kDNU&IZ zp$yO1eQz+{?(qqkUaytm3jU)WLbcA%?wiXnk8j&NFm$rZJt}#7t<}7dCG}x-mN4q( z`SwQa@}7u@6t1vpv4C@Tp5)JJ1qhyip|A{mP6F6CR<1;YDO900bPy~K(zU{L0Vcsv zP&Ir#=dH|dk{*R{h3(M-Q3?hL-^tC*)mXSnp&8Mhd`qQd^#I0#taE4eQMGKl+Q%s= zACkr!SnBS+(ljbOQOl<$d2M-wToNa7ubbB)s^J@O5A7{wDdY~!Y3Pw3#5o;S5TzED5l}({^V`%ws zdl9WHq#`yhYqnPig-^hc7iQvTqw*uJCCmU0@K(NgcESMr+Fw$&bfJcYMbeL(D7uew z?_%$qFDUiOl9w@RUeKtejn|STOUAfzYapiAi~h@BZz*tD2fJZdk<*GI(is|ssXq^K zjXY=?K!btQ#n9>l7a-p@kZeJ!N&O!EgCkl(#ux2b8&((s!pgpLe5!DT@)HwDG!03% zs};LB6HgB6_w%O)$}!iPghog`@2A-GT$|%}RGS061Q^fg&8{#CvYcW}$ZN4f9GAlE z2keqZIZS1)^!vCc_(d$l8B~cw9&BK=lOK&re=GqQnt>_LXuVaS9h|DH#rpPUOiwbG zTN}<4y>=X;#AOV4(@_NcNyf5lN~)&qk&7TBx{|OkO!{Lc4i7OT?e z92}gVU@M-TJX|Y_y9f;prDTpQx1o;_+_*6e&gKTz!~4DZew?8!4s-_dx)?c-S;)f@ zKEE$PR(^%9Zvk3X(J*ME4+Upw_?x#o=s!1o|9Dc%i$-QrCl1*!aX_K}rnWEIbe8pT zFAn&8TMolKOc@Bd7KNmQegU3b&tCaV$UryzOJXi})!cNVtI>^t8SaSISmNprS8?)( zu9C4lC#WA35HMP``c#JZlrvr-S>?cdi!|^sqr!z+2R;;COnCx5P4r*sL6I9f^X(s? z?e&5yMVejmIns-f(=x{rp$ZF@dhId(b+Bqe?n|R)QL#K+TEC@_2fjl&6EP5LlyV-cc-QMIeqP2&h{{qhz!aK@ znL#U+J6J&=pT~l0;Ql5n#uK&2-_9{wi0j}=02|Q^3?v5`hMJ2CFjdKH9YP)eDOo<~ zh%cT$?}S(7Y9xCKceNnI_y(&=8gox3|76UM`Pf8gqh2UZGm!8r$ZHMCLgM-X>Lc15 z#R5$28>>0?=L((`hgzocO3)Kjm8S<~&}&0dDg-AmDD9=u+eadJs%I~&qpKbW3n1!| z4L;&D_9j?SWdB97QrOv3E59E-UFeKa?v;UdSq|Z27nQoC^`dC!e=;GV`N=gDT*8@Vx?Wb9{%fFGCrQV$;QTp zMrC)x#Ows-JBsONoP*m1lu^i_J4r3oAPW|b)zfOE+D|4wg;6h=1mI*Uf??dD_Y!XMog4&&!IFS~9y)3jG<*-NQ|28ban;>s z@F69iICwUiXSZMhpkQ;VT4g1LBbj=gJjF z=n{FeqVGL@8c((r18GGO6mMYk1dIrU3^{z#^FR!FSvczf+ac)oLeTN0I7OBc^nNtF za!@-_$a5&{7XeFsTw>!F*!sbOm(n4qy@l&UkoS;>hg~z~U$~B11l)d4Ck&1Y-bj@{ z`K}$Pa{tl^z{c`~mnrK*UFNERAMhQif@!mO-6JX4I64ke9;SUl=t_p1QL6z4Q+;sZ z>;Xro4+69P%{QS~CwEQaHD^OXftrN+88GRQAj=>qvUYKftm4}F`Rn_KWbsJu{-E&Z z4z8!kt>o`Ww1END7h)w?lw_!glEV|)(E@w~`GKL2fJz&=H_1^>J^ir~iRbS|*93Sh zKwxt5RbMx_7+X&S7Oa;AB}sp73lzmfIdzQ`FSW`_6h&8+q`6QqeY8k=D)qPy8`H?6 zD{uy^-Co>RE@K!TE=jy^V%P;F1CKm@4z*Szl_h@!SkRUv1!80o$gFdjTkFW>_1MfO zP9+S6M&`osA5vX%auDq*+q8lp6uvwd`Jh(x5w`HSvX`K{mgC-2=Q{!T`HW-i6E52V z)p_IZIaq2$yCF&3-x3`jM*RFZL`lEbgQwby5O6CovHT2{Hn`@{yG+jYu39j`YuRz! zX1cZ`)a=*W_}ongqbo$C;7!%g(((d+Vp|+L&$-qOnyWw%fkYj=xSsC~2iAee2R!Sb zpJ$kCrA}tbCg-g_`d3BB!xv*@*@~DDwNhwkdyShenrzog9 zfI*6dc>1~Br8>)QS_zQuZzHx6utH=<`mSW4bkpaTbM^yiI`yvsf6&*<*Azz_b!)LyKCg zL+<-1lQS2P1cF~2+3s);Zblo^^8Nq%P7O2}jx=B^m0@7ba}dVclhWA_xoo`5b4`^+ z&)2k;6I^9@bgsgvPB7s?E+gAgoWJ6+`+##Hb%*NZ2qiaEe3em}WDeFbvAy$8ICb)5C$#QxFErWSAWME?WaEx8$PKcjUL*{Z_7(v( zuU=L6p9ZfTiG#cc1P7qm^SQPnGP2dzj{%CK1m zlG}?j%?f7Gxk4)((Hq#MkV>)stkVm?M}J!IAJHGV}IR!!M7Hn9N&;!wd4 zB(BUo=Ab*l(d(dzNj=_C9XYxJA0SVtwY$UTsOEpnwT~74XFvSC!Xyeq zP|Z`gMvh3qMB}=c8IEaaqhC2MvZy!WQE)tmB#ub?I2Xte6_qDQsEB_waDizD*jS&W zl9kj!P;vwWHjbl|uGIzHz^j)oy{^1ak~To#F(H?rvC4q1q+vR+|MjNU`8#$-C0mpH zfcR3dt-69`;RG!Bb&>liv;lx@U`N0sZwIJEKfkRwB*4j6%A z7-RX`WRCmi}+{r3`jAx#m%+W^Aev~L>e3FYcs$V!k`7blserKDsH zUZ`_lZ3=x2Ine(}AfLwz6w{$^*(g@#&AGF#u9PH`%yA6fh?^)}V;0BHg1>3h*@qA`uW2$aqgWB3vUU80;t^c^`;aUyvu{jTn!5 zrE+~Zfm{L!3Z22@eXpzl+@Yj~X^JNf0|LUy_DeO0ncj3`HY7YFbM)SfHMv!ll{ew;C-Qt z1|z2o&kMjtS&#D=92CZJjyS{q#F?mea9OPGzKzHPL_vn6S>2jzF7vFt$Q$!oNm)=< z@U#|_aZ_q{aCvygz>iRzJ<`aTATO(g5J?;@ibqgdEl=?MQ}CrF``(wP^aTAJn`?NQ zFq1Pm(=SW{YjT4C3U?|5s~@!a*Rop3WeJC;6f6XLFAQ-|`(%s=81%q`$ry$Wq;#;~ zGvR@Z%V)o|)%O><&|i*@7Dak2iGsSwsH4E;9;NGQm`YZO-6;;q*HYuAN=T#yF_=UF z1traPdL)HnwUWdamX^slNjY~J8^?p)rU&EG!y%yM9Ye((g5+iw4g@Bx22>Ll6tI8Q zz$v2wK+VkTHpwhrW)>HlU^VYT^`s*jx~5*Cn>iEVNy1v0$0Yp-$+p;`IY9jxicPo= zn^YHdBd%WXiAg#V5l-OIew4#P-n#;a$$eM|u!GAFFa8iZqrpCNf_s;1YZ}toN(3=U zWTx0PMuK=O_&Gcur1^Ab2RYQ>D5!<(cpoqa{VtS~GHw^lu;5xS(%yIB$rzwC#Opp z(@MZHpKzbcF&TY1GK&?ck8fTR(Q0^x1ZV@s%6)+Z19?RDiv6~>5A%`31wes8N8Yy+ zCO@aV6SK2*C`}mhLg7i3GqgMx&;$yDurd@x!`s#|*Af5+IlWQiya1G93^d_=IA+!H z1P2OV^({x%!in0GWI)Gplo)><1zkFxRsi`*?*e@fj{uklZfq9-E2Pia9}b*7`;;z) z)+;8~rA)%@PYsv%-UJK{I1RGVO`r?Gjv#g%R)TtG>U=(pRr7O#+WCn-9wYj4>tp+k z^Br%)u7neTHXB0!?6ey_Jl>2thK3s{ND(h!L00TsQx)%vljZJe%f1^2F{T9C|N63WTm8u z7`iX1wg8uCtl8gN!t+b?o&7_ZW=JoB&&d zp{qNFQA|sWo77xfvPo_f0H7U?+QROR`g@~8t2{FVh z_J@OQ@fY~HRbeM_!DX7zkfdvy5>V}1;UvGG@)9TXejvIiQHEOcVBfJ5?I!5Sg;i8K zj%sfVpvgWEBy1wps1x53G<4o)41`8R^kREHmaXhPUI18%at73@Fz;<#Y%{)P?zh!O z^}PiZ*TOuFnaV7pjH`e{il-(uHRu1$eLxn61`Sbox2LD4Bb$0<+y>5_G@CMQfX-jk zw-1-9?%at{qaxtMzC95u8d{D}%>|MtGQjJNV!$bIK*-<}0enRj?Kkuyo})p66+y`f z)dSqzHaTWADDs93x?@&Il5v!Gyp##rj9$GA{FFZ)t&jUFBF|E7kZE9OvYn)FxZ4t-N%Wntlj zBlM^UGax-QOz;rMmL;Rbj%IJV6^YwB1LuW54n|L11L6hV@B5w>Oq$rgrH2Dl4K{{} zw}olYGSxy99|B+oc2wl}3i07XF(`3xT>EnD&ArzH>5WgBdN4N6EzR9V<*-r+i{g#`}IoL(%Gm?FRz zkHh9WUproO{37uE>>WnUV;h5PAHggEDG-nz?I?zONIHnWAjpX5vH?k_X|y1?2;FW) zQ^2B0LRbxKr~m*JnS_$ndH%!)TY{Ov{%cP&Wm&Yy3=gwW_R^N^u{x#dYdtP49t__l z-!M!a-?oC~d94H&kV$4VDl1ASfr#M{i=?U$?ixhHhTKQ2RkC3s72&S&ouO$Q9yF-= zurVrp<|)S5E4OXi)3Af4f6!h28v%)Y>}xQ{sH=c3gG&`Sp@ zxoU2}*2-pWToxU88lqAQi!k3d25l1RwvdvO;JchRr0O6<0T>QOm5^&!(9_)G%#B#~ z*hdx1Zu&1QHD5ow)+|WgvX+aMF0M%*O>Ha|(JGEX$PTN32GH0J?9j)_K9LLS^fQha z8HFcXQyA1!+$=qA&c|25630df|Cx!wy>@nXQSNCdf?*eW5Nvo1^hGM(zbyR*%$lHJ zg#wYDIqfe&M^I%T?Ht8H>4KsZviq4pz$FPlvT8JfSM3J!MYBD??Z+!J3>%%>8kQ*9 zSS7$087ybp$n*9d`jUMeGxAcJ+e)?GgAI)JaT`YsO3XtB273V&7G`>Vgi6G}X}|)* zE%avP;p70c6+@FQT39;cz(LhOGaf*O_|^GYivPZdWjkUCy32*lJsWnfUdqCfv$7Jc z83PmPiNO|C^aZgSze9b1kf-_$3R$0&6fJGxiPNpfd2^X5qQmm!Ay;F< zlMutG)0Q8}Y237E$r5v@6bYh6bf#8@D(kjq<$+5Ih(nNd;)Pk>N+^7{Ju}}f0M;G< zTCNYX0N>HGMVhI{d+Otp8z2-J#=ORJ`}K3=)O+#W1z!vIqs)jZ+u|WLlSb_qL~O!d zP!8!YVOX+wF>L|7=5W4kAF{@jZcf%cAvwvI2Ot!c#MF}l~!rhal#%;Oa=l=!1ZO4qUpcN&AB0IVLPv%;DN zdVrqIuP}U$CDq@Q&X2A~GYkI7c=PU(vd*^=D0XwGXdO; zLuo*s$YZE0Fg33^DQ!yfN$au~ku18RbIlgzsPpae5vBeT65lzL0Hj9r0+71})h-P? zgQ(f{LvPr~_!JeI1pvAY@*M?%AAY{+HN55XWXmg`M&aVwfX=ed`fpf#AHg9PjboQq z`#e$@lFN<@{@)<@Mlgj&$odbPw;JeNlB*HOmzg=B@V0chf-#Hh-0#jC#*9 zTl&jvW#s&7-bq90fJ7unXy4~LZ0=Uz4!ynYEjcrgsU{AKEz}O6(XJ#sw#+8YBAJO$ zCxcfnzlSS8WBiFh8i?oAw=n)%P;>`s?#54X6+L5ndS>jIYAc{S{(|QVeA^PP3fJ$2 zAZ}2f6>Pvl%`tw7*>+Gw-75O*)Ya9a93!Gk1xqOj{FJc*2Kkn+@^KI^{dQgyG0zE<_#D(xjtlh5VU@WJI{etG11lv z+-Q-3Nyum11eVUKolK~4{aS}C5lF7Te!v}j1J*s!`S}W%X{`yzQ)<#@Wxf6Nda3tF zB**Mnu69C~{88zTI`5^*`iITWRXnrrT{~)CW$7zfsGg~%6w94h^r)OsVUx)XRLRMWS|q%%5;+2d-7 z>WaP(z=fVi+4WmLv7c1+5i76ByxZjg2=i08OuYaScIrMOfy)9l5!fU0U^q~A-?#p{ z)a<13P*6fEIwxQ>MC_fmYCIy~XAK9Rbr>>+@Bql!dP(!n#%E$0z?`(^0emlFDnkZG z_Lyi&I>9u>5p|^_b~FaflS?;E@Rb|10#OblP#zn-y|MG!lzdQZ9`FKeYg|;;r$r)C zlIj}`W%$*LUcq|dAEc#tRzx+ySxc^9fFRI9Qa|~+J`8qr!T>j^J_6ef>jarCW$eG6 zZ?@7d*3fiWKG)J3mzml=7%@MaA3P+?=rH8tojZNcRFl&S$&RsX4b6uFw2KzuA-s0< z=}@RsH3VfQ0IWR(LBiA+6keK12_V{5uOhsmR)cJrL^M0mbm+zD@R`+javse1Wi3+BS&d4COUei%qy9@!Turo$d#qc{1Iph;oQcI5UZA$-Ov`oYqQSs4&vtm z^C*FBrTjEal#Fp1#T@!0@Lb)cWk$J+e$uT2=J`91!AF^%+f7A1%`R1W**vZvZ*g=a z?~i|pF(ccN(;f5uos%=K!53<0Szw~~l9B>nsm!)5WAz|+BBz21f?D#Y72}- zfl$Df!4M@Aax-c~W1B*(j{z(DqP|CuD)_707`%k(D{q83?POnz!*k+gh2$gHV_VKNKmatb2Nci7iuczV9G1nTQFnz zVDWnDHfB)WL0S#V5K0~SFsTk;FYB9P6pB|-cof!5QR@&3gow`MK(ZoN1n|@ow1uzp zwvQcmn}NSBu?_C#=Qqb>y_da+`yib+*l&9f&{l167Q$m-GFS6N+(q952sv47B6kt* zN(2mpsls7cr+2va_nwy?=*g_+GY2QxSkF;jPLBF}V?fU_>&wP^Y2-o~?^v^lgT}^n z*yLj#N_uBbo2%s%9IWT?X06U-9z|Xk=k~!G2oyjqs(4RYZwTyi&&C1lvfT6$i3W|2P7473$aw6ton6ghwJeZZrZxPEJlV$nqWY zI^a~~?*cUHqh}v4bs21(Vhn>9S4=b(@UJdC};C)jx1Az#<4}+dd zz+CWE;BrOw)L9|ZF#gCc$OsDL3G}S=VmGVg8wCY3x@@kmP1v<&%T~8J^LuuUes|r4 z!;D&_l9I39UP9PM-o<6BmfvCq!3==QD&RaGfZ#pA2B6cIDsy4sF6rDxF$oC~w6kG# z_s6hEb@6AF{x)6RBtzNGA^F3elNRK_W)u zptO}wK~C!P?P>y?5Sk^1TOt-#PIh{tT?xB_d*Jk4=Oh~)YA*r?fI-s!s8pw-wHe#^ zB7kD-SNVM!^&YI3*5kJ2k@e88fRU|(>K*AF&Ecc$qX50V$QQNc;qKs~&J3OM&2}@` z6yG*`kHk5|J+MQq)v#ajB1#>;?COgZ*Df3v6N&+014oSon!ht3cUj?tB^zXnkU(*Z z%+VB?8*D0c9&+c%_k!L68njSz;ft8sXzmpTfzhjfkGf)h?=KJA%e_OUtkhN5Xm0`Y;6;3`?Rbq1+csVZwE|M z3c_x{dV)ErV7APHU90g+u+0R4eXvXfg-PP{0bW!PcxDA+GGL4-ZMd}H4ZkpKXY9^^hDifoEbvi30uvZ823`P3 zzRWhdybr)1!?b)t_m|^fKGOq^%>|%rTL3x+7)Az$a!(+hpLOBNI1__Oy>F%5h^fM3{<>@=z2Lb9$kTA0l%sntNAS@9ujL-*5XAG0`0_OT# zk9vydo7rg~(-}+=0MjA>@^Uj!JHhh5!6czznTOGtR{{K{8d)tK?1CM^L||uz zVZsxb>=8_s(qO>F(WE>;aKY4p@(2avK0JjtBY?n6L_95r8iq<^ZJU;`&{b z8nrAUblhkIy|w{bY}l?9rZWLC2-xNkhVYZ;J7D()I2Db8M@x_TC*EvsZNYq4F9CuL z3^FiipMph;86d`&VJaLDq7YL`5G$Z=9Wk`)01>`=;ez(|_IcB2LRD3uY(oX=Y8qhV z0*SyoV;eL|aLj@XQ&LqGcmhU1cn7wr1*Av*vl(TWCj=%%>%2X%g<&IM5RnK7humK7 z@F7g23gU|6KpUwkFL0&;6HUX?@W7e?Ru!-+0ka}(vjXEXZ37E5QH=@_C=vF-8U%>f zK`@~k-(gb#tWtoeATBFw97H?yy+%O>2XItr6h`CmzM9Sg=cqupYU|3n`$cc*Hvu#l z3SjAh3BzES_drl&P|If13v|?Vpe_+pg21qvhi#|wur2x?!nv8TH4uit;EP}eONuB4 zGEj=SG9v&qf8S_8gB;3GHidV;SQ0-`kFcn@%04ggT* z0BDycaLy0reSl?l1OCMupkQl!vP6)yQQ++7x zbRtN7WrL)NAz}~G_WU|p$^zbW@FP#}<3N}b=6(lgyT?Yx#_xh}3UKt~n>RN%kx|ft z$&wdsOo4RKv;oA3>a%) zzdvH<;raI6a|OtKjDdSQNxS;74LFbkroC)1*8_FN2XL4jSeY<^HSE+Th)szTX~M^l za76=!4{7|l!dGWCpbZBkeAu26aJgXiAP6MF()NOCOA++qg*7}FQ!TW|NOK_|k265% z0N*i4_wou940cAa0r}RLEjEY=nq0fK=GP3kYLC zvH~-!)C!WZQe85efca9X17e_;mNp6m6}KjKOxe;D9D@83EOB9kPyNml`Br z<_ZY6Buc7hIf4sH!084M6oO@sl9{)hdj~48Fx>$S%y(ejfW-^|T^MZPSHQ%l4~`rH zy9X#}%lh?zKuRBW4_?lCm(0OJ`@lK@+-*^i{1$lMl4L4iWrFz$79fDR7@rN*1~*>{ z1CtvV#Yw_kAoc(YyMg;KZkGvvah4Gq+YS6qK-^OM2x4q%3QPlvKaUQM_`=*ArScLV z1{%uCF++O0L3$zBDL7fOQ4b)uf>DJ4P7Q49fUKq)?4v-k$z>{+bg7;;g=u!MX2FuU z!WLe6!}y3UhrZCSAUk$a(mIaWm1~@-~fex|= z0bxWm@FY7K8e;a_&2xY`1s1i4UXkGf(m@cWeF>`t;8_Cmd!1OI%c*ThFYtZQ!Jwj} z-M@0I3~IlDVBZtK!v@9%8=(2^wHQ2QfWg;6Zv}3Nc;FZVawS-HO+ctbPS$dG2&O@P zBV3r>`to(uJiUQ6G3V?i*DFPceCV?w`Ir7E1xEo#H1b*FgD@@_m{wqdJDB4W?DJ|W za4Gpe1`G_3x~di|sd5jBW$Rsbe(`y8=Qr-1X4kQ28trt@x-5iwFXYw1=iiHQckAWY zb~G0|WvRnAB>=+T^Z4wY_S-Y@;&`EqZK)x|%R*oG%f>{Ojn<9G%|>}+Z<;P_zwY?( z-B2LhN4f5`VkuC^UhwqU4MJq)O;*HzE{VJ-n3YSDbo|VzsLae~DO5x1{nmTv=RMWh z9o2>I$Wb-rh&c7-3b%Mwq9>nsX!QPdcx`J8sUvZDE4!1cJT=cdRIAP>5B*oI}a@?DHvDku#|9u}-^*D;v(%d{>_P<&iRt(Ce zRD3`pTIAh}NQIMR{x3yC++j5j?Z&@cH!`uO>|e6Ry7-x;FGtHFV5;V z=UU!0{f`eZlri{kZ405@=-~eQCN7?|xccAAZWt6>mkech?f=Da&=V%;ApH^qHdWRyI^BoC3Um5gXJzuec*ypYJgJ zkBwnZ^dA(2nx~oD4@t9_Bgs>j^!pr^fFr->HGNEsVbs>!qj*@ST3_GngIHlc#~g^s zju;Gm+}G%-^|P}l$9l|X;O59JZGsE)=pvI3EAS-x?O-e(qb?$>nE|2)9<5>E!BhV` zEI}-(V;e*yk(A2;`%PJbE`gVwHll|POsr&noqwwJ^2EXa zVZ)+%7UbTRY$9^aZq4zycGGr|8-CC&tWOjUg7{h(AI*u-ApzO2UIDJ<8`O!W&*u9^ zV?SDN)(;z3GzgJ~78_ZJ76vaptOU52@2r@q&Jg)%$h^#4LL} zx$phhv(F`ZaKeQt_JMs2e$){$1&!3FYsqe?wm@+{$_^dQ|A-3v&j|RLw}A+;3gA#` z$;rmcMpKlPOF+Je6g$mQj}*~z%F8*h@jNFTjG#&^B=H`_0iq7J4 z`YDb|2n;-kUe(>kXTV26Z4`xDj2_jK_Rb_OFGN`chTOz{{EJ`-oR90b;Mh)mnTG->)dZmy7t~|zIv@T?5=UL+? z^POe5b5+hN>#u@VSoFQf=T8J!@LG|_#>)4h&B-;XbXULjhJ6LUaZgqwt>^8L(EM#g z^mz)K_S<@M8+nS9*=x03Q?R;#KN@*n15YWWro&NLN!`~YK6LXv|Jd2L>1VKff<8k z>s6EKBiQ+IHq9kIGf~9Efd`rq719j@zlDL0sHpL3V6D`1>@nbooEiptmQ{ zZXUjKm$C?Sl0C5{7)wy2I;v1d>kC3m+n9fA)=C54UH^fr(1$H+erj2 z$G_@v=dD@`84JZVa~fl*x4G`eA*Fvir{Ih&GGG5u@Ts_{FAiFHhM=HU2cV3*r&OvD8Z?$hlKzMv zj{nK+Y@iSqZ^h1~R&8^JyjzlnlX}^-bf~6$;6{LwYH*59+D0B_fJp^Kfv7b7P){`g-H9`I+bCAYpq&eij}aVDv7?y-`+bNJR#m|%K$%QG@} z)Pt{=phvzbTHjUW-}@T{fN|6z_Xvd;V_W;L0-E){qtaoI(NRr>8JIacTV0@bN06;? zup%CHAzn`gv3~cx|Fih68%Yri_$P@;Bv1&q;uGbcG*+NnSbTTC9W$Qcyd>gqfv9VH z!`(M+Ns?b)kMTP#$=&Sy7TWqe@?~>@jXpNxal|fUn=`|uGEH8)x6rrXB1mfj_X4Q= zArp}VCoL}~uGu@~zw)yihP72(W5aFt*m{Mz>k3c48z<(By+eU#`B)ezWVLs>d<~B! z@eoHgk`;cfriWdt*h2E+j^D4~p_3ftuWVidZ;`Rcxh#4=9AbDfxzl&{+mhnl8xsr0(yS&HqZR=+=6V(r-E3X`eCnmJLafV;ao%+8nSIHk%s)(yFZcB_HtAe5y5qV zs3<~w_+GGQoA9ys&fuECg&d{aLTkxKK-hBCeWG5rhuVl|GRe0LktS1bcUdPJ2v86jv@8+(c0^%c( z8A|b&PDM&z;^W4J?A|Zrdlj>+*-8I&r7LEzyxQA~@p>dR?3MIZ>fRUQpH2L6G}eI( z%MY$L3Rqpgyxr7h4@)2AuG-t?6j2p>7Ik2~%{ieeCXNFyhw3Rh7~%6Gn$gY-aE#nL zaX%nlu>0(|IUkz^FH?2kQgZa}iB_>1-&vzM(iI4=Od|@8+*SxZ&@cG~>HLsGa`Le! z^sJH~>G22`e5{nO=7oBHnt$wk;o8sLi(j^gGHg*gCvtbU%=^xsJs~)}9d3!Sz_#eQ&=QnTzTQ=!)u!V6Aw_F2VIw z7R_8X0u*IA?O?pK=im~67ix)NKUN9WE1C+erqF*k4D`?@Tw9A_y*Xl_fwdnFBj!^6j+|M#kh7~BebRZnWUX~5*LcuIb4LZ$j4@UmV1 z3jS>Hz`^6vsNaMWa!B{Ak&959HP8;yb0bd*pR|2(597K;qp@=}9-jrnpR3fzFM2TC zUT+vEx2dQ#D(Xzj8hfFiJiG6NF2|w0VuisjQ68yy@wTV=@7^mzu;$pS8f!9x7N%kbKmIr;hV zaV5N1a~!#r#P&+DPz+5)Ii(^C7iFcdqVB2!C?u)H7H0W*(-8{x{v`&=-MR}Veo%~L zTWtXoz3>irjRj%?XX^wtPP?j#l+VGBb~Uu!AS4{tEIK}}KwhISo5dZtFe<$dZxyV# zHRP<8Vrj<}wSC8-vvf zqux0R9FtzFng@v$mnRXeStu}{WvI-sS9g|Vf*-Wl)im2bUVW3!fJG1j-%_Eke&b$d zW0k+I#}QSY!7Y{%7z|ZX4ccu{Q?q3<`Q1$yj4{5Jp#M$01T9?g*lc29GpDX33_(>+ zWsc*`yCqS_5cFj1{TzAG{X66>vxJe%d@$X$ZE*W3+1$x##DHy3CQYN6wF0-PzciTmJR9SAcT};Sky33G? zwXZizxW`ypmfgEXOD7mh6@X$tx35f;P9bJM#Es$i4ZY6I>72Z5qaFLa+Qf^BmY}sN zWZTK9AucJdd*W`5+i~;3)o(dko*t1r^< zLEZN;XY)+lmILB{u<@)q^Lyh|yrv#&yh? zP_K#pbAxmT)E@S74Jb6g3cq&y&Ig;*ArG(J*Sr{nOAtmJvNo z(tw)M4CSDtkZUrDN~u+K(YoR*?ITTvsj z-~~wuV=K8H)$Hl-Mm3?5K(fgI)K7WgUAT*Z?b_nHLG z9?rf~R_xC3aZgPwo%3Ba?CQ!iGA)ct!c!2le%9);Z?f1z{bp+Vl|l^7Ob*^7+`+2@ zW5`iu&XRBDuaS{1^V2jEGg1BCIfEZ}cC;uY{CxwGFPwW6MXk_UDySeL?#|C*_^;`x zs++Yqk4WQaZoiAM=`v(9^QMjmlw5H%=$8E$9awa3nvo6=}B`gE{D$yb>A`fhHS(WB)468P8q90@K;wyXE$-GFTQ`6gDC%oi7HjLL;Dsc%oQuiGK!_sm+ z8y2QgCxR}A<^`boi=^q<=&WA-AO`U+n%Qs{dZ1a zpZ#a(-7o1dNdjWkGfdBRcRmj+&X-PZx&zq5w4`P>b|-gIx~HGhjwW}{<5J=!kAA!h z4EbJM%r7mbP5WY!3gaMauaYf~|IbF7=i9bH_;CPw!)6JY{%b}-6#}3qeDzx1KuYPw z_2U3dHPe^hHR-TyWd#EGoA&?g_OzygW_Ra`_>? zDNFw4-Sogq8)+flU1n~@ng}nH-JM0QrkL;Dadxr*G zD0FSU_Y>|lCMYNcLU_vqoR(Y))l2M@vWM!Dv321SSoDo;6?O-1{T{cG%*7Y=&FjX#dr zHg)+E*$ShU%ghZwvU)zq&GW0dZH0D}hJUJKe{V#Go9mAm6@{ev_FYvxa!f{35stU> zB*douP}W3#TSmv`rJ$i)oaIZdrZfRwh{sHG%Js2#pTCfr^65bVlgO?9-RWolnoUWr$9+^~D!#pB)> zeWo;#C6)cOI1ntCR%Gppi@Rbp5UBs_b7-GFbi=!*Al>8c&WGCy=v19}8?`)m9SgBH z7N#XxE%XEvH#V%68Zi5DMOp!@P@;YB)!7dPQ3aX^_P6zHDID&Uwen=2KM1xD%fuMZ_2KqO1YXUj{GFK@=_?!tKFX*;LNQ!fO*h@{ zJWrqR%=0~#XuAA4La<=Jr9Ikte#C#gZ|d3Hp7~im!v#)o_DBtwdMYH8(xDOhbH8Fo zKTahFn%Nb7NXO~_RDFrDoh4@Jf!^Qxd--I?EH$KIPX1A6Yf>sQSMg(>o1IO|$C=5Z z+&a_*&tH@beC&9q^*iE}2>Lt%!8ox@M_s`>02^hZ)Ai9#u~NdU%A4;K(uMlp72oJc ziP-a;JY>WmNsw}sLFnI@bppnda{law;aq@snucNz>e~rFgE1MpeVt$s6LrKdSc#`+tVYj&V zu3b zIg{yDRsxR($#Kg1y<%v1q~6a!k#qq|27MQt7VOGKvMf6#-KC)^0?UUAL#tdMRm^sE zyIpXA!SCex8FT!P+$SnpI&amh;s>w@v09hr=0baxbl|Apg`N(1Z()I50_swRq z5Dnk(bCvH8`t`R~WeVamlcMGkkR;^l+?|}J_a#wPCNm_e4IXbYTv+#d!SnLXn_CqP z?$pI6eDIYMX28MSHTpHd|0RPhG2sH$M`J9} z362SNMOEonkvX9SsOlP9p;h)|EhUb-3CgeJ?KS+7TCgR4=jO#G zr%Bx3c~$ZCLY1^c4VBR!Ab1qUW>}f(?y#JzsZE+26}EJQ)s)CfVvr0xRt}z?d^0xZ zmCtTAaTuVMoK_!%f*K*Mw_D_y>s)ocNPq~5sj5rxzG1S-VFnSaw6@H!K)xWM_?E5$ z-dA#CPpDqN^;2!9B+DM@JoJW>!!;A7=j9J9OILx+N?I!O=`%r{kKLT-Jln(N6;SZy zGsGo>msmuVgmLd2aC)TV)rf&0l!}@uRp6SbsG|5(J*O(i3`=EE^8K5amjaHc&c3;* zfw_3A7=`Wi@s(VJN=pl`L?u~@-zhHb6pV6z=37*8X$n&~3Snaka-Ik3%DJ#{cD@%I zd~o6V^c4?`jZqkx`J^o@;0=R~C-{0L8Q{~nIlqS*H&513! zZ1S5C3PyM3B65{CTxu()n@+gg%7>k%>hsI>d#*m>;q*|%+t*Zlu_+|rEfpWi>XZY+b z$hZSdK7L^cUea#0C#q~fo2-s~LOZCezSJ|&gOH%=VP@|!=}abt8W_k_dSt)c)$)&{>QSb%{N+0DXILtJ{RFI zVkjK*>)k}u&PF3a^WQI%1-Pc7V(aYY*&xk;g?;uZ{5&%&v+SH^f-Ec@%+E}gMYc9H zl~TL{(>-AkVR{PY0w^WI_`Dk^d_`pzbW|*{*_ydQYL#DwNwSEqu99}krO1=Y>7opW*w3_Zb2kX)J`>BtB;x#d%H zvtaI>!)>FbLoYMIM1OxTSpjRRY175e={#JlYrpom4}L8Ht}xf}xYV79p*EwS0$cb5 zmN|{E?if7AWwH9+yv<%;6t`zs0_=W~jbm#1_z**&#cI$*S@^fdK>u9P*Q|wg( zyvHAxvKk(7wYsP+AMS&eY8MX?XSEn&72~r?lzre$D6fqsgNxc95RG0ab~;i!kUy97 z=(~o-q?2ETUkSAPNTu60%c}O8BeF$UX(79%Dg{jlPJT9Q0x?gLubPiw108s_D`VDj1vKTWPplQLq=wf6 zY{qW9?u@a4CD}wMzBc$~C9Gr`L=^bhrHVRBL$?agR;NmjR*tYcdt2}CBAv6!v#q9? z-b{2`&V~`o zCWo4p-x_)?@o37B;LXC9-fwmB)(nB@bnxJuh>DTng5zztjT9~uQvtThy{ZIM(U~uN zvyg_NF{nGOyb$80@tvCtg*uYSFLm_qVc>*k91Nkrg)dw(aR-vd>3MW>s%D8_W2uEV;V9bP0& zMDohZPoT+h!!dI%3#&+WNdN~x7>~zT-g_(i zV^yNZjEk8TMl>|Ilzs^c_DO!2lYI@K>LR#UV$Z|N$S9=xti@eNo z^{ij_XLk)pUtgj9Nq@54QV)`6$1n4w&if|{LU;7Rkf?hOWJ!fSgxudrWxD@5x;ZZyc|6ldA5}lwc6H^^_R9p9oW|PEzxl5f zjZZ&wZ2Yipz}G5z&3hwHcPr$DujVepb8gij#lrB-$z%8GhUl|-vJ!^(sNv+{x$`2+ zS)VzKgmOwzpCL*_94{H7O1Eg^WD(1}H6z+UDZ!+uxhuAig96<@BAP0JY7?*K&LVvX z6l(ThzeLnqhg@Ka&8);ax27VjJ+Z#7(c|#~b9{ny(8Yx`@~@F67=#i*NbC(wj68N9 zni#r|{iwQYR=7UC5i+4F_9g2ljNV1(l6?Zt%GstEh@cv1z(%)stNhK|y42sl4mg(4DCxMkX($IJ!XelMB?ZT7E}GKGthNU>EaSRVbM-_WGhcTbBl^*K=;wYbFY!a`YQ$McR1M>pPMmD&R+VK zTs=}N{}$9s-k(o6zO0^%ZPYWwJ%uM47Kuj7IS@7uC#Wh0_0&Es;!$j;D*BPs~`!l9FPD8!l%uC@eiP`Rpp9Umwa1FSOdBl`=8r|!R zo+?YTR$L!Y6F_n_Dtbt%T&{kN)j@`JGs=o zZ1TYhvsX&`5Sv0Sag^?6rGb*xn4qLM^IF!5pJ%5yNj)I&qutM1!yPjVBS(>E88#Ur z2=8(5$tgGRDN%^cxkg_hR6N#DUukr!uXxve(f=w<@ut=DT@Wr&*!>lkaXuxayNl|w ziI4d5*ILZBQ|k%w#zb*Z9rK+7L$OPBwVlwI9OkcsL`lilZ9>9Gf%lehsznUp7Vgf< zkbBMw&enLr_FAQ1?_bMATwc^Js&M+F9~<=2t2ixYb#_@r_%1COsq3*dXvjy!(7oV| zEcxlsaKKbpg24MA3qBPsgOkB_dpSat_QH8ERd;#th=Yc2Qt~L0=(w(GzqWp+q1BwN zuAAjX-}yntz@f<<@mX@c!n9HlW{9G>?VP#Ai-u~BM)WyEo0#Cm6-s_4Qqzx7L##f{ zoO}NDt@FU;EvY2(bs?MN3kD0f{z&hce@kljWIfRbF%!NSe zV?a|MQ832Q!*EGeZCdiRj6Z^vb)yYfGY3J)%nt2NppHj&V-$B^gmkasVz}y+cJXE& z%%XWV6^ErA-TSH{p`5sotVWKfP9eNz%bM6~@?;;Msge>2-Z(_;cv# zo3)#WQ73?!ho~YF+(R4}(1rrW(V9xQ#X<;1E;o91G=jO@R@Na4>E7{0V!uVAV>NE;% z&A}P8s&_Gr`ewDxe$ys2bWhTgEE3zV+v?yBHcbQN1`qc?HJ4{vx1O)Sr9z6nB8`BM z9aQFMdSQ2p<=RgSe^X}(!r8Sd^g z0$1Wxq@E+v^}_@^i(qCAGvW#7+@|iYbGh2TJ?YcGLg(2_6Vd5)6livL*K>_5#>Sn`e}n~YdDBXOCvQ%9?S{cAQd4^rH;zeT$FS${eWj-U$qX-iRjaM=(t={!kTP zIX6&Ai!Uz3FxqVr4Ezq6;MjLLcAvjEUfY=AYv!8CfLJLc|I}jZ%DWj?UI0Q)AN~oAI)Qp0$x3t&a>PsW*NzmTvR>eP`voYK$+;cM>cHp%B zCSmga(N+de;-r{E7*;(M`-C&J${ZbRWoc_ovGSzO=>#UjFbyR-bDA-+UE>l{L|>UR zf@l5KkQYdxOHgHUAlRW*9lxb};Y*wRXVE=Y20H@XZ&bcA;edD+W# z^QhS9g(W#bOE!2WHR%Dg;*UA>V^FYJ;0Gtw`p_4V-?CUn7mBP0< zeO@N>I+FGYb$Y#~i*j3K`tuHr!K9vB&*t|e_uju91#hh|gVNAZCsiG$PW-1{{Oito-CrWPA|}KeWH3o?Ty9Y+wn#ZHT6& zV4d%sR~SXZMT1)?CP7%$Y)7xzXifjLZ+JZnVd!-f5}5^w##?p8zArUQ z05a0gDCU8SW(93ay!W`nO!BIZ1~pQnugsX`Rh{UXQK4;X&uVSIr7wUV=#JZmCaR=8f@oC8;p?=Mu28dgkACl#mvAeR@<`;b^ zm(U!39kaIZE?((`nO%&Ovt}A^JNYZg%3gMUj(^-DU(wTNIe9sL7gad&BwXRl&jk~e z0$zrqx#AdD9a$>hM$8!G_A)Yl>y6H(e!pSz!f==2r$gKgx<3RdWKpDWWbB-*zs{+S z%}tMdD@!2EuGL4XTC9UhR#vWp8s`G^P=VIF&UU_-=(V5*v0G_ysO|+*gyI z#9w`Cke=a8*f3sqi`}68dP25EI?{16_C)GuHGRtCm{rG`t$|^l=4MkH&KP6*Iqt`r z_IM+6c$SR}DR_*r5ZdrGX&kLCOiNewSw0^X)w~Hr2LHafiPLHs%9hd+^r!(%h0fd3 z-vU+1Na&`Hx3i@mzy5ghZIoDMFqX#3dxId_nQZOntW1;lA`>bZ3*y@2D;Wu$`TB@0 z9naWHN7Lg7*B`!elAng&jpQ~Tv~5ihtXm8J9+p4vtdAGFURs@rl{ev-b3DCbzT6+Q z)n5zFujASpp1+vLo2Yi)E46ZWW@6bwn>-Iup+SCrqqj9VCB+IYI9hzTjjV4JQyl-3$BlF9xkuL{$d85gf z4{qmoc-xZw32Q9AQL8=87|-QlGq*BZpXgZJ_cEl{4q2kx7V16QQ$O+X{(0N>b0Pj0 z`OP^X-@VF?NRmn| zxpuhm-zNeiUB&U~(9SF|+m7KJFI)WpoeIsy^!wvs?5dqBRrXE(RlgpDVfkb;;c4V!7hq+(XY z$V1t5WE%XRS9e~dyx*j*M=!Nrn$jIO^RzL1Ykj!Gh+TE`mXK`F!`#x!J!e zjx^ylZb*!?{f#*Gh8|_}@#n()YGF+o=7R&di%V{&PnS$yo1}KzLrPdqF0r;|CMRw0 zMy;ZIoo~3K5AVFs$@oWi{9dwYXufkF_HU zD3al2U0X6&cg6OICe5!TsL zQ^FfZl9b0g&XE2+L*mt1o+~+9>Yll^jmbcy$u63p2;_(pZ7pIt+SR%GXz0bRrsi9I z+ehVRoXrbmZ|rb&pAzw;vymS0j_t6u|N8ZWVnK@P>*V z+lL4FdSqi!n4{?e@#jgBT156got|e5#!N4L#U3#5$~sSB`^e@&2L?+abbc_77CmKl z&c7acOV4M^K01^CRdc%GMosgmMe$$|?k$1@mJ|7wo9lD*t#Ol+g_O715X5xeX{oPa z)8YsSkO(+q%H;9Mx$mRt@2upFk!~mnlw}mB8=`J4FyZHh?nR zl$mBYA~Pzc8#kmgCyyJ$p>Hi9xX(GxTu+XI{xil;y{Wxbty!s_ZwSOaE3(pzXkn4q z0}&np(^+f}8+L+ZJ~rL4Z^fZ-V6`>v(+n-BBnN(Db?0AO%@UwK9G2CkWBI|4wexDn zX5;gF!WcvSGO7&zvDKGK-_^CdaL8Ou?kVj}L8}d)Z;Tj(i_H<)wZX2pgy$ zd1iH8#z1v?dj_XbgIhRO^x~sgNM8Jmt1F!3t$P{9#3x-zO3@~C%e!FssWE@*detl4 z>-y44hW331S>!nHkCi9PD)*${ZU-$fyaX{*>I_j(E-MAkQM;OrE=t~>t*F?H2iEN$ z6zuZ6Mwbgt>PYWoZ_2Pf#+5W|TGD=RxY3b=AeY|X?1tL>%aWL&G^=#~G+k@YWzNpH z7}qA+qcQ##I=W}P?U;VqZe$~a>6#WADqYT2c=fr0CmC^meV+{F({NdJxj=7l-f05n zlVU5@$IrjeDqWCykK4cH`^{S%;ZAPx?urx>d49#`s@lz460K^-Yv%y)GLATDJmGn? zX5t)QAq)f|qQ&pHkDPZ!aj|_0@iy8bv1lIJ%1O!}SGsXt&+>knnYF){|6Yi&)fN{w zR)bTtiU1sB#4Ub?)&Pp4e)%k&z)IDZ685@&2#fKm6tY$PS^-qDxJ5+NOTyN^_ImRo z)h5`NV!tb;tm&CO^cO7$hv!3Ql3xE)ma%=*pHHNt_$*ZrVa3O47}@K6A%7$SE9g^! z(R(Wb3os7EKe@b%{{<~@Tx4DbSkO@EXEn$OUzSOiA%FkN*)P!WrBCKcDE^@P&uyk$ z?N<>-nd@o73N3ySKp2y+KgVN-wUuD=w>UG>KmSU31hImBV5Fh==bmECMY`2szg>WY z^#An&Dy#;&cd#;md~2CP2~M9uM~1mjON76e?ZR@VkssB--+`Vq-Wu#P}dq^>38Z)F5Shwy$+U=_bo zEc)AA1~l=IC!f~5Y2nl-|I~&>m@^TzVb{mnp1m^Z&F@tRHG929Y7_09}Ot-)6_!dnr)MBnHl{fo3)ii44^1;*nY>WqCaQ=Qln* z>f>lg$44SUC**$RU07M6Gu)a2$o{WdESz^f{&|m=Rxb9>t!gADP@64i{Ap!t z`zq&Iq=$cNp+8PiBasSrxilt;hM}fc<)7D4(ywu~+CIpal05%=T~Espt^_U%F-GIx z_XAGn3EKFy{NsbC{ORbWUyBu=|EV=u)q>i>_1#{BH{K7nK3DuR2vljiUG$ET4UsG9 zfHD#EG~AOS)NeVs|8z^_lrM*Ir7>6IrK8K9bFd3=Q!s`TTK@jjvrKoZz)a}=#|D~m zzz7FpilAul|E2R)5e1X2%5eN?;x{s1cB|Vb(EC}O_+UlGR_lfAmAB&%3;bzrI^_jJ z%Nn*A0M-F@m-z|OO}paqYewcz|55IK$I+0dU#|MMw==Hf{%xEg70@})n*Ow%b!~ye z0rWCR)6&`)Rz7YDQ<;5m&V6gso#qzHJ~cb+v)BmzD1i zrhf9aS{g+tK2?>;=hn$%^w zi<$am1M+-U(_%GCPfOEc@y83Th@E|w*7xe9p1N5sG!dag5VpEPPRx4b5PRGt)}7+= z?R`L@&nSec`=tf4zi|lW`;BhDeWaNo( zvQ)J48=v&y(VE6uwaJN9fd>nn&mMY9ZCK4hy#-$u!ODVFpA$7tC-eP6Rtwz-OV!_c zN+t8wMHdti_-UfcO}vkuU~5%!{zq6Y6v|?0CXk^eQk{KfSHGCp$^mVP!t*M4V z+>|Em8Zps>zB;i@MO%lHkB)CiImsXCe`Xz6o(XtL?VwiWJb=f8uiLgl9T_pzk?`77 zg4AZ3_M42Bqf587Ws87eRZPTU<_qXxzs)$&{+dCfDaN^d^*kH$brba9ae$ZB_IYHt zU_sBg{h=YN`3b(?86yd{;ZyH7hG}(*O|sYczZVNeE=VvMxXVhT^wPYhYVRN6rdUM2 z5R+%uCsM0?i8egJF|Zu!VM#-X%ai_%Wm@-eczxpLCz^D~XFsCP~gZLElmo zIeu_eM5Q_cXG{kiMNAG(OtA{PIWI3Pm=HC$NJVfInG#WZKU`g1QPKON3p@@Dm91lk z7G&|~+fI2c4Sq*Yn{6}Ob33gwoX?5h7j*l`CeSWEN8g8+@=2D;eAdu{O=4YCHKeE8 zps-s>gH+BvOBH>qYBTO#*+&FSD)t0`^wbNyjl>42?W+dnh?1juIg4`{a^F71LxjuR zQeuEm@=&EKJRjs+d`|r`wkBV7hvZy~C1lHeYf;BNQwky>uGHrjf6IU4K(EmDqrZcu zaA${v^5vs41(g&`2EiSMned??l8!=-;^j(DBq^~khLh=!%ii(_#Q5lOFwg7BPfik@ zW46Ye81S-nb7D2dFQEqOOWWE$e*kcHiL7bbV2O=#jP~<`d!3JW>6xj;;`-wtr9O!v zoOR$hZ>!;C%=G-^XBfZ4yfhESLz<9k@{=IrZ^9nl*Mzu_OWs(qin2y|*i7FOb>V^C z*jg_|Q?$Y&Z$P4-p(M{2M||VYNb_|VIgO2kOTR%*P+~k2`s)jEah8Fut_Qcbw-+4> zIf_K8Jfc^{vpzoCx);}36o#GegeNVjQK$4sk}029GJ^+{a4Xc~W9az0LLIW@QPysS ztJ~>{X(=W(kBBmVYO6%ANEFPyRW+BXzT*cbspJk3h50&G3@MIZ>Mh#MS^x;c20;lA z)Q2=C`&L`fOBgwP93`=}dlg{GrZdrlG;mW6zce-`IqK+s7?q@>e)+9H zSebpp-#Q5_ByICibT{FlvIYAes^e!ZCPD-Kovu}IWZ4f)=EtpaP>P#^Kiv<3>@ zyWmz$BPI|jUyIJqQCm?f=!gv#B;GlXH7hg1O(7>Ouy~w;kZaVAD)!OS*}iBjfuW#r z7-S&*Ql6*lvkzsT8W@=fg{_IoX;ir^OjAVZ1+?5EGIst~RU|@8rlJ;Vc;4F5f=pAy z>7O{bMFfevQn}YPM6K{#GQw=bs+LLTklZQ)ov9=<5RRzD@Yg~k(iR|(e?xikpQkAD zHHXkTc&9reiU{K%(qI{6oqy)t0wa|YH8i)|y=>N!nYw<|m1?Xa?b4}crhN?0^~1N7 z7rQ%oA8MOe=Qo=#w2oGbzVDt@_qC7ZPLUJ$Diaavp;jXj!L#D#R40@x7-0;EuWQBf zepUEF;KwlC$vi#Hx^kA0^a`U<%+e}eeRG{GdWdiD;D8oG>;a7TBX~6#VFU+un1+QYroRKKlKjYVHjKB)IH3^&6SUh_{_Cv_3bwchAYM ze2&&S?+=qN_B%UcH-FmS_~EbfOXVmgf1^IEt{1<#r1&v*e=&XiZUOSa72(x$Yn6u` z_FXvq^@21&L#zD}JWks+p$t7=r4#3e zvum`r@A*^&wz!KnO&H#IX{q0Hzd1Lq)M>Pi`Dw=O({H{HXiRJD>2WfKrWTl@7O7Rd zzD@0Eo}VhCmC~y#KSusaTx+nO?yU?BnfkNkVD~RnPmXZWR|eEHTVt6}=AgQpe#y3f z2~^`#K|IM50IT5)=74wb>;WGhzzxR$;4}kFW8nJu12C)F(XR~4x`yhrI6df-QJPU$ zRnLi63=9mF7$=vv<0auT-K~7EKh>d!sZZk8`^(P!=k^oo81c4r`nUJ0%$g@cxvm;l zUY4yh)@>>mVbvb#d=P?}pfNQHY|I+FpLqg)SNY1IabHpMCTLL*X^^v<+xpj(gHXUI zT&KO-J|i;Y7!NSG^yXFzE(s>sk3ZyKfZR!sb}dT5ETMY{By82 z_t9}#+1d35>SfqWT|To=_LQz)0Op$O5WE9DN|PND zzb#8YU>r;HErbMW1WwDaN-8tdA9m91ugt{_g8ri;p>@x$Dx9H&e!S7H_ZP;xi*c!6 zpZOxQJNlA|Olz8=e9itcniz3NNZMcWD+{qZD2-V8eYE*u-|uM7e4l7ijc1AzyJI2~ zOuuCobeTO)tiE>o`2ZE5@f_ste}LeY^-;^mIKi&X@*GNU#U)c z`BM74G4q2VDVy>`N5(qQUgfGC7*s5p+m&NDL8XknHBmvUCzMbhC+9#~IrrOcU( za`uO5|DyOsp~vQ%J+8J@u2+sG|N1rW*;NML|E2tW)BKb_b3%*KdiB2H(dP3?b>qNC z8=?|n0ldMycr|?L+srylYj4cfK&FYIp`iyN4g-KE%+*)`eh~3^5(4D+*%7W8thCwc zRO7KkNrxAH2fzJhD#j1cAPwCAmv?k6Wv78>r%3-vz6%)L3ty|V zu8>-K2mUooT<2Q+aDQ#5p4;8UCGM+oW&a-42~X248@39JueES${bVTVu}%mIZJvtP z9NGJhAE|Uj%W8-Fc|Vcx+a~CFOusI5pK3feZ2nI zu`hskStM*zj;;FXDbX9BBK(ct%Z}N|gnvo+QQ&+N9jJPXU8Vg5(2)OQnFCD`*%5%U z+V%juSV4awU}zB%jZ9blx(t9`yMTPIgpMOr@BJnCEPJsbQs&0s3;zKN!Te=2@+~S! z+6`e8zPMB?)eQK{xxarO0bmJnQ37l-db^S+ivX5@0ws(58zM*cFy5RD4h;R^u1li+ zN?GNcf2GHSB(;2XlFoCB)fe&Ji(A%@(QNh9|9I*5Vsgo>t#gar`y(Z2ma9A%7W6tA z`0MNCJzo2{&ub?8WG8g&g~*hCY@s%mY}rnhY3Qs!9ztJge=z@`h^V$2X~GfHk||cq zcO%jOZ`^=ypFw<#Kpo>^VPV<-qb&arsJO^FgPiZ)EyX`eOBTe=Bxe_w0+2!?l1ebp z@PA-~`&8JnlNlkqnwYRf$RA2VWU8dC1pDf>;&ZTOJ5Dv6g6KHo?y0VIMDhzeY^U19 zCy;}KV6&nqyucCa1NO>? zfCsAtv_2S^0)XV~FyDIxaTkCAQVHb`*%D}DcIxP>YY{s!aBp`5{C3C>*MyFu#}7uw zXAsC65Y0}Pa)_)(r(R=;yp1srOP!W+WtpE%Ov3_@SE(aSs*^q9RLotA($q;>a`2i|N8RQ z;=8>4fv%b81bEe#2vAVSdy>+7Gy6aN<|BZ)Au@N+S0?O(zH)kHvi=6EmJ%+l!Q!O& z*_6)bq8sN~gsOaB@suQ`cTcP?+ZnV9<-EJ`rB{=+g_K*s411#K+?1Jc?;hELB1QYR z_b1Q|Wyk1WpL?xOe`ker-a8P>?0S{haAqbq zoRkJ20E*+vfX9pY_mIaffP(9{ed>f8wte8^0$2YGqDM^G8zJrh#IDOye(!-y7lB-U z=QxnVpID@m(L}8hh0%4ijdTJNG*Tf!95VD1Wg@aZH+^@enHHtZ-pYSXju>^|?D&4= zor6BP*|~|jV*wcioIFoEyKj=&gu^9vP4C13-=A^9Zr#wk}eLHMu7K3H?t)y?bBV?Nc5brMiUC2irYRp z#XwBP*p112DWB()14!vtAT*D8E(mT81h>5UI(JjFfs2HO>}7ojiKBMBFog$UiOzeu zfMvt5ea1T0eoxH$t(jo*ace?|F-t6Ik`ePF`X~MOz6G@9T;j!dA4IRdwtP%gVFiEB z-gdI8Xdd$DxN7)E()9&P1$6_ROrS>E^o38XhVgQR_0KY9PCWqJE#gN8IY~a8?8Cpy zhltKlPmR&B%$=$U!FoR(E@=y-tX}@r*VhPq;hS1oS{b+L-|O<-^L)0xE2I79epygp zs8Ed6cH+xRBt)vF#(M>wsKiwig`n1fH=F#}P~-LQE3Fl_?;A_so|73TH~%j6uPgCk zJ3sl{HL+TY?AVpmFg^PvnTVT{G_xm_-$9P~d( z1UCSJlI94uj{wmGISvBv2OMo1f<#25jQM7y0F;C~eXr)oi`8SA25|#{&T9||sECUZ z{L+(%oEBo=>8fQPA%M94TDb48VnY4yy+YGFqGD{P)hy`FTlezKmsLxu9iA1AtC+4S zHH8S#i27d=SzP#IHZu>9(L3)uQ5@vd@`toZGq=bzWX1V@dF`L4wCpln-G3A-nAn;a zD?@21;V{@Eg)Q(FXUhBbiYd=n4V^-q(>uE!BSHc?mrG~i@8!4YXmvz-{M*<|5Dvrn z()El2Bm)T=cmDURK|3`foNK&@Ae4C>QZtm4V5eGI<4=Gj)80?8O};$*J#reT|S zK>b8n;5EALyDQ(kH%Vdzty0T6Cm14VyNzCvl6!d&a?P3L`n0tE5OS2UquE<_o+{*# zOjS}#F8dv%rTK-^kNLOnkIQ~JZ(}ipY1J=Ai&E)}Gvj_cb<&(T{$B>#_%O=f-@gq< zIcQwCVSVldKBT25%k`ndaZ|ZrwWv%$37O;TLQyWKiT61H{gDN#+FA+nzh& z&>?V{lS`jOzzh|&PL)iF(WV(k*@(#KKNd(Wc=mm2g`xm``E;AUd95c(h<>?U0q3nq zpi}aXoR$m}#z#44l=MBy@0$q`fe?GeC*{9FCFkw8kxONoH>^_ceERWlHhR_eR}@Xp zCKOLmI;S`WCoouHk5cs%LmCFJP85mxmC0YrjvKe6JkyxDbd&?R99PHRbDm8@&qalW za&63CiN8idq`4K_GKhO~nO;cyRY=<99Rm`2lV|s-1i6T!6OQMN!n@twq1W*v#Xa;M1Q z+nHRpyk+KwBc3{12BE+BVyQN6t-)RzlsrQ}e^Qu$97&8#w$^E!$XqDrvcc(8LLNMq zVE=_xS3^Z0Se{k$PZ>P}r9)AumpW$-Wp>+fvKxY^&>(3GP6Ewkg<>10H(|=Sslj@z z$VJ;{%Fnb+r!sI0yuj$&bYKq;*)JHxoC@QOhl&S3NsUHpf(cLnZ8s-?Lt zuXOS+L^-&CrDLUfyD9>Jy&n-!H<&%jD=Mx)lK1nt63*rfSx-^3c=AID^n<|P`LABe zerZiH+jO;B7F4yc&2SUPpu7mV0ls**udSXJc;RyWR?t7?!74FgPnxnn%>!IhOLs_G zqpbzXXyfloTUR83eqp34f7oazdu-&I@7sk zJCj)d?t7^;ohG!Qn>4Sr$2x^0MtdL)uj30}0k*m4_iu^x{`)sFgRrmCrzdhUXvLH% zinD%*FTc4>xMR5cH)&gNnXw6#zq~@is0@8dkuQZG*pakoe<<&Ou}fy13MpVg7|AT{ z8hSTN393M$3_?mHjr9y^r?BEg`&u#Ki$50rMSv zvd0M8$&umaGBoPNi(R542OsV;prCcPmi}~1^6DV5V{gsQXX&}jAY&=}wpK82FdsdB z+Oh2GBXn>|krUgWw}}Eu(`g{pL$%wBs?Vohsg?D<~Ca-sXu1q z(TDGDyL<-kvmmkb^2@6D`QZTcbw~Ep0F1b;b()B1f&g2!3&Rro`83CjrFRsw_HKh> z-9{8f)s_^EEd1KkXD7hv&nDS3(K(|8$aowK!0n6o_2X0t2mA!NyQ{_MsyI8zm5 z*;5fKBFNdiBf;etOwQ{53^Mw8*&sHTGu%^h|AceTO*&9+)s!rn>y-~dg!GGaY*FEH~a1Flg-94Ybw}n zHW8kvkqsBE3gOlM>vq(xPd(7;bWyB|q`Ozl8%&;cTkG{79A*E~M| z3CC9NR=v)W?E7zy{k!<6+^8MO|Aay^M7d^ARChpa^tN0IIAczZZ}YPYk3PEE zESyL=dZ@@MZzRzcdNwMSUH8bhv(bPl;9=LtX>a3EztCpCt3s^1PMq^>NYDD`QM~4+-U5SBE1L`OQbm>eXb* z_P<|SA3a2>TA(+Qv&`4D3rP!vXx?GmXZt^~7L`dF$UvNyAI*3~JL5xDx2Hqq30t#}02H*K z6yJxkpJwqrk?RtBU%r;}M8cbxdv=oHna=rP(IG7=o-RGf`Y{`~($&j-%W>Nn8Xhza z!x$pR15~!8O}@oj2}3B9gJ)(9pXdF0yXNQsu`uJKU%`9(dN`}hzvs@a6N@n}T+%hr zO7LCNts2`^`5hu`DxfWbQZ#s=o@h>p$Rr#NsdX%!f82i)_s#*87{p`Q^qi~C?RYZf z@c_|5)kL1AH)l$4FS0O?RPr_3X$xgp>o=#uw^h}ZI+vu!ch5p>yy!u0`0Vh|*BH## zzDL`BDF|R5Oo@o=61=tw5Quock{_yBp1&jg^E0W(P>B&L=EuJC*4CT~g@bf5cJRj= zD|r2Ds%l9+D^IZdEUGbdVhTEPu%_pFA`_CS3fX2dwk@@oKgiAnwG1%*ohq0& zHDp=A-u2(uU+-Fn0^`RK&xKs9@9qpjAP0D}o)>Cp zq?rCOW}a)k|M|`dohpB*iWFh@MFvV5mNbXFm>5EsKDgQzWjaSZE#AOg#oDvXDPcy+ zIYcnkK>tq><0FZ$nb{b(60C9x$D+wqJ+!s7s6k`SOD(@I%=WK4K)>MON${LP$xIi` z%>>EW21fab5cgdJIhWLE%REQ5pqh|nhJQAp*pf>~^b%ysH_r96W8&%R$6It+nJ=F5 zdC?}E=HZ2%1sa7GAm8uQ%kSTSLL7V9xguRYXo&N%HM>EBW;4$(39eR9%iwO&LG8G5 zt&Ja%L?CrXs4jpDS_yF7)yoll1DTnM6__FOPDXTZX6M;bMAL}=w zfH^b<32M2WOBJq5Q%vJKWZY#G&Y*$u-mVy*aZ1@^ZjTdcHfRUK;5Wnu0nS(bGDi!G z#NW=Bk3WOlyL)Iz4a}=I$%p4Au!7^=mISOd)HqK{C>n~cK3#7xR>0i)K~W5^yNSC2 zB}VDpb@?MFC_XhK*S_wdKjmwZ?J+MQ$Z;(}GlY~Rq3xBNU|Sx9I4U4*$HQfLkK3ku z{AhyQyIzo3lZmWcXrstoc!ej>>{WRhlop7bJ$k=Y`ssBKaM!heF{%K^*opV4sn3y? z70}ezq0OL!jw?VqkYJ;?gj5==jTo>aBem@qno2`2>zhhA_x{js513>r&=BETgN|2& z$R~8K{sRpJ`Qh?qWI&22f=nMx0$828k4gB%CSrXBAp+-eW0g=GbS(y;VVaU zu$PU|wNIsiEdy81pJtY{f5x^yK@M!VweQrvky1{x!vC+DV(h(o6GSu=*TK`m24Zxi zZwdDAH|-Yx_V!NIM+#G6S{IE5*=t~Ot#Hc0#z>|&Ts0E~V+NFS=L;d0K;#Ud3ySxa z)6&tQgWUK-O-%|S)CC>p$!OLwFv{k8tUm&+K-lsgya5O&tC#iW;R7rAoBv84S~R7& z_7uj3koDcco9teYTZ@Xwx1UsmEA*|bm-yF59f)ZiDSIO-53p<%`0TkNonPR0siNbu zH9jP54Mbm&?QS%ONi$}r4UIvuTdnpcs&y`{&v2iOA)Jo(?^*o)8B(R*a`aB%#3@qYsh|MwsE Z?RfMJA|yu@z8r%;syA;deNi-h@jsL%VjTbg literal 37212 zcmeFZWmHw|_cppo6$C_7R7yZfN+mWO0)oUTfX!UiUrcHLvTMD_BKImW1dk5ekJOxhE(6 z0ENQMfj^R`3E`7hTe6qne>jd0WbdGgdZ}07ANXdHijpW)X*ltrF#-JhjJ=$;BML>@ zg8ad0v&(scLPc!ela^F}X0Sf}+~dN?k@&GDt{>48eU)<;%g*P@Rp{Et1*hXnmdi}^ zWE;Fu=k?OjInTPNSxA4!eT%|5xbi5C#CNnROPZp-;+{Y6>0ws$M?wA`mMZMc_$9e< zH7^tO&VS!M_58cAqp7KD`ND1Av8~OZ+hfUsj^DeV_a+Hayk~vo=TlU~MJ?)nAzLZ= zd`1xRSbeVLQP z+GF|mFoq0PA`Ax8KQiJ^!J;HF979ScMonqxaVy~L6~CNsZQ<+(JL^(rW-KTpG{{$o7`{9RkfFf0L|!}N-&?Mz;LEyWho5ca^LO^=EG;aWhjZ0N z<|Za|K7IbY`hDe$$0ucE66p7iyt-4x4bis8hkF5(+3vXi#!GbHi$1TaYV>z&Zpz1h z1L5fSJMc%3ACqt^Z9j?V{P(d!JVExnKWlmQ!Sfq(CjTx-*zBkFuG&xi-Z%OLz-GBtw&tWvg z;cYLbru2qKMmj=%*YZruGBBjeEiNw73knLRe^oyxY3bl_8;iv*bQqVeXDi9{k55e8 zP#!$vDkgk`n_Je!g&*}{(cxWI*4-3;UJ+Wdt5>fwh>iOD`@@3J42+738u8ZD)Wq|p zaGd+-zxt=qCF|gFZt3H;JOX&Gs@~-`B&)SX>l2kIRQ2TR@83@#OmLb7RpYLn z9vLq$F>2CNL_|a-j!Ve;$n!2NEM#S4Yp!lOvT+*_b7nq}la_X>GV+;F*3r>X(bp$| zGZhqYpgw$lO|>|la|%v*rM0!yUV!@9VvMH!tmkgLSXG>$W7f(uSWBzAW;Q+(gM)rB z3ze^zGVeu2#Kf44e=e!7r=|^;9b+!7uh&Z<>91Fr-#v&-Or%m3{^Gngii6r{*fmf{ z6{8^y#DlZb&$?_K9IecyQiBEY)JN6^nJyf8KR3idnm=vLHWSN<-sqg6Sji zLQ9uc_d>1rAzIwH;nPuX-VD1rIy#bATq~A6n^-s*YJT!SODpKlpJ#3katz!S)kEJl zwW_F!^7C81NYp)wl&#q7w-$8s?%q+YoB90tF5l5&Y+?a6NP7aNbbLVjO4|OBS7v5r zT20O6+}zyut}ZD{%Nu$5`I~EoCpsxKwY9bFy}fs3WlzC#jfjm63=1QDVrIsOMr)?% zZ?`jsBL{YLbhLMON3)!I_}~F9s%G)6?pG(F$b%TBU_|^#_WAj5ou3PkA1Bk^2kI4 zGhtE{l7%iJPqc0tZmwm%H3UMV@8O}xGZEUZw4eR&q~z}3{}@IiTw*@Jz+q5-85NP5 zN|xG}ov1mJYIN{yxu3o}5luE(Z6^z3H0?_%RI;+RmVWTy&BUn2g4t6%7|ctU*q#X_ zI4%`<+_UUS;A`*bkW^KTy!wa!Tm}6vm-uT2Nt^BsT9uYDwgv-aS~4;O=P4*gEMN!v zx6GkX_1I4K>7tm)dN-c$y~+6pinn^#T{80W?i=9u*Gojj#|JaXzg^zRC@NB_el3YGeTDIBUyM!=loZ*qc=)ZoA`rxT#n` zfpXcHvM_&e&YG^(ord(39#`y2>G>5FI(Bn|PM+uVb{vLpU|&!PvRkQ;(Tbc#UB30` zrEUGt3NJo>pUBo()Yo8^l>XPQLdlks{o*HkeHaT=|G)rFYMFnwn(NTjhd?B;>Fb;d|BD=d#C+&?M5hSii;y!uw09&Jq3qI}52{z&kcEs)X(;m0lb+XvMfJ150*XrHgJ z2xytRIUN1Dtu4PYozC-jq^(YkkdTl<_z1>%t$%7Nw7XkD%AN=XyFpG#={vC-k6XLJL4sx76-THGkBRw4#b<=a-X}aPR z?K9NrVe?Mu!qs}Wt%ZApc8ztHlXFMK9ld}5z9Z!2S-pY+z1s7qhkuwnd9r-`DTEW|GfOg$<}4Mz z0z!eur-H*h7&cjElwzPr>d-jhgc zFoY#+X=$mVs)`fX;tPxBGVOSs9v6pRO+U78mE6vikDouiw)P4NdB&@&mMy8*gf?R# zo5<6eC9VMX+=A`kqwBU+xU=4(>=4apDRe>D{9yrRUkW?KPA;`pABU+|0!6)NYtT!g6dNv z5?ml1WqDUtR{C`C2Vc{xH@X=5tin)Lm7KTc&Ncl{UD_HrNjW{0_sz<8V(scT14Qx+ z0bu0m`yBnw7AJ|P)kzO-Bj&EZri{x=rwcjC(qL6Ny)M@*)l(xS^ZayTu-DR2g`i(Sr>8Twf)!EJ-nXKs@}o1B4g1~{(VtdD26O6V_^F;ddk*M@8Y`Pb745zveJ(q=wXjF?sXm z4U*@J$MT;mhp=Q79`z{5iU%lDUi!zu<+ zG(=A%$)u+`>as%7VS4sz+$sBBr8F%No58;KjbEnegc4|>di4f^xN$NZEc#3#)v z5*6|qElqXx9KKiS$yq}y(x#@&mR44Zc<+Avu-;x|Ee(A}et)BDXvHZ#FOP_TfWR_M z2WF*dHXOp;-)9^e{?c5{{b$2&XVh8K-lQ|JT_(%LxB2)kQt?|$z}Wy|W9%T)Yn43- zwx!wJ+{`H`kTx)&owBW_r&)+~_Yk9d_3G8I*KL`r&l(KilyO<*Lo1&GNT`N;zvV+B zFMb-|5bBckmP6YQt_kq|nz(qAF1J|lH$8Rr%$>ArgVMt{E?u~AO;}jBI!T-M!qLE` zix;>5c%^iRG1yPZ&<=d}-n__B>*)PA0<6boB7lB*>dD&Gzm?pdJw@p(Ys$2Me25AcFJ1(^)Lful{&n+NiQAT`8-F?uK*X*LcWJxASi;7} zUMk&c+Zfro_DDu7Yguq(FP*dw9=}8kA1|*FWc&8c&iQ*Xcy|HNz$*N=hd7kOzI^XV z1P~sQnR%T{)MvVoKX;-IR+cNGrY&5D9a6uPrPsA>h^A+&qFMIkMJqDIFj%pib;{p|)*} z6yi3d*mz=Uii-kF16$%86%~8m-J>Vd7-s|)LPQe@&gmN$lhCiRe>Z10lJ_ttFYk_x zO`*;g3*?6Ou!~r8s5N8(-2m2ul=0{53$loWgd2T#r18(bMDfLa`J(m5Lk#v90Hfus zi&k?FnGXSq!V;k1EykD61{^MhL4e54 zjd#hKwrlV8+rHRl6}t!)BAM9z#mc(lo$tE`Ba}RFc;@j8gmU-A-H#)KgSdbM1*)Jp zC5ks&s3`9wzRAYuw_fbh2vwU~+541U$N4ymT^<-dlq!;SuZdh}JEZr!EaD?00c8fh zeS66*(zaaa^CQDM@BQnO;${J(m6WJduQP}T>SVikKIU73nm=TJKBGR_?9HW#M%%5e zE$5+ngJN4J?E-*G&=<5>_s*fUz~1fY%0B>$XRAom;T25Av(3 zG|-2isqB^mDl69RDJhLALh<0(Uy%oNijtC2b$I#g&p_CRE-qEZ;x}&GxQSFxl9kiH zM+DzJgn|+F#CB^a6m!lxva*5u&uPQ6`>-W&Oy5!qq{Y%ltwb%Q>&wgii&x5huvD{u z0&Jg6R@q>TIRy>7_6#EM5)*AP_s~RijSXfxb%0ZHbTfJp9$}z;d5(W<) zD$BUW?uYvNuK|!5tq$i(+S$L@JSBG7$T_sN@ma%+ZE6b?h%g^_fCRFgl<~T>_Cv{w zi<`R*MnS?Y_G&!|vNf!u4Bag5LhbU;SdqJAH04GRi^|H%AknI-s=hn$tmUw^wid~7 zsH-kwxeZAzkk(zUnj2^%Ws%L7wqoz#iTCuGE-5Hms~HOC;|@c;ETyYnPAml>Ebbm4S0Du>*_|Y)hE{fS6NI%f_o?K8zP?T3 zHNIQ7R9!!;H>>Eo}vE!a}`yE*+JhhF!ye6*apVyJwg`~ujhLVe)(eFp6Kx5 zM!U&4XZ2J%)dq1ODa}VHD$Y)F2uJBO^dzDgg@uI+JZ?SublOc_4#*oQxvTb@eN^Ca zw2fPQhWf*Of%G>EHcZ*=#88Pcl0@SRWoc=>A!##l?Zbeu% z^#s`nMLE=QCqKlwfztCn+QzcdG|k%S_&_vF&&^SgHpaO_hEi7{P4;*xYHs`tFQKCgJuRG`f$_d!E+-?)ZK>=dbI7v=Q3I#AX zJUW_QS$R>|bwe6z`#DqQsW!Vvof0G8xp}54Me1+=3Z9kk9lgDyi;wqA$8Y>PX%j!D z4=<}HA98W{=}?Oq5mi%OtcAUh29*d`th^#@_VX=5Eu!Jw3yX`nCzte9gKhE)3uT}t z(Bq<Zo8G0G8Pc^#V+|j15Sd0jL=uF>5`$ct2r&em<>-0F%$~E4_j>ME?H$ zvtttYVd1B_czAeTyqz@tS@L^yTe=D`y1F^8EfiCl25zmq0x{vf0_e&;?LV(L+xFDz&J}zy|#b_Gb(u-I$Vx%6*Rvsfk z4!57g93Ek|wux?lMY^zcTkuyyn>|tQ-DHQZ``;8==26V`%{R!^kQNL$zqP*6$%U*bZG9T zl@JHA@*-21)c`!Eq@=H{SiVmS*Z#L8iL^a=I1ac%6&;;d!^7&^Uj&ntGPAO-S{Cu! zPUTQ-+)G5;@#DXN<+oZD{5T1ANN4B$78y;_%L`o5-L{|Lk|W+$Teah_<6I`Yxf(rN z;YP~J9wa zJ-x%nj~|!X&)t#gXV9e88hFdc&^P5e>j~xjt*I{}2S3U&#_SW0(urhHT4yE}XJp_3 zTQKx`4fZ!&yCt8 zrxsX2S*K`yyIBpdF`oGa<-nZut>?(IREG3JpbKF<;Km88g~XYM^!C2d-kPL72QT!x zYD{lseS!Qy7Hu0cdQ@t^Og6pPAwsn-28`)z%G(dB4yQdMmbbSt65#>M_x^a zB=dS)n*CI__9CaE+0>j`JUjBbwJXdcZMBMmNdpgiKfIF)bZYS%TKSqU*1&Zks;70s`Ym3VY2M&vuCKm`rZJxDlch0^@Bxe+6SN-^*2t-cS z#^=#>7phJ|PQWLuls!c+BDLzDm0H9ziQ7njy=v@YkodlIT+sxgDeaSBTuY1gxhVXsnz4spXjKJbWlU>F%`)9JBAh#k>C?qaS95Q zh8&BqFwif>q+Cy>a`5E}dHtG1$BI>4Fw*W*Mfh&Ea%$1R*&Mw~?TR>eXfkFPW_hjR z2~JNloeD*`#l9sT{N*D_F)vfdbtXQjDE>b;&vcr=daM??FWbl#zVP|l`H2bdI9?MT zMl?^<7&%+MgE&9`=(!7BV-Gn6IiKIJS$qt#L6JyrcQ>zIOXb3EVi(0XeUpFh+DzZ) z>JM9W((?-;As1^u|7;->A0`Q8L{e#boapzlQClHuQYq6YVmZ)3OiU?BgfHwkNT!MU zR#KW3k6G22TUaSnQbJ@hj?>ftSOy6y4GI>(ua>c_(#_Q-)6Q5{-PJzFJ6(YI z;4#AT1;$+(1~oyTU>L!D%|VTv9sBfnN&F=Dcyh&wuz`GN)M(0O(gvfWx_9?SVfD;| z6Pk@%t0WWGCPF8hsfsAN zV!?4~_T;$QR_oHL>8FCw*kaBG$=*IJNql^Maib2}dNi8pd~>I#phUxuvM#3qRQ_d}OZ+_BN zhNBnS4jk+)nFrU!9TtLYYsA|LYWYiDYY5E_J_Ql0UmgoWK<$jW#oz2q=Py2A(4hFdGorA#k$F zF19_P!NiXiLjC$j1DUKzkHw$POHY@0G@iw8cq%&H=vnt}Pxd;urt>MhVKHX$OD{Uk zkO$+PB5luLU}*Z4>DkSVwkFdkoYjv^y4j%UHT=GiW^^a z+2fLpP@p2_N~s9OD3)F>uRZW0*6Lc#YT+uFkR!tGgizhG*?j<+eYI6z*NVmV6X-uq zZq?$L*j4#-Pji3-i*Dn<3<7GqtCzUCwFeW%Y3D~x8fXzQMa9*0=-@Vdg^I^CRHX9~ zLqlX`$P6Z>-KO7o@IYPwh^e}5Ggq^RJ~!z4Rn~p)=;&tD^^Z{{2SQr`K^+7O!@` z%j*i?u>DlQms@1(!p)}wi4ADbb95fRaG(?b702xAO_%DH=lJec{i7O!ywksfZF|N3 ze8m&lU(UcRy1%M#Fxzj}HlS0$8XMl6B#qZAXFp})GNwC5kv(LwJRtdda)JhE-0A)D zx^iZT?LChGi66qVdttU(UespJyBtxI9ZB~J3#Psv^`K{^p}Z<${x$Rb=SUA@J3+;i zSAXc#%8lHA=XO&rKz5^ST{SUA_9Tb8Uh@yTqI<$EJvJQ1igy#m@JxA9ocdGnwAF zMB?cKoPhKn1St{F+iGWXSXfvD_mz$m5A40^U+l&8=`KSovGmgy^F(v?Mj1ni@b*kq zn8gKukML|Sf_dQ41AKoS2!7RqlbWv6y2h1iWe=I4in zs=}54k|7e!Q!6{43hYHGu=?Kv>AZ5*7-YPna|@qB;Xk5Z(?hH2@vHe1#&|D4MxL~$ z_u`SWQu|(e-aUE4i#1qcMbxj4#N5jPCIABh&?k!`#8Der73fC}6YY6bttzU|F=W=$t{P^-NUpvAObNjJ#GaCm-g|+hV*d2nv$kQ6; zH#0y@5|cxZ)N3)_NXt zjz6(=#`#4>{Lv&j08%maKkNk*woW7lU_0zFHHUqOP3I`IkK9* zh)GpWybv`sXa9BFEVc417GxO`Pl4V9K4LiA7m)l`S630%YXL4PcCsAy zYsmd}ZGgHiF-6`QYpsu!xw*t&k(ds?rvljy%4%Rzt_ZOi0N{A1afR7+3MK&aTdUlZ z1oTOpobA;!rt2!kWr`7&day-?_X;twZ|DrgcfLHv_+*rpl0%{l;9Zw@c)X8Da+Y(( z&Zi;le3WCTE1;w?)^CvoseMpr3lz$#LodTw`ddS z)^i@9LcG=g*j`ya;dxtlwvw-Cfx8`l7dSiG02 zdGzR!Qw!)Yc?tXuGeNIk^LdCC0{?dJ-aWYg*Y1tLA`;Sux0Mt^zJEJrA-tNu77R4B znzHD7VdcccM3M#+egC0MQAY}&)g@pzofkd+(T0dl0L3m+_g07M%T!iX-N3dVU*8=W zp+Q*hS_hMMg(kPH@3v$6HF{jpF){I@5z-9o>|MW}_5U+9pnF3BIPqGXW)c(}FH?2; zr>`=F^TQn33ngRfz5=H+^!28mv$Jy+r9u8SGZWL5iL1{W3<`8A@1vD&CK_Jq_3D_s z!XZk|>QPDX5R%f|$5#@CuRP`kCu$wd+7GRn(daRI$#Y1i3wh+}sZ>!>ahcXL@oC+3 z09D55sK&ItfCWvj$Z2cM`}glx`%ysk_VMG#w8}*6PhxE2HMxlk7cOY=`!9!WEC{;Q z6%H!4x3~8be8nF73xzMt5;G0&#GR=;@k`oWu<`FW?(EWfiZ2#reMzBn?1TN-ic6iU zj?Pt8H+ro_(RZ1dpCbB1X_d7mvoCf$9eOh)*K4MOz4fNcrBG#SXL0*efdT^lrcNLH z^#C~?T!xD7O2Xmz>vb!YmN|#oVLQ`6M+d~B1%=~n-kVkPK<8*{Um5WK^6Iec0!CHp z4HR97ilP`4Q(rG4^?mFWnTMgkW!1ERMANx9b%}Q(uBvK@oF^F#TY9DpkvI=XrPhrd_&BV`yB@~rb)a0*;8prrMwQ7G?V!Fc=CqUljV%?0KMw2#j>+X zJ>WCBYPn;=@ZrqTKBa=Sb-~=r*rs0j%Pwk$3l9wLaasjiL>;I~}` z2x-R74i#8)wC6v%We}H7opTrBNU}a^Mu(7ex@|OfZ2XZdZT=aE< zoS>jQQzx;`wfE^wU}ZOLa3{B}MesKcSG8{rweFrxA0I+B428<{jvzHD@N+?RX-|cc z;h<)4PB^y>Ejnl$NF3}Z$tfzz0A+2F!VcGY_;BRP$=&PHz941#!gZwVuML&}-}CU{ zL*qrdy+xLn%l3w(2Kvl4Wqs0i3$-cd=;(^Gj^K z<1@B4LPJ?R76Rmm6z4-%;JUY|2hW>0n3$Mox!patH?aE5IopAmnwXMH8hi~aJGzU2 z-Si;EKiZsc4Z!NwCG+v|WsNoZrWY5pK$s111XXFWe~Ljpo~bv{*X6ABZqSJyy|@OY z>j!CR-kUGouTuwah%_<_C6csX9WM8sI#NSwuQ)_u(rZOk(t(j}nwTRDXJ(oZJZ7rO zk9;P`G>Q!hsgx8I*GqS#5QZI(1|Tfh-*R>gV-pjt{*XEe=%;{QNuJDpIc>)m;n5%# z0+|)i$QH|~JDOp)1PU@aiPKq?1D_q;2^}{#H_^dOe)w!){3VVhUH{G|>;B99oSf77 z-iVDb-I3%#@~^8+*O=u0Xv6z2G%fHtKusEm_^!MG%Y(?{^p+}U(P#FjEJ*BN0}BC@ z(mTZHPDq7DNQ72@nmgs=|RH@C5A zJw@l?1NFPxrAcIK{MAL#Ai&OT?cD@A>N+zs14yZ`Az*`!a;oX-=2I~HSb8Onh6 zfgqwYitSBAE2F0d2h;!8FTXnpEvn{`Gu~Ye0QVRy$o5z3coN&UOia05vhIiY>s|<&%d)8E85VnW z6g9M{P^}Ev8*Qzevt3zHvHV^6{{1&*s@jWf@RR|e_>X*7o@q2fa_rWnOP4y!wR(qO zZwT+gux!!EY(#84uf-c7&Nq#^Pz{v;1t~>KiY9~2 zH?-KoIpnu@Fndx&)wq(C=+q)Dtzk`*W($l$8F3V>5f~jK3(F}$0$G$~oFD?g>^SS+ zf%W)L|ImY#xB7O#65Lz=n<}#aLbMUcc~G)iwiEktpwW~D#bYJmz!n2H?%Ve5%#~pT zQ^0cItLM0magXP-(x|S^FDdDFNR?G%_)sr#=1qA~{3VQGW z`|$Q(Few&RlVDqld8RBx(w(-$+<(Au?Bg<;jP}#`LhY76u4G&H4gG zo5+MZEI2Uvft&PyBoDl6Aix3F-JU@L*RcnuR7b}1*EQN_%qG)TZi>DM;YEr3`hbU- zgX(O$ zV$Idy2;)Ku-`jUcAAoIC)nQy8+FQPYSPHS7C~9^_Lf_>ZegB6FfxuUo$fhd zP^?_z;@}AVll3yFSG4M^3Me8Z%`dtZ??_4_Me?w%f^^RV`1|~~Z_Zm*;GROHJIKy( z#Z@6`S1ui8vAs+YB7_vtDFM0)arc0}0ii&~%8DHl?vtFw+q&Ub$dgP>P4gyWpy6Vd^k8@(_O-e88ScLg^)^e+bT&Ydkz^v4Njnza06wlSQQXIupc3 zh+p9MbPBI(;qyK|j5y%xm9cr9V3TAtM zFnUF4Cb2P#U9nWQDhncdDk^EC8)681{j~(BAy_P{C9G6dR#wPuf|iksq|Fy^gy2OCZlzzcVrrG3QlQK8%#zVS$|t0i}fiHq^>@3PkxK@X*&!rZ)op2{GxO z-2#u(XO)8*@cgzUdjaZ(We9PXV^&M?{{2Dy3vfA-tuQ`|Z=i)ddDcA!{&ekf)0NNh zJuD|#lk0au0x~|3c^yI>_YlMq+#1k~LAT6V`Drhp0))C2or0wts3gN7{a`2n8>*gj z!lCdTd3j=}MHI&9iXhHRw_;$lXnpw^F0D*_F-H6K!H{!Pg(<#VT&fgY( z^G?#mB_VbMO^OtV^hAnV1o`W4!tFrSC?b5wRo7jmopMUji|mp~W)fXtukxM;0N2uY zgxXykeFT&I3=Hg5`I7q8w#h~Ij?UmEegn_HOxX~1trciB&@Cc+}cwZ zI~A4C{F(}#cXAB21*f5c3B1prKkF1Vq3eGS%46n0B}>c_$F-<(-?p5t0cTwhZH$?T z$x1*W?UohY32Y@WO6#NbC$q?WjrutZ86yH09J7VPEuIgSnRF@OrEO@{xfI$8aC7%z zzq|*%rk9Rq;;gR*9&Q_SQMkWc#~lWxXZja#n@%l}L>h7ih?JQ_TWT}O z?-t!$-MG!^7Ja|5qjUAlrAIfXEh~3WUI!v5IiH#U z1!*8-y35S-5Njg6eU!w1GgEB>wT%^-eR`L#@F_iL&1w(d^1_TJU*z{5vh)2!}&q&~S1+bUgL#&U|!STuxnyvy;;`$h43W zAJ!GGtV!HE7OkG7(eSaKb{<;^07}7o6->5>NMp5UH`D#!R%@iqhO;$p_Kr`y;Jdew%{mh zX|z09xZS+UtX5}GJ!vCH#*n^&+}E1z996Ii7B2M*$O@D%4(P z_uONyzamJI;<=+OwROfEQw(lwsCvn5_3{4+K=@yvL4zCLjwUyV0&IGm$FyiQWXG#eu#(os74hkv& z(x(#7hAz+H9CM9ckyowO?6M09kV z%j_^DmuDUmlplL^9TdmohgZ8iO<%QrK&Ta4kDQ&D<-1=w#NWi=u?yKi(GqY-{iBbg zeR#)ha$w-yP9TT)My%Bk<3(Fq((ePZbbLQ_OT_aNj_Q6k>aP1KdkINM59?PEt1Nz% z;reorF#B`NSqchF6>aTcNXulw!NEuStnywST-CWe6nPn5f=AEuOu?M^=zDj3JGea+ z6-jR39t{#X2v^VCMDzmtlH(hd3;fv{l*{(*zS%VqR)!w%472v`+ghHpP3UOTQwrQT zjb`1ja46IVgxmg@GOw_ZI;X2m@citb&uFKXbTeX`50{j-NZ7&pH9*qUaOR~{V>3~V z(%kta*Aka)Y3aE#SWd3_<)A%J+Z#sJB_#;E7FqoAp~ZY~4m{LfL;M6K1wceRIk+cy z)I#EiVZU{2;Fmws9zjG3;B=DpTZYf(2;e*K-?#o6b-J#PcSb2&ZEOKN&>#Etzf8N% z79Q)a1yI@clc0HdUn=nI#U&ERVqYtj6sL7q3}_-jWb(@DcW2;UftTG|EVTEVQ9%$0 z+70Z$goj>DT+_Xodv_7^$6PkN&>?dZ+ZFB5M+2r`qdL^X4QwWWBB*!YQiiEeE~l7Y zd^tKYvc1=;OB$V!n8+zS0KvN=DT^uF+sn(VUq>C>8Ezg>9QkpvujMAh8oAxs2geEr_#J_cSjO5znGLolC4C-L_E4})$fYZ9`#L)ZleqybS_;;I6$!du z`hMS4M_RN}Yrw)rCFZRlJxo(|FwDjwcI!&0)IPPDzW#C_fn`UkX+eb80Z<=QqXd0m z(5M>!Q6B6t`>t7x{YtObA4M?|D;a##cVbV!O#h~=pmFR6kdv(jVP8l!I@f4j)t&b6By76+gUM$Ix_EPEvlF!znb8oG5OjA2AE|ihbccK~6 zjjT0ay!t=`%@}N#xD7azZ!ZF7PBz`G0Qvv2<@6KqeFRWm-v_(EC(wz`I~;%+=RT*{ ziyIUx++&$KPXV#Bu?^@yTk1(P%UQhj4aN;!oKNk6uQe~RiJ>b6)B~g(^YU#S@Szpg zWABF(WZ%p+kwS}6Bb0#kLAsIvey^f;BDRWim( zM%!<(kVjt8CCoXk#|s@}s=B%%2=uz-1r#RY!U9=wt~ESm!AVH<;X{95S*KmV?hh0B z2s%wfUFL$Nfp^Ty%Tob&kz6(yRe-&H2bEgE-$p;^U;Q$c8EiB#JOnDAo&mut zI3eLGe3zbwXUM+vzLL^iC?-T%P)zSR4bCTSgHXjpeq%7m(uX%_%_0P(1^wW=rmdRMkN(7PLsspYk8}au z*EJMEi47#BY9GB#$*R4;@F7^hh=KLEE!tx%fvHn`2h1;FPs`kbuZl?l)HhJr!I18Z z`W5TdKF|*YBGLCRO>Y3Vw{&}QH0?p(mb_v4 zQvvF;N(aF}5yFFcp$4=ZiZEyCTy0-pir0eNT-3oXNp-_@;P7gFa8|V?Htu&QfKRlj zNf95zk=|GhQqMHi3|H)0sKI$g1_q(Yn-Vl%0hA)#7W5hHoMKZ(ubpxRBGaROR#sX( z0YV1^H{N>d^S0IZkf9JYUg!JJ!7b{~sAU*1yydrDz5<;*;Rn#I+Ur~(N%H~FEEH*% zTuxrk{Wg&kEe5wJEdjpY5KGFlJG9U+;MDt=WK}yI!V2`F04WqWx0N(z=q(EJ(QD|N z{-wC-1^%30Q;vPPiX2c^M!tRfId&MhP>%m`$j>o)0Uyaw_W$Vq{V!<8f9=2j#R*hj zrL$t?kWr-{fBe@H@c*UZ{nz*RU!UOb1hpS$vJ!>SiTgsY`n&RSVj}BGH}c?DuRcQe z_sxZRq-FhddPW8`i!=4zMM!Nh^@r1mhrN9(`e#g5@lQbmO)`s8d-+*`7rnw{l==%2 zNnHf7?3Y>s^n<{g(p3)RHF+cu;eedyGqS=5em~_&&p1VYW5S^DoDeCkWZlU*=(Y@q zWTd$)ie+$eah@yRA*B}bz^63)@hOP7?-c6C-V<>l;X3=~{w@2CR!aJvSMs-xUv=Gb z|IJkM)sOg`O}QuR8-_BxNrIeI&(VNs&gYvyM~`YA9X?AE|Ls&VCMsGkZ)&x->pfAr zG@F|K?W=0d=hu>YKTHI?=C3F0R?H7o;l-U3zC;=BB!ScaYle$j`005{Qc*HW5^=H& z>K6OWoRD+EUer+EYlR>^-%mb{;;b&l>IcwE^+{FptE!$jejctgA9b65!lINU5?oZI zcG-Q#?ecA>o6%}SVW|SaQOU`dg%(84((;}r^5G7nX#=0y{>1m`t3TPeGW){sll&a+AN*8XUR}L2ma8VYKSiwHE>_KJ(YnJ`ASNO>YB-tc$PgI@zh)8;2X)I6$A#0Bg>kbQMh%>1G!qsr@R zZj``#{99o2=LcR3QOjS!CzKuxH-EC(sJO32U-d{K!q1pLNls2)Uj6Z@BZ}qe{K6S0 z7ngbUF*ekPpt#GSAr0qwOlQJMV-5U59^L(VUy}o_&sFmkw{#C#Ru_yWQQI%bPW(lC z=)OgHKJOphxngua%@VCoTYMC?qQZP6`8!Y5x2C-3y#RzowhY%U4Wr}Owq zNdn0F%_uLYfDxd4Lbx2}<)fJCIlqa8(z#yw+jO6P&ideLEpA$QJ~4|@iu#MD#(iO~ z<1jk1edzSN)iMh&ZFqMe3@=!Klf5Hs`#Yv28$5NM7lb4q{V5HCUeU8}CRmM4xEp%e zcdJjF4!B1|qu{r>T2wPnboR<^X@iT%BOf33AyR33O%;eJD$oPBzP?@qevVsD+ECyJsOMlyl@m&ZCIyc^ z;%P^A7`(IsM$ITBbd~XL=m!|`)5AYcdHMKoP(^hcLI9BGR`ZMRDkz+7nn7;3GczGFo51XbLu%J^88=b6Kmdgs0rYbR(g?eJ1(V%J zSUk5(IxpyfW3Oi6jr_t0GBc5iXLC^7%L5q#4hyHb8vi^}NP^A?ctt@FIpfV|zl@T+ zkN4sPo-%w6y^_)E{pXkQkC_H4@Y$GKT7Jw?%|JQ=L$B}%S+*DVO-mi9E z({Q`Q@G4?w3j0h1`-CAqXuK-pcvt+8Qp|S3zu|epz|OcA>cjh3gI88XwS<76q<{qm zdwSUJtT!FF_3t=2@xuCV{4-BXE%HodZ1Wg-{YdLYO{0%5&(r`hwh8_yW3WHTDJugU z`B-Ayf>Ja)nV$t4?z7(mvIE1zFX4qF%R;M^(v%wMJl>luql->qpE5h5ZtWibyykMa zXl5gO1Z`5SV7V$F<<`es2p8RnvrRchZU-=JPK$1pb#sNqkki&V)h8ADf8ImaKhk)T z9K`ydsz7pG$eD;mxUPSE#9u8TZQ$qbH?U=XsPK2k-2- zP>XqJ?Jj0Vu_(_&R~9nuZ#i{KEQXk^XB%lw_Q#r#S|4T+2f+F? zQb=jNCMv35-Mukghl8?fI;yg5Y@_qmLo48^nV2wL;?P1tBa`q3qionqD1_j!{{H@J z+;=bV3);mWDaPL>Ail(LI$w`5z5E5Im5TVpbf`DKm(Sbp%oSc`l*c>#9~K-Z3x^C>p@6J=W1DY1JKlXX99+Jm`0EzWQ3?Ht9~n{a&A^H41wPV40J?~3J? zRZqbbcjN21rEVDmPW$tMf8z66)aBf7pFQDU?W`o-SQ$olm z0)jRmcD3g%r$J^T=o3E?x%>JmlX7~wmO9yRn!5`ql4XVAAIoy+<%*=;%9rZF)_)Y4|khR z^wAuX4bQ8&1PFZg_uVV1tJgjw-DWw>Y^W)(gZ0&>pO`f+XDa9o_|?f?oHJzp)!fcb z*4(r!vTo-MdT@Gqmk+T@YsTTp;ga~DKi|Sj?PkS(%r?;h9lWF` zaib1itl`w+eK0xe)S^?|u#>R=v!a4`X!CZyiTT$_j59k_VNTzm$damhOlYT`6OO!! zW;Z&gPEjSu+^E#dCof2R@%ITH5`;XU?dH!yl=82Y?9_Q=y+D`+R2T*Z-g4}Krz;57 zs{w_6J%zf}c{capRRqwKF=7GhEX&TMYhBr_JMLX#BSgh%-D+^1U{*?&d7kcWOly@G z;UI}&nyL;yHmZ>onBq@-Th zdSW+kPA=saVTe{%R>*fH6H`-*sSFxD-1?7}!yw>5N5@rI2C%2ptF?dQm$+}QrnPnE zaZf^!nWp**pML@t)u~PHu&OGSxO}f-e}DJobe-$t@iLQu>WN|)6?B1qh#;%Ll=r|T zBvXq{Pkg)7fo+iF`c^SXpH0QP7}D;l;U=Ut;ksKt(eNA%%^?b77xP$fOKBXA&zMnl zhiR$@l@XhjBwg!dtYwL}e{K-rP2uZo`8-q`-bYb?IhpuE;&{^u&thSMO=q6j7;CMY zxY}*HKVi2)eT5w^6Mx&})oriCXN!KsTq^15>BBcid%eR#k~*V5U0>`t;e23_o1LL(Gzi zjV4`}rhkL_wwA@7{gZmQDLVSXdw6jMSa>j-6HPB);t#D;RvZ}b#70CI#hJnO!CGFB zQH_RF%=+}{(*WnVqxknA^V%=uZHX-No#dM^%CrMf9_-VS zeI9nHh1;V*c`HmoxoT|KbG+clF}N5l(HJu{waSgC)O8o5);{iUuaR^W8#Wmjg!bYz z%fIltb}DDLx4{rvBsGxMQay(brp^d@DMAJNS6-)87C(;u_%v!D-70fmmD7% zyjpf!YimbT9ZgyQ=1;JAIq|FWrfH@-W*Yqgx^h-03rA7hT&BK3B4iw4;rxZ=<>e!r z*j9M)2=vgh1%$jDZ{@x$*k5vgYvaurRd4F}X5_ALQauGFB_*%c1@ALw&S3kt4}J#k z!AvT6*JTg3uQ(+T>P04zEx$lj!c#`4dN48-%RZ+K7T=p%wiTRr65_-wv>!96BHjB# zACZDwfT-C@Z;d^v6xkVOt>|p0opLUc{f^_KR5o3! zDmMQnP7SX=8G$hu`m7i8@{1lo2hZ&%?dPOER~{G|p2~4ZV?9OXU=v>>VS%Sx`&ILT zjHbEy3uehuJ2%j zhR_F{-knc|=Uv3EMUn|Gr?A77zS^tU7kc)Im?nG9t_ zmj!V3G0+mV(iyqEHb#YetNbWByj&L5q7o#l2uKc+Qwt~(ga(ly8AO6)NfKLvq9PzUgCvyD?$A`v@Z7dj3IXtEMaza4aJ#}*rtbY}sj zeOjv`dl=VnOp93{Dte`|qQY=EQERs}>~y+y&KqVn7jAZqtB+Wc1WZAc&G8%I{Oc#H&d81HtMyZaPiG{ICL~flz6R$vL&Y#va@6fjmxD)%SnqE# z`|1q2t;V=`QW!Xk!cEcU+#igX!CkoNau0C~;5)^DNR~RqG z5Eg1C0Zar<9JIe9#O4XY4+3Qkp*Gx$u{F~xe+9o%(=b$KwJ`oHz8-S5nn^Q=cC+`7 z#Z33#El0O2DJxG#$}9^f+X7=Ddq1ZF%vsNLz^C0@^;W3vw|S{XoU-r?)k?yFPi!`g zSCiK-w+K=jxg9>rkql9Pa1{FPo4F2`v2VOCCl|N(uQ!NoLL=U&2-_hDFcoH0j)p)@ z~Wp;02PF;FDA9;Tv6pM{l%_9<4Fblz?1sw6V zCW=CSGVEf}Pr3=GX1baO zlZm!P(W+E^@wh6VZ3p-@fO()G{6;zyy80&X_Kh8-3Mx;YcWkn?cJxlxu=+`~_mQ4> z#tRfy@FMiy&Ad>0l*9A)rONrZHsj-W9#xIGCpp|Rl5f}^_o=bY=zn)E?V`u1^9yc8 zRs^I7N@BY_BvT-F?foW!ES8|-BVLmt881o{G!);m_v`t81#_42;aP_XyhJMHdCRaS zUbCm;-V1_?^QK46!@(?i3*l{gf1ORxu#scEF2Ms6MO$^h(T*RVQm6Yg131Yu+83(b zZyBv$vf)#@Uqm-tel<^`5Mto>MD~DF7wzeQjw^swAWAKNoIdvQ^p(q*%lBr^m}*Qf zzlx{-!}h#JY>Acz}nU%UA!~m1)QVIzHf#6=H-5XhfT-)M$ z5F!8_uesnn4@A8J67t~0X^1-jLIarF{bcDC@)ea_Os)IUoqay}5eq9TbAXUNAecZk zVBQ5_YfwxGx2}#<)OrI!$sq||lgM1Ou%g`UHx<|W`a8aHEb%(27Sj15Yh{vj0|-cm z6892~gQ_7o9&_^eiZvyzVKIM$+rKW+sJ>*&VDEZ%Wjkh#$<%u476N|g95RSdXd)0VV?xD|x@9n#+1 zuLyXn64A}vf+Po%*Ut7d6g*%lvE|YZbq;{^X%=X^U5uV#pcHpx6vgB?Kb`((` zK_anXfUu^sAG7Su)eesT2K2p=LfXQ9kST@aXS2Hp@@_Y;yGb;i?oedtlWW3k4Oyvk zJ!q3usaH3Vm07t#_9|wg>nj84*hwT14@Z=!LxjBN}$J+`VJZx*|ZJiR|8M;TYqy5 zvq5VOTN9MWi=k81ruZIufp~lUtL$e%zVKj%PoYbFzz{-kp#)*t!P(!4W|3Ca)gtD; z>_1744SD&K60~;$qpOsQDh|y8CBHPI{}F6dZnS(YMVe*rE8D5-_1twx;8}9;YNA>R ztXKM$hJSc{)mL=+w^kKMg`fZQRmsD2k2{*>YbarxqJXYLDFK8gb6Sxf)%pH%0=82Vvz545| zBKdoCvBrb$Rabq@qJm0Kidv=@6sQTF^`L2ZE{NN-Q91Sla=R!YKU?Dh$fa&`K#;vQ z%|*J$(cjIoIDE>uT2CjbABqllgUqf(F}G}gXtybvL1`7eIcxzw49F|*9Fl?Y1f`*u z0(Z01!5qUPg1XO z=1~Y7gS1GNQ!}le|6CdgQgUU;>Xtw1>ghF2uRW{VEh{_BbpCIkqcg}?>Sfb1d~UGm z!OV5Pt6@KYAF$QjNfa@shHve4tEj4aTTpNmsyrg28*&G$&GR^DsypBa?#;4?lBdn~ zhX=q$x{^Kc@u~HW{N88}|1CP&Jua(SV~k{y9~&A>1>;-XLkY1-ufENaYiqf*<`V3Y z;7bsKFPw4dt=+w3o!Kzw(%?v6nr<_UYcKkqpG|kcTR*|-x4sFk{OA}N$76lkn3Bkh zS+{Q-t!*iGH2X2z%BJzh&!z+ts1`g;my=JiaOhlQv9_;VK0jAGrO|GsF{{xM^v<3? zI_vo$XY~{N-8O{`Vu7?&yiA6qOmNuE29dU)YbCpoea=ktMHWgpeqI0CG-i43W#r_n zn*rgQ*MObLWR%PxR>xzYho$k4bfNUSm5!Qnt{aRq_N?onPmEKu3134GxI>Ycx*_M7{oCOB2TL9VWw2*LYA6dD z!8KmBymE37uq_JLc`}C?ctee%`)5Q%EEx3Ofq}FbEXfq~$F8p*vG0ijE|@PswFWMA z)dCjy64w$fMB!jfUa8Xa!`)ni4)ZJ%?GRLFpu=o2Jgei;-`CswD3{w0iVt*4pOO+2 zd!HCzgu>SZVcElN-MVjJAV~-~@9!7N#JXo0_@@DQ=Vqe*o*AGCh=f7vPlo4+Av|C8 zLMh}J{yDp2oi?Y1=iGZ7ka#NE&MnDHr)VIk*P}cZNclyT%P*^extNX(eE%^0G`KKx z{(|1}TO>9Z4A&A3{*e$K)ndC^&ZY&4nD57y>I*rcv5C&Sa?5U&g!>s zH$zgoKifncG{@$R(OYBvu3aP7D>Sq?nM)^zyeFVML3R=dAHVJeKJe+g+wl*f+U~hn z+8Vh0B-afJwFv4OYOI%Eb0f?AJ@%qtJlwukoA|D=z{QJYvaKy!kd&PKo&|Xz+%`Ob zrQvz*5*(D5uKD@N0l%_1N##T&|7Xhy2Et;Qgzv`%^SZJnuEDy}BP6@QNIxH=nIY<< zt;!m{bGKuhI;&P%pItN;`8^fx^zI@H2vM;bI|azfKw-Y?3Re98B>4PQ&u%{iGg2!9 zq%RiV9im1#Q3hX3wOPd|a!l>xm;t~0O%F;&~E6Hr8X=;CVIinyX|1{bB z0>1bq_w`^N%a%jN(p#5}WxM~Q)yz)`{XGs2nl_~j%|jut>w^`VxY;GNNGhP?i%k0@ zko?MuU5lEY^I7=Ahr;eZ9z$#5-pf)n*m~} zFjX~|9Sq*(IW%;Ro)S9*pMTgc03X(70NK9>$D_VCQ#`NCeqE7`v~e1Tr2pw&XFj1% z6K6s?DgUEt_uumlD%ih&|IPqjAKS{SNsfXF_*?L+`X+A7P}qb2{~QXF@ITGJzZPJ- z;&K+`VrD;kM+^o-N%eb-ofYt%=C@S9ZJxPs0TE=ZS<8qt_(*-na4Vkp{SU=wh__1b zHEh78i&lX8JMj#>Xf&UJVWph`mXbR|c6;;* z>M0$&L<02%NSDxv;vxW%kbs<P$Jfs=L!ZnJNiWPAHGKT;h|L86R3{?L(ANVZJbNy+rUIkkBWY1+Ic>|n0 zXs!Ylg$A*?5E(+V!1zhK_>CJko&p35N$-)SBH}i5F`khQ7FJ#zvg2{vRI%_f+<8&QQ2zMcR4xN zwNF4A@GS;msGt-dKFrL}dj!$*V5L2~Jn7&GM7u_k5#IVG=I%mIq@hinlj?md^-&&# zc5(wh;NAXH+(p7fHgTKRvL_)!Rs_{=!^md~sXohO4_X10){MNQK-fu{t!w8;h74Pry|NFjR;)LBaj0;+cnft4z_+x$XJI#q_mvL5D1R zdU|GW_G$vO(7TyoG1wod|ML-;lKWfGf+ZIdFN3K9pX12h=N`7Vu{pB$HNU>z#7}7# z8WTpTYD!lT32a0d8?AYH5E>28Q;CMfgI0-gsv6GZ^IkSIBv*6jvSJDp44~$TLZKUWGGz@ap!Wm3E+oSoW(||HtZ?l00ZDEN zkKrn1kCpL=jSW|~D;eqOpH?r&v3Wqxg(6_f1WI%*Qu)L0;SBLWH*h=H5n{pF18|{l z_U>HQ`Sm$o3#~@UyYhBWXlV~R4VH!!OdUx(_`Sk}`n5XHz)zRFWEn_EHQ-&b(MvJ~B2w9%<1QmxtrSKTEKJ1Bah_P`yx83&KOCP@+j6 zIi}9A-^@j1K&nc7`7I3wvqojE3|=Na4#8!l$pX=Pj^xp&F}t$NZTC``GL0G0tbzs~ zluR@h&B4+S3vK*Pa@1>mGixAPHR?jkz)$-l#IOsZ{#^05Q{Q6x;Y>llmy$B^g0(@t zIy%kF#Y@cM`|I>p)Om}SQfWWBd(_~8Yy5`Gjo_fl=I>oA?7PBiN?v};r!-~QFYGKA zqc+=#qzi(Ax+tWsk3S2n-b8Xmg9hJf2VV#dp`_e53)QvP5cW|$C09fg%i4?iK{4%B zCQ2(#$mG3H68tgA1Hz7Z&kX1wRQc!hb+H(co&F_u3~z^+_^sE+Pj5?gfy&eZF>Z3p;6&h!(1k&lVveb zY*q|yK@-C;YXCvIVp?QfOiT9ak#>NWk|~xAhv2a*t>dAI5iF*CLU{-p0N%zwwgkAj z8%vViYd_abv4wk8cxB0yw}sSMxoaGP@Kr1Q3Tt7v;o;~`q<))S?LN`s4}Fx}^?&Qr zV>40XbHJ?Jm2&st$t7o3>6GtKrG!2+JWG|_@T}4hZ0}5m@WIv-c?XBG;Zeq@cek0< z<)Q6zr&HAVQial+e7R$RgPK=N%3E({VFziJoJB4+p9mLYZsq3YzDlS%sJ#_+S&NhJ z4{JUFYUx!4Cq>i?L|^#=%v?l))?U%*Z=%T})YE(Cps6P%E6 zAU}1&CQ!HJ?PKywW!AT%Xt#m#-8&JR6G|HlsxnJ&GY@w#L0Z-pit3z~3}W2p4-_sF zJ3&=aSIk3qU;E?5tKC|)1yD#wR#S!=x-s+eGV0`wPD1I1Q%(Gx6A-(CM)GKh|57E? zWEQfK)l_%9QV&e*Uer}n4IiMZFz!kvP;oxwEJIylTN3F`RmIEG@)RmXJ&5hU73DkL z-=CcwoqX)p88ho`kz~REHI3y$Zz>JG(tUd;TycC+mM&J3xt;hG#}^_NJHR1ST9-^} zS?i;I#G^iQSve~-nKkxItMOvI!7$8S$yScRYqxx zQ3e&6R%6S0XQ>pFAGe;aKW8Pn0BachajEjp4h9vvzTc6MUg+`O0Hu>t+ z!@r5Q7_3+0aR+cxhx4JFXdvW~?Pv%ME`#ihktMy6Lj(Q&-(xxlr?Cn`SaR|)Ha|$| zXix~s2S4M$*t!EysK0tLB3E#SGdpkCV`6@uuHriQMN_i|g#{+W(gTO!u~8_f@>qFa zy3W`-^k@BB%qn!;IZ>c0>7!ErDCEfwVE?1}sF>|YpRb&@OM%=>#n|{X0R5Lgr!Su- zIdw>)JpX3Ac*-y)waKDgWDlT+DupT8YT)_yI!{sYFI|DU3GzjMO)nT*u8^H^>InOQ zH0|NwY=OE_n~Tc6P@r0}KE1+0iA6&))a(;Ih+9>-ylLe(7vi~r_6fnoP8w;K3-t*~ zmf1-{k@=M}&C4_3>p6{Ra)-miNBQd;8peNa=WUS}+Y1*HYIml>`@DXPLPZ;&Yr4KQ z;z-dQu8W`G@EGMr2jfVD6-Bh8ZEo>VKdAaqi4kPBvhGX%gMpza{j~W`L+JAYbhx3i zi@=uv0${#5-^Y!>(9~oxG{72-abxKA{26A+cUw+U;S-~#A7*YkaZVm=b1~;u_wdi68>*+_^>^ zQZ_bDelRklz{p?|dcRNsQXwy$G{DG3t17pE9wJm}2-iA>D{P~IvKWqT7+lSE(Tu|8 z3{3!#Yv%Lb%N_h(z`9E>14Km*5p@MBXlL2-t-0qmESN3WU7u0a5NXO^P;4k zR)raDzf2fj#K~L=N9#VsU5{;Tk$k={9FacrKA3t1^i8R3yjgDIr}49?dVsIXyV~Z6 z**8Lc!eS20t(U)2?zdQGH5ugOlEu1#T{KjO1*XpNW^1*Dw#HRbEc?FM;%Gypw6Hi-Rtoc%pi@d!@)&#aaI{Co(#qnk4Y$3di31fv zfi*~#{5;P(`SW*psx-RxNm2NETY&`KgVUJkforoS&M%wu`j+V6fP<6LQE=iR*Dcdj z3|CyJ7%;sXRQK%JGg0~e$x{mcvJ5Iu4&{G1GrE53v}iSpNml3$(9XP^_3mAs=8+b@ zD&?4X1X1~De^hH1=xwcAWEaHD>I6U+7=$KJsQI?b$nD;tEkY{h_(vm*_8G_vFrzHX zTuK;uk78{&PBY=&FhwzuF8kd69SR~lUf#F&!7HzeWcJY3#kr!xhR#RCn$}8uKI44uJB~p zG&-;vsYgE{Pt8k49$e@X9S2bXwIm5T$QPg|X(MQpwWP_*ZDUg*zV)Fn zpg8_bHSpj96p7^*C?MD^jFSZPW4uG+*BJOT2bzOGNj!mOg9c`(ot+E6axF= zTY-t3L2V62Xg=PyqXp2BM_IAJbKNYQLudh#bcqs%3VU5x*Aal`90Qn_UO);AH`+OZ zpmV(69-p_Lcd{F+=@a|J+NwyYV>RDM!=+)MpgzEgT7|aeLbltV9nB;O_4WbFKT1A6 zGH^MhbOsy6f$DPLA)Z2c{Zm3+!FOKAxFp>aWQ+Bu+sJ-Hq^cg|T1w(^{3_m_`K<*h;w#=2N$>k-)y{6q zSmlC+&4MZ4pIBb7*Q?W!&ZVQgml)PFbNjmRT$1j77g>UD{jA#l zRrTnGzpsve8Spw0v(&vDF8cFZJzMd+B^uoy=35pl`B?sY918j7*<-Aw5f77lvdle2 ziggWbs?5&k+?1NLt{5|fo&oRR<>6zSvrm*tZrPqwl723Yu2_I5f_X0AdDzXS=Zl>J zM5rSWixGl9$7dDbvyZDNss`Z=Aki^_= zEf6-~sw^?oJDjXPJk8&6aY=f1{nqUfoPFT8fwB|o{=uJLT&hXJhVc9T))!#!X34f> zJv{`$?`tSOnvfj_FbNb;lT2lUn4euMY1&aE*E#ny!xPd6?kEIW`P=M4Gq*k#bp zpLcw=r!G3|XJ>1B7s;J(H-jKmI;-5dsI6f?#(=z?nlJMDEzCqojrvHYL>PUaJu{|t8fzbBZi3jP;CrvE=f>Hen* z_uo^6`#06^f8B(S?*{DYD(V<&?Vhy8w!Ye#o34?k_`Rm|(GIG;8&*y|P4RBiW<}%g zmMLIA4B07C=K5@Ned#3a9CI+-`QRPE!n(SmuUWEzuYiZlio=Xji zv76K*G`Z{x+f&)k(UYv5eUtDLx1MqTVrHDtKuE2>VQBq6{X#b5=JSY6pEUv>NeEOC zJv6Wss8P?Qd!wyyO-sv>($0rk|j`1I#f|52k-dY#E1 zCfhCKzd7YDtMie0T7|wfHJ)gcdiu3z&n|K^W=XyR{&g-F-_IL5t$sb+a+IB1^Wi0z z%MPFPi#Y|+@Avw`N7lZxtJhQ(OPb2CRGoX-+)3KEt?|N(d{vrL{*t zMr^O;IOMF<<0sDqme%%XM1V`LJ*teqSk88uF35%yft0rteqf_&* z`~F_9u~--dV-AeL!YFkyxHpf_JwL)n&mjb2{%`{0?PnblOb-u zR zvRZuoVgrp*_58P97>>CBYcOU7t?ks-^L=Lj_Uk=*`95_Y`w>pJy$D)U7-zNcy2`OL z=SA;QqoC$RoX@7**hai5=?3yQ0R^Ff2>Rb&sL*)}G25CNqFxH7BbBOS{W<-_>l|pM z8dBKJnxx$!E}K3tQ*Q$Am{=)D1ejUuEZx83Z(QV1R@X66zn5Br`#5XeyfIL@q@D9^ z_iBc2XbA#+olHk1m_ZG1$e#-LEm=)w^ z`W3waheLZaYv3p4ugYi6J3ZYa45D@+8ELmP)3??OF+`&>%GEoYbBTpMpjm$j(^E(Yd8qrZ7{4Bd~ljbTp(RmZ_Q!Rxc;MrTgr3hnZ>DK+X<^2 z+Yd2Qo4bGV^|4>>(gsORp8>`oFPPs$l&^hE_Z$zFCyk_N8 z9M7s9Du2$RO7lv6>bAVYKm;qNO_O38+nW{(I|I)1Rtnp~4coi!DuMmhccdvk0@bO=+p z@+0*U6kC?~={c`F*c&usn4V3dxv0C6tbu#ovKF_{Tge?8`b+Pa#`D@3O`7$G4a-p! zcMHMrp2LQHWsXml*Ffv892s5=3<-Ih&c;CYUf5AX_I>Kc!_M2J2%42@PLbx|`&R3J zc8cpZ<5+*My;c4C))kf}gPp}*={glX5C7w%buTH@_qDG?4QW-;++2%)IQqB8UeH4V zQ$*bdE=|w&QV^A>o{F)Q66d=oU8@;*{xe^Zdl$@~RkmLnS*e(BIFe1+Hs!}Ml#1ARsB)&OOkc+xcXrwrdMFb5N9JyTvnI@ zyM$kad#jW@L!onZBn}_b8TmD)^G2?F05CMq4@ZZ&XTwZAPc`2jw|Fwt_)uP&5c$2@ z5LZ&OxWmSwI$clwpSWfJr&r5Aziesb>_3rM**kUdam43s!~V;vQ^;N& zPV?!_7UsFfY*GPkm+mZuw4yQ__G9hsI^%LH61Uf@$V0(1tVv2Tce*-Y+7FdL=ycy! zGWbmy0{NZv-{sk*%&_>+3Q89*TGfy;LJT|Vx%($LGOHW+1^vBVeV=#U9snh&0>LL| zi91!>0iW9R!IN1^eW5wVH9)uh3@okrc(NyACzisuhBoE)1@yotjax3DHpl3YFj57kY)xww-*U`$-oLjk9ktAFP;8ChETW#JdY3ct8>>|E ztG|F_1ANbXE2Ve%p^#bkeq@7KEuh?n%EUiz1^hu`BnQu#1K4MX|3~5>c=}xI&(7C7 z^Bv=#TFGWUnVS<#M@c&>r)6EpAvSW{d)T8MP#Kmj$@;RNFxfa zeKTUuOjh6ORF?a8=|<4DG1fW2;p>me-9H%L)(wwmW|ZUO7;w9*T9bO$qxM}kh1w#C z%IzN?-z^ZIYFbCdoce);ZX~(&Y=_Y|o)B9hd#u?#+>eD!3c@JG2P2v(@a$~hRgdgu zKLMNNx!W}qy!`x{U;pJn7_8gB^4TNa@eXjaIKF@hI91s?KWH#JwB|w5meYG!yS=QCHD327g$r3F z%aK#Pu$iU{n`&3P(G8J4mTF?XVvp3!rUe2#I%sUwjKTw3MU zlqX`I)q_MQ!5_`D4|^C`!yn)7^tz2$&4A7p^PWX?*b8cNYk(7LXl4P3x1 zJ5Z31Y~bIPAufRioBRo`JoU4S$rB>xPANh;@fC)q0sK)6zy-AhuUkQK*dW6hl zr+8&=`)~9)j3ONQuTg}OBL5ja{y(D#d3gT+{0?sQ!c3VHULf{?3@HEa)8zest^M%- z^a8QDAW$HH$ZE{9BaB@DIw%ignsIi9_(2u%|@6|8{i{RGJT=g5R0kRHy}e90lhg0Rn_5wRLu>`T@Bf_Vqo>0}-XFacx9K!DKkqk)mY@(J&gO71sK&vSA@s1raN35{@`ktq(KZT$%*!*~FBnhl^T2wO5+BV~96 zyKm2)ejzLn7~Tl&9{8yU$J}2Wi0%mD>w56fs|Z4Ds27j{Yqb-EV^HyIMl=e5oX-kq zA9`dyi8#N-{#~AV`^+En06QD6_W`Z;FsP}6Dnrx4<`n#z&=)Kh8r`2`cQV}_c*MZ2 zzmyyLbqnB1AOc$wRY9j3dAbprG$9JaH7wHTK%@>Y!I)oYF$87ugSNzp6Uq;&Rh8<6 z0J8+Br1^+7;9$Qb5hh5V0e2z{A_TtMwG*G=_X_>}YA4*u-ovl??g*byMl=&dKx+0V zr|iAdh>%<}HxP>eCNo0B1-%jYQAxUZ9?Vv2ar9qjw;QiJi2#)Vw3;oi0)r}>YPRKD z(UO=jd%+j8$^d%leLXn2v-U$I;mOhsxF#C_^IG83tAOQ4z(za3K#xTFlmJ+YVO|bXBwV!#W5yNA=OZ4i48;xW@#|8`__s6~Yd_#JE{=Kv!sU zWyVSBmrFGYmFBng#?W+=6;M>*lN&zYQlbdp&%ajx!)xQOw(r_!R@75OpjvT+%(O+Zd`ZXGnNlLy(z~BVLDw4&A@r?ifV*Wj`%PL? ze)lZu7Ysa!;{%0_aY-Dg^qS2^sWPS9MScOn@HkCgQ)GIYxC_@0lk?fSf3UNLG!O(d zL6f`UEuRJ%${$1O!=KH3a)d(XlyFm?vc-}BBi$qMS{bK}76G->eq{Xz+h@HlcU?gQ z#o01!w9`Q10J#Yma%Y8n_J*oPaue6M0~N}5Vej@%Zd!-IQ7vo5()Y?R^a7ONP)|W@ z%{orX9#H!*tB)JeB~Kr!}gFQUtRJyE+(13@5>EA+H7**ADX{j=%)4 z)Rd6i)=L*go@2K#0kkiarX^1@&3=0j&fz70fyFqyUQ@PCOPf82P&GFmTJPv}y@Jiw@>A zF-~2$WgGaG*)KUb#5`DXj`a4S0h}=MWCB2HEg;NyRR|=(jbSo?p+@ z-e0@=F|Hv9O(;KRwr9;DW%VC#v4-;#(vF!EjzensobSS|Fq`ilK^MI~Vja5!i{Kx1*t6Y?pi2`&XK zu1%8LgPnjG$IIuZnz*}maGH^4tashZef`xW2|2|Q(|Hj&ZPf-b$zwW~TTQi4uKnA$uJ$qjOKz5u#0QMuCY?tVSx`VDq;?zq=sb-=0rJ7l@s<+d)_yMO zMU|mw1s4!M3jN~YSfi7w*1LjikaIP!q&-*9ATzu` z!EtN@@xQ25m^Yh?mi~tM$Cx~cN|5mo0@$+I{os=u*NM%;ZU?#HNq;4c*~AxR%ek(E=8%Y? zvTt%HL=@kZ#Q`9e7b{CnxhE}7dj}C)ImJ2TI8v#;WTt!j5@{BVF_26R$t@01B}^RP z`MqAv^I_x&y?@){>94oHTA)Mg$?egxavtezDk^|6b*G|DgyE`&fIS@^n9EcSM|6BA ziTf+95IJFC{gDs=8KhhEmIxd%hHw_aCjACHv)edgmf&yKKtu?zl&-j|@GfBG3kwQK zM{#*XrKOj+-L>LLGwk^(_&0MYk9`eJye3AaVvp%yqtDXIna2puy;VITn1S@#fvrhF zS(D;D9U-|2k8x6Ar;&aYz>@PdxxlV(r1xK?@ZD`Q)B7U_$|A__1O=I{51P6>nGL^8 zb~%T!$*)xxz#>w0_K;o-W9c&qUvGl74%nO0S!$(;CN65g56_`h9hj1;`1a ze^f7gu+x8gb_fDFlVy8zIANf10vbcqDCA={UVUaT9RAqJ%arg)QlQZV^8*ku78rou zyCN+k19=0Y{{`As(lgT~h&(4yR8a`fd>SUWUxQ#DLdxh=Cy{=CzGHVEzGw@F-rGlk z(&o}F8Ru2ChC^@xDKGq4B4`pl*xy=0o(2GE0QUw+k`9v7*$o)tAkv4FXEvNt>5&iI z2b+Z5y|1iCkaPi}>H{F1wjf$Bj(!V9_sSnLeu-eGQPy^v?-k$=YjVMcc&B)J^L{Uc z2ZoW#N5-W7Zo zk_|b0oTP@3=HZV75l|J(tz%=<#v(d1Fb_Z!U;@8D4_O(Y{J}?01_CCJ1vFU_fE^f2 zze3tt{g=cI!a}Sr*RDJSyuRl`VHF})^Sz9LaWfP+JyT#7R6qCIMn{%3t)t^E>K2Wv!e>C( Date: Thu, 22 Jan 2026 00:02:29 +0000 Subject: [PATCH 2186/2255] New article: troubleshoot vcredist install issues --- ...oubleshoot-vcredist-installation-issues.md | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 docs/windows/troubleshoot-vcredist-installation-issues.md diff --git a/docs/windows/troubleshoot-vcredist-installation-issues.md b/docs/windows/troubleshoot-vcredist-installation-issues.md new file mode 100644 index 00000000000..aaba4d0846f --- /dev/null +++ b/docs/windows/troubleshoot-vcredist-installation-issues.md @@ -0,0 +1,82 @@ +--- +title: "Troubleshoot Visual C++ Redistributable installation issues" +description: "Provide steps to diagnose and resolve issues with installing the Visual C++ Redistributable (vcredist)" +author: vicroms +ms.author: viromer +ms.date: 01/21/2025 +ms.topic: troubleshooting-general +helpviewer_keywords: [ "redist","vcredist", "Visual [C++] redistributable" ] +--- +# Troubleshoot Visual C++ Redistributable installation issues + +This guide is for users experiencing issues while installing the Visual C++ +Runtime components using the Visual C++ Redistributable installer or the +Visual Studio Installer. + +If you're experiencing such issues, we recommend that you first attempt +installing the [latest version of the Visual C++ +Redistributable](latest-supported-vc-redist.md). + +## Collect failure logs + +The first step to diagnose an issue with the Visual C++ +Redistributable (vcredist) installer is to collect its failure logs. + +1) Download the [Microsoft Visual Studio and .NET Log Collection + Tool](). +2) Run `Collect.exe` +3) Extract the contents of `%TEMP%/vscollect.zip` + +Once you extract `vscollect.zip`, the vcredist logs are located inside the +`Temp` folder. The relevant log files will be prefixed with the pattern +`dd_vcredist__yyyyMMddHHmmss`. + +In this article, we use these logs to diagnose common issues with the redist +installer. + +## Return Code 1603 + +Issues with the vcredist installer often produce the return code 1603. This is +a generic install failure code produced by the Windows Installer, which is +invoked during the installation of the Visual C++ Runtime components. + +Because many factors can produce a 1603 code, the return code itself is not +enough to diagnose the root cause of the issue. In such cases, the log files +usually contain relevant information that can lead to a solution. + +The [Common issues](#common-issues) section describes examples of how to +diagnose common installation errors and steps that may resolve them. If your +issue is not found here, then follow the instructions to [report an issue in +the Visual C++ Redistributable installer](#my-issue-is-not-here). + +## Common issues + +### Binary file is being used + +**Diagnose** + +**Steps to resolve** + +1 - Close all currently running applications. + +### Antivirus or third-party software interference + +**Diagnose** + +**Steps to resolve** + +1 - Disable any antivirus or third-party software that may have a lock on + components that are part of the Visual C++ Redistributable. + +### Corrupted Windows Installer cache + +**Diagnose** + +**Steps to resolve** + +1 - Try using the Windows Installer troubleshooting tool. + +## My issue is not here + +TBD: Instructions to report an issue with the redist installer. + From c83222bbc133c9ed989fb407116c0c4d0ff230f2 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 21 Jan 2026 16:47:05 -0800 Subject: [PATCH 2187/2255] first edit pass --- docs/build-insights/build-performance.md | 188 ++++++++---------- .../media/copilot-build-perf-select.png | Bin 27834 -> 28237 bytes .../media/copilot-subscription.png | Bin 28848 -> 29363 bytes 3 files changed, 85 insertions(+), 103 deletions(-) diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index 64265d93c7b..853b6f7a01d 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -1,194 +1,176 @@ --- title: "Get Started with GitHub Copilot build performance for Windows" description: "Learn how to use GitHub Copilot build performance for Windows to analyze C++ builds, identify expensive headers and templates, and automatically optimize build times in Visual Studio 2026." -ms.date: 1/20/2026 +ms.date: 01/21/2026 helpviewer_keywords: ["GitHub Copilot build performance", "C++ Build Insights", "build time optimization", "header file analysis", "template instantiation", "Visual Studio build performance"] ms.topic: how-to --- -# Get Started with GitHub Copilot build performance for Windows  +# Get started with GitHub Copilot build performance for Windows  -The GitHub Copilot build performance for Windows analyzes your C++ builds and highlights expensive headers, templates, and functions so you can identify and fix build time bottlenecks. GitHub Copilot integrates seamlessly with Visual Studio, reducing complexity and improving developer productivity. +The GitHub Copilot build performance for Windows analyzes your C++ builds and highlights expensive headers, template instantiations, and functions so you can identify and fix build time bottlenecks. GitHub Copilot is integrated with Visual Studio. ## Prerequisites  -- Windows 10 or later. +- Visual Studio 2026. Install the latest available version here: [Installation Guide](/visualstudio/install/install-visual-studio) +- MSVC Build Tools version 14.50 or later. - An MSBuild or CMake project. -- MSVC Build Tools version 14.50. - -## Installing Visual Studio 2026 - -To use GitHub Copilot build performance for Windows, you must install the latest available **Visual Studio 2026**. - -[Installation Guide](/visualstudio/install/install-visual-studio) - -Visual Studio 2026 supports **side-by-side installation** with older versions. You do not need to uninstall previous versions or other release channels. Installing Visual Studio 2026 will not interfere with your existing development environment.  +- Windows 10 or later. ### Before you begin  -After installing the Visual Studio Installer, ensure the following components are selected under the **Desktop development with C++** [workload](/visualstudio/install/install-visual-studio#step-4---choose-workloads) during installation: +In the Visual Studio 2026 Installer, ensure the following components are selected in the **Desktop development with C++** [workload](/visualstudio/install/install-visual-studio#step-4---choose-workloads): -- C++ Build Insights -- C++ profiling tools -- C++ CMake tools for Windows (required for CMake projects)  +- **C++ Build Insights** +- **C++ profiling tools** +- **C++ CMake tools for Windows (required for CMake projects)** -:::image type="complex" source="./media/vs-installer-options.png" alt-text="This installer view highlights the available optional components within the Desktop development with C++ workload, helping users confirm that tools required for build analysis and performance optimization are included during setup."::: +:::image type="complex" source="./media/vs-installer-options.png" alt-text="Screenshot of the Visual Studio installer. The desktop development with C++ section is highlighted and C++ Build Insights, C++ profiling tools, and C++ CMake tools for Windows are selected."::: The list shows C++ Build Insights, C++ profiling tools, and C++ CMake tools for Windows are all selected for installation. :::image-end::: -## Verify GitHub Copilot subscription - -GitHub Copilot build performance for Windows is available to users on GitHub Copilot Pro, Pro+, Business, and Enterprise plans.   +### Verify your GitHub Copilot subscription -- Verify your subscription  +To use GitHub Copilot build performance for Windows, you need a GitHub Copilot Pro, Pro+, Business, or Enterprise subscription. - - Log in to [https://github.com](https://github.com/) and access the [Copilot features](https://github.com/settings/copilot/features) +Verify your GitHub Copilot subscription on GitHub, and then sign in to your GitHub account in Visual Studio 2026: - - Your plan type will appear near the top of the page.  +1. Verify your GitHub Copilot subscription: + - Sign in to [https://github.com](https://github.com/). + - Select your profile picture and then [Copilot settings](https://github.com/settings/copilot/features). Your plan type appears near the top of the page: - :::image type="complex" source="./media/copilot-subscription.png" alt-text="Banner in GitHub account settings confirming that GitHub Copilot Enterprise is active, with quick-access buttons for various Copilot features including IDE, CLI, mobile, GitHub.com, and more."::: - This banner provides context for where subscription details are displayed within GitHub’s account settings interface. + :::image type="complex" source="./media/copilot-subscription.png" alt-text="Screenshot of the users GitHub Copilot information."::: + The Copilot settings page shows the type of subscription. In this case, the user has GitHub Copilot Enterprise. :::image-end::: -- Authenticate in Visual Studio 2026 +1. Sign in to your GitHub account in Visual Studio: - Before proceeding, ensure you are signed in to your GitHub account in Visual Studio. + - If you're not signed in to GitHub in Visual Studio, open the GitHub Copilot Chat and follow the sign-in instructions in the pop-up window. + - Select your profile picture in Visual Studio to confirm your GitHub sign-in status: - - Click on your profile picture in the upper-right corner of Visual Studio to confirm your GitHub login status. - - :::image type="complex" source="./media/vs-account-authentication.png" alt-text="Visual Studio account dropdown showing an active login session with a Microsoft account and a connected GitHub account, both marked as active and synced."::: - The dropdown displays the GitHub account with active status and sync indicator. + :::image type="complex" source="./media/vs-account-authentication.png" alt-text="Screenshot of the account dropdown in Visual Studio."::: + The account dropdown shows that a Microsoft account and a GitHub account are both signed in and active. :::image-end::: - - If you are not signed in, open the GitHub Copilot Chat and follow the sign-in instructions from the pop-up window. - - - Once authenticated, you can verify your plan by selecting Copilot Usage from the dropdown menu under the GitHub Copilot badge. +### Enable template collection -### Enable Template Collection +To minimize analysis overhead, the template instantiation time collection is off by default. To turn it on: -Template instantiation time collection is off by default to minimize analysis overhead. To turn it on: - - 1. In Visual Studio, go to **Tools** \> **Options**. - - 2. In the **Options** dialog, expand **Build Insights** in the left navigation. - - 3. Select **Collect Template Instantiation**. + 1. In Visual Studio, go to **Tools** > **Options**. + 1. In the **Options** dialog, expand **Build Insights**. + 1. Select **Collect Template Instantiation**. :::image type="complex" source="./media/build-insights-options.png" alt-text="Build Insights settings page in Visual Studio Options with the Collect template instantiation checkbox enabled, displaying trace collection configurations for analysis."::: The dialog shows trace collection settings with the Collect template instantiation checkbox selected. :::image-end::: -*Learn more:* [Troubleshoot template instantiation impact on build time | Microsoft Learn](/cpp/build-insights/tutorials/build-insights-template-view) +For more information about template instantiation on build time, see [Troubleshoot template instantiation impact on build time | Microsoft Learn](/cpp/build-insights/tutorials/build-insights-template-view) -## Workflow +## Troubleshoot build performance with GitHub Copilot -GitHub Copilot build performance on Windows is available via the GitHub Copilot chat pane. Users can access this functionality through the Agent feature within the chat interface. +View GitHub Copilot build performance on Windows via the GitHub Copilot chat pane. Choose the **Agent** feature within the chat interface: -:::image type="complex" source="./media/copilot-build-perf-select.png" alt-text="GitHub Copilot chat pane showing agent selection. The GitHub Copilot build performance on Windows is highlighted as the option to select."::: -The pane shows GitHub Copilot build performance for Windows selected to optimize C++ build, with other agents listed. +:::image type="complex" source="./media/copilot-build-perf-select.png" alt-text="Screenshot of the GitHub Copilot chat pane."::: +The GitHub Copilot chat pane shows a list of agents to choose from. Build Perf C p p (optimize your c + + build) is selected. :::image-end::: -Before submitting a request to the GitHub Copilot, select your preferred model. +Select your preferred model in the model drowpdown menu: -:::image type="complex" source="./media/model-select.png" alt-text="Model selection menu in Copilot Chat showing available AI models including GPT-5, GPT-5.1, Claude, and Gemini, with usage rate indicators."::: -This dropdown provides context on the range of AI models available when initiating a performance analysis. +:::image type="complex" source="./media/model-select.png" alt-text="Screenshot of the model selection menu in the Copilot Chat window."::: +This dropdown lists models various models like GPT-5, CLaude Sonnet 4, Gemini 3 Pro, and others. :::image-end::: -Instruct GitHub Copilot to improve the build performance of your selected project. You can add additional context and information so that GitHub Copilot can create suggestions that match the needs of your project. +Instruct GitHub Copilot to improve the build performance of your selected project. You can add extra context so that GitHub Copilot can better make suggestions to match the needs of your project. -:::image type="complex" source="./media/copilot-build-request.png" alt-text="Copilot Chat interface where the user has entered a request for build performance improvement using GitHub Copilot build performance on Windows."::: -The window shows GitHub Copilot build performance for Windows with user message requesting build performance improvement for the project. +:::image type="complex" source="./media/copilot-build-request.png" alt-text="Screenshot of the GitHub Copilot Chat window."::: +The GitHub Copilot chat window shows @ Build Per Cpp: Help me improve the build performance of this project. :::image-end::: -### Enable Build Insights +If this is your first time using GitHub Copilot build performance for Windows, you'll need to enable Build Insights and grant elevated permissions to collect MSVC compiler traces. -To analyze the build performance of the selected project, Visual Studio needs elevated permissions. The Build Insights tool needs to be enabled for a first-time user to kickstart the build performance analysis. +### Grant additional permissions to run Build Insights -*Learn more:* [Build Insights needs additional permissions | Microsoft Learn](/cpp/build-insights/elevate-note) +Visual Studio needs elevated permissions to analyze build performance. The Build Insights tool needs to be enabled to start the build performance analysis. Once enabled, it stays enabled until you disable it. For more information about these permissions, see [Build Insights needs additional permissions](/cpp/build-insights/elevate-note). Github copilot prompts you to enable Build Insights and grant elevated permissions: -:::image type="complex" source="./media/build-insights-permission.png" alt-text="Visual Studio dialog titled Run Build Insights requesting permission to start build analysis, with Confirm and Deny buttons."::: -This dialog appears when Visual Studio is preparing to launch the profiling tools necessary for trace generation. +:::image type="complex" source="./media/build-insights-permission.png" alt-text="Screenshot of a GitHub Copilot dialog asking to elevate permissions."::: +The dialog indicates that Build Insights (vcperf) needs additional permissions to capture MSVC compiler traces. There are Confirm and Deny buttons. :::image-end::: -A one-time elevated request is then needed to capture the MSVC compiler traces. +Choose **Confirm** to have GitHub Copilot proceed with the request. A Visual Studio dialog then appears prompting you to allow a one-time elevated request: -:::image type="complex" source="./media/msvc-elevation.png" alt-text="Microsoft Visual Studio prompt requesting elevated permissions for Build Insights to collect MSVC compiler traces, displaying Yes and No options."::: -This prompt provides system-level acknowledgment of the resource access required for tracing. +:::image type="complex" source="./media/msvc-elevation.png" alt-text="Screenshot of a Microsoft Visual Studio prompt requesting elevated permissions."::: +The elevation prompt says: Build Insights (vcperf) needs additional permissions to capture MSVC compiler traces. Allow this one-time elevated request? There are Yes and No buttons. :::image-end::: -:::image type="complex" source="./media/windows-user-account-control.png" alt-text="Windows User Account Control dialog asking whether to allow the Windows Command Processor to make changes, with Yes and No choices."::: -This UAC dialog is part of Windows’ layer of elevation confirmation and appears when enabling Build Insights for the first time. +If you choose to grant elevated permissions, the Windows User Account Control dialog appears. Choose **Yes** to grant permission to capture the MSVC compiler traces: + +:::image type="complex" source="./media/windows-user-account-control.png" alt-text="Screenshot of the User Account Control dialog."::: +The dialog asks for permission for the Windows Command Processor, verified publisher Microsoft, to allow this app to make changes to your device. There are Yes and No buttons. :::image-end::: -If the one-time elevated request is denied, the Build Insights operation is cancelled due to lack of rights to continue. +Denying the elevated request will cancel the Build Insights operation. +## Guide GitHub Copilot through the process of improving the build time -You will guide GitHub Copilot through the process of improving the build time by providing permission, as needed, to run tools. Additional permissions may be required to run PowerShell scripts. +As you guide GitHub Copilot through the process of improving the build time, you will be asked to provide permission, as needed, to run tools such as PowerShell scripts: -:::image type="complex" source="./media/terminal-permission.png" alt-text="Copilot Chat notification prompting the user to authorize execution of a terminal command, offering Confirm, Always allow, and Allow in this session."::: -This prompt appears within the chat flow when Copilot requires permission to run terminal commands necessary for optimization. +:::image type="complex" source="./media/terminal-permission.png" alt-text="Screenshot of a Copilot Chat notification."::: +The prompt asks the user to authorize running the command: ls ../src/ in the terminal. The Confirm dropdown offers: Always allow and Allow in this session. There is also a Deny button. :::image-end::: -The GitHub Copilot build performance for Windows goes through multiple iterations of code implementation to make the build faster. +The GitHub Copilot build performance for Windows may go through multiple iterations to find the best way to make the build faster: -:::image type="complex" source="./media/build-analysis-complete.png" alt-text="The display shows build time improved from 78.6 seconds to 70.5 seconds (8.1 seconds faster, ~10.3% improvement), with a note that further improvement is possible."::: -This image provides contextual insight into how build metrics are presented after an optimization iteration. +:::image type="complex" source="./media/build-analysis-complete.png" alt-text="Screenshot of a message in the GitHub Copilot chat window."::: +The message indicates that analysis is complete and the build time improved from 78.6 seconds to 70.5 seconds (8.1 seconds faster, ~10.3% improvement). It indicates there's still room for improvement. :::image-end::: -After GitHub Copilot completes the request, a summary of the changes and build performance impact is displayed. The build performance summary changes depending on each iteration of the agent. +When the analysis is complete, GitHub Copilot displays a summary of the changes and build performance impact for that iteration: -:::image type="complex" source="./media/build-summary.png" alt-text="A summary view comparing build performance before and after optimization. The report shows build time dropping from about 110.7 seconds to 34.1 seconds, with major header bottlenecks significantly reduced. It highlights a 69% overall improvement and faster incremental rebuilds after precompiled headers were enabled."::: -The summary displays top bottlenecks and quantitative results of the performance improvements. +:::image type="complex" source="./media/build-summary.png" alt-text="Screenshot of the build performance summary."::: +The summary shows a before and after optimization summary indicating build time, the top bottleneck, and the top 5 headers that contributed the most to the build time. The report shows build time dropping from 110.7 seconds to 34.1 seconds. It highlights a 69.2% overall improvement and faster incremental rebuilds after enabling precompiled headers. :::image-end::: In this case, build time dropped from **110.7s to 34.1s** after enabling precompiled headers for costly includes, delivering a **69% improvement** and **3.2× faster builds** with near-instant incremental rebuilds. -### Additional entry points +### Other ways to access GitHub Copilot build performance for Windows -The GitHub Copilot build performance for Windows can be accessed through other entry points. +You can access the GitHub Copilot build performance for Windows in these other ways: -- Button from build menu +- The **Build** menu: - :::image type="complex" source="./media/build-menu-improve.png" alt-text="Visual Studio Build menu expanded with the Improve build performance option highlighted under Run Build Insights."::: - The menu shows the Improve build performance option under Run Build Insights. + :::image type="complex" source="./media/build-menu-improve.png" alt-text="Screenshot of the Build menu.""::: + The Build menu option Run Build Insights is expanded to show Build All, Rebuild All, and Improve Build Performance. The latter is selected. :::image-end::: - Clicking the Improve build performance button prompts GitHub Copilot chat +- Select a **Improve build performance** prompt in GitHub Copilot chat: - :::image type="complex" source="./media/copilot-improve-prompt.png" alt-text="Copilot chat window with Improve Build Performance prompt."::: - The window shows GitHub Copilot build performance for Windows ready to assist with optimization. + :::image type="complex" source="./media/copilot-improve-prompt.png" alt-text="Screenshot of the Copilot chat window."::: + The chat window shows a prompt to Improve Build Performance. :::image-end::: -- Button from solution context menu +- **Solution** window context menu: - :::image type="complex" source="./media/solution-menu-improve.png" alt-text="Solution context menu in Visual Studio showing Improve build performance on Solution among the available commands."::: - The context menu displays the Improve build performance on Solution option. + :::image type="complex" source="./media/solution-menu-improve.png" alt-text="A screenshot of the Solution explorer."::: + The context menu shows Build Solution, Build Solution, and so on. Improve build performance on Solution is highlighted. :::image-end::: - Clicking the Improve build performance on Solution button prompts the GitHub Copilot chat + Select **Improve build performance on Solution** to open the GitHub Copilot chat window, which prompts you to optimize the build performance of your project. - :::image type="complex" source="./media/copilot-improve-prompt.png" alt-text="Copilot chat window with a request to help improve the build performance of this project."::: - The window shows GitHub Copilot build performance for Windows request to assist with build optimization. + :::image type="complex" source="./media/copilot-improve-prompt.png" alt-text="Screenshot of the Copilot chat window."::: + The chat window shows a prompt to Improve Build Performance. :::image-end::: -- Button from Build Insights view +- Build Insights view: - :::image type="complex" source="./media/insights-improve-button.png" alt-text="Build Insights diagnostics session interface with the Improve button visible for triggering optimization using existing trace data."::: - The view shows the diagnostics session with the Improve button available for optimization. - :::image-end::: + Select **Improve** from the Build Insights diagnostics session view to open the GitHub Copilot chat window, which prompts you to optimize the build performance of your project, shown previously. This button uses data from the existing build insights trace results and doesn't trigger a new build insights tool execution until the current changes are processed. - Clicking the Improve button prompts the GitHub Copilot chat. This button uses data from the existing build insights trace results and does not trigger a new build insights tool execution until the current proposed changes have been processed. - - :::image type="complex" source="./media/copilot-improve-includes.png" alt-text="Copilot chat with request to help improve the build performance of this project, focusing on includes."::: - Copilot Chat showing a user request specifically targeting include file optimization as part of the build performance improvements. + :::image type="complex" source="./media/insights-improve-button.png" alt-text="Screenshot of the Build Insights view window."::: + The Improve link is highlighted. :::image-end::: -## See Also - -[Build Insights function view](/cpp/build-insights/tutorials/build-insights-function-view) - -[Build Insights included files view](/cpp/build-insights/tutorials/build-insights-included-files-view) - -[vcperf and Windows Performance Analyzer](/cpp/build-insights/tutorials/vcperf-and-wpa) +## See also +[Build Insights function view](/cpp/build-insights/tutorials/build-insights-function-view)\ +[Build Insights included files view](/cpp/build-insights/tutorials/build-insights-included-files-view)\ +[vcperf and Windows Performance Analyzer](/cpp/build-insights/tutorials/vcperf-and-wpa)\ [Windows Performance Analyzer basics](/cpp/build-insights/tutorials/wpa-basics) \ No newline at end of file diff --git a/docs/build-insights/media/copilot-build-perf-select.png b/docs/build-insights/media/copilot-build-perf-select.png index 67e5e0449db8bf47e19beb085dea9be867185371..4bda984a9ca6eb76b6af0a80f52c68fe26c78576 100644 GIT binary patch literal 28237 zcmb5W1yEI8`!{?L1%n2qK|llq=}u`7DN#y7y1PSKT0%giB?JTn5v99BLK-RQlJ5Sl z<9+|*nR(}(?{#!MY<8}_*0p}MPKc6%H0Di`n+OB~Q&vXeDFSf?6M;ZUyN(81CUj;* z;Xf3Ir_y4G!XB~}_~ELFs61>ej=XiIcMX2NVJoBIfIwh1ApfD1M_a7J0YPTZ)E(93 zpYR*lSTXAv+UOfGyIR@8-Ux)Ch^wuhfrXLdU40`HGixEb&8j-OyJm($bZT7ktn#+v zMy6&m?)FA1?h4Ng+${|F4CzFKF>eaG^1~Udj2!jux>{LUJMg;-QU5(LKYT`RW}y}q zv^O;7e<~sM?;h}z5VfhJqb)xRi;Ig3vkM2ajlBsA8y_DZ3oAPdJNrY}KSsdJv8LtFy!H4<7GEy)2IIT@{VT4|8sq7hku&^8iWP;8x}TZR^%-sKl3Zvn;F4f zATKG*CiwUF|FKPw1$iU?>&Art*#gfBpZ>dLkj?bpt!rcrP3i(|#}xbi76M_ZC@UfQ z%vEQ7(%VyI=v-t=P4mMUS~?2x&5vB~UfO10h@5_7&5xDOfBSf85qkm~RUs$k2PKzv zTBMhV!!4%=oyiezD;Sb`G|ZIpW7tD?bh{paC#843cgPQE1%GTJGi!l9DkqR9V< z8~-_ACOPn~n}Ybj@ttl9*f%2lxIpz-WQh|87gxEi<==g_B$Paw@S9vb^Ezm#GcMNm zRt9+OX0Ili{CM=%Eck8D%njr%5OJE~NQDzo(H**BkigCGQ&FW~a;1}{UJo^NorPme z&CHbVP*bnIz{AInj*9X@K}CD{yWW>I;fXyi;*o**gCIH?T?-4w2nwN4d^!bsU%1hI zp@$D2@;WSHC?xaxW=coyoC*gEVTzLPa|ZiR;atB~ZfMR$yX~VBk=`)fR}H9l5ljq3}2o_dK!7)Cz}d(X)|tfAHnM zCwz~#=ubUe(pm1$osza7tSD1ild0<7t z+PW~gpi95Fe%-mNW3p$(u@OG&^PT=?rVdRF4ZT^e#mvW-CrA-Fvxyzw^%}PDB~<#r zRgte`qjHUzOvH=K`>2U>D<U4pVrIL4Dk_Q(BYB&YWWg)5EK^=de6G*hxbB=;UQYD=`}f?>LZ{8# zPPNtNg=A^2v)it}?JGFL+UBCeB;Sm$N1RlIEuNg*{Q0OWY}(s-*Zxit{6K574*_$Hxc#`SYjTjHs)#Gqy4=E-wAc7aWBg73N`vj~_p_cXh?Y z_`d9w*3(O091WfuNIE|Eg0?#H6y{A)=gl zt2?=UurV1nIQVSBW3y)TiykVs%@k7+H+2T7-DIVcy=u_o$B&hsKBcCUmVf;CCj3#- z(jxo*;r_#i@(O+}`l32Isn(nRT?=B5ABQGSSd>p%tAAFVtnZq!tvCPfymFIStA56o z_qQ$Y{JcWg!HK&-eAn%R>R;>5@4JopD%9qVBUvy=+}l@&@}u9s50(tOGt(!qX1o0P z`%!1Fcjyg~8vGmnvR?YW2s6FICc42in^K}QmERK3yYW*jxTxekYcg3@`CHR^sU5vTkyMKQ+BaFGR z)M}h_Ej+f|Pfgc%X>oB?r=fjCicWZOanad5!iS7$aAd?{nAS#jQ1(Z((&hBpeg?eY zJ7JPzkq3cHhWb6Ijt8HrtE&f$s^sM5-=r6s=MRM@CXy_Ccc)GoUmp&S%MYR&jQQD| ze1lChMtL~zzI zgh|T%dr9Q7VyB5-AqSs336n+b^2V)8XAZ>6U*F6|Ydp%#-$cLoYItL3XD2Eyj@HB} z!Sr{ILP}l&T~tcSLqbf8wg_^BPeB3l(P;z(NUvSHme>()?=!dWUhKTCIXFCw91a>9 z8o8f8zwS0xnOd{2P}0@KE*i-fF#Jgo*5YT>^^U=bo}Rvbwk6ET-&dwnDrtJNZM4{6 zVIIezEn?{0-l;rkO(YHHdy*Z`gPQ~J*7dG4oA$`QU4%7ipa-*Z-8c}ct^u%dqSL_uLV8K1@% zO)>)7^!T{fI|7;zfk?zA7j674`gn>^*E9X>GLY1|UY=+2DuUPZz@Iz@yo6Lvvb_a3MgsG}rx-?6`@s;ZjpMy}xI#&`49E#+s=uI64L+b1;l@~YiP zMt4hE58*VWfAFCHhl4FI85D`8orNy01suIGQ#?#Hd;71+M(+i=g*^@|VE{gR{@kon zQtZ{n4`Yr3RmL-~I_t{H!%U&uw{LHqo+DfFZK-iL3G7K5jPMB$$2jt={qm-A$o%z~ zCDxd=lhgO7bXQTaOUB6hzl6;V#mx;U_t82oRJT5M@$_o^l$YlR`|)}0@MSE&?CV3V zJ(|5$z1>Rcy8e9xfmqy}4&XTL75=u8G<|lT;?VVJf2*XVB+kcpd$xt1kx|8+xLSv0u{$Y; zLByz&;1Nmdmodvcyq`HEj4|)tWuG?p$aFdf6$)N|vRQJwP_2>P%`dfFe^`#^D|y{? zWM}7NLu2CyYdC6iD=RCBUo+CJHs5FEYLxj*rmHMRKv-lZK!9%2?n#KK_z!YEdkJE9*SR-5TN_oI`i+X40So&grk#_H z1M=lCv|^_Mun*5~EqHXYx%3Nu`}XbS?qavL_1&sDtk;D~)AkxKUXbFwWYVctA5g*T zPzrid@B+hkk9M}}YjN?MuD+F}<)81mg%-mFz8YLi>Gym2So@zp9Ht@h+Af+p*>`lo z_Tg1rzb0&MY)0Q^{@py#GPxl=rRQDF1>78l(8+S&P0Q}Jy_~*UFr$^-f{@edvuA2*avy))Cz5J3 zE?MDjPf57?{_WcoP3QdJ7$VMSG6vGf$!$7 z*6%*q9?hLGDTyK1KDT&X=V6l5;(elzsW>aU$DH_ge~M;4q)eNiH=KMVwmC`?7affP zL)|&Uw7PG+ZG&HUrl&0WLjrZ%2dY5h-qbfasqQ!B;+e1cp)?6>R{O(0e1J^xVHTb) ztMWu5wt|0W%f58+qq@sekqVjSX2T{wzbmv>Q`K%;?lp<6+O^+*2A`dIy4L9MKHsHX zU0W-5-PV`q%WTe)=38EVG8qsXOF(e@Hq7)&Ey zIc1Fi`~0C~Ct32Anuf-wDrV)#)cYf!1tKGP=~fXMUh+SiKBS{-d7tkSiFgUt9@cEm zBs=t=_~~u|9=2DOG&5tU-T!QpURa1#cd=h2fWh9V+)KGXnM^DiIM~W)fUGx%*iL2F2<~ zsK8#70mo!LDSs83W$A)rFxb)2k+}T|@ZR3uo^x9+IhJ&L7OxY6J{axC$6e3Y8+S=4 zb+;1GRwcDwz4)v;x_%JlhG}0U%Bx>4Wiu*8rXtguj8pb9FN6tc9U)Pp=Fo&jQtayt`rh(B1DFdJvFj!yg3VZ228bfcb)I zT}CIbMg4oGcCI7jm(tE@o8Mh}A`s=L9#)q(wfR)nhCeqUF*5X{v)#1I=EJ(nSAzS4 zDxKu$Fla`r-8itwczv*ij}XWqbz4o#_wuyva?P>+QOc5YRoryWvdlfBIeAIR*E>mQ z=eHwKUOOCZ=^^TKl`~_%wGKYJmk>x_)aL1Yuz3MgsPodJP0z z9w->kPHIgz?K8bq2 zZw^&%4Iid&_oWzcG~sbKwEPL-WWk@|Nwp%kFS$JY7KOBnk+@Cs`%Up6thf>&Bv@p^ zo<#R!ZqP_aJnQGp@f8bRdXS~ddGmE|Pb)`VZ>V`a0)a&INbyJ5Zd!{%a-7U&ZZ z&e^^!+o2DzAHts&^}v`oZGS(yckkYZj~}nmDW=Ajgaqee3m|!6nlNTe2LXHR7`wpH*Co$5`+!^L&V zVkx6c9zfD)T!VkuG^;5bNG(o;B*oEGf4OZt&XiC(Ue_3K&F@FQ{jqK5+j052qM~V} zXTNqa`*$11ARoU~f6S{n@nqu$8s>vy{*_+AU5r$Z4L-gK73=aDG$bcV2tK(U+2$V@ zh{j8X#TPa!Q}8P?wf+NDxO(#5uV0#49_!!RJ31QR<%L7XtO%yk_1wOe>V4r>eKZ?p zTQ&J!$fH#29#h%)o5n^lK4O^4WMpNdV?xB9J$v@y>({3WflV_$W0vn?KHaLMF@*yj zZFwp?HfNkKGk7Y9W1qmSBR}Dug;s7sLBPPuAd_nTb7m4J=J;EH#S|h!H?(+KD0)o}U-sb` z=wpeiT|uK_V31WXkN-;`D9kM^7MRMl3a!_Ta)GtQWMm7B$ZNvUs`6bexAkwpkkcJ)p7m@u)K2BY#!dvf#-42Zuo8^})2&AkpJC~6vy?I(H1 zG4`MajMPW0ymvD$LL5k*>9gJ62ULQFWW46)=CR*KbUZLm4>w0*QGMi?E3WGHwm0kY za8c7ZUA>=%|EnY_H8rAYvzGL5!XYyGV{}qd*e8`7DFRMlVg!VQ7X9-&H**F;R#(lL zUX)_Mg!|ZCRMgj=HnS|Xx?1of^Zx#R;^8k#?%3E^MBXu>q@*NFlutW@b?_1Eg-IE0 z>&`R)crrdT%xwoa;&#;#=>PD#I6Ho9dkc|}kkF|`Ub7Dv?ISZx2D>^XV+EcU&1biu z#1V_(*4#(@(k`PY8~JEL-_Y46DutNrQTuDDKJ}>B%g29EwZ-vp}B%z>~-u^ z?xeC8%;In?S1ZIEFLx+6y|im~|4AsPlSW!EI-vIdeFV?joi*FF;kn)8zP`Q>d{}Tm z+03eGT6m${;By=DzE5>zkAn9D1SrVkMhvnxGIZ=SA6}I1cRD*#ydhINc5N2>_YrE^ zrDf)}3g%=)-T9*N{U^IhaP*Nk) zK8|PR?zC>2My)~ESb&Pi%g@*2PU3oFEF~3~{lo+1QPzUqmyPGopTpUx*4~N`vbs{d zj)-7%q6D$$CD8GsZW}NBukDGb_2M?`jTvP}!gud?XmB|=aJ=#2<9u|*Ts=8AIK$YR-f$$odxr8SrI3X^^f*zHFXSrn?fjb1D0k3=KoXFFXB)Fc_clf?!>$+y`u zYi>s)p$XHSu&=pGJlBCxzUOy(fV24Eb!Gg~+lW@elAlwdGOmIYAK_lK61S~^$UPW; zR}@7ye;obOe_^Bx^M)oqGHy<&yGr$=61KN)Rqra zSk=2d0>J-nX#Cop*~mQlr9#;>G8(E;V%#xC1w>d$Q}Y3xG!uz$P(f}k{d@&3)cwTc z8w(2ykFn9y+WI)=3zvFArG8VDjITd#`lvJb<~=|ZGgBJcK<+=z9`RSO9qqKCQWDR8 z`t<3iRY40It^*anxepD)bX;Xw+rM|w8i+}XmYX`#2aRIc8rS*-PLIe6|zh>m|>lSMxmwgIV zWnPn&ocxn_UG43xjkbRT1 zr}zYrBDh$NrG@~p^{1p42~6yrn-x-T{6;UbY-5?4q%kqe%F6lx_4oDb*X`ZiaV0a3 z{Ba>c)b&wad?^ZmjLZ4$1Pscl@Yq(AH-waI##bDvSy-^)9d_Q6%ULb0v0ckv#(N`c zWc1N`>k|b&AxfZ@LTof$D>1Hhu*8#hF{IS{r9u?g0O`I4vw2cYR2pR@SK6)p(ef!Q zkgLJYXm}pup8-0`q`g?y!kb}jPprYUc->o4J(yZhWmb8l<^sHCJ@MI(%KL4y9G%sDR7uT?6~i)$S181HA9 zFyszgvpdaFS>jf#8Ru;JoKzX~qEbXx3EiQO!DP51voUk`hmY+_?eBG`sEr!6oLdLK z*PSU+#swuGW!BcPz)jn;#wH|$w6;pgYwxcX#!tmLg)Av9Pogn;Uo6Zq7nNl0xQ7pF z7bUBg$yEyBlP60r55DM=<8c?xq*Yy)R{ZTi(iprT>%CcX_{FH}4xh#x;D;MGNYLK< zNa|8X7B``pcj`E9C{1h)u_ba+uU1L)-9Aj3&x7w^DF)yc(VaJG>r%g(zzL^df7Am)IxkMqx-_S)Yesy9=gxIB3<-(B zx&K60XqbS%46pm60q|lE_z%b8U&Qu*1ZDr%!}|OI!6RS_XDq7519>3u9iPMET_Dd$ z8G9A5Vr3i*P6h-*q;laEqW(eekbQ#J+}2DJ!bdq%szXEB<##;_Quan-u*IGfBs}Pp zbX=dPzz6amuCGt6<8^EVb9lvdT-+9QWaGau^+rc*Rf+WK^?kV06|>>UU+lhb?kboX zOnL#BPwUnG5VEGJe%7QlX^S0Sm(tUt`iqbCu@WGd_xZ^4aQk75BOjL>c z$Ek9WVoMQyd2(b626-OM1OY9uZUzu{kB*Lpjt-sD`>Z(mw(6@_LQp$5W}T}RW+m8W z4o{&>I>v+aUg26d=UioQa;TxKjB8J!#Y_lQLyI#{zb0+a?T?vKh*8#iz(P>`^o9#G z?B7w5a$D9zX;M;Ap)py>D=Lz9cINKv?2LN*Hlw3NoeANSkwI-}WMsC(-imZf1?*9hO+v>%&3Uj394H=eZ2zcq4DG`UFZok`l+< z??o2Aq51rU#YOYZ&YC+F6&00g>@)of6@(eg?gnX6UC!S`Kw*XL^eikR-8rKrnxD6h zJrgxpj~wbw$U>%{G3<*^M+hNbyxF;Kgg*7`JeTq>C6FUV)ef8{HSGYd>@`fCetXu zG)j`ERy~~48O9bUkBL4XD=SH^bN@02D1lVtIIntKksz#{vQg*y zfVuL<<3Wj(d4mZGkPBdFbhE(=v|YJsm{IMC1(2e7slMG=fM06R34>(zQP&KO)g^@x zv&sJTpWX+(Y+qdPIkaKBmEd}Vrpdb#+%O|j3yDn__ zSbnoG?Atd^cpZEd;w>#LzyzaX#5YbJT{WT^qfF|~ejvKtXvxi}*18i{Zn{T8Lc+P? z{$>+&baB61G@in`?asIb@wfmx27FFEg%{GTsnwy3uvQBvfTZhY1Msn(Z6(yU4bd<~ zP&4Ikn(W_W8DEL+AIQsU+gL&5J+e+@DH~U!Zw`t-73LzS^;`~!y~=ZsnA%d2b5R2W z0~rJQNGnoe>SeRl*6yWUhBwti=FdqE5)%`@yfJXWY2zaCeGMqhbnVmnff~HIdP3Td zqx?&nWK8bLJ)sFOh$r(8pn7y`p%gFgGwq?hvhqIRubVFNh+}BYUy$6)U6V6U6_paW! zgux(?fq?;3Wc4cN&sxvo1?dn77#tvf=2WNhJLMTaQHu&<1%3ba-&sJhnZG}E<-S*D$-J(sZo{%K-*2ta1&%OG*CVX--u zAv@6dg)`lgo9owzcItnCRYgB~ZZGy!VcCS(rd`$g8zhS9Vr07NY z>`nd&Gv=|Av_z2~KQGQ@Q9%L5igL811FtA6I-LtR6RR6#yv9o8s1?amcDJb+NEPmZ zO==)vvdz~2px6_`)XPhF%41WgK(|hKmaXF5yE{<(8!Wl!_D6K%OPoT+G542+G&P~< zVVn63MJ73;Q_^Sy1^en{CzqK>&jQk@-to=?OniCw>!a2zO2)u+yaKimsI2nhc(P*= z2W=~kKxX*w`DARQkKkO#N|BZWd4VOXxHO-Fl!=07-IiBuxCo2&nzGK9@pUNKVql77 zi@sg6!0K6csnCK#H8}AzUAkJAnX$BJ3jHdnMLMxuz%$O&f@vHUDafz5b6$F zOjpRmSEdV>Kf`Q0Gu}jpNH|WEA2wkwhO5;q6O-T^a?IDermy z77(WoQcH)ld+$EKD4T_*-W)*jf3aj@-||HabO>X5+P7aNw3T5-XV*}2^fxg!4kUj} zwJOIenBE^>74MGk7UB1S=a3q?7getb&aWhopJ{fk8JoY816faYWa+3gHU{Fyv3ro} zSw=A1|4H-uzrw4(!IS?7R7Rx$&eaTbq?V8II-$2%s&T+bV?%nphP+RaM* znXFP%KtoJ8k6R&w6KpT*5qx2gb;!;66{)WN-@r^!T=8_P2^+9cRC0279HW~4;l?Cn zM+mqrM}2-~N*ioW)gUt;fOl*m^FhXIizuqzx!K>}ztu0tf|OR@sS%Gb-MKYkU6%ZW zZ5F&vWo0Tl6_MZDu196k+N~ebgU(kJy{{m(2#m5xXHrmQu@OhBYIUJuEVV=k+vA0J zgPvqQ1oCQgNE;FO@hybwLY!Kx)AyX}YBDhQ0YuoVUe6i00mEcx$DS`=t+TtE>)Z5X z$I@=Yf<5s`|ADI@pdP>%_Nqnm&Q+M}JT0nBy>d)tl9OTJTaK5QVB=umHS)Rd)P`BKZ~VVCS99;+~SG_dL&m;0y$4@M1KXG7?=4#sU5 zSGv2qU4Q$c+rlr5-p(P@C!j7f7)`m(VIm%BY9_ulmQYZ@0#QU+SC_>E1p$WYUwK3& z7L329rQO%(_MZz1B#=_a6A1!B*TaCvOeS@OIyEG>2$`GvKg!wl3LXBwINfZ6U;?t2 zAYU;^%+1R`Gr{Myc{$Vg8XQbQGz=o25PZ5Td3qs`y1>m>{rq;AA`f0q7$J+4h6eH1 zk`iSlB^GBD!$GxLIdS4oNgVNme8E+^nbP&cQ?9vgFvuOw1SzlqCPaZn z2J+l|*dAzF7E>%my0H$tWK`o%Rq7O(=|*I;rvjf8NKfTNL}UUdvA1Uj38QLdCPI;S z$E{fNbE4Hh>M|bE+bTFq2+k_-44)tItEO-||J5}hkWDQzQMxxplZKv|#-XfQBYZsS zoTFY!S=?Gh=dS+z`E9Q)f65OP6~x#=dpN2^I&YAkAvhaMji6=?q{}`5UOY4FhIq zXb4*T`8zP&a!dnNy}pn`#^F%JD-M1(I{g2??KK#kacDnAKENP;&-89nT(~o&&siv!hcr z8G&R{fsa53Oymdc1hO*kyBDK;(lhx#eS{8N#6j8oKbZv%cQP8>jiYu?VMN3P9BoO!0J7-(+&It2}NjsH|uXomtuRHVlrv=$k^I=N~n^>0#7``HS zg+ZcU0E*s-u6GT4P&&K{7z@v?1c7&iGzS^g3ZJ>(mWrf!lauB}@}kW8xpkH2<#}mp zIwbIBE7uB}f+)Rm#}qt(1>d^raVG$99H7(*yEgK?wA$@HZ6c>lLIK&}`vL9d5Jt= zWQ>N+SU~fZzhiz5k-|qk6M@-Sjf_J$Hbbi~*njuP@xAUi*cw5ePs%I#l$$KAm#}|% zl?|Fg!kr@Av*#a$SK{2r$mi#bAs$jl6%2tu7YYI?fgtPmG=2OtMi`tYPv zXM4L6iH!G`7eW*9rqUArzcf;RJ5V)e@Pz*)2VnxW#9UqMGlvu28ZKtUk($l9d!;+s z8=TXR8;c_rTL#@S;-vYNE(d~8En!&F=9<~?hVe(jD}1%pfR3Euy&!LB-apXakDS;o zCo69wwvLz5P!XD%nuwwGxYg94!pE|*%7M3=t={cqNoP9$8Kt6=%mM+}Fjdsb$|`5g zAYkfCfTqictQH@1$JdVO(s?!cHZ;vgCDo3l!cxnaa=A{W3ab>!09>%T@}2g1oh7aY zIaf{E-oJJ3%)6ayx}yQzEh?bxO#oocmLu6ny%X|Qf>@JF8m zeR?2P#e#)}j7>pTQ!`H>`NO+^102K%P^a?}9+{PlId*l%;7k72cf1h&7OWSNk&zLV z{ziRRHhf@YaL{qIt8Z$wc!Ianphm2mS-0lvq%1N~u@x+q(*GQvdcSg$_VW$XT62axW~s}TZ=Myj~T`5t@MBFw8(6JUNW*aw4R}c-$cAK_dexs zCc^lwJ}?SM{Uqm&b%BcpqJQy@CXR0ynNs_B$bGh-Y+6O41*`XJiO#*egVb#FdBtn( z@eImWZ|G(eRC=g-Jq)gw#G;>Hmxy`4OjM}1{5Ykc!Hr5kBZVwh!k%mhCHQU~3tk5E zYU|e;HdnV7?#PECjo{tbS&|@=Bg(C!A5mt-?Qmm#T<8K3y$ute%0Q9GQB>xtKkO3_ zaZ#^v|Ni!1B`1v<5`xf~i3%$gNwnNoJ|-SwPzVxHdTyZ%7wJaE>$uAvFLWV8st_+( z-(%6fLqI@8qJvZR0K$ThhoxTuU{pb?jI;$)JMP|>3AJB64E+j5Ar*?GvU2pI)3@Ne zZEO31f;M7;IaKeQI)D6-FfhnWCTk?Cey$uo(z#*|5(9)Pz{h>;PuJPu@*y~Id~Vyc z)=^;hqg8+@!F(%G9(ebfbU#Pe_NOG=$w)yH*aym^M|Y2O=DIMW_#Y2r2cUqh{m&v;!wPuYi91k&5ykXW}+2DCWB3krB0v06TzQtOkjW@0NI_nLeX$Z^gD{6pxGkk1Up^j2@G(}rt`{G2fa*if z$<5DiqP*Bb2c?)lgYCY8#0gT!>xiKXBtWnnFU3S`Aq`)oTQ-F-LGvAWQzx4L_@|QxRD=L0^kIR zyqTPs2-iKEB?Qf|!5>>V7&?G5bANg+8m6w-F>UQ`%I0rmo_0V{1o9g92v@lDi8&!O z_q&Bqw;A?DN$aIEDT4_4T~M$A1V}vNf*7^r*0O84ZSP!#WN^r|E6|8GxFdQKd|c)57LUHZ z{(e8m+aSU75yUx}P0ASaM4QeJr?F!?0!&ifqv?3W#SC(rih`%h?y)EC zA#1J%(;YI1A}V0z|K)*=HiBKXoXTUET}7;xDzCW~P(Q>Jn{&*En7ymjMeUq$4R>fYsQZ?3pc;wz>{N z({Pydw08(?l(2|29f+r^t)?hLSe0`gvL%oR0sS{N%t-^1WZ;U<8&YF}*bh(-{C>c- z8o(`(X8PgjLYbsQL0WDdDW|DY{P=HXbj)>J6mdDZTX=YQtcLA45RL^)MAWVVJ|OcU zQ*S8Ba{r)zDN2Y`c}TZVz$_~(D=I3A@?W&hMFW`LqLZxbjUZ~7CO|6Y-&fHJfkvw4 zf0t9+nz@1nc0*7T6`hObw-ITAqDn4P-v3$b0mUE#aznn49x>nHx#Iii$10D-Fw>J{ zUgemB=GHd5X_0rP{oIrj;oTSAro3)AEM6xWZ-qfa_>ssZr&7v+gt>^(3WuCz$-&PL z9z5{*eU@q~kxDNoA(Y>RPi4}Re4}ifyx%8;590{veqv#BsRV!?#4nmp{HP zSdCwDdE&%b#%-|gWU)1^+X3sj)VC4Ce_Y8qesIiKZOu-XU7*W`L{EQw3ONK2^fEz~ z1Eff`@^6sjKHa}YFDRLbQz-lMQldf~$_0uK0Z}r?GaAljo{=CRix{1f^0|6=+{ za|#*?GA9+2A5a>Ou|TTojPsO~yapf;+}auEDz2Iv&Q;_f54)uaGUF)2)^ff4s+r+!K#Q>BviBR1$k*sm&x4Z#3j@B`%}Md)Yb&Q*CypTEk$wDl z70g9N595ItnR>)MY>FT{Zec70uk#{NXjx6@H9}8Pk-9T)F?Z4oz5fcG({``z>qFT` z@@dZYf0$lpaxjFYzyoN2S+h4hDZl zi|y@$fo`s1ar{f55>S!o*ev*ub5;LK82-E|JyEU7_x)ag@B&W+o!rItZDuk>;b9ZV z?nW*8+({7X5Wf-#di?Os8ss%?jS!h6iWbEib((%-L0D11|UPv~RWOkASKT)$ns-s<~O7XP*- zL0`WFg$1GM5-&v^s~`|y;>I7g*g`x6rGW}X!_JNk9FBQI#3Ka-h4v`PEEpXizOVsw zkw1xLP(hgWyw*9-bul+Jjf%m*f0LzIu5%-EQ1rUr+O2qNLjia+Sg!+8^0Q$ocQhp3 zHj+dPO|i);Dq^pgLHup7pbO-sf){-rb;>(z*W19Qa2GO+9%Rwds9@IS%O*&$zD1Jz zs!W}5_96lML6;DRm!BSL5EX;nm;UiDV|B!38g)h0ZGwhm@3frLc2X&SiDj-wa_ zBBuMppsypr3BtUYA4ze04b|YO#%EP=wVIhi?zt48IEn8~s94;E=*?HD-v2{oT261f zsI85R89Z)9u0_gME5bT`oe;}QKgtYRwAsnJx};0Cf!|L|d4j4!=V zI|D84H4sxQMhfFfawDHc+6B?<>=kD17n;*pNmPXqy^C7XzB}5bKb(;CGS*!zYf9;n z$L_=VxtQeSf^nra@)tDWe_q_%zg5P3Ts6?{%)k$e-ag5-YG+J16Ju|b&tbXNOhvUl z5s;_pl&fAfA5R? zw;8~sJ%ZryLpss}V3G#Qed+f0WiXW~Tl+ri<%2ADwf36+RBklGkvj#*C-_)LY@d2w9HTP?iIs%lLjMejLt48`}uzLb*I`1 z3!Dg|!k?t2xNQUtRpHIl)^^XpWbXW&x5^(NuqdVOuXq%Ds5{8je-cvvH1h5kIO66IX^xl^XS`SO^qYwN)2=UPw1LQ{&@ZqoGcF_W|wSYRj* z5*nbcH17*O80Y?^*5xQjQlBh8nDdFUc~Ezos5$Lo$2LcYlvD8g@eRR>*I+6JxN-7|<<>qEVDG_v z09{qO+==>ir*pL`XD|OFzB_xe5mLAAj{c(V=ottkXAYO>M=!l^Z&b~r@ZCbN((B>e zflOZGm!ftJy_TH~Skk&GaMCr2Z%5AggQ252qAA7Ow$C8`@}|g_DQ3E$ziVUpGwZHm z+6f76ds)*ScwPEzP`eY&JMQDj)+61J^{}c!&y4;v?ba+FTkR#`+`kJ(%U`; z7i5D-cf|Vm5pCy2VM|26l%-ZJx_8F~(dN{1e{ydNv93?56}+&{v6O*XgPl_XK57AKf_|t+*4L$ z-aJQh=6n~W+I^o+z06RcbH`#kGHnP2A$+-YourIBemaBKA>*3BW76$mYzy117?uUg z&_@71{<w@hJ=W0QdR4Zd4)0q94+9r?M;z$pRkJ&~58&JaX# zQUX)}!CI+xwas(ejz=1fV3D{AK4Rggvo3paEPyYk$hlav;JR;wT$sp5h|yA}nq|=b z-q-$)u+{-F)~28@qgO&`)(q_|IiiC`#YaLdv>p; zWC;X%P;eJ62U{2Hw_PO?q74#Z>Djkk4T6;nt!hB@VA9AaDnbO}*&PV?GMLPdDoyuU ziHeJfjpw!04K9xQ4s1;vF-+Cuqcyc+Hzv1bw@dc9=iR<^b)`d#r0@xsej2-{r%Rm0 zVDb!V3F0MSA^STY9uqFSW6_NOxf|pz`HF&qf~aq)s-Q`MYYyrcD5f1_=WnMs<743K z27+iddUS1YH{N%`f-%I0>};u?E6Tf$%oT4b~F1O z_H0ea_@tH=6XaC^&HuIC4`3P1nd<^1k`7PVV0jRfJ;tIC_qRjlm>xsxyT`FU={&!u z@jLKt-MmS0&8JLt^9o{OYx1D2)(FsW`Nhc^8-R0p_q#Zc92__h^@i+bJF`O&$3h_f z($Wm$O%ZH^%hpo9>u=I1q&uHy+FktlnX5C2!~WyJ6-g42n&GkQpHG zYz<1s)$}r5_cmPxo6YyDu+$w%T){hMcMN=4uLS-a^vOZB&E)odRhurES3_p&@?a zzblz-MQXrE4-FYmRjqn_@s%85yYAO9IWoZd?|KdxuOnA6i-&)a)T7r;yop}IZfz+` zVKhNSOkEx;d`mWOi7HNaprnReC=&Jq`;n356TqOpZ*OE`LIb4tIe#q-1oPIwfq?;K zV$1fy32Po?6vp7|`Zmn&FyeU0*1fhNq5&u$5^@&9lW`%M0PY}q1;P8oN_Ri}rM`v> z!22Ihhpo%jB1G~lvU3vf!{{*YkYYVrR~erg?R-Adiv|c z8A#@@pb&8%69N1NY)3@V$gQvzJeLN4(|dzzjI)>asNgY0M@Og2-a2dn`y>4-#`>!Y z8r~@jAS}Z}acm>-NCDwgCWeOfklWGqiT&^lYeAyt2{;$Y;A_axx zSL>aNP|k{dr^O{ z;yU8xp-0efkM$49WW^xVT*<4VZLXu%UWC+#U(m_P@>N#tk1j*^b-HxJA#gzLTvk88byJlS2p^A(x$6Pi&A8XotZZK*HT89EtH zOx6}vCx_{5Ui2klvpWA#?>?ZOEZVq>{>5FiFtw0OL`W*)6E4sotQ!;=&)aO5a%lZJx<5X%#1^pPg^(fFYw)V~^rBu~;b$CVw4 z5rj=|j%dZvsCxsu^7PHCI=S}GI#;ODlYtEH1RFfgTc~x%h{w_j@q8a=@vHC@*R5{s zZSbR~Ocu#>pcLpt<>zp;DJr^;>d+n8C2*}xsmXrM^$j$a7r0}nFl8itg+&Rw6l_zg@XY|Q`j$lB;fu%M zNQm9EDZW!2;eNcA^y$F!)hT}&$)`NH^JB0E5N^IN?mRU1&zwAIne>fVVnT3aN-z)sSv z6i}{torg2s1mpwzr;*5nzsJx$-I)#v+q;2R24VX9)6nrs>PnF9_|G-GxT@`IPUQS~ zRjCIDIW+5U?8;oi->g2K+>5x~IB|u3gzN1&yS)y-9EN1@lwU;PeM4CGz_>r;p=-j$ z&D|+W6+X;0VWP9SDRZZzA{)6{TD*4Di_E(!Q)>76%H$?_V=6XQnS3aj$(i*H6@AlQ z310o+jPi2cKYamHG&#UhAiWq4DJVY1>}En!4>cPzfE8-Pk8gpSqp(evjT;FR!a}E&fpYEdTKJ=liQHBjVwoy6^|WmvgPzqYE!) zZET)Q%V^V#v1Bf_EVDhwKV82i{GD@xO=)fUi1?FDR@*lr<`ilDuwDob-S6uuW_zk8 zapZC@Y+g&n5lQ*}BX(mp0>Ux~NNk{@@#T;3c^4>DkJ9}8AzFXWbL}1#%85X03Kl#msmfPVDZk*z1lDT#2(l=IJhR8^iyEr zm^4HSAYaF&YYkbk`C9|lWsGX_WicSY^Ake<7-2pc#E0^zpAR+qq}$jgjo*FBeE) zA&E#9$)4+{RBYw}Ap4?=rQvqn6U-aTpxo=jg6?F}Bw-AWJFl)0&WE?ur=Q`n0_)&| zC61N811s~MXw;#MKi_+_|HqdL{ddMI_ujp4!RBYzp5Qi4D@-Al;4Brn@#BcP`Hvcii)RXMAIP_g;R%9;~(JTx-qw zzVGus&$IeTY#>w?c=W*LPWF(vnCJwIK|#uFB)D8Qikh05^|5_0Y{D~e@(fHOK>T^m z`Y5WS1?C4d4P>*|0NiZ^ou+6X`4Xy2-~US>;L?*QP7X*Fclt`U2|)V*n8w`tsXzfq zWW$+cdryImApd0ts$vX)7+-W^wqK*BO8c*fU~{hC$<4_DM?lzWbh0~7E#brk z%!z&*Kwd)KuLYr)LJj5zT$Khk&;u-t)PWm^p~sEVMkZ_)sM1{joXVncPVr``Lg1jo1~;$fK`)W9puT_l zsOCM0IH zTd~d2{edpxuGPk?eyJ@17BnER7DJkO9u8R*E-rBj4E;HpBFDoMAGhAc`vR^sg_i&^ zt!hll!V;&s3DQdp`D3yy87pdyHt+eR^2kG3n`+ah*Qd8-1_1{Y+{qC4ei$q!<^2cE z_6O6h#^_9VYCxZ(a;V(zGl$T&^>E;r7RTd{tIIl+_>FGIw}8+Es_9l=MkvRFgIj08 zQ;T`5KQ5XgZ$RcCYV|%FP&b3#Jpj+6-&%ZhXU)g{CAN#HHURJnuc@u*3L}18Qy;v{ zPXx1;w*L3w<>;?GUEm)Rh>RsrFRZTGL7sB3ezK#7l<(=W|83D zp3{P+yddPWaI`U(Hiku*&y&5o)TmA>2V2oUQ_yo;`X1lv(AsC;yQoS)D}{}L6A?4} z1PuK#!6S%9^!-6tQ-1l(CqQn4oVI?0)-h1y0u@dO^ktB7)$EK-TPO`wH5-FA6f_i> z^G%_e!$FlxLAO|=hBp_R?F5?D;U?H~%4_K#YR;{{-X zh9h%zV(JOFmn;fo;O2s}aI}Td1p?AS`i~!v43x^_1kG-M{0nrue1OT=#T<@oLz3&v z#ExI!%uQj;SMU-z-Kzw3W1anv%JlaXqy9LYQHO6%g$}jT^-ns`1|E3^@ws^WkO#^t zF!!h5rVExck_J5M$e0&CC|{pMHG${l4l;mueLuzzW!|S^UDqmRmhLG@_&=bx%4d*ZzkU0z$g(`v4=2_pr88J=%K9x=EU!(nd>ZygDF ztUb@0t^;JjO^ui>?gI^a2NP?zoK5S>Ei+;?mEzAY3K?PcW@+n}X2gxy%yyaYYCl#C zzWy?LJGb2haZ$$rls$x$nJ$M0tZ!{>S|2ibefaW)Y;&fTE{a2~DNJl82(TX^8VvXX z$o@}QfeeHO(0;h*b>`F^zzH(~4GG8#5H$QXw6(J_F)n%BR<-1ti`rf#o}?2gv}YKv zivMsBCBq?Xt~jL6@RVjk=8c)|2JM~fH*ntjwPRY6D9%eIc8es(|2)oQyg)x7Wf85l zuj1)g<4p_It!dx4;`tGHn4`!ve9E+YcA2)OwpG7KByS*wGdfg%gcNSF&}m!{c%TI> zfEE_p%=>d2se^7Ih}cnNHO323d>xm&`^&F^UqhD! zpFRghs}wKh1*ul9zZ#!wJ$fge9p$nuCt_W}tkk<&qa1E`%Pe?d0Prb_%=;J<@4?Xl zBnQoB58-|J*Di5wDBHMrVmBJ$sq}X;K2Qn>{7_mT^P!#uvGzQcWGQz+4)x?vU_$r3 z&fq#E1A#+a%VA+5<3-UAjAZK+n}b1kM0C4KX3ognc{=0xYkM{a!Q zHl*Zg*4RM<2Jsw7O`skB=Q)e5t!-O`_l0Q>UlvXeInD z%sr^-=j5?3 z^xWn@g0crHg_ub+0&Zag=q9(I>IR^2K#e&A&%M@IOd_b#0SqzVatfMb_tCLX`w;v( zRc7-+5NRfpon^o@ZR zCHW8Un?9x$Hty=JNAe(gqa8c3(vVw&WolW^Gt{s&YQO)%{v~uso9kwqF-&;WDJ4$j zGmK&1nEqDkc^Sh;ZCYaLL%SaY-rQNx&9F5LmZCt?lwXm=kk)SLkvP8q6*X`Dg#&2r zLULcG_a|wC=Onn8_7^8`XeR@FL+CkV6uc$y?$81fzf~;9TY5i2Jr=PeBlzS)aqG5B&fP0fBMx7*Q#In+Ke0c0J(FM)X`+dQ15!>by%Sz=ZwPbj~ zkM`dZko&@FR6cw8{@kl%rc3cuOp^gxRQ}fowymm-SfUM6trIbDciy0?#*9Z%klAQPX6F1>`Rt2i?Aw&UkLmLK z*t8{xv`T@D)gI7wn__r$3qi7IyK!_4=&pJC6;4mZNP%Q>Q%5f2J6>q{)o} z9Sprs@IF8IFf%nWq1_RrFiM~s`DKR5@9(g)>!t%u38x~3FZ2lLq9_wjPRO7P#$Cv^ zc^CfTl;<WcJ=MR%vr6KR*K8eV zn3;mDz`-GcKaC32}#F{F>p|kEr5Xt@gAT&ot)EUJG}B}bE=#elmaau@W>)x!xx^jQG&PX#{&H54u|}sV zoky8p|K+%-_0yWwO{tIU4ZpUyS^9>Az-LFRrXw{0_`Eup7mCi=ALPN4q;rRM_=!w* znizD9i`84y1k%GLJlN^mqweQcoVo^uxFf{T#_jP+(i&9hb?vVO=bP~PT0m5zCA$~O zBx@ja3%)rn;JKkY+f-hM;t6GBINPl+0KP`eSC{8dKUP>o1XXP$&kxKMuwZi!%WH^X zI!l$Wc!vt&gv@~*vnk+?#2;oIOmT3bH^lb66>-vb&)aW4Wj$!lM{ zGCKH7X1VcPq=3U7BPXM8X!Pfv=^dM@4Nr1XEOay|!Sy~HN-1>Sc%kRM6b)r90O2b1 zJarHj61WSIsYF?%2esh4UwU_!*I)D!dp$oqL)R5KyObQLte!a`|buWn^I_%=a4gBP5P?KT~Sx_gYB^Qr-ZLm*YSr3cSssn+X`_S-S72KL8-Y zXtvG^=7UGhaX2ZLW=NzCSXd#Qz<^AD3&+|=DaW6Y%#^Di! zdieeWAsV!4CI^2~$o|9F51`!t)%PCQ+)zuu69#rBK9XN{^0OJv5H=J8hF4e z16C5yiZ0!SkXH;~q|OSZ3m`$6`p5r-(uom4$?V=({nbr%Y1H%QZK@E`w*fLSNaVfn zBRjdNM{G6}45Ukmb#N(A63-hb#r8lvG5HVAXbFb16xz&#bXev76_)zA}!4@dv#P^ zJ=_e~B>)H|Me%rs3PTv>zrFzAe+CNuXD{G?0dso>e!#+W>N4@-KJa1z41Qql`qwg3WAK+d$)Mc)^$8hx7{Hu#2MWmdp%0jvk(Ava~yyB8h`)y7O=VM zHfCl`FZfT($W)oID8}HR^uT{XHvf6G4|7w~wvX|RN@YU#<>Y$TOFNm$nyTiGb3(p* zeQK9@I%ea(BrjEA%|NtULx$3Qibp$1Yijj--`;)dn+k|UvwZxck(ixK0V7qgdc+VP zRnECIWzOiIXNSk)p0(duz97ew-kHpv=VENc%s1jN5xg{*V7)3MGWzptRe1Sq>Q#U< zPF0x!V7OIL2xFozxsAV7>Lp)uv)yx3&%(D;?HO zDA&YSgS{e3!o8H33$YMVC(Oxu9=w#4lnZ<9OxiI`AB74#Hlm@!Zu%-coSYhMqH(Zf zUGI}%fWGBqqNG~m%Q?Mgogqut>%ql@U+=MI5x*v{>>jsnAAcB}?#pwc(s;)@zKA43_C0x4m$&YaT@zAF z&F;M3Qfiskoj!suE@Ur#x)H;|gYiwf#N_BSBSVjp+gqK-dW=(yV-&VdAar=`E|lZ9`)CN_?$nn2=G}EPt~p>%_V| zffwH>vC)lB8u~ff~cAgjXM=J+v`|K#{E!M$7n*u|GmcjCdbXm`r3uTR%KjgsEz zca1XifAxQRqA1yy&ZEZ56giqLHfGwzy)_mV)U@%upSdd3u~^b|Bo4*RR2DN6VF`0c z!4D6^2^6d{#M_QPg6(b;o9<^GW2i5x;#;PQxWpj0@*7G@Ivm1z1t`6>doH=O!mee% z>H1Y?Ev;eReus(=_);yA^Q~pog-rs7bXyW;v_byc9d_beNTi$6h4py5$!~TniRU1h z&d%`J&tdq+=t^Yn9rC9P=bz^Kn+SAQ3NEr|5AWUBNeIM)y}3)!tBy-#_TgRymhKT6 zc{g$~arY>{HHr^I3};1#f;SP(`c!=vj6{ogw)El$LU+M)|%cVBeg}XA{&99_Rzm=UbvBthE^=8~ApSr7u`(%n) zu)tAXf!fAZCZ~XwP>*zD>Jz7fpLWb3Yk^cX>v5$?&xyzS76MtRm%2DXC6Q z(U^y9H9q^$_Cw1(Vvz&lf)lgb+bLx?)hiS@gIzKW?wglceI4+!6Cymmex()2O<&xZD^_k3bkQ~7y0tM%*bwVhcLq| zA@+m&%=R#EZ+D)f9-SQPsn@g-xy!vU(R}HFW+3N;qYWEEkMQ%mAtjtu15z9W9lDA6T+nRQa}-MGm~ zRlAj%W5_L3ma5?jBi=`jFaO z=zB<%#{7C@n8&HNW$lkTYp0xs%F1f?fh$(>FyJ2D>3_Nm$D|Ud$M`9!M%gb!s~h1qSVVcv zRcbZ|x50-+>D|c4n1rm9tsk-PpV`~CcpdN?5By3Rjs>Vd^d;&_4XD^U~aN_806UcL~V zm}1$6nmvC>lsrDUCxk0}o+s2%d@)~KZu{whD5tt)u)sx`gdtyPP#ImLc+l%vLOfgD z%i;bqiMNlHp10TC7k+a-Dnm2qWt)Q*ZZs}m%#*~u&4W-ppQ*0hn|#ne1Lg& zQmrJi;ESGAIqF+LK|{1x8~N|2`QL4%*GR;uV>Rs_7Cosf(`7-Gjg-E_`)n;X=xF3L z8^#~^Yqx9gTp)jO(|l#3WH3^k@bhR9f?uuv$5u?^Wp0V-A(pzymdsiK#@{7()7Qrr z?qQ~@6T*pK;)wpjMuO_|v|ifuMB$os?O5E-#$h7%&|yL^5nGVyuAqH!Z~m98HL+4@ z6I~HRTB^~_)GA%{pD3vlqurw}k7gzn)>OxM)GWf#%%5i?T}$NmIa?GrW1e+mVIs{4(9Z zbgY-{WGVrrtSW50EfTe84ax>gQeiG~7Br)ShlX>m>UQ!b>3DH3$@jK&hXmdpGNaCe z76yw<%{8j3h`c?D8O@)RFHDsi1XQb4=SueMG|`eM$jn@X#x(Iuo(g`k95#)RDEn`u29b85Ex(ABiV$Z4)pF zkbKjZVRS^qWvH&Rv!?$Br71WF(p2{JOcG)K`CFJMQ|>21^$x4_Kl`%R#Lf3t4Bu<| S_(Sh>d!+P4vEaUu-+ut$Y)?P{ literal 27834 zcmce;byQW|`!Bi?B&0#Pw%5-aoZZBalA+#+Ms?Klk08g+Ih&#F(mC zNk18dY*WI$WM1GqUu#bcdso4g(4}jso*N~wY`wxhb1Nw0llmph!$=B@!-p0L>x`Wh zV;+uu6W=W3OA8ieBXM>TqddB6$~xUAw`YGiE%tmwp-vXx?_;2HC3XA)0|RkU6eE)u zsFSts7ZF#@$w)~_myCLD$;-?8^I2SFW@eV75+ordjbvh1eJz>GFZ56qo(mp|s}vW@ z8Jv+_|J#f@4miMK0yA`l7gF*)OmcVFUw(TPDM~H zg~uG@W#0JIG9EK?8V{AA1&QKYDkhG7cLEytZE+^1kLN-k>5|p?#U&k%b}YYr`^L%3 z%)I=BjGR0&BEkm)6Z`2@{VTo?_Z&&D`nsfx%x=hYl$4gv3>BG(x^HEWiIR|NO!ocy z<$Ke-Yih17O4Q{qmCU-|P+#gVgC@=k{z=NLE95`qCED4;!VJ|dbb z%&g}YJy{(qTfyJ@tb~*7VKgr9m$7S^c+B z%(TA3#MwC6?w&oKJeQ{6e&ln#pqdPylBdbeYn#@s#-Ku!lvLv$zeOM>hiYOyCb6WC z*o!|?hYKk!ZBZPN@$tcTd222kdTw4!ez~X1{iqN{EV+TAp`n>8BPS(o#`5!L(0=kH zB!Qm>A)rSZF4{2sLC)K$8;K76XdB?UkjrmPC0&lN!Jsxh;p`j6GsdX{_x1xH8difkr027kZTVXt!&dWo@F#%x7`Lqas* zltxA#i_zMaNjy8(7n9j+n%#t>u{2-^SK^@%f~S`UdE!S`uFGTIs5?0;eo=6A!QlMh zd+J9VsjXI)p(ALXc)zy;E%*|WwH$KwV&g}n^mq+mC%^Q31B*!9Et{XQL z3=EPJ39vk*FX7`0Ehr|YO#EEmZ=82*SlDh@adbD*rWFHW|^S=OohK2hU=Oa+hi8cJGW>-s;P3G;?F9Z^8ym}T#Tf!%^*#diaps&S&?VQ!9ntLn4OH?nfXx;1Dar~yS5z07o8=JZ5$ zB@~8-hid$1S+2}R_M=fPp3;oS{B~aXZS?&$-W`_nn)R2&EJ|TbFoRibO6)#JxbmQ$ zE_5Y1YCj0X)=C_#m47=svg#ssmuXA%&!`7gMgFv#WO87>bH;p*_tTypImIx#pi#Rz zdgMc<%YGZzyPNR4Z0<*&3>tV4P9Ao-7JBU4va+!m9d6Bw-rOK)KQCqo3JNMem)A&HcLB zSR*XGh6(>e+%_u7x$7RFt# z<2abq9%$KV)ktX=5Tv&*`Jz1>b$9QM*SF1!FKa}uHjn||>TMg<&XhIHI0o2ort!$c(xeZA6{spiLZ5R;1x ze7E=6i}?_ZL{$!JVOoRyGjfWvRWnq5e~wlWT!{e+ma=DUWOMWLOxLg9?OGP-tylXX zpm0;|s)WQ79-7}_^b#nPuC8u&L4lHsi}0mOmjt7z=TR*yyT+>{CD~uTD8NMe`t_^& zlPCBIotf2x^Nt^DYZ(j*bX;50q$olzcD%o#wXCkL?$aDXxq^)u867HIHyO@v@}sql z>Bn2@^yBGe#|l30Gf&ez$(uLHVXflP{dKAOWolhEI_)GbQGM)Oq1V0#lg(2)<=54Y zrRg>MPP1Z7?dqRqH{r*uJDCtGe0pN-F2AR<@2_=%Ty>j^>KBr$x~+qVR4 zop4wmKgw$1@jUCm)KGDk$p;$KBe`{TwFO?hMiw(S9Z}g z<+EWDbIck=#?6<8tV<cr38=5gXJKKb%ROR$I9b`x zKP`>9QxYej@f8#iZo^tVEh5tQq3pf(Y#baNy8dk@v&H7!{sUGD4aq3@c3BHI zT9tfX-(Shh^^h6S($K(wGlhzN-SYYGyjKHO4}Eb_t*xy--3$1m*-yS`$94XRIMvqC zx$b?(8_-*X`{obyfY<*C)63`ug?jLZe%Uo=l?@I}>)%oyubfRJ^Yf3BK<{J=>}>p?wVN7uooqfxnZWB<@$QMPTFOkYhqc97 zgU7gbOxeC4ZL-$nZeeNJ00p&b?3PQ*r8oKNycKz0z7XQ^QSch%EpY`s%a&s=z2SfB zh-}kncxY%-q)1p;cyEMwQ0V#Z`aGKV>QM`HR7;;JMo9_l4s`5}(Uny=xAe01E-(re z3r3riJQk7@?waaRHSf?mZ%SqIXLz}z;Wy|cC$3iVvh(lRG;jN{Q4Z8_JP>9t=o zNfU*yUP$A2Kx0EBUQx(N8(%+Smi|I$6v|H5$HP)JZx=m|MgQrbRqGDeIucW z)4}vk)YAU6noiwY-a1i#j%2qBI(iOozOoiwZ%QgH-%b`Vz4SRZ_mid#IRT4N@vsx^ zT-Ut|_f%9~b(%Gflsuo$k)M>pFEND%|OI4 zBh{>W3h6HD2t$D(6_LrhFpB%(*6Owsh&v-D z-kq?bsxGzi6&qHI%vQigABT(0XLGWWzyJDl_tn$-jV_7xDfrt|?l3zyLo=D=NdAM6 zE`ag;pheX4fbVSm{7j99jGuqFFg5j-N`i=L@U%G6lu5ZOf9Azu?JML}1_2>%oH)^&uV2iR52N3|pLsHQM6tZQys=_E+yslw^m*~)$P&rD6Z?qVuboSd8l zE~vqyj{sPjo15ER-gE2vK2GA`rHPD*d6Slw7U52KczEd88yLv;A)+g^*;v-W!J)M} z7^;4Rz;qZFtWnvw8XO!P&wuRe^H9PH9Hmcp5v5~_n(4<#y-LFu+qHeA($B)vv%#Du z+i+%W6e^c(S-{Wd5gvr!NgIXGjlwgDx6yxIKl06C|AUpi5*Zmux|c|6`cR5cQyND) zh4=5?s!Nq^fu?BWd!3tG$K+qOVUfh3bgj)hs?gTCRBIw$@8=Q&3-L4uIohCu3am1 z-!`KYwMQ{}ZeZ-KjfY&%FTZfU?|nYF)vGB%0ZB)s08>z{uArK}$K7Qlp&F-oEsG=U($| z;rH*~A1XE{4r7!FgCRHS%e?P)I3K&Y(MYUh`iq6ML@lp9g7LDvybYD0{M7fI(nB1S z{aRc@e05ixr~|VePpkm{7C?l?t@#f3Sh>q4Gspa*+_L@BU6$&2BEmw8QEENFsLuaN z`aQH|R86w}aep$!_dH(8fM>)KpMtyo^TS*OoQs772F}z+vM4;9 zUzaHTlICeoeQHA>P#%PT-MDc>)Ok5N@jlR}p$|9B?SW3l-D4-9aoVE|I%fIzP=TIZ z#_O^K!kgw5`akj5|B&Hw^lgQ8+MftT{S`Y(oS%&RMj-!xG39?4Y%2*iA&}^2xPJd~ zY6#V0Gz6x*WrBOu(cxv(5Oe;qv4OVcq^Xuq>|-^oFT(o zv5*`UB{A<$YwOc7|1K&hJAA`U(!#>Rr*S%>m@};D^XVcU0nPWoW`%+;Uz$q>4MGwV z=_F4!8kJR5--l3bHB%b?!{S1CYjMj)L!p3mD13LU8V8se9i^eI?H?U|S?mL+yn@0- zU(oaH=NbXTe9NHory#0akyQAHhf+Ijhzr@W*P5)!&I z^1PtN|MYnOc{@h^r&xpF0`q4x1qn2fk>VGky6{$YmDSW*U}F#USgTO#`qkRm*&NNK z#e9hdU@lS45dcT)TZ0*%D{PpOZ;XsfN9yvFZ%radCxRIY{Df^J6Dsk zZnD6=VAxvQ>%8d%ziK?6`Zj3|J8ERSl%Z_&OGQFV2dx-;!(u5Nky6z*?VS6iEio-S z9XpBD7~-t-O8l+K^u}qQ(N!Wb##MbKD#?N^htwprg4RDn9u#5JG?TV+k#N<0+7QRV z+<{(^SheZ%lN)g&rr+2nm3ywzm^#Z%kcKp;Syq3vIvF5mSBS5)c6S#;b~MXH1^T%k zh6T2cJ}ei=i(Vcs*pFr|k~03;3h?xR(yl5;Vu0y=Jt5+)p>+o1 zb0{TS*7=l1nbhY!sdJfbZC(j>)jc@f@>12oP;5m5Hk6 z%1}BOD*;JBkrZ4)6Pu+hn%8@2~Rms%;y^q@;w;%ov;I`@-}a zTv342gej?^rt!+o?ulqlYJ z3Cja3?Mrz%m6({AqX6nE?5NK~>&=Sa+)GRR7gh;beuaq$0?^L{5w$33_pN8B`mQ92 zm~Sv2fi=+Gea{V4Ubgj&v-ZGKIwLEqqwQ9q>rW16#)M9@PYbe8W)xw3*zf<@Kc3z{ zmfK_VrQJPVb&>e|`E#LJC(Sc6GylK5nzm)MPy+J#ig#GVGQ&zgWxAe0xe;2Z2huUS z`C71aTK=)Ymzv6eW2uPlyR3u!@3!yswxluJ%WgrEIj#W z;VrLQW;JMdVmm%juT#MK`D%AaBt~XzxU{sSZ(uv}!6v9O1pDzxt~7fO3M9^qHbW2zhl4QP9P<>hF;6Fz+w=96)UK>99v1c4cvmz zCZnmxf82ImbLth3ZHHCKH91KrMU|l?q8!FN@=ApEtn*cx`+HOsVg1EWF^52+L=9}y zRL<1Lc9w5dbZ>06(0k)fI<(MlplepWNN`s#Qo*5Uc#u4}b0>JZg4o#D)XPg6mM6El z7QwTBpzig%yrX>vKBW1PD+Ij{>1_?IjKAtBD*AtvSW=e1Nh0v|3vi)N(|d4y+ob(X zi5K{>dLorOa@(AVU2W!4Z@gPkmI{%Td#mpM(hswZ3*N0%nmB)ln{0_zsuiE$Ql z%Z!YS)a-0r(669U#uNh&j|mE3u8-&tOHzgDS1w+Z$UjCB1Q>XqA$xz-Njws&e_kH9 z>AO!_CDy!SrCgQrCYrjsIkcXiTbdMnm}1FI=Ykv*U(+&^M$OOpE7#bCw;(I5x{0cm z#CB9bLv_5|*@fqpPU$CU?B1!*ZL%8o?}yroG5y+7T;cH|?jMcyrg*ETl>XL0EtoD= z?{kw?+fPLJ1a>N?N~EEssgFiV93HUHVYNd%x{0aM`YYwVEmQUv{Sp5pjUMG|Fqs!i<;EBCUPO{@tWG!PH zDl12|>DD`+I(=CE;AErjhgCc5jsiobUquxFUh6Bb6fuO zHPt(xu9HYN)^2l>BTZsIlJHffZ}x7?Z{2DZ8P|@;mP`Vk?nGex1B+g{*~p~5Y9z1u znWw@6NS0J1+~j|9DE>#>_5Xq8{$p(X&%Y)|EN(xAg1tPydg~6Pxt;HB~yVM8w4f#u|E2Yv(?M%OTHC(Xq$!`+plTRD#*fTWJzWs(A)AG_bAA z_}6{>h@oTnQYiD@2j7Re+HJ%9^Db2yj~)dg04XH91w`@GuV2Yjv$VRFqa+!KL7Jbk z7oE#9$Pr;s`v+Fy5YiB&EGsUG$e+7{1~vI zqeEKU#_=ggwUq^ckSg5j0F0O%?d!q-JJN%eeBxE7C-~X;Wn#bkUrY5M(~P*}o{YVG2_!WDnow?w zhx6KAROq2lRpSf}_TxHe8hN?TwX-f2dQ1zfG_HSUJUbSC&Td|1VPTm&l8^FC)R$tY zdC@;^JnYp(<3Tgi1Yf%Gx47G7xx}au+x|)bG__2pr+FSd?|0d?{jOWhK5_32=A5 z(>bWT<57|En?!|vlfNz!sMOD&?{uYck~ZF&(IYPjkd>pe5c8r7m^`8F5@dK+Yz*Qp zF;L)mL3bW`Tibkg!y6(ZI$GLmB~V8OYNGIBdAe&zoO@}H1s|8D&pL=F!SjGDDr}{j zlL6uaK+0%)!8Es$2eR!beTr+T7)CTD_u>0PgZ^{Df8$BNs_ z94VAyhH6lQo5l}}&zEEG{S5c%5{f9u0s)|}*DExUWtj$cu++1#V|CZ#n(WS+`(42~ z-@XZUb{jLugKls2{CSK!{xr>jX~%o6dC+Ggl9EEVwj3)g0^}Q$V`HyHzET)z_>;C}jbLV=aZbEse&^|? z_jkY(3)^q7*sRi2x5RA2JLYdA0Fe$(%*n$;w4}g!?b@$RIr&$Ijy?DJGO zL5_xr#bk3v)d1@fs%K~@5K#O5Bn3H|rKCDUoSr||&b?w*OdT2;8ZUqb^4k{#Ba6)SJhj)*1k&5zu)v{1|tZz<#1RpBFb$WTK?(SK+p4+)0P3u|1#2D4lpZRM8(79bf4Hfaea29f&UeHJO?0*0V$OP41zJPmR8nF^{0F>Q2F>65UWx z;VSK_puh<+h%PqHtgSWJ&#wWo>88%D>K!x%+OO6{@@3NG`e04R<=KI)yX*PF27y01 z7q%^Z{a_CD_xE$wa4Ir#G2YP56?$f%U@p(HvG_K5#Ll}Jj@t9A$uaTsMA*wZ^y9AJ z4}kOm8*`cXb8&I~2mk9mh?V3(q3+zh3veXsMAEeVa%WurRbrzdYhjSXtbU;uRX+

rneWTid`Kk?g z6F)yBghKeJ+N~&)PF&;n;--4{7LLxfTjpsW0eFf0M$27xjORE=<=lOySoBr4M(XgT zx={Y|Lz=B_deWLp%Tu>b>cD!)P*R}ioW^RPOB@5Ll;bfrlPK#*rEgJc^ zOrnc4skuctw`q$%6;_$sdd)raLu4-#KSQE4s%EjI(ps=es#(gGsBiy8)nqpR7UKi>vZ zCR6s^%5$QwMb`?w)}KH7^A>wpCU|479P2P*`i7>Rh??#efyptn>N4(#yM4A-K5jdn zjB%LQHs9o~9x_MMx*HAf@h_!OmxgPI=`rc^llL8b#_qi<%gdli@PnwO_o7n>QMu=s zE0N(Un?U2k1UQ&wJRe$G&tLq)O%XD^-Wr&}t)Wwno~k06(KkFiBToNkH>>ktCd$an zoEgwDeDfc5)b;LbkJHU?@7KfDYq1!9RN5pRtfS;Ax@q|&jWm&aRAjq~px#CdST%#F zwy~6zlBT$D%(i3jq|CN?rJ!yi3lqDnYj7^u=nY)BPW3yira_e;#WFwpn!1SH{qrY* zMD*?cSbMkIpLkt)ciFe-F3Q@iDIo8Ra4HTx4G9XwS8l=@DjJQZ_f)jPlLqI}9Gy=Wok@!;2b#R5Z~ewFqF z7Ni-<1paRYclLitt8KdD%e_jBZxB%p14Yh$uO6I^c_6T|Fc%d|`J*4iyns=kNaz`cKqB>+S!JGZ4E;GMuey#PVA#8hIb}rJzuN;2V*H z0bLdYReLm0F!Sy%4+iRIyb%72KR+>0ZyBU$5Z4e1WT22QNwdzCnxCIXtagN9-4;z! zeZ)-x9$|-WjV54^kF#s4ptAt??FlGtnSJ%I1Xqk^D;u?0EaxgUcGowq;9WL=Su~U^ z<>B)*f~2d+q-BovXQCK6s_^+Bk65n0K|$I0Q)Kf2P~#||5Hz`NCqlKznZh}-`^hKv zHgfoYcll9Mptr^EXl1ER_o>NTM0swtafsSa`LNejR8ZsYNy>jWD=v`;a)hu5B7Qm+ zXlrWvzI#U|R-ptX6v}pMTk!I-6(U7e=)4f6vlpdv6xc0XE9dd5GgQ4$X=&JhlS*(W z6=FEEMJ)`C*>7(*+UE;r4A4p_BF8&X{=IG^oTDI@Elw~a2)2JF{hQ+50GCgN<6JZ?^;1}l<)U%kPnG#<>?r{a5xV!s!M%Jyfot=?43 zdt7p71f2~a3IU_w7`AqGDT1z|JjdG(qUm?zB7_`6F^v~c&AR#Q0Kk;?c5y^P0)D|@ z?g^dkB$RFV6>YE5Ve9y0jI6#OxH@wS3xF@0@6;+AmRf)KbGo&sQ1R~FyNH)LIg=c* zQ7f0ZQo3<~6a%yd=@;O~&t$15WpBYrf}tO`4SFATl zVwM@J-I-u9#7VC+Ps>AlY*nnP{zFD{Ina+DKD^?!;m4Q?^M+VzheW%;AQZ6(k(m#^ z@Ed@dQ>CM}jdkazcF58|xCclxK`K$~MlcKr9|N7}B38;Y5=e5VT)oE0dCSP?W8&NS zj#w7Z^;ETCk-%o04p-bAmQRCmkp-Fuggwxa_+Y!guUqruv0&H5ix=;REqdC6Q~?Es zqNJoG{>LaJ7TVsiwR?mF2g5v~a+y#BktI_VUW7>vKal-Wa$e4ZEB`=SyS)tx*d;u& zejrc?I|E=0S~wJ-U!D+7kVDO z4>1+^B!59HUl^YLwk0Rf78^kj#3G;{P`LpU*emJqs#hH&{D5wFC%$)^D#(68>Cg6I zL~?Tea2e1E{oa{>!x5kK%*@P`(}zBMoql~>Ln{8cYTQ;QY#h)v^~p0o7GT`tL<<#?O$NEJd#51=lv058KwAeoC z+mU4)2st^d8?ainpYVSSW(ZJRGup_072GmIekFM&oW&a!PgPXm6RVBK1MUF@_-=1Dl&Emnl9WVbhQCY>?>gmOzEFrp$pQ{~&uf^U@#Rs`1+Y@!sov--U??

9ghb2Y;oGGWFk@jdKmWDUKRAeFLtx&v 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 A_y7O^ diff --git a/docs/build-insights/media/copilot-subscription.png b/docs/build-insights/media/copilot-subscription.png index 6cec3744fdda0405837988d16d05ecde7f0d1b60..9147ff7177c02eaa1926f0856b2cff693c9d1a45 100644 GIT binary patch literal 29363 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¬?9l%d5<(&~3o>oCU?Crb#Myh;~Ic({w?F?R@oT0Xb%Ri(643n~G^2BgQIga|4h?JEta*3@YIiMv{ETYd%5ydCU~&=d09 zkNuF{|L{;xiFV+r1GmorX%@&R@K~#I+1gj+_Jzy4a3K`&ZeF1@g9v|V!q@NEDOZEJ zKBDvS1bI@22l^?)HG+O;-hV?()8rYVOG$z^>{y5^q)+;I|&S61JbK_>*Z^#X(dw7ROIhx}hBLQD0NXmbZD z2rN)8o68YHwoMoD#n2Z!>Z#+FAdOt!a0P_Ce@*a2jde3>015l%0$5T9=A@=?gD$mr zx-azP&urKfy4bdV`Zv0(n6vm#v=plxb;A%PK4IqJj6D);*dpZraHU0jjVc#RfTAp& zD|p5_sr|7VhwNMprE*JC2aN}TS4=I{Y;JvOrc|g&EnT>UEh5$aY@xJsxm8-qd)mY1 z)k9cX0|_~DC&Z|KH3p(u=0cUR4w80b8oy@9gMXf^Ul7N65x zg1G51@Lv~eFXTI!bPBZFXc+uZthd)yjT!8=BQYf~aXjnhqG?bq^HsLV__3#h%Ab0a1-mm~K}SjPLYDwJGj--RJG^(wCTFM9V0 zW3qzD87-XjOl(;YwiQwB(dSoZ#kRT4xk8A5?J&%q5a|1rXwdz8Ko==sD+@|75Z-i+ z;_$NpMxLW2Dwhj}w8BMJ zo!7B!L2G_AvO0yEUnf4dxt;3wWG=E4aCs5iu=t32&2LIaCeh+}tFmWNNspdv;p~j+ z$Bs4V!iG%=WXAv(1F`4lxK8b4dY6~T5`Rra;Y$6OXPA7~Y&SOEYE>qCsfWC&TQ=cX zEfS_H<^C4+VHuJwmc#;L7acJEi&&SwX|2u}^x{B4)dZ8fZ(beMuZJFA#2F9to*^ZF zrW4)6q8SIYn29EBbollZ8T00`aADAIl)?#Q=jvP2)g#-L`=Z>VqZjad&2y4XV<);i=6| z2R41~LY(nEg*>A)=CYkD(;!xKw|KDKsfp+yokvYJM;09t5+!{wl%-_`mh);;U=pr) zc;E+cfaHshPjPp1{R5|KI(W9*=ikEE)~+WBG+7N6#u513iUG&QyX_6`pGK5+vpofV z`lgFD>=&g+iZ7srd%)H@5az-&vyAr5A1vC%mdkO_v6$Q4V0=gy^SgAgiRAE-i3SRA2v)%{}MF zqxL5M^uYf`QdjBRLlJ3F)`e{*jsqRTVLtuyi4Rg>#!OugN4)70oC}cI%*td3lB(bp zQS&y&$7gB>9R;J+Pf*`^O=0&dwNKU#X!!t0^MT@W)SWk%1sTh<#&eW6-eoo2lIh{9 zCNW0{ak5L@Hj6kGT&RR*p~NZznN__js>TpiM~X)ftRQcf`VgSEder_b%7MhF zAN}1pp;KSe@WI`96luJ|WZ6iS&=1{!i zF8;D$g9E4W+8?+xm=%Ooo#yxR4Zk0PV(!(d>~z0YYXQ9@$*3$5YOL9yWb~ z5u*1Lu zl<-06sN0H~^Nqd9i5bn6=>Sa4O~+T11Le%^(B3OPg*Nnp87rA)5E~S%@ycyj82@9& zU#8O6)@hQwLkd^+RyIa)427s( z>fiPl><|`S>c4)f{!_5gGqN{9)(}z)%gQ;1L*+4)jQ)cgBe#bO zQ|qM$J0S&E-0O$b&vKDHlg~Mi7UQQuC&?2pW2>hUylHTU4I(!dnMrz`#vBT6JNw+_ zZIQ`5G)ax&HC9`N9#d&Kd{2qBI#|6ppP4l^wVRBV)3Lo2R~4Ii%*H0}xlhTsZssg@ z@rY1{!mDaE6Cwf(vJuxr)f>kKOZUp(EcJ)$Unc5OYAyVk2aJ_PVIX8s;4|= zGk?;~Sr#stCds7i?z`$ZueE$lAl^TMMM9F%VFd-dPiSMsq4jD3i^6Qbd?cm-ivVZe z#>+P{>3T9S*(9q_#)`|c1KD+i93YHXmUZ~ISSk!Z^t+4uwE0&-9T``IZdWbG)g~Ay z2?ZW({>slu6k1jHB_j~$(C|RKotFRkyNe-?eE{ahs*>8`YJlx`?N_8H8zW85_gyDF zz8%#~!60?`r5@`AIz7GRpp&)eZUH|TK zSpg*|G~Y@!5wM?2icj=kXk_V?(OGtWld(Yptgp^_BBMut%H!hlN>M{-y}P($&E7m; z$KH#+DVTtf?H9=l;T@ITV*U*(qyhwX|Bu}f$RMg*7#aK%l@7Z9-`zPuNeY5I`QJK* zqNsp~MDNHfOk_yt+2=<__7GxUVcqM1HKwIF_V;P)jDmLN&+~{j0WF{Kc&CragEk>#lThhRk!D9Det6es!+w0%b(LTRgX(_`rh+2W z-+VSesj7@|TUaxf{m{t~ z9_=%Zdzb%F^cX5XTGq{KwDS2k?>=3mz?sXp5)iIglk=+cWOVt%zztM8RLdQRvt1`8 z=Y=vK1HMsTW1yLr6p5ke{Rf?8CQ+zEcw!=(Qx<)@tUFpcCO{gOj-j*#qvtYf&1*5h1S3cE+XDl6vF)ZYHV9nhZu{Al zXrUC>QWRN6k}k~O4F`rs)wZeamXvtrefT`}-WWQ+k;Gr#H-{(F4!nXAlo}8A5}XJQ z55K2&i=|28{`|5YcEe3PV~iY5O`$v}D-S(nr-|pMJaU*nn3~9=FWJgeZ>ZuSz4@u7 z7=9SZy#mVveS@Qadtz}Sxa2$Nd1GR*RgsEStygQI1-bhBN;=I+7tdtTwi1?)N*KyP zn$<{n4pn=ER83_zKV#}jc496^S-YWDf;H!@nfV2$W-IxMu3svt)?+RKdh02nCH3$q zO@@uxA%d0~#@i!fk#R1;s3cpQ!QsV6=iw`8z_XhIyY3V9*8{7_H?s+CLAc@Z$D*}g z-!?z*O}0jDYGQru>CvkF&fcu;H+`0Om)F&Jk}sx}TZE29#~N8pliO4L!m&KpamTdx zRa7{)hbDNAh$a-9LqXMDx<pi)aDp)?f!9YL&PQg$TwES^3i_PwUHcJ2UG zHD4r~`p7zKCjI^QUC~;`v&)UqO}7Q?*cgG-j@eZH!v^G{UHuoHne+REP5)}<`L@^O zSaB^1$VVj1C8}m<_sAjlkBH@i~jF$AW6~#w~2=#o_u&p+1zs z8Vfa#mhqh$U;D|u@{8KW7q$lKhU1Wv9Em!7U%dv|{BTTnO(m<+J=t-`M|wih+pAj3 z0vZI#Q?1$B{&i2%UH=9<`8uoOKbhv}ERMyy%8i^+xrCAoGqr|;obS>k&g~!MZfg8Y z1f#$sr@$5Y_8qr7#g3RL)~ezc>d9sr)lO5h8gB9nRpC9VE!LWR$)Q~qhy?S4M|DMe zhVW=qf~GDwBvF?tM=d(~xjCK{uAHHOOIKdvI^hQ|xcu%=nH^a667CFOI6vd&t6KBs zmP5Qtd|87W1Ob4_tL$&>=a?JkV~fFXVvW$(!HgnnIrDGd*6|l76-zp=o^{r(+@$R5)=H;t6K0EsxByj6pf?q|3*2-Xm|{6O<2XG_TZ zI&6pgaiP+&$vgT_m`v}&vC^}Jb;G&CV3z6hSZZJoAEkzdpUoceNd{NP;<%+|_NDNw zM$ZC!+GYPwY4ZMF>0N5C0>N~>$7DvA0>QO{1x?QNhtemcMfx3l|B027Zyrm%;A^Z0 zlP#SS4hCR4hpqth(IM5|utlY%wlrE51cOeSA8y}z(dXOdR3qMeW}$W{E!OCAp8|3~ zswzp&Q$kJn)a{R{HJ;=He1HiHXvlfC-G$wvI5M zl`$P{10;{QH)(5lr!O2>lnK2Y-)!&JX35*aha0(m(0Os9VdDd2Zk{F1-+qzU=1JEj|aH9X*Jju zcZq}|H{NiVMB(NAyv~{Xb+XQ)JI24HQVRvguCvFElC?#nyz7z)E7pV4J8Jx}JrcU6 z0}I7qmiY9PrkYrFiz4QBVM=6}hK)CSjR)XYjp_@ezJ#;?>TD@3nWk>(#+keAMq&j zlqb2^o>QMzmVh*x)ivYFxnB?<|L=egRyRdQn;^U!UNAyP#7ji=5WrLYyLt|CVb$YF z3@yIG1u}joE;kuk+<2BU$2XkUT6<+hZK*GmZ1rp~qFE^B51X=9EuFH1MGu@bP;DAN z*pCesUrC3F3-taxtN6c9JEMxXzJO%SZ;}ljmJ#);fpKP3zq{LOxeKFjOZd1^<5X*4 zV2$ew*bg}iHDYd$6xcGUWBFe=6`|Bylvo?7eE|^-R}|)$c9nR^U!fXeHPwZ{q@sb} z?pIjk0)+h{kAd-oug`A4XVhQ2U=-CXy6$CMy4MKjJ)JzCuau}d7g13Vx7?s$ zpi=f-?2R$eo|QohCR$SRa?|o(cxH-ED*>5ptoabK3k_tyjG? zFyGisgZ;3_AY@?Gfw+Wq^6!8aYJ)ZdRY4igwvmn+YzEP%isNw0#+F{GHcaY`3gI!! zDT5(k!ZM&d%n3!&E{pGOvSHu~C;5sl$q9HOiu2eb4qzi!u4yOAUAO>bs`MsQxxyxh zZO_ZQgSdF*WA2jo7399)#7F-6%kKGYJ4WkkFABq68mEGV>1*RzKT=c3Ne(Nv%;XQH zY;GH=sNUi~UbTeedI-n4ptzZhD&P@XJbx3sTxEdbm$>043C&N%+Nq3bjd1-{#M%_` z3w5of^Dk!y!Y3d49GqYIYp1>0zGZd35^NHAOd$}8rgl~MeGyK6Uj~p+bGLm>W(h=R zCBx{jdJC|{bkn@uYAi97E`MxX<>Svs>IUaShjw(OPqfBr?am;em|%0$;{Di;x_}72 z@iFRP{o3zroJ67gwe6U|V~Oe~pzFpC(e+CnsrI$)79I?k#jlMF2iPNt(JDC%6YO|Q z$v;5&b4>1O3cEm)-B{KA({ny2HnM`i_yN1RBwcmpVFqga_A?RXeNJZ!;4}GwY1+C* zlDEg3tpyk3a1MwzbSMtWi0^nrUCyohZ}ia^(r_AqvAj(qICE00u@nq;dCbe=lYyjK zo#bURIR>^SPUw_fXt;#IBD;5JBh@#x73yjSv+{MGUetJL3Z#?X3sd;N4`{e<~Y+g=F?9w~kx5dV~%r zuXt6~UpXaEJ<=@Q66v@Z$Ng%t)BOD!f$&u(u?>V6GdWl>$>OZ=hzU#-B$a7kb57

7?i{(~^+r}JI1m`=u+k2KJmgS_nlVpTcH^v+DQ`V+VZVDg#Q zAHve@VRdu?seg^4LXa_x-^9-~RX7X+b{l_;RPkS?DnLrLN^VOm1_-Q#LjO$`RJcu- zC?rW-z7~89N@I5ivO<2cWJGMFDhN<>gupEU5C1W8K_&}vWEbZ^6ekZFV9k0sWrR11 z928U3W|@5vfU_#FOQzspi1q2q3f{am66@MQ?0w_RR*@9uDQk#PEZ;paOL&H1B5#v-)DdZ8+|B5jXzJa+##{C|Y zJ=+x$i2n9d9xVur@u;om9dUcVF_uDBeVBBjA)}_$V{dnEkV*PbTY!KjEjsot>55xHp5X@)We~-Id-lHJ42i`9X!- zb8n*^vHHFt7$y&ob(x}=`rsvH?x4?sH@^$7DS(dyjiNv@psk2NUPjKnaxm0XDPMJ) zt<`3l#akz7APbl#s<+ssmVbyp0z2Xgxoqo)WyM!2WLL^vLgyy!??E!6u#^~ptpF;XPtx__#Vj&!}_3GyG4 z5c=I7P^dg{Lt}!eRAuv0o>Hi=Wwl8`u{Fs6?A&X0lisr8-lPDXw2=^=icN(tAo!hY z%d1ea=Ck{m(F+lU#b-4h6_z5hFSR(xG7B4I+`Erc9$!Ub{47YFHh$a^%h#79Lzu{0 zDikV%p%yE4KJa+*cV3iRbm%MTzeIP@xa}miX*uY>J)r-2?MG5digEZ3z2No79T64U ztF3Kg@g}9-b)@Bh6x72IDV;;oBNEiO&RBjz3Vbo5L_;_t9LWc;x79cN^>k!5s);lw zE5T>CH!th`PMZX9Qx}&y8@4Ni`=^T`O_$v>CESCg{~Y8|aCvFDWeYU~En{v$&7oF{FD!IZeX;A*cijP_y`wjJP5Y-jqt^ z8&;`-8$junWEP-$3kkL3A?R!n749H0-W$`^{`%za)Q%w_*3hq4eJ2rXy()Zg;WOD^ zrtBXZ>!ZPJ19!jpv|_N|5gE?oJtD=7$nxUTgobVf|gJiEht{0r>PO>hM1ornEU_ zkk!B5N=q~SkNwY#_)8_z&O{RbZueFW>XtKt%xe9W;nLib|^% z@Odq#=M|dJ+O+XraH^J?1CkLTeLlw^ki&88{UYn516FElqiSu%lcxzm!jj4O?(g4j zgA+{!|1@8cy4W+F3Z+-;MkQP*QK4=vA4>Q?Zu=qxmZ z;q@QqV;V^m7k*fLqo>VHe>2uQvXakLy-fdzPeYJu-51#eUyX5!6#V0WM z;z>7p*s1yh`G?ug{*JY>!xA|p_9IL%=q4-u*u3zg17*!V5~UBKxnP*ejqDZAd3Cw@ zQlvevAy)I1;=Gv8^%m~V!crO9NMO8EhW=KY9`dQ!^UWMOt5V>GXp zTO6-PdXb82LtRy7Ylv-i3IfFnLGdY*rXY-dmo7%0&a|3Z z4<-S$(ZClS9w)v}_Fa6D)fo9WY~$Z45oxZ?pCai9Toklnj&dKTD%?lWM4-7jqUH1M z-P1whUEynGSuZSp%8jsk)OF7YYsf~{Q+?o$T{#&nU)epk{Zf-2!8uk$4DEG!iFnp& z^kL4z8ukX~mTMiML7?Z&M@(P1N$cM`fKO<0{#?d->k0(h4mn~`GJ&BToD*pM{LC`tZ zbj8+y%*KXS7i^iPP1E^n{Jo*gaymUEE6g)TR^JfRW=XukTIOQ7MdTxNMJgit=ip5% zI=L84%#mtL$HL)*%&cn%3`zsm6#W|SN;C*lrB}Zl&|e+PQ?xkNQKDGDwHn$Tqjo2Ki&|jMBqkha@A6sM{RatJo4qnDIbLe#D9ba6t!U?%5lc` zKgtVMp}wf<0dz%yN4SCQ@!Beo)-k=AjrsC3(ozHpNeb`KKqdy^Vs}rr?z4IbBeC9> zd3QmVX~6ewh_;O21O`JBcaB)_SgpY2f%D1kL zR?Jldnf;%@1+n~Mx{()oxSHhG;YIE;ogRDlm;NOu?5dQrBRB7U^Pq>DK zvN~_eEMGOFdf6<8pZIM>(6E>w!|t>((MExTL1vEWH#(w^qr4OxDrhn5#9}e3g|j*% z+#MwJJfY2DJy-gh++6Lffl1LFr_t>z)i%sUy}y6{$NFc=d`uOiEqez1E=Erb z)??fY^+tBP!zyj}?Wn}+a5JN<^lJjl8Nj}X-A*&A`vwA(Ue}|c`Ow7TZw|*z-)RB& zbI?I631aGT-H#f-;kY`=|tJY*>Wb67rJZ3P>s#!F+W^LVnYl-KwLa)y+YFo#rrU~G zs$u;BHaC0f{rPl0i#}&BcI=XUsaQ!e`VrGW47JSAYm)l6u;*xC8`y z%qG}hJTNFdS8mRo9)darLTeE~A1@5~B^d8ZN5q5S_D1;k0@wKH0=v?6S;nad=8M^= zI%Pdr8Pw9pOX_Aihm|A*I1|752T<38NIgh2FnwGwvC)^>4J^@*Oqopj31YpN?hVAv zjP08qy8X=VwR5uYt&S2N{eHZ2mPj>L2Nz~B#D|J3%_Iz4`l3NtwSk5aaHf(6X(KP`4h=h^^ygn?DBAXi<2@0c z5ZczKgqFA0I2QX@tRdDWi>}(Keg!pgm>=~;eM%He*KzA{=5ei9dzwKAdQ^>P1PDA+17{m+)GHa+WZy8sp z7co^Wp#=>FpQ=^aIu#FtoxU~dW{^Xz#HVRmNraDyxhXe z2zNZ&@96Iij4Fu~@MFhBAY@x*O)GYTS24Qp{O9R-xORRP4Gc7eMTvkkZzqd-AD6gO z#BrM(UqU(8Th2a!9C)a=t2x$uW@QeKl#ab!i26h~3I!i3D!!*2ASkaKOWvw`+5WaE z|L)SRDQ|j3utzOIjx6C%DRi8}i6YM3Cl14?#!ZM&ljw7IW8ff*pnKK4akR+pdK_+6XJjfJdlX zG4SxF#SE#L_50({qFK58fqX*JIf@vCkvU&E5GcK=mZNDkVAH>O_gmGaj7YTrwX3iU zZ4dc?vTE0YUt3UXk$uTvWWSN76Gy6>7mnIj)t~C`INrN)cAVr8Z(_2J(~1yXJ(fza zIW40JDF7<}-KWMOl>E1@lT}yVcVo;io@2)wW|+UT&>TCG;|94z`NMMhl?+4ABxP=^ z#ReX0sm;jvxkTJHL+)vY?R?s(CHf%_f7G_SbVR1lNK58@iLh|qXqcf%`6P#vU&VHP&LyRB}n@@9lGSsJO(2CUx56G!q}5A{rKEMTr>o2F{5v&J0NPUb4BLAb{>cH)UE{@7f0f zooEi9plz5jcZN~{3ztGP-==4f%KnQ>{0ZL22N@r|$4%pWsghin*!K7x8zlETGnHa3 zj?|yl`&X{MpCG;9Rsxh0M2pWZ(4D3$t(P2HO53awj1A}(CrXPTV}m@%eFw7puo%dK zq@Z)om`+;{>_IQu>9dbZ9sw2zCu6lh`mve_ifBtiPFgtq+QT#{yOu~Sf*?b> zIlX`5s`}YZ)b}PDSgRUk=qsPOc+2`V&zcl*4CF^L!9P>CGTkdb81iEMwx~~akRsp8 z1~Z4-js?54ff|%8P(r-KE}u?6l#~Dcg6!b}T?OplpJTcCi+nL)F?8dwNF)#o<~GW; z1NH-vQ3;FE6oNuzTLZN;K?@=wy9yM+55=q|ss>-s{SEKh&Y#)X6&&i4_T#I{G|y2_ zxahYuG{tdro8Wz*ATp4MOV^&YuUaZF-U@Xetw=unQ)fbEp_Cc>;6onEzlS=Y6DpV) zX*k4TLLRcx44++V-K|EzOJPU|zaeP*)x{gk_AFtO>r1`~w+W3AkIL}dM*n<7-)UhA zmnbn_uP=^BYjpeA(xIMma9$kz6{=>T|~zrd8f_1X~F`u7jf}=REi%Y zaQyt-0;OOQBPdU`H!JV>9ITeZWqPeK62?t_Nt!N$c7HM&n!@8tc7Hb-8diowYmM3V zibNhcHKu0ejhlHm{|V>ZkSoc`s?ucXyONXFF#A>ly= zzf(W5nlVxmX?w5{vnUv+a~I!&yu{?3IZwyyc;QWqguCajwT`=)o}^rZsw#XPO*%!h zX4q~J=RbtwH2t2u_B)~50;GOAy}cgkcNW55McDqid3xz-ZpJ$?YQbuch6TkU2-Ry= zSNpLD=>t6qu;GTu^1`M78^m&15UphCd3`-DbnPbE(Go;!ee<4CfaN4)Bsm~NO`U5! zIzIvPlIaPrFQ6DducceOm|6Lr3`OPWREmGx0NLGmLh zV)JB1cE{NZvv|auJ=H~$t;vSR?->_{x|MvmoWUwvDBww&dDvbs%_@xajtHxx%9_Oh zmVtgLyK-m0;Z-#EFn=}S`~2Op>Hen^F4I*V8{Zd?Kyg6OGAq;Bwa8#~u1~#gC4k0P zgzD^}^|pL**H0NVRu?G=qL~IAi+M&d%R{CNqrIoMtYP0F!ey$#e9PlxM8ar$0Fiba=qd&Z;$C9XHt8^R>BdG_OS+MI zmVusSxRcj8+j^)y#O$^S$5f+zBA=-}2d&I!vO(?B4Nh;NGs#!Wn~!k9zT4C4+u++a zov;a;-L&R@&XO5JZR6at+iK`a3-Pa$qUq!of*Ay1GvHkog>5RH5>K z66lus0t=SFN4Amb`Aunwoxt1E=Skn^kXE$SM(s^vKc^eWD)hc648rxE?{S){(k?0R-@Z?B8htE|{N#R_+87p=XfrWEwocvACawJAKFyczpM;co2x zFGVYy;?~!YBRi)i;(z40#bfGh!7D;eO0G`CDg)Eno-1eUU00n#Cg)mLy%_WDA9on- z_LAs}A`Pek9?t7NQ|TZ=97W?W8k|n`#bqkS$WX|?s1-R2I=gw+I(eQ5!9s~U`R%69 z*%_y8I;l}R+%#F~q?2~Tspr-2aEx!$j=!?-{!{}~%3$fGDo$pSW`o;$43E0;R9p+c zJ_jbrO)(HWX4(xa1NS}3k_nTD7+MhT_X*4(A(Rfmv{#EclXu+jJnq9Fl{u{oP!Fo~ zAfvW)qB>;JPqZeV#3KutpVMqXUYTLGaJR?xF0sO%DUCGPavQg)Vo1ksx}L%2Zy*pI z!&+A3bLe5Lb~Cuc5BXcH(gK)R_vg0=t80M`f%i`^WMIQGk*{qx9=PJ=%%!_`AeLDf z&fJ1TuyRyogM)2a%MFY4((A{vF_tFd)isOq0x#@^i-L;o_OD}Z&o@t98pL#UDclBy zd(RtGia;kM9=c1+Qwb&IlUZU8PN+*iM8KS95z^b|lOGaL$dB6X9Qg4*zvP^lyT><3 z{Sn6VoeX4va71Ft(9_p)KT*1QI!9)SD#irZYfCFOxMTF=b-g%a_qv*>%p&jBA4b?` z%3)>H?FhD{^&&sg2}(utIpq2PXhoZcY7#{MLj*+}^iWIPOj_)^ZG@(7E)Gn{3 zw*O4Abp&%9Mn}Hz9&`5>_3|*!_ZgSjvLKLNPyOH;xdFpa{X9k6b$vJAW%F&Yzzewo zRB!>S-NB(9s4IQ_$2uh~X3Yij8*lk7yCyXB!v1Sd$p=wh^h_}r_IMw=MAzUx7FKx2 zfcp(|JA|B|(mnksA?ic>2l!(C)tPt&oOm<9oz$STTt}^lRA1kQvNZK!`#`8f1lvQL zD4c99B-@|%t|GnZY_rK*|Do=Uq2cP6)|SPC-25791T<8V4@xCAI?*O_D~yX{AY5@Dk0d}CJ7cQ zdp5AweYTZ;XiLPfHuRGU2T2>cp(^nvWx|UW4|w0&6O7?M)OL`^!XK(x@s^Z@OeT7e zJ9$w%Y_E^ z!+-l8k$C(4mU7^`(*1Bgni=fsRcozPe}}U+hU#k^YiM%cjDcAOF1W^`e^`1t$>$6H zwcZg>{spgfHRnc)z<%<4oZeDFO0NyS(BUq0zi2 z)o%LGrbADlZ^eVI%kLW|I31c}pFbNzGk=tTL3EsazfXw_i1##Cz*CHgkD(GAc)Z`x z?8^0vAo~t%^FR!Lejq_{OGIr;|2Q=%8xD3{P4mIOzi*;dw2PVW_?7!obc$-3G7VR1 zT7`P@<1H@H^2`U>f}!mNK8u^Z+||Icm-#CtY1mj3d|4*p3f<_r><+A>dTglf5v_;1 zb^@7(R;EPz5vek_Uk8Ilc!xM8wUWdF#xfF?n+R8Qb)0H=3jzwryFqDhq;8!U50bXO z`$%bTOP9@l#5^=r(L@WkHOvPrvV{S<%RkHn5oN4Ls`u6(P&?*gfm=ehj&_>+yG1z< z`)f;)3u$X!*KKX8fN5^SFy4YmE0p__MS}x9aRSadq|8{OtA}kx{OW?VG&=Cu#=FvS zH14><1d0_3JGy(C6w0eTYN~}>DwSvSseKaUf5|%A0gFuS&^?SpVijY6J_93rpHy(ek?p+w7jv_OJK9qv0<1vx2f7SpTz>ckF$4g zgtmY;Ryvm4E8Z{Ur6KotsTlT$owZwLtx#tKRvEtd9?Q0aj;B{6KhRLUFd z=$Q~&)dZ@kw`tNB^kR4KLw1yOWhe+Z!;wH$3@R?>YVlHuNnME=zw&5{4CA zTF)U+l(PJ!Sb~mI-0qqc>8LAOmN6kPgjIXdcI0c?!*71#AUpdd)^9r2EpyO(muAs?ohmN6UFE?mu(}+(g6T3%N~74-EhG5aZ>Nb|Q@I9S zMTwx<5MhW)nOWcubC3hPe^AOA(8S&r z?g|!D|C0qu+jvBCmV6P!cR=$2OJzR72}jIub0fKZu^8D{>{&2Yo+#CvkG0F>hpJ-0 zcKgKLm|g4-J}5RvJ?tpPNBd-N26GXVrvJSD_hL5nC=d3{Jat{3cxvn^*ky z1uCG_*NNM;k(tG!{2$&UJOhu9!$(|xf&G(<$WPJD2XYzK++Vv7wG5b1m>I~c9ep(@ z04!?;hOd@d3(>>EG=|Jx;mskRRQtXd+Xf>La?+P3KH^8#Y1DUoV=*@bv!S6mOTNdP zd#YDe0^Is;Gg#d};f3pvjIFau9kvBo>YKPsFNp9GLfpDs6_`uege zxDpELFq7o8%ML}7yrP{TmmrIw&Im~{%UQBtvLv;5h`POas>M%U&&nG3%Cc8P`f3PV zJJ<@#{x}@7v&2B04hyBNxp>l(seas9%&?S#aQC3cg@wAlx#%Q$Wp!*RGA%~oJPyuK zUPEXlT;Ak~x2Qx(#(t7BodT@;g>rt4a^K+U9{Y)bZD1TdQHZ|z&ZnXGExaBmefS3S z?G}r1{6eZXSoXX~G^dA1O-}KEiN7u(2I56ny`&{n`;~inC;X(DDa$)nespReVDey30BP(OkwqMk;NahL~2n$yzCL;U;jqxShI;$@X3249yhS>7ClrY!YAA@(-Q z%68j-l{)e{o&X9iD87|%x*HYq@IAJSVjl^fvBhiLdtt0cV7=%8#&+OdS^%2za<8c+ zae`Q%OjNm(31Nn2^>*M5#WLW%vRqSlg0P3nHlK5@oDBlP%;4^noK68-Cxty9GQlru z--MIl(2KL1*k9n>~CAx*Nlbj~1rfu);gV@C{`JgWfORpdL4yjPq$Ws1k4^>VTp-?5zi&n~E#-#TBZW+hucFI6nGg#GGPpS0F*>Aclz6ga=bl&{i| z6I~WUoPeszsk?{R?Tw;JLz6z1QTuHsY05WQfNAab*VP`2yEhG-)1!bq#pxYG2|cb4 zsez^m!rMR5Q7!?N2F$Y}FS?s+Rrv+6$E&&og>~s6;i0i~d<6cXoO@SVGUuE$Yptxk ze)=9dSdT#BkWVm0?mX_ z7wp9{QJZr4-i3OU`EwP?_)_D^m2`FOTqF8i(-vD%Z=8fpRwIlRKwV+{7%j~>43xi& zwM~e}49ay1n!+elnd4JJR|WM6^~Z}3(QIJc1gOu-QPUKqq}K2mw=WrfJ&4#Wa%&0) zG-eM{7FQs!X$2iIzfFVTOs$m;!$m05^YV+};tE&beieBpJ^xpMx5R@VC3jvMw;b9= zn#Ysx;a_4c+b2xV!bk=N736fhI9hHWV(d(1*Rl7{JZn3Dv15Pu^WccKO6B$(5`HM> zM2PSZXIuE@|5Wz-gbS~j?gWvbce`}gk#mK{op3fe<4QcZ>_w`zc^2N%bvwlJ9qEAb zTPdlkeaV|H+^*>dg^t-=$DP?8@+D~XhTFZ+%He~%ix+Uqp}u6Zs{{+DF_E|{k~oq% zP!M^)Qt@`1V&yD$o306>xpFOdFyBUyq;gVe@?||WHZKP`7>GrCrD!Am4L@b%O=g{X zrR}hYG(R#JdiG$Vy_PI5uOcU*zhAKfI=%A{7W)oNv5b%MOZU%--SR=o^oZHL!%K~m zZ0xGfM2nbU5D=f2D+8)Hnl5DBk$=c$V?Z6MBB^OCnEd5S4`=0m$&1wU%+Rm0{02NN zFr%?NO^+N?YLD%q?WBr*Hjy8v-Cabn!!Tf*Jb2g-Wdc0auF{Yk_hrA)ZrYseZG`X- zO7kWE@4y`c0! z*p(c}$nvhzL`I|Fo#cYlIuKpXqb6pO|JxKTUZxmjaO3vgdNjNBqSxi~(oBxL#+j|8 zBY>7^OK84sbVo_WgMnRiqiB{imrCR{WEqg|HXkgwfFzhQJC7pbVP|X0CiK1Z)N?in#18oCvVg6LefT6c@Zu;vP2I%X+d|* zge8=%u@O;nFrWM?i6Hx1=k;3+ug3oqRMHGeJ$s^*(>!kbmg9y4Am2zD>n{P6$Y`)N z*t^&xA~LYnI#v3&Q&f8FK&K#&yx4d0MAGUu(UYt)+70N_?YTt}i#b_ZuLdt~4)$^RGU z^!ubZh+OI#EmJHQ1W*roz4ZhjdlI4?$*(uoz*3g&#CSNQi8gaf$)f30 z%6wj+fenWIb`)IqTVtVTp|{d5qelen{cR#n_#Y@$s_;KhD&oQ`fHjl=@`0!ozJJ~_ zbNz9qPzQG^vwrSP^bk9{47mJZD7&Ak; zr>xp)qc;W`Wz_rA$``d64-98#oNx60*7xj1sY{1aH-A1y1ean)WrH!*<| z>`CmvN&_%`ZGP|=_Y8{2qKgGgRaI5pSEGqe5V)v89ODY~^pOUL_AN1sR!LX{=_ou% zArw}B;y7*6dDd=6e|W(*b6SdF$d78J^%wH%E`T&q?$nt8qe>y858!Kq)H3=2zIFgW zs>QT#zm<9a`Oo>hp8)L#U}GDbo2%vR_fiH1&+zl8`pYV zlCW%wh>E;xtin7hUc+wR`yJsT4+19KY6ZaS8T4xY6^*o46AHR5V1!pK?Ng~_*P{fD(QjEWMy|Zd?=BXoaH}j{rNZ$55FhK3SJJY%>dA4_~mH-D)l4yL$G_6csO_%26w}J?IMCHBl5eb_JZ6#L(pALn7AN!-r6~j4bZz8~#Zm1Cj7B{zhjcQ&Q&< zK+oom1pg~2V|LYFaWv5Wo9|13L=MT-HVp*N`{!$b5#zswN+z$O|9=&5Kg#pe0=UD! zTg1OnF8WD?j8G*}L$LEVc!5#(`+}0Uxn`BaZ6$5TdOfNED}wezB;Fp2$KWxBVZv z6q;dISC=P1ez0D0EiuTLcwHz1SIJ?l@5*BJgS zsC2Flx`uzKoQy_mKQ5Thmm2?2gNO9L5jg2FIcfiqh2bB9ivB+j Date: Wed, 21 Jan 2026 17:02:15 -0800 Subject: [PATCH 2188/2255] fix link --- docs/build-insights/build-performance.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index 853b6f7a01d..ab2e82933f3 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -1,6 +1,6 @@ --- title: "Get Started with GitHub Copilot build performance for Windows" -description: "Learn how to use GitHub Copilot build performance for Windows to analyze C++ builds, identify expensive headers and templates, and automatically optimize build times in Visual Studio 2026." +description: "Learn how to use GitHub Copilot to improve build times." ms.date: 01/21/2026 helpviewer_keywords: ["GitHub Copilot build performance", "C++ Build Insights", "build time optimization", "header file analysis", "template instantiation", "Visual Studio build performance"] ms.topic: how-to @@ -8,7 +8,7 @@ ms.topic: how-to # Get started with GitHub Copilot build performance for Windows  -The GitHub Copilot build performance for Windows analyzes your C++ builds and highlights expensive headers, template instantiations, and functions so you can identify and fix build time bottlenecks. GitHub Copilot is integrated with Visual Studio. +The GitHub Copilot build performance for Windows helps you make your builds faster. It finds expensive headers, template instantiations, and functions and can automatically make your builds more efficient. GitHub Copilot is integrated with Visual Studio. ## Prerequisites  @@ -108,7 +108,7 @@ If you choose to grant elevated permissions, the Windows User Account Control di The dialog asks for permission for the Windows Command Processor, verified publisher Microsoft, to allow this app to make changes to your device. There are Yes and No buttons. :::image-end::: -Denying the elevated request will cancel the Build Insights operation. +Denying the elevated request cancels the Build Insights operation. ## Guide GitHub Copilot through the process of improving the build time @@ -138,7 +138,7 @@ You can access the GitHub Copilot build performance for Windows in these other w - The **Build** menu: - :::image type="complex" source="./media/build-menu-improve.png" alt-text="Screenshot of the Build menu.""::: + :::image type="complex" source="./media/build-menu-improve.png" alt-text="Screenshot of the Build menu."::: The Build menu option Run Build Insights is expanded to show Build All, Rebuild All, and Improve Build Performance. The latter is selected. :::image-end::: From c1c9838ad8dfc1f356b74e1d941e1e3dc38c5337 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 21 Jan 2026 17:47:28 -0800 Subject: [PATCH 2189/2255] edits --- docs/build-insights/build-performance.md | 43 ++++++++++-------------- 1 file changed, 18 insertions(+), 25 deletions(-) diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index ab2e82933f3..d5d9127b5dc 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -12,21 +12,16 @@ The GitHub Copilot build performance for Windows helps you make your builds fast ## Prerequisites  -- Visual Studio 2026. Install the latest available version here: [Installation Guide](/visualstudio/install/install-visual-studio) - MSVC Build Tools version 14.50 or later. -- An MSBuild or CMake project. +- A MSBuild or CMake project. - Windows 10 or later. ### Before you begin  In the Visual Studio 2026 Installer, ensure the following components are selected in the **Desktop development with C++** [workload](/visualstudio/install/install-visual-studio#step-4---choose-workloads): -- **C++ Build Insights** -- **C++ profiling tools** -- **C++ CMake tools for Windows (required for CMake projects)** - -:::image type="complex" source="./media/vs-installer-options.png" alt-text="Screenshot of the Visual Studio installer. The desktop development with C++ section is highlighted and C++ Build Insights, C++ profiling tools, and C++ CMake tools for Windows are selected."::: -The list shows C++ Build Insights, C++ profiling tools, and C++ CMake tools for Windows are all selected for installation. +:::image type="complex" source="./media/vs-installer-options.png" alt-text="Screenshot of the Visual Studio installer."::: +The desktop development with C++ section is highlighted and C++ Build Insights, C++ profiling tools, and C++ CMake tools for Windows are selected. :::image-end::: ### Verify your GitHub Copilot subscription @@ -35,18 +30,14 @@ To use GitHub Copilot build performance for Windows, you need a GitHub Copilot P Verify your GitHub Copilot subscription on GitHub, and then sign in to your GitHub account in Visual Studio 2026: -1. Verify your GitHub Copilot subscription: - - Sign in to [https://github.com](https://github.com/). - - Select your profile picture and then [Copilot settings](https://github.com/settings/copilot/features). Your plan type appears near the top of the page: +1. Verify your GitHub Copilot subscription by signing in to [https://github.com](https://github.com/). Select your profile picture and then [Copilot settings](https://github.com/settings/copilot/features). Your plan type appears near the top of the page: :::image type="complex" source="./media/copilot-subscription.png" alt-text="Screenshot of the users GitHub Copilot information."::: The Copilot settings page shows the type of subscription. In this case, the user has GitHub Copilot Enterprise. :::image-end::: - 1. Sign in to your GitHub account in Visual Studio: - - If you're not signed in to GitHub in Visual Studio, open the GitHub Copilot Chat and follow the sign-in instructions in the pop-up window. - - Select your profile picture in Visual Studio to confirm your GitHub sign-in status: + - To confirm your GitHub sign-in status, select your profile picture in Visual Studio: :::image type="complex" source="./media/vs-account-authentication.png" alt-text="Screenshot of the account dropdown in Visual Studio."::: The account dropdown shows that a Microsoft account and a GitHub account are both signed in and active. @@ -68,13 +59,13 @@ For more information about template instantiation on build time, see [Troublesho ## Troubleshoot build performance with GitHub Copilot -View GitHub Copilot build performance on Windows via the GitHub Copilot chat pane. Choose the **Agent** feature within the chat interface: +View GitHub Copilot build performance on Windows via the GitHub Copilot chat pane. Choose **Agent** in the dropdown: :::image type="complex" source="./media/copilot-build-perf-select.png" alt-text="Screenshot of the GitHub Copilot chat pane."::: The GitHub Copilot chat pane shows a list of agents to choose from. Build Perf C p p (optimize your c + + build) is selected. :::image-end::: -Select your preferred model in the model drowpdown menu: +Then Select your preferred model in the model drop down menu: :::image type="complex" source="./media/model-select.png" alt-text="Screenshot of the model selection menu in the Copilot Chat window."::: This dropdown lists models various models like GPT-5, CLaude Sonnet 4, Gemini 3 Pro, and others. @@ -86,36 +77,38 @@ Instruct GitHub Copilot to improve the build performance of your selected projec The GitHub Copilot chat window shows @ Build Per Cpp: Help me improve the build performance of this project. :::image-end::: -If this is your first time using GitHub Copilot build performance for Windows, you'll need to enable Build Insights and grant elevated permissions to collect MSVC compiler traces. +The first time you use GitHub Copilot build performance for Windows, you may need to enable Build Insights and grant elevated permissions to collect MSVC compiler traces. ### Grant additional permissions to run Build Insights -Visual Studio needs elevated permissions to analyze build performance. The Build Insights tool needs to be enabled to start the build performance analysis. Once enabled, it stays enabled until you disable it. For more information about these permissions, see [Build Insights needs additional permissions](/cpp/build-insights/elevate-note). Github copilot prompts you to enable Build Insights and grant elevated permissions: +Visual Studio needs elevated permissions to analyze build performance and the Build Insights tool needs to be enabled. It stays enabled until you disable it. For more information about these permissions, see [Build Insights needs additional permissions](/cpp/build-insights/elevate-note). + +GitHub Copilot prompts you to enable Build Insights and grant elevated permissions: :::image type="complex" source="./media/build-insights-permission.png" alt-text="Screenshot of a GitHub Copilot dialog asking to elevate permissions."::: The dialog indicates that Build Insights (vcperf) needs additional permissions to capture MSVC compiler traces. There are Confirm and Deny buttons. :::image-end::: -Choose **Confirm** to have GitHub Copilot proceed with the request. A Visual Studio dialog then appears prompting you to allow a one-time elevated request: +Choose **Confirm**. A Visual Studio dialog then appears prompting you to allow a one-time elevated request: :::image type="complex" source="./media/msvc-elevation.png" alt-text="Screenshot of a Microsoft Visual Studio prompt requesting elevated permissions."::: The elevation prompt says: Build Insights (vcperf) needs additional permissions to capture MSVC compiler traces. Allow this one-time elevated request? There are Yes and No buttons. :::image-end::: -If you choose to grant elevated permissions, the Windows User Account Control dialog appears. Choose **Yes** to grant permission to capture the MSVC compiler traces: +If you choose to grant elevated permissions, the Windows User Account Control dialog appears: :::image type="complex" source="./media/windows-user-account-control.png" alt-text="Screenshot of the User Account Control dialog."::: The dialog asks for permission for the Windows Command Processor, verified publisher Microsoft, to allow this app to make changes to your device. There are Yes and No buttons. :::image-end::: -Denying the elevated request cancels the Build Insights operation. +Choose **Yes** to grant permission to capture the MSVC compiler traces. Denying the elevated request to cancel the build analysis. ## Guide GitHub Copilot through the process of improving the build time -As you guide GitHub Copilot through the process of improving the build time, you will be asked to provide permission, as needed, to run tools such as PowerShell scripts: +As you guide GitHub Copilot through the process of improving the build time, it may ask you to provide permission to run tools such as PowerShell scripts: :::image type="complex" source="./media/terminal-permission.png" alt-text="Screenshot of a Copilot Chat notification."::: -The prompt asks the user to authorize running the command: ls ../src/ in the terminal. The Confirm dropdown offers: Always allow and Allow in this session. There is also a Deny button. +The prompt asks the user to authorize running the command: ls ../src/ in the terminal. The Confirm dropdown offers: Always allow and Allow in this session. There's also a Deny button. :::image-end::: The GitHub Copilot build performance for Windows may go through multiple iterations to find the best way to make the build faster: @@ -127,7 +120,7 @@ The message indicates that analysis is complete and the build time improved from When the analysis is complete, GitHub Copilot displays a summary of the changes and build performance impact for that iteration: :::image type="complex" source="./media/build-summary.png" alt-text="Screenshot of the build performance summary."::: -The summary shows a before and after optimization summary indicating build time, the top bottleneck, and the top 5 headers that contributed the most to the build time. The report shows build time dropping from 110.7 seconds to 34.1 seconds. It highlights a 69.2% overall improvement and faster incremental rebuilds after enabling precompiled headers. +The summary shows a before and after optimization summary indicating build time, the top bottleneck, and the top five headers that contributed the most to the build time. The report shows build time dropping from 110.7 seconds to 34.1 seconds. It highlights a 69.2% overall improvement and faster incremental rebuilds after enabling precompiled headers. :::image-end::: In this case, build time dropped from **110.7s to 34.1s** after enabling precompiled headers for costly includes, delivering a **69% improvement** and **3.2× faster builds** with near-instant incremental rebuilds. @@ -162,7 +155,7 @@ You can access the GitHub Copilot build performance for Windows in these other w - Build Insights view: - Select **Improve** from the Build Insights diagnostics session view to open the GitHub Copilot chat window, which prompts you to optimize the build performance of your project, shown previously. This button uses data from the existing build insights trace results and doesn't trigger a new build insights tool execution until the current changes are processed. + Select **Improve** from the Build Insights diagnostics session view to open the GitHub Copilot chat window, which prompts you to optimize the build performance of your project, shown previously. This button uses data from the existing build insights trace results. It doesn't do a new analysis until the current changes are processed. :::image type="complex" source="./media/insights-improve-button.png" alt-text="Screenshot of the Build Insights view window."::: The Improve link is highlighted. From 0d0208fd11e95cdedb6614f92e235984c08ac173 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 21 Jan 2026 17:48:39 -0800 Subject: [PATCH 2190/2255] add version --- docs/build-insights/build-performance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index d5d9127b5dc..39263f721a1 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -12,6 +12,7 @@ The GitHub Copilot build performance for Windows helps you make your builds fast ## Prerequisites  +- Visual Studio 2026 version 18.3 Insiders 4, or later. - MSVC Build Tools version 14.50 or later. - A MSBuild or CMake project. - Windows 10 or later. From 2ab5e575d9a975b209e15a8db593741a151c326f Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 22 Jan 2026 10:38:24 -0800 Subject: [PATCH 2191/2255] edits --- docs/build-insights/build-performance.md | 34 ++++++++++-------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index 39263f721a1..6c46dbda93e 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -38,7 +38,7 @@ Verify your GitHub Copilot subscription on GitHub, and then sign in to your GitH :::image-end::: 1. Sign in to your GitHub account in Visual Studio: - If you're not signed in to GitHub in Visual Studio, open the GitHub Copilot Chat and follow the sign-in instructions in the pop-up window. - - To confirm your GitHub sign-in status, select your profile picture in Visual Studio: + - Confirm your GitHub sign-in status by selecting your profile picture in Visual Studio. You should see that your GitHub account is **Active**: :::image type="complex" source="./media/vs-account-authentication.png" alt-text="Screenshot of the account dropdown in Visual Studio."::: The account dropdown shows that a Microsoft account and a GitHub account are both signed in and active. @@ -60,19 +60,21 @@ For more information about template instantiation on build time, see [Troublesho ## Troubleshoot build performance with GitHub Copilot -View GitHub Copilot build performance on Windows via the GitHub Copilot chat pane. Choose **Agent** in the dropdown: +To start GitHub Copilot build performance: + +1. open the GitHub Copilot chat pane and type '@'. One of the options is **@BuildPerfCpp**. Select it: :::image type="complex" source="./media/copilot-build-perf-select.png" alt-text="Screenshot of the GitHub Copilot chat pane."::: The GitHub Copilot chat pane shows a list of agents to choose from. Build Perf C p p (optimize your c + + build) is selected. :::image-end::: -Then Select your preferred model in the model drop down menu: +1. Select your preferred model in the model drop down menu: :::image type="complex" source="./media/model-select.png" alt-text="Screenshot of the model selection menu in the Copilot Chat window."::: This dropdown lists models various models like GPT-5, CLaude Sonnet 4, Gemini 3 Pro, and others. :::image-end::: -Instruct GitHub Copilot to improve the build performance of your selected project. You can add extra context so that GitHub Copilot can better make suggestions to match the needs of your project. +1. Instruct GitHub Copilot to improve the build performance of your selected project by typing something like **Help me improve the build performance of this project**. You can add extra context so that GitHub Copilot can better make suggestions to match the needs of your project. :::image type="complex" source="./media/copilot-build-request.png" alt-text="Screenshot of the GitHub Copilot Chat window."::: The GitHub Copilot chat window shows @ Build Per Cpp: Help me improve the build performance of this project. @@ -80,23 +82,21 @@ The GitHub Copilot chat window shows @ Build Per Cpp: Help me improve the build The first time you use GitHub Copilot build performance for Windows, you may need to enable Build Insights and grant elevated permissions to collect MSVC compiler traces. -### Grant additional permissions to run Build Insights - Visual Studio needs elevated permissions to analyze build performance and the Build Insights tool needs to be enabled. It stays enabled until you disable it. For more information about these permissions, see [Build Insights needs additional permissions](/cpp/build-insights/elevate-note). -GitHub Copilot prompts you to enable Build Insights and grant elevated permissions: +If GitHub Copilot prompts you to enable Build Insights and grant elevated permissions, choose **Confirm**: :::image type="complex" source="./media/build-insights-permission.png" alt-text="Screenshot of a GitHub Copilot dialog asking to elevate permissions."::: The dialog indicates that Build Insights (vcperf) needs additional permissions to capture MSVC compiler traces. There are Confirm and Deny buttons. :::image-end::: -Choose **Confirm**. A Visual Studio dialog then appears prompting you to allow a one-time elevated request: +A Visual Studio dialog then appears prompting you to allow a one-time elevated request: :::image type="complex" source="./media/msvc-elevation.png" alt-text="Screenshot of a Microsoft Visual Studio prompt requesting elevated permissions."::: The elevation prompt says: Build Insights (vcperf) needs additional permissions to capture MSVC compiler traces. Allow this one-time elevated request? There are Yes and No buttons. :::image-end::: -If you choose to grant elevated permissions, the Windows User Account Control dialog appears: +Choose **Yes**. The Windows User Account Control dialog then appears: :::image type="complex" source="./media/windows-user-account-control.png" alt-text="Screenshot of the User Account Control dialog."::: The dialog asks for permission for the Windows Command Processor, verified publisher Microsoft, to allow this app to make changes to your device. There are Yes and No buttons. @@ -112,13 +112,7 @@ As you guide GitHub Copilot through the process of improving the build time, it The prompt asks the user to authorize running the command: ls ../src/ in the terminal. The Confirm dropdown offers: Always allow and Allow in this session. There's also a Deny button. :::image-end::: -The GitHub Copilot build performance for Windows may go through multiple iterations to find the best way to make the build faster: - -:::image type="complex" source="./media/build-analysis-complete.png" alt-text="Screenshot of a message in the GitHub Copilot chat window."::: -The message indicates that analysis is complete and the build time improved from 78.6 seconds to 70.5 seconds (8.1 seconds faster, ~10.3% improvement). It indicates there's still room for improvement. -:::image-end::: - -When the analysis is complete, GitHub Copilot displays a summary of the changes and build performance impact for that iteration: +Copilot may go through multiple iterations to find the best way to make the build faster. When the analysis is done, GitHub Copilot displays a summary of the changes and build performance impact for that iteration: :::image type="complex" source="./media/build-summary.png" alt-text="Screenshot of the build performance summary."::: The summary shows a before and after optimization summary indicating build time, the top bottleneck, and the top five headers that contributed the most to the build time. The report shows build time dropping from 110.7 seconds to 34.1 seconds. It highlights a 69.2% overall improvement and faster incremental rebuilds after enabling precompiled headers. @@ -130,19 +124,19 @@ In this case, build time dropped from **110.7s to 34.1s** after enabling precomp You can access the GitHub Copilot build performance for Windows in these other ways: -- The **Build** menu: +The **Build** menu: :::image type="complex" source="./media/build-menu-improve.png" alt-text="Screenshot of the Build menu."::: The Build menu option Run Build Insights is expanded to show Build All, Rebuild All, and Improve Build Performance. The latter is selected. :::image-end::: -- Select a **Improve build performance** prompt in GitHub Copilot chat: +Or select a **Improve build performance** prompt in GitHub Copilot chat: :::image type="complex" source="./media/copilot-improve-prompt.png" alt-text="Screenshot of the Copilot chat window."::: The chat window shows a prompt to Improve Build Performance. :::image-end::: -- **Solution** window context menu: +Or use the **Solution** window context menu: :::image type="complex" source="./media/solution-menu-improve.png" alt-text="A screenshot of the Solution explorer."::: The context menu shows Build Solution, Build Solution, and so on. Improve build performance on Solution is highlighted. @@ -154,7 +148,7 @@ You can access the GitHub Copilot build performance for Windows in these other w The chat window shows a prompt to Improve Build Performance. :::image-end::: -- Build Insights view: +Or from the Build Insights view: Select **Improve** from the Build Insights diagnostics session view to open the GitHub Copilot chat window, which prompts you to optimize the build performance of your project, shown previously. This button uses data from the existing build insights trace results. It doesn't do a new analysis until the current changes are processed. From aaa1238e366502273cc3ce70f1a040a02b998693 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 22 Jan 2026 10:48:21 -0800 Subject: [PATCH 2192/2255] edits --- docs/build-insights/build-performance.md | 45 ++++++++++-------- .../media/build-analysis-complete.png | Bin 8173 -> 0 bytes 2 files changed, 25 insertions(+), 20 deletions(-) delete mode 100644 docs/build-insights/media/build-analysis-complete.png diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index 6c46dbda93e..a8d324da6ea 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -29,14 +29,14 @@ The desktop development with C++ section is highlighted and C++ Build Insights, To use GitHub Copilot build performance for Windows, you need a GitHub Copilot Pro, Pro+, Business, or Enterprise subscription. -Verify your GitHub Copilot subscription on GitHub, and then sign in to your GitHub account in Visual Studio 2026: +Verify your GitHub Copilot subscription on GitHub, and then sign in to your GitHub account in Visual Studio 2026. 1. Verify your GitHub Copilot subscription by signing in to [https://github.com](https://github.com/). Select your profile picture and then [Copilot settings](https://github.com/settings/copilot/features). Your plan type appears near the top of the page: :::image type="complex" source="./media/copilot-subscription.png" alt-text="Screenshot of the users GitHub Copilot information."::: The Copilot settings page shows the type of subscription. In this case, the user has GitHub Copilot Enterprise. :::image-end::: -1. Sign in to your GitHub account in Visual Studio: +1. In Visual Studio, sign in to your GitHub account: - If you're not signed in to GitHub in Visual Studio, open the GitHub Copilot Chat and follow the sign-in instructions in the pop-up window. - Confirm your GitHub sign-in status by selecting your profile picture in Visual Studio. You should see that your GitHub account is **Active**: @@ -46,7 +46,7 @@ Verify your GitHub Copilot subscription on GitHub, and then sign in to your GitH ### Enable template collection -To minimize analysis overhead, the template instantiation time collection is off by default. To turn it on: +To minimize analysis overhead, the template instantiation time collection is off by default. Turn it on: 1. In Visual Studio, go to **Tools** > **Options**. 1. In the **Options** dialog, expand **Build Insights**. @@ -60,25 +60,27 @@ For more information about template instantiation on build time, see [Troublesho ## Troubleshoot build performance with GitHub Copilot -To start GitHub Copilot build performance: +To start the GitHub Copilot build performance agent: -1. open the GitHub Copilot chat pane and type '@'. One of the options is **@BuildPerfCpp**. Select it: - -:::image type="complex" source="./media/copilot-build-perf-select.png" alt-text="Screenshot of the GitHub Copilot chat pane."::: -The GitHub Copilot chat pane shows a list of agents to choose from. Build Perf C p p (optimize your c + + build) is selected. -:::image-end::: +1. Open the GitHub Copilot chat pane and type '@'. One of the options is **@BuildPerfCpp**. Select it: + :::image type="complex" source="./media/copilot-build-perf-select.png" alt-text="Screenshot of the GitHub Copilot chat pane."::: + The GitHub Copilot chat pane shows a list of agents to choose from. Build Perf C p p (optimize your c + + build) is selected. + :::image-end::: + 1. Select your preferred model in the model drop down menu: -:::image type="complex" source="./media/model-select.png" alt-text="Screenshot of the model selection menu in the Copilot Chat window."::: -This dropdown lists models various models like GPT-5, CLaude Sonnet 4, Gemini 3 Pro, and others. -:::image-end::: - + :::image type="complex" source="./media/model-select.png" alt-text="Screenshot of the model selection menu in the Copilot Chat window."::: + This dropdown lists models various models like GPT-5, CLaude Sonnet 4, Gemini 3 Pro, and others. + :::image-end::: + 1. Instruct GitHub Copilot to improve the build performance of your selected project by typing something like **Help me improve the build performance of this project**. You can add extra context so that GitHub Copilot can better make suggestions to match the needs of your project. -:::image type="complex" source="./media/copilot-build-request.png" alt-text="Screenshot of the GitHub Copilot Chat window."::: -The GitHub Copilot chat window shows @ Build Per Cpp: Help me improve the build performance of this project. -:::image-end::: + :::image type="complex" source="./media/copilot-build-request.png" alt-text="Screenshot of the GitHub Copilot Chat window."::: + The GitHub Copilot chat window shows @ Build Per Cpp: Help me improve the build performance of this project. + :::image-end::: + +### Permissions The first time you use GitHub Copilot build performance for Windows, you may need to enable Build Insights and grant elevated permissions to collect MSVC compiler traces. @@ -112,17 +114,20 @@ As you guide GitHub Copilot through the process of improving the build time, it The prompt asks the user to authorize running the command: ls ../src/ in the terminal. The Confirm dropdown offers: Always allow and Allow in this session. There's also a Deny button. :::image-end::: -Copilot may go through multiple iterations to find the best way to make the build faster. When the analysis is done, GitHub Copilot displays a summary of the changes and build performance impact for that iteration: +Choose the level of permission you are comfortable with. If you deny the request, GitHub Copilot can't proceed with the build performance analysis. +Copilot may go through multiple iterations to find the best way to make the build faster. + +When the analysis is done, GitHub Copilot displays a summary of the changes and build performance impact for that iteration: :::image type="complex" source="./media/build-summary.png" alt-text="Screenshot of the build performance summary."::: The summary shows a before and after optimization summary indicating build time, the top bottleneck, and the top five headers that contributed the most to the build time. The report shows build time dropping from 110.7 seconds to 34.1 seconds. It highlights a 69.2% overall improvement and faster incremental rebuilds after enabling precompiled headers. :::image-end::: -In this case, build time dropped from **110.7s to 34.1s** after enabling precompiled headers for costly includes, delivering a **69% improvement** and **3.2× faster builds** with near-instant incremental rebuilds. +In this example, build time dropped from **110.7s to 34.1s** after enabling precompiled headers for costly includes. A **69% improvement** and **3.2× faster builds** with near-instant incremental rebuilds. ### Other ways to access GitHub Copilot build performance for Windows -You can access the GitHub Copilot build performance for Windows in these other ways: +You can access the GitHub Copilot build performance for Windows in other ways: The **Build** menu: @@ -136,7 +141,7 @@ Or select a **Improve build performance** prompt in GitHub Copilot chat: The chat window shows a prompt to Improve Build Performance. :::image-end::: -Or use the **Solution** window context menu: +Or use the **Solution** window context menu which you can access by right-clicking the solution node: :::image type="complex" source="./media/solution-menu-improve.png" alt-text="A screenshot of the Solution explorer."::: The context menu shows Build Solution, Build Solution, and so on. Improve build performance on Solution is highlighted. diff --git a/docs/build-insights/media/build-analysis-complete.png b/docs/build-insights/media/build-analysis-complete.png deleted file mode 100644 index 10bd55a02352caef4752fc5807a83412cfd5f838..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8173 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 Date: Thu, 22 Jan 2026 10:53:55 -0800 Subject: [PATCH 2193/2255] fix warning --- docs/build-insights/build-performance.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index a8d324da6ea..5152e0d6878 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -137,9 +137,9 @@ The **Build** menu: Or select a **Improve build performance** prompt in GitHub Copilot chat: - :::image type="complex" source="./media/copilot-improve-prompt.png" alt-text="Screenshot of the Copilot chat window."::: - The chat window shows a prompt to Improve Build Performance. - :::image-end::: + :::image type="complex" source="./media/copilot-improve-prompt.png" alt-text="Screenshot of the Copilot chat window."::: + The chat window shows a prompt to Improve Build Performance. + :::image-end::: Or use the **Solution** window context menu which you can access by right-clicking the solution node: From 017a47c36514fd069da729bdd8eb14414d94cc32 Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Thu, 22 Jan 2026 11:02:35 -0800 Subject: [PATCH 2194/2255] Use VS2026 images --- .../reference/creating-a-makefile-project.md | 2 +- docs/build/reference/media/create-project.png | Bin 20664 -> 28846 bytes .../reference/media/file-new-project.png | Bin 13011 -> 15487 bytes 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/creating-a-makefile-project.md b/docs/build/reference/creating-a-makefile-project.md index 437700d4a94..726dcc60c9d 100644 --- a/docs/build/reference/creating-a-makefile-project.md +++ b/docs/build/reference/creating-a-makefile-project.md @@ -30,7 +30,7 @@ The output file that you specify in the project has no effect on the name that t ### To create a makefile project in Visual Studio -1. From the Visual Studio main menu, choose **File** > **New** > **Project**. +1. From the Visual Studio main menu, choose **File** > **New** > **Project/Solution**. :::image type="content" source="media/file-new-project.png" alt-text="Screenshot of the menu dropdown item to create a new project highlighted"::: diff --git a/docs/build/reference/media/create-project.png b/docs/build/reference/media/create-project.png index 1ab81f0bfbc74852e9ad6724058f8bbeefcc6b4b..e3398e80f7d96dd2a093c524d4cf3533a58d0ebb 100644 GIT binary patch literal 28846 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 CVQ8cP literal 20664 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 jG-_kc9S?av+(VJncVF)*WNotE6g}9 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 diff --git a/docs/build/reference/media/file-new-project.png b/docs/build/reference/media/file-new-project.png index df61ed8476eba4e3b2e0145eced1ef092585915d..d42284e46a53532f81c656e5ecd10cdeb744e8da 100644 GIT binary patch literal 15487 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 literal 13011 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 WuYGbI0)MUmypdLxDwi<)_`d*O8V6DU From b88cde827e72143c94f86eda37ad7dce13bd2a60 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 22 Jan 2026 11:09:26 -0800 Subject: [PATCH 2195/2255] edit --- docs/build-insights/build-performance.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index 5152e0d6878..db76bc79f18 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -161,6 +161,10 @@ Or from the Build Insights view: The Improve link is highlighted. :::image-end::: +## Summary + +By combining MSVC Build Insights with GitHub Copilot, you can identify build bottlenecks and apply fixes without manually analyzing trace data or configuring precompiled headers yourself. The workflow handles trace collection, analysis, and code changes in an iterative loop until build times are reduced to your satisfaction. + ## See also [Build Insights function view](/cpp/build-insights/tutorials/build-insights-function-view)\ From fbd01695b88b9aa9350ecb7f868f2f9e49a8e014 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 22 Jan 2026 11:12:25 -0800 Subject: [PATCH 2196/2255] put screenshot back --- docs/build-insights/build-performance.md | 7 ++++++- .../media/build-analysis-complete.png | Bin 0 -> 8173 bytes 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 docs/build-insights/media/build-analysis-complete.png diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index db76bc79f18..9c8b02d3936 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -115,7 +115,12 @@ The prompt asks the user to authorize running the command: ls ../src/ in the ter :::image-end::: Choose the level of permission you are comfortable with. If you deny the request, GitHub Copilot can't proceed with the build performance analysis. -Copilot may go through multiple iterations to find the best way to make the build faster. + +Copilot may go through multiple iterations to find the best way to make the build faster. In this chat example, ... + +:::image type="complex" source="./media/build-analysis-complete.png" alt-text="Screenshot of a message in the GitHub Copilot chat window."::: +The message indicates that analysis is complete and the build time improved from 78.6 seconds to 70.5 seconds (8.1 seconds faster, ~10.3% improvement). It indicates there's still room for improvement. +:::image-end::: When the analysis is done, GitHub Copilot displays a summary of the changes and build performance impact for that iteration: diff --git a/docs/build-insights/media/build-analysis-complete.png b/docs/build-insights/media/build-analysis-complete.png new file mode 100644 index 0000000000000000000000000000000000000000..10bd55a02352caef4752fc5807a83412cfd5f838 GIT binary patch literal 8173 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 Date: Thu, 22 Jan 2026 12:38:37 -0800 Subject: [PATCH 2197/2255] Edited build analysis iteration image and text --- docs/build-insights/build-performance.md | 2 +- .../media/build-analysis-complete.png | Bin 8173 -> 8389 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index 9c8b02d3936..f09150c8063 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -116,7 +116,7 @@ The prompt asks the user to authorize running the command: ls ../src/ in the ter Choose the level of permission you are comfortable with. If you deny the request, GitHub Copilot can't proceed with the build performance analysis. -Copilot may go through multiple iterations to find the best way to make the build faster. In this chat example, ... +Copilot may go through multiple iterations to find the best way to make the build faster. In this chat example, Copilot made its first build performance improvement but recognizes more areas to optimize. :::image type="complex" source="./media/build-analysis-complete.png" alt-text="Screenshot of a message in the GitHub Copilot chat window."::: The message indicates that analysis is complete and the build time improved from 78.6 seconds to 70.5 seconds (8.1 seconds faster, ~10.3% improvement). It indicates there's still room for improvement. diff --git a/docs/build-insights/media/build-analysis-complete.png b/docs/build-insights/media/build-analysis-complete.png index 10bd55a02352caef4752fc5807a83412cfd5f838..18857c6d6231a7f4b884c229b565008042311708 100644 GIT binary patch literal 8389 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 literal 8173 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 Date: Thu, 22 Jan 2026 12:51:23 -0800 Subject: [PATCH 2198/2255] Updates on entry points --- docs/build-insights/build-performance.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index f09150c8063..83e43d3590b 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -140,8 +140,7 @@ The **Build** menu: The Build menu option Run Build Insights is expanded to show Build All, Rebuild All, and Improve Build Performance. The latter is selected. :::image-end::: -Or select a **Improve build performance** prompt in GitHub Copilot chat: - + Select **Improve build performance on Solution** to open the GitHub Copilot chat window, which prompts you to optimize the build performance of your project. :::image type="complex" source="./media/copilot-improve-prompt.png" alt-text="Screenshot of the Copilot chat window."::: The chat window shows a prompt to Improve Build Performance. :::image-end::: @@ -160,12 +159,18 @@ Or use the **Solution** window context menu which you can access by right-clicki Or from the Build Insights view: - Select **Improve** from the Build Insights diagnostics session view to open the GitHub Copilot chat window, which prompts you to optimize the build performance of your project, shown previously. This button uses data from the existing build insights trace results. It doesn't do a new analysis until the current changes are processed. + Select **Improve** from the Build Insights diagnostics session view to open the GitHub Copilot chat window, which prompts you to optimize the build performance of your project. This button uses data from the existing build insights trace results. It doesn't do a new analysis until the current changes are processed. :::image type="complex" source="./media/insights-improve-button.png" alt-text="Screenshot of the Build Insights view window."::: The Improve link is highlighted. :::image-end::: + The GitHub Copilot chat window is prompted to optimize the build performance of your project, focusing on includes. + + :::image type="complex" source="./media/copilot-improve-includes.png" alt-text="Screenshot of the Build Insights view window."::: + The chat window shows a prompt to Improve Build Performance, focusing on includes. + :::image-end::: + ## Summary By combining MSVC Build Insights with GitHub Copilot, you can identify build bottlenecks and apply fixes without manually analyzing trace data or configuring precompiled headers yourself. The workflow handles trace collection, analysis, and code changes in an iterative loop until build times are reduced to your satisfaction. From 77984edeacc7cd164219dc87fc739fc9090f4f3d Mon Sep 17 00:00:00 2001 From: Eve Silfanus Date: Thu, 22 Jan 2026 13:03:22 -0800 Subject: [PATCH 2199/2255] Fixed alt text and bold Build Insights --- docs/build-insights/build-performance.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index 83e43d3590b..d1229bed775 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -166,8 +166,8 @@ Or from the Build Insights view: :::image-end::: The GitHub Copilot chat window is prompted to optimize the build performance of your project, focusing on includes. - - :::image type="complex" source="./media/copilot-improve-includes.png" alt-text="Screenshot of the Build Insights view window."::: + + :::image type="complex" source="./media/copilot-improve-includes.png" alt-text="Screenshot of the Copilot chat window with focusing on includes prompt."::: The chat window shows a prompt to Improve Build Performance, focusing on includes. :::image-end::: From ca17c32bd2f7b9a575df1daee5e88e5944d90568 Mon Sep 17 00:00:00 2001 From: Eve Silfanus Date: Thu, 22 Jan 2026 13:09:44 -0800 Subject: [PATCH 2200/2255] Bold Build Insights --- docs/build-insights/build-performance.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index d1229bed775..dcb21393d31 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -157,7 +157,7 @@ Or use the **Solution** window context menu which you can access by right-clicki The chat window shows a prompt to Improve Build Performance. :::image-end::: -Or from the Build Insights view: +Or from the **Build Insights** view: Select **Improve** from the Build Insights diagnostics session view to open the GitHub Copilot chat window, which prompts you to optimize the build performance of your project. This button uses data from the existing build insights trace results. It doesn't do a new analysis until the current changes are processed. From 25b836b777c4ce1ca3ab16052b64c7863dcef79e Mon Sep 17 00:00:00 2001 From: Stacy Chambers <102548089+Stacyrch140@users.noreply.github.com> Date: Thu, 22 Jan 2026 17:43:37 -0500 Subject: [PATCH 2201/2255] pencil edit --- docs/build-insights/build-performance.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index dcb21393d31..0d5f2b6ce7f 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -52,7 +52,7 @@ To minimize analysis overhead, the template instantiation time collection is off 1. In the **Options** dialog, expand **Build Insights**. 1. Select **Collect Template Instantiation**. -:::image type="complex" source="./media/build-insights-options.png" alt-text="Build Insights settings page in Visual Studio Options with the Collect template instantiation checkbox enabled, displaying trace collection configurations for analysis."::: +:::image type="complex" source="./media/build-insights-options.png" alt-text="Screenshot of the Build Insights settings page in Visual Studio Options with the Collect template instantiation checkbox enabled, displaying trace collection configurations for analysis."::: The dialog shows trace collection settings with the Collect template instantiation checkbox selected. :::image-end::: From 2e82077dcc7783eec12c2a5a833d2e165c24014b Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 22 Jan 2026 16:15:46 -0800 Subject: [PATCH 2202/2255] doc new syntax --- docs/ide/include-cleanup-config.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/ide/include-cleanup-config.md b/docs/ide/include-cleanup-config.md index 5d4e2813902..13c2f6ffdb0 100644 --- a/docs/ide/include-cleanup-config.md +++ b/docs/ide/include-cleanup-config.md @@ -1,7 +1,7 @@ --- title: "Configure C/C++ Include Cleanup in Visual Studio" description: "Learn how to configure C/C++ Include Cleanup." -ms.date: 10/10/2023 +ms.date: 01/22/2026 ms.topic: "how-to" f1_keywords: ["config include cleanup"] helpviewer_keywords: ["config include cleanup"] @@ -59,7 +59,7 @@ The `.editorconfig` settings that you can use with Include Cleanup are: | `cpp_include_cleanup_excluded_files`

Excludes the specified files from Include Cleanup messages. You won't get a suggestion related to the header at all, whether to add it or that it's unused. | *filename* | `cpp_include_cleanup_excluded_files = vcruntime.h, vcruntime_string.h` | | `cpp_include_cleanup_required_files`

Specify that usage of *file1* requires *file2*. For example, specify that if you use `atlwin.h` that `altbase.h` must also be included. | *file1*:*file2* | `cpp_include_cleanup_required_files = atlwin.h:altbase.h, atlcom.h:altbase.h` | | `cpp_include_cleanup_replacement_files`

Replaces *file1* with *file2* during Include Cleanup processing. For example, you may prefer using `cstdio` over `stdio.h`. If you have a file with both `#include ` and `#include ` and you consume content only from `stdio.h`, with this setting Include Cleanup will tell you to remove `stdio.h` because it replaced the usage of `cstdio` with `stdio.h` during processing. If you don't use the contents from either, Include Cleanup will tell you to remove both.| *file1*:*file2* | `cpp_include_cleanup_replacement_files = stdio.h:cstdio,stdint.h:cstdint` | -| `cpp_include_cleanup_alternate_files`

Don't generate a message for indirect include *file2* if *file1* is included. For example, if you `#include ` and are only using something from its indirectly included header `winerror.h`, Include Cleanup won't prompt to add `winerror.h`. Useful when you prefer to include a facade header file instead of the indirect includes it contains. | *file1*:*file2* | `cpp_include_cleanup_alternate_files = windows.h:winerror.h, windows.h:minwindef.h` | +| `cpp_include_cleanup_alternate_files`

Suppress messages for indirect includes from an umbrella header. For example, if you `#include ` and only use content from its indirectly included headers `winerror.h` or `minwindef.h`, Include Cleanup won't suggest adding them. *| *file1*:*file2*[:*file3*...][,*file4*:*file5*...] | `cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h`
`cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h,umbrella.h:internal.h`| ## See also From 302d37c245d1a1bde5398e9e6cab20535974a830 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 23 Jan 2026 10:46:11 -0800 Subject: [PATCH 2203/2255] Update alt-text for images in makefile project guide --- docs/build/reference/creating-a-makefile-project.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build/reference/creating-a-makefile-project.md b/docs/build/reference/creating-a-makefile-project.md index 726dcc60c9d..566ed5e134c 100644 --- a/docs/build/reference/creating-a-makefile-project.md +++ b/docs/build/reference/creating-a-makefile-project.md @@ -32,11 +32,11 @@ The output file that you specify in the project has no effect on the name that t 1. From the Visual Studio main menu, choose **File** > **New** > **Project/Solution**. - :::image type="content" source="media/file-new-project.png" alt-text="Screenshot of the menu dropdown item to create a new project highlighted"::: + :::image type="content" source="media/file-new-project.png" alt-text="Screenshot of the File > New > Project/Solution menu item."::: 1. Type *makefile* into the search box. If you see more than one project template, select the option for your target platform. - :::image type="content" source="media/create-project.png" alt-text="Screenshot of the project template search bar with makefile entered."::: + :::image type="content" source="media/create-project.png" alt-text="Screenshot of the Create a new project dialog. The Create a new project text field text box contains the text: makefile."::: 1. **Windows only**: In the Makefile project **Debug Configuration Settings** page, provide the command, output, clean, and rebuild information for debug and retail builds. Choose **Next** if you want to specify different settings for a Release configuration. From 280a2420de6559391adc9e5bc24af55af04d6586 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 23 Jan 2026 11:05:05 -0800 Subject: [PATCH 2204/2255] add to toc --- docs/build-insights/toc.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/build-insights/toc.yml b/docs/build-insights/toc.yml index d5f07030b96..ac2d35b30c7 100644 --- a/docs/build-insights/toc.yml +++ b/docs/build-insights/toc.yml @@ -6,6 +6,8 @@ items: - name: "Tutorials" expanded: true items: + - name: "Get started with GitHub Copilot build performance for Windows" + href: ../build-insights/tutorials/build-performance.md - name: "Troubleshoot function inlining impact on build time" href: ../build-insights/tutorials/build-insights-function-view.md - name: "Troubleshoot template instantiation impact on build time" From cbb538e97e95058c63106c1ad684def3f082c104 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 23 Jan 2026 11:12:56 -0800 Subject: [PATCH 2205/2255] add to landing page --- docs/build-insights/index.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/build-insights/index.yml b/docs/build-insights/index.yml index 5020326898f..b52b5a4595d 100644 --- a/docs/build-insights/index.yml +++ b/docs/build-insights/index.yml @@ -25,6 +25,10 @@ landingContent: url: get-started-with-cpp-build-insights.md - linkListType: tutorial links: + - text: Build performance analysis overview + url: tutorials/build-performance.md + - text: Get started with GitHub Copilot build performance for Windows + url: tutorials/build-performance.md - text: Build Insights function view url: tutorials/build-insights-function-view.md - text: Build Insights included files view From fce5777de2410bb674a83e9e479e4f2a035ac07e Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 23 Jan 2026 11:20:35 -0800 Subject: [PATCH 2206/2255] fix links --- docs/build-insights/index.yml | 4 +--- docs/build-insights/toc.yml | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/build-insights/index.yml b/docs/build-insights/index.yml index b52b5a4595d..bf11ccdb5e3 100644 --- a/docs/build-insights/index.yml +++ b/docs/build-insights/index.yml @@ -25,10 +25,8 @@ landingContent: url: get-started-with-cpp-build-insights.md - linkListType: tutorial links: - - text: Build performance analysis overview - url: tutorials/build-performance.md - text: Get started with GitHub Copilot build performance for Windows - url: tutorials/build-performance.md + url: build-performance.md - text: Build Insights function view url: tutorials/build-insights-function-view.md - text: Build Insights included files view diff --git a/docs/build-insights/toc.yml b/docs/build-insights/toc.yml index ac2d35b30c7..f9c51225e1d 100644 --- a/docs/build-insights/toc.yml +++ b/docs/build-insights/toc.yml @@ -7,7 +7,7 @@ items: expanded: true items: - name: "Get started with GitHub Copilot build performance for Windows" - href: ../build-insights/tutorials/build-performance.md + href: ../build-insights/build-performance.md - name: "Troubleshoot function inlining impact on build time" href: ../build-insights/tutorials/build-insights-function-view.md - name: "Troubleshoot template instantiation impact on build time" From f47a9be2d2617f9891d70723ccfb0726b75fee3c Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 23 Jan 2026 13:08:33 -0800 Subject: [PATCH 2207/2255] edits --- docs/ide/include-cleanup-config.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/ide/include-cleanup-config.md b/docs/ide/include-cleanup-config.md index 13c2f6ffdb0..529170a6d05 100644 --- a/docs/ide/include-cleanup-config.md +++ b/docs/ide/include-cleanup-config.md @@ -1,7 +1,7 @@ --- title: "Configure C/C++ Include Cleanup in Visual Studio" description: "Learn how to configure C/C++ Include Cleanup." -ms.date: 01/22/2026 +ms.date: 01/23/2026 ms.topic: "how-to" f1_keywords: ["config include cleanup"] helpviewer_keywords: ["config include cleanup"] @@ -59,7 +59,7 @@ The `.editorconfig` settings that you can use with Include Cleanup are: | `cpp_include_cleanup_excluded_files`

Excludes the specified files from Include Cleanup messages. You won't get a suggestion related to the header at all, whether to add it or that it's unused. | *filename* | `cpp_include_cleanup_excluded_files = vcruntime.h, vcruntime_string.h` | | `cpp_include_cleanup_required_files`

Specify that usage of *file1* requires *file2*. For example, specify that if you use `atlwin.h` that `altbase.h` must also be included. | *file1*:*file2* | `cpp_include_cleanup_required_files = atlwin.h:altbase.h, atlcom.h:altbase.h` | | `cpp_include_cleanup_replacement_files`

Replaces *file1* with *file2* during Include Cleanup processing. For example, you may prefer using `cstdio` over `stdio.h`. If you have a file with both `#include ` and `#include ` and you consume content only from `stdio.h`, with this setting Include Cleanup will tell you to remove `stdio.h` because it replaced the usage of `cstdio` with `stdio.h` during processing. If you don't use the contents from either, Include Cleanup will tell you to remove both.| *file1*:*file2* | `cpp_include_cleanup_replacement_files = stdio.h:cstdio,stdint.h:cstdint` | -| `cpp_include_cleanup_alternate_files`

Suppress messages for indirect includes from an umbrella header. For example, if you `#include ` and only use content from its indirectly included headers `winerror.h` or `minwindef.h`, Include Cleanup won't suggest adding them. *| *file1*:*file2*[:*file3*...][,*file4*:*file5*...] | `cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h`
`cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h,umbrella.h:internal.h`| +| `cpp_include_cleanup_alternate_files`

Suppress messages for indirect includes. For example, if you `#include ` and only use content from its indirectly included headers `winerror.h` or `minwindef.h`, Include Cleanup won't suggest adding them. *| *file1*:*file2*[:*file3*...][,*file4*:*file5*...] | `cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h`
or
`cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h,umbrella.h:internal.h`| ## See also From f68f380d6e2ad94b83d8780c4bbbf6fb4c800473 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 23 Jan 2026 13:13:51 -0800 Subject: [PATCH 2208/2255] cleanup --- docs/ide/include-cleanup-config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ide/include-cleanup-config.md b/docs/ide/include-cleanup-config.md index 529170a6d05..0f2b6d59871 100644 --- a/docs/ide/include-cleanup-config.md +++ b/docs/ide/include-cleanup-config.md @@ -59,7 +59,7 @@ The `.editorconfig` settings that you can use with Include Cleanup are: | `cpp_include_cleanup_excluded_files`

Excludes the specified files from Include Cleanup messages. You won't get a suggestion related to the header at all, whether to add it or that it's unused. | *filename* | `cpp_include_cleanup_excluded_files = vcruntime.h, vcruntime_string.h` | | `cpp_include_cleanup_required_files`

Specify that usage of *file1* requires *file2*. For example, specify that if you use `atlwin.h` that `altbase.h` must also be included. | *file1*:*file2* | `cpp_include_cleanup_required_files = atlwin.h:altbase.h, atlcom.h:altbase.h` | | `cpp_include_cleanup_replacement_files`

Replaces *file1* with *file2* during Include Cleanup processing. For example, you may prefer using `cstdio` over `stdio.h`. If you have a file with both `#include ` and `#include ` and you consume content only from `stdio.h`, with this setting Include Cleanup will tell you to remove `stdio.h` because it replaced the usage of `cstdio` with `stdio.h` during processing. If you don't use the contents from either, Include Cleanup will tell you to remove both.| *file1*:*file2* | `cpp_include_cleanup_replacement_files = stdio.h:cstdio,stdint.h:cstdint` | -| `cpp_include_cleanup_alternate_files`

Suppress messages for indirect includes. For example, if you `#include ` and only use content from its indirectly included headers `winerror.h` or `minwindef.h`, Include Cleanup won't suggest adding them. *| *file1*:*file2*[:*file3*...][,*file4*:*file5*...] | `cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h`
or
`cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h,umbrella.h:internal.h`| +| `cpp_include_cleanup_alternate_files`

Suppress messages for indirect includes. For example, if you `#include ` and only use content from its indirectly included headers `winerror.h` or `minwindef.h`, the tool won't suggest adding them. | *file1*:*file2*[:*file3*...][,*file4*:*file5*...] | `cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h`
or
`cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h,umbrella.h:internal.h`| ## See also From 047497ebaacc51e7fc967a3891c1b943edc105ff Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 26 Jan 2026 13:28:48 -0800 Subject: [PATCH 2209/2255] Update docs/build-insights/build-performance.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/build-insights/build-performance.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index 0d5f2b6ce7f..4cadd179b79 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -71,7 +71,7 @@ To start the GitHub Copilot build performance agent: 1. Select your preferred model in the model drop down menu: :::image type="complex" source="./media/model-select.png" alt-text="Screenshot of the model selection menu in the Copilot Chat window."::: - This dropdown lists models various models like GPT-5, CLaude Sonnet 4, Gemini 3 Pro, and others. + This dropdown lists various models like GPT-5, CLaude Sonnet 4, Gemini 3 Pro, and others. :::image-end::: 1. Instruct GitHub Copilot to improve the build performance of your selected project by typing something like **Help me improve the build performance of this project**. You can add extra context so that GitHub Copilot can better make suggestions to match the needs of your project. From 696e6e4cdeaf9fc908eddeee52cc39538dadce5d Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 26 Jan 2026 13:31:59 -0800 Subject: [PATCH 2210/2255] Update docs/build-insights/build-performance.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/build-insights/build-performance.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index 4cadd179b79..401e2f82812 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -33,7 +33,7 @@ Verify your GitHub Copilot subscription on GitHub, and then sign in to your GitH 1. Verify your GitHub Copilot subscription by signing in to [https://github.com](https://github.com/). Select your profile picture and then [Copilot settings](https://github.com/settings/copilot/features). Your plan type appears near the top of the page: - :::image type="complex" source="./media/copilot-subscription.png" alt-text="Screenshot of the users GitHub Copilot information."::: + :::image type="complex" source="./media/copilot-subscription.png" alt-text="Screenshot showing the user's GitHub Copilot information."::: The Copilot settings page shows the type of subscription. In this case, the user has GitHub Copilot Enterprise. :::image-end::: 1. In Visual Studio, sign in to your GitHub account: From 4c1acc2817df1131712e54e9139874f679700a15 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 26 Jan 2026 13:32:31 -0800 Subject: [PATCH 2211/2255] Update docs/build-insights/build-performance.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/build-insights/build-performance.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index 401e2f82812..3523b430d59 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -104,7 +104,7 @@ Choose **Yes**. The Windows User Account Control dialog then appears: The dialog asks for permission for the Windows Command Processor, verified publisher Microsoft, to allow this app to make changes to your device. There are Yes and No buttons. :::image-end::: -Choose **Yes** to grant permission to capture the MSVC compiler traces. Denying the elevated request to cancel the build analysis. +Choose **Yes** to grant permission to capture the MSVC compiler traces. Denying the elevated request cancels the build analysis. ## Guide GitHub Copilot through the process of improving the build time From f207e6aa3cf0b7839402a2f7f434731752dbb201 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 26 Jan 2026 13:33:15 -0800 Subject: [PATCH 2212/2255] Update docs/build-insights/build-performance.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/build-insights/build-performance.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index 3523b430d59..13a51332376 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -14,7 +14,7 @@ The GitHub Copilot build performance for Windows helps you make your builds fast - Visual Studio 2026 version 18.3 Insiders 4, or later. - MSVC Build Tools version 14.50 or later. -- A MSBuild or CMake project. +- An MSBuild or CMake project. - Windows 10 or later. ### Before you begin  From 6975ddd977131a6e744cd0e774a5c279b41c2b68 Mon Sep 17 00:00:00 2001 From: "Michael B. Price" Date: Tue, 27 Jan 2026 02:52:24 -0600 Subject: [PATCH 2213/2255] Docs for GitHub Copilot app modernization for C++ (#6221) * Documentation for using GitHub Copilot app modernization for C++ features * Adding a link to the GitHub Copilot app modernization for C++ documentation to the porting and upgrading page. * first style pass * edit pass * Minor-ish grammatical changes * Removing line about working in solutions that have mixed languages. The default should be to assume that it does anyways. * Adding some screenshots for enabling and getting started with app modernization. * Attempt to get side-by-side images of the ice breakers for both MSBuild and CMake projects * Bring the link for app modernization down into the upgrade & modernize section instead of it's own section. * Fixing typo in image file name * Addressing several of @TylerMSFT's review comments * Adjusting the ice breaker section to be clearer about the role of each image and why they should be laid out next to each other and fixing the images to be roughly the same size so that they present in a way that isn't too jarring. * Shortening and clarifying the names of the images showing the ice breakers * Renaming file so that ghcp turns into copilot which is a bit less confusing if someone is looking at file names. * Missed one place where the filename needed to be updated * Renaming images to fully spell out modernization * Removing 'public' from 'public preview' and adding a period at the end of a sentence on the same line as one of those changes * Removing the hyphen from 'pre-existing' to make it simply 'preexisting' * Rewording to avoid unnecessary repetition between the first and second sentence. * Removing Insiders descriptor from the requirements section, as it becomes an irrelevant detail in a short period of time. * Adding a link to the documentation for the new retarget projects experience. --------- Co-authored-by: TylerMSFT --- docs/porting/copilot-app-modernization-cpp.md | 100 ++++++++++++++++++ .../app-modernization-cmake-ice-breaker.png | Bin 0 -> 192513 bytes .../app-modernization-msbuild-ice-breaker.png | Bin 0 -> 92370 bytes ...copilot-app-modernization-context-menu.png | Bin 0 -> 50329 bytes .../enable-copilot-app-modernization-cpp.png | Bin 0 -> 59288 bytes docs/porting/toc.yml | 2 + .../visual-cpp-porting-and-upgrading-guide.md | 1 + 7 files changed, 103 insertions(+) create mode 100644 docs/porting/copilot-app-modernization-cpp.md create mode 100644 docs/porting/media/app-modernization-cmake-ice-breaker.png create mode 100644 docs/porting/media/app-modernization-msbuild-ice-breaker.png create mode 100644 docs/porting/media/copilot-app-modernization-context-menu.png create mode 100644 docs/porting/media/enable-copilot-app-modernization-cpp.png diff --git a/docs/porting/copilot-app-modernization-cpp.md b/docs/porting/copilot-app-modernization-cpp.md new file mode 100644 index 00000000000..baf39363b46 --- /dev/null +++ b/docs/porting/copilot-app-modernization-cpp.md @@ -0,0 +1,100 @@ +--- +title: "Modernize your C++ project with GitHub Copilot app modernization" +description: "Instructions on effectively using GitHub Copilot app modernization in your C++ projects" +ms.date: 01/23/2026 +ms.topic: upgrade-and-migration-article +author: michaelbprice +ms.author: miprice +--- + +# Using GitHub Copilot app modernization for C++ + +GitHub Copilot app modernization for C++ helps you upgrade C++ projects to newer MSVC Build Tools versions. If necessary, Copilot will upgrade your project's settings to use the latest MSVC, and then conduct a thorough assessment of the impact of those changes after executing a build. It develops a plan on how to address each identified problem. Once you approve the plan, the agent completes a sequence of tasks and validates that any changes resolved the identified problems. If there remains work to be done, the agent continues iterating until the problems are resolved or you discontinue the conversation. + +> [!NOTE] +> GitHub Copilot app modernization for C++ is currently in preview. + +## Requirements + +- Visual Studio 2026 version 18.3 or later +- A GitHub Copilot account +- A MSBuild-based codebase (`.sln`, `.vcxproj`) OR a CMake-based codebase + +## Enable GitHub Copilot app modernization for C++ + +GitHub Copilot app modernization for C++ is enabled by default. To disable or explicitly enable the feature, follow these steps. + +1. From Visual Studio, select **Tools > Options...** to open the **Options** window. +1. Navigate to **All Settings > GitHub > Copilot > C/C++**. +1. Select (to enable) or clear (to disable) the checkbox for **Enable GitHub Copilot app modernization for C++ (preview)**. +1. Restart Visual Studio for the setting change to take effect. + +![Screenshot of the settings to enable GitHub Copilot app modernization for C++.](media/enable-copilot-app-modernization-cpp.png "enable GitHub Copilot app modernization for C++") + +## Upgrade your codebase by using GitHub Copilot app modernization for C++ + +This section describes how to start the Modernize agent and the stages it goes through to upgrade your codebase. + +### Start the Modernize agent + +GitHub Copilot app modernization is an agent that operates inside the GitHub Copilot Chat window. You can start the agent in any of the following ways: + +- **From the Solution Explorer context menu**: Right-click on the solution or a loaded project in the Solution Explorer, and choose **Modernize** from the context menu. This automatically launches a GitHub Copilot Chat window, activates the Modernize agent, and provides you with relevant prompts to choose from to get you started. + +![Screenshot of the context menu to start GitHub Copilot app modernization.](media/copilot-app-modernization-context-menu.png "Start GitHub Copilot app modernization") + +- **From GitHub Copilot Chat**: Open the GitHub Copilot Chat Window by selecting **View > GitHub Copilot Chat**. After the GitHub Copilot Chat window opens, mention `@Modernize` in a prompt to activate the Modernize agent. For example, type this prompt: + + `Use @Modernize to update MSVC Build Tools.` + +#### For MSBuild-based codebases targeting an earlier version of MSVC Build Tools + +The first time that you load a `.vcxproj` project that targets an earlier version of the MSVC Build Tools, you see an option to [upgrade project settings to use a newer version of the MSVC Build Tools](https://learn.microsoft.com/visualstudio/install/setup-assistant). If you retarget any of your projects to a new version of MSVC Build Tools and GitHub Copilot app modernization for C++ is enabled, you receive an infobar in Visual Studio prompting you to use GitHub Copilot app modernization for C++ to resolve any newly introduced build problems. Selecting **Run GitHub Copilot app modernization for C++** launches the GitHub Copilot Chat window, activates the Modernize agent, and provides you with relevant prompts to choose from to get you started. + +### Start the upgrade + +Once the Modernize agent is active, you can instruct it via a prompt to upgrade your MSVC Build Tools, or select the already constructed prompt from the list shown in the window. If you launched the agent directly in the GitHub Copilot Chat window by mentioning @Modernize in your prompt, you probably don't need to provide any additional prompting. + +:::row::: +:::column::: + +**MSBuild Projects** + +:::column-end::: +:::column::: + +**CMake Projects** + +:::column-end::: +:::row-end::: +:::row::: +:::column::: + +![Screenshot of GitHub Copilot app modernization window with MSVC upgrade ice breaker for an MSBuild project.](media/app-modernization-msbuild-ice-breaker.png "GitHub Copilot app modernization window") + +:::column-end::: +:::column::: + +![Screenshot of GitHub Copilot app modernization window with MSVC upgrade ice breaker for a CMake project.](media/app-modernization-cmake-ice-breaker.png "GitHub Copilot app modernization window") + +:::column-end::: +:::row-end::: + + +### Assessment stage + +The agent first assesses what kinds of problems show up after upgrading. If you didn't already upgrade the project, the agent guides you through that process before creating its assessment. After ensuring that your project is upgraded, the agent builds your codebase, analyzes the reported warnings and errors, and generates an `assessment.md` file that describes the problems that it found, their severity, and other useful information. This is your opportunity to tell the agent any additional context that could help it make a plan. + +One of the things you might choose to do here is to tell the agent not to fix certain discovered problems, because you know that resolving them involves some strategic decisions or because they were preexisting warnings that you decided are acceptable for your project. You should carefully read through the plan, making sure to provide that additional context where it is needed. Once you approve the assessment, the agent moves on to creating a concrete plan on addressing the problems. + +### Planning stage + +Based on the approved assessment and any additional context or instructions you provide, the agent creates a `plan.md` file that proposes a detailed plan for resolving each of the identified problems. If the agent produces a plan that doesn't match your organization's coding style or practices, you can provide that guidance to the agent and have it solve the problem differently. After you agree on the plan, the agent moves to the execution stage. + +### Execution stage + +Now that the agent has a plan, it breaks down the necessary tasks to execute the plan. You can define these tasks as finely as you want. The tasks can even include steps to work on a branch or to commit specific changes together in the same commit. After making any changes, the agent builds the project again to confirm that the problems are resolved. If the problems aren't resolved, the agent iterates with you until they're resolved to your satisfaction. + +### Post-upgrade validation + +When the agent finishes, run the changes through any testing infrastructure you have. Have a colleague review the changes in a pull request. Since this feature is currently in preview, you might receive an infobar to complete a product survey to let the product team know how the agent performed on your codebase. The product team looks forward to hearing how they can improve the agent to solve your problems and accelerate your upgrade and modernization efforts. \ No newline at end of file diff --git a/docs/porting/media/app-modernization-cmake-ice-breaker.png b/docs/porting/media/app-modernization-cmake-ice-breaker.png new file mode 100644 index 0000000000000000000000000000000000000000..676e21dbbc5e7b204abde61935b42eb3a037dae2 GIT binary patch literal 192513 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

3M_GMeyLFDdSl=?oSNIF|MkYgDOkYB)gPY{Bb6 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 R{3in=E2St|CjK_?{{dNl$9ez& literal 0 HcmV?d00001 diff --git a/docs/porting/media/app-modernization-msbuild-ice-breaker.png b/docs/porting/media/app-modernization-msbuild-ice-breaker.png new file mode 100644 index 0000000000000000000000000000000000000000..0820fec37c113236d2a5a409e671bd15cd57f3a2 GIT binary patch literal 92370 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

asdcExIwmHsGlmTd0K_A5Z+ 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 CF2vXX literal 0 HcmV?d00001 diff --git a/docs/porting/media/copilot-app-modernization-context-menu.png b/docs/porting/media/copilot-app-modernization-context-menu.png new file mode 100644 index 0000000000000000000000000000000000000000..9b671eadc33867a4b2f65614715465e5c37b06bc GIT binary patch literal 50329 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 literal 0 HcmV?d00001 diff --git a/docs/porting/media/enable-copilot-app-modernization-cpp.png b/docs/porting/media/enable-copilot-app-modernization-cpp.png new file mode 100644 index 0000000000000000000000000000000000000000..3e0047e42ccd7aa583274f07eae9a1ae0534886b GIT binary patch literal 59288 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 Date: Wed, 28 Jan 2026 03:26:55 +0900 Subject: [PATCH 2214/2255] Fix typo: specifed -> specified (#5873) --- .../CPP/how-to-create-a-task-that-completes-after-a-delay_1.cpp | 2 +- .../CPP/how-to-create-a-task-that-completes-after-a-delay_3.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/parallel/concrt/codesnippet/CPP/how-to-create-a-task-that-completes-after-a-delay_1.cpp b/docs/parallel/concrt/codesnippet/CPP/how-to-create-a-task-that-completes-after-a-delay_1.cpp index 19ec97fbf8d..07d9a402d18 100644 --- a/docs/parallel/concrt/codesnippet/CPP/how-to-create-a-task-that-completes-after-a-delay_1.cpp +++ b/docs/parallel/concrt/codesnippet/CPP/how-to-create-a-task-that-completes-after-a-delay_1.cpp @@ -28,7 +28,7 @@ task complete_after(unsigned int timeout) }); } -// Cancels the provided task after the specifed delay, if the task +// Cancels the provided task after the specified delay, if the task // did not complete. template task cancel_after_timeout(task t, cancellation_token_source cts, unsigned int timeout) diff --git a/docs/parallel/concrt/codesnippet/CPP/how-to-create-a-task-that-completes-after-a-delay_3.cpp b/docs/parallel/concrt/codesnippet/CPP/how-to-create-a-task-that-completes-after-a-delay_3.cpp index 05fa30ae3d4..efdf43e9507 100644 --- a/docs/parallel/concrt/codesnippet/CPP/how-to-create-a-task-that-completes-after-a-delay_3.cpp +++ b/docs/parallel/concrt/codesnippet/CPP/how-to-create-a-task-that-completes-after-a-delay_3.cpp @@ -38,7 +38,7 @@ task complete_after(unsigned int timeout) }); } -// Cancels the provided task after the specifed delay, if the task +// Cancels the provided task after the specified delay, if the task // did not complete. template task cancel_after_timeout(task t, cancellation_token_source cts, unsigned int timeout) From 1944953b7f81ce6eaa981c9200ab167530ae0914 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 28 Jan 2026 02:57:32 +0800 Subject: [PATCH 2215/2255] Delete extra slash for link in "Microsoft Visual C++ Redistributable latest supported downloads" (#5818) Co-authored-by: Tyler Whitney --- docs/windows/latest-supported-vc-redist.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index 33c92e2fa76..55adb454dd4 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -145,8 +145,8 @@ Download Redistributable files for other languages and architectures from: **Release notes** +- [What's new for C++ in Visual Studio](../overview/what-s-new-for-visual-cpp-in-visual-studio.md) - [Visual Studio 2026 release notes](/visualstudio/releases/2026/release-notes) -- [What's new for C++ in Visual Studio](../overview//what-s-new-for-visual-cpp-in-visual-studio.md) - [Visual C++ What's New 2003 through 2015](../porting/visual-cpp-what-s-new-2003-through-2015.md) - [Standard Template Library (STL) changelog](https://github.com/microsoft/STL/wiki/Changelog) - [A year of C++ improvements](https://devblogs.microsoft.com/cppblog/a-year-of-cpp-improvements-in-visual-studio-vs-code-and-vcpkg) From dfa4b622512074ce616434e38c36aa5aa60d4d2b Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Tue, 27 Jan 2026 13:31:21 -0800 Subject: [PATCH 2216/2255] Fix example code for C2277 error message The pointer-to-member syntax creates the error but the simpler example may convey the point faster. --- .../compiler-errors-1/compiler-error-c2277.md | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2277.md b/docs/error-messages/compiler-errors-1/compiler-error-c2277.md index c5e73e52a40..20429c174ac 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2277.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2277.md @@ -18,15 +18,12 @@ You cannot take the address of a [constructor](../../cpp/constructors-cpp.md) or The following example generates C2277: ```cpp -// C2277.cpp // compile with: /c -struct S +class A { - S() {} - ~S() {} +public: + A(); }; - -void (S::* pointer_to_constructor)() = &S::S; // C2277 -void (S::* pointer_to_destructor)() = &S::~S; // C2277 +(*pctor)() = &A::A; // C2277 ``` From a1cd597bf43d457258d1d858f678cdfd367629a5 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Tue, 27 Jan 2026 13:54:17 -0800 Subject: [PATCH 2217/2255] Fix type references in array get function signatures --- docs/standard-library/array-functions.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/standard-library/array-functions.md b/docs/standard-library/array-functions.md index 709189a51eb..8ba4d4fcbca 100644 --- a/docs/standard-library/array-functions.md +++ b/docs/standard-library/array-functions.md @@ -15,16 +15,16 @@ Returns a reference to the specified element of the array. ```cpp template -constexpr T& get(std::array& arr) noexcept; +constexpr Type& get(std::array& arr) noexcept; template -constexpr const T& get(const std::array& arr) noexcept; +constexpr const Type& get(const std::array& arr) noexcept; template -constexpr T&& get(std::array&& arr) noexcept; +constexpr Type&& get(std::array&& arr) noexcept; template -constexpr const T&& get(const std::array&& arr) noexcept; +constexpr const Type&& get(const std::array&& arr) noexcept; ``` ### Template parameters From 8d8092dbb42b0c6490364f45ce939b79cff09d43 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Tue, 27 Jan 2026 15:02:00 -0800 Subject: [PATCH 2218/2255] Update compiler-errors-c2500-through-c2599.md --- .../compiler-errors-2/compiler-errors-c2500-through-c2599.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c2500-through-c2599.md b/docs/error-messages/compiler-errors-2/compiler-errors-c2500-through-c2599.md index 5340336b562..d018f827b7c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c2500-through-c2599.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c2500-through-c2599.md @@ -1,6 +1,6 @@ --- title: "Compiler errors C2500 Through C2599" -description: "Learn more about: Compiler errors C2500 Through C2599" +description: "Learn more about: Compiler errors C2500 through C2599" ms.date: 04/21/2019 f1_keywords: ["C2501", "C2508", "C2515", "C2519", "C2520", "C2522", "C2525", "C2527", "C2536", "C2538", "C2539", "C2546", "C2547", "C2554", "C2559", "C2560", "C2564", "C2565", "C2576", "C2578", "C2580", "C2590", "C2591", "C2595", "C2596"] helpviewer_keywords: ["C2501", "C2508", "C2515", "C2519", "C2520", "C2522", "C2525", "C2527", "C2536", "C2538", "C2539", "C2546", "C2547", "C2554", "C2559", "C2560", "C2564", "C2565", "C2576", "C2578", "C2580", "C2590", "C2591", "C2595", "C2596"] From 14c3fb4a2d899cd98a4b35328bee9bf1935dd2d5 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 28 Jan 2026 10:52:23 -0800 Subject: [PATCH 2219/2255] Update compiler-error-c3187.md --- .../compiler-errors-2/compiler-error-c3187.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3187.md b/docs/error-messages/compiler-errors-2/compiler-error-c3187.md index 3710ca2abe3..1bb673cd78a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3187.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3187.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C3187" description: "Learn more about: Compiler Error C3187" -ms.date: 08/15/2025 +ms.date: 01/28/2026 f1_keywords: ["C3187"] helpviewer_keywords: ["C3187"] --- @@ -20,12 +20,18 @@ To correct this error, move the identifier inside the body of a function. The following example generates C3187: ```cpp -// C3187.cpp // compile with: /c -auto global = __func__; // C3187, usage in global scope +#include +auto global = __func__; // C3187, usage in global scope void func(const char* f = __func__); // C3187, usage in parameter list + +// correct usage inside a function +void test() +{ + std::cout << __func__; // outputs: test +} ``` ## See also From 7d27af0e765f62ccf8678926d10d967c989df3cc Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 28 Jan 2026 14:18:20 -0800 Subject: [PATCH 2220/2255] Update explanation for MISSING_INTEGER_ARGUMENT_TO_FORMAT_FUNCTION Clarified the explanation of the warning related to missing integer arguments in sprintf_s. --- docs/code-quality/c6064.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/code-quality/c6064.md b/docs/code-quality/c6064.md index c17eeaf1c7a..2a64589d1ec 100644 --- a/docs/code-quality/c6064.md +++ b/docs/code-quality/c6064.md @@ -19,7 +19,7 @@ Code analysis name: `MISSING_INTEGER_ARGUMENT_TO_FORMAT_FUNCTION` ## Example -The following code generates this warning because it uses an incorrect number of arguments in the call to `sprintf_s` and the missing argument is an integer. If the unsafe function `sprintf` was used instead of the safer variant `sprintf_s`, this code would likely cause a stack overflow instead of just an unexpected output: +The following code generates this warning when code analysis is enabled (Project properties > **Configuration Properties** > **Code Analysis ** > **General** > **Enable Code Analysis**) because it uses an incorrect number of arguments in the call to `sprintf_s` and the missing argument is an integer. If the unsafe function `sprintf` was used instead of the safer variant `sprintf_s`, this code would likely cause a stack overflow instead of just an unexpected output: ```cpp void f() From 9e1eb4e8e6440e96369d65371c670397cb406c6e Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 28 Jan 2026 14:18:52 -0800 Subject: [PATCH 2221/2255] Update c6064.md --- docs/code-quality/c6064.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/code-quality/c6064.md b/docs/code-quality/c6064.md index 2a64589d1ec..9d3c40d20a9 100644 --- a/docs/code-quality/c6064.md +++ b/docs/code-quality/c6064.md @@ -19,7 +19,7 @@ Code analysis name: `MISSING_INTEGER_ARGUMENT_TO_FORMAT_FUNCTION` ## Example -The following code generates this warning when code analysis is enabled (Project properties > **Configuration Properties** > **Code Analysis ** > **General** > **Enable Code Analysis**) because it uses an incorrect number of arguments in the call to `sprintf_s` and the missing argument is an integer. If the unsafe function `sprintf` was used instead of the safer variant `sprintf_s`, this code would likely cause a stack overflow instead of just an unexpected output: +The following code generates this warning when code analysis is enabled (Project properties > **Configuration Properties** > **Code Analysis ** > **General** > **Enable Code Analysis on Build**) because it uses an incorrect number of arguments in the call to `sprintf_s` and the missing argument is an integer. If the unsafe function `sprintf` was used instead of the safer variant `sprintf_s`, this code would likely cause a stack overflow instead of just an unexpected output: ```cpp void f() From a640d6b12866052e8dba48e8e4d528dc6230fa05 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 28 Jan 2026 14:59:49 -0800 Subject: [PATCH 2222/2255] Update thread-functions.md Let's go the other way. For declaration, let's make them simple. --- docs/standard-library/thread-functions.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/standard-library/thread-functions.md b/docs/standard-library/thread-functions.md index 2cba283ccc7..ed86df6516b 100644 --- a/docs/standard-library/thread-functions.md +++ b/docs/standard-library/thread-functions.md @@ -14,7 +14,7 @@ The `` header provides the following functions: Uniquely identifies the current thread of execution. ```cpp -thread::id this_thread::get_id() noexcept; +thread::id get_id() noexcept; ``` ### Return Value @@ -44,7 +44,7 @@ Blocks the calling thread. ```cpp template -void this_thread::sleep_for(const chrono::duration& Rel_time); +void sleep_for(const chrono::duration& Rel_time); ``` ### Parameters @@ -62,7 +62,7 @@ Blocks the calling thread at least until the specified time. ```cpp template -void this_thread::sleep_until(const chrono::time_point& Abs_time); +void sleep_until(const chrono::time_point& Abs_time); ``` ### Parameters @@ -99,7 +99,7 @@ The function calls `Left.swap(Right)`. Signals the operating system to run other threads, even if the current thread would ordinarily continue to run. ```cpp -inline void this_thread::yield() noexcept; +inline void yield() noexcept; ``` ## See also From 33583fbbef80c0a2ed0d4550272b6e3b7a70a3ab Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 29 Jan 2026 14:32:46 -0800 Subject: [PATCH 2223/2255] branding updates --- ...handling-events-from-an-activex-control.md | 2 +- ...sing-controls-in-a-non-dialog-container.md | 2 +- ...iewing-and-modifying-control-properties.md | 2 +- docs/mfc/activex-control-containers.md | 4 +- docs/mfc/activex-controls.md | 2 +- ...tives-to-the-document-view-architecture.md | 2 +- ...automation-clients-using-type-libraries.md | 4 +- docs/mfc/automation-servers.md | 2 +- docs/mfc/automation.md | 2 +- ...g-the-styles-of-a-window-created-by-mfc.md | 2 +- .../clipboard-using-the-windows-clipboard.md | 2 +- docs/mfc/command-ids.md | 2 +- docs/mfc/containers-for-activex-controls.md | 4 +- docs/mfc/controls-mfc.md | 2 +- ...n-active-document-container-application.md | 2 +- docs/mfc/crebar-vs-crebarctrl.md | 2 +- docs/mfc/cwinapp-the-application-class.md | 2 +- docs/mfc/dao-classes.md | 2 +- .../derived-view-classes-available-in-mfc.md | 2 +- docs/mfc/dialog-bars.md | 2 +- docs/mfc/dialog-boxes.md | 2 +- docs/mfc/docking-and-floating-toolbars.md | 2 +- ...s-created-by-the-mfc-application-wizard.md | 2 +- docs/mfc/form-views-mfc.md | 8 +- docs/mfc/framework-mfc.md | 2 +- ...-to-create-internet-client-applications.md | 2 +- docs/mfc/idle-loop-processing.md | 2 +- docs/mfc/inserting-a-form-into-a-project.md | 2 +- docs/mfc/making-and-using-controls.md | 2 +- docs/mfc/mapi-support-in-mfc.md | 2 +- docs/mfc/menus-mfc.md | 2 +- docs/mfc/message-handlers.md | 2 +- docs/mfc/methods-of-creating-a-status-bar.md | 2 +- docs/mfc/methods-of-creating-a-toolbar.md | 2 +- .../mfc-activex-controls-advanced-topics.md | 2 +- ...vex-controls-using-stock-property-pages.md | 2 +- docs/mfc/mfc-activex-controls.md | 2 +- docs/mfc/mfc-and-atl.md | 2 +- docs/mfc/mfc-desktop-applications.md | 4 +- docs/mfc/mfc-internet-programming-tasks.md | 2 +- docs/mfc/mfc-library-versions.md | 4 +- docs/mfc/mfc-mbcs-dll-add-on.md | 2 +- docs/mfc/mfc-toolbar-implementation.md | 2 +- ...-document-types-views-and-frame-windows.md | 2 +- ...controls-in-a-activex-control-container.md | 4 +- .../property-sheets-and-property-pages-mfc.md | 2 +- ...adding-an-mfc-class-from-a-type-library.md | 2 +- .../reference/adding-an-mfc-odbc-consumer.md | 2 +- .../application-information-and-management.md | 2 +- docs/mfc/reference/cdc-class.md | 4 +- docs/mfc/reference/cdialogbar-class.md | 2 +- docs/mfc/reference/cformview-class.md | 2 +- .../creating-a-forms-based-mfc-application.md | 2 +- ...ing-a-web-browser-style-mfc-application.md | 2 +- .../reference/creating-an-mfc-application.md | 8 +- docs/mfc/reference/crecordset-class.md | 2 +- docs/mfc/reference/ctoolbar-class.md | 2 +- docs/mfc/reference/diagnostic-services.md | 2 +- docs/mfc/reference/mfc-application-wizard.md | 2 +- docs/mfc/reference/mfc-dll-wizard.md | 2 +- .../mfc/relationship-to-the-c-language-api.md | 2 +- ...perations-for-building-mfc-applications.md | 6 +- ...perations-for-creating-activex-controls.md | 2 +- ...ions-for-creating-database-applications.md | 4 +- ...ers-implementing-in-place-frame-windows.md | 2 +- docs/mfc/technical-notes-by-category.md | 2 +- docs/mfc/technical-notes-by-number.md | 2 +- ...operties-and-events-with-test-container.md | 2 +- docs/mfc/tn006-message-maps.md | 4 +- docs/mfc/tn011-using-mfc-as-part-of-a-dll.md | 4 +- ...020-id-naming-and-numbering-conventions.md | 4 +- docs/mfc/tn021-command-and-message-routing.md | 6 +- .../tn022-standard-commands-implementation.md | 2 +- docs/mfc/tn023-standard-mfc-resources.md | 6 +- ...n024-mfc-defined-messages-and-resources.md | 6 +- .../tn028-context-sensitive-help-support.md | 2 +- docs/mfc/tn029-splitter-windows.md | 2 +- docs/mfc/tn033-dll-version-of-mfc.md | 6 +- ...-files-and-header-files-with-visual-cpp.md | 106 +++++++++--------- ...tn039-mfc-ole-automation-implementation.md | 2 +- .../tn041-mfc-ole1-migration-to-mfc-ole-2.md | 12 +- ...m-dfx-routines-for-dao-database-classes.md | 2 +- ...ao-directly-while-using-mfc-dao-classes.md | 2 +- ...e-class-applications-to-mfc-dao-classes.md | 2 +- .../tn057-localization-of-mfc-components.md | 4 +- ...message-reflection-for-windows-controls.md | 2 +- ...face-support-for-ole-automation-servers.md | 4 +- docs/mfc/toc.yml | 2 +- docs/mfc/toolbar-fundamentals.md | 2 +- .../upgrading-an-existing-activex-control.md | 4 +- ...asses-to-write-applications-for-windows.md | 2 +- docs/mfc/using-your-old-toolbars.md | 2 +- ...h-adding-a-d2d-object-to-an-mfc-project.md | 4 +- ...ough-adding-animation-to-an-mfc-project.md | 2 +- ...ing-the-mfc-scribble-application-part-2.md | 2 +- ...hrough-using-the-new-mfc-shell-controls.md | 4 +- docs/mfc/windows-sockets-in-mfc.md | 2 +- ...indows-sockets-using-class-casyncsocket.md | 2 +- docs/mfc/wizards-and-the-resource-editors.md | 8 +- 99 files changed, 191 insertions(+), 191 deletions(-) diff --git a/docs/mfc/activex-control-containers-handling-events-from-an-activex-control.md b/docs/mfc/activex-control-containers-handling-events-from-an-activex-control.md index 5052a8c4c3d..90af06c7fc7 100644 --- a/docs/mfc/activex-control-containers-handling-events-from-an-activex-control.md +++ b/docs/mfc/activex-control-containers-handling-events-from-an-activex-control.md @@ -15,7 +15,7 @@ This article discusses using the **Properties** window (in **Class View**) to in > [!NOTE] > This article uses a dialog-based ActiveX control container project named Container and an embedded control named Circ as examples in the procedures and code. -Using the Events button in the **Properties** window (in **Class View**), you can create a map of events that can occur in your ActiveX control container application. This map, called an "event sink map,'' is created and maintained by Visual C++ when you add event handlers to the control container class. Each event handler, implemented with an event map entry, maps a specific event to a container event handler member function. This event handler function is called when the specified event is fired by the ActiveX control object. +Using the Events button in the **Properties** window (in **Class View**), you can create a map of events that can occur in your ActiveX control container application. This map, called an "event sink map,'' is created and maintained by Visual Studio when you add event handlers to the control container class. Each event handler, implemented with an event map entry, maps a specific event to a container event handler member function. This event handler function is called when the specified event is fired by the ActiveX control object. For more information on event sink maps, see [Event Sink Maps](reference/event-sink-maps.md) in the *Class Library Reference*. diff --git a/docs/mfc/activex-control-containers-using-controls-in-a-non-dialog-container.md b/docs/mfc/activex-control-containers-using-controls-in-a-non-dialog-container.md index 9c54a250016..5c203ddbf53 100644 --- a/docs/mfc/activex-control-containers-using-controls-in-a-non-dialog-container.md +++ b/docs/mfc/activex-control-containers-using-controls-in-a-non-dialog-container.md @@ -7,7 +7,7 @@ ms.assetid: 46f195b0-b8ca-4409-8cca-fbfaf2c9ab9f --- # ActiveX Control Containers: Using Controls in a Non-Dialog Container -In some applications, such as an SDI or MDI application, you will want to embed a control in a window of the application. The **Create** member function of the wrapper class, inserted by Visual C++, can create an instance of the control dynamically, without the need for a dialog box. +In some applications, such as an SDI or MDI application, you will want to embed a control in a window of the application. The **Create** member function of the wrapper class, inserted by Visual Studio, can create an instance of the control dynamically, without the need for a dialog box. The **Create** member function has the following parameters: diff --git a/docs/mfc/activex-control-containers-viewing-and-modifying-control-properties.md b/docs/mfc/activex-control-containers-viewing-and-modifying-control-properties.md index a9609867536..2cd819edbd2 100644 --- a/docs/mfc/activex-control-containers-viewing-and-modifying-control-properties.md +++ b/docs/mfc/activex-control-containers-viewing-and-modifying-control-properties.md @@ -7,7 +7,7 @@ ms.assetid: 14ce5152-742b-4e0d-a9ab-c7b456e32918 --- # ActiveX Control Containers: Viewing and Modifying Control Properties -When you insert an ActiveX control into a project, it is useful to view and change the properties supported by the ActiveX control. This article discusses how to use the Visual C++ resource editor to do this. +When you insert an ActiveX control into a project, it is useful to view and change the properties supported by the ActiveX control. This article discusses how to use the Visual Studio resource editor to do this. If your ActiveX control container application uses embedded controls, you can view and modify the control's properties while in the resource editor. You can also use the resource editor to set property values during design time. The resource editor then automatically saves these values in the project's resource file. Any instance of the control will then have its properties initialized to these values. diff --git a/docs/mfc/activex-control-containers.md b/docs/mfc/activex-control-containers.md index 0201f13955c..25f68beb623 100644 --- a/docs/mfc/activex-control-containers.md +++ b/docs/mfc/activex-control-containers.md @@ -20,7 +20,7 @@ Control containers typically take two forms in a project: The ActiveX control container interacts with the control via exposed [methods](mfc-activex-controls-methods.md) and [properties](mfc-activex-controls-properties.md). These methods and properties, which can be accessed and modified by the control container, are accessed through a wrapper class in the ActiveX control container project. The embedded ActiveX control can also interact with the container by firing (sending) [events](mfc-activex-controls-events.md) to notify the container that an action has occurred. The control container can choose to act upon these notifications or not. -Additional articles discuss several topics, from creating an ActiveX control container project to basic implementation issues related to ActiveX control containers built with Visual C++: +Additional articles discuss several topics, from creating an ActiveX control container project to basic implementation issues related to ActiveX control containers built with Visual Studio: - [Creating an MFC ActiveX Control Container](reference/creating-an-mfc-activex-control-container.md) @@ -42,7 +42,7 @@ Additional articles discuss several topics, from creating an ActiveX control con For more information about using ActiveX controls in a dialog box, see the [Dialog Editor](../windows/dialog-editor.md) topics. -For a list of articles that explain the details of developing ActiveX controls using Visual C++ and the MFC ActiveX control classes, see [MFC ActiveX controls](mfc-activex-controls.md). The articles are grouped by functional categories. +For a list of articles that explain the details of developing ActiveX controls using Visual Studio and the MFC ActiveX control classes, see [MFC ActiveX controls](mfc-activex-controls.md). The articles are grouped by functional categories. ## See also diff --git a/docs/mfc/activex-controls.md b/docs/mfc/activex-controls.md index af9ca221c6c..a2beb263314 100644 --- a/docs/mfc/activex-controls.md +++ b/docs/mfc/activex-controls.md @@ -7,7 +7,7 @@ ms.assetid: 52aaec4d-3889-402e-b57d-758078f8ac57 --- # ActiveX Controls -In Visual C++ you can create ActiveX controls using MFC or ATL. +In Visual Studio you can create ActiveX controls using MFC or ATL. >[!IMPORTANT] > ActiveX is a legacy technology that should not be used for new development. Many capabilities of ActiveX controls can be performed in a simpler and much more secure way with modern technologies such as HTML5 and JavaScript, modern browser extensions, or WebAssembly modules. For more information, see [A break from the past, part 2: Saying goodbye to ActiveX, VBScript, attachEvent](https://blogs.windows.com/msedgedev/2015/05/06/a-break-from-the-past-part-2-saying-goodbye-to-activex-vbscript-attachevent/) and [Native Messaging](/microsoft-edge/extensions/guides/native-messaging) and [Microsoft Edge extensions](/microsoft-edge/extensions) and [WebAssembly](https://webassembly.org/). diff --git a/docs/mfc/alternatives-to-the-document-view-architecture.md b/docs/mfc/alternatives-to-the-document-view-architecture.md index 5254b76bd37..b89b6dbc905 100644 --- a/docs/mfc/alternatives-to-the-document-view-architecture.md +++ b/docs/mfc/alternatives-to-the-document-view-architecture.md @@ -22,7 +22,7 @@ To create an application that does not use the document/view architecture, clear > [!NOTE] > Dialog-based applications produced by the MFC Application Wizard do not use the document/view architecture, so the **Document/View architecture support** check box is disabled if you select the dialog application type. -The Visual C++ wizards, as well as the source and dialog editors, work with the generated application just as they would with any other Wizard-generated application. The application can support toolbars, scrollbars, and a status bar, and has an **About** box. Your application will not register any document templates, and it will not contain a document class. +The Visual Studio wizards, as well as the source and dialog editors, work with the generated application just as they would with any other Wizard-generated application. The application can support toolbars, scrollbars, and a status bar, and has an **About** box. Your application will not register any document templates, and it will not contain a document class. Note that your generated application has a view class, `CChildView`, derived from `CWnd`. MFC creates and positions one instance of the view class within the frame windows created by your application. MFC still enforces using a view window, because it simplifies positioning and managing the application's content. You can add painting code to the `OnPaint` member of this class. Your code should add scrollbars to the view rather than to the frame. diff --git a/docs/mfc/automation-clients-using-type-libraries.md b/docs/mfc/automation-clients-using-type-libraries.md index d5c6ccb2cc8..4c8eb1cb81e 100644 --- a/docs/mfc/automation-clients-using-type-libraries.md +++ b/docs/mfc/automation-clients-using-type-libraries.md @@ -14,9 +14,9 @@ This type information can be made known in several ways. The recommended way is For information on [MkTypLib](/windows/win32/Midl/differences-between-midl-and-mktyplib), see the Windows SDK. -Visual C++ can read a type-library file and create a dispatch class derived from [COleDispatchDriver](reference/coledispatchdriver-class.md). An object of that class has properties and operations duplicating those of the server object. Your application calls this object's properties and operations, and functionality inherited from `COleDispatchDriver` routes these calls to the OLE system, which in turn routes them to the server object. +Visual Studio can read a type-library file and create a dispatch class derived from [COleDispatchDriver](reference/coledispatchdriver-class.md). An object of that class has properties and operations duplicating those of the server object. Your application calls this object's properties and operations, and functionality inherited from `COleDispatchDriver` routes these calls to the OLE system, which in turn routes them to the server object. -Visual C++ automatically maintains this type-library file for you if you chose to include Automation when the project was created. As part of each build, the .tlb file will be built with MkTypLib. +Visual Studio automatically maintains this type-library file for you if you chose to include Automation when the project was created. As part of each build, the .tlb file will be built with MkTypLib. ### To create a dispatch class from a type-library (.tlb) file diff --git a/docs/mfc/automation-servers.md b/docs/mfc/automation-servers.md index 5a8b3b31a32..848c8d97b37 100644 --- a/docs/mfc/automation-servers.md +++ b/docs/mfc/automation-servers.md @@ -20,7 +20,7 @@ By exposing application functionality through a common, well-defined interface, ## Support for Automation Servers -Visual C++ and the MFC framework provide extensive support for Automation servers. They handle much of the overhead involved in making an Automation server, so you can focus your efforts on the functionality of your application. +Visual Studio and the MFC framework provide extensive support for Automation servers. They handle much of the overhead involved in making an Automation server, so you can focus your efforts on the functionality of your application. The framework's principal mechanism for supporting Automation is the dispatch map, a set of macros that expands into the declarations and calls needed to expose methods and properties for OLE. A typical dispatch map looks like this: diff --git a/docs/mfc/automation.md b/docs/mfc/automation.md index beca853d89d..9951fd3eff3 100644 --- a/docs/mfc/automation.md +++ b/docs/mfc/automation.md @@ -23,7 +23,7 @@ As another example, a word processor might expose its spell-checking functionali More important is the support Automation provides to users and solution providers. By exposing application functionality through a common, well-defined interface, Automation makes it possible to build comprehensive solutions in a single general programming language, such as Microsoft Visual Basic, instead of in diverse application-specific macro languages. -Many commercial applications, such as Microsoft Excel and Microsoft Visual C++, allow you to automate much of their functionality. For example, in Visual C++, you can write VBScript macros to automate builds, aspects of code editing, or debugging tasks. +Many commercial applications, such as Microsoft Excel and Visual Studio, allow you to automate much of their functionality. For example, in Visual Studio, you can write VBScript macros to automate builds, aspects of code editing, or debugging tasks. ## Passing Parameters in Automation diff --git a/docs/mfc/changing-the-styles-of-a-window-created-by-mfc.md b/docs/mfc/changing-the-styles-of-a-window-created-by-mfc.md index eb6d87a53c4..fdab577e449 100644 --- a/docs/mfc/changing-the-styles-of-a-window-created-by-mfc.md +++ b/docs/mfc/changing-the-styles-of-a-window-created-by-mfc.md @@ -12,7 +12,7 @@ In its version of the `WinMain` function, MFC registers several standard window ## Changing Styles in a New MFC Application -If you're using Visual C++ 2.0 or later, you can change the default window styles in the Application Wizard when you create your application. In the Application Wizard's User Interface Features page, you can change styles for your main frame window and MDI child windows. For either window type, you can specify its frame thickness (thick or thin) and any of the following: +If you're using Microsoft C++ 2.0 or later, you can change the default window styles in the Application Wizard when you create your application. In the Application Wizard's User Interface Features page, you can change styles for your main frame window and MDI child windows. For either window type, you can specify its frame thickness (thick or thin) and any of the following: - Whether the window has Minimize or Maximize controls. diff --git a/docs/mfc/clipboard-using-the-windows-clipboard.md b/docs/mfc/clipboard-using-the-windows-clipboard.md index 64d3123609b..e07d461aecc 100644 --- a/docs/mfc/clipboard-using-the-windows-clipboard.md +++ b/docs/mfc/clipboard-using-the-windows-clipboard.md @@ -19,7 +19,7 @@ The Cut, Copy, and Paste commands are only meaningful in certain contexts. The C The Microsoft Foundation Class Library does provide Clipboard support for text editing with the `CEdit` and `CEditView` classes. The OLE classes also simplify implementing Clipboard operations that involve OLE items. For more information on the OLE classes, see [Clipboard: Using the OLE Clipboard Mechanism](clipboard-using-the-ole-clipboard-mechanism.md). -Implementing other Edit menu commands, such as Undo (**ID_EDIT_UNDO**) and Redo (**ID_EDIT_REDO**), is also left to you. If your application does not support these commands, you can easily delete them from your resource file using the Visual C++ resource editors. +Implementing other Edit menu commands, such as Undo (**ID_EDIT_UNDO**) and Redo (**ID_EDIT_REDO**), is also left to you. If your application does not support these commands, you can easily delete them from your resource file using the Visual Studio resource editors. ## What do you want to know more about diff --git a/docs/mfc/command-ids.md b/docs/mfc/command-ids.md index aacb5c805f9..d5508f8a545 100644 --- a/docs/mfc/command-ids.md +++ b/docs/mfc/command-ids.md @@ -11,7 +11,7 @@ A command is fully described by its command ID alone (encoded in the **WM_COMMAN For example, a Clear All item in the Edit menu might be assigned an ID such as **ID_EDIT_CLEAR_ALL**. The class library predefines some IDs, particularly for commands that the framework handles itself, such as **ID_EDIT_CLEAR_ALL** or **ID_FILE_OPEN**. You will create other command IDs yourself. -When you create your own menus in the Visual C++ menu editor, it is a good idea to follow the class library's naming convention as illustrated by **ID_FILE_OPEN**. [Standard Commands](standard-commands.md) explains the standard commands defined by the class library. +When you create your own menus in the Visual Studio menu editor, it is a good idea to follow the class library's naming convention as illustrated by **ID_FILE_OPEN**. [Standard Commands](standard-commands.md) explains the standard commands defined by the class library. ## See also diff --git a/docs/mfc/containers-for-activex-controls.md b/docs/mfc/containers-for-activex-controls.md index 6f6926c793a..8f11ee29d83 100644 --- a/docs/mfc/containers-for-activex-controls.md +++ b/docs/mfc/containers-for-activex-controls.md @@ -7,7 +7,7 @@ ms.assetid: 5ff0bf37-07f4-49aa-ad9c-c63d3756243a --- # Containers for ActiveX Controls -You can use ActiveX controls developed in Visual C++ in other applications, as long as they support ActiveX control containment. A number of Microsoft applications, beginning with the versions listed, support ActiveX control containment. +You can use ActiveX controls developed in Visual Studio in other applications, as long as they support ActiveX control containment. A number of Microsoft applications, beginning with the versions listed, support ActiveX control containment. >[!IMPORTANT] > ActiveX is a legacy technology that should not be used for new development. For more information about modern technologies that supersede ActiveX, see [ActiveX Controls](activex-controls.md). @@ -21,7 +21,7 @@ Applications that support ActiveX control containment include: - Visual Basic 4.x and greater -- Visual C++ 4.x and greater +- Microsoft C++ 4.x and greater - Access 95 and greater diff --git a/docs/mfc/controls-mfc.md b/docs/mfc/controls-mfc.md index fda1eeccf12..2fe0a205f76 100644 --- a/docs/mfc/controls-mfc.md +++ b/docs/mfc/controls-mfc.md @@ -17,7 +17,7 @@ Controls are objects that users can interact with to enter or manipulate data. T ## Windows Common Controls -The Windows operating system has always provided a number of Windows common controls. These control objects are programmable, and the Visual C++ dialog editor supports adding them to your dialog boxes. The Microsoft Foundation Class Library (MFC) supplies classes that encapsulate each of these controls, as shown in the table [Windows Common Controls and MFC Classes](#_core_windows_common_controls_and_mfc_classes). (Some items in the table have related topics that describe them further. For controls that lack topics, see the documentation for the MFC class.) +The Windows operating system has always provided a number of Windows common controls. These control objects are programmable, and the Visual Studio dialog editor supports adding them to your dialog boxes. The Microsoft Foundation Class Library (MFC) supplies classes that encapsulate each of these controls, as shown in the table [Windows Common Controls and MFC Classes](#_core_windows_common_controls_and_mfc_classes). (Some items in the table have related topics that describe them further. For controls that lack topics, see the documentation for the MFC class.) Class [CWnd](reference/cwnd-class.md) is the base class of all window classes, including all of the control classes. diff --git a/docs/mfc/creating-an-active-document-container-application.md b/docs/mfc/creating-an-active-document-container-application.md index c1ef6e9ac2d..077cea8136c 100644 --- a/docs/mfc/creating-an-active-document-container-application.md +++ b/docs/mfc/creating-an-active-document-container-application.md @@ -14,7 +14,7 @@ The simplest and most recommended way to create an active document container app 1. From the **File** menu, click **Project**from the **New** submenu. -1. From the left pane, click **Visual C++** project type. +1. From the left pane, click **MicrosoftVisual Studio** project type. 1. Select **MFC Application** from the right pane. diff --git a/docs/mfc/crebar-vs-crebarctrl.md b/docs/mfc/crebar-vs-crebarctrl.md index 6750c3db526..34ddc168552 100644 --- a/docs/mfc/crebar-vs-crebarctrl.md +++ b/docs/mfc/crebar-vs-crebarctrl.md @@ -11,7 +11,7 @@ MFC provides two classes to create rebars: [CReBar](reference/crebar-class.md) a `CReBarCtrl` is a wrapper class for the Win32 rebar control, and therefore may be easier to implement if you do not intend to integrate the rebar into the MFC architecture. If you plan to use `CReBarCtrl` and integrate the rebar into the MFC architecture, you must take additional care to communicate rebar control manipulations to MFC. This communication is not difficult; however, it is additional work that is unneeded when you use `CReBar`. -Visual C++ provides two ways to take advantage of the rebar common control. +Visual Studio provides two ways to take advantage of the rebar common control. - Create the rebar using `CReBar`, and then call [CReBar::GetReBarCtrl](reference/crebar-class.md#getrebarctrl) to get access to the `CReBarCtrl` member functions. diff --git a/docs/mfc/cwinapp-the-application-class.md b/docs/mfc/cwinapp-the-application-class.md index ba5a5f0062f..a34f9b55a13 100644 --- a/docs/mfc/cwinapp-the-application-class.md +++ b/docs/mfc/cwinapp-the-application-class.md @@ -19,7 +19,7 @@ Like any program for the Windows operating system, your framework application ha To initialize the application, `WinMain` calls your application object's `InitApplication` and `InitInstance` member functions. To run the application's message loop, `WinMain` calls the **Run** member function. On termination, `WinMain` calls the application object's `ExitInstance` member function. > [!NOTE] -> Names shown in **bold** in this documentation indicate elements supplied by the Microsoft Foundation Class Library and Visual C++. Names shown in `monospaced` type indicate elements that you create or override. +> Names shown in **bold** in this documentation indicate elements supplied by the Microsoft Foundation Class Library and Visual Studio. Names shown in `monospaced` type indicate elements that you create or override. ## See also diff --git a/docs/mfc/dao-classes.md b/docs/mfc/dao-classes.md index ad16f3fe673..85553ceccae 100644 --- a/docs/mfc/dao-classes.md +++ b/docs/mfc/dao-classes.md @@ -14,7 +14,7 @@ These classes work with the other application framework classes to give easy acc Programs that use DAO databases will have at least a `CDaoDatabase` object and a `CDaoRecordset` object. > [!NOTE] -> The Visual C++ environment and wizards no longer support DAO (although the DAO classes are included and you can still use them). Microsoft recommends that you use ODBC for new MFC projects. You should only use DAO in maintaining existing applications. +> The Visual Studio environment and wizards no longer support DAO (although the DAO classes are included and you can still use them). Microsoft recommends that you use ODBC for new MFC projects. You should only use DAO in maintaining existing applications. [CDaoWorkspace](reference/cdaoworkspace-class.md)
Manages a named, password-protected database session from login to logoff. Most programs use the default workspace. diff --git a/docs/mfc/derived-view-classes-available-in-mfc.md b/docs/mfc/derived-view-classes-available-in-mfc.md index e0831af6ac6..90f9c090011 100644 --- a/docs/mfc/derived-view-classes-available-in-mfc.md +++ b/docs/mfc/derived-view-classes-available-in-mfc.md @@ -18,7 +18,7 @@ The following table shows MFC's view classes and their relationships to one anot |[CEditView](reference/ceditview-class.md)|A simple view based on the Windows edit box control. Allows entering and editing text and can be used as the basis for a simple text editor application. See also `CRichEditView`.| |[CRichEditView](reference/cricheditview-class.md)|A view containing a [CRichEditCtrl](reference/cricheditctrl-class.md) object. This class is analogous to `CEditView`, but unlike `CEditView`, `CRichEditView` handles formatted text.| |[CListView](reference/clistview-class.md)|A view containing a [CListCtrl](reference/clistctrl-class.md) object.| -|[CTreeView](reference/ctreeview-class.md)|A view containing a [CTreeCtrl](reference/ctreectrl-class.md) object, for views that resemble the Solution Explorer window in Visual C++.| +|[CTreeView](reference/ctreeview-class.md)|A view containing a [CTreeCtrl](reference/ctreectrl-class.md) object, for views that resemble the Solution Explorer window in Visual Studio.| |[CScrollView](reference/cscrollview-class.md)|Base class of `CFormView`, `CRecordView`, and `CDaoRecordView`. Implements scrolling the view's contents.| |[CFormView](reference/cformview-class.md)|A form view, a view that contains controls. A forms-based application provides one or more such form interfaces.| |[CHtmlView](reference/chtmlview-class.md)|A Web browser view with which the application's user can browse sites on the World Wide Web, as well as folders in the local file system and on a network. The Web browser view can also work as an Active document container.| diff --git a/docs/mfc/dialog-bars.md b/docs/mfc/dialog-bars.md index 3e1b3cb5fba..f1d629b751a 100644 --- a/docs/mfc/dialog-bars.md +++ b/docs/mfc/dialog-bars.md @@ -9,7 +9,7 @@ ms.assetid: 485c8055-6bb0-4051-8417-dd2971499321 A dialog bar is a toolbar, a kind of [control bar](control-bars.md) that can contain any kind of control. Because it has the characteristics of a modeless dialog box, a [CDialogBar](reference/cdialogbar-class.md) object provides a more powerful toolbar. -There are several key differences between a toolbar and a `CDialogBar` object. A `CDialogBar` object is created from a dialog-template resource, which you can create with the Visual C++ dialog editor and which can contain any kind of Windows control. The user can tab from control to control. And you can specify an alignment style to align the dialog bar with any part of the parent frame window or even to leave it in place if the parent is resized. The following figure shows a dialog bar with a variety of controls. +There are several key differences between a toolbar and a `CDialogBar` object. A `CDialogBar` object is created from a dialog-template resource, which you can create with the Visual Studio dialog editor and which can contain any kind of Windows control. The user can tab from control to control. And you can specify an alignment style to align the dialog bar with any part of the parent frame window or even to leave it in place if the parent is resized. The following figure shows a dialog bar with a variety of controls. ![Example of a VC Dialog Bar.](../mfc/media/vc378t1.gif "VC Dialog Bar")
A Dialog Bar diff --git a/docs/mfc/dialog-boxes.md b/docs/mfc/dialog-boxes.md index 780520efb62..52ff46b668e 100644 --- a/docs/mfc/dialog-boxes.md +++ b/docs/mfc/dialog-boxes.md @@ -7,7 +7,7 @@ ms.assetid: e4feea1a-8360-4ccb-9b84-507f1ccd9ef3 --- # Dialog Boxes -Applications for Windows frequently communicate with the user through dialog boxes. Class [CDialog](reference/cdialog-class.md) provides an interface for managing dialog boxes, the Visual C++ dialog editor makes it easy to design dialog boxes and create their dialog-template resources, and Code wizards simplify the process of initializing and validating the controls in a dialog box and of gathering the values entered by the user. +Applications for Windows frequently communicate with the user through dialog boxes. Class [CDialog](reference/cdialog-class.md) provides an interface for managing dialog boxes, the Visual Studio dialog editor makes it easy to design dialog boxes and create their dialog-template resources, and Code wizards simplify the process of initializing and validating the controls in a dialog box and of gathering the values entered by the user. Dialog boxes contain controls, including: diff --git a/docs/mfc/docking-and-floating-toolbars.md b/docs/mfc/docking-and-floating-toolbars.md index 2dc9f54a2a7..e68d5dd87f7 100644 --- a/docs/mfc/docking-and-floating-toolbars.md +++ b/docs/mfc/docking-and-floating-toolbars.md @@ -57,7 +57,7 @@ The MFC implementation of dockable toolbars does not provide some of the extende ## Dynamically Resizing the Toolbar -As of Visual C++ version 4.0, you can make it possible for users of your application to resize floating toolbars dynamically. Typically, a toolbar has a long, linear shape, displayed horizontally. But you can change the toolbar's orientation and its shape. For example, when the user docks a toolbar against one of the vertical sides of the frame window, the shape changes to a vertical layout. It's also possible to reshape the toolbar into a rectangle with multiple rows of buttons. +As of Visual Studio version 4.0, you can make it possible for users of your application to resize floating toolbars dynamically. Typically, a toolbar has a long, linear shape, displayed horizontally. But you can change the toolbar's orientation and its shape. For example, when the user docks a toolbar against one of the vertical sides of the frame window, the shape changes to a vertical layout. It's also possible to reshape the toolbar into a rectangle with multiple rows of buttons. You can: diff --git a/docs/mfc/document-and-view-classes-created-by-the-mfc-application-wizard.md b/docs/mfc/document-and-view-classes-created-by-the-mfc-application-wizard.md index 6003a3f8dc8..5ebeea6596b 100644 --- a/docs/mfc/document-and-view-classes-created-by-the-mfc-application-wizard.md +++ b/docs/mfc/document-and-view-classes-created-by-the-mfc-application-wizard.md @@ -7,7 +7,7 @@ ms.assetid: 70c34a60-2701-4981-acea-c08a5787d8e6 --- # Document and View Classes Created by the MFC Application Wizard -The MFC Application Wizard gives you a head start on your program development by creating skeletal document and view classes for you. You can then [map commands and messages to these classes](reference/mapping-messages-to-functions.md) and use the Visual C++ source code editor to write their member functions. +The MFC Application Wizard gives you a head start on your program development by creating skeletal document and view classes for you. You can then [map commands and messages to these classes](reference/mapping-messages-to-functions.md) and use the Visual Studio source code editor to write their member functions. The document class created by the MFC Application Wizard is derived from class [CDocument](reference/cdocument-class.md). The view class is derived from [CView](reference/cview-class.md). The names that the Application Wizard gives these classes and the files that contain them are based on the project name you supply in the Application Wizard dialog box. In the Application Wizard, you can use the Generated Classes page to alter the default names. diff --git a/docs/mfc/form-views-mfc.md b/docs/mfc/form-views-mfc.md index 05801af5441..87517953bb5 100644 --- a/docs/mfc/form-views-mfc.md +++ b/docs/mfc/form-views-mfc.md @@ -7,14 +7,14 @@ ms.assetid: efbe73c1-4ca4-4613-aac2-30d916e92c0e --- # Form Views (MFC) -You can add forms to any Visual C++ application that supports the MFC libraries, including a [forms-based application](reference/creating-a-forms-based-mfc-application.md) (one whose view class is derived from `CFormView`). If you did not initially create your application to support forms, Visual C++ will add this support for you when you insert a new form. In an SDI or MDI application, which implements the default [document/view architecture](document-view-architecture.md), when the user chooses the **New** command (by default, on the **File** menu), Visual C++ prompts the user to choose from the available forms. +You can add forms to any Visual Studio application that supports the MFC libraries, including a [forms-based application](reference/creating-a-forms-based-mfc-application.md) (one whose view class is derived from `CFormView`). If you did not initially create your application to support forms, Visual Studio will add this support for you when you insert a new form. In an SDI or MDI application, which implements the default [document/view architecture](document-view-architecture.md), when the user chooses the **New** command (by default, on the **File** menu), Visual Studio prompts the user to choose from the available forms. With an SDI application, when the user chooses the **New** command, the current instance of the form continues to run but a new instance of the application with the selected form is created if one is not found. In an MDI application, the current instance of the form continues to run when the user chooses the **New** command. > [!NOTE] -> You can insert a form into a dialog-based application (one whose dialog class is based on `CDialog` and one in which no view class is implemented). However, without the document/view architecture, Visual C++ does not automatically implement the **File** > **New** functionality. You must create a way for the user to view additional forms, such as by implementing a tabbed dialog box with various property pages. +> You can insert a form into a dialog-based application (one whose dialog class is based on `CDialog` and one in which no view class is implemented). However, without the document/view architecture, Visual Studio does not automatically implement the **File** > **New** functionality. You must create a way for the user to view additional forms, such as by implementing a tabbed dialog box with various property pages. -When you insert a new form into your application, Visual C++ does the following: +When you insert a new form into your application, Visual Studio does the following: - Creates a class based on one of the form-style classes that you choose (`CFormView`, `CRecordView`, `CDaoRecordView`, or `CDialog`). @@ -42,7 +42,7 @@ For applications based on the document/view architecture, the **New Form** comma - Adds a call to `AddDocumentTemplate` in your application's `InitInstance` code. - Visual C++ adds this code for each new form you create, which adds the form to the list of available forms when the user chooses the **New** command. This code includes the form's associated resource ID and the names of the associated document, view, and frame classes that together make up the new form object. + Visual Studio adds this code for each new form you create, which adds the form to the list of available forms when the user chooses the **New** command. This code includes the form's associated resource ID and the names of the associated document, view, and frame classes that together make up the new form object. Document templates serve as the connection between documents, frame windows, and views. For a single document, you can create many templates. diff --git a/docs/mfc/framework-mfc.md b/docs/mfc/framework-mfc.md index 0bd459a85d7..7c8996f07c3 100644 --- a/docs/mfc/framework-mfc.md +++ b/docs/mfc/framework-mfc.md @@ -7,7 +7,7 @@ ms.assetid: 3be0fec8-9843-4119-ae42-ece993ef500b --- # Framework (MFC) -Your work with the Microsoft Foundation Class (MFC) Library framework is based largely on a few major classes and several Visual C++ tools. Some classes encapsulate a large portion of the Win32 application programming interface (API). Other classes encapsulate application concepts such as documents, views, and the application itself. Still others encapsulate OLE features and ODBC and DAO data-access functionality. (DAO is supported through Office 2013. DAO 3.6 is the final version, and it is considered obsolete.) +Your work with the Microsoft Foundation Class (MFC) Library framework is based largely on a few major classes and several Visual Studio tools. Some classes encapsulate a large portion of the Win32 application programming interface (API). Other classes encapsulate application concepts such as documents, views, and the application itself. Still others encapsulate OLE features and ODBC and DAO data-access functionality. (DAO is supported through Office 2013. DAO 3.6 is the final version, and it is considered obsolete.) For example, Win32's concept of window is encapsulated by MFC class `CWnd`. That is, a C++ class called `CWnd` encapsulates or "wraps" the `HWND` handle that represents a Windows window. Likewise, class `CDialog` encapsulates Win32 dialog boxes. diff --git a/docs/mfc/how-wininet-makes-it-easier-to-create-internet-client-applications.md b/docs/mfc/how-wininet-makes-it-easier-to-create-internet-client-applications.md index 4b8cec07283..e9adb0c6a10 100644 --- a/docs/mfc/how-wininet-makes-it-easier-to-create-internet-client-applications.md +++ b/docs/mfc/how-wininet-makes-it-easier-to-create-internet-client-applications.md @@ -9,7 +9,7 @@ ms.assetid: dc0f9f47-3184-4e7a-8074-2c63e0359885 The Win32 Internet Extensions, or WinInet, provide access to common Internet protocols, including gopher, FTP, and HTTP. Using WinInet, you can write Internet client applications at a higher level of programming, without having to deal with WinSock, TCP/IP, or the details of specific Internet protocols. WinInet provides a consistent set of functions for all three protocols, with a familiar Win32 API interface. This consistency minimizes code changes you need to make if the underlying protocol changes (for example, from FTP to HTTP). -Visual C++ provides two ways for you to use WinInet. You can call the Win32 Internet functions directly (see the OLE documentation in the Windows SDK for more information) or you can use WinInet through the [MFC WinInet classes](mfc-classes-for-creating-internet-client-applications.md). +Visual Studio provides two ways for you to use WinInet. You can call the Win32 Internet functions directly (see the OLE documentation in the Windows SDK for more information) or you can use WinInet through the [MFC WinInet classes](mfc-classes-for-creating-internet-client-applications.md). **You can use WinInet to:** diff --git a/docs/mfc/idle-loop-processing.md b/docs/mfc/idle-loop-processing.md index 33d16f0956d..04bee6c2f4a 100644 --- a/docs/mfc/idle-loop-processing.md +++ b/docs/mfc/idle-loop-processing.md @@ -32,7 +32,7 @@ Another method for performing idle processing in an application involves embeddi [!code-cpp[NVC_MFCDocView#8](codesnippet/cpp/idle-loop-processing_1.cpp)] -This code, embedded in a function, loops as long as there is idle processing to do. Within that loop, a nested loop repeatedly calls `PeekMessage`. As long as that call returns a nonzero value, the loop calls `CWinThread::PumpMessage` to perform normal message translation and dispatching. Although `PumpMessage` is undocumented, you can examine its source code in the ThrdCore.Cpp file in the \atlmfc\src\mfc directory of your Visual C++ installation. +This code, embedded in a function, loops as long as there is idle processing to do. Within that loop, a nested loop repeatedly calls `PeekMessage`. As long as that call returns a nonzero value, the loop calls `CWinThread::PumpMessage` to perform normal message translation and dispatching. Although `PumpMessage` is undocumented, you can examine its source code in the ThrdCore.Cpp file in the \atlmfc\src\mfc directory of your Visual Studio installation. Once the inner loop ends, the outer loop performs idle processing with one or more calls to `OnIdle`. The first call is for MFC's purposes. You can make additional calls to `OnIdle` to do your own background work. diff --git a/docs/mfc/inserting-a-form-into-a-project.md b/docs/mfc/inserting-a-form-into-a-project.md index 0166e9f5d36..ad08c10130e 100644 --- a/docs/mfc/inserting-a-form-into-a-project.md +++ b/docs/mfc/inserting-a-form-into-a-project.md @@ -22,7 +22,7 @@ Forms provide a convenient container for controls. You can easily insert an MFC- 1. Using the MFC Class Wizard, make the new class derive from [CFormView](reference/cformview-class.md). -Visual C++ adds the form to your application, opening it inside the Dialog editor so that you can begin adding controls and working on its overall design. +Visual Studio adds the form to your application, opening it inside the Dialog editor so that you can begin adding controls and working on its overall design. You may want to perform the following additional steps (not applicable for dialog-based applications): diff --git a/docs/mfc/making-and-using-controls.md b/docs/mfc/making-and-using-controls.md index 6e88beb322b..8cba3f0fffc 100644 --- a/docs/mfc/making-and-using-controls.md +++ b/docs/mfc/making-and-using-controls.md @@ -8,7 +8,7 @@ ms.topic: concept-article --- # Making and Using Controls -You make most controls for dialog boxes in the Visual C++ [dialog editor](../windows/dialog-editor.md). But you can also create controls in any dialog box or window. +You make most controls for dialog boxes in the Visual Studio [dialog editor](../windows/dialog-editor.md). But you can also create controls in any dialog box or window. ## What do you want to know more about diff --git a/docs/mfc/mapi-support-in-mfc.md b/docs/mfc/mapi-support-in-mfc.md index cdb9d8b6388..10329e6fd07 100644 --- a/docs/mfc/mapi-support-in-mfc.md +++ b/docs/mfc/mapi-support-in-mfc.md @@ -21,7 +21,7 @@ MAPI needs to read the file to send the attachment. If the application keeps its #### To implement a Send Mail command with MFC -1. Use the Visual C++ menu editor to add a menu item whose command ID is ID_FILE_SEND_MAIL. +1. Use the Visual Studio menu editor to add a menu item whose command ID is ID_FILE_SEND_MAIL. This command ID is provided by the framework in AFXRES.H. The command can be added to any menu, but it is usually added to the **File** menu. diff --git a/docs/mfc/menus-mfc.md b/docs/mfc/menus-mfc.md index 5cbfe9db0ff..8bbd4098c79 100644 --- a/docs/mfc/menus-mfc.md +++ b/docs/mfc/menus-mfc.md @@ -13,7 +13,7 @@ MFC supplies two elements to help you work with menus: - A mechanism for updating menus and toolbar buttons: enabling or disabling them on the fly to suit current program conditions. -Visual C++ also provides a [menu editor](../windows/menu-editor.md) for creating and editing your program's menu resources. +Visual Studio also provides a [menu editor](../windows/menu-editor.md) for creating and editing your program's menu resources. ## What do you want to know more about diff --git a/docs/mfc/message-handlers.md b/docs/mfc/message-handlers.md index 80bf4659c7d..5e8c2495f70 100644 --- a/docs/mfc/message-handlers.md +++ b/docs/mfc/message-handlers.md @@ -13,7 +13,7 @@ Writing message handlers accounts for a large proportion of your work in writing What does the handler for a message do It does whatever you want done in response to that message. You can create the handlers by using the [Class Wizard](reference/mfc-class-wizard.md) of the class, and then fill in the handler's code using the source code editor. -You can use all of the facilities of Microsoft Visual C++ and MFC to write your handlers. For a list of all classes, see [Class Library Overview](class-library-overview.md) in the *MFC Reference*. +You can use all of the facilities of Visual Studio and MFC to write your handlers. For a list of all classes, see [Class Library Overview](class-library-overview.md) in the *MFC Reference*. ## See also diff --git a/docs/mfc/methods-of-creating-a-status-bar.md b/docs/mfc/methods-of-creating-a-status-bar.md index 7d4e9bc4cf0..aa914e3f097 100644 --- a/docs/mfc/methods-of-creating-a-status-bar.md +++ b/docs/mfc/methods-of-creating-a-status-bar.md @@ -11,7 +11,7 @@ MFC provides two classes to create status bars: [CStatusBar](reference/cstatusba `CStatusBarCtrl` usually results in a smaller executable, and you may prefer to use `CStatusBarCtrl` if you do not intend to integrate the status bar into the MFC architecture. If you plan to use `CStatusBarCtrl` and integrate the status bar into the MFC architecture, you must take additional care to communicate status bar control manipulations to MFC. This communication is not difficult; however, it is additional work that is unneeded when you use `CStatusBar`. -Visual C++ provides two ways to take advantage of the status bar common control. +Visual Studio provides two ways to take advantage of the status bar common control. - Create the status bar using `CStatusBar`, and then call [CStatusBar::GetStatusBarCtrl](reference/cstatusbar-class.md#getstatusbarctrl) to get access to the `CStatusBarCtrl` member functions. diff --git a/docs/mfc/methods-of-creating-a-toolbar.md b/docs/mfc/methods-of-creating-a-toolbar.md index aca7ea41dc3..b241b3f46a3 100644 --- a/docs/mfc/methods-of-creating-a-toolbar.md +++ b/docs/mfc/methods-of-creating-a-toolbar.md @@ -11,7 +11,7 @@ MFC provides two classes to create toolbars: [CToolBar](reference/ctoolbar-class `CToolBarCtrl` usually results in a smaller executable, and you may prefer to use `CToolBarCtrl` if you do not intend to integrate the toolbar into the MFC architecture. If you plan to use `CToolBarCtrl` and integrate the toolbar into the MFC architecture, you must take additional care to communicate toolbar control manipulations to MFC. This communication is not difficult; however, it is additional work that is unneeded when you use `CToolBar`. -Visual C++ provides two ways to take advantage of the toolbar common control. +Visual Studio provides two ways to take advantage of the toolbar common control. - Create the toolbar using `CToolBar`, and then call [CToolBar::GetToolBarCtrl](reference/ctoolbar-class.md#gettoolbarctrl) to get access to the `CToolBarCtrl` member functions. diff --git a/docs/mfc/mfc-activex-controls-advanced-topics.md b/docs/mfc/mfc-activex-controls-advanced-topics.md index 12416853047..ecf01fac6b0 100644 --- a/docs/mfc/mfc-activex-controls-advanced-topics.md +++ b/docs/mfc/mfc-activex-controls-advanced-topics.md @@ -29,7 +29,7 @@ Because the ActiveX control classes are part of the class library, you can apply For a general overview of the MFC database classes, see [MFC Database Classes (DAO and ODBC)](../data/mfc-database-classes-odbc-and-dao.md). The article introduces both the MFC ODBC classes and the MFC DAO classes and directs you to more details on either. > [!NOTE] -> DAO is supported through Office 2013. DAO 3.6 is the final version, and it is considered obsolete. The Visual C++ environment and wizards do not support DAO (although the DAO classes are included and you can still use them). Microsoft recommends that you use [OLE DB Templates](../data/oledb/ole-db-programming.md) or [ODBC and MFC](../data/odbc/odbc-and-mfc.md) for new projects. You should only use DAO in maintaining existing applications. +> DAO is supported through Office 2013. DAO 3.6 is the final version, and it is considered obsolete. The Visual Studio environment and wizards do not support DAO (although the DAO classes are included and you can still use them). Microsoft recommends that you use [OLE DB Templates](../data/oledb/ole-db-programming.md) or [ODBC and MFC](../data/odbc/odbc-and-mfc.md) for new projects. You should only use DAO in maintaining existing applications. ## Implementing a Parameterized Property diff --git a/docs/mfc/mfc-activex-controls-using-stock-property-pages.md b/docs/mfc/mfc-activex-controls-using-stock-property-pages.md index e9553c4cef5..475aab0f011 100644 --- a/docs/mfc/mfc-activex-controls-using-stock-property-pages.md +++ b/docs/mfc/mfc-activex-controls-using-stock-property-pages.md @@ -30,7 +30,7 @@ Note that the count of property pages, in the BEGIN_PROPPAGEIDS macro, is 4. Thi After these modifications have been made, rebuild your project. Your control now has property pages for the font, picture, and color properties. > [!NOTE] -> If the control stock property pages cannot be accessed, it may be because the MFC DLL (MFCxx.DLL) has not been properly registered with the current operating system. This usually results from installing Visual C++ under an operating system different from the one currently running. +> If the control stock property pages cannot be accessed, it may be because the MFC DLL (MFCxx.DLL) has not been properly registered with the current operating system. This usually results from installing Visual Studio under an operating system different from the one currently running. > [!TIP] > If your stock property pages are not visible (see previous Note), register the DLL by running RegSvr32.exe from the command line with the full path name to the DLL. diff --git a/docs/mfc/mfc-activex-controls.md b/docs/mfc/mfc-activex-controls.md index fb744cd66d4..18ff2df6fdd 100644 --- a/docs/mfc/mfc-activex-controls.md +++ b/docs/mfc/mfc-activex-controls.md @@ -80,7 +80,7 @@ Note that a control is not responsible for obtaining access to the storage mediu ## Installing ActiveX Control Classes and Tools -When you install Visual C++, the MFC ActiveX control classes and retail and debug ActiveX control run-time DLLs are automatically installed if ActiveX controls are selected in Setup (they are selected by default). +When you install Visual Studio, the MFC ActiveX control classes and retail and debug ActiveX control run-time DLLs are automatically installed if ActiveX controls are selected in Setup (they are selected by default). By default, the ActiveX control classes and tools are installed in the following subdirectories under \Program Files\Microsoft Visual Studio .NET: diff --git a/docs/mfc/mfc-and-atl.md b/docs/mfc/mfc-and-atl.md index d9e499ac1bd..6859ab97126 100644 --- a/docs/mfc/mfc-and-atl.md +++ b/docs/mfc/mfc-and-atl.md @@ -12,7 +12,7 @@ The Microsoft Foundation Classes (MFC) provide a C++ object-oriented wrapper ove You can create MFC or ATL programs with Visual Studio Community Edition or higher. The Express editions do not support MFC or ATL. -In Visual Studio 2015, Visual C++ is an optional component, and MFC and ATL components are optional sub-components under Visual C++. If you do not select these components when you first install Visual Studio, you will be prompted to install them the first time you attempt to create or open an MFC or ATL project. +In Visual Studio 2015, Microsoft C++ is an optional component, and MFC and ATL components are optional sub-components under Microsoft C++. If you do not select these components when you first install Visual Studio, you will be prompted to install them the first time you attempt to create or open an MFC or ATL project. In Visual Studio 2017 and later, MFC and ATL are optional sub-components under the **Desktop development with C++** workload in the Visual Studio Installer program. You can install ATL support without MFC, or combined MFC and ATL support (MFC depends on ATL). For more information about workloads and components, see [Install Visual Studio](/visualstudio/install/install-visual-studio). diff --git a/docs/mfc/mfc-desktop-applications.md b/docs/mfc/mfc-desktop-applications.md index d1876d18607..873618fee18 100644 --- a/docs/mfc/mfc-desktop-applications.md +++ b/docs/mfc/mfc-desktop-applications.md @@ -72,8 +72,8 @@ Provides links to classes that are shared between MFC and ATL. [MFC Samples](../overview/visual-cpp-samples.md#mfc-samples)
Provides links to samples that demonstrate how to use MFC. -[Visual C++ Libraries Reference](../standard-library/cpp-standard-library-reference.md)
-Provides links to the various libraries provided with Visual C++, including ATL, MFC, OLE DB Templates, the C run-time library, and the C++ Standard Library. +[C++ Libraries Reference](../standard-library/cpp-standard-library-reference.md)
+Provides links to the various libraries provided with Visual Studio, including ATL, MFC, OLE DB Templates, the C run-time library, and the C++ Standard Library. [Debugging in Visual Studio](/visualstudio/debugger/debugging-in-visual-studio)
Provides links to using the Visual Studio debugger to correct logic errors in your application or stored procedures. diff --git a/docs/mfc/mfc-internet-programming-tasks.md b/docs/mfc/mfc-internet-programming-tasks.md index 7498fd45c93..c0911a53a89 100644 --- a/docs/mfc/mfc-internet-programming-tasks.md +++ b/docs/mfc/mfc-internet-programming-tasks.md @@ -9,7 +9,7 @@ ms.assetid: 6377e9b8-07c4-4380-b63b-05f5a9061313 This section contains detailed steps for adding Internet support to your applications. Topics include how to use the MFC classes to Internet-enable your existing applications, and how to add Active document support to your existing COM component. Do you want to create a document with up-to-the-minute stock quotes, Pittsburgh's football scores, and the latest temperature in Antarctica Microsoft provides a number of technologies to help you do that over the Internet. -Active technologies include ActiveX controls (formerly OLE controls) and Active documents; WinInet for easily retrieving and saving files across the Internet; and asynchronous monikers for efficient data downloading. Visual C++ provides wizards to help you get started quickly with a starter application. For an introduction to these technologies, see [MFC Internet Programming Basics](mfc-internet-programming-basics.md) and [MFC COM](mfc-com.md). +Active technologies include ActiveX controls (formerly OLE controls) and Active documents; WinInet for easily retrieving and saving files across the Internet; and asynchronous monikers for efficient data downloading. Visual Studio provides wizards to help you get started quickly with a starter application. For an introduction to these technologies, see [MFC Internet Programming Basics](mfc-internet-programming-basics.md) and [MFC COM](mfc-com.md). Have you always wanted to FTP a file but haven't learned WinSock and network programming protocols WinInet classes encapsulate these protocols, providing you with a simple set of functions you can use to write a client application on the Internet to download files using HTTP, FTP, and gopher. You can use WinInet to search directories on your hard drive or around the world. You can transparently collect data of several different types, and present it to the user in an integrated interface. diff --git a/docs/mfc/mfc-library-versions.md b/docs/mfc/mfc-library-versions.md index bafc3f49141..974d8e1bb97 100644 --- a/docs/mfc/mfc-library-versions.md +++ b/docs/mfc/mfc-library-versions.md @@ -100,7 +100,7 @@ Debugger files that have the same base name and a .pdb extension are also availa The MFC shared DLLs also follow a structured naming convention. This makes it easier to know which DLL or library you should be using for which purpose. -The MFC DLLs have *version* numbers that indicate binary compatibility. Use MFC DLLs that have the same version as your other libraries and compiler toolset to guarantee compatibility within a project. +The MFC DLLs have *version* numbers that indicate binary compatibility. Use MFC DLLs that have the same version as your other libraries and compiler build tools to guarantee compatibility within a project. |DLL|Description| |---------|-----------------| @@ -117,7 +117,7 @@ The import libraries needed to build applications or MFC extension DLLs that use If you are dynamically linking to the shared DLL version of MFC, whether it is from an application or from an MFC extension DLL, you must include the matching MFC*version*.DLL or MFC*version*U.DLL when you deploy your product. -For a list of Visual C++ DLLs that can be distributed with your applications, see [Distributable Code for Microsoft Visual Studio 2017 and Microsoft Visual Studio 2017 SDK (Includes Utilities and BuildServer Files)](/visualstudio/productinfo/2017-redistribution-vs) or [Distributable Code for Visual Studio 2019](/visualstudio/releases/2019/redistribution). +For a list of Visual Studio DLLs that can be distributed with your applications, see [Distributable Code for Microsoft Visual Studio 2017 and Microsoft Visual Studio 2017 SDK (Includes Utilities and BuildServer Files)](/visualstudio/productinfo/2017-redistribution-vs) or [Distributable Code for Visual Studio 2019](/visualstudio/releases/2019/redistribution). For more information on MBCS and Unicode support in MFC, see [Unicode and Multibyte Character Set (MBCS) Support](../atl-mfc-shared/unicode-and-multibyte-character-set-mbcs-support.md). diff --git a/docs/mfc/mfc-mbcs-dll-add-on.md b/docs/mfc/mfc-mbcs-dll-add-on.md index 154e05d42f4..0bc1d03de9a 100644 --- a/docs/mfc/mfc-mbcs-dll-add-on.md +++ b/docs/mfc/mfc-mbcs-dll-add-on.md @@ -10,7 +10,7 @@ Support for MFC and its multibyte character set (MBCS) libraries requires an add **Visual Studio 2013**: By default, the MFC libraries installed in Visual Studio 2013 only support Unicode development. You need the MBCS DLLs in order to build an MFC project in Visual Studio 2013 that has the **Character Set** property set to **Use Multi-Byte Character Set** or **Not Set**. Download the DLL at [Multibyte MFC Library for Visual Studio 2013](https://www.microsoft.com/download/details.aspx?id=40770). -**Visual Studio 2015**: Both Unicode and MBCS MFC DLLs are included in the Visual C++ setup components, but support for MFC is not installed by default. Visual C++ and MFC are optional install configurations in Visual Studio setup. To make sure that MFC is installed, choose **Custom** in setup, and under **Programming Languages**, make sure that **Visual C++** and **Microsoft Foundation Classes for C++** are selected. If you have already installed Visual Studio, you will be prompted to install Visual C++ and/or MFC when you attempt to create an MFC project. +**Visual Studio 2015**: Both Unicode and MBCS MFC DLLs are included in the Visual Studio setup components, but support for MFC is not installed by default. C++ and MFC are optional install configurations in Visual Studio setup. To make sure that MFC is installed, choose **Custom** in setup, and under **Programming Languages**, make sure that **C++ compilers and libraries** and **Microsoft Foundation Classes for C++** are selected. If you have already installed Visual Studio, you will be prompted to install C++ and/or MFC when you attempt to create an MFC project. **Visual Studio 2017 and later**: The Unicode and MBCS MFC DLLs are installed with the **Desktop development with C++** workload when you select **MFC and ATL support** from the **Optional Components** pane in the Visual Studio Installer program. If your installation does not include these components, navigate to the **File | New Projects** dialog and click the **Open Visual Studio Installer** link. For more information, see [Install Visual Studio](/visualstudio/install/install-visual-studio). diff --git a/docs/mfc/mfc-toolbar-implementation.md b/docs/mfc/mfc-toolbar-implementation.md index 696dfdd3cd3..66b9d9ee497 100644 --- a/docs/mfc/mfc-toolbar-implementation.md +++ b/docs/mfc/mfc-toolbar-implementation.md @@ -69,7 +69,7 @@ Also see the MFC General sample [DOCKTOOL](../overview/visual-cpp-samples.md). ## The Toolbar Bitmap -Once constructed, a `CToolBar` object creates the toolbar image by loading a single bitmap that contains one image for each button. The Application Wizard creates a standard toolbar bitmap that you can customize with the Visual C++ [toolbar editor](../windows/toolbar-editor.md). +Once constructed, a `CToolBar` object creates the toolbar image by loading a single bitmap that contains one image for each button. The Application Wizard creates a standard toolbar bitmap that you can customize with the Visual Studio [toolbar editor](../windows/toolbar-editor.md). ### What do you want to know more about diff --git a/docs/mfc/multiple-document-types-views-and-frame-windows.md b/docs/mfc/multiple-document-types-views-and-frame-windows.md index f24bb3620a6..bca21f51732 100644 --- a/docs/mfc/multiple-document-types-views-and-frame-windows.md +++ b/docs/mfc/multiple-document-types-views-and-frame-windows.md @@ -64,7 +64,7 @@ In a splitter window, the window is, or can be, split into two or more scrollabl Dynamic splitter windows, with views of the same class, allow the user to split a window into multiple panes at will and then scroll different panes to see different parts of the document. The user can also unsplit the window to remove the additional views. The splitter windows added to the [Scribble sample](../overview/visual-cpp-samples.md) are an example. That topic describes the technique for creating dynamic splitter windows. A dynamic splitter window is shown in part b of the figure Multiple-View User Interfaces. -Static splitter windows, with views of different classes, start with the window split into multiple panes, each with a different purpose. For example, in the Visual C++ bitmap editor, the image window shows two panes side by side. The left-hand pane displays a life-sized image of the bitmap. The right-hand pane displays a zoomed or magnified image of the same bitmap. The panes are separated by a "splitter bar" that the user can drag to change the relative sizes of the panes. A static splitter window is shown in part c of the figure Multiple-View User Interfaces. +Static splitter windows, with views of different classes, start with the window split into multiple panes, each with a different purpose. For example, in the Visual Studio bitmap editor, the image window shows two panes side by side. The left-hand pane displays a life-sized image of the bitmap. The right-hand pane displays a zoomed or magnified image of the same bitmap. The panes are separated by a "splitter bar" that the user can drag to change the relative sizes of the panes. A static splitter window is shown in part c of the figure Multiple-View User Interfaces. For more information, see class [CSplitterWnd](reference/csplitterwnd-class.md) in the *MFC Reference* and [MFC Samples](../overview/visual-cpp-samples.md#mfc-samples). diff --git a/docs/mfc/programming-activex-controls-in-a-activex-control-container.md b/docs/mfc/programming-activex-controls-in-a-activex-control-container.md index 43334e14538..594f5d61f3c 100644 --- a/docs/mfc/programming-activex-controls-in-a-activex-control-container.md +++ b/docs/mfc/programming-activex-controls-in-a-activex-control-container.md @@ -44,7 +44,7 @@ Once the Circ control is inserted into the project (step 1), insert an instance ## Modifications to the Project -To enable the Container application to access the Circ control, Visual C++ automatically adds the wrapper class (`CCirc`) implementation file (.CPP) to the Container project and the wrapper class header (.H) file to the dialog box header file: +To enable the Container application to access the Circ control, Visual Studio automatically adds the wrapper class (`CCirc`) implementation file (.CPP) to the Container project and the wrapper class header (.H) file to the dialog box header file: [!code-cpp[NVC_MFC_AxCont#1](../mfc/codesnippet/cpp/programming-activex-controls-in-a-activex-control-container_1.h)] @@ -59,7 +59,7 @@ These functions can then be called from other of the application's procedures us ## Member Variable Modifications to the Project -Once the ActiveX control has been added to the project and embedded in a dialog box container, it can be accessed by other parts of the project. The easiest way to access the control is to [create a member variable](../mfc/activex-control-containers-connecting-an-activex-control-to-a-member-variable.md) of the dialog class, `CContainerDlg` (step 2), that is of the same type as the wrapper class added to the project by Visual C++. You can then use the member variable to access the embedded control at any time. +Once the ActiveX control has been added to the project and embedded in a dialog box container, it can be accessed by other parts of the project. The easiest way to access the control is to [create a member variable](../mfc/activex-control-containers-connecting-an-activex-control-to-a-member-variable.md) of the dialog class, `CContainerDlg` (step 2), that is of the same type as the wrapper class added to the project by Visual Studio. You can then use the member variable to access the embedded control at any time. When the **Add Member Variable** dialog box adds the *m_circctl* member variable to the project, it also adds the following lines to the header file (.H) of the `CContainerDlg` class: diff --git a/docs/mfc/property-sheets-and-property-pages-mfc.md b/docs/mfc/property-sheets-and-property-pages-mfc.md index bf595657827..6fa12970360 100644 --- a/docs/mfc/property-sheets-and-property-pages-mfc.md +++ b/docs/mfc/property-sheets-and-property-pages-mfc.md @@ -7,7 +7,7 @@ ms.assetid: de8fea12-6c35-4cef-8625-b8073a379446 --- # Property Sheets and Property Pages (MFC) -An MFC [dialog box](../mfc/dialog-boxes.md) can take on a "tab dialog" look by incorporating property sheets and property pages. Called a "property sheet" in MFC, this kind of dialog box, similar to many dialog boxes in Microsoft Word, Excel, and Visual C++, appears to contain a stack of tabbed sheets, much like a stack of file folders seen from front to back, or a group of cascaded windows. Controls on the front tab are visible; only the labeled tab is visible on the rear tabs. Property sheets are particularly useful for managing large numbers of properties or settings that fall fairly neatly into several groups. Typically, one property sheet can simplify a user interface by replacing several separate dialog boxes. +An MFC [dialog box](../mfc/dialog-boxes.md) can take on a "tab dialog" look by incorporating property sheets and property pages. Called a "property sheet" in MFC, this kind of dialog box, similar to many dialog boxes in Microsoft Word, Excel, and Visual Studio, appears to contain a stack of tabbed sheets, much like a stack of file folders seen from front to back, or a group of cascaded windows. Controls on the front tab are visible; only the labeled tab is visible on the rear tabs. Property sheets are particularly useful for managing large numbers of properties or settings that fall fairly neatly into several groups. Typically, one property sheet can simplify a user interface by replacing several separate dialog boxes. As of MFC version 4.0, property sheets and property pages are implemented using the common controls that come with Windows 95 and Windows NT version 3.51 and later. diff --git a/docs/mfc/reference/adding-an-mfc-class-from-a-type-library.md b/docs/mfc/reference/adding-an-mfc-class-from-a-type-library.md index db0802eea7c..e1730119ef5 100644 --- a/docs/mfc/reference/adding-an-mfc-class-from-a-type-library.md +++ b/docs/mfc/reference/adding-an-mfc-class-from-a-type-library.md @@ -20,7 +20,7 @@ A type library contains a binary description of the interfaces exposed by a comp 1. From the shortcut menu, select **Add** > **New Item**. -1. In the **Add New Item** dialog, select **Installed** packages and then select **Visual C++**. +1. In the **Add New Item** dialog, select **Installed** packages and then select **Visual Studio**. 1. In the Templates pane, select **MFC Class from Typelib**, and then select **Add** to display the [Add Class from Typelib Wizard](../../mfc/reference/add-class-from-typelib-wizard.md). diff --git a/docs/mfc/reference/adding-an-mfc-odbc-consumer.md b/docs/mfc/reference/adding-an-mfc-odbc-consumer.md index 887931326d3..a0f9991f6d8 100644 --- a/docs/mfc/reference/adding-an-mfc-odbc-consumer.md +++ b/docs/mfc/reference/adding-an-mfc-odbc-consumer.md @@ -13,7 +13,7 @@ An MFC ODBC consumer consists of an ODBC recordset class and data bindings neces 1. In Class View, right-click the project. On the shortcut menu, click **Add** and then click **Add Class**. -1. In the Visual C++ folder, double-click the **MFC ODBC Consumer** icon or select it and click **Open**. +1. In the Visual Studio folder, double-click the **MFC ODBC Consumer** icon or select it and click **Open**. The MFC ODBC Consumer Wizard opens. diff --git a/docs/mfc/reference/application-information-and-management.md b/docs/mfc/reference/application-information-and-management.md index 444361085bc..4c97fa5d41a 100644 --- a/docs/mfc/reference/application-information-and-management.md +++ b/docs/mfc/reference/application-information-and-management.md @@ -414,7 +414,7 @@ This function is provided for backward compatibility. New applications should us `AfxInitRichEdit` loads `RICHED32.DLL` to initialize version 1.0 of the rich edit control. To use version 2.0 and 3.0 of the rich edit control, `RICHED20.DLL` needs to be loaded. It's loaded by making a call to [`AfxInitRichEdit2`](#afxinitrichedit2). -To update rich edit controls in existing Visual C++ applications to version 2.0, open the .RC file as text, change the class name of each rich edit control from "`RICHEDIT`" to "`RichEdit20a`". Then replace the call to `AfxInitRichEdit` with `AfxInitRichEdit2`. +To update rich edit controls in existing Visual Studio applications to version 2.0, open the .RC file as text, change the class name of each rich edit control from "`RICHEDIT`" to "`RichEdit20a`". Then replace the call to `AfxInitRichEdit` with `AfxInitRichEdit2`. This function also initializes the common controls library, if the library hasn't already been initialized for the process. If you use the rich edit control directly from your MFC application, call this function to assure that MFC has properly initialized the rich edit control runtime. If you call the `Create` method of [`CRichEditCtrl`](../../mfc/reference/cricheditctrl-class.md), [`CRichEditView`](../../mfc/reference/cricheditview-class.md), or [`CRichEditDoc`](../../mfc/reference/cricheditdoc-class.md), you typically don't need to call this function, but in some cases it might be necessary. diff --git a/docs/mfc/reference/cdc-class.md b/docs/mfc/reference/cdc-class.md index 910c96cad27..69ea401ff76 100644 --- a/docs/mfc/reference/cdc-class.md +++ b/docs/mfc/reference/cdc-class.md @@ -1643,7 +1643,7 @@ Specifies the last value returned by the [callback function](callback-functions- For each object of a given type, the callback function that you pass is called with the information for that object. The system calls the callback function until there are no more objects or the callback function returns 0. -New features of Microsoft Visual C++ let you use an ordinary function as the function passed to `EnumObjects`. The address passed to `EnumObjects` is a pointer to a function exported with **`EXPORT`** and with the Pascal calling convention. In protect-mode applications, you don't have to create this function with the Windows `MakeProcInstance` function or free the function after use with the `FreeProcInstance` Windows function. +New features of Visual Studio let you use an ordinary function as the function passed to `EnumObjects`. The address passed to `EnumObjects` is a pointer to a function exported with **`EXPORT`** and with the Pascal calling convention. In protect-mode applications, you don't have to create this function with the Windows `MakeProcInstance` function or free the function after use with the `FreeProcInstance` Windows function. You also don't have to export the function name in an **`EXPORTS`** statement in your application's module-definition file. You can instead use the **`EXPORT`** function modifier, as in @@ -5336,7 +5336,7 @@ Specifies the outcome of the `SetAbortProc` function. Some of the following valu If an application is to allow the print job to be canceled during spooling, it must set the abort function before the print job is started with the [`StartDoc`](#startdoc) member function. The Print Manager calls the abort function during spooling to allow the application to cancel the print job or to process out-of-disk-space conditions. If no abort function is set, the print job will fail if there isn't enough disk space for spooling. -The features of Microsoft Visual C++ simplify the creation of the callback function passed to `SetAbortProc`. The address passed to the `EnumObjects` member function is a pointer to a function exported with `__declspec(dllexport)` and with the **`__stdcall`** calling convention. +The features of Visual Studio simplify the creation of the callback function passed to `SetAbortProc`. The address passed to the `EnumObjects` member function is a pointer to a function exported with `__declspec(dllexport)` and with the **`__stdcall`** calling convention. You also don't have to export the function name in an **`EXPORTS`** statement in your application's module-definition file. You can instead use the **`EXPORT`** function modifier, as in diff --git a/docs/mfc/reference/cdialogbar-class.md b/docs/mfc/reference/cdialogbar-class.md index 8d8c5acd272..4b613e0fa29 100644 --- a/docs/mfc/reference/cdialogbar-class.md +++ b/docs/mfc/reference/cdialogbar-class.md @@ -39,7 +39,7 @@ Creating and using a dialog bar is similar to creating and using a `CFormView` o For more information on `CDialogBar`, see the article [Dialog Bars](../../mfc/dialog-bars.md) and [Technical Note 31](../../mfc/tn031-control-bars.md), Control Bars. > [!NOTE] -> In the current release, a `CDialogBar` object cannot host Windows Forms controls. For more information about Windows Forms controls in Visual C++, see [Using a Windows Form User Control in MFC](../../dotnet/using-a-windows-form-user-control-in-mfc.md). +> In the current release, a `CDialogBar` object cannot host Windows Forms controls. For more information about Windows Forms controls in Visual Studio, see [Using a Windows Form User Control in MFC](../../dotnet/using-a-windows-form-user-control-in-mfc.md). ## Inheritance Hierarchy diff --git a/docs/mfc/reference/cformview-class.md b/docs/mfc/reference/cformview-class.md index 2166ba0f16c..cb84a87b8d5 100644 --- a/docs/mfc/reference/cformview-class.md +++ b/docs/mfc/reference/cformview-class.md @@ -35,7 +35,7 @@ A form view is essentially a view that contains controls. These controls are lai When you're [Creating a Forms-Based Application](../../mfc/reference/creating-a-forms-based-mfc-application.md), you can base its view class on `CFormView`, making it a forms-based application. -You can also insert new [Form Topics](../../mfc/form-views-mfc.md) into document-view-based applications. Even if your application didn't initially support forms, Visual C++ will add this support when you insert a new form. +You can also insert new [Form Topics](../../mfc/form-views-mfc.md) into document-view-based applications. Even if your application didn't initially support forms, Visual Studio will add this support when you insert a new form. The MFC Application Wizard and the Add Class command are the preferred methods for creating forms-based applications. If you need to create a forms-based application without using these methods, see [Creating a Forms-Based Application](../../mfc/reference/creating-a-forms-based-mfc-application.md). diff --git a/docs/mfc/reference/creating-a-forms-based-mfc-application.md b/docs/mfc/reference/creating-a-forms-based-mfc-application.md index 9ef2409ba6b..1378686ea70 100644 --- a/docs/mfc/reference/creating-a-forms-based-mfc-application.md +++ b/docs/mfc/reference/creating-a-forms-based-mfc-application.md @@ -24,7 +24,7 @@ The base class for form-based applications is [`CFormView`](cformview-class.md). Even if you use a base class such as [`CView`](cview-class.md), you can later make your applications forms-based by [adding an MFC class](adding-an-mfc-class.md) derived from `CFormView`. -Once you finish with the wizard, your project opens, and if you selected `CFormView` (or a class that inherits from `CFormView`) as your base class or if you created a dialog-based application, Visual C++ opens the dialog editor. At this point, you are ready to design your first form. +Once you finish with the wizard, your project opens, and if you selected `CFormView` (or a class that inherits from `CFormView`) as your base class or if you created a dialog-based application, Visual Studio opens the dialog editor. At this point, you are ready to design your first form. ### To begin creating a forms-based MFC executable diff --git a/docs/mfc/reference/creating-a-web-browser-style-mfc-application.md b/docs/mfc/reference/creating-a-web-browser-style-mfc-application.md index 06aa373199c..ab5e862682c 100644 --- a/docs/mfc/reference/creating-a-web-browser-style-mfc-application.md +++ b/docs/mfc/reference/creating-a-web-browser-style-mfc-application.md @@ -28,7 +28,7 @@ The WebBrowser control supports Web browsing through hyperlinks and Uniform Reso Because `CHtmlView` simply implements the Microsoft Web browser control, its support for printing isn't like other [`CView`](../../mfc/reference/cview-class.md)-derived classes. Rather, the WebBrowser control implements the printer user interface and printing. As a result, `CHtmlView` doesn't support print preview, and the framework doesn't provide for other printing support functions: for example, [`CView::OnPreparePrinting`](../../mfc/reference/cview-class.md#onprepareprinting), [`CView::OnBeginPrinting`](../../mfc/reference/cview-class.md#onbeginprinting), and [`CView::OnEndPrinting`](../../mfc/reference/cview-class.md#onendprinting), which are available in other MFC applications. -`CHtmlView` acts as a wrapper for the Web browser control, which gives your application a view onto a Web or an HTML page. The wizard creates an override to the [`OnInitialUpdate`](../../mfc/reference/cview-class.md#oninitialupdate) function in the view class, providing a navigational link to the Microsoft Visual C++ Web site: +`CHtmlView` acts as a wrapper for the Web browser control, which gives your application a view onto a Web or an HTML page. The wizard creates an override to the [`OnInitialUpdate`](../../mfc/reference/cview-class.md#oninitialupdate) function in the view class, providing a navigational link to the Visual Studio Web site: ```cpp void CWebView::OnInitialUpdate() diff --git a/docs/mfc/reference/creating-an-mfc-application.md b/docs/mfc/reference/creating-an-mfc-application.md index 5a981ca05ca..8cf0f8d7610 100644 --- a/docs/mfc/reference/creating-an-mfc-application.md +++ b/docs/mfc/reference/creating-an-mfc-application.md @@ -56,7 +56,7 @@ The dialog shows the application type, set to Console Application (.exe). Under ## To create an MFC forms or dialog-based application 1. From the Visual Studio main menu, choose **File** > **New** > **Project**. -1. Under the **Installed** templates, choose **Visual C++** > **MFC/ATL**. If you don't see these, use the Visual Studio Installer to add MFC/ATL functionality. You can access the installer from the Visual Studio menu via **Tools** > **Get Tools and Features...** In the installer, select **Individual components** and search for **mfc** and then select the appropriate library for your machine such as **Visual C++ MFC for x86 and x64 with Spectre Mitigations**. +1. Under the **Installed** templates, choose **C++** > **MFC/ATL**. If you don't see these, use the Visual Studio Installer to add MFC/ATL functionality. You can access the installer from the Visual Studio menu via **Tools** > **Get Tools and Features...** In the installer, select **Individual components** and search for **mfc** and then select the appropriate library for your machine such as **C++ MFC for x86 and x64 with Spectre Mitigations**. 1. Choose **MFC App** from the center pane. 1. Modify the configuration values as needed, then press **OK**. @@ -71,7 +71,7 @@ The dialog shows the various settings set to their default, such as the applicat An MFC console application is a command-line program that uses MFC libraries but runs in the console window. 1. From the main menu, choose **File** > **New** > **Project**. -1. Under the **Installed** templates, choose **Visual C++** > **Windows Desktop**. +1. Under the **Installed** templates, choose **C++** > **Windows Desktop**. 1. From the center pane, choose **Windows Desktop Wizard**. 1. Modify the project name as needed, then press **OK** to open the **Windows Desktop Wizard**. 1. Check the **MFC Headers** box and set other values as needed, then press **OK**. @@ -87,7 +87,7 @@ The dialog shows the application type set to Console Application (.exe). Under a ## To create an MFC forms or dialog-based application 1. From the main menu, choose **File** > **New** > **Project**. -1. Under the **Installed** templates, choose **Visual C++** > **MFC**. +1. Under the **Installed** templates, choose **C++** > **MFC**. 1. Choose **MFC Application** from the center pane. 1. Click **Next** to start the **MFC Application Wizard**. @@ -102,7 +102,7 @@ The dialog lists the current project settings such as: tabbed multiple document An MFC console application is a command-line program that uses MFC libraries but runs in the console window. 1. From the main menu, choose **File** > **New** > **Project**. -1. Under the **Installed** templates, choose **Visual C++** > **Win32**. +1. Under the **Installed** templates, choose **C++** > **Win32**. 1. Choose **Win32 Console Application** from the center pane. 1. Modify the project name as needed, then press **OK**. 1. On the second page of the wizard, check the **Add common headers for MFC** box and set other values as needed, then press **Finish**. diff --git a/docs/mfc/reference/crecordset-class.md b/docs/mfc/reference/crecordset-class.md index 40295670721..ec14c8d5d1e 100644 --- a/docs/mfc/reference/crecordset-class.md +++ b/docs/mfc/reference/crecordset-class.md @@ -1403,7 +1403,7 @@ Accept the default value, `AFX_DB_USE_DEFAULT_TYPE`, or use one of the following - `CRecordset::forwardOnly` A read-only recordset with only forward scrolling. - For `CRecordset`, the default value is `CRecordset::snapshot`. The default-value mechanism allows the Visual C++ wizards to interact with both ODBC `CRecordset` and DAO `CDaoRecordset`, which have different defaults. + For `CRecordset`, the default value is `CRecordset::snapshot`. The default-value mechanism allows the Visual Studio wizards to interact with both ODBC `CRecordset` and DAO `CDaoRecordset`, which have different defaults. For more information about these recordset types, see [Recordset (ODBC)](../../data/odbc/recordset-odbc.md). For related information, see "Using Block and Scrollable Cursors" in the Windows SDK. diff --git a/docs/mfc/reference/ctoolbar-class.md b/docs/mfc/reference/ctoolbar-class.md index 983d20748bc..33cab610164 100644 --- a/docs/mfc/reference/ctoolbar-class.md +++ b/docs/mfc/reference/ctoolbar-class.md @@ -52,7 +52,7 @@ The buttons can act like pushbuttons, check-box buttons, or radio buttons. `CToo [`CToolBar::GetToolBarCtrl`](#gettoolbarctrl), a member function new to MFC 4.0, allows you to take advantage of the Windows common control's support for toolbar customization and additional functionality. `CToolBar` member functions give you most of the functionality of the Windows common controls; however, when you call `GetToolBarCtrl`, you can give your toolbars even more of the characteristics of Windows 95/98 toolbars. When you call `GetToolBarCtrl`, it will return a reference to a `CToolBarCtrl` object. See [`CToolBarCtrl`](../../mfc/reference/ctoolbarctrl-class.md) for more information about designing toolbars using Windows common controls. For more general information about common controls, see [Common Controls](/windows/win32/Controls/common-controls-intro) in the Windows SDK. -Visual C++ provides you with two methods to create a toolbar. To create a toolbar resource using the Resource Editor, follow these steps: +Visual Studio provides you with two methods to create a toolbar. To create a toolbar resource using the Resource Editor, follow these steps: 1. Create a toolbar resource. diff --git a/docs/mfc/reference/diagnostic-services.md b/docs/mfc/reference/diagnostic-services.md index 18c273ec9e0..235d76280b4 100644 --- a/docs/mfc/reference/diagnostic-services.md +++ b/docs/mfc/reference/diagnostic-services.md @@ -395,7 +395,7 @@ CDumpContext afxDump; `afxDump` is a predefined [CDumpContext](../../mfc/reference/cdumpcontext-class.md) object that allows you to send `CDumpContext` information to the debugger output window or to a debug terminal. Typically, you supply `afxDump` as a parameter to `CObject::Dump`. -Under Windows NT and all versions of Windows, `afxDump` output is sent to the Output-Debug window of Visual C++ when you debug your application. +Under Windows NT and all versions of Windows, `afxDump` output is sent to the Output-Debug window of Visual Studio when you debug your application. This variable is defined only in the Debug version of MFC. For more information on `afxDump`, see [Debugging MFC Applications](/visualstudio/debugger/mfc-debugging-techniques). diff --git a/docs/mfc/reference/mfc-application-wizard.md b/docs/mfc/reference/mfc-application-wizard.md index 81d79ea6b6e..1ca347b8771 100644 --- a/docs/mfc/reference/mfc-application-wizard.md +++ b/docs/mfc/reference/mfc-application-wizard.md @@ -68,7 +68,7 @@ This wizard page describes the current application settings for the MFC applicat To change these default settings, select the appropriate tab title in the left column of the wizard and make the changes on the page that appears. -After you create an MFC application project, you can add objects or controls to your project using Visual C++ [code wizards](../../ide/adding-functionality-with-code-wizards-cpp.md). +After you create an MFC application project, you can add objects or controls to your project using Visual Studio [code wizards](../../ide/adding-functionality-with-code-wizards-cpp.md). ## See also diff --git a/docs/mfc/reference/mfc-dll-wizard.md b/docs/mfc/reference/mfc-dll-wizard.md index 9f7433d1c1c..ad350303e65 100644 --- a/docs/mfc/reference/mfc-dll-wizard.md +++ b/docs/mfc/reference/mfc-dll-wizard.md @@ -16,7 +16,7 @@ This wizard page describes the current [application settings for the MFC DLL pro To change these defaults, click **Application Settings** in the left column of the wizard and make changes in that page of the MFC DLL Wizard. -After you create an MFC DLL project, you can add objects or controls to your project using Visual C++ [code wizards](../../ide/adding-functionality-with-code-wizards-cpp.md). +After you create an MFC DLL project, you can add objects or controls to your project using Visual Studio [code wizards](../../ide/adding-functionality-with-code-wizards-cpp.md). You can perform the following tasks and types of enhancements to a basic MFC DLL project: diff --git a/docs/mfc/relationship-to-the-c-language-api.md b/docs/mfc/relationship-to-the-c-language-api.md index b055335b658..22c012bd971 100644 --- a/docs/mfc/relationship-to-the-c-language-api.md +++ b/docs/mfc/relationship-to-the-c-language-api.md @@ -9,7 +9,7 @@ ms.assetid: 334e8efc-f3cc-4018-bc2e-02908b2a39fe The single characteristic that sets the Microsoft Foundation Class (MFC) Library apart from other class libraries for Windows is the very close mapping to the Windows API written in the C language. Further, you can generally mix calls to the class library freely with direct calls to the Windows API. This direct access does not, however, imply that the classes are a complete replacement for that API. Developers must still occasionally make direct calls to some Windows functions, such as [SetCursor](/windows/win32/api/winuser/nf-winuser-setcursor) and [GetSystemMetrics](/windows/win32/api/winuser/nf-winuser-getsystemmetrics), for example. A Windows function is wrapped by a class member function only when there is a clear advantage to doing so. -Because you sometimes need to make native Windows function calls, you should have access to the C-language Windows API documentation. This documentation is included with Microsoft Visual C++. +Because you sometimes need to make native Windows function calls, you should have access to the C-language Windows API documentation. This documentation is included with Visual Studio. > [!NOTE] > For an overview of how the MFC Library framework operates, see [Using the Classes to Write Applications for Windows](../mfc/using-the-classes-to-write-applications-for-windows.md). diff --git a/docs/mfc/sequence-of-operations-for-building-mfc-applications.md b/docs/mfc/sequence-of-operations-for-building-mfc-applications.md index 3c77d334150..529a989c36c 100644 --- a/docs/mfc/sequence-of-operations-for-building-mfc-applications.md +++ b/docs/mfc/sequence-of-operations-for-building-mfc-applications.md @@ -14,8 +14,8 @@ The following table explains the general sequence you might typically follow as |Task|You do|The framework does| |----------|------------|------------------------| |Create a skeleton application.|Run the [MFC Application Wizard](../mfc/reference/mfc-application-wizard.md). Specify the options you want in the options pages. Options include making the application a COM component, container, or both; adding Automation; and making the application database-aware.|The MFC Application Wizard creates the files for a skeleton application, including source files for your application, document, view, and frame windows; a resource file; a project file; and others, all tailored to your specifications.| -|See what the framework and the MFC Application Wizard offer without adding a line of your own code.|Build the skeleton application and run it in Visual C++.|The running skeleton application derives many standard **File**, **Edit**, **View**, and **Help** menu commands from the framework. For MDI applications, you also get a fully functional Windows menu, and the framework manages creation, arrangement, and destruction of MDI child windows.| -|Construct your application's user interface.|Use the Visual C++ [resource editors](../windows/resource-editors.md) to visually edit the application's user interface:

- Create menus.
- Define accelerators.
- Create dialog boxes.
- Create and edit bitmaps, icons, and cursors.
- Edit the toolbar created for you by the MFC Application Wizard.
- Create and edit other resources.

You can also test the dialog boxes in the dialog editor.|The default resource file created by the MFC Application Wizard supplies many of the resources you need. Visual C++ lets you edit existing resources and add new resources easily and visually.| +|See what the framework and the MFC Application Wizard offer without adding a line of your own code.|Build the skeleton application and run it in Visual Studio.|The running skeleton application derives many standard **File**, **Edit**, **View**, and **Help** menu commands from the framework. For MDI applications, you also get a fully functional Windows menu, and the framework manages creation, arrangement, and destruction of MDI child windows.| +|Construct your application's user interface.|Use the Visual Studio [resource editors](../windows/resource-editors.md) to visually edit the application's user interface:

- Create menus.
- Define accelerators.
- Create dialog boxes.
- Create and edit bitmaps, icons, and cursors.
- Edit the toolbar created for you by the MFC Application Wizard.
- Create and edit other resources.

You can also test the dialog boxes in the dialog editor.|The default resource file created by the MFC Application Wizard supplies many of the resources you need. Visual Studio lets you edit existing resources and add new resources easily and visually.| |Map menus to handler functions.|Use the **Events** button in the [**Properties** window](/visualstudio/ide/reference/properties-window) in **Class View** (or the **Commands** tab in [Class Wizard](reference/mfc-class-wizard.md)) to connect menus and accelerators to handler functions in your code.|These tools insert message-map entries and empty function templates into the source files you specify and manages many manual coding tasks.| |Write your handler code.|Use Class View to jump directly to the code in the source code editor. Fill in the code for your handler functions. For more information on using Class View and about wizards that add code to a project, see [Adding Functionality with Code Wizards](../ide/adding-functionality-with-code-wizards-cpp.md).|Class View opens the editor, scrolls to the empty function template and positions the cursor for you.| |Map toolbar buttons to commands.|Map each button on your toolbar to a menu or accelerator command by assigning the button the appropriate command ID.|The framework controls the drawing, enabling, disabling, checking, and other visual aspects of the toolbar buttons.| @@ -33,7 +33,7 @@ The following table explains the general sequence you might typically follow as |Create database forms.|If you want a form-based data-access application, derive your view class from [CRecordView](../mfc/reference/crecordview-class.md) (for ODBC programming).|The view works like a form view, but its controls are connected to the fields of a [CRecordset](../mfc/reference/crecordset-class.md) object representing a database table. MFC moves data between the controls and the recordset for you.| |Create a simple text editor.|If you want your view to be a simple text editor, derive your view class or classes from [CEditView](../mfc/reference/ceditview-class.md) or [CRichEditView](../mfc/reference/cricheditview-class.md).|The view provides editing functions, Clipboard support, and file input/output. `CRichEditView` provides styled text.| |Add splitter windows.|If you want to support window splitting, add a [CSplitterWnd](../mfc/reference/csplitterwnd-class.md) object to your SDI frame window or MDI child window and hook it up in the window's [OnCreateClient](../mfc/reference/cframewnd-class.md#oncreateclient) member function.|The framework supplies splitter-box controls next to the scroll bars and manages splitting your view into multiple panes. If the user splits a window, the framework creates and attaches additional view objects to the document.| -|Build, test, and debug your application.|Use the facilities of Visual C++ to build, test, and debug your application.|Visual C++ lets you adjust compile, link, and other options. It also lets you browse your source code and class structure.| +|Build, test, and debug your application.|Use the facilities of Visual Studio to build, test, and debug your application.|Visual Studio lets you adjust compile, link, and other options. It also lets you browse your source code and class structure.| ## See also diff --git a/docs/mfc/sequence-of-operations-for-creating-activex-controls.md b/docs/mfc/sequence-of-operations-for-creating-activex-controls.md index 1b1dc9884d5..e534e12453f 100644 --- a/docs/mfc/sequence-of-operations-for-creating-activex-controls.md +++ b/docs/mfc/sequence-of-operations-for-creating-activex-controls.md @@ -16,7 +16,7 @@ The following table shows your role and the framework's role in creating ActiveX |Create an ActiveX control framework.|Run the MFC ActiveX Control Wizard to create your control. Specify the options you want in the options pages. Options include the type and name of the control in the project, licensing, subclassing, and an About Box method.|The MFC ActiveX Control Wizard creates the files for an ActiveX control with basic functionality, including source files for your application, control, and property page or pages; a resource file; a project file; and others, all tailored to your specifications.| |See what the control and the ActiveX Control Wizard offer without adding a line of your own code.|Build the ActiveX control and test it with Internet Explorer or the [TSTCON sample](../overview/visual-cpp-samples.md).|The running control has the ability to be resized and moved. It also has an **About Box** method (if chosen) that can be invoked.| |Implement the control's methods and properties.|Implement your control-specific methods and properties by adding member functions to provide an exposed interface to the control's data. Add member variables to hold data structures and use event handlers to fire events when you determine.|The framework has already defined a map to support the control's events, properties, and methods, leaving you to focus on how the properties and methods are implemented. The default property page is viewable and a default About Box method is supplied.| -|Construct the control's property page or pages.|Use the Visual C++ resource editors to visually edit the control's property page interface:

- Create additional property pages.
- Create and edit bitmaps, icons, and cursors.

You can also test the property page(s) in the dialog editor.|The default resource file created by the MFC Application Wizard supplies many of the resources you need. Visual C++ lets you edit existing resources and add new resources easily and visually.| +|Construct the control's property page or pages.|Use the Visual Studio resource editors to visually edit the control's property page interface:

- Create additional property pages.
- Create and edit bitmaps, icons, and cursors.

You can also test the property page(s) in the dialog editor.|The default resource file created by the MFC Application Wizard supplies many of the resources you need. Visual Studio lets you edit existing resources and add new resources easily and visually.| |Test the control's events, methods, and properties.|Rebuild the control and use Test Container to test that your handlers work correctly.|You can invoke the control's methods and manipulate its properties through the property page interface or through Test Container. In addition, use Test Container to track events fired from the control and notifications received by the control's container.| ## See also diff --git a/docs/mfc/sequence-of-operations-for-creating-database-applications.md b/docs/mfc/sequence-of-operations-for-creating-database-applications.md index 2f39ff70f31..8243421de2d 100644 --- a/docs/mfc/sequence-of-operations-for-creating-database-applications.md +++ b/docs/mfc/sequence-of-operations-for-creating-database-applications.md @@ -10,7 +10,7 @@ ms.assetid: 9371da59-8536-43cd-8314-706ad320e2ec The following table shows your role and the framework's role in writing database applications. > [!NOTE] -> The Visual C++ environment and wizards do not support DAO (although the DAO classes are included and you can still use them). Microsoft recommends that you use ODBC for new MFC projects. You should only use DAO in maintaining existing applications. +> The Visual Studio environment and wizards do not support DAO (although the DAO classes are included and you can still use them). Microsoft recommends that you use ODBC for new MFC projects. You should only use DAO in maintaining existing applications. ### Creating Database Applications @@ -18,7 +18,7 @@ The following table shows your role and the framework's role in writing database |----------|------------|------------------------| |Decide whether to use the MFC ODBC or DAO classes.|Use ODBC for new MFC projects. Use DAO only to maintain existing applications. For general information, see the article [Data Access Programming](../data/data-access-programming-mfc-atl.md).|The framework supplies classes that support database access.| |Create your skeleton application with database options.|Run the MFC Application Wizard. Select options on the Database Support page. If you choose an option that creates a record view, also specify:

- Data source and table name or names
- Query name or names.|The MFC Application Wizard creates files and specifies the necessary includes. Depending on the options you specify, the files can include a recordset class.| -|Design your database form or forms.|Use the Visual C++ dialog editor to place controls on the dialog template resources for your record view classes.|The MFC Application Wizard creates an empty dialog template resource for you to fill in.| +|Design your database form or forms.|Use the Visual Studio dialog editor to place controls on the dialog template resources for your record view classes.|The MFC Application Wizard creates an empty dialog template resource for you to fill in.| |Create additional record view and recordset classes as needed.|Use Class View to create the classes and the dialog editor to design the views.|Class View creates additional files for your new classes.| |Create recordset objects as needed in your code. Use each recordset to manipulate records...|Your recordsets are based on the classes derived from [CRecordset](../mfc/reference/crecordset-class.md) with the wizards.|ODBC uses record field exchange (RFX) to exchange data between the database and your recordset's field data members. If you are using a record view, dialog data exchange (DDX) exchanges data between the recordset and the controls on the record view.| |...or create an explicit [CDatabase](../mfc/reference/cdatabase-class.md) in your code for each database you want to open.|Base your recordset objects on the database objects.|The database object provides an interface to the data source.| diff --git a/docs/mfc/servers-implementing-in-place-frame-windows.md b/docs/mfc/servers-implementing-in-place-frame-windows.md index 3349e0c1357..ae276eda3ea 100644 --- a/docs/mfc/servers-implementing-in-place-frame-windows.md +++ b/docs/mfc/servers-implementing-in-place-frame-windows.md @@ -7,7 +7,7 @@ ms.assetid: 09bde4d8-15e2-4fba-8d14-9b954d926b92 --- # Servers: Implementing In-Place Frame Windows -This article explains what you must do to implement in-place frame windows in your visual editing server application if you do not use the application wizard to create your server application. In place of following the procedure outlined in this article, you could use an existing in-place frame-window class from either an application wizard-generated application or a sample provided with Visual C++. +This article explains what you must do to implement in-place frame windows in your visual editing server application if you do not use the application wizard to create your server application. In place of following the procedure outlined in this article, you could use an existing in-place frame-window class from either an application wizard-generated application or a sample provided with Visual Studio. #### To declare an in-place frame-window class diff --git a/docs/mfc/technical-notes-by-category.md b/docs/mfc/technical-notes-by-category.md index 288094ac3af..64544f67312 100644 --- a/docs/mfc/technical-notes-by-category.md +++ b/docs/mfc/technical-notes-by-category.md @@ -79,7 +79,7 @@ Technical notes are divided into the following categories. For a numerical listi [TN023: Standard MFC Resources](../mfc/tn023-standard-mfc-resources.md)\ [TN024: MFC-Defined Messages and Resources](../mfc/tn024-mfc-defined-messages-and-resources.md)\ [TN028: Context-Sensitive Help Support](../mfc/tn028-context-sensitive-help-support.md)\ -[TN035: Using Multiple Resource Files and Header Files with Visual C++](../mfc/tn035-using-multiple-resource-files-and-header-files-with-visual-cpp.md)\ +[TN035: Using Multiple Resource Files and Header Files with Visual Studio](../mfc/tn035-using-multiple-resource-files-and-header-files-with-visual-cpp.md)\ [TN036: Using CFormView with AppWizard and ClassWizard](../mfc/tn036-using-cformview-with-appwizard-and-classwizard.md)\ [TN070: MFC Window Class Names](../mfc/tn070-mfc-window-class-names.md) diff --git a/docs/mfc/technical-notes-by-number.md b/docs/mfc/technical-notes-by-number.md index d07d4b3b3bd..52d265d9390 100644 --- a/docs/mfc/technical-notes-by-number.md +++ b/docs/mfc/technical-notes-by-number.md @@ -44,7 +44,7 @@ The technical notes below are listed numerically, with the most recently written |38|[MFC/OLE IUnknown Implementation](../mfc/tn038-mfc-ole-iunknown-implementation.md)| |37|[Multithreaded MFC 2.1 Applications](../mfc/tn037-multithreaded-mfc-2-1-applications.md)| |36|[Using CFormView with AppWizard and ClassWizard](../mfc/tn036-using-cformview-with-appwizard-and-classwizard.md)| -|35|[Using Multiple Resource Files and Header Files with Visual C++](../mfc/tn035-using-multiple-resource-files-and-header-files-with-visual-cpp.md)| +|35|[Using Multiple Resource Files and Header Files with Visual Studio](../mfc/tn035-using-multiple-resource-files-and-header-files-with-visual-cpp.md)| |33|[DLL Version of MFC](../mfc/tn033-dll-version-of-mfc.md)| |32|[MFC Exception Mechanism](../mfc/tn032-mfc-exception-mechanism.md)| |31|[Control Bars](../mfc/tn031-control-bars.md)| diff --git a/docs/mfc/testing-properties-and-events-with-test-container.md b/docs/mfc/testing-properties-and-events-with-test-container.md index d7258a77d5c..ead507de3af 100644 --- a/docs/mfc/testing-properties-and-events-with-test-container.md +++ b/docs/mfc/testing-properties-and-events-with-test-container.md @@ -7,7 +7,7 @@ ms.topic: how-to --- # Testing Properties and Events with Test Container -The Test Container application, shipped in Visual C++, is an ActiveX control container for testing and debugging ActiveX controls. Test Container allows the control developer to test the control's functionality by changing its properties, invoking its methods, and firing its events. Test Container can display logs of data-binding notifications and also provides facilities for testing an ActiveX control's persistence functionality: you can save properties to a stream or to substorage, reload them, and examine the stored stream data. This section describes how to use the basic features of Test Container. For additional information, select the **Help** menu while running Test Container. +The Test Container application, shipped in Visual Studio, is an ActiveX control container for testing and debugging ActiveX controls. Test Container allows the control developer to test the control's functionality by changing its properties, invoking its methods, and firing its events. Test Container can display logs of data-binding notifications and also provides facilities for testing an ActiveX control's persistence functionality: you can save properties to a stream or to substorage, reload them, and examine the stored stream data. This section describes how to use the basic features of Test Container. For additional information, select the **Help** menu while running Test Container. ### To access the ActiveX Control Test Container diff --git a/docs/mfc/tn006-message-maps.md b/docs/mfc/tn006-message-maps.md index 91f8aec4a38..4c24ca0197d 100644 --- a/docs/mfc/tn006-message-maps.md +++ b/docs/mfc/tn006-message-maps.md @@ -97,7 +97,7 @@ pWnd->SendMessage(WM_MYMESSAGE); The range of user-defined messages that use this approach must be in the range WM_USER to 0x7fff. > [!NOTE] -> ClassWizard does not support entering ON_MESSAGE handler routines from the ClassWizard user interface. You must manually enter them from the Visual C++ editor. ClassWizard will parse these entries and let you browse them just like any other message-map entries. +> ClassWizard does not support entering ON_MESSAGE handler routines from the ClassWizard user interface. You must manually enter them from the Visual Studio editor. ClassWizard will parse these entries and let you browse them just like any other message-map entries. ## Registered Windows Messages @@ -150,7 +150,7 @@ Advanced users can use the ON_COMMAND_EX macro, which is an extended form of com Examples of these forms: -- Inside Resource.h (usually generated by Visual C++) +- Inside Resource.h (usually generated by Visual Studio) ```cpp #define ID_MYCMD 100 diff --git a/docs/mfc/tn011-using-mfc-as-part-of-a-dll.md b/docs/mfc/tn011-using-mfc-as-part-of-a-dll.md index 6036c016123..d46e12b6e97 100644 --- a/docs/mfc/tn011-using-mfc-as-part-of-a-dll.md +++ b/docs/mfc/tn011-using-mfc-as-part-of-a-dll.md @@ -17,7 +17,7 @@ If both a DLL and an application want to use MFC, both have a choice to either u regular MFC DLLs have several advantages: -- The application that uses the DLL does not have to use MFC and does not have to be a Visual C++ application. +- The application that uses the DLL does not have to use MFC and does not have to be a Visual Studio application. - With regular MFC DLLs that statically link to MFC, the size of the DLL depends only on the MFC and C runtime routines that are used and linked. @@ -63,7 +63,7 @@ The `DllMain` function that MFC provides will call the [CWinApp::ExitInstance](. ## Linking Your DLL -With regular MFC DLLs that statically link to MFC, you must link your DLL with Nafxcwd.lib or Nafxcw.lib and with the version of the C runtimes named Libcmt.lib. These libraries are pre-built and may be installed by specifying them when you run Visual C++ setup. +With regular MFC DLLs that statically link to MFC, you must link your DLL with Nafxcwd.lib or Nafxcw.lib and with the version of the C runtimes named Libcmt.lib. These libraries are pre-built and may be installed by specifying them when you run Visual Studio setup. ## Sample Code diff --git a/docs/mfc/tn020-id-naming-and-numbering-conventions.md b/docs/mfc/tn020-id-naming-and-numbering-conventions.md index 753afb306c8..96b6e6d29b3 100644 --- a/docs/mfc/tn020-id-naming-and-numbering-conventions.md +++ b/docs/mfc/tn020-id-naming-and-numbering-conventions.md @@ -12,13 +12,13 @@ This note describes the ID naming and numbering conventions that MFC 2.0 uses fo The MFC ID naming and numbering conventions are intended to meet the following requirements: -- Provide a consistent ID-naming standard used across the MFC library and MFC applications that are supported by the Visual C++ resource editor. This makes it easier for the programmer to interpret the type and origin of a resource from its ID. +- Provide a consistent ID-naming standard used across the MFC library and MFC applications that are supported by the Visual Studio resource editor. This makes it easier for the programmer to interpret the type and origin of a resource from its ID. - Emphasize the strong 1-to-1 relationship between certain types of IDs. - Conform to already widely used standards for naming IDs in Windows. -- Partition the ID-numbering space. ID numbers can be assigned by the programmer, MFC, Windows, and Visual C++-edited resources. Appropriate partitioning will help avoid duplication of ID numbers. +- Partition the ID-numbering space. ID numbers can be assigned by the programmer, MFC, Windows, and Visual Studio-edited resources. Appropriate partitioning will help avoid duplication of ID numbers. ## The ID Prefix Naming Convention diff --git a/docs/mfc/tn021-command-and-message-routing.md b/docs/mfc/tn021-command-and-message-routing.md index 597613bdc7b..8e2210c3546 100644 --- a/docs/mfc/tn021-command-and-message-routing.md +++ b/docs/mfc/tn021-command-and-message-routing.md @@ -13,7 +13,7 @@ ms.assetid: b5952c8b-123e-406c-a36d-a6ac7c6df307 This note describes the command routing and dispatch architecture as well as advanced topics in general window message routing. -Please refer to Visual C++ for general details on the architectures described here, especially the distinction between Windows messages, control notifications, and commands. This note assumes you are very familiar with the issues described in the printed documentation and only addresses very advanced topics. +Please refer to Visual Studio for general details on the architectures described here, especially the distinction between Windows messages, control notifications, and commands. This note assumes you are very familiar with the issues described in the printed documentation and only addresses very advanced topics. ## Command Routing and Dispatch MFC 1.0 Functionality Evolves to MFC 2.0 Architecture @@ -29,7 +29,7 @@ This functionality has been generalized and extended in MFC 2.0 to allow command ## Command IDs -See Visual C++ for an explanation of the command routing and binding process. [Technical Note 20](../mfc/tn020-id-naming-and-numbering-conventions.md) contains information on ID naming. +See Visual Studio for an explanation of the command routing and binding process. [Technical Note 20](../mfc/tn020-id-naming-and-numbering-conventions.md) contains information on ID naming. We use the generic prefix "ID_" for command IDs. Command IDs are >= 0x8000. The message line or status bar will show the command description string if there is a STRINGTABLE resource with the same IDs as the command ID. @@ -71,7 +71,7 @@ Maintaining the enabled/checked state of all a program's menu items all the time `CFrameWnd` also handles the WM_ENTERIDLE message to describe the current menu item selected on the status bar (also known as the message line). -An application's menu structure, edited by Visual C++, is used to represent the potential commands available at WM_INITMENUPOPUP time. ON_UPDATE_COMMAND_UI handlers can modify the state or text of a menu, or for advanced uses (like the File MRU list or the OLE Verbs pop-up menu), actually modify the menu structure before the menu is drawn. +An application's menu structure, edited by Visual Studio, is used to represent the potential commands available at WM_INITMENUPOPUP time. ON_UPDATE_COMMAND_UI handlers can modify the state or text of a menu, or for advanced uses (like the File MRU list or the OLE Verbs pop-up menu), actually modify the menu structure before the menu is drawn. The same sort of ON_UPDATE_COMMAND_UI processing is done for toolbars (and other control bars) when the application enters its idle loop. See the *Class Library Reference* and [Technical Note 31](../mfc/tn031-control-bars.md) for more information on control bars. diff --git a/docs/mfc/tn022-standard-commands-implementation.md b/docs/mfc/tn022-standard-commands-implementation.md index 87a928b8c48..b58bce0c1b6 100644 --- a/docs/mfc/tn022-standard-commands-implementation.md +++ b/docs/mfc/tn022-standard-commands-implementation.md @@ -13,7 +13,7 @@ ms.assetid: a7883b46-23f7-4870-ac3a-804aed9258b5 This note describes the standard command implementations provided by MFC 2.0. Read [Technical Note 21](../mfc/tn021-command-and-message-routing.md) first because it describes the mechanisms used to implement many of the standard commands. -This description assumes knowledge of the MFC architectures, APIs, and common programming practice. Documented as well as undocumented "implementation only" APIs are described. This is not a place to start learning about the features of or how to program in MFC. Refer to Visual C++ for more general information and for details of documented APIs. +This description assumes knowledge of the MFC architectures, APIs, and common programming practice. Documented as well as undocumented "implementation only" APIs are described. This is not a place to start learning about the features of or how to program in MFC. Refer to Visual Studio for more general information and for details of documented APIs. ## The Problem diff --git a/docs/mfc/tn023-standard-mfc-resources.md b/docs/mfc/tn023-standard-mfc-resources.md index eebace2edac..f0dfaccf661 100644 --- a/docs/mfc/tn023-standard-mfc-resources.md +++ b/docs/mfc/tn023-standard-mfc-resources.md @@ -29,7 +29,7 @@ Clip-art resources are additional resources that the framework does not depend o - Prompts.rc: Contains menu-prompt string resources for each predefined command, such as "Create a new document" for ID_FILE_NEW. -- Commdlg.rc: A Visual C++ compatible .rc file that contains the standard COMMDLG dialog templates. +- Commdlg.rc: A Visual Studio compatible .rc file that contains the standard COMMDLG dialog templates. Standard framework resources are resources with AFX-defined IDs that the framework depends on for internal implementations. You will rarely need to change these AFX-defined resources. If you do, you should follow the procedure outlined later in this topic. @@ -47,7 +47,7 @@ The following framework resources are contained in the MFC\INCLUDE directory: #### To use a clip-art binary resource -1. Open your application's resource file in Visual C++. +1. Open your application's resource file in Visual Studio. 1. Open Common.rc. This file contains all the binary clip-art resources. This may take some time because the Common.rc file is compiled. @@ -76,7 +76,7 @@ In some rare cases you might want to customize the contents of the standard fram ##### To customize the contents of a standard resource file -1. Open the resource file in Visual C++. +1. Open the resource file in Visual Studio. 1. Using the Resource Set Includes command, remove the `#include` for the standard .rc file that you want to customize. For example, to customize the print-preview toolbar, remove the `#include "afxprint.rc"` line. diff --git a/docs/mfc/tn024-mfc-defined-messages-and-resources.md b/docs/mfc/tn024-mfc-defined-messages-and-resources.md index b510b909b79..4c2ed67fd50 100644 --- a/docs/mfc/tn024-mfc-defined-messages-and-resources.md +++ b/docs/mfc/tn024-mfc-defined-messages-and-resources.md @@ -159,9 +159,9 @@ The default toolbar supplied by AppWizard is based on an RT_TOOLBAR custom resou ## RT_DLGINIT Resource Format -One MFC private resource format is used to store extra dialog initialization information. This includes the initial strings stored in a combo box. The format of this resource is not designed to be manually edited, but is handled by Visual C++. +One MFC private resource format is used to store extra dialog initialization information. This includes the initial strings stored in a combo box. The format of this resource is not designed to be manually edited, but is handled by Visual Studio. -Visual C++ and this RT_DLGINIT resource are not required to use the related features of MFC since there are API alternative to using the information in the resource. Using Visual C++ makes it much easier to write, maintain, and translate your application in the long run. +Visual Studio and this RT_DLGINIT resource are not required to use the related features of MFC since there are API alternative to using the information in the resource. Using Visual Studio makes it much easier to write, maintain, and translate your application in the long run. The basic structure of a RT_DLGINIT resource is as follows: @@ -186,7 +186,7 @@ A repeated section contains the control ID to send the message to, the Message # SendDlgItemMessage(, , 0, &); ``` -This is a very general format, allowing any Windows messages and data content. The Visual C++ resource editor and MFC only support a limited subset of Windows messages: CB_ADDSTRING for the initial list-choices for combo boxes (the data is a text string). +This is a very general format, allowing any Windows messages and data content. The Visual Studio resource editor and MFC only support a limited subset of Windows messages: CB_ADDSTRING for the initial list-choices for combo boxes (the data is a text string). ## See also diff --git a/docs/mfc/tn028-context-sensitive-help-support.md b/docs/mfc/tn028-context-sensitive-help-support.md index 09992516214..7b6b5753c5f 100644 --- a/docs/mfc/tn028-context-sensitive-help-support.md +++ b/docs/mfc/tn028-context-sensitive-help-support.md @@ -8,7 +8,7 @@ ms.assetid: 884f1c55-fa27-4d4c-984f-30907d477484 --- # TN028: Context-Sensitive Help Support -This note describes the rules for assigning Help contexts IDs and other help issues in MFC. Context-sensitive help support requires the help compiler that is available in Visual C++. +This note describes the rules for assigning Help contexts IDs and other help issues in MFC. Context-sensitive help support requires the help compiler that is available in Visual Studio. > [!NOTE] > In addition to implementing context-sensitive help using WinHelp, MFC also supports using HTML Help. For more information on this support and programming with HTML Help, see [HTML Help: Context-Sensitive Help for Your Programs](../mfc/html-help-context-sensitive-help-for-your-programs.md). diff --git a/docs/mfc/tn029-splitter-windows.md b/docs/mfc/tn029-splitter-windows.md index 44ff393dd03..5e0142a3312 100644 --- a/docs/mfc/tn029-splitter-windows.md +++ b/docs/mfc/tn029-splitter-windows.md @@ -14,7 +14,7 @@ This note describes the MFC [CSplitterWnd Class](../mfc/reference/csplitterwnd-c A `CSplitterWnd` supports two different styles of splitting windows. -In "static splitters," the splitter window creates the panes when it is created. The order and number of panes never change. Splitter bars are used to resize the different panes. You can use this style to display a different view class in each pane. The Visual C++ graphics editor and the Windows File Manager are examples of programs that use this splitter style. This style of splitter window does not use splitter boxes. +In "static splitters," the splitter window creates the panes when it is created. The order and number of panes never change. Splitter bars are used to resize the different panes. You can use this style to display a different view class in each pane. The Visual Studio graphics editor and the Windows File Manager are examples of programs that use this splitter style. This style of splitter window does not use splitter boxes. In "dynamic splitters," additional panes are created and destroyed as the user splits and un-splits new views. This splitter starts out with a single view and provides splitter boxes for the user to initiate splitting. The splitter window dynamically creates a new view object when the view is split in one direction. This new view object represents the new pane. If the view is split in two directions by using the keyboard interface, the splitter window creates three new view objects for the three new panes. While the split is active, Windows displays the splitter box as a splitter bar between the panes. Windows destroys additional view objects when the user removes a split, but the original view remains until the splitter window itself is destroyed. Microsoft Excel and Microsoft Word are examples of applications that use the dynamic splitter style. diff --git a/docs/mfc/tn033-dll-version-of-mfc.md b/docs/mfc/tn033-dll-version-of-mfc.md index 0e5df9d531b..b4d84359c16 100644 --- a/docs/mfc/tn033-dll-version-of-mfc.md +++ b/docs/mfc/tn033-dll-version-of-mfc.md @@ -416,9 +416,9 @@ A full rebuild is required after these changes are made. ### Building the Samples -Most of the MFC sample programs can be built from Visual C++ or from a shared NMAKE-compatible MAKEFILE from the command line. +Most of the MFC sample programs can be built from Visual Studio or from a shared NMAKE-compatible MAKEFILE from the command line. -To convert any of these samples to use *`MFCxx.DLL`*, you can load the MAK file into the Visual C++ and set the Project options as described above. If you're using the NMAKE build, you can specify `AFXDLL=1` on the NMAKE command line and that will build the sample using the shared MFC libraries. +To convert any of these samples to use *`MFCxx.DLL`*, you can load the MAK file into the Visual Studio and set the Project options as described above. If you're using the NMAKE build, you can specify `AFXDLL=1` on the NMAKE command line and that will build the sample using the shared MFC libraries. The MFC Advanced Concepts sample [DLLHUSK](../overview/visual-cpp-samples.md) is built with the DLL version of MFC. This sample not only illustrates how to build an application linked with *`MFCxx.DLL`*, but it also illustrates other features of the MFC DLL packaging option such as MFC extension DLLs described later in this technical note. @@ -426,7 +426,7 @@ The MFC Advanced Concepts sample [DLLHUSK](../overview/visual-cpp-samples.md) is The release versions of the DLLs (*`MFCxx.DLL`* and *`MFCxxU.DLL`*) are freely redistributable. The debug versions of the DLLs are not freely redistributable and should be used only during the development of your application. -The debug DLLs are provided with debugging information. By using the Visual C++ debugger, you can trace execution of both your application and the DLL. The Release DLLs (*`MFCxx.DLL`* and *`MFCxxU.DLL`*) don't contain debugging information. +The debug DLLs are provided with debugging information. By using the Visual Studio debugger, you can trace execution of both your application and the DLL. The Release DLLs (*`MFCxx.DLL`* and *`MFCxxU.DLL`*) don't contain debugging information. If you customize or rebuild the DLLs, then you should call them something other than "MFCxx". The MFC SRC file *`MFCDLL.MAK`* describes build options and contains the logic for renaming the DLL. Renaming the files is necessary, since these DLLs are potentially shared by many MFC applications. Having your custom version of the MFC DLLs replace the ones installed on the system may break another MFC application using the shared MFC DLLs. diff --git a/docs/mfc/tn035-using-multiple-resource-files-and-header-files-with-visual-cpp.md b/docs/mfc/tn035-using-multiple-resource-files-and-header-files-with-visual-cpp.md index efb943db144..96416abb045 100644 --- a/docs/mfc/tn035-using-multiple-resource-files-and-header-files-with-visual-cpp.md +++ b/docs/mfc/tn035-using-multiple-resource-files-and-header-files-with-visual-cpp.md @@ -1,17 +1,17 @@ --- -description: "Learn more about: TN035: Using multiple resource files and header files with Visual C++" -title: "TN035: Using multiple resource files and header files with Visual C++" +description: "Learn more about: TN035: Using multiple resource files and header files with Visual Studio" +title: "TN035: Using multiple resource files and header files with Visual Studio" ms.date: "11/04/2016" f1_keywords: ["vc.resources"] helpviewer_keywords: ["resource files, multiple", "TN035"] ms.assetid: 1f08ce5e-a912-44cc-ac56-7dd93ad73fb6 --- -# TN035: Using multiple resource files and header files with Visual C++ +# TN035: Using multiple resource files and header files with Visual Studio > [!NOTE] > The following technical note has not been updated since it was first included in the online documentation. As a result, some procedures and topics might be out of date or incorrect. For the latest information, it is recommended that you search for the topic of interest in the online documentation index. -This note describes how the Visual C++ resource editor supports multiple resource files and header files shared in a single project or shared across multiple projects and how you can take advantage of that support. This note answers these questions: +This note describes how the Visual Studio resource editor supports multiple resource files and header files shared in a single project or shared across multiple projects and how you can take advantage of that support. This note answers these questions: - When might you want to split a project into multiple resource files and/or header files, and how you do it @@ -25,7 +25,7 @@ You should be aware that if you add an additional resource file to your project, This note is structured to answer the above questions as follows: -- **Overview of how Visual C++ manages resource files and header files** provides an overview of how the Resource Set Includes command in Visual C++ lets you use multiple resource files and header files in the same project. +- **Overview of how Visual Studio manages resource files and header files** provides an overview of how the Resource Set Includes command in Visual Studio lets you use multiple resource files and header files in the same project. - **Analysis of AppWizard-created `.RC` and `.H` Files** looks at the multiple resource and header files that are used by an AppWizard-created application. These files serve as a good model for additional resource files and header files you might want to add to your project. @@ -35,17 +35,17 @@ This note is structured to answer the above questions as follows: - **Using multiple resource files in the same project** describes where you might want to break up your project into multiple `.RC` files, and provides details how to do so. -- **Enforcement of non-editable Visual C++ files** describes how you can make sure Visual C++ doesn't edit and unintentionally reformat a custom resource. +- **Enforcement of non-editable Visual Studio files** describes how you can make sure Visual Studio doesn't edit and unintentionally reformat a custom resource. -- **Managing symbols shared by multiple Visual C++-edited `.RC` files** describes how to share the same symbols across multiple `.RC` files and how to avoid assigning duplicate ID numeric values. +- **Managing symbols shared by multiple Visual Studio-edited `.RC` files** describes how to share the same symbols across multiple `.RC` files and how to avoid assigning duplicate ID numeric values. -- **Managing dependencies between `.RC`, `.CPP`, and `.H` files** describes how Visual C++ avoids unnecessary recompiling `.CPP` files that are dependent on resource symbol files. +- **Managing dependencies between `.RC`, `.CPP`, and `.H` files** describes how Visual Studio avoids unnecessary recompiling `.CPP` files that are dependent on resource symbol files. -- **How Visual C++ manages Set Includes information** provides technical details about how Visual C++ keeps track of multiple (nested) `.RC` files and multiple header files that are included by an `.RC` file. +- **How Visual Studio manages Set Includes information** provides technical details about how Visual Studio keeps track of multiple (nested) `.RC` files and multiple header files that are included by an `.RC` file. -## Overview of how Visual C++ manages resource files and header files +## Overview of how Visual Studio manages resource files and header files -Visual C++ manages a single `.RC` resource file and a corresponding `.H` header file as a tightly coupled pair of files. When you edit and save resources in an `.RC` file, you indirectly edit and save symbols in the corresponding `.H` file. Although you can open and edit multiple `.RC` files at a time (using Visual C++'s MDI user interface), for any given `.RC` file you indirectly edit exactly one corresponding header file. +Visual Studio manages a single `.RC` resource file and a corresponding `.H` header file as a tightly coupled pair of files. When you edit and save resources in an `.RC` file, you indirectly edit and save symbols in the corresponding `.H` file. Although you can open and edit multiple `.RC` files at a time (using Visual Studio's MDI user interface), for any given `.RC` file you indirectly edit exactly one corresponding header file. ### Resource View's Resource Includes dialog @@ -53,26 +53,26 @@ To access the **Resource Includes**, open the **Resource View** then right-click #### Symbol Header File -By default, Visual C++ always names the corresponding header file `RESOURCE.H`, regardless of the name of the resource file (for example, `MYAPP.RC`). The **Symbol Header File:** section in the **Resource Includes** dialog in Visual C++, lets you change the name of this header file. Enter a new file name in the section's edit box. +By default, Visual Studio always names the corresponding header file `RESOURCE.H`, regardless of the name of the resource file (for example, `MYAPP.RC`). The **Symbol Header File:** section in the **Resource Includes** dialog in Visual Studio, lets you change the name of this header file. Enter a new file name in the section's edit box. > [!NOTE] > resource files not located in the same directory as the `.RC` file must prepend a relative path with escaped-'\\' to be read properly. #### Read-Only Symbol Directives -Although Visual C++ only edits one header file for any given `.RC` file, Visual C++ supports references to symbols defined in additional read-only header files. The **Read-Only Symbol Directives:** section in the **Resource Includes** dialog lets you specify any number of additional read-only header files as Read-Only Symbol Directives. The "read-only" restriction means that when you add a new resource in the `.RC` file, you can use a symbol defined in the read-only header file. However, if you delete the resource, the symbol still remains defined in the read-only header file. You can't change the numeric value assigned to a read-only symbol. +Although Visual Studio only edits one header file for any given `.RC` file, Visual Studio supports references to symbols defined in additional read-only header files. The **Read-Only Symbol Directives:** section in the **Resource Includes** dialog lets you specify any number of additional read-only header files as Read-Only Symbol Directives. The "read-only" restriction means that when you add a new resource in the `.RC` file, you can use a symbol defined in the read-only header file. However, if you delete the resource, the symbol still remains defined in the read-only header file. You can't change the numeric value assigned to a read-only symbol. #### Compile-Time Directives -Visual C++ also supports nesting of resource files, where one `.RC` file is included within another by using a `#include` directive. When you edit a given `.RC` file using Visual C++, any resources in the included files aren't visible. But when you compile the `.RC` file, the included files are also compiled. The **Compile-Time Directives:** section in the **Resources Includes** dialog lets you specify any number of `.RC` files to include as Compile-Time Directives. +Visual Studio also supports nesting of resource files, where one `.RC` file is included within another by using a `#include` directive. When you edit a given `.RC` file using Visual Studio, any resources in the included files aren't visible. But when you compile the `.RC` file, the included files are also compiled. The **Compile-Time Directives:** section in the **Resources Includes** dialog lets you specify any number of `.RC` files to include as Compile-Time Directives. -Note what happens if you read into Visual C++ an `.RC` file that includes another `.RC` file that isn't* specified as a Compile-Time Directive. This situation might arise when you bring to Visual C++ an `.RC` file that you had been previously maintaining manually with a text editor. When Visual C++ reads the included `.RC` file, it merges the included resources into the parent `.RC` file. When you save the parent `.RC` file, the `#include` statement, in effect, will be replaced by the included resources. If you don't want this merge to happen, you should remove the `#include` statement from the parent `.RC` file *prior* to reading it into Visual C++; then using Visual C++, add back the same `#include` statement as a Compile-Time Directive. +Note what happens if you read into Visual Studio an `.RC` file that includes another `.RC` file that isn't* specified as a Compile-Time Directive. This situation might arise when you bring to Visual Studio an `.RC` file that you had been previously maintaining manually with a text editor. When Visual Studio reads the included `.RC` file, it merges the included resources into the parent `.RC` file. When you save the parent `.RC` file, the `#include` statement, in effect, will be replaced by the included resources. If you don't want this merge to happen, you should remove the `#include` statement from the parent `.RC` file *prior* to reading it into Visual Studio; then using Visual Studio, add back the same `#include` statement as a Compile-Time Directive. -Visual C++ saves in an `.RC` file the three kinds of above Set Includes information (Symbol Header File, Read-Only Symbol Directives, and Compile-Time Directives) in `#include` directives *and* in `TEXTINCLUDE` resources. The `TEXTINCLUDE` resources, an implementation detail that you don't normally need to deal with, are explained in [How Visual C++ manages set includes information](#_mfcnotes_tn035_set_includes). +Visual Studio saves in an `.RC` file the three kinds of above Set Includes information (Symbol Header File, Read-Only Symbol Directives, and Compile-Time Directives) in `#include` directives *and* in `TEXTINCLUDE` resources. The `TEXTINCLUDE` resources, an implementation detail that you don't normally need to deal with, are explained in [How Visual Studio manages set includes information](#_mfcnotes_tn035_set_includes). ## Analysis of AppWizard-created `.RC` and `.H` files -Examining the application code produced by AppWizard provides insight into how Visual C++ manages multiple resource files and header files. The code excerpts examined below are from a `MYAPP` application produced by AppWizard using the default options. +Examining the application code produced by AppWizard provides insight into how Visual Studio manages multiple resource files and header files. The code excerpts examined below are from a `MYAPP` application produced by AppWizard using the default options. An AppWizard-created application uses multiple resource files and multiple header files, as summarized in the diagram below: @@ -88,12 +88,12 @@ An AppWizard-created application uses multiple resource files and multiple heade AFXPRINT.RC ``` -You can view these multiple file relationships using the Visual C++ File/Set Includes command. +You can view these multiple file relationships using the Visual Studio File/Set Includes command. `MYAPP.RC`\ -The application resource file that you edit using Visual C++. +The application resource file that you edit using Visual Studio. -`RESOURCE.H` is the application-specific header file. It's always named `RESOURCE.H` by AppWizard, consistent with Visual C++'s default naming of the header file. The `#include` for this header file is the first statement in the resource file (`MYAPP.RC`): +`RESOURCE.H` is the application-specific header file. It's always named `RESOURCE.H` by AppWizard, consistent with Visual Studio's default naming of the header file. The `#include` for this header file is the first statement in the resource file (`MYAPP.RC`): ```rc //Microsoft Visual C++ generated resource script @@ -102,13 +102,13 @@ The application resource file that you edit using Visual C++. ``` `RES\MYAPP.RC2`\ -Contains resources that won't be edited by Visual C++ but will be included in the final compiled `.EXE` file. AppWizard creates no such resources by default, since Visual C++ can edit all of the standard resources, including the version resource (a new feature in this release). An empty file is generated by AppWizard in case you wish to add your own custom formatted resources to this file. +Contains resources that won't be edited by Visual Studio but will be included in the final compiled `.EXE` file. AppWizard creates no such resources by default, since Visual Studio can edit all of the standard resources, including the version resource (a new feature in this release). An empty file is generated by AppWizard in case you wish to add your own custom formatted resources to this file. -If you use custom formatted resources, you can add them to `RES\MYAPP.RC2` and edit them using the Visual C++ text editor. +If you use custom formatted resources, you can add them to `RES\MYAPP.RC2` and edit them using the Visual Studio text editor. -`AFXRES.RC` and `AFXPRINT.RC` contain standard resources required by certain features of the framework. Like `RES\MYAPP.RC2`, these two framework-provided resource files are included at the end of `MYAPP.RC`, and they're specified in the Compile-Time Directives of the Set Includes dialog box. Thus, you don't directly view or edit these framework resources while you edit `MYAPP.RC` in Visual C++, but they're compiled into the application's binary `.RES` file and final `.EXE` file. For more information on the standard framework resources, including procedures for modifying them, see [Technical Note 23](../mfc/tn023-standard-mfc-resources.md). +`AFXRES.RC` and `AFXPRINT.RC` contain standard resources required by certain features of the framework. Like `RES\MYAPP.RC2`, these two framework-provided resource files are included at the end of `MYAPP.RC`, and they're specified in the Compile-Time Directives of the Set Includes dialog box. Thus, you don't directly view or edit these framework resources while you edit `MYAPP.RC` in Visual Studio, but they're compiled into the application's binary `.RES` file and final `.EXE` file. For more information on the standard framework resources, including procedures for modifying them, see [Technical Note 23](../mfc/tn023-standard-mfc-resources.md). -`AFXRES.H` defines standard symbols, such as `ID_FILE_NEW`, used by the framework and specifically used in `AFXRES.RC`. `AFXRES.H` also uses `#include` to include `WINRES.H`, which contains a subset of `WINDOWS.H` that's needed by Visual C++ generated `.RC` files and `AFXRES.RC`. The symbols defined in `AFXRES.H` are available as you edit the application resource file (`MYAPP.RC`). For example, `ID_FILE_NEW` is used for the `File` `New` menu item in the `MYAPP.RC` file's menu resource. You can't change or delete these framework-defined symbols. +`AFXRES.H` defines standard symbols, such as `ID_FILE_NEW`, used by the framework and specifically used in `AFXRES.RC`. `AFXRES.H` also uses `#include` to include `WINRES.H`, which contains a subset of `WINDOWS.H` that's needed by Visual Studio generated `.RC` files and `AFXRES.RC`. The symbols defined in `AFXRES.H` are available as you edit the application resource file (`MYAPP.RC`). For example, `ID_FILE_NEW` is used for the `File` `New` menu item in the `MYAPP.RC` file's menu resource. You can't change or delete these framework-defined symbols. ## Including additional header files @@ -116,7 +116,7 @@ The AppWizard-created application includes only two header files: `RESOURCE.H` a The header file is provided by an external source, or you want to share the header file among multiple projects or multiple parts of the same project. -The header file has formatting and comments that you don't want Visual C++ to change or filter out when it saves the file. For example, maybe you want to preserve #define's that use symbolic arithmetic such as: +The header file has formatting and comments that you don't want Visual Studio to change or filter out when it saves the file. For example, maybe you want to preserve #define's that use symbolic arithmetic such as: ```h #define RED 0 @@ -170,22 +170,22 @@ The case where the second header file is shared by two `.RC` files in the same a ## Using multiple resource files in the same project -Visual C++ and the Resource Compiler support multiple `.RC` files in the same project through `#include` directives that include one `.RC` file within another. Multiple nesting is allowed. There are various reasons to split your project's resources into multiple `.RC` files: +Visual Studio and the Resource Compiler support multiple `.RC` files in the same project through `#include` directives that include one `.RC` file within another. Multiple nesting is allowed. There are various reasons to split your project's resources into multiple `.RC` files: - It's easier to manage a large number of resources among multiple project team members if you split the resources into multiple `.RC` files. If you use a source control management package for checking out files and checking in changes, splitting the resources into multiple `.RC` files will give you finer control over managing changes to resources. - If you want to use preprocessor directives, such as `#ifdef`, `#endif`, and `#define`, for portions of your resources, you must isolate them in read-only resources that will be compiled by the Resource Compiler. -- Component `.RC` files will load and save faster in Visual C++ than one composite `.RC` file. +- Component `.RC` files will load and save faster in Visual Studio than one composite `.RC` file. -- If you want to maintain a resource with a text editor in a human-readable form, you should keep it in a `.RC` file separate from the one Visual C++ edits. +- If you want to maintain a resource with a text editor in a human-readable form, you should keep it in a `.RC` file separate from the one Visual Studio edits. -- If you need to keep a user-defined resource in a binary or text form that is interpretable by another specialized data editor, then you should keep it in a separate `.RC` file so Visual C++ doesn't change the format to hexadecimal data. The `.WAV` (sound) file resources in the MFC Advanced Concepts sample [SPEAKN](../overview/visual-cpp-samples.md) are a good example. +- If you need to keep a user-defined resource in a binary or text form that is interpretable by another specialized data editor, then you should keep it in a separate `.RC` file so Visual Studio doesn't change the format to hexadecimal data. The `.WAV` (sound) file resources in the MFC Advanced Concepts sample [SPEAKN](../overview/visual-cpp-samples.md) are a good example. You can include `SECOND.RC` in the Compile-Time Directives in the Set Includes dialog box: ```h -#include "res\myapp.rc2" // non-Visual C++ edited resources +#include "res\myapp.rc2" // non-Visual Studio edited resources #include "second.rc" // THE SECOND .RC FILE #include "afxres.rc" // Standard components @@ -207,27 +207,27 @@ The result is illustrated in the following diagram: AFXPRINT.RC ``` -Using Compile-Time Directives, you can organize your Visual C++-editable and non-editable resources into multiple `.RC` files, where the main `MYAPP.RC` does nothing but `#include` the other `.RC` files. If you're using a Visual Studio C++ project `.MAK` file, then you should include the main `.RC` file in the project so that all the included resources are compiled with your application. +Using Compile-Time Directives, you can organize your Visual Studio-editable and non-editable resources into multiple `.RC` files, where the main `MYAPP.RC` does nothing but `#include` the other `.RC` files. If you're using a Visual Studio C++ project `.MAK` file, then you should include the main `.RC` file in the project so that all the included resources are compiled with your application. -## Enforcement of non-editable Visual C++ files +## Enforcement of non-editable Visual Studio files -The AppWizard-created `RES\MYAPP.RC2` file is an example of a file that contains resources that you don't want to accidentally read into Visual C++ and then write back out with loss of formatting information. To protect against this problem, place the following lines in the beginning of the `RES\MYAPP.RC2` file: +The AppWizard-created `RES\MYAPP.RC2` file is an example of a file that contains resources that you don't want to accidentally read into Visual Studio and then write back out with loss of formatting information. To protect against this problem, place the following lines in the beginning of the `RES\MYAPP.RC2` file: ```rc2 #ifdef APSTUDIO_INVOKED - #error this file is not editable by Visual C++ + #error this file is not editable by Visual Studio #endif //APSTUDIO_INVOKED ``` -When Visual C++ compiles the `.RC` file, it defines both `APSTUDIO_INVOKED` and `RC_INVOKED`. If the AppWizard-created file structure is corrupted and Visual C++ reads the #error line above, it reports a fatal error and aborts the reading of the `.RC` file. +When Visual Studio compiles the `.RC` file, it defines both `APSTUDIO_INVOKED` and `RC_INVOKED`. If the AppWizard-created file structure is corrupted and Visual Studio reads the #error line above, it reports a fatal error and aborts the reading of the `.RC` file. -## Managing symbols shared by multiple Visual C++-edited `.RC` files +## Managing symbols shared by multiple Visual Studio-edited `.RC` files -Two issues arise when you split up your resources into multiple `.RC` files that you want to edit separately in Visual C++: +Two issues arise when you split up your resources into multiple `.RC` files that you want to edit separately in Visual Studio: - You might want to share the same symbols across multiple `.RC` files. -- You need to help Visual C++ avoid assigning the same ID numeric values to distinct resources (symbols). +- You need to help Visual Studio avoid assigning the same ID numeric values to distinct resources (symbols). The following diagram illustrates an organization of `.RC` and `.H` files that deals with the first issue: @@ -243,11 +243,11 @@ MYSTRS.H / MYSHARED.H \ MYMENUS.H In this example, string resources are kept in one resource file, `MYSTRS.RC`, and menus are kept in another, `MYMENUS.RC`. Some symbols, such as for commands, may need to be shared between the two files. For example, a `ID_TOOLS_SPELL` may be the menu command ID for the Spell item in a Tools menu; and it may also be the string ID of the command prompt displayed by the framework in the application's main window status bar. -The `ID_TOOLS_SPELL` symbol is kept in the shared header file, `MYSHARED.H`. You maintain this shared header file manually with a text editor; Visual C++ doesn't directly edit it. In the two resource files `MYSTRS.RC` and `MYMENUS.RC`, you specify `#include "MYSHARED.H"` in the Read-Only Directives for `MYAPP.RC`, using the **Resource Includes** command, as described earlier. +The `ID_TOOLS_SPELL` symbol is kept in the shared header file, `MYSHARED.H`. You maintain this shared header file manually with a text editor; Visual Studio doesn't directly edit it. In the two resource files `MYSTRS.RC` and `MYMENUS.RC`, you specify `#include "MYSHARED.H"` in the Read-Only Directives for `MYAPP.RC`, using the **Resource Includes** command, as described earlier. It's most convenient to anticipate a symbol you'll share before you attempt to use it to identify any resource. Add the symbol to the shared header file and, if you haven't already included the shared header file in the Read-Only Directives for the `.RC` file, do so before using the symbol. If you didn't anticipate sharing the symbol in this way, then you'll have to manually (using a text editor) move the #define statement for the symbol from, say, `MYMENUS.H` to `MYSHARED.H` before using it in `MYSTRS.RC`. -When you manage symbols in multiple `.RC` files, you also must help Visual C++ avoid assigning the same ID numeric values to distinct resources (symbols). For any given `.RC` file, Visual C++ incrementally assigns IDs in each of four ID domains. Between editing sessions, Visual C++ keeps track of the last ID it assigned in each of the domains in the Symbol Header File for the `.RC` file. Here's what the `APS_NEXT` values are for an empty (new) `.RC` file: +When you manage symbols in multiple `.RC` files, you also must help Visual Studio avoid assigning the same ID numeric values to distinct resources (symbols). For any given `.RC` file, Visual Studio incrementally assigns IDs in each of four ID domains. Between editing sessions, Visual Studio keeps track of the last ID it assigned in each of the domains in the Symbol Header File for the `.RC` file. Here's what the `APS_NEXT` values are for an empty (new) `.RC` file: ```rc #define _APS_NEXT_RESOURCE_VALUE 101 @@ -264,9 +264,9 @@ When you manage symbols in multiple `.RC` files, you also must help Visual C++ a `_APS_NEXT_SYMED_VALUE` is the next symbol value that will be issued when you manually assign a symbol value using the New command in the Symbol Browser. -Visual C++ starts with slightly higher values that the lowest legal value when creating a new `.RC` file. AppWizard will also initialize these values to something more appropriate for MFC applications. For more information about ID value ranges, see [Technical Note 20](../mfc/tn020-id-naming-and-numbering-conventions.md). +Visual Studio starts with slightly higher values that the lowest legal value when creating a new `.RC` file. AppWizard will also initialize these values to something more appropriate for MFC applications. For more information about ID value ranges, see [Technical Note 20](../mfc/tn020-id-naming-and-numbering-conventions.md). -Now every time you create a new resource file, even in the same project, Visual C++ defines the same `_APS_NEXT_` values. It means that if you add, say, multiple dialogs in two different `.RC` files, it's highly likely that the same #define value will be assigned to different dialogs. For example, `IDD_MY_DLG1` in the first `.RC` file might be assigned the same number, 101, as `IDD_MY_DLG2` in a second `.RC` file. +Now every time you create a new resource file, even in the same project, Visual Studio defines the same `_APS_NEXT_` values. It means that if you add, say, multiple dialogs in two different `.RC` files, it's highly likely that the same #define value will be assigned to different dialogs. For example, `IDD_MY_DLG1` in the first `.RC` file might be assigned the same number, 101, as `IDD_MY_DLG2` in a second `.RC` file. To avoid this issue, you should reserve a separate numeric range for each of the four domains of IDs in the respective `.RC` files. Set the ranges by manually updating the `_APS_NEXT` values in each of the `.RC` files **before** you start adding resources. For example, if the first `.RC` file uses the default `_APS_NEXT` values, then you might want to assign the following `_APS_NEXT` values to the second `.RC` file: @@ -277,13 +277,13 @@ To avoid this issue, you should reserve a separate numeric range for each of the #define _APS_NEXT_SYMED_VALUE 2000 ``` -Of course, it's still possible that Visual C++ will assign so many IDs in the first `.RC` file that the numeric values start to overlap the ones reserved for the second `.RC` file. You should reserve sufficiently large ranges so that this collision doesn't happen. +Of course, it's still possible that Visual Studio will assign so many IDs in the first `.RC` file that the numeric values start to overlap the ones reserved for the second `.RC` file. You should reserve sufficiently large ranges so that this collision doesn't happen. ## Managing dependencies between `.RC`, `.CPP`, and `.H` files -When Visual C++ saves an `.RC` file, it also saves symbol changes to the corresponding `RESOURCE.H` file. Any of your `.CPP` files that refer to resources in the `.RC` file must use `#include` to include the `RESOURCE.H` file, usually from within your project's main header file. This inclusion leads to an undesirable side-effect because of the development environment's internal project management, which scans source files for header dependencies. Every time you add a new symbol in Visual C++, all the `.CPP` files that have `#include "RESOURCE.H"` directives would need to be recompiled. +When Visual Studio saves an `.RC` file, it also saves symbol changes to the corresponding `RESOURCE.H` file. Any of your `.CPP` files that refer to resources in the `.RC` file must use `#include` to include the `RESOURCE.H` file, usually from within your project's main header file. This inclusion leads to an undesirable side-effect because of the development environment's internal project management, which scans source files for header dependencies. Every time you add a new symbol in Visual Studio, all the `.CPP` files that have `#include "RESOURCE.H"` directives would need to be recompiled. -Visual C++, circumvents the dependency on `RESOURCE.H` by including the following comment as the first line of the `RESOURCE.H` file: +Visual Studio, circumvents the dependency on `RESOURCE.H` by including the following comment as the first line of the `RESOURCE.H` file: ```h //{{NO_DEPENDENCIES}} @@ -291,9 +291,9 @@ Visual C++, circumvents the dependency on `RESOURCE.H` by including the followin The development environment interprets this comment by ignoring the changes to `RESOURCE.H` so that dependent `.CPP` files won't need to be recompiled. -Visual C++ always adds the `//{{NO_DEPENDENCIES}}` comment line to a `.RC` file when it saves the file. In some cases, circumventing of the build dependency on `RESOURCE.H` may lead to run-time errors undetected at link time. For example, if you use the Symbol Browser to change the numeric value assigned to a symbol for a resource, the resource won't be correctly found and loaded at application run-time if the `.CPP` file referring to the resource isn't recompiled. In such cases, you should explicitly recompile any `.CPP` files that you know are affected by the symbol changes in `RESOURCE.H` or select **Rebuild All**. If you have the need to frequently change symbol values for a certain group of resources, you'll probably find it more convenient and safer to break out these symbols into a separate read-only header file, as described in the above section [Including Additional Header Files](#_mfcnotes_tn035_including). +Visual Studio always adds the `//{{NO_DEPENDENCIES}}` comment line to a `.RC` file when it saves the file. In some cases, circumventing of the build dependency on `RESOURCE.H` may lead to run-time errors undetected at link time. For example, if you use the Symbol Browser to change the numeric value assigned to a symbol for a resource, the resource won't be correctly found and loaded at application run-time if the `.CPP` file referring to the resource isn't recompiled. In such cases, you should explicitly recompile any `.CPP` files that you know are affected by the symbol changes in `RESOURCE.H` or select **Rebuild All**. If you have the need to frequently change symbol values for a certain group of resources, you'll probably find it more convenient and safer to break out these symbols into a separate read-only header file, as described in the above section [Including Additional Header Files](#_mfcnotes_tn035_including). -## How Visual C++ manages Set Includes information +## How Visual Studio manages Set Includes information As discussed above, the File menu Set Includes command lets you specify three types of information: @@ -303,11 +303,11 @@ As discussed above, the File menu Set Includes command lets you specify three ty - Compile-Time Directives -The following table describes how Visual C++ maintains this information in a `.RC` file. You don't need this information to use Visual C++, but it may enhance your understanding so that you can more confidently use the Set Includes feature. +The following table describes how Visual Studio maintains this information in a `.RC` file. You don't need this information to use Visual Studio, but it may enhance your understanding so that you can more confidently use the Set Includes feature. -Each of the above three types of Set Includes information is stored in the `.RC` file in two forms: (1) as `#include` or other directives interpretable by the Resource Compiler, and (2) as special `TEXTINCLUDE` resources interpretable only by Visual C++. +Each of the above three types of Set Includes information is stored in the `.RC` file in two forms: (1) as `#include` or other directives interpretable by the Resource Compiler, and (2) as special `TEXTINCLUDE` resources interpretable only by Visual Studio. -The purpose of the `TEXTINCLUDE` resource is to safely store Set Include information in a form that is readily presentable in Visual C++'s **Set Includes** dialog box. `TEXTINCLUDE` is a *resource type* defined by Visual C++. Visual C++ recognizes three specific `TEXTINCLUDE` resources that have the resource identification numbers 1, 2 and 3: +The purpose of the `TEXTINCLUDE` resource is to safely store Set Include information in a form that is readily presentable in Visual Studio's **Set Includes** dialog box. `TEXTINCLUDE` is a *resource type* defined by Visual Studio. Visual Studio recognizes three specific `TEXTINCLUDE` resources that have the resource identification numbers 1, 2 and 3: |`TEXTINCLUDE` resource ID|Type of Set Includes information| |-----------------------------|--------------------------------------| @@ -362,21 +362,21 @@ Compile-Time Directives are included at the end of `MYAPP.RC` in the following f // // From TEXTINCLUDE 3 // -#include "res\myapp.rc2" // non-Visual C++ edited resources +#include "res\myapp.rc2" // non-Visual Studio edited resources #include "afxres.rc" // Standard components #include "afxprint.rc" // printing/print preview resources #endif // not APSTUDIO_INVOKED ``` -The `#ifndef APSTUDIO_INVOKED` directive instructs Visual C++ to skip over Compile-Time Directives. +The `#ifndef APSTUDIO_INVOKED` directive instructs Visual Studio to skip over Compile-Time Directives. The corresponding `TEXTINCLUDE` resource is: ```rc 3 TEXTINCLUDE DISCARDABLE BEGIN -"#include ""res\myapp.rc2"" // non-Visual C++ edited resources\r\n" +"#include ""res\myapp.rc2"" // non-Visual Studio edited resources\r\n" "\r\n" "#include ""afxres.rc"" // Standard components\r\n" "#include ""afxprint.rc"" // printing/print preview resources\r\n" diff --git a/docs/mfc/tn039-mfc-ole-automation-implementation.md b/docs/mfc/tn039-mfc-ole-automation-implementation.md index f0293d78dae..9cc0196268e 100644 --- a/docs/mfc/tn039-mfc-ole-automation-implementation.md +++ b/docs/mfc/tn039-mfc-ole-automation-implementation.md @@ -85,7 +85,7 @@ The Z property is given a **DISPID** with a zero **HIWORD** since it is defined ## Advanced MFC Dispatch Map Features -There are a number of additional features that ClassWizard does not support with this release of Visual C++. ClassWizard supports `DISP_FUNCTION`, `DISP_PROPERTY`, and `DISP_PROPERTY_EX` which define a method, member variable property, and get/set member function property, respectively. These capabilities are usually all that is needed to create most automation servers. +There are a number of additional features that ClassWizard does not support with this release of Visual Studio. ClassWizard supports `DISP_FUNCTION`, `DISP_PROPERTY`, and `DISP_PROPERTY_EX` which define a method, member variable property, and get/set member function property, respectively. These capabilities are usually all that is needed to create most automation servers. The following additional macros can be used when the ClassWizard supported macros are not adequate: `DISP_PROPERTY_NOTIFY`, and `DISP_PROPERTY_PARAM`. diff --git a/docs/mfc/tn041-mfc-ole1-migration-to-mfc-ole-2.md b/docs/mfc/tn041-mfc-ole1-migration-to-mfc-ole-2.md index 9838cef62ca..5dbdc995f5f 100644 --- a/docs/mfc/tn041-mfc-ole1-migration-to-mfc-ole-2.md +++ b/docs/mfc/tn041-mfc-ole1-migration-to-mfc-ole-2.md @@ -276,7 +276,7 @@ At this point, OCLIENT is a functional OLE container application. It is possible One of the most interesting features of OLE is in-place activation (or "Visual Editing"). This feature allows the server application to take over portions of the container's user interface to provided a more seamless editing interface for the user. To implement in-place activation to OCLIENT, some special resources need to be added, as well as some additional code. These resources and the code are normally provided by AppWizard — in fact, much of the code here was borrowed directly from a fresh AppWizard application with "Container" support. -First of all, it is necessary to add a menu resource to be used when there is an item which is in-place active. You can create this extra menu resource in Visual C++ by copying the IDR_OCLITYPE resource and removing all but the File and Window pop-ups. Two separator bars are inserted between the File and Window pop-ups to indicate the separation of groups (it should look like: `File || Window`). For more information on what these separators mean and how the server and container menus are merged see [Menus and Resources: Menu Merging](../mfc/menus-and-resources-menu-merging.md). +First of all, it is necessary to add a menu resource to be used when there is an item which is in-place active. You can create this extra menu resource in Visual Studio by copying the IDR_OCLITYPE resource and removing all but the File and Window pop-ups. Two separator bars are inserted between the File and Window pop-ups to indicate the separation of groups (it should look like: `File || Window`). For more information on what these separators mean and how the server and container menus are merged see [Menus and Resources: Menu Merging](../mfc/menus-and-resources-menu-merging.md). Once you have these menus created, you need to let the framework know about them. This is done by calling `CDocTemplate::SetContainerInfo` for the document template before you add it to the document template list in your InitInstance. The new code to register the document template looks like this: @@ -292,7 +292,7 @@ pTemplate->SetContainerInfo(IDR_OLECLITYPE_INPLACE); AddDocTemplate(pTemplate); ``` -The IDR_OLECLITYPE_INPLACE resource is the special in-place resource created in Visual C++. +The IDR_OLECLITYPE_INPLACE resource is the special in-place resource created in Visual Studio. To enable in-place activation, there are some things that need to change in both the `CView` (CMainView) derived class as well as the `COleClientItem` derived class (CRectItem). All of these overrides are provided by AppWizard and most of the implementation will come directly from a default AppWizard application. @@ -338,7 +338,7 @@ BOOL CRectItem::OnChangeItemPosition(const CRect& rectPos) At this point, there is enough code to allow an item to be in-place activated and to deal with sizing and moving the item when it is active, but no code will allow the user to exit the editing session. Although some servers will provide this functionality themselves by handling the escape key, it is suggested that containers provide two ways to deactivate an item: (1) by clicking outside the item, and (2) by pressing the ESCAPE key. -For the ESCAPE key, add an accelerator with Visual C++ that maps the VK_ESCAPE key to a command, ID_CANCEL_EDIT is added to the resources. The handler for this command follows: +For the ESCAPE key, add an accelerator with Visual Studio that maps the VK_ESCAPE key to a command, ID_CANCEL_EDIT is added to the resources. The handler for this command follows: ```cpp // The following command handler provides the standard @@ -512,7 +512,7 @@ BOOL COLEServerApp::InitInstance() You will notice that the code above refers to a new resource ID, IDR_HIERSVRTYPE_SRVR_EMB. This is the menu resource to be used when a document that is embedded in another container is edited. In MFC/OLE1 the menu items specific to editing an embedded item were modified on the fly. Using an entirely different menu structure when editing an embedded item instead of editing a file-based document makes it much easier to provide different user interfaces for these two separate modes. As you'll see later, an entirely separate menu resource is used when editing an embedded object in-place. -To create this resource, load the resource script into Visual C++ and copy the existing IDR_HIERSVRTYPE menu resource. Rename the new resource to IDR_HIERSVRTYPE_SRVR_EMB (this is the same naming convention that AppWizard uses). Next change "File Save" to "File Update"; give it command ID ID_FILE_UPDATE. Also change "File Save As" to "File Save Copy As"; give it command ID ID_FILE_SAVE_COPY_AS. The framework provides the implementation of both of these commands. +To create this resource, load the resource script into Visual Studio and copy the existing IDR_HIERSVRTYPE menu resource. Rename the new resource to IDR_HIERSVRTYPE_SRVR_EMB (this is the same naming convention that AppWizard uses). Next change "File Save" to "File Update"; give it command ID ID_FILE_UPDATE. Also change "File Save As" to "File Save Copy As"; give it command ID ID_FILE_SAVE_COPY_AS. The framework provides the implementation of both of these commands. ```Output \hiersvr\svritem.h(60) : error C2433: 'OLESTATUS' : 'virtual' not permitted on data declarations @@ -629,9 +629,9 @@ To add "Visual Editing" (or in-place activation) to this server application, the - You need to tell the framework about these special resources and classes. -The menu resource is easy to create. Run Visual C++, copy the menu resource IDR_HIERSVRTYPE to a menu resource called IDR_HIERSVRTYPE_SRVR_IP. Modify the menu so that only the Edit and Help menu popups are left. Add two separators to the menu in between the Edit and Help menus (it should look like: `Edit || Help`). For more information on what these separators mean and how the server and container menus are merged, see [Menus and Resources: Menu Merging](../mfc/menus-and-resources-menu-merging.md). +The menu resource is easy to create. Run Visual Studio, copy the menu resource IDR_HIERSVRTYPE to a menu resource called IDR_HIERSVRTYPE_SRVR_IP. Modify the menu so that only the Edit and Help menu popups are left. Add two separators to the menu in between the Edit and Help menus (it should look like: `Edit || Help`). For more information on what these separators mean and how the server and container menus are merged, see [Menus and Resources: Menu Merging](../mfc/menus-and-resources-menu-merging.md). -The bitmap for the subset toolbar can be easily created by copying the one from a fresh AppWizard generated application with a "Server" option checked. This bitmap can then be imported into Visual C++. Be sure to give the bitmap an ID of IDR_HIERSVRTYPE_SRVR_IP. +The bitmap for the subset toolbar can be easily created by copying the one from a fresh AppWizard generated application with a "Server" option checked. This bitmap can then be imported into Visual Studio. Be sure to give the bitmap an ID of IDR_HIERSVRTYPE_SRVR_IP. The class derived from `COleIPFrameWnd` can be copied from an AppWizard generated application with server support as well. Copy both files, IPFRAME.CPP and IPFRAME.H and add them to the project. Make sure that the `LoadBitmap` call refers to IDR_HIERSVRTYPE_SRVR_IP, the bitmap created in the previous step. diff --git a/docs/mfc/tn053-custom-dfx-routines-for-dao-database-classes.md b/docs/mfc/tn053-custom-dfx-routines-for-dao-database-classes.md index 5902135a9a4..0a40b8e8745 100644 --- a/docs/mfc/tn053-custom-dfx-routines-for-dao-database-classes.md +++ b/docs/mfc/tn053-custom-dfx-routines-for-dao-database-classes.md @@ -8,7 +8,7 @@ ms.assetid: fdcf3c51-4fa8-4517-9222-58aaa4f25cac # TN053: Custom DFX Routines for DAO Database Classes > [!NOTE] -> DAO is used with Access databases and is supported through Office 2013. DAO 3.6 is the final version, and it is considered obsolete. The Visual C++ environment and wizards do not support DAO (although the DAO classes are included and you can still use them). Microsoft recommends that you use [OLE DB Templates](../data/oledb/ole-db-templates.md) or [ODBC and MFC](../data/odbc/odbc-and-mfc.md) for new projects. You should only use DAO in maintaining existing applications. +> DAO is used with Access databases and is supported through Office 2013. DAO 3.6 is the final version, and it is considered obsolete. The Visual Studio environment and wizards do not support DAO (although the DAO classes are included and you can still use them). Microsoft recommends that you use [OLE DB Templates](../data/oledb/ole-db-templates.md) or [ODBC and MFC](../data/odbc/odbc-and-mfc.md) for new projects. You should only use DAO in maintaining existing applications. This technical note describes the DAO record field exchange (DFX) mechanism. To help understand what is happening in the DFX routines, the `DFX_Text` function will be explained in detail as an example. As an additional source of information to this technical note, you can examine the code for the other the individual DFX functions. You probably will not need a custom DFX routine as often as you might need a custom RFX routine (used with ODBC database classes). diff --git a/docs/mfc/tn054-calling-dao-directly-while-using-mfc-dao-classes.md b/docs/mfc/tn054-calling-dao-directly-while-using-mfc-dao-classes.md index c17812d54ab..3b44465a053 100644 --- a/docs/mfc/tn054-calling-dao-directly-while-using-mfc-dao-classes.md +++ b/docs/mfc/tn054-calling-dao-directly-while-using-mfc-dao-classes.md @@ -9,7 +9,7 @@ ms.custom: sfi-ropc-nochange # TN054: Calling DAO Directly While Using MFC DAO Classes > [!NOTE] -> DAO is used with Access databases and is supported through Office 2013. DAO 3.6 is the final version, and it is considered obsolete. The Visual C++ environment and wizards do not support DAO (although the DAO classes are included and you can still use them). Microsoft recommends that you use [OLE DB Templates](../data/oledb/ole-db-templates.md) or [ODBC and MFC](../data/odbc/odbc-and-mfc.md) for new projects. You should only use DAO in maintaining existing applications. +> DAO is used with Access databases and is supported through Office 2013. DAO 3.6 is the final version, and it is considered obsolete. The Visual Studio environment and wizards do not support DAO (although the DAO classes are included and you can still use them). Microsoft recommends that you use [OLE DB Templates](../data/oledb/ole-db-templates.md) or [ODBC and MFC](../data/odbc/odbc-and-mfc.md) for new projects. You should only use DAO in maintaining existing applications. When using the MFC DAO database classes, there may be situations where it is necessary to use DAO directly. Usually, this will not be the case, but MFC has provided some helper mechanisms to facilitate making direct DAO calls simple when combining the use of the MFC classes with direct DAO calls. Making direct DAO calls to the methods of an MFC-managed DAO object should require only a few lines of code. If you need to create and use DAO objects that are *not* managed by MFC, you will have to do a little more work by actually calling `Release` on the object. This technical note explains when you might want to call DAO directly, what the MFC helpers can do to help you, and how to use the DAO OLE interfaces. Finally, this note provides some sample functions showing how to call DAO directly for DAO security features. diff --git a/docs/mfc/tn055-migrating-mfc-odbc-database-class-applications-to-mfc-dao-classes.md b/docs/mfc/tn055-migrating-mfc-odbc-database-class-applications-to-mfc-dao-classes.md index 4f563326304..20f25fc6f90 100644 --- a/docs/mfc/tn055-migrating-mfc-odbc-database-class-applications-to-mfc-dao-classes.md +++ b/docs/mfc/tn055-migrating-mfc-odbc-database-class-applications-to-mfc-dao-classes.md @@ -8,7 +8,7 @@ ms.assetid: 0f858bd1-e168-4e2e-bcd1-8debd82856e4 # TN055: Migrating MFC ODBC Database Class Applications to MFC DAO Classes > [!NOTE] -> DAO is used with Access databases and is supported through Office 2013. DAO 3.6 is the final version, and it is considered obsolete. The Visual C++ environment and wizards do not support DAO (although the DAO classes are included and you can still use them). Microsoft recommends that you use [OLE DB Templates](../data/oledb/ole-db-templates.md) or [ODBC and MFC](../data/odbc/odbc-and-mfc.md) for new projects. You should only use DAO in maintaining existing applications. +> DAO is used with Access databases and is supported through Office 2013. DAO 3.6 is the final version, and it is considered obsolete. The Visual Studio environment and wizards do not support DAO (although the DAO classes are included and you can still use them). Microsoft recommends that you use [OLE DB Templates](../data/oledb/ole-db-templates.md) or [ODBC and MFC](../data/odbc/odbc-and-mfc.md) for new projects. You should only use DAO in maintaining existing applications. ## Overview diff --git a/docs/mfc/tn057-localization-of-mfc-components.md b/docs/mfc/tn057-localization-of-mfc-components.md index bb920458129..b011cb4de35 100644 --- a/docs/mfc/tn057-localization-of-mfc-components.md +++ b/docs/mfc/tn057-localization-of-mfc-components.md @@ -43,13 +43,13 @@ From then on, MFC will load resources from that DLL instead of from myapp.exe. A It is relatively easy to create a resource only DLL. You create a DLL project, add your .RC file to it, and add the necessary resources. If you have an existing project that does not use this technique, you can copy the resources from that project. After adding the resource file to the project, you are almost ready to build the project. The only thing you must do is set the linker options to include **/NOENTRY**. This tells the linker that the DLL has no entry point - since it has no code, it has no entry point. > [!NOTE] -> The resource editor in Visual C++ 4.0 and later supports multiple languages per .RC file. This can make it very easy to manage your localization in a single project. The resources for each language are controlled by preprocessor directives generated by the resource editor. +> The resource editor in Visual Studio 4.0 and later supports multiple languages per .RC file. This can make it very easy to manage your localization in a single project. The resources for each language are controlled by preprocessor directives generated by the resource editor. ## Using the Provided MFC Localized Resources Any MFC application that you build reuses two things from MFC: code and resources. That is, MFC has various error messages, built-in dialogs, and other resources that are used by the MFC classes. In order to completely localize your application, you need to localize not only your application's resources, but also the resources that come directly from MFC. MFC provides a number of different language resource files automatically, so that if the language you are targeting is one of the languages MFC already supports, you just need to make sure you use those localized resources. -As of this writing, MFC supports Chinese, German, Spanish, French, Italian, Japanese, and Korean. The files which contain these localized versions are in the MFC\INCLUDE\L.* (the 'L' stands for localized) directories. The German files are in MFC\INCLUDE\L.DEU, for example. To cause your application to use these RC files instead of the files located in MFC\INCLUDE, add a `/IC:\PROGRAM FILES\MICROSOFT VISUAL STUDIO .NET 2003\VC7\MFC\INCLUDE\L.DEU` to your RC command line (this is just an example; you would need to substitute your locale of choice as well as the directory into which you installed Visual C++). +As of this writing, MFC supports Chinese, German, Spanish, French, Italian, Japanese, and Korean. The files which contain these localized versions are in the MFC\INCLUDE\L.* (the 'L' stands for localized) directories. The German files are in MFC\INCLUDE\L.DEU, for example. To cause your application to use these RC files instead of the files located in MFC\INCLUDE, add a `/IC:\PROGRAM FILES\MICROSOFT VISUAL STUDIO .NET 2003\VC7\MFC\INCLUDE\L.DEU` to your RC command line (this is just an example; you would need to substitute your locale of choice as well as the directory into which you installed Microsoft C++). The above instructions will work if your application links statically with MFC. Most applications link dynamically (because that is the AppWizard default). In this scenario, not only the code is dynamically linked - so are the resources. As a result, you can localize your resources in your application, but the MFC implementation resources will still be loaded from the MFC7x.DLL (or a later version) or from MFC7xLOC.DLL if it exists. You can approach this from two different angles. diff --git a/docs/mfc/tn062-message-reflection-for-windows-controls.md b/docs/mfc/tn062-message-reflection-for-windows-controls.md index 9f4d1c7ffe5..ce9be5675ff 100644 --- a/docs/mfc/tn062-message-reflection-for-windows-controls.md +++ b/docs/mfc/tn062-message-reflection-for-windows-controls.md @@ -90,7 +90,7 @@ This simple example creates a reusable control called `CYellowEdit`. The control You must have an application in which to develop the reusable control. If you don't have an existing application to use, create a dialog-based application using AppWizard. -2. With your project loaded into Visual C++, use ClassWizard to create a new class called `CYellowEdit` based on `CEdit`. +2. With your project loaded into Visual Studio, use ClassWizard to create a new class called `CYellowEdit` based on `CEdit`. 3. Add three member variables to your `CYellowEdit` class. The first two will be *COLORREF* variables to hold the text color and the background color. The third will be a `CBrush` object that will hold the brush for painting the background. The `CBrush` object allows you to create the brush once, merely referencing it after that, and to destroy the brush automatically when the `CYellowEdit` control is destroyed. diff --git a/docs/mfc/tn065-dual-interface-support-for-ole-automation-servers.md b/docs/mfc/tn065-dual-interface-support-for-ole-automation-servers.md index 295169fce62..d7b44243e73 100644 --- a/docs/mfc/tn065-dual-interface-support-for-ole-automation-servers.md +++ b/docs/mfc/tn065-dual-interface-support-for-ole-automation-servers.md @@ -31,7 +31,7 @@ Although OLE Automation allows you to implement an `IDispatch` interface, a VTBL A dual interface is really just a custom interface derived from `IDispatch`. The most straightforward way to implement dual-interface support in a `CCmdTarget`-based class is to first implement the normal dispatch interface on your class using MFC and ClassWizard, then add the custom interface later. For the most part, your custom interface implementation will simply delegate back to the MFC `IDispatch` implementation. -First, modify the ODL file for your server to define dual interfaces for your objects. To define a dual interface, you must use an interface statement, instead of the `DISPINTERFACE` statement that the Visual C++ wizards generate. Rather than removing the existing `DISPINTERFACE` statement, add a new interface statement. By retaining the `DISPINTERFACE` form, you can continue to use ClassWizard to add properties and methods to your object, but you must add the equivalent properties and methods to your interface statement. +First, modify the ODL file for your server to define dual interfaces for your objects. To define a dual interface, you must use an interface statement, instead of the `DISPINTERFACE` statement that the Visual Studio wizards generate. Rather than removing the existing `DISPINTERFACE` statement, add a new interface statement. By retaining the `DISPINTERFACE` form, you can continue to use ClassWizard to add properties and methods to your object, but you must add the equivalent properties and methods to your interface statement. An interface statement for a dual interface must have the *OLEAUTOMATION* and *DUAL* attributes, and the interface must be derived from `IDispatch`. You can use the [GUIDGEN](../overview/visual-cpp-samples.md) sample to create a **IID** for the dual interface: @@ -275,7 +275,7 @@ To add the **UUID** definitions from the MkTypLib-generated header file to your ## Specifying the Correct Object Class Name in the Type Library -The wizards shipped with Visual C++ incorrectly use the implementation class name to specify the coclass in the server's ODL file for OLE-creatable classes. While this will work, the implementation class name is probably not the class name you want users of your object to use. To specify the correct name, open the ODL file, locate each coclass statement, and replace the implementation class name with the correct external name. +The wizards shipped with Visual Studio incorrectly use the implementation class name to specify the coclass in the server's ODL file for OLE-creatable classes. While this will work, the implementation class name is probably not the class name you want users of your object to use. To specify the correct name, open the ODL file, locate each coclass statement, and replace the implementation class name with the correct external name. Note that when the coclass statement is changed, the variable names of **CLSID**s in the MkTypLib-generated header file will change accordingly. You will need to update your code to use the new variable names. diff --git a/docs/mfc/toc.yml b/docs/mfc/toc.yml index 691f07b181b..fcc45274295 100644 --- a/docs/mfc/toc.yml +++ b/docs/mfc/toc.yml @@ -1493,7 +1493,7 @@ items: href: tn032-mfc-exception-mechanism.md - name: "TN033: DLL version of MFC" href: tn033-dll-version-of-mfc.md - - name: "TN035: Using multiple resource files and header files with Visual C++" + - name: "TN035: Using multiple resource files and header files with Visual Studio" href: tn035-using-multiple-resource-files-and-header-files-with-visual-cpp.md - name: "TN036: Using CFormView with AppWizard and ClassWizard" href: tn036-using-cformview-with-appwizard-and-classwizard.md diff --git a/docs/mfc/toolbar-fundamentals.md b/docs/mfc/toolbar-fundamentals.md index 283156c66ef..e6f6328e2f2 100644 --- a/docs/mfc/toolbar-fundamentals.md +++ b/docs/mfc/toolbar-fundamentals.md @@ -47,7 +47,7 @@ The docking, floating, and tool tips calls are optional. You can remove those li ## Editing the Toolbar Resource -The default toolbar you get with the Application Wizard is based on an **RT_TOOLBAR** custom resource, introduced in MFC version 4.0. You can edit this resource with the [toolbar editor](../windows/toolbar-editor.md). The editor lets you easily add, delete, and rearrange buttons. It contains a graphical editor for the buttons that is very similar to the general graphics editor in Visual C++. If you edited toolbars in previous versions of Visual C++, you'll find the task much easier now. +The default toolbar you get with the Application Wizard is based on an **RT_TOOLBAR** custom resource, introduced in MFC version 4.0. You can edit this resource with the [toolbar editor](../windows/toolbar-editor.md). The editor lets you easily add, delete, and rearrange buttons. It contains a graphical editor for the buttons that is very similar to the general graphics editor in Visual Studio. If you edited toolbars in previous versions of Visual Studio, you'll find the task much easier now. To connect a toolbar button to a command, you give the button a command ID, such as `ID_MYCOMMAND`. Specify the command ID in the button's property page in the toolbar editor. Then create a handler function for the command (see [Mapping Messages to Functions](../mfc/reference/mapping-messages-to-functions.md) for more information). diff --git a/docs/mfc/upgrading-an-existing-activex-control.md b/docs/mfc/upgrading-an-existing-activex-control.md index 47524f29315..a6038e41168 100644 --- a/docs/mfc/upgrading-an-existing-activex-control.md +++ b/docs/mfc/upgrading-an-existing-activex-control.md @@ -48,7 +48,7 @@ CODEBASE="http://example.contoso.com/mycontrol.ocx#version=4, 1086" ``` -This solution downloads only the control's .ocx file, and requires any supporting DLLs to already be installed on the client machine. This will work for Internet Explorer and MFC ActiveX controls built with Visual C++, because Internet Explorer ships with the supporting DLLs for Visual C++ controls. If another Internet browser that is ActiveX control-capable is used to view this control, this solution will not work. +This solution downloads only the control's .ocx file, and requires any supporting DLLs to already be installed on the client machine. This will work for Internet Explorer and MFC ActiveX controls built with Visual Studio, because Internet Explorer ships with the supporting DLLs for Visual Studio controls. If another Internet browser that is ActiveX control-capable is used to view this control, this solution will not work. ### Using the CODEBASE Tag with an INF File @@ -158,7 +158,7 @@ HKEY_CLASSES_ROOT\CLSID\{06889605-B8D0-101A-91F1-00608CEAD5B3}\Implemented Categ If you want to use a licensed control on a Web page, you must verify that the license agreement allows its use on the Internet and create a license package file (LPK) for it. -A licensed ActiveX control will not load properly in an HTML page if the computer running Internet Explorer is not licensed to use the control. For example, if a licensed control was built using Visual C++, the HTML page using the control will load properly on the computer where the control was built, but it will not load on a different computer unless licensing information is included. +A licensed ActiveX control will not load properly in an HTML page if the computer running Internet Explorer is not licensed to use the control. For example, if a licensed control was built using Visual Studio, the HTML page using the control will load properly on the computer where the control was built, but it will not load on a different computer unless licensing information is included. To use a licensed ActiveX control in Internet Explorer, you must check the vendor's license agreement to verify that the license for the control permits: diff --git a/docs/mfc/using-the-classes-to-write-applications-for-windows.md b/docs/mfc/using-the-classes-to-write-applications-for-windows.md index bba61db9ffc..26a4f9ebf3c 100644 --- a/docs/mfc/using-the-classes-to-write-applications-for-windows.md +++ b/docs/mfc/using-the-classes-to-write-applications-for-windows.md @@ -8,7 +8,7 @@ ms.topic: concept-article --- # Using the Classes to Write Applications for Windows -Taken together, the classes in the Microsoft Foundation Class (MFC) Library make up an "application framework," on which you build an application for the Windows operating system. At a very general level, the framework defines the skeleton of an application and supplies standard user-interface implementations that can be placed onto the skeleton. Your job as programmer is to fill in the rest of the skeleton, which are those things that are specific to your application. You can get a head start by using the MFC Application Wizard to create the files for a very thorough starter application. You use the Microsoft Visual C++ resource editors to design your user-interface elements visually, Class View commands to connect those elements to code, and the class library to implement your application-specific logic. +Taken together, the classes in the Microsoft Foundation Class (MFC) Library make up an "application framework," on which you build an application for the Windows operating system. At a very general level, the framework defines the skeleton of an application and supplies standard user-interface implementations that can be placed onto the skeleton. Your job as programmer is to fill in the rest of the skeleton, which are those things that are specific to your application. You can get a head start by using the MFC Application Wizard to create the files for a very thorough starter application. You use the Visual Studio resource editors to design your user-interface elements visually, Class View commands to connect those elements to code, and the class library to implement your application-specific logic. Version 3.0 and later of the MFC framework supports programming for Win32 platforms, including Microsoft Windows 95 and later, and Windows NT versions 3.51 and later. MFC Win32 support includes multithreading. Use version 1.5*x* if you need to do 16-bit programming. diff --git a/docs/mfc/using-your-old-toolbars.md b/docs/mfc/using-your-old-toolbars.md index d1fe0d061b2..36e8fd1616e 100644 --- a/docs/mfc/using-your-old-toolbars.md +++ b/docs/mfc/using-your-old-toolbars.md @@ -9,7 +9,7 @@ ms.topic: concept-article --- # Using Your Old Toolbars -If you have used previous versions of Visual C++ to create customized toolbars, the new implementation of class [CToolBar](../mfc/reference/ctoolbar-class.md) could cause you problems. So that you don't have to give up your old toolbars to use the new functionality, the old implementation is still supported. +If you have used previous versions of Visual Studio to create customized toolbars, the new implementation of class [CToolBar](../mfc/reference/ctoolbar-class.md) could cause you problems. So that you don't have to give up your old toolbars to use the new functionality, the old implementation is still supported. The DOCKTOOL sample does not use the old-style toolbars, only the new-style toolbars. diff --git a/docs/mfc/walkthrough-adding-a-d2d-object-to-an-mfc-project.md b/docs/mfc/walkthrough-adding-a-d2d-object-to-an-mfc-project.md index a1bcbd4b77d..2f3c6645ec7 100644 --- a/docs/mfc/walkthrough-adding-a-d2d-object-to-an-mfc-project.md +++ b/docs/mfc/walkthrough-adding-a-d2d-object-to-an-mfc-project.md @@ -7,7 +7,7 @@ ms.assetid: dda36c33-c231-4da6-a62f-72d69a12b6dd --- # Walkthrough: Adding a D2D Object to an MFC Project -This walkthrough teaches how to add a basic Direct2D (D2D) object to a Visual C++, Microsoft Foundation Class Library (MFC) project, and then build the project into an application that prints "Hello, World!" on a gradient background. +This walkthrough teaches how to add a basic Direct2D (D2D) object to a Visual Studio, Microsoft Foundation Class Library (MFC) project, and then build the project into an application that prints "Hello, World!" on a gradient background. The walkthrough shows how to accomplish these tasks: @@ -25,7 +25,7 @@ The walkthrough shows how to accomplish these tasks: ## Prerequisites -To complete this walkthrough, you must have Visual Studio installed with the **Desktop development with C++** workload and the optional **Visual C++ MFC for x86 and x64** component. +To complete this walkthrough, you must have Visual Studio installed with the **Desktop development with C++** workload and the optional **C++ MFC for x64/x86** component. ## To create an MFC application diff --git a/docs/mfc/walkthrough-adding-animation-to-an-mfc-project.md b/docs/mfc/walkthrough-adding-animation-to-an-mfc-project.md index 2ab962abddd..203b4313782 100644 --- a/docs/mfc/walkthrough-adding-animation-to-an-mfc-project.md +++ b/docs/mfc/walkthrough-adding-animation-to-an-mfc-project.md @@ -7,7 +7,7 @@ ms.assetid: 004f832c-9fd5-4f88-9ca9-ae65dececdc2 --- # Walkthrough: Adding Animation to an MFC Project -This walkthrough teaches how to add a basic animated object to a Visual C++, Microsoft Foundation Class Library (MFC) project. +This walkthrough teaches how to add a basic animated object to a Visual Studio, Microsoft Foundation Class Library (MFC) project. The walkthrough shows how to accomplish these tasks: diff --git a/docs/mfc/walkthrough-updating-the-mfc-scribble-application-part-2.md b/docs/mfc/walkthrough-updating-the-mfc-scribble-application-part-2.md index 19b88357d9d..0d04318ced9 100644 --- a/docs/mfc/walkthrough-updating-the-mfc-scribble-application-part-2.md +++ b/docs/mfc/walkthrough-updating-the-mfc-scribble-application-part-2.md @@ -11,7 +11,7 @@ ms.assetid: 602df5c2-17d4-4cd9-8cf6-dff652c4cae5 ## Prerequisites -[Visual C++ Samples](../overview/visual-cpp-samples.md) +[Visual Studio C++ Samples](../overview/visual-cpp-samples.md) ## Sections diff --git a/docs/mfc/walkthrough-using-the-new-mfc-shell-controls.md b/docs/mfc/walkthrough-using-the-new-mfc-shell-controls.md index 35d503d1884..5aa336afc5a 100644 --- a/docs/mfc/walkthrough-using-the-new-mfc-shell-controls.md +++ b/docs/mfc/walkthrough-using-the-new-mfc-shell-controls.md @@ -53,7 +53,7 @@ These steps vary depending on which version of Visual Studio you are using. To s 1. Use the **MFC Application Wizard** to create a new MFC application. To run the wizard, from the **File** menu select **New**, and then select **Project**. The **New Project** dialog box will be displayed. -1. In the **New Project** dialog box, expand the **Visual C++** node in the **Project types** pane and select **MFC**. Then, in the **Templates** pane, select **MFC Application**. Type a name for the project, such as `MFCShellControls` and click **OK**. +1. In the **New Project** dialog box, expand the **Visual Studio** node in the **Project types** pane and select **MFC**. Then, in the **Templates** pane, select **MFC Application**. Type a name for the project, such as `MFCShellControls` and click **OK**. After **MFC Application Wizard** displays, use the following options: @@ -200,7 +200,7 @@ The wizard automatically creates an application that has a standard menu bar, a - The wizard created an Outlook bar with both a **Folders** pane and a **Calendar** pane. It probably doesn't make sense to have a **Calendar** pane in an **Explorer** window, so remove that pane now. -- The `CMFCShellListCtrl` supports viewing files in different modes, such as **Large Icons**, **Small Icons**, **List**, and **Details**. Update your application to implement this functionality. Hint: see [Visual C++ Samples](../overview/visual-cpp-samples.md). +- The `CMFCShellListCtrl` supports viewing files in different modes, such as **Large Icons**, **Small Icons**, **List**, and **Details**. Update your application to implement this functionality. Hint: see [Visual Studio C++ Samples](../overview/visual-cpp-samples.md). ## See also diff --git a/docs/mfc/windows-sockets-in-mfc.md b/docs/mfc/windows-sockets-in-mfc.md index c75929505b3..ade1e931319 100644 --- a/docs/mfc/windows-sockets-in-mfc.md +++ b/docs/mfc/windows-sockets-in-mfc.md @@ -30,7 +30,7 @@ Creating and using `CSocket` and `CAsyncSocket` objects is described in [Windows ## Windows Sockets DLLs -The Microsoft Windows operating systems supply the Windows Sockets dynamic-link libraries (DLL). Visual C++ supplies the appropriate header files and libraries and the Windows Sockets specification. +The Microsoft Windows operating systems supply the Windows Sockets dynamic-link libraries (DLL). Visual Studio supplies the appropriate header files and libraries and the Windows Sockets specification. For more information about Windows Sockets, see: diff --git a/docs/mfc/windows-sockets-using-class-casyncsocket.md b/docs/mfc/windows-sockets-using-class-casyncsocket.md index 992332b73a9..4b93d33ecb9 100644 --- a/docs/mfc/windows-sockets-using-class-casyncsocket.md +++ b/docs/mfc/windows-sockets-using-class-casyncsocket.md @@ -8,7 +8,7 @@ helpviewer_keywords: ["CAsyncSocket class [MFC], programming model", "Windows So This article explains how to use class [`CAsyncSocket`](reference/casyncsocket-class.md). This class encapsulates the Windows Sockets API at a very low level. `CAsyncSocket` is for use by programmers who know network communications in detail but want the convenience of callbacks for notification of network events. Based on this assumption, this article provides only basic instruction. You should probably consider using `CAsyncSocket` if you want Windows Sockets' ease of dealing with multiple network protocols in an MFC application but don't want to sacrifice flexibility. You might also feel that you can get better efficiency by programming the communications more directly yourself than you could using the more general alternative model of class `CSocket`. -`CAsyncSocket` is documented in the *MFC Reference*. Visual C++ also supplies the Windows Sockets specification, located in the Windows SDK. The details are left to you. Visual C++ doesn't supply a sample application for `CAsyncSocket`. +`CAsyncSocket` is documented in the *MFC Reference*. Visual Studio also supplies the Windows Sockets specification, located in the Windows SDK. The details are left to you. Visual Studio doesn't supply a sample application for `CAsyncSocket`. If you aren't highly knowledgeable about network communications and want a simple solution, use class [`CSocket`](reference/csocket-class.md) with a `CArchive` object. See [Windows Sockets: Using Sockets with Archives](windows-sockets-using-sockets-with-archives.md) for more information. diff --git a/docs/mfc/wizards-and-the-resource-editors.md b/docs/mfc/wizards-and-the-resource-editors.md index daf62848239..5646150d063 100644 --- a/docs/mfc/wizards-and-the-resource-editors.md +++ b/docs/mfc/wizards-and-the-resource-editors.md @@ -7,11 +7,11 @@ ms.assetid: f5dd4d13-9dc1-4a49-b6bf-5b3cb45fa8ba --- # Wizards and the Resource Editors -Visual C++ includes several wizards for use in MFC programming, along with many integrated resource editors. For ActiveX controls programming, the [ActiveX Control Wizard](../mfc/reference/mfc-activex-control-wizard.md) serves a purpose much like that of the MFC Application Wizard. While you can write MFC applications without most of these tools, the tools greatly simplify and speed your work. +Visual Studio includes several wizards for use in MFC programming, along with many integrated resource editors. For ActiveX controls programming, the [ActiveX Control Wizard](../mfc/reference/mfc-activex-control-wizard.md) serves a purpose much like that of the MFC Application Wizard. While you can write MFC applications without most of these tools, the tools greatly simplify and speed your work. ## Use the MFC Application Wizard to Create an MFC Application -Use the [MFC Application Wizard](../mfc/reference/mfc-application-wizard.md) to create an MFC project in Visual C++, which can include OLE and database support. Files in the project contain your application, document, view, and frame-window classes; standard resources, including menus and an optional toolbar; other required Windows files; and optional .rtf files containing standard Windows Help topics that you can revise and augment to create your program's help file. +Use the [MFC Application Wizard](../mfc/reference/mfc-application-wizard.md) to create an MFC project in Visual Studio, which can include OLE and database support. Files in the project contain your application, document, view, and frame-window classes; standard resources, including menus and an optional toolbar; other required Windows files; and optional .rtf files containing standard Windows Help topics that you can revise and augment to create your program's help file. ## Use Class View to Manage Classes and Windows Messages @@ -30,11 +30,11 @@ The [Class Wizard](reference/mfc-class-wizard.md) will create empty message-hand ## Use the Resource Editors to Create and Edit Resources -Use the Visual C++ [resource editors](../windows/resource-editors.md) to create and edit menus, dialog boxes, custom controls, accelerator keys, bitmaps, icons, cursors, strings, and version resources. As of Visual C++ version 4.0, a toolbar editor makes creating toolbars much easier. +Use the Visual Studio [resource editors](../windows/resource-editors.md) to create and edit menus, dialog boxes, custom controls, accelerator keys, bitmaps, icons, cursors, strings, and version resources. As of Visual Studio version 4.0, a toolbar editor makes creating toolbars much easier. To help you even more, the Microsoft Foundation Class Library provides a file called COMMON.RES, which contains "clip art" resources that you can copy from COMMON.RES and paste into your own resource file. COMMON.RES includes toolbar buttons, common cursors, icons, and more. You can use, modify, and redistribute these resources in your application. For more information about COMMON.RES, see the [Clipart sample](../overview/visual-cpp-samples.md). -The MFC Application Wizard, the Visual C++ wizards, resource editors, and the MFC framework do a lot of work for you and make managing your code much easier. The bulk of your application-specific code is in your document and view classes. +The MFC Application Wizard, the Visual Studio wizards, resource editors, and the MFC framework do a lot of work for you and make managing your code much easier. The bulk of your application-specific code is in your document and view classes. ## See also From 4c8b80ffadb9c0e3471748a3c97313eeada256f8 Mon Sep 17 00:00:00 2001 From: ChanPark Date: Fri, 30 Jan 2026 10:44:17 -0800 Subject: [PATCH 2224/2255] New moniker ranges --- docs/build/customize-cmake-settings.md | 46 +++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/docs/build/customize-cmake-settings.md b/docs/build/customize-cmake-settings.md index d49e435c42b..5c8cd24cf4a 100644 --- a/docs/build/customize-cmake-settings.md +++ b/docs/build/customize-cmake-settings.md @@ -17,7 +17,7 @@ For Visual Studio 2019 to 2022, select your version by using the version selecto ::: moniker-end -::: moniker range="<=msvc-170" +::: moniker range=">=msvc-160 <=msvc-170" Visual Studio uses a CMake configuration file to drive CMake generation and build. *`CMakePresets.json`* is supported by Visual Studio 2019 version 16.10 or later and is the recommended CMake configuration file. *`CMakePresets.json`* is supported directly by CMake and can be used to drive CMake generation and build from Visual Studio, from VS Code, in a Continuous Integration pipeline, and from the command line on Windows, Linux, and Mac. For more information on *`CMakePresets.json`*, see [Configure and build with CMake Presets](cmake-presets-vs.md). @@ -171,6 +171,50 @@ For more information about each of the properties in the file, see [CMakeSetting ::: moniker-end +::: moniker range="<=msvc-150" + +Visual Studio 2017 provides several CMake configurations that define how CMake is invoked to create the CMake cache for a given project. To add a new configuration, select the configuration drop-down in the toolbar and choose **Manage Configurations**: + + ![Screenshot of Manage configurations selected in the drop-down.](media/cmake-manage-configurations.png) + +You can choose from the list of predefined configurations: + + ![Add Configuration to CMake Settings dialog list of predefined configurations.](media/cmake-configurations.png) + +The first time you select a configuration, Visual Studio creates a *`CMakeSettings.json`* file in your project's root folder. This file is used to re-create the CMake cache file, for example after a **Clean** operation. + +To add another configuration, right-click *`CMakeSettings.json`* and choose **Add Configuration**. + + ![Screenshot of the shortcut menu with Add configuration selected.](media/cmake-add-configuration.png "CMake Add Configuration") + +You can also edit the file using the **CMake Settings Editor**. Right-click on *`CMakeSettings.json`* in **Solution Explorer** and choose **Edit CMake Settings**. Or, select **Manage Configurations** from the configuration drop-down at the top of the editor window. + +You can also directly edit *`CMakeSettings.json`* to create custom configurations. The following example shows a sample configuration, which you can use as a starting point: + +```json + { + "name": "x86-Debug", + "generator": "Ninja", + "configurationType": "Debug", + "inheritEnvironments": [ "msvc_x86" ], + "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}", + "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}", + "cmakeCommandArgs": "", + "buildCommandArgs": "-v", + "ctestCommandArgs": "" + }, +``` + +JSON IntelliSense helps you edit the *`CMakeSettings.json`* file: + + :::image type="complex" source="media/cmake-json-intellisense.png" alt-text="Screenshot of the CMake JSON IntelliSense pop-up in the editor."::: + The JSON IntelliSense pop-up for "configurations" shows buildCommandArgs, buildRoot, cmakeCommandArgs, configurationType, among several others. + :::image-end::: + +For more information about each of the properties in the file, see [`CMakeSettings.json` schema reference](cmakesettings-reference.md). + +::: moniker-end + ## Related content - [CMake Projects in Visual Studio](cmake-projects-in-visual-studio.md) From b881da5964874a940c20071c3473015caf590770 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 30 Jan 2026 17:07:25 -0800 Subject: [PATCH 2225/2255] edits --- .../mfc/changing-the-styles-of-a-window-created-by-mfc.md | 2 +- docs/mfc/containers-for-activex-controls.md | 2 +- .../creating-an-active-document-container-application.md | 2 +- docs/mfc/docking-and-floating-toolbars.md | 2 +- docs/mfc/form-views-mfc.md | 2 +- docs/mfc/framework-mfc.md | 2 +- ...es-it-easier-to-create-internet-client-applications.md | 2 +- docs/mfc/methods-of-creating-a-status-bar.md | 2 +- docs/mfc/methods-of-creating-a-toolbar.md | 2 +- docs/mfc/mfc-and-atl.md | 2 +- docs/mfc/mfc-library-versions.md | 2 +- docs/mfc/mfc-mbcs-dll-add-on.md | 2 +- .../reference/adding-an-mfc-class-from-a-type-library.md | 2 +- docs/mfc/reference/adding-an-mfc-odbc-consumer.md | 2 +- docs/mfc/reference/creating-an-mfc-application.md | 8 ++++---- docs/mfc/technical-notes-by-category.md | 2 +- docs/mfc/technical-notes-by-number.md | 2 +- .../testing-properties-and-events-with-test-container.md | 2 +- docs/mfc/tn057-localization-of-mfc-components.md | 4 ++-- ...hrough-updating-the-mfc-scribble-application-part-2.md | 2 +- docs/mfc/walkthrough-using-the-new-mfc-shell-controls.md | 4 ++-- 21 files changed, 26 insertions(+), 26 deletions(-) diff --git a/docs/mfc/changing-the-styles-of-a-window-created-by-mfc.md b/docs/mfc/changing-the-styles-of-a-window-created-by-mfc.md index fdab577e449..eb6d87a53c4 100644 --- a/docs/mfc/changing-the-styles-of-a-window-created-by-mfc.md +++ b/docs/mfc/changing-the-styles-of-a-window-created-by-mfc.md @@ -12,7 +12,7 @@ In its version of the `WinMain` function, MFC registers several standard window ## Changing Styles in a New MFC Application -If you're using Microsoft C++ 2.0 or later, you can change the default window styles in the Application Wizard when you create your application. In the Application Wizard's User Interface Features page, you can change styles for your main frame window and MDI child windows. For either window type, you can specify its frame thickness (thick or thin) and any of the following: +If you're using Visual C++ 2.0 or later, you can change the default window styles in the Application Wizard when you create your application. In the Application Wizard's User Interface Features page, you can change styles for your main frame window and MDI child windows. For either window type, you can specify its frame thickness (thick or thin) and any of the following: - Whether the window has Minimize or Maximize controls. diff --git a/docs/mfc/containers-for-activex-controls.md b/docs/mfc/containers-for-activex-controls.md index 8f11ee29d83..8b5adeba287 100644 --- a/docs/mfc/containers-for-activex-controls.md +++ b/docs/mfc/containers-for-activex-controls.md @@ -21,7 +21,7 @@ Applications that support ActiveX control containment include: - Visual Basic 4.x and greater -- Microsoft C++ 4.x and greater +- Visual C++ 4.x and greater - Access 95 and greater diff --git a/docs/mfc/creating-an-active-document-container-application.md b/docs/mfc/creating-an-active-document-container-application.md index 077cea8136c..c1ef6e9ac2d 100644 --- a/docs/mfc/creating-an-active-document-container-application.md +++ b/docs/mfc/creating-an-active-document-container-application.md @@ -14,7 +14,7 @@ The simplest and most recommended way to create an active document container app 1. From the **File** menu, click **Project**from the **New** submenu. -1. From the left pane, click **MicrosoftVisual Studio** project type. +1. From the left pane, click **Visual C++** project type. 1. Select **MFC Application** from the right pane. diff --git a/docs/mfc/docking-and-floating-toolbars.md b/docs/mfc/docking-and-floating-toolbars.md index e68d5dd87f7..2dc9f54a2a7 100644 --- a/docs/mfc/docking-and-floating-toolbars.md +++ b/docs/mfc/docking-and-floating-toolbars.md @@ -57,7 +57,7 @@ The MFC implementation of dockable toolbars does not provide some of the extende ## Dynamically Resizing the Toolbar -As of Visual Studio version 4.0, you can make it possible for users of your application to resize floating toolbars dynamically. Typically, a toolbar has a long, linear shape, displayed horizontally. But you can change the toolbar's orientation and its shape. For example, when the user docks a toolbar against one of the vertical sides of the frame window, the shape changes to a vertical layout. It's also possible to reshape the toolbar into a rectangle with multiple rows of buttons. +As of Visual C++ version 4.0, you can make it possible for users of your application to resize floating toolbars dynamically. Typically, a toolbar has a long, linear shape, displayed horizontally. But you can change the toolbar's orientation and its shape. For example, when the user docks a toolbar against one of the vertical sides of the frame window, the shape changes to a vertical layout. It's also possible to reshape the toolbar into a rectangle with multiple rows of buttons. You can: diff --git a/docs/mfc/form-views-mfc.md b/docs/mfc/form-views-mfc.md index 87517953bb5..61a5a4bd8d9 100644 --- a/docs/mfc/form-views-mfc.md +++ b/docs/mfc/form-views-mfc.md @@ -7,7 +7,7 @@ ms.assetid: efbe73c1-4ca4-4613-aac2-30d916e92c0e --- # Form Views (MFC) -You can add forms to any Visual Studio application that supports the MFC libraries, including a [forms-based application](reference/creating-a-forms-based-mfc-application.md) (one whose view class is derived from `CFormView`). If you did not initially create your application to support forms, Visual Studio will add this support for you when you insert a new form. In an SDI or MDI application, which implements the default [document/view architecture](document-view-architecture.md), when the user chooses the **New** command (by default, on the **File** menu), Visual Studio prompts the user to choose from the available forms. +You can add forms to any Visual C++ application that supports the MFC libraries, including a [forms-based application](reference/creating-a-forms-based-mfc-application.md) (one whose view class is derived from `CFormView`). If you did not initially create your application to support forms, Visual Studio will add this support for you when you insert a new form. In an SDI or MDI application, which implements the default [document/view architecture](document-view-architecture.md), when the user chooses the **New** command (by default, on the **File** menu), Visual Studio prompts the user to choose from the available forms. With an SDI application, when the user chooses the **New** command, the current instance of the form continues to run but a new instance of the application with the selected form is created if one is not found. In an MDI application, the current instance of the form continues to run when the user chooses the **New** command. diff --git a/docs/mfc/framework-mfc.md b/docs/mfc/framework-mfc.md index 7c8996f07c3..0bd459a85d7 100644 --- a/docs/mfc/framework-mfc.md +++ b/docs/mfc/framework-mfc.md @@ -7,7 +7,7 @@ ms.assetid: 3be0fec8-9843-4119-ae42-ece993ef500b --- # Framework (MFC) -Your work with the Microsoft Foundation Class (MFC) Library framework is based largely on a few major classes and several Visual Studio tools. Some classes encapsulate a large portion of the Win32 application programming interface (API). Other classes encapsulate application concepts such as documents, views, and the application itself. Still others encapsulate OLE features and ODBC and DAO data-access functionality. (DAO is supported through Office 2013. DAO 3.6 is the final version, and it is considered obsolete.) +Your work with the Microsoft Foundation Class (MFC) Library framework is based largely on a few major classes and several Visual C++ tools. Some classes encapsulate a large portion of the Win32 application programming interface (API). Other classes encapsulate application concepts such as documents, views, and the application itself. Still others encapsulate OLE features and ODBC and DAO data-access functionality. (DAO is supported through Office 2013. DAO 3.6 is the final version, and it is considered obsolete.) For example, Win32's concept of window is encapsulated by MFC class `CWnd`. That is, a C++ class called `CWnd` encapsulates or "wraps" the `HWND` handle that represents a Windows window. Likewise, class `CDialog` encapsulates Win32 dialog boxes. diff --git a/docs/mfc/how-wininet-makes-it-easier-to-create-internet-client-applications.md b/docs/mfc/how-wininet-makes-it-easier-to-create-internet-client-applications.md index e9adb0c6a10..4b8cec07283 100644 --- a/docs/mfc/how-wininet-makes-it-easier-to-create-internet-client-applications.md +++ b/docs/mfc/how-wininet-makes-it-easier-to-create-internet-client-applications.md @@ -9,7 +9,7 @@ ms.assetid: dc0f9f47-3184-4e7a-8074-2c63e0359885 The Win32 Internet Extensions, or WinInet, provide access to common Internet protocols, including gopher, FTP, and HTTP. Using WinInet, you can write Internet client applications at a higher level of programming, without having to deal with WinSock, TCP/IP, or the details of specific Internet protocols. WinInet provides a consistent set of functions for all three protocols, with a familiar Win32 API interface. This consistency minimizes code changes you need to make if the underlying protocol changes (for example, from FTP to HTTP). -Visual Studio provides two ways for you to use WinInet. You can call the Win32 Internet functions directly (see the OLE documentation in the Windows SDK for more information) or you can use WinInet through the [MFC WinInet classes](mfc-classes-for-creating-internet-client-applications.md). +Visual C++ provides two ways for you to use WinInet. You can call the Win32 Internet functions directly (see the OLE documentation in the Windows SDK for more information) or you can use WinInet through the [MFC WinInet classes](mfc-classes-for-creating-internet-client-applications.md). **You can use WinInet to:** diff --git a/docs/mfc/methods-of-creating-a-status-bar.md b/docs/mfc/methods-of-creating-a-status-bar.md index aa914e3f097..7d4e9bc4cf0 100644 --- a/docs/mfc/methods-of-creating-a-status-bar.md +++ b/docs/mfc/methods-of-creating-a-status-bar.md @@ -11,7 +11,7 @@ MFC provides two classes to create status bars: [CStatusBar](reference/cstatusba `CStatusBarCtrl` usually results in a smaller executable, and you may prefer to use `CStatusBarCtrl` if you do not intend to integrate the status bar into the MFC architecture. If you plan to use `CStatusBarCtrl` and integrate the status bar into the MFC architecture, you must take additional care to communicate status bar control manipulations to MFC. This communication is not difficult; however, it is additional work that is unneeded when you use `CStatusBar`. -Visual Studio provides two ways to take advantage of the status bar common control. +Visual C++ provides two ways to take advantage of the status bar common control. - Create the status bar using `CStatusBar`, and then call [CStatusBar::GetStatusBarCtrl](reference/cstatusbar-class.md#getstatusbarctrl) to get access to the `CStatusBarCtrl` member functions. diff --git a/docs/mfc/methods-of-creating-a-toolbar.md b/docs/mfc/methods-of-creating-a-toolbar.md index b241b3f46a3..aca7ea41dc3 100644 --- a/docs/mfc/methods-of-creating-a-toolbar.md +++ b/docs/mfc/methods-of-creating-a-toolbar.md @@ -11,7 +11,7 @@ MFC provides two classes to create toolbars: [CToolBar](reference/ctoolbar-class `CToolBarCtrl` usually results in a smaller executable, and you may prefer to use `CToolBarCtrl` if you do not intend to integrate the toolbar into the MFC architecture. If you plan to use `CToolBarCtrl` and integrate the toolbar into the MFC architecture, you must take additional care to communicate toolbar control manipulations to MFC. This communication is not difficult; however, it is additional work that is unneeded when you use `CToolBar`. -Visual Studio provides two ways to take advantage of the toolbar common control. +Visual C++ provides two ways to take advantage of the toolbar common control. - Create the toolbar using `CToolBar`, and then call [CToolBar::GetToolBarCtrl](reference/ctoolbar-class.md#gettoolbarctrl) to get access to the `CToolBarCtrl` member functions. diff --git a/docs/mfc/mfc-and-atl.md b/docs/mfc/mfc-and-atl.md index 6859ab97126..d9e499ac1bd 100644 --- a/docs/mfc/mfc-and-atl.md +++ b/docs/mfc/mfc-and-atl.md @@ -12,7 +12,7 @@ The Microsoft Foundation Classes (MFC) provide a C++ object-oriented wrapper ove You can create MFC or ATL programs with Visual Studio Community Edition or higher. The Express editions do not support MFC or ATL. -In Visual Studio 2015, Microsoft C++ is an optional component, and MFC and ATL components are optional sub-components under Microsoft C++. If you do not select these components when you first install Visual Studio, you will be prompted to install them the first time you attempt to create or open an MFC or ATL project. +In Visual Studio 2015, Visual C++ is an optional component, and MFC and ATL components are optional sub-components under Visual C++. If you do not select these components when you first install Visual Studio, you will be prompted to install them the first time you attempt to create or open an MFC or ATL project. In Visual Studio 2017 and later, MFC and ATL are optional sub-components under the **Desktop development with C++** workload in the Visual Studio Installer program. You can install ATL support without MFC, or combined MFC and ATL support (MFC depends on ATL). For more information about workloads and components, see [Install Visual Studio](/visualstudio/install/install-visual-studio). diff --git a/docs/mfc/mfc-library-versions.md b/docs/mfc/mfc-library-versions.md index 974d8e1bb97..ff6462e70e0 100644 --- a/docs/mfc/mfc-library-versions.md +++ b/docs/mfc/mfc-library-versions.md @@ -117,7 +117,7 @@ The import libraries needed to build applications or MFC extension DLLs that use If you are dynamically linking to the shared DLL version of MFC, whether it is from an application or from an MFC extension DLL, you must include the matching MFC*version*.DLL or MFC*version*U.DLL when you deploy your product. -For a list of Visual Studio DLLs that can be distributed with your applications, see [Distributable Code for Microsoft Visual Studio 2017 and Microsoft Visual Studio 2017 SDK (Includes Utilities and BuildServer Files)](/visualstudio/productinfo/2017-redistribution-vs) or [Distributable Code for Visual Studio 2019](/visualstudio/releases/2019/redistribution). +For a list of Visual C++ DLLs that can be distributed with your applications, see [Distributable Code for Microsoft Visual Studio 2017 and Microsoft Visual Studio 2017 SDK (Includes Utilities and BuildServer Files)](/visualstudio/productinfo/2017-redistribution-vs) or [Distributable Code for Visual Studio 2019](/visualstudio/releases/2019/redistribution). For more information on MBCS and Unicode support in MFC, see [Unicode and Multibyte Character Set (MBCS) Support](../atl-mfc-shared/unicode-and-multibyte-character-set-mbcs-support.md). diff --git a/docs/mfc/mfc-mbcs-dll-add-on.md b/docs/mfc/mfc-mbcs-dll-add-on.md index 0bc1d03de9a..f64676d47cd 100644 --- a/docs/mfc/mfc-mbcs-dll-add-on.md +++ b/docs/mfc/mfc-mbcs-dll-add-on.md @@ -10,7 +10,7 @@ Support for MFC and its multibyte character set (MBCS) libraries requires an add **Visual Studio 2013**: By default, the MFC libraries installed in Visual Studio 2013 only support Unicode development. You need the MBCS DLLs in order to build an MFC project in Visual Studio 2013 that has the **Character Set** property set to **Use Multi-Byte Character Set** or **Not Set**. Download the DLL at [Multibyte MFC Library for Visual Studio 2013](https://www.microsoft.com/download/details.aspx?id=40770). -**Visual Studio 2015**: Both Unicode and MBCS MFC DLLs are included in the Visual Studio setup components, but support for MFC is not installed by default. C++ and MFC are optional install configurations in Visual Studio setup. To make sure that MFC is installed, choose **Custom** in setup, and under **Programming Languages**, make sure that **C++ compilers and libraries** and **Microsoft Foundation Classes for C++** are selected. If you have already installed Visual Studio, you will be prompted to install C++ and/or MFC when you attempt to create an MFC project. +**Visual Studio 2015**: Both Unicode and MBCS MFC DLLs are included in the Visual C++ setup components, but support for MFC is not installed by default. Visual C++ and MFC are optional install configurations in Visual Studio setup. To make sure that MFC is installed, choose **Custom** in setup, and under **Programming Languages**, make sure that **Visual C++** and ****Microsoft Foundation Classes for C++** are selected. If you have already installed Visual Studio, you will be prompted to install Visual C++ and/or MFC when you attempt to create an MFC project. **Visual Studio 2017 and later**: The Unicode and MBCS MFC DLLs are installed with the **Desktop development with C++** workload when you select **MFC and ATL support** from the **Optional Components** pane in the Visual Studio Installer program. If your installation does not include these components, navigate to the **File | New Projects** dialog and click the **Open Visual Studio Installer** link. For more information, see [Install Visual Studio](/visualstudio/install/install-visual-studio). diff --git a/docs/mfc/reference/adding-an-mfc-class-from-a-type-library.md b/docs/mfc/reference/adding-an-mfc-class-from-a-type-library.md index e1730119ef5..db0802eea7c 100644 --- a/docs/mfc/reference/adding-an-mfc-class-from-a-type-library.md +++ b/docs/mfc/reference/adding-an-mfc-class-from-a-type-library.md @@ -20,7 +20,7 @@ A type library contains a binary description of the interfaces exposed by a comp 1. From the shortcut menu, select **Add** > **New Item**. -1. In the **Add New Item** dialog, select **Installed** packages and then select **Visual Studio**. +1. In the **Add New Item** dialog, select **Installed** packages and then select **Visual C++**. 1. In the Templates pane, select **MFC Class from Typelib**, and then select **Add** to display the [Add Class from Typelib Wizard](../../mfc/reference/add-class-from-typelib-wizard.md). diff --git a/docs/mfc/reference/adding-an-mfc-odbc-consumer.md b/docs/mfc/reference/adding-an-mfc-odbc-consumer.md index a0f9991f6d8..887931326d3 100644 --- a/docs/mfc/reference/adding-an-mfc-odbc-consumer.md +++ b/docs/mfc/reference/adding-an-mfc-odbc-consumer.md @@ -13,7 +13,7 @@ An MFC ODBC consumer consists of an ODBC recordset class and data bindings neces 1. In Class View, right-click the project. On the shortcut menu, click **Add** and then click **Add Class**. -1. In the Visual Studio folder, double-click the **MFC ODBC Consumer** icon or select it and click **Open**. +1. In the Visual C++ folder, double-click the **MFC ODBC Consumer** icon or select it and click **Open**. The MFC ODBC Consumer Wizard opens. diff --git a/docs/mfc/reference/creating-an-mfc-application.md b/docs/mfc/reference/creating-an-mfc-application.md index 8cf0f8d7610..6d366fb7b8a 100644 --- a/docs/mfc/reference/creating-an-mfc-application.md +++ b/docs/mfc/reference/creating-an-mfc-application.md @@ -56,7 +56,7 @@ The dialog shows the application type, set to Console Application (.exe). Under ## To create an MFC forms or dialog-based application 1. From the Visual Studio main menu, choose **File** > **New** > **Project**. -1. Under the **Installed** templates, choose **C++** > **MFC/ATL**. If you don't see these, use the Visual Studio Installer to add MFC/ATL functionality. You can access the installer from the Visual Studio menu via **Tools** > **Get Tools and Features...** In the installer, select **Individual components** and search for **mfc** and then select the appropriate library for your machine such as **C++ MFC for x86 and x64 with Spectre Mitigations**. +1. Under the **Installed** templates, choose **Visual C++** > **MFC/ATL**. If you don't see these, use the Visual Studio Installer to add MFC/ATL functionality. You can access the installer from the Visual Studio menu via **Tools** > **Get Tools and Features...** In the installer, select **Individual components** and search for **mfc** and then select the appropriate library for your machine such as **C++ MFC for x86 and x64 with Spectre Mitigations**. 1. Choose **MFC App** from the center pane. 1. Modify the configuration values as needed, then press **OK**. @@ -71,7 +71,7 @@ The dialog shows the various settings set to their default, such as the applicat An MFC console application is a command-line program that uses MFC libraries but runs in the console window. 1. From the main menu, choose **File** > **New** > **Project**. -1. Under the **Installed** templates, choose **C++** > **Windows Desktop**. +1. Under the **Installed** templates, choose **Visual C++** > **Windows Desktop**. 1. From the center pane, choose **Windows Desktop Wizard**. 1. Modify the project name as needed, then press **OK** to open the **Windows Desktop Wizard**. 1. Check the **MFC Headers** box and set other values as needed, then press **OK**. @@ -87,7 +87,7 @@ The dialog shows the application type set to Console Application (.exe). Under a ## To create an MFC forms or dialog-based application 1. From the main menu, choose **File** > **New** > **Project**. -1. Under the **Installed** templates, choose **C++** > **MFC**. +1. Under the **Installed** templates, choose **Visual C++** > **MFC**. 1. Choose **MFC Application** from the center pane. 1. Click **Next** to start the **MFC Application Wizard**. @@ -102,7 +102,7 @@ The dialog lists the current project settings such as: tabbed multiple document An MFC console application is a command-line program that uses MFC libraries but runs in the console window. 1. From the main menu, choose **File** > **New** > **Project**. -1. Under the **Installed** templates, choose **C++** > **Win32**. +1. Under the **Installed** templates, choose **Visual C++** > **Win32**. 1. Choose **Win32 Console Application** from the center pane. 1. Modify the project name as needed, then press **OK**. 1. On the second page of the wizard, check the **Add common headers for MFC** box and set other values as needed, then press **Finish**. diff --git a/docs/mfc/technical-notes-by-category.md b/docs/mfc/technical-notes-by-category.md index 64544f67312..288094ac3af 100644 --- a/docs/mfc/technical-notes-by-category.md +++ b/docs/mfc/technical-notes-by-category.md @@ -79,7 +79,7 @@ Technical notes are divided into the following categories. For a numerical listi [TN023: Standard MFC Resources](../mfc/tn023-standard-mfc-resources.md)\ [TN024: MFC-Defined Messages and Resources](../mfc/tn024-mfc-defined-messages-and-resources.md)\ [TN028: Context-Sensitive Help Support](../mfc/tn028-context-sensitive-help-support.md)\ -[TN035: Using Multiple Resource Files and Header Files with Visual Studio](../mfc/tn035-using-multiple-resource-files-and-header-files-with-visual-cpp.md)\ +[TN035: Using Multiple Resource Files and Header Files with Visual C++](../mfc/tn035-using-multiple-resource-files-and-header-files-with-visual-cpp.md)\ [TN036: Using CFormView with AppWizard and ClassWizard](../mfc/tn036-using-cformview-with-appwizard-and-classwizard.md)\ [TN070: MFC Window Class Names](../mfc/tn070-mfc-window-class-names.md) diff --git a/docs/mfc/technical-notes-by-number.md b/docs/mfc/technical-notes-by-number.md index 52d265d9390..d07d4b3b3bd 100644 --- a/docs/mfc/technical-notes-by-number.md +++ b/docs/mfc/technical-notes-by-number.md @@ -44,7 +44,7 @@ The technical notes below are listed numerically, with the most recently written |38|[MFC/OLE IUnknown Implementation](../mfc/tn038-mfc-ole-iunknown-implementation.md)| |37|[Multithreaded MFC 2.1 Applications](../mfc/tn037-multithreaded-mfc-2-1-applications.md)| |36|[Using CFormView with AppWizard and ClassWizard](../mfc/tn036-using-cformview-with-appwizard-and-classwizard.md)| -|35|[Using Multiple Resource Files and Header Files with Visual Studio](../mfc/tn035-using-multiple-resource-files-and-header-files-with-visual-cpp.md)| +|35|[Using Multiple Resource Files and Header Files with Visual C++](../mfc/tn035-using-multiple-resource-files-and-header-files-with-visual-cpp.md)| |33|[DLL Version of MFC](../mfc/tn033-dll-version-of-mfc.md)| |32|[MFC Exception Mechanism](../mfc/tn032-mfc-exception-mechanism.md)| |31|[Control Bars](../mfc/tn031-control-bars.md)| diff --git a/docs/mfc/testing-properties-and-events-with-test-container.md b/docs/mfc/testing-properties-and-events-with-test-container.md index ead507de3af..d7258a77d5c 100644 --- a/docs/mfc/testing-properties-and-events-with-test-container.md +++ b/docs/mfc/testing-properties-and-events-with-test-container.md @@ -7,7 +7,7 @@ ms.topic: how-to --- # Testing Properties and Events with Test Container -The Test Container application, shipped in Visual Studio, is an ActiveX control container for testing and debugging ActiveX controls. Test Container allows the control developer to test the control's functionality by changing its properties, invoking its methods, and firing its events. Test Container can display logs of data-binding notifications and also provides facilities for testing an ActiveX control's persistence functionality: you can save properties to a stream or to substorage, reload them, and examine the stored stream data. This section describes how to use the basic features of Test Container. For additional information, select the **Help** menu while running Test Container. +The Test Container application, shipped in Visual C++, is an ActiveX control container for testing and debugging ActiveX controls. Test Container allows the control developer to test the control's functionality by changing its properties, invoking its methods, and firing its events. Test Container can display logs of data-binding notifications and also provides facilities for testing an ActiveX control's persistence functionality: you can save properties to a stream or to substorage, reload them, and examine the stored stream data. This section describes how to use the basic features of Test Container. For additional information, select the **Help** menu while running Test Container. ### To access the ActiveX Control Test Container diff --git a/docs/mfc/tn057-localization-of-mfc-components.md b/docs/mfc/tn057-localization-of-mfc-components.md index b011cb4de35..bb920458129 100644 --- a/docs/mfc/tn057-localization-of-mfc-components.md +++ b/docs/mfc/tn057-localization-of-mfc-components.md @@ -43,13 +43,13 @@ From then on, MFC will load resources from that DLL instead of from myapp.exe. A It is relatively easy to create a resource only DLL. You create a DLL project, add your .RC file to it, and add the necessary resources. If you have an existing project that does not use this technique, you can copy the resources from that project. After adding the resource file to the project, you are almost ready to build the project. The only thing you must do is set the linker options to include **/NOENTRY**. This tells the linker that the DLL has no entry point - since it has no code, it has no entry point. > [!NOTE] -> The resource editor in Visual Studio 4.0 and later supports multiple languages per .RC file. This can make it very easy to manage your localization in a single project. The resources for each language are controlled by preprocessor directives generated by the resource editor. +> The resource editor in Visual C++ 4.0 and later supports multiple languages per .RC file. This can make it very easy to manage your localization in a single project. The resources for each language are controlled by preprocessor directives generated by the resource editor. ## Using the Provided MFC Localized Resources Any MFC application that you build reuses two things from MFC: code and resources. That is, MFC has various error messages, built-in dialogs, and other resources that are used by the MFC classes. In order to completely localize your application, you need to localize not only your application's resources, but also the resources that come directly from MFC. MFC provides a number of different language resource files automatically, so that if the language you are targeting is one of the languages MFC already supports, you just need to make sure you use those localized resources. -As of this writing, MFC supports Chinese, German, Spanish, French, Italian, Japanese, and Korean. The files which contain these localized versions are in the MFC\INCLUDE\L.* (the 'L' stands for localized) directories. The German files are in MFC\INCLUDE\L.DEU, for example. To cause your application to use these RC files instead of the files located in MFC\INCLUDE, add a `/IC:\PROGRAM FILES\MICROSOFT VISUAL STUDIO .NET 2003\VC7\MFC\INCLUDE\L.DEU` to your RC command line (this is just an example; you would need to substitute your locale of choice as well as the directory into which you installed Microsoft C++). +As of this writing, MFC supports Chinese, German, Spanish, French, Italian, Japanese, and Korean. The files which contain these localized versions are in the MFC\INCLUDE\L.* (the 'L' stands for localized) directories. The German files are in MFC\INCLUDE\L.DEU, for example. To cause your application to use these RC files instead of the files located in MFC\INCLUDE, add a `/IC:\PROGRAM FILES\MICROSOFT VISUAL STUDIO .NET 2003\VC7\MFC\INCLUDE\L.DEU` to your RC command line (this is just an example; you would need to substitute your locale of choice as well as the directory into which you installed Visual C++). The above instructions will work if your application links statically with MFC. Most applications link dynamically (because that is the AppWizard default). In this scenario, not only the code is dynamically linked - so are the resources. As a result, you can localize your resources in your application, but the MFC implementation resources will still be loaded from the MFC7x.DLL (or a later version) or from MFC7xLOC.DLL if it exists. You can approach this from two different angles. diff --git a/docs/mfc/walkthrough-updating-the-mfc-scribble-application-part-2.md b/docs/mfc/walkthrough-updating-the-mfc-scribble-application-part-2.md index 0d04318ced9..19b88357d9d 100644 --- a/docs/mfc/walkthrough-updating-the-mfc-scribble-application-part-2.md +++ b/docs/mfc/walkthrough-updating-the-mfc-scribble-application-part-2.md @@ -11,7 +11,7 @@ ms.assetid: 602df5c2-17d4-4cd9-8cf6-dff652c4cae5 ## Prerequisites -[Visual Studio C++ Samples](../overview/visual-cpp-samples.md) +[Visual C++ Samples](../overview/visual-cpp-samples.md) ## Sections diff --git a/docs/mfc/walkthrough-using-the-new-mfc-shell-controls.md b/docs/mfc/walkthrough-using-the-new-mfc-shell-controls.md index 5aa336afc5a..35d503d1884 100644 --- a/docs/mfc/walkthrough-using-the-new-mfc-shell-controls.md +++ b/docs/mfc/walkthrough-using-the-new-mfc-shell-controls.md @@ -53,7 +53,7 @@ These steps vary depending on which version of Visual Studio you are using. To s 1. Use the **MFC Application Wizard** to create a new MFC application. To run the wizard, from the **File** menu select **New**, and then select **Project**. The **New Project** dialog box will be displayed. -1. In the **New Project** dialog box, expand the **Visual Studio** node in the **Project types** pane and select **MFC**. Then, in the **Templates** pane, select **MFC Application**. Type a name for the project, such as `MFCShellControls` and click **OK**. +1. In the **New Project** dialog box, expand the **Visual C++** node in the **Project types** pane and select **MFC**. Then, in the **Templates** pane, select **MFC Application**. Type a name for the project, such as `MFCShellControls` and click **OK**. After **MFC Application Wizard** displays, use the following options: @@ -200,7 +200,7 @@ The wizard automatically creates an application that has a standard menu bar, a - The wizard created an Outlook bar with both a **Folders** pane and a **Calendar** pane. It probably doesn't make sense to have a **Calendar** pane in an **Explorer** window, so remove that pane now. -- The `CMFCShellListCtrl` supports viewing files in different modes, such as **Large Icons**, **Small Icons**, **List**, and **Details**. Update your application to implement this functionality. Hint: see [Visual Studio C++ Samples](../overview/visual-cpp-samples.md). +- The `CMFCShellListCtrl` supports viewing files in different modes, such as **Large Icons**, **Small Icons**, **List**, and **Details**. Update your application to implement this functionality. Hint: see [Visual C++ Samples](../overview/visual-cpp-samples.md). ## See also From 8983b9338b48aeb09bd0b0dd536c868875cdbcd6 Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Wed, 4 Feb 2026 03:06:32 -0800 Subject: [PATCH 2226/2255] Log examples and download instructions --- ...oubleshoot-vcredist-installation-issues.md | 147 +++++++++++++++--- 1 file changed, 127 insertions(+), 20 deletions(-) diff --git a/docs/windows/troubleshoot-vcredist-installation-issues.md b/docs/windows/troubleshoot-vcredist-installation-issues.md index aaba4d0846f..58af67bca74 100644 --- a/docs/windows/troubleshoot-vcredist-installation-issues.md +++ b/docs/windows/troubleshoot-vcredist-installation-issues.md @@ -1,11 +1,11 @@ --- title: "Troubleshoot Visual C++ Redistributable installation issues" -description: "Provide steps to diagnose and resolve issues with installing the Visual C++ Redistributable (vcredist)" +description: "Provide steps to diagnose and resolve issues with installing the Visual C++ Redistributable (VC Redist)" author: vicroms ms.author: viromer -ms.date: 01/21/2025 +ms.date: 02/04/2025 ms.topic: troubleshooting-general -helpviewer_keywords: [ "redist","vcredist", "Visual [C++] redistributable" ] +helpviewer_keywords: [ "redist", "vcredist", "Visual [C++] redistributable", "VC Redist" ] --- # Troubleshoot Visual C++ Redistributable installation issues @@ -14,29 +14,54 @@ Runtime components using the Visual C++ Redistributable installer or the Visual Studio Installer. If you're experiencing such issues, we recommend that you first attempt -installing the [latest version of the Visual C++ +installing the [latest version of the Visual C++ Redistributable](latest-supported-vc-redist.md). ## Collect failure logs The first step to diagnose an issue with the Visual C++ -Redistributable (vcredist) installer is to collect its failure logs. +Redistributable (VC Redist) installer is to collect its failure logs. 1) Download the [Microsoft Visual Studio and .NET Log Collection Tool](). 2) Run `Collect.exe` 3) Extract the contents of `%TEMP%/vscollect.zip` -Once you extract `vscollect.zip`, the vcredist logs are located inside the -`Temp` folder. The relevant log files will be prefixed with the pattern +Once you extract `vscollect.zip`, the VC Redist logs are located inside the +`Temp` folder. The relevant log files are prefixed with the pattern `dd_vcredist__yyyyMMddHHmmss`. In this article, we use these logs to diagnose common issues with the redist installer. +### Other log locations + +VC Redist is often executed as a prerequisite of other products, in such cases +the installation log might be found in a different path. + +For example, [Configuration +Manager](/intune/configmgr/core/understand/introduction) upgrades VC Redist as +part of its own upgrade process, running `vcredist_x64.exe` with the `/l` +option, overriding the default log location. + +In such cases, the path to the VC Redist logs can be found by reading that product's +own logs: + +**Example: Configuration Manager logs** + +`\Logs\cmupdate.log` + +```log +10-31-2025 17:40:06.421 CONFIGURATION_MANAGER_UPDATE 67368 (0x10728) [Visual C++ 2015-2022 Redistributable (x64)] with older version 14.28.29914 is installed. it needs to upgraded. +10-31-2025 17:40:06.421 CONFIGURATION_MANAGER_UPDATE 67368 (0x10728) INFO: Start install Visual C redistributable ("C:\Program Files\Microsoft Configuration Manager\CMUStaging\AA928926-5C76-4DE0-B51F-0FE4D365DFE2\SMSSETUP\BIN\X64\vcredist_x64.exe" /q /norestart /l "C:\Program Files\Microsoft Configuration Manager\Logs\VCRedist64Install.log"). +10-31-2025 17:40:14.553 CONFIGURATION_MANAGER_UPDATE 67368 (0x10728) ERROR: Failed to install Visual C redistributable. Return code: 1603. +10-31-2025 17:40:14.553 CONFIGURATION_MANAGER_UPDATE 67368 (0x10728) ERROR: 64-bit VC Redist installation ("C:\Program Files\Microsoft Configuration Manager\CMUStaging\AA928926-5C76-4DE0-B51F-0FE4D365DFE2\SMSSETUP\BIN\X64\vcredist_x64.exe") failed. Please check log file [C:\Program Files\Microsoft Configuration Manager\Logs\VCRedist64Install.log]. +10-31-2025 17:40:14.554 CONFIGURATION_MANAGER_UPDATE 67368 (0x10728) Failed to install vc redist. Please manually install it from C:\Program Files\Microsoft Configuration Manager\CMUStaging\AA928926-5C76-4DE0-B51F-0FE4D365DFE2\SMSSETUP\BIN\X64 +``` + ## Return Code 1603 -Issues with the vcredist installer often produce the return code 1603. This is +Issues with the VC Redist installer often produce the return code 1603. This is a generic install failure code produced by the Windows Installer, which is invoked during the installation of the Visual C++ Runtime components. @@ -51,32 +76,114 @@ the Visual C++ Redistributable installer](#my-issue-is-not-here). ## Common issues -### Binary file is being used +### Error 1714 - Older Version Cannot Be Removed + +Error 1714 is often caused by a corrupted Windows Installer Cache. The +installation process fails to remove an older version due to a corrupted +or missing MSI package. **Diagnose** -**Steps to resolve** +> [!NOTE] +> The log file examples in this section have had the timestamps removed to +> present only the relevant information. -1 - Close all currently running applications. +> [!NOTE] +> The GUIDs on this examples may be different depending on the product version +> being installed. -### Antivirus or third-party software interference +The presence of these error messages indicate a corrupted cache. -**Diagnose** +In `dd_vcredist__.log` -**Steps to resolve** +```log +Error 0x80070003: Failed to get size of pseudo bundle: C:\ProgramData\Package Cache\{43d1ce82-6f55-4860-a938-20e5deb28b98}\VC_redist.x64.exe +Error 0x80070003: Failed to initialize package from related bundle id: {43d1ce82-6f55-4860-a938-20e5deb28b98} +``` -1 - Disable any antivirus or third-party software that may have a lock on - components that are part of the Visual C++ Redistributable. +In `dd_vcredist___vcRuntimeMinimum_.log`: -### Corrupted Windows Installer cache +```log +SOURCEMGMT: Trying source C:\ProgramData\Package Cache\{455DF12C-7D43-4EFF-AE2F-43C8AF2817A3}v14.28.29914\packages\vcRuntimeMinimum_amd64\. +Note: 1: 2203 2: C:\ProgramData\Package Cache\{455DF12C-7D43-4EFF-AE2F-43C8AF2817A3}v14.28.29914\packages\vcRuntimeMinimum_amd64\vc_runtimeMinimum_x64.msi 3: -2147287037 +SOURCEMGMT: Source is invalid due to missing/inaccessible package. +``` -**Diagnose** +```log +Note: 1: 1714 2: Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 3: 1612 +CustomAction returned actual error code 1612 (note this may not be 100% accurate if translation happened inside sandbox) +Product: Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 -- Error 1714. The older version of Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 cannot be removed. Contact your technical support group. System Error 1612. + +Error 1714. The older version of Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 cannot be removed. Contact your technical support group. System Error 1612. +``` + +In `VSSetupEvents.txt` + +```log +Error 1714. The older version of Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 cannot be removed. Contact your technical support group. System Error 1612.] [(NULL)] [(NULL)] [(NULL)] [(NULL)] [(NULL)] [] +``` **Steps to resolve** -1 - Try using the Windows Installer troubleshooting tool. +From the log files, take note of the VC Redist version causing the issue. + +Method 1: Use the Windows Installer: + +1. Try using the Windows Installer to manually remove the old VC Redist version. + If prompted, let the Windows Installer Troubleshooter attempt to fix the + issue. +2. Retry the installation. + +Method 2: Manually remove the old version. + +1. Download the VC Redist installer for the old version by following the steps in + [Download old versions of the Visual C++ Redistributable Installer](#old-vcredist-versions) +2. Run the installer to uninstall the old VC Redist. +3. Retry the installation. + +## Download old versions of the Visual C++ Redistributable Installer + +> [!WARNING] +> Never install a Visual C++ Redistributable Installer that wasn't downloaded +> from a Microsoft site. And only install packages that are signed by Microsoft. + +The VC Redist installer can be downloaded from +[my.visualstudio.com](), search for +Visual C++ Redistributable + +The latest supported VC Redist version for each version of Visual Studio can +be found in [this article](/cpp/windows/latest-supported-vc-redist). + +To access older or legacy versions follow these steps: + +**Version 14.50 or later** + +The download links use the +`https://aka.ms/vs/18/release//VC_redist..exe` pattern. +For example: . + +**Version 14.30 to 14.44** + +The download links use the +`https://aka.ms/vs/17/release//VC_redist.exe` pattern. +For example: . + +**Version 14.20 to 14.29** + +The download links use the +`https://aka.ms/vs/16/release//VC_redist.exe` pattern. +For example: + +**Version 14.10 or later** + +The download links use the +`https://aka.ms/vs/15/release//VC_redist.exe` pattern. +For example: + +If the aka.ms links do not work, you may be able to find the version you're +looking for through a Bing search. However, make sure that the download +comes from a Microsoft site and that the installer is signed by Microsoft. ## My issue is not here TBD: Instructions to report an issue with the redist installer. - From 36c7f47ef1feac7e798966bc40277da79e895e86 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 5 Feb 2026 11:22:12 -0800 Subject: [PATCH 2227/2255] update alt-text --- docs/porting/copilot-app-modernization-cpp.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/porting/copilot-app-modernization-cpp.md b/docs/porting/copilot-app-modernization-cpp.md index baf39363b46..dcd24ad1831 100644 --- a/docs/porting/copilot-app-modernization-cpp.md +++ b/docs/porting/copilot-app-modernization-cpp.md @@ -29,7 +29,7 @@ GitHub Copilot app modernization for C++ is enabled by default. To disable or ex 1. Select (to enable) or clear (to disable) the checkbox for **Enable GitHub Copilot app modernization for C++ (preview)**. 1. Restart Visual Studio for the setting change to take effect. -![Screenshot of the settings to enable GitHub Copilot app modernization for C++.](media/enable-copilot-app-modernization-cpp.png "enable GitHub Copilot app modernization for C++") +:::image type="content" source="media/enable-copilot-app-modernization-cpp.png" alt-text="Screenshot of Visual Studio Options dialog. GitHub > Copilot > C/C++ settings are visible. The app modernization for C++ checkbox is enabled."::: ## Upgrade your codebase by using GitHub Copilot app modernization for C++ @@ -41,7 +41,7 @@ GitHub Copilot app modernization is an agent that operates inside the GitHub Cop - **From the Solution Explorer context menu**: Right-click on the solution or a loaded project in the Solution Explorer, and choose **Modernize** from the context menu. This automatically launches a GitHub Copilot Chat window, activates the Modernize agent, and provides you with relevant prompts to choose from to get you started. -![Screenshot of the context menu to start GitHub Copilot app modernization.](media/copilot-app-modernization-context-menu.png "Start GitHub Copilot app modernization") +:::image type="content" source="media/copilot-app-modernization-context-menu.png" alt-text="Screenshot of Visual Studio Solution Explorer showing a right-click context menu with Modernize selected to start the Copilot agent."::: - **From GitHub Copilot Chat**: Open the GitHub Copilot Chat Window by selecting **View > GitHub Copilot Chat**. After the GitHub Copilot Chat window opens, mention `@Modernize` in a prompt to activate the Modernize agent. For example, type this prompt: @@ -70,12 +70,12 @@ Once the Modernize agent is active, you can instruct it via a prompt to upgrade :::row::: :::column::: -![Screenshot of GitHub Copilot app modernization window with MSVC upgrade ice breaker for an MSBuild project.](media/app-modernization-msbuild-ice-breaker.png "GitHub Copilot app modernization window") +:::image type="content" source="media/app-modernization-msbuild-ice-breaker.png" alt-text="Screenshot of GitHub Copilot Chat window. The dropdown is set to App Modernization experience and Upgrade MSVC Build Tools to the latest version is highlighted."::: :::column-end::: :::column::: -![Screenshot of GitHub Copilot app modernization window with MSVC upgrade ice breaker for a CMake project.](media/app-modernization-cmake-ice-breaker.png "GitHub Copilot app modernization window") +:::image type="content" source="media/app-modernization-cmake-ice-breaker.png" alt-text="Screenshot of GitHub Copilot Chat window. The dropdown is set to App Modernization experience and Resolve build issues by migrating to modern alternatives is highlighted"::: :::column-end::: :::row-end::: From 2d7776b215648f9f6488f2291422e46fcbea38e3 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 5 Feb 2026 11:25:15 -0800 Subject: [PATCH 2228/2255] acrolinx --- docs/porting/copilot-app-modernization-cpp.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/porting/copilot-app-modernization-cpp.md b/docs/porting/copilot-app-modernization-cpp.md index dcd24ad1831..24148ed7020 100644 --- a/docs/porting/copilot-app-modernization-cpp.md +++ b/docs/porting/copilot-app-modernization-cpp.md @@ -53,7 +53,7 @@ The first time that you load a `.vcxproj` project that targets an earlier versio ### Start the upgrade -Once the Modernize agent is active, you can instruct it via a prompt to upgrade your MSVC Build Tools, or select the already constructed prompt from the list shown in the window. If you launched the agent directly in the GitHub Copilot Chat window by mentioning @Modernize in your prompt, you probably don't need to provide any additional prompting. +Once the Modernize agent is active, you can instruct it via a prompt to upgrade your MSVC Build Tools, or select the already constructed prompt from the list shown in the window. If you launched the agent directly in the GitHub Copilot Chat window by mentioning `@Modernize` in your prompt, you probably don't need to provide more prompting. :::row::: :::column::: @@ -83,13 +83,13 @@ Once the Modernize agent is active, you can instruct it via a prompt to upgrade ### Assessment stage -The agent first assesses what kinds of problems show up after upgrading. If you didn't already upgrade the project, the agent guides you through that process before creating its assessment. After ensuring that your project is upgraded, the agent builds your codebase, analyzes the reported warnings and errors, and generates an `assessment.md` file that describes the problems that it found, their severity, and other useful information. This is your opportunity to tell the agent any additional context that could help it make a plan. +The agent first assesses what kinds of problems show up after upgrading. If you didn't already upgrade the project, the agent guides you through that process before creating its assessment. After ensuring that your project is upgraded, the agent builds your codebase, analyzes the reported warnings and errors, and generates an `assessment.md` file that describes the problems that it found, their severity, and other useful information. This is your opportunity to tell the agent any other context that could help it make a plan. -One of the things you might choose to do here is to tell the agent not to fix certain discovered problems, because you know that resolving them involves some strategic decisions or because they were preexisting warnings that you decided are acceptable for your project. You should carefully read through the plan, making sure to provide that additional context where it is needed. Once you approve the assessment, the agent moves on to creating a concrete plan on addressing the problems. +One of the things you might choose to do here is to tell the agent not to fix certain discovered problems, because you know that resolving them involves some strategic decisions or because they were preexisting warnings that you decided are acceptable for your project. You should carefully read through the plan, making sure to provide that extra context where it is needed. Once you approve the assessment, the agent moves on to creating a concrete plan on addressing the problems. ### Planning stage -Based on the approved assessment and any additional context or instructions you provide, the agent creates a `plan.md` file that proposes a detailed plan for resolving each of the identified problems. If the agent produces a plan that doesn't match your organization's coding style or practices, you can provide that guidance to the agent and have it solve the problem differently. After you agree on the plan, the agent moves to the execution stage. +Based on the approved assessment and any other context or instructions you provide, the agent creates a `plan.md` file that proposes a detailed plan for resolving each of the identified problems. If the agent produces a plan that doesn't match your organization's coding style or practices, you can provide that guidance to the agent and have it solve the problem differently. After you agree on the plan, the agent moves to the execution stage. ### Execution stage From 8c9accdaa6d2532bfc73c61bebb8ffc00479755d Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 5 Feb 2026 11:26:41 -0800 Subject: [PATCH 2229/2255] fix link --- docs/porting/copilot-app-modernization-cpp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/porting/copilot-app-modernization-cpp.md b/docs/porting/copilot-app-modernization-cpp.md index 24148ed7020..9d8ab2b609b 100644 --- a/docs/porting/copilot-app-modernization-cpp.md +++ b/docs/porting/copilot-app-modernization-cpp.md @@ -49,7 +49,7 @@ GitHub Copilot app modernization is an agent that operates inside the GitHub Cop #### For MSBuild-based codebases targeting an earlier version of MSVC Build Tools -The first time that you load a `.vcxproj` project that targets an earlier version of the MSVC Build Tools, you see an option to [upgrade project settings to use a newer version of the MSVC Build Tools](https://learn.microsoft.com/visualstudio/install/setup-assistant). If you retarget any of your projects to a new version of MSVC Build Tools and GitHub Copilot app modernization for C++ is enabled, you receive an infobar in Visual Studio prompting you to use GitHub Copilot app modernization for C++ to resolve any newly introduced build problems. Selecting **Run GitHub Copilot app modernization for C++** launches the GitHub Copilot Chat window, activates the Modernize agent, and provides you with relevant prompts to choose from to get you started. +The first time that you load a `.vcxproj` project that targets an earlier version of the MSVC Build Tools, you see an option to [upgrade project settings to use a newer version of the MSVC Build Tools](/visualstudio/install/setup-assistant). If you retarget any of your projects to a new version of MSVC Build Tools and GitHub Copilot app modernization for C++ is enabled, you receive an infobar in Visual Studio prompting you to use GitHub Copilot app modernization for C++ to resolve any newly introduced build problems. Selecting **Run GitHub Copilot app modernization for C++** launches the GitHub Copilot Chat window, activates the Modernize agent, and provides you with relevant prompts to choose from to get you started. ### Start the upgrade From 142991a57ce19bf9e048e84c793b5b7465ecf206 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 5 Feb 2026 11:39:20 -0800 Subject: [PATCH 2230/2255] address customer issue --- docs/cpp/inline-functions-cpp.md | 42 +++++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/docs/cpp/inline-functions-cpp.md b/docs/cpp/inline-functions-cpp.md index edfd41def2e..ebe06cadee4 100644 --- a/docs/cpp/inline-functions-cpp.md +++ b/docs/cpp/inline-functions-cpp.md @@ -1,7 +1,7 @@ --- title: "Inline Functions (C++)" description: "The C++ inline keyword can be used to suggest inline functions to the compiler." -ms.date: 12/07/2023 +ms.date: 02/05/2026 f1_keywords: ["__forceinline_cpp", "__inline_cpp", "inline_cpp", "__inline", "_inline", "__forceinline", "_forceinline"] helpviewer_keywords: ["inline functions [C++], class members"] --- @@ -13,11 +13,45 @@ In theory, using inline functions can make your program faster because they elim Inline code substitution is done at the compiler's discretion. For example, the compiler won't inline a function if its address is taken or if the compiler decides it's too large. -A function defined in the body of a class declaration is implicitly an inline function. +## The `inline` keyword and the One Definition Rule (ODR) -## Example +The original meaning of **`inline`** is a hint to the compiler to prefer code expansion at the call site over function call instructions. This remains one of the meanings of **`inline`**. -In the following class declaration, the `Account` constructor is an inline function because it is defined in the body of the class declaration. The member functions `GetBalance`, `Deposit`, and `Withdraw` are specified `inline` in their definitions. The `inline` keyword is optional in the function declarations in the class declaration. +However, the **`inline`** keyword also has implications for the One Definition Rule (ODR). Normally, a function can only be defined once across all translation units. When a function is marked **`inline`**, it can be defined in multiple translation units (typically via a header file), provided that all definitions are identical. The linker then selects one definition and discards the duplicates rather than reporting an error. + +This dual nature of **`inline`**—as both an optimization hint and an ODR mechanism—can cause confusion. The ODR aspect is a practical necessity where the same header (containing an inline function definition) may be included in multiple source files. + +## Implicitly inline functions + +Certain functions are implicitly **`inline`** without requiring the keyword: + +- **Functions defined at class scope**: A function defined in the body of a class declaration is implicitly an inline function. This allows small accessor functions and efficient abstractions to be defined directly in class definitions without incurring function call overhead—a priority since the early days of C++. + +- **`constexpr` functions**: Functions declared **`constexpr`** (introduced in C++11) are implicitly **`inline`**. Because **`constexpr`** functions are typically defined in header files to allow compile-time evaluation, they must follow the same ODR rules as inline functions. + +- **`consteval` functions**: Functions declared **`consteval`** (introduced in C++20) are implicitly **`inline`**. + +## Inline variables (C++17) + +C++17 extended the **`inline`** keyword to variables. An **`inline`** variable can be defined in multiple translation units, and like inline functions, the linker selects one definition and discards the rest. This extension applies to the ODR aspect of **`inline`**, not the code-expansion aspect, which only applies to functions. + +Inline variables are useful for defining constants or static data members in header files: + +```cpp +// constants.h +inline constexpr double pi = 3.14159265358979323846; + +struct MyClass +{ + static inline int instanceCount = 0; // Can be defined in header +}; +``` + +Before C++17, such variables required a separate definition in a single source file to avoid linker errors. + +## Example: Inline class member functions + +In the following class declaration, the `Account` constructor is an inline function because it's defined in the body of the class declaration. The member functions `GetBalance`, `Deposit`, and `Withdraw` are specified **`inline`** in their definitions. The **`inline`** keyword is optional in the function declarations in the class declaration. ```cpp // account.h From 433722dd85f2344bb54c1a22a1dd9833625a546b Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 5 Feb 2026 15:05:14 -0800 Subject: [PATCH 2231/2255] extend to include msft attributes --- docs/cpp/inline-functions-cpp.md | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/docs/cpp/inline-functions-cpp.md b/docs/cpp/inline-functions-cpp.md index ebe06cadee4..e01c3956de8 100644 --- a/docs/cpp/inline-functions-cpp.md +++ b/docs/cpp/inline-functions-cpp.md @@ -25,7 +25,7 @@ This dual nature of **`inline`**—as both an optimization hint and an ODR mecha Certain functions are implicitly **`inline`** without requiring the keyword: -- **Functions defined at class scope**: A function defined in the body of a class declaration is implicitly an inline function. This allows small accessor functions and efficient abstractions to be defined directly in class definitions without incurring function call overhead—a priority since the early days of C++. +- **Functions defined at class scope**: A function defined in the body of a class declaration is implicitly an inline function. This allows small accessor functions and to be defined directly in class definitions without incurring function call overhead—a priority since the early days of C++. - **`constexpr` functions**: Functions declared **`constexpr`** (introduced in C++11) are implicitly **`inline`**. Because **`constexpr`** functions are typically defined in header files to allow compile-time evaluation, they must follow the same ODR rules as inline functions. @@ -33,7 +33,7 @@ Certain functions are implicitly **`inline`** without requiring the keyword: ## Inline variables (C++17) -C++17 extended the **`inline`** keyword to variables. An **`inline`** variable can be defined in multiple translation units, and like inline functions, the linker selects one definition and discards the rest. This extension applies to the ODR aspect of **`inline`**, not the code-expansion aspect, which only applies to functions. +C++17 extended the **`inline`** keyword to variables. An **`inline`** variable can be defined in multiple translation units, and like inline functions, the linker selects one definition and discards the rest. Inline variables are useful for defining constants or static data members in header files: @@ -102,7 +102,7 @@ The **`inline`** and **`__inline`** specifiers suggest to the compiler that it i The insertion, called *inline expansion* or *inlining*, occurs only if the compiler's own cost-benefit analysis shows it's worthwhile. Inline expansion minimizes the function-call overhead at the potential cost of larger code size. -The **`__forceinline`** keyword overrides the cost-benefit analysis and relies on the judgment of the programmer instead. Exercise caution when using **`__forceinline`**. Indiscriminate use of **`__forceinline`** can result in larger code with only marginal performance gains or, in some cases, even performance losses (because of the increased paging of a larger executable, for example). +The **`__forceinline`** keyword (or [`[msvc::forceinline]`](/cpp/cpp/attributes#msvcforceinline) attribute) overrides the cost-benefit analysis and relies on the judgment of the programmer instead. Exercise caution when using **`__forceinline`**. Indiscriminate use of **`__forceinline`** can result in larger code with only marginal performance gains or, in some cases, even performance losses (because of the increased paging of a larger executable, for example). The compiler treats the inline expansion options and keywords as suggestions. There's no guarantee that functions will be inlined. You can't force the compiler to inline a particular function, even with the **`__forceinline`** keyword. When you compile with **`/clr`**, the compiler won't inline a function if there are security attributes applied to the function. @@ -174,6 +174,14 @@ If the compiler can't inline a function declared with **`__forceinline`**, it ge Recursive functions can be replaced with inline code to a depth specified by the [`inline_depth`](../preprocessor/inline-depth.md) pragma, up to a maximum of 16 calls. After that depth, recursive function calls are treated as calls to an instance of the function. The depth to which recursive functions are examined by the inline heuristic can't exceed 16. The [`inline_recursion`](../preprocessor/inline-recursion.md) pragma controls the inline expansion of a function currently under expansion. See the [Inline-Function Expansion](../build/reference/ob-inline-function-expansion.md) (/Ob) compiler option for related information. +The C++ Standard defines a common set of attributes. It also allows compiler vendors to define their own attributes within a vendor-specific (in our case, `msvc`) namespace. The following Microsoft-specific attributes can be used to control inlining behavior: + +[`[msvc::forceinline]`](/cpp/cpp/attributes#msvcforceinline): Has the same meaning as **`__forceinline`**.\ +[`[msvc::forceinline_calls]`](/cpp/cpp/attributes#msvcforceinline_calls): Can be placed on or before a statement or block to cause the inline heuristic to force-inline all calls in that statement or block.\ +[`[msvc::flatten]`](/cpp/cpp/attributes#msvcflatten): Similar to `[[msvc::forceinline_calls]]`, but recursively force-inlines all calls in the scope it's applied to until no calls are left.\ +[`[msvc::noinline]`](/cpp/cpp/attributes#msvcnoinline): When placed before a function declaration, has the same meaning as `__declspec(noinline)`.\ +[`[msvc::noinline_calls]`](/cpp/cpp/attributes#msvcnoinline_calls): Can be placed before any statement or block to turn off inlining for all calls in the scope it's applied to. + **END Microsoft Specific** For more information on using the **`inline`** specifier, see: @@ -306,4 +314,9 @@ In this example, the function `increment` is called twice as the expression `sqr ## See also [`noinline`](../cpp/noinline.md)\ -[`auto_inline`](../preprocessor/auto-inline.md) +[`auto_inline`](../preprocessor/auto-inline.md)\ +[`[msvc::forceinline]`](/cpp/cpp/attributes#msvcforceinline)\ +[`[msvc::forceinline_calls]`](/cpp/cpp/attributes#msvcforceinline_calls)\ +[`[msvc::flatten]`](/cpp/cpp/attributes#msvcflatten)\ +[`[msvc::nolinline]`](/cpp/cpp/attributes#msvcnoinline)\ +[`[msvc::nolinline_calls]`](/cpp/cpp/attributes#msvcnoinline_calls) \ No newline at end of file From e3b47739e6ca79fcb7f606ccd60cb2e612f28bdf Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 5 Feb 2026 15:22:11 -0800 Subject: [PATCH 2232/2255] extend to include msft attributes --- docs/cpp/inline-functions-cpp.md | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/docs/cpp/inline-functions-cpp.md b/docs/cpp/inline-functions-cpp.md index e01c3956de8..25b31d277fc 100644 --- a/docs/cpp/inline-functions-cpp.md +++ b/docs/cpp/inline-functions-cpp.md @@ -106,7 +106,7 @@ The **`__forceinline`** keyword (or [`[msvc::forceinline]`](/cpp/cpp/attributes# The compiler treats the inline expansion options and keywords as suggestions. There's no guarantee that functions will be inlined. You can't force the compiler to inline a particular function, even with the **`__forceinline`** keyword. When you compile with **`/clr`**, the compiler won't inline a function if there are security attributes applied to the function. -For compatibility with previous versions, **`_inline`** and **`_forceinline`** are synonyms for **`__inline`** and **`__forceinline`**, respectively, unless compiler option [`/Za` \(Disable language extensions)](../build/reference/za-ze-disable-language-extensions.md) is specified. +For compatibility with previous versions, **`_inline`** and **`_forceinline`** are synonyms for **`__inline`** and **`__forceinline`** (two leading underscores), respectively, unless compiler option [`/Za` \(Disable language extensions)](../build/reference/za-ze-disable-language-extensions.md) is specified. The **`inline`** keyword tells the compiler that inline expansion is preferred. However, the compiler can ignore it. Two cases where this behavior can happen are: @@ -176,11 +176,16 @@ Recursive functions can be replaced with inline code to a depth specified by the The C++ Standard defines a common set of attributes. It also allows compiler vendors to define their own attributes within a vendor-specific (in our case, `msvc`) namespace. The following Microsoft-specific attributes can be used to control inlining behavior: -[`[msvc::forceinline]`](/cpp/cpp/attributes#msvcforceinline): Has the same meaning as **`__forceinline`**.\ -[`[msvc::forceinline_calls]`](/cpp/cpp/attributes#msvcforceinline_calls): Can be placed on or before a statement or block to cause the inline heuristic to force-inline all calls in that statement or block.\ -[`[msvc::flatten]`](/cpp/cpp/attributes#msvcflatten): Similar to `[[msvc::forceinline_calls]]`, but recursively force-inlines all calls in the scope it's applied to until no calls are left.\ -[`[msvc::noinline]`](/cpp/cpp/attributes#msvcnoinline): When placed before a function declaration, has the same meaning as `__declspec(noinline)`.\ -[`[msvc::noinline_calls]`](/cpp/cpp/attributes#msvcnoinline_calls): Can be placed before any statement or block to turn off inlining for all calls in the scope it's applied to. +## Microsoft-specific attributes for controlling inlining behavior + + +|Attribute | Meaning | +|---------|---------| +| [`[msvc::forceinline]`](/cpp/cpp/attributes#msvcforceinline)| Has the same meaning as **`__forceinline`**.| +| [`[msvc::forceinline_calls]`](/cpp/cpp/attributes#msvcforceinline_calls) | Can be placed on or before a statement or block to cause the inline heuristic to force-inline all calls in that statement or block.| +| [`[msvc::flatten]`](/cpp/cpp/attributes#msvcflatten) | Similar to `[[msvc::forceinline_calls]]`, but recursively force-inlines all calls in the scope it's applied to until no calls are left. | +| [`[msvc::noinline]`](/cpp/cpp/attributes#msvcnoinline) | When placed before a function declaration, has the same meaning as `__declspec(noinline)`. | +| [`[msvc::noinline_calls]`](/cpp/cpp/attributes#msvcnoinline_calls) | Can be placed before any statement or block to turn off inlining for all calls in the scope it's applied to. | **END Microsoft Specific** From ab27d2ba19dfd5fa0298a66826030f2c0244496e Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 5 Feb 2026 15:30:51 -0800 Subject: [PATCH 2233/2255] acrolinx --- docs/cpp/inline-functions-cpp.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/docs/cpp/inline-functions-cpp.md b/docs/cpp/inline-functions-cpp.md index 25b31d277fc..f67599ff01b 100644 --- a/docs/cpp/inline-functions-cpp.md +++ b/docs/cpp/inline-functions-cpp.md @@ -11,13 +11,13 @@ The **`inline`** keyword suggests that the compiler substitute the code within t In theory, using inline functions can make your program faster because they eliminate the overhead associated with function calls. Calling a function requires pushing the return address on the stack, pushing arguments onto the stack, jumping to the function body, and then executing a return instruction when the function finishes. This process is eliminated by inlining the function. The compiler also has different opportunities to optimize functions expanded inline versus those that aren't. A tradeoff of inline functions is that the overall size of your program can increase. -Inline code substitution is done at the compiler's discretion. For example, the compiler won't inline a function if its address is taken or if the compiler decides it's too large. +Inline code substitution is done at the compiler's discretion. For example, the compiler doesn't inline a function if its address is taken or if the compiler decides it's too large. ## The `inline` keyword and the One Definition Rule (ODR) The original meaning of **`inline`** is a hint to the compiler to prefer code expansion at the call site over function call instructions. This remains one of the meanings of **`inline`**. -However, the **`inline`** keyword also has implications for the One Definition Rule (ODR). Normally, a function can only be defined once across all translation units. When a function is marked **`inline`**, it can be defined in multiple translation units (typically via a header file), provided that all definitions are identical. The linker then selects one definition and discards the duplicates rather than reporting an error. +However, the **`inline`** keyword also has implications for the One Definition Rule (ODR). Normally, a function can only be defined once across all translation units. When a function is marked **`inline`**, it can be defined in multiple translation units (typically via a header file) if all the definitions are identical. The linker then selects one definition and discards the duplicates rather than reporting an error. This dual nature of **`inline`**—as both an optimization hint and an ODR mechanism—can cause confusion. The ODR aspect is a practical necessity where the same header (containing an inline function definition) may be included in multiple source files. @@ -94,7 +94,7 @@ inline double Account::Withdraw(double amount) A given inline member function must be declared the same way in every compilation unit. There must be exactly one definition of an inline function. -A class member function defaults to external linkage unless a definition for that function contains the **`inline`** specifier. The preceding example shows that you don't have to declare these functions explicitly with the **`inline`** specifier. Using **`inline`** in the function definition suggests to the compiler that it be treated as an inline function. However, you can't redeclare a function as **`inline`** after a call to that function. +A class member function defaults to external linkage unless a definition for that function contains the **`inline`** specifier. The preceding example shows that you don't have to declare these functions explicitly with the **`inline`** specifier. Using **`inline`** in the function definition suggests to the compiler to treat it as an inline function. However, you can't redeclare a function as **`inline`** after a call to that function. ## `inline`, `__inline`, and `__forceinline` @@ -178,7 +178,6 @@ The C++ Standard defines a common set of attributes. It also allows compiler ven ## Microsoft-specific attributes for controlling inlining behavior - |Attribute | Meaning | |---------|---------| | [`[msvc::forceinline]`](/cpp/cpp/attributes#msvcforceinline)| Has the same meaning as **`__forceinline`**.| @@ -275,8 +274,8 @@ int main() Here are some of the differences between the macro and the inline function: -- Macros are always expanded inline. However, an inline function is only inlined when the compiler determines it is the optimal thing to do. -- The macro may result in unexpected behavior, which can lead to subtle bugs. For example, the expression `mult1(2 + 2, 3 + 3)` expands to `2 + 2 * 3 + 3` which evaluates to 11, but the expected result is 24. A seemingly valid fix is to add parentheses around both arguments of the function macro, resulting in `#define mult2(a, b) (a) * (b)`, which will solve the issue at hand but can still cause surprising behavior when part of a larger expression. That was demonstrated in the preceding example, and the problem could be addressed by defining the macro as such `#define mult3(a, b) ((a) * (b))`. +- Macros are always expanded inline. However, an inline function is only inlined when the compiler determines it's the optimal thing to do. +- The macro may result in unexpected behavior, which can lead to subtle bugs. For example, the expression `mult1(2 + 2, 3 + 3)` expands to `2 + 2 * 3 + 3` which evaluates to 11, but the expected result is 24. A seemingly valid fix is to add parentheses around both arguments of the function macro, resulting in `#define mult2(a, b) (a) * (b)`, which solves the issue at hand but can still cause surprising behavior when part of a larger expression. That was demonstrated in the preceding example, and the problem could be addressed by defining the macro as such `#define mult3(a, b) ((a) * (b))`. - An inline function is subject to semantic processing by the compiler, whereas the preprocessor expands macros without that same benefit. Macros aren't type-safe, whereas functions are. - Expressions passed as arguments to inline functions are evaluated once. In some cases, expressions passed as arguments to macros can be evaluated more than once. For example, consider the following: From bb6f51b928313d4ab995effc69c30ba4d754c6ad Mon Sep 17 00:00:00 2001 From: Tapasya Gutta Date: Fri, 6 Feb 2026 19:53:02 +0530 Subject: [PATCH 2234/2255] Make the example about top() much more clear Updated the stack example to push the value 3 instead of 2 avoid ambiguity and modified the output messages accordingly. --- docs/standard-library/stack-class.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/standard-library/stack-class.md b/docs/standard-library/stack-class.md index 12a610f22ee..78fc4b388aa 100644 --- a/docs/standard-library/stack-class.md +++ b/docs/standard-library/stack-class.md @@ -377,7 +377,7 @@ int main( ) stack s1; s1.push( 1 ); - s1.push( 2 ); + s1.push( 3 ); int& i = s1.top( ); const int& ii = s1.top( ); @@ -385,13 +385,13 @@ int main( ) cout << "The top integer of the stack s1 is " << i << "." << endl; i--; - cout << "The next integer down is "<< ii << "." << endl; + cout << "The updated top integer is "<< ii << "." << endl; } ``` ```Output -The top integer of the stack s1 is 2. -The next integer down is 1. +The top integer of the stack s1 is 3. +The updated top integer is 2. ``` ## `value_type` From a28fef9b503e45f27d6ce14ca04b80302cb0c9fd Mon Sep 17 00:00:00 2001 From: Tapasya Gutta Date: Fri, 6 Feb 2026 21:22:29 +0530 Subject: [PATCH 2235/2255] Formatting - Add space for readability. Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/standard-library/stack-class.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard-library/stack-class.md b/docs/standard-library/stack-class.md index 78fc4b388aa..8a30a18989f 100644 --- a/docs/standard-library/stack-class.md +++ b/docs/standard-library/stack-class.md @@ -385,7 +385,7 @@ int main( ) cout << "The top integer of the stack s1 is " << i << "." << endl; i--; - cout << "The updated top integer is "<< ii << "." << endl; + cout << "The updated top integer is " << ii << "." << endl; } ``` From c445d5bd4ce615e61fc9b63eea1be2fcb56276fe Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 6 Feb 2026 17:01:22 -0800 Subject: [PATCH 2236/2255] Update command targets for Visual Studio shortcuts --- docs/build/building-on-the-command-line.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index ffc6dff0b5a..b5b12aacbec 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -208,7 +208,7 @@ Leave this parameter out to use libraries without Spectre mitigations. Use the v Open the Properties dialog for a developer command prompt shortcut to see the command target used. For example, the target for the **x64 Native Tools Command Prompt for VS 2019** shortcut is something similar to: -``` +```cmd %comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" ``` @@ -217,7 +217,7 @@ Open the Properties dialog for a developer command prompt shortcut to see the co Open the Properties dialog for a developer command prompt shortcut to see the command target used. For example, the target for the **x64 Native Tools Command Prompt for VS 2017** shortcut is something similar to: -``` +```cmd %comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat" ``` @@ -226,7 +226,7 @@ Open the Properties dialog for a developer command prompt shortcut to see the co Open the Properties dialog for a developer command prompt shortcut to see the command target used. For example, the target for the **VS2015 x64 Native Tools Command Prompt** shortcut is something similar to: -``` +```cmd %comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 ``` @@ -236,21 +236,21 @@ The architecture-specific batch files set the *`architecture`* parameter and cal ::: moniker range=">= msvc-160" -``` +```cmd %comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64_arm uwp -vcvars_ver=14.29 ``` ::: moniker-end ::: moniker range="= msvc-150" -``` +```cmd %comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64_arm uwp -vcvars_ver=14.19 ``` ::: moniker-end ::: moniker range="< msvc-150" -``` +```cmd %comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 -vcvars_ver=14.0 ``` From cae3644e548e4322306a53116605f8800548be7f Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 7 Feb 2026 09:11:14 +0800 Subject: [PATCH 2237/2255] Remove notion of issues and update `CONTRIBUTING.md` (#5629) * Remove notion of issues in `CONTRIBUTING.md` * Rephrase wording from "new content" to "changes/edits" in `CONTRIBUTING.md` * Use "Visual C++" in `CONTRIBUTING.md` * Update CONTRIBUTING.md Branding has changed since this was submmitted. --------- Co-authored-by: Tyler Whitney --- CONTRIBUTING.md | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bbfa4431118..1fed536772c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,8 +1,8 @@ # Contributing -Thank you for your interest in contributing to the Visual C++ documentation! +Thank you for your interest in contributing to the Microsoft C++ documentation! -In this topic, you'll see the basic process for adding or updating content in the [Visual C++ documentation site](https://learn.microsoft.com/cpp/). +In this topic, you'll see the basic process for adding or updating content in the [Microsoft C++ documentation site](https://learn.microsoft.com/cpp/). In this topic, we'll cover: @@ -14,16 +14,13 @@ In this topic, we'll cover: ## Process for contributing -**Step 1:** Open an issue describing the article you wish to write and how it relates to existing content. -The content inside the **docs** folder is organized into sections that are organized by content area (e.g., debugger). Try to determine the correct folder for your new content. Get feedback on your proposal. - -You can skip this first step for small changes. +**Step 1:** The content inside the **docs** folder is organized into sections that are organized by content area (e.g., debugger). Try to determine the correct folder for your changes. **Step 2:** Fork the `MicrosoftDocs/cpp-docs` repository. -**Step 3:** Create a `branch` for your article. +**Step 3:** Create a `branch` for your changes. -**Step 4:** Write your article. +**Step 4:** Make your edits and commit. If it's a new topic, you can use this [template file](./styleguide/template.md) as your starting point. It contains the writing guidelines and also explains the metadata required for each article, such as author information. @@ -46,9 +43,7 @@ docs **Step 5:** Submit a Pull Request (PR) from your branch to `MicrosoftDocs/cpp-docs/main`. -If your PR is addressing an existing issue, add the `Fixes #Issue_Number` keyword to the commit message or PR description, so the issue can be automatically closed when the PR is merged. For more information, see [Closing issues via commit messages](https://help.github.com/articles/closing-issues-via-commit-messages/). - -The Visual Studio team will review your PR and let you know if the change looks good or if there are any other updates/changes necessary in order to approve it. +The Microsoft C++ docs team will review your PR and let you know if the change looks good or if there are any other updates/changes necessary in order to approve it. **Step 6:** Make any necessary updates to your branch as discussed with the team. @@ -58,9 +53,9 @@ On a certain cadence, we push all commits from main branch into the live branch ## DOs and DON'Ts -Below is a short list of guiding rules that you should keep in mind when you are contributing to the .NET documentation. +Below is a short list of guiding rules that you should keep in mind when you are contributing to the Microsoft C++ documentation. -- **DON'T** surprise us with big pull requests. Instead, file an issue and start a discussion so we can agree on a direction before you invest a large amount of time. +- **DON'T** surprise us with big pull requests. - **DO** read the [style guide](./styleguide/template.md) and [voice and tone](./styleguide/voice-tone.md) guidelines. - **DO** use the [template](./styleguide/template.md) file as the starting point of your work. - **DO** create a separate branch on your fork before working on the articles. @@ -68,7 +63,7 @@ Below is a short list of guiding rules that you should keep in mind when you are - **DO** blog and tweet (or whatever) about your contributions, frequently! > [!NOTE] -> You might notice that some of the topics are not currently following all the guidelines specified here and on the [style guide](./styleguide/template.md) as well. We're working towards achieving consistency throughout the site. Check the list of [open issues](https://github.com/MicrosoftDocs/cpp-docs/issues?q=is%3Aissue+is%3Aopen+label%3Aguidelines-adherence) we're currently tracking for that specific goal. +> You might notice that some of the topics are not currently following all the guidelines specified here and on the [style guide](./styleguide/template.md) as well. We're working towards achieving consistency throughout the site. ## Building the documentation From 1157d3be88af12526e21d921d224c684533d7d10 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 6 Feb 2026 17:32:15 -0800 Subject: [PATCH 2238/2255] Some code escape --- ...urce-compiler-errors-rc1000-through-rc4413.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md b/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md index 00125ae5b55..74e0908987d 100644 --- a/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md +++ b/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md @@ -24,8 +24,8 @@ This section is a reference to the errors generated by the resource compiler. Re | [Resource compiler fatal error RC1020](resource-compiler-fatal-error-rc1020.md) | unexpected '#endif' | | [Resource compiler fatal error RC1021](resource-compiler-fatal-error-rc1021.md) | invalid preprocessor command 'string' | | [Resource compiler fatal error RC1022](resource-compiler-fatal-error-rc1022.md) | expected '#endif' | -| [Resource compiler fatal error RC1047](resource-compiler-fatal-error-rc1047.md) | "too many option options, 'string'" | -| [Resource compiler fatal error RC1052](resource-compiler-fatal-error-rc1052.md) | compiler limit : #if or #ifdef blocks nested too deeply | +| [Resource compiler fatal error RC1047](resource-compiler-fatal-error-rc1047.md) | too many option options, 'string' | +| [Resource compiler fatal error RC1052](resource-compiler-fatal-error-rc1052.md) | compiler limit : `#if` or `#ifdef` blocks nested too deeply | | [Resource compiler fatal error RC1067](resource-compiler-fatal-error-rc1067.md) | compiler limit : identifier overflowed internal buffer | | [Resource compiler fatal error RC1101](resource-compiler-fatal-error-rc1101.md) | no resource binary filename specified | | [Resource compiler fatal error RC1102](resource-compiler-fatal-error-rc1102.md) | internal error : too many arguments to RCPP | @@ -59,8 +59,8 @@ This section is a reference to the errors generated by the resource compiler. Re | [Resource compiler error RC2107](resource-compiler-error-rc2107.md) | expected numeric command value | | [Resource compiler error RC2109](resource-compiler-error-rc2109.md) | expected numerical dialog constant | | [Resource compiler error RC2111](resource-compiler-error-rc2111.md) | invalid control type | -| [Resource compiler error RC2112](resource-compiler-error-rc2112.md) | BEGIN expected in dialog | -| [Resource compiler error RC2113](resource-compiler-error-rc2113.md) | END expected in dialog | +| [Resource compiler error RC2112](resource-compiler-error-rc2112.md) | `BEGIN` expected in dialog | +| [Resource compiler error RC2113](resource-compiler-error-rc2113.md) | `END` expected in dialog | | [Resource compiler error RC2114](resource-compiler-error-rc2114.md) | expected control class name | | [Resource compiler error RC2116](resource-compiler-error-rc2116.md) | expecting number for ID | | [Resource compiler error RC2122](resource-compiler-error-rc2122.md) | unknown menu subtype | @@ -74,9 +74,9 @@ This section is a reference to the errors generated by the resource compiler. Re | [Resource compiler error RC2152](resource-compiler-error-rc2152.md) | invalid control character | | [Resource compiler error RC2162](resource-compiler-error-rc2162.md) | expected macro formal parameter | | [Resource compiler error RC2163](resource-compiler-error-rc2163.md) | accelerator type required [ASCII or VIRTKEY] | -| [Resource compiler error RC2164](resource-compiler-error-rc2164.md) | unexpected value in RCDATA | -| [Resource compiler error RC2165](resource-compiler-error-rc2165.md) | string not found in DLGINCLUDE statement | -| [Resource compiler error RC2167](resource-compiler-error-rc2167.md) | unrecognized VERSIONINFO field; BEGIN or comma expected | +| [Resource compiler error RC2164](resource-compiler-error-rc2164.md) | unexpected value in `RCDATA` | +| [Resource compiler error RC2165](resource-compiler-error-rc2165.md) | string not found in `DLGINCLUDE` statement | +| [Resource compiler error RC2167](resource-compiler-error-rc2167.md) | unrecognized `VERSIONINFO` field; `BEGIN` or comma expected | | [Resource compiler error RC2169](resource-compiler-error-rc2169.md) | resource file filename is not in 2.03 format | | [Resource compiler error RC2170](resource-compiler-error-rc2170.md) | bitmap file filename is not in 3.00 format | | [Resource compiler error RC2171](resource-compiler-error-rc2171.md) | unknown DIB header format | @@ -94,7 +94,7 @@ This section is a reference to the errors generated by the resource compiler. Re | [Resource compiler warning RC4093](resource-compiler-warning-rc4093.md) | unescaped newline in character constant in inactive code | | [Resource compiler warning RC4214](resource-compiler-warning-rc4214.md) | Codepage not valid : ignored | | [Resource compiler warning RW4001](resource-compiler-warning-rw4001.md) | .EXE processing options (/L /M /P /T /K /E /31 or /30) | -| [Resource compiler warning RW4003](resource-compiler-warning-rw4003.md) | SHIFT or CONTROL used without VIRTKEY | +| [Resource compiler warning RW4003](resource-compiler-warning-rw4003.md) | `SHIFT` or `CONTROL` used without `VIRTKEY` | | [Resource compiler warning RW4004](resource-compiler-warning-rw4004.md) | ASCII character not equivalent to virtual key code | ## See also From d5fdb408309f966e6e4e74b4d1a231bc50f4a846 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 6 Feb 2026 17:44:05 -0800 Subject: [PATCH 2239/2255] Fix duplicate ms.custom entry in documentation Removed duplicate ms.custom metadata entry. --- docs/build/building-on-the-command-line.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index 6f7ec2f05a0..07501e59a26 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -3,7 +3,6 @@ title: "Use the Microsoft C++ Build Tools from the command line" description: "Use the Microsoft C++ (MSVC) Build Tools from the command line outside of the Visual Studio IDE." ms.custom: "conceptual" ms.date: 04/07/2022 -ms.custom: "conceptual" ms.topic: how-to helpviewer_keywords: ["command-line builds [C++]", "compiling source code [C++], command line", "builds [C++], command-line", "command line [C++], building from", "command line [C++], compilers"] --- From b4f091ce5a2ce1139e64c384f032888b0d307b8f Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Tue, 10 Feb 2026 00:40:40 -0800 Subject: [PATCH 2240/2255] Add general troubleshooting steps --- ...ubleshoot-vc-redist-installation-issues.md | 277 ++++++++++++++++++ ...oubleshoot-vcredist-installation-issues.md | 189 ------------ 2 files changed, 277 insertions(+), 189 deletions(-) create mode 100644 docs/windows/troubleshoot-vc-redist-installation-issues.md delete mode 100644 docs/windows/troubleshoot-vcredist-installation-issues.md diff --git a/docs/windows/troubleshoot-vc-redist-installation-issues.md b/docs/windows/troubleshoot-vc-redist-installation-issues.md new file mode 100644 index 00000000000..fdb99b7dc73 --- /dev/null +++ b/docs/windows/troubleshoot-vc-redist-installation-issues.md @@ -0,0 +1,277 @@ +--- +title: "Troubleshoot Visual C++ Redistributable installation issues" +description: "Provide steps to diagnose and resolve issues with installing the Visual C++ Redistributable (VC Redist) as a standalone installation and as part of the VS Installer." +author: vicroms +ms.author: viromer +ms.date: 02/10/2025 +ms.topic: troubleshooting-general +helpviewer_keywords: [ "redist", "vcredist", "Visual [C++] redistributable", "VC Redist" ] +--- +# Troubleshoot Visual C++ Redistributable installation issues + +This guide is for users experiencing issues while installing the Visual C++ Runtime components using the Visual C++ Redistributable (VC Redist) installer or the Visual Studio Installer (VS Installer). + +If you're experiencing such issues, we recommend that you first attempt installing the [latest version of the Visual C++ Redistributable](latest-supported-vc-redist.md). + +## Collect failure logs + +The first step to diagnose an issue with the Visual C++ Redistributable (VC Redist) installer is to collect its failure logs. + +1. Download the [Microsoft Visual Studio and .NET Log Collection Tool](). +2. Run `Collect.exe`. +3. Extract the contents of `%TEMP%/vscollect.zip`. + +Once you extract `vscollect.zip`, the VC Redist logs are located inside the `Temp` folder. The relevant log files are prefixed with the pattern `dd_vcredist__yyyyMMddHHmmss`. + +The VC Redist logs are useful to diagnose common installation issues. + +### Other log locations + +VC Redist is often executed as a prerequisite of other products, in such cases the installation log might be found in a different path. + +For example, [Configuration Manager](/intune/configmgr/core/understand/introduction) upgrades VC Redist as part of its own upgrade process by running `vcredist_x64.exe` with the `/l` option which overrides the default log location. + +In such cases, the path to the VC Redist logs can be found by reading that product's own logs: + +**Example: Configuration Manager logs** + +`\Logs\cmupdate.log` + +```log +10-31-2025 17:40:06.421 CONFIGURATION_MANAGER_UPDATE 67368 (0x10728) [Visual C++ 2015-2022 Redistributable (x64)] with older version 14.28.29914 is installed. it needs to upgraded. +10-31-2025 17:40:06.421 CONFIGURATION_MANAGER_UPDATE 67368 (0x10728) INFO: Start install Visual C redistributable ("C:\Program Files\Microsoft Configuration Manager\CMUStaging\AA928926-5C76-4DE0-B51F-0FE4D365DFE2\SMSSETUP\BIN\X64\vcredist_x64.exe" /q /norestart /l "C:\Program Files\Microsoft Configuration Manager\Logs\VCRedist64Install.log"). +10-31-2025 17:40:14.553 CONFIGURATION_MANAGER_UPDATE 67368 (0x10728) ERROR: Failed to install Visual C redistributable. Return code: 1603. +10-31-2025 17:40:14.553 CONFIGURATION_MANAGER_UPDATE 67368 (0x10728) ERROR: 64-bit VC Redist installation ("C:\Program Files\Microsoft Configuration Manager\CMUStaging\AA928926-5C76-4DE0-B51F-0FE4D365DFE2\SMSSETUP\BIN\X64\vcredist_x64.exe") failed. Please check log file [C:\Program Files\Microsoft Configuration Manager\Logs\VCRedist64Install.log]. +10-31-2025 17:40:14.554 CONFIGURATION_MANAGER_UPDATE 67368 (0x10728) Failed to install vc redist. Please manually install it from C:\Program Files\Microsoft Configuration Manager\CMUStaging\AA928926-5C76-4DE0-B51F-0FE4D365DFE2\SMSSETUP\BIN\X64 +``` + +## General troubleshooting steps + +This section describes general troubleshooting methods you can try to resolve issues with the VC Redist installer. + +### Method 1: Disable antivirus software temporarily + +Security products have been repeatedly linked to blocked VC Redist installs. + +1. Turn off Windows Defender real-time protection. +2. Disable any corporate endpoint protection temporarily (Symantec, McAfee, etc.). +3. Retry the installation. +4. Reenable any disabled protection software. + +### Method 2: Run VC Redist Installer as Administrator + +File-access failures are heavily correlated with insufficient permissions. + +1. Right-click the VC Redist Installer and select **Run as administrator**. +2. Retry the installation. + +### Method 3: Check for Windows System Updates + +On rare occasions, outdated system components can cause VC Redist installation issues. + +1. Go to Windows Update and install all pending updates. +2. Reboot your PC. +3. Retry the installation. + +> [!IMPORTANT] +> The troubleshooting methods below apply if you're installing VC Redist using the Visual Studio Installer. + +### Method 4: Manually Run the VC Redist Installer + +1. Go to `%ProgramData%\Microsoft\VisualStudio\Packages` +2. Open the folders: + - `Microsoft.VisualCpp.Redist.14,version=,chip=x64` + - `Microsoft.VisualCpp.Redist.14,version=,chip=x86` +3. Run the VC Redist installers: + - `vc_redist.x64.exe` + - `vc_redist.x86.exe` +4. Retry the Visual Studio Installer. + +If the manual installation fails, follow [methods 1 and 2](#method-1). + +### Method 5: Clear the Visual Studio Installer cache + +1. Open `%ProgramData%\Microsoft\VisualStudio\Packages` +2. Delete all files inside the folder to force the Visual Studio Installer to regenerate them. +3. Retry the Visual Studio Installer. + +### Method 6: Repair the Visual Studio Installer + +1. Go to **Settings** > **Apps** > **Installed Apps** +2. Select **Visual Studio Installer** > **Modify** > **Repair** +3. Retry the Visual Studio Installer. + +### Method 7: Delete the Visual Studio Installer folder + +> [!WARNING] +> This method requires that you have the Visual Studio Installer Setup downloaded (VisualStudioSetup.exe). +> You can download the Visual Studio Installer Setup from . + +This method helps in case the installer metadata is corrupted, deleting the installer folder forces the Visual Studio Installer to regenerate it. + +1. Download `VisualStudioSetup.exe` from . +2. Delete the folder `C:\Program Files (x86)\Microsoft Visual Studio\Installer`, you may be prompted to run this operation as Administrator. +3. Run `VisualStudioSetup.exe`. + +## Common issues + +### Return Code 1603 + +Return code 1603 indicates a generic installation failure produced by the Windows Installer during the installation of the Visual C++ Runtime components. + +Because many factors can produce a 1603 code, the code by itself does not provide enough information to diagnose the cause of the issue. +Often, the log files produced by the VC Redist installer contain relevant information that may lead to a solution or workaround. + +The [Common issues](#common-issues) section describes examples of how to diagnose common installation errors and steps that may resolve them. +If your issue isn't found here, then follow the instructions to [report an issue in the Visual C++ Redistributable installer](#report-a-vc-redist-installation-problem). + +### Access Denied + +An issue occurs during installation of VC Redist failing with return code 5. +The error code typically indicates a permissions issue; specifically, an access denied issue. + +**Steps to resolve** + +1. Disable antivirus, group policies, and firewalls temporarily. +2. Run the VC Redist installer. +3. Reenable any disabled protection software. + +If the installation fails, try to run the VC Redist installer as Administrator. + +### File is locked + +An issue occurs during the installation of VC Redist failing with return code 32. +Likely causes include blocked permissions, interference from antivirus or third-party software, group policies, or corrupted files. + +**Steps to resolve** + +1. Close any running software in your PC. +2. Try the methods in [General troubleshooting steps](#general-troubleshooting-steps). + +If the installation fails, try to restart your PC to release any locked files. + +### Corrupt or invalid installer package + +The issue involves an error during installation of VC Redist using the Visua Studio Installer with error code 1620. +Error code 1620 indicates that a Windows Installer package couldn't be opened, likely due to corruption or invalid files. + +One or more of these error codes are present in the VC Redist logs: + +- Error code 1620: indicates that the Windows Installer package could not be opened. +- Error code 0x80091007: several payloads failed verification due to hash mismatches. +- Errof code 0x80070654: occurs when an MSI package fails to execute. + +**Steps to resolve** + +Methods 5, 6, and 7 in the [General troubleshoot steps](#file-is-locked) may help solve this issue by cleaning the package cache. + +### Older Version Cannot Be Removed + +A corrupted Windows Installer cache produces error code 1714, indicating a failure to remove a previous version of VC Redist. + +The presence of these error messages indicates a corrupted cache. + +> [!NOTE] +> Tiemstamps have been rmoved from the log file examples to condense the output +> and present only the relevant information. + +> [!NOTE] +> The product's unique identifiers (GUIDs) on these examples can be different +> depending on the product version being installed. + +In `dd_vcredist__.log` + +```log +Error 0x80070003: Failed to get size of pseudo bundle: C:\ProgramData\Package Cache\{43d1ce82-6f55-4860-a938-20e5deb28b98}\VC_redist.x64.exe +Error 0x80070003: Failed to initialize package from related bundle id: {43d1ce82-6f55-4860-a938-20e5deb28b98} +``` + +In `dd_vcredist___vcRuntimeMinimum_.log`: + +```log +SOURCEMGMT: Trying source C:\ProgramData\Package Cache\{455DF12C-7D43-4EFF-AE2F-43C8AF2817A3}v14.28.29914\packages\vcRuntimeMinimum_amd64\. +Note: 1: 2203 2: C:\ProgramData\Package Cache\{455DF12C-7D43-4EFF-AE2F-43C8AF2817A3}v14.28.29914\packages\vcRuntimeMinimum_amd64\vc_runtimeMinimum_x64.msi 3: -2147287037 +SOURCEMGMT: Source is invalid due to missing/inaccessible package. +``` + +```log +Note: 1: 1714 2: Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 3: 1612 +CustomAction returned actual error code 1612 (note this may not be 100% accurate if translation happened inside sandbox) +Product: Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 -- Error 1714. The older version of Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 cannot be removed. Contact your technical support group. System Error 1612. + +Error 1714. The older version of Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 cannot be removed. Contact your technical support group. System Error 1612. +``` + +In `VSSetupEvents.txt` + +```log +Error 1714. The older version of Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 cannot be removed. Contact your technical support group. System Error 1612.] [(NULL)] [(NULL)] [(NULL)] [(NULL)] [(NULL)] [] +``` + +**Steps to resolve** + +From the log files, take note of the VC Redist version causing the issue. + +Method 1: Use the Windows Installer. + +1. Try using the Windows Installer to manually remove the old VC Redist version. + If prompted, let the Windows Installer Troubleshooter attempt to fix the issue. +2. Retry the installation. + +Method 2: Manually remove the old version. + +1. Download the VC Redist installer for the old version by following the steps in + [Download old versions of the Visual C++ Redistributable Installer](#old-vcredist-versions) +2. Run the installer to uninstall the old VC Redist. +3. Retry the installation. + +## Download old versions of the Visual C++ Redistributable Installer + +> [!WARNING] +> Never install a Visual C++ Redistributable Installer that wasn't downloaded from a Microsoft site. +> Only install packages signed by Microsoft. + +The VC Redist installer can be downloaded from [my.visualstudio.com](), search for Visual C++ Redistributable + +The latest supported VC Redist version for each version of Visual Studio can be found in [this article](/cpp/windows/latest-supported-vc-redist). + +To access older or legacy versions follow these steps: + +**Version 14.50 or later** + +The download links use the `https://aka.ms/vs/18/release//VC_redist..exe` pattern. +For example: . + +**Version 14.30 to 14.44** + +The download links use the `https://aka.ms/vs/17/release//VC_redist.exe` pattern. +For example: . + +**Version 14.20 to 14.29** + +The download links use the `https://aka.ms/vs/16/release//VC_redist.exe` pattern. +For example: + +**Version 14.10 or later** + +The download links use the `https://aka.ms/vs/15/release//VC_redist.exe` pattern. +For example: + +If the aka.ms links don't work, you may be able to find the version you're looking for through a Bing search. +However, make sure that the download comes from a Microsoft site and that the installer is signed by Microsoft. + +## Report a VC Redist installation problem + +The list of [common issues](#common-issues) has been collected from feedback reported to Microsoft through [Developer Community](). + +If you encounter an issue not found in that section, or if your issue isn't resolved by the steps in this troubleshooting guide. +Use the [Report a Problem]() form to create a new feedback item. + +Your report should include as much information as possible about your environment. Please include: + +- Version of VC Redist you are trying to install. +- If upgrading, version of previously installed VC Redist installations. +- If installing through the Visual Studio Installer, version of the VS Installer. +- Logs collected by following the steps in the [Collect failure logs](#collect-failure-logs) section. + +Feedback without this information, especially without logs, is non-actionable and will be closed. diff --git a/docs/windows/troubleshoot-vcredist-installation-issues.md b/docs/windows/troubleshoot-vcredist-installation-issues.md deleted file mode 100644 index 58af67bca74..00000000000 --- a/docs/windows/troubleshoot-vcredist-installation-issues.md +++ /dev/null @@ -1,189 +0,0 @@ ---- -title: "Troubleshoot Visual C++ Redistributable installation issues" -description: "Provide steps to diagnose and resolve issues with installing the Visual C++ Redistributable (VC Redist)" -author: vicroms -ms.author: viromer -ms.date: 02/04/2025 -ms.topic: troubleshooting-general -helpviewer_keywords: [ "redist", "vcredist", "Visual [C++] redistributable", "VC Redist" ] ---- -# Troubleshoot Visual C++ Redistributable installation issues - -This guide is for users experiencing issues while installing the Visual C++ -Runtime components using the Visual C++ Redistributable installer or the -Visual Studio Installer. - -If you're experiencing such issues, we recommend that you first attempt -installing the [latest version of the Visual C++ -Redistributable](latest-supported-vc-redist.md). - -## Collect failure logs - -The first step to diagnose an issue with the Visual C++ -Redistributable (VC Redist) installer is to collect its failure logs. - -1) Download the [Microsoft Visual Studio and .NET Log Collection - Tool](). -2) Run `Collect.exe` -3) Extract the contents of `%TEMP%/vscollect.zip` - -Once you extract `vscollect.zip`, the VC Redist logs are located inside the -`Temp` folder. The relevant log files are prefixed with the pattern -`dd_vcredist__yyyyMMddHHmmss`. - -In this article, we use these logs to diagnose common issues with the redist -installer. - -### Other log locations - -VC Redist is often executed as a prerequisite of other products, in such cases -the installation log might be found in a different path. - -For example, [Configuration -Manager](/intune/configmgr/core/understand/introduction) upgrades VC Redist as -part of its own upgrade process, running `vcredist_x64.exe` with the `/l` -option, overriding the default log location. - -In such cases, the path to the VC Redist logs can be found by reading that product's -own logs: - -**Example: Configuration Manager logs** - -`\Logs\cmupdate.log` - -```log -10-31-2025 17:40:06.421 CONFIGURATION_MANAGER_UPDATE 67368 (0x10728) [Visual C++ 2015-2022 Redistributable (x64)] with older version 14.28.29914 is installed. it needs to upgraded. -10-31-2025 17:40:06.421 CONFIGURATION_MANAGER_UPDATE 67368 (0x10728) INFO: Start install Visual C redistributable ("C:\Program Files\Microsoft Configuration Manager\CMUStaging\AA928926-5C76-4DE0-B51F-0FE4D365DFE2\SMSSETUP\BIN\X64\vcredist_x64.exe" /q /norestart /l "C:\Program Files\Microsoft Configuration Manager\Logs\VCRedist64Install.log"). -10-31-2025 17:40:14.553 CONFIGURATION_MANAGER_UPDATE 67368 (0x10728) ERROR: Failed to install Visual C redistributable. Return code: 1603. -10-31-2025 17:40:14.553 CONFIGURATION_MANAGER_UPDATE 67368 (0x10728) ERROR: 64-bit VC Redist installation ("C:\Program Files\Microsoft Configuration Manager\CMUStaging\AA928926-5C76-4DE0-B51F-0FE4D365DFE2\SMSSETUP\BIN\X64\vcredist_x64.exe") failed. Please check log file [C:\Program Files\Microsoft Configuration Manager\Logs\VCRedist64Install.log]. -10-31-2025 17:40:14.554 CONFIGURATION_MANAGER_UPDATE 67368 (0x10728) Failed to install vc redist. Please manually install it from C:\Program Files\Microsoft Configuration Manager\CMUStaging\AA928926-5C76-4DE0-B51F-0FE4D365DFE2\SMSSETUP\BIN\X64 -``` - -## Return Code 1603 - -Issues with the VC Redist installer often produce the return code 1603. This is -a generic install failure code produced by the Windows Installer, which is -invoked during the installation of the Visual C++ Runtime components. - -Because many factors can produce a 1603 code, the return code itself is not -enough to diagnose the root cause of the issue. In such cases, the log files -usually contain relevant information that can lead to a solution. - -The [Common issues](#common-issues) section describes examples of how to -diagnose common installation errors and steps that may resolve them. If your -issue is not found here, then follow the instructions to [report an issue in -the Visual C++ Redistributable installer](#my-issue-is-not-here). - -## Common issues - -### Error 1714 - Older Version Cannot Be Removed - -Error 1714 is often caused by a corrupted Windows Installer Cache. The -installation process fails to remove an older version due to a corrupted -or missing MSI package. - -**Diagnose** - -> [!NOTE] -> The log file examples in this section have had the timestamps removed to -> present only the relevant information. - -> [!NOTE] -> The GUIDs on this examples may be different depending on the product version -> being installed. - -The presence of these error messages indicate a corrupted cache. - -In `dd_vcredist__.log` - -```log -Error 0x80070003: Failed to get size of pseudo bundle: C:\ProgramData\Package Cache\{43d1ce82-6f55-4860-a938-20e5deb28b98}\VC_redist.x64.exe -Error 0x80070003: Failed to initialize package from related bundle id: {43d1ce82-6f55-4860-a938-20e5deb28b98} -``` - -In `dd_vcredist___vcRuntimeMinimum_.log`: - -```log -SOURCEMGMT: Trying source C:\ProgramData\Package Cache\{455DF12C-7D43-4EFF-AE2F-43C8AF2817A3}v14.28.29914\packages\vcRuntimeMinimum_amd64\. -Note: 1: 2203 2: C:\ProgramData\Package Cache\{455DF12C-7D43-4EFF-AE2F-43C8AF2817A3}v14.28.29914\packages\vcRuntimeMinimum_amd64\vc_runtimeMinimum_x64.msi 3: -2147287037 -SOURCEMGMT: Source is invalid due to missing/inaccessible package. -``` - -```log -Note: 1: 1714 2: Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 3: 1612 -CustomAction returned actual error code 1612 (note this may not be 100% accurate if translation happened inside sandbox) -Product: Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 -- Error 1714. The older version of Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 cannot be removed. Contact your technical support group. System Error 1612. - -Error 1714. The older version of Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 cannot be removed. Contact your technical support group. System Error 1612. -``` - -In `VSSetupEvents.txt` - -```log -Error 1714. The older version of Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 cannot be removed. Contact your technical support group. System Error 1612.] [(NULL)] [(NULL)] [(NULL)] [(NULL)] [(NULL)] [] -``` - -**Steps to resolve** - -From the log files, take note of the VC Redist version causing the issue. - -Method 1: Use the Windows Installer: - -1. Try using the Windows Installer to manually remove the old VC Redist version. - If prompted, let the Windows Installer Troubleshooter attempt to fix the - issue. -2. Retry the installation. - -Method 2: Manually remove the old version. - -1. Download the VC Redist installer for the old version by following the steps in - [Download old versions of the Visual C++ Redistributable Installer](#old-vcredist-versions) -2. Run the installer to uninstall the old VC Redist. -3. Retry the installation. - -## Download old versions of the Visual C++ Redistributable Installer - -> [!WARNING] -> Never install a Visual C++ Redistributable Installer that wasn't downloaded -> from a Microsoft site. And only install packages that are signed by Microsoft. - -The VC Redist installer can be downloaded from -[my.visualstudio.com](), search for -Visual C++ Redistributable - -The latest supported VC Redist version for each version of Visual Studio can -be found in [this article](/cpp/windows/latest-supported-vc-redist). - -To access older or legacy versions follow these steps: - -**Version 14.50 or later** - -The download links use the -`https://aka.ms/vs/18/release//VC_redist..exe` pattern. -For example: . - -**Version 14.30 to 14.44** - -The download links use the -`https://aka.ms/vs/17/release//VC_redist.exe` pattern. -For example: . - -**Version 14.20 to 14.29** - -The download links use the -`https://aka.ms/vs/16/release//VC_redist.exe` pattern. -For example: - -**Version 14.10 or later** - -The download links use the -`https://aka.ms/vs/15/release//VC_redist.exe` pattern. -For example: - -If the aka.ms links do not work, you may be able to find the version you're -looking for through a Bing search. However, make sure that the download -comes from a Microsoft site and that the installer is signed by Microsoft. - -## My issue is not here - -TBD: Instructions to report an issue with the redist installer. From a4aff4ce03348a320bd3a07dba0338cc6a783b51 Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Tue, 10 Feb 2026 01:41:45 -0800 Subject: [PATCH 2241/2255] Apply Acrolynx suggestions --- ...ubleshoot-vcredist-installation-issues.md} | 113 ++++++++---------- 1 file changed, 53 insertions(+), 60 deletions(-) rename docs/windows/{troubleshoot-vc-redist-installation-issues.md => troubleshoot-vcredist-installation-issues.md} (67%) diff --git a/docs/windows/troubleshoot-vc-redist-installation-issues.md b/docs/windows/troubleshoot-vcredist-installation-issues.md similarity index 67% rename from docs/windows/troubleshoot-vc-redist-installation-issues.md rename to docs/windows/troubleshoot-vcredist-installation-issues.md index fdb99b7dc73..974fcf64fa5 100644 --- a/docs/windows/troubleshoot-vc-redist-installation-issues.md +++ b/docs/windows/troubleshoot-vcredist-installation-issues.md @@ -1,6 +1,6 @@ --- title: "Troubleshoot Visual C++ Redistributable installation issues" -description: "Provide steps to diagnose and resolve issues with installing the Visual C++ Redistributable (VC Redist) as a standalone installation and as part of the VS Installer." +description: "Provide steps to diagnose and resolve issues with installing the Visual C++ Redistributable as a standalone installation and as part of the Visual Studio Installer." author: vicroms ms.author: viromer ms.date: 02/10/2025 @@ -9,29 +9,29 @@ helpviewer_keywords: [ "redist", "vcredist", "Visual [C++] redistributable", "VC --- # Troubleshoot Visual C++ Redistributable installation issues -This guide is for users experiencing issues while installing the Visual C++ Runtime components using the Visual C++ Redistributable (VC Redist) installer or the Visual Studio Installer (VS Installer). +This guide is for users experiencing issues while installing the Visual C++ Runtime components using the Visual C++ Redistributable (vcredist) installer or the Visual Studio (VS) Installer. If you're experiencing such issues, we recommend that you first attempt installing the [latest version of the Visual C++ Redistributable](latest-supported-vc-redist.md). ## Collect failure logs -The first step to diagnose an issue with the Visual C++ Redistributable (VC Redist) installer is to collect its failure logs. +The first step to diagnose an issue with the Visual C++ Redistributable installer is to collect its failure logs. 1. Download the [Microsoft Visual Studio and .NET Log Collection Tool](). 2. Run `Collect.exe`. 3. Extract the contents of `%TEMP%/vscollect.zip`. -Once you extract `vscollect.zip`, the VC Redist logs are located inside the `Temp` folder. The relevant log files are prefixed with the pattern `dd_vcredist__yyyyMMddHHmmss`. +Once you extract `vscollect.zip`, the vcredist logs are located inside the `Temp` folder. The relevant log files are prefixed with the pattern `dd_vcredist__yyyyMMddHHmmss`. -The VC Redist logs are useful to diagnose common installation issues. +The vcredist logs are useful to diagnose common installation issues. ### Other log locations -VC Redist is often executed as a prerequisite of other products, in such cases the installation log might be found in a different path. +The vcredist installer is often executed as a prerequisite of other products, in such cases the installation log might be found in a different path. -For example, [Configuration Manager](/intune/configmgr/core/understand/introduction) upgrades VC Redist as part of its own upgrade process by running `vcredist_x64.exe` with the `/l` option which overrides the default log location. +For example, [Configuration Manager](/intune/configmgr/core/understand/introduction) upgrades vcredist as part of its own upgrade process by running `vcredist_x64.exe` with the `/l` option that overrides the default log location. -In such cases, the path to the VC Redist logs can be found by reading that product's own logs: +In such cases, the path to the logs can be found by reading that product's own logs: **Example: Configuration Manager logs** @@ -47,42 +47,42 @@ In such cases, the path to the VC Redist logs can be found by reading that produ ## General troubleshooting steps -This section describes general troubleshooting methods you can try to resolve issues with the VC Redist installer. +This section describes general troubleshooting methods you can try to resolve issues with the vcredist installer. ### Method 1: Disable antivirus software temporarily -Security products have been repeatedly linked to blocked VC Redist installs. +Security products often block installation of vcredist components. 1. Turn off Windows Defender real-time protection. 2. Disable any corporate endpoint protection temporarily (Symantec, McAfee, etc.). 3. Retry the installation. 4. Reenable any disabled protection software. -### Method 2: Run VC Redist Installer as Administrator +### Method 2: Run the Visual C++ Redistributable installer as Administrator File-access failures are heavily correlated with insufficient permissions. -1. Right-click the VC Redist Installer and select **Run as administrator**. +1. Right-click the vcredist installer and select **Run as administrator**. 2. Retry the installation. ### Method 3: Check for Windows System Updates -On rare occasions, outdated system components can cause VC Redist installation issues. +On rare occasions, outdated system components can cause installation issues. 1. Go to Windows Update and install all pending updates. 2. Reboot your PC. 3. Retry the installation. > [!IMPORTANT] -> The troubleshooting methods below apply if you're installing VC Redist using the Visual Studio Installer. +> The following troubleshooting methods apply when vcredist is installed as a component of the Visual Studio Installer. -### Method 4: Manually Run the VC Redist Installer +### Method 4: Manually Run the Visual C++ Redistributable installer 1. Go to `%ProgramData%\Microsoft\VisualStudio\Packages` 2. Open the folders: - `Microsoft.VisualCpp.Redist.14,version=,chip=x64` - `Microsoft.VisualCpp.Redist.14,version=,chip=x86` -3. Run the VC Redist installers: +3. Run: - `vc_redist.x64.exe` - `vc_redist.x86.exe` 4. Retry the Visual Studio Installer. @@ -110,38 +110,38 @@ If the manual installation fails, follow [methods 1 and 2](#method-1). This method helps in case the installer metadata is corrupted, deleting the installer folder forces the Visual Studio Installer to regenerate it. 1. Download `VisualStudioSetup.exe` from . -2. Delete the folder `C:\Program Files (x86)\Microsoft Visual Studio\Installer`, you may be prompted to run this operation as Administrator. +2. Delete the folder `C:\Program Files (x86)\Microsoft Visual Studio\Installer`, you might be prompted to run this operation as Administrator. 3. Run `VisualStudioSetup.exe`. ## Common issues -### Return Code 1603 +### Return code 1603 Return code 1603 indicates a generic installation failure produced by the Windows Installer during the installation of the Visual C++ Runtime components. -Because many factors can produce a 1603 code, the code by itself does not provide enough information to diagnose the cause of the issue. -Often, the log files produced by the VC Redist installer contain relevant information that may lead to a solution or workaround. +Because many factors can produce a 1603 code, the code by itself doesn't provide enough information to diagnose the cause of the issue. +Often, the log files produced by the vcredistt installer contain relevant information that might lead to a solution or workaround. -The [Common issues](#common-issues) section describes examples of how to diagnose common installation errors and steps that may resolve them. -If your issue isn't found here, then follow the instructions to [report an issue in the Visual C++ Redistributable installer](#report-a-vc-redist-installation-problem). +The [Common issues](#common-issues) section describes examples of how to diagnose common installation errors and steps that might resolve them. +If your issue isn't found here, then follow the instructions to [report an issue in the Visual C++ Redistributable installer](#report-a-visual-c-redistributable-installation-problem). -### Access Denied +### Access denied -An issue occurs during installation of VC Redist failing with return code 5. +An issue occurs during installation of vcredist failing with return code 5. The error code typically indicates a permissions issue; specifically, an access denied issue. **Steps to resolve** 1. Disable antivirus, group policies, and firewalls temporarily. -2. Run the VC Redist installer. +2. Run the vcredist installer. 3. Reenable any disabled protection software. -If the installation fails, try to run the VC Redist installer as Administrator. +If the installation fails, try to run the vcredist installer as Administrator. ### File is locked -An issue occurs during the installation of VC Redist failing with return code 32. -Likely causes include blocked permissions, interference from antivirus or third-party software, group policies, or corrupted files. +An issue occurs during the installation of vcredist failing with return code 32. +Likely causes include blocked permissions, interference from antivirus, group policies, or corrupted files. **Steps to resolve** @@ -152,32 +152,27 @@ If the installation fails, try to restart your PC to release any locked files. ### Corrupt or invalid installer package -The issue involves an error during installation of VC Redist using the Visua Studio Installer with error code 1620. +The issue involves an error during installation of vcredist using the Visual Studio Installer with error code 1620. Error code 1620 indicates that a Windows Installer package couldn't be opened, likely due to corruption or invalid files. -One or more of these error codes are present in the VC Redist logs: +One or more of these error codes are present in the logs: -- Error code 1620: indicates that the Windows Installer package could not be opened. +- Error code 1620: indicates that the Windows Installer package couldn't be opened. - Error code 0x80091007: several payloads failed verification due to hash mismatches. -- Errof code 0x80070654: occurs when an MSI package fails to execute. +- Error code 0x80070654: occurs when an MSI package fails to execute. **Steps to resolve** -Methods 5, 6, and 7 in the [General troubleshoot steps](#file-is-locked) may help solve this issue by cleaning the package cache. +Methods 5, 6, and 7 in the [General troubleshoot steps](#file-is-locked) might help solve this issue by cleaning the package cache. -### Older Version Cannot Be Removed +### Older version can't be removed -A corrupted Windows Installer cache produces error code 1714, indicating a failure to remove a previous version of VC Redist. +A corrupted Windows Installer cache produces error code 1714, indicating a failure to remove a previous version of vcredist. The presence of these error messages indicates a corrupted cache. > [!NOTE] -> Tiemstamps have been rmoved from the log file examples to condense the output -> and present only the relevant information. - -> [!NOTE] -> The product's unique identifiers (GUIDs) on these examples can be different -> depending on the product version being installed. +> Timestamps are removed from these examples to condense the output. In `dd_vcredist__.log` @@ -210,30 +205,29 @@ Error 1714. The older version of Microsoft Visual C++ 2022 X64 Minimum Runtime - **Steps to resolve** -From the log files, take note of the VC Redist version causing the issue. +From the log files, take note of the vcredist version causing the issue. Method 1: Use the Windows Installer. -1. Try using the Windows Installer to manually remove the old VC Redist version. +1. Try using the Windows Installer to manually remove the old vcredist version. If prompted, let the Windows Installer Troubleshooter attempt to fix the issue. 2. Retry the installation. Method 2: Manually remove the old version. -1. Download the VC Redist installer for the old version by following the steps in - [Download old versions of the Visual C++ Redistributable Installer](#old-vcredist-versions) -2. Run the installer to uninstall the old VC Redist. +1. Download the vcredist installer for the old version by following the steps in + [Download old versions of the Visual C++ Redistributable installer](#old-vcredist-versions) +2. Run the installer to uninstall the old vcredist. 3. Retry the installation. -## Download old versions of the Visual C++ Redistributable Installer +## Download old versions of the Visual C++ Redistributable installer > [!WARNING] -> Never install a Visual C++ Redistributable Installer that wasn't downloaded from a Microsoft site. -> Only install packages signed by Microsoft. +> Never install a Visual C++ Redistributable installer that wasn't downloaded from a Microsoft site. -The VC Redist installer can be downloaded from [my.visualstudio.com](), search for Visual C++ Redistributable +The vcredist installer can be downloaded from [my.visualstudio.com](), search for Visual C++ Redistributable -The latest supported VC Redist version for each version of Visual Studio can be found in [this article](/cpp/windows/latest-supported-vc-redist). +The latest supported vcredist version for each version of Visual Studio can be found in [this article](/cpp/windows/latest-supported-vc-redist). To access older or legacy versions follow these steps: @@ -257,21 +251,20 @@ For example: The download links use the `https://aka.ms/vs/15/release//VC_redist.exe` pattern. For example: -If the aka.ms links don't work, you may be able to find the version you're looking for through a Bing search. +If the aka.ms links don't work, you might be able to find the version you're looking for through a Bing search. However, make sure that the download comes from a Microsoft site and that the installer is signed by Microsoft. -## Report a VC Redist installation problem +## Report a Visual C++ Redistributable installation problem -The list of [common issues](#common-issues) has been collected from feedback reported to Microsoft through [Developer Community](). +The list of [common issues](#common-issues) was collected from feedback reported to Microsoft through [Developer Community](). -If you encounter an issue not found in that section, or if your issue isn't resolved by the steps in this troubleshooting guide. -Use the [Report a Problem]() form to create a new feedback item. +If you encounter an issue not found in that section, or if the steps in this troubleshooting guide don't resolve your issue. Use the [Report a Problem]() form to create a new feedback item. -Your report should include as much information as possible about your environment. Please include: +Your report must include the following information about your environment: -- Version of VC Redist you are trying to install. -- If upgrading, version of previously installed VC Redist installations. +- Version of vcredist you're trying to install. +- If upgrading, version of previously installed vcredist installations. - If installing through the Visual Studio Installer, version of the VS Installer. - Logs collected by following the steps in the [Collect failure logs](#collect-failure-logs) section. -Feedback without this information, especially without logs, is non-actionable and will be closed. +Feedback without this information, especially without logs, is nonactionable and might be closed if additional information is not submitted promptly. From b020f1780838196cfba122f92941d99c602cb34d Mon Sep 17 00:00:00 2001 From: Hulon Jenkins <109993038+HulonJenkins@users.noreply.github.com> Date: Tue, 10 Feb 2026 11:55:22 -0800 Subject: [PATCH 2242/2255] Add preservenone.md calling convention doc --- ...argument-passing-and-naming-conventions.md | 1 + docs/cpp/preservenone.md | 70 +++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 docs/cpp/preservenone.md diff --git a/docs/cpp/argument-passing-and-naming-conventions.md b/docs/cpp/argument-passing-and-naming-conventions.md index aea3e8d3a15..d2929781fc0 100644 --- a/docs/cpp/argument-passing-and-naming-conventions.md +++ b/docs/cpp/argument-passing-and-naming-conventions.md @@ -31,6 +31,7 @@ The following calling conventions are supported by the Visual C/C++ compiler. |[__fastcall](../cpp/fastcall.md)|Callee|Stored in registers, then pushed on stack| |[__thiscall](../cpp/thiscall.md)|Callee|Pushed on stack; **`this`** pointer stored in ECX| |[__vectorcall](../cpp/vectorcall.md)|Callee|Stored in registers, then pushed on stack in reverse order (right to left)| +|[__preserve_none](../cpp/preservenone.md)|Callee|Stored in registers only| For related information, see [Obsolete Calling Conventions](../cpp/obsolete-calling-conventions.md). diff --git a/docs/cpp/preservenone.md b/docs/cpp/preservenone.md new file mode 100644 index 00000000000..97a40d3a453 --- /dev/null +++ b/docs/cpp/preservenone.md @@ -0,0 +1,70 @@ +# __preserve_none + +**Microsoft Specific** + +> [!IMPORTANT] +> The **`__preserve_none`** calling convention is experimental and subject to change in future releases. Use at your own risk. + +The **`__preserve_none`** calling convention specifies that arguments to functions are to be passed in registers, with most general-purpose registers treated as volatile. This calling convention is only supported for C programs and only applies to the x64 architecture. + +This calling convention is designed to minimize register spilling and improve performance. + +The following list shows the implementation of this calling convention. + +| Element | Implementation | +|---------|----------------| +| Argument-passing order | Arguments are passed in up to 10 registers in the following order: r13, r14, r15, rbx, rsi, rdi, r9, r8, rdx, rcx. If a hidden parameter is required for struct returns, it is passed in r13 (the first parameter register), reducing available parameter registers to 9. Registers r10-r12 are reserved for various CRT and Windows runtimes. All parameters must be passed through registers; stack-based parameters are not currently supported. | +| Register allocation strategy | Registers rcx, rdx, r8, and r9 are allocated towards the end and in reverse order to reduce register spilling. | +| Argument limit | Functions are restricted to a maximum of 10 parameters. An error is generated if this limit is exceeded. | +| Return value convention | Follows the regular x64 calling convention rules. Scalar return values are returned in rax. Structs of size 1, 2, 4, or 8 bytes are returned through the rax register. For structs of other sizes, a pointer to memory allocated by the caller and passed through the hidden parameter is returned in rax. | +| Volatile registers | All general-purpose registers except rsp (stack pointer) and rbp (base pointer) are treated as volatile and do not need to be preserved across function calls. While r10 and r11 are volatile, they are not used for parameter passing to maintain compatibility with existing programs. | +| Nonvolatile registers | Only rsp, rbp, and r12 are nonvolatile. | +| Stack alignment | The stack must maintain 16-byte alignment. | +| Frame pointer | The rbp register and frame chain follow the /Gy switch settings. | +| Stack-maintenance responsibility | The callee is responsible for cleaning up its own stack space. | +| Shadow space | A 32-byte shadow space is reserved on the stack to maintain compatibility with profilers and debugging tools. | +| Floating-point support | Floating-point parameters are not supported in the current version. | +| Name-decoration convention | Function names are decorated with @@_A suffix. | +| Case-translation convention | No case translation performed. | + +> [!NOTE] +> The number of registers used for parameter passing may change in future releases. + +## Restrictions and Limitations + +The **`__preserve_none`** calling convention has the following restrictions: + +- **C only**: Only supported for C programs. +- **x64 only**: Only the x64 backend provides support for this calling convention. +- **No floating-point**: Floating-point parameters are not supported. +- **No variadic functions**: Variadic functions (varargs) are not supported. +- **Parameter limit**: Maximum of 10 parameters, all passed through registers. + +## Use Cases + +The **`__preserve_none`** calling convention is designed for performance-critical scenarios where: + +- Most functions in the codebase use the **`__preserve_none`** calling convention +- Used in conjunction with `msvc::musttail` to tail call between functions with no stack usage +- Minimizing register spilling is important for performance +- The codebase is compatible with treating most registers as volatile + +## Example + +In the following example, the function `ProcessData` uses the **`__preserve_none`** calling convention: + +```c +// Example of the __preserve_none keyword +void __preserve_none ProcessData(int a, int b, int c, int d, int e); + +// Example of the __preserve_none keyword on function pointer +typedef int (__preserve_none *callback_ptr)(void* context, int value, int flags); +``` + +**END Microsoft Specific** + +## See also + +[Argument Passing and Naming Conventions](argument-passing-and-naming-conventions?view=msvc-170) +[x64 Calling Convention](../build/x64-calling-convention?view=msvc-170) +[Keywords](keywords-cpp?view=msvc-170) From dfadcda6beb4adbbed42bf0613369e06d1d8d8f8 Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Tue, 10 Feb 2026 13:26:32 -0800 Subject: [PATCH 2243/2255] Replace vcredist -> VC Redist --- ...oubleshoot-vcredist-installation-issues.md | 50 +++++++++---------- 1 file changed, 24 insertions(+), 26 deletions(-) diff --git a/docs/windows/troubleshoot-vcredist-installation-issues.md b/docs/windows/troubleshoot-vcredist-installation-issues.md index 974fcf64fa5..d06ce7b7985 100644 --- a/docs/windows/troubleshoot-vcredist-installation-issues.md +++ b/docs/windows/troubleshoot-vcredist-installation-issues.md @@ -9,7 +9,7 @@ helpviewer_keywords: [ "redist", "vcredist", "Visual [C++] redistributable", "VC --- # Troubleshoot Visual C++ Redistributable installation issues -This guide is for users experiencing issues while installing the Visual C++ Runtime components using the Visual C++ Redistributable (vcredist) installer or the Visual Studio (VS) Installer. +This guide is for users experiencing issues while installing the Visual C++ Runtime components using the Visual C++ Redistributable (VC Redist) installer or the Visual Studio (VS) Installer. If you're experiencing such issues, we recommend that you first attempt installing the [latest version of the Visual C++ Redistributable](latest-supported-vc-redist.md). @@ -21,15 +21,13 @@ The first step to diagnose an issue with the Visual C++ Redistributable installe 2. Run `Collect.exe`. 3. Extract the contents of `%TEMP%/vscollect.zip`. -Once you extract `vscollect.zip`, the vcredist logs are located inside the `Temp` folder. The relevant log files are prefixed with the pattern `dd_vcredist__yyyyMMddHHmmss`. - -The vcredist logs are useful to diagnose common installation issues. +Once you extract `vscollect.zip`, the VC Redist logs are located inside the `Temp` folder. The relevant log files are prefixed with the pattern `dd_vcredist__yyyyMMddHHmmss`. ### Other log locations -The vcredist installer is often executed as a prerequisite of other products, in such cases the installation log might be found in a different path. +The VC Redist installer is often executed as a prerequisite of other products, in such cases the installation log might be found in a different path. -For example, [Configuration Manager](/intune/configmgr/core/understand/introduction) upgrades vcredist as part of its own upgrade process by running `vcredist_x64.exe` with the `/l` option that overrides the default log location. +For example, [Configuration Manager](/intune/configmgr/core/understand/introduction) upgrades VC Redist as part of its own upgrade process by running `vcredist_x64.exe` with the `/l` option that overrides the default log location. In such cases, the path to the logs can be found by reading that product's own logs: @@ -47,11 +45,11 @@ In such cases, the path to the logs can be found by reading that product's own l ## General troubleshooting steps -This section describes general troubleshooting methods you can try to resolve issues with the vcredist installer. +This section describes general troubleshooting methods you can try to resolve issues with the VC Redist installer. ### Method 1: Disable antivirus software temporarily -Security products often block installation of vcredist components. +Security products often block installation of VC Redist components. 1. Turn off Windows Defender real-time protection. 2. Disable any corporate endpoint protection temporarily (Symantec, McAfee, etc.). @@ -62,7 +60,7 @@ Security products often block installation of vcredist components. File-access failures are heavily correlated with insufficient permissions. -1. Right-click the vcredist installer and select **Run as administrator**. +1. Right-click the VC Redist installer and select **Run as administrator**. 2. Retry the installation. ### Method 3: Check for Windows System Updates @@ -74,7 +72,7 @@ On rare occasions, outdated system components can cause installation issues. 3. Retry the installation. > [!IMPORTANT] -> The following troubleshooting methods apply when vcredist is installed as a component of the Visual Studio Installer. +> The following troubleshooting methods apply when VC Redist is installed as a component of the Visual Studio Installer. ### Method 4: Manually Run the Visual C++ Redistributable installer @@ -120,27 +118,27 @@ This method helps in case the installer metadata is corrupted, deleting the inst Return code 1603 indicates a generic installation failure produced by the Windows Installer during the installation of the Visual C++ Runtime components. Because many factors can produce a 1603 code, the code by itself doesn't provide enough information to diagnose the cause of the issue. -Often, the log files produced by the vcredistt installer contain relevant information that might lead to a solution or workaround. +Often, the log files produced by the VC Redistt installer contain relevant information that might lead to a solution or workaround. The [Common issues](#common-issues) section describes examples of how to diagnose common installation errors and steps that might resolve them. If your issue isn't found here, then follow the instructions to [report an issue in the Visual C++ Redistributable installer](#report-a-visual-c-redistributable-installation-problem). ### Access denied -An issue occurs during installation of vcredist failing with return code 5. +An issue occurs during installation of VC Redist failing with return code 5. The error code typically indicates a permissions issue; specifically, an access denied issue. **Steps to resolve** 1. Disable antivirus, group policies, and firewalls temporarily. -2. Run the vcredist installer. +2. Run the VC Redist installer. 3. Reenable any disabled protection software. -If the installation fails, try to run the vcredist installer as Administrator. +If the installation fails, try to run the VC Redist installer as Administrator. ### File is locked -An issue occurs during the installation of vcredist failing with return code 32. +An issue occurs during the installation of VC Redist failing with return code 32. Likely causes include blocked permissions, interference from antivirus, group policies, or corrupted files. **Steps to resolve** @@ -152,7 +150,7 @@ If the installation fails, try to restart your PC to release any locked files. ### Corrupt or invalid installer package -The issue involves an error during installation of vcredist using the Visual Studio Installer with error code 1620. +The issue involves an error during installation of VC Redist using the Visual Studio Installer with error code 1620. Error code 1620 indicates that a Windows Installer package couldn't be opened, likely due to corruption or invalid files. One or more of these error codes are present in the logs: @@ -167,7 +165,7 @@ Methods 5, 6, and 7 in the [General troubleshoot steps](#file-is-locked) might h ### Older version can't be removed -A corrupted Windows Installer cache produces error code 1714, indicating a failure to remove a previous version of vcredist. +A corrupted Windows Installer cache produces error code 1714, indicating a failure to remove a previous version of VC Redist. The presence of these error messages indicates a corrupted cache. @@ -205,19 +203,19 @@ Error 1714. The older version of Microsoft Visual C++ 2022 X64 Minimum Runtime - **Steps to resolve** -From the log files, take note of the vcredist version causing the issue. +From the log files, take note of the VC Redist version causing the issue. Method 1: Use the Windows Installer. -1. Try using the Windows Installer to manually remove the old vcredist version. +1. Try using the Windows Installer to manually remove the old VC Redist version. If prompted, let the Windows Installer Troubleshooter attempt to fix the issue. 2. Retry the installation. Method 2: Manually remove the old version. -1. Download the vcredist installer for the old version by following the steps in +1. Download the VC Redist installer for the old version by following the steps in [Download old versions of the Visual C++ Redistributable installer](#old-vcredist-versions) -2. Run the installer to uninstall the old vcredist. +2. Run the installer to uninstall the old VC Redist. 3. Retry the installation. ## Download old versions of the Visual C++ Redistributable installer @@ -225,9 +223,9 @@ Method 2: Manually remove the old version. > [!WARNING] > Never install a Visual C++ Redistributable installer that wasn't downloaded from a Microsoft site. -The vcredist installer can be downloaded from [my.visualstudio.com](), search for Visual C++ Redistributable +The VC Redist installer can be downloaded from [my.visualstudio.com](), search for Visual C++ Redistributable -The latest supported vcredist version for each version of Visual Studio can be found in [this article](/cpp/windows/latest-supported-vc-redist). +The latest supported VC Redist version for each version of Visual Studio can be found in [this article](/cpp/windows/latest-supported-vc-redist). To access older or legacy versions follow these steps: @@ -262,9 +260,9 @@ If you encounter an issue not found in that section, or if the steps in this tro Your report must include the following information about your environment: -- Version of vcredist you're trying to install. -- If upgrading, version of previously installed vcredist installations. +- Version of VC Redist you're trying to install. +- If upgrading, version of previously installed VC Redist installations. - If installing through the Visual Studio Installer, version of the VS Installer. - Logs collected by following the steps in the [Collect failure logs](#collect-failure-logs) section. -Feedback without this information, especially without logs, is nonactionable and might be closed if additional information is not submitted promptly. +Feedback without this information, especially without logs, is nonactionable and might be closed if additional information isn't submitted promptly. From eb5fd54000a63a779ed3fe033b8058a54c73c239 Mon Sep 17 00:00:00 2001 From: Hulon Jenkins <109993038+HulonJenkins@users.noreply.github.com> Date: Tue, 10 Feb 2026 14:14:45 -0800 Subject: [PATCH 2244/2255] Add __preserve_none to more file locations --- docs/build/reference/decorated-names.md | 1 + docs/c-language/summary-of-declarations.md | 4 ++-- docs/cpp/toc.yml | 2 ++ .../compiler-errors-2/compiler-errors-c7500-through-c7999.md | 1 + docs/error-messages/tool-errors/name-decoration.md | 1 + 5 files changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/build/reference/decorated-names.md b/docs/build/reference/decorated-names.md index 6370302c0d6..e1742a83dc8 100644 --- a/docs/build/reference/decorated-names.md +++ b/docs/build/reference/decorated-names.md @@ -57,6 +57,7 @@ The form of decoration for a C function depends on the calling convention used i | **`__stdcall`** | Leading underscore (**`_`**) and a trailing at sign (**`@`**) followed by the number of bytes in the parameter list in decimal | | **`__fastcall`** | Leading and trailing at signs (**`@`**) followed by a decimal number representing the number of bytes in the parameter list | | **`__vectorcall`** | Two trailing at signs (**`@@`**) followed by a decimal number of bytes in the parameter list | +| **`__preserve_none`** | Two trailing at signs, an underscore and the 'A' character (**`@@_A`**) | For ARM64EC functions with C linkage (whether compiled as C or by using `extern "C"`), a **`#`** is prepended to the decorated name. diff --git a/docs/c-language/summary-of-declarations.md b/docs/c-language/summary-of-declarations.md index 117a5baaaab..35c95662840 100644 --- a/docs/c-language/summary-of-declarations.md +++ b/docs/c-language/summary-of-declarations.md @@ -21,7 +21,7 @@ ms.assetid: 53a5e9e5-1a33-40b5-9dea-7f669b479329  *`attribute`*1 *`attribute-seq`*opt1 *`attribute`*1, 2: one of\ - **`__asm`** **`__based`** **`__cdecl`** **`__clrcall`** **`__fastcall`** **`__inline`** **`__stdcall`** **`__thiscall`** **`__vectorcall`** + **`__asm`** **`__based`** **`__cdecl`** **`__clrcall`** **`__fastcall`** **`__inline`** **`__stdcall`** **`__thiscall`** **`__vectorcall`** **`__preserve_none`** *`init-declarator-list`*:\  *`init-declarator`*\ @@ -209,7 +209,7 @@ ms.assetid: 53a5e9e5-1a33-40b5-9dea-7f669b479329  **`_Static_assert`** **`(`** *`constant-expression`* **`,`** *`string-literal`* **`)`** **`;`** 1 This grammar element is Microsoft-specific.\ -2 For more information about these elements, see [`__asm`](../assembler/inline/asm.md), [`__clrcall`](../cpp/clrcall.md), [`__stdcall`](../cpp/stdcall.md), [`__based`](../cpp/based-grammar.md), [`__fastcall`](../cpp/fastcall.md), [`__thiscall`](../cpp/thiscall.md), [`__cdecl`](../cpp/cdecl.md), [`__inline`](../cpp/inline-functions-cpp.md), and [`__vectorcall`](../cpp/vectorcall.md).\ +2 For more information about these elements, see [`__asm`](../assembler/inline/asm.md), [`__clrcall`](../cpp/clrcall.md), [`__stdcall`](../cpp/stdcall.md), [`__based`](../cpp/based-grammar.md), [`__fastcall`](../cpp/fastcall.md), [`__thiscall`](../cpp/thiscall.md), [`__cdecl`](../cpp/cdecl.md), [`__inline`](../cpp/inline-functions-cpp.md), [`__preserve_none`](../cpp/preservenone.md) and [`__vectorcall`](../cpp/vectorcall.md).\ 3 This style is obsolete. ## See also diff --git a/docs/cpp/toc.yml b/docs/cpp/toc.yml index 1c9d0872d8e..1f17ade4e51 100644 --- a/docs/cpp/toc.yml +++ b/docs/cpp/toc.yml @@ -644,6 +644,8 @@ items: href: ../cpp/thiscall.md - name: __vectorcall href: ../cpp/vectorcall.md + - name: __preserve_none + href: ../cpp/preserve-none.md - name: "Calling example: Function prototype and call" items: - name: "Calling example: Function prototype and call" diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md b/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md index 5af9b70e4ff..96f98965178 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md @@ -241,6 +241,7 @@ The articles in this section of the documentation explain a subset of the error | Compiler error C7740 | cannot jump to case label | | Compiler error C7741 | ABI inconsistency: '*function*' was originally assumed to use '`C`' return semantics but now it requires '`C++`' return semantics | | [Compiler error C7742](compiler-error-c7742.md) | '*identifier*': a forward declaration of an enum can only use a simple identifier | +| Compiler error C7743 | `__preserve_none` calling convention is not supported | | Compiler error C7800 | duplicate explicit instantiation definition of '*name*' | | Compiler error C7801 | '*function*': if one declaration of '*identifier*' has the '`[[msvc::disptach]]`' attribute then all functions must have the attribute | | Compiler error C7802 | '*identifier*': a capability must resolve to an enumerator | diff --git a/docs/error-messages/tool-errors/name-decoration.md b/docs/error-messages/tool-errors/name-decoration.md index b6f77174881..2a4b3e4f6cf 100644 --- a/docs/error-messages/tool-errors/name-decoration.md +++ b/docs/error-messages/tool-errors/name-decoration.md @@ -19,6 +19,7 @@ The following table shows the linker name for various calling conventions. |Fast call naming convention (**`__fastcall`**)|`@test@0`|`?test@@YIXXZ`| |Standard call naming convention (**`__stdcall`**)|`_test@0`|`?test@@YGXXZ`| |Vector call naming convention (**`__vectorcall`**)|`test@@0`|`?test@@YQXXZ`| +|Preserve None naming convention (**`__preserve_none`**)|`test@@_A`|`NA`| Use `extern "C"` to call a C function from C++. `extern "C"` forces use of the C naming convention for non-class C++ functions. Be aware of compiler switches **/Tc** or **/Tp**, which tell the compiler to ignore the filename extension and compile the file as C or C++, respectively. These options may cause linker names you don't expect. From 91416dd351a90cca8d69e81833706c00c67ba670 Mon Sep 17 00:00:00 2001 From: Hulon Jenkins <109993038+HulonJenkins@users.noreply.github.com> Date: Tue, 10 Feb 2026 16:04:10 -0800 Subject: [PATCH 2245/2255] More PR feedback --- docs/cpp/preservenone.md | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/docs/cpp/preservenone.md b/docs/cpp/preservenone.md index 97a40d3a453..f2caab2b0b2 100644 --- a/docs/cpp/preservenone.md +++ b/docs/cpp/preservenone.md @@ -3,7 +3,7 @@ **Microsoft Specific** > [!IMPORTANT] -> The **`__preserve_none`** calling convention is experimental and subject to change in future releases. Use at your own risk. +> The **`__preserve_none`** calling convention is experimental and subject to change. The **`__preserve_none`** calling convention specifies that arguments to functions are to be passed in registers, with most general-purpose registers treated as volatile. This calling convention is only supported for C programs and only applies to the x64 architecture. @@ -14,28 +14,25 @@ The following list shows the implementation of this calling convention. | Element | Implementation | |---------|----------------| | Argument-passing order | Arguments are passed in up to 10 registers in the following order: r13, r14, r15, rbx, rsi, rdi, r9, r8, rdx, rcx. If a hidden parameter is required for struct returns, it is passed in r13 (the first parameter register), reducing available parameter registers to 9. Registers r10-r12 are reserved for various CRT and Windows runtimes. All parameters must be passed through registers; stack-based parameters are not currently supported. | -| Register allocation strategy | Registers rcx, rdx, r8, and r9 are allocated towards the end and in reverse order to reduce register spilling. | +| Register allocation strategy | To help minimize register spilling, the allocator assigns r9, r8, rdx, and rcx only after other registers have been used. | | Argument limit | Functions are restricted to a maximum of 10 parameters. An error is generated if this limit is exceeded. | | Return value convention | Follows the regular x64 calling convention rules. Scalar return values are returned in rax. Structs of size 1, 2, 4, or 8 bytes are returned through the rax register. For structs of other sizes, a pointer to memory allocated by the caller and passed through the hidden parameter is returned in rax. | | Volatile registers | All general-purpose registers except rsp (stack pointer) and rbp (base pointer) are treated as volatile and do not need to be preserved across function calls. While r10 and r11 are volatile, they are not used for parameter passing to maintain compatibility with existing programs. | | Nonvolatile registers | Only rsp, rbp, and r12 are nonvolatile. | | Stack alignment | The stack must maintain 16-byte alignment. | -| Frame pointer | The rbp register and frame chain follow the /Gy switch settings. | +| Frame pointer | The rbp register and frame chain follow the [/Gy switch](../build/reference/gy-enable-function-level-linking.md) settings. | | Stack-maintenance responsibility | The callee is responsible for cleaning up its own stack space. | -| Shadow space | A 32-byte shadow space is reserved on the stack to maintain compatibility with profilers and debugging tools. | -| Floating-point support | Floating-point parameters are not supported in the current version. | +| Shadow space | A 32 byte shadow space is reserved on the stack to maintain compatibility with profilers and debugging tools. *(Shadow space is a reserved area on the stack where register parameters can be spilled if needed. It's typically 32 bytes (4 registers × 8 bytes each) reserved by the caller for the first 4 register parameters.)* | +| Floating-point support | Floating-point parameters are not supported. | | Name-decoration convention | Function names are decorated with @@_A suffix. | | Case-translation convention | No case translation performed. | -> [!NOTE] -> The number of registers used for parameter passing may change in future releases. - ## Restrictions and Limitations The **`__preserve_none`** calling convention has the following restrictions: - **C only**: Only supported for C programs. -- **x64 only**: Only the x64 backend provides support for this calling convention. +- **x64 only**: Only supported on x64. - **No floating-point**: Floating-point parameters are not supported. - **No variadic functions**: Variadic functions (varargs) are not supported. - **Parameter limit**: Maximum of 10 parameters, all passed through registers. From f3077d8638b52539e1901cdf0b6db21b8fad50ce Mon Sep 17 00:00:00 2001 From: Hulon Jenkins <109993038+HulonJenkins@users.noreply.github.com> Date: Wed, 11 Feb 2026 10:14:22 -0800 Subject: [PATCH 2246/2255] Rename to preserve-none.md and other PR feedback --- docs/c-language/summary-of-declarations.md | 2 +- docs/cpp/argument-passing-and-naming-conventions.md | 2 +- docs/cpp/{preservenone.md => preserve-none.md} | 13 ++++++++++--- .../compiler-errors-c7500-through-c7999.md | 2 +- 4 files changed, 13 insertions(+), 6 deletions(-) rename docs/cpp/{preservenone.md => preserve-none.md} (92%) diff --git a/docs/c-language/summary-of-declarations.md b/docs/c-language/summary-of-declarations.md index 35c95662840..975beb742bc 100644 --- a/docs/c-language/summary-of-declarations.md +++ b/docs/c-language/summary-of-declarations.md @@ -209,7 +209,7 @@ ms.assetid: 53a5e9e5-1a33-40b5-9dea-7f669b479329  **`_Static_assert`** **`(`** *`constant-expression`* **`,`** *`string-literal`* **`)`** **`;`** 1 This grammar element is Microsoft-specific.\ -2 For more information about these elements, see [`__asm`](../assembler/inline/asm.md), [`__clrcall`](../cpp/clrcall.md), [`__stdcall`](../cpp/stdcall.md), [`__based`](../cpp/based-grammar.md), [`__fastcall`](../cpp/fastcall.md), [`__thiscall`](../cpp/thiscall.md), [`__cdecl`](../cpp/cdecl.md), [`__inline`](../cpp/inline-functions-cpp.md), [`__preserve_none`](../cpp/preservenone.md) and [`__vectorcall`](../cpp/vectorcall.md).\ +2 For more information about these elements, see [`__asm`](../assembler/inline/asm.md), [`__clrcall`](../cpp/clrcall.md), [`__stdcall`](../cpp/stdcall.md), [`__based`](../cpp/based-grammar.md), [`__fastcall`](../cpp/fastcall.md), [`__thiscall`](../cpp/thiscall.md), [`__cdecl`](../cpp/cdecl.md), [`__inline`](../cpp/inline-functions-cpp.md), [`__preserve_none`](../cpp/preserve-none.md) and [`__vectorcall`](../cpp/vectorcall.md).\ 3 This style is obsolete. ## See also diff --git a/docs/cpp/argument-passing-and-naming-conventions.md b/docs/cpp/argument-passing-and-naming-conventions.md index d2929781fc0..11dfa80a2e9 100644 --- a/docs/cpp/argument-passing-and-naming-conventions.md +++ b/docs/cpp/argument-passing-and-naming-conventions.md @@ -31,7 +31,7 @@ The following calling conventions are supported by the Visual C/C++ compiler. |[__fastcall](../cpp/fastcall.md)|Callee|Stored in registers, then pushed on stack| |[__thiscall](../cpp/thiscall.md)|Callee|Pushed on stack; **`this`** pointer stored in ECX| |[__vectorcall](../cpp/vectorcall.md)|Callee|Stored in registers, then pushed on stack in reverse order (right to left)| -|[__preserve_none](../cpp/preservenone.md)|Callee|Stored in registers only| +|[__preserve_none](../cpp/preserve-none.md)|Callee|Stored in registers only| For related information, see [Obsolete Calling Conventions](../cpp/obsolete-calling-conventions.md). diff --git a/docs/cpp/preservenone.md b/docs/cpp/preserve-none.md similarity index 92% rename from docs/cpp/preservenone.md rename to docs/cpp/preserve-none.md index f2caab2b0b2..94ba81233c8 100644 --- a/docs/cpp/preservenone.md +++ b/docs/cpp/preserve-none.md @@ -1,3 +1,10 @@ +--- +description: "Learn more about: __preserve_none" +title: "__preserve_none" +ms.date: 02/11/2026 +f1_keywords: ["__preserve_none", "register spilling", "non preserving calling convention"] +helpviewer_keywords: ["__preserve_none keyword"] +--- # __preserve_none **Microsoft Specific** @@ -62,6 +69,6 @@ typedef int (__preserve_none *callback_ptr)(void* context, int value, int flags) ## See also -[Argument Passing and Naming Conventions](argument-passing-and-naming-conventions?view=msvc-170) -[x64 Calling Convention](../build/x64-calling-convention?view=msvc-170) -[Keywords](keywords-cpp?view=msvc-170) +[Argument Passing and Naming Conventions](argument-passing-and-naming-conventions.md) +[x64 Calling Convention](../build/x64-calling-convention.md) +[Keywords](keywords-cpp.md) diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md b/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md index 96f98965178..02b5801c7bd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md @@ -241,7 +241,7 @@ The articles in this section of the documentation explain a subset of the error | Compiler error C7740 | cannot jump to case label | | Compiler error C7741 | ABI inconsistency: '*function*' was originally assumed to use '`C`' return semantics but now it requires '`C++`' return semantics | | [Compiler error C7742](compiler-error-c7742.md) | '*identifier*': a forward declaration of an enum can only use a simple identifier | -| Compiler error C7743 | `__preserve_none` calling convention is not supported | +| Compiler error C7743 | [`__preserve_none` calling convention](../../cpp/preserve-none.md) is not supported | | Compiler error C7800 | duplicate explicit instantiation definition of '*name*' | | Compiler error C7801 | '*function*': if one declaration of '*identifier*' has the '`[[msvc::disptach]]`' attribute then all functions must have the attribute | | Compiler error C7802 | '*identifier*': a capability must resolve to an enumerator | From 7b7e5c8de2b8335c90bade7a0d3313b1cc5a248b Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Thu, 12 Feb 2026 00:05:49 +0000 Subject: [PATCH 2247/2255] PR comments and feedback --- docs/windows/latest-supported-vc-redist.md | 4 +++ docs/windows/toc.yml | 2 ++ ...oubleshoot-vcredist-installation-issues.md | 29 +++++++++++-------- 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index 33c92e2fa76..51c36772683 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -20,6 +20,9 @@ ms.author: msaleh > [!NOTE] > Are you here to download Visual Studio? Go to [Visual Studio downloads](https://visualstudio.microsoft.com/downloads/). +> [!NOTE] +> Having issues installing the Visual C++ Redistributable? Check out the [troubleshooting guide](troubleshoot-vcredist-installation-issues.md). + This topic is for developers who need to install the Visual C++ runtime libraries with their app. If you're an end user trying to fix an app by updating the Visual C++ runtime libraries, contact the app vendor for instructions. To find the download you need, choose your version of Visual Studio from the table below. Each link takes you to the appropriate download section. @@ -142,6 +145,7 @@ Download Redistributable files for other languages and architectures from: - [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md) - [How to audit Visual C++ Runtime version usage](redist-version-auditing.md) - [Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq) +- [Troubleshoot Visual C++ Redistributable installation issues](troubleshoot-vcredist-installation-issues.md) **Release notes** diff --git a/docs/windows/toc.yml b/docs/windows/toc.yml index 6b6e16a2dae..b0efca5195d 100644 --- a/docs/windows/toc.yml +++ b/docs/windows/toc.yml @@ -149,6 +149,8 @@ items: href: ../windows/latest-supported-vc-redist.md - name: How to audit Visual C++ Runtime version usage href: ../windows/redist-version-auditing.md + - name: Troubleshoot Visual C++ Redistributable installation issues + href: ../windows/troubleshoot-vcredist-installation-issues.md - name: Deployment examples expanded: false items: diff --git a/docs/windows/troubleshoot-vcredist-installation-issues.md b/docs/windows/troubleshoot-vcredist-installation-issues.md index d06ce7b7985..15b6b44e4f5 100644 --- a/docs/windows/troubleshoot-vcredist-installation-issues.md +++ b/docs/windows/troubleshoot-vcredist-installation-issues.md @@ -76,14 +76,12 @@ On rare occasions, outdated system components can cause installation issues. ### Method 4: Manually Run the Visual C++ Redistributable installer -1. Go to `%ProgramData%\Microsoft\VisualStudio\Packages` -2. Open the folders: - - `Microsoft.VisualCpp.Redist.14,version=,chip=x64` - - `Microsoft.VisualCpp.Redist.14,version=,chip=x86` -3. Run: - - `vc_redist.x64.exe` - - `vc_redist.x86.exe` -4. Retry the Visual Studio Installer. +> [!NOTE] +> The VS Installer might prompt for a reboot when VC Redist is installed separately. + +1. Download the [latest VC Redist installer](latest-supported-vc-redist.md). +2. Run the VC Redist installer. +3. Retry the Visual Studio Installer. If the manual installation fails, follow [methods 1 and 2](#method-1). @@ -118,7 +116,7 @@ This method helps in case the installer metadata is corrupted, deleting the inst Return code 1603 indicates a generic installation failure produced by the Windows Installer during the installation of the Visual C++ Runtime components. Because many factors can produce a 1603 code, the code by itself doesn't provide enough information to diagnose the cause of the issue. -Often, the log files produced by the VC Redistt installer contain relevant information that might lead to a solution or workaround. +Often, the log files produced by the VC Redist installer contain relevant information that might lead to a solution or workaround. The [Common issues](#common-issues) section describes examples of how to diagnose common installation errors and steps that might resolve them. If your issue isn't found here, then follow the instructions to [report an issue in the Visual C++ Redistributable installer](#report-a-visual-c-redistributable-installation-problem). @@ -236,17 +234,17 @@ For example: . **Version 14.30 to 14.44** -The download links use the `https://aka.ms/vs/17/release//VC_redist.exe` pattern. +The download links use the `https://aka.ms/vs/17/release//VC_redist..exe` pattern. For example: . **Version 14.20 to 14.29** -The download links use the `https://aka.ms/vs/16/release//VC_redist.exe` pattern. +The download links use the `https://aka.ms/vs/16/release//VC_redist..exe` pattern. For example: **Version 14.10 or later** -The download links use the `https://aka.ms/vs/15/release//VC_redist.exe` pattern. +The download links use the `https://aka.ms/vs/15/release//VC_redist..exe` pattern. For example: If the aka.ms links don't work, you might be able to find the version you're looking for through a Bing search. @@ -266,3 +264,10 @@ Your report must include the following information about your environment: - Logs collected by following the steps in the [Collect failure logs](#collect-failure-logs) section. Feedback without this information, especially without logs, is nonactionable and might be closed if additional information isn't submitted promptly. + +## See also + +- [Latest supported Visual C++ Redistributable downloads](latest-supported-vc-redist.md) +- [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md) +- [How to audit Visual C++ Runtime version usage](redist-version-auditing.md) +- [Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq) From cabdbccde8e57b0d2ad562ee0b7f5723531591f1 Mon Sep 17 00:00:00 2001 From: Hulon Jenkins <109993038+HulonJenkins@users.noreply.github.com> Date: Wed, 11 Feb 2026 16:35:33 -0800 Subject: [PATCH 2248/2255] PR feedback 3 --- docs/build/reference/decorated-names.md | 10 +++++----- docs/cpp/preserve-none.md | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/build/reference/decorated-names.md b/docs/build/reference/decorated-names.md index e1742a83dc8..4b5a674a640 100644 --- a/docs/build/reference/decorated-names.md +++ b/docs/build/reference/decorated-names.md @@ -53,11 +53,11 @@ The form of decoration for a C function depends on the calling convention used i | Calling convention | Decoration | |--|--| -| **`__cdecl`** | Leading underscore (**`_`**) | -| **`__stdcall`** | Leading underscore (**`_`**) and a trailing at sign (**`@`**) followed by the number of bytes in the parameter list in decimal | -| **`__fastcall`** | Leading and trailing at signs (**`@`**) followed by a decimal number representing the number of bytes in the parameter list | -| **`__vectorcall`** | Two trailing at signs (**`@@`**) followed by a decimal number of bytes in the parameter list | -| **`__preserve_none`** | Two trailing at signs, an underscore and the 'A' character (**`@@_A`**) | +| [**`__cdecl`**](../../cpp/cdecl.md) | Leading underscore (**`_`**) | +| [**`__stdcall`**](../../cpp/stdcall.md) | Leading underscore (**`_`**) and a trailing at sign (**`@`**) followed by the number of bytes in the parameter list in decimal | +| [**`__fastcall`**](../../cpp/fastcall.md) | Leading and trailing at signs (**`@`**) followed by a decimal number representing the number of bytes in the parameter list | +| [**`__vectorcall`**](../../cpp/vectorcall.md) | Two trailing at signs (**`@@`**) followed by a decimal number of bytes in the parameter list | +| [**`__preserve_none`**](../../cpp/preserve-none.md) | Two trailing at signs, an underscore and the 'A' character (**`@@_A`**) | For ARM64EC functions with C linkage (whether compiled as C or by using `extern "C"`), a **`#`** is prepended to the decorated name. diff --git a/docs/cpp/preserve-none.md b/docs/cpp/preserve-none.md index 94ba81233c8..8aebac117dc 100644 --- a/docs/cpp/preserve-none.md +++ b/docs/cpp/preserve-none.md @@ -12,13 +12,13 @@ helpviewer_keywords: ["__preserve_none keyword"] > [!IMPORTANT] > The **`__preserve_none`** calling convention is experimental and subject to change. -The **`__preserve_none`** calling convention specifies that arguments to functions are to be passed in registers, with most general-purpose registers treated as volatile. This calling convention is only supported for C programs and only applies to the x64 architecture. +The **`__preserve_none`** calling convention specifies that arguments to functions are to be passed in registers, with most general-purpose registers treated as volatile. This calling convention is only supported for C programs and only applies to x64 code. This calling convention is designed to minimize register spilling and improve performance. -The following list shows the implementation of this calling convention. +The following list shows the behavior of this calling convention. -| Element | Implementation | +| Element | Behavior | |---------|----------------| | Argument-passing order | Arguments are passed in up to 10 registers in the following order: r13, r14, r15, rbx, rsi, rdi, r9, r8, rdx, rcx. If a hidden parameter is required for struct returns, it is passed in r13 (the first parameter register), reducing available parameter registers to 9. Registers r10-r12 are reserved for various CRT and Windows runtimes. All parameters must be passed through registers; stack-based parameters are not currently supported. | | Register allocation strategy | To help minimize register spilling, the allocator assigns r9, r8, rdx, and rcx only after other registers have been used. | @@ -69,6 +69,6 @@ typedef int (__preserve_none *callback_ptr)(void* context, int value, int flags) ## See also -[Argument Passing and Naming Conventions](argument-passing-and-naming-conventions.md) -[x64 Calling Convention](../build/x64-calling-convention.md) +[Argument Passing and Naming Conventions](argument-passing-and-naming-conventions.md)\ +[x64 Calling Convention](../build/x64-calling-convention.md)\ [Keywords](keywords-cpp.md) From 266cf98a4ec8d313c92581ea4812a688742dd63d Mon Sep 17 00:00:00 2001 From: Hulon Jenkins <109993038+HulonJenkins@users.noreply.github.com> Date: Thu, 12 Feb 2026 10:46:43 -0800 Subject: [PATCH 2249/2255] Acrolinx fixes --- docs/cpp/preserve-none.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/cpp/preserve-none.md b/docs/cpp/preserve-none.md index 8aebac117dc..4022e4684e0 100644 --- a/docs/cpp/preserve-none.md +++ b/docs/cpp/preserve-none.md @@ -20,17 +20,17 @@ The following list shows the behavior of this calling convention. | Element | Behavior | |---------|----------------| -| Argument-passing order | Arguments are passed in up to 10 registers in the following order: r13, r14, r15, rbx, rsi, rdi, r9, r8, rdx, rcx. If a hidden parameter is required for struct returns, it is passed in r13 (the first parameter register), reducing available parameter registers to 9. Registers r10-r12 are reserved for various CRT and Windows runtimes. All parameters must be passed through registers; stack-based parameters are not currently supported. | -| Register allocation strategy | To help minimize register spilling, the allocator assigns r9, r8, rdx, and rcx only after other registers have been used. | +| Argument-passing order | Arguments are passed in up to 10 registers in the following order: `r13`, `r14`, `r15`, `rbx`, `rsi`, `rdi`, `r9`, `r8`, `rdx`, `rcx`. If a hidden parameter is required for struct returns, it's passed in `r13` (the first parameter register), reducing available parameter registers to 9. Registers `r10`-`r12` are reserved for various CRT and Windows runtimes. All parameters must be passed through registers; stack-based parameters aren't currently supported. | +| Register allocation strategy | To help minimize register spilling, the allocator assigns `r9`, `r8`, `rdx`, and `rcx` only after other registers have been used. | | Argument limit | Functions are restricted to a maximum of 10 parameters. An error is generated if this limit is exceeded. | -| Return value convention | Follows the regular x64 calling convention rules. Scalar return values are returned in rax. Structs of size 1, 2, 4, or 8 bytes are returned through the rax register. For structs of other sizes, a pointer to memory allocated by the caller and passed through the hidden parameter is returned in rax. | -| Volatile registers | All general-purpose registers except rsp (stack pointer) and rbp (base pointer) are treated as volatile and do not need to be preserved across function calls. While r10 and r11 are volatile, they are not used for parameter passing to maintain compatibility with existing programs. | -| Nonvolatile registers | Only rsp, rbp, and r12 are nonvolatile. | +| Return value convention | Follows the regular x64 calling convention rules. Scalar return values are returned in `rax`. Structs of size 1, 2, 4, or 8 bytes are returned through the `rax` register. For structs of other sizes, a pointer to memory allocated by the caller and passed through the hidden parameter is returned in `rax`. | +| Volatile registers | All general-purpose registers except `rsp` (stack pointer) and `rbp` (base pointer) are treated as volatile and don't need to be preserved across function calls. While `r10` and `r11` are volatile, they aren't used for parameter passing to maintain compatibility with existing programs. | +| Nonvolatile registers | Only `rsp`, `rbp`, and `r12` are nonvolatile. | | Stack alignment | The stack must maintain 16-byte alignment. | -| Frame pointer | The rbp register and frame chain follow the [/Gy switch](../build/reference/gy-enable-function-level-linking.md) settings. | +| Frame pointer | The `rbp` register and frame chain follow the [/Gy switch](../build/reference/gy-enable-function-level-linking.md) settings. | | Stack-maintenance responsibility | The callee is responsible for cleaning up its own stack space. | -| Shadow space | A 32 byte shadow space is reserved on the stack to maintain compatibility with profilers and debugging tools. *(Shadow space is a reserved area on the stack where register parameters can be spilled if needed. It's typically 32 bytes (4 registers × 8 bytes each) reserved by the caller for the first 4 register parameters.)* | -| Floating-point support | Floating-point parameters are not supported. | +| Shadow space | A 32-byte shadow space is reserved on the stack to maintain compatibility with profilers and debugging tools. *(Shadow space is a reserved area on the stack where register parameters can be spilled if needed. It's typically 32-bytes (4 registers × 8 bytes each) reserved by the caller for the first 4 register parameters.)* | +| Floating-point support | Floating-point parameters aren't supported. | | Name-decoration convention | Function names are decorated with @@_A suffix. | | Case-translation convention | No case translation performed. | @@ -40,8 +40,8 @@ The **`__preserve_none`** calling convention has the following restrictions: - **C only**: Only supported for C programs. - **x64 only**: Only supported on x64. -- **No floating-point**: Floating-point parameters are not supported. -- **No variadic functions**: Variadic functions (varargs) are not supported. +- **No floating-point**: Floating-point parameters aren't supported. +- **No variadic functions**: Variadic functions (varargs) aren't supported. - **Parameter limit**: Maximum of 10 parameters, all passed through registers. ## Use Cases @@ -49,7 +49,7 @@ The **`__preserve_none`** calling convention has the following restrictions: The **`__preserve_none`** calling convention is designed for performance-critical scenarios where: - Most functions in the codebase use the **`__preserve_none`** calling convention -- Used in conjunction with `msvc::musttail` to tail call between functions with no stack usage +- Used with `msvc::musttail` to tail call between functions with no stack usage - Minimizing register spilling is important for performance - The codebase is compatible with treating most registers as volatile From 6aed91d23a63f34525c2b5f02ba475c8bc0833a4 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Thu, 12 Feb 2026 11:27:40 -0800 Subject: [PATCH 2250/2255] address acrolinx --- docs/cpp/preserve-none.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cpp/preserve-none.md b/docs/cpp/preserve-none.md index 4022e4684e0..f90d613bc96 100644 --- a/docs/cpp/preserve-none.md +++ b/docs/cpp/preserve-none.md @@ -29,7 +29,7 @@ The following list shows the behavior of this calling convention. | Stack alignment | The stack must maintain 16-byte alignment. | | Frame pointer | The `rbp` register and frame chain follow the [/Gy switch](../build/reference/gy-enable-function-level-linking.md) settings. | | Stack-maintenance responsibility | The callee is responsible for cleaning up its own stack space. | -| Shadow space | A 32-byte shadow space is reserved on the stack to maintain compatibility with profilers and debugging tools. *(Shadow space is a reserved area on the stack where register parameters can be spilled if needed. It's typically 32-bytes (4 registers × 8 bytes each) reserved by the caller for the first 4 register parameters.)* | +| Shadow space | 32 bytes are reserved on the stack as a shadow space to maintain compatibility with profilers and debugging tools. *(Shadow space is a reserved area on the stack where register parameters can be spilled if needed. It's typically 32 bytes (4 registers × 8 bytes each) that the caller reserves for the first four register parameters.)* | | Floating-point support | Floating-point parameters aren't supported. | | Name-decoration convention | Function names are decorated with @@_A suffix. | | Case-translation convention | No case translation performed. | From 302a0dbd9924d352a0bdcf440feae6f7b40c1678 Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Fri, 13 Feb 2026 14:05:01 -0800 Subject: [PATCH 2251/2255] Tyler's feedback --- ...oubleshoot-vcredist-installation-issues.md | 136 ++++++++---------- 1 file changed, 57 insertions(+), 79 deletions(-) diff --git a/docs/windows/troubleshoot-vcredist-installation-issues.md b/docs/windows/troubleshoot-vcredist-installation-issues.md index 15b6b44e4f5..28681b02528 100644 --- a/docs/windows/troubleshoot-vcredist-installation-issues.md +++ b/docs/windows/troubleshoot-vcredist-installation-issues.md @@ -3,7 +3,7 @@ title: "Troubleshoot Visual C++ Redistributable installation issues" description: "Provide steps to diagnose and resolve issues with installing the Visual C++ Redistributable as a standalone installation and as part of the Visual Studio Installer." author: vicroms ms.author: viromer -ms.date: 02/10/2025 +ms.date: 02/12/2026 ms.topic: troubleshooting-general helpviewer_keywords: [ "redist", "vcredist", "Visual [C++] redistributable", "VC Redist" ] --- @@ -11,21 +11,21 @@ helpviewer_keywords: [ "redist", "vcredist", "Visual [C++] redistributable", "VC This guide is for users experiencing issues while installing the Visual C++ Runtime components using the Visual C++ Redistributable (VC Redist) installer or the Visual Studio (VS) Installer. -If you're experiencing such issues, we recommend that you first attempt installing the [latest version of the Visual C++ Redistributable](latest-supported-vc-redist.md). +If you're experiencing such issues, first try installing the [latest version of the Visual C++ Redistributable](latest-supported-vc-redist.md). ## Collect failure logs The first step to diagnose an issue with the Visual C++ Redistributable installer is to collect its failure logs. 1. Download the [Microsoft Visual Studio and .NET Log Collection Tool](). -2. Run `Collect.exe`. -3. Extract the contents of `%TEMP%/vscollect.zip`. +1. Run `Collect.exe`. +1. Extract the contents of `%TEMP%/vscollect.zip`. Once you extract `vscollect.zip`, the VC Redist logs are located inside the `Temp` folder. The relevant log files are prefixed with the pattern `dd_vcredist__yyyyMMddHHmmss`. ### Other log locations -The VC Redist installer is often executed as a prerequisite of other products, in such cases the installation log might be found in a different path. +The VC Redist installer is often executed as a prerequisite of other products. In such cases, the installation log might be found in a different path. For example, [Configuration Manager](/intune/configmgr/core/understand/introduction) upgrades VC Redist as part of its own upgrade process by running `vcredist_x64.exe` with the `/l` option that overrides the default log location. @@ -47,23 +47,23 @@ In such cases, the path to the logs can be found by reading that product's own l This section describes general troubleshooting methods you can try to resolve issues with the VC Redist installer. -### Method 1: Disable antivirus software temporarily +### Disable antivirus software temporarily Security products often block installation of VC Redist components. 1. Turn off Windows Defender real-time protection. -2. Disable any corporate endpoint protection temporarily (Symantec, McAfee, etc.). -3. Retry the installation. -4. Reenable any disabled protection software. +1. Disable any corporate endpoint protection temporarily (Symantec, McAfee, etc.). +1. Retry the installation. +1. Reenable any disabled protection software. -### Method 2: Run the Visual C++ Redistributable installer as Administrator +### Run the Visual C++ Redistributable installer as administrator File-access failures are heavily correlated with insufficient permissions. -1. Right-click the VC Redist installer and select **Run as administrator**. -2. Retry the installation. +1. Right-click the VC Redist installer and select **Run as Administrator**. +1. Retry the installation. -### Method 3: Check for Windows System Updates +### Check for Windows System Updates On rare occasions, outdated system components can cause installation issues. @@ -71,33 +71,32 @@ On rare occasions, outdated system components can cause installation issues. 2. Reboot your PC. 3. Retry the installation. -> [!IMPORTANT] -> The following troubleshooting methods apply when VC Redist is installed as a component of the Visual Studio Installer. +## General troubleshooting steps when using Visual Studio Installer -### Method 4: Manually Run the Visual C++ Redistributable installer +### Manually install Visual C++ Redistributable > [!NOTE] > The VS Installer might prompt for a reboot when VC Redist is installed separately. 1. Download the [latest VC Redist installer](latest-supported-vc-redist.md). -2. Run the VC Redist installer. -3. Retry the Visual Studio Installer. +1. Run the VC Redist installer. +1. Retry the Visual Studio Installer. If the manual installation fails, follow [methods 1 and 2](#method-1). -### Method 5: Clear the Visual Studio Installer cache +### Clear the Visual Studio Installer cache -1. Open `%ProgramData%\Microsoft\VisualStudio\Packages` -2. Delete all files inside the folder to force the Visual Studio Installer to regenerate them. -3. Retry the Visual Studio Installer. +1. Open `%ProgramData%\Microsoft\VisualStudio\Packages`. +1. Delete all files inside the folder to force the Visual Studio Installer to regenerate them. +1. Retry the Visual Studio Installer. -### Method 6: Repair the Visual Studio Installer +### Repair the Visual Studio Installer 1. Go to **Settings** > **Apps** > **Installed Apps** -2. Select **Visual Studio Installer** > **Modify** > **Repair** -3. Retry the Visual Studio Installer. +1. Select **Visual Studio Installer** > **Modify** > **Repair** +1. Retry the Visual Studio Installer. -### Method 7: Delete the Visual Studio Installer folder +### Delete the Visual Studio Installer folder > [!WARNING] > This method requires that you have the Visual Studio Installer Setup downloaded (VisualStudioSetup.exe). @@ -106,8 +105,8 @@ If the manual installation fails, follow [methods 1 and 2](#method-1). This method helps in case the installer metadata is corrupted, deleting the installer folder forces the Visual Studio Installer to regenerate it. 1. Download `VisualStudioSetup.exe` from . -2. Delete the folder `C:\Program Files (x86)\Microsoft Visual Studio\Installer`, you might be prompted to run this operation as Administrator. -3. Run `VisualStudioSetup.exe`. +1. Delete the folder `C:\Program Files (x86)\Microsoft Visual Studio\Installer`, you might be prompted to run this operation as administrator. +1. Run `VisualStudioSetup.exe`. ## Common issues @@ -123,35 +122,32 @@ If your issue isn't found here, then follow the instructions to [report an issue ### Access denied -An issue occurs during installation of VC Redist failing with return code 5. -The error code typically indicates a permissions issue; specifically, an access denied issue. +Installation fails with error code 5. This error code typically indicates a permissions issue; specifically, an access denied issue. **Steps to resolve** 1. Disable antivirus, group policies, and firewalls temporarily. -2. Run the VC Redist installer. -3. Reenable any disabled protection software. +1. Run the VC Redist installer. +1. Re-enable any disabled protection software. -If the installation fails, try to run the VC Redist installer as Administrator. +If the installation fails, try to run the VC Redist installer as administrator. ### File is locked -An issue occurs during the installation of VC Redist failing with return code 32. -Likely causes include blocked permissions, interference from antivirus, group policies, or corrupted files. +Installation fails with error code 32. This error code is tipically caused by locked files, interference from antivirus, group policies, or corrupted files. **Steps to resolve** 1. Close any running software in your PC. -2. Try the methods in [General troubleshooting steps](#general-troubleshooting-steps). +1. Try the methods in [General troubleshooting steps](#general-troubleshooting-steps). If the installation fails, try to restart your PC to release any locked files. ### Corrupt or invalid installer package -The issue involves an error during installation of VC Redist using the Visual Studio Installer with error code 1620. -Error code 1620 indicates that a Windows Installer package couldn't be opened, likely due to corruption or invalid files. +Installation fails with error code 1620. This error code indicates that a Windows Installer package (MSI) couldn't be opened, likely due to corruption or invalid files. -One or more of these error codes are present in the logs: +The presence of these error messages indicates a corrupted cache. - Error code 1620: indicates that the Windows Installer package couldn't be opened. - Error code 0x80091007: several payloads failed verification due to hash mismatches. @@ -159,17 +155,14 @@ One or more of these error codes are present in the logs: **Steps to resolve** -Methods 5, 6, and 7 in the [General troubleshoot steps](#file-is-locked) might help solve this issue by cleaning the package cache. +Try the steps in the [General troubleshooting steps when using Visual Studio Installer](#general-troubleshooting-steps-when-using-visual-studio-installer). ### Older version can't be removed -A corrupted Windows Installer cache produces error code 1714, indicating a failure to remove a previous version of VC Redist. +Installation fails with the error code 1714. This error code indicates a corrupted Windows installre cache that results in failure to remove a previous version of VC Redist. The presence of these error messages indicates a corrupted cache. -> [!NOTE] -> Timestamps are removed from these examples to condense the output. - In `dd_vcredist__.log` ```log @@ -205,56 +198,41 @@ From the log files, take note of the VC Redist version causing the issue. Method 1: Use the Windows Installer. -1. Try using the Windows Installer to manually remove the old VC Redist version. - If prompted, let the Windows Installer Troubleshooter attempt to fix the issue. -2. Retry the installation. +1. Try using the Windows Installer to manually remove the old VC Redist version. If prompted, let the Windows Installer Troubleshooter attempt to fix the issue. +1. Retry the installation. Method 2: Manually remove the old version. -1. Download the VC Redist installer for the old version by following the steps in - [Download old versions of the Visual C++ Redistributable installer](#old-vcredist-versions) -2. Run the installer to uninstall the old VC Redist. -3. Retry the installation. +1. Download the VC Redist installer for the old version. Follow the [steps to download and old version of the VC Redist installer](#old-vcredist-versions) +1. Run the installer to uninstall the old VC Redist. +1. Retry the installation. ## Download old versions of the Visual C++ Redistributable installer > [!WARNING] > Never install a Visual C++ Redistributable installer that wasn't downloaded from a Microsoft site. -The VC Redist installer can be downloaded from [my.visualstudio.com](), search for Visual C++ Redistributable +Download the VC Redist installer from [my.visualstudio.com](). Search for Visual C++ Redistributable on the downloads page. The latest supported VC Redist version for each version of Visual Studio can be found in [this article](/cpp/windows/latest-supported-vc-redist). -To access older or legacy versions follow these steps: - -**Version 14.50 or later** - -The download links use the `https://aka.ms/vs/18/release//VC_redist..exe` pattern. -For example: . - -**Version 14.30 to 14.44** - -The download links use the `https://aka.ms/vs/17/release//VC_redist..exe` pattern. -For example: . - -**Version 14.20 to 14.29** - -The download links use the `https://aka.ms/vs/16/release//VC_redist..exe` pattern. -For example: - -**Version 14.10 or later** +Links for older or legacy versions: -The download links use the `https://aka.ms/vs/15/release//VC_redist..exe` pattern. -For example: +| Version range | Download link template | Example | +|----------------|---------------------------------------------------------------|----------------------------------------------------------------| +| 14.50 or later | `https://aka.ms/vs/18/release//VC_redist..exe` | | +| 14.30 to 14.44 | `https://aka.ms/vs/17/release//VC_redist..exe` | | +| 14.20 to 14.29 | `https://aka.ms/vs/16/release//VC_redist..exe` | | +| 14.10 to 14.19 | `https://aka.ms/vs/15/release//VC_redist..exe` | | -If the aka.ms links don't work, you might be able to find the version you're looking for through a Bing search. +You might be able to find installers for older versions through a Bing search. However, make sure that the download comes from a Microsoft site and that the installer is signed by Microsoft. ## Report a Visual C++ Redistributable installation problem The list of [common issues](#common-issues) was collected from feedback reported to Microsoft through [Developer Community](). -If you encounter an issue not found in that section, or if the steps in this troubleshooting guide don't resolve your issue. Use the [Report a Problem]() form to create a new feedback item. +If you encounter an issue not found in that section, or if the steps in this troubleshooting guide don't resolve your issue, use the [Report a Problem]() form to create a new feedback item. Your report must include the following information about your environment: @@ -263,11 +241,11 @@ Your report must include the following information about your environment: - If installing through the Visual Studio Installer, version of the VS Installer. - Logs collected by following the steps in the [Collect failure logs](#collect-failure-logs) section. -Feedback without this information, especially without logs, is nonactionable and might be closed if additional information isn't submitted promptly. +Feedback without this information, especially without logs, is nonactionable and may be closed if additional information isn't submitted promptly. ## See also -- [Latest supported Visual C++ Redistributable downloads](latest-supported-vc-redist.md) -- [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md) -- [How to audit Visual C++ Runtime version usage](redist-version-auditing.md) -- [Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq) +[Latest supported Visual C++ Redistributable downloads](latest-supported-vc-redist.md)\ +[C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md)\ +[How to audit Visual C++ Runtime version usage](redist-version-auditing.md)\ +[Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq) From b67997ce6b8bc0429e2b65991e041618b4a3ecba Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Fri, 13 Feb 2026 14:16:34 -0800 Subject: [PATCH 2252/2255] Add common errors at a glance section suggested by Tyler --- ...troubleshoot-vcredist-installation-issues.md | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/docs/windows/troubleshoot-vcredist-installation-issues.md b/docs/windows/troubleshoot-vcredist-installation-issues.md index 28681b02528..1b812a36678 100644 --- a/docs/windows/troubleshoot-vcredist-installation-issues.md +++ b/docs/windows/troubleshoot-vcredist-installation-issues.md @@ -82,7 +82,7 @@ On rare occasions, outdated system components can cause installation issues. 1. Run the VC Redist installer. 1. Retry the Visual Studio Installer. -If the manual installation fails, follow [methods 1 and 2](#method-1). +If the manual installation fails, follow the [general troubleshooting steps for the standalone VC Redist installer](#general-troubleshooting-steps). ### Clear the Visual Studio Installer cache @@ -110,6 +110,14 @@ This method helps in case the installer metadata is corrupted, deleting the inst ## Common issues +### Common errors at a glance + +* [Generic installation failure (return code 1603)](#return-code-1603) +* [Access denied (return code 5)](#access-denied) +* [File is locked (return code 32)](#file-is-locked) +* [Corrupt or invliad installer package (return code 1620)](#corrupt-or-invalid-installer-package) +* [Older version can't be removed (return code 1714)](#older-version-cant-be-removed) + ### Return code 1603 Return code 1603 indicates a generic installation failure produced by the Windows Installer during the installation of the Visual C++ Runtime components. @@ -134,7 +142,7 @@ If the installation fails, try to run the VC Redist installer as administrator. ### File is locked -Installation fails with error code 32. This error code is tipically caused by locked files, interference from antivirus, group policies, or corrupted files. +Installation fails with error code 32. Files in use by another process, interference from antivirus software, group policies, or corrupted files are common causes. **Steps to resolve** @@ -159,7 +167,7 @@ Try the steps in the [General troubleshooting steps when using Visual Studio Ins ### Older version can't be removed -Installation fails with the error code 1714. This error code indicates a corrupted Windows installre cache that results in failure to remove a previous version of VC Redist. +Installation fails with the error code 1714. This error code indicates a corrupted Windows Installer cache that results in failure to remove a previous version of VC Redist. The presence of these error messages indicates a corrupted cache. @@ -211,6 +219,7 @@ Method 2: Manually remove the old version. > [!WARNING] > Never install a Visual C++ Redistributable installer that wasn't downloaded from a Microsoft site. +> Never install a Visual C++ Redistributable installer that isn't signed by Microsoft. Download the VC Redist installer from [my.visualstudio.com](). Search for Visual C++ Redistributable on the downloads page. @@ -226,7 +235,7 @@ Links for older or legacy versions: | 14.10 to 14.19 | `https://aka.ms/vs/15/release//VC_redist..exe` | | You might be able to find installers for older versions through a Bing search. -However, make sure that the download comes from a Microsoft site and that the installer is signed by Microsoft. +Only download VC Redist installers from a Microsoft site. Only install packages signed by Microsoft. ## Report a Visual C++ Redistributable installation problem From 1dff244a56d89ea8b99d6b188137852710b4be70 Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Tue, 17 Feb 2026 12:21:36 -0800 Subject: [PATCH 2253/2255] Apply suggestions from code review Co-authored-by: David Justo --- docs/windows/troubleshoot-vcredist-installation-issues.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/windows/troubleshoot-vcredist-installation-issues.md b/docs/windows/troubleshoot-vcredist-installation-issues.md index 1b812a36678..9bef634a4a6 100644 --- a/docs/windows/troubleshoot-vcredist-installation-issues.md +++ b/docs/windows/troubleshoot-vcredist-installation-issues.md @@ -1,6 +1,6 @@ --- title: "Troubleshoot Visual C++ Redistributable installation issues" -description: "Provide steps to diagnose and resolve issues with installing the Visual C++ Redistributable as a standalone installation and as part of the Visual Studio Installer." +description: "Provide steps to diagnose and resolve issues when installing the Visual C++ Redistributable." author: vicroms ms.author: viromer ms.date: 02/12/2026 @@ -9,9 +9,9 @@ helpviewer_keywords: [ "redist", "vcredist", "Visual [C++] redistributable", "VC --- # Troubleshoot Visual C++ Redistributable installation issues -This guide is for users experiencing issues while installing the Visual C++ Runtime components using the Visual C++ Redistributable (VC Redist) installer or the Visual Studio (VS) Installer. +This guide is for users experiencing issues installing Visual C++ Runtime components using the Visual Studio (VS) Installer or the Visual C++ Redistributable (VC Redist) installer. -If you're experiencing such issues, first try installing the [latest version of the Visual C++ Redistributable](latest-supported-vc-redist.md). +If you experience any issues, start by ensuring you're installing the [latest version of the Visual C++ Redistributable](latest-supported-vc-redist.md). ## Collect failure logs @@ -118,7 +118,7 @@ This method helps in case the installer metadata is corrupted, deleting the inst * [Corrupt or invliad installer package (return code 1620)](#corrupt-or-invalid-installer-package) * [Older version can't be removed (return code 1714)](#older-version-cant-be-removed) -### Return code 1603 +### Generic installation failure Return code 1603 indicates a generic installation failure produced by the Windows Installer during the installation of the Visual C++ Runtime components. From 571f52c88d332f4fa979c9011916bf7fec9bf44f Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Wed, 18 Feb 2026 10:38:08 -0800 Subject: [PATCH 2254/2255] Partially implement David's comments --- docs/windows/latest-supported-vc-redist.md | 4 +-- docs/windows/toc.yml | 2 +- ...vc-redistributable-installation-issues.md} | 27 ++++++++++++------- 3 files changed, 21 insertions(+), 12 deletions(-) rename docs/windows/{troubleshoot-vcredist-installation-issues.md => troubleshoot-vc-redistributable-installation-issues.md} (93%) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index 51c36772683..c72d23054e1 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -20,8 +20,8 @@ ms.author: msaleh > [!NOTE] > Are you here to download Visual Studio? Go to [Visual Studio downloads](https://visualstudio.microsoft.com/downloads/). -> [!NOTE] -> Having issues installing the Visual C++ Redistributable? Check out the [troubleshooting guide](troubleshoot-vcredist-installation-issues.md). +> [!TIP] +> Having issues installing the Visual C++ Redistributable? Check out the [troubleshooting guide](troubleshoot-vc-redistributable-installation-issues.md). This topic is for developers who need to install the Visual C++ runtime libraries with their app. If you're an end user trying to fix an app by updating the Visual C++ runtime libraries, contact the app vendor for instructions. diff --git a/docs/windows/toc.yml b/docs/windows/toc.yml index b0efca5195d..7afc39d94e9 100644 --- a/docs/windows/toc.yml +++ b/docs/windows/toc.yml @@ -150,7 +150,7 @@ items: - name: How to audit Visual C++ Runtime version usage href: ../windows/redist-version-auditing.md - name: Troubleshoot Visual C++ Redistributable installation issues - href: ../windows/troubleshoot-vcredist-installation-issues.md + href: ../windows/troubleshoot-vc-redistributable-installation-issues.md - name: Deployment examples expanded: false items: diff --git a/docs/windows/troubleshoot-vcredist-installation-issues.md b/docs/windows/troubleshoot-vc-redistributable-installation-issues.md similarity index 93% rename from docs/windows/troubleshoot-vcredist-installation-issues.md rename to docs/windows/troubleshoot-vc-redistributable-installation-issues.md index 9bef634a4a6..b58314811d8 100644 --- a/docs/windows/troubleshoot-vcredist-installation-issues.md +++ b/docs/windows/troubleshoot-vc-redistributable-installation-issues.md @@ -23,6 +23,8 @@ The first step to diagnose an issue with the Visual C++ Redistributable installe Once you extract `vscollect.zip`, the VC Redist logs are located inside the `Temp` folder. The relevant log files are prefixed with the pattern `dd_vcredist__yyyyMMddHHmmss`. +Once you have located the VC Redist installer logs, search for words like "Error", "Failed", or "System Error" and consult the [Common Errors](#common-errors-at-a-glance) to identify the issue. + ### Other log locations The VC Redist installer is often executed as a prerequisite of other products. In such cases, the installation log might be found in a different path. @@ -43,19 +45,23 @@ In such cases, the path to the logs can be found by reading that product's own l 10-31-2025 17:40:14.554 CONFIGURATION_MANAGER_UPDATE 67368 (0x10728) Failed to install vc redist. Please manually install it from C:\Program Files\Microsoft Configuration Manager\CMUStaging\AA928926-5C76-4DE0-B51F-0FE4D365DFE2\SMSSETUP\BIN\X64 ``` -## General troubleshooting steps +## General troubleshooting steps when using the Visual C++ Redistributable installer This section describes general troubleshooting methods you can try to resolve issues with the VC Redist installer. ### Disable antivirus software temporarily -Security products often block installation of VC Redist components. +Antivirus software often block installation of VC Redist components. 1. Turn off Windows Defender real-time protection. 1. Disable any corporate endpoint protection temporarily (Symantec, McAfee, etc.). 1. Retry the installation. 1. Reenable any disabled protection software. +> [!WARNING] +> Re-enable any disabled protection software after completing these steps. + + ### Run the Visual C++ Redistributable installer as administrator File-access failures are heavily correlated with insufficient permissions. @@ -63,7 +69,7 @@ File-access failures are heavily correlated with insufficient permissions. 1. Right-click the VC Redist installer and select **Run as Administrator**. 1. Retry the installation. -### Check for Windows System Updates +### Check for Windows updates On rare occasions, outdated system components can cause installation issues. @@ -71,7 +77,7 @@ On rare occasions, outdated system components can cause installation issues. 2. Reboot your PC. 3. Retry the installation. -## General troubleshooting steps when using Visual Studio Installer +## General troubleshooting steps when using the Visual Studio Installer ### Manually install Visual C++ Redistributable @@ -82,7 +88,7 @@ On rare occasions, outdated system components can cause installation issues. 1. Run the VC Redist installer. 1. Retry the Visual Studio Installer. -If the manual installation fails, follow the [general troubleshooting steps for the standalone VC Redist installer](#general-troubleshooting-steps). +If the manual installation fails, follow the [general troubleshooting steps for the standalone VC Redist installer](#general-troubleshooting-steps-when-using-the-visual-c-redistributable-installer). ### Clear the Visual Studio Installer cache @@ -92,9 +98,12 @@ If the manual installation fails, follow the [general troubleshooting steps for ### Repair the Visual Studio Installer -1. Go to **Settings** > **Apps** > **Installed Apps** -1. Select **Visual Studio Installer** > **Modify** > **Repair** -1. Retry the Visual Studio Installer. +1. Open the **Settings** app. +1. Search for **Installed Apps** using the search bar at the top of the window. +1. Search for **Visual Studio Installer**. +1. Click on the "**...**" button and select **Modify** from the drowdown list. +1. Select the optin to **Repair** the Visual Studio Installer. +1. Retry the VS installation. ### Delete the Visual Studio Installer folder @@ -147,7 +156,7 @@ Installation fails with error code 32. Files in use by another process, interfer **Steps to resolve** 1. Close any running software in your PC. -1. Try the methods in [General troubleshooting steps](#general-troubleshooting-steps). +1. Try the methods in [General troubleshooting steps](#general-troubleshooting-steps-when-using-the-visual-c-redistributable-installer). If the installation fails, try to restart your PC to release any locked files. From e52e991861c94f1e704f271d48537850defca912 Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Wed, 18 Feb 2026 12:54:06 -0800 Subject: [PATCH 2255/2255] Fix broken links and acrolynx issues --- docs/windows/latest-supported-vc-redist.md | 2 +- ...leshoot-vc-redistributable-installation-issues.md | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index c72d23054e1..eda803ceaad 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -145,7 +145,7 @@ Download Redistributable files for other languages and architectures from: - [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md) - [How to audit Visual C++ Runtime version usage](redist-version-auditing.md) - [Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq) -- [Troubleshoot Visual C++ Redistributable installation issues](troubleshoot-vcredist-installation-issues.md) +- [Troubleshoot Visual C++ Redistributable installation issues](troubleshoot-vc-redistributable-installation-issues.md) **Release notes** diff --git a/docs/windows/troubleshoot-vc-redistributable-installation-issues.md b/docs/windows/troubleshoot-vc-redistributable-installation-issues.md index b58314811d8..9698ba5a3ff 100644 --- a/docs/windows/troubleshoot-vc-redistributable-installation-issues.md +++ b/docs/windows/troubleshoot-vc-redistributable-installation-issues.md @@ -23,7 +23,7 @@ The first step to diagnose an issue with the Visual C++ Redistributable installe Once you extract `vscollect.zip`, the VC Redist logs are located inside the `Temp` folder. The relevant log files are prefixed with the pattern `dd_vcredist__yyyyMMddHHmmss`. -Once you have located the VC Redist installer logs, search for words like "Error", "Failed", or "System Error" and consult the [Common Errors](#common-errors-at-a-glance) to identify the issue. +Search the VC Redist logs for terms like "Error", "Failed", or "System Error" and consult the [Common Errors](#common-errors-at-a-glance) to identify the issue. ### Other log locations @@ -51,7 +51,7 @@ This section describes general troubleshooting methods you can try to resolve is ### Disable antivirus software temporarily -Antivirus software often block installation of VC Redist components. +Antivirus software often blocks installation of VC Redist components. 1. Turn off Windows Defender real-time protection. 1. Disable any corporate endpoint protection temporarily (Symantec, McAfee, etc.). @@ -77,7 +77,7 @@ On rare occasions, outdated system components can cause installation issues. 2. Reboot your PC. 3. Retry the installation. -## General troubleshooting steps when using the Visual Studio Installer +## General troubleshooting steps when using Visual Studio Installer ### Manually install Visual C++ Redistributable @@ -101,8 +101,8 @@ If the manual installation fails, follow the [general troubleshooting steps for 1. Open the **Settings** app. 1. Search for **Installed Apps** using the search bar at the top of the window. 1. Search for **Visual Studio Installer**. -1. Click on the "**...**" button and select **Modify** from the drowdown list. -1. Select the optin to **Repair** the Visual Studio Installer. +1. Click on the "**...**" button and select **Modify**. +1. Select the option to **Repair** the Visual Studio Installer. 1. Retry the VS installation. ### Delete the Visual Studio Installer folder @@ -121,7 +121,7 @@ This method helps in case the installer metadata is corrupted, deleting the inst ### Common errors at a glance -* [Generic installation failure (return code 1603)](#return-code-1603) +* [Generic installation failure (return code 1603)](#generic-installation-failure) * [Access denied (return code 5)](#access-denied) * [File is locked (return code 32)](#file-is-locked) * [Corrupt or invliad installer package (return code 1620)](#corrupt-or-invalid-installer-package)

1%5q|nBso<6VE=VPK4R&1( z%gJ=UWz#b5UU*eIL#oTB)7J(&o#-oE3_HKIG(79NP;}@+v%KhawWQF2^38kPYkYqp zUZJ%0Xi`rRi`Fg#6;Jhx)2$D1h;jHAr6r4GEUu585qTV36@#rn-W0<(TF7ubC z(m=hBtux*Tm~3lF71AsPD5dIP_#q7Xk5UzU6xnNqT#``3Qu2W}2(=_6qBrnCpOjfOQoe7T&YM zUeH}OM0-3cR+q`))Hh|*kE?p&-}2mlGWX8=lIe57>eqenTEgOaSNMDjfqHbtc zNUa)QZQfV*R+&}`(~>JQJ5QGA-UFp^6TK{%eD_2cV>wIfLV`VmOk_8=3BucQ`GEiF zk(LbDfZ1A-u{Z83Y_UnKzX;c6cze-oVASpS+f`0wV8 zf#k>Y9@+(Bs}FKQ;o4^qZkc$-r|ui>pP6(twtmK>-t7@QA5l2=V5*ZcH4Oss)sP zL&U$d!rrh70jmr5!{V3lw>@2aR^r1iZf213u1yu0Il|C}#|cmx#Xlk)aiO^=-dM$j z?{N@)Atkf8dFTS12NL7lWGuURqBo7Dw;oi*NM(=*0_vcDOOF*0>GU zzg?QHyExU}>XAR@LMNz1ua@G>2VN1XaT+%vvepTyVW3AR8b<1jzdQpbY-n-Mumhsg zTU=;{%GV~E#FE)-b;ncauitC}=W#3STT|h8PfUIxb{Bclj%-f~Sc7 z1IES6vns^AGdO2WOlbk>aP~+)P8&jU<@Hz%j>t4L;oc#D7fyjasX*a|3xfhOJ5^%c z$>neF!5Yee3M(TclU|F4ash|!Rrk4=sbR$pFS3_XQysPw2cz)syE1P3Tbjd~3VIrR5EB~v7^J0dmoBTbTsm*LAo9wFea@|HkCzn%v5Zc< z&6)B%dBIz~+}UPuOMxf)(mm<)3e|;HY--qB-*ZVFagmDE0r(KvW8Cw~9wY|#p+|IK zI{&Yd+RZ52ItEPN?}BJ2PiTYq+E^H2|3I;D-hM=xeL@-C2Lv))$pGO>8ikrhsNc1{;0_ly@qDw{h?sNlGm;0~NDlONZb z`nVL9M|u&{g9$3K#xB?*p*Ae32ExkhLRWA4>DKitqJz9tgMxa0qy6j8c1~ejgmyKv z_Vfk6yqQUw&c?L z%SPJX2TFpvDO%Bp%oUf`gXs@@>Q49+Wci@J79CjvLRz=?+O~5RK1>^ZHIr8GKCpXr zC*hh5V4vG_Mzxe0`6FlyL7ibsf4BVN?>0OS0*7Q~N=;LQo9BrOd;WIGV4 zzH{*~EmgLha>NIYE`c3`#te4{pYzuS!0RK)Oa8Q!`brLoS4ZmA~vPY&8!$oKt0LI_;Uj$z;^P5-}lr9!X}WONf}?lTzC&^sam z^wAI+3%z#7E0sUMiN^m+UUske0xqrg%nZvclPEUfF1Q)`E3!ADc4KH1<`cQ%*KWjo zXl8t36^2y(^L<;*XMv zhDEg%an=u!Bo&8U`+%35rYVX2wn)G&L$;?x&WroXbgjsa5trFDQ9zC- zvN%($Bwkr+i>gQS1iNBN4vI(uQlAp`OFewK1P&eiGw2r9;@p~And*Fzi}Oh^;Bxfq zj#Bx94}IHye?RMLN=I|YCuUng0hp>3nZH~-&i?hU?;f!BwV}soJC2RF-yf!K^u Date: Fri, 24 Oct 2025 11:35:45 -0700 Subject: [PATCH 2019/2255] draft --- ...e-github-copilot-create-cpp-console-app.md | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/docs/build/use-github-copilot-create-cpp-console-app.md b/docs/build/use-github-copilot-create-cpp-console-app.md index b59e4fcbef0..5ad9c728b54 100644 --- a/docs/build/use-github-copilot-create-cpp-console-app.md +++ b/docs/build/use-github-copilot-create-cpp-console-app.md @@ -10,7 +10,7 @@ ms.custom: # Use GitHub Copilot to create a C++ console application in Visual Studio -This tutorial shows you how to use GitHub Copilot to quickly create a C++ console application in Visual Studio. You create a console based version of Conway's Game of Life, a classic cellular automaton. +This tutorial shows you how to use GitHub Copilot to quickly create a C++ console application in Visual Studio. You create a console version of Conway's Game of Life, a classic cellular automaton. Github Copilot is an AI-powered coding assistant that helps you write code faster, reduce errors, and explore new solutions. Some benefits of using Copilot when coding in C++: - Generate entire C++ functions or classes as you type. @@ -24,18 +24,18 @@ Github Copilot is an AI-powered coding assistant that helps you write code faste ## Prerequisites - Visual Studio 2022 or later with the **Desktop development with C++** workload installed. -- GitHub Copilot subscription and extension enabled in Visual Studio. +- GitHub Copilot subscription. For more information about a free GitHub Copilot subscription, see [Use GitHub Copilot for free in Visual Studio](/visualstudio/ide/copilot-free-plan). To verify you have the C++ workload installed: 1. Open Visual Studio Installer 1. Select **Modify** next to your Visual Studio installation 1. Ensure **Desktop development with C++** is checked: - :::image type="content" source="./media/desktop-development-cpp-workload" alt-text="Screenshot of the Visual Studio Installer with the Workloads tab selected. Desktop development with c++ is selected."::: + :::image type="content" source="./media/desktop-development-cpp-workload.png" alt-text="Screenshot of the Visual Studio Installer with the Workloads tab selected. Desktop development with c++ is selected."::: 1. If it isn't installed, select it and choose **Modify**. -- Install GitHub Copilot and have a GitHub copilot license. For more information, see [GitHub Copilot in Visual Studio](/visualstudio/ide/visual-studio-github-copilot-install-and-states). +For more information about installing GitHub Copilot, see [Manage GitHub Copilot installation and state](/visualstudio/ide/visual-studio-github-copilot-install-and-states). ## Create a project @@ -47,18 +47,18 @@ To verify you have the C++ workload installed: :::image-end::: 1. Select **Next**. -1. Set the project name to **ConwayLife** and choose your desired location. +1. Set the project name to **ConwayLife** and choose the location for the project. 1. Select **Create**. -1. Once the project opens, locate the `ConwayLife.cpp` file in Solution Explorer. +1. Once the project opens, find the `ConwayLife.cpp` file in Solution Explorer. 1. Open `ConwayLife.cpp` and delete all the existing code to start with a clean slate. ## Use Copilot to create an app Use GitHub Copilot to generate the Conway's Game of Life implementation. -1. Open the Copilot Chat window by selecting the Copilot icon in the toolbar: +1. Open the Copilot chat window by selecting the Copilot icon in the toolbar: - :::image type="content" source="./media/github-copilot-open-chat.png" alt-text="Screenshot of the Github icon dropdown. Open Chat Window is selected."::: + :::image type="content" source="media/github-copilot-open-chat.png" alt-text="Screenshot of the Github icon dropdown. Open Chat Window is selected."::: 1. In the chat window, enter the following prompt: @@ -72,10 +72,10 @@ Create a C++ console application that implements Conway's Game of Life. The prog - Clear the console between generations to provide an animation effect ``` -3. Copilot generates C++ code for Conway's Game of Life. -4. Copy the generated code and paste it into your empty `life.cpp` file. -5. Build the project by pressing **F6** or selecting **Build > Build Solution**. -6. Run the program by pressing **F5** or **Ctrl+F5**. +1. Copilot generates C++ code for Conway's Game of Life. +1. Copy the generated code and paste it into your empty `life.cpp` file. +1. Build the project by pressing **F6** or selecting **Build > Build Solution**. +1. Run the program by pressing **F5** or **Ctrl+F5**. > [!NOTE] > The exact code generated by Copilot may vary slightly from run to run and model to model, but the core functionality should be consistent. If the generated code doesn't compile immediately, you can ask Copilot to fix any compilation errors. GitHub Copilot is powered by AI, so surprises and mistakes are possible. For more information, see [Copilot FAQs](https://aka.ms/copilot-general-use-faqs). @@ -241,5 +241,6 @@ If you can't find the Console App template: ## Next steps -- [GitHub Copilot documentation](https://docs.github.com/en/copilot) - Dive deeper into AI-assisted development +- [GitHub Copilot in Visual Studio](/visualstudio/ide/visual-studio-github-copilot-install-and-states)\ +- [GitHub Copilot documentation](https://docs.github.com/en/copilot) - Dive deeper into AI-assisted development\ - [Awesome ChatGPT Prompts](https://github.com/f/awesome-chatgpt-prompts) - Community-driven prompting examples for inspiration \ No newline at end of file From 39f1ff01706122b274e0d7879701eb65767e5b24 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 24 Oct 2025 14:11:51 -0700 Subject: [PATCH 2020/2255] draft --- .../{Conway-Life-exe.png => life-exe.png} | Bin ...e-github-copilot-create-cpp-console-app.md | 71 +++++++++--------- 2 files changed, 36 insertions(+), 35 deletions(-) rename docs/build/media/{Conway-Life-exe.png => life-exe.png} (100%) diff --git a/docs/build/media/Conway-Life-exe.png b/docs/build/media/life-exe.png similarity index 100% rename from docs/build/media/Conway-Life-exe.png rename to docs/build/media/life-exe.png diff --git a/docs/build/use-github-copilot-create-cpp-console-app.md b/docs/build/use-github-copilot-create-cpp-console-app.md index 5ad9c728b54..accd7e1b63d 100644 --- a/docs/build/use-github-copilot-create-cpp-console-app.md +++ b/docs/build/use-github-copilot-create-cpp-console-app.md @@ -1,14 +1,14 @@ --- -title: Use GitHub Copilot to create a C++ console application in Visual Studio +title: Use AI to create a C++ console application in Visual Studio description: "Learn how to use GitHub Copilot to create a C++ app using Microsoft C++ in Visual Studio." -ms.date: 10/23/2025 +ms.date: 10/24/2025 ms.topic: "tutorial" ms.custom: - ai-assisted - copilot-scenario-highlight --- -# Use GitHub Copilot to create a C++ console application in Visual Studio +# Use AI to create a C++ console application in Visual Studio This tutorial shows you how to use GitHub Copilot to quickly create a C++ console application in Visual Studio. You create a console version of Conway's Game of Life, a classic cellular automaton. @@ -24,21 +24,23 @@ Github Copilot is an AI-powered coding assistant that helps you write code faste ## Prerequisites - Visual Studio 2022 or later with the **Desktop development with C++** workload installed. -- GitHub Copilot subscription. For more information about a free GitHub Copilot subscription, see [Use GitHub Copilot for free in Visual Studio](/visualstudio/ide/copilot-free-plan). +- GitHub Copilot. For more information, see [Get started with GitHub Copilot](/visualstudio/ide/visual-studio-github-copilot-get-started). To verify you have the C++ workload installed: 1. Open Visual Studio Installer 1. Select **Modify** next to your Visual Studio installation 1. Ensure **Desktop development with C++** is checked: - :::image type="content" source="./media/desktop-development-cpp-workload.png" alt-text="Screenshot of the Visual Studio Installer with the Workloads tab selected. Desktop development with c++ is selected."::: + :::image type="content" source="media/desktop-development-cpp-workload.png" alt-text="Screenshot of the Visual Studio Installer with the Workloads tab selected. Desktop development with c++ is selected."::: 1. If it isn't installed, select it and choose **Modify**. -For more information about installing GitHub Copilot, see [Manage GitHub Copilot installation and state](/visualstudio/ide/visual-studio-github-copilot-install-and-states). +For more information about installing Copilot, see [Manage GitHub Copilot installation and state](/visualstudio/ide/visual-studio-github-copilot-install-and-states). ## Create a project +Visual Studio uses *projects* to organize the code for an app, and *solutions* to organize your projects. A project contains all the options, configurations, and rules used to build your apps. It manages the relationship between all the project's files and any external files. To create your app, first, create a new project and solution. + 1. Open Visual Studio and select **Create a new project**. 1. Search for "Console App" and select the **Console App** template for C++. @@ -50,35 +52,33 @@ For more information about installing GitHub Copilot, see [Manage GitHub Copilot 1. Set the project name to **ConwayLife** and choose the location for the project. 1. Select **Create**. 1. Once the project opens, find the `ConwayLife.cpp` file in Solution Explorer. -1. Open `ConwayLife.cpp` and delete all the existing code to start with a clean slate. +1. Open `ConwayLife.cpp` and delete the default "Hello, World!" code to start with a clean slate. ## Use Copilot to create an app -Use GitHub Copilot to generate the Conway's Game of Life implementation. +You prompt Copilot by describing the functionality you want. Here's an example of how to prompt Copilot to generate an implementation of Conway's Game of Life. 1. Open the Copilot chat window by selecting the Copilot icon in the toolbar: :::image type="content" source="media/github-copilot-open-chat.png" alt-text="Screenshot of the Github icon dropdown. Open Chat Window is selected."::: 1. In the chat window, enter the following prompt: - -``` -Create a C++ console application that implements Conway's Game of Life. The program should: -- Use a 40x20 grid displayed with asterisks (*) for live cells and spaces for dead cells -- Start with a random initial pattern -- Display each generation for 500ms before showing the next -- Allow the user to press any key to exit the program -- Include proper headers and use standard C++ practices -- Clear the console between generations to provide an animation effect -``` - + ```copilot-prompt + Create a C++ console application that implements Conway's Game of Life. The program should: + - Use a 40x20 grid displayed with asterisks (*) for live cells and spaces for dead cells + - Start with a random initial pattern + - Display each generation for 500ms before showing the next + - Allow the user to press any key to exit the program + - Include proper headers and use standard C++ practices + - Clear the console between generations to provide an animation effect + ``` 1. Copilot generates C++ code for Conway's Game of Life. 1. Copy the generated code and paste it into your empty `life.cpp` file. 1. Build the project by pressing **F6** or selecting **Build > Build Solution**. 1. Run the program by pressing **F5** or **Ctrl+F5**. > [!NOTE] -> The exact code generated by Copilot may vary slightly from run to run and model to model, but the core functionality should be consistent. If the generated code doesn't compile immediately, you can ask Copilot to fix any compilation errors. GitHub Copilot is powered by AI, so surprises and mistakes are possible. For more information, see [Copilot FAQs](https://aka.ms/copilot-general-use-faqs). +> The exact code generated by Copilot may vary slightly from run to run and model to model, but the core functionality should be consistent. If the generated code doesn't compile immediately, you can ask Copilot to fix any compilation errors. Copilot is powered by AI, so surprises and mistakes are possible. For more information, see [Copilot FAQs](https://aka.ms/copilot-general-use-faqs). ### Example of typical generated code structure @@ -89,7 +89,7 @@ Your generated code likely includes these components: - Functions to initialize the grid, apply Conway's rules, and display the current state - A main loop that continues until a key is pressed -Here is an example of the code that GitHub Copilot generated given the previous prompt: +Here is an example of the code that Copilot generated given the previous prompt: ```cpp // Code generated by GitHub Copilot @@ -198,15 +198,15 @@ int main() ``` When you run the application, you should see an animated display of Conway's Game of Life with patterns evolving over time. To exit the program, press a key. -:::image type="content" source="./media/conway-life-exe.png" alt-text="Screenshot of Conway Life running in a command window, displaying the evolving grid of cells."::: +:::image type="content" source="./media/life-exe.png" alt-text="Screenshot of Conway Life running in a command window, displaying the evolving grid of cells."::: -In the code example, the code generates a warning: `Return value ignored: '_getch'`. You can ask GitHub Copilot to fix it. Select the code editor and press **Alt+/** (Windows) to open the Copilot chat, then enter: +In the code example, the code generates a warning: `Return value ignored: '_getch'`. You can ask Copilot to fix it. Select the code editor and press **Alt+/** (Windows) to open the Copilot chat, then enter: -:::image type="content" source="./media/github-copilot-fix-warning.png" alt-text="Screenshot of the GitHub Copilot chat window. The text: Fix warning C6031 is in the chat window."::: +:::image type="content" source="./media/github-copilot-fix-warning.png" alt-text="Screenshot of the Copilot chat window. The text: Fix warning C6031 is in the chat window."::: -GitHub Copilot suggests a fix to handle the return value properly. To accept the changes, press the Tab key: +Copilot suggests a fix to handle the return value properly. To accept the changes, press the Tab key: -:::image type="content" source="./media/github-copilot-fix-warning-accept.png" alt-text="Screenshot of the GitHub Copilot proposed changes. Tab to accept. Alt+Del to discard."::: +:::image type="content" source="./media/github-copilot-fix-warning-accept.png" alt-text="Screenshot of the Copilot proposed changes. Tab to accept. Alt+Del to discard."::: Congratulations! You successfully used GitHub Copilot to create a fully functional Conway's Game of Life console application in C++. You learned how to: @@ -216,7 +216,7 @@ Congratulations! You successfully used GitHub Copilot to create a fully function ## Improve your prompting skills -For better results with GitHub Copilot, consider these prompting resources: +For better results with Copilot, see these prompting resources: - [GitHub Copilot documentation](https://docs.github.com/en/copilot) - Official best practices and tips - [OpenAI's GPT best practices](https://platform.openai.com/docs/guides/prompt-engineering) - General AI prompting techniques @@ -224,20 +224,21 @@ For better results with GitHub Copilot, consider these prompting resources: ## Troubleshooting -### Missing C++ desktop workload -If you can't find the Console App template: -1. Install the **Desktop development with C++** workload through Visual Studio Installer -2. Restart Visual Studio after installation +### Missing console app template + +The **New Project** dialog should show a **Console App** template that has **C++**, **Windows**, and **Console** tags. If you don't see it, it might be filtered out of the list, or it might not be installed. First, check the filter dropdowns at the top of the list of templates. Set them to **C++**, **Windows**, and **Console**. The C++ **Console App** template should appear; otherwise, the **Desktop development with C++** workload isn't installed. + +To install **Desktop development with C++**, you can run the installer right from the **Create a new project** dialog. Choose the **Install more tools and features** link at the bottom of the **Create a new project** dialog, beneath the list of templates. If the **User Account Control** dialog requests permissions, choose **Yes**. In the installer, make sure the **Desktop development with C++** workload is checked. Then choose **Modify** to update your Visual Studio installation. ### Copilot not responding -- Ensure you have an active GitHub Copilot subscription -- Check that the GitHub Copilot extension is enabled in Visual Studio + +- Ensure you have an active GitHub Copilot subscription. - Try signing out and back into your GitHub account in Visual Studio ### Generated code doesn't compile + - Ask Copilot to fix specific compilation errors by pasting the error message into Copilot chat. -- Try refining your prompt to be more specific about C++ standards or requirements. -- Ensure all necessary headers are included (Copilot usually handles this automatically). +- Try refining your prompt to be more specific about what you want the app to do. ## Next steps From 5f2c38ffe85ccf9d7ee24804f9281debf5f96c0e Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 24 Oct 2025 14:27:16 -0700 Subject: [PATCH 2021/2255] draft --- ...e-github-copilot-create-cpp-console-app.md | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/docs/build/use-github-copilot-create-cpp-console-app.md b/docs/build/use-github-copilot-create-cpp-console-app.md index accd7e1b63d..4797c8f81ba 100644 --- a/docs/build/use-github-copilot-create-cpp-console-app.md +++ b/docs/build/use-github-copilot-create-cpp-console-app.md @@ -12,7 +12,9 @@ ms.custom: This tutorial shows you how to use GitHub Copilot to quickly create a C++ console application in Visual Studio. You create a console version of Conway's Game of Life, a classic cellular automaton. -Github Copilot is an AI-powered coding assistant that helps you write code faster, reduce errors, and explore new solutions. Some benefits of using Copilot when coding in C++: +Conway's Game of Life was devised by mathematician John Conway. It consists of a grid of cells that can be either alive or dead. The game evolves automatically based on simple rules and produces complex, evolving patterns that demonstrate how intricate behavior can emerge from basic mathematical rules. + +GitHub Copilot is an AI-powered coding assistant that helps you write code faster, reduce errors, and explore new solutions. Some benefits of using Copilot when coding in C++: - Generate entire C++ functions or classes as you type. - Suggest code completions based on plain-language comments or prompts. - Get help with complex algorithms, data structures, and standard library usage. @@ -44,19 +46,19 @@ Visual Studio uses *projects* to organize the code for an app, and *solutions* t 1. Open Visual Studio and select **Create a new project**. 1. Search for "Console App" and select the **Console App** template for C++. - :::image type="complex" source="media/vs2019-choose-console-app.png" alt-text="Screenshot of the create a new project dialog."::: - The create a new project dialog with the Console App template selected. That template says: Run code in a windows terminal. Prints hello world by default. Has the tags c++, Windows, and Console. + :::image type="complex" source="media/vs2019-choose-console-app.png" alt-text="Screenshot of the Create a new project dialog."::: + The Create a new project dialog is shown with the Console App template selected. The template says: Run code in a windows terminal. Prints hello world by default. Has the tags c++, Windows, and Console. :::image-end::: 1. Select **Next**. -1. Set the project name to **ConwayLife** and choose the location for the project. +1. Set the project name to **Life** and choose the location for the project. 1. Select **Create**. -1. Once the project opens, find the `ConwayLife.cpp` file in Solution Explorer. -1. Open `ConwayLife.cpp` and delete the default "Hello, World!" code to start with a clean slate. +1. Once the project opens, find the `Life.cpp` file in Solution Explorer. +1. Open `Life.cpp` and delete the default "Hello, World!" code to start with a clean slate. ## Use Copilot to create an app -You prompt Copilot by describing the functionality you want. Here's an example of how to prompt Copilot to generate an implementation of Conway's Game of Life. +You prompt Copilot by describing the functionality you want. In this section, you'll learn how to prompt Copilot to generate an implementation of Conway's Game of Life. 1. Open the Copilot chat window by selecting the Copilot icon in the toolbar: @@ -73,7 +75,7 @@ You prompt Copilot by describing the functionality you want. Here's an example o - Clear the console between generations to provide an animation effect ``` 1. Copilot generates C++ code for Conway's Game of Life. -1. Copy the generated code and paste it into your empty `life.cpp` file. +1. Copy the generated code and paste it into your empty `Life.cpp` file. 1. Build the project by pressing **F6** or selecting **Build > Build Solution**. 1. Run the program by pressing **F5** or **Ctrl+F5**. @@ -82,14 +84,14 @@ You prompt Copilot by describing the functionality you want. Here's an example o ### Example of typical generated code structure -Your generated code likely includes these components: +Your generated code will likely include these key components: - Headers for console manipulation, random number generation, and timing - A 2D array or vector to represent the game grid - Functions to initialize the grid, apply Conway's rules, and display the current state - A main loop that continues until a key is pressed -Here is an example of the code that Copilot generated given the previous prompt: +Here's an example of the code that Copilot generated using the previous prompt: ```cpp // Code generated by GitHub Copilot @@ -200,11 +202,11 @@ When you run the application, you should see an animated display of Conway's Gam :::image type="content" source="./media/life-exe.png" alt-text="Screenshot of Conway Life running in a command window, displaying the evolving grid of cells."::: -In the code example, the code generates a warning: `Return value ignored: '_getch'`. You can ask Copilot to fix it. Select the code editor and press **Alt+/** (Windows) to open the Copilot chat, then enter: +In the preceding code example, the code generates a warning: `Return value ignored: '_getch'`. You can ask Copilot to fix it. Select the code editor and press **Alt+/** (Windows) to open the Copilot chat, then enter: :::image type="content" source="./media/github-copilot-fix-warning.png" alt-text="Screenshot of the Copilot chat window. The text: Fix warning C6031 is in the chat window."::: -Copilot suggests a fix to handle the return value properly. To accept the changes, press the Tab key: +Copilot suggests a fix to handle the return value properly. To accept the changes, select **Tab**: :::image type="content" source="./media/github-copilot-fix-warning-accept.png" alt-text="Screenshot of the Copilot proposed changes. Tab to accept. Alt+Del to discard."::: From a82c21e039539194036057848ba14ab93f79fc39 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 24 Oct 2025 14:42:54 -0700 Subject: [PATCH 2022/2255] draft --- docs/build/vscpp-step-0-installation.md | 4 +--- docs/get-started/toc.yml | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/build/vscpp-step-0-installation.md b/docs/build/vscpp-step-0-installation.md index 0a5311c1fd1..903016883ab 100644 --- a/docs/build/vscpp-step-0-installation.md +++ b/docs/build/vscpp-step-0-installation.md @@ -128,7 +128,7 @@ Some benefits of using Copilot for your C++ coding scenarios: - Debug errors in your code. - Simplify and refactor existing code. -To install GitHub Copilot, see [Manage GitHub Copilot installation and state](/visualstudio/ide/visual-studio-github-copilot-install-and-states). +To try GitHub copilot to create a C++ app, follow the instructions in [Use AI to create a C++ console application in Visual Studio](../build/use-github-copilot-create-cpp-console-app.md). ::: moniker-end @@ -225,9 +225,7 @@ You can reduce the installation footprint of Visual Studio on your system drive. ### Step 8 - Start developing 1. After Visual Studio installation is complete, choose the **Launch** button to get started developing with Visual Studio. - 1. On the start window, choose **Create a new project**. - 1. In the search box, enter the type of app you want to create to see a list of available templates. The list of templates depends on the workloads that you chose during installation. To see different templates, choose different workloads. You can also filter your search for a specific programming language by using the **Language** dropdown list. You can filter by using the **Platform** list and the **Project type** list, too. diff --git a/docs/get-started/toc.yml b/docs/get-started/toc.yml index 382c539cf83..bc7a83fb976 100644 --- a/docs/get-started/toc.yml +++ b/docs/get-started/toc.yml @@ -6,7 +6,7 @@ items: href: ../build/vscpp-step-0-installation.md - name: Visual Studio guided tour href: /visualstudio/get-started/visual-studio-ide - - name: Use GitHub Copilot to create a C++ console application in Visual Studio + - name: Use AI to create a C++ console application in Visual Studio href: ../build/use-github-copilot-create-cpp-console-app.md - name: Create and edit a C++ console app project href: ../build/vscpp-step-1-create.md From 9d771a908c7544eb8b38574a041ed9ec57551d35 Mon Sep 17 00:00:00 2001 From: Jill Grant <72043882+JillGrant615@users.noreply.github.com> Date: Fri, 24 Oct 2025 16:55:36 -0600 Subject: [PATCH 2023/2255] Apply suggestions from code review --- docs/build/use-github-copilot-create-cpp-console-app.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/build/use-github-copilot-create-cpp-console-app.md b/docs/build/use-github-copilot-create-cpp-console-app.md index 4797c8f81ba..b70ab460381 100644 --- a/docs/build/use-github-copilot-create-cpp-console-app.md +++ b/docs/build/use-github-copilot-create-cpp-console-app.md @@ -62,7 +62,7 @@ You prompt Copilot by describing the functionality you want. In this section, yo 1. Open the Copilot chat window by selecting the Copilot icon in the toolbar: - :::image type="content" source="media/github-copilot-open-chat.png" alt-text="Screenshot of the Github icon dropdown. Open Chat Window is selected."::: + :::image type="content" source="media/github-copilot-open-chat.png" alt-text="Screenshot of the GitHub icon dropdown. Open Chat Window is selected."::: 1. In the chat window, enter the following prompt: ```copilot-prompt @@ -244,6 +244,6 @@ To install **Desktop development with C++**, you can run the installer right fro ## Next steps -- [GitHub Copilot in Visual Studio](/visualstudio/ide/visual-studio-github-copilot-install-and-states)\ -- [GitHub Copilot documentation](https://docs.github.com/en/copilot) - Dive deeper into AI-assisted development\ +- [GitHub Copilot in Visual Studio](/visualstudio/ide/visual-studio-github-copilot-install-and-states) +- [GitHub Copilot documentation](https://docs.github.com/en/copilot) - Dive deeper into AI-assisted development - [Awesome ChatGPT Prompts](https://github.com/f/awesome-chatgpt-prompts) - Community-driven prompting examples for inspiration \ No newline at end of file From b6041294c6d070bd6f06875a301a1c22b56170dc Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 24 Oct 2025 16:28:40 -0700 Subject: [PATCH 2024/2255] update version --- .../reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md | 2 +- ...time-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md | 2 +- docs/c-runtime-library/reference/gmtime-gmtime32-gmtime64.md | 2 +- .../reference/gmtime-s-gmtime32-s-gmtime64-s.md | 2 +- .../reference/localtime-localtime32-localtime64.md | 2 +- .../reference/localtime-s-localtime32-s-localtime64-s.md | 2 +- .../reference/mkgmtime-mkgmtime32-mkgmtime64.md | 2 +- docs/c-runtime-library/reference/mktime-mktime32-mktime64.md | 2 +- docs/c-runtime-library/reference/strnlen-strnlen-s.md | 2 +- docs/c-runtime-library/reference/time-time32-time64.md | 2 +- .../reference/timespec-get-timespec32-get-timespec64-get1.md | 2 +- .../reference/utime-utime32-utime64-wutime-wutime32-wutime64.md | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md b/docs/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md index 94fb51c5db2..c6d21aac8eb 100644 --- a/docs/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md +++ b/docs/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md @@ -62,7 +62,7 @@ These functions validate their parameters. If *`sourceTime`* is a null pointer, By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). >> [!Note] -> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `ctime` and `_wctime` are no longer `static inline` (internal linkage). Instead, they're `inline` (external linkage).\ +> When you use Windows SDK version 10.0.26100.6901 and Visual Studio 2026 or later together, `ctime` and `_wctime` are no longer `static inline` (internal linkage). Instead, they're `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ > This change increases UCRT conformance with the C++ standard and improves compatibility with C++ modules. diff --git a/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md b/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md index af343d723c7..12965dc90e2 100644 --- a/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md +++ b/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md @@ -125,7 +125,7 @@ The debug library versions of these functions first fill the buffer with 0xFE. T By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `ctime_s` and `_wctime_s` are no longer `static inline` (internal linkage). Instead, they're `inline` (external linkage).\ +> When you use Windows SDK version 10.0.26100.6901 and Visual Studio 2026 or later together, `ctime_s` and `_wctime_s` are no longer `static inline` (internal linkage). Instead, they're `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ > This change increases UCRT conformance with the C++ standard and improves compatibility with C++ modules. diff --git a/docs/c-runtime-library/reference/gmtime-gmtime32-gmtime64.md b/docs/c-runtime-library/reference/gmtime-gmtime32-gmtime64.md index aaf84a4d8cc..82ac3231da3 100644 --- a/docs/c-runtime-library/reference/gmtime-gmtime32-gmtime64.md +++ b/docs/c-runtime-library/reference/gmtime-gmtime32-gmtime64.md @@ -57,7 +57,7 @@ The **`_gmtime32`** function breaks down the *`sourceTime`* value and stores it By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `gmtime` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ +> When you use Windows SDK version 10.0.26100.6901 and Visual Studio 2026 or later together, `gmtime` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ > This change increases UCRT conformance with the C++ standard and improves compatibility with C++ modules. diff --git a/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md b/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md index dd7a15de33e..36f21d43df4 100644 --- a/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md +++ b/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md @@ -77,7 +77,7 @@ Each of the structure fields is of type **`int`**, as shown in the following tab By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `gmtime_s` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ +> When you use Windows SDK version 10.0.26100.6901 and Visual Studio 2026 or later together, `gmtime_s` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ > This change increases UCRT conformance with the C++ standard and improves compatibility with C++ modules. diff --git a/docs/c-runtime-library/reference/localtime-localtime32-localtime64.md b/docs/c-runtime-library/reference/localtime-localtime32-localtime64.md index fbd9bbc8ae2..b5f537a55a0 100644 --- a/docs/c-runtime-library/reference/localtime-localtime32-localtime64.md +++ b/docs/c-runtime-library/reference/localtime-localtime32-localtime64.md @@ -73,7 +73,7 @@ These functions validate their parameters. If *`sourceTime`* is a null pointer, By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `localtime` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ +> When you use Windows SDK version 10.0.26100.6901 and Visual Studio 2026 or later together, `localtime` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ > This change increases UCRT conformance with the C++ standard and improves compatibility with C++ modules. diff --git a/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md b/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md index 4907ef32f45..430f90328b3 100644 --- a/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md +++ b/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md @@ -85,7 +85,7 @@ If the **`TZ`** environment variable is set, the C run-time library assumes rule By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `localtime_s` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ +> When you use Windows SDK version 10.0.26100.6901 and Visual Studio 2026 or later together, `localtime_s` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ > This change increases UCRT conformance with the C++ standard and improves compatibility with C++ modules. diff --git a/docs/c-runtime-library/reference/mkgmtime-mkgmtime32-mkgmtime64.md b/docs/c-runtime-library/reference/mkgmtime-mkgmtime32-mkgmtime64.md index 63e68cc2503..037c907886b 100644 --- a/docs/c-runtime-library/reference/mkgmtime-mkgmtime32-mkgmtime64.md +++ b/docs/c-runtime-library/reference/mkgmtime-mkgmtime32-mkgmtime64.md @@ -49,7 +49,7 @@ The range of the **`_mkgmtime32`** function is from midnight, January 1, 1970, U Both **`gmtime`** and **`localtime`** use a common static buffer for the conversion. If you supply this buffer to **`_mkgmtime`**, the previous contents are destroyed. > [!Note] -> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `_mkgmtime` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ +> When you use Windows SDK version 10.0.26100.6901 and Visual Studio 2026 or later together, `_mkgmtime` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ > This change increases UCRT conformance with the C++ standard and improves compatibility with C++ modules. diff --git a/docs/c-runtime-library/reference/mktime-mktime32-mktime64.md b/docs/c-runtime-library/reference/mktime-mktime32-mktime64.md index eb4af0a38fc..7f7bb31a6c9 100644 --- a/docs/c-runtime-library/reference/mktime-mktime32-mktime64.md +++ b/docs/c-runtime-library/reference/mktime-mktime32-mktime64.md @@ -63,7 +63,7 @@ These functions validate their parameter. If *`timeptr`* is a null pointer, the By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `mktime` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ +> When you use Windows SDK version 10.0.26100.6901 and Visual Studio 2026 or later together, `mktime` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ > This change increases UCRT conformance with the C++ standard and improves compatibility with C++ modules. diff --git a/docs/c-runtime-library/reference/strnlen-strnlen-s.md b/docs/c-runtime-library/reference/strnlen-strnlen-s.md index 12b2cedae88..ba5972caaec 100644 --- a/docs/c-runtime-library/reference/strnlen-strnlen-s.md +++ b/docs/c-runtime-library/reference/strnlen-strnlen-s.md @@ -89,7 +89,7 @@ Each of these functions returns the number of characters in *`str`*, not includi By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `strnlen_s` and `wcsnlen_s` are no longer `static inline` (internal linkage). Instead, they are `inline` (external linkage).\ +> When you use Windows SDK version 10.0.26100.6901 and Visual Studio 2026 or later together, `strnlen_s` and `wcsnlen_s` are no longer `static inline` (internal linkage). Instead, they are `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ > This change increases UCRT conformance with the C++ standard and improves compatibility with C++ modules. diff --git a/docs/c-runtime-library/reference/time-time32-time64.md b/docs/c-runtime-library/reference/time-time32-time64.md index 049d5450138..1087f1997a6 100644 --- a/docs/c-runtime-library/reference/time-time32-time64.md +++ b/docs/c-runtime-library/reference/time-time32-time64.md @@ -37,7 +37,7 @@ The **`time`** function returns the number of seconds elapsed since midnight (00 **`time`** is a wrapper for **`_time64`** and **`time_t`** is, by default, equivalent to **`__time64_t`**. If you need to force the compiler to interpret **`time_t`** as the old 32-bit **`time_t`**, you can define `_USE_32BIT_TIME_T`. We don't recommend `_USE_32BIT_TIME_T`, because your application may fail after January 18, 2038; the use of this macro isn't allowed on 64-bit platforms. > [!Note] -> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `time` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ +> When you use Windows SDK version 10.0.26100.6901 and Visual Studio 2026 or later together, `time` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ > This change increases UCRT conformance with the C++ standard and improves compatibility with C++ modules. diff --git a/docs/c-runtime-library/reference/timespec-get-timespec32-get-timespec64-get1.md b/docs/c-runtime-library/reference/timespec-get-timespec32-get-timespec64-get1.md index ebc60ea0b92..fea1cd33a5a 100644 --- a/docs/c-runtime-library/reference/timespec-get-timespec32-get-timespec64-get1.md +++ b/docs/c-runtime-library/reference/timespec-get-timespec32-get-timespec64-get1.md @@ -56,7 +56,7 @@ These functions support only `TIME_UTC` as the *`base`* value. `TIME_UTC` sets t By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `timespec_get` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ +> When you use Windows SDK version 10.0.26100.6901 and Visual Studio 2026 or later together, `timespec_get` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ > This change increases UCRT conformance with the C++ standard and improves compatibility with C++ modules. diff --git a/docs/c-runtime-library/reference/utime-utime32-utime64-wutime-wutime32-wutime64.md b/docs/c-runtime-library/reference/utime-utime32-utime64-wutime-wutime32-wutime64.md index 07641eeece6..84b91e8d2ea 100644 --- a/docs/c-runtime-library/reference/utime-utime32-utime64-wutime-wutime32-wutime64.md +++ b/docs/c-runtime-library/reference/utime-utime32-utime64-wutime-wutime32-wutime64.md @@ -85,7 +85,7 @@ Specific versions of the `_utimbuf` structure (`__utimbuf32` and `__utimbuf64`) By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> When you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `_utime` and `_wutime` are no longer `static inline` (internal linkage). Instead, they're `inline` (external linkage).\ +> When you use Windows SDK version 10.0.26100.6901 and Visual Studio 2026 or later together, `_utime` and `_wutime` are no longer `static inline` (internal linkage). Instead, they're `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ > This change increases UCRT conformance with the C++ standard and improves compatibility with C++ modules. From e267562074d61e6ef0f0b5291f86b16b3a380471 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 24 Oct 2025 16:30:53 -0700 Subject: [PATCH 2025/2255] fix stray version # --- .../reference/difftime-difftime32-difftime64.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/c-runtime-library/reference/difftime-difftime32-difftime64.md b/docs/c-runtime-library/reference/difftime-difftime32-difftime64.md index 1eb22965f30..b1512299fa8 100644 --- a/docs/c-runtime-library/reference/difftime-difftime32-difftime64.md +++ b/docs/c-runtime-library/reference/difftime-difftime32-difftime64.md @@ -46,7 +46,7 @@ These functions validate their parameters. If either of the parameters is zero o By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> If you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `difftime` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ +> If you use Windows SDK version 10.0.26100.6901 and Visual Studio 2026 or later together, `difftime` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ > This change increases UCRT conformance with the C++ standard and improves compatibility with C++ modules. From 7c6d1262c83eb51561a51f2bc257d2c056f605de Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 24 Oct 2025 16:32:58 -0700 Subject: [PATCH 2026/2255] fix one more stray --- .../reference/futime-futime32-futime64.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/c-runtime-library/reference/futime-futime32-futime64.md b/docs/c-runtime-library/reference/futime-futime32-futime64.md index 71e48e02fdc..43712b04947 100644 --- a/docs/c-runtime-library/reference/futime-futime32-futime64.md +++ b/docs/c-runtime-library/reference/futime-futime32-futime64.md @@ -52,7 +52,7 @@ The **`_futime`** routine sets the modification date and the access time on the By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). > [!Note] -> If you use Windows SDK version 10.0.xxxxx.xxxx and Visual Studio 2026 or later together, `_futime` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ +> If you use Windows SDK version 10.0.26100.6901 and Visual Studio 2026 or later together, `_futime` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ > This change increases UCRT conformance with the C++ standard and improves compatibility with C++ modules. @@ -60,9 +60,9 @@ By default, this function's global state is scoped to the application. To change | Function | Required header | Optional header | |---|---|---| -| **`_futime`** | \ | \ | -| **`_futime32`** | \ | \ | -| **`_futime64`** | \ | \ | +| **`_futime`** | `` | `` | +| **`_futime32`** | `` | `` | +| **`_futime64`** | `` | `` | For more compatibility information, see [Compatibility](../compatibility.md). From d33d8b89eeb047c2d5b46b3ca69205bd1056af9a Mon Sep 17 00:00:00 2001 From: Jill Grant <72043882+JillGrant615@users.noreply.github.com> Date: Fri, 24 Oct 2025 17:48:19 -0600 Subject: [PATCH 2027/2255] Update docs/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md --- .../reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md b/docs/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md index c6d21aac8eb..3f03733bda5 100644 --- a/docs/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md +++ b/docs/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md @@ -61,7 +61,7 @@ These functions validate their parameters. If *`sourceTime`* is a null pointer, By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). ->> [!Note] +> [!Note] > When you use Windows SDK version 10.0.26100.6901 and Visual Studio 2026 or later together, `ctime` and `_wctime` are no longer `static inline` (internal linkage). Instead, they're `inline` (external linkage).\ > To return to the previous behavior, `#define _STATIC_INLINE_UCRT_FUNCTIONS=1` before including any CRT headers. By default, `_STATIC_INLINE_UCRT_FUNCTIONS` is set to 0.\ > This change increases UCRT conformance with the C++ standard and improves compatibility with C++ modules. From 36738035d38d4d2ab474a3f4681366fa341a6f6c Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 29 Oct 2025 02:24:11 -0700 Subject: [PATCH 2028/2255] Branding updates (#6129) * Updated MSVC branding for /docs/assembler * Reverted unnecessary branding change in /assembler/inline/inline-assembler-overview * All remaining MSVC branding changes except /porting folder; this will be covered by a separate PR to update those docs * minor updates --------- Co-authored-by: Augustin Popa --- .../arm-assembler-command-line-reference.md | 2 +- docs/assembler/inline/asm.md | 2 +- .../instruction-set-for-inline-assembly.md | 2 +- .../inline/intel-s-mmx-instruction-set.md | 2 +- docs/build/arm64-windows-abi-conventions.md | 2 +- docs/build/arm64ec-windows-abi-conventions.md | 4 +- ...pplications-and-side-by-side-assemblies.md | 4 +- docs/build/building-on-the-command-line.md | 12 +++--- docs/build/cmake-presets-vs.md | 6 +-- docs/build/cmake-projects-in-visual-studio.md | 2 +- docs/build/cmakesettings-reference.md | 2 +- ...mmon-visual-cpp-64-bit-migration-issues.md | 10 ++--- .../common-visual-cpp-arm-migration-issues.md | 10 ++--- docs/build/compare-inclusion-methods.md | 2 +- ...pplications-and-side-by-side-assemblies.md | 4 +- ...figuring-programs-for-64-bit-visual-cpp.md | 6 +-- ...-programs-for-arm-processors-visual-cpp.md | 2 +- .../creating-precompiled-header-files.md | 2 +- ...termining-which-exporting-method-to-use.md | 2 +- docs/build/dlls-in-visual-cpp.md | 2 +- docs/build/exception-handling-x64.md | 2 +- .../exporting-from-a-dll-using-def-files.md | 2 +- ...-visual-cpp-toolset-on-the-command-line.md | 2 +- ...e-target-framework-and-platform-toolset.md | 4 +- docs/build/importing-using-def-files.md | 2 +- docs/build/msbuild-visual-cpp.md | 2 +- docs/build/overview-of-arm-abi-conventions.md | 4 +- docs/build/projects-and-build-systems-cpp.md | 8 ++-- docs/build/reference/c-cpp-prop-page.md | 2 +- docs/build/reference/fsanitize.md | 2 +- .../general-property-page-project.md | 2 +- docs/build/reference/linking.md | 4 +- .../microsoft-extensions-to-c-and-cpp.md | 2 +- .../reference/msbuild-visual-cpp-overview.md | 2 +- .../build/reference/vcxproj-file-structure.md | 4 +- .../reference/visual-cpp-project-types.md | 2 +- .../regular-dlls-statically-linked-to-mfc.md | 2 +- docs/build/run-time-library-behavior.md | 2 +- docs/build/stack-usage.md | 2 +- docs/build/toc.yml | 2 +- ...pplications-and-side-by-side-assemblies.md | 4 +- ...ing-custom-build-steps-and-build-events.md | 2 +- ...-manifest-generation-for-c-cpp-programs.md | 4 +- docs/build/vscpp-step-2-build.md | 2 +- ...compile-a-c-program-on-the-command-line.md | 2 +- ...g-a-cpp-cli-program-on-the-command-line.md | 6 +-- ...-native-cpp-program-on-the-command-line.md | 18 ++++----- ...ng-and-using-a-dynamic-link-library-cpp.md | 2 +- docs/build/walkthrough-header-units.md | 4 +- .../walkthrough-import-stl-header-units.md | 2 +- ...-msbuild-to-create-a-visual-cpp-project.md | 8 ++-- ...oating-point-numbers-may-lose-precision.md | 2 +- docs/build/working-with-project-properties.md | 2 +- ...cloud-and-web-programming-in-visual-cpp.md | 6 +-- .../build-reliable-secure-programs.md | 16 ++++---- .../code-analysis-for-c-cpp-overview.md | 2 +- .../using-the-cpp-core-guidelines-checkers.md | 2 +- ...wnload-and-install-the-embedded-tooling.md | 2 +- docs/get-started/toc.yml | 2 +- docs/get-started/tutorial-console-cpp.md | 2 +- ...-studio-ide-for-cpp-desktop-development.md | 4 +- docs/ide/writing-and-refactoring-code-cpp.md | 2 +- docs/intrinsics/arm-intrinsics.md | 2 +- docs/intrinsics/arm64-intrinsics.md | 2 +- docs/intrinsics/compiler-intrinsics.md | 2 +- docs/overview/compiler-versions.md | 38 +++++++++++-------- .../cpp-conformance-improvements-2019.md | 2 +- ...t-a-problem-with-the-visual-cpp-toolset.md | 6 +-- .../supported-platforms-visual-cpp.md | 10 ++--- docs/overview/toc.yml | 2 +- docs/overview/visual-cpp-in-visual-studio.md | 6 +-- .../visual-cpp-language-conformance.md | 4 +- ...-and-features-in-visual-studio-editions.md | 2 +- docs/sanitizers/asan-building.md | 1 - docs/sanitizers/asan-continue-on-error.md | 16 ++++---- docs/sanitizers/asan-flags.md | 2 +- docs/sanitizers/asan-known-issues.md | 2 +- docs/sanitizers/asan-runtime.md | 4 +- docs/sanitizers/asan.md | 4 +- .../error-stack-use-after-return.md | 4 +- .../security-best-practices-for-cpp.md | 2 +- ...-deployment-for-visual-cpp-applications.md | 12 +++--- ...-native-desktop-applications-visual-cpp.md | 18 ++++----- ...-using-the-vcpp-redistributable-package.md | 4 +- docs/windows/deployment-concepts.md | 6 +-- docs/windows/deployment-in-visual-cpp.md | 20 +++++----- docs/windows/toc.yml | 14 +++---- ...ependencies-of-a-visual-cpp-application.md | 10 ++--- ...pp-application-by-using-a-setup-project.md | 14 +++---- ...lication-to-an-application-local-folder.md | 18 ++++----- 90 files changed, 231 insertions(+), 226 deletions(-) diff --git a/docs/assembler/arm/arm-assembler-command-line-reference.md b/docs/assembler/arm/arm-assembler-command-line-reference.md index 6c79ceaf152..a686553e861 100644 --- a/docs/assembler/arm/arm-assembler-command-line-reference.md +++ b/docs/assembler/arm/arm-assembler-command-line-reference.md @@ -5,7 +5,7 @@ ms.date: 05/09/2022 --- # ARM Assembler command-line reference -The Microsoft ARM assemblers, **armasm** and **armasm64**, support several command-line options. By default, **armasm** assembles ARMv7 Thumb assembly language into the Microsoft implementation of the Common Object File Format (COFF). The **armasm64** assembler creates COFF object code for ARM64 and ARM64EC targets. The linker can link COFF code objects produced by both the ARM assembler and the C/C++ compiler. It can link either together with object libraries created by the librarian. +The Microsoft ARM assemblers, **armasm** and **armasm64**, support several command-line options. By default, **armasm** assembles ARMv7 Thumb assembly language into the Microsoft implementation of the Common Object File Format (COFF). The **armasm64** assembler creates COFF object code for ARM64 and ARM64EC targets. The linker can link COFF code objects produced by both the ARM assembler and the MSVC compiler. It can link either together with object libraries created by the librarian. ## Syntax diff --git a/docs/assembler/inline/asm.md b/docs/assembler/inline/asm.md index a14c0854693..78787c9492b 100644 --- a/docs/assembler/inline/asm.md +++ b/docs/assembler/inline/asm.md @@ -13,7 +13,7 @@ helpviewer_keywords: ["__asm keyword [C++], vs. asm blocks", "__asm keyword [C++ The **`__asm`** keyword invokes the inline assembler and can appear wherever a C or C++ statement is legal. It can't appear by itself. It must be followed by an assembly instruction, a group of instructions enclosed in braces, or, at minimum, an empty pair of braces. The term "**`__asm`** block" here refers to any instruction or group of instructions, whether or not in braces. > [!NOTE] -> Visual C++ support for the Standard C++ **`asm`** keyword is limited to the fact that the compiler will not generate an error on the keyword. However, an **`asm`** block will not generate any meaningful code. Use **`__asm`** instead of **`asm`**. +> MSVC support for the Standard C++ **`asm`** keyword is limited to the fact that the compiler will not generate an error on the keyword. However, an **`asm`** block will not generate any meaningful code. Use **`__asm`** instead of **`asm`**. ## Grammar diff --git a/docs/assembler/inline/instruction-set-for-inline-assembly.md b/docs/assembler/inline/instruction-set-for-inline-assembly.md index 13b356b5264..bbcdcbd635e 100644 --- a/docs/assembler/inline/instruction-set-for-inline-assembly.md +++ b/docs/assembler/inline/instruction-set-for-inline-assembly.md @@ -10,7 +10,7 @@ ms.assetid: a45b5b22-9b5f-4545-81ec-70eb8ea2ef9b **Microsoft Specific** -The Microsoft C++ compiler supports all opcodes through the Pentium 4 and AMD Athlon. Additional instructions supported by the target processor can be created with the [_emit Pseudoinstruction](../../assembler/inline/emit-pseudoinstruction.md). +The MSVC compiler supports all opcodes through the Pentium 4 and AMD Athlon. Additional instructions supported by the target processor can be created with the [_emit Pseudoinstruction](../../assembler/inline/emit-pseudoinstruction.md). **END Microsoft Specific** diff --git a/docs/assembler/inline/intel-s-mmx-instruction-set.md b/docs/assembler/inline/intel-s-mmx-instruction-set.md index eb492df28df..c66d08a1255 100644 --- a/docs/assembler/inline/intel-s-mmx-instruction-set.md +++ b/docs/assembler/inline/intel-s-mmx-instruction-set.md @@ -10,7 +10,7 @@ ms.assetid: 705deb2d-c3fd-4696-9e22-8bcf25866daf **Microsoft Specific** -The Microsoft C++ compiler allows you to use Intel's MMX (multimedia extension) instruction set in the inline assembler. The MMX instructions are also supported by the debugger disassembly. The compiler generates a warning message if the function contains MMX instructions but does not contain an EMMS instruction to empty the multimedia state. For more information, see the Intel Web site. +The MSVC compiler allows you to use Intel's MMX (multimedia extension) instruction set in the inline assembler. The MMX instructions are also supported by the debugger disassembly. The compiler generates a warning message if the function contains MMX instructions but does not contain an EMMS instruction to empty the multimedia state. For more information, see the Intel Web site. **END Microsoft Specific** diff --git a/docs/build/arm64-windows-abi-conventions.md b/docs/build/arm64-windows-abi-conventions.md index b5357e9bf3f..0d4f98ff387 100644 --- a/docs/build/arm64-windows-abi-conventions.md +++ b/docs/build/arm64-windows-abi-conventions.md @@ -260,5 +260,5 @@ The cycle counter here is a true cycle counter, not a wall clock. The counting f ## See also -[Common Visual C++ ARM Migration Issues](common-visual-cpp-arm-migration-issues.md)
+[Common Microsoft C++ ARM Migration Issues](common-visual-cpp-arm-migration-issues.md)
[ARM64 exception handling](arm64-exception-handling.md) diff --git a/docs/build/arm64ec-windows-abi-conventions.md b/docs/build/arm64ec-windows-abi-conventions.md index 9c78bc39f54..4cd9117c777 100644 --- a/docs/build/arm64ec-windows-abi-conventions.md +++ b/docs/build/arm64ec-windows-abi-conventions.md @@ -9,7 +9,7 @@ ARM64EC is an application binary interface (ABI) that enables ARM64 binaries to For more information on the x64 and ARM64 ABIs, see [Overview of x64 ABI conventions](x64-software-conventions.md) and [Overview of ARM64 ABI conventions](arm64-windows-abi-conventions.md). -ARM64EC doesn't solve memory model differences between x64 and ARM based architectures. For more information, see [Common Visual C++ ARM migration issues](common-visual-cpp-arm-migration-issues.md). +ARM64EC doesn't solve memory model differences between x64 and ARM based architectures. For more information, see [Common Microsoft C++ ARM migration issues](common-visual-cpp-arm-migration-issues.md). ## Definitions @@ -188,5 +188,5 @@ The ARM64EC toolchain currently doesn't support `__vectorcall`. The compiler emi ## See also [Understanding ARM64EC ABI and assembly code](/windows/arm/arm64ec-abi)\ -[Common Visual C++ ARM migration issues](common-visual-cpp-arm-migration-issues.md)\ +[Common Microsoft C++ ARM migration issues](common-visual-cpp-arm-migration-issues.md)\ [Decorated names](./reference/decorated-names.md) diff --git a/docs/build/building-c-cpp-isolated-applications-and-side-by-side-assemblies.md b/docs/build/building-c-cpp-isolated-applications-and-side-by-side-assemblies.md index 01183ef9898..8a247863e48 100644 --- a/docs/build/building-c-cpp-isolated-applications-and-side-by-side-assemblies.md +++ b/docs/build/building-c-cpp-isolated-applications-and-side-by-side-assemblies.md @@ -10,9 +10,9 @@ ms.topic: concept-article Visual Studio supports a deployment model for Windows client applications based on the idea of [isolated applications](/windows/win32/SbsCs/isolated-applications) and [side-by-side assemblies](/windows/win32/SbsCs/about-side-by-side-assemblies-). By default, Visual Studio builds all native C/C++ applications as isolated applications that use [manifests](/windows/win32/sbscs/manifests) to describe their dependencies on Visual C++ libraries. -Building C/C++ programs as isolated applications presents a range of advantages. For example, an isolated application is unaffected when other C/C++ applications install or uninstall Visual C++ libraries. Visual C++ libraries used by isolated applications may still be redistributed in either the application's local folder, or by installation to the native assembly cache (WinSxS); however, servicing of Visual C++ libraries for already deployed applications can be simplified by using a [publisher configuration file](/windows/win32/SbsCs/publisher-configuration). The isolated application deployment model makes it easier to ensure that C/C++ applications that are running on a specific computer use the most recent version of Visual C++ libraries, while still leaving open the possibility for system administrators and application authors to control explicit version binding of applications to their dependent DLLs. +Building C/C++ programs as isolated applications presents a range of advantages. For example, an isolated application is unaffected when other C/C++ applications install or uninstall Microsoft C++ libraries. Microsoft C++ libraries used by isolated applications may still be redistributed in either the application's local folder, or by installation to the native assembly cache (WinSxS); however, servicing of Microsoft C++ libraries for already deployed applications can be simplified by using a [publisher configuration file](/windows/win32/SbsCs/publisher-configuration). The isolated application deployment model makes it easier to ensure that C/C++ applications that are running on a specific computer use the most recent version of Microsoft C++ libraries, while still leaving open the possibility for system administrators and application authors to control explicit version binding of applications to their dependent DLLs. -This section discusses how you can build your C/C++ application as an isolated application and ensure that it binds to Visual C++ libraries using a manifest. The information in this section primarily applies to native, or unmanaged, C++ applications. For information about deploying native C++ applications built with Visual Studio, see [Redistributing Visual C++ Files](../windows/redistributing-visual-cpp-files.md). +This section discusses how you can build your C/C++ application as an isolated application and ensure that it binds to Microsoft C++ libraries using a manifest. The information in this section primarily applies to native, or unmanaged, C++ applications. For information about deploying native C++ applications built with Visual Studio, see [Redistributing Microsoft C++ Files](../windows/redistributing-visual-cpp-files.md). ## In This Section diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index 7b4a452f29b..1a2c2232451 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -1,15 +1,15 @@ --- -title: "Use the Microsoft C++ toolset from the command line" -description: "Use the Microsoft C++ (MSVC) compiler toolset from the command line outside of the Visual Studio IDE." +title: "Use the Microsoft C++ Build Tools from the command line" +description: "Use the Microsoft C++ (MSVC) Build Tools from the command line outside of the Visual Studio IDE." ms.custom: "conceptual" ms.date: 04/07/2022 helpviewer_keywords: ["command-line builds [C++]", "compiling source code [C++], command line", "builds [C++], command-line", "command line [C++], building from", "command line [C++], compilers"] ms.assetid: 7ca9daed-a003-4162-842d-908f79058365 ms.topic: how-to --- -# Use the Microsoft C++ toolset from the command line +# Use the Microsoft C++ Build Tools from the command line -You can build C and C++ applications on the command line by using tools that are included in Visual Studio. The Microsoft C++ (MSVC) compiler toolset is also downloadable as a standalone package. You don't need to install the Visual Studio IDE if you don't plan to use it. +You can build C and C++ applications on the command line by using tools that are included in Visual Studio. The Microsoft C++ (MSVC) Build Tools are also downloadable as a standalone package. You don't need to install the Visual Studio IDE if you don't plan to use it. > [!NOTE] > This article is about how to set up an environment to use the individual compilers, linkers, librarian, and other basic tools. The native project build system in Visual Studio, based on MSBuild, doesn't use the environment as described in this article. For more information on how to use MSBuild from the command line, see [MSBuild on the command line - C++](msbuild-visual-cpp.md). @@ -23,13 +23,13 @@ If you've installed Visual Studio and a C++ workload, you have all the command-l ::: moniker-end ::: moniker range="<=msvc-150" -If you've installed Visual Studio and a C++ workload, you have all the command-line tools. For information on how to install C++ and Visual Studio, see [Install C++ support in Visual Studio](vscpp-step-0-installation.md). If you only want the command-line toolset, download the [Build Tools for Visual Studio 2017](https://my.visualstudio.com/Downloads?q=2017). When you run the downloaded executable, it updates and runs the Visual Studio Installer. To install only the tools you need for C++ development, select the **Visual C++ build tools** workload. You can select optional libraries and toolsets to include under **Installation details**. To build code by using the Visual Studio 2015 toolset, select the optional MSVC v140 build tools. When you're satisfied with your selections, choose **Install**. +If you've installed Visual Studio and a C++ workload, you have all the command-line tools. For information on how to install C++ and Visual Studio, see [Install C++ support in Visual Studio](vscpp-step-0-installation.md). If you only want the command-line toolset, download the [Build Tools for Visual Studio 2017](https://my.visualstudio.com/Downloads?q=2017). When you run the downloaded executable, it updates and runs the Visual Studio Installer. To install only the tools you need for C++ development, select the **Desktop development with C++** workload. You can select optional libraries and toolsets to include under **Installation details**. To build code by using the Visual Studio 2015 toolset, select the optional MSVC v140 build tools. When you're satisfied with your selections, choose **Install**. ::: moniker-end ## How to use the command-line tools -When you choose one of the C++ workloads in the Visual Studio Installer, it installs the Visual Studio *platform toolset*. A platform toolset has all the C and C++ tools for a specific Visual Studio version. The tools include the C/C++ compilers, linkers, assemblers, and other build tools, and matching libraries and header files. You can use all of these tools at the command line. They're also used internally by the Visual Studio IDE. There are separate x86-hosted and x64-hosted compilers and tools to build code for x86, x64, ARM, and ARM64 targets. Each set of tools for a particular host and target build architecture is stored in its own directory. +When you choose one of the C++ workloads in the Visual Studio Installer, by default, it installs a particular version of the MSVC Build Tools package. For Visual Studio 2022 and earlier, this is organized by a *platform toolset* (v### version format) that has all the C and C++ tools for a specific version of Visual Studio. For Visual Studio 2026 and later, this consists of the MSVC version (v##.## version format), which has all the C and C++ tools for that particular MSVC package. The MSVC version is decoupled from the Visual Studio version. The tools include the C/C++ compilers, linkers, assemblers, and other build tools, and matching libraries and header files. You can use all of these tools at the command-line. They're also used internally by the Visual Studio IDE. There are separate x86-hosted and x64-hosted compilers and tools that build code for x86, x64, ARM, and ARM64 targets. Each set of tools for a particular host and target build architecture is stored in its own directory. To work correctly, the tools require several specific environment variables to be set. These variables are used to add the tools to the path, and to set the locations of include files, library files, and SDKs. To make it easy to set these environment variables, the installer creates customized *command files*, or batch files, during installation. You can run one of these command files to set a specific host and target build architecture, Windows SDK version, and platform toolset. For convenience, the installer also creates shortcuts in your Start menu. The shortcuts open developer command prompt windows by using these command files for specific combinations of host and target. These shortcuts ensure all the required environment variables are set and ready to use. diff --git a/docs/build/cmake-presets-vs.md b/docs/build/cmake-presets-vs.md index b5f46cac1be..5282a491801 100644 --- a/docs/build/cmake-presets-vs.md +++ b/docs/build/cmake-presets-vs.md @@ -265,7 +265,7 @@ For more information on generators that support the `toolset` specification, see To reproduce these builds outside Visual Studio, see [Run CMake from the command line or a CI pipeline](#run-cmake-from-the-command-line-or-a-ci-pipeline). -To build on Linux or without the Visual C++ toolset, specify the name of a compiler on your `PATH` instance, or an environment variable that evaluates to the full path of a compiler. Full paths are discouraged so that the file can remain shareable. A preset that builds with GCC version 8 might look like this: +To build on Linux or without the Microsoft C++ (MSVC) Build Tools, specify the name of a compiler on your `PATH` instance, or an environment variable that evaluates to the full path of a compiler. Full paths are discouraged so that the file can remain shareable. A preset that builds with GCC version 8 might look like this: ```json "environment": { @@ -290,7 +290,7 @@ Set `architecture.strategy` and `toolset.strategy` to `set` when you're building You can set the configuration type (`Debug` or `Release`) for single configuration generators by using `cacheVariables.CMAKE_BUILD_TYPE`. It's equivalent to passing `-D CMAKE_BUILD_TYPE=` to CMake from the command line. For more information, see [`CMAKE_BUILD_TYPE`](https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html). -### Select your target and host architecture when building with the Visual C++ toolset +### Select your target and host architecture when building with the Microsoft C++ Build Tools You can set the target architecture (x64, Win32, ARM64, or ARM) by using `architecture.value`. It's equivalent to passing `-A` to CMake from the command line. For more information, see [Platform Selection](https://cmake.org/cmake/help/latest/generator/Visual%20Studio%2016%202019.html#platform-selection). @@ -466,7 +466,7 @@ You can use the same *`CMakePresets.json`* and *`CMakeUserPresets.json`* files t ### Sourcing the environment when building with command-line generators on Windows -It's up to the user to configure the environment before CMake is invoked in building with a command-line generator. If you're building with Ninja and the Visual C++ toolset on Windows, set the environment before CMake is called to generate the build system. You can do it by calling *`vcvarsall.bat`* with the `architecture` argument. The `architecture` argument specifies the host and target architecture to use. For more information, see [`vcvarsall` syntax](./building-on-the-command-line.md#vcvarsall-syntax). If you build on Linux or on Windows with a Visual Studio Generator, you don't need to take this step. +It's up to the user to configure the environment before CMake is invoked in building with a command-line generator. If you're building with Ninja and the Microsoft C++ Build Tools on Windows, set the environment before CMake is called to generate the build system. You can do it by calling *`vcvarsall.bat`* with the `architecture` argument. The `architecture` argument specifies the host and target architecture to use. For more information, see [`vcvarsall` syntax](./building-on-the-command-line.md#vcvarsall-syntax). If you build on Linux or on Windows with a Visual Studio Generator, you don't need to take this step. It's the same step that Visual Studio takes for you when the IDE invokes CMake. Visual Studio parses the active Configure Preset for the host and target architecture specified by `toolset` and `architecture`. Visual Studio then sources the specified environment from *`vcvarsall.bat`*. When you build from the Windows command line with Ninja, you'll need to take this step yourself. diff --git a/docs/build/cmake-projects-in-visual-studio.md b/docs/build/cmake-projects-in-visual-studio.md index 0ca5262c430..5dcd6b75af3 100644 --- a/docs/build/cmake-projects-in-visual-studio.md +++ b/docs/build/cmake-projects-in-visual-studio.md @@ -147,7 +147,7 @@ You can customize a CMake debugging session by setting properties in the *`launc ### Just My Code for CMake projects -When you build for Windows using the MSVC compiler, CMake projects have support for Just My Code debugging. To change the Just My Code setting, go to **Tools** > **Options** > **Debugging** > **General**. For more information on Just My Code debugging, see [Debug only user code with Just My Code](/visualstudio/debugger/just-my-code). +When you build for Windows using the Microsoft C++ (MSVC) compiler, CMake projects have support for Just My Code debugging. To change the Just My Code setting, go to **Tools** > **Options** > **Debugging** > **General**. For more information on Just My Code debugging, see [Debug only user code with Just My Code](/visualstudio/debugger/just-my-code). ### Edit and Continue for CMake projects diff --git a/docs/build/cmakesettings-reference.md b/docs/build/cmakesettings-reference.md index e9a6acdb8ff..274b0237bf1 100644 --- a/docs/build/cmakesettings-reference.md +++ b/docs/build/cmakesettings-reference.md @@ -122,7 +122,7 @@ By default, when the active configuration specifies a Visual Studio generator, i - `remotePreGenerateCommand`: Specifies the command to run before running CMake to parse the *`CMakeLists.txt`* file. - `remotePrebuildCommand`: Specifies the command to run on the remote machine before building. - `remotePostbuildCommand`: Specifies the command to run on the remote machine after building. -- `variables`: Contains a name-value pair of CMake variables that get passed as **`-D name=value`** to CMake. If your CMake project build instructions specify the addition of any variables directly to the *`CMakeCache.txt`* file, we recommend you add them here instead. This example shows how to specify the name-value pairs to use the 14.14.26428 MSVC toolset: +- `variables`: Contains a name-value pair of CMake variables that get passed as **`-D name=value`** to CMake. If your CMake project build instructions specify the addition of any variables directly to the *`CMakeCache.txt`* file, we recommend you add them here instead. This example shows how to specify the name-value pairs to use the 14.14.26428 MSVC Build Tools: ```json "variables": [ diff --git a/docs/build/common-visual-cpp-64-bit-migration-issues.md b/docs/build/common-visual-cpp-64-bit-migration-issues.md index 531a59ee624..7d8603ea722 100644 --- a/docs/build/common-visual-cpp-64-bit-migration-issues.md +++ b/docs/build/common-visual-cpp-64-bit-migration-issues.md @@ -1,13 +1,13 @@ --- -description: "Learn more about: Common Visual C++ 64-bit Migration Issues" -title: "Common Visual C++ 64-bit Migration Issues" +description: "Learn more about: Common Microsoft C++ 64-bit Migration Issues" +title: "Common Microsoft C++ 64-bit Migration Issues" ms.date: "05/06/2019" helpviewer_keywords: ["64-bit programming [C++], migration", "64-bit compiler [C++], migration", "porting 32-bit code to 64-bit code", "migration [C++], 64-bit code issues", "32-bit code porting [C++]", "64-bit applications [C++]", "64-bit compiler [C++], porting 32-bit code", "Win64 [C++]"] ms.assetid: d17fb838-7513-4e2d-8b27-a1666f17ad76 --- -# Common Visual C++ 64-bit Migration Issues +# Common Microsoft C++ 64-bit Migration Issues -When you use the Microsoft C++ compiler (MSVC) to create applications to run on a 64-bit Windows operating system, you should be aware of the following issues: +When you use the Microsoft C++ (MSVC) compiler to create applications to run on a 64-bit Windows operating system, you should be aware of the following issues: - An **`int`** and a **`long`** are 32-bit values on 64-bit Windows operating systems. For programs that you plan to compile for 64-bit platforms, you should be careful not to assign pointers to 32-bit variables. Pointers are 64-bit on 64-bit platforms, and you will truncate the pointer value if you assign it to a 32-bit variable. @@ -34,4 +34,4 @@ For more information, see: ## See also [Configure C++ projects for 64-bit, x64 targets](configuring-programs-for-64-bit-visual-cpp.md)
-[Visual C++ Porting and Upgrading Guide](../porting/visual-cpp-porting-and-upgrading-guide.md) +[Microsoft C++ Porting and Upgrading Guide](../porting/visual-cpp-porting-and-upgrading-guide.md) diff --git a/docs/build/common-visual-cpp-arm-migration-issues.md b/docs/build/common-visual-cpp-arm-migration-issues.md index 36035c044bf..bd39965f08d 100644 --- a/docs/build/common-visual-cpp-arm-migration-issues.md +++ b/docs/build/common-visual-cpp-arm-migration-issues.md @@ -1,9 +1,9 @@ --- -description: "Learn more about: Common Visual C++ ARM Migration Issues" -title: "Common Visual C++ ARM Migration Issues" +description: "Learn more about: Common Microsoft C++ ARM Migration Issues" +title: "Common Microsoft C++ ARM Migration Issues" ms.date: "05/06/2019" --- -# Common Visual C++ ARM migration issues +# Common Microsoft C++ ARM migration issues This document describes some of the common issues that you might encounter when you migrate code from x86 or x64 architectures to the ARM architecture. It also describes how to avoid these issues, and how to use the compiler to help identify them. @@ -89,7 +89,7 @@ And if there's a dependency between `operator->(memory_handle)` and `operator*(p ### `volatile` keyword default behavior -The MSVC compiler supports two different interpretations of the **`volatile`** storage qualifier that you can specify by using compiler switches. The [/volatile:ms](reference/volatile-volatile-keyword-interpretation.md) switch selects the Microsoft extended volatile semantics that guarantee strong ordering, as has been the traditional case for x86 and x64 because of the strong memory model on those architectures. The [/volatile:iso](reference/volatile-volatile-keyword-interpretation.md) switch selects the strict C++ standard volatile semantics that don't guarantee strong ordering. +The Microsoft C++ (MSVC) compiler supports two different interpretations of the **`volatile`** storage qualifier that you can specify by using compiler switches. The [/volatile:ms](reference/volatile-volatile-keyword-interpretation.md) switch selects the Microsoft extended volatile semantics that guarantee strong ordering, as has been the traditional case for x86 and x64 because of the strong memory model on those architectures. The [/volatile:iso](reference/volatile-volatile-keyword-interpretation.md) switch selects the strict C++ standard volatile semantics that don't guarantee strong ordering. On the ARM architecture (except ARM64EC), the default is **/volatile:iso** because ARM processors have a weakly ordered memory model, and because ARM software doesn't have a legacy of relying on the extended semantics of **/volatile:ms** and doesn't usually have to interface with software that does. However, it's still sometimes convenient or even required to compile an ARM program to use the extended semantics. For example, it may be too costly to port a program to use the ISO C++ semantics, or driver software might have to adhere to the traditional semantics to function correctly. In these cases, you can use the **/volatile:ms** switch; however, to recreate the traditional volatile semantics on ARM targets, the compiler must insert memory barriers around each read or write of a **`volatile`** variable to enforce strong ordering, which can have a negative impact on performance. @@ -97,4 +97,4 @@ On the x86, x64, and ARM64EC architectures, the default is **/volatile:ms** beca ## See also -[Configure Visual C++ for ARM processors](configuring-programs-for-arm-processors-visual-cpp.md) +[Configure Microsoft C++ for ARM processors](configuring-programs-for-arm-processors-visual-cpp.md) diff --git a/docs/build/compare-inclusion-methods.md b/docs/build/compare-inclusion-methods.md index 8c16032aee4..2f8c25c5b6a 100644 --- a/docs/build/compare-inclusion-methods.md +++ b/docs/build/compare-inclusion-methods.md @@ -40,4 +40,4 @@ If you can't use C++20 features, use `#include` and consider precompiled headers [Overview of modules in C++](../cpp/modules-cpp.md)\ [Tutorial: Import the C++ standard library using modules](../cpp/tutorial-import-stl-named-module.md)\ [Walkthrough: Import STL libraries as header units](walkthrough-import-stl-header-units.md#approach1)\ -[Walkthrough: Build and import header units in your Visual C++ projects](walkthrough-header-units.md) \ No newline at end of file +[Walkthrough: Build and import header units in your Microsoft C++ projects](walkthrough-header-units.md) \ No newline at end of file diff --git a/docs/build/concepts-of-isolated-applications-and-side-by-side-assemblies.md b/docs/build/concepts-of-isolated-applications-and-side-by-side-assemblies.md index ef50625ae8d..2993d7abb37 100644 --- a/docs/build/concepts-of-isolated-applications-and-side-by-side-assemblies.md +++ b/docs/build/concepts-of-isolated-applications-and-side-by-side-assemblies.md @@ -24,9 +24,9 @@ At execution time, Windows uses assembly information from the application manife You can change side-by-side assembly dependencies after an application has been deployed by modifying the [Publisher Configuration Files](/windows/win32/SbsCs/publisher-configuration-files) and [Application Configuration Files](/windows/win32/SbsCs/application-configuration-files). A publisher configuration file, also known as a publisher policy file, is an XML file that globally redirects applications and assemblies from using one version of a side-by-side assembly to using another version of the same assembly. For example, you could change a dependency when a bug fix or security fix is deployed for a side-by-side assembly and you want to redirect all applications to use the fixed version. An application configuration file is an XML file that redirects a specific application from using one version of a side-by-side assembly to using another version of the same assembly. You can use an application configuration file to redirect a particular application to use a version of a side-by-side assembly that's different from the one that's defined in the publisher configuration file. For more information, see [Configuration](/windows/win32/SbsCs/configuration). -## Visual C++ libraries +## Microsoft C++ libraries -In Visual Studio 2005 and Visual Studio 2008, redistributable libraries such as ATL, MFC, CRT, Standard C++, OpenMP, and MSDIA were deployed as shared side-by-side assemblies to the native assembly cache. In the current version, the redistributable libraries use central deployment. By default, all applications that are built by using Visual Studio are built with the manifest embedded in the final binary, and the manifest describes the dependencies of the binary on the Visual C++ libraries. To understand manifest generation for C++ applications, see [Understanding Manifest Generation for C/C++ Programs](understanding-manifest-generation-for-c-cpp-programs.md). A manifest is not required for applications that are statically linked to the libraries that they use, or that use local deployment. For more information about deployment, see [Deployment in Visual C++](../windows/deployment-in-visual-cpp.md). +In Visual Studio 2005 and Visual Studio 2008, redistributable libraries such as ATL, MFC, CRT, Standard C++, OpenMP, and MSDIA were deployed as shared side-by-side assemblies to the native assembly cache. In the current version, the redistributable libraries use central deployment. By default, all applications that are built by using Visual Studio are built with the manifest embedded in the final binary, and the manifest describes the dependencies of the binary on the Microsoft C++ libraries. To understand manifest generation for C++ applications, see [Understanding Manifest Generation for C/C++ Programs](understanding-manifest-generation-for-c-cpp-programs.md). A manifest is not required for applications that are statically linked to the libraries that they use, or that use local deployment. For more information about deployment, see [Deployment in Microsoft C++](../windows/deployment-in-visual-cpp.md). ## See also diff --git a/docs/build/configuring-programs-for-64-bit-visual-cpp.md b/docs/build/configuring-programs-for-64-bit-visual-cpp.md index e922af4027d..845be402593 100644 --- a/docs/build/configuring-programs-for-64-bit-visual-cpp.md +++ b/docs/build/configuring-programs-for-64-bit-visual-cpp.md @@ -7,15 +7,15 @@ ms.assetid: cb99f72b-8c74-48f4-846a-8921b37b97e9 --- # Configure C++ projects for 64-bit, x64 targets -This section contains topics about targeting 64-bit x64 hardware with the Visual C++ build tools. +This section contains topics about targeting 64-bit x64 hardware with the Microsoft C++ (MSVC) Build Tools. ## In This Section -- [How to: Configure Visual C++ Projects to Target 64-Bit, x64 Platforms](how-to-configure-visual-cpp-projects-to-target-64-bit-platforms.md) +- [How to: Configure Microsoft C++ Projects to Target 64-Bit, x64 Platforms](how-to-configure-visual-cpp-projects-to-target-64-bit-platforms.md) - [How to: Enable a 64-bit, x64-hosted MSVC toolset on the command line](how-to-enable-a-64-bit-visual-cpp-toolset-on-the-command-line.md) -- [Common Visual C++ 64-bit Migration Issues](common-visual-cpp-64-bit-migration-issues.md) +- [Common Microsoft C++ 64-bit Migration Issues](common-visual-cpp-64-bit-migration-issues.md) - [x64 Software Conventions](x64-software-conventions.md) diff --git a/docs/build/configuring-programs-for-arm-processors-visual-cpp.md b/docs/build/configuring-programs-for-arm-processors-visual-cpp.md index fc99baa1b25..bb6e7c40dc9 100644 --- a/docs/build/configuring-programs-for-arm-processors-visual-cpp.md +++ b/docs/build/configuring-programs-for-arm-processors-visual-cpp.md @@ -5,7 +5,7 @@ ms.date: "07/11/2018" --- # Configure C++ projects for ARM processors -This section of the documentation contains information about how to use the MSVC build tools to target ARM hardware. +This section of the documentation contains information about how to use the Microsoft C++ (MSVC) Build Tools to target ARM hardware. ## In This Section diff --git a/docs/build/creating-precompiled-header-files.md b/docs/build/creating-precompiled-header-files.md index 2b0f1f5ebe1..ec450093ce7 100644 --- a/docs/build/creating-precompiled-header-files.md +++ b/docs/build/creating-precompiled-header-files.md @@ -348,5 +348,5 @@ int main( void ) [MSVC compiler options](reference/compiler-options.md)\ [Overview of modules in C++](../cpp/modules-cpp.md)\ [Tutorial: Import the C++ standard library using modules](../cpp/tutorial-import-stl-named-module.md)\ -[Walkthrough: Build and import header units in your Visual C++ projects](walkthrough-header-units.md)\ +[Walkthrough: Build and import header units in your Microsoft C++ projects](walkthrough-header-units.md)\ [Walkthrough: Import STL libraries as header units](walkthrough-import-stl-header-units.md#approach1) diff --git a/docs/build/determining-which-exporting-method-to-use.md b/docs/build/determining-which-exporting-method-to-use.md index 58d6c4432c2..f34d60e3e3b 100644 --- a/docs/build/determining-which-exporting-method-to-use.md +++ b/docs/build/determining-which-exporting-method-to-use.md @@ -19,7 +19,7 @@ Exporting functions in a .def file gives you control over the export ordinals. W Another advantage to using a .def file is that you can use the `NONAME` attribute to export a function. This puts only the ordinal in the exports table in the DLL. For DLLs that have a large number of exported functions, using the `NONAME` attribute can reduce the size of the DLL file. For information about how to write a module definition statement, see [Rules for Module-Definition Statements](reference/rules-for-module-definition-statements.md). For information about ordinal export, see [Exporting Functions from a DLL by Ordinal Rather Than by Name](exporting-functions-from-a-dll-by-ordinal-rather-than-by-name.md). -A disadvantage of using a .def file is that if you are exporting functions in a C++ file, you either have to put the decorated names in the .def file or define the exported functions by using extern "C" to avoid the name decoration that's done by the MSVC compiler. +A disadvantage of using a .def file is that if you are exporting functions in a C++ file, you either have to put the decorated names in the .def file or define the exported functions by using extern "C" to avoid the name decoration that's done by the Microsoft C++ (MSVC) compiler. If you put the decorated names in the .def file, you can obtain them by using the [DUMPBIN](reference/dumpbin-reference.md) tool or by using the linker [/MAP](reference/map-generate-mapfile.md) option. The decorated names that are produced by the compiler are compiler-specific; therefore, if you put the decorated names that are produced by the compiler into a .def file, the applications that link to the DLL must also be built by using the same version of the compiler so that the decorated names in the calling application match the exported names in the .def file of the DLL. diff --git a/docs/build/dlls-in-visual-cpp.md b/docs/build/dlls-in-visual-cpp.md index a1974a8268a..cf7683b6c21 100644 --- a/docs/build/dlls-in-visual-cpp.md +++ b/docs/build/dlls-in-visual-cpp.md @@ -68,7 +68,7 @@ Describes explicit and implicit linking to a DLL. [Initialize a DLL](run-time-library-behavior.md#initializing-a-dll)\ Discusses DLL initialization code that must execute when your DLL loads. -[DLLs and Visual C++ run-time library behavior](run-time-library-behavior.md)\ +[DLLs and Microsoft C++ run-time library behavior](run-time-library-behavior.md)\ Describes the run-time library DLL startup sequence. [LoadLibrary and AfxLoadLibrary](loadlibrary-and-afxloadlibrary.md)\ diff --git a/docs/build/exception-handling-x64.md b/docs/build/exception-handling-x64.md index 41a6e29b6e4..8e35eb70ffd 100644 --- a/docs/build/exception-handling-x64.md +++ b/docs/build/exception-handling-x64.md @@ -7,7 +7,7 @@ ms.assetid: 41fecd2d-3717-4643-b21c-65dcd2f18c93 --- # x64 exception handling -An overview of structured exception handling and C++ exception handling coding conventions and behavior on the x64. For general information on exception handling, see [Exception Handling in Visual C++](../cpp/exception-handling-in-visual-cpp.md). +An overview of structured exception handling and C++ exception handling coding conventions and behavior on the x64. For general information on exception handling, see [Exception Handling in Microsoft C++](../cpp/exception-handling-in-visual-cpp.md). ## Unwind data for exception handling, debugger support diff --git a/docs/build/exporting-from-a-dll-using-def-files.md b/docs/build/exporting-from-a-dll-using-def-files.md index ce1b224eede..653273a5fe2 100644 --- a/docs/build/exporting-from-a-dll-using-def-files.md +++ b/docs/build/exporting-from-a-dll-using-def-files.md @@ -29,7 +29,7 @@ EXPORTS If you use the [MFC DLL Wizard](../mfc/reference/mfc-dll-wizard.md) to create an MFC DLL, the wizard creates a skeleton DEF file for you and automatically adds it to your project. Add the names of the functions to be exported to this file. For non-MFC DLLs, create the DEF file yourself and add it to your project. Then go to **Project** > **Properties** > **Linker** > **Input** > **Module Definition File** and enter the name of the DEF file. Repeat this step for each configuration and platform, or do it all at once by selecting **Configuration = All Configurations**, and **Platform = All Platforms**. -If you are exporting functions in a C++ file, you have to either place the decorated names in the DEF file or define your exported functions with standard C linkage by using extern "C". If you need to place the decorated names in the DEF file, you can obtain them by using the [DUMPBIN](../build/reference/dumpbin-reference.md) tool or by using the linker [/MAP](../build/reference/map-generate-mapfile.md) option. Note that the decorated names produced by the compiler are compiler specific. If you place the decorated names produced by the Microsoft C++ compiler (MSVC) into a DEF file, applications that link to your DLL must also be built using the same version of MSVC so that the decorated names in the calling application match the exported names in the DLL's DEF file. +If you are exporting functions in a C++ file, you have to either place the decorated names in the DEF file or define your exported functions with standard C linkage by using extern "C". If you need to place the decorated names in the DEF file, you can obtain them by using the [DUMPBIN](../build/reference/dumpbin-reference.md) tool or by using the linker [/MAP](../build/reference/map-generate-mapfile.md) option. Note that the decorated names produced by the compiler are compiler specific. If you place the decorated names produced by the Microsoft C++ (MSVC) compiler into a DEF file, applications that link to your DLL must also be built using the same version of MSVC so that the decorated names in the calling application match the exported names in the DLL's DEF file. > [!NOTE] > A DLL built with Visual Studio 2015 can be consumed by applications built with Visual Studio 2017 or Visual Studio 2019. diff --git a/docs/build/how-to-enable-a-64-bit-visual-cpp-toolset-on-the-command-line.md b/docs/build/how-to-enable-a-64-bit-visual-cpp-toolset-on-the-command-line.md index 4e5fb870095..e551b430faf 100644 --- a/docs/build/how-to-enable-a-64-bit-visual-cpp-toolset-on-the-command-line.md +++ b/docs/build/how-to-enable-a-64-bit-visual-cpp-toolset-on-the-command-line.md @@ -27,7 +27,7 @@ Any of the native or cross compiler tools build configurations can be used on th > [!NOTE] > For information about the specific tools that are included with each Visual Studio edition, see [Visual C++ Tools and Features in Visual Studio Editions](../overview/visual-cpp-tools-and-features-in-visual-studio-editions.md). > -> For information about how to use the Visual Studio IDE to create 64-bit applications, see [How to: Configure Visual C++ Projects to Target 64-Bit, x64 Platforms](how-to-configure-visual-cpp-projects-to-target-64-bit-platforms.md). +> For information about how to use the Visual Studio IDE to create 64-bit applications, see [How to: Configure Microsoft C++ Projects to Target 64-Bit, x64 Platforms](how-to-configure-visual-cpp-projects-to-target-64-bit-platforms.md). When you install a C++ workload in the Visual Studio installer, it always installs 32-bit, x86-hosted, native and cross compiler tools to build x86 and x64 code. If you include the Universal Windows Platform workload, it also installs x86-hosted cross compiler tools to build ARM code. If you install these workloads on a 64-bit, x64 processor, you also get 64-bit native and cross compiler tools to build x86, x64, and ARM code. The 32-bit and 64-bit tools generate identical code, but the 64-bit tools support more memory for precompiled header symbols and the Whole Program Optimization ([/GL](reference/gl-whole-program-optimization.md) and [/LTCG](reference/ltcg-link-time-code-generation.md)) options. If you run into memory limits when you use the 32-bit tools, try the 64-bit tools. diff --git a/docs/build/how-to-modify-the-target-framework-and-platform-toolset.md b/docs/build/how-to-modify-the-target-framework-and-platform-toolset.md index a91d9d91583..3c80c787b4a 100644 --- a/docs/build/how-to-modify-the-target-framework-and-platform-toolset.md +++ b/docs/build/how-to-modify-the-target-framework-and-platform-toolset.md @@ -10,7 +10,7 @@ You can edit a Visual Studio C++ project file to target different versions of th ## Platform toolset -The platform toolset consists of the C++ compiler (cl.exe) and linker (link.exe), along with the C/C++ standard libraries. Visual Studio 2015, Visual Studio 2017, and Visual Studio 2019 are binary-compatible. It's shown by the major version of the toolset, which has remained at 14. Projects compiled in Visual Studio 2019 or Visual Studio 2017 are ABI-backwards-compatible with 2017 and 2015 projects. The minor version has updated by 1 for each version since Visual Studio 2015: +The platform toolset consists of the Microsoft C++ (MSVC) compiler (cl.exe) and linker (link.exe), along with the C/C++ standard libraries. Visual Studio 2015, Visual Studio 2017, and Visual Studio 2019 are binary-compatible. It's shown by the major version of the toolset, which has remained at 14. Projects compiled in Visual Studio 2019 or Visual Studio 2017 are ABI-backwards-compatible with 2017 and 2015 projects. The minor version has updated by 1 for each version since Visual Studio 2015: - Visual Studio 2015: v140 - Visual Studio 2017: v141 @@ -25,7 +25,7 @@ Visual Studio also supports multitargeting for C++ projects. You can use the lat When you change the target Framework, also change the platform toolset to a version that supports that Framework. For example, to target the .NET Framework 4.5, you must use a compatible platform toolset. These toolsets include Visual Studio 2015 (v140), Visual Studio 2013 (v120), or Visual Studio 2012 (v110). You can use the [Windows 7.1 SDK](https://www.microsoft.com/en-us/download/details.aspx?id=8442) to target .NET Framework 2.0, 3.0, 3.5, and 4. -You can extend the target platform further by creating a custom platform toolset. For more information, see [C++ Native Multi-Targeting](https://devblogs.microsoft.com/cppblog/c-native-multi-targeting/) on the Visual C++ blog. +You can extend the target platform further by creating a custom platform toolset. For more information, see [C++ Native Multi-Targeting](https://devblogs.microsoft.com/cppblog/c-native-multi-targeting/) on the Microsoft C++ Team blog. ### To change the target Framework diff --git a/docs/build/importing-using-def-files.md b/docs/build/importing-using-def-files.md index 877708fe77e..f8cd00daca4 100644 --- a/docs/build/importing-using-def-files.md +++ b/docs/build/importing-using-def-files.md @@ -50,7 +50,7 @@ if (ulDataInDll == 0L) /*sample code fragment*/ Using CONSTANT is more risky because if you forget to use the extra level of indirection, you could potentially access the import address table's pointer to the variable — not the variable itself. This type of problem can often manifest as an access violation because the import address table is currently made read-only by the compiler and linker. -The current MSVC linker issues a warning if it sees CONSTANT in the .def file to account for this case. The only real reason to use CONSTANT is if you cannot recompile some object file where the header file did not list **`__declspec(dllimport)`** on the prototype. +The current Microsoft C++ (MSVC) linker issues a warning if it sees CONSTANT in the .def file to account for this case. The only real reason to use CONSTANT is if you cannot recompile some object file where the header file did not list **`__declspec(dllimport)`** on the prototype. ## See also diff --git a/docs/build/msbuild-visual-cpp.md b/docs/build/msbuild-visual-cpp.md index 0066c81f6d9..858b524a7e4 100644 --- a/docs/build/msbuild-visual-cpp.md +++ b/docs/build/msbuild-visual-cpp.md @@ -44,7 +44,7 @@ Lists the MSBuild XML Schema elements, together with their attributes, and paren Describes the command-line arguments and options that you can use with msbuild.exe. - [Task Reference](/visualstudio/msbuild/msbuild-task-reference) -Describes MSBuild tasks. Especially note these tasks, which are specific to Visual C++: [BscMake Task](/visualstudio/msbuild/bscmake-task), [CL Task](/visualstudio/msbuild/cl-task), [CPPClean Task](/visualstudio/msbuild/cppclean-task), [LIB Task](/visualstudio/msbuild/lib-task), [Link Task](/visualstudio/msbuild/link-task), [MIDL Task](/visualstudio/msbuild/midl-task), [MT Task](/visualstudio/msbuild/mt-task), [RC Task](/visualstudio/msbuild/rc-task), [SetEnv Task](/visualstudio/msbuild/setenv-task), [VCMessage Task](/visualstudio/msbuild/vcmessage-task) +Describes MSBuild tasks. Especially note these tasks, which are specific to Microsoft C++: [BscMake Task](/visualstudio/msbuild/bscmake-task), [CL Task](/visualstudio/msbuild/cl-task), [CPPClean Task](/visualstudio/msbuild/cppclean-task), [LIB Task](/visualstudio/msbuild/lib-task), [Link Task](/visualstudio/msbuild/link-task), [MIDL Task](/visualstudio/msbuild/midl-task), [MT Task](/visualstudio/msbuild/mt-task), [RC Task](/visualstudio/msbuild/rc-task), [SetEnv Task](/visualstudio/msbuild/setenv-task), [VCMessage Task](/visualstudio/msbuild/vcmessage-task) ## In This Section diff --git a/docs/build/overview-of-arm-abi-conventions.md b/docs/build/overview-of-arm-abi-conventions.md index 5ab221541eb..0b80497f7ac 100644 --- a/docs/build/overview-of-arm-abi-conventions.md +++ b/docs/build/overview-of-arm-abi-conventions.md @@ -8,7 +8,7 @@ ms.date: "07/11/2018" The application binary interface (ABI) for code compiled for Windows on ARM processors is based on the standard ARM EABI. This article highlights key differences between Windows on ARM and the standard. This document covers the ARM32 ABI. For information about the ARM64 ABI, see [Overview of ARM64 ABI conventions](arm64-windows-abi-conventions.md). For more information about the standard ARM EABI, see [Application Binary Interface (ABI) for the ARM Architecture](https://github.com/ARM-software/abi-aa) (external link). > [!NOTE] -> Using the Microsoft Visual C++ (MSVC) build tools to target ARM32 is deprecated starting with Visual Studio 2026. If you need to target ARM32, use the Visual Studio 2022 v143 build tools. +> Using the Microsoft C++ (MSVC) Build Tools to target ARM32 is deprecated starting with Visual Studio 2026. If you need to target ARM32, use the Visual Studio 2022 v143 build tools. ## Base Requirements @@ -196,5 +196,5 @@ The counter is a true cycle counter, not a clock; therefore, the counting freque ## See also -[Common Visual C++ ARM Migration Issues](common-visual-cpp-arm-migration-issues.md)
+[Common Microsoft C++ ARM Migration Issues](common-visual-cpp-arm-migration-issues.md)
[ARM Exception Handling](arm-exception-handling.md) diff --git a/docs/build/projects-and-build-systems-cpp.md b/docs/build/projects-and-build-systems-cpp.md index 156cd4acfd8..511330c45a4 100644 --- a/docs/build/projects-and-build-systems-cpp.md +++ b/docs/build/projects-and-build-systems-cpp.md @@ -9,7 +9,7 @@ ms.custom: intro-overview --- # C/C++ projects and build systems in Visual Studio -You can use Visual Studio to edit, compile, and build any C++ code base with full IntelliSense support without having to convert that code into a Visual Studio project or compile with the MSVC toolset. For example, you can edit a cross-platform CMake project in Visual Studio on a Windows machine, then compile it for Linux using g++ on a remote Linux machine. +You can use Visual Studio to edit, compile, and build any C++ code base with full IntelliSense support without having to convert that code into a Visual Studio project or compile with the Microsoft C++ (MSVC) Build Tools. For example, you can edit a cross-platform CMake project in Visual Studio on a Windows machine, then compile it for Linux using g++ on a remote Linux machine. ## C++ compilation @@ -21,9 +21,9 @@ Basic C++ compilation involves three main steps: - The C++ compiler compiles each translation unit into object files (.obj), applying whatever compiler options have been set. - The *linker* merges the object files into a single executable, applying the linker options that have been set. -## The MSVC toolset +## The Microsoft C++ (MSVC) Build Tools -The Microsoft C++ compiler, linker, standard libraries, and related utilities make up the MSVC compiler toolset (also called a toolchain or "build tools"). These are included in Visual Studio. You can also download and use the command-line toolset as a free standalone package. For more information, see [Build Tools for Visual Studio](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) on the Visual Studio Downloads page. +The Microsoft C++ compiler, linker, standard libraries, and related utilities make up the Microsoft C++ (MSVC) Build Tools (also called a toolchain or toolset). These are included in Visual Studio. You can also download and use the command-line toolset as a free standalone package. For more information, see [Build Tools for Visual Studio](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) on the Visual Studio Downloads page. You can build simple programs by invoking the MSVC compiler (cl.exe) directly from the command line. The following command accepts a single source code file, and invokes cl.exe to build an executable called *hello.exe*: @@ -83,7 +83,7 @@ Describes the deployment model for Windows Desktop applications, based on the id How to target 64-bit x64 hardware with the MSVC build tools. [Configure C++ projects for ARM processors](configuring-programs-for-arm-processors-visual-cpp.md)\ -How to use the MSVC build tools to target ARM hardware. +How to use the MSVC Build Tools to target ARM hardware. [Optimizing Your Code](optimizing-your-code.md)\ How to optimize your code in various ways including program guided optimizations. diff --git a/docs/build/reference/c-cpp-prop-page.md b/docs/build/reference/c-cpp-prop-page.md index 4f92e38d17f..b43746b08b6 100644 --- a/docs/build/reference/c-cpp-prop-page.md +++ b/docs/build/reference/c-cpp-prop-page.md @@ -387,7 +387,7 @@ Experimental support for the C++ Modules TS and Standard Library modules. ### Build ISO C++23 Standard Library Modules -Starting in Visual Studio 17.6, when this property is enabled and [C++ Language Standard](#cpplang) is set to `/std:c++latest`, Visual C++ projects automatically find and build ISO C++23 Standard Library modules. This enables you to `import std` or `import std.compat` in your C++ code. +Starting in Visual Studio 17.6, when this property is enabled and [C++ Language Standard](#cpplang) is set to `/std:c++latest`, Microsoft C++ projects automatically find and build ISO C++23 Standard Library modules. This enables you to `import std` or `import std.compat` in your C++ code. ## C/C++ Precompiled Headers Properties diff --git a/docs/build/reference/fsanitize.md b/docs/build/reference/fsanitize.md index 6e9e8c94395..e1eef40728d 100644 --- a/docs/build/reference/fsanitize.md +++ b/docs/build/reference/fsanitize.md @@ -37,7 +37,7 @@ The **`/fsanitize-address-use-after-return`**, **`/fno-sanitize-address-vcasan-l 1. Select the **Configuration Properties** > **C/C++** > **General** property page. -1. Modify the **Enable Address Sanitizer** property. To enable it, choose **Yes (/fsanitize=address)**. +1. Modify the **Enable AddressSanitizer** property. To enable it, choose **Yes (/fsanitize=address)**. 1. Choose **OK** or **Apply** to save your changes. diff --git a/docs/build/reference/general-property-page-project.md b/docs/build/reference/general-property-page-project.md index 5fd0640279f..b06af7088be 100644 --- a/docs/build/reference/general-property-page-project.md +++ b/docs/build/reference/general-property-page-project.md @@ -77,7 +77,7 @@ You can use project macros to change the directory location. For more informatio ### Platform Toolset -Specifies the toolset used for building the current configuration. This property allows the project to target a different version of the Visual C++ libraries and compiler. By default, Visual Studio C++ projects target the latest toolset installed by Visual Studio. You can choose one of the toolsets installed by several previous versions of Visual Studio instead. Some older toolsets can create executables that run on Windows XP or Vista. For more information on how to change the platform toolset, see [How to: Modify the target framework and platform toolset](../how-to-modify-the-target-framework-and-platform-toolset.md). +Specifies the toolset used for building the current configuration. This property allows the project to target a different version of the Microsoft C++ libraries and compiler. By default, Visual Studio C++ projects target the latest toolset installed by Visual Studio. You can choose one of the toolsets installed by several previous versions of Visual Studio instead. Some older toolsets can create executables that run on Windows XP or Vista. For more information on how to change the platform toolset, see [How to: Modify the target framework and platform toolset](../how-to-modify-the-target-framework-and-platform-toolset.md). ### Enable Managed Incremental Build diff --git a/docs/build/reference/linking.md b/docs/build/reference/linking.md index 8891ebf554d..1934bea919d 100644 --- a/docs/build/reference/linking.md +++ b/docs/build/reference/linking.md @@ -68,8 +68,8 @@ link /dll @objlist.txt @liblist.txt @exports.txt The linker recognizes the following environment variables: - `LINK` and `_LINK_`, if defined. The linker prepends the options and arguments defined in the `LINK` environment variable and appends the options and arguments defined in the `_LINK_` environment variable to the command line arguments before processing. -- `LIB`, if defined. The linker uses the `LIB` path when it searches for an object, library, or other file specified on the command line or by the [`/BASE`](base-base-address.md) option. It also uses the `LIB` path to find a `.pdb` file named in an object. The `LIB` variable can contain one or more path specifications, separated by semicolons. One path must point to the `\lib` subdirectory of your Visual C++ installation. -- `PATH`, if the tool needs to run `CVTRES` and can't find the file in the same directory as `link.exe` itself. (`link.exe` requires `CVTRES` to link a `.res` file.) `PATH` must point to the `\bin` subdirectory of your Visual C++ installation. +- `LIB`, if defined. The linker uses the `LIB` path when it searches for an object, library, or other file specified on the command line or by the [`/BASE`](base-base-address.md) option. It also uses the `LIB` path to find a `.pdb` file named in an object. The `LIB` variable can contain one or more path specifications, separated by semicolons. One path must point to the `\lib` subdirectory of your Microsoft C++ installation. +- `PATH`, if the tool needs to run `CVTRES` and can't find the file in the same directory as `link.exe` itself. (`link.exe` requires `CVTRES` to link a `.res` file.) `PATH` must point to the `\bin` subdirectory of your Microsoft C++ installation. - `TMP`, to specify a directory when linking OMF or `.res` files. ## See also diff --git a/docs/build/reference/microsoft-extensions-to-c-and-cpp.md b/docs/build/reference/microsoft-extensions-to-c-and-cpp.md index 77eceff58eb..57eab588697 100644 --- a/docs/build/reference/microsoft-extensions-to-c-and-cpp.md +++ b/docs/build/reference/microsoft-extensions-to-c-and-cpp.md @@ -6,7 +6,7 @@ helpviewer_keywords: ["or_eq operator", "~ operator, extensions to C/C++", "& op --- # Microsoft extensions to C and C++ -Microsoft Visual C++ (MSVC) extends the C and C++ language standards in several ways, detailed in this article. +Microsoft C++ (MSVC) extends the C and C++ language standards in several ways, detailed in this article. The MSVC C++ compiler defaults to support for ISO C++14 with some ISO C++17 features and some Microsoft-specific language extensions. For more information on supported features, see [Microsoft C/C++ language conformance by Visual Studio version](../../overview/visual-cpp-language-conformance.md). You can use the **`/std`** compiler option to enable full support for ISO C++17 and ISO C++20 language features. For more information, see [`/std` (Specify language standard version)](std-specify-language-standard-version.md). diff --git a/docs/build/reference/msbuild-visual-cpp-overview.md b/docs/build/reference/msbuild-visual-cpp-overview.md index e614f2f98a6..7ea809fa747 100644 --- a/docs/build/reference/msbuild-visual-cpp-overview.md +++ b/docs/build/reference/msbuild-visual-cpp-overview.md @@ -84,7 +84,7 @@ To use MSBuild effectively, it helps to know which properties and targets are us ### `PlatformToolset` property -The `PlatformToolset` property determines which MSVC toolset is used in the build. By default, the current toolset is used. When this property is set, its value gets concatenated with literal strings to form the path. It's the directory that contains the property and target files required to build a project for a particular platform. The platform toolset must be installed to build by using that platform toolset version. +The `PlatformToolset` property determines which Microsoft C++ (MSVC) toolset is used in the build. By default, the current toolset is used. When this property is set, its value gets concatenated with literal strings to form the path. It's the directory that contains the property and target files required to build a project for a particular platform. The platform toolset must be installed to build by using that platform toolset version. For example, set the `PlatformToolset` property to `v140` to use Visual Studio 2015 tools and libraries to build your application: diff --git a/docs/build/reference/vcxproj-file-structure.md b/docs/build/reference/vcxproj-file-structure.md index d2ba07e23ff..2071e7e393d 100644 --- a/docs/build/reference/vcxproj-file-structure.md +++ b/docs/build/reference/vcxproj-file-structure.md @@ -7,7 +7,7 @@ ms.assetid: 14d0c552-29db-480e-80c1-7ea89d6d8e9c --- # `.vcxproj` and `.props` file structure -[MSBuild](../msbuild-visual-cpp.md) is the default project system in Visual Studio; when you choose **File** > **New Project** in Visual C++ you're creating an MSBuild project whose settings are stored in an XML project file that has the extension *`.vcxproj`*. The project file may also import *`.props`* files and *`.targets`* files where settings can be stored. +[MSBuild](../msbuild-visual-cpp.md) is the default project system in Visual Studio; when you choose **File** > **New Project**, in most cases you're creating an MSBuild project whose settings are stored in an XML project file that has the extension *`.vcxproj`*. The project file may also import *`.props`* files and *`.targets`* files where settings can be stored. If you intend to maintain your project properties in the IDE, we recommend you only create and modify your *`.vcxproj`* projects in the IDE, and avoid manual edits to the files. In most cases, you never need to manually edit the project file. Manual edits may break the project connections required to modify project settings in the Visual Studio property pages, and can cause build errors that are difficult to debug and repair. For more information about using the property pages, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md). @@ -188,7 +188,7 @@ The `PropertySheets` group contains the imports for user property sheets. These ``` -`UserMacros` contains properties you create as variables that are used to customize your build process. For example, you can define a user macro to define your custom output path as $(CustomOutputPath) and use it to define other variables. This property group houses such properties. In Visual Studio, this group isn't populated in the project file because Visual C++ doesn't support user macros for configurations. User macros are supported in property sheets. +`UserMacros` contains properties you create as variables that are used to customize your build process. For example, you can define a user macro to define your custom output path as $(CustomOutputPath) and use it to define other variables. This property group houses such properties. In Visual Studio, this group isn't populated in the project file because Microsoft C++ doesn't support user macros for configurations. User macros are supported in property sheets. ### Per-configuration PropertyGroup elements diff --git a/docs/build/reference/visual-cpp-project-types.md b/docs/build/reference/visual-cpp-project-types.md index 41e998d56e9..baebf7c6045 100644 --- a/docs/build/reference/visual-cpp-project-types.md +++ b/docs/build/reference/visual-cpp-project-types.md @@ -1,6 +1,6 @@ --- description: "Learn more about: C++ project templates" -title: "Visual C++ Project Types" +title: "Microsoft C++ Project Types" ms.date: "08/13/2019" helpviewer_keywords: ["programs [C++], projects", "project templates [Visual Studio], C++", "TODO comments [C++]", "projects [C++], types", "templates [C++], projects", "applications [C++], projects", "C++ projects, types"] ms.assetid: 7337987e-1e7b-4120-9a4b-94f0401f15e7 diff --git a/docs/build/regular-dlls-statically-linked-to-mfc.md b/docs/build/regular-dlls-statically-linked-to-mfc.md index d3d90f05184..4faae4e7bb4 100644 --- a/docs/build/regular-dlls-statically-linked-to-mfc.md +++ b/docs/build/regular-dlls-statically-linked-to-mfc.md @@ -9,7 +9,7 @@ ms.assetid: 2eed531c-726a-4b8a-b936-f721dc00a7fa A regular MFC DLL statically linked to MFC is a DLL that uses MFC internally, and the exported functions in the DLL can be called by either MFC or non-MFC executables. As the name describes, this kind of DLL is built using the static link library version of MFC. Functions are usually exported from a regular MFC DLL using the standard C interface. For an example of how to write, build, and use a regular MFC DLL, see the sample [DLLScreenCap](https://github.com/Microsoft/VCSamples/tree/master/VC2010Samples/MFC/advanced/DllScreenCap). -Note that the term USRDLL is no longer used in the Visual C++ documentation. A regular MFC DLL that is statically linked to MFC has the same characteristics as the former USRDLL. +Note that the term USRDLL is no longer used in the Microsoft C++ documentation. A regular MFC DLL that is statically linked to MFC has the same characteristics as the former USRDLL. A regular MFC DLL, statically linked to MFC, has the following features: diff --git a/docs/build/run-time-library-behavior.md b/docs/build/run-time-library-behavior.md index 1a85ae8d849..ad23da72e29 100644 --- a/docs/build/run-time-library-behavior.md +++ b/docs/build/run-time-library-behavior.md @@ -1,5 +1,5 @@ --- -description: "Learn more about: DLLs and Visual C++ run-time library behavior" +description: "Learn more about: DLLs and Microsoft C++ run-time library behavior" title: "DLLs and Visual C++ run-time library behavior" ms.date: "08/19/2019" f1_keywords: ["_DllMainCRTStartup", "CRT_INIT"] diff --git a/docs/build/stack-usage.md b/docs/build/stack-usage.md index 8a2a87b36dd..59c102e5ec9 100644 --- a/docs/build/stack-usage.md +++ b/docs/build/stack-usage.md @@ -41,7 +41,7 @@ A leaf function is one that does not require a function table entry. It can't ma ## malloc alignment -[malloc](../c-runtime-library/reference/malloc.md) is guaranteed to return memory that's suitably aligned for storing any object that has a fundamental alignment and that could fit in the amount of memory that's allocated. A *fundamental alignment* is an alignment that's less than or equal to the largest alignment that's supported by the implementation without an alignment specification. (In Visual C++, this is the alignment that's required for a **`double`**, or 8 bytes. In code that targets 64-bit platforms, it's 16 bytes.) For example, a four-byte allocation would be aligned on a boundary that supports any four-byte or smaller object. +[malloc](../c-runtime-library/reference/malloc.md) is guaranteed to return memory that's suitably aligned for storing any object that has a fundamental alignment and that could fit in the amount of memory that's allocated. A *fundamental alignment* is an alignment that's less than or equal to the largest alignment that's supported by the implementation without an alignment specification. (In Microsoft C++, this is the alignment that's required for a **`double`**, or 8 bytes. In code that targets 64-bit platforms, it's 16 bytes.) For example, a four-byte allocation would be aligned on a boundary that supports any four-byte or smaller object. Visual C++ permits types that have *extended alignment*, which are also known as *over-aligned* types. For example, the SSE types [__m128](../cpp/m128.md) and `__m256`, and types that are declared by using `__declspec(align( n ))` where `n` is greater than 8, have extended alignment. Memory alignment on a boundary that's suitable for an object that requires extended alignment is not guaranteed by `malloc`. To allocate memory for over-aligned types, use [_aligned_malloc](../c-runtime-library/reference/aligned-malloc.md) and related functions. diff --git a/docs/build/toc.yml b/docs/build/toc.yml index b5614f10a74..57a47a03ffb 100644 --- a/docs/build/toc.yml +++ b/docs/build/toc.yml @@ -83,7 +83,7 @@ items: - name: "Header units" expanded: false items: - - name: "Walkthrough: Build and import header units in Visual C++ projects" + - name: "Walkthrough: Build and import header units in Microsoft C++ projects" href: ../build/walkthrough-header-units.md - name: "Walkthrough: Import STL libraries as header units" href: ../build/walkthrough-import-stl-header-units.md diff --git a/docs/build/troubleshooting-c-cpp-isolated-applications-and-side-by-side-assemblies.md b/docs/build/troubleshooting-c-cpp-isolated-applications-and-side-by-side-assemblies.md index e6b026bfbad..77c17b97ece 100644 --- a/docs/build/troubleshooting-c-cpp-isolated-applications-and-side-by-side-assemblies.md +++ b/docs/build/troubleshooting-c-cpp-isolated-applications-and-side-by-side-assemblies.md @@ -24,7 +24,7 @@ If your application has no manifest and depends on a DLL that Windows can't find If your application is deployed on a computer that doesn't have Visual Studio, and it crashes with error messages that resemble the previous ones, check these things: -1. Follow the steps that are described in [Understanding the Dependencies of a Visual C++ Application](../windows/understanding-the-dependencies-of-a-visual-cpp-application.md). The dependency walker can show most dependencies for an application or DLL. If you observe that some DLLs are missing, install them on the computer on which you are trying to run your application. +1. Follow the steps that are described in [Understanding the Dependencies of a Microsoft C++ Application](../windows/understanding-the-dependencies-of-a-visual-cpp-application.md). The dependency walker can show most dependencies for an application or DLL. If you observe that some DLLs are missing, install them on the computer on which you are trying to run your application. 1. The operating system loader uses the application manifest to load assemblies that the application depends on. The manifest can either be embedded in the binary as a resource, or installed as a separate file in the application folder. To check whether the manifest is embedded in the binary, open the binary in Visual Studio and look for RT_MANIFEST in its list of resources. If you can't find an embedded manifest, look in the application folder for a file that's named something like .\.manifest. @@ -41,7 +41,7 @@ If your application is deployed on a computer that doesn't have Visual Studio, a ## Example -Assume we have an application, appl.exe, that's built by using Visual C++. The application manifest either is embedded in appl.exe as the binary resource RT_MANIFEST, which has an ID equal to 1, or is stored as the separate file appl.exe.manifest. The content of this manifest resembles this: +Assume we have an application, appl.exe, that's built using Microsoft C++ Build Tools. The application manifest either is embedded in appl.exe as the binary resource RT_MANIFEST, which has an ID equal to 1, or is stored as the separate file appl.exe.manifest. The content of this manifest resembles this: ``` diff --git a/docs/build/understanding-custom-build-steps-and-build-events.md b/docs/build/understanding-custom-build-steps-and-build-events.md index 7827264c812..78632dad4e1 100644 --- a/docs/build/understanding-custom-build-steps-and-build-events.md +++ b/docs/build/understanding-custom-build-steps-and-build-events.md @@ -8,7 +8,7 @@ ms.topic: how-to --- # Understanding Custom Build Steps and Build Events -From within the Visual C++ development environment, there are three basic ways to customize the build process: +Within the C++ development environment, there are three basic ways to customize the build process: - **Custom Build Steps** diff --git a/docs/build/understanding-manifest-generation-for-c-cpp-programs.md b/docs/build/understanding-manifest-generation-for-c-cpp-programs.md index c0bc39deb76..0db61f8486a 100644 --- a/docs/build/understanding-manifest-generation-for-c-cpp-programs.md +++ b/docs/build/understanding-manifest-generation-for-c-cpp-programs.md @@ -9,7 +9,7 @@ ms.topic: how-to A [manifest](/windows/win32/sbscs/manifests) is an XML document that uniquely identifies an assembly. It contains information used for binding and activation, such as COM classes, interfaces, and type libraries. A manifest can be an external XML file or a resource embedded inside an application or an assembly. The manifest of an [isolated application](/windows/win32/SbsCs/isolated-applications) is used to manage the names and versions of shared side-by-side assemblies the application should bind to at run time. The manifest of a side-by-side assembly specifies its dependencies on names, versions, resources, and other assemblies. -There are two ways to create a manifest for an isolated application or a side-by-side assembly. First, the author of the assembly can manually create a manifest file by following the rules and naming requirements. For more information, see [Manifest files reference](/windows/win32/sbscs/manifest-files-reference). Alternatively, if a program only depends on MSVC assemblies such as CRT, MFC, ATL or others, then the linker can generate a manifest automatically. +There are two ways to create a manifest for an isolated application or a side-by-side assembly. First, the author of the assembly can manually create a manifest file by following the rules and naming requirements. For more information, see [Manifest files reference](/windows/win32/sbscs/manifest-files-reference). Alternatively, if a program only depends on Microsoft C++ (MSVC) assemblies such as CRT, MFC, ATL or others, then the linker can generate a manifest automatically. The headers of MSVC libraries contain assembly information, and when the libraries are included in application code, this assembly information is used by the linker to form a manifest for the final binary. By default, the linker doesn't embed the manifest file inside the binary. Having a manifest as an external file may not work for all scenarios. For example, it's recommended that private assemblies have embedded manifests. In command line builds such as ones that use NMAKE to build code, you can use the [`/MANIFEST:EMBED`](./reference/manifest-create-side-by-side-assembly-manifest.md) linker option to embed the manifest. Alternatively, a manifest can be embedded using the manifest tool. For more information, see [Manifest generation at the command line](#manifest-generation-at-the-command-line). When you build in Visual Studio, a manifest can be embedded by setting a property for the manifest tool in the **Project Properties** dialog, as described in the next section. @@ -29,7 +29,7 @@ The build system in Visual Studio allows the manifest to be embedded in the fina 1. If the manifest embedded in the binary is the same as the manifest generated by the manifest tool, the build continues to the next build steps. -The manifest is embedded inside the final binary as a text resource. You can view it by opening the final binary as a file in Visual Studio. To ensure that the manifest points to the correct libraries, follow the steps described in [Understanding the dependencies of a Visual C++ application](../windows/understanding-the-dependencies-of-a-visual-cpp-application.md). Or, follow the suggestions described in the [Troubleshooting](troubleshooting-c-cpp-isolated-applications-and-side-by-side-assemblies.md) article. +The manifest is embedded inside the final binary as a text resource. You can view it by opening the final binary as a file in Visual Studio. To ensure that the manifest points to the correct libraries, follow the steps described in [Understanding the dependencies of a Microsoft C++ application](../windows/understanding-the-dependencies-of-a-visual-cpp-application.md). Or, follow the suggestions described in the [Troubleshooting](troubleshooting-c-cpp-isolated-applications-and-side-by-side-assemblies.md) article. ##
Manifest generation at the command line diff --git a/docs/build/vscpp-step-2-build.md b/docs/build/vscpp-step-2-build.md index e708ea80e02..174615c346b 100644 --- a/docs/build/vscpp-step-2-build.md +++ b/docs/build/vscpp-step-2-build.md @@ -1,6 +1,6 @@ --- title: Build and run a C++ console app project -description: "Build and run a Hello World console app in Visual C++" +description: "Build and run a Hello World console app in Microsoft C++" ms.custom: "mvc" ms.date: 06/28/2024 ms.topic: "tutorial" diff --git a/docs/build/walkthrough-compile-a-c-program-on-the-command-line.md b/docs/build/walkthrough-compile-a-c-program-on-the-command-line.md index 16e71d6fea8..ab7d92e680f 100644 --- a/docs/build/walkthrough-compile-a-c-program-on-the-command-line.md +++ b/docs/build/walkthrough-compile-a-c-program-on-the-command-line.md @@ -9,7 +9,7 @@ ms.topic: how-to --- # Walkthrough: Compile a C program on the command line -The Visual Studio build tools include a C compiler that you can use to create everything from basic console programs to full Windows desktop applications and mobile apps. Microsoft C/C++ (MSVC) is a C and C++ compiler that, in its latest versions, conforms to some of the latest C language standards, including C11 and C17. +The Visual Studio Build Tools include a C compiler that you can use to create everything from basic console programs to full Windows desktop applications and mobile apps. Microsoft C++ (MSVC) Build Tools contains a C and C++ compiler that, in its latest versions, conforms to some of the latest C language standards, including C11 and C17. This guide explains how to create a basic *Hello, World*-style C program by using a text editor, and then compile it on the command line. If you'd rather work in C++ on the command line, see [Walkthrough: Compiling a Native C++ Program on the Command Line](walkthrough-compiling-a-native-cpp-program-on-the-command-line.md). If you'd like to try the Visual Studio IDE instead of using the command line, see [Walkthrough: Working with Projects and Solutions (C++)](../ide/walkthrough-working-with-projects-and-solutions-cpp.md) or [Using the Visual Studio IDE for C++ Desktop Development](../ide/using-the-visual-studio-ide-for-cpp-desktop-development.md). diff --git a/docs/build/walkthrough-compiling-a-cpp-cli-program-on-the-command-line.md b/docs/build/walkthrough-compiling-a-cpp-cli-program-on-the-command-line.md index 1bf1c0904fd..f450214e366 100644 --- a/docs/build/walkthrough-compiling-a-cpp-cli-program-on-the-command-line.md +++ b/docs/build/walkthrough-compiling-a-cpp-cli-program-on-the-command-line.md @@ -6,7 +6,7 @@ ms.assetid: cef41c88-faf9-439d-8423-25aa3f5674dd --- # Walkthrough: Compiling a C++/CLI Program on the Command Line -You can create Visual C++ programs that target the Common Language Runtime (CLR) and use the .NET Framework, and build them on the command line. Visual C++ supports the C++/CLI programming language, which has additional types and operators to target the .NET programming model. For general information about the C++/CLI language, see [.NET Programming with C++/CLI (Visual C++)](../dotnet/dotnet-programming-with-cpp-cli-visual-cpp.md). +You can create Microsoft C++ programs that target the Common Language Runtime (CLR) and use the .NET Framework, and build them on the command line. Microsoft C++ supports the C++/CLI programming language, which has additional types and operators to target the .NET programming model. For general information about the C++/CLI language, see [.NET Programming with C++/CLI (Visual C++)](../dotnet/dotnet-programming-with-cpp-cli-visual-cpp.md). In this walkthrough, you use a text editor to create a basic C++/CLI program, and then compile it on the command line. (You can use your own C++/CLI program instead of typing the one that's shown, or you can use a C++/CLI code sample from another help article. This technique is useful for building and testing small modules that have no UI elements.) @@ -18,7 +18,7 @@ You understand the fundamentals of the C++ language. The following steps show how to compile a C++/CLI console application that uses .NET Framework classes. -To enable compilation for C++/CLI, you must use the [/clr](reference/clr-common-language-runtime-compilation.md) compiler option. The MSVC compiler generates an .exe file that contains MSIL code—or mixed MSIL and native code—and links to the required .NET Framework libraries. +To enable compilation for C++/CLI, you must use the [/clr](reference/clr-common-language-runtime-compilation.md) compiler option. The Microsoft C++ (MSVC) compiler generates an .exe file that contains MSIL code—or mixed MSIL and native code—and links to the required .NET Framework libraries. ### To compile a C++/CLI application on the command line @@ -43,7 +43,7 @@ To enable compilation for C++/CLI, you must use the [/clr](reference/clr-common- 1. On the menu bar, choose **File** > **Save**. - You've created a Visual C++ source file that uses a .NET Framework class () in the namespace. + You've created a C++ source file that uses a .NET Framework class () in the namespace. 1. At the command prompt, enter `cl /clr basicclr.cpp`. The cl.exe compiler compiles the source code into an .obj file that contains MSIL, and then runs the linker to generate an executable program named basicclr.exe. diff --git a/docs/build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md b/docs/build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md index 5cd2502e96e..f2bf932a35e 100644 --- a/docs/build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md +++ b/docs/build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md @@ -22,7 +22,7 @@ Visual Studio is an *integrated development environment* (IDE). It supports a fu The Build Tools for Visual Studio installs only the command-line compilers, tools, and libraries you need to build C and C++ programs. It's perfect for build labs or classroom exercises and installs relatively quickly. To install only the command-line tools, look for Build Tools for Visual Studio on the [Visual Studio Downloads](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) page. -Before you can build a C or C++ program on the command line, verify that the tools are installed, and you can access them from the command line. Visual C++ has complex requirements for the command-line environment to find the tools, headers, and libraries it uses. **You can't use Visual C++ in a plain command prompt window** without doing some preparation. Fortunately, Visual C++ installs shortcuts for you to launch a developer command prompt that has the environment set up for command line builds. Unfortunately, the names of the developer command prompt shortcuts and where they're located are different in almost every version of Visual C++ and on different versions of Windows. Your first walkthrough task is finding the right one to use. +Before you can build a C or C++ program on the command line, verify that the tools are installed, and you can access them from the command line. Microsoft C++ (MSVC) has complex requirements for the command-line environment to find the tools, headers, and libraries it uses. **You can't use Microsoft C++ in a plain command prompt window** without doing some preparation. Fortunately, Microsoft C++ installs shortcuts for you to launch a developer command prompt that has the environment set up for command line builds. Unfortunately, the names of the developer command prompt shortcuts and where they're located are different in almost every version of Visual Studio and on different versions of Windows. Your first walkthrough task is finding the right one to use. > [!NOTE] > A developer command prompt shortcut automatically sets the correct paths for the compiler and tools, and for any required headers and libraries. You must set these environment values yourself if you use a regular **Command Prompt** window. For more information, see [Use the MSVC toolset from the command line](./building-on-the-command-line.md). We recommend you use a developer command prompt shortcut instead of building your own. @@ -31,11 +31,11 @@ Before you can build a C or C++ program on the command line, verify that the too 1. If you have installed Visual Studio 2017 or later on Windows 10 or later, open the Start menu and choose **All apps**. Scroll down and open the **Visual Studio** folder (not the Visual Studio application). Choose **Developer Command Prompt for VS** to open the command prompt window. - If you have installed Microsoft Visual C++ Build Tools 2015 on Windows 10 or later, open the **Start** menu and choose **All apps**. Scroll down and open the **Visual C++ Build Tools** folder. Choose **Visual C++ 2015 x86 Native Tools Command Prompt** to open the command prompt window. + If you have installed Microsoft Visual Studio Build Tools 2015 on Windows 10 or later, open the **Start** menu and choose **All apps**. Scroll down and open the **Visual Studio Build Tools** folder. Choose **x86 Native Tools Command Prompt** to open the command prompt window. You can also use the Windows search function to search for "developer command prompt" and choose one that matches your installed version of Visual Studio. Use the shortcut to open the command prompt window. -1. Next, verify that the Visual C++ developer command prompt is set up correctly. In the command prompt window, enter `cl` and verify that the output looks something like this: +1. Next, verify that the C++ developer command prompt is set up correctly. In the command prompt window, enter `cl` and verify that the output looks something like this: ```Output C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise>cl @@ -45,17 +45,17 @@ Before you can build a C or C++ program on the command line, verify that the too usage: cl [ option... ] filename... [ /link linkoption... ] ``` - There may be differences in the current directory or version numbers. These values depend on the version of Visual C++ and any updates installed. If the above output is similar to what you see, then you're ready to build C or C++ programs at the command line. + There may be differences in the current directory or version numbers. These values depend on the version of MSVC and any updates installed. If the above output is similar to what you see, then you're ready to build C or C++ programs at the command line. > [!NOTE] - > If you get an error such as "'cl' is not recognized as an internal or external command, operable program or batch file," error C1034, or error LNK1104 when you run the **`cl`** command, then either you are not using a developer command prompt, or something is wrong with your installation of Visual C++. You must fix this issue before you can continue. + > If you get an error such as "'cl' is not recognized as an internal or external command, operable program or batch file," error C1034, or error LNK1104 when you run the **`cl`** command, then either you are not using a developer command prompt, or something is wrong with your installation of MSVC. You must fix this issue before you can continue. - If you can't find the developer command prompt shortcut, or if you get an error message when you enter `cl`, then your Visual C++ installation may have a problem. Try reinstalling the Visual C++ component in Visual Studio, or reinstall the Microsoft Visual C++ Build Tools. Don't go on to the next section until the **`cl`** command works. For more information about installing and troubleshooting Visual C++, see [Install Visual Studio](/visualstudio/install/install-visual-studio). + If you can't find the developer command prompt shortcut, or if you get an error message when you enter `cl`, then your MSVC installation may have a problem. Try reinstalling the MSVC component in Visual Studio or Visual Studio Build Tools. Don't go on to the next section until the **`cl`** command works. For more information about installing and troubleshooting MSVC, see [Install Visual Studio](/visualstudio/install/install-visual-studio). > [!NOTE] > Depending on the version of Windows on the computer and the system security configuration, you might have to right-click to open the shortcut menu for the developer command prompt shortcut and then choose **Run as administrator** to successfully build and run the program that you create by following this walkthrough. -### Create a Visual C++ source file and compile it on the command line +### Create a C++ source file and compile it on the command line 1. In the developer command prompt window, enter `md c:\hello` to create a directory, and then enter `cd c:\hello` to change to that directory. This directory is where both your source file and the compiled program get created. @@ -70,7 +70,7 @@ Before you can build a C or C++ program on the command line, verify that the too using namespace std; int main() { - cout << "Hello, world, from Visual C++!" << endl; + cout << "Hello, world, from Microsoft C++!" << endl; } ``` @@ -130,7 +130,7 @@ Before you can build a C or C++ program on the command line, verify that the too The program displays this text and exits: ```Output - Hello, world, from Visual C++! + Hello, world, from Microsoft C++! ``` Congratulations, you've compiled and run a C++ program by using the command-line tools. diff --git a/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md b/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md index e777914ccdb..ac858bc073f 100644 --- a/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md +++ b/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md @@ -571,7 +571,7 @@ Press any key to dismiss the command window. Now that you've created a DLL and a client application, you can experiment. Try setting breakpoints in the code of the client app, and run the app in the debugger. See what happens when you step into a library call. Add other functions to the library, or write another client app that uses your DLL. -When you deploy your app, you must also deploy the DLLs it uses. The simplest way to make the DLLs that you build, or that you include from third parties, available is to put them in the same directory as your app. It's known as *app-local deployment*. For more information about deployment, see [Deployment in Visual C++](../windows/deployment-in-visual-cpp.md). +When you deploy your app, you must also deploy the DLLs it uses. The simplest way to make the DLLs that you build, or that you include from third parties, available is to put them in the same directory as your app. It's known as *app-local deployment*. For more information about deployment, see [Deployment in Microsoft C++](../windows/deployment-in-visual-cpp.md). ## See also diff --git a/docs/build/walkthrough-header-units.md b/docs/build/walkthrough-header-units.md index 2a21f566b61..4e7de18c974 100644 --- a/docs/build/walkthrough-header-units.md +++ b/docs/build/walkthrough-header-units.md @@ -1,6 +1,6 @@ --- description: "Learn more about C++ header units. Convert a header file to a header unit using Visual Studio 2022." -title: "Walkthrough: Build and import header units in Visual C++ projects" +title: "Walkthrough: Build and import header units in Microsoft C++ projects" ms.date: 09/29/2022 ms.custom: "conceptual" author: "tylermsft" @@ -9,7 +9,7 @@ helpviewer_keywords: ["import", "header unit", "ifc"] monikerRange: '>=msvc-160' --- -# Walkthrough: Build and import header units in Microsoft Visual C++ +# Walkthrough: Build and import header units in Microsoft C++ This article is about building and importing header units with Visual Studio 2022. To learn how to import C++ standard library headers as header units, see [Walkthrough: Import STL libraries as header units](walkthrough-import-stl-header-units.md). For an even faster and more robust way to import the standard library, see [Tutorial: Import the C++ standard library using modules](../cpp/tutorial-import-stl-named-module.md). diff --git a/docs/build/walkthrough-import-stl-header-units.md b/docs/build/walkthrough-import-stl-header-units.md index 3c2fd2d7e57..1f50e2518f9 100644 --- a/docs/build/walkthrough-import-stl-header-units.md +++ b/docs/build/walkthrough-import-stl-header-units.md @@ -221,5 +221,5 @@ The main consideration for whether to use this approach is the balance between c [Compare header units, modules, and precompiled headers](compare-inclusion-methods.md)\ [Tutorial: Import the C++ standard library using modules](../cpp/tutorial-import-stl-named-module.md)\ -[Walkthrough: Build and import header units in your Visual C++ projects](walkthrough-header-units.md)\ +[Walkthrough: Build and import header units in your Microsoft C++ projects](walkthrough-header-units.md)\ [`/translateInclude`](./reference/translateinclude.md) diff --git a/docs/build/walkthrough-using-msbuild-to-create-a-visual-cpp-project.md b/docs/build/walkthrough-using-msbuild-to-create-a-visual-cpp-project.md index 2e210281852..b96564b5d3c 100644 --- a/docs/build/walkthrough-using-msbuild-to-create-a-visual-cpp-project.md +++ b/docs/build/walkthrough-using-msbuild-to-create-a-visual-cpp-project.md @@ -4,9 +4,9 @@ description: "A walkthrough that shows how to create a command-line MSBuild C++ ms.date: 10/08/2020 helpviewer_keywords: ["MSBuild (C++), walkthrough: create a project"] --- -# Walkthrough: Using MSBuild to Create a Visual C++ Project +# Walkthrough: Using MSBuild to Create a Visual Studio C++ Project -This walkthrough demonstrates how to use MSBuild in a command prompt to build a Visual Studio C++ project. You'll learn how to create an XML-based *`.vcxproj`* project file for a Visual C++ console application. After building the project, you'll learn how to customize the build process. +This walkthrough demonstrates how to use MSBuild in a command prompt to build a Visual Studio C++ project. You'll learn how to create an XML-based *`.vcxproj`* project file for a C++ console application. After building the project, you'll learn how to customize the build process. > [!IMPORTANT] > Don't use this approach if you intend to edit the project file later by using the Visual Studio IDE. If you create a *`.vcxproj`* file manually, the Visual Studio IDE might not be able to edit or load it, especially if the project uses wildcards in project items. For more information, see [`.vcxproj` and `.props` file structure](./reference/vcxproj-file-structure.md) and [`.vcxproj` files and wildcards](./reference/vcxproj-files-and-wildcards.md). @@ -78,7 +78,7 @@ In this walkthrough, you'll create a project that has a source file and a header An MSBuild project file is an XML file that contains a project root element (``). In the example project you'll build, the `` element contains seven child elements: - Three item group tags (``) that specify project configuration and platform, source file name, and header file name. -- Three import tags (``) that specify the location of Microsoft Visual C++ settings. +- Three import tags (``) that specify the location of Microsoft C++ settings. - A property group tag (``) that specifies project settings. ### To create the MSBuild project file @@ -249,7 +249,7 @@ At the command prompt, enter this command to use the 64-bit tools to build your ### Using MSBuild with a different toolset -If you have the toolsets and libraries for other versions of Visual C++ installed, MSBuild can build applications for either the current Visual C++ version or for the other installed versions. For example, if you have installed Visual Studio 2012, to specify the Visual C++ 11.0 toolset for Windows XP, add this property group element to the *`Myproject.vcxproj`* project file after the *`Microsoft.Cpp.props`* file `` element: +If you have the toolsets and libraries for other versions of Microsoft C++ (MSVC) installed, MSBuild can build applications for either the current MSVC version or for the other installed versions. For example, if you have installed Visual Studio 2012, to specify the Visual C++ 11.0 toolset for Windows XP, add this property group element to the *`Myproject.vcxproj`* project file after the *`Microsoft.Cpp.props`* file `` element: ```xml diff --git a/docs/build/why-floating-point-numbers-may-lose-precision.md b/docs/build/why-floating-point-numbers-may-lose-precision.md index 7fc2eb91e9a..45605f0aa43 100644 --- a/docs/build/why-floating-point-numbers-may-lose-precision.md +++ b/docs/build/why-floating-point-numbers-may-lose-precision.md @@ -17,7 +17,7 @@ This behavior is the result of one of the following: To resolve the behavior, most programmers either ensure that the value is greater or less than what is needed, or they get and use a Binary Coded Decimal (BCD) library that will maintain the precision. -Binary representation of floating-point values affects the precision and accuracy of floating-point calculations. Microsoft Visual C++ uses [IEEE floating-point format](ieee-floating-point-representation.md). +Binary representation of floating-point values affects the precision and accuracy of floating-point calculations. Microsoft C++ uses [IEEE floating-point format](ieee-floating-point-representation.md). ## Example diff --git a/docs/build/working-with-project-properties.md b/docs/build/working-with-project-properties.md index 3540aad87db..b6ca518f4c8 100644 --- a/docs/build/working-with-project-properties.md +++ b/docs/build/working-with-project-properties.md @@ -41,7 +41,7 @@ For more information about setting properties for a Debug build, see: - [Project settings for a C++ debug configuration](/visualstudio/debugger/project-settings-for-a-cpp-debug-configuration) - [Debugger Settings and Preparation](/visualstudio/debugger/debugger-settings-and-preparation) -- [Debugging Preparation: Visual C++ Project Types](/visualstudio/debugger/debugging-preparation-visual-cpp-project-types) +- [Debugging Preparation: Microsoft C++ Project Types](/visualstudio/debugger/debugging-preparation-visual-cpp-project-types) - [Specify symbol (.pdb) and source files in the Visual Studio debugger](/visualstudio/debugger/specify-symbol-dot-pdb-and-source-files-in-the-visual-studio-debugger) ## C++ compiler and linker options diff --git a/docs/cloud/cloud-and-web-programming-in-visual-cpp.md b/docs/cloud/cloud-and-web-programming-in-visual-cpp.md index f2c9b0519be..4cc0476df39 100644 --- a/docs/cloud/cloud-and-web-programming-in-visual-cpp.md +++ b/docs/cloud/cloud-and-web-programming-in-visual-cpp.md @@ -1,11 +1,11 @@ --- -title: "Cloud and Web Programming in Visual C++" -description: "Learn more about: Cloud and Web Programming in Visual C++" +title: "Cloud and Web Programming in Microsoft C++" +description: "Learn more about: Cloud and Web Programming in Microsoft C++" ms.date: "05/14/2019" ms.topic: "overview" ms.custom: intro-overview --- -# Cloud and Web Programming in Visual C++ +# Cloud and Web Programming in Microsoft C++ In C++, you have several options for connecting to the web and the cloud. diff --git a/docs/code-quality/build-reliable-secure-programs.md b/docs/code-quality/build-reliable-secure-programs.md index 94181eb5c90..2f31f19fc15 100644 --- a/docs/code-quality/build-reliable-secure-programs.md +++ b/docs/code-quality/build-reliable-secure-programs.md @@ -114,8 +114,8 @@ Tests that do deeper verification and take longer to run, such as static analysi **Key tools** Be aware of and use the following: - [Code analysis documentation - C++ and .NET](/visualstudio/code-quality/) -- [`/analyze` - Visual C++ compiler](../build/reference/analyze-code-analysis.md) -- [`/W4` and `/WX` - Visual C++ compiler](../build/reference/compiler-option-warning-level.md) +- [`/analyze` - Microsoft C++ compiler](../build/reference/analyze-code-analysis.md) +- [`/W4` and `/WX` - Microsoft C++ compiler](../build/reference/compiler-option-warning-level.md) - [Use the C++ Core Guidelines Checkers](using-the-cpp-core-guidelines-checkers.md) - [CodeQL | GitHub](https://codeql.github.com/) - [Binskim user guide | GitHub](https://github.com/microsoft/binskim/blob/main/docs/UserGuide.md) @@ -123,7 +123,7 @@ Tests that do deeper verification and take longer to run, such as static analysi Notes: -- `/analyze` enables static analysis of C++ code at compile time to identify critical security and reliability code vulnerabilities. It should be enabled throughout a C++ program's entire development timeline. Start by enabling at least the "Microsoft Native Recommended" by default as a minimum baseline. Then consult the documentation for how to specify more rules, especially the C++ Core Guidelines rules, as required by your engineering policies. The source code Static Analysis capability is available in both the Visual C++ IDE and in the command-line Build Tools. +- `/analyze` enables static analysis of C++ code at compile time to identify critical security and reliability code vulnerabilities. It should be enabled throughout a C++ program's entire development timeline. Start by enabling at least the "Microsoft Native Recommended" by default as a minimum baseline. Then consult the documentation for how to specify more rules, especially the C++ Core Guidelines rules, as required by your engineering policies. The source code Static Analysis capability is available in both the Visual Studio IDE and in the command-line Build Tools. - `/W4` and `/WX` should be enabled wherever possible, to ensure you compile your code cleanly at high warning levels (`W4`) and treat warnings as errors that must be fixed (`WX`). These options enable finding uninitialized data errors that other static analysis tools can't check, because the errors only become visible after the compiler back-end performs interprocedural analysis and inlining. - BinSkim binary analysis ensures that projects enable a broad range of security features. BinSkim generates PDBs and other outputs that make it easier to verify chain-of-custody and to respond efficiently to security issues. Microsoft recommends running the BinSkim tool to analyze all executable binaries (`.sys`, `.dll` or `.exe`) produced for or consumed by your programs. The BinSkim User Guide includes a list of supported security standards. Microsoft recommends that you fix all issues reported as "errors" by the BinSkim tool. Issues reported as "warnings" should be evaluated selectively, because resolving them can have performance implications or might not be necessary. @@ -249,14 +249,14 @@ Binaries shouldn't link to insecure libraries and dependencies. Development team Compilation should enable strong code provenance guarantees to help detect and prevent introduction of backdoors and other malicious code. The resulting data, also critical to debugging and investigation, should be archived for all software releases to drive efficient security response if they're compromised. The following compiler switches generate information that is critical to a security response: -- [`/ZH:SHA_SHA256` in Visual C++](../build/reference/zh.md) - Ensures that a cryptographically secure algorithm is used to generate all PDB source file hashes. -- [`/Zi`, `/ZI` (Debug Information Format) in Visual C++](../build/reference/z7-zi-zi-debug-information-format.md) - In addition to publishing stripped symbols for collecting crash data and other public use scenarios, ensure that builds produce and archive private PDBs for all released binaries. Binary analysis tools require full symbols to verify whether many security mitigations were enabled at compile-time. Private symbols are critical in security response, and lower debugging and investigation costs when engineers are racing to assess and limit damage when an exploit happens. -- [`/SOURCELINK` in Visual C++ Linker - Include Sourcelink file in PDB](../build/reference/sourcelink.md): Source link is a language- and source-control agnostic system providing source debugging for binaries. Source debugging greatly increases the efficiency the range of prerelease security validations and post-release incident response. +- [`/ZH:SHA_SHA256` in Microsoft C++](../build/reference/zh.md) - Ensures that a cryptographically secure algorithm is used to generate all PDB source file hashes. +- [`/Zi`, `/ZI` (Debug Information Format) in Microsoft C++](../build/reference/z7-zi-zi-debug-information-format.md) - In addition to publishing stripped symbols for collecting crash data and other public use scenarios, ensure that builds produce and archive private PDBs for all released binaries. Binary analysis tools require full symbols to verify whether many security mitigations were enabled at compile-time. Private symbols are critical in security response, and lower debugging and investigation costs when engineers are racing to assess and limit damage when an exploit happens. +- [`/SOURCELINK` in Microsoft C++ Linker - Include Sourcelink file in PDB](../build/reference/sourcelink.md): Source link is a language- and source-control agnostic system providing source debugging for binaries. Source debugging greatly increases the efficiency the range of prerelease security validations and post-release incident response. **Enable compiler errors to prevent issues at code authoring time** Compilation should enable security-relevant compiler checks as breaking errors, for example: -- [`/sdl` in Visual C++ - Enable additional security checks](https://aka.ms/AdditionalSecurityChecks) elevates many security-relevant warnings into errors and enables advanced secure code-generation features. +- [`/sdl` in Microsoft C++ - Enable additional security checks](https://aka.ms/AdditionalSecurityChecks) elevates many security-relevant warnings into errors and enables advanced secure code-generation features. - [BinSkim BA2007.EnableCriticalCompilerWarnings | GitHub](https://github.com/microsoft/binskim/blob/main/src/BinSkim.Rules/PERules/BA2007.EnableCriticalCompilerWarnings.cs) maintains a list of Microsoft-recommended C/C++ compiler warnings that should always be enabled and elevated to errors. **Mark binaries as compatible with OS runtime security mitigations** @@ -401,7 +401,7 @@ Modify your build(s) to support continuous creation of executables that use LibF **Summary** -Within the scope of Microsoft Visual C++ on Windows, Microsoft recommends: +Within the scope of Microsoft C++ on Windows, Microsoft recommends: - Prefer TypeScript, JavaScript, and ASP.NET for web applications. - Don't write web extensions in C++. Microsoft has deprecated ActiveX. diff --git a/docs/code-quality/code-analysis-for-c-cpp-overview.md b/docs/code-quality/code-analysis-for-c-cpp-overview.md index 33c4a8e91e1..fffa6d3ad8b 100644 --- a/docs/code-quality/code-analysis-for-c-cpp-overview.md +++ b/docs/code-quality/code-analysis-for-c-cpp-overview.md @@ -20,7 +20,7 @@ ms.assetid: 81f0c9e8-f471-4de5-aac4-99db336a8809 --- # Code analysis for C/C++ overview -The C/C++ Code Analysis tool provides information about possible defects in your C/C++ source code. Common coding errors reported by the tool include buffer overruns, uninitialized memory, null pointer dereferences, and memory and resource leaks. The tool can also run checks against the [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines). +The Microsoft C++ Code Analysis tool provides information about possible defects in your C/C++ source code. Common coding errors reported by the tool include buffer overruns, uninitialized memory, null pointer dereferences, and memory and resource leaks. The tool can also run checks against the [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines). ## IDE (integrated development environment) integration diff --git a/docs/code-quality/using-the-cpp-core-guidelines-checkers.md b/docs/code-quality/using-the-cpp-core-guidelines-checkers.md index fefa3144ce2..34cdcc545ff 100644 --- a/docs/code-quality/using-the-cpp-core-guidelines-checkers.md +++ b/docs/code-quality/using-the-cpp-core-guidelines-checkers.md @@ -8,7 +8,7 @@ dev_langs: --- # Use the C++ Core Guidelines checkers -The C++ Core Guidelines are a portable set of guidelines, rules, and best practices about coding in C++ created by C++ experts and designers. Visual Studio currently supports a subset of these rules as part of its code analysis tools for C++. The core guideline checkers are installed by default in Visual Studio 2017 and Visual Studio 2019. They're [available as a NuGet package for Visual Studio 2015](#vs2015_corecheck). +The C++ Core Guidelines are a portable set of guidelines, rules, and best practices about coding in C++ created by C++ experts and designers. Visual Studio currently supports a subset of these rules as part of its Microsoft C++ Code Analysis tools. The core guideline checkers are installed by default in Visual Studio 2017 and Visual Studio 2019. They're [available as a NuGet package for Visual Studio 2015](#vs2015_corecheck). ## The C++ Core Guidelines Project diff --git a/docs/embedded/download-and-install-the-embedded-tooling.md b/docs/embedded/download-and-install-the-embedded-tooling.md index 1fe6ea96d53..e16dae943ea 100644 --- a/docs/embedded/download-and-install-the-embedded-tooling.md +++ b/docs/embedded/download-and-install-the-embedded-tooling.md @@ -25,7 +25,7 @@ To use the embedded development tools in Visual Studio, you must install the req 1. Open the Visual Studio Installer. In Visual Studio Installer, choose **Modify** next to your installation of Visual Studio, and then select the **Workloads** tab. Scroll down to **Other toolsets** and select the **Linux and embedded development with C++** workload. - ![Screenshot showing the Visual C++ for Linux Development workload item in Visual Studio Installer.](media/linux-and-embedded-workload.png) + ![Screenshot showing the Microsoft C++ for Linux Development workload item in Visual Studio Installer.](media/linux-and-embedded-workload.png) 1. Choose **Modify** to continue with the installation. diff --git a/docs/get-started/toc.yml b/docs/get-started/toc.yml index bc7a83fb976..32d38ad40ef 100644 --- a/docs/get-started/toc.yml +++ b/docs/get-started/toc.yml @@ -1,5 +1,5 @@ items: -- name: Get started with Visual C++ +- name: Get started with Microsoft C++ expanded: true items: - name: Install C++ support in Visual Studio diff --git a/docs/get-started/tutorial-console-cpp.md b/docs/get-started/tutorial-console-cpp.md index db968eefaa5..608ab706e06 100644 --- a/docs/get-started/tutorial-console-cpp.md +++ b/docs/get-started/tutorial-console-cpp.md @@ -1,6 +1,6 @@ --- title: "Create a console calculator in C++" -description: "Create a Hello World console app and a calculator app in Visual C++" +description: "Create a Hello World console app and a calculator app in Visual Studio C++" ms.custom: "acquisition, mvc" ms.date: 10/08/2024 ms.topic: "tutorial" diff --git a/docs/ide/using-the-visual-studio-ide-for-cpp-desktop-development.md b/docs/ide/using-the-visual-studio-ide-for-cpp-desktop-development.md index 45a30a66416..5f115d743cc 100644 --- a/docs/ide/using-the-visual-studio-ide-for-cpp-desktop-development.md +++ b/docs/ide/using-the-visual-studio-ide-for-cpp-desktop-development.md @@ -16,7 +16,7 @@ If you haven't installed Visual Studio yet, now is the time. For download links These walkthroughs assume that you've installed Visual Studio and the C++ components required for Windows Desktop development. We also assume you understand the fundamentals of the C++ language. If you need to learn C++, there are many books and web resources available. One good place to start is the [Get Started](https://isocpp.org/get-started) page of the Standard C++ Foundation website. -In general, we highly recommend that you use the latest version of Visual Studio even if you need to compile your code using an earlier version of the compiler toolset. For more information, see [Use native multi-targeting in Visual Studio to build old projects](../porting/use-native-multi-targeting.md). +In general, we highly recommend that you use the latest version of Visual Studio even if you need to compile your code using an earlier version of the Microsoft C++ (MSVC) Build Tools. For more information, see [Use native multi-targeting in Visual Studio to build old projects](../porting/use-native-multi-targeting.md). Once your Visual Studio installation is complete, you are ready to continue. @@ -36,7 +36,7 @@ To get started using the Visual Studio IDE to build C++ apps, work through each ## Next steps -Once you've completed these walkthroughs, you're ready to start building your own projects. For more information and resources for C++ development, see [Visual C++ in Visual Studio](../overview/visual-cpp-in-visual-studio.md). +Once you've completed these walkthroughs, you're ready to start building your own projects. For more information and resources for C++ development, see [Microsoft C++ in Visual Studio](../overview/visual-cpp-in-visual-studio.md). ## See also diff --git a/docs/ide/writing-and-refactoring-code-cpp.md b/docs/ide/writing-and-refactoring-code-cpp.md index 72dc71d8b4f..cfb3dbfdead 100644 --- a/docs/ide/writing-and-refactoring-code-cpp.md +++ b/docs/ide/writing-and-refactoring-code-cpp.md @@ -22,7 +22,7 @@ search for "IntelliSense" in **Quick Launch** (Ctrl + Q) and choose the **Text E The **Member List Filter Mode** option controls what kinds of IntelliSense autocomplete suggestions you see. By default, it's set to **Fuzzy**. In a fuzzy search, if you have a symbol called *MyAwesomeClass*, you can type "MAC" and find the class in your autocomplete suggestions. The fuzzy algorithm sets a minimum threshold that symbols must meet to show up in the list. **Smart** filtering displays all symbols containing substrings that match what you typed. **Prefix** filtering searches for strings that begin with what you typed. -For more information about C++ IntelliSense, see [Visual C++ IntelliSense](/visualstudio/ide/visual-cpp-intellisense) and [Configure a C++ project for IntelliSense](/visualstudio/ide/visual-cpp-intellisense-configuration). +For more information about C++ IntelliSense, see [Visual Studio C++ IntelliSense](/visualstudio/ide/visual-cpp-intellisense) and [Configure a C++ project for IntelliSense](/visualstudio/ide/visual-cpp-intellisense-configuration). ## IntelliCode diff --git a/docs/intrinsics/arm-intrinsics.md b/docs/intrinsics/arm-intrinsics.md index f2a248f9a97..bde0f7c5627 100644 --- a/docs/intrinsics/arm-intrinsics.md +++ b/docs/intrinsics/arm-intrinsics.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["cl.exe compiler, ARM intrinsics", "intrinsics, ARM", "__c --- # ARM intrinsics -The Microsoft C++ compiler (MSVC) makes the following intrinsics available on the ARM architecture. For more information about ARM, see the Architecture and Software Development Tools sections of the [ARM Developer Documentation](https://developer.arm.com/docs) website. +The Microsoft C++ (MSVC) compiler makes the following intrinsics available on the ARM architecture. For more information about ARM, see the Architecture and Software Development Tools sections of the [ARM Developer Documentation](https://developer.arm.com/docs) website. ## NEON diff --git a/docs/intrinsics/arm64-intrinsics.md b/docs/intrinsics/arm64-intrinsics.md index 8300ceea360..c610e426be3 100644 --- a/docs/intrinsics/arm64-intrinsics.md +++ b/docs/intrinsics/arm64-intrinsics.md @@ -9,7 +9,7 @@ ms.date: "11/14/2019" --- # ARM64 intrinsics -The Microsoft C++ compiler (MSVC) makes the following intrinsics available on the ARM64 architecture. For more information about ARM, see the Architecture and Software Development Tools sections of the [ARM Developer Documentation](https://developer.arm.com/docs) website. +The Microsoft C++ (MSVC) compiler makes the following intrinsics available on the ARM64 architecture. For more information about ARM, see the Architecture and Software Development Tools sections of the [ARM Developer Documentation](https://developer.arm.com/docs) website. ## NEON diff --git a/docs/intrinsics/compiler-intrinsics.md b/docs/intrinsics/compiler-intrinsics.md index ea886301346..381e8610042 100644 --- a/docs/intrinsics/compiler-intrinsics.md +++ b/docs/intrinsics/compiler-intrinsics.md @@ -13,7 +13,7 @@ Most functions are contained in libraries, but some functions are built in (that If a function is an intrinsic, the code for that function is usually inserted inline, avoiding the overhead of a function call and allowing highly efficient machine instructions to be emitted for that function. An intrinsic is often faster than the equivalent inline assembly, because the optimizer has a built-in knowledge of how many intrinsics behave, so some optimizations can be available that are not available when inline assembly is used. Also, the optimizer can expand the intrinsic differently, align buffers differently, or make other adjustments depending on the context and arguments of the call. -The use of intrinsics affects the portability of code, because intrinsics that are available in Visual C++ might not be available if the code is compiled with other compilers and some intrinsics that might be available for some target architectures are not available for all architectures. However, intrinsics are usually more portable than inline assembly. The intrinsics are required on 64-bit architectures where inline assembly is not supported. +The use of intrinsics affects the portability of code, because intrinsics that are available in Microsoft C++ might not be available if the code is compiled with other compilers and some intrinsics that might be available for some target architectures are not available for all architectures. However, intrinsics are usually more portable than inline assembly. The intrinsics are required on 64-bit architectures where inline assembly is not supported. Some intrinsics, such as **`__assume`** and `__ReadWriteBarrier`, provide information to the compiler, which affects the behavior of the optimizer. diff --git a/docs/overview/compiler-versions.md b/docs/overview/compiler-versions.md index b167daf2351..f1502c60088 100644 --- a/docs/overview/compiler-versions.md +++ b/docs/overview/compiler-versions.md @@ -1,14 +1,14 @@ --- -description: "Learn more about Microsoft Visual C++ compiler versioning." -title: "Microsoft Visual C++ compiler versioning (Visual C++)" +description: "Learn more about Microsoft C++ compiler versioning." +title: "Microsoft C++ (MSVC) compiler versioning" ms.date: 02/12/2025 ms.service: "visual-cpp" ms.subservice: "tools" helpviewer_keywords: ["Visual C++, platforms supported", "platforms [C++]"] --- -# Microsoft Visual C++ compiler versioning +# Microsoft C++ (MSVC) compiler versioning -The Microsoft Visual C++ compiler version consists of four fields: +The Microsoft C++ (MSVC) compiler version consists of four fields: M - major version (two digits)\ N - minor version (two digits)\ @@ -33,9 +33,9 @@ The macros reflect these values like this: - `_MSC_BUILD` (the revision) is 0. >[!Note] ->Visual Studio 2019 16.8 and 16.9 share the same major and minor versions, and so have the same value for `_MSC_VER`. As do Visual Studio 2019 16.10 and 16.11. To distinguish them, use `_MSC_FULL_VER` as described in [Service releases starting with Visual Studio 2017](#service-releases-starting-with-visual-studio-2017). +>Visual Studio 2019 versions 16.8 and 16.9 share the same major and minor versions, and so have the same value for `_MSC_VER`. As do Visual Studio 2019 versions 16.10 and 16.11. To distinguish them, use `_MSC_FULL_VER` as described in [Service releases starting with Visual Studio 2017](#service-releases-starting-with-visual-studio-2017). -## A brief history of Visual C++ compiler versioning +## A brief history of Microsoft C++ compiler versioning ### Visual Studio 6.0 through Visual Studio 2015 (14.0) @@ -45,20 +45,26 @@ The macros reflect these values like this: >[!Note] > Visual Studio .NET 2003 was considered a minor release. -### Visual Studio 2017 and later +### Visual Studio 2017 to Visual Studio 2022 - For major releases, the minor version increases by 10. - For minor releases, the minor version increases by 1 starting with Visual Studio 2017 version 15.3. +### Visual Studio 2026 and later + +- The compiler minor version is no longer incremented in relation to Visual Studio version updates. +- The minor version increments by 1 with each new MSVC release. +- Not every new Visual Studio version will ship a new MSVC compiler version. + ### Service releases starting with Visual Studio 2017 Servicing releases are distinguished by `_MSC_FULL_VER`. The build field (the BBBBB in the MMNNBBBBB version number) typically increases by 1. -For example, two cases where `_MSC_FULL_VER` is useful is to distinguish Visual Studio 2019 16.8 from 16.9, and Visual Studio 2019 16.10 from 16.11. That's because those versions share the same major and minor versions, and so have the same value for `_MSC_VER`. +For example, two cases where `_MSC_FULL_VER` is useful is to distinguish Visual Studio 2019 version 16.8 from 16.9, and Visual Studio 2019 version 16.10 from 16.11. That's because those versions share the same major and minor versions, and so have the same value for `_MSC_VER`. To distinguish these versions, use `_MSC_FULL_VER`.\ -The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 16.8 is 192829333.\ -The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 16.9 is 192829910. +The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 version 16.8 is 192829333.\ +The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 version 16.9 is 192829910. ## Version macros @@ -71,17 +77,17 @@ R - revision version **[`_MSC_VER`](../preprocessor/predefined-macros.md)** distinguishes between major and minor releases. It has the form: MMNN. -**[`_MSC_FULL_VER`](../preprocessor/predefined-macros.md)** represents the major, minor, and build version of the compiler. It has the form: MMNNBBBBB. Use it to distinguish between different versions of the compiler, including servicing releases. For more information about Visual Studio 2019 16.8, 16.9, 16.10 and 16.11, see [Service releases starting with Visual Studio 2017](#service-releases-starting-with-visual-studio-2017). +**[`_MSC_FULL_VER`](../preprocessor/predefined-macros.md)** represents the major, minor, and build version of the compiler. It has the form: MMNNBBBBB. Use it to distinguish between different versions of the compiler, including servicing releases. For more information about Visual Studio 2019 versions 16.8, 16.9, 16.10 and 16.11, see [Service releases starting with Visual Studio 2017](#service-releases-starting-with-visual-studio-2017). **[`_MSC_BUILD`](../preprocessor/predefined-macros.md)** represents the build version of the compiler. It has the form: R. Use it to distinguish between servicing releases. When the major version changed between Visual Studio 2013 and Visual Studio 2015, `_MSC_VER` reflected the change by going from 1800 to 1900. -An example of a minor change is from Visual Studio 2022 17.1 to Visual Studio 2022 17.2. In that case, `_MSC_VER` changed from 1931 to 1932. +An example of a minor change is from Visual Studio 2022 version 17.1 to Visual Studio 2022 version 17.2. In that case, `_MSC_VER` changed from 1931 to 1932. -The following table lists the Visual Studio version corresponding to each Visual C++ compiler (`_MSC_VER`) and MSVC toolset release: +The following table lists the Visual Studio version corresponding to each Microsoft C++ compiler (`_MSC_VER`) and MSVC Build Tools release: -| Visual Studio version | `_MSC_VER` | MSVC toolset version | +| Visual Studio version | `_MSC_VER` | MSVC Build Tools version | |--|--|--| | Visual Studio 6.0 | 1200 | 6.0 | | Visual Studio .NET 2002 (7.0) | 1300 | 7.0 | @@ -125,9 +131,9 @@ The following table lists the Visual Studio version corresponding to each Visual | Visual Studio 2022 version 17.13 | 1943 | 14.43 | | Visual Studio 2022 version 17.14 | 1944 | 14.44 | -a Visual Studio 2019 16.8 and 16.9 share the same major and minor versions (and so have the same value for `_MSC_VER`). To distinguish them, use `_MSC_FULL_VER`. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 16.8 is 192829333. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 16.9 is 192829910. +a Visual Studio 2019 versions 16.8 and 16.9 share the same major and minor versions (and so have the same value for `_MSC_VER`). To distinguish them, use `_MSC_FULL_VER`. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 version 16.8 is 192829333. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 version 16.9 is 192829910. -b Visual Studio 2019 16.10 and 16.11 share the same major and minor versions (and so have the same value for `_MSC_VER`). To distinguish them, use `_MSC_FULL_VER`. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 16.10 is 192929917. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 16.11 is 192930129. +b Visual Studio 2019 versions 16.10 and 16.11 share the same major and minor versions (and so have the same value for `_MSC_VER`). To distinguish them, use `_MSC_FULL_VER`. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 version 16.10 is 192929917. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 version 16.11 is 192930129. ## See also diff --git a/docs/overview/cpp-conformance-improvements-2019.md b/docs/overview/cpp-conformance-improvements-2019.md index e3b390b72fe..17c1f7f7a39 100644 --- a/docs/overview/cpp-conformance-improvements-2019.md +++ b/docs/overview/cpp-conformance-improvements-2019.md @@ -7,7 +7,7 @@ ms.subservice: "cpp-lang" --- # C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2019 -Microsoft C/C++ in Visual Studio (MSVC) makes conformance improvements and bug fixes in every release. This article lists the improvements by major release, then by version. To jump directly to the changes for a specific version, use the list below **In this article**. +Microsoft C++ (MSVC) Build Tools in Visual Studio makes conformance improvements and bug fixes in every release. This article lists the improvements by major release, then by version. To jump directly to the changes for a specific version, use the list below **In this article**. This document lists the changes in Visual Studio 2019. For a guide to the changes in Visual Studio 2022, see [C++ conformance improvements in Visual Studio 2022](cpp-conformance-improvements.md). For changes in Visual Studio 2017, see [C++ conformance improvements in Visual Studio 2017](cpp-conformance-improvements-2017.md). For a complete list of previous conformance improvements, see [Visual C++ What's New 2003 through 2015](../porting/visual-cpp-what-s-new-2003-through-2015.md). diff --git a/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md b/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md index 5fff09d04d6..813d310ea09 100644 --- a/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md +++ b/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md @@ -1,5 +1,5 @@ --- -title: "How to report a problem with the Microsoft C++ toolset" +title: "How to report a problem with the Microsoft C++ Build Tools" description: How to create a good problem report and repro information for the Microsoft C++ toolset. ms.date: "09/24/2019" ms.service: "visual-cpp" @@ -7,7 +7,7 @@ ms.subservice: "ide" author: "tylermsft" ms.author: "twhitney" --- -# How to report a problem with the Microsoft C++ toolset or documentation +# How to report a problem with the Microsoft C++ Build Tools or documentation If you find problems in the Microsoft C++ compiler (MSVC), the linker, or other tools and libraries, we want to know about them. When the issue is in our documentation, we want to know about that, too. @@ -382,7 +382,7 @@ For issues with the C++ compiler, linker, and other tools and libraries, first s > Information in the initial Developer Community report will always be public. If this is a concern, see the next section about [Reports and privacy](#reports-and-privacy). > [!TIP] -> For other kinds of problems you might find in Visual Studio that are unrelated to the C++ toolset (For example, UI issues, broken IDE functionality, or general crashes), use the **Report a Problem** tool in the IDE. This is the best choice, due to its screenshot capabilities and its ability to record UI actions that lead to the problem you found. These kinds of errors can also be looked up on the Visual Studio [Developer Community](https://aka.ms/feedback/report?space=8) site. For more information, see [How to report a problem with Visual Studio](/visualstudio/ide/how-to-report-a-problem-with-visual-studio). +> For other kinds of problems you might find in Visual Studio that are unrelated to the Microsoft C++ Build Tools (For example, UI issues, broken IDE functionality, or general crashes), use the **Report a Problem** tool in the IDE. This is the best choice, due to its screenshot capabilities and its ability to record UI actions that lead to the problem you found. These kinds of errors can also be looked up on the Visual Studio [Developer Community](https://aka.ms/feedback/report?space=8) site. For more information, see [How to report a problem with Visual Studio](/visualstudio/ide/how-to-report-a-problem-with-visual-studio). ### Reports and privacy diff --git a/docs/overview/supported-platforms-visual-cpp.md b/docs/overview/supported-platforms-visual-cpp.md index 1e369fd7e73..2b52a32f94e 100644 --- a/docs/overview/supported-platforms-visual-cpp.md +++ b/docs/overview/supported-platforms-visual-cpp.md @@ -1,12 +1,12 @@ --- -description: "Learn more about: Supported Platforms (Visual C++)" -title: "Supported Platforms (Visual C++)" +description: "Learn more about: Supported Platforms (Microsoft C++)" +title: "Supported Platforms (Microsoft C++)" ms.date: 10/22/2025 ms.service: "visual-cpp" ms.subservice: "tools" helpviewer_keywords: ["Visual C++, platforms supported", "platforms [C++]"] --- -# Supported platforms (Visual C++) +# Supported platforms (Microsoft C++) Apps built by using Visual Studio can be targeted to various platforms. @@ -48,9 +48,9 @@ Support for targeting 32-bit ARM was permanently removed in VS 2026 18.0. f You can install the **Linux development with C++** workload in the installer for Visual Studio 2017 and later to target Linux platforms. For instructions, see [Download, install, and setup the Linux Workload](../linux/download-install-and-setup-the-linux-development-workload.md). This toolset compiles your executable on the target machine, so you can build for any supported architecture. -For information about how to set the target platform configuration, see [How to: Configure Visual C++ projects to target 64-bit, x64 platforms](../build/how-to-configure-visual-cpp-projects-to-target-64-bit-platforms.md). +For information about how to set the target platform configuration, see [How to: Configure Microsoft C++ projects to target 64-bit, x64 platforms](../build/how-to-configure-visual-cpp-projects-to-target-64-bit-platforms.md). ## See also -[Visual C++ tools and features in Visual Studio editions](visual-cpp-tools-and-features-in-visual-studio-editions.md)\ +[Microsoft C++ tools and features in Visual Studio editions](visual-cpp-tools-and-features-in-visual-studio-editions.md)\ [Getting Started](/visualstudio/ide/getting-started-with-cpp-in-visual-studio) diff --git a/docs/overview/toc.yml b/docs/overview/toc.yml index 66d418921eb..8c34abe851e 100644 --- a/docs/overview/toc.yml +++ b/docs/overview/toc.yml @@ -32,7 +32,7 @@ items: href: ../overview/visual-cpp-samples.md - name: Help and community href: ../overview/visual-cpp-help-and-community.md - - name: How to report a problem with the Visual C++ toolset + - name: How to report a problem with the Microsoft C++ Build Tools href: ../overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md - name: Visual Studio C++ Tutorials expanded: false diff --git a/docs/overview/visual-cpp-in-visual-studio.md b/docs/overview/visual-cpp-in-visual-studio.md index 30012947cad..111b4036a69 100644 --- a/docs/overview/visual-cpp-in-visual-studio.md +++ b/docs/overview/visual-cpp-in-visual-studio.md @@ -44,9 +44,9 @@ helpviewer_keywords: ["Visual C++, home page"] :::moniker-end -Microsoft Visual C++ (MSVC) refers to the C++, C, and assembly language development tools and libraries available as part of Visual Studio on Windows. These tools and libraries let you create native Windows desktop and server applications, Universal Windows Platform (UWP) apps, or managed apps and libraries that use the .NET Framework. Create cross-platform libraries and apps that run on Windows, Linux, Android, and iOS. You can use MSVC to write anything from simple console apps to the most sophisticated and complex apps for Windows desktop. Write device drivers and operating system components or cross-platform games for mobile devices. Target anything from the smallest IoT devices to multi-server high performance computing in the Azure cloud. +Microsoft C++ (MSVC) refers to the C++, C, and assembly language development tools and libraries available as part of Visual Studio on Windows. These tools and libraries let you create native Windows desktop and server applications, Universal Windows Platform (UWP) apps, or managed apps and libraries that use the .NET Framework. Create cross-platform libraries and apps that run on Windows, Linux, Android, and iOS. You can use MSVC to write anything from simple console apps to the most sophisticated and complex apps for Windows desktop. Write device drivers and operating system components or cross-platform games for mobile devices. Target anything from the smallest IoT devices to multi-server high performance computing in the Azure cloud. -Visual Studio 2015, 2017, 2019, and 2022 can be installed side-by-side. You can use Visual Studio 2019 (compiler toolset v142) or Visual Studio 2017 (v141) to edit and build programs using the toolset from Visual Studio 2017 (v141) and Visual Studio 2015 (v140). +You can install Visual Studio 2015 and later side-by-side. For example, you can use Visual Studio 2019 (compiler toolset v142) or Visual Studio 2017 (v141) to edit and build programs using the toolset from Visual Studio 2017 (v141) and Visual Studio 2015 (v140). ## What's new for C++ in Visual Studio @@ -74,7 +74,7 @@ Learn about the breaking changes in previous versions. ## Install Visual Studio C++ and upgrade from earlier versions [Install C++ support in Visual Studio](../build/vscpp-step-0-installation.md)\ -Download Visual Studio and install the Microsoft C/C++ toolset. +Download Visual Studio and install the Microsoft C++ Build Tools. [Microsoft C++ porting and upgrading guide](../porting/visual-cpp-porting-and-upgrading-guide.md)\ Guidance for porting code and upgrading projects to Visual Studio 2015 or later. Take advantage of greater compiler conformance to the C++ standard, greatly improved compilation times, and security features such as Spectre mitigation. diff --git a/docs/overview/visual-cpp-language-conformance.md b/docs/overview/visual-cpp-language-conformance.md index b276614c6a6..5f15f171582 100644 --- a/docs/overview/visual-cpp-language-conformance.md +++ b/docs/overview/visual-cpp-language-conformance.md @@ -9,7 +9,7 @@ ms.subservice: "cpp-lang" Standards conformance for the Microsoft C/C++ compiler in Visual Studio (MSVC) is a work in progress. Here's a summary of ISO Standard C and C++ language and library conformance by Visual Studio version. Each C++ compiler and standard library feature name has a link to the ISO Standard C++ proposal paper that describes the feature, when one is available at publication time. The **Supported** column lists the Visual Studio version in which support for the feature first appeared. -For details on conformance improvements, see [C++ conformance improvements in Visual Studio](cpp-conformance-improvements.md). For a list of other changes, see [What's New for Visual C++ in Visual Studio](what-s-new-for-visual-cpp-in-visual-studio.md). For conformance changes in earlier versions, see [Visual C++ change history](../porting/visual-cpp-change-history-2003-2015.md) and [Visual C++ What's New 2003 through 2015](../porting/visual-cpp-what-s-new-2003-through-2015.md). For current news from the C++ team, visit the [C++ team blog](https://devblogs.microsoft.com/cppblog/). +For details on conformance improvements, see [C++ conformance improvements in Visual Studio](cpp-conformance-improvements.md). For a list of other changes, see [What's New for Microsoft C++ in Visual Studio](what-s-new-for-visual-cpp-in-visual-studio.md). For conformance changes in earlier versions, see [Visual C++ change history](../porting/visual-cpp-change-history-2003-2015.md) and [Visual C++ What's New 2003 through 2015](../porting/visual-cpp-what-s-new-2003-through-2015.md). For current news from the C++ team, visit the [C++ team blog](https://devblogs.microsoft.com/cppblog/). > [!NOTE] > There are no binary breaking changes between Visual Studio 2015, 2017, 2019, and 2022. For more information, see [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md) @@ -652,7 +652,7 @@ These algorithms aren't presently parallelized: [C++ Language Reference](../cpp/cpp-language-reference.md)\ [C++ Standard Library](../standard-library/cpp-standard-library-reference.md)\ [C++ conformance improvements in Visual Studio](cpp-conformance-improvements.md)\ -[What's New for Visual C++ in Visual Studio](what-s-new-for-visual-cpp-in-visual-studio.md)\ +[What's New for Microsoft C++ in Visual Studio](what-s-new-for-visual-cpp-in-visual-studio.md)\ [Visual C++ change history 2003 through 2015](../porting/visual-cpp-change-history-2003-2015.md)\ [Visual C++ What's New 2003 through 2015](../porting/visual-cpp-what-s-new-2003-through-2015.md)\ [C++ team blog](https://devblogs.microsoft.com/cppblog/) diff --git a/docs/overview/visual-cpp-tools-and-features-in-visual-studio-editions.md b/docs/overview/visual-cpp-tools-and-features-in-visual-studio-editions.md index 8f68bdd1c4a..f05857da1e0 100644 --- a/docs/overview/visual-cpp-tools-and-features-in-visual-studio-editions.md +++ b/docs/overview/visual-cpp-tools-and-features-in-visual-studio-editions.md @@ -15,7 +15,7 @@ The following C++ features are available in Visual Studio. Unless stated otherwi ::: moniker range="<=msvc-150" -The following tables show Visual C++ features that are available in Visual Studio 2017. An X in a cell indicates that the feature is available; an empty cell indicates that the feature is not available. Notes in parentheses indicate that a feature is available, but restricted. +The following tables show C++ features that are available in Visual Studio 2017. An X in a cell indicates that the feature is available; an empty cell indicates that the feature is not available. Notes in parentheses indicate that a feature is available, but restricted. ::: moniker-end diff --git a/docs/sanitizers/asan-building.md b/docs/sanitizers/asan-building.md index 09140d51c92..5ea4cf7b5cf 100644 --- a/docs/sanitizers/asan-building.md +++ b/docs/sanitizers/asan-building.md @@ -149,7 +149,6 @@ The linker option [`/INFERASANLIBS:NO`](../build/reference/inferasanlibs.md) pre Prior to Visual Studio 17.7 Preview 3, statically linked (**`/MT`** or **`/MTd`**) builds didn't use a DLL dependency. Instead, the MSVC AddressSanitizer runtime was statically linked into the user's EXE. DLL projects would then load exports from the user's EXE to access ASan functionality. Also, dynamically linked projects (**`/MD`** or **`/MTd`**) used different libraries and DLLs depending on whether the project was configured for debug or release. For more information about these changes and their motivations, see [MSVC AddressSanitizer – One DLL for all Runtime Configurations](https://devblogs.microsoft.com/cppblog/msvc-address-sanitizer-one-dll-for-all-runtime-configurations/). - | CRT runtime option | DLL or EXE | MSVC AddressSanitizer runtime libraries | |--|--|--| | **`/MT`** | EXE | *`/wholearchive:clang_rt.asan-{arch}.lib`*, *`clang_rt.asan_cxx-{arch}.lib`* | diff --git a/docs/sanitizers/asan-continue-on-error.md b/docs/sanitizers/asan-continue-on-error.md index 9d820f863e8..7b590735e84 100644 --- a/docs/sanitizers/asan-continue-on-error.md +++ b/docs/sanitizers/asan-continue-on-error.md @@ -1,16 +1,16 @@ --- -title: "Walkthrough: Use Address Sanitizer Continue On Error to find memory safety issues" -description: "Learn how to use Address Sanitizer continue on error to find memory safety errors in your app." +title: "Walkthrough: Use AddressSanitizer Continue On Error to find memory safety issues" +description: "Learn how to use AddressSanitizer continue on error to find memory safety errors in your app." ms.date: 07/31/2023 f1_keywords: ["AddressSanitizer", "Continue On Error"] helpviewer_keywords: ["ASan", "AddressSanitizer", "Address Sanitizer", "compiling for AddressSanitizer", "Continue On Error", "ASAN continue on error", "Address Sanitizer continue on error"] --- -# Walkthrough: Use Address Sanitizer Continue On Error to find memory safety issues +# Walkthrough: Use AddressSanitizer Continue On Error to find memory safety issues In this walkthrough, create checked builds that find and report memory safety errors. -Memory safety errors like out-of-bounds memory reads and writes, using memory after it has been freed, `NULL` pointer dereferences, and so on, are a top concern for C/C++ code. Address Sanitizer (ASAN) is a compiler and runtime technology that exposes these kinds of hard-to-find bugs, and does it with zero false positives. For an overview of ASAN, see [AddressSanitizer](asan.md). +Memory safety errors like out-of-bounds memory reads and writes, using memory after it has been freed, `NULL` pointer dereferences, and so on, are a top concern for C/C++ code. AddressSanitizer (ASAN) is a compiler and runtime technology that exposes these kinds of hard-to-find bugs, and does it with zero false positives. For an overview of ASAN, see [AddressSanitizer](asan.md). Continue On Error (COE) is a new ASAN feature that automatically diagnoses and reports memory safety errors as your app runs. When your program exits, a summary of unique memory safety errors is output to `stdout`, `stderr`, or to a log file of your choice. When you create a standard C++ checked build with `-fsanitizer=address`, calls to allocators, deallocators such as `free`, `memcpy`, `memset`, and so on, are forwarded to the ASAN runtime. The ASAN runtime provides the same semantics for these functions, but monitors what happens with the memory. ASAN diagnoses and reports hidden memory safety errors, with zero false positives, as your app runs. @@ -67,7 +67,7 @@ In the preceding code, `pointer` is freed twice. This is a contrived example, bu Create a build of the preceding code with COE turned on with the following steps: -1. Compile the code in the developer command prompt you opened earlier: `cl -fsanitize=address -Zi doublefree.cpp`. The `-fsanitize=address` switch turns on ASAN, and `-Zi` creates a separate PDB file that address sanitizer uses to display memory error location information. +1. Compile the code in the developer command prompt you opened earlier: `cl -fsanitize=address -Zi doublefree.cpp`. The `-fsanitize=address` switch turns on ASAN, and `-Zi` creates a separate PDB file that AddressSanitizer uses to display memory error location information. 1. Send ASAN output to `stdout` by setting the `ASAN_OPTIONS` environment variable in the developer command prompt as follows: `set ASAN_OPTIONS=continue_on_error=1` 1. Run the test code with: `doublefree.exe` @@ -213,7 +213,7 @@ Errors are only observable if the page following the allocation is unmapped, or Create a build of the preceding code with COE turned on: -1. Compile the code with `cl -fsanitize=address -Zi coe.cpp`. The `-fsanitize=address` switch turns on ASAN, and `-Zi` creates a separate PDB file that address sanitizer uses to display memory error location information. +1. Compile the code with `cl -fsanitize=address -Zi coe.cpp`. The `-fsanitize=address` switch turns on ASAN, and `-Zi` creates a separate PDB file that AddressSanitizer uses to display memory error location information. 1. Send ASAN output to `stdout` by setting the `ASAN_OPTIONS` environment variable in the developer command prompt as follows: `set ASAN_OPTIONS=continue_on_error=1` 1. Run the test code with: `coe.exe` @@ -263,7 +263,7 @@ File: C:\Users\xxx\Desktop\COE\coe.cpp Raw HitCnt: 1 On Reference: 1-byte-write-heap-buffer-overflow ``` -The default Address Sanitizer runtime behavior terminates the app after reporting the first error it finds. It doesn't allow the "bad" machine instruction to execute. The new Address Sanitizer runtime diagnoses and reports errors, but then executes subsequent instructions. +The default AddressSanitizer runtime behavior terminates the app after reporting the first error it finds. It doesn't allow the "bad" machine instruction to execute. The new AddressSanitizer runtime diagnoses and reports errors, but then executes subsequent instructions. COE tries to automatically return control back to the application after reporting each memory safety error. There are situations when it can't, such as when there's a memory access violation (AV) or a failed memory allocation. COE doesn't continue after access violations that the program's structured exception handling doesn't catch. If COE can't return execution to the app, a `CONTINUE CANCELLED - Deadly Signal. Shutting down.` message is output. @@ -339,7 +339,7 @@ int main() In `main()` a large number is passed to `foo_redundant`, which is ultimately passed to `_alloca()`, which causes `_alloca()` to fail. -This example outputs `pass` when compiled without ASAN (that is, no `-fsanitize=address` switch) but outputs `fail` when compiled with ASAN turned on (that is, with the `-fsanitize=address` switch). That's because without ASAN, the exception code matches `RET_STACK_EXCEPTION` so `cnt` is set to 1. It behaves differently when compiled with ASAN on because the thrown exception is an Address Sanitizer error instead: dynamic-stack-buffer-overflow. That means the code returns `RET_OTHER_EXCEPTION` instead of `RET_STACK_EXCEPTION` so `cnt` isn't set to 1. +This example outputs `pass` when compiled without ASAN (that is, no `-fsanitize=address` switch) but outputs `fail` when compiled with ASAN turned on (that is, with the `-fsanitize=address` switch). That's because without ASAN, the exception code matches `RET_STACK_EXCEPTION` so `cnt` is set to 1. It behaves differently when compiled with ASAN on because the thrown exception is an AddressSanitizer error instead: dynamic-stack-buffer-overflow. That means the code returns `RET_OTHER_EXCEPTION` instead of `RET_STACK_EXCEPTION` so `cnt` isn't set to 1. ## Other benefits diff --git a/docs/sanitizers/asan-flags.md b/docs/sanitizers/asan-flags.md index 63633fa5e46..5b526a8cf1b 100644 --- a/docs/sanitizers/asan-flags.md +++ b/docs/sanitizers/asan-flags.md @@ -1,6 +1,6 @@ --- title: "AddressSanitizer Runtime Options" -description: "List of runtime options for the Microsoft C/C++ Address Sanitizer" +description: "List of runtime options for the Microsoft C/C++ AddressSanitizer" ms.date: 8/08/2025 helpviewer_keywords: ["AddressSanitizer options", "AddressSanitizer flags", "Address sanitizer options", "Address sanitizer flags", "asan options", "asan flags", "sanitizer flags", "asan_options", "AddressSanitizerFlags", "SanitizerCommonFlags"] --- diff --git a/docs/sanitizers/asan-known-issues.md b/docs/sanitizers/asan-known-issues.md index b5d899dabc0..273389bad95 100644 --- a/docs/sanitizers/asan-known-issues.md +++ b/docs/sanitizers/asan-known-issues.md @@ -77,7 +77,7 @@ The *`clang_rt.asan*.dll`* runtime files are installed next to the compilers in ## Custom property sheet support -The Visual Studio Property Manager window allows you to add custom *`.props`* files to your projects. Even though the **Enable Address Sanitizer** property (``) is shown, the build doesn't honor it. The build doesn't honor it because the custom *`.props`* files are included after *`Microsoft.cpp.props`*, which uses the `` value to set other properties. +The Visual Studio Property Manager window allows you to add custom *`.props`* files to your projects. Even though the **Enable AddressSanitizer** property (``) is shown, the build doesn't honor it. The build doesn't honor it because the custom *`.props`* files are included after *`Microsoft.cpp.props`*, which uses the `` value to set other properties. As a workaround, create a *`Directory.Build.props`* file in the root of your project to define the `` property. For more information, see [Customize C++ builds](/visualstudio/msbuild/customize-your-build#customize-c-builds). diff --git a/docs/sanitizers/asan-runtime.md b/docs/sanitizers/asan-runtime.md index 0f109ebfa68..4ac0c904d8c 100644 --- a/docs/sanitizers/asan-runtime.md +++ b/docs/sanitizers/asan-runtime.md @@ -40,7 +40,7 @@ Even when statically linking, the ASan runtime DLL must be present at runtime--u Before Visual Studio 17.7 Preview 3, statically linked (**`/MT`** or **`/MTd`**) builds didn't use a DLL dependency. Instead, the AddressSanitizer runtime was statically linked into the user's EXE. DLL projects would then load exports from the user's EXE to access ASan functionality. -Dynamically linked projects (**`/MD`** or **`/MDd`**) used different libraries and DLLs depending on whether the project was configured for debug or release. For more information about these changes and their motivations, see [MSVC Address Sanitizer – One DLL for all Runtime Configurations](https://devblogs.microsoft.com/cppblog/msvc-address-sanitizer-one-dll-for-all-runtime-configurations/). +Dynamically linked projects (**`/MD`** or **`/MDd`**) used different libraries and DLLs depending on whether the project was configured for debug or release. For more information about these changes and their motivations, see [MSVC AddressSanitizer – One DLL for all Runtime Configurations](https://devblogs.microsoft.com/cppblog/msvc-address-sanitizer-one-dll-for-all-runtime-configurations/). The following table describes the previous behavior of the AddressSanitizer runtime library linking, before Visual Studio 17.7 Preview 3: @@ -101,7 +101,7 @@ For an illustration of the alignment requirement and potential issues, see the p ## Runtime options -The MSVC AddressSanitizer is a regularly synced fork of the [Clang AddressSanitizer runtime](https://github.com/llvm/llvm-project). As a result, MSVC implicitly inherits many of Clang's ASan runtime options. A complete list of options that we actively maintain and test can be found [here](./asan-flags.md). If you discover options that don't function as expected, [report a bug](https://aka.ms/feedback/report?space=62). +MSVC AddressSanitizer is a regularly synced fork of the [Clang AddressSanitizer runtime](https://github.com/llvm/llvm-project). As a result, MSVC implicitly inherits many of Clang's ASan runtime options. A complete list of options that we actively maintain and test can be found [here](./asan-flags.md). If you discover options that don't function as expected, [report a bug](https://aka.ms/feedback/report?space=62). ### Configure runtime options diff --git a/docs/sanitizers/asan.md b/docs/sanitizers/asan.md index bd9fc7c88c5..80f2a55b825 100644 --- a/docs/sanitizers/asan.md +++ b/docs/sanitizers/asan.md @@ -157,7 +157,7 @@ To enable AddressSanitizer for a [CMake project created to target Windows](../bu 1. Choose the **Edit JSON** link in the editor. This selection switches the view to raw JSON. -1. Add the following snippet to the `"windows-base"` preset, inside `"configurePresets":` to turn on Address Sanitizer: +1. Add the following snippet to the `"windows-base"` preset, inside `"configurePresets":` to turn on AddressSanitizer: ```json "environment": { @@ -192,7 +192,7 @@ To enable AddressSanitizer for a [CMake project created to target Windows](../bu }, ``` -1. Address sanitizer doesn't work if edit-and-continue is specified (`/ZI`), which is enabled by default for new CMake projects. In `CMakeLists.txt`, comment out (prefix with `#`) the line that starts with `set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT"`. That line looks something like this, afterwards: +1. AddressSanitizer doesn't work if edit-and-continue is specified (`/ZI`), which is enabled by default for new CMake projects. In `CMakeLists.txt`, comment out (prefix with `#`) the line that starts with `set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT"`. That line looks something like this, afterwards: ```json # set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$,$>,$<$:EditAndContinue>,$<$:ProgramDatabase>>") diff --git a/docs/sanitizers/error-stack-use-after-return.md b/docs/sanitizers/error-stack-use-after-return.md index f3ee909411e..6ddd807d4a8 100644 --- a/docs/sanitizers/error-stack-use-after-return.md +++ b/docs/sanitizers/error-stack-use-after-return.md @@ -1,13 +1,13 @@ --- title: "Error: stack-use-after-return" -description: "Learn about the stack-use-after-return Address Sanitizer error." +description: "Learn about the stack-use-after-return AddressSanitizer error." ms.date: 03/02/2021 f1_keywords: ["stack-use-after-return"] helpviewer_keywords: ["stack-use-after-return error", "AddressSanitizer error stack-use-after-return"] --- # Error: `stack-use-after-return` -> Address Sanitizer Error: Use of stack memory after return +> AddressSanitizer Error: Use of stack memory after return ## Remarks diff --git a/docs/security/security-best-practices-for-cpp.md b/docs/security/security-best-practices-for-cpp.md index 6cc6c47315c..83ffc267e8e 100644 --- a/docs/security/security-best-practices-for-cpp.md +++ b/docs/security/security-best-practices-for-cpp.md @@ -10,7 +10,7 @@ ms.topic: best-practice This article contains information about security tools and practices. Using them does not make applications immune from attack, but it makes successful attacks less likely. -## Visual C++ Security Features +## Microsoft C++ Security Features These security features are built into the Microsoft C++ compiler and linker: diff --git a/docs/windows/clickonce-deployment-for-visual-cpp-applications.md b/docs/windows/clickonce-deployment-for-visual-cpp-applications.md index 07698cb3de3..1824562d2ab 100644 --- a/docs/windows/clickonce-deployment-for-visual-cpp-applications.md +++ b/docs/windows/clickonce-deployment-for-visual-cpp-applications.md @@ -1,19 +1,19 @@ --- -description: "Learn more about: ClickOnce Deployment for Visual C++ Applications" -title: "ClickOnce Deployment for Visual C++ Applications" +description: "Learn more about: ClickOnce Deployment for Microsoft C++ Applications" +title: "ClickOnce Deployment for Microsoft C++ Applications" ms.date: "11/04/2016" helpviewer_keywords: ["deploying applications [C++], ClickOnce", "application deployment [C++], ClickOnce", "ClickOnce deployment [C++], C++ applications"] --- -# ClickOnce Deployment for Visual C++ Applications +# ClickOnce Deployment for Microsoft C++ Applications Visual Studio provides two different technologies for deploying Windows applications: ClickOnce deployment or [Windows Installer](/windows/win32/Msi/windows-installer-portal) deployment. ## ClickOnce Deployment in C++ > [!NOTE] -> ClickOnce does not support deployment of native C++ applications. However, you can use ClickOnce to deploy a Visual C++ application if it is a dependency of a Visual C# or VB.NET project. For example, if you have a Visual C# project that depends on a Visual C++ project, you can publish the application (including its dependencies) using ClickOnce deployment from the Visual C# development environment. If you have a Visual Basic .NET project that depends on a Visual C++ project, you can publish the application (including its dependencies) using ClickOnce deployment from the Visual Basic .NET development environment. +> ClickOnce does not support deployment of native C++ applications. However, you can use ClickOnce to deploy a Microsoft C++ application if it is a dependency of a C# or VB.NET project. For example, if you have a C# project that depends on a C++ project, you can publish the application (including its dependencies) using ClickOnce deployment from the C# development environment. If you have a Visual Basic .NET project that depends on a C++ project, you can publish the application (including its dependencies) using ClickOnce deployment from the Visual Basic .NET development environment. -To deploy a Visual C++ application using ClickOnce, you first have to build a [ClickOnce Application Manifest](/visualstudio/deployment/clickonce-application-manifest) and a [ClickOnce Deployment Manifest](/visualstudio/deployment/clickonce-deployment-manifest) using the [Mage.exe (Manifest Generation and Editing Tool)](/dotnet/framework/tools/mage-exe-manifest-generation-and-editing-tool) or its graphical user interface version (for information, see [MageUI.exe (Manifest Generation and Editing Tool, Graphical Client)](/dotnet/framework/tools/mageui-exe-manifest-generation-and-editing-tool-graphical-client)). +To deploy a C++ application using ClickOnce, you first have to build a [ClickOnce Application Manifest](/visualstudio/deployment/clickonce-application-manifest) and a [ClickOnce Deployment Manifest](/visualstudio/deployment/clickonce-deployment-manifest) using the [Mage.exe (Manifest Generation and Editing Tool)](/dotnet/framework/tools/mage-exe-manifest-generation-and-editing-tool) or its graphical user interface version (for information, see [MageUI.exe (Manifest Generation and Editing Tool, Graphical Client)](/dotnet/framework/tools/mageui-exe-manifest-generation-and-editing-tool-graphical-client)). You first use Mage.exe to build the application manifest; the resulting file will have the extension .manifest. You then use Mage.exe to build the deployment manifest; the resulting file will have the extension `.application`. You then sign the manifests. @@ -21,7 +21,7 @@ The application manifest must specify the target processor (**x86**, **x64**, or Also, the name of the application and deployment manifests must be different from the name of the C++ application. This avoids conflict between the application manifest created by Mage.exe and the external manifest that is part of the C++ application. -Your deployment needs to install any Visual C++ libraries on which your application depends. To determine the dependencies for a particular application, you can use depends.exe or the `DUMPBIN` utility with the `/DEPENDENTS` option. For more information on dependencies, see [Understanding the Dependencies of a Visual C++ Application](understanding-the-dependencies-of-a-visual-cpp-application.md). You might need to run VCRedist.exe; this utility installs Visual C++ libraries on the target computer. +Your deployment needs to install any C++ libraries on which your application depends. To determine the dependencies for a particular application, you can use depends.exe or the `DUMPBIN` utility with the `/DEPENDENTS` option. For more information on dependencies, see [Understanding the Dependencies of a Microsoft C++ Application](understanding-the-dependencies-of-a-visual-cpp-application.md). You might need to run VCRedist.exe; this utility installs C++ libraries on the target computer. You may also need to build a bootstrapper (prerequisites installer) for your application to deploy prerequisite components; for information on the bootstrapper, see [Creating Bootstrapper Packages](/visualstudio/deployment/creating-bootstrapper-packages). diff --git a/docs/windows/deploying-native-desktop-applications-visual-cpp.md b/docs/windows/deploying-native-desktop-applications-visual-cpp.md index 883406e495d..f36fc557a67 100644 --- a/docs/windows/deploying-native-desktop-applications-visual-cpp.md +++ b/docs/windows/deploying-native-desktop-applications-visual-cpp.md @@ -1,31 +1,31 @@ --- -description: "Learn more about: Deploying Native Desktop Applications (Visual C++)" -title: "Deploying Native Desktop Applications (Visual C++)" +description: "Learn more about: Deploying Native Desktop Applications (Microsoft C++)" +title: "Deploying Native Desktop Applications (Microsoft C++)" ms.date: "05/11/2018" helpviewer_keywords: ["deploying applications [C++]", "application deployment [C++]", "Visual C++, application deployment", "application deployment [C++], about application deployment", "deploying applications [C++], about deploying applications", "distributing applications [C++]"] ms.assetid: 37f1691e-d67c-41e4-926e-528a237a9bac ms.topic: "overview" ms.custom: intro-deployment --- -# Deploying Native Desktop Applications (Visual C++) +# Deploying Native Desktop Applications (Microsoft C++) Deployment is the process by which you distribute a finished application or component to be installed on other computers. Deployment planning starts when an application is created on a developer's computer. Deployment ends when the application is installed and ready to run on a user's computer. Visual Studio provides different technologies for deploying Windows applications. These include ClickOnce deployment and Windows Installer deployment. -- ClickOnce can be used to deploy C++ applications that target the common language runtime (CLR)—mixed, pure, and verifiable assemblies. Although you can use Windows Installer to deploy a managed application, we recommend that you use ClickOnce because it takes advantage of .NET Framework security features such as manifest signing. ClickOnce does not support deployment of native C++ applications. For more information, see [ClickOnce Deployment for Visual C++ Applications](clickonce-deployment-for-visual-cpp-applications.md). +- ClickOnce can be used to deploy C++ applications that target the common language runtime (CLR)—mixed, pure, and verifiable assemblies. Although you can use Windows Installer to deploy a managed application, we recommend that you use ClickOnce because it takes advantage of .NET Framework security features such as manifest signing. ClickOnce does not support deployment of native C++ applications. For more information, see [ClickOnce Deployment for Microsoft C++ Applications](clickonce-deployment-for-visual-cpp-applications.md). - Windows Installer technology can be used to deploy either native C++ applications or C++ applications that target the CLR. -The articles in this section of the documentation discuss how to ensure that a native Visual C++ application runs on any computer that provides a supported target platform, which files you must include in an installation package, and the recommended ways to redistribute the components that your application depends on. +The articles in this section of the documentation discuss how to ensure that a native Microsoft C++ application runs on any computer that provides a supported target platform, which files you must include in an installation package, and the recommended ways to redistribute the components that your application depends on. ## In This Section -- [Deployment in Visual C++](deployment-in-visual-cpp.md) +- [Deployment in Microsoft C++](deployment-in-visual-cpp.md) - [Deployment Concepts](deployment-concepts.md) -- [Understanding the Dependencies of a Visual C++ Application](understanding-the-dependencies-of-a-visual-cpp-application.md) +- [Understanding the Dependencies of a Microsoft C++ Application](understanding-the-dependencies-of-a-visual-cpp-application.md) - [Determining Which DLLs to Redistribute](determining-which-dlls-to-redistribute.md) @@ -33,13 +33,13 @@ The articles in this section of the documentation discuss how to ensure that a n - [Universal CRT deployment](universal-crt-deployment.md). -- [Redistributing Visual C++ Files](redistributing-visual-cpp-files.md) +- [Redistributing Microsoft C++ Files](redistributing-visual-cpp-files.md) - [Deployment Examples](deployment-examples.md) - [Redistributing Web Client Applications](redistributing-web-client-applications.md) -- [ClickOnce Deployment for Visual C++ Applications](clickonce-deployment-for-visual-cpp-applications.md) +- [ClickOnce Deployment for Microsoft C++ Applications](clickonce-deployment-for-visual-cpp-applications.md) - [Running a C++ /clr Application on a Previous Runtime Version](running-a-cpp-clr-application-on-a-previous-runtime-version.md) diff --git a/docs/windows/deploying-visual-cpp-application-by-using-the-vcpp-redistributable-package.md b/docs/windows/deploying-visual-cpp-application-by-using-the-vcpp-redistributable-package.md index 3ce20bfe3fb..2489c12d56f 100644 --- a/docs/windows/deploying-visual-cpp-application-by-using-the-vcpp-redistributable-package.md +++ b/docs/windows/deploying-visual-cpp-application-by-using-the-vcpp-redistributable-package.md @@ -1,6 +1,6 @@ --- -title: "Deploy a Visual C++ App by Using the Redistributable" -description: "Learn how to deploy a Visual C++ application by using the Visual C++ Redistributable package." +title: "Deploy a Microsoft C++ App by Using the Redistributable" +description: "Learn how to deploy a Microsoft C++ application by using the Visual C++ Redistributable package." ms.date: 03/20/2025 ms.topic: tutorial helpviewer_keywords: ["walkthrough, deploying a Visual C++ application by using the redistributable package"] diff --git a/docs/windows/deployment-concepts.md b/docs/windows/deployment-concepts.md index 762b7034ca3..7d74341b303 100644 --- a/docs/windows/deployment-concepts.md +++ b/docs/windows/deployment-concepts.md @@ -19,11 +19,11 @@ You package your application by adding a Setup project to your solution; when bu ## Library Dependencies -When a C/C++ application is built using functionality provided by the Visual C++ libraries, it becomes dependent on the presence of those libraries at runtime. In order for the application to run, it must link, either statically or dynamically, to the necessary Visual C++ libraries. If an application dynamically links to a Visual C++ library, then when it runs that library must be present so it can be loaded. On the other hand, if the application statically links to a Visual C++ library, then it does not need the corresponding DLLs to be present on the user's computer. Static linking, however, has some negative effects, such as the increasing the size of the application files, and making maintenance potentially more difficult. For more information, see [Advantages of using DLLs](../build/dlls-in-visual-cpp.md#advantages-of-using-dlls). +When a C/C++ application is built using functionality provided by the Microsoft C++ libraries, it becomes dependent on the presence of those libraries at runtime. In order for the application to run, it must link, either statically or dynamically, to the necessary Microsoft C++ libraries. If an application dynamically links to a Microsoft C++ library, then when it runs that library must be present so it can be loaded. On the other hand, if the application statically links to a Microsoft C++ library, then it does not need the corresponding DLLs to be present on the user's computer. Static linking, however, has some negative effects, such as the increasing the size of the application files, and making maintenance potentially more difficult. For more information, see [Advantages of using DLLs](../build/dlls-in-visual-cpp.md#advantages-of-using-dlls). ## Packaging and Redistributing -Visual C++ libraries are packaged as DLLs, and all necessary libraries for C/C++ applications are installed by Visual Studio on the developer's computer. However, when deploying your application to your users, it is not feasible in most cases to require them to install Visual Studio in order to run your application. It is important to be able to redistribute just the parts of Visual C++ that are required by your application to run correctly. +Microsoft C++ libraries are packaged as DLLs, and all necessary libraries for C/C++ applications are installed by Visual Studio on the developer's computer. However, when deploying your application to your users, it is not feasible in most cases to require them to install Visual Studio in order to run your application. It is important to be able to redistribute just the parts of Microsoft C++ that are required by your application to run correctly. For more information about packaging and redistributing, see the following topics: @@ -42,4 +42,4 @@ For deployment examples and suggestions about troubleshooting, see: ## See also - [Deploying Desktop Applications](deploying-native-desktop-applications-visual-cpp.md) -- [Understanding the Dependencies of a Visual C++ Application](understanding-the-dependencies-of-a-visual-cpp-application.md) +- [Understanding the Dependencies of a Microsoft C++ Application](understanding-the-dependencies-of-a-visual-cpp-application.md) diff --git a/docs/windows/deployment-in-visual-cpp.md b/docs/windows/deployment-in-visual-cpp.md index a343c802a5b..5c39eaabb60 100644 --- a/docs/windows/deployment-in-visual-cpp.md +++ b/docs/windows/deployment-in-visual-cpp.md @@ -1,14 +1,14 @@ --- -description: "Learn more about: Deployment in Visual C++" -title: "Deployment in Visual C++" +description: "Learn more about: Deployment in Microsoft C++" +title: "Deployment in Microsoft C++" ms.date: 06/28/2022 helpviewer_keywords: ["deploying applications [C++]", "application deployment [C++]"] ms.assetid: d4b4ffc0-d2bd-4e4a-84a6-62f1c26f6a09 ms.custom: intro-deployment --- -# Deployment in Visual C++ +# Deployment in Microsoft C++ -Installation of your application on a computer other than your development computer is known as *deployment*. When you deploy a Visual C++ application to another computer, you must install both the application and any library files it depends on. Visual Studio enables three ways to deploy the Visual C++ libraries together with your application: *central deployment*, *local deployment*, and *static linking*. Central deployment puts the library files under the Windows directory, where all applications can access them automatically. Local deployment puts the library files in the same directory as your application. You must redeploy any locally deployed libraries yourself to update them. Static linking binds the library code into your application. You have to recompile and redeploy your application to take advantage of any updates to the libraries when you use static linking. +Installation of your application on a computer other than your development computer is known as *deployment*. When you deploy a Microsoft C++ application to another computer, you must install both the application and any library files it depends on. Visual Studio enables three ways to deploy the Microsoft C++ libraries together with your application: *central deployment*, *local deployment*, and *static linking*. Central deployment puts the library files under the Windows directory, where all applications can access them automatically. Local deployment puts the library files in the same directory as your application. You must redeploy any locally deployed libraries yourself to update them. Static linking binds the library code into your application. You have to recompile and redeploy your application to take advantage of any updates to the libraries when you use static linking. In Visual Studio 2015, the Microsoft C Runtime library was refactored into version-specific local library components, and a new Universal C Runtime library that is now part of Windows. For details on deployment of the Universal CRT, see [Universal CRT deployment](universal-crt-deployment.md). @@ -16,15 +16,15 @@ In Visual Studio 2015, the Microsoft C Runtime library was refactored into versi In central deployment, library DLL files are installed in the *`Windows\System32`* directory, or for 32-bit library files on x64 systems, the *`Windows\SysWow64`* directory. Centrally deployed library files are available to other applications. -To centrally deploy Visual C++ libraries, you can use one of these two sources for the files to install: +To centrally deploy Microsoft C++ libraries, you can use one of these two sources for the files to install: - *Redistributable package* files. These files are stand-alone command-line executables that contain all the Visual C++ Redistributable libraries in compressed form. The latest Redistributable packages are available from [Microsoft Visual C++ Redistributable Latest Supported Downloads](latest-supported-vc-redist.md). When you use the Redistributable packages for central deployment, Windows Update can service the libraries independently. - *Redistributable merge modules* (*`.msm`* files), which you can include in your application's Windows Installer (*`.msi`*) file. This method is deprecated because libraries deployed this way can't be updated automatically by Windows Update. For more information, see [Redistributing by using merge modules](redistributing-components-by-using-merge-modules.md). -A Redistributable package file installs all of the Visual C++ libraries for a particular system architecture. For example, if your application is built for x64, you can use the *`vcredist_x64.exe`* package to install all the Visual C++ libraries your application uses. You can program your application installer to run the package as a prerequisite before you install your application. +A Redistributable package file installs all of the Microsoft C++ libraries for a particular system architecture. For example, if your application is built for x64, you can use the *`vcredist_x64.exe`* package to install all the Microsoft C++ libraries your application uses. You can program your application installer to run the package as a prerequisite before you install your application. -Central deployment by using a Redistributable package enables Windows Update to automatically update the Visual C++ libraries. For continued security and functionality, we recommend that you use the library DLLs in your application instead of static libraries, and use Redistributable packages and central deployment instead of local deployment. +Central deployment by using a Redistributable package enables Windows Update to automatically update the Microsoft C++ libraries. For continued security and functionality, we recommend that you use the library DLLs in your application instead of static libraries, and use Redistributable packages and central deployment instead of local deployment. ## Local deployment @@ -32,15 +32,15 @@ In local deployment, library files are installed in your application folder toge Expansions to a library may be spread across multiple extra DLLs, known as *dot libraries*. For example, some functionality in the standard library released in Visual Studio 2017 version 15.6 was added into *`msvcp140_1.dll`*, to preserve the ABI compatibility of *`msvcp140.dll`*. If you use Visual Studio 2017 version 15.6 (toolset 14.13) or later, you may need to locally deploy both these dot libraries and the main library. These separate dot libraries will eventually be added to the base library, when the ABI changes. -Because Microsoft can't automatically update locally deployed Visual C++ libraries, we don't recommend local deployment of these libraries. If you decide to use local deployment of the Redistributable libraries, we recommend that you implement your own method of automatically updating the locally deployed libraries. +Because Microsoft can't automatically update locally deployed Microsoft C++ libraries, we don't recommend local deployment of these libraries. If you decide to use local deployment of the Redistributable libraries, we recommend that you implement your own method of automatically updating the locally deployed libraries. ## Static linking -In addition to dynamically linked libraries, Visual Studio supplies most of its libraries as static libraries. You can statically link a static library to your application, that is, link the library object code directly into the application. Static linking creates a single binary without a DLL dependency, so that you don't have to deploy the Visual C++ library files separately. However, we don't recommend this approach because statically linked libraries can't be updated in place. To update a linked library when you use static linking, you have to recompile and redeploy your application. +In addition to dynamically linked libraries, Visual Studio supplies most of its libraries as static libraries. You can statically link a static library to your application, that is, link the library object code directly into the application. Static linking creates a single binary without a DLL dependency, so that you don't have to deploy the Microsoft C++ library files separately. However, we don't recommend this approach because statically linked libraries can't be updated in place. To update a linked library when you use static linking, you have to recompile and redeploy your application. ## Troubleshooting deployment issues -The load order of Visual C++ libraries is system-dependent. To diagnose loader issues, use *`depends.exe`* or *`where.exe`*. For more information, see [Dynamic-link library search order (Windows)](/windows/win32/Dlls/dynamic-link-library-search-order). +The load order of Microsoft C++ libraries is system-dependent. To diagnose loader issues, use *`depends.exe`* or *`where.exe`*. For more information, see [Dynamic-link library search order (Windows)](/windows/win32/Dlls/dynamic-link-library-search-order). ## See also diff --git a/docs/windows/toc.yml b/docs/windows/toc.yml index a8a74ff2d76..6b6e16a2dae 100644 --- a/docs/windows/toc.yml +++ b/docs/windows/toc.yml @@ -120,11 +120,11 @@ items: items: - name: Deploy native desktop applications href: ../windows/deploying-native-desktop-applications-visual-cpp.md - - name: Deployment in Visual C++ + - name: Deployment in Microsoft C++ href: ../windows/deployment-in-visual-cpp.md - name: Deployment Concepts href: ../windows/deployment-concepts.md - - name: Understand the dependencies of a Visual C++ application + - name: Understand the dependencies of a Microsoft C++ application href: ../windows/understanding-the-dependencies-of-a-visual-cpp-application.md - name: Determine which DLLs to redistribute href: ../windows/determining-which-dlls-to-redistribute.md @@ -132,7 +132,7 @@ items: href: ../windows/choosing-a-deployment-method.md - name: Universal CRT deployment href: ../windows/universal-crt-deployment.md - - name: Redistribute Visual C++ Files + - name: Redistribute Microsoft C++ Files expanded: false items: - name: Redistribute Visual C++ Files @@ -154,17 +154,17 @@ items: items: - name: Deployment examples href: ../windows/deployment-examples.md - - name: "Walkthrough: Deploy a Visual C++ application by using a setup project" + - name: "Walkthrough: Deploy a Microsoft C++ application by using a setup project" href: ../windows/walkthrough-deploying-a-visual-cpp-application-by-using-a-setup-project.md - - name: "Walkthrough: Deploy a Visual C++ application to an application-local folder" + - name: "Walkthrough: Deploy a Microsoft C++ application to an application-local folder" href: ../windows/walkthrough-deploying-a-visual-cpp-application-to-an-application-local-folder.md - - name: "Walkthrough: Deploy a Visual C++ application by using the Visual C++ Redistributable package" + - name: "Walkthrough: Deploy a Microsoft C++ application by using the Visual C++ Redistributable package" href: ../windows/deploying-visual-cpp-application-by-using-the-vcpp-redistributable-package.md - name: Prepare a test machine to run a debug executable href: ../windows/preparing-a-test-machine-to-run-a-debug-executable.md - name: Redistribute web client applications href: ../windows/redistributing-web-client-applications.md - - name: ClickOnce deployment for Visual C++ applications + - name: ClickOnce deployment for Microsoft C++ applications href: ../windows/clickonce-deployment-for-visual-cpp-applications.md - name: Run a C++ -clr application on a previous runtime version href: ../windows/running-a-cpp-clr-application-on-a-previous-runtime-version.md diff --git a/docs/windows/understanding-the-dependencies-of-a-visual-cpp-application.md b/docs/windows/understanding-the-dependencies-of-a-visual-cpp-application.md index 935808c0d43..8217b0db85b 100644 --- a/docs/windows/understanding-the-dependencies-of-a-visual-cpp-application.md +++ b/docs/windows/understanding-the-dependencies-of-a-visual-cpp-application.md @@ -1,14 +1,14 @@ --- -description: "Learn more about: Understanding the Dependencies of a Visual C++ Application" -title: "Understanding the Dependencies of a Visual C++ Application" +description: "Learn more about: Understanding the Dependencies of a Microsoft C++ Application" +title: "Understanding the Dependencies of a Microsoft C++ Application" ms.date: "11/04/2016" helpviewer_keywords: ["application deployment [C++], dependencies", "Dependency Walker", "dependencies [C++], application deployment and", "deploying applications [C++], dependencies", "DUMPBIN utility", "DLLs [C++], dependencies", "depends.exe", "libraries [C++], application deployment issues"] ms.assetid: 62a44c95-c389-4c5f-82fd-07d7ef09dbf9 ms.topic: concept-article --- -# Understanding the Dependencies of a Visual C++ Application +# Understanding the Dependencies of a Microsoft C++ Application -To determine which Visual C++ libraries an application depends on, you can view the project properties. (In Solution Explorer, right-click on the project and choose **Properties** to open the **Property Pages** dialog box.) On Windows 8 and earlier, you can also use the Dependency Walker (depends.exe), which gives a more comprehensive picture of the dependencies. For more recent versions of Windows the [lucasg/Dependencies](https://github.com/lucasg/Dependencies) tool provides similar functionality (this is a third-party tool not guaranteed by Microsoft.) +To determine which Microsoft C++ libraries an application depends on, you can view the project properties. (In Solution Explorer, right-click on the project and choose **Properties** to open the **Property Pages** dialog box.) On Windows 8 and earlier, you can also use the Dependency Walker (depends.exe), which gives a more comprehensive picture of the dependencies. For more recent versions of Windows the [lucasg/Dependencies](https://github.com/lucasg/Dependencies) tool provides similar functionality (this is a third-party tool not guaranteed by Microsoft.) In the **Property Pages** dialog box, you can examine various pages under **Configuration Properties** to understand the dependencies. For example, if your project uses the MFC libraries and you choose **Use of MFC**, **Use MFC in a Shared DLL** on the **Configuration Properties**, **General** page, your application at run time depends on MFC DLLs such as mfc\.dll. If your application doesn't use MFC, it might depend on the CRT library if you choose a **Runtime Library** value of **Multi-threaded Debug DLL (/MDd)** or **Multi-threaded DLL (/MD)** on the **Configuration Properties**, **C/C++**, **Code Generation** page. @@ -16,7 +16,7 @@ By using depends.exe, you can examine a list of DLLs that are linked to the appl When you use depends.exe, be aware that a DLL might have a dependency on another DLL or on a specific version of a DLL. You can use depends.exe on either the development computer or on a target computer. On the development computer, depends.exe reports the DLLs that are required to support an application. If you have trouble getting an application to run on a target computer, you can copy depends.exe to it and then open the application in the tool so that you can determine whether any required DLLs are missing or incorrect. -When you know which DLLs your application depends on, you can determine the ones that you have to redistribute with your application when you deploy it to another computer. In most cases, you don't have to redistribute system DLLs, but you may have to redistribute DLLs for Visual C++ libraries. For more information, see [Determining Which DLLs to Redistribute](determining-which-dlls-to-redistribute.md). +When you know which DLLs your application depends on, you can determine the ones that you have to redistribute with your application when you deploy it to another computer. In most cases, you don't have to redistribute system DLLs, but you may have to redistribute DLLs for Microsoft C++ libraries. For more information, see [Determining Which DLLs to Redistribute](determining-which-dlls-to-redistribute.md). ## See also diff --git a/docs/windows/walkthrough-deploying-a-visual-cpp-application-by-using-a-setup-project.md b/docs/windows/walkthrough-deploying-a-visual-cpp-application-by-using-a-setup-project.md index 5b2af3d9365..93ddba07afd 100644 --- a/docs/windows/walkthrough-deploying-a-visual-cpp-application-by-using-a-setup-project.md +++ b/docs/windows/walkthrough-deploying-a-visual-cpp-application-by-using-a-setup-project.md @@ -1,12 +1,12 @@ --- -description: "Learn more about: Walkthrough: Deploy a Visual C++ application by using a setup project" -title: "Deploy a Visual C++ application by using a setup project" +description: "Learn more about: Walkthrough: Deploy a Microsoft C++ application by using a setup project" +title: "Deploy a Microsoft C++ application by using a setup project" ms.date: 06/28/2022 -helpviewer_keywords: ["deployment for Visual C++"] +helpviewer_keywords: ["deployment for Microsoft C++"] ms.custom: intro-deployment ms.topic: install-set-up-deploy --- -# Walkthrough: Deploy a Visual C++ application by using a setup project +# Walkthrough: Deploy a Microsoft C++ application by using a setup project In this walkthrough, you'll create a sample app in Visual Studio, then create a setup project to deploy your app to another computer. @@ -22,7 +22,7 @@ You need the following components to complete this walkthrough: - The Microsoft Visual Studio Installer Projects extension. The extension is free for Visual Studio developers and adds the functionality of the setup and deployment project templates to Visual Studio. -- To test your deployment, another computer that doesn't have the Visual C++ libraries installed. +- To test your deployment, another computer that doesn't have the Microsoft C++ libraries installed. ### To install C++ and MFC in Visual Studio 2022 @@ -62,7 +62,7 @@ If you have Visual Studio installed, but you don't have the C++ or MFC component - The Microsoft Visual Studio Installer Projects extension. The extension is free for Visual Studio developers and adds the functionality of the setup and deployment project templates to Visual Studio. -- To test your deployment, another computer that doesn't have the Visual C++ libraries installed. +- To test your deployment, another computer that doesn't have the Microsoft C++ libraries installed. ### To install C++ and MFC in Visual Studio 2019 @@ -330,7 +330,7 @@ The setup project lets you specify where the components of your app are installe ## Test your deployment -To test your deployment, copy the deployment files to a second computer that doesn't have the Visual C++ libraries installed. Run the setup program. If your app loads and runs normally, and you don't get a runtime error about missing libraries or components, then your deployment is successful. +To test your deployment, copy the deployment files to a second computer that doesn't have the Microsoft C++ libraries installed. Run the setup program. If your app loads and runs normally, and you don't get a runtime error about missing libraries or components, then your deployment is successful. For application testing, you can create a deployment setup program that installs a debug version of your app, along with debug libraries, on machines you control. Debug apps and debug libraries aren't licensed for redistribution, and can't be deployed to customer machines. For more information, see [Preparing a test machine to run a debug executable](../windows/preparing-a-test-machine-to-run-a-debug-executable.md). diff --git a/docs/windows/walkthrough-deploying-a-visual-cpp-application-to-an-application-local-folder.md b/docs/windows/walkthrough-deploying-a-visual-cpp-application-to-an-application-local-folder.md index 3a419091272..c87fa954be4 100644 --- a/docs/windows/walkthrough-deploying-a-visual-cpp-application-to-an-application-local-folder.md +++ b/docs/windows/walkthrough-deploying-a-visual-cpp-application-to-an-application-local-folder.md @@ -1,35 +1,35 @@ --- -description: "Learn more about: Walkthrough: Deploying a Visual C++ Application to an Application-local Folder" -title: "Deploy a Visual C++ Application to an App-local Folder" +description: "Learn more about: Walkthrough: Deploying a Microsoft C++ Application to an Application-local Folder" +title: "Deploy a Microsoft C++ Application to an App-local Folder" ms.date: "04/23/2019" -helpviewer_keywords: ["deploying Visual C++ applications"] +helpviewer_keywords: ["deploying Microsoft C++ applications"] ms.assetid: 47a81c47-9dbe-47c6-96cc-fbb2fda5e6ad ms.custom: intro-deployment ms.topic: install-set-up-deploy --- -# Walkthrough: Deploying a Visual C++ Application to an Application-local Folder +# Walkthrough: Deploying a Microsoft C++ Application to an Application-local Folder -Describes how to deploy a Visual C++ application by copying files to its folder. +Describes how to deploy a Microsoft C++ application by copying files to its folder. ## Prerequisites - A computer that has Visual Studio installed. -- Another computer that doesn't have the Visual C++ libraries. +- Another computer that doesn't have the Microsoft C++ libraries. ### To deploy an application to an application-local folder -1. Create and build an MFC application by following the steps in [Walkthrough: Deploying a Visual C++ Application By Using a Setup Project](walkthrough-deploying-a-visual-cpp-application-by-using-a-setup-project.md). +1. Create and build an MFC application by following the steps in [Walkthrough: Deploying a Microsoft C++ Application By Using a Setup Project](walkthrough-deploying-a-visual-cpp-application-by-using-a-setup-project.md). 1. Copy the appropriate MFC and C Run-Time (CRT) library files from the Visual Studio installation directory in the \\VC\\redist\\*version* folder, and then paste them in the \Release\ folder of your MFC project. For more information about other files that you might have to copy, see [Determining Which DLLs to Redistribute](determining-which-dlls-to-redistribute.md). -1. Run the MFC application on a second computer that doesn't have the Visual C++ libraries. +1. Run the MFC application on a second computer that doesn't have the Microsoft C++ libraries. 1. Copy the contents of the \Release\ folder and paste them in the application folder on the second computer. 1. Run the application on the second computer. - The application runs successfully because the Visual C++ libraries are available in the application-local folder. + The application runs successfully because the Microsoft C++ libraries are available in the application-local folder. ## See also From 62a673065635f38d1bcdc4bab24b2db8c568f271 Mon Sep 17 00:00:00 2001 From: Augustin Popa Date: Thu, 30 Oct 2025 00:01:52 -0700 Subject: [PATCH 2029/2255] Initial set of VS 2026 changes to /porting --- docs/porting/binary-compat-2015-2017.md | 20 ++++---- .../features-deprecated-in-visual-studio.md | 46 ++++++++++++++----- ...-of-potential-upgrade-issues-visual-cpp.md | 24 +++++----- docs/porting/porting-third-party-libraries.md | 13 +++--- ...g-to-the-universal-windows-platform-cpp.md | 2 +- docs/porting/toc.yml | 2 +- .../upgrade-your-code-to-the-universal-crt.md | 22 ++++----- ...cts-from-earlier-versions-of-visual-cpp.md | 2 +- docs/porting/use-native-multi-targeting.md | 16 ++++--- 9 files changed, 87 insertions(+), 60 deletions(-) diff --git a/docs/porting/binary-compat-2015-2017.md b/docs/porting/binary-compat-2015-2017.md index 86ad8957757..21a50e72153 100644 --- a/docs/porting/binary-compat-2015-2017.md +++ b/docs/porting/binary-compat-2015-2017.md @@ -1,31 +1,31 @@ --- -title: "C++ binary compatibility 2015-2022" -description: "Describes how binary compatibility works between compiled C++ files in Visual Studio 2015, 2017, 2019, and 2022. One Microsoft Visual C++ Redistributable package works for all three versions." -ms.date: 03/07/2024 +title: "C++ binary compatibility 2015-2026" +description: "Describes how binary compatibility works between compiled C++ files in Visual Studio 2015, 2017, 2019, 2022, and 2026. One Microsoft Visual C++ Redistributable package works for all these versions." +ms.date: 10/29/2025 helpviewer_keywords: ["binary compatibility, Visual C++"] --- # C++ binary compatibility between Visual Studio versions -The Microsoft C++ (MSVC) compiler toolsets in Visual Studio 2013 and earlier don't guarantee binary compatibility across major versions. You can't link object files, static libraries, dynamic libraries, and executables built by different versions of these toolsets. The ABIs, object formats, and runtime libraries are incompatible. +The Microsoft C++ (MSVC) Build Tools in Visual Studio 2013 and earlier don't guarantee binary compatibility across major versions. You can't link object files, static libraries, dynamic libraries, and executables built by different versions of these toolsets. The ABIs, object formats, and runtime libraries are incompatible. -We've changed this behavior in Visual Studio 2015 and later versions. The runtime libraries and apps compiled by any of these versions of the compiler are binary-compatible. It's reflected in the C++ toolset major number, which starts with 14 for all versions since Visual Studio 2015. (The toolset version is v140 for Visual Studio 2015, v141 for 2017, v142 for 2019, and v143 for 2022). Say you have third-party libraries built by Visual Studio 2015. You can still use them in an application built by Visual Studio 2017, 2019, or 2022. There's no need to recompile with a matching toolset. The latest version of the Microsoft Visual C++ Redistributable package (the Redistributable) works for all of them. +We've changed this behavior in Visual Studio 2015 and later versions. The runtime libraries and apps compiled by any of these versions of the compiler are binary-compatible. It's reflected in the C++ toolset major number, which starts with 14 for all versions since Visual Studio 2015. (The toolset version is v140 for Visual Studio 2015, v141 for 2017, v142 for 2019, and v143 for 2022). Say you have third-party libraries built by Visual Studio 2015. You can still use them in an application built by Visual Studio 2017, 2019, 2022, or 2026. There's no need to recompile with a matching toolset. The latest version of the Microsoft Visual C++ Redistributable package (the Redistributable) works for all of them. ## Restrictions on binary compatibility -There are three important restrictions on binary compatibility between the v140, v141, v142, and v143 toolsets and minor numbered version updates: +There are three important restrictions on binary compatibility between the v140, v141, v142, v143, and v145 toolsets and minor numbered version updates: -- Binaries created with different versions of the v140, v141, v142, and v143 toolsets can be combined. The key rule is that the linker should only work with inputs built by a toolset that is the same version (or earlier) as itself. This applies to apps, import libraries, static libraries, and other files as described in [LINK input files](../build/reference/link-input-files.md). In some cases, an import library for an [implicitly linked](../build/linking-an-executable-to-a-dll.md#implicit-linking) DLL built by a later version of the toolset can be linked using an earlier version of the toolset--especially if the import library strictly uses `extern "C"` for the imports/exports. Here are some examples of what this all means: +- Binaries created with different versions of the v140, v141, v142, v143, and v145 toolsets can be combined. The key rule is that the linker should only work with inputs built by a toolset that is the same version (or earlier) as itself. This applies to apps, import libraries, static libraries, and other files as described in [LINK input files](../build/reference/link-input-files.md). In some cases, an import library for an [implicitly linked](../build/linking-an-executable-to-a-dll.md#implicit-linking) DLL built by a later version of the toolset can be linked using an earlier version of the toolset--especially if the import library strictly uses `extern "C"` for the imports/exports. Here are some examples of what this all means: - An app compiled with a 2017 toolset (v141, versions 15.0 to 15.9) can be linked to a static library compiled with Visual Studio 2022 version 17.8 (v143), but the linking must be done using a version 17.8 or later toolset. - - Apps and libraries built using VS 2015, 2017, 2019, or 2022 can be linked together, but the linking must be done using a version of the toolset that is as recent as, or more recent than, the most recent toolset used to build any of the binaries you pass to the linker. For example, given three binaries built with toolsets from VS 2015 version 14.3, VS 2017 version 15.9, and VS 2019 version 16.11, you can link them using any toolset version that is 16.11 or later. + - Apps and libraries built using VS 2015, 2017, 2019, 2022, and 2026 can be linked together, but the linking must be done using a version of the toolset that is as recent as, or more recent than, the most recent toolset used to build any of the binaries you pass to the linker. For example, given three binaries built with toolsets from VS 2015 version 14.3, VS 2017 version 15.9, and VS 2019 version 16.11, you can link them using any toolset version that is 16.11 or later. - If a DLL is built with a newer toolset, the import library can sometimes be used with older toolsets if all of the exports follow the C language calling convention (`extern "C"`). However, the only officially supported case is consuming a newer windows SDK with an older toolset. - The Redistributable your app uses has a similar binary-compatibility restriction. When you mix binaries built by different supported versions of the toolset, the Redistributable version must be at least as new as the latest toolset used by any app component. - Static libraries or object files compiled using the [`/GL` (Whole program optimization)](../build/reference/gl-whole-program-optimization.md) compiler switch or linked using [`/LTCG` (Link-time code generation)](../build/reference/ltcg-link-time-code-generation.md) *aren't* binary-compatible across versions, including minor version updates. All object files and libraries compiled using **`/GL`** and **`/LTCG`** must use exactly the same toolset for the compile and the final link. For example, code built by using **`/GL`** in the Visual Studio 2019 version 16.7 toolset can't be linked to code built by using **`/GL`** in the Visual Studio 2019 version 16.8 toolset. The compiler emits [Fatal error C1047](../error-messages/compiler-errors-1/fatal-error-c1047.md). ## Upgrade the Microsoft Visual C++ Redistributable from Visual Studio 2015 and later -We've kept the Microsoft Visual C++ Redistributable major version number the same for Visual Studio 2015, 2017, 2019, and 2022. That means only one instance of the Redistributable can be installed at a time. A newer version overwrites any older version that's already installed. For example, one app may install the Redistributable from Visual Studio 2015. Then, another app installs the Redistributable from Visual Studio 2022. The 2022 version overwrites the older version, but because they're binary-compatible, the earlier app still works fine. We make sure the latest version of the Redistributable has all the newest features, security updates, and bug fixes. That's why we always recommend you upgrade to the latest available version. +We've kept the Microsoft Visual C++ Redistributable major version number the same for Visual Studio 2015, 2017, 2019, 2022, and 2026. That means only one instance of the Redistributable can be installed at a time. A newer version overwrites any older version that's already installed. For example, one app may install the Redistributable from Visual Studio 2015. Then, another app installs the Redistributable from Visual Studio 2026. The 2026 version overwrites the older version, but because they're binary-compatible, the earlier app still works fine. We make sure the latest version of the Redistributable has all the newest features, security updates, and bug fixes. That's why we always recommend you upgrade to the latest available version. -Similarly, you can't install an older Redistributable when a newer version is already installed. The installer reports an error if you try. You'll see an error like this if you install the 2017 or 2019 Redistributable on a machine that already has the 2022 version: +Similarly, you can't install an older Redistributable when a newer version is already installed. The installer reports an error if you try. You'll see an error like this if you install the 2019 or 2022 Redistributable on a machine that already has the 2026 version: ```Output 0x80070666 - Another version of this product is already installed. Installation of this version cannot continue. To configure or remove the existing version of this product, use Add/Remove Programs on the Control Panel. diff --git a/docs/porting/features-deprecated-in-visual-studio.md b/docs/porting/features-deprecated-in-visual-studio.md index 71383dbc034..38a850fda85 100644 --- a/docs/porting/features-deprecated-in-visual-studio.md +++ b/docs/porting/features-deprecated-in-visual-studio.md @@ -1,21 +1,43 @@ --- -description: "Learn more about: C++ features deprecated in Visual Studio" -title: "C++ features deprecated in Visual Studio" -ms.date: 04/07/2022 -helpviewer_keywords: ["Features deprecated in Visual Studio"] +description: "Learn more about: C++ features deprecated or removed in Visual Studio" +title: "C++ features deprecated or removed in Visual Studio" +ms.date: 10/29/2025 +helpviewer_keywords: ["Features deprecated or removed in Visual Studio"] --- -# C++ features deprecated in Visual Studio +# C++ features deprecated or removed in Visual Studio This article is a non-exhaustive list of C++ features deprecated in Visual Studio 2019 and 2022. For information on breaking changes and conformance improvements for C++ in the latest version of Visual Studio, see [C++ conformance improvements in Visual Studio](../overview/cpp-conformance-improvements.md). -## Deprecated in Visual Studio 2019 +## Visual Studio 2019 -- Support for Windows XP development +### Support for Windows XP development - Visual Studio 2019 and later versions don't include current toolset support for creating code for Windows XP. Support for Windows XP development by using the v141_xp toolset that shipped in Visual Studio 2017 is still available as an optional component in the Visual Studio Installer. For information on how to install the v141_xp Windows XP platform toolset, see [Configuring programs for Windows XP](../build/configuring-programs-for-windows-xp.md). +Visual Studio 2019 and later versions don't include current toolset support for creating code for Windows XP. Support for Windows XP development by using the v141_xp toolset that shipped in Visual Studio 2017 is still available as an optional component in the Visual Studio Installer. For information on how to install the v141_xp Windows XP platform toolset, see [Configuring programs for Windows XP](../build/configuring-programs-for-windows-xp.md). -## Deprecated in Visual Studio 2022 +## Visual Studio 2022 -- Support for project upgrade from Visual C++ 6 - - Visual Studio 2022 and later versions don't support upgrades from Visual C++ 6 Workspace (*`.dsw`*) and Project (*`.dsp`*) files. Visual Studio no longer registers the *`.dsw`* and *`.dsp`* file extensions as Visual Studio file types. To upgrade a project with these extensions, first use Visual Studio 2019 to upgrade the project to modern Solution (*`.sln`*) and C++ Project (*`.vcxproj`*) files. Then use the current version of Visual Studio to upgrade the project again. +### Support for project upgrade from Visual C++ 6 + +Visual Studio 2022 and later versions don't support upgrades from Visual C++ 6 Workspace (*`.dsw`*) and Project (*`.dsp`*) files. Visual Studio no longer registers the *`.dsw`* and *`.dsp`* file extensions as Visual Studio file types. To upgrade a project with these extensions, first use Visual Studio 2019 to upgrade the project to modern Solution (*`.sln`*) and C++ Project (*`.vcxproj`*) files. Then use the current version of Visual Studio to upgrade the project again. + +## Visual Studio 2026 + +### Support for C++AMP, ARM32 toolchain, and /DEBUG:FASTLINK + +Visual Studio 2026 and later versions don't support C++AMP, the ARM32 toolchain, and /DEBUG:FASTLINK. If you're utilizing `/DEBUG:FASTLINK`, it's recommended to switch to [`/DEBUG:FULL`](https://learn.microsoft.com/cpp/build/reference/debug-generate-debug-info) for improved debugging support. Developers needing to target ARM32 can continue using the Visual Studio 2022 v143 build tools as detailed in this [Microsoft blog post](https://devblogs.microsoft.com/cppblog/side-by-side-minor-version-msvc-toolsets-in-visual-studio-2019/). + +### Deprecation of /await + +Visual Studio 2026 deprecated the `/await` switch, which will be removed in a future release. Developers are encouraged to use Standard C++ coroutines, available by default in C++20 or later. For projects in earlier language modes, consider using `/await:strict` to maintain compatibility until the switch is removed. + +### Support for Windows 7, 8, and 8.1 for Microsoft C++ Build Tools + +In Visual Studio 2026, the Microsoft C++ (MSVC) Build Tools have updated their minimum supported operating systems. With this release, the Build Tools no longer support targeting: + +- Windows 7 / Windows Server 2008 R2 +- Windows 8 / Windows Server 2012 +- Windows 8.1 / Windows Server 2012 R2 + +To build applications using the latest C++ tools, your target platform must be **Windows 10** or **Windows Server 2016** (or later). + +These changes allow for better performance, enhanced security, and alignment with the most recent Windows platform capabilities. \ No newline at end of file diff --git a/docs/porting/overview-of-potential-upgrade-issues-visual-cpp.md b/docs/porting/overview-of-potential-upgrade-issues-visual-cpp.md index fbae3e758a8..484ac33a31e 100644 --- a/docs/porting/overview-of-potential-upgrade-issues-visual-cpp.md +++ b/docs/porting/overview-of-potential-upgrade-issues-visual-cpp.md @@ -1,13 +1,13 @@ --- -description: "Learn more about: Overview of potential upgrade issues (Visual C++)" -title: "Overview of potential upgrade issues (Visual C++)" -ms.date: 10/22/2021 +description: "Learn more about: Overview of potential upgrade issues (Microsoft C++)" +title: "Overview of potential upgrade issues (Microsoft C++)" +ms.date: 10/29/2025 ms.assetid: 2c99a8cb-098f-4a9d-bf2c-b80fd06ace43 ms.topic: upgrade-and-migration-article --- -# Overview of potential upgrade issues (Visual C++) +# Overview of potential upgrade issues (Microsoft C++) -Over the years, the Microsoft C++ compiler has undergone many changes, along with changes in the C++ language itself, the C++ Standard Library, the C runtime (CRT), and other libraries such as MFC and ATL. As a result, when you upgrade an application from an earlier version of Visual Studio you might see compiler and linker errors and warnings in code that previously compiled cleanly. The older the original code base, the greater the potential for such errors. This overview summarizes the most common classes of issues you're likely to see, and provides links to more detailed information. +Over the years, the Microsoft C++ (MSVC) compiler has undergone many changes, along with changes in the C++ language itself, the C++ Standard Library (STL), the C runtime (CRT), and other libraries such as MFC and ATL. As a result, when you upgrade an application from an earlier version of Visual Studio you might see compiler and linker errors and warnings in code that previously compiled cleanly. The older the original code base, the greater the potential for such errors. This overview summarizes the most common classes of issues you're likely to see, and provides links to more detailed information. > [!NOTE] > In the past, we've recommended that upgrades that span several versions of Visual Studio should be performed incrementally one version at a time. We no longer recommend this approach. We've found that it's almost always simpler to upgrade to the most current version of Visual Studio no matter how old the code base. @@ -25,17 +25,17 @@ When you upgrade an app from Visual Studio 2013 or before to a newer version, it The *`.obj`* and *`.lib`* file formats are well defined and rarely change. Sometimes additions are made to these file formats, but these additions generally don't affect the ability of newer toolsets to consume object files and libraries produced by older toolsets. The major exception is if you compile using [`/GL` (Whole Program Optimization)](../build/reference/gl-whole-program-optimization.md). If you compile using `/GL`, you can only link the resulting object file by using the same toolset that was used to produce it. So, if you produce an object file with `/GL` and use a Visual Studio 2017 (v141) compiler, you must link it using the Visual Studio 2017 (v141) linker. It's because the internal data structures within the object files aren't stable across major versions of the toolset. Newer toolsets don't understand the older data formats. -C++ doesn't have a stable application binary interface (ABI). But Visual Studio maintains a stable C++ ABI for all minor versions of a release. Visual Studio 2015 (v140), Visual Studio 2017 (v141), Visual Studio 2019 (v142), and Visual Studio 2022 (v143) toolsets vary only in their minor version. They all have the same major version number, which is 14. For more information, see [C++ Binary Compatibility between Visual Studio versions](binary-compat-2015-2017.md). +C++ doesn't have a stable application binary interface (ABI). But Visual Studio maintains a stable C++ ABI for all minor versions of a release. Visual Studio 2015 (v140), Visual Studio 2017 (v141), Visual Studio 2019 (v142), Visual Studio 2022 (v143), and Visual Studio 2026 (v145) toolsets vary only in their minor version. They all have the same major version number, which is 14. For more information, see [C++ Binary Compatibility between Visual Studio versions](binary-compat-2015-2017.md). If you have an object file that has external symbols with C++ linkage, that object file may not link correctly with object files produced by a different major version of the toolset. There are many possible outcomes: the link might fail entirely (for example, if name decoration changed). The link could succeed, but the app could fail at runtime (for example, if type layouts changed). Or your app might continue to work and nothing will go wrong. Also note, while the C++ ABI isn't stable, the C ABI and the subset of the C++ ABI required for COM are stable. -If you link to an import library, any later version of the Visual Studio redistributable libraries that preserve ABI compatibility may be used at runtime. For example, if you compile and link your app by using the Visual Studio 2015 Update 3 toolset, you can use any later redistributable. That's because the 2015, 2017, 2019, and 2022 libraries have preserved backward binary compatibility. The reverse isn't true: You can't use a redistributable for an earlier version of the toolset than you used to build any component of your code. +If you link to an import library, any later version of the Visual Studio redistributable libraries that preserve ABI compatibility may be used at runtime. For example, if you compile and link your app by using the Visual Studio 2015 Update 3 toolset, you can use any later redistributable. That's because the 2015, 2017, 2019, 2022, and 2026 libraries have preserved backward binary compatibility. The reverse isn't true: You can't use a redistributable for an earlier version of the toolset than you used to build any component of your code. ### Libraries If you `#include` a particular version of the header files, you must link the resulting object file to the same version of the libraries. So, for example, if your source file includes the Visual Studio 2015 Update 3 ``, you must link with the Visual Studio 2015 Update 3 *`vcruntime`* library. Similarly, if your source file includes the Visual Studio 2017 version 15.5 ``, you must link with the Visual Studio 2017 version 15.5 Standard C++ library, *`msvcprt`*. Mixing-and-matching isn't supported. -For the C++ Standard Library, mixing-and-matching has been explicitly disallowed by use of `#pragma detect_mismatch` in the standard headers since Visual Studio 2010. If you try to link incompatible object files, or if you link with the wrong standard library, the link fails. +For the Microsoft C++ Standard Library (STL), mixing-and-matching has been explicitly disallowed by use of `#pragma detect_mismatch` in the standard headers since Visual Studio 2010. If you try to link incompatible object files, or if you link with the wrong standard library, the link fails. Older CRT version mixing-and-matching was never supported, but it often just worked because the API surface didn't change much over time. The Universal CRT broke backwards compatibility so that in the future we can maintain backwards compatibility. We have no plans to introduce new, versioned Universal CRT binaries in the future. Instead, the existing Universal CRT is now updated in-place. @@ -155,7 +155,7 @@ Windows API documentation lists the minimum or maximum supported operating syste ### Windows version -When upgrading a program that uses the Windows API either directly or indirectly, you need to decide the minimum Windows version to support. In most cases, Windows 7 is a good choice. For more information, see [Header file problems](porting-guide-spy-increment.md#header_file_problems). The `WINVER` macro defines the oldest version of Windows that your program is designed to run on. If your MFC program sets `WINVER` to 0x0501 (Windows XP) you'll get a warning because MFC no longer supports XP, even if the compiler toolset itself has an XP mode. Compiler toolset support for Windows XP ended in Visual Studio 2017. +When upgrading a program that uses the Windows API either directly or indirectly, you need to decide the minimum Windows version to support. In most cases, Windows 7 is a good choice. For more information, see [Header file problems](porting-guide-spy-increment.md#header_file_problems). The `WINVER` macro defines the oldest version of Windows that your program is designed to run on. If your MFC program sets `WINVER` to 0x0501 (Windows XP) you'll get a warning because MFC no longer supports XP, even if the compiler toolset itself has an XP mode. Compiler toolset support for Windows XP ended in Visual Studio 2017, and support for Windows 7, 8.0 and 8.1 ended in Visual Studio 2026. For more information, see [Updating the target windows version](porting-guide-spy-increment.md#updating_winver) and [More outdated header files](porting-guide-spy-increment.md#outdated_header_files). @@ -171,15 +171,15 @@ This error can occur in MFC applications. It indicates an ordering issue between If your original code is compiled for 32-bit systems, you have the option of creating a 64-bit version instead of (or in addition to) a new 32-bit app. In general, you should get your program compiling in 32-bit mode first, and then attempt 64-bit. Compiling for 64-bit is straightforward, but in some cases it can reveal bugs that were hidden by 32-bit builds. -Also, you should be aware of possible compile-time and runtime issues relating to pointer size, time and size values, and size-specific format specifiers in `printf` and `scanf` functions. For more information, see [Configure Visual C++ for 64-bit, x64 targets](../build/configuring-programs-for-64-bit-visual-cpp.md) and [Common Visual C++ 64-bit migration issues](../build/common-visual-cpp-64-bit-migration-issues.md). For more migration tips, see [Programming guide for 64-bit Windows](/windows/win32/WinProg64/programming-guide-for-64-bit-windows). +Also, you should be aware of possible compile-time and runtime issues relating to pointer size, time and size values, and size-specific format specifiers in `printf` and `scanf` functions. For more information, see [Configure Microsoft C++ for 64-bit, x64 targets](../build/configuring-programs-for-64-bit-visual-cpp.md) and [Common Microsoft C++ 64-bit migration issues](../build/common-visual-cpp-64-bit-migration-issues.md). For more migration tips, see [Programming guide for 64-bit Windows](/windows/win32/WinProg64/programming-guide-for-64-bit-windows). ## Unicode vs MBCS/ASCII Before Unicode was standardized, many programs used the Multibyte Character Set (MBCS) to represent characters that weren't included in the ASCII character set. In older MFC projects, MBCS was the default setting. When you upgrade such a program, you'll see warnings that advise to use Unicode instead. If you decide the conversion to Unicode isn't worth the development cost, you may choose to disable or ignore the warning. To disable it for all projects in your solution, open **View** > **Property Manager**, select all projects for which you want to disable the warning, then right-click on the selected items and choose **Properties**. In the **Property Pages** dialog, select **Configuration Properties** > **C/C++** > **Advanced**. In the **Disable Specific Warnings** property, open the drop-down arrow, and then choose **Edit**. Enter 4996 into the text box. (Don't include the 'C' prefix.) Choose **OK** to save the property, then choose **OK** to save your changes. -For more information, see [Porting from MBCS to Unicode](porting-guide-spy-increment.md#porting_to_unicode). For general information about MBCS vs. Unicode, see [Text and Strings in Visual C++](../text/text-and-strings-in-visual-cpp.md) and [Internationalization](../c-runtime-library/internationalization.md) . +For more information, see [Porting from MBCS to Unicode](porting-guide-spy-increment.md#porting_to_unicode). For general information about MBCS vs. Unicode, see [Text and Strings in Microsoft C++](../text/text-and-strings-in-visual-cpp.md) and [Internationalization](../c-runtime-library/internationalization.md) . ## See also -[Upgrading projects from earlier versions of Visual C++](upgrading-projects-from-earlier-versions-of-visual-cpp.md)
+[Upgrading projects from earlier versions of Microsoft C++](upgrading-projects-from-earlier-versions-of-visual-cpp.md)
[C++ conformance improvements in Visual Studio](../overview/cpp-conformance-improvements.md) diff --git a/docs/porting/porting-third-party-libraries.md b/docs/porting/porting-third-party-libraries.md index 6a569a06924..ce39dfd7b59 100644 --- a/docs/porting/porting-third-party-libraries.md +++ b/docs/porting/porting-third-party-libraries.md @@ -1,25 +1,26 @@ --- description: "Learn more about: Porting third-party libraries" title: "Porting Third-Party Libraries" -ms.date: 10/22/2021 -helpviewer_keywords: ["3rd-party libraries", "vspkg"] +ms.date: 10/29/2025 +helpviewer_keywords: ["3rd-party libraries", "vcpkg"] ms.assetid: b055ed20-8a9e-45b2-ac2a-e3d94271c009 ms.topic: concept-article --- # Porting third-party libraries -When you upgrade a project from Visual Studio 2013 or earlier to the current version of Visual C++, you also have to upgrade any libraries that the project uses. The library and your project must be built by compatible versions and targets of the compiler toolset. If you don't have access to the library source code, and the library isn't available through vcpkg, then you must obtain an updated binary from the library vendor. For more information, see [Overview of potential upgrade issues](overview-of-potential-upgrade-issues-visual-cpp.md). +When you upgrade a project from Visual Studio 2013 or earlier to the current version of Microsoft C++ (MSVC) Build Tools, you also have to upgrade any libraries that the project uses. The library and your project must be built by compatible versions and targets of the build tools. If you don't have access to the library source code, and the library isn't available through vcpkg, then you must obtain an updated binary from the library vendor. For more information, see [Overview of potential upgrade issues](overview-of-potential-upgrade-issues-visual-cpp.md). When you upgrade an application from Visual Studio 2015 or later, it isn't necessary to upgrade dependencies because the code generated by those versions is binary-compatible. For more information, see [C++ binary compatibility between Visual Studio versions](binary-compat-2015-2017.md). ## Use vcpkg for open-source libraries -In the past, finding and upgrading third-party libraries was sometimes a non-trivial task. To make it easier to acquire and rebuild C++ third-party open-source libraries, the Visual C++ team has created a command-line tool called the **VC++ Packaging Tool** or **vcpkg**. Vcpkg has a searchable catalog of many popular C++ open-source libraries. You can install any library in the catalog directly from the vcpkg command line. When you install a library, Vcpkg creates a directory tree on your machine and adds the *`.h`* files, the *`.lib`* files, and binaries in this folder. You can use this folder in your compilation command line, or integrate it into Visual Studio 2015 or later by using the `vcpkg integrate install` command. After you integrate a library location, Visual Studio can find it and add it to any new project that you create. To use a library, just `#include` it. Visual Studio will automatically add the library path to your project settings and copy the DLL to your solution folder. For more information, see [vcpkg](/vcpkg/). +In the past, finding and upgrading third-party libraries was sometimes a non-trivial task. To make it easier to acquire and rebuild C++ third-party open-source libraries, the Microsoft C++ team has created a command-line tool called **[vcpkg](https://vcpkg.io)**. This tool has a searchable catalog (known as the curated registry) of many popular C/C++ open-source libraries. You can install any library in the catalog directly from the vcpkg command line. When you install a library, vcpkg creates a directory tree on your machine and adds the *`.h`* files, the *`.lib`* files, and binaries in this folder. You can use this folder in your compilation command line, or integrate it into Visual Studio 2015 or later by using the `vcpkg integrate install` command. After you integrate a library location, Visual Studio can find it and add it to any new project that you create. To use a library, just `#include` it. Visual Studio will automatically add the library path to your project settings and copy the DLL to your solution folder. For more information, see [vcpkg](/vcpkg/). You can either install [vcpkg from GitHub](https://github.com/microsoft/vcpkg/) or use the built-in version that ships with Visual Studio 2022 or later. To learn more about vcpkg, see the [vcpkg documentation](https://learn.microsoft.com/vcpkg). ## Reporting issues -If your open-source library isn't found in the **vcpkg** catalog, you can open an issue on the [GitHub repo](https://github.com/Microsoft/vcpkg/issues). That's where the community and the Visual C++ team can see it and potentially create the port file for this library. +If your open-source library isn't found in the **vcpkg** curated registry, you can open an issue on the [GitHub repo](https://github.com/Microsoft/vcpkg/issues). That's where the community and the Microsoft C++ team can see it and potentially create the port file for this library. ## See also -[Visual C++ Porting and Upgrading Guide](visual-cpp-porting-and-upgrading-guide.md) +[Microsoft C++ Porting and Upgrading Guide](visual-cpp-porting-and-upgrading-guide.md) +[vcpkg Documentation](https://learn.microsoft.com/vcpkg) diff --git a/docs/porting/porting-to-the-universal-windows-platform-cpp.md b/docs/porting/porting-to-the-universal-windows-platform-cpp.md index 742390cf472..83aeac60192 100644 --- a/docs/porting/porting-to-the-universal-windows-platform-cpp.md +++ b/docs/porting/porting-to-the-universal-windows-platform-cpp.md @@ -104,5 +104,5 @@ If you created a new UWP project using Visual Studio, you should not see this er ## See also -[Visual C++ Porting Guide](../porting/porting-to-the-universal-windows-platform-cpp.md)
+[Microsoft C++ Porting Guide](../porting/porting-to-the-universal-windows-platform-cpp.md)
[Develop apps for the Universal Windows Platform (UWP)](/visualstudio/cross-platform/develop-apps-for-the-universal-windows-platform-uwp) diff --git a/docs/porting/toc.yml b/docs/porting/toc.yml index 890de59b9b7..2594d143334 100644 --- a/docs/porting/toc.yml +++ b/docs/porting/toc.yml @@ -17,7 +17,7 @@ items: href: ../porting/floating-point-migration-issues.md - name: Use native multi-targeting in Visual Studio to build old projects href: ../porting/use-native-multi-targeting.md - - name: C++ features deprecated in Visual Studio 2019 + - name: C++ features deprecated in Visual Studio href: ../porting/features-deprecated-in-visual-studio.md - name: VCBuild vs. MSBuild href: ../porting/build-system-changes.md diff --git a/docs/porting/upgrade-your-code-to-the-universal-crt.md b/docs/porting/upgrade-your-code-to-the-universal-crt.md index 5c3ba784e29..8fc1091bce3 100644 --- a/docs/porting/upgrade-your-code-to-the-universal-crt.md +++ b/docs/porting/upgrade-your-code-to-the-universal-crt.md @@ -1,7 +1,7 @@ --- description: "Learn more about: Upgrade your code to the Universal CRT" title: "Upgrade your code to the Universal CRT" -ms.date: 06/28/2022 +ms.date: 10/29/2025 ms.assetid: eaf34c1b-da98-4058-a059-a10db693a5ce ms.topic: upgrade-and-migration-article --- @@ -9,7 +9,7 @@ ms.topic: upgrade-and-migration-article The Microsoft C Runtime Library (CRT) was refactored in Visual Studio 2015. The Standard C Library, POSIX extensions and Microsoft-specific functions, macros, and global variables were moved into a new library, the Universal C Runtime Library (Universal CRT or UCRT). The compiler-specific components of the CRT were moved into a new vcruntime library. -The UCRT is now a Windows component, and ships as part of Windows 10 and later. The UCRT supports a stable ABI based on C calling conventions, and it conforms closely to the ISO C99 standard, with only a few exceptions. It's no longer tied to a specific version of the compiler. You can use the UCRT on any version of Windows supported by Visual Studio 2015 or Visual Studio 2017. The benefit is that you no longer need to update your builds to target a new version of the CRT with every upgrade of Visual Studio. +The UCRT is now a Windows component, and ships as part of Windows 10 and later. The UCRT supports a stable ABI based on C calling conventions, and it conforms closely to the ISO C99 standard, with only a few exceptions. It's no longer tied to a specific version of the compiler. You can use the UCRT on any version of Windows supported by Visual Studio 2015 or later. The benefit is that you no longer need to update your builds to target a new version of the CRT with every upgrade of Visual Studio. This refactoring has changed the names or locations of many CRT header files, library files, and Redistributable files, and the deployment methods required for your code. Many functions and macros in the UCRT were also added or changed to improve standards conformance. To take advantage of these changes, you must update your existing code and project build systems. @@ -25,11 +25,11 @@ The retail and debug UCRT DLLs are found in separate locations. The retail DLLs ## Where to find the standard libraries and headers -The C and C++ compiler-specific runtime support library, `vcruntime`, contains the code required to support program startup and features such as exception handling and intrinsics. The library and its header files are still found in the version-specific Microsoft Visual Studio folder in your *Program Files* or *Program files (x86)* directory. +The C and C++ compiler-specific runtime support library, `vcruntime`, contains the code required to support program startup and features such as exception handling and intrinsics. The library and its header files are still found in the version-specific Microsoft Visual Studio folder in your *Program Files* or *Program Files (x86)* directory. -In Visual Studio 2017, 2019, and 2022, the header files are found under `Microsoft Visual Studio\[year]\[edition]\VC\Tools\MSVC\[lib-version]\include`. Here, `[year]` is the version of Visual Studio, `[edition]` is the edition or nickname for Visual Studio, and `[lib-version]` is the build version of the libraries. +In Visual Studio 2017 and later, the header files are found under `Microsoft Visual Studio\[version]\[edition]\VC\Tools\MSVC\[lib-version]\include`. Here, `[version]` is the year (Visual Studio 2017 - 2022) or major version number (Visual Studio 2026 or later), `[edition]` is the edition or nickname for Visual Studio, and `[lib-version]` is the build version of the libraries. -The link libraries are found under `Microsoft Visual Studio\[year]\[edition]\VC\Tools\MSVC\[lib-version]\lib\[architecture]`, where `[year]` is the version of Visual Studio, `[edition]` is the edition or nickname for Visual Studio, `[lib-version]` is the build version of the libraries, and `[architecture]` is the target processor architecture. Link libraries for OneCore and Store are also found in the libraries folder. +The link libraries are found under `Microsoft Visual Studio\[version]\[edition]\VC\Tools\MSVC\[lib-version]\lib\[architecture]`, where `[version]` is the year (Visual Studio 2017 - 2022) or major version number (Visual Studio 2026 or later), `[edition]` is the edition or nickname for Visual Studio, `[lib-version]` is the build version of the libraries, and `[architecture]` is the target processor architecture. Link libraries for OneCore and Store are also found in the libraries folder. The retail and debug versions of the static library are `libvcruntime.lib` and `libvcruntimed.lib`. The dynamic link retail and debug stub libraries are `vcruntime.lib` and `vcruntimed.lib`, respectively. @@ -39,18 +39,18 @@ When you update your Visual Studio C++ projects, if you have set the project's * Because the UCRT is now a Microsoft Windows operating system component, it's included as part of the operating system in Windows 10 and later. It's available through Windows Update for older operating systems, Windows Vista through Windows 8.1. A Redistributable version is available for Windows XP. As an operating system component, UCRT updates and servicing are managed by Windows Update independently of Visual Studio and Microsoft C++ compiler versions. Because the UCRT is a Windows component, for security and ease of updates, and a smaller image size, we strongly recommend you use the Redistributable package to do central deployment of the UCRT for your app. -You can use the UCRT on any version of Windows supported by Visual Studio 2015 or later. You can redistribute it using a `vcredist` package for supported versions of Windows before Windows 10. The `vcredist` packages include the UCRT components and automatically install them on Windows operating systems that don't have them installed by default. For more information, see [Redistributing Visual C++ Files](../windows/redistributing-visual-cpp-files.md). +You can use the UCRT on any version of Windows supported by Visual Studio 2015 or later. You can redistribute it using a `vcredist` package for supported versions of Windows before Windows 10. The `vcredist` packages include the UCRT components and automatically install them on Windows operating systems that don't have them installed by default. For more information, see [Redistributing Microsoft C++ Files](../windows/redistributing-visual-cpp-files.md). -App-local deployment of the UCRT is supported, though not recommended for both performance and security reasons. The DLLs for app-local deployment of the UCRT are included as part of the Windows SDK, under the *`redist`* subdirectory. The DLLs required include `ucrtbase.dll` and a set of **APISet forwarder** DLLs named `api-ms-win-[subset].dll`. The set of DLLs required on each operating system varies, so we recommended that you include all of the DLLs when you use app-local deployment. For more information and recommendations about app-local deployment, see [Deployment in Visual C++](../windows/deployment-in-visual-cpp.md). +App-local deployment of the UCRT is supported, though not recommended for both performance and security reasons. The DLLs for app-local deployment of the UCRT are included as part of the Windows SDK, under the *`redist`* subdirectory. The DLLs required include `ucrtbase.dll` and a set of **APISet forwarder** DLLs named `api-ms-win-[subset].dll`. The set of DLLs required on each operating system varies, so we recommended that you include all of the DLLs when you use app-local deployment. For more information and recommendations about app-local deployment, see [Deployment in Microsoft C++](../windows/deployment-in-visual-cpp.md). ## Changes to the Universal CRT functions and macros -Many functions were added or updated in the UCRT to improve ISO C99 conformance, and to address code quality and security issues. In some cases, this required breaking changes to the library. Your code that compiled cleanly when using an older version of the CRT may break when you compile it using the UCRT. If so, you must change your code to take advantage of UCRT updates and features. For a detailed listing of the breaking changes and updates to the CRT found in the Universal CRT, see the [C Runtime Library (CRT)](visual-cpp-change-history-2003-2015.md#BK_CRT) section of the Visual C++ change history. It includes a list of affected headers and functions that you can use to identify the changes needed in your code. +Many functions were added or updated in the UCRT to improve ISO C99 conformance, and to address code quality and security issues. In some cases, this required breaking changes to the library. Your code that compiled cleanly when using an older version of the CRT may break when you compile it using the UCRT. If so, you must change your code to take advantage of UCRT updates and features. For a detailed listing of the breaking changes and updates to the CRT found in the Universal CRT, see the [C Runtime Library (CRT)](visual-cpp-change-history-2003-2015.md#BK_CRT) section of the Microsoft C++ change history. It includes a list of affected headers and functions that you can use to identify the changes needed in your code. ## See also -[Visual C++ porting and upgrading guide](visual-cpp-porting-and-upgrading-guide.md)\ -[Overview of potential upgrade issues (Visual C++)](overview-of-potential-upgrade-issues-visual-cpp.md)\ -[Upgrading projects from earlier versions of Visual C++](upgrading-projects-from-earlier-versions-of-visual-cpp.md)\ +[Microsoft C++ porting and upgrading guide](visual-cpp-porting-and-upgrading-guide.md)\ +[Overview of potential upgrade issues (Microsoft C++)](overview-of-potential-upgrade-issues-visual-cpp.md)\ +[Upgrading projects from earlier versions of Microsoft C++](upgrading-projects-from-earlier-versions-of-visual-cpp.md)\ [Visual C++ change history 2003 - 2015](visual-cpp-change-history-2003-2015.md)\ [C++ conformance improvements in Visual Studio](../overview/cpp-conformance-improvements.md) diff --git a/docs/porting/upgrading-projects-from-earlier-versions-of-visual-cpp.md b/docs/porting/upgrading-projects-from-earlier-versions-of-visual-cpp.md index 76f6dce84d9..fdda74285ee 100644 --- a/docs/porting/upgrading-projects-from-earlier-versions-of-visual-cpp.md +++ b/docs/porting/upgrading-projects-from-earlier-versions-of-visual-cpp.md @@ -72,7 +72,7 @@ For hard-to-fix errors, you can search for solutions or post a question on [Micr ## See also -[What's New for Visual C++ in Visual Studio](../overview/what-s-new-for-visual-cpp-in-visual-studio.md)\ +[What's New for Microsoft C++ in Visual Studio](../overview/what-s-new-for-visual-cpp-in-visual-studio.md)\ [Visual C++ change history 2003 - 2015](../porting/visual-cpp-change-history-2003-2015.md)\ [Nonstandard Behavior](../cpp/nonstandard-behavior.md)\ [Port data applications](../data/data-access-programming-mfc-atl.md) diff --git a/docs/porting/use-native-multi-targeting.md b/docs/porting/use-native-multi-targeting.md index 280f53a6c89..bdc24e3620d 100644 --- a/docs/porting/use-native-multi-targeting.md +++ b/docs/porting/use-native-multi-targeting.md @@ -1,21 +1,21 @@ --- description: "Learn more about: Use native multi-targeting in Visual Studio to build old projects" title: "Use native multi-targeting in Visual Studio to build old projects" -ms.date: 02/22/2022 +ms.date: 10/29/2025 helpviewer_keywords: ["C++ native multi-targeting", "upgrading Visual C++ applications, retargeting"] ms.assetid: b115aabe-a9dc-4525-90d3-367d97ea20c9 --- # Use native multi-targeting in Visual Studio to build old projects -Normally, we recommend that you update your projects when you install the latest version of Visual Studio. The cost of updating your projects and code is often more than offset by the benefits of the new IDE, compiler, libraries, and tools. However, we know that you may not be able to update some projects. You may have binaries that are tied to older libraries or platforms that for maintenance reasons you can't upgrade. Your code may use non-standard language constructs that would break if you moved to a more recent compiler. Your code might rely on third-party libraries compiled for a specific version of Visual C++. Or you may produce libraries for others that must target a specific older version of Visual C++. +Normally, we recommend that you update your projects when you install the latest version of Visual Studio. The cost of updating your projects and code is often more than offset by the benefits of the new IDE, compiler, libraries, and tools. However, we know that you may not be able to update some projects. You may have binaries that are tied to older libraries or platforms that for maintenance reasons you can't upgrade. Your code may use non-standard language constructs that would break if you moved to a more recent compiler. Your code might rely on third-party libraries compiled for a specific version of Microsoft C++ (MSVC). Or you may produce libraries for others that must target a specific older version of MSVC. Fortunately, you can use Visual Studio to build projects that target older compiler toolsets and libraries. If you still have the original tools installed, you don't have to upgrade a project from as far back as Visual Studio 2010 to take advantage of new features in the IDE: -- New C++ refactoring capabilities and editor experimental features +- New C++ refactoring capabilities and editor features - New Diagnostics tools debugger window and Error List window - Revamped breakpoints, exceptions window and new PerfTips - New code navigation and search tools -- New C++ Quick fixes and the Productivity Power Tools extensions. +- New C++ Quick fixes You can also target Visual Studio 2008 projects, but they can't be used unchanged. For details, see the **Instructions for Visual Studio 2008** section. @@ -23,7 +23,11 @@ The latest versions of Visual Studio support native multi-targeting and round-tr When you use an older toolset, you can take advantage of many of the latest IDE features, but not the latest advances in the C++ compiler, libraries and build tools. For example, you won't be able to use the new language conformance improvements, new debugging and code analysis features, or get the faster build throughput of the latest toolset. There are also some IDE features that are incompatible with older toolsets. For example, type information may be missing in the Memory Profiler, and the refactoring operation **Convert to Raw string literals** generates C++11-conformant code that won't compile when you use Visual Studio 2012 or older toolsets. -## How to use native multi-targeting in Visual Studio +## How to use native multi-targeting in Visual Studio 2026 + +Visual Studio 2026 includes a new **Setup assistant**. You can load an existing solution, right-click it in Solution Explorer, and select *Retarget solution* to open the assistant. You can use the assistant to install missing C++ build tools (MSVC components and Windows SDKs) compatible with the projects you are loading, including tools originally shipped with older Visual Studio versions. This allows you to continue working with your existing projects without losing compatibility with your previous Visual Studio version. Later, when you are ready to fully upgrade, you can use the assistant to retarget these projects to the newest version of the IDE. + +## How to use native multi-targeting in Visual Studio 2010-2022 Once you have installed Visual Studio side-by-side with your older version, open your existing project in the new version of Visual Studio. When the project is loaded, Visual Studio asks you whether you want to upgrade it to use the latest C++ compiler and libraries. Since you want the project to keep the older compiler and libraries, choose the **Cancel** button. @@ -62,5 +66,5 @@ When these products are installed, the **Platform Toolset** property drop-down i ## See also -[Upgrading projects from earlier versions of Visual C++](upgrading-projects-from-earlier-versions-of-visual-cpp.md)\ +[Upgrading projects from earlier versions of Microsoft C++](upgrading-projects-from-earlier-versions-of-visual-cpp.md)\ [C++ conformance improvements in Visual Studio](../overview/cpp-conformance-improvements.md) From 29395cb360b8e592d6653afb3cdbba7c5f3bef46 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 31 Oct 2025 14:37:56 -0700 Subject: [PATCH 2030/2255] draft --- .../overview/msvc-conformance-improvements.md | 307 ++++++++++++++++++ docs/overview/toc.yml | 2 + .../visual-cpp-language-conformance.md | 2 +- 3 files changed, 310 insertions(+), 1 deletion(-) create mode 100644 docs/overview/msvc-conformance-improvements.md diff --git a/docs/overview/msvc-conformance-improvements.md b/docs/overview/msvc-conformance-improvements.md new file mode 100644 index 00000000000..fa5f6b3f956 --- /dev/null +++ b/docs/overview/msvc-conformance-improvements.md @@ -0,0 +1,307 @@ +--- +title: "C++ conformance improvements in Microsoft C/C++ (MSVC)" +description: "Summary of conformance improvements in Microsoft C/C++ (MSVC)" +ms.date: 10/31/2025 +ms.service: "visual-cpp" +ms.subservice: "cpp-lang" +--- +# C++ Conformance improvements, behavior changes, and bug fixes in Microsoft C/C++ (MSVC) + +Microsoft C/C++ makes conformance improvements and bug fixes in every release. This article lists the significant improvements by MSVC Build Tools version. To jump directly to the changes for a specific version, use the **In this article** links at the top of this article. + +This document lists changes starting in November 2025 when Visual Studio and the MSVC toolset versioning diverged. + +For changes in earlier versions of Visual Studio: + +| Version | Conformance improvements link | +|---|---| +| 2022 | [C++ conformance improvements in Visual Studio 2022](cpp-conformance-improvements.md) | +| 2019 | [C++ conformance improvements in Visual Studio 2019](cpp-conformance-improvements-2019.md) | +| 2017 | [C++ conformance improvements in Visual Studio 2017](cpp-conformance-improvements-2017.md) | +| 2003-2015 | [Visual C++ What's New 2003 through 2015](../porting/visual-cpp-what-s-new-2003-through-2015.md) | + +## C++ conformance improvements, behavior changes, and bug fixes in MSVC Build Tools v14.50 + +Microsoft C/C++ in Visual Studio (MSVC) Build Tools v14.50 introduces significant C++ language updates, conformance improvements, and bug fixes. This version ships with Visual Studio 2026 version 18.0 and includes version 19.50 of the MSVC compiler. You can try out these improvements by [downloading the Insiders release](https://aka.ms/vspreview). + +This document details the C++ language conformance improvements and compiler enhancements included in MSVC Build Tools v14.50. For updates in the Standard Library, check out the [STL Changelog](https://github.com/microsoft/STL/wiki/Changelog), which is regularly updated. + +As C++ standards progress in MSVC, you can follow along using the [cppreference compiler support table](https://en.cppreference.com/w/cpp/compiler_support.html) and help us identify what we should be working on next! + +## C++23 Features + +MSVC Build Tools v14.50 adds support for several C++23 features, bringing the compiler closer to full C++23 conformance. + +### P0849R8: auto(x) - decay-copy in the language + +[P0849R8](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p0849r8.html) introduces the `auto(x)` syntax for decay-copy operations directly in the language, providing a more concise way to express decay-copy semantics. + +Prior to P0849R8, you needed to explicitly perform decay operations: + +```cpp +// Prior to P0849R8: +void pop_front_alike(auto& x) { + using T = std::decay_t; + std::erase(x, T(x.front())); +} +``` + +After P0849R8, you can use the simpler `auto(x)` syntax: + +```cpp +// After P0849R8: +void pop_front_alike(auto& x) { + std::erase(x, auto(x.front())); +} +``` + +This feature provides a standardized way to perform decay-copy operations, making code more readable and reducing the need for verbose template metaprogramming. + +### P2437R1: C++23 `#warning` directive + +[P2437R1](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2437r1.pdf) implements the C++23 `#warning` preprocessor directive, providing a standard way to emit warnings during compilation. + +```cpp +// Valid prior to C++23. +#error bad configuration... + +// Valid after C++23. +#warning configuration deprecated... +``` + +The `#warning` directive allows you to emit diagnostic messages without stopping compilation, making it useful for deprecation notices and configuration warnings. + +### CWG Issue 2586: Explicit object parameter for assignment and comparison + +[CWG Issue 2586](https://cplusplus.github.io/CWG/issues/2586) allows explicit object parameters in assignment and comparison operators, enabling more flexible operator definitions. + +```cpp +struct S { + S& operator=(this S&, const S&) = default; // Valid after CWG2586. + auto operator<=>(this const S&, const S&) = default; // Valid after CWG2586. +}; +``` + +This change allows you to use the explicit object parameter syntax (deducing `this`) in assignment and comparison operators, providing more consistent syntax across different types of member functions. + +### P2280R4: References to unknown values during constant evaluation + +[P2280R4](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2280r4.html) allows references to unknown values during constant evaluation, relaxing restrictions on `constexpr` evaluation. + +```cpp +template +constexpr size_t array_size(T (&)[N]) { + return N; +} + +void check(int const (¶m)[3]) { + constexpr auto s2 = array_size(param); // Previously ill-formed, now accepted as a constant expression after P2280R4. +} +``` + +This improvement allows more code to be evaluated at compile time, particularly when dealing with function parameters in template contexts. + +## Smaller Conformance Updates + +MSVC Build Tools v14.50 includes numerous smaller conformance improvements that enhance C++ standard compliance: + +### Core Working Group Issues + +- **CWG2635**: Constrained structured bindings support +- **CWG2465**: Coroutine parameters passed to promise constructor improvements +- **CWG2496**: Ref-qualifiers and virtual overriding corrections +- **CWG2506**: Structured bindings and array cv-qualifiers fixes +- **CWG2507**: Default arguments for `operator[]` support +- **CWG2585**: Behavior alignment with standard requirements +- **CWG2521**: Deprecation of 'operator string-literal identifier' +- **CWG2528**: Relaxed conversion rules for the spaceship operator + +### Language Feature Enhancements + +- **P2360R0**: Extended init-statement definition to allow alias-declarations +- **P2290R3**: C++23 hexadecimal/octal delimited escape sequence support in string literals +- **P2797R0**: Resolution for CWG2692 regarding static and explicit object member functions with the same parameter-type-lists +- **P2266R3**: Simpler implicit move semantics + +### Compiler Diagnostics + +- Implementation of a warning to notify of enum type changes caused by `/Zc:enumTypes` + +## Compiler Improvements in v14.50 + +MSVC Build Tools v14.50 includes extensive compiler improvements across multiple areas, focusing on reliability, correctness, and conformance. + +### C++/CLI Improvements + +The C++/CLI compiler received several important fixes: + +- **ICE fixes**: Resolved internal compiler errors on use of `auto` in member declarations in C++/CLI managed types +- **Static constexpr support**: Fixed crashes related to [static constexpr in C++/CLI](https://developercommunity.visualstudio.com/t/static-constexpr-causes-CCLI-compiler/1536217) +- **Friend declarations**: Corrected crashes when [friend functions are used with managed types](https://developercommunity.visualstudio.com/t/Compiler-crash-A-managed-type-cannot-ha/1536159) +- **Stack ref-types**: Fixed crashes in [C++/CLI code using ref-types on stack](https://developercommunity.visualstudio.com/t/clexe-terminates-with-error-code--52970/10777778) +- **MFC compatibility**: Resolved [multiple errors in managed C++ code in MFC applications](https://developercommunity.visualstudio.com/t/Visual-Studio-1712-introduced-multiple-/10792822) + +### Diagnostics Improvements + +Enhanced diagnostic accuracy and clarity: + +- Fixed incorrect diagnostic about [implicit enum type conversions in C even with explicit casts](https://developercommunity.visualstudio.com/t/warning-C5287:-operands-are-different-e/10877942) + +### `constexpr` Enhancements + +Significant improvements to `constexpr` evaluation and support: + +#### Virtual Function Support +- Fixed errors involving [virtual function calls at compile-time](https://developercommunity.visualstudio.com/t/MSVC-erroneously-claims-the-return-value/10184063) +- Resolved [C++20 constexpr virtual polymorphism issues](https://developercommunity.visualstudio.com/t/C20-constexpr-virtual-polymorphism-is-/10348572) +- Corrected [virtual constexpr function evaluation](https://developercommunity.visualstudio.com/t/Virtual-constexpr-function-did-not-evalu/10360010) + +#### Expression Evaluation +- Improved rejection of [overflow from addition and left shifting of constants](https://developercommunity.visualstudio.com/content/problem/1202945/signed-overflow-in-constant-core-expression-should.html) +- Fixed scenarios where [constructors should be made implicitly constexpr](https://developercommunity.visualstudio.com/t/Multiple-constexpr-bugs-including-regre/10855054) +- Resolved issues with [constexpr static data members and CRTP](https://developercommunity.visualstudio.com/content/problem/1110270/crtp-in-msvc-1924-not-seeing-variable.html) + +#### Advanced `constexpr` Features +- Fixed bugs related to [evaluating destructors of constant objects](https://developercommunity.visualstudio.com/t/MSVC-1437-40-forces-my-global-std::stri/10794576) +- Improved [constexpr lambda captures with guaranteed copy elision](https://developercommunity.visualstudio.com/t/Lambda-in-a-function-template-requests-c/10922885) +- Allowed [consteval constructor calls as direct-initialization arguments](https://developercommunity.visualstudio.com/t/MSVC-Fails-to-compile-list-and-direct-in/10915063) +- Fixed issues with [consteval functions in `if consteval` contexts](https://developercommunity.visualstudio.com/t/The-consteval-function-is-not-an-immedia/10900618) + +### C++ Modules Improvements + +Enhanced C++20 modules support with numerous bug fixes: + +#### Import and Export Fixes +- Fixed bug with [importing friend declarations in nlohmann/json library](https://developercommunity.visualstudio.com/t/nlohmannjson-does-not-compile-as-C20-/10908164) +- Resolved [compiler crashes with using-declarations from specializations](https://developercommunity.visualstudio.com/t/Internal-compiler-error-when-using-usin/10934729) +- Fixed issues where [std::expected couldn't be specialized when imported](https://developercommunity.visualstudio.com/t/C1907-modules-constexpr-and-std::expect/10501314) + +#### Function and Variable Handling +- Corrected problems with [functions using types from named modules](https://developercommunity.visualstudio.com/t/Compiler-uses-non-exported-class-definit/10863347) +- Fixed [importing constexpr functions with static local variables](https://developercommunity.visualstudio.com/t/ICE-when-calling-imported-function-that-/10913469) +- Improved [pragma warning directive handling in modules](https://developercommunity.visualstudio.com/t/pragma-warningdisable-not-working-in-/10937100) + +#### Real-World Compatibility +- Fixed various issues preventing [Unreal Engine 5 from building with header units](https://developercommunity.visualstudio.com/t/Unreal-does-not-build-with-header-units-/10800119) +- Resolved [C++ modules + boost::asio compatibility issues](https://developercommunity.visualstudio.com/t/C20-modules--boost::asio-still-being-/10038468) +- Fixed problems with [specializations in the global module fragment](https://developercommunity.visualstudio.com/t/C20-modules:-specialzations-in-the-glo/10826499) + +### Conformance Enhancements + +Improved adherence to C++ standards: + +#### Attribute Support +- Added support for [`[[maybe_unused]]` on labels](https://developercommunity.visualstudio.com/t/unreferenced-label-when-ref-hidden-by-if/102076) +- Fixed warning C4102 (unreferenced label) when the only reference was from a discarded `if constexpr` branch + +#### Template and Specialization Fixes +- [Diagnosed ill-formed friend explicit specializations](https://developercommunity.visualstudio.com/t/Defining-explicit-function-template-spec/10933841) that were incorrectly accepted in C++20 or later +- Added `/Zc:enumEncoding` switch to [correctly encode enum non-type template parameters](https://developercommunity.visualstudio.com/t/Overload-resolution-fails-for-enum-non-t/10398088) +- Fixed issues with [missing 'template' keyword diagnostics](https://developercommunity.visualstudio.com/t/No-diagnostic-for-missing-template-in-d/10501221) + +### Reliability Improvements + +Extensive internal compiler error (ICE) fixes and stability improvements: + +#### Template-Related Fixes +- Fixed [ICE on explicit class template instantiation with friend functions](https://developercommunity.visualstudio.com/t/Internal-compiler-error-ICE-on-explici/10903887) +- Resolved [ICE with explicit variable template instantiations and PCH files](https://developercommunity.visualstudio.com/t/C-explicit-variable-template-instantia/10933044) +- Corrected [compiler crashes with deep nesting of aggregates and initializer lists](https://developercommunity.visualstudio.com/t/Internal-Compiler-Error-Found-in-MSVC-14/10914206) + +#### Lambda-Related Improvements +- Fixed issues with [nested generic lambdas](https://developercommunity.visualstudio.com/t/VS-1714-Preview-30:-ICE:-error-C1001:-/10891418) +- Resolved [ICE with lambda captures and template parameters](https://developercommunity.visualstudio.com/t/ICE-with-nested-std::visit--lambda-capt/10910959) +- Corrected [lambda initialization problems](https://developercommunity.visualstudio.com/t/Internal-compiler-error-with-designated-/10618932) + +#### Memory and Performance +- Fixed [exponential memory growth during type deduction](https://developercommunity.visualstudio.com/t/VS-2022-C-compiler-uses-nearly-200x-as/10900008) with classes having many base classes +- Improved [IL generation for temporaries bound to non-static data member references](https://developercommunity.visualstudio.com/t/CLexe-crashes-with-Access-Violation-on-/10878252) + +### Correctness Improvements + +Enhanced code generation and semantic analysis: + +#### Exception Handling and References +- Fixed [exception handling issues with unions](https://developercommunity.visualstudio.com/t/CLexe-exited-with-code--529706956-whe/10915135) +- Improved [rvalue reference handling in lambda contexts](https://developercommunity.visualstudio.com/t/When-using-a-lambda-as-a-template-argume/10916555) +- Corrected [explicit instantiation overload resolution with requires clauses](https://developercommunity.visualstudio.com/t/Overload-resolution-for-constrained-func/10107770) + +#### Type System and Semantics +- Fixed [noexcept specifier semantic issues](https://developercommunity2.visualstudio.com/t/noexcept-for-some-reason-work-with-type/1321108) +- Improved [phase-1 name binding in non-static data member initializers](https://developercommunity.visualstudio.com/t/Wrong-context-for-class-field-initialize/10896684) +- Corrected [value category determination for indirection and array expressions](https://developercommunity.visualstudio.com/t/cl-Preview-fails-to-properly-determine-a/10907452) + +#### Template and SFINAE +- Fixed [template-id parsing in alias declarations](https://developercommunity.visualstudio.com/t/Source-code-parsing-error-in-boostparse/10869546) +- Improved [partial ordering with template parameter objects](https://developercommunity.visualstudio.com/t/Template-Specialization-is-not-selected-/10902294) +- Resolved [constexpr variable re-declaration issues](https://developercommunity.visualstudio.com/t/A-C1001-error-occurs-in-VS1714/10909397) + +#### Advanced Language Features +- Fixed [`__declspec(no_sanitize_address)` handling on lambdas](https://developercommunity.visualstudio.com/t/Address-Sanitizer-declspecsattributes-d/10850249) +- Improved [static inline data member instantiation points](https://developercommunity.visualstudio.com/t/static-inline-atomic-and-another-atomic-/10203656) +- Corrected [static operator() in abbreviated function templates](https://developercommunity.visualstudio.com/t/Call-to-static-operator-is-elided/10908158) + +#### Standard Library Integration +- Fixed [`std::bit_cast` internal compiler errors](https://developercommunity.visualstudio.com/t/__builtin_bit_cast-Internal-compiler-err/10939926) +- Improved [modulo operator handling in variadic templates](https://developercommunity.visualstudio.com/t/Issue-in-specific-conditions-with-modulo/10940009) +- Resolved [class template argument deduction issues](https://developercommunity.visualstudio.com/t/Deduction-of-class-template-arguments-pi/10939918) + +#### C++20 and C++23 Features +- Enhanced [multidimensional operator[] support](https://developercommunity.visualstudio.com/t/Multidimensional-operator-with-Wall-r/10876026) +- Fixed [`using enum` declaration handling](https://developercommunity.visualstudio.com/t/using-enum-c-20-doesnt-supported-as-we/10926317) +- Improved [concept and constraint evaluation](https://developercommunity.visualstudio.com/t/VS-1714-if-constexpr-requires--does/10905731) + +### C Compiler Improvements + +#### C23 Language Features +- Fixed `typeof` behavior with function types: In C23, functions no longer [decay to function pointers when used as arguments to `typeof`](https://developercommunity.visualstudio.com/t/__typeof__-not-working-with-function-typ/10891974) + +## Migrating to MSVC Build Tools v14.50 + +When upgrading to MSVC Build Tools v14.50, consider the following potential breaking changes and migration guidance: + +### C++23 Feature Adoption +- Update code to take advantage of new `auto(x)` decay-copy syntax for cleaner template code +- Consider using `#warning` directives for deprecation notices instead of error-prone conditional compilation +- Review explicit object parameter usage in operators for improved consistency + +### `constexpr` Improvements +- Existing `constexpr` code may now compile that previously failed, particularly with virtual functions +- Review constant evaluation code for potential new optimization opportunities +- Update CRTP patterns that may now work correctly with static constexpr members + +### Modules Migration +- Projects using C++20 modules should see improved stability and compatibility +- Header units now work more reliably with large codebases like Unreal Engine 5 +- Consider migrating from traditional headers to modules for better compilation performance + +### Compiler Diagnostics +- New warnings may appear for previously undiagnosed issues +- Review enum type usage if using `/Zc:enumTypes` +- Update code that relies on implicit conversions that may now be flagged + +### C Code Updates +- C23 features are available with `/std:clatest` +- `typeof` behavior changes may affect existing code +- Review preprocessor usage for new `__VA_OPT__` availability + +## Conclusion + +MSVC Build Tools v14.50 represents a significant advancement in C++ compiler technology, bringing substantial improvements in C++23 conformance, reliability, and correctness. The extensive bug fixes and enhancements make this release particularly valuable for large-scale C++ development projects. + +Key highlights include: +- Advanced C++23 feature support including `auto(x)` decay-copy and `#warning` directive +- Comprehensive `constexpr` improvements, particularly for virtual functions +- Major stability improvements for C++ modules +- Extensive reliability fixes reducing internal compiler errors +- Enhanced C++/CLI support for managed code scenarios + +For the latest updates and to provide feedback, please visit the [Visual Studio Developer Community](https://developercommunity.visualstudio.com/) or contact the team at [visualcpp@microsoft.com](mailto:visualcpp@microsoft.com). Follow us on Twitter [@visualc](https://twitter.com/visualc) or BlueSky [@msftcpp.bsky.social](https://bsky.app/profile/msftcpp.bsky.social). + +If you encounter problems with MSVC in Visual Studio 2026, please let us know via the [Report a Problem](how-to-report-a-problem-with-the-visual-cpp-toolset.md) option, either from the installer or the Visual Studio IDE itself. + +## See also + +[Microsoft C/C++ language conformance](visual-cpp-language-conformance.md) +[What's new for C++ in Visual Studio](what-s-new-for-visual-cpp-in-visual-studio.md) +[C++ conformance improvements in Visual Studio 2022](cpp-conformance-improvements.md) \ No newline at end of file diff --git a/docs/overview/toc.yml b/docs/overview/toc.yml index 8c34abe851e..e302eaf22c4 100644 --- a/docs/overview/toc.yml +++ b/docs/overview/toc.yml @@ -12,6 +12,8 @@ items: href: ../overview/what-s-new-for-cpp-2019.md - name: What's new for C++ in Visual Studio 2017 href: ../overview/what-s-new-for-cpp-2017.md + - name: C++ Conformance improvements in Microsoft C/C++ (MSVC) + href: ../overview/msvc-conformance-improvements.md - name: C++ conformance improvements in Visual Studio 2022 href: ../overview/cpp-conformance-improvements.md - name: C++ conformance improvements in Visual Studio 2019 diff --git a/docs/overview/visual-cpp-language-conformance.md b/docs/overview/visual-cpp-language-conformance.md index 5f15f171582..27aac6adca8 100644 --- a/docs/overview/visual-cpp-language-conformance.md +++ b/docs/overview/visual-cpp-language-conformance.md @@ -1,7 +1,7 @@ --- title: "Microsoft C/C++ language conformance" description: "Microsoft C and C++ conformance updates by Visual Studio version." -ms.date: 03/01/2023 +ms.date: 10/31/2025 ms.service: "visual-cpp" ms.subservice: "cpp-lang" --- From afc78080a0236054cbaa984f2c7659cc347617da Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 31 Oct 2025 15:53:02 -0700 Subject: [PATCH 2031/2255] draft --- .../overview/msvc-conformance-improvements.md | 180 ++++-------------- 1 file changed, 33 insertions(+), 147 deletions(-) diff --git a/docs/overview/msvc-conformance-improvements.md b/docs/overview/msvc-conformance-improvements.md index fa5f6b3f956..de4b1e6881d 100644 --- a/docs/overview/msvc-conformance-improvements.md +++ b/docs/overview/msvc-conformance-improvements.md @@ -22,11 +22,9 @@ For changes in earlier versions of Visual Studio: ## C++ conformance improvements, behavior changes, and bug fixes in MSVC Build Tools v14.50 -Microsoft C/C++ in Visual Studio (MSVC) Build Tools v14.50 introduces significant C++ language updates, conformance improvements, and bug fixes. This version ships with Visual Studio 2026 version 18.0 and includes version 19.50 of the MSVC compiler. You can try out these improvements by [downloading the Insiders release](https://aka.ms/vspreview). +Microsoft C/C++ in Visual Studio (MSVC) Build Tools v14.50 introduces significant C++ language updates, conformance improvements, and bug fixes. This version shipped first with Visual Studio 2026 version 18.0 and includes version 19.50 of the MSVC compiler. -This document details the C++ language conformance improvements and compiler enhancements included in MSVC Build Tools v14.50. For updates in the Standard Library, check out the [STL Changelog](https://github.com/microsoft/STL/wiki/Changelog), which is regularly updated. - -As C++ standards progress in MSVC, you can follow along using the [cppreference compiler support table](https://en.cppreference.com/w/cpp/compiler_support.html) and help us identify what we should be working on next! +This document details the C++ language conformance improvements and compiler enhancements included in MSVC Build Tools v14.50. For more information about updates in the Standard Library, see [STL Changelog](https://github.com/microsoft/STL/wiki/Changelog), which is regularly updated. ## C++23 Features @@ -40,7 +38,8 @@ Prior to P0849R8, you needed to explicitly perform decay operations: ```cpp // Prior to P0849R8: -void pop_front_alike(auto& x) { +void pop_front_alike(auto& x) +{ using T = std::decay_t; std::erase(x, T(x.front())); } @@ -50,7 +49,8 @@ After P0849R8, you can use the simpler `auto(x)` syntax: ```cpp // After P0849R8: -void pop_front_alike(auto& x) { +void pop_front_alike(auto& x) +{ std::erase(x, auto(x.front())); } ``` @@ -69,14 +69,15 @@ This feature provides a standardized way to perform decay-copy operations, makin #warning configuration deprecated... ``` -The `#warning` directive allows you to emit diagnostic messages without stopping compilation, making it useful for deprecation notices and configuration warnings. +The `#warning` directive allows you to emit diagnostic messages without stopping compilation, making it useful for deprecation notices and configuration warnings. For more information, see [#warning directive (C/C++)](/cpp/preprocessor/hash-warning-directive-c-cpp). ### CWG Issue 2586: Explicit object parameter for assignment and comparison [CWG Issue 2586](https://cplusplus.github.io/CWG/issues/2586) allows explicit object parameters in assignment and comparison operators, enabling more flexible operator definitions. ```cpp -struct S { +struct S +{ S& operator=(this S&, const S&) = default; // Valid after CWG2586. auto operator<=>(this const S&, const S&) = default; // Valid after CWG2586. }; @@ -90,11 +91,13 @@ This change allows you to use the explicit object parameter syntax (deducing `th ```cpp template -constexpr size_t array_size(T (&)[N]) { +constexpr size_t array_size(T (&)[N]) +{ return N; } -void check(int const (¶m)[3]) { +void check(int const (¶m)[3]) +{ constexpr auto s2 = array_size(param); // Previously ill-formed, now accepted as a constant expression after P2280R4. } ``` @@ -105,157 +108,40 @@ This improvement allows more code to be evaluated at compile time, particularly MSVC Build Tools v14.50 includes numerous smaller conformance improvements that enhance C++ standard compliance: -### Core Working Group Issues - -- **CWG2635**: Constrained structured bindings support -- **CWG2465**: Coroutine parameters passed to promise constructor improvements -- **CWG2496**: Ref-qualifiers and virtual overriding corrections -- **CWG2506**: Structured bindings and array cv-qualifiers fixes -- **CWG2507**: Default arguments for `operator[]` support -- **CWG2585**: Behavior alignment with standard requirements -- **CWG2521**: Deprecation of 'operator string-literal identifier' -- **CWG2528**: Relaxed conversion rules for the spaceship operator - -### Language Feature Enhancements - -- **P2360R0**: Extended init-statement definition to allow alias-declarations -- **P2290R3**: C++23 hexadecimal/octal delimited escape sequence support in string literals -- **P2797R0**: Resolution for CWG2692 regarding static and explicit object member functions with the same parameter-type-lists -- **P2266R3**: Simpler implicit move semantics - -### Compiler Diagnostics - -- Implementation of a warning to notify of enum type changes caused by `/Zc:enumTypes` - -## Compiler Improvements in v14.50 - -MSVC Build Tools v14.50 includes extensive compiler improvements across multiple areas, focusing on reliability, correctness, and conformance. - -### C++/CLI Improvements - -The C++/CLI compiler received several important fixes: - -- **ICE fixes**: Resolved internal compiler errors on use of `auto` in member declarations in C++/CLI managed types -- **Static constexpr support**: Fixed crashes related to [static constexpr in C++/CLI](https://developercommunity.visualstudio.com/t/static-constexpr-causes-CCLI-compiler/1536217) -- **Friend declarations**: Corrected crashes when [friend functions are used with managed types](https://developercommunity.visualstudio.com/t/Compiler-crash-A-managed-type-cannot-ha/1536159) -- **Stack ref-types**: Fixed crashes in [C++/CLI code using ref-types on stack](https://developercommunity.visualstudio.com/t/clexe-terminates-with-error-code--52970/10777778) -- **MFC compatibility**: Resolved [multiple errors in managed C++ code in MFC applications](https://developercommunity.visualstudio.com/t/Visual-Studio-1712-introduced-multiple-/10792822) - -### Diagnostics Improvements - -Enhanced diagnostic accuracy and clarity: - -- Fixed incorrect diagnostic about [implicit enum type conversions in C even with explicit casts](https://developercommunity.visualstudio.com/t/warning-C5287:-operands-are-different-e/10877942) - -### `constexpr` Enhancements - -Significant improvements to `constexpr` evaluation and support: - -#### Virtual Function Support -- Fixed errors involving [virtual function calls at compile-time](https://developercommunity.visualstudio.com/t/MSVC-erroneously-claims-the-return-value/10184063) -- Resolved [C++20 constexpr virtual polymorphism issues](https://developercommunity.visualstudio.com/t/C20-constexpr-virtual-polymorphism-is-/10348572) -- Corrected [virtual constexpr function evaluation](https://developercommunity.visualstudio.com/t/Virtual-constexpr-function-did-not-evalu/10360010) - -#### Expression Evaluation -- Improved rejection of [overflow from addition and left shifting of constants](https://developercommunity.visualstudio.com/content/problem/1202945/signed-overflow-in-constant-core-expression-should.html) -- Fixed scenarios where [constructors should be made implicitly constexpr](https://developercommunity.visualstudio.com/t/Multiple-constexpr-bugs-including-regre/10855054) -- Resolved issues with [constexpr static data members and CRTP](https://developercommunity.visualstudio.com/content/problem/1110270/crtp-in-msvc-1924-not-seeing-variable.html) - -#### Advanced `constexpr` Features -- Fixed bugs related to [evaluating destructors of constant objects](https://developercommunity.visualstudio.com/t/MSVC-1437-40-forces-my-global-std::stri/10794576) -- Improved [constexpr lambda captures with guaranteed copy elision](https://developercommunity.visualstudio.com/t/Lambda-in-a-function-template-requests-c/10922885) -- Allowed [consteval constructor calls as direct-initialization arguments](https://developercommunity.visualstudio.com/t/MSVC-Fails-to-compile-list-and-direct-in/10915063) -- Fixed issues with [consteval functions in `if consteval` contexts](https://developercommunity.visualstudio.com/t/The-consteval-function-is-not-an-immedia/10900618) - -### C++ Modules Improvements - -Enhanced C++20 modules support with numerous bug fixes: - -#### Import and Export Fixes -- Fixed bug with [importing friend declarations in nlohmann/json library](https://developercommunity.visualstudio.com/t/nlohmannjson-does-not-compile-as-C20-/10908164) -- Resolved [compiler crashes with using-declarations from specializations](https://developercommunity.visualstudio.com/t/Internal-compiler-error-when-using-usin/10934729) -- Fixed issues where [std::expected couldn't be specialized when imported](https://developercommunity.visualstudio.com/t/C1907-modules-constexpr-and-std::expect/10501314) - -#### Function and Variable Handling -- Corrected problems with [functions using types from named modules](https://developercommunity.visualstudio.com/t/Compiler-uses-non-exported-class-definit/10863347) -- Fixed [importing constexpr functions with static local variables](https://developercommunity.visualstudio.com/t/ICE-when-calling-imported-function-that-/10913469) -- Improved [pragma warning directive handling in modules](https://developercommunity.visualstudio.com/t/pragma-warningdisable-not-working-in-/10937100) - -#### Real-World Compatibility -- Fixed various issues preventing [Unreal Engine 5 from building with header units](https://developercommunity.visualstudio.com/t/Unreal-does-not-build-with-header-units-/10800119) -- Resolved [C++ modules + boost::asio compatibility issues](https://developercommunity.visualstudio.com/t/C20-modules--boost::asio-still-being-/10038468) -- Fixed problems with [specializations in the global module fragment](https://developercommunity.visualstudio.com/t/C20-modules:-specialzations-in-the-glo/10826499) +- [CWG2635](https://cplusplus.github.io/CWG/issues/2635): Constrained structured bindings support +- [CWG2465](https://cplusplus.github.io/CWG/issues/2465): Coroutine parameters passed to promise constructor improvements +- [CWG2496](https://cplusplus.github.io/CWG/issues/2496): Ref-qualifiers and virtual overriding corrections +- [CWG2506](https://cplusplus.github.io/CWG/issues/2506): Structured bindings and array cv-qualifiers fixes +- [CWG2507](https://cplusplus.github.io/CWG/issues/2507): Default arguments for `operator[]` support +- [CWG2585](https://cplusplus.github.io/CWG/issues/2585): Behavior alignment with standard requirements +- [CWG2521](https://cplusplus.github.io/CWG/issues/2521): Deprecation of 'operator string-literal identifier' +- [CWG2528](https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#2528): Relaxed conversion rules for the spaceship operator +- [P2360R0](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2360r0.html): Extended init-statement definition to allow alias-declarations +- [P2290R3](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2290r3.pdf): C++23 hexadecimal/octal delimited escape sequence support in string literals +- [P2797R0](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2797r0.html): Resolution for CWG2692 regarding static and explicit object member functions with the same parameter-type-lists +- [P2266R3](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2266r3.html): Simpler implicit move semantics + +For more information about compiler improvements and bug fixes in MSVC Build Tools v14.50, see [C++ Language Updates in MSVC Build Tools v14.50](https://devblogs.microsoft.com/cppblog/c-language-updates-in-msvc-build-tools-v14-50/) ### Conformance Enhancements Improved adherence to C++ standards: #### Attribute Support -- Added support for [`[[maybe_unused]]` on labels](https://developercommunity.visualstudio.com/t/unreferenced-label-when-ref-hidden-by-if/102076) -- Fixed warning C4102 (unreferenced label) when the only reference was from a discarded `if constexpr` branch +- Added support for [`[[maybe_unused]]` on labels](https://developercommunity.visualstudio.com/t/unreferenced-label-when-ref-hidden-by-if/102076). +- Fixed warning C4102 (unreferenced label) when the only reference was from a discarded `if constexpr` branch. #### Template and Specialization Fixes -- [Diagnosed ill-formed friend explicit specializations](https://developercommunity.visualstudio.com/t/Defining-explicit-function-template-spec/10933841) that were incorrectly accepted in C++20 or later -- Added `/Zc:enumEncoding` switch to [correctly encode enum non-type template parameters](https://developercommunity.visualstudio.com/t/Overload-resolution-fails-for-enum-non-t/10398088) +- [Diagnosed ill-formed friend explicit specializations](https://developercommunity.visualstudio.com/t/Defining-explicit-function-template-spec/10933841) that were incorrectly accepted in C++20 or later. +- Added `/Zc:enumEncoding` switch to [correctly encode enum non-type template parameters](https://developercommunity.visualstudio.com/t/Overload-resolution-fails-for-enum-non-t/10398088). - Fixed issues with [missing 'template' keyword diagnostics](https://developercommunity.visualstudio.com/t/No-diagnostic-for-missing-template-in-d/10501221) -### Reliability Improvements - -Extensive internal compiler error (ICE) fixes and stability improvements: - -#### Template-Related Fixes -- Fixed [ICE on explicit class template instantiation with friend functions](https://developercommunity.visualstudio.com/t/Internal-compiler-error-ICE-on-explici/10903887) -- Resolved [ICE with explicit variable template instantiations and PCH files](https://developercommunity.visualstudio.com/t/C-explicit-variable-template-instantia/10933044) -- Corrected [compiler crashes with deep nesting of aggregates and initializer lists](https://developercommunity.visualstudio.com/t/Internal-Compiler-Error-Found-in-MSVC-14/10914206) - -#### Lambda-Related Improvements -- Fixed issues with [nested generic lambdas](https://developercommunity.visualstudio.com/t/VS-1714-Preview-30:-ICE:-error-C1001:-/10891418) -- Resolved [ICE with lambda captures and template parameters](https://developercommunity.visualstudio.com/t/ICE-with-nested-std::visit--lambda-capt/10910959) -- Corrected [lambda initialization problems](https://developercommunity.visualstudio.com/t/Internal-compiler-error-with-designated-/10618932) - -#### Memory and Performance -- Fixed [exponential memory growth during type deduction](https://developercommunity.visualstudio.com/t/VS-2022-C-compiler-uses-nearly-200x-as/10900008) with classes having many base classes -- Improved [IL generation for temporaries bound to non-static data member references](https://developercommunity.visualstudio.com/t/CLexe-crashes-with-Access-Violation-on-/10878252) - -### Correctness Improvements - -Enhanced code generation and semantic analysis: - -#### Exception Handling and References -- Fixed [exception handling issues with unions](https://developercommunity.visualstudio.com/t/CLexe-exited-with-code--529706956-whe/10915135) -- Improved [rvalue reference handling in lambda contexts](https://developercommunity.visualstudio.com/t/When-using-a-lambda-as-a-template-argume/10916555) -- Corrected [explicit instantiation overload resolution with requires clauses](https://developercommunity.visualstudio.com/t/Overload-resolution-for-constrained-func/10107770) - -#### Type System and Semantics -- Fixed [noexcept specifier semantic issues](https://developercommunity2.visualstudio.com/t/noexcept-for-some-reason-work-with-type/1321108) -- Improved [phase-1 name binding in non-static data member initializers](https://developercommunity.visualstudio.com/t/Wrong-context-for-class-field-initialize/10896684) -- Corrected [value category determination for indirection and array expressions](https://developercommunity.visualstudio.com/t/cl-Preview-fails-to-properly-determine-a/10907452) - -#### Template and SFINAE -- Fixed [template-id parsing in alias declarations](https://developercommunity.visualstudio.com/t/Source-code-parsing-error-in-boostparse/10869546) -- Improved [partial ordering with template parameter objects](https://developercommunity.visualstudio.com/t/Template-Specialization-is-not-selected-/10902294) -- Resolved [constexpr variable re-declaration issues](https://developercommunity.visualstudio.com/t/A-C1001-error-occurs-in-VS1714/10909397) - -#### Advanced Language Features -- Fixed [`__declspec(no_sanitize_address)` handling on lambdas](https://developercommunity.visualstudio.com/t/Address-Sanitizer-declspecsattributes-d/10850249) -- Improved [static inline data member instantiation points](https://developercommunity.visualstudio.com/t/static-inline-atomic-and-another-atomic-/10203656) -- Corrected [static operator() in abbreviated function templates](https://developercommunity.visualstudio.com/t/Call-to-static-operator-is-elided/10908158) - -#### Standard Library Integration -- Fixed [`std::bit_cast` internal compiler errors](https://developercommunity.visualstudio.com/t/__builtin_bit_cast-Internal-compiler-err/10939926) -- Improved [modulo operator handling in variadic templates](https://developercommunity.visualstudio.com/t/Issue-in-specific-conditions-with-modulo/10940009) -- Resolved [class template argument deduction issues](https://developercommunity.visualstudio.com/t/Deduction-of-class-template-arguments-pi/10939918) #### C++20 and C++23 Features + - Enhanced [multidimensional operator[] support](https://developercommunity.visualstudio.com/t/Multidimensional-operator-with-Wall-r/10876026) -- Fixed [`using enum` declaration handling](https://developercommunity.visualstudio.com/t/using-enum-c-20-doesnt-supported-as-we/10926317) - Improved [concept and constraint evaluation](https://developercommunity.visualstudio.com/t/VS-1714-if-constexpr-requires--does/10905731) -### C Compiler Improvements - -#### C23 Language Features -- Fixed `typeof` behavior with function types: In C23, functions no longer [decay to function pointers when used as arguments to `typeof`](https://developercommunity.visualstudio.com/t/__typeof__-not-working-with-function-typ/10891974) - ## Migrating to MSVC Build Tools v14.50 When upgrading to MSVC Build Tools v14.50, consider the following potential breaking changes and migration guidance: @@ -287,7 +173,7 @@ When upgrading to MSVC Build Tools v14.50, consider the following potential brea ## Conclusion -MSVC Build Tools v14.50 represents a significant advancement in C++ compiler technology, bringing substantial improvements in C++23 conformance, reliability, and correctness. The extensive bug fixes and enhancements make this release particularly valuable for large-scale C++ development projects. +MSVC Build Tools v14.50 represents a significant advancement to the MSVC compiler, bringing substantial improvements in C++23 conformance, reliability, and correctness. The extensive bug fixes and enhancements make this release particularly valuable for large-scale C++ development projects. Key highlights include: - Advanced C++23 feature support including `auto(x)` decay-copy and `#warning` directive From 8c51c47bbdc9e6c57a3ca35be2fd78233bce924a Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 31 Oct 2025 16:20:17 -0700 Subject: [PATCH 2032/2255] draft --- docs/overview/visual-cpp-language-conformance.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/overview/visual-cpp-language-conformance.md b/docs/overview/visual-cpp-language-conformance.md index 27aac6adca8..b402d513cb4 100644 --- a/docs/overview/visual-cpp-language-conformance.md +++ b/docs/overview/visual-cpp-language-conformance.md @@ -476,17 +476,22 @@ A more detailed listing of Standard Library features and bug fixes by product ve |  [`P2166R1 Prohibit basic_string and basic_string_view from being constructed from nullptr`](https://wg21.link/P2166R1) | VS 2022 17.0 [23](#note_23), [R](#note_R) | |  [`P2186R2 Removed garbage collection support`](https://wg21.link/P2186R2) | VS 2022 17.0 [23](#note_23), [Q](#note_Q) | |  [`P2251R1 Require span And basic_string_view To Be Trivially Copyable`](https://wg21.link/p2251r1) | VS 2022 17.1 [23](#note_23) | +|  [`P2266R3 Simpler implicit move`](https://wg21.link/p2266r3) | MSVC 14.50 [23](#note_23) | |  [`P2273R3 constexpr unique_ptr`](https://wg21.link/p2273r3) | VS 2022 17.3 [23](#note_23) | +|  [`P2280R4 Using unknown pointers and references in constant expressions`](https://wg21.link/p2280r4) | MSVC 14.50 [23](#note_23) | +|  [`P2290R3 Delimited escape sequences`](https://wg21.link/p2290r3) | MSVC 14.50 [23](#note_23) | |  [`P2291R3 constexpr Integral `](https://wg21.link/p2291r3) | VS 2022 17.4 [23](#note_23) | |  [`P2302R4 ranges::contains, ranges::contains_subrange`](https://wg21.link/p2302r4) | VS 2022 17.4 [23](#note_23) | |  [`P2321R2 std::zip`](https://wg21.link/p2321r2) | partial in VS 2022 17.5 [23](#note_23) | |  [`P2322R6 ranges::fold_left, ranges::fold_right, etc.`](https://wg21.link/p2322r6) | VS 2022 17.5 [23](#note_23) | +|  [`P2360R0 Extend init-statement to allow alias-declaration`](https://wg21.link/p2360r0) | MSVC 14.50 [23](#note_23) | |  [`P2387R3 Pipe Support For User-Defined Range Adaptors`](https://wg21.link/p2387r3) | VS 2022 17.4 [23](#note_23) | |  [`P2393R1 Cleaning Up Integer-Class Types`](https://wg21.link/p2393r1) | VS 2022 17.2 [23](#note_23) | |  [`P2401R0 Conditional noexcept For exchange()`](https://wg21.link/p2401r0) | VS 2022 17.1 [23](#note_23) | |  [`P2408R5 Ranges Iterators As Inputs To Non-Ranges Algorithms`](https://wg21.link/p2408r5) | VS 2022 17.4 [23](#note_23) | |  [`P2417R2 More constexpr bitset`](https://wg21.link/p2417r2) | VS 2022 17.4 [23](#note_23) | |  [`P2419R2 Clarify Handling Of Encodings In Localized Formatting Of chrono Types`](https://wg21.link/p2419r2) | VS 2022 17.4 [23](#note_23) | +|  [`P2437R1 Support for #warning`](https://wg21.link/p2437r1) | MSVC 14.50 [23](#note_23) | |  [`P2438R2 string::substr() &&`](https://wg21.link/p2438r2) | VS 2022 17.4 [23](#note_23) | |  [`P2440R1 ranges::iota, ranges::shift_left, ranges::shift_right`](https://wg21.link/p2440r1) | VS 2022 17.4 [23](#note_23) | |  [`P2441R2 views::join_with`](https://wg21.link/p2441r2) | VS 2022 17.4 [23](#note_23) | From 2a6681ab649ca9bd23a56a6fed3053c6d9f2001d Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 31 Oct 2025 19:40:29 -0700 Subject: [PATCH 2033/2255] draft --- docs/overview/msvc-conformance-improvements.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/docs/overview/msvc-conformance-improvements.md b/docs/overview/msvc-conformance-improvements.md index de4b1e6881d..1f6a7d5ce63 100644 --- a/docs/overview/msvc-conformance-improvements.md +++ b/docs/overview/msvc-conformance-improvements.md @@ -26,6 +26,9 @@ Microsoft C/C++ in Visual Studio (MSVC) Build Tools v14.50 introduces significan This document details the C++ language conformance improvements and compiler enhancements included in MSVC Build Tools v14.50. For more information about updates in the Standard Library, see [STL Changelog](https://github.com/microsoft/STL/wiki/Changelog), which is regularly updated. +The Microsoft C++ standard library (STL) no longer supports targeting Windows 7 / Server 2008 R2, Windows 8 / Server 2012, or Windows 8.1 / Server 2012 R2.\ +Windows 10 / Server 2016 are the minimum supported operating systems. + ## C++23 Features MSVC Build Tools v14.50 adds support for several C++23 features, bringing the compiler closer to full C++23 conformance. @@ -136,12 +139,17 @@ Improved adherence to C++ standards: - Added `/Zc:enumEncoding` switch to [correctly encode enum non-type template parameters](https://developercommunity.visualstudio.com/t/Overload-resolution-fails-for-enum-non-t/10398088). - Fixed issues with [missing 'template' keyword diagnostics](https://developercommunity.visualstudio.com/t/No-diagnostic-for-missing-template-in-d/10501221) - #### C++20 and C++23 Features - Enhanced [multidimensional operator[] support](https://developercommunity.visualstudio.com/t/Multidimensional-operator-with-Wall-r/10876026) - Improved [concept and constraint evaluation](https://developercommunity.visualstudio.com/t/VS-1714-if-constexpr-requires--does/10905731) +## Bug fixes + +Bug fixes for C++ Modules, `constexpr`, and others were made in v14.50. For a detailed list of bug fixes, see [Compiler Improvements in v14.50](https://devblogs.microsoft.com/cppblog/c-language-updates-in-msvc-build-tools-v14-50/#compiler-improvements-in-v14.50) + +https://devblogs.microsoft.com/cppblog/c-language-updates-in-msvc-build-tools-v14-50/#constexpr + ## Migrating to MSVC Build Tools v14.50 When upgrading to MSVC Build Tools v14.50, consider the following potential breaking changes and migration guidance: From f38c327a58f4adfc54f655bc500f57cd29d69df6 Mon Sep 17 00:00:00 2001 From: Mahmoud Saleh <12202790+MahmoudGSaleh@users.noreply.github.com> Date: Mon, 3 Nov 2025 09:52:34 -0800 Subject: [PATCH 2034/2255] Redist Updates for VS 2026 Updated the date and adjusted references for Visual C++ Redistributable packages to reflect support for Visual Studio 2026. --- docs/windows/latest-supported-vc-redist.md | 41 +++++++++++++--------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index 878325159a6..cf273a8b073 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -1,7 +1,7 @@ --- title: "Latest supported Visual C++ Redistributable downloads" description: "This article provides download links for the latest Visual C++ Redistributable packages." -ms.date: 09/23/2025 +ms.date: 11/03/2025 helpviewer_keywords: [ "redist", @@ -24,9 +24,10 @@ This topic is for developers who need to install the Visual C++ runtime librarie To find the download you need, choose your version of Visual Studio from the table below. Each link takes you to the appropriate download section. -| Visual Studio version | Section | +| Version | Section | |--|--| -| Latest supported (2015–2022) | [Latest supported Redistributable version](#latest-supported-redistributable-version) | +| Latest supported v14 (for Visual Studio 2017–2026) | [Latest supported Redistributable version](#latest-supported-redistributable-version) | +| Visual Studio 2015 | [Visual Studio 2015 (VC++ 14.0)](#visual-studio-2015-vc-140-no-longer-supported) | | Visual Studio 2013 | [Visual Studio 2013 (VC++ 12.0)](#visual-studio-2013-vc-120-no-longer-supported) | | Visual Studio 2012 | [Visual Studio 2012 (VC++ 11.0)](#visual-studio-2012-vc-110-update-4-no-longer-supported) | | Visual Studio 2010 | [Visual Studio 2010 (VC++ 10.0)](#visual-studio-2010-vc-100-sp1-no-longer-supported) | @@ -35,35 +36,43 @@ To find the download you need, choose your version of Visual Studio from the tab Redistribution is permitted only for licensed Visual Studio users, as described in the [Visual Studio license terms](https://visualstudio.microsoft.com/license-terms/). For details on redistributing Visual C++ files, see [Redistributing Visual C++ Files](redistributing-visual-cpp-files.md). -A Visual C++ Redistributable installs Microsoft C and C++ (MSVC) runtime libraries. Many applications built using Microsoft C and C++ tools require these libraries. If your app is built using those libraries, a Microsoft Visual C++ Redistributable package at least as recent as the MSVC build toolset used to build your app must be installed on the target system along with the app. The Redistributable package architecture must match your app's target architecture (you can't install an ARM redistributable on an x86 system, or an x64 redistributable on an x86 system, for example). We recommend you use the latest Redistributable available for your version of Visual Studio, with some exceptions noted in this article. +A Visual C++ Redistributable installs Microsoft C and C++ (MSVC) runtime libraries. Many applications built using Microsoft C and C++ (MSVC) build tools require these libraries. If your app is built using those libraries, a Microsoft Visual C++ Redistributable package at least as recent as the MSVC build toolset used to build your app must be installed on the target system along with the app. The Redistributable package architecture must match your app's target architecture (you can't install an ARM64 redistributable on an x86 system, or an x64 redistributable on an x86 system, for example). We recommend you use the latest Redistributable available for your version of Visual Studio. -## Visual Studio 2015-2022 +## Visual C++ Redistributable v14 -This table lists the latest supported English (en-US) Microsoft Visual C++ Redistributable packages for Visual Studio 2015, 2017, 2019, and 2022. The latest supported version has the most recently implemented C++ features, security, reliability, and performance improvements. It also includes the latest C++ standard language and library standards conformance updates. We recommend that you install this version for all applications created using Visual Studio 2015, 2017, 2019, or 2022. +This table lists the latest supported Microsoft Visual C++ Redistributable v14 packages. The latest supported version has the most recently implemented C++ features, security, reliability, and performance improvements. It also includes the latest C++ standard language and library standards conformance updates. We recommend that you install this version for all applications created using MSVC C and C++ build tools available in Visual Studio 2017, 2019, 2022, or 2026. -Unlike older versions of Visual Studio that have infrequent redist updates, the version number isn't listed in the following table for Visual Studio 2015-2022 because the redist is updated frequently. To find the version number of the latest redist, download the redist you're interested in using one of the following links. Then, look at its properties using Windows File Explorer. In the **Details** pane, the **File version** contains the version of the redist. +Unlike older versions of Visual Studio that have infrequent redist updates, the version number isn't listed in the following table for Visual C++ redistributable v14 because the redist is updated frequently. To find the version number of the latest redist, download the redist you're interested in using one of the following links. Then, look at its properties using Windows File Explorer. In the **Details** pane, the **File version** contains the version of the redist. ### Latest supported redistributable version | Architecture | Link | Notes | |--|--|--| -| ARM64 | [https://aka.ms/vs/17/release/vc_redist.arm64.exe](https://aka.ms/vs/17/release/vc_redist.arm64.exe) | Permalink for latest supported ARM64 version | -| X86 | [https://aka.ms/vs/17/release/vc_redist.x86.exe](https://aka.ms/vs/17/release/vc_redist.x86.exe) | Permalink for latest supported x86 version | -| X64 | [https://aka.ms/vs/17/release/vc_redist.x64.exe](https://aka.ms/vs/17/release/vc_redist.x64.exe) | Permalink for latest supported x64 version. The X64 Redistributable package contains both ARM64 and X64 binaries. This package makes it easy to install required Visual C++ ARM64 binaries when the X64 Redistributable is installed on an ARM64 device. | +| ARM64 | [https://aka.ms/vs/18/release/vc_redist.arm64.exe](https://aka.ms/vs/18/release/vc_redist.arm64.exe) | Permalink for latest supported ARM64 version | +| X86 | [https://aka.ms/vs/18/release/vc_redist.x86.exe](https://aka.ms/vs/18/release/vc_redist.x86.exe) | Permalink for latest supported x86 version | +| X64 | [https://aka.ms/vs/18/release/vc_redist.x64.exe](https://aka.ms/vs/18/release/vc_redist.x64.exe) | Permalink for latest supported x64 version. The X64 Redistributable package contains both ARM64 and X64 binaries. This package makes it easy to install required Visual C++ ARM64 binaries when the X64 Redistributable is installed on an ARM64 device. | Download other versions, including long term servicing release channel (LTSC) versions, from [my.visualstudio.com](https://my.visualstudio.com/). ### Notes -- The Visual C++ Redistributable for Visual Studio 2015-2022 doesn't have separate packages for different languages. It contains EULAs for all supported languages. -- Some of the downloads that are mentioned in this article are currently available on [my.visualstudio.com](https://my.visualstudio.com/). Log in using a Visual Studio Subscription account so that you can access the download links. If you're asked for credentials, use your existing Visual Studio subscription account. Or, create a free account by choosing the **No account? Create one!** link. -- Visual Studio versions since Visual Studio 2015 share the same Redistributable files. For example, any apps built by the Visual Studio 2015, 2017, 2019, or 2022 toolsets can use the latest Microsoft Visual C++ Redistributable. However, the version of the Microsoft Visual C++ Redistributable installed on the machine must be the same or higher than the version of the Visual C++ toolset used to create your application. For more information about which version of the Redistributable to install, see [Determining which DLLs to redistribute](determining-which-dlls-to-redistribute.md). For more information about binary compatibility, see [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md). -- **Windows XP Support**: Microsoft ended support for Windows XP on April 8, 2014. Current versions of the Visual C++ Redistributable for Visual Studio 2015-2022 only support Windows 7, 8.1, 10, and 11. -- Support for Visual Studio 2015 ended on October 15, 2025. Because support for the Visual C++ Redistributable is connected to the version of Visual Studio in which they first ship, support for Visual C++ Redistributable 2015 (version 14.0.24212) also ended October 15, 2025. +- The Visual C++ Redistributable v14 doesn't have separate packages for different languages. License terms for different languages are available at https://aka.ms/VCRedistLicense. +- Some of the downloads that are mentioned in this article are currently available on [my.visualstudio.com](https://my.visualstudio.com/). Log in using a Visual Studio Subscription account so that you can access the download links. If you're asked for credentials, use your existing Visual Studio subscription account. Or, create a free account by choosing the [**No account? Create one!**](https://my.visualstudio.com/). +- Visual Studio versions since Visual Studio 2017 share the same Redistributable files. Any apps built by MSVC build tools v14.* available in Visual Studio 2017, 2019, 2022, or 2026 can use the latest Visual C++ Redistributable v14. However, the version of the Microsoft Visual C++ Redistributable installed on the machine must be the same or higher than the version of the Visual C++ toolset used to create your application. For more information about which version of the Redistributable to install, see [Determining which DLLs to redistribute](determining-which-dlls-to-redistribute.md). For more information about binary compatibility, see [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md). +- The latest version of the Visual C++ Redistributable v14 distributed with Visual Studio 2026 only supports the following operating systems: + * Windows 10 and 11 + * Windows Server 2016, 2019, 2022, and 2025 +- Support for Visual Studio 2015 ended on October 15, 2025. Because support for the Visual C++ Redistributable is connected to the version of Visual Studio in which they first ship, support for Visual C++ Redistributable 2015 (version 14.0.24212) also ended October 15, 2025. See [Visual Studio 2015 (VC++ 14.0)](#visual-studio-2015-vc-140-no-longer-supported) section below for the latest available version. - The Visual C++ Redistributable supports several command-line options. For more information, see [Command-line options for the Redistributable packages](./redistributing-visual-cpp-files.md#command-line-options-for-the-redistributable-packages). ## Unsupported legacy versions +### Visual Studio 2015 (VC++ 14.0) (no longer supported) + +To download the latest available version of Visual C++ Redistributable for Visual Studio 2015, please visit [my.visualstudio.com](https://my.visualstudio.com/) and search for "Visual C++ Redistributable for Visual Studio 2015" in the _Downloads_ section + +The latest version of Visual C++ Redistributable for Visual Studio 2015 is `14.0.24212.0`, available for ARM64, X86, and X64 architectures. + ### Visual Studio 2013 (VC++ 12.0) (no longer supported) These links download the latest available en-US Microsoft Visual C++ Redistributable packages for Visual Studio 2013. @@ -134,7 +143,7 @@ Download Redistributable files for other languages and architectures from: **Release notes** -- [Visual Studio 2022 release notes](/visualstudio/releases/2022/release-notes) +- [Visual Studio 2026 release notes](/visualstudio/releases/2026/release-notes) - [What's new for C++ in Visual Studio](../overview//what-s-new-for-visual-cpp-in-visual-studio.md) - [Visual C++ What's New 2003 through 2015](../porting/visual-cpp-what-s-new-2003-through-2015.md) - [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/) From ecb8263581bb6b313ab0efb997f8ad8f7c36d8f6 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Mon, 3 Nov 2025 13:53:10 -0800 Subject: [PATCH 2035/2255] draft --- .../overview/msvc-conformance-improvements.md | 89 +++++++++++++++++-- .../visual-cpp-language-conformance.md | 8 +- 2 files changed, 89 insertions(+), 8 deletions(-) diff --git a/docs/overview/msvc-conformance-improvements.md b/docs/overview/msvc-conformance-improvements.md index 1f6a7d5ce63..d498751da06 100644 --- a/docs/overview/msvc-conformance-improvements.md +++ b/docs/overview/msvc-conformance-improvements.md @@ -88,6 +88,51 @@ struct S This change allows you to use the explicit object parameter syntax (deducing `this`) in assignment and comparison operators, providing more consistent syntax across different types of member functions. + +### P2266R1 : Simpler implicit move + +The introduction of [P2266R1](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2266r1.html) may cause code that was previously treated as an lvalue to be treated as an xvalue or a prvalue. For example: + +```cpp +#include + +template +T& f(T&& t) +{ + return t; +} + +struct S { }; + +void g() +{ + S s1{ }; + S& s2 = f(std::move(s1)); +} +``` + +In C++20, and earlier, this code would have compiled because even though the type of `t` is `S&&` the use of `t` in `return t` is treated as a glvalue and so it can bind to the return type. + +With C++23, `t` is treated as an xvalue and so it can't bind to an lvalue reference. + +One fix is to change to the return type of the function from `T&` to `T&&` but this may affect code that calls this function. An alternative is to use the feature test macro that is associated with this change. For example: + +```cpp +#include + +template +T& f(T&& t) +{ +#if defined(__cpp_implicit_move) + return static_cast&>(t); +#else + return t; +#endif +} +``` + +Adding the cast means that the value-category of the return expression is now an lvalue and so it can bind to the return type. + ### P2280R4: References to unknown values during constant evaluation [P2280R4](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2280r4.html) allows references to unknown values during constant evaluation, relaxing restrictions on `constexpr` evaluation. @@ -126,29 +171,61 @@ MSVC Build Tools v14.50 includes numerous smaller conformance improvements that For more information about compiler improvements and bug fixes in MSVC Build Tools v14.50, see [C++ Language Updates in MSVC Build Tools v14.50](https://devblogs.microsoft.com/cppblog/c-language-updates-in-msvc-build-tools-v14-50/) -### Conformance Enhancements +## Conformance Enhancements Improved adherence to C++ standards: -#### Attribute Support +### Attribute Support + - Added support for [`[[maybe_unused]]` on labels](https://developercommunity.visualstudio.com/t/unreferenced-label-when-ref-hidden-by-if/102076). - Fixed warning C4102 (unreferenced label) when the only reference was from a discarded `if constexpr` branch. -#### Template and Specialization Fixes +### Template and Specialization Fixes + - [Diagnosed ill-formed friend explicit specializations](https://developercommunity.visualstudio.com/t/Defining-explicit-function-template-spec/10933841) that were incorrectly accepted in C++20 or later. - Added `/Zc:enumEncoding` switch to [correctly encode enum non-type template parameters](https://developercommunity.visualstudio.com/t/Overload-resolution-fails-for-enum-non-t/10398088). - Fixed issues with [missing 'template' keyword diagnostics](https://developercommunity.visualstudio.com/t/No-diagnostic-for-missing-template-in-d/10501221) -#### C++20 and C++23 Features +### C++20 and C++23 Features - Enhanced [multidimensional operator[] support](https://developercommunity.visualstudio.com/t/Multidimensional-operator-with-Wall-r/10876026) - Improved [concept and constraint evaluation](https://developercommunity.visualstudio.com/t/VS-1714-if-constexpr-requires--does/10905731) ## Bug fixes -Bug fixes for C++ Modules, `constexpr`, and others were made in v14.50. For a detailed list of bug fixes, see [Compiler Improvements in v14.50](https://devblogs.microsoft.com/cppblog/c-language-updates-in-msvc-build-tools-v14-50/#compiler-improvements-in-v14.50) +Bug fixes for C++ Modules, `constexpr`, and other fixes were made in v14.50. For a detailed list of bug fixes, see [Compiler Improvements in v14.50](https://devblogs.microsoft.com/cppblog/c-language-updates-in-msvc-build-tools-v14-50/#compiler-improvements-in-v14.50) + +**Encoding of certain non-type template arguments corrected** + +Affects `/stdc++20` or later. + +Certain non-type pointer type template arguments involving sub-objects could lead to linking issues or in some cases silent bad code generation where what should be distinct specializations collide. + +```cpp +struct A +{ + int x; +}; + +struct B +{ + int y; +}; + +template void f(); + +int main() +{ + static A a; + static B b; + constexpr auto px = &a.x; + constexpr auto py = &b.y; + f(); // incorrect encoding of argument 'px' + f(); // incorrect encoding of argument 'py', collided with 'px'. +} +``` -https://devblogs.microsoft.com/cppblog/c-language-updates-in-msvc-build-tools-v14-50/#constexpr +With this fix, the two calls to `f` get distinct encodings, as required. ## Migrating to MSVC Build Tools v14.50 diff --git a/docs/overview/visual-cpp-language-conformance.md b/docs/overview/visual-cpp-language-conformance.md index b402d513cb4..81b31336047 100644 --- a/docs/overview/visual-cpp-language-conformance.md +++ b/docs/overview/visual-cpp-language-conformance.md @@ -1,7 +1,7 @@ --- title: "Microsoft C/C++ language conformance" description: "Microsoft C and C++ conformance updates by Visual Studio version." -ms.date: 10/31/2025 +ms.date: 11/03/2025 ms.service: "visual-cpp" ms.subservice: "cpp-lang" --- @@ -197,6 +197,7 @@ For details on conformance improvements, see [C++ conformance improvements in Vi |  [`P2173R1 Attributes on Lambda-Expressions`](https://wg21.link/p2173r1) | no | |  [`P2186R2 Remove Garbage Collection Support`](https://wg21.link/p2186r2) | VS 2022 17.0 [23](#note_23) | |  [`P2201R1 Mixed string literal concatenation`](https://wg21.link/p2201r1) | no | +|  [`P2266R1 Simpler implicit move`](https://wg21.link/p2266r1) | VS 2026 18.0 [24](#note_24) | |  [`P2223R2 Trimming whitespaces before line splicing`](https://wg21.link/p2223r2) | no | |  [`P2242R3 Non-literal variables (and labels and gotos) in constexpr functions`](https://wg21.link/p2242r3) | no | |  [`P2246R1 Character encoding of diagnostic text`](https://wg21.link/p2246r1) | VS 2022 17.0 [23](#note_23) | @@ -575,7 +576,8 @@ A group of papers listed together indicates a Standard feature along with one or **VS 2022 17.2** Supported in Visual Studio 2022 version 17.2.\ **VS 2022 17.3** Supported in Visual Studio 2022 version 17.3.\ **VS 2022 17.4** Supported in Visual Studio 2022 version 17.4.\ -**VS 2022 17.5** Supported in Visual Studio 2022 version 17.5. +**VS 2022 17.5** Supported in Visual Studio 2022 version 17.5.\ +**VS 2022 18** Supported in Visual Studio 2026 and beyond. ### Notes @@ -646,6 +648,8 @@ These algorithms aren't presently parallelized: **23** In Visual Studio 2022 version 17.0 and up, these features are enabled by the [`/std:c++latest`](../build/reference/std-specify-language-standard-version.md) compiler option. + **24** In Visual Studio 2026 version 18.0 and up, these features are enabled by the [`/std:c++latest`](../build/reference/std-specify-language-standard-version.md) compiler option. + **C11** Compiler support for C11 and C17 requires Visual Studio 2019 version 16.8 or higher. Except as noted, C11 and C17 library support requires Windows SDK build 10.0.20211.0 or higher. For more information on how to install support for C11 and C17, see [Install C11 and C17 support in Visual Studio](./install-c17-support.md). **DR** These features are enabled in all C++ [`/std`](../build/reference/std-specify-language-standard-version.md) compiler option modes. The C++ Standard committee adopted this change as a retroactive Defect Report to C++11 and all later versions. From 66de82c9f78b85319e64c58f1298308e2aefcd42 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Mon, 3 Nov 2025 14:06:11 -0800 Subject: [PATCH 2036/2255] draft --- .../overview/msvc-conformance-improvements.md | 81 +++++++++---------- 1 file changed, 38 insertions(+), 43 deletions(-) diff --git a/docs/overview/msvc-conformance-improvements.md b/docs/overview/msvc-conformance-improvements.md index d498751da06..dd26387a8f2 100644 --- a/docs/overview/msvc-conformance-improvements.md +++ b/docs/overview/msvc-conformance-improvements.md @@ -1,7 +1,7 @@ --- title: "C++ conformance improvements in Microsoft C/C++ (MSVC)" description: "Summary of conformance improvements in Microsoft C/C++ (MSVC)" -ms.date: 10/31/2025 +ms.date: 11/03/2025 ms.service: "visual-cpp" ms.subservice: "cpp-lang" --- @@ -22,12 +22,20 @@ For changes in earlier versions of Visual Studio: ## C++ conformance improvements, behavior changes, and bug fixes in MSVC Build Tools v14.50 -Microsoft C/C++ in Visual Studio (MSVC) Build Tools v14.50 introduces significant C++ language updates, conformance improvements, and bug fixes. This version shipped first with Visual Studio 2026 version 18.0 and includes version 19.50 of the MSVC compiler. +MSVC Build Tools v14.50 represents a significant advancement to the MSVC compiler, bringing substantial improvements in C++23 conformance, reliability, and correctness. The extensive bug fixes and enhancements make this release particularly valuable for large-scale C++ development projects. + +This version shipped first with Visual Studio 2026 version 18.0 and includes version 19.50 of the MSVC compiler. -This document details the C++ language conformance improvements and compiler enhancements included in MSVC Build Tools v14.50. For more information about updates in the Standard Library, see [STL Changelog](https://github.com/microsoft/STL/wiki/Changelog), which is regularly updated. +Key highlights include: +- Advanced C++23 feature support including `auto(x)` decay-copy and `#warning` directive +- Comprehensive `constexpr` improvements, particularly for virtual functions +- Major stability improvements for C++ modules +- Extensive reliability fixes reducing internal compiler errors +- Enhanced C++/CLI support for managed code scenarios +- The Microsoft C++ standard library (STL) no longer supports targeting Windows 7/Server 2008 R2, Windows 8/Server 2012, or Windows 8.1/Server 2012 R2.\ +- Windows 10/Server 2016 are the minimum supported operating systems.\ -The Microsoft C++ standard library (STL) no longer supports targeting Windows 7 / Server 2008 R2, Windows 8 / Server 2012, or Windows 8.1 / Server 2012 R2.\ -Windows 10 / Server 2016 are the minimum supported operating systems. +For more information about performance improvements, bug fixes, and conformance updates in the Standard Library, see [STL Changelog](https://github.com/microsoft/STL/wiki/Changelog), which is updated regularly. ## C++23 Features @@ -88,7 +96,6 @@ struct S This change allows you to use the explicit object parameter syntax (deducing `this`) in assignment and comparison operators, providing more consistent syntax across different types of member functions. - ### P2266R1 : Simpler implicit move The introduction of [P2266R1](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2266r1.html) may cause code that was previously treated as an lvalue to be treated as an xvalue or a prvalue. For example: @@ -111,10 +118,8 @@ void g() } ``` -In C++20, and earlier, this code would have compiled because even though the type of `t` is `S&&` the use of `t` in `return t` is treated as a glvalue and so it can bind to the return type. - -With C++23, `t` is treated as an xvalue and so it can't bind to an lvalue reference. - +In C++20, and earlier, this code would have compiled because even though the type of `t` is `S&&` the use of `t` in `return t` is treated as a glvalue and so it can bind to the return type.\ +With C++23, `t` is treated as an xvalue and so it can't bind to an lvalue reference.\ One fix is to change to the return type of the function from `T&` to `T&&` but this may affect code that calls this function. An alternative is to use the feature test macro that is associated with this change. For example: ```cpp @@ -152,25 +157,6 @@ void check(int const (¶m)[3]) This improvement allows more code to be evaluated at compile time, particularly when dealing with function parameters in template contexts. -## Smaller Conformance Updates - -MSVC Build Tools v14.50 includes numerous smaller conformance improvements that enhance C++ standard compliance: - -- [CWG2635](https://cplusplus.github.io/CWG/issues/2635): Constrained structured bindings support -- [CWG2465](https://cplusplus.github.io/CWG/issues/2465): Coroutine parameters passed to promise constructor improvements -- [CWG2496](https://cplusplus.github.io/CWG/issues/2496): Ref-qualifiers and virtual overriding corrections -- [CWG2506](https://cplusplus.github.io/CWG/issues/2506): Structured bindings and array cv-qualifiers fixes -- [CWG2507](https://cplusplus.github.io/CWG/issues/2507): Default arguments for `operator[]` support -- [CWG2585](https://cplusplus.github.io/CWG/issues/2585): Behavior alignment with standard requirements -- [CWG2521](https://cplusplus.github.io/CWG/issues/2521): Deprecation of 'operator string-literal identifier' -- [CWG2528](https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#2528): Relaxed conversion rules for the spaceship operator -- [P2360R0](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2360r0.html): Extended init-statement definition to allow alias-declarations -- [P2290R3](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2290r3.pdf): C++23 hexadecimal/octal delimited escape sequence support in string literals -- [P2797R0](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2797r0.html): Resolution for CWG2692 regarding static and explicit object member functions with the same parameter-type-lists -- [P2266R3](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2266r3.html): Simpler implicit move semantics - -For more information about compiler improvements and bug fixes in MSVC Build Tools v14.50, see [C++ Language Updates in MSVC Build Tools v14.50](https://devblogs.microsoft.com/cppblog/c-language-updates-in-msvc-build-tools-v14-50/) - ## Conformance Enhancements Improved adherence to C++ standards: @@ -189,11 +175,30 @@ Improved adherence to C++ standards: ### C++20 and C++23 Features - Enhanced [multidimensional operator[] support](https://developercommunity.visualstudio.com/t/Multidimensional-operator-with-Wall-r/10876026) -- Improved [concept and constraint evaluation](https://developercommunity.visualstudio.com/t/VS-1714-if-constexpr-requires--does/10905731) +- Improved [concept and constraint evaluation](https://developercommunity.visualstudio.com/t/VS-1714-if-constexpr-requires--does/10905731)- + +### Smaller Conformance Updates + +MSVC Build Tools v14.50 includes numerous smaller conformance improvements that enhance C++ standard compliance: + +- [CWG2635](https://cplusplus.github.io/CWG/issues/2635): Constrained structured bindings support +- [CWG2465](https://cplusplus.github.io/CWG/issues/2465): Coroutine parameters passed to promise constructor improvements +- [CWG2496](https://cplusplus.github.io/CWG/issues/2496): Ref-qualifiers and virtual overriding corrections +- [CWG2506](https://cplusplus.github.io/CWG/issues/2506): Structured bindings and array cv-qualifiers fixes +- [CWG2507](https://cplusplus.github.io/CWG/issues/2507): Default arguments for `operator[]` support +- [CWG2585](https://cplusplus.github.io/CWG/issues/2585): Behavior alignment with standard requirements +- [CWG2521](https://cplusplus.github.io/CWG/issues/2521): Deprecation of 'operator string-literal identifier' +- [CWG2528](https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#2528): Relaxed conversion rules for the spaceship operator +- [P2360R0](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2360r0.html): Extended init-statement definition to allow alias-declarations +- [P2290R3](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2290r3.pdf): C++23 hexadecimal/octal delimited escape sequence support in string literals +- [P2797R0](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2797r0.html): Resolution for CWG2692 regarding static and explicit object member functions with the same parameter-type-lists +- [P2266R3](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2266r3.html): Simpler implicit move semantics ## Bug fixes -Bug fixes for C++ Modules, `constexpr`, and other fixes were made in v14.50. For a detailed list of bug fixes, see [Compiler Improvements in v14.50](https://devblogs.microsoft.com/cppblog/c-language-updates-in-msvc-build-tools-v14-50/#compiler-improvements-in-v14.50) +Bug fixes for C++ Modules, `constexpr`, and other fixes were made in v14.50. + +For a detailed list of bug fixes, see [Compiler Improvements in v14.50](https://devblogs.microsoft.com/cppblog/c-language-updates-in-msvc-build-tools-v14-50/#compiler-improvements-in-v14.50) **Encoding of certain non-type template arguments corrected** @@ -256,16 +261,6 @@ When upgrading to MSVC Build Tools v14.50, consider the following potential brea - `typeof` behavior changes may affect existing code - Review preprocessor usage for new `__VA_OPT__` availability -## Conclusion - -MSVC Build Tools v14.50 represents a significant advancement to the MSVC compiler, bringing substantial improvements in C++23 conformance, reliability, and correctness. The extensive bug fixes and enhancements make this release particularly valuable for large-scale C++ development projects. - -Key highlights include: -- Advanced C++23 feature support including `auto(x)` decay-copy and `#warning` directive -- Comprehensive `constexpr` improvements, particularly for virtual functions -- Major stability improvements for C++ modules -- Extensive reliability fixes reducing internal compiler errors -- Enhanced C++/CLI support for managed code scenarios For the latest updates and to provide feedback, please visit the [Visual Studio Developer Community](https://developercommunity.visualstudio.com/) or contact the team at [visualcpp@microsoft.com](mailto:visualcpp@microsoft.com). Follow us on Twitter [@visualc](https://twitter.com/visualc) or BlueSky [@msftcpp.bsky.social](https://bsky.app/profile/msftcpp.bsky.social). @@ -273,6 +268,6 @@ If you encounter problems with MSVC in Visual Studio 2026, please let us know vi ## See also -[Microsoft C/C++ language conformance](visual-cpp-language-conformance.md) -[What's new for C++ in Visual Studio](what-s-new-for-visual-cpp-in-visual-studio.md) +[Microsoft C/C++ language conformance](visual-cpp-language-conformance.md)\ +[What's new for C++ in Visual Studio](what-s-new-for-visual-cpp-in-visual-studio.md)\ [C++ conformance improvements in Visual Studio 2022](cpp-conformance-improvements.md) \ No newline at end of file From 8c04d590ebf7cad65ba935cd8ce206dca1b8fdd7 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Mon, 3 Nov 2025 14:40:06 -0800 Subject: [PATCH 2037/2255] draft --- .../overview/msvc-conformance-improvements.md | 65 +++++++++---------- .../visual-cpp-language-conformance.md | 24 +++---- 2 files changed, 44 insertions(+), 45 deletions(-) diff --git a/docs/overview/msvc-conformance-improvements.md b/docs/overview/msvc-conformance-improvements.md index dd26387a8f2..17674b03f5d 100644 --- a/docs/overview/msvc-conformance-improvements.md +++ b/docs/overview/msvc-conformance-improvements.md @@ -7,9 +7,7 @@ ms.subservice: "cpp-lang" --- # C++ Conformance improvements, behavior changes, and bug fixes in Microsoft C/C++ (MSVC) -Microsoft C/C++ makes conformance improvements and bug fixes in every release. This article lists the significant improvements by MSVC Build Tools version. To jump directly to the changes for a specific version, use the **In this article** links at the top of this article. - -This document lists changes starting in November 2025 when Visual Studio and the MSVC toolset versioning diverged. +Microsoft C/C++ makes conformance improvements and bug fixes in every release. Starting with Visual Studio 2026 18.0, major improvements are organized by MSVC Build Tools version number. To jump directly to the changes for a specific version, use the **In this article** links at the top of this article. For changes in earlier versions of Visual Studio: @@ -22,18 +20,18 @@ For changes in earlier versions of Visual Studio: ## C++ conformance improvements, behavior changes, and bug fixes in MSVC Build Tools v14.50 -MSVC Build Tools v14.50 represents a significant advancement to the MSVC compiler, bringing substantial improvements in C++23 conformance, reliability, and correctness. The extensive bug fixes and enhancements make this release particularly valuable for large-scale C++ development projects. +MSVC Build Tools v14.50 introduces improvements to the MSVC compiler and Standard Library, including better C++23 standards conformance, enhanced reliability, and improved correctness. This release also includes numerous bug fixes and updates that benefit large-scale C++ development. This version shipped first with Visual Studio 2026 version 18.0 and includes version 19.50 of the MSVC compiler. -Key highlights include: -- Advanced C++23 feature support including `auto(x)` decay-copy and `#warning` directive -- Comprehensive `constexpr` improvements, particularly for virtual functions -- Major stability improvements for C++ modules -- Extensive reliability fixes reducing internal compiler errors -- Enhanced C++/CLI support for managed code scenarios -- The Microsoft C++ standard library (STL) no longer supports targeting Windows 7/Server 2008 R2, Windows 8/Server 2012, or Windows 8.1/Server 2012 R2.\ -- Windows 10/Server 2016 are the minimum supported operating systems.\ +Key highlights of this release include: +- Advanced C++23 feature support including `auto(x)` decay-copy and `#warning` directive. +- Comprehensive `constexpr` improvements, particularly for virtual functions. +- Major stability improvements for C++ modules. +- Extensive reliability fixes reducing internal compiler errors. +- Enhanced C++/CLI support for managed code scenarios. +- The Microsoft C++ standard library (MSVC STL) no longer supports targeting Windows 7/Server 2008 R2, Windows 8/Server 2012, or Windows 8.1/Server 2012 R2. +- Windows 10/Server 2016 are the minimum supported operating systems. For more information about performance improvements, bug fixes, and conformance updates in the Standard Library, see [STL Changelog](https://github.com/microsoft/STL/wiki/Changelog), which is updated regularly. @@ -45,10 +43,10 @@ MSVC Build Tools v14.50 adds support for several C++23 features, bringing the co [P0849R8](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p0849r8.html) introduces the `auto(x)` syntax for decay-copy operations directly in the language, providing a more concise way to express decay-copy semantics. -Prior to P0849R8, you needed to explicitly perform decay operations: +Before P0849R8, you needed to explicitly perform decay operations: ```cpp -// Prior to P0849R8: +// Before P0849R8: void pop_front_alike(auto& x) { using T = std::decay_t; @@ -73,7 +71,7 @@ This feature provides a standardized way to perform decay-copy operations, makin [P2437R1](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2437r1.pdf) implements the C++23 `#warning` preprocessor directive, providing a standard way to emit warnings during compilation. ```cpp -// Valid prior to C++23. +// Valid before C++23. #error bad configuration... // Valid after C++23. @@ -118,7 +116,7 @@ void g() } ``` -In C++20, and earlier, this code would have compiled because even though the type of `t` is `S&&` the use of `t` in `return t` is treated as a glvalue and so it can bind to the return type.\ +In C++20, and earlier, this code compiled because even though the type of `t` is `S&&` the use of `t` in `return t` is treated as a glvalue and so it can bind to the return type.\ With C++23, `t` is treated as an xvalue and so it can't bind to an lvalue reference.\ One fix is to change to the return type of the function from `T&` to `T&&` but this may affect code that calls this function. An alternative is to use the feature test macro that is associated with this change. For example: @@ -157,27 +155,27 @@ void check(int const (¶m)[3]) This improvement allows more code to be evaluated at compile time, particularly when dealing with function parameters in template contexts. -## Conformance Enhancements +## Conformance enhancements -Improved adherence to C++ standards: +Improved adherence to C++ standards includes better handling of attributes, templates, and C++20/C++23 features. -### Attribute Support +### Attribute support - Added support for [`[[maybe_unused]]` on labels](https://developercommunity.visualstudio.com/t/unreferenced-label-when-ref-hidden-by-if/102076). - Fixed warning C4102 (unreferenced label) when the only reference was from a discarded `if constexpr` branch. -### Template and Specialization Fixes +### Template and specialization fixes - [Diagnosed ill-formed friend explicit specializations](https://developercommunity.visualstudio.com/t/Defining-explicit-function-template-spec/10933841) that were incorrectly accepted in C++20 or later. -- Added `/Zc:enumEncoding` switch to [correctly encode enum non-type template parameters](https://developercommunity.visualstudio.com/t/Overload-resolution-fails-for-enum-non-t/10398088). +- Added `/Zc:enumEncoding` switch to [correctly encode enum nontype template parameters](https://developercommunity.visualstudio.com/t/Overload-resolution-fails-for-enum-non-t/10398088). - Fixed issues with [missing 'template' keyword diagnostics](https://developercommunity.visualstudio.com/t/No-diagnostic-for-missing-template-in-d/10501221) ### C++20 and C++23 Features - Enhanced [multidimensional operator[] support](https://developercommunity.visualstudio.com/t/Multidimensional-operator-with-Wall-r/10876026) -- Improved [concept and constraint evaluation](https://developercommunity.visualstudio.com/t/VS-1714-if-constexpr-requires--does/10905731)- +- Improved [concept and constraint evaluation](https://developercommunity.visualstudio.com/t/VS-1714-if-constexpr-requires--does/10905731) -### Smaller Conformance Updates +### Smaller conformance updates MSVC Build Tools v14.50 includes numerous smaller conformance improvements that enhance C++ standard compliance: @@ -196,15 +194,15 @@ MSVC Build Tools v14.50 includes numerous smaller conformance improvements that ## Bug fixes -Bug fixes for C++ Modules, `constexpr`, and other fixes were made in v14.50. +Bug fixes for C++ Modules, `constexpr`, and other fixes were made in MSVC v14.50. -For a detailed list of bug fixes, see [Compiler Improvements in v14.50](https://devblogs.microsoft.com/cppblog/c-language-updates-in-msvc-build-tools-v14-50/#compiler-improvements-in-v14.50) +For a detailed list of bug fixes, see [Compiler Improvements in v14.50](https://devblogs.microsoft.com/cppblog/c-language-updates-in-msvc-build-tools-v14-50/#compiler-improvements-in-v14.50). -**Encoding of certain non-type template arguments corrected** +**Encoding of certain nontype template arguments corrected** Affects `/stdc++20` or later. -Certain non-type pointer type template arguments involving sub-objects could lead to linking issues or in some cases silent bad code generation where what should be distinct specializations collide. +Certain nontype pointer type template arguments involving subobjects could lead to linking issues or in some cases silent bad code generation where what should be distinct specializations collide. ```cpp struct A @@ -236,33 +234,34 @@ With this fix, the two calls to `f` get distinct encodings, as required. When upgrading to MSVC Build Tools v14.50, consider the following potential breaking changes and migration guidance: -### C++23 Feature Adoption +### C++23 feature adoption - Update code to take advantage of new `auto(x)` decay-copy syntax for cleaner template code - Consider using `#warning` directives for deprecation notices instead of error-prone conditional compilation - Review explicit object parameter usage in operators for improved consistency -### `constexpr` Improvements +### `constexpr` improvements - Existing `constexpr` code may now compile that previously failed, particularly with virtual functions - Review constant evaluation code for potential new optimization opportunities - Update CRTP patterns that may now work correctly with static constexpr members -### Modules Migration +### Modules migration - Projects using C++20 modules should see improved stability and compatibility - Header units now work more reliably with large codebases like Unreal Engine 5 - Consider migrating from traditional headers to modules for better compilation performance -### Compiler Diagnostics +### Compiler diagnostics - New warnings may appear for previously undiagnosed issues - Review enum type usage if using `/Zc:enumTypes` - Update code that relies on implicit conversions that may now be flagged -### C Code Updates +### C code updates - C23 features are available with `/std:clatest` - `typeof` behavior changes may affect existing code - Review preprocessor usage for new `__VA_OPT__` availability +## Provide feedback -For the latest updates and to provide feedback, please visit the [Visual Studio Developer Community](https://developercommunity.visualstudio.com/) or contact the team at [visualcpp@microsoft.com](mailto:visualcpp@microsoft.com). Follow us on Twitter [@visualc](https://twitter.com/visualc) or BlueSky [@msftcpp.bsky.social](https://bsky.app/profile/msftcpp.bsky.social). +For the latest updates and to provide feedback, visit the [Visual Studio Developer Community](https://developercommunity.visualstudio.com/) or contact the team at [visualcpp@microsoft.com](mailto:visualcpp@microsoft.com). Follow us on Twitter [@visualc](https://twitter.com/visualc) or BlueSky [@msftcpp.bsky.social](https://bsky.app/profile/msftcpp.bsky.social). If you encounter problems with MSVC in Visual Studio 2026, please let us know via the [Report a Problem](how-to-report-a-problem-with-the-visual-cpp-toolset.md) option, either from the installer or the Visual Studio IDE itself. diff --git a/docs/overview/visual-cpp-language-conformance.md b/docs/overview/visual-cpp-language-conformance.md index 81b31336047..f77670f7701 100644 --- a/docs/overview/visual-cpp-language-conformance.md +++ b/docs/overview/visual-cpp-language-conformance.md @@ -197,7 +197,7 @@ For details on conformance improvements, see [C++ conformance improvements in Vi |  [`P2173R1 Attributes on Lambda-Expressions`](https://wg21.link/p2173r1) | no | |  [`P2186R2 Remove Garbage Collection Support`](https://wg21.link/p2186r2) | VS 2022 17.0 [23](#note_23) | |  [`P2201R1 Mixed string literal concatenation`](https://wg21.link/p2201r1) | no | -|  [`P2266R1 Simpler implicit move`](https://wg21.link/p2266r1) | VS 2026 18.0 [24](#note_24) | +|  [`P2266R1 Simpler implicit move`](https://wg21.link/p2266r1) | MSVC 14.50 [24](#note_24) | |  [`P2223R2 Trimming whitespaces before line splicing`](https://wg21.link/p2223r2) | no | |  [`P2242R3 Non-literal variables (and labels and gotos) in constexpr functions`](https://wg21.link/p2242r3) | no | |  [`P2246R1 Character encoding of diagnostic text`](https://wg21.link/p2246r1) | VS 2022 17.0 [23](#note_23) | @@ -477,22 +477,22 @@ A more detailed listing of Standard Library features and bug fixes by product ve |  [`P2166R1 Prohibit basic_string and basic_string_view from being constructed from nullptr`](https://wg21.link/P2166R1) | VS 2022 17.0 [23](#note_23), [R](#note_R) | |  [`P2186R2 Removed garbage collection support`](https://wg21.link/P2186R2) | VS 2022 17.0 [23](#note_23), [Q](#note_Q) | |  [`P2251R1 Require span And basic_string_view To Be Trivially Copyable`](https://wg21.link/p2251r1) | VS 2022 17.1 [23](#note_23) | -|  [`P2266R3 Simpler implicit move`](https://wg21.link/p2266r3) | MSVC 14.50 [23](#note_23) | +|  [`P2266R3 Simpler implicit move`](https://wg21.link/p2266r3) | MSVC 14.50 [24](#note_24) | |  [`P2273R3 constexpr unique_ptr`](https://wg21.link/p2273r3) | VS 2022 17.3 [23](#note_23) | -|  [`P2280R4 Using unknown pointers and references in constant expressions`](https://wg21.link/p2280r4) | MSVC 14.50 [23](#note_23) | -|  [`P2290R3 Delimited escape sequences`](https://wg21.link/p2290r3) | MSVC 14.50 [23](#note_23) | +|  [`P2280R4 Using unknown pointers and references in constant expressions`](https://wg21.link/p2280r4) | MSVC 14.50 [24](#note_24) | +|  [`P2290R3 Delimited escape sequences`](https://wg21.link/p2290r3) | MSVC 14.50 [24](#note_24) | |  [`P2291R3 constexpr Integral `](https://wg21.link/p2291r3) | VS 2022 17.4 [23](#note_23) | |  [`P2302R4 ranges::contains, ranges::contains_subrange`](https://wg21.link/p2302r4) | VS 2022 17.4 [23](#note_23) | |  [`P2321R2 std::zip`](https://wg21.link/p2321r2) | partial in VS 2022 17.5 [23](#note_23) | |  [`P2322R6 ranges::fold_left, ranges::fold_right, etc.`](https://wg21.link/p2322r6) | VS 2022 17.5 [23](#note_23) | -|  [`P2360R0 Extend init-statement to allow alias-declaration`](https://wg21.link/p2360r0) | MSVC 14.50 [23](#note_23) | +|  [`P2360R0 Extend init-statement to allow alias-declaration`](https://wg21.link/p2360r0) | MSVC 14.50 [24](#note_24) | |  [`P2387R3 Pipe Support For User-Defined Range Adaptors`](https://wg21.link/p2387r3) | VS 2022 17.4 [23](#note_23) | |  [`P2393R1 Cleaning Up Integer-Class Types`](https://wg21.link/p2393r1) | VS 2022 17.2 [23](#note_23) | |  [`P2401R0 Conditional noexcept For exchange()`](https://wg21.link/p2401r0) | VS 2022 17.1 [23](#note_23) | |  [`P2408R5 Ranges Iterators As Inputs To Non-Ranges Algorithms`](https://wg21.link/p2408r5) | VS 2022 17.4 [23](#note_23) | |  [`P2417R2 More constexpr bitset`](https://wg21.link/p2417r2) | VS 2022 17.4 [23](#note_23) | |  [`P2419R2 Clarify Handling Of Encodings In Localized Formatting Of chrono Types`](https://wg21.link/p2419r2) | VS 2022 17.4 [23](#note_23) | -|  [`P2437R1 Support for #warning`](https://wg21.link/p2437r1) | MSVC 14.50 [23](#note_23) | +|  [`P2437R1 Support for #warning`](https://wg21.link/p2437r1) | MSVC 14.50 [24](#note_24) | |  [`P2438R2 string::substr() &&`](https://wg21.link/p2438r2) | VS 2022 17.4 [23](#note_23) | |  [`P2440R1 ranges::iota, ranges::shift_left, ranges::shift_right`](https://wg21.link/p2440r1) | VS 2022 17.4 [23](#note_23) | |  [`P2441R2 views::join_with`](https://wg21.link/p2441r2) | VS 2022 17.4 [23](#note_23) | @@ -577,11 +577,11 @@ A group of papers listed together indicates a Standard feature along with one or **VS 2022 17.3** Supported in Visual Studio 2022 version 17.3.\ **VS 2022 17.4** Supported in Visual Studio 2022 version 17.4.\ **VS 2022 17.5** Supported in Visual Studio 2022 version 17.5.\ -**VS 2022 18** Supported in Visual Studio 2026 and beyond. +**MSVC 14.50** Supported in MSVC Compiler 14.50 and beyond. Support first shipped with Visual Studio 2026 18.0. ### Notes - **A** In [`/std:c++14`](../build/reference/std-specify-language-standard-version.md) mode, dynamic exception specifications remain unimplemented, and `throw()` is still treated as a synonym for `__declspec(nothrow)`. In C++17, dynamic exception specifications were mostly removed by P0003R5, except for one vestige: `throw()` is deprecated and required to behave as a synonym for **`noexcept`**. In [`/std:c++17`](../build/reference/std-specify-language-standard-version.md) mode, MSVC now conforms to the Standard by giving `throw()` the same behavior as **`noexcept`**, that is, enforcement via termination. + **A** In [`/std:c++14`](../build/reference/std-specify-language-standard-version.md) mode, the compiler leaves dynamic exception specifications unimplemented, and treats `throw()` as a synonym for `__declspec(nothrow)`. In C++17, P0003R5 removed most dynamic exception specifications, except for one vestige: the standard deprecated `throw()` and requires it to behave as a synonym for **`noexcept`**. In [`/std:c++17`](../build/reference/std-specify-language-standard-version.md) mode, MSVC now conforms to the Standard by giving `throw()` the same behavior as **`noexcept`**, that is, enforcement via termination. The compiler option [`/Zc:noexceptTypes`](../build/reference/zc-noexcepttypes.md) requests the old behavior of `__declspec(nothrow)`. It's likely that `throw()` will be removed in a future version of C++. To help with migrating code in response to these changes in the Standard and the Microsoft implementation, new compiler warnings for exception specification issues are added under [`/std:c++17`](../build/reference/std-specify-language-standard-version.md) and [`/permissive-`](../build/reference/permissive-standards-conformance.md). @@ -595,7 +595,7 @@ The compiler option [`/Zc:noexceptTypes`](../build/reference/zc-noexcepttypes.md **F** Features removed when the [`/std:c++17`](../build/reference/std-specify-language-standard-version.md) or later compiler option is specified. To re-enable these features (to ease the transition to newer language modes), use these macros: `_HAS_AUTO_PTR_ETC`, `_HAS_FUNCTION_ALLOCATOR_SUPPORT`, `_HAS_OLD_IOSTREAMS_MEMBERS`, and `_HAS_UNEXPECTED`. - **G** C++17's parallel algorithms library is complete. Complete doesn't mean that every algorithm is parallelized in every case. The most important algorithms have been parallelized. Execution policy signatures are provided even where the implementation doesn't parallelize algorithms. The central internal header, ``, contains the following "Parallel Algorithms Notes": C++ allows an implementation to implement parallel algorithms as calls to the serial algorithms. This implementation parallelizes several common algorithm calls, but not all. + **G** C++17's parallel algorithms library is complete. Complete doesn't mean that every algorithm is parallelized in every case. The most important algorithms are parallelized. Execution policy signatures are provided even where the implementation doesn't parallelize algorithms. The central internal header, ``, contains the following "Parallel Algorithms Notes": C++ allows an implementation to implement parallel algorithms as calls to the serial algorithms. This implementation parallelizes several common algorithm calls, but not all. The following algorithms are parallelized: @@ -609,7 +609,7 @@ These algorithms aren't presently parallelized: - `generate`, `generate_n` - Effective parallelism of these algorithms might be infeasible: - `partial_sort`, `partial_sort_copy` -- These algorithms haven't been evaluated yet. The library might implement parallelism in a future release: +- These algorithms aren't evaluated yet. The library might implement parallelism in a future release: - `copy_if`, `includes`, `inplace_merge`, `lexicographical_compare`, `max_element`, `merge`, `min_element`, `minmax_element`, `nth_element`, `partition_copy`, `remove_copy`, `remove_copy_if`, `replace_copy`, `replace_copy_if`, `set_symmetric_difference`, `set_union`, `stable_partition`, `unique`, `unique_copy` **H** This is a wholly new implementation, incompatible with the previous `std::experimental` version, made necessary by symlink support, bug fixes, and changes in standard-required behavior. Currently, `` provides both the new `std::filesystem` and the previous `std::experimental::filesystem`. The `` header provides only the old experimental implementation. Expect removal of the experimental implementation in the next ABI-breaking release of the libraries. @@ -620,7 +620,7 @@ These algorithms aren't presently parallelized: **K** MSVC doesn't support the `_Complex` keyword or native complex types. The Universal CRT `` uses implementation-specific macros to achieve the same effect. For more information, see [C complex math support](../c-runtime-library/complex-math-support.md). - **L** The Universal CRT doesn't implement the `strftime` `E` and `O` alternative conversion modifiers. These modifiers are ignored (for example, `%Oe` behaves the same as `%e`). The modifiers aren't supported by the underlying locale APIs. + **L** The Universal CRT doesn't implement the `strftime` `E` and `O` alternative conversion modifiers. These modifiers are ignored (for example, `%Oe` behaves the same as `%e`). The underlying locale APIs don’t support the modifiers. **M** The Universal CRT doesn't implement C11 `aligned_alloc`, but does provide [`_aligned_malloc`](../c-runtime-library/reference/aligned-malloc.md) and [`_aligned_free`](../c-runtime-library/reference/aligned-free.md). Because the Windows operating system doesn't support aligned allocations, this function is unlikely to be implemented. @@ -648,7 +648,7 @@ These algorithms aren't presently parallelized: **23** In Visual Studio 2022 version 17.0 and up, these features are enabled by the [`/std:c++latest`](../build/reference/std-specify-language-standard-version.md) compiler option. - **24** In Visual Studio 2026 version 18.0 and up, these features are enabled by the [`/std:c++latest`](../build/reference/std-specify-language-standard-version.md) compiler option. + **24** In MSVC 14.50 and up, first shipped with Visual Studio 2026 version 18.0, these features are enabled by the [`/std:c++latest`](../build/reference/std-specify-language-standard-version.md) compiler option. **C11** Compiler support for C11 and C17 requires Visual Studio 2019 version 16.8 or higher. Except as noted, C11 and C17 library support requires Windows SDK build 10.0.20211.0 or higher. For more information on how to install support for C11 and C17, see [Install C11 and C17 support in Visual Studio](./install-c17-support.md). From a3a60abeefdd2d72c55e14b5479c750924acf389 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 3 Nov 2025 15:14:46 -0800 Subject: [PATCH 2038/2255] Apply suggestion from @AugP Co-authored-by: Augustin Popa --- docs/overview/msvc-conformance-improvements.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/msvc-conformance-improvements.md b/docs/overview/msvc-conformance-improvements.md index 17674b03f5d..6037985b986 100644 --- a/docs/overview/msvc-conformance-improvements.md +++ b/docs/overview/msvc-conformance-improvements.md @@ -33,7 +33,7 @@ Key highlights of this release include: - The Microsoft C++ standard library (MSVC STL) no longer supports targeting Windows 7/Server 2008 R2, Windows 8/Server 2012, or Windows 8.1/Server 2012 R2. - Windows 10/Server 2016 are the minimum supported operating systems. -For more information about performance improvements, bug fixes, and conformance updates in the Standard Library, see [STL Changelog](https://github.com/microsoft/STL/wiki/Changelog), which is updated regularly. +For more information about performance improvements, bug fixes, and conformance updates in the standard library, see [STL Changelog](https://github.com/microsoft/STL/wiki/Changelog), which is updated regularly. ## C++23 Features From c31e6c3b676f70db4170d9dcf53f5935cfff1b60 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 3 Nov 2025 15:14:59 -0800 Subject: [PATCH 2039/2255] Apply suggestion from @AugP Co-authored-by: Augustin Popa --- docs/overview/msvc-conformance-improvements.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/msvc-conformance-improvements.md b/docs/overview/msvc-conformance-improvements.md index 6037985b986..939869b1086 100644 --- a/docs/overview/msvc-conformance-improvements.md +++ b/docs/overview/msvc-conformance-improvements.md @@ -7,7 +7,7 @@ ms.subservice: "cpp-lang" --- # C++ Conformance improvements, behavior changes, and bug fixes in Microsoft C/C++ (MSVC) -Microsoft C/C++ makes conformance improvements and bug fixes in every release. Starting with Visual Studio 2026 18.0, major improvements are organized by MSVC Build Tools version number. To jump directly to the changes for a specific version, use the **In this article** links at the top of this article. +Microsoft C++ (MSVC) Build Tools makes conformance improvements and bug fixes in every release. Starting with Visual Studio 2026 version 18.0, major improvements are organized by MSVC Build Tools version number. To jump directly to the changes for a specific version, use the **In this article** links at the top of this article. For changes in earlier versions of Visual Studio: From a5347dc169ce4e9cbb108e1e3df2b9cc8b065fc4 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 3 Nov 2025 15:15:13 -0800 Subject: [PATCH 2040/2255] Apply suggestion from @AugP Co-authored-by: Augustin Popa --- docs/overview/msvc-conformance-improvements.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/msvc-conformance-improvements.md b/docs/overview/msvc-conformance-improvements.md index 939869b1086..034fa1f1023 100644 --- a/docs/overview/msvc-conformance-improvements.md +++ b/docs/overview/msvc-conformance-improvements.md @@ -5,7 +5,7 @@ ms.date: 11/03/2025 ms.service: "visual-cpp" ms.subservice: "cpp-lang" --- -# C++ Conformance improvements, behavior changes, and bug fixes in Microsoft C/C++ (MSVC) +# C/C++ Conformance improvements, behavior changes, and bug fixes in Microsoft C++ (MSVC) Build Tools Microsoft C++ (MSVC) Build Tools makes conformance improvements and bug fixes in every release. Starting with Visual Studio 2026 version 18.0, major improvements are organized by MSVC Build Tools version number. To jump directly to the changes for a specific version, use the **In this article** links at the top of this article. From b9186bcd045d2f6ae35f8cb55666675816b73f12 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 3 Nov 2025 15:15:25 -0800 Subject: [PATCH 2041/2255] Apply suggestion from @AugP Co-authored-by: Augustin Popa --- docs/overview/msvc-conformance-improvements.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/msvc-conformance-improvements.md b/docs/overview/msvc-conformance-improvements.md index 034fa1f1023..295271f5020 100644 --- a/docs/overview/msvc-conformance-improvements.md +++ b/docs/overview/msvc-conformance-improvements.md @@ -1,5 +1,5 @@ --- -title: "C++ conformance improvements in Microsoft C/C++ (MSVC)" +title: "C/C++ conformance improvements in Microsoft C++ (MSVC) Build Tools" description: "Summary of conformance improvements in Microsoft C/C++ (MSVC)" ms.date: 11/03/2025 ms.service: "visual-cpp" From e40fba6ab7dc1be1820090c27ad82f8042cf2d0c Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 3 Nov 2025 15:15:38 -0800 Subject: [PATCH 2042/2255] Apply suggestion from @AugP Co-authored-by: Augustin Popa --- docs/overview/msvc-conformance-improvements.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/msvc-conformance-improvements.md b/docs/overview/msvc-conformance-improvements.md index 295271f5020..b9445b5ea91 100644 --- a/docs/overview/msvc-conformance-improvements.md +++ b/docs/overview/msvc-conformance-improvements.md @@ -20,7 +20,7 @@ For changes in earlier versions of Visual Studio: ## C++ conformance improvements, behavior changes, and bug fixes in MSVC Build Tools v14.50 -MSVC Build Tools v14.50 introduces improvements to the MSVC compiler and Standard Library, including better C++23 standards conformance, enhanced reliability, and improved correctness. This release also includes numerous bug fixes and updates that benefit large-scale C++ development. +MSVC Build Tools v14.50 introduces improvements to the MSVC compiler and standard library, including better C++23 standards conformance, enhanced reliability, and improved correctness. This release also includes numerous bug fixes and updates that benefit large-scale C++ development. This version shipped first with Visual Studio 2026 version 18.0 and includes version 19.50 of the MSVC compiler. From aef34336c6e34e49133c41f1b597edbe14ef0e81 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 3 Nov 2025 15:15:48 -0800 Subject: [PATCH 2043/2255] Apply suggestion from @AugP Co-authored-by: Augustin Popa --- docs/overview/toc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/toc.yml b/docs/overview/toc.yml index e302eaf22c4..a8036cb6331 100644 --- a/docs/overview/toc.yml +++ b/docs/overview/toc.yml @@ -12,7 +12,7 @@ items: href: ../overview/what-s-new-for-cpp-2019.md - name: What's new for C++ in Visual Studio 2017 href: ../overview/what-s-new-for-cpp-2017.md - - name: C++ Conformance improvements in Microsoft C/C++ (MSVC) + - name: C/C++ conformance improvements in Microsoft C++ (MSVC) Build Tools href: ../overview/msvc-conformance-improvements.md - name: C++ conformance improvements in Visual Studio 2022 href: ../overview/cpp-conformance-improvements.md From 1ffdd95d2fa659acf1cab706f81756bb2d98e853 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Mon, 3 Nov 2025 17:58:36 -0800 Subject: [PATCH 2044/2255] draft --- .../media/clang-tidy-improvements.png | Bin 0 -> 96485 bytes .../media/inline-post-return-value.png | Bin 0 -> 5098 bytes docs/overview/toc.yml | 2 + docs/overview/what-s-new-for-msvc.md | 56 ++++++++++++++++++ ...t-s-new-for-visual-cpp-in-visual-studio.md | 12 +++- 5 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 docs/overview/media/clang-tidy-improvements.png create mode 100644 docs/overview/media/inline-post-return-value.png create mode 100644 docs/overview/what-s-new-for-msvc.md diff --git a/docs/overview/media/clang-tidy-improvements.png b/docs/overview/media/clang-tidy-improvements.png new file mode 100644 index 0000000000000000000000000000000000000000..fe999aa53607e891cdbe470af1bf2e8b64061bf9 GIT binary patch literal 96485 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 Code Analysis > Clang-Tidy**. ![Screenshot of Project Properties dialog showing clang-tidy configuration options including processor allocation and custom command line arguments.](./media/clang-tidy-improvements.png) +- Inline post-return values: The Visual Studio debugger now shows the actual return values of functions. This provides real-time visibility into function behavior without stepping into code or setting up watches, making it faster to catch logic issues or unexpected results. ![Screenshot showing inline post-return values displayed in the debugger next to function call."](./media/inline-post-return-value.png) + + +## Feedback and suggestions + +We'd love to hear from you! You can [Report a Problem or Suggest a Feature](/visualstudio/ide/how-to-report-a-problem-with-visual-studio) by using the Send Feedback icon in the upper right-hand corner of either the installer or the Visual Studio IDE, or from **Help** > **Send Feedback**. You can track your issues by using [Visual Studio Developer Community](https://developercommunity.visualstudio.com/), where you add comments or find solutions. You can also get free installation help through our [Live Chat support](https://visualstudio.microsoft.com/vs/support/#talktous). + +## Blogs + +Take advantage of the insights and recommendations available in the [Microsoft Developer Blogs](https://devblogs.microsoft.com/) site to stay up to date on all new releases. The blogs include deep dive posts on a broad range of features. The [C++ Team Blog](https://devblogs.microsoft.com/cppblog) and the [Visual Studio Blog](https://devblogs.microsoft.com/visualstudio) are of particular interest. \ No newline at end of file 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 4f546d1d8c0..bc91e056b54 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,14 +1,22 @@ --- 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: 05/13/2025 +ms.date: 11/03/2025 ms.service: "visual-cpp" ms.subservice: "ide" ms.custom: intro-whats-new ai-usage: ai-assisted --- -# What's new for C++ in Visual Studio 2022 +# What's new for C++ in Visual Studio + +Microsoft C++ Build Tools (MSVC Build Tools) versioning is no longer synchronized with Visual Studio versioning starting with Visual Studio 2026 version 18.0 and Microsoft C++ Build Tools version 14.50. For the latest updates to MSVC, see [What's new for MSVC](/cpp/overview/what-s-new-for-msvc.md). + +## What's new for C++ in Visual Studio 2026 + +VS 2026 18.0 and later no longer support targeting Windows 7/8/8.1 or Windows Server 2008 R2/2012/2012 R2, which have stopped receiving security updates. + +## What's new for C++ in Visual Studio 2022 Visual Studio 2022 brings many updates and fixes to the Microsoft C++ compiler and tools. The Visual Studio IDE also offers significant improvements in performance and productivity, and now runs natively as a 64-bit application. From 9411f01110d4cf1deefd42dedf74a8eb9998dc09 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Mon, 3 Nov 2025 19:34:09 -0800 Subject: [PATCH 2045/2255] draft --- ...t-a-problem-with-the-visual-cpp-toolset.md | 2 +- .../media/cpp-preprocess-menu-entry.png | Bin 0 -> 18018 bytes docs/overview/what-s-new-for-msvc.md | 29 ++++++++++-------- 3 files changed, 18 insertions(+), 13 deletions(-) create mode 100644 docs/overview/media/cpp-preprocess-menu-entry.png diff --git a/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md b/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md index 813d310ea09..8148e7c834b 100644 --- a/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md +++ b/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md @@ -3,7 +3,7 @@ title: "How to report a problem with the Microsoft C++ Build Tools" description: How to create a good problem report and repro information for the Microsoft C++ toolset. ms.date: "09/24/2019" ms.service: "visual-cpp" -ms.subservice: "ide" +ms.subservice: "cpp-lang" author: "tylermsft" ms.author: "twhitney" --- diff --git a/docs/overview/media/cpp-preprocess-menu-entry.png b/docs/overview/media/cpp-preprocess-menu-entry.png new file mode 100644 index 0000000000000000000000000000000000000000..59f45d3bc6a28fa0165a4776d1533806934b1b28 GIT binary patch literal 18018 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 literal 0 HcmV?d00001 diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md index 46580f85556..5208f15459b 100644 --- a/docs/overview/what-s-new-for-msvc.md +++ b/docs/overview/what-s-new-for-msvc.md @@ -3,7 +3,7 @@ title: "What's new for MSVC" description: "The new features and fixes in the Microsoft C/C++ compiler and tools (MSVC)." ms.date: 11/03/2025 ms.service: "visual-cpp" -ms.subservice: "compiler" +ms.subservice: "cpp-lang" ms.custom: intro-whats-new --- @@ -31,19 +31,24 @@ A quick highlight of some of the new features: With this release, the Build Tools no longer target: - Windows 7 / Windows Server 2008 R2 - Windows 8 / Windows Server 2012 - Windows 8.1 / Windows Server 2012 R2 + - Windows 7 / Windows Server 2008 R2 + - Windows 8 / Windows Server 2012 + - Windows 8.1 / Windows Server 2012 R2 To build applications using the latest C++ tools, your target platform must be Windows 10 or Windows Server 2016 (or later). These changes allow for better performance, enhanced security, and alignment with the most recent Windows platform capabilities. -- Notices of removals for C++AMP, ARM32 toolchain, and `/DEBUG:FASTLINK` and the deprecation of `/await`: - The deprecations and removal of C++ feature support impact developers using C++AMP, ARM32-targeting MSVC build tools, and the `/DEBUG:FASTLINK` linker option. - If you're using `/DEBUG:FASTLINK`, switch to `/DEBUG:FULL` for improved debugging support. - To target ARM32, continue using the Visual Studio 2022 v143 build tools. For more information, see [Side-by-side Minor Version MSVC Toolsets in Visual Studio 2019](https://devblogs.microsoft.com/cppblog/side-by-side-minor-version-msvc-toolsets-in-visual-studio-2019/). - - Moreover, the /await switch is deprecated and will be removed in a future release. Developers are encouraged to use Standard C++ coroutines, available by default in C++20 or later. For projects in earlier language modes, consider using /await:strict to maintain compatibility until the switch is removed. - - Better AI code completions for C++. GitHub Copilot uses context from relevant files to improve inline autocomplete for C++. We've updated GitHub Copilot to include other relevant files as context. This reduces hallucinations while offering more relevant and accurate suggestions. It's aligned with the current GitHub Copilot experience for C++ in VS Code. - - Clang-Tidy code analysis improvements supercharge your C++ code analysis with enhanced configuration options for faster builds and custom workflows. Code analysis has new configuration options. You can now allocate more processors to run code analysis as part of your build, speeding up your development workflow. Plus, you can add custom arguments to the command line used to invoke `clang-tidy`, giving you complete control over your analysis setup. Access these powerful new options from **Project Properties > Code Analysis > Clang-Tidy**. ![Screenshot of Project Properties dialog showing clang-tidy configuration options including processor allocation and custom command line arguments.](./media/clang-tidy-improvements.png) + +- C++20 is the default for new Console App, Windows Desktop Application, Dynamic-Link Library, and Static Library C++ projects. +- Easily set debugger command line arguments for any C++ project using the toolbar for `.vcxproj`, CMake, and Unreal Engine projects. This feature is no longer tied to the Game Development with C++ workload, and is available to all C++ developers without needing to install any additional workloads or components. For more information, see [Pass command-line arguments](/visualstudio/debugger/getting-started-with-the-debugger-cpp?view=visualstudio). +- C++ Standard Library + - addressed several issues, enhancing both reliability and speed. [LWG-2503](https://cplusplus.github.io/LWG/issue2503) multiline option should be added to `syntax_option_type`. This is a `regex` behavioral change. By default, `_REGEX_LEGACY_MULTILINE_MODE` is 0, which requests Standard behavior. Set `_REGEX_LEGACY_MULTILINE_MODE` to 1 to request legacy behavior. For more information, see [STL Changelog](https://github.com/microsoft/STL/wiki/Changelog#msvc-build-tools-1450-insiders). +- Generate preprocessed output for any C++ file. In Visual Studio, right-click a C++ file to instantly generate its preprocessed output, making it easy to debug macros and includes, and see errors immediately. ![Screenshot showing the right-click context menu for a C++ file with the Preprocess option highlighted.](./media/cpp-preprocess-menu-entry.png) +- In the Visual Studio installer, the C++ Linux workload is renamed to 'Linux, Mac, and embedded development with C++'. +- The following have been removed: C++AMP, ARM32 toolchain, and `/DEBUG:FASTLINK`. + - If you use `/DEBUG:FASTLINK`, switch to `/DEBUG:FULL` for improved debugging support. + - To target ARM32, continue using the Visual Studio 2022 v143 build tools. For more information, see [Side-by-side Minor Version MSVC Toolsets in Visual Studio 2019](https://devblogs.microsoft.com/cppblog/side-by-side-minor-version-msvc-toolsets-in-visual-studio-2019/). +- The `/await` switch is deprecated and will be removed in a future release. Use Standard C++ coroutines, available by default in C++20 or later. For projects in earlier language modes, consider using `/await:strict` to maintain compatibility until the switch is removed. +- Better AI code completions for C++. GitHub Copilot uses context from relevant files to improve inline autocomplete for C++. We've updated GitHub Copilot to include other relevant files as context. This reduces hallucinations while offering more relevant and accurate suggestions. It's aligned with the current GitHub Copilot experience for C++ in VS Code. +- Clang-Tidy code analysis improvements supercharge your C++ code analysis with enhanced configuration options for faster builds and custom workflows. Code analysis has new configuration options: You can now allocate more processors to run code analysis as part of your build, speeding up your development workflow. Plus, you can add custom arguments to the command line used to invoke `clang-tidy`, giving you complete control over your analysis setup. Access these powerful new options from **Project Properties** > **Code Analysis** > **Clang-Tidy**: ![Screenshot of Project Properties dialog showing clang-tidy configuration options including processor allocation and custom command line arguments](./media/clang-tidy-improvements.png). - Inline post-return values: The Visual Studio debugger now shows the actual return values of functions. This provides real-time visibility into function behavior without stepping into code or setting up watches, making it faster to catch logic issues or unexpected results. ![Screenshot showing inline post-return values displayed in the debugger next to function call."](./media/inline-post-return-value.png) From 78cbfeda249618aec4d321499ada273f1e37cf02 Mon Sep 17 00:00:00 2001 From: Mahmoud Saleh <12202790+MahmoudGSaleh@users.noreply.github.com> Date: Tue, 4 Nov 2025 09:58:42 -0800 Subject: [PATCH 2046/2255] Update docs/windows/latest-supported-vc-redist.md Co-authored-by: Augustin Popa --- docs/windows/latest-supported-vc-redist.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index cf273a8b073..67d25d2f0f0 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -36,7 +36,7 @@ To find the download you need, choose your version of Visual Studio from the tab Redistribution is permitted only for licensed Visual Studio users, as described in the [Visual Studio license terms](https://visualstudio.microsoft.com/license-terms/). For details on redistributing Visual C++ files, see [Redistributing Visual C++ Files](redistributing-visual-cpp-files.md). -A Visual C++ Redistributable installs Microsoft C and C++ (MSVC) runtime libraries. Many applications built using Microsoft C and C++ (MSVC) build tools require these libraries. If your app is built using those libraries, a Microsoft Visual C++ Redistributable package at least as recent as the MSVC build toolset used to build your app must be installed on the target system along with the app. The Redistributable package architecture must match your app's target architecture (you can't install an ARM64 redistributable on an x86 system, or an x64 redistributable on an x86 system, for example). We recommend you use the latest Redistributable available for your version of Visual Studio. +A Visual C++ Redistributable installs Microsoft C and C++ runtime libraries. Many applications built using Microsoft C++ (MSVC) Build Tools require these libraries. If your app is built using those libraries, a Microsoft Visual C++ Redistributable package at least as recent as the build tools used to build your app must be installed on the target system along with the app. The Redistributable package architecture must match your app's target architecture (you can't install an ARM64 redistributable on an x86 system, or an x64 redistributable on an x86 system, for example). We recommend you use the latest Redistributable available for your version of Visual Studio. ## Visual C++ Redistributable v14 From f51928bbcd32dfd12f9cc858193fe89e76269593 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 4 Nov 2025 10:49:57 -0800 Subject: [PATCH 2047/2255] tech review --- docs/overview/msvc-conformance-improvements.md | 10 +++++----- docs/overview/visual-cpp-language-conformance.md | 16 +++++++--------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/docs/overview/msvc-conformance-improvements.md b/docs/overview/msvc-conformance-improvements.md index b9445b5ea91..3957ac7e613 100644 --- a/docs/overview/msvc-conformance-improvements.md +++ b/docs/overview/msvc-conformance-improvements.md @@ -172,7 +172,7 @@ Improved adherence to C++ standards includes better handling of attributes, temp ### C++20 and C++23 Features -- Enhanced [multidimensional operator[] support](https://developercommunity.visualstudio.com/t/Multidimensional-operator-with-Wall-r/10876026) +- Enhanced [multidimensional `operator[]` support](https://developercommunity.visualstudio.com/t/Multidimensional-operator-with-Wall-r/10876026) - Improved [concept and constraint evaluation](https://developercommunity.visualstudio.com/t/VS-1714-if-constexpr-requires--does/10905731) ### Smaller conformance updates @@ -186,7 +186,7 @@ MSVC Build Tools v14.50 includes numerous smaller conformance improvements that - [CWG2507](https://cplusplus.github.io/CWG/issues/2507): Default arguments for `operator[]` support - [CWG2585](https://cplusplus.github.io/CWG/issues/2585): Behavior alignment with standard requirements - [CWG2521](https://cplusplus.github.io/CWG/issues/2521): Deprecation of 'operator string-literal identifier' -- [CWG2528](https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#2528): Relaxed conversion rules for the spaceship operator +- [CWG2528](https://cplusplus.github.io/CWG/issues/2528): Relaxed conversion rules for the spaceship operator - [P2360R0](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2360r0.html): Extended init-statement definition to allow alias-declarations - [P2290R3](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2290r3.pdf): C++23 hexadecimal/octal delimited escape sequence support in string literals - [P2797R0](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2797r0.html): Resolution for CWG2692 regarding static and explicit object member functions with the same parameter-type-lists @@ -194,13 +194,13 @@ MSVC Build Tools v14.50 includes numerous smaller conformance improvements that ## Bug fixes -Bug fixes for C++ Modules, `constexpr`, and other fixes were made in MSVC v14.50. +Bug fixes for C++ Modules, `constexpr`, and other fixes were made in MSVC Build Tools v14.50. For a detailed list of bug fixes, see [Compiler Improvements in v14.50](https://devblogs.microsoft.com/cppblog/c-language-updates-in-msvc-build-tools-v14-50/#compiler-improvements-in-v14.50). **Encoding of certain nontype template arguments corrected** -Affects `/stdc++20` or later. +Affects `/std:c++20` or later. Certain nontype pointer type template arguments involving subobjects could lead to linking issues or in some cases silent bad code generation where what should be distinct specializations collide. @@ -261,7 +261,7 @@ When upgrading to MSVC Build Tools v14.50, consider the following potential brea ## Provide feedback -For the latest updates and to provide feedback, visit the [Visual Studio Developer Community](https://developercommunity.visualstudio.com/) or contact the team at [visualcpp@microsoft.com](mailto:visualcpp@microsoft.com). Follow us on Twitter [@visualc](https://twitter.com/visualc) or BlueSky [@msftcpp.bsky.social](https://bsky.app/profile/msftcpp.bsky.social). +For the latest updates and to provide feedback, visit the [Visual Studio Developer Community](https://developercommunity.visualstudio.com/) or contact the team at [visualcpp@microsoft.com](mailto:visualcpp@microsoft.com). Follow us on X [@visualc](https://x.com/visualc) or BlueSky [@msftcpp.bsky.social](https://bsky.app/profile/msftcpp.bsky.social). If you encounter problems with MSVC in Visual Studio 2026, please let us know via the [Report a Problem](how-to-report-a-problem-with-the-visual-cpp-toolset.md) option, either from the installer or the Visual Studio IDE itself. diff --git a/docs/overview/visual-cpp-language-conformance.md b/docs/overview/visual-cpp-language-conformance.md index f77670f7701..5d3bdc12511 100644 --- a/docs/overview/visual-cpp-language-conformance.md +++ b/docs/overview/visual-cpp-language-conformance.md @@ -197,11 +197,9 @@ For details on conformance improvements, see [C++ conformance improvements in Vi |  [`P2173R1 Attributes on Lambda-Expressions`](https://wg21.link/p2173r1) | no | |  [`P2186R2 Remove Garbage Collection Support`](https://wg21.link/p2186r2) | VS 2022 17.0 [23](#note_23) | |  [`P2201R1 Mixed string literal concatenation`](https://wg21.link/p2201r1) | no | -|  [`P2266R1 Simpler implicit move`](https://wg21.link/p2266r1) | MSVC 14.50 [24](#note_24) | |  [`P2223R2 Trimming whitespaces before line splicing`](https://wg21.link/p2223r2) | no | |  [`P2242R3 Non-literal variables (and labels and gotos) in constexpr functions`](https://wg21.link/p2242r3) | no | |  [`P2246R1 Character encoding of diagnostic text`](https://wg21.link/p2246r1) | VS 2022 17.0 [23](#note_23) | -|  [`P2266R3 Simpler implicit move`](https://wg21.link/p2266r3) | no | |  [`P2280R4 Using unknown pointers and references in constant expressions`](https://wg21.link/p2280r4) | no | |  [`P2290R3 Delimited escape sequences`](https://wg21.link/p2290r3) | no | |  [`P2295R6 Support for UTF-8 as a portable source file encoding`](https://wg21.link/p2295r6) | no | @@ -477,22 +475,22 @@ A more detailed listing of Standard Library features and bug fixes by product ve |  [`P2166R1 Prohibit basic_string and basic_string_view from being constructed from nullptr`](https://wg21.link/P2166R1) | VS 2022 17.0 [23](#note_23), [R](#note_R) | |  [`P2186R2 Removed garbage collection support`](https://wg21.link/P2186R2) | VS 2022 17.0 [23](#note_23), [Q](#note_Q) | |  [`P2251R1 Require span And basic_string_view To Be Trivially Copyable`](https://wg21.link/p2251r1) | VS 2022 17.1 [23](#note_23) | -|  [`P2266R3 Simpler implicit move`](https://wg21.link/p2266r3) | MSVC 14.50 [24](#note_24) | +|  [`P2266R3 Simpler implicit move`](https://wg21.link/p2266r3) | MSVC 19.50 [24](#note_24) | |  [`P2273R3 constexpr unique_ptr`](https://wg21.link/p2273r3) | VS 2022 17.3 [23](#note_23) | -|  [`P2280R4 Using unknown pointers and references in constant expressions`](https://wg21.link/p2280r4) | MSVC 14.50 [24](#note_24) | -|  [`P2290R3 Delimited escape sequences`](https://wg21.link/p2290r3) | MSVC 14.50 [24](#note_24) | +|  [`P2280R4 Using unknown pointers and references in constant expressions`](https://wg21.link/p2280r4) | MSVC 19.50 [24](#note_24) | +|  [`P2290R3 Delimited escape sequences`](https://wg21.link/p2290r3) | MSVC 19.50 [24](#note_24) | |  [`P2291R3 constexpr Integral `](https://wg21.link/p2291r3) | VS 2022 17.4 [23](#note_23) | |  [`P2302R4 ranges::contains, ranges::contains_subrange`](https://wg21.link/p2302r4) | VS 2022 17.4 [23](#note_23) | |  [`P2321R2 std::zip`](https://wg21.link/p2321r2) | partial in VS 2022 17.5 [23](#note_23) | |  [`P2322R6 ranges::fold_left, ranges::fold_right, etc.`](https://wg21.link/p2322r6) | VS 2022 17.5 [23](#note_23) | -|  [`P2360R0 Extend init-statement to allow alias-declaration`](https://wg21.link/p2360r0) | MSVC 14.50 [24](#note_24) | +|  [`P2360R0 Extend init-statement to allow alias-declaration`](https://wg21.link/p2360r0) | MSVC 19.50 [24](#note_24) | |  [`P2387R3 Pipe Support For User-Defined Range Adaptors`](https://wg21.link/p2387r3) | VS 2022 17.4 [23](#note_23) | |  [`P2393R1 Cleaning Up Integer-Class Types`](https://wg21.link/p2393r1) | VS 2022 17.2 [23](#note_23) | |  [`P2401R0 Conditional noexcept For exchange()`](https://wg21.link/p2401r0) | VS 2022 17.1 [23](#note_23) | |  [`P2408R5 Ranges Iterators As Inputs To Non-Ranges Algorithms`](https://wg21.link/p2408r5) | VS 2022 17.4 [23](#note_23) | |  [`P2417R2 More constexpr bitset`](https://wg21.link/p2417r2) | VS 2022 17.4 [23](#note_23) | |  [`P2419R2 Clarify Handling Of Encodings In Localized Formatting Of chrono Types`](https://wg21.link/p2419r2) | VS 2022 17.4 [23](#note_23) | -|  [`P2437R1 Support for #warning`](https://wg21.link/p2437r1) | MSVC 14.50 [24](#note_24) | +|  [`P2437R1 Support for #warning`](https://wg21.link/p2437r1) | MSVC 19.50 [24](#note_24) | |  [`P2438R2 string::substr() &&`](https://wg21.link/p2438r2) | VS 2022 17.4 [23](#note_23) | |  [`P2440R1 ranges::iota, ranges::shift_left, ranges::shift_right`](https://wg21.link/p2440r1) | VS 2022 17.4 [23](#note_23) | |  [`P2441R2 views::join_with`](https://wg21.link/p2441r2) | VS 2022 17.4 [23](#note_23) | @@ -577,7 +575,7 @@ A group of papers listed together indicates a Standard feature along with one or **VS 2022 17.3** Supported in Visual Studio 2022 version 17.3.\ **VS 2022 17.4** Supported in Visual Studio 2022 version 17.4.\ **VS 2022 17.5** Supported in Visual Studio 2022 version 17.5.\ -**MSVC 14.50** Supported in MSVC Compiler 14.50 and beyond. Support first shipped with Visual Studio 2026 18.0. +**MSVC 19.50** Supported in MSVC Compiler 19.50 and beyond. Support first shipped with Visual Studio 2026 18.0. ### Notes @@ -648,7 +646,7 @@ These algorithms aren't presently parallelized: **23** In Visual Studio 2022 version 17.0 and up, these features are enabled by the [`/std:c++latest`](../build/reference/std-specify-language-standard-version.md) compiler option. - **24** In MSVC 14.50 and up, first shipped with Visual Studio 2026 version 18.0, these features are enabled by the [`/std:c++latest`](../build/reference/std-specify-language-standard-version.md) compiler option. + **24** In MSVC 19.50 and up, first shipped with Visual Studio 2026 version 18.0, these features are enabled by the [`/std:c++latest`](../build/reference/std-specify-language-standard-version.md) compiler option. **C11** Compiler support for C11 and C17 requires Visual Studio 2019 version 16.8 or higher. Except as noted, C11 and C17 library support requires Windows SDK build 10.0.20211.0 or higher. For more information on how to install support for C11 and C17, see [Install C11 and C17 support in Visual Studio](./install-c17-support.md). From d37dabd62f18579702b1d0735d7cf8c0ace32a10 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 4 Nov 2025 11:06:34 -0800 Subject: [PATCH 2048/2255] edit --- docs/overview/visual-cpp-language-conformance.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/overview/visual-cpp-language-conformance.md b/docs/overview/visual-cpp-language-conformance.md index 5d3bdc12511..28ed3a00834 100644 --- a/docs/overview/visual-cpp-language-conformance.md +++ b/docs/overview/visual-cpp-language-conformance.md @@ -475,7 +475,6 @@ A more detailed listing of Standard Library features and bug fixes by product ve |  [`P2166R1 Prohibit basic_string and basic_string_view from being constructed from nullptr`](https://wg21.link/P2166R1) | VS 2022 17.0 [23](#note_23), [R](#note_R) | |  [`P2186R2 Removed garbage collection support`](https://wg21.link/P2186R2) | VS 2022 17.0 [23](#note_23), [Q](#note_Q) | |  [`P2251R1 Require span And basic_string_view To Be Trivially Copyable`](https://wg21.link/p2251r1) | VS 2022 17.1 [23](#note_23) | -|  [`P2266R3 Simpler implicit move`](https://wg21.link/p2266r3) | MSVC 19.50 [24](#note_24) | |  [`P2273R3 constexpr unique_ptr`](https://wg21.link/p2273r3) | VS 2022 17.3 [23](#note_23) | |  [`P2280R4 Using unknown pointers and references in constant expressions`](https://wg21.link/p2280r4) | MSVC 19.50 [24](#note_24) | |  [`P2290R3 Delimited escape sequences`](https://wg21.link/p2290r3) | MSVC 19.50 [24](#note_24) | From 494e814a7fdf373217d9e4d2564a3554657f185c Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 4 Nov 2025 12:51:04 -0800 Subject: [PATCH 2049/2255] nit --- docs/overview/msvc-conformance-improvements.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/msvc-conformance-improvements.md b/docs/overview/msvc-conformance-improvements.md index 3957ac7e613..e9f57255dfa 100644 --- a/docs/overview/msvc-conformance-improvements.md +++ b/docs/overview/msvc-conformance-improvements.md @@ -1,5 +1,5 @@ --- -title: "C/C++ conformance improvements in Microsoft C++ (MSVC) Build Tools" +title: "/C++ Conformance improvements, behavior changes, and bug fixes in Microsoft C++ (MSVC) Build Tools" description: "Summary of conformance improvements in Microsoft C/C++ (MSVC)" ms.date: 11/03/2025 ms.service: "visual-cpp" From aa7fd26896e9594827664fa5b1b3a17770b804e7 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 4 Nov 2025 13:53:08 -0800 Subject: [PATCH 2050/2255] draft --- docs/overview/what-s-new-for-msvc.md | 10 +++++----- .../what-s-new-for-visual-cpp-in-visual-studio.md | 8 ++------ 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md index 5208f15459b..a36f1347bff 100644 --- a/docs/overview/what-s-new-for-msvc.md +++ b/docs/overview/what-s-new-for-msvc.md @@ -12,15 +12,14 @@ ms.custom: intro-whats-new Version 14.50 brings many updates and fixes to the Microsoft C++ compiler and tools. - For more information on what's new in all of Visual Studio, see [What's new in Visual Studio](/visualstudio/ide/whats-new-visual-studio). -- For information about version build dates, see [Visual Studio 2022 Release History](/visualstudio/releases/2022/release-history). -## What's new for MSVC version 14.50 +## What's new for MSVC Build Tools version 14.50 -*Released November 2025* +* Introduced in Visual Studio 2026 version 18.0 Released November 2025.* -| For more information about | See | +| For detailed information about | See | |---|---| -| What's new for C++ developers | [Augustin blog TBD](augustin blog) | +| What's new for C++ developers | [What’s New for C++ Developers in Visual Studio 2026 version 18.0](augustin blog TBD) | | Standard Library (STL) merged C++26 and C++23 features, Language Working Group (CWG) issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog MSVC Build Tools 14.50](https://github.com/microsoft/STL/wiki/Changelog#msvc-build-tools-1450) | | C++ language updates | [C++ Language Updates in MSVC Build Tools v14.50](https://devblogs.microsoft.com/cppblog/c-language-updates-in-msvc-build-tools-v14-50/) | | C++ language conformance improvements | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022 17.14](cpp-conformance-improvements.md#improvements_1714) | @@ -28,6 +27,7 @@ Version 14.50 brings many updates and fixes to the Microsoft C++ compiler and to A quick highlight of some of the new features: - The minimum supported operating systems for the MSVC Build Tools are Windows 10 or Windows Server 2016. + - VS 2026 18.0 and later, MSVC Build Tools 14.50 no longer support targeting Windows 7/8/8.1 or Windows Server 2008 R2/2012/2012 R2, which have stopped receiving security updates. With this release, the Build Tools no longer target: 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 bc91e056b54..e83c9246a0b 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: 11/03/2025 +ms.date: 11/04/2025 ms.service: "visual-cpp" ms.subservice: "ide" ms.custom: intro-whats-new @@ -10,11 +10,7 @@ ai-usage: ai-assisted # What's new for C++ in Visual Studio -Microsoft C++ Build Tools (MSVC Build Tools) versioning is no longer synchronized with Visual Studio versioning starting with Visual Studio 2026 version 18.0 and Microsoft C++ Build Tools version 14.50. For the latest updates to MSVC, see [What's new for MSVC](/cpp/overview/what-s-new-for-msvc.md). - -## What's new for C++ in Visual Studio 2026 - -VS 2026 18.0 and later no longer support targeting Windows 7/8/8.1 or Windows Server 2008 R2/2012/2012 R2, which have stopped receiving security updates. +Microsoft C++ Build Tools (MSVC Build Tools) versioning is no longer synchronized with Visual Studio versioning starting with Visual Studio 2026 version 18.0 and Microsoft C++ Build Tools version 14.50. For the latest updates to MSVC going forward, see [What's new for MSVC](/cpp/overview/what-s-new-for-msvc.md). ## What's new for C++ in Visual Studio 2022 From bddf26c556b34d63af5c777b7650c95b9e308be4 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 4 Nov 2025 13:58:42 -0800 Subject: [PATCH 2051/2255] edit --- docs/overview/visual-cpp-language-conformance.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/overview/visual-cpp-language-conformance.md b/docs/overview/visual-cpp-language-conformance.md index 28ed3a00834..d1414adf473 100644 --- a/docs/overview/visual-cpp-language-conformance.md +++ b/docs/overview/visual-cpp-language-conformance.md @@ -1,7 +1,7 @@ --- title: "Microsoft C/C++ language conformance" description: "Microsoft C and C++ conformance updates by Visual Studio version." -ms.date: 11/03/2025 +ms.date: 11/04/2025 ms.service: "visual-cpp" ms.subservice: "cpp-lang" --- @@ -476,20 +476,20 @@ A more detailed listing of Standard Library features and bug fixes by product ve |  [`P2186R2 Removed garbage collection support`](https://wg21.link/P2186R2) | VS 2022 17.0 [23](#note_23), [Q](#note_Q) | |  [`P2251R1 Require span And basic_string_view To Be Trivially Copyable`](https://wg21.link/p2251r1) | VS 2022 17.1 [23](#note_23) | |  [`P2273R3 constexpr unique_ptr`](https://wg21.link/p2273r3) | VS 2022 17.3 [23](#note_23) | -|  [`P2280R4 Using unknown pointers and references in constant expressions`](https://wg21.link/p2280r4) | MSVC 19.50 [24](#note_24) | -|  [`P2290R3 Delimited escape sequences`](https://wg21.link/p2290r3) | MSVC 19.50 [24](#note_24) | +|  [`P2280R4 Using unknown pointers and references in constant expressions`](https://wg21.link/p2280r4) | MSVC Build Tools version 14.5 [24](#note_24) | +|  [`P2290R3 Delimited escape sequences`](https://wg21.link/p2290r3) | MSVC Build Tools version 14.5 [24](#note_24) | |  [`P2291R3 constexpr Integral `](https://wg21.link/p2291r3) | VS 2022 17.4 [23](#note_23) | |  [`P2302R4 ranges::contains, ranges::contains_subrange`](https://wg21.link/p2302r4) | VS 2022 17.4 [23](#note_23) | |  [`P2321R2 std::zip`](https://wg21.link/p2321r2) | partial in VS 2022 17.5 [23](#note_23) | |  [`P2322R6 ranges::fold_left, ranges::fold_right, etc.`](https://wg21.link/p2322r6) | VS 2022 17.5 [23](#note_23) | -|  [`P2360R0 Extend init-statement to allow alias-declaration`](https://wg21.link/p2360r0) | MSVC 19.50 [24](#note_24) | +|  [`P2360R0 Extend init-statement to allow alias-declaration`](https://wg21.link/p2360r0) | MSVC Build Tools version 14.5 [24](#note_24) | |  [`P2387R3 Pipe Support For User-Defined Range Adaptors`](https://wg21.link/p2387r3) | VS 2022 17.4 [23](#note_23) | |  [`P2393R1 Cleaning Up Integer-Class Types`](https://wg21.link/p2393r1) | VS 2022 17.2 [23](#note_23) | |  [`P2401R0 Conditional noexcept For exchange()`](https://wg21.link/p2401r0) | VS 2022 17.1 [23](#note_23) | |  [`P2408R5 Ranges Iterators As Inputs To Non-Ranges Algorithms`](https://wg21.link/p2408r5) | VS 2022 17.4 [23](#note_23) | |  [`P2417R2 More constexpr bitset`](https://wg21.link/p2417r2) | VS 2022 17.4 [23](#note_23) | |  [`P2419R2 Clarify Handling Of Encodings In Localized Formatting Of chrono Types`](https://wg21.link/p2419r2) | VS 2022 17.4 [23](#note_23) | -|  [`P2437R1 Support for #warning`](https://wg21.link/p2437r1) | MSVC 19.50 [24](#note_24) | +|  [`P2437R1 Support for #warning`](https://wg21.link/p2437r1) | MSVC Build Tools version 14.50 [24](#note_24) | |  [`P2438R2 string::substr() &&`](https://wg21.link/p2438r2) | VS 2022 17.4 [23](#note_23) | |  [`P2440R1 ranges::iota, ranges::shift_left, ranges::shift_right`](https://wg21.link/p2440r1) | VS 2022 17.4 [23](#note_23) | |  [`P2441R2 views::join_with`](https://wg21.link/p2441r2) | VS 2022 17.4 [23](#note_23) | @@ -574,7 +574,7 @@ A group of papers listed together indicates a Standard feature along with one or **VS 2022 17.3** Supported in Visual Studio 2022 version 17.3.\ **VS 2022 17.4** Supported in Visual Studio 2022 version 17.4.\ **VS 2022 17.5** Supported in Visual Studio 2022 version 17.5.\ -**MSVC 19.50** Supported in MSVC Compiler 19.50 and beyond. Support first shipped with Visual Studio 2026 18.0. +**MSVC Build Tools version 14.50** Supported in Visual Studio 2026 18.0 (MSVC compiler version 19.50) and up. ### Notes @@ -645,7 +645,7 @@ These algorithms aren't presently parallelized: **23** In Visual Studio 2022 version 17.0 and up, these features are enabled by the [`/std:c++latest`](../build/reference/std-specify-language-standard-version.md) compiler option. - **24** In MSVC 19.50 and up, first shipped with Visual Studio 2026 version 18.0, these features are enabled by the [`/std:c++latest`](../build/reference/std-specify-language-standard-version.md) compiler option. + **24** In MSVC Build Tools version 14.50 and up (first shipped with Visual Studio 2026 version 18.0), these features are enabled by the [`/std:c++latest`](../build/reference/std-specify-language-standard-version.md) compiler option. **C11** Compiler support for C11 and C17 requires Visual Studio 2019 version 16.8 or higher. Except as noted, C11 and C17 library support requires Windows SDK build 10.0.20211.0 or higher. For more information on how to install support for C11 and C17, see [Install C11 and C17 support in Visual Studio](./install-c17-support.md). From 1ea8e4d0299467f6ae8e0a1c4fb0e33a72e972ea Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 4 Nov 2025 14:39:18 -0800 Subject: [PATCH 2052/2255] draft --- docs/overview/what-s-new-for-msvc.md | 50 ++++++++++++++++++---------- 1 file changed, 32 insertions(+), 18 deletions(-) diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md index a36f1347bff..2c09ae652e5 100644 --- a/docs/overview/what-s-new-for-msvc.md +++ b/docs/overview/what-s-new-for-msvc.md @@ -15,42 +15,56 @@ Version 14.50 brings many updates and fixes to the Microsoft C++ compiler and to ## What's new for MSVC Build Tools version 14.50 -* Introduced in Visual Studio 2026 version 18.0 Released November 2025.* +* Introduced in Visual Studio 2026 version 18.0 released November 2025.* + +Visual Studio 2026 version 18.0 ships with Microsoft C++ (MSVC) Build Tools version 14.50, which offers the best conformance, build performance, and runtime performance story yet. To access to all the new language features, build with `/std:c++latest`, or use `/std:c++23preview` if you want to be restricted to just features up until C++23. | For detailed information about | See | |---|---| | What's new for C++ developers | [What’s New for C++ Developers in Visual Studio 2026 version 18.0](augustin blog TBD) | -| Standard Library (STL) merged C++26 and C++23 features, Language Working Group (CWG) issue resolutions, performance improvements, enhanced behavior, and fixed bugs | [STL Changelog MSVC Build Tools 14.50](https://github.com/microsoft/STL/wiki/Changelog#msvc-build-tools-1450) | +| Standard Library (STL) improvements | [STL Changelog MSVC Build Tools 14.50](https://github.com/microsoft/STL/wiki/Changelog#msvc-build-tools-1450) | | C++ language updates | [C++ Language Updates in MSVC Build Tools v14.50](https://devblogs.microsoft.com/cppblog/c-language-updates-in-msvc-build-tools-v14-50/) | | C++ language conformance improvements | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022 17.14](cpp-conformance-improvements.md#improvements_1714) | A quick highlight of some of the new features: -- The minimum supported operating systems for the MSVC Build Tools are Windows 10 or Windows Server 2016. - - VS 2026 18.0 and later, MSVC Build Tools 14.50 no longer support targeting Windows 7/8/8.1 or Windows Server 2008 R2/2012/2012 R2, which have stopped receiving security updates. - - With this release, the Build Tools no longer target: - - - Windows 7 / Windows Server 2008 R2 - - Windows 8 / Windows Server 2012 - - Windows 8.1 / Windows Server 2012 R2 - - To build applications using the latest C++ tools, your target platform must be Windows 10 or Windows Server 2016 (or later). These changes allow for better performance, enhanced security, and alignment with the most recent Windows platform capabilities. - - C++20 is the default for new Console App, Windows Desktop Application, Dynamic-Link Library, and Static Library C++ projects. -- Easily set debugger command line arguments for any C++ project using the toolbar for `.vcxproj`, CMake, and Unreal Engine projects. This feature is no longer tied to the Game Development with C++ workload, and is available to all C++ developers without needing to install any additional workloads or components. For more information, see [Pass command-line arguments](/visualstudio/debugger/getting-started-with-the-debugger-cpp?view=visualstudio). +- C++23 preprocessing directive `#warning` allows you to generate a diagnostic message without stopping translation the way `#error` does. For more information, see [#warning directive](/cpp/preprocessor/hash-warning-directive-c-cpp) for more information. +- Easily set debugger command line arguments for any C++ project using the toolbar for `.vcxproj`, CMake, and Unreal Engine projects. This feature is no longer tied to the Game Development with C++ workload, and is available to all C++ developers without installing any other workloads or components. For more information, see [Pass command-line arguments](/visualstudio/debugger/getting-started-with-the-debugger-cpp?view=visualstudio). - C++ Standard Library - addressed several issues, enhancing both reliability and speed. [LWG-2503](https://cplusplus.github.io/LWG/issue2503) multiline option should be added to `syntax_option_type`. This is a `regex` behavioral change. By default, `_REGEX_LEGACY_MULTILINE_MODE` is 0, which requests Standard behavior. Set `_REGEX_LEGACY_MULTILINE_MODE` to 1 to request legacy behavior. For more information, see [STL Changelog](https://github.com/microsoft/STL/wiki/Changelog#msvc-build-tools-1450-insiders). + - Added and improved vectorized implementations of many types and functions. +- GitHub Copilot: + - Copilot Chat allows you to use natural language to get answers to questions (Ask mode) or even implement changes for you automatically (Agent Mode). + - Copilot Chat is smarter with improved context for everyday tasks. Expect better results when searching your codebase and referencing specific lines in your code. + - A **Copilot Actions** option was added to the right-click context menu in the Visual Studio editor. Use it to quickly bring a specific file or lines of code you select to the attention of Copilot Chat. You can then ask Copilot to explain what the code does, make optimizations, generate comments or unit tests, and so on. +- Visual Studio 2026 now includes CMake 4.1.2 by default. CMake also includes a Visual Studio 2026 generator and modern SLNX projects, allowing you to build Visual Studio C++ projects directly from CMake. +- Compiler back-end runtime performance improvements. +- AddressSanitizer support for ARM64 Builds (Preview). - Generate preprocessed output for any C++ file. In Visual Studio, right-click a C++ file to instantly generate its preprocessed output, making it easy to debug macros and includes, and see errors immediately. ![Screenshot showing the right-click context menu for a C++ file with the Preprocess option highlighted.](./media/cpp-preprocess-menu-entry.png) - In the Visual Studio installer, the C++ Linux workload is renamed to 'Linux, Mac, and embedded development with C++'. -- The following have been removed: C++AMP, ARM32 toolchain, and `/DEBUG:FASTLINK`. - - If you use `/DEBUG:FASTLINK`, switch to `/DEBUG:FULL` for improved debugging support. - - To target ARM32, continue using the Visual Studio 2022 v143 build tools. For more information, see [Side-by-side Minor Version MSVC Toolsets in Visual Studio 2019](https://devblogs.microsoft.com/cppblog/side-by-side-minor-version-msvc-toolsets-in-visual-studio-2019/). -- The `/await` switch is deprecated and will be removed in a future release. Use Standard C++ coroutines, available by default in C++20 or later. For projects in earlier language modes, consider using `/await:strict` to maintain compatibility until the switch is removed. - Better AI code completions for C++. GitHub Copilot uses context from relevant files to improve inline autocomplete for C++. We've updated GitHub Copilot to include other relevant files as context. This reduces hallucinations while offering more relevant and accurate suggestions. It's aligned with the current GitHub Copilot experience for C++ in VS Code. - Clang-Tidy code analysis improvements supercharge your C++ code analysis with enhanced configuration options for faster builds and custom workflows. Code analysis has new configuration options: You can now allocate more processors to run code analysis as part of your build, speeding up your development workflow. Plus, you can add custom arguments to the command line used to invoke `clang-tidy`, giving you complete control over your analysis setup. Access these powerful new options from **Project Properties** > **Code Analysis** > **Clang-Tidy**: ![Screenshot of Project Properties dialog showing clang-tidy configuration options including processor allocation and custom command line arguments](./media/clang-tidy-improvements.png). - Inline post-return values: The Visual Studio debugger now shows the actual return values of functions. This provides real-time visibility into function behavior without stepping into code or setting up watches, making it faster to catch logic issues or unexpected results. ![Screenshot showing inline post-return values displayed in the debugger next to function call."](./media/inline-post-return-value.png) +**Deprecations and Removals** + +- The minimum supported operating systems for the MSVC Build Tools version 14.50 are Windows 10 or Windows Server 2016. +- MSVC Build Tools version 14.50 no longer target: + + - Windows 7 / Windows Server 2008 R2 + - Windows 8 / Windows Server 2012 + - Windows 8.1 / Windows Server 2012 R2 + + To build applications using the latest C++ tools, your target platform must be Windows 10 or Windows Server 2016 (or later). These changes allow for better performance, enhanced security, and alignment with the most recent Windows platform capabilities. + +- The `/await` switch is deprecated, no longer receives support, and will be removed in a future release. Use Standard C++ coroutines, available by default in C++20 or later. For projects in earlier language modes, consider using `/await:strict` to maintain compatibility until the switch is removed. + +**The following features have been removed and are no longer available:** + +- C++AMP +- ARM32 toolchain: if you still need to build for ARM32, use an older version of the MSVC Build Tools. For more information, see [Side-by-side Minor Version MSVC Toolsets in Visual Studio 2019](https://devblogs.microsoft.com/cppblog/side-by-side-minor-version-msvc-toolsets-in-visual-studio-2019/). +- `/DEBUG:FASTLINK` compiler switch. Use to `/DEBUG:FULL` for improved debugging support. ## Feedback and suggestions From 90853511825257511374386ec0955cd707896460 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 4 Nov 2025 14:46:21 -0800 Subject: [PATCH 2053/2255] draft --- docs/overview/what-s-new-for-msvc.md | 8 ++++---- .../what-s-new-for-visual-cpp-in-visual-studio.md | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md index 2c09ae652e5..db7ff8cd8a1 100644 --- a/docs/overview/what-s-new-for-msvc.md +++ b/docs/overview/what-s-new-for-msvc.md @@ -29,10 +29,10 @@ Visual Studio 2026 version 18.0 ships with Microsoft C++ (MSVC) Build Tools vers A quick highlight of some of the new features: - C++20 is the default for new Console App, Windows Desktop Application, Dynamic-Link Library, and Static Library C++ projects. -- C++23 preprocessing directive `#warning` allows you to generate a diagnostic message without stopping translation the way `#error` does. For more information, see [#warning directive](/cpp/preprocessor/hash-warning-directive-c-cpp) for more information. -- Easily set debugger command line arguments for any C++ project using the toolbar for `.vcxproj`, CMake, and Unreal Engine projects. This feature is no longer tied to the Game Development with C++ workload, and is available to all C++ developers without installing any other workloads or components. For more information, see [Pass command-line arguments](/visualstudio/debugger/getting-started-with-the-debugger-cpp?view=visualstudio). +- C++23 preprocessing directive `#warning` allows you to generate a diagnostic message without stopping translation the way `#error` does. For more information, see [`#warning` directive](/cpp/preprocessor/hash-warning-directive-c-cpp). +- Easily set debugger command line arguments for any C++ project using the toolbar for `.vcxproj`, CMake, and Unreal Engine projects. This feature is no longer tied to the Game Development with C++ workload, and is available to all C++ developers without installing any other workloads or components. For more information, see [Pass command-line arguments](/visualstudio/debugger/getting-started-with-the-debugger-cpp?view=visualstudio&preserve-view=true). - C++ Standard Library - - addressed several issues, enhancing both reliability and speed. [LWG-2503](https://cplusplus.github.io/LWG/issue2503) multiline option should be added to `syntax_option_type`. This is a `regex` behavioral change. By default, `_REGEX_LEGACY_MULTILINE_MODE` is 0, which requests Standard behavior. Set `_REGEX_LEGACY_MULTILINE_MODE` to 1 to request legacy behavior. For more information, see [STL Changelog](https://github.com/microsoft/STL/wiki/Changelog#msvc-build-tools-1450-insiders). + - `` addressed several issues, enhancing both reliability and speed. [LWG-2503](https://cplusplus.github.io/LWG/issue2503) multiline option should be added to `syntax_option_type`. This is a `regex` behavioral change. By default, `_REGEX_LEGACY_MULTILINE_MODE` is 0, which requests Standard behavior. Set `_REGEX_LEGACY_MULTILINE_MODE` to 1 to request legacy behavior. For more information, see [STL Changelog](https://github.com/microsoft/STL/wiki/Changelog#msvc-build-tools-1450-insiders). - Added and improved vectorized implementations of many types and functions. - GitHub Copilot: - Copilot Chat allows you to use natural language to get answers to questions (Ask mode) or even implement changes for you automatically (Agent Mode). @@ -42,7 +42,7 @@ A quick highlight of some of the new features: - Compiler back-end runtime performance improvements. - AddressSanitizer support for ARM64 Builds (Preview). - Generate preprocessed output for any C++ file. In Visual Studio, right-click a C++ file to instantly generate its preprocessed output, making it easy to debug macros and includes, and see errors immediately. ![Screenshot showing the right-click context menu for a C++ file with the Preprocess option highlighted.](./media/cpp-preprocess-menu-entry.png) -- In the Visual Studio installer, the C++ Linux workload is renamed to 'Linux, Mac, and embedded development with C++'. +- In the Visual Studio installer, the C++ Linux workload is renamed to "Linux, Mac, and embedded development with C++". - Better AI code completions for C++. GitHub Copilot uses context from relevant files to improve inline autocomplete for C++. We've updated GitHub Copilot to include other relevant files as context. This reduces hallucinations while offering more relevant and accurate suggestions. It's aligned with the current GitHub Copilot experience for C++ in VS Code. - Clang-Tidy code analysis improvements supercharge your C++ code analysis with enhanced configuration options for faster builds and custom workflows. Code analysis has new configuration options: You can now allocate more processors to run code analysis as part of your build, speeding up your development workflow. Plus, you can add custom arguments to the command line used to invoke `clang-tidy`, giving you complete control over your analysis setup. Access these powerful new options from **Project Properties** > **Code Analysis** > **Clang-Tidy**: ![Screenshot of Project Properties dialog showing clang-tidy configuration options including processor allocation and custom command line arguments](./media/clang-tidy-improvements.png). - Inline post-return values: The Visual Studio debugger now shows the actual return values of functions. This provides real-time visibility into function behavior without stepping into code or setting up watches, making it faster to catch logic issues or unexpected results. ![Screenshot showing inline post-return values displayed in the debugger next to function call."](./media/inline-post-return-value.png) 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 e83c9246a0b..491f55e9093 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 @@ -10,7 +10,7 @@ ai-usage: ai-assisted # What's new for C++ in Visual Studio -Microsoft C++ Build Tools (MSVC Build Tools) versioning is no longer synchronized with Visual Studio versioning starting with Visual Studio 2026 version 18.0 and Microsoft C++ Build Tools version 14.50. For the latest updates to MSVC going forward, see [What's new for MSVC](/cpp/overview/what-s-new-for-msvc.md). +Microsoft C++ Build Tools (MSVC Build Tools) versioning is no longer synchronized with Visual Studio versioning starting with Visual Studio 2026 version 18.0 and Microsoft C++ Build Tools version 14.50. For the latest updates to MSVC going forward, see [What's new for MSVC](what-s-new-for-msvc.md). ## What's new for C++ in Visual Studio 2022 From d0e356c701134d11c26b62b236fea0e5fe29811d Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 4 Nov 2025 15:33:56 -0800 Subject: [PATCH 2054/2255] updates --- docs/overview/what-s-new-for-msvc.md | 29 +++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md index db7ff8cd8a1..70255cb0d3e 100644 --- a/docs/overview/what-s-new-for-msvc.md +++ b/docs/overview/what-s-new-for-msvc.md @@ -1,13 +1,13 @@ --- -title: "What's new for MSVC" +title: "What's new for MSVC Build Tools" description: "The new features and fixes in the Microsoft C/C++ compiler and tools (MSVC)." -ms.date: 11/03/2025 +ms.date: 11/04/2025 ms.service: "visual-cpp" ms.subservice: "cpp-lang" ms.custom: intro-whats-new --- -# What's new for MSVC +# What's new for MSVC Build Tools Version 14.50 brings many updates and fixes to the Microsoft C++ compiler and tools. @@ -26,31 +26,34 @@ Visual Studio 2026 version 18.0 ships with Microsoft C++ (MSVC) Build Tools vers | C++ language updates | [C++ Language Updates in MSVC Build Tools v14.50](https://devblogs.microsoft.com/cppblog/c-language-updates-in-msvc-build-tools-v14-50/) | | C++ language conformance improvements | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022 17.14](cpp-conformance-improvements.md#improvements_1714) | -A quick highlight of some of the new features: +**A quick highlight of some of the new features in MSVC Build Tools version 14.50 and Visual Studio 2026 version 18.0:** - C++20 is the default for new Console App, Windows Desktop Application, Dynamic-Link Library, and Static Library C++ projects. -- C++23 preprocessing directive `#warning` allows you to generate a diagnostic message without stopping translation the way `#error` does. For more information, see [`#warning` directive](/cpp/preprocessor/hash-warning-directive-c-cpp). +- C++23 preprocessing directive `#warning` allows you to generate a diagnostic message without stopping translation like `#error` does. For more information, see [`#warning` directive](/cpp/preprocessor/hash-warning-directive-c-cpp). - Easily set debugger command line arguments for any C++ project using the toolbar for `.vcxproj`, CMake, and Unreal Engine projects. This feature is no longer tied to the Game Development with C++ workload, and is available to all C++ developers without installing any other workloads or components. For more information, see [Pass command-line arguments](/visualstudio/debugger/getting-started-with-the-debugger-cpp?view=visualstudio&preserve-view=true). - C++ Standard Library - - `` addressed several issues, enhancing both reliability and speed. [LWG-2503](https://cplusplus.github.io/LWG/issue2503) multiline option should be added to `syntax_option_type`. This is a `regex` behavioral change. By default, `_REGEX_LEGACY_MULTILINE_MODE` is 0, which requests Standard behavior. Set `_REGEX_LEGACY_MULTILINE_MODE` to 1 to request legacy behavior. For more information, see [STL Changelog](https://github.com/microsoft/STL/wiki/Changelog#msvc-build-tools-1450-insiders). + - `` addressed several issues, enhancing both reliability and speed. [LWG-2503](https://cplusplus.github.io/LWG/issue2503) added a multiline option to `syntax_option_type`. This is a `regex` behavioral change. By default, `_REGEX_LEGACY_MULTILINE_MODE` is 0, which requests Standard behavior. Set `_REGEX_LEGACY_MULTILINE_MODE` to 1 to request legacy behavior. For more information, see [STL Changelog](https://github.com/microsoft/STL/wiki/Changelog#msvc-build-tools-1450-insiders). - Added and improved vectorized implementations of many types and functions. - GitHub Copilot: - Copilot Chat allows you to use natural language to get answers to questions (Ask mode) or even implement changes for you automatically (Agent Mode). - Copilot Chat is smarter with improved context for everyday tasks. Expect better results when searching your codebase and referencing specific lines in your code. - - A **Copilot Actions** option was added to the right-click context menu in the Visual Studio editor. Use it to quickly bring a specific file or lines of code you select to the attention of Copilot Chat. You can then ask Copilot to explain what the code does, make optimizations, generate comments or unit tests, and so on. -- Visual Studio 2026 now includes CMake 4.1.2 by default. CMake also includes a Visual Studio 2026 generator and modern SLNX projects, allowing you to build Visual Studio C++ projects directly from CMake. -- Compiler back-end runtime performance improvements. -- AddressSanitizer support for ARM64 Builds (Preview). + - A **Copilot Actions** option was added to the right-click context menu in the Visual Studio editor. Use it to quickly bring a specific file or lines of code you select to the attention of Copilot Chat. You can then ask Copilot to explain what the code does, make optimizations, generate comments, unit tests, and so on. + - Better AI code completions for C++. GitHub Copilot uses context from relevant files to improve inline autocomplete for C++. GitHub Copilot includes other relevant files as context which reduces hallucinations while offering more relevant and accurate suggestions. +- Visual Studio 2026 now includes CMake 4.1.2 by default. CMake also includes a Visual Studio 2026 generator and modern SLNX projects, so you can build Visual Studio C++ projects directly from CMake. +- Compiler backend runtime performance improvements. +- AddressSanitizer support for ARM64 Builds (Preview): For some time, the MSVC Build Tools have supported building projects targeting x64 and x86 with AddressSanitizer, which allows you to identify hard-to-find bugs with zero false positives at runtime and increase memory safety. You can now use AddressSanitizer to target ARM64. This feature is in preview, - Generate preprocessed output for any C++ file. In Visual Studio, right-click a C++ file to instantly generate its preprocessed output, making it easy to debug macros and includes, and see errors immediately. ![Screenshot showing the right-click context menu for a C++ file with the Preprocess option highlighted.](./media/cpp-preprocess-menu-entry.png) - In the Visual Studio installer, the C++ Linux workload is renamed to "Linux, Mac, and embedded development with C++". -- Better AI code completions for C++. GitHub Copilot uses context from relevant files to improve inline autocomplete for C++. We've updated GitHub Copilot to include other relevant files as context. This reduces hallucinations while offering more relevant and accurate suggestions. It's aligned with the current GitHub Copilot experience for C++ in VS Code. -- Clang-Tidy code analysis improvements supercharge your C++ code analysis with enhanced configuration options for faster builds and custom workflows. Code analysis has new configuration options: You can now allocate more processors to run code analysis as part of your build, speeding up your development workflow. Plus, you can add custom arguments to the command line used to invoke `clang-tidy`, giving you complete control over your analysis setup. Access these powerful new options from **Project Properties** > **Code Analysis** > **Clang-Tidy**: ![Screenshot of Project Properties dialog showing clang-tidy configuration options including processor allocation and custom command line arguments](./media/clang-tidy-improvements.png). +- Clang-Tidy code analysis improvements provide enhanced configuration options for faster builds and custom workflows. + - Code analysis has new configuration options: You can now allocate more processors to run code analysis as part of your build, speeding up your development workflow. Plus, you can add custom arguments to the command line used to invoke `clang-tidy`, giving you complete control over your analysis setup. + - Access the new options from **Project Properties** > **Code Analysis** > **Clang-Tidy**: ![Screenshot of Project Properties dialog showing clang-tidy configuration options including processor allocation and custom command line arguments](./media/clang-tidy-improvements.png). - Inline post-return values: The Visual Studio debugger now shows the actual return values of functions. This provides real-time visibility into function behavior without stepping into code or setting up watches, making it faster to catch logic issues or unexpected results. ![Screenshot showing inline post-return values displayed in the debugger next to function call."](./media/inline-post-return-value.png) +- Added IncrediBuild support for Visual Studio 2026, including the latest IncrediBuild engine and updated extension. Includes the latest version of the IncrediBuild engine and an updated extension that works with Visual Studio 2016 version 18.0. **Deprecations and Removals** - The minimum supported operating systems for the MSVC Build Tools version 14.50 are Windows 10 or Windows Server 2016. -- MSVC Build Tools version 14.50 no longer target: +- MSVC Build Tools version 14.50 no longer targets: - Windows 7 / Windows Server 2008 R2 - Windows 8 / Windows Server 2012 From 4736e77fe09d5b49ab0200c88c43b74b5341a23c Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 4 Nov 2025 15:43:59 -0800 Subject: [PATCH 2055/2255] categorize better --- docs/overview/what-s-new-for-msvc.md | 46 ++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md index 70255cb0d3e..23d585521a2 100644 --- a/docs/overview/what-s-new-for-msvc.md +++ b/docs/overview/what-s-new-for-msvc.md @@ -28,29 +28,47 @@ Visual Studio 2026 version 18.0 ships with Microsoft C++ (MSVC) Build Tools vers **A quick highlight of some of the new features in MSVC Build Tools version 14.50 and Visual Studio 2026 version 18.0:** +**C++ language enhancements** + - C++20 is the default for new Console App, Windows Desktop Application, Dynamic-Link Library, and Static Library C++ projects. - C++23 preprocessing directive `#warning` allows you to generate a diagnostic message without stopping translation like `#error` does. For more information, see [`#warning` directive](/cpp/preprocessor/hash-warning-directive-c-cpp). - Easily set debugger command line arguments for any C++ project using the toolbar for `.vcxproj`, CMake, and Unreal Engine projects. This feature is no longer tied to the Game Development with C++ workload, and is available to all C++ developers without installing any other workloads or components. For more information, see [Pass command-line arguments](/visualstudio/debugger/getting-started-with-the-debugger-cpp?view=visualstudio&preserve-view=true). -- C++ Standard Library - - `` addressed several issues, enhancing both reliability and speed. [LWG-2503](https://cplusplus.github.io/LWG/issue2503) added a multiline option to `syntax_option_type`. This is a `regex` behavioral change. By default, `_REGEX_LEGACY_MULTILINE_MODE` is 0, which requests Standard behavior. Set `_REGEX_LEGACY_MULTILINE_MODE` to 1 to request legacy behavior. For more information, see [STL Changelog](https://github.com/microsoft/STL/wiki/Changelog#msvc-build-tools-1450-insiders). - - Added and improved vectorized implementations of many types and functions. -- GitHub Copilot: - - Copilot Chat allows you to use natural language to get answers to questions (Ask mode) or even implement changes for you automatically (Agent Mode). - - Copilot Chat is smarter with improved context for everyday tasks. Expect better results when searching your codebase and referencing specific lines in your code. - - A **Copilot Actions** option was added to the right-click context menu in the Visual Studio editor. Use it to quickly bring a specific file or lines of code you select to the attention of Copilot Chat. You can then ask Copilot to explain what the code does, make optimizations, generate comments, unit tests, and so on. - - Better AI code completions for C++. GitHub Copilot uses context from relevant files to improve inline autocomplete for C++. GitHub Copilot includes other relevant files as context which reduces hallucinations while offering more relevant and accurate suggestions. + +**Standard Library enhancements** + +- `` addressed several issues, enhancing both reliability and speed. [LWG-2503](https://cplusplus.github.io/LWG/issue2503) added a multiline option to `syntax_option_type`. This is a `regex` behavioral change. By default, `_REGEX_LEGACY_MULTILINE_MODE` is 0, which requests Standard behavior. Set `_REGEX_LEGACY_MULTILINE_MODE` to 1 to request legacy behavior. For more information, see [STL Changelog](https://github.com/microsoft/STL/wiki/Changelog#msvc-build-tools-1450-insiders). +- Added and improved vectorized implementations of many types and functions. + +**GitHub Copilot enhancements** + +- Copilot Chat allows you to use natural language to get answers to questions (Ask mode) or even implement changes for you automatically (Agent Mode). +- Copilot Chat is smarter with improved context for everyday tasks. Expect better results when searching your codebase and referencing specific lines in your code. +- A **Copilot Actions** option was added to the right-click context menu in the Visual Studio editor. Use it to quickly bring a specific file or lines of code you select to the attention of Copilot Chat. You can then ask Copilot to explain what the code does, make optimizations, generate comments, unit tests, and so on. +- Better AI code completions for C++. GitHub Copilot uses context from relevant files to improve inline autocomplete for C++. GitHub Copilot includes other relevant files as context which reduces hallucinations while offering more relevant and accurate suggestions. + +**Build enhancements** + - Visual Studio 2026 now includes CMake 4.1.2 by default. CMake also includes a Visual Studio 2026 generator and modern SLNX projects, so you can build Visual Studio C++ projects directly from CMake. +- Added IncrediBuild support for Visual Studio 2026, including the latest IncrediBuild engine and updated extension. Includes the latest version of the IncrediBuild engine and an updated extension that works with Visual Studio 2016 version 18.0. - Compiler backend runtime performance improvements. -- AddressSanitizer support for ARM64 Builds (Preview): For some time, the MSVC Build Tools have supported building projects targeting x64 and x86 with AddressSanitizer, which allows you to identify hard-to-find bugs with zero false positives at runtime and increase memory safety. You can now use AddressSanitizer to target ARM64. This feature is in preview, -- Generate preprocessed output for any C++ file. In Visual Studio, right-click a C++ file to instantly generate its preprocessed output, making it easy to debug macros and includes, and see errors immediately. ![Screenshot showing the right-click context menu for a C++ file with the Preprocess option highlighted.](./media/cpp-preprocess-menu-entry.png) -- In the Visual Studio installer, the C++ Linux workload is renamed to "Linux, Mac, and embedded development with C++". + +**Code analysis enhancements** + - Clang-Tidy code analysis improvements provide enhanced configuration options for faster builds and custom workflows. - Code analysis has new configuration options: You can now allocate more processors to run code analysis as part of your build, speeding up your development workflow. Plus, you can add custom arguments to the command line used to invoke `clang-tidy`, giving you complete control over your analysis setup. - Access the new options from **Project Properties** > **Code Analysis** > **Clang-Tidy**: ![Screenshot of Project Properties dialog showing clang-tidy configuration options including processor allocation and custom command line arguments](./media/clang-tidy-improvements.png). +- AddressSanitizer support for ARM64 Builds (Preview): For some time, the MSVC Build Tools have supported building projects targeting x64 and x86 with AddressSanitizer, which allows you to identify hard-to-find bugs with zero false positives at runtime and increase memory safety. You can now use AddressSanitizer to target ARM64. This feature is in preview, + +**Productivity enhancements** + +- Generate preprocessed output for any C++ file. In Visual Studio, right-click a C++ file to instantly generate its preprocessed output, making it easy to debug macros and includes, and see errors immediately. ![Screenshot showing the right-click context menu for a C++ file with the Preprocess option highlighted.](./media/cpp-preprocess-menu-entry.png) - Inline post-return values: The Visual Studio debugger now shows the actual return values of functions. This provides real-time visibility into function behavior without stepping into code or setting up watches, making it faster to catch logic issues or unexpected results. ![Screenshot showing inline post-return values displayed in the debugger next to function call."](./media/inline-post-return-value.png) -- Added IncrediBuild support for Visual Studio 2026, including the latest IncrediBuild engine and updated extension. Includes the latest version of the IncrediBuild engine and an updated extension that works with Visual Studio 2016 version 18.0. -**Deprecations and Removals** +**Other** + +- In the Visual Studio installer, the C++ Linux workload is renamed to "Linux, Mac, and embedded development with C++". + +**Deprecations** - The minimum supported operating systems for the MSVC Build Tools version 14.50 are Windows 10 or Windows Server 2016. - MSVC Build Tools version 14.50 no longer targets: @@ -63,6 +81,8 @@ Visual Studio 2026 version 18.0 ships with Microsoft C++ (MSVC) Build Tools vers - The `/await` switch is deprecated, no longer receives support, and will be removed in a future release. Use Standard C++ coroutines, available by default in C++20 or later. For projects in earlier language modes, consider using `/await:strict` to maintain compatibility until the switch is removed. +The mobile development and embedded and IoT development tools are now out of support. + **The following features have been removed and are no longer available:** - C++AMP From 348ffb35a866c4678f9c2de21c3d57cfa1063fdd Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Tue, 4 Nov 2025 18:56:13 -0800 Subject: [PATCH 2056/2255] Apply suggestion from @AugP Co-authored-by: Augustin Popa --- docs/overview/toc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/toc.yml b/docs/overview/toc.yml index 564c7334231..fdccf116fd9 100644 --- a/docs/overview/toc.yml +++ b/docs/overview/toc.yml @@ -6,7 +6,7 @@ items: href: ../overview/visual-cpp-in-visual-studio.md - name: Overview of C++ development in Visual Studio href: ../overview/overview-of-cpp-development.md - - name: What's new for MSVC + - name: What's new for MSVC Build Tools href: ../overview/what-s-new-for-msvc.md - name: What's new for C++ in Visual Studio 2022 href: ../overview/what-s-new-for-visual-cpp-in-visual-studio.md From 9d81f874e6c0054b916728cbc5957018e2ad0a24 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Tue, 4 Nov 2025 18:56:29 -0800 Subject: [PATCH 2057/2255] Apply suggestion from @AugP Co-authored-by: Augustin Popa --- docs/overview/what-s-new-for-msvc.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md index 23d585521a2..15ebfca7da3 100644 --- a/docs/overview/what-s-new-for-msvc.md +++ b/docs/overview/what-s-new-for-msvc.md @@ -9,7 +9,7 @@ ms.custom: intro-whats-new # What's new for MSVC Build Tools -Version 14.50 brings many updates and fixes to the Microsoft C++ compiler and tools. +Version 14.50 brings many updates and fixes to the Microsoft C++ compiler and other build tools. - For more information on what's new in all of Visual Studio, see [What's new in Visual Studio](/visualstudio/ide/whats-new-visual-studio). From eaac6ea9bfcf7e9f48cf1799e271bfb18f730152 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 4 Nov 2025 18:57:47 -0800 Subject: [PATCH 2058/2255] add address --- docs/overview/what-s-new-for-msvc.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md index 23d585521a2..395703c6ff8 100644 --- a/docs/overview/what-s-new-for-msvc.md +++ b/docs/overview/what-s-new-for-msvc.md @@ -21,7 +21,7 @@ Visual Studio 2026 version 18.0 ships with Microsoft C++ (MSVC) Build Tools vers | For detailed information about | See | |---|---| -| What's new for C++ developers | [What’s New for C++ Developers in Visual Studio 2026 version 18.0](augustin blog TBD) | +| What's new for C++ developers | [What’s New for C++ Developers in Visual Studio 2026 version 18.0](https://devblogs.microsoft.com/cppblog/whats-new-for-cpp-developers-in-visual-studio-2026-version-18-0) | | Standard Library (STL) improvements | [STL Changelog MSVC Build Tools 14.50](https://github.com/microsoft/STL/wiki/Changelog#msvc-build-tools-1450) | | C++ language updates | [C++ Language Updates in MSVC Build Tools v14.50](https://devblogs.microsoft.com/cppblog/c-language-updates-in-msvc-build-tools-v14-50/) | | C++ language conformance improvements | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022 17.14](cpp-conformance-improvements.md#improvements_1714) | From 0a0f1559816f564cbc93e2d837fdcbd8fb6ca87c Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 4 Nov 2025 19:00:30 -0800 Subject: [PATCH 2059/2255] edit --- docs/overview/what-s-new-for-msvc.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md index 77b740159fb..bb856ae9c60 100644 --- a/docs/overview/what-s-new-for-msvc.md +++ b/docs/overview/what-s-new-for-msvc.md @@ -57,7 +57,7 @@ Visual Studio 2026 version 18.0 ships with Microsoft C++ (MSVC) Build Tools vers - Clang-Tidy code analysis improvements provide enhanced configuration options for faster builds and custom workflows. - Code analysis has new configuration options: You can now allocate more processors to run code analysis as part of your build, speeding up your development workflow. Plus, you can add custom arguments to the command line used to invoke `clang-tidy`, giving you complete control over your analysis setup. - Access the new options from **Project Properties** > **Code Analysis** > **Clang-Tidy**: ![Screenshot of Project Properties dialog showing clang-tidy configuration options including processor allocation and custom command line arguments](./media/clang-tidy-improvements.png). -- AddressSanitizer support for ARM64 Builds (Preview): For some time, the MSVC Build Tools have supported building projects targeting x64 and x86 with AddressSanitizer, which allows you to identify hard-to-find bugs with zero false positives at runtime and increase memory safety. You can now use AddressSanitizer to target ARM64. This feature is in preview, +- AddressSanitizer support for ARM64 Builds (Preview): For some time, the MSVC Build Tools have supported building projects that target x64 and x86 with AddressSanitizer, which allows you to identify hard-to-find bugs with zero false positives at runtime and increase memory safety. You can now use AddressSanitizer to target ARM64. This feature is in preview. **Productivity enhancements** From b205607f30ab1dd584526585b0b9afd9bdf1ca07 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 4 Nov 2025 19:24:40 -0800 Subject: [PATCH 2060/2255] edits --- docs/overview/what-s-new-for-msvc.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md index bb856ae9c60..57709b13da2 100644 --- a/docs/overview/what-s-new-for-msvc.md +++ b/docs/overview/what-s-new-for-msvc.md @@ -15,9 +15,11 @@ Version 14.50 brings many updates and fixes to the Microsoft C++ compiler and ot ## What's new for MSVC Build Tools version 14.50 -* Introduced in Visual Studio 2026 version 18.0 released November 2025.* +* Introduced in Visual Studio 2026 version 18.0 released November 2025. -Visual Studio 2026 version 18.0 ships with Microsoft C++ (MSVC) Build Tools version 14.50, which offers the best conformance, build performance, and runtime performance story yet. To access to all the new language features, build with `/std:c++latest`, or use `/std:c++23preview` if you want to be restricted to just features up until C++23. +Visual Studio 2026 version 18.0 ships with the v145 platform toolset for MSBuild C++ projects and Microsoft C++ (MSVC) Build Tools version 14.50, which offers the best conformance, build performance, and runtime performance story yet. To access to all the new language features, build with `/std:c++latest`, or use `/std:c++23preview` if you want to be restricted to features up to C++23. + +MSVC Build Tools version 14.50 preserves binary compatibility with code built with MSVC tools shipped in Visual Studio 2015 or later. | For detailed information about | See | |---|---| @@ -50,14 +52,15 @@ Visual Studio 2026 version 18.0 ships with Microsoft C++ (MSVC) Build Tools vers - Visual Studio 2026 now includes CMake 4.1.2 by default. CMake also includes a Visual Studio 2026 generator and modern SLNX projects, so you can build Visual Studio C++ projects directly from CMake. - Added IncrediBuild support for Visual Studio 2026, including the latest IncrediBuild engine and updated extension. Includes the latest version of the IncrediBuild engine and an updated extension that works with Visual Studio 2016 version 18.0. -- Compiler backend runtime performance improvements. +- Compiler backend runtime performance improvements. Up to 6% as measured on Unreal Engine's City Sample RenderThread. For more information, see [Why you should upgrade your C++ build tools](https://devblogs.microsoft.com/cppblog/upgrading-c-projects-to-visual-studio-2026/#why-you-should-upgrade-your-c++-build-tools). +- The Visual Studio setup assistant can help you retarget your projects, so they build with the latest MSVC Build Tools. For more information, see [Retarget your projects with the setup assistant](https://devblogs.microsoft.com/cppblog/upgrading-c-projects-to-visual-studio-2026/#retarget-your-projects-with-the-setup-assistant). **Code analysis enhancements** - Clang-Tidy code analysis improvements provide enhanced configuration options for faster builds and custom workflows. - Code analysis has new configuration options: You can now allocate more processors to run code analysis as part of your build, speeding up your development workflow. Plus, you can add custom arguments to the command line used to invoke `clang-tidy`, giving you complete control over your analysis setup. - Access the new options from **Project Properties** > **Code Analysis** > **Clang-Tidy**: ![Screenshot of Project Properties dialog showing clang-tidy configuration options including processor allocation and custom command line arguments](./media/clang-tidy-improvements.png). -- AddressSanitizer support for ARM64 Builds (Preview): For some time, the MSVC Build Tools have supported building projects that target x64 and x86 with AddressSanitizer, which allows you to identify hard-to-find bugs with zero false positives at runtime and increase memory safety. You can now use AddressSanitizer to target ARM64. This feature is in preview. +- AddressSanitizer support for ARM64 Builds (Preview): For some time, the MSVC Build Tools have supported building projects that target x64 and x86 with [AddressSanitizer](https://learn.microsoft.com/cpp/sanitizers/asan?view=msvc-170), which allows you to identify hard-to-find bugs with zero false positives at runtime and increase memory safety. You can now use AddressSanitizer to target ARM64. This feature is in preview. **Productivity enhancements** @@ -81,13 +84,13 @@ Visual Studio 2026 version 18.0 ships with Microsoft C++ (MSVC) Build Tools vers - The `/await` switch is deprecated, no longer receives support, and will be removed in a future release. Use Standard C++ coroutines, available by default in C++20 or later. For projects in earlier language modes, consider using `/await:strict` to maintain compatibility until the switch is removed. -The mobile development and embedded and IoT development tools are now out of support. +The mobile development and embedded and IoT development tools are no longer supported. The mobile development with C++ workload and Android NDK component in the Visual Studio installer are no longer supported and will be removed in a future Visual Studio update. This impacts tooling support for iOS and Android development, including new projects, building, and debugging. **The following features have been removed and are no longer available:** - C++AMP - ARM32 toolchain: if you still need to build for ARM32, use an older version of the MSVC Build Tools. For more information, see [Side-by-side Minor Version MSVC Toolsets in Visual Studio 2019](https://devblogs.microsoft.com/cppblog/side-by-side-minor-version-msvc-toolsets-in-visual-studio-2019/). -- `/DEBUG:FASTLINK` compiler switch. Use to `/DEBUG:FULL` for improved debugging support. +- `/DEBUG:FASTLINK` compiler switch. Use [`/DEBUG:FULL`](https://learn.microsoft.com/cpp/build/reference/debug-generate-debug-info) for improved debugging support. ## Feedback and suggestions From 2da63e97209e5f97a386e705b9f23cf9ea2872be Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 5 Nov 2025 10:02:34 -0800 Subject: [PATCH 2061/2255] tech review --- docs/overview/what-s-new-for-msvc.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md index 57709b13da2..55957465c4f 100644 --- a/docs/overview/what-s-new-for-msvc.md +++ b/docs/overview/what-s-new-for-msvc.md @@ -1,7 +1,7 @@ --- title: "What's new for MSVC Build Tools" description: "The new features and fixes in the Microsoft C/C++ compiler and tools (MSVC)." -ms.date: 11/04/2025 +ms.date: 11/05/2025 ms.service: "visual-cpp" ms.subservice: "cpp-lang" ms.custom: intro-whats-new @@ -19,14 +19,14 @@ Version 14.50 brings many updates and fixes to the Microsoft C++ compiler and ot Visual Studio 2026 version 18.0 ships with the v145 platform toolset for MSBuild C++ projects and Microsoft C++ (MSVC) Build Tools version 14.50, which offers the best conformance, build performance, and runtime performance story yet. To access to all the new language features, build with `/std:c++latest`, or use `/std:c++23preview` if you want to be restricted to features up to C++23. -MSVC Build Tools version 14.50 preserves binary compatibility with code built with MSVC tools shipped in Visual Studio 2015 or later. +MSVC Build Tools version 14.50 preserves binary compatibility with code built with MSVC tools shipped in Visual Studio 2015 or later. For more information about binary compatibility, see [C++ binary compatibility between Visual Studio versions](https://learn.microsoft.com/en-us/cpp/porting/binary-compat-2015-2017). | For detailed information about | See | |---|---| | What's new for C++ developers | [What’s New for C++ Developers in Visual Studio 2026 version 18.0](https://devblogs.microsoft.com/cppblog/whats-new-for-cpp-developers-in-visual-studio-2026-version-18-0) | | Standard Library (STL) improvements | [STL Changelog MSVC Build Tools 14.50](https://github.com/microsoft/STL/wiki/Changelog#msvc-build-tools-1450) | | C++ language updates | [C++ Language Updates in MSVC Build Tools v14.50](https://devblogs.microsoft.com/cppblog/c-language-updates-in-msvc-build-tools-v14-50/) | -| C++ language conformance improvements | [C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2022 17.14](cpp-conformance-improvements.md#improvements_1714) | +| C++ language conformance improvements | [C/C++ Conformance improvements, behavior changes, and bug fixes in Microsoft C++ (MSVC) Build Tools](msvc-conformance-improvements.md) | **A quick highlight of some of the new features in MSVC Build Tools version 14.50 and Visual Studio 2026 version 18.0:** @@ -38,7 +38,7 @@ MSVC Build Tools version 14.50 preserves binary compatibility with code built wi **Standard Library enhancements** -- `` addressed several issues, enhancing both reliability and speed. [LWG-2503](https://cplusplus.github.io/LWG/issue2503) added a multiline option to `syntax_option_type`. This is a `regex` behavioral change. By default, `_REGEX_LEGACY_MULTILINE_MODE` is 0, which requests Standard behavior. Set `_REGEX_LEGACY_MULTILINE_MODE` to 1 to request legacy behavior. For more information, see [STL Changelog](https://github.com/microsoft/STL/wiki/Changelog#msvc-build-tools-1450-insiders). +- `` addressed several issues, enhancing both reliability and speed. [LWG-2503](https://cplusplus.github.io/LWG/issue2503) added a multiline option to `syntax_option_type`. This is a `regex` behavioral change. By default, `_REGEX_LEGACY_MULTILINE_MODE` is 0, which requests Standard behavior. Set `_REGEX_LEGACY_MULTILINE_MODE` to 1 to request legacy behavior. For more information, see [STL Changelog](https://github.com/microsoft/STL/wiki/Changelog#msvc-build-tools-1450). - Added and improved vectorized implementations of many types and functions. **GitHub Copilot enhancements** @@ -51,7 +51,7 @@ MSVC Build Tools version 14.50 preserves binary compatibility with code built wi **Build enhancements** - Visual Studio 2026 now includes CMake 4.1.2 by default. CMake also includes a Visual Studio 2026 generator and modern SLNX projects, so you can build Visual Studio C++ projects directly from CMake. -- Added IncrediBuild support for Visual Studio 2026, including the latest IncrediBuild engine and updated extension. Includes the latest version of the IncrediBuild engine and an updated extension that works with Visual Studio 2016 version 18.0. +- Includes the latest version of the IncrediBuild engine and an updated extension that works with Visual Studio 2026 version 18.0. - Compiler backend runtime performance improvements. Up to 6% as measured on Unreal Engine's City Sample RenderThread. For more information, see [Why you should upgrade your C++ build tools](https://devblogs.microsoft.com/cppblog/upgrading-c-projects-to-visual-studio-2026/#why-you-should-upgrade-your-c++-build-tools). - The Visual Studio setup assistant can help you retarget your projects, so they build with the latest MSVC Build Tools. For more information, see [Retarget your projects with the setup assistant](https://devblogs.microsoft.com/cppblog/upgrading-c-projects-to-visual-studio-2026/#retarget-your-projects-with-the-setup-assistant). @@ -73,16 +73,16 @@ MSVC Build Tools version 14.50 preserves binary compatibility with code built wi **Deprecations** -- The minimum supported operating systems for the MSVC Build Tools version 14.50 are Windows 10 or Windows Server 2016. +- The minimum supported target operating systems for the MSVC Build Tools version 14.50 are Windows 10 or Windows Server 2016. - MSVC Build Tools version 14.50 no longer targets: - Windows 7 / Windows Server 2008 R2 - Windows 8 / Windows Server 2012 - Windows 8.1 / Windows Server 2012 R2 - To build applications using the latest C++ tools, your target platform must be Windows 10 or Windows Server 2016 (or later). These changes allow for better performance, enhanced security, and alignment with the most recent Windows platform capabilities. + These changes allow for better performance, enhanced security, and alignment with the most recent Windows platform capabilities. -- The `/await` switch is deprecated, no longer receives support, and will be removed in a future release. Use Standard C++ coroutines, available by default in C++20 or later. For projects in earlier language modes, consider using `/await:strict` to maintain compatibility until the switch is removed. +The MSVC compiler switch `/await` is being deprecated and will be removed in a future release. This switch enabled an early draft implementation of C++ coroutines using the `` header. Developers should transition to standard C++ coroutines by using the `` header available in C++20 and later. For C++14/17 projects, use `/await:strict` (which isn't being deprecated) to access the standard `` header without enabling other C++20 features. The mobile development and embedded and IoT development tools are no longer supported. The mobile development with C++ workload and Android NDK component in the Visual Studio installer are no longer supported and will be removed in a future Visual Studio update. This impacts tooling support for iOS and Android development, including new projects, building, and debugging. From 37342895223cf09d7d6042416b524f09ccd859a5 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 5 Nov 2025 10:11:32 -0800 Subject: [PATCH 2062/2255] tidy links --- docs/overview/what-s-new-for-msvc.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md index 55957465c4f..5dc2d70f7d9 100644 --- a/docs/overview/what-s-new-for-msvc.md +++ b/docs/overview/what-s-new-for-msvc.md @@ -19,7 +19,7 @@ Version 14.50 brings many updates and fixes to the Microsoft C++ compiler and ot Visual Studio 2026 version 18.0 ships with the v145 platform toolset for MSBuild C++ projects and Microsoft C++ (MSVC) Build Tools version 14.50, which offers the best conformance, build performance, and runtime performance story yet. To access to all the new language features, build with `/std:c++latest`, or use `/std:c++23preview` if you want to be restricted to features up to C++23. -MSVC Build Tools version 14.50 preserves binary compatibility with code built with MSVC tools shipped in Visual Studio 2015 or later. For more information about binary compatibility, see [C++ binary compatibility between Visual Studio versions](https://learn.microsoft.com/en-us/cpp/porting/binary-compat-2015-2017). +MSVC Build Tools version 14.50 preserves binary compatibility with code built with MSVC tools shipped in Visual Studio 2015 or later. For more information about binary compatibility, see [C++ binary compatibility between Visual Studio versions](/cpp/porting/binary-compat-2015-2017). | For detailed information about | See | |---|---| @@ -60,7 +60,7 @@ MSVC Build Tools version 14.50 preserves binary compatibility with code built wi - Clang-Tidy code analysis improvements provide enhanced configuration options for faster builds and custom workflows. - Code analysis has new configuration options: You can now allocate more processors to run code analysis as part of your build, speeding up your development workflow. Plus, you can add custom arguments to the command line used to invoke `clang-tidy`, giving you complete control over your analysis setup. - Access the new options from **Project Properties** > **Code Analysis** > **Clang-Tidy**: ![Screenshot of Project Properties dialog showing clang-tidy configuration options including processor allocation and custom command line arguments](./media/clang-tidy-improvements.png). -- AddressSanitizer support for ARM64 Builds (Preview): For some time, the MSVC Build Tools have supported building projects that target x64 and x86 with [AddressSanitizer](https://learn.microsoft.com/cpp/sanitizers/asan?view=msvc-170), which allows you to identify hard-to-find bugs with zero false positives at runtime and increase memory safety. You can now use AddressSanitizer to target ARM64. This feature is in preview. +- AddressSanitizer support for ARM64 Builds (Preview): For some time, the MSVC Build Tools have supported building projects that target x64 and x86 with [AddressSanitizer](/cpp/sanitizers/asan), which allows you to identify hard-to-find bugs with zero false positives at runtime and increase memory safety. You can now use AddressSanitizer to target ARM64. This feature is in preview. **Productivity enhancements** @@ -90,7 +90,7 @@ The mobile development and embedded and IoT development tools are no longer supp - C++AMP - ARM32 toolchain: if you still need to build for ARM32, use an older version of the MSVC Build Tools. For more information, see [Side-by-side Minor Version MSVC Toolsets in Visual Studio 2019](https://devblogs.microsoft.com/cppblog/side-by-side-minor-version-msvc-toolsets-in-visual-studio-2019/). -- `/DEBUG:FASTLINK` compiler switch. Use [`/DEBUG:FULL`](https://learn.microsoft.com/cpp/build/reference/debug-generate-debug-info) for improved debugging support. +- `/DEBUG:FASTLINK` compiler switch. Use [`/DEBUG:FULL`](/cpp/build/reference/debug-generate-debug-info) for improved debugging support. ## Feedback and suggestions From 9a9bb2a7888d2f99366e3deb7c31e43475a8be8f Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 5 Nov 2025 11:03:54 -0800 Subject: [PATCH 2063/2255] small edits --- docs/overview/what-s-new-for-msvc.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md index 5dc2d70f7d9..5085a6beeef 100644 --- a/docs/overview/what-s-new-for-msvc.md +++ b/docs/overview/what-s-new-for-msvc.md @@ -50,7 +50,7 @@ MSVC Build Tools version 14.50 preserves binary compatibility with code built wi **Build enhancements** -- Visual Studio 2026 now includes CMake 4.1.2 by default. CMake also includes a Visual Studio 2026 generator and modern SLNX projects, so you can build Visual Studio C++ projects directly from CMake. +- Visual Studio 2026 now includes CMake 4.1.1 by default. CMake also includes a Visual Studio 2026 generator and modern SLNX projects, so you can build Visual Studio C++ projects directly from CMake. - Includes the latest version of the IncrediBuild engine and an updated extension that works with Visual Studio 2026 version 18.0. - Compiler backend runtime performance improvements. Up to 6% as measured on Unreal Engine's City Sample RenderThread. For more information, see [Why you should upgrade your C++ build tools](https://devblogs.microsoft.com/cppblog/upgrading-c-projects-to-visual-studio-2026/#why-you-should-upgrade-your-c++-build-tools). - The Visual Studio setup assistant can help you retarget your projects, so they build with the latest MSVC Build Tools. For more information, see [Retarget your projects with the setup assistant](https://devblogs.microsoft.com/cppblog/upgrading-c-projects-to-visual-studio-2026/#retarget-your-projects-with-the-setup-assistant). @@ -60,7 +60,7 @@ MSVC Build Tools version 14.50 preserves binary compatibility with code built wi - Clang-Tidy code analysis improvements provide enhanced configuration options for faster builds and custom workflows. - Code analysis has new configuration options: You can now allocate more processors to run code analysis as part of your build, speeding up your development workflow. Plus, you can add custom arguments to the command line used to invoke `clang-tidy`, giving you complete control over your analysis setup. - Access the new options from **Project Properties** > **Code Analysis** > **Clang-Tidy**: ![Screenshot of Project Properties dialog showing clang-tidy configuration options including processor allocation and custom command line arguments](./media/clang-tidy-improvements.png). -- AddressSanitizer support for ARM64 Builds (Preview): For some time, the MSVC Build Tools have supported building projects that target x64 and x86 with [AddressSanitizer](/cpp/sanitizers/asan), which allows you to identify hard-to-find bugs with zero false positives at runtime and increase memory safety. You can now use AddressSanitizer to target ARM64. This feature is in preview. +- AddressSanitizer support for ARM64 Builds (Preview): For some time, the MSVC Build Tools have supported building projects that target x64 and x86 with [AddressSanitizer](/cpp/sanitizers/asan), which allows you to identify hard-to-find memory safety issues with zero false positives at runtime and increase memory safety. Now you can use AddressSanitizer to target ARM64. This feature is in preview. **Productivity enhancements** @@ -82,7 +82,7 @@ MSVC Build Tools version 14.50 preserves binary compatibility with code built wi These changes allow for better performance, enhanced security, and alignment with the most recent Windows platform capabilities. -The MSVC compiler switch `/await` is being deprecated and will be removed in a future release. This switch enabled an early draft implementation of C++ coroutines using the `` header. Developers should transition to standard C++ coroutines by using the `` header available in C++20 and later. For C++14/17 projects, use `/await:strict` (which isn't being deprecated) to access the standard `` header without enabling other C++20 features. +The MSVC compiler switch [`/await`](/cpp/build/reference/await-enable-coroutine-support) is being deprecated and will be removed in a future release. This switch enabled an early draft implementation of C++ coroutines using the `` header. Developers should transition to standard C++ coroutines by using the `` header available in C++20 and later. For C++14/17 projects, use `/await:strict` (which isn't being deprecated) to access the standard `` header without enabling other C++20 features. The mobile development and embedded and IoT development tools are no longer supported. The mobile development with C++ workload and Android NDK component in the Visual Studio installer are no longer supported and will be removed in a future Visual Studio update. This impacts tooling support for iOS and Android development, including new projects, building, and debugging. @@ -90,7 +90,7 @@ The mobile development and embedded and IoT development tools are no longer supp - C++AMP - ARM32 toolchain: if you still need to build for ARM32, use an older version of the MSVC Build Tools. For more information, see [Side-by-side Minor Version MSVC Toolsets in Visual Studio 2019](https://devblogs.microsoft.com/cppblog/side-by-side-minor-version-msvc-toolsets-in-visual-studio-2019/). -- `/DEBUG:FASTLINK` compiler switch. Use [`/DEBUG:FULL`](/cpp/build/reference/debug-generate-debug-info) for improved debugging support. +- `/DEBUG:FASTLINK` linker switch. Use [`/DEBUG:FULL`](/cpp/build/reference/debug-generate-debug-info) for improved debugging support. ## Feedback and suggestions From 06f0f58de1c4f2d46a4f2b92b75edc31d313a8ef Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 5 Nov 2025 19:14:30 -0800 Subject: [PATCH 2064/2255] add support --- .../visual-cpp-language-conformance.md | 61 ++++++++++--------- 1 file changed, 33 insertions(+), 28 deletions(-) diff --git a/docs/overview/visual-cpp-language-conformance.md b/docs/overview/visual-cpp-language-conformance.md index d1414adf473..301128b5ac5 100644 --- a/docs/overview/visual-cpp-language-conformance.md +++ b/docs/overview/visual-cpp-language-conformance.md @@ -177,46 +177,47 @@ For details on conformance improvements, see [C++ conformance improvements in Vi |  [`P0735R1 Interaction of memory_order_consume with release sequences`](https://wg21.link/P0735R1) | N/A | |  [`P1236R1 Signed integers are two's complement`](https://wg21.link/P1236R1) | N/A | | **C++23 Core language features** | **Supported** | -|  [`P0330R8 Literal Suffix for (signed) size_t`](https://wg21.link/p0330r8) | no | -|  [`P0847R7 Deducing this`](https://wg21.link/p0847r7) | no | -|  [`P0849R8 auto(x): decay-copy in the language`](https://wg21.link/p0849r8) | no | -|  [`P1102R2 Down with ()!`](https://wg21.link/p1102r2) | no | -|  [`P1169R4 static operator()`](https://wg21.link/p1169r4) | no | -|  [`P1401R5 Narrowing contextual conversions to bool`](https://wg21.link/p1401r5) | no | -|  [`P1467R9 Extended floating-point types and standard names`](https://wg21.link/p1467r9) | no | +|  [`P0330R8 Literal Suffix for (signed) size_t`](https://wg21.link/p0330r8) | VS 2022 17.13 [23](#note_23) | +|  [`P0847R7 Deducing this`](https://wg21.link/p0847r7) | VS 2022 17.13 [23](#note_23) | +|  [`P0849R8 auto(x): decay-copy in the language`](https://wg21.link/p0849r8) | MSVC Build Tools version 14.50 [24](#note_24) | +|  [`P1102R2 Down with ()!`](https://wg21.link/p1102r2) | VS 2022 17.14 [23](#note_23) | +|  [`P1169R4 static operator()`](https://wg21.link/p1169r4) | VS 2022 17.14 [23](#note_23) | +|  [`P1401R5 Narrowing contextual conversions to bool`](https://wg21.link/p1401r5) | VS 2022 17.14 [23](#note_23) | +|  [`P1467R9 Extended floating-point types and standard names`](https://wg21.link/p1467r9) | No [U](#note_U) | |  [`P1774R8 Portable assumptions`](https://wg21.link/p1774r8) | no | -|  [`P1787R6 Declarations and where to find them`](https://wg21.link/p1787r6) | no | +|  [`P1787R6 Declarations and where to find them`](https://wg21.link/p1787r6) | No change required | |  [`P1847R4 Make declaration order layout mandated`](https://wg21.link/p1847r4) | VS 2022 17.0 [23](#note_23) | -|  [`P1938R3 if consteval`](https://wg21.link/p1938r3) | no | -|  [`P1949R7 C++ Identifier Syntax using Unicode Standard Annex 31`](https://wg21.link/p1949r7) | no | +|  [`P1938R3 if consteval`](https://wg21.link/p1938r3) | VS 2022 17.14 [23](#note_23) | +|  [`P1949R7 C++ Identifier Syntax using Unicode Standard Annex 31`](https://wg21.link/p1949r7) | MSVC Build Tools version 14.50 [24](#note_24) | |  [`P2029R4 Proposed resolution for core issues 411, 1656, and 2333; numeric and universal character escapes in character and string literals`](https://wg21.link/p2029r4) | no | -|  [`P2036R3 Change scope of lambda trailing-return-type`](https://wg21.link/p2036r3) | no | +|  [`P2036R3 Change scope of lambda trailing-return-type`](https://wg21.link/p2036r3) | MSVC Build Tools version 14.50 [24](#note_24) | |  [`P2071R2 Named universal character escapes`](https://wg21.link/p2071r2) | no | -|  [`P2128R6 Multidimensional subscript operator`](https://wg21.link/p2128r6) | no | -|  [`P2156R1 Allow Duplicate Attributes`](https://wg21.link/p2156r1) | no | -|  [`P2173R1 Attributes on Lambda-Expressions`](https://wg21.link/p2173r1) | no | +|  [`P2128R6 Multidimensional subscript operator`](https://wg21.link/p2128r6) | VS 2022 17.12 [23](#note_23) | +|  [`P2156R1 Allow Duplicate Attributes`](https://wg21.link/p2156r1) | MSVC Build Tools version 14.50 [24](#note_24) | +|  [`P2173R1 Attributes on Lambda-Expressions`](https://wg21.link/p2173r1) | VS 2022 17.14 [23](#note_23) | |  [`P2186R2 Remove Garbage Collection Support`](https://wg21.link/p2186r2) | VS 2022 17.0 [23](#note_23) | -|  [`P2201R1 Mixed string literal concatenation`](https://wg21.link/p2201r1) | no | -|  [`P2223R2 Trimming whitespaces before line splicing`](https://wg21.link/p2223r2) | no | -|  [`P2242R3 Non-literal variables (and labels and gotos) in constexpr functions`](https://wg21.link/p2242r3) | no | +|  [`P2201R1 Mixed string literal concatenation`](https://wg21.link/p2201r1) | No change required | +|  [`P2223R2 Trimming whitespaces before line splicing`](https://wg21.link/p2223r2) | MSVC Build Tools version 14.50 [24](#note_24) | +|  [`P2242R3 Non-literal variables (and labels and gotos) in constexpr functions`](https://wg21.link/p2242r3) | VS 2022 17.14 [23](#note_23) | |  [`P2246R1 Character encoding of diagnostic text`](https://wg21.link/p2246r1) | VS 2022 17.0 [23](#note_23) | -|  [`P2280R4 Using unknown pointers and references in constant expressions`](https://wg21.link/p2280r4) | no | -|  [`P2290R3 Delimited escape sequences`](https://wg21.link/p2290r3) | no | -|  [`P2295R6 Support for UTF-8 as a portable source file encoding`](https://wg21.link/p2295r6) | no | +|  [`P2266R3 Simpler implicit move`](https://wg21.link/p2266r3) | MSVC Build Tools version 14.50 [24](#note_24) | +|  [`P2280R4 Using unknown pointers and references in constant expressions`](https://wg21.link/p2280r4) | MSVC Build Tools version 14.50 [24](#note_24) | +|  [`P2290R3 Delimited escape sequences`](https://wg21.link/p2290r3) | MSVC Build Tools version 14.50 [24](#note_24) | +|  [`P2295R6 Support for UTF-8 as a portable source file encoding`](https://wg21.link/p2295r6) | [V](#note_V) | |  [`P2314R4 Character sets and encodings`](https://wg21.link/p2314r4) | no | |  [`P2316R2 Consistent character literal encoding`](https://wg21.link/p2316r2) | VS 2022 17.0 [23](#note_23) | |  [`P2324R2 Labels at the end of compound statements (C compatibility)`](https://wg21.link/p2324r2) | no | -|  [`P2327R1 De-deprecating volatile compound operations`](https://wg21.link/p2327r1) | no | -|  [`P2334R1 preprocessing directives elifdef and elifndef`](https://wg21.link/p2334r1) | no | -|  [`P2360R0 Extend init-statement to allow alias-declaration`](https://wg21.link/p2360r0) | no | +|  [`P2327R1 De-deprecating volatile compound operations`](https://wg21.link/p2327r1) | N/A | +|  [`P2334R1 preprocessing directives elifdef and elifndef`](https://wg21.link/p2334r1) | VS 2022 17.10 [23](#note_23) | +|  [`P2360R0 Extend init-statement to allow alias-declaration`](https://wg21.link/p2360r0) | MSVC Build Tools version 14.50 [24](#note_24) | |  [`P2362R3 Remove non-encodable wide character literals and multicharacter wide character literals`](https://wg21.link/p2362r3) | no | -|  [`P2437R1 Support for #warning`](https://wg21.link/p2437r1) | no | +|  [`P2437R1 Support for #warning`](https://wg21.link/p2437r1) | MSVC Build Tools version 14.50 [24](#note_24) | |  [`P2448R2 Relaxing some constexpr restrictions`](https://wg21.link/p2448r2) | no | -|  [`P2460R2 Relax requirements on wchar_t to match existing practices`](https://wg21.link/p2460r2) | no | -|  [`P2468R2 The Equality Operator You Are Looking For`](https://wg21.link/p2468r2) | no | -|  [`P2493R0 Missing feature test macros for C++20 core papers`](https://wg21.link/p2493r0) | no | +|  [`P2460R2 Relax requirements on wchar_t to match existing practices`](https://wg21.link/p2460r2) | N/A | +|  [`P2468R2 The Equality Operator You Are Looking For`](https://wg21.link/p2468r2) | VS 2022 17.6 [23](#note_23) | +|  [`P2493R0 Missing feature test macros for C++20 core papers`](https://wg21.link/p2493r0) | MSVC Build Tools version 14.50 [24](#note_24) | |  [`P2513R4 char8_t Compatibility and Portability Fix`](https://wg21.link/p2513r4) | VS 2022 17.4 [DR](#note_DR) | -|  [`P2579R0 Mitigation strategies for P2036 ”Changing scope for lambda trailing-return-type”`](https://wg21.link/p2579r0) | no | +|  [`P2579R0 Mitigation strategies for P2036 "Changing scope for lambda trailing-return-type"`](https://wg21.link/p2579r0) | MSVC Build Tools version 14.50 [24](#note_24) | |  [`P2582R1 Wording for class template argument deduction from inherited constructors`](https://wg21.link/p2582r1) | no | ## C++ Standard library features @@ -635,6 +636,10 @@ These algorithms aren't presently parallelized: **T** `` is currently supported when compiled as C++ (`/std:c++latest`). It isn't yet supported when compiled as C (`/std:c11` and `/std:c17`) + **U** Extended floating-point types are an optional C++23 feature. MSVC doesn't plan to support this feature before the completion of C++23 standardization. + + **V** Use the compiler options `/source-charset:utf-8` and `/we4828` to treat source files as UTF-8 encoded. + **14** These C++17 and C++20 features are always enabled, even when [`/std:c++14`](../build/reference/std-specify-language-standard-version.md) (the default) is specified. The reason is either because the feature was implemented before the introduction of the **`/std`** options, or because conditional implementation was undesirably complex. **17** These features are enabled by the [`/std:c++17`](../build/reference/std-specify-language-standard-version.md) or later compiler option. From c79a12c45222204b6aec76bf47d57ac6040aaf25 Mon Sep 17 00:00:00 2001 From: Augustin Popa Date: Thu, 6 Nov 2025 00:20:40 -0800 Subject: [PATCH 2065/2255] Finished reviewing /porting for VS 2026 and updating MSVC branding --- docs/porting/binary-compat-2015-2017.md | 18 ++++++++-------- docs/porting/build-system-changes.md | 2 +- .../features-deprecated-in-visual-studio.md | 2 +- .../floating-point-migration-issues.md | 2 +- docs/porting/ide-tools-for-upgrading-code.md | 18 ++++++---------- .../porting/media/vs-2026-setup-assistant.png | Bin 0 -> 79406 bytes .../modifying-winver-and-win32-winnt.md | 2 +- ...-of-potential-upgrade-issues-visual-cpp.md | 20 +++++++++--------- ...cts-from-earlier-versions-of-visual-cpp.md | 12 +++++------ docs/porting/use-native-multi-targeting.md | 16 +++++++------- 10 files changed, 44 insertions(+), 48 deletions(-) create mode 100644 docs/porting/media/vs-2026-setup-assistant.png diff --git a/docs/porting/binary-compat-2015-2017.md b/docs/porting/binary-compat-2015-2017.md index 21a50e72153..3c14d4b7413 100644 --- a/docs/porting/binary-compat-2015-2017.md +++ b/docs/porting/binary-compat-2015-2017.md @@ -6,20 +6,20 @@ helpviewer_keywords: ["binary compatibility, Visual C++"] --- # C++ binary compatibility between Visual Studio versions -The Microsoft C++ (MSVC) Build Tools in Visual Studio 2013 and earlier don't guarantee binary compatibility across major versions. You can't link object files, static libraries, dynamic libraries, and executables built by different versions of these toolsets. The ABIs, object formats, and runtime libraries are incompatible. +The Microsoft C++ (MSVC) Build Tools in Visual Studio 2013 and earlier don't guarantee binary compatibility across major versions. You can't link object files, static libraries, dynamic libraries, and executables built by different versions of these build tools. The ABIs, object formats, and runtime libraries are incompatible. -We've changed this behavior in Visual Studio 2015 and later versions. The runtime libraries and apps compiled by any of these versions of the compiler are binary-compatible. It's reflected in the C++ toolset major number, which starts with 14 for all versions since Visual Studio 2015. (The toolset version is v140 for Visual Studio 2015, v141 for 2017, v142 for 2019, and v143 for 2022). Say you have third-party libraries built by Visual Studio 2015. You can still use them in an application built by Visual Studio 2017, 2019, 2022, or 2026. There's no need to recompile with a matching toolset. The latest version of the Microsoft Visual C++ Redistributable package (the Redistributable) works for all of them. +We've changed this behavior in Visual Studio 2015 and later versions. The runtime libraries and apps compiled by any of these versions of the compiler are binary-compatible. It's reflected in the MSVC Build Tools major number, which starts with 14 for all versions since Visual Studio 2015. (The build tools version is v140 for Visual Studio 2015, v141 for 2017, v142 for 2019, and v143 for 2022). Say you have third-party libraries built by Visual Studio 2015. You can still use them in an application built by Visual Studio 2017, 2019, 2022, or 2026. There's no need to recompile with a matching version. The latest version of the Microsoft Visual C++ Redistributable package (the Redistributable) works for all of them. ## Restrictions on binary compatibility -There are three important restrictions on binary compatibility between the v140, v141, v142, v143, and v145 toolsets and minor numbered version updates: +There are three important restrictions on binary compatibility between the v140, v141, v142, v143, and v145 build tools and minor numbered version updates: -- Binaries created with different versions of the v140, v141, v142, v143, and v145 toolsets can be combined. The key rule is that the linker should only work with inputs built by a toolset that is the same version (or earlier) as itself. This applies to apps, import libraries, static libraries, and other files as described in [LINK input files](../build/reference/link-input-files.md). In some cases, an import library for an [implicitly linked](../build/linking-an-executable-to-a-dll.md#implicit-linking) DLL built by a later version of the toolset can be linked using an earlier version of the toolset--especially if the import library strictly uses `extern "C"` for the imports/exports. Here are some examples of what this all means: - - An app compiled with a 2017 toolset (v141, versions 15.0 to 15.9) can be linked to a static library compiled with Visual Studio 2022 version 17.8 (v143), but the linking must be done using a version 17.8 or later toolset. - - Apps and libraries built using VS 2015, 2017, 2019, 2022, and 2026 can be linked together, but the linking must be done using a version of the toolset that is as recent as, or more recent than, the most recent toolset used to build any of the binaries you pass to the linker. For example, given three binaries built with toolsets from VS 2015 version 14.3, VS 2017 version 15.9, and VS 2019 version 16.11, you can link them using any toolset version that is 16.11 or later. - - If a DLL is built with a newer toolset, the import library can sometimes be used with older toolsets if all of the exports follow the C language calling convention (`extern "C"`). However, the only officially supported case is consuming a newer windows SDK with an older toolset. -- The Redistributable your app uses has a similar binary-compatibility restriction. When you mix binaries built by different supported versions of the toolset, the Redistributable version must be at least as new as the latest toolset used by any app component. -- Static libraries or object files compiled using the [`/GL` (Whole program optimization)](../build/reference/gl-whole-program-optimization.md) compiler switch or linked using [`/LTCG` (Link-time code generation)](../build/reference/ltcg-link-time-code-generation.md) *aren't* binary-compatible across versions, including minor version updates. All object files and libraries compiled using **`/GL`** and **`/LTCG`** must use exactly the same toolset for the compile and the final link. For example, code built by using **`/GL`** in the Visual Studio 2019 version 16.7 toolset can't be linked to code built by using **`/GL`** in the Visual Studio 2019 version 16.8 toolset. The compiler emits [Fatal error C1047](../error-messages/compiler-errors-1/fatal-error-c1047.md). +- Binaries created with different versions of the v140, v141, v142, v143, and v145 build tools can be combined. The key rule is that the linker should only work with inputs built by build tools that are the same version (or earlier) as itself. This applies to apps, import libraries, static libraries, and other files as described in [LINK input files](../build/reference/link-input-files.md). In some cases, an import library for an [implicitly linked](../build/linking-an-executable-to-a-dll.md#implicit-linking) DLL built by a later version of the build tools can be linked using an earlier version of the build tools--especially if the import library strictly uses `extern "C"` for the imports/exports. Here are some examples of what this all means: + - An app compiled with the 2017 build tools (v141, versions 15.0 to 15.9) can be linked to a static library compiled with Visual Studio 2022 version 17.8 (v143), but the linking must be done using a version 17.8 or later build tools. + - Apps and libraries built using VS 2015, 2017, 2019, 2022, and 2026 can be linked together, but the linking must be done using a version of the build tools that is as recent as, or more recent than, the most recent build tools used to build any of the binaries you pass to the linker. For example, given three binaries built with build tools from VS 2015 version 14.3, VS 2017 version 15.9, and VS 2019 version 16.11, you can link them using any build tools version that is 16.11 or later. + - If a DLL is built with newer build tools, the import library can sometimes be used with older build tools if all of the exports follow the C language calling convention (`extern "C"`). However, the only officially supported case is consuming a newer windows SDK with older build tools. +- The Redistributable your app uses has a similar binary-compatibility restriction. When you mix binaries built by different supported versions of the build tools, the Redistributable version must be at least as new as the latest build tools used by any app component. +- Static libraries or object files compiled using the [`/GL` (Whole program optimization)](../build/reference/gl-whole-program-optimization.md) compiler switch or linked using [`/LTCG` (Link-time code generation)](../build/reference/ltcg-link-time-code-generation.md) *aren't* binary-compatible across versions, including minor version updates. All object files and libraries compiled using **`/GL`** and **`/LTCG`** must use exactly the same build tools for the compile and the final link. For example, code built by using **`/GL`** in the Visual Studio 2019 version 16.7 build tools can't be linked to code built by using **`/GL`** in the Visual Studio 2019 version 16.8 build tools. The compiler emits [Fatal error C1047](../error-messages/compiler-errors-1/fatal-error-c1047.md). ## Upgrade the Microsoft Visual C++ Redistributable from Visual Studio 2015 and later diff --git a/docs/porting/build-system-changes.md b/docs/porting/build-system-changes.md index bcd58b4a3d7..afde5d89f65 100644 --- a/docs/porting/build-system-changes.md +++ b/docs/porting/build-system-changes.md @@ -7,7 +7,7 @@ ms.assetid: e564d95f-a6cc-4d97-b57e-1a71daf66f4a --- # VCBuild vs. MSBuild: Build system changes in Visual Studio 2010 -The MSBuild system for C++ projects was introduced in Visual Studio 2010. In Visual Studio 2008 and earlier releases, the VCBuild system was used. Certain file types and concepts that depended on VCBuild either do not exist or are represented differently in MSBuild. This document discusses the differences in the current build system. To convert a Visual Studio 2008 project to MSBuild, you must use Visual Studio 2010. After the project is converted, you should use the latest version of Visual Studio to upgrade to the current IDE and compiler toolset. For more information, including how to obtain Visual Studio 2010, see [Instructions for Visual Studio 2008](use-native-multi-targeting.md#instructions-for-visual-studio-2008). +The MSBuild system for C++ projects was introduced in Visual Studio 2010. In Visual Studio 2008 and earlier releases, the VCBuild system was used. Certain file types and concepts that depended on VCBuild either do not exist or are represented differently in MSBuild. This document discusses the differences in the current build system. To convert a Visual Studio 2008 project to MSBuild, you must use Visual Studio 2010. After the project is converted, you should use the latest version of Visual Studio to upgrade to the current IDE and build tools. For more information, including how to obtain Visual Studio 2010, see [Instructions for Visual Studio 2008](use-native-multi-targeting.md#instructions-for-visual-studio-2008). The following sections summarize the changes from VCBuild to MSBuild. If your VCBuild project has custom build rules or macros that aren't recognized by MSBuild, see [Visual Studio Projects - C++](../build/creating-and-managing-visual-cpp-projects.md) to learn how to translate those instructions to the MSBuild system. The initial conversion from VCBuild to MSBuild is just an intermediate step. It isn't necessary to get the project file completely correct or to get the program to compile without errors. You are only using Visual Studio 2010 to convert the project to MSBuild format so that you get the project working in the latest version of Visual Studio. diff --git a/docs/porting/features-deprecated-in-visual-studio.md b/docs/porting/features-deprecated-in-visual-studio.md index 38a850fda85..a5fabcb63b9 100644 --- a/docs/porting/features-deprecated-in-visual-studio.md +++ b/docs/porting/features-deprecated-in-visual-studio.md @@ -12,7 +12,7 @@ This article is a non-exhaustive list of C++ features deprecated in Visual Studi ### Support for Windows XP development -Visual Studio 2019 and later versions don't include current toolset support for creating code for Windows XP. Support for Windows XP development by using the v141_xp toolset that shipped in Visual Studio 2017 is still available as an optional component in the Visual Studio Installer. For information on how to install the v141_xp Windows XP platform toolset, see [Configuring programs for Windows XP](../build/configuring-programs-for-windows-xp.md). +Visual Studio 2019 and later versions don't include current build tools support for creating code for Windows XP. Support for Windows XP development by using the v141_xp build tools that shipped in Visual Studio 2017 is still available as an optional component in the Visual Studio Installer. For information on how to install the v141_xp Windows XP platform toolset, see [Configuring programs for Windows XP](../build/configuring-programs-for-windows-xp.md). ## Visual Studio 2022 diff --git a/docs/porting/floating-point-migration-issues.md b/docs/porting/floating-point-migration-issues.md index c35a83ae9c3..288ee1d1433 100644 --- a/docs/porting/floating-point-migration-issues.md +++ b/docs/porting/floating-point-migration-issues.md @@ -22,7 +22,7 @@ Code-generation correctness improvements in different floating point modes in Vi ## How to get identical results -In most cases, the floating-point changes in the newest compilers and libraries result in faster or more correct behavior, or both. You may even see better processor power performance when SSE2 instructions replace x87 instructions. However, if you have code that must precisely replicate the floating point behavior of an older compiler, consider using Visual Studio native multi-targeting capabilities, and build the affected project with the older toolset. For more information, see [Use native multi-targeting in Visual Studio to build old projects](use-native-multi-targeting.md). +In most cases, the floating-point changes in the newest compilers and libraries result in faster or more correct behavior, or both. You may even see better processor power performance when SSE2 instructions replace x87 instructions. However, if you have code that must precisely replicate the floating point behavior of an older compiler, consider using Visual Studio native multi-targeting capabilities, and build the affected project with the older build tools. For more information, see [Use native multi-targeting in Visual Studio to build old projects](use-native-multi-targeting.md). ## See also diff --git a/docs/porting/ide-tools-for-upgrading-code.md b/docs/porting/ide-tools-for-upgrading-code.md index 13f9f48a5f4..e01cc9dc646 100644 --- a/docs/porting/ide-tools-for-upgrading-code.md +++ b/docs/porting/ide-tools-for-upgrading-code.md @@ -1,14 +1,14 @@ --- title: "Visual Studio IDE tools for upgrading C++ code" description: "The C++ code editor and code analysis tools in Visual Studio help you to modernize your C++ code base." -ms.date: "11/13/2019" +ms.date: "11/06/2025" ms.topic: "concept-article" --- # Visual Studio IDE tools for upgrading C++ code Visual Studio helps you upgrade legacy C++ code with compiler options, code analysis warnings, and editor features such as Quick Fixes, Quick Info, and the enhanced scroll bar. The term "legacy code" refers to any of these categories: -- Code that was formerly allowed by the Microsoft C++ compiler (MSVC) but never conformed to the C++ standard. +- Code that was formerly allowed by the Microsoft C++ (MSVC) compiler but never conformed to the C++ standard. To upgrade older non-conforming MSVC code, turn on the [`/permissive-`](../build/reference/permissive-standards-conformance.md) compiler option. All instances of non-conforming usages are underlined with red squiggles in the code editor. The error messages in the **Error List** window include a recommendation for how to fix the error. Click on the error code to go to its help page in the documentation. If fixing all the errors at once is impractical, you can upgrade non-conforming code in stages by turning on the **`/permissive-`** option, fixing some errors, then turning the option off again. The code will compile with the new improvements, and you can go back and fix the remaining issues at a later time. See the [`/permissive-`](../build/reference/permissive-standards-conformance.md) page for examples of non-conforming MSVC code. @@ -22,19 +22,15 @@ Visual Studio helps you upgrade legacy C++ code with compiler options, code anal ## Open and convert a legacy project -If your legacy project is based on an older version of Visual Studio, you can open it in Visual Studio 2017 or Visual Studio 2019. Visual Studio automatically converts it to the current project schema with support for all the latest compiler and IDE features. +If your legacy projects are based on an older version of Visual Studio, you can still load them in a newer version and work on it there while maintaining backwards compatibility with the older version. When you are ready to permanently move to the new version of Visual Studio, you can retarget your projects. This will enable you to use the latest build tools and project features in the IDE, but you will no longer be able to load the retargeted projects in the older version of Visual Studio. -![Screenshot of the Upgrade a project dialog.](media/upgrade-dialog-v142.png "Upgrade a project") +To retarget projects to the Visual Studio 2026 format, you can use the setup assistant which appears the first time you open a solution with older projects. You can also access it by right-clicking the solution in Solution Explorer and selecting *Retarget solution*. -For more information, see [Upgrade C++ projects from earlier versions of Visual Studio](upgrading-projects-from-earlier-versions-of-visual-cpp.md). - -## Search the code base +![Screenshot of the Visual Studio 2026 setup assistant.](media/vs-2026-setup-assistant.png "Upgrade projects") -Upgrading a code base often involves searching through multiple files. To search for anything in your code base, press **Ctrl+T** to bring up the **Go to All** search box. +The setup assistant then gives you the choice to either stay on the older version and install any missing build tools or Windows SDKs to be able to build, or retarget the projects to upgrade them. You can make retargeting selections for each project in the solution or click *Retarget all*, then click *Apply* to perform the upgrade. -![Screenshot of the Go to all dialog.](media/go-to-all.png "Go to all") - -To narrow the search scope, type one of the 1-letter filters, followed by a space and then the thing you are looking for. +For more information, see [Upgrade C++ projects from earlier versions of Visual Studio](upgrading-projects-from-earlier-versions-of-visual-cpp.md). ## Error List diff --git a/docs/porting/media/vs-2026-setup-assistant.png b/docs/porting/media/vs-2026-setup-assistant.png new file mode 100644 index 0000000000000000000000000000000000000000..85fe981738603464b4218a024b65e5f78b52cb7a GIT binary patch literal 79406 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 gE!9`4#M|a0QJAIpRT7OeFv [!NOTE] -> This section applies to applications and libraries built with Visual Studio 2013 and earlier. The toolsets used in Visual Studio 2015, Visual Studio 2017 and Visual Studio 2019 are binary compatible. For more information, see [C++ Binary Compatibility between Visual Studio versions](binary-compat-2015-2017.md). +> This section applies to applications and libraries built with Visual Studio 2013 and earlier. The build tools used in Visual Studio 2015, Visual Studio 2017 and Visual Studio 2019 are binary compatible. For more information, see [C++ Binary Compatibility between Visual Studio versions](binary-compat-2015-2017.md). When you upgrade an app from Visual Studio 2013 or before to a newer version, it's often both advisable and necessary to upgrade all libraries and DLLs the app links to. Either you must have access to the source code, or the library vendor must provide new binary files compiled with the same major version of the compiler. If one of these conditions is true, then you can skip this section, which deals with the details of binary compatibility. If neither is the case, then the libraries might not work in your upgraded app. The information in this section will help you understand whether you can continue with the upgrade. -### Toolset +### Build tools -The *`.obj`* and *`.lib`* file formats are well defined and rarely change. Sometimes additions are made to these file formats, but these additions generally don't affect the ability of newer toolsets to consume object files and libraries produced by older toolsets. The major exception is if you compile using [`/GL` (Whole Program Optimization)](../build/reference/gl-whole-program-optimization.md). If you compile using `/GL`, you can only link the resulting object file by using the same toolset that was used to produce it. So, if you produce an object file with `/GL` and use a Visual Studio 2017 (v141) compiler, you must link it using the Visual Studio 2017 (v141) linker. It's because the internal data structures within the object files aren't stable across major versions of the toolset. Newer toolsets don't understand the older data formats. +The *`.obj`* and *`.lib`* file formats are well defined and rarely change. Sometimes additions are made to these file formats, but these additions generally don't affect the ability of newer build tools to consume object files and libraries produced by older build tools. The major exception is if you compile using [`/GL` (Whole Program Optimization)](../build/reference/gl-whole-program-optimization.md). If you compile using `/GL`, you can only link the resulting object file by using the same build tools that were used to produce it. So, if you produce an object file with `/GL` and use a Visual Studio 2017 (v141) compiler, you must link it using the Visual Studio 2017 (v141) linker. It's because the internal data structures within the object files aren't stable across major versions of the build tools. Newer build tools don't understand the older data formats. -C++ doesn't have a stable application binary interface (ABI). But Visual Studio maintains a stable C++ ABI for all minor versions of a release. Visual Studio 2015 (v140), Visual Studio 2017 (v141), Visual Studio 2019 (v142), Visual Studio 2022 (v143), and Visual Studio 2026 (v145) toolsets vary only in their minor version. They all have the same major version number, which is 14. For more information, see [C++ Binary Compatibility between Visual Studio versions](binary-compat-2015-2017.md). +C++ doesn't have a stable application binary interface (ABI). But Visual Studio maintains a stable C++ ABI for all minor versions of a release. Visual Studio 2015 (v140), Visual Studio 2017 (v141), Visual Studio 2019 (v142), Visual Studio 2022 (v143), and Visual Studio 2026 (v145) build tools vary only in their minor version. They all have the same major version number, which is 14. For more information, see [C++ Binary Compatibility between Visual Studio versions](binary-compat-2015-2017.md). -If you have an object file that has external symbols with C++ linkage, that object file may not link correctly with object files produced by a different major version of the toolset. There are many possible outcomes: the link might fail entirely (for example, if name decoration changed). The link could succeed, but the app could fail at runtime (for example, if type layouts changed). Or your app might continue to work and nothing will go wrong. Also note, while the C++ ABI isn't stable, the C ABI and the subset of the C++ ABI required for COM are stable. +If you have an object file that has external symbols with C++ linkage, that object file may not link correctly with object files produced by a different major version of the build tools. There are many possible outcomes: the link might fail entirely (for example, if name decoration changed). The link could succeed, but the app could fail at runtime (for example, if type layouts changed). Or your app might continue to work and nothing will go wrong. Also note, while the C++ ABI isn't stable, the C ABI and the subset of the C++ ABI required for COM are stable. -If you link to an import library, any later version of the Visual Studio redistributable libraries that preserve ABI compatibility may be used at runtime. For example, if you compile and link your app by using the Visual Studio 2015 Update 3 toolset, you can use any later redistributable. That's because the 2015, 2017, 2019, 2022, and 2026 libraries have preserved backward binary compatibility. The reverse isn't true: You can't use a redistributable for an earlier version of the toolset than you used to build any component of your code. +If you link to an import library, any later version of the Visual Studio redistributable libraries that preserve ABI compatibility may be used at runtime. For example, if you compile and link your app by using the Visual Studio 2015 Update 3 build tools, you can use any later redistributable. That's because the 2015, 2017, 2019, 2022, and 2026 libraries have preserved backward binary compatibility. The reverse isn't true: You can't use a redistributable for an earlier version of the build tools than you used to build any component of your code. ### Libraries @@ -47,7 +47,7 @@ If you have a static library built by using an older version of the C Runtime he 1. If you can't (or don't want to) rebuild the static library, you may try linking with *`legacy_stdio_definitions.lib`*. If it satisfies the link-time dependencies of your static library, you'll want to thoroughly test the static library as it's used in the binary. Make sure it isn't adversely affected by any of the [behavioral changes that were made to the Universal CRT](visual-cpp-change-history-2003-2015.md#BK_CRT). -1. Perhaps your static library's dependencies aren't satisfied by *`legacy_stdio_definitions.lib`* or the library doesn't work with the Universal CRT because of behavior changes. In this case, we recommend you encapsulate your static library into a DLL that you link with the required version of the Microsoft C Runtime. For example, if the static library was built using Visual Studio 2013, build this DLL using the Visual Studio 2013 toolset and C++ libraries as well. By building the library into a DLL, you encapsulate the implementation detail that is its dependency on a particular version of the Microsoft C Runtime. Be careful the DLL interface doesn't leak details of which C Runtime it uses, for example, if it returns a `FILE*` across the DLL boundary, or a `malloc`-allocated pointer the caller must `free`. +1. Perhaps your static library's dependencies aren't satisfied by *`legacy_stdio_definitions.lib`* or the library doesn't work with the Universal CRT because of behavior changes. In this case, we recommend you encapsulate your static library into a DLL that you link with the required version of the Microsoft C Runtime. For example, if the static library was built using Visual Studio 2013, build this DLL using the Visual Studio 2013 build tools and C++ libraries as well. By building the library into a DLL, you encapsulate the implementation detail that is its dependency on a particular version of the Microsoft C Runtime. Be careful the DLL interface doesn't leak details of which C Runtime it uses, for example, if it returns a `FILE*` across the DLL boundary, or a `malloc`-allocated pointer the caller must `free`. Use of multiple CRTs in a single process isn't in and of itself problematic. (In fact, most processes load multiple CRT DLLs. For example, Windows operating system components depend on *`msvcrt.dll`*, and the CLR depends on its own private CRT.) Problems arise when you jumble state from different CRTs. For example, you shouldn't allocate memory using `msvcr110.dll!malloc` and attempt to deallocate that memory using `msvcr120.dll!free`, and you shouldn't attempt to open a FILE using `msvcr110!fopen` and attempt to read from that FILE using `msvcr120!fread`. As long as you don't jumble state from different CRTs, you can safely have multiple CRTs loaded in a single process. @@ -72,7 +72,7 @@ For unresolved symbols, you might need to fix up your project settings. - If the external is defined in a *`.lib`* file, have you specified the lib path in the project properties, and is the correct version of the *`.lib`* file located there? -- Are you attempting to link to a *`.lib`* file that was compiled with a different version of Visual Studio? If so, see the previous section on library and toolset dependencies. +- Are you attempting to link to a *`.lib`* file that was compiled with a different version of Visual Studio? If so, see the previous section on library and build tools dependencies. - Do the types of the arguments at the call site actually match an existing overload of the function? Verify the underlying types are what you expect, both for any typedefs in the function's signature and in the code that calls the function. @@ -155,7 +155,7 @@ Windows API documentation lists the minimum or maximum supported operating syste ### Windows version -When upgrading a program that uses the Windows API either directly or indirectly, you need to decide the minimum Windows version to support. In most cases, Windows 7 is a good choice. For more information, see [Header file problems](porting-guide-spy-increment.md#header_file_problems). The `WINVER` macro defines the oldest version of Windows that your program is designed to run on. If your MFC program sets `WINVER` to 0x0501 (Windows XP) you'll get a warning because MFC no longer supports XP, even if the compiler toolset itself has an XP mode. Compiler toolset support for Windows XP ended in Visual Studio 2017, and support for Windows 7, 8.0 and 8.1 ended in Visual Studio 2026. +When upgrading a program that uses the Windows API either directly or indirectly, you need to decide the minimum Windows version to support. In most cases, Windows 7 is a good choice. For more information, see [Header file problems](porting-guide-spy-increment.md#header_file_problems). The `WINVER` macro defines the oldest version of Windows that your program is designed to run on. If your MFC program sets `WINVER` to 0x0501 (Windows XP) you'll get a warning because MFC no longer supports XP, even if the build tools have an XP mode. Build tools support for Windows XP ended in Visual Studio 2017, and support for Windows 7, 8.0 and 8.1 ended in Visual Studio 2026. For more information, see [Updating the target windows version](porting-guide-spy-increment.md#updating_winver) and [More outdated header files](porting-guide-spy-increment.md#outdated_header_files). diff --git a/docs/porting/upgrading-projects-from-earlier-versions-of-visual-cpp.md b/docs/porting/upgrading-projects-from-earlier-versions-of-visual-cpp.md index fdda74285ee..2fb6385ce29 100644 --- a/docs/porting/upgrading-projects-from-earlier-versions-of-visual-cpp.md +++ b/docs/porting/upgrading-projects-from-earlier-versions-of-visual-cpp.md @@ -1,21 +1,21 @@ --- title: "Upgrade C++ projects from earlier versions of Visual Studio" description: "How to upgrade Microsoft C++ projects from older versions of Visual Studio." -ms.date: 04/07/2022 +ms.date: 11/05/2025 helpviewer_keywords: ["32-bit code porting", "upgrading Visual C++ applications, 32-bit code"] ms.assetid: 18cdacaa-4742-43db-9e4c-2d9e73d8cc84 ms.topic: upgrade-and-migration-article --- # Upgrade C++ projects from earlier versions of Visual Studio -To upgrade a project created in an earlier version of Visual Studio, just open the project in the latest version of Visual Studio. Visual Studio offers to upgrade the project to the current schema. +To upgrade a project created in an earlier version of Visual Studio, start by opening the project in the latest version of Visual Studio. If you are still using the older version of Visual Studio side-by-side, you can choose not to upgrade your projects until you're ready to maintain compatibility with both versions. -If you choose **No**, the project doesn't get upgraded. For projects created in Visual Studio 2010 and later, you can still use the project in the newer version of Visual Studio. Just set your project properties to continue to target the older toolset. If you leave the older version of Visual Studio on your computer, its toolset is available in later versions. For example, if your project must continue to run on Windows XP, you can upgrade to Visual Studio 2019. You then specify the toolset as v141_xp or earlier in your project properties. For more information, see [Use native multi-targeting in Visual Studio to build old projects](use-native-multi-targeting.md). +In Visual Studio 2026, this experience has been enhanced with a **setup assistant**. The setup assistant offers you the chance to install missing tools using the Visual Studio installer and stay on an older version or retarget your projects to the latest version. If you lose track of the setup assistant, you can open it by right-clicking your solution in Solution Explorer and selecting *Retarget solution*. -If you choose **Yes**, then the project gets upgraded in place. It can't be converted back to the earlier version. In upgrade scenarios, that's why it's good practice to make a backup copy of the existing project and solution files. +With the setup assistant opened, you can choose an action for each target or select the *Retarget all* button at the top to set all projects at once. Then click *Apply* to complete the upgrade in place. Once your projects have been retargeted, they can't be converted back to the earlier version. In upgrade scenarios, that's why it's good practice to make a backup copy of the existing project and solution files. > [!NOTE] -> Visual Studio 2022 has deprecated support for the upgrade of project types that have *`.dsw`* or *`.dsp`* extensions. You can use an earlier version of Visual Studio, such as Visual Studio 2019, to upgrade these projects, then upgrade them in Visual Studio 2022 to use the latest tools and features of Visual Studio. +> Visual Studio 2022 and later have deprecated support for the upgrade of project types that have *`.dsw`* or *`.dsp`* extensions. You can use an earlier version of Visual Studio, such as Visual Studio 2019, to upgrade these projects, then upgrade them again in Visual Studio 2022 or later to use the latest tools and features of Visual Studio. ## Upgrade reports @@ -37,7 +37,7 @@ When you upgrade a project, you get an upgrade report. The report is also saved - Runtime errors or unexpected results because of behavior changes. -- Errors that were introduced in the tools. If you find an issue, report it to the Visual C++ team through your normal support channels or by using the [Visual Studio C++ Developer Community](https://aka.ms/feedback/report?space=62) page. +- Errors that were introduced in the tools. If you find an issue, report it to the Microsoft C++ team through your normal support channels or by using the [Visual Studio C++ Developer Community](https://aka.ms/feedback/report?space=62) page. Some upgraded projects and solutions can be built successfully without modification. However, most projects will likely require changes to both project settings and your source code. There's no single correct way to go about fixing these issues, but we recommend using a phased approach. Before you start, review [Overview of potential upgrade issues](../porting/overview-of-potential-upgrade-issues-visual-cpp.md) for more information on many kinds of common errors. diff --git a/docs/porting/use-native-multi-targeting.md b/docs/porting/use-native-multi-targeting.md index bdc24e3620d..d3a7c75cc0e 100644 --- a/docs/porting/use-native-multi-targeting.md +++ b/docs/porting/use-native-multi-targeting.md @@ -9,7 +9,7 @@ ms.assetid: b115aabe-a9dc-4525-90d3-367d97ea20c9 Normally, we recommend that you update your projects when you install the latest version of Visual Studio. The cost of updating your projects and code is often more than offset by the benefits of the new IDE, compiler, libraries, and tools. However, we know that you may not be able to update some projects. You may have binaries that are tied to older libraries or platforms that for maintenance reasons you can't upgrade. Your code may use non-standard language constructs that would break if you moved to a more recent compiler. Your code might rely on third-party libraries compiled for a specific version of Microsoft C++ (MSVC). Or you may produce libraries for others that must target a specific older version of MSVC. -Fortunately, you can use Visual Studio to build projects that target older compiler toolsets and libraries. If you still have the original tools installed, you don't have to upgrade a project from as far back as Visual Studio 2010 to take advantage of new features in the IDE: +Fortunately, you can use Visual Studio to build projects that target older build tools and libraries. If you still have the original tools installed, you don't have to upgrade a project from as far back as Visual Studio 2010 to take advantage of new features in the IDE: - New C++ refactoring capabilities and editor features - New Diagnostics tools debugger window and Error List window @@ -19,9 +19,9 @@ Fortunately, you can use Visual Studio to build projects that target older compi You can also target Visual Studio 2008 projects, but they can't be used unchanged. For details, see the **Instructions for Visual Studio 2008** section. -The latest versions of Visual Studio support native multi-targeting and round-tripping of projects. Native multi-targeting is the ability of the latest IDE to build using toolsets installed by previous versions of Visual Studio. Round-tripping is the ability of the latest IDE to load projects created by a previous IDE version without making any changes to the project. If you install the latest version of Visual Studio side-by-side with your existing version, you can use the new version of the IDE with the compiler and tools from the existing version to build your projects. Other members of your team can continue to use the projects in the older version of Visual Studio. +The latest versions of Visual Studio support native multi-targeting and round-tripping of projects. Native multi-targeting is the ability of the latest IDE to build using build tools installed by previous versions of Visual Studio. Round-tripping is the ability of the latest IDE to load projects created by a previous IDE version without making any changes to the project. If you install the latest version of Visual Studio side-by-side with your existing version, you can use the new version of the IDE with the compiler and tools from the existing version to build your projects. Other members of your team can continue to use the projects in the older version of Visual Studio. -When you use an older toolset, you can take advantage of many of the latest IDE features, but not the latest advances in the C++ compiler, libraries and build tools. For example, you won't be able to use the new language conformance improvements, new debugging and code analysis features, or get the faster build throughput of the latest toolset. There are also some IDE features that are incompatible with older toolsets. For example, type information may be missing in the Memory Profiler, and the refactoring operation **Convert to Raw string literals** generates C++11-conformant code that won't compile when you use Visual Studio 2012 or older toolsets. +When you use an older build tools version, you can take advantage of many of the latest IDE features, but not the latest advances in the C++ compiler, libraries and build tools. For example, you won't be able to use the new language conformance improvements, new debugging and code analysis features, or get the faster build throughput of the latest build tools. There are also some IDE features that are incompatible with older build tools. For example, type information may be missing in the Memory Profiler, and the refactoring operation **Convert to Raw string literals** generates C++11-conformant code that won't compile when you use Visual Studio 2012 or older build tools. ## How to use native multi-targeting in Visual Studio 2026 @@ -48,21 +48,21 @@ First, in addition to the current version of Visual Studio, you must install Vis Next, you must update your Visual Studio 2008 solution and projects to the current version of Visual Studio. We recommend you create a backup of your projects and solution files before the upgrade. To start the upgrade process, open the solution in the current version of Visual Studio. When you get the upgrade prompt, review the information presented, and then choose **OK** to start the upgrade. If the solution has more than one project, you must update each project. The wizard creates new *`.vcxproj`* project files side-by-side with the existing *`.vcproj`* files. As long as you also have a copy of the original *`.sln`* file, the upgrade has no other effect on your existing Visual Studio 2008 projects. > [!NOTE] -> The following steps apply to multi-targeting scenarios only. If you intend to permanently upgrade the project to a later toolset, then your next step is to save the project, open it in the latest version of Visual Studio, and address the build issues that appear there. +> The following steps apply to multi-targeting scenarios only. If you intend to permanently upgrade the project to a later build tools version, then your next step is to save the project, open it in the latest version of Visual Studio, and address the build issues that appear there. When the upgrade completes, if the log report has errors or warnings for any of your projects, review them carefully. The conversion from **VCBuild** to **MSBuild** can cause issues. Make sure you understand and implement any action items listed in the report. For more information on the upgrade log report and issues that may occur when converting **VCBuild** to **MSBuild**, see the [C++ Native Multi-Targeting](https://devblogs.microsoft.com/cppblog/c-native-multi-targeting/) blog post. -When the upgrade is complete and you've fixed any issues in the log file, your solution now targets the latest toolset. As the final step, change the properties for each project in the solution to use the Visual Studio 2008 toolset. With the solution loaded in the current version of Visual Studio, for each project in the solution, open the Project **Property Pages** dialog box: Right-click on the project in **Solution Explorer** and then select **Properties**. In the **Property Pages** dialog box, change the **Configuration** drop-down value to **All Configurations**. In **Configuration Properties**, select **General**, and then change **Platform Toolset** to **Visual Studio 2008 (v90)**. +When the upgrade is complete and you've fixed any issues in the log file, your solution now targets the latest build tools. As the final step, change the properties for each project in the solution to use the Visual Studio 2008 build tools. With the solution loaded in the current version of Visual Studio, for each project in the solution, open the Project **Property Pages** dialog box: Right-click on the project in **Solution Explorer** and then select **Properties**. In the **Property Pages** dialog box, change the **Configuration** drop-down value to **All Configurations**. In **Configuration Properties**, select **General**, and then change **Platform Toolset** to **Visual Studio 2008 (v90)**. After this change, the Visual Studio 2008 compiler and libraries are used to generate project binaries when you build the solution in the current version of Visual Studio. -## Install an older Visual Studio toolset +## Install older Visual Studio build tools -You may have an old Visual Studio C++ project that you can't or don't want to upgrade. To build it, you need the platform toolset version that matches your project. To get the toolset, you can install the free Visual Studio Community or Express edition of the version you need. Every version of Visual Studio from Visual Studio 2008 on can install the compiler, tools, and libraries you need to target that version from the current Visual Studio. Search the Microsoft Download Center to find and download a particular version of Visual Studio. Make sure you choose the C++ installation options during setup. After setup completes, run that version of Visual Studio to install any updates. Also check for any Windows Update changes that might be required. This update check process may need to be repeated more than once to get every update. +You may have an old Visual Studio C++ project that you can't or don't want to upgrade. To build it, you need the build tools version that matches your project. To get the build tools, you can install the free Visual Studio Community or Express edition of the version you need. Every version of Visual Studio from Visual Studio 2008 on can install the compiler, libraries, and other build tools you need to target that version from the current Visual Studio. Search the Microsoft Download Center to find and download a particular version of Visual Studio. Make sure you choose the C++ installation options during setup. After setup completes, run that version of Visual Studio to install any updates. Also check for any Windows Update changes that might be required. This update check process may need to be repeated more than once to get every update. For the currently available downloads, see [Download older Visual Studio software](https://visualstudio.microsoft.com/vs/older-downloads/). -When these products are installed, the **Platform Toolset** property drop-down in the **Property Pages** dialog box is automatically updated to show the available toolsets. You can now use the latest version of Visual Studio to build projects that use an older version of the toolset: no conversion or upgrade required. +When these products are installed, the **MSVC Build Tools Version** property drop-down in the **Property Pages** dialog box is automatically updated to show the available build tools versions. In some cases, there may also be new choices for the **Platform Toolset** property. You can now use the latest version of Visual Studio to build projects that use an older version of the build tools: no conversion or upgrade required. ## See also From 9aa651d08ae247cbe362dd4cdd44929d3c1e4e56 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Thu, 6 Nov 2025 10:02:42 -0800 Subject: [PATCH 2066/2255] edit --- docs/porting/features-deprecated-in-visual-studio.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/porting/features-deprecated-in-visual-studio.md b/docs/porting/features-deprecated-in-visual-studio.md index a5fabcb63b9..5f228e31871 100644 --- a/docs/porting/features-deprecated-in-visual-studio.md +++ b/docs/porting/features-deprecated-in-visual-studio.md @@ -32,7 +32,7 @@ Visual Studio 2026 deprecated the `/await` switch, which will be removed in a fu ### Support for Windows 7, 8, and 8.1 for Microsoft C++ Build Tools -In Visual Studio 2026, the Microsoft C++ (MSVC) Build Tools have updated their minimum supported operating systems. With this release, the Build Tools no longer support targeting: +In Visual Studio 2026, the Microsoft C++ (MSVC) Build Tools raised the minimum supported operating system requirements. With this release, the Build Tools no longer target: - Windows 7 / Windows Server 2008 R2 - Windows 8 / Windows Server 2012 @@ -40,4 +40,4 @@ In Visual Studio 2026, the Microsoft C++ (MSVC) Build Tools have updated their m To build applications using the latest C++ tools, your target platform must be **Windows 10** or **Windows Server 2016** (or later). -These changes allow for better performance, enhanced security, and alignment with the most recent Windows platform capabilities. \ No newline at end of file +These changes allow for better performance, enhanced security, and alignment with the most recent Windows platform capabilities. From 4b36d7cf5b88478a52f46159d5158ae85848017b Mon Sep 17 00:00:00 2001 From: Pat Altimore <17440249+PatAltimore@users.noreply.github.com> Date: Thu, 6 Nov 2025 10:07:33 -0800 Subject: [PATCH 2067/2255] Add Azure SDK for C++ --- .../cloud-and-web-programming-in-visual-cpp.md | 15 ++++++++++++++- docs/index.yml | 4 +++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/docs/cloud/cloud-and-web-programming-in-visual-cpp.md b/docs/cloud/cloud-and-web-programming-in-visual-cpp.md index f2c9b0519be..b8b79609cd6 100644 --- a/docs/cloud/cloud-and-web-programming-in-visual-cpp.md +++ b/docs/cloud/cloud-and-web-programming-in-visual-cpp.md @@ -1,7 +1,7 @@ --- title: "Cloud and Web Programming in Visual C++" description: "Learn more about: Cloud and Web Programming in Visual C++" -ms.date: "05/14/2019" +ms.date: "11/06/2025" ms.topic: "overview" ms.custom: intro-overview --- @@ -11,6 +11,19 @@ In C++, you have several options for connecting to the web and the cloud. ## Microsoft Azure SDKs and REST services +- [Azure SDK for C++](/azure/developer/cpp/sdk/overview) + + The Azure SDK for C++ provides a set of client libraries that enable your C++ applications to interact seamlessly with Azure services, whether in local or cloud environments. These libraries, built on top of the Azure REST API, offer familiar C++ syntax and implement common cloud patterns such as authentication, logging, and retries.The SDK provides a consistent interface for working with Azure services including: + + - Azure Core + - Azure Identity + - Azure Attestation + - Azure Event Hubs + - Azure Storage + - Azure Key Vault + + To get started, see [Install and integrate from the Azure SDK for C++](/azure/developer/cpp/sdk/install-and-integrate-the-sdk/). + - [Microsoft Azure Storage Client Library for C++](https://azure.github.io/azure-storage-cpp/) The Azure Storage Client Library for C++ provides a comprehensive API for working with Azure storage, including but not limited to the following abilities: diff --git a/docs/index.yml b/docs/index.yml index 94be641a2bf..a2bdc2a4d8b 100644 --- a/docs/index.yml +++ b/docs/index.yml @@ -10,7 +10,7 @@ metadata: ms.topic: hub-page author: tylermsft ms.author: twhitney - ms.date: 06/04/2020 + ms.date: 11/06/2025 ms.custom: intro-landing-hub # highlightedContent section (optional) @@ -205,6 +205,8 @@ additionalContent: url: parallel/parallel-programming-in-visual-cpp.md - text: Cloud and networking libraries url: cloud/cloud-and-web-programming-in-visual-cpp.md + - text: Azure SDK for C++ + url: /azure/developer/cpp/sdk/overview/ - text: Universal Windows Platform libraries url: cppcx/namespaces-reference-c-cx.md - text: vcpkg package manager From 3bc5650b1b83a33bd7a8b9e09b1f041dc1206184 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Thu, 6 Nov 2025 10:08:18 -0800 Subject: [PATCH 2068/2255] edit --- docs/porting/ide-tools-for-upgrading-code.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/porting/ide-tools-for-upgrading-code.md b/docs/porting/ide-tools-for-upgrading-code.md index e01cc9dc646..f37cc4db60c 100644 --- a/docs/porting/ide-tools-for-upgrading-code.md +++ b/docs/porting/ide-tools-for-upgrading-code.md @@ -24,11 +24,11 @@ Visual Studio helps you upgrade legacy C++ code with compiler options, code anal If your legacy projects are based on an older version of Visual Studio, you can still load them in a newer version and work on it there while maintaining backwards compatibility with the older version. When you are ready to permanently move to the new version of Visual Studio, you can retarget your projects. This will enable you to use the latest build tools and project features in the IDE, but you will no longer be able to load the retargeted projects in the older version of Visual Studio. -To retarget projects to the Visual Studio 2026 format, you can use the setup assistant which appears the first time you open a solution with older projects. You can also access it by right-clicking the solution in Solution Explorer and selecting *Retarget solution*. +To retarget projects to the Visual Studio 2026 format, you can use the setup assistant which appears the first time you open a solution containing older projects. You can also access it by right-clicking the solution in **Solution Explorer** and selecting **Retarget solution**. ![Screenshot of the Visual Studio 2026 setup assistant.](media/vs-2026-setup-assistant.png "Upgrade projects") -The setup assistant then gives you the choice to either stay on the older version and install any missing build tools or Windows SDKs to be able to build, or retarget the projects to upgrade them. You can make retargeting selections for each project in the solution or click *Retarget all*, then click *Apply* to perform the upgrade. +The setup assistant then gives you the choice to either stay on the older version and install any missing build tools or Windows SDKs necessary to build, or retarget the projects to upgrade them. You can make retargeting selections for each project in the solution or select **Retarget all** > **Apply** to upgrade. For more information, see [Upgrade C++ projects from earlier versions of Visual Studio](upgrading-projects-from-earlier-versions-of-visual-cpp.md). From 6bb833719b691c734cdb64d415b7c5f8ac04b651 Mon Sep 17 00:00:00 2001 From: Pat Altimore <17440249+PatAltimore@users.noreply.github.com> Date: Thu, 6 Nov 2025 10:19:40 -0800 Subject: [PATCH 2069/2255] Readability --- docs/cloud/cloud-and-web-programming-in-visual-cpp.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/cloud/cloud-and-web-programming-in-visual-cpp.md b/docs/cloud/cloud-and-web-programming-in-visual-cpp.md index 2491412c9c7..b4568315c6a 100644 --- a/docs/cloud/cloud-and-web-programming-in-visual-cpp.md +++ b/docs/cloud/cloud-and-web-programming-in-visual-cpp.md @@ -5,7 +5,7 @@ ms.date: "11/06/2025" ms.topic: "overview" ms.custom: intro-overview --- -# Cloud and Web Programming in Microsoft C++ +# Cloud and web programming in Microsoft C++ In C++, you have several options for connecting to the web and the cloud. @@ -13,7 +13,7 @@ In C++, you have several options for connecting to the web and the cloud. - [Azure SDK for C++](/azure/developer/cpp/sdk/overview) - The Azure SDK for C++ provides a set of client libraries that enable your C++ applications to interact seamlessly with Azure services, whether in local or cloud environments. These libraries, built on top of the Azure REST API, offer familiar C++ syntax and implement common cloud patterns such as authentication, logging, and retries.The SDK provides a consistent interface for working with Azure services including: + The Azure SDK for C++ provides a set of client libraries that enable your C++ applications to interact seamlessly with Azure services, whether in local or cloud environments. These libraries, built on top of the Azure REST API, offer familiar C++ syntax and implement common cloud patterns such as authentication, logging, and retries. The SDK provides a consistent interface for working with Azure services including: - Azure Core - Azure Identity @@ -29,7 +29,7 @@ In C++, you have several options for connecting to the web and the cloud. The Azure Storage Client Library for C++ provides a comprehensive API for working with Azure storage, including but not limited to the following abilities: - Create, read, delete, and list blob containers, tables, and queues. - - Create, read, delete, list and copy blobs plus read and write blob ranges. + - Create, read, delete, list, and copy blobs plus read and write blob ranges. - Insert, delete, replace, merge, and query entities in an Azure table. - Enqueue and dequeue messages in an Azure queue. - Lazily list containers, blobs, tables, and queues, and lazily query entities @@ -55,7 +55,7 @@ In C++, you have several options for connecting to the web and the cloud. - [Windows::Web::Http::HttpClient](/uwp/api/windows.web.http.httpclient) - A Windows Runtime HTTP client class modeled on the .NET Framework class of the same name in the System.Web namespace. `HttpClient` fully supports asynchronous upload and download over HTTP, and pipeline filters that enable the insertion of custom HTTP handlers into the pipeline. The Windows SDK includes sample filters for metered networks, OAuth authentication, and more. For apps that target only Universal Windows Platform, we recommend that you use the `Windows::Web::Http::HttpClient` class. + A Windows Runtime HTTP client class modeled on the .NET Framework class of the same name in the System.Web namespace. `HttpClient` fully supports asynchronous upload and download over HTTP, and pipeline filters that enable the insertion of custom HTTP handlers into the pipeline. The Windows SDK includes sample filters for metered networks, OAuth authentication, and more. For apps that target only Universal Windows Platform, use the `Windows::Web::Http::HttpClient` class. - [IXMLHTTPRequest2 interface](/windows/win32/api/msxml6/nn-msxml6-ixmlhttprequest2) From faa98d4d607b6cd8dbb15fc9de4f51a0ff7d09f2 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Thu, 6 Nov 2025 10:28:01 -0800 Subject: [PATCH 2070/2255] edit --- ...pgrading-projects-from-earlier-versions-of-visual-cpp.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/porting/upgrading-projects-from-earlier-versions-of-visual-cpp.md b/docs/porting/upgrading-projects-from-earlier-versions-of-visual-cpp.md index 2fb6385ce29..471d6105610 100644 --- a/docs/porting/upgrading-projects-from-earlier-versions-of-visual-cpp.md +++ b/docs/porting/upgrading-projects-from-earlier-versions-of-visual-cpp.md @@ -8,11 +8,11 @@ ms.topic: upgrade-and-migration-article --- # Upgrade C++ projects from earlier versions of Visual Studio -To upgrade a project created in an earlier version of Visual Studio, start by opening the project in the latest version of Visual Studio. If you are still using the older version of Visual Studio side-by-side, you can choose not to upgrade your projects until you're ready to maintain compatibility with both versions. +To upgrade a project created in an earlier version of Visual Studio, open the project in the latest version of Visual Studio. If you're still using an older version of Visual Studio side-by-side, you can choose not to upgrade your projects until you're ready to maintain compatibility with both versions. -In Visual Studio 2026, this experience has been enhanced with a **setup assistant**. The setup assistant offers you the chance to install missing tools using the Visual Studio installer and stay on an older version or retarget your projects to the latest version. If you lose track of the setup assistant, you can open it by right-clicking your solution in Solution Explorer and selecting *Retarget solution*. +In Visual Studio 2026, this experience is enhanced with a setup assistant. The setup assistant offers to install missing tools using the Visual Studio installer, and to stay on an older version or retarget your projects to the latest version. You can open the setup assistant in **Solution Explorer** by right-clicking your solution and selecting **Retarget solution**. -With the setup assistant opened, you can choose an action for each target or select the *Retarget all* button at the top to set all projects at once. Then click *Apply* to complete the upgrade in place. Once your projects have been retargeted, they can't be converted back to the earlier version. In upgrade scenarios, that's why it's good practice to make a backup copy of the existing project and solution files. +With the setup assistant open, choose an action for each target or select **Retarget all** to set all projects at once. Then select **Apply** to complete the upgrade in place. Once your projects are retargeted, they can't be converted back to the earlier version. It's good practice to make a backup copy of the existing project and solution files before upgrading them. > [!NOTE] > Visual Studio 2022 and later have deprecated support for the upgrade of project types that have *`.dsw`* or *`.dsp`* extensions. You can use an earlier version of Visual Studio, such as Visual Studio 2019, to upgrade these projects, then upgrade them again in Visual Studio 2022 or later to use the latest tools and features of Visual Studio. From 3b45a513866ef3cc1d6e61ad4c0d760fc1f3ccf6 Mon Sep 17 00:00:00 2001 From: Pat Altimore <17440249+PatAltimore@users.noreply.github.com> Date: Thu, 6 Nov 2025 10:27:03 -0800 Subject: [PATCH 2071/2255] Fix link --- docs/cloud/cloud-and-web-programming-in-visual-cpp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cloud/cloud-and-web-programming-in-visual-cpp.md b/docs/cloud/cloud-and-web-programming-in-visual-cpp.md index b4568315c6a..5fb652fa286 100644 --- a/docs/cloud/cloud-and-web-programming-in-visual-cpp.md +++ b/docs/cloud/cloud-and-web-programming-in-visual-cpp.md @@ -68,5 +68,5 @@ In C++, you have several options for connecting to the web and the cloud. ## See also [C++ in Visual Studio](../overview/visual-cpp-in-visual-studio.md)\ -[Microsoft Azure C and C++ Developer Center](https://azure.microsoft.com/develop/cpp/)\ +[Microsoft Azure C++ Developer Center](https://learn.microsoft.com/developer/cpp/)\ [Networks and web services (UWP)](/windows/uwp/networking/) From f1e068f2bf0911d0d02b574af9457504d3ca3f02 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Thu, 6 Nov 2025 10:31:10 -0800 Subject: [PATCH 2072/2255] edit Clarified instructions for using the Setup assistant in Visual Studio 2026. --- docs/porting/use-native-multi-targeting.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/porting/use-native-multi-targeting.md b/docs/porting/use-native-multi-targeting.md index d3a7c75cc0e..6d57a353278 100644 --- a/docs/porting/use-native-multi-targeting.md +++ b/docs/porting/use-native-multi-targeting.md @@ -25,7 +25,7 @@ When you use an older build tools version, you can take advantage of many of the ## How to use native multi-targeting in Visual Studio 2026 -Visual Studio 2026 includes a new **Setup assistant**. You can load an existing solution, right-click it in Solution Explorer, and select *Retarget solution* to open the assistant. You can use the assistant to install missing C++ build tools (MSVC components and Windows SDKs) compatible with the projects you are loading, including tools originally shipped with older Visual Studio versions. This allows you to continue working with your existing projects without losing compatibility with your previous Visual Studio version. Later, when you are ready to fully upgrade, you can use the assistant to retarget these projects to the newest version of the IDE. +Visual Studio 2026 includes a new **Setup assistant**. You can load an existing solution, and in **Solution Explorer** select **Retarget solution** to open the assistant. You can use the assistant to install missing C++ build tools (MSVC components and Windows SDKs) compatible with the projects you are loading, including tools originally shipped with older Visual Studio versions. This allows you to continue working with your existing projects without losing compatibility with your previous Visual Studio version. Later, when you are ready to fully upgrade, you can use the assistant to retarget these projects to the newest version of the IDE. ## How to use native multi-targeting in Visual Studio 2010-2022 From 53048059be212cfda6f5e15fcb354984f25a2b92 Mon Sep 17 00:00:00 2001 From: Pat Altimore <17440249+PatAltimore@users.noreply.github.com> Date: Thu, 6 Nov 2025 10:31:49 -0800 Subject: [PATCH 2073/2255] Fix link --- docs/cloud/cloud-and-web-programming-in-visual-cpp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cloud/cloud-and-web-programming-in-visual-cpp.md b/docs/cloud/cloud-and-web-programming-in-visual-cpp.md index 5fb652fa286..dbaa5dd6cda 100644 --- a/docs/cloud/cloud-and-web-programming-in-visual-cpp.md +++ b/docs/cloud/cloud-and-web-programming-in-visual-cpp.md @@ -68,5 +68,5 @@ In C++, you have several options for connecting to the web and the cloud. ## See also [C++ in Visual Studio](../overview/visual-cpp-in-visual-studio.md)\ -[Microsoft Azure C++ Developer Center](https://learn.microsoft.com/developer/cpp/)\ +[Microsoft Azure C++ Developer Center](/azure/developer/cpp/)\ [Networks and web services (UWP)](/windows/uwp/networking/) From 6eb504c0f8a7d25790e9f42d41703da5ea34a084 Mon Sep 17 00:00:00 2001 From: Pat Altimore <17440249+PatAltimore@users.noreply.github.com> Date: Thu, 6 Nov 2025 10:58:21 -0800 Subject: [PATCH 2074/2255] Fix title --- docs/cloud/cloud-and-web-programming-in-visual-cpp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cloud/cloud-and-web-programming-in-visual-cpp.md b/docs/cloud/cloud-and-web-programming-in-visual-cpp.md index dbaa5dd6cda..fd87a91b844 100644 --- a/docs/cloud/cloud-and-web-programming-in-visual-cpp.md +++ b/docs/cloud/cloud-and-web-programming-in-visual-cpp.md @@ -1,5 +1,5 @@ --- -title: "Cloud and Web Programming in Visual C++" +title: "Cloud and Web Programming in Microsoft C++" description: "Learn more about: Cloud and Web Programming in Visual C++" ms.date: "11/06/2025" ms.topic: "overview" From d1896c4f83814b508ec1964133cefdbbf4ea572c Mon Sep 17 00:00:00 2001 From: Augustin Popa Date: Thu, 6 Nov 2025 11:31:14 -0800 Subject: [PATCH 2075/2255] Addressed PR review feedback and added MDD/Embedded to deprecation list --- docs/porting/binary-compat-2015-2017.md | 2 +- .../features-deprecated-in-visual-studio.md | 24 ++++++++++++------- docs/porting/ide-tools-for-upgrading-code.md | 2 +- .../upgrade-your-code-to-the-universal-crt.md | 4 +++- 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/docs/porting/binary-compat-2015-2017.md b/docs/porting/binary-compat-2015-2017.md index 3c14d4b7413..19797a108d1 100644 --- a/docs/porting/binary-compat-2015-2017.md +++ b/docs/porting/binary-compat-2015-2017.md @@ -25,7 +25,7 @@ There are three important restrictions on binary compatibility between the v140, We've kept the Microsoft Visual C++ Redistributable major version number the same for Visual Studio 2015, 2017, 2019, 2022, and 2026. That means only one instance of the Redistributable can be installed at a time. A newer version overwrites any older version that's already installed. For example, one app may install the Redistributable from Visual Studio 2015. Then, another app installs the Redistributable from Visual Studio 2026. The 2026 version overwrites the older version, but because they're binary-compatible, the earlier app still works fine. We make sure the latest version of the Redistributable has all the newest features, security updates, and bug fixes. That's why we always recommend you upgrade to the latest available version. -Similarly, you can't install an older Redistributable when a newer version is already installed. The installer reports an error if you try. You'll see an error like this if you install the 2019 or 2022 Redistributable on a machine that already has the 2026 version: +Similarly, you can't install an older Redistributable when a newer version is already installed. The installer reports an error if you try. For example, you'll see an error like this if you install the 2022 Redistributable on a machine that already has the 2026 version: ```Output 0x80070666 - Another version of this product is already installed. Installation of this version cannot continue. To configure or remove the existing version of this product, use Add/Remove Programs on the Control Panel. diff --git a/docs/porting/features-deprecated-in-visual-studio.md b/docs/porting/features-deprecated-in-visual-studio.md index a5fabcb63b9..7848f8eb892 100644 --- a/docs/porting/features-deprecated-in-visual-studio.md +++ b/docs/porting/features-deprecated-in-visual-studio.md @@ -1,12 +1,12 @@ --- -description: "Learn more about: C++ features deprecated or removed in Visual Studio" -title: "C++ features deprecated or removed in Visual Studio" +description: "Learn more about: C++ features deprecated or removed from Visual Studio" +title: "C++ features deprecated or removed from Visual Studio" ms.date: 10/29/2025 -helpviewer_keywords: ["Features deprecated or removed in Visual Studio"] +helpviewer_keywords: ["Features deprecated or removed from Visual Studio"] --- -# C++ features deprecated or removed in Visual Studio +# C++ features deprecated or removed from Visual Studio -This article is a non-exhaustive list of C++ features deprecated in Visual Studio 2019 and 2022. For information on breaking changes and conformance improvements for C++ in the latest version of Visual Studio, see [C++ conformance improvements in Visual Studio](../overview/cpp-conformance-improvements.md). +This article is a non-exhaustive list of C++ features deprecated or removed from Visual Studio 2019 and later. For information on breaking changes and conformance improvements for C++ in the latest version of Visual Studio, see [C++ conformance improvements in Visual Studio](../overview/cpp-conformance-improvements.md). ## Visual Studio 2019 @@ -26,9 +26,9 @@ Visual Studio 2022 and later versions don't support upgrades from Visual C++ 6 W Visual Studio 2026 and later versions don't support C++AMP, the ARM32 toolchain, and /DEBUG:FASTLINK. If you're utilizing `/DEBUG:FASTLINK`, it's recommended to switch to [`/DEBUG:FULL`](https://learn.microsoft.com/cpp/build/reference/debug-generate-debug-info) for improved debugging support. Developers needing to target ARM32 can continue using the Visual Studio 2022 v143 build tools as detailed in this [Microsoft blog post](https://devblogs.microsoft.com/cppblog/side-by-side-minor-version-msvc-toolsets-in-visual-studio-2019/). -### Deprecation of /await +### Deprecation of `/await` -Visual Studio 2026 deprecated the `/await` switch, which will be removed in a future release. Developers are encouraged to use Standard C++ coroutines, available by default in C++20 or later. For projects in earlier language modes, consider using `/await:strict` to maintain compatibility until the switch is removed. +The MSVC compiler switch `/await` is being deprecated and will be removed in a future release. This switch enabled an early draft implementation of C++ coroutines using the `` header. Developers should transition to standard C++ coroutines by using the `` header available in C++20 and later. For C++14/17 projects, use `/await:strict` (which isn't being deprecated) to access the standard `` header without enabling other C++20 features. ### Support for Windows 7, 8, and 8.1 for Microsoft C++ Build Tools @@ -40,4 +40,12 @@ In Visual Studio 2026, the Microsoft C++ (MSVC) Build Tools have updated their m To build applications using the latest C++ tools, your target platform must be **Windows 10** or **Windows Server 2016** (or later). -These changes allow for better performance, enhanced security, and alignment with the most recent Windows platform capabilities. \ No newline at end of file +These changes allow for better performance, enhanced security, and alignment with the most recent Windows platform capabilities. + +### Support for Mobile development with C++ workload + +The Mobile development with C++ workload for iOS and Android targeting in the Visual Studio installer is no longer being supported and will be removed in a future Visual Studio update. This includes new projects, building, and debugging. + +### Support for Embedded and IoT tools + +The Embedded and IoT tools component in the Visual Studio installer is no longer being supported and will be removed in a future Visual Studio update. This includes the RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import. diff --git a/docs/porting/ide-tools-for-upgrading-code.md b/docs/porting/ide-tools-for-upgrading-code.md index e01cc9dc646..1e9f07fd996 100644 --- a/docs/porting/ide-tools-for-upgrading-code.md +++ b/docs/porting/ide-tools-for-upgrading-code.md @@ -26,7 +26,7 @@ If your legacy projects are based on an older version of Visual Studio, you can To retarget projects to the Visual Studio 2026 format, you can use the setup assistant which appears the first time you open a solution with older projects. You can also access it by right-clicking the solution in Solution Explorer and selecting *Retarget solution*. -![Screenshot of the Visual Studio 2026 setup assistant.](media/vs-2026-setup-assistant.png "Upgrade projects") +![Screenshot of the Visual Studio 2026 setup assistant showing a list of projects selected for retargeting to the latest MSVC Build Tools and v145 Platform Toolset.](media/vs-2026-setup-assistant.png "Upgrade projects") The setup assistant then gives you the choice to either stay on the older version and install any missing build tools or Windows SDKs to be able to build, or retarget the projects to upgrade them. You can make retargeting selections for each project in the solution or click *Retarget all*, then click *Apply* to perform the upgrade. diff --git a/docs/porting/upgrade-your-code-to-the-universal-crt.md b/docs/porting/upgrade-your-code-to-the-universal-crt.md index 8fc1091bce3..bebc69a3fac 100644 --- a/docs/porting/upgrade-your-code-to-the-universal-crt.md +++ b/docs/porting/upgrade-your-code-to-the-universal-crt.md @@ -27,7 +27,9 @@ The retail and debug UCRT DLLs are found in separate locations. The retail DLLs The C and C++ compiler-specific runtime support library, `vcruntime`, contains the code required to support program startup and features such as exception handling and intrinsics. The library and its header files are still found in the version-specific Microsoft Visual Studio folder in your *Program Files* or *Program Files (x86)* directory. -In Visual Studio 2017 and later, the header files are found under `Microsoft Visual Studio\[version]\[edition]\VC\Tools\MSVC\[lib-version]\include`. Here, `[version]` is the year (Visual Studio 2017 - 2022) or major version number (Visual Studio 2026 or later), `[edition]` is the edition or nickname for Visual Studio, and `[lib-version]` is the build version of the libraries. +In Visual Studio 2017-2022, the header files are found under `Microsoft Visual Studio\[year]\[edition]\VC\Tools\MSVC\[lib-version]\include`. Here, `[year]` is the version of Visual Studio, `[edition]` is the edition or nickname for Visual Studio, and `[lib-version]` is the build version of the libraries. + +In Visual Studio 2026, the header files are found under `Microsoft Visual Studio\[version]\[channel]\VC\Tools\MSVC\[lib-version]\include`. Here, `[version]` is the major version number, `[channel]` is Insiders or Stable (depending on your Visual Studio build), and `[lib-version]` is the build version of the libraries. The link libraries are found under `Microsoft Visual Studio\[version]\[edition]\VC\Tools\MSVC\[lib-version]\lib\[architecture]`, where `[version]` is the year (Visual Studio 2017 - 2022) or major version number (Visual Studio 2026 or later), `[edition]` is the edition or nickname for Visual Studio, `[lib-version]` is the build version of the libraries, and `[architecture]` is the target processor architecture. Link libraries for OneCore and Store are also found in the libraries folder. From 028c716b5405f6245ed27e1648d19549f66209d4 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Thu, 6 Nov 2025 14:13:43 -0800 Subject: [PATCH 2076/2255] fix link --- docs/porting/features-deprecated-in-visual-studio.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/porting/features-deprecated-in-visual-studio.md b/docs/porting/features-deprecated-in-visual-studio.md index f1390c44726..21e2344e522 100644 --- a/docs/porting/features-deprecated-in-visual-studio.md +++ b/docs/porting/features-deprecated-in-visual-studio.md @@ -24,7 +24,7 @@ Visual Studio 2022 and later versions don't support upgrades from Visual C++ 6 W ### Support for C++AMP, ARM32 toolchain, and /DEBUG:FASTLINK -Visual Studio 2026 and later versions don't support C++AMP, the ARM32 toolchain, and /DEBUG:FASTLINK. If you're utilizing `/DEBUG:FASTLINK`, it's recommended to switch to [`/DEBUG:FULL`](https://learn.microsoft.com/cpp/build/reference/debug-generate-debug-info) for improved debugging support. Developers needing to target ARM32 can continue using the Visual Studio 2022 v143 build tools as detailed in this [Microsoft blog post](https://devblogs.microsoft.com/cppblog/side-by-side-minor-version-msvc-toolsets-in-visual-studio-2019/). +Visual Studio 2026 and later versions don't support C++AMP, the ARM32 toolchain, and /DEBUG:FASTLINK. If you're utilizing `/DEBUG:FASTLINK`, it's recommended to switch to [`/DEBUG:FULL`](/cpp/build/reference/debug-generate-debug-info) for improved debugging support. Developers needing to target ARM32 can continue using the Visual Studio 2022 v143 build tools as detailed in this [Microsoft blog post](https://devblogs.microsoft.com/cppblog/side-by-side-minor-version-msvc-toolsets-in-visual-studio-2019/). ### Deprecation of `/await` From 6e6763615436a7e3c055e39e0ff0da6fd569ff93 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Thu, 6 Nov 2025 14:16:44 -0800 Subject: [PATCH 2077/2255] fix links --- docs/porting/porting-third-party-libraries.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/porting/porting-third-party-libraries.md b/docs/porting/porting-third-party-libraries.md index ce39dfd7b59..d4dab9694be 100644 --- a/docs/porting/porting-third-party-libraries.md +++ b/docs/porting/porting-third-party-libraries.md @@ -14,7 +14,7 @@ When you upgrade an application from Visual Studio 2015 or later, it isn't neces ## Use vcpkg for open-source libraries -In the past, finding and upgrading third-party libraries was sometimes a non-trivial task. To make it easier to acquire and rebuild C++ third-party open-source libraries, the Microsoft C++ team has created a command-line tool called **[vcpkg](https://vcpkg.io)**. This tool has a searchable catalog (known as the curated registry) of many popular C/C++ open-source libraries. You can install any library in the catalog directly from the vcpkg command line. When you install a library, vcpkg creates a directory tree on your machine and adds the *`.h`* files, the *`.lib`* files, and binaries in this folder. You can use this folder in your compilation command line, or integrate it into Visual Studio 2015 or later by using the `vcpkg integrate install` command. After you integrate a library location, Visual Studio can find it and add it to any new project that you create. To use a library, just `#include` it. Visual Studio will automatically add the library path to your project settings and copy the DLL to your solution folder. For more information, see [vcpkg](/vcpkg/). You can either install [vcpkg from GitHub](https://github.com/microsoft/vcpkg/) or use the built-in version that ships with Visual Studio 2022 or later. To learn more about vcpkg, see the [vcpkg documentation](https://learn.microsoft.com/vcpkg). +In the past, finding and upgrading third-party libraries was sometimes a non-trivial task. To make it easier to acquire and rebuild C++ third-party open-source libraries, the Microsoft C++ team has created a command-line tool called **[vcpkg](https://vcpkg.io)**. This tool has a searchable catalog (known as the curated registry) of many popular C/C++ open-source libraries. You can install any library in the catalog directly from the vcpkg command line. When you install a library, vcpkg creates a directory tree on your machine and adds the *`.h`* files, the *`.lib`* files, and binaries in this folder. You can use this folder in your compilation command line, or integrate it into Visual Studio 2015 or later by using the `vcpkg integrate install` command. After you integrate a library location, Visual Studio can find it and add it to any new project that you create. To use a library, just `#include` it. Visual Studio will automatically add the library path to your project settings and copy the DLL to your solution folder. For more information, see [vcpkg](/vcpkg/). You can either install [vcpkg from GitHub](https://github.com/microsoft/vcpkg/) or use the built-in version that ships with Visual Studio 2022 or later. To learn more about vcpkg, see the [vcpkg documentation](/vcpkg). ## Reporting issues @@ -23,4 +23,4 @@ If your open-source library isn't found in the **vcpkg** curated registry, you c ## See also [Microsoft C++ Porting and Upgrading Guide](visual-cpp-porting-and-upgrading-guide.md) -[vcpkg Documentation](https://learn.microsoft.com/vcpkg) +[vcpkg Documentation](/vcpkg) From e555f215fa6a61cce5d51c3a82a5d2348a53816b Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Thu, 6 Nov 2025 14:25:25 -0800 Subject: [PATCH 2078/2255] increase acrolinx score Updated text for clarity and consistency in the documentation regarding floating-point migration issues. --- docs/porting/floating-point-migration-issues.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/docs/porting/floating-point-migration-issues.md b/docs/porting/floating-point-migration-issues.md index 288ee1d1433..6393e435c75 100644 --- a/docs/porting/floating-point-migration-issues.md +++ b/docs/porting/floating-point-migration-issues.md @@ -2,23 +2,22 @@ description: "Learn more about: Floating-point migration issues" title: "Floating-point migration issues" ms.date: "05/17/2017" -ms.assetid: 36a1b552-2f2b-4919-bc9d-c17f42434954 --- # Floating-point migration issues -Sometimes when you upgrade your projects to a newer version of Visual Studio, you may find that the results of certain floating-point operations have changed. This generally happens for one of two reasons: Code generation changes that take better advantage of the available processor, and bug fixes or changes to the algorithms used in math functions in the C runtime library (CRT). In general, the new results are correct to within the limits specified by the language standard. Read on to find out what's changed, and if it's important, how to get the same results your functions got before. +Sometimes when you upgrade your projects to a newer version of Visual Studio, you may notice changes in the results of certain floating-point operations. This generally happens for one of two reasons: Code generation changes that take better advantage of the available processor, and bug fixes or changes to the algorithms used in math functions in the C runtime library (CRT). In general, the new results are correct to within the limits specified by the language standard. Read on to find out what's changed, and if it's important, how to get the same results your functions got before. ## New math functions and Universal CRT changes -Most CRT math functions have been available in Visual Studio for years, but starting in Visual Studio 2013, all of the functions required by ISO C99 are included. These functions are implemented to balance performance with correctness. Because producing the correctly rounded result in every case may be prohibitively expensive, these functions are designed to efficiently produce a close approximation to the correctly rounded result. In most cases, the result produced is within +/-1 unit of least precision, or *ulp*, of the correctly rounded result, though there may be cases where there is greater inaccuracy. If you were using a different math library to get these functions before, implementation differences may be responsible for the change in your results. +Most CRT math functions have been available in Visual Studio for years, but starting in Visual Studio 2013, all of the functions required by ISO C99 are included. These functions are implemented to balance performance with correctness. Because producing the correctly rounded result in every case may be prohibitively expensive, these functions are designed to efficiently produce a close approximation to the correctly rounded result. In most cases, the result produced is within +/-1 unit of least precision, or *ulp*, of the correctly rounded result, though there may be cases where there's greater inaccuracy. If you used a different math library to obtain these functions earlier, implementation differences might explain the change in your results. -When the math functions were moved to the Universal CRT in Visual Studio 2015, some new algorithms were used, and several bugs in the implementation of the functions that were new in Visual Studio 2013 were fixed. These changes can lead to detectable differences in the results of floating-point calculations that use these functions. The functions that had bug issues were erf, exp2, remainder, remquo, scalbln, and scalbn, and their float and long double variants. Other changes in Visual Studio 2015 fixed issues in preserving floating point status word and exception state information in _clear87, _clearfp, fegetenv, fesetenv, and feholdexcept functions. +When the math functions were moved to the Universal CRT in Visual Studio 2015, some new algorithms were used, and several bugs in the implementation of the functions that were new in Visual Studio 2013 were fixed. These changes can lead to detectable differences in the results of floating-point calculations that use these functions. The functions that had bug issues were `erf`, `exp2`, `remainder`, `remquo`, `scalbln`, and `scalbn`, and their float and long double variants. Other changes in Visual Studio 2015 fixed issues in preserving floating point status word and exception state information in `_clear87`, `_clearfp`, `fegetenv`, `fesetenv`, and `feholdexcept` functions. ## Processor differences and compiler flags -Many of the floating point math library functions have different implementations for different CPU architectures. For example, the 32-bit x86 CRT may have a different implementation than the 64-bit x64 CRT. In addition, some of the functions may have multiple implementations for a given CPU architecture. The most efficient implementation is selected dynamically at run-time depending on the instruction sets supported by the CPU. For example, in the 32-bit x86 CRT, some functions have both an x87 implementation and an SSE2 implementation. When running on a CPU that supports SSE2, the faster SSE2 implementation is used. When running on a CPU that does not support SSE2, the slower x87 implementation is used. You may see this when migrating old code, because the default x86 compiler architecture option changed to [/arch:SSE2](../build/reference/arch-x86.md) in Visual Studio 2012. Because different implementations of the math library functions may use different CPU instructions and different algorithms to produce their results, the functions may produce different results on different platforms. In most cases, the results are within +/-1 ulp of the correctly rounded result, but the actual results may vary across CPUs. +Many of the floating point math library functions have different implementations for different CPU architectures. For example, the 32-bit x86 CRT may have a different implementation than the 64-bit x64 CRT. In addition, some of the functions may have multiple implementations for a given CPU architecture. The most efficient implementation is selected dynamically at run-time depending on the instruction sets supported by the CPU. For example, in the 32-bit x86 CRT, some functions have both an x87 implementation and an SSE2 implementation. When running on a CPU that supports SSE2, the faster SSE2 implementation is used. When running on a CPU that doesn't support SSE2, the slower x87 implementation is used. You may see this when migrating old code, because the default x86 compiler architecture option changed to [/arch:SSE2](../build/reference/arch-x86.md) in Visual Studio 2012. Because different implementations of the math library functions may use different CPU instructions and different algorithms to produce their results, the functions may produce different results on different platforms. In most cases, the results are within +/-1 ulp of the correctly rounded result, but the actual results may vary across CPUs. -Code-generation correctness improvements in different floating point modes in Visual Studio can also affect the results of floating-point operations when old code is compared to new code, even when using the same compiler flags. For example, the code generated by Visual Studio 2010 when [/fp:precise](../build/reference/fp-specify-floating-point-behavior.md) (the default) or `/fp:strict` was specified may not have propagated intermediate not-a-number (NaN) values through expressions correctly. Thus, some expressions that gave a numeric result in older compilers may now correctly produce a NaN result. You may also see differences because the code optimizations enabled for `/fp:fast` now take advantage of more processor features. These optimizations can use fewer instructions, but may impact the generated results because some previously visible intermediate operations have been removed. +Code-generation improvements in various floating-point modes can also alter floating-point results when comparing old code to new code, even with identical compiler flags. For example, the code generated by Visual Studio 2010 when [/fp:precise](../build/reference/fp-specify-floating-point-behavior.md) (the default) or `/fp:strict` was specified might not propagate intermediate not-a-number (NaN) values through expressions correctly. Thus, some expressions that gave a numeric result in older compilers may now correctly produce a NaN result. You may also see differences because the code optimizations enabled for `/fp:fast` now take advantage of more processor features. These optimizations can use fewer instructions, but may impact the generated results because some previously visible intermediate operations have been removed. ## How to get identical results From b694125004686136e3d86b52d4a7f9fe0072c759 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 6 Nov 2025 15:47:05 -0800 Subject: [PATCH 2079/2255] reorganize page --- docs/porting/media/upgrade-cpp.png | Bin 0 -> 270151 bytes .../visual-cpp-porting-and-upgrading-guide.md | 193 +++++++++++++----- 2 files changed, 142 insertions(+), 51 deletions(-) create mode 100644 docs/porting/media/upgrade-cpp.png diff --git a/docs/porting/media/upgrade-cpp.png b/docs/porting/media/upgrade-cpp.png new file mode 100644 index 0000000000000000000000000000000000000000..02870caa060ced194d6a33c76ea298a8ca3c33ae GIT binary patch literal 270151 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%0Ay6R1C{ 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